<?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>16652</bug_id>
          
          <creation_ts>2007-12-28 20:14:07 -0800</creation_ts>
          <short_desc>Firefox and JavaScriptCore differ in Number.toString(integer)</short_desc>
          <delta_ts>2011-07-04 19:59:35 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://trac.webkit.org/projects/webkit/browser/trunk/LayoutTests/fast/js/number-toString-expected.txt?rev=29020</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>16672</dependson>
    
    <dependson>63886</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>barraclough</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>65542</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-12-28 20:14:07 -0800</bug_when>
    <thetext>Firefox and JavaScriptCore differ in Number.toString(integer)

See:
http://trac.webkit.org/projects/webkit/browser/trunk/LayoutTests/fast/js/number-toString-expected.txt?rev=29020

Opera agrees with us.  We&apos;ll need to check IE.  If IE agrees with us, then we should check in passing results and file a bug with Mozilla.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>65663</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-12-29 19:32:29 -0800</bug_when>
    <thetext>Unfortunately the spec isn&apos;t very helpful here:
http://bclary.com/2004/11/07/#a-15.7.4.2

So we simply chose to match Firefox (or IE if we determine their behavior to be different).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>65686</commentid>
    <comment_count>2</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-12-29 22:25:20 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; So we simply chose to match Firefox (or IE if we determine their behavior to be
&gt; different).

Results from running MSIE 7 on Windows XP SP2 in Virtual PC 7.0.3 on Mac OS X 10.4.11 (8S165):

PASS (0.0).toString(4) is &quot;0&quot;
PASS (-0.0).toString(4) is &quot;0&quot;
PASS (0.0).toString() is &quot;0&quot;
PASS (-0.0).toString() is &quot;0&quot;
PASS (1234.567).toString() is &quot;1234.567&quot;
PASS (1234.567).toString(0) threw exception [object Error].
PASS (1234.567).toString(null) threw exception [object Error].
PASS (1234.567).toString(false) threw exception [object Error].
PASS (1234.567).toString(&apos;foo&apos;) threw exception [object Error].
PASS (1234.567).toString(nan) threw exception [object Error].
PASS (1234.567).toString(1) threw exception [object Error].
PASS (1234.567).toString(true) threw exception [object Error].
PASS (1234.567).toString(&apos;1&apos;) threw exception [object Error].
FAIL (1234.567).toString(3) should be 1200201.120022100021001021021002202. Was 1200201.120022100021001021021002201.
PASS (1234.567).toString(4) is &quot;103102.21010212322113203111&quot;
FAIL (1234.567).toString(5) should be 14414.240414141414141414. Was 14414.2404141414141414142.
FAIL (1234.567).toString(6) should be 5414.32224554134430233. Was 5414.322245541344302332.
FAIL (1234.567).toString(7) should be 3412.365323661111653. Was 3412.3653236611116525.
PASS (1234.567).toString(8) is &quot;2322.44223351361524&quot;
PASS (1234.567).toString(9) is &quot;1621.50830703723265&quot;
PASS (1234.567).toString(10) is &quot;1234.567&quot;
FAIL (1234.567).toString(11) should be a22.62674a0a5885. Was a22.62674a0a588491.
FAIL (1234.567).toString(12) should be 86a.697938b17701. Was 86a.697938b177012.
FAIL (1234.567).toString(13) should be 73c.74a91191a65. Was 73c.74a91191a64cb.
PASS (1234.567).toString(14) is &quot;642.7d1bc2caa757&quot;
FAIL (1234.567).toString(15) should be 574.87895959596. Was 574.87895959595a.
PASS (1234.567).toString(16) is &quot;4d2.9126e978d5&quot;
PASS (1234.567).toString(17) is &quot;44a.9aeb6faa0da&quot;
FAIL (1234.567).toString(18) should be 3ea.a3cd7102ac. Was 3ea.a3cd7102abf.
FAIL (1234.567).toString(19) should be 37i.aed102a04d. Was 37i.aed102a04d4.
FAIL (1234.567).toString(20) should be 31e.b6g. Was 31e.b6g00000001.
PASS (1234.567).toString(21) is &quot;2gg.bj0kf5cfe9&quot;
FAIL (1234.567).toString(22) should be 2c2.ca9937cak. Was 2c2.ca9937cak1.
PASS (1234.567).toString(23) is &quot;27f.d0lfjb1a7c&quot;
FAIL (1234.567).toString(24) should be 23a.dee4nj99j. Was 23a.dee4nj99j0.
FAIL (1234.567).toString(25) should be 1o9.e49999999. Was 1o9.e49999999a.
FAIL (1234.567).toString(26) should be 1lc.ej7fa4pkf. Was 1lc.ej7fa4pkfb.
FAIL (1234.567).toString(27) should be 1ij.f8971772k. Was 1ij.f8971772j.
PASS (1234.567).toString(28) is &quot;1g2.foelqia8e&quot;
FAIL (1234.567).toString(29) should be 1dg.gcog9e05q. Was 1dg.gcog9e05p.
FAIL (1234.567).toString(30) should be 1b4.h09. Was 1b4.h09000000.
FAIL (1234.567).toString(31) should be 18p.hhrfcj3t. Was 18p.hhrfcj3t1.
PASS (1234.567).toString(32) is &quot;16i.i4jeiu6l&quot;
FAIL (1234.567).toString(33) should be 14d.inf96rdvm. Was 14d.inf96rdvl.
FAIL (1234.567).toString(34) should be 12a.j9fchdtm. Was 12a.j9fchdtm1.
FAIL (1234.567).toString(35) should be 109.jtk4d4d4e. Was 109.jtk4d4d4d.
FAIL (1234.567).toString(36) should be ya.kety9sifl. Was ya.kety9sifkl.
PASS (1234.567).toString(37) threw exception [object Error].
PASS (1234.567).toString(-1) threw exception [object Error].
PASS (1234.567).toString(posInf) threw exception [object Error].
PASS (1234.567).toString(negInf) threw exception [object Error].
PASS posInf.toString() is &quot;Infinity&quot;
PASS negInf.toString() is &quot;-Infinity&quot;
PASS nan.toString() is &quot;NaN&quot;
PASS successfullyParsed is true

TEST COMPLETE
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>65691</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-12-29 22:55:59 -0800</bug_when>
    <thetext>Since the checked in results match Firefox, it looks like IE and Firefox are nearly identical.  So we&apos;re in the wrong here.  I guess we&apos;ll eventually fix our Number.toString implementation to match IE &amp; FF.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>65717</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-12-30 00:44:23 -0800</bug_when>
    <thetext>I fixed the throwing exceptions issue as part of bug 16672.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>430999</commentid>
    <comment_count>5</comment_count>
      <attachid>99429</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-06-30 23:25:27 -0700</bug_when>
    <thetext>Created attachment 99429
Preliminary patch, requires testing &amp; new layout test results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431282</commentid>
    <comment_count>6</comment_count>
      <attachid>99490</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-07-01 11:28:16 -0700</bug_when>
    <thetext>Created attachment 99490
The patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431286</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-01 11:31:36 -0700</bug_when>
    <thetext>Attachment 99490 did not pass style-queue:

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

Source/JavaScriptCore/runtime/NumberPrototype.cpp:118:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/JavaScriptCore/runtime/NumberPrototype.cpp:320:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/JavaScriptCore/runtime/NumberPrototype.cpp:370:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/JavaScriptCore/runtime/NumberPrototype.cpp:526:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/JavaScriptCore/runtime/NumberPrototype.cpp:636:  One space before end of line comments  [whitespace/comments] [5]
Source/JavaScriptCore/runtime/NumberPrototype.cpp:636:  Should have a space between // and comment  [whitespace/comments] [4]
Total errors found: 6 in 4 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>431297</commentid>
    <comment_count>8</comment_count>
      <attachid>99490</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-07-01 11:37:30 -0700</bug_when>
    <thetext>Comment on attachment 99490
The patch

Attachment 99490 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/8978036</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431298</commentid>
    <comment_count>9</comment_count>
      <attachid>99494</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-07-01 11:38:40 -0700</bug_when>
    <thetext>Created attachment 99494
The patch, style fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431303</commentid>
    <comment_count>10</comment_count>
      <attachid>99495</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-07-01 11:41:29 -0700</bug_when>
    <thetext>Created attachment 99495
Fix Qt bot&apos;s style quibbles.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431413</commentid>
    <comment_count>11</comment_count>
      <attachid>99495</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-07-01 13:47:26 -0700</bug_when>
    <thetext>Comment on attachment 99495
Fix Qt bot&apos;s style quibbles.

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

Overall, this looks really good.  I think we should put the two classes in their own headers in WTF and even write some unit tests for them in TestWebKitAPI.  You should probably also move decomposeDouble to MathExtras.h and again, consider unit tests.

&gt; Source/JavaScriptCore/runtime/NumberPrototype.cpp:130
&gt; +// A value 1 greater than max uint16_t.
&gt; +#define Uint16Infinity 0x10000

Please put a comment about why this is necessary to work around a compiler issue.  I also find the name a little confusing.  Perhaps be explicit and call it something like oneGreaterThanMaxUInt16.

&gt; Source/JavaScriptCore/runtime/NumberPrototype.cpp:351
&gt; +    bool isNormalized() const

Normalized is a bit odd here, since there are so many different concepts of normal in double-ish math.  Perhaps something lengthy including the word valid would help.

&gt; Source/JavaScriptCore/runtime/NumberPrototype.cpp:494
&gt; +    double fractionPart = number - floor(number);

The floor(number) is redundant, you can just use integerPart.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431752</commentid>
    <comment_count>12</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-07-03 15:29:45 -0700</bug_when>
    <thetext>Sam,

I&apos;ve landed this in r90347 on the basis of your r+ &amp; the fact that the code is covered by tests in fast/js, without unit tests.  The unit testing framework is new to me, and given this code has test coverage it makes sense to me to land this, and follow up with a patch to add additional test cases once I have a chance to sit down with you &amp; learn how to write unit tests.  Hope this sounds right to you.

cheers,
G.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431777</commentid>
    <comment_count>13</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-07-03 20:50:00 -0700</bug_when>
    <thetext>r90347 caused build erros on Leopard, WinCariro, WinCE, and Chromium-win.

http://build.webkit.org/builders/Leopard%20Intel%20Debug%20%28Build%29/builds/36837/steps/compile-webkit/logs/stdio

/Volumes/Big/WebKit-BuildSlave/leopard-intel-debug/build/Source/JavaScriptCore/runtime/Uint16WithFraction.h: In member function &apos;JSC::Uint16WithFraction&amp; JSC::Uint16WithFraction::operator*=(uint16_t)&apos;:
/Volumes/Big/WebKit-BuildSlave/leopard-intel-debug/build/Source/JavaScriptCore/runtime/Uint16WithFraction.h:125: warning: implicit conversion shortens 64-bit value into a 32-bit value


http://build.webkit.org/builders/WinCairo%20Debug%20%28Build%29/builds/8133/steps/compile-webkit/logs/stdio

10&gt;D:\Projects\BuildSlave\win-cairo-debug\build\WebKitBuild\Debug_Cairo_CFLite\Include\private\JavaScriptCore/MathExtras.h(266) : error C2061: syntax error : identifier &apos;int32_t&apos;
10&gt;D:\Projects\BuildSlave\win-cairo-debug\build\WebKitBuild\Debug_Cairo_CFLite\Include\private\JavaScriptCore/MathExtras.h(272) : error C2065: &apos;uint64_t&apos; : undeclared identifier
10&gt;D:\Projects\BuildSlave\win-cairo-debug\build\WebKitBuild\Debug_Cairo_CFLite\Include\private\JavaScriptCore/MathExtras.h(272) : error C2146: syntax error : missing &apos;;&apos; before identifier &apos;bits&apos;
10&gt;D:\Projects\BuildSlave\win-cairo-debug\build\WebKitBuild\Debug_Cairo_CFLite\Include\private\JavaScriptCore/MathExtras.h(272) : error C2065: &apos;bits&apos; : undeclared identifier
10&gt;D:\Projects\BuildSlave\win-cairo-debug\build\WebKitBuild\Debug_Cairo_CFLite\Include\private\JavaScriptCore/MathExtras.h(272) : error C2783: &apos;TO WTF::bitwise_cast(FROM)&apos; : could not deduce template argument for &apos;TO&apos;
10&gt;        D:\Projects\BuildSlave\win-cairo-debug\build\WebKitBuild\Debug_Cairo_CFLite\Include\private\JavaScriptCore/StdLibExtras.h(94) : see declaration of &apos;WTF::bitwise_cast&apos;
10&gt;D:\Projects\BuildSlave\win-cairo-debug\build\WebKitBuild\Debug_Cairo_CFLite\Include\private\JavaScriptCore/MathExtras.h(273) : error C2065: &apos;exponent&apos; : undeclared identifier
10&gt;D:\Projects\BuildSlave\win-cairo-debug\build\WebKitBuild\Debug_Cairo_CFLite\Include\private\JavaScriptCore/MathExtras.h(273) : error C2061: syntax error : identifier &apos;int32_t&apos;
10&gt;D:\Projects\BuildSlave\win-cairo-debug\build\WebKitBuild\Debug_Cairo_CFLite\Include\private\JavaScriptCore/MathExtras.h(274) : error C2065: &apos;mantissa&apos; : undeclared identifier
10&gt;D:\Projects\BuildSlave\win-cairo-debug\build\Source\JavaScriptCore\os-win32\stdint.h(42) : error C2378: &apos;uint64_t&apos; : redefinition; symbol cannot be overloaded with a typedef</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431782</commentid>
    <comment_count>14</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-07-03 20:57:05 -0700</bug_when>
    <thetext>Rolled out as r90349.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432089</commentid>
    <comment_count>15</comment_count>
      <attachid>99666</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-07-04 19:46:16 -0700</bug_when>
    <thetext>Created attachment 99666
Patch with build fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432090</commentid>
    <comment_count>16</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-07-04 19:58:29 -0700</bug_when>
    <thetext>Oh.  The last patch didn&apos;t cause errors on the EWS bots anyway, so watching them won&apos;t help. :-(  LAnding patch &amp; watching the buildbots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432091</commentid>
    <comment_count>17</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-07-04 19:59:35 -0700</bug_when>
    <thetext>Re-landed in r90383 with build fixes; watching the build bots.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99429</attachid>
            <date>2011-06-30 23:25:27 -0700</date>
            <delta_ts>2011-07-01 11:28:16 -0700</delta_ts>
            <desc>Preliminary patch, requires testing &amp; new layout test results.</desc>
            <filename>16652.patch</filename>
            <type>text/plain</type>
            <size>29481</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTAyMDUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDYgQEAK
KzIwMTEtMDYtMzAgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY1MgorICAgICAgICBGaXJlZm94IGFu
ZCBKYXZhU2NyaXB0Q29yZSBkaWZmZXIgaW4gTnVtYmVyLnRvU3RyaW5nKGludGVnZXIpCisKKyAg
ICAgICAgT3VyIGFyYml0cmFyeSByYWRpeCAoMi4uMzYpIHRvU3RyaW5nIGNvbnZlcnNpb24gaXMg
aW5hY2N1cmF0ZS4KKyAgICAgICAgVGhpcyBpcyBwYXJ0bHkgYmVjYXVzZSBpdCB1c2VzIGRvdWJs
ZXMgdG8gcGVyZm9ybSBtYXRoIHRoYXQgcmVxdWlyZXMKKyAgICAgICAgaGlnaGVyIGFjY3VyYWN5
LCBhbmQgcGFydGx5IGJlY2FzdWUgaXQgZG9lcyBub3QgYXR0ZW1wdCB0byBjb3JyZWN0bHkKKyAg
ICAgICAgZGV0ZWN0IHdoZXJlIHRvIHRlcm1pbmF0ZSwgaW5zdGVhZCByZWx5aW5nIG9uIGEgc2lt
cGxlICdlcHNpbG9uJy4KKworICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6ZGVjb21wb3NlRG91YmxlKToKKyAgICAgICAgICAgIC0gaGVscGVyIGZ1
bmN0aW9uIHRvIGV4dHJhY3Qgc2lnbiwgZXhwb25lbnQsIG1hbnRpc3NhIGZyb20gSUVFRSBkb3Vi
bGVzLgorICAgICAgICAoSlNDOjpVaW50MTZXaXRoRnJhY3Rpb246OlVpbnQxNldpdGhGcmFjdGlv
bik6CisgICAgICAgICAgICAtIGhlbHBlciBjbGFzcywgdTE2aW50IHdpdGggaW5maW5pdGUgcHJl
Y2lzaW9uIGZyYWN0aW9uLCB1c2VkIHRvIGNvbnZlcnQKKyAgICAgICAgICAgICAgdGhlIGZyYWN0
aW9uYWwgcGFydCBvZiB0aGUgbnVtYmVyIHRvIGEgc3RyaW5nLgorICAgICAgICAoSlNDOjpVaW50
MTZXaXRoRnJhY3Rpb246Om9wZXJhdG9yKj0pOgorICAgICAgICAgICAgLSBNdWx0aXBseSBieSBh
IHVpbnQxNi4KKyAgICAgICAgKEpTQzo6VWludDE2V2l0aEZyYWN0aW9uOjpvcGVyYXRvcjwpOgor
ICAgICAgICAgICAgLSBDb21wYXJlIHR3byBVaW50MTZXaXRoRnJhY3Rpb25zLgorICAgICAgICAo
SlNDOjpVaW50MTZXaXRoRnJhY3Rpb246OmZsb29yQW5kU3VidHJhY3QpOgorICAgICAgICAgICAg
LSBFeHRyYWN0IHRoZSBpbnRlZ2VyIHBvcnRpb24gb2YgdGhlIG51bWJlciwgYW5kIHN1YnRyYWN0
IGl0IChjbGVhcnMgdGhlIGludGVnZXIgcG9ydGlvbikuCisgICAgICAgIChKU0M6OlVpbnQxNldp
dGhGcmFjdGlvbjo6Y29tcGFyZVBvaW50NSk6CisgICAgICAgICAgICAtIENvbXBhcmUgdG8gMC41
LgorICAgICAgICAoSlNDOjpVaW50MTZXaXRoRnJhY3Rpb246OnN1bUdyZWF0ZXJUaGFuT25lKToK
KyAgICAgICAgICAgIC0gUGFzc2VkIGEgc2Vjb25kIFVpbnQxNldpdGhGcmFjdGlvbiwgcmV0dXJu
cyB0cnVlIGlmIHRoZSByZXN1bHQgb2YgYWRkaW5nCisgICAgICAgICAgICAgIHRoZSB0d28gdmFs
dWVzIHdvdWxkIGJlIGdyZWF0ZXIgdGhhbiBvbmUuCisgICAgICAgIChKU0M6OlVpbnQxNldpdGhG
cmFjdGlvbjo6aXNOb3JtYWxpemVkKToKKyAgICAgICAgICAgIC0gVXNlZCBieSBBU1NFUlRzIHRv
IGNvbnNpc3RlbmN5IGNoZWNrIGludGVybmFsIHJlcHJlc2VudGF0aW9uLgorICAgICAgICAoSlND
OjpCaWdJbnRlZ2VyOjpCaWdJbnRlZ2VyKToKKyAgICAgICAgICAgIC0gaGVscGVyIGNsYXNzLCB1
bmJvdW5kZWQgaW50ZWdlciB2YWx1ZSwgdXNlZCB0byBjb252ZXJ0IHRoZSBpbnRlZ2VyIHBhcnQK
KyAgICAgICAgICAgICAgb2YgdGhlIG51bWJlciB0byBhIHN0cmluZy4KKyAgICAgICAgKEpTQzo6
QmlnSW50ZWdlcjo6ZGl2aWRlKToKKyAgICAgICAgICAgIC0gRGl2aWRlIHRoaXMgdmFsdWUgdGhy
b3VnaCBieSBhIHVpbnQzMi4KKyAgICAgICAgKEpTQzo6QmlnSW50ZWdlcjo6b3BlcmF0b3IhKToK
KyAgICAgICAgICAgIC0gdGVzdCBmb3IgemVyby4KKyAgICAgICAgKEpTQzo6dG9TdHJpbmdXaXRo
UmFkaXgpOgorICAgICAgICAgICAgLSBQZXJmb3JtcyBudW1iZXIgdG8gc3RyaW5nIGNvbnZlcnNp
b24sIHdpdGggdGhlIGdpdmVuIHJhZGl4ICgyLi4zNikuCisgICAgICAgIChKU0M6Om51bWJlclBy
b3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgICAgIC0gQ2hhbmdlZCB0byB1c2UgdG9TdHJpbmdX
aXRoUmFkaXguCisKIDIwMTEtMDYtMzAgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBCZXRoIERha2luLgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCShyZXZpc2lvbiA4OTIx
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTExMSw2ICsxMTEsNTQxIEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5F
IGJvb2wgZ2V0SW50ZWdlckFyZ3UKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorLy8gVGhlIGxhcmdl
c3QgZmluaXRlIGZsb2F0aW5nIHBvaW50IG51bWJlciBpcyAxLm1hbnRpc3NhICogMl4oMHg3ZmUt
MHgzZmYpLgorLy8gU2luY2UgMl5OIGluIGJpbmFyeSBpcyBhIG9uZSBiaXQgZm9sbG93ZWQgYnkg
TiB6ZXJvIGJpdHMuIDEgKiAyXjNmZiByZXF1aXJlcworLy8gYXQgbW9zdCAxMDI0IGNoYXJhY3Rl
cnMgdG8gdGhlIGxlZnQgb2YgYSBkZWNpbWFsIHBvaW50LCBpbiBiYXNlIDIgKDEwMjUgaWYKKy8v
IHdlIGluY2x1ZGUgYSBtaW51cyBzaWduKS4gRm9yIHRoZSBmcmFjdGlvbiwgYSB2YWx1ZSB3aXRo
IGFuIGV4cG9uZW50IG9mIDAKKy8vIGhhcyB1cCB0byA1MiBiaXRzIHRvIHRoZSByaWdodCBvZiB0
aGUgZGVjaW1hbCBwb2ludC4gIEVhY2ggZGVjcmVtZW50IG9mIHRoZQorLy8gZXhwb25lbnQgZG93
biB0byBhIG1pbmltdW0gb2YgLTB4M2ZlIGFkZHMgYW4gYWRkaXRpb25hbCBkaWdpdCB0byB0aGUg
bGVuZ3RoCisvLyBvZiB0aGUgZnJhY3Rpb24uIEFzIHN1Y2ggdGhlIG1heGltdW0gZnJhY3Rpb24g
c2l6ZSBpcyAxMDc1ICgxMDc2IGluY2x1ZGluZworLy8gYSBwb2ludCkuIFdlIHBpY2sgYSBidWZm
ZXIgc2l6ZSBzdWNoIHRoYXQgY2FuIHNpbXBseSBwbGFjZSB0aGUgcG9pbnQgaW4gdGhlCisvLyBj
ZW50ZXIgb2YgdGhlIGJ1ZmZlciwgYW5kIGFyZSBndWFyYW50ZWVkIHRvIGhhdmUgZW5vdWdoIHNw
YWNlIGluIGVhY2ggZGlyZWN0aW9uCisvLyBmbyBhbnkgbnVtYmVyIG9mIGRpZ2l0cyBhbiBJRUVF
IG51bWJlciBtYXkgcmVxdWlyZSB0byByZXByZXNlbnQuCit0eXBlZGVmIGNoYXIgUmFkaXhCdWZm
ZXJbMjE4MF07CisKKy8vIE1hcHBpbmcgZnJvbSBpbnRlZ2VycyAwLi4zNSB0byBkaWdpdCBpZGVu
dGlmeWluZyB0aGlzIHZhbHVlLCBmb3IgcmFkaXggMi4uMzYuCitzdGF0aWMgY29uc3QgY2hhciog
Y29uc3QgcmFkaXhEaWdpdHMgPSAiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6
IjsKKworLy8gQSB2YWx1ZSAxIGdyZWF0ZXIgdGhhbiBtYXggdWludDE2X3QuCisjZGVmaW5lIFVp
bnQxNkluZmluaXR5IDB4MTAwMDAKKworLy8gZGVjb21wb3NlICdudW1iZXInIHRvIGl0cyBzaWdu
LCBleHBvbmVudCwgYW5kIG1hbnRpc3NhIGNvbXBvbmVudHMuCisvLyBUaGUgcmVzdWx0IGlzIGlu
dGVycHJldGVkIGFzOgorLy8gICAgIChzaWduID8gLTEgOiAxKSAqIHBvdygyLCBleHBvbmVudCkg
KiAobWFudGlzc2EgLyAoMSA8PCA1MikpCitzdGF0aWMgdm9pZCBkZWNvbXBvc2VEb3VibGUoZG91
YmxlIG51bWJlciwgYm9vbCYgc2lnbiwgaW50MzJfdCYgZXhwb25lbnQsIHVpbnQ2NF90JiBtYW50
aXNzYSkKK3sKKyAgICBBU1NFUlQoaXNmaW5pdGUobnVtYmVyKSk7CisKKyAgICBzaWduID0gc2ln
bmJpdChudW1iZXIpOworCisgICAgdWludDY0X3QgYml0cyA9IFdURjo6Yml0d2lzZV9jYXN0PHVp
bnQ2NF90PihudW1iZXIpOworICAgIGV4cG9uZW50ID0gKHN0YXRpY19jYXN0PGludDMyX3Q+KGJp
dHMgPj4gNTIpICYgMHg3ZmYpIC0gMHgzZmY7CisgICAgbWFudGlzc2EgPSBiaXRzICYgMHhGRkZG
RkZGRkZGRkZGdWxsOworCisgICAgLy8gQ2hlY2sgZm9yIHplcm8vZGVub3JtYWwgdmFsdWVzOyBp
ZiBzbywgYWRqdXN0IHRoZSBleHBvbmVudCwKKyAgICAvLyBpZiBub3QgaW5zZXJ0IHRoZSBpbXBs
aWNpdCwgb21pdHRlZCBsZWFkaW5nIDEgYml0LgorICAgIGlmIChleHBvbmVudCA9PSAtMHgzZmYp
CisgICAgICAgIGV4cG9uZW50ID0gbWFudGlzc2EgPyAtMHgzZmUgOiAwOworICAgIGVsc2UKKyAg
ICAgICAgbWFudGlzc2EgfD0gMHgxMDAwMDAwMDAwMDAwMHVsbDsKK30KKworLy8gQSB1aW50MTZf
dCB3aXRoIGFuIGluZmluaXRlIHByZWNpc2lvbiBmcmFjdGlvbi4gVXBvbiBvdmVyZmxvd2luZwor
Ly8gdGhlIHVpbnQxNl90IHJhbmdlLCB0aGlzIGNsYXNzIHdpbGwgY2xhbXAgdG8gVWludDE2SW5m
aW5pdHkuCisvLyBUaGlzIGlzIHVzZWQgaW4gY29udmVydGluZyB0aGUgZnJhY3Rpb24gcGFydCBv
ZiBhIG51bWJlciB0byBhIHN0cmluZy4KK2NsYXNzIFVpbnQxNldpdGhGcmFjdGlvbiB7CitwdWJs
aWM6CisgICAgZXhwbGljaXQgVWludDE2V2l0aEZyYWN0aW9uKGRvdWJsZSBudW1iZXIsIHVpbnQx
Nl90IGRpdmlkZUJ5RXhwb25lbnQgPSAwKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG51bWJlciAm
JiBpc2Zpbml0ZShudW1iZXIpICYmICFzaWduYml0KG51bWJlcikpOworCisgICAgICAgIC8vIENo
ZWNrIGZvciB2YWx1ZXMgb3V0IG9mIHVpbnQxNl90IHJhbmdlLgorICAgICAgICBpZiAobnVtYmVy
ID49IFVpbnQxNkluZmluaXR5KSB7CisgICAgICAgICAgICBtX3ZhbHVlcy5hcHBlbmQoVWludDE2
SW5maW5pdHkpOworICAgICAgICAgICAgbV9sZWFkaW5nWmVyb3MgPSAwOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gQXBwZW5kIHRoZSB1bml0cyB0byBtX3Zh
bHVlcy4KKyAgICAgICAgZG91YmxlIGludGVnZXJQYXJ0ID0gZmxvb3IobnVtYmVyKTsKKyAgICAg
ICAgbV92YWx1ZXMuYXBwZW5kKHN0YXRpY19jYXN0PHVpbnQzMl90PihpbnRlZ2VyUGFydCkpOwor
CisgICAgICAgIGJvb2wgc2lnbjsKKyAgICAgICAgaW50MzJfdCBleHBvbmVudDsKKyAgICAgICAg
dWludDY0X3QgbWFudGlzc2E7CisgICAgICAgIGRlY29tcG9zZURvdWJsZShudW1iZXIgLSBpbnRl
Z2VyUGFydCwgc2lnbiwgZXhwb25lbnQsIG1hbnRpc3NhKTsKKyAgICAgICAgQVNTRVJUKCFzaWdu
ICYmIGV4cG9uZW50IDwgMCk7CisgICAgICAgIGV4cG9uZW50IC09IGRpdmlkZUJ5RXhwb25lbnQ7
CisKKyAgICAgICAgaW50MzJfdCB6ZXJvQml0cyA9IC1leHBvbmVudDsKKyAgICAgICAgLS16ZXJv
Qml0czsKKworICAgICAgICAvLyBBcHBlbmQgdGhlIGFwcGVuZCB3b3JkcyBmb3IgdG8gbV92YWx1
ZXMuCisgICAgICAgIHdoaWxlICh6ZXJvQml0cyA+PSAzMikgeworICAgICAgICAgICAgbV92YWx1
ZXMuYXBwZW5kKDApOworICAgICAgICAgICAgemVyb0JpdHMgLT0gMzI7CisgICAgICAgIH0KKwor
ICAgICAgICAvLyBMZWZ0IGFsaWduIHRoZSA1MyBiaXRzIG9mIHRoZSBtYW50aXNzYSB3aXRoaW4g
OTYgYml0cy4KKyAgICAgICAgdWludDMyX3QgdmFsdWVzWzNdOworICAgICAgICB2YWx1ZXNbMF0g
PSBzdGF0aWNfY2FzdDx1aW50MzJfdD4obWFudGlzc2EgPj4gMjEpOworICAgICAgICB2YWx1ZXNb
MV0gPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4obWFudGlzc2EgPDwgMTEpOworICAgICAgICB2YWx1
ZXNbMl0gPSAwOworICAgICAgICAvLyBTaGlmdCBiYXNlZCBvbiB0aGUgcmVtYWluZGVyIG9mIHRo
ZSBleHBvbmVudC4KKyAgICAgICAgaWYgKHplcm9CaXRzKSB7CisgICAgICAgICAgICB2YWx1ZXNb
Ml0gPSB2YWx1ZXNbMV0gPDwgKDMyIC0gemVyb0JpdHMpOworICAgICAgICAgICAgdmFsdWVzWzFd
ID0gKHZhbHVlc1sxXSA+PiB6ZXJvQml0cykgfCAodmFsdWVzWzBdIDw8ICgzMiAtIHplcm9CaXRz
KSk7CisgICAgICAgICAgICB2YWx1ZXNbMF0gPSAodmFsdWVzWzBdID4+IHplcm9CaXRzKTsKKyAg
ICAgICAgfQorICAgICAgICBtX3ZhbHVlcy5hcHBlbmQodmFsdWVzWzBdKTsKKyAgICAgICAgbV92
YWx1ZXMuYXBwZW5kKHZhbHVlc1sxXSk7CisgICAgICAgIG1fdmFsdWVzLmFwcGVuZCh2YWx1ZXNb
Ml0pOworCisgICAgICAgIC8vIENhbm9uaWNhbGl6ZTsgcmVtb3ZlIGFueSB0cmFpbGluZyB6ZXJv
cy4KKyAgICAgICAgd2hpbGUgKG1fdmFsdWVzLnNpemUoKSA+IDEgJiYgIW1fdmFsdWVzLmxhc3Qo
KSkKKyAgICAgICAgICAgIG1fdmFsdWVzLnJlbW92ZUxhc3QoKTsKKworICAgICAgICAvLyBDb3Vu
dCB0aGUgbnVtYmVyIG9mIGxlYWRpbmcgemVybywgdGhpcyBpcyB1c2VmdWwgaW4gb3B0aW1pemlu
ZyBtdWx0aXBsaWVzLgorICAgICAgICBtX2xlYWRpbmdaZXJvcyA9IDA7CisgICAgICAgIHdoaWxl
IChtX2xlYWRpbmdaZXJvcyA8IG1fdmFsdWVzLnNpemUoKSAmJiAhbV92YWx1ZXNbbV9sZWFkaW5n
WmVyb3NdKQorICAgICAgICAgICAgKyttX2xlYWRpbmdaZXJvczsKKyAgICB9CisKKyAgICBVaW50
MTZXaXRoRnJhY3Rpb24mIG9wZXJhdG9yKj0odWludDE2X3QgbXVsdGlwbGllcikKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChpc05vcm1hbGl6ZWQoKSk7CisKKyAgICAgICAgLy8gaXRlcmF0YXRlIGJh
Y2t3YXJkcyBvdmVyIHRoZSBmcmFjdGlvbiB1bnRpbCB3ZSByZWFjaCB0aGUgbGVhZGluZyB6ZXJv
cywKKyAgICAgICAgLy8gcGFzc2luZyB0aGUgY2FycnkgZnJvbSBvbmUgY2FsY3VsYXRpb24gaW50
byB0aGUgbmV4dC4KKyAgICAgICAgdWludDY0X3QgYWNjdW11bGF0b3IgPSAwOworICAgICAgICBm
b3IgKHNpemVfdCBpID0gbV92YWx1ZXMuc2l6ZSgpOyBpID4gbV9sZWFkaW5nWmVyb3M7ICkgewor
ICAgICAgICAgICAgLS1pOworICAgICAgICAgICAgYWNjdW11bGF0b3IgKz0gc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KG1fdmFsdWVzW2ldKSAqIHN0YXRpY19jYXN0PHVpbnQ2NF90PihtdWx0aXBsaWVy
KTsKKyAgICAgICAgICAgIG1fdmFsdWVzW2ldID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGFjY3Vt
dWxhdG9yKTsKKyAgICAgICAgICAgIGFjY3VtdWxhdG9yID4+PSAzMjsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICghbV9sZWFkaW5nWmVyb3MpIHsKKyAgICAgICAgICAgIC8vIFdpdGggYSBtdWx0
aXBsaWNhbmQgYW5kIG11bHRpcGxpZXIgaW4gdGhlIHVpbnQxNl90IHJhbmdlLCB0aGlzIGNhbm5v
dCBjYXJyeQorICAgICAgICAgICAgLy8gKGV2ZW4gYWxsb3dpbmcgZm9yIHRoZSBpbmZpbml0eSB2
YWx1ZSkuCisgICAgICAgICAgICBBU1NFUlQoIWFjY3VtdWxhdG9yKTsKKyAgICAgICAgICAgIC8v
IENoZWNrIGZvciBvdmVyZmxvdyAmIGNsYW1wIHRvICdpbmZpbml0eScuCisgICAgICAgICAgICBp
ZiAobV92YWx1ZXNbMF0gPj0gVWludDE2SW5maW5pdHkpIHsKKyAgICAgICAgICAgICAgICBtX3Zh
bHVlcy5zaHJpbmsoMSk7CisgICAgICAgICAgICAgICAgbV92YWx1ZXNbMF0gPSBVaW50MTZJbmZp
bml0eTsKKyAgICAgICAgICAgICAgICBtX2xlYWRpbmdaZXJvcyA9IDA7CisgICAgICAgICAgICAg
ICAgcmV0dXJuICp0aGlzOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGFjY3Vt
dWxhdG9yKSB7CisgICAgICAgICAgICAvLyBDaGVjayBmb3IgY2FycnkgZnJvbSB0aGUgbGFzdCBt
dWx0aXBseSwgaWYgc28gb3ZlcndyaXRlIGxhc3QgbGVhZGluZyB6ZXJvLgorICAgICAgICAgICAg
bV92YWx1ZXNbLS1tX2xlYWRpbmdaZXJvc10gPSBhY2N1bXVsYXRvcjsKKyAgICAgICAgICAgIC8v
IFRoZSBsaW1pdGVkIHJhbmdlIG9mIHRoZSBtdWx0aXBsaWVyIHNob3VsZCBtZWFuIHRoYXQgZXZl
biBpZiB3ZSBjYXJyeSBpbnRvCisgICAgICAgICAgICAvLyB0aGUgdW5pdHMsIHdlIGRvbid0IG5l
ZWQgdG8gY2hlY2sgZm9yIG92ZXJmbG93IG9mIHRoZSB1aW50MTZfdCByYW5nZS4KKyAgICAgICAg
ICAgIEFTU0VSVChtX3ZhbHVlc1swXSA8IFVpbnQxNkluZmluaXR5KTsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIE11bHRpcGxpY2F0aW9uIGJ5IGFuIGV2ZW4gdmFsdWUgbWF5IGludHJvZHVjZSB0
cmFpbGluZyB6ZXJvczsgaWYgc28sIGNsZWFuIHRoZW0KKyAgICAgICAgLy8gdXAuIChLZWVwaW5n
IHRoZSB2YWx1ZSBpbiBhIG5vcm1hbGl6ZWQgZm9ybSBtYWtlcyBzb21lIG9mIHRoZSBjb21wYXJp
c29uIG9wZXJhdGlvbnMKKyAgICAgICAgLy8gbW9yZSBlZmZpY2llbnQpLgorICAgICAgICB3aGls
ZSAobV92YWx1ZXMuc2l6ZSgpID4gMSAmJiAhbV92YWx1ZXMubGFzdCgpKQorICAgICAgICAgICAg
bV92YWx1ZXMucmVtb3ZlTGFzdCgpOworICAgICAgICBBU1NFUlQoaXNOb3JtYWxpemVkKCkpOwor
ICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvcjwoY29uc3Qg
VWludDE2V2l0aEZyYWN0aW9uJiBvdGhlcikKKyAgICB7CisgICAgICAgIEFTU0VSVChpc05vcm1h
bGl6ZWQoKSk7CisgICAgICAgIEFTU0VSVChvdGhlci5pc05vcm1hbGl6ZWQoKSk7CisKKyAgICAg
ICAgLy8gSXRlcmF0ZSBvdmVyIHRoZSBjb21tb24gbGVuZ3RocyBvZiBhcnJheXMuCisgICAgICAg
IHNpemVfdCBtaW5TaXplID0gc3RkOjptaW4obV92YWx1ZXMuc2l6ZSgpLCBvdGhlci5tX3ZhbHVl
cy5zaXplKCkpOworICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbWluU2l6
ZTsgKytpbmRleCkgeworICAgICAgICAgICAgLy8gSWYgd2UgZmluZCBhIHZhbHVlIHRoYXQgaXMg
bm90IGVxdWFsLCBjb21wYXJlIGFuZCByZXR1cm4uCisgICAgICAgICAgICB1aW50MzJfdCBmcm9t
VGhpcyA9IG1fdmFsdWVzW2luZGV4XTsKKyAgICAgICAgICAgIHVpbnQzMl90IGZyb21PdGhlciA9
IG90aGVyLm1fdmFsdWVzW2luZGV4XTsKKyAgICAgICAgICAgIGlmIChmcm9tVGhpcyAhPSBmcm9t
T3RoZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZyb21UaGlzIDwgZnJvbU90aGVyOworICAg
ICAgICB9CisgICAgICAgIC8vIElmIHRoZXNlIG51bWJlcnMgaGF2ZSB0aGUgc2FtZSBsZW5ndGhz
LCB0aGV5IGFyZSBlcXVhbCwKKyAgICAgICAgLy8gb3RoZXJ3aXNlIHdoaWNoIGV2ZXIgbnVtYmVy
IGhhcyBhIGxvbmdlciBmcmFjdGlvbiBpbiBsYXJnZXIuCisgICAgICAgIHJldHVybiBvdGhlci5t
X3ZhbHVlcy5zaXplKCkgPiBtaW5TaXplOworICAgIH0KKworICAgIC8vIFJldHVybiB0aGUgZmxv
b3IgKG5vbi1mcmFjdGlvbmFsIHBvcnRpb24pIG9mIHRoZSBudW1iZXIsIGNsZWFyaW5nIHRoaXMg
dG8gemVybywKKyAgICAvLyBsZWF2aW5nIHRoZSBmcmFjdGlvbmFsIHBhcnQgdW5jaGFuZ2VkLgor
ICAgIHVpbnQzMl90IGZsb29yQW5kU3VidHJhY3QoKQorICAgIHsKKyAgICAgICAgLy8gJ2Zsb29y
JyBpcyBzaW1wbGUgdGhlIGludGVnZXIgcG9ydGlvbiBvZiB0aGUgdmFsdWUuCisgICAgICAgIHVp
bnQzMl90IGZsb29yID0gbV92YWx1ZXNbMF07CisKKyAgICAgICAgLy8gSWYgZmxvb3IgaXMgbm9u
LXplcm8sIAorICAgICAgICBpZiAoZmxvb3IpIHsKKyAgICAgICAgICAgIG1fdmFsdWVzWzBdID0g
MDsKKyAgICAgICAgICAgIG1fbGVhZGluZ1plcm9zID0gMTsKKyAgICAgICAgICAgIHdoaWxlICht
X2xlYWRpbmdaZXJvcyA8IG1fdmFsdWVzLnNpemUoKSAmJiAhbV92YWx1ZXNbbV9sZWFkaW5nWmVy
b3NdKQorICAgICAgICAgICAgICAgICsrbV9sZWFkaW5nWmVyb3M7CisgICAgICAgIH0KKworICAg
ICAgICByZXR1cm4gZmxvb3I7CisgICAgfQorCisgICAgLy8gQ29tcGFyZSB0aGlzIHZhbHVlIHRv
IDAuNSwgcmV0dXJucyAtMSBmb3IgbGVzcyB0aGFuLCAwIGZvciBlcXVhbCwgMSBmb3IgZ3JlYXRl
ci4KKyAgICBpbnQgY29tcGFyZVBvaW50NSgpCisgICAgeworICAgICAgICBBU1NFUlQoaXNOb3Jt
YWxpemVkKCkpOworICAgICAgICAvLyBJZiB1bml0cyAhPSAwLCB0aGlzIGlzIGdyZWF0ZXIgdGhh
biAwLjUuCisgICAgICAgIGlmIChtX3ZhbHVlc1swXSkKKyAgICAgICAgICAgIHJldHVybiAxOwor
ICAgICAgICAvLyBJZiBzaXplID09IDEgdGhpcyB2YWx1ZSBpcyAwLCBoZW5jZSA8IDAuNS4KKyAg
ICAgICAgaWYgKG1fdmFsdWVzLnNpemUoKSA9PSAxKQorICAgICAgICAgICAgcmV0dXJuIC0xOwor
ICAgICAgICAvLyBDb21wYXJlIHRvIDAuNS4KKyAgICAgICAgaWYgKG1fdmFsdWVzWzFdID4gMHg4
MDAwMDAwMHVsKQorICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGlmIChtX3ZhbHVlc1sx
XSA8IDB4ODAwMDAwMDB1bCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgLy8gQ2hl
Y2sgZm9yIG1vcmUgd29yZHMgLSBzaW5jZSBub3JtYWxpemVkIG51bWJlcnMgaGF2ZSBubyB0cmFp
bGluZyB6ZXJvcywgaWYKKyAgICAgICAgLy8gdGhlcmUgYXJlIG1vcmUgdGhhdCB0d28gZGlnaXRz
IHdlIGNhbiBhc3N1bWUgYXQgbGVhc3Qgb25lIG1vcmUgaXMgbm9uLXplcm8sCisgICAgICAgIC8v
IGFuZCBoZW5jZSB0aGUgdmFsdWUgaXMgPiAwLjUuCisgICAgICAgIHJldHVybiBtX3ZhbHVlcy5z
aXplKCkgPiAyID8gMSA6IDA7CisgICAgfQorCisgICAgLy8gUmV0dXJuIHRydWUgaWYgdGhlIHN1
bSBvZiB0aGlzIHBsdXMgYWRkZW5kIHdvdWxkIGJlIGdyZWF0ZXIgdGhhbiAxLgorICAgIGJvb2wg
c3VtR3JlYXRlclRoYW5PbmUoY29uc3QgVWludDE2V2l0aEZyYWN0aW9uJiBhZGRlbmQpIAorICAg
IHsKKyAgICAgICAgQVNTRVJUKGlzTm9ybWFsaXplZCgpKTsKKyAgICAgICAgQVNTRVJUKGFkZGVu
ZC5pc05vcm1hbGl6ZWQoKSk7CisKKyAgICAgICAgLy8gRmlyc3QsIHN1bSB0aGUgdW5pdHMuICBJ
ZiB0aGUgcmVzdWx0IGlzIGdyZWF0ZXIgdGhhbiBvbmUsIHJldHVybiB0cnVlLgorICAgICAgICAv
LyBJZiBlcXVhbCB0byBvbmUsIHJldHVybiB0cnVlIGlmIGVpdGhlciBudW1iZXIgaGFzIGEgZnJh
Y3Rpb25hbCBwYXJ0LgorICAgICAgICB1aW50MzJfdCBzdW0gPSBtX3ZhbHVlc1swXSArIGFkZGVu
ZC5tX3ZhbHVlc1swXTsKKyAgICAgICAgaWYgKHN1bSkKKyAgICAgICAgICAgIHJldHVybiBzdW0g
PiAxIHx8IHN0ZDo6bWF4KG1fdmFsdWVzLnNpemUoKSwgYWRkZW5kLm1fdmFsdWVzLnNpemUoKSkg
PiAxOworCisgICAgICAgIC8vIFdlIGNvdWxkIHN0aWxsIHByb2R1Y2UgYSByZXN1bHQgZ3JlYXRl
ciB0aGFuIHplcm8gaWYgYWRkaXRpb24gb2YgdGhlIG5leHQKKyAgICAgICAgLy8gd29yZCBmcm9t
IHRoZSBmcmFjdGlvbiB3ZXJlIHRvIGNhcnJ5LCBsZWF2aW5nIGEgcmVzdWx0ID4gMC4KKworICAg
ICAgICAvLyBJdGVyYXRlIG92ZXIgdGhlIGNvbW1vbiBsZW5ndGhzIG9mIGFycmF5cy4KKyAgICAg
ICAgc2l6ZV90IG1pblNpemUgPSBzdGQ6Om1pbihtX3ZhbHVlcy5zaXplKCksIGFkZGVuZC5tX3Zh
bHVlcy5zaXplKCkpOworICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDE7IGluZGV4IDwgbWlu
U2l6ZTsgKytpbmRleCkgeworICAgICAgICAgICAgLy8gU3VtIHRoZSBuZXh0IHdvcmQgZnJvbSB0
aGlzICYgdGhlIGFkZGVuZC4KKyAgICAgICAgICAgIHVpbnQzMl90IGZyb21UaGlzID0gbV92YWx1
ZXNbaW5kZXhdOworICAgICAgICAgICAgdWludDMyX3QgZnJvbUFkZGVuZCA9IGFkZGVuZC5tX3Zh
bHVlc1tpbmRleF07CisgICAgICAgICAgICBzdW0gPSBmcm9tVGhpcyArIGZyb21BZGRlbmQ7CisK
KyAgICAgICAgICAgIC8vIENoZWNrIGZvciBvdmVyZmxvdy4gSWYgc28sIGNoZWNrIHdoZXRoZXIg
dGhlIHJlbWFpbmluZyByZXN1bHQgaXMgbm9uLXplcm8sCisgICAgICAgICAgICAvLyBvciBpZiB0
aGVyZSBhcmUgYW55IGZ1cnRoZXIgd29yZHMgaW4gdGhlIGZyYWN0aW9uLgorICAgICAgICAgICAg
aWYgKHN1bSA8IGZyb21UaGlzKQorICAgICAgICAgICAgICAgIHJldHVybiBzdW0gfHwgKGluZGV4
ICsgMSkgPCBzdGQ6Om1heChtX3ZhbHVlcy5zaXplKCksIGFkZGVuZC5tX3ZhbHVlcy5zaXplKCkp
OworCisgICAgICAgICAgICAvLyBJZiB0aGUgc3VtIGlzIHVpbnQzMl90IG1heCwgdGhlbiB3ZSB3
b3VsZCBjYXJyeSBhIDEgaWYgYWRkaXRpb24gb2YgdGhlIG5leHQKKyAgICAgICAgICAgIC8vIGRp
Z2l0cyBpbiB0aGUgbnVtYmVyIHdlcmUgdG8gb3ZlcmZsb3cuCisgICAgICAgICAgICBpZiAoc3Vt
ICE9IDB4RkZGRkZGRkYpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgYm9vbCBpc05v
cm1hbGl6ZWQoKSBjb25zdAorICAgIHsKKyAgICAgICAgLy8gQWxsIHZhbHVlcyBzaG91bGQgaGF2
ZSBhdCBsZWFzdCBvbmUgdmFsdWUuCisgICAgICAgIHJldHVybiAobV92YWx1ZXMuc2l6ZSgpKQor
ICAgICAgICAgICAgLy8gVGhlIHVuaXRzIHZhbHVlIG11c3QgYmUgYSB1aW50MTZfdCwgb3IgdGhl
IHZhbHVlIGlzIHRoZSBvdmVyZmxvdyB2YWx1ZS4KKyAgICAgICAgICAgICYmIChtX3ZhbHVlc1sw
XSA8IFVpbnQxNkluZmluaXR5IHx8IChtX3ZhbHVlc1swXSA9PSBVaW50MTZJbmZpbml0eSAmJiBt
X3ZhbHVlcy5zaXplKCkgPT0gMSkpCisgICAgICAgICAgICAvLyBUaGVyZSBzaG91bGQgYmUgbm8g
dHJhaWxpbmcgemVyb3MgKHVubGVzcyB0aGlzIHZhbHVlIGlzIHplcm8hKS4KKyAgICAgICAgICAg
ICYmIChtX3ZhbHVlcy5sYXN0KCkgfHwgbV92YWx1ZXMuc2l6ZSgpID09IDEpOworICAgIH0KKwor
ICAgIC8vIFRoZSBpbnRlcm5hbCBzdG9yYWdlIG9mIHRoZSBudW1iZXIuIFRoaXMgdmVjdG9yIGlz
IGFsd2F5cyBhdCBsZWFzdCBvbmUgZW50cnkgaW4gc2l6ZSwKKyAgICAvLyB3aXRoIHRoZSBmaXJz
dCBlbnRyeSBob2xkaW5nIHRoZSBwb3J0aW9uIG9mIHRoZSBudW1iZXIgZ3JlYXRlciB0aGFuIHpl
cm8uIFRoZSBmaXJzdAorICAgIC8vIHZhbHVlIGFsd2F5cyBob2xkIGEgdmFsdWUgaW4gdGhlIHVp
bnQxNl90IHJhbmdlLCBvciBob2xkcyB0aGUgdmFsdWUgVWludDE2SW5maW5pdHkgdG8KKyAgICAv
LyBpbmRpY2F0ZSB0aGUgdmFsdWUgaGFzIG92ZXJmbG93ZWQgdG8gPj0gMHgxMDAwMC4gSWYgdGhl
IHVuaXRzIHZhbHVlIGlzIFVpbnQxNkluZmluaXR5LAorICAgIC8vIHRoZXJlIGNhbiBiZSBubyBm
cmFjdGlvbiAoc2l6ZSBtdXN0IGJlIDEpLgorICAgIC8vCisgICAgLy8gU3Vic2VxdWVudCB2YWx1
ZXMgaW4gdGhlIGFycmF5IHJlcHJlc2VudCBwb3J0aW9ucyBvZiB0aGUgZnJhY3Rpb25hbCBwYXJ0
IG9mIHRoaXMgbnVtYmVyLgorICAgIC8vIFRoZSB0b3RhbCB2YWx1ZSBvZiB0aGUgbnVtYmVyIGlz
IHRoZSBzdW0gb2YgKG1fdmFsdWVzW2ldIC8gcG93KDJeMzIsIGkpKSwgZm9yIGVhY2ggaQorICAg
IC8vIGluIHRoZSBhcnJheS4gVGhlIHZlY3RvciBzaG91bGQgY29udGFpbiBubyB0cmFpbGluZyB6
ZXJvcywgZXhjZXB0IGZvciB0aGUgdmFsdWUgJzAnLAorICAgIC8vIHJlcHJlc2VudGVkIGJ5IGEg
dmVjdG9yIGNvbnRpYW5pbmcgYSBzaW5nbGUgemVybyB2YWx1ZS4gIFRoZXNlIGNvbnN0cmFpbnRz
IGFyZSBjaGVja2VkCisgICAgLy8gYnkgJ2lzTm9ybWFsaXplZCgpJywgYWJvdmUuCisgICAgLy8K
KyAgICAvLyBUaGUgaW5saW5lIGNhcGFjaXR5IG9mIHRoZSB2ZWN0b3IgaXMgc2V0IHRvIGJlIGFi
bGUgdG8gY29udGFpbiBhbnkgSUVFRSBkb3VibGUgKDEgZm9yCisgICAgLy8gdGhlIHVuaXRzIGNv
bHVtbiwgMzIgZm9yIHplcm9zIGludHJvZHVjZWQgZHVlIHRvIGFuIGV4cG9uZW50IHVwIHRvIC0z
RkUsIGFuZCAyIGZvcgorICAgIC8vIGJpdHMgdGFrZW4gZnJvbSB0aGUgbWFudGlzc2EpLgorICAg
IFZlY3Rvcjx1aW50MzJfdCwgMzY+IG1fdmFsdWVzOworCisgICAgLy8gQ2FjaGUgYSBjb3VudCBv
ZiB0aGUgbnVtYmVyIG9mIGxlYWRpbmcgemVyb3MgaW4gbV92YWx1ZXMuIFdlIGNhbiB1c2UgdGhp
cyB0byBvcHRpbWl6ZQorICAgIC8vIG1ldGhvZHMgdGhhdCB3b3VsZCBvdGhlcndpc2UgbmVlZCB2
aXNpdCBhbGwgd29yZHMgaW4gdGhlIHZlY3RvciwgZS5nLiBtdWx0aXBsaWNhdGlvbi4KKyAgICBz
aXplX3QgbV9sZWFkaW5nWmVyb3M7Cit9OworCisvLyBUaGlzIGlzIHVzZWQgaW4gY29udmVydGlu
ZyB0aGUgaW50ZWdlciBwYXJ0IG9mIGEgbnVtYmVyIHRvIGEgc3RyaW5nLgorY2xhc3MgQmlnSW50
ZWdlciB7CitwdWJsaWM6CisgICAgQmlnSW50ZWdlcihkb3VibGUgbnVtYmVyKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKGlzZmluaXRlKG51bWJlcikgJiYgIXNpZ25iaXQobnVtYmVyKSk7CisgICAg
ICAgIEFTU0VSVChudW1iZXIgPT0gZmxvb3IobnVtYmVyKSk7CisKKyAgICAgICAgYm9vbCBzaWdu
OworICAgICAgICBpbnQzMl90IGV4cG9uZW50OworICAgICAgICB1aW50NjRfdCBtYW50aXNzYTsK
KyAgICAgICAgZGVjb21wb3NlRG91YmxlKG51bWJlciwgc2lnbiwgZXhwb25lbnQsIG1hbnRpc3Nh
KTsKKyAgICAgICAgQVNTRVJUKCFzaWduICYmIGV4cG9uZW50ID49IDApOworICAgICAgICBBU1NF
UlQobWFudGlzc2EgJiAweDEwMDAwMDAwMDAwMDAwKTsKKworICAgICAgICBpbnQzMl90IHplcm9C
aXRzID0gZXhwb25lbnQgLSA1MjsKKworICAgICAgICBpZiAoemVyb0JpdHMgPCAwKSB7CisgICAg
ICAgICAgICBtYW50aXNzYSA+Pj0gLXplcm9CaXRzOworICAgICAgICAgICAgemVyb0JpdHMgPSAw
OworICAgICAgICB9CisKKyAgICAgICAgd2hpbGUgKHplcm9CaXRzID49IDMyKSB7CisgICAgICAg
ICAgICBtX3ZhbHVlcy5hcHBlbmQoMCk7CisgICAgICAgICAgICB6ZXJvQml0cyAtPSAzMjsKKyAg
ICAgICAgfQorCisgICAgICAgIC8vIExlZnQgYWxpZ24gdGhlIDUzIGJpdHMgb2YgdGhlIG1hbnRp
c3NhIHdpdGhpbiA5NiBiaXRzLgorICAgICAgICB1aW50MzJfdCB2YWx1ZXNbM107CisgICAgICAg
IHZhbHVlc1swXSA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihtYW50aXNzYSk7CisgICAgICAgIHZh
bHVlc1sxXSA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihtYW50aXNzYSA+PiAzMik7CisgICAgICAg
IHZhbHVlc1syXSA9IDA7CisgICAgICAgIC8vIFNoaWZ0IGJhc2VkIG9uIHRoZSByZW1haW5kZXIg
b2YgdGhlIGV4cG9uZW50LgorICAgICAgICBpZiAoemVyb0JpdHMpIHsKKyAgICAgICAgICAgIHZh
bHVlc1syXSA9IHZhbHVlc1sxXSA+PiAoMzIgLSB6ZXJvQml0cyk7CisgICAgICAgICAgICB2YWx1
ZXNbMV0gPSAodmFsdWVzWzFdIDw8IHplcm9CaXRzKSB8ICh2YWx1ZXNbMF0gPj4gKDMyIC0gemVy
b0JpdHMpKTsKKyAgICAgICAgICAgIHZhbHVlc1swXSA9ICh2YWx1ZXNbMF0gPDwgemVyb0JpdHMp
OworICAgICAgICB9CisgICAgICAgIG1fdmFsdWVzLmFwcGVuZCh2YWx1ZXNbMF0pOworICAgICAg
ICBtX3ZhbHVlcy5hcHBlbmQodmFsdWVzWzFdKTsKKyAgICAgICAgbV92YWx1ZXMuYXBwZW5kKHZh
bHVlc1syXSk7CisKKyAgICAgICAgLy8gQ2Fub25pY2FsaXplOyByZW1vdmUgYWxsIHRyYWlsaW5n
IHplcm9zLgorICAgICAgICB3aGlsZSAobV92YWx1ZXMuc2l6ZSgpICYmICFtX3ZhbHVlcy5sYXN0
KCkpCisgICAgICAgICAgICBtX3ZhbHVlcy5yZW1vdmVMYXN0KCk7CisgICAgfQorCisgICAgdWlu
dDMyX3QgZGl2aWRlKHVpbnQzMl90IGRpdmlzb3IpCisgICAgeworICAgICAgICB1aW50MzJfdCBj
YXJyeSA9IDA7CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IG1fdmFsdWVzLnNpemUoKTsgaTsg
KSB7CisgICAgICAgICAgICAtLWk7CisgICAgICAgICAgICB1aW50NjRfdCBkaXZpZGVuZCA9IChz
dGF0aWNfY2FzdDx1aW50NjRfdD4oY2FycnkpIDw8IDMyKSArIHN0YXRpY19jYXN0PHVpbnQ2NF90
PihtX3ZhbHVlc1tpXSk7CisKKyAgICAgICAgICAgIHVpbnQ2NF90IHJlc3VsdCA9IGRpdmlkZW5k
IC8gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGRpdmlzb3IpOworICAgICAgICAgICAgQVNTRVJUKHJl
c3VsdCA9PSBzdGF0aWNfY2FzdDx1aW50MzJfdD4ocmVzdWx0KSk7CisgICAgICAgICAgICB1aW50
NjRfdCByZW1haW5kZXIgPSBkaXZpZGVuZCAlIHN0YXRpY19jYXN0PHVpbnQ2NF90PihkaXZpc29y
KTsKKyAgICAgICAgICAgIEFTU0VSVChyZW1haW5kZXIgPT0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KHJlbWFpbmRlcikpOworICAgICAgICAgICAgCisgICAgICAgICAgICBtX3ZhbHVlc1tpXSA9IHN0
YXRpY19jYXN0PHVpbnQzMl90PihyZXN1bHQpOworICAgICAgICAgICAgY2FycnkgPSBzdGF0aWNf
Y2FzdDx1aW50MzJfdD4ocmVtYWluZGVyKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIENhbm9u
aWNhbGl6ZTsgcmVtb3ZlIGFsbCB0cmFpbGluZyB6ZXJvcy4KKyAgICAgICAgd2hpbGUgKG1fdmFs
dWVzLnNpemUoKSAmJiAhbV92YWx1ZXMubGFzdCgpKQorICAgICAgICAgICAgbV92YWx1ZXMucmVt
b3ZlTGFzdCgpOworCisgICAgICAgIHJldHVybiBjYXJyeTsKKyAgICB9CisKKyAgICBib29sIG9w
ZXJhdG9yISgpIHsgcmV0dXJuICFtX3ZhbHVlcy5zaXplKCk7IH0KKworcHJpdmF0ZToKKyAgICBW
ZWN0b3I8dWludDMyX3QsIDM2PiBtX3ZhbHVlczsKK307CisKK3N0YXRpYyBjaGFyKiB0b1N0cmlu
Z1dpdGhSYWRpeChSYWRpeEJ1ZmZlciYgYnVmZmVyLCBkb3VibGUgbnVtYmVyLCB1bnNpZ25lZCBy
YWRpeCkKK3sKKyAgICBBU1NFUlQoaXNmaW5pdGUobnVtYmVyKSk7CisgICAgQVNTRVJUKHJhZGl4
ID49IDIgJiYgcmFkaXggPD0gMzYpOworCisgICAgLy8gUG9zaXRpb24gdGhlIGRlY2ltYWwgcG9p
bnQgYXQgdGhlIGNlbnRlciBvZiB0aGUgc3RyaW5nLCBzZXQKKyAgICAvLyB0aGUgc3RhcnRPZlJl
c3VsdFN0cmluZyBwb2ludGVyIHRvIHBvaW50IGF0IHRoZSBkZWNpbWFsIHBvaW50LgorICAgIGNo
YXIqIGRlY2ltYWxQb2ludCA9IGJ1ZmZlciArIHNpemVvZihidWZmZXIpIC8gMjsKKyAgICBjaGFy
KiBzdGFydE9mUmVzdWx0U3RyaW5nID0gZGVjaW1hbFBvaW50OworCisgICAgLy8gRXh0cmFjdCB0
aGUgc2lnbi4KKyAgICBib29sIGlzTmVnYXRpdmUgPSBzaWduYml0KG51bWJlcik7CisgICAgaWYg
KGlzTmVnYXRpdmUpCisgICAgICAgIG51bWJlciA9IC1udW1iZXI7CisgICAgZG91YmxlIGludGVn
ZXJQYXJ0ID0gZmxvb3IobnVtYmVyKTsKKworICAgIC8vIFdlIHVzZSB0aGlzIHRvIHRlc3QgZm9y
IG9kZCB2YWx1ZXMgaW4gb2RkIHJhZGl4IGJhc2VzLgorICAgIC8vIFdoZXJlIHRoZSBiYXNlIGlz
IGV2ZW4sIChlLmcuIDEwKSwgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSB2YWx1ZSBpcyBldmVuIHdl
IG5lZWQgb25seQorICAgIC8vIGNvbnNpZGVyIHRoZSBsZWFzdCBzaWduaWZpY2FudCBkaWdpdC4g
Rm9yIGV4YW1wbGUsIDEyNCBpbiBiYXNlIDEwIGlzIGV2ZW4sIGJlY2F1c2UgJzQnCisgICAgLy8g
aXMgZXZlbi4gaWYgdGhlIHJhZGl4IGlzIG9kZCwgdGhlbiB0aGUgcmFkaXggcmFpc2VkIHRvIGFu
IGludGVnZXIgcG93ZXIgaXMgYWxzbyBvZGQuCisgICAgLy8gRS5nLiBpbiBiYXNlIDUsIDEyNCBy
ZXByZXNlbnRzICgxICogMTI1ICsgMiAqIDI1ICsgNCAqIDUpLiBTaW5jZSBlYWNoIGRpZ2l0IGlu
IHRoZSB2YWx1ZQorICAgIC8vIGlzIG11bHRpcGxpZWQgYnkgYW4gb2RkIG51bWJlciwgdGhlIHJl
c3VsdCBpcyBldmVuIGlmIHRoZSBzdW0gb2YgYWxsIGRpZ2l0cyBpcyBldmVuLgorICAgIC8vCisg
ICAgLy8gRm9yIHRoZSBpbnRlZ2VyIHBvcnRpb24gb2YgdGhlIHJlc3VsdCwgd2Ugb25seSBuZWVk
IHRlc3Qgd2hldGhlciB0aGUgaW50ZWdlciB2YWx1ZSBpcworICAgIC8vIGV2ZW4gb3Igb2RkLiBG
b3IgZWFjaCBkaWdpdCBvZiB0aGUgZnJhY3Rpb24gYWRkZWQsIHdlIHNob3VsZCBpbnZlcnQgb3Vy
IGlkZWEgb2Ygd2hldGhlcgorICAgIC8vIHRoZSBudW1iZXIgaXMgb2RkIGlmIHRoZSBuZXcgZGln
aXQgaXMgb2RkLgorICAgIC8vCisgICAgLy8gQWxzbyBpbml0aWFsaXplIGRpZ2l0IHRvIHRoaXMg
dmFsdWU7IGZvciBldmVuIHJhZGl4IHZhbHVlcyB3ZSBvbmx5IG5lZWQgdHJhY2sgd2hldGhlcgor
ICAgIC8vIHRoZSBsYXN0IGluZGl2aWR1YWwgZGlnaXQgd2FzIG9kZC4KKyAgICBib29sIGludGVn
ZXJQYXJ0SXNPZGQgPSBpbnRlZ2VyUGFydCA8PSAweDFGRkZGRkZGRkZGRkZGICYmIHN0YXRpY19j
YXN0PGludDY0X3Q+KGludGVnZXJQYXJ0KSAmIDE7CisgICAgQVNTRVJUKGludGVnZXJQYXJ0SXNP
ZGQgPT0gc3RhdGljX2Nhc3Q8Ym9vbD4oZm1vZChpbnRlZ2VyUGFydCwgMikpKTsKKyAgICBib29s
IGlzT2RkSW5PZGRSYWRpeCA9IGludGVnZXJQYXJ0SXNPZGQ7CisgICAgdWludDMyX3QgZGlnaXQg
PSBpbnRlZ2VyUGFydElzT2RkOworCisgICAgLy8gQ2hlY2sgaWYgdGhlIHZhbHVlIGhhcyBhIGZy
YWN0aW9uYWwgcGFydCAtIGlmIG5vdCwgd2UncmUgZG9uZS4KKyAgICBkb3VibGUgZnJhY3Rpb25Q
YXJ0ID0gbnVtYmVyIC0gZmxvb3IobnVtYmVyKTsKKyAgICBpZiAoZnJhY3Rpb25QYXJ0KSB7Cisg
ICAgICAgIC8vIFdyaXRlIHRoZSBkZWNpbWFsIHBvaW50IG5vdy4KKyAgICAgICAgKmRlY2ltYWxQ
b2ludCA9ICcuJzsKKworICAgICAgICAvLyBIaWdoZXIgcHJlY2lzaW9uIHJlcHJlc2VudGF0aW9u
IG9mIHRoZSBmcmFjdGlvbmFsIHBhcnQuCisgICAgICAgIFVpbnQxNldpdGhGcmFjdGlvbiBmcmFj
dGlvbihmcmFjdGlvblBhcnQpOworCisgICAgICAgIGJvb2wgbmVlZHNSb3VuZGluZ1VwID0gZmFs
c2U7CisgICAgICAgIGNoYXIqIGVuZE9mUmVzdWx0U3RyaW5nID0gZGVjaW1hbFBvaW50ICsgMTsK
KworICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIGRlbHRhIGZyb20gdGhlIGN1cnJlbnQgbnVtYmVy
IHRvIHRoZSBuZXh0ICYgcHJldmlvdXMgcG9zc2libGUgSUVFRSBudW1iZXJzLgorICAgICAgICBk
b3VibGUgbmV4dE51bWJlciA9IG5leHRhZnRlcihudW1iZXIsIHN0ZDo6bnVtZXJpY19saW1pdHM8
ZG91YmxlPjo6aW5maW5pdHkoKSk7CisgICAgICAgIGRvdWJsZSBsYXN0TnVtYmVyID0gbmV4dGFm
dGVyKG51bWJlciwgLXN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSk7Cisg
ICAgICAgIEFTU0VSVChpc2Zpbml0ZShuZXh0TnVtYmVyKSAmJiAhc2lnbmJpdChuZXh0TnVtYmVy
KSk7CisgICAgICAgIEFTU0VSVChpc2Zpbml0ZShsYXN0TnVtYmVyKSAmJiAhc2lnbmJpdChsYXN0
TnVtYmVyKSk7CisgICAgICAgIGRvdWJsZSBkZWx0YU5leHREb3VibGUgPSBuZXh0TnVtYmVyIC0g
bnVtYmVyOworICAgICAgICBkb3VibGUgZGVsdGFMYXN0RG91YmxlID0gbnVtYmVyIC0gbGFzdE51
bWJlcjsKKyAgICAgICAgQVNTRVJUKGlzZmluaXRlKGRlbHRhTmV4dERvdWJsZSkgJiYgIXNpZ25i
aXQoZGVsdGFOZXh0RG91YmxlKSk7CisgICAgICAgIEFTU0VSVChpc2Zpbml0ZShkZWx0YUxhc3RE
b3VibGUpICYmICFzaWduYml0KGRlbHRhTGFzdERvdWJsZSkpOworCisgICAgICAgIC8vIFdlIHRy
YWNrIHRoZSBkZWx0YSBmcm9tIHRoZSBjdXJyZW50IHZhbHVlIHRvIHRoZSBuZXh0LCB0byB0cmFj
ayBob3cgbWFueSBkaWdpdHMgb2YgdGhlCisgICAgICAgIC8vIGZyYWN0aW9uIHdlIG5lZWQgdG8g
d3JpdGUuIEZvciBleGFtcGxlLCBpZiB0aGUgdmFsdWUgd2UgYXJlIGNvbnZlcnRpbmcgaXMgcHJl
Y2lzZWx5CisgICAgICAgIC8vIDEuMjM0NSwgc28gZmFyIHdlIGhhdmUgd3JpdHRlbiB0aGUgZGln
aXRzICIxLjIzIiB0byBhIHN0cmluZyBsZWF2aW5nIGEgcmVtYWluZGVyIG9mCisgICAgICAgIC8v
IDAuNDUsIGFuZCB3ZSB3YW50IHRvIGRldGVybWluZSB3aGV0aGVyIHdlIGNhbiByb3VuZCBvZmYs
IG9yIHdoZXRoZXIgd2UgbmVlZCB0byBrZWVwCisgICAgICAgIC8vIGFwcGVuZGluZyBkaWdpdHMg
KCc0JykuIFdlIGNhbiBzdG9wIGFkZGluZyBkaWdpdHMgcHJvdmlkZWQgdGhhdCB0aGVuIG5leHQg
cG9zc2libGUKKyAgICAgICAgLy8gbG93ZXIgSUVFRSB2YWx1ZSBpcyBmdXJ0aGVyIGZyb20gMS4y
MyB0aGFuIHRoZSByZW1haW5kZXIgd2UnZCBiZSByb3VuZGluZyBvZmYgKDAuNDUpLAorICAgICAg
ICAvLyB3aGljaCBpcyB0byBzYXksIGxlc3MgdGhhbiAxLjIyNTUuIFB1dCBhbm90aGVyIHdheSwg
dGhlIGRlbHRhIGJldHdlZW4gdGhlIHByaW9yCisgICAgICAgIC8vIHBvc3NpYmxlIHZhbHVlIGFu
ZCB0aGlzIG51bWJlciBtdXN0IGJlIG1vcmUgdGhhbiAyeCB0aGUgcmVtYWluZGVyIHdlJ2QgYmUg
cm91bmRpbmcgb2ZmCisgICAgICAgIC8vIChvciBtb3JlIHNpbXBseSBoYWxmIHRoZSBkZWx0YSBi
ZXR3ZWVuIG51bWJlcnMgbXVzdCBiZSBncmVhdGVyIHRoYW4gdGhlIHJlbWFpbmRlcikuCisgICAg
ICAgIC8vCisgICAgICAgIC8vIFNpbWlsYXJseSB3ZSBuZWVkIHRyYWNrIHRoZSBkZWx0YSB0byB0
aGUgbmV4dCBwb3NzaWJsZSB2YWx1ZSwgdG8gZGVydGVybWluZSB3aGV0aGVyCisgICAgICAgIC8v
IHRvIHJvdW5kIHVwLiAgSW4gYWxtb3N0IGFsbCBjYXNlcyAob3RoZXIgdGhhbiBhdCBleHBvbmVu
dCBib3VuZGFyaWVzKSB0aGUgZGVsdGFzIHRvCisgICAgICAgIC8vIHByaW9yIGFuZCBzdWJzZXF1
ZW50IHZhbHVlcyBhcmUgaWRlbnRpY2FsLCBzbyB3ZSBkb24ndCBuZWVkIHRyYWNrIHRoZW4gc2Vw
YXJhdGVseS4KKyAgICAgICAgaWYgKGRlbHRhTmV4dERvdWJsZSAhPSBkZWx0YUxhc3REb3VibGUp
IHsKKyAgICAgICAgICAgIC8vIFNpbmNlIHRoZSBkZWx0YXMgYXJlIGRpZmZlcmVudCB0cmFjayB0
aGVtIHNlcGFyYXRlbHkuIFByZS1tdWx0aXBseSBieSAwLjUuCisgICAgICAgICAgICBVaW50MTZX
aXRoRnJhY3Rpb24gaGFsZkRlbHRhTmV4dChkZWx0YU5leHREb3VibGUsIDEpOworICAgICAgICAg
ICAgVWludDE2V2l0aEZyYWN0aW9uIGhhbGZEZWx0YUxhc3QoZGVsdGFMYXN0RG91YmxlLCAxKTsK
KworICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgICAgICAvLyBleGFtaW5l
IHRoZSByZW1haW5kZXIgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgd2Ugc2hvdWxkIGJlIGNvbnNpZGVy
aW5nIHJvdW5kaW5nCisgICAgICAgICAgICAgICAgLy8gdXAgb3IgZG93bi4gSWYgcmVtYWFpbmRl
ciBpcyBwcmVjaXNlbHkgMC41IHJvdW5kaW5nIGlzIHRvIGV2ZW4uCisgICAgICAgICAgICAgICAg
aW50IGRDb21wYXJlUG9pbnQ1ID0gZnJhY3Rpb24uY29tcGFyZVBvaW50NSgpOworICAgICAgICAg
ICAgICAgIGlmIChkQ29tcGFyZVBvaW50NSA+IDAgfHwgIWRDb21wYXJlUG9pbnQ1ICYmIChyYWRp
eCAmIDEgPyBpc09kZEluT2RkUmFkaXggOiBkaWdpdCAmIDEpKSB7CisgICAgICAgICAgICAgICAg
ICAgIC8vIENoZWNrIGZvciByb3VuZGluZyB1cDsgYXJlIHdlIGNsb3NlciB0byB0aGUgdmFsdWUg
d2UnZCByb3VuZCBvZmYgdG8gdGhhbgorICAgICAgICAgICAgICAgICAgICAvLyB0aGUgbmV4dCBJ
RUVFIHZhbHVlIHdvdWxkIGJlPworICAgICAgICAgICAgICAgICAgICBpZiAoZnJhY3Rpb24uc3Vt
R3JlYXRlclRoYW5PbmUoaGFsZkRlbHRhTmV4dCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IG5lZWRzUm91bmRpbmdVcCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgIC8vIENoZWNrIGZvciByb3VuZGluZyBkb3duOyBhcmUgd2UgY2xvc2VyIHRv
IHRoZSB2YWx1ZSB3ZSdkIHJvdW5kIG9mZiB0byB0aGFuCisgICAgICAgICAgICAgICAgICAgIC8v
IHRoZSBwcmlvciBJRUVFIHZhbHVlIHdvdWxkIGJlPworICAgICAgICAgICAgICAgICAgICBpZiAo
ZnJhY3Rpb24gPCBoYWxmRGVsdGFMYXN0KQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgQVNTRVJUKGVuZE9mUmVzdWx0
U3RyaW5nIDwgKGJ1ZmZlciArIHNpemVvZihidWZmZXIpIC0gMSkpOworICAgICAgICAgICAgICAg
IC8vIFdyaXRlIGEgZGlnaXQgdG8gdGhlIHN0cmluZy4KKyAgICAgICAgICAgICAgICBmcmFjdGlv
biAqPSByYWRpeDsKKyAgICAgICAgICAgICAgICBkaWdpdCA9IGZyYWN0aW9uLmZsb29yQW5kU3Vi
dHJhY3QoKTsKKyAgICAgICAgICAgICAgICAqZW5kT2ZSZXN1bHRTdHJpbmcrKyA9IHJhZGl4RGln
aXRzW2RpZ2l0XTsKKyAgICAgICAgICAgICAgICAvLyBLZWVwIHRyYWNrIHdoZXRoZXIgdGhlIHBv
cnRpb24gd3JpdHRlbiBpcyBjdXJyZW50bHkgZXZlbiwgaWYgdGhlIHJhZGl4IGlzIG9kZC4KKyAg
ICAgICAgICAgICAgICBpZiAoZGlnaXQgJiAxKQorICAgICAgICAgICAgICAgICAgICBpc09kZElu
T2RkUmFkaXggPSAhaXNPZGRJbk9kZFJhZGl4OworCisgICAgICAgICAgICAgICAgLy8gU2hpZnQg
dGhlIGZyYWN0aW9ucyBieSByYWRpeC4KKyAgICAgICAgICAgICAgICBoYWxmRGVsdGFOZXh0ICo9
IHJhZGl4OworICAgICAgICAgICAgICAgIGhhbGZEZWx0YUxhc3QgKj0gcmFkaXg7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBUaGlzIGNvZGUgaXMgaWRl
bnRpY2FsIHRvIHRoYXQgYWJvdmUsIGV4Y2VwdCBzaW5jZSBkZWx0YU5leHREb3VibGUgIT0gZGVs
dGFMYXN0RG91YmxlCisgICAgICAgICAgICAvLyB3ZSBkb24ndCBuZWVkIHRvIHRyYWNrIHRoZXNl
IHR3byB2YWx1ZXMgc2VwYXJhdGVseS4KKyAgICAgICAgICAgIFVpbnQxNldpdGhGcmFjdGlvbiBo
YWxmRGVsdGEoZGVsdGFOZXh0RG91YmxlLCAxKTsKKworICAgICAgICAgICAgd2hpbGUgKHRydWUp
IHsKKyAgICAgICAgICAgICAgICBpbnQgZENvbXBhcmVQb2ludDUgPSBmcmFjdGlvbi5jb21wYXJl
UG9pbnQ1KCk7CisgICAgICAgICAgICAgICAgaWYgKGRDb21wYXJlUG9pbnQ1ID4gMCB8fCAhZENv
bXBhcmVQb2ludDUgJiYgKHJhZGl4ICYgMSA/IGlzT2RkSW5PZGRSYWRpeCA6IGRpZ2l0ICYgMSkp
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGZyYWN0aW9uLnN1bUdyZWF0ZXJUaGFuT25lKGhh
bGZEZWx0YSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRzUm91bmRpbmdVcCA9IHRy
dWU7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZnJhY3Rpb24gPCBoYWxmRGVsdGEpCisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgQVNTRVJUKGVuZE9mUmVz
dWx0U3RyaW5nIDwgKGJ1ZmZlciArIHNpemVvZihidWZmZXIpIC0gMSkpOworICAgICAgICAgICAg
ICAgIGZyYWN0aW9uICo9IHJhZGl4OworICAgICAgICAgICAgICAgIGRpZ2l0ID0gZnJhY3Rpb24u
Zmxvb3JBbmRTdWJ0cmFjdCgpOworICAgICAgICAgICAgICAgIGlmIChkaWdpdCAmIDEpCisgICAg
ICAgICAgICAgICAgICAgIGlzT2RkSW5PZGRSYWRpeCA9ICFpc09kZEluT2RkUmFkaXg7CisgICAg
ICAgICAgICAgICAgKmVuZE9mUmVzdWx0U3RyaW5nKysgPSByYWRpeERpZ2l0c1tkaWdpdF07CisK
KyAgICAgICAgICAgICAgICBoYWxmRGVsdGEgKj0gcmFkaXg7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICAvLyBDaGVjayBpZiB0aGUgZnJhY3Rpb24gbmVlZHMgcm91bmRpbmcg
b2ZmIChmbGFnIHNldCBpbiB0aGUgbG9vcCB3cml0aW5nIGRpZ2l0cywgYWJvdmUpLgorICAgICAg
ICBpZiAobmVlZHNSb3VuZGluZ1VwKSB7CisgICAgICAgICAgICAvLyBXaGlsc3QgdGhlIGxhc3Qg
ZGlnaXQgaXMgdGhlIG1heGltdW0gaW4gdGhlIGN1cnJlbnQgcmFkaXgsIHJlbW92ZSBpdC4KKyAg
ICAgICAgICAgIC8vIGUuZy4gcm91bmRpbmcgdXAgdGhlIGxhc3QgZGlnaXQgaW4gIjEyLjM5OTki
IGlzIHRoZSBzYW1lIGFzIHJvdW5kaW5nIHVwIHRoZQorICAgICAgICAgICAgLy8gbGFzdCBkaWdp
dCBpbiAiMTIuMyIgLSBib3RoIHJvdW5kIHVwIHRvICIxMi40Ii4KKyAgICAgICAgICAgIHdoaWxl
IChlbmRPZlJlc3VsdFN0cmluZ1stMV0gPT0gcmFkaXhEaWdpdHNbcmFkaXggLSAxXSkKKyAgICAg
ICAgICAgICAgICAtLWVuZE9mUmVzdWx0U3RyaW5nOworCisgICAgICAgICAgICAvLyBSYWRpeCBk
aWdpdHMgYXJlIHNlcXVlbnRpYWwgaW4gYXNjaWkvdW5pY29kZSwgZXhjZXB0IGZvciAnOScgYW5k
ICdhJy4KKyAgICAgICAgICAgIC8vIEUuZy4gdGhlIGZpcnN0ICdpZicgY2FzZSBoYW5kbGVzIHJv
dW5kaW5nIDY3Ljg5IHRvIDY3LjhhIGluIGJhc2UgMTYuCisgICAgICAgICAgICAvLyBUaGUgJ2Vs
c2UgaWYnIGNhc2UgaGFuZGxlcyByb3VuZGluZyBvZiBhbGwgb3RoZXIgZGlnaXRzLgorICAgICAg
ICAgICAgaWYgKGVuZE9mUmVzdWx0U3RyaW5nWy0xXSA9PSAnOScpCisgICAgICAgICAgICAgICAg
ZW5kT2ZSZXN1bHRTdHJpbmdbLTFdID0gJ2EnOworICAgICAgICAgICAgZWxzZSBpZiAoZW5kT2ZS
ZXN1bHRTdHJpbmdbLTFdICE9ICcuJykKKyAgICAgICAgICAgICAgICArK2VuZE9mUmVzdWx0U3Ry
aW5nWy0xXTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIC8vIE9uZSBvdGhl
ciBwb3NzaWJpbGl0eSAtIHRoZXJlIG1heSBiZSBubyBkaWdpdHMgdG8gcm91bmQgdXAgaW4gdGhl
IGZyYWN0aW9uCisgICAgICAgICAgICAgICAgLy8gKG9yIGFsbCBtYXkgYmUgYmVlbiByb3VuZGVk
IG9mZiBhbHJlYWR5KSwgaW4gd2hpY2ggY2FzZSB3ZSBtYXkgbmVlZCB0bworICAgICAgICAgICAg
ICAgIC8vIHJvdW5kIGludG8gdGhlIGludGVnZXIgcG9ydGlvbiBvZiB0aGUgbnVtYmVyLiBSZW1v
dmUgdGhlIGRlY2ltYWwgcG9pbnQuCisgICAgICAgICAgICAgICAgLS1lbmRPZlJlc3VsdFN0cmlu
ZzsKKyAgICAgICAgICAgICAgICAvLyBJbiBvcmRlciB0byBnZXQgaGVyZSB0aGVyZSBtdXN0IGhh
dmUgYmVlbiBhIG5vbi16ZXJvIGZyYWN0aW9uLCBpbiB3aGljaCBjYXNlCisgICAgICAgICAgICAg
ICAgLy8gdGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBvbmUgYml0IG9mIHRoZSB2YWx1ZSdzIG1hbnRp
c3NhIG5vdCBpbiB1c2UgaW4gdGhlCisgICAgICAgICAgICAgICAgLy8gaW50ZWdlciBwYXJ0IG9m
IHRoZSBudW1iZXIuIEFzIHN1Y2gsIGFkZGluZyB0byB0aGUgaW50ZWdlciBwYXJ0IHNob3VsZCBu
b3QKKyAgICAgICAgICAgICAgICAvLyBiZSBhYmxlIHRvIGxvc2UgcHJlY2lzaW9uLgorICAgICAg
ICAgICAgICAgIEFTU0VSVCgoaW50ZWdlclBhcnQgKyAxKSAtIGludGVnZXJQYXJ0ID09IDEpOwor
ICAgICAgICAgICAgICAgICsraW50ZWdlclBhcnQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAvLyBXZSBvbmx5IG5lZWQgdG8gY2hlY2sgZm9yIHRyYWlsaW5n
IHplcm9zIGlmIHRoZSB2YWx1ZSBkb2VzIG5vdCBnZXQgcm91bmRlZCB1cC4KKyAgICAgICAgICAg
IHdoaWxlIChlbmRPZlJlc3VsdFN0cmluZ1stMV0gPT0gJzAnKQorICAgICAgICAgICAgICAgIC0t
ZW5kT2ZSZXN1bHRTdHJpbmc7CisgICAgICAgIH0KKworICAgICAgICAqZW5kT2ZSZXN1bHRTdHJp
bmcgPSAnXDAnOworICAgICAgICBBU1NFUlQoZW5kT2ZSZXN1bHRTdHJpbmcgPCBidWZmZXIgKyBz
aXplb2YoYnVmZmVyKSk7CisgICAgfSBlbHNlCisgICAgICAgICpkZWNpbWFsUG9pbnQgPSAnXDAn
OworCisgICAgQmlnSW50ZWdlciB1bml0cyhpbnRlZ2VyUGFydCk7CisKKyAgICAvLyBBbHdheXMg
bG9vcCBhdCBsZWFzdCBvbmNlLCB0byBlbWl0IGF0IGxlYXN0ICcwJy4KKyAgICBkbyB7CisgICAg
ICAgIEFTU0VSVChidWZmZXIgPCBzdGFydE9mUmVzdWx0U3RyaW5nKTsKKworICAgICAgICAvLyBS
ZWFkIGEgc2luZ2xlIGRpZ2l0IGFuZCB3cml0ZSBpdCB0byB0aGUgZnJvbnQgb2YgdGhlIHN0cmlu
Zy4KKyAgICAgICAgLy8gRGl2aWRlIGJ5IHJhZGl4IHRvIHJlbW92ZSBvbmUgZGlnaXQgZnJvbSB0
aGUgdmFsdWUuCisgICAgICAgIGRpZ2l0ID0gdW5pdHMuZGl2aWRlKHJhZGl4KTsvL3N0YXRpY19j
YXN0PHVuc2lnbmVkPihmbW9kKGludGVnZXJQYXJ0LCByYWRpeCkpOworICAgICAgICAqLS1zdGFy
dE9mUmVzdWx0U3RyaW5nID0gcmFkaXhEaWdpdHNbZGlnaXRdOworICAgIH0gd2hpbGUgKCEhdW5p
dHMpOworCisgICAgLy8gSWYgdGhlIG51bWJlciBpcyBuZWdhdGl2ZSwgcHJlcGVuZCAnLScuCisg
ICAgaWYgKGlzTmVnYXRpdmUpCisgICAgICAgICotLXN0YXJ0T2ZSZXN1bHRTdHJpbmcgPSAnLSc7
CisgICAgQVNTRVJUKGJ1ZmZlciA8PSBzdGFydE9mUmVzdWx0U3RyaW5nKTsKKworICAgIHJldHVy
biBzdGFydE9mUmVzdWx0U3RyaW5nOworfQorCiAvLyB0b0V4cG9uZW50aWFsIGNvbnZlcnRzIGEg
bnVtYmVyIHRvIGEgc3RyaW5nLCBhbHdheXMgZm9ybWF0dGluZyBhcyBhbiBleHBvZW50aWFsLgog
Ly8gVGhpcyBtZXRob2QgdGFrZXMgYW4gb3B0aW9uYWwgYXJndW1lbnQgc3BlY2lmeWluZyBhIG51
bWJlciBvZiAqZGVjaW1hbCBwbGFjZXMqCiAvLyB0byByb3VuZCB0aGUgc2lnbmlmaWNhbmQgdG8g
KG9yLCBwdXQgYW5vdGhlciB3YXksIHRoaXMgbWV0aG9kIG9wdGlvbmFsbHkgcm91bmRzCkBAIC0y
MzgsMTUgKzc3MywxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3Rv
CiAgICAgaWYgKHJhZGl4ID09IDEwKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
U3RyaW5nKGV4ZWMsIHYudG9TdHJpbmcoZXhlYykpKTsKIAotICAgIHN0YXRpYyBjb25zdCBjaGFy
KiBjb25zdCBkaWdpdHMgPSAiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IjsK
LQogICAgIC8vIEZhc3QgcGF0aCBmb3IgbnVtYmVyIHRvIGNoYXJhY3RlciBjb252ZXJzaW9uLgog
ICAgIGlmIChyYWRpeCA9PSAzNikgewogICAgICAgICBpZiAodi5pc0ludDMyKCkpIHsKICAgICAg
ICAgICAgIGludCB4ID0gdi5hc0ludDMyKCk7CiAgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHgpIDwgMzYpIHsgLy8gRXhjbHVkZSBuZWdhdGl2ZXMKICAgICAgICAgICAgICAg
ICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOwotICAgICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFsRGF0YS0+c21hbGxTdHJpbmdz
LnNpbmdsZUNoYXJhY3RlclN0cmluZyhnbG9iYWxEYXRhLCBkaWdpdHNbeF0pKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGdsb2JhbERhdGEtPnNtYWxsU3RyaW5ncy5z
aW5nbGVDaGFyYWN0ZXJTdHJpbmcoZ2xvYmFsRGF0YSwgcmFkaXhEaWdpdHNbeF0pKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTI1NCw1MyArNzg3LDEyIEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG8KICAgICBpZiAocmFkaXggPCAyIHx8IHJh
ZGl4ID4gMzYpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlUmFuZ2VF
cnJvcihleGVjLCAidG9TdHJpbmcoKSByYWRpeCBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMiBh
bmQgMzYiKSk7CiAKLSAgICAvLyBJTlRfTUFYIHJlc3VsdHMgaW4gMTAyNCBjaGFyYWN0ZXJzIGxl
ZnQgb2YgdGhlIGRvdCB3aXRoIHJhZGl4IDIKLSAgICAvLyBnaXZlIHRoZSBzYW1lIHNwYWNlIG9u
IHRoZSByaWdodCBzaWRlLiBzYWZldHkgY2hlY2tzIGFyZSBpbiBwbGFjZQotICAgIC8vIHVubGVz
cyBzb21lb25lIGZpbmRzIGEgcHJlY2lzZSBydWxlLgotICAgIGNoYXIgc1syMDQ4ICsgM107Ci0g
ICAgY29uc3QgY2hhciogbGFzdENoYXJJblN0cmluZyA9IHMgKyBzaXplb2YocykgLSAxOwogICAg
IGRvdWJsZSB4ID0gdi51bmNoZWNrZWRHZXROdW1iZXIoKTsKICAgICBpZiAoIWlzZmluaXRlKHgp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIFVTdHJpbmc6
Om51bWJlcih4KSkpOwogCi0gICAgYm9vbCBpc05lZ2F0aXZlID0geCA8IDAuMDsKLSAgICBpZiAo
aXNOZWdhdGl2ZSkKLSAgICAgICAgeCA9IC14OwotCi0gICAgZG91YmxlIGludGVnZXJQYXJ0ID0g
Zmxvb3IoeCk7Ci0gICAgY2hhciogZGVjaW1hbFBvaW50ID0gcyArIHNpemVvZihzKSAvIDI7Ci0K
LSAgICAvLyBjb252ZXJ0IGludGVnZXIgcG9ydGlvbgotICAgIGNoYXIqIHAgPSBkZWNpbWFsUG9p
bnQ7Ci0gICAgZG91YmxlIGQgPSBpbnRlZ2VyUGFydDsKLSAgICBkbyB7Ci0gICAgICAgIGludCBy
ZW1haW5kZXJEaWdpdCA9IHN0YXRpY19jYXN0PGludD4oZm1vZChkLCByYWRpeCkpOwotICAgICAg
ICAqLS1wID0gZGlnaXRzW3JlbWFpbmRlckRpZ2l0XTsKLSAgICAgICAgZCAvPSByYWRpeDsKLSAg
ICB9IHdoaWxlICgoZCA8PSAtMS4wIHx8IGQgPj0gMS4wKSAmJiBzIDwgcCk7Ci0KLSAgICBpZiAo
aXNOZWdhdGl2ZSkKLSAgICAgICAgKi0tcCA9ICctJzsKLSAgICBjaGFyKiBzdGFydE9mUmVzdWx0
U3RyaW5nID0gcDsKLSAgICBBU1NFUlQocyA8PSBzdGFydE9mUmVzdWx0U3RyaW5nKTsKLQotICAg
IGQgPSB4IC0gaW50ZWdlclBhcnQ7Ci0gICAgcCA9IGRlY2ltYWxQb2ludDsKLSAgICBjb25zdCBk
b3VibGUgZXBzaWxvbiA9IDAuMDAxOyAvLyBUT0RPOiBndWVzc2VkLiBiYXNlIG9uIHJhZGl4ID8K
LSAgICBib29sIGhhc0ZyYWN0aW9uYWxQYXJ0ID0gKGQgPCAtZXBzaWxvbiB8fCBkID4gZXBzaWxv
bik7Ci0gICAgaWYgKGhhc0ZyYWN0aW9uYWxQYXJ0KSB7Ci0gICAgICAgICpwKysgPSAnLic7Ci0g
ICAgICAgIGRvIHsKLSAgICAgICAgICAgIGQgKj0gcmFkaXg7Ci0gICAgICAgICAgICBjb25zdCBp
bnQgZGlnaXQgPSBzdGF0aWNfY2FzdDxpbnQ+KGQpOwotICAgICAgICAgICAgKnArKyA9IGRpZ2l0
c1tkaWdpdF07Ci0gICAgICAgICAgICBkIC09IGRpZ2l0OwotICAgICAgICB9IHdoaWxlICgoZCA8
IC1lcHNpbG9uIHx8IGQgPiBlcHNpbG9uKSAmJiBwIDwgbGFzdENoYXJJblN0cmluZyk7Ci0gICAg
fQotICAgICpwID0gJ1wwJzsKLSAgICBBU1NFUlQocCA8IHMgKyBzaXplb2YocykpOwotCi0gICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBzdGFydE9mUmVzdWx0U3RyaW5n
KSk7CisgICAgUmFkaXhCdWZmZXIgczsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3Ry
aW5nKGV4ZWMsIHRvU3RyaW5nV2l0aFJhZGl4KHMsIHgsIHJhZGl4KSkpOwogfQogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEV4ZWNT
dGF0ZSogZXhlYykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99490</attachid>
            <date>2011-07-01 11:28:16 -0700</date>
            <delta_ts>2011-07-01 11:38:40 -0700</delta_ts>
            <desc>The patch</desc>
            <filename>16652.2.patch</filename>
            <type>text/plain</type>
            <size>49670</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTAyMDIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDYgQEAK
KzIwMTEtMDYtMzAgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY1MgorICAgICAgICBGaXJlZm94IGFu
ZCBKYXZhU2NyaXB0Q29yZSBkaWZmZXIgaW4gTnVtYmVyLnRvU3RyaW5nKGludGVnZXIpCisKKyAg
ICAgICAgT3VyIGFyYml0cmFyeSByYWRpeCAoMi4uMzYpIHRvU3RyaW5nIGNvbnZlcnNpb24gaXMg
aW5hY2N1cmF0ZS4KKyAgICAgICAgVGhpcyBpcyBwYXJ0bHkgYmVjYXVzZSBpdCB1c2VzIGRvdWJs
ZXMgdG8gcGVyZm9ybSBtYXRoIHRoYXQgcmVxdWlyZXMKKyAgICAgICAgaGlnaGVyIGFjY3VyYWN5
LCBhbmQgcGFydGx5IGJlY2FzdWUgaXQgZG9lcyBub3QgYXR0ZW1wdCB0byBjb3JyZWN0bHkKKyAg
ICAgICAgZGV0ZWN0IHdoZXJlIHRvIHRlcm1pbmF0ZSwgaW5zdGVhZCByZWx5aW5nIG9uIGEgc2lt
cGxlICdlcHNpbG9uJy4KKworICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6ZGVjb21wb3NlRG91YmxlKToKKyAgICAgICAgICAgIC0gaGVscGVyIGZ1
bmN0aW9uIHRvIGV4dHJhY3Qgc2lnbiwgZXhwb25lbnQsIG1hbnRpc3NhIGZyb20gSUVFRSBkb3Vi
bGVzLgorICAgICAgICAoSlNDOjpVaW50MTZXaXRoRnJhY3Rpb246OlVpbnQxNldpdGhGcmFjdGlv
bik6CisgICAgICAgICAgICAtIGhlbHBlciBjbGFzcywgdTE2aW50IHdpdGggaW5maW5pdGUgcHJl
Y2lzaW9uIGZyYWN0aW9uLCB1c2VkIHRvIGNvbnZlcnQKKyAgICAgICAgICAgICAgdGhlIGZyYWN0
aW9uYWwgcGFydCBvZiB0aGUgbnVtYmVyIHRvIGEgc3RyaW5nLgorICAgICAgICAoSlNDOjpVaW50
MTZXaXRoRnJhY3Rpb246Om9wZXJhdG9yKj0pOgorICAgICAgICAgICAgLSBNdWx0aXBseSBieSBh
IHVpbnQxNi4KKyAgICAgICAgKEpTQzo6VWludDE2V2l0aEZyYWN0aW9uOjpvcGVyYXRvcjwpOgor
ICAgICAgICAgICAgLSBDb21wYXJlIHR3byBVaW50MTZXaXRoRnJhY3Rpb25zLgorICAgICAgICAo
SlNDOjpVaW50MTZXaXRoRnJhY3Rpb246OmZsb29yQW5kU3VidHJhY3QpOgorICAgICAgICAgICAg
LSBFeHRyYWN0IHRoZSBpbnRlZ2VyIHBvcnRpb24gb2YgdGhlIG51bWJlciwgYW5kIHN1YnRyYWN0
IGl0IChjbGVhcnMgdGhlIGludGVnZXIgcG9ydGlvbikuCisgICAgICAgIChKU0M6OlVpbnQxNldp
dGhGcmFjdGlvbjo6Y29tcGFyZVBvaW50NSk6CisgICAgICAgICAgICAtIENvbXBhcmUgdG8gMC41
LgorICAgICAgICAoSlNDOjpVaW50MTZXaXRoRnJhY3Rpb246OnN1bUdyZWF0ZXJUaGFuT25lKToK
KyAgICAgICAgICAgIC0gUGFzc2VkIGEgc2Vjb25kIFVpbnQxNldpdGhGcmFjdGlvbiwgcmV0dXJu
cyB0cnVlIGlmIHRoZSByZXN1bHQgb2YgYWRkaW5nCisgICAgICAgICAgICAgIHRoZSB0d28gdmFs
dWVzIHdvdWxkIGJlIGdyZWF0ZXIgdGhhbiBvbmUuCisgICAgICAgIChKU0M6OlVpbnQxNldpdGhG
cmFjdGlvbjo6aXNOb3JtYWxpemVkKToKKyAgICAgICAgICAgIC0gVXNlZCBieSBBU1NFUlRzIHRv
IGNvbnNpc3RlbmN5IGNoZWNrIGludGVybmFsIHJlcHJlc2VudGF0aW9uLgorICAgICAgICAoSlND
OjpCaWdJbnRlZ2VyOjpCaWdJbnRlZ2VyKToKKyAgICAgICAgICAgIC0gaGVscGVyIGNsYXNzLCB1
bmJvdW5kZWQgaW50ZWdlciB2YWx1ZSwgdXNlZCB0byBjb252ZXJ0IHRoZSBpbnRlZ2VyIHBhcnQK
KyAgICAgICAgICAgICAgb2YgdGhlIG51bWJlciB0byBhIHN0cmluZy4KKyAgICAgICAgKEpTQzo6
QmlnSW50ZWdlcjo6ZGl2aWRlKToKKyAgICAgICAgICAgIC0gRGl2aWRlIHRoaXMgdmFsdWUgdGhy
b3VnaCBieSBhIHVpbnQzMi4KKyAgICAgICAgKEpTQzo6QmlnSW50ZWdlcjo6b3BlcmF0b3IhKToK
KyAgICAgICAgICAgIC0gdGVzdCBmb3IgemVyby4KKyAgICAgICAgKEpTQzo6dG9TdHJpbmdXaXRo
UmFkaXgpOgorICAgICAgICAgICAgLSBQZXJmb3JtcyBudW1iZXIgdG8gc3RyaW5nIGNvbnZlcnNp
b24sIHdpdGggdGhlIGdpdmVuIHJhZGl4ICgyLi4zNikuCisgICAgICAgIChKU0M6Om51bWJlclBy
b3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgICAgIC0gQ2hhbmdlZCB0byB1c2UgdG9TdHJpbmdX
aXRoUmFkaXguCisKIDIwMTEtMDYtMzAgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBCZXRoIERha2luLgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCShyZXZpc2lvbiA5MDIw
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTExMSw2ICsxMTEsNTQwIEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5F
IGJvb2wgZ2V0SW50ZWdlckFyZ3UKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorLy8gVGhlIGxhcmdl
c3QgZmluaXRlIGZsb2F0aW5nIHBvaW50IG51bWJlciBpcyAxLm1hbnRpc3NhICogMl4oMHg3ZmUt
MHgzZmYpLgorLy8gU2luY2UgMl5OIGluIGJpbmFyeSBpcyBhIG9uZSBiaXQgZm9sbG93ZWQgYnkg
TiB6ZXJvIGJpdHMuIDEgKiAyXjNmZiByZXF1aXJlcworLy8gYXQgbW9zdCAxMDI0IGNoYXJhY3Rl
cnMgdG8gdGhlIGxlZnQgb2YgYSBkZWNpbWFsIHBvaW50LCBpbiBiYXNlIDIgKDEwMjUgaWYKKy8v
IHdlIGluY2x1ZGUgYSBtaW51cyBzaWduKS4gRm9yIHRoZSBmcmFjdGlvbiwgYSB2YWx1ZSB3aXRo
IGFuIGV4cG9uZW50IG9mIDAKKy8vIGhhcyB1cCB0byA1MiBiaXRzIHRvIHRoZSByaWdodCBvZiB0
aGUgZGVjaW1hbCBwb2ludC4gIEVhY2ggZGVjcmVtZW50IG9mIHRoZQorLy8gZXhwb25lbnQgZG93
biB0byBhIG1pbmltdW0gb2YgLTB4M2ZlIGFkZHMgYW4gYWRkaXRpb25hbCBkaWdpdCB0byB0aGUg
bGVuZ3RoCisvLyBvZiB0aGUgZnJhY3Rpb24uIEFzIHN1Y2ggdGhlIG1heGltdW0gZnJhY3Rpb24g
c2l6ZSBpcyAxMDc1ICgxMDc2IGluY2x1ZGluZworLy8gYSBwb2ludCkuIFdlIHBpY2sgYSBidWZm
ZXIgc2l6ZSBzdWNoIHRoYXQgY2FuIHNpbXBseSBwbGFjZSB0aGUgcG9pbnQgaW4gdGhlCisvLyBj
ZW50ZXIgb2YgdGhlIGJ1ZmZlciwgYW5kIGFyZSBndWFyYW50ZWVkIHRvIGhhdmUgZW5vdWdoIHNw
YWNlIGluIGVhY2ggZGlyZWN0aW9uCisvLyBmbyBhbnkgbnVtYmVyIG9mIGRpZ2l0cyBhbiBJRUVF
IG51bWJlciBtYXkgcmVxdWlyZSB0byByZXByZXNlbnQuCit0eXBlZGVmIGNoYXIgUmFkaXhCdWZm
ZXJbMjE4MF07CisKKy8vIE1hcHBpbmcgZnJvbSBpbnRlZ2VycyAwLi4zNSB0byBkaWdpdCBpZGVu
dGlmeWluZyB0aGlzIHZhbHVlLCBmb3IgcmFkaXggMi4uMzYuCitzdGF0aWMgY29uc3QgY2hhciog
Y29uc3QgcmFkaXhEaWdpdHMgPSAiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6
IjsKKworLy8gQSB2YWx1ZSAxIGdyZWF0ZXIgdGhhbiBtYXggdWludDE2X3QuCisjZGVmaW5lIFVp
bnQxNkluZmluaXR5IDB4MTAwMDAKKworLy8gZGVjb21wb3NlICdudW1iZXInIHRvIGl0cyBzaWdu
LCBleHBvbmVudCwgYW5kIG1hbnRpc3NhIGNvbXBvbmVudHMuCisvLyBUaGUgcmVzdWx0IGlzIGlu
dGVycHJldGVkIGFzOgorLy8gICAgIChzaWduID8gLTEgOiAxKSAqIHBvdygyLCBleHBvbmVudCkg
KiAobWFudGlzc2EgLyAoMSA8PCA1MikpCitzdGF0aWMgdm9pZCBkZWNvbXBvc2VEb3VibGUoZG91
YmxlIG51bWJlciwgYm9vbCYgc2lnbiwgaW50MzJfdCYgZXhwb25lbnQsIHVpbnQ2NF90JiBtYW50
aXNzYSkKK3sKKyAgICBBU1NFUlQoaXNmaW5pdGUobnVtYmVyKSk7CisKKyAgICBzaWduID0gc2ln
bmJpdChudW1iZXIpOworCisgICAgdWludDY0X3QgYml0cyA9IFdURjo6Yml0d2lzZV9jYXN0PHVp
bnQ2NF90PihudW1iZXIpOworICAgIGV4cG9uZW50ID0gKHN0YXRpY19jYXN0PGludDMyX3Q+KGJp
dHMgPj4gNTIpICYgMHg3ZmYpIC0gMHgzZmY7CisgICAgbWFudGlzc2EgPSBiaXRzICYgMHhGRkZG
RkZGRkZGRkZGdWxsOworCisgICAgLy8gQ2hlY2sgZm9yIHplcm8vZGVub3JtYWwgdmFsdWVzOyBp
ZiBzbywgYWRqdXN0IHRoZSBleHBvbmVudCwKKyAgICAvLyBpZiBub3QgaW5zZXJ0IHRoZSBpbXBs
aWNpdCwgb21pdHRlZCBsZWFkaW5nIDEgYml0LgorICAgIGlmIChleHBvbmVudCA9PSAtMHgzZmYp
CisgICAgICAgIGV4cG9uZW50ID0gbWFudGlzc2EgPyAtMHgzZmUgOiAwOworICAgIGVsc2UKKyAg
ICAgICAgbWFudGlzc2EgfD0gMHgxMDAwMDAwMDAwMDAwMHVsbDsKK30KKworLy8gQSB1aW50MTZf
dCB3aXRoIGFuIGluZmluaXRlIHByZWNpc2lvbiBmcmFjdGlvbi4gVXBvbiBvdmVyZmxvd2luZwor
Ly8gdGhlIHVpbnQxNl90IHJhbmdlLCB0aGlzIGNsYXNzIHdpbGwgY2xhbXAgdG8gVWludDE2SW5m
aW5pdHkuCisvLyBUaGlzIGlzIHVzZWQgaW4gY29udmVydGluZyB0aGUgZnJhY3Rpb24gcGFydCBv
ZiBhIG51bWJlciB0byBhIHN0cmluZy4KK2NsYXNzIFVpbnQxNldpdGhGcmFjdGlvbiB7CitwdWJs
aWM6CisgICAgZXhwbGljaXQgVWludDE2V2l0aEZyYWN0aW9uKGRvdWJsZSBudW1iZXIsIHVpbnQx
Nl90IGRpdmlkZUJ5RXhwb25lbnQgPSAwKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG51bWJlciAm
JiBpc2Zpbml0ZShudW1iZXIpICYmICFzaWduYml0KG51bWJlcikpOworCisgICAgICAgIC8vIENo
ZWNrIGZvciB2YWx1ZXMgb3V0IG9mIHVpbnQxNl90IHJhbmdlLgorICAgICAgICBpZiAobnVtYmVy
ID49IFVpbnQxNkluZmluaXR5KSB7CisgICAgICAgICAgICBtX3ZhbHVlcy5hcHBlbmQoVWludDE2
SW5maW5pdHkpOworICAgICAgICAgICAgbV9sZWFkaW5nWmVyb3MgPSAwOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gQXBwZW5kIHRoZSB1bml0cyB0byBtX3Zh
bHVlcy4KKyAgICAgICAgZG91YmxlIGludGVnZXJQYXJ0ID0gZmxvb3IobnVtYmVyKTsKKyAgICAg
ICAgbV92YWx1ZXMuYXBwZW5kKHN0YXRpY19jYXN0PHVpbnQzMl90PihpbnRlZ2VyUGFydCkpOwor
CisgICAgICAgIGJvb2wgc2lnbjsKKyAgICAgICAgaW50MzJfdCBleHBvbmVudDsKKyAgICAgICAg
dWludDY0X3QgbWFudGlzc2E7CisgICAgICAgIGRlY29tcG9zZURvdWJsZShudW1iZXIgLSBpbnRl
Z2VyUGFydCwgc2lnbiwgZXhwb25lbnQsIG1hbnRpc3NhKTsKKyAgICAgICAgQVNTRVJUKCFzaWdu
ICYmIGV4cG9uZW50IDwgMCk7CisgICAgICAgIGV4cG9uZW50IC09IGRpdmlkZUJ5RXhwb25lbnQ7
CisKKyAgICAgICAgaW50MzJfdCB6ZXJvQml0cyA9IC1leHBvbmVudDsKKyAgICAgICAgLS16ZXJv
Qml0czsKKworICAgICAgICAvLyBBcHBlbmQgdGhlIGFwcGVuZCB3b3JkcyBmb3IgdG8gbV92YWx1
ZXMuCisgICAgICAgIHdoaWxlICh6ZXJvQml0cyA+PSAzMikgeworICAgICAgICAgICAgbV92YWx1
ZXMuYXBwZW5kKDApOworICAgICAgICAgICAgemVyb0JpdHMgLT0gMzI7CisgICAgICAgIH0KKwor
ICAgICAgICAvLyBMZWZ0IGFsaWduIHRoZSA1MyBiaXRzIG9mIHRoZSBtYW50aXNzYSB3aXRoaW4g
OTYgYml0cy4KKyAgICAgICAgdWludDMyX3QgdmFsdWVzWzNdOworICAgICAgICB2YWx1ZXNbMF0g
PSBzdGF0aWNfY2FzdDx1aW50MzJfdD4obWFudGlzc2EgPj4gMjEpOworICAgICAgICB2YWx1ZXNb
MV0gPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4obWFudGlzc2EgPDwgMTEpOworICAgICAgICB2YWx1
ZXNbMl0gPSAwOworICAgICAgICAvLyBTaGlmdCBiYXNlZCBvbiB0aGUgcmVtYWluZGVyIG9mIHRo
ZSBleHBvbmVudC4KKyAgICAgICAgaWYgKHplcm9CaXRzKSB7CisgICAgICAgICAgICB2YWx1ZXNb
Ml0gPSB2YWx1ZXNbMV0gPDwgKDMyIC0gemVyb0JpdHMpOworICAgICAgICAgICAgdmFsdWVzWzFd
ID0gKHZhbHVlc1sxXSA+PiB6ZXJvQml0cykgfCAodmFsdWVzWzBdIDw8ICgzMiAtIHplcm9CaXRz
KSk7CisgICAgICAgICAgICB2YWx1ZXNbMF0gPSAodmFsdWVzWzBdID4+IHplcm9CaXRzKTsKKyAg
ICAgICAgfQorICAgICAgICBtX3ZhbHVlcy5hcHBlbmQodmFsdWVzWzBdKTsKKyAgICAgICAgbV92
YWx1ZXMuYXBwZW5kKHZhbHVlc1sxXSk7CisgICAgICAgIG1fdmFsdWVzLmFwcGVuZCh2YWx1ZXNb
Ml0pOworCisgICAgICAgIC8vIENhbm9uaWNhbGl6ZTsgcmVtb3ZlIGFueSB0cmFpbGluZyB6ZXJv
cy4KKyAgICAgICAgd2hpbGUgKG1fdmFsdWVzLnNpemUoKSA+IDEgJiYgIW1fdmFsdWVzLmxhc3Qo
KSkKKyAgICAgICAgICAgIG1fdmFsdWVzLnJlbW92ZUxhc3QoKTsKKworICAgICAgICAvLyBDb3Vu
dCB0aGUgbnVtYmVyIG9mIGxlYWRpbmcgemVybywgdGhpcyBpcyB1c2VmdWwgaW4gb3B0aW1pemlu
ZyBtdWx0aXBsaWVzLgorICAgICAgICBtX2xlYWRpbmdaZXJvcyA9IDA7CisgICAgICAgIHdoaWxl
IChtX2xlYWRpbmdaZXJvcyA8IG1fdmFsdWVzLnNpemUoKSAmJiAhbV92YWx1ZXNbbV9sZWFkaW5n
WmVyb3NdKQorICAgICAgICAgICAgKyttX2xlYWRpbmdaZXJvczsKKyAgICB9CisKKyAgICBVaW50
MTZXaXRoRnJhY3Rpb24mIG9wZXJhdG9yKj0odWludDE2X3QgbXVsdGlwbGllcikKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChpc05vcm1hbGl6ZWQoKSk7CisKKyAgICAgICAgLy8gaXRlcmF0YXRlIGJh
Y2t3YXJkcyBvdmVyIHRoZSBmcmFjdGlvbiB1bnRpbCB3ZSByZWFjaCB0aGUgbGVhZGluZyB6ZXJv
cywKKyAgICAgICAgLy8gcGFzc2luZyB0aGUgY2FycnkgZnJvbSBvbmUgY2FsY3VsYXRpb24gaW50
byB0aGUgbmV4dC4KKyAgICAgICAgdWludDY0X3QgYWNjdW11bGF0b3IgPSAwOworICAgICAgICBm
b3IgKHNpemVfdCBpID0gbV92YWx1ZXMuc2l6ZSgpOyBpID4gbV9sZWFkaW5nWmVyb3M7ICkgewor
ICAgICAgICAgICAgLS1pOworICAgICAgICAgICAgYWNjdW11bGF0b3IgKz0gc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KG1fdmFsdWVzW2ldKSAqIHN0YXRpY19jYXN0PHVpbnQ2NF90PihtdWx0aXBsaWVy
KTsKKyAgICAgICAgICAgIG1fdmFsdWVzW2ldID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGFjY3Vt
dWxhdG9yKTsKKyAgICAgICAgICAgIGFjY3VtdWxhdG9yID4+PSAzMjsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICghbV9sZWFkaW5nWmVyb3MpIHsKKyAgICAgICAgICAgIC8vIFdpdGggYSBtdWx0
aXBsaWNhbmQgYW5kIG11bHRpcGxpZXIgaW4gdGhlIHVpbnQxNl90IHJhbmdlLCB0aGlzIGNhbm5v
dCBjYXJyeQorICAgICAgICAgICAgLy8gKGV2ZW4gYWxsb3dpbmcgZm9yIHRoZSBpbmZpbml0eSB2
YWx1ZSkuCisgICAgICAgICAgICBBU1NFUlQoIWFjY3VtdWxhdG9yKTsKKyAgICAgICAgICAgIC8v
IENoZWNrIGZvciBvdmVyZmxvdyAmIGNsYW1wIHRvICdpbmZpbml0eScuCisgICAgICAgICAgICBp
ZiAobV92YWx1ZXNbMF0gPj0gVWludDE2SW5maW5pdHkpIHsKKyAgICAgICAgICAgICAgICBtX3Zh
bHVlcy5zaHJpbmsoMSk7CisgICAgICAgICAgICAgICAgbV92YWx1ZXNbMF0gPSBVaW50MTZJbmZp
bml0eTsKKyAgICAgICAgICAgICAgICBtX2xlYWRpbmdaZXJvcyA9IDA7CisgICAgICAgICAgICAg
ICAgcmV0dXJuICp0aGlzOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGFjY3Vt
dWxhdG9yKSB7CisgICAgICAgICAgICAvLyBDaGVjayBmb3IgY2FycnkgZnJvbSB0aGUgbGFzdCBt
dWx0aXBseSwgaWYgc28gb3ZlcndyaXRlIGxhc3QgbGVhZGluZyB6ZXJvLgorICAgICAgICAgICAg
bV92YWx1ZXNbLS1tX2xlYWRpbmdaZXJvc10gPSBhY2N1bXVsYXRvcjsKKyAgICAgICAgICAgIC8v
IFRoZSBsaW1pdGVkIHJhbmdlIG9mIHRoZSBtdWx0aXBsaWVyIHNob3VsZCBtZWFuIHRoYXQgZXZl
biBpZiB3ZSBjYXJyeSBpbnRvCisgICAgICAgICAgICAvLyB0aGUgdW5pdHMsIHdlIGRvbid0IG5l
ZWQgdG8gY2hlY2sgZm9yIG92ZXJmbG93IG9mIHRoZSB1aW50MTZfdCByYW5nZS4KKyAgICAgICAg
ICAgIEFTU0VSVChtX3ZhbHVlc1swXSA8IFVpbnQxNkluZmluaXR5KTsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIE11bHRpcGxpY2F0aW9uIGJ5IGFuIGV2ZW4gdmFsdWUgbWF5IGludHJvZHVjZSB0
cmFpbGluZyB6ZXJvczsgaWYgc28sIGNsZWFuIHRoZW0KKyAgICAgICAgLy8gdXAuIChLZWVwaW5n
IHRoZSB2YWx1ZSBpbiBhIG5vcm1hbGl6ZWQgZm9ybSBtYWtlcyBzb21lIG9mIHRoZSBjb21wYXJp
c29uIG9wZXJhdGlvbnMKKyAgICAgICAgLy8gbW9yZSBlZmZpY2llbnQpLgorICAgICAgICB3aGls
ZSAobV92YWx1ZXMuc2l6ZSgpID4gMSAmJiAhbV92YWx1ZXMubGFzdCgpKQorICAgICAgICAgICAg
bV92YWx1ZXMucmVtb3ZlTGFzdCgpOworICAgICAgICBBU1NFUlQoaXNOb3JtYWxpemVkKCkpOwor
ICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvcjwoY29uc3Qg
VWludDE2V2l0aEZyYWN0aW9uJiBvdGhlcikKKyAgICB7CisgICAgICAgIEFTU0VSVChpc05vcm1h
bGl6ZWQoKSk7CisgICAgICAgIEFTU0VSVChvdGhlci5pc05vcm1hbGl6ZWQoKSk7CisKKyAgICAg
ICAgLy8gSXRlcmF0ZSBvdmVyIHRoZSBjb21tb24gbGVuZ3RocyBvZiBhcnJheXMuCisgICAgICAg
IHNpemVfdCBtaW5TaXplID0gc3RkOjptaW4obV92YWx1ZXMuc2l6ZSgpLCBvdGhlci5tX3ZhbHVl
cy5zaXplKCkpOworICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbWluU2l6
ZTsgKytpbmRleCkgeworICAgICAgICAgICAgLy8gSWYgd2UgZmluZCBhIHZhbHVlIHRoYXQgaXMg
bm90IGVxdWFsLCBjb21wYXJlIGFuZCByZXR1cm4uCisgICAgICAgICAgICB1aW50MzJfdCBmcm9t
VGhpcyA9IG1fdmFsdWVzW2luZGV4XTsKKyAgICAgICAgICAgIHVpbnQzMl90IGZyb21PdGhlciA9
IG90aGVyLm1fdmFsdWVzW2luZGV4XTsKKyAgICAgICAgICAgIGlmIChmcm9tVGhpcyAhPSBmcm9t
T3RoZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZyb21UaGlzIDwgZnJvbU90aGVyOworICAg
ICAgICB9CisgICAgICAgIC8vIElmIHRoZXNlIG51bWJlcnMgaGF2ZSB0aGUgc2FtZSBsZW5ndGhz
LCB0aGV5IGFyZSBlcXVhbCwKKyAgICAgICAgLy8gb3RoZXJ3aXNlIHdoaWNoIGV2ZXIgbnVtYmVy
IGhhcyBhIGxvbmdlciBmcmFjdGlvbiBpbiBsYXJnZXIuCisgICAgICAgIHJldHVybiBvdGhlci5t
X3ZhbHVlcy5zaXplKCkgPiBtaW5TaXplOworICAgIH0KKworICAgIC8vIFJldHVybiB0aGUgZmxv
b3IgKG5vbi1mcmFjdGlvbmFsIHBvcnRpb24pIG9mIHRoZSBudW1iZXIsIGNsZWFyaW5nIHRoaXMg
dG8gemVybywKKyAgICAvLyBsZWF2aW5nIHRoZSBmcmFjdGlvbmFsIHBhcnQgdW5jaGFuZ2VkLgor
ICAgIHVpbnQzMl90IGZsb29yQW5kU3VidHJhY3QoKQorICAgIHsKKyAgICAgICAgLy8gJ2Zsb29y
JyBpcyBzaW1wbGUgdGhlIGludGVnZXIgcG9ydGlvbiBvZiB0aGUgdmFsdWUuCisgICAgICAgIHVp
bnQzMl90IGZsb29yID0gbV92YWx1ZXNbMF07CisKKyAgICAgICAgLy8gSWYgZmxvb3IgaXMgbm9u
LXplcm8sIAorICAgICAgICBpZiAoZmxvb3IpIHsKKyAgICAgICAgICAgIG1fdmFsdWVzWzBdID0g
MDsKKyAgICAgICAgICAgIG1fbGVhZGluZ1plcm9zID0gMTsKKyAgICAgICAgICAgIHdoaWxlICht
X2xlYWRpbmdaZXJvcyA8IG1fdmFsdWVzLnNpemUoKSAmJiAhbV92YWx1ZXNbbV9sZWFkaW5nWmVy
b3NdKQorICAgICAgICAgICAgICAgICsrbV9sZWFkaW5nWmVyb3M7CisgICAgICAgIH0KKworICAg
ICAgICByZXR1cm4gZmxvb3I7CisgICAgfQorCisgICAgLy8gQ29tcGFyZSB0aGlzIHZhbHVlIHRv
IDAuNSwgcmV0dXJucyAtMSBmb3IgbGVzcyB0aGFuLCAwIGZvciBlcXVhbCwgMSBmb3IgZ3JlYXRl
ci4KKyAgICBpbnQgY29tcGFyZVBvaW50NSgpCisgICAgeworICAgICAgICBBU1NFUlQoaXNOb3Jt
YWxpemVkKCkpOworICAgICAgICAvLyBJZiB1bml0cyAhPSAwLCB0aGlzIGlzIGdyZWF0ZXIgdGhh
biAwLjUuCisgICAgICAgIGlmIChtX3ZhbHVlc1swXSkKKyAgICAgICAgICAgIHJldHVybiAxOwor
ICAgICAgICAvLyBJZiBzaXplID09IDEgdGhpcyB2YWx1ZSBpcyAwLCBoZW5jZSA8IDAuNS4KKyAg
ICAgICAgaWYgKG1fdmFsdWVzLnNpemUoKSA9PSAxKQorICAgICAgICAgICAgcmV0dXJuIC0xOwor
ICAgICAgICAvLyBDb21wYXJlIHRvIDAuNS4KKyAgICAgICAgaWYgKG1fdmFsdWVzWzFdID4gMHg4
MDAwMDAwMHVsKQorICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGlmIChtX3ZhbHVlc1sx
XSA8IDB4ODAwMDAwMDB1bCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgLy8gQ2hl
Y2sgZm9yIG1vcmUgd29yZHMgLSBzaW5jZSBub3JtYWxpemVkIG51bWJlcnMgaGF2ZSBubyB0cmFp
bGluZyB6ZXJvcywgaWYKKyAgICAgICAgLy8gdGhlcmUgYXJlIG1vcmUgdGhhdCB0d28gZGlnaXRz
IHdlIGNhbiBhc3N1bWUgYXQgbGVhc3Qgb25lIG1vcmUgaXMgbm9uLXplcm8sCisgICAgICAgIC8v
IGFuZCBoZW5jZSB0aGUgdmFsdWUgaXMgPiAwLjUuCisgICAgICAgIHJldHVybiBtX3ZhbHVlcy5z
aXplKCkgPiAyID8gMSA6IDA7CisgICAgfQorCisgICAgLy8gUmV0dXJuIHRydWUgaWYgdGhlIHN1
bSBvZiB0aGlzIHBsdXMgYWRkZW5kIHdvdWxkIGJlIGdyZWF0ZXIgdGhhbiAxLgorICAgIGJvb2wg
c3VtR3JlYXRlclRoYW5PbmUoY29uc3QgVWludDE2V2l0aEZyYWN0aW9uJiBhZGRlbmQpIAorICAg
IHsKKyAgICAgICAgQVNTRVJUKGlzTm9ybWFsaXplZCgpKTsKKyAgICAgICAgQVNTRVJUKGFkZGVu
ZC5pc05vcm1hbGl6ZWQoKSk7CisKKyAgICAgICAgLy8gRmlyc3QsIHN1bSB0aGUgdW5pdHMuICBJ
ZiB0aGUgcmVzdWx0IGlzIGdyZWF0ZXIgdGhhbiBvbmUsIHJldHVybiB0cnVlLgorICAgICAgICAv
LyBJZiBlcXVhbCB0byBvbmUsIHJldHVybiB0cnVlIGlmIGVpdGhlciBudW1iZXIgaGFzIGEgZnJh
Y3Rpb25hbCBwYXJ0LgorICAgICAgICB1aW50MzJfdCBzdW0gPSBtX3ZhbHVlc1swXSArIGFkZGVu
ZC5tX3ZhbHVlc1swXTsKKyAgICAgICAgaWYgKHN1bSkKKyAgICAgICAgICAgIHJldHVybiBzdW0g
PiAxIHx8IHN0ZDo6bWF4KG1fdmFsdWVzLnNpemUoKSwgYWRkZW5kLm1fdmFsdWVzLnNpemUoKSkg
PiAxOworCisgICAgICAgIC8vIFdlIGNvdWxkIHN0aWxsIHByb2R1Y2UgYSByZXN1bHQgZ3JlYXRl
ciB0aGFuIHplcm8gaWYgYWRkaXRpb24gb2YgdGhlIG5leHQKKyAgICAgICAgLy8gd29yZCBmcm9t
IHRoZSBmcmFjdGlvbiB3ZXJlIHRvIGNhcnJ5LCBsZWF2aW5nIGEgcmVzdWx0ID4gMC4KKworICAg
ICAgICAvLyBJdGVyYXRlIG92ZXIgdGhlIGNvbW1vbiBsZW5ndGhzIG9mIGFycmF5cy4KKyAgICAg
ICAgc2l6ZV90IG1pblNpemUgPSBzdGQ6Om1pbihtX3ZhbHVlcy5zaXplKCksIGFkZGVuZC5tX3Zh
bHVlcy5zaXplKCkpOworICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDE7IGluZGV4IDwgbWlu
U2l6ZTsgKytpbmRleCkgeworICAgICAgICAgICAgLy8gU3VtIHRoZSBuZXh0IHdvcmQgZnJvbSB0
aGlzICYgdGhlIGFkZGVuZC4KKyAgICAgICAgICAgIHVpbnQzMl90IGZyb21UaGlzID0gbV92YWx1
ZXNbaW5kZXhdOworICAgICAgICAgICAgdWludDMyX3QgZnJvbUFkZGVuZCA9IGFkZGVuZC5tX3Zh
bHVlc1tpbmRleF07CisgICAgICAgICAgICBzdW0gPSBmcm9tVGhpcyArIGZyb21BZGRlbmQ7CisK
KyAgICAgICAgICAgIC8vIENoZWNrIGZvciBvdmVyZmxvdy4gSWYgc28sIGNoZWNrIHdoZXRoZXIg
dGhlIHJlbWFpbmluZyByZXN1bHQgaXMgbm9uLXplcm8sCisgICAgICAgICAgICAvLyBvciBpZiB0
aGVyZSBhcmUgYW55IGZ1cnRoZXIgd29yZHMgaW4gdGhlIGZyYWN0aW9uLgorICAgICAgICAgICAg
aWYgKHN1bSA8IGZyb21UaGlzKQorICAgICAgICAgICAgICAgIHJldHVybiBzdW0gfHwgKGluZGV4
ICsgMSkgPCBzdGQ6Om1heChtX3ZhbHVlcy5zaXplKCksIGFkZGVuZC5tX3ZhbHVlcy5zaXplKCkp
OworCisgICAgICAgICAgICAvLyBJZiB0aGUgc3VtIGlzIHVpbnQzMl90IG1heCwgdGhlbiB3ZSB3
b3VsZCBjYXJyeSBhIDEgaWYgYWRkaXRpb24gb2YgdGhlIG5leHQKKyAgICAgICAgICAgIC8vIGRp
Z2l0cyBpbiB0aGUgbnVtYmVyIHdlcmUgdG8gb3ZlcmZsb3cuCisgICAgICAgICAgICBpZiAoc3Vt
ICE9IDB4RkZGRkZGRkYpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgYm9vbCBpc05v
cm1hbGl6ZWQoKSBjb25zdAorICAgIHsKKyAgICAgICAgLy8gQWxsIHZhbHVlcyBzaG91bGQgaGF2
ZSBhdCBsZWFzdCBvbmUgdmFsdWUuCisgICAgICAgIHJldHVybiAobV92YWx1ZXMuc2l6ZSgpKQor
ICAgICAgICAgICAgLy8gVGhlIHVuaXRzIHZhbHVlIG11c3QgYmUgYSB1aW50MTZfdCwgb3IgdGhl
IHZhbHVlIGlzIHRoZSBvdmVyZmxvdyB2YWx1ZS4KKyAgICAgICAgICAgICYmIChtX3ZhbHVlc1sw
XSA8IFVpbnQxNkluZmluaXR5IHx8IChtX3ZhbHVlc1swXSA9PSBVaW50MTZJbmZpbml0eSAmJiBt
X3ZhbHVlcy5zaXplKCkgPT0gMSkpCisgICAgICAgICAgICAvLyBUaGVyZSBzaG91bGQgYmUgbm8g
dHJhaWxpbmcgemVyb3MgKHVubGVzcyB0aGlzIHZhbHVlIGlzIHplcm8hKS4KKyAgICAgICAgICAg
ICYmIChtX3ZhbHVlcy5sYXN0KCkgfHwgbV92YWx1ZXMuc2l6ZSgpID09IDEpOworICAgIH0KKwor
ICAgIC8vIFRoZSBpbnRlcm5hbCBzdG9yYWdlIG9mIHRoZSBudW1iZXIuIFRoaXMgdmVjdG9yIGlz
IGFsd2F5cyBhdCBsZWFzdCBvbmUgZW50cnkgaW4gc2l6ZSwKKyAgICAvLyB3aXRoIHRoZSBmaXJz
dCBlbnRyeSBob2xkaW5nIHRoZSBwb3J0aW9uIG9mIHRoZSBudW1iZXIgZ3JlYXRlciB0aGFuIHpl
cm8uIFRoZSBmaXJzdAorICAgIC8vIHZhbHVlIGFsd2F5cyBob2xkIGEgdmFsdWUgaW4gdGhlIHVp
bnQxNl90IHJhbmdlLCBvciBob2xkcyB0aGUgdmFsdWUgVWludDE2SW5maW5pdHkgdG8KKyAgICAv
LyBpbmRpY2F0ZSB0aGUgdmFsdWUgaGFzIG92ZXJmbG93ZWQgdG8gPj0gMHgxMDAwMC4gSWYgdGhl
IHVuaXRzIHZhbHVlIGlzIFVpbnQxNkluZmluaXR5LAorICAgIC8vIHRoZXJlIGNhbiBiZSBubyBm
cmFjdGlvbiAoc2l6ZSBtdXN0IGJlIDEpLgorICAgIC8vCisgICAgLy8gU3Vic2VxdWVudCB2YWx1
ZXMgaW4gdGhlIGFycmF5IHJlcHJlc2VudCBwb3J0aW9ucyBvZiB0aGUgZnJhY3Rpb25hbCBwYXJ0
IG9mIHRoaXMgbnVtYmVyLgorICAgIC8vIFRoZSB0b3RhbCB2YWx1ZSBvZiB0aGUgbnVtYmVyIGlz
IHRoZSBzdW0gb2YgKG1fdmFsdWVzW2ldIC8gcG93KDJeMzIsIGkpKSwgZm9yIGVhY2ggaQorICAg
IC8vIGluIHRoZSBhcnJheS4gVGhlIHZlY3RvciBzaG91bGQgY29udGFpbiBubyB0cmFpbGluZyB6
ZXJvcywgZXhjZXB0IGZvciB0aGUgdmFsdWUgJzAnLAorICAgIC8vIHJlcHJlc2VudGVkIGJ5IGEg
dmVjdG9yIGNvbnRpYW5pbmcgYSBzaW5nbGUgemVybyB2YWx1ZS4gIFRoZXNlIGNvbnN0cmFpbnRz
IGFyZSBjaGVja2VkCisgICAgLy8gYnkgJ2lzTm9ybWFsaXplZCgpJywgYWJvdmUuCisgICAgLy8K
KyAgICAvLyBUaGUgaW5saW5lIGNhcGFjaXR5IG9mIHRoZSB2ZWN0b3IgaXMgc2V0IHRvIGJlIGFi
bGUgdG8gY29udGFpbiBhbnkgSUVFRSBkb3VibGUgKDEgZm9yCisgICAgLy8gdGhlIHVuaXRzIGNv
bHVtbiwgMzIgZm9yIHplcm9zIGludHJvZHVjZWQgZHVlIHRvIGFuIGV4cG9uZW50IHVwIHRvIC0z
RkUsIGFuZCAyIGZvcgorICAgIC8vIGJpdHMgdGFrZW4gZnJvbSB0aGUgbWFudGlzc2EpLgorICAg
IFZlY3Rvcjx1aW50MzJfdCwgMzY+IG1fdmFsdWVzOworCisgICAgLy8gQ2FjaGUgYSBjb3VudCBv
ZiB0aGUgbnVtYmVyIG9mIGxlYWRpbmcgemVyb3MgaW4gbV92YWx1ZXMuIFdlIGNhbiB1c2UgdGhp
cyB0byBvcHRpbWl6ZQorICAgIC8vIG1ldGhvZHMgdGhhdCB3b3VsZCBvdGhlcndpc2UgbmVlZCB2
aXNpdCBhbGwgd29yZHMgaW4gdGhlIHZlY3RvciwgZS5nLiBtdWx0aXBsaWNhdGlvbi4KKyAgICBz
aXplX3QgbV9sZWFkaW5nWmVyb3M7Cit9OworCisvLyBUaGlzIGlzIHVzZWQgaW4gY29udmVydGlu
ZyB0aGUgaW50ZWdlciBwYXJ0IG9mIGEgbnVtYmVyIHRvIGEgc3RyaW5nLgorY2xhc3MgQmlnSW50
ZWdlciB7CitwdWJsaWM6CisgICAgQmlnSW50ZWdlcihkb3VibGUgbnVtYmVyKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKGlzZmluaXRlKG51bWJlcikgJiYgIXNpZ25iaXQobnVtYmVyKSk7CisgICAg
ICAgIEFTU0VSVChudW1iZXIgPT0gZmxvb3IobnVtYmVyKSk7CisKKyAgICAgICAgYm9vbCBzaWdu
OworICAgICAgICBpbnQzMl90IGV4cG9uZW50OworICAgICAgICB1aW50NjRfdCBtYW50aXNzYTsK
KyAgICAgICAgZGVjb21wb3NlRG91YmxlKG51bWJlciwgc2lnbiwgZXhwb25lbnQsIG1hbnRpc3Nh
KTsKKyAgICAgICAgQVNTRVJUKCFzaWduICYmIGV4cG9uZW50ID49IDApOworCisgICAgICAgIGlu
dDMyX3QgemVyb0JpdHMgPSBleHBvbmVudCAtIDUyOworCisgICAgICAgIGlmICh6ZXJvQml0cyA8
IDApIHsKKyAgICAgICAgICAgIG1hbnRpc3NhID4+PSAtemVyb0JpdHM7CisgICAgICAgICAgICB6
ZXJvQml0cyA9IDA7CisgICAgICAgIH0KKworICAgICAgICB3aGlsZSAoemVyb0JpdHMgPj0gMzIp
IHsKKyAgICAgICAgICAgIG1fdmFsdWVzLmFwcGVuZCgwKTsKKyAgICAgICAgICAgIHplcm9CaXRz
IC09IDMyOworICAgICAgICB9CisKKyAgICAgICAgLy8gTGVmdCBhbGlnbiB0aGUgNTMgYml0cyBv
ZiB0aGUgbWFudGlzc2Egd2l0aGluIDk2IGJpdHMuCisgICAgICAgIHVpbnQzMl90IHZhbHVlc1sz
XTsKKyAgICAgICAgdmFsdWVzWzBdID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1hbnRpc3NhKTsK
KyAgICAgICAgdmFsdWVzWzFdID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1hbnRpc3NhID4+IDMy
KTsKKyAgICAgICAgdmFsdWVzWzJdID0gMDsKKyAgICAgICAgLy8gU2hpZnQgYmFzZWQgb24gdGhl
IHJlbWFpbmRlciBvZiB0aGUgZXhwb25lbnQuCisgICAgICAgIGlmICh6ZXJvQml0cykgeworICAg
ICAgICAgICAgdmFsdWVzWzJdID0gdmFsdWVzWzFdID4+ICgzMiAtIHplcm9CaXRzKTsKKyAgICAg
ICAgICAgIHZhbHVlc1sxXSA9ICh2YWx1ZXNbMV0gPDwgemVyb0JpdHMpIHwgKHZhbHVlc1swXSA+
PiAoMzIgLSB6ZXJvQml0cykpOworICAgICAgICAgICAgdmFsdWVzWzBdID0gKHZhbHVlc1swXSA8
PCB6ZXJvQml0cyk7CisgICAgICAgIH0KKyAgICAgICAgbV92YWx1ZXMuYXBwZW5kKHZhbHVlc1sw
XSk7CisgICAgICAgIG1fdmFsdWVzLmFwcGVuZCh2YWx1ZXNbMV0pOworICAgICAgICBtX3ZhbHVl
cy5hcHBlbmQodmFsdWVzWzJdKTsKKworICAgICAgICAvLyBDYW5vbmljYWxpemU7IHJlbW92ZSBh
bGwgdHJhaWxpbmcgemVyb3MuCisgICAgICAgIHdoaWxlIChtX3ZhbHVlcy5zaXplKCkgJiYgIW1f
dmFsdWVzLmxhc3QoKSkKKyAgICAgICAgICAgIG1fdmFsdWVzLnJlbW92ZUxhc3QoKTsKKyAgICB9
CisKKyAgICB1aW50MzJfdCBkaXZpZGUodWludDMyX3QgZGl2aXNvcikKKyAgICB7CisgICAgICAg
IHVpbnQzMl90IGNhcnJ5ID0gMDsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gbV92YWx1ZXMu
c2l6ZSgpOyBpOyApIHsKKyAgICAgICAgICAgIC0taTsKKyAgICAgICAgICAgIHVpbnQ2NF90IGRp
dmlkZW5kID0gKHN0YXRpY19jYXN0PHVpbnQ2NF90PihjYXJyeSkgPDwgMzIpICsgc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KG1fdmFsdWVzW2ldKTsKKworICAgICAgICAgICAgdWludDY0X3QgcmVzdWx0
ID0gZGl2aWRlbmQgLyBzdGF0aWNfY2FzdDx1aW50NjRfdD4oZGl2aXNvcik7CisgICAgICAgICAg
ICBBU1NFUlQocmVzdWx0ID09IHN0YXRpY19jYXN0PHVpbnQzMl90PihyZXN1bHQpKTsKKyAgICAg
ICAgICAgIHVpbnQ2NF90IHJlbWFpbmRlciA9IGRpdmlkZW5kICUgc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KGRpdmlzb3IpOworICAgICAgICAgICAgQVNTRVJUKHJlbWFpbmRlciA9PSBzdGF0aWNfY2Fz
dDx1aW50MzJfdD4ocmVtYWluZGVyKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1fdmFs
dWVzW2ldID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHJlc3VsdCk7CisgICAgICAgICAgICBjYXJy
eSA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihyZW1haW5kZXIpOworICAgICAgICB9CisKKyAgICAg
ICAgLy8gQ2Fub25pY2FsaXplOyByZW1vdmUgYWxsIHRyYWlsaW5nIHplcm9zLgorICAgICAgICB3
aGlsZSAobV92YWx1ZXMuc2l6ZSgpICYmICFtX3ZhbHVlcy5sYXN0KCkpCisgICAgICAgICAgICBt
X3ZhbHVlcy5yZW1vdmVMYXN0KCk7CisKKyAgICAgICAgcmV0dXJuIGNhcnJ5OworICAgIH0KKwor
ICAgIGJvb2wgb3BlcmF0b3IhKCkgeyByZXR1cm4gIW1fdmFsdWVzLnNpemUoKTsgfQorCitwcml2
YXRlOgorICAgIFZlY3Rvcjx1aW50MzJfdCwgMzY+IG1fdmFsdWVzOworfTsKKworc3RhdGljIGNo
YXIqIHRvU3RyaW5nV2l0aFJhZGl4KFJhZGl4QnVmZmVyJiBidWZmZXIsIGRvdWJsZSBudW1iZXIs
IHVuc2lnbmVkIHJhZGl4KQoreworICAgIEFTU0VSVChpc2Zpbml0ZShudW1iZXIpKTsKKyAgICBB
U1NFUlQocmFkaXggPj0gMiAmJiByYWRpeCA8PSAzNik7CisKKyAgICAvLyBQb3NpdGlvbiB0aGUg
ZGVjaW1hbCBwb2ludCBhdCB0aGUgY2VudGVyIG9mIHRoZSBzdHJpbmcsIHNldAorICAgIC8vIHRo
ZSBzdGFydE9mUmVzdWx0U3RyaW5nIHBvaW50ZXIgdG8gcG9pbnQgYXQgdGhlIGRlY2ltYWwgcG9p
bnQuCisgICAgY2hhciogZGVjaW1hbFBvaW50ID0gYnVmZmVyICsgc2l6ZW9mKGJ1ZmZlcikgLyAy
OworICAgIGNoYXIqIHN0YXJ0T2ZSZXN1bHRTdHJpbmcgPSBkZWNpbWFsUG9pbnQ7CisKKyAgICAv
LyBFeHRyYWN0IHRoZSBzaWduLgorICAgIGJvb2wgaXNOZWdhdGl2ZSA9IG51bWJlciA8IDA7Cisg
ICAgaWYgKHNpZ25iaXQobnVtYmVyKSkKKyAgICAgICAgbnVtYmVyID0gLW51bWJlcjsKKyAgICBk
b3VibGUgaW50ZWdlclBhcnQgPSBmbG9vcihudW1iZXIpOworCisgICAgLy8gV2UgdXNlIHRoaXMg
dG8gdGVzdCBmb3Igb2RkIHZhbHVlcyBpbiBvZGQgcmFkaXggYmFzZXMuCisgICAgLy8gV2hlcmUg
dGhlIGJhc2UgaXMgZXZlbiwgKGUuZy4gMTApLCB0byBkZXRlcm1pbmUgd2hldGhlciBhIHZhbHVl
IGlzIGV2ZW4gd2UgbmVlZCBvbmx5CisgICAgLy8gY29uc2lkZXIgdGhlIGxlYXN0IHNpZ25pZmlj
YW50IGRpZ2l0LiBGb3IgZXhhbXBsZSwgMTI0IGluIGJhc2UgMTAgaXMgZXZlbiwgYmVjYXVzZSAn
NCcKKyAgICAvLyBpcyBldmVuLiBpZiB0aGUgcmFkaXggaXMgb2RkLCB0aGVuIHRoZSByYWRpeCBy
YWlzZWQgdG8gYW4gaW50ZWdlciBwb3dlciBpcyBhbHNvIG9kZC4KKyAgICAvLyBFLmcuIGluIGJh
c2UgNSwgMTI0IHJlcHJlc2VudHMgKDEgKiAxMjUgKyAyICogMjUgKyA0ICogNSkuIFNpbmNlIGVh
Y2ggZGlnaXQgaW4gdGhlIHZhbHVlCisgICAgLy8gaXMgbXVsdGlwbGllZCBieSBhbiBvZGQgbnVt
YmVyLCB0aGUgcmVzdWx0IGlzIGV2ZW4gaWYgdGhlIHN1bSBvZiBhbGwgZGlnaXRzIGlzIGV2ZW4u
CisgICAgLy8KKyAgICAvLyBGb3IgdGhlIGludGVnZXIgcG9ydGlvbiBvZiB0aGUgcmVzdWx0LCB3
ZSBvbmx5IG5lZWQgdGVzdCB3aGV0aGVyIHRoZSBpbnRlZ2VyIHZhbHVlIGlzCisgICAgLy8gZXZl
biBvciBvZGQuIEZvciBlYWNoIGRpZ2l0IG9mIHRoZSBmcmFjdGlvbiBhZGRlZCwgd2Ugc2hvdWxk
IGludmVydCBvdXIgaWRlYSBvZiB3aGV0aGVyCisgICAgLy8gdGhlIG51bWJlciBpcyBvZGQgaWYg
dGhlIG5ldyBkaWdpdCBpcyBvZGQuCisgICAgLy8KKyAgICAvLyBBbHNvIGluaXRpYWxpemUgZGln
aXQgdG8gdGhpcyB2YWx1ZTsgZm9yIGV2ZW4gcmFkaXggdmFsdWVzIHdlIG9ubHkgbmVlZCB0cmFj
ayB3aGV0aGVyCisgICAgLy8gdGhlIGxhc3QgaW5kaXZpZHVhbCBkaWdpdCB3YXMgb2RkLgorICAg
IGJvb2wgaW50ZWdlclBhcnRJc09kZCA9IGludGVnZXJQYXJ0IDw9IDB4MUZGRkZGRkZGRkZGRkYg
JiYgc3RhdGljX2Nhc3Q8aW50NjRfdD4oaW50ZWdlclBhcnQpICYgMTsKKyAgICBBU1NFUlQoaW50
ZWdlclBhcnRJc09kZCA9PSBzdGF0aWNfY2FzdDxib29sPihmbW9kKGludGVnZXJQYXJ0LCAyKSkp
OworICAgIGJvb2wgaXNPZGRJbk9kZFJhZGl4ID0gaW50ZWdlclBhcnRJc09kZDsKKyAgICB1aW50
MzJfdCBkaWdpdCA9IGludGVnZXJQYXJ0SXNPZGQ7CisKKyAgICAvLyBDaGVjayBpZiB0aGUgdmFs
dWUgaGFzIGEgZnJhY3Rpb25hbCBwYXJ0IC0gaWYgbm90LCB3ZSdyZSBkb25lLgorICAgIGRvdWJs
ZSBmcmFjdGlvblBhcnQgPSBudW1iZXIgLSBmbG9vcihudW1iZXIpOworICAgIGlmIChmcmFjdGlv
blBhcnQpIHsKKyAgICAgICAgLy8gV3JpdGUgdGhlIGRlY2ltYWwgcG9pbnQgbm93LgorICAgICAg
ICAqZGVjaW1hbFBvaW50ID0gJy4nOworCisgICAgICAgIC8vIEhpZ2hlciBwcmVjaXNpb24gcmVw
cmVzZW50YXRpb24gb2YgdGhlIGZyYWN0aW9uYWwgcGFydC4KKyAgICAgICAgVWludDE2V2l0aEZy
YWN0aW9uIGZyYWN0aW9uKGZyYWN0aW9uUGFydCk7CisKKyAgICAgICAgYm9vbCBuZWVkc1JvdW5k
aW5nVXAgPSBmYWxzZTsKKyAgICAgICAgY2hhciogZW5kT2ZSZXN1bHRTdHJpbmcgPSBkZWNpbWFs
UG9pbnQgKyAxOworCisgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgZGVsdGEgZnJvbSB0aGUgY3Vy
cmVudCBudW1iZXIgdG8gdGhlIG5leHQgJiBwcmV2aW91cyBwb3NzaWJsZSBJRUVFIG51bWJlcnMu
CisgICAgICAgIGRvdWJsZSBuZXh0TnVtYmVyID0gbmV4dGFmdGVyKG51bWJlciwgc3RkOjpudW1l
cmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKTsKKyAgICAgICAgZG91YmxlIGxhc3ROdW1i
ZXIgPSBuZXh0YWZ0ZXIobnVtYmVyLCAtc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZp
bml0eSgpKTsKKyAgICAgICAgQVNTRVJUKGlzZmluaXRlKG5leHROdW1iZXIpICYmICFzaWduYml0
KG5leHROdW1iZXIpKTsKKyAgICAgICAgQVNTRVJUKGlzZmluaXRlKGxhc3ROdW1iZXIpICYmICFz
aWduYml0KGxhc3ROdW1iZXIpKTsKKyAgICAgICAgZG91YmxlIGRlbHRhTmV4dERvdWJsZSA9IG5l
eHROdW1iZXIgLSBudW1iZXI7CisgICAgICAgIGRvdWJsZSBkZWx0YUxhc3REb3VibGUgPSBudW1i
ZXIgLSBsYXN0TnVtYmVyOworICAgICAgICBBU1NFUlQoaXNmaW5pdGUoZGVsdGFOZXh0RG91Ymxl
KSAmJiAhc2lnbmJpdChkZWx0YU5leHREb3VibGUpKTsKKyAgICAgICAgQVNTRVJUKGlzZmluaXRl
KGRlbHRhTGFzdERvdWJsZSkgJiYgIXNpZ25iaXQoZGVsdGFMYXN0RG91YmxlKSk7CisKKyAgICAg
ICAgLy8gV2UgdHJhY2sgdGhlIGRlbHRhIGZyb20gdGhlIGN1cnJlbnQgdmFsdWUgdG8gdGhlIG5l
eHQsIHRvIHRyYWNrIGhvdyBtYW55IGRpZ2l0cyBvZiB0aGUKKyAgICAgICAgLy8gZnJhY3Rpb24g
d2UgbmVlZCB0byB3cml0ZS4gRm9yIGV4YW1wbGUsIGlmIHRoZSB2YWx1ZSB3ZSBhcmUgY29udmVy
dGluZyBpcyBwcmVjaXNlbHkKKyAgICAgICAgLy8gMS4yMzQ1LCBzbyBmYXIgd2UgaGF2ZSB3cml0
dGVuIHRoZSBkaWdpdHMgIjEuMjMiIHRvIGEgc3RyaW5nIGxlYXZpbmcgYSByZW1haW5kZXIgb2YK
KyAgICAgICAgLy8gMC40NSwgYW5kIHdlIHdhbnQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgd2UgY2Fu
IHJvdW5kIG9mZiwgb3Igd2hldGhlciB3ZSBuZWVkIHRvIGtlZXAKKyAgICAgICAgLy8gYXBwZW5k
aW5nIGRpZ2l0cyAoJzQnKS4gV2UgY2FuIHN0b3AgYWRkaW5nIGRpZ2l0cyBwcm92aWRlZCB0aGF0
IHRoZW4gbmV4dCBwb3NzaWJsZQorICAgICAgICAvLyBsb3dlciBJRUVFIHZhbHVlIGlzIGZ1cnRo
ZXIgZnJvbSAxLjIzIHRoYW4gdGhlIHJlbWFpbmRlciB3ZSdkIGJlIHJvdW5kaW5nIG9mZiAoMC40
NSksCisgICAgICAgIC8vIHdoaWNoIGlzIHRvIHNheSwgbGVzcyB0aGFuIDEuMjI1NS4gUHV0IGFu
b3RoZXIgd2F5LCB0aGUgZGVsdGEgYmV0d2VlbiB0aGUgcHJpb3IKKyAgICAgICAgLy8gcG9zc2li
bGUgdmFsdWUgYW5kIHRoaXMgbnVtYmVyIG11c3QgYmUgbW9yZSB0aGFuIDJ4IHRoZSByZW1haW5k
ZXIgd2UnZCBiZSByb3VuZGluZyBvZmYKKyAgICAgICAgLy8gKG9yIG1vcmUgc2ltcGx5IGhhbGYg
dGhlIGRlbHRhIGJldHdlZW4gbnVtYmVycyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB0aGUgcmVtYWlu
ZGVyKS4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gU2ltaWxhcmx5IHdlIG5lZWQgdHJhY2sgdGhl
IGRlbHRhIHRvIHRoZSBuZXh0IHBvc3NpYmxlIHZhbHVlLCB0byBkZXJ0ZXJtaW5lIHdoZXRoZXIK
KyAgICAgICAgLy8gdG8gcm91bmQgdXAuICBJbiBhbG1vc3QgYWxsIGNhc2VzIChvdGhlciB0aGFu
IGF0IGV4cG9uZW50IGJvdW5kYXJpZXMpIHRoZSBkZWx0YXMgdG8KKyAgICAgICAgLy8gcHJpb3Ig
YW5kIHN1YnNlcXVlbnQgdmFsdWVzIGFyZSBpZGVudGljYWwsIHNvIHdlIGRvbid0IG5lZWQgdHJh
Y2sgdGhlbiBzZXBhcmF0ZWx5LgorICAgICAgICBpZiAoZGVsdGFOZXh0RG91YmxlICE9IGRlbHRh
TGFzdERvdWJsZSkgeworICAgICAgICAgICAgLy8gU2luY2UgdGhlIGRlbHRhcyBhcmUgZGlmZmVy
ZW50IHRyYWNrIHRoZW0gc2VwYXJhdGVseS4gUHJlLW11bHRpcGx5IGJ5IDAuNS4KKyAgICAgICAg
ICAgIFVpbnQxNldpdGhGcmFjdGlvbiBoYWxmRGVsdGFOZXh0KGRlbHRhTmV4dERvdWJsZSwgMSk7
CisgICAgICAgICAgICBVaW50MTZXaXRoRnJhY3Rpb24gaGFsZkRlbHRhTGFzdChkZWx0YUxhc3RE
b3VibGUsIDEpOworCisgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgICAg
IC8vIGV4YW1pbmUgdGhlIHJlbWFpbmRlciB0byBkZXRlcm1pbmUgd2hldGhlciB3ZSBzaG91bGQg
YmUgY29uc2lkZXJpbmcgcm91bmRpbmcKKyAgICAgICAgICAgICAgICAvLyB1cCBvciBkb3duLiBJ
ZiByZW1hYWluZGVyIGlzIHByZWNpc2VseSAwLjUgcm91bmRpbmcgaXMgdG8gZXZlbi4KKyAgICAg
ICAgICAgICAgICBpbnQgZENvbXBhcmVQb2ludDUgPSBmcmFjdGlvbi5jb21wYXJlUG9pbnQ1KCk7
CisgICAgICAgICAgICAgICAgaWYgKGRDb21wYXJlUG9pbnQ1ID4gMCB8fCAhZENvbXBhcmVQb2lu
dDUgJiYgKHJhZGl4ICYgMSA/IGlzT2RkSW5PZGRSYWRpeCA6IGRpZ2l0ICYgMSkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIHJvdW5kaW5nIHVwOyBhcmUgd2UgY2xvc2VyIHRv
IHRoZSB2YWx1ZSB3ZSdkIHJvdW5kIG9mZiB0byB0aGFuCisgICAgICAgICAgICAgICAgICAgIC8v
IHRoZSBuZXh0IElFRUUgdmFsdWUgd291bGQgYmU/CisgICAgICAgICAgICAgICAgICAgIGlmIChm
cmFjdGlvbi5zdW1HcmVhdGVyVGhhbk9uZShoYWxmRGVsdGFOZXh0KSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgbmVlZHNSb3VuZGluZ1VwID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIHJvdW5kaW5nIGRvd247IGFyZSB3
ZSBjbG9zZXIgdG8gdGhlIHZhbHVlIHdlJ2Qgcm91bmQgb2ZmIHRvIHRoYW4KKyAgICAgICAgICAg
ICAgICAgICAgLy8gdGhlIHByaW9yIElFRUUgdmFsdWUgd291bGQgYmU/CisgICAgICAgICAgICAg
ICAgICAgIGlmIChmcmFjdGlvbiA8IGhhbGZEZWx0YUxhc3QpCisgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBBU1NFUlQo
ZW5kT2ZSZXN1bHRTdHJpbmcgPCAoYnVmZmVyICsgc2l6ZW9mKGJ1ZmZlcikgLSAxKSk7CisgICAg
ICAgICAgICAgICAgLy8gV3JpdGUgYSBkaWdpdCB0byB0aGUgc3RyaW5nLgorICAgICAgICAgICAg
ICAgIGZyYWN0aW9uICo9IHJhZGl4OworICAgICAgICAgICAgICAgIGRpZ2l0ID0gZnJhY3Rpb24u
Zmxvb3JBbmRTdWJ0cmFjdCgpOworICAgICAgICAgICAgICAgICplbmRPZlJlc3VsdFN0cmluZysr
ID0gcmFkaXhEaWdpdHNbZGlnaXRdOworICAgICAgICAgICAgICAgIC8vIEtlZXAgdHJhY2sgd2hl
dGhlciB0aGUgcG9ydGlvbiB3cml0dGVuIGlzIGN1cnJlbnRseSBldmVuLCBpZiB0aGUgcmFkaXgg
aXMgb2RkLgorICAgICAgICAgICAgICAgIGlmIChkaWdpdCAmIDEpCisgICAgICAgICAgICAgICAg
ICAgIGlzT2RkSW5PZGRSYWRpeCA9ICFpc09kZEluT2RkUmFkaXg7CisKKyAgICAgICAgICAgICAg
ICAvLyBTaGlmdCB0aGUgZnJhY3Rpb25zIGJ5IHJhZGl4LgorICAgICAgICAgICAgICAgIGhhbGZE
ZWx0YU5leHQgKj0gcmFkaXg7CisgICAgICAgICAgICAgICAgaGFsZkRlbHRhTGFzdCAqPSByYWRp
eDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFRoaXMg
Y29kZSBpcyBpZGVudGljYWwgdG8gdGhhdCBhYm92ZSwgZXhjZXB0IHNpbmNlIGRlbHRhTmV4dERv
dWJsZSAhPSBkZWx0YUxhc3REb3VibGUKKyAgICAgICAgICAgIC8vIHdlIGRvbid0IG5lZWQgdG8g
dHJhY2sgdGhlc2UgdHdvIHZhbHVlcyBzZXBhcmF0ZWx5LgorICAgICAgICAgICAgVWludDE2V2l0
aEZyYWN0aW9uIGhhbGZEZWx0YShkZWx0YU5leHREb3VibGUsIDEpOworCisgICAgICAgICAgICB3
aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgICAgIGludCBkQ29tcGFyZVBvaW50NSA9IGZyYWN0
aW9uLmNvbXBhcmVQb2ludDUoKTsKKyAgICAgICAgICAgICAgICBpZiAoZENvbXBhcmVQb2ludDUg
PiAwIHx8ICFkQ29tcGFyZVBvaW50NSAmJiAocmFkaXggJiAxID8gaXNPZGRJbk9kZFJhZGl4IDog
ZGlnaXQgJiAxKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoZnJhY3Rpb24uc3VtR3JlYXRl
clRoYW5PbmUoaGFsZkRlbHRhKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbmVlZHNSb3Vu
ZGluZ1VwID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmcmFjdGlvbiA8IGhhbGZE
ZWx0YSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBBU1NF
UlQoZW5kT2ZSZXN1bHRTdHJpbmcgPCAoYnVmZmVyICsgc2l6ZW9mKGJ1ZmZlcikgLSAxKSk7Cisg
ICAgICAgICAgICAgICAgZnJhY3Rpb24gKj0gcmFkaXg7CisgICAgICAgICAgICAgICAgZGlnaXQg
PSBmcmFjdGlvbi5mbG9vckFuZFN1YnRyYWN0KCk7CisgICAgICAgICAgICAgICAgaWYgKGRpZ2l0
ICYgMSkKKyAgICAgICAgICAgICAgICAgICAgaXNPZGRJbk9kZFJhZGl4ID0gIWlzT2RkSW5PZGRS
YWRpeDsKKyAgICAgICAgICAgICAgICAqZW5kT2ZSZXN1bHRTdHJpbmcrKyA9IHJhZGl4RGlnaXRz
W2RpZ2l0XTsKKworICAgICAgICAgICAgICAgIGhhbGZEZWx0YSAqPSByYWRpeDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIENoZWNrIGlmIHRoZSBmcmFjdGlvbiBuZWVk
cyByb3VuZGluZyBvZmYgKGZsYWcgc2V0IGluIHRoZSBsb29wIHdyaXRpbmcgZGlnaXRzLCBhYm92
ZSkuCisgICAgICAgIGlmIChuZWVkc1JvdW5kaW5nVXApIHsKKyAgICAgICAgICAgIC8vIFdoaWxz
dCB0aGUgbGFzdCBkaWdpdCBpcyB0aGUgbWF4aW11bSBpbiB0aGUgY3VycmVudCByYWRpeCwgcmVt
b3ZlIGl0LgorICAgICAgICAgICAgLy8gZS5nLiByb3VuZGluZyB1cCB0aGUgbGFzdCBkaWdpdCBp
biAiMTIuMzk5OSIgaXMgdGhlIHNhbWUgYXMgcm91bmRpbmcgdXAgdGhlCisgICAgICAgICAgICAv
LyBsYXN0IGRpZ2l0IGluICIxMi4zIiAtIGJvdGggcm91bmQgdXAgdG8gIjEyLjQiLgorICAgICAg
ICAgICAgd2hpbGUgKGVuZE9mUmVzdWx0U3RyaW5nWy0xXSA9PSByYWRpeERpZ2l0c1tyYWRpeCAt
IDFdKQorICAgICAgICAgICAgICAgIC0tZW5kT2ZSZXN1bHRTdHJpbmc7CisKKyAgICAgICAgICAg
IC8vIFJhZGl4IGRpZ2l0cyBhcmUgc2VxdWVudGlhbCBpbiBhc2NpaS91bmljb2RlLCBleGNlcHQg
Zm9yICc5JyBhbmQgJ2EnLgorICAgICAgICAgICAgLy8gRS5nLiB0aGUgZmlyc3QgJ2lmJyBjYXNl
IGhhbmRsZXMgcm91bmRpbmcgNjcuODkgdG8gNjcuOGEgaW4gYmFzZSAxNi4KKyAgICAgICAgICAg
IC8vIFRoZSAnZWxzZSBpZicgY2FzZSBoYW5kbGVzIHJvdW5kaW5nIG9mIGFsbCBvdGhlciBkaWdp
dHMuCisgICAgICAgICAgICBpZiAoZW5kT2ZSZXN1bHRTdHJpbmdbLTFdID09ICc5JykKKyAgICAg
ICAgICAgICAgICBlbmRPZlJlc3VsdFN0cmluZ1stMV0gPSAnYSc7CisgICAgICAgICAgICBlbHNl
IGlmIChlbmRPZlJlc3VsdFN0cmluZ1stMV0gIT0gJy4nKQorICAgICAgICAgICAgICAgICsrZW5k
T2ZSZXN1bHRTdHJpbmdbLTFdOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAg
Ly8gT25lIG90aGVyIHBvc3NpYmlsaXR5IC0gdGhlcmUgbWF5IGJlIG5vIGRpZ2l0cyB0byByb3Vu
ZCB1cCBpbiB0aGUgZnJhY3Rpb24KKyAgICAgICAgICAgICAgICAvLyAob3IgYWxsIG1heSBiZSBi
ZWVuIHJvdW5kZWQgb2ZmIGFscmVhZHkpLCBpbiB3aGljaCBjYXNlIHdlIG1heSBuZWVkIHRvCisg
ICAgICAgICAgICAgICAgLy8gcm91bmQgaW50byB0aGUgaW50ZWdlciBwb3J0aW9uIG9mIHRoZSBu
dW1iZXIuIFJlbW92ZSB0aGUgZGVjaW1hbCBwb2ludC4KKyAgICAgICAgICAgICAgICAtLWVuZE9m
UmVzdWx0U3RyaW5nOworICAgICAgICAgICAgICAgIC8vIEluIG9yZGVyIHRvIGdldCBoZXJlIHRo
ZXJlIG11c3QgaGF2ZSBiZWVuIGEgbm9uLXplcm8gZnJhY3Rpb24sIGluIHdoaWNoIGNhc2UKKyAg
ICAgICAgICAgICAgICAvLyB0aGVyZSBtdXN0IGJlIGF0IGxlYXN0IG9uZSBiaXQgb2YgdGhlIHZh
bHVlJ3MgbWFudGlzc2Egbm90IGluIHVzZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAvLyBpbnRl
Z2VyIHBhcnQgb2YgdGhlIG51bWJlci4gQXMgc3VjaCwgYWRkaW5nIHRvIHRoZSBpbnRlZ2VyIHBh
cnQgc2hvdWxkIG5vdAorICAgICAgICAgICAgICAgIC8vIGJlIGFibGUgdG8gbG9zZSBwcmVjaXNp
b24uCisgICAgICAgICAgICAgICAgQVNTRVJUKChpbnRlZ2VyUGFydCArIDEpIC0gaW50ZWdlclBh
cnQgPT0gMSk7CisgICAgICAgICAgICAgICAgKytpbnRlZ2VyUGFydDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFdlIG9ubHkgbmVlZCB0byBjaGVjayBm
b3IgdHJhaWxpbmcgemVyb3MgaWYgdGhlIHZhbHVlIGRvZXMgbm90IGdldCByb3VuZGVkIHVwLgor
ICAgICAgICAgICAgd2hpbGUgKGVuZE9mUmVzdWx0U3RyaW5nWy0xXSA9PSAnMCcpCisgICAgICAg
ICAgICAgICAgLS1lbmRPZlJlc3VsdFN0cmluZzsKKyAgICAgICAgfQorCisgICAgICAgICplbmRP
ZlJlc3VsdFN0cmluZyA9ICdcMCc7CisgICAgICAgIEFTU0VSVChlbmRPZlJlc3VsdFN0cmluZyA8
IGJ1ZmZlciArIHNpemVvZihidWZmZXIpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgKmRlY2ltYWxQ
b2ludCA9ICdcMCc7CisKKyAgICBCaWdJbnRlZ2VyIHVuaXRzKGludGVnZXJQYXJ0KTsKKworICAg
IC8vIEFsd2F5cyBsb29wIGF0IGxlYXN0IG9uY2UsIHRvIGVtaXQgYXQgbGVhc3QgJzAnLgorICAg
IGRvIHsKKyAgICAgICAgQVNTRVJUKGJ1ZmZlciA8IHN0YXJ0T2ZSZXN1bHRTdHJpbmcpOworCisg
ICAgICAgIC8vIFJlYWQgYSBzaW5nbGUgZGlnaXQgYW5kIHdyaXRlIGl0IHRvIHRoZSBmcm9udCBv
ZiB0aGUgc3RyaW5nLgorICAgICAgICAvLyBEaXZpZGUgYnkgcmFkaXggdG8gcmVtb3ZlIG9uZSBk
aWdpdCBmcm9tIHRoZSB2YWx1ZS4KKyAgICAgICAgZGlnaXQgPSB1bml0cy5kaXZpZGUocmFkaXgp
Oy8vc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGZtb2QoaW50ZWdlclBhcnQsIHJhZGl4KSk7CisgICAg
ICAgICotLXN0YXJ0T2ZSZXN1bHRTdHJpbmcgPSByYWRpeERpZ2l0c1tkaWdpdF07CisgICAgfSB3
aGlsZSAoISF1bml0cyk7CisKKyAgICAvLyBJZiB0aGUgbnVtYmVyIGlzIG5lZ2F0aXZlLCBwcmVw
ZW5kICctJy4KKyAgICBpZiAoaXNOZWdhdGl2ZSkKKyAgICAgICAgKi0tc3RhcnRPZlJlc3VsdFN0
cmluZyA9ICctJzsKKyAgICBBU1NFUlQoYnVmZmVyIDw9IHN0YXJ0T2ZSZXN1bHRTdHJpbmcpOwor
CisgICAgcmV0dXJuIHN0YXJ0T2ZSZXN1bHRTdHJpbmc7Cit9CisKIC8vIHRvRXhwb25lbnRpYWwg
Y29udmVydHMgYSBudW1iZXIgdG8gYSBzdHJpbmcsIGFsd2F5cyBmb3JtYXR0aW5nIGFzIGFuIGV4
cG9lbnRpYWwuCiAvLyBUaGlzIG1ldGhvZCB0YWtlcyBhbiBvcHRpb25hbCBhcmd1bWVudCBzcGVj
aWZ5aW5nIGEgbnVtYmVyIG9mICpkZWNpbWFsIHBsYWNlcyoKIC8vIHRvIHJvdW5kIHRoZSBzaWdu
aWZpY2FuZCB0byAob3IsIHB1dCBhbm90aGVyIHdheSwgdGhpcyBtZXRob2Qgb3B0aW9uYWxseSBy
b3VuZHMKQEAgLTIzOCwxNSArNzcyLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bnVtYmVyUHJvdG8KICAgICBpZiAocmFkaXggPT0gMTApCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNTdHJpbmcoZXhlYywgdi50b1N0cmluZyhleGVjKSkpOwogCi0gICAgc3RhdGlj
IGNvbnN0IGNoYXIqIGNvbnN0IGRpZ2l0cyA9ICIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFy
c3R1dnd4eXoiOwotCiAgICAgLy8gRmFzdCBwYXRoIGZvciBudW1iZXIgdG8gY2hhcmFjdGVyIGNv
bnZlcnNpb24uCiAgICAgaWYgKHJhZGl4ID09IDM2KSB7CiAgICAgICAgIGlmICh2LmlzSW50MzIo
KSkgewogICAgICAgICAgICAgaW50IHggPSB2LmFzSW50MzIoKTsKICAgICAgICAgICAgIGlmIChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oeCkgPCAzNikgeyAvLyBFeGNsdWRlIG5lZ2F0aXZlcwogICAg
ICAgICAgICAgICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRh
KCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShnbG9iYWxEYXRhLT5z
bWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGdsb2JhbERhdGEsIGRpZ2l0c1t4XSkp
OworICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFsRGF0YS0+c21h
bGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZyhnbG9iYWxEYXRhLCByYWRpeERpZ2l0c1t4
XSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMjU0LDUzICs3ODYsMTIg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90bwogICAgIGlmIChyYWRp
eCA8IDIgfHwgcmFkaXggPiAzNikKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBj
cmVhdGVSYW5nZUVycm9yKGV4ZWMsICJ0b1N0cmluZygpIHJhZGl4IGFyZ3VtZW50IG11c3QgYmUg
YmV0d2VlbiAyIGFuZCAzNiIpKTsKIAotICAgIC8vIElOVF9NQVggcmVzdWx0cyBpbiAxMDI0IGNo
YXJhY3RlcnMgbGVmdCBvZiB0aGUgZG90IHdpdGggcmFkaXggMgotICAgIC8vIGdpdmUgdGhlIHNh
bWUgc3BhY2Ugb24gdGhlIHJpZ2h0IHNpZGUuIHNhZmV0eSBjaGVja3MgYXJlIGluIHBsYWNlCi0g
ICAgLy8gdW5sZXNzIHNvbWVvbmUgZmluZHMgYSBwcmVjaXNlIHJ1bGUuCi0gICAgY2hhciBzWzIw
NDggKyAzXTsKLSAgICBjb25zdCBjaGFyKiBsYXN0Q2hhckluU3RyaW5nID0gcyArIHNpemVvZihz
KSAtIDE7CiAgICAgZG91YmxlIHggPSB2LnVuY2hlY2tlZEdldE51bWJlcigpOwogICAgIGlmICgh
aXNmaW5pdGUoeCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhl
YywgVVN0cmluZzo6bnVtYmVyKHgpKSk7CiAKLSAgICBib29sIGlzTmVnYXRpdmUgPSB4IDwgMC4w
OwotICAgIGlmIChpc05lZ2F0aXZlKQotICAgICAgICB4ID0gLXg7Ci0KLSAgICBkb3VibGUgaW50
ZWdlclBhcnQgPSBmbG9vcih4KTsKLSAgICBjaGFyKiBkZWNpbWFsUG9pbnQgPSBzICsgc2l6ZW9m
KHMpIC8gMjsKLQotICAgIC8vIGNvbnZlcnQgaW50ZWdlciBwb3J0aW9uCi0gICAgY2hhciogcCA9
IGRlY2ltYWxQb2ludDsKLSAgICBkb3VibGUgZCA9IGludGVnZXJQYXJ0OwotICAgIGRvIHsKLSAg
ICAgICAgaW50IHJlbWFpbmRlckRpZ2l0ID0gc3RhdGljX2Nhc3Q8aW50PihmbW9kKGQsIHJhZGl4
KSk7Ci0gICAgICAgICotLXAgPSBkaWdpdHNbcmVtYWluZGVyRGlnaXRdOwotICAgICAgICBkIC89
IHJhZGl4OwotICAgIH0gd2hpbGUgKChkIDw9IC0xLjAgfHwgZCA+PSAxLjApICYmIHMgPCBwKTsK
LQotICAgIGlmIChpc05lZ2F0aXZlKQotICAgICAgICAqLS1wID0gJy0nOwotICAgIGNoYXIqIHN0
YXJ0T2ZSZXN1bHRTdHJpbmcgPSBwOwotICAgIEFTU0VSVChzIDw9IHN0YXJ0T2ZSZXN1bHRTdHJp
bmcpOwotCi0gICAgZCA9IHggLSBpbnRlZ2VyUGFydDsKLSAgICBwID0gZGVjaW1hbFBvaW50Owot
ICAgIGNvbnN0IGRvdWJsZSBlcHNpbG9uID0gMC4wMDE7IC8vIFRPRE86IGd1ZXNzZWQuIGJhc2Ug
b24gcmFkaXggPwotICAgIGJvb2wgaGFzRnJhY3Rpb25hbFBhcnQgPSAoZCA8IC1lcHNpbG9uIHx8
IGQgPiBlcHNpbG9uKTsKLSAgICBpZiAoaGFzRnJhY3Rpb25hbFBhcnQpIHsKLSAgICAgICAgKnAr
KyA9ICcuJzsKLSAgICAgICAgZG8gewotICAgICAgICAgICAgZCAqPSByYWRpeDsKLSAgICAgICAg
ICAgIGNvbnN0IGludCBkaWdpdCA9IHN0YXRpY19jYXN0PGludD4oZCk7Ci0gICAgICAgICAgICAq
cCsrID0gZGlnaXRzW2RpZ2l0XTsKLSAgICAgICAgICAgIGQgLT0gZGlnaXQ7Ci0gICAgICAgIH0g
d2hpbGUgKChkIDwgLWVwc2lsb24gfHwgZCA+IGVwc2lsb24pICYmIHAgPCBsYXN0Q2hhckluU3Ry
aW5nKTsKLSAgICB9Ci0gICAgKnAgPSAnXDAnOwotICAgIEFTU0VSVChwIDwgcyArIHNpemVvZihz
KSk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIHN0YXJ0T2ZS
ZXN1bHRTdHJpbmcpKTsKKyAgICBSYWRpeEJ1ZmZlciBzOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNTdHJpbmcoZXhlYywgdG9TdHJpbmdXaXRoUmFkaXgocywgeCwgcmFkaXgpKSk7CiB9
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9Mb2NhbGVT
dHJpbmcoRXhlY1N0YXRlKiBleGVjKQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gOTAyNDgpCisrKyBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0w
Ny0wMSAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjUyCisgICAgICAgIEZpcmVmb3ggYW5kIEphdmFT
Y3JpcHRDb3JlIGRpZmZlciBpbiBOdW1iZXIudG9TdHJpbmcoaW50ZWdlcikKKworICAgICAgICBP
dXIgYXJiaXRyYXJ5IHJhZGl4ICgyLi4zNikgdG9TdHJpbmcgY29udmVyc2lvbiBpcyBpbmFjY3Vy
YXRlLgorICAgICAgICBUaGlzIGlzIHBhcnRseSBiZWNhdXNlIGl0IHVzZXMgZG91YmxlcyB0byBw
ZXJmb3JtIG1hdGggdGhhdCByZXF1aXJlcworICAgICAgICBoaWdoZXIgYWNjdXJhY3ksIGFuZCBw
YXJ0bHkgYmVjYXN1ZSBpdCBkb2VzIG5vdCBhdHRlbXB0IHRvIGNvcnJlY3RseQorICAgICAgICBk
ZXRlY3Qgd2hlcmUgdG8gdGVybWluYXRlLCBpbnN0ZWFkIHJlbHlpbmcgb24gYSBzaW1wbGUgJ2Vw
c2lsb24nLgorCisgICAgICAgICogZmFzdC9qcy9udW1iZXItdG9TdHJpbmctZXhwZWN0ZWQudHh0
OgorICAgICAgICAgICAgLSBVcGRhdGUgZXhwZWN0ZWQgcmVzdWx0cyBmcm9tIEZBSUwgdG8gUEFT
Uy4KKwogMjAxMS0wNy0wMSAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvanMvbnVtYmVyLXRvU3RyaW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2pzL251bWJlci10b1N0cmluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDkw
MjAyKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9udW1iZXItdG9TdHJpbmctZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xMiw0MSArMTIsNDEgQEAgUEFTUyAoMTIzNC41NjcpLnRvU3Ry
aW5nKDEpIHRocmV3IGV4Y2VwdAogUEFTUyAoMTIzNC41NjcpLnRvU3RyaW5nKHRydWUpIHRocmV3
IGV4Y2VwdGlvbiBSYW5nZUVycm9yOiB0b1N0cmluZygpIHJhZGl4IGFyZ3VtZW50IG11c3QgYmUg
YmV0d2VlbiAyIGFuZCAzNi4KIFBBU1MgKDEyMzQuNTY3KS50b1N0cmluZygnMScpIHRocmV3IGV4
Y2VwdGlvbiBSYW5nZUVycm9yOiB0b1N0cmluZygpIHJhZGl4IGFyZ3VtZW50IG11c3QgYmUgYmV0
d2VlbiAyIGFuZCAzNi4KIFBBU1MgKDEyMzQuNTY3KS50b1N0cmluZygyKSBpcyAiMTAwMTEwMTAw
MTAuMTAwMTAwMDEwMDEwMDExMDExMTAxMDAxMDExMTEwMDAxMTAxMDEwMSIKLUZBSUwgKDEyMzQu
NTY3KS50b1N0cmluZygzKSBzaG91bGQgYmUgMTIwMDIwMS4xMjAwMjIxMDAwMjEwMDEwMjEwMjEw
MDIyMDIuIFdhcyAxMjAwMjAxLjEyMDAyMjEwMDAyMTAwMTAyMTAyMTAwMjIwMTIwMDExMDIyMjIw
MDEyMTEwMjEyMTExMjIxMDIxMjAxMDAwMTAyMTAyMDAyMDAwMTAwMjEyMjIwMTExMDAwMjIxMDIx
MTExMTEyMjAwMDAxMjAxMjEwMjAyMDIwMjIyMjIwMTIyMjEwMDIwMjAyMTEwMTIyMjExMjIxMTIw
MDAxMDAwMTExMDEwMDEwMDEwMDIyMjIwMjIwMTIwMjAwMTAyMjAwMjIxMjIwMjIxMTAyMDIwMDIw
MDIyMDIyMjIyMDIyMTIwMTAwMjEyMDEyMTIwMTIyMjAwMjExMjExMTEwMDAwMDAyMTEyMDAyMDAy
MjIwMDAxMTIwMTIxMTIyMDIxMTExMDIxMDIyMjExMjAwMDAyMTIxMTEyMDIyMDEwMjIxMTEwMjEx
MDAyMjExMjAwMTAwMTEyMjAwMjAxMDAyMjAwMjEyMjExMTAwMDIyMTIxMTEyMDAwMDIyMTIyMjEx
MDIyMjEwMDIwMjAyMjAwMDExMTAxMjAwMjEyMTAyMTEwMTAyMjEyMTEwMDEyMjAwMTExMjEyMTAx
MTAwMDAxMDExMjAxMDIwMDAyMDIwMTEwMjIwMDIyMjAyMjIxMDEwMTAyMjEyMTEwMDAxMjAwMTAw
MjIxMDIwMDIyMTAwMjEyMjEwMDIxMjIyMTEwMjExMjAyMDExMTExMDEyMDIxMTAxMDAwMDExMjEx
MTExMjAxMjIxMjAxMjIxMTAyMDEyMDEyMjIwMjAyMjEwMTEwMDIxMjEwMjIyMDAyMDEyMTAxMjIw
MDAwMjIwMjAyMDAwMDEwMDAwMDAyMjEyMjExMTIyMDAyMjAxMDAyMjIxMjAyMTAwMjAwMDEyMDEy
MDIxMjEwMTAyMDAwMTEyMTAwMjAwMDEyMTAyMTAxMjEyMDIwMjIxMDIxMDExMTAxMjIwMjAxMDAw
MjAwMjEyMjIxMDIwMTIwMTIyMjIyMTIxMjExMTExMjExMjExMjExMDEyMTIxMjIwMjEwMDEwMTAy
MjIyMDEyMDAyMjEyMDAwMTEyMjAxMTExMjExMTExMTExMDIwMjIyMjIxMTAwMjIyMjIxMTIyMDAw
MjAwMjExMDAyMDIyMTAwMjAwMTIyMTIwMDEwMDExMDIxMTExMTEyMjEyMDEwMjAyMjIyMDEwMDAy
MTAyMjAxMjEwMDAxMDAyMjAxMjExMTEyMjIxMjEwMTExMTAxMDExMDIwMDEwMDIwMjIwMjEwMTEy
MDEyMDAxMDEyMDAwMDEyMTAyMTAxMjEwMDAwMjAxMjExMTAxMDIxMTAyMTAyMDEwMTAwMjExMjIw
MTIyMDExMTExMTEyMDExMDIuCitQQVNTICgxMjM0LjU2NykudG9TdHJpbmcoMykgaXMgIjEyMDAy
MDEuMTIwMDIyMTAwMDIxMDAxMDIxMDIxMDAyMjAyIgogUEFTUyAoMTIzNC41NjcpLnRvU3RyaW5n
KDQpIGlzICIxMDMxMDIuMjEwMTAyMTIzMjIxMTMyMDMxMTEiCiBQQVNTICgxMjM0LjU2NykudG9T
dHJpbmcoNC45KSBpcyAiMTAzMTAyLjIxMDEwMjEyMzIyMTEzMjAzMTExIgotRkFJTCAoMTIzNC41
NjcpLnRvU3RyaW5nKDUpIHNob3VsZCBiZSAxNDQxNC4yNDA0MTQxNDE0MTQxNDE0MTQuIFdhcyAx
NDQxNC4yNDA0MTQxNDE0MTQxNDE0MTQyMDAxMzMwMTE0NDI0MzQwMzEwNDAxMjQzMzAyNDQwMjMx
MjQyMDAwMTEzMDQzMTIzMTEzMjQxMDAzMjAzMTAzMjIyMzIzMzQ0MDEyNDE0NDQwMjMzMDEzMDE0
MjQzMTE0MDI0MTAzNDM0NDA0NDAxNDQyMzQxMjEyMjEwMDQwNDIzMTMyMTQ0MzMyMjMzMTIzNDAz
NDQ0MjE0MzMzMDM0MDMyMTIwMTIyMzQyMTAxMzA0NDQ0MTAwMjEzMTMwMjIxMzEyMTI0MzAyMzEu
Ci1GQUlMICgxMjM0LjU2NykudG9TdHJpbmcoNikgc2hvdWxkIGJlIDU0MTQuMzIyMjQ1NTQxMzQ0
MzAyMzMuIFdhcyA1NDE0LjMyMjI0NTU0MTM0NDMwMjMzMjMzNTU0NDE0MzI0MjI1MTU1NDE1MTMu
Ci1GQUlMICgxMjM0LjU2NykudG9TdHJpbmcoNykgc2hvdWxkIGJlIDM0MTIuMzY1MzIzNjYxMTEx
NjUzLiBXYXMgMzQxMi4zNjUzMjM2NjExMTE2NTI1MDAzMDA2MzIyMDAxMTA2MjYyNTI2NDIzNTAy
MjM2NjAzMTM1NTAwNjQyMzU2MjQwMDM1MzM1MTAzMzUxNDYwNDQ0MzY2MTIzMzEyNjMwNjM1NDQ2
NjA2NjI0MDY2MjUyMDAzMzMxMjExMDIyMjAwNDYxMjU0MjIxNjM2NDMwMDUyNTUzNDMzMzIyMTMw
NDE1MDQ0NDIwMzE0MTIxMDUwMDE2MjMwMjUxNjIxMDQzNDMxNTE1MjIzNDM0MDMyNjYwMzYzNTQ2
MTUwMTMzNjI0MjExNjIwMzMxNDE1MzM1NDY1MTEyNjUzMjEwNTM2NTQxNTExNjUwMDM0MDUwMTUw
NTUzNDE0NDE1NjY1MjAzMDU1NDAxMjQ2NTYyNTU2NTE2MTMzMjY0NTMzNDIyMzY1MTE0NTEwNDQy
NTU1NDUyNjMwMjAyMzAzNDY1NDYwMDA2NjU2NDUxMjEyMzAxMjUyNTU0NjQwNDIxNjExMjAyMDM2
NDEyMDYxMDE0NDAxMjQzNDExNjE2MjIwMTI0MzMyNTAzNjE2NDA0MDIxNTEyMDY2NTQxNTIwMTMy
MDIyMTY2MjMzMzUyNjIwNDM2MDA2NjAxNjU0NjE1MzUxMTQyNjA1MjI1MDUxMzMxNDU2NjU1MjY1
NjQ0MTA1NDY0NDQwNjIwNjEyMTMyMDA0MTAyNjMxNjExNDAxNDExNTI1MzYzMDAxNjQ0NjQyMzYw
NTQwNTE0MjI1NDE2NTIxNDQwMzI2MjU1MjI1MTYyNjAzMDUzMzMxMzAzMzE2NTEwNDYxMTA0NTAy
NDU1NTU0MTYwNjQ1MjAzMzQxNjMxMzU2NTIzNDMwNjUxNjUwMTU2NDIxMjE0NDY0NDM0MTI0MzIz
MzY0MzEyMjA1MTE1MDE1NTQzNDUyMjMwMjIyNDU2NjYyMzEzNjQ1MjQxNjMyMjIyMDMyMjQzMTAx
MzMzNTYwNTI0MzUzMTUzNTYyMTQxMzY1MjY2NTEzMzY1MjEzMDA2MjQ1MTQ2NjIzNTMwMjY0MzQ0
NjQxNTQyNTA1NTQ1NDExMjAxNDMzNTQzMDMwMzIxMTUwMDEzNjY2NjIyNjAxMjQ1NDExMTAwNjE1
MTM0NjQzNjM0MTAzNDM1MjYyNjUyNjA0NDA2MzU2MjU0MzM0MTE2MjIwMDMyMzQ2MTAyMjA1NDMx
MjQxNTA2MjIyNDYzNDE1NTEzMzYyNjU1NDE2MjQzMTU0NDA1NTQxMjIwMTYyNDYxNDM1NjAxNDMx
MjYwNDEyMjUwMDMwMS4KK1BBU1MgKDEyMzQuNTY3KS50b1N0cmluZyg1KSBpcyAiMTQ0MTQuMjQw
NDE0MTQxNDE0MTQxNDE0IgorUEFTUyAoMTIzNC41NjcpLnRvU3RyaW5nKDYpIGlzICI1NDE0LjMy
MjI0NTU0MTM0NDMwMjMzIgorUEFTUyAoMTIzNC41NjcpLnRvU3RyaW5nKDcpIGlzICIzNDEyLjM2
NTMyMzY2MTExMTY1MyIKIFBBU1MgKDEyMzQuNTY3KS50b1N0cmluZyg4KSBpcyAiMjMyMi40NDIy
MzM1MTM2MTUyNCIKLUZBSUwgKDEyMzQuNTY3KS50b1N0cmluZyg5KSBzaG91bGQgYmUgMTYyMS41
MDgzMDcwMzcyMzI2NS4gV2FzIDE2MjEuNTA4MzA3MDM3MjMyNjUwNDI4NjE3Mzc3NDgzNzYzMDM3
MjA2MDMyNTgxNDAyNzI0NDQ4MDA1MTcyMjIyODgxODcwNjY3MzU4NDg0NjAzMDQzMzEwMzI4Njgx
NjYxMjYyNzgyNzM2NjIwODI4ODI3NjMyNTE3NjU4MDc1NDQwMDA3NTA2MjgwMTUxNzU2NzQzNzI4
NDYwMjU0NTI2Mzg0MzczMjc1MDMxNTYyMTA4MDc4NDMwODU0NTAwODU4NDI4MzIyMjYwNDM1MDc3
MjQxMjc3MzE4MDQ1NTM0MDAzNDYzNjA2NjQyNjI4MjgzMzM4NTQwMTYxMDgzNjI3MDc4MzI1ODQy
NDY2NDQzNTI0MTAwNDc0NDY1NzY1NzM2NTE4NjY4MzQwNzcyODA2NTM1NjAyNjY2MDEwMDA4NTc0
ODA4MTA4NzY3MDYwNTE2NzcxMjAxNTMyMDE3MjM1NTIyNzIzNDM1NjYzMDYyNTgzNjUxODg3Nzc0
NDc1NDczNTU1NjcwMzM4ODE2Mjc2MDQ4MTQ1NDQ0NDIyODg0MDg4NzU2MDYyNDA2ODMyMDU3NjEw
NDI0NDQ4NTEyMjg2MzA3MjY1MzAzMjY1NDQ4NzcxNDMzNDIwMzIyNjcxNTE2MTE2MDE3MjM1MzAy
MTc0MTI0MjM2MzMyNDgxODE0NDQ2NDIwMjgxMjUxNjI4MDM4MTc3NTUwNzYxMzcwMjU4NTc4ODU4
MzQyNDg4MTEyNTgwNzE4NTg4ODUzODY3NjIxMDgzMTQ4NjE0NDU2MjM3NTg2NDI2MTM0NTE0NzM4
MzIyMjMyMjI3MjA1NTYzNDU0NzM2MzMwNjY4MzQwODM2NTU3Mzg2MDQyNTIzNDM3MzU0ODg3MzY4
MTYzODU0ODExMDI0Njg2ODYwNDEwMDc0Njg4MzE2NTcyMTI0NDY3NTc1MTA0ODAxMjEyNjc4MjE1
Nzg3ODE1NDM1MzcxMzM3MTc1ODQ2MjQzMjAwMzE4MzU4MjUyNjAxMTU4Njg0NDM3ODA1MzIwMDgy
NzMzMTAwODYyNDUxNjAxMDU1NDQ1NjcxMjgwNzU2MzEwODM0NzA0NjY1NzY3NDY2NTY1MTEzMTQy
MjE0NDU1MDI1NjE2ODA0NzAxNDIxNTY3NzAzMDE0MTQ0MzU4NzAwODEwNTYxMDM3NTM0MDUzMzY1
ODM4NDM4NTAwMzI2NjA0NzAxNDA2NjYzMjc4NDUxMjQ0MDMwMDg2NTYxNjYwMjc2NTgyMDE2NDI1
ODg2NzUwNTgwMjY2NzE2MzI0MzA4NTc2NzMwMTQ1MzAwNjI3NDI2NjU2MDgzODA0MjYxMzY2NjY1
MzAyMTczNzQxMjE3NjU1Mjg3NDI1OC4KK1BBU1MgKDEyMzQuNTY3KS50b1N0cmluZyg5KSBpcyAi
MTYyMS41MDgzMDcwMzcyMzI2NSIKIFBBU1MgKDEyMzQuNTY3KS50b1N0cmluZygxMCkgaXMgIjEy
MzQuNTY3IgotRkFJTCAoMTIzNC41NjcpLnRvU3RyaW5nKDExKSBzaG91bGQgYmUgYTIyLjYyNjc0
YTBhNTg4NS4gV2FzIGEyMi42MjY3NGEwYTU4ODQ5MTQ1Njg0YTQ2MjUwNzM4NDIxOTc4Nzg3ODk1
NDczNzY4OTk4OWEzNDc2NDc2ODA4NzYwOTVhMjM0NTg2MDg4NTA0NjAzMTI4N2E5YTE2OTRhMzk3
MTMxOTM0MTQyMDI2NzQ1MTY2YTcwNDM0NDc3M2E3MzcwMDgwMjY5NDY4MzEyNTM0Mzk4ODk0MTc1
NTU0NmE4MTQ4NDk1OTRhMzY0MDI5NjA3YWEwNzcxYTI0NDcwNjg5MzBhYTU1Nzc1OTk2ODk3MjU3
YTM4NTU3MTYzNDAyODZhOTk2OTM5NjY5ODY4NDI1MDU2YTQyOTQ0YTQ1NDM3MjUyMDIwOTk2MDUz
NDMzMTYwNDU4Mzg2NTkyMDc1NjJhMDA1MTlhNDAyMzYyMmE4MjYwNjUzOWE5NDczNjY0NTMxNzA1
NmFhOTQ4MjQ2OGE5OTY5OTRhMzQ3NDcxMTUzYTcxYTg2ODRhODgxNzg2NjM0OTI5NDEwMjMxNTU0
MTMzMzk2NDY2ODEwYTEzMTAxMzc5OTlhYTk5MTEwNzY4MjEwOTlhMjAyNDc1NDEyMTM3MTUxMTgx
MjMwMTk1NzQ2MzY0NDEyMDk0NTI0MTQ5MTRhNjk2YTI5Njk4NDkzMjg5NDQ1MzBhMzQ4NDQ1MzM5
MjI5NjUzMDY4NDhhOTVhMjE4OTQ1NDMxNjE5Mjc4NzMzODA3MjI0MTExODAzMjEyMDc1NzgwOGEy
NTg4YTkwMGE3NDE5MzkxMzI0MDYxYTU0NGFhMWE3NGE4YTkzNzM2NjkzNjI5MjdhNDAyMGE2Mjhh
NzM0MWE5MjA1NTkzODJhNDczMjkxNDM5Mzk0YTUyNDQ3NDU1Mjc4MTkxYTAwNzQ5NDQ5OTEyMjM0
NDZhMDk1Mjk4NTc5MzhhODk0NDE4MTg4NDcxNGEzNzU5MjQxNjMwOTY1MjU5NjA2MGExNTk1MDE2
NzI1MzQxNDM3MDI4NzU5MzcyOTM4NjU1MDM4MDczMGFhMjEwNTlhMDQxMzFhMjc0OTM2YTg0MzM0
ODkxOTMyOTYxMjEzMzI3MTk5ODM3OGE1NzUyOTc5NDI1OWE1NjQ0YTUxOTE1ODEyYWExMDIzMjA3
MjE0MjI1MTE1MzM0MzYwNjQwMjZhMjY4YTQ2Nzc0MDEzMTA4NzA2MjAzODY5MjVhNjIyNDU0MGE3
OGE4MDMyOTQ1MDY1MDE3NDcwNzg1MDg0NzkzMjA3NzYzYTNhMDJhOTQ0OTEyNzQ0MzY1OTg1MWE5
ODI5NzkyMDMwMDM1MzQwMjA4MTM0NDAyOTM5OWE5MTIxODUyNTExMTA1NzE2YTkzMjUwMTMyMjIw
NzQ1NTFhNDY2OTczOTk5LgotRkFJTCAoMTIzNC41NjcpLnRvU3RyaW5nKDEyKSBzaG91bGQgYmUg
ODZhLjY5NzkzOGIxNzcwMS4gV2FzIDg2YS42OTc5MzhiMTc3MDEyNzI5MGI5OS4KLUZBSUwgKDEy
MzQuNTY3KS50b1N0cmluZygxMykgc2hvdWxkIGJlIDczYy43NGE5MTE5MWE2NS4gV2FzIDczYy43
NGE5MTE5MWE2NGNiODY4NTBiYzA4YTY5NDM0MGM3NjU5Nzk2MzRhMDEwNzA2OTkxYzA4OGE2MTAx
OGIyOWExNmE3NDA5Mzc5NTY0MDc5Mzg0NmE3NTIwNTg3ODE2YmE1NjQwNWI3YTg3Mjg2OWIzOTVj
MzM2Y2E1MTk0NzRiYWExNzUzOTE2OTE3M2E4ODBiNDljMTc4MDc0YmE1NTFhNTc4MWExMTUxNTI3
OTMzMjQyOTFiOTI2MGI2MDMzMzU3Mzk1NTczNzg0NWIwM2EyMzIxYTY1Mjc3YTc4MDkyM2IyNjI4
OTg1OTc5NzNiYzRiNjY5NzA1NjgwYTBiMWI4OGIzNjZiNjM4NmM5NjIwODk3OWMxNGE5NjMyYzUx
NjMyNjg4MzUyMjg0MDE2NWIzOGM4YjQxNWI3YTMzOWFiYzZjYTcwNTFiMGFjNzAyNzcyNDRhMDU0
NzdiOGEwYTA5Y2FiMDcyYTI3YjkyMDM4OTQ3N2I2NTYxNjgzMTExNjUxNDQxOWM0NDUxMjk2N2E5
MmIzOWNhNzNhYzAxYzQ2MWI2NzM1Y2EzMWJjYzE3YWJhN2E3NjQxMmE3YTU5OWE4YzIxN2M2YTc0
YTY3YWE2YzQ2NjQ0MzIwNjU3MzJjYWE3YzI0YTE4NTYxNzA3NDg2NDdjMmIwNDljMTljNTcyMzIz
YzAzMzAxYzI4M2I2OWNiNDZiMDlhMDQ1YjQ0NGE0YzdjODI5MDE2NTY1ODMyNjc2OTczODliMzE4
YTczYjE3MWExODQwNjMyNGE3OGI1YzQ3OGE5YzY3Yzk5Yzg3N2IxMDc0NDhjYWM2NTE5NDU1NzBh
ODMyMjBiYWE0YTMwNDgxNTcxODk4NDVjYjY2YjczNjFjMTI5Y2MzMDE2YzUyYzRiODU4Y2IwODc0
Y2ExMjJiOGI3YmE5MzMzYWE5NDYzOTFhMjRiOGM4Njk1ODk2ODc3M2JjMTgyNzgwMjJiMWJhNzZi
MjQ3MjdjMmNjYTU1NDQyNjk3NTQ5MzkyYTE1MjkyNzEzOTIwOGMxMjc0NWJjMjZhNWMxNzQzMjMz
Mjk5MGEzMjY3OTE1YjA2MzMxMzc0YTdhODRiOTQ2OWMwMjA4MzU4MjkwMzM3Yzk5Y2IzMjNhOTA3
NmEyODRjNWIzMThiYzgyNjk4OWM4Yjg2NjNiYzI0OWE5YzY4NzM5NTUwNDk1ODgyNWMxYTU0MWIw
ODcxMGJiNjQ3Mjg4Y2E0YzExNzljYzJhYzg0NzYxMTIzYTdiMjc1OTEwY2I3YTQzYzE4YzI5M2Ix
Yzc1NGIwMWNiOWEyMTE3NjczNTZhNjI2ODg3OTgwYjM4NDgyMmMxNGE1NzQ5NDMzMTk0NmE1Lgot
RkFJTCAoMTIzNC41NjcpLnRvU3RyaW5nKDE0KSBzaG91bGQgYmUgNjQyLjdkMWJjMmNhYTc1Ny4g
V2FzIDY0Mi43ZDFiYzJjYWE3NTczNWNjYjQ1OGEwZDBiNmJiNjEzMWI5MTE0NTM3LgotRkFJTCAo
MTIzNC41NjcpLnRvU3RyaW5nKDE1KSBzaG91bGQgYmUgNTc0Ljg3ODk1OTU5NTk2LiBXYXMgNTc0
Ljg3ODk1OTU5NTk1YTRiYmFjODBiYzFlOTBlZWI1YmM4YzE4YjNkYzc3YTU5NjIxMTZiMTU5ZDY2
YmJiN2JkOTVhNGM3OTg0YzYzMzIyNDM0NjE1ZTgwMjM1YjhhNDgyNjY5YTg1ZTk3MjE4YzQxNTE4
ZTAwZWI4OThhYmE0NjM1OTNkM2I0ZDAwZTdkYzFkMDM0M2NkMjcxNjEwOTZkZDgxMDU5MzY2OWQx
NTYxOTgyYmNjMzVjZGEyZTU0YzI4ZGU3NzU5YzE1ODZhZGM4NjcyMDliMDM0MjkzMDM5ZTAzYmRj
ZTI5Y2I2YThiZTdkNjVlMDk4NDQwOTQ5ODlhMmQ1MzY2M2QxMjIzMzBiYzk0MDQ4ZDFiZDY3NzIy
YTg2ZGIwNjhhMDY3OTAyNWQ3OGRiOTMxMjI3MmM4YjkxNjcxNTk2ZDc1ZDgwYzUzMzMxZWIwMTg1
NzljODMxMTVjMmQwMDU4MWRiOTEwZThlNGNiNDRjNGM5NThjOGQ4NmRkNTlkNTU0MzliN2M4NDlk
YTMyMTMwZGVkNTNhNjk3YTI2YThkY2VhNmI4ZGRjMmFkMDQ3NjI0YmJhOTIyOTA5ZDhjMmQ0ODQ2
MGJjMzNhMmU4MTZkOWVjZGUxM2Q2ZDI0ZWU2NTg5YjBhZDlkNjk2Y2MyODc1M2I4MDIwYWQyMWU4
NmFjNDM2MzkxNGFkYzRhODcxMzlhYjE4ODMxMzQzOWNkMmVhODYyMmI0YmQ1NDAzM2U4YTRhNmU2
MWE4MGM4MjI5ZGMzNzM5OWQ3Mzk3OGQxZDM0NDNiMzFjOTg3ZTE1ODkwNDIxNGNjZTc4NWQ4NGUy
MmUyYTYwNjIzYjE0MTI5MmU2NzU3NWIxZDFhMDUwZGJjY2QwMmM0NzMyNjM4ZDI0YjRjMjI2ZTlk
Y2MxYTM4N2NkN2QyYTFlNzk3ZTA3NTdhOWRlMTA4ODQ2NzE5YWFiMjk5OWI1ODY2OWIyMWFiMDZj
ZWUzYWM2ZTI5OTkwNzgxNTA1OTU4NTk1YTRjZTBiZTA3MTBjNWIyMTkwMzY1YTJkYmJiYzVlZWE0
OTkzNjY1ZTFkMjUyNjZkZTM3YzE5NjA1NDg4YTJiMWNlMDU0MzYxMDk3ZTYzYzA4ZWJiYjdkZTcw
OTI0NzZkZGIwYjUyYzg5NDcwYTk1N2I5OTliMzRiMmJjYjczMDA1M2U4OWVkNDg3ODlkOWEyMDQw
NWIzNjBkMDg0YjM4MDU2NTk5MDBiZDhiODMxODUyOTI5YmI1NDJlNDVlMzgzNmMyNmM0MjNlODQy
MTcyNDYxOWMyYTk3MjVlNDM3Yzk2YTgzNDg0OTYxOTg1ZGRjMmQ0ZDhhMDYwZGFlMTE3ZDcxMGMu
CitQQVNTICgxMjM0LjU2NykudG9TdHJpbmcoMTEpIGlzICJhMjIuNjI2NzRhMGE1ODg1IgorUEFT
UyAoMTIzNC41NjcpLnRvU3RyaW5nKDEyKSBpcyAiODZhLjY5NzkzOGIxNzcwMSIKK1BBU1MgKDEy
MzQuNTY3KS50b1N0cmluZygxMykgaXMgIjczYy43NGE5MTE5MWE2NSIKK1BBU1MgKDEyMzQuNTY3
KS50b1N0cmluZygxNCkgaXMgIjY0Mi43ZDFiYzJjYWE3NTciCitQQVNTICgxMjM0LjU2NykudG9T
dHJpbmcoMTUpIGlzICI1NzQuODc4OTU5NTk1OTYiCiBQQVNTICgxMjM0LjU2NykudG9TdHJpbmco
MTYpIGlzICI0ZDIuOTEyNmU5NzhkNSIKLUZBSUwgKDEyMzQuNTY3KS50b1N0cmluZygxNykgc2hv
dWxkIGJlIDQ0YS45YWViNmZhYTBkYS4gV2FzIDQ0YS45YWViNmZhYTBkYTJjNWU4ODc4OGQwZjUy
ZDJlYmMwMjNhZTU0OTQ5MjZkZTU1MDcyZWU0MTE0ZmIzOGdhNTI1OGRkMjRhMWdhNDI1MGJiMzIy
NDdnNTgyMTE0ZzkyZ2M5OTQ2MmNiYjVkODU4NGEyMWQwOWVhYWRnMDBkYzQwZWM5MzhnZ2RiOWUy
MDkxZ2YyYWM0ODI0NDJmYmNiYzI4Y2RlODJhYTZlNzllNmE1N2FmMzhlNTFmZzE3NjUyNmRhYmM2
NTQ5OTAwYzg5NzYxNDBiYjRmNWNkMGQ5YzY0MmJkYmI3ZTcxMzVkMGVhMzVmZWI1ODA1ZTdiYTk3
OTc1YTFmMmZhNDVmNjJlNzc0MzA3Zzc2MGVjMjMwZTQzMDY0ZWRnNTE3Z2Y3YzljOTNkMjRjNDNi
ZzI0MDk0NDA2YjBiNDc5MmNnNTRhMzhmMmIzMDY1YWdnMzkwZWZlMzNlNzY1NWYwMjg4ZDMwZWM2
YjZjYjk5NDk2MTYyNWQxOGc2MzZiZjFnMzQ0M2MyYTlnNWRjMjIyYzU0NmM0MTdhNTBiM2U3NGRm
OTRkMjE3YmdlZWU4ZmFkMWNmNWMyNTE3ZzllN2JhYmVjZDM4YjcwOTJmZDljZzUxOWcwMjlnZjcw
MWE4MjllOThnMzc0MDJiYzQ5NmRjM2cwZjE0NzM1NjRiMzNhZWVkZTVjYzcwZ2U1ODc3OGRkYWQ3
MzBmZWVmNDA5NDQ5YWNnZDJhMmJjYzE5MTdiNzk3Yzk0ZWM1N2ViNGc4ODA1ZTk3MDhjNWc1N2E3
ODYyNjAyOWI1YzI0N2FlMTJnZjhlN2M1NGJkODAyNGNmZ2M2M2ExZjcyM2QyOTVjZGYzZ2RmODNn
ZzE3NzM2YTg0NjE0ZzFmNjhkZGQxZTQ0OTRmMjdkNjFiYTU5MDFmMjM4NGQ2ZGVkYzc4NzViMWJh
YmI4ZzA5NTcwZmEzZmQzMmYxOTdkNTlmZzQ5OTcyOTI2MWc4ZmdiZzc1M2VhZDRkYWZjZmYxZmE4
ZWY3MTlhNjk0ZGI5MmE4MGY1MzVjNjEyOGVnNTY1OWE2OGVmZGdnZDliMzJlYzY5NzBlN2NiNDFm
Ymc5OWFmMDJkMzhjMWVnYjgyODQwN2VlZ2NjNGNmOTg1Yzc3Z2dkZjVnYzViNTRhOGc3YmRkNGFn
MjMxOGdkZjM1MTJlYTdhNDFkMWJlMmM2NjVnYmM1NjE5MzQyYjkyMDBmMGdkYTljZDJjOTU3YWY2
ZDI5Z2VnZWU3MjI4YjdkYmFlN2Y2Nzg4YzRlZzQ1NTZhOWNhMmUxM2U3NTU4OGczNjliYTEyNzJh
MWI0LgotRkFJTCAoMTIzNC41NjcpLnRvU3RyaW5nKDE4KSBzaG91bGQgYmUgM2VhLmEzY2Q3MTAy
YWMuIFdhcyAzZWEuYTNjZDcxMDJhYmYwM2RkM2ZjZjA1MzU2MzhkOWQzMTNlaGE3NWI0OS4KLUZB
SUwgKDEyMzQuNTY3KS50b1N0cmluZygxOSkgc2hvdWxkIGJlIDM3aS5hZWQxMDJhMDRkLiBXYXMg
MzdpLmFlZDEwMmEwNGQ0MDc4MmViaDFlMmdjN2k1NThjMzBmYmUyMzBkaGE1NzAxOWUzYTMwZTQz
NDIyMGY3MTQyYWIzM2Y2ZTRoM2VjOWhhNTdiNDc0YTUyYTlkZGhlYjE1MTU5NGU3NjYxNDE4aWYx
Z2djMjRoMjZlNjU3NDc2OWcxNDhjMjc4ZWZjNjNkZWQxMzYxNWJmNmIxaWdkZGlnMWk2ZDBmZmU2
NGE5ZmFhZDViNGdmMjQwY2QwNzRiNWhjM2lkYWZlYzFiZTc3ZzRjYjA3NTVnOGEwZDY1MmNlZzll
NzQ5YmRhaDU2YTJoNWQzYjk0Yzc0ZmYwYjc4YWlkZ2FiNjkzaWYxMGFiOGgwNDY0MjUxMzdhZTUy
NTBmMDRjMDdkYzIyaWZiZGEzZmdkZWg5YTZlMWQyM2Q1ZWJnYTI5M2dlNTgxNDQxZWViMDdiODg0
MTk3NDI0YjBjM2dmZWNoNzgyMGZiZ2c5NWVhaGRjM2FjZWFoY2k2NWk4MjNkM2gxNDZkZDgwaWVm
ZjIzYmk4NGJlYzIxOWVhOWhlNDdpZzNnMzA5Y2kxaDdmMGkwaTI5YmFiNGIxZmhkMTlmOWVkZjRp
ZjFmMjhhNWIwYmFjODdjaWhlMjhhYmJoMWY0YWJlZ2JhMjJnZWgxYzZoNTJjMDdlMGNpNWdpODE5
ZTQxZDNkMGZkZWU1MGgyN2M4aGlkMDNhOTVnY2Y0aGFjMTYxODhhZTVpaTcxOWRpODVhZDNhOGZk
MDU5YWE2M2IxZ2U5ZmM1NDFoZjY5ZWU2NmdmMDE3NWI0MWNhMWRoYWhhYTM5aGM3aWQ3YzkxZGM4
ZDA5ZTdoMGlkMDI1MjUzMmRnNDkzZzVmODBhMjA5YzMxZjQxYzkyaWZoMDJpMjNpZ2VkMDZpNmNm
OTc3N2czYTEwaGlmM2kzMjE3ZDMyYjAwZmlpN2FnNGM4ZWU5aWFkZjMyMDFpMzY2YjRnMjNnYzUw
NWc2M2M4NDZiNTEwMmQ1Z2c4NmRoaDJkOGVhZjMwMWFjMTNjZzBmNDVkMTcxZmY0NzlnMTk5NWYx
aGM3YzdpaTFpMGI5ODFlMmUwNDJiMzcxYTY4aGI2NGM1Zmg5MmhmMzBmZDcyZTA3M2JmNDM5YWUx
MGRnNGc3MzloMTcwZGRmMzk0Y2JlYTkwaGg1NDkwZmlhODNkMzZiaWdmNzJhNWVjZjhjZjEyNmQ1
NGg3Z2hkZWc1ZmljMGkyMWRiNzdoZjg4aGFlZmRiMTJoMzIyMmZjNWM3ZDMwNzcwN2g1Y2VnM2kw
MWExN2JlNWMzMWE1Z2I5ZGhhZDZjYTZpY2E3YzRiYTQ0OTE1MDRiN2gyMWMyZDgzYjJkYjNmaTY3
Y2guCitQQVNTICgxMjM0LjU2NykudG9TdHJpbmcoMTcpIGlzICI0NGEuOWFlYjZmYWEwZGEiCitQ
QVNTICgxMjM0LjU2NykudG9TdHJpbmcoMTgpIGlzICIzZWEuYTNjZDcxMDJhYyIKK1BBU1MgKDEy
MzQuNTY3KS50b1N0cmluZygxOSkgaXMgIjM3aS5hZWQxMDJhMDRkIgogUEFTUyAoMTIzNC41Njcp
LnRvU3RyaW5nKDIwKSBpcyAiMzFlLmI2ZyIKLUZBSUwgKDEyMzQuNTY3KS50b1N0cmluZygyMSkg
c2hvdWxkIGJlIDJnZy5iajBrZjVjZmU5LiBXYXMgMmdnLmJqMGtmNWNmZTkxaGs2ZmczODNiMTkz
OGZmOGQwMGg0azkyOTU5NTlqY2JqOWM5MjgyZTg0MGIxNjlramkxZWczMjg5M2FmZTA2M2YwYmJm
a2VmMmNiYWVnY2EwMzViZjEwYjJhajNlNmY2Zmcwa2czNWs4ajgyajgyZTA4ZTZiaTBjMmllOGho
Y2djNTdpaDZhZWdiOWJoN2c4MDg2MTlrMjY0aDZoYzI5azgxMmE3MGdrMjEwZzMxNWQ5YmZoN2lm
Nmg2Y2s5NTExYjJrZmIxZmc0ZWQ2NmdkaWdiNjQxNzM4ZDVhNjVnYzc0OGUxYjY4OGNpZ2tjaWY1
MWNiMjYxaGQ0amhqNWg0NjAyZTJhZGRiaWUwZDNkNWRjMjZiaGtlY2VhOTYxaDRpYTgzOGUyYmM5
MmFnMzRhMzcwYzZlamFmMjdkamllYmdoY2gyOWZlZWtqMTdnZjYyZzc0ZDBoNTc1Zzk0YWVrZDdr
ZGZjYmI1NWVqYmIyZTk2YmhqN2I5MTQ1MGphYWIyNGppaTNhZWhhZWQ2MTQxZWozZmNjajhoZmpr
MzRraDVpZGdoZmI4ZDFraDM5YWRhZjJjZTVlaDc1NmVqMDg4Z2c5YWI5OWZiMzMyMTU4ZGNkNTli
OGFoMTA4ZWkzNDMxajZpMTFrMDkyY2lpYmtoMmloOWRnaDliMDkyMjExOWM5ODY4NGIzODg0NjYz
MGRpZWpnNjBrMWQ5M2NnNmlmazU3ZTU0YWtpaGJpODlraDloMDg0Y2tjZzVhN2lpZWc2YzAxZTkw
ZDA5ZGJhaWs5YjE1azlrZmowaWdoMDBkaThiY2VpNGlmZWszOGhlZWEwMTRmMGVpMmFmYThpYjA4
aWk5ZWcyZTBrNzFkNDM5MDZmMTNiYWMwOGc5ZTZmMjJiNzZraWhjYTFhMTNmZjBlY2k0MjE3aDc4
NGFoZ2Q1Nzg5ajMwOGJkZ2ZqZ2VraGtqaGY2ZmU0M2RraWg0MGhiMjE2M2k2MTNkZDRnMWpmY2Ix
aWJjNGk0Njlla2JjMzhraDk5aTkzazE0YWc3aWtlamZhNTI4YzM4ajkwZmhhYjhrZWFpOGNjY2lr
ZzVmNjk3NDk5MzRkMjg1Nmk1OTA4amgyaGg5OWY1amlnOGhoMmVoNGNhOGdoMTlrN2gyZzBhNjNo
YmM5NmQwa2cyN2tlMDc1OWRjODEwN2U2M2pkMGRka2I4ZmUwa2swYTA0Y2lhZGFpYjUxa2YxMDFp
MzY0aTBpYzFnZWRoMTQ1aTJnaGk0aWU0ajFhZ2MzZmdiNWhja2pqNGVhNWVrZTA0aGo1OWllOWU0
aGM0YmNlMTZnaGYzN2c0YjdmaDNqaDQzYmZjNTJhODEuCi1GQUlMICgxMjM0LjU2NykudG9TdHJp
bmcoMjIpIHNob3VsZCBiZSAyYzIuY2E5OTM3Y2FrLiBXYXMgMmMyLmNhOTkzN2NhazFkNTAyMzk5
ZjJoa2E4YTNjODdoMGtjNzZmYTZqNWIuCi1GQUlMICgxMjM0LjU2NykudG9TdHJpbmcoMjMpIHNo
b3VsZCBiZSAyN2YuZDBsZmpiMWE3Yy4gV2FzIDI3Zi5kMGxmamIxYTdjNmNhYmZqN2dlZTMzamRq
YTlmZzljbWpnMzc4ZmhlYTE5Y2ZhYmc4OTZmaTBhYjFnbDgzOWZpbDVjZzhkajFoYmdqYWdiMGls
bTg4ZW0ybDllM2pnOGhtbTE5ZWJtbWpqNmZrMWwxOWZnNzAxMWMxajZqaTNjNmJsMWxoazNraGJs
MTA1YzJkM2NlMWoyYjM4MThhbWw3MmxjaDY1OGVsYzRkMWg5ZDk0Y2o4NjFlZzc1ajBrNTlmZGw1
OTZpOTc4YmU4MjFsZ2tpbWw1ZGE3MmJkM2owaDU2M2g2a2hmNzBtNjRkOWgyZWFjNDZsNGEyZzMz
NWkwMTBoZGwwaDVoMWI2MWFnZGhtZDdrZG1tY2gwNWlsamFkaGgxMGk4NmxhaDFhamY0Zmo3aTJt
OGgxOGpqZjJhbWQyZTY2YTg2ZWkzajBoNzdiN2tmNmo2NTdhbTFmNmltamFhYTI4ZjAyMW05YTEz
aWNrYTUzNmMwZmE2NWFhbGJibGllaTI2Y2xsMzhhYzFjbTM0M2gwZWM4aDBrNG1oMWtiaGxhNmE5
ODg5bGxqNmRiMDdlYjlnbWZpaGdnZDFrYWltNzBnYjZsMDgyamNhbGRnMzUzYWU5aTM1Zzc3ZmVt
N2JnNzdrN2VtNGM0MWZoYmVqbWhoZ2dqNGJsbGkzZjc1MTBsNTVsMWowYzBoODYyY2k5aGUyZGxh
a2kyajBpZWFoMzZkOGkzZ2YzZGk3aDA5NWFqa2JkM2FtZ2xnZ2M1aTZpZmg0MDc2ZzQzNmpjYzli
YzMzNW1iZ2VjMjNiamdma2k1NGZtOWZjMTA1YzJnMWw5bWM4bW1nbTFqM2U4aTk2aGpkMzhpYzVr
ZWI4bTUza2Iya2NlYzE4YzA0MzY5bGc5N2RrNjYwaWRiaWpmY2ZoOWVmMGcwNWM0MTExNmkxbDY2
NDkwMGpqZjVqZ2tpa2w5a2toajZqOGNsbTVoNTg0bDI4NzVqNGo4YzM1OGs4ajNmODhjNGEyOTdj
YmM4MThqMjZhMGlobWYyMWxsNmtrZm05MTFhZTRlN2hiMmw1aGE4NWZmZGk2M2htazk3Y2RkNG1m
Y2ltOTdnbWhjbGg0M2lnMmo1bWE1YzE5aGxlOGkyaGhsbTJnamptaWFlMzA3NTRtYjdkMGw3ODgx
aWdoaGgwYzBiZmFnZWttMDdoMzQ0YmRsaTc3bTVqajk3ZzY5YWVnODE2M2VkNmFtZ2ZtMDM5Ymoy
YjlpYjlhbGRmYTEwM2k4M2NlYmgwYmdkajhtN2w4MjNrMmQ2aDRsOG1pYTloazY3M21haWEyMm1p
azRrM2wwN2gwMm1iOWc1NmxrMjZnM21pY2owNTNnLgotRkFJTCAoMTIzNC41NjcpLnRvU3RyaW5n
KDI0KSBzaG91bGQgYmUgMjNhLmRlZTRuajk5ai4gV2FzIDIzYS5kZWU0bmo5OWowZmc3Yy4KLUZB
SUwgKDEyMzQuNTY3KS50b1N0cmluZygyNSkgc2hvdWxkIGJlIDFvOS5lNDk5OTk5OTkuIFdhcyAx
bzkuZTQ5OTk5OTk5YTFpMTltbmtnNDFlaTJvMmdlYTA2Zm43ZzhlNTNhZzNjZGRqazdsb2tkZjgx
bW42a2U1amprbzFvZGxiYzU0NGQ4Ym9pY2k3ajNvbTlpZmozYmE3ZG01ODRvbDBiZ2ZjODc3bjJn
LgotRkFJTCAoMTIzNC41NjcpLnRvU3RyaW5nKDI2KSBzaG91bGQgYmUgMWxjLmVqN2ZhNHBrZi4g
V2FzIDFsYy5lajdmYTRwa2ZiNWkzOTYxbzhrODMyaG01OTRoOHA1NThnYms4MzZkLgotRkFJTCAo
MTIzNC41NjcpLnRvU3RyaW5nKDI3KSBzaG91bGQgYmUgMWlqLmY4OTcxNzcyay4gV2FzIDFpai5m
ODk3MTc3MmppY3FpZ2JnZWxuMzE3NjYxMmhqYzJsbWRoMDU1YjZrcWpxOWs3YXFlbWkzMWM5OTlx
a2prMTgybmttNmlpb3FvcGoyZmdqcTJlZDkwN2Y2OGk0am1vbWNscWUwN21mb2JtYmM4ZTExaDIz
ODJoZDBwbWYwcHFjcTlrODBkNTJnN2E4ZzloMWVnNDAzZTNpNmpiaXE4bGE4Zzk1MTJsaXAyaDlu
cGJlNmRjZm0zMGVkZTVuNW02ZmhrOGE5bmJvNmc1aTJrNjA5MDhoZG84MzhuNzIwZmZuYTYxZzIw
Zzc1ZmtsbGQ1azMyMmhsampxcG5kZWVlY2duazlhOG9mOGYxaDRlZGRja3FtMnFtbzIyYzZwMjFw
aTljbWRoZmI4bzk3ODU5Mzg1ZGhuYWQzY2k5a2thZmYzZjBnNzU5MjVkM203NmEyZWpvZGRmY2k4
ajdqaXExODVnZ2luMWI5N3FoaHBxYWJlcTNiaGlsaGhxcGxxN2lqMmw0aGlkZG83N2hvY280NGZk
bTg5azcyNnA2NWgzZG1tNmEwazhhOXA2Z3BibzFiZmxkN2FtcXBiODUzcG1vYTBta29xMGM5MmRr
cTlmaGIzbWU3aGUzNG8xNmJraDZlbnBvZWQ1YmFhNzVlcGY3YzYwOWhhcTdraTE0cWttZDdvNTlp
MmttMzMwcTJkamkxMW5kZWthOGltbzk5cDRsNGs1bjdlNmg1M2M0YjZkZG4wbmlmbzRsMWNqaDds
MzBkNGRhcWwwbzloMTE3ZzQxbGI1cDhkOGYwOW9pNGwxYzZrMzhoZGo3ZDEwMm9oMWswOGZoazBm
Y25xb21paGk4NmxmOW05OGhmbTA0ZTkwaXBjb2pvMmxvNDgxYjZrNTkyNWNtYTZnam44cGNucWRj
OTM2aDhuNzdkZTZoZjloYzQ2YmdwbWFoamlqbGxjb2M3bGJkaTZtbG0ybW41MjQ3a2JrYWVqamVt
ZzJlaGlvaTc1cDY0YjlxN2NhZTA0Nm0xYjdlcXA3NDM0OGtxbWo2NDNoZjQwbzQ4bmE5bG0ycDNr
M2NmM2VhbGwyYXFrN3A3M2g1aGdxNms4MmNsZ24xMWtkY2IxNTBjcTU2MDdqcGFkb29ucHA1aTc4
YTNsbWhuYmJxNGw4MzI1YTAzaGQ3bTM3Zmw5NGlnaTQzY2dwMGc0aGdkNWhrcGsxZ2lqaGVhNTA4
ZXFiZ2RnbWJiaWtoOWs2N2Q2MGhuZTUybGM2OGM0amY0OTFrajhiaTY5MXA5MWQ2YTRiZzFwcGtu
M2NxMGgzNG9jOWIybWozM29vbGxxajVwM2M0N2xnODNsMzJqMGtlcDhqbjExbW8xNjA2NjdwLgot
RkFJTCAoMTIzNC41NjcpLnRvU3RyaW5nKDI4KSBzaG91bGQgYmUgMWcyLmZvZWxxaWE4ZS4gV2Fz
IDFnMi5mb2VscWlhOGViZmxkZTJjOTg4bC4KLUZBSUwgKDEyMzQuNTY3KS50b1N0cmluZygyOSkg
c2hvdWxkIGJlIDFkZy5nY29nOWUwNXEuIFdhcyAxZGcuZ2NvZzllMDVwbzBuaDFuajAzY2JnbzFz
NGlkNWtmMmZxZjhucTdyY29rcjVyNjNubzZiOWhqMWduaGpiY2M0bTZrZmM3ZmRlMTdjaGRwNXFi
ZnFjNTBmMnNxam1xb283NHNtOWs1bHNrZ3ByOXI4ZmQ1Y245MzQza3I4MTE1b2lmcmsyZzdobm5y
bTFxMWVzOTNiM2xscmloczkzc2kxczNiY2plcXJjcGJnaTBrYWhocDNkNGdwY2txbWFpNzAxOXNp
Y25tOTlpOXNzYmM3ODM1MTRkNDdmNnFtNG04OXA1cmQwaHBlYXI4cDNscjBsY2lnbzIzYmZhMGgx
YzdlMHJqaDY2MHI4ZWY1aDY4ZjBxYjc2N2MyMnJubGYzMjIzcWNhcTlvYjBpaTY5ZjIxcThrajI5
YjI5ZjNyczM2ZjU2cmtzZHE5NDM4Y2k5ZTE2aGxnM3JxbTNtajdnbXJmc2w1NjYyc2c3b3BpMWVn
YmFwMm9yZWpmamdocjZvYWtoZ28zNHMzbWRuM3A4Yjk0aXBmam82NGNtaGJpY2dpcWs1M2I0Ym9z
amhtaTMycDBrMWlhbWZxaTk2N2E1NjRzcnBhbTFoOTQxZjZrNm1obnA0YmY5ZGtyaTVxZHE0ajVm
bWtsOG9iaGQyNjk3cWMyazFzMWVramNxZzdvYThha2Nma2hsb3JrbXFkNGhna2g2aTc0bDFhcGo4
MGtmNjY2cDMwZmgxcTlkZzhhOGxqb2VhZ2NqaDM5MTM5b2ZncmVsZjFmNm9jOG02YWcwZ2NpcDg5
bzcxc2c4YmVmZ2E4bjBraWU3bzIyN2Y3cXFpM2llamtsYzMxbjRtZ2hsMjRkNDdqODk1czU2YTY2
ZzczbWtwNnM1ZWcxOTExZTA0amRjNWxrcnJybTBnaW1ubTVyYzBlb2Rlcmtqb2Y1NDVkcmNscGhq
NWwzZm9yZ21uaWJkcG80czQ2M3JnOWFnNG5rZTUybWliMDdoZDI2amhiYTVpcDk0YnAycTA1YjZu
amxyZTMzbWlrYjhyNjFsNThlaWk5NjJpNmFvNnE4aW9zb2s3c2loMjFkZjFjMzNtNGczM2ZiYmtl
NzA5c3BqOG0wZmRuYzBybWw2Yzk0cHJybGU0NjE0YnMxMDY5a2NrNjJnNDhrZTM4NnJia25uMnNh
azcwc2xqNGo0OW8zOWNzNmg3ZXJpM2xiNG44ZDdkc2EyNzltb21zM3FnMjhuMjZkaGRkbjlqOGNr
azY5N2o5a24ybGs4b28zOXAwOTllbzcxcG80aGw2MjU1b2Y3bTY1N2ZvbHNwcGNjNWczOWFmcWJx
ZjVkczBxOTdhMzJra2lmMG9tbjYyaGY1OGcwNjM4Yi4KK1BBU1MgKDEyMzQuNTY3KS50b1N0cmlu
ZygyMSkgaXMgIjJnZy5iajBrZjVjZmU5IgorUEFTUyAoMTIzNC41NjcpLnRvU3RyaW5nKDIyKSBp
cyAiMmMyLmNhOTkzN2NhayIKK1BBU1MgKDEyMzQuNTY3KS50b1N0cmluZygyMykgaXMgIjI3Zi5k
MGxmamIxYTdjIgorUEFTUyAoMTIzNC41NjcpLnRvU3RyaW5nKDI0KSBpcyAiMjNhLmRlZTRuajk5
aiIKK1BBU1MgKDEyMzQuNTY3KS50b1N0cmluZygyNSkgaXMgIjFvOS5lNDk5OTk5OTkiCitQQVNT
ICgxMjM0LjU2NykudG9TdHJpbmcoMjYpIGlzICIxbGMuZWo3ZmE0cGtmIgorUEFTUyAoMTIzNC41
NjcpLnRvU3RyaW5nKDI3KSBpcyAiMWlqLmY4OTcxNzcyayIKK1BBU1MgKDEyMzQuNTY3KS50b1N0
cmluZygyOCkgaXMgIjFnMi5mb2VscWlhOGUiCitQQVNTICgxMjM0LjU2NykudG9TdHJpbmcoMjkp
IGlzICIxZGcuZ2NvZzllMDVxIgogUEFTUyAoMTIzNC41NjcpLnRvU3RyaW5nKDMwKSBpcyAiMWI0
LmgwOSIKLUZBSUwgKDEyMzQuNTY3KS50b1N0cmluZygzMSkgc2hvdWxkIGJlIDE4cC5oaHJmY2oz
dC4gV2FzIDE4cC5oaHJmY2ozdDFrNDFmM3VyNDc1bm0wYmcxaDhndTRnMTNjZTJuZTBybTJpcjNy
cHFhZWU1bWY1dGd0aDJvOGxndWY4ZTNiODhiaHB0MnI1MWc3OHVsdXUzYTFmcWZ0aXRuNDZoazBh
Y3E0c3RwZW1obmExa2FsbHBsYm8yMzJmcXRqNGNoMW1rc3Iwa24zOGcyZzNrOW5idHRldHRlaGpy
NTZzdDA0dGNkbjZvOTVndWhpcWU5YTBiY3JsbWhhN2h0N2U0NXVldDVwazBzMzkyOGJqZ3VoaHJj
NGlqOThoaHB0aHU5NXBqdTRkNDA5N3I3aXBjMWsyYjVvOHFqOXFlY2s1ZGZkZXFpbWtwMTU1Zmgy
b2U1bWZrM2Fia2ViYXE2ajNldWJzc3JqZm9kM3AxN2lzNzF0cWllYWY3bmE5OXA0ODJzbGw2anIx
b2locmlidGg1Ymc0MWhhN3FkM3RlbmZmN2cxNzFrZmRndXQ1ODBzMm5vaDlxbHE4bGNrZ3NpdWty
dDIxb25nbm8xamM0NzdyZjA3Y3I2ZDV1anFhN3NybDFiZGtvbjE1NjYxOWExbzlvbG1jdGJpaXUx
aWgyOGZianVwaGNkMG5ncWlqc2g4bjVoNTlzZnM0cWhwZHU2MmprdXI2dGlna2dlbTUwb2doMzdu
M2pzcmRyNGQ4aDd0YTNoODRwMml1cmVvaW1wYTMxZWlvdHQyMzdsYThkMGI5c3FqcTlsOHJhOTdt
NGxkbmVyc2JtcHVuNjRkbDUwamYzMmtvcDZpZGliZjdiZWtycjZwcG90NXV0ZGtuYnEwbGlkMGZr
ZWhvYzNzc2Y2b3JtM2c1MGg2ZW1mc21sMHBwYzFhZTY4ODFkdXVmaXVqM2U4NGI2dWhvbjkzcWs0
YW1lNDk0b2NsYWZkMW1wcHJzaWFxZDhncGk3bTVicm1xOG5yaDJubHJvN3BoYjdwZGxpMXBiMGdm
ZWRsdWgwYmpiOWVubmV0c2ZkanMzdS4KK1BBU1MgKDEyMzQuNTY3KS50b1N0cmluZygzMSkgaXMg
IjE4cC5oaHJmY2ozdCIKIFBBU1MgKDEyMzQuNTY3KS50b1N0cmluZygzMikgaXMgIjE2aS5pNGpl
aXU2bCIKLUZBSUwgKDEyMzQuNTY3KS50b1N0cmluZygzMykgc2hvdWxkIGJlIDE0ZC5pbmY5NnJk
dm0uIFdhcyAxNGQuaW5mOTZyZHZsbW53Y2k5MDg4dmJuZHE0dWY0ZnV0cGlyZjN0dDZiZG5taWtm
NXZwdG93MmxmZG85Z202aGJyOWJ2cmI3c2xkNmNlYjBubTBlNmFmNmIuCi1GQUlMICgxMjM0LjU2
NykudG9TdHJpbmcoMzQpIHNob3VsZCBiZSAxMmEuajlmY2hkdG0uIFdhcyAxMmEuajlmY2hkdG0x
aTBlOGVkYmYwdm9nbjBpdDh2c3gzcjhzOXM1YWw4aC4KLUZBSUwgKDEyMzQuNTY3KS50b1N0cmlu
ZygzNSkgc2hvdWxkIGJlIDEwOS5qdGs0ZDRkNGUuIFdhcyAxMDkuanRrNGQ0ZDRkb2ZsZmU3eGkx
Njl3ZDZveWpxMDF2cWNsMmYxNTBiaXMxY2xpZGdvNHZnM255Ymp0ZW8xbG1qd3h2YWhmeTZkcW53
eWRnYXltcGJjdjBncGdrYTJid2VqZ24wdTBndXRqNThvZzVtNGFiMnVkbHZ4Zm9mcXlqb3I0dHFx
cmcxaWs2bmMxZWx5bmptMHA0M2o0MzY5MXk2Y2Z4aXJybXlub21mbzB4dDgwOHlmdDlwZXZrM2xq
aXdib2FxMHV5cjZoOTg5cG41YWV4c2t3cHA4a2IwaHJ3ZTQ1dm9taXY3cGhrbDFtc3VrOHR5YTdh
YWdqbmRyNWZoa2lhNmlsbHd0anFqdjhrcGc5ajFjbTl5aDYweDB1ZGo2MGN3dTVuZDEyZDU5cDh2
ZzB3czdxdm1ud240N3NkYnhyOTdvNjBzdDhidXNzbDI5MzJ1Z2hqaWl0am5hOXA2czU1Ympka2d4
ZW9idms5ZXVjMDRndTc5cG5hNG9xb3hjdjQ1MjJnZ2JjZ284NTJwbjlqYXlyb3k4NnNmMnExMTlo
eW1ncmN0N2dqN2dpZGJpODhpb3c2NmRqY2JxZzFnNWo2ZmM1dW1iNWZzc2RlNXVxM3J2Yzl4MGc4
MWVvNXVyc2piMXB0d3UxOGxqc2t0dHFpaXhmbXRoaW9ubmo3bDVwN3FlbXF0bjljZHI0eG5heDM2
MWw2MHZpc3RtOHBtamlmZ2JoMGo5c2U2cm5la3l5ZWtuMWM4MG85NWl2YnBubWV3YTFhYzFwMnN1
aDRka3QwcDdqbXNoeDVxYjkyY292NnYxMnduN2R4ZHI4dGl0MDUxbmN0cnk4eXQ3anBzZnNleDQ2
ODN5d2J0Y3g5Y2p1bDUyc2N2MXVkN2M5OTZjd2ExaWVzaHBhNGc2b2N5dndtNzg2bGhoa3dzYnQw
ZXAwYTA4OHh1dW9tZzJocWdhMnBrN2lic2I0NTd1aTVjbGU0MnQ3eWo3dWdmcDJ5bml2aGEwYnhx
czg2OGI1eXE1OWhnM3JpM3Y5YjBha3hnMHhnazNmeDRvNXBjYXliOWd2MHNtMXZoZ2V0NzJnNmxw
MjBmMXEzaTZzdWJjOXFrdnZ5dGNsaTAzN2gzdzQ3eDlqMzQzd3hlNTN2b2RiM2R5bzlxOGE0YWo0
ZGN5c3g5NWs1b3NlMzYyNjdiZTFtZGxpNHRxdzdoY2ozb2Fld2VwZTBsaXZoNThwMXcxdmpjM3cz
MW01YzR2MWtlOTRxZGFtbDQ1ZHVsdjhnajdrNzVid3BkOTdoOWVtdnljYmU3YWt1dmp0MXY1ZDM3
a3Noc3Jla2pmb2RmOTU3am5hazRhZ25rYnY5OTkzeWNiNjlpbS4KLUZBSUwgKDEyMzQuNTY3KS50
b1N0cmluZygzNikgc2hvdWxkIGJlIHlhLmtldHk5c2lmbC4gV2FzIHlhLmtldHk5c2lma2x6c2Fr
cWhieWI5LgorUEFTUyAoMTIzNC41NjcpLnRvU3RyaW5nKDMzKSBpcyAiMTRkLmluZjk2cmR2bSIK
K1BBU1MgKDEyMzQuNTY3KS50b1N0cmluZygzNCkgaXMgIjEyYS5qOWZjaGR0bSIKK1BBU1MgKDEy
MzQuNTY3KS50b1N0cmluZygzNSkgaXMgIjEwOS5qdGs0ZDRkNGUiCitQQVNTICgxMjM0LjU2Nyku
dG9TdHJpbmcoMzYpIGlzICJ5YS5rZXR5OXNpZmwiCiBQQVNTICgxMjM0LjU2NykudG9TdHJpbmco
MzcpIHRocmV3IGV4Y2VwdGlvbiBSYW5nZUVycm9yOiB0b1N0cmluZygpIHJhZGl4IGFyZ3VtZW50
IG11c3QgYmUgYmV0d2VlbiAyIGFuZCAzNi4KIFBBU1MgKDEyMzQuNTY3KS50b1N0cmluZygtMSkg
dGhyZXcgZXhjZXB0aW9uIFJhbmdlRXJyb3I6IHRvU3RyaW5nKCkgcmFkaXggYXJndW1lbnQgbXVz
dCBiZSBiZXR3ZWVuIDIgYW5kIDM2LgogUEFTUyAoMTIzNC41NjcpLnRvU3RyaW5nKHBvc0luZikg
dGhyZXcgZXhjZXB0aW9uIFJhbmdlRXJyb3I6IHRvU3RyaW5nKCkgcmFkaXggYXJndW1lbnQgbXVz
dCBiZSBiZXR3ZWVuIDIgYW5kIDM2Lgo=
</data>
<flag name="commit-queue"
          id="93985"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99494</attachid>
            <date>2011-07-01 11:38:40 -0700</date>
            <delta_ts>2011-07-01 11:41:29 -0700</delta_ts>
            <desc>The patch, style fixes</desc>
            <filename>16652.3.patch</filename>
            <type>text/plain</type>
            <size>50242</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTAyMDIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDYgQEAK
KzIwMTEtMDYtMzAgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY1MgorICAgICAgICBGaXJlZm94IGFu
ZCBKYXZhU2NyaXB0Q29yZSBkaWZmZXIgaW4gTnVtYmVyLnRvU3RyaW5nKGludGVnZXIpCisKKyAg
ICAgICAgT3VyIGFyYml0cmFyeSByYWRpeCAoMi4uMzYpIHRvU3RyaW5nIGNvbnZlcnNpb24gaXMg
aW5hY2N1cmF0ZS4KKyAgICAgICAgVGhpcyBpcyBwYXJ0bHkgYmVjYXVzZSBpdCB1c2VzIGRvdWJs
ZXMgdG8gcGVyZm9ybSBtYXRoIHRoYXQgcmVxdWlyZXMKKyAgICAgICAgaGlnaGVyIGFjY3VyYWN5
LCBhbmQgcGFydGx5IGJlY2FzdWUgaXQgZG9lcyBub3QgYXR0ZW1wdCB0byBjb3JyZWN0bHkKKyAg
ICAgICAgZGV0ZWN0IHdoZXJlIHRvIHRlcm1pbmF0ZSwgaW5zdGVhZCByZWx5aW5nIG9uIGEgc2lt
cGxlICdlcHNpbG9uJy4KKworICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6ZGVjb21wb3NlRG91YmxlKToKKyAgICAgICAgICAgIC0gaGVscGVyIGZ1
bmN0aW9uIHRvIGV4dHJhY3Qgc2lnbiwgZXhwb25lbnQsIG1hbnRpc3NhIGZyb20gSUVFRSBkb3Vi
bGVzLgorICAgICAgICAoSlNDOjpVaW50MTZXaXRoRnJhY3Rpb246OlVpbnQxNldpdGhGcmFjdGlv
bik6CisgICAgICAgICAgICAtIGhlbHBlciBjbGFzcywgdTE2aW50IHdpdGggaW5maW5pdGUgcHJl
Y2lzaW9uIGZyYWN0aW9uLCB1c2VkIHRvIGNvbnZlcnQKKyAgICAgICAgICAgICAgdGhlIGZyYWN0
aW9uYWwgcGFydCBvZiB0aGUgbnVtYmVyIHRvIGEgc3RyaW5nLgorICAgICAgICAoSlNDOjpVaW50
MTZXaXRoRnJhY3Rpb246Om9wZXJhdG9yKj0pOgorICAgICAgICAgICAgLSBNdWx0aXBseSBieSBh
IHVpbnQxNi4KKyAgICAgICAgKEpTQzo6VWludDE2V2l0aEZyYWN0aW9uOjpvcGVyYXRvcjwpOgor
ICAgICAgICAgICAgLSBDb21wYXJlIHR3byBVaW50MTZXaXRoRnJhY3Rpb25zLgorICAgICAgICAo
SlNDOjpVaW50MTZXaXRoRnJhY3Rpb246OmZsb29yQW5kU3VidHJhY3QpOgorICAgICAgICAgICAg
LSBFeHRyYWN0IHRoZSBpbnRlZ2VyIHBvcnRpb24gb2YgdGhlIG51bWJlciwgYW5kIHN1YnRyYWN0
IGl0IChjbGVhcnMgdGhlIGludGVnZXIgcG9ydGlvbikuCisgICAgICAgIChKU0M6OlVpbnQxNldp
dGhGcmFjdGlvbjo6Y29tcGFyZVBvaW50NSk6CisgICAgICAgICAgICAtIENvbXBhcmUgdG8gMC41
LgorICAgICAgICAoSlNDOjpVaW50MTZXaXRoRnJhY3Rpb246OnN1bUdyZWF0ZXJUaGFuT25lKToK
KyAgICAgICAgICAgIC0gUGFzc2VkIGEgc2Vjb25kIFVpbnQxNldpdGhGcmFjdGlvbiwgcmV0dXJu
cyB0cnVlIGlmIHRoZSByZXN1bHQgb2YgYWRkaW5nCisgICAgICAgICAgICAgIHRoZSB0d28gdmFs
dWVzIHdvdWxkIGJlIGdyZWF0ZXIgdGhhbiBvbmUuCisgICAgICAgIChKU0M6OlVpbnQxNldpdGhG
cmFjdGlvbjo6aXNOb3JtYWxpemVkKToKKyAgICAgICAgICAgIC0gVXNlZCBieSBBU1NFUlRzIHRv
IGNvbnNpc3RlbmN5IGNoZWNrIGludGVybmFsIHJlcHJlc2VudGF0aW9uLgorICAgICAgICAoSlND
OjpCaWdJbnRlZ2VyOjpCaWdJbnRlZ2VyKToKKyAgICAgICAgICAgIC0gaGVscGVyIGNsYXNzLCB1
bmJvdW5kZWQgaW50ZWdlciB2YWx1ZSwgdXNlZCB0byBjb252ZXJ0IHRoZSBpbnRlZ2VyIHBhcnQK
KyAgICAgICAgICAgICAgb2YgdGhlIG51bWJlciB0byBhIHN0cmluZy4KKyAgICAgICAgKEpTQzo6
QmlnSW50ZWdlcjo6ZGl2aWRlKToKKyAgICAgICAgICAgIC0gRGl2aWRlIHRoaXMgdmFsdWUgdGhy
b3VnaCBieSBhIHVpbnQzMi4KKyAgICAgICAgKEpTQzo6QmlnSW50ZWdlcjo6b3BlcmF0b3IhKToK
KyAgICAgICAgICAgIC0gdGVzdCBmb3IgemVyby4KKyAgICAgICAgKEpTQzo6dG9TdHJpbmdXaXRo
UmFkaXgpOgorICAgICAgICAgICAgLSBQZXJmb3JtcyBudW1iZXIgdG8gc3RyaW5nIGNvbnZlcnNp
b24sIHdpdGggdGhlIGdpdmVuIHJhZGl4ICgyLi4zNikuCisgICAgICAgIChKU0M6Om51bWJlclBy
b3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgICAgIC0gQ2hhbmdlZCB0byB1c2UgdG9TdHJpbmdX
aXRoUmFkaXguCisKIDIwMTEtMDYtMzAgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBCZXRoIERha2luLgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCShyZXZpc2lvbiA5MDIw
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTExMSw2ICsxMTEsNTQwIEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5F
IGJvb2wgZ2V0SW50ZWdlckFyZ3UKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorLy8gVGhlIGxhcmdl
c3QgZmluaXRlIGZsb2F0aW5nIHBvaW50IG51bWJlciBpcyAxLm1hbnRpc3NhICogMl4oMHg3ZmUt
MHgzZmYpLgorLy8gU2luY2UgMl5OIGluIGJpbmFyeSBpcyBhIG9uZSBiaXQgZm9sbG93ZWQgYnkg
TiB6ZXJvIGJpdHMuIDEgKiAyXjNmZiByZXF1aXJlcworLy8gYXQgbW9zdCAxMDI0IGNoYXJhY3Rl
cnMgdG8gdGhlIGxlZnQgb2YgYSBkZWNpbWFsIHBvaW50LCBpbiBiYXNlIDIgKDEwMjUgaWYKKy8v
IHdlIGluY2x1ZGUgYSBtaW51cyBzaWduKS4gRm9yIHRoZSBmcmFjdGlvbiwgYSB2YWx1ZSB3aXRo
IGFuIGV4cG9uZW50IG9mIDAKKy8vIGhhcyB1cCB0byA1MiBiaXRzIHRvIHRoZSByaWdodCBvZiB0
aGUgZGVjaW1hbCBwb2ludC4gRWFjaCBkZWNyZW1lbnQgb2YgdGhlCisvLyBleHBvbmVudCBkb3du
IHRvIGEgbWluaW11bSBvZiAtMHgzZmUgYWRkcyBhbiBhZGRpdGlvbmFsIGRpZ2l0IHRvIHRoZSBs
ZW5ndGgKKy8vIG9mIHRoZSBmcmFjdGlvbi4gQXMgc3VjaCB0aGUgbWF4aW11bSBmcmFjdGlvbiBz
aXplIGlzIDEwNzUgKDEwNzYgaW5jbHVkaW5nCisvLyBhIHBvaW50KS4gV2UgcGljayBhIGJ1ZmZl
ciBzaXplIHN1Y2ggdGhhdCBjYW4gc2ltcGx5IHBsYWNlIHRoZSBwb2ludCBpbiB0aGUKKy8vIGNl
bnRlciBvZiB0aGUgYnVmZmVyLCBhbmQgYXJlIGd1YXJhbnRlZWQgdG8gaGF2ZSBlbm91Z2ggc3Bh
Y2UgaW4gZWFjaCBkaXJlY3Rpb24KKy8vIGZvIGFueSBudW1iZXIgb2YgZGlnaXRzIGFuIElFRUUg
bnVtYmVyIG1heSByZXF1aXJlIHRvIHJlcHJlc2VudC4KK3R5cGVkZWYgY2hhciBSYWRpeEJ1ZmZl
clsyMTgwXTsKKworLy8gTWFwcGluZyBmcm9tIGludGVnZXJzIDAuLjM1IHRvIGRpZ2l0IGlkZW50
aWZ5aW5nIHRoaXMgdmFsdWUsIGZvciByYWRpeCAyLi4zNi4KK3N0YXRpYyBjb25zdCBjaGFyKiBj
b25zdCByYWRpeERpZ2l0cyA9ICIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoi
OworCisvLyBBIHZhbHVlIDEgZ3JlYXRlciB0aGFuIG1heCB1aW50MTZfdC4KKyNkZWZpbmUgVWlu
dDE2SW5maW5pdHkgMHgxMDAwMAorCisvLyBkZWNvbXBvc2UgJ251bWJlcicgdG8gaXRzIHNpZ24s
IGV4cG9uZW50LCBhbmQgbWFudGlzc2EgY29tcG9uZW50cy4KKy8vIFRoZSByZXN1bHQgaXMgaW50
ZXJwcmV0ZWQgYXM6CisvLyAgICAgKHNpZ24gPyAtMSA6IDEpICogcG93KDIsIGV4cG9uZW50KSAq
IChtYW50aXNzYSAvICgxIDw8IDUyKSkKK3N0YXRpYyB2b2lkIGRlY29tcG9zZURvdWJsZShkb3Vi
bGUgbnVtYmVyLCBib29sJiBzaWduLCBpbnQzMl90JiBleHBvbmVudCwgdWludDY0X3QmIG1hbnRp
c3NhKQoreworICAgIEFTU0VSVChpc2Zpbml0ZShudW1iZXIpKTsKKworICAgIHNpZ24gPSBzaWdu
Yml0KG51bWJlcik7CisKKyAgICB1aW50NjRfdCBiaXRzID0gV1RGOjpiaXR3aXNlX2Nhc3Q8dWlu
dDY0X3Q+KG51bWJlcik7CisgICAgZXhwb25lbnQgPSAoc3RhdGljX2Nhc3Q8aW50MzJfdD4oYml0
cyA+PiA1MikgJiAweDdmZikgLSAweDNmZjsKKyAgICBtYW50aXNzYSA9IGJpdHMgJiAweEZGRkZG
RkZGRkZGRkZ1bGw7CisKKyAgICAvLyBDaGVjayBmb3IgemVyby9kZW5vcm1hbCB2YWx1ZXM7IGlm
IHNvLCBhZGp1c3QgdGhlIGV4cG9uZW50LAorICAgIC8vIGlmIG5vdCBpbnNlcnQgdGhlIGltcGxp
Y2l0LCBvbWl0dGVkIGxlYWRpbmcgMSBiaXQuCisgICAgaWYgKGV4cG9uZW50ID09IC0weDNmZikK
KyAgICAgICAgZXhwb25lbnQgPSBtYW50aXNzYSA/IC0weDNmZSA6IDA7CisgICAgZWxzZQorICAg
ICAgICBtYW50aXNzYSB8PSAweDEwMDAwMDAwMDAwMDAwdWxsOworfQorCisvLyBBIHVpbnQxNl90
IHdpdGggYW4gaW5maW5pdGUgcHJlY2lzaW9uIGZyYWN0aW9uLiBVcG9uIG92ZXJmbG93aW5nCisv
LyB0aGUgdWludDE2X3QgcmFuZ2UsIHRoaXMgY2xhc3Mgd2lsbCBjbGFtcCB0byBVaW50MTZJbmZp
bml0eS4KKy8vIFRoaXMgaXMgdXNlZCBpbiBjb252ZXJ0aW5nIHRoZSBmcmFjdGlvbiBwYXJ0IG9m
IGEgbnVtYmVyIHRvIGEgc3RyaW5nLgorY2xhc3MgVWludDE2V2l0aEZyYWN0aW9uIHsKK3B1Ymxp
YzoKKyAgICBleHBsaWNpdCBVaW50MTZXaXRoRnJhY3Rpb24oZG91YmxlIG51bWJlciwgdWludDE2
X3QgZGl2aWRlQnlFeHBvbmVudCA9IDApCisgICAgeworICAgICAgICBBU1NFUlQobnVtYmVyICYm
IGlzZmluaXRlKG51bWJlcikgJiYgIXNpZ25iaXQobnVtYmVyKSk7CisKKyAgICAgICAgLy8gQ2hl
Y2sgZm9yIHZhbHVlcyBvdXQgb2YgdWludDE2X3QgcmFuZ2UuCisgICAgICAgIGlmIChudW1iZXIg
Pj0gVWludDE2SW5maW5pdHkpIHsKKyAgICAgICAgICAgIG1fdmFsdWVzLmFwcGVuZChVaW50MTZJ
bmZpbml0eSk7CisgICAgICAgICAgICBtX2xlYWRpbmdaZXJvcyA9IDA7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBBcHBlbmQgdGhlIHVuaXRzIHRvIG1fdmFs
dWVzLgorICAgICAgICBkb3VibGUgaW50ZWdlclBhcnQgPSBmbG9vcihudW1iZXIpOworICAgICAg
ICBtX3ZhbHVlcy5hcHBlbmQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGludGVnZXJQYXJ0KSk7CisK
KyAgICAgICAgYm9vbCBzaWduOworICAgICAgICBpbnQzMl90IGV4cG9uZW50OworICAgICAgICB1
aW50NjRfdCBtYW50aXNzYTsKKyAgICAgICAgZGVjb21wb3NlRG91YmxlKG51bWJlciAtIGludGVn
ZXJQYXJ0LCBzaWduLCBleHBvbmVudCwgbWFudGlzc2EpOworICAgICAgICBBU1NFUlQoIXNpZ24g
JiYgZXhwb25lbnQgPCAwKTsKKyAgICAgICAgZXhwb25lbnQgLT0gZGl2aWRlQnlFeHBvbmVudDsK
KworICAgICAgICBpbnQzMl90IHplcm9CaXRzID0gLWV4cG9uZW50OworICAgICAgICAtLXplcm9C
aXRzOworCisgICAgICAgIC8vIEFwcGVuZCB0aGUgYXBwZW5kIHdvcmRzIGZvciB0byBtX3ZhbHVl
cy4KKyAgICAgICAgd2hpbGUgKHplcm9CaXRzID49IDMyKSB7CisgICAgICAgICAgICBtX3ZhbHVl
cy5hcHBlbmQoMCk7CisgICAgICAgICAgICB6ZXJvQml0cyAtPSAzMjsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIExlZnQgYWxpZ24gdGhlIDUzIGJpdHMgb2YgdGhlIG1hbnRpc3NhIHdpdGhpbiA5
NiBiaXRzLgorICAgICAgICB1aW50MzJfdCB2YWx1ZXNbM107CisgICAgICAgIHZhbHVlc1swXSA9
IHN0YXRpY19jYXN0PHVpbnQzMl90PihtYW50aXNzYSA+PiAyMSk7CisgICAgICAgIHZhbHVlc1sx
XSA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihtYW50aXNzYSA8PCAxMSk7CisgICAgICAgIHZhbHVl
c1syXSA9IDA7CisgICAgICAgIC8vIFNoaWZ0IGJhc2VkIG9uIHRoZSByZW1haW5kZXIgb2YgdGhl
IGV4cG9uZW50LgorICAgICAgICBpZiAoemVyb0JpdHMpIHsKKyAgICAgICAgICAgIHZhbHVlc1sy
XSA9IHZhbHVlc1sxXSA8PCAoMzIgLSB6ZXJvQml0cyk7CisgICAgICAgICAgICB2YWx1ZXNbMV0g
PSAodmFsdWVzWzFdID4+IHplcm9CaXRzKSB8ICh2YWx1ZXNbMF0gPDwgKDMyIC0gemVyb0JpdHMp
KTsKKyAgICAgICAgICAgIHZhbHVlc1swXSA9ICh2YWx1ZXNbMF0gPj4gemVyb0JpdHMpOworICAg
ICAgICB9CisgICAgICAgIG1fdmFsdWVzLmFwcGVuZCh2YWx1ZXNbMF0pOworICAgICAgICBtX3Zh
bHVlcy5hcHBlbmQodmFsdWVzWzFdKTsKKyAgICAgICAgbV92YWx1ZXMuYXBwZW5kKHZhbHVlc1sy
XSk7CisKKyAgICAgICAgLy8gQ2Fub25pY2FsaXplOyByZW1vdmUgYW55IHRyYWlsaW5nIHplcm9z
LgorICAgICAgICB3aGlsZSAobV92YWx1ZXMuc2l6ZSgpID4gMSAmJiAhbV92YWx1ZXMubGFzdCgp
KQorICAgICAgICAgICAgbV92YWx1ZXMucmVtb3ZlTGFzdCgpOworCisgICAgICAgIC8vIENvdW50
IHRoZSBudW1iZXIgb2YgbGVhZGluZyB6ZXJvLCB0aGlzIGlzIHVzZWZ1bCBpbiBvcHRpbWl6aW5n
IG11bHRpcGxpZXMuCisgICAgICAgIG1fbGVhZGluZ1plcm9zID0gMDsKKyAgICAgICAgd2hpbGUg
KG1fbGVhZGluZ1plcm9zIDwgbV92YWx1ZXMuc2l6ZSgpICYmICFtX3ZhbHVlc1ttX2xlYWRpbmda
ZXJvc10pCisgICAgICAgICAgICArK21fbGVhZGluZ1plcm9zOworICAgIH0KKworICAgIFVpbnQx
NldpdGhGcmFjdGlvbiYgb3BlcmF0b3IqPSh1aW50MTZfdCBtdWx0aXBsaWVyKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKGlzTm9ybWFsaXplZCgpKTsKKworICAgICAgICAvLyBpdGVyYXRhdGUgYmFj
a3dhcmRzIG92ZXIgdGhlIGZyYWN0aW9uIHVudGlsIHdlIHJlYWNoIHRoZSBsZWFkaW5nIHplcm9z
LAorICAgICAgICAvLyBwYXNzaW5nIHRoZSBjYXJyeSBmcm9tIG9uZSBjYWxjdWxhdGlvbiBpbnRv
IHRoZSBuZXh0LgorICAgICAgICB1aW50NjRfdCBhY2N1bXVsYXRvciA9IDA7CisgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSBtX3ZhbHVlcy5zaXplKCk7IGkgPiBtX2xlYWRpbmdaZXJvczsgKSB7Cisg
ICAgICAgICAgICAtLWk7CisgICAgICAgICAgICBhY2N1bXVsYXRvciArPSBzdGF0aWNfY2FzdDx1
aW50NjRfdD4obV92YWx1ZXNbaV0pICogc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG11bHRpcGxpZXIp
OworICAgICAgICAgICAgbV92YWx1ZXNbaV0gPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYWNjdW11
bGF0b3IpOworICAgICAgICAgICAgYWNjdW11bGF0b3IgPj49IDMyOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKCFtX2xlYWRpbmdaZXJvcykgeworICAgICAgICAgICAgLy8gV2l0aCBhIG11bHRp
cGxpY2FuZCBhbmQgbXVsdGlwbGllciBpbiB0aGUgdWludDE2X3QgcmFuZ2UsIHRoaXMgY2Fubm90
IGNhcnJ5CisgICAgICAgICAgICAvLyAoZXZlbiBhbGxvd2luZyBmb3IgdGhlIGluZmluaXR5IHZh
bHVlKS4KKyAgICAgICAgICAgIEFTU0VSVCghYWNjdW11bGF0b3IpOworICAgICAgICAgICAgLy8g
Q2hlY2sgZm9yIG92ZXJmbG93ICYgY2xhbXAgdG8gJ2luZmluaXR5Jy4KKyAgICAgICAgICAgIGlm
IChtX3ZhbHVlc1swXSA+PSBVaW50MTZJbmZpbml0eSkgeworICAgICAgICAgICAgICAgIG1fdmFs
dWVzLnNocmluaygxKTsKKyAgICAgICAgICAgICAgICBtX3ZhbHVlc1swXSA9IFVpbnQxNkluZmlu
aXR5OworICAgICAgICAgICAgICAgIG1fbGVhZGluZ1plcm9zID0gMDsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gKnRoaXM7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoYWNjdW11
bGF0b3IpIHsKKyAgICAgICAgICAgIC8vIENoZWNrIGZvciBjYXJyeSBmcm9tIHRoZSBsYXN0IG11
bHRpcGx5LCBpZiBzbyBvdmVyd3JpdGUgbGFzdCBsZWFkaW5nIHplcm8uCisgICAgICAgICAgICBt
X3ZhbHVlc1stLW1fbGVhZGluZ1plcm9zXSA9IGFjY3VtdWxhdG9yOworICAgICAgICAgICAgLy8g
VGhlIGxpbWl0ZWQgcmFuZ2Ugb2YgdGhlIG11bHRpcGxpZXIgc2hvdWxkIG1lYW4gdGhhdCBldmVu
IGlmIHdlIGNhcnJ5IGludG8KKyAgICAgICAgICAgIC8vIHRoZSB1bml0cywgd2UgZG9uJ3QgbmVl
ZCB0byBjaGVjayBmb3Igb3ZlcmZsb3cgb2YgdGhlIHVpbnQxNl90IHJhbmdlLgorICAgICAgICAg
ICAgQVNTRVJUKG1fdmFsdWVzWzBdIDwgVWludDE2SW5maW5pdHkpOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gTXVsdGlwbGljYXRpb24gYnkgYW4gZXZlbiB2YWx1ZSBtYXkgaW50cm9kdWNlIHRy
YWlsaW5nIHplcm9zOyBpZiBzbywgY2xlYW4gdGhlbQorICAgICAgICAvLyB1cC4gKEtlZXBpbmcg
dGhlIHZhbHVlIGluIGEgbm9ybWFsaXplZCBmb3JtIG1ha2VzIHNvbWUgb2YgdGhlIGNvbXBhcmlz
b24gb3BlcmF0aW9ucworICAgICAgICAvLyBtb3JlIGVmZmljaWVudCkuCisgICAgICAgIHdoaWxl
IChtX3ZhbHVlcy5zaXplKCkgPiAxICYmICFtX3ZhbHVlcy5sYXN0KCkpCisgICAgICAgICAgICBt
X3ZhbHVlcy5yZW1vdmVMYXN0KCk7CisgICAgICAgIEFTU0VSVChpc05vcm1hbGl6ZWQoKSk7Cisg
ICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yPChjb25zdCBV
aW50MTZXaXRoRnJhY3Rpb24mIG90aGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzTm9ybWFs
aXplZCgpKTsKKyAgICAgICAgQVNTRVJUKG90aGVyLmlzTm9ybWFsaXplZCgpKTsKKworICAgICAg
ICAvLyBJdGVyYXRlIG92ZXIgdGhlIGNvbW1vbiBsZW5ndGhzIG9mIGFycmF5cy4KKyAgICAgICAg
c2l6ZV90IG1pblNpemUgPSBzdGQ6Om1pbihtX3ZhbHVlcy5zaXplKCksIG90aGVyLm1fdmFsdWVz
LnNpemUoKSk7CisgICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtaW5TaXpl
OyArK2luZGV4KSB7CisgICAgICAgICAgICAvLyBJZiB3ZSBmaW5kIGEgdmFsdWUgdGhhdCBpcyBu
b3QgZXF1YWwsIGNvbXBhcmUgYW5kIHJldHVybi4KKyAgICAgICAgICAgIHVpbnQzMl90IGZyb21U
aGlzID0gbV92YWx1ZXNbaW5kZXhdOworICAgICAgICAgICAgdWludDMyX3QgZnJvbU90aGVyID0g
b3RoZXIubV92YWx1ZXNbaW5kZXhdOworICAgICAgICAgICAgaWYgKGZyb21UaGlzICE9IGZyb21P
dGhlcikKKyAgICAgICAgICAgICAgICByZXR1cm4gZnJvbVRoaXMgPCBmcm9tT3RoZXI7CisgICAg
ICAgIH0KKyAgICAgICAgLy8gSWYgdGhlc2UgbnVtYmVycyBoYXZlIHRoZSBzYW1lIGxlbmd0aHMs
IHRoZXkgYXJlIGVxdWFsLAorICAgICAgICAvLyBvdGhlcndpc2Ugd2hpY2ggZXZlciBudW1iZXIg
aGFzIGEgbG9uZ2VyIGZyYWN0aW9uIGluIGxhcmdlci4KKyAgICAgICAgcmV0dXJuIG90aGVyLm1f
dmFsdWVzLnNpemUoKSA+IG1pblNpemU7CisgICAgfQorCisgICAgLy8gUmV0dXJuIHRoZSBmbG9v
ciAobm9uLWZyYWN0aW9uYWwgcG9ydGlvbikgb2YgdGhlIG51bWJlciwgY2xlYXJpbmcgdGhpcyB0
byB6ZXJvLAorICAgIC8vIGxlYXZpbmcgdGhlIGZyYWN0aW9uYWwgcGFydCB1bmNoYW5nZWQuCisg
ICAgdWludDMyX3QgZmxvb3JBbmRTdWJ0cmFjdCgpCisgICAgeworICAgICAgICAvLyAnZmxvb3In
IGlzIHNpbXBsZSB0aGUgaW50ZWdlciBwb3J0aW9uIG9mIHRoZSB2YWx1ZS4KKyAgICAgICAgdWlu
dDMyX3QgZmxvb3IgPSBtX3ZhbHVlc1swXTsKKworICAgICAgICAvLyBJZiBmbG9vciBpcyBub24t
emVybywgCisgICAgICAgIGlmIChmbG9vcikgeworICAgICAgICAgICAgbV92YWx1ZXNbMF0gPSAw
OworICAgICAgICAgICAgbV9sZWFkaW5nWmVyb3MgPSAxOworICAgICAgICAgICAgd2hpbGUgKG1f
bGVhZGluZ1plcm9zIDwgbV92YWx1ZXMuc2l6ZSgpICYmICFtX3ZhbHVlc1ttX2xlYWRpbmdaZXJv
c10pCisgICAgICAgICAgICAgICAgKyttX2xlYWRpbmdaZXJvczsKKyAgICAgICAgfQorCisgICAg
ICAgIHJldHVybiBmbG9vcjsKKyAgICB9CisKKyAgICAvLyBDb21wYXJlIHRoaXMgdmFsdWUgdG8g
MC41LCByZXR1cm5zIC0xIGZvciBsZXNzIHRoYW4sIDAgZm9yIGVxdWFsLCAxIGZvciBncmVhdGVy
LgorICAgIGludCBjb21wYXJlUG9pbnQ1KCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpc05vcm1h
bGl6ZWQoKSk7CisgICAgICAgIC8vIElmIHVuaXRzICE9IDAsIHRoaXMgaXMgZ3JlYXRlciB0aGFu
IDAuNS4KKyAgICAgICAgaWYgKG1fdmFsdWVzWzBdKQorICAgICAgICAgICAgcmV0dXJuIDE7Cisg
ICAgICAgIC8vIElmIHNpemUgPT0gMSB0aGlzIHZhbHVlIGlzIDAsIGhlbmNlIDwgMC41LgorICAg
ICAgICBpZiAobV92YWx1ZXMuc2l6ZSgpID09IDEpCisgICAgICAgICAgICByZXR1cm4gLTE7Cisg
ICAgICAgIC8vIENvbXBhcmUgdG8gMC41LgorICAgICAgICBpZiAobV92YWx1ZXNbMV0gPiAweDgw
MDAwMDAwdWwpCisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgaWYgKG1fdmFsdWVzWzFd
IDwgMHg4MDAwMDAwMHVsKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAvLyBDaGVj
ayBmb3IgbW9yZSB3b3JkcyAtIHNpbmNlIG5vcm1hbGl6ZWQgbnVtYmVycyBoYXZlIG5vIHRyYWls
aW5nIHplcm9zLCBpZgorICAgICAgICAvLyB0aGVyZSBhcmUgbW9yZSB0aGF0IHR3byBkaWdpdHMg
d2UgY2FuIGFzc3VtZSBhdCBsZWFzdCBvbmUgbW9yZSBpcyBub24temVybywKKyAgICAgICAgLy8g
YW5kIGhlbmNlIHRoZSB2YWx1ZSBpcyA+IDAuNS4KKyAgICAgICAgcmV0dXJuIG1fdmFsdWVzLnNp
emUoKSA+IDIgPyAxIDogMDsKKyAgICB9CisKKyAgICAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3Vt
IG9mIHRoaXMgcGx1cyBhZGRlbmQgd291bGQgYmUgZ3JlYXRlciB0aGFuIDEuCisgICAgYm9vbCBz
dW1HcmVhdGVyVGhhbk9uZShjb25zdCBVaW50MTZXaXRoRnJhY3Rpb24mIGFkZGVuZCkgCisgICAg
eworICAgICAgICBBU1NFUlQoaXNOb3JtYWxpemVkKCkpOworICAgICAgICBBU1NFUlQoYWRkZW5k
LmlzTm9ybWFsaXplZCgpKTsKKworICAgICAgICAvLyBGaXJzdCwgc3VtIHRoZSB1bml0cy4gSWYg
dGhlIHJlc3VsdCBpcyBncmVhdGVyIHRoYW4gb25lLCByZXR1cm4gdHJ1ZS4KKyAgICAgICAgLy8g
SWYgZXF1YWwgdG8gb25lLCByZXR1cm4gdHJ1ZSBpZiBlaXRoZXIgbnVtYmVyIGhhcyBhIGZyYWN0
aW9uYWwgcGFydC4KKyAgICAgICAgdWludDMyX3Qgc3VtID0gbV92YWx1ZXNbMF0gKyBhZGRlbmQu
bV92YWx1ZXNbMF07CisgICAgICAgIGlmIChzdW0pCisgICAgICAgICAgICByZXR1cm4gc3VtID4g
MSB8fCBzdGQ6Om1heChtX3ZhbHVlcy5zaXplKCksIGFkZGVuZC5tX3ZhbHVlcy5zaXplKCkpID4g
MTsKKworICAgICAgICAvLyBXZSBjb3VsZCBzdGlsbCBwcm9kdWNlIGEgcmVzdWx0IGdyZWF0ZXIg
dGhhbiB6ZXJvIGlmIGFkZGl0aW9uIG9mIHRoZSBuZXh0CisgICAgICAgIC8vIHdvcmQgZnJvbSB0
aGUgZnJhY3Rpb24gd2VyZSB0byBjYXJyeSwgbGVhdmluZyBhIHJlc3VsdCA+IDAuCisKKyAgICAg
ICAgLy8gSXRlcmF0ZSBvdmVyIHRoZSBjb21tb24gbGVuZ3RocyBvZiBhcnJheXMuCisgICAgICAg
IHNpemVfdCBtaW5TaXplID0gc3RkOjptaW4obV92YWx1ZXMuc2l6ZSgpLCBhZGRlbmQubV92YWx1
ZXMuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaW5kZXggPSAxOyBpbmRleCA8IG1pblNp
emU7ICsraW5kZXgpIHsKKyAgICAgICAgICAgIC8vIFN1bSB0aGUgbmV4dCB3b3JkIGZyb20gdGhp
cyAmIHRoZSBhZGRlbmQuCisgICAgICAgICAgICB1aW50MzJfdCBmcm9tVGhpcyA9IG1fdmFsdWVz
W2luZGV4XTsKKyAgICAgICAgICAgIHVpbnQzMl90IGZyb21BZGRlbmQgPSBhZGRlbmQubV92YWx1
ZXNbaW5kZXhdOworICAgICAgICAgICAgc3VtID0gZnJvbVRoaXMgKyBmcm9tQWRkZW5kOworCisg
ICAgICAgICAgICAvLyBDaGVjayBmb3Igb3ZlcmZsb3cuIElmIHNvLCBjaGVjayB3aGV0aGVyIHRo
ZSByZW1haW5pbmcgcmVzdWx0IGlzIG5vbi16ZXJvLAorICAgICAgICAgICAgLy8gb3IgaWYgdGhl
cmUgYXJlIGFueSBmdXJ0aGVyIHdvcmRzIGluIHRoZSBmcmFjdGlvbi4KKyAgICAgICAgICAgIGlm
IChzdW0gPCBmcm9tVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VtIHx8IChpbmRleCAr
IDEpIDwgc3RkOjptYXgobV92YWx1ZXMuc2l6ZSgpLCBhZGRlbmQubV92YWx1ZXMuc2l6ZSgpKTsK
KworICAgICAgICAgICAgLy8gSWYgdGhlIHN1bSBpcyB1aW50MzJfdCBtYXgsIHRoZW4gd2Ugd291
bGQgY2FycnkgYSAxIGlmIGFkZGl0aW9uIG9mIHRoZSBuZXh0CisgICAgICAgICAgICAvLyBkaWdp
dHMgaW4gdGhlIG51bWJlciB3ZXJlIHRvIG92ZXJmbG93LgorICAgICAgICAgICAgaWYgKHN1bSAh
PSAweEZGRkZGRkZGKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCitwcml2YXRlOgorICAgIGJvb2wgaXNOb3Jt
YWxpemVkKCkgY29uc3QKKyAgICB7CisgICAgICAgIC8vIEFsbCB2YWx1ZXMgc2hvdWxkIGhhdmUg
YXQgbGVhc3Qgb25lIHZhbHVlLgorICAgICAgICByZXR1cm4gKG1fdmFsdWVzLnNpemUoKSkKKyAg
ICAgICAgICAgIC8vIFRoZSB1bml0cyB2YWx1ZSBtdXN0IGJlIGEgdWludDE2X3QsIG9yIHRoZSB2
YWx1ZSBpcyB0aGUgb3ZlcmZsb3cgdmFsdWUuCisgICAgICAgICAgICAmJiAobV92YWx1ZXNbMF0g
PCBVaW50MTZJbmZpbml0eSB8fCAobV92YWx1ZXNbMF0gPT0gVWludDE2SW5maW5pdHkgJiYgbV92
YWx1ZXMuc2l6ZSgpID09IDEpKQorICAgICAgICAgICAgLy8gVGhlcmUgc2hvdWxkIGJlIG5vIHRy
YWlsaW5nIHplcm9zICh1bmxlc3MgdGhpcyB2YWx1ZSBpcyB6ZXJvISkuCisgICAgICAgICAgICAm
JiAobV92YWx1ZXMubGFzdCgpIHx8IG1fdmFsdWVzLnNpemUoKSA9PSAxKTsKKyAgICB9CisKKyAg
ICAvLyBUaGUgaW50ZXJuYWwgc3RvcmFnZSBvZiB0aGUgbnVtYmVyLiBUaGlzIHZlY3RvciBpcyBh
bHdheXMgYXQgbGVhc3Qgb25lIGVudHJ5IGluIHNpemUsCisgICAgLy8gd2l0aCB0aGUgZmlyc3Qg
ZW50cnkgaG9sZGluZyB0aGUgcG9ydGlvbiBvZiB0aGUgbnVtYmVyIGdyZWF0ZXIgdGhhbiB6ZXJv
LiBUaGUgZmlyc3QKKyAgICAvLyB2YWx1ZSBhbHdheXMgaG9sZCBhIHZhbHVlIGluIHRoZSB1aW50
MTZfdCByYW5nZSwgb3IgaG9sZHMgdGhlIHZhbHVlIFVpbnQxNkluZmluaXR5IHRvCisgICAgLy8g
aW5kaWNhdGUgdGhlIHZhbHVlIGhhcyBvdmVyZmxvd2VkIHRvID49IDB4MTAwMDAuIElmIHRoZSB1
bml0cyB2YWx1ZSBpcyBVaW50MTZJbmZpbml0eSwKKyAgICAvLyB0aGVyZSBjYW4gYmUgbm8gZnJh
Y3Rpb24gKHNpemUgbXVzdCBiZSAxKS4KKyAgICAvLworICAgIC8vIFN1YnNlcXVlbnQgdmFsdWVz
IGluIHRoZSBhcnJheSByZXByZXNlbnQgcG9ydGlvbnMgb2YgdGhlIGZyYWN0aW9uYWwgcGFydCBv
ZiB0aGlzIG51bWJlci4KKyAgICAvLyBUaGUgdG90YWwgdmFsdWUgb2YgdGhlIG51bWJlciBpcyB0
aGUgc3VtIG9mIChtX3ZhbHVlc1tpXSAvIHBvdygyXjMyLCBpKSksIGZvciBlYWNoIGkKKyAgICAv
LyBpbiB0aGUgYXJyYXkuIFRoZSB2ZWN0b3Igc2hvdWxkIGNvbnRhaW4gbm8gdHJhaWxpbmcgemVy
b3MsIGV4Y2VwdCBmb3IgdGhlIHZhbHVlICcwJywKKyAgICAvLyByZXByZXNlbnRlZCBieSBhIHZl
Y3RvciBjb250aWFuaW5nIGEgc2luZ2xlIHplcm8gdmFsdWUuIFRoZXNlIGNvbnN0cmFpbnRzIGFy
ZSBjaGVja2VkCisgICAgLy8gYnkgJ2lzTm9ybWFsaXplZCgpJywgYWJvdmUuCisgICAgLy8KKyAg
ICAvLyBUaGUgaW5saW5lIGNhcGFjaXR5IG9mIHRoZSB2ZWN0b3IgaXMgc2V0IHRvIGJlIGFibGUg
dG8gY29udGFpbiBhbnkgSUVFRSBkb3VibGUgKDEgZm9yCisgICAgLy8gdGhlIHVuaXRzIGNvbHVt
biwgMzIgZm9yIHplcm9zIGludHJvZHVjZWQgZHVlIHRvIGFuIGV4cG9uZW50IHVwIHRvIC0zRkUs
IGFuZCAyIGZvcgorICAgIC8vIGJpdHMgdGFrZW4gZnJvbSB0aGUgbWFudGlzc2EpLgorICAgIFZl
Y3Rvcjx1aW50MzJfdCwgMzY+IG1fdmFsdWVzOworCisgICAgLy8gQ2FjaGUgYSBjb3VudCBvZiB0
aGUgbnVtYmVyIG9mIGxlYWRpbmcgemVyb3MgaW4gbV92YWx1ZXMuIFdlIGNhbiB1c2UgdGhpcyB0
byBvcHRpbWl6ZQorICAgIC8vIG1ldGhvZHMgdGhhdCB3b3VsZCBvdGhlcndpc2UgbmVlZCB2aXNp
dCBhbGwgd29yZHMgaW4gdGhlIHZlY3RvciwgZS5nLiBtdWx0aXBsaWNhdGlvbi4KKyAgICBzaXpl
X3QgbV9sZWFkaW5nWmVyb3M7Cit9OworCisvLyBUaGlzIGlzIHVzZWQgaW4gY29udmVydGluZyB0
aGUgaW50ZWdlciBwYXJ0IG9mIGEgbnVtYmVyIHRvIGEgc3RyaW5nLgorY2xhc3MgQmlnSW50ZWdl
ciB7CitwdWJsaWM6CisgICAgQmlnSW50ZWdlcihkb3VibGUgbnVtYmVyKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKGlzZmluaXRlKG51bWJlcikgJiYgIXNpZ25iaXQobnVtYmVyKSk7CisgICAgICAg
IEFTU0VSVChudW1iZXIgPT0gZmxvb3IobnVtYmVyKSk7CisKKyAgICAgICAgYm9vbCBzaWduOwor
ICAgICAgICBpbnQzMl90IGV4cG9uZW50OworICAgICAgICB1aW50NjRfdCBtYW50aXNzYTsKKyAg
ICAgICAgZGVjb21wb3NlRG91YmxlKG51bWJlciwgc2lnbiwgZXhwb25lbnQsIG1hbnRpc3NhKTsK
KyAgICAgICAgQVNTRVJUKCFzaWduICYmIGV4cG9uZW50ID49IDApOworCisgICAgICAgIGludDMy
X3QgemVyb0JpdHMgPSBleHBvbmVudCAtIDUyOworCisgICAgICAgIGlmICh6ZXJvQml0cyA8IDAp
IHsKKyAgICAgICAgICAgIG1hbnRpc3NhID4+PSAtemVyb0JpdHM7CisgICAgICAgICAgICB6ZXJv
Qml0cyA9IDA7CisgICAgICAgIH0KKworICAgICAgICB3aGlsZSAoemVyb0JpdHMgPj0gMzIpIHsK
KyAgICAgICAgICAgIG1fdmFsdWVzLmFwcGVuZCgwKTsKKyAgICAgICAgICAgIHplcm9CaXRzIC09
IDMyOworICAgICAgICB9CisKKyAgICAgICAgLy8gTGVmdCBhbGlnbiB0aGUgNTMgYml0cyBvZiB0
aGUgbWFudGlzc2Egd2l0aGluIDk2IGJpdHMuCisgICAgICAgIHVpbnQzMl90IHZhbHVlc1szXTsK
KyAgICAgICAgdmFsdWVzWzBdID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1hbnRpc3NhKTsKKyAg
ICAgICAgdmFsdWVzWzFdID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1hbnRpc3NhID4+IDMyKTsK
KyAgICAgICAgdmFsdWVzWzJdID0gMDsKKyAgICAgICAgLy8gU2hpZnQgYmFzZWQgb24gdGhlIHJl
bWFpbmRlciBvZiB0aGUgZXhwb25lbnQuCisgICAgICAgIGlmICh6ZXJvQml0cykgeworICAgICAg
ICAgICAgdmFsdWVzWzJdID0gdmFsdWVzWzFdID4+ICgzMiAtIHplcm9CaXRzKTsKKyAgICAgICAg
ICAgIHZhbHVlc1sxXSA9ICh2YWx1ZXNbMV0gPDwgemVyb0JpdHMpIHwgKHZhbHVlc1swXSA+PiAo
MzIgLSB6ZXJvQml0cykpOworICAgICAgICAgICAgdmFsdWVzWzBdID0gKHZhbHVlc1swXSA8PCB6
ZXJvQml0cyk7CisgICAgICAgIH0KKyAgICAgICAgbV92YWx1ZXMuYXBwZW5kKHZhbHVlc1swXSk7
CisgICAgICAgIG1fdmFsdWVzLmFwcGVuZCh2YWx1ZXNbMV0pOworICAgICAgICBtX3ZhbHVlcy5h
cHBlbmQodmFsdWVzWzJdKTsKKworICAgICAgICAvLyBDYW5vbmljYWxpemU7IHJlbW92ZSBhbGwg
dHJhaWxpbmcgemVyb3MuCisgICAgICAgIHdoaWxlIChtX3ZhbHVlcy5zaXplKCkgJiYgIW1fdmFs
dWVzLmxhc3QoKSkKKyAgICAgICAgICAgIG1fdmFsdWVzLnJlbW92ZUxhc3QoKTsKKyAgICB9CisK
KyAgICB1aW50MzJfdCBkaXZpZGUodWludDMyX3QgZGl2aXNvcikKKyAgICB7CisgICAgICAgIHVp
bnQzMl90IGNhcnJ5ID0gMDsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gbV92YWx1ZXMuc2l6
ZSgpOyBpOyApIHsKKyAgICAgICAgICAgIC0taTsKKyAgICAgICAgICAgIHVpbnQ2NF90IGRpdmlk
ZW5kID0gKHN0YXRpY19jYXN0PHVpbnQ2NF90PihjYXJyeSkgPDwgMzIpICsgc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KG1fdmFsdWVzW2ldKTsKKworICAgICAgICAgICAgdWludDY0X3QgcmVzdWx0ID0g
ZGl2aWRlbmQgLyBzdGF0aWNfY2FzdDx1aW50NjRfdD4oZGl2aXNvcik7CisgICAgICAgICAgICBB
U1NFUlQocmVzdWx0ID09IHN0YXRpY19jYXN0PHVpbnQzMl90PihyZXN1bHQpKTsKKyAgICAgICAg
ICAgIHVpbnQ2NF90IHJlbWFpbmRlciA9IGRpdmlkZW5kICUgc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KGRpdmlzb3IpOworICAgICAgICAgICAgQVNTRVJUKHJlbWFpbmRlciA9PSBzdGF0aWNfY2FzdDx1
aW50MzJfdD4ocmVtYWluZGVyKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1fdmFsdWVz
W2ldID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHJlc3VsdCk7CisgICAgICAgICAgICBjYXJyeSA9
IHN0YXRpY19jYXN0PHVpbnQzMl90PihyZW1haW5kZXIpOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gQ2Fub25pY2FsaXplOyByZW1vdmUgYWxsIHRyYWlsaW5nIHplcm9zLgorICAgICAgICB3aGls
ZSAobV92YWx1ZXMuc2l6ZSgpICYmICFtX3ZhbHVlcy5sYXN0KCkpCisgICAgICAgICAgICBtX3Zh
bHVlcy5yZW1vdmVMYXN0KCk7CisKKyAgICAgICAgcmV0dXJuIGNhcnJ5OworICAgIH0KKworICAg
IGJvb2wgb3BlcmF0b3IhKCkgeyByZXR1cm4gIW1fdmFsdWVzLnNpemUoKTsgfQorCitwcml2YXRl
OgorICAgIFZlY3Rvcjx1aW50MzJfdCwgMzY+IG1fdmFsdWVzOworfTsKKworc3RhdGljIGNoYXIq
IHRvU3RyaW5nV2l0aFJhZGl4KFJhZGl4QnVmZmVyJiBidWZmZXIsIGRvdWJsZSBudW1iZXIsIHVu
c2lnbmVkIHJhZGl4KQoreworICAgIEFTU0VSVChpc2Zpbml0ZShudW1iZXIpKTsKKyAgICBBU1NF
UlQocmFkaXggPj0gMiAmJiByYWRpeCA8PSAzNik7CisKKyAgICAvLyBQb3NpdGlvbiB0aGUgZGVj
aW1hbCBwb2ludCBhdCB0aGUgY2VudGVyIG9mIHRoZSBzdHJpbmcsIHNldAorICAgIC8vIHRoZSBz
dGFydE9mUmVzdWx0U3RyaW5nIHBvaW50ZXIgdG8gcG9pbnQgYXQgdGhlIGRlY2ltYWwgcG9pbnQu
CisgICAgY2hhciogZGVjaW1hbFBvaW50ID0gYnVmZmVyICsgc2l6ZW9mKGJ1ZmZlcikgLyAyOwor
ICAgIGNoYXIqIHN0YXJ0T2ZSZXN1bHRTdHJpbmcgPSBkZWNpbWFsUG9pbnQ7CisKKyAgICAvLyBF
eHRyYWN0IHRoZSBzaWduLgorICAgIGJvb2wgaXNOZWdhdGl2ZSA9IG51bWJlciA8IDA7CisgICAg
aWYgKHNpZ25iaXQobnVtYmVyKSkKKyAgICAgICAgbnVtYmVyID0gLW51bWJlcjsKKyAgICBkb3Vi
bGUgaW50ZWdlclBhcnQgPSBmbG9vcihudW1iZXIpOworCisgICAgLy8gV2UgdXNlIHRoaXMgdG8g
dGVzdCBmb3Igb2RkIHZhbHVlcyBpbiBvZGQgcmFkaXggYmFzZXMuCisgICAgLy8gV2hlcmUgdGhl
IGJhc2UgaXMgZXZlbiwgKGUuZy4gMTApLCB0byBkZXRlcm1pbmUgd2hldGhlciBhIHZhbHVlIGlz
IGV2ZW4gd2UgbmVlZCBvbmx5CisgICAgLy8gY29uc2lkZXIgdGhlIGxlYXN0IHNpZ25pZmljYW50
IGRpZ2l0LiBGb3IgZXhhbXBsZSwgMTI0IGluIGJhc2UgMTAgaXMgZXZlbiwgYmVjYXVzZSAnNCcK
KyAgICAvLyBpcyBldmVuLiBpZiB0aGUgcmFkaXggaXMgb2RkLCB0aGVuIHRoZSByYWRpeCByYWlz
ZWQgdG8gYW4gaW50ZWdlciBwb3dlciBpcyBhbHNvIG9kZC4KKyAgICAvLyBFLmcuIGluIGJhc2Ug
NSwgMTI0IHJlcHJlc2VudHMgKDEgKiAxMjUgKyAyICogMjUgKyA0ICogNSkuIFNpbmNlIGVhY2gg
ZGlnaXQgaW4gdGhlIHZhbHVlCisgICAgLy8gaXMgbXVsdGlwbGllZCBieSBhbiBvZGQgbnVtYmVy
LCB0aGUgcmVzdWx0IGlzIGV2ZW4gaWYgdGhlIHN1bSBvZiBhbGwgZGlnaXRzIGlzIGV2ZW4uCisg
ICAgLy8KKyAgICAvLyBGb3IgdGhlIGludGVnZXIgcG9ydGlvbiBvZiB0aGUgcmVzdWx0LCB3ZSBv
bmx5IG5lZWQgdGVzdCB3aGV0aGVyIHRoZSBpbnRlZ2VyIHZhbHVlIGlzCisgICAgLy8gZXZlbiBv
ciBvZGQuIEZvciBlYWNoIGRpZ2l0IG9mIHRoZSBmcmFjdGlvbiBhZGRlZCwgd2Ugc2hvdWxkIGlu
dmVydCBvdXIgaWRlYSBvZiB3aGV0aGVyCisgICAgLy8gdGhlIG51bWJlciBpcyBvZGQgaWYgdGhl
IG5ldyBkaWdpdCBpcyBvZGQuCisgICAgLy8KKyAgICAvLyBBbHNvIGluaXRpYWxpemUgZGlnaXQg
dG8gdGhpcyB2YWx1ZTsgZm9yIGV2ZW4gcmFkaXggdmFsdWVzIHdlIG9ubHkgbmVlZCB0cmFjayB3
aGV0aGVyCisgICAgLy8gdGhlIGxhc3QgaW5kaXZpZHVhbCBkaWdpdCB3YXMgb2RkLgorICAgIGJv
b2wgaW50ZWdlclBhcnRJc09kZCA9IGludGVnZXJQYXJ0IDw9IDB4MUZGRkZGRkZGRkZGRkYgJiYg
c3RhdGljX2Nhc3Q8aW50NjRfdD4oaW50ZWdlclBhcnQpICYgMTsKKyAgICBBU1NFUlQoaW50ZWdl
clBhcnRJc09kZCA9PSBzdGF0aWNfY2FzdDxib29sPihmbW9kKGludGVnZXJQYXJ0LCAyKSkpOwor
ICAgIGJvb2wgaXNPZGRJbk9kZFJhZGl4ID0gaW50ZWdlclBhcnRJc09kZDsKKyAgICB1aW50MzJf
dCBkaWdpdCA9IGludGVnZXJQYXJ0SXNPZGQ7CisKKyAgICAvLyBDaGVjayBpZiB0aGUgdmFsdWUg
aGFzIGEgZnJhY3Rpb25hbCBwYXJ0IC0gaWYgbm90LCB3ZSdyZSBkb25lLgorICAgIGRvdWJsZSBm
cmFjdGlvblBhcnQgPSBudW1iZXIgLSBmbG9vcihudW1iZXIpOworICAgIGlmIChmcmFjdGlvblBh
cnQpIHsKKyAgICAgICAgLy8gV3JpdGUgdGhlIGRlY2ltYWwgcG9pbnQgbm93LgorICAgICAgICAq
ZGVjaW1hbFBvaW50ID0gJy4nOworCisgICAgICAgIC8vIEhpZ2hlciBwcmVjaXNpb24gcmVwcmVz
ZW50YXRpb24gb2YgdGhlIGZyYWN0aW9uYWwgcGFydC4KKyAgICAgICAgVWludDE2V2l0aEZyYWN0
aW9uIGZyYWN0aW9uKGZyYWN0aW9uUGFydCk7CisKKyAgICAgICAgYm9vbCBuZWVkc1JvdW5kaW5n
VXAgPSBmYWxzZTsKKyAgICAgICAgY2hhciogZW5kT2ZSZXN1bHRTdHJpbmcgPSBkZWNpbWFsUG9p
bnQgKyAxOworCisgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgZGVsdGEgZnJvbSB0aGUgY3VycmVu
dCBudW1iZXIgdG8gdGhlIG5leHQgJiBwcmV2aW91cyBwb3NzaWJsZSBJRUVFIG51bWJlcnMuCisg
ICAgICAgIGRvdWJsZSBuZXh0TnVtYmVyID0gbmV4dGFmdGVyKG51bWJlciwgc3RkOjpudW1lcmlj
X2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKTsKKyAgICAgICAgZG91YmxlIGxhc3ROdW1iZXIg
PSBuZXh0YWZ0ZXIobnVtYmVyLCAtc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0
eSgpKTsKKyAgICAgICAgQVNTRVJUKGlzZmluaXRlKG5leHROdW1iZXIpICYmICFzaWduYml0KG5l
eHROdW1iZXIpKTsKKyAgICAgICAgQVNTRVJUKGlzZmluaXRlKGxhc3ROdW1iZXIpICYmICFzaWdu
Yml0KGxhc3ROdW1iZXIpKTsKKyAgICAgICAgZG91YmxlIGRlbHRhTmV4dERvdWJsZSA9IG5leHRO
dW1iZXIgLSBudW1iZXI7CisgICAgICAgIGRvdWJsZSBkZWx0YUxhc3REb3VibGUgPSBudW1iZXIg
LSBsYXN0TnVtYmVyOworICAgICAgICBBU1NFUlQoaXNmaW5pdGUoZGVsdGFOZXh0RG91YmxlKSAm
JiAhc2lnbmJpdChkZWx0YU5leHREb3VibGUpKTsKKyAgICAgICAgQVNTRVJUKGlzZmluaXRlKGRl
bHRhTGFzdERvdWJsZSkgJiYgIXNpZ25iaXQoZGVsdGFMYXN0RG91YmxlKSk7CisKKyAgICAgICAg
Ly8gV2UgdHJhY2sgdGhlIGRlbHRhIGZyb20gdGhlIGN1cnJlbnQgdmFsdWUgdG8gdGhlIG5leHQs
IHRvIHRyYWNrIGhvdyBtYW55IGRpZ2l0cyBvZiB0aGUKKyAgICAgICAgLy8gZnJhY3Rpb24gd2Ug
bmVlZCB0byB3cml0ZS4gRm9yIGV4YW1wbGUsIGlmIHRoZSB2YWx1ZSB3ZSBhcmUgY29udmVydGlu
ZyBpcyBwcmVjaXNlbHkKKyAgICAgICAgLy8gMS4yMzQ1LCBzbyBmYXIgd2UgaGF2ZSB3cml0dGVu
IHRoZSBkaWdpdHMgIjEuMjMiIHRvIGEgc3RyaW5nIGxlYXZpbmcgYSByZW1haW5kZXIgb2YKKyAg
ICAgICAgLy8gMC40NSwgYW5kIHdlIHdhbnQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgd2UgY2FuIHJv
dW5kIG9mZiwgb3Igd2hldGhlciB3ZSBuZWVkIHRvIGtlZXAKKyAgICAgICAgLy8gYXBwZW5kaW5n
IGRpZ2l0cyAoJzQnKS4gV2UgY2FuIHN0b3AgYWRkaW5nIGRpZ2l0cyBwcm92aWRlZCB0aGF0IHRo
ZW4gbmV4dCBwb3NzaWJsZQorICAgICAgICAvLyBsb3dlciBJRUVFIHZhbHVlIGlzIGZ1cnRoZXIg
ZnJvbSAxLjIzIHRoYW4gdGhlIHJlbWFpbmRlciB3ZSdkIGJlIHJvdW5kaW5nIG9mZiAoMC40NSks
CisgICAgICAgIC8vIHdoaWNoIGlzIHRvIHNheSwgbGVzcyB0aGFuIDEuMjI1NS4gUHV0IGFub3Ro
ZXIgd2F5LCB0aGUgZGVsdGEgYmV0d2VlbiB0aGUgcHJpb3IKKyAgICAgICAgLy8gcG9zc2libGUg
dmFsdWUgYW5kIHRoaXMgbnVtYmVyIG11c3QgYmUgbW9yZSB0aGFuIDJ4IHRoZSByZW1haW5kZXIg
d2UnZCBiZSByb3VuZGluZyBvZmYKKyAgICAgICAgLy8gKG9yIG1vcmUgc2ltcGx5IGhhbGYgdGhl
IGRlbHRhIGJldHdlZW4gbnVtYmVycyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB0aGUgcmVtYWluZGVy
KS4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gU2ltaWxhcmx5IHdlIG5lZWQgdHJhY2sgdGhlIGRl
bHRhIHRvIHRoZSBuZXh0IHBvc3NpYmxlIHZhbHVlLCB0byBkZXJ0ZXJtaW5lIHdoZXRoZXIKKyAg
ICAgICAgLy8gdG8gcm91bmQgdXAuIEluIGFsbW9zdCBhbGwgY2FzZXMgKG90aGVyIHRoYW4gYXQg
ZXhwb25lbnQgYm91bmRhcmllcykgdGhlIGRlbHRhcyB0bworICAgICAgICAvLyBwcmlvciBhbmQg
c3Vic2VxdWVudCB2YWx1ZXMgYXJlIGlkZW50aWNhbCwgc28gd2UgZG9uJ3QgbmVlZCB0cmFjayB0
aGVuIHNlcGFyYXRlbHkuCisgICAgICAgIGlmIChkZWx0YU5leHREb3VibGUgIT0gZGVsdGFMYXN0
RG91YmxlKSB7CisgICAgICAgICAgICAvLyBTaW5jZSB0aGUgZGVsdGFzIGFyZSBkaWZmZXJlbnQg
dHJhY2sgdGhlbSBzZXBhcmF0ZWx5LiBQcmUtbXVsdGlwbHkgYnkgMC41LgorICAgICAgICAgICAg
VWludDE2V2l0aEZyYWN0aW9uIGhhbGZEZWx0YU5leHQoZGVsdGFOZXh0RG91YmxlLCAxKTsKKyAg
ICAgICAgICAgIFVpbnQxNldpdGhGcmFjdGlvbiBoYWxmRGVsdGFMYXN0KGRlbHRhTGFzdERvdWJs
ZSwgMSk7CisKKyAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAgICAgLy8g
ZXhhbWluZSB0aGUgcmVtYWluZGVyIHRvIGRldGVybWluZSB3aGV0aGVyIHdlIHNob3VsZCBiZSBj
b25zaWRlcmluZyByb3VuZGluZworICAgICAgICAgICAgICAgIC8vIHVwIG9yIGRvd24uIElmIHJl
bWFhaW5kZXIgaXMgcHJlY2lzZWx5IDAuNSByb3VuZGluZyBpcyB0byBldmVuLgorICAgICAgICAg
ICAgICAgIGludCBkQ29tcGFyZVBvaW50NSA9IGZyYWN0aW9uLmNvbXBhcmVQb2ludDUoKTsKKyAg
ICAgICAgICAgICAgICBpZiAoZENvbXBhcmVQb2ludDUgPiAwIHx8ICFkQ29tcGFyZVBvaW50NSAm
JiAocmFkaXggJiAxID8gaXNPZGRJbk9kZFJhZGl4IDogZGlnaXQgJiAxKSkgeworICAgICAgICAg
ICAgICAgICAgICAvLyBDaGVjayBmb3Igcm91bmRpbmcgdXA7IGFyZSB3ZSBjbG9zZXIgdG8gdGhl
IHZhbHVlIHdlJ2Qgcm91bmQgb2ZmIHRvIHRoYW4KKyAgICAgICAgICAgICAgICAgICAgLy8gdGhl
IG5leHQgSUVFRSB2YWx1ZSB3b3VsZCBiZT8KKyAgICAgICAgICAgICAgICAgICAgaWYgKGZyYWN0
aW9uLnN1bUdyZWF0ZXJUaGFuT25lKGhhbGZEZWx0YU5leHQpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBuZWVkc1JvdW5kaW5nVXAgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBmb3Igcm91bmRpbmcgZG93bjsgYXJlIHdlIGNs
b3NlciB0byB0aGUgdmFsdWUgd2UnZCByb3VuZCBvZmYgdG8gdGhhbgorICAgICAgICAgICAgICAg
ICAgICAvLyB0aGUgcHJpb3IgSUVFRSB2YWx1ZSB3b3VsZCBiZT8KKyAgICAgICAgICAgICAgICAg
ICAgaWYgKGZyYWN0aW9uIDwgaGFsZkRlbHRhTGFzdCkKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIEFTU0VSVChlbmRP
ZlJlc3VsdFN0cmluZyA8IChidWZmZXIgKyBzaXplb2YoYnVmZmVyKSAtIDEpKTsKKyAgICAgICAg
ICAgICAgICAvLyBXcml0ZSBhIGRpZ2l0IHRvIHRoZSBzdHJpbmcuCisgICAgICAgICAgICAgICAg
ZnJhY3Rpb24gKj0gcmFkaXg7CisgICAgICAgICAgICAgICAgZGlnaXQgPSBmcmFjdGlvbi5mbG9v
ckFuZFN1YnRyYWN0KCk7CisgICAgICAgICAgICAgICAgKmVuZE9mUmVzdWx0U3RyaW5nKysgPSBy
YWRpeERpZ2l0c1tkaWdpdF07CisgICAgICAgICAgICAgICAgLy8gS2VlcCB0cmFjayB3aGV0aGVy
IHRoZSBwb3J0aW9uIHdyaXR0ZW4gaXMgY3VycmVudGx5IGV2ZW4sIGlmIHRoZSByYWRpeCBpcyBv
ZGQuCisgICAgICAgICAgICAgICAgaWYgKGRpZ2l0ICYgMSkKKyAgICAgICAgICAgICAgICAgICAg
aXNPZGRJbk9kZFJhZGl4ID0gIWlzT2RkSW5PZGRSYWRpeDsKKworICAgICAgICAgICAgICAgIC8v
IFNoaWZ0IHRoZSBmcmFjdGlvbnMgYnkgcmFkaXguCisgICAgICAgICAgICAgICAgaGFsZkRlbHRh
TmV4dCAqPSByYWRpeDsKKyAgICAgICAgICAgICAgICBoYWxmRGVsdGFMYXN0ICo9IHJhZGl4Owor
ICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gVGhpcyBjb2Rl
IGlzIGlkZW50aWNhbCB0byB0aGF0IGFib3ZlLCBleGNlcHQgc2luY2UgZGVsdGFOZXh0RG91Ymxl
ICE9IGRlbHRhTGFzdERvdWJsZQorICAgICAgICAgICAgLy8gd2UgZG9uJ3QgbmVlZCB0byB0cmFj
ayB0aGVzZSB0d28gdmFsdWVzIHNlcGFyYXRlbHkuCisgICAgICAgICAgICBVaW50MTZXaXRoRnJh
Y3Rpb24gaGFsZkRlbHRhKGRlbHRhTmV4dERvdWJsZSwgMSk7CisKKyAgICAgICAgICAgIHdoaWxl
ICh0cnVlKSB7CisgICAgICAgICAgICAgICAgaW50IGRDb21wYXJlUG9pbnQ1ID0gZnJhY3Rpb24u
Y29tcGFyZVBvaW50NSgpOworICAgICAgICAgICAgICAgIGlmIChkQ29tcGFyZVBvaW50NSA+IDAg
fHwgIWRDb21wYXJlUG9pbnQ1ICYmIChyYWRpeCAmIDEgPyBpc09kZEluT2RkUmFkaXggOiBkaWdp
dCAmIDEpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChmcmFjdGlvbi5zdW1HcmVhdGVyVGhh
bk9uZShoYWxmRGVsdGEpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBuZWVkc1JvdW5kaW5n
VXAgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZyYWN0aW9uIDwgaGFsZkRlbHRh
KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIEFTU0VSVChl
bmRPZlJlc3VsdFN0cmluZyA8IChidWZmZXIgKyBzaXplb2YoYnVmZmVyKSAtIDEpKTsKKyAgICAg
ICAgICAgICAgICBmcmFjdGlvbiAqPSByYWRpeDsKKyAgICAgICAgICAgICAgICBkaWdpdCA9IGZy
YWN0aW9uLmZsb29yQW5kU3VidHJhY3QoKTsKKyAgICAgICAgICAgICAgICBpZiAoZGlnaXQgJiAx
KQorICAgICAgICAgICAgICAgICAgICBpc09kZEluT2RkUmFkaXggPSAhaXNPZGRJbk9kZFJhZGl4
OworICAgICAgICAgICAgICAgICplbmRPZlJlc3VsdFN0cmluZysrID0gcmFkaXhEaWdpdHNbZGln
aXRdOworCisgICAgICAgICAgICAgICAgaGFsZkRlbHRhICo9IHJhZGl4OworICAgICAgICAgICAg
fQorICAgICAgICB9CisKKyAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGZyYWN0aW9uIG5lZWRzIHJv
dW5kaW5nIG9mZiAoZmxhZyBzZXQgaW4gdGhlIGxvb3Agd3JpdGluZyBkaWdpdHMsIGFib3ZlKS4K
KyAgICAgICAgaWYgKG5lZWRzUm91bmRpbmdVcCkgeworICAgICAgICAgICAgLy8gV2hpbHN0IHRo
ZSBsYXN0IGRpZ2l0IGlzIHRoZSBtYXhpbXVtIGluIHRoZSBjdXJyZW50IHJhZGl4LCByZW1vdmUg
aXQuCisgICAgICAgICAgICAvLyBlLmcuIHJvdW5kaW5nIHVwIHRoZSBsYXN0IGRpZ2l0IGluICIx
Mi4zOTk5IiBpcyB0aGUgc2FtZSBhcyByb3VuZGluZyB1cCB0aGUKKyAgICAgICAgICAgIC8vIGxh
c3QgZGlnaXQgaW4gIjEyLjMiIC0gYm90aCByb3VuZCB1cCB0byAiMTIuNCIuCisgICAgICAgICAg
ICB3aGlsZSAoZW5kT2ZSZXN1bHRTdHJpbmdbLTFdID09IHJhZGl4RGlnaXRzW3JhZGl4IC0gMV0p
CisgICAgICAgICAgICAgICAgLS1lbmRPZlJlc3VsdFN0cmluZzsKKworICAgICAgICAgICAgLy8g
UmFkaXggZGlnaXRzIGFyZSBzZXF1ZW50aWFsIGluIGFzY2lpL3VuaWNvZGUsIGV4Y2VwdCBmb3Ig
JzknIGFuZCAnYScuCisgICAgICAgICAgICAvLyBFLmcuIHRoZSBmaXJzdCAnaWYnIGNhc2UgaGFu
ZGxlcyByb3VuZGluZyA2Ny44OSB0byA2Ny44YSBpbiBiYXNlIDE2LgorICAgICAgICAgICAgLy8g
VGhlICdlbHNlIGlmJyBjYXNlIGhhbmRsZXMgcm91bmRpbmcgb2YgYWxsIG90aGVyIGRpZ2l0cy4K
KyAgICAgICAgICAgIGlmIChlbmRPZlJlc3VsdFN0cmluZ1stMV0gPT0gJzknKQorICAgICAgICAg
ICAgICAgIGVuZE9mUmVzdWx0U3RyaW5nWy0xXSA9ICdhJzsKKyAgICAgICAgICAgIGVsc2UgaWYg
KGVuZE9mUmVzdWx0U3RyaW5nWy0xXSAhPSAnLicpCisgICAgICAgICAgICAgICAgKytlbmRPZlJl
c3VsdFN0cmluZ1stMV07CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBP
bmUgb3RoZXIgcG9zc2liaWxpdHkgLSB0aGVyZSBtYXkgYmUgbm8gZGlnaXRzIHRvIHJvdW5kIHVw
IGluIHRoZSBmcmFjdGlvbgorICAgICAgICAgICAgICAgIC8vIChvciBhbGwgbWF5IGJlIGJlZW4g
cm91bmRlZCBvZmYgYWxyZWFkeSksIGluIHdoaWNoIGNhc2Ugd2UgbWF5IG5lZWQgdG8KKyAgICAg
ICAgICAgICAgICAvLyByb3VuZCBpbnRvIHRoZSBpbnRlZ2VyIHBvcnRpb24gb2YgdGhlIG51bWJl
ci4gUmVtb3ZlIHRoZSBkZWNpbWFsIHBvaW50LgorICAgICAgICAgICAgICAgIC0tZW5kT2ZSZXN1
bHRTdHJpbmc7CisgICAgICAgICAgICAgICAgLy8gSW4gb3JkZXIgdG8gZ2V0IGhlcmUgdGhlcmUg
bXVzdCBoYXZlIGJlZW4gYSBub24temVybyBmcmFjdGlvbiwgaW4gd2hpY2ggY2FzZQorICAgICAg
ICAgICAgICAgIC8vIHRoZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25lIGJpdCBvZiB0aGUgdmFsdWUn
cyBtYW50aXNzYSBub3QgaW4gdXNlIGluIHRoZQorICAgICAgICAgICAgICAgIC8vIGludGVnZXIg
cGFydCBvZiB0aGUgbnVtYmVyLiBBcyBzdWNoLCBhZGRpbmcgdG8gdGhlIGludGVnZXIgcGFydCBz
aG91bGQgbm90CisgICAgICAgICAgICAgICAgLy8gYmUgYWJsZSB0byBsb3NlIHByZWNpc2lvbi4K
KyAgICAgICAgICAgICAgICBBU1NFUlQoKGludGVnZXJQYXJ0ICsgMSkgLSBpbnRlZ2VyUGFydCA9
PSAxKTsKKyAgICAgICAgICAgICAgICArK2ludGVnZXJQYXJ0OworICAgICAgICAgICAgfQorICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gV2Ugb25seSBuZWVkIHRvIGNoZWNrIGZvciB0
cmFpbGluZyB6ZXJvcyBpZiB0aGUgdmFsdWUgZG9lcyBub3QgZ2V0IHJvdW5kZWQgdXAuCisgICAg
ICAgICAgICB3aGlsZSAoZW5kT2ZSZXN1bHRTdHJpbmdbLTFdID09ICcwJykKKyAgICAgICAgICAg
ICAgICAtLWVuZE9mUmVzdWx0U3RyaW5nOworICAgICAgICB9CisKKyAgICAgICAgKmVuZE9mUmVz
dWx0U3RyaW5nID0gJ1wwJzsKKyAgICAgICAgQVNTRVJUKGVuZE9mUmVzdWx0U3RyaW5nIDwgYnVm
ZmVyICsgc2l6ZW9mKGJ1ZmZlcikpOworICAgIH0gZWxzZQorICAgICAgICAqZGVjaW1hbFBvaW50
ID0gJ1wwJzsKKworICAgIEJpZ0ludGVnZXIgdW5pdHMoaW50ZWdlclBhcnQpOworCisgICAgLy8g
QWx3YXlzIGxvb3AgYXQgbGVhc3Qgb25jZSwgdG8gZW1pdCBhdCBsZWFzdCAnMCcuCisgICAgZG8g
eworICAgICAgICBBU1NFUlQoYnVmZmVyIDwgc3RhcnRPZlJlc3VsdFN0cmluZyk7CisKKyAgICAg
ICAgLy8gUmVhZCBhIHNpbmdsZSBkaWdpdCBhbmQgd3JpdGUgaXQgdG8gdGhlIGZyb250IG9mIHRo
ZSBzdHJpbmcuCisgICAgICAgIC8vIERpdmlkZSBieSByYWRpeCB0byByZW1vdmUgb25lIGRpZ2l0
IGZyb20gdGhlIHZhbHVlLgorICAgICAgICBkaWdpdCA9IHVuaXRzLmRpdmlkZShyYWRpeCk7Cisg
ICAgICAgICotLXN0YXJ0T2ZSZXN1bHRTdHJpbmcgPSByYWRpeERpZ2l0c1tkaWdpdF07CisgICAg
fSB3aGlsZSAoISF1bml0cyk7CisKKyAgICAvLyBJZiB0aGUgbnVtYmVyIGlzIG5lZ2F0aXZlLCBw
cmVwZW5kICctJy4KKyAgICBpZiAoaXNOZWdhdGl2ZSkKKyAgICAgICAgKi0tc3RhcnRPZlJlc3Vs
dFN0cmluZyA9ICctJzsKKyAgICBBU1NFUlQoYnVmZmVyIDw9IHN0YXJ0T2ZSZXN1bHRTdHJpbmcp
OworCisgICAgcmV0dXJuIHN0YXJ0T2ZSZXN1bHRTdHJpbmc7Cit9CisKIC8vIHRvRXhwb25lbnRp
YWwgY29udmVydHMgYSBudW1iZXIgdG8gYSBzdHJpbmcsIGFsd2F5cyBmb3JtYXR0aW5nIGFzIGFu
IGV4cG9lbnRpYWwuCiAvLyBUaGlzIG1ldGhvZCB0YWtlcyBhbiBvcHRpb25hbCBhcmd1bWVudCBz
cGVjaWZ5aW5nIGEgbnVtYmVyIG9mICpkZWNpbWFsIHBsYWNlcyoKIC8vIHRvIHJvdW5kIHRoZSBz
aWduaWZpY2FuZCB0byAob3IsIHB1dCBhbm90aGVyIHdheSwgdGhpcyBtZXRob2Qgb3B0aW9uYWxs
eSByb3VuZHMKQEAgLTIwOSw3ICs3NDMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG51bWJlclByb3RvCiAgICAgLy8gQ29udmVydCB0byBkZWNpbWFsIHdpdGggcm91bmRpbmcuCiAg
ICAgRGVjaW1hbE51bWJlciBudW1iZXIoeCwgUm91bmRpbmdTaWduaWZpY2FudEZpZ3VyZXMsIHNp
Z25pZmljYW50RmlndXJlcyk7CiAgICAgLy8gSWYgbnVtYmVyIGlzIGluIHRoZSByYW5nZSAxZS02
IDw9IHggPCBwb3coMTAsIHNpZ25pZmljYW50RmlndXJlcykgdGhlbiBmb3JtYXQKLSAgICAvLyBh
cyBkZWNpbWFsLiBPdGhlcndpc2UsIGZvcm1hdCB0aGUgbnVtYmVyIGFzIGFuIGV4cG9uZW50aWFs
LiAgRGVjaW1hbCBmb3JtYXQKKyAgICAvLyBhcyBkZWNpbWFsLiBPdGhlcndpc2UsIGZvcm1hdCB0
aGUgbnVtYmVyIGFzIGFuIGV4cG9uZW50aWFsLiBEZWNpbWFsIGZvcm1hdAogICAgIC8vIGRlbWFu
ZHMgYSBtaW5pbXVtIG9mIChleHBvbmVudCArIDEpIGRpZ2l0cyB0byByZXByZXNlbnQgYSBudW1i
ZXIsIGZvciBleGFtcGxlCiAgICAgLy8gMTIzNCAoMS4yMzRlKzMpIHJlcXVpcmVzIDQgZGlnaXRz
LiAoU2VlIEVDTUEtMjYyIDE1LjcuNC43LjEwLmMpCiAgICAgTnVtYmVyVG9TdHJpbmdCdWZmZXIg
YnVmZmVyOwpAQCAtMjM4LDE1ICs3NzIsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBudW1iZXJQcm90bwogICAgIGlmIChyYWRpeCA9PSAxMCkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1N0cmluZyhleGVjLCB2LnRvU3RyaW5nKGV4ZWMpKSk7CiAKLSAgICBzdGF0
aWMgY29uc3QgY2hhciogY29uc3QgZGlnaXRzID0gIjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9w
cXJzdHV2d3h5eiI7Ci0KICAgICAvLyBGYXN0IHBhdGggZm9yIG51bWJlciB0byBjaGFyYWN0ZXIg
Y29udmVyc2lvbi4KICAgICBpZiAocmFkaXggPT0gMzYpIHsKICAgICAgICAgaWYgKHYuaXNJbnQz
MigpKSB7CiAgICAgICAgICAgICBpbnQgeCA9IHYuYXNJbnQzMigpOwogICAgICAgICAgICAgaWYg
KHN0YXRpY19jYXN0PHVuc2lnbmVkPih4KSA8IDM2KSB7IC8vIEV4Y2x1ZGUgbmVnYXRpdmVzCiAg
ICAgICAgICAgICAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERh
dGEoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGdsb2JhbERhdGEt
PnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmcoZ2xvYmFsRGF0YSwgZGlnaXRzW3hd
KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShnbG9iYWxEYXRhLT5z
bWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGdsb2JhbERhdGEsIHJhZGl4RGlnaXRz
W3hdKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0yNTQsNTMgKzc4Niwx
MiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvCiAgICAgaWYgKHJh
ZGl4IDwgMiB8fCByYWRpeCA+IDM2KQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMs
IGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgInRvU3RyaW5nKCkgcmFkaXggYXJndW1lbnQgbXVzdCBi
ZSBiZXR3ZWVuIDIgYW5kIDM2IikpOwogCi0gICAgLy8gSU5UX01BWCByZXN1bHRzIGluIDEwMjQg
Y2hhcmFjdGVycyBsZWZ0IG9mIHRoZSBkb3Qgd2l0aCByYWRpeCAyCi0gICAgLy8gZ2l2ZSB0aGUg
c2FtZSBzcGFjZSBvbiB0aGUgcmlnaHQgc2lkZS4gc2FmZXR5IGNoZWNrcyBhcmUgaW4gcGxhY2UK
LSAgICAvLyB1bmxlc3Mgc29tZW9uZSBmaW5kcyBhIHByZWNpc2UgcnVsZS4KLSAgICBjaGFyIHNb
MjA0OCArIDNdOwotICAgIGNvbnN0IGNoYXIqIGxhc3RDaGFySW5TdHJpbmcgPSBzICsgc2l6ZW9m
KHMpIC0gMTsKICAgICBkb3VibGUgeCA9IHYudW5jaGVja2VkR2V0TnVtYmVyKCk7CiAgICAgaWYg
KCFpc2Zpbml0ZSh4KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhl
eGVjLCBVU3RyaW5nOjpudW1iZXIoeCkpKTsKIAotICAgIGJvb2wgaXNOZWdhdGl2ZSA9IHggPCAw
LjA7Ci0gICAgaWYgKGlzTmVnYXRpdmUpCi0gICAgICAgIHggPSAteDsKLQotICAgIGRvdWJsZSBp
bnRlZ2VyUGFydCA9IGZsb29yKHgpOwotICAgIGNoYXIqIGRlY2ltYWxQb2ludCA9IHMgKyBzaXpl
b2YocykgLyAyOwotCi0gICAgLy8gY29udmVydCBpbnRlZ2VyIHBvcnRpb24KLSAgICBjaGFyKiBw
ID0gZGVjaW1hbFBvaW50OwotICAgIGRvdWJsZSBkID0gaW50ZWdlclBhcnQ7Ci0gICAgZG8gewot
ICAgICAgICBpbnQgcmVtYWluZGVyRGlnaXQgPSBzdGF0aWNfY2FzdDxpbnQ+KGZtb2QoZCwgcmFk
aXgpKTsKLSAgICAgICAgKi0tcCA9IGRpZ2l0c1tyZW1haW5kZXJEaWdpdF07Ci0gICAgICAgIGQg
Lz0gcmFkaXg7Ci0gICAgfSB3aGlsZSAoKGQgPD0gLTEuMCB8fCBkID49IDEuMCkgJiYgcyA8IHAp
OwotCi0gICAgaWYgKGlzTmVnYXRpdmUpCi0gICAgICAgICotLXAgPSAnLSc7Ci0gICAgY2hhciog
c3RhcnRPZlJlc3VsdFN0cmluZyA9IHA7Ci0gICAgQVNTRVJUKHMgPD0gc3RhcnRPZlJlc3VsdFN0
cmluZyk7Ci0KLSAgICBkID0geCAtIGludGVnZXJQYXJ0OwotICAgIHAgPSBkZWNpbWFsUG9pbnQ7
Ci0gICAgY29uc3QgZG91YmxlIGVwc2lsb24gPSAwLjAwMTsgLy8gVE9ETzogZ3Vlc3NlZC4gYmFz
ZSBvbiByYWRpeCA/Ci0gICAgYm9vbCBoYXNGcmFjdGlvbmFsUGFydCA9IChkIDwgLWVwc2lsb24g
fHwgZCA+IGVwc2lsb24pOwotICAgIGlmIChoYXNGcmFjdGlvbmFsUGFydCkgewotICAgICAgICAq
cCsrID0gJy4nOwotICAgICAgICBkbyB7Ci0gICAgICAgICAgICBkICo9IHJhZGl4OwotICAgICAg
ICAgICAgY29uc3QgaW50IGRpZ2l0ID0gc3RhdGljX2Nhc3Q8aW50PihkKTsKLSAgICAgICAgICAg
ICpwKysgPSBkaWdpdHNbZGlnaXRdOwotICAgICAgICAgICAgZCAtPSBkaWdpdDsKLSAgICAgICAg
fSB3aGlsZSAoKGQgPCAtZXBzaWxvbiB8fCBkID4gZXBzaWxvbikgJiYgcCA8IGxhc3RDaGFySW5T
dHJpbmcpOwotICAgIH0KLSAgICAqcCA9ICdcMCc7Ci0gICAgQVNTRVJUKHAgPCBzICsgc2l6ZW9m
KHMpKTsKLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYywgc3RhcnRP
ZlJlc3VsdFN0cmluZykpOworICAgIFJhZGl4QnVmZmVyIHM7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1N0cmluZyhleGVjLCB0b1N0cmluZ1dpdGhSYWRpeChzLCB4LCByYWRpeCkpKTsK
IH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNUb0xvY2Fs
ZVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5MDI0OCkKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEx
LTA3LTAxICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NTIKKyAgICAgICAgRmlyZWZveCBhbmQgSmF2
YVNjcmlwdENvcmUgZGlmZmVyIGluIE51bWJlci50b1N0cmluZyhpbnRlZ2VyKQorCisgICAgICAg
IE91ciBhcmJpdHJhcnkgcmFkaXggKDIuLjM2KSB0b1N0cmluZyBjb252ZXJzaW9uIGlzIGluYWNj
dXJhdGUuCisgICAgICAgIFRoaXMgaXMgcGFydGx5IGJlY2F1c2UgaXQgdXNlcyBkb3VibGVzIHRv
IHBlcmZvcm0gbWF0aCB0aGF0IHJlcXVpcmVzCisgICAgICAgIGhpZ2hlciBhY2N1cmFjeSwgYW5k
IHBhcnRseSBiZWNhc3VlIGl0IGRvZXMgbm90IGF0dGVtcHQgdG8gY29ycmVjdGx5CisgICAgICAg
IGRldGVjdCB3aGVyZSB0byB0ZXJtaW5hdGUsIGluc3RlYWQgcmVseWluZyBvbiBhIHNpbXBsZSAn
ZXBzaWxvbicuCisKKyAgICAgICAgKiBmYXN0L2pzL251bWJlci10b1N0cmluZy1leHBlY3RlZC50
eHQ6CisgICAgICAgICAgICAtIFVwZGF0ZSBleHBlY3RlZCByZXN1bHRzIGZyb20gRkFJTCB0byBQ
QVNTLgorCiAyMDExLTA3LTAxICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9qcy9udW1iZXItdG9TdHJpbmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvanMvbnVtYmVyLXRvU3RyaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
OTAyMDIpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL251bWJlci10b1N0cmluZy1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTEyLDQxICsxMiw0MSBAQCBQQVNTICgxMjM0LjU2NykudG9T
dHJpbmcoMSkgdGhyZXcgZXhjZXB0CiBQQVNTICgxMjM0LjU2NykudG9TdHJpbmcodHJ1ZSkgdGhy
ZXcgZXhjZXB0aW9uIFJhbmdlRXJyb3I6IHRvU3RyaW5nKCkgcmFkaXggYXJndW1lbnQgbXVzdCBi
ZSBiZXR3ZWVuIDIgYW5kIDM2LgogUEFTUyAoMTIzNC41NjcpLnRvU3RyaW5nKCcxJykgdGhyZXcg
ZXhjZXB0aW9uIFJhbmdlRXJyb3I6IHRvU3RyaW5nKCkgcmFkaXggYXJndW1lbnQgbXVzdCBiZSBi
ZXR3ZWVuIDIgYW5kIDM2LgogUEFTUyAoMTIzNC41NjcpLnRvU3RyaW5nKDIpIGlzICIxMDAxMTAx
MDAxMC4xMDAxMDAwMTAwMTAwMTEwMTExMDEwMDEwMTExMTAwMDExMDEwMTAxIgotRkFJTCAoMTIz
NC41NjcpLnRvU3RyaW5nKDMpIHNob3VsZCBiZSAxMjAwMjAxLjEyMDAyMjEwMDAyMTAwMTAyMTAy
MTAwMjIwMi4gV2FzIDEyMDAyMDEuMTIwMDIyMTAwMDIxMDAxMDIxMDIxMDAyMjAxMjAwMTEwMjIy
MjAwMTIxMTAyMTIxMTEyMjEwMjEyMDEwMDAxMDIxMDIwMDIwMDAxMDAyMTIyMjAxMTEwMDAyMjEw
MjExMTExMTIyMDAwMDEyMDEyMTAyMDIwMjAyMjIyMjAxMjIyMTAwMjAyMDIxMTAxMjIyMTEyMjEx
MjAwMDEwMDAxMTEwMTAwMTAwMTAwMjIyMjAyMjAxMjAyMDAxMDIyMDAyMjEyMjAyMjExMDIwMjAw
MjAwMjIwMjIyMjIwMjIxMjAxMDAyMTIwMTIxMjAxMjIyMDAyMTEyMTExMTAwMDAwMDIxMTIwMDIw
MDIyMjAwMDExMjAxMjExMjIwMjExMTEwMjEwMjIyMTEyMDAwMDIxMjExMTIwMjIwMTAyMjExMTAy
MTEwMDIyMTEyMDAxMDAxMTIyMDAyMDEwMDIyMDAyMTIyMTExMDAwMjIxMjExMTIwMDAwMjIxMjIy
MTEwMjIyMTAwMjAyMDIyMDAwMTExMDEyMDAyMTIxMDIxMTAxMDIyMTIxMTAwMTIyMDAxMTEyMTIx
MDExMDAwMDEwMTEyMDEwMjAwMDIwMjAxMTAyMjAwMjIyMDIyMjEwMTAxMDIyMTIxMTAwMDEyMDAx
MDAyMjEwMjAwMjIxMDAyMTIyMTAwMjEyMjIxMTAyMTEyMDIwMTExMTEwMTIwMjExMDEwMDAwMTEy
MTExMTEyMDEyMjEyMDEyMjExMDIwMTIwMTIyMjAyMDIyMTAxMTAwMjEyMTAyMjIwMDIwMTIxMDEy
MjAwMDAyMjAyMDIwMDAwMTAwMDAwMDIyMTIyMTExMjIwMDIyMDEwMDIyMjEyMDIxMDAyMDAwMTIw
MTIwMjEyMTAxMDIwMDAxMTIxMDAyMDAwMTIxMDIxMDEyMTIwMjAyMjEwMjEwMTExMDEyMjAyMDEw
MDAyMDAyMTIyMjEwMjAxMjAxMjIyMjIxMjEyMTExMTEyMTEyMTEyMTEwMTIxMjEyMjAyMTAwMTAx
MDIyMjIwMTIwMDIyMTIwMDAxMTIyMDExMTEyMTExMTExMTEwMjAyMjIyMjExMDAyMjIyMjExMjIw
MDAyMDAyMTEwMDIwMjIxMDAyMDAxMjIxMjAwMTAwMTEwMjExMTExMTIyMTIwMTAyMDIyMjIwMTAw
MDIxMDIyMDEyMTAwMDEwMDIyMDEyMTExMTIyMjEyMTAxMTExMDEwMTEwMjAwMTAwMjAyMjAyMTAx
MTIwMTIwMDEwMTIwMDAwMTIxMDIxMDEyMTAwMDAyMDEyMTExMDEwMjExMDIxMDIwMTAxMDAyMTEy
MjAxMjIwMTExMTExMTIwMTEwMi4KK1BBU1MgKDEyMzQuNTY3KS50b1N0cmluZygzKSBpcyAiMTIw
MDIwMS4xMjAwMjIxMDAwMjEwMDEwMjEwMjEwMDIyMDIiCiBQQVNTICgxMjM0LjU2NykudG9TdHJp
bmcoNCkgaXMgIjEwMzEwMi4yMTAxMDIxMjMyMjExMzIwMzExMSIKIFBBU1MgKDEyMzQuNTY3KS50
b1N0cmluZyg0LjkpIGlzICIxMDMxMDIuMjEwMTAyMTIzMjIxMTMyMDMxMTEiCi1GQUlMICgxMjM0
LjU2NykudG9TdHJpbmcoNSkgc2hvdWxkIGJlIDE0NDE0LjI0MDQxNDE0MTQxNDE0MTQxNC4gV2Fz
IDE0NDE0LjI0MDQxNDE0MTQxNDE0MTQxNDIwMDEzMzAxMTQ0MjQzNDAzMTA0MDEyNDMzMDI0NDAy
MzEyNDIwMDAxMTMwNDMxMjMxMTMyNDEwMDMyMDMxMDMyMjIzMjMzNDQwMTI0MTQ0NDAyMzMwMTMw
MTQyNDMxMTQwMjQxMDM0MzQ0MDQ0MDE0NDIzNDEyMTIyMTAwNDA0MjMxMzIxNDQzMzIyMzMxMjM0
MDM0NDQyMTQzMzMwMzQwMzIxMjAxMjIzNDIxMDEzMDQ0NDQxMDAyMTMxMzAyMjEzMTIxMjQzMDIz
MS4KLUZBSUwgKDEyMzQuNTY3KS50b1N0cmluZyg2KSBzaG91bGQgYmUgNTQxNC4zMjIyNDU1NDEz
NDQzMDIzMy4gV2FzIDU0MTQuMzIyMjQ1NTQxMzQ0MzAyMzMyMzM1NTQ0MTQzMjQyMjUxNTU0MTUx
My4KLUZBSUwgKDEyMzQuNTY3KS50b1N0cmluZyg3KSBzaG91bGQgYmUgMzQxMi4zNjUzMjM2NjEx
MTE2NTMuIFdhcyAzNDEyLjM2NTMyMzY2MTExMTY1MjUwMDMwMDYzMjIwMDExMDYyNjI1MjY0MjM1
MDIyMzY2MDMxMzU1MDA2NDIzNTYyNDAwMzUzMzUxMDMzNTE0NjA0NDQzNjYxMjMzMTI2MzA2MzU0
NDY2MDY2MjQwNjYyNTIwMDMzMzEyMTEwMjIyMDA0NjEyNTQyMjE2MzY0MzAwNTI1NTM0MzMzMjIx
MzA0MTUwNDQ0MjAzMTQxMjEwNTAwMTYyMzAyNTE2MjEwNDM0MzE1MTUyMjM0MzQwMzI2NjAzNjM1
NDYxNTAxMzM2MjQyMTE2MjAzMzE0MTUzMzU0NjUxMTI2NTMyMTA1MzY1NDE1MTE2NTAwMzQwNTAx
NTA1NTM0MTQ0MTU2NjUyMDMwNTU0MDEyNDY1NjI1NTY1MTYxMzMyNjQ1MzM0MjIzNjUxMTQ1MTA0
NDI1NTU0NTI2MzAyMDIzMDM0NjU0NjAwMDY2NTY0NTEyMTIzMDEyNTI1NTQ2NDA0MjE2MTEyMDIw
MzY0MTIwNjEwMTQ0MDEyNDM0MTE2MTYyMjAxMjQzMzI1MDM2MTY0MDQwMjE1MTIwNjY1NDE1MjAx
MzIwMjIxNjYyMzMzNTI2MjA0MzYwMDY2MDE2NTQ2MTUzNTExNDI2MDUyMjUwNTEzMzE0NTY2NTUy
NjU2NDQxMDU0NjQ0NDA2MjA2MTIxMzIwMDQxMDI2MzE2MTE0MDE0MTE1MjUzNjMwMDE2NDQ2NDIz
NjA1NDA1MTQyMjU0MTY1MjE0NDAzMjYyNTUyMjUxNjI2MDMwNTMzMzEzMDMzMTY1MTA0NjExMDQ1
MDI0NTU1NTQxNjA2NDUyMDMzNDE2MzEzNTY1MjM0MzA2NTE2NTAxNTY0MjEyMTQ0NjQ0MzQxMjQz
MjMzNjQzMTIyMDUxMTUwMTU1NDM0NTIyMzAyMjI0NTY2NjIzMTM2NDUyNDE2MzIyMjIwMzIyNDMx
MDEzMzM1NjA1MjQzNTMxNTM1NjIxNDEzNjUyNjY1MTMzNjUyMTMwMDYyNDUxNDY2MjM1MzAyNjQz
NDQ2NDE1NDI1MDU1NDU0MTEyMDE0MzM1NDMwMzAzMjExNTAwMTM2NjY2MjI2MDEyNDU0MTExMDA2
MTUxMzQ2NDM2MzQxMDM0MzUyNjI2NTI2MDQ0MDYzNTYyNTQzMzQxMTYyMjAwMzIzNDYxMDIyMDU0
MzEyNDE1MDYyMjI0NjM0MTU1MTMzNjI2NTU0MTYyNDMxNTQ0MDU1NDEyMjAxNjI0NjE0MzU2MDE0
MzEyNjA0MTIyNTAwMzAxLgorUEFTUyAoMTIzNC41NjcpLnRvU3RyaW5nKDUpIGlzICIxNDQxNC4y
NDA0MTQxNDE0MTQxNDE0MTQiCitQQVNTICgxMjM0LjU2NykudG9TdHJpbmcoNikgaXMgIjU0MTQu
MzIyMjQ1NTQxMzQ0MzAyMzMiCitQQVNTICgxMjM0LjU2NykudG9TdHJpbmcoNykgaXMgIjM0MTIu
MzY1MzIzNjYxMTExNjUzIgogUEFTUyAoMTIzNC41NjcpLnRvU3RyaW5nKDgpIGlzICIyMzIyLjQ0
MjIzMzUxMzYxNTI0IgotRkFJTCAoMTIzNC41NjcpLnRvU3RyaW5nKDkpIHNob3VsZCBiZSAxNjIx
LjUwODMwNzAzNzIzMjY1LiBXYXMgMTYyMS41MDgzMDcwMzcyMzI2NTA0Mjg2MTczNzc0ODM3NjMw
MzcyMDYwMzI1ODE0MDI3MjQ0NDgwMDUxNzIyMjI4ODE4NzA2NjczNTg0ODQ2MDMwNDMzMTAzMjg2
ODE2NjEyNjI3ODI3MzY2MjA4Mjg4Mjc2MzI1MTc2NTgwNzU0NDAwMDc1MDYyODAxNTE3NTY3NDM3
Mjg0NjAyNTQ1MjYzODQzNzMyNzUwMzE1NjIxMDgwNzg0MzA4NTQ1MDA4NTg0MjgzMjIyNjA0MzUw
NzcyNDEyNzczMTgwNDU1MzQwMDM0NjM2MDY2NDI2MjgyODMzMzg1NDAxNjEwODM2MjcwNzgzMjU4
NDI0NjY0NDM1MjQxMDA0NzQ0NjU3NjU3MzY1MTg2NjgzNDA3NzI4MDY1MzU2MDI2NjYwMTAwMDg1
NzQ4MDgxMDg3NjcwNjA1MTY3NzEyMDE1MzIwMTcyMzU1MjI3MjM0MzU2NjMwNjI1ODM2NTE4ODc3
NzQ0NzU0NzM1NTU2NzAzMzg4MTYyNzYwNDgxNDU0NDQ0MjI4ODQwODg3NTYwNjI0MDY4MzIwNTc2
MTA0MjQ0NDg1MTIyODYzMDcyNjUzMDMyNjU0NDg3NzE0MzM0MjAzMjI2NzE1MTYxMTYwMTcyMzUz
MDIxNzQxMjQyMzYzMzI0ODE4MTQ0NDY0MjAyODEyNTE2MjgwMzgxNzc1NTA3NjEzNzAyNTg1Nzg4
NTgzNDI0ODgxMTI1ODA3MTg1ODg4NTM4Njc2MjEwODMxNDg2MTQ0NTYyMzc1ODY0MjYxMzQ1MTQ3
MzgzMjIyMzIyMjcyMDU1NjM0NTQ3MzYzMzA2NjgzNDA4MzY1NTczODYwNDI1MjM0MzczNTQ4ODcz
NjgxNjM4NTQ4MTEwMjQ2ODY4NjA0MTAwNzQ2ODgzMTY1NzIxMjQ0Njc1NzUxMDQ4MDEyMTI2Nzgy
MTU3ODc4MTU0MzUzNzEzMzcxNzU4NDYyNDMyMDAzMTgzNTgyNTI2MDExNTg2ODQ0Mzc4MDUzMjAw
ODI3MzMxMDA4NjI0NTE2MDEwNTU0NDU2NzEyODA3NTYzMTA4MzQ3MDQ2NjU3Njc0NjY1NjUxMTMx
NDIyMTQ0NTUwMjU2MTY4MDQ3MDE0MjE1Njc3MDMwMTQxNDQzNTg3MDA4MTA1NjEwMzc1MzQwNTMz
NjU4Mzg0Mzg1MDAzMjY2MDQ3MDE0MDY2NjMyNzg0NTEyNDQwMzAwODY1NjE2NjAyNzY1ODIwMTY0
MjU4ODY3NTA1ODAyNjY3MTYzMjQzMDg1NzY3MzAxNDUzMDA2Mjc0MjY2NTYwODM4MDQyNjEzNjY2
NjUzMDIxNzM3NDEyMTc2NTUyODc0MjU4LgorUEFTUyAoMTIzNC41NjcpLnRvU3RyaW5nKDkpIGlz
ICIxNjIxLjUwODMwNzAzNzIzMjY1IgogUEFTUyAoMTIzNC41NjcpLnRvU3RyaW5nKDEwKSBpcyAi
MTIzNC41NjciCi1GQUlMICgxMjM0LjU2NykudG9TdHJpbmcoMTEpIHNob3VsZCBiZSBhMjIuNjI2
NzRhMGE1ODg1LiBXYXMgYTIyLjYyNjc0YTBhNTg4NDkxNDU2ODRhNDYyNTA3Mzg0MjE5Nzg3ODc4
OTU0NzM3Njg5OTg5YTM0NzY0NzY4MDg3NjA5NWEyMzQ1ODYwODg1MDQ2MDMxMjg3YTlhMTY5NGEz
OTcxMzE5MzQxNDIwMjY3NDUxNjZhNzA0MzQ0NzczYTczNzAwODAyNjk0NjgzMTI1MzQzOTg4OTQx
NzU1NTQ2YTgxNDg0OTU5NGEzNjQwMjk2MDdhYTA3NzFhMjQ0NzA2ODkzMGFhNTU3NzU5OTY4OTcy
NTdhMzg1NTcxNjM0MDI4NmE5OTY5Mzk2Njk4Njg0MjUwNTZhNDI5NDRhNDU0MzcyNTIwMjA5OTYw
NTM0MzMxNjA0NTgzODY1OTIwNzU2MmEwMDUxOWE0MDIzNjIyYTgyNjA2NTM5YTk0NzM2NjQ1MzE3
MDU2YWE5NDgyNDY4YTk5Njk5NGEzNDc0NzExNTNhNzFhODY4NGE4ODE3ODY2MzQ5Mjk0MTAyMzE1
NTQxMzMzOTY0NjY4MTBhMTMxMDEzNzk5OWFhOTkxMTA3NjgyMTA5OWEyMDI0NzU0MTIxMzcxNTEx
ODEyMzAxOTU3NDYzNjQ0MTIwOTQ1MjQxNDkxNGE2OTZhMjk2OTg0OTMyODk0NDUzMGEzNDg0NDUz
MzkyMjk2NTMwNjg0OGE5NWEyMTg5NDU0MzE2MTkyNzg3MzM4MDcyMjQxMTE4MDMyMTIwNzU3ODA4
YTI1ODhhOTAwYTc0MTkzOTEzMjQwNjFhNTQ0YWExYTc0YThhOTM3MzY2OTM2MjkyN2E0MDIwYTYy
OGE3MzQxYTkyMDU1OTM4MmE0NzMyOTE0MzkzOTRhNTI0NDc0NTUyNzgxOTFhMDA3NDk0NDk5MTIy
MzQ0NmEwOTUyOTg1NzkzOGE4OTQ0MTgxODg0NzE0YTM3NTkyNDE2MzA5NjUyNTk2MDYwYTE1OTUw
MTY3MjUzNDE0MzcwMjg3NTkzNzI5Mzg2NTUwMzgwNzMwYWEyMTA1OWEwNDEzMWEyNzQ5MzZhODQz
MzQ4OTE5MzI5NjEyMTMzMjcxOTk4Mzc4YTU3NTI5Nzk0MjU5YTU2NDRhNTE5MTU4MTJhYTEwMjMy
MDcyMTQyMjUxMTUzMzQzNjA2NDAyNmEyNjhhNDY3NzQwMTMxMDg3MDYyMDM4NjkyNWE2MjI0NTQw
YTc4YTgwMzI5NDUwNjUwMTc0NzA3ODUwODQ3OTMyMDc3NjNhM2EwMmE5NDQ5MTI3NDQzNjU5ODUx
YTk4Mjk3OTIwMzAwMzUzNDAyMDgxMzQ0MDI5Mzk5YTkxMjE4NTI1MTExMDU3MTZhOTMyNTAxMzIy
MjA3NDU1MWE0NjY5NzM5OTkuCi1GQUlMICgxMjM0LjU2NykudG9TdHJpbmcoMTIpIHNob3VsZCBi
ZSA4NmEuNjk3OTM4YjE3NzAxLiBXYXMgODZhLjY5NzkzOGIxNzcwMTI3MjkwYjk5LgotRkFJTCAo
MTIzNC41NjcpLnRvU3RyaW5nKDEzKSBzaG91bGQgYmUgNzNjLjc0YTkxMTkxYTY1LiBXYXMgNzNj
Ljc0YTkxMTkxYTY0Y2I4Njg1MGJjMDhhNjk0MzQwYzc2NTk3OTYzNGEwMTA3MDY5OTFjMDg4YTYx
MDE4YjI5YTE2YTc0MDkzNzk1NjQwNzkzODQ2YTc1MjA1ODc4MTZiYTU2NDA1YjdhODcyODY5YjM5
NWMzMzZjYTUxOTQ3NGJhYTE3NTM5MTY5MTczYTg4MGI0OWMxNzgwNzRiYTU1MWE1NzgxYTExNTE1
Mjc5MzMyNDI5MWI5MjYwYjYwMzMzNTczOTU1NzM3ODQ1YjAzYTIzMjFhNjUyNzdhNzgwOTIzYjI2
Mjg5ODU5Nzk3M2JjNGI2Njk3MDU2ODBhMGIxYjg4YjM2NmI2Mzg2Yzk2MjA4OTc5YzE0YTk2MzJj
NTE2MzI2ODgzNTIyODQwMTY1YjM4YzhiNDE1YjdhMzM5YWJjNmNhNzA1MWIwYWM3MDI3NzI0NGEw
NTQ3N2I4YTBhMDljYWIwNzJhMjdiOTIwMzg5NDc3YjY1NjE2ODMxMTE2NTE0NDE5YzQ0NTEyOTY3
YTkyYjM5Y2E3M2FjMDFjNDYxYjY3MzVjYTMxYmNjMTdhYmE3YTc2NDEyYTdhNTk5YThjMjE3YzZh
NzRhNjdhYTZjNDY2NDQzMjA2NTczMmNhYTdjMjRhMTg1NjE3MDc0ODY0N2MyYjA0OWMxOWM1NzIz
MjNjMDMzMDFjMjgzYjY5Y2I0NmIwOWEwNDViNDQ0YTRjN2M4MjkwMTY1NjU4MzI2NzY5NzM4OWIz
MThhNzNiMTcxYTE4NDA2MzI0YTc4YjVjNDc4YTljNjdjOTljODc3YjEwNzQ0OGNhYzY1MTk0NTU3
MGE4MzIyMGJhYTRhMzA0ODE1NzE4OTg0NWNiNjZiNzM2MWMxMjljYzMwMTZjNTJjNGI4NThjYjA4
NzRjYTEyMmI4YjdiYTkzMzNhYTk0NjM5MWEyNGI4Yzg2OTU4OTY4NzczYmMxODI3ODAyMmIxYmE3
NmIyNDcyN2MyY2NhNTU0NDI2OTc1NDkzOTJhMTUyOTI3MTM5MjA4YzEyNzQ1YmMyNmE1YzE3NDMy
MzMyOTkwYTMyNjc5MTViMDYzMzEzNzRhN2E4NGI5NDY5YzAyMDgzNTgyOTAzMzdjOTljYjMyM2E5
MDc2YTI4NGM1YjMxOGJjODI2OTg5YzhiODY2M2JjMjQ5YTljNjg3Mzk1NTA0OTU4ODI1YzFhNTQx
YjA4NzEwYmI2NDcyODhjYTRjMTE3OWNjMmFjODQ3NjExMjNhN2IyNzU5MTBjYjdhNDNjMThjMjkz
YjFjNzU0YjAxY2I5YTIxMTc2NzM1NmE2MjY4ODc5ODBiMzg0ODIyYzE0YTU3NDk0MzMxOTQ2YTUu
Ci1GQUlMICgxMjM0LjU2NykudG9TdHJpbmcoMTQpIHNob3VsZCBiZSA2NDIuN2QxYmMyY2FhNzU3
LiBXYXMgNjQyLjdkMWJjMmNhYTc1NzM1Y2NiNDU4YTBkMGI2YmI2MTMxYjkxMTQ1MzcuCi1GQUlM
ICgxMjM0LjU2NykudG9TdHJpbmcoMTUpIHNob3VsZCBiZSA1NzQuODc4OTU5NTk1OTYuIFdhcyA1
NzQuODc4OTU5NTk1OTVhNGJiYWM4MGJjMWU5MGVlYjViYzhjMThiM2RjNzdhNTk2MjExNmIxNTlk
NjZiYmI3YmQ5NWE0Yzc5ODRjNjMzMjI0MzQ2MTVlODAyMzViOGE0ODI2NjlhODVlOTcyMThjNDE1
MThlMDBlYjg5OGFiYTQ2MzU5M2QzYjRkMDBlN2RjMWQwMzQzY2QyNzE2MTA5NmRkODEwNTkzNjY5
ZDE1NjE5ODJiY2MzNWNkYTJlNTRjMjhkZTc3NTljMTU4NmFkYzg2NzIwOWIwMzQyOTMwMzllMDNi
ZGNlMjljYjZhOGJlN2Q2NWUwOTg0NDA5NDk4OWEyZDUzNjYzZDEyMjMzMGJjOTQwNDhkMWJkNjc3
MjJhODZkYjA2OGEwNjc5MDI1ZDc4ZGI5MzEyMjcyYzhiOTE2NzE1OTZkNzVkODBjNTMzMzFlYjAx
ODU3OWM4MzExNWMyZDAwNTgxZGI5MTBlOGU0Y2I0NGM0Yzk1OGM4ZDg2ZGQ1OWQ1NTQzOWI3Yzg0
OWRhMzIxMzBkZWQ1M2E2OTdhMjZhOGRjZWE2YjhkZGMyYWQwNDc2MjRiYmE5MjI5MDlkOGMyZDQ4
NDYwYmMzM2EyZTgxNmQ5ZWNkZTEzZDZkMjRlZTY1ODliMGFkOWQ2OTZjYzI4NzUzYjgwMjBhZDIx
ZTg2YWM0MzYzOTE0YWRjNGE4NzEzOWFiMTg4MzEzNDM5Y2QyZWE4NjIyYjRiZDU0MDMzZThhNGE2
ZTYxYTgwYzgyMjlkYzM3Mzk5ZDczOTc4ZDFkMzQ0M2IzMWM5ODdlMTU4OTA0MjE0Y2NlNzg1ZDg0
ZTIyZTJhNjA2MjNiMTQxMjkyZTY3NTc1YjFkMWEwNTBkYmNjZDAyYzQ3MzI2MzhkMjRiNGMyMjZl
OWRjYzFhMzg3Y2Q3ZDJhMWU3OTdlMDc1N2E5ZGUxMDg4NDY3MTlhYWIyOTk5YjU4NjY5YjIxYWIw
NmNlZTNhYzZlMjk5OTA3ODE1MDU5NTg1OTVhNGNlMGJlMDcxMGM1YjIxOTAzNjVhMmRiYmJjNWVl
YTQ5OTM2NjVlMWQyNTI2NmRlMzdjMTk2MDU0ODhhMmIxY2UwNTQzNjEwOTdlNjNjMDhlYmJiN2Rl
NzA5MjQ3NmRkYjBiNTJjODk0NzBhOTU3Yjk5OWIzNGIyYmNiNzMwMDUzZTg5ZWQ0ODc4OWQ5YTIw
NDA1YjM2MGQwODRiMzgwNTY1OTkwMGJkOGI4MzE4NTI5MjliYjU0MmU0NWUzODM2YzI2YzQyM2U4
NDIxNzI0NjE5YzJhOTcyNWU0MzdjOTZhODM0ODQ5NjE5ODVkZGMyZDRkOGEwNjBkYWUxMTdkNzEw
Yy4KK1BBU1MgKDEyMzQuNTY3KS50b1N0cmluZygxMSkgaXMgImEyMi42MjY3NGEwYTU4ODUiCitQ
QVNTICgxMjM0LjU2NykudG9TdHJpbmcoMTIpIGlzICI4NmEuNjk3OTM4YjE3NzAxIgorUEFTUyAo
MTIzNC41NjcpLnRvU3RyaW5nKDEzKSBpcyAiNzNjLjc0YTkxMTkxYTY1IgorUEFTUyAoMTIzNC41
NjcpLnRvU3RyaW5nKDE0KSBpcyAiNjQyLjdkMWJjMmNhYTc1NyIKK1BBU1MgKDEyMzQuNTY3KS50
b1N0cmluZygxNSkgaXMgIjU3NC44Nzg5NTk1OTU5NiIKIFBBU1MgKDEyMzQuNTY3KS50b1N0cmlu
ZygxNikgaXMgIjRkMi45MTI2ZTk3OGQ1IgotRkFJTCAoMTIzNC41NjcpLnRvU3RyaW5nKDE3KSBz
aG91bGQgYmUgNDRhLjlhZWI2ZmFhMGRhLiBXYXMgNDRhLjlhZWI2ZmFhMGRhMmM1ZTg4Nzg4ZDBm
NTJkMmViYzAyM2FlNTQ5NDkyNmRlNTUwNzJlZTQxMTRmYjM4Z2E1MjU4ZGQyNGExZ2E0MjUwYmIz
MjI0N2c1ODIxMTRnOTJnYzk5NDYyY2JiNWQ4NTg0YTIxZDA5ZWFhZGcwMGRjNDBlYzkzOGdnZGI5
ZTIwOTFnZjJhYzQ4MjQ0MmZiY2JjMjhjZGU4MmFhNmU3OWU2YTU3YWYzOGU1MWZnMTc2NTI2ZGFi
YzY1NDk5MDBjODk3NjE0MGJiNGY1Y2QwZDljNjQyYmRiYjdlNzEzNWQwZWEzNWZlYjU4MDVlN2Jh
OTc5NzVhMWYyZmE0NWY2MmU3NzQzMDdnNzYwZWMyMzBlNDMwNjRlZGc1MTdnZjdjOWM5M2QyNGM0
M2JnMjQwOTQ0MDZiMGI0NzkyY2c1NGEzOGYyYjMwNjVhZ2czOTBlZmUzM2U3NjU1ZjAyODhkMzBl
YzZiNmNiOTk0OTYxNjI1ZDE4ZzYzNmJmMWczNDQzYzJhOWc1ZGMyMjJjNTQ2YzQxN2E1MGIzZTc0
ZGY5NGQyMTdiZ2VlZThmYWQxY2Y1YzI1MTdnOWU3YmFiZWNkMzhiNzA5MmZkOWNnNTE5ZzAyOWdm
NzAxYTgyOWU5OGczNzQwMmJjNDk2ZGMzZzBmMTQ3MzU2NGIzM2FlZWRlNWNjNzBnZTU4Nzc4ZGRh
ZDczMGZlZWY0MDk0NDlhY2dkMmEyYmNjMTkxN2I3OTdjOTRlYzU3ZWI0Zzg4MDVlOTcwOGM1ZzU3
YTc4NjI2MDI5YjVjMjQ3YWUxMmdmOGU3YzU0YmQ4MDI0Y2ZnYzYzYTFmNzIzZDI5NWNkZjNnZGY4
M2dnMTc3MzZhODQ2MTRnMWY2OGRkZDFlNDQ5NGYyN2Q2MWJhNTkwMWYyMzg0ZDZkZWRjNzg3NWIx
YmFiYjhnMDk1NzBmYTNmZDMyZjE5N2Q1OWZnNDk5NzI5MjYxZzhmZ2JnNzUzZWFkNGRhZmNmZjFm
YThlZjcxOWE2OTRkYjkyYTgwZjUzNWM2MTI4ZWc1NjU5YTY4ZWZkZ2dkOWIzMmVjNjk3MGU3Y2I0
MWZiZzk5YWYwMmQzOGMxZWdiODI4NDA3ZWVnY2M0Y2Y5ODVjNzdnZ2RmNWdjNWI1NGE4ZzdiZGQ0
YWcyMzE4Z2RmMzUxMmVhN2E0MWQxYmUyYzY2NWdiYzU2MTkzNDJiOTIwMGYwZ2RhOWNkMmM5NTdh
ZjZkMjlnZWdlZTcyMjhiN2RiYWU3ZjY3ODhjNGVnNDU1NmE5Y2EyZTEzZTc1NTg4ZzM2OWJhMTI3
MmExYjQuCi1GQUlMICgxMjM0LjU2NykudG9TdHJpbmcoMTgpIHNob3VsZCBiZSAzZWEuYTNjZDcx
MDJhYy4gV2FzIDNlYS5hM2NkNzEwMmFiZjAzZGQzZmNmMDUzNTYzOGQ5ZDMxM2VoYTc1YjQ5Lgot
RkFJTCAoMTIzNC41NjcpLnRvU3RyaW5nKDE5KSBzaG91bGQgYmUgMzdpLmFlZDEwMmEwNGQuIFdh
cyAzN2kuYWVkMTAyYTA0ZDQwNzgyZWJoMWUyZ2M3aTU1OGMzMGZiZTIzMGRoYTU3MDE5ZTNhMzBl
NDM0MjIwZjcxNDJhYjMzZjZlNGgzZWM5aGE1N2I0NzRhNTJhOWRkaGViMTUxNTk0ZTc2NjE0MThp
ZjFnZ2MyNGgyNmU2NTc0NzY5ZzE0OGMyNzhlZmM2M2RlZDEzNjE1YmY2YjFpZ2RkaWcxaTZkMGZm
ZTY0YTlmYWFkNWI0Z2YyNDBjZDA3NGI1aGMzaWRhZmVjMWJlNzdnNGNiMDc1NWc4YTBkNjUyY2Vn
OWU3NDliZGFoNTZhMmg1ZDNiOTRjNzRmZjBiNzhhaWRnYWI2OTNpZjEwYWI4aDA0NjQyNTEzN2Fl
NTI1MGYwNGMwN2RjMjJpZmJkYTNmZ2RlaDlhNmUxZDIzZDVlYmdhMjkzZ2U1ODE0NDFlZWIwN2I4
ODQxOTc0MjRiMGMzZ2ZlY2g3ODIwZmJnZzk1ZWFoZGMzYWNlYWhjaTY1aTgyM2QzaDE0NmRkODBp
ZWZmMjNiaTg0YmVjMjE5ZWE5aGU0N2lnM2czMDljaTFoN2YwaTBpMjliYWI0YjFmaGQxOWY5ZWRm
NGlmMWYyOGE1YjBiYWM4N2NpaGUyOGFiYmgxZjRhYmVnYmEyMmdlaDFjNmg1MmMwN2UwY2k1Z2k4
MTllNDFkM2QwZmRlZTUwaDI3YzhoaWQwM2E5NWdjZjRoYWMxNjE4OGFlNWlpNzE5ZGk4NWFkM2E4
ZmQwNTlhYTYzYjFnZTlmYzU0MWhmNjllZTY2Z2YwMTc1YjQxY2ExZGhhaGFhMzloYzdpZDdjOTFk
YzhkMDllN2gwaWQwMjUyNTMyZGc0OTNnNWY4MGEyMDljMzFmNDFjOTJpZmgwMmkyM2lnZWQwNmk2
Y2Y5Nzc3ZzNhMTBoaWYzaTMyMTdkMzJiMDBmaWk3YWc0YzhlZTlpYWRmMzIwMWkzNjZiNGcyM2dj
NTA1ZzYzYzg0NmI1MTAyZDVnZzg2ZGhoMmQ4ZWFmMzAxYWMxM2NnMGY0NWQxNzFmZjQ3OWcxOTk1
ZjFoYzdjN2lpMWkwYjk4MWUyZTA0MmIzNzFhNjhoYjY0YzVmaDkyaGYzMGZkNzJlMDczYmY0Mzlh
ZTEwZGc0ZzczOWgxNzBkZGYzOTRjYmVhOTBoaDU0OTBmaWE4M2QzNmJpZ2Y3MmE1ZWNmOGNmMTI2
ZDU0aDdnaGRlZzVmaWMwaTIxZGI3N2hmODhoYWVmZGIxMmgzMjIyZmM1YzdkMzA3NzA3aDVjZWcz
aTAxYTE3YmU1YzMxYTVnYjlkaGFkNmNhNmljYTdjNGJhNDQ5MTUwNGI3aDIxYzJkODNiMmRiM2Zp
NjdjaC4KK1BBU1MgKDEyMzQuNTY3KS50b1N0cmluZygxNykgaXMgIjQ0YS45YWViNmZhYTBkYSIK
K1BBU1MgKDEyMzQuNTY3KS50b1N0cmluZygxOCkgaXMgIjNlYS5hM2NkNzEwMmFjIgorUEFTUyAo
MTIzNC41NjcpLnRvU3RyaW5nKDE5KSBpcyAiMzdpLmFlZDEwMmEwNGQiCiBQQVNTICgxMjM0LjU2
NykudG9TdHJpbmcoMjApIGlzICIzMWUuYjZnIgotRkFJTCAoMTIzNC41NjcpLnRvU3RyaW5nKDIx
KSBzaG91bGQgYmUgMmdnLmJqMGtmNWNmZTkuIFdhcyAyZ2cuYmowa2Y1Y2ZlOTFoazZmZzM4M2Ix
OTM4ZmY4ZDAwaDRrOTI5NTk1OWpjYmo5YzkyODJlODQwYjE2OWtqaTFlZzMyODkzYWZlMDYzZjBi
YmZrZWYyY2JhZWdjYTAzNWJmMTBiMmFqM2U2ZjZmZzBrZzM1azhqODJqODJlMDhlNmJpMGMyaWU4
aGhjZ2M1N2loNmFlZ2I5Ymg3ZzgwODYxOWsyNjRoNmhjMjlrODEyYTcwZ2syMTBnMzE1ZDliZmg3
aWY2aDZjazk1MTFiMmtmYjFmZzRlZDY2Z2RpZ2I2NDE3MzhkNWE2NWdjNzQ4ZTFiNjg4Y2lna2Np
ZjUxY2IyNjFoZDRqaGo1aDQ2MDJlMmFkZGJpZTBkM2Q1ZGMyNmJoa2VjZWE5NjFoNGlhODM4ZTJi
YzkyYWczNGEzNzBjNmVqYWYyN2RqaWViZ2hjaDI5ZmVla2oxN2dmNjJnNzRkMGg1NzVnOTRhZWtk
N2tkZmNiYjU1ZWpiYjJlOTZiaGo3YjkxNDUwamFhYjI0amlpM2FlaGFlZDYxNDFlajNmY2NqOGhm
amszNGtoNWlkZ2hmYjhkMWtoMzlhZGFmMmNlNWVoNzU2ZWowODhnZzlhYjk5ZmIzMzIxNThkY2Q1
OWI4YWgxMDhlaTM0MzFqNmkxMWswOTJjaWlia2gyaWg5ZGdoOWIwOTIyMTE5Yzk4Njg0YjM4ODQ2
NjMwZGllamc2MGsxZDkzY2c2aWZrNTdlNTRha2loYmk4OWtoOWgwODRja2NnNWE3aWllZzZjMDFl
OTBkMDlkYmFpazliMTVrOWtmajBpZ2gwMGRpOGJjZWk0aWZlazM4aGVlYTAxNGYwZWkyYWZhOGli
MDhpaTllZzJlMGs3MWQ0MzkwNmYxM2JhYzA4ZzllNmYyMmI3NmtpaGNhMWExM2ZmMGVjaTQyMTdo
Nzg0YWhnZDU3ODlqMzA4YmRnZmpnZWtoa2poZjZmZTQzZGtpaDQwaGIyMTYzaTYxM2RkNGcxamZj
YjFpYmM0aTQ2OWVrYmMzOGtoOTlpOTNrMTRhZzdpa2VqZmE1MjhjMzhqOTBmaGFiOGtlYWk4Y2Nj
aWtnNWY2OTc0OTkzNGQyODU2aTU5MDhqaDJoaDk5ZjVqaWc4aGgyZWg0Y2E4Z2gxOWs3aDJnMGE2
M2hiYzk2ZDBrZzI3a2UwNzU5ZGM4MTA3ZTYzamQwZGRrYjhmZTBrazBhMDRjaWFkYWliNTFrZjEw
MWkzNjRpMGljMWdlZGgxNDVpMmdoaTRpZTRqMWFnYzNmZ2I1aGNramo0ZWE1ZWtlMDRoajU5aWU5
ZTRoYzRiY2UxNmdoZjM3ZzRiN2ZoM2poNDNiZmM1MmE4MS4KLUZBSUwgKDEyMzQuNTY3KS50b1N0
cmluZygyMikgc2hvdWxkIGJlIDJjMi5jYTk5MzdjYWsuIFdhcyAyYzIuY2E5OTM3Y2FrMWQ1MDIz
OTlmMmhrYThhM2M4N2gwa2M3NmZhNmo1Yi4KLUZBSUwgKDEyMzQuNTY3KS50b1N0cmluZygyMykg
c2hvdWxkIGJlIDI3Zi5kMGxmamIxYTdjLiBXYXMgMjdmLmQwbGZqYjFhN2M2Y2FiZmo3Z2VlMzNq
ZGphOWZnOWNtamczNzhmaGVhMTljZmFiZzg5NmZpMGFiMWdsODM5ZmlsNWNnOGRqMWhiZ2phZ2Iw
aWxtODhlbTJsOWUzamc4aG1tMTllYm1tamo2ZmsxbDE5Zmc3MDExYzFqNmppM2M2YmwxbGhrM2to
YmwxMDVjMmQzY2UxajJiMzgxOGFtbDcybGNoNjU4ZWxjNGQxaDlkOTRjajg2MWVnNzVqMGs1OWZk
bDU5Nmk5NzhiZTgyMWxna2ltbDVkYTcyYmQzajBoNTYzaDZraGY3MG02NGQ5aDJlYWM0Nmw0YTJn
MzM1aTAxMGhkbDBoNWgxYjYxYWdkaG1kN2tkbW1jaDA1aWxqYWRoaDEwaTg2bGFoMWFqZjRmajdp
Mm04aDE4ampmMmFtZDJlNjZhODZlaTNqMGg3N2I3a2Y2ajY1N2FtMWY2aW1qYWFhMjhmMDIxbTlh
MTNpY2thNTM2YzBmYTY1YWFsYmJsaWVpMjZjbGwzOGFjMWNtMzQzaDBlYzhoMGs0bWgxa2JobGE2
YTk4ODlsbGo2ZGIwN2ViOWdtZmloZ2dkMWthaW03MGdiNmwwODJqY2FsZGczNTNhZTlpMzVnNzdm
ZW03Ymc3N2s3ZW00YzQxZmhiZWptaGhnZ2o0YmxsaTNmNzUxMGw1NWwxajBjMGg4NjJjaTloZTJk
bGFraTJqMGllYWgzNmQ4aTNnZjNkaTdoMDk1YWprYmQzYW1nbGdnYzVpNmlmaDQwNzZnNDM2amNj
OWJjMzM1bWJnZWMyM2JqZ2ZraTU0Zm05ZmMxMDVjMmcxbDltYzhtbWdtMWozZThpOTZoamQzOGlj
NWtlYjhtNTNrYjJrY2VjMThjMDQzNjlsZzk3ZGs2NjBpZGJpamZjZmg5ZWYwZzA1YzQxMTE2aTFs
NjY0OTAwampmNWpna2lrbDlra2hqNmo4Y2xtNWg1ODRsMjg3NWo0ajhjMzU4azhqM2Y4OGM0YTI5
N2NiYzgxOGoyNmEwaWhtZjIxbGw2a2tmbTkxMWFlNGU3aGIybDVoYTg1ZmZkaTYzaG1rOTdjZGQ0
bWZjaW05N2dtaGNsaDQzaWcyajVtYTVjMTlobGU4aTJoaGxtMmdqam1pYWUzMDc1NG1iN2QwbDc4
ODFpZ2hoaDBjMGJmYWdla20wN2gzNDRiZGxpNzdtNWpqOTdnNjlhZWc4MTYzZWQ2YW1nZm0wMzli
ajJiOWliOWFsZGZhMTAzaTgzY2ViaDBiZ2RqOG03bDgyM2syZDZoNGw4bWlhOWhrNjczbWFpYTIy
bWlrNGszbDA3aDAybWI5ZzU2bGsyNmczbWljajA1M2cuCi1GQUlMICgxMjM0LjU2NykudG9TdHJp
bmcoMjQpIHNob3VsZCBiZSAyM2EuZGVlNG5qOTlqLiBXYXMgMjNhLmRlZTRuajk5ajBmZzdjLgot
RkFJTCAoMTIzNC41NjcpLnRvU3RyaW5nKDI1KSBzaG91bGQgYmUgMW85LmU0OTk5OTk5OS4gV2Fz
IDFvOS5lNDk5OTk5OTlhMWkxOW1ua2c0MWVpMm8yZ2VhMDZmbjdnOGU1M2FnM2NkZGprN2xva2Rm
ODFtbjZrZTVqamtvMW9kbGJjNTQ0ZDhib2ljaTdqM29tOWlmajNiYTdkbTU4NG9sMGJnZmM4Nzdu
MmcuCi1GQUlMICgxMjM0LjU2NykudG9TdHJpbmcoMjYpIHNob3VsZCBiZSAxbGMuZWo3ZmE0cGtm
LiBXYXMgMWxjLmVqN2ZhNHBrZmI1aTM5NjFvOGs4MzJobTU5NGg4cDU1OGdiazgzNmQuCi1GQUlM
ICgxMjM0LjU2NykudG9TdHJpbmcoMjcpIHNob3VsZCBiZSAxaWouZjg5NzE3NzJrLiBXYXMgMWlq
LmY4OTcxNzcyamljcWlnYmdlbG4zMTc2NjEyaGpjMmxtZGgwNTViNmtxanE5azdhcWVtaTMxYzk5
OXFramsxODJua202aWlvcW9wajJmZ2pxMmVkOTA3ZjY4aTRqbW9tY2xxZTA3bWZvYm1iYzhlMTFo
MjM4MmhkMHBtZjBwcWNxOWs4MGQ1Mmc3YThnOWgxZWc0MDNlM2k2amJpcThsYThnOTUxMmxpcDJo
OW5wYmU2ZGNmbTMwZWRlNW41bTZmaGs4YTluYm82ZzVpMms2MDkwOGhkbzgzOG43MjBmZm5hNjFn
MjBnNzVma2xsZDVrMzIyaGxqanFwbmRlZWVjZ25rOWE4b2Y4ZjFoNGVkZGNrcW0ycW1vMjJjNnAy
MXBpOWNtZGhmYjhvOTc4NTkzODVkaG5hZDNjaTlra2FmZjNmMGc3NTkyNWQzbTc2YTJlam9kZGZj
aThqN2ppcTE4NWdnaW4xYjk3cWhocHFhYmVxM2JoaWxoaHFwbHE3aWoybDRoaWRkbzc3aG9jbzQ0
ZmRtODlrNzI2cDY1aDNkbW02YTBrOGE5cDZncGJvMWJmbGQ3YW1xcGI4NTNwbW9hMG1rb3EwYzky
ZGtxOWZoYjNtZTdoZTM0bzE2YmtoNmVucG9lZDViYWE3NWVwZjdjNjA5aGFxN2tpMTRxa21kN281
OWkya20zMzBxMmRqaTExbmRla2E4aW1vOTlwNGw0azVuN2U2aDUzYzRiNmRkbjBuaWZvNGwxY2po
N2wzMGQ0ZGFxbDBvOWgxMTdnNDFsYjVwOGQ4ZjA5b2k0bDFjNmszOGhkajdkMTAyb2gxazA4Zmhr
MGZjbnFvbWloaTg2bGY5bTk4aGZtMDRlOTBpcGNvam8ybG80ODFiNms1OTI1Y21hNmdqbjhwY25x
ZGM5MzZoOG43N2RlNmhmOWhjNDZiZ3BtYWhqaWpsbGNvYzdsYmRpNm1sbTJtbjUyNDdrYmthZWpq
ZW1nMmVoaW9pNzVwNjRiOXE3Y2FlMDQ2bTFiN2VxcDc0MzQ4a3FtajY0M2hmNDBvNDhuYTlsbTJw
M2szY2YzZWFsbDJhcWs3cDczaDVoZ3E2azgyY2xnbjExa2RjYjE1MGNxNTYwN2pwYWRvb25wcDVp
NzhhM2xtaG5iYnE0bDgzMjVhMDNoZDdtMzdmbDk0aWdpNDNjZ3AwZzRoZ2Q1aGtwazFnaWpoZWE1
MDhlcWJnZGdtYmJpa2g5azY3ZDYwaG5lNTJsYzY4YzRqZjQ5MWtqOGJpNjkxcDkxZDZhNGJnMXBw
a24zY3EwaDM0b2M5YjJtajMzb29sbHFqNXAzYzQ3bGc4M2wzMmowa2VwOGpuMTFtbzE2MDY2N3Au
Ci1GQUlMICgxMjM0LjU2NykudG9TdHJpbmcoMjgpIHNob3VsZCBiZSAxZzIuZm9lbHFpYThlLiBX
YXMgMWcyLmZvZWxxaWE4ZWJmbGRlMmM5ODhsLgotRkFJTCAoMTIzNC41NjcpLnRvU3RyaW5nKDI5
KSBzaG91bGQgYmUgMWRnLmdjb2c5ZTA1cS4gV2FzIDFkZy5nY29nOWUwNXBvMG5oMW5qMDNjYmdv
MXM0aWQ1a2YyZnFmOG5xN3Jjb2tyNXI2M25vNmI5aGoxZ25oamJjYzRtNmtmYzdmZGUxN2NoZHA1
cWJmcWM1MGYyc3FqbXFvbzc0c205azVsc2tncHI5cjhmZDVjbjkzNDNrcjgxMTVvaWZyazJnN2hu
bnJtMXExZXM5M2IzbGxyaWhzOTNzaTFzM2JjamVxcmNwYmdpMGthaGhwM2Q0Z3Bja3FtYWk3MDE5
c2ljbm05OWk5c3NiYzc4MzUxNGQ0N2Y2cW00bTg5cDVyZDBocGVhcjhwM2xyMGxjaWdvMjNiZmEw
aDFjN2UwcmpoNjYwcjhlZjVoNjhmMHFiNzY3YzIycm5sZjMyMjNxY2FxOW9iMGlpNjlmMjFxOGtq
MjliMjlmM3JzMzZmNTZya3NkcTk0MzhjaTllMTZobGczcnFtM21qN2dtcmZzbDU2NjJzZzdvcGkx
ZWdiYXAyb3JlamZqZ2hyNm9ha2hnbzM0czNtZG4zcDhiOTRpcGZqbzY0Y21oYmljZ2lxazUzYjRi
b3NqaG1pMzJwMGsxaWFtZnFpOTY3YTU2NHNycGFtMWg5NDFmNms2bWhucDRiZjlka3JpNXFkcTRq
NWZta2w4b2JoZDI2OTdxYzJrMXMxZWtqY3FnN29hOGFrY2ZraGxvcmttcWQ0aGdraDZpNzRsMWFw
ajgwa2Y2NjZwMzBmaDFxOWRnOGE4bGpvZWFnY2poMzkxMzlvZmdyZWxmMWY2b2M4bTZhZzBnY2lw
ODlvNzFzZzhiZWZnYThuMGtpZTdvMjI3ZjdxcWkzaWVqa2xjMzFuNG1naGwyNGQ0N2o4OTVzNTZh
NjZnNzNta3A2czVlZzE5MTFlMDRqZGM1bGtycnJtMGdpbW5tNXJjMGVvZGVya2pvZjU0NWRyY2xw
aGo1bDNmb3JnbW5pYmRwbzRzNDYzcmc5YWc0bmtlNTJtaWIwN2hkMjZqaGJhNWlwOTRicDJxMDVi
Nm5qbHJlMzNtaWtiOHI2MWw1OGVpaTk2Mmk2YW82cThpb3NvazdzaWgyMWRmMWMzM200ZzMzZmJi
a2U3MDlzcGo4bTBmZG5jMHJtbDZjOTRwcnJsZTQ2MTRiczEwNjlrY2s2Mmc0OGtlMzg2cmJrbm4y
c2FrNzBzbGo0ajQ5bzM5Y3M2aDdlcmkzbGI0bjhkN2RzYTI3OW1vbXMzcWcyOG4yNmRoZGRuOWo4
Y2trNjk3ajlrbjJsazhvbzM5cDA5OWVvNzFwbzRobDYyNTVvZjdtNjU3Zm9sc3BwY2M1ZzM5YWZx
YnFmNWRzMHE5N2EzMmtraWYwb21uNjJoZjU4ZzA2MzhiLgorUEFTUyAoMTIzNC41NjcpLnRvU3Ry
aW5nKDIxKSBpcyAiMmdnLmJqMGtmNWNmZTkiCitQQVNTICgxMjM0LjU2NykudG9TdHJpbmcoMjIp
IGlzICIyYzIuY2E5OTM3Y2FrIgorUEFTUyAoMTIzNC41NjcpLnRvU3RyaW5nKDIzKSBpcyAiMjdm
LmQwbGZqYjFhN2MiCitQQVNTICgxMjM0LjU2NykudG9TdHJpbmcoMjQpIGlzICIyM2EuZGVlNG5q
OTlqIgorUEFTUyAoMTIzNC41NjcpLnRvU3RyaW5nKDI1KSBpcyAiMW85LmU0OTk5OTk5OSIKK1BB
U1MgKDEyMzQuNTY3KS50b1N0cmluZygyNikgaXMgIjFsYy5lajdmYTRwa2YiCitQQVNTICgxMjM0
LjU2NykudG9TdHJpbmcoMjcpIGlzICIxaWouZjg5NzE3NzJrIgorUEFTUyAoMTIzNC41NjcpLnRv
U3RyaW5nKDI4KSBpcyAiMWcyLmZvZWxxaWE4ZSIKK1BBU1MgKDEyMzQuNTY3KS50b1N0cmluZygy
OSkgaXMgIjFkZy5nY29nOWUwNXEiCiBQQVNTICgxMjM0LjU2NykudG9TdHJpbmcoMzApIGlzICIx
YjQuaDA5IgotRkFJTCAoMTIzNC41NjcpLnRvU3RyaW5nKDMxKSBzaG91bGQgYmUgMThwLmhocmZj
ajN0LiBXYXMgMThwLmhocmZjajN0MWs0MWYzdXI0NzVubTBiZzFoOGd1NGcxM2NlMm5lMHJtMmly
M3JwcWFlZTVtZjV0Z3RoMm84bGd1ZjhlM2I4OGJocHQycjUxZzc4dWx1dTNhMWZxZnRpdG40Nmhr
MGFjcTRzdHBlbWhuYTFrYWxscGxibzIzMmZxdGo0Y2gxbWtzcjBrbjM4ZzJnM2s5bmJ0dGV0dGVo
anI1NnN0MDR0Y2RuNm85NWd1aGlxZTlhMGJjcmxtaGE3aHQ3ZTQ1dWV0NXBrMHMzOTI4YmpndWho
cmM0aWo5OGhocHRodTk1cGp1NGQ0MDk3cjdpcGMxazJiNW84cWo5cWVjazVkZmRlcWlta3AxNTVm
aDJvZTVtZmszYWJrZWJhcTZqM2V1YnNzcmpmb2QzcDE3aXM3MXRxaWVhZjduYTk5cDQ4MnNsbDZq
cjFvaWhyaWJ0aDViZzQxaGE3cWQzdGVuZmY3ZzE3MWtmZGd1dDU4MHMybm9oOXFscThsY2tnc2l1
a3J0MjFvbmdubzFqYzQ3N3JmMDdjcjZkNXVqcWE3c3JsMWJka29uMTU2NjE5YTFvOW9sbWN0Ymlp
dTFpaDI4ZmJqdXBoY2QwbmdxaWpzaDhuNWg1OXNmczRxaHBkdTYyamt1cjZ0aWdrZ2VtNTBvZ2gz
N24zanNyZHI0ZDhoN3RhM2g4NHAyaXVyZW9pbXBhMzFlaW90dDIzN2xhOGQwYjlzcWpxOWw4cmE5
N200bGRuZXJzYm1wdW42NGRsNTBqZjMya29wNmlkaWJmN2Jla3JyNnBwb3Q1dXRka25icTBsaWQw
ZmtlaG9jM3NzZjZvcm0zZzUwaDZlbWZzbWwwcHBjMWFlNjg4MWR1dWZpdWozZTg0YjZ1aG9uOTNx
azRhbWU0OTRvY2xhZmQxbXBwcnNpYXFkOGdwaTdtNWJybXE4bnJoMm5scm83cGhiN3BkbGkxcGIw
Z2ZlZGx1aDBiamI5ZW5uZXRzZmRqczN1LgorUEFTUyAoMTIzNC41NjcpLnRvU3RyaW5nKDMxKSBp
cyAiMThwLmhocmZjajN0IgogUEFTUyAoMTIzNC41NjcpLnRvU3RyaW5nKDMyKSBpcyAiMTZpLmk0
amVpdTZsIgotRkFJTCAoMTIzNC41NjcpLnRvU3RyaW5nKDMzKSBzaG91bGQgYmUgMTRkLmluZjk2
cmR2bS4gV2FzIDE0ZC5pbmY5NnJkdmxtbndjaTkwODh2Ym5kcTR1ZjRmdXRwaXJmM3R0NmJkbm1p
a2Y1dnB0b3cybGZkbzlnbTZoYnI5YnZyYjdzbGQ2Y2ViMG5tMGU2YWY2Yi4KLUZBSUwgKDEyMzQu
NTY3KS50b1N0cmluZygzNCkgc2hvdWxkIGJlIDEyYS5qOWZjaGR0bS4gV2FzIDEyYS5qOWZjaGR0
bTFpMGU4ZWRiZjB2b2duMGl0OHZzeDNyOHM5czVhbDhoLgotRkFJTCAoMTIzNC41NjcpLnRvU3Ry
aW5nKDM1KSBzaG91bGQgYmUgMTA5Lmp0azRkNGQ0ZS4gV2FzIDEwOS5qdGs0ZDRkNGRvZmxmZTd4
aTE2OXdkNm95anEwMXZxY2wyZjE1MGJpczFjbGlkZ280dmczbnlianRlbzFsbWp3eHZhaGZ5NmRx
bnd5ZGdheW1wYmN2MGdwZ2thMmJ3ZWpnbjB1MGd1dGo1OG9nNW00YWIydWRsdnhmb2ZxeWpvcjR0
cXFyZzFpazZuYzFlbHluam0wcDQzajQzNjkxeTZjZnhpcnJteW5vbWZvMHh0ODA4eWZ0OXBldmsz
bGppd2JvYXEwdXlyNmg5ODlwbjVhZXhza3dwcDhrYjBocndlNDV2b21pdjdwaGtsMW1zdWs4dHlh
N2FhZ2puZHI1ZmhraWE2aWxsd3RqcWp2OGtwZzlqMWNtOXloNjB4MHVkajYwY3d1NW5kMTJkNTlw
OHZnMHdzN3F2bW53bjQ3c2RieHI5N282MHN0OGJ1c3NsMjkzMnVnaGppaXRqbmE5cDZzNTViamRr
Z3hlb2J2azlldWMwNGd1NzlwbmE0b3FveGN2NDUyMmdnYmNnbzg1MnBuOWpheXJveTg2c2YycTEx
OWh5bWdyY3Q3Z2o3Z2lkYmk4OGlvdzY2ZGpjYnFnMWc1ajZmYzV1bWI1ZnNzZGU1dXEzcnZjOXgw
ZzgxZW81dXJzamIxcHR3dTE4bGpza3R0cWlpeGZtdGhpb25uajdsNXA3cWVtcXRuOWNkcjR4bmF4
MzYxbDYwdmlzdG04cG1qaWZnYmgwajlzZTZybmVreXlla24xYzgwbzk1aXZicG5tZXdhMWFjMXAy
c3VoNGRrdDBwN2ptc2h4NXFiOTJjb3Y2djEyd243ZHhkcjh0aXQwNTFuY3RyeTh5dDdqcHNmc2V4
NDY4M3l3YnRjeDljanVsNTJzY3YxdWQ3Yzk5NmN3YTFpZXNocGE0ZzZvY3l2d203ODZsaGhrd3Ni
dDBlcDBhMDg4eHV1b21nMmhxZ2EycGs3aWJzYjQ1N3VpNWNsZTQydDd5ajd1Z2ZwMnluaXZoYTBi
eHFzODY4YjV5cTU5aGczcmkzdjliMGFreGcweGdrM2Z4NG81cGNheWI5Z3Ywc20xdmhnZXQ3Mmc2
bHAyMGYxcTNpNnN1YmM5cWt2dnl0Y2xpMDM3aDN3NDd4OWozNDN3eGU1M3ZvZGIzZHlvOXE4YTRh
ajRkY3lzeDk1azVvc2UzNjI2N2JlMW1kbGk0dHF3N2hjajNvYWV3ZXBlMGxpdmg1OHAxdzF2amMz
dzMxbTVjNHYxa2U5NHFkYW1sNDVkdWx2OGdqN2s3NWJ3cGQ5N2g5ZW12eWNiZTdha3V2anQxdjVk
Mzdrc2hzcmVramZvZGY5NTdqbmFrNGFnbmtidjk5OTN5Y2I2OWltLgotRkFJTCAoMTIzNC41Njcp
LnRvU3RyaW5nKDM2KSBzaG91bGQgYmUgeWEua2V0eTlzaWZsLiBXYXMgeWEua2V0eTlzaWZrbHpz
YWtxaGJ5YjkuCitQQVNTICgxMjM0LjU2NykudG9TdHJpbmcoMzMpIGlzICIxNGQuaW5mOTZyZHZt
IgorUEFTUyAoMTIzNC41NjcpLnRvU3RyaW5nKDM0KSBpcyAiMTJhLmo5ZmNoZHRtIgorUEFTUyAo
MTIzNC41NjcpLnRvU3RyaW5nKDM1KSBpcyAiMTA5Lmp0azRkNGQ0ZSIKK1BBU1MgKDEyMzQuNTY3
KS50b1N0cmluZygzNikgaXMgInlhLmtldHk5c2lmbCIKIFBBU1MgKDEyMzQuNTY3KS50b1N0cmlu
ZygzNykgdGhyZXcgZXhjZXB0aW9uIFJhbmdlRXJyb3I6IHRvU3RyaW5nKCkgcmFkaXggYXJndW1l
bnQgbXVzdCBiZSBiZXR3ZWVuIDIgYW5kIDM2LgogUEFTUyAoMTIzNC41NjcpLnRvU3RyaW5nKC0x
KSB0aHJldyBleGNlcHRpb24gUmFuZ2VFcnJvcjogdG9TdHJpbmcoKSByYWRpeCBhcmd1bWVudCBt
dXN0IGJlIGJldHdlZW4gMiBhbmQgMzYuCiBQQVNTICgxMjM0LjU2NykudG9TdHJpbmcocG9zSW5m
KSB0aHJldyBleGNlcHRpb24gUmFuZ2VFcnJvcjogdG9TdHJpbmcoKSByYWRpeCBhcmd1bWVudCBt
dXN0IGJlIGJldHdlZW4gMiBhbmQgMzYuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99495</attachid>
            <date>2011-07-01 11:41:29 -0700</date>
            <delta_ts>2011-07-04 19:46:16 -0700</delta_ts>
            <desc>Fix Qt bot&apos;s style quibbles.</desc>
            <filename>16652.4.patch</filename>
            <type>text/plain</type>
            <size>50270</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTAyMDIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDYgQEAK
KzIwMTEtMDYtMzAgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY1MgorICAgICAgICBGaXJlZm94IGFu
ZCBKYXZhU2NyaXB0Q29yZSBkaWZmZXIgaW4gTnVtYmVyLnRvU3RyaW5nKGludGVnZXIpCisKKyAg
ICAgICAgT3VyIGFyYml0cmFyeSByYWRpeCAoMi4uMzYpIHRvU3RyaW5nIGNvbnZlcnNpb24gaXMg
aW5hY2N1cmF0ZS4KKyAgICAgICAgVGhpcyBpcyBwYXJ0bHkgYmVjYXVzZSBpdCB1c2VzIGRvdWJs
ZXMgdG8gcGVyZm9ybSBtYXRoIHRoYXQgcmVxdWlyZXMKKyAgICAgICAgaGlnaGVyIGFjY3VyYWN5
LCBhbmQgcGFydGx5IGJlY2FzdWUgaXQgZG9lcyBub3QgYXR0ZW1wdCB0byBjb3JyZWN0bHkKKyAg
ICAgICAgZGV0ZWN0IHdoZXJlIHRvIHRlcm1pbmF0ZSwgaW5zdGVhZCByZWx5aW5nIG9uIGEgc2lt
cGxlICdlcHNpbG9uJy4KKworICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6ZGVjb21wb3NlRG91YmxlKToKKyAgICAgICAgICAgIC0gaGVscGVyIGZ1
bmN0aW9uIHRvIGV4dHJhY3Qgc2lnbiwgZXhwb25lbnQsIG1hbnRpc3NhIGZyb20gSUVFRSBkb3Vi
bGVzLgorICAgICAgICAoSlNDOjpVaW50MTZXaXRoRnJhY3Rpb246OlVpbnQxNldpdGhGcmFjdGlv
bik6CisgICAgICAgICAgICAtIGhlbHBlciBjbGFzcywgdTE2aW50IHdpdGggaW5maW5pdGUgcHJl
Y2lzaW9uIGZyYWN0aW9uLCB1c2VkIHRvIGNvbnZlcnQKKyAgICAgICAgICAgICAgdGhlIGZyYWN0
aW9uYWwgcGFydCBvZiB0aGUgbnVtYmVyIHRvIGEgc3RyaW5nLgorICAgICAgICAoSlNDOjpVaW50
MTZXaXRoRnJhY3Rpb246Om9wZXJhdG9yKj0pOgorICAgICAgICAgICAgLSBNdWx0aXBseSBieSBh
IHVpbnQxNi4KKyAgICAgICAgKEpTQzo6VWludDE2V2l0aEZyYWN0aW9uOjpvcGVyYXRvcjwpOgor
ICAgICAgICAgICAgLSBDb21wYXJlIHR3byBVaW50MTZXaXRoRnJhY3Rpb25zLgorICAgICAgICAo
SlNDOjpVaW50MTZXaXRoRnJhY3Rpb246OmZsb29yQW5kU3VidHJhY3QpOgorICAgICAgICAgICAg
LSBFeHRyYWN0IHRoZSBpbnRlZ2VyIHBvcnRpb24gb2YgdGhlIG51bWJlciwgYW5kIHN1YnRyYWN0
IGl0IChjbGVhcnMgdGhlIGludGVnZXIgcG9ydGlvbikuCisgICAgICAgIChKU0M6OlVpbnQxNldp
dGhGcmFjdGlvbjo6Y29tcGFyZVBvaW50NSk6CisgICAgICAgICAgICAtIENvbXBhcmUgdG8gMC41
LgorICAgICAgICAoSlNDOjpVaW50MTZXaXRoRnJhY3Rpb246OnN1bUdyZWF0ZXJUaGFuT25lKToK
KyAgICAgICAgICAgIC0gUGFzc2VkIGEgc2Vjb25kIFVpbnQxNldpdGhGcmFjdGlvbiwgcmV0dXJu
cyB0cnVlIGlmIHRoZSByZXN1bHQgb2YgYWRkaW5nCisgICAgICAgICAgICAgIHRoZSB0d28gdmFs
dWVzIHdvdWxkIGJlIGdyZWF0ZXIgdGhhbiBvbmUuCisgICAgICAgIChKU0M6OlVpbnQxNldpdGhG
cmFjdGlvbjo6aXNOb3JtYWxpemVkKToKKyAgICAgICAgICAgIC0gVXNlZCBieSBBU1NFUlRzIHRv
IGNvbnNpc3RlbmN5IGNoZWNrIGludGVybmFsIHJlcHJlc2VudGF0aW9uLgorICAgICAgICAoSlND
OjpCaWdJbnRlZ2VyOjpCaWdJbnRlZ2VyKToKKyAgICAgICAgICAgIC0gaGVscGVyIGNsYXNzLCB1
bmJvdW5kZWQgaW50ZWdlciB2YWx1ZSwgdXNlZCB0byBjb252ZXJ0IHRoZSBpbnRlZ2VyIHBhcnQK
KyAgICAgICAgICAgICAgb2YgdGhlIG51bWJlciB0byBhIHN0cmluZy4KKyAgICAgICAgKEpTQzo6
QmlnSW50ZWdlcjo6ZGl2aWRlKToKKyAgICAgICAgICAgIC0gRGl2aWRlIHRoaXMgdmFsdWUgdGhy
b3VnaCBieSBhIHVpbnQzMi4KKyAgICAgICAgKEpTQzo6QmlnSW50ZWdlcjo6b3BlcmF0b3IhKToK
KyAgICAgICAgICAgIC0gdGVzdCBmb3IgemVyby4KKyAgICAgICAgKEpTQzo6dG9TdHJpbmdXaXRo
UmFkaXgpOgorICAgICAgICAgICAgLSBQZXJmb3JtcyBudW1iZXIgdG8gc3RyaW5nIGNvbnZlcnNp
b24sIHdpdGggdGhlIGdpdmVuIHJhZGl4ICgyLi4zNikuCisgICAgICAgIChKU0M6Om51bWJlclBy
b3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgICAgIC0gQ2hhbmdlZCB0byB1c2UgdG9TdHJpbmdX
aXRoUmFkaXguCisKIDIwMTEtMDYtMzAgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBCZXRoIERha2luLgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCShyZXZpc2lvbiA5MDIw
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTExMSw2ICsxMTEsNTQwIEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5F
IGJvb2wgZ2V0SW50ZWdlckFyZ3UKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorLy8gVGhlIGxhcmdl
c3QgZmluaXRlIGZsb2F0aW5nIHBvaW50IG51bWJlciBpcyAxLm1hbnRpc3NhICogMl4oMHg3ZmUt
MHgzZmYpLgorLy8gU2luY2UgMl5OIGluIGJpbmFyeSBpcyBhIG9uZSBiaXQgZm9sbG93ZWQgYnkg
TiB6ZXJvIGJpdHMuIDEgKiAyXjNmZiByZXF1aXJlcworLy8gYXQgbW9zdCAxMDI0IGNoYXJhY3Rl
cnMgdG8gdGhlIGxlZnQgb2YgYSBkZWNpbWFsIHBvaW50LCBpbiBiYXNlIDIgKDEwMjUgaWYKKy8v
IHdlIGluY2x1ZGUgYSBtaW51cyBzaWduKS4gRm9yIHRoZSBmcmFjdGlvbiwgYSB2YWx1ZSB3aXRo
IGFuIGV4cG9uZW50IG9mIDAKKy8vIGhhcyB1cCB0byA1MiBiaXRzIHRvIHRoZSByaWdodCBvZiB0
aGUgZGVjaW1hbCBwb2ludC4gRWFjaCBkZWNyZW1lbnQgb2YgdGhlCisvLyBleHBvbmVudCBkb3du
IHRvIGEgbWluaW11bSBvZiAtMHgzZmUgYWRkcyBhbiBhZGRpdGlvbmFsIGRpZ2l0IHRvIHRoZSBs
ZW5ndGgKKy8vIG9mIHRoZSBmcmFjdGlvbi4gQXMgc3VjaCB0aGUgbWF4aW11bSBmcmFjdGlvbiBz
aXplIGlzIDEwNzUgKDEwNzYgaW5jbHVkaW5nCisvLyBhIHBvaW50KS4gV2UgcGljayBhIGJ1ZmZl
ciBzaXplIHN1Y2ggdGhhdCBjYW4gc2ltcGx5IHBsYWNlIHRoZSBwb2ludCBpbiB0aGUKKy8vIGNl
bnRlciBvZiB0aGUgYnVmZmVyLCBhbmQgYXJlIGd1YXJhbnRlZWQgdG8gaGF2ZSBlbm91Z2ggc3Bh
Y2UgaW4gZWFjaCBkaXJlY3Rpb24KKy8vIGZvIGFueSBudW1iZXIgb2YgZGlnaXRzIGFuIElFRUUg
bnVtYmVyIG1heSByZXF1aXJlIHRvIHJlcHJlc2VudC4KK3R5cGVkZWYgY2hhciBSYWRpeEJ1ZmZl
clsyMTgwXTsKKworLy8gTWFwcGluZyBmcm9tIGludGVnZXJzIDAuLjM1IHRvIGRpZ2l0IGlkZW50
aWZ5aW5nIHRoaXMgdmFsdWUsIGZvciByYWRpeCAyLi4zNi4KK3N0YXRpYyBjb25zdCBjaGFyKiBj
b25zdCByYWRpeERpZ2l0cyA9ICIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoi
OworCisvLyBBIHZhbHVlIDEgZ3JlYXRlciB0aGFuIG1heCB1aW50MTZfdC4KKyNkZWZpbmUgVWlu
dDE2SW5maW5pdHkgMHgxMDAwMAorCisvLyBkZWNvbXBvc2UgJ251bWJlcicgdG8gaXRzIHNpZ24s
IGV4cG9uZW50LCBhbmQgbWFudGlzc2EgY29tcG9uZW50cy4KKy8vIFRoZSByZXN1bHQgaXMgaW50
ZXJwcmV0ZWQgYXM6CisvLyAgICAgKHNpZ24gPyAtMSA6IDEpICogcG93KDIsIGV4cG9uZW50KSAq
IChtYW50aXNzYSAvICgxIDw8IDUyKSkKK3N0YXRpYyB2b2lkIGRlY29tcG9zZURvdWJsZShkb3Vi
bGUgbnVtYmVyLCBib29sJiBzaWduLCBpbnQzMl90JiBleHBvbmVudCwgdWludDY0X3QmIG1hbnRp
c3NhKQoreworICAgIEFTU0VSVChpc2Zpbml0ZShudW1iZXIpKTsKKworICAgIHNpZ24gPSBzaWdu
Yml0KG51bWJlcik7CisKKyAgICB1aW50NjRfdCBiaXRzID0gV1RGOjpiaXR3aXNlX2Nhc3Q8dWlu
dDY0X3Q+KG51bWJlcik7CisgICAgZXhwb25lbnQgPSAoc3RhdGljX2Nhc3Q8aW50MzJfdD4oYml0
cyA+PiA1MikgJiAweDdmZikgLSAweDNmZjsKKyAgICBtYW50aXNzYSA9IGJpdHMgJiAweEZGRkZG
RkZGRkZGRkZ1bGw7CisKKyAgICAvLyBDaGVjayBmb3IgemVyby9kZW5vcm1hbCB2YWx1ZXM7IGlm
IHNvLCBhZGp1c3QgdGhlIGV4cG9uZW50LAorICAgIC8vIGlmIG5vdCBpbnNlcnQgdGhlIGltcGxp
Y2l0LCBvbWl0dGVkIGxlYWRpbmcgMSBiaXQuCisgICAgaWYgKGV4cG9uZW50ID09IC0weDNmZikK
KyAgICAgICAgZXhwb25lbnQgPSBtYW50aXNzYSA/IC0weDNmZSA6IDA7CisgICAgZWxzZQorICAg
ICAgICBtYW50aXNzYSB8PSAweDEwMDAwMDAwMDAwMDAwdWxsOworfQorCisvLyBBIHVpbnQxNl90
IHdpdGggYW4gaW5maW5pdGUgcHJlY2lzaW9uIGZyYWN0aW9uLiBVcG9uIG92ZXJmbG93aW5nCisv
LyB0aGUgdWludDE2X3QgcmFuZ2UsIHRoaXMgY2xhc3Mgd2lsbCBjbGFtcCB0byBVaW50MTZJbmZp
bml0eS4KKy8vIFRoaXMgaXMgdXNlZCBpbiBjb252ZXJ0aW5nIHRoZSBmcmFjdGlvbiBwYXJ0IG9m
IGEgbnVtYmVyIHRvIGEgc3RyaW5nLgorY2xhc3MgVWludDE2V2l0aEZyYWN0aW9uIHsKK3B1Ymxp
YzoKKyAgICBleHBsaWNpdCBVaW50MTZXaXRoRnJhY3Rpb24oZG91YmxlIG51bWJlciwgdWludDE2
X3QgZGl2aWRlQnlFeHBvbmVudCA9IDApCisgICAgeworICAgICAgICBBU1NFUlQobnVtYmVyICYm
IGlzZmluaXRlKG51bWJlcikgJiYgIXNpZ25iaXQobnVtYmVyKSk7CisKKyAgICAgICAgLy8gQ2hl
Y2sgZm9yIHZhbHVlcyBvdXQgb2YgdWludDE2X3QgcmFuZ2UuCisgICAgICAgIGlmIChudW1iZXIg
Pj0gVWludDE2SW5maW5pdHkpIHsKKyAgICAgICAgICAgIG1fdmFsdWVzLmFwcGVuZChVaW50MTZJ
bmZpbml0eSk7CisgICAgICAgICAgICBtX2xlYWRpbmdaZXJvcyA9IDA7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBBcHBlbmQgdGhlIHVuaXRzIHRvIG1fdmFs
dWVzLgorICAgICAgICBkb3VibGUgaW50ZWdlclBhcnQgPSBmbG9vcihudW1iZXIpOworICAgICAg
ICBtX3ZhbHVlcy5hcHBlbmQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGludGVnZXJQYXJ0KSk7CisK
KyAgICAgICAgYm9vbCBzaWduOworICAgICAgICBpbnQzMl90IGV4cG9uZW50OworICAgICAgICB1
aW50NjRfdCBtYW50aXNzYTsKKyAgICAgICAgZGVjb21wb3NlRG91YmxlKG51bWJlciAtIGludGVn
ZXJQYXJ0LCBzaWduLCBleHBvbmVudCwgbWFudGlzc2EpOworICAgICAgICBBU1NFUlQoIXNpZ24g
JiYgZXhwb25lbnQgPCAwKTsKKyAgICAgICAgZXhwb25lbnQgLT0gZGl2aWRlQnlFeHBvbmVudDsK
KworICAgICAgICBpbnQzMl90IHplcm9CaXRzID0gLWV4cG9uZW50OworICAgICAgICAtLXplcm9C
aXRzOworCisgICAgICAgIC8vIEFwcGVuZCB0aGUgYXBwZW5kIHdvcmRzIGZvciB0byBtX3ZhbHVl
cy4KKyAgICAgICAgd2hpbGUgKHplcm9CaXRzID49IDMyKSB7CisgICAgICAgICAgICBtX3ZhbHVl
cy5hcHBlbmQoMCk7CisgICAgICAgICAgICB6ZXJvQml0cyAtPSAzMjsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIExlZnQgYWxpZ24gdGhlIDUzIGJpdHMgb2YgdGhlIG1hbnRpc3NhIHdpdGhpbiA5
NiBiaXRzLgorICAgICAgICB1aW50MzJfdCB2YWx1ZXNbM107CisgICAgICAgIHZhbHVlc1swXSA9
IHN0YXRpY19jYXN0PHVpbnQzMl90PihtYW50aXNzYSA+PiAyMSk7CisgICAgICAgIHZhbHVlc1sx
XSA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihtYW50aXNzYSA8PCAxMSk7CisgICAgICAgIHZhbHVl
c1syXSA9IDA7CisgICAgICAgIC8vIFNoaWZ0IGJhc2VkIG9uIHRoZSByZW1haW5kZXIgb2YgdGhl
IGV4cG9uZW50LgorICAgICAgICBpZiAoemVyb0JpdHMpIHsKKyAgICAgICAgICAgIHZhbHVlc1sy
XSA9IHZhbHVlc1sxXSA8PCAoMzIgLSB6ZXJvQml0cyk7CisgICAgICAgICAgICB2YWx1ZXNbMV0g
PSAodmFsdWVzWzFdID4+IHplcm9CaXRzKSB8ICh2YWx1ZXNbMF0gPDwgKDMyIC0gemVyb0JpdHMp
KTsKKyAgICAgICAgICAgIHZhbHVlc1swXSA9ICh2YWx1ZXNbMF0gPj4gemVyb0JpdHMpOworICAg
ICAgICB9CisgICAgICAgIG1fdmFsdWVzLmFwcGVuZCh2YWx1ZXNbMF0pOworICAgICAgICBtX3Zh
bHVlcy5hcHBlbmQodmFsdWVzWzFdKTsKKyAgICAgICAgbV92YWx1ZXMuYXBwZW5kKHZhbHVlc1sy
XSk7CisKKyAgICAgICAgLy8gQ2Fub25pY2FsaXplOyByZW1vdmUgYW55IHRyYWlsaW5nIHplcm9z
LgorICAgICAgICB3aGlsZSAobV92YWx1ZXMuc2l6ZSgpID4gMSAmJiAhbV92YWx1ZXMubGFzdCgp
KQorICAgICAgICAgICAgbV92YWx1ZXMucmVtb3ZlTGFzdCgpOworCisgICAgICAgIC8vIENvdW50
IHRoZSBudW1iZXIgb2YgbGVhZGluZyB6ZXJvLCB0aGlzIGlzIHVzZWZ1bCBpbiBvcHRpbWl6aW5n
IG11bHRpcGxpZXMuCisgICAgICAgIG1fbGVhZGluZ1plcm9zID0gMDsKKyAgICAgICAgd2hpbGUg
KG1fbGVhZGluZ1plcm9zIDwgbV92YWx1ZXMuc2l6ZSgpICYmICFtX3ZhbHVlc1ttX2xlYWRpbmda
ZXJvc10pCisgICAgICAgICAgICArK21fbGVhZGluZ1plcm9zOworICAgIH0KKworICAgIFVpbnQx
NldpdGhGcmFjdGlvbiYgb3BlcmF0b3IqPSh1aW50MTZfdCBtdWx0aXBsaWVyKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKGlzTm9ybWFsaXplZCgpKTsKKworICAgICAgICAvLyBpdGVyYXRhdGUgYmFj
a3dhcmRzIG92ZXIgdGhlIGZyYWN0aW9uIHVudGlsIHdlIHJlYWNoIHRoZSBsZWFkaW5nIHplcm9z
LAorICAgICAgICAvLyBwYXNzaW5nIHRoZSBjYXJyeSBmcm9tIG9uZSBjYWxjdWxhdGlvbiBpbnRv
IHRoZSBuZXh0LgorICAgICAgICB1aW50NjRfdCBhY2N1bXVsYXRvciA9IDA7CisgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSBtX3ZhbHVlcy5zaXplKCk7IGkgPiBtX2xlYWRpbmdaZXJvczsgKSB7Cisg
ICAgICAgICAgICAtLWk7CisgICAgICAgICAgICBhY2N1bXVsYXRvciArPSBzdGF0aWNfY2FzdDx1
aW50NjRfdD4obV92YWx1ZXNbaV0pICogc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG11bHRpcGxpZXIp
OworICAgICAgICAgICAgbV92YWx1ZXNbaV0gPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYWNjdW11
bGF0b3IpOworICAgICAgICAgICAgYWNjdW11bGF0b3IgPj49IDMyOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKCFtX2xlYWRpbmdaZXJvcykgeworICAgICAgICAgICAgLy8gV2l0aCBhIG11bHRp
cGxpY2FuZCBhbmQgbXVsdGlwbGllciBpbiB0aGUgdWludDE2X3QgcmFuZ2UsIHRoaXMgY2Fubm90
IGNhcnJ5CisgICAgICAgICAgICAvLyAoZXZlbiBhbGxvd2luZyBmb3IgdGhlIGluZmluaXR5IHZh
bHVlKS4KKyAgICAgICAgICAgIEFTU0VSVCghYWNjdW11bGF0b3IpOworICAgICAgICAgICAgLy8g
Q2hlY2sgZm9yIG92ZXJmbG93ICYgY2xhbXAgdG8gJ2luZmluaXR5Jy4KKyAgICAgICAgICAgIGlm
IChtX3ZhbHVlc1swXSA+PSBVaW50MTZJbmZpbml0eSkgeworICAgICAgICAgICAgICAgIG1fdmFs
dWVzLnNocmluaygxKTsKKyAgICAgICAgICAgICAgICBtX3ZhbHVlc1swXSA9IFVpbnQxNkluZmlu
aXR5OworICAgICAgICAgICAgICAgIG1fbGVhZGluZ1plcm9zID0gMDsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gKnRoaXM7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoYWNjdW11
bGF0b3IpIHsKKyAgICAgICAgICAgIC8vIENoZWNrIGZvciBjYXJyeSBmcm9tIHRoZSBsYXN0IG11
bHRpcGx5LCBpZiBzbyBvdmVyd3JpdGUgbGFzdCBsZWFkaW5nIHplcm8uCisgICAgICAgICAgICBt
X3ZhbHVlc1stLW1fbGVhZGluZ1plcm9zXSA9IGFjY3VtdWxhdG9yOworICAgICAgICAgICAgLy8g
VGhlIGxpbWl0ZWQgcmFuZ2Ugb2YgdGhlIG11bHRpcGxpZXIgc2hvdWxkIG1lYW4gdGhhdCBldmVu
IGlmIHdlIGNhcnJ5IGludG8KKyAgICAgICAgICAgIC8vIHRoZSB1bml0cywgd2UgZG9uJ3QgbmVl
ZCB0byBjaGVjayBmb3Igb3ZlcmZsb3cgb2YgdGhlIHVpbnQxNl90IHJhbmdlLgorICAgICAgICAg
ICAgQVNTRVJUKG1fdmFsdWVzWzBdIDwgVWludDE2SW5maW5pdHkpOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gTXVsdGlwbGljYXRpb24gYnkgYW4gZXZlbiB2YWx1ZSBtYXkgaW50cm9kdWNlIHRy
YWlsaW5nIHplcm9zOyBpZiBzbywgY2xlYW4gdGhlbQorICAgICAgICAvLyB1cC4gKEtlZXBpbmcg
dGhlIHZhbHVlIGluIGEgbm9ybWFsaXplZCBmb3JtIG1ha2VzIHNvbWUgb2YgdGhlIGNvbXBhcmlz
b24gb3BlcmF0aW9ucworICAgICAgICAvLyBtb3JlIGVmZmljaWVudCkuCisgICAgICAgIHdoaWxl
IChtX3ZhbHVlcy5zaXplKCkgPiAxICYmICFtX3ZhbHVlcy5sYXN0KCkpCisgICAgICAgICAgICBt
X3ZhbHVlcy5yZW1vdmVMYXN0KCk7CisgICAgICAgIEFTU0VSVChpc05vcm1hbGl6ZWQoKSk7Cisg
ICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yPChjb25zdCBV
aW50MTZXaXRoRnJhY3Rpb24mIG90aGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzTm9ybWFs
aXplZCgpKTsKKyAgICAgICAgQVNTRVJUKG90aGVyLmlzTm9ybWFsaXplZCgpKTsKKworICAgICAg
ICAvLyBJdGVyYXRlIG92ZXIgdGhlIGNvbW1vbiBsZW5ndGhzIG9mIGFycmF5cy4KKyAgICAgICAg
c2l6ZV90IG1pblNpemUgPSBzdGQ6Om1pbihtX3ZhbHVlcy5zaXplKCksIG90aGVyLm1fdmFsdWVz
LnNpemUoKSk7CisgICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtaW5TaXpl
OyArK2luZGV4KSB7CisgICAgICAgICAgICAvLyBJZiB3ZSBmaW5kIGEgdmFsdWUgdGhhdCBpcyBu
b3QgZXF1YWwsIGNvbXBhcmUgYW5kIHJldHVybi4KKyAgICAgICAgICAgIHVpbnQzMl90IGZyb21U
aGlzID0gbV92YWx1ZXNbaW5kZXhdOworICAgICAgICAgICAgdWludDMyX3QgZnJvbU90aGVyID0g
b3RoZXIubV92YWx1ZXNbaW5kZXhdOworICAgICAgICAgICAgaWYgKGZyb21UaGlzICE9IGZyb21P
dGhlcikKKyAgICAgICAgICAgICAgICByZXR1cm4gZnJvbVRoaXMgPCBmcm9tT3RoZXI7CisgICAg
ICAgIH0KKyAgICAgICAgLy8gSWYgdGhlc2UgbnVtYmVycyBoYXZlIHRoZSBzYW1lIGxlbmd0aHMs
IHRoZXkgYXJlIGVxdWFsLAorICAgICAgICAvLyBvdGhlcndpc2Ugd2hpY2ggZXZlciBudW1iZXIg
aGFzIGEgbG9uZ2VyIGZyYWN0aW9uIGluIGxhcmdlci4KKyAgICAgICAgcmV0dXJuIG90aGVyLm1f
dmFsdWVzLnNpemUoKSA+IG1pblNpemU7CisgICAgfQorCisgICAgLy8gUmV0dXJuIHRoZSBmbG9v
ciAobm9uLWZyYWN0aW9uYWwgcG9ydGlvbikgb2YgdGhlIG51bWJlciwgY2xlYXJpbmcgdGhpcyB0
byB6ZXJvLAorICAgIC8vIGxlYXZpbmcgdGhlIGZyYWN0aW9uYWwgcGFydCB1bmNoYW5nZWQuCisg
ICAgdWludDMyX3QgZmxvb3JBbmRTdWJ0cmFjdCgpCisgICAgeworICAgICAgICAvLyAnZmxvb3In
IGlzIHNpbXBsZSB0aGUgaW50ZWdlciBwb3J0aW9uIG9mIHRoZSB2YWx1ZS4KKyAgICAgICAgdWlu
dDMyX3QgZmxvb3IgPSBtX3ZhbHVlc1swXTsKKworICAgICAgICAvLyBJZiBmbG9vciBpcyBub24t
emVybywgCisgICAgICAgIGlmIChmbG9vcikgeworICAgICAgICAgICAgbV92YWx1ZXNbMF0gPSAw
OworICAgICAgICAgICAgbV9sZWFkaW5nWmVyb3MgPSAxOworICAgICAgICAgICAgd2hpbGUgKG1f
bGVhZGluZ1plcm9zIDwgbV92YWx1ZXMuc2l6ZSgpICYmICFtX3ZhbHVlc1ttX2xlYWRpbmdaZXJv
c10pCisgICAgICAgICAgICAgICAgKyttX2xlYWRpbmdaZXJvczsKKyAgICAgICAgfQorCisgICAg
ICAgIHJldHVybiBmbG9vcjsKKyAgICB9CisKKyAgICAvLyBDb21wYXJlIHRoaXMgdmFsdWUgdG8g
MC41LCByZXR1cm5zIC0xIGZvciBsZXNzIHRoYW4sIDAgZm9yIGVxdWFsLCAxIGZvciBncmVhdGVy
LgorICAgIGludCBjb21wYXJlUG9pbnQ1KCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpc05vcm1h
bGl6ZWQoKSk7CisgICAgICAgIC8vIElmIHVuaXRzICE9IDAsIHRoaXMgaXMgZ3JlYXRlciB0aGFu
IDAuNS4KKyAgICAgICAgaWYgKG1fdmFsdWVzWzBdKQorICAgICAgICAgICAgcmV0dXJuIDE7Cisg
ICAgICAgIC8vIElmIHNpemUgPT0gMSB0aGlzIHZhbHVlIGlzIDAsIGhlbmNlIDwgMC41LgorICAg
ICAgICBpZiAobV92YWx1ZXMuc2l6ZSgpID09IDEpCisgICAgICAgICAgICByZXR1cm4gLTE7Cisg
ICAgICAgIC8vIENvbXBhcmUgdG8gMC41LgorICAgICAgICBpZiAobV92YWx1ZXNbMV0gPiAweDgw
MDAwMDAwdWwpCisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgaWYgKG1fdmFsdWVzWzFd
IDwgMHg4MDAwMDAwMHVsKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAvLyBDaGVj
ayBmb3IgbW9yZSB3b3JkcyAtIHNpbmNlIG5vcm1hbGl6ZWQgbnVtYmVycyBoYXZlIG5vIHRyYWls
aW5nIHplcm9zLCBpZgorICAgICAgICAvLyB0aGVyZSBhcmUgbW9yZSB0aGF0IHR3byBkaWdpdHMg
d2UgY2FuIGFzc3VtZSBhdCBsZWFzdCBvbmUgbW9yZSBpcyBub24temVybywKKyAgICAgICAgLy8g
YW5kIGhlbmNlIHRoZSB2YWx1ZSBpcyA+IDAuNS4KKyAgICAgICAgcmV0dXJuIG1fdmFsdWVzLnNp
emUoKSA+IDIgPyAxIDogMDsKKyAgICB9CisKKyAgICAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3Vt
IG9mIHRoaXMgcGx1cyBhZGRlbmQgd291bGQgYmUgZ3JlYXRlciB0aGFuIDEuCisgICAgYm9vbCBz
dW1HcmVhdGVyVGhhbk9uZShjb25zdCBVaW50MTZXaXRoRnJhY3Rpb24mIGFkZGVuZCkgCisgICAg
eworICAgICAgICBBU1NFUlQoaXNOb3JtYWxpemVkKCkpOworICAgICAgICBBU1NFUlQoYWRkZW5k
LmlzTm9ybWFsaXplZCgpKTsKKworICAgICAgICAvLyBGaXJzdCwgc3VtIHRoZSB1bml0cy4gSWYg
dGhlIHJlc3VsdCBpcyBncmVhdGVyIHRoYW4gb25lLCByZXR1cm4gdHJ1ZS4KKyAgICAgICAgLy8g
SWYgZXF1YWwgdG8gb25lLCByZXR1cm4gdHJ1ZSBpZiBlaXRoZXIgbnVtYmVyIGhhcyBhIGZyYWN0
aW9uYWwgcGFydC4KKyAgICAgICAgdWludDMyX3Qgc3VtID0gbV92YWx1ZXNbMF0gKyBhZGRlbmQu
bV92YWx1ZXNbMF07CisgICAgICAgIGlmIChzdW0pCisgICAgICAgICAgICByZXR1cm4gc3VtID4g
MSB8fCBzdGQ6Om1heChtX3ZhbHVlcy5zaXplKCksIGFkZGVuZC5tX3ZhbHVlcy5zaXplKCkpID4g
MTsKKworICAgICAgICAvLyBXZSBjb3VsZCBzdGlsbCBwcm9kdWNlIGEgcmVzdWx0IGdyZWF0ZXIg
dGhhbiB6ZXJvIGlmIGFkZGl0aW9uIG9mIHRoZSBuZXh0CisgICAgICAgIC8vIHdvcmQgZnJvbSB0
aGUgZnJhY3Rpb24gd2VyZSB0byBjYXJyeSwgbGVhdmluZyBhIHJlc3VsdCA+IDAuCisKKyAgICAg
ICAgLy8gSXRlcmF0ZSBvdmVyIHRoZSBjb21tb24gbGVuZ3RocyBvZiBhcnJheXMuCisgICAgICAg
IHNpemVfdCBtaW5TaXplID0gc3RkOjptaW4obV92YWx1ZXMuc2l6ZSgpLCBhZGRlbmQubV92YWx1
ZXMuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaW5kZXggPSAxOyBpbmRleCA8IG1pblNp
emU7ICsraW5kZXgpIHsKKyAgICAgICAgICAgIC8vIFN1bSB0aGUgbmV4dCB3b3JkIGZyb20gdGhp
cyAmIHRoZSBhZGRlbmQuCisgICAgICAgICAgICB1aW50MzJfdCBmcm9tVGhpcyA9IG1fdmFsdWVz
W2luZGV4XTsKKyAgICAgICAgICAgIHVpbnQzMl90IGZyb21BZGRlbmQgPSBhZGRlbmQubV92YWx1
ZXNbaW5kZXhdOworICAgICAgICAgICAgc3VtID0gZnJvbVRoaXMgKyBmcm9tQWRkZW5kOworCisg
ICAgICAgICAgICAvLyBDaGVjayBmb3Igb3ZlcmZsb3cuIElmIHNvLCBjaGVjayB3aGV0aGVyIHRo
ZSByZW1haW5pbmcgcmVzdWx0IGlzIG5vbi16ZXJvLAorICAgICAgICAgICAgLy8gb3IgaWYgdGhl
cmUgYXJlIGFueSBmdXJ0aGVyIHdvcmRzIGluIHRoZSBmcmFjdGlvbi4KKyAgICAgICAgICAgIGlm
IChzdW0gPCBmcm9tVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VtIHx8IChpbmRleCAr
IDEpIDwgc3RkOjptYXgobV92YWx1ZXMuc2l6ZSgpLCBhZGRlbmQubV92YWx1ZXMuc2l6ZSgpKTsK
KworICAgICAgICAgICAgLy8gSWYgdGhlIHN1bSBpcyB1aW50MzJfdCBtYXgsIHRoZW4gd2Ugd291
bGQgY2FycnkgYSAxIGlmIGFkZGl0aW9uIG9mIHRoZSBuZXh0CisgICAgICAgICAgICAvLyBkaWdp
dHMgaW4gdGhlIG51bWJlciB3ZXJlIHRvIG92ZXJmbG93LgorICAgICAgICAgICAgaWYgKHN1bSAh
PSAweEZGRkZGRkZGKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCitwcml2YXRlOgorICAgIGJvb2wgaXNOb3Jt
YWxpemVkKCkgY29uc3QKKyAgICB7CisgICAgICAgIC8vIEFsbCB2YWx1ZXMgc2hvdWxkIGhhdmUg
YXQgbGVhc3Qgb25lIHZhbHVlLgorICAgICAgICByZXR1cm4gKG1fdmFsdWVzLnNpemUoKSkKKyAg
ICAgICAgICAgIC8vIFRoZSB1bml0cyB2YWx1ZSBtdXN0IGJlIGEgdWludDE2X3QsIG9yIHRoZSB2
YWx1ZSBpcyB0aGUgb3ZlcmZsb3cgdmFsdWUuCisgICAgICAgICAgICAmJiAobV92YWx1ZXNbMF0g
PCBVaW50MTZJbmZpbml0eSB8fCAobV92YWx1ZXNbMF0gPT0gVWludDE2SW5maW5pdHkgJiYgbV92
YWx1ZXMuc2l6ZSgpID09IDEpKQorICAgICAgICAgICAgLy8gVGhlcmUgc2hvdWxkIGJlIG5vIHRy
YWlsaW5nIHplcm9zICh1bmxlc3MgdGhpcyB2YWx1ZSBpcyB6ZXJvISkuCisgICAgICAgICAgICAm
JiAobV92YWx1ZXMubGFzdCgpIHx8IG1fdmFsdWVzLnNpemUoKSA9PSAxKTsKKyAgICB9CisKKyAg
ICAvLyBUaGUgaW50ZXJuYWwgc3RvcmFnZSBvZiB0aGUgbnVtYmVyLiBUaGlzIHZlY3RvciBpcyBh
bHdheXMgYXQgbGVhc3Qgb25lIGVudHJ5IGluIHNpemUsCisgICAgLy8gd2l0aCB0aGUgZmlyc3Qg
ZW50cnkgaG9sZGluZyB0aGUgcG9ydGlvbiBvZiB0aGUgbnVtYmVyIGdyZWF0ZXIgdGhhbiB6ZXJv
LiBUaGUgZmlyc3QKKyAgICAvLyB2YWx1ZSBhbHdheXMgaG9sZCBhIHZhbHVlIGluIHRoZSB1aW50
MTZfdCByYW5nZSwgb3IgaG9sZHMgdGhlIHZhbHVlIFVpbnQxNkluZmluaXR5IHRvCisgICAgLy8g
aW5kaWNhdGUgdGhlIHZhbHVlIGhhcyBvdmVyZmxvd2VkIHRvID49IDB4MTAwMDAuIElmIHRoZSB1
bml0cyB2YWx1ZSBpcyBVaW50MTZJbmZpbml0eSwKKyAgICAvLyB0aGVyZSBjYW4gYmUgbm8gZnJh
Y3Rpb24gKHNpemUgbXVzdCBiZSAxKS4KKyAgICAvLworICAgIC8vIFN1YnNlcXVlbnQgdmFsdWVz
IGluIHRoZSBhcnJheSByZXByZXNlbnQgcG9ydGlvbnMgb2YgdGhlIGZyYWN0aW9uYWwgcGFydCBv
ZiB0aGlzIG51bWJlci4KKyAgICAvLyBUaGUgdG90YWwgdmFsdWUgb2YgdGhlIG51bWJlciBpcyB0
aGUgc3VtIG9mIChtX3ZhbHVlc1tpXSAvIHBvdygyXjMyLCBpKSksIGZvciBlYWNoIGkKKyAgICAv
LyBpbiB0aGUgYXJyYXkuIFRoZSB2ZWN0b3Igc2hvdWxkIGNvbnRhaW4gbm8gdHJhaWxpbmcgemVy
b3MsIGV4Y2VwdCBmb3IgdGhlIHZhbHVlICcwJywKKyAgICAvLyByZXByZXNlbnRlZCBieSBhIHZl
Y3RvciBjb250aWFuaW5nIGEgc2luZ2xlIHplcm8gdmFsdWUuIFRoZXNlIGNvbnN0cmFpbnRzIGFy
ZSBjaGVja2VkCisgICAgLy8gYnkgJ2lzTm9ybWFsaXplZCgpJywgYWJvdmUuCisgICAgLy8KKyAg
ICAvLyBUaGUgaW5saW5lIGNhcGFjaXR5IG9mIHRoZSB2ZWN0b3IgaXMgc2V0IHRvIGJlIGFibGUg
dG8gY29udGFpbiBhbnkgSUVFRSBkb3VibGUgKDEgZm9yCisgICAgLy8gdGhlIHVuaXRzIGNvbHVt
biwgMzIgZm9yIHplcm9zIGludHJvZHVjZWQgZHVlIHRvIGFuIGV4cG9uZW50IHVwIHRvIC0zRkUs
IGFuZCAyIGZvcgorICAgIC8vIGJpdHMgdGFrZW4gZnJvbSB0aGUgbWFudGlzc2EpLgorICAgIFZl
Y3Rvcjx1aW50MzJfdCwgMzY+IG1fdmFsdWVzOworCisgICAgLy8gQ2FjaGUgYSBjb3VudCBvZiB0
aGUgbnVtYmVyIG9mIGxlYWRpbmcgemVyb3MgaW4gbV92YWx1ZXMuIFdlIGNhbiB1c2UgdGhpcyB0
byBvcHRpbWl6ZQorICAgIC8vIG1ldGhvZHMgdGhhdCB3b3VsZCBvdGhlcndpc2UgbmVlZCB2aXNp
dCBhbGwgd29yZHMgaW4gdGhlIHZlY3RvciwgZS5nLiBtdWx0aXBsaWNhdGlvbi4KKyAgICBzaXpl
X3QgbV9sZWFkaW5nWmVyb3M7Cit9OworCisvLyBUaGlzIGlzIHVzZWQgaW4gY29udmVydGluZyB0
aGUgaW50ZWdlciBwYXJ0IG9mIGEgbnVtYmVyIHRvIGEgc3RyaW5nLgorY2xhc3MgQmlnSW50ZWdl
ciB7CitwdWJsaWM6CisgICAgQmlnSW50ZWdlcihkb3VibGUgbnVtYmVyKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKGlzZmluaXRlKG51bWJlcikgJiYgIXNpZ25iaXQobnVtYmVyKSk7CisgICAgICAg
IEFTU0VSVChudW1iZXIgPT0gZmxvb3IobnVtYmVyKSk7CisKKyAgICAgICAgYm9vbCBzaWduOwor
ICAgICAgICBpbnQzMl90IGV4cG9uZW50OworICAgICAgICB1aW50NjRfdCBtYW50aXNzYTsKKyAg
ICAgICAgZGVjb21wb3NlRG91YmxlKG51bWJlciwgc2lnbiwgZXhwb25lbnQsIG1hbnRpc3NhKTsK
KyAgICAgICAgQVNTRVJUKCFzaWduICYmIGV4cG9uZW50ID49IDApOworCisgICAgICAgIGludDMy
X3QgemVyb0JpdHMgPSBleHBvbmVudCAtIDUyOworCisgICAgICAgIGlmICh6ZXJvQml0cyA8IDAp
IHsKKyAgICAgICAgICAgIG1hbnRpc3NhID4+PSAtemVyb0JpdHM7CisgICAgICAgICAgICB6ZXJv
Qml0cyA9IDA7CisgICAgICAgIH0KKworICAgICAgICB3aGlsZSAoemVyb0JpdHMgPj0gMzIpIHsK
KyAgICAgICAgICAgIG1fdmFsdWVzLmFwcGVuZCgwKTsKKyAgICAgICAgICAgIHplcm9CaXRzIC09
IDMyOworICAgICAgICB9CisKKyAgICAgICAgLy8gTGVmdCBhbGlnbiB0aGUgNTMgYml0cyBvZiB0
aGUgbWFudGlzc2Egd2l0aGluIDk2IGJpdHMuCisgICAgICAgIHVpbnQzMl90IHZhbHVlc1szXTsK
KyAgICAgICAgdmFsdWVzWzBdID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1hbnRpc3NhKTsKKyAg
ICAgICAgdmFsdWVzWzFdID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1hbnRpc3NhID4+IDMyKTsK
KyAgICAgICAgdmFsdWVzWzJdID0gMDsKKyAgICAgICAgLy8gU2hpZnQgYmFzZWQgb24gdGhlIHJl
bWFpbmRlciBvZiB0aGUgZXhwb25lbnQuCisgICAgICAgIGlmICh6ZXJvQml0cykgeworICAgICAg
ICAgICAgdmFsdWVzWzJdID0gdmFsdWVzWzFdID4+ICgzMiAtIHplcm9CaXRzKTsKKyAgICAgICAg
ICAgIHZhbHVlc1sxXSA9ICh2YWx1ZXNbMV0gPDwgemVyb0JpdHMpIHwgKHZhbHVlc1swXSA+PiAo
MzIgLSB6ZXJvQml0cykpOworICAgICAgICAgICAgdmFsdWVzWzBdID0gKHZhbHVlc1swXSA8PCB6
ZXJvQml0cyk7CisgICAgICAgIH0KKyAgICAgICAgbV92YWx1ZXMuYXBwZW5kKHZhbHVlc1swXSk7
CisgICAgICAgIG1fdmFsdWVzLmFwcGVuZCh2YWx1ZXNbMV0pOworICAgICAgICBtX3ZhbHVlcy5h
cHBlbmQodmFsdWVzWzJdKTsKKworICAgICAgICAvLyBDYW5vbmljYWxpemU7IHJlbW92ZSBhbGwg
dHJhaWxpbmcgemVyb3MuCisgICAgICAgIHdoaWxlIChtX3ZhbHVlcy5zaXplKCkgJiYgIW1fdmFs
dWVzLmxhc3QoKSkKKyAgICAgICAgICAgIG1fdmFsdWVzLnJlbW92ZUxhc3QoKTsKKyAgICB9CisK
KyAgICB1aW50MzJfdCBkaXZpZGUodWludDMyX3QgZGl2aXNvcikKKyAgICB7CisgICAgICAgIHVp
bnQzMl90IGNhcnJ5ID0gMDsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gbV92YWx1ZXMuc2l6
ZSgpOyBpOyApIHsKKyAgICAgICAgICAgIC0taTsKKyAgICAgICAgICAgIHVpbnQ2NF90IGRpdmlk
ZW5kID0gKHN0YXRpY19jYXN0PHVpbnQ2NF90PihjYXJyeSkgPDwgMzIpICsgc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KG1fdmFsdWVzW2ldKTsKKworICAgICAgICAgICAgdWludDY0X3QgcmVzdWx0ID0g
ZGl2aWRlbmQgLyBzdGF0aWNfY2FzdDx1aW50NjRfdD4oZGl2aXNvcik7CisgICAgICAgICAgICBB
U1NFUlQocmVzdWx0ID09IHN0YXRpY19jYXN0PHVpbnQzMl90PihyZXN1bHQpKTsKKyAgICAgICAg
ICAgIHVpbnQ2NF90IHJlbWFpbmRlciA9IGRpdmlkZW5kICUgc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KGRpdmlzb3IpOworICAgICAgICAgICAgQVNTRVJUKHJlbWFpbmRlciA9PSBzdGF0aWNfY2FzdDx1
aW50MzJfdD4ocmVtYWluZGVyKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1fdmFsdWVz
W2ldID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHJlc3VsdCk7CisgICAgICAgICAgICBjYXJyeSA9
IHN0YXRpY19jYXN0PHVpbnQzMl90PihyZW1haW5kZXIpOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gQ2Fub25pY2FsaXplOyByZW1vdmUgYWxsIHRyYWlsaW5nIHplcm9zLgorICAgICAgICB3aGls
ZSAobV92YWx1ZXMuc2l6ZSgpICYmICFtX3ZhbHVlcy5sYXN0KCkpCisgICAgICAgICAgICBtX3Zh
bHVlcy5yZW1vdmVMYXN0KCk7CisKKyAgICAgICAgcmV0dXJuIGNhcnJ5OworICAgIH0KKworICAg
IGJvb2wgb3BlcmF0b3IhKCkgeyByZXR1cm4gIW1fdmFsdWVzLnNpemUoKTsgfQorCitwcml2YXRl
OgorICAgIFZlY3Rvcjx1aW50MzJfdCwgMzY+IG1fdmFsdWVzOworfTsKKworc3RhdGljIGNoYXIq
IHRvU3RyaW5nV2l0aFJhZGl4KFJhZGl4QnVmZmVyJiBidWZmZXIsIGRvdWJsZSBudW1iZXIsIHVu
c2lnbmVkIHJhZGl4KQoreworICAgIEFTU0VSVChpc2Zpbml0ZShudW1iZXIpKTsKKyAgICBBU1NF
UlQocmFkaXggPj0gMiAmJiByYWRpeCA8PSAzNik7CisKKyAgICAvLyBQb3NpdGlvbiB0aGUgZGVj
aW1hbCBwb2ludCBhdCB0aGUgY2VudGVyIG9mIHRoZSBzdHJpbmcsIHNldAorICAgIC8vIHRoZSBz
dGFydE9mUmVzdWx0U3RyaW5nIHBvaW50ZXIgdG8gcG9pbnQgYXQgdGhlIGRlY2ltYWwgcG9pbnQu
CisgICAgY2hhciogZGVjaW1hbFBvaW50ID0gYnVmZmVyICsgc2l6ZW9mKGJ1ZmZlcikgLyAyOwor
ICAgIGNoYXIqIHN0YXJ0T2ZSZXN1bHRTdHJpbmcgPSBkZWNpbWFsUG9pbnQ7CisKKyAgICAvLyBF
eHRyYWN0IHRoZSBzaWduLgorICAgIGJvb2wgaXNOZWdhdGl2ZSA9IG51bWJlciA8IDA7CisgICAg
aWYgKHNpZ25iaXQobnVtYmVyKSkKKyAgICAgICAgbnVtYmVyID0gLW51bWJlcjsKKyAgICBkb3Vi
bGUgaW50ZWdlclBhcnQgPSBmbG9vcihudW1iZXIpOworCisgICAgLy8gV2UgdXNlIHRoaXMgdG8g
dGVzdCBmb3Igb2RkIHZhbHVlcyBpbiBvZGQgcmFkaXggYmFzZXMuCisgICAgLy8gV2hlcmUgdGhl
IGJhc2UgaXMgZXZlbiwgKGUuZy4gMTApLCB0byBkZXRlcm1pbmUgd2hldGhlciBhIHZhbHVlIGlz
IGV2ZW4gd2UgbmVlZCBvbmx5CisgICAgLy8gY29uc2lkZXIgdGhlIGxlYXN0IHNpZ25pZmljYW50
IGRpZ2l0LiBGb3IgZXhhbXBsZSwgMTI0IGluIGJhc2UgMTAgaXMgZXZlbiwgYmVjYXVzZSAnNCcK
KyAgICAvLyBpcyBldmVuLiBpZiB0aGUgcmFkaXggaXMgb2RkLCB0aGVuIHRoZSByYWRpeCByYWlz
ZWQgdG8gYW4gaW50ZWdlciBwb3dlciBpcyBhbHNvIG9kZC4KKyAgICAvLyBFLmcuIGluIGJhc2Ug
NSwgMTI0IHJlcHJlc2VudHMgKDEgKiAxMjUgKyAyICogMjUgKyA0ICogNSkuIFNpbmNlIGVhY2gg
ZGlnaXQgaW4gdGhlIHZhbHVlCisgICAgLy8gaXMgbXVsdGlwbGllZCBieSBhbiBvZGQgbnVtYmVy
LCB0aGUgcmVzdWx0IGlzIGV2ZW4gaWYgdGhlIHN1bSBvZiBhbGwgZGlnaXRzIGlzIGV2ZW4uCisg
ICAgLy8KKyAgICAvLyBGb3IgdGhlIGludGVnZXIgcG9ydGlvbiBvZiB0aGUgcmVzdWx0LCB3ZSBv
bmx5IG5lZWQgdGVzdCB3aGV0aGVyIHRoZSBpbnRlZ2VyIHZhbHVlIGlzCisgICAgLy8gZXZlbiBv
ciBvZGQuIEZvciBlYWNoIGRpZ2l0IG9mIHRoZSBmcmFjdGlvbiBhZGRlZCwgd2Ugc2hvdWxkIGlu
dmVydCBvdXIgaWRlYSBvZiB3aGV0aGVyCisgICAgLy8gdGhlIG51bWJlciBpcyBvZGQgaWYgdGhl
IG5ldyBkaWdpdCBpcyBvZGQuCisgICAgLy8KKyAgICAvLyBBbHNvIGluaXRpYWxpemUgZGlnaXQg
dG8gdGhpcyB2YWx1ZTsgZm9yIGV2ZW4gcmFkaXggdmFsdWVzIHdlIG9ubHkgbmVlZCB0cmFjayB3
aGV0aGVyCisgICAgLy8gdGhlIGxhc3QgaW5kaXZpZHVhbCBkaWdpdCB3YXMgb2RkLgorICAgIGJv
b2wgaW50ZWdlclBhcnRJc09kZCA9IGludGVnZXJQYXJ0IDw9IHN0YXRpY19jYXN0PGRvdWJsZT4o
MHgxRkZGRkZGRkZGRkZGRnVsbCkgJiYgc3RhdGljX2Nhc3Q8aW50NjRfdD4oaW50ZWdlclBhcnQp
ICYgMTsKKyAgICBBU1NFUlQoaW50ZWdlclBhcnRJc09kZCA9PSBzdGF0aWNfY2FzdDxib29sPihm
bW9kKGludGVnZXJQYXJ0LCAyKSkpOworICAgIGJvb2wgaXNPZGRJbk9kZFJhZGl4ID0gaW50ZWdl
clBhcnRJc09kZDsKKyAgICB1aW50MzJfdCBkaWdpdCA9IGludGVnZXJQYXJ0SXNPZGQ7CisKKyAg
ICAvLyBDaGVjayBpZiB0aGUgdmFsdWUgaGFzIGEgZnJhY3Rpb25hbCBwYXJ0IC0gaWYgbm90LCB3
ZSdyZSBkb25lLgorICAgIGRvdWJsZSBmcmFjdGlvblBhcnQgPSBudW1iZXIgLSBmbG9vcihudW1i
ZXIpOworICAgIGlmIChmcmFjdGlvblBhcnQpIHsKKyAgICAgICAgLy8gV3JpdGUgdGhlIGRlY2lt
YWwgcG9pbnQgbm93LgorICAgICAgICAqZGVjaW1hbFBvaW50ID0gJy4nOworCisgICAgICAgIC8v
IEhpZ2hlciBwcmVjaXNpb24gcmVwcmVzZW50YXRpb24gb2YgdGhlIGZyYWN0aW9uYWwgcGFydC4K
KyAgICAgICAgVWludDE2V2l0aEZyYWN0aW9uIGZyYWN0aW9uKGZyYWN0aW9uUGFydCk7CisKKyAg
ICAgICAgYm9vbCBuZWVkc1JvdW5kaW5nVXAgPSBmYWxzZTsKKyAgICAgICAgY2hhciogZW5kT2ZS
ZXN1bHRTdHJpbmcgPSBkZWNpbWFsUG9pbnQgKyAxOworCisgICAgICAgIC8vIENhbGN1bGF0ZSB0
aGUgZGVsdGEgZnJvbSB0aGUgY3VycmVudCBudW1iZXIgdG8gdGhlIG5leHQgJiBwcmV2aW91cyBw
b3NzaWJsZSBJRUVFIG51bWJlcnMuCisgICAgICAgIGRvdWJsZSBuZXh0TnVtYmVyID0gbmV4dGFm
dGVyKG51bWJlciwgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKTsKKyAg
ICAgICAgZG91YmxlIGxhc3ROdW1iZXIgPSBuZXh0YWZ0ZXIobnVtYmVyLCAtc3RkOjpudW1lcmlj
X2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKTsKKyAgICAgICAgQVNTRVJUKGlzZmluaXRlKG5l
eHROdW1iZXIpICYmICFzaWduYml0KG5leHROdW1iZXIpKTsKKyAgICAgICAgQVNTRVJUKGlzZmlu
aXRlKGxhc3ROdW1iZXIpICYmICFzaWduYml0KGxhc3ROdW1iZXIpKTsKKyAgICAgICAgZG91Ymxl
IGRlbHRhTmV4dERvdWJsZSA9IG5leHROdW1iZXIgLSBudW1iZXI7CisgICAgICAgIGRvdWJsZSBk
ZWx0YUxhc3REb3VibGUgPSBudW1iZXIgLSBsYXN0TnVtYmVyOworICAgICAgICBBU1NFUlQoaXNm
aW5pdGUoZGVsdGFOZXh0RG91YmxlKSAmJiAhc2lnbmJpdChkZWx0YU5leHREb3VibGUpKTsKKyAg
ICAgICAgQVNTRVJUKGlzZmluaXRlKGRlbHRhTGFzdERvdWJsZSkgJiYgIXNpZ25iaXQoZGVsdGFM
YXN0RG91YmxlKSk7CisKKyAgICAgICAgLy8gV2UgdHJhY2sgdGhlIGRlbHRhIGZyb20gdGhlIGN1
cnJlbnQgdmFsdWUgdG8gdGhlIG5leHQsIHRvIHRyYWNrIGhvdyBtYW55IGRpZ2l0cyBvZiB0aGUK
KyAgICAgICAgLy8gZnJhY3Rpb24gd2UgbmVlZCB0byB3cml0ZS4gRm9yIGV4YW1wbGUsIGlmIHRo
ZSB2YWx1ZSB3ZSBhcmUgY29udmVydGluZyBpcyBwcmVjaXNlbHkKKyAgICAgICAgLy8gMS4yMzQ1
LCBzbyBmYXIgd2UgaGF2ZSB3cml0dGVuIHRoZSBkaWdpdHMgIjEuMjMiIHRvIGEgc3RyaW5nIGxl
YXZpbmcgYSByZW1haW5kZXIgb2YKKyAgICAgICAgLy8gMC40NSwgYW5kIHdlIHdhbnQgdG8gZGV0
ZXJtaW5lIHdoZXRoZXIgd2UgY2FuIHJvdW5kIG9mZiwgb3Igd2hldGhlciB3ZSBuZWVkIHRvIGtl
ZXAKKyAgICAgICAgLy8gYXBwZW5kaW5nIGRpZ2l0cyAoJzQnKS4gV2UgY2FuIHN0b3AgYWRkaW5n
IGRpZ2l0cyBwcm92aWRlZCB0aGF0IHRoZW4gbmV4dCBwb3NzaWJsZQorICAgICAgICAvLyBsb3dl
ciBJRUVFIHZhbHVlIGlzIGZ1cnRoZXIgZnJvbSAxLjIzIHRoYW4gdGhlIHJlbWFpbmRlciB3ZSdk
IGJlIHJvdW5kaW5nIG9mZiAoMC40NSksCisgICAgICAgIC8vIHdoaWNoIGlzIHRvIHNheSwgbGVz
cyB0aGFuIDEuMjI1NS4gUHV0IGFub3RoZXIgd2F5LCB0aGUgZGVsdGEgYmV0d2VlbiB0aGUgcHJp
b3IKKyAgICAgICAgLy8gcG9zc2libGUgdmFsdWUgYW5kIHRoaXMgbnVtYmVyIG11c3QgYmUgbW9y
ZSB0aGFuIDJ4IHRoZSByZW1haW5kZXIgd2UnZCBiZSByb3VuZGluZyBvZmYKKyAgICAgICAgLy8g
KG9yIG1vcmUgc2ltcGx5IGhhbGYgdGhlIGRlbHRhIGJldHdlZW4gbnVtYmVycyBtdXN0IGJlIGdy
ZWF0ZXIgdGhhbiB0aGUgcmVtYWluZGVyKS4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gU2ltaWxh
cmx5IHdlIG5lZWQgdHJhY2sgdGhlIGRlbHRhIHRvIHRoZSBuZXh0IHBvc3NpYmxlIHZhbHVlLCB0
byBkZXJ0ZXJtaW5lIHdoZXRoZXIKKyAgICAgICAgLy8gdG8gcm91bmQgdXAuIEluIGFsbW9zdCBh
bGwgY2FzZXMgKG90aGVyIHRoYW4gYXQgZXhwb25lbnQgYm91bmRhcmllcykgdGhlIGRlbHRhcyB0
bworICAgICAgICAvLyBwcmlvciBhbmQgc3Vic2VxdWVudCB2YWx1ZXMgYXJlIGlkZW50aWNhbCwg
c28gd2UgZG9uJ3QgbmVlZCB0cmFjayB0aGVuIHNlcGFyYXRlbHkuCisgICAgICAgIGlmIChkZWx0
YU5leHREb3VibGUgIT0gZGVsdGFMYXN0RG91YmxlKSB7CisgICAgICAgICAgICAvLyBTaW5jZSB0
aGUgZGVsdGFzIGFyZSBkaWZmZXJlbnQgdHJhY2sgdGhlbSBzZXBhcmF0ZWx5LiBQcmUtbXVsdGlw
bHkgYnkgMC41LgorICAgICAgICAgICAgVWludDE2V2l0aEZyYWN0aW9uIGhhbGZEZWx0YU5leHQo
ZGVsdGFOZXh0RG91YmxlLCAxKTsKKyAgICAgICAgICAgIFVpbnQxNldpdGhGcmFjdGlvbiBoYWxm
RGVsdGFMYXN0KGRlbHRhTGFzdERvdWJsZSwgMSk7CisKKyAgICAgICAgICAgIHdoaWxlICh0cnVl
KSB7CisgICAgICAgICAgICAgICAgLy8gZXhhbWluZSB0aGUgcmVtYWluZGVyIHRvIGRldGVybWlu
ZSB3aGV0aGVyIHdlIHNob3VsZCBiZSBjb25zaWRlcmluZyByb3VuZGluZworICAgICAgICAgICAg
ICAgIC8vIHVwIG9yIGRvd24uIElmIHJlbWFhaW5kZXIgaXMgcHJlY2lzZWx5IDAuNSByb3VuZGlu
ZyBpcyB0byBldmVuLgorICAgICAgICAgICAgICAgIGludCBkQ29tcGFyZVBvaW50NSA9IGZyYWN0
aW9uLmNvbXBhcmVQb2ludDUoKTsKKyAgICAgICAgICAgICAgICBpZiAoZENvbXBhcmVQb2ludDUg
PiAwIHx8ICghZENvbXBhcmVQb2ludDUgJiYgKHJhZGl4ICYgMSA/IGlzT2RkSW5PZGRSYWRpeCA6
IGRpZ2l0ICYgMSkpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGZvciByb3VuZGlu
ZyB1cDsgYXJlIHdlIGNsb3NlciB0byB0aGUgdmFsdWUgd2UnZCByb3VuZCBvZmYgdG8gdGhhbgor
ICAgICAgICAgICAgICAgICAgICAvLyB0aGUgbmV4dCBJRUVFIHZhbHVlIHdvdWxkIGJlPworICAg
ICAgICAgICAgICAgICAgICBpZiAoZnJhY3Rpb24uc3VtR3JlYXRlclRoYW5PbmUoaGFsZkRlbHRh
TmV4dCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRzUm91bmRpbmdVcCA9IHRydWU7
CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGZv
ciByb3VuZGluZyBkb3duOyBhcmUgd2UgY2xvc2VyIHRvIHRoZSB2YWx1ZSB3ZSdkIHJvdW5kIG9m
ZiB0byB0aGFuCisgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBwcmlvciBJRUVFIHZhbHVlIHdv
dWxkIGJlPworICAgICAgICAgICAgICAgICAgICBpZiAoZnJhY3Rpb24gPCBoYWxmRGVsdGFMYXN0
KQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgQVNTRVJUKGVuZE9mUmVzdWx0U3RyaW5nIDwgKGJ1ZmZlciArIHNpemVv
ZihidWZmZXIpIC0gMSkpOworICAgICAgICAgICAgICAgIC8vIFdyaXRlIGEgZGlnaXQgdG8gdGhl
IHN0cmluZy4KKyAgICAgICAgICAgICAgICBmcmFjdGlvbiAqPSByYWRpeDsKKyAgICAgICAgICAg
ICAgICBkaWdpdCA9IGZyYWN0aW9uLmZsb29yQW5kU3VidHJhY3QoKTsKKyAgICAgICAgICAgICAg
ICAqZW5kT2ZSZXN1bHRTdHJpbmcrKyA9IHJhZGl4RGlnaXRzW2RpZ2l0XTsKKyAgICAgICAgICAg
ICAgICAvLyBLZWVwIHRyYWNrIHdoZXRoZXIgdGhlIHBvcnRpb24gd3JpdHRlbiBpcyBjdXJyZW50
bHkgZXZlbiwgaWYgdGhlIHJhZGl4IGlzIG9kZC4KKyAgICAgICAgICAgICAgICBpZiAoZGlnaXQg
JiAxKQorICAgICAgICAgICAgICAgICAgICBpc09kZEluT2RkUmFkaXggPSAhaXNPZGRJbk9kZFJh
ZGl4OworCisgICAgICAgICAgICAgICAgLy8gU2hpZnQgdGhlIGZyYWN0aW9ucyBieSByYWRpeC4K
KyAgICAgICAgICAgICAgICBoYWxmRGVsdGFOZXh0ICo9IHJhZGl4OworICAgICAgICAgICAgICAg
IGhhbGZEZWx0YUxhc3QgKj0gcmFkaXg7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAvLyBUaGlzIGNvZGUgaXMgaWRlbnRpY2FsIHRvIHRoYXQgYWJvdmUsIGV4
Y2VwdCBzaW5jZSBkZWx0YU5leHREb3VibGUgIT0gZGVsdGFMYXN0RG91YmxlCisgICAgICAgICAg
ICAvLyB3ZSBkb24ndCBuZWVkIHRvIHRyYWNrIHRoZXNlIHR3byB2YWx1ZXMgc2VwYXJhdGVseS4K
KyAgICAgICAgICAgIFVpbnQxNldpdGhGcmFjdGlvbiBoYWxmRGVsdGEoZGVsdGFOZXh0RG91Ymxl
LCAxKTsKKworICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgICAgICBpbnQg
ZENvbXBhcmVQb2ludDUgPSBmcmFjdGlvbi5jb21wYXJlUG9pbnQ1KCk7CisgICAgICAgICAgICAg
ICAgaWYgKGRDb21wYXJlUG9pbnQ1ID4gMCB8fCAoIWRDb21wYXJlUG9pbnQ1ICYmIChyYWRpeCAm
IDEgPyBpc09kZEluT2RkUmFkaXggOiBkaWdpdCAmIDEpKSkgeworICAgICAgICAgICAgICAgICAg
ICBpZiAoZnJhY3Rpb24uc3VtR3JlYXRlclRoYW5PbmUoaGFsZkRlbHRhKSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgbmVlZHNSb3VuZGluZ1VwID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBl
bHNlIGlmIChmcmFjdGlvbiA8IGhhbGZEZWx0YSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgICAgICAgICBBU1NFUlQoZW5kT2ZSZXN1bHRTdHJpbmcgPCAoYnVmZmVyICsg
c2l6ZW9mKGJ1ZmZlcikgLSAxKSk7CisgICAgICAgICAgICAgICAgZnJhY3Rpb24gKj0gcmFkaXg7
CisgICAgICAgICAgICAgICAgZGlnaXQgPSBmcmFjdGlvbi5mbG9vckFuZFN1YnRyYWN0KCk7Cisg
ICAgICAgICAgICAgICAgaWYgKGRpZ2l0ICYgMSkKKyAgICAgICAgICAgICAgICAgICAgaXNPZGRJ
bk9kZFJhZGl4ID0gIWlzT2RkSW5PZGRSYWRpeDsKKyAgICAgICAgICAgICAgICAqZW5kT2ZSZXN1
bHRTdHJpbmcrKyA9IHJhZGl4RGlnaXRzW2RpZ2l0XTsKKworICAgICAgICAgICAgICAgIGhhbGZE
ZWx0YSAqPSByYWRpeDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIENo
ZWNrIGlmIHRoZSBmcmFjdGlvbiBuZWVkcyByb3VuZGluZyBvZmYgKGZsYWcgc2V0IGluIHRoZSBs
b29wIHdyaXRpbmcgZGlnaXRzLCBhYm92ZSkuCisgICAgICAgIGlmIChuZWVkc1JvdW5kaW5nVXAp
IHsKKyAgICAgICAgICAgIC8vIFdoaWxzdCB0aGUgbGFzdCBkaWdpdCBpcyB0aGUgbWF4aW11bSBp
biB0aGUgY3VycmVudCByYWRpeCwgcmVtb3ZlIGl0LgorICAgICAgICAgICAgLy8gZS5nLiByb3Vu
ZGluZyB1cCB0aGUgbGFzdCBkaWdpdCBpbiAiMTIuMzk5OSIgaXMgdGhlIHNhbWUgYXMgcm91bmRp
bmcgdXAgdGhlCisgICAgICAgICAgICAvLyBsYXN0IGRpZ2l0IGluICIxMi4zIiAtIGJvdGggcm91
bmQgdXAgdG8gIjEyLjQiLgorICAgICAgICAgICAgd2hpbGUgKGVuZE9mUmVzdWx0U3RyaW5nWy0x
XSA9PSByYWRpeERpZ2l0c1tyYWRpeCAtIDFdKQorICAgICAgICAgICAgICAgIC0tZW5kT2ZSZXN1
bHRTdHJpbmc7CisKKyAgICAgICAgICAgIC8vIFJhZGl4IGRpZ2l0cyBhcmUgc2VxdWVudGlhbCBp
biBhc2NpaS91bmljb2RlLCBleGNlcHQgZm9yICc5JyBhbmQgJ2EnLgorICAgICAgICAgICAgLy8g
RS5nLiB0aGUgZmlyc3QgJ2lmJyBjYXNlIGhhbmRsZXMgcm91bmRpbmcgNjcuODkgdG8gNjcuOGEg
aW4gYmFzZSAxNi4KKyAgICAgICAgICAgIC8vIFRoZSAnZWxzZSBpZicgY2FzZSBoYW5kbGVzIHJv
dW5kaW5nIG9mIGFsbCBvdGhlciBkaWdpdHMuCisgICAgICAgICAgICBpZiAoZW5kT2ZSZXN1bHRT
dHJpbmdbLTFdID09ICc5JykKKyAgICAgICAgICAgICAgICBlbmRPZlJlc3VsdFN0cmluZ1stMV0g
PSAnYSc7CisgICAgICAgICAgICBlbHNlIGlmIChlbmRPZlJlc3VsdFN0cmluZ1stMV0gIT0gJy4n
KQorICAgICAgICAgICAgICAgICsrZW5kT2ZSZXN1bHRTdHJpbmdbLTFdOworICAgICAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gT25lIG90aGVyIHBvc3NpYmlsaXR5IC0gdGhlcmUg
bWF5IGJlIG5vIGRpZ2l0cyB0byByb3VuZCB1cCBpbiB0aGUgZnJhY3Rpb24KKyAgICAgICAgICAg
ICAgICAvLyAob3IgYWxsIG1heSBiZSBiZWVuIHJvdW5kZWQgb2ZmIGFscmVhZHkpLCBpbiB3aGlj
aCBjYXNlIHdlIG1heSBuZWVkIHRvCisgICAgICAgICAgICAgICAgLy8gcm91bmQgaW50byB0aGUg
aW50ZWdlciBwb3J0aW9uIG9mIHRoZSBudW1iZXIuIFJlbW92ZSB0aGUgZGVjaW1hbCBwb2ludC4K
KyAgICAgICAgICAgICAgICAtLWVuZE9mUmVzdWx0U3RyaW5nOworICAgICAgICAgICAgICAgIC8v
IEluIG9yZGVyIHRvIGdldCBoZXJlIHRoZXJlIG11c3QgaGF2ZSBiZWVuIGEgbm9uLXplcm8gZnJh
Y3Rpb24sIGluIHdoaWNoIGNhc2UKKyAgICAgICAgICAgICAgICAvLyB0aGVyZSBtdXN0IGJlIGF0
IGxlYXN0IG9uZSBiaXQgb2YgdGhlIHZhbHVlJ3MgbWFudGlzc2Egbm90IGluIHVzZSBpbiB0aGUK
KyAgICAgICAgICAgICAgICAvLyBpbnRlZ2VyIHBhcnQgb2YgdGhlIG51bWJlci4gQXMgc3VjaCwg
YWRkaW5nIHRvIHRoZSBpbnRlZ2VyIHBhcnQgc2hvdWxkIG5vdAorICAgICAgICAgICAgICAgIC8v
IGJlIGFibGUgdG8gbG9zZSBwcmVjaXNpb24uCisgICAgICAgICAgICAgICAgQVNTRVJUKChpbnRl
Z2VyUGFydCArIDEpIC0gaW50ZWdlclBhcnQgPT0gMSk7CisgICAgICAgICAgICAgICAgKytpbnRl
Z2VyUGFydDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8v
IFdlIG9ubHkgbmVlZCB0byBjaGVjayBmb3IgdHJhaWxpbmcgemVyb3MgaWYgdGhlIHZhbHVlIGRv
ZXMgbm90IGdldCByb3VuZGVkIHVwLgorICAgICAgICAgICAgd2hpbGUgKGVuZE9mUmVzdWx0U3Ry
aW5nWy0xXSA9PSAnMCcpCisgICAgICAgICAgICAgICAgLS1lbmRPZlJlc3VsdFN0cmluZzsKKyAg
ICAgICAgfQorCisgICAgICAgICplbmRPZlJlc3VsdFN0cmluZyA9ICdcMCc7CisgICAgICAgIEFT
U0VSVChlbmRPZlJlc3VsdFN0cmluZyA8IGJ1ZmZlciArIHNpemVvZihidWZmZXIpKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgKmRlY2ltYWxQb2ludCA9ICdcMCc7CisKKyAgICBCaWdJbnRlZ2VyIHVu
aXRzKGludGVnZXJQYXJ0KTsKKworICAgIC8vIEFsd2F5cyBsb29wIGF0IGxlYXN0IG9uY2UsIHRv
IGVtaXQgYXQgbGVhc3QgJzAnLgorICAgIGRvIHsKKyAgICAgICAgQVNTRVJUKGJ1ZmZlciA8IHN0
YXJ0T2ZSZXN1bHRTdHJpbmcpOworCisgICAgICAgIC8vIFJlYWQgYSBzaW5nbGUgZGlnaXQgYW5k
IHdyaXRlIGl0IHRvIHRoZSBmcm9udCBvZiB0aGUgc3RyaW5nLgorICAgICAgICAvLyBEaXZpZGUg
YnkgcmFkaXggdG8gcmVtb3ZlIG9uZSBkaWdpdCBmcm9tIHRoZSB2YWx1ZS4KKyAgICAgICAgZGln
aXQgPSB1bml0cy5kaXZpZGUocmFkaXgpOworICAgICAgICAqLS1zdGFydE9mUmVzdWx0U3RyaW5n
ID0gcmFkaXhEaWdpdHNbZGlnaXRdOworICAgIH0gd2hpbGUgKCEhdW5pdHMpOworCisgICAgLy8g
SWYgdGhlIG51bWJlciBpcyBuZWdhdGl2ZSwgcHJlcGVuZCAnLScuCisgICAgaWYgKGlzTmVnYXRp
dmUpCisgICAgICAgICotLXN0YXJ0T2ZSZXN1bHRTdHJpbmcgPSAnLSc7CisgICAgQVNTRVJUKGJ1
ZmZlciA8PSBzdGFydE9mUmVzdWx0U3RyaW5nKTsKKworICAgIHJldHVybiBzdGFydE9mUmVzdWx0
U3RyaW5nOworfQorCiAvLyB0b0V4cG9uZW50aWFsIGNvbnZlcnRzIGEgbnVtYmVyIHRvIGEgc3Ry
aW5nLCBhbHdheXMgZm9ybWF0dGluZyBhcyBhbiBleHBvZW50aWFsLgogLy8gVGhpcyBtZXRob2Qg
dGFrZXMgYW4gb3B0aW9uYWwgYXJndW1lbnQgc3BlY2lmeWluZyBhIG51bWJlciBvZiAqZGVjaW1h
bCBwbGFjZXMqCiAvLyB0byByb3VuZCB0aGUgc2lnbmlmaWNhbmQgdG8gKG9yLCBwdXQgYW5vdGhl
ciB3YXksIHRoaXMgbWV0aG9kIG9wdGlvbmFsbHkgcm91bmRzCkBAIC0yMDksNyArNzQzLDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90bwogICAgIC8vIENvbnZlcnQg
dG8gZGVjaW1hbCB3aXRoIHJvdW5kaW5nLgogICAgIERlY2ltYWxOdW1iZXIgbnVtYmVyKHgsIFJv
dW5kaW5nU2lnbmlmaWNhbnRGaWd1cmVzLCBzaWduaWZpY2FudEZpZ3VyZXMpOwogICAgIC8vIElm
IG51bWJlciBpcyBpbiB0aGUgcmFuZ2UgMWUtNiA8PSB4IDwgcG93KDEwLCBzaWduaWZpY2FudEZp
Z3VyZXMpIHRoZW4gZm9ybWF0Ci0gICAgLy8gYXMgZGVjaW1hbC4gT3RoZXJ3aXNlLCBmb3JtYXQg
dGhlIG51bWJlciBhcyBhbiBleHBvbmVudGlhbC4gIERlY2ltYWwgZm9ybWF0CisgICAgLy8gYXMg
ZGVjaW1hbC4gT3RoZXJ3aXNlLCBmb3JtYXQgdGhlIG51bWJlciBhcyBhbiBleHBvbmVudGlhbC4g
RGVjaW1hbCBmb3JtYXQKICAgICAvLyBkZW1hbmRzIGEgbWluaW11bSBvZiAoZXhwb25lbnQgKyAx
KSBkaWdpdHMgdG8gcmVwcmVzZW50IGEgbnVtYmVyLCBmb3IgZXhhbXBsZQogICAgIC8vIDEyMzQg
KDEuMjM0ZSszKSByZXF1aXJlcyA0IGRpZ2l0cy4gKFNlZSBFQ01BLTI2MiAxNS43LjQuNy4xMC5j
KQogICAgIE51bWJlclRvU3RyaW5nQnVmZmVyIGJ1ZmZlcjsKQEAgLTIzOCwxNSArNzcyLDEzIEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVyUHJvdG8KICAgICBpZiAocmFkaXgg
PT0gMTApCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYywgdi50
b1N0cmluZyhleGVjKSkpOwogCi0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGRpZ2l0cyA9
ICIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiOwotCiAgICAgLy8gRmFzdCBw
YXRoIGZvciBudW1iZXIgdG8gY2hhcmFjdGVyIGNvbnZlcnNpb24uCiAgICAgaWYgKHJhZGl4ID09
IDM2KSB7CiAgICAgICAgIGlmICh2LmlzSW50MzIoKSkgewogICAgICAgICAgICAgaW50IHggPSB2
LmFzSW50MzIoKTsKICAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oeCkgPCAz
NikgeyAvLyBFeGNsdWRlIG5lZ2F0aXZlcwogICAgICAgICAgICAgICAgIEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShnbG9iYWxEYXRhLT5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVy
U3RyaW5nKGdsb2JhbERhdGEsIGRpZ2l0c1t4XSkpOworICAgICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoZ2xvYmFsRGF0YS0+c21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0
cmluZyhnbG9iYWxEYXRhLCByYWRpeERpZ2l0c1t4XSkpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgfQpAQCAtMjU0LDUzICs3ODYsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBudW1iZXJQcm90bwogICAgIGlmIChyYWRpeCA8IDIgfHwgcmFkaXggPiAzNikKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJ0b1N0
cmluZygpIHJhZGl4IGFyZ3VtZW50IG11c3QgYmUgYmV0d2VlbiAyIGFuZCAzNiIpKTsKIAotICAg
IC8vIElOVF9NQVggcmVzdWx0cyBpbiAxMDI0IGNoYXJhY3RlcnMgbGVmdCBvZiB0aGUgZG90IHdp
dGggcmFkaXggMgotICAgIC8vIGdpdmUgdGhlIHNhbWUgc3BhY2Ugb24gdGhlIHJpZ2h0IHNpZGUu
IHNhZmV0eSBjaGVja3MgYXJlIGluIHBsYWNlCi0gICAgLy8gdW5sZXNzIHNvbWVvbmUgZmluZHMg
YSBwcmVjaXNlIHJ1bGUuCi0gICAgY2hhciBzWzIwNDggKyAzXTsKLSAgICBjb25zdCBjaGFyKiBs
YXN0Q2hhckluU3RyaW5nID0gcyArIHNpemVvZihzKSAtIDE7CiAgICAgZG91YmxlIHggPSB2LnVu
Y2hlY2tlZEdldE51bWJlcigpOwogICAgIGlmICghaXNmaW5pdGUoeCkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYywgVVN0cmluZzo6bnVtYmVyKHgpKSk7CiAK
LSAgICBib29sIGlzTmVnYXRpdmUgPSB4IDwgMC4wOwotICAgIGlmIChpc05lZ2F0aXZlKQotICAg
ICAgICB4ID0gLXg7Ci0KLSAgICBkb3VibGUgaW50ZWdlclBhcnQgPSBmbG9vcih4KTsKLSAgICBj
aGFyKiBkZWNpbWFsUG9pbnQgPSBzICsgc2l6ZW9mKHMpIC8gMjsKLQotICAgIC8vIGNvbnZlcnQg
aW50ZWdlciBwb3J0aW9uCi0gICAgY2hhciogcCA9IGRlY2ltYWxQb2ludDsKLSAgICBkb3VibGUg
ZCA9IGludGVnZXJQYXJ0OwotICAgIGRvIHsKLSAgICAgICAgaW50IHJlbWFpbmRlckRpZ2l0ID0g
c3RhdGljX2Nhc3Q8aW50PihmbW9kKGQsIHJhZGl4KSk7Ci0gICAgICAgICotLXAgPSBkaWdpdHNb
cmVtYWluZGVyRGlnaXRdOwotICAgICAgICBkIC89IHJhZGl4OwotICAgIH0gd2hpbGUgKChkIDw9
IC0xLjAgfHwgZCA+PSAxLjApICYmIHMgPCBwKTsKLQotICAgIGlmIChpc05lZ2F0aXZlKQotICAg
ICAgICAqLS1wID0gJy0nOwotICAgIGNoYXIqIHN0YXJ0T2ZSZXN1bHRTdHJpbmcgPSBwOwotICAg
IEFTU0VSVChzIDw9IHN0YXJ0T2ZSZXN1bHRTdHJpbmcpOwotCi0gICAgZCA9IHggLSBpbnRlZ2Vy
UGFydDsKLSAgICBwID0gZGVjaW1hbFBvaW50OwotICAgIGNvbnN0IGRvdWJsZSBlcHNpbG9uID0g
MC4wMDE7IC8vIFRPRE86IGd1ZXNzZWQuIGJhc2Ugb24gcmFkaXggPwotICAgIGJvb2wgaGFzRnJh
Y3Rpb25hbFBhcnQgPSAoZCA8IC1lcHNpbG9uIHx8IGQgPiBlcHNpbG9uKTsKLSAgICBpZiAoaGFz
RnJhY3Rpb25hbFBhcnQpIHsKLSAgICAgICAgKnArKyA9ICcuJzsKLSAgICAgICAgZG8gewotICAg
ICAgICAgICAgZCAqPSByYWRpeDsKLSAgICAgICAgICAgIGNvbnN0IGludCBkaWdpdCA9IHN0YXRp
Y19jYXN0PGludD4oZCk7Ci0gICAgICAgICAgICAqcCsrID0gZGlnaXRzW2RpZ2l0XTsKLSAgICAg
ICAgICAgIGQgLT0gZGlnaXQ7Ci0gICAgICAgIH0gd2hpbGUgKChkIDwgLWVwc2lsb24gfHwgZCA+
IGVwc2lsb24pICYmIHAgPCBsYXN0Q2hhckluU3RyaW5nKTsKLSAgICB9Ci0gICAgKnAgPSAnXDAn
OwotICAgIEFTU0VSVChwIDwgcyArIHNpemVvZihzKSk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzU3RyaW5nKGV4ZWMsIHN0YXJ0T2ZSZXN1bHRTdHJpbmcpKTsKKyAgICBSYWRpeEJ1
ZmZlciBzOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYywgdG9TdHJp
bmdXaXRoUmFkaXgocywgeCwgcmFkaXgpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbnVtYmVyUHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcoRXhlY1N0YXRlKiBleGVjKQpJbmRl
eDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkocmV2aXNpb24gOTAyNDgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0wNy0wMSAgR2F2aW4gQmFycmFjbG91Z2ggIDxi
YXJyYWNsb3VnaEBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
NjUyCisgICAgICAgIEZpcmVmb3ggYW5kIEphdmFTY3JpcHRDb3JlIGRpZmZlciBpbiBOdW1iZXIu
dG9TdHJpbmcoaW50ZWdlcikKKworICAgICAgICBPdXIgYXJiaXRyYXJ5IHJhZGl4ICgyLi4zNikg
dG9TdHJpbmcgY29udmVyc2lvbiBpcyBpbmFjY3VyYXRlLgorICAgICAgICBUaGlzIGlzIHBhcnRs
eSBiZWNhdXNlIGl0IHVzZXMgZG91YmxlcyB0byBwZXJmb3JtIG1hdGggdGhhdCByZXF1aXJlcwor
ICAgICAgICBoaWdoZXIgYWNjdXJhY3ksIGFuZCBwYXJ0bHkgYmVjYXN1ZSBpdCBkb2VzIG5vdCBh
dHRlbXB0IHRvIGNvcnJlY3RseQorICAgICAgICBkZXRlY3Qgd2hlcmUgdG8gdGVybWluYXRlLCBp
bnN0ZWFkIHJlbHlpbmcgb24gYSBzaW1wbGUgJ2Vwc2lsb24nLgorCisgICAgICAgICogZmFzdC9q
cy9udW1iZXItdG9TdHJpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAgICAgLSBVcGRhdGUgZXhw
ZWN0ZWQgcmVzdWx0cyBmcm9tIEZBSUwgdG8gUEFTUy4KKwogMjAxMS0wNy0wMSAgR2F2aW4gQmFy
cmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
U2FtIFdlaW5pZy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvbnVtYmVyLXRvU3RyaW5nLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL251bWJlci10b1N0
cmluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDkwMjAyKQorKysgTGF5b3V0VGVzdHMvZmFzdC9q
cy9udW1iZXItdG9TdHJpbmctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMiw0MSAr
MTIsNDEgQEAgUEFTUyAoMTIzNC41NjcpLnRvU3RyaW5nKDEpIHRocmV3IGV4Y2VwdAogUEFTUyAo
MTIzNC41NjcpLnRvU3RyaW5nKHRydWUpIHRocmV3IGV4Y2VwdGlvbiBSYW5nZUVycm9yOiB0b1N0
cmluZygpIHJhZGl4IGFyZ3VtZW50IG11c3QgYmUgYmV0d2VlbiAyIGFuZCAzNi4KIFBBU1MgKDEy
MzQuNTY3KS50b1N0cmluZygnMScpIHRocmV3IGV4Y2VwdGlvbiBSYW5nZUVycm9yOiB0b1N0cmlu
ZygpIHJhZGl4IGFyZ3VtZW50IG11c3QgYmUgYmV0d2VlbiAyIGFuZCAzNi4KIFBBU1MgKDEyMzQu
NTY3KS50b1N0cmluZygyKSBpcyAiMTAwMTEwMTAwMTAuMTAwMTAwMDEwMDEwMDExMDExMTAxMDAx
MDExMTEwMDAxMTAxMDEwMSIKLUZBSUwgKDEyMzQuNTY3KS50b1N0cmluZygzKSBzaG91bGQgYmUg
MTIwMDIwMS4xMjAwMjIxMDAwMjEwMDEwMjEwMjEwMDIyMDIuIFdhcyAxMjAwMjAxLjEyMDAyMjEw
MDAyMTAwMTAyMTAyMTAwMjIwMTIwMDExMDIyMjIwMDEyMTEwMjEyMTExMjIxMDIxMjAxMDAwMTAy
MTAyMDAyMDAwMTAwMjEyMjIwMTExMDAwMjIxMDIxMTExMTEyMjAwMDAxMjAxMjEwMjAyMDIwMjIy
MjIwMTIyMjEwMDIwMjAyMTEwMTIyMjExMjIxMTIwMDAxMDAwMTExMDEwMDEwMDEwMDIyMjIwMjIw
MTIwMjAwMTAyMjAwMjIxMjIwMjIxMTAyMDIwMDIwMDIyMDIyMjIyMDIyMTIwMTAwMjEyMDEyMTIw
MTIyMjAwMjExMjExMTEwMDAwMDAyMTEyMDAyMDAyMjIwMDAxMTIwMTIxMTIyMDIxMTExMDIxMDIy
MjExMjAwMDAyMTIxMTEyMDIyMDEwMjIxMTEwMjExMDAyMjExMjAwMTAwMTEyMjAwMjAxMDAyMjAw
MjEyMjExMTAwMDIyMTIxMTEyMDAwMDIyMTIyMjExMDIyMjEwMDIwMjAyMjAwMDExMTAxMjAwMjEy
MTAyMTEwMTAyMjEyMTEwMDEyMjAwMTExMjEyMTAxMTAwMDAxMDExMjAxMDIwMDAyMDIwMTEwMjIw
MDIyMjAyMjIxMDEwMTAyMjEyMTEwMDAxMjAwMTAwMjIxMDIwMDIyMTAwMjEyMjEwMDIxMjIyMTEw
MjExMjAyMDExMTExMDEyMDIxMTAxMDAwMDExMjExMTExMjAxMjIxMjAxMjIxMTAyMDEyMDEyMjIw
MjAyMjEwMTEwMDIxMjEwMjIyMDAyMDEyMTAxMjIwMDAwMjIwMjAyMDAwMDEwMDAwMDAyMjEyMjEx
MTIyMDAyMjAxMDAyMjIxMjAyMTAwMjAwMDEyMDEyMDIxMjEwMTAyMDAwMTEyMTAwMjAwMDEyMTAy
MTAxMjEyMDIwMjIxMDIxMDExMTAxMjIwMjAxMDAwMjAwMjEyMjIxMDIwMTIwMTIyMjIyMTIxMjEx
MTExMjExMjExMjExMDEyMTIxMjIwMjEwMDEwMTAyMjIyMDEyMDAyMjEyMDAwMTEyMjAxMTExMjEx
MTExMTExMDIwMjIyMjIxMTAwMjIyMjIxMTIyMDAwMjAwMjExMDAyMDIyMTAwMjAwMTIyMTIwMDEw
MDExMDIxMTExMTEyMjEyMDEwMjAyMjIyMDEwMDAyMTAyMjAxMjEwMDAxMDAyMjAxMjExMTEyMjIx
MjEwMTExMTAxMDExMDIwMDEwMDIwMjIwMjEwMTEyMDEyMDAxMDEyMDAwMDEyMTAyMTAxMjEwMDAw
MjAxMjExMTAxMDIxMTAyMTAyMDEwMTAwMjExMjIwMTIyMDExMTExMTEyMDExMDIuCitQQVNTICgx
MjM0LjU2NykudG9TdHJpbmcoMykgaXMgIjEyMDAyMDEuMTIwMDIyMTAwMDIxMDAxMDIxMDIxMDAy
MjAyIgogUEFTUyAoMTIzNC41NjcpLnRvU3RyaW5nKDQpIGlzICIxMDMxMDIuMjEwMTAyMTIzMjIx
MTMyMDMxMTEiCiBQQVNTICgxMjM0LjU2NykudG9TdHJpbmcoNC45KSBpcyAiMTAzMTAyLjIxMDEw
MjEyMzIyMTEzMjAzMTExIgotRkFJTCAoMTIzNC41NjcpLnRvU3RyaW5nKDUpIHNob3VsZCBiZSAx
NDQxNC4yNDA0MTQxNDE0MTQxNDE0MTQuIFdhcyAxNDQxNC4yNDA0MTQxNDE0MTQxNDE0MTQyMDAx
MzMwMTE0NDI0MzQwMzEwNDAxMjQzMzAyNDQwMjMxMjQyMDAwMTEzMDQzMTIzMTEzMjQxMDAzMjAz
MTAzMjIyMzIzMzQ0MDEyNDE0NDQwMjMzMDEzMDE0MjQzMTE0MDI0MTAzNDM0NDA0NDAxNDQyMzQx
MjEyMjEwMDQwNDIzMTMyMTQ0MzMyMjMzMTIzNDAzNDQ0MjE0MzMzMDM0MDMyMTIwMTIyMzQyMTAx
MzA0NDQ0MTAwMjEzMTMwMjIxMzEyMTI0MzAyMzEuCi1GQUlMICgxMjM0LjU2NykudG9TdHJpbmco
Nikgc2hvdWxkIGJlIDU0MTQuMzIyMjQ1NTQxMzQ0MzAyMzMuIFdhcyA1NDE0LjMyMjI0NTU0MTM0
NDMwMjMzMjMzNTU0NDE0MzI0MjI1MTU1NDE1MTMuCi1GQUlMICgxMjM0LjU2NykudG9TdHJpbmco
Nykgc2hvdWxkIGJlIDM0MTIuMzY1MzIzNjYxMTExNjUzLiBXYXMgMzQxMi4zNjUzMjM2NjExMTE2
NTI1MDAzMDA2MzIyMDAxMTA2MjYyNTI2NDIzNTAyMjM2NjAzMTM1NTAwNjQyMzU2MjQwMDM1MzM1
MTAzMzUxNDYwNDQ0MzY2MTIzMzEyNjMwNjM1NDQ2NjA2NjI0MDY2MjUyMDAzMzMxMjExMDIyMjAw
NDYxMjU0MjIxNjM2NDMwMDUyNTUzNDMzMzIyMTMwNDE1MDQ0NDIwMzE0MTIxMDUwMDE2MjMwMjUx
NjIxMDQzNDMxNTE1MjIzNDM0MDMyNjYwMzYzNTQ2MTUwMTMzNjI0MjExNjIwMzMxNDE1MzM1NDY1
MTEyNjUzMjEwNTM2NTQxNTExNjUwMDM0MDUwMTUwNTUzNDE0NDE1NjY1MjAzMDU1NDAxMjQ2NTYy
NTU2NTE2MTMzMjY0NTMzNDIyMzY1MTE0NTEwNDQyNTU1NDUyNjMwMjAyMzAzNDY1NDYwMDA2NjU2
NDUxMjEyMzAxMjUyNTU0NjQwNDIxNjExMjAyMDM2NDEyMDYxMDE0NDAxMjQzNDExNjE2MjIwMTI0
MzMyNTAzNjE2NDA0MDIxNTEyMDY2NTQxNTIwMTMyMDIyMTY2MjMzMzUyNjIwNDM2MDA2NjAxNjU0
NjE1MzUxMTQyNjA1MjI1MDUxMzMxNDU2NjU1MjY1NjQ0MTA1NDY0NDQwNjIwNjEyMTMyMDA0MTAy
NjMxNjExNDAxNDExNTI1MzYzMDAxNjQ0NjQyMzYwNTQwNTE0MjI1NDE2NTIxNDQwMzI2MjU1MjI1
MTYyNjAzMDUzMzMxMzAzMzE2NTEwNDYxMTA0NTAyNDU1NTU0MTYwNjQ1MjAzMzQxNjMxMzU2NTIz
NDMwNjUxNjUwMTU2NDIxMjE0NDY0NDM0MTI0MzIzMzY0MzEyMjA1MTE1MDE1NTQzNDUyMjMwMjIy
NDU2NjYyMzEzNjQ1MjQxNjMyMjIyMDMyMjQzMTAxMzMzNTYwNTI0MzUzMTUzNTYyMTQxMzY1MjY2
NTEzMzY1MjEzMDA2MjQ1MTQ2NjIzNTMwMjY0MzQ0NjQxNTQyNTA1NTQ1NDExMjAxNDMzNTQzMDMw
MzIxMTUwMDEzNjY2NjIyNjAxMjQ1NDExMTAwNjE1MTM0NjQzNjM0MTAzNDM1MjYyNjUyNjA0NDA2
MzU2MjU0MzM0MTE2MjIwMDMyMzQ2MTAyMjA1NDMxMjQxNTA2MjIyNDYzNDE1NTEzMzYyNjU1NDE2
MjQzMTU0NDA1NTQxMjIwMTYyNDYxNDM1NjAxNDMxMjYwNDEyMjUwMDMwMS4KK1BBU1MgKDEyMzQu
NTY3KS50b1N0cmluZyg1KSBpcyAiMTQ0MTQuMjQwNDE0MTQxNDE0MTQxNDE0IgorUEFTUyAoMTIz
NC41NjcpLnRvU3RyaW5nKDYpIGlzICI1NDE0LjMyMjI0NTU0MTM0NDMwMjMzIgorUEFTUyAoMTIz
NC41NjcpLnRvU3RyaW5nKDcpIGlzICIzNDEyLjM2NTMyMzY2MTExMTY1MyIKIFBBU1MgKDEyMzQu
NTY3KS50b1N0cmluZyg4KSBpcyAiMjMyMi40NDIyMzM1MTM2MTUyNCIKLUZBSUwgKDEyMzQuNTY3
KS50b1N0cmluZyg5KSBzaG91bGQgYmUgMTYyMS41MDgzMDcwMzcyMzI2NS4gV2FzIDE2MjEuNTA4
MzA3MDM3MjMyNjUwNDI4NjE3Mzc3NDgzNzYzMDM3MjA2MDMyNTgxNDAyNzI0NDQ4MDA1MTcyMjIy
ODgxODcwNjY3MzU4NDg0NjAzMDQzMzEwMzI4NjgxNjYxMjYyNzgyNzM2NjIwODI4ODI3NjMyNTE3
NjU4MDc1NDQwMDA3NTA2MjgwMTUxNzU2NzQzNzI4NDYwMjU0NTI2Mzg0MzczMjc1MDMxNTYyMTA4
MDc4NDMwODU0NTAwODU4NDI4MzIyMjYwNDM1MDc3MjQxMjc3MzE4MDQ1NTM0MDAzNDYzNjA2NjQy
NjI4MjgzMzM4NTQwMTYxMDgzNjI3MDc4MzI1ODQyNDY2NDQzNTI0MTAwNDc0NDY1NzY1NzM2NTE4
NjY4MzQwNzcyODA2NTM1NjAyNjY2MDEwMDA4NTc0ODA4MTA4NzY3MDYwNTE2NzcxMjAxNTMyMDE3
MjM1NTIyNzIzNDM1NjYzMDYyNTgzNjUxODg3Nzc0NDc1NDczNTU1NjcwMzM4ODE2Mjc2MDQ4MTQ1
NDQ0NDIyODg0MDg4NzU2MDYyNDA2ODMyMDU3NjEwNDI0NDQ4NTEyMjg2MzA3MjY1MzAzMjY1NDQ4
NzcxNDMzNDIwMzIyNjcxNTE2MTE2MDE3MjM1MzAyMTc0MTI0MjM2MzMyNDgxODE0NDQ2NDIwMjgx
MjUxNjI4MDM4MTc3NTUwNzYxMzcwMjU4NTc4ODU4MzQyNDg4MTEyNTgwNzE4NTg4ODUzODY3NjIx
MDgzMTQ4NjE0NDU2MjM3NTg2NDI2MTM0NTE0NzM4MzIyMjMyMjI3MjA1NTYzNDU0NzM2MzMwNjY4
MzQwODM2NTU3Mzg2MDQyNTIzNDM3MzU0ODg3MzY4MTYzODU0ODExMDI0Njg2ODYwNDEwMDc0Njg4
MzE2NTcyMTI0NDY3NTc1MTA0ODAxMjEyNjc4MjE1Nzg3ODE1NDM1MzcxMzM3MTc1ODQ2MjQzMjAw
MzE4MzU4MjUyNjAxMTU4Njg0NDM3ODA1MzIwMDgyNzMzMTAwODYyNDUxNjAxMDU1NDQ1NjcxMjgw
NzU2MzEwODM0NzA0NjY1NzY3NDY2NTY1MTEzMTQyMjE0NDU1MDI1NjE2ODA0NzAxNDIxNTY3NzAz
MDE0MTQ0MzU4NzAwODEwNTYxMDM3NTM0MDUzMzY1ODM4NDM4NTAwMzI2NjA0NzAxNDA2NjYzMjc4
NDUxMjQ0MDMwMDg2NTYxNjYwMjc2NTgyMDE2NDI1ODg2NzUwNTgwMjY2NzE2MzI0MzA4NTc2NzMw
MTQ1MzAwNjI3NDI2NjU2MDgzODA0MjYxMzY2NjY1MzAyMTczNzQxMjE3NjU1Mjg3NDI1OC4KK1BB
U1MgKDEyMzQuNTY3KS50b1N0cmluZyg5KSBpcyAiMTYyMS41MDgzMDcwMzcyMzI2NSIKIFBBU1Mg
KDEyMzQuNTY3KS50b1N0cmluZygxMCkgaXMgIjEyMzQuNTY3IgotRkFJTCAoMTIzNC41NjcpLnRv
U3RyaW5nKDExKSBzaG91bGQgYmUgYTIyLjYyNjc0YTBhNTg4NS4gV2FzIGEyMi42MjY3NGEwYTU4
ODQ5MTQ1Njg0YTQ2MjUwNzM4NDIxOTc4Nzg3ODk1NDczNzY4OTk4OWEzNDc2NDc2ODA4NzYwOTVh
MjM0NTg2MDg4NTA0NjAzMTI4N2E5YTE2OTRhMzk3MTMxOTM0MTQyMDI2NzQ1MTY2YTcwNDM0NDc3
M2E3MzcwMDgwMjY5NDY4MzEyNTM0Mzk4ODk0MTc1NTU0NmE4MTQ4NDk1OTRhMzY0MDI5NjA3YWEw
NzcxYTI0NDcwNjg5MzBhYTU1Nzc1OTk2ODk3MjU3YTM4NTU3MTYzNDAyODZhOTk2OTM5NjY5ODY4
NDI1MDU2YTQyOTQ0YTQ1NDM3MjUyMDIwOTk2MDUzNDMzMTYwNDU4Mzg2NTkyMDc1NjJhMDA1MTlh
NDAyMzYyMmE4MjYwNjUzOWE5NDczNjY0NTMxNzA1NmFhOTQ4MjQ2OGE5OTY5OTRhMzQ3NDcxMTUz
YTcxYTg2ODRhODgxNzg2NjM0OTI5NDEwMjMxNTU0MTMzMzk2NDY2ODEwYTEzMTAxMzc5OTlhYTk5
MTEwNzY4MjEwOTlhMjAyNDc1NDEyMTM3MTUxMTgxMjMwMTk1NzQ2MzY0NDEyMDk0NTI0MTQ5MTRh
Njk2YTI5Njk4NDkzMjg5NDQ1MzBhMzQ4NDQ1MzM5MjI5NjUzMDY4NDhhOTVhMjE4OTQ1NDMxNjE5
Mjc4NzMzODA3MjI0MTExODAzMjEyMDc1NzgwOGEyNTg4YTkwMGE3NDE5MzkxMzI0MDYxYTU0NGFh
MWE3NGE4YTkzNzM2NjkzNjI5MjdhNDAyMGE2MjhhNzM0MWE5MjA1NTkzODJhNDczMjkxNDM5Mzk0
YTUyNDQ3NDU1Mjc4MTkxYTAwNzQ5NDQ5OTEyMjM0NDZhMDk1Mjk4NTc5MzhhODk0NDE4MTg4NDcx
NGEzNzU5MjQxNjMwOTY1MjU5NjA2MGExNTk1MDE2NzI1MzQxNDM3MDI4NzU5MzcyOTM4NjU1MDM4
MDczMGFhMjEwNTlhMDQxMzFhMjc0OTM2YTg0MzM0ODkxOTMyOTYxMjEzMzI3MTk5ODM3OGE1NzUy
OTc5NDI1OWE1NjQ0YTUxOTE1ODEyYWExMDIzMjA3MjE0MjI1MTE1MzM0MzYwNjQwMjZhMjY4YTQ2
Nzc0MDEzMTA4NzA2MjAzODY5MjVhNjIyNDU0MGE3OGE4MDMyOTQ1MDY1MDE3NDcwNzg1MDg0Nzkz
MjA3NzYzYTNhMDJhOTQ0OTEyNzQ0MzY1OTg1MWE5ODI5NzkyMDMwMDM1MzQwMjA4MTM0NDAyOTM5
OWE5MTIxODUyNTExMTA1NzE2YTkzMjUwMTMyMjIwNzQ1NTFhNDY2OTczOTk5LgotRkFJTCAoMTIz
NC41NjcpLnRvU3RyaW5nKDEyKSBzaG91bGQgYmUgODZhLjY5NzkzOGIxNzcwMS4gV2FzIDg2YS42
OTc5MzhiMTc3MDEyNzI5MGI5OS4KLUZBSUwgKDEyMzQuNTY3KS50b1N0cmluZygxMykgc2hvdWxk
IGJlIDczYy43NGE5MTE5MWE2NS4gV2FzIDczYy43NGE5MTE5MWE2NGNiODY4NTBiYzA4YTY5NDM0
MGM3NjU5Nzk2MzRhMDEwNzA2OTkxYzA4OGE2MTAxOGIyOWExNmE3NDA5Mzc5NTY0MDc5Mzg0NmE3
NTIwNTg3ODE2YmE1NjQwNWI3YTg3Mjg2OWIzOTVjMzM2Y2E1MTk0NzRiYWExNzUzOTE2OTE3M2E4
ODBiNDljMTc4MDc0YmE1NTFhNTc4MWExMTUxNTI3OTMzMjQyOTFiOTI2MGI2MDMzMzU3Mzk1NTcz
Nzg0NWIwM2EyMzIxYTY1Mjc3YTc4MDkyM2IyNjI4OTg1OTc5NzNiYzRiNjY5NzA1NjgwYTBiMWI4
OGIzNjZiNjM4NmM5NjIwODk3OWMxNGE5NjMyYzUxNjMyNjg4MzUyMjg0MDE2NWIzOGM4YjQxNWI3
YTMzOWFiYzZjYTcwNTFiMGFjNzAyNzcyNDRhMDU0NzdiOGEwYTA5Y2FiMDcyYTI3YjkyMDM4OTQ3
N2I2NTYxNjgzMTExNjUxNDQxOWM0NDUxMjk2N2E5MmIzOWNhNzNhYzAxYzQ2MWI2NzM1Y2EzMWJj
YzE3YWJhN2E3NjQxMmE3YTU5OWE4YzIxN2M2YTc0YTY3YWE2YzQ2NjQ0MzIwNjU3MzJjYWE3YzI0
YTE4NTYxNzA3NDg2NDdjMmIwNDljMTljNTcyMzIzYzAzMzAxYzI4M2I2OWNiNDZiMDlhMDQ1YjQ0
NGE0YzdjODI5MDE2NTY1ODMyNjc2OTczODliMzE4YTczYjE3MWExODQwNjMyNGE3OGI1YzQ3OGE5
YzY3Yzk5Yzg3N2IxMDc0NDhjYWM2NTE5NDU1NzBhODMyMjBiYWE0YTMwNDgxNTcxODk4NDVjYjY2
YjczNjFjMTI5Y2MzMDE2YzUyYzRiODU4Y2IwODc0Y2ExMjJiOGI3YmE5MzMzYWE5NDYzOTFhMjRi
OGM4Njk1ODk2ODc3M2JjMTgyNzgwMjJiMWJhNzZiMjQ3MjdjMmNjYTU1NDQyNjk3NTQ5MzkyYTE1
MjkyNzEzOTIwOGMxMjc0NWJjMjZhNWMxNzQzMjMzMjk5MGEzMjY3OTE1YjA2MzMxMzc0YTdhODRi
OTQ2OWMwMjA4MzU4MjkwMzM3Yzk5Y2IzMjNhOTA3NmEyODRjNWIzMThiYzgyNjk4OWM4Yjg2NjNi
YzI0OWE5YzY4NzM5NTUwNDk1ODgyNWMxYTU0MWIwODcxMGJiNjQ3Mjg4Y2E0YzExNzljYzJhYzg0
NzYxMTIzYTdiMjc1OTEwY2I3YTQzYzE4YzI5M2IxYzc1NGIwMWNiOWEyMTE3NjczNTZhNjI2ODg3
OTgwYjM4NDgyMmMxNGE1NzQ5NDMzMTk0NmE1LgotRkFJTCAoMTIzNC41NjcpLnRvU3RyaW5nKDE0
KSBzaG91bGQgYmUgNjQyLjdkMWJjMmNhYTc1Ny4gV2FzIDY0Mi43ZDFiYzJjYWE3NTczNWNjYjQ1
OGEwZDBiNmJiNjEzMWI5MTE0NTM3LgotRkFJTCAoMTIzNC41NjcpLnRvU3RyaW5nKDE1KSBzaG91
bGQgYmUgNTc0Ljg3ODk1OTU5NTk2LiBXYXMgNTc0Ljg3ODk1OTU5NTk1YTRiYmFjODBiYzFlOTBl
ZWI1YmM4YzE4YjNkYzc3YTU5NjIxMTZiMTU5ZDY2YmJiN2JkOTVhNGM3OTg0YzYzMzIyNDM0NjE1
ZTgwMjM1YjhhNDgyNjY5YTg1ZTk3MjE4YzQxNTE4ZTAwZWI4OThhYmE0NjM1OTNkM2I0ZDAwZTdk
YzFkMDM0M2NkMjcxNjEwOTZkZDgxMDU5MzY2OWQxNTYxOTgyYmNjMzVjZGEyZTU0YzI4ZGU3NzU5
YzE1ODZhZGM4NjcyMDliMDM0MjkzMDM5ZTAzYmRjZTI5Y2I2YThiZTdkNjVlMDk4NDQwOTQ5ODlh
MmQ1MzY2M2QxMjIzMzBiYzk0MDQ4ZDFiZDY3NzIyYTg2ZGIwNjhhMDY3OTAyNWQ3OGRiOTMxMjI3
MmM4YjkxNjcxNTk2ZDc1ZDgwYzUzMzMxZWIwMTg1NzljODMxMTVjMmQwMDU4MWRiOTEwZThlNGNi
NDRjNGM5NThjOGQ4NmRkNTlkNTU0MzliN2M4NDlkYTMyMTMwZGVkNTNhNjk3YTI2YThkY2VhNmI4
ZGRjMmFkMDQ3NjI0YmJhOTIyOTA5ZDhjMmQ0ODQ2MGJjMzNhMmU4MTZkOWVjZGUxM2Q2ZDI0ZWU2
NTg5YjBhZDlkNjk2Y2MyODc1M2I4MDIwYWQyMWU4NmFjNDM2MzkxNGFkYzRhODcxMzlhYjE4ODMx
MzQzOWNkMmVhODYyMmI0YmQ1NDAzM2U4YTRhNmU2MWE4MGM4MjI5ZGMzNzM5OWQ3Mzk3OGQxZDM0
NDNiMzFjOTg3ZTE1ODkwNDIxNGNjZTc4NWQ4NGUyMmUyYTYwNjIzYjE0MTI5MmU2NzU3NWIxZDFh
MDUwZGJjY2QwMmM0NzMyNjM4ZDI0YjRjMjI2ZTlkY2MxYTM4N2NkN2QyYTFlNzk3ZTA3NTdhOWRl
MTA4ODQ2NzE5YWFiMjk5OWI1ODY2OWIyMWFiMDZjZWUzYWM2ZTI5OTkwNzgxNTA1OTU4NTk1YTRj
ZTBiZTA3MTBjNWIyMTkwMzY1YTJkYmJiYzVlZWE0OTkzNjY1ZTFkMjUyNjZkZTM3YzE5NjA1NDg4
YTJiMWNlMDU0MzYxMDk3ZTYzYzA4ZWJiYjdkZTcwOTI0NzZkZGIwYjUyYzg5NDcwYTk1N2I5OTli
MzRiMmJjYjczMDA1M2U4OWVkNDg3ODlkOWEyMDQwNWIzNjBkMDg0YjM4MDU2NTk5MDBiZDhiODMx
ODUyOTI5YmI1NDJlNDVlMzgzNmMyNmM0MjNlODQyMTcyNDYxOWMyYTk3MjVlNDM3Yzk2YTgzNDg0
OTYxOTg1ZGRjMmQ0ZDhhMDYwZGFlMTE3ZDcxMGMuCitQQVNTICgxMjM0LjU2NykudG9TdHJpbmco
MTEpIGlzICJhMjIuNjI2NzRhMGE1ODg1IgorUEFTUyAoMTIzNC41NjcpLnRvU3RyaW5nKDEyKSBp
cyAiODZhLjY5NzkzOGIxNzcwMSIKK1BBU1MgKDEyMzQuNTY3KS50b1N0cmluZygxMykgaXMgIjcz
Yy43NGE5MTE5MWE2NSIKK1BBU1MgKDEyMzQuNTY3KS50b1N0cmluZygxNCkgaXMgIjY0Mi43ZDFi
YzJjYWE3NTciCitQQVNTICgxMjM0LjU2NykudG9TdHJpbmcoMTUpIGlzICI1NzQuODc4OTU5NTk1
OTYiCiBQQVNTICgxMjM0LjU2NykudG9TdHJpbmcoMTYpIGlzICI0ZDIuOTEyNmU5NzhkNSIKLUZB
SUwgKDEyMzQuNTY3KS50b1N0cmluZygxNykgc2hvdWxkIGJlIDQ0YS45YWViNmZhYTBkYS4gV2Fz
IDQ0YS45YWViNmZhYTBkYTJjNWU4ODc4OGQwZjUyZDJlYmMwMjNhZTU0OTQ5MjZkZTU1MDcyZWU0
MTE0ZmIzOGdhNTI1OGRkMjRhMWdhNDI1MGJiMzIyNDdnNTgyMTE0ZzkyZ2M5OTQ2MmNiYjVkODU4
NGEyMWQwOWVhYWRnMDBkYzQwZWM5MzhnZ2RiOWUyMDkxZ2YyYWM0ODI0NDJmYmNiYzI4Y2RlODJh
YTZlNzllNmE1N2FmMzhlNTFmZzE3NjUyNmRhYmM2NTQ5OTAwYzg5NzYxNDBiYjRmNWNkMGQ5YzY0
MmJkYmI3ZTcxMzVkMGVhMzVmZWI1ODA1ZTdiYTk3OTc1YTFmMmZhNDVmNjJlNzc0MzA3Zzc2MGVj
MjMwZTQzMDY0ZWRnNTE3Z2Y3YzljOTNkMjRjNDNiZzI0MDk0NDA2YjBiNDc5MmNnNTRhMzhmMmIz
MDY1YWdnMzkwZWZlMzNlNzY1NWYwMjg4ZDMwZWM2YjZjYjk5NDk2MTYyNWQxOGc2MzZiZjFnMzQ0
M2MyYTlnNWRjMjIyYzU0NmM0MTdhNTBiM2U3NGRmOTRkMjE3YmdlZWU4ZmFkMWNmNWMyNTE3Zzll
N2JhYmVjZDM4YjcwOTJmZDljZzUxOWcwMjlnZjcwMWE4MjllOThnMzc0MDJiYzQ5NmRjM2cwZjE0
NzM1NjRiMzNhZWVkZTVjYzcwZ2U1ODc3OGRkYWQ3MzBmZWVmNDA5NDQ5YWNnZDJhMmJjYzE5MTdi
Nzk3Yzk0ZWM1N2ViNGc4ODA1ZTk3MDhjNWc1N2E3ODYyNjAyOWI1YzI0N2FlMTJnZjhlN2M1NGJk
ODAyNGNmZ2M2M2ExZjcyM2QyOTVjZGYzZ2RmODNnZzE3NzM2YTg0NjE0ZzFmNjhkZGQxZTQ0OTRm
MjdkNjFiYTU5MDFmMjM4NGQ2ZGVkYzc4NzViMWJhYmI4ZzA5NTcwZmEzZmQzMmYxOTdkNTlmZzQ5
OTcyOTI2MWc4ZmdiZzc1M2VhZDRkYWZjZmYxZmE4ZWY3MTlhNjk0ZGI5MmE4MGY1MzVjNjEyOGVn
NTY1OWE2OGVmZGdnZDliMzJlYzY5NzBlN2NiNDFmYmc5OWFmMDJkMzhjMWVnYjgyODQwN2VlZ2Nj
NGNmOTg1Yzc3Z2dkZjVnYzViNTRhOGc3YmRkNGFnMjMxOGdkZjM1MTJlYTdhNDFkMWJlMmM2NjVn
YmM1NjE5MzQyYjkyMDBmMGdkYTljZDJjOTU3YWY2ZDI5Z2VnZWU3MjI4YjdkYmFlN2Y2Nzg4YzRl
ZzQ1NTZhOWNhMmUxM2U3NTU4OGczNjliYTEyNzJhMWI0LgotRkFJTCAoMTIzNC41NjcpLnRvU3Ry
aW5nKDE4KSBzaG91bGQgYmUgM2VhLmEzY2Q3MTAyYWMuIFdhcyAzZWEuYTNjZDcxMDJhYmYwM2Rk
M2ZjZjA1MzU2MzhkOWQzMTNlaGE3NWI0OS4KLUZBSUwgKDEyMzQuNTY3KS50b1N0cmluZygxOSkg
c2hvdWxkIGJlIDM3aS5hZWQxMDJhMDRkLiBXYXMgMzdpLmFlZDEwMmEwNGQ0MDc4MmViaDFlMmdj
N2k1NThjMzBmYmUyMzBkaGE1NzAxOWUzYTMwZTQzNDIyMGY3MTQyYWIzM2Y2ZTRoM2VjOWhhNTdi
NDc0YTUyYTlkZGhlYjE1MTU5NGU3NjYxNDE4aWYxZ2djMjRoMjZlNjU3NDc2OWcxNDhjMjc4ZWZj
NjNkZWQxMzYxNWJmNmIxaWdkZGlnMWk2ZDBmZmU2NGE5ZmFhZDViNGdmMjQwY2QwNzRiNWhjM2lk
YWZlYzFiZTc3ZzRjYjA3NTVnOGEwZDY1MmNlZzllNzQ5YmRhaDU2YTJoNWQzYjk0Yzc0ZmYwYjc4
YWlkZ2FiNjkzaWYxMGFiOGgwNDY0MjUxMzdhZTUyNTBmMDRjMDdkYzIyaWZiZGEzZmdkZWg5YTZl
MWQyM2Q1ZWJnYTI5M2dlNTgxNDQxZWViMDdiODg0MTk3NDI0YjBjM2dmZWNoNzgyMGZiZ2c5NWVh
aGRjM2FjZWFoY2k2NWk4MjNkM2gxNDZkZDgwaWVmZjIzYmk4NGJlYzIxOWVhOWhlNDdpZzNnMzA5
Y2kxaDdmMGkwaTI5YmFiNGIxZmhkMTlmOWVkZjRpZjFmMjhhNWIwYmFjODdjaWhlMjhhYmJoMWY0
YWJlZ2JhMjJnZWgxYzZoNTJjMDdlMGNpNWdpODE5ZTQxZDNkMGZkZWU1MGgyN2M4aGlkMDNhOTVn
Y2Y0aGFjMTYxODhhZTVpaTcxOWRpODVhZDNhOGZkMDU5YWE2M2IxZ2U5ZmM1NDFoZjY5ZWU2Nmdm
MDE3NWI0MWNhMWRoYWhhYTM5aGM3aWQ3YzkxZGM4ZDA5ZTdoMGlkMDI1MjUzMmRnNDkzZzVmODBh
MjA5YzMxZjQxYzkyaWZoMDJpMjNpZ2VkMDZpNmNmOTc3N2czYTEwaGlmM2kzMjE3ZDMyYjAwZmlp
N2FnNGM4ZWU5aWFkZjMyMDFpMzY2YjRnMjNnYzUwNWc2M2M4NDZiNTEwMmQ1Z2c4NmRoaDJkOGVh
ZjMwMWFjMTNjZzBmNDVkMTcxZmY0NzlnMTk5NWYxaGM3YzdpaTFpMGI5ODFlMmUwNDJiMzcxYTY4
aGI2NGM1Zmg5MmhmMzBmZDcyZTA3M2JmNDM5YWUxMGRnNGc3MzloMTcwZGRmMzk0Y2JlYTkwaGg1
NDkwZmlhODNkMzZiaWdmNzJhNWVjZjhjZjEyNmQ1NGg3Z2hkZWc1ZmljMGkyMWRiNzdoZjg4aGFl
ZmRiMTJoMzIyMmZjNWM3ZDMwNzcwN2g1Y2VnM2kwMWExN2JlNWMzMWE1Z2I5ZGhhZDZjYTZpY2E3
YzRiYTQ0OTE1MDRiN2gyMWMyZDgzYjJkYjNmaTY3Y2guCitQQVNTICgxMjM0LjU2NykudG9TdHJp
bmcoMTcpIGlzICI0NGEuOWFlYjZmYWEwZGEiCitQQVNTICgxMjM0LjU2NykudG9TdHJpbmcoMTgp
IGlzICIzZWEuYTNjZDcxMDJhYyIKK1BBU1MgKDEyMzQuNTY3KS50b1N0cmluZygxOSkgaXMgIjM3
aS5hZWQxMDJhMDRkIgogUEFTUyAoMTIzNC41NjcpLnRvU3RyaW5nKDIwKSBpcyAiMzFlLmI2ZyIK
LUZBSUwgKDEyMzQuNTY3KS50b1N0cmluZygyMSkgc2hvdWxkIGJlIDJnZy5iajBrZjVjZmU5LiBX
YXMgMmdnLmJqMGtmNWNmZTkxaGs2ZmczODNiMTkzOGZmOGQwMGg0azkyOTU5NTlqY2JqOWM5Mjgy
ZTg0MGIxNjlramkxZWczMjg5M2FmZTA2M2YwYmJma2VmMmNiYWVnY2EwMzViZjEwYjJhajNlNmY2
Zmcwa2czNWs4ajgyajgyZTA4ZTZiaTBjMmllOGhoY2djNTdpaDZhZWdiOWJoN2c4MDg2MTlrMjY0
aDZoYzI5azgxMmE3MGdrMjEwZzMxNWQ5YmZoN2lmNmg2Y2s5NTExYjJrZmIxZmc0ZWQ2NmdkaWdi
NjQxNzM4ZDVhNjVnYzc0OGUxYjY4OGNpZ2tjaWY1MWNiMjYxaGQ0amhqNWg0NjAyZTJhZGRiaWUw
ZDNkNWRjMjZiaGtlY2VhOTYxaDRpYTgzOGUyYmM5MmFnMzRhMzcwYzZlamFmMjdkamllYmdoY2gy
OWZlZWtqMTdnZjYyZzc0ZDBoNTc1Zzk0YWVrZDdrZGZjYmI1NWVqYmIyZTk2YmhqN2I5MTQ1MGph
YWIyNGppaTNhZWhhZWQ2MTQxZWozZmNjajhoZmprMzRraDVpZGdoZmI4ZDFraDM5YWRhZjJjZTVl
aDc1NmVqMDg4Z2c5YWI5OWZiMzMyMTU4ZGNkNTliOGFoMTA4ZWkzNDMxajZpMTFrMDkyY2lpYmto
MmloOWRnaDliMDkyMjExOWM5ODY4NGIzODg0NjYzMGRpZWpnNjBrMWQ5M2NnNmlmazU3ZTU0YWtp
aGJpODlraDloMDg0Y2tjZzVhN2lpZWc2YzAxZTkwZDA5ZGJhaWs5YjE1azlrZmowaWdoMDBkaThi
Y2VpNGlmZWszOGhlZWEwMTRmMGVpMmFmYThpYjA4aWk5ZWcyZTBrNzFkNDM5MDZmMTNiYWMwOGc5
ZTZmMjJiNzZraWhjYTFhMTNmZjBlY2k0MjE3aDc4NGFoZ2Q1Nzg5ajMwOGJkZ2ZqZ2VraGtqaGY2
ZmU0M2RraWg0MGhiMjE2M2k2MTNkZDRnMWpmY2IxaWJjNGk0Njlla2JjMzhraDk5aTkzazE0YWc3
aWtlamZhNTI4YzM4ajkwZmhhYjhrZWFpOGNjY2lrZzVmNjk3NDk5MzRkMjg1Nmk1OTA4amgyaGg5
OWY1amlnOGhoMmVoNGNhOGdoMTlrN2gyZzBhNjNoYmM5NmQwa2cyN2tlMDc1OWRjODEwN2U2M2pk
MGRka2I4ZmUwa2swYTA0Y2lhZGFpYjUxa2YxMDFpMzY0aTBpYzFnZWRoMTQ1aTJnaGk0aWU0ajFh
Z2MzZmdiNWhja2pqNGVhNWVrZTA0aGo1OWllOWU0aGM0YmNlMTZnaGYzN2c0YjdmaDNqaDQzYmZj
NTJhODEuCi1GQUlMICgxMjM0LjU2NykudG9TdHJpbmcoMjIpIHNob3VsZCBiZSAyYzIuY2E5OTM3
Y2FrLiBXYXMgMmMyLmNhOTkzN2NhazFkNTAyMzk5ZjJoa2E4YTNjODdoMGtjNzZmYTZqNWIuCi1G
QUlMICgxMjM0LjU2NykudG9TdHJpbmcoMjMpIHNob3VsZCBiZSAyN2YuZDBsZmpiMWE3Yy4gV2Fz
IDI3Zi5kMGxmamIxYTdjNmNhYmZqN2dlZTMzamRqYTlmZzljbWpnMzc4ZmhlYTE5Y2ZhYmc4OTZm
aTBhYjFnbDgzOWZpbDVjZzhkajFoYmdqYWdiMGlsbTg4ZW0ybDllM2pnOGhtbTE5ZWJtbWpqNmZr
MWwxOWZnNzAxMWMxajZqaTNjNmJsMWxoazNraGJsMTA1YzJkM2NlMWoyYjM4MThhbWw3MmxjaDY1
OGVsYzRkMWg5ZDk0Y2o4NjFlZzc1ajBrNTlmZGw1OTZpOTc4YmU4MjFsZ2tpbWw1ZGE3MmJkM2ow
aDU2M2g2a2hmNzBtNjRkOWgyZWFjNDZsNGEyZzMzNWkwMTBoZGwwaDVoMWI2MWFnZGhtZDdrZG1t
Y2gwNWlsamFkaGgxMGk4NmxhaDFhamY0Zmo3aTJtOGgxOGpqZjJhbWQyZTY2YTg2ZWkzajBoNzdi
N2tmNmo2NTdhbTFmNmltamFhYTI4ZjAyMW05YTEzaWNrYTUzNmMwZmE2NWFhbGJibGllaTI2Y2xs
MzhhYzFjbTM0M2gwZWM4aDBrNG1oMWtiaGxhNmE5ODg5bGxqNmRiMDdlYjlnbWZpaGdnZDFrYWlt
NzBnYjZsMDgyamNhbGRnMzUzYWU5aTM1Zzc3ZmVtN2JnNzdrN2VtNGM0MWZoYmVqbWhoZ2dqNGJs
bGkzZjc1MTBsNTVsMWowYzBoODYyY2k5aGUyZGxha2kyajBpZWFoMzZkOGkzZ2YzZGk3aDA5NWFq
a2JkM2FtZ2xnZ2M1aTZpZmg0MDc2ZzQzNmpjYzliYzMzNW1iZ2VjMjNiamdma2k1NGZtOWZjMTA1
YzJnMWw5bWM4bW1nbTFqM2U4aTk2aGpkMzhpYzVrZWI4bTUza2Iya2NlYzE4YzA0MzY5bGc5N2Rr
NjYwaWRiaWpmY2ZoOWVmMGcwNWM0MTExNmkxbDY2NDkwMGpqZjVqZ2tpa2w5a2toajZqOGNsbTVo
NTg0bDI4NzVqNGo4YzM1OGs4ajNmODhjNGEyOTdjYmM4MThqMjZhMGlobWYyMWxsNmtrZm05MTFh
ZTRlN2hiMmw1aGE4NWZmZGk2M2htazk3Y2RkNG1mY2ltOTdnbWhjbGg0M2lnMmo1bWE1YzE5aGxl
OGkyaGhsbTJnamptaWFlMzA3NTRtYjdkMGw3ODgxaWdoaGgwYzBiZmFnZWttMDdoMzQ0YmRsaTc3
bTVqajk3ZzY5YWVnODE2M2VkNmFtZ2ZtMDM5YmoyYjlpYjlhbGRmYTEwM2k4M2NlYmgwYmdkajht
N2w4MjNrMmQ2aDRsOG1pYTloazY3M21haWEyMm1pazRrM2wwN2gwMm1iOWc1NmxrMjZnM21pY2ow
NTNnLgotRkFJTCAoMTIzNC41NjcpLnRvU3RyaW5nKDI0KSBzaG91bGQgYmUgMjNhLmRlZTRuajk5
ai4gV2FzIDIzYS5kZWU0bmo5OWowZmc3Yy4KLUZBSUwgKDEyMzQuNTY3KS50b1N0cmluZygyNSkg
c2hvdWxkIGJlIDFvOS5lNDk5OTk5OTkuIFdhcyAxbzkuZTQ5OTk5OTk5YTFpMTltbmtnNDFlaTJv
MmdlYTA2Zm43ZzhlNTNhZzNjZGRqazdsb2tkZjgxbW42a2U1amprbzFvZGxiYzU0NGQ4Ym9pY2k3
ajNvbTlpZmozYmE3ZG01ODRvbDBiZ2ZjODc3bjJnLgotRkFJTCAoMTIzNC41NjcpLnRvU3RyaW5n
KDI2KSBzaG91bGQgYmUgMWxjLmVqN2ZhNHBrZi4gV2FzIDFsYy5lajdmYTRwa2ZiNWkzOTYxbzhr
ODMyaG01OTRoOHA1NThnYms4MzZkLgotRkFJTCAoMTIzNC41NjcpLnRvU3RyaW5nKDI3KSBzaG91
bGQgYmUgMWlqLmY4OTcxNzcyay4gV2FzIDFpai5mODk3MTc3MmppY3FpZ2JnZWxuMzE3NjYxMmhq
YzJsbWRoMDU1YjZrcWpxOWs3YXFlbWkzMWM5OTlxa2prMTgybmttNmlpb3FvcGoyZmdqcTJlZDkw
N2Y2OGk0am1vbWNscWUwN21mb2JtYmM4ZTExaDIzODJoZDBwbWYwcHFjcTlrODBkNTJnN2E4Zzlo
MWVnNDAzZTNpNmpiaXE4bGE4Zzk1MTJsaXAyaDlucGJlNmRjZm0zMGVkZTVuNW02ZmhrOGE5bmJv
Nmc1aTJrNjA5MDhoZG84MzhuNzIwZmZuYTYxZzIwZzc1ZmtsbGQ1azMyMmhsampxcG5kZWVlY2du
azlhOG9mOGYxaDRlZGRja3FtMnFtbzIyYzZwMjFwaTljbWRoZmI4bzk3ODU5Mzg1ZGhuYWQzY2k5
a2thZmYzZjBnNzU5MjVkM203NmEyZWpvZGRmY2k4ajdqaXExODVnZ2luMWI5N3FoaHBxYWJlcTNi
aGlsaGhxcGxxN2lqMmw0aGlkZG83N2hvY280NGZkbTg5azcyNnA2NWgzZG1tNmEwazhhOXA2Z3Bi
bzFiZmxkN2FtcXBiODUzcG1vYTBta29xMGM5MmRrcTlmaGIzbWU3aGUzNG8xNmJraDZlbnBvZWQ1
YmFhNzVlcGY3YzYwOWhhcTdraTE0cWttZDdvNTlpMmttMzMwcTJkamkxMW5kZWthOGltbzk5cDRs
NGs1bjdlNmg1M2M0YjZkZG4wbmlmbzRsMWNqaDdsMzBkNGRhcWwwbzloMTE3ZzQxbGI1cDhkOGYw
OW9pNGwxYzZrMzhoZGo3ZDEwMm9oMWswOGZoazBmY25xb21paGk4NmxmOW05OGhmbTA0ZTkwaXBj
b2pvMmxvNDgxYjZrNTkyNWNtYTZnam44cGNucWRjOTM2aDhuNzdkZTZoZjloYzQ2YmdwbWFoamlq
bGxjb2M3bGJkaTZtbG0ybW41MjQ3a2JrYWVqamVtZzJlaGlvaTc1cDY0YjlxN2NhZTA0Nm0xYjdl
cXA3NDM0OGtxbWo2NDNoZjQwbzQ4bmE5bG0ycDNrM2NmM2VhbGwyYXFrN3A3M2g1aGdxNms4MmNs
Z24xMWtkY2IxNTBjcTU2MDdqcGFkb29ucHA1aTc4YTNsbWhuYmJxNGw4MzI1YTAzaGQ3bTM3Zmw5
NGlnaTQzY2dwMGc0aGdkNWhrcGsxZ2lqaGVhNTA4ZXFiZ2RnbWJiaWtoOWs2N2Q2MGhuZTUybGM2
OGM0amY0OTFrajhiaTY5MXA5MWQ2YTRiZzFwcGtuM2NxMGgzNG9jOWIybWozM29vbGxxajVwM2M0
N2xnODNsMzJqMGtlcDhqbjExbW8xNjA2NjdwLgotRkFJTCAoMTIzNC41NjcpLnRvU3RyaW5nKDI4
KSBzaG91bGQgYmUgMWcyLmZvZWxxaWE4ZS4gV2FzIDFnMi5mb2VscWlhOGViZmxkZTJjOTg4bC4K
LUZBSUwgKDEyMzQuNTY3KS50b1N0cmluZygyOSkgc2hvdWxkIGJlIDFkZy5nY29nOWUwNXEuIFdh
cyAxZGcuZ2NvZzllMDVwbzBuaDFuajAzY2JnbzFzNGlkNWtmMmZxZjhucTdyY29rcjVyNjNubzZi
OWhqMWduaGpiY2M0bTZrZmM3ZmRlMTdjaGRwNXFiZnFjNTBmMnNxam1xb283NHNtOWs1bHNrZ3By
OXI4ZmQ1Y245MzQza3I4MTE1b2lmcmsyZzdobm5ybTFxMWVzOTNiM2xscmloczkzc2kxczNiY2pl
cXJjcGJnaTBrYWhocDNkNGdwY2txbWFpNzAxOXNpY25tOTlpOXNzYmM3ODM1MTRkNDdmNnFtNG04
OXA1cmQwaHBlYXI4cDNscjBsY2lnbzIzYmZhMGgxYzdlMHJqaDY2MHI4ZWY1aDY4ZjBxYjc2N2My
MnJubGYzMjIzcWNhcTlvYjBpaTY5ZjIxcThrajI5YjI5ZjNyczM2ZjU2cmtzZHE5NDM4Y2k5ZTE2
aGxnM3JxbTNtajdnbXJmc2w1NjYyc2c3b3BpMWVnYmFwMm9yZWpmamdocjZvYWtoZ28zNHMzbWRu
M3A4Yjk0aXBmam82NGNtaGJpY2dpcWs1M2I0Ym9zamhtaTMycDBrMWlhbWZxaTk2N2E1NjRzcnBh
bTFoOTQxZjZrNm1obnA0YmY5ZGtyaTVxZHE0ajVmbWtsOG9iaGQyNjk3cWMyazFzMWVramNxZzdv
YThha2Nma2hsb3JrbXFkNGhna2g2aTc0bDFhcGo4MGtmNjY2cDMwZmgxcTlkZzhhOGxqb2VhZ2Nq
aDM5MTM5b2ZncmVsZjFmNm9jOG02YWcwZ2NpcDg5bzcxc2c4YmVmZ2E4bjBraWU3bzIyN2Y3cXFp
M2llamtsYzMxbjRtZ2hsMjRkNDdqODk1czU2YTY2ZzczbWtwNnM1ZWcxOTExZTA0amRjNWxrcnJy
bTBnaW1ubTVyYzBlb2Rlcmtqb2Y1NDVkcmNscGhqNWwzZm9yZ21uaWJkcG80czQ2M3JnOWFnNG5r
ZTUybWliMDdoZDI2amhiYTVpcDk0YnAycTA1YjZuamxyZTMzbWlrYjhyNjFsNThlaWk5NjJpNmFv
NnE4aW9zb2s3c2loMjFkZjFjMzNtNGczM2ZiYmtlNzA5c3BqOG0wZmRuYzBybWw2Yzk0cHJybGU0
NjE0YnMxMDY5a2NrNjJnNDhrZTM4NnJia25uMnNhazcwc2xqNGo0OW8zOWNzNmg3ZXJpM2xiNG44
ZDdkc2EyNzltb21zM3FnMjhuMjZkaGRkbjlqOGNrazY5N2o5a24ybGs4b28zOXAwOTllbzcxcG80
aGw2MjU1b2Y3bTY1N2ZvbHNwcGNjNWczOWFmcWJxZjVkczBxOTdhMzJra2lmMG9tbjYyaGY1OGcw
NjM4Yi4KK1BBU1MgKDEyMzQuNTY3KS50b1N0cmluZygyMSkgaXMgIjJnZy5iajBrZjVjZmU5Igor
UEFTUyAoMTIzNC41NjcpLnRvU3RyaW5nKDIyKSBpcyAiMmMyLmNhOTkzN2NhayIKK1BBU1MgKDEy
MzQuNTY3KS50b1N0cmluZygyMykgaXMgIjI3Zi5kMGxmamIxYTdjIgorUEFTUyAoMTIzNC41Njcp
LnRvU3RyaW5nKDI0KSBpcyAiMjNhLmRlZTRuajk5aiIKK1BBU1MgKDEyMzQuNTY3KS50b1N0cmlu
ZygyNSkgaXMgIjFvOS5lNDk5OTk5OTkiCitQQVNTICgxMjM0LjU2NykudG9TdHJpbmcoMjYpIGlz
ICIxbGMuZWo3ZmE0cGtmIgorUEFTUyAoMTIzNC41NjcpLnRvU3RyaW5nKDI3KSBpcyAiMWlqLmY4
OTcxNzcyayIKK1BBU1MgKDEyMzQuNTY3KS50b1N0cmluZygyOCkgaXMgIjFnMi5mb2VscWlhOGUi
CitQQVNTICgxMjM0LjU2NykudG9TdHJpbmcoMjkpIGlzICIxZGcuZ2NvZzllMDVxIgogUEFTUyAo
MTIzNC41NjcpLnRvU3RyaW5nKDMwKSBpcyAiMWI0LmgwOSIKLUZBSUwgKDEyMzQuNTY3KS50b1N0
cmluZygzMSkgc2hvdWxkIGJlIDE4cC5oaHJmY2ozdC4gV2FzIDE4cC5oaHJmY2ozdDFrNDFmM3Vy
NDc1bm0wYmcxaDhndTRnMTNjZTJuZTBybTJpcjNycHFhZWU1bWY1dGd0aDJvOGxndWY4ZTNiODhi
aHB0MnI1MWc3OHVsdXUzYTFmcWZ0aXRuNDZoazBhY3E0c3RwZW1obmExa2FsbHBsYm8yMzJmcXRq
NGNoMW1rc3Iwa24zOGcyZzNrOW5idHRldHRlaGpyNTZzdDA0dGNkbjZvOTVndWhpcWU5YTBiY3Js
bWhhN2h0N2U0NXVldDVwazBzMzkyOGJqZ3VoaHJjNGlqOThoaHB0aHU5NXBqdTRkNDA5N3I3aXBj
MWsyYjVvOHFqOXFlY2s1ZGZkZXFpbWtwMTU1Zmgyb2U1bWZrM2Fia2ViYXE2ajNldWJzc3JqZm9k
M3AxN2lzNzF0cWllYWY3bmE5OXA0ODJzbGw2anIxb2locmlidGg1Ymc0MWhhN3FkM3RlbmZmN2cx
NzFrZmRndXQ1ODBzMm5vaDlxbHE4bGNrZ3NpdWtydDIxb25nbm8xamM0NzdyZjA3Y3I2ZDV1anFh
N3NybDFiZGtvbjE1NjYxOWExbzlvbG1jdGJpaXUxaWgyOGZianVwaGNkMG5ncWlqc2g4bjVoNTlz
ZnM0cWhwZHU2MmprdXI2dGlna2dlbTUwb2doMzduM2pzcmRyNGQ4aDd0YTNoODRwMml1cmVvaW1w
YTMxZWlvdHQyMzdsYThkMGI5c3FqcTlsOHJhOTdtNGxkbmVyc2JtcHVuNjRkbDUwamYzMmtvcDZp
ZGliZjdiZWtycjZwcG90NXV0ZGtuYnEwbGlkMGZrZWhvYzNzc2Y2b3JtM2c1MGg2ZW1mc21sMHBw
YzFhZTY4ODFkdXVmaXVqM2U4NGI2dWhvbjkzcWs0YW1lNDk0b2NsYWZkMW1wcHJzaWFxZDhncGk3
bTVicm1xOG5yaDJubHJvN3BoYjdwZGxpMXBiMGdmZWRsdWgwYmpiOWVubmV0c2ZkanMzdS4KK1BB
U1MgKDEyMzQuNTY3KS50b1N0cmluZygzMSkgaXMgIjE4cC5oaHJmY2ozdCIKIFBBU1MgKDEyMzQu
NTY3KS50b1N0cmluZygzMikgaXMgIjE2aS5pNGplaXU2bCIKLUZBSUwgKDEyMzQuNTY3KS50b1N0
cmluZygzMykgc2hvdWxkIGJlIDE0ZC5pbmY5NnJkdm0uIFdhcyAxNGQuaW5mOTZyZHZsbW53Y2k5
MDg4dmJuZHE0dWY0ZnV0cGlyZjN0dDZiZG5taWtmNXZwdG93MmxmZG85Z202aGJyOWJ2cmI3c2xk
NmNlYjBubTBlNmFmNmIuCi1GQUlMICgxMjM0LjU2NykudG9TdHJpbmcoMzQpIHNob3VsZCBiZSAx
MmEuajlmY2hkdG0uIFdhcyAxMmEuajlmY2hkdG0xaTBlOGVkYmYwdm9nbjBpdDh2c3gzcjhzOXM1
YWw4aC4KLUZBSUwgKDEyMzQuNTY3KS50b1N0cmluZygzNSkgc2hvdWxkIGJlIDEwOS5qdGs0ZDRk
NGUuIFdhcyAxMDkuanRrNGQ0ZDRkb2ZsZmU3eGkxNjl3ZDZveWpxMDF2cWNsMmYxNTBiaXMxY2xp
ZGdvNHZnM255Ymp0ZW8xbG1qd3h2YWhmeTZkcW53eWRnYXltcGJjdjBncGdrYTJid2VqZ24wdTBn
dXRqNThvZzVtNGFiMnVkbHZ4Zm9mcXlqb3I0dHFxcmcxaWs2bmMxZWx5bmptMHA0M2o0MzY5MXk2
Y2Z4aXJybXlub21mbzB4dDgwOHlmdDlwZXZrM2xqaXdib2FxMHV5cjZoOTg5cG41YWV4c2t3cHA4
a2IwaHJ3ZTQ1dm9taXY3cGhrbDFtc3VrOHR5YTdhYWdqbmRyNWZoa2lhNmlsbHd0anFqdjhrcGc5
ajFjbTl5aDYweDB1ZGo2MGN3dTVuZDEyZDU5cDh2ZzB3czdxdm1ud240N3NkYnhyOTdvNjBzdDhi
dXNzbDI5MzJ1Z2hqaWl0am5hOXA2czU1Ympka2d4ZW9idms5ZXVjMDRndTc5cG5hNG9xb3hjdjQ1
MjJnZ2JjZ284NTJwbjlqYXlyb3k4NnNmMnExMTloeW1ncmN0N2dqN2dpZGJpODhpb3c2NmRqY2Jx
ZzFnNWo2ZmM1dW1iNWZzc2RlNXVxM3J2Yzl4MGc4MWVvNXVyc2piMXB0d3UxOGxqc2t0dHFpaXhm
bXRoaW9ubmo3bDVwN3FlbXF0bjljZHI0eG5heDM2MWw2MHZpc3RtOHBtamlmZ2JoMGo5c2U2cm5l
a3l5ZWtuMWM4MG85NWl2YnBubWV3YTFhYzFwMnN1aDRka3QwcDdqbXNoeDVxYjkyY292NnYxMndu
N2R4ZHI4dGl0MDUxbmN0cnk4eXQ3anBzZnNleDQ2ODN5d2J0Y3g5Y2p1bDUyc2N2MXVkN2M5OTZj
d2ExaWVzaHBhNGc2b2N5dndtNzg2bGhoa3dzYnQwZXAwYTA4OHh1dW9tZzJocWdhMnBrN2lic2I0
NTd1aTVjbGU0MnQ3eWo3dWdmcDJ5bml2aGEwYnhxczg2OGI1eXE1OWhnM3JpM3Y5YjBha3hnMHhn
azNmeDRvNXBjYXliOWd2MHNtMXZoZ2V0NzJnNmxwMjBmMXEzaTZzdWJjOXFrdnZ5dGNsaTAzN2gz
dzQ3eDlqMzQzd3hlNTN2b2RiM2R5bzlxOGE0YWo0ZGN5c3g5NWs1b3NlMzYyNjdiZTFtZGxpNHRx
dzdoY2ozb2Fld2VwZTBsaXZoNThwMXcxdmpjM3czMW01YzR2MWtlOTRxZGFtbDQ1ZHVsdjhnajdr
NzVid3BkOTdoOWVtdnljYmU3YWt1dmp0MXY1ZDM3a3Noc3Jla2pmb2RmOTU3am5hazRhZ25rYnY5
OTkzeWNiNjlpbS4KLUZBSUwgKDEyMzQuNTY3KS50b1N0cmluZygzNikgc2hvdWxkIGJlIHlhLmtl
dHk5c2lmbC4gV2FzIHlhLmtldHk5c2lma2x6c2FrcWhieWI5LgorUEFTUyAoMTIzNC41NjcpLnRv
U3RyaW5nKDMzKSBpcyAiMTRkLmluZjk2cmR2bSIKK1BBU1MgKDEyMzQuNTY3KS50b1N0cmluZygz
NCkgaXMgIjEyYS5qOWZjaGR0bSIKK1BBU1MgKDEyMzQuNTY3KS50b1N0cmluZygzNSkgaXMgIjEw
OS5qdGs0ZDRkNGUiCitQQVNTICgxMjM0LjU2NykudG9TdHJpbmcoMzYpIGlzICJ5YS5rZXR5OXNp
ZmwiCiBQQVNTICgxMjM0LjU2NykudG9TdHJpbmcoMzcpIHRocmV3IGV4Y2VwdGlvbiBSYW5nZUVy
cm9yOiB0b1N0cmluZygpIHJhZGl4IGFyZ3VtZW50IG11c3QgYmUgYmV0d2VlbiAyIGFuZCAzNi4K
IFBBU1MgKDEyMzQuNTY3KS50b1N0cmluZygtMSkgdGhyZXcgZXhjZXB0aW9uIFJhbmdlRXJyb3I6
IHRvU3RyaW5nKCkgcmFkaXggYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDIgYW5kIDM2LgogUEFT
UyAoMTIzNC41NjcpLnRvU3RyaW5nKHBvc0luZikgdGhyZXcgZXhjZXB0aW9uIFJhbmdlRXJyb3I6
IHRvU3RyaW5nKCkgcmFkaXggYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDIgYW5kIDM2Lgo=
</data>
<flag name="review"
          id="93987"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99666</attachid>
            <date>2011-07-04 19:46:16 -0700</date>
            <delta_ts>2011-07-04 19:46:16 -0700</delta_ts>
            <desc>Patch with build fixes</desc>
            <filename>16652.5.patch</filename>
            <type>text/plain</type>
            <size>60296</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTAzODIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDYgQEAK
KzIwMTEtMDctMDQgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCisKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjUyCisgICAgICAgIEZpcmVmb3ggYW5kIEph
dmFTY3JpcHRDb3JlIGRpZmZlciBpbiBOdW1iZXIudG9TdHJpbmcoaW50ZWdlcikKKworICAgICAg
ICBPdXIgYXJiaXRyYXJ5IHJhZGl4ICgyLi4zNikgdG9TdHJpbmcgY29udmVyc2lvbiBpcyBpbmFj
Y3VyYXRlLgorICAgICAgICBUaGlzIGlzIHBhcnRseSBiZWNhdXNlIGl0IHVzZXMgZG91YmxlcyB0
byBwZXJmb3JtIG1hdGggdGhhdCByZXF1aXJlcworICAgICAgICBoaWdoZXIgYWNjdXJhY3ksIGFu
ZCBwYXJ0bHkgYmVjYXN1ZSBpdCBkb2VzIG5vdCBhdHRlbXB0IHRvIGNvcnJlY3RseQorICAgICAg
ICBkZXRlY3Qgd2hlcmUgdG8gdGVybWluYXRlLCBpbnN0ZWFkIHJlbHlpbmcgb24gYSBzaW1wbGUg
J2Vwc2lsb24nLgorCisgICAgICAgICogcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpkZWNvbXBvc2VEb3VibGUpOgorICAgICAgICAgICAgLSBoZWxwZXIgZnVuY3Rp
b24gdG8gZXh0cmFjdCBzaWduLCBleHBvbmVudCwgbWFudGlzc2EgZnJvbSBJRUVFIGRvdWJsZXMu
CisgICAgICAgIChKU0M6OlVpbnQxNldpdGhGcmFjdGlvbjo6VWludDE2V2l0aEZyYWN0aW9uKToK
KyAgICAgICAgICAgIC0gaGVscGVyIGNsYXNzLCB1MTZpbnQgd2l0aCBpbmZpbml0ZSBwcmVjaXNp
b24gZnJhY3Rpb24sIHVzZWQgdG8gY29udmVydAorICAgICAgICAgICAgICB0aGUgZnJhY3Rpb25h
bCBwYXJ0IG9mIHRoZSBudW1iZXIgdG8gYSBzdHJpbmcuCisgICAgICAgIChKU0M6OlVpbnQxNldp
dGhGcmFjdGlvbjo6b3BlcmF0b3IqPSk6CisgICAgICAgICAgICAtIE11bHRpcGx5IGJ5IGEgdWlu
dDE2LgorICAgICAgICAoSlNDOjpVaW50MTZXaXRoRnJhY3Rpb246Om9wZXJhdG9yPCk6CisgICAg
ICAgICAgICAtIENvbXBhcmUgdHdvIFVpbnQxNldpdGhGcmFjdGlvbnMuCisgICAgICAgIChKU0M6
OlVpbnQxNldpdGhGcmFjdGlvbjo6Zmxvb3JBbmRTdWJ0cmFjdCk6CisgICAgICAgICAgICAtIEV4
dHJhY3QgdGhlIGludGVnZXIgcG9ydGlvbiBvZiB0aGUgbnVtYmVyLCBhbmQgc3VidHJhY3QgaXQg
KGNsZWFycyB0aGUgaW50ZWdlciBwb3J0aW9uKS4KKyAgICAgICAgKEpTQzo6VWludDE2V2l0aEZy
YWN0aW9uOjpjb21wYXJlUG9pbnQ1KToKKyAgICAgICAgICAgIC0gQ29tcGFyZSB0byAwLjUuCisg
ICAgICAgIChKU0M6OlVpbnQxNldpdGhGcmFjdGlvbjo6c3VtR3JlYXRlclRoYW5PbmUpOgorICAg
ICAgICAgICAgLSBQYXNzZWQgYSBzZWNvbmQgVWludDE2V2l0aEZyYWN0aW9uLCByZXR1cm5zIHRy
dWUgaWYgdGhlIHJlc3VsdCBvZiBhZGRpbmcKKyAgICAgICAgICAgICAgdGhlIHR3byB2YWx1ZXMg
d291bGQgYmUgZ3JlYXRlciB0aGFuIG9uZS4KKyAgICAgICAgKEpTQzo6VWludDE2V2l0aEZyYWN0
aW9uOjppc05vcm1hbGl6ZWQpOgorICAgICAgICAgICAgLSBVc2VkIGJ5IEFTU0VSVHMgdG8gY29u
c2lzdGVuY3kgY2hlY2sgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24uCisgICAgICAgIChKU0M6OkJp
Z0ludGVnZXI6OkJpZ0ludGVnZXIpOgorICAgICAgICAgICAgLSBoZWxwZXIgY2xhc3MsIHVuYm91
bmRlZCBpbnRlZ2VyIHZhbHVlLCB1c2VkIHRvIGNvbnZlcnQgdGhlIGludGVnZXIgcGFydAorICAg
ICAgICAgICAgICBvZiB0aGUgbnVtYmVyIHRvIGEgc3RyaW5nLgorICAgICAgICAoSlNDOjpCaWdJ
bnRlZ2VyOjpkaXZpZGUpOgorICAgICAgICAgICAgLSBEaXZpZGUgdGhpcyB2YWx1ZSB0aHJvdWdo
IGJ5IGEgdWludDMyLgorICAgICAgICAoSlNDOjpCaWdJbnRlZ2VyOjpvcGVyYXRvciEpOgorICAg
ICAgICAgICAgLSB0ZXN0IGZvciB6ZXJvLgorICAgICAgICAoSlNDOjp0b1N0cmluZ1dpdGhSYWRp
eCk6CisgICAgICAgICAgICAtIFBlcmZvcm1zIG51bWJlciB0byBzdHJpbmcgY29udmVyc2lvbiwg
d2l0aCB0aGUgZ2l2ZW4gcmFkaXggKDIuLjM2KS4KKyAgICAgICAgKEpTQzo6bnVtYmVyUHJvdG9G
dW5jVG9TdHJpbmcpOgorICAgICAgICAgICAgLSBDaGFuZ2VkIHRvIHVzZSB0b1N0cmluZ1dpdGhS
YWRpeC4KKwogMjAxMS0wNy0wNCAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBs
ZS5jb20+CiAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTYzODgxCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gOTAzODIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjU0LDYgKzI1NCw4IEBACiAJCTg2NTY1NzQz
MTE1QkUzREEwMDI5MUY0MCAvKiBDU3RyaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NjU2NTc0MTExNUJFM0RBMDAyOTFGNDAgLyogQ1N0cmluZy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2NUEz
MEYxMTM1MDA3RTEwMENEQjQ5RSAvKiBKU1ZhbHVlSW5saW5lTWV0aG9kcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY1QTMwRjAxMzUwMDdFMTAwQ0RC
NDlFIC8qIEpTVmFsdWVJbmxpbmVNZXRob2RzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODY1RjQwODgxMEU3RDU2MzAwOTQ3MzYxIC8qIEFQSVNo
aW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjVG
NDA4NzEwRTdENTYzMDA5NDczNjEgLyogQVBJU2hpbXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk4NjY3MzlEMjEzQkZERTcxMDAyM0Q4N0MgLyog
QmlnSW50ZWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODY2NzM5RDAxM0JGREU3MTAwMjNEODdDIC8qIEJpZ0ludGVnZXIuaCAqLzsgfTsKKwkJODY2
NzM5RDMxM0JGREU3MTAwMjNEODdDIC8qIFVpbnQxNldpdGhGcmFjdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY2NzM5RDExM0JGREU3MTAwMjNE
ODdDIC8qIFVpbnQxNldpdGhGcmFjdGlvbi5oICovOyB9OwogCQk4NjY3NkQ1MjExRkVEOUJDMDA0
QjY4NjMgLyogQnVtcFBvaW50ZXJBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Njc2RDREMTFGRUQ1NUQwMDRCNjg2MyAvKiBCdW1wUG9p
bnRlckFsbG9jYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTg2NzA0QjQyMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjcwNEI0
MDEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIuY3BwICovOyB9OwogCQk4Njcw
NEI0MzEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2NzA0QjQxMTJEQjhBODEwMEE5RkU3
QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5oICovOyB9OwpAQCAtOTQxLDYgKzk0Myw4IEBACiAJCTg2
NTY1NzQxMTE1QkUzREEwMDI5MUY0MCAvKiBDU3RyaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IENTdHJpbmcuaDsgcGF0aCA9IHRleHQvQ1N0cmluZy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4NjVBMzBGMDEzNTAwN0UxMDBDREI0OUUgLyogSlNWYWx1ZUlu
bGluZU1ldGhvZHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNWYWx1ZUlu
bGluZU1ldGhvZHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY1RjQwODcxMEU3
RDU2MzAwOTQ3MzYxIC8qIEFQSVNoaW1zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFQSVNoaW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg2NjczOUQwMTNC
RkRFNzEwMDIzRDg3QyAvKiBCaWdJbnRlZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEJpZ0ludGVnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODY2NzM5
RDExM0JGREU3MTAwMjNEODdDIC8qIFVpbnQxNldpdGhGcmFjdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBVaW50MTZXaXRoRnJhY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJODY2NzZENEQxMUZFRDU1RDAwNEI2ODYzIC8qIEJ1bXBQb2ludGVyQWxs
b2NhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ1bXBQb2ludGVyQWxs
b2NhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2NzA0QjQwMTJEQjhBODEw
MEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBZYXJyU3ludGF4Q2hlY2tlci5jcHA7IHBhdGggPSB5YXJyL1lhcnJTeW50
YXhDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODY3MDRCNDExMkRC
OEE4MTAwQTlGRTdCIC8qIFlhcnJTeW50YXhDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFlhcnJTeW50YXhDaGVja2VyLmg7IHBhdGggPSB5YXJyL1lhcnJTeW50YXhD
aGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODQwLDYgKzE4NDQsNyBA
QAogCQkJCUY2OTJBODREMDI1NTU5N0QwMUZGNjBGNyAvKiBBcnJheVByb3RvdHlwZS5jcHAgKi8s
CiAJCQkJRjY5MkE4NEUwMjU1NTk3RDAxRkY2MEY3IC8qIEFycmF5UHJvdG90eXBlLmggKi8sCiAJ
CQkJMTQ3QjgzQUEwRTZEQjhDOTAwNDc3NUE0IC8qIEJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVy
LmggKi8sCisJCQkJODY2NzM5RDAxM0JGREU3MTAwMjNEODdDIC8qIEJpZ0ludGVnZXIuaCAqLywK
IAkJCQlCQzc5NTIzMjBFMTVFQjU2MDBBODk4QUIgLyogQm9vbGVhbkNvbnN0cnVjdG9yLmNwcCAq
LywKIAkJCQlCQzc5NTIzMzBFMTVFQjU2MDBBODk4QUIgLyogQm9vbGVhbkNvbnN0cnVjdG9yLmgg
Ki8sCiAJCQkJRjY5MkE4NTAwMjU1NTk3RDAxRkY2MEY3IC8qIEJvb2xlYW5PYmplY3QuY3BwICov
LApAQCAtMjAxMCw2ICsyMDE1LDcgQEAKIAkJCQkxNEE0MkUzRTBGNEY2MEVFMDA1OTkwOTkgLyog
VGltZW91dENoZWNrZXIuaCAqLywKIAkJCQk1RDUzNzI2RDBFMUM1NDZCMDAyMUU1NDkgLyogVHJh
Y2luZy5kICovLAogCQkJCTVENTM3MjZFMEUxQzU0ODgwMDIxRTU0OSAvKiBUcmFjaW5nLmggKi8s
CisJCQkJODY2NzM5RDExM0JGREU3MTAwMjNEODdDIC8qIFVpbnQxNldpdGhGcmFjdGlvbi5oICov
LAogCQkJCUY2OTJBODg1MDI1NTU5N0QwMUZGNjBGNyAvKiBVU3RyaW5nLmNwcCAqLywKIAkJCQlG
NjkyQTg4NjAyNTU1OTdEMDFGRjYwRjcgLyogVVN0cmluZy5oICovLAogCQkJCTA4RERBNUJCMTI2
NDVGMUQwMDc1MTczMiAvKiBVU3RyaW5nQnVpbGRlci5oICovLApAQCAtMjU3NCw2ICsyNTgwLDgg
QEAKIAkJCQkxNEJBNzhGMTEzQUFCODhGMDA1QjdDMkMgLyogU2xvdFZpc2l0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTE0QkE3QTk4MTNBQURGRjgwMDVCN0MyQyAvKiBIZWFwLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNzZGNTRBMzEzQjI4QUFCMDBFRjJCQ0UgLyogSklUV3JpdGVCYXJyaWVyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk4NjY3MzlEMjEzQkZERTcxMDAyM0Q4N0MgLyogQmlnSW50ZWdl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODY2NzM5RDMxM0JGREU3MTAwMjNEODdDIC8qIFVpbnQx
NldpdGhGcmFjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9CaWdJbnRlZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQmlnSW50ZWdlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQmlnSW50ZWdlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExMiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IEJpZ0ludGVnZXJfaAorI2RlZmluZSBCaWdJbnRlZ2VyX2gKKworI2luY2x1ZGUgPHd0Zi9NYXRo
RXh0cmFzLmg+CisKK25hbWVzcGFjZSBKU0MgeworCisvLyBUaGlzIGlzIHVzZWQgaW4gY29udmVy
dGluZyB0aGUgaW50ZWdlciBwYXJ0IG9mIGEgbnVtYmVyIHRvIGEgc3RyaW5nLgorY2xhc3MgQmln
SW50ZWdlciB7CitwdWJsaWM6CisgICAgQmlnSW50ZWdlcihkb3VibGUgbnVtYmVyKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKGlzZmluaXRlKG51bWJlcikgJiYgIXNpZ25iaXQobnVtYmVyKSk7Cisg
ICAgICAgIEFTU0VSVChudW1iZXIgPT0gZmxvb3IobnVtYmVyKSk7CisKKyAgICAgICAgYm9vbCBz
aWduOworICAgICAgICBpbnQzMl90IGV4cG9uZW50OworICAgICAgICB1aW50NjRfdCBtYW50aXNz
YTsKKyAgICAgICAgZGVjb21wb3NlRG91YmxlKG51bWJlciwgc2lnbiwgZXhwb25lbnQsIG1hbnRp
c3NhKTsKKyAgICAgICAgQVNTRVJUKCFzaWduICYmIGV4cG9uZW50ID49IDApOworCisgICAgICAg
IGludDMyX3QgemVyb0JpdHMgPSBleHBvbmVudCAtIDUyOworCisgICAgICAgIGlmICh6ZXJvQml0
cyA8IDApIHsKKyAgICAgICAgICAgIG1hbnRpc3NhID4+PSAtemVyb0JpdHM7CisgICAgICAgICAg
ICB6ZXJvQml0cyA9IDA7CisgICAgICAgIH0KKworICAgICAgICB3aGlsZSAoemVyb0JpdHMgPj0g
MzIpIHsKKyAgICAgICAgICAgIG1fdmFsdWVzLmFwcGVuZCgwKTsKKyAgICAgICAgICAgIHplcm9C
aXRzIC09IDMyOworICAgICAgICB9CisKKyAgICAgICAgLy8gTGVmdCBhbGlnbiB0aGUgNTMgYml0
cyBvZiB0aGUgbWFudGlzc2Egd2l0aGluIDk2IGJpdHMuCisgICAgICAgIHVpbnQzMl90IHZhbHVl
c1szXTsKKyAgICAgICAgdmFsdWVzWzBdID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1hbnRpc3Nh
KTsKKyAgICAgICAgdmFsdWVzWzFdID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1hbnRpc3NhID4+
IDMyKTsKKyAgICAgICAgdmFsdWVzWzJdID0gMDsKKyAgICAgICAgLy8gU2hpZnQgYmFzZWQgb24g
dGhlIHJlbWFpbmRlciBvZiB0aGUgZXhwb25lbnQuCisgICAgICAgIGlmICh6ZXJvQml0cykgewor
ICAgICAgICAgICAgdmFsdWVzWzJdID0gdmFsdWVzWzFdID4+ICgzMiAtIHplcm9CaXRzKTsKKyAg
ICAgICAgICAgIHZhbHVlc1sxXSA9ICh2YWx1ZXNbMV0gPDwgemVyb0JpdHMpIHwgKHZhbHVlc1sw
XSA+PiAoMzIgLSB6ZXJvQml0cykpOworICAgICAgICAgICAgdmFsdWVzWzBdID0gKHZhbHVlc1sw
XSA8PCB6ZXJvQml0cyk7CisgICAgICAgIH0KKyAgICAgICAgbV92YWx1ZXMuYXBwZW5kKHZhbHVl
c1swXSk7CisgICAgICAgIG1fdmFsdWVzLmFwcGVuZCh2YWx1ZXNbMV0pOworICAgICAgICBtX3Zh
bHVlcy5hcHBlbmQodmFsdWVzWzJdKTsKKworICAgICAgICAvLyBDYW5vbmljYWxpemU7IHJlbW92
ZSBhbGwgdHJhaWxpbmcgemVyb3MuCisgICAgICAgIHdoaWxlIChtX3ZhbHVlcy5zaXplKCkgJiYg
IW1fdmFsdWVzLmxhc3QoKSkKKyAgICAgICAgICAgIG1fdmFsdWVzLnJlbW92ZUxhc3QoKTsKKyAg
ICB9CisKKyAgICB1aW50MzJfdCBkaXZpZGUodWludDMyX3QgZGl2aXNvcikKKyAgICB7CisgICAg
ICAgIHVpbnQzMl90IGNhcnJ5ID0gMDsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gbV92YWx1
ZXMuc2l6ZSgpOyBpOyApIHsKKyAgICAgICAgICAgIC0taTsKKyAgICAgICAgICAgIHVpbnQ2NF90
IGRpdmlkZW5kID0gKHN0YXRpY19jYXN0PHVpbnQ2NF90PihjYXJyeSkgPDwgMzIpICsgc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KG1fdmFsdWVzW2ldKTsKKworICAgICAgICAgICAgdWludDY0X3QgcmVz
dWx0ID0gZGl2aWRlbmQgLyBzdGF0aWNfY2FzdDx1aW50NjRfdD4oZGl2aXNvcik7CisgICAgICAg
ICAgICBBU1NFUlQocmVzdWx0ID09IHN0YXRpY19jYXN0PHVpbnQzMl90PihyZXN1bHQpKTsKKyAg
ICAgICAgICAgIHVpbnQ2NF90IHJlbWFpbmRlciA9IGRpdmlkZW5kICUgc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KGRpdmlzb3IpOworICAgICAgICAgICAgQVNTRVJUKHJlbWFpbmRlciA9PSBzdGF0aWNf
Y2FzdDx1aW50MzJfdD4ocmVtYWluZGVyKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1f
dmFsdWVzW2ldID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHJlc3VsdCk7CisgICAgICAgICAgICBj
YXJyeSA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihyZW1haW5kZXIpOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gQ2Fub25pY2FsaXplOyByZW1vdmUgYWxsIHRyYWlsaW5nIHplcm9zLgorICAgICAg
ICB3aGlsZSAobV92YWx1ZXMuc2l6ZSgpICYmICFtX3ZhbHVlcy5sYXN0KCkpCisgICAgICAgICAg
ICBtX3ZhbHVlcy5yZW1vdmVMYXN0KCk7CisKKyAgICAgICAgcmV0dXJuIGNhcnJ5OworICAgIH0K
KworICAgIGJvb2wgb3BlcmF0b3IhKCkgeyByZXR1cm4gIW1fdmFsdWVzLnNpemUoKTsgfQorCitw
cml2YXRlOgorICAgIFZlY3Rvcjx1aW50MzJfdCwgMzY+IG1fdmFsdWVzOworfTsKKworfQorCisj
ZW5kaWYKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90
eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1i
ZXJQcm90b3R5cGUuY3BwCShyZXZpc2lvbiA5MDM4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDEwICsy
MiwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk51bWJlclByb3RvdHlwZS5o
IgogCisjaW5jbHVkZSAiQmlnSW50ZWdlci5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVk
ZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiT3BlcmF0
aW9ucy5oIgorI2luY2x1ZGUgIlVpbnQxNldpdGhGcmFjdGlvbi5oIgogI2luY2x1ZGUgImR0b2Eu
aCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9EZWNpbWFsTnVt
YmVyLmg+CkBAIC0xMTEsNiArMTEzLDIxMCBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGdl
dEludGVnZXJBcmd1CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKKy8vIFRoZSBsYXJnZXN0IGZpbml0
ZSBmbG9hdGluZyBwb2ludCBudW1iZXIgaXMgMS5tYW50aXNzYSAqIDJeKDB4N2ZlLTB4M2ZmKS4K
Ky8vIFNpbmNlIDJeTiBpbiBiaW5hcnkgaXMgYSBvbmUgYml0IGZvbGxvd2VkIGJ5IE4gemVybyBi
aXRzLiAxICogMl4zZmYgcmVxdWlyZXMKKy8vIGF0IG1vc3QgMTAyNCBjaGFyYWN0ZXJzIHRvIHRo
ZSBsZWZ0IG9mIGEgZGVjaW1hbCBwb2ludCwgaW4gYmFzZSAyICgxMDI1IGlmCisvLyB3ZSBpbmNs
dWRlIGEgbWludXMgc2lnbikuIEZvciB0aGUgZnJhY3Rpb24sIGEgdmFsdWUgd2l0aCBhbiBleHBv
bmVudCBvZiAwCisvLyBoYXMgdXAgdG8gNTIgYml0cyB0byB0aGUgcmlnaHQgb2YgdGhlIGRlY2lt
YWwgcG9pbnQuIEVhY2ggZGVjcmVtZW50IG9mIHRoZQorLy8gZXhwb25lbnQgZG93biB0byBhIG1p
bmltdW0gb2YgLTB4M2ZlIGFkZHMgYW4gYWRkaXRpb25hbCBkaWdpdCB0byB0aGUgbGVuZ3RoCisv
LyBvZiB0aGUgZnJhY3Rpb24uIEFzIHN1Y2ggdGhlIG1heGltdW0gZnJhY3Rpb24gc2l6ZSBpcyAx
MDc1ICgxMDc2IGluY2x1ZGluZworLy8gYSBwb2ludCkuIFdlIHBpY2sgYSBidWZmZXIgc2l6ZSBz
dWNoIHRoYXQgY2FuIHNpbXBseSBwbGFjZSB0aGUgcG9pbnQgaW4gdGhlCisvLyBjZW50ZXIgb2Yg
dGhlIGJ1ZmZlciwgYW5kIGFyZSBndWFyYW50ZWVkIHRvIGhhdmUgZW5vdWdoIHNwYWNlIGluIGVh
Y2ggZGlyZWN0aW9uCisvLyBmbyBhbnkgbnVtYmVyIG9mIGRpZ2l0cyBhbiBJRUVFIG51bWJlciBt
YXkgcmVxdWlyZSB0byByZXByZXNlbnQuCit0eXBlZGVmIGNoYXIgUmFkaXhCdWZmZXJbMjE4MF07
CisKKy8vIE1hcHBpbmcgZnJvbSBpbnRlZ2VycyAwLi4zNSB0byBkaWdpdCBpZGVudGlmeWluZyB0
aGlzIHZhbHVlLCBmb3IgcmFkaXggMi4uMzYuCitzdGF0aWMgY29uc3QgY2hhciogY29uc3QgcmFk
aXhEaWdpdHMgPSAiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IjsKKworc3Rh
dGljIGNoYXIqIHRvU3RyaW5nV2l0aFJhZGl4KFJhZGl4QnVmZmVyJiBidWZmZXIsIGRvdWJsZSBu
dW1iZXIsIHVuc2lnbmVkIHJhZGl4KQoreworICAgIEFTU0VSVChpc2Zpbml0ZShudW1iZXIpKTsK
KyAgICBBU1NFUlQocmFkaXggPj0gMiAmJiByYWRpeCA8PSAzNik7CisKKyAgICAvLyBQb3NpdGlv
biB0aGUgZGVjaW1hbCBwb2ludCBhdCB0aGUgY2VudGVyIG9mIHRoZSBzdHJpbmcsIHNldAorICAg
IC8vIHRoZSBzdGFydE9mUmVzdWx0U3RyaW5nIHBvaW50ZXIgdG8gcG9pbnQgYXQgdGhlIGRlY2lt
YWwgcG9pbnQuCisgICAgY2hhciogZGVjaW1hbFBvaW50ID0gYnVmZmVyICsgc2l6ZW9mKGJ1ZmZl
cikgLyAyOworICAgIGNoYXIqIHN0YXJ0T2ZSZXN1bHRTdHJpbmcgPSBkZWNpbWFsUG9pbnQ7CisK
KyAgICAvLyBFeHRyYWN0IHRoZSBzaWduLgorICAgIGJvb2wgaXNOZWdhdGl2ZSA9IG51bWJlciA8
IDA7CisgICAgaWYgKHNpZ25iaXQobnVtYmVyKSkKKyAgICAgICAgbnVtYmVyID0gLW51bWJlcjsK
KyAgICBkb3VibGUgaW50ZWdlclBhcnQgPSBmbG9vcihudW1iZXIpOworCisgICAgLy8gV2UgdXNl
IHRoaXMgdG8gdGVzdCBmb3Igb2RkIHZhbHVlcyBpbiBvZGQgcmFkaXggYmFzZXMuCisgICAgLy8g
V2hlcmUgdGhlIGJhc2UgaXMgZXZlbiwgKGUuZy4gMTApLCB0byBkZXRlcm1pbmUgd2hldGhlciBh
IHZhbHVlIGlzIGV2ZW4gd2UgbmVlZCBvbmx5CisgICAgLy8gY29uc2lkZXIgdGhlIGxlYXN0IHNp
Z25pZmljYW50IGRpZ2l0LiBGb3IgZXhhbXBsZSwgMTI0IGluIGJhc2UgMTAgaXMgZXZlbiwgYmVj
YXVzZSAnNCcKKyAgICAvLyBpcyBldmVuLiBpZiB0aGUgcmFkaXggaXMgb2RkLCB0aGVuIHRoZSBy
YWRpeCByYWlzZWQgdG8gYW4gaW50ZWdlciBwb3dlciBpcyBhbHNvIG9kZC4KKyAgICAvLyBFLmcu
IGluIGJhc2UgNSwgMTI0IHJlcHJlc2VudHMgKDEgKiAxMjUgKyAyICogMjUgKyA0ICogNSkuIFNp
bmNlIGVhY2ggZGlnaXQgaW4gdGhlIHZhbHVlCisgICAgLy8gaXMgbXVsdGlwbGllZCBieSBhbiBv
ZGQgbnVtYmVyLCB0aGUgcmVzdWx0IGlzIGV2ZW4gaWYgdGhlIHN1bSBvZiBhbGwgZGlnaXRzIGlz
IGV2ZW4uCisgICAgLy8KKyAgICAvLyBGb3IgdGhlIGludGVnZXIgcG9ydGlvbiBvZiB0aGUgcmVz
dWx0LCB3ZSBvbmx5IG5lZWQgdGVzdCB3aGV0aGVyIHRoZSBpbnRlZ2VyIHZhbHVlIGlzCisgICAg
Ly8gZXZlbiBvciBvZGQuIEZvciBlYWNoIGRpZ2l0IG9mIHRoZSBmcmFjdGlvbiBhZGRlZCwgd2Ug
c2hvdWxkIGludmVydCBvdXIgaWRlYSBvZiB3aGV0aGVyCisgICAgLy8gdGhlIG51bWJlciBpcyBv
ZGQgaWYgdGhlIG5ldyBkaWdpdCBpcyBvZGQuCisgICAgLy8KKyAgICAvLyBBbHNvIGluaXRpYWxp
emUgZGlnaXQgdG8gdGhpcyB2YWx1ZTsgZm9yIGV2ZW4gcmFkaXggdmFsdWVzIHdlIG9ubHkgbmVl
ZCB0cmFjayB3aGV0aGVyCisgICAgLy8gdGhlIGxhc3QgaW5kaXZpZHVhbCBkaWdpdCB3YXMgb2Rk
LgorICAgIGJvb2wgaW50ZWdlclBhcnRJc09kZCA9IGludGVnZXJQYXJ0IDw9IHN0YXRpY19jYXN0
PGRvdWJsZT4oMHgxRkZGRkZGRkZGRkZGRnVsbCkgJiYgc3RhdGljX2Nhc3Q8aW50NjRfdD4oaW50
ZWdlclBhcnQpICYgMTsKKyAgICBBU1NFUlQoaW50ZWdlclBhcnRJc09kZCA9PSBzdGF0aWNfY2Fz
dDxib29sPihmbW9kKGludGVnZXJQYXJ0LCAyKSkpOworICAgIGJvb2wgaXNPZGRJbk9kZFJhZGl4
ID0gaW50ZWdlclBhcnRJc09kZDsKKyAgICB1aW50MzJfdCBkaWdpdCA9IGludGVnZXJQYXJ0SXNP
ZGQ7CisKKyAgICAvLyBDaGVjayBpZiB0aGUgdmFsdWUgaGFzIGEgZnJhY3Rpb25hbCBwYXJ0IHRv
IGNvbnZlcnQuCisgICAgZG91YmxlIGZyYWN0aW9uUGFydCA9IG51bWJlciAtIGludGVnZXJQYXJ0
OworICAgIGlmIChmcmFjdGlvblBhcnQpIHsKKyAgICAgICAgLy8gV3JpdGUgdGhlIGRlY2ltYWwg
cG9pbnQgbm93LgorICAgICAgICAqZGVjaW1hbFBvaW50ID0gJy4nOworCisgICAgICAgIC8vIEhp
Z2hlciBwcmVjaXNpb24gcmVwcmVzZW50YXRpb24gb2YgdGhlIGZyYWN0aW9uYWwgcGFydC4KKyAg
ICAgICAgVWludDE2V2l0aEZyYWN0aW9uIGZyYWN0aW9uKGZyYWN0aW9uUGFydCk7CisKKyAgICAg
ICAgYm9vbCBuZWVkc1JvdW5kaW5nVXAgPSBmYWxzZTsKKyAgICAgICAgY2hhciogZW5kT2ZSZXN1
bHRTdHJpbmcgPSBkZWNpbWFsUG9pbnQgKyAxOworCisgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUg
ZGVsdGEgZnJvbSB0aGUgY3VycmVudCBudW1iZXIgdG8gdGhlIG5leHQgJiBwcmV2aW91cyBwb3Nz
aWJsZSBJRUVFIG51bWJlcnMuCisgICAgICAgIGRvdWJsZSBuZXh0TnVtYmVyID0gbmV4dGFmdGVy
KG51bWJlciwgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKTsKKyAgICAg
ICAgZG91YmxlIGxhc3ROdW1iZXIgPSBuZXh0YWZ0ZXIobnVtYmVyLCAtc3RkOjpudW1lcmljX2xp
bWl0czxkb3VibGU+OjppbmZpbml0eSgpKTsKKyAgICAgICAgQVNTRVJUKGlzZmluaXRlKG5leHRO
dW1iZXIpICYmICFzaWduYml0KG5leHROdW1iZXIpKTsKKyAgICAgICAgQVNTRVJUKGlzZmluaXRl
KGxhc3ROdW1iZXIpICYmICFzaWduYml0KGxhc3ROdW1iZXIpKTsKKyAgICAgICAgZG91YmxlIGRl
bHRhTmV4dERvdWJsZSA9IG5leHROdW1iZXIgLSBudW1iZXI7CisgICAgICAgIGRvdWJsZSBkZWx0
YUxhc3REb3VibGUgPSBudW1iZXIgLSBsYXN0TnVtYmVyOworICAgICAgICBBU1NFUlQoaXNmaW5p
dGUoZGVsdGFOZXh0RG91YmxlKSAmJiAhc2lnbmJpdChkZWx0YU5leHREb3VibGUpKTsKKyAgICAg
ICAgQVNTRVJUKGlzZmluaXRlKGRlbHRhTGFzdERvdWJsZSkgJiYgIXNpZ25iaXQoZGVsdGFMYXN0
RG91YmxlKSk7CisKKyAgICAgICAgLy8gV2UgdHJhY2sgdGhlIGRlbHRhIGZyb20gdGhlIGN1cnJl
bnQgdmFsdWUgdG8gdGhlIG5leHQsIHRvIHRyYWNrIGhvdyBtYW55IGRpZ2l0cyBvZiB0aGUKKyAg
ICAgICAgLy8gZnJhY3Rpb24gd2UgbmVlZCB0byB3cml0ZS4gRm9yIGV4YW1wbGUsIGlmIHRoZSB2
YWx1ZSB3ZSBhcmUgY29udmVydGluZyBpcyBwcmVjaXNlbHkKKyAgICAgICAgLy8gMS4yMzQ1LCBz
byBmYXIgd2UgaGF2ZSB3cml0dGVuIHRoZSBkaWdpdHMgIjEuMjMiIHRvIGEgc3RyaW5nIGxlYXZp
bmcgYSByZW1haW5kZXIgb2YKKyAgICAgICAgLy8gMC40NSwgYW5kIHdlIHdhbnQgdG8gZGV0ZXJt
aW5lIHdoZXRoZXIgd2UgY2FuIHJvdW5kIG9mZiwgb3Igd2hldGhlciB3ZSBuZWVkIHRvIGtlZXAK
KyAgICAgICAgLy8gYXBwZW5kaW5nIGRpZ2l0cyAoJzQnKS4gV2UgY2FuIHN0b3AgYWRkaW5nIGRp
Z2l0cyBwcm92aWRlZCB0aGF0IHRoZW4gbmV4dCBwb3NzaWJsZQorICAgICAgICAvLyBsb3dlciBJ
RUVFIHZhbHVlIGlzIGZ1cnRoZXIgZnJvbSAxLjIzIHRoYW4gdGhlIHJlbWFpbmRlciB3ZSdkIGJl
IHJvdW5kaW5nIG9mZiAoMC40NSksCisgICAgICAgIC8vIHdoaWNoIGlzIHRvIHNheSwgbGVzcyB0
aGFuIDEuMjI1NS4gUHV0IGFub3RoZXIgd2F5LCB0aGUgZGVsdGEgYmV0d2VlbiB0aGUgcHJpb3IK
KyAgICAgICAgLy8gcG9zc2libGUgdmFsdWUgYW5kIHRoaXMgbnVtYmVyIG11c3QgYmUgbW9yZSB0
aGFuIDJ4IHRoZSByZW1haW5kZXIgd2UnZCBiZSByb3VuZGluZyBvZmYKKyAgICAgICAgLy8gKG9y
IG1vcmUgc2ltcGx5IGhhbGYgdGhlIGRlbHRhIGJldHdlZW4gbnVtYmVycyBtdXN0IGJlIGdyZWF0
ZXIgdGhhbiB0aGUgcmVtYWluZGVyKS4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gU2ltaWxhcmx5
IHdlIG5lZWQgdHJhY2sgdGhlIGRlbHRhIHRvIHRoZSBuZXh0IHBvc3NpYmxlIHZhbHVlLCB0byBk
ZXJ0ZXJtaW5lIHdoZXRoZXIKKyAgICAgICAgLy8gdG8gcm91bmQgdXAuIEluIGFsbW9zdCBhbGwg
Y2FzZXMgKG90aGVyIHRoYW4gYXQgZXhwb25lbnQgYm91bmRhcmllcykgdGhlIGRlbHRhcyB0bwor
ICAgICAgICAvLyBwcmlvciBhbmQgc3Vic2VxdWVudCB2YWx1ZXMgYXJlIGlkZW50aWNhbCwgc28g
d2UgZG9uJ3QgbmVlZCB0cmFjayB0aGVuIHNlcGFyYXRlbHkuCisgICAgICAgIGlmIChkZWx0YU5l
eHREb3VibGUgIT0gZGVsdGFMYXN0RG91YmxlKSB7CisgICAgICAgICAgICAvLyBTaW5jZSB0aGUg
ZGVsdGFzIGFyZSBkaWZmZXJlbnQgdHJhY2sgdGhlbSBzZXBhcmF0ZWx5LiBQcmUtbXVsdGlwbHkg
YnkgMC41LgorICAgICAgICAgICAgVWludDE2V2l0aEZyYWN0aW9uIGhhbGZEZWx0YU5leHQoZGVs
dGFOZXh0RG91YmxlLCAxKTsKKyAgICAgICAgICAgIFVpbnQxNldpdGhGcmFjdGlvbiBoYWxmRGVs
dGFMYXN0KGRlbHRhTGFzdERvdWJsZSwgMSk7CisKKyAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7
CisgICAgICAgICAgICAgICAgLy8gZXhhbWluZSB0aGUgcmVtYWluZGVyIHRvIGRldGVybWluZSB3
aGV0aGVyIHdlIHNob3VsZCBiZSBjb25zaWRlcmluZyByb3VuZGluZworICAgICAgICAgICAgICAg
IC8vIHVwIG9yIGRvd24uIElmIHJlbWFpbmRlciBpcyBwcmVjaXNlbHkgMC41IHJvdW5kaW5nIGlz
IHRvIGV2ZW4uCisgICAgICAgICAgICAgICAgaW50IGRDb21wYXJlUG9pbnQ1ID0gZnJhY3Rpb24u
Y29tcGFyZVBvaW50NSgpOworICAgICAgICAgICAgICAgIGlmIChkQ29tcGFyZVBvaW50NSA+IDAg
fHwgKCFkQ29tcGFyZVBvaW50NSAmJiAocmFkaXggJiAxID8gaXNPZGRJbk9kZFJhZGl4IDogZGln
aXQgJiAxKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIHJvdW5kaW5nIHVw
OyBhcmUgd2UgY2xvc2VyIHRvIHRoZSB2YWx1ZSB3ZSdkIHJvdW5kIG9mZiB0byB0aGFuCisgICAg
ICAgICAgICAgICAgICAgIC8vIHRoZSBuZXh0IElFRUUgdmFsdWUgd291bGQgYmU/CisgICAgICAg
ICAgICAgICAgICAgIGlmIChmcmFjdGlvbi5zdW1HcmVhdGVyVGhhbk9uZShoYWxmRGVsdGFOZXh0
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbmVlZHNSb3VuZGluZ1VwID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIHJv
dW5kaW5nIGRvd247IGFyZSB3ZSBjbG9zZXIgdG8gdGhlIHZhbHVlIHdlJ2Qgcm91bmQgb2ZmIHRv
IHRoYW4KKyAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHByaW9yIElFRUUgdmFsdWUgd291bGQg
YmU/CisgICAgICAgICAgICAgICAgICAgIGlmIChmcmFjdGlvbiA8IGhhbGZEZWx0YUxhc3QpCisg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICBBU1NFUlQoZW5kT2ZSZXN1bHRTdHJpbmcgPCAoYnVmZmVyICsgc2l6ZW9mKGJ1
ZmZlcikgLSAxKSk7CisgICAgICAgICAgICAgICAgLy8gV3JpdGUgYSBkaWdpdCB0byB0aGUgc3Ry
aW5nLgorICAgICAgICAgICAgICAgIGZyYWN0aW9uICo9IHJhZGl4OworICAgICAgICAgICAgICAg
IGRpZ2l0ID0gZnJhY3Rpb24uZmxvb3JBbmRTdWJ0cmFjdCgpOworICAgICAgICAgICAgICAgICpl
bmRPZlJlc3VsdFN0cmluZysrID0gcmFkaXhEaWdpdHNbZGlnaXRdOworICAgICAgICAgICAgICAg
IC8vIEtlZXAgdHJhY2sgd2hldGhlciB0aGUgcG9ydGlvbiB3cml0dGVuIGlzIGN1cnJlbnRseSBl
dmVuLCBpZiB0aGUgcmFkaXggaXMgb2RkLgorICAgICAgICAgICAgICAgIGlmIChkaWdpdCAmIDEp
CisgICAgICAgICAgICAgICAgICAgIGlzT2RkSW5PZGRSYWRpeCA9ICFpc09kZEluT2RkUmFkaXg7
CisKKyAgICAgICAgICAgICAgICAvLyBTaGlmdCB0aGUgZnJhY3Rpb25zIGJ5IHJhZGl4LgorICAg
ICAgICAgICAgICAgIGhhbGZEZWx0YU5leHQgKj0gcmFkaXg7CisgICAgICAgICAgICAgICAgaGFs
ZkRlbHRhTGFzdCAqPSByYWRpeDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIC8vIFRoaXMgY29kZSBpcyBpZGVudGljYWwgdG8gdGhhdCBhYm92ZSwgZXhjZXB0
IHNpbmNlIGRlbHRhTmV4dERvdWJsZSAhPSBkZWx0YUxhc3REb3VibGUKKyAgICAgICAgICAgIC8v
IHdlIGRvbid0IG5lZWQgdG8gdHJhY2sgdGhlc2UgdHdvIHZhbHVlcyBzZXBhcmF0ZWx5LgorICAg
ICAgICAgICAgVWludDE2V2l0aEZyYWN0aW9uIGhhbGZEZWx0YShkZWx0YU5leHREb3VibGUsIDEp
OworCisgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgICAgIGludCBkQ29t
cGFyZVBvaW50NSA9IGZyYWN0aW9uLmNvbXBhcmVQb2ludDUoKTsKKyAgICAgICAgICAgICAgICBp
ZiAoZENvbXBhcmVQb2ludDUgPiAwIHx8ICghZENvbXBhcmVQb2ludDUgJiYgKHJhZGl4ICYgMSA/
IGlzT2RkSW5PZGRSYWRpeCA6IGRpZ2l0ICYgMSkpKSB7CisgICAgICAgICAgICAgICAgICAgIGlm
IChmcmFjdGlvbi5zdW1HcmVhdGVyVGhhbk9uZShoYWxmRGVsdGEpKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBuZWVkc1JvdW5kaW5nVXAgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2Ug
aWYgKGZyYWN0aW9uIDwgaGFsZkRlbHRhKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICAgICAgICAgIEFTU0VSVChlbmRPZlJlc3VsdFN0cmluZyA8IChidWZmZXIgKyBzaXpl
b2YoYnVmZmVyKSAtIDEpKTsKKyAgICAgICAgICAgICAgICBmcmFjdGlvbiAqPSByYWRpeDsKKyAg
ICAgICAgICAgICAgICBkaWdpdCA9IGZyYWN0aW9uLmZsb29yQW5kU3VidHJhY3QoKTsKKyAgICAg
ICAgICAgICAgICBpZiAoZGlnaXQgJiAxKQorICAgICAgICAgICAgICAgICAgICBpc09kZEluT2Rk
UmFkaXggPSAhaXNPZGRJbk9kZFJhZGl4OworICAgICAgICAgICAgICAgICplbmRPZlJlc3VsdFN0
cmluZysrID0gcmFkaXhEaWdpdHNbZGlnaXRdOworCisgICAgICAgICAgICAgICAgaGFsZkRlbHRh
ICo9IHJhZGl4OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gQ2hlY2sg
aWYgdGhlIGZyYWN0aW9uIG5lZWRzIHJvdW5kaW5nIG9mZiAoZmxhZyBzZXQgaW4gdGhlIGxvb3Ag
d3JpdGluZyBkaWdpdHMsIGFib3ZlKS4KKyAgICAgICAgaWYgKG5lZWRzUm91bmRpbmdVcCkgewor
ICAgICAgICAgICAgLy8gV2hpbHN0IHRoZSBsYXN0IGRpZ2l0IGlzIHRoZSBtYXhpbXVtIGluIHRo
ZSBjdXJyZW50IHJhZGl4LCByZW1vdmUgaXQuCisgICAgICAgICAgICAvLyBlLmcuIHJvdW5kaW5n
IHVwIHRoZSBsYXN0IGRpZ2l0IGluICIxMi4zOTk5IiBpcyB0aGUgc2FtZSBhcyByb3VuZGluZyB1
cCB0aGUKKyAgICAgICAgICAgIC8vIGxhc3QgZGlnaXQgaW4gIjEyLjMiIC0gYm90aCByb3VuZCB1
cCB0byAiMTIuNCIuCisgICAgICAgICAgICB3aGlsZSAoZW5kT2ZSZXN1bHRTdHJpbmdbLTFdID09
IHJhZGl4RGlnaXRzW3JhZGl4IC0gMV0pCisgICAgICAgICAgICAgICAgLS1lbmRPZlJlc3VsdFN0
cmluZzsKKworICAgICAgICAgICAgLy8gUmFkaXggZGlnaXRzIGFyZSBzZXF1ZW50aWFsIGluIGFz
Y2lpL3VuaWNvZGUsIGV4Y2VwdCBmb3IgJzknIGFuZCAnYScuCisgICAgICAgICAgICAvLyBFLmcu
IHRoZSBmaXJzdCAnaWYnIGNhc2UgaGFuZGxlcyByb3VuZGluZyA2Ny44OSB0byA2Ny44YSBpbiBi
YXNlIDE2LgorICAgICAgICAgICAgLy8gVGhlICdlbHNlIGlmJyBjYXNlIGhhbmRsZXMgcm91bmRp
bmcgb2YgYWxsIG90aGVyIGRpZ2l0cy4KKyAgICAgICAgICAgIGlmIChlbmRPZlJlc3VsdFN0cmlu
Z1stMV0gPT0gJzknKQorICAgICAgICAgICAgICAgIGVuZE9mUmVzdWx0U3RyaW5nWy0xXSA9ICdh
JzsKKyAgICAgICAgICAgIGVsc2UgaWYgKGVuZE9mUmVzdWx0U3RyaW5nWy0xXSAhPSAnLicpCisg
ICAgICAgICAgICAgICAgKytlbmRPZlJlc3VsdFN0cmluZ1stMV07CisgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICAvLyBPbmUgb3RoZXIgcG9zc2liaWxpdHkgLSB0aGVyZSBtYXkg
YmUgbm8gZGlnaXRzIHRvIHJvdW5kIHVwIGluIHRoZSBmcmFjdGlvbgorICAgICAgICAgICAgICAg
IC8vIChvciBhbGwgbWF5IGJlIGJlZW4gcm91bmRlZCBvZmYgYWxyZWFkeSksIGluIHdoaWNoIGNh
c2Ugd2UgbWF5IG5lZWQgdG8KKyAgICAgICAgICAgICAgICAvLyByb3VuZCBpbnRvIHRoZSBpbnRl
Z2VyIHBvcnRpb24gb2YgdGhlIG51bWJlci4gUmVtb3ZlIHRoZSBkZWNpbWFsIHBvaW50LgorICAg
ICAgICAgICAgICAgIC0tZW5kT2ZSZXN1bHRTdHJpbmc7CisgICAgICAgICAgICAgICAgLy8gSW4g
b3JkZXIgdG8gZ2V0IGhlcmUgdGhlcmUgbXVzdCBoYXZlIGJlZW4gYSBub24temVybyBmcmFjdGlv
biwgaW4gd2hpY2ggY2FzZQorICAgICAgICAgICAgICAgIC8vIHRoZXJlIG11c3QgYmUgYXQgbGVh
c3Qgb25lIGJpdCBvZiB0aGUgdmFsdWUncyBtYW50aXNzYSBub3QgaW4gdXNlIGluIHRoZQorICAg
ICAgICAgICAgICAgIC8vIGludGVnZXIgcGFydCBvZiB0aGUgbnVtYmVyLiBBcyBzdWNoLCBhZGRp
bmcgdG8gdGhlIGludGVnZXIgcGFydCBzaG91bGQgbm90CisgICAgICAgICAgICAgICAgLy8gYmUg
YWJsZSB0byBsb3NlIHByZWNpc2lvbi4KKyAgICAgICAgICAgICAgICBBU1NFUlQoKGludGVnZXJQ
YXJ0ICsgMSkgLSBpbnRlZ2VyUGFydCA9PSAxKTsKKyAgICAgICAgICAgICAgICArK2ludGVnZXJQ
YXJ0OworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gV2Ug
b25seSBuZWVkIHRvIGNoZWNrIGZvciB0cmFpbGluZyB6ZXJvcyBpZiB0aGUgdmFsdWUgZG9lcyBu
b3QgZ2V0IHJvdW5kZWQgdXAuCisgICAgICAgICAgICB3aGlsZSAoZW5kT2ZSZXN1bHRTdHJpbmdb
LTFdID09ICcwJykKKyAgICAgICAgICAgICAgICAtLWVuZE9mUmVzdWx0U3RyaW5nOworICAgICAg
ICB9CisKKyAgICAgICAgKmVuZE9mUmVzdWx0U3RyaW5nID0gJ1wwJzsKKyAgICAgICAgQVNTRVJU
KGVuZE9mUmVzdWx0U3RyaW5nIDwgYnVmZmVyICsgc2l6ZW9mKGJ1ZmZlcikpOworICAgIH0gZWxz
ZQorICAgICAgICAqZGVjaW1hbFBvaW50ID0gJ1wwJzsKKworICAgIEJpZ0ludGVnZXIgdW5pdHMo
aW50ZWdlclBhcnQpOworCisgICAgLy8gQWx3YXlzIGxvb3AgYXQgbGVhc3Qgb25jZSwgdG8gZW1p
dCBhdCBsZWFzdCAnMCcuCisgICAgZG8geworICAgICAgICBBU1NFUlQoYnVmZmVyIDwgc3RhcnRP
ZlJlc3VsdFN0cmluZyk7CisKKyAgICAgICAgLy8gUmVhZCBhIHNpbmdsZSBkaWdpdCBhbmQgd3Jp
dGUgaXQgdG8gdGhlIGZyb250IG9mIHRoZSBzdHJpbmcuCisgICAgICAgIC8vIERpdmlkZSBieSBy
YWRpeCB0byByZW1vdmUgb25lIGRpZ2l0IGZyb20gdGhlIHZhbHVlLgorICAgICAgICBkaWdpdCA9
IHVuaXRzLmRpdmlkZShyYWRpeCk7CisgICAgICAgICotLXN0YXJ0T2ZSZXN1bHRTdHJpbmcgPSBy
YWRpeERpZ2l0c1tkaWdpdF07CisgICAgfSB3aGlsZSAoISF1bml0cyk7CisKKyAgICAvLyBJZiB0
aGUgbnVtYmVyIGlzIG5lZ2F0aXZlLCBwcmVwZW5kICctJy4KKyAgICBpZiAoaXNOZWdhdGl2ZSkK
KyAgICAgICAgKi0tc3RhcnRPZlJlc3VsdFN0cmluZyA9ICctJzsKKyAgICBBU1NFUlQoYnVmZmVy
IDw9IHN0YXJ0T2ZSZXN1bHRTdHJpbmcpOworCisgICAgcmV0dXJuIHN0YXJ0T2ZSZXN1bHRTdHJp
bmc7Cit9CisKIC8vIHRvRXhwb25lbnRpYWwgY29udmVydHMgYSBudW1iZXIgdG8gYSBzdHJpbmcs
IGFsd2F5cyBmb3JtYXR0aW5nIGFzIGFuIGV4cG9lbnRpYWwuCiAvLyBUaGlzIG1ldGhvZCB0YWtl
cyBhbiBvcHRpb25hbCBhcmd1bWVudCBzcGVjaWZ5aW5nIGEgbnVtYmVyIG9mICpkZWNpbWFsIHBs
YWNlcyoKIC8vIHRvIHJvdW5kIHRoZSBzaWduaWZpY2FuZCB0byAob3IsIHB1dCBhbm90aGVyIHdh
eSwgdGhpcyBtZXRob2Qgb3B0aW9uYWxseSByb3VuZHMKQEAgLTIwOSw3ICs0MTUsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvCiAgICAgLy8gQ29udmVydCB0byBk
ZWNpbWFsIHdpdGggcm91bmRpbmcuCiAgICAgRGVjaW1hbE51bWJlciBudW1iZXIoeCwgUm91bmRp
bmdTaWduaWZpY2FudEZpZ3VyZXMsIHNpZ25pZmljYW50RmlndXJlcyk7CiAgICAgLy8gSWYgbnVt
YmVyIGlzIGluIHRoZSByYW5nZSAxZS02IDw9IHggPCBwb3coMTAsIHNpZ25pZmljYW50RmlndXJl
cykgdGhlbiBmb3JtYXQKLSAgICAvLyBhcyBkZWNpbWFsLiBPdGhlcndpc2UsIGZvcm1hdCB0aGUg
bnVtYmVyIGFzIGFuIGV4cG9uZW50aWFsLiAgRGVjaW1hbCBmb3JtYXQKKyAgICAvLyBhcyBkZWNp
bWFsLiBPdGhlcndpc2UsIGZvcm1hdCB0aGUgbnVtYmVyIGFzIGFuIGV4cG9uZW50aWFsLiBEZWNp
bWFsIGZvcm1hdAogICAgIC8vIGRlbWFuZHMgYSBtaW5pbXVtIG9mIChleHBvbmVudCArIDEpIGRp
Z2l0cyB0byByZXByZXNlbnQgYSBudW1iZXIsIGZvciBleGFtcGxlCiAgICAgLy8gMTIzNCAoMS4y
MzRlKzMpIHJlcXVpcmVzIDQgZGlnaXRzLiAoU2VlIEVDTUEtMjYyIDE1LjcuNC43LjEwLmMpCiAg
ICAgTnVtYmVyVG9TdHJpbmdCdWZmZXIgYnVmZmVyOwpAQCAtMjM4LDE1ICs0NDQsMTMgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90bwogICAgIGlmIChyYWRpeCA9PSAx
MCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCB2LnRvU3Ry
aW5nKGV4ZWMpKSk7CiAKLSAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgZGlnaXRzID0gIjAx
MjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiI7Ci0KICAgICAvLyBGYXN0IHBhdGgg
Zm9yIG51bWJlciB0byBjaGFyYWN0ZXIgY29udmVyc2lvbi4KICAgICBpZiAocmFkaXggPT0gMzYp
IHsKICAgICAgICAgaWYgKHYuaXNJbnQzMigpKSB7CiAgICAgICAgICAgICBpbnQgeCA9IHYuYXNJ
bnQzMigpOwogICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPih4KSA8IDM2KSB7
IC8vIEV4Y2x1ZGUgbmVnYXRpdmVzCiAgICAgICAgICAgICAgICAgSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGdsb2JhbERhdGEtPnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJp
bmcoZ2xvYmFsRGF0YSwgZGlnaXRzW3hdKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShnbG9iYWxEYXRhLT5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5n
KGdsb2JhbERhdGEsIHJhZGl4RGlnaXRzW3hdKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9CkBAIC0yNTQsNTMgKzQ1OCwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IG51bWJlclByb3RvCiAgICAgaWYgKHJhZGl4IDwgMiB8fCByYWRpeCA+IDM2KQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgInRvU3RyaW5n
KCkgcmFkaXggYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDIgYW5kIDM2IikpOwogCi0gICAgLy8g
SU5UX01BWCByZXN1bHRzIGluIDEwMjQgY2hhcmFjdGVycyBsZWZ0IG9mIHRoZSBkb3Qgd2l0aCBy
YWRpeCAyCi0gICAgLy8gZ2l2ZSB0aGUgc2FtZSBzcGFjZSBvbiB0aGUgcmlnaHQgc2lkZS4gc2Fm
ZXR5IGNoZWNrcyBhcmUgaW4gcGxhY2UKLSAgICAvLyB1bmxlc3Mgc29tZW9uZSBmaW5kcyBhIHBy
ZWNpc2UgcnVsZS4KLSAgICBjaGFyIHNbMjA0OCArIDNdOwotICAgIGNvbnN0IGNoYXIqIGxhc3RD
aGFySW5TdHJpbmcgPSBzICsgc2l6ZW9mKHMpIC0gMTsKICAgICBkb3VibGUgeCA9IHYudW5jaGVj
a2VkR2V0TnVtYmVyKCk7CiAgICAgaWYgKCFpc2Zpbml0ZSh4KSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCBVU3RyaW5nOjpudW1iZXIoeCkpKTsKIAotICAg
IGJvb2wgaXNOZWdhdGl2ZSA9IHggPCAwLjA7Ci0gICAgaWYgKGlzTmVnYXRpdmUpCi0gICAgICAg
IHggPSAteDsKLQotICAgIGRvdWJsZSBpbnRlZ2VyUGFydCA9IGZsb29yKHgpOwotICAgIGNoYXIq
IGRlY2ltYWxQb2ludCA9IHMgKyBzaXplb2YocykgLyAyOwotCi0gICAgLy8gY29udmVydCBpbnRl
Z2VyIHBvcnRpb24KLSAgICBjaGFyKiBwID0gZGVjaW1hbFBvaW50OwotICAgIGRvdWJsZSBkID0g
aW50ZWdlclBhcnQ7Ci0gICAgZG8gewotICAgICAgICBpbnQgcmVtYWluZGVyRGlnaXQgPSBzdGF0
aWNfY2FzdDxpbnQ+KGZtb2QoZCwgcmFkaXgpKTsKLSAgICAgICAgKi0tcCA9IGRpZ2l0c1tyZW1h
aW5kZXJEaWdpdF07Ci0gICAgICAgIGQgLz0gcmFkaXg7Ci0gICAgfSB3aGlsZSAoKGQgPD0gLTEu
MCB8fCBkID49IDEuMCkgJiYgcyA8IHApOwotCi0gICAgaWYgKGlzTmVnYXRpdmUpCi0gICAgICAg
ICotLXAgPSAnLSc7Ci0gICAgY2hhciogc3RhcnRPZlJlc3VsdFN0cmluZyA9IHA7Ci0gICAgQVNT
RVJUKHMgPD0gc3RhcnRPZlJlc3VsdFN0cmluZyk7Ci0KLSAgICBkID0geCAtIGludGVnZXJQYXJ0
OwotICAgIHAgPSBkZWNpbWFsUG9pbnQ7Ci0gICAgY29uc3QgZG91YmxlIGVwc2lsb24gPSAwLjAw
MTsgLy8gVE9ETzogZ3Vlc3NlZC4gYmFzZSBvbiByYWRpeCA/Ci0gICAgYm9vbCBoYXNGcmFjdGlv
bmFsUGFydCA9IChkIDwgLWVwc2lsb24gfHwgZCA+IGVwc2lsb24pOwotICAgIGlmIChoYXNGcmFj
dGlvbmFsUGFydCkgewotICAgICAgICAqcCsrID0gJy4nOwotICAgICAgICBkbyB7Ci0gICAgICAg
ICAgICBkICo9IHJhZGl4OwotICAgICAgICAgICAgY29uc3QgaW50IGRpZ2l0ID0gc3RhdGljX2Nh
c3Q8aW50PihkKTsKLSAgICAgICAgICAgICpwKysgPSBkaWdpdHNbZGlnaXRdOwotICAgICAgICAg
ICAgZCAtPSBkaWdpdDsKLSAgICAgICAgfSB3aGlsZSAoKGQgPCAtZXBzaWxvbiB8fCBkID4gZXBz
aWxvbikgJiYgcCA8IGxhc3RDaGFySW5TdHJpbmcpOwotICAgIH0KLSAgICAqcCA9ICdcMCc7Ci0g
ICAgQVNTRVJUKHAgPCBzICsgc2l6ZW9mKHMpKTsKLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNTdHJpbmcoZXhlYywgc3RhcnRPZlJlc3VsdFN0cmluZykpOworICAgIFJhZGl4QnVmZmVy
IHM7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyhleGVjLCB0b1N0cmluZ1dp
dGhSYWRpeChzLCB4LCByYWRpeCkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBudW1iZXJQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyhFeGVjU3RhdGUqIGV4ZWMpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VaW50MTZXaXRoRnJhY3Rpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9VaW50MTZXaXRoRnJhY3Rpb24u
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1VpbnQxNldp
dGhGcmFjdGlvbi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI3MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFVpbnQxNldpdGhGcmFj
dGlvbl9oCisjZGVmaW5lIFVpbnQxNldpdGhGcmFjdGlvbl9oCisKKyNpbmNsdWRlIDx3dGYvTWF0
aEV4dHJhcy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworLy8gV291bGQgYmUgbmljZSBpZiB0aGlz
IHdhcyBhIHN0YXRpYyBjb25zdCBtZW1iZXIsIGJ1dCB0aGUgT1MgWCBsaW5rZXIKKy8vIHNlZW1z
IHRvIHdhbnQgYSBzeW1ib2wgaW4gdGhlIGJpbmFyeSBpbiB0aGF0IGNhc2UuLi4KKyNkZWZpbmUg
b25lR3JlYXRlclRoYW5NYXhVSW50MTYgMHgxMDAwMAorCisvLyBBIHVpbnQxNl90IHdpdGggYW4g
aW5maW5pdGUgcHJlY2lzaW9uIGZyYWN0aW9uLiBVcG9uIG92ZXJmbG93aW5nCisvLyB0aGUgdWlu
dDE2X3QgcmFuZ2UsIHRoaXMgY2xhc3Mgd2lsbCBjbGFtcCB0byBvbmVHcmVhdGVyVGhhbk1heFVJ
bnQxNi4KKy8vIFRoaXMgaXMgdXNlZCBpbiBjb252ZXJ0aW5nIHRoZSBmcmFjdGlvbiBwYXJ0IG9m
IGEgbnVtYmVyIHRvIGEgc3RyaW5nLgorY2xhc3MgVWludDE2V2l0aEZyYWN0aW9uIHsKK3B1Ymxp
YzoKKyAgICBleHBsaWNpdCBVaW50MTZXaXRoRnJhY3Rpb24oZG91YmxlIG51bWJlciwgdWludDE2
X3QgZGl2aWRlQnlFeHBvbmVudCA9IDApCisgICAgeworICAgICAgICBBU1NFUlQobnVtYmVyICYm
IGlzZmluaXRlKG51bWJlcikgJiYgIXNpZ25iaXQobnVtYmVyKSk7CisKKyAgICAgICAgLy8gQ2hl
Y2sgZm9yIHZhbHVlcyBvdXQgb2YgdWludDE2X3QgcmFuZ2UuCisgICAgICAgIGlmIChudW1iZXIg
Pj0gb25lR3JlYXRlclRoYW5NYXhVSW50MTYpIHsKKyAgICAgICAgICAgIG1fdmFsdWVzLmFwcGVu
ZChvbmVHcmVhdGVyVGhhbk1heFVJbnQxNik7CisgICAgICAgICAgICBtX2xlYWRpbmdaZXJvcyA9
IDA7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBBcHBlbmQg
dGhlIHVuaXRzIHRvIG1fdmFsdWVzLgorICAgICAgICBkb3VibGUgaW50ZWdlclBhcnQgPSBmbG9v
cihudW1iZXIpOworICAgICAgICBtX3ZhbHVlcy5hcHBlbmQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KGludGVnZXJQYXJ0KSk7CisKKyAgICAgICAgYm9vbCBzaWduOworICAgICAgICBpbnQzMl90IGV4
cG9uZW50OworICAgICAgICB1aW50NjRfdCBtYW50aXNzYTsKKyAgICAgICAgZGVjb21wb3NlRG91
YmxlKG51bWJlciAtIGludGVnZXJQYXJ0LCBzaWduLCBleHBvbmVudCwgbWFudGlzc2EpOworICAg
ICAgICBBU1NFUlQoIXNpZ24gJiYgZXhwb25lbnQgPCAwKTsKKyAgICAgICAgZXhwb25lbnQgLT0g
ZGl2aWRlQnlFeHBvbmVudDsKKworICAgICAgICBpbnQzMl90IHplcm9CaXRzID0gLWV4cG9uZW50
OworICAgICAgICAtLXplcm9CaXRzOworCisgICAgICAgIC8vIEFwcGVuZCB0aGUgYXBwZW5kIHdv
cmRzIGZvciB0byBtX3ZhbHVlcy4KKyAgICAgICAgd2hpbGUgKHplcm9CaXRzID49IDMyKSB7Cisg
ICAgICAgICAgICBtX3ZhbHVlcy5hcHBlbmQoMCk7CisgICAgICAgICAgICB6ZXJvQml0cyAtPSAz
MjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIExlZnQgYWxpZ24gdGhlIDUzIGJpdHMgb2YgdGhl
IG1hbnRpc3NhIHdpdGhpbiA5NiBiaXRzLgorICAgICAgICB1aW50MzJfdCB2YWx1ZXNbM107Cisg
ICAgICAgIHZhbHVlc1swXSA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihtYW50aXNzYSA+PiAyMSk7
CisgICAgICAgIHZhbHVlc1sxXSA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihtYW50aXNzYSA8PCAx
MSk7CisgICAgICAgIHZhbHVlc1syXSA9IDA7CisgICAgICAgIC8vIFNoaWZ0IGJhc2VkIG9uIHRo
ZSByZW1haW5kZXIgb2YgdGhlIGV4cG9uZW50LgorICAgICAgICBpZiAoemVyb0JpdHMpIHsKKyAg
ICAgICAgICAgIHZhbHVlc1syXSA9IHZhbHVlc1sxXSA8PCAoMzIgLSB6ZXJvQml0cyk7CisgICAg
ICAgICAgICB2YWx1ZXNbMV0gPSAodmFsdWVzWzFdID4+IHplcm9CaXRzKSB8ICh2YWx1ZXNbMF0g
PDwgKDMyIC0gemVyb0JpdHMpKTsKKyAgICAgICAgICAgIHZhbHVlc1swXSA9ICh2YWx1ZXNbMF0g
Pj4gemVyb0JpdHMpOworICAgICAgICB9CisgICAgICAgIG1fdmFsdWVzLmFwcGVuZCh2YWx1ZXNb
MF0pOworICAgICAgICBtX3ZhbHVlcy5hcHBlbmQodmFsdWVzWzFdKTsKKyAgICAgICAgbV92YWx1
ZXMuYXBwZW5kKHZhbHVlc1syXSk7CisKKyAgICAgICAgLy8gQ2Fub25pY2FsaXplOyByZW1vdmUg
YW55IHRyYWlsaW5nIHplcm9zLgorICAgICAgICB3aGlsZSAobV92YWx1ZXMuc2l6ZSgpID4gMSAm
JiAhbV92YWx1ZXMubGFzdCgpKQorICAgICAgICAgICAgbV92YWx1ZXMucmVtb3ZlTGFzdCgpOwor
CisgICAgICAgIC8vIENvdW50IHRoZSBudW1iZXIgb2YgbGVhZGluZyB6ZXJvLCB0aGlzIGlzIHVz
ZWZ1bCBpbiBvcHRpbWl6aW5nIG11bHRpcGxpZXMuCisgICAgICAgIG1fbGVhZGluZ1plcm9zID0g
MDsKKyAgICAgICAgd2hpbGUgKG1fbGVhZGluZ1plcm9zIDwgbV92YWx1ZXMuc2l6ZSgpICYmICFt
X3ZhbHVlc1ttX2xlYWRpbmdaZXJvc10pCisgICAgICAgICAgICArK21fbGVhZGluZ1plcm9zOwor
ICAgIH0KKworICAgIFVpbnQxNldpdGhGcmFjdGlvbiYgb3BlcmF0b3IqPSh1aW50MTZfdCBtdWx0
aXBsaWVyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGNoZWNrQ29uc2lzdGVuY3koKSk7CisKKyAg
ICAgICAgLy8gaXRlcmF0YXRlIGJhY2t3YXJkcyBvdmVyIHRoZSBmcmFjdGlvbiB1bnRpbCB3ZSBy
ZWFjaCB0aGUgbGVhZGluZyB6ZXJvcywKKyAgICAgICAgLy8gcGFzc2luZyB0aGUgY2FycnkgZnJv
bSBvbmUgY2FsY3VsYXRpb24gaW50byB0aGUgbmV4dC4KKyAgICAgICAgdWludDY0X3QgYWNjdW11
bGF0b3IgPSAwOworICAgICAgICBmb3IgKHNpemVfdCBpID0gbV92YWx1ZXMuc2l6ZSgpOyBpID4g
bV9sZWFkaW5nWmVyb3M7ICkgeworICAgICAgICAgICAgLS1pOworICAgICAgICAgICAgYWNjdW11
bGF0b3IgKz0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1fdmFsdWVzW2ldKSAqIHN0YXRpY19jYXN0
PHVpbnQ2NF90PihtdWx0aXBsaWVyKTsKKyAgICAgICAgICAgIG1fdmFsdWVzW2ldID0gc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KGFjY3VtdWxhdG9yKTsKKyAgICAgICAgICAgIGFjY3VtdWxhdG9yID4+
PSAzMjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghbV9sZWFkaW5nWmVyb3MpIHsKKyAgICAg
ICAgICAgIC8vIFdpdGggYSBtdWx0aXBsaWNhbmQgYW5kIG11bHRpcGxpZXIgaW4gdGhlIHVpbnQx
Nl90IHJhbmdlLCB0aGlzIGNhbm5vdCBjYXJyeQorICAgICAgICAgICAgLy8gKGV2ZW4gYWxsb3dp
bmcgZm9yIHRoZSBpbmZpbml0eSB2YWx1ZSkuCisgICAgICAgICAgICBBU1NFUlQoIWFjY3VtdWxh
dG9yKTsKKyAgICAgICAgICAgIC8vIENoZWNrIGZvciBvdmVyZmxvdyAmIGNsYW1wIHRvICdpbmZp
bml0eScuCisgICAgICAgICAgICBpZiAobV92YWx1ZXNbMF0gPj0gb25lR3JlYXRlclRoYW5NYXhV
SW50MTYpIHsKKyAgICAgICAgICAgICAgICBtX3ZhbHVlcy5zaHJpbmsoMSk7CisgICAgICAgICAg
ICAgICAgbV92YWx1ZXNbMF0gPSBvbmVHcmVhdGVyVGhhbk1heFVJbnQxNjsKKyAgICAgICAgICAg
ICAgICBtX2xlYWRpbmdaZXJvcyA9IDA7CisgICAgICAgICAgICAgICAgcmV0dXJuICp0aGlzOwor
ICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGFjY3VtdWxhdG9yKSB7CisgICAgICAg
ICAgICAvLyBDaGVjayBmb3IgY2FycnkgZnJvbSB0aGUgbGFzdCBtdWx0aXBseSwgaWYgc28gb3Zl
cndyaXRlIGxhc3QgbGVhZGluZyB6ZXJvLgorICAgICAgICAgICAgbV92YWx1ZXNbLS1tX2xlYWRp
bmdaZXJvc10gPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYWNjdW11bGF0b3IpOworICAgICAgICAg
ICAgLy8gVGhlIGxpbWl0ZWQgcmFuZ2Ugb2YgdGhlIG11bHRpcGxpZXIgc2hvdWxkIG1lYW4gdGhh
dCBldmVuIGlmIHdlIGNhcnJ5IGludG8KKyAgICAgICAgICAgIC8vIHRoZSB1bml0cywgd2UgZG9u
J3QgbmVlZCB0byBjaGVjayBmb3Igb3ZlcmZsb3cgb2YgdGhlIHVpbnQxNl90IHJhbmdlLgorICAg
ICAgICAgICAgQVNTRVJUKG1fdmFsdWVzWzBdIDwgb25lR3JlYXRlclRoYW5NYXhVSW50MTYpOwor
ICAgICAgICB9CisKKyAgICAgICAgLy8gTXVsdGlwbGljYXRpb24gYnkgYW4gZXZlbiB2YWx1ZSBt
YXkgaW50cm9kdWNlIHRyYWlsaW5nIHplcm9zOyBpZiBzbywgY2xlYW4gdGhlbQorICAgICAgICAv
LyB1cC4gKEtlZXBpbmcgdGhlIHZhbHVlIGluIGEgbm9ybWFsaXplZCBmb3JtIG1ha2VzIHNvbWUg
b2YgdGhlIGNvbXBhcmlzb24gb3BlcmF0aW9ucworICAgICAgICAvLyBtb3JlIGVmZmljaWVudCku
CisgICAgICAgIHdoaWxlIChtX3ZhbHVlcy5zaXplKCkgPiAxICYmICFtX3ZhbHVlcy5sYXN0KCkp
CisgICAgICAgICAgICBtX3ZhbHVlcy5yZW1vdmVMYXN0KCk7CisgICAgICAgIEFTU0VSVChjaGVj
a0NvbnNpc3RlbmN5KCkpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgYm9v
bCBvcGVyYXRvcjwoY29uc3QgVWludDE2V2l0aEZyYWN0aW9uJiBvdGhlcikKKyAgICB7CisgICAg
ICAgIEFTU0VSVChjaGVja0NvbnNpc3RlbmN5KCkpOworICAgICAgICBBU1NFUlQob3RoZXIuY2hl
Y2tDb25zaXN0ZW5jeSgpKTsKKworICAgICAgICAvLyBJdGVyYXRlIG92ZXIgdGhlIGNvbW1vbiBs
ZW5ndGhzIG9mIGFycmF5cy4KKyAgICAgICAgc2l6ZV90IG1pblNpemUgPSBzdGQ6Om1pbihtX3Zh
bHVlcy5zaXplKCksIG90aGVyLm1fdmFsdWVzLnNpemUoKSk7CisgICAgICAgIGZvciAoc2l6ZV90
IGluZGV4ID0gMDsgaW5kZXggPCBtaW5TaXplOyArK2luZGV4KSB7CisgICAgICAgICAgICAvLyBJ
ZiB3ZSBmaW5kIGEgdmFsdWUgdGhhdCBpcyBub3QgZXF1YWwsIGNvbXBhcmUgYW5kIHJldHVybi4K
KyAgICAgICAgICAgIHVpbnQzMl90IGZyb21UaGlzID0gbV92YWx1ZXNbaW5kZXhdOworICAgICAg
ICAgICAgdWludDMyX3QgZnJvbU90aGVyID0gb3RoZXIubV92YWx1ZXNbaW5kZXhdOworICAgICAg
ICAgICAgaWYgKGZyb21UaGlzICE9IGZyb21PdGhlcikKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZnJvbVRoaXMgPCBmcm9tT3RoZXI7CisgICAgICAgIH0KKyAgICAgICAgLy8gSWYgdGhlc2UgbnVt
YmVycyBoYXZlIHRoZSBzYW1lIGxlbmd0aHMsIHRoZXkgYXJlIGVxdWFsLAorICAgICAgICAvLyBv
dGhlcndpc2Ugd2hpY2ggZXZlciBudW1iZXIgaGFzIGEgbG9uZ2VyIGZyYWN0aW9uIGluIGxhcmdl
ci4KKyAgICAgICAgcmV0dXJuIG90aGVyLm1fdmFsdWVzLnNpemUoKSA+IG1pblNpemU7CisgICAg
fQorCisgICAgLy8gUmV0dXJuIHRoZSBmbG9vciAobm9uLWZyYWN0aW9uYWwgcG9ydGlvbikgb2Yg
dGhlIG51bWJlciwgY2xlYXJpbmcgdGhpcyB0byB6ZXJvLAorICAgIC8vIGxlYXZpbmcgdGhlIGZy
YWN0aW9uYWwgcGFydCB1bmNoYW5nZWQuCisgICAgdWludDMyX3QgZmxvb3JBbmRTdWJ0cmFjdCgp
CisgICAgeworICAgICAgICAvLyAnZmxvb3InIGlzIHNpbXBsZSB0aGUgaW50ZWdlciBwb3J0aW9u
IG9mIHRoZSB2YWx1ZS4KKyAgICAgICAgdWludDMyX3QgZmxvb3IgPSBtX3ZhbHVlc1swXTsKKwor
ICAgICAgICAvLyBJZiBmbG9vciBpcyBub24temVybywgCisgICAgICAgIGlmIChmbG9vcikgewor
ICAgICAgICAgICAgbV92YWx1ZXNbMF0gPSAwOworICAgICAgICAgICAgbV9sZWFkaW5nWmVyb3Mg
PSAxOworICAgICAgICAgICAgd2hpbGUgKG1fbGVhZGluZ1plcm9zIDwgbV92YWx1ZXMuc2l6ZSgp
ICYmICFtX3ZhbHVlc1ttX2xlYWRpbmdaZXJvc10pCisgICAgICAgICAgICAgICAgKyttX2xlYWRp
bmdaZXJvczsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmbG9vcjsKKyAgICB9CisKKyAg
ICAvLyBDb21wYXJlIHRoaXMgdmFsdWUgdG8gMC41LCByZXR1cm5zIC0xIGZvciBsZXNzIHRoYW4s
IDAgZm9yIGVxdWFsLCAxIGZvciBncmVhdGVyLgorICAgIGludCBjb21wYXJlUG9pbnQ1KCkKKyAg
ICB7CisgICAgICAgIEFTU0VSVChjaGVja0NvbnNpc3RlbmN5KCkpOworICAgICAgICAvLyBJZiB1
bml0cyAhPSAwLCB0aGlzIGlzIGdyZWF0ZXIgdGhhbiAwLjUuCisgICAgICAgIGlmIChtX3ZhbHVl
c1swXSkKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAvLyBJZiBzaXplID09IDEgdGhp
cyB2YWx1ZSBpcyAwLCBoZW5jZSA8IDAuNS4KKyAgICAgICAgaWYgKG1fdmFsdWVzLnNpemUoKSA9
PSAxKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAvLyBDb21wYXJlIHRvIDAuNS4K
KyAgICAgICAgaWYgKG1fdmFsdWVzWzFdID4gMHg4MDAwMDAwMHVsKQorICAgICAgICAgICAgcmV0
dXJuIDE7CisgICAgICAgIGlmIChtX3ZhbHVlc1sxXSA8IDB4ODAwMDAwMDB1bCkKKyAgICAgICAg
ICAgIHJldHVybiAtMTsKKyAgICAgICAgLy8gQ2hlY2sgZm9yIG1vcmUgd29yZHMgLSBzaW5jZSBu
b3JtYWxpemVkIG51bWJlcnMgaGF2ZSBubyB0cmFpbGluZyB6ZXJvcywgaWYKKyAgICAgICAgLy8g
dGhlcmUgYXJlIG1vcmUgdGhhdCB0d28gZGlnaXRzIHdlIGNhbiBhc3N1bWUgYXQgbGVhc3Qgb25l
IG1vcmUgaXMgbm9uLXplcm8sCisgICAgICAgIC8vIGFuZCBoZW5jZSB0aGUgdmFsdWUgaXMgPiAw
LjUuCisgICAgICAgIHJldHVybiBtX3ZhbHVlcy5zaXplKCkgPiAyID8gMSA6IDA7CisgICAgfQor
CisgICAgLy8gUmV0dXJuIHRydWUgaWYgdGhlIHN1bSBvZiB0aGlzIHBsdXMgYWRkZW5kIHdvdWxk
IGJlIGdyZWF0ZXIgdGhhbiAxLgorICAgIGJvb2wgc3VtR3JlYXRlclRoYW5PbmUoY29uc3QgVWlu
dDE2V2l0aEZyYWN0aW9uJiBhZGRlbmQpIAorICAgIHsKKyAgICAgICAgQVNTRVJUKGNoZWNrQ29u
c2lzdGVuY3koKSk7CisgICAgICAgIEFTU0VSVChhZGRlbmQuY2hlY2tDb25zaXN0ZW5jeSgpKTsK
KworICAgICAgICAvLyBGaXJzdCwgc3VtIHRoZSB1bml0cy4gSWYgdGhlIHJlc3VsdCBpcyBncmVh
dGVyIHRoYW4gb25lLCByZXR1cm4gdHJ1ZS4KKyAgICAgICAgLy8gSWYgZXF1YWwgdG8gb25lLCBy
ZXR1cm4gdHJ1ZSBpZiBlaXRoZXIgbnVtYmVyIGhhcyBhIGZyYWN0aW9uYWwgcGFydC4KKyAgICAg
ICAgdWludDMyX3Qgc3VtID0gbV92YWx1ZXNbMF0gKyBhZGRlbmQubV92YWx1ZXNbMF07CisgICAg
ICAgIGlmIChzdW0pCisgICAgICAgICAgICByZXR1cm4gc3VtID4gMSB8fCBzdGQ6Om1heChtX3Zh
bHVlcy5zaXplKCksIGFkZGVuZC5tX3ZhbHVlcy5zaXplKCkpID4gMTsKKworICAgICAgICAvLyBX
ZSBjb3VsZCBzdGlsbCBwcm9kdWNlIGEgcmVzdWx0IGdyZWF0ZXIgdGhhbiB6ZXJvIGlmIGFkZGl0
aW9uIG9mIHRoZSBuZXh0CisgICAgICAgIC8vIHdvcmQgZnJvbSB0aGUgZnJhY3Rpb24gd2VyZSB0
byBjYXJyeSwgbGVhdmluZyBhIHJlc3VsdCA+IDAuCisKKyAgICAgICAgLy8gSXRlcmF0ZSBvdmVy
IHRoZSBjb21tb24gbGVuZ3RocyBvZiBhcnJheXMuCisgICAgICAgIHNpemVfdCBtaW5TaXplID0g
c3RkOjptaW4obV92YWx1ZXMuc2l6ZSgpLCBhZGRlbmQubV92YWx1ZXMuc2l6ZSgpKTsKKyAgICAg
ICAgZm9yIChzaXplX3QgaW5kZXggPSAxOyBpbmRleCA8IG1pblNpemU7ICsraW5kZXgpIHsKKyAg
ICAgICAgICAgIC8vIFN1bSB0aGUgbmV4dCB3b3JkIGZyb20gdGhpcyAmIHRoZSBhZGRlbmQuCisg
ICAgICAgICAgICB1aW50MzJfdCBmcm9tVGhpcyA9IG1fdmFsdWVzW2luZGV4XTsKKyAgICAgICAg
ICAgIHVpbnQzMl90IGZyb21BZGRlbmQgPSBhZGRlbmQubV92YWx1ZXNbaW5kZXhdOworICAgICAg
ICAgICAgc3VtID0gZnJvbVRoaXMgKyBmcm9tQWRkZW5kOworCisgICAgICAgICAgICAvLyBDaGVj
ayBmb3Igb3ZlcmZsb3cuIElmIHNvLCBjaGVjayB3aGV0aGVyIHRoZSByZW1haW5pbmcgcmVzdWx0
IGlzIG5vbi16ZXJvLAorICAgICAgICAgICAgLy8gb3IgaWYgdGhlcmUgYXJlIGFueSBmdXJ0aGVy
IHdvcmRzIGluIHRoZSBmcmFjdGlvbi4KKyAgICAgICAgICAgIGlmIChzdW0gPCBmcm9tVGhpcykK
KyAgICAgICAgICAgICAgICByZXR1cm4gc3VtIHx8IChpbmRleCArIDEpIDwgc3RkOjptYXgobV92
YWx1ZXMuc2l6ZSgpLCBhZGRlbmQubV92YWx1ZXMuc2l6ZSgpKTsKKworICAgICAgICAgICAgLy8g
SWYgdGhlIHN1bSBpcyB1aW50MzJfdCBtYXgsIHRoZW4gd2Ugd291bGQgY2FycnkgYSAxIGlmIGFk
ZGl0aW9uIG9mIHRoZSBuZXh0CisgICAgICAgICAgICAvLyBkaWdpdHMgaW4gdGhlIG51bWJlciB3
ZXJlIHRvIG92ZXJmbG93LgorICAgICAgICAgICAgaWYgKHN1bSAhPSAweEZGRkZGRkZGKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCitwcml2YXRlOgorICAgIGJvb2wgY2hlY2tDb25zaXN0ZW5jeSgpIGNvbnN0
CisgICAgeworICAgICAgICAvLyBBbGwgdmFsdWVzIHNob3VsZCBoYXZlIGF0IGxlYXN0IG9uZSB2
YWx1ZS4KKyAgICAgICAgcmV0dXJuIChtX3ZhbHVlcy5zaXplKCkpCisgICAgICAgICAgICAvLyBU
aGUgdW5pdHMgdmFsdWUgbXVzdCBiZSBhIHVpbnQxNl90LCBvciB0aGUgdmFsdWUgaXMgdGhlIG92
ZXJmbG93IHZhbHVlLgorICAgICAgICAgICAgJiYgKG1fdmFsdWVzWzBdIDwgb25lR3JlYXRlclRo
YW5NYXhVSW50MTYgfHwgKG1fdmFsdWVzWzBdID09IG9uZUdyZWF0ZXJUaGFuTWF4VUludDE2ICYm
IG1fdmFsdWVzLnNpemUoKSA9PSAxKSkKKyAgICAgICAgICAgIC8vIFRoZXJlIHNob3VsZCBiZSBu
byB0cmFpbGluZyB6ZXJvcyAodW5sZXNzIHRoaXMgdmFsdWUgaXMgemVybyEpLgorICAgICAgICAg
ICAgJiYgKG1fdmFsdWVzLmxhc3QoKSB8fCBtX3ZhbHVlcy5zaXplKCkgPT0gMSk7CisgICAgfQor
CisgICAgLy8gVGhlIGludGVybmFsIHN0b3JhZ2Ugb2YgdGhlIG51bWJlci4gVGhpcyB2ZWN0b3Ig
aXMgYWx3YXlzIGF0IGxlYXN0IG9uZSBlbnRyeSBpbiBzaXplLAorICAgIC8vIHdpdGggdGhlIGZp
cnN0IGVudHJ5IGhvbGRpbmcgdGhlIHBvcnRpb24gb2YgdGhlIG51bWJlciBncmVhdGVyIHRoYW4g
emVyby4gVGhlIGZpcnN0CisgICAgLy8gdmFsdWUgYWx3YXlzIGhvbGQgYSB2YWx1ZSBpbiB0aGUg
dWludDE2X3QgcmFuZ2UsIG9yIGhvbGRzIHRoZSB2YWx1ZSBvbmVHcmVhdGVyVGhhbk1heFVJbnQx
NiB0bworICAgIC8vIGluZGljYXRlIHRoZSB2YWx1ZSBoYXMgb3ZlcmZsb3dlZCB0byA+PSAweDEw
MDAwLiBJZiB0aGUgdW5pdHMgdmFsdWUgaXMgb25lR3JlYXRlclRoYW5NYXhVSW50MTYsCisgICAg
Ly8gdGhlcmUgY2FuIGJlIG5vIGZyYWN0aW9uIChzaXplIG11c3QgYmUgMSkuCisgICAgLy8KKyAg
ICAvLyBTdWJzZXF1ZW50IHZhbHVlcyBpbiB0aGUgYXJyYXkgcmVwcmVzZW50IHBvcnRpb25zIG9m
IHRoZSBmcmFjdGlvbmFsIHBhcnQgb2YgdGhpcyBudW1iZXIuCisgICAgLy8gVGhlIHRvdGFsIHZh
bHVlIG9mIHRoZSBudW1iZXIgaXMgdGhlIHN1bSBvZiAobV92YWx1ZXNbaV0gLyBwb3coMl4zMiwg
aSkpLCBmb3IgZWFjaCBpCisgICAgLy8gaW4gdGhlIGFycmF5LiBUaGUgdmVjdG9yIHNob3VsZCBj
b250YWluIG5vIHRyYWlsaW5nIHplcm9zLCBleGNlcHQgZm9yIHRoZSB2YWx1ZSAnMCcsCisgICAg
Ly8gcmVwcmVzZW50ZWQgYnkgYSB2ZWN0b3IgY29udGlhbmluZyBhIHNpbmdsZSB6ZXJvIHZhbHVl
LiBUaGVzZSBjb25zdHJhaW50cyBhcmUgY2hlY2tlZAorICAgIC8vIGJ5ICdjaGVja0NvbnNpc3Rl
bmN5KCknLCBhYm92ZS4KKyAgICAvLworICAgIC8vIFRoZSBpbmxpbmUgY2FwYWNpdHkgb2YgdGhl
IHZlY3RvciBpcyBzZXQgdG8gYmUgYWJsZSB0byBjb250YWluIGFueSBJRUVFIGRvdWJsZSAoMSBm
b3IKKyAgICAvLyB0aGUgdW5pdHMgY29sdW1uLCAzMiBmb3IgemVyb3MgaW50cm9kdWNlZCBkdWUg
dG8gYW4gZXhwb25lbnQgdXAgdG8gLTNGRSwgYW5kIDIgZm9yCisgICAgLy8gYml0cyB0YWtlbiBm
cm9tIHRoZSBtYW50aXNzYSkuCisgICAgVmVjdG9yPHVpbnQzMl90LCAzNj4gbV92YWx1ZXM7CisK
KyAgICAvLyBDYWNoZSBhIGNvdW50IG9mIHRoZSBudW1iZXIgb2YgbGVhZGluZyB6ZXJvcyBpbiBt
X3ZhbHVlcy4gV2UgY2FuIHVzZSB0aGlzIHRvIG9wdGltaXplCisgICAgLy8gbWV0aG9kcyB0aGF0
IHdvdWxkIG90aGVyd2lzZSBuZWVkIHZpc2l0IGFsbCB3b3JkcyBpbiB0aGUgdmVjdG9yLCBlLmcu
IG11bHRpcGxpY2F0aW9uLgorICAgIHNpemVfdCBtX2xlYWRpbmdaZXJvczsKK307CisKK30KKwor
I2VuZGlmCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTWF0aEV4dHJhcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTWF0aEV4dHJhcy5oCShyZXZp
c2lvbiA5MDM4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTWF0aEV4dHJhcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw5IEBACiAjaW5jbHVkZSA8Y21hdGg+CiAjaW5jbHVk
ZSA8ZmxvYXQuaD4KICNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5j
bHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiAjaWYgT1Mo
U09MQVJJUykKICNpbmNsdWRlIDxpZWVlZnAuaD4KQEAgLTI1OSw0ICsyNjEsMjUgQEAgdXNpbmcg
c3RkOjppc25hbjsKIHVzaW5nIHN0ZDo6c2lnbmJpdDsKICNlbmRpZgogCisvLyBkZWNvbXBvc2Ug
J251bWJlcicgdG8gaXRzIHNpZ24sIGV4cG9uZW50LCBhbmQgbWFudGlzc2EgY29tcG9uZW50cy4K
Ky8vIFRoZSByZXN1bHQgaXMgaW50ZXJwcmV0ZWQgYXM6CisvLyAgICAgKHNpZ24gPyAtMSA6IDEp
ICogcG93KDIsIGV4cG9uZW50KSAqIChtYW50aXNzYSAvICgxIDw8IDUyKSkKK2lubGluZSB2b2lk
IGRlY29tcG9zZURvdWJsZShkb3VibGUgbnVtYmVyLCBib29sJiBzaWduLCBpbnQzMl90JiBleHBv
bmVudCwgdWludDY0X3QmIG1hbnRpc3NhKQoreworICAgIEFTU0VSVChpc2Zpbml0ZShudW1iZXIp
KTsKKworICAgIHNpZ24gPSBzaWduYml0KG51bWJlcik7CisKKyAgICB1aW50NjRfdCBiaXRzID0g
V1RGOjpiaXR3aXNlX2Nhc3Q8dWludDY0X3Q+KG51bWJlcik7CisgICAgZXhwb25lbnQgPSAoc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oYml0cyA+PiA1MikgJiAweDdmZikgLSAweDNmZjsKKyAgICBtYW50
aXNzYSA9IGJpdHMgJiAweEZGRkZGRkZGRkZGRkZ1bGw7CisKKyAgICAvLyBDaGVjayBmb3IgemVy
by9kZW5vcm1hbCB2YWx1ZXM7IGlmIHNvLCBhZGp1c3QgdGhlIGV4cG9uZW50LAorICAgIC8vIGlm
IG5vdCBpbnNlcnQgdGhlIGltcGxpY2l0LCBvbWl0dGVkIGxlYWRpbmcgMSBiaXQuCisgICAgaWYg
KGV4cG9uZW50ID09IC0weDNmZikKKyAgICAgICAgZXhwb25lbnQgPSBtYW50aXNzYSA/IC0weDNm
ZSA6IDA7CisgICAgZWxzZQorICAgICAgICBtYW50aXNzYSB8PSAweDEwMDAwMDAwMDAwMDAwdWxs
OworfQorCiAjZW5kaWYgLy8gI2lmbmRlZiBXVEZfTWF0aEV4dHJhc19oCkluZGV4OiBUb29scy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5MDM4MikK
KysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEx
LTA3LTA0ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY1MgorICAgICAgICBGaXJlZm94IGFuZCBKYXZhU2Ny
aXB0Q29yZSBkaWZmZXIgaW4gTnVtYmVyLnRvU3RyaW5nKGludGVnZXIpCisKKyAgICAgICAgQWRk
ZWQgZm9yd2FyZGluZyBoZWFkZXIuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9Gb3J3YXJk
aW5nSGVhZGVycy93dGYvU3RkTGliRXh0cmFzLmg6IEFkZGVkLgorCiAyMDExLTA3LTA0ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgVHJ5IHRvIGZpeCBR
dCBidWlsZC4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0ZvcndhcmRpbmdIZWFkZXJzL3d0
Zi9TdGRMaWJFeHRyYXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9Gb3J3
YXJkaW5nSGVhZGVycy93dGYvU3RkTGliRXh0cmFzLmgJKHJldmlzaW9uIDApCisrKyBUb29scy9E
dW1wUmVuZGVyVHJlZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvU3RkTGliRXh0cmFzLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEgQEAKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdGRMaWJFeHRy
YXMuaD4KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDkwMzgyKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDctMDQgIEdhdmluIEJhcnJh
Y2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNh
bSBXZWluaWcuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NjUyCisgICAgICAgIEZpcmVmb3ggYW5kIEphdmFTY3JpcHRDb3JlIGRpZmZlciBpbiBO
dW1iZXIudG9TdHJpbmcoaW50ZWdlcikKKworICAgICAgICBPdXIgYXJiaXRyYXJ5IHJhZGl4ICgy
Li4zNikgdG9TdHJpbmcgY29udmVyc2lvbiBpcyBpbmFjY3VyYXRlLgorICAgICAgICBUaGlzIGlz
IHBhcnRseSBiZWNhdXNlIGl0IHVzZXMgZG91YmxlcyB0byBwZXJmb3JtIG1hdGggdGhhdCByZXF1
aXJlcworICAgICAgICBoaWdoZXIgYWNjdXJhY3ksIGFuZCBwYXJ0bHkgYmVjYXN1ZSBpdCBkb2Vz
IG5vdCBhdHRlbXB0IHRvIGNvcnJlY3RseQorICAgICAgICBkZXRlY3Qgd2hlcmUgdG8gdGVybWlu
YXRlLCBpbnN0ZWFkIHJlbHlpbmcgb24gYSBzaW1wbGUgJ2Vwc2lsb24nLgorCisgICAgICAgICog
ZmFzdC9qcy9udW1iZXItdG9TdHJpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAgICAgLSBVcGRh
dGUgZXhwZWN0ZWQgcmVzdWx0cyBmcm9tIEZBSUwgdG8gUEFTUy4KKwogMjAxMS0wNy0wNCAgTWlo
YWkgUGFycGFyaXRhICA8bWloYWlwQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBcyBvZiByOTAz
NzIgdGhlcmUgYXJlIFdlYktpdDIgTWFjLXNwZWNpZmljIHRlc3RzOyBkb24ndCBleHBlY3QgdGhv
c2UgdG8KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvbnVtYmVyLXRvU3RyaW5nLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL251bWJlci10b1N0cmluZy1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDkwMzgyKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9udW1i
ZXItdG9TdHJpbmctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMiw0MSArMTIsNDEg
QEAgUEFTUyAoMTIzNC41NjcpLnRvU3RyaW5nKDEpIHRocmV3IGV4Y2VwdAogUEFTUyAoMTIzNC41
NjcpLnRvU3RyaW5nKHRydWUpIHRocmV3IGV4Y2VwdGlvbiBSYW5nZUVycm9yOiB0b1N0cmluZygp
IHJhZGl4IGFyZ3VtZW50IG11c3QgYmUgYmV0d2VlbiAyIGFuZCAzNi4KIFBBU1MgKDEyMzQuNTY3
KS50b1N0cmluZygnMScpIHRocmV3IGV4Y2VwdGlvbiBSYW5nZUVycm9yOiB0b1N0cmluZygpIHJh
ZGl4IGFyZ3VtZW50IG11c3QgYmUgYmV0d2VlbiAyIGFuZCAzNi4KIFBBU1MgKDEyMzQuNTY3KS50
b1N0cmluZygyKSBpcyAiMTAwMTEwMTAwMTAuMTAwMTAwMDEwMDEwMDExMDExMTAxMDAxMDExMTEw
MDAxMTAxMDEwMSIKLUZBSUwgKDEyMzQuNTY3KS50b1N0cmluZygzKSBzaG91bGQgYmUgMTIwMDIw
MS4xMjAwMjIxMDAwMjEwMDEwMjEwMjEwMDIyMDIuIFdhcyAxMjAwMjAxLjEyMDAyMjEwMDAyMTAw
MTAyMTAyMTAwMjIwMTIwMDExMDIyMjIwMDEyMTEwMjEyMTExMjIxMDIxMjAxMDAwMTAyMTAyMDAy
MDAwMTAwMjEyMjIwMTExMDAwMjIxMDIxMTExMTEyMjAwMDAxMjAxMjEwMjAyMDIwMjIyMjIwMTIy
MjEwMDIwMjAyMTEwMTIyMjExMjIxMTIwMDAxMDAwMTExMDEwMDEwMDEwMDIyMjIwMjIwMTIwMjAw
MTAyMjAwMjIxMjIwMjIxMTAyMDIwMDIwMDIyMDIyMjIyMDIyMTIwMTAwMjEyMDEyMTIwMTIyMjAw
MjExMjExMTEwMDAwMDAyMTEyMDAyMDAyMjIwMDAxMTIwMTIxMTIyMDIxMTExMDIxMDIyMjExMjAw
MDAyMTIxMTEyMDIyMDEwMjIxMTEwMjExMDAyMjExMjAwMTAwMTEyMjAwMjAxMDAyMjAwMjEyMjEx
MTAwMDIyMTIxMTEyMDAwMDIyMTIyMjExMDIyMjEwMDIwMjAyMjAwMDExMTAxMjAwMjEyMTAyMTEw
MTAyMjEyMTEwMDEyMjAwMTExMjEyMTAxMTAwMDAxMDExMjAxMDIwMDAyMDIwMTEwMjIwMDIyMjAy
MjIxMDEwMTAyMjEyMTEwMDAxMjAwMTAwMjIxMDIwMDIyMTAwMjEyMjEwMDIxMjIyMTEwMjExMjAy
MDExMTExMDEyMDIxMTAxMDAwMDExMjExMTExMjAxMjIxMjAxMjIxMTAyMDEyMDEyMjIwMjAyMjEw
MTEwMDIxMjEwMjIyMDAyMDEyMTAxMjIwMDAwMjIwMjAyMDAwMDEwMDAwMDAyMjEyMjExMTIyMDAy
MjAxMDAyMjIxMjAyMTAwMjAwMDEyMDEyMDIxMjEwMTAyMDAwMTEyMTAwMjAwMDEyMTAyMTAxMjEy
MDIwMjIxMDIxMDExMTAxMjIwMjAxMDAwMjAwMjEyMjIxMDIwMTIwMTIyMjIyMTIxMjExMTExMjEx
MjExMjExMDEyMTIxMjIwMjEwMDEwMTAyMjIyMDEyMDAyMjEyMDAwMTEyMjAxMTExMjExMTExMTEx
MDIwMjIyMjIxMTAwMjIyMjIxMTIyMDAwMjAwMjExMDAyMDIyMTAwMjAwMTIyMTIwMDEwMDExMDIx
MTExMTEyMjEyMDEwMjAyMjIyMDEwMDAyMTAyMjAxMjEwMDAxMDAyMjAxMjExMTEyMjIxMjEwMTEx
MTAxMDExMDIwMDEwMDIwMjIwMjEwMTEyMDEyMDAxMDEyMDAwMDEyMTAyMTAxMjEwMDAwMjAxMjEx
MTAxMDIxMTAyMTAyMDEwMTAwMjExMjIwMTIyMDExMTExMTEyMDExMDIuCitQQVNTICgxMjM0LjU2
NykudG9TdHJpbmcoMykgaXMgIjEyMDAyMDEuMTIwMDIyMTAwMDIxMDAxMDIxMDIxMDAyMjAyIgog
UEFTUyAoMTIzNC41NjcpLnRvU3RyaW5nKDQpIGlzICIxMDMxMDIuMjEwMTAyMTIzMjIxMTMyMDMx
MTEiCiBQQVNTICgxMjM0LjU2NykudG9TdHJpbmcoNC45KSBpcyAiMTAzMTAyLjIxMDEwMjEyMzIy
MTEzMjAzMTExIgotRkFJTCAoMTIzNC41NjcpLnRvU3RyaW5nKDUpIHNob3VsZCBiZSAxNDQxNC4y
NDA0MTQxNDE0MTQxNDE0MTQuIFdhcyAxNDQxNC4yNDA0MTQxNDE0MTQxNDE0MTQyMDAxMzMwMTE0
NDI0MzQwMzEwNDAxMjQzMzAyNDQwMjMxMjQyMDAwMTEzMDQzMTIzMTEzMjQxMDAzMjAzMTAzMjIy
MzIzMzQ0MDEyNDE0NDQwMjMzMDEzMDE0MjQzMTE0MDI0MTAzNDM0NDA0NDAxNDQyMzQxMjEyMjEw
MDQwNDIzMTMyMTQ0MzMyMjMzMTIzNDAzNDQ0MjE0MzMzMDM0MDMyMTIwMTIyMzQyMTAxMzA0NDQ0
MTAwMjEzMTMwMjIxMzEyMTI0MzAyMzEuCi1GQUlMICgxMjM0LjU2NykudG9TdHJpbmcoNikgc2hv
dWxkIGJlIDU0MTQuMzIyMjQ1NTQxMzQ0MzAyMzMuIFdhcyA1NDE0LjMyMjI0NTU0MTM0NDMwMjMz
MjMzNTU0NDE0MzI0MjI1MTU1NDE1MTMuCi1GQUlMICgxMjM0LjU2NykudG9TdHJpbmcoNykgc2hv
dWxkIGJlIDM0MTIuMzY1MzIzNjYxMTExNjUzLiBXYXMgMzQxMi4zNjUzMjM2NjExMTE2NTI1MDAz
MDA2MzIyMDAxMTA2MjYyNTI2NDIzNTAyMjM2NjAzMTM1NTAwNjQyMzU2MjQwMDM1MzM1MTAzMzUx
NDYwNDQ0MzY2MTIzMzEyNjMwNjM1NDQ2NjA2NjI0MDY2MjUyMDAzMzMxMjExMDIyMjAwNDYxMjU0
MjIxNjM2NDMwMDUyNTUzNDMzMzIyMTMwNDE1MDQ0NDIwMzE0MTIxMDUwMDE2MjMwMjUxNjIxMDQz
NDMxNTE1MjIzNDM0MDMyNjYwMzYzNTQ2MTUwMTMzNjI0MjExNjIwMzMxNDE1MzM1NDY1MTEyNjUz
MjEwNTM2NTQxNTExNjUwMDM0MDUwMTUwNTUzNDE0NDE1NjY1MjAzMDU1NDAxMjQ2NTYyNTU2NTE2
MTMzMjY0NTMzNDIyMzY1MTE0NTEwNDQyNTU1NDUyNjMwMjAyMzAzNDY1NDYwMDA2NjU2NDUxMjEy
MzAxMjUyNTU0NjQwNDIxNjExMjAyMDM2NDEyMDYxMDE0NDAxMjQzNDExNjE2MjIwMTI0MzMyNTAz
NjE2NDA0MDIxNTEyMDY2NTQxNTIwMTMyMDIyMTY2MjMzMzUyNjIwNDM2MDA2NjAxNjU0NjE1MzUx
MTQyNjA1MjI1MDUxMzMxNDU2NjU1MjY1NjQ0MTA1NDY0NDQwNjIwNjEyMTMyMDA0MTAyNjMxNjEx
NDAxNDExNTI1MzYzMDAxNjQ0NjQyMzYwNTQwNTE0MjI1NDE2NTIxNDQwMzI2MjU1MjI1MTYyNjAz
MDUzMzMxMzAzMzE2NTEwNDYxMTA0NTAyNDU1NTU0MTYwNjQ1MjAzMzQxNjMxMzU2NTIzNDMwNjUx
NjUwMTU2NDIxMjE0NDY0NDM0MTI0MzIzMzY0MzEyMjA1MTE1MDE1NTQzNDUyMjMwMjIyNDU2NjYy
MzEzNjQ1MjQxNjMyMjIyMDMyMjQzMTAxMzMzNTYwNTI0MzUzMTUzNTYyMTQxMzY1MjY2NTEzMzY1
MjEzMDA2MjQ1MTQ2NjIzNTMwMjY0MzQ0NjQxNTQyNTA1NTQ1NDExMjAxNDMzNTQzMDMwMzIxMTUw
MDEzNjY2NjIyNjAxMjQ1NDExMTAwNjE1MTM0NjQzNjM0MTAzNDM1MjYyNjUyNjA0NDA2MzU2MjU0
MzM0MTE2MjIwMDMyMzQ2MTAyMjA1NDMxMjQxNTA2MjIyNDYzNDE1NTEzMzYyNjU1NDE2MjQzMTU0
NDA1NTQxMjIwMTYyNDYxNDM1NjAxNDMxMjYwNDEyMjUwMDMwMS4KK1BBU1MgKDEyMzQuNTY3KS50
b1N0cmluZyg1KSBpcyAiMTQ0MTQuMjQwNDE0MTQxNDE0MTQxNDE0IgorUEFTUyAoMTIzNC41Njcp
LnRvU3RyaW5nKDYpIGlzICI1NDE0LjMyMjI0NTU0MTM0NDMwMjMzIgorUEFTUyAoMTIzNC41Njcp
LnRvU3RyaW5nKDcpIGlzICIzNDEyLjM2NTMyMzY2MTExMTY1MyIKIFBBU1MgKDEyMzQuNTY3KS50
b1N0cmluZyg4KSBpcyAiMjMyMi40NDIyMzM1MTM2MTUyNCIKLUZBSUwgKDEyMzQuNTY3KS50b1N0
cmluZyg5KSBzaG91bGQgYmUgMTYyMS41MDgzMDcwMzcyMzI2NS4gV2FzIDE2MjEuNTA4MzA3MDM3
MjMyNjUwNDI4NjE3Mzc3NDgzNzYzMDM3MjA2MDMyNTgxNDAyNzI0NDQ4MDA1MTcyMjIyODgxODcw
NjY3MzU4NDg0NjAzMDQzMzEwMzI4NjgxNjYxMjYyNzgyNzM2NjIwODI4ODI3NjMyNTE3NjU4MDc1
NDQwMDA3NTA2MjgwMTUxNzU2NzQzNzI4NDYwMjU0NTI2Mzg0MzczMjc1MDMxNTYyMTA4MDc4NDMw
ODU0NTAwODU4NDI4MzIyMjYwNDM1MDc3MjQxMjc3MzE4MDQ1NTM0MDAzNDYzNjA2NjQyNjI4Mjgz
MzM4NTQwMTYxMDgzNjI3MDc4MzI1ODQyNDY2NDQzNTI0MTAwNDc0NDY1NzY1NzM2NTE4NjY4MzQw
NzcyODA2NTM1NjAyNjY2MDEwMDA4NTc0ODA4MTA4NzY3MDYwNTE2NzcxMjAxNTMyMDE3MjM1NTIy
NzIzNDM1NjYzMDYyNTgzNjUxODg3Nzc0NDc1NDczNTU1NjcwMzM4ODE2Mjc2MDQ4MTQ1NDQ0NDIy
ODg0MDg4NzU2MDYyNDA2ODMyMDU3NjEwNDI0NDQ4NTEyMjg2MzA3MjY1MzAzMjY1NDQ4NzcxNDMz
NDIwMzIyNjcxNTE2MTE2MDE3MjM1MzAyMTc0MTI0MjM2MzMyNDgxODE0NDQ2NDIwMjgxMjUxNjI4
MDM4MTc3NTUwNzYxMzcwMjU4NTc4ODU4MzQyNDg4MTEyNTgwNzE4NTg4ODUzODY3NjIxMDgzMTQ4
NjE0NDU2MjM3NTg2NDI2MTM0NTE0NzM4MzIyMjMyMjI3MjA1NTYzNDU0NzM2MzMwNjY4MzQwODM2
NTU3Mzg2MDQyNTIzNDM3MzU0ODg3MzY4MTYzODU0ODExMDI0Njg2ODYwNDEwMDc0Njg4MzE2NTcy
MTI0NDY3NTc1MTA0ODAxMjEyNjc4MjE1Nzg3ODE1NDM1MzcxMzM3MTc1ODQ2MjQzMjAwMzE4MzU4
MjUyNjAxMTU4Njg0NDM3ODA1MzIwMDgyNzMzMTAwODYyNDUxNjAxMDU1NDQ1NjcxMjgwNzU2MzEw
ODM0NzA0NjY1NzY3NDY2NTY1MTEzMTQyMjE0NDU1MDI1NjE2ODA0NzAxNDIxNTY3NzAzMDE0MTQ0
MzU4NzAwODEwNTYxMDM3NTM0MDUzMzY1ODM4NDM4NTAwMzI2NjA0NzAxNDA2NjYzMjc4NDUxMjQ0
MDMwMDg2NTYxNjYwMjc2NTgyMDE2NDI1ODg2NzUwNTgwMjY2NzE2MzI0MzA4NTc2NzMwMTQ1MzAw
NjI3NDI2NjU2MDgzODA0MjYxMzY2NjY1MzAyMTczNzQxMjE3NjU1Mjg3NDI1OC4KK1BBU1MgKDEy
MzQuNTY3KS50b1N0cmluZyg5KSBpcyAiMTYyMS41MDgzMDcwMzcyMzI2NSIKIFBBU1MgKDEyMzQu
NTY3KS50b1N0cmluZygxMCkgaXMgIjEyMzQuNTY3IgotRkFJTCAoMTIzNC41NjcpLnRvU3RyaW5n
KDExKSBzaG91bGQgYmUgYTIyLjYyNjc0YTBhNTg4NS4gV2FzIGEyMi42MjY3NGEwYTU4ODQ5MTQ1
Njg0YTQ2MjUwNzM4NDIxOTc4Nzg3ODk1NDczNzY4OTk4OWEzNDc2NDc2ODA4NzYwOTVhMjM0NTg2
MDg4NTA0NjAzMTI4N2E5YTE2OTRhMzk3MTMxOTM0MTQyMDI2NzQ1MTY2YTcwNDM0NDc3M2E3Mzcw
MDgwMjY5NDY4MzEyNTM0Mzk4ODk0MTc1NTU0NmE4MTQ4NDk1OTRhMzY0MDI5NjA3YWEwNzcxYTI0
NDcwNjg5MzBhYTU1Nzc1OTk2ODk3MjU3YTM4NTU3MTYzNDAyODZhOTk2OTM5NjY5ODY4NDI1MDU2
YTQyOTQ0YTQ1NDM3MjUyMDIwOTk2MDUzNDMzMTYwNDU4Mzg2NTkyMDc1NjJhMDA1MTlhNDAyMzYy
MmE4MjYwNjUzOWE5NDczNjY0NTMxNzA1NmFhOTQ4MjQ2OGE5OTY5OTRhMzQ3NDcxMTUzYTcxYTg2
ODRhODgxNzg2NjM0OTI5NDEwMjMxNTU0MTMzMzk2NDY2ODEwYTEzMTAxMzc5OTlhYTk5MTEwNzY4
MjEwOTlhMjAyNDc1NDEyMTM3MTUxMTgxMjMwMTk1NzQ2MzY0NDEyMDk0NTI0MTQ5MTRhNjk2YTI5
Njk4NDkzMjg5NDQ1MzBhMzQ4NDQ1MzM5MjI5NjUzMDY4NDhhOTVhMjE4OTQ1NDMxNjE5Mjc4NzMz
ODA3MjI0MTExODAzMjEyMDc1NzgwOGEyNTg4YTkwMGE3NDE5MzkxMzI0MDYxYTU0NGFhMWE3NGE4
YTkzNzM2NjkzNjI5MjdhNDAyMGE2MjhhNzM0MWE5MjA1NTkzODJhNDczMjkxNDM5Mzk0YTUyNDQ3
NDU1Mjc4MTkxYTAwNzQ5NDQ5OTEyMjM0NDZhMDk1Mjk4NTc5MzhhODk0NDE4MTg4NDcxNGEzNzU5
MjQxNjMwOTY1MjU5NjA2MGExNTk1MDE2NzI1MzQxNDM3MDI4NzU5MzcyOTM4NjU1MDM4MDczMGFh
MjEwNTlhMDQxMzFhMjc0OTM2YTg0MzM0ODkxOTMyOTYxMjEzMzI3MTk5ODM3OGE1NzUyOTc5NDI1
OWE1NjQ0YTUxOTE1ODEyYWExMDIzMjA3MjE0MjI1MTE1MzM0MzYwNjQwMjZhMjY4YTQ2Nzc0MDEz
MTA4NzA2MjAzODY5MjVhNjIyNDU0MGE3OGE4MDMyOTQ1MDY1MDE3NDcwNzg1MDg0NzkzMjA3NzYz
YTNhMDJhOTQ0OTEyNzQ0MzY1OTg1MWE5ODI5NzkyMDMwMDM1MzQwMjA4MTM0NDAyOTM5OWE5MTIx
ODUyNTExMTA1NzE2YTkzMjUwMTMyMjIwNzQ1NTFhNDY2OTczOTk5LgotRkFJTCAoMTIzNC41Njcp
LnRvU3RyaW5nKDEyKSBzaG91bGQgYmUgODZhLjY5NzkzOGIxNzcwMS4gV2FzIDg2YS42OTc5Mzhi
MTc3MDEyNzI5MGI5OS4KLUZBSUwgKDEyMzQuNTY3KS50b1N0cmluZygxMykgc2hvdWxkIGJlIDcz
Yy43NGE5MTE5MWE2NS4gV2FzIDczYy43NGE5MTE5MWE2NGNiODY4NTBiYzA4YTY5NDM0MGM3NjU5
Nzk2MzRhMDEwNzA2OTkxYzA4OGE2MTAxOGIyOWExNmE3NDA5Mzc5NTY0MDc5Mzg0NmE3NTIwNTg3
ODE2YmE1NjQwNWI3YTg3Mjg2OWIzOTVjMzM2Y2E1MTk0NzRiYWExNzUzOTE2OTE3M2E4ODBiNDlj
MTc4MDc0YmE1NTFhNTc4MWExMTUxNTI3OTMzMjQyOTFiOTI2MGI2MDMzMzU3Mzk1NTczNzg0NWIw
M2EyMzIxYTY1Mjc3YTc4MDkyM2IyNjI4OTg1OTc5NzNiYzRiNjY5NzA1NjgwYTBiMWI4OGIzNjZi
NjM4NmM5NjIwODk3OWMxNGE5NjMyYzUxNjMyNjg4MzUyMjg0MDE2NWIzOGM4YjQxNWI3YTMzOWFi
YzZjYTcwNTFiMGFjNzAyNzcyNDRhMDU0NzdiOGEwYTA5Y2FiMDcyYTI3YjkyMDM4OTQ3N2I2NTYx
NjgzMTExNjUxNDQxOWM0NDUxMjk2N2E5MmIzOWNhNzNhYzAxYzQ2MWI2NzM1Y2EzMWJjYzE3YWJh
N2E3NjQxMmE3YTU5OWE4YzIxN2M2YTc0YTY3YWE2YzQ2NjQ0MzIwNjU3MzJjYWE3YzI0YTE4NTYx
NzA3NDg2NDdjMmIwNDljMTljNTcyMzIzYzAzMzAxYzI4M2I2OWNiNDZiMDlhMDQ1YjQ0NGE0Yzdj
ODI5MDE2NTY1ODMyNjc2OTczODliMzE4YTczYjE3MWExODQwNjMyNGE3OGI1YzQ3OGE5YzY3Yzk5
Yzg3N2IxMDc0NDhjYWM2NTE5NDU1NzBhODMyMjBiYWE0YTMwNDgxNTcxODk4NDVjYjY2YjczNjFj
MTI5Y2MzMDE2YzUyYzRiODU4Y2IwODc0Y2ExMjJiOGI3YmE5MzMzYWE5NDYzOTFhMjRiOGM4Njk1
ODk2ODc3M2JjMTgyNzgwMjJiMWJhNzZiMjQ3MjdjMmNjYTU1NDQyNjk3NTQ5MzkyYTE1MjkyNzEz
OTIwOGMxMjc0NWJjMjZhNWMxNzQzMjMzMjk5MGEzMjY3OTE1YjA2MzMxMzc0YTdhODRiOTQ2OWMw
MjA4MzU4MjkwMzM3Yzk5Y2IzMjNhOTA3NmEyODRjNWIzMThiYzgyNjk4OWM4Yjg2NjNiYzI0OWE5
YzY4NzM5NTUwNDk1ODgyNWMxYTU0MWIwODcxMGJiNjQ3Mjg4Y2E0YzExNzljYzJhYzg0NzYxMTIz
YTdiMjc1OTEwY2I3YTQzYzE4YzI5M2IxYzc1NGIwMWNiOWEyMTE3NjczNTZhNjI2ODg3OTgwYjM4
NDgyMmMxNGE1NzQ5NDMzMTk0NmE1LgotRkFJTCAoMTIzNC41NjcpLnRvU3RyaW5nKDE0KSBzaG91
bGQgYmUgNjQyLjdkMWJjMmNhYTc1Ny4gV2FzIDY0Mi43ZDFiYzJjYWE3NTczNWNjYjQ1OGEwZDBi
NmJiNjEzMWI5MTE0NTM3LgotRkFJTCAoMTIzNC41NjcpLnRvU3RyaW5nKDE1KSBzaG91bGQgYmUg
NTc0Ljg3ODk1OTU5NTk2LiBXYXMgNTc0Ljg3ODk1OTU5NTk1YTRiYmFjODBiYzFlOTBlZWI1YmM4
YzE4YjNkYzc3YTU5NjIxMTZiMTU5ZDY2YmJiN2JkOTVhNGM3OTg0YzYzMzIyNDM0NjE1ZTgwMjM1
YjhhNDgyNjY5YTg1ZTk3MjE4YzQxNTE4ZTAwZWI4OThhYmE0NjM1OTNkM2I0ZDAwZTdkYzFkMDM0
M2NkMjcxNjEwOTZkZDgxMDU5MzY2OWQxNTYxOTgyYmNjMzVjZGEyZTU0YzI4ZGU3NzU5YzE1ODZh
ZGM4NjcyMDliMDM0MjkzMDM5ZTAzYmRjZTI5Y2I2YThiZTdkNjVlMDk4NDQwOTQ5ODlhMmQ1MzY2
M2QxMjIzMzBiYzk0MDQ4ZDFiZDY3NzIyYTg2ZGIwNjhhMDY3OTAyNWQ3OGRiOTMxMjI3MmM4Yjkx
NjcxNTk2ZDc1ZDgwYzUzMzMxZWIwMTg1NzljODMxMTVjMmQwMDU4MWRiOTEwZThlNGNiNDRjNGM5
NThjOGQ4NmRkNTlkNTU0MzliN2M4NDlkYTMyMTMwZGVkNTNhNjk3YTI2YThkY2VhNmI4ZGRjMmFk
MDQ3NjI0YmJhOTIyOTA5ZDhjMmQ0ODQ2MGJjMzNhMmU4MTZkOWVjZGUxM2Q2ZDI0ZWU2NTg5YjBh
ZDlkNjk2Y2MyODc1M2I4MDIwYWQyMWU4NmFjNDM2MzkxNGFkYzRhODcxMzlhYjE4ODMxMzQzOWNk
MmVhODYyMmI0YmQ1NDAzM2U4YTRhNmU2MWE4MGM4MjI5ZGMzNzM5OWQ3Mzk3OGQxZDM0NDNiMzFj
OTg3ZTE1ODkwNDIxNGNjZTc4NWQ4NGUyMmUyYTYwNjIzYjE0MTI5MmU2NzU3NWIxZDFhMDUwZGJj
Y2QwMmM0NzMyNjM4ZDI0YjRjMjI2ZTlkY2MxYTM4N2NkN2QyYTFlNzk3ZTA3NTdhOWRlMTA4ODQ2
NzE5YWFiMjk5OWI1ODY2OWIyMWFiMDZjZWUzYWM2ZTI5OTkwNzgxNTA1OTU4NTk1YTRjZTBiZTA3
MTBjNWIyMTkwMzY1YTJkYmJiYzVlZWE0OTkzNjY1ZTFkMjUyNjZkZTM3YzE5NjA1NDg4YTJiMWNl
MDU0MzYxMDk3ZTYzYzA4ZWJiYjdkZTcwOTI0NzZkZGIwYjUyYzg5NDcwYTk1N2I5OTliMzRiMmJj
YjczMDA1M2U4OWVkNDg3ODlkOWEyMDQwNWIzNjBkMDg0YjM4MDU2NTk5MDBiZDhiODMxODUyOTI5
YmI1NDJlNDVlMzgzNmMyNmM0MjNlODQyMTcyNDYxOWMyYTk3MjVlNDM3Yzk2YTgzNDg0OTYxOTg1
ZGRjMmQ0ZDhhMDYwZGFlMTE3ZDcxMGMuCitQQVNTICgxMjM0LjU2NykudG9TdHJpbmcoMTEpIGlz
ICJhMjIuNjI2NzRhMGE1ODg1IgorUEFTUyAoMTIzNC41NjcpLnRvU3RyaW5nKDEyKSBpcyAiODZh
LjY5NzkzOGIxNzcwMSIKK1BBU1MgKDEyMzQuNTY3KS50b1N0cmluZygxMykgaXMgIjczYy43NGE5
MTE5MWE2NSIKK1BBU1MgKDEyMzQuNTY3KS50b1N0cmluZygxNCkgaXMgIjY0Mi43ZDFiYzJjYWE3
NTciCitQQVNTICgxMjM0LjU2NykudG9TdHJpbmcoMTUpIGlzICI1NzQuODc4OTU5NTk1OTYiCiBQ
QVNTICgxMjM0LjU2NykudG9TdHJpbmcoMTYpIGlzICI0ZDIuOTEyNmU5NzhkNSIKLUZBSUwgKDEy
MzQuNTY3KS50b1N0cmluZygxNykgc2hvdWxkIGJlIDQ0YS45YWViNmZhYTBkYS4gV2FzIDQ0YS45
YWViNmZhYTBkYTJjNWU4ODc4OGQwZjUyZDJlYmMwMjNhZTU0OTQ5MjZkZTU1MDcyZWU0MTE0ZmIz
OGdhNTI1OGRkMjRhMWdhNDI1MGJiMzIyNDdnNTgyMTE0ZzkyZ2M5OTQ2MmNiYjVkODU4NGEyMWQw
OWVhYWRnMDBkYzQwZWM5MzhnZ2RiOWUyMDkxZ2YyYWM0ODI0NDJmYmNiYzI4Y2RlODJhYTZlNzll
NmE1N2FmMzhlNTFmZzE3NjUyNmRhYmM2NTQ5OTAwYzg5NzYxNDBiYjRmNWNkMGQ5YzY0MmJkYmI3
ZTcxMzVkMGVhMzVmZWI1ODA1ZTdiYTk3OTc1YTFmMmZhNDVmNjJlNzc0MzA3Zzc2MGVjMjMwZTQz
MDY0ZWRnNTE3Z2Y3YzljOTNkMjRjNDNiZzI0MDk0NDA2YjBiNDc5MmNnNTRhMzhmMmIzMDY1YWdn
MzkwZWZlMzNlNzY1NWYwMjg4ZDMwZWM2YjZjYjk5NDk2MTYyNWQxOGc2MzZiZjFnMzQ0M2MyYTln
NWRjMjIyYzU0NmM0MTdhNTBiM2U3NGRmOTRkMjE3YmdlZWU4ZmFkMWNmNWMyNTE3ZzllN2JhYmVj
ZDM4YjcwOTJmZDljZzUxOWcwMjlnZjcwMWE4MjllOThnMzc0MDJiYzQ5NmRjM2cwZjE0NzM1NjRi
MzNhZWVkZTVjYzcwZ2U1ODc3OGRkYWQ3MzBmZWVmNDA5NDQ5YWNnZDJhMmJjYzE5MTdiNzk3Yzk0
ZWM1N2ViNGc4ODA1ZTk3MDhjNWc1N2E3ODYyNjAyOWI1YzI0N2FlMTJnZjhlN2M1NGJkODAyNGNm
Z2M2M2ExZjcyM2QyOTVjZGYzZ2RmODNnZzE3NzM2YTg0NjE0ZzFmNjhkZGQxZTQ0OTRmMjdkNjFi
YTU5MDFmMjM4NGQ2ZGVkYzc4NzViMWJhYmI4ZzA5NTcwZmEzZmQzMmYxOTdkNTlmZzQ5OTcyOTI2
MWc4ZmdiZzc1M2VhZDRkYWZjZmYxZmE4ZWY3MTlhNjk0ZGI5MmE4MGY1MzVjNjEyOGVnNTY1OWE2
OGVmZGdnZDliMzJlYzY5NzBlN2NiNDFmYmc5OWFmMDJkMzhjMWVnYjgyODQwN2VlZ2NjNGNmOTg1
Yzc3Z2dkZjVnYzViNTRhOGc3YmRkNGFnMjMxOGdkZjM1MTJlYTdhNDFkMWJlMmM2NjVnYmM1NjE5
MzQyYjkyMDBmMGdkYTljZDJjOTU3YWY2ZDI5Z2VnZWU3MjI4YjdkYmFlN2Y2Nzg4YzRlZzQ1NTZh
OWNhMmUxM2U3NTU4OGczNjliYTEyNzJhMWI0LgotRkFJTCAoMTIzNC41NjcpLnRvU3RyaW5nKDE4
KSBzaG91bGQgYmUgM2VhLmEzY2Q3MTAyYWMuIFdhcyAzZWEuYTNjZDcxMDJhYmYwM2RkM2ZjZjA1
MzU2MzhkOWQzMTNlaGE3NWI0OS4KLUZBSUwgKDEyMzQuNTY3KS50b1N0cmluZygxOSkgc2hvdWxk
IGJlIDM3aS5hZWQxMDJhMDRkLiBXYXMgMzdpLmFlZDEwMmEwNGQ0MDc4MmViaDFlMmdjN2k1NThj
MzBmYmUyMzBkaGE1NzAxOWUzYTMwZTQzNDIyMGY3MTQyYWIzM2Y2ZTRoM2VjOWhhNTdiNDc0YTUy
YTlkZGhlYjE1MTU5NGU3NjYxNDE4aWYxZ2djMjRoMjZlNjU3NDc2OWcxNDhjMjc4ZWZjNjNkZWQx
MzYxNWJmNmIxaWdkZGlnMWk2ZDBmZmU2NGE5ZmFhZDViNGdmMjQwY2QwNzRiNWhjM2lkYWZlYzFi
ZTc3ZzRjYjA3NTVnOGEwZDY1MmNlZzllNzQ5YmRhaDU2YTJoNWQzYjk0Yzc0ZmYwYjc4YWlkZ2Fi
NjkzaWYxMGFiOGgwNDY0MjUxMzdhZTUyNTBmMDRjMDdkYzIyaWZiZGEzZmdkZWg5YTZlMWQyM2Q1
ZWJnYTI5M2dlNTgxNDQxZWViMDdiODg0MTk3NDI0YjBjM2dmZWNoNzgyMGZiZ2c5NWVhaGRjM2Fj
ZWFoY2k2NWk4MjNkM2gxNDZkZDgwaWVmZjIzYmk4NGJlYzIxOWVhOWhlNDdpZzNnMzA5Y2kxaDdm
MGkwaTI5YmFiNGIxZmhkMTlmOWVkZjRpZjFmMjhhNWIwYmFjODdjaWhlMjhhYmJoMWY0YWJlZ2Jh
MjJnZWgxYzZoNTJjMDdlMGNpNWdpODE5ZTQxZDNkMGZkZWU1MGgyN2M4aGlkMDNhOTVnY2Y0aGFj
MTYxODhhZTVpaTcxOWRpODVhZDNhOGZkMDU5YWE2M2IxZ2U5ZmM1NDFoZjY5ZWU2NmdmMDE3NWI0
MWNhMWRoYWhhYTM5aGM3aWQ3YzkxZGM4ZDA5ZTdoMGlkMDI1MjUzMmRnNDkzZzVmODBhMjA5YzMx
ZjQxYzkyaWZoMDJpMjNpZ2VkMDZpNmNmOTc3N2czYTEwaGlmM2kzMjE3ZDMyYjAwZmlpN2FnNGM4
ZWU5aWFkZjMyMDFpMzY2YjRnMjNnYzUwNWc2M2M4NDZiNTEwMmQ1Z2c4NmRoaDJkOGVhZjMwMWFj
MTNjZzBmNDVkMTcxZmY0NzlnMTk5NWYxaGM3YzdpaTFpMGI5ODFlMmUwNDJiMzcxYTY4aGI2NGM1
Zmg5MmhmMzBmZDcyZTA3M2JmNDM5YWUxMGRnNGc3MzloMTcwZGRmMzk0Y2JlYTkwaGg1NDkwZmlh
ODNkMzZiaWdmNzJhNWVjZjhjZjEyNmQ1NGg3Z2hkZWc1ZmljMGkyMWRiNzdoZjg4aGFlZmRiMTJo
MzIyMmZjNWM3ZDMwNzcwN2g1Y2VnM2kwMWExN2JlNWMzMWE1Z2I5ZGhhZDZjYTZpY2E3YzRiYTQ0
OTE1MDRiN2gyMWMyZDgzYjJkYjNmaTY3Y2guCitQQVNTICgxMjM0LjU2NykudG9TdHJpbmcoMTcp
IGlzICI0NGEuOWFlYjZmYWEwZGEiCitQQVNTICgxMjM0LjU2NykudG9TdHJpbmcoMTgpIGlzICIz
ZWEuYTNjZDcxMDJhYyIKK1BBU1MgKDEyMzQuNTY3KS50b1N0cmluZygxOSkgaXMgIjM3aS5hZWQx
MDJhMDRkIgogUEFTUyAoMTIzNC41NjcpLnRvU3RyaW5nKDIwKSBpcyAiMzFlLmI2ZyIKLUZBSUwg
KDEyMzQuNTY3KS50b1N0cmluZygyMSkgc2hvdWxkIGJlIDJnZy5iajBrZjVjZmU5LiBXYXMgMmdn
LmJqMGtmNWNmZTkxaGs2ZmczODNiMTkzOGZmOGQwMGg0azkyOTU5NTlqY2JqOWM5MjgyZTg0MGIx
NjlramkxZWczMjg5M2FmZTA2M2YwYmJma2VmMmNiYWVnY2EwMzViZjEwYjJhajNlNmY2Zmcwa2cz
NWs4ajgyajgyZTA4ZTZiaTBjMmllOGhoY2djNTdpaDZhZWdiOWJoN2c4MDg2MTlrMjY0aDZoYzI5
azgxMmE3MGdrMjEwZzMxNWQ5YmZoN2lmNmg2Y2s5NTExYjJrZmIxZmc0ZWQ2NmdkaWdiNjQxNzM4
ZDVhNjVnYzc0OGUxYjY4OGNpZ2tjaWY1MWNiMjYxaGQ0amhqNWg0NjAyZTJhZGRiaWUwZDNkNWRj
MjZiaGtlY2VhOTYxaDRpYTgzOGUyYmM5MmFnMzRhMzcwYzZlamFmMjdkamllYmdoY2gyOWZlZWtq
MTdnZjYyZzc0ZDBoNTc1Zzk0YWVrZDdrZGZjYmI1NWVqYmIyZTk2YmhqN2I5MTQ1MGphYWIyNGpp
aTNhZWhhZWQ2MTQxZWozZmNjajhoZmprMzRraDVpZGdoZmI4ZDFraDM5YWRhZjJjZTVlaDc1NmVq
MDg4Z2c5YWI5OWZiMzMyMTU4ZGNkNTliOGFoMTA4ZWkzNDMxajZpMTFrMDkyY2lpYmtoMmloOWRn
aDliMDkyMjExOWM5ODY4NGIzODg0NjYzMGRpZWpnNjBrMWQ5M2NnNmlmazU3ZTU0YWtpaGJpODlr
aDloMDg0Y2tjZzVhN2lpZWc2YzAxZTkwZDA5ZGJhaWs5YjE1azlrZmowaWdoMDBkaThiY2VpNGlm
ZWszOGhlZWEwMTRmMGVpMmFmYThpYjA4aWk5ZWcyZTBrNzFkNDM5MDZmMTNiYWMwOGc5ZTZmMjJi
NzZraWhjYTFhMTNmZjBlY2k0MjE3aDc4NGFoZ2Q1Nzg5ajMwOGJkZ2ZqZ2VraGtqaGY2ZmU0M2Rr
aWg0MGhiMjE2M2k2MTNkZDRnMWpmY2IxaWJjNGk0Njlla2JjMzhraDk5aTkzazE0YWc3aWtlamZh
NTI4YzM4ajkwZmhhYjhrZWFpOGNjY2lrZzVmNjk3NDk5MzRkMjg1Nmk1OTA4amgyaGg5OWY1amln
OGhoMmVoNGNhOGdoMTlrN2gyZzBhNjNoYmM5NmQwa2cyN2tlMDc1OWRjODEwN2U2M2pkMGRka2I4
ZmUwa2swYTA0Y2lhZGFpYjUxa2YxMDFpMzY0aTBpYzFnZWRoMTQ1aTJnaGk0aWU0ajFhZ2MzZmdi
NWhja2pqNGVhNWVrZTA0aGo1OWllOWU0aGM0YmNlMTZnaGYzN2c0YjdmaDNqaDQzYmZjNTJhODEu
Ci1GQUlMICgxMjM0LjU2NykudG9TdHJpbmcoMjIpIHNob3VsZCBiZSAyYzIuY2E5OTM3Y2FrLiBX
YXMgMmMyLmNhOTkzN2NhazFkNTAyMzk5ZjJoa2E4YTNjODdoMGtjNzZmYTZqNWIuCi1GQUlMICgx
MjM0LjU2NykudG9TdHJpbmcoMjMpIHNob3VsZCBiZSAyN2YuZDBsZmpiMWE3Yy4gV2FzIDI3Zi5k
MGxmamIxYTdjNmNhYmZqN2dlZTMzamRqYTlmZzljbWpnMzc4ZmhlYTE5Y2ZhYmc4OTZmaTBhYjFn
bDgzOWZpbDVjZzhkajFoYmdqYWdiMGlsbTg4ZW0ybDllM2pnOGhtbTE5ZWJtbWpqNmZrMWwxOWZn
NzAxMWMxajZqaTNjNmJsMWxoazNraGJsMTA1YzJkM2NlMWoyYjM4MThhbWw3MmxjaDY1OGVsYzRk
MWg5ZDk0Y2o4NjFlZzc1ajBrNTlmZGw1OTZpOTc4YmU4MjFsZ2tpbWw1ZGE3MmJkM2owaDU2M2g2
a2hmNzBtNjRkOWgyZWFjNDZsNGEyZzMzNWkwMTBoZGwwaDVoMWI2MWFnZGhtZDdrZG1tY2gwNWls
amFkaGgxMGk4NmxhaDFhamY0Zmo3aTJtOGgxOGpqZjJhbWQyZTY2YTg2ZWkzajBoNzdiN2tmNmo2
NTdhbTFmNmltamFhYTI4ZjAyMW05YTEzaWNrYTUzNmMwZmE2NWFhbGJibGllaTI2Y2xsMzhhYzFj
bTM0M2gwZWM4aDBrNG1oMWtiaGxhNmE5ODg5bGxqNmRiMDdlYjlnbWZpaGdnZDFrYWltNzBnYjZs
MDgyamNhbGRnMzUzYWU5aTM1Zzc3ZmVtN2JnNzdrN2VtNGM0MWZoYmVqbWhoZ2dqNGJsbGkzZjc1
MTBsNTVsMWowYzBoODYyY2k5aGUyZGxha2kyajBpZWFoMzZkOGkzZ2YzZGk3aDA5NWFqa2JkM2Ft
Z2xnZ2M1aTZpZmg0MDc2ZzQzNmpjYzliYzMzNW1iZ2VjMjNiamdma2k1NGZtOWZjMTA1YzJnMWw5
bWM4bW1nbTFqM2U4aTk2aGpkMzhpYzVrZWI4bTUza2Iya2NlYzE4YzA0MzY5bGc5N2RrNjYwaWRi
aWpmY2ZoOWVmMGcwNWM0MTExNmkxbDY2NDkwMGpqZjVqZ2tpa2w5a2toajZqOGNsbTVoNTg0bDI4
NzVqNGo4YzM1OGs4ajNmODhjNGEyOTdjYmM4MThqMjZhMGlobWYyMWxsNmtrZm05MTFhZTRlN2hi
Mmw1aGE4NWZmZGk2M2htazk3Y2RkNG1mY2ltOTdnbWhjbGg0M2lnMmo1bWE1YzE5aGxlOGkyaGhs
bTJnamptaWFlMzA3NTRtYjdkMGw3ODgxaWdoaGgwYzBiZmFnZWttMDdoMzQ0YmRsaTc3bTVqajk3
ZzY5YWVnODE2M2VkNmFtZ2ZtMDM5YmoyYjlpYjlhbGRmYTEwM2k4M2NlYmgwYmdkajhtN2w4MjNr
MmQ2aDRsOG1pYTloazY3M21haWEyMm1pazRrM2wwN2gwMm1iOWc1NmxrMjZnM21pY2owNTNnLgot
RkFJTCAoMTIzNC41NjcpLnRvU3RyaW5nKDI0KSBzaG91bGQgYmUgMjNhLmRlZTRuajk5ai4gV2Fz
IDIzYS5kZWU0bmo5OWowZmc3Yy4KLUZBSUwgKDEyMzQuNTY3KS50b1N0cmluZygyNSkgc2hvdWxk
IGJlIDFvOS5lNDk5OTk5OTkuIFdhcyAxbzkuZTQ5OTk5OTk5YTFpMTltbmtnNDFlaTJvMmdlYTA2
Zm43ZzhlNTNhZzNjZGRqazdsb2tkZjgxbW42a2U1amprbzFvZGxiYzU0NGQ4Ym9pY2k3ajNvbTlp
ZmozYmE3ZG01ODRvbDBiZ2ZjODc3bjJnLgotRkFJTCAoMTIzNC41NjcpLnRvU3RyaW5nKDI2KSBz
aG91bGQgYmUgMWxjLmVqN2ZhNHBrZi4gV2FzIDFsYy5lajdmYTRwa2ZiNWkzOTYxbzhrODMyaG01
OTRoOHA1NThnYms4MzZkLgotRkFJTCAoMTIzNC41NjcpLnRvU3RyaW5nKDI3KSBzaG91bGQgYmUg
MWlqLmY4OTcxNzcyay4gV2FzIDFpai5mODk3MTc3MmppY3FpZ2JnZWxuMzE3NjYxMmhqYzJsbWRo
MDU1YjZrcWpxOWs3YXFlbWkzMWM5OTlxa2prMTgybmttNmlpb3FvcGoyZmdqcTJlZDkwN2Y2OGk0
am1vbWNscWUwN21mb2JtYmM4ZTExaDIzODJoZDBwbWYwcHFjcTlrODBkNTJnN2E4ZzloMWVnNDAz
ZTNpNmpiaXE4bGE4Zzk1MTJsaXAyaDlucGJlNmRjZm0zMGVkZTVuNW02ZmhrOGE5bmJvNmc1aTJr
NjA5MDhoZG84MzhuNzIwZmZuYTYxZzIwZzc1ZmtsbGQ1azMyMmhsampxcG5kZWVlY2duazlhOG9m
OGYxaDRlZGRja3FtMnFtbzIyYzZwMjFwaTljbWRoZmI4bzk3ODU5Mzg1ZGhuYWQzY2k5a2thZmYz
ZjBnNzU5MjVkM203NmEyZWpvZGRmY2k4ajdqaXExODVnZ2luMWI5N3FoaHBxYWJlcTNiaGlsaGhx
cGxxN2lqMmw0aGlkZG83N2hvY280NGZkbTg5azcyNnA2NWgzZG1tNmEwazhhOXA2Z3BibzFiZmxk
N2FtcXBiODUzcG1vYTBta29xMGM5MmRrcTlmaGIzbWU3aGUzNG8xNmJraDZlbnBvZWQ1YmFhNzVl
cGY3YzYwOWhhcTdraTE0cWttZDdvNTlpMmttMzMwcTJkamkxMW5kZWthOGltbzk5cDRsNGs1bjdl
Nmg1M2M0YjZkZG4wbmlmbzRsMWNqaDdsMzBkNGRhcWwwbzloMTE3ZzQxbGI1cDhkOGYwOW9pNGwx
YzZrMzhoZGo3ZDEwMm9oMWswOGZoazBmY25xb21paGk4NmxmOW05OGhmbTA0ZTkwaXBjb2pvMmxv
NDgxYjZrNTkyNWNtYTZnam44cGNucWRjOTM2aDhuNzdkZTZoZjloYzQ2YmdwbWFoamlqbGxjb2M3
bGJkaTZtbG0ybW41MjQ3a2JrYWVqamVtZzJlaGlvaTc1cDY0YjlxN2NhZTA0Nm0xYjdlcXA3NDM0
OGtxbWo2NDNoZjQwbzQ4bmE5bG0ycDNrM2NmM2VhbGwyYXFrN3A3M2g1aGdxNms4MmNsZ24xMWtk
Y2IxNTBjcTU2MDdqcGFkb29ucHA1aTc4YTNsbWhuYmJxNGw4MzI1YTAzaGQ3bTM3Zmw5NGlnaTQz
Y2dwMGc0aGdkNWhrcGsxZ2lqaGVhNTA4ZXFiZ2RnbWJiaWtoOWs2N2Q2MGhuZTUybGM2OGM0amY0
OTFrajhiaTY5MXA5MWQ2YTRiZzFwcGtuM2NxMGgzNG9jOWIybWozM29vbGxxajVwM2M0N2xnODNs
MzJqMGtlcDhqbjExbW8xNjA2NjdwLgotRkFJTCAoMTIzNC41NjcpLnRvU3RyaW5nKDI4KSBzaG91
bGQgYmUgMWcyLmZvZWxxaWE4ZS4gV2FzIDFnMi5mb2VscWlhOGViZmxkZTJjOTg4bC4KLUZBSUwg
KDEyMzQuNTY3KS50b1N0cmluZygyOSkgc2hvdWxkIGJlIDFkZy5nY29nOWUwNXEuIFdhcyAxZGcu
Z2NvZzllMDVwbzBuaDFuajAzY2JnbzFzNGlkNWtmMmZxZjhucTdyY29rcjVyNjNubzZiOWhqMWdu
aGpiY2M0bTZrZmM3ZmRlMTdjaGRwNXFiZnFjNTBmMnNxam1xb283NHNtOWs1bHNrZ3ByOXI4ZmQ1
Y245MzQza3I4MTE1b2lmcmsyZzdobm5ybTFxMWVzOTNiM2xscmloczkzc2kxczNiY2plcXJjcGJn
aTBrYWhocDNkNGdwY2txbWFpNzAxOXNpY25tOTlpOXNzYmM3ODM1MTRkNDdmNnFtNG04OXA1cmQw
aHBlYXI4cDNscjBsY2lnbzIzYmZhMGgxYzdlMHJqaDY2MHI4ZWY1aDY4ZjBxYjc2N2MyMnJubGYz
MjIzcWNhcTlvYjBpaTY5ZjIxcThrajI5YjI5ZjNyczM2ZjU2cmtzZHE5NDM4Y2k5ZTE2aGxnM3Jx
bTNtajdnbXJmc2w1NjYyc2c3b3BpMWVnYmFwMm9yZWpmamdocjZvYWtoZ28zNHMzbWRuM3A4Yjk0
aXBmam82NGNtaGJpY2dpcWs1M2I0Ym9zamhtaTMycDBrMWlhbWZxaTk2N2E1NjRzcnBhbTFoOTQx
ZjZrNm1obnA0YmY5ZGtyaTVxZHE0ajVmbWtsOG9iaGQyNjk3cWMyazFzMWVramNxZzdvYThha2Nm
a2hsb3JrbXFkNGhna2g2aTc0bDFhcGo4MGtmNjY2cDMwZmgxcTlkZzhhOGxqb2VhZ2NqaDM5MTM5
b2ZncmVsZjFmNm9jOG02YWcwZ2NpcDg5bzcxc2c4YmVmZ2E4bjBraWU3bzIyN2Y3cXFpM2llamts
YzMxbjRtZ2hsMjRkNDdqODk1czU2YTY2ZzczbWtwNnM1ZWcxOTExZTA0amRjNWxrcnJybTBnaW1u
bTVyYzBlb2Rlcmtqb2Y1NDVkcmNscGhqNWwzZm9yZ21uaWJkcG80czQ2M3JnOWFnNG5rZTUybWli
MDdoZDI2amhiYTVpcDk0YnAycTA1YjZuamxyZTMzbWlrYjhyNjFsNThlaWk5NjJpNmFvNnE4aW9z
b2s3c2loMjFkZjFjMzNtNGczM2ZiYmtlNzA5c3BqOG0wZmRuYzBybWw2Yzk0cHJybGU0NjE0YnMx
MDY5a2NrNjJnNDhrZTM4NnJia25uMnNhazcwc2xqNGo0OW8zOWNzNmg3ZXJpM2xiNG44ZDdkc2Ey
Nzltb21zM3FnMjhuMjZkaGRkbjlqOGNrazY5N2o5a24ybGs4b28zOXAwOTllbzcxcG80aGw2MjU1
b2Y3bTY1N2ZvbHNwcGNjNWczOWFmcWJxZjVkczBxOTdhMzJra2lmMG9tbjYyaGY1OGcwNjM4Yi4K
K1BBU1MgKDEyMzQuNTY3KS50b1N0cmluZygyMSkgaXMgIjJnZy5iajBrZjVjZmU5IgorUEFTUyAo
MTIzNC41NjcpLnRvU3RyaW5nKDIyKSBpcyAiMmMyLmNhOTkzN2NhayIKK1BBU1MgKDEyMzQuNTY3
KS50b1N0cmluZygyMykgaXMgIjI3Zi5kMGxmamIxYTdjIgorUEFTUyAoMTIzNC41NjcpLnRvU3Ry
aW5nKDI0KSBpcyAiMjNhLmRlZTRuajk5aiIKK1BBU1MgKDEyMzQuNTY3KS50b1N0cmluZygyNSkg
aXMgIjFvOS5lNDk5OTk5OTkiCitQQVNTICgxMjM0LjU2NykudG9TdHJpbmcoMjYpIGlzICIxbGMu
ZWo3ZmE0cGtmIgorUEFTUyAoMTIzNC41NjcpLnRvU3RyaW5nKDI3KSBpcyAiMWlqLmY4OTcxNzcy
ayIKK1BBU1MgKDEyMzQuNTY3KS50b1N0cmluZygyOCkgaXMgIjFnMi5mb2VscWlhOGUiCitQQVNT
ICgxMjM0LjU2NykudG9TdHJpbmcoMjkpIGlzICIxZGcuZ2NvZzllMDVxIgogUEFTUyAoMTIzNC41
NjcpLnRvU3RyaW5nKDMwKSBpcyAiMWI0LmgwOSIKLUZBSUwgKDEyMzQuNTY3KS50b1N0cmluZygz
MSkgc2hvdWxkIGJlIDE4cC5oaHJmY2ozdC4gV2FzIDE4cC5oaHJmY2ozdDFrNDFmM3VyNDc1bm0w
YmcxaDhndTRnMTNjZTJuZTBybTJpcjNycHFhZWU1bWY1dGd0aDJvOGxndWY4ZTNiODhiaHB0MnI1
MWc3OHVsdXUzYTFmcWZ0aXRuNDZoazBhY3E0c3RwZW1obmExa2FsbHBsYm8yMzJmcXRqNGNoMW1r
c3Iwa24zOGcyZzNrOW5idHRldHRlaGpyNTZzdDA0dGNkbjZvOTVndWhpcWU5YTBiY3JsbWhhN2h0
N2U0NXVldDVwazBzMzkyOGJqZ3VoaHJjNGlqOThoaHB0aHU5NXBqdTRkNDA5N3I3aXBjMWsyYjVv
OHFqOXFlY2s1ZGZkZXFpbWtwMTU1Zmgyb2U1bWZrM2Fia2ViYXE2ajNldWJzc3JqZm9kM3AxN2lz
NzF0cWllYWY3bmE5OXA0ODJzbGw2anIxb2locmlidGg1Ymc0MWhhN3FkM3RlbmZmN2cxNzFrZmRn
dXQ1ODBzMm5vaDlxbHE4bGNrZ3NpdWtydDIxb25nbm8xamM0NzdyZjA3Y3I2ZDV1anFhN3NybDFi
ZGtvbjE1NjYxOWExbzlvbG1jdGJpaXUxaWgyOGZianVwaGNkMG5ncWlqc2g4bjVoNTlzZnM0cWhw
ZHU2MmprdXI2dGlna2dlbTUwb2doMzduM2pzcmRyNGQ4aDd0YTNoODRwMml1cmVvaW1wYTMxZWlv
dHQyMzdsYThkMGI5c3FqcTlsOHJhOTdtNGxkbmVyc2JtcHVuNjRkbDUwamYzMmtvcDZpZGliZjdi
ZWtycjZwcG90NXV0ZGtuYnEwbGlkMGZrZWhvYzNzc2Y2b3JtM2c1MGg2ZW1mc21sMHBwYzFhZTY4
ODFkdXVmaXVqM2U4NGI2dWhvbjkzcWs0YW1lNDk0b2NsYWZkMW1wcHJzaWFxZDhncGk3bTVicm1x
OG5yaDJubHJvN3BoYjdwZGxpMXBiMGdmZWRsdWgwYmpiOWVubmV0c2ZkanMzdS4KK1BBU1MgKDEy
MzQuNTY3KS50b1N0cmluZygzMSkgaXMgIjE4cC5oaHJmY2ozdCIKIFBBU1MgKDEyMzQuNTY3KS50
b1N0cmluZygzMikgaXMgIjE2aS5pNGplaXU2bCIKLUZBSUwgKDEyMzQuNTY3KS50b1N0cmluZygz
Mykgc2hvdWxkIGJlIDE0ZC5pbmY5NnJkdm0uIFdhcyAxNGQuaW5mOTZyZHZsbW53Y2k5MDg4dmJu
ZHE0dWY0ZnV0cGlyZjN0dDZiZG5taWtmNXZwdG93MmxmZG85Z202aGJyOWJ2cmI3c2xkNmNlYjBu
bTBlNmFmNmIuCi1GQUlMICgxMjM0LjU2NykudG9TdHJpbmcoMzQpIHNob3VsZCBiZSAxMmEuajlm
Y2hkdG0uIFdhcyAxMmEuajlmY2hkdG0xaTBlOGVkYmYwdm9nbjBpdDh2c3gzcjhzOXM1YWw4aC4K
LUZBSUwgKDEyMzQuNTY3KS50b1N0cmluZygzNSkgc2hvdWxkIGJlIDEwOS5qdGs0ZDRkNGUuIFdh
cyAxMDkuanRrNGQ0ZDRkb2ZsZmU3eGkxNjl3ZDZveWpxMDF2cWNsMmYxNTBiaXMxY2xpZGdvNHZn
M255Ymp0ZW8xbG1qd3h2YWhmeTZkcW53eWRnYXltcGJjdjBncGdrYTJid2VqZ24wdTBndXRqNThv
ZzVtNGFiMnVkbHZ4Zm9mcXlqb3I0dHFxcmcxaWs2bmMxZWx5bmptMHA0M2o0MzY5MXk2Y2Z4aXJy
bXlub21mbzB4dDgwOHlmdDlwZXZrM2xqaXdib2FxMHV5cjZoOTg5cG41YWV4c2t3cHA4a2IwaHJ3
ZTQ1dm9taXY3cGhrbDFtc3VrOHR5YTdhYWdqbmRyNWZoa2lhNmlsbHd0anFqdjhrcGc5ajFjbTl5
aDYweDB1ZGo2MGN3dTVuZDEyZDU5cDh2ZzB3czdxdm1ud240N3NkYnhyOTdvNjBzdDhidXNzbDI5
MzJ1Z2hqaWl0am5hOXA2czU1Ympka2d4ZW9idms5ZXVjMDRndTc5cG5hNG9xb3hjdjQ1MjJnZ2Jj
Z284NTJwbjlqYXlyb3k4NnNmMnExMTloeW1ncmN0N2dqN2dpZGJpODhpb3c2NmRqY2JxZzFnNWo2
ZmM1dW1iNWZzc2RlNXVxM3J2Yzl4MGc4MWVvNXVyc2piMXB0d3UxOGxqc2t0dHFpaXhmbXRoaW9u
bmo3bDVwN3FlbXF0bjljZHI0eG5heDM2MWw2MHZpc3RtOHBtamlmZ2JoMGo5c2U2cm5la3l5ZWtu
MWM4MG85NWl2YnBubWV3YTFhYzFwMnN1aDRka3QwcDdqbXNoeDVxYjkyY292NnYxMnduN2R4ZHI4
dGl0MDUxbmN0cnk4eXQ3anBzZnNleDQ2ODN5d2J0Y3g5Y2p1bDUyc2N2MXVkN2M5OTZjd2ExaWVz
aHBhNGc2b2N5dndtNzg2bGhoa3dzYnQwZXAwYTA4OHh1dW9tZzJocWdhMnBrN2lic2I0NTd1aTVj
bGU0MnQ3eWo3dWdmcDJ5bml2aGEwYnhxczg2OGI1eXE1OWhnM3JpM3Y5YjBha3hnMHhnazNmeDRv
NXBjYXliOWd2MHNtMXZoZ2V0NzJnNmxwMjBmMXEzaTZzdWJjOXFrdnZ5dGNsaTAzN2gzdzQ3eDlq
MzQzd3hlNTN2b2RiM2R5bzlxOGE0YWo0ZGN5c3g5NWs1b3NlMzYyNjdiZTFtZGxpNHRxdzdoY2oz
b2Fld2VwZTBsaXZoNThwMXcxdmpjM3czMW01YzR2MWtlOTRxZGFtbDQ1ZHVsdjhnajdrNzVid3Bk
OTdoOWVtdnljYmU3YWt1dmp0MXY1ZDM3a3Noc3Jla2pmb2RmOTU3am5hazRhZ25rYnY5OTkzeWNi
NjlpbS4KLUZBSUwgKDEyMzQuNTY3KS50b1N0cmluZygzNikgc2hvdWxkIGJlIHlhLmtldHk5c2lm
bC4gV2FzIHlhLmtldHk5c2lma2x6c2FrcWhieWI5LgorUEFTUyAoMTIzNC41NjcpLnRvU3RyaW5n
KDMzKSBpcyAiMTRkLmluZjk2cmR2bSIKK1BBU1MgKDEyMzQuNTY3KS50b1N0cmluZygzNCkgaXMg
IjEyYS5qOWZjaGR0bSIKK1BBU1MgKDEyMzQuNTY3KS50b1N0cmluZygzNSkgaXMgIjEwOS5qdGs0
ZDRkNGUiCitQQVNTICgxMjM0LjU2NykudG9TdHJpbmcoMzYpIGlzICJ5YS5rZXR5OXNpZmwiCiBQ
QVNTICgxMjM0LjU2NykudG9TdHJpbmcoMzcpIHRocmV3IGV4Y2VwdGlvbiBSYW5nZUVycm9yOiB0
b1N0cmluZygpIHJhZGl4IGFyZ3VtZW50IG11c3QgYmUgYmV0d2VlbiAyIGFuZCAzNi4KIFBBU1Mg
KDEyMzQuNTY3KS50b1N0cmluZygtMSkgdGhyZXcgZXhjZXB0aW9uIFJhbmdlRXJyb3I6IHRvU3Ry
aW5nKCkgcmFkaXggYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDIgYW5kIDM2LgogUEFTUyAoMTIz
NC41NjcpLnRvU3RyaW5nKHBvc0luZikgdGhyZXcgZXhjZXB0aW9uIFJhbmdlRXJyb3I6IHRvU3Ry
aW5nKCkgcmFkaXggYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDIgYW5kIDM2Lgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>