<?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>180724</bug_id>
          
          <creation_ts>2017-12-12 15:36:11 -0800</creation_ts>
          <short_desc>Fill out some Poisoned APIs, fix some bugs, and add some tests.</short_desc>
          <delta_ts>2017-12-13 11:23:29 -0800</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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1380906</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-12-12 15:36:11 -0800</bug_when>
    <thetext>Also rename Int32Poisoned to ConstExprPoisoned.  The key it takes is actually a uint32_t.  So, Int32 is really a misnomer.  In addition, the key needs to be a constexpr.  So, ConstExprPoisoned is a better name for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1380907</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-12-12 15:37:13 -0800</bug_when>
    <thetext>&lt;rdar://problem/36006884&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1380908</commentid>
    <comment_count>2</comment_count>
      <attachid>329169</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-12-12 15:41:01 -0800</bug_when>
    <thetext>Created attachment 329169
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1380913</commentid>
    <comment_count>3</comment_count>
      <attachid>329169</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-12-12 15:50:18 -0800</bug_when>
    <thetext>Comment on attachment 329169
proposed patch.

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

r=me

&gt; Source/WTF/wtf/Poisoned.h:55
&gt; +struct isValidReference : std::integral_constant&lt;bool, !isFunctionPointer&lt;T&gt;::value &amp;&amp; !isVoidPointer&lt;T&gt;::value&gt; { };

What&apos;s a &quot;valid reference&quot;? What makes it &quot;valid&quot;?

&gt; Source/WTF/wtf/Poisoned.h:194
&gt; +constexpr uintptr_t makePoison(uint32_t key)

inline?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1380919</commentid>
    <comment_count>4</comment_count>
      <attachid>329169</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-12-12 15:55:11 -0800</bug_when>
    <thetext>Comment on attachment 329169
proposed patch.

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

&gt;&gt; Source/WTF/wtf/Poisoned.h:55
&gt;&gt; +struct isValidReference : std::integral_constant&lt;bool, !isFunctionPointer&lt;T&gt;::value &amp;&amp; !isVoidPointer&lt;T&gt;::value&gt; { };
&gt; 
&gt; What&apos;s a &quot;valid reference&quot;? What makes it &quot;valid&quot;?

I&apos;ll rename this to isConvertibleToReference, which is what I really meant.

&gt;&gt; Source/WTF/wtf/Poisoned.h:194
&gt;&gt; +constexpr uintptr_t makePoison(uint32_t key)
&gt; 
&gt; inline?

Thanks.  Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1380922</commentid>
    <comment_count>5</comment_count>
      <attachid>329172</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-12-12 16:05:30 -0800</bug_when>
    <thetext>Created attachment 329172
patch for landing + speculative build fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1380973</commentid>
    <comment_count>6</comment_count>
      <attachid>329182</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-12-12 17:24:15 -0800</bug_when>
    <thetext>Created attachment 329182
patch for landing + speculative build fixes 2.

The build failures on the EWS bots are weird: it fails to specialize the PoisonedImpl template correctly for the Poisoned variant, but does it correctly for the ConstExprPoisoned variant.  I cannot reproduce this build failure locally, but the build failure error messages seem to imply that the EWS toolchain is confused with what the type of the poison key should be used in its inferrence.  I&apos;m now uploading a patch that takes the linkage of the key out of the file where it&apos;s used to see if can kick the EWS toolchain into not inferring the wrong type.  Let&apos;s see if this makes a difference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1380985</commentid>
    <comment_count>7</comment_count>
      <attachid>329185</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-12-12 17:45:13 -0800</bug_when>
    <thetext>Created attachment 329185
test to see if EWS toolchains support C++14.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1380987</commentid>
    <comment_count>8</comment_count>
      <attachid>329187</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-12-12 17:49:16 -0800</bug_when>
    <thetext>Created attachment 329187
test for EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1380994</commentid>
    <comment_count>9</comment_count>
      <attachid>329188</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-12-12 18:02:06 -0800</bug_when>
    <thetext>Created attachment 329188
test for EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1380997</commentid>
    <comment_count>10</comment_count>
      <attachid>329189</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-12-12 18:09:44 -0800</bug_when>
    <thetext>Created attachment 329189
test for EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381032</commentid>
    <comment_count>11</comment_count>
      <attachid>329195</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-12-12 20:25:45 -0800</bug_when>
    <thetext>Created attachment 329195
test for EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381035</commentid>
    <comment_count>12</comment_count>
      <attachid>329197</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-12-12 20:37:38 -0800</bug_when>
    <thetext>Created attachment 329197
test for EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381045</commentid>
    <comment_count>13</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-12-12 21:13:04 -0800</bug_when>
    <thetext>I&apos;ve managed to reproduce this build error on godbolt.org.  This is what godbolt.org says:

gcc 6.3 - Build fails
gcc 7.1 - Build fails
gcc 7.2 - Build passes

clang 3.9.1 - Build fails
clang 4.0.0 - Build passes

In all cases, I was using -std=c++14.

Hence, the issue is with the compilers and not my code.

That said, let me see if there&apos;s a way I can work around this compiler bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381051</commentid>
    <comment_count>14</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-12-12 21:39:27 -0800</bug_when>
    <thetext>Do you have a small repro from godbolt?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381056</commentid>
    <comment_count>15</comment_count>
      <attachid>329205</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-12-12 22:29:57 -0800</bug_when>
    <thetext>Created attachment 329205
patch for landing.

I&apos;m going to go with disabling the use of the Poisoned template methods that take a PoisonedImpl&lt;K2, k, T2&gt; argument in the tests that uses these methods with the uintptr_t&amp; key type.  The compiler bug does not manifest when the methods are used with a constexpr uintptr_t key type.  In practice, we&apos;re likely to only assigned values which are poisoned with different keys when using the ConstExprPoisoned variant.  Hence, this compiler bug will not be an issue.

To make sure we don&apos;t break any builds, we only need to #if out the use of these methods in the API tests.  Since we don&apos;t use these methods for the Poisoned variant in real code, there&apos;s nothing more to do there.

I&apos;ll land this patch if the EWS bots are happy with it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381057</commentid>
    <comment_count>16</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-12-12 22:50:51 -0800</bug_when>
    <thetext>Surprise surprise.  It looks like the old buggy compilers don&apos;t like assignment of Poisoned&lt;keyA, DerivedClassPtr&gt; to Poisoned&lt;keyA, BaseClassPtr&gt; either.  The only think it seems to support is assignment of Poisoned&lt;keyA, SameClassPtr&gt; to Poisoned&lt;keyA, SameClassPtr&gt;.  Again, this does not affect the ConstExprPoisoned variant.

I&apos;ll exclude these additional cases from the tests as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381058</commentid>
    <comment_count>17</comment_count>
      <attachid>329206</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-12-12 22:54:53 -0800</bug_when>
    <thetext>Created attachment 329206
patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381060</commentid>
    <comment_count>18</comment_count>
      <attachid>329207</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-12-12 23:19:16 -0800</bug_when>
    <thetext>Created attachment 329207
patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381072</commentid>
    <comment_count>19</comment_count>
      <attachid>329212</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-12-13 00:20:04 -0800</bug_when>
    <thetext>Created attachment 329212
patch for landing.

Looks like the EWS thinks it&apos;s using at least clang 4, but is still failing to build.  Let&apos;s try filtering ENABLE_MIXED_POISON on clang 5 instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381077</commentid>
    <comment_count>20</comment_count>
      <attachid>329213</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-12-13 01:00:34 -0800</bug_when>
    <thetext>Created attachment 329213
patch for landing.

Looks like Apple&apos;s versioning of clang is different than the open source one.  Here&apos;s a patch based with a speculative fix based on that versioning difference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381174</commentid>
    <comment_count>21</comment_count>
      <attachid>329229</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-12-13 10:28:17 -0800</bug_when>
    <thetext>Created attachment 329229
patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381175</commentid>
    <comment_count>22</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-13 10:29:48 -0800</bug_when>
    <thetext>Attachment 329229 did not pass style-queue:


ERROR: Source/WTF/wtf/Poisoned.h:48:  Missing space after ,  [whitespace/comma] [3]
Total errors found: 1 in 10 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>1381209</commentid>
    <comment_count>23</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-12-13 11:21:01 -0800</bug_when>
    <thetext>The bots are green.  I&apos;m going to land this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381211</commentid>
    <comment_count>24</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-12-13 11:23:29 -0800</bug_when>
    <thetext>Thanks for the review.  Landed in r225857: &lt;http://trac.webkit.org/r225857&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329169</attachid>
            <date>2017-12-12 15:41:01 -0800</date>
            <delta_ts>2017-12-12 16:05:30 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-180724.patch</filename>
            <type>text/plain</type>
            <size>40812</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI1ODA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDE3LTEyLTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBG
aWxsIG91dCBzb21lIFBvaXNvbmVkIEFQSXMsIGZpeCBzb21lIGJ1Z3MsIGFuZCBhZGQgc29tZSB0
ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
MDcyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYwMDY4ODQ+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZVRyYW5z
aXRpb25UYWJsZS5oOgorCiAyMDE3LTEyLTA0ICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29t
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IG1vZGVybml6ZSBJbmplY3RlZFNjcmlwdCBhIGJp
dApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlv
blRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlVHJhbnNpdGlvblRhYmxlLmgJKHJldmlzaW9uIDIyNTgwNykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTE4Nyw4ICsxODcsOCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIGNsYXNzIFNpbmdsZVNsb3RUcmFuc2l0aW9uV2Vha093bmVyOwotICAgIHVzaW5nIFBv
aXNvbmVkVHJhbnNpdGlvbk1hcFB0ciA9IEludDMyUG9pc29uZWQ8VHJhbnNpdGlvbk1hcFBvaXNv
biwgVHJhbnNpdGlvbk1hcCo+OwotICAgIHVzaW5nIFBvaXNvbmVkV2Vha0ltcGxQdHIgPSBJbnQz
MlBvaXNvbmVkPFdlYWtJbXBsUG9pc29uLCBXZWFrSW1wbCo+OworICAgIHVzaW5nIFBvaXNvbmVk
VHJhbnNpdGlvbk1hcFB0ciA9IENvbnN0RXhwclBvaXNvbmVkPFRyYW5zaXRpb25NYXBQb2lzb24s
IFRyYW5zaXRpb25NYXAqPjsKKyAgICB1c2luZyBQb2lzb25lZFdlYWtJbXBsUHRyID0gQ29uc3RF
eHByUG9pc29uZWQ8V2Vha0ltcGxQb2lzb24sIFdlYWtJbXBsKj47CiAKICAgICBib29sIGlzVXNp
bmdTaW5nbGVTbG90KCkgY29uc3QKICAgICB7CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjI1ODA3KQorKysg
U291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNiBAQAorMjAx
Ny0xMi0xMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgRmlsbCBv
dXQgc29tZSBQb2lzb25lZCBBUElzLCBmaXggc29tZSBidWdzLCBhbmQgYWRkIHNvbWUgdGVzdHMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODA3MjQK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM2MDA2ODg0PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsc28gcmVuYW1lIEludDMyUG9pc29uZWQgdG8g
Q29uc3RFeHByUG9pc29uZWQuICBUaGUga2V5IGl0IHRha2VzIGlzIGFjdHVhbGx5IGEKKyAgICAg
ICAgdWludDMyX3QuICBTbywgSW50MzIgaXMgcmVhbGx5IGEgbWlzbm9tZXIuICBJbiBhZGRpdGlv
biwgdGhlIGtleSBuZWVkcyB0byBiZSBhCisgICAgICAgIGNvbnN0ZXhwci4gIFNvLCBDb25zdEV4
cHJQb2lzb25lZCBpcyBhIGJldHRlciBuYW1lIGZvciBpdC4KKworICAgICAgICAqIHd0Zi9Qb2lz
b25lZC5jcHA6CisgICAgICAgIChXVEY6Om1ha2VQb2lzb24pOgorICAgICAgICAqIHd0Zi9Qb2lz
b25lZC5oOgorICAgICAgICAoV1RGOjpQb2lzb25lZEltcGxIZWxwZXI6OmFzUmVmZXJlbmNlKToK
KyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpQb2lzb25lZEltcGwpOgorICAgICAgICAoV1RG
OjpQb2lzb25lZEltcGw6OmNsZWFyKToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVy
YXRvciogY29uc3QpOgorICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6Om9wZXJhdG9yLT4gY29u
c3QpOgorICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6Om9wZXJhdG9yPT0gY29uc3QpOgorICAg
ICAgICAoV1RGOjpQb2lzb25lZEltcGw6Om9wZXJhdG9yIT0gY29uc3QpOgorICAgICAgICAoV1RG
OjpQb2lzb25lZEltcGw6Om9wZXJhdG9yPCBjb25zdCk6CisgICAgICAgIChXVEY6OlBvaXNvbmVk
SW1wbDo6b3BlcmF0b3I8PSBjb25zdCk6CisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6b3Bl
cmF0b3I+IGNvbnN0KToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvcj49IGNv
bnN0KToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvcj0pOgorICAgICAgICAo
V1RGOjpQb2lzb25lZEltcGw6OnN3YXApOgorICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6OmV4
Y2hhbmdlKToKKyAgICAgICAgKFdURjo6c3dhcCk6CisgICAgICAgIChXVEY6Om1ha2VQb2lzb24p
OgorICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6Om9wZXJhdG9yPT0pOiBEZWxldGVkLgorCiAy
MDE3LTEyLTEyICBDYWlvIExpbWEgIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KIAogICAgICAgICBb
RVNOZXh0XVtCaWdJbnRdIEltcGxlbWVudCBCaWdJbnQgbGl0ZXJhbHMgYW5kIEpTQmlnSW50Cklu
ZGV4OiBTb3VyY2UvV1RGL3d0Zi9Qb2lzb25lZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri93dGYvUG9pc29uZWQuY3BwCShyZXZpc2lvbiAyMjU4MDcpCisrKyBTb3VyY2UvV1RGL3d0Zi9Q
b2lzb25lZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdU
RiB7CiB1aW50cHRyX3QgbWFrZVBvaXNvbigpCiB7CiAgICAgdWludHB0cl90IGtleSA9IGNyeXB0
b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyKCk7Ci0jaWYgVVNFKEpTVkFMVUU2NCkgJiYgIU9TKFdJ
TkRPV1MpCisjaWYgRU5BQkxFKFBPSVNPTikKICAgICBrZXkgPSAoa2V5IDw8IDMyKSBeIChzdGF0
aWNfY2FzdDx1aW50cHRyX3Q+KGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyKCkpIDw8IDMp
OwogICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBwb2lzb25lZCBiaXRzIChwb2ludGVyIF4ga2V5KSBk
byBub3QgbWFrZSBhIHZhbGlkIHBvaW50ZXIgYW5kCiAgICAgLy8gY2Fubm90IGJlIDAuIFdlIGVu
c3VyZSB0aGF0IGl0IGlzIHplcm8gc28gdGhhdCB0aGUgcG9pc29uZWQgYml0cyBjYW4gYWxzbyBi
ZQpAQCAtNTEsNCArNTEsMyBAQCB1aW50cHRyX3QgbWFrZVBvaXNvbigpCiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdURgotCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Qb2lzb25lZC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVkLmgJKHJldmlzaW9uIDIyNTgwNykKKysrIFNvdXJj
ZS9XVEYvd3RmL1BvaXNvbmVkLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDExICsyNywxNCBAQAog
CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAorI2RlZmluZSBFTkFCTEVfUE9JU09OIDEK
ICNkZWZpbmUgRU5BQkxFX1BPSVNPTl9BU1NFUlRTIDAKIAogLy8gTm90IGN1cnJlbnRseSBzdXBw
b3J0ZWQgZm9yIDMyLWJpdCBvciBPUyhXSU5ET1dTKSBidWlsZHMgKGJlY2F1c2Ugb2YgbWlzc2lu
ZyBsbGludCBzdXBwb3J0KS4KIC8vIE1ha2Ugc3VyZSBpdCdzIGRpc2FibGVkLgogI2lmIFVTRShK
U1ZBTFVFMzJfNjQpIHx8IE9TKFdJTkRPV1MpCisjdW5kZWYgRU5BQkxFX1BPSVNPTgorI2RlZmlu
ZSBFTkFCTEVfUE9JU09OIDAKICN1bmRlZiBFTkFCTEVfUE9JU09OX0FTU0VSVFMKICNkZWZpbmUg
RU5BQkxFX1BPSVNPTl9BU1NFUlRTIDAKICNlbmRpZgpAQCAtNDAsMTcgKzQzLDQ3IEBAIG5hbWVz
cGFjZSBXVEYgewogCiB1c2luZyBQb2lzb25lZEJpdHMgPSB1aW50cHRyX3Q7CiAKK25hbWVzcGFj
ZSBQb2lzb25lZEltcGxIZWxwZXIgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IGlz
RnVuY3Rpb25Qb2ludGVyIDogc3RkOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCBzdGQ6OmlzX2Z1
bmN0aW9uPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8VD46OnR5cGU+Ojp2YWx1ZT4geyB9
OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IGlzVm9pZFBvaW50ZXIgOiBzdGQ6Omlu
dGVncmFsX2NvbnN0YW50PGJvb2wsIHN0ZDo6aXNfdm9pZDx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9w
b2ludGVyPFQ+Ojp0eXBlPjo6dmFsdWU+IHsgfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0
cnVjdCBpc1ZhbGlkUmVmZXJlbmNlIDogc3RkOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCAhaXNG
dW5jdGlvblBvaW50ZXI8VD46OnZhbHVlICYmICFpc1ZvaWRQb2ludGVyPFQ+Ojp2YWx1ZT4geyB9
OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgordHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDwhaXNW
YWxpZFJlZmVyZW5jZTxUPjo6dmFsdWUsIGludD4mCithc1JlZmVyZW5jZShUKSB7IFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3R5cGVuYW1l
IHN0ZDo6ZW5hYmxlX2lmX3Q8aXNWYWxpZFJlZmVyZW5jZTxUPjo6dmFsdWUsIHR5cGVuYW1lIHN0
ZDo6cmVtb3ZlX3BvaW50ZXI8VD46OnR5cGU+JgorYXNSZWZlcmVuY2UoVCBwdHIpIHsgcmV0dXJu
ICpwdHI7IH0KKworfSAvLyBuYW1lc3BhY2UgUG9pc29uZWRJbXBsSGVscGVyCisKIHRlbXBsYXRl
PHR5cGVuYW1lIEtleVR5cGUsIEtleVR5cGUga2V5LCB0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHN0
ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZT4+CiBjbGFzcyBQb2lzb25l
ZEltcGwgewogcHVibGljOgogICAgIFBvaXNvbmVkSW1wbCgpIHsgfQogCi0gICAgZXhwbGljaXQg
UG9pc29uZWRJbXBsKFQgcHRyKQorICAgIFBvaXNvbmVkSW1wbChUIHB0cikKICAgICAgICAgOiBt
X3BvaXNvbmVkQml0cyhwb2lzb24ocHRyKSkKICAgICB7IH0KIAogICAgIFBvaXNvbmVkSW1wbChj
b25zdCBQb2lzb25lZEltcGwmKSA9IGRlZmF1bHQ7CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBL
MiwgSzIgazIsIHR5cGVuYW1lIFQyPgorICAgIFBvaXNvbmVkSW1wbChjb25zdCBQb2lzb25lZElt
cGw8SzIsIGsyLCBUMj4mIG90aGVyKQorICAgICAgICA6IG1fcG9pc29uZWRCaXRzKHBvaXNvbjxU
PihvdGhlci51bnBvaXNvbmVkKCkpKQorICAgIHsgfQorICAgIAorICAgIFBvaXNvbmVkSW1wbChQ
b2lzb25lZEltcGwmJiBvdGhlcikKKyAgICAgICAgOiBtX3BvaXNvbmVkQml0cyhXVEZNb3ZlKG90
aGVyLm1fcG9pc29uZWRCaXRzKSkKKyAgICB7IH0KKwogICAgIGV4cGxpY2l0IFBvaXNvbmVkSW1w
bChQb2lzb25lZEJpdHMgcG9pc29uZWRCaXRzKQogICAgICAgICA6IG1fcG9pc29uZWRCaXRzKHBv
aXNvbmVkQml0cykKICAgICB7IH0KQEAgLTcyLDcgKzEwNSwxMCBAQCBwdWJsaWM6CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVSA9IFQ+CiAgICAgVSB1bnBvaXNvbmVkKCkgY29uc3QgeyByZXR1cm4g
dW5wb2lzb248VT4obV9wb2lzb25lZEJpdHMpOyB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIFQgb3Bl
cmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIHVucG9pc29uPFQ+KG1fcG9pc29uZWRCaXRzKTsgfQor
ICAgIHZvaWQgY2xlYXIoKSB7IG1fcG9pc29uZWRCaXRzID0gMDsgfQorCisgICAgYXV0byYgb3Bl
cmF0b3IqKCkgY29uc3QgeyBBU1NFUlQobV9wb2lzb25lZEJpdHMpOyByZXR1cm4gUG9pc29uZWRJ
bXBsSGVscGVyOjphc1JlZmVyZW5jZSh1bnBvaXNvbihtX3BvaXNvbmVkQml0cykpOyB9CisgICAg
QUxXQVlTX0lOTElORSBUIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiB1bnBvaXNvbihtX3Bv
aXNvbmVkQml0cyk7IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBQb2lzb25lZEJpdHM+
CiAgICAgVSBiaXRzKCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PFU+KG1fcG9pc29uZWRC
aXRzKTsgfQpAQCAtODAsNTYgKzExNiwxMDEgQEAgcHVibGljOgogICAgIGJvb2wgb3BlcmF0b3Ih
KCkgY29uc3QgeyByZXR1cm4gIW1fcG9pc29uZWRCaXRzOyB9CiAgICAgZXhwbGljaXQgb3BlcmF0
b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9wb2lzb25lZEJpdHM7IH0KIAotICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0CisgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFBvaXNvbmVkSW1wbCYgYikgY29uc3QgeyByZXR1cm4gbV9wb2lzb25lZEJpdHMg
PT0gYi5tX3BvaXNvbmVkQml0czsgfQorICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQb2lzb25l
ZEltcGwmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzICE9IGIubV9wb2lzb25lZEJp
dHM7IH0KKyAgICBib29sIG9wZXJhdG9yPChjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0IHsg
cmV0dXJuIG1fcG9pc29uZWRCaXRzIDwgYi5tX3BvaXNvbmVkQml0czsgfQorICAgIGJvb2wgb3Bl
cmF0b3I8PShjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRC
aXRzIDw9IGIubV9wb2lzb25lZEJpdHM7IH0KKyAgICBib29sIG9wZXJhdG9yPihjb25zdCBQb2lz
b25lZEltcGwmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzID4gYi5tX3BvaXNvbmVk
Qml0czsgfQorICAgIGJvb2wgb3BlcmF0b3I+PShjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0
IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzID49IGIubV9wb2lzb25lZEJpdHM7IH0KKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgb3BlcmF0b3I9PShVIGIpIGNvbnN0IHsgcmV0dXJuIHVu
cG9pc29uZWQ8VT4oKSA9PSBiOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBvcGVy
YXRvciE9KFUgYikgY29uc3QgeyByZXR1cm4gdW5wb2lzb25lZDxVPigpICE9IGI7IH0KKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIG9wZXJhdG9yPChVIGIpIGNvbnN0IHsgcmV0dXJuIHVu
cG9pc29uZWQ8VT4oKSA8IGI7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIG9wZXJh
dG9yPD0oVSBiKSBjb25zdCB7IHJldHVybiB1bnBvaXNvbmVkPFU+KCkgPD0gYjsgfQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgb3BlcmF0b3I+KFUgYikgY29uc3QgeyByZXR1cm4gdW5w
b2lzb25lZDxVPigpID4gYjsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgb3BlcmF0
b3I+PShVIGIpIGNvbnN0IHsgcmV0dXJuIHVucG9pc29uZWQ8VT4oKSA+PSBiOyB9CisKKyAgICBQ
b2lzb25lZEltcGwmIG9wZXJhdG9yPShUIHB0cikKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3Bv
aXNvbmVkQml0cyA9PSBiLm1fcG9pc29uZWRCaXRzOworICAgICAgICBtX3BvaXNvbmVkQml0cyA9
IHBvaXNvbihwdHIpOworICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQorICAgIFBvaXNvbmVk
SW1wbCYgb3BlcmF0b3I9KGNvbnN0IFBvaXNvbmVkSW1wbCYpID0gZGVmYXVsdDsKIAotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFB0clR5cGUgPSB2b2lkKiwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8UHRyVHlwZT46OnZhbHVlPjo6dHlwZT4KLSAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgUHRyVHlwZSBiKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEsy
LCBLMiBrMiwgdHlwZW5hbWUgVDI+CisgICAgUG9pc29uZWRJbXBsJiBvcGVyYXRvcj0oY29uc3Qg
UG9pc29uZWRJbXBsPEsyLCBrMiwgVDI+JiBvdGhlcikKICAgICB7Ci0gICAgICAgIHJldHVybiB1
bnBvaXNvbmVkPFB0clR5cGU+KCkgPT0gYjsKKyAgICAgICAgbV9wb2lzb25lZEJpdHMgPSBwb2lz
b248VD4ob3RoZXIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0K
IAotICAgIFBvaXNvbmVkSW1wbCYgb3BlcmF0b3I9KFQgcHRyKQorICAgIHZvaWQgc3dhcChQb2lz
b25lZEltcGwmIG8pCiAgICAgewotICAgICAgICBtX3BvaXNvbmVkQml0cyA9IHBvaXNvbihwdHIp
OwotICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgICAgIHN0ZDo6c3dhcChtX3BvaXNvbmVkQml0
cywgby5tX3BvaXNvbmVkQml0cyk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSzIs
IEsyIGsyLCB0eXBlbmFtZSBUMj4KKyAgICB2b2lkIHN3YXAoUG9pc29uZWRJbXBsPEsyLCBrMiwg
VDI+JiBvKQorICAgIHsKKyAgICAgICAgVCB0MSA9IHRoaXMtPnVucG9pc29uZWQoKTsKKyAgICAg
ICAgVDIgdDIgPSBvLnVucG9pc29uZWQoKTsKKyAgICAgICAgc3RkOjpzd2FwKHQxLCB0Mik7Cisg
ICAgICAgIG1fcG9pc29uZWRCaXRzID0gcG9pc29uKHQxKTsKKyAgICAgICAgbyA9IHQyOworICAg
IH0KKworICAgIHRlbXBsYXRlPGNsYXNzIFU+CisgICAgVCBleGNoYW5nZShVJiYgbmV3VmFsdWUp
CisgICAgeworICAgICAgICBUIG9sZFZhbHVlID0gdW5wb2lzb25lZCgpOworICAgICAgICBtX3Bv
aXNvbmVkQml0cyA9IHBvaXNvbihzdGQ6OmZvcndhcmQ8VT4obmV3VmFsdWUpKTsKKyAgICAgICAg
cmV0dXJuIG9sZFZhbHVlOwogICAgIH0KLSAgICBQb2lzb25lZEltcGwmIG9wZXJhdG9yPShjb25z
dCBQb2lzb25lZEltcGwmKSA9IGRlZmF1bHQ7CiAKIHByaXZhdGU6Ci0jaWYgVVNFKEpTVkFMVUU2
NCkKKyNpZiBFTkFCTEUoUE9JU09OKQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+CiAgICAgQUxX
QVlTX0lOTElORSBzdGF0aWMgUG9pc29uZWRCaXRzIHBvaXNvbihVIHB0cikgeyByZXR1cm4gcHRy
ID8gYml0d2lzZV9jYXN0PFBvaXNvbmVkQml0cz4ocHRyKSBeIGtleSA6IDA7IH0KLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBVPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPgogICAgIEFMV0FZ
U19JTkxJTkUgc3RhdGljIFUgdW5wb2lzb24oUG9pc29uZWRCaXRzIHBvaXNvbmVkQml0cykgeyBy
ZXR1cm4gcG9pc29uZWRCaXRzID8gYml0d2lzZV9jYXN0PFU+KHBvaXNvbmVkQml0cyBeIGtleSkg
OiBiaXR3aXNlX2Nhc3Q8VT4oMGxsKTsgfQogI2Vsc2UKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBV
PgogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFBvaXNvbmVkQml0cyBwb2lzb24oVSBwdHIpIHsg
cmV0dXJuIGJpdHdpc2VfY2FzdDxQb2lzb25lZEJpdHM+KHB0cik7IH0KLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBVPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPgogICAgIEFMV0FZU19JTkxJ
TkUgc3RhdGljIFUgdW5wb2lzb24oUG9pc29uZWRCaXRzIHBvaXNvbmVkQml0cykgeyByZXR1cm4g
Yml0d2lzZV9jYXN0PFU+KHBvaXNvbmVkQml0cyk7IH0KICNlbmRpZgogCiAgICAgUG9pc29uZWRC
aXRzIG1fcG9pc29uZWRCaXRzIHsgMCB9OwogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgSzEsIEsx
IGsxLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgSzIsIEsyIGsyLCB0eXBlbmFtZSBUMj4KK2lubGlu
ZSB2b2lkIHN3YXAoUG9pc29uZWRJbXBsPEsxLCBrMSwgVDE+JiBhLCBQb2lzb25lZEltcGw8SzIs
IGsyLCBUMj4mIGIpCit7CisgICAgYS5zd2FwKGIpOworfQorCitXVEZfRVhQT1JUX1BSSVZBVEUg
dWludHB0cl90IG1ha2VQb2lzb24oKTsKKworY29uc3RleHByIHVpbnRwdHJfdCBtYWtlUG9pc29u
KHVpbnQzMl90IGtleSkKK3sKKyNpZiBFTkFCTEUoUE9JU09OKQorICAgIHJldHVybiBzdGF0aWNf
Y2FzdDx1aW50cHRyX3Q+KDB4ODAwMDAwMDAgfCBrZXkpIDw8IDMyOworI2Vsc2UKKyAgICByZXR1
cm4gKHZvaWQpa2V5LCAwOworI2VuZGlmCit9CisKIHRlbXBsYXRlPHVpbnRwdHJfdCYga2V5LCB0
eXBlbmFtZSBUPgogdXNpbmcgUG9pc29uZWQgPSBQb2lzb25lZEltcGw8dWludHB0cl90Jiwga2V5
LCBUPjsKIAotI2lmIFVTRShKU1ZBTFVFNjQpCiB0ZW1wbGF0ZTx1aW50MzJfdCBrZXksIHR5cGVu
YW1lIFQ+Ci11c2luZyBJbnQzMlBvaXNvbmVkID0gUG9pc29uZWRJbXBsPHVpbnRwdHJfdCwgc3Rh
dGljX2Nhc3Q8dWludHB0cl90PihrZXkpIDw8IDMyLCBUPjsKLSNlbHNlCi10ZW1wbGF0ZTx1aW50
MzJfdCwgdHlwZW5hbWUgVD4KLXVzaW5nIEludDMyUG9pc29uZWQgPSBQb2lzb25lZEltcGw8dWlu
dHB0cl90LCAwLCBUPjsKLSNlbmRpZgordXNpbmcgQ29uc3RFeHByUG9pc29uZWQgPSBQb2lzb25l
ZEltcGw8dWludHB0cl90LCBtYWtlUG9pc29uKGtleSksIFQ+OwogCiBXVEZfRVhQT1JUX1BSSVZB
VEUgdWludHB0cl90IG1ha2VQb2lzb24oKTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKLXVzaW5n
IFdURjo6SW50MzJQb2lzb25lZDsKK3VzaW5nIFdURjo6Q29uc3RFeHByUG9pc29uZWQ7CiB1c2lu
ZyBXVEY6OlBvaXNvbmVkOwogdXNpbmcgV1RGOjpQb2lzb25lZEJpdHM7CiB1c2luZyBXVEY6Om1h
a2VQb2lzb247CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMjU4MTYpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxOSBAQAorMjAxNy0xMi0xMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBs
ZS5jb20+CisKKyAgICAgICAgRmlsbCBvdXQgc29tZSBQb2lzb25lZCBBUElzLCBmaXggc29tZSBi
dWdzLCBhbmQgYWRkIHNvbWUgdGVzdHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODA3MjQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM2MDA2ODg0
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9Db25zdEV4cHJQb2lzb25lZC5jcHA6IEFkZGVkLgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9p
c29uZWQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmluaXRpYWxpemVUZXN0
UG9pc29uKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE3LTEyLTEyICBK
b25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBNb2JpbGVNaW5p
QnJvd3NlciB1c2luZyB0aGUgd3JvbmcgdG9vbGNoYWluCkluZGV4OiBUb29scy9UZXN0V2ViS2l0
QVBJL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ01h
a2VMaXN0cy50eHQJKHJldmlzaW9uIDIyNTgwNykKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ01h
a2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTk1LDYgKzk1LDcgQEAgc2V0KFRlc3RXVEZf
U09VUkNFUwogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9DaGVja2VkQXJpdGht
ZXRpY09wZXJhdGlvbnMuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0Nv
bmN1cnJlbnRQdHJIYXNoU2V0LmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dU
Ri9Db25kaXRpb24uY3BwCisgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0NvbnN0
RXhwclBvaXNvbmVkLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9Dcm9z
c1RocmVhZFRhc2suY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0RhdGVN
YXRoLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9EZXF1ZS5jcHAKQEAg
LTEyMiw2ICsxMjMsNyBAQCBzZXQoVGVzdFdURl9TT1VSQ0VTCiAgICAgJHtURVNUV0VCS0lUQVBJ
X0RJUn0vVGVzdHMvV1RGL09wdGlvbmFsLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rl
c3RzL1dURi9PcHRpb25TZXQuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RG
L1BhcmtpbmdMb3QuY3BwCisgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1BvaXNv
bmVkLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9Qcmlvcml0eVF1ZXVl
LmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9SZWRCbGFja1RyZWUuY3Bw
CiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1JlZi5jcHAKSW5kZXg6IFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMjU4MDcpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtNzU2LDYgKzc1Niw4IEBACiAJCUY2QjdCRTk3MTc0NjlCOTYwMDhBMzQ0NSAvKiBhc3NvY2lh
dGUtZm9ybS1jb250cm9scy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY2QjdCRTk2MTc0NjlCN0UwMDhBMzQ0NSAvKiBhc3NvY2lhdGUt
Zm9ybS1jb250cm9scy5odG1sICovOyB9OwogCQlGNkY0OUM2QjE1NTQ1Q0E3MDAwN0YzOUQgLyog
RE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZV9CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjZGNDlDNjYxNTU0NUM4RDAwMDdGMzlEIC8qIERP
TVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGVfQnVuZGxlLmNwcCAqLzsgfTsKIAkJRjZGRERERDYxNDI0
MUM2RjAwNEYxNzI5IC8qIHB1c2gtc3RhdGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNkZERERENTE0MjQxQzQ4MDA0RjE3MjkgLyog
cHVzaC1zdGF0ZS5odG1sICovOyB9OworCQlGRTA1RkFFRjFGRTA2NDVCMDAwOTMyMzAgLyogUG9p
c29uZWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkUwNUZBRUUxRkUwNjQzRDAwMDkzMjMwIC8qIFBvaXNvbmVkLmNwcCAqLzsgfTsKKwkJRkUwNUZB
RjExRkUwOENENDAwMDkzMjMwIC8qIENvbnN0RXhwclBvaXNvbmVkLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMDVGQUYwMUZFMDhDQ0QwMDA5MzIz
MCAvKiBDb25zdEV4cHJQb2lzb25lZC5jcHAgKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNl
Y3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAg
LTE4NTcsNiArMTg1OSw4IEBACiAJCUY2RjQ5QzY3MTU1NDVDOEQwMDA3RjM5RCAvKiBET01XaW5k
b3dFeHRlbnNpb25Ob0NhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGNkZEREREMjE0MjQxQUQ0MDA0RjE3MjkgLyogUHJpdmF0ZUJyb3dzaW5nUHVzaFN0
YXRlTm9IaXN0b3J5Q2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUHJpdmF0ZUJyb3dzaW5nUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNkZERERENTE0MjQxQzQ4MDA0RjE3MjkgLyogcHVz
aC1zdGF0ZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gInB1c2gtc3RhdGUuaHRt
bCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMDVGQUVFMUZFMDY0M0QwMDA5MzIz
MCAvKiBQb2lzb25lZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQ
b2lzb25lZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMDVGQUYwMUZFMDhD
Q0QwMDA5MzIzMCAvKiBDb25zdEV4cHJQb2lzb25lZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDb25zdEV4cHJQb2lzb25lZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUZFQjZGNzRFMUIyQkE0NEUwMDlFNDkyMiAvKiBOYWtlZFB0ci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOYWtlZFB0ci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAK
QEAgLTI2MTMsNiArMjYxNyw3IEBACiAJCQkJQTdBOTY2REExNDBFQ0NDODAwNUVGOUI0IC8qIENo
ZWNrZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAgKi8sCiAJCQkJMEYzMENCNUIxRkNFMTc5MjAw
NEI1MzIzIC8qIENvbmN1cnJlbnRQdHJIYXNoU2V0LmNwcCAqLywKIAkJCQkwRkVBRTM2NzFCN0Qx
OUNCMDBDRTE3RjIgLyogQ29uZGl0aW9uLmNwcCAqLywKKwkJCQlGRTA1RkFGMDFGRTA4Q0NEMDAw
OTMyMzAgLyogQ29uc3RFeHByUG9pc29uZWQuY3BwICovLAogCQkJCTUxNzE0RUI5MUQwODc0MTYw
MDQ3MjNDNCAvKiBDcm9zc1RocmVhZFRhc2suY3BwICovLAogCQkJCTI2QTJDNzJFMTVFMkU3M0Mw
MDVCMUExNCAvKiBDU3RyaW5nLmNwcCAqLywKIAkJCQk3QUEwMjFCQTFBQjA5RUE3MDA1Mjk1M0Yg
LyogRGF0ZU1hdGguY3BwICovLApAQCAtMjY0Niw2ICsyNjUxLDcgQEAKIAkJCQkxQUZERTY1NDE5
NTNCMkMwMDBDNDhGRkEgLyogT3B0aW9uYWwuY3BwICovLAogCQkJCUNFNTBEOEM4MUM4NjY1Q0Uw
MDcyRUE1QSAvKiBPcHRpb25TZXQuY3BwICovLAogCQkJCTBGRTQ0Nzk3MUI3NkYxRTMwMDk0OThF
QiAvKiBQYXJraW5nTG90LmNwcCAqLywKKwkJCQlGRTA1RkFFRTFGRTA2NDNEMDAwOTMyMzAgLyog
UG9pc29uZWQuY3BwICovLAogCQkJCTUzRUMyNTNGMUU5NkJDODAwMDA4MzFCOSAvKiBQcmlvcml0
eVF1ZXVlLmNwcCAqLywKIAkJCQkwRkM2QzRDQjE0MTAyN0UwMDA1QjdGMEMgLyogUmVkQmxhY2tU
cmVlLmNwcCAqLywKIAkJCQk5M0E0MjdBQTE4MERBMjY0MDBDRDI0RDcgLyogUmVmLmNwcCAqLywK
QEAgLTMxOTAsNiArMzE5Niw3IEBACiAJCQkJN0M4M0RGMUQxRDBBNTkwQzAwRkVCQ0YzIC8qIExv
Y2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU3RDU0RjYxRjMzOTVEMDAwQTk3QUE3IC8qIExv
Z2dlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVFRDFEMEE1OTBDMDBGRUJDRjMgLyog
TWF0aEV4dHJhcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTA1RkFGMTFGRTA4Q0Q0MDAwOTMy
MzAgLyogQ29uc3RFeHByUG9pc29uZWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RFRUYx
RDBBNTkwQzAwRkVCQ0YzIC8qIE1ENS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVGMTFE
MEE1OTBDMDBGRUJDRjMgLyogTWVkaWFUaW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNE
RUY2MUQwQTU5MEMwMEZFQkNGMyAvKiBNZXRhQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovLApA
QCAtMzIxMCw2ICszMjE3LDcgQEAKIAkJCQk3QzgzREYwNTFEMEE1OTBDMDBGRUJDRjMgLyogUnVu
TG9vcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREYyNjFEMEE1OTBDMDBGRUJDRjMgLyog
U2F0dXJhdGVkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEz
NTI0QUUxRDYzQTRGQjAwMzE3MjlCIC8qIFNjb3BlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZF
MDVGQUVGMUZFMDY0NUIwMDA5MzIzMCAvKiBQb2lzb25lZC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk3QzgzREYxMjFEMEE1OTBDMDBGRUJDRjMgLyogU2NvcGVkTGFtYmRhLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDODNERjNEMUQwQTU5MEMwMEZFQkNGMyAvKiBTZXRGb3JTY29wZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3QzgzREYyQTFEMEE1OTBDMDBGRUJDRjMgLyogU0hBMS5jcHAgaW4g
U291cmNlcyAqLywKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NvbnN0RXhw
clBvaXNvbmVkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9Db25zdEV4cHJQb2lzb25lZC5jcHAJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvQ29uc3RFeHByUG9pc29uZWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMzUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiUmVmTG9nZ2VyLmgiCisjaW5jbHVk
ZSA8bXV0ZXg+CisjaW5jbHVkZSA8d3RmL1BvaXNvbmVkLmg+CisKK25hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJIHsKKworc3RhdGljIGNvbnN0IHVpbnQzMl90IFBvaXNvbkEgPSAweGFhYWE7CitzdGF0
aWMgY29uc3QgdWludDMyX3QgUG9pc29uQiA9IDB4YmJiYjsKKworLy8gRm9yIHRoZXNlIHRlc3Rz
LCB3ZSBuZWVkIGEgYmFzZSBjbGFzcyBhbmQgYSBkZXJpdmVkIGNsYXNzLiBGb3IgdGhpcyBwdXJw
b3NlLAorLy8gd2UgcmV1c2UgdGhlIFJlZkxvZ2dlciBhbmQgRGVyaXZlZFJlZkxvZ2dlciBjbGFz
c2VzLgorCitURVNUKFdURl9Db25zdEV4cHJQb2lzb25lZCwgQmFzaWMpCit7CisgICAgRGVyaXZl
ZFJlZkxvZ2dlciBhKCJhIik7CisKKyAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZM
b2dnZXIqPiBlbXB0eTsKKyAgICBBU1NFUlRfRVEobnVsbHB0ciwgZW1wdHkudW5wb2lzb25lZCgp
KTsKKworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2Vy
Kj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAg
ICAgICAgQVNTRVJUX0VRKCZhLCAmKnB0cik7CisgICAgICAgIEFTU0VSVF9FUSgmYS5uYW1lLCAm
cHRyLT5uYW1lKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBv
aXNvbkEsIFJlZkxvZ2dlcio+IHB0ciA9ICZhOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51
bnBvaXNvbmVkKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8
UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8
UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIocDEpOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQ
b2lzb25CLCBSZWZMb2dnZXIqPiBwMyhwMSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOworICAg
ICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RS
VUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMo
KSAhPSBwMy5iaXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29u
ZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29u
ZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIgPSBwMTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29u
ZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDMgPSBwMTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBw
MS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7
CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKworICAgICAgICBBU1NF
UlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDEu
Yml0cygpICE9IHAzLmJpdHMoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBDb25zdEV4cHJQ
b2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSA9ICZhOworICAgICAgICBDb25zdEV4cHJQ
b2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9IFdURk1vdmUocDEpOworICAgICAgICBB
U1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIu
dW5wb2lzb25lZCgpKTsKKworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZM
b2dnZXIqPiBwMyA9ICZhOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZM
b2dnZXIqPiBwNCA9IFdURk1vdmUocDMpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9p
c29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDQudW5wb2lzb25lZCgpKTsKKworICAg
ICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJU
X1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBD
b25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSA9ICZhOworICAgICAgICBD
b25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMihXVEZNb3ZlKHAxKSk7Cisg
ICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VR
KCZhLCBwMi51bnBvaXNvbmVkKCkpOworCisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNv
bkEsIFJlZkxvZ2dlcio+IHAzID0gJmE7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNv
bkIsIFJlZkxvZ2dlcio+IHA0KFdURk1vdmUocDMpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBw
My51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7
CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CisgICAgICAg
IEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgIH0KKworICAgIHsKKyAg
ICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgRGVyaXZlZFJlZkxvZ2dlcio+IHAxID0g
JmE7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyID0g
cDE7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+IHAzID0g
cDE7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNT
RVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVu
cG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMo
KSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBwMy5iaXRzKCkpOworICAgIH0K
KworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgRGVyaXZlZFJlZkxv
Z2dlcio+IHAxID0gJmE7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxv
Z2dlcio+IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lz
b25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOworCisgICAg
ICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMyA9ICZh
OworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCA9IFdU
Rk1vdmUocDMpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAg
ICAgIEFTU0VSVF9FUSgmYSwgcDQudW5wb2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJV
RShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygp
ICE9IHA0LmJpdHMoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25l
ZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0
ci51bnBvaXNvbmVkKCkpOworICAgICAgICBwdHIuY2xlYXIoKTsKKyAgICAgICAgQVNTRVJUX0VR
KG51bGxwdHIsIHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0KK30KKworVEVTVChXVEZfQ29uc3RF
eHByUG9pc29uZWQsIEFzc2lnbm1lbnQpCit7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7
CisgICAgUmVmTG9nZ2VyIGIoImIiKTsKKyAgICBEZXJpdmVkUmVmTG9nZ2VyIGMoImMiKTsKKwor
ICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEo
JmEpOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMigm
Yik7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNT
RVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBwMSA9IHAyOworICAgICAgICBB
U1NFUlRfRVEoJmIsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIu
dW5wb2lzb25lZCgpKTsKKworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZM
b2dnZXIqPiBwMygmYSk7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxv
Z2dlcio+IHA0KCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwor
ICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIHAzID0gcDQ7
CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMo
KSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0
cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEs
IFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29u
ZWQoKSk7CisgICAgICAgIHB0ciA9ICZiOworICAgICAgICBBU1NFUlRfRVEoJmIsIHB0ci51bnBv
aXNvbmVkKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9p
c29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgcHRyID0gbnVsbHB0cjsKKyAgICAgICAgQVNTRVJUX0VRKG51
bGxwdHIsIHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29uc3RF
eHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOworICAgICAgICBDb25zdEV4
cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMigmYik7CisgICAgICAgIEFTU0VSVF9F
USgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNv
bmVkKCkpOworICAgICAgICBwMSA9IFdURk1vdmUocDIpOworICAgICAgICBBU1NFUlRfRVEoJmIs
IHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgp
KTsKKworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygm
YSk7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KCZi
KTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NF
UlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIHAzID0gV1RGTW92ZShwNCk7Cisg
ICAgICAgIEFTU0VSVF9FUSgmYiwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VR
KCZiLCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9
PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygp
KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJl
ZkxvZ2dlcio+IHAxKCZhKTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgRGVy
aXZlZFJlZkxvZ2dlcio+IHAyKCZjKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNv
bmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAg
IHAxID0gcDI7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDEudW5wb2lzb25lZCgpKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZjLCBwMi51bnBvaXNvbmVkKCkpOworCisgICAgICAgIENvbnN0RXhwclBv
aXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKKyAgICAgICAgQ29uc3RFeHByUG9p
c29uZWQ8UG9pc29uQiwgRGVyaXZlZFJlZkxvZ2dlcio+IHA0KCZjKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHA0LnVucG9p
c29uZWQoKSk7CisgICAgICAgIHAzID0gcDQ7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDMudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwNC51bnBvaXNvbmVkKCkpOworCisg
ICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NF
UlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAg
IENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAg
IEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHB0ciA9ICZjOworICAg
ICAgICBBU1NFUlRfRVEoJmMsIHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0KKworICAgIHsKKyAg
ICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOworICAg
ICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDIoJmMp
OworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VS
VF9FUSgmYywgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDEgPSBXVEZNb3ZlKHAyKTsKKyAg
ICAgICAgQVNTRVJUX0VRKCZjLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEo
JmMsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29u
QSwgUmVmTG9nZ2VyKj4gcDMoJmEpOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25C
LCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDQoJmMpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVu
cG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDQudW5wb2lzb25lZCgpKTsKKyAg
ICAgICAgcDMgPSBXVEZNb3ZlKHA0KTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMy51bnBvaXNv
bmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAg
ICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9U
UlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29u
c3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAgICAgICAgQVNT
RVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcHRyID0gcHRyOworICAgICAg
ICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0KKworICAgIHsKKyAgICAg
ICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyNpZiBDT01QSUxFUihDTEFORykK
KyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMg
aWdub3JlZCAiLVd1bmtub3duLXByYWdtYXMiCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdu
b3JlZCAiLVdzZWxmLW1vdmUiCisjZW5kaWYKKyAgICAgICAgcHRyID0gV1RGTW92ZShwdHIpOwor
I2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorI2VuZGlm
CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgfQorfQorCitU
RVNUKFdURl9Db25zdEV4cHJQb2lzb25lZCwgU3dhcCkKK3sKKyAgICBSZWZMb2dnZXIgYSgiYSIp
OworICAgIFJlZkxvZ2dlciBiKCJiIik7CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNv
bmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29u
ZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoJmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAx
LnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsK
KyAgICAgICAgcDEuc3dhcChwMik7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDEudW5wb2lzb25l
ZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOworCisgICAgICAg
IENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKKyAgICAgICAg
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQoJmIpOworICAgICAgICBB
U1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDQu
dW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDMuc3dhcChwNCk7CisgICAgICAgIEFTU0VSVF9FUSgm
YiwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwNC51bnBvaXNvbmVk
KCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBwMi5iaXRzKCkpOworICAg
ICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICAgICAgQVNTRVJU
X1RSVUUocDEuYml0cygpID09IHAzLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAyLmJp
dHMoKSAhPSBwNC5iaXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9p
c29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOworICAgICAgICBDb25zdEV4cHJQb2lz
b25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMigmYik7CisgICAgICAgIEFTU0VSVF9FUSgmYSwg
cDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkp
OworICAgICAgICBzd2FwKHAxLCBwMik7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDEudW5wb2lz
b25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOworCisgICAg
ICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKKyAgICAg
ICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQoJmIpOworICAgICAg
ICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwg
cDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAgc3dhcChwMywgcDQpOworICAgICAgICBBU1NFUlRf
RVEoJmIsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDQudW5wb2lz
b25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDIuYml0cygpKTsK
KyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgICAgIEFT
U0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMy5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShw
Mi5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9Cit9CisKK3N0YXRpYyBDb25zdEV4cHJQb2lz
b25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwb2lzb25lZFB0ckZvbyhSZWZMb2dnZXImIGxvZ2dl
cikKK3sKKyAgICByZXR1cm4gQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4o
JmxvZ2dlcik7Cit9CisKK1RFU1QoV1RGX0NvbnN0RXhwclBvaXNvbmVkLCBSZXR1cm5WYWx1ZSkK
K3sKKyAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKKworICAgIHsKKyAgICAgICAgYXV0byBw
dHIgPSBwb2lzb25lZFB0ckZvbyhhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lz
b25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCAmKnB0cik7CisgICAgICAgIEFTU0VSVF9F
USgmYS5uYW1lLCAmcHRyLT5uYW1lKTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkKKwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVk
LmNwcAkobm9uZXhpc3RlbnQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lz
b25lZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNjcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNp
bmNsdWRlICJSZWZMb2dnZXIuaCIKKyNpbmNsdWRlIDxtdXRleD4KKyNpbmNsdWRlIDx3dGYvUG9p
c29uZWQuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitzdGF0aWMgdWludHB0cl90
IGdfdGVzdFBvaXNvbkE7CitzdGF0aWMgdWludHB0cl90IGdfdGVzdFBvaXNvbkI7CisKK3N0YXRp
YyB2b2lkIGluaXRpYWxpemVUZXN0UG9pc29uKCkKK3sKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2Zs
YWcgaW5pdGlhbGl6ZU9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRpYWxpemVPbmNl
RmxhZywgW10geworICAgICAgICAvLyBNYWtlIHN1cmUgd2UgZ2V0IDIgZGlmZmVyZW50IHBvaXNv
biB2YWx1ZXMuCisgICAgICAgIGdfdGVzdFBvaXNvbkEgPSBtYWtlUG9pc29uKCk7CisgICAgICAg
IHdoaWxlICghZ190ZXN0UG9pc29uQiB8fCBnX3Rlc3RQb2lzb25CID09IGdfdGVzdFBvaXNvbkEp
CisgICAgICAgICAgICBnX3Rlc3RQb2lzb25CID0gbWFrZVBvaXNvbigpOworICAgIH0pOworfQor
CisvLyBGb3IgdGhlc2UgdGVzdHMsIHdlIG5lZWQgYSBiYXNlIGNsYXNzIGFuZCBhIGRlcml2ZWQg
Y2xhc3MuIEZvciB0aGlzIHB1cnBvc2UsCisvLyB3ZSByZXVzZSB0aGUgUmVmTG9nZ2VyIGFuZCBE
ZXJpdmVkUmVmTG9nZ2VyIGNsYXNzZXMuCisKK1RFU1QoV1RGX1BvaXNvbmVkLCBCYXNpYykKK3sK
KyAgICBpbml0aWFsaXplVGVzdFBvaXNvbigpOworICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIp
OworCisgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gZW1wdHk7CisgICAg
QVNTRVJUX0VRKG51bGxwdHIsIGVtcHR5LnVucG9pc29uZWQoKSk7CisKKyAgICB7CisgICAgICAg
IFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAgIEFT
U0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgJipw
dHIpOworICAgICAgICBBU1NFUlRfRVEoJmEubmFtZSwgJnB0ci0+bmFtZSk7CisgICAgfQorCisg
ICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIgPSAm
YTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICB9CisKKyAg
ICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxID0gJmE7
CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKHAxKTsKKyAg
ICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDMocDEpOworICAgICAg
ICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwg
cDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkp
OworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAg
ICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDMuYml0cygpKTsKKyAgICB9CisKKyAgICB7Cisg
ICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxID0gJmE7CisgICAg
ICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyID0gcDE7CisgICAgICAg
IFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHAzID0gcDE7CisgICAgICAgIEFT
U0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51
bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisK
KyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFT
U0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBwMy5iaXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAg
ICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAgICAg
UG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAg
ICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEo
JmEsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwg
UmVmTG9nZ2VyKj4gcDMgPSAmYTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgUmVm
TG9nZ2VyKj4gcDQgPSBXVEZNb3ZlKHAzKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBv
aXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7CisKKyAg
ICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VS
VF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAg
UG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAgICAgUG9p
c29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoV1RGTW92ZShwMSkpOworICAgICAg
ICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwg
cDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZM
b2dnZXIqPiBwMyA9ICZhOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dn
ZXIqPiBwNChXVEZNb3ZlKHAzKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25l
ZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAg
IEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJV
RShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFBvaXNv
bmVkPGdfdGVzdFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMSA9ICZhOworICAgICAgICBQ
b2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9IHAxOworICAgICAgICBQb2lz
b25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwMyA9IHAxOworICAgICAgICBBU1NFUlRf
RVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lz
b25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworCisgICAg
ICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRf
VFJVRShwMS5iaXRzKCkgIT0gcDMuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFBv
aXNvbmVkPGdfdGVzdFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMSA9ICZhOworICAgICAg
ICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9IFdURk1vdmUocDEpOwor
ICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9F
USgmYSwgcDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25B
LCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDMgPSAmYTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9p
c29uQiwgUmVmTG9nZ2VyKj4gcDQgPSBXVEZNb3ZlKHAzKTsKKyAgICAgICAgQVNTRVJUX0VRKCZh
LCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQo
KSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CisgICAg
ICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgIH0KKworICAgIHsK
KyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAg
ICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcHRyLmNsZWFy
KCk7CisgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICB9
Cit9CisKK1RFU1QoV1RGX1BvaXNvbmVkLCBBc3NpZ25tZW50KQoreworICAgIGluaXRpYWxpemVU
ZXN0UG9pc29uKCk7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CisgICAgUmVmTG9nZ2Vy
IGIoImIiKTsKKyAgICBEZXJpdmVkUmVmTG9nZ2VyIGMoImMiKTsKKworICAgIHsKKyAgICAgICAg
UG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOworICAgICAgICBQb2lz
b25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMigmYik7CisgICAgICAgIEFTU0VSVF9F
USgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNv
bmVkKCkpOworICAgICAgICBwMSA9IHAyOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAxLnVucG9p
c29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKKworICAg
ICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygmYSk7CisgICAgICAg
IFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KCZiKTsKKyAgICAgICAgQVNT
RVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVu
cG9pc29uZWQoKSk7CisgICAgICAgIHAzID0gcDQ7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDMu
dW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOwor
CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBB
U1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAg
ICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAg
IEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHB0ciA9ICZiOworICAg
ICAgICBBU1NFUlRfRVEoJmIsIHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0KKworICAgIHsKKyAg
ICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcHRyID0gbnVsbHB0
cjsKKyAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0K
KworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEo
JmEpOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMigmYik7
CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBwMSA9IFdURk1vdmUocDIpOworICAg
ICAgICBBU1NFUlRfRVEoJmIsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgm
YiwgcDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBS
ZWZMb2dnZXIqPiBwMygmYSk7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxv
Z2dlcio+IHA0KCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwor
ICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIHAzID0gV1RG
TW92ZShwNCk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVF
KHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkg
IT0gcDQuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBv
aXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29u
QSwgRGVyaXZlZFJlZkxvZ2dlcio+IHAyKCZjKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51
bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHAyLnVucG9pc29uZWQoKSk7Cisg
ICAgICAgIHAxID0gcDI7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDEudW5wb2lzb25lZCgpKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMi51bnBvaXNvbmVkKCkpOworCisgICAgICAgIFBvaXNv
bmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKKyAgICAgICAgUG9pc29uZWQ8
Z190ZXN0UG9pc29uQiwgRGVyaXZlZFJlZkxvZ2dlcio+IHA0KCZjKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHA0LnVucG9p
c29uZWQoKSk7CisgICAgICAgIHAzID0gcDQ7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDMudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwNC51bnBvaXNvbmVkKCkpOworCisg
ICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NF
UlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAg
IFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAgIEFT
U0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHB0ciA9ICZjOworICAgICAg
ICBBU1NFUlRfRVEoJmMsIHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0KKworICAgIHsKKyAgICAg
ICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOworICAgICAgICBQ
b2lzb25lZDxnX3Rlc3RQb2lzb25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDIoJmMpOworICAgICAg
ICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywg
cDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDEgPSBXVEZNb3ZlKHAyKTsKKyAgICAgICAgQVNT
RVJUX0VRKCZjLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHAyLnVu
cG9pc29uZWQoKSk7CisKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2Vy
Kj4gcDMoJmEpOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBEZXJpdmVkUmVmTG9n
Z2VyKj4gcDQoJmMpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7Cisg
ICAgICAgIEFTU0VSVF9FUSgmYywgcDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDMgPSBXVEZN
b3ZlKHA0KTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAg
ICBBU1NFUlRfRVEoJmMsIHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUo
cDEuYml0cygpID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAh
PSBwNC5iaXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9p
c29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgcHRyID0gcHRyOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0
ci51bnBvaXNvbmVkKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0
UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIu
dW5wb2lzb25lZCgpKTsKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25v
c3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bmtub3duLXBy
YWdtYXMiCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdzZWxmLW1vdmUiCisj
ZW5kaWYKKyAgICAgICAgcHRyID0gV1RGTW92ZShwdHIpOworI2lmIENPTVBJTEVSKENMQU5HKQor
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorI2VuZGlmCisgICAgICAgIEFTU0VSVF9FUSgm
YSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgfQorfQorCitURVNUKFdURl9Qb2lzb25lZCwgU3dh
cCkKK3sKKyAgICBpbml0aWFsaXplVGVzdFBvaXNvbigpOworICAgIFJlZkxvZ2dlciBhKCJhIik7
CisgICAgUmVmTG9nZ2VyIGIoImIiKTsKKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0
UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lz
b25BLCBSZWZMb2dnZXIqPiBwMigmYik7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lz
b25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAg
ICBwMS5zd2FwKHAyKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOwor
ICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgUG9pc29u
ZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOworICAgICAgICBQb2lzb25lZDxn
X3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7CisgICAgICAgIEFTU0VSVF9FUSgmYSwg
cDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkp
OworICAgICAgICBwMy5zd2FwKHA0KTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMy51bnBvaXNv
bmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAg
ICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9U
UlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRz
KCkgPT0gcDMuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDIuYml0cygpICE9IHA0LmJp
dHMoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBS
ZWZMb2dnZXIqPiBwMSgmYSk7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxv
Z2dlcio+IHAyKCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwor
ICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHN3YXAocDEs
IHAyKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBB
U1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0
UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lz
b25CLCBSZWZMb2dnZXIqPiBwNCgmYik7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lz
b25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAg
ICBzd2FwKHAzLCBwNCk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDMudW5wb2lzb25lZCgpKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZhLCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VS
VF9UUlVFKHAxLmJpdHMoKSAhPSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5i
aXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAz
LmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAyLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwor
ICAgIH0KK30KKworc3RhdGljIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHBv
aXNvbmVkUHRyRm9vKFJlZkxvZ2dlciYgbG9nZ2VyKQoreworICAgIHJldHVybiBQb2lzb25lZDxn
X3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPigmbG9nZ2VyKTsKK30KKworVEVTVChXVEZfUG9pc29u
ZWQsIFJldHVyblZhbHVlKQoreworICAgIGluaXRpYWxpemVUZXN0UG9pc29uKCk7CisgICAgRGVy
aXZlZFJlZkxvZ2dlciBhKCJhIik7CisKKyAgICB7CisgICAgICAgIGF1dG8gcHRyID0gcG9pc29u
ZWRQdHJGb28oYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7Cisg
ICAgICAgIEFTU0VSVF9FUSgmYSwgJipwdHIpOworICAgICAgICBBU1NFUlRfRVEoJmEubmFtZSwg
JnB0ci0+bmFtZSk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCisK
</data>
<flag name="review"
          id="348290"
          type_id="1"
          status="+"
          setter="jfbastien"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329172</attachid>
            <date>2017-12-12 16:05:30 -0800</date>
            <delta_ts>2017-12-12 17:24:15 -0800</delta_ts>
            <desc>patch for landing + speculative build fixes.</desc>
            <filename>bug-180724.patch</filename>
            <type>text/plain</type>
            <size>41029</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI1ODA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDE3LTEyLTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBG
aWxsIG91dCBzb21lIFBvaXNvbmVkIEFQSXMsIGZpeCBzb21lIGJ1Z3MsIGFuZCBhZGQgc29tZSB0
ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
MDcyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYwMDY4ODQ+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgSkYgQmFzdGllbi4KKworICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlv
blRhYmxlLmg6CisKIDIwMTctMTItMDQgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAK
ICAgICAgICAgV2ViIEluc3BlY3RvcjogbW9kZXJuaXplIEluamVjdGVkU2NyaXB0IGEgYml0Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFi
bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVUcmFuc2l0aW9uVGFibGUuaAkocmV2aXNpb24gMjI1ODA3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMTg3LDggKzE4Nyw4IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBmcmll
bmQgY2xhc3MgU2luZ2xlU2xvdFRyYW5zaXRpb25XZWFrT3duZXI7Ci0gICAgdXNpbmcgUG9pc29u
ZWRUcmFuc2l0aW9uTWFwUHRyID0gSW50MzJQb2lzb25lZDxUcmFuc2l0aW9uTWFwUG9pc29uLCBU
cmFuc2l0aW9uTWFwKj47Ci0gICAgdXNpbmcgUG9pc29uZWRXZWFrSW1wbFB0ciA9IEludDMyUG9p
c29uZWQ8V2Vha0ltcGxQb2lzb24sIFdlYWtJbXBsKj47CisgICAgdXNpbmcgUG9pc29uZWRUcmFu
c2l0aW9uTWFwUHRyID0gQ29uc3RFeHByUG9pc29uZWQ8VHJhbnNpdGlvbk1hcFBvaXNvbiwgVHJh
bnNpdGlvbk1hcCo+OworICAgIHVzaW5nIFBvaXNvbmVkV2Vha0ltcGxQdHIgPSBDb25zdEV4cHJQ
b2lzb25lZDxXZWFrSW1wbFBvaXNvbiwgV2Vha0ltcGwqPjsKIAogICAgIGJvb2wgaXNVc2luZ1Np
bmdsZVNsb3QoKSBjb25zdAogICAgIHsKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjU4MDcpCisrKyBTb3Vy
Y2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDE3LTEy
LTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBGaWxsIG91dCBz
b21lIFBvaXNvbmVkIEFQSXMsIGZpeCBzb21lIGJ1Z3MsIGFuZCBhZGQgc29tZSB0ZXN0cy4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDcyNAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMzYwMDY4ODQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSkYg
QmFzdGllbi4KKworICAgICAgICBBbHNvIHJlbmFtZSBJbnQzMlBvaXNvbmVkIHRvIENvbnN0RXhw
clBvaXNvbmVkLiAgVGhlIGtleSBpdCB0YWtlcyBpcyBhY3R1YWxseSBhCisgICAgICAgIHVpbnQz
Ml90LiAgU28sIEludDMyIGlzIHJlYWxseSBhIG1pc25vbWVyLiAgSW4gYWRkaXRpb24sIHRoZSBr
ZXkgbmVlZHMgdG8gYmUgYQorICAgICAgICBjb25zdGV4cHIuICBTbywgQ29uc3RFeHByUG9pc29u
ZWQgaXMgYSBiZXR0ZXIgbmFtZSBmb3IgaXQuCisKKyAgICAgICAgKiB3dGYvUG9pc29uZWQuY3Bw
OgorICAgICAgICAoV1RGOjptYWtlUG9pc29uKToKKyAgICAgICAgKiB3dGYvUG9pc29uZWQuaDoK
KyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsSGVscGVyOjphc1JlZmVyZW5jZSk6CisgICAgICAg
IChXVEY6OlBvaXNvbmVkSW1wbDo6UG9pc29uZWRJbXBsKToKKyAgICAgICAgKFdURjo6UG9pc29u
ZWRJbXBsOjpjbGVhcik6CisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6b3BlcmF0b3IqIGNv
bnN0KToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvci0+IGNvbnN0KToKKyAg
ICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdU
Rjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKFdURjo6UG9pc29u
ZWRJbXBsOjpvcGVyYXRvcjwgY29uc3QpOgorICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6Om9w
ZXJhdG9yPD0gY29uc3QpOgorICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6Om9wZXJhdG9yPiBj
b25zdCk6CisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6b3BlcmF0b3I+PSBjb25zdCk6Cisg
ICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdURjo6UG9p
c29uZWRJbXBsOjpzd2FwKToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpleGNoYW5nZSk6
CisgICAgICAgIChXVEY6OnN3YXApOgorICAgICAgICAoV1RGOjptYWtlUG9pc29uKToKKyAgICAg
ICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvcj09KTogRGVsZXRlZC4KKwogMjAxNy0xMi0x
MiAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0VTTmV4dF1b
QmlnSW50XSBJbXBsZW1lbnQgQmlnSW50IGxpdGVyYWxzIGFuZCBKU0JpZ0ludApJbmRleDogU291
cmNlL1dURi93dGYvUG9pc29uZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1Bv
aXNvbmVkLmNwcAkocmV2aXNpb24gMjI1ODA3KQorKysgU291cmNlL1dURi93dGYvUG9pc29uZWQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXVEYgewogdWlu
dHB0cl90IG1ha2VQb2lzb24oKQogewogICAgIHVpbnRwdHJfdCBrZXkgPSBjcnlwdG9ncmFwaGlj
YWxseVJhbmRvbU51bWJlcigpOwotI2lmIFVTRShKU1ZBTFVFNjQpICYmICFPUyhXSU5ET1dTKQor
I2lmIEVOQUJMRShQT0lTT04pCiAgICAga2V5ID0gKGtleSA8PCAzMikgXiAoc3RhdGljX2Nhc3Q8
dWludHB0cl90PihjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpKSA8PCAzKTsKICAgICAv
LyBFbnN1cmUgdGhhdCB0aGUgcG9pc29uZWQgYml0cyAocG9pbnRlciBeIGtleSkgZG8gbm90IG1h
a2UgYSB2YWxpZCBwb2ludGVyIGFuZAogICAgIC8vIGNhbm5vdCBiZSAwLiBXZSBlbnN1cmUgdGhh
dCBpdCBpcyB6ZXJvIHNvIHRoYXQgdGhlIHBvaXNvbmVkIGJpdHMgY2FuIGFsc28gYmUKQEAgLTUx
LDQgKzUxLDMgQEAgdWludHB0cl90IG1ha2VQb2lzb24oKQogfQogCiB9IC8vIG5hbWVzcGFjZSBX
VEYKLQpJbmRleDogU291cmNlL1dURi93dGYvUG9pc29uZWQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi9Qb2lzb25lZC5oCShyZXZpc2lvbiAyMjU4MDcpCisrKyBTb3VyY2UvV1RGL3d0
Zi9Qb2lzb25lZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMSArMjcsMTQgQEAKIAogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKKyNkZWZpbmUgRU5BQkxFX1BPSVNPTiAxCiAjZGVmaW5l
IEVOQUJMRV9QT0lTT05fQVNTRVJUUyAwCiAKIC8vIE5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIGZv
ciAzMi1iaXQgb3IgT1MoV0lORE9XUykgYnVpbGRzIChiZWNhdXNlIG9mIG1pc3NpbmcgbGxpbnQg
c3VwcG9ydCkuCiAvLyBNYWtlIHN1cmUgaXQncyBkaXNhYmxlZC4KICNpZiBVU0UoSlNWQUxVRTMy
XzY0KSB8fCBPUyhXSU5ET1dTKQorI3VuZGVmIEVOQUJMRV9QT0lTT04KKyNkZWZpbmUgRU5BQkxF
X1BPSVNPTiAwCiAjdW5kZWYgRU5BQkxFX1BPSVNPTl9BU1NFUlRTCiAjZGVmaW5lIEVOQUJMRV9Q
T0lTT05fQVNTRVJUUyAwCiAjZW5kaWYKQEAgLTQwLDE3ICs0Myw0NyBAQCBuYW1lc3BhY2UgV1RG
IHsKIAogdXNpbmcgUG9pc29uZWRCaXRzID0gdWludHB0cl90OwogCituYW1lc3BhY2UgUG9pc29u
ZWRJbXBsSGVscGVyIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBpc0Z1bmN0aW9u
UG9pbnRlciA6IHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgc3RkOjppc19mdW5jdGlvbjx0
eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPFQ+Ojp0eXBlPjo6dmFsdWU+IHsgfTsKKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBpc1ZvaWRQb2ludGVyIDogc3RkOjppbnRlZ3JhbF9j
b25zdGFudDxib29sLCBzdGQ6OmlzX3ZvaWQ8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxU
Pjo6dHlwZT46OnZhbHVlPiB7IH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgaXND
b252ZXJ0aWJsZVRvUmVmZXJlbmNlIDogc3RkOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCAhaXNG
dW5jdGlvblBvaW50ZXI8VD46OnZhbHVlICYmICFpc1ZvaWRQb2ludGVyPFQ+Ojp2YWx1ZT4geyB9
OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgordHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDwhaXND
b252ZXJ0aWJsZVRvUmVmZXJlbmNlPFQ+Ojp2YWx1ZSwgaW50PiYKK2FzUmVmZXJlbmNlKFQpIHsg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgor
dHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxpc0NvbnZlcnRpYmxlVG9SZWZlcmVuY2U8VD46OnZh
bHVlLCB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPFQ+Ojp0eXBlPiYKK2FzUmVmZXJlbmNl
KFQgcHRyKSB7IHJldHVybiAqcHRyOyB9CisKK30gLy8gbmFtZXNwYWNlIFBvaXNvbmVkSW1wbEhl
bHBlcgorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBlLCBLZXlUeXBlIGtleSwgdHlwZW5hbWUg
VCwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfcG9pbnRlcjxUPjo6dmFsdWU+
PgogY2xhc3MgUG9pc29uZWRJbXBsIHsKIHB1YmxpYzoKICAgICBQb2lzb25lZEltcGwoKSB7IH0K
IAotICAgIGV4cGxpY2l0IFBvaXNvbmVkSW1wbChUIHB0cikKKyAgICBQb2lzb25lZEltcGwoVCBw
dHIpCiAgICAgICAgIDogbV9wb2lzb25lZEJpdHMocG9pc29uKHB0cikpCiAgICAgeyB9CiAKICAg
ICBQb2lzb25lZEltcGwoY29uc3QgUG9pc29uZWRJbXBsJikgPSBkZWZhdWx0OwogCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgSzIsIEsyIGsyLCB0eXBlbmFtZSBUMj4KKyAgICBQb2lzb25lZEltcGwo
Y29uc3QgUG9pc29uZWRJbXBsPEsyLCBrMiwgVDI+JiBvdGhlcikKKyAgICAgICAgOiBtX3BvaXNv
bmVkQml0cyhwb2lzb248VD4ob3RoZXIudW5wb2lzb25lZCgpKSkKKyAgICB7IH0KKyAgICAKKyAg
ICBQb2lzb25lZEltcGwoUG9pc29uZWRJbXBsJiYgb3RoZXIpCisgICAgICAgIDogbV9wb2lzb25l
ZEJpdHMoV1RGTW92ZShvdGhlci5tX3BvaXNvbmVkQml0cykpCisgICAgeyB9CisKICAgICBleHBs
aWNpdCBQb2lzb25lZEltcGwoUG9pc29uZWRCaXRzIHBvaXNvbmVkQml0cykKICAgICAgICAgOiBt
X3BvaXNvbmVkQml0cyhwb2lzb25lZEJpdHMpCiAgICAgeyB9CkBAIC03Miw3ICsxMDUsMTAgQEAg
cHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPgogICAgIFUgdW5wb2lzb25lZCgp
IGNvbnN0IHsgcmV0dXJuIHVucG9pc29uPFU+KG1fcG9pc29uZWRCaXRzKTsgfQogCi0gICAgQUxX
QVlTX0lOTElORSBUIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiB1bnBvaXNvbjxUPihtX3Bv
aXNvbmVkQml0cyk7IH0KKyAgICB2b2lkIGNsZWFyKCkgeyBtX3BvaXNvbmVkQml0cyA9IDA7IH0K
KworICAgIGF1dG8mIG9wZXJhdG9yKigpIGNvbnN0IHsgQVNTRVJUKG1fcG9pc29uZWRCaXRzKTsg
cmV0dXJuIFBvaXNvbmVkSW1wbEhlbHBlcjo6YXNSZWZlcmVuY2UodW5wb2lzb24obV9wb2lzb25l
ZEJpdHMpKTsgfQorICAgIEFMV0FZU19JTkxJTkUgVCBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1
cm4gdW5wb2lzb24obV9wb2lzb25lZEJpdHMpOyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBV
ID0gUG9pc29uZWRCaXRzPgogICAgIFUgYml0cygpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2Fz
dDxVPihtX3BvaXNvbmVkQml0cyk7IH0KQEAgLTgwLDU2ICsxMTYsOTkgQEAgcHVibGljOgogICAg
IGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fcG9pc29uZWRCaXRzOyB9CiAgICAg
ZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9wb2lzb25lZEJpdHM7
IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0Cisg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBvaXNvbmVkSW1wbCYgYikgY29uc3QgeyByZXR1cm4g
bV9wb2lzb25lZEJpdHMgPT0gYi5tX3BvaXNvbmVkQml0czsgfQorICAgIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzICE9
IGIubV9wb2lzb25lZEJpdHM7IH0KKyAgICBib29sIG9wZXJhdG9yPChjb25zdCBQb2lzb25lZElt
cGwmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzIDwgYi5tX3BvaXNvbmVkQml0czsg
fQorICAgIGJvb2wgb3BlcmF0b3I8PShjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0IHsgcmV0
dXJuIG1fcG9pc29uZWRCaXRzIDw9IGIubV9wb2lzb25lZEJpdHM7IH0KKyAgICBib29sIG9wZXJh
dG9yPihjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRz
ID4gYi5tX3BvaXNvbmVkQml0czsgfQorICAgIGJvb2wgb3BlcmF0b3I+PShjb25zdCBQb2lzb25l
ZEltcGwmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzID49IGIubV9wb2lzb25lZEJp
dHM7IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgb3BlcmF0b3I9PShVIGIpIGNv
bnN0IHsgcmV0dXJuIHVucG9pc29uZWQ8VT4oKSA9PSBiOyB9CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVT4gYm9vbCBvcGVyYXRvciE9KFUgYikgY29uc3QgeyByZXR1cm4gdW5wb2lzb25lZDxVPigp
ICE9IGI7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIG9wZXJhdG9yPChVIGIpIGNv
bnN0IHsgcmV0dXJuIHVucG9pc29uZWQ8VT4oKSA8IGI7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBVPiBib29sIG9wZXJhdG9yPD0oVSBiKSBjb25zdCB7IHJldHVybiB1bnBvaXNvbmVkPFU+KCkg
PD0gYjsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgb3BlcmF0b3I+KFUgYikgY29u
c3QgeyByZXR1cm4gdW5wb2lzb25lZDxVPigpID4gYjsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFU+IGJvb2wgb3BlcmF0b3I+PShVIGIpIGNvbnN0IHsgcmV0dXJuIHVucG9pc29uZWQ8VT4oKSA+
PSBiOyB9CisKKyAgICBQb2lzb25lZEltcGwmIG9wZXJhdG9yPShUIHB0cikKICAgICB7Ci0gICAg
ICAgIHJldHVybiBtX3BvaXNvbmVkQml0cyA9PSBiLm1fcG9pc29uZWRCaXRzOworICAgICAgICBt
X3BvaXNvbmVkQml0cyA9IHBvaXNvbihwdHIpOworICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAg
fQorICAgIFBvaXNvbmVkSW1wbCYgb3BlcmF0b3I9KGNvbnN0IFBvaXNvbmVkSW1wbCYpID0gZGVm
YXVsdDsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFB0clR5cGUgPSB2b2lkKiwgdHlwZW5hbWUg
PSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8UHRyVHlwZT46OnZhbHVl
Pjo6dHlwZT4KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUHRyVHlwZSBiKQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEsyLCBLMiBrMiwgdHlwZW5hbWUgVDI+CisgICAgUG9pc29uZWRJbXBsJiBv
cGVyYXRvcj0oY29uc3QgUG9pc29uZWRJbXBsPEsyLCBrMiwgVDI+JiBvdGhlcikKICAgICB7Ci0g
ICAgICAgIHJldHVybiB1bnBvaXNvbmVkPFB0clR5cGU+KCkgPT0gYjsKKyAgICAgICAgbV9wb2lz
b25lZEJpdHMgPSBwb2lzb248VD4ob3RoZXIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcmV0dXJu
ICp0aGlzOwogICAgIH0KIAotICAgIFBvaXNvbmVkSW1wbCYgb3BlcmF0b3I9KFQgcHRyKQorICAg
IHZvaWQgc3dhcChQb2lzb25lZEltcGwmIG8pCiAgICAgewotICAgICAgICBtX3BvaXNvbmVkQml0
cyA9IHBvaXNvbihwdHIpOwotICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgICAgIHN0ZDo6c3dh
cChtX3BvaXNvbmVkQml0cywgby5tX3BvaXNvbmVkQml0cyk7CisgICAgfQorCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgSzIsIEsyIGsyLCB0eXBlbmFtZSBUMj4KKyAgICB2b2lkIHN3YXAoUG9pc29u
ZWRJbXBsPEsyLCBrMiwgVDI+JiBvKQorICAgIHsKKyAgICAgICAgVCB0MSA9IHRoaXMtPnVucG9p
c29uZWQoKTsKKyAgICAgICAgVDIgdDIgPSBvLnVucG9pc29uZWQoKTsKKyAgICAgICAgc3RkOjpz
d2FwKHQxLCB0Mik7CisgICAgICAgIG1fcG9pc29uZWRCaXRzID0gcG9pc29uKHQxKTsKKyAgICAg
ICAgbyA9IHQyOworICAgIH0KKworICAgIHRlbXBsYXRlPGNsYXNzIFU+CisgICAgVCBleGNoYW5n
ZShVJiYgbmV3VmFsdWUpCisgICAgeworICAgICAgICBUIG9sZFZhbHVlID0gdW5wb2lzb25lZCgp
OworICAgICAgICBtX3BvaXNvbmVkQml0cyA9IHBvaXNvbihzdGQ6OmZvcndhcmQ8VT4obmV3VmFs
dWUpKTsKKyAgICAgICAgcmV0dXJuIG9sZFZhbHVlOwogICAgIH0KLSAgICBQb2lzb25lZEltcGwm
IG9wZXJhdG9yPShjb25zdCBQb2lzb25lZEltcGwmKSA9IGRlZmF1bHQ7CiAKIHByaXZhdGU6Ci0j
aWYgVVNFKEpTVkFMVUU2NCkKKyNpZiBFTkFCTEUoUE9JU09OKQogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFU+CiAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUG9pc29uZWRCaXRzIHBvaXNvbihVIHB0
cikgeyByZXR1cm4gcHRyID8gYml0d2lzZV9jYXN0PFBvaXNvbmVkQml0cz4ocHRyKSBeIGtleSA6
IDA7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUg
PSBUPgogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFUgdW5wb2lzb24oUG9pc29uZWRCaXRzIHBv
aXNvbmVkQml0cykgeyByZXR1cm4gcG9pc29uZWRCaXRzID8gYml0d2lzZV9jYXN0PFU+KHBvaXNv
bmVkQml0cyBeIGtleSkgOiBiaXR3aXNlX2Nhc3Q8VT4oMGxsKTsgfQogI2Vsc2UKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBVPgogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFBvaXNvbmVkQml0cyBw
b2lzb24oVSBwdHIpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxQb2lzb25lZEJpdHM+KHB0cik7IH0K
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPgog
ICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFUgdW5wb2lzb24oUG9pc29uZWRCaXRzIHBvaXNvbmVk
Qml0cykgeyByZXR1cm4gYml0d2lzZV9jYXN0PFU+KHBvaXNvbmVkQml0cyk7IH0KICNlbmRpZgog
CiAgICAgUG9pc29uZWRCaXRzIG1fcG9pc29uZWRCaXRzIHsgMCB9OwogfTsKIAotdGVtcGxhdGU8
dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQ+Ci11c2luZyBQb2lzb25lZCA9IFBvaXNvbmVkSW1w
bDx1aW50cHRyX3QmLCBrZXksIFQ+OwordGVtcGxhdGU8dHlwZW5hbWUgSzEsIEsxIGsxLCB0eXBl
bmFtZSBUMSwgdHlwZW5hbWUgSzIsIEsyIGsyLCB0eXBlbmFtZSBUMj4KK2lubGluZSB2b2lkIHN3
YXAoUG9pc29uZWRJbXBsPEsxLCBrMSwgVDE+JiBhLCBQb2lzb25lZEltcGw8SzIsIGsyLCBUMj4m
IGIpCit7CisgICAgYS5zd2FwKGIpOworfQogCi0jaWYgVVNFKEpTVkFMVUU2NCkKLXRlbXBsYXRl
PHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVD4KLXVzaW5nIEludDMyUG9pc29uZWQgPSBQb2lzb25l
ZEltcGw8dWludHB0cl90LCBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGtleSkgPDwgMzIsIFQ+Owor
V1RGX0VYUE9SVF9QUklWQVRFIHVpbnRwdHJfdCBtYWtlUG9pc29uKCk7CisKK2lubGluZSBjb25z
dGV4cHIgdWludHB0cl90IG1ha2VQb2lzb24odWludDMyX3Qga2V5KQoreworI2lmIEVOQUJMRShQ
T0lTT04pCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMHg4MDAwMDAwMCB8IGtl
eSkgPDwgMzI7CiAjZWxzZQotdGVtcGxhdGU8dWludDMyX3QsIHR5cGVuYW1lIFQ+Ci11c2luZyBJ
bnQzMlBvaXNvbmVkID0gUG9pc29uZWRJbXBsPHVpbnRwdHJfdCwgMCwgVD47CisgICAgcmV0dXJu
ICh2b2lkKWtleSwgMDsKICNlbmRpZgorfQogCi1XVEZfRVhQT1JUX1BSSVZBVEUgdWludHB0cl90
IG1ha2VQb2lzb24oKTsKK3RlbXBsYXRlPHVpbnRwdHJfdCYga2V5LCB0eXBlbmFtZSBUPgordXNp
bmcgUG9pc29uZWQgPSBQb2lzb25lZEltcGw8dWludHB0cl90Jiwga2V5LCBUPjsKKwordGVtcGxh
dGU8dWludDMyX3Qga2V5LCB0eXBlbmFtZSBUPgordXNpbmcgQ29uc3RFeHByUG9pc29uZWQgPSBQ
b2lzb25lZEltcGw8dWludHB0cl90LCBtYWtlUG9pc29uKGtleSksIFQ+OwogCiB9IC8vIG5hbWVz
cGFjZSBXVEYKIAotdXNpbmcgV1RGOjpJbnQzMlBvaXNvbmVkOwordXNpbmcgV1RGOjpDb25zdEV4
cHJQb2lzb25lZDsKIHVzaW5nIFdURjo6UG9pc29uZWQ7CiB1c2luZyBXVEY6OlBvaXNvbmVkQml0
czsKIHVzaW5nIFdURjo6bWFrZVBvaXNvbjsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNTgxNikKKysrIFRvb2xzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE3LTEyLTEyICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBGaWxsIG91dCBzb21lIFBvaXNvbmVk
IEFQSXMsIGZpeCBzb21lIGJ1Z3MsIGFuZCBhZGQgc29tZSB0ZXN0cy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDcyNAorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMzYwMDY4ODQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSkYgQmFzdGllbi4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29uc3RFeHByUG9pc29uZWQuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1BvaXNvbmVkLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpp
bml0aWFsaXplVGVzdFBvaXNvbik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwog
MjAxNy0xMi0xMiAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAg
ICAgTW9iaWxlTWluaUJyb3dzZXIgdXNpbmcgdGhlIHdyb25nIHRvb2xjaGFpbgpJbmRleDogVG9v
bHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0
V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMjU4MDcpCisrKyBUb29scy9UZXN0
V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC05NSw2ICs5NSw3IEBA
IHNldChUZXN0V1RGX1NPVVJDRVMKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYv
Q2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9
L1Rlc3RzL1dURi9Db25jdXJyZW50UHRySGFzaFNldC5jcHAKICAgICAke1RFU1RXRUJLSVRBUElf
RElSfS9UZXN0cy9XVEYvQ29uZGl0aW9uLmNwcAorICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rl
c3RzL1dURi9Db25zdEV4cHJQb2lzb25lZC5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9U
ZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rl
c3RzL1dURi9EYXRlTWF0aC5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYv
RGVxdWUuY3BwCkBAIC0xMjIsNiArMTIzLDcgQEAgc2V0KFRlc3RXVEZfU09VUkNFUwogICAgICR7
VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9PcHRpb25hbC5jcHAKICAgICAke1RFU1RXRUJL
SVRBUElfRElSfS9UZXN0cy9XVEYvT3B0aW9uU2V0LmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9E
SVJ9L1Rlc3RzL1dURi9QYXJraW5nTG90LmNwcAorICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rl
c3RzL1dURi9Qb2lzb25lZC5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYv
UHJpb3JpdHlRdWV1ZS5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvUmVk
QmxhY2tUcmVlLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9SZWYuY3Bw
CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjI1ODA3KQorKysgVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTc1Niw2ICs3NTYsOCBAQAogCQlGNkI3QkU5NzE3NDY5Qjk2MDA4QTM0
NDUgLyogYXNzb2NpYXRlLWZvcm0tY29udHJvbHMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNkI3QkU5NjE3NDY5QjdFMDA4QTM0NDUg
LyogYXNzb2NpYXRlLWZvcm0tY29udHJvbHMuaHRtbCAqLzsgfTsKIAkJRjZGNDlDNkIxNTU0NUNB
NzAwMDdGMzlEIC8qIERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGVfQnVuZGxlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2RjQ5QzY2MTU1NDVDOEQw
MDA3RjM5RCAvKiBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlX0J1bmRsZS5jcHAgKi87IH07CiAJ
CUY2RkREREQ2MTQyNDFDNkYwMDRGMTcyOSAvKiBwdXNoLXN0YXRlLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjZGRERERDUxNDI0MUM0
ODAwNEYxNzI5IC8qIHB1c2gtc3RhdGUuaHRtbCAqLzsgfTsKKwkJRkUwNUZBRUYxRkUwNjQ1QjAw
MDkzMjMwIC8qIFBvaXNvbmVkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFMDVGQUVFMUZFMDY0M0QwMDA5MzIzMCAvKiBQb2lzb25lZC5jcHAgKi87
IH07CisJCUZFMDVGQUYxMUZFMDhDRDQwMDA5MzIzMCAvKiBDb25zdEV4cHJQb2lzb25lZC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTA1RkFGMDFG
RTA4Q0NEMDAwOTMyMzAgLyogQ29uc3RFeHByUG9pc29uZWQuY3BwICovOyB9OwogLyogRW5kIFBC
WEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBz
ZWN0aW9uICovCkBAIC0xODU3LDYgKzE4NTksOCBAQAogCQlGNkY0OUM2NzE1NTQ1QzhEMDAwN0Yz
OUQgLyogRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjZGRERERDIxNDI0MUFENDAwNEYxNzI5IC8qIFByaXZhdGVC
cm93c2luZ1B1c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFByaXZhdGVCcm93c2luZ1B1c2hTdGF0ZU5vSGlzdG9yeUNhbGxi
YWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjZGRERERDUxNDI0MUM0ODAw
NEYxNzI5IC8qIHB1c2gtc3RhdGUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJw
dXNoLXN0YXRlLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTA1RkFFRTFG
RTA2NDNEMDAwOTMyMzAgLyogUG9pc29uZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUG9pc29uZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlG
RTA1RkFGMDFGRTA4Q0NEMDAwOTMyMzAgLyogQ29uc3RFeHByUG9pc29uZWQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29uc3RFeHByUG9pc29uZWQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUI2Rjc0RTFCMkJBNDRFMDA5RTQ5MjIgLyogTmFr
ZWRQdHIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmFrZWRQdHIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ug
c2VjdGlvbiAqLwogCkBAIC0yNjEzLDYgKzI2MTcsNyBAQAogCQkJCUE3QTk2NkRBMTQwRUNDQzgw
MDVFRjlCNCAvKiBDaGVja2VkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwICovLAogCQkJCTBGMzBD
QjVCMUZDRTE3OTIwMDRCNTMyMyAvKiBDb25jdXJyZW50UHRySGFzaFNldC5jcHAgKi8sCiAJCQkJ
MEZFQUUzNjcxQjdEMTlDQjAwQ0UxN0YyIC8qIENvbmRpdGlvbi5jcHAgKi8sCisJCQkJRkUwNUZB
RjAxRkUwOENDRDAwMDkzMjMwIC8qIENvbnN0RXhwclBvaXNvbmVkLmNwcCAqLywKIAkJCQk1MTcx
NEVCOTFEMDg3NDE2MDA0NzIzQzQgLyogQ3Jvc3NUaHJlYWRUYXNrLmNwcCAqLywKIAkJCQkyNkEy
QzcyRTE1RTJFNzNDMDA1QjFBMTQgLyogQ1N0cmluZy5jcHAgKi8sCiAJCQkJN0FBMDIxQkExQUIw
OUVBNzAwNTI5NTNGIC8qIERhdGVNYXRoLmNwcCAqLywKQEAgLTI2NDYsNiArMjY1MSw3IEBACiAJ
CQkJMUFGREU2NTQxOTUzQjJDMDAwQzQ4RkZBIC8qIE9wdGlvbmFsLmNwcCAqLywKIAkJCQlDRTUw
RDhDODFDODY2NUNFMDA3MkVBNUEgLyogT3B0aW9uU2V0LmNwcCAqLywKIAkJCQkwRkU0NDc5NzFC
NzZGMUUzMDA5NDk4RUIgLyogUGFya2luZ0xvdC5jcHAgKi8sCisJCQkJRkUwNUZBRUUxRkUwNjQz
RDAwMDkzMjMwIC8qIFBvaXNvbmVkLmNwcCAqLywKIAkJCQk1M0VDMjUzRjFFOTZCQzgwMDAwODMx
QjkgLyogUHJpb3JpdHlRdWV1ZS5jcHAgKi8sCiAJCQkJMEZDNkM0Q0IxNDEwMjdFMDAwNUI3RjBD
IC8qIFJlZEJsYWNrVHJlZS5jcHAgKi8sCiAJCQkJOTNBNDI3QUExODBEQTI2NDAwQ0QyNEQ3IC8q
IFJlZi5jcHAgKi8sCkBAIC0zMTkwLDYgKzMxOTYsNyBAQAogCQkJCTdDODNERjFEMUQwQTU5MEMw
MEZFQkNGMyAvKiBMb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1N0Q1NEY2MUYzMzk1RDAw
MEE5N0FBNyAvKiBMb2dnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RFRUQxRDBBNTkw
QzAwRkVCQ0YzIC8qIE1hdGhFeHRyYXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkUwNUZBRjEx
RkUwOENENDAwMDkzMjMwIC8qIENvbnN0RXhwclBvaXNvbmVkLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTdDODNERUVGMUQwQTU5MEMwMEZFQkNGMyAvKiBNRDUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0M4M0RFRjExRDBBNTkwQzAwRkVCQ0YzIC8qIE1lZGlhVGltZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3QzgzREVGNjFEMEE1OTBDMDBGRUJDRjMgLyogTWV0YUFsbG9jYXRvci5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTMyMTAsNiArMzIxNyw3IEBACiAJCQkJN0M4M0RGMDUxRDBBNTkwQzAw
RkVCQ0YzIC8qIFJ1bkxvb3AuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGMjYxRDBBNTkw
QzAwRkVCQ0YzIC8qIFNhdHVyYXRlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBMzUyNEFFMUQ2M0E0RkIwMDMxNzI5QiAvKiBTY29wZS5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlGRTA1RkFFRjFGRTA2NDVCMDAwOTMyMzAgLyogUG9pc29uZWQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0M4M0RGMTIxRDBBNTkwQzAwRkVCQ0YzIC8qIFNjb3BlZExhbWJkYS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREYzRDFEMEE1OTBDMDBGRUJDRjMgLyogU2V0Rm9y
U2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGMkExRDBBNTkwQzAwRkVCQ0YzIC8q
IFNIQTEuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9Db25zdEV4cHJQb2lzb25lZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvQ29uc3RFeHByUG9pc29uZWQuY3BwCShub25leGlzdGVudCkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NvbnN0RXhwclBvaXNvbmVkLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDM1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlJlZkxvZ2dl
ci5oIgorI2luY2x1ZGUgPG11dGV4PgorI2luY2x1ZGUgPHd0Zi9Qb2lzb25lZC5oPgorCituYW1l
c3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBQb2lzb25BID0g
MHhhYWFhOworc3RhdGljIGNvbnN0IHVpbnQzMl90IFBvaXNvbkIgPSAweGJiYmI7CisKKy8vIEZv
ciB0aGVzZSB0ZXN0cywgd2UgbmVlZCBhIGJhc2UgY2xhc3MgYW5kIGEgZGVyaXZlZCBjbGFzcy4g
Rm9yIHRoaXMgcHVycG9zZSwKKy8vIHdlIHJldXNlIHRoZSBSZWZMb2dnZXIgYW5kIERlcml2ZWRS
ZWZMb2dnZXIgY2xhc3Nlcy4KKworVEVTVChXVEZfQ29uc3RFeHByUG9pc29uZWQsIEJhc2ljKQor
eworICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOworCisgICAgQ29uc3RFeHByUG9pc29uZWQ8
UG9pc29uQSwgUmVmTG9nZ2VyKj4gZW1wdHk7CisgICAgQVNTRVJUX0VRKG51bGxwdHIsIGVtcHR5
LnVucG9pc29uZWQoKSk7CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNv
bkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9p
c29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgJipwdHIpOworICAgICAgICBBU1NFUlRf
RVEoJmEubmFtZSwgJnB0ci0+bmFtZSk7CisgICAgfQorCisgICAgeworICAgICAgICBDb25zdEV4
cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIgPSAmYTsKKyAgICAgICAgQVNTRVJU
X0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0
RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxID0gJmE7CisgICAgICAgIENvbnN0
RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKHAxKTsKKyAgICAgICAgQ29uc3RF
eHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDMocDEpOworICAgICAgICBBU1NFUlRf
RVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lz
b25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworCisgICAg
ICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRf
VFJVRShwMS5iaXRzKCkgIT0gcDMuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENv
bnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxID0gJmE7CisgICAgICAgIENv
bnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyID0gcDE7CisgICAgICAgIENv
bnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+IHAzID0gcDE7CisgICAgICAgIEFT
U0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51
bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisK
KyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFT
U0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBwMy5iaXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAg
ICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAg
ICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIgPSBXVEZNb3ZlKHAx
KTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NF
UlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8
UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMgPSAmYTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8
UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQgPSBXVEZNb3ZlKHAzKTsKKyAgICAgICAgQVNTRVJUX0VR
KCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29u
ZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7Cisg
ICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgIH0KKworICAg
IHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEgPSAm
YTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoV1RG
TW92ZShwMSkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAg
ICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBDb25zdEV4cHJQ
b2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMyA9ICZhOworICAgICAgICBDb25zdEV4cHJQ
b2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwNChXVEZNb3ZlKHAzKSk7CisgICAgICAgIEFT
U0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwNC51
bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRz
KCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9
CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIERlcml2ZWRSZWZM
b2dnZXIqPiBwMSA9ICZhOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZM
b2dnZXIqPiBwMiA9IHAxOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZM
b2dnZXIqPiBwMyA9IHAxOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7
CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMo
KSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDMuYml0
cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEs
IERlcml2ZWRSZWZMb2dnZXIqPiBwMSA9ICZhOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQ
b2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9IFdURk1vdmUocDEpOworICAgICAgICBBU1NFUlRfRVEo
JmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25l
ZCgpKTsKKworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBEZXJpdmVkUmVmTG9n
Z2VyKj4gcDMgPSAmYTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9n
Z2VyKj4gcDQgPSBXVEZNb3ZlKHAzKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNv
bmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAg
ICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9U
UlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29u
c3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAgICAgICAgQVNT
RVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcHRyLmNsZWFyKCk7CisgICAg
ICAgIEFTU0VSVF9FUShudWxscHRyLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICB9Cit9CisKK1RF
U1QoV1RGX0NvbnN0RXhwclBvaXNvbmVkLCBBc3NpZ25tZW50KQoreworICAgIERlcml2ZWRSZWZM
b2dnZXIgYSgiYSIpOworICAgIFJlZkxvZ2dlciBiKCJiIik7CisgICAgRGVyaXZlZFJlZkxvZ2dl
ciBjKCJjIik7CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJl
ZkxvZ2dlcio+IHAxKCZhKTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVm
TG9nZ2VyKj4gcDIoJmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7
CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDEgPSBw
MjsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NF
UlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8
UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQ
b2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOworICAg
ICAgICBwMyA9IHA0OworICAgICAgICBBU1NFUlRfRVEoJmIsIHAzLnVucG9pc29uZWQoKSk7Cisg
ICAgICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRf
VFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0
cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBDb25zdEV4cHJQb2lz
b25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOworICAgICAgICBBU1NFUlRfRVEoJmEs
IHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICBwdHIgPSAmYjsKKyAgICAgICAgQVNTRVJUX0VR
KCZiLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhw
clBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAgIEFTU0VSVF9F
USgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHB0ciA9IG51bGxwdHI7CisgICAgICAg
IEFTU0VSVF9FUShudWxscHRyLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICB9CisKKyAgICB7Cisg
ICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKKyAg
ICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoJmIpOworICAg
ICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgm
YiwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDEgPSBXVEZNb3ZlKHAyKTsKKyAgICAgICAg
QVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAy
LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVm
TG9nZ2VyKj4gcDMoJmEpOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZM
b2dnZXIqPiBwNCgmYik7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAgICBwMyA9IFdU
Rk1vdmUocDQpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAzLnVucG9pc29uZWQoKSk7CisgICAg
ICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJV
RShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygp
ICE9IHA0LmJpdHMoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25l
ZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVk
PFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMigmYyk7CisgICAgICAgIEFTU0VSVF9FUSgm
YSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMi51bnBvaXNvbmVk
KCkpOworICAgICAgICBwMSA9IHAyOworICAgICAgICBBU1NFUlRfRVEoJmMsIHAxLnVucG9pc29u
ZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDIudW5wb2lzb25lZCgpKTsKKworICAgICAg
ICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygmYSk7CisgICAgICAg
IENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIERlcml2ZWRSZWZMb2dnZXIqPiBwNCgmYyk7Cisg
ICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VR
KCZjLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAgICBwMyA9IHA0OworICAgICAgICBBU1NFUlRf
RVEoJmMsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDQudW5wb2lz
b25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsK
KyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQorCisg
ICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIo
JmEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICBw
dHIgPSAmYzsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICB9
CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+
IHAxKCZhKTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgRGVyaXZlZFJlZkxv
Z2dlcio+IHAyKCZjKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwor
ICAgICAgICBBU1NFUlRfRVEoJmMsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHAxID0gV1RG
TW92ZShwMik7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDEudW5wb2lzb25lZCgpKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZjLCBwMi51bnBvaXNvbmVkKCkpOworCisgICAgICAgIENvbnN0RXhwclBv
aXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKKyAgICAgICAgQ29uc3RFeHByUG9p
c29uZWQ8UG9pc29uQiwgRGVyaXZlZFJlZkxvZ2dlcio+IHA0KCZjKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHA0LnVucG9p
c29uZWQoKSk7CisgICAgICAgIHAzID0gV1RGTW92ZShwNCk7CisgICAgICAgIEFTU0VSVF9FUSgm
YywgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwNC51bnBvaXNvbmVk
KCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAg
ICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9CisKKyAgICB7
CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7
CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHB0ciA9
IHB0cjsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICB9CisK
KyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0
cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisjaWYgQ09N
UElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW5rbm93bi1wcmFnbWFzIgorI3ByYWdtYSBjbGFuZyBk
aWFnbm9zdGljIGlnbm9yZWQgIi1Xc2VsZi1tb3ZlIgorI2VuZGlmCisgICAgICAgIHB0ciA9IFdU
Rk1vdmUocHRyKTsKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3Rp
YyBwb3AKKyNlbmRpZgorICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOwor
ICAgIH0KK30KKworVEVTVChXVEZfQ29uc3RFeHByUG9pc29uZWQsIFN3YXApCit7CisgICAgUmVm
TG9nZ2VyIGEoImEiKTsKKyAgICBSZWZMb2dnZXIgYigiYiIpOworCisgICAgeworICAgICAgICBD
b25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7CisgICAgICAgIENv
bnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKCZiKTsKKyAgICAgICAgQVNT
RVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVu
cG9pc29uZWQoKSk7CisgICAgICAgIHAxLnN3YXAocDIpOworICAgICAgICBBU1NFUlRfRVEoJmIs
IHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgp
KTsKKworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygm
YSk7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KCZi
KTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NF
UlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIHAzLnN3YXAocDQpOworICAgICAg
ICBBU1NFUlRfRVEoJmIsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwg
cDQudW5wb2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDIu
Yml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7Cisg
ICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMy5iaXRzKCkpOworICAgICAgICBBU1NF
UlRfVFJVRShwMi5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAg
IENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKKyAgICAgICAg
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoJmIpOworICAgICAgICBB
U1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIu
dW5wb2lzb25lZCgpKTsKKyAgICAgICAgc3dhcChwMSwgcDIpOworICAgICAgICBBU1NFUlRfRVEo
JmIsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25l
ZCgpKTsKKworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBw
MygmYSk7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0
KCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBB
U1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIHN3YXAocDMsIHA0KTsKKyAg
ICAgICAgQVNTRVJUX0VRKCZiLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEo
JmEsIHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9
IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkp
OworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDMuYml0cygpKTsKKyAgICAgICAg
QVNTRVJUX1RSVUUocDIuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQorfQorCitzdGF0aWMg
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcG9pc29uZWRQdHJGb28oUmVm
TG9nZ2VyJiBsb2dnZXIpCit7CisgICAgcmV0dXJuIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEs
IFJlZkxvZ2dlcio+KCZsb2dnZXIpOworfQorCitURVNUKFdURl9Db25zdEV4cHJQb2lzb25lZCwg
UmV0dXJuVmFsdWUpCit7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CisKKyAgICB7Cisg
ICAgICAgIGF1dG8gcHRyID0gcG9pc29uZWRQdHJGb28oYSk7CisgICAgICAgIEFTU0VSVF9FUSgm
YSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgJipwdHIpOworICAg
ICAgICBBU1NFUlRfRVEoJmEubmFtZSwgJnB0ci0+bmFtZSk7CisgICAgfQorfQorCit9IC8vIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJCisKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1BvaXNvbmVkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9Qb2lzb25lZC5jcHAJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvUG9pc29uZWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzcwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaW5jbHVkZSAiUmVmTG9nZ2VyLmgiCisjaW5jbHVkZSA8bXV0ZXg+CisjaW5j
bHVkZSA8d3RmL1BvaXNvbmVkLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworZXh0
ZXJuICJDIiBKU19FWFBPUlREQVRBIHVpbnRwdHJfdCBnX3Rlc3RQb2lzb25BOworZXh0ZXJuICJD
IiBKU19FWFBPUlREQVRBIHVpbnRwdHJfdCBnX3Rlc3RQb2lzb25COworCit1aW50cHRyX3QgZ190
ZXN0UG9pc29uQTsKK3VpbnRwdHJfdCBnX3Rlc3RQb2lzb25COworCitzdGF0aWMgdm9pZCBpbml0
aWFsaXplVGVzdFBvaXNvbigpCit7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGluaXRpYWxp
emVPbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplT25jZUZsYWcsIFtdIHsK
KyAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGdldCAyIGRpZmZlcmVudCBwb2lzb24gdmFsdWVzLgor
ICAgICAgICBnX3Rlc3RQb2lzb25BID0gbWFrZVBvaXNvbigpOworICAgICAgICB3aGlsZSAoIWdf
dGVzdFBvaXNvbkIgfHwgZ190ZXN0UG9pc29uQiA9PSBnX3Rlc3RQb2lzb25BKQorICAgICAgICAg
ICAgZ190ZXN0UG9pc29uQiA9IG1ha2VQb2lzb24oKTsKKyAgICB9KTsKK30KKworLy8gRm9yIHRo
ZXNlIHRlc3RzLCB3ZSBuZWVkIGEgYmFzZSBjbGFzcyBhbmQgYSBkZXJpdmVkIGNsYXNzLiBGb3Ig
dGhpcyBwdXJwb3NlLAorLy8gd2UgcmV1c2UgdGhlIFJlZkxvZ2dlciBhbmQgRGVyaXZlZFJlZkxv
Z2dlciBjbGFzc2VzLgorCitURVNUKFdURl9Qb2lzb25lZCwgQmFzaWMpCit7CisgICAgaW5pdGlh
bGl6ZVRlc3RQb2lzb24oKTsKKyAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKKworICAgIFBv
aXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IGVtcHR5OworICAgIEFTU0VSVF9FUShu
dWxscHRyLCBlbXB0eS51bnBvaXNvbmVkKCkpOworCisgICAgeworICAgICAgICBQb2lzb25lZDxn
X3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOworICAgICAgICBBU1NFUlRfRVEoJmEs
IHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsICYqcHRyKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZhLm5hbWUsICZwdHItPm5hbWUpOworICAgIH0KKworICAgIHsKKyAgICAg
ICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyID0gJmE7CisgICAgICAg
IEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgfQorCisgICAgeworICAgICAg
ICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSA9ICZhOworICAgICAgICBQ
b2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMihwMSk7CisgICAgICAgIFBvaXNv
bmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHAzKHAxKTsKKyAgICAgICAgQVNTRVJUX0VR
KCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29u
ZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKworICAgICAg
ICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RS
VUUocDEuYml0cygpICE9IHAzLmJpdHMoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBQb2lz
b25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSA9ICZhOworICAgICAgICBQb2lzb25l
ZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9IHAxOworICAgICAgICBQb2lzb25lZDxn
X3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwMyA9IHAxOworICAgICAgICBBU1NFUlRfRVEoJmEs
IHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgp
KTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFT
U0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShw
MS5iaXRzKCkgIT0gcDMuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVk
PGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxID0gJmE7CisgICAgICAgIFBvaXNvbmVkPGdf
dGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgIEFTU0VS
VF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBv
aXNvbmVkKCkpOworCisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+
IHAzID0gJmE7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0
ID0gV1RGTW92ZShwMyk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZhLCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VS
VF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5i
aXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdf
dGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxID0gJmE7CisgICAgICAgIFBvaXNvbmVkPGdfdGVz
dFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKFdURk1vdmUocDEpKTsKKyAgICAgICAgQVNTRVJUX0VR
KCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29u
ZWQoKSk7CisKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMg
PSAmYTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQoV1RG
TW92ZShwMykpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAg
ICAgIEFTU0VSVF9FUSgmYSwgcDQudW5wb2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJV
RShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygp
ICE9IHA0LmJpdHMoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQ
b2lzb25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWQ8Z190
ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIgPSBwMTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0
UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDMgPSBwMTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51
bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7Cisg
ICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRf
VFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0
cygpICE9IHAzLmJpdHMoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rl
c3RQb2lzb25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWQ8
Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgQVNT
RVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVu
cG9pc29uZWQoKSk7CisKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgRGVyaXZlZFJl
ZkxvZ2dlcio+IHAzID0gJmE7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxv
Z2dlcio+IHA0ID0gV1RGTW92ZShwMyk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lz
b25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwNC51bnBvaXNvbmVkKCkpOworCisgICAg
ICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRf
VFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFBv
aXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAgIEFTU0VS
VF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHB0ci5jbGVhcigpOworICAgICAg
ICBBU1NFUlRfRVEobnVsbHB0ciwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgfQorfQorCitURVNU
KFdURl9Qb2lzb25lZCwgQXNzaWdubWVudCkKK3sKKyAgICBpbml0aWFsaXplVGVzdFBvaXNvbigp
OworICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOworICAgIFJlZkxvZ2dlciBiKCJiIik7Cisg
ICAgRGVyaXZlZFJlZkxvZ2dlciBjKCJjIik7CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdf
dGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0
UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoJmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVu
cG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKKyAg
ICAgICAgcDEgPSBwMjsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOwor
ICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgUG9pc29u
ZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOworICAgICAgICBQb2lzb25lZDxn
X3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7CisgICAgICAgIEFTU0VSVF9FUSgmYSwg
cDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkp
OworICAgICAgICBwMyA9IHA0OworICAgICAgICBBU1NFUlRfRVEoJmIsIHAzLnVucG9pc29uZWQo
KSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKKworICAgICAgICBB
U1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUo
cDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBQb2lzb25l
ZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOworICAgICAgICBBU1NFUlRfRVEo
JmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICBwdHIgPSAmYjsKKyAgICAgICAgQVNTRVJU
X0VRKCZiLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFBvaXNv
bmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAgIEFTU0VSVF9F
USgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHB0ciA9IG51bGxwdHI7CisgICAgICAg
IEFTU0VSVF9FUShudWxscHRyLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICB9CisKKyAgICB7Cisg
ICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKKyAgICAg
ICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoJmIpOworICAgICAgICBB
U1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIu
dW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDEgPSBXVEZNb3ZlKHAyKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9p
c29uZWQoKSk7CisKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4g
cDMoJmEpOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCgm
Yik7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNT
RVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAgICBwMyA9IFdURk1vdmUocDQpOwor
ICAgICAgICBBU1NFUlRfRVEoJmIsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9F
USgmYiwgcDQudW5wb2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkg
PT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMo
KSk7CisgICAgfQorCisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZM
b2dnZXIqPiBwMSgmYSk7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIERlcml2ZWRS
ZWZMb2dnZXIqPiBwMigmYyk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgp
KTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBwMSA9
IHAyOworICAgICAgICBBU1NFUlRfRVEoJmMsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFT
U0VSVF9FUSgmYywgcDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQ
b2lzb25BLCBSZWZMb2dnZXIqPiBwMygmYSk7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNv
bkIsIERlcml2ZWRSZWZMb2dnZXIqPiBwNCgmYyk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMu
dW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwNC51bnBvaXNvbmVkKCkpOwor
ICAgICAgICBwMyA9IHA0OworICAgICAgICBBU1NFUlRfRVEoJmMsIHAzLnVucG9pc29uZWQoKSk7
CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDQudW5wb2lzb25lZCgpKTsKKworICAgICAgICBBU1NF
UlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDMu
Yml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBQb2lzb25lZDxn
X3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOworICAgICAgICBBU1NFUlRfRVEoJmEs
IHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICBwdHIgPSAmYzsKKyAgICAgICAgQVNTRVJUX0VR
KCZjLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVk
PGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKKyAgICAgICAgUG9pc29uZWQ8Z190
ZXN0UG9pc29uQSwgRGVyaXZlZFJlZkxvZ2dlcio+IHAyKCZjKTsKKyAgICAgICAgQVNTRVJUX0VR
KCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHAyLnVucG9pc29u
ZWQoKSk7CisgICAgICAgIHAxID0gV1RGTW92ZShwMik7CisgICAgICAgIEFTU0VSVF9FUSgmYywg
cDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMi51bnBvaXNvbmVkKCkp
OworCisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsK
KyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgRGVyaXZlZFJlZkxvZ2dlcio+IHA0KCZj
KTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NF
UlRfRVEoJmMsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIHAzID0gV1RGTW92ZShwNCk7Cisg
ICAgICAgIEFTU0VSVF9FUSgmYywgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VR
KCZjLCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9
PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygp
KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxv
Z2dlcio+IHB0cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7
CisgICAgICAgIHB0ciA9IHB0cjsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25l
ZCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJl
ZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQo
KSk7CisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAor
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW5rbm93bi1wcmFnbWFzIgorI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1Xc2VsZi1tb3ZlIgorI2VuZGlmCisgICAg
ICAgIHB0ciA9IFdURk1vdmUocHRyKTsKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBwb3AKKyNlbmRpZgorICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBv
aXNvbmVkKCkpOworICAgIH0KK30KKworVEVTVChXVEZfUG9pc29uZWQsIFN3YXApCit7CisgICAg
aW5pdGlhbGl6ZVRlc3RQb2lzb24oKTsKKyAgICBSZWZMb2dnZXIgYSgiYSIpOworICAgIFJlZkxv
Z2dlciBiKCJiIik7CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJl
ZkxvZ2dlcio+IHAxKCZhKTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9n
Z2VyKj4gcDIoJmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7Cisg
ICAgICAgIEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDEuc3dhcChw
Mik7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNT
RVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOworCisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBv
aXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29u
QiwgUmVmTG9nZ2VyKj4gcDQoJmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29u
ZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAg
cDMuc3dhcChwNCk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDMudW5wb2lzb25lZCgpKTsKKyAg
ICAgICAgQVNTRVJUX0VRKCZhLCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9U
UlVFKHAxLmJpdHMoKSAhPSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRz
KCkgIT0gcDQuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAzLmJp
dHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAyLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAg
IH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4g
cDEoJmEpOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMigm
Yik7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNT
RVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBzd2FwKHAxLCBwMik7CisgICAg
ICAgIEFTU0VSVF9FUSgmYiwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZh
LCBwMi51bnBvaXNvbmVkKCkpOworCisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJl
ZkxvZ2dlcio+IHAzKCZhKTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgUmVmTG9n
Z2VyKj4gcDQoJmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7Cisg
ICAgICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAgc3dhcChwMywg
cDQpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFT
U0VSVF9FUSgmYSwgcDQudW5wb2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5i
aXRzKCkgIT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0
LmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMy5iaXRzKCkpOwor
ICAgICAgICBBU1NFUlRfVFJVRShwMi5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9Cit9CisK
K3N0YXRpYyBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwb2lzb25lZFB0ckZv
byhSZWZMb2dnZXImIGxvZ2dlcikKK3sKKyAgICByZXR1cm4gUG9pc29uZWQ8Z190ZXN0UG9pc29u
QSwgUmVmTG9nZ2VyKj4oJmxvZ2dlcik7Cit9CisKK1RFU1QoV1RGX1BvaXNvbmVkLCBSZXR1cm5W
YWx1ZSkKK3sKKyAgICBpbml0aWFsaXplVGVzdFBvaXNvbigpOworICAgIERlcml2ZWRSZWZMb2dn
ZXIgYSgiYSIpOworCisgICAgeworICAgICAgICBhdXRvIHB0ciA9IHBvaXNvbmVkUHRyRm9vKGEp
OworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NF
UlRfRVEoJmEsICYqcHRyKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLm5hbWUsICZwdHItPm5hbWUp
OworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329182</attachid>
            <date>2017-12-12 17:24:15 -0800</date>
            <delta_ts>2017-12-12 17:44:31 -0800</delta_ts>
            <desc>patch for landing + speculative build fixes 2.</desc>
            <filename>bug-180724b.patch</filename>
            <type>text/plain</type>
            <size>43918</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI1ODA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDE3LTEyLTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBG
aWxsIG91dCBzb21lIFBvaXNvbmVkIEFQSXMsIGZpeCBzb21lIGJ1Z3MsIGFuZCBhZGQgc29tZSB0
ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
MDcyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYwMDY4ODQ+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgSkYgQmFzdGllbi4KKworICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlv
blRhYmxlLmg6CisKIDIwMTctMTItMDQgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAK
ICAgICAgICAgV2ViIEluc3BlY3RvcjogbW9kZXJuaXplIEluamVjdGVkU2NyaXB0IGEgYml0Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFi
bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVUcmFuc2l0aW9uVGFibGUuaAkocmV2aXNpb24gMjI1ODA3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMTg3LDggKzE4Nyw4IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBmcmll
bmQgY2xhc3MgU2luZ2xlU2xvdFRyYW5zaXRpb25XZWFrT3duZXI7Ci0gICAgdXNpbmcgUG9pc29u
ZWRUcmFuc2l0aW9uTWFwUHRyID0gSW50MzJQb2lzb25lZDxUcmFuc2l0aW9uTWFwUG9pc29uLCBU
cmFuc2l0aW9uTWFwKj47Ci0gICAgdXNpbmcgUG9pc29uZWRXZWFrSW1wbFB0ciA9IEludDMyUG9p
c29uZWQ8V2Vha0ltcGxQb2lzb24sIFdlYWtJbXBsKj47CisgICAgdXNpbmcgUG9pc29uZWRUcmFu
c2l0aW9uTWFwUHRyID0gQ29uc3RFeHByUG9pc29uZWQ8VHJhbnNpdGlvbk1hcFBvaXNvbiwgVHJh
bnNpdGlvbk1hcCo+OworICAgIHVzaW5nIFBvaXNvbmVkV2Vha0ltcGxQdHIgPSBDb25zdEV4cHJQ
b2lzb25lZDxXZWFrSW1wbFBvaXNvbiwgV2Vha0ltcGwqPjsKIAogICAgIGJvb2wgaXNVc2luZ1Np
bmdsZVNsb3QoKSBjb25zdAogICAgIHsKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjU4MDcpCisrKyBTb3Vy
Y2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDE3LTEy
LTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBGaWxsIG91dCBz
b21lIFBvaXNvbmVkIEFQSXMsIGZpeCBzb21lIGJ1Z3MsIGFuZCBhZGQgc29tZSB0ZXN0cy4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDcyNAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMzYwMDY4ODQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSkYg
QmFzdGllbi4KKworICAgICAgICBBbHNvIHJlbmFtZSBJbnQzMlBvaXNvbmVkIHRvIENvbnN0RXhw
clBvaXNvbmVkLiAgVGhlIGtleSBpdCB0YWtlcyBpcyBhY3R1YWxseSBhCisgICAgICAgIHVpbnQz
Ml90LiAgU28sIEludDMyIGlzIHJlYWxseSBhIG1pc25vbWVyLiAgSW4gYWRkaXRpb24sIHRoZSBr
ZXkgbmVlZHMgdG8gYmUgYQorICAgICAgICBjb25zdGV4cHIuICBTbywgQ29uc3RFeHByUG9pc29u
ZWQgaXMgYSBiZXR0ZXIgbmFtZSBmb3IgaXQuCisKKyAgICAgICAgKiB3dGYvUG9pc29uZWQuY3Bw
OgorICAgICAgICAoV1RGOjptYWtlUG9pc29uKToKKyAgICAgICAgKiB3dGYvUG9pc29uZWQuaDoK
KyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsSGVscGVyOjphc1JlZmVyZW5jZSk6CisgICAgICAg
IChXVEY6OlBvaXNvbmVkSW1wbDo6UG9pc29uZWRJbXBsKToKKyAgICAgICAgKFdURjo6UG9pc29u
ZWRJbXBsOjpjbGVhcik6CisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6b3BlcmF0b3IqIGNv
bnN0KToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvci0+IGNvbnN0KToKKyAg
ICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdU
Rjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKFdURjo6UG9pc29u
ZWRJbXBsOjpvcGVyYXRvcjwgY29uc3QpOgorICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6Om9w
ZXJhdG9yPD0gY29uc3QpOgorICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6Om9wZXJhdG9yPiBj
b25zdCk6CisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6b3BlcmF0b3I+PSBjb25zdCk6Cisg
ICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdURjo6UG9p
c29uZWRJbXBsOjpzd2FwKToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpleGNoYW5nZSk6
CisgICAgICAgIChXVEY6OnN3YXApOgorICAgICAgICAoV1RGOjptYWtlUG9pc29uKToKKyAgICAg
ICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvcj09KTogRGVsZXRlZC4KKwogMjAxNy0xMi0x
MiAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0VTTmV4dF1b
QmlnSW50XSBJbXBsZW1lbnQgQmlnSW50IGxpdGVyYWxzIGFuZCBKU0JpZ0ludApJbmRleDogU291
cmNlL1dURi93dGYvUG9pc29uZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1Bv
aXNvbmVkLmNwcAkocmV2aXNpb24gMjI1ODA3KQorKysgU291cmNlL1dURi93dGYvUG9pc29uZWQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXVEYgewogdWlu
dHB0cl90IG1ha2VQb2lzb24oKQogewogICAgIHVpbnRwdHJfdCBrZXkgPSBjcnlwdG9ncmFwaGlj
YWxseVJhbmRvbU51bWJlcigpOwotI2lmIFVTRShKU1ZBTFVFNjQpICYmICFPUyhXSU5ET1dTKQor
I2lmIEVOQUJMRShQT0lTT04pCiAgICAga2V5ID0gKGtleSA8PCAzMikgXiAoc3RhdGljX2Nhc3Q8
dWludHB0cl90PihjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpKSA8PCAzKTsKICAgICAv
LyBFbnN1cmUgdGhhdCB0aGUgcG9pc29uZWQgYml0cyAocG9pbnRlciBeIGtleSkgZG8gbm90IG1h
a2UgYSB2YWxpZCBwb2ludGVyIGFuZAogICAgIC8vIGNhbm5vdCBiZSAwLiBXZSBlbnN1cmUgdGhh
dCBpdCBpcyB6ZXJvIHNvIHRoYXQgdGhlIHBvaXNvbmVkIGJpdHMgY2FuIGFsc28gYmUKQEAgLTUx
LDQgKzUxLDMgQEAgdWludHB0cl90IG1ha2VQb2lzb24oKQogfQogCiB9IC8vIG5hbWVzcGFjZSBX
VEYKLQpJbmRleDogU291cmNlL1dURi93dGYvUG9pc29uZWQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi9Qb2lzb25lZC5oCShyZXZpc2lvbiAyMjU4MDcpCisrKyBTb3VyY2UvV1RGL3d0
Zi9Qb2lzb25lZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMSArMjcsMTQgQEAKIAogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKKyNkZWZpbmUgRU5BQkxFX1BPSVNPTiAxCiAjZGVmaW5l
IEVOQUJMRV9QT0lTT05fQVNTRVJUUyAwCiAKIC8vIE5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIGZv
ciAzMi1iaXQgb3IgT1MoV0lORE9XUykgYnVpbGRzIChiZWNhdXNlIG9mIG1pc3NpbmcgbGxpbnQg
c3VwcG9ydCkuCiAvLyBNYWtlIHN1cmUgaXQncyBkaXNhYmxlZC4KICNpZiBVU0UoSlNWQUxVRTMy
XzY0KSB8fCBPUyhXSU5ET1dTKQorI3VuZGVmIEVOQUJMRV9QT0lTT04KKyNkZWZpbmUgRU5BQkxF
X1BPSVNPTiAwCiAjdW5kZWYgRU5BQkxFX1BPSVNPTl9BU1NFUlRTCiAjZGVmaW5lIEVOQUJMRV9Q
T0lTT05fQVNTRVJUUyAwCiAjZW5kaWYKQEAgLTQwLDE3ICs0Myw0NyBAQCBuYW1lc3BhY2UgV1RG
IHsKIAogdXNpbmcgUG9pc29uZWRCaXRzID0gdWludHB0cl90OwogCituYW1lc3BhY2UgUG9pc29u
ZWRJbXBsSGVscGVyIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBpc0Z1bmN0aW9u
UG9pbnRlciA6IHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgc3RkOjppc19mdW5jdGlvbjx0
eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPFQ+Ojp0eXBlPjo6dmFsdWU+IHsgfTsKKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBpc1ZvaWRQb2ludGVyIDogc3RkOjppbnRlZ3JhbF9j
b25zdGFudDxib29sLCBzdGQ6OmlzX3ZvaWQ8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxU
Pjo6dHlwZT46OnZhbHVlPiB7IH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgaXND
b252ZXJ0aWJsZVRvUmVmZXJlbmNlIDogc3RkOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCAhaXNG
dW5jdGlvblBvaW50ZXI8VD46OnZhbHVlICYmICFpc1ZvaWRQb2ludGVyPFQ+Ojp2YWx1ZT4geyB9
OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgordHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDwhaXND
b252ZXJ0aWJsZVRvUmVmZXJlbmNlPFQ+Ojp2YWx1ZSwgaW50PiYKK2FzUmVmZXJlbmNlKFQpIHsg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgor
dHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxpc0NvbnZlcnRpYmxlVG9SZWZlcmVuY2U8VD46OnZh
bHVlLCB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPFQ+Ojp0eXBlPiYKK2FzUmVmZXJlbmNl
KFQgcHRyKSB7IHJldHVybiAqcHRyOyB9CisKK30gLy8gbmFtZXNwYWNlIFBvaXNvbmVkSW1wbEhl
bHBlcgorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBlLCBLZXlUeXBlIGtleSwgdHlwZW5hbWUg
VCwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfcG9pbnRlcjxUPjo6dmFsdWU+
PgogY2xhc3MgUG9pc29uZWRJbXBsIHsKIHB1YmxpYzoKICAgICBQb2lzb25lZEltcGwoKSB7IH0K
IAotICAgIGV4cGxpY2l0IFBvaXNvbmVkSW1wbChUIHB0cikKKyAgICBQb2lzb25lZEltcGwoVCBw
dHIpCiAgICAgICAgIDogbV9wb2lzb25lZEJpdHMocG9pc29uKHB0cikpCiAgICAgeyB9CiAKICAg
ICBQb2lzb25lZEltcGwoY29uc3QgUG9pc29uZWRJbXBsJikgPSBkZWZhdWx0OwogCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgSzIsIEsyIGsyLCB0eXBlbmFtZSBUMj4KKyAgICBQb2lzb25lZEltcGwo
Y29uc3QgUG9pc29uZWRJbXBsPEsyLCBrMiwgVDI+JiBvdGhlcikKKyAgICAgICAgOiBtX3BvaXNv
bmVkQml0cyhwb2lzb248VD4ob3RoZXIudW5wb2lzb25lZCgpKSkKKyAgICB7IH0KKworICAgIFBv
aXNvbmVkSW1wbChQb2lzb25lZEltcGwmJiBvdGhlcikKKyAgICAgICAgOiBtX3BvaXNvbmVkQml0
cyhXVEZNb3ZlKG90aGVyLm1fcG9pc29uZWRCaXRzKSkKKyAgICB7IH0KKwogICAgIGV4cGxpY2l0
IFBvaXNvbmVkSW1wbChQb2lzb25lZEJpdHMgcG9pc29uZWRCaXRzKQogICAgICAgICA6IG1fcG9p
c29uZWRCaXRzKHBvaXNvbmVkQml0cykKICAgICB7IH0KQEAgLTcyLDcgKzEwNSwxMCBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+CiAgICAgVSB1bnBvaXNvbmVkKCkgY29u
c3QgeyByZXR1cm4gdW5wb2lzb248VT4obV9wb2lzb25lZEJpdHMpOyB9CiAKLSAgICBBTFdBWVNf
SU5MSU5FIFQgb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIHVucG9pc29uPFQ+KG1fcG9pc29u
ZWRCaXRzKTsgfQorICAgIHZvaWQgY2xlYXIoKSB7IG1fcG9pc29uZWRCaXRzID0gMDsgfQorCisg
ICAgYXV0byYgb3BlcmF0b3IqKCkgY29uc3QgeyBBU1NFUlQobV9wb2lzb25lZEJpdHMpOyByZXR1
cm4gUG9pc29uZWRJbXBsSGVscGVyOjphc1JlZmVyZW5jZSh1bnBvaXNvbihtX3BvaXNvbmVkQml0
cykpOyB9CisgICAgQUxXQVlTX0lOTElORSBUIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiB1
bnBvaXNvbihtX3BvaXNvbmVkQml0cyk7IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBQ
b2lzb25lZEJpdHM+CiAgICAgVSBiaXRzKCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PFU+
KG1fcG9pc29uZWRCaXRzKTsgfQpAQCAtODAsNTYgKzExNiw5OSBAQCBwdWJsaWM6CiAgICAgYm9v
bCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9wb2lzb25lZEJpdHM7IH0KICAgICBleHBs
aWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX3BvaXNvbmVkQml0czsgfQog
Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBvaXNvbmVkSW1wbCYgYikgY29uc3QKKyAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgUG9pc29uZWRJbXBsJiBiKSBjb25zdCB7IHJldHVybiBtX3Bv
aXNvbmVkQml0cyA9PSBiLm1fcG9pc29uZWRCaXRzOyB9CisgICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFBvaXNvbmVkSW1wbCYgYikgY29uc3QgeyByZXR1cm4gbV9wb2lzb25lZEJpdHMgIT0gYi5t
X3BvaXNvbmVkQml0czsgfQorICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFBvaXNvbmVkSW1wbCYg
YikgY29uc3QgeyByZXR1cm4gbV9wb2lzb25lZEJpdHMgPCBiLm1fcG9pc29uZWRCaXRzOyB9Cisg
ICAgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFBvaXNvbmVkSW1wbCYgYikgY29uc3QgeyByZXR1cm4g
bV9wb2lzb25lZEJpdHMgPD0gYi5tX3BvaXNvbmVkQml0czsgfQorICAgIGJvb2wgb3BlcmF0b3I+
KGNvbnN0IFBvaXNvbmVkSW1wbCYgYikgY29uc3QgeyByZXR1cm4gbV9wb2lzb25lZEJpdHMgPiBi
Lm1fcG9pc29uZWRCaXRzOyB9CisgICAgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFBvaXNvbmVkSW1w
bCYgYikgY29uc3QgeyByZXR1cm4gbV9wb2lzb25lZEJpdHMgPj0gYi5tX3BvaXNvbmVkQml0czsg
fQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBvcGVyYXRvcj09KFUgYikgY29uc3Qg
eyByZXR1cm4gdW5wb2lzb25lZDxVPigpID09IGI7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBV
PiBib29sIG9wZXJhdG9yIT0oVSBiKSBjb25zdCB7IHJldHVybiB1bnBvaXNvbmVkPFU+KCkgIT0g
YjsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgb3BlcmF0b3I8KFUgYikgY29uc3Qg
eyByZXR1cm4gdW5wb2lzb25lZDxVPigpIDwgYjsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+
IGJvb2wgb3BlcmF0b3I8PShVIGIpIGNvbnN0IHsgcmV0dXJuIHVucG9pc29uZWQ8VT4oKSA8PSBi
OyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBvcGVyYXRvcj4oVSBiKSBjb25zdCB7
IHJldHVybiB1bnBvaXNvbmVkPFU+KCkgPiBiOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4g
Ym9vbCBvcGVyYXRvcj49KFUgYikgY29uc3QgeyByZXR1cm4gdW5wb2lzb25lZDxVPigpID49IGI7
IH0KKworICAgIFBvaXNvbmVkSW1wbCYgb3BlcmF0b3I9KFQgcHRyKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIG1fcG9pc29uZWRCaXRzID09IGIubV9wb2lzb25lZEJpdHM7CisgICAgICAgIG1fcG9p
c29uZWRCaXRzID0gcG9pc29uKHB0cik7CisgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9Cisg
ICAgUG9pc29uZWRJbXBsJiBvcGVyYXRvcj0oY29uc3QgUG9pc29uZWRJbXBsJikgPSBkZWZhdWx0
OwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUHRyVHlwZSA9IHZvaWQqLCB0eXBlbmFtZSA9IHR5
cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcG9pbnRlcjxQdHJUeXBlPjo6dmFsdWU+Ojp0
eXBlPgotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQdHJUeXBlIGIpCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgSzIsIEsyIGsyLCB0eXBlbmFtZSBUMj4KKyAgICBQb2lzb25lZEltcGwmIG9wZXJh
dG9yPShjb25zdCBQb2lzb25lZEltcGw8SzIsIGsyLCBUMj4mIG90aGVyKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHVucG9pc29uZWQ8UHRyVHlwZT4oKSA9PSBiOworICAgICAgICBtX3BvaXNvbmVk
Qml0cyA9IHBvaXNvbjxUPihvdGhlci51bnBvaXNvbmVkKCkpOworICAgICAgICByZXR1cm4gKnRo
aXM7CiAgICAgfQogCi0gICAgUG9pc29uZWRJbXBsJiBvcGVyYXRvcj0oVCBwdHIpCisgICAgdm9p
ZCBzd2FwKFBvaXNvbmVkSW1wbCYgbykKICAgICB7Ci0gICAgICAgIG1fcG9pc29uZWRCaXRzID0g
cG9pc29uKHB0cik7Ci0gICAgICAgIHJldHVybiAqdGhpczsKKyAgICAgICAgc3RkOjpzd2FwKG1f
cG9pc29uZWRCaXRzLCBvLm1fcG9pc29uZWRCaXRzKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBLMiwgSzIgazIsIHR5cGVuYW1lIFQyPgorICAgIHZvaWQgc3dhcChQb2lzb25lZElt
cGw8SzIsIGsyLCBUMj4mIG8pCisgICAgeworICAgICAgICBUIHQxID0gdGhpcy0+dW5wb2lzb25l
ZCgpOworICAgICAgICBUMiB0MiA9IG8udW5wb2lzb25lZCgpOworICAgICAgICBzdGQ6OnN3YXAo
dDEsIHQyKTsKKyAgICAgICAgbV9wb2lzb25lZEJpdHMgPSBwb2lzb24odDEpOworICAgICAgICBv
ID0gdDI7CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgVT4KKyAgICBUIGV4Y2hhbmdlKFUm
JiBuZXdWYWx1ZSkKKyAgICB7CisgICAgICAgIFQgb2xkVmFsdWUgPSB1bnBvaXNvbmVkKCk7Cisg
ICAgICAgIG1fcG9pc29uZWRCaXRzID0gcG9pc29uKHN0ZDo6Zm9yd2FyZDxVPihuZXdWYWx1ZSkp
OworICAgICAgICByZXR1cm4gb2xkVmFsdWU7CiAgICAgfQotICAgIFBvaXNvbmVkSW1wbCYgb3Bl
cmF0b3I9KGNvbnN0IFBvaXNvbmVkSW1wbCYpID0gZGVmYXVsdDsKIAogcHJpdmF0ZToKLSNpZiBV
U0UoSlNWQUxVRTY0KQorI2lmIEVOQUJMRShQT0lTT04pCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VT4KICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBQb2lzb25lZEJpdHMgcG9pc29uKFUgcHRyKSB7
IHJldHVybiBwdHIgPyBiaXR3aXNlX2Nhc3Q8UG9pc29uZWRCaXRzPihwdHIpIF4ga2V5IDogMDsg
fQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+
CiAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgVSB1bnBvaXNvbihQb2lzb25lZEJpdHMgcG9pc29u
ZWRCaXRzKSB7IHJldHVybiBwb2lzb25lZEJpdHMgPyBiaXR3aXNlX2Nhc3Q8VT4ocG9pc29uZWRC
aXRzIF4ga2V5KSA6IGJpdHdpc2VfY2FzdDxVPigwbGwpOyB9CiAjZWxzZQogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFU+CiAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUG9pc29uZWRCaXRzIHBvaXNv
bihVIHB0cikgeyByZXR1cm4gYml0d2lzZV9jYXN0PFBvaXNvbmVkQml0cz4ocHRyKTsgfQotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFU+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+CiAgICAg
QUxXQVlTX0lOTElORSBzdGF0aWMgVSB1bnBvaXNvbihQb2lzb25lZEJpdHMgcG9pc29uZWRCaXRz
KSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8VT4ocG9pc29uZWRCaXRzKTsgfQogI2VuZGlmCiAKICAg
ICBQb2lzb25lZEJpdHMgbV9wb2lzb25lZEJpdHMgeyAwIH07CiB9OwogCi10ZW1wbGF0ZTx1aW50
cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4KLXVzaW5nIFBvaXNvbmVkID0gUG9pc29uZWRJbXBsPHVp
bnRwdHJfdCYsIGtleSwgVD47Cit0ZW1wbGF0ZTx0eXBlbmFtZSBLMSwgSzEgazEsIHR5cGVuYW1l
IFQxLCB0eXBlbmFtZSBLMiwgSzIgazIsIHR5cGVuYW1lIFQyPgoraW5saW5lIHZvaWQgc3dhcChQ
b2lzb25lZEltcGw8SzEsIGsxLCBUMT4mIGEsIFBvaXNvbmVkSW1wbDxLMiwgazIsIFQyPiYgYikK
K3sKKyAgICBhLnN3YXAoYik7Cit9CiAKLSNpZiBVU0UoSlNWQUxVRTY0KQotdGVtcGxhdGU8dWlu
dDMyX3Qga2V5LCB0eXBlbmFtZSBUPgotdXNpbmcgSW50MzJQb2lzb25lZCA9IFBvaXNvbmVkSW1w
bDx1aW50cHRyX3QsIHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oa2V5KSA8PCAzMiwgVD47CitXVEZf
RVhQT1JUX1BSSVZBVEUgdWludHB0cl90IG1ha2VQb2lzb24oKTsKKworaW5saW5lIGNvbnN0ZXhw
ciB1aW50cHRyX3QgbWFrZVBvaXNvbih1aW50MzJfdCBrZXkpCit7CisjaWYgRU5BQkxFKFBPSVNP
TikKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludHB0cl90PigweDgwMDAwMDAwIHwga2V5KSA8
PCAzMjsKICNlbHNlCi10ZW1wbGF0ZTx1aW50MzJfdCwgdHlwZW5hbWUgVD4KLXVzaW5nIEludDMy
UG9pc29uZWQgPSBQb2lzb25lZEltcGw8dWludHB0cl90LCAwLCBUPjsKKyAgICByZXR1cm4gKHZv
aWQpa2V5LCAwOwogI2VuZGlmCit9CiAKLVdURl9FWFBPUlRfUFJJVkFURSB1aW50cHRyX3QgbWFr
ZVBvaXNvbigpOwordGVtcGxhdGU8dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQ+Cit1c2luZyBQ
b2lzb25lZCA9IFBvaXNvbmVkSW1wbDx1aW50cHRyX3QmLCBrZXksIFQ+OworCit0ZW1wbGF0ZTx1
aW50MzJfdCBrZXksIHR5cGVuYW1lIFQ+Cit1c2luZyBDb25zdEV4cHJQb2lzb25lZCA9IFBvaXNv
bmVkSW1wbDx1aW50cHRyX3QsIG1ha2VQb2lzb24oa2V5KSwgVD47CiAKIH0gLy8gbmFtZXNwYWNl
IFdURgogCi11c2luZyBXVEY6OkludDMyUG9pc29uZWQ7Cit1c2luZyBXVEY6OkNvbnN0RXhwclBv
aXNvbmVkOwogdXNpbmcgV1RGOjpQb2lzb25lZDsKIHVzaW5nIFdURjo6UG9pc29uZWRCaXRzOwog
dXNpbmcgV1RGOjptYWtlUG9pc29uOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjI1ODE2KQorKysgVG9vbHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTctMTItMTIgIE1hcmsgTGFtICA8
bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEZpbGwgb3V0IHNvbWUgUG9pc29uZWQgQVBJ
cywgZml4IHNvbWUgYnVncywgYW5kIGFkZCBzb21lIHRlc3RzLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNzI0CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8zNjAwNjg4ND4KKworICAgICAgICBSZXZpZXdlZCBieSBKRiBCYXN0aWVuLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Db25zdEV4cHJQb2lzb25lZC5jcHA6IEFkZGVkLgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvUG9pc29uZWQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmluaXRp
YWxpemVUZXN0UG9pc29uKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkRGF0YS5jcHA6IEFkZGVkLgorCiAy
MDE3LTEyLTEyICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBNb2JpbGVNaW5pQnJvd3NlciB1c2luZyB0aGUgd3JvbmcgdG9vbGNoYWluCkluZGV4OiBUb29s
cy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIyNTgwNykKKysrIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTk1LDYgKzk1LDcgQEAg
c2V0KFRlc3RXVEZfU09VUkNFUwogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9D
aGVja2VkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0v
VGVzdHMvV1RGL0NvbmN1cnJlbnRQdHJIYXNoU2V0LmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9E
SVJ9L1Rlc3RzL1dURi9Db25kaXRpb24uY3BwCisgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVz
dHMvV1RGL0NvbnN0RXhwclBvaXNvbmVkLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rl
c3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVz
dHMvV1RGL0RhdGVNYXRoLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9E
ZXF1ZS5jcHAKQEAgLTEyMiw2ICsxMjMsOCBAQCBzZXQoVGVzdFdURl9TT1VSQ0VTCiAgICAgJHtU
RVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL09wdGlvbmFsLmNwcAogICAgICR7VEVTVFdFQktJ
VEFQSV9ESVJ9L1Rlc3RzL1dURi9PcHRpb25TZXQuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJ
Un0vVGVzdHMvV1RGL1BhcmtpbmdMb3QuY3BwCisgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVz
dHMvV1RGL1BvaXNvbmVkLmNwcAorICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9Q
b2lzb25lZERhdGEuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1ByaW9y
aXR5UXVldWUuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1JlZEJsYWNr
VHJlZS5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvUmVmLmNwcApJbmRl
eDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIyNTgwNykKKysrIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC03NTYsNiArNzU2LDkgQEAKIAkJRjZCN0JFOTcxNzQ2OUI5NjAwOEEzNDQ1IC8q
IGFzc29jaWF0ZS1mb3JtLWNvbnRyb2xzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjZCN0JFOTYxNzQ2OUI3RTAwOEEzNDQ1IC8qIGFz
c29jaWF0ZS1mb3JtLWNvbnRyb2xzLmh0bWwgKi87IH07CiAJCUY2RjQ5QzZCMTU1NDVDQTcwMDA3
RjM5RCAvKiBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlX0J1bmRsZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNkY0OUM2NjE1NTQ1QzhEMDAwN0Yz
OUQgLyogRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZV9CdW5kbGUuY3BwICovOyB9OwogCQlGNkZE
RERENjE0MjQxQzZGMDA0RjE3MjkgLyogcHVzaC1zdGF0ZS5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2RkREREQ1MTQyNDFDNDgwMDRG
MTcyOSAvKiBwdXNoLXN0YXRlLmh0bWwgKi87IH07CisJCUZFMDVGQUVGMUZFMDY0NUIwMDA5MzIz
MCAvKiBQb2lzb25lZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTA1RkFFRTFGRTA2NDNEMDAwOTMyMzAgLyogUG9pc29uZWQuY3BwICovOyB9Owor
CQlGRTA1RkFGMTFGRTA4Q0Q0MDAwOTMyMzAgLyogQ29uc3RFeHByUG9pc29uZWQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwNUZBRjAxRkUwOEND
RDAwMDkzMjMwIC8qIENvbnN0RXhwclBvaXNvbmVkLmNwcCAqLzsgfTsKKwkJRkUwNUZBRjMxRkUw
QjQyQjAwMDkzMjMwIC8qIFBvaXNvbmVkRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTA1RkFGMjFGRTBCM0NCMDAwOTMyMzAgLyogUG9pc29u
ZWREYXRhLmNwcCAqLzsgfTsKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBC
ZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwpAQCAtMTg1Nyw2ICsxODYwLDkg
QEAKIAkJRjZGNDlDNjcxNTU0NUM4RDAwMDdGMzlEIC8qIERPTVdpbmRvd0V4dGVuc2lvbk5vQ2Fj
aGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NV2luZG93RXh0
ZW5zaW9uTm9DYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2RkREREQy
MTQyNDFBRDQwMDRGMTcyOSAvKiBQcml2YXRlQnJvd3NpbmdQdXNoU3RhdGVOb0hpc3RvcnlDYWxs
YmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcml2YXRlQnJv
d3NpbmdQdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUY2RkREREQ1MTQyNDFDNDgwMDRGMTcyOSAvKiBwdXNoLXN0YXRlLmh0bWwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAicHVzaC1zdGF0ZS5odG1sIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRkUwNUZBRUUxRkUwNjQzRDAwMDkzMjMwIC8qIFBvaXNvbmVkLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvaXNvbmVkLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUwNUZBRjAxRkUwOENDRDAwMDkzMjMwIC8qIENv
bnN0RXhwclBvaXNvbmVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENvbnN0RXhwclBvaXNvbmVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUw
NUZBRjIxRkUwQjNDQjAwMDkzMjMwIC8qIFBvaXNvbmVkRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb2lzb25lZERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGRUI2Rjc0RTFCMkJBNDRFMDA5RTQ5MjIgLyogTmFrZWRQdHIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmFrZWRQdHIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwog
CkBAIC0yNjEzLDYgKzI2MTksNyBAQAogCQkJCUE3QTk2NkRBMTQwRUNDQzgwMDVFRjlCNCAvKiBD
aGVja2VkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwICovLAogCQkJCTBGMzBDQjVCMUZDRTE3OTIw
MDRCNTMyMyAvKiBDb25jdXJyZW50UHRySGFzaFNldC5jcHAgKi8sCiAJCQkJMEZFQUUzNjcxQjdE
MTlDQjAwQ0UxN0YyIC8qIENvbmRpdGlvbi5jcHAgKi8sCisJCQkJRkUwNUZBRjAxRkUwOENDRDAw
MDkzMjMwIC8qIENvbnN0RXhwclBvaXNvbmVkLmNwcCAqLywKIAkJCQk1MTcxNEVCOTFEMDg3NDE2
MDA0NzIzQzQgLyogQ3Jvc3NUaHJlYWRUYXNrLmNwcCAqLywKIAkJCQkyNkEyQzcyRTE1RTJFNzND
MDA1QjFBMTQgLyogQ1N0cmluZy5jcHAgKi8sCiAJCQkJN0FBMDIxQkExQUIwOUVBNzAwNTI5NTNG
IC8qIERhdGVNYXRoLmNwcCAqLywKQEAgLTI2NDYsNiArMjY1Myw4IEBACiAJCQkJMUFGREU2NTQx
OTUzQjJDMDAwQzQ4RkZBIC8qIE9wdGlvbmFsLmNwcCAqLywKIAkJCQlDRTUwRDhDODFDODY2NUNF
MDA3MkVBNUEgLyogT3B0aW9uU2V0LmNwcCAqLywKIAkJCQkwRkU0NDc5NzFCNzZGMUUzMDA5NDk4
RUIgLyogUGFya2luZ0xvdC5jcHAgKi8sCisJCQkJRkUwNUZBRUUxRkUwNjQzRDAwMDkzMjMwIC8q
IFBvaXNvbmVkLmNwcCAqLywKKwkJCQlGRTA1RkFGMjFGRTBCM0NCMDAwOTMyMzAgLyogUG9pc29u
ZWREYXRhLmNwcCAqLywKIAkJCQk1M0VDMjUzRjFFOTZCQzgwMDAwODMxQjkgLyogUHJpb3JpdHlR
dWV1ZS5jcHAgKi8sCiAJCQkJMEZDNkM0Q0IxNDEwMjdFMDAwNUI3RjBDIC8qIFJlZEJsYWNrVHJl
ZS5jcHAgKi8sCiAJCQkJOTNBNDI3QUExODBEQTI2NDAwQ0QyNEQ3IC8qIFJlZi5jcHAgKi8sCkBA
IC0zMTgwLDYgKzMxODksNyBAQAogCQkJCTZCRkQyOTRDMUQ1RTZDMUQwMDhFQzk2OCAvKiBIYXNo
Q291bnRlZFNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzNENjMxRDFGQ0I3NjIwMDAzMkVD
RDYgLyogSGFzaGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERUQyMUQwQTU5MEMwMEZF
QkNGMyAvKiBIYXNoTWFwLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFMDVGQUYzMUZFMEI0MkIw
MDA5MzIzMCAvKiBQb2lzb25lZERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RFRDQx
RDBBNTkwQzAwRkVCQ0YzIC8qIEhhc2hTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RF
RTAxRDBBNTkwQzAwRkVCQ0YzIC8qIEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0EwNTA5NDExRkI5RjA2NDAwQjMzRkI4IC8qIEpTT05WYWx1ZS5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTMxOTAsNiArMzIwMCw3IEBACiAJCQkJN0M4M0RGMUQxRDBBNTkw
QzAwRkVCQ0YzIC8qIExvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU3RDU0RjYxRjMzOTVE
MDAwQTk3QUE3IC8qIExvZ2dlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVFRDFEMEE1
OTBDMDBGRUJDRjMgLyogTWF0aEV4dHJhcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTA1RkFG
MTFGRTA4Q0Q0MDAwOTMyMzAgLyogQ29uc3RFeHByUG9pc29uZWQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0M4M0RFRUYxRDBBNTkwQzAwRkVCQ0YzIC8qIE1ENS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3QzgzREVGMTFEMEE1OTBDMDBGRUJDRjMgLyogTWVkaWFUaW1lLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDODNERUY2MUQwQTU5MEMwMEZFQkNGMyAvKiBNZXRhQWxsb2NhdG9yLmNwcCBp
biBTb3VyY2VzICovLApAQCAtMzIxMCw2ICszMjIxLDcgQEAKIAkJCQk3QzgzREYwNTFEMEE1OTBD
MDBGRUJDRjMgLyogUnVuTG9vcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREYyNjFEMEE1
OTBDMDBGRUJDRjMgLyogU2F0dXJhdGVkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUEzNTI0QUUxRDYzQTRGQjAwMzE3MjlCIC8qIFNjb3BlLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUZFMDVGQUVGMUZFMDY0NUIwMDA5MzIzMCAvKiBQb2lzb25lZC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3QzgzREYxMjFEMEE1OTBDMDBGRUJDRjMgLyogU2NvcGVkTGFtYmRh
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERjNEMUQwQTU5MEMwMEZFQkNGMyAvKiBTZXRG
b3JTY29wZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREYyQTFEMEE1OTBDMDBGRUJDRjMg
LyogU0hBMS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0NvbnN0RXhwclBvaXNvbmVkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9Db25zdEV4cHJQb2lzb25lZC5jcHAJKG5vbmV4aXN0ZW50KQorKysg
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29uc3RFeHByUG9pc29uZWQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMzUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiUmVmTG9n
Z2VyLmgiCisjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVkZSA8d3RmL1BvaXNvbmVkLmg+CisKK25h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIGNvbnN0IHVpbnQzMl90IFBvaXNvbkEg
PSAweGFhYWE7CitzdGF0aWMgY29uc3QgdWludDMyX3QgUG9pc29uQiA9IDB4YmJiYjsKKworLy8g
Rm9yIHRoZXNlIHRlc3RzLCB3ZSBuZWVkIGEgYmFzZSBjbGFzcyBhbmQgYSBkZXJpdmVkIGNsYXNz
LiBGb3IgdGhpcyBwdXJwb3NlLAorLy8gd2UgcmV1c2UgdGhlIFJlZkxvZ2dlciBhbmQgRGVyaXZl
ZFJlZkxvZ2dlciBjbGFzc2VzLgorCitURVNUKFdURl9Db25zdEV4cHJQb2lzb25lZCwgQmFzaWMp
Cit7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CisKKyAgICBDb25zdEV4cHJQb2lzb25l
ZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBlbXB0eTsKKyAgICBBU1NFUlRfRVEobnVsbHB0ciwgZW1w
dHkudW5wb2lzb25lZCgpKTsKKworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9p
c29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCAmKnB0cik7CisgICAgICAgIEFTU0VS
VF9FUSgmYS5uYW1lLCAmcHRyLT5uYW1lKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0
RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0ciA9ICZhOworICAgICAgICBBU1NF
UlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29u
c3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAgICAgQ29u
c3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIocDEpOworICAgICAgICBDb25z
dEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwMyhwMSk7CisgICAgICAgIEFTU0VS
VF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBv
aXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisKKyAg
ICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VS
VF9UUlVFKHAxLmJpdHMoKSAhPSBwMy5iaXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAg
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAgICAg
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIgPSBwMTsKKyAgICAgICAg
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDMgPSBwMTsKKyAgICAgICAg
QVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAy
LnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsK
KworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKyAgICAgICAg
QVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAzLmJpdHMoKSk7CisgICAgfQorCisgICAgeworICAg
ICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSA9ICZhOworICAg
ICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9IFdURk1vdmUo
cDEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFT
U0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBDb25zdEV4cHJQb2lzb25l
ZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMyA9ICZhOworICAgICAgICBDb25zdEV4cHJQb2lzb25l
ZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCA9IFdURk1vdmUocDMpOworICAgICAgICBBU1NFUlRf
RVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDQudW5wb2lz
b25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsK
KyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQorCisg
ICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSA9
ICZhOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMihX
VEZNb3ZlKHAxKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAg
ICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOworCisgICAgICAgIENvbnN0RXhw
clBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzID0gJmE7CisgICAgICAgIENvbnN0RXhw
clBvaXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KFdURk1vdmUocDMpKTsKKyAgICAgICAg
QVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHA0
LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJp
dHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAg
IH0KKworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgRGVyaXZlZFJl
ZkxvZ2dlcio+IHAxID0gJmE7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJl
ZkxvZ2dlcio+IHAyID0gcDE7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJl
ZkxvZ2dlcio+IHAzID0gcDE7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgp
KTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NF
UlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0
cygpID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBwMy5i
aXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29u
QSwgRGVyaXZlZFJlZkxvZ2dlcio+IHAxID0gJmE7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVk
PFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgIEFTU0VSVF9F
USgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNv
bmVkKCkpOworCisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIERlcml2ZWRSZWZM
b2dnZXIqPiBwMyA9ICZhOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZM
b2dnZXIqPiBwNCA9IFdURk1vdmUocDMpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9p
c29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDQudW5wb2lzb25lZCgpKTsKKworICAg
ICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJU
X1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBD
b25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOworICAgICAgICBB
U1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICBwdHIuY2xlYXIoKTsKKyAg
ICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0KK30KKwor
VEVTVChXVEZfQ29uc3RFeHByUG9pc29uZWQsIEFzc2lnbm1lbnQpCit7CisgICAgRGVyaXZlZFJl
ZkxvZ2dlciBhKCJhIik7CisgICAgUmVmTG9nZ2VyIGIoImIiKTsKKyAgICBEZXJpdmVkUmVmTG9n
Z2VyIGMoImMiKTsKKworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwg
UmVmTG9nZ2VyKj4gcDEoJmEpOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBS
ZWZMb2dnZXIqPiBwMigmYik7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgp
KTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBwMSA9
IHAyOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFT
U0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBDb25zdEV4cHJQb2lzb25l
ZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygmYSk7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVk
PFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51
bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7Cisg
ICAgICAgIHAzID0gcDQ7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDMudW5wb2lzb25lZCgpKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VS
VF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5i
aXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBv
aXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgm
YSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHB0ciA9ICZiOworICAgICAgICBBU1NFUlRf
RVEoJmIsIHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29uc3RF
eHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcHRyID0gbnVsbHB0cjsKKyAgICAg
ICAgQVNTRVJUX0VRKG51bGxwdHIsIHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0KKworICAgIHsK
KyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOwor
ICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMigmYik7Cisg
ICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VR
KCZiLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBwMSA9IFdURk1vdmUocDIpOworICAgICAg
ICBBU1NFUlRfRVEoJmIsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwg
cDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBS
ZWZMb2dnZXIqPiBwMygmYSk7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJl
ZkxvZ2dlcio+IHA0KCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkp
OworICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIHAzID0g
V1RGTW92ZShwNCk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDMudW5wb2lzb25lZCgpKTsKKyAg
ICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9U
UlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRz
KCkgIT0gcDQuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNv
bmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29u
ZWQ8UG9pc29uQSwgRGVyaXZlZFJlZkxvZ2dlcio+IHAyKCZjKTsKKyAgICAgICAgQVNTRVJUX0VR
KCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHAyLnVucG9pc29u
ZWQoKSk7CisgICAgICAgIHAxID0gcDI7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDEudW5wb2lz
b25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMi51bnBvaXNvbmVkKCkpOworCisgICAg
ICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKKyAgICAg
ICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgRGVyaXZlZFJlZkxvZ2dlcio+IHA0KCZjKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRf
RVEoJmMsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIHAzID0gcDQ7CisgICAgICAgIEFTU0VS
VF9FUSgmYywgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwNC51bnBv
aXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkp
OworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9CisK
KyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0
cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAg
IHB0ciA9ICZjOworICAgICAgICBBU1NFUlRfRVEoJmMsIHB0ci51bnBvaXNvbmVkKCkpOworICAg
IH0KKworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2Vy
Kj4gcDEoJmEpOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBEZXJpdmVkUmVm
TG9nZ2VyKj4gcDIoJmMpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7
CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDEgPSBX
VEZNb3ZlKHAyKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMS51bnBvaXNvbmVkKCkpOworICAg
ICAgICBBU1NFUlRfRVEoJmMsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQ29uc3RFeHBy
UG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOworICAgICAgICBDb25zdEV4cHJQ
b2lzb25lZDxQb2lzb25CLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDQoJmMpOworICAgICAgICBBU1NF
UlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDQudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgcDMgPSBXVEZNb3ZlKHA0KTsKKyAgICAgICAgQVNTRVJUX0VR
KCZjLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHA0LnVucG9pc29u
ZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7Cisg
ICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgIH0KKworICAg
IHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZh
KTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcHRy
ID0gcHRyOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0K
KworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4g
cHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyNpZiBD
T01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNs
YW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bmtub3duLXByYWdtYXMiCisjcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgaWdub3JlZCAiLVdzZWxmLW1vdmUiCisjZW5kaWYKKyAgICAgICAgcHRyID0g
V1RGTW92ZShwdHIpOworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9z
dGljIHBvcAorI2VuZGlmCisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7
CisgICAgfQorfQorCitURVNUKFdURl9Db25zdEV4cHJQb2lzb25lZCwgU3dhcCkKK3sKKyAgICBS
ZWZMb2dnZXIgYSgiYSIpOworICAgIFJlZkxvZ2dlciBiKCJiIik7CisKKyAgICB7CisgICAgICAg
IENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKKyAgICAgICAg
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoJmIpOworICAgICAgICBB
U1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIu
dW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDEuc3dhcChwMik7CisgICAgICAgIEFTU0VSVF9FUSgm
YiwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVk
KCkpOworCisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAz
KCZhKTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQo
JmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFT
U0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDMuc3dhcChwNCk7CisgICAg
ICAgIEFTU0VSVF9FUSgmYiwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZh
LCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBw
Mi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsK
KyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAzLmJpdHMoKSk7CisgICAgICAgIEFT
U0VSVF9UUlVFKHAyLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAg
ICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOworICAgICAg
ICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMigmYik7CisgICAgICAg
IEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBw
Mi51bnBvaXNvbmVkKCkpOworICAgICAgICBzd2FwKHAxLCBwMik7CisgICAgICAgIEFTU0VSVF9F
USgmYiwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNv
bmVkKCkpOworCisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+
IHAzKCZhKTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4g
cDQoJmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAg
IEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAgc3dhcChwMywgcDQpOwor
ICAgICAgICBBU1NFUlRfRVEoJmIsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9F
USgmYSwgcDQudW5wb2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkg
IT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMo
KSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMy5iaXRzKCkpOworICAgICAg
ICBBU1NFUlRfVFJVRShwMi5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9Cit9CisKK3N0YXRp
YyBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwb2lzb25lZFB0ckZvbyhS
ZWZMb2dnZXImIGxvZ2dlcikKK3sKKyAgICByZXR1cm4gQ29uc3RFeHByUG9pc29uZWQ8UG9pc29u
QSwgUmVmTG9nZ2VyKj4oJmxvZ2dlcik7Cit9CisKK1RFU1QoV1RGX0NvbnN0RXhwclBvaXNvbmVk
LCBSZXR1cm5WYWx1ZSkKK3sKKyAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKKworICAgIHsK
KyAgICAgICAgYXV0byBwdHIgPSBwb2lzb25lZFB0ckZvbyhhKTsKKyAgICAgICAgQVNTRVJUX0VR
KCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCAmKnB0cik7Cisg
ICAgICAgIEFTU0VSVF9FUSgmYS5uYW1lLCAmcHRyLT5uYW1lKTsKKyAgICB9Cit9CisKK30gLy8g
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvUG9pc29uZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1BvaXNvbmVkLmNwcAkobm9uZXhpc3RlbnQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9Qb2lzb25lZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNTYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpbmNsdWRlICJSZWZMb2dnZXIuaCIKKyNpbmNsdWRlIDx3dGYvUG9pc29u
ZWQuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitleHRlcm4gIkMiIEpTX0VYUE9S
VERBVEEgdWludHB0cl90IGdfdGVzdFBvaXNvbkE7CitleHRlcm4gIkMiIEpTX0VYUE9SVERBVEEg
dWludHB0cl90IGdfdGVzdFBvaXNvbkI7CitleHRlcm4gdm9pZCBpbml0aWFsaXplVGVzdFBvaXNv
bigpOworCisvLyBGb3IgdGhlc2UgdGVzdHMsIHdlIG5lZWQgYSBiYXNlIGNsYXNzIGFuZCBhIGRl
cml2ZWQgY2xhc3MuIEZvciB0aGlzIHB1cnBvc2UsCisvLyB3ZSByZXVzZSB0aGUgUmVmTG9nZ2Vy
IGFuZCBEZXJpdmVkUmVmTG9nZ2VyIGNsYXNzZXMuCisKK1RFU1QoV1RGX1BvaXNvbmVkLCBCYXNp
YykKK3sKKyAgICBpbml0aWFsaXplVGVzdFBvaXNvbigpOworICAgIERlcml2ZWRSZWZMb2dnZXIg
YSgiYSIpOworCisgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gZW1wdHk7
CisgICAgQVNTRVJUX0VRKG51bGxwdHIsIGVtcHR5LnVucG9pc29uZWQoKSk7CisKKyAgICB7Cisg
ICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAg
ICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgm
YSwgJipwdHIpOworICAgICAgICBBU1NFUlRfRVEoJmEubmFtZSwgJnB0ci0+bmFtZSk7CisgICAg
fQorCisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBw
dHIgPSAmYTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICB9
CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAx
ID0gJmE7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKHAx
KTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDMocDEpOwor
ICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9F
USgmYSwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNv
bmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOwor
ICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDMuYml0cygpKTsKKyAgICB9CisKKyAg
ICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxID0gJmE7
CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyID0gcDE7Cisg
ICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHAzID0gcDE7CisgICAg
ICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZh
LCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQo
KSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CisgICAg
ICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBwMy5iaXRzKCkpOworICAgIH0KKworICAgIHsK
KyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAg
ICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIgPSBXVEZNb3ZlKHAx
KTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NF
UlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9p
c29uQSwgUmVmTG9nZ2VyKj4gcDMgPSAmYTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29u
QiwgUmVmTG9nZ2VyKj4gcDQgPSBXVEZNb3ZlKHAzKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBw
My51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7
CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CisgICAgICAg
IEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgIH0KKworICAgIHsKKyAg
ICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAg
ICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoV1RGTW92ZShwMSkpOwor
ICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9F
USgmYSwgcDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25B
LCBSZWZMb2dnZXIqPiBwMyA9ICZhOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBS
ZWZMb2dnZXIqPiBwNChXVEZNb3ZlKHAzKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwNC51bnBvaXNvbmVkKCkpOworCisg
ICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NF
UlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAg
IFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMSA9ICZhOworICAg
ICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9IHAxOworICAgICAg
ICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwMyA9IHAxOworICAgICAgICBB
U1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIu
dW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwor
CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBB
U1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDMuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAg
ICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMSA9ICZhOwor
ICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9IFdURk1vdmUo
cDEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFT
U0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQ
b2lzb25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDMgPSAmYTsKKyAgICAgICAgUG9pc29uZWQ8Z190
ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQgPSBXVEZNb3ZlKHAzKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHA0LnVucG9p
c29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7
CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgIH0KKwor
ICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZh
KTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcHRy
LmNsZWFyKCk7CisgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwdHIudW5wb2lzb25lZCgpKTsK
KyAgICB9Cit9CisKK1RFU1QoV1RGX1BvaXNvbmVkLCBBc3NpZ25tZW50KQoreworICAgIGluaXRp
YWxpemVUZXN0UG9pc29uKCk7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CisgICAgUmVm
TG9nZ2VyIGIoImIiKTsKKyAgICBEZXJpdmVkUmVmTG9nZ2VyIGMoImMiKTsKKworICAgIHsKKyAg
ICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOworICAgICAg
ICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMigmYik7CisgICAgICAgIEFT
U0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51
bnBvaXNvbmVkKCkpOworICAgICAgICBwMSA9IHAyOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAx
LnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsK
KworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygmYSk7Cisg
ICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KCZiKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIs
IHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIHAzID0gcDQ7CisgICAgICAgIEFTU0VSVF9FUSgm
YiwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVk
KCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAg
ICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9CisKKyAgICB7
CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7Cisg
ICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHB0ciA9ICZi
OworICAgICAgICBBU1NFUlRfRVEoJmIsIHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0KKworICAg
IHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcHRyID0g
bnVsbHB0cjsKKyAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHB0ci51bnBvaXNvbmVkKCkpOwor
ICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2Vy
Kj4gcDEoJmEpOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBw
MigmYik7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAg
QVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBwMSA9IFdURk1vdmUocDIp
OworICAgICAgICBBU1NFUlRfRVEoJmIsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VS
VF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lz
b25BLCBSZWZMb2dnZXIqPiBwMygmYSk7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIs
IFJlZkxvZ2dlcio+IHA0KCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVk
KCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIHAz
ID0gV1RGTW92ZShwNCk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDMudW5wb2lzb25lZCgpKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VS
VF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5i
aXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdf
dGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0
UG9pc29uQSwgRGVyaXZlZFJlZkxvZ2dlcio+IHAyKCZjKTsKKyAgICAgICAgQVNTRVJUX0VRKCZh
LCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHAyLnVucG9pc29uZWQo
KSk7CisgICAgICAgIHAxID0gcDI7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDEudW5wb2lzb25l
ZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMi51bnBvaXNvbmVkKCkpOworCisgICAgICAg
IFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKKyAgICAgICAgUG9p
c29uZWQ8Z190ZXN0UG9pc29uQiwgRGVyaXZlZFJlZkxvZ2dlcio+IHA0KCZjKTsKKyAgICAgICAg
QVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHA0
LnVucG9pc29uZWQoKSk7CisgICAgICAgIHAzID0gcDQ7CisgICAgICAgIEFTU0VSVF9FUSgmYywg
cDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwNC51bnBvaXNvbmVkKCkp
OworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAg
ICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9CisKKyAgICB7Cisg
ICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAg
ICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHB0ciA9ICZjOwor
ICAgICAgICBBU1NFUlRfRVEoJmMsIHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0KKworICAgIHsK
KyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOworICAg
ICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDIoJmMpOwor
ICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9F
USgmYywgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDEgPSBXVEZNb3ZlKHAyKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZjLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMs
IHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVm
TG9nZ2VyKj4gcDMoJmEpOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBEZXJpdmVk
UmVmTG9nZ2VyKj4gcDQoJmMpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQo
KSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDMg
PSBXVEZNb3ZlKHA0KTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMy51bnBvaXNvbmVkKCkpOwor
ICAgICAgICBBU1NFUlRfRVEoJmMsIHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJU
X1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJp
dHMoKSAhPSBwNC5iaXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190
ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBw
dHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcHRyID0gcHRyOworICAgICAgICBBU1NFUlRfRVEo
JmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8
Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZh
LCBwdHIudW5wb2lzb25lZCgpKTsKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcg
ZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bmtu
b3duLXByYWdtYXMiCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdzZWxmLW1v
dmUiCisjZW5kaWYKKyAgICAgICAgcHRyID0gV1RGTW92ZShwdHIpOworI2lmIENPTVBJTEVSKENM
QU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorI2VuZGlmCisgICAgICAgIEFTU0VS
VF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgfQorfQorCitURVNUKFdURl9Qb2lzb25l
ZCwgU3dhcCkKK3sKKyAgICBpbml0aWFsaXplVGVzdFBvaXNvbigpOworICAgIFJlZkxvZ2dlciBh
KCJhIik7CisgICAgUmVmTG9nZ2VyIGIoImIiKTsKKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8
Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOworICAgICAgICBQb2lzb25lZDxnX3Rl
c3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMigmYik7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEu
dW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOwor
ICAgICAgICBwMS5zd2FwKHAyKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVk
KCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAg
UG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOworICAgICAgICBQb2lz
b25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7CisgICAgICAgIEFTU0VSVF9F
USgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNv
bmVkKCkpOworICAgICAgICBwMy5zd2FwKHA0KTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMy51
bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7CisK
KyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAyLmJpdHMoKSk7CisgICAgICAgIEFT
U0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShw
MS5iaXRzKCkgPT0gcDMuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDIuYml0cygpICE9
IHA0LmJpdHMoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lz
b25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEs
IFJlZkxvZ2dlcio+IHAyKCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVk
KCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHN3
YXAocDEsIHAyKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOworICAg
ICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgUG9pc29uZWQ8
Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOworICAgICAgICBQb2lzb25lZDxnX3Rl
c3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMu
dW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOwor
ICAgICAgICBzd2FwKHAzLCBwNCk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDMudW5wb2lzb25l
ZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAg
IEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJV
RShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygp
ID09IHAzLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAyLmJpdHMoKSAhPSBwNC5iaXRz
KCkpOworICAgIH0KK30KKworc3RhdGljIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dl
cio+IHBvaXNvbmVkUHRyRm9vKFJlZkxvZ2dlciYgbG9nZ2VyKQoreworICAgIHJldHVybiBQb2lz
b25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPigmbG9nZ2VyKTsKK30KKworVEVTVChXVEZf
UG9pc29uZWQsIFJldHVyblZhbHVlKQoreworICAgIGluaXRpYWxpemVUZXN0UG9pc29uKCk7Cisg
ICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CisKKyAgICB7CisgICAgICAgIGF1dG8gcHRyID0g
cG9pc29uZWRQdHJGb28oYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQo
KSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgJipwdHIpOworICAgICAgICBBU1NFUlRfRVEoJmEu
bmFtZSwgJnB0ci0+bmFtZSk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJCisKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkRGF0YS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRE
YXRhLmNwcAkobm9uZXhpc3RlbnQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Q
b2lzb25lZERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpbmNsdWRlIDxtdXRleD4KKyNpbmNsdWRlIDx3dGYvUG9pc29uZWQuaD4KKworbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkgeworCitleHRlcm4gIkMiIEpTX0VYUE9SVERBVEEgdWludHB0cl90
IGdfdGVzdFBvaXNvbkE7CitleHRlcm4gIkMiIEpTX0VYUE9SVERBVEEgdWludHB0cl90IGdfdGVz
dFBvaXNvbkI7CitleHRlcm4gdm9pZCBpbml0aWFsaXplVGVzdFBvaXNvbigpOworCit1aW50cHRy
X3QgZ190ZXN0UG9pc29uQTsKK3VpbnRwdHJfdCBnX3Rlc3RQb2lzb25COworCitzdGF0aWMgdm9p
ZCBpbml0aWFsaXplVGVzdFBvaXNvbigpCit7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGlu
aXRpYWxpemVPbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplT25jZUZsYWcs
IFtdIHsKKyAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGdldCAyIGRpZmZlcmVudCBwb2lzb24gdmFs
dWVzLgorICAgICAgICBnX3Rlc3RQb2lzb25BID0gbWFrZVBvaXNvbigpOworICAgICAgICB3aGls
ZSAoIWdfdGVzdFBvaXNvbkIgfHwgZ190ZXN0UG9pc29uQiA9PSBnX3Rlc3RQb2lzb25BKQorICAg
ICAgICAgICAgZ190ZXN0UG9pc29uQiA9IG1ha2VQb2lzb24oKTsKKyAgICB9KTsKK30KKworfSAv
LyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329185</attachid>
            <date>2017-12-12 17:45:13 -0800</date>
            <delta_ts>2017-12-12 17:49:16 -0800</delta_ts>
            <desc>test to see if EWS toolchains support C++14.</desc>
            <filename>bug-180724b.patch</filename>
            <type>text/plain</type>
            <size>43994</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI1ODA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDE3LTEyLTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBG
aWxsIG91dCBzb21lIFBvaXNvbmVkIEFQSXMsIGZpeCBzb21lIGJ1Z3MsIGFuZCBhZGQgc29tZSB0
ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
MDcyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYwMDY4ODQ+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgSkYgQmFzdGllbi4KKworICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlv
blRhYmxlLmg6CisKIDIwMTctMTItMDQgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAK
ICAgICAgICAgV2ViIEluc3BlY3RvcjogbW9kZXJuaXplIEluamVjdGVkU2NyaXB0IGEgYml0Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFi
bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVUcmFuc2l0aW9uVGFibGUuaAkocmV2aXNpb24gMjI1ODA3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMTg3LDggKzE4Nyw4IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBmcmll
bmQgY2xhc3MgU2luZ2xlU2xvdFRyYW5zaXRpb25XZWFrT3duZXI7Ci0gICAgdXNpbmcgUG9pc29u
ZWRUcmFuc2l0aW9uTWFwUHRyID0gSW50MzJQb2lzb25lZDxUcmFuc2l0aW9uTWFwUG9pc29uLCBU
cmFuc2l0aW9uTWFwKj47Ci0gICAgdXNpbmcgUG9pc29uZWRXZWFrSW1wbFB0ciA9IEludDMyUG9p
c29uZWQ8V2Vha0ltcGxQb2lzb24sIFdlYWtJbXBsKj47CisgICAgdXNpbmcgUG9pc29uZWRUcmFu
c2l0aW9uTWFwUHRyID0gQ29uc3RFeHByUG9pc29uZWQ8VHJhbnNpdGlvbk1hcFBvaXNvbiwgVHJh
bnNpdGlvbk1hcCo+OworICAgIHVzaW5nIFBvaXNvbmVkV2Vha0ltcGxQdHIgPSBDb25zdEV4cHJQ
b2lzb25lZDxXZWFrSW1wbFBvaXNvbiwgV2Vha0ltcGwqPjsKIAogICAgIGJvb2wgaXNVc2luZ1Np
bmdsZVNsb3QoKSBjb25zdAogICAgIHsKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjU4MDcpCisrKyBTb3Vy
Y2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDE3LTEy
LTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBGaWxsIG91dCBz
b21lIFBvaXNvbmVkIEFQSXMsIGZpeCBzb21lIGJ1Z3MsIGFuZCBhZGQgc29tZSB0ZXN0cy4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDcyNAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMzYwMDY4ODQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSkYg
QmFzdGllbi4KKworICAgICAgICBBbHNvIHJlbmFtZSBJbnQzMlBvaXNvbmVkIHRvIENvbnN0RXhw
clBvaXNvbmVkLiAgVGhlIGtleSBpdCB0YWtlcyBpcyBhY3R1YWxseSBhCisgICAgICAgIHVpbnQz
Ml90LiAgU28sIEludDMyIGlzIHJlYWxseSBhIG1pc25vbWVyLiAgSW4gYWRkaXRpb24sIHRoZSBr
ZXkgbmVlZHMgdG8gYmUgYQorICAgICAgICBjb25zdGV4cHIuICBTbywgQ29uc3RFeHByUG9pc29u
ZWQgaXMgYSBiZXR0ZXIgbmFtZSBmb3IgaXQuCisKKyAgICAgICAgKiB3dGYvUG9pc29uZWQuY3Bw
OgorICAgICAgICAoV1RGOjptYWtlUG9pc29uKToKKyAgICAgICAgKiB3dGYvUG9pc29uZWQuaDoK
KyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsSGVscGVyOjphc1JlZmVyZW5jZSk6CisgICAgICAg
IChXVEY6OlBvaXNvbmVkSW1wbDo6UG9pc29uZWRJbXBsKToKKyAgICAgICAgKFdURjo6UG9pc29u
ZWRJbXBsOjpjbGVhcik6CisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6b3BlcmF0b3IqIGNv
bnN0KToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvci0+IGNvbnN0KToKKyAg
ICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdU
Rjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKFdURjo6UG9pc29u
ZWRJbXBsOjpvcGVyYXRvcjwgY29uc3QpOgorICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6Om9w
ZXJhdG9yPD0gY29uc3QpOgorICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6Om9wZXJhdG9yPiBj
b25zdCk6CisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6b3BlcmF0b3I+PSBjb25zdCk6Cisg
ICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdURjo6UG9p
c29uZWRJbXBsOjpzd2FwKToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpleGNoYW5nZSk6
CisgICAgICAgIChXVEY6OnN3YXApOgorICAgICAgICAoV1RGOjptYWtlUG9pc29uKToKKyAgICAg
ICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvcj09KTogRGVsZXRlZC4KKwogMjAxNy0xMi0x
MiAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0VTTmV4dF1b
QmlnSW50XSBJbXBsZW1lbnQgQmlnSW50IGxpdGVyYWxzIGFuZCBKU0JpZ0ludApJbmRleDogU291
cmNlL1dURi93dGYvUG9pc29uZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1Bv
aXNvbmVkLmNwcAkocmV2aXNpb24gMjI1ODA3KQorKysgU291cmNlL1dURi93dGYvUG9pc29uZWQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXVEYgewogdWlu
dHB0cl90IG1ha2VQb2lzb24oKQogewogICAgIHVpbnRwdHJfdCBrZXkgPSBjcnlwdG9ncmFwaGlj
YWxseVJhbmRvbU51bWJlcigpOwotI2lmIFVTRShKU1ZBTFVFNjQpICYmICFPUyhXSU5ET1dTKQor
I2lmIEVOQUJMRShQT0lTT04pCiAgICAga2V5ID0gKGtleSA8PCAzMikgXiAoc3RhdGljX2Nhc3Q8
dWludHB0cl90PihjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpKSA8PCAzKTsKICAgICAv
LyBFbnN1cmUgdGhhdCB0aGUgcG9pc29uZWQgYml0cyAocG9pbnRlciBeIGtleSkgZG8gbm90IG1h
a2UgYSB2YWxpZCBwb2ludGVyIGFuZAogICAgIC8vIGNhbm5vdCBiZSAwLiBXZSBlbnN1cmUgdGhh
dCBpdCBpcyB6ZXJvIHNvIHRoYXQgdGhlIHBvaXNvbmVkIGJpdHMgY2FuIGFsc28gYmUKQEAgLTUx
LDQgKzUxLDMgQEAgdWludHB0cl90IG1ha2VQb2lzb24oKQogfQogCiB9IC8vIG5hbWVzcGFjZSBX
VEYKLQpJbmRleDogU291cmNlL1dURi93dGYvUG9pc29uZWQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi9Qb2lzb25lZC5oCShyZXZpc2lvbiAyMjU4MDcpCisrKyBTb3VyY2UvV1RGL3d0
Zi9Qb2lzb25lZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMSArMjcsMTQgQEAKIAogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKKyNkZWZpbmUgRU5BQkxFX1BPSVNPTiAxCiAjZGVmaW5l
IEVOQUJMRV9QT0lTT05fQVNTRVJUUyAwCiAKIC8vIE5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIGZv
ciAzMi1iaXQgb3IgT1MoV0lORE9XUykgYnVpbGRzIChiZWNhdXNlIG9mIG1pc3NpbmcgbGxpbnQg
c3VwcG9ydCkuCiAvLyBNYWtlIHN1cmUgaXQncyBkaXNhYmxlZC4KICNpZiBVU0UoSlNWQUxVRTMy
XzY0KSB8fCBPUyhXSU5ET1dTKQorI3VuZGVmIEVOQUJMRV9QT0lTT04KKyNkZWZpbmUgRU5BQkxF
X1BPSVNPTiAwCiAjdW5kZWYgRU5BQkxFX1BPSVNPTl9BU1NFUlRTCiAjZGVmaW5lIEVOQUJMRV9Q
T0lTT05fQVNTRVJUUyAwCiAjZW5kaWYKQEAgLTQwLDE3ICs0Myw0NyBAQCBuYW1lc3BhY2UgV1RG
IHsKIAogdXNpbmcgUG9pc29uZWRCaXRzID0gdWludHB0cl90OwogCituYW1lc3BhY2UgUG9pc29u
ZWRJbXBsSGVscGVyIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBpc0Z1bmN0aW9u
UG9pbnRlciA6IHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgc3RkOjppc19mdW5jdGlvbjx0
eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPFQ+Ojp0eXBlPjo6dmFsdWU+IHsgfTsKKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBpc1ZvaWRQb2ludGVyIDogc3RkOjppbnRlZ3JhbF9j
b25zdGFudDxib29sLCBzdGQ6OmlzX3ZvaWQ8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxU
Pjo6dHlwZT46OnZhbHVlPiB7IH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgaXND
b252ZXJ0aWJsZVRvUmVmZXJlbmNlIDogc3RkOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCAhaXNG
dW5jdGlvblBvaW50ZXI8VD46OnZhbHVlICYmICFpc1ZvaWRQb2ludGVyPFQ+Ojp2YWx1ZT4geyB9
OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgordHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDwhaXND
b252ZXJ0aWJsZVRvUmVmZXJlbmNlPFQ+Ojp2YWx1ZSwgaW50PiYKK2FzUmVmZXJlbmNlKFQpIHsg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgor
dHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxpc0NvbnZlcnRpYmxlVG9SZWZlcmVuY2U8VD46OnZh
bHVlLCB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPFQ+Ojp0eXBlPiYKK2FzUmVmZXJlbmNl
KFQgcHRyKSB7IHJldHVybiAqcHRyOyB9CisKK30gLy8gbmFtZXNwYWNlIFBvaXNvbmVkSW1wbEhl
bHBlcgorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBlLCBLZXlUeXBlIGtleSwgdHlwZW5hbWUg
VCwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfcG9pbnRlcjxUPjo6dmFsdWU+
PgogY2xhc3MgUG9pc29uZWRJbXBsIHsKIHB1YmxpYzoKICAgICBQb2lzb25lZEltcGwoKSB7IH0K
IAotICAgIGV4cGxpY2l0IFBvaXNvbmVkSW1wbChUIHB0cikKKyAgICBQb2lzb25lZEltcGwoVCBw
dHIpCiAgICAgICAgIDogbV9wb2lzb25lZEJpdHMocG9pc29uKHB0cikpCiAgICAgeyB9CiAKICAg
ICBQb2lzb25lZEltcGwoY29uc3QgUG9pc29uZWRJbXBsJikgPSBkZWZhdWx0OwogCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgSzIsIEsyIGsyLCB0eXBlbmFtZSBUMj4KKyAgICBQb2lzb25lZEltcGwo
Y29uc3QgUG9pc29uZWRJbXBsPEsyLCBrMiwgVDI+JiBvdGhlcikKKyAgICAgICAgOiBtX3BvaXNv
bmVkQml0cyhwb2lzb248VD4ob3RoZXIudW5wb2lzb25lZCgpKSkKKyAgICB7IH0KKworICAgIFBv
aXNvbmVkSW1wbChQb2lzb25lZEltcGwmJiBvdGhlcikKKyAgICAgICAgOiBtX3BvaXNvbmVkQml0
cyhXVEZNb3ZlKG90aGVyLm1fcG9pc29uZWRCaXRzKSkKKyAgICB7IH0KKwogICAgIGV4cGxpY2l0
IFBvaXNvbmVkSW1wbChQb2lzb25lZEJpdHMgcG9pc29uZWRCaXRzKQogICAgICAgICA6IG1fcG9p
c29uZWRCaXRzKHBvaXNvbmVkQml0cykKICAgICB7IH0KQEAgLTcyLDcgKzEwNSwxMCBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+CiAgICAgVSB1bnBvaXNvbmVkKCkgY29u
c3QgeyByZXR1cm4gdW5wb2lzb248VT4obV9wb2lzb25lZEJpdHMpOyB9CiAKLSAgICBBTFdBWVNf
SU5MSU5FIFQgb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIHVucG9pc29uPFQ+KG1fcG9pc29u
ZWRCaXRzKTsgfQorICAgIHZvaWQgY2xlYXIoKSB7IG1fcG9pc29uZWRCaXRzID0gMDsgfQorCisg
ICAgYXV0byYgb3BlcmF0b3IqKCkgY29uc3QgeyBBU1NFUlQobV9wb2lzb25lZEJpdHMpOyByZXR1
cm4gUG9pc29uZWRJbXBsSGVscGVyOjphc1JlZmVyZW5jZSh1bnBvaXNvbihtX3BvaXNvbmVkQml0
cykpOyB9CisgICAgQUxXQVlTX0lOTElORSBUIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiB1
bnBvaXNvbihtX3BvaXNvbmVkQml0cyk7IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBQ
b2lzb25lZEJpdHM+CiAgICAgVSBiaXRzKCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PFU+
KG1fcG9pc29uZWRCaXRzKTsgfQpAQCAtODAsNTYgKzExNiw5OSBAQCBwdWJsaWM6CiAgICAgYm9v
bCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9wb2lzb25lZEJpdHM7IH0KICAgICBleHBs
aWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX3BvaXNvbmVkQml0czsgfQog
Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBvaXNvbmVkSW1wbCYgYikgY29uc3QKKyAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgUG9pc29uZWRJbXBsJiBiKSBjb25zdCB7IHJldHVybiBtX3Bv
aXNvbmVkQml0cyA9PSBiLm1fcG9pc29uZWRCaXRzOyB9CisgICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFBvaXNvbmVkSW1wbCYgYikgY29uc3QgeyByZXR1cm4gbV9wb2lzb25lZEJpdHMgIT0gYi5t
X3BvaXNvbmVkQml0czsgfQorICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFBvaXNvbmVkSW1wbCYg
YikgY29uc3QgeyByZXR1cm4gbV9wb2lzb25lZEJpdHMgPCBiLm1fcG9pc29uZWRCaXRzOyB9Cisg
ICAgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFBvaXNvbmVkSW1wbCYgYikgY29uc3QgeyByZXR1cm4g
bV9wb2lzb25lZEJpdHMgPD0gYi5tX3BvaXNvbmVkQml0czsgfQorICAgIGJvb2wgb3BlcmF0b3I+
KGNvbnN0IFBvaXNvbmVkSW1wbCYgYikgY29uc3QgeyByZXR1cm4gbV9wb2lzb25lZEJpdHMgPiBi
Lm1fcG9pc29uZWRCaXRzOyB9CisgICAgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFBvaXNvbmVkSW1w
bCYgYikgY29uc3QgeyByZXR1cm4gbV9wb2lzb25lZEJpdHMgPj0gYi5tX3BvaXNvbmVkQml0czsg
fQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBvcGVyYXRvcj09KFUgYikgY29uc3Qg
eyByZXR1cm4gdW5wb2lzb25lZDxVPigpID09IGI7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBV
PiBib29sIG9wZXJhdG9yIT0oVSBiKSBjb25zdCB7IHJldHVybiB1bnBvaXNvbmVkPFU+KCkgIT0g
YjsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgb3BlcmF0b3I8KFUgYikgY29uc3Qg
eyByZXR1cm4gdW5wb2lzb25lZDxVPigpIDwgYjsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+
IGJvb2wgb3BlcmF0b3I8PShVIGIpIGNvbnN0IHsgcmV0dXJuIHVucG9pc29uZWQ8VT4oKSA8PSBi
OyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBvcGVyYXRvcj4oVSBiKSBjb25zdCB7
IHJldHVybiB1bnBvaXNvbmVkPFU+KCkgPiBiOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4g
Ym9vbCBvcGVyYXRvcj49KFUgYikgY29uc3QgeyByZXR1cm4gdW5wb2lzb25lZDxVPigpID49IGI7
IH0KKworICAgIFBvaXNvbmVkSW1wbCYgb3BlcmF0b3I9KFQgcHRyKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIG1fcG9pc29uZWRCaXRzID09IGIubV9wb2lzb25lZEJpdHM7CisgICAgICAgIG1fcG9p
c29uZWRCaXRzID0gcG9pc29uKHB0cik7CisgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9Cisg
ICAgUG9pc29uZWRJbXBsJiBvcGVyYXRvcj0oY29uc3QgUG9pc29uZWRJbXBsJikgPSBkZWZhdWx0
OwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUHRyVHlwZSA9IHZvaWQqLCB0eXBlbmFtZSA9IHR5
cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcG9pbnRlcjxQdHJUeXBlPjo6dmFsdWU+Ojp0
eXBlPgotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQdHJUeXBlIGIpCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgSzIsIEsyIGsyLCB0eXBlbmFtZSBUMj4KKyAgICBQb2lzb25lZEltcGwmIG9wZXJh
dG9yPShjb25zdCBQb2lzb25lZEltcGw8SzIsIGsyLCBUMj4mIG90aGVyKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHVucG9pc29uZWQ8UHRyVHlwZT4oKSA9PSBiOworICAgICAgICBtX3BvaXNvbmVk
Qml0cyA9IHBvaXNvbjxUPihvdGhlci51bnBvaXNvbmVkKCkpOworICAgICAgICByZXR1cm4gKnRo
aXM7CiAgICAgfQogCi0gICAgUG9pc29uZWRJbXBsJiBvcGVyYXRvcj0oVCBwdHIpCisgICAgdm9p
ZCBzd2FwKFBvaXNvbmVkSW1wbCYgbykKICAgICB7Ci0gICAgICAgIG1fcG9pc29uZWRCaXRzID0g
cG9pc29uKHB0cik7Ci0gICAgICAgIHJldHVybiAqdGhpczsKKyAgICAgICAgc3RkOjpzd2FwKG1f
cG9pc29uZWRCaXRzLCBvLm1fcG9pc29uZWRCaXRzKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBLMiwgSzIgazIsIHR5cGVuYW1lIFQyPgorICAgIHZvaWQgc3dhcChQb2lzb25lZElt
cGw8SzIsIGsyLCBUMj4mIG8pCisgICAgeworICAgICAgICBUIHQxID0gdGhpcy0+dW5wb2lzb25l
ZCgpOworICAgICAgICBUMiB0MiA9IG8udW5wb2lzb25lZCgpOworICAgICAgICBzdGQ6OnN3YXAo
dDEsIHQyKTsKKyAgICAgICAgbV9wb2lzb25lZEJpdHMgPSBwb2lzb24odDEpOworICAgICAgICBv
ID0gdDI7CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgVT4KKyAgICBUIGV4Y2hhbmdlKFUm
JiBuZXdWYWx1ZSkKKyAgICB7CisgICAgICAgIFQgb2xkVmFsdWUgPSB1bnBvaXNvbmVkKCk7Cisg
ICAgICAgIG1fcG9pc29uZWRCaXRzID0gcG9pc29uKHN0ZDo6Zm9yd2FyZDxVPihuZXdWYWx1ZSkp
OworICAgICAgICByZXR1cm4gb2xkVmFsdWU7CiAgICAgfQotICAgIFBvaXNvbmVkSW1wbCYgb3Bl
cmF0b3I9KGNvbnN0IFBvaXNvbmVkSW1wbCYpID0gZGVmYXVsdDsKIAogcHJpdmF0ZToKLSNpZiBV
U0UoSlNWQUxVRTY0KQorI2lmIEVOQUJMRShQT0lTT04pCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VT4KICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBQb2lzb25lZEJpdHMgcG9pc29uKFUgcHRyKSB7
IHJldHVybiBwdHIgPyBiaXR3aXNlX2Nhc3Q8UG9pc29uZWRCaXRzPihwdHIpIF4ga2V5IDogMDsg
fQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+
CiAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgVSB1bnBvaXNvbihQb2lzb25lZEJpdHMgcG9pc29u
ZWRCaXRzKSB7IHJldHVybiBwb2lzb25lZEJpdHMgPyBiaXR3aXNlX2Nhc3Q8VT4ocG9pc29uZWRC
aXRzIF4ga2V5KSA6IGJpdHdpc2VfY2FzdDxVPigwbGwpOyB9CiAjZWxzZQogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFU+CiAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUG9pc29uZWRCaXRzIHBvaXNv
bihVIHB0cikgeyByZXR1cm4gYml0d2lzZV9jYXN0PFBvaXNvbmVkQml0cz4ocHRyKTsgfQotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFU+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+CiAgICAg
QUxXQVlTX0lOTElORSBzdGF0aWMgVSB1bnBvaXNvbihQb2lzb25lZEJpdHMgcG9pc29uZWRCaXRz
KSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8VT4ocG9pc29uZWRCaXRzKTsgfQogI2VuZGlmCiAKICAg
ICBQb2lzb25lZEJpdHMgbV9wb2lzb25lZEJpdHMgeyAwIH07CiB9OwogCi10ZW1wbGF0ZTx1aW50
cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4KLXVzaW5nIFBvaXNvbmVkID0gUG9pc29uZWRJbXBsPHVp
bnRwdHJfdCYsIGtleSwgVD47Cit0ZW1wbGF0ZTx0eXBlbmFtZSBLMSwgSzEgazEsIHR5cGVuYW1l
IFQxLCB0eXBlbmFtZSBLMiwgSzIgazIsIHR5cGVuYW1lIFQyPgoraW5saW5lIHZvaWQgc3dhcChQ
b2lzb25lZEltcGw8SzEsIGsxLCBUMT4mIGEsIFBvaXNvbmVkSW1wbDxLMiwgazIsIFQyPiYgYikK
K3sKKyAgICBhLnN3YXAoYik7Cit9CiAKLSNpZiBVU0UoSlNWQUxVRTY0KQotdGVtcGxhdGU8dWlu
dDMyX3Qga2V5LCB0eXBlbmFtZSBUPgotdXNpbmcgSW50MzJQb2lzb25lZCA9IFBvaXNvbmVkSW1w
bDx1aW50cHRyX3QsIHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oa2V5KSA8PCAzMiwgVD47CitXVEZf
RVhQT1JUX1BSSVZBVEUgdWludHB0cl90IG1ha2VQb2lzb24oKTsKKworaW5saW5lIGNvbnN0ZXhw
ciB1aW50cHRyX3QgbWFrZVBvaXNvbih1aW50MzJfdCBrZXkpCit7CisjaWYgRU5BQkxFKFBPSVNP
TikKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludHB0cl90PigweDgwMDAwMDAwIHwga2V5KSA8
PCAzMjsKICNlbHNlCi10ZW1wbGF0ZTx1aW50MzJfdCwgdHlwZW5hbWUgVD4KLXVzaW5nIEludDMy
UG9pc29uZWQgPSBQb2lzb25lZEltcGw8dWludHB0cl90LCAwLCBUPjsKKyAgICByZXR1cm4gKHZv
aWQpa2V5LCAwOwogI2VuZGlmCit9CiAKLVdURl9FWFBPUlRfUFJJVkFURSB1aW50cHRyX3QgbWFr
ZVBvaXNvbigpOwordGVtcGxhdGU8dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQ+Cit1c2luZyBQ
b2lzb25lZCA9IFBvaXNvbmVkSW1wbDx1aW50cHRyX3QmLCBrZXksIFQ+OworCit0ZW1wbGF0ZTx1
aW50MzJfdCBrZXksIHR5cGVuYW1lIFQ+Cit1c2luZyBDb25zdEV4cHJQb2lzb25lZCA9IFBvaXNv
bmVkSW1wbDx1aW50cHRyX3QsIG1ha2VQb2lzb24oa2V5KSwgVD47CiAKIH0gLy8gbmFtZXNwYWNl
IFdURgogCi11c2luZyBXVEY6OkludDMyUG9pc29uZWQ7Cit1c2luZyBXVEY6OkNvbnN0RXhwclBv
aXNvbmVkOwogdXNpbmcgV1RGOjpQb2lzb25lZDsKIHVzaW5nIFdURjo6UG9pc29uZWRCaXRzOwog
dXNpbmcgV1RGOjptYWtlUG9pc29uOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjI1ODE2KQorKysgVG9vbHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTctMTItMTIgIE1hcmsgTGFtICA8
bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEZpbGwgb3V0IHNvbWUgUG9pc29uZWQgQVBJ
cywgZml4IHNvbWUgYnVncywgYW5kIGFkZCBzb21lIHRlc3RzLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNzI0CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8zNjAwNjg4ND4KKworICAgICAgICBSZXZpZXdlZCBieSBKRiBCYXN0aWVuLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Db25zdEV4cHJQb2lzb25lZC5jcHA6IEFkZGVkLgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvUG9pc29uZWQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmluaXRp
YWxpemVUZXN0UG9pc29uKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkRGF0YS5jcHA6IEFkZGVkLgorCiAy
MDE3LTEyLTEyICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBNb2JpbGVNaW5pQnJvd3NlciB1c2luZyB0aGUgd3JvbmcgdG9vbGNoYWluCkluZGV4OiBUb29s
cy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIyNTgwNykKKysrIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTk1LDYgKzk1LDcgQEAg
c2V0KFRlc3RXVEZfU09VUkNFUwogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9D
aGVja2VkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0v
VGVzdHMvV1RGL0NvbmN1cnJlbnRQdHJIYXNoU2V0LmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9E
SVJ9L1Rlc3RzL1dURi9Db25kaXRpb24uY3BwCisgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVz
dHMvV1RGL0NvbnN0RXhwclBvaXNvbmVkLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rl
c3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVz
dHMvV1RGL0RhdGVNYXRoLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9E
ZXF1ZS5jcHAKQEAgLTEyMiw2ICsxMjMsOCBAQCBzZXQoVGVzdFdURl9TT1VSQ0VTCiAgICAgJHtU
RVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL09wdGlvbmFsLmNwcAogICAgICR7VEVTVFdFQktJ
VEFQSV9ESVJ9L1Rlc3RzL1dURi9PcHRpb25TZXQuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJ
Un0vVGVzdHMvV1RGL1BhcmtpbmdMb3QuY3BwCisgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVz
dHMvV1RGL1BvaXNvbmVkLmNwcAorICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9Q
b2lzb25lZERhdGEuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1ByaW9y
aXR5UXVldWUuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1JlZEJsYWNr
VHJlZS5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvUmVmLmNwcApJbmRl
eDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIyNTgwNykKKysrIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC03NTYsNiArNzU2LDkgQEAKIAkJRjZCN0JFOTcxNzQ2OUI5NjAwOEEzNDQ1IC8q
IGFzc29jaWF0ZS1mb3JtLWNvbnRyb2xzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjZCN0JFOTYxNzQ2OUI3RTAwOEEzNDQ1IC8qIGFz
c29jaWF0ZS1mb3JtLWNvbnRyb2xzLmh0bWwgKi87IH07CiAJCUY2RjQ5QzZCMTU1NDVDQTcwMDA3
RjM5RCAvKiBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlX0J1bmRsZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNkY0OUM2NjE1NTQ1QzhEMDAwN0Yz
OUQgLyogRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZV9CdW5kbGUuY3BwICovOyB9OwogCQlGNkZE
RERENjE0MjQxQzZGMDA0RjE3MjkgLyogcHVzaC1zdGF0ZS5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2RkREREQ1MTQyNDFDNDgwMDRG
MTcyOSAvKiBwdXNoLXN0YXRlLmh0bWwgKi87IH07CisJCUZFMDVGQUVGMUZFMDY0NUIwMDA5MzIz
MCAvKiBQb2lzb25lZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTA1RkFFRTFGRTA2NDNEMDAwOTMyMzAgLyogUG9pc29uZWQuY3BwICovOyB9Owor
CQlGRTA1RkFGMTFGRTA4Q0Q0MDAwOTMyMzAgLyogQ29uc3RFeHByUG9pc29uZWQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwNUZBRjAxRkUwOEND
RDAwMDkzMjMwIC8qIENvbnN0RXhwclBvaXNvbmVkLmNwcCAqLzsgfTsKKwkJRkUwNUZBRjMxRkUw
QjQyQjAwMDkzMjMwIC8qIFBvaXNvbmVkRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTA1RkFGMjFGRTBCM0NCMDAwOTMyMzAgLyogUG9pc29u
ZWREYXRhLmNwcCAqLzsgfTsKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBC
ZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwpAQCAtMTg1Nyw2ICsxODYwLDkg
QEAKIAkJRjZGNDlDNjcxNTU0NUM4RDAwMDdGMzlEIC8qIERPTVdpbmRvd0V4dGVuc2lvbk5vQ2Fj
aGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NV2luZG93RXh0
ZW5zaW9uTm9DYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2RkREREQy
MTQyNDFBRDQwMDRGMTcyOSAvKiBQcml2YXRlQnJvd3NpbmdQdXNoU3RhdGVOb0hpc3RvcnlDYWxs
YmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcml2YXRlQnJv
d3NpbmdQdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUY2RkREREQ1MTQyNDFDNDgwMDRGMTcyOSAvKiBwdXNoLXN0YXRlLmh0bWwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAicHVzaC1zdGF0ZS5odG1sIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRkUwNUZBRUUxRkUwNjQzRDAwMDkzMjMwIC8qIFBvaXNvbmVkLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvaXNvbmVkLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUwNUZBRjAxRkUwOENDRDAwMDkzMjMwIC8qIENv
bnN0RXhwclBvaXNvbmVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENvbnN0RXhwclBvaXNvbmVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUw
NUZBRjIxRkUwQjNDQjAwMDkzMjMwIC8qIFBvaXNvbmVkRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb2lzb25lZERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGRUI2Rjc0RTFCMkJBNDRFMDA5RTQ5MjIgLyogTmFrZWRQdHIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmFrZWRQdHIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwog
CkBAIC0yNjEzLDYgKzI2MTksNyBAQAogCQkJCUE3QTk2NkRBMTQwRUNDQzgwMDVFRjlCNCAvKiBD
aGVja2VkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwICovLAogCQkJCTBGMzBDQjVCMUZDRTE3OTIw
MDRCNTMyMyAvKiBDb25jdXJyZW50UHRySGFzaFNldC5jcHAgKi8sCiAJCQkJMEZFQUUzNjcxQjdE
MTlDQjAwQ0UxN0YyIC8qIENvbmRpdGlvbi5jcHAgKi8sCisJCQkJRkUwNUZBRjAxRkUwOENDRDAw
MDkzMjMwIC8qIENvbnN0RXhwclBvaXNvbmVkLmNwcCAqLywKIAkJCQk1MTcxNEVCOTFEMDg3NDE2
MDA0NzIzQzQgLyogQ3Jvc3NUaHJlYWRUYXNrLmNwcCAqLywKIAkJCQkyNkEyQzcyRTE1RTJFNzND
MDA1QjFBMTQgLyogQ1N0cmluZy5jcHAgKi8sCiAJCQkJN0FBMDIxQkExQUIwOUVBNzAwNTI5NTNG
IC8qIERhdGVNYXRoLmNwcCAqLywKQEAgLTI2NDYsNiArMjY1Myw4IEBACiAJCQkJMUFGREU2NTQx
OTUzQjJDMDAwQzQ4RkZBIC8qIE9wdGlvbmFsLmNwcCAqLywKIAkJCQlDRTUwRDhDODFDODY2NUNF
MDA3MkVBNUEgLyogT3B0aW9uU2V0LmNwcCAqLywKIAkJCQkwRkU0NDc5NzFCNzZGMUUzMDA5NDk4
RUIgLyogUGFya2luZ0xvdC5jcHAgKi8sCisJCQkJRkUwNUZBRUUxRkUwNjQzRDAwMDkzMjMwIC8q
IFBvaXNvbmVkLmNwcCAqLywKKwkJCQlGRTA1RkFGMjFGRTBCM0NCMDAwOTMyMzAgLyogUG9pc29u
ZWREYXRhLmNwcCAqLywKIAkJCQk1M0VDMjUzRjFFOTZCQzgwMDAwODMxQjkgLyogUHJpb3JpdHlR
dWV1ZS5jcHAgKi8sCiAJCQkJMEZDNkM0Q0IxNDEwMjdFMDAwNUI3RjBDIC8qIFJlZEJsYWNrVHJl
ZS5jcHAgKi8sCiAJCQkJOTNBNDI3QUExODBEQTI2NDAwQ0QyNEQ3IC8qIFJlZi5jcHAgKi8sCkBA
IC0zMTgwLDYgKzMxODksNyBAQAogCQkJCTZCRkQyOTRDMUQ1RTZDMUQwMDhFQzk2OCAvKiBIYXNo
Q291bnRlZFNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzNENjMxRDFGQ0I3NjIwMDAzMkVD
RDYgLyogSGFzaGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERUQyMUQwQTU5MEMwMEZF
QkNGMyAvKiBIYXNoTWFwLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFMDVGQUYzMUZFMEI0MkIw
MDA5MzIzMCAvKiBQb2lzb25lZERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RFRDQx
RDBBNTkwQzAwRkVCQ0YzIC8qIEhhc2hTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RF
RTAxRDBBNTkwQzAwRkVCQ0YzIC8qIEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0EwNTA5NDExRkI5RjA2NDAwQjMzRkI4IC8qIEpTT05WYWx1ZS5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTMxOTAsNiArMzIwMCw3IEBACiAJCQkJN0M4M0RGMUQxRDBBNTkw
QzAwRkVCQ0YzIC8qIExvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU3RDU0RjYxRjMzOTVE
MDAwQTk3QUE3IC8qIExvZ2dlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVFRDFEMEE1
OTBDMDBGRUJDRjMgLyogTWF0aEV4dHJhcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTA1RkFG
MTFGRTA4Q0Q0MDAwOTMyMzAgLyogQ29uc3RFeHByUG9pc29uZWQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0M4M0RFRUYxRDBBNTkwQzAwRkVCQ0YzIC8qIE1ENS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3QzgzREVGMTFEMEE1OTBDMDBGRUJDRjMgLyogTWVkaWFUaW1lLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDODNERUY2MUQwQTU5MEMwMEZFQkNGMyAvKiBNZXRhQWxsb2NhdG9yLmNwcCBp
biBTb3VyY2VzICovLApAQCAtMzIxMCw2ICszMjIxLDcgQEAKIAkJCQk3QzgzREYwNTFEMEE1OTBD
MDBGRUJDRjMgLyogUnVuTG9vcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREYyNjFEMEE1
OTBDMDBGRUJDRjMgLyogU2F0dXJhdGVkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUEzNTI0QUUxRDYzQTRGQjAwMzE3MjlCIC8qIFNjb3BlLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUZFMDVGQUVGMUZFMDY0NUIwMDA5MzIzMCAvKiBQb2lzb25lZC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3QzgzREYxMjFEMEE1OTBDMDBGRUJDRjMgLyogU2NvcGVkTGFtYmRh
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERjNEMUQwQTU5MEMwMEZFQkNGMyAvKiBTZXRG
b3JTY29wZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREYyQTFEMEE1OTBDMDBGRUJDRjMg
LyogU0hBMS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0NvbnN0RXhwclBvaXNvbmVkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9Db25zdEV4cHJQb2lzb25lZC5jcHAJKG5vbmV4aXN0ZW50KQorKysg
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29uc3RFeHByUG9pc29uZWQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMzUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiUmVmTG9n
Z2VyLmgiCisjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVkZSA8d3RmL1BvaXNvbmVkLmg+CisKK25h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIGNvbnN0IHVpbnQzMl90IFBvaXNvbkEg
PSAweGFhYWE7CitzdGF0aWMgY29uc3QgdWludDMyX3QgUG9pc29uQiA9IDB4YmJiYjsKKworLy8g
Rm9yIHRoZXNlIHRlc3RzLCB3ZSBuZWVkIGEgYmFzZSBjbGFzcyBhbmQgYSBkZXJpdmVkIGNsYXNz
LiBGb3IgdGhpcyBwdXJwb3NlLAorLy8gd2UgcmV1c2UgdGhlIFJlZkxvZ2dlciBhbmQgRGVyaXZl
ZFJlZkxvZ2dlciBjbGFzc2VzLgorCitURVNUKFdURl9Db25zdEV4cHJQb2lzb25lZCwgQmFzaWMp
Cit7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CisKKyAgICBDb25zdEV4cHJQb2lzb25l
ZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBlbXB0eTsKKyAgICBBU1NFUlRfRVEobnVsbHB0ciwgZW1w
dHkudW5wb2lzb25lZCgpKTsKKworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9p
c29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCAmKnB0cik7CisgICAgICAgIEFTU0VS
VF9FUSgmYS5uYW1lLCAmcHRyLT5uYW1lKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0
RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0ciA9ICZhOworICAgICAgICBBU1NF
UlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29u
c3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAgICAgQ29u
c3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIocDEpOworICAgICAgICBDb25z
dEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwMyhwMSk7CisgICAgICAgIEFTU0VS
VF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBv
aXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisKKyAg
ICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VS
VF9UUlVFKHAxLmJpdHMoKSAhPSBwMy5iaXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAg
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAgICAg
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIgPSBwMTsKKyAgICAgICAg
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDMgPSBwMTsKKyAgICAgICAg
QVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAy
LnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsK
KworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKyAgICAgICAg
QVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAzLmJpdHMoKSk7CisgICAgfQorCisgICAgeworICAg
ICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSA9ICZhOworICAg
ICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9IFdURk1vdmUo
cDEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFT
U0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBDb25zdEV4cHJQb2lzb25l
ZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMyA9ICZhOworICAgICAgICBDb25zdEV4cHJQb2lzb25l
ZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCA9IFdURk1vdmUocDMpOworICAgICAgICBBU1NFUlRf
RVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDQudW5wb2lz
b25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsK
KyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQorCisg
ICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSA9
ICZhOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMihX
VEZNb3ZlKHAxKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAg
ICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOworCisgICAgICAgIENvbnN0RXhw
clBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzID0gJmE7CisgICAgICAgIENvbnN0RXhw
clBvaXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KFdURk1vdmUocDMpKTsKKyAgICAgICAg
QVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHA0
LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJp
dHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAg
IH0KKworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgRGVyaXZlZFJl
ZkxvZ2dlcio+IHAxID0gJmE7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJl
ZkxvZ2dlcio+IHAyID0gcDE7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJl
ZkxvZ2dlcio+IHAzID0gcDE7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgp
KTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NF
UlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0
cygpID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBwMy5i
aXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29u
QSwgRGVyaXZlZFJlZkxvZ2dlcio+IHAxID0gJmE7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVk
PFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgIEFTU0VSVF9F
USgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNv
bmVkKCkpOworCisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIERlcml2ZWRSZWZM
b2dnZXIqPiBwMyA9ICZhOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZM
b2dnZXIqPiBwNCA9IFdURk1vdmUocDMpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9p
c29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDQudW5wb2lzb25lZCgpKTsKKworICAg
ICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJU
X1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBD
b25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOworICAgICAgICBB
U1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICBwdHIuY2xlYXIoKTsKKyAg
ICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0KK30KKwor
VEVTVChXVEZfQ29uc3RFeHByUG9pc29uZWQsIEFzc2lnbm1lbnQpCit7CisgICAgRGVyaXZlZFJl
ZkxvZ2dlciBhKCJhIik7CisgICAgUmVmTG9nZ2VyIGIoImIiKTsKKyAgICBEZXJpdmVkUmVmTG9n
Z2VyIGMoImMiKTsKKworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwg
UmVmTG9nZ2VyKj4gcDEoJmEpOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBS
ZWZMb2dnZXIqPiBwMigmYik7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgp
KTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBwMSA9
IHAyOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFT
U0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBDb25zdEV4cHJQb2lzb25l
ZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygmYSk7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVk
PFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51
bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7Cisg
ICAgICAgIHAzID0gcDQ7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDMudW5wb2lzb25lZCgpKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VS
VF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5i
aXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBv
aXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgm
YSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHB0ciA9ICZiOworICAgICAgICBBU1NFUlRf
RVEoJmIsIHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29uc3RF
eHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcHRyID0gbnVsbHB0cjsKKyAgICAg
ICAgQVNTRVJUX0VRKG51bGxwdHIsIHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0KKworICAgIHsK
KyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOwor
ICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMigmYik7Cisg
ICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VR
KCZiLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBwMSA9IFdURk1vdmUocDIpOworICAgICAg
ICBBU1NFUlRfRVEoJmIsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwg
cDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBS
ZWZMb2dnZXIqPiBwMygmYSk7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJl
ZkxvZ2dlcio+IHA0KCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkp
OworICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIHAzID0g
V1RGTW92ZShwNCk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDMudW5wb2lzb25lZCgpKTsKKyAg
ICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9U
UlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRz
KCkgIT0gcDQuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNv
bmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29u
ZWQ8UG9pc29uQSwgRGVyaXZlZFJlZkxvZ2dlcio+IHAyKCZjKTsKKyAgICAgICAgQVNTRVJUX0VR
KCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHAyLnVucG9pc29u
ZWQoKSk7CisgICAgICAgIHAxID0gcDI7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDEudW5wb2lz
b25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMi51bnBvaXNvbmVkKCkpOworCisgICAg
ICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKKyAgICAg
ICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgRGVyaXZlZFJlZkxvZ2dlcio+IHA0KCZjKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRf
RVEoJmMsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIHAzID0gcDQ7CisgICAgICAgIEFTU0VS
VF9FUSgmYywgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwNC51bnBv
aXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkp
OworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9CisK
KyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0
cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAg
IHB0ciA9ICZjOworICAgICAgICBBU1NFUlRfRVEoJmMsIHB0ci51bnBvaXNvbmVkKCkpOworICAg
IH0KKworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2Vy
Kj4gcDEoJmEpOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBEZXJpdmVkUmVm
TG9nZ2VyKj4gcDIoJmMpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7
CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDEgPSBX
VEZNb3ZlKHAyKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMS51bnBvaXNvbmVkKCkpOworICAg
ICAgICBBU1NFUlRfRVEoJmMsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQ29uc3RFeHBy
UG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOworICAgICAgICBDb25zdEV4cHJQ
b2lzb25lZDxQb2lzb25CLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDQoJmMpOworICAgICAgICBBU1NF
UlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDQudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgcDMgPSBXVEZNb3ZlKHA0KTsKKyAgICAgICAgQVNTRVJUX0VR
KCZjLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHA0LnVucG9pc29u
ZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7Cisg
ICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgIH0KKworICAg
IHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZh
KTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcHRy
ID0gcHRyOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0K
KworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4g
cHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyNpZiBD
T01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNs
YW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bmtub3duLXByYWdtYXMiCisjcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgaWdub3JlZCAiLVdzZWxmLW1vdmUiCisjZW5kaWYKKyAgICAgICAgcHRyID0g
V1RGTW92ZShwdHIpOworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9z
dGljIHBvcAorI2VuZGlmCisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7
CisgICAgfQorfQorCitURVNUKFdURl9Db25zdEV4cHJQb2lzb25lZCwgU3dhcCkKK3sKKyAgICBS
ZWZMb2dnZXIgYSgiYSIpOworICAgIFJlZkxvZ2dlciBiKCJiIik7CisKKyAgICB7CisgICAgICAg
IENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKKyAgICAgICAg
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoJmIpOworICAgICAgICBB
U1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIu
dW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDEuc3dhcChwMik7CisgICAgICAgIEFTU0VSVF9FUSgm
YiwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVk
KCkpOworCisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAz
KCZhKTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQo
JmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFT
U0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDMuc3dhcChwNCk7CisgICAg
ICAgIEFTU0VSVF9FUSgmYiwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZh
LCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBw
Mi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsK
KyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAzLmJpdHMoKSk7CisgICAgICAgIEFT
U0VSVF9UUlVFKHAyLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAg
ICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOworICAgICAg
ICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMigmYik7CisgICAgICAg
IEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBw
Mi51bnBvaXNvbmVkKCkpOworICAgICAgICBzd2FwKHAxLCBwMik7CisgICAgICAgIEFTU0VSVF9F
USgmYiwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNv
bmVkKCkpOworCisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+
IHAzKCZhKTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4g
cDQoJmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAg
IEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAgc3dhcChwMywgcDQpOwor
ICAgICAgICBBU1NFUlRfRVEoJmIsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9F
USgmYSwgcDQudW5wb2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkg
IT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMo
KSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMy5iaXRzKCkpOworICAgICAg
ICBBU1NFUlRfVFJVRShwMi5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9Cit9CisKK3N0YXRp
YyBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwb2lzb25lZFB0ckZvbyhS
ZWZMb2dnZXImIGxvZ2dlcikKK3sKKyAgICByZXR1cm4gQ29uc3RFeHByUG9pc29uZWQ8UG9pc29u
QSwgUmVmTG9nZ2VyKj4oJmxvZ2dlcik7Cit9CisKK1RFU1QoV1RGX0NvbnN0RXhwclBvaXNvbmVk
LCBSZXR1cm5WYWx1ZSkKK3sKKyAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKKworICAgIHsK
KyAgICAgICAgYXV0byBwdHIgPSBwb2lzb25lZFB0ckZvbyhhKTsKKyAgICAgICAgQVNTRVJUX0VR
KCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCAmKnB0cik7Cisg
ICAgICAgIEFTU0VSVF9FUSgmYS5uYW1lLCAmcHRyLT5uYW1lKTsKKyAgICB9Cit9CisKK30gLy8g
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvUG9pc29uZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1BvaXNvbmVkLmNwcAkobm9uZXhpc3RlbnQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9Qb2lzb25lZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNjAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpbmNsdWRlICJSZWZMb2dnZXIuaCIKKyNpbmNsdWRlIDx3dGYvUG9pc29u
ZWQuaD4KKworI2lmIF9fY3BsdXNwbHVzIDwgMjAxNDAyTEwKKyNlcnJvciAiVG9vbGNoYWluIGlz
IG5vdCBzdXBwb3J0aW5nIEMrKyAxNCIKKyNlbmRpZgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SSB7CisKK2V4dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3QgZ190ZXN0UG9pc29uQTsK
K2V4dGVybiAiQyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3QgZ190ZXN0UG9pc29uQjsKK2V4dGVy
biB2b2lkIGluaXRpYWxpemVUZXN0UG9pc29uKCk7CisKKy8vIEZvciB0aGVzZSB0ZXN0cywgd2Ug
bmVlZCBhIGJhc2UgY2xhc3MgYW5kIGEgZGVyaXZlZCBjbGFzcy4gRm9yIHRoaXMgcHVycG9zZSwK
Ky8vIHdlIHJldXNlIHRoZSBSZWZMb2dnZXIgYW5kIERlcml2ZWRSZWZMb2dnZXIgY2xhc3Nlcy4K
KworVEVTVChXVEZfUG9pc29uZWQsIEJhc2ljKQoreworICAgIGluaXRpYWxpemVUZXN0UG9pc29u
KCk7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CisKKyAgICBQb2lzb25lZDxnX3Rlc3RQ
b2lzb25BLCBSZWZMb2dnZXIqPiBlbXB0eTsKKyAgICBBU1NFUlRfRVEobnVsbHB0ciwgZW1wdHku
dW5wb2lzb25lZCgpKTsKKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwg
UmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25l
ZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCAmKnB0cik7CisgICAgICAgIEFTU0VSVF9FUSgm
YS5uYW1lLCAmcHRyLT5uYW1lKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdf
dGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0ciA9ICZhOworICAgICAgICBBU1NFUlRfRVEoJmEs
IHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190
ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0
UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIocDEpOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lz
b25CLCBSZWZMb2dnZXIqPiBwMyhwMSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lz
b25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAg
ICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUo
cDEuYml0cygpID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAh
PSBwMy5iaXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9p
c29uQSwgUmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29u
QSwgUmVmTG9nZ2VyKj4gcDIgPSBwMTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwg
UmVmTG9nZ2VyKj4gcDMgPSBwMTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVk
KCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFT
U0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5i
aXRzKCkgPT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAz
LmJpdHMoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25B
LCBSZWZMb2dnZXIqPiBwMSA9ICZhOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBS
ZWZMb2dnZXIqPiBwMiA9IFdURk1vdmUocDEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVu
cG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKKwor
ICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMyA9ICZhOworICAg
ICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCA9IFdURk1vdmUocDMp
OworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VS
VF9FUSgmYSwgcDQudW5wb2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRz
KCkgPT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJp
dHMoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBS
ZWZMb2dnZXIqPiBwMSA9ICZhOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZM
b2dnZXIqPiBwMihXVEZNb3ZlKHAxKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lz
b25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOworCisgICAg
ICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzID0gJmE7CisgICAgICAg
IFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KFdURk1vdmUocDMpKTsKKyAg
ICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEo
JmEsIHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09
IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkp
OworICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgRGVyaXZl
ZFJlZkxvZ2dlcio+IHAxID0gJmE7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJl
ZkxvZ2dlcio+IHAyID0gcDE7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxv
Z2dlcio+IHAzID0gcDE7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRf
RVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygp
ID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBwMy5iaXRz
KCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgRGVy
aXZlZFJlZkxvZ2dlcio+IHAxID0gJmE7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEs
IFJlZkxvZ2dlcio+IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEu
dW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOwor
CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMyA9
ICZhOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCA9IFdU
Rk1vdmUocDMpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAg
ICAgIEFTU0VSVF9FUSgmYSwgcDQudW5wb2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJV
RShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygp
ICE9IHA0LmJpdHMoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQ
b2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51
bnBvaXNvbmVkKCkpOworICAgICAgICBwdHIuY2xlYXIoKTsKKyAgICAgICAgQVNTRVJUX0VRKG51
bGxwdHIsIHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0KK30KKworVEVTVChXVEZfUG9pc29uZWQs
IEFzc2lnbm1lbnQpCit7CisgICAgaW5pdGlhbGl6ZVRlc3RQb2lzb24oKTsKKyAgICBEZXJpdmVk
UmVmTG9nZ2VyIGEoImEiKTsKKyAgICBSZWZMb2dnZXIgYigiYiIpOworICAgIERlcml2ZWRSZWZM
b2dnZXIgYygiYyIpOworCisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBS
ZWZMb2dnZXIqPiBwMSgmYSk7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxv
Z2dlcio+IHAyKCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwor
ICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHAxID0gcDI7
CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOworCisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNv
bkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwg
UmVmTG9nZ2VyKj4gcDQoJmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQo
KSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDMg
PSBwNDsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBB
U1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEu
Yml0cygpID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBw
NC5iaXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29u
QSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lz
b25lZCgpKTsKKyAgICAgICAgcHRyID0gJmI7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcHRyLnVu
cG9pc29uZWQoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lz
b25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBv
aXNvbmVkKCkpOworICAgICAgICBwdHIgPSBudWxscHRyOworICAgICAgICBBU1NFUlRfRVEobnVs
bHB0ciwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBQb2lzb25l
ZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7CisgICAgICAgIFBvaXNvbmVkPGdf
dGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBw
MS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7
CisgICAgICAgIHAxID0gV1RGTW92ZShwMik7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDEudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOworCisg
ICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKKyAgICAg
ICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQoJmIpOworICAgICAgICBB
U1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDQu
dW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDMgPSBXVEZNb3ZlKHA0KTsKKyAgICAgICAgQVNTRVJU
X0VRKCZiLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9p
c29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7
CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgIH0KKwor
ICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEp
OworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDIo
JmMpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFT
U0VSVF9FUSgmYywgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDEgPSBwMjsKKyAgICAgICAg
QVNTRVJUX0VRKCZjLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHAy
LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9n
Z2VyKj4gcDMoJmEpOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBEZXJpdmVkUmVm
TG9nZ2VyKj4gcDQoJmMpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7
CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDMgPSBw
NDsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NF
UlRfRVEoJmMsIHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0
cygpID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5i
aXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwg
UmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25l
ZCgpKTsKKyAgICAgICAgcHRyID0gJmM7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcHRyLnVucG9p
c29uZWQoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25B
LCBSZWZMb2dnZXIqPiBwMSgmYSk7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIERl
cml2ZWRSZWZMb2dnZXIqPiBwMigmYyk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lz
b25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAg
ICBwMSA9IFdURk1vdmUocDIpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHAxLnVucG9pc29uZWQo
KSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBQ
b2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygmYSk7CisgICAgICAgIFBvaXNv
bmVkPGdfdGVzdFBvaXNvbkIsIERlcml2ZWRSZWZMb2dnZXIqPiBwNCgmYyk7CisgICAgICAgIEFT
U0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwNC51
bnBvaXNvbmVkKCkpOworICAgICAgICBwMyA9IFdURk1vdmUocDQpOworICAgICAgICBBU1NFUlRf
RVEoJmMsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDQudW5wb2lz
b25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsK
KyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQorCisg
ICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEp
OworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICBwdHIg
PSBwdHI7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgfQor
CisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIo
JmEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworI2lmIENPTVBJ
TEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcg
ZGlhZ25vc3RpYyBpZ25vcmVkICItV3Vua25vd24tcHJhZ21hcyIKKyNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBpZ25vcmVkICItV3NlbGYtbW92ZSIKKyNlbmRpZgorICAgICAgICBwdHIgPSBXVEZN
b3ZlKHB0cik7CisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMg
cG9wCisjZW5kaWYKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAg
ICB9Cit9CisKK1RFU1QoV1RGX1BvaXNvbmVkLCBTd2FwKQoreworICAgIGluaXRpYWxpemVUZXN0
UG9pc29uKCk7CisgICAgUmVmTG9nZ2VyIGEoImEiKTsKKyAgICBSZWZMb2dnZXIgYigiYiIpOwor
CisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgm
YSk7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKCZiKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRf
RVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHAxLnN3YXAocDIpOworICAgICAgICBB
U1NFUlRfRVEoJmIsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIu
dW5wb2lzb25lZCgpKTsKKworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dn
ZXIqPiBwMygmYSk7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+
IHA0KCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAg
ICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIHAzLnN3YXAocDQpOwor
ICAgICAgICBBU1NFUlRfRVEoJmIsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9F
USgmYSwgcDQudW5wb2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkg
IT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMo
KSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMy5iaXRzKCkpOworICAgICAg
ICBBU1NFUlRfVFJVRShwMi5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9CisKKyAgICB7Cisg
ICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKKyAgICAg
ICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoJmIpOworICAgICAgICBB
U1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIu
dW5wb2lzb25lZCgpKTsKKyAgICAgICAgc3dhcChwMSwgcDIpOworICAgICAgICBBU1NFUlRfRVEo
JmIsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25l
ZCgpKTsKKworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygm
YSk7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KCZiKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRf
RVEoJmIsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIHN3YXAocDMsIHA0KTsKKyAgICAgICAg
QVNTRVJUX0VRKCZiLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHA0
LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAyLmJp
dHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAg
ICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDMuYml0cygpKTsKKyAgICAgICAgQVNTRVJU
X1RSVUUocDIuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQorfQorCitzdGF0aWMgUG9pc29u
ZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcG9pc29uZWRQdHJGb28oUmVmTG9nZ2VyJiBs
b2dnZXIpCit7CisgICAgcmV0dXJuIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+
KCZsb2dnZXIpOworfQorCitURVNUKFdURl9Qb2lzb25lZCwgUmV0dXJuVmFsdWUpCit7CisgICAg
aW5pdGlhbGl6ZVRlc3RQb2lzb24oKTsKKyAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKKwor
ICAgIHsKKyAgICAgICAgYXV0byBwdHIgPSBwb2lzb25lZFB0ckZvbyhhKTsKKyAgICAgICAgQVNT
RVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCAmKnB0
cik7CisgICAgICAgIEFTU0VSVF9FUSgmYS5uYW1lLCAmcHRyLT5uYW1lKTsKKyAgICB9Cit9CisK
K30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvUG9pc29uZWREYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZERhdGEuY3BwCShub25leGlzdGVudCkKKysrIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkRGF0YS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgPG11dGV4PgorI2luY2x1ZGUg
PHd0Zi9Qb2lzb25lZC5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK2V4dGVybiAi
QyIgSlNfRVhQT1JUREFUQSB1aW50cHRyX3QgZ190ZXN0UG9pc29uQTsKK2V4dGVybiAiQyIgSlNf
RVhQT1JUREFUQSB1aW50cHRyX3QgZ190ZXN0UG9pc29uQjsKK2V4dGVybiB2b2lkIGluaXRpYWxp
emVUZXN0UG9pc29uKCk7CisKK3VpbnRwdHJfdCBnX3Rlc3RQb2lzb25BOwordWludHB0cl90IGdf
dGVzdFBvaXNvbkI7CisKK3ZvaWQgaW5pdGlhbGl6ZVRlc3RQb2lzb24oKQoreworICAgIHN0YXRp
YyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uo
aW5pdGlhbGl6ZU9uY2VGbGFnLCBbXSB7CisgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBnZXQgMiBk
aWZmZXJlbnQgcG9pc29uIHZhbHVlcy4KKyAgICAgICAgZ190ZXN0UG9pc29uQSA9IG1ha2VQb2lz
b24oKTsKKyAgICAgICAgd2hpbGUgKCFnX3Rlc3RQb2lzb25CIHx8IGdfdGVzdFBvaXNvbkIgPT0g
Z190ZXN0UG9pc29uQSkKKyAgICAgICAgICAgIGdfdGVzdFBvaXNvbkIgPSBtYWtlUG9pc29uKCk7
CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329187</attachid>
            <date>2017-12-12 17:49:16 -0800</date>
            <delta_ts>2017-12-12 18:02:06 -0800</delta_ts>
            <desc>test for EWS.</desc>
            <filename>bug-180724b.patch</filename>
            <type>text/plain</type>
            <size>44060</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI1ODA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDE3LTEyLTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBG
aWxsIG91dCBzb21lIFBvaXNvbmVkIEFQSXMsIGZpeCBzb21lIGJ1Z3MsIGFuZCBhZGQgc29tZSB0
ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
MDcyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYwMDY4ODQ+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgSkYgQmFzdGllbi4KKworICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlv
blRhYmxlLmg6CisKIDIwMTctMTItMDQgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAK
ICAgICAgICAgV2ViIEluc3BlY3RvcjogbW9kZXJuaXplIEluamVjdGVkU2NyaXB0IGEgYml0Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFi
bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVUcmFuc2l0aW9uVGFibGUuaAkocmV2aXNpb24gMjI1ODA3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMTg3LDggKzE4Nyw4IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBmcmll
bmQgY2xhc3MgU2luZ2xlU2xvdFRyYW5zaXRpb25XZWFrT3duZXI7Ci0gICAgdXNpbmcgUG9pc29u
ZWRUcmFuc2l0aW9uTWFwUHRyID0gSW50MzJQb2lzb25lZDxUcmFuc2l0aW9uTWFwUG9pc29uLCBU
cmFuc2l0aW9uTWFwKj47Ci0gICAgdXNpbmcgUG9pc29uZWRXZWFrSW1wbFB0ciA9IEludDMyUG9p
c29uZWQ8V2Vha0ltcGxQb2lzb24sIFdlYWtJbXBsKj47CisgICAgdXNpbmcgUG9pc29uZWRUcmFu
c2l0aW9uTWFwUHRyID0gQ29uc3RFeHByUG9pc29uZWQ8VHJhbnNpdGlvbk1hcFBvaXNvbiwgVHJh
bnNpdGlvbk1hcCo+OworICAgIHVzaW5nIFBvaXNvbmVkV2Vha0ltcGxQdHIgPSBDb25zdEV4cHJQ
b2lzb25lZDxXZWFrSW1wbFBvaXNvbiwgV2Vha0ltcGwqPjsKIAogICAgIGJvb2wgaXNVc2luZ1Np
bmdsZVNsb3QoKSBjb25zdAogICAgIHsKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjU4MDcpCisrKyBTb3Vy
Y2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDE3LTEy
LTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBGaWxsIG91dCBz
b21lIFBvaXNvbmVkIEFQSXMsIGZpeCBzb21lIGJ1Z3MsIGFuZCBhZGQgc29tZSB0ZXN0cy4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDcyNAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMzYwMDY4ODQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSkYg
QmFzdGllbi4KKworICAgICAgICBBbHNvIHJlbmFtZSBJbnQzMlBvaXNvbmVkIHRvIENvbnN0RXhw
clBvaXNvbmVkLiAgVGhlIGtleSBpdCB0YWtlcyBpcyBhY3R1YWxseSBhCisgICAgICAgIHVpbnQz
Ml90LiAgU28sIEludDMyIGlzIHJlYWxseSBhIG1pc25vbWVyLiAgSW4gYWRkaXRpb24sIHRoZSBr
ZXkgbmVlZHMgdG8gYmUgYQorICAgICAgICBjb25zdGV4cHIuICBTbywgQ29uc3RFeHByUG9pc29u
ZWQgaXMgYSBiZXR0ZXIgbmFtZSBmb3IgaXQuCisKKyAgICAgICAgKiB3dGYvUG9pc29uZWQuY3Bw
OgorICAgICAgICAoV1RGOjptYWtlUG9pc29uKToKKyAgICAgICAgKiB3dGYvUG9pc29uZWQuaDoK
KyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsSGVscGVyOjphc1JlZmVyZW5jZSk6CisgICAgICAg
IChXVEY6OlBvaXNvbmVkSW1wbDo6UG9pc29uZWRJbXBsKToKKyAgICAgICAgKFdURjo6UG9pc29u
ZWRJbXBsOjpjbGVhcik6CisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6b3BlcmF0b3IqIGNv
bnN0KToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvci0+IGNvbnN0KToKKyAg
ICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdU
Rjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKFdURjo6UG9pc29u
ZWRJbXBsOjpvcGVyYXRvcjwgY29uc3QpOgorICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6Om9w
ZXJhdG9yPD0gY29uc3QpOgorICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6Om9wZXJhdG9yPiBj
b25zdCk6CisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6b3BlcmF0b3I+PSBjb25zdCk6Cisg
ICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdURjo6UG9p
c29uZWRJbXBsOjpzd2FwKToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpleGNoYW5nZSk6
CisgICAgICAgIChXVEY6OnN3YXApOgorICAgICAgICAoV1RGOjptYWtlUG9pc29uKToKKyAgICAg
ICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvcj09KTogRGVsZXRlZC4KKwogMjAxNy0xMi0x
MiAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0VTTmV4dF1b
QmlnSW50XSBJbXBsZW1lbnQgQmlnSW50IGxpdGVyYWxzIGFuZCBKU0JpZ0ludApJbmRleDogU291
cmNlL1dURi93dGYvUG9pc29uZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1Bv
aXNvbmVkLmNwcAkocmV2aXNpb24gMjI1ODA3KQorKysgU291cmNlL1dURi93dGYvUG9pc29uZWQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXVEYgewogdWlu
dHB0cl90IG1ha2VQb2lzb24oKQogewogICAgIHVpbnRwdHJfdCBrZXkgPSBjcnlwdG9ncmFwaGlj
YWxseVJhbmRvbU51bWJlcigpOwotI2lmIFVTRShKU1ZBTFVFNjQpICYmICFPUyhXSU5ET1dTKQor
I2lmIEVOQUJMRShQT0lTT04pCiAgICAga2V5ID0gKGtleSA8PCAzMikgXiAoc3RhdGljX2Nhc3Q8
dWludHB0cl90PihjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpKSA8PCAzKTsKICAgICAv
LyBFbnN1cmUgdGhhdCB0aGUgcG9pc29uZWQgYml0cyAocG9pbnRlciBeIGtleSkgZG8gbm90IG1h
a2UgYSB2YWxpZCBwb2ludGVyIGFuZAogICAgIC8vIGNhbm5vdCBiZSAwLiBXZSBlbnN1cmUgdGhh
dCBpdCBpcyB6ZXJvIHNvIHRoYXQgdGhlIHBvaXNvbmVkIGJpdHMgY2FuIGFsc28gYmUKQEAgLTUx
LDQgKzUxLDMgQEAgdWludHB0cl90IG1ha2VQb2lzb24oKQogfQogCiB9IC8vIG5hbWVzcGFjZSBX
VEYKLQpJbmRleDogU291cmNlL1dURi93dGYvUG9pc29uZWQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi9Qb2lzb25lZC5oCShyZXZpc2lvbiAyMjU4MDcpCisrKyBTb3VyY2UvV1RGL3d0
Zi9Qb2lzb25lZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMSArMjcsMTQgQEAKIAogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKKyNkZWZpbmUgRU5BQkxFX1BPSVNPTiAxCiAjZGVmaW5l
IEVOQUJMRV9QT0lTT05fQVNTRVJUUyAwCiAKIC8vIE5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIGZv
ciAzMi1iaXQgb3IgT1MoV0lORE9XUykgYnVpbGRzIChiZWNhdXNlIG9mIG1pc3NpbmcgbGxpbnQg
c3VwcG9ydCkuCiAvLyBNYWtlIHN1cmUgaXQncyBkaXNhYmxlZC4KICNpZiBVU0UoSlNWQUxVRTMy
XzY0KSB8fCBPUyhXSU5ET1dTKQorI3VuZGVmIEVOQUJMRV9QT0lTT04KKyNkZWZpbmUgRU5BQkxF
X1BPSVNPTiAwCiAjdW5kZWYgRU5BQkxFX1BPSVNPTl9BU1NFUlRTCiAjZGVmaW5lIEVOQUJMRV9Q
T0lTT05fQVNTRVJUUyAwCiAjZW5kaWYKQEAgLTQwLDE3ICs0Myw0NyBAQCBuYW1lc3BhY2UgV1RG
IHsKIAogdXNpbmcgUG9pc29uZWRCaXRzID0gdWludHB0cl90OwogCituYW1lc3BhY2UgUG9pc29u
ZWRJbXBsSGVscGVyIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBpc0Z1bmN0aW9u
UG9pbnRlciA6IHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgc3RkOjppc19mdW5jdGlvbjx0
eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPFQ+Ojp0eXBlPjo6dmFsdWU+IHsgfTsKKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBpc1ZvaWRQb2ludGVyIDogc3RkOjppbnRlZ3JhbF9j
b25zdGFudDxib29sLCBzdGQ6OmlzX3ZvaWQ8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxU
Pjo6dHlwZT46OnZhbHVlPiB7IH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgaXND
b252ZXJ0aWJsZVRvUmVmZXJlbmNlIDogc3RkOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCAhaXNG
dW5jdGlvblBvaW50ZXI8VD46OnZhbHVlICYmICFpc1ZvaWRQb2ludGVyPFQ+Ojp2YWx1ZT4geyB9
OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgordHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDwhaXND
b252ZXJ0aWJsZVRvUmVmZXJlbmNlPFQ+Ojp2YWx1ZSwgaW50PiYKK2FzUmVmZXJlbmNlKFQpIHsg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgor
dHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxpc0NvbnZlcnRpYmxlVG9SZWZlcmVuY2U8VD46OnZh
bHVlLCB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPFQ+Ojp0eXBlPiYKK2FzUmVmZXJlbmNl
KFQgcHRyKSB7IHJldHVybiAqcHRyOyB9CisKK30gLy8gbmFtZXNwYWNlIFBvaXNvbmVkSW1wbEhl
bHBlcgorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBlLCBLZXlUeXBlIGtleSwgdHlwZW5hbWUg
VCwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfcG9pbnRlcjxUPjo6dmFsdWU+
PgogY2xhc3MgUG9pc29uZWRJbXBsIHsKIHB1YmxpYzoKICAgICBQb2lzb25lZEltcGwoKSB7IH0K
IAotICAgIGV4cGxpY2l0IFBvaXNvbmVkSW1wbChUIHB0cikKKyAgICBQb2lzb25lZEltcGwoVCBw
dHIpCiAgICAgICAgIDogbV9wb2lzb25lZEJpdHMocG9pc29uKHB0cikpCiAgICAgeyB9CiAKICAg
ICBQb2lzb25lZEltcGwoY29uc3QgUG9pc29uZWRJbXBsJikgPSBkZWZhdWx0OwogCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgSzIsIEsyIGsyLCB0eXBlbmFtZSBUMj4KKyAgICBQb2lzb25lZEltcGwo
Y29uc3QgUG9pc29uZWRJbXBsPEsyLCBrMiwgVDI+JiBvdGhlcikKKyAgICAgICAgOiBtX3BvaXNv
bmVkQml0cyhwb2lzb248VD4ob3RoZXIudW5wb2lzb25lZCgpKSkKKyAgICB7IH0KKworICAgIFBv
aXNvbmVkSW1wbChQb2lzb25lZEltcGwmJiBvdGhlcikKKyAgICAgICAgOiBtX3BvaXNvbmVkQml0
cyhXVEZNb3ZlKG90aGVyLm1fcG9pc29uZWRCaXRzKSkKKyAgICB7IH0KKwogICAgIGV4cGxpY2l0
IFBvaXNvbmVkSW1wbChQb2lzb25lZEJpdHMgcG9pc29uZWRCaXRzKQogICAgICAgICA6IG1fcG9p
c29uZWRCaXRzKHBvaXNvbmVkQml0cykKICAgICB7IH0KQEAgLTcyLDcgKzEwNSwxMCBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+CiAgICAgVSB1bnBvaXNvbmVkKCkgY29u
c3QgeyByZXR1cm4gdW5wb2lzb248VT4obV9wb2lzb25lZEJpdHMpOyB9CiAKLSAgICBBTFdBWVNf
SU5MSU5FIFQgb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIHVucG9pc29uPFQ+KG1fcG9pc29u
ZWRCaXRzKTsgfQorICAgIHZvaWQgY2xlYXIoKSB7IG1fcG9pc29uZWRCaXRzID0gMDsgfQorCisg
ICAgYXV0byYgb3BlcmF0b3IqKCkgY29uc3QgeyBBU1NFUlQobV9wb2lzb25lZEJpdHMpOyByZXR1
cm4gUG9pc29uZWRJbXBsSGVscGVyOjphc1JlZmVyZW5jZSh1bnBvaXNvbihtX3BvaXNvbmVkQml0
cykpOyB9CisgICAgQUxXQVlTX0lOTElORSBUIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiB1
bnBvaXNvbihtX3BvaXNvbmVkQml0cyk7IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBQ
b2lzb25lZEJpdHM+CiAgICAgVSBiaXRzKCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PFU+
KG1fcG9pc29uZWRCaXRzKTsgfQpAQCAtODAsNTYgKzExNiw5OSBAQCBwdWJsaWM6CiAgICAgYm9v
bCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9wb2lzb25lZEJpdHM7IH0KICAgICBleHBs
aWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX3BvaXNvbmVkQml0czsgfQog
Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBvaXNvbmVkSW1wbCYgYikgY29uc3QKKyAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgUG9pc29uZWRJbXBsJiBiKSBjb25zdCB7IHJldHVybiBtX3Bv
aXNvbmVkQml0cyA9PSBiLm1fcG9pc29uZWRCaXRzOyB9CisgICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFBvaXNvbmVkSW1wbCYgYikgY29uc3QgeyByZXR1cm4gbV9wb2lzb25lZEJpdHMgIT0gYi5t
X3BvaXNvbmVkQml0czsgfQorICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFBvaXNvbmVkSW1wbCYg
YikgY29uc3QgeyByZXR1cm4gbV9wb2lzb25lZEJpdHMgPCBiLm1fcG9pc29uZWRCaXRzOyB9Cisg
ICAgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFBvaXNvbmVkSW1wbCYgYikgY29uc3QgeyByZXR1cm4g
bV9wb2lzb25lZEJpdHMgPD0gYi5tX3BvaXNvbmVkQml0czsgfQorICAgIGJvb2wgb3BlcmF0b3I+
KGNvbnN0IFBvaXNvbmVkSW1wbCYgYikgY29uc3QgeyByZXR1cm4gbV9wb2lzb25lZEJpdHMgPiBi
Lm1fcG9pc29uZWRCaXRzOyB9CisgICAgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFBvaXNvbmVkSW1w
bCYgYikgY29uc3QgeyByZXR1cm4gbV9wb2lzb25lZEJpdHMgPj0gYi5tX3BvaXNvbmVkQml0czsg
fQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBvcGVyYXRvcj09KFUgYikgY29uc3Qg
eyByZXR1cm4gdW5wb2lzb25lZDxVPigpID09IGI7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBV
PiBib29sIG9wZXJhdG9yIT0oVSBiKSBjb25zdCB7IHJldHVybiB1bnBvaXNvbmVkPFU+KCkgIT0g
YjsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgb3BlcmF0b3I8KFUgYikgY29uc3Qg
eyByZXR1cm4gdW5wb2lzb25lZDxVPigpIDwgYjsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+
IGJvb2wgb3BlcmF0b3I8PShVIGIpIGNvbnN0IHsgcmV0dXJuIHVucG9pc29uZWQ8VT4oKSA8PSBi
OyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBvcGVyYXRvcj4oVSBiKSBjb25zdCB7
IHJldHVybiB1bnBvaXNvbmVkPFU+KCkgPiBiOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4g
Ym9vbCBvcGVyYXRvcj49KFUgYikgY29uc3QgeyByZXR1cm4gdW5wb2lzb25lZDxVPigpID49IGI7
IH0KKworICAgIFBvaXNvbmVkSW1wbCYgb3BlcmF0b3I9KFQgcHRyKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIG1fcG9pc29uZWRCaXRzID09IGIubV9wb2lzb25lZEJpdHM7CisgICAgICAgIG1fcG9p
c29uZWRCaXRzID0gcG9pc29uKHB0cik7CisgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9Cisg
ICAgUG9pc29uZWRJbXBsJiBvcGVyYXRvcj0oY29uc3QgUG9pc29uZWRJbXBsJikgPSBkZWZhdWx0
OwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUHRyVHlwZSA9IHZvaWQqLCB0eXBlbmFtZSA9IHR5
cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcG9pbnRlcjxQdHJUeXBlPjo6dmFsdWU+Ojp0
eXBlPgotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQdHJUeXBlIGIpCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgSzIsIEsyIGsyLCB0eXBlbmFtZSBUMj4KKyAgICBQb2lzb25lZEltcGwmIG9wZXJh
dG9yPShjb25zdCBQb2lzb25lZEltcGw8SzIsIGsyLCBUMj4mIG90aGVyKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHVucG9pc29uZWQ8UHRyVHlwZT4oKSA9PSBiOworICAgICAgICBtX3BvaXNvbmVk
Qml0cyA9IHBvaXNvbjxUPihvdGhlci51bnBvaXNvbmVkKCkpOworICAgICAgICByZXR1cm4gKnRo
aXM7CiAgICAgfQogCi0gICAgUG9pc29uZWRJbXBsJiBvcGVyYXRvcj0oVCBwdHIpCisgICAgdm9p
ZCBzd2FwKFBvaXNvbmVkSW1wbCYgbykKICAgICB7Ci0gICAgICAgIG1fcG9pc29uZWRCaXRzID0g
cG9pc29uKHB0cik7Ci0gICAgICAgIHJldHVybiAqdGhpczsKKyAgICAgICAgc3RkOjpzd2FwKG1f
cG9pc29uZWRCaXRzLCBvLm1fcG9pc29uZWRCaXRzKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBLMiwgSzIgazIsIHR5cGVuYW1lIFQyPgorICAgIHZvaWQgc3dhcChQb2lzb25lZElt
cGw8SzIsIGsyLCBUMj4mIG8pCisgICAgeworICAgICAgICBUIHQxID0gdGhpcy0+dW5wb2lzb25l
ZCgpOworICAgICAgICBUMiB0MiA9IG8udW5wb2lzb25lZCgpOworICAgICAgICBzdGQ6OnN3YXAo
dDEsIHQyKTsKKyAgICAgICAgbV9wb2lzb25lZEJpdHMgPSBwb2lzb24odDEpOworICAgICAgICBv
ID0gdDI7CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgVT4KKyAgICBUIGV4Y2hhbmdlKFUm
JiBuZXdWYWx1ZSkKKyAgICB7CisgICAgICAgIFQgb2xkVmFsdWUgPSB1bnBvaXNvbmVkKCk7Cisg
ICAgICAgIG1fcG9pc29uZWRCaXRzID0gcG9pc29uKHN0ZDo6Zm9yd2FyZDxVPihuZXdWYWx1ZSkp
OworICAgICAgICByZXR1cm4gb2xkVmFsdWU7CiAgICAgfQotICAgIFBvaXNvbmVkSW1wbCYgb3Bl
cmF0b3I9KGNvbnN0IFBvaXNvbmVkSW1wbCYpID0gZGVmYXVsdDsKIAogcHJpdmF0ZToKLSNpZiBV
U0UoSlNWQUxVRTY0KQorI2lmIEVOQUJMRShQT0lTT04pCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VT4KICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBQb2lzb25lZEJpdHMgcG9pc29uKFUgcHRyKSB7
IHJldHVybiBwdHIgPyBiaXR3aXNlX2Nhc3Q8UG9pc29uZWRCaXRzPihwdHIpIF4ga2V5IDogMDsg
fQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+
CiAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgVSB1bnBvaXNvbihQb2lzb25lZEJpdHMgcG9pc29u
ZWRCaXRzKSB7IHJldHVybiBwb2lzb25lZEJpdHMgPyBiaXR3aXNlX2Nhc3Q8VT4ocG9pc29uZWRC
aXRzIF4ga2V5KSA6IGJpdHdpc2VfY2FzdDxVPigwbGwpOyB9CiAjZWxzZQogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFU+CiAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUG9pc29uZWRCaXRzIHBvaXNv
bihVIHB0cikgeyByZXR1cm4gYml0d2lzZV9jYXN0PFBvaXNvbmVkQml0cz4ocHRyKTsgfQotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFU+CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+CiAgICAg
QUxXQVlTX0lOTElORSBzdGF0aWMgVSB1bnBvaXNvbihQb2lzb25lZEJpdHMgcG9pc29uZWRCaXRz
KSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8VT4ocG9pc29uZWRCaXRzKTsgfQogI2VuZGlmCiAKICAg
ICBQb2lzb25lZEJpdHMgbV9wb2lzb25lZEJpdHMgeyAwIH07CiB9OwogCi10ZW1wbGF0ZTx1aW50
cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4KLXVzaW5nIFBvaXNvbmVkID0gUG9pc29uZWRJbXBsPHVp
bnRwdHJfdCYsIGtleSwgVD47Cit0ZW1wbGF0ZTx0eXBlbmFtZSBLMSwgSzEgazEsIHR5cGVuYW1l
IFQxLCB0eXBlbmFtZSBLMiwgSzIgazIsIHR5cGVuYW1lIFQyPgoraW5saW5lIHZvaWQgc3dhcChQ
b2lzb25lZEltcGw8SzEsIGsxLCBUMT4mIGEsIFBvaXNvbmVkSW1wbDxLMiwgazIsIFQyPiYgYikK
K3sKKyAgICBhLnN3YXAoYik7Cit9CiAKLSNpZiBVU0UoSlNWQUxVRTY0KQotdGVtcGxhdGU8dWlu
dDMyX3Qga2V5LCB0eXBlbmFtZSBUPgotdXNpbmcgSW50MzJQb2lzb25lZCA9IFBvaXNvbmVkSW1w
bDx1aW50cHRyX3QsIHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oa2V5KSA8PCAzMiwgVD47CitXVEZf
RVhQT1JUX1BSSVZBVEUgdWludHB0cl90IG1ha2VQb2lzb24oKTsKKworaW5saW5lIGNvbnN0ZXhw
ciB1aW50cHRyX3QgbWFrZVBvaXNvbih1aW50MzJfdCBrZXkpCit7CisjaWYgRU5BQkxFKFBPSVNP
TikKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludHB0cl90PigweDgwMDAwMDAwIHwga2V5KSA8
PCAzMjsKICNlbHNlCi10ZW1wbGF0ZTx1aW50MzJfdCwgdHlwZW5hbWUgVD4KLXVzaW5nIEludDMy
UG9pc29uZWQgPSBQb2lzb25lZEltcGw8dWludHB0cl90LCAwLCBUPjsKKyAgICByZXR1cm4gKHZv
aWQpa2V5LCAwOwogI2VuZGlmCit9CiAKLVdURl9FWFBPUlRfUFJJVkFURSB1aW50cHRyX3QgbWFr
ZVBvaXNvbigpOwordGVtcGxhdGU8dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQ+Cit1c2luZyBQ
b2lzb25lZCA9IFBvaXNvbmVkSW1wbDx1aW50cHRyX3QmLCBrZXksIFQ+OworCit0ZW1wbGF0ZTx1
aW50MzJfdCBrZXksIHR5cGVuYW1lIFQ+Cit1c2luZyBDb25zdEV4cHJQb2lzb25lZCA9IFBvaXNv
bmVkSW1wbDx1aW50cHRyX3QsIG1ha2VQb2lzb24oa2V5KSwgVD47CiAKIH0gLy8gbmFtZXNwYWNl
IFdURgogCi11c2luZyBXVEY6OkludDMyUG9pc29uZWQ7Cit1c2luZyBXVEY6OkNvbnN0RXhwclBv
aXNvbmVkOwogdXNpbmcgV1RGOjpQb2lzb25lZDsKIHVzaW5nIFdURjo6UG9pc29uZWRCaXRzOwog
dXNpbmcgV1RGOjptYWtlUG9pc29uOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjI1ODE2KQorKysgVG9vbHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTctMTItMTIgIE1hcmsgTGFtICA8
bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEZpbGwgb3V0IHNvbWUgUG9pc29uZWQgQVBJ
cywgZml4IHNvbWUgYnVncywgYW5kIGFkZCBzb21lIHRlc3RzLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNzI0CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8zNjAwNjg4ND4KKworICAgICAgICBSZXZpZXdlZCBieSBKRiBCYXN0aWVuLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Db25zdEV4cHJQb2lzb25lZC5jcHA6IEFkZGVkLgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvUG9pc29uZWQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmluaXRp
YWxpemVUZXN0UG9pc29uKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkRGF0YS5jcHA6IEFkZGVkLgorCiAy
MDE3LTEyLTEyICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBNb2JpbGVNaW5pQnJvd3NlciB1c2luZyB0aGUgd3JvbmcgdG9vbGNoYWluCkluZGV4OiBUb29s
cy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIyNTgwNykKKysrIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTk1LDYgKzk1LDcgQEAg
c2V0KFRlc3RXVEZfU09VUkNFUwogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9D
aGVja2VkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0v
VGVzdHMvV1RGL0NvbmN1cnJlbnRQdHJIYXNoU2V0LmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9E
SVJ9L1Rlc3RzL1dURi9Db25kaXRpb24uY3BwCisgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVz
dHMvV1RGL0NvbnN0RXhwclBvaXNvbmVkLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rl
c3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVz
dHMvV1RGL0RhdGVNYXRoLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9E
ZXF1ZS5jcHAKQEAgLTEyMiw2ICsxMjMsOCBAQCBzZXQoVGVzdFdURl9TT1VSQ0VTCiAgICAgJHtU
RVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL09wdGlvbmFsLmNwcAogICAgICR7VEVTVFdFQktJ
VEFQSV9ESVJ9L1Rlc3RzL1dURi9PcHRpb25TZXQuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJ
Un0vVGVzdHMvV1RGL1BhcmtpbmdMb3QuY3BwCisgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVz
dHMvV1RGL1BvaXNvbmVkLmNwcAorICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9Q
b2lzb25lZERhdGEuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1ByaW9y
aXR5UXVldWUuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1JlZEJsYWNr
VHJlZS5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvUmVmLmNwcApJbmRl
eDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIyNTgwNykKKysrIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC03NTYsNiArNzU2LDkgQEAKIAkJRjZCN0JFOTcxNzQ2OUI5NjAwOEEzNDQ1IC8q
IGFzc29jaWF0ZS1mb3JtLWNvbnRyb2xzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjZCN0JFOTYxNzQ2OUI3RTAwOEEzNDQ1IC8qIGFz
c29jaWF0ZS1mb3JtLWNvbnRyb2xzLmh0bWwgKi87IH07CiAJCUY2RjQ5QzZCMTU1NDVDQTcwMDA3
RjM5RCAvKiBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlX0J1bmRsZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNkY0OUM2NjE1NTQ1QzhEMDAwN0Yz
OUQgLyogRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZV9CdW5kbGUuY3BwICovOyB9OwogCQlGNkZE
RERENjE0MjQxQzZGMDA0RjE3MjkgLyogcHVzaC1zdGF0ZS5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2RkREREQ1MTQyNDFDNDgwMDRG
MTcyOSAvKiBwdXNoLXN0YXRlLmh0bWwgKi87IH07CisJCUZFMDVGQUVGMUZFMDY0NUIwMDA5MzIz
MCAvKiBQb2lzb25lZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTA1RkFFRTFGRTA2NDNEMDAwOTMyMzAgLyogUG9pc29uZWQuY3BwICovOyB9Owor
CQlGRTA1RkFGMTFGRTA4Q0Q0MDAwOTMyMzAgLyogQ29uc3RFeHByUG9pc29uZWQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwNUZBRjAxRkUwOEND
RDAwMDkzMjMwIC8qIENvbnN0RXhwclBvaXNvbmVkLmNwcCAqLzsgfTsKKwkJRkUwNUZBRjMxRkUw
QjQyQjAwMDkzMjMwIC8qIFBvaXNvbmVkRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTA1RkFGMjFGRTBCM0NCMDAwOTMyMzAgLyogUG9pc29u
ZWREYXRhLmNwcCAqLzsgfTsKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBC
ZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwpAQCAtMTg1Nyw2ICsxODYwLDkg
QEAKIAkJRjZGNDlDNjcxNTU0NUM4RDAwMDdGMzlEIC8qIERPTVdpbmRvd0V4dGVuc2lvbk5vQ2Fj
aGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NV2luZG93RXh0
ZW5zaW9uTm9DYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2RkREREQy
MTQyNDFBRDQwMDRGMTcyOSAvKiBQcml2YXRlQnJvd3NpbmdQdXNoU3RhdGVOb0hpc3RvcnlDYWxs
YmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcml2YXRlQnJv
d3NpbmdQdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUY2RkREREQ1MTQyNDFDNDgwMDRGMTcyOSAvKiBwdXNoLXN0YXRlLmh0bWwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAicHVzaC1zdGF0ZS5odG1sIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRkUwNUZBRUUxRkUwNjQzRDAwMDkzMjMwIC8qIFBvaXNvbmVkLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvaXNvbmVkLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUwNUZBRjAxRkUwOENDRDAwMDkzMjMwIC8qIENv
bnN0RXhwclBvaXNvbmVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENvbnN0RXhwclBvaXNvbmVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUw
NUZBRjIxRkUwQjNDQjAwMDkzMjMwIC8qIFBvaXNvbmVkRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb2lzb25lZERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGRUI2Rjc0RTFCMkJBNDRFMDA5RTQ5MjIgLyogTmFrZWRQdHIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmFrZWRQdHIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwog
CkBAIC0yNjEzLDYgKzI2MTksNyBAQAogCQkJCUE3QTk2NkRBMTQwRUNDQzgwMDVFRjlCNCAvKiBD
aGVja2VkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwICovLAogCQkJCTBGMzBDQjVCMUZDRTE3OTIw
MDRCNTMyMyAvKiBDb25jdXJyZW50UHRySGFzaFNldC5jcHAgKi8sCiAJCQkJMEZFQUUzNjcxQjdE
MTlDQjAwQ0UxN0YyIC8qIENvbmRpdGlvbi5jcHAgKi8sCisJCQkJRkUwNUZBRjAxRkUwOENDRDAw
MDkzMjMwIC8qIENvbnN0RXhwclBvaXNvbmVkLmNwcCAqLywKIAkJCQk1MTcxNEVCOTFEMDg3NDE2
MDA0NzIzQzQgLyogQ3Jvc3NUaHJlYWRUYXNrLmNwcCAqLywKIAkJCQkyNkEyQzcyRTE1RTJFNzND
MDA1QjFBMTQgLyogQ1N0cmluZy5jcHAgKi8sCiAJCQkJN0FBMDIxQkExQUIwOUVBNzAwNTI5NTNG
IC8qIERhdGVNYXRoLmNwcCAqLywKQEAgLTI2NDYsNiArMjY1Myw4IEBACiAJCQkJMUFGREU2NTQx
OTUzQjJDMDAwQzQ4RkZBIC8qIE9wdGlvbmFsLmNwcCAqLywKIAkJCQlDRTUwRDhDODFDODY2NUNF
MDA3MkVBNUEgLyogT3B0aW9uU2V0LmNwcCAqLywKIAkJCQkwRkU0NDc5NzFCNzZGMUUzMDA5NDk4
RUIgLyogUGFya2luZ0xvdC5jcHAgKi8sCisJCQkJRkUwNUZBRUUxRkUwNjQzRDAwMDkzMjMwIC8q
IFBvaXNvbmVkLmNwcCAqLywKKwkJCQlGRTA1RkFGMjFGRTBCM0NCMDAwOTMyMzAgLyogUG9pc29u
ZWREYXRhLmNwcCAqLywKIAkJCQk1M0VDMjUzRjFFOTZCQzgwMDAwODMxQjkgLyogUHJpb3JpdHlR
dWV1ZS5jcHAgKi8sCiAJCQkJMEZDNkM0Q0IxNDEwMjdFMDAwNUI3RjBDIC8qIFJlZEJsYWNrVHJl
ZS5jcHAgKi8sCiAJCQkJOTNBNDI3QUExODBEQTI2NDAwQ0QyNEQ3IC8qIFJlZi5jcHAgKi8sCkBA
IC0zMTgwLDYgKzMxODksNyBAQAogCQkJCTZCRkQyOTRDMUQ1RTZDMUQwMDhFQzk2OCAvKiBIYXNo
Q291bnRlZFNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzNENjMxRDFGQ0I3NjIwMDAzMkVD
RDYgLyogSGFzaGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERUQyMUQwQTU5MEMwMEZF
QkNGMyAvKiBIYXNoTWFwLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFMDVGQUYzMUZFMEI0MkIw
MDA5MzIzMCAvKiBQb2lzb25lZERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RFRDQx
RDBBNTkwQzAwRkVCQ0YzIC8qIEhhc2hTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RF
RTAxRDBBNTkwQzAwRkVCQ0YzIC8qIEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0EwNTA5NDExRkI5RjA2NDAwQjMzRkI4IC8qIEpTT05WYWx1ZS5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTMxOTAsNiArMzIwMCw3IEBACiAJCQkJN0M4M0RGMUQxRDBBNTkw
QzAwRkVCQ0YzIC8qIExvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU3RDU0RjYxRjMzOTVE
MDAwQTk3QUE3IC8qIExvZ2dlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVFRDFEMEE1
OTBDMDBGRUJDRjMgLyogTWF0aEV4dHJhcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTA1RkFG
MTFGRTA4Q0Q0MDAwOTMyMzAgLyogQ29uc3RFeHByUG9pc29uZWQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0M4M0RFRUYxRDBBNTkwQzAwRkVCQ0YzIC8qIE1ENS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3QzgzREVGMTFEMEE1OTBDMDBGRUJDRjMgLyogTWVkaWFUaW1lLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDODNERUY2MUQwQTU5MEMwMEZFQkNGMyAvKiBNZXRhQWxsb2NhdG9yLmNwcCBp
biBTb3VyY2VzICovLApAQCAtMzIxMCw2ICszMjIxLDcgQEAKIAkJCQk3QzgzREYwNTFEMEE1OTBD
MDBGRUJDRjMgLyogUnVuTG9vcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREYyNjFEMEE1
OTBDMDBGRUJDRjMgLyogU2F0dXJhdGVkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUEzNTI0QUUxRDYzQTRGQjAwMzE3MjlCIC8qIFNjb3BlLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUZFMDVGQUVGMUZFMDY0NUIwMDA5MzIzMCAvKiBQb2lzb25lZC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3QzgzREYxMjFEMEE1OTBDMDBGRUJDRjMgLyogU2NvcGVkTGFtYmRh
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERjNEMUQwQTU5MEMwMEZFQkNGMyAvKiBTZXRG
b3JTY29wZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREYyQTFEMEE1OTBDMDBGRUJDRjMg
LyogU0hBMS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0NvbnN0RXhwclBvaXNvbmVkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9Db25zdEV4cHJQb2lzb25lZC5jcHAJKG5vbmV4aXN0ZW50KQorKysg
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29uc3RFeHByUG9pc29uZWQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMzUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiUmVmTG9n
Z2VyLmgiCisjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVkZSA8d3RmL1BvaXNvbmVkLmg+CisKK25h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIGNvbnN0IHVpbnQzMl90IFBvaXNvbkEg
PSAweGFhYWE7CitzdGF0aWMgY29uc3QgdWludDMyX3QgUG9pc29uQiA9IDB4YmJiYjsKKworLy8g
Rm9yIHRoZXNlIHRlc3RzLCB3ZSBuZWVkIGEgYmFzZSBjbGFzcyBhbmQgYSBkZXJpdmVkIGNsYXNz
LiBGb3IgdGhpcyBwdXJwb3NlLAorLy8gd2UgcmV1c2UgdGhlIFJlZkxvZ2dlciBhbmQgRGVyaXZl
ZFJlZkxvZ2dlciBjbGFzc2VzLgorCitURVNUKFdURl9Db25zdEV4cHJQb2lzb25lZCwgQmFzaWMp
Cit7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CisKKyAgICBDb25zdEV4cHJQb2lzb25l
ZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBlbXB0eTsKKyAgICBBU1NFUlRfRVEobnVsbHB0ciwgZW1w
dHkudW5wb2lzb25lZCgpKTsKKworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9p
c29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCAmKnB0cik7CisgICAgICAgIEFTU0VS
VF9FUSgmYS5uYW1lLCAmcHRyLT5uYW1lKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0
RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0ciA9ICZhOworICAgICAgICBBU1NF
UlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29u
c3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAgICAgQ29u
c3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIocDEpOworICAgICAgICBDb25z
dEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwMyhwMSk7CisgICAgICAgIEFTU0VS
VF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBv
aXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisKKyAg
ICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VS
VF9UUlVFKHAxLmJpdHMoKSAhPSBwMy5iaXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAg
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAgICAg
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIgPSBwMTsKKyAgICAgICAg
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDMgPSBwMTsKKyAgICAgICAg
QVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAy
LnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsK
KworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKyAgICAgICAg
QVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAzLmJpdHMoKSk7CisgICAgfQorCisgICAgeworICAg
ICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSA9ICZhOworICAg
ICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9IFdURk1vdmUo
cDEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFT
U0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBDb25zdEV4cHJQb2lzb25l
ZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMyA9ICZhOworICAgICAgICBDb25zdEV4cHJQb2lzb25l
ZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCA9IFdURk1vdmUocDMpOworICAgICAgICBBU1NFUlRf
RVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDQudW5wb2lz
b25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsK
KyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQorCisg
ICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSA9
ICZhOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMihX
VEZNb3ZlKHAxKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAg
ICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOworCisgICAgICAgIENvbnN0RXhw
clBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzID0gJmE7CisgICAgICAgIENvbnN0RXhw
clBvaXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KFdURk1vdmUocDMpKTsKKyAgICAgICAg
QVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHA0
LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJp
dHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAg
IH0KKworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgRGVyaXZlZFJl
ZkxvZ2dlcio+IHAxID0gJmE7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJl
ZkxvZ2dlcio+IHAyID0gcDE7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJl
ZkxvZ2dlcio+IHAzID0gcDE7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgp
KTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NF
UlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0
cygpID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBwMy5i
aXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29u
QSwgRGVyaXZlZFJlZkxvZ2dlcio+IHAxID0gJmE7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVk
PFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgIEFTU0VSVF9F
USgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNv
bmVkKCkpOworCisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIERlcml2ZWRSZWZM
b2dnZXIqPiBwMyA9ICZhOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZM
b2dnZXIqPiBwNCA9IFdURk1vdmUocDMpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9p
c29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDQudW5wb2lzb25lZCgpKTsKKworICAg
ICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJU
X1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBD
b25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOworICAgICAgICBB
U1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICBwdHIuY2xlYXIoKTsKKyAg
ICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0KK30KKwor
VEVTVChXVEZfQ29uc3RFeHByUG9pc29uZWQsIEFzc2lnbm1lbnQpCit7CisgICAgRGVyaXZlZFJl
ZkxvZ2dlciBhKCJhIik7CisgICAgUmVmTG9nZ2VyIGIoImIiKTsKKyAgICBEZXJpdmVkUmVmTG9n
Z2VyIGMoImMiKTsKKworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwg
UmVmTG9nZ2VyKj4gcDEoJmEpOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBS
ZWZMb2dnZXIqPiBwMigmYik7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgp
KTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBwMSA9
IHAyOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFT
U0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBDb25zdEV4cHJQb2lzb25l
ZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygmYSk7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVk
PFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51
bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7Cisg
ICAgICAgIHAzID0gcDQ7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDMudW5wb2lzb25lZCgpKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VS
VF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5i
aXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBv
aXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgm
YSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHB0ciA9ICZiOworICAgICAgICBBU1NFUlRf
RVEoJmIsIHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29uc3RF
eHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcHRyID0gbnVsbHB0cjsKKyAgICAg
ICAgQVNTRVJUX0VRKG51bGxwdHIsIHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0KKworICAgIHsK
KyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOwor
ICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMigmYik7Cisg
ICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VR
KCZiLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBwMSA9IFdURk1vdmUocDIpOworICAgICAg
ICBBU1NFUlRfRVEoJmIsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwg
cDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBS
ZWZMb2dnZXIqPiBwMygmYSk7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJl
ZkxvZ2dlcio+IHA0KCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkp
OworICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIHAzID0g
V1RGTW92ZShwNCk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDMudW5wb2lzb25lZCgpKTsKKyAg
ICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9U
UlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRz
KCkgIT0gcDQuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNv
bmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29u
ZWQ8UG9pc29uQSwgRGVyaXZlZFJlZkxvZ2dlcio+IHAyKCZjKTsKKyAgICAgICAgQVNTRVJUX0VR
KCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHAyLnVucG9pc29u
ZWQoKSk7CisgICAgICAgIHAxID0gcDI7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDEudW5wb2lz
b25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMi51bnBvaXNvbmVkKCkpOworCisgICAg
ICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKKyAgICAg
ICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgRGVyaXZlZFJlZkxvZ2dlcio+IHA0KCZjKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRf
RVEoJmMsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIHAzID0gcDQ7CisgICAgICAgIEFTU0VS
VF9FUSgmYywgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwNC51bnBv
aXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkp
OworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9CisK
KyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0
cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAg
IHB0ciA9ICZjOworICAgICAgICBBU1NFUlRfRVEoJmMsIHB0ci51bnBvaXNvbmVkKCkpOworICAg
IH0KKworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2Vy
Kj4gcDEoJmEpOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBEZXJpdmVkUmVm
TG9nZ2VyKj4gcDIoJmMpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7
CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDEgPSBX
VEZNb3ZlKHAyKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMS51bnBvaXNvbmVkKCkpOworICAg
ICAgICBBU1NFUlRfRVEoJmMsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQ29uc3RFeHBy
UG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOworICAgICAgICBDb25zdEV4cHJQ
b2lzb25lZDxQb2lzb25CLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDQoJmMpOworICAgICAgICBBU1NF
UlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDQudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgcDMgPSBXVEZNb3ZlKHA0KTsKKyAgICAgICAgQVNTRVJUX0VR
KCZjLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHA0LnVucG9pc29u
ZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7Cisg
ICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgIH0KKworICAg
IHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZh
KTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcHRy
ID0gcHRyOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0K
KworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4g
cHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyNpZiBD
T01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNs
YW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bmtub3duLXByYWdtYXMiCisjcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgaWdub3JlZCAiLVdzZWxmLW1vdmUiCisjZW5kaWYKKyAgICAgICAgcHRyID0g
V1RGTW92ZShwdHIpOworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9z
dGljIHBvcAorI2VuZGlmCisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7
CisgICAgfQorfQorCitURVNUKFdURl9Db25zdEV4cHJQb2lzb25lZCwgU3dhcCkKK3sKKyAgICBS
ZWZMb2dnZXIgYSgiYSIpOworICAgIFJlZkxvZ2dlciBiKCJiIik7CisKKyAgICB7CisgICAgICAg
IENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKKyAgICAgICAg
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoJmIpOworICAgICAgICBB
U1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIu
dW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDEuc3dhcChwMik7CisgICAgICAgIEFTU0VSVF9FUSgm
YiwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVk
KCkpOworCisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAz
KCZhKTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQo
JmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFT
U0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDMuc3dhcChwNCk7CisgICAg
ICAgIEFTU0VSVF9FUSgmYiwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZh
LCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBw
Mi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsK
KyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAzLmJpdHMoKSk7CisgICAgICAgIEFT
U0VSVF9UUlVFKHAyLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAg
ICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOworICAgICAg
ICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMigmYik7CisgICAgICAg
IEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBw
Mi51bnBvaXNvbmVkKCkpOworICAgICAgICBzd2FwKHAxLCBwMik7CisgICAgICAgIEFTU0VSVF9F
USgmYiwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNv
bmVkKCkpOworCisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+
IHAzKCZhKTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4g
cDQoJmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAg
IEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAgc3dhcChwMywgcDQpOwor
ICAgICAgICBBU1NFUlRfRVEoJmIsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9F
USgmYSwgcDQudW5wb2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkg
IT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMo
KSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMy5iaXRzKCkpOworICAgICAg
ICBBU1NFUlRfVFJVRShwMi5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9Cit9CisKK3N0YXRp
YyBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwb2lzb25lZFB0ckZvbyhS
ZWZMb2dnZXImIGxvZ2dlcikKK3sKKyAgICByZXR1cm4gQ29uc3RFeHByUG9pc29uZWQ8UG9pc29u
QSwgUmVmTG9nZ2VyKj4oJmxvZ2dlcik7Cit9CisKK1RFU1QoV1RGX0NvbnN0RXhwclBvaXNvbmVk
LCBSZXR1cm5WYWx1ZSkKK3sKKyAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKKworICAgIHsK
KyAgICAgICAgYXV0byBwdHIgPSBwb2lzb25lZFB0ckZvbyhhKTsKKyAgICAgICAgQVNTRVJUX0VR
KCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCAmKnB0cik7Cisg
ICAgICAgIEFTU0VSVF9FUSgmYS5uYW1lLCAmcHRyLT5uYW1lKTsKKyAgICB9Cit9CisKK30gLy8g
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvUG9pc29uZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1BvaXNvbmVkLmNwcAkobm9uZXhpc3RlbnQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9Qb2lzb25lZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNjEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpbmNsdWRlICJSZWZMb2dnZXIuaCIKKyNpbmNsdWRlIDx3dGYvRXhwb3J0
TWFjcm9zLmg+CisjaW5jbHVkZSA8d3RmL1BvaXNvbmVkLmg+CisKKyNpZiBfX2NwbHVzcGx1cyA8
IDIwMTQwMkxMCisjZXJyb3IgIlRvb2xjaGFpbiBpcyBub3Qgc3VwcG9ydGluZyBDKysgMTQiCisj
ZW5kaWYKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitleHRlcm4gIkMiIFdURl9FWFBP
UlREQVRBIHVpbnRwdHJfdCBnX3Rlc3RQb2lzb25BOworZXh0ZXJuICJDIiBXVEZfRVhQT1JUREFU
QSB1aW50cHRyX3QgZ190ZXN0UG9pc29uQjsKK2V4dGVybiB2b2lkIGluaXRpYWxpemVUZXN0UG9p
c29uKCk7CisKKy8vIEZvciB0aGVzZSB0ZXN0cywgd2UgbmVlZCBhIGJhc2UgY2xhc3MgYW5kIGEg
ZGVyaXZlZCBjbGFzcy4gRm9yIHRoaXMgcHVycG9zZSwKKy8vIHdlIHJldXNlIHRoZSBSZWZMb2dn
ZXIgYW5kIERlcml2ZWRSZWZMb2dnZXIgY2xhc3Nlcy4KKworVEVTVChXVEZfUG9pc29uZWQsIEJh
c2ljKQoreworICAgIGluaXRpYWxpemVUZXN0UG9pc29uKCk7CisgICAgRGVyaXZlZFJlZkxvZ2dl
ciBhKCJhIik7CisKKyAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBlbXB0
eTsKKyAgICBBU1NFUlRfRVEobnVsbHB0ciwgZW1wdHkudW5wb2lzb25lZCgpKTsKKworICAgIHsK
KyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAg
ICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VR
KCZhLCAmKnB0cik7CisgICAgICAgIEFTU0VSVF9FUSgmYS5uYW1lLCAmcHRyLT5uYW1lKTsKKyAg
ICB9CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+
IHB0ciA9ICZhOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAg
IH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4g
cDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIo
cDEpOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwMyhwMSk7
CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9p
c29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7
CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBwMy5iaXRzKCkpOworICAgIH0KKwor
ICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEgPSAm
YTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIgPSBwMTsK
KyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDMgPSBwMTsKKyAg
ICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEo
JmEsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25l
ZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKyAg
ICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAzLmJpdHMoKSk7CisgICAgfQorCisgICAg
eworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSA9ICZhOwor
ICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9IFdURk1vdmUo
cDEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFT
U0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQ
b2lzb25BLCBSZWZMb2dnZXIqPiBwMyA9ICZhOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lz
b25CLCBSZWZMb2dnZXIqPiBwNCA9IFdURk1vdmUocDMpOworICAgICAgICBBU1NFUlRfRVEoJmEs
IHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDQudW5wb2lzb25lZCgp
KTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKyAgICAg
ICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQorCisgICAgewor
ICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSA9ICZhOworICAg
ICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMihXVEZNb3ZlKHAxKSk7
CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOworCisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNv
bkEsIFJlZkxvZ2dlcio+IHAzID0gJmE7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIs
IFJlZkxvZ2dlcio+IHA0KFdURk1vdmUocDMpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51
bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7CisK
KyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFT
U0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAg
ICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgRGVyaXZlZFJlZkxvZ2dlcio+IHAxID0gJmE7Cisg
ICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyID0gcDE7CisgICAg
ICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHAzID0gcDE7CisgICAgICAg
IEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBw
Mi51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7
CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CisgICAgICAg
IEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBwMy5iaXRzKCkpOworICAgIH0KKworICAgIHsKKyAg
ICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgRGVyaXZlZFJlZkxvZ2dlcio+IHAxID0gJmE7
CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyID0gV1RGTW92
ZShwMSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAg
QVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOworCisgICAgICAgIFBvaXNvbmVkPGdfdGVz
dFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMyA9ICZhOworICAgICAgICBQb2lzb25lZDxn
X3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCA9IFdURk1vdmUocDMpOworICAgICAgICBBU1NF
UlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDQudW5w
b2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygp
KTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQor
CisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIo
JmEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICBw
dHIuY2xlYXIoKTsKKyAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHB0ci51bnBvaXNvbmVkKCkp
OworICAgIH0KK30KKworVEVTVChXVEZfUG9pc29uZWQsIEFzc2lnbm1lbnQpCit7CisgICAgaW5p
dGlhbGl6ZVRlc3RQb2lzb24oKTsKKyAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKKyAgICBS
ZWZMb2dnZXIgYigiYiIpOworICAgIERlcml2ZWRSZWZMb2dnZXIgYygiYyIpOworCisgICAgewor
ICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7CisgICAg
ICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKCZiKTsKKyAgICAgICAg
QVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAy
LnVucG9pc29uZWQoKSk7CisgICAgICAgIHAxID0gcDI7CisgICAgICAgIEFTU0VSVF9FUSgmYiwg
cDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkp
OworCisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsK
KyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQoJmIpOworICAg
ICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgm
YiwgcDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDMgPSBwNDsKKyAgICAgICAgQVNTRVJUX0VR
KCZiLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29u
ZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7Cisg
ICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgIH0KKworICAg
IHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcHRyID0g
JmI7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgfQorCisg
ICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEp
OworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICBwdHIg
PSBudWxscHRyOworICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcHRyLnVucG9pc29uZWQoKSk7
CisgICAgfQorCisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dn
ZXIqPiBwMSgmYSk7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+
IHAyKCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAg
ICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHAxID0gV1RGTW92ZShw
Mik7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNT
RVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOworCisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBv
aXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29u
QiwgUmVmTG9nZ2VyKj4gcDQoJmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29u
ZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAg
cDMgPSBXVEZNb3ZlKHA0KTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMy51bnBvaXNvbmVkKCkp
OworICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNT
RVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAz
LmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8
Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOworICAgICAgICBQb2lzb25lZDxnX3Rl
c3RQb2lzb25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDIoJmMpOworICAgICAgICBBU1NFUlRfRVEo
JmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDIudW5wb2lzb25l
ZCgpKTsKKyAgICAgICAgcDEgPSBwMjsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMS51bnBvaXNv
bmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAg
ICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOworICAgICAgICBQ
b2lzb25lZDxnX3Rlc3RQb2lzb25CLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDQoJmMpOworICAgICAg
ICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywg
cDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDMgPSBwNDsKKyAgICAgICAgQVNTRVJUX0VRKCZj
LCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHA0LnVucG9pc29uZWQo
KSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CisgICAg
ICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgIH0KKworICAgIHsK
KyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAg
ICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcHRyID0gJmM7
CisgICAgICAgIEFTU0VSVF9FUSgmYywgcHRyLnVucG9pc29uZWQoKSk7CisgICAgfQorCisgICAg
eworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7Cisg
ICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMigmYyk7
CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZjLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBwMSA9IFdURk1vdmUocDIpOworICAg
ICAgICBBU1NFUlRfRVEoJmMsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgm
YywgcDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBS
ZWZMb2dnZXIqPiBwMygmYSk7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIERlcml2
ZWRSZWZMb2dnZXIqPiBwNCgmYyk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25l
ZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAgICBw
MyA9IFdURk1vdmUocDQpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHAzLnVucG9pc29uZWQoKSk7
CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDQudW5wb2lzb25lZCgpKTsKKworICAgICAgICBBU1NF
UlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDMu
Yml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBQb2lzb25lZDxn
X3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOworICAgICAgICBBU1NFUlRfRVEoJmEs
IHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICBwdHIgPSBwdHI7CisgICAgICAgIEFTU0VSVF9F
USgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBQb2lzb25l
ZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOworICAgICAgICBBU1NFUlRfRVEo
JmEsIHB0ci51bnBvaXNvbmVkKCkpOworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3Vu
a25vd24tcHJhZ21hcyIKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3NlbGYt
bW92ZSIKKyNlbmRpZgorICAgICAgICBwdHIgPSBXVEZNb3ZlKHB0cik7CisjaWYgQ09NUElMRVIo
Q0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisjZW5kaWYKKyAgICAgICAgQVNT
RVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICB9Cit9CisKK1RFU1QoV1RGX1BvaXNv
bmVkLCBTd2FwKQoreworICAgIGluaXRpYWxpemVUZXN0UG9pc29uKCk7CisgICAgUmVmTG9nZ2Vy
IGEoImEiKTsKKyAgICBSZWZMb2dnZXIgYigiYiIpOworCisgICAgeworICAgICAgICBQb2lzb25l
ZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7CisgICAgICAgIFBvaXNvbmVkPGdf
dGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBw
MS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7
CisgICAgICAgIHAxLnN3YXAocDIpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAxLnVucG9pc29u
ZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKKworICAgICAg
ICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygmYSk7CisgICAgICAgIFBv
aXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KCZiKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9p
c29uZWQoKSk7CisgICAgICAgIHAzLnN3YXAocDQpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAz
LnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDQudW5wb2lzb25lZCgpKTsK
KworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDIuYml0cygpKTsKKyAgICAgICAg
QVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVF
KHAxLmJpdHMoKSA9PSBwMy5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMi5iaXRzKCkg
IT0gcDQuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBv
aXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29u
QSwgUmVmTG9nZ2VyKj4gcDIoJmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29u
ZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAg
c3dhcChwMSwgcDIpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAxLnVucG9pc29uZWQoKSk7Cisg
ICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBQb2lzb25l
ZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygmYSk7CisgICAgICAgIFBvaXNvbmVkPGdf
dGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBw
My51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7
CisgICAgICAgIHN3YXAocDMsIHA0KTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMy51bnBvaXNv
bmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAg
ICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9U
UlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRz
KCkgPT0gcDMuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDIuYml0cygpICE9IHA0LmJp
dHMoKSk7CisgICAgfQorfQorCitzdGF0aWMgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9n
Z2VyKj4gcG9pc29uZWRQdHJGb28oUmVmTG9nZ2VyJiBsb2dnZXIpCit7CisgICAgcmV0dXJuIFBv
aXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+KCZsb2dnZXIpOworfQorCitURVNUKFdU
Rl9Qb2lzb25lZCwgUmV0dXJuVmFsdWUpCit7CisgICAgaW5pdGlhbGl6ZVRlc3RQb2lzb24oKTsK
KyAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKKworICAgIHsKKyAgICAgICAgYXV0byBwdHIg
PSBwb2lzb25lZFB0ckZvbyhhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25l
ZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCAmKnB0cik7CisgICAgICAgIEFTU0VSVF9FUSgm
YS5uYW1lLCAmcHRyLT5uYW1lKTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkKKwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWREYXRh
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25l
ZERhdGEuY3BwCShub25leGlzdGVudCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1BvaXNvbmVkRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2luY2x1ZGUgPG11dGV4PgorI2luY2x1ZGUgPHd0Zi9FeHBvcnRNYWNyb3MuaD4KKyNp
bmNsdWRlIDx3dGYvUG9pc29uZWQuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitl
eHRlcm4gIkMiIFdURl9FWFBPUlREQVRBIHVpbnRwdHJfdCBnX3Rlc3RQb2lzb25BOworZXh0ZXJu
ICJDIiBXVEZfRVhQT1JUREFUQSB1aW50cHRyX3QgZ190ZXN0UG9pc29uQjsKK2V4dGVybiB2b2lk
IGluaXRpYWxpemVUZXN0UG9pc29uKCk7CisKK3VpbnRwdHJfdCBnX3Rlc3RQb2lzb25BOwordWlu
dHB0cl90IGdfdGVzdFBvaXNvbkI7CisKK3ZvaWQgaW5pdGlhbGl6ZVRlc3RQb2lzb24oKQorewor
ICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25jZUZsYWc7CisgICAgc3RkOjpj
YWxsX29uY2UoaW5pdGlhbGl6ZU9uY2VGbGFnLCBbXSB7CisgICAgICAgIC8vIE1ha2Ugc3VyZSB3
ZSBnZXQgMiBkaWZmZXJlbnQgcG9pc29uIHZhbHVlcy4KKyAgICAgICAgZ190ZXN0UG9pc29uQSA9
IG1ha2VQb2lzb24oKTsKKyAgICAgICAgd2hpbGUgKCFnX3Rlc3RQb2lzb25CIHx8IGdfdGVzdFBv
aXNvbkIgPT0gZ190ZXN0UG9pc29uQSkKKyAgICAgICAgICAgIGdfdGVzdFBvaXNvbkIgPSBtYWtl
UG9pc29uKCk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329188</attachid>
            <date>2017-12-12 18:02:06 -0800</date>
            <delta_ts>2017-12-12 18:09:44 -0800</delta_ts>
            <desc>test for EWS.</desc>
            <filename>bug-180724b.patch</filename>
            <type>text/plain</type>
            <size>44199</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI1ODA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDE3LTEyLTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBG
aWxsIG91dCBzb21lIFBvaXNvbmVkIEFQSXMsIGZpeCBzb21lIGJ1Z3MsIGFuZCBhZGQgc29tZSB0
ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
MDcyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYwMDY4ODQ+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgSkYgQmFzdGllbi4KKworICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlv
blRhYmxlLmg6CisKIDIwMTctMTItMDQgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAK
ICAgICAgICAgV2ViIEluc3BlY3RvcjogbW9kZXJuaXplIEluamVjdGVkU2NyaXB0IGEgYml0Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFi
bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVUcmFuc2l0aW9uVGFibGUuaAkocmV2aXNpb24gMjI1ODA3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMTg3LDggKzE4Nyw4IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBmcmll
bmQgY2xhc3MgU2luZ2xlU2xvdFRyYW5zaXRpb25XZWFrT3duZXI7Ci0gICAgdXNpbmcgUG9pc29u
ZWRUcmFuc2l0aW9uTWFwUHRyID0gSW50MzJQb2lzb25lZDxUcmFuc2l0aW9uTWFwUG9pc29uLCBU
cmFuc2l0aW9uTWFwKj47Ci0gICAgdXNpbmcgUG9pc29uZWRXZWFrSW1wbFB0ciA9IEludDMyUG9p
c29uZWQ8V2Vha0ltcGxQb2lzb24sIFdlYWtJbXBsKj47CisgICAgdXNpbmcgUG9pc29uZWRUcmFu
c2l0aW9uTWFwUHRyID0gQ29uc3RFeHByUG9pc29uZWQ8VHJhbnNpdGlvbk1hcFBvaXNvbiwgVHJh
bnNpdGlvbk1hcCo+OworICAgIHVzaW5nIFBvaXNvbmVkV2Vha0ltcGxQdHIgPSBDb25zdEV4cHJQ
b2lzb25lZDxXZWFrSW1wbFBvaXNvbiwgV2Vha0ltcGwqPjsKIAogICAgIGJvb2wgaXNVc2luZ1Np
bmdsZVNsb3QoKSBjb25zdAogICAgIHsKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjU4MDcpCisrKyBTb3Vy
Y2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDE3LTEy
LTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBGaWxsIG91dCBz
b21lIFBvaXNvbmVkIEFQSXMsIGZpeCBzb21lIGJ1Z3MsIGFuZCBhZGQgc29tZSB0ZXN0cy4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDcyNAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMzYwMDY4ODQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSkYg
QmFzdGllbi4KKworICAgICAgICBBbHNvIHJlbmFtZSBJbnQzMlBvaXNvbmVkIHRvIENvbnN0RXhw
clBvaXNvbmVkLiAgVGhlIGtleSBpdCB0YWtlcyBpcyBhY3R1YWxseSBhCisgICAgICAgIHVpbnQz
Ml90LiAgU28sIEludDMyIGlzIHJlYWxseSBhIG1pc25vbWVyLiAgSW4gYWRkaXRpb24sIHRoZSBr
ZXkgbmVlZHMgdG8gYmUgYQorICAgICAgICBjb25zdGV4cHIuICBTbywgQ29uc3RFeHByUG9pc29u
ZWQgaXMgYSBiZXR0ZXIgbmFtZSBmb3IgaXQuCisKKyAgICAgICAgKiB3dGYvUG9pc29uZWQuY3Bw
OgorICAgICAgICAoV1RGOjptYWtlUG9pc29uKToKKyAgICAgICAgKiB3dGYvUG9pc29uZWQuaDoK
KyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsSGVscGVyOjphc1JlZmVyZW5jZSk6CisgICAgICAg
IChXVEY6OlBvaXNvbmVkSW1wbDo6UG9pc29uZWRJbXBsKToKKyAgICAgICAgKFdURjo6UG9pc29u
ZWRJbXBsOjpjbGVhcik6CisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6b3BlcmF0b3IqIGNv
bnN0KToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvci0+IGNvbnN0KToKKyAg
ICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdU
Rjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKFdURjo6UG9pc29u
ZWRJbXBsOjpvcGVyYXRvcjwgY29uc3QpOgorICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6Om9w
ZXJhdG9yPD0gY29uc3QpOgorICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6Om9wZXJhdG9yPiBj
b25zdCk6CisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6b3BlcmF0b3I+PSBjb25zdCk6Cisg
ICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdURjo6UG9p
c29uZWRJbXBsOjpzd2FwKToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpleGNoYW5nZSk6
CisgICAgICAgIChXVEY6OnN3YXApOgorICAgICAgICAoV1RGOjptYWtlUG9pc29uKToKKyAgICAg
ICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvcj09KTogRGVsZXRlZC4KKwogMjAxNy0xMi0x
MiAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0VTTmV4dF1b
QmlnSW50XSBJbXBsZW1lbnQgQmlnSW50IGxpdGVyYWxzIGFuZCBKU0JpZ0ludApJbmRleDogU291
cmNlL1dURi93dGYvUG9pc29uZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1Bv
aXNvbmVkLmNwcAkocmV2aXNpb24gMjI1ODA3KQorKysgU291cmNlL1dURi93dGYvUG9pc29uZWQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXVEYgewogdWlu
dHB0cl90IG1ha2VQb2lzb24oKQogewogICAgIHVpbnRwdHJfdCBrZXkgPSBjcnlwdG9ncmFwaGlj
YWxseVJhbmRvbU51bWJlcigpOwotI2lmIFVTRShKU1ZBTFVFNjQpICYmICFPUyhXSU5ET1dTKQor
I2lmIEVOQUJMRShQT0lTT04pCiAgICAga2V5ID0gKGtleSA8PCAzMikgXiAoc3RhdGljX2Nhc3Q8
dWludHB0cl90PihjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpKSA8PCAzKTsKICAgICAv
LyBFbnN1cmUgdGhhdCB0aGUgcG9pc29uZWQgYml0cyAocG9pbnRlciBeIGtleSkgZG8gbm90IG1h
a2UgYSB2YWxpZCBwb2ludGVyIGFuZAogICAgIC8vIGNhbm5vdCBiZSAwLiBXZSBlbnN1cmUgdGhh
dCBpdCBpcyB6ZXJvIHNvIHRoYXQgdGhlIHBvaXNvbmVkIGJpdHMgY2FuIGFsc28gYmUKQEAgLTUx
LDQgKzUxLDMgQEAgdWludHB0cl90IG1ha2VQb2lzb24oKQogfQogCiB9IC8vIG5hbWVzcGFjZSBX
VEYKLQpJbmRleDogU291cmNlL1dURi93dGYvUG9pc29uZWQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi9Qb2lzb25lZC5oCShyZXZpc2lvbiAyMjU4MDcpCisrKyBTb3VyY2UvV1RGL3d0
Zi9Qb2lzb25lZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMSArMjcsMTQgQEAKIAogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKKyNkZWZpbmUgRU5BQkxFX1BPSVNPTiAxCiAjZGVmaW5l
IEVOQUJMRV9QT0lTT05fQVNTRVJUUyAwCiAKIC8vIE5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIGZv
ciAzMi1iaXQgb3IgT1MoV0lORE9XUykgYnVpbGRzIChiZWNhdXNlIG9mIG1pc3NpbmcgbGxpbnQg
c3VwcG9ydCkuCiAvLyBNYWtlIHN1cmUgaXQncyBkaXNhYmxlZC4KICNpZiBVU0UoSlNWQUxVRTMy
XzY0KSB8fCBPUyhXSU5ET1dTKQorI3VuZGVmIEVOQUJMRV9QT0lTT04KKyNkZWZpbmUgRU5BQkxF
X1BPSVNPTiAwCiAjdW5kZWYgRU5BQkxFX1BPSVNPTl9BU1NFUlRTCiAjZGVmaW5lIEVOQUJMRV9Q
T0lTT05fQVNTRVJUUyAwCiAjZW5kaWYKQEAgLTQwLDE3ICs0Myw0OCBAQCBuYW1lc3BhY2UgV1RG
IHsKIAogdXNpbmcgUG9pc29uZWRCaXRzID0gdWludHB0cl90OwogCituYW1lc3BhY2UgUG9pc29u
ZWRJbXBsSGVscGVyIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBpc0Z1bmN0aW9u
UG9pbnRlciA6IHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgc3RkOjppc19mdW5jdGlvbjx0
eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPFQ+Ojp0eXBlPjo6dmFsdWU+IHsgfTsKKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBpc1ZvaWRQb2ludGVyIDogc3RkOjppbnRlZ3JhbF9j
b25zdGFudDxib29sLCBzdGQ6OmlzX3ZvaWQ8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxU
Pjo6dHlwZT46OnZhbHVlPiB7IH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgaXND
b252ZXJ0aWJsZVRvUmVmZXJlbmNlIDogc3RkOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCAhaXNG
dW5jdGlvblBvaW50ZXI8VD46OnZhbHVlICYmICFpc1ZvaWRQb2ludGVyPFQ+Ojp2YWx1ZT4geyB9
OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgordHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDwhaXND
b252ZXJ0aWJsZVRvUmVmZXJlbmNlPFQ+Ojp2YWx1ZSwgaW50PiYKK2FzUmVmZXJlbmNlKFQpIHsg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgor
dHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxpc0NvbnZlcnRpYmxlVG9SZWZlcmVuY2U8VD46OnZh
bHVlLCB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPFQ+Ojp0eXBlPiYKK2FzUmVmZXJlbmNl
KFQgcHRyKSB7IHJldHVybiAqcHRyOyB9CisKK30gLy8gbmFtZXNwYWNlIFBvaXNvbmVkSW1wbEhl
bHBlcgorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBlLCBLZXlUeXBlIGtleSwgdHlwZW5hbWUg
VCwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfcG9pbnRlcjxUPjo6dmFsdWU+
PgogY2xhc3MgUG9pc29uZWRJbXBsIHsKIHB1YmxpYzoKICAgICBQb2lzb25lZEltcGwoKSB7IH0K
IAotICAgIGV4cGxpY2l0IFBvaXNvbmVkSW1wbChUIHB0cikKKyAgICBQb2lzb25lZEltcGwoVCBw
dHIpCiAgICAgICAgIDogbV9wb2lzb25lZEJpdHMocG9pc29uKHB0cikpCiAgICAgeyB9CiAKICAg
ICBQb2lzb25lZEltcGwoY29uc3QgUG9pc29uZWRJbXBsJikgPSBkZWZhdWx0OwogCisvLyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBLMiwgSzIgazIsIHR5cGVuYW1lIFQyPgorICAgIHRlbXBsYXRlPEtl
eVR5cGUgazIsIHR5cGVuYW1lIFQyPgorICAgIFBvaXNvbmVkSW1wbChjb25zdCBQb2lzb25lZElt
cGw8S2V5VHlwZSwgazIsIFQyPiYgb3RoZXIpCisgICAgICAgIDogbV9wb2lzb25lZEJpdHMocG9p
c29uPFQ+KG90aGVyLnVucG9pc29uZWQoKSkpCisgICAgeyB9CisKKyAgICBQb2lzb25lZEltcGwo
UG9pc29uZWRJbXBsJiYgb3RoZXIpCisgICAgICAgIDogbV9wb2lzb25lZEJpdHMoV1RGTW92ZShv
dGhlci5tX3BvaXNvbmVkQml0cykpCisgICAgeyB9CisKICAgICBleHBsaWNpdCBQb2lzb25lZElt
cGwoUG9pc29uZWRCaXRzIHBvaXNvbmVkQml0cykKICAgICAgICAgOiBtX3BvaXNvbmVkQml0cyhw
b2lzb25lZEJpdHMpCiAgICAgeyB9CkBAIC03Miw3ICsxMDYsMTAgQEAgcHVibGljOgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFUgPSBUPgogICAgIFUgdW5wb2lzb25lZCgpIGNvbnN0IHsgcmV0dXJu
IHVucG9pc29uPFU+KG1fcG9pc29uZWRCaXRzKTsgfQogCi0gICAgQUxXQVlTX0lOTElORSBUIG9w
ZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiB1bnBvaXNvbjxUPihtX3BvaXNvbmVkQml0cyk7IH0K
KyAgICB2b2lkIGNsZWFyKCkgeyBtX3BvaXNvbmVkQml0cyA9IDA7IH0KKworICAgIGF1dG8mIG9w
ZXJhdG9yKigpIGNvbnN0IHsgQVNTRVJUKG1fcG9pc29uZWRCaXRzKTsgcmV0dXJuIFBvaXNvbmVk
SW1wbEhlbHBlcjo6YXNSZWZlcmVuY2UodW5wb2lzb24obV9wb2lzb25lZEJpdHMpKTsgfQorICAg
IEFMV0FZU19JTkxJTkUgVCBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gdW5wb2lzb24obV9w
b2lzb25lZEJpdHMpOyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gUG9pc29uZWRCaXRz
PgogICAgIFUgYml0cygpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxVPihtX3BvaXNvbmVk
Qml0cyk7IH0KQEAgLTgwLDU2ICsxMTcsMTAxIEBAIHB1YmxpYzoKICAgICBib29sIG9wZXJhdG9y
ISgpIGNvbnN0IHsgcmV0dXJuICFtX3BvaXNvbmVkQml0czsgfQogICAgIGV4cGxpY2l0IG9wZXJh
dG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fcG9pc29uZWRCaXRzOyB9CiAKLSAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgUG9pc29uZWRJbXBsJiBiKSBjb25zdAorICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRz
ID09IGIubV9wb2lzb25lZEJpdHM7IH0KKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUG9pc29u
ZWRJbXBsJiBiKSBjb25zdCB7IHJldHVybiBtX3BvaXNvbmVkQml0cyAhPSBiLm1fcG9pc29uZWRC
aXRzOyB9CisgICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgUG9pc29uZWRJbXBsJiBiKSBjb25zdCB7
IHJldHVybiBtX3BvaXNvbmVkQml0cyA8IGIubV9wb2lzb25lZEJpdHM7IH0KKyAgICBib29sIG9w
ZXJhdG9yPD0oY29uc3QgUG9pc29uZWRJbXBsJiBiKSBjb25zdCB7IHJldHVybiBtX3BvaXNvbmVk
Qml0cyA8PSBiLm1fcG9pc29uZWRCaXRzOyB9CisgICAgYm9vbCBvcGVyYXRvcj4oY29uc3QgUG9p
c29uZWRJbXBsJiBiKSBjb25zdCB7IHJldHVybiBtX3BvaXNvbmVkQml0cyA+IGIubV9wb2lzb25l
ZEJpdHM7IH0KKyAgICBib29sIG9wZXJhdG9yPj0oY29uc3QgUG9pc29uZWRJbXBsJiBiKSBjb25z
dCB7IHJldHVybiBtX3BvaXNvbmVkQml0cyA+PSBiLm1fcG9pc29uZWRCaXRzOyB9CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIG9wZXJhdG9yPT0oVSBiKSBjb25zdCB7IHJldHVybiB1
bnBvaXNvbmVkPFU+KCkgPT0gYjsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgb3Bl
cmF0b3IhPShVIGIpIGNvbnN0IHsgcmV0dXJuIHVucG9pc29uZWQ8VT4oKSAhPSBiOyB9CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBvcGVyYXRvcjwoVSBiKSBjb25zdCB7IHJldHVybiB1
bnBvaXNvbmVkPFU+KCkgPCBiOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBvcGVy
YXRvcjw9KFUgYikgY29uc3QgeyByZXR1cm4gdW5wb2lzb25lZDxVPigpIDw9IGI7IH0KKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIG9wZXJhdG9yPihVIGIpIGNvbnN0IHsgcmV0dXJuIHVu
cG9pc29uZWQ8VT4oKSA+IGI7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIG9wZXJh
dG9yPj0oVSBiKSBjb25zdCB7IHJldHVybiB1bnBvaXNvbmVkPFU+KCkgPj0gYjsgfQorCisgICAg
UG9pc29uZWRJbXBsJiBvcGVyYXRvcj0oVCBwdHIpCiAgICAgewotICAgICAgICByZXR1cm4gbV9w
b2lzb25lZEJpdHMgPT0gYi5tX3BvaXNvbmVkQml0czsKKyAgICAgICAgbV9wb2lzb25lZEJpdHMg
PSBwb2lzb24ocHRyKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KKyAgICBQb2lzb25l
ZEltcGwmIG9wZXJhdG9yPShjb25zdCBQb2lzb25lZEltcGwmKSA9IGRlZmF1bHQ7CiAKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBQdHJUeXBlID0gdm9pZCosIHR5cGVuYW1lID0gdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFB0clR5cGU+Ojp2YWx1ZT46OnR5cGU+Ci0gICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFB0clR5cGUgYikKKy8vICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEsyLCBLMiBrMiwgdHlwZW5hbWUgVDI+CisgICAgdGVtcGxhdGU8S2V5VHlwZSBrMiwgdHlwZW5h
bWUgVDI+CisgICAgUG9pc29uZWRJbXBsJiBvcGVyYXRvcj0oY29uc3QgUG9pc29uZWRJbXBsPEtl
eVR5cGUsIGsyLCBUMj4mIG90aGVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHVucG9pc29uZWQ8
UHRyVHlwZT4oKSA9PSBiOworICAgICAgICBtX3BvaXNvbmVkQml0cyA9IHBvaXNvbjxUPihvdGhl
ci51bnBvaXNvbmVkKCkpOworICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgUG9p
c29uZWRJbXBsJiBvcGVyYXRvcj0oVCBwdHIpCisgICAgdm9pZCBzd2FwKFBvaXNvbmVkSW1wbCYg
bykKICAgICB7Ci0gICAgICAgIG1fcG9pc29uZWRCaXRzID0gcG9pc29uKHB0cik7Ci0gICAgICAg
IHJldHVybiAqdGhpczsKKyAgICAgICAgc3RkOjpzd2FwKG1fcG9pc29uZWRCaXRzLCBvLm1fcG9p
c29uZWRCaXRzKTsKKyAgICB9CisKKy8vICAgIHRlbXBsYXRlPHR5cGVuYW1lIEsyLCBLMiBrMiwg
dHlwZW5hbWUgVDI+CisgICAgdGVtcGxhdGU8S2V5VHlwZSBrMiwgdHlwZW5hbWUgVDI+CisgICAg
dm9pZCBzd2FwKFBvaXNvbmVkSW1wbDxLZXlUeXBlLCBrMiwgVDI+JiBvKQorICAgIHsKKyAgICAg
ICAgVCB0MSA9IHRoaXMtPnVucG9pc29uZWQoKTsKKyAgICAgICAgVDIgdDIgPSBvLnVucG9pc29u
ZWQoKTsKKyAgICAgICAgc3RkOjpzd2FwKHQxLCB0Mik7CisgICAgICAgIG1fcG9pc29uZWRCaXRz
ID0gcG9pc29uKHQxKTsKKyAgICAgICAgbyA9IHQyOworICAgIH0KKworICAgIHRlbXBsYXRlPGNs
YXNzIFU+CisgICAgVCBleGNoYW5nZShVJiYgbmV3VmFsdWUpCisgICAgeworICAgICAgICBUIG9s
ZFZhbHVlID0gdW5wb2lzb25lZCgpOworICAgICAgICBtX3BvaXNvbmVkQml0cyA9IHBvaXNvbihz
dGQ6OmZvcndhcmQ8VT4obmV3VmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIG9sZFZhbHVlOwogICAg
IH0KLSAgICBQb2lzb25lZEltcGwmIG9wZXJhdG9yPShjb25zdCBQb2lzb25lZEltcGwmKSA9IGRl
ZmF1bHQ7CiAKIHByaXZhdGU6Ci0jaWYgVVNFKEpTVkFMVUU2NCkKKyNpZiBFTkFCTEUoUE9JU09O
KQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+CiAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUG9p
c29uZWRCaXRzIHBvaXNvbihVIHB0cikgeyByZXR1cm4gcHRyID8gYml0d2lzZV9jYXN0PFBvaXNv
bmVkQml0cz4ocHRyKSBeIGtleSA6IDA7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPgogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFUgdW5w
b2lzb24oUG9pc29uZWRCaXRzIHBvaXNvbmVkQml0cykgeyByZXR1cm4gcG9pc29uZWRCaXRzID8g
Yml0d2lzZV9jYXN0PFU+KHBvaXNvbmVkQml0cyBeIGtleSkgOiBiaXR3aXNlX2Nhc3Q8VT4oMGxs
KTsgfQogI2Vsc2UKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgogICAgIEFMV0FZU19JTkxJTkUg
c3RhdGljIFBvaXNvbmVkQml0cyBwb2lzb24oVSBwdHIpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxQ
b2lzb25lZEJpdHM+KHB0cik7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFUgPSBUPgogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFUgdW5wb2lzb24o
UG9pc29uZWRCaXRzIHBvaXNvbmVkQml0cykgeyByZXR1cm4gYml0d2lzZV9jYXN0PFU+KHBvaXNv
bmVkQml0cyk7IH0KICNlbmRpZgogCiAgICAgUG9pc29uZWRCaXRzIG1fcG9pc29uZWRCaXRzIHsg
MCB9OwogfTsKIAotdGVtcGxhdGU8dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQ+Ci11c2luZyBQ
b2lzb25lZCA9IFBvaXNvbmVkSW1wbDx1aW50cHRyX3QmLCBrZXksIFQ+OwordGVtcGxhdGU8dHlw
ZW5hbWUgSzEsIEsxIGsxLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgSzIsIEsyIGsyLCB0eXBlbmFt
ZSBUMj4KK2lubGluZSB2b2lkIHN3YXAoUG9pc29uZWRJbXBsPEsxLCBrMSwgVDE+JiBhLCBQb2lz
b25lZEltcGw8SzIsIGsyLCBUMj4mIGIpCit7CisgICAgYS5zd2FwKGIpOworfQogCi0jaWYgVVNF
KEpTVkFMVUU2NCkKLXRlbXBsYXRlPHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVD4KLXVzaW5nIElu
dDMyUG9pc29uZWQgPSBQb2lzb25lZEltcGw8dWludHB0cl90LCBzdGF0aWNfY2FzdDx1aW50cHRy
X3Q+KGtleSkgPDwgMzIsIFQ+OworV1RGX0VYUE9SVF9QUklWQVRFIHVpbnRwdHJfdCBtYWtlUG9p
c29uKCk7CisKK2lubGluZSBjb25zdGV4cHIgdWludHB0cl90IG1ha2VQb2lzb24odWludDMyX3Qg
a2V5KQoreworI2lmIEVOQUJMRShQT0lTT04pCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnRw
dHJfdD4oMHg4MDAwMDAwMCB8IGtleSkgPDwgMzI7CiAjZWxzZQotdGVtcGxhdGU8dWludDMyX3Qs
IHR5cGVuYW1lIFQ+Ci11c2luZyBJbnQzMlBvaXNvbmVkID0gUG9pc29uZWRJbXBsPHVpbnRwdHJf
dCwgMCwgVD47CisgICAgcmV0dXJuICh2b2lkKWtleSwgMDsKICNlbmRpZgorfQogCi1XVEZfRVhQ
T1JUX1BSSVZBVEUgdWludHB0cl90IG1ha2VQb2lzb24oKTsKK3RlbXBsYXRlPHVpbnRwdHJfdCYg
a2V5LCB0eXBlbmFtZSBUPgordXNpbmcgUG9pc29uZWQgPSBQb2lzb25lZEltcGw8dWludHB0cl90
Jiwga2V5LCBUPjsKKwordGVtcGxhdGU8dWludDMyX3Qga2V5LCB0eXBlbmFtZSBUPgordXNpbmcg
Q29uc3RFeHByUG9pc29uZWQgPSBQb2lzb25lZEltcGw8dWludHB0cl90LCBtYWtlUG9pc29uKGtl
eSksIFQ+OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAotdXNpbmcgV1RGOjpJbnQzMlBvaXNvbmVk
OwordXNpbmcgV1RGOjpDb25zdEV4cHJQb2lzb25lZDsKIHVzaW5nIFdURjo6UG9pc29uZWQ7CiB1
c2luZyBXVEY6OlBvaXNvbmVkQml0czsKIHVzaW5nIFdURjo6bWFrZVBvaXNvbjsKSW5kZXg6IFRv
b2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIy
NTgxNikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDE3LTEyLTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBG
aWxsIG91dCBzb21lIFBvaXNvbmVkIEFQSXMsIGZpeCBzb21lIGJ1Z3MsIGFuZCBhZGQgc29tZSB0
ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
MDcyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYwMDY4ODQ+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgSkYgQmFzdGllbi4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29uc3RFeHBy
UG9pc29uZWQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkLmNwcDogQWRkZWQuCisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjppbml0aWFsaXplVGVzdFBvaXNvbik6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lz
b25lZERhdGEuY3BwOiBBZGRlZC4KKwogMjAxNy0xMi0xMiAgSm9uYXRoYW4gQmVkYXJkICA8amJl
ZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgTW9iaWxlTWluaUJyb3dzZXIgdXNpbmcgdGhlIHdy
b25nIHRvb2xjaGFpbgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CShyZXZpc2lv
biAyMjU4MDcpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC05NSw2ICs5NSw3IEBAIHNldChUZXN0V1RGX1NPVVJDRVMKICAgICAke1RFU1RX
RUJLSVRBUElfRElSfS9UZXN0cy9XVEYvQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcAog
ICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9Db25jdXJyZW50UHRySGFzaFNldC5j
cHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvQ29uZGl0aW9uLmNwcAorICAg
ICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9Db25zdEV4cHJQb2lzb25lZC5jcHAKICAg
ICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcAogICAg
ICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9EYXRlTWF0aC5jcHAKICAgICAke1RFU1RX
RUJLSVRBUElfRElSfS9UZXN0cy9XVEYvRGVxdWUuY3BwCkBAIC0xMjIsNiArMTIzLDggQEAgc2V0
KFRlc3RXVEZfU09VUkNFUwogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9PcHRp
b25hbC5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvT3B0aW9uU2V0LmNw
cAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9QYXJraW5nTG90LmNwcAorICAg
ICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9Qb2lzb25lZC5jcHAKKyAgICAke1RFU1RX
RUJLSVRBUElfRElSfS9UZXN0cy9XVEYvUG9pc29uZWREYXRhLmNwcAogICAgICR7VEVTVFdFQktJ
VEFQSV9ESVJ9L1Rlc3RzL1dURi9Qcmlvcml0eVF1ZXVlLmNwcAogICAgICR7VEVTVFdFQktJVEFQ
SV9ESVJ9L1Rlc3RzL1dURi9SZWRCbGFja1RyZWUuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJ
Un0vVGVzdHMvV1RGL1JlZi5jcHAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAyMjU4MDcpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzU2LDYgKzc1Niw5IEBACiAJCUY2
QjdCRTk3MTc0NjlCOTYwMDhBMzQ0NSAvKiBhc3NvY2lhdGUtZm9ybS1jb250cm9scy5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2QjdC
RTk2MTc0NjlCN0UwMDhBMzQ0NSAvKiBhc3NvY2lhdGUtZm9ybS1jb250cm9scy5odG1sICovOyB9
OwogCQlGNkY0OUM2QjE1NTQ1Q0E3MDAwN0YzOUQgLyogRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNo
ZV9CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjZGNDlDNjYxNTU0NUM4RDAwMDdGMzlEIC8qIERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGVf
QnVuZGxlLmNwcCAqLzsgfTsKIAkJRjZGRERERDYxNDI0MUM2RjAwNEYxNzI5IC8qIHB1c2gtc3Rh
dGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNkZERERENTE0MjQxQzQ4MDA0RjE3MjkgLyogcHVzaC1zdGF0ZS5odG1sICovOyB9Owor
CQlGRTA1RkFFRjFGRTA2NDVCMDAwOTMyMzAgLyogUG9pc29uZWQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwNUZBRUUxRkUwNjQzRDAwMDkzMjMw
IC8qIFBvaXNvbmVkLmNwcCAqLzsgfTsKKwkJRkUwNUZBRjExRkUwOENENDAwMDkzMjMwIC8qIENv
bnN0RXhwclBvaXNvbmVkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFMDVGQUYwMUZFMDhDQ0QwMDA5MzIzMCAvKiBDb25zdEV4cHJQb2lzb25lZC5j
cHAgKi87IH07CisJCUZFMDVGQUYzMUZFMEI0MkIwMDA5MzIzMCAvKiBQb2lzb25lZERhdGEuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwNUZBRjIx
RkUwQjNDQjAwMDkzMjMwIC8qIFBvaXNvbmVkRGF0YS5jcHAgKi87IH07CiAvKiBFbmQgUEJYQnVp
bGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rp
b24gKi8KQEAgLTE4NTcsNiArMTg2MCw5IEBACiAJCUY2RjQ5QzY3MTU1NDVDOEQwMDA3RjM5RCAv
KiBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGNkZEREREMjE0MjQxQUQ0MDA0RjE3MjkgLyogUHJpdmF0ZUJyb3dz
aW5nUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUHJpdmF0ZUJyb3dzaW5nUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2su
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNkZERERENTE0MjQxQzQ4MDA0RjE3
MjkgLyogcHVzaC1zdGF0ZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gInB1c2gt
c3RhdGUuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMDVGQUVFMUZFMDY0
M0QwMDA5MzIzMCAvKiBQb2lzb25lZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBQb2lzb25lZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMDVG
QUYwMUZFMDhDQ0QwMDA5MzIzMCAvKiBDb25zdEV4cHJQb2lzb25lZC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb25zdEV4cHJQb2lzb25lZC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMDVGQUYyMUZFMEIzQ0IwMDA5MzIzMCAvKiBQb2lzb25l
ZERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9pc29uZWRE
YXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVCNkY3NEUxQjJCQTQ0RTAw
OUU0OTIyIC8qIE5ha2VkUHRyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE5ha2VkUHRyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhG
aWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIApAQCAtMjYxMyw2ICsyNjE5LDcgQEAKIAkJCQlBN0E5
NjZEQTE0MEVDQ0M4MDA1RUY5QjQgLyogQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcCAq
LywKIAkJCQkwRjMwQ0I1QjFGQ0UxNzkyMDA0QjUzMjMgLyogQ29uY3VycmVudFB0ckhhc2hTZXQu
Y3BwICovLAogCQkJCTBGRUFFMzY3MUI3RDE5Q0IwMENFMTdGMiAvKiBDb25kaXRpb24uY3BwICov
LAorCQkJCUZFMDVGQUYwMUZFMDhDQ0QwMDA5MzIzMCAvKiBDb25zdEV4cHJQb2lzb25lZC5jcHAg
Ki8sCiAJCQkJNTE3MTRFQjkxRDA4NzQxNjAwNDcyM0M0IC8qIENyb3NzVGhyZWFkVGFzay5jcHAg
Ki8sCiAJCQkJMjZBMkM3MkUxNUUyRTczQzAwNUIxQTE0IC8qIENTdHJpbmcuY3BwICovLAogCQkJ
CTdBQTAyMUJBMUFCMDlFQTcwMDUyOTUzRiAvKiBEYXRlTWF0aC5jcHAgKi8sCkBAIC0yNjQ2LDYg
KzI2NTMsOCBAQAogCQkJCTFBRkRFNjU0MTk1M0IyQzAwMEM0OEZGQSAvKiBPcHRpb25hbC5jcHAg
Ki8sCiAJCQkJQ0U1MEQ4QzgxQzg2NjVDRTAwNzJFQTVBIC8qIE9wdGlvblNldC5jcHAgKi8sCiAJ
CQkJMEZFNDQ3OTcxQjc2RjFFMzAwOTQ5OEVCIC8qIFBhcmtpbmdMb3QuY3BwICovLAorCQkJCUZF
MDVGQUVFMUZFMDY0M0QwMDA5MzIzMCAvKiBQb2lzb25lZC5jcHAgKi8sCisJCQkJRkUwNUZBRjIx
RkUwQjNDQjAwMDkzMjMwIC8qIFBvaXNvbmVkRGF0YS5jcHAgKi8sCiAJCQkJNTNFQzI1M0YxRTk2
QkM4MDAwMDgzMUI5IC8qIFByaW9yaXR5UXVldWUuY3BwICovLAogCQkJCTBGQzZDNENCMTQxMDI3
RTAwMDVCN0YwQyAvKiBSZWRCbGFja1RyZWUuY3BwICovLAogCQkJCTkzQTQyN0FBMTgwREEyNjQw
MENEMjRENyAvKiBSZWYuY3BwICovLApAQCAtMzE4MCw2ICszMTg5LDcgQEAKIAkJCQk2QkZEMjk0
QzFENUU2QzFEMDA4RUM5NjggLyogSGFzaENvdW50ZWRTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTMzRDYzMUQxRkNCNzYyMDAwMzJFQ0Q2IC8qIEhhc2hlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3QzgzREVEMjFEMEE1OTBDMDBGRUJDRjMgLyogSGFzaE1hcC5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlGRTA1RkFGMzFGRTBCNDJCMDAwOTMyMzAgLyogUG9pc29uZWREYXRhLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdDODNERUQ0MUQwQTU5MEMwMEZFQkNGMyAvKiBIYXNoU2V0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTdDODNERUUwMUQwQTU5MEMwMEZFQkNGMyAvKiBJbnRlZ2VyVG9T
dHJpbmdDb252ZXJzaW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBMDUwOTQxMUZCOUYwNjQw
MEIzM0ZCOCAvKiBKU09OVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMTkwLDYgKzMyMDAs
NyBAQAogCQkJCTdDODNERjFEMUQwQTU5MEMwMEZFQkNGMyAvKiBMb2NrLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE1N0Q1NEY2MUYzMzk1RDAwMEE5N0FBNyAvKiBMb2dnZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0M4M0RFRUQxRDBBNTkwQzAwRkVCQ0YzIC8qIE1hdGhFeHRyYXMuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJRkUwNUZBRjExRkUwOENENDAwMDkzMjMwIC8qIENvbnN0RXhwclBv
aXNvbmVkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERUVGMUQwQTU5MEMwMEZFQkNGMyAv
KiBNRDUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RFRjExRDBBNTkwQzAwRkVCQ0YzIC8q
IE1lZGlhVGltZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVGNjFEMEE1OTBDMDBGRUJD
RjMgLyogTWV0YUFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMyMTAsNiArMzIyMSw3
IEBACiAJCQkJN0M4M0RGMDUxRDBBNTkwQzAwRkVCQ0YzIC8qIFJ1bkxvb3AuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0M4M0RGMjYxRDBBNTkwQzAwRkVCQ0YzIC8qIFNhdHVyYXRlZEFyaXRobWV0
aWNPcGVyYXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMzUyNEFFMUQ2M0E0RkIwMDMx
NzI5QiAvKiBTY29wZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTA1RkFFRjFGRTA2NDVCMDAw
OTMyMzAgLyogUG9pc29uZWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGMTIxRDBBNTkw
QzAwRkVCQ0YzIC8qIFNjb3BlZExhbWJkYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREYz
RDFEMEE1OTBDMDBGRUJDRjMgLyogU2V0Rm9yU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0M4M0RGMkExRDBBNTkwQzAwRkVCQ0YzIC8qIFNIQTEuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4
OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Db25zdEV4cHJQb2lzb25lZC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29uc3RFeHByUG9pc29u
ZWQuY3BwCShub25leGlzdGVudCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nv
bnN0RXhwclBvaXNvbmVkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM1MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2luY2x1ZGUgIlJlZkxvZ2dlci5oIgorI2luY2x1ZGUgPG11dGV4PgorI2luY2x1
ZGUgPHd0Zi9Qb2lzb25lZC5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRp
YyBjb25zdCB1aW50MzJfdCBQb2lzb25BID0gMHhhYWFhOworc3RhdGljIGNvbnN0IHVpbnQzMl90
IFBvaXNvbkIgPSAweGJiYmI7CisKKy8vIEZvciB0aGVzZSB0ZXN0cywgd2UgbmVlZCBhIGJhc2Ug
Y2xhc3MgYW5kIGEgZGVyaXZlZCBjbGFzcy4gRm9yIHRoaXMgcHVycG9zZSwKKy8vIHdlIHJldXNl
IHRoZSBSZWZMb2dnZXIgYW5kIERlcml2ZWRSZWZMb2dnZXIgY2xhc3Nlcy4KKworVEVTVChXVEZf
Q29uc3RFeHByUG9pc29uZWQsIEJhc2ljKQoreworICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIp
OworCisgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gZW1wdHk7Cisg
ICAgQVNTRVJUX0VRKG51bGxwdHIsIGVtcHR5LnVucG9pc29uZWQoKSk7CisKKyAgICB7CisgICAg
ICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAg
ICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgm
YSwgJipwdHIpOworICAgICAgICBBU1NFUlRfRVEoJmEubmFtZSwgJnB0ci0+bmFtZSk7CisgICAg
fQorCisgICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIq
PiBwdHIgPSAmYTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAg
ICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dl
cio+IHAxID0gJmE7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dl
cio+IHAyKHAxKTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2Vy
Kj4gcDMocDEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAg
ICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZh
LCBwMy51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBw
Mi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDMuYml0cygpKTsK
KyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxv
Z2dlcio+IHAxID0gJmE7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxv
Z2dlcio+IHAyID0gcDE7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxv
Z2dlcio+IHAzID0gcDE7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRf
RVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygp
ID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBwMy5iaXRz
KCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwg
UmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwg
UmVmTG9nZ2VyKj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51
bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CisK
KyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMgPSAmYTsK
KyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQgPSBXVEZN
b3ZlKHAzKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAg
ICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUo
cDEuYml0cygpID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAh
PSBwNC5iaXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8
UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8
UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoV1RGTW92ZShwMSkpOworICAgICAgICBBU1NFUlRfRVEo
JmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25l
ZCgpKTsKKworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBw
MyA9ICZhOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBw
NChXVEZNb3ZlKHAzKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZhLCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VS
VF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5i
aXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBv
aXNvbmVkPFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMSA9ICZhOworICAgICAgICBDb25z
dEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9IHAxOworICAgICAgICBDb25z
dEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwMyA9IHAxOworICAgICAgICBBU1NF
UlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworCisg
ICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NF
UlRfVFJVRShwMS5iaXRzKCkgIT0gcDMuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAg
IENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMSA9ICZhOwor
ICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9IFdURk1v
dmUocDEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAg
IEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBDb25zdEV4cHJQb2lz
b25lZDxQb2lzb25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDMgPSAmYTsKKyAgICAgICAgQ29uc3RF
eHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQgPSBXVEZNb3ZlKHAzKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEs
IHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAy
LmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwor
ICAgIH0KKworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9n
Z2VyKj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsK
KyAgICAgICAgcHRyLmNsZWFyKCk7CisgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwdHIudW5w
b2lzb25lZCgpKTsKKyAgICB9Cit9CisKK1RFU1QoV1RGX0NvbnN0RXhwclBvaXNvbmVkLCBBc3Np
Z25tZW50KQoreworICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOworICAgIFJlZkxvZ2dlciBi
KCJiIik7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBjKCJjIik7CisKKyAgICB7CisgICAgICAgIENv
bnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKKyAgICAgICAgQ29u
c3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoJmIpOworICAgICAgICBBU1NF
UlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgcDEgPSBwMjsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS51
bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CisK
KyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOwor
ICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7Cisg
ICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VR
KCZiLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAgICBwMyA9IHA0OworICAgICAgICBBU1NFUlRf
RVEoJmIsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lz
b25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsK
KyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQorCisg
ICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIo
JmEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICBw
dHIgPSAmYjsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICB9
CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+
IHB0cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAg
ICAgIHB0ciA9IG51bGxwdHI7CisgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwdHIudW5wb2lz
b25lZCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNv
bkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29u
QSwgUmVmTG9nZ2VyKj4gcDIoJmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29u
ZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAg
cDEgPSBXVEZNb3ZlKHAyKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVkKCkp
OworICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQ29u
c3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOworICAgICAgICBDb25z
dEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7CisgICAgICAgIEFTU0VS
VF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBv
aXNvbmVkKCkpOworICAgICAgICBwMyA9IFdURk1vdmUocDQpOworICAgICAgICBBU1NFUlRfRVEo
JmIsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25l
ZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKyAg
ICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQorCisgICAg
eworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7
CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBw
MigmYyk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAg
QVNTRVJUX0VRKCZjLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBwMSA9IHAyOworICAgICAg
ICBBU1NFUlRfRVEoJmMsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywg
cDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBS
ZWZMb2dnZXIqPiBwMygmYSk7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIERl
cml2ZWRSZWZMb2dnZXIqPiBwNCgmYyk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lz
b25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAg
ICBwMyA9IHA0OworICAgICAgICBBU1NFUlRfRVEoJmMsIHAzLnVucG9pc29uZWQoKSk7CisgICAg
ICAgIEFTU0VSVF9FUSgmYywgcDQudW5wb2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJV
RShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygp
ICE9IHA0LmJpdHMoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25l
ZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0
ci51bnBvaXNvbmVkKCkpOworICAgICAgICBwdHIgPSAmYzsKKyAgICAgICAgQVNTRVJUX0VRKCZj
LCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBv
aXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKKyAgICAgICAgQ29uc3RFeHByUG9p
c29uZWQ8UG9pc29uQSwgRGVyaXZlZFJlZkxvZ2dlcio+IHAyKCZjKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHAyLnVucG9p
c29uZWQoKSk7CisgICAgICAgIHAxID0gV1RGTW92ZShwMik7CisgICAgICAgIEFTU0VSVF9FUSgm
YywgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMi51bnBvaXNvbmVk
KCkpOworCisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAz
KCZhKTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgRGVyaXZlZFJlZkxvZ2dl
cio+IHA0KCZjKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAg
ICAgICBBU1NFUlRfRVEoJmMsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIHAzID0gV1RGTW92
ZShwNCk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAg
QVNTRVJUX0VRKCZjLCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAx
LmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0g
cDQuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBv
aXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVu
cG9pc29uZWQoKSk7CisgICAgICAgIHB0ciA9IHB0cjsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBw
dHIudW5wb2lzb25lZCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNv
bmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwg
cHRyLnVucG9pc29uZWQoKSk7CisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRp
YWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW5rbm93
bi1wcmFnbWFzIgorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1Xc2VsZi1tb3Zl
IgorI2VuZGlmCisgICAgICAgIHB0ciA9IFdURk1vdmUocHRyKTsKKyNpZiBDT01QSUxFUihDTEFO
RykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKyNlbmRpZgorICAgICAgICBBU1NFUlRf
RVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0KK30KKworVEVTVChXVEZfQ29uc3RFeHBy
UG9pc29uZWQsIFN3YXApCit7CisgICAgUmVmTG9nZ2VyIGEoImEiKTsKKyAgICBSZWZMb2dnZXIg
YigiYiIpOworCisgICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZM
b2dnZXIqPiBwMSgmYSk7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxv
Z2dlcio+IHAyKCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwor
ICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHAxLnN3YXAo
cDIpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFT
U0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBDb25zdEV4cHJQb2lzb25l
ZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygmYSk7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVk
PFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51
bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7Cisg
ICAgICAgIHAzLnN3YXAocDQpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAzLnVucG9pc29uZWQo
KSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDQudW5wb2lzb25lZCgpKTsKKworICAgICAgICBB
U1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUo
cDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9
PSBwMy5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMi5iaXRzKCkgIT0gcDQuYml0cygp
KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJl
ZkxvZ2dlcio+IHAxKCZhKTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVm
TG9nZ2VyKj4gcDIoJmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7
CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgc3dhcChw
MSwgcDIpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAg
IEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBDb25zdEV4cHJQb2lz
b25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygmYSk7CisgICAgICAgIENvbnN0RXhwclBvaXNv
bmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBw
My51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7
CisgICAgICAgIHN3YXAocDMsIHA0KTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMy51bnBvaXNv
bmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAg
ICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9U
UlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRz
KCkgPT0gcDMuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDIuYml0cygpICE9IHA0LmJp
dHMoKSk7CisgICAgfQorfQorCitzdGF0aWMgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVm
TG9nZ2VyKj4gcG9pc29uZWRQdHJGb28oUmVmTG9nZ2VyJiBsb2dnZXIpCit7CisgICAgcmV0dXJu
IENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+KCZsb2dnZXIpOworfQorCitU
RVNUKFdURl9Db25zdEV4cHJQb2lzb25lZCwgUmV0dXJuVmFsdWUpCit7CisgICAgRGVyaXZlZFJl
ZkxvZ2dlciBhKCJhIik7CisKKyAgICB7CisgICAgICAgIGF1dG8gcHRyID0gcG9pc29uZWRQdHJG
b28oYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAg
IEFTU0VSVF9FUSgmYSwgJipwdHIpOworICAgICAgICBBU1NFUlRfRVEoJmEubmFtZSwgJnB0ci0+
bmFtZSk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCisKSW5kZXg6
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZC5jcHAJKG5vbmV4aXN0ZW50
KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMzYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiUmVmTG9nZ2Vy
LmgiCisjaW5jbHVkZSA8d3RmL0V4cG9ydE1hY3Jvcy5oPgorI2luY2x1ZGUgPHd0Zi9Qb2lzb25l
ZC5oPgorCisjaWYgX19jcGx1c3BsdXMgPCAyMDE0MDJMTAorI2Vycm9yICJUb29sY2hhaW4gaXMg
bm90IHN1cHBvcnRpbmcgQysrIDE0IgorI2VuZGlmCisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
IHsKKworZXh0ZXJuICJDIiBXVEZfRVhQT1JUREFUQSB1aW50cHRyX3QgZ190ZXN0UG9pc29uQTsK
K2V4dGVybiAiQyIgV1RGX0VYUE9SVERBVEEgdWludHB0cl90IGdfdGVzdFBvaXNvbkI7CitleHRl
cm4gdm9pZCBpbml0aWFsaXplVGVzdFBvaXNvbigpOworCisvLyBGb3IgdGhlc2UgdGVzdHMsIHdl
IG5lZWQgYSBiYXNlIGNsYXNzIGFuZCBhIGRlcml2ZWQgY2xhc3MuIEZvciB0aGlzIHB1cnBvc2Us
CisvLyB3ZSByZXVzZSB0aGUgUmVmTG9nZ2VyIGFuZCBEZXJpdmVkUmVmTG9nZ2VyIGNsYXNzZXMu
CisKK1RFU1QoV1RGX1BvaXNvbmVkLCBCYXNpYykKK3sKKyAgICBpbml0aWFsaXplVGVzdFBvaXNv
bigpOworICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOworCisgICAgUG9pc29uZWQ8Z190ZXN0
UG9pc29uQSwgUmVmTG9nZ2VyKj4gZW1wdHk7CisgICAgQVNTRVJUX0VRKG51bGxwdHIsIGVtcHR5
LnVucG9pc29uZWQoKSk7CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEs
IFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29u
ZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgJipwdHIpOworICAgICAgICBBU1NFUlRfRVEo
JmEubmFtZSwgJnB0ci0+bmFtZSk7CisgICAgfQorCisgICAgeworICAgICAgICBQb2lzb25lZDxn
X3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIgPSAmYTsKKyAgICAgICAgQVNTRVJUX0VRKCZh
LCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdf
dGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxID0gJmE7CisgICAgICAgIFBvaXNvbmVkPGdfdGVz
dFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKHAxKTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9p
c29uQiwgUmVmTG9nZ2VyKj4gcDMocDEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9p
c29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVF
KHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkg
IT0gcDMuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBv
aXNvbkEsIFJlZkxvZ2dlcio+IHAxID0gJmE7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNv
bkEsIFJlZkxvZ2dlcio+IHAyID0gcDE7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIs
IFJlZkxvZ2dlcio+IHAzID0gcDE7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25l
ZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBB
U1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEu
Yml0cygpID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBw
My5iaXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29u
QSwgUmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwg
UmVmTG9nZ2VyKj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51
bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CisK
KyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMgPSAmYTsKKyAg
ICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQgPSBXVEZNb3ZlKHAz
KTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NF
UlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0
cygpID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5i
aXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwg
UmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVm
TG9nZ2VyKj4gcDIoV1RGTW92ZShwMSkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9p
c29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKKworICAg
ICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMyA9ICZhOworICAgICAg
ICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwNChXVEZNb3ZlKHAzKSk7Cisg
ICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VR
KCZhLCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9
PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygp
KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIERlcml2
ZWRSZWZMb2dnZXIqPiBwMSA9ICZhOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBS
ZWZMb2dnZXIqPiBwMiA9IHAxOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZM
b2dnZXIqPiBwMyA9IHAxOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7
CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMo
KSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDMuYml0
cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIERl
cml2ZWRSZWZMb2dnZXIqPiBwMSA9ICZhOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25B
LCBSZWZMb2dnZXIqPiBwMiA9IFdURk1vdmUocDEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAx
LnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsK
KworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDMg
PSAmYTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQgPSBX
VEZNb3ZlKHAzKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAg
ICAgICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RS
VUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMo
KSAhPSBwNC5iaXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0
UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIu
dW5wb2lzb25lZCgpKTsKKyAgICAgICAgcHRyLmNsZWFyKCk7CisgICAgICAgIEFTU0VSVF9FUShu
dWxscHRyLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICB9Cit9CisKK1RFU1QoV1RGX1BvaXNvbmVk
LCBBc3NpZ25tZW50KQoreworICAgIGluaXRpYWxpemVUZXN0UG9pc29uKCk7CisgICAgRGVyaXZl
ZFJlZkxvZ2dlciBhKCJhIik7CisgICAgUmVmTG9nZ2VyIGIoImIiKTsKKyAgICBEZXJpdmVkUmVm
TG9nZ2VyIGMoImMiKTsKKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwg
UmVmTG9nZ2VyKj4gcDEoJmEpOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZM
b2dnZXIqPiBwMigmYik7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBwMSA9IHAy
OworICAgICAgICBBU1NFUlRfRVEoJmIsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VS
VF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lz
b25BLCBSZWZMb2dnZXIqPiBwMygmYSk7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIs
IFJlZkxvZ2dlcio+IHA0KCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVk
KCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIHAz
ID0gcDQ7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAg
QVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAx
LmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0g
cDQuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNv
bkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9p
c29uZWQoKSk7CisgICAgICAgIHB0ciA9ICZiOworICAgICAgICBBU1NFUlRfRVEoJmIsIHB0ci51
bnBvaXNvbmVkKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9p
c29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgcHRyID0gbnVsbHB0cjsKKyAgICAgICAgQVNTRVJUX0VRKG51
bGxwdHIsIHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29u
ZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOworICAgICAgICBQb2lzb25lZDxn
X3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMigmYik7CisgICAgICAgIEFTU0VSVF9FUSgmYSwg
cDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkp
OworICAgICAgICBwMSA9IFdURk1vdmUocDIpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAxLnVu
cG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKKwor
ICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygmYSk7CisgICAg
ICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KCZiKTsKKyAgICAgICAg
QVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHA0
LnVucG9pc29uZWQoKSk7CisgICAgICAgIHAzID0gV1RGTW92ZShwNCk7CisgICAgICAgIEFTU0VS
VF9FUSgmYiwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBv
aXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkp
OworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9CisK
KyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZh
KTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgRGVyaXZlZFJlZkxvZ2dlcio+IHAy
KCZjKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBB
U1NFUlRfRVEoJmMsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHAxID0gcDI7CisgICAgICAg
IEFTU0VSVF9FUSgmYywgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBw
Mi51bnBvaXNvbmVkKCkpOworCisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxv
Z2dlcio+IHAzKCZhKTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgRGVyaXZlZFJl
ZkxvZ2dlcio+IHA0KCZjKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkp
OworICAgICAgICBBU1NFUlRfRVEoJmMsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIHAzID0g
cDQ7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNT
RVJUX0VRKCZjLCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJp
dHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQu
Yml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEs
IFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29u
ZWQoKSk7CisgICAgICAgIHB0ciA9ICZjOworICAgICAgICBBU1NFUlRfRVEoJmMsIHB0ci51bnBv
aXNvbmVkKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29u
QSwgUmVmTG9nZ2VyKj4gcDEoJmEpOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBE
ZXJpdmVkUmVmTG9nZ2VyKj4gcDIoJmMpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9p
c29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDIudW5wb2lzb25lZCgpKTsKKyAgICAg
ICAgcDEgPSBXVEZNb3ZlKHAyKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMS51bnBvaXNvbmVk
KCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAg
UG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOworICAgICAgICBQb2lz
b25lZDxnX3Rlc3RQb2lzb25CLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDQoJmMpOworICAgICAgICBB
U1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDQu
dW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDMgPSBXVEZNb3ZlKHA0KTsKKyAgICAgICAgQVNTRVJU
X0VRKCZjLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHA0LnVucG9p
c29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7
CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgIH0KKwor
ICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZh
KTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcHRy
ID0gcHRyOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0K
KworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRy
KCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyNpZiBDT01Q
SUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bmtub3duLXByYWdtYXMiCisjcHJhZ21hIGNsYW5nIGRp
YWdub3N0aWMgaWdub3JlZCAiLVdzZWxmLW1vdmUiCisjZW5kaWYKKyAgICAgICAgcHRyID0gV1RG
TW92ZShwdHIpOworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGlj
IHBvcAorI2VuZGlmCisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7Cisg
ICAgfQorfQorCitURVNUKFdURl9Qb2lzb25lZCwgU3dhcCkKK3sKKyAgICBpbml0aWFsaXplVGVz
dFBvaXNvbigpOworICAgIFJlZkxvZ2dlciBhKCJhIik7CisgICAgUmVmTG9nZ2VyIGIoImIiKTsK
KworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEo
JmEpOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMigmYik7
CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBwMS5zd2FwKHAyKTsKKyAgICAgICAg
QVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAy
LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9n
Z2VyKj4gcDMoJmEpOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIq
PiBwNCgmYik7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAgICBwMy5zd2FwKHA0KTsK
KyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRf
RVEoJmEsIHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygp
ICE9IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRz
KCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDMuYml0cygpKTsKKyAgICAg
ICAgQVNTRVJUX1RSVUUocDIuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQorCisgICAgewor
ICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7CisgICAg
ICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKCZiKTsKKyAgICAgICAg
QVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAy
LnVucG9pc29uZWQoKSk7CisgICAgICAgIHN3YXAocDEsIHAyKTsKKyAgICAgICAgQVNTRVJUX0VR
KCZiLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29u
ZWQoKSk7CisKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMo
JmEpOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7
CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAgICBzd2FwKHAzLCBwNCk7CisgICAgICAg
IEFTU0VSVF9FUSgmYiwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBw
NC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBwMi5i
aXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAg
ICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAzLmJpdHMoKSk7CisgICAgICAgIEFTU0VS
VF9UUlVFKHAyLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgIH0KK30KKworc3RhdGljIFBvaXNv
bmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHBvaXNvbmVkUHRyRm9vKFJlZkxvZ2dlciYg
bG9nZ2VyKQoreworICAgIHJldHVybiBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIq
PigmbG9nZ2VyKTsKK30KKworVEVTVChXVEZfUG9pc29uZWQsIFJldHVyblZhbHVlKQoreworICAg
IGluaXRpYWxpemVUZXN0UG9pc29uKCk7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CisK
KyAgICB7CisgICAgICAgIGF1dG8gcHRyID0gcG9pc29uZWRQdHJGb28oYSk7CisgICAgICAgIEFT
U0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgJipw
dHIpOworICAgICAgICBBU1NFUlRfRVEoJmEubmFtZSwgJnB0ci0+bmFtZSk7CisgICAgfQorfQor
Cit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCisKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1BvaXNvbmVkRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWREYXRhLmNwcAkobm9uZXhpc3RlbnQpCisrKyBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZERhdGEuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDxtdXRleD4KKyNpbmNsdWRl
IDx3dGYvRXhwb3J0TWFjcm9zLmg+CisjaW5jbHVkZSA8d3RmL1BvaXNvbmVkLmg+CisKK25hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJIHsKKworZXh0ZXJuICJDIiBXVEZfRVhQT1JUREFUQSB1aW50cHRy
X3QgZ190ZXN0UG9pc29uQTsKK2V4dGVybiAiQyIgV1RGX0VYUE9SVERBVEEgdWludHB0cl90IGdf
dGVzdFBvaXNvbkI7CitleHRlcm4gdm9pZCBpbml0aWFsaXplVGVzdFBvaXNvbigpOworCit1aW50
cHRyX3QgZ190ZXN0UG9pc29uQTsKK3VpbnRwdHJfdCBnX3Rlc3RQb2lzb25COworCit2b2lkIGlu
aXRpYWxpemVUZXN0UG9pc29uKCkKK3sKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlh
bGl6ZU9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRpYWxpemVPbmNlRmxhZywgW10g
eworICAgICAgICAvLyBNYWtlIHN1cmUgd2UgZ2V0IDIgZGlmZmVyZW50IHBvaXNvbiB2YWx1ZXMu
CisgICAgICAgIGdfdGVzdFBvaXNvbkEgPSBtYWtlUG9pc29uKCk7CisgICAgICAgIHdoaWxlICgh
Z190ZXN0UG9pc29uQiB8fCBnX3Rlc3RQb2lzb25CID09IGdfdGVzdFBvaXNvbkEpCisgICAgICAg
ICAgICBnX3Rlc3RQb2lzb25CID0gbWFrZVBvaXNvbigpOworICAgIH0pOworfQorCit9IC8vIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329189</attachid>
            <date>2017-12-12 18:09:44 -0800</date>
            <delta_ts>2017-12-12 20:25:45 -0800</delta_ts>
            <desc>test for EWS.</desc>
            <filename>bug-180724b.patch</filename>
            <type>text/plain</type>
            <size>44343</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI1ODA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDE3LTEyLTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBG
aWxsIG91dCBzb21lIFBvaXNvbmVkIEFQSXMsIGZpeCBzb21lIGJ1Z3MsIGFuZCBhZGQgc29tZSB0
ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
MDcyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYwMDY4ODQ+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgSkYgQmFzdGllbi4KKworICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlv
blRhYmxlLmg6CisKIDIwMTctMTItMDQgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAK
ICAgICAgICAgV2ViIEluc3BlY3RvcjogbW9kZXJuaXplIEluamVjdGVkU2NyaXB0IGEgYml0Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFi
bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVUcmFuc2l0aW9uVGFibGUuaAkocmV2aXNpb24gMjI1ODA3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMTg3LDggKzE4Nyw4IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBmcmll
bmQgY2xhc3MgU2luZ2xlU2xvdFRyYW5zaXRpb25XZWFrT3duZXI7Ci0gICAgdXNpbmcgUG9pc29u
ZWRUcmFuc2l0aW9uTWFwUHRyID0gSW50MzJQb2lzb25lZDxUcmFuc2l0aW9uTWFwUG9pc29uLCBU
cmFuc2l0aW9uTWFwKj47Ci0gICAgdXNpbmcgUG9pc29uZWRXZWFrSW1wbFB0ciA9IEludDMyUG9p
c29uZWQ8V2Vha0ltcGxQb2lzb24sIFdlYWtJbXBsKj47CisgICAgdXNpbmcgUG9pc29uZWRUcmFu
c2l0aW9uTWFwUHRyID0gQ29uc3RFeHByUG9pc29uZWQ8VHJhbnNpdGlvbk1hcFBvaXNvbiwgVHJh
bnNpdGlvbk1hcCo+OworICAgIHVzaW5nIFBvaXNvbmVkV2Vha0ltcGxQdHIgPSBDb25zdEV4cHJQ
b2lzb25lZDxXZWFrSW1wbFBvaXNvbiwgV2Vha0ltcGwqPjsKIAogICAgIGJvb2wgaXNVc2luZ1Np
bmdsZVNsb3QoKSBjb25zdAogICAgIHsKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjU4MDcpCisrKyBTb3Vy
Y2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDE3LTEy
LTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBGaWxsIG91dCBz
b21lIFBvaXNvbmVkIEFQSXMsIGZpeCBzb21lIGJ1Z3MsIGFuZCBhZGQgc29tZSB0ZXN0cy4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDcyNAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMzYwMDY4ODQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSkYg
QmFzdGllbi4KKworICAgICAgICBBbHNvIHJlbmFtZSBJbnQzMlBvaXNvbmVkIHRvIENvbnN0RXhw
clBvaXNvbmVkLiAgVGhlIGtleSBpdCB0YWtlcyBpcyBhY3R1YWxseSBhCisgICAgICAgIHVpbnQz
Ml90LiAgU28sIEludDMyIGlzIHJlYWxseSBhIG1pc25vbWVyLiAgSW4gYWRkaXRpb24sIHRoZSBr
ZXkgbmVlZHMgdG8gYmUgYQorICAgICAgICBjb25zdGV4cHIuICBTbywgQ29uc3RFeHByUG9pc29u
ZWQgaXMgYSBiZXR0ZXIgbmFtZSBmb3IgaXQuCisKKyAgICAgICAgKiB3dGYvUG9pc29uZWQuY3Bw
OgorICAgICAgICAoV1RGOjptYWtlUG9pc29uKToKKyAgICAgICAgKiB3dGYvUG9pc29uZWQuaDoK
KyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsSGVscGVyOjphc1JlZmVyZW5jZSk6CisgICAgICAg
IChXVEY6OlBvaXNvbmVkSW1wbDo6UG9pc29uZWRJbXBsKToKKyAgICAgICAgKFdURjo6UG9pc29u
ZWRJbXBsOjpjbGVhcik6CisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6b3BlcmF0b3IqIGNv
bnN0KToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvci0+IGNvbnN0KToKKyAg
ICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdU
Rjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKFdURjo6UG9pc29u
ZWRJbXBsOjpvcGVyYXRvcjwgY29uc3QpOgorICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6Om9w
ZXJhdG9yPD0gY29uc3QpOgorICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6Om9wZXJhdG9yPiBj
b25zdCk6CisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6b3BlcmF0b3I+PSBjb25zdCk6Cisg
ICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdURjo6UG9p
c29uZWRJbXBsOjpzd2FwKToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpleGNoYW5nZSk6
CisgICAgICAgIChXVEY6OnN3YXApOgorICAgICAgICAoV1RGOjptYWtlUG9pc29uKToKKyAgICAg
ICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvcj09KTogRGVsZXRlZC4KKwogMjAxNy0xMi0x
MiAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0VTTmV4dF1b
QmlnSW50XSBJbXBsZW1lbnQgQmlnSW50IGxpdGVyYWxzIGFuZCBKU0JpZ0ludApJbmRleDogU291
cmNlL1dURi93dGYvUG9pc29uZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1Bv
aXNvbmVkLmNwcAkocmV2aXNpb24gMjI1ODA3KQorKysgU291cmNlL1dURi93dGYvUG9pc29uZWQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXVEYgewogdWlu
dHB0cl90IG1ha2VQb2lzb24oKQogewogICAgIHVpbnRwdHJfdCBrZXkgPSBjcnlwdG9ncmFwaGlj
YWxseVJhbmRvbU51bWJlcigpOwotI2lmIFVTRShKU1ZBTFVFNjQpICYmICFPUyhXSU5ET1dTKQor
I2lmIEVOQUJMRShQT0lTT04pCiAgICAga2V5ID0gKGtleSA8PCAzMikgXiAoc3RhdGljX2Nhc3Q8
dWludHB0cl90PihjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpKSA8PCAzKTsKICAgICAv
LyBFbnN1cmUgdGhhdCB0aGUgcG9pc29uZWQgYml0cyAocG9pbnRlciBeIGtleSkgZG8gbm90IG1h
a2UgYSB2YWxpZCBwb2ludGVyIGFuZAogICAgIC8vIGNhbm5vdCBiZSAwLiBXZSBlbnN1cmUgdGhh
dCBpdCBpcyB6ZXJvIHNvIHRoYXQgdGhlIHBvaXNvbmVkIGJpdHMgY2FuIGFsc28gYmUKQEAgLTUx
LDQgKzUxLDMgQEAgdWludHB0cl90IG1ha2VQb2lzb24oKQogfQogCiB9IC8vIG5hbWVzcGFjZSBX
VEYKLQpJbmRleDogU291cmNlL1dURi93dGYvUG9pc29uZWQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi9Qb2lzb25lZC5oCShyZXZpc2lvbiAyMjU4MDcpCisrKyBTb3VyY2UvV1RGL3d0
Zi9Qb2lzb25lZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMSArMjcsMTQgQEAKIAogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKKyNkZWZpbmUgRU5BQkxFX1BPSVNPTiAxCiAjZGVmaW5l
IEVOQUJMRV9QT0lTT05fQVNTRVJUUyAwCiAKIC8vIE5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIGZv
ciAzMi1iaXQgb3IgT1MoV0lORE9XUykgYnVpbGRzIChiZWNhdXNlIG9mIG1pc3NpbmcgbGxpbnQg
c3VwcG9ydCkuCiAvLyBNYWtlIHN1cmUgaXQncyBkaXNhYmxlZC4KICNpZiBVU0UoSlNWQUxVRTMy
XzY0KSB8fCBPUyhXSU5ET1dTKQorI3VuZGVmIEVOQUJMRV9QT0lTT04KKyNkZWZpbmUgRU5BQkxF
X1BPSVNPTiAwCiAjdW5kZWYgRU5BQkxFX1BPSVNPTl9BU1NFUlRTCiAjZGVmaW5lIEVOQUJMRV9Q
T0lTT05fQVNTRVJUUyAwCiAjZW5kaWYKQEAgLTQwLDE3ICs0Myw0OCBAQCBuYW1lc3BhY2UgV1RG
IHsKIAogdXNpbmcgUG9pc29uZWRCaXRzID0gdWludHB0cl90OwogCituYW1lc3BhY2UgUG9pc29u
ZWRJbXBsSGVscGVyIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBpc0Z1bmN0aW9u
UG9pbnRlciA6IHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgc3RkOjppc19mdW5jdGlvbjx0
eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPFQ+Ojp0eXBlPjo6dmFsdWU+IHsgfTsKKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBpc1ZvaWRQb2ludGVyIDogc3RkOjppbnRlZ3JhbF9j
b25zdGFudDxib29sLCBzdGQ6OmlzX3ZvaWQ8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxU
Pjo6dHlwZT46OnZhbHVlPiB7IH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgaXND
b252ZXJ0aWJsZVRvUmVmZXJlbmNlIDogc3RkOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCAhaXNG
dW5jdGlvblBvaW50ZXI8VD46OnZhbHVlICYmICFpc1ZvaWRQb2ludGVyPFQ+Ojp2YWx1ZT4geyB9
OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgordHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDwhaXND
b252ZXJ0aWJsZVRvUmVmZXJlbmNlPFQ+Ojp2YWx1ZSwgaW50PiYKK2FzUmVmZXJlbmNlKFQpIHsg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgor
dHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxpc0NvbnZlcnRpYmxlVG9SZWZlcmVuY2U8VD46OnZh
bHVlLCB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPFQ+Ojp0eXBlPiYKK2FzUmVmZXJlbmNl
KFQgcHRyKSB7IHJldHVybiAqcHRyOyB9CisKK30gLy8gbmFtZXNwYWNlIFBvaXNvbmVkSW1wbEhl
bHBlcgorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBlLCBLZXlUeXBlIGtleSwgdHlwZW5hbWUg
VCwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfcG9pbnRlcjxUPjo6dmFsdWU+
PgogY2xhc3MgUG9pc29uZWRJbXBsIHsKIHB1YmxpYzoKICAgICBQb2lzb25lZEltcGwoKSB7IH0K
IAotICAgIGV4cGxpY2l0IFBvaXNvbmVkSW1wbChUIHB0cikKKyAgICBQb2lzb25lZEltcGwoVCBw
dHIpCiAgICAgICAgIDogbV9wb2lzb25lZEJpdHMocG9pc29uKHB0cikpCiAgICAgeyB9CiAKICAg
ICBQb2lzb25lZEltcGwoY29uc3QgUG9pc29uZWRJbXBsJikgPSBkZWZhdWx0OwogCisvLyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBLMiwgSzIgazIsIHR5cGVuYW1lIFQyPgorICAgIHRlbXBsYXRlPEtl
eVR5cGUgazIsIHR5cGVuYW1lIFQyPgorICAgIFBvaXNvbmVkSW1wbChjb25zdCBQb2lzb25lZElt
cGw8S2V5VHlwZSwgazIsIFQyPiYgb3RoZXIpCisgICAgICAgIDogbV9wb2lzb25lZEJpdHMocG9p
c29uPFQ+KG90aGVyLnVucG9pc29uZWQoKSkpCisgICAgeyB9CisKKyAgICBQb2lzb25lZEltcGwo
UG9pc29uZWRJbXBsJiYgb3RoZXIpCisgICAgICAgIDogbV9wb2lzb25lZEJpdHMoV1RGTW92ZShv
dGhlci5tX3BvaXNvbmVkQml0cykpCisgICAgeyB9CisKICAgICBleHBsaWNpdCBQb2lzb25lZElt
cGwoUG9pc29uZWRCaXRzIHBvaXNvbmVkQml0cykKICAgICAgICAgOiBtX3BvaXNvbmVkQml0cyhw
b2lzb25lZEJpdHMpCiAgICAgeyB9CkBAIC03Miw3ICsxMDYsMTAgQEAgcHVibGljOgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFUgPSBUPgogICAgIFUgdW5wb2lzb25lZCgpIGNvbnN0IHsgcmV0dXJu
IHVucG9pc29uPFU+KG1fcG9pc29uZWRCaXRzKTsgfQogCi0gICAgQUxXQVlTX0lOTElORSBUIG9w
ZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiB1bnBvaXNvbjxUPihtX3BvaXNvbmVkQml0cyk7IH0K
KyAgICB2b2lkIGNsZWFyKCkgeyBtX3BvaXNvbmVkQml0cyA9IDA7IH0KKworICAgIGF1dG8mIG9w
ZXJhdG9yKigpIGNvbnN0IHsgQVNTRVJUKG1fcG9pc29uZWRCaXRzKTsgcmV0dXJuIFBvaXNvbmVk
SW1wbEhlbHBlcjo6YXNSZWZlcmVuY2UodW5wb2lzb24obV9wb2lzb25lZEJpdHMpKTsgfQorICAg
IEFMV0FZU19JTkxJTkUgVCBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gdW5wb2lzb24obV9w
b2lzb25lZEJpdHMpOyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gUG9pc29uZWRCaXRz
PgogICAgIFUgYml0cygpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxVPihtX3BvaXNvbmVk
Qml0cyk7IH0KQEAgLTgwLDU2ICsxMTcsMTAxIEBAIHB1YmxpYzoKICAgICBib29sIG9wZXJhdG9y
ISgpIGNvbnN0IHsgcmV0dXJuICFtX3BvaXNvbmVkQml0czsgfQogICAgIGV4cGxpY2l0IG9wZXJh
dG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fcG9pc29uZWRCaXRzOyB9CiAKLSAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgUG9pc29uZWRJbXBsJiBiKSBjb25zdAorICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRz
ID09IGIubV9wb2lzb25lZEJpdHM7IH0KKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUG9pc29u
ZWRJbXBsJiBiKSBjb25zdCB7IHJldHVybiBtX3BvaXNvbmVkQml0cyAhPSBiLm1fcG9pc29uZWRC
aXRzOyB9CisgICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgUG9pc29uZWRJbXBsJiBiKSBjb25zdCB7
IHJldHVybiBtX3BvaXNvbmVkQml0cyA8IGIubV9wb2lzb25lZEJpdHM7IH0KKyAgICBib29sIG9w
ZXJhdG9yPD0oY29uc3QgUG9pc29uZWRJbXBsJiBiKSBjb25zdCB7IHJldHVybiBtX3BvaXNvbmVk
Qml0cyA8PSBiLm1fcG9pc29uZWRCaXRzOyB9CisgICAgYm9vbCBvcGVyYXRvcj4oY29uc3QgUG9p
c29uZWRJbXBsJiBiKSBjb25zdCB7IHJldHVybiBtX3BvaXNvbmVkQml0cyA+IGIubV9wb2lzb25l
ZEJpdHM7IH0KKyAgICBib29sIG9wZXJhdG9yPj0oY29uc3QgUG9pc29uZWRJbXBsJiBiKSBjb25z
dCB7IHJldHVybiBtX3BvaXNvbmVkQml0cyA+PSBiLm1fcG9pc29uZWRCaXRzOyB9CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIG9wZXJhdG9yPT0oVSBiKSBjb25zdCB7IHJldHVybiB1
bnBvaXNvbmVkPFU+KCkgPT0gYjsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgb3Bl
cmF0b3IhPShVIGIpIGNvbnN0IHsgcmV0dXJuIHVucG9pc29uZWQ8VT4oKSAhPSBiOyB9CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBvcGVyYXRvcjwoVSBiKSBjb25zdCB7IHJldHVybiB1
bnBvaXNvbmVkPFU+KCkgPCBiOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBvcGVy
YXRvcjw9KFUgYikgY29uc3QgeyByZXR1cm4gdW5wb2lzb25lZDxVPigpIDw9IGI7IH0KKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIG9wZXJhdG9yPihVIGIpIGNvbnN0IHsgcmV0dXJuIHVu
cG9pc29uZWQ8VT4oKSA+IGI7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIG9wZXJh
dG9yPj0oVSBiKSBjb25zdCB7IHJldHVybiB1bnBvaXNvbmVkPFU+KCkgPj0gYjsgfQorCisgICAg
UG9pc29uZWRJbXBsJiBvcGVyYXRvcj0oVCBwdHIpCiAgICAgewotICAgICAgICByZXR1cm4gbV9w
b2lzb25lZEJpdHMgPT0gYi5tX3BvaXNvbmVkQml0czsKKyAgICAgICAgbV9wb2lzb25lZEJpdHMg
PSBwb2lzb24ocHRyKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KKyAgICBQb2lzb25l
ZEltcGwmIG9wZXJhdG9yPShjb25zdCBQb2lzb25lZEltcGwmKSA9IGRlZmF1bHQ7CiAKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBQdHJUeXBlID0gdm9pZCosIHR5cGVuYW1lID0gdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFB0clR5cGU+Ojp2YWx1ZT46OnR5cGU+Ci0gICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFB0clR5cGUgYikKKy8vICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEsyLCBLMiBrMiwgdHlwZW5hbWUgVDI+CisgICAgdGVtcGxhdGU8S2V5VHlwZSBrMiwgdHlwZW5h
bWUgVDI+CisgICAgUG9pc29uZWRJbXBsJiBvcGVyYXRvcj0oY29uc3QgUG9pc29uZWRJbXBsPEtl
eVR5cGUsIGsyLCBUMj4mIG90aGVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHVucG9pc29uZWQ8
UHRyVHlwZT4oKSA9PSBiOworICAgICAgICBtX3BvaXNvbmVkQml0cyA9IHBvaXNvbjxUPihvdGhl
ci51bnBvaXNvbmVkKCkpOworICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgUG9p
c29uZWRJbXBsJiBvcGVyYXRvcj0oVCBwdHIpCisgICAgdm9pZCBzd2FwKFBvaXNvbmVkSW1wbCYg
bykKICAgICB7Ci0gICAgICAgIG1fcG9pc29uZWRCaXRzID0gcG9pc29uKHB0cik7Ci0gICAgICAg
IHJldHVybiAqdGhpczsKKyAgICAgICAgc3RkOjpzd2FwKG1fcG9pc29uZWRCaXRzLCBvLm1fcG9p
c29uZWRCaXRzKTsKKyAgICB9CisKKy8vICAgIHRlbXBsYXRlPHR5cGVuYW1lIEsyLCBLMiBrMiwg
dHlwZW5hbWUgVDI+CisgICAgdGVtcGxhdGU8S2V5VHlwZSBrMiwgdHlwZW5hbWUgVDI+CisgICAg
dm9pZCBzd2FwKFBvaXNvbmVkSW1wbDxLZXlUeXBlLCBrMiwgVDI+JiBvKQorICAgIHsKKyAgICAg
ICAgVCB0MSA9IHRoaXMtPnVucG9pc29uZWQoKTsKKyAgICAgICAgVDIgdDIgPSBvLnVucG9pc29u
ZWQoKTsKKyAgICAgICAgc3RkOjpzd2FwKHQxLCB0Mik7CisgICAgICAgIG1fcG9pc29uZWRCaXRz
ID0gcG9pc29uKHQxKTsKKyAgICAgICAgbyA9IHQyOworICAgIH0KKworICAgIHRlbXBsYXRlPGNs
YXNzIFU+CisgICAgVCBleGNoYW5nZShVJiYgbmV3VmFsdWUpCisgICAgeworICAgICAgICBUIG9s
ZFZhbHVlID0gdW5wb2lzb25lZCgpOworICAgICAgICBtX3BvaXNvbmVkQml0cyA9IHBvaXNvbihz
dGQ6OmZvcndhcmQ8VT4obmV3VmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIG9sZFZhbHVlOwogICAg
IH0KLSAgICBQb2lzb25lZEltcGwmIG9wZXJhdG9yPShjb25zdCBQb2lzb25lZEltcGwmKSA9IGRl
ZmF1bHQ7CiAKIHByaXZhdGU6Ci0jaWYgVVNFKEpTVkFMVUU2NCkKKyNpZiBFTkFCTEUoUE9JU09O
KQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+CiAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUG9p
c29uZWRCaXRzIHBvaXNvbihVIHB0cikgeyByZXR1cm4gcHRyID8gYml0d2lzZV9jYXN0PFBvaXNv
bmVkQml0cz4ocHRyKSBeIGtleSA6IDA7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPgogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFUgdW5w
b2lzb24oUG9pc29uZWRCaXRzIHBvaXNvbmVkQml0cykgeyByZXR1cm4gcG9pc29uZWRCaXRzID8g
Yml0d2lzZV9jYXN0PFU+KHBvaXNvbmVkQml0cyBeIGtleSkgOiBiaXR3aXNlX2Nhc3Q8VT4oMGxs
KTsgfQogI2Vsc2UKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgogICAgIEFMV0FZU19JTkxJTkUg
c3RhdGljIFBvaXNvbmVkQml0cyBwb2lzb24oVSBwdHIpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxQ
b2lzb25lZEJpdHM+KHB0cik7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFUgPSBUPgogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFUgdW5wb2lzb24o
UG9pc29uZWRCaXRzIHBvaXNvbmVkQml0cykgeyByZXR1cm4gYml0d2lzZV9jYXN0PFU+KHBvaXNv
bmVkQml0cyk7IH0KICNlbmRpZgogCiAgICAgUG9pc29uZWRCaXRzIG1fcG9pc29uZWRCaXRzIHsg
MCB9OwogfTsKIAotdGVtcGxhdGU8dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQ+Ci11c2luZyBQ
b2lzb25lZCA9IFBvaXNvbmVkSW1wbDx1aW50cHRyX3QmLCBrZXksIFQ+OwordGVtcGxhdGU8dHlw
ZW5hbWUgSzEsIEsxIGsxLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgSzIsIEsyIGsyLCB0eXBlbmFt
ZSBUMj4KK2lubGluZSB2b2lkIHN3YXAoUG9pc29uZWRJbXBsPEsxLCBrMSwgVDE+JiBhLCBQb2lz
b25lZEltcGw8SzIsIGsyLCBUMj4mIGIpCit7CisgICAgYS5zd2FwKGIpOworfQogCi0jaWYgVVNF
KEpTVkFMVUU2NCkKLXRlbXBsYXRlPHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVD4KLXVzaW5nIElu
dDMyUG9pc29uZWQgPSBQb2lzb25lZEltcGw8dWludHB0cl90LCBzdGF0aWNfY2FzdDx1aW50cHRy
X3Q+KGtleSkgPDwgMzIsIFQ+OworV1RGX0VYUE9SVF9QUklWQVRFIHVpbnRwdHJfdCBtYWtlUG9p
c29uKCk7CisKK2lubGluZSBjb25zdGV4cHIgdWludHB0cl90IG1ha2VQb2lzb24odWludDMyX3Qg
a2V5KQoreworI2lmIEVOQUJMRShQT0lTT04pCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnRw
dHJfdD4oMHg4MDAwMDAwMCB8IGtleSkgPDwgMzI7CiAjZWxzZQotdGVtcGxhdGU8dWludDMyX3Qs
IHR5cGVuYW1lIFQ+Ci11c2luZyBJbnQzMlBvaXNvbmVkID0gUG9pc29uZWRJbXBsPHVpbnRwdHJf
dCwgMCwgVD47CisgICAgcmV0dXJuICh2b2lkKWtleSwgMDsKICNlbmRpZgorfQogCi1XVEZfRVhQ
T1JUX1BSSVZBVEUgdWludHB0cl90IG1ha2VQb2lzb24oKTsKK3RlbXBsYXRlPHVpbnRwdHJfdCYg
a2V5LCB0eXBlbmFtZSBUPgordXNpbmcgUG9pc29uZWQgPSBQb2lzb25lZEltcGw8dWludHB0cl90
Jiwga2V5LCBUPjsKKwordGVtcGxhdGU8dWludDMyX3Qga2V5LCB0eXBlbmFtZSBUPgordXNpbmcg
Q29uc3RFeHByUG9pc29uZWQgPSBQb2lzb25lZEltcGw8dWludHB0cl90LCBtYWtlUG9pc29uKGtl
eSksIFQ+OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAotdXNpbmcgV1RGOjpJbnQzMlBvaXNvbmVk
OwordXNpbmcgV1RGOjpDb25zdEV4cHJQb2lzb25lZDsKIHVzaW5nIFdURjo6UG9pc29uZWQ7CiB1
c2luZyBXVEY6OlBvaXNvbmVkQml0czsKIHVzaW5nIFdURjo6bWFrZVBvaXNvbjsKSW5kZXg6IFRv
b2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIy
NTgxNikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDE3LTEyLTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBG
aWxsIG91dCBzb21lIFBvaXNvbmVkIEFQSXMsIGZpeCBzb21lIGJ1Z3MsIGFuZCBhZGQgc29tZSB0
ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
MDcyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYwMDY4ODQ+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgSkYgQmFzdGllbi4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29uc3RFeHBy
UG9pc29uZWQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkLmNwcDogQWRkZWQuCisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjppbml0aWFsaXplVGVzdFBvaXNvbik6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lz
b25lZERhdGEuY3BwOiBBZGRlZC4KKwogMjAxNy0xMi0xMiAgSm9uYXRoYW4gQmVkYXJkICA8amJl
ZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgTW9iaWxlTWluaUJyb3dzZXIgdXNpbmcgdGhlIHdy
b25nIHRvb2xjaGFpbgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CShyZXZpc2lv
biAyMjU4MDcpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC05NSw2ICs5NSw3IEBAIHNldChUZXN0V1RGX1NPVVJDRVMKICAgICAke1RFU1RX
RUJLSVRBUElfRElSfS9UZXN0cy9XVEYvQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcAog
ICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9Db25jdXJyZW50UHRySGFzaFNldC5j
cHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvQ29uZGl0aW9uLmNwcAorICAg
ICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9Db25zdEV4cHJQb2lzb25lZC5jcHAKICAg
ICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcAogICAg
ICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9EYXRlTWF0aC5jcHAKICAgICAke1RFU1RX
RUJLSVRBUElfRElSfS9UZXN0cy9XVEYvRGVxdWUuY3BwCkBAIC0xMjIsNiArMTIzLDggQEAgc2V0
KFRlc3RXVEZfU09VUkNFUwogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9PcHRp
b25hbC5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvT3B0aW9uU2V0LmNw
cAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9QYXJraW5nTG90LmNwcAorICAg
ICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9Qb2lzb25lZC5jcHAKKyAgICAke1RFU1RX
RUJLSVRBUElfRElSfS9UZXN0cy9XVEYvUG9pc29uZWREYXRhLmNwcAogICAgICR7VEVTVFdFQktJ
VEFQSV9ESVJ9L1Rlc3RzL1dURi9Qcmlvcml0eVF1ZXVlLmNwcAogICAgICR7VEVTVFdFQktJVEFQ
SV9ESVJ9L1Rlc3RzL1dURi9SZWRCbGFja1RyZWUuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJ
Un0vVGVzdHMvV1RGL1JlZi5jcHAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAyMjU4MDcpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzU2LDYgKzc1Niw5IEBACiAJCUY2
QjdCRTk3MTc0NjlCOTYwMDhBMzQ0NSAvKiBhc3NvY2lhdGUtZm9ybS1jb250cm9scy5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2QjdC
RTk2MTc0NjlCN0UwMDhBMzQ0NSAvKiBhc3NvY2lhdGUtZm9ybS1jb250cm9scy5odG1sICovOyB9
OwogCQlGNkY0OUM2QjE1NTQ1Q0E3MDAwN0YzOUQgLyogRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNo
ZV9CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjZGNDlDNjYxNTU0NUM4RDAwMDdGMzlEIC8qIERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGVf
QnVuZGxlLmNwcCAqLzsgfTsKIAkJRjZGRERERDYxNDI0MUM2RjAwNEYxNzI5IC8qIHB1c2gtc3Rh
dGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNkZERERENTE0MjQxQzQ4MDA0RjE3MjkgLyogcHVzaC1zdGF0ZS5odG1sICovOyB9Owor
CQlGRTA1RkFFRjFGRTA2NDVCMDAwOTMyMzAgLyogUG9pc29uZWQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwNUZBRUUxRkUwNjQzRDAwMDkzMjMw
IC8qIFBvaXNvbmVkLmNwcCAqLzsgfTsKKwkJRkUwNUZBRjExRkUwOENENDAwMDkzMjMwIC8qIENv
bnN0RXhwclBvaXNvbmVkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFMDVGQUYwMUZFMDhDQ0QwMDA5MzIzMCAvKiBDb25zdEV4cHJQb2lzb25lZC5j
cHAgKi87IH07CisJCUZFMDVGQUYzMUZFMEI0MkIwMDA5MzIzMCAvKiBQb2lzb25lZERhdGEuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwNUZBRjIx
RkUwQjNDQjAwMDkzMjMwIC8qIFBvaXNvbmVkRGF0YS5jcHAgKi87IH07CiAvKiBFbmQgUEJYQnVp
bGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rp
b24gKi8KQEAgLTE4NTcsNiArMTg2MCw5IEBACiAJCUY2RjQ5QzY3MTU1NDVDOEQwMDA3RjM5RCAv
KiBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGNkZEREREMjE0MjQxQUQ0MDA0RjE3MjkgLyogUHJpdmF0ZUJyb3dz
aW5nUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUHJpdmF0ZUJyb3dzaW5nUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2su
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNkZERERENTE0MjQxQzQ4MDA0RjE3
MjkgLyogcHVzaC1zdGF0ZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gInB1c2gt
c3RhdGUuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMDVGQUVFMUZFMDY0
M0QwMDA5MzIzMCAvKiBQb2lzb25lZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBQb2lzb25lZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMDVG
QUYwMUZFMDhDQ0QwMDA5MzIzMCAvKiBDb25zdEV4cHJQb2lzb25lZC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb25zdEV4cHJQb2lzb25lZC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMDVGQUYyMUZFMEIzQ0IwMDA5MzIzMCAvKiBQb2lzb25l
ZERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9pc29uZWRE
YXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVCNkY3NEUxQjJCQTQ0RTAw
OUU0OTIyIC8qIE5ha2VkUHRyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE5ha2VkUHRyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhG
aWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIApAQCAtMjYxMyw2ICsyNjE5LDcgQEAKIAkJCQlBN0E5
NjZEQTE0MEVDQ0M4MDA1RUY5QjQgLyogQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcCAq
LywKIAkJCQkwRjMwQ0I1QjFGQ0UxNzkyMDA0QjUzMjMgLyogQ29uY3VycmVudFB0ckhhc2hTZXQu
Y3BwICovLAogCQkJCTBGRUFFMzY3MUI3RDE5Q0IwMENFMTdGMiAvKiBDb25kaXRpb24uY3BwICov
LAorCQkJCUZFMDVGQUYwMUZFMDhDQ0QwMDA5MzIzMCAvKiBDb25zdEV4cHJQb2lzb25lZC5jcHAg
Ki8sCiAJCQkJNTE3MTRFQjkxRDA4NzQxNjAwNDcyM0M0IC8qIENyb3NzVGhyZWFkVGFzay5jcHAg
Ki8sCiAJCQkJMjZBMkM3MkUxNUUyRTczQzAwNUIxQTE0IC8qIENTdHJpbmcuY3BwICovLAogCQkJ
CTdBQTAyMUJBMUFCMDlFQTcwMDUyOTUzRiAvKiBEYXRlTWF0aC5jcHAgKi8sCkBAIC0yNjQ2LDYg
KzI2NTMsOCBAQAogCQkJCTFBRkRFNjU0MTk1M0IyQzAwMEM0OEZGQSAvKiBPcHRpb25hbC5jcHAg
Ki8sCiAJCQkJQ0U1MEQ4QzgxQzg2NjVDRTAwNzJFQTVBIC8qIE9wdGlvblNldC5jcHAgKi8sCiAJ
CQkJMEZFNDQ3OTcxQjc2RjFFMzAwOTQ5OEVCIC8qIFBhcmtpbmdMb3QuY3BwICovLAorCQkJCUZF
MDVGQUVFMUZFMDY0M0QwMDA5MzIzMCAvKiBQb2lzb25lZC5jcHAgKi8sCisJCQkJRkUwNUZBRjIx
RkUwQjNDQjAwMDkzMjMwIC8qIFBvaXNvbmVkRGF0YS5jcHAgKi8sCiAJCQkJNTNFQzI1M0YxRTk2
QkM4MDAwMDgzMUI5IC8qIFByaW9yaXR5UXVldWUuY3BwICovLAogCQkJCTBGQzZDNENCMTQxMDI3
RTAwMDVCN0YwQyAvKiBSZWRCbGFja1RyZWUuY3BwICovLAogCQkJCTkzQTQyN0FBMTgwREEyNjQw
MENEMjRENyAvKiBSZWYuY3BwICovLApAQCAtMzE4MCw2ICszMTg5LDcgQEAKIAkJCQk2QkZEMjk0
QzFENUU2QzFEMDA4RUM5NjggLyogSGFzaENvdW50ZWRTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTMzRDYzMUQxRkNCNzYyMDAwMzJFQ0Q2IC8qIEhhc2hlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3QzgzREVEMjFEMEE1OTBDMDBGRUJDRjMgLyogSGFzaE1hcC5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlGRTA1RkFGMzFGRTBCNDJCMDAwOTMyMzAgLyogUG9pc29uZWREYXRhLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdDODNERUQ0MUQwQTU5MEMwMEZFQkNGMyAvKiBIYXNoU2V0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTdDODNERUUwMUQwQTU5MEMwMEZFQkNGMyAvKiBJbnRlZ2VyVG9T
dHJpbmdDb252ZXJzaW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBMDUwOTQxMUZCOUYwNjQw
MEIzM0ZCOCAvKiBKU09OVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMTkwLDYgKzMyMDAs
NyBAQAogCQkJCTdDODNERjFEMUQwQTU5MEMwMEZFQkNGMyAvKiBMb2NrLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE1N0Q1NEY2MUYzMzk1RDAwMEE5N0FBNyAvKiBMb2dnZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0M4M0RFRUQxRDBBNTkwQzAwRkVCQ0YzIC8qIE1hdGhFeHRyYXMuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJRkUwNUZBRjExRkUwOENENDAwMDkzMjMwIC8qIENvbnN0RXhwclBv
aXNvbmVkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERUVGMUQwQTU5MEMwMEZFQkNGMyAv
KiBNRDUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RFRjExRDBBNTkwQzAwRkVCQ0YzIC8q
IE1lZGlhVGltZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVGNjFEMEE1OTBDMDBGRUJD
RjMgLyogTWV0YUFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMyMTAsNiArMzIyMSw3
IEBACiAJCQkJN0M4M0RGMDUxRDBBNTkwQzAwRkVCQ0YzIC8qIFJ1bkxvb3AuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0M4M0RGMjYxRDBBNTkwQzAwRkVCQ0YzIC8qIFNhdHVyYXRlZEFyaXRobWV0
aWNPcGVyYXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMzUyNEFFMUQ2M0E0RkIwMDMx
NzI5QiAvKiBTY29wZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTA1RkFFRjFGRTA2NDVCMDAw
OTMyMzAgLyogUG9pc29uZWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGMTIxRDBBNTkw
QzAwRkVCQ0YzIC8qIFNjb3BlZExhbWJkYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREYz
RDFEMEE1OTBDMDBGRUJDRjMgLyogU2V0Rm9yU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0M4M0RGMkExRDBBNTkwQzAwRkVCQ0YzIC8qIFNIQTEuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4
OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Db25zdEV4cHJQb2lzb25lZC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29uc3RFeHByUG9pc29u
ZWQuY3BwCShub25leGlzdGVudCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nv
bnN0RXhwclBvaXNvbmVkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM1MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2luY2x1ZGUgIlJlZkxvZ2dlci5oIgorI2luY2x1ZGUgPG11dGV4PgorI2luY2x1
ZGUgPHd0Zi9Qb2lzb25lZC5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRp
YyBjb25zdCB1aW50MzJfdCBQb2lzb25BID0gMHhhYWFhOworc3RhdGljIGNvbnN0IHVpbnQzMl90
IFBvaXNvbkIgPSAweGJiYmI7CisKKy8vIEZvciB0aGVzZSB0ZXN0cywgd2UgbmVlZCBhIGJhc2Ug
Y2xhc3MgYW5kIGEgZGVyaXZlZCBjbGFzcy4gRm9yIHRoaXMgcHVycG9zZSwKKy8vIHdlIHJldXNl
IHRoZSBSZWZMb2dnZXIgYW5kIERlcml2ZWRSZWZMb2dnZXIgY2xhc3Nlcy4KKworVEVTVChXVEZf
Q29uc3RFeHByUG9pc29uZWQsIEJhc2ljKQoreworICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIp
OworCisgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gZW1wdHk7Cisg
ICAgQVNTRVJUX0VRKG51bGxwdHIsIGVtcHR5LnVucG9pc29uZWQoKSk7CisKKyAgICB7CisgICAg
ICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAg
ICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgm
YSwgJipwdHIpOworICAgICAgICBBU1NFUlRfRVEoJmEubmFtZSwgJnB0ci0+bmFtZSk7CisgICAg
fQorCisgICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIq
PiBwdHIgPSAmYTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAg
ICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dl
cio+IHAxID0gJmE7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dl
cio+IHAyKHAxKTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2Vy
Kj4gcDMocDEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAg
ICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZh
LCBwMy51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBw
Mi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDMuYml0cygpKTsK
KyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxv
Z2dlcio+IHAxID0gJmE7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxv
Z2dlcio+IHAyID0gcDE7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxv
Z2dlcio+IHAzID0gcDE7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRf
RVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygp
ID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBwMy5iaXRz
KCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwg
UmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwg
UmVmTG9nZ2VyKj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51
bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CisK
KyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMgPSAmYTsK
KyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQgPSBXVEZN
b3ZlKHAzKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAg
ICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUo
cDEuYml0cygpID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAh
PSBwNC5iaXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8
UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8
UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoV1RGTW92ZShwMSkpOworICAgICAgICBBU1NFUlRfRVEo
JmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25l
ZCgpKTsKKworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBw
MyA9ICZhOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBw
NChXVEZNb3ZlKHAzKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZhLCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VS
VF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5i
aXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBv
aXNvbmVkPFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMSA9ICZhOworICAgICAgICBDb25z
dEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9IHAxOworICAgICAgICBDb25z
dEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwMyA9IHAxOworICAgICAgICBBU1NF
UlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworCisg
ICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NF
UlRfVFJVRShwMS5iaXRzKCkgIT0gcDMuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAg
IENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMSA9ICZhOwor
ICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9IFdURk1v
dmUocDEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAg
IEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBDb25zdEV4cHJQb2lz
b25lZDxQb2lzb25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDMgPSAmYTsKKyAgICAgICAgQ29uc3RF
eHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQgPSBXVEZNb3ZlKHAzKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEs
IHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAy
LmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwor
ICAgIH0KKworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9n
Z2VyKj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsK
KyAgICAgICAgcHRyLmNsZWFyKCk7CisgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwdHIudW5w
b2lzb25lZCgpKTsKKyAgICB9Cit9CisKK1RFU1QoV1RGX0NvbnN0RXhwclBvaXNvbmVkLCBBc3Np
Z25tZW50KQoreworICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOworICAgIFJlZkxvZ2dlciBi
KCJiIik7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBjKCJjIik7CisKKyAgICB7CisgICAgICAgIENv
bnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKKyAgICAgICAgQ29u
c3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoJmIpOworICAgICAgICBBU1NF
UlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgcDEgPSBwMjsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS51
bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CisK
KyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOwor
ICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7Cisg
ICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VR
KCZiLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAgICBwMyA9IHA0OworICAgICAgICBBU1NFUlRf
RVEoJmIsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lz
b25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsK
KyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQorCisg
ICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIo
JmEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICBw
dHIgPSAmYjsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICB9
CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+
IHB0cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAg
ICAgIHB0ciA9IG51bGxwdHI7CisgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwdHIudW5wb2lz
b25lZCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNv
bkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29u
QSwgUmVmTG9nZ2VyKj4gcDIoJmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29u
ZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAg
cDEgPSBXVEZNb3ZlKHAyKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVkKCkp
OworICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQ29u
c3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOworICAgICAgICBDb25z
dEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7CisgICAgICAgIEFTU0VS
VF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBv
aXNvbmVkKCkpOworICAgICAgICBwMyA9IFdURk1vdmUocDQpOworICAgICAgICBBU1NFUlRfRVEo
JmIsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25l
ZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKyAg
ICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQorCisgICAg
eworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7
CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBw
MigmYyk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAg
QVNTRVJUX0VRKCZjLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBwMSA9IHAyOworICAgICAg
ICBBU1NFUlRfRVEoJmMsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywg
cDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBS
ZWZMb2dnZXIqPiBwMygmYSk7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIERl
cml2ZWRSZWZMb2dnZXIqPiBwNCgmYyk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lz
b25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAg
ICBwMyA9IHA0OworICAgICAgICBBU1NFUlRfRVEoJmMsIHAzLnVucG9pc29uZWQoKSk7CisgICAg
ICAgIEFTU0VSVF9FUSgmYywgcDQudW5wb2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJV
RShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygp
ICE9IHA0LmJpdHMoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25l
ZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0
ci51bnBvaXNvbmVkKCkpOworICAgICAgICBwdHIgPSAmYzsKKyAgICAgICAgQVNTRVJUX0VRKCZj
LCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBv
aXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKKyAgICAgICAgQ29uc3RFeHByUG9p
c29uZWQ8UG9pc29uQSwgRGVyaXZlZFJlZkxvZ2dlcio+IHAyKCZjKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHAyLnVucG9p
c29uZWQoKSk7CisgICAgICAgIHAxID0gV1RGTW92ZShwMik7CisgICAgICAgIEFTU0VSVF9FUSgm
YywgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMi51bnBvaXNvbmVk
KCkpOworCisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAz
KCZhKTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgRGVyaXZlZFJlZkxvZ2dl
cio+IHA0KCZjKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAg
ICAgICBBU1NFUlRfRVEoJmMsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIHAzID0gV1RGTW92
ZShwNCk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAg
QVNTRVJUX0VRKCZjLCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAx
LmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0g
cDQuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBv
aXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVu
cG9pc29uZWQoKSk7CisgICAgICAgIHB0ciA9IHB0cjsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBw
dHIudW5wb2lzb25lZCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNv
bmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwg
cHRyLnVucG9pc29uZWQoKSk7CisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRp
YWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW5rbm93
bi1wcmFnbWFzIgorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1Xc2VsZi1tb3Zl
IgorI2VuZGlmCisgICAgICAgIHB0ciA9IFdURk1vdmUocHRyKTsKKyNpZiBDT01QSUxFUihDTEFO
RykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKyNlbmRpZgorICAgICAgICBBU1NFUlRf
RVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0KK30KKworVEVTVChXVEZfQ29uc3RFeHBy
UG9pc29uZWQsIFN3YXApCit7CisgICAgUmVmTG9nZ2VyIGEoImEiKTsKKyAgICBSZWZMb2dnZXIg
YigiYiIpOworCisgICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZM
b2dnZXIqPiBwMSgmYSk7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxv
Z2dlcio+IHAyKCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwor
ICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHAxLnN3YXAo
cDIpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFT
U0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBDb25zdEV4cHJQb2lzb25l
ZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygmYSk7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVk
PFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51
bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7Cisg
ICAgICAgIHAzLnN3YXAocDQpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAzLnVucG9pc29uZWQo
KSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDQudW5wb2lzb25lZCgpKTsKKworICAgICAgICBB
U1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUo
cDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9
PSBwMy5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMi5iaXRzKCkgIT0gcDQuYml0cygp
KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJl
ZkxvZ2dlcio+IHAxKCZhKTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVm
TG9nZ2VyKj4gcDIoJmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7
CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgc3dhcChw
MSwgcDIpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAg
IEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBDb25zdEV4cHJQb2lz
b25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygmYSk7CisgICAgICAgIENvbnN0RXhwclBvaXNv
bmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBw
My51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7
CisgICAgICAgIHN3YXAocDMsIHA0KTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMy51bnBvaXNv
bmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAg
ICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9U
UlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRz
KCkgPT0gcDMuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDIuYml0cygpICE9IHA0LmJp
dHMoKSk7CisgICAgfQorfQorCitzdGF0aWMgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVm
TG9nZ2VyKj4gcG9pc29uZWRQdHJGb28oUmVmTG9nZ2VyJiBsb2dnZXIpCit7CisgICAgcmV0dXJu
IENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+KCZsb2dnZXIpOworfQorCitU
RVNUKFdURl9Db25zdEV4cHJQb2lzb25lZCwgUmV0dXJuVmFsdWUpCit7CisgICAgRGVyaXZlZFJl
ZkxvZ2dlciBhKCJhIik7CisKKyAgICB7CisgICAgICAgIGF1dG8gcHRyID0gcG9pc29uZWRQdHJG
b28oYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAg
IEFTU0VSVF9FUSgmYSwgJipwdHIpOworICAgICAgICBBU1NFUlRfRVEoJmEubmFtZSwgJnB0ci0+
bmFtZSk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCisKSW5kZXg6
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZC5jcHAJKG5vbmV4aXN0ZW50
KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMzY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiUmVmTG9nZ2Vy
LmgiCisjaW5jbHVkZSA8d3RmL0V4cG9ydE1hY3Jvcy5oPgorI2luY2x1ZGUgPHd0Zi9Qb2lzb25l
ZC5oPgorCisjaWYgX19jcGx1c3BsdXMgPCAyMDE0MDJMTAorI2Vycm9yICJUb29sY2hhaW4gaXMg
bm90IHN1cHBvcnRpbmcgQysrIDE0IgorI2VuZGlmCisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
IHsKKworZXh0ZXJuICJDIiBXVEZfRVhQT1JUREFUQSB1aW50cHRyX3QgZ190ZXN0UG9pc29uQVN0
b3JhZ2U7CitleHRlcm4gIkMiIFdURl9FWFBPUlREQVRBIHVpbnRwdHJfdCBnX3Rlc3RQb2lzb25C
U3RvcmFnZTsKK2V4dGVybiB2b2lkIGluaXRpYWxpemVUZXN0UG9pc29uKCk7CisKK3VpbnRwdHJf
dCYgZ190ZXN0UG9pc29uQSA9IGdfdGVzdFBvaXNvbkFTdG9yYWdlOwordWludHB0cl90JiBnX3Rl
c3RQb2lzb25CID0gZ190ZXN0UG9pc29uQlN0b3JhZ2U7CisKKy8vIEZvciB0aGVzZSB0ZXN0cywg
d2UgbmVlZCBhIGJhc2UgY2xhc3MgYW5kIGEgZGVyaXZlZCBjbGFzcy4gRm9yIHRoaXMgcHVycG9z
ZSwKKy8vIHdlIHJldXNlIHRoZSBSZWZMb2dnZXIgYW5kIERlcml2ZWRSZWZMb2dnZXIgY2xhc3Nl
cy4KKworVEVTVChXVEZfUG9pc29uZWQsIEJhc2ljKQoreworICAgIGluaXRpYWxpemVUZXN0UG9p
c29uKCk7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CisKKyAgICBQb2lzb25lZDxnX3Rl
c3RQb2lzb25BLCBSZWZMb2dnZXIqPiBlbXB0eTsKKyAgICBBU1NFUlRfRVEobnVsbHB0ciwgZW1w
dHkudW5wb2lzb25lZCgpKTsKKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29u
QSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lz
b25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCAmKnB0cik7CisgICAgICAgIEFTU0VSVF9F
USgmYS5uYW1lLCAmcHRyLT5uYW1lKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVk
PGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0ciA9ICZhOworICAgICAgICBBU1NFUlRfRVEo
JmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8
Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWQ8Z190
ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIocDEpOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQ
b2lzb25CLCBSZWZMb2dnZXIqPiBwMyhwMSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOworICAg
ICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RS
VUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMo
KSAhPSBwMy5iaXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0
UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9p
c29uQSwgUmVmTG9nZ2VyKj4gcDIgPSBwMTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29u
QiwgUmVmTG9nZ2VyKj4gcDMgPSBwMTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNv
bmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAg
IEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShw
MS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9
IHAzLmJpdHMoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lz
b25BLCBSZWZMb2dnZXIqPiBwMSA9ICZhOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25B
LCBSZWZMb2dnZXIqPiBwMiA9IFdURk1vdmUocDEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAx
LnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsK
KworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMyA9ICZhOwor
ICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCA9IFdURk1vdmUo
cDMpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFT
U0VSVF9FUSgmYSwgcDQudW5wb2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5i
aXRzKCkgPT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0
LmJpdHMoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25B
LCBSZWZMb2dnZXIqPiBwMSA9ICZhOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBS
ZWZMb2dnZXIqPiBwMihXVEZNb3ZlKHAxKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOworCisg
ICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzID0gJmE7CisgICAg
ICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KFdURk1vdmUocDMpKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRf
RVEoJmEsIHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygp
ID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRz
KCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgRGVy
aXZlZFJlZkxvZ2dlcio+IHAxID0gJmE7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEs
IFJlZkxvZ2dlcio+IHAyID0gcDE7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJl
ZkxvZ2dlcio+IHAzID0gcDE7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgp
KTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NF
UlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0
cygpID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBwMy5i
aXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwg
RGVyaXZlZFJlZkxvZ2dlcio+IHAxID0gJmE7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNv
bkEsIFJlZkxvZ2dlcio+IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwg
cDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkp
OworCisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBw
MyA9ICZhOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCA9
IFdURk1vdmUocDMpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7Cisg
ICAgICAgIEFTU0VSVF9FUSgmYSwgcDQudW5wb2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRf
VFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0
cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rl
c3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0
ci51bnBvaXNvbmVkKCkpOworICAgICAgICBwdHIuY2xlYXIoKTsKKyAgICAgICAgQVNTRVJUX0VR
KG51bGxwdHIsIHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0KK30KKworVEVTVChXVEZfUG9pc29u
ZWQsIEFzc2lnbm1lbnQpCit7CisgICAgaW5pdGlhbGl6ZVRlc3RQb2lzb24oKTsKKyAgICBEZXJp
dmVkUmVmTG9nZ2VyIGEoImEiKTsKKyAgICBSZWZMb2dnZXIgYigiYiIpOworICAgIERlcml2ZWRS
ZWZMb2dnZXIgYygiYyIpOworCisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25B
LCBSZWZMb2dnZXIqPiBwMSgmYSk7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJl
ZkxvZ2dlcio+IHAyKCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkp
OworICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHAxID0g
cDI7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNT
RVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOworCisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBv
aXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29u
QiwgUmVmTG9nZ2VyKj4gcDQoJmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29u
ZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAg
cDMgPSBwNDsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAg
ICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUo
cDEuYml0cygpID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAh
PSBwNC5iaXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9p
c29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgcHRyID0gJmI7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcHRy
LnVucG9pc29uZWQoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQ
b2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51
bnBvaXNvbmVkKCkpOworICAgICAgICBwdHIgPSBudWxscHRyOworICAgICAgICBBU1NFUlRfRVEo
bnVsbHB0ciwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBQb2lz
b25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7CisgICAgICAgIFBvaXNvbmVk
PGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZh
LCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQo
KSk7CisgICAgICAgIHAxID0gV1RGTW92ZShwMik7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDEu
dW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOwor
CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKKyAg
ICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQoJmIpOworICAgICAg
ICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwg
cDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDMgPSBXVEZNb3ZlKHA0KTsKKyAgICAgICAgQVNT
RVJUX0VRKCZiLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVu
cG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMo
KSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgIH0K
KworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEo
JmEpOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4g
cDIoJmMpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAg
IEFTU0VSVF9FUSgmYywgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDEgPSBwMjsKKyAgICAg
ICAgQVNTRVJUX0VRKCZjLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMs
IHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVm
TG9nZ2VyKj4gcDMoJmEpOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBEZXJpdmVk
UmVmTG9nZ2VyKj4gcDQoJmMpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQo
KSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDMg
PSBwNDsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBB
U1NFUlRfRVEoJmMsIHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEu
Yml0cygpID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBw
NC5iaXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29u
QSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lz
b25lZCgpKTsKKyAgICAgICAgcHRyID0gJmM7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcHRyLnVu
cG9pc29uZWQoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lz
b25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEs
IERlcml2ZWRSZWZMb2dnZXIqPiBwMigmYyk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMi51bnBvaXNvbmVkKCkpOworICAg
ICAgICBwMSA9IFdURk1vdmUocDIpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHAxLnVucG9pc29u
ZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDIudW5wb2lzb25lZCgpKTsKKworICAgICAg
ICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygmYSk7CisgICAgICAgIFBv
aXNvbmVkPGdfdGVzdFBvaXNvbkIsIERlcml2ZWRSZWZMb2dnZXIqPiBwNCgmYyk7CisgICAgICAg
IEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBw
NC51bnBvaXNvbmVkKCkpOworICAgICAgICBwMyA9IFdURk1vdmUocDQpOworICAgICAgICBBU1NF
UlRfRVEoJmMsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDQudW5w
b2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygp
KTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQor
CisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIo
JmEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICBw
dHIgPSBwdHI7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAg
fQorCisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBw
dHIoJmEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworI2lmIENP
TVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3Vua25vd24tcHJhZ21hcyIKKyNwcmFnbWEgY2xhbmcg
ZGlhZ25vc3RpYyBpZ25vcmVkICItV3NlbGYtbW92ZSIKKyNlbmRpZgorICAgICAgICBwdHIgPSBX
VEZNb3ZlKHB0cik7CisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0
aWMgcG9wCisjZW5kaWYKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsK
KyAgICB9Cit9CisKK1RFU1QoV1RGX1BvaXNvbmVkLCBTd2FwKQoreworICAgIGluaXRpYWxpemVU
ZXN0UG9pc29uKCk7CisgICAgUmVmTG9nZ2VyIGEoImEiKTsKKyAgICBSZWZMb2dnZXIgYigiYiIp
OworCisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBw
MSgmYSk7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKCZi
KTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NF
UlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHAxLnN3YXAocDIpOworICAgICAg
ICBBU1NFUlRfRVEoJmIsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwg
cDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZM
b2dnZXIqPiBwMygmYSk7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dl
cio+IHA0KCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAg
ICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIHAzLnN3YXAocDQp
OworICAgICAgICBBU1NFUlRfRVEoJmIsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VS
VF9FUSgmYSwgcDQudW5wb2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRz
KCkgIT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJp
dHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMy5iaXRzKCkpOworICAg
ICAgICBBU1NFUlRfVFJVRShwMi5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9CisKKyAgICB7
CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKKyAg
ICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoJmIpOworICAgICAg
ICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwg
cDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgc3dhcChwMSwgcDIpOworICAgICAgICBBU1NFUlRf
RVEoJmIsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lz
b25lZCgpKTsKKworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBw
MygmYSk7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KCZi
KTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NF
UlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIHN3YXAocDMsIHA0KTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZiLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEs
IHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAy
LmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwor
ICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDMuYml0cygpKTsKKyAgICAgICAgQVNT
RVJUX1RSVUUocDIuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQorfQorCitzdGF0aWMgUG9p
c29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcG9pc29uZWRQdHJGb28oUmVmTG9nZ2Vy
JiBsb2dnZXIpCit7CisgICAgcmV0dXJuIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dl
cio+KCZsb2dnZXIpOworfQorCitURVNUKFdURl9Qb2lzb25lZCwgUmV0dXJuVmFsdWUpCit7Cisg
ICAgaW5pdGlhbGl6ZVRlc3RQb2lzb24oKTsKKyAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsK
KworICAgIHsKKyAgICAgICAgYXV0byBwdHIgPSBwb2lzb25lZFB0ckZvbyhhKTsKKyAgICAgICAg
QVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCAm
KnB0cik7CisgICAgICAgIEFTU0VSVF9FUSgmYS5uYW1lLCAmcHRyLT5uYW1lKTsKKyAgICB9Cit9
CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKwpJbmRleDogVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvUG9pc29uZWREYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZERhdGEuY3BwCShub25leGlzdGVudCkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkRGF0YS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgPG11dGV4PgorI2luY2x1
ZGUgPHd0Zi9FeHBvcnRNYWNyb3MuaD4KKyNpbmNsdWRlIDx3dGYvUG9pc29uZWQuaD4KKworbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitleHRlcm4gIkMiIFdURl9FWFBPUlREQVRBIHVpbnRw
dHJfdCBnX3Rlc3RQb2lzb25BU3RvcmFnZTsKK2V4dGVybiAiQyIgV1RGX0VYUE9SVERBVEEgdWlu
dHB0cl90IGdfdGVzdFBvaXNvbkJTdG9yYWdlOworZXh0ZXJuIHZvaWQgaW5pdGlhbGl6ZVRlc3RQ
b2lzb24oKTsKKwordWludHB0cl90IGdfdGVzdFBvaXNvbkFTdG9yYWdlOwordWludHB0cl90IGdf
dGVzdFBvaXNvbkJTdG9yYWdlOworCit2b2lkIGluaXRpYWxpemVUZXN0UG9pc29uKCkKK3sKKyAg
ICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZU9uY2VGbGFnOworICAgIHN0ZDo6Y2Fs
bF9vbmNlKGluaXRpYWxpemVPbmNlRmxhZywgW10geworICAgICAgICAvLyBNYWtlIHN1cmUgd2Ug
Z2V0IDIgZGlmZmVyZW50IHBvaXNvbiB2YWx1ZXMuCisgICAgICAgIGdfdGVzdFBvaXNvbkEgPSBt
YWtlUG9pc29uKCk7CisgICAgICAgIHdoaWxlICghZ190ZXN0UG9pc29uQiB8fCBnX3Rlc3RQb2lz
b25CID09IGdfdGVzdFBvaXNvbkEpCisgICAgICAgICAgICBnX3Rlc3RQb2lzb25CID0gbWFrZVBv
aXNvbigpOworICAgIH0pOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329195</attachid>
            <date>2017-12-12 20:25:45 -0800</date>
            <delta_ts>2017-12-12 20:37:38 -0800</delta_ts>
            <desc>test for EWS.</desc>
            <filename>bug-180724c.patch</filename>
            <type>text/plain</type>
            <size>41082</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI1ODA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDE3LTEyLTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBG
aWxsIG91dCBzb21lIFBvaXNvbmVkIEFQSXMsIGZpeCBzb21lIGJ1Z3MsIGFuZCBhZGQgc29tZSB0
ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
MDcyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYwMDY4ODQ+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgSkYgQmFzdGllbi4KKworICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlv
blRhYmxlLmg6CisKIDIwMTctMTItMDQgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAK
ICAgICAgICAgV2ViIEluc3BlY3RvcjogbW9kZXJuaXplIEluamVjdGVkU2NyaXB0IGEgYml0Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFi
bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVUcmFuc2l0aW9uVGFibGUuaAkocmV2aXNpb24gMjI1ODA3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMTg3LDggKzE4Nyw4IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBmcmll
bmQgY2xhc3MgU2luZ2xlU2xvdFRyYW5zaXRpb25XZWFrT3duZXI7Ci0gICAgdXNpbmcgUG9pc29u
ZWRUcmFuc2l0aW9uTWFwUHRyID0gSW50MzJQb2lzb25lZDxUcmFuc2l0aW9uTWFwUG9pc29uLCBU
cmFuc2l0aW9uTWFwKj47Ci0gICAgdXNpbmcgUG9pc29uZWRXZWFrSW1wbFB0ciA9IEludDMyUG9p
c29uZWQ8V2Vha0ltcGxQb2lzb24sIFdlYWtJbXBsKj47CisgICAgdXNpbmcgUG9pc29uZWRUcmFu
c2l0aW9uTWFwUHRyID0gQ29uc3RFeHByUG9pc29uZWQ8VHJhbnNpdGlvbk1hcFBvaXNvbiwgVHJh
bnNpdGlvbk1hcCo+OworICAgIHVzaW5nIFBvaXNvbmVkV2Vha0ltcGxQdHIgPSBDb25zdEV4cHJQ
b2lzb25lZDxXZWFrSW1wbFBvaXNvbiwgV2Vha0ltcGwqPjsKIAogICAgIGJvb2wgaXNVc2luZ1Np
bmdsZVNsb3QoKSBjb25zdAogICAgIHsKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjU4MDcpCisrKyBTb3Vy
Y2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDE3LTEy
LTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBGaWxsIG91dCBz
b21lIFBvaXNvbmVkIEFQSXMsIGZpeCBzb21lIGJ1Z3MsIGFuZCBhZGQgc29tZSB0ZXN0cy4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDcyNAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMzYwMDY4ODQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSkYg
QmFzdGllbi4KKworICAgICAgICBBbHNvIHJlbmFtZSBJbnQzMlBvaXNvbmVkIHRvIENvbnN0RXhw
clBvaXNvbmVkLiAgVGhlIGtleSBpdCB0YWtlcyBpcyBhY3R1YWxseSBhCisgICAgICAgIHVpbnQz
Ml90LiAgU28sIEludDMyIGlzIHJlYWxseSBhIG1pc25vbWVyLiAgSW4gYWRkaXRpb24sIHRoZSBr
ZXkgbmVlZHMgdG8gYmUgYQorICAgICAgICBjb25zdGV4cHIuICBTbywgQ29uc3RFeHByUG9pc29u
ZWQgaXMgYSBiZXR0ZXIgbmFtZSBmb3IgaXQuCisKKyAgICAgICAgKiB3dGYvUG9pc29uZWQuY3Bw
OgorICAgICAgICAoV1RGOjptYWtlUG9pc29uKToKKyAgICAgICAgKiB3dGYvUG9pc29uZWQuaDoK
KyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsSGVscGVyOjphc1JlZmVyZW5jZSk6CisgICAgICAg
IChXVEY6OlBvaXNvbmVkSW1wbDo6UG9pc29uZWRJbXBsKToKKyAgICAgICAgKFdURjo6UG9pc29u
ZWRJbXBsOjpjbGVhcik6CisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6b3BlcmF0b3IqIGNv
bnN0KToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvci0+IGNvbnN0KToKKyAg
ICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdU
Rjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKFdURjo6UG9pc29u
ZWRJbXBsOjpvcGVyYXRvcjwgY29uc3QpOgorICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6Om9w
ZXJhdG9yPD0gY29uc3QpOgorICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6Om9wZXJhdG9yPiBj
b25zdCk6CisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6b3BlcmF0b3I+PSBjb25zdCk6Cisg
ICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdURjo6UG9p
c29uZWRJbXBsOjpzd2FwKToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpleGNoYW5nZSk6
CisgICAgICAgIChXVEY6OnN3YXApOgorICAgICAgICAoV1RGOjptYWtlUG9pc29uKToKKyAgICAg
ICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvcj09KTogRGVsZXRlZC4KKwogMjAxNy0xMi0x
MiAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0VTTmV4dF1b
QmlnSW50XSBJbXBsZW1lbnQgQmlnSW50IGxpdGVyYWxzIGFuZCBKU0JpZ0ludApJbmRleDogU291
cmNlL1dURi93dGYvUG9pc29uZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1Bv
aXNvbmVkLmNwcAkocmV2aXNpb24gMjI1ODA3KQorKysgU291cmNlL1dURi93dGYvUG9pc29uZWQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXVEYgewogdWlu
dHB0cl90IG1ha2VQb2lzb24oKQogewogICAgIHVpbnRwdHJfdCBrZXkgPSBjcnlwdG9ncmFwaGlj
YWxseVJhbmRvbU51bWJlcigpOwotI2lmIFVTRShKU1ZBTFVFNjQpICYmICFPUyhXSU5ET1dTKQor
I2lmIEVOQUJMRShQT0lTT04pCiAgICAga2V5ID0gKGtleSA8PCAzMikgXiAoc3RhdGljX2Nhc3Q8
dWludHB0cl90PihjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpKSA8PCAzKTsKICAgICAv
LyBFbnN1cmUgdGhhdCB0aGUgcG9pc29uZWQgYml0cyAocG9pbnRlciBeIGtleSkgZG8gbm90IG1h
a2UgYSB2YWxpZCBwb2ludGVyIGFuZAogICAgIC8vIGNhbm5vdCBiZSAwLiBXZSBlbnN1cmUgdGhh
dCBpdCBpcyB6ZXJvIHNvIHRoYXQgdGhlIHBvaXNvbmVkIGJpdHMgY2FuIGFsc28gYmUKQEAgLTUx
LDQgKzUxLDMgQEAgdWludHB0cl90IG1ha2VQb2lzb24oKQogfQogCiB9IC8vIG5hbWVzcGFjZSBX
VEYKLQpJbmRleDogU291cmNlL1dURi93dGYvUG9pc29uZWQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi9Qb2lzb25lZC5oCShyZXZpc2lvbiAyMjU4MDcpCisrKyBTb3VyY2UvV1RGL3d0
Zi9Qb2lzb25lZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMSArMjcsMTQgQEAKIAogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKKyNkZWZpbmUgRU5BQkxFX1BPSVNPTiAxCiAjZGVmaW5l
IEVOQUJMRV9QT0lTT05fQVNTRVJUUyAwCiAKIC8vIE5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIGZv
ciAzMi1iaXQgb3IgT1MoV0lORE9XUykgYnVpbGRzIChiZWNhdXNlIG9mIG1pc3NpbmcgbGxpbnQg
c3VwcG9ydCkuCiAvLyBNYWtlIHN1cmUgaXQncyBkaXNhYmxlZC4KICNpZiBVU0UoSlNWQUxVRTMy
XzY0KSB8fCBPUyhXSU5ET1dTKQorI3VuZGVmIEVOQUJMRV9QT0lTT04KKyNkZWZpbmUgRU5BQkxF
X1BPSVNPTiAwCiAjdW5kZWYgRU5BQkxFX1BPSVNPTl9BU1NFUlRTCiAjZGVmaW5lIEVOQUJMRV9Q
T0lTT05fQVNTRVJUUyAwCiAjZW5kaWYKQEAgLTQwLDE3ICs0Myw0OCBAQCBuYW1lc3BhY2UgV1RG
IHsKIAogdXNpbmcgUG9pc29uZWRCaXRzID0gdWludHB0cl90OwogCituYW1lc3BhY2UgUG9pc29u
ZWRJbXBsSGVscGVyIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBpc0Z1bmN0aW9u
UG9pbnRlciA6IHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgc3RkOjppc19mdW5jdGlvbjx0
eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPFQ+Ojp0eXBlPjo6dmFsdWU+IHsgfTsKKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBpc1ZvaWRQb2ludGVyIDogc3RkOjppbnRlZ3JhbF9j
b25zdGFudDxib29sLCBzdGQ6OmlzX3ZvaWQ8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxU
Pjo6dHlwZT46OnZhbHVlPiB7IH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgaXND
b252ZXJ0aWJsZVRvUmVmZXJlbmNlIDogc3RkOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCAhaXNG
dW5jdGlvblBvaW50ZXI8VD46OnZhbHVlICYmICFpc1ZvaWRQb2ludGVyPFQ+Ojp2YWx1ZT4geyB9
OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgordHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDwhaXND
b252ZXJ0aWJsZVRvUmVmZXJlbmNlPFQ+Ojp2YWx1ZSwgaW50PiYKK2FzUmVmZXJlbmNlKFQpIHsg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgor
dHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxpc0NvbnZlcnRpYmxlVG9SZWZlcmVuY2U8VD46OnZh
bHVlLCB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPFQ+Ojp0eXBlPiYKK2FzUmVmZXJlbmNl
KFQgcHRyKSB7IHJldHVybiAqcHRyOyB9CisKK30gLy8gbmFtZXNwYWNlIFBvaXNvbmVkSW1wbEhl
bHBlcgorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBlLCBLZXlUeXBlIGtleSwgdHlwZW5hbWUg
VCwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfcG9pbnRlcjxUPjo6dmFsdWU+
PgogY2xhc3MgUG9pc29uZWRJbXBsIHsKIHB1YmxpYzoKICAgICBQb2lzb25lZEltcGwoKSB7IH0K
IAotICAgIGV4cGxpY2l0IFBvaXNvbmVkSW1wbChUIHB0cikKKyAgICBQb2lzb25lZEltcGwoVCBw
dHIpCiAgICAgICAgIDogbV9wb2lzb25lZEJpdHMocG9pc29uKHB0cikpCiAgICAgeyB9CiAKICAg
ICBQb2lzb25lZEltcGwoY29uc3QgUG9pc29uZWRJbXBsJikgPSBkZWZhdWx0OwogCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgSzIsIEsyIGsyLCB0eXBlbmFtZSBUMj4KKyAgICBQb2lzb25lZEltcGwo
Y29uc3QgUG9pc29uZWRJbXBsPEsyLCBrMiwgVDI+JiBvdGhlcikKKy8vICAgICAgICA6IG1fcG9p
c29uZWRCaXRzKHBvaXNvbjxUPihvdGhlci51bnBvaXNvbmVkKCkpKQorICAgICAgICA6IG1fcG9p
c29uZWRCaXRzKHBvaXNvbihvdGhlci51bnBvaXNvbmVkKCkpKQorICAgIHsgfQorCisgICAgUG9p
c29uZWRJbXBsKFBvaXNvbmVkSW1wbCYmIG90aGVyKQorICAgICAgICA6IG1fcG9pc29uZWRCaXRz
KFdURk1vdmUob3RoZXIubV9wb2lzb25lZEJpdHMpKQorICAgIHsgfQorCiAgICAgZXhwbGljaXQg
UG9pc29uZWRJbXBsKFBvaXNvbmVkQml0cyBwb2lzb25lZEJpdHMpCiAgICAgICAgIDogbV9wb2lz
b25lZEJpdHMocG9pc29uZWRCaXRzKQogICAgIHsgfQpAQCAtNzIsNyArMTA2LDEwIEBAIHB1Ymxp
YzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4KICAgICBVIHVucG9pc29uZWQoKSBjb25z
dCB7IHJldHVybiB1bnBvaXNvbjxVPihtX3BvaXNvbmVkQml0cyk7IH0KIAotICAgIEFMV0FZU19J
TkxJTkUgVCBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gdW5wb2lzb248VD4obV9wb2lzb25l
ZEJpdHMpOyB9CisgICAgdm9pZCBjbGVhcigpIHsgbV9wb2lzb25lZEJpdHMgPSAwOyB9CisKKyAg
ICBhdXRvJiBvcGVyYXRvciooKSBjb25zdCB7IEFTU0VSVChtX3BvaXNvbmVkQml0cyk7IHJldHVy
biBQb2lzb25lZEltcGxIZWxwZXI6OmFzUmVmZXJlbmNlKHVucG9pc29uKG1fcG9pc29uZWRCaXRz
KSk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIFQgb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIHVu
cG9pc29uKG1fcG9pc29uZWRCaXRzKTsgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFBv
aXNvbmVkQml0cz4KICAgICBVIGJpdHMoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8VT4o
bV9wb2lzb25lZEJpdHMpOyB9CkBAIC04MCw1NiArMTE3LDk5IEBAIHB1YmxpYzoKICAgICBib29s
IG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3BvaXNvbmVkQml0czsgfQogICAgIGV4cGxp
Y2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fcG9pc29uZWRCaXRzOyB9CiAK
LSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUG9pc29uZWRJbXBsJiBiKSBjb25zdAorICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9p
c29uZWRCaXRzID09IGIubV9wb2lzb25lZEJpdHM7IH0KKyAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgUG9pc29uZWRJbXBsJiBiKSBjb25zdCB7IHJldHVybiBtX3BvaXNvbmVkQml0cyAhPSBiLm1f
cG9pc29uZWRCaXRzOyB9CisgICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgUG9pc29uZWRJbXBsJiBi
KSBjb25zdCB7IHJldHVybiBtX3BvaXNvbmVkQml0cyA8IGIubV9wb2lzb25lZEJpdHM7IH0KKyAg
ICBib29sIG9wZXJhdG9yPD0oY29uc3QgUG9pc29uZWRJbXBsJiBiKSBjb25zdCB7IHJldHVybiBt
X3BvaXNvbmVkQml0cyA8PSBiLm1fcG9pc29uZWRCaXRzOyB9CisgICAgYm9vbCBvcGVyYXRvcj4o
Y29uc3QgUG9pc29uZWRJbXBsJiBiKSBjb25zdCB7IHJldHVybiBtX3BvaXNvbmVkQml0cyA+IGIu
bV9wb2lzb25lZEJpdHM7IH0KKyAgICBib29sIG9wZXJhdG9yPj0oY29uc3QgUG9pc29uZWRJbXBs
JiBiKSBjb25zdCB7IHJldHVybiBtX3BvaXNvbmVkQml0cyA+PSBiLm1fcG9pc29uZWRCaXRzOyB9
CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIG9wZXJhdG9yPT0oVSBiKSBjb25zdCB7
IHJldHVybiB1bnBvaXNvbmVkPFU+KCkgPT0gYjsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+
IGJvb2wgb3BlcmF0b3IhPShVIGIpIGNvbnN0IHsgcmV0dXJuIHVucG9pc29uZWQ8VT4oKSAhPSBi
OyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBvcGVyYXRvcjwoVSBiKSBjb25zdCB7
IHJldHVybiB1bnBvaXNvbmVkPFU+KCkgPCBiOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4g
Ym9vbCBvcGVyYXRvcjw9KFUgYikgY29uc3QgeyByZXR1cm4gdW5wb2lzb25lZDxVPigpIDw9IGI7
IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIG9wZXJhdG9yPihVIGIpIGNvbnN0IHsg
cmV0dXJuIHVucG9pc29uZWQ8VT4oKSA+IGI7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBi
b29sIG9wZXJhdG9yPj0oVSBiKSBjb25zdCB7IHJldHVybiB1bnBvaXNvbmVkPFU+KCkgPj0gYjsg
fQorCisgICAgUG9pc29uZWRJbXBsJiBvcGVyYXRvcj0oVCBwdHIpCiAgICAgewotICAgICAgICBy
ZXR1cm4gbV9wb2lzb25lZEJpdHMgPT0gYi5tX3BvaXNvbmVkQml0czsKKyAgICAgICAgbV9wb2lz
b25lZEJpdHMgPSBwb2lzb24ocHRyKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KKyAg
ICBQb2lzb25lZEltcGwmIG9wZXJhdG9yPShjb25zdCBQb2lzb25lZEltcGwmKSA9IGRlZmF1bHQ7
CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQdHJUeXBlID0gdm9pZCosIHR5cGVuYW1lID0gdHlw
ZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFB0clR5cGU+Ojp2YWx1ZT46OnR5
cGU+Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFB0clR5cGUgYikKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBLMiwgSzIgazIsIHR5cGVuYW1lIFQyPgorICAgIFBvaXNvbmVkSW1wbCYgb3BlcmF0
b3I9KGNvbnN0IFBvaXNvbmVkSW1wbDxLMiwgazIsIFQyPiYgb3RoZXIpCiAgICAgewotICAgICAg
ICByZXR1cm4gdW5wb2lzb25lZDxQdHJUeXBlPigpID09IGI7CisgICAgICAgIG1fcG9pc29uZWRC
aXRzID0gcG9pc29uPFQ+KG90aGVyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHJldHVybiAqdGhp
czsKICAgICB9CiAKLSAgICBQb2lzb25lZEltcGwmIG9wZXJhdG9yPShUIHB0cikKKyAgICB2b2lk
IHN3YXAoUG9pc29uZWRJbXBsJiBvKQogICAgIHsKLSAgICAgICAgbV9wb2lzb25lZEJpdHMgPSBw
b2lzb24ocHRyKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICBzdGQ6OnN3YXAobV9w
b2lzb25lZEJpdHMsIG8ubV9wb2lzb25lZEJpdHMpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEsyLCBLMiBrMiwgdHlwZW5hbWUgVDI+CisgICAgdm9pZCBzd2FwKFBvaXNvbmVkSW1w
bDxLMiwgazIsIFQyPiYgbykKKyAgICB7CisgICAgICAgIFQgdDEgPSB0aGlzLT51bnBvaXNvbmVk
KCk7CisgICAgICAgIFQyIHQyID0gby51bnBvaXNvbmVkKCk7CisgICAgICAgIHN0ZDo6c3dhcCh0
MSwgdDIpOworICAgICAgICBtX3BvaXNvbmVkQml0cyA9IHBvaXNvbih0MSk7CisgICAgICAgIG8g
PSB0MjsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBVPgorICAgIFQgZXhjaGFuZ2UoVSYm
IG5ld1ZhbHVlKQorICAgIHsKKyAgICAgICAgVCBvbGRWYWx1ZSA9IHVucG9pc29uZWQoKTsKKyAg
ICAgICAgbV9wb2lzb25lZEJpdHMgPSBwb2lzb24oc3RkOjpmb3J3YXJkPFU+KG5ld1ZhbHVlKSk7
CisgICAgICAgIHJldHVybiBvbGRWYWx1ZTsKICAgICB9Ci0gICAgUG9pc29uZWRJbXBsJiBvcGVy
YXRvcj0oY29uc3QgUG9pc29uZWRJbXBsJikgPSBkZWZhdWx0OwogCiBwcml2YXRlOgotI2lmIFVT
RShKU1ZBTFVFNjQpCisjaWYgRU5BQkxFKFBPSVNPTikKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBV
PgogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFBvaXNvbmVkQml0cyBwb2lzb24oVSBwdHIpIHsg
cmV0dXJuIHB0ciA/IGJpdHdpc2VfY2FzdDxQb2lzb25lZEJpdHM+KHB0cikgXiBrZXkgOiAwOyB9
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4K
ICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBVIHVucG9pc29uKFBvaXNvbmVkQml0cyBwb2lzb25l
ZEJpdHMpIHsgcmV0dXJuIHBvaXNvbmVkQml0cyA/IGJpdHdpc2VfY2FzdDxVPihwb2lzb25lZEJp
dHMgXiBrZXkpIDogYml0d2lzZV9jYXN0PFU+KDBsbCk7IH0KICNlbHNlCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVT4KICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBQb2lzb25lZEJpdHMgcG9pc29u
KFUgcHRyKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8UG9pc29uZWRCaXRzPihwdHIpOyB9Ci0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgVT4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4KICAgICBB
TFdBWVNfSU5MSU5FIHN0YXRpYyBVIHVucG9pc29uKFBvaXNvbmVkQml0cyBwb2lzb25lZEJpdHMp
IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxVPihwb2lzb25lZEJpdHMpOyB9CiAjZW5kaWYKIAogICAg
IFBvaXNvbmVkQml0cyBtX3BvaXNvbmVkQml0cyB7IDAgfTsKIH07CiAKLXRlbXBsYXRlPHVpbnRw
dHJfdCYga2V5LCB0eXBlbmFtZSBUPgotdXNpbmcgUG9pc29uZWQgPSBQb2lzb25lZEltcGw8dWlu
dHB0cl90Jiwga2V5LCBUPjsKK3RlbXBsYXRlPHR5cGVuYW1lIEsxLCBLMSBrMSwgdHlwZW5hbWUg
VDEsIHR5cGVuYW1lIEsyLCBLMiBrMiwgdHlwZW5hbWUgVDI+CitpbmxpbmUgdm9pZCBzd2FwKFBv
aXNvbmVkSW1wbDxLMSwgazEsIFQxPiYgYSwgUG9pc29uZWRJbXBsPEsyLCBrMiwgVDI+JiBiKQor
eworICAgIGEuc3dhcChiKTsKK30KIAotI2lmIFVTRShKU1ZBTFVFNjQpCi10ZW1wbGF0ZTx1aW50
MzJfdCBrZXksIHR5cGVuYW1lIFQ+Ci11c2luZyBJbnQzMlBvaXNvbmVkID0gUG9pc29uZWRJbXBs
PHVpbnRwdHJfdCwgc3RhdGljX2Nhc3Q8dWludHB0cl90PihrZXkpIDw8IDMyLCBUPjsKK1dURl9F
WFBPUlRfUFJJVkFURSB1aW50cHRyX3QgbWFrZVBvaXNvbigpOworCitpbmxpbmUgY29uc3RleHBy
IHVpbnRwdHJfdCBtYWtlUG9pc29uKHVpbnQzMl90IGtleSkKK3sKKyNpZiBFTkFCTEUoUE9JU09O
KQorICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDB4ODAwMDAwMDAgfCBrZXkpIDw8
IDMyOwogI2Vsc2UKLXRlbXBsYXRlPHVpbnQzMl90LCB0eXBlbmFtZSBUPgotdXNpbmcgSW50MzJQ
b2lzb25lZCA9IFBvaXNvbmVkSW1wbDx1aW50cHRyX3QsIDAsIFQ+OworICAgIHJldHVybiAodm9p
ZClrZXksIDA7CiAjZW5kaWYKK30KIAotV1RGX0VYUE9SVF9QUklWQVRFIHVpbnRwdHJfdCBtYWtl
UG9pc29uKCk7Cit0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4KK3VzaW5nIFBv
aXNvbmVkID0gUG9pc29uZWRJbXBsPHVpbnRwdHJfdCYsIGtleSwgVD47CisKK3RlbXBsYXRlPHVp
bnQzMl90IGtleSwgdHlwZW5hbWUgVD4KK3VzaW5nIENvbnN0RXhwclBvaXNvbmVkID0gUG9pc29u
ZWRJbXBsPHVpbnRwdHJfdCwgbWFrZVBvaXNvbihrZXkpLCBUPjsKIAogfSAvLyBuYW1lc3BhY2Ug
V1RGCiAKLXVzaW5nIFdURjo6SW50MzJQb2lzb25lZDsKK3VzaW5nIFdURjo6Q29uc3RFeHByUG9p
c29uZWQ7CiB1c2luZyBXVEY6OlBvaXNvbmVkOwogdXNpbmcgV1RGOjpQb2lzb25lZEJpdHM7CiB1
c2luZyBXVEY6Om1ha2VQb2lzb247CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjU4MTYpCisrKyBUb29scy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxNy0xMi0xMiAgTWFyayBMYW0gIDxt
YXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgRmlsbCBvdXQgc29tZSBQb2lzb25lZCBBUElz
LCBmaXggc29tZSBidWdzLCBhbmQgYWRkIHNvbWUgdGVzdHMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODA3MjQKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzM2MDA2ODg0PgorCisgICAgICAgIFJldmlld2VkIGJ5IEpGIEJhc3RpZW4uCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NvbnN0RXhwclBvaXNvbmVkLmNwcDogQWRkZWQuCisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9Qb2lzb25lZC5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6aW5pdGlh
bGl6ZVRlc3RQb2lzb24pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWREYXRhLmNwcDogQWRkZWQuCisKIDIw
MTctMTItMTIgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAg
IE1vYmlsZU1pbmlCcm93c2VyIHVzaW5nIHRoZSB3cm9uZyB0b29sY2hhaW4KSW5kZXg6IFRvb2xz
L1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdl
YktpdEFQSS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjI1ODA3KQorKysgVG9vbHMvVGVzdFdl
YktpdEFQSS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtOTUsNiArOTUsNyBAQCBz
ZXQoVGVzdFdURl9TT1VSQ0VTCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0No
ZWNrZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9U
ZXN0cy9XVEYvQ29uY3VycmVudFB0ckhhc2hTZXQuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJ
Un0vVGVzdHMvV1RGL0NvbmRpdGlvbi5jcHAKKyAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0
cy9XVEYvQ29uc3RFeHByUG9pc29uZWQuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVz
dHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0
cy9XVEYvRGF0ZU1hdGguY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0Rl
cXVlLmNwcApAQCAtMTIyLDYgKzEyMyw3IEBAIHNldChUZXN0V1RGX1NPVVJDRVMKICAgICAke1RF
U1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvT3B0aW9uYWwuY3BwCiAgICAgJHtURVNUV0VCS0lU
QVBJX0RJUn0vVGVzdHMvV1RGL09wdGlvblNldC5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElS
fS9UZXN0cy9XVEYvUGFya2luZ0xvdC5jcHAKKyAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0
cy9XVEYvUG9pc29uZWQuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1By
aW9yaXR5UXVldWUuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1JlZEJs
YWNrVHJlZS5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvUmVmLmNwcApJ
bmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIyNTgwNykKKysrIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NTYsNiArNzU2LDggQEAKIAkJRjZCN0JFOTcxNzQ2OUI5NjAwOEEzNDQ1
IC8qIGFzc29jaWF0ZS1mb3JtLWNvbnRyb2xzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjZCN0JFOTYxNzQ2OUI3RTAwOEEzNDQ1IC8q
IGFzc29jaWF0ZS1mb3JtLWNvbnRyb2xzLmh0bWwgKi87IH07CiAJCUY2RjQ5QzZCMTU1NDVDQTcw
MDA3RjM5RCAvKiBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlX0J1bmRsZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNkY0OUM2NjE1NTQ1QzhEMDAw
N0YzOUQgLyogRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZV9CdW5kbGUuY3BwICovOyB9OwogCQlG
NkZERERENjE0MjQxQzZGMDA0RjE3MjkgLyogcHVzaC1zdGF0ZS5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2RkREREQ1MTQyNDFDNDgw
MDRGMTcyOSAvKiBwdXNoLXN0YXRlLmh0bWwgKi87IH07CisJCUZFMDVGQUVGMUZFMDY0NUIwMDA5
MzIzMCAvKiBQb2lzb25lZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTA1RkFFRTFGRTA2NDNEMDAwOTMyMzAgLyogUG9pc29uZWQuY3BwICovOyB9
OworCQlGRTA1RkFGMTFGRTA4Q0Q0MDAwOTMyMzAgLyogQ29uc3RFeHByUG9pc29uZWQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwNUZBRjAxRkUw
OENDRDAwMDkzMjMwIC8qIENvbnN0RXhwclBvaXNvbmVkLmNwcCAqLzsgfTsKIC8qIEVuZCBQQlhC
dWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2Vj
dGlvbiAqLwpAQCAtMTg1Nyw2ICsxODU5LDggQEAKIAkJRjZGNDlDNjcxNTU0NUM4RDAwMDdGMzlE
IC8qIERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUY2RkREREQyMTQyNDFBRDQwMDRGMTcyOSAvKiBQcml2YXRlQnJv
d3NpbmdQdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBQcml2YXRlQnJvd3NpbmdQdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFj
ay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2RkREREQ1MTQyNDFDNDgwMDRG
MTcyOSAvKiBwdXNoLXN0YXRlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAicHVz
aC1zdGF0ZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUwNUZBRUUxRkUw
NjQzRDAwMDkzMjMwIC8qIFBvaXNvbmVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFBvaXNvbmVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUw
NUZBRjAxRkUwOENDRDAwMDkzMjMwIC8qIENvbnN0RXhwclBvaXNvbmVkLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnN0RXhwclBvaXNvbmVkLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVCNkY3NEUxQjJCQTQ0RTAwOUU0OTIyIC8qIE5ha2Vk
UHRyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ha2VkUHRyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNl
Y3Rpb24gKi8KIApAQCAtMjYxMyw2ICsyNjE3LDcgQEAKIAkJCQlBN0E5NjZEQTE0MEVDQ0M4MDA1
RUY5QjQgLyogQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcCAqLywKIAkJCQkwRjMwQ0I1
QjFGQ0UxNzkyMDA0QjUzMjMgLyogQ29uY3VycmVudFB0ckhhc2hTZXQuY3BwICovLAogCQkJCTBG
RUFFMzY3MUI3RDE5Q0IwMENFMTdGMiAvKiBDb25kaXRpb24uY3BwICovLAorCQkJCUZFMDVGQUYw
MUZFMDhDQ0QwMDA5MzIzMCAvKiBDb25zdEV4cHJQb2lzb25lZC5jcHAgKi8sCiAJCQkJNTE3MTRF
QjkxRDA4NzQxNjAwNDcyM0M0IC8qIENyb3NzVGhyZWFkVGFzay5jcHAgKi8sCiAJCQkJMjZBMkM3
MkUxNUUyRTczQzAwNUIxQTE0IC8qIENTdHJpbmcuY3BwICovLAogCQkJCTdBQTAyMUJBMUFCMDlF
QTcwMDUyOTUzRiAvKiBEYXRlTWF0aC5jcHAgKi8sCkBAIC0yNjQ2LDYgKzI2NTEsNyBAQAogCQkJ
CTFBRkRFNjU0MTk1M0IyQzAwMEM0OEZGQSAvKiBPcHRpb25hbC5jcHAgKi8sCiAJCQkJQ0U1MEQ4
QzgxQzg2NjVDRTAwNzJFQTVBIC8qIE9wdGlvblNldC5jcHAgKi8sCiAJCQkJMEZFNDQ3OTcxQjc2
RjFFMzAwOTQ5OEVCIC8qIFBhcmtpbmdMb3QuY3BwICovLAorCQkJCUZFMDVGQUVFMUZFMDY0M0Qw
MDA5MzIzMCAvKiBQb2lzb25lZC5jcHAgKi8sCiAJCQkJNTNFQzI1M0YxRTk2QkM4MDAwMDgzMUI5
IC8qIFByaW9yaXR5UXVldWUuY3BwICovLAogCQkJCTBGQzZDNENCMTQxMDI3RTAwMDVCN0YwQyAv
KiBSZWRCbGFja1RyZWUuY3BwICovLAogCQkJCTkzQTQyN0FBMTgwREEyNjQwMENEMjRENyAvKiBS
ZWYuY3BwICovLApAQCAtMzE5MCw2ICszMTk2LDcgQEAKIAkJCQk3QzgzREYxRDFEMEE1OTBDMDBG
RUJDRjMgLyogTG9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTdENTRGNjFGMzM5NUQwMDBB
OTdBQTcgLyogTG9nZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERUVEMUQwQTU5MEMw
MEZFQkNGMyAvKiBNYXRoRXh0cmFzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFMDVGQUYxMUZF
MDhDRDQwMDA5MzIzMCAvKiBDb25zdEV4cHJQb2lzb25lZC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk3QzgzREVFRjFEMEE1OTBDMDBGRUJDRjMgLyogTUQ1LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTdDODNERUYxMUQwQTU5MEMwMEZFQkNGMyAvKiBNZWRpYVRpbWUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0M4M0RFRjYxRDBBNTkwQzAwRkVCQ0YzIC8qIE1ldGFBbGxvY2F0b3IuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC0zMjEwLDYgKzMyMTcsNyBAQAogCQkJCTdDODNERjA1MUQwQTU5MEMwMEZF
QkNGMyAvKiBSdW5Mb29wLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERjI2MUQwQTU5MEMw
MEZFQkNGMyAvKiBTYXR1cmF0ZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxQTM1MjRBRTFENjNBNEZCMDAzMTcyOUIgLyogU2NvcGUuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJRkUwNUZBRUYxRkUwNjQ1QjAwMDkzMjMwIC8qIFBvaXNvbmVkLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTdDODNERjEyMUQwQTU5MEMwMEZFQkNGMyAvKiBTY29wZWRMYW1iZGEuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGM0QxRDBBNTkwQzAwRkVCQ0YzIC8qIFNldEZvclNj
b3BlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERjJBMUQwQTU5MEMwMEZFQkNGMyAvKiBT
SEExLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvQ29uc3RFeHByUG9pc29uZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0NvbnN0RXhwclBvaXNvbmVkLmNwcAkobm9uZXhpc3RlbnQpCisrKyBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Db25zdEV4cHJQb2lzb25lZC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwzNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJSZWZMb2dnZXIu
aCIKKyNpbmNsdWRlIDxtdXRleD4KKyNpbmNsdWRlIDx3dGYvUG9pc29uZWQuaD4KKworbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkgeworCitzdGF0aWMgY29uc3QgdWludDMyX3QgUG9pc29uQSA9IDB4
YWFhYTsKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBQb2lzb25CID0gMHhiYmJiOworCisvLyBGb3Ig
dGhlc2UgdGVzdHMsIHdlIG5lZWQgYSBiYXNlIGNsYXNzIGFuZCBhIGRlcml2ZWQgY2xhc3MuIEZv
ciB0aGlzIHB1cnBvc2UsCisvLyB3ZSByZXVzZSB0aGUgUmVmTG9nZ2VyIGFuZCBEZXJpdmVkUmVm
TG9nZ2VyIGNsYXNzZXMuCisKK1RFU1QoV1RGX0NvbnN0RXhwclBvaXNvbmVkLCBCYXNpYykKK3sK
KyAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKKworICAgIENvbnN0RXhwclBvaXNvbmVkPFBv
aXNvbkEsIFJlZkxvZ2dlcio+IGVtcHR5OworICAgIEFTU0VSVF9FUShudWxscHRyLCBlbXB0eS51
bnBvaXNvbmVkKCkpOworCisgICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25B
LCBSZWZMb2dnZXIqPiBwdHIoJmEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNv
bmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsICYqcHRyKTsKKyAgICAgICAgQVNTRVJUX0VR
KCZhLm5hbWUsICZwdHItPm5hbWUpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29uc3RFeHBy
UG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyID0gJmE7CisgICAgICAgIEFTU0VSVF9F
USgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBDb25zdEV4
cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSA9ICZhOworICAgICAgICBDb25zdEV4
cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMihwMSk7CisgICAgICAgIENvbnN0RXhw
clBvaXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+IHAzKHAxKTsKKyAgICAgICAgQVNTRVJUX0VR
KCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29u
ZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKworICAgICAg
ICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RS
VUUocDEuYml0cygpICE9IHAzLmJpdHMoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBDb25z
dEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSA9ICZhOworICAgICAgICBDb25z
dEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9IHAxOworICAgICAgICBDb25z
dEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwMyA9IHAxOworICAgICAgICBBU1NF
UlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworCisg
ICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NF
UlRfVFJVRShwMS5iaXRzKCkgIT0gcDMuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAg
IENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxID0gJmE7CisgICAgICAg
IENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyID0gV1RGTW92ZShwMSk7
CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOworCisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBv
aXNvbkEsIFJlZkxvZ2dlcio+IHAzID0gJmE7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBv
aXNvbkIsIFJlZkxvZ2dlcio+IHA0ID0gV1RGTW92ZShwMyk7CisgICAgICAgIEFTU0VSVF9FUSgm
YSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwNC51bnBvaXNvbmVk
KCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAg
ICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9CisKKyAgICB7
CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxID0gJmE7
CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKFdURk1v
dmUocDEpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAg
ICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQ29uc3RFeHByUG9p
c29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMgPSAmYTsKKyAgICAgICAgQ29uc3RFeHByUG9p
c29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQoV1RGTW92ZShwMykpOworICAgICAgICBBU1NF
UlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDQudW5w
b2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygp
KTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQor
CisgICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBEZXJpdmVkUmVmTG9n
Z2VyKj4gcDEgPSAmYTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9n
Z2VyKj4gcDIgPSBwMTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9n
Z2VyKj4gcDMgPSBwMTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwor
ICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9F
USgmYSwgcDMudW5wb2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkg
PT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAzLmJpdHMo
KSk7CisgICAgfQorCisgICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBE
ZXJpdmVkUmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9p
c29uQSwgUmVmTG9nZ2VyKj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgQVNTRVJUX0VRKCZh
LCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQo
KSk7CisKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgRGVyaXZlZFJlZkxvZ2dl
cio+IHAzID0gJmE7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dl
cio+IHA0ID0gV1RGTW92ZShwMyk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25l
ZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAg
IEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJV
RShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0
RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAgIEFTU0VS
VF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHB0ci5jbGVhcigpOworICAgICAg
ICBBU1NFUlRfRVEobnVsbHB0ciwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgfQorfQorCitURVNU
KFdURl9Db25zdEV4cHJQb2lzb25lZCwgQXNzaWdubWVudCkKK3sKKyAgICBEZXJpdmVkUmVmTG9n
Z2VyIGEoImEiKTsKKyAgICBSZWZMb2dnZXIgYigiYiIpOworICAgIERlcml2ZWRSZWZMb2dnZXIg
YygiYyIpOworCisgICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZM
b2dnZXIqPiBwMSgmYSk7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxv
Z2dlcio+IHAyKCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwor
ICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHAxID0gcDI7
CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOworCisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBv
aXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9p
c29uQiwgUmVmTG9nZ2VyKj4gcDQoJmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9p
c29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKKyAgICAg
ICAgcDMgPSBwNDsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMy51bnBvaXNvbmVkKCkpOworICAg
ICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RS
VUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMo
KSAhPSBwNC5iaXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29u
ZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBw
dHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcHRyID0gJmI7CisgICAgICAgIEFTU0VSVF9FUSgm
YiwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBDb25zdEV4cHJQ
b2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOworICAgICAgICBBU1NFUlRfRVEo
JmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICBwdHIgPSBudWxscHRyOworICAgICAgICBB
U1NFUlRfRVEobnVsbHB0ciwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgfQorCisgICAgeworICAg
ICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7CisgICAg
ICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKCZiKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIs
IHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHAxID0gV1RGTW92ZShwMik7CisgICAgICAgIEFT
U0VSVF9FUSgmYiwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51
bnBvaXNvbmVkKCkpOworCisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxv
Z2dlcio+IHAzKCZhKTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9n
Z2VyKj4gcDQoJmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7Cisg
ICAgICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDMgPSBXVEZN
b3ZlKHA0KTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAg
ICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUo
cDEuYml0cygpID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAh
PSBwNC5iaXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8
UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQ
b2lzb25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDIoJmMpOworICAgICAgICBBU1NFUlRfRVEoJmEs
IHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDIudW5wb2lzb25lZCgp
KTsKKyAgICAgICAgcDEgPSBwMjsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMS51bnBvaXNvbmVk
KCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAg
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOworICAgICAgICBD
b25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDQoJmMpOworICAg
ICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgm
YywgcDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDMgPSBwNDsKKyAgICAgICAgQVNTRVJUX0VR
KCZjLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHA0LnVucG9pc29u
ZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7Cisg
ICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgIH0KKworICAg
IHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZh
KTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcHRy
ID0gJmM7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcHRyLnVucG9pc29uZWQoKSk7CisgICAgfQor
CisgICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBw
MSgmYSk7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIERlcml2ZWRSZWZMb2dn
ZXIqPiBwMigmYyk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAg
ICAgICAgQVNTRVJUX0VRKCZjLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBwMSA9IFdURk1v
dmUocDIpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAg
IEFTU0VSVF9FUSgmYywgcDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBDb25zdEV4cHJQb2lz
b25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygmYSk7CisgICAgICAgIENvbnN0RXhwclBvaXNv
bmVkPFBvaXNvbkIsIERlcml2ZWRSZWZMb2dnZXIqPiBwNCgmYyk7CisgICAgICAgIEFTU0VSVF9F
USgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwNC51bnBvaXNv
bmVkKCkpOworICAgICAgICBwMyA9IFdURk1vdmUocDQpOworICAgICAgICBBU1NFUlRfRVEoJmMs
IHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDQudW5wb2lzb25lZCgp
KTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKyAgICAg
ICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQorCisgICAgewor
ICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOwor
ICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICBwdHIgPSBw
dHI7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgfQorCisg
ICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIo
JmEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworI2lmIENPTVBJ
TEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcg
ZGlhZ25vc3RpYyBpZ25vcmVkICItV3Vua25vd24tcHJhZ21hcyIKKyNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBpZ25vcmVkICItV3NlbGYtbW92ZSIKKyNlbmRpZgorICAgICAgICBwdHIgPSBXVEZN
b3ZlKHB0cik7CisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMg
cG9wCisjZW5kaWYKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAg
ICB9Cit9CisKK1RFU1QoV1RGX0NvbnN0RXhwclBvaXNvbmVkLCBTd2FwKQoreworICAgIFJlZkxv
Z2dlciBhKCJhIik7CisgICAgUmVmTG9nZ2VyIGIoImIiKTsKKworICAgIHsKKyAgICAgICAgQ29u
c3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOworICAgICAgICBDb25z
dEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMigmYik7CisgICAgICAgIEFTU0VS
VF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBv
aXNvbmVkKCkpOworICAgICAgICBwMS5zd2FwKHAyKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBw
MS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7
CisKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEp
OworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7
CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAgICBwMy5zd2FwKHA0KTsKKyAgICAgICAg
QVNTRVJUX0VRKCZiLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHA0
LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAyLmJp
dHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAg
ICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDMuYml0cygpKTsKKyAgICAgICAgQVNTRVJU
X1RSVUUocDIuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBD
b25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7CisgICAgICAgIENv
bnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKCZiKTsKKyAgICAgICAgQVNT
RVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVu
cG9pc29uZWQoKSk7CisgICAgICAgIHN3YXAocDEsIHAyKTsKKyAgICAgICAgQVNTRVJUX0VRKCZi
LCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQo
KSk7CisKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMo
JmEpOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCgm
Yik7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNT
RVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAgICBzd2FwKHAzLCBwNCk7CisgICAg
ICAgIEFTU0VSVF9FUSgmYiwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZh
LCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBw
Mi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsK
KyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAzLmJpdHMoKSk7CisgICAgICAgIEFT
U0VSVF9UUlVFKHAyLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgIH0KK30KKworc3RhdGljIENv
bnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHBvaXNvbmVkUHRyRm9vKFJlZkxv
Z2dlciYgbG9nZ2VyKQoreworICAgIHJldHVybiBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBS
ZWZMb2dnZXIqPigmbG9nZ2VyKTsKK30KKworVEVTVChXVEZfQ29uc3RFeHByUG9pc29uZWQsIFJl
dHVyblZhbHVlKQoreworICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOworCisgICAgeworICAg
ICAgICBhdXRvIHB0ciA9IHBvaXNvbmVkUHRyRm9vKGEpOworICAgICAgICBBU1NFUlRfRVEoJmEs
IHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsICYqcHRyKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZhLm5hbWUsICZwdHItPm5hbWUpOworICAgIH0KK30KKworfSAvLyBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSQorCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9Qb2lzb25lZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvUG9pc29uZWQuY3BwCShub25leGlzdGVudCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1BvaXNvbmVkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM2OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2luY2x1ZGUgIlJlZkxvZ2dlci5oIgorI2luY2x1ZGUgPG11dGV4PgorI2luY2x1
ZGUgPHd0Zi9FeHBvcnRNYWNyb3MuaD4KKyNpbmNsdWRlIDx3dGYvUG9pc29uZWQuaD4KKworbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitzdGF0aWMgdWludHB0cl90IGdfdGVzdFBvaXNvbkE7
CitzdGF0aWMgdWludHB0cl90IGdfdGVzdFBvaXNvbkI7CisKK3N0YXRpYyB2b2lkIGluaXRpYWxp
emVUZXN0UG9pc29uKCkKK3sKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZU9u
Y2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRpYWxpemVPbmNlRmxhZywgW10geworICAg
ICAgICAvLyBNYWtlIHN1cmUgd2UgZ2V0IDIgZGlmZmVyZW50IHBvaXNvbiB2YWx1ZXMuCisgICAg
ICAgIGdfdGVzdFBvaXNvbkEgPSBtYWtlUG9pc29uKCk7CisgICAgICAgIHdoaWxlICghZ190ZXN0
UG9pc29uQiB8fCBnX3Rlc3RQb2lzb25CID09IGdfdGVzdFBvaXNvbkEpCisgICAgICAgICAgICBn
X3Rlc3RQb2lzb25CID0gbWFrZVBvaXNvbigpOworICAgIH0pOworfQorCisvLyBGb3IgdGhlc2Ug
dGVzdHMsIHdlIG5lZWQgYSBiYXNlIGNsYXNzIGFuZCBhIGRlcml2ZWQgY2xhc3MuIEZvciB0aGlz
IHB1cnBvc2UsCisvLyB3ZSByZXVzZSB0aGUgUmVmTG9nZ2VyIGFuZCBEZXJpdmVkUmVmTG9nZ2Vy
IGNsYXNzZXMuCisKK1RFU1QoV1RGX1BvaXNvbmVkLCBCYXNpYykKK3sKKyAgICBpbml0aWFsaXpl
VGVzdFBvaXNvbigpOworICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOworCisgICAgUG9pc29u
ZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gZW1wdHk7CisgICAgQVNTRVJUX0VRKG51bGxw
dHIsIGVtcHR5LnVucG9pc29uZWQoKSk7CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVz
dFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRy
LnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgJipwdHIpOworICAgICAgICBB
U1NFUlRfRVEoJmEubmFtZSwgJnB0ci0+bmFtZSk7CisgICAgfQorCisgICAgeworICAgICAgICBQ
b2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIgPSAmYTsKKyAgICAgICAgQVNT
RVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFBv
aXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxID0gJmE7CisgICAgICAgIFBvaXNv
bmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKHAxKTsKKyAgICAgICAgUG9pc29uZWQ8
Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDMocDEpOworICAgICAgICBBU1NFUlRfRVEoJmEs
IHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgp
KTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFT
U0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShw
MS5iaXRzKCkgIT0gcDMuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVk
PGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxID0gJmE7CisgICAgICAgIFBvaXNvbmVkPGdf
dGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyID0gcDE7CisgICAgICAgIFBvaXNvbmVkPGdfdGVz
dFBvaXNvbkIsIFJlZkxvZ2dlcio+IHAzID0gcDE7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEu
dW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOwor
ICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJU
X1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJp
dHMoKSAhPSBwMy5iaXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190
ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0
UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgQVNTRVJUX0VR
KCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29u
ZWQoKSk7CisKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMg
PSAmYTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQgPSBX
VEZNb3ZlKHAzKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAg
ICAgICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RS
VUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMo
KSAhPSBwNC5iaXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0
UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9p
c29uQSwgUmVmTG9nZ2VyKj4gcDIoV1RGTW92ZShwMSkpOworICAgICAgICBBU1NFUlRfRVEoJmEs
IHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgp
KTsKKworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMyA9ICZh
OworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwNChXVEZNb3Zl
KHAzKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAg
QVNTRVJUX0VRKCZhLCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAx
LmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0g
cDQuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNv
bkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMSA9ICZhOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQ
b2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9IHAxOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lz
b25CLCBSZWZMb2dnZXIqPiBwMyA9IHAxOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9p
c29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVF
KHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkg
IT0gcDMuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBv
aXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMSA9ICZhOworICAgICAgICBQb2lzb25lZDxnX3Rl
c3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9IFdURk1vdmUocDEpOworICAgICAgICBBU1NFUlRf
RVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lz
b25lZCgpKTsKKworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBEZXJpdmVkUmVmTG9n
Z2VyKj4gcDMgPSAmYTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2Vy
Kj4gcDQgPSBXVEZNb3ZlKHAzKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVk
KCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAg
QVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVF
KHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29u
ZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VR
KCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcHRyLmNsZWFyKCk7CisgICAgICAgIEFT
U0VSVF9FUShudWxscHRyLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICB9Cit9CisKK1RFU1QoV1RG
X1BvaXNvbmVkLCBBc3NpZ25tZW50KQoreworICAgIGluaXRpYWxpemVUZXN0UG9pc29uKCk7Cisg
ICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CisgICAgUmVmTG9nZ2VyIGIoImIiKTsKKyAgICBE
ZXJpdmVkUmVmTG9nZ2VyIGMoImMiKTsKKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0
UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lz
b25BLCBSZWZMb2dnZXIqPiBwMigmYik7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lz
b25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAg
ICBwMSA9IHAyOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAxLnVucG9pc29uZWQoKSk7CisgICAg
ICAgIEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBQb2lzb25lZDxn
X3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygmYSk7CisgICAgICAgIFBvaXNvbmVkPGdfdGVz
dFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51
bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7Cisg
ICAgICAgIHAzID0gcDQ7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDMudW5wb2lzb25lZCgpKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VS
VF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5i
aXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdf
dGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwg
cHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHB0ciA9ICZiOworICAgICAgICBBU1NFUlRfRVEo
JmIsIHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8
Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZh
LCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcHRyID0gbnVsbHB0cjsKKyAgICAgICAgQVNT
RVJUX0VRKG51bGxwdHIsIHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0KKworICAgIHsKKyAgICAg
ICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOworICAgICAgICBQ
b2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMigmYik7CisgICAgICAgIEFTU0VS
VF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBv
aXNvbmVkKCkpOworICAgICAgICBwMSA9IFdURk1vdmUocDIpOworICAgICAgICBBU1NFUlRfRVEo
JmIsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25l
ZCgpKTsKKworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygm
YSk7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KCZiKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRf
RVEoJmIsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIHAzID0gV1RGTW92ZShwNCk7CisgICAg
ICAgIEFTU0VSVF9FUSgmYiwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZi
LCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBw
Mi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsK
KyAgICB9CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dl
cio+IHAxKCZhKTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgRGVyaXZlZFJlZkxv
Z2dlcio+IHAyKCZjKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwor
ICAgICAgICBBU1NFUlRfRVEoJmMsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHAxID0gcDI7
CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZjLCBwMi51bnBvaXNvbmVkKCkpOworCisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNv
bkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwg
RGVyaXZlZFJlZkxvZ2dlcio+IHA0KCZjKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBv
aXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHA0LnVucG9pc29uZWQoKSk7CisgICAg
ICAgIHAzID0gcDQ7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDMudW5wb2lzb25lZCgpKTsKKyAg
ICAgICAgQVNTRVJUX0VRKCZjLCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9U
UlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRz
KCkgIT0gcDQuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVz
dFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRy
LnVucG9pc29uZWQoKSk7CisgICAgICAgIHB0ciA9ICZjOworICAgICAgICBBU1NFUlRfRVEoJmMs
IHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190
ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQ
b2lzb25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDIoJmMpOworICAgICAgICBBU1NFUlRfRVEoJmEs
IHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDIudW5wb2lzb25lZCgp
KTsKKyAgICAgICAgcDEgPSBXVEZNb3ZlKHAyKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMS51
bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHAyLnVucG9pc29uZWQoKSk7CisK
KyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOworICAg
ICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDQoJmMpOwor
ICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9F
USgmYywgcDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDMgPSBXVEZNb3ZlKHA0KTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZjLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMs
IHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAy
LmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwor
ICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2Vy
Kj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAg
ICAgICAgcHRyID0gcHRyOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkp
OworICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9n
Z2VyKj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsK
KyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bmtub3duLXByYWdtYXMiCisjcHJhZ21h
IGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdzZWxmLW1vdmUiCisjZW5kaWYKKyAgICAgICAg
cHRyID0gV1RGTW92ZShwdHIpOworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBk
aWFnbm9zdGljIHBvcAorI2VuZGlmCisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29u
ZWQoKSk7CisgICAgfQorfQorCitURVNUKFdURl9Qb2lzb25lZCwgU3dhcCkKK3sKKyAgICBpbml0
aWFsaXplVGVzdFBvaXNvbigpOworICAgIFJlZkxvZ2dlciBhKCJhIik7CisgICAgUmVmTG9nZ2Vy
IGIoImIiKTsKKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9n
Z2VyKj4gcDEoJmEpOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIq
PiBwMigmYik7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBwMS5zd2FwKHAyKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRf
RVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29u
QSwgUmVmTG9nZ2VyKj4gcDMoJmEpOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBS
ZWZMb2dnZXIqPiBwNCgmYik7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgp
KTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAgICBwMy5z
d2FwKHA0KTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAg
ICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUo
cDEuYml0cygpICE9IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAh
PSBwNC5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDMuYml0cygp
KTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDIuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQor
CisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgm
YSk7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKCZiKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRf
RVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHN3YXAocDEsIHAyKTsKKyAgICAgICAg
QVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAy
LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9n
Z2VyKj4gcDMoJmEpOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIq
PiBwNCgmYik7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAgICBzd2FwKHAzLCBwNCk7
CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZhLCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMo
KSAhPSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0
cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAzLmJpdHMoKSk7CisgICAg
ICAgIEFTU0VSVF9UUlVFKHAyLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgIH0KK30KKworc3Rh
dGljIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHBvaXNvbmVkUHRyRm9vKFJl
ZkxvZ2dlciYgbG9nZ2VyKQoreworICAgIHJldHVybiBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBS
ZWZMb2dnZXIqPigmbG9nZ2VyKTsKK30KKworVEVTVChXVEZfUG9pc29uZWQsIFJldHVyblZhbHVl
KQoreworICAgIGluaXRpYWxpemVUZXN0UG9pc29uKCk7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBh
KCJhIik7CisKKyAgICB7CisgICAgICAgIGF1dG8gcHRyID0gcG9pc29uZWRQdHJGb28oYSk7Cisg
ICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9F
USgmYSwgJipwdHIpOworICAgICAgICBBU1NFUlRfRVEoJmEubmFtZSwgJnB0ci0+bmFtZSk7Cisg
ICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329197</attachid>
            <date>2017-12-12 20:37:38 -0800</date>
            <delta_ts>2017-12-12 22:29:57 -0800</delta_ts>
            <desc>test for EWS.</desc>
            <filename>bug-180724c.patch</filename>
            <type>text/plain</type>
            <size>41068</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI1ODA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDE3LTEyLTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBG
aWxsIG91dCBzb21lIFBvaXNvbmVkIEFQSXMsIGZpeCBzb21lIGJ1Z3MsIGFuZCBhZGQgc29tZSB0
ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
MDcyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYwMDY4ODQ+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgSkYgQmFzdGllbi4KKworICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlv
blRhYmxlLmg6CisKIDIwMTctMTItMDQgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAK
ICAgICAgICAgV2ViIEluc3BlY3RvcjogbW9kZXJuaXplIEluamVjdGVkU2NyaXB0IGEgYml0Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFi
bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVUcmFuc2l0aW9uVGFibGUuaAkocmV2aXNpb24gMjI1ODA3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMTg3LDggKzE4Nyw4IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBmcmll
bmQgY2xhc3MgU2luZ2xlU2xvdFRyYW5zaXRpb25XZWFrT3duZXI7Ci0gICAgdXNpbmcgUG9pc29u
ZWRUcmFuc2l0aW9uTWFwUHRyID0gSW50MzJQb2lzb25lZDxUcmFuc2l0aW9uTWFwUG9pc29uLCBU
cmFuc2l0aW9uTWFwKj47Ci0gICAgdXNpbmcgUG9pc29uZWRXZWFrSW1wbFB0ciA9IEludDMyUG9p
c29uZWQ8V2Vha0ltcGxQb2lzb24sIFdlYWtJbXBsKj47CisgICAgdXNpbmcgUG9pc29uZWRUcmFu
c2l0aW9uTWFwUHRyID0gQ29uc3RFeHByUG9pc29uZWQ8VHJhbnNpdGlvbk1hcFBvaXNvbiwgVHJh
bnNpdGlvbk1hcCo+OworICAgIHVzaW5nIFBvaXNvbmVkV2Vha0ltcGxQdHIgPSBDb25zdEV4cHJQ
b2lzb25lZDxXZWFrSW1wbFBvaXNvbiwgV2Vha0ltcGwqPjsKIAogICAgIGJvb2wgaXNVc2luZ1Np
bmdsZVNsb3QoKSBjb25zdAogICAgIHsKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjU4MDcpCisrKyBTb3Vy
Y2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDE3LTEy
LTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBGaWxsIG91dCBz
b21lIFBvaXNvbmVkIEFQSXMsIGZpeCBzb21lIGJ1Z3MsIGFuZCBhZGQgc29tZSB0ZXN0cy4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDcyNAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMzYwMDY4ODQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSkYg
QmFzdGllbi4KKworICAgICAgICBBbHNvIHJlbmFtZSBJbnQzMlBvaXNvbmVkIHRvIENvbnN0RXhw
clBvaXNvbmVkLiAgVGhlIGtleSBpdCB0YWtlcyBpcyBhY3R1YWxseSBhCisgICAgICAgIHVpbnQz
Ml90LiAgU28sIEludDMyIGlzIHJlYWxseSBhIG1pc25vbWVyLiAgSW4gYWRkaXRpb24sIHRoZSBr
ZXkgbmVlZHMgdG8gYmUgYQorICAgICAgICBjb25zdGV4cHIuICBTbywgQ29uc3RFeHByUG9pc29u
ZWQgaXMgYSBiZXR0ZXIgbmFtZSBmb3IgaXQuCisKKyAgICAgICAgKiB3dGYvUG9pc29uZWQuY3Bw
OgorICAgICAgICAoV1RGOjptYWtlUG9pc29uKToKKyAgICAgICAgKiB3dGYvUG9pc29uZWQuaDoK
KyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsSGVscGVyOjphc1JlZmVyZW5jZSk6CisgICAgICAg
IChXVEY6OlBvaXNvbmVkSW1wbDo6UG9pc29uZWRJbXBsKToKKyAgICAgICAgKFdURjo6UG9pc29u
ZWRJbXBsOjpjbGVhcik6CisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6b3BlcmF0b3IqIGNv
bnN0KToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvci0+IGNvbnN0KToKKyAg
ICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdU
Rjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKFdURjo6UG9pc29u
ZWRJbXBsOjpvcGVyYXRvcjwgY29uc3QpOgorICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6Om9w
ZXJhdG9yPD0gY29uc3QpOgorICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6Om9wZXJhdG9yPiBj
b25zdCk6CisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6b3BlcmF0b3I+PSBjb25zdCk6Cisg
ICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdURjo6UG9p
c29uZWRJbXBsOjpzd2FwKToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpleGNoYW5nZSk6
CisgICAgICAgIChXVEY6OnN3YXApOgorICAgICAgICAoV1RGOjptYWtlUG9pc29uKToKKyAgICAg
ICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvcj09KTogRGVsZXRlZC4KKwogMjAxNy0xMi0x
MiAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0VTTmV4dF1b
QmlnSW50XSBJbXBsZW1lbnQgQmlnSW50IGxpdGVyYWxzIGFuZCBKU0JpZ0ludApJbmRleDogU291
cmNlL1dURi93dGYvUG9pc29uZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1Bv
aXNvbmVkLmNwcAkocmV2aXNpb24gMjI1ODA3KQorKysgU291cmNlL1dURi93dGYvUG9pc29uZWQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXVEYgewogdWlu
dHB0cl90IG1ha2VQb2lzb24oKQogewogICAgIHVpbnRwdHJfdCBrZXkgPSBjcnlwdG9ncmFwaGlj
YWxseVJhbmRvbU51bWJlcigpOwotI2lmIFVTRShKU1ZBTFVFNjQpICYmICFPUyhXSU5ET1dTKQor
I2lmIEVOQUJMRShQT0lTT04pCiAgICAga2V5ID0gKGtleSA8PCAzMikgXiAoc3RhdGljX2Nhc3Q8
dWludHB0cl90PihjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpKSA8PCAzKTsKICAgICAv
LyBFbnN1cmUgdGhhdCB0aGUgcG9pc29uZWQgYml0cyAocG9pbnRlciBeIGtleSkgZG8gbm90IG1h
a2UgYSB2YWxpZCBwb2ludGVyIGFuZAogICAgIC8vIGNhbm5vdCBiZSAwLiBXZSBlbnN1cmUgdGhh
dCBpdCBpcyB6ZXJvIHNvIHRoYXQgdGhlIHBvaXNvbmVkIGJpdHMgY2FuIGFsc28gYmUKQEAgLTUx
LDQgKzUxLDMgQEAgdWludHB0cl90IG1ha2VQb2lzb24oKQogfQogCiB9IC8vIG5hbWVzcGFjZSBX
VEYKLQpJbmRleDogU291cmNlL1dURi93dGYvUG9pc29uZWQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV1RGL3d0Zi9Qb2lzb25lZC5oCShyZXZpc2lvbiAyMjU4MDcpCisrKyBTb3VyY2UvV1RGL3d0
Zi9Qb2lzb25lZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMSArMjcsMTQgQEAKIAogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKKyNkZWZpbmUgRU5BQkxFX1BPSVNPTiAxCiAjZGVmaW5l
IEVOQUJMRV9QT0lTT05fQVNTRVJUUyAwCiAKIC8vIE5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIGZv
ciAzMi1iaXQgb3IgT1MoV0lORE9XUykgYnVpbGRzIChiZWNhdXNlIG9mIG1pc3NpbmcgbGxpbnQg
c3VwcG9ydCkuCiAvLyBNYWtlIHN1cmUgaXQncyBkaXNhYmxlZC4KICNpZiBVU0UoSlNWQUxVRTMy
XzY0KSB8fCBPUyhXSU5ET1dTKQorI3VuZGVmIEVOQUJMRV9QT0lTT04KKyNkZWZpbmUgRU5BQkxF
X1BPSVNPTiAwCiAjdW5kZWYgRU5BQkxFX1BPSVNPTl9BU1NFUlRTCiAjZGVmaW5lIEVOQUJMRV9Q
T0lTT05fQVNTRVJUUyAwCiAjZW5kaWYKQEAgLTQwLDE3ICs0Myw0OCBAQCBuYW1lc3BhY2UgV1RG
IHsKIAogdXNpbmcgUG9pc29uZWRCaXRzID0gdWludHB0cl90OwogCituYW1lc3BhY2UgUG9pc29u
ZWRJbXBsSGVscGVyIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBpc0Z1bmN0aW9u
UG9pbnRlciA6IHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgc3RkOjppc19mdW5jdGlvbjx0
eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPFQ+Ojp0eXBlPjo6dmFsdWU+IHsgfTsKKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBpc1ZvaWRQb2ludGVyIDogc3RkOjppbnRlZ3JhbF9j
b25zdGFudDxib29sLCBzdGQ6OmlzX3ZvaWQ8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxU
Pjo6dHlwZT46OnZhbHVlPiB7IH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgaXND
b252ZXJ0aWJsZVRvUmVmZXJlbmNlIDogc3RkOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCAhaXNG
dW5jdGlvblBvaW50ZXI8VD46OnZhbHVlICYmICFpc1ZvaWRQb2ludGVyPFQ+Ojp2YWx1ZT4geyB9
OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgordHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDwhaXND
b252ZXJ0aWJsZVRvUmVmZXJlbmNlPFQ+Ojp2YWx1ZSwgaW50PiYKK2FzUmVmZXJlbmNlKFQpIHsg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgor
dHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxpc0NvbnZlcnRpYmxlVG9SZWZlcmVuY2U8VD46OnZh
bHVlLCB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPFQ+Ojp0eXBlPiYKK2FzUmVmZXJlbmNl
KFQgcHRyKSB7IHJldHVybiAqcHRyOyB9CisKK30gLy8gbmFtZXNwYWNlIFBvaXNvbmVkSW1wbEhl
bHBlcgorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBlLCBLZXlUeXBlIGtleSwgdHlwZW5hbWUg
VCwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfcG9pbnRlcjxUPjo6dmFsdWU+
PgogY2xhc3MgUG9pc29uZWRJbXBsIHsKIHB1YmxpYzoKICAgICBQb2lzb25lZEltcGwoKSB7IH0K
IAotICAgIGV4cGxpY2l0IFBvaXNvbmVkSW1wbChUIHB0cikKKyAgICBQb2lzb25lZEltcGwoVCBw
dHIpCiAgICAgICAgIDogbV9wb2lzb25lZEJpdHMocG9pc29uKHB0cikpCiAgICAgeyB9CiAKICAg
ICBQb2lzb25lZEltcGwoY29uc3QgUG9pc29uZWRJbXBsJikgPSBkZWZhdWx0OwogCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgSzIsIEsyIGsyLCB0eXBlbmFtZSBUMj4KKyAgICBQb2lzb25lZEltcGwo
Y29uc3QgUG9pc29uZWRJbXBsPEsyLCBrMiwgVDI+JiBvdGhlcikKKy8vICAgICAgICA6IG1fcG9p
c29uZWRCaXRzKHBvaXNvbjxUPihvdGhlci51bnBvaXNvbmVkKCkpKQorICAgICAgICA6IG1fcG9p
c29uZWRCaXRzKHBvaXNvbihvdGhlci51bnBvaXNvbmVkKCkpKQorICAgIHsgfQorCisgICAgUG9p
c29uZWRJbXBsKFBvaXNvbmVkSW1wbCYmIG90aGVyKQorICAgICAgICA6IG1fcG9pc29uZWRCaXRz
KFdURk1vdmUob3RoZXIubV9wb2lzb25lZEJpdHMpKQorICAgIHsgfQorCiAgICAgZXhwbGljaXQg
UG9pc29uZWRJbXBsKFBvaXNvbmVkQml0cyBwb2lzb25lZEJpdHMpCiAgICAgICAgIDogbV9wb2lz
b25lZEJpdHMocG9pc29uZWRCaXRzKQogICAgIHsgfQpAQCAtNzIsNyArMTA2LDEwIEBAIHB1Ymxp
YzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4KICAgICBVIHVucG9pc29uZWQoKSBjb25z
dCB7IHJldHVybiB1bnBvaXNvbjxVPihtX3BvaXNvbmVkQml0cyk7IH0KIAotICAgIEFMV0FZU19J
TkxJTkUgVCBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gdW5wb2lzb248VD4obV9wb2lzb25l
ZEJpdHMpOyB9CisgICAgdm9pZCBjbGVhcigpIHsgbV9wb2lzb25lZEJpdHMgPSAwOyB9CisKKyAg
ICBhdXRvJiBvcGVyYXRvciooKSBjb25zdCB7IEFTU0VSVChtX3BvaXNvbmVkQml0cyk7IHJldHVy
biBQb2lzb25lZEltcGxIZWxwZXI6OmFzUmVmZXJlbmNlKHVucG9pc29uKG1fcG9pc29uZWRCaXRz
KSk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIFQgb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIHVu
cG9pc29uKG1fcG9pc29uZWRCaXRzKTsgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFBv
aXNvbmVkQml0cz4KICAgICBVIGJpdHMoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8VT4o
bV9wb2lzb25lZEJpdHMpOyB9CkBAIC04MCw1NiArMTE3LDk5IEBAIHB1YmxpYzoKICAgICBib29s
IG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3BvaXNvbmVkQml0czsgfQogICAgIGV4cGxp
Y2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fcG9pc29uZWRCaXRzOyB9CiAK
LSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUG9pc29uZWRJbXBsJiBiKSBjb25zdAorICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9p
c29uZWRCaXRzID09IGIubV9wb2lzb25lZEJpdHM7IH0KKyAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgUG9pc29uZWRJbXBsJiBiKSBjb25zdCB7IHJldHVybiBtX3BvaXNvbmVkQml0cyAhPSBiLm1f
cG9pc29uZWRCaXRzOyB9CisgICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgUG9pc29uZWRJbXBsJiBi
KSBjb25zdCB7IHJldHVybiBtX3BvaXNvbmVkQml0cyA8IGIubV9wb2lzb25lZEJpdHM7IH0KKyAg
ICBib29sIG9wZXJhdG9yPD0oY29uc3QgUG9pc29uZWRJbXBsJiBiKSBjb25zdCB7IHJldHVybiBt
X3BvaXNvbmVkQml0cyA8PSBiLm1fcG9pc29uZWRCaXRzOyB9CisgICAgYm9vbCBvcGVyYXRvcj4o
Y29uc3QgUG9pc29uZWRJbXBsJiBiKSBjb25zdCB7IHJldHVybiBtX3BvaXNvbmVkQml0cyA+IGIu
bV9wb2lzb25lZEJpdHM7IH0KKyAgICBib29sIG9wZXJhdG9yPj0oY29uc3QgUG9pc29uZWRJbXBs
JiBiKSBjb25zdCB7IHJldHVybiBtX3BvaXNvbmVkQml0cyA+PSBiLm1fcG9pc29uZWRCaXRzOyB9
CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIG9wZXJhdG9yPT0oVSBiKSBjb25zdCB7
IHJldHVybiB1bnBvaXNvbmVkPFU+KCkgPT0gYjsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+
IGJvb2wgb3BlcmF0b3IhPShVIGIpIGNvbnN0IHsgcmV0dXJuIHVucG9pc29uZWQ8VT4oKSAhPSBi
OyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBvcGVyYXRvcjwoVSBiKSBjb25zdCB7
IHJldHVybiB1bnBvaXNvbmVkPFU+KCkgPCBiOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4g
Ym9vbCBvcGVyYXRvcjw9KFUgYikgY29uc3QgeyByZXR1cm4gdW5wb2lzb25lZDxVPigpIDw9IGI7
IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIG9wZXJhdG9yPihVIGIpIGNvbnN0IHsg
cmV0dXJuIHVucG9pc29uZWQ8VT4oKSA+IGI7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBi
b29sIG9wZXJhdG9yPj0oVSBiKSBjb25zdCB7IHJldHVybiB1bnBvaXNvbmVkPFU+KCkgPj0gYjsg
fQorCisgICAgUG9pc29uZWRJbXBsJiBvcGVyYXRvcj0oVCBwdHIpCiAgICAgewotICAgICAgICBy
ZXR1cm4gbV9wb2lzb25lZEJpdHMgPT0gYi5tX3BvaXNvbmVkQml0czsKKyAgICAgICAgbV9wb2lz
b25lZEJpdHMgPSBwb2lzb24ocHRyKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KKyAg
ICBQb2lzb25lZEltcGwmIG9wZXJhdG9yPShjb25zdCBQb2lzb25lZEltcGwmKSA9IGRlZmF1bHQ7
CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQdHJUeXBlID0gdm9pZCosIHR5cGVuYW1lID0gdHlw
ZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFB0clR5cGU+Ojp2YWx1ZT46OnR5
cGU+Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFB0clR5cGUgYikKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBLMiwgSzIgazIsIHR5cGVuYW1lIFQyPgorICAgIFBvaXNvbmVkSW1wbCYgb3BlcmF0
b3I9KGNvbnN0IFBvaXNvbmVkSW1wbDxLMiwgazIsIFQyPiYgb3RoZXIpCiAgICAgewotICAgICAg
ICByZXR1cm4gdW5wb2lzb25lZDxQdHJUeXBlPigpID09IGI7CisgICAgICAgIG1fcG9pc29uZWRC
aXRzID0gcG9pc29uPFQ+KG90aGVyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHJldHVybiAqdGhp
czsKICAgICB9CiAKLSAgICBQb2lzb25lZEltcGwmIG9wZXJhdG9yPShUIHB0cikKKyAgICB2b2lk
IHN3YXAoUG9pc29uZWRJbXBsJiBvKQogICAgIHsKLSAgICAgICAgbV9wb2lzb25lZEJpdHMgPSBw
b2lzb24ocHRyKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICBzdGQ6OnN3YXAobV9w
b2lzb25lZEJpdHMsIG8ubV9wb2lzb25lZEJpdHMpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEsyLCBLMiBrMiwgdHlwZW5hbWUgVDI+CisgICAgdm9pZCBzd2FwKFBvaXNvbmVkSW1w
bDxLMiwgazIsIFQyPiYgbykKKyAgICB7CisgICAgICAgIFQgdDEgPSB0aGlzLT51bnBvaXNvbmVk
KCk7CisgICAgICAgIFQyIHQyID0gby51bnBvaXNvbmVkKCk7CisgICAgICAgIHN0ZDo6c3dhcCh0
MSwgdDIpOworICAgICAgICBtX3BvaXNvbmVkQml0cyA9IHBvaXNvbih0MSk7CisgICAgICAgIG8g
PSB0MjsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBVPgorICAgIFQgZXhjaGFuZ2UoVSYm
IG5ld1ZhbHVlKQorICAgIHsKKyAgICAgICAgVCBvbGRWYWx1ZSA9IHVucG9pc29uZWQoKTsKKyAg
ICAgICAgbV9wb2lzb25lZEJpdHMgPSBwb2lzb24oc3RkOjpmb3J3YXJkPFU+KG5ld1ZhbHVlKSk7
CisgICAgICAgIHJldHVybiBvbGRWYWx1ZTsKICAgICB9Ci0gICAgUG9pc29uZWRJbXBsJiBvcGVy
YXRvcj0oY29uc3QgUG9pc29uZWRJbXBsJikgPSBkZWZhdWx0OwogCiBwcml2YXRlOgotI2lmIFVT
RShKU1ZBTFVFNjQpCisjaWYgRU5BQkxFKFBPSVNPTikKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBV
PgogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFBvaXNvbmVkQml0cyBwb2lzb24oVSBwdHIpIHsg
cmV0dXJuIHB0ciA/IGJpdHdpc2VfY2FzdDxQb2lzb25lZEJpdHM+KHB0cikgXiBrZXkgOiAwOyB9
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4K
ICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBVIHVucG9pc29uKFBvaXNvbmVkQml0cyBwb2lzb25l
ZEJpdHMpIHsgcmV0dXJuIHBvaXNvbmVkQml0cyA/IGJpdHdpc2VfY2FzdDxVPihwb2lzb25lZEJp
dHMgXiBrZXkpIDogYml0d2lzZV9jYXN0PFU+KDBsbCk7IH0KICNlbHNlCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVT4KICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBQb2lzb25lZEJpdHMgcG9pc29u
KFUgcHRyKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8UG9pc29uZWRCaXRzPihwdHIpOyB9Ci0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgVT4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4KICAgICBB
TFdBWVNfSU5MSU5FIHN0YXRpYyBVIHVucG9pc29uKFBvaXNvbmVkQml0cyBwb2lzb25lZEJpdHMp
IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxVPihwb2lzb25lZEJpdHMpOyB9CiAjZW5kaWYKIAogICAg
IFBvaXNvbmVkQml0cyBtX3BvaXNvbmVkQml0cyB7IDAgfTsKIH07CiAKLXRlbXBsYXRlPHVpbnRw
dHJfdCYga2V5LCB0eXBlbmFtZSBUPgotdXNpbmcgUG9pc29uZWQgPSBQb2lzb25lZEltcGw8dWlu
dHB0cl90Jiwga2V5LCBUPjsKK3RlbXBsYXRlPHR5cGVuYW1lIEsxLCBLMSBrMSwgdHlwZW5hbWUg
VDEsIHR5cGVuYW1lIEsyLCBLMiBrMiwgdHlwZW5hbWUgVDI+CitpbmxpbmUgdm9pZCBzd2FwKFBv
aXNvbmVkSW1wbDxLMSwgazEsIFQxPiYgYSwgUG9pc29uZWRJbXBsPEsyLCBrMiwgVDI+JiBiKQor
eworICAgIGEuc3dhcChiKTsKK30KIAotI2lmIFVTRShKU1ZBTFVFNjQpCi10ZW1wbGF0ZTx1aW50
MzJfdCBrZXksIHR5cGVuYW1lIFQ+Ci11c2luZyBJbnQzMlBvaXNvbmVkID0gUG9pc29uZWRJbXBs
PHVpbnRwdHJfdCwgc3RhdGljX2Nhc3Q8dWludHB0cl90PihrZXkpIDw8IDMyLCBUPjsKK1dURl9F
WFBPUlRfUFJJVkFURSB1aW50cHRyX3QgbWFrZVBvaXNvbigpOworCitpbmxpbmUgY29uc3RleHBy
IHVpbnRwdHJfdCBtYWtlUG9pc29uKHVpbnQzMl90IGtleSkKK3sKKyNpZiBFTkFCTEUoUE9JU09O
KQorICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDB4ODAwMDAwMDAgfCBrZXkpIDw8
IDMyOwogI2Vsc2UKLXRlbXBsYXRlPHVpbnQzMl90LCB0eXBlbmFtZSBUPgotdXNpbmcgSW50MzJQ
b2lzb25lZCA9IFBvaXNvbmVkSW1wbDx1aW50cHRyX3QsIDAsIFQ+OworICAgIHJldHVybiAodm9p
ZClrZXksIDA7CiAjZW5kaWYKK30KIAotV1RGX0VYUE9SVF9QUklWQVRFIHVpbnRwdHJfdCBtYWtl
UG9pc29uKCk7Cit0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4KK3VzaW5nIFBv
aXNvbmVkID0gUG9pc29uZWRJbXBsPHVpbnRwdHJfdCYsIGtleSwgVD47CisKK3RlbXBsYXRlPHVp
bnQzMl90IGtleSwgdHlwZW5hbWUgVD4KK3VzaW5nIENvbnN0RXhwclBvaXNvbmVkID0gUG9pc29u
ZWRJbXBsPHVpbnRwdHJfdCwgbWFrZVBvaXNvbihrZXkpLCBUPjsKIAogfSAvLyBuYW1lc3BhY2Ug
V1RGCiAKLXVzaW5nIFdURjo6SW50MzJQb2lzb25lZDsKK3VzaW5nIFdURjo6Q29uc3RFeHByUG9p
c29uZWQ7CiB1c2luZyBXVEY6OlBvaXNvbmVkOwogdXNpbmcgV1RGOjpQb2lzb25lZEJpdHM7CiB1
c2luZyBXVEY6Om1ha2VQb2lzb247CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjU4MTYpCisrKyBUb29scy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxNy0xMi0xMiAgTWFyayBMYW0gIDxt
YXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgRmlsbCBvdXQgc29tZSBQb2lzb25lZCBBUElz
LCBmaXggc29tZSBidWdzLCBhbmQgYWRkIHNvbWUgdGVzdHMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODA3MjQKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzM2MDA2ODg0PgorCisgICAgICAgIFJldmlld2VkIGJ5IEpGIEJhc3RpZW4uCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NvbnN0RXhwclBvaXNvbmVkLmNwcDogQWRkZWQuCisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9Qb2lzb25lZC5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6aW5pdGlh
bGl6ZVRlc3RQb2lzb24pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWREYXRhLmNwcDogQWRkZWQuCisKIDIw
MTctMTItMTIgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAg
IE1vYmlsZU1pbmlCcm93c2VyIHVzaW5nIHRoZSB3cm9uZyB0b29sY2hhaW4KSW5kZXg6IFRvb2xz
L1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdl
YktpdEFQSS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjI1ODA3KQorKysgVG9vbHMvVGVzdFdl
YktpdEFQSS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtOTUsNiArOTUsNyBAQCBz
ZXQoVGVzdFdURl9TT1VSQ0VTCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0No
ZWNrZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9U
ZXN0cy9XVEYvQ29uY3VycmVudFB0ckhhc2hTZXQuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJ
Un0vVGVzdHMvV1RGL0NvbmRpdGlvbi5jcHAKKyAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0
cy9XVEYvQ29uc3RFeHByUG9pc29uZWQuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVz
dHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0
cy9XVEYvRGF0ZU1hdGguY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0Rl
cXVlLmNwcApAQCAtMTIyLDYgKzEyMyw3IEBAIHNldChUZXN0V1RGX1NPVVJDRVMKICAgICAke1RF
U1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvT3B0aW9uYWwuY3BwCiAgICAgJHtURVNUV0VCS0lU
QVBJX0RJUn0vVGVzdHMvV1RGL09wdGlvblNldC5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElS
fS9UZXN0cy9XVEYvUGFya2luZ0xvdC5jcHAKKyAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0
cy9XVEYvUG9pc29uZWQuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1By
aW9yaXR5UXVldWUuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1JlZEJs
YWNrVHJlZS5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvUmVmLmNwcApJ
bmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIyNTgwNykKKysrIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NTYsNiArNzU2LDggQEAKIAkJRjZCN0JFOTcxNzQ2OUI5NjAwOEEzNDQ1
IC8qIGFzc29jaWF0ZS1mb3JtLWNvbnRyb2xzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjZCN0JFOTYxNzQ2OUI3RTAwOEEzNDQ1IC8q
IGFzc29jaWF0ZS1mb3JtLWNvbnRyb2xzLmh0bWwgKi87IH07CiAJCUY2RjQ5QzZCMTU1NDVDQTcw
MDA3RjM5RCAvKiBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlX0J1bmRsZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNkY0OUM2NjE1NTQ1QzhEMDAw
N0YzOUQgLyogRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZV9CdW5kbGUuY3BwICovOyB9OwogCQlG
NkZERERENjE0MjQxQzZGMDA0RjE3MjkgLyogcHVzaC1zdGF0ZS5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2RkREREQ1MTQyNDFDNDgw
MDRGMTcyOSAvKiBwdXNoLXN0YXRlLmh0bWwgKi87IH07CisJCUZFMDVGQUVGMUZFMDY0NUIwMDA5
MzIzMCAvKiBQb2lzb25lZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTA1RkFFRTFGRTA2NDNEMDAwOTMyMzAgLyogUG9pc29uZWQuY3BwICovOyB9
OworCQlGRTA1RkFGMTFGRTA4Q0Q0MDAwOTMyMzAgLyogQ29uc3RFeHByUG9pc29uZWQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwNUZBRjAxRkUw
OENDRDAwMDkzMjMwIC8qIENvbnN0RXhwclBvaXNvbmVkLmNwcCAqLzsgfTsKIC8qIEVuZCBQQlhC
dWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2Vj
dGlvbiAqLwpAQCAtMTg1Nyw2ICsxODU5LDggQEAKIAkJRjZGNDlDNjcxNTU0NUM4RDAwMDdGMzlE
IC8qIERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUY2RkREREQyMTQyNDFBRDQwMDRGMTcyOSAvKiBQcml2YXRlQnJv
d3NpbmdQdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBQcml2YXRlQnJvd3NpbmdQdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFj
ay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2RkREREQ1MTQyNDFDNDgwMDRG
MTcyOSAvKiBwdXNoLXN0YXRlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAicHVz
aC1zdGF0ZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUwNUZBRUUxRkUw
NjQzRDAwMDkzMjMwIC8qIFBvaXNvbmVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFBvaXNvbmVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUw
NUZBRjAxRkUwOENDRDAwMDkzMjMwIC8qIENvbnN0RXhwclBvaXNvbmVkLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnN0RXhwclBvaXNvbmVkLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVCNkY3NEUxQjJCQTQ0RTAwOUU0OTIyIC8qIE5ha2Vk
UHRyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ha2VkUHRyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNl
Y3Rpb24gKi8KIApAQCAtMjYxMyw2ICsyNjE3LDcgQEAKIAkJCQlBN0E5NjZEQTE0MEVDQ0M4MDA1
RUY5QjQgLyogQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcCAqLywKIAkJCQkwRjMwQ0I1
QjFGQ0UxNzkyMDA0QjUzMjMgLyogQ29uY3VycmVudFB0ckhhc2hTZXQuY3BwICovLAogCQkJCTBG
RUFFMzY3MUI3RDE5Q0IwMENFMTdGMiAvKiBDb25kaXRpb24uY3BwICovLAorCQkJCUZFMDVGQUYw
MUZFMDhDQ0QwMDA5MzIzMCAvKiBDb25zdEV4cHJQb2lzb25lZC5jcHAgKi8sCiAJCQkJNTE3MTRF
QjkxRDA4NzQxNjAwNDcyM0M0IC8qIENyb3NzVGhyZWFkVGFzay5jcHAgKi8sCiAJCQkJMjZBMkM3
MkUxNUUyRTczQzAwNUIxQTE0IC8qIENTdHJpbmcuY3BwICovLAogCQkJCTdBQTAyMUJBMUFCMDlF
QTcwMDUyOTUzRiAvKiBEYXRlTWF0aC5jcHAgKi8sCkBAIC0yNjQ2LDYgKzI2NTEsNyBAQAogCQkJ
CTFBRkRFNjU0MTk1M0IyQzAwMEM0OEZGQSAvKiBPcHRpb25hbC5jcHAgKi8sCiAJCQkJQ0U1MEQ4
QzgxQzg2NjVDRTAwNzJFQTVBIC8qIE9wdGlvblNldC5jcHAgKi8sCiAJCQkJMEZFNDQ3OTcxQjc2
RjFFMzAwOTQ5OEVCIC8qIFBhcmtpbmdMb3QuY3BwICovLAorCQkJCUZFMDVGQUVFMUZFMDY0M0Qw
MDA5MzIzMCAvKiBQb2lzb25lZC5jcHAgKi8sCiAJCQkJNTNFQzI1M0YxRTk2QkM4MDAwMDgzMUI5
IC8qIFByaW9yaXR5UXVldWUuY3BwICovLAogCQkJCTBGQzZDNENCMTQxMDI3RTAwMDVCN0YwQyAv
KiBSZWRCbGFja1RyZWUuY3BwICovLAogCQkJCTkzQTQyN0FBMTgwREEyNjQwMENEMjRENyAvKiBS
ZWYuY3BwICovLApAQCAtMzE5MCw2ICszMTk2LDcgQEAKIAkJCQk3QzgzREYxRDFEMEE1OTBDMDBG
RUJDRjMgLyogTG9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTdENTRGNjFGMzM5NUQwMDBB
OTdBQTcgLyogTG9nZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERUVEMUQwQTU5MEMw
MEZFQkNGMyAvKiBNYXRoRXh0cmFzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFMDVGQUYxMUZF
MDhDRDQwMDA5MzIzMCAvKiBDb25zdEV4cHJQb2lzb25lZC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk3QzgzREVFRjFEMEE1OTBDMDBGRUJDRjMgLyogTUQ1LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTdDODNERUYxMUQwQTU5MEMwMEZFQkNGMyAvKiBNZWRpYVRpbWUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0M4M0RFRjYxRDBBNTkwQzAwRkVCQ0YzIC8qIE1ldGFBbGxvY2F0b3IuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC0zMjEwLDYgKzMyMTcsNyBAQAogCQkJCTdDODNERjA1MUQwQTU5MEMwMEZF
QkNGMyAvKiBSdW5Mb29wLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERjI2MUQwQTU5MEMw
MEZFQkNGMyAvKiBTYXR1cmF0ZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxQTM1MjRBRTFENjNBNEZCMDAzMTcyOUIgLyogU2NvcGUuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJRkUwNUZBRUYxRkUwNjQ1QjAwMDkzMjMwIC8qIFBvaXNvbmVkLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTdDODNERjEyMUQwQTU5MEMwMEZFQkNGMyAvKiBTY29wZWRMYW1iZGEuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGM0QxRDBBNTkwQzAwRkVCQ0YzIC8qIFNldEZvclNj
b3BlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERjJBMUQwQTU5MEMwMEZFQkNGMyAvKiBT
SEExLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvQ29uc3RFeHByUG9pc29uZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0NvbnN0RXhwclBvaXNvbmVkLmNwcAkobm9uZXhpc3RlbnQpCisrKyBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Db25zdEV4cHJQb2lzb25lZC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwzNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJSZWZMb2dnZXIu
aCIKKyNpbmNsdWRlIDxtdXRleD4KKyNpbmNsdWRlIDx3dGYvUG9pc29uZWQuaD4KKworbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkgeworCitzdGF0aWMgY29uc3QgdWludDMyX3QgUG9pc29uQSA9IDB4
YWFhYTsKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBQb2lzb25CID0gMHhiYmJiOworCisvLyBGb3Ig
dGhlc2UgdGVzdHMsIHdlIG5lZWQgYSBiYXNlIGNsYXNzIGFuZCBhIGRlcml2ZWQgY2xhc3MuIEZv
ciB0aGlzIHB1cnBvc2UsCisvLyB3ZSByZXVzZSB0aGUgUmVmTG9nZ2VyIGFuZCBEZXJpdmVkUmVm
TG9nZ2VyIGNsYXNzZXMuCisKK1RFU1QoV1RGX0NvbnN0RXhwclBvaXNvbmVkLCBCYXNpYykKK3sK
KyAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKKworICAgIENvbnN0RXhwclBvaXNvbmVkPFBv
aXNvbkEsIFJlZkxvZ2dlcio+IGVtcHR5OworICAgIEFTU0VSVF9FUShudWxscHRyLCBlbXB0eS51
bnBvaXNvbmVkKCkpOworCisgICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25B
LCBSZWZMb2dnZXIqPiBwdHIoJmEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNv
bmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsICYqcHRyKTsKKyAgICAgICAgQVNTRVJUX0VR
KCZhLm5hbWUsICZwdHItPm5hbWUpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29uc3RFeHBy
UG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyID0gJmE7CisgICAgICAgIEFTU0VSVF9F
USgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBDb25zdEV4
cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSA9ICZhOworICAgICAgICBDb25zdEV4
cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMihwMSk7CisgICAgICAgIENvbnN0RXhw
clBvaXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+IHAzKHAxKTsKKyAgICAgICAgQVNTRVJUX0VR
KCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29u
ZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKworICAgICAg
ICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RS
VUUocDEuYml0cygpICE9IHAzLmJpdHMoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBDb25z
dEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSA9ICZhOworICAgICAgICBDb25z
dEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9IHAxOworICAgICAgICBDb25z
dEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwMyA9IHAxOworICAgICAgICBBU1NF
UlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworCisg
ICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NF
UlRfVFJVRShwMS5iaXRzKCkgIT0gcDMuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAg
IENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxID0gJmE7CisgICAgICAg
IENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyID0gV1RGTW92ZShwMSk7
CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOworCisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBv
aXNvbkEsIFJlZkxvZ2dlcio+IHAzID0gJmE7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBv
aXNvbkIsIFJlZkxvZ2dlcio+IHA0ID0gV1RGTW92ZShwMyk7CisgICAgICAgIEFTU0VSVF9FUSgm
YSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwNC51bnBvaXNvbmVk
KCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAg
ICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9CisKKyAgICB7
CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxID0gJmE7
CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKFdURk1v
dmUocDEpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAg
ICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQ29uc3RFeHByUG9p
c29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMgPSAmYTsKKyAgICAgICAgQ29uc3RFeHByUG9p
c29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQoV1RGTW92ZShwMykpOworICAgICAgICBBU1NF
UlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDQudW5w
b2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygp
KTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQor
CisgICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBEZXJpdmVkUmVmTG9n
Z2VyKj4gcDEgPSAmYTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9n
Z2VyKj4gcDIgPSBwMTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9n
Z2VyKj4gcDMgPSBwMTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwor
ICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9F
USgmYSwgcDMudW5wb2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkg
PT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAzLmJpdHMo
KSk7CisgICAgfQorCisgICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBE
ZXJpdmVkUmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9p
c29uQSwgUmVmTG9nZ2VyKj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgQVNTRVJUX0VRKCZh
LCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQo
KSk7CisKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgRGVyaXZlZFJlZkxvZ2dl
cio+IHAzID0gJmE7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dl
cio+IHA0ID0gV1RGTW92ZShwMyk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25l
ZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAg
IEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJV
RShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0
RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAgIEFTU0VS
VF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHB0ci5jbGVhcigpOworICAgICAg
ICBBU1NFUlRfRVEobnVsbHB0ciwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgfQorfQorCitURVNU
KFdURl9Db25zdEV4cHJQb2lzb25lZCwgQXNzaWdubWVudCkKK3sKKyAgICBEZXJpdmVkUmVmTG9n
Z2VyIGEoImEiKTsKKyAgICBSZWZMb2dnZXIgYigiYiIpOworICAgIERlcml2ZWRSZWZMb2dnZXIg
YygiYyIpOworCisgICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZM
b2dnZXIqPiBwMSgmYSk7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxv
Z2dlcio+IHAyKCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwor
ICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHAxID0gcDI7
CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOworCisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBv
aXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9p
c29uQiwgUmVmTG9nZ2VyKj4gcDQoJmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9p
c29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKKyAgICAg
ICAgcDMgPSBwNDsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMy51bnBvaXNvbmVkKCkpOworICAg
ICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RS
VUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMo
KSAhPSBwNC5iaXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29u
ZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBw
dHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcHRyID0gJmI7CisgICAgICAgIEFTU0VSVF9FUSgm
YiwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBDb25zdEV4cHJQ
b2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOworICAgICAgICBBU1NFUlRfRVEo
JmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICBwdHIgPSBudWxscHRyOworICAgICAgICBB
U1NFUlRfRVEobnVsbHB0ciwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgfQorCisgICAgeworICAg
ICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7CisgICAg
ICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKCZiKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIs
IHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHAxID0gV1RGTW92ZShwMik7CisgICAgICAgIEFT
U0VSVF9FUSgmYiwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51
bnBvaXNvbmVkKCkpOworCisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxv
Z2dlcio+IHAzKCZhKTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9n
Z2VyKj4gcDQoJmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7Cisg
ICAgICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDMgPSBXVEZN
b3ZlKHA0KTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAg
ICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUo
cDEuYml0cygpID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAh
PSBwNC5iaXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8
UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQ
b2lzb25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDIoJmMpOworICAgICAgICBBU1NFUlRfRVEoJmEs
IHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDIudW5wb2lzb25lZCgp
KTsKKyAgICAgICAgcDEgPSBwMjsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMS51bnBvaXNvbmVk
KCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAg
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOworICAgICAgICBD
b25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDQoJmMpOworICAg
ICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgm
YywgcDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDMgPSBwNDsKKyAgICAgICAgQVNTRVJUX0VR
KCZjLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHA0LnVucG9pc29u
ZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7Cisg
ICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgIH0KKworICAg
IHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZh
KTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcHRy
ID0gJmM7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcHRyLnVucG9pc29uZWQoKSk7CisgICAgfQor
CisgICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBw
MSgmYSk7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIERlcml2ZWRSZWZMb2dn
ZXIqPiBwMigmYyk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAg
ICAgICAgQVNTRVJUX0VRKCZjLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBwMSA9IFdURk1v
dmUocDIpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAg
IEFTU0VSVF9FUSgmYywgcDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBDb25zdEV4cHJQb2lz
b25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygmYSk7CisgICAgICAgIENvbnN0RXhwclBvaXNv
bmVkPFBvaXNvbkIsIERlcml2ZWRSZWZMb2dnZXIqPiBwNCgmYyk7CisgICAgICAgIEFTU0VSVF9F
USgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwNC51bnBvaXNv
bmVkKCkpOworICAgICAgICBwMyA9IFdURk1vdmUocDQpOworICAgICAgICBBU1NFUlRfRVEoJmMs
IHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDQudW5wb2lzb25lZCgp
KTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKyAgICAg
ICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQorCisgICAgewor
ICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOwor
ICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICBwdHIgPSBw
dHI7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgfQorCisg
ICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIo
JmEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworI2lmIENPTVBJ
TEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcg
ZGlhZ25vc3RpYyBpZ25vcmVkICItV3Vua25vd24tcHJhZ21hcyIKKyNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBpZ25vcmVkICItV3NlbGYtbW92ZSIKKyNlbmRpZgorICAgICAgICBwdHIgPSBXVEZN
b3ZlKHB0cik7CisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMg
cG9wCisjZW5kaWYKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAg
ICB9Cit9CisKK1RFU1QoV1RGX0NvbnN0RXhwclBvaXNvbmVkLCBTd2FwKQoreworICAgIFJlZkxv
Z2dlciBhKCJhIik7CisgICAgUmVmTG9nZ2VyIGIoImIiKTsKKworICAgIHsKKyAgICAgICAgQ29u
c3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOworICAgICAgICBDb25z
dEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMigmYik7CisgICAgICAgIEFTU0VS
VF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBv
aXNvbmVkKCkpOworICAgICAgICBwMS5zd2FwKHAyKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBw
MS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7
CisKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEp
OworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7
CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAgICBwMy5zd2FwKHA0KTsKKyAgICAgICAg
QVNTRVJUX0VRKCZiLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHA0
LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAyLmJp
dHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAg
ICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDMuYml0cygpKTsKKyAgICAgICAgQVNTRVJU
X1RSVUUocDIuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBD
b25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7CisgICAgICAgIENv
bnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKCZiKTsKKyAgICAgICAgQVNT
RVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVu
cG9pc29uZWQoKSk7CisgICAgICAgIHN3YXAocDEsIHAyKTsKKyAgICAgICAgQVNTRVJUX0VRKCZi
LCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQo
KSk7CisKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMo
JmEpOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCgm
Yik7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNT
RVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAgICBzd2FwKHAzLCBwNCk7CisgICAg
ICAgIEFTU0VSVF9FUSgmYiwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZh
LCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBw
Mi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsK
KyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAzLmJpdHMoKSk7CisgICAgICAgIEFT
U0VSVF9UUlVFKHAyLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgIH0KK30KKworc3RhdGljIENv
bnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHBvaXNvbmVkUHRyRm9vKFJlZkxv
Z2dlciYgbG9nZ2VyKQoreworICAgIHJldHVybiBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBS
ZWZMb2dnZXIqPigmbG9nZ2VyKTsKK30KKworVEVTVChXVEZfQ29uc3RFeHByUG9pc29uZWQsIFJl
dHVyblZhbHVlKQoreworICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOworCisgICAgeworICAg
ICAgICBhdXRvIHB0ciA9IHBvaXNvbmVkUHRyRm9vKGEpOworICAgICAgICBBU1NFUlRfRVEoJmEs
IHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsICYqcHRyKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZhLm5hbWUsICZwdHItPm5hbWUpOworICAgIH0KK30KKworfSAvLyBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSQorCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9Qb2lzb25lZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvUG9pc29uZWQuY3BwCShub25leGlzdGVudCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1BvaXNvbmVkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM2OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2luY2x1ZGUgIlJlZkxvZ2dlci5oIgorI2luY2x1ZGUgPG11dGV4PgorI2luY2x1
ZGUgPHd0Zi9FeHBvcnRNYWNyb3MuaD4KKyNpbmNsdWRlIDx3dGYvUG9pc29uZWQuaD4KKworbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCit1aW50cHRyX3QgZ190ZXN0UG9pc29uQTsKK3VpbnRw
dHJfdCBnX3Rlc3RQb2lzb25COworCitzdGF0aWMgdm9pZCBpbml0aWFsaXplVGVzdFBvaXNvbigp
Cit7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVPbmNlRmxhZzsKKyAgICBz
dGQ6OmNhbGxfb25jZShpbml0aWFsaXplT25jZUZsYWcsIFtdIHsKKyAgICAgICAgLy8gTWFrZSBz
dXJlIHdlIGdldCAyIGRpZmZlcmVudCBwb2lzb24gdmFsdWVzLgorICAgICAgICBnX3Rlc3RQb2lz
b25BID0gbWFrZVBvaXNvbigpOworICAgICAgICB3aGlsZSAoIWdfdGVzdFBvaXNvbkIgfHwgZ190
ZXN0UG9pc29uQiA9PSBnX3Rlc3RQb2lzb25BKQorICAgICAgICAgICAgZ190ZXN0UG9pc29uQiA9
IG1ha2VQb2lzb24oKTsKKyAgICB9KTsKK30KKworLy8gRm9yIHRoZXNlIHRlc3RzLCB3ZSBuZWVk
IGEgYmFzZSBjbGFzcyBhbmQgYSBkZXJpdmVkIGNsYXNzLiBGb3IgdGhpcyBwdXJwb3NlLAorLy8g
d2UgcmV1c2UgdGhlIFJlZkxvZ2dlciBhbmQgRGVyaXZlZFJlZkxvZ2dlciBjbGFzc2VzLgorCitU
RVNUKFdURl9Qb2lzb25lZCwgQmFzaWMpCit7CisgICAgaW5pdGlhbGl6ZVRlc3RQb2lzb24oKTsK
KyAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKKworICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNv
bkEsIFJlZkxvZ2dlcio+IGVtcHR5OworICAgIEFTU0VSVF9FUShudWxscHRyLCBlbXB0eS51bnBv
aXNvbmVkKCkpOworCisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZM
b2dnZXIqPiBwdHIoJmEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkp
OworICAgICAgICBBU1NFUlRfRVEoJmEsICYqcHRyKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLm5h
bWUsICZwdHItPm5hbWUpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0
UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyID0gJmE7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRy
LnVucG9pc29uZWQoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQ
b2lzb25BLCBSZWZMb2dnZXIqPiBwMSA9ICZhOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lz
b25BLCBSZWZMb2dnZXIqPiBwMihwMSk7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIs
IFJlZkxvZ2dlcio+IHAzKHAxKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVk
KCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFT
U0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5i
aXRzKCkgPT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAz
LmJpdHMoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25B
LCBSZWZMb2dnZXIqPiBwMSA9ICZhOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBS
ZWZMb2dnZXIqPiBwMiA9IHAxOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZM
b2dnZXIqPiBwMyA9IHAxOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7
CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMo
KSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDMuYml0
cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJl
ZkxvZ2dlcio+IHAxID0gJmE7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxv
Z2dlcio+IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lz
b25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOworCisgICAg
ICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzID0gJmE7CisgICAgICAg
IFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0ID0gV1RGTW92ZShwMyk7Cisg
ICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VR
KCZhLCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9
PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygp
KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxv
Z2dlcio+IHAxID0gJmE7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dl
cio+IHAyKFdURk1vdmUocDEpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVk
KCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAg
UG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMgPSAmYTsKKyAgICAgICAgUG9p
c29uZWQ8Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQoV1RGTW92ZShwMykpOworICAgICAg
ICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwg
cDQudW5wb2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIu
Yml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7Cisg
ICAgfQorCisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBEZXJpdmVkUmVm
TG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9n
Z2VyKj4gcDIgPSBwMTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2Vy
Kj4gcDMgPSBwMTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAg
ICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgm
YSwgcDMudW5wb2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0g
cDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAzLmJpdHMoKSk7
CisgICAgfQorCisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBEZXJpdmVk
UmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVm
TG9nZ2VyKj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBv
aXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CisKKyAg
ICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgRGVyaXZlZFJlZkxvZ2dlcio+IHAzID0gJmE7
CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0ID0gV1RGTW92
ZShwMyk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAg
QVNTRVJUX0VRKCZhLCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAx
LmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0g
cDQuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNv
bkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9p
c29uZWQoKSk7CisgICAgICAgIHB0ci5jbGVhcigpOworICAgICAgICBBU1NFUlRfRVEobnVsbHB0
ciwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgfQorfQorCitURVNUKFdURl9Qb2lzb25lZCwgQXNz
aWdubWVudCkKK3sKKyAgICBpbml0aWFsaXplVGVzdFBvaXNvbigpOworICAgIERlcml2ZWRSZWZM
b2dnZXIgYSgiYSIpOworICAgIFJlZkxvZ2dlciBiKCJiIik7CisgICAgRGVyaXZlZFJlZkxvZ2dl
ciBjKCJjIik7CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxv
Z2dlcio+IHAxKCZhKTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2Vy
Kj4gcDIoJmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAg
ICAgIEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDEgPSBwMjsKKyAg
ICAgICAgQVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEo
JmIsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwg
UmVmTG9nZ2VyKj4gcDMoJmEpOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZM
b2dnZXIqPiBwNCgmYik7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAgICBwMyA9IHA0
OworICAgICAgICBBU1NFUlRfRVEoJmIsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VS
VF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRz
KCkgPT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJp
dHMoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBS
ZWZMb2dnZXIqPiBwdHIoJmEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVk
KCkpOworICAgICAgICBwdHIgPSAmYjsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwdHIudW5wb2lz
b25lZCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEs
IFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29u
ZWQoKSk7CisgICAgICAgIHB0ciA9IG51bGxwdHI7CisgICAgICAgIEFTU0VSVF9FUShudWxscHRy
LCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdf
dGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0
UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoJmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVu
cG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKKyAg
ICAgICAgcDEgPSBXVEZNb3ZlKHAyKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS51bnBvaXNv
bmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAg
ICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOworICAgICAgICBQ
b2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7CisgICAgICAgIEFTU0VS
VF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBv
aXNvbmVkKCkpOworICAgICAgICBwMyA9IFdURk1vdmUocDQpOworICAgICAgICBBU1NFUlRfRVEo
JmIsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25l
ZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKyAg
ICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQorCisgICAg
eworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7Cisg
ICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMigmYyk7
CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZjLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBwMSA9IHAyOworICAgICAgICBBU1NF
UlRfRVEoJmMsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDIudW5w
b2lzb25lZCgpKTsKKworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIq
PiBwMygmYSk7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIERlcml2ZWRSZWZMb2dn
ZXIqPiBwNCgmYyk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAg
ICAgICAgQVNTRVJUX0VRKCZjLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAgICBwMyA9IHA0Owor
ICAgICAgICBBU1NFUlRfRVEoJmMsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9F
USgmYywgcDQudW5wb2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkg
PT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMo
KSk7CisgICAgfQorCisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZM
b2dnZXIqPiBwdHIoJmEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkp
OworICAgICAgICBwdHIgPSAmYzsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwdHIudW5wb2lzb25l
ZCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJl
ZkxvZ2dlcio+IHAxKCZhKTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgRGVyaXZl
ZFJlZkxvZ2dlcio+IHAyKCZjKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVk
KCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHAx
ID0gV1RGTW92ZShwMik7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDEudW5wb2lzb25lZCgpKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMi51bnBvaXNvbmVkKCkpOworCisgICAgICAgIFBvaXNv
bmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKKyAgICAgICAgUG9pc29uZWQ8
Z190ZXN0UG9pc29uQiwgRGVyaXZlZFJlZkxvZ2dlcio+IHA0KCZjKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHA0LnVucG9p
c29uZWQoKSk7CisgICAgICAgIHAzID0gV1RGTW92ZShwNCk7CisgICAgICAgIEFTU0VSVF9FUSgm
YywgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwNC51bnBvaXNvbmVk
KCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAg
ICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9CisKKyAgICB7
CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7Cisg
ICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHB0ciA9IHB0
cjsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICB9CisKKyAg
ICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7
CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisjaWYgQ09NUElMRVIo
Q0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFn
bm9zdGljIGlnbm9yZWQgIi1XdW5rbm93bi1wcmFnbWFzIgorI3ByYWdtYSBjbGFuZyBkaWFnbm9z
dGljIGlnbm9yZWQgIi1Xc2VsZi1tb3ZlIgorI2VuZGlmCisgICAgICAgIHB0ciA9IFdURk1vdmUo
cHRyKTsKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AK
KyNlbmRpZgorICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0K
K30KKworVEVTVChXVEZfUG9pc29uZWQsIFN3YXApCit7CisgICAgaW5pdGlhbGl6ZVRlc3RQb2lz
b24oKTsKKyAgICBSZWZMb2dnZXIgYSgiYSIpOworICAgIFJlZkxvZ2dlciBiKCJiIik7CisKKyAg
ICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsK
KyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoJmIpOworICAg
ICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgm
YiwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDEuc3dhcChwMik7CisgICAgICAgIEFTU0VS
VF9FUSgmYiwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBv
aXNvbmVkKCkpOworCisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+
IHAzKCZhKTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQo
JmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFT
U0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDMuc3dhcChwNCk7CisgICAg
ICAgIEFTU0VSVF9FUSgmYiwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZh
LCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBw
Mi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsK
KyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAzLmJpdHMoKSk7CisgICAgICAgIEFT
U0VSVF9UUlVFKHAyLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAg
ICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOworICAgICAgICBQ
b2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMigmYik7CisgICAgICAgIEFTU0VS
VF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBv
aXNvbmVkKCkpOworICAgICAgICBzd2FwKHAxLCBwMik7CisgICAgICAgIEFTU0VSVF9FUSgmYiwg
cDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkp
OworCisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsK
KyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQoJmIpOworICAg
ICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgm
YiwgcDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAgc3dhcChwMywgcDQpOworICAgICAgICBBU1NF
UlRfRVEoJmIsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDQudW5w
b2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDIuYml0cygp
KTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgICAg
IEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMy5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJV
RShwMi5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9Cit9CisKK3N0YXRpYyBQb2lzb25lZDxn
X3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwb2lzb25lZFB0ckZvbyhSZWZMb2dnZXImIGxvZ2dl
cikKK3sKKyAgICByZXR1cm4gUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4oJmxv
Z2dlcik7Cit9CisKK1RFU1QoV1RGX1BvaXNvbmVkLCBSZXR1cm5WYWx1ZSkKK3sKKyAgICBpbml0
aWFsaXplVGVzdFBvaXNvbigpOworICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOworCisgICAg
eworICAgICAgICBhdXRvIHB0ciA9IHBvaXNvbmVkUHRyRm9vKGEpOworICAgICAgICBBU1NFUlRf
RVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsICYqcHRyKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZhLm5hbWUsICZwdHItPm5hbWUpOworICAgIH0KK30KKworfSAv
LyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329205</attachid>
            <date>2017-12-12 22:29:57 -0800</date>
            <delta_ts>2017-12-12 22:54:53 -0800</delta_ts>
            <desc>patch for landing.</desc>
            <filename>bug-180724.patch</filename>
            <type>text/plain</type>
            <size>42477</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI1ODM3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDE3LTEyLTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBG
aWxsIG91dCBzb21lIFBvaXNvbmVkIEFQSXMsIGZpeCBzb21lIGJ1Z3MsIGFuZCBhZGQgc29tZSB0
ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
MDcyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYwMDY4ODQ+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgSkYgQmFzdGllbi4KKworICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlv
blRhYmxlLmg6CisKIDIwMTctMTItMTIgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4K
IAogICAgICAgICBTdHJ1Y3R1cmUsIFN0cnVjdHVyZVJhcmVEYXRhLCBhbmQgUHJvcGVydHlUYWJs
ZSBzaG91bGQgYmUgaW4gSXNvU3Vic3BhY2VzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaAkocmV2aXNp
b24gMjI1ODM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJh
bnNpdGlvblRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTg3LDggKzE4Nyw4IEBA
IHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgU2luZ2xlU2xvdFRyYW5zaXRp
b25XZWFrT3duZXI7Ci0gICAgdXNpbmcgUG9pc29uZWRUcmFuc2l0aW9uTWFwUHRyID0gSW50MzJQ
b2lzb25lZDxUcmFuc2l0aW9uTWFwUG9pc29uLCBUcmFuc2l0aW9uTWFwKj47Ci0gICAgdXNpbmcg
UG9pc29uZWRXZWFrSW1wbFB0ciA9IEludDMyUG9pc29uZWQ8V2Vha0ltcGxQb2lzb24sIFdlYWtJ
bXBsKj47CisgICAgdXNpbmcgUG9pc29uZWRUcmFuc2l0aW9uTWFwUHRyID0gQ29uc3RFeHByUG9p
c29uZWQ8VHJhbnNpdGlvbk1hcFBvaXNvbiwgVHJhbnNpdGlvbk1hcCo+OworICAgIHVzaW5nIFBv
aXNvbmVkV2Vha0ltcGxQdHIgPSBDb25zdEV4cHJQb2lzb25lZDxXZWFrSW1wbFBvaXNvbiwgV2Vh
a0ltcGwqPjsKIAogICAgIGJvb2wgaXNVc2luZ1NpbmdsZVNsb3QoKSBjb25zdAogICAgIHsKSW5k
ZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyMjU4MzcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDE3LTEyLTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFw
cGxlLmNvbT4KKworICAgICAgICBGaWxsIG91dCBzb21lIFBvaXNvbmVkIEFQSXMsIGZpeCBzb21l
IGJ1Z3MsIGFuZCBhZGQgc29tZSB0ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4MDcyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYwMDY4
ODQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSkYgQmFzdGllbi4KKworICAgICAgICBBbHNvIHJl
bmFtZSBJbnQzMlBvaXNvbmVkIHRvIENvbnN0RXhwclBvaXNvbmVkLiAgVGhlIGtleSBpdCB0YWtl
cyBpcyBhY3R1YWxseSBhCisgICAgICAgIHVpbnQzMl90LiAgU28sIEludDMyIGlzIHJlYWxseSBh
IG1pc25vbWVyLiAgSW4gYWRkaXRpb24sIHRoZSBrZXkgbmVlZHMgdG8gYmUgYQorICAgICAgICBj
b25zdGV4cHIuICBTbywgQ29uc3RFeHByUG9pc29uZWQgaXMgYSBiZXR0ZXIgbmFtZSBmb3IgaXQu
CisKKyAgICAgICAgKiB3dGYvUG9pc29uZWQuY3BwOgorICAgICAgICAoV1RGOjptYWtlUG9pc29u
KToKKyAgICAgICAgKiB3dGYvUG9pc29uZWQuaDoKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBs
SGVscGVyOjphc1JlZmVyZW5jZSk6CisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6UG9pc29u
ZWRJbXBsKToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpjbGVhcik6CisgICAgICAgIChX
VEY6OlBvaXNvbmVkSW1wbDo6b3BlcmF0b3IqIGNvbnN0KToKKyAgICAgICAgKFdURjo6UG9pc29u
ZWRJbXBsOjpvcGVyYXRvci0+IGNvbnN0KToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpv
cGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvciE9
IGNvbnN0KToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvcjwgY29uc3QpOgor
ICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6Om9wZXJhdG9yPD0gY29uc3QpOgorICAgICAgICAo
V1RGOjpQb2lzb25lZEltcGw6Om9wZXJhdG9yPiBjb25zdCk6CisgICAgICAgIChXVEY6OlBvaXNv
bmVkSW1wbDo6b3BlcmF0b3I+PSBjb25zdCk6CisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6
b3BlcmF0b3I9KToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpzd2FwKToKKyAgICAgICAg
KFdURjo6UG9pc29uZWRJbXBsOjpleGNoYW5nZSk6CisgICAgICAgIChXVEY6OnN3YXApOgorICAg
ICAgICAoV1RGOjptYWtlUG9pc29uKToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVy
YXRvcj09KTogRGVsZXRlZC4KKwogMjAxNy0xMi0xMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbSlNDXSBJbXBsZW1lbnQgb3B0aW1pemVkIFdlYWtN
YXAgYW5kIFdlYWtTZXQKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVkLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Qb2lzb25lZC5jcHAJKHJldmlzaW9uIDIyNTgzNykKKysr
IFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMs
NyBAQCBuYW1lc3BhY2UgV1RGIHsKIHVpbnRwdHJfdCBtYWtlUG9pc29uKCkKIHsKICAgICB1aW50
cHRyX3Qga2V5ID0gY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKTsKLSNpZiBVU0UoSlNW
QUxVRTY0KSAmJiAhT1MoV0lORE9XUykKKyNpZiBFTkFCTEUoUE9JU09OKQogICAgIGtleSA9IChr
ZXkgPDwgMzIpIF4gKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oY3J5cHRvZ3JhcGhpY2FsbHlSYW5k
b21OdW1iZXIoKSkgPDwgMyk7CiAgICAgLy8gRW5zdXJlIHRoYXQgdGhlIHBvaXNvbmVkIGJpdHMg
KHBvaW50ZXIgXiBrZXkpIGRvIG5vdCBtYWtlIGEgdmFsaWQgcG9pbnRlciBhbmQKICAgICAvLyBj
YW5ub3QgYmUgMC4gV2UgZW5zdXJlIHRoYXQgaXQgaXMgemVybyBzbyB0aGF0IHRoZSBwb2lzb25l
ZCBiaXRzIGNhbiBhbHNvIGJlCkBAIC01MSw0ICs1MSwzIEBAIHVpbnRwdHJfdCBtYWtlUG9pc29u
KCkKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCi0KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BvaXNv
bmVkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUG9pc29uZWQuaAkocmV2aXNpb24g
MjI1ODM3KQorKysgU291cmNlL1dURi93dGYvUG9pc29uZWQuaAkod29ya2luZyBjb3B5KQpAQCAt
MjcsMTEgKzI3LDM3IEBACiAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogCisjZGVmaW5l
IEVOQUJMRV9QT0lTT04gMQogI2RlZmluZSBFTkFCTEVfUE9JU09OX0FTU0VSVFMgMAogCisvLyBP
bGRlciB2ZXJzaW9ucyBvZiBnY2MgYW5kIGNsYW5nIGhhdmUgYSBidWcgd2hpY2ggcmVzdWx0cyBp
biBidWlsZCBmYWlsdXJlcworLy8gd2hlbiB1c2luZyB0ZW1wbGF0ZSBtZXRob2RzIHRoYXQgdGFr
ZSBhbiBhcmd1bWVudCBvZiBQb2lzb25lZEltcGw8SzIsIGsyLCBUMj4KKy8vIHdoZW4gdGhlIEtl
eVR5cGUgaXMgYSB1aW50cHRyX3QgKGkuZS4gd2hlbiB3ZSdyZSB1c2luZyB0aGUgUG9pc29uZWQg
dmFyaWFudAorLy8gb2YgUG9pc29uZWRJbXBsKS4gVGhpcyBidWcgZG9lcyBub3QgbWFuaWZlc3Qg
Zm9yIHRoZSBDb25zdEV4cHJQb2lzb25lZCB2YXJpYW50LgorLy8gSW4gcHJhY3RpY2UsIHdlIHdp
bGwgbGlrZWx5IG9ubHkgdXNlIHRoZXNlIG1ldGhvZHMgZm9yIGluc3RhbnRpYXRpb25zIG9mIHRo
ZQorLy8gQ29uc3RFeHByUG9pc29uZWQgdmFyaWFudC4gSGVuY2UuIHRoaXMgYnVnIGlzIG5vdCBh
IHNob3cgc3RvcHBlci4KKy8vIFRoYXQgc2FpZCwgd2UnbGwgZGVmaW5lIEVOQUJMRV9NSVhFRF9Q
T0lTT04gYWNjb3JkaW5nbHkgc28gdGhhdCB3ZSBjYW4gdXNlCisvLyBpdCB0byBkaXNhYmxlIHRo
ZSBhZmZlY3RlZCB0ZXN0cyB3aGVuIGJ1aWxkaW5nIHdpdGggb2xkIGNvbXBpbGVycy4KKyNpZiBk
ZWZpbmVkKF9fY2xhbmdfbWFqb3JfXykKKyNpZiBfX2NsYW5nX21ham9yX18gPj0gNAorI2RlZmlu
ZSBFTkFCTEVfTUlYRURfUE9JU09OIDEgLy8gRW5hYmxlIGZvciBjbGFuZyA0LjAuMCBhbmQgbmV3
ZXIuCisjZW5kaWYgLy8gX19jbGFuZ19tYWpvcl9fCisjZWxpZiBkZWZpbmVkKF9fR05VQ19fKQor
I2luY2x1ZGUgPGZlYXR1cmVzLmg+CisjaWYgX19HTlVDX1BSRVJFUSg3LDIpCisjZGVmaW5lIEVO
QUJMRV9NSVhFRF9QT0lTT04gMSAvLyBFbmFibGUgZm9yIGdjYyA3LjIgYW5kIG5ld2VyLgorI2Vu
ZGlmIC8vIF9fR05VQ19QUkVSRVEoNywyKQorI2VuZGlmIC8vICFkZWZpbmVkKF9fR05VQ19fKQor
CisjaWZuZGVmIEVOQUJMRV9NSVhFRF9QT0lTT04KKyNkZWZpbmUgRU5BQkxFX01JWEVEX1BPSVNP
TiAwIC8vIERpc2FibGUgZm9yIGV2ZXJ5dGhpbmcgZWxzZS4KKyNlbmRpZgorCiAvLyBOb3QgY3Vy
cmVudGx5IHN1cHBvcnRlZCBmb3IgMzItYml0IG9yIE9TKFdJTkRPV1MpIGJ1aWxkcyAoYmVjYXVz
ZSBvZiBtaXNzaW5nIGxsaW50IHN1cHBvcnQpLgogLy8gTWFrZSBzdXJlIGl0J3MgZGlzYWJsZWQu
CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkgfHwgT1MoV0lORE9XUykKKyN1bmRlZiBFTkFCTEVfUE9J
U09OCisjZGVmaW5lIEVOQUJMRV9QT0lTT04gMAogI3VuZGVmIEVOQUJMRV9QT0lTT05fQVNTRVJU
UwogI2RlZmluZSBFTkFCTEVfUE9JU09OX0FTU0VSVFMgMAogI2VuZGlmCkBAIC00MCwxNyArNjYs
NDcgQEAgbmFtZXNwYWNlIFdURiB7CiAKIHVzaW5nIFBvaXNvbmVkQml0cyA9IHVpbnRwdHJfdDsK
IAorbmFtZXNwYWNlIFBvaXNvbmVkSW1wbEhlbHBlciB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
CitzdHJ1Y3QgaXNGdW5jdGlvblBvaW50ZXIgOiBzdGQ6OmludGVncmFsX2NvbnN0YW50PGJvb2ws
IHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxUPjo6dHlwZT46
OnZhbHVlPiB7IH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgaXNWb2lkUG9pbnRl
ciA6IHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgc3RkOjppc192b2lkPHR5cGVuYW1lIHN0
ZDo6cmVtb3ZlX3BvaW50ZXI8VD46OnR5cGU+Ojp2YWx1ZT4geyB9OworCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorc3RydWN0IGlzQ29udmVydGlibGVUb1JlZmVyZW5jZSA6IHN0ZDo6aW50ZWdyYWxf
Y29uc3RhbnQ8Ym9vbCwgIWlzRnVuY3Rpb25Qb2ludGVyPFQ+Ojp2YWx1ZSAmJiAhaXNWb2lkUG9p
bnRlcjxUPjo6dmFsdWU+IHsgfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3R5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmX3Q8IWlzQ29udmVydGlibGVUb1JlZmVyZW5jZTxUPjo6dmFsdWUsIGludD4m
Cithc1JlZmVyZW5jZShUKSB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4KK3R5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8aXNDb252ZXJ0aWJs
ZVRvUmVmZXJlbmNlPFQ+Ojp2YWx1ZSwgdHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxUPjo6
dHlwZT4mCithc1JlZmVyZW5jZShUIHB0cikgeyByZXR1cm4gKnB0cjsgfQorCit9IC8vIG5hbWVz
cGFjZSBQb2lzb25lZEltcGxIZWxwZXIKKwogdGVtcGxhdGU8dHlwZW5hbWUgS2V5VHlwZSwgS2V5
VHlwZSBrZXksIHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxzdGQ6Omlz
X3BvaW50ZXI8VD46OnZhbHVlPj4KIGNsYXNzIFBvaXNvbmVkSW1wbCB7CiBwdWJsaWM6CiAgICAg
UG9pc29uZWRJbXBsKCkgeyB9CiAKLSAgICBleHBsaWNpdCBQb2lzb25lZEltcGwoVCBwdHIpCisg
ICAgUG9pc29uZWRJbXBsKFQgcHRyKQogICAgICAgICA6IG1fcG9pc29uZWRCaXRzKHBvaXNvbihw
dHIpKQogICAgIHsgfQogCiAgICAgUG9pc29uZWRJbXBsKGNvbnN0IFBvaXNvbmVkSW1wbCYpID0g
ZGVmYXVsdDsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEsyLCBLMiBrMiwgdHlwZW5hbWUgVDI+
CisgICAgUG9pc29uZWRJbXBsKGNvbnN0IFBvaXNvbmVkSW1wbDxLMiwgazIsIFQyPiYgb3RoZXIp
CisgICAgICAgIDogbV9wb2lzb25lZEJpdHMocG9pc29uPFQ+KG90aGVyLnVucG9pc29uZWQoKSkp
CisgICAgeyB9CisKKyAgICBQb2lzb25lZEltcGwoUG9pc29uZWRJbXBsJiYgb3RoZXIpCisgICAg
ICAgIDogbV9wb2lzb25lZEJpdHMoV1RGTW92ZShvdGhlci5tX3BvaXNvbmVkQml0cykpCisgICAg
eyB9CisKICAgICBleHBsaWNpdCBQb2lzb25lZEltcGwoUG9pc29uZWRCaXRzIHBvaXNvbmVkQml0
cykKICAgICAgICAgOiBtX3BvaXNvbmVkQml0cyhwb2lzb25lZEJpdHMpCiAgICAgeyB9CkBAIC03
Miw3ICsxMjgsMTAgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPgogICAg
IFUgdW5wb2lzb25lZCgpIGNvbnN0IHsgcmV0dXJuIHVucG9pc29uPFU+KG1fcG9pc29uZWRCaXRz
KTsgfQogCi0gICAgQUxXQVlTX0lOTElORSBUIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiB1
bnBvaXNvbjxUPihtX3BvaXNvbmVkQml0cyk7IH0KKyAgICB2b2lkIGNsZWFyKCkgeyBtX3BvaXNv
bmVkQml0cyA9IDA7IH0KKworICAgIGF1dG8mIG9wZXJhdG9yKigpIGNvbnN0IHsgQVNTRVJUKG1f
cG9pc29uZWRCaXRzKTsgcmV0dXJuIFBvaXNvbmVkSW1wbEhlbHBlcjo6YXNSZWZlcmVuY2UodW5w
b2lzb24obV9wb2lzb25lZEJpdHMpKTsgfQorICAgIEFMV0FZU19JTkxJTkUgVCBvcGVyYXRvci0+
KCkgY29uc3QgeyByZXR1cm4gdW5wb2lzb24obV9wb2lzb25lZEJpdHMpOyB9CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBVID0gUG9pc29uZWRCaXRzPgogICAgIFUgYml0cygpIGNvbnN0IHsgcmV0
dXJuIGJpdHdpc2VfY2FzdDxVPihtX3BvaXNvbmVkQml0cyk7IH0KQEAgLTgwLDU2ICsxMzksOTkg
QEAgcHVibGljOgogICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fcG9pc29u
ZWRCaXRzOyB9CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEh
bV9wb2lzb25lZEJpdHM7IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQb2lzb25lZElt
cGwmIGIpIGNvbnN0CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBvaXNvbmVkSW1wbCYgYikg
Y29uc3QgeyByZXR1cm4gbV9wb2lzb25lZEJpdHMgPT0gYi5tX3BvaXNvbmVkQml0czsgfQorICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0IHsgcmV0dXJuIG1f
cG9pc29uZWRCaXRzICE9IGIubV9wb2lzb25lZEJpdHM7IH0KKyAgICBib29sIG9wZXJhdG9yPChj
b25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzIDwgYi5t
X3BvaXNvbmVkQml0czsgfQorICAgIGJvb2wgb3BlcmF0b3I8PShjb25zdCBQb2lzb25lZEltcGwm
IGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzIDw9IGIubV9wb2lzb25lZEJpdHM7IH0K
KyAgICBib29sIG9wZXJhdG9yPihjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0IHsgcmV0dXJu
IG1fcG9pc29uZWRCaXRzID4gYi5tX3BvaXNvbmVkQml0czsgfQorICAgIGJvb2wgb3BlcmF0b3I+
PShjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzID49
IGIubV9wb2lzb25lZEJpdHM7IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgb3Bl
cmF0b3I9PShVIGIpIGNvbnN0IHsgcmV0dXJuIHVucG9pc29uZWQ8VT4oKSA9PSBiOyB9CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBvcGVyYXRvciE9KFUgYikgY29uc3QgeyByZXR1cm4g
dW5wb2lzb25lZDxVPigpICE9IGI7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIG9w
ZXJhdG9yPChVIGIpIGNvbnN0IHsgcmV0dXJuIHVucG9pc29uZWQ8VT4oKSA8IGI7IH0KKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIG9wZXJhdG9yPD0oVSBiKSBjb25zdCB7IHJldHVybiB1
bnBvaXNvbmVkPFU+KCkgPD0gYjsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgb3Bl
cmF0b3I+KFUgYikgY29uc3QgeyByZXR1cm4gdW5wb2lzb25lZDxVPigpID4gYjsgfQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgb3BlcmF0b3I+PShVIGIpIGNvbnN0IHsgcmV0dXJuIHVu
cG9pc29uZWQ8VT4oKSA+PSBiOyB9CisKKyAgICBQb2lzb25lZEltcGwmIG9wZXJhdG9yPShUIHB0
cikKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3BvaXNvbmVkQml0cyA9PSBiLm1fcG9pc29uZWRC
aXRzOworICAgICAgICBtX3BvaXNvbmVkQml0cyA9IHBvaXNvbihwdHIpOworICAgICAgICByZXR1
cm4gKnRoaXM7CiAgICAgfQorICAgIFBvaXNvbmVkSW1wbCYgb3BlcmF0b3I9KGNvbnN0IFBvaXNv
bmVkSW1wbCYpID0gZGVmYXVsdDsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFB0clR5cGUgPSB2
b2lkKiwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8
UHRyVHlwZT46OnZhbHVlPjo6dHlwZT4KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUHRyVHlw
ZSBiKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEsyLCBLMiBrMiwgdHlwZW5hbWUgVDI+CisgICAg
UG9pc29uZWRJbXBsJiBvcGVyYXRvcj0oY29uc3QgUG9pc29uZWRJbXBsPEsyLCBrMiwgVDI+JiBv
dGhlcikKICAgICB7Ci0gICAgICAgIHJldHVybiB1bnBvaXNvbmVkPFB0clR5cGU+KCkgPT0gYjsK
KyAgICAgICAgbV9wb2lzb25lZEJpdHMgPSBwb2lzb248VD4ob3RoZXIudW5wb2lzb25lZCgpKTsK
KyAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAotICAgIFBvaXNvbmVkSW1wbCYgb3BlcmF0
b3I9KFQgcHRyKQorICAgIHZvaWQgc3dhcChQb2lzb25lZEltcGwmIG8pCiAgICAgewotICAgICAg
ICBtX3BvaXNvbmVkQml0cyA9IHBvaXNvbihwdHIpOwotICAgICAgICByZXR1cm4gKnRoaXM7Cisg
ICAgICAgIHN0ZDo6c3dhcChtX3BvaXNvbmVkQml0cywgby5tX3BvaXNvbmVkQml0cyk7CisgICAg
fQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSzIsIEsyIGsyLCB0eXBlbmFtZSBUMj4KKyAgICB2
b2lkIHN3YXAoUG9pc29uZWRJbXBsPEsyLCBrMiwgVDI+JiBvKQorICAgIHsKKyAgICAgICAgVCB0
MSA9IHRoaXMtPnVucG9pc29uZWQoKTsKKyAgICAgICAgVDIgdDIgPSBvLnVucG9pc29uZWQoKTsK
KyAgICAgICAgc3RkOjpzd2FwKHQxLCB0Mik7CisgICAgICAgIG1fcG9pc29uZWRCaXRzID0gcG9p
c29uKHQxKTsKKyAgICAgICAgbyA9IHQyOworICAgIH0KKworICAgIHRlbXBsYXRlPGNsYXNzIFU+
CisgICAgVCBleGNoYW5nZShVJiYgbmV3VmFsdWUpCisgICAgeworICAgICAgICBUIG9sZFZhbHVl
ID0gdW5wb2lzb25lZCgpOworICAgICAgICBtX3BvaXNvbmVkQml0cyA9IHBvaXNvbihzdGQ6OmZv
cndhcmQ8VT4obmV3VmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIG9sZFZhbHVlOwogICAgIH0KLSAg
ICBQb2lzb25lZEltcGwmIG9wZXJhdG9yPShjb25zdCBQb2lzb25lZEltcGwmKSA9IGRlZmF1bHQ7
CiAKIHByaXZhdGU6Ci0jaWYgVVNFKEpTVkFMVUU2NCkKKyNpZiBFTkFCTEUoUE9JU09OKQogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFU+CiAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUG9pc29uZWRC
aXRzIHBvaXNvbihVIHB0cikgeyByZXR1cm4gcHRyID8gYml0d2lzZV9jYXN0PFBvaXNvbmVkQml0
cz4ocHRyKSBeIGtleSA6IDA7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFUgPSBUPgogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFUgdW5wb2lzb24o
UG9pc29uZWRCaXRzIHBvaXNvbmVkQml0cykgeyByZXR1cm4gcG9pc29uZWRCaXRzID8gYml0d2lz
ZV9jYXN0PFU+KHBvaXNvbmVkQml0cyBeIGtleSkgOiBiaXR3aXNlX2Nhc3Q8VT4oMGxsKTsgfQog
I2Vsc2UKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgogICAgIEFMV0FZU19JTkxJTkUgc3RhdGlj
IFBvaXNvbmVkQml0cyBwb2lzb24oVSBwdHIpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxQb2lzb25l
ZEJpdHM+KHB0cik7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFUgPSBUPgogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFUgdW5wb2lzb24oUG9pc29u
ZWRCaXRzIHBvaXNvbmVkQml0cykgeyByZXR1cm4gYml0d2lzZV9jYXN0PFU+KHBvaXNvbmVkQml0
cyk7IH0KICNlbmRpZgogCiAgICAgUG9pc29uZWRCaXRzIG1fcG9pc29uZWRCaXRzIHsgMCB9Owog
fTsKIAotdGVtcGxhdGU8dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQ+Ci11c2luZyBQb2lzb25l
ZCA9IFBvaXNvbmVkSW1wbDx1aW50cHRyX3QmLCBrZXksIFQ+OwordGVtcGxhdGU8dHlwZW5hbWUg
SzEsIEsxIGsxLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgSzIsIEsyIGsyLCB0eXBlbmFtZSBUMj4K
K2lubGluZSB2b2lkIHN3YXAoUG9pc29uZWRJbXBsPEsxLCBrMSwgVDE+JiBhLCBQb2lzb25lZElt
cGw8SzIsIGsyLCBUMj4mIGIpCit7CisgICAgYS5zd2FwKGIpOworfQogCi0jaWYgVVNFKEpTVkFM
VUU2NCkKLXRlbXBsYXRlPHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVD4KLXVzaW5nIEludDMyUG9p
c29uZWQgPSBQb2lzb25lZEltcGw8dWludHB0cl90LCBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGtl
eSkgPDwgMzIsIFQ+OworV1RGX0VYUE9SVF9QUklWQVRFIHVpbnRwdHJfdCBtYWtlUG9pc29uKCk7
CisKK2lubGluZSBjb25zdGV4cHIgdWludHB0cl90IG1ha2VQb2lzb24odWludDMyX3Qga2V5KQor
eworI2lmIEVOQUJMRShQT0lTT04pCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnRwdHJfdD4o
MHg4MDAwMDAwMCB8IGtleSkgPDwgMzI7CiAjZWxzZQotdGVtcGxhdGU8dWludDMyX3QsIHR5cGVu
YW1lIFQ+Ci11c2luZyBJbnQzMlBvaXNvbmVkID0gUG9pc29uZWRJbXBsPHVpbnRwdHJfdCwgMCwg
VD47CisgICAgcmV0dXJuICh2b2lkKWtleSwgMDsKICNlbmRpZgorfQogCi1XVEZfRVhQT1JUX1BS
SVZBVEUgdWludHB0cl90IG1ha2VQb2lzb24oKTsKK3RlbXBsYXRlPHVpbnRwdHJfdCYga2V5LCB0
eXBlbmFtZSBUPgordXNpbmcgUG9pc29uZWQgPSBQb2lzb25lZEltcGw8dWludHB0cl90Jiwga2V5
LCBUPjsKKwordGVtcGxhdGU8dWludDMyX3Qga2V5LCB0eXBlbmFtZSBUPgordXNpbmcgQ29uc3RF
eHByUG9pc29uZWQgPSBQb2lzb25lZEltcGw8dWludHB0cl90LCBtYWtlUG9pc29uKGtleSksIFQ+
OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAotdXNpbmcgV1RGOjpJbnQzMlBvaXNvbmVkOwordXNp
bmcgV1RGOjpDb25zdEV4cHJQb2lzb25lZDsKIHVzaW5nIFdURjo6UG9pc29uZWQ7CiB1c2luZyBX
VEY6OlBvaXNvbmVkQml0czsKIHVzaW5nIFdURjo6bWFrZVBvaXNvbjsKSW5kZXg6IFRvb2xzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNTgzOCkK
KysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE3
LTEyLTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBGaWxsIG91
dCBzb21lIFBvaXNvbmVkIEFQSXMsIGZpeCBzb21lIGJ1Z3MsIGFuZCBhZGQgc29tZSB0ZXN0cy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDcyNAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYwMDY4ODQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
SkYgQmFzdGllbi4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29uc3RFeHByUG9pc29u
ZWQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkLmNwcDogQWRkZWQuCisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjppbml0aWFsaXplVGVzdFBvaXNvbik6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpURVNUKToKKwogMjAxNy0xMi0xMiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5j
b20+CiAKICAgICAgICAgW1dLXSBBZGQgbW9kZXJuIFdlYktpdCBTUEkgdG8gc2V0IGF1dG8gZmls
bCBidXR0b24gdHlwZSBhbmQgcXVlcnkgaWYgdGhlIGF1dG8gZmlsbCBidXR0b24gaXMgZW5hYmxl
ZApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMjU4MzcpCisr
KyBUb29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC05
NSw2ICs5NSw3IEBAIHNldChUZXN0V1RGX1NPVVJDRVMKICAgICAke1RFU1RXRUJLSVRBUElfRElS
fS9UZXN0cy9XVEYvQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcAogICAgICR7VEVTVFdF
QktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9Db25jdXJyZW50UHRySGFzaFNldC5jcHAKICAgICAke1RF
U1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvQ29uZGl0aW9uLmNwcAorICAgICR7VEVTVFdFQktJ
VEFQSV9ESVJ9L1Rlc3RzL1dURi9Db25zdEV4cHJQb2lzb25lZC5jcHAKICAgICAke1RFU1RXRUJL
SVRBUElfRElSfS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcAogICAgICR7VEVTVFdFQktJ
VEFQSV9ESVJ9L1Rlc3RzL1dURi9EYXRlTWF0aC5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElS
fS9UZXN0cy9XVEYvRGVxdWUuY3BwCkBAIC0xMjIsNiArMTIzLDcgQEAgc2V0KFRlc3RXVEZfU09V
UkNFUwogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9PcHRpb25hbC5jcHAKICAg
ICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvT3B0aW9uU2V0LmNwcAogICAgICR7VEVT
VFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9QYXJraW5nTG90LmNwcAorICAgICR7VEVTVFdFQktJ
VEFQSV9ESVJ9L1Rlc3RzL1dURi9Qb2lzb25lZC5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElS
fS9UZXN0cy9XVEYvUHJpb3JpdHlRdWV1ZS5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9U
ZXN0cy9XVEYvUmVkQmxhY2tUcmVlLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3Rz
L1dURi9SZWYuY3BwCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjI1ODM3
KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTc1Niw2ICs3NTYsOCBAQAogCQlGNkI3QkU5NzE3
NDY5Qjk2MDA4QTM0NDUgLyogYXNzb2NpYXRlLWZvcm0tY29udHJvbHMuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNkI3QkU5NjE3NDY5
QjdFMDA4QTM0NDUgLyogYXNzb2NpYXRlLWZvcm0tY29udHJvbHMuaHRtbCAqLzsgfTsKIAkJRjZG
NDlDNkIxNTU0NUNBNzAwMDdGMzlEIC8qIERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGVfQnVuZGxl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2RjQ5
QzY2MTU1NDVDOEQwMDA3RjM5RCAvKiBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlX0J1bmRsZS5j
cHAgKi87IH07CiAJCUY2RkREREQ2MTQyNDFDNkYwMDRGMTcyOSAvKiBwdXNoLXN0YXRlLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjZG
RERERDUxNDI0MUM0ODAwNEYxNzI5IC8qIHB1c2gtc3RhdGUuaHRtbCAqLzsgfTsKKwkJRkUwNUZB
RUYxRkUwNjQ1QjAwMDkzMjMwIC8qIFBvaXNvbmVkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMDVGQUVFMUZFMDY0M0QwMDA5MzIzMCAvKiBQb2lz
b25lZC5jcHAgKi87IH07CisJCUZFMDVGQUYxMUZFMDhDRDQwMDA5MzIzMCAvKiBDb25zdEV4cHJQ
b2lzb25lZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRTA1RkFGMDFGRTA4Q0NEMDAwOTMyMzAgLyogQ29uc3RFeHByUG9pc29uZWQuY3BwICovOyB9
OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5l
ckl0ZW1Qcm94eSBzZWN0aW9uICovCkBAIC0xODU3LDYgKzE4NTksOCBAQAogCQlGNkY0OUM2NzE1
NTQ1QzhEMDAwN0YzOUQgLyogRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjZGRERERDIxNDI0MUFENDAwNEYxNzI5
IC8qIFByaXZhdGVCcm93c2luZ1B1c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByaXZhdGVCcm93c2luZ1B1c2hTdGF0ZU5v
SGlzdG9yeUNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjZGRERE
RDUxNDI0MUM0ODAwNEYxNzI5IC8qIHB1c2gtc3RhdGUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRt
bDsgcGF0aCA9ICJwdXNoLXN0YXRlLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlGRTA1RkFFRTFGRTA2NDNEMDAwOTMyMzAgLyogUG9pc29uZWQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9pc29uZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlGRTA1RkFGMDFGRTA4Q0NEMDAwOTMyMzAgLyogQ29uc3RFeHByUG9pc29uZWQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29uc3RFeHByUG9pc29u
ZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUI2Rjc0RTFCMkJBNDRFMDA5
RTQ5MjIgLyogTmFrZWRQdHIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTmFrZWRQdHIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZp
bGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCkBAIC0yNjEzLDYgKzI2MTcsNyBAQAogCQkJCUE3QTk2
NkRBMTQwRUNDQzgwMDVFRjlCNCAvKiBDaGVja2VkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwICov
LAogCQkJCTBGMzBDQjVCMUZDRTE3OTIwMDRCNTMyMyAvKiBDb25jdXJyZW50UHRySGFzaFNldC5j
cHAgKi8sCiAJCQkJMEZFQUUzNjcxQjdEMTlDQjAwQ0UxN0YyIC8qIENvbmRpdGlvbi5jcHAgKi8s
CisJCQkJRkUwNUZBRjAxRkUwOENDRDAwMDkzMjMwIC8qIENvbnN0RXhwclBvaXNvbmVkLmNwcCAq
LywKIAkJCQk1MTcxNEVCOTFEMDg3NDE2MDA0NzIzQzQgLyogQ3Jvc3NUaHJlYWRUYXNrLmNwcCAq
LywKIAkJCQkyNkEyQzcyRTE1RTJFNzNDMDA1QjFBMTQgLyogQ1N0cmluZy5jcHAgKi8sCiAJCQkJ
N0FBMDIxQkExQUIwOUVBNzAwNTI5NTNGIC8qIERhdGVNYXRoLmNwcCAqLywKQEAgLTI2NDYsNiAr
MjY1MSw3IEBACiAJCQkJMUFGREU2NTQxOTUzQjJDMDAwQzQ4RkZBIC8qIE9wdGlvbmFsLmNwcCAq
LywKIAkJCQlDRTUwRDhDODFDODY2NUNFMDA3MkVBNUEgLyogT3B0aW9uU2V0LmNwcCAqLywKIAkJ
CQkwRkU0NDc5NzFCNzZGMUUzMDA5NDk4RUIgLyogUGFya2luZ0xvdC5jcHAgKi8sCisJCQkJRkUw
NUZBRUUxRkUwNjQzRDAwMDkzMjMwIC8qIFBvaXNvbmVkLmNwcCAqLywKIAkJCQk1M0VDMjUzRjFF
OTZCQzgwMDAwODMxQjkgLyogUHJpb3JpdHlRdWV1ZS5jcHAgKi8sCiAJCQkJMEZDNkM0Q0IxNDEw
MjdFMDAwNUI3RjBDIC8qIFJlZEJsYWNrVHJlZS5jcHAgKi8sCiAJCQkJOTNBNDI3QUExODBEQTI2
NDAwQ0QyNEQ3IC8qIFJlZi5jcHAgKi8sCkBAIC0zMTkwLDYgKzMxOTYsNyBAQAogCQkJCTdDODNE
RjFEMUQwQTU5MEMwMEZFQkNGMyAvKiBMb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1N0Q1
NEY2MUYzMzk1RDAwMEE5N0FBNyAvKiBMb2dnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4
M0RFRUQxRDBBNTkwQzAwRkVCQ0YzIC8qIE1hdGhFeHRyYXMuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJRkUwNUZBRjExRkUwOENENDAwMDkzMjMwIC8qIENvbnN0RXhwclBvaXNvbmVkLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdDODNERUVGMUQwQTU5MEMwMEZFQkNGMyAvKiBNRDUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0M4M0RFRjExRDBBNTkwQzAwRkVCQ0YzIC8qIE1lZGlhVGltZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVGNjFEMEE1OTBDMDBGRUJDRjMgLyogTWV0YUFsbG9j
YXRvci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMyMTAsNiArMzIxNyw3IEBACiAJCQkJN0M4M0RG
MDUxRDBBNTkwQzAwRkVCQ0YzIC8qIFJ1bkxvb3AuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4
M0RGMjYxRDBBNTkwQzAwRkVCQ0YzIC8qIFNhdHVyYXRlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTFBMzUyNEFFMUQ2M0E0RkIwMDMxNzI5QiAvKiBTY29wZS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTA1RkFFRjFGRTA2NDVCMDAwOTMyMzAgLyogUG9pc29u
ZWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGMTIxRDBBNTkwQzAwRkVCQ0YzIC8qIFNj
b3BlZExhbWJkYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREYzRDFEMEE1OTBDMDBGRUJD
RjMgLyogU2V0Rm9yU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGMkExRDBBNTkw
QzAwRkVCQ0YzIC8qIFNIQTEuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9Db25zdEV4cHJQb2lzb25lZC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29uc3RFeHByUG9pc29uZWQuY3BwCShub25leGlz
dGVudCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NvbnN0RXhwclBvaXNvbmVk
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM1MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1
ZGUgIlJlZkxvZ2dlci5oIgorI2luY2x1ZGUgPG11dGV4PgorI2luY2x1ZGUgPHd0Zi9Qb2lzb25l
ZC5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyBjb25zdCB1aW50MzJf
dCBQb2lzb25BID0gMHhhYWFhOworc3RhdGljIGNvbnN0IHVpbnQzMl90IFBvaXNvbkIgPSAweGJi
YmI7CisKKy8vIEZvciB0aGVzZSB0ZXN0cywgd2UgbmVlZCBhIGJhc2UgY2xhc3MgYW5kIGEgZGVy
aXZlZCBjbGFzcy4gRm9yIHRoaXMgcHVycG9zZSwKKy8vIHdlIHJldXNlIHRoZSBSZWZMb2dnZXIg
YW5kIERlcml2ZWRSZWZMb2dnZXIgY2xhc3Nlcy4KKworVEVTVChXVEZfQ29uc3RFeHByUG9pc29u
ZWQsIEJhc2ljKQoreworICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOworCisgICAgQ29uc3RF
eHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gZW1wdHk7CisgICAgQVNTRVJUX0VRKG51
bGxwdHIsIGVtcHR5LnVucG9pc29uZWQoKSk7CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBv
aXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgm
YSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgJipwdHIpOworICAg
ICAgICBBU1NFUlRfRVEoJmEubmFtZSwgJnB0ci0+bmFtZSk7CisgICAgfQorCisgICAgeworICAg
ICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIgPSAmYTsKKyAg
ICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICB9CisKKyAgICB7Cisg
ICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxID0gJmE7Cisg
ICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKHAxKTsKKyAg
ICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDMocDEpOworICAg
ICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgm
YSwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVk
KCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAg
ICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDMuYml0cygpKTsKKyAgICB9CisKKyAgICB7
CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxID0gJmE7
CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyID0gcDE7
CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+IHAzID0gcDE7
CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9p
c29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7
CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBwMy5iaXRzKCkpOworICAgIH0KKwor
ICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEg
PSAmYTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIg
PSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwor
ICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQ29uc3RF
eHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMgPSAmYTsKKyAgICAgICAgQ29uc3RF
eHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQgPSBXVEZNb3ZlKHAzKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEs
IHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAy
LmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwor
ICAgIH0KKworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9n
Z2VyKj4gcDEgPSAmYTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9n
Z2VyKj4gcDIoV1RGTW92ZShwMSkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29u
ZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKKworICAgICAg
ICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMyA9ICZhOworICAgICAg
ICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwNChXVEZNb3ZlKHAzKSk7
CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZhLCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMo
KSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0
cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEs
IERlcml2ZWRSZWZMb2dnZXIqPiBwMSA9ICZhOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQ
b2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9IHAxOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQ
b2lzb25CLCBSZWZMb2dnZXIqPiBwMyA9IHAxOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVu
cG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKKyAg
ICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9U
UlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRz
KCkgIT0gcDMuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNv
bmVkPFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMSA9ICZhOworICAgICAgICBDb25zdEV4
cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9IFdURk1vdmUocDEpOworICAgICAg
ICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwg
cDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBE
ZXJpdmVkUmVmTG9nZ2VyKj4gcDMgPSAmYTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9p
c29uQiwgUmVmTG9nZ2VyKj4gcDQgPSBXVEZNb3ZlKHAzKTsKKyAgICAgICAgQVNTRVJUX0VRKCZh
LCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQo
KSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CisgICAg
ICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgIH0KKworICAgIHsK
KyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcHRyLmNs
ZWFyKCk7CisgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwdHIudW5wb2lzb25lZCgpKTsKKyAg
ICB9Cit9CisKK1RFU1QoV1RGX0NvbnN0RXhwclBvaXNvbmVkLCBBc3NpZ25tZW50KQoreworICAg
IERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOworICAgIFJlZkxvZ2dlciBiKCJiIik7CisgICAgRGVy
aXZlZFJlZkxvZ2dlciBjKCJjIik7CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVk
PFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8
UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoJmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVu
cG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKKyAg
ICAgICAgcDEgPSBwMjsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOwor
ICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQ29uc3RF
eHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOworICAgICAgICBDb25zdEV4
cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7CisgICAgICAgIEFTU0VSVF9F
USgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNv
bmVkKCkpOworICAgICAgICBwMyA9IHA0OworICAgICAgICBBU1NFUlRfRVEoJmIsIHAzLnVucG9p
c29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKKworICAg
ICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJU
X1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBD
b25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOworICAgICAgICBB
U1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICBwdHIgPSAmYjsKKyAgICAg
ICAgQVNTRVJUX0VRKCZiLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICB9CisKKyAgICB7CisgICAg
ICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAg
ICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHB0ciA9IG51bGxw
dHI7CisgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICB9
CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+
IHAxKCZhKTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4g
cDIoJmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAg
IEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDEgPSBXVEZNb3ZlKHAy
KTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NF
UlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8
UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQ
b2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOworICAg
ICAgICBwMyA9IFdURk1vdmUocDQpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAzLnVucG9pc29u
ZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKKworICAgICAg
ICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RS
VUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBDb25z
dEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7CisgICAgICAgIENvbnN0
RXhwclBvaXNvbmVkPFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMigmYyk7CisgICAgICAg
IEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBw
Mi51bnBvaXNvbmVkKCkpOworICAgICAgICBwMSA9IHAyOworICAgICAgICBBU1NFUlRfRVEoJmMs
IHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDIudW5wb2lzb25lZCgp
KTsKKworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygm
YSk7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIERlcml2ZWRSZWZMb2dnZXIq
PiBwNCgmYyk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZjLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAgICBwMyA9IHA0OworICAg
ICAgICBBU1NFUlRfRVEoJmMsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgm
YywgcDQudW5wb2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0g
cDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7
CisgICAgfQorCisgICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZM
b2dnZXIqPiBwdHIoJmEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkp
OworICAgICAgICBwdHIgPSAmYzsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwdHIudW5wb2lzb25l
ZCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEs
IFJlZkxvZ2dlcio+IHAxKCZhKTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwg
RGVyaXZlZFJlZkxvZ2dlcio+IHAyKCZjKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBv
aXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHAyLnVucG9pc29uZWQoKSk7CisgICAg
ICAgIHAxID0gV1RGTW92ZShwMik7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDEudW5wb2lzb25l
ZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMi51bnBvaXNvbmVkKCkpOworCisgICAgICAg
IENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKKyAgICAgICAg
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgRGVyaXZlZFJlZkxvZ2dlcio+IHA0KCZjKTsKKyAg
ICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEo
JmMsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIHAzID0gV1RGTW92ZShwNCk7CisgICAgICAg
IEFTU0VSVF9FUSgmYywgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBw
NC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5i
aXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAg
ICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dl
cio+IHB0cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7Cisg
ICAgICAgIHB0ciA9IHB0cjsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgp
KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJl
ZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQo
KSk7CisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAor
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW5rbm93bi1wcmFnbWFzIgorI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1Xc2VsZi1tb3ZlIgorI2VuZGlmCisgICAg
ICAgIHB0ciA9IFdURk1vdmUocHRyKTsKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBwb3AKKyNlbmRpZgorICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBv
aXNvbmVkKCkpOworICAgIH0KK30KKworVEVTVChXVEZfQ29uc3RFeHByUG9pc29uZWQsIFN3YXAp
Cit7CisgICAgUmVmTG9nZ2VyIGEoImEiKTsKKyAgICBSZWZMb2dnZXIgYigiYiIpOworCisgICAg
eworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7
CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKCZiKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRf
RVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHAxLnN3YXAocDIpOworICAgICAgICBB
U1NFUlRfRVEoJmIsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIu
dW5wb2lzb25lZCgpKTsKKworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZM
b2dnZXIqPiBwMygmYSk7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxv
Z2dlcio+IHA0KCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwor
ICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIHAzLnN3YXAo
cDQpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFT
U0VSVF9FUSgmYSwgcDQudW5wb2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5i
aXRzKCkgIT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0
LmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMy5iaXRzKCkpOwor
ICAgICAgICBBU1NFUlRfVFJVRShwMi5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9CisKKyAg
ICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZh
KTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoJmIp
OworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VS
VF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgc3dhcChwMSwgcDIpOworICAgICAg
ICBBU1NFUlRfRVEoJmIsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwg
cDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBS
ZWZMb2dnZXIqPiBwMygmYSk7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJl
ZkxvZ2dlcio+IHA0KCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkp
OworICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIHN3YXAo
cDMsIHA0KTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAg
ICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUo
cDEuYml0cygpICE9IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAh
PSBwNC5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDMuYml0cygp
KTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDIuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQor
fQorCitzdGF0aWMgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcG9pc29u
ZWRQdHJGb28oUmVmTG9nZ2VyJiBsb2dnZXIpCit7CisgICAgcmV0dXJuIENvbnN0RXhwclBvaXNv
bmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+KCZsb2dnZXIpOworfQorCitURVNUKFdURl9Db25zdEV4
cHJQb2lzb25lZCwgUmV0dXJuVmFsdWUpCit7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7
CisKKyAgICB7CisgICAgICAgIGF1dG8gcHRyID0gcG9pc29uZWRQdHJGb28oYSk7CisgICAgICAg
IEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwg
JipwdHIpOworICAgICAgICBBU1NFUlRfRVEoJmEubmFtZSwgJnB0ci0+bmFtZSk7CisgICAgfQor
fQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCisKSW5kZXg6IFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZC5jcHAJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMzg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiUmVmTG9nZ2VyLmgiCisjaW5jbHVkZSA8
bXV0ZXg+CisjaW5jbHVkZSA8d3RmL1BvaXNvbmVkLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKKwordWludHB0cl90IGdfdGVzdFBvaXNvbkE7Cit1aW50cHRyX3QgZ190ZXN0UG9pc29u
QjsKKworc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVRlc3RQb2lzb24oKQoreworICAgIHN0YXRpYyBz
dGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2UoaW5p
dGlhbGl6ZU9uY2VGbGFnLCBbXSB7CisgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBnZXQgMiBkaWZm
ZXJlbnQgcG9pc29uIHZhbHVlcy4KKyAgICAgICAgZ190ZXN0UG9pc29uQSA9IG1ha2VQb2lzb24o
KTsKKyAgICAgICAgd2hpbGUgKCFnX3Rlc3RQb2lzb25CIHx8IGdfdGVzdFBvaXNvbkIgPT0gZ190
ZXN0UG9pc29uQSkKKyAgICAgICAgICAgIGdfdGVzdFBvaXNvbkIgPSBtYWtlUG9pc29uKCk7Cisg
ICAgfSk7Cit9CisKKy8vIEZvciB0aGVzZSB0ZXN0cywgd2UgbmVlZCBhIGJhc2UgY2xhc3MgYW5k
IGEgZGVyaXZlZCBjbGFzcy4gRm9yIHRoaXMgcHVycG9zZSwKKy8vIHdlIHJldXNlIHRoZSBSZWZM
b2dnZXIgYW5kIERlcml2ZWRSZWZMb2dnZXIgY2xhc3Nlcy4KKworVEVTVChXVEZfUG9pc29uZWQs
IEJhc2ljKQoreworICAgIGluaXRpYWxpemVUZXN0UG9pc29uKCk7CisgICAgRGVyaXZlZFJlZkxv
Z2dlciBhKCJhIik7CisKKyAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBl
bXB0eTsKKyAgICBBU1NFUlRfRVEobnVsbHB0ciwgZW1wdHkudW5wb2lzb25lZCgpKTsKKworICAg
IHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZhLCAmKnB0cik7CisgICAgICAgIEFTU0VSVF9FUSgmYS5uYW1lLCAmcHRyLT5uYW1lKTsK
KyAgICB9CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dl
cio+IHB0ciA9ICZhOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOwor
ICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2Vy
Kj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4g
cDIocDEpOworCisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfVFJVRShw
MS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKworI2lmIEVOQUJMRShNSVhFRF9QT0lTT04pCisgICAg
ICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHAzKHAxKTsKKyAgICAgICAg
QVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMS5i
aXRzKCkgIT0gcDMuYml0cygpKTsKKyNlbmRpZgorICAgIH0KKworICAgIHsKKyAgICAgICAgUG9p
c29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29u
ZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIgPSBwMTsKKyAgICAgICAgQVNTRVJUX0VR
KCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29u
ZWQoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworCisj
aWYgRU5BQkxFKE1JWEVEX1BPSVNPTikKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwg
UmVmTG9nZ2VyKj4gcDMgPSBwMTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVk
KCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDMuYml0cygpKTsKKyNlbmRp
ZgorICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9n
Z2VyKj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2Vy
Kj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVk
KCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFT
U0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworCisjaWYgRU5BQkxFKE1JWEVEX1BP
SVNPTikKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMgPSAm
YTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQgPSBXVEZN
b3ZlKHAzKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAg
ICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAz
LmJpdHMoKSAhPSBwNC5iaXRzKCkpOworI2VuZGlmCisgICAgfQorCisgICAgeworICAgICAgICBQ
b2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSA9ICZhOworICAgICAgICBQb2lz
b25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMihXVEZNb3ZlKHAxKSk7CisgICAgICAg
IEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBw
Mi51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0
cygpKTsKKworI2lmIEVOQUJMRShNSVhFRF9QT0lTT04pCisgICAgICAgIFBvaXNvbmVkPGdfdGVz
dFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzID0gJmE7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBv
aXNvbkIsIFJlZkxvZ2dlcio+IHA0KFdURk1vdmUocDMpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZh
LCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQo
KSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworI2VuZGlm
CisgICAgfQorCisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBEZXJpdmVk
UmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVm
TG9nZ2VyKj4gcDIgPSBwMTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkp
OworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VS
VF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworCisjaWYgRU5BQkxFKE1JWEVEX1BPSVNP
TikKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDMgPSBwMTsK
KyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRf
VFJVRShwMS5iaXRzKCkgIT0gcDMuYml0cygpKTsKKyNlbmRpZgorICAgIH0KKworICAgIHsKKyAg
ICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgRGVyaXZlZFJlZkxvZ2dlcio+IHAxID0gJmE7
CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyID0gV1RGTW92
ZShwMSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAg
QVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMS5i
aXRzKCkgPT0gcDIuYml0cygpKTsKKworI2lmIEVOQUJMRShNSVhFRF9QT0lTT04pCisgICAgICAg
IFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMyA9ICZhOworICAg
ICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCA9IFdURk1vdmUocDMp
OworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VS
VF9FUSgmYSwgcDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygp
ICE9IHA0LmJpdHMoKSk7CisjZW5kaWYKKyAgICB9CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVk
PGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgm
YSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHB0ci5jbGVhcigpOworICAgICAgICBBU1NF
UlRfRVEobnVsbHB0ciwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgfQorfQorCitURVNUKFdURl9Q
b2lzb25lZCwgQXNzaWdubWVudCkKK3sKKyAgICBpbml0aWFsaXplVGVzdFBvaXNvbigpOworICAg
IERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOworICAgIFJlZkxvZ2dlciBiKCJiIik7CisgICAgRGVy
aXZlZFJlZkxvZ2dlciBjKCJjIik7CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBv
aXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29u
QSwgUmVmTG9nZ2VyKj4gcDIoJmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29u
ZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAg
cDEgPSBwMjsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAg
ICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAx
LmJpdHMoKSA9PSBwMi5iaXRzKCkpOworCisjaWYgRU5BQkxFKE1JWEVEX1BPSVNPTikKKyAgICAg
ICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOworICAgICAgICBQ
b2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7CisgICAgICAgIEFTU0VS
VF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBv
aXNvbmVkKCkpOworICAgICAgICBwMyA9IHA0OworICAgICAgICBBU1NFUlRfRVEoJmIsIHAzLnVu
cG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKKyAg
ICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisjZW5kaWYKKyAgICB9
CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0
cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAg
IHB0ciA9ICZiOworICAgICAgICBBU1NFUlRfRVEoJmIsIHB0ci51bnBvaXNvbmVkKCkpOworICAg
IH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4g
cHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAg
ICAgcHRyID0gbnVsbHB0cjsKKyAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHB0ci51bnBvaXNv
bmVkKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwg
UmVmTG9nZ2VyKj4gcDEoJmEpOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZM
b2dnZXIqPiBwMigmYik7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBwMSA9IFdU
Rk1vdmUocDIpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAxLnVucG9pc29uZWQoKSk7CisgICAg
ICAgIEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUo
cDEuYml0cygpID09IHAyLmJpdHMoKSk7CisKKyNpZiBFTkFCTEUoTUlYRURfUE9JU09OKQorICAg
ICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygmYSk7CisgICAgICAg
IFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KCZiKTsKKyAgICAgICAgQVNT
RVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVu
cG9pc29uZWQoKSk7CisgICAgICAgIHAzID0gV1RGTW92ZShwNCk7CisgICAgICAgIEFTU0VSVF9F
USgmYiwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNv
bmVkKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyNl
bmRpZgorICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVm
TG9nZ2VyKj4gcDEoJmEpOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBEZXJpdmVk
UmVmTG9nZ2VyKj4gcDIoJmMpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQo
KSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDEg
PSBwMjsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBB
U1NFUlRfRVEoJmMsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJp
dHMoKSA9PSBwMi5iaXRzKCkpOworCisjaWYgRU5BQkxFKE1JWEVEX1BPSVNPTikKKyAgICAgICAg
UG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOworICAgICAgICBQb2lz
b25lZDxnX3Rlc3RQb2lzb25CLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDQoJmMpOworICAgICAgICBB
U1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDQu
dW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDMgPSBwNDsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBw
My51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHA0LnVucG9pc29uZWQoKSk7
CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworI2VuZGlmCisg
ICAgfQorCisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIq
PiBwdHIoJmEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAg
ICAgICBwdHIgPSAmYzsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwdHIudW5wb2lzb25lZCgpKTsK
KyAgICB9CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dl
cio+IHAxKCZhKTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgRGVyaXZlZFJlZkxv
Z2dlcio+IHAyKCZjKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwor
ICAgICAgICBBU1NFUlRfRVEoJmMsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHAxID0gV1RG
TW92ZShwMik7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDEudW5wb2lzb25lZCgpKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZjLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfVFJVRShw
MS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKworI2lmIEVOQUJMRShNSVhFRF9QT0lTT04pCisgICAg
ICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKKyAgICAgICAg
UG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgRGVyaXZlZFJlZkxvZ2dlcio+IHA0KCZjKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMs
IHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIHAzID0gV1RGTW92ZShwNCk7CisgICAgICAgIEFT
U0VSVF9FUSgmYywgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwNC51
bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygp
KTsKKyNlbmRpZgorICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29u
QSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lz
b25lZCgpKTsKKyAgICAgICAgcHRyID0gcHRyOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51
bnBvaXNvbmVkKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9p
c29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5w
b2lzb25lZCgpKTsKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3Rp
YyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bmtub3duLXByYWdt
YXMiCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdzZWxmLW1vdmUiCisjZW5k
aWYKKyAgICAgICAgcHRyID0gV1RGTW92ZShwdHIpOworI2lmIENPTVBJTEVSKENMQU5HKQorI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorI2VuZGlmCisgICAgICAgIEFTU0VSVF9FUSgmYSwg
cHRyLnVucG9pc29uZWQoKSk7CisgICAgfQorfQorCitURVNUKFdURl9Qb2lzb25lZCwgU3dhcCkK
K3sKKyAgICBpbml0aWFsaXplVGVzdFBvaXNvbigpOworICAgIFJlZkxvZ2dlciBhKCJhIik7Cisg
ICAgUmVmTG9nZ2VyIGIoImIiKTsKKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9p
c29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25B
LCBSZWZMb2dnZXIqPiBwMigmYik7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25l
ZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBw
MS5zd2FwKHAyKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOworICAg
ICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RS
VUUocDEuYml0cygpICE9IHAyLmJpdHMoKSk7CisKKyNpZiBFTkFCTEUoTUlYRURfUE9JU09OKQor
ICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygmYSk7CisgICAg
ICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KCZiKTsKKyAgICAgICAg
QVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHA0
LnVucG9pc29uZWQoKSk7CisgICAgICAgIHAzLnN3YXAocDQpOworICAgICAgICBBU1NFUlRfRVEo
JmIsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDQudW5wb2lzb25l
ZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAg
ICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAzLmJpdHMoKSk7CisgICAgICAgIEFTU0VS
VF9UUlVFKHAyLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworI2VuZGlmCisgICAgfQorCisgICAgewor
ICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7CisgICAg
ICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKCZiKTsKKyAgICAgICAg
QVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAy
LnVucG9pc29uZWQoKSk7CisgICAgICAgIHN3YXAocDEsIHAyKTsKKyAgICAgICAgQVNTRVJUX0VR
KCZiLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29u
ZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAyLmJpdHMoKSk7CisK
KyNpZiBFTkFCTEUoTUlYRURfUE9JU09OKQorICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25B
LCBSZWZMb2dnZXIqPiBwMygmYSk7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJl
ZkxvZ2dlcio+IHA0KCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkp
OworICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIHN3YXAo
cDMsIHA0KTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAg
ICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUo
cDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9
PSBwMy5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMi5iaXRzKCkgIT0gcDQuYml0cygp
KTsKKyNlbmRpZgorICAgIH0KK30KKworc3RhdGljIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJl
ZkxvZ2dlcio+IHBvaXNvbmVkUHRyRm9vKFJlZkxvZ2dlciYgbG9nZ2VyKQoreworICAgIHJldHVy
biBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPigmbG9nZ2VyKTsKK30KKworVEVT
VChXVEZfUG9pc29uZWQsIFJldHVyblZhbHVlKQoreworICAgIGluaXRpYWxpemVUZXN0UG9pc29u
KCk7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CisKKyAgICB7CisgICAgICAgIGF1dG8g
cHRyID0gcG9pc29uZWRQdHJGb28oYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9p
c29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgJipwdHIpOworICAgICAgICBBU1NFUlRf
RVEoJmEubmFtZSwgJnB0ci0+bmFtZSk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329206</attachid>
            <date>2017-12-12 22:54:53 -0800</date>
            <delta_ts>2017-12-12 23:19:16 -0800</delta_ts>
            <desc>patch for landing.</desc>
            <filename>bug-180724.patch</filename>
            <type>text/plain</type>
            <size>42477</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI1ODM3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDE3LTEyLTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBG
aWxsIG91dCBzb21lIFBvaXNvbmVkIEFQSXMsIGZpeCBzb21lIGJ1Z3MsIGFuZCBhZGQgc29tZSB0
ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
MDcyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYwMDY4ODQ+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgSkYgQmFzdGllbi4KKworICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlv
blRhYmxlLmg6CisKIDIwMTctMTItMTIgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4K
IAogICAgICAgICBTdHJ1Y3R1cmUsIFN0cnVjdHVyZVJhcmVEYXRhLCBhbmQgUHJvcGVydHlUYWJs
ZSBzaG91bGQgYmUgaW4gSXNvU3Vic3BhY2VzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaAkocmV2aXNp
b24gMjI1ODM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJh
bnNpdGlvblRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTg3LDggKzE4Nyw4IEBA
IHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgU2luZ2xlU2xvdFRyYW5zaXRp
b25XZWFrT3duZXI7Ci0gICAgdXNpbmcgUG9pc29uZWRUcmFuc2l0aW9uTWFwUHRyID0gSW50MzJQ
b2lzb25lZDxUcmFuc2l0aW9uTWFwUG9pc29uLCBUcmFuc2l0aW9uTWFwKj47Ci0gICAgdXNpbmcg
UG9pc29uZWRXZWFrSW1wbFB0ciA9IEludDMyUG9pc29uZWQ8V2Vha0ltcGxQb2lzb24sIFdlYWtJ
bXBsKj47CisgICAgdXNpbmcgUG9pc29uZWRUcmFuc2l0aW9uTWFwUHRyID0gQ29uc3RFeHByUG9p
c29uZWQ8VHJhbnNpdGlvbk1hcFBvaXNvbiwgVHJhbnNpdGlvbk1hcCo+OworICAgIHVzaW5nIFBv
aXNvbmVkV2Vha0ltcGxQdHIgPSBDb25zdEV4cHJQb2lzb25lZDxXZWFrSW1wbFBvaXNvbiwgV2Vh
a0ltcGwqPjsKIAogICAgIGJvb2wgaXNVc2luZ1NpbmdsZVNsb3QoKSBjb25zdAogICAgIHsKSW5k
ZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyMjU4MzcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDE3LTEyLTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFw
cGxlLmNvbT4KKworICAgICAgICBGaWxsIG91dCBzb21lIFBvaXNvbmVkIEFQSXMsIGZpeCBzb21l
IGJ1Z3MsIGFuZCBhZGQgc29tZSB0ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4MDcyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYwMDY4
ODQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSkYgQmFzdGllbi4KKworICAgICAgICBBbHNvIHJl
bmFtZSBJbnQzMlBvaXNvbmVkIHRvIENvbnN0RXhwclBvaXNvbmVkLiAgVGhlIGtleSBpdCB0YWtl
cyBpcyBhY3R1YWxseSBhCisgICAgICAgIHVpbnQzMl90LiAgU28sIEludDMyIGlzIHJlYWxseSBh
IG1pc25vbWVyLiAgSW4gYWRkaXRpb24sIHRoZSBrZXkgbmVlZHMgdG8gYmUgYQorICAgICAgICBj
b25zdGV4cHIuICBTbywgQ29uc3RFeHByUG9pc29uZWQgaXMgYSBiZXR0ZXIgbmFtZSBmb3IgaXQu
CisKKyAgICAgICAgKiB3dGYvUG9pc29uZWQuY3BwOgorICAgICAgICAoV1RGOjptYWtlUG9pc29u
KToKKyAgICAgICAgKiB3dGYvUG9pc29uZWQuaDoKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBs
SGVscGVyOjphc1JlZmVyZW5jZSk6CisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6UG9pc29u
ZWRJbXBsKToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpjbGVhcik6CisgICAgICAgIChX
VEY6OlBvaXNvbmVkSW1wbDo6b3BlcmF0b3IqIGNvbnN0KToKKyAgICAgICAgKFdURjo6UG9pc29u
ZWRJbXBsOjpvcGVyYXRvci0+IGNvbnN0KToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpv
cGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvciE9
IGNvbnN0KToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvcjwgY29uc3QpOgor
ICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6Om9wZXJhdG9yPD0gY29uc3QpOgorICAgICAgICAo
V1RGOjpQb2lzb25lZEltcGw6Om9wZXJhdG9yPiBjb25zdCk6CisgICAgICAgIChXVEY6OlBvaXNv
bmVkSW1wbDo6b3BlcmF0b3I+PSBjb25zdCk6CisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6
b3BlcmF0b3I9KToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpzd2FwKToKKyAgICAgICAg
KFdURjo6UG9pc29uZWRJbXBsOjpleGNoYW5nZSk6CisgICAgICAgIChXVEY6OnN3YXApOgorICAg
ICAgICAoV1RGOjptYWtlUG9pc29uKToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVy
YXRvcj09KTogRGVsZXRlZC4KKwogMjAxNy0xMi0xMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbSlNDXSBJbXBsZW1lbnQgb3B0aW1pemVkIFdlYWtN
YXAgYW5kIFdlYWtTZXQKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVkLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Qb2lzb25lZC5jcHAJKHJldmlzaW9uIDIyNTgzNykKKysr
IFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMs
NyBAQCBuYW1lc3BhY2UgV1RGIHsKIHVpbnRwdHJfdCBtYWtlUG9pc29uKCkKIHsKICAgICB1aW50
cHRyX3Qga2V5ID0gY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKTsKLSNpZiBVU0UoSlNW
QUxVRTY0KSAmJiAhT1MoV0lORE9XUykKKyNpZiBFTkFCTEUoUE9JU09OKQogICAgIGtleSA9IChr
ZXkgPDwgMzIpIF4gKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oY3J5cHRvZ3JhcGhpY2FsbHlSYW5k
b21OdW1iZXIoKSkgPDwgMyk7CiAgICAgLy8gRW5zdXJlIHRoYXQgdGhlIHBvaXNvbmVkIGJpdHMg
KHBvaW50ZXIgXiBrZXkpIGRvIG5vdCBtYWtlIGEgdmFsaWQgcG9pbnRlciBhbmQKICAgICAvLyBj
YW5ub3QgYmUgMC4gV2UgZW5zdXJlIHRoYXQgaXQgaXMgemVybyBzbyB0aGF0IHRoZSBwb2lzb25l
ZCBiaXRzIGNhbiBhbHNvIGJlCkBAIC01MSw0ICs1MSwzIEBAIHVpbnRwdHJfdCBtYWtlUG9pc29u
KCkKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCi0KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BvaXNv
bmVkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUG9pc29uZWQuaAkocmV2aXNpb24g
MjI1ODM3KQorKysgU291cmNlL1dURi93dGYvUG9pc29uZWQuaAkod29ya2luZyBjb3B5KQpAQCAt
MjcsMTEgKzI3LDM3IEBACiAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogCisjZGVmaW5l
IEVOQUJMRV9QT0lTT04gMQogI2RlZmluZSBFTkFCTEVfUE9JU09OX0FTU0VSVFMgMAogCisvLyBP
bGRlciB2ZXJzaW9ucyBvZiBnY2MgYW5kIGNsYW5nIGhhdmUgYSBidWcgd2hpY2ggcmVzdWx0cyBp
biBidWlsZCBmYWlsdXJlcworLy8gd2hlbiB1c2luZyB0ZW1wbGF0ZSBtZXRob2RzIHRoYXQgdGFr
ZSBhbiBhcmd1bWVudCBvZiBQb2lzb25lZEltcGw8SzIsIGsyLCBUMj4KKy8vIHdoZW4gdGhlIEtl
eVR5cGUgaXMgYSB1aW50cHRyX3QgKGkuZS4gd2hlbiB3ZSdyZSB1c2luZyB0aGUgUG9pc29uZWQg
dmFyaWFudAorLy8gb2YgUG9pc29uZWRJbXBsKS4gVGhpcyBidWcgZG9lcyBub3QgbWFuaWZlc3Qg
Zm9yIHRoZSBDb25zdEV4cHJQb2lzb25lZCB2YXJpYW50LgorLy8gSW4gcHJhY3RpY2UsIHdlIHdp
bGwgbGlrZWx5IG9ubHkgdXNlIHRoZXNlIG1ldGhvZHMgZm9yIGluc3RhbnRpYXRpb25zIG9mIHRo
ZQorLy8gQ29uc3RFeHByUG9pc29uZWQgdmFyaWFudC4gSGVuY2UuIHRoaXMgYnVnIGlzIG5vdCBh
IHNob3cgc3RvcHBlci4KKy8vIFRoYXQgc2FpZCwgd2UnbGwgZGVmaW5lIEVOQUJMRV9NSVhFRF9Q
T0lTT04gYWNjb3JkaW5nbHkgc28gdGhhdCB3ZSBjYW4gdXNlCisvLyBpdCB0byBkaXNhYmxlIHRo
ZSBhZmZlY3RlZCB0ZXN0cyB3aGVuIGJ1aWxkaW5nIHdpdGggb2xkIGNvbXBpbGVycy4KKyNpZiBk
ZWZpbmVkKF9fY2xhbmdfbWFqb3JfXykKKyNpZiBfX2NsYW5nX21ham9yX18gPj0gNAorI2RlZmlu
ZSBFTkFCTEVfTUlYRURfUE9JU09OIDEgLy8gRW5hYmxlIGZvciBjbGFuZyA0LjAuMCBhbmQgbmV3
ZXIuCisjZW5kaWYgLy8gX19jbGFuZ19tYWpvcl9fCisjZWxpZiBkZWZpbmVkKF9fR05VQ19fKQor
I2luY2x1ZGUgPGZlYXR1cmVzLmg+CisjaWYgX19HTlVDX1BSRVJFUSg3LDIpCisjZGVmaW5lIEVO
QUJMRV9NSVhFRF9QT0lTT04gMSAvLyBFbmFibGUgZm9yIGdjYyA3LjIgYW5kIG5ld2VyLgorI2Vu
ZGlmIC8vIF9fR05VQ19QUkVSRVEoNywyKQorI2VuZGlmIC8vICFkZWZpbmVkKF9fR05VQ19fKQor
CisjaWZuZGVmIEVOQUJMRV9NSVhFRF9QT0lTT04KKyNkZWZpbmUgRU5BQkxFX01JWEVEX1BPSVNP
TiAwIC8vIERpc2FibGUgZm9yIGV2ZXJ5dGhpbmcgZWxzZS4KKyNlbmRpZgorCiAvLyBOb3QgY3Vy
cmVudGx5IHN1cHBvcnRlZCBmb3IgMzItYml0IG9yIE9TKFdJTkRPV1MpIGJ1aWxkcyAoYmVjYXVz
ZSBvZiBtaXNzaW5nIGxsaW50IHN1cHBvcnQpLgogLy8gTWFrZSBzdXJlIGl0J3MgZGlzYWJsZWQu
CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkgfHwgT1MoV0lORE9XUykKKyN1bmRlZiBFTkFCTEVfUE9J
U09OCisjZGVmaW5lIEVOQUJMRV9QT0lTT04gMAogI3VuZGVmIEVOQUJMRV9QT0lTT05fQVNTRVJU
UwogI2RlZmluZSBFTkFCTEVfUE9JU09OX0FTU0VSVFMgMAogI2VuZGlmCkBAIC00MCwxNyArNjYs
NDcgQEAgbmFtZXNwYWNlIFdURiB7CiAKIHVzaW5nIFBvaXNvbmVkQml0cyA9IHVpbnRwdHJfdDsK
IAorbmFtZXNwYWNlIFBvaXNvbmVkSW1wbEhlbHBlciB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
CitzdHJ1Y3QgaXNGdW5jdGlvblBvaW50ZXIgOiBzdGQ6OmludGVncmFsX2NvbnN0YW50PGJvb2ws
IHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxUPjo6dHlwZT46
OnZhbHVlPiB7IH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgaXNWb2lkUG9pbnRl
ciA6IHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgc3RkOjppc192b2lkPHR5cGVuYW1lIHN0
ZDo6cmVtb3ZlX3BvaW50ZXI8VD46OnR5cGU+Ojp2YWx1ZT4geyB9OworCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorc3RydWN0IGlzQ29udmVydGlibGVUb1JlZmVyZW5jZSA6IHN0ZDo6aW50ZWdyYWxf
Y29uc3RhbnQ8Ym9vbCwgIWlzRnVuY3Rpb25Qb2ludGVyPFQ+Ojp2YWx1ZSAmJiAhaXNWb2lkUG9p
bnRlcjxUPjo6dmFsdWU+IHsgfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3R5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmX3Q8IWlzQ29udmVydGlibGVUb1JlZmVyZW5jZTxUPjo6dmFsdWUsIGludD4m
Cithc1JlZmVyZW5jZShUKSB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4KK3R5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8aXNDb252ZXJ0aWJs
ZVRvUmVmZXJlbmNlPFQ+Ojp2YWx1ZSwgdHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxUPjo6
dHlwZT4mCithc1JlZmVyZW5jZShUIHB0cikgeyByZXR1cm4gKnB0cjsgfQorCit9IC8vIG5hbWVz
cGFjZSBQb2lzb25lZEltcGxIZWxwZXIKKwogdGVtcGxhdGU8dHlwZW5hbWUgS2V5VHlwZSwgS2V5
VHlwZSBrZXksIHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxzdGQ6Omlz
X3BvaW50ZXI8VD46OnZhbHVlPj4KIGNsYXNzIFBvaXNvbmVkSW1wbCB7CiBwdWJsaWM6CiAgICAg
UG9pc29uZWRJbXBsKCkgeyB9CiAKLSAgICBleHBsaWNpdCBQb2lzb25lZEltcGwoVCBwdHIpCisg
ICAgUG9pc29uZWRJbXBsKFQgcHRyKQogICAgICAgICA6IG1fcG9pc29uZWRCaXRzKHBvaXNvbihw
dHIpKQogICAgIHsgfQogCiAgICAgUG9pc29uZWRJbXBsKGNvbnN0IFBvaXNvbmVkSW1wbCYpID0g
ZGVmYXVsdDsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEsyLCBLMiBrMiwgdHlwZW5hbWUgVDI+
CisgICAgUG9pc29uZWRJbXBsKGNvbnN0IFBvaXNvbmVkSW1wbDxLMiwgazIsIFQyPiYgb3RoZXIp
CisgICAgICAgIDogbV9wb2lzb25lZEJpdHMocG9pc29uPFQ+KG90aGVyLnVucG9pc29uZWQoKSkp
CisgICAgeyB9CisKKyAgICBQb2lzb25lZEltcGwoUG9pc29uZWRJbXBsJiYgb3RoZXIpCisgICAg
ICAgIDogbV9wb2lzb25lZEJpdHMoV1RGTW92ZShvdGhlci5tX3BvaXNvbmVkQml0cykpCisgICAg
eyB9CisKICAgICBleHBsaWNpdCBQb2lzb25lZEltcGwoUG9pc29uZWRCaXRzIHBvaXNvbmVkQml0
cykKICAgICAgICAgOiBtX3BvaXNvbmVkQml0cyhwb2lzb25lZEJpdHMpCiAgICAgeyB9CkBAIC03
Miw3ICsxMjgsMTAgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPgogICAg
IFUgdW5wb2lzb25lZCgpIGNvbnN0IHsgcmV0dXJuIHVucG9pc29uPFU+KG1fcG9pc29uZWRCaXRz
KTsgfQogCi0gICAgQUxXQVlTX0lOTElORSBUIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiB1
bnBvaXNvbjxUPihtX3BvaXNvbmVkQml0cyk7IH0KKyAgICB2b2lkIGNsZWFyKCkgeyBtX3BvaXNv
bmVkQml0cyA9IDA7IH0KKworICAgIGF1dG8mIG9wZXJhdG9yKigpIGNvbnN0IHsgQVNTRVJUKG1f
cG9pc29uZWRCaXRzKTsgcmV0dXJuIFBvaXNvbmVkSW1wbEhlbHBlcjo6YXNSZWZlcmVuY2UodW5w
b2lzb24obV9wb2lzb25lZEJpdHMpKTsgfQorICAgIEFMV0FZU19JTkxJTkUgVCBvcGVyYXRvci0+
KCkgY29uc3QgeyByZXR1cm4gdW5wb2lzb24obV9wb2lzb25lZEJpdHMpOyB9CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBVID0gUG9pc29uZWRCaXRzPgogICAgIFUgYml0cygpIGNvbnN0IHsgcmV0
dXJuIGJpdHdpc2VfY2FzdDxVPihtX3BvaXNvbmVkQml0cyk7IH0KQEAgLTgwLDU2ICsxMzksOTkg
QEAgcHVibGljOgogICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fcG9pc29u
ZWRCaXRzOyB9CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEh
bV9wb2lzb25lZEJpdHM7IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQb2lzb25lZElt
cGwmIGIpIGNvbnN0CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBvaXNvbmVkSW1wbCYgYikg
Y29uc3QgeyByZXR1cm4gbV9wb2lzb25lZEJpdHMgPT0gYi5tX3BvaXNvbmVkQml0czsgfQorICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0IHsgcmV0dXJuIG1f
cG9pc29uZWRCaXRzICE9IGIubV9wb2lzb25lZEJpdHM7IH0KKyAgICBib29sIG9wZXJhdG9yPChj
b25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzIDwgYi5t
X3BvaXNvbmVkQml0czsgfQorICAgIGJvb2wgb3BlcmF0b3I8PShjb25zdCBQb2lzb25lZEltcGwm
IGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzIDw9IGIubV9wb2lzb25lZEJpdHM7IH0K
KyAgICBib29sIG9wZXJhdG9yPihjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0IHsgcmV0dXJu
IG1fcG9pc29uZWRCaXRzID4gYi5tX3BvaXNvbmVkQml0czsgfQorICAgIGJvb2wgb3BlcmF0b3I+
PShjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzID49
IGIubV9wb2lzb25lZEJpdHM7IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgb3Bl
cmF0b3I9PShVIGIpIGNvbnN0IHsgcmV0dXJuIHVucG9pc29uZWQ8VT4oKSA9PSBiOyB9CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBvcGVyYXRvciE9KFUgYikgY29uc3QgeyByZXR1cm4g
dW5wb2lzb25lZDxVPigpICE9IGI7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIG9w
ZXJhdG9yPChVIGIpIGNvbnN0IHsgcmV0dXJuIHVucG9pc29uZWQ8VT4oKSA8IGI7IH0KKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIG9wZXJhdG9yPD0oVSBiKSBjb25zdCB7IHJldHVybiB1
bnBvaXNvbmVkPFU+KCkgPD0gYjsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgb3Bl
cmF0b3I+KFUgYikgY29uc3QgeyByZXR1cm4gdW5wb2lzb25lZDxVPigpID4gYjsgfQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgb3BlcmF0b3I+PShVIGIpIGNvbnN0IHsgcmV0dXJuIHVu
cG9pc29uZWQ8VT4oKSA+PSBiOyB9CisKKyAgICBQb2lzb25lZEltcGwmIG9wZXJhdG9yPShUIHB0
cikKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3BvaXNvbmVkQml0cyA9PSBiLm1fcG9pc29uZWRC
aXRzOworICAgICAgICBtX3BvaXNvbmVkQml0cyA9IHBvaXNvbihwdHIpOworICAgICAgICByZXR1
cm4gKnRoaXM7CiAgICAgfQorICAgIFBvaXNvbmVkSW1wbCYgb3BlcmF0b3I9KGNvbnN0IFBvaXNv
bmVkSW1wbCYpID0gZGVmYXVsdDsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFB0clR5cGUgPSB2
b2lkKiwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8
UHRyVHlwZT46OnZhbHVlPjo6dHlwZT4KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUHRyVHlw
ZSBiKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEsyLCBLMiBrMiwgdHlwZW5hbWUgVDI+CisgICAg
UG9pc29uZWRJbXBsJiBvcGVyYXRvcj0oY29uc3QgUG9pc29uZWRJbXBsPEsyLCBrMiwgVDI+JiBv
dGhlcikKICAgICB7Ci0gICAgICAgIHJldHVybiB1bnBvaXNvbmVkPFB0clR5cGU+KCkgPT0gYjsK
KyAgICAgICAgbV9wb2lzb25lZEJpdHMgPSBwb2lzb248VD4ob3RoZXIudW5wb2lzb25lZCgpKTsK
KyAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAotICAgIFBvaXNvbmVkSW1wbCYgb3BlcmF0
b3I9KFQgcHRyKQorICAgIHZvaWQgc3dhcChQb2lzb25lZEltcGwmIG8pCiAgICAgewotICAgICAg
ICBtX3BvaXNvbmVkQml0cyA9IHBvaXNvbihwdHIpOwotICAgICAgICByZXR1cm4gKnRoaXM7Cisg
ICAgICAgIHN0ZDo6c3dhcChtX3BvaXNvbmVkQml0cywgby5tX3BvaXNvbmVkQml0cyk7CisgICAg
fQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSzIsIEsyIGsyLCB0eXBlbmFtZSBUMj4KKyAgICB2
b2lkIHN3YXAoUG9pc29uZWRJbXBsPEsyLCBrMiwgVDI+JiBvKQorICAgIHsKKyAgICAgICAgVCB0
MSA9IHRoaXMtPnVucG9pc29uZWQoKTsKKyAgICAgICAgVDIgdDIgPSBvLnVucG9pc29uZWQoKTsK
KyAgICAgICAgc3RkOjpzd2FwKHQxLCB0Mik7CisgICAgICAgIG1fcG9pc29uZWRCaXRzID0gcG9p
c29uKHQxKTsKKyAgICAgICAgbyA9IHQyOworICAgIH0KKworICAgIHRlbXBsYXRlPGNsYXNzIFU+
CisgICAgVCBleGNoYW5nZShVJiYgbmV3VmFsdWUpCisgICAgeworICAgICAgICBUIG9sZFZhbHVl
ID0gdW5wb2lzb25lZCgpOworICAgICAgICBtX3BvaXNvbmVkQml0cyA9IHBvaXNvbihzdGQ6OmZv
cndhcmQ8VT4obmV3VmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIG9sZFZhbHVlOwogICAgIH0KLSAg
ICBQb2lzb25lZEltcGwmIG9wZXJhdG9yPShjb25zdCBQb2lzb25lZEltcGwmKSA9IGRlZmF1bHQ7
CiAKIHByaXZhdGU6Ci0jaWYgVVNFKEpTVkFMVUU2NCkKKyNpZiBFTkFCTEUoUE9JU09OKQogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFU+CiAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUG9pc29uZWRC
aXRzIHBvaXNvbihVIHB0cikgeyByZXR1cm4gcHRyID8gYml0d2lzZV9jYXN0PFBvaXNvbmVkQml0
cz4ocHRyKSBeIGtleSA6IDA7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFUgPSBUPgogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFUgdW5wb2lzb24o
UG9pc29uZWRCaXRzIHBvaXNvbmVkQml0cykgeyByZXR1cm4gcG9pc29uZWRCaXRzID8gYml0d2lz
ZV9jYXN0PFU+KHBvaXNvbmVkQml0cyBeIGtleSkgOiBiaXR3aXNlX2Nhc3Q8VT4oMGxsKTsgfQog
I2Vsc2UKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgogICAgIEFMV0FZU19JTkxJTkUgc3RhdGlj
IFBvaXNvbmVkQml0cyBwb2lzb24oVSBwdHIpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxQb2lzb25l
ZEJpdHM+KHB0cik7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFUgPSBUPgogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFUgdW5wb2lzb24oUG9pc29u
ZWRCaXRzIHBvaXNvbmVkQml0cykgeyByZXR1cm4gYml0d2lzZV9jYXN0PFU+KHBvaXNvbmVkQml0
cyk7IH0KICNlbmRpZgogCiAgICAgUG9pc29uZWRCaXRzIG1fcG9pc29uZWRCaXRzIHsgMCB9Owog
fTsKIAotdGVtcGxhdGU8dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQ+Ci11c2luZyBQb2lzb25l
ZCA9IFBvaXNvbmVkSW1wbDx1aW50cHRyX3QmLCBrZXksIFQ+OwordGVtcGxhdGU8dHlwZW5hbWUg
SzEsIEsxIGsxLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgSzIsIEsyIGsyLCB0eXBlbmFtZSBUMj4K
K2lubGluZSB2b2lkIHN3YXAoUG9pc29uZWRJbXBsPEsxLCBrMSwgVDE+JiBhLCBQb2lzb25lZElt
cGw8SzIsIGsyLCBUMj4mIGIpCit7CisgICAgYS5zd2FwKGIpOworfQogCi0jaWYgVVNFKEpTVkFM
VUU2NCkKLXRlbXBsYXRlPHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVD4KLXVzaW5nIEludDMyUG9p
c29uZWQgPSBQb2lzb25lZEltcGw8dWludHB0cl90LCBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGtl
eSkgPDwgMzIsIFQ+OworV1RGX0VYUE9SVF9QUklWQVRFIHVpbnRwdHJfdCBtYWtlUG9pc29uKCk7
CisKK2lubGluZSBjb25zdGV4cHIgdWludHB0cl90IG1ha2VQb2lzb24odWludDMyX3Qga2V5KQor
eworI2lmIEVOQUJMRShQT0lTT04pCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnRwdHJfdD4o
MHg4MDAwMDAwMCB8IGtleSkgPDwgMzI7CiAjZWxzZQotdGVtcGxhdGU8dWludDMyX3QsIHR5cGVu
YW1lIFQ+Ci11c2luZyBJbnQzMlBvaXNvbmVkID0gUG9pc29uZWRJbXBsPHVpbnRwdHJfdCwgMCwg
VD47CisgICAgcmV0dXJuICh2b2lkKWtleSwgMDsKICNlbmRpZgorfQogCi1XVEZfRVhQT1JUX1BS
SVZBVEUgdWludHB0cl90IG1ha2VQb2lzb24oKTsKK3RlbXBsYXRlPHVpbnRwdHJfdCYga2V5LCB0
eXBlbmFtZSBUPgordXNpbmcgUG9pc29uZWQgPSBQb2lzb25lZEltcGw8dWludHB0cl90Jiwga2V5
LCBUPjsKKwordGVtcGxhdGU8dWludDMyX3Qga2V5LCB0eXBlbmFtZSBUPgordXNpbmcgQ29uc3RF
eHByUG9pc29uZWQgPSBQb2lzb25lZEltcGw8dWludHB0cl90LCBtYWtlUG9pc29uKGtleSksIFQ+
OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAotdXNpbmcgV1RGOjpJbnQzMlBvaXNvbmVkOwordXNp
bmcgV1RGOjpDb25zdEV4cHJQb2lzb25lZDsKIHVzaW5nIFdURjo6UG9pc29uZWQ7CiB1c2luZyBX
VEY6OlBvaXNvbmVkQml0czsKIHVzaW5nIFdURjo6bWFrZVBvaXNvbjsKSW5kZXg6IFRvb2xzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNTgzOCkK
KysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE3
LTEyLTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBGaWxsIG91
dCBzb21lIFBvaXNvbmVkIEFQSXMsIGZpeCBzb21lIGJ1Z3MsIGFuZCBhZGQgc29tZSB0ZXN0cy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDcyNAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYwMDY4ODQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
SkYgQmFzdGllbi4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29uc3RFeHByUG9pc29u
ZWQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkLmNwcDogQWRkZWQuCisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjppbml0aWFsaXplVGVzdFBvaXNvbik6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpURVNUKToKKwogMjAxNy0xMi0xMiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5j
b20+CiAKICAgICAgICAgW1dLXSBBZGQgbW9kZXJuIFdlYktpdCBTUEkgdG8gc2V0IGF1dG8gZmls
bCBidXR0b24gdHlwZSBhbmQgcXVlcnkgaWYgdGhlIGF1dG8gZmlsbCBidXR0b24gaXMgZW5hYmxl
ZApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMjU4MzcpCisr
KyBUb29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC05
NSw2ICs5NSw3IEBAIHNldChUZXN0V1RGX1NPVVJDRVMKICAgICAke1RFU1RXRUJLSVRBUElfRElS
fS9UZXN0cy9XVEYvQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcAogICAgICR7VEVTVFdF
QktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9Db25jdXJyZW50UHRySGFzaFNldC5jcHAKICAgICAke1RF
U1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvQ29uZGl0aW9uLmNwcAorICAgICR7VEVTVFdFQktJ
VEFQSV9ESVJ9L1Rlc3RzL1dURi9Db25zdEV4cHJQb2lzb25lZC5jcHAKICAgICAke1RFU1RXRUJL
SVRBUElfRElSfS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcAogICAgICR7VEVTVFdFQktJ
VEFQSV9ESVJ9L1Rlc3RzL1dURi9EYXRlTWF0aC5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElS
fS9UZXN0cy9XVEYvRGVxdWUuY3BwCkBAIC0xMjIsNiArMTIzLDcgQEAgc2V0KFRlc3RXVEZfU09V
UkNFUwogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9PcHRpb25hbC5jcHAKICAg
ICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvT3B0aW9uU2V0LmNwcAogICAgICR7VEVT
VFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9QYXJraW5nTG90LmNwcAorICAgICR7VEVTVFdFQktJ
VEFQSV9ESVJ9L1Rlc3RzL1dURi9Qb2lzb25lZC5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElS
fS9UZXN0cy9XVEYvUHJpb3JpdHlRdWV1ZS5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9U
ZXN0cy9XVEYvUmVkQmxhY2tUcmVlLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3Rz
L1dURi9SZWYuY3BwCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjI1ODM3
KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTc1Niw2ICs3NTYsOCBAQAogCQlGNkI3QkU5NzE3
NDY5Qjk2MDA4QTM0NDUgLyogYXNzb2NpYXRlLWZvcm0tY29udHJvbHMuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNkI3QkU5NjE3NDY5
QjdFMDA4QTM0NDUgLyogYXNzb2NpYXRlLWZvcm0tY29udHJvbHMuaHRtbCAqLzsgfTsKIAkJRjZG
NDlDNkIxNTU0NUNBNzAwMDdGMzlEIC8qIERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGVfQnVuZGxl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2RjQ5
QzY2MTU1NDVDOEQwMDA3RjM5RCAvKiBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlX0J1bmRsZS5j
cHAgKi87IH07CiAJCUY2RkREREQ2MTQyNDFDNkYwMDRGMTcyOSAvKiBwdXNoLXN0YXRlLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjZG
RERERDUxNDI0MUM0ODAwNEYxNzI5IC8qIHB1c2gtc3RhdGUuaHRtbCAqLzsgfTsKKwkJRkUwNUZB
RUYxRkUwNjQ1QjAwMDkzMjMwIC8qIFBvaXNvbmVkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMDVGQUVFMUZFMDY0M0QwMDA5MzIzMCAvKiBQb2lz
b25lZC5jcHAgKi87IH07CisJCUZFMDVGQUYxMUZFMDhDRDQwMDA5MzIzMCAvKiBDb25zdEV4cHJQ
b2lzb25lZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRTA1RkFGMDFGRTA4Q0NEMDAwOTMyMzAgLyogQ29uc3RFeHByUG9pc29uZWQuY3BwICovOyB9
OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5l
ckl0ZW1Qcm94eSBzZWN0aW9uICovCkBAIC0xODU3LDYgKzE4NTksOCBAQAogCQlGNkY0OUM2NzE1
NTQ1QzhEMDAwN0YzOUQgLyogRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjZGRERERDIxNDI0MUFENDAwNEYxNzI5
IC8qIFByaXZhdGVCcm93c2luZ1B1c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByaXZhdGVCcm93c2luZ1B1c2hTdGF0ZU5v
SGlzdG9yeUNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjZGRERE
RDUxNDI0MUM0ODAwNEYxNzI5IC8qIHB1c2gtc3RhdGUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRt
bDsgcGF0aCA9ICJwdXNoLXN0YXRlLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlGRTA1RkFFRTFGRTA2NDNEMDAwOTMyMzAgLyogUG9pc29uZWQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9pc29uZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlGRTA1RkFGMDFGRTA4Q0NEMDAwOTMyMzAgLyogQ29uc3RFeHByUG9pc29uZWQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29uc3RFeHByUG9pc29u
ZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUI2Rjc0RTFCMkJBNDRFMDA5
RTQ5MjIgLyogTmFrZWRQdHIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTmFrZWRQdHIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZp
bGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCkBAIC0yNjEzLDYgKzI2MTcsNyBAQAogCQkJCUE3QTk2
NkRBMTQwRUNDQzgwMDVFRjlCNCAvKiBDaGVja2VkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwICov
LAogCQkJCTBGMzBDQjVCMUZDRTE3OTIwMDRCNTMyMyAvKiBDb25jdXJyZW50UHRySGFzaFNldC5j
cHAgKi8sCiAJCQkJMEZFQUUzNjcxQjdEMTlDQjAwQ0UxN0YyIC8qIENvbmRpdGlvbi5jcHAgKi8s
CisJCQkJRkUwNUZBRjAxRkUwOENDRDAwMDkzMjMwIC8qIENvbnN0RXhwclBvaXNvbmVkLmNwcCAq
LywKIAkJCQk1MTcxNEVCOTFEMDg3NDE2MDA0NzIzQzQgLyogQ3Jvc3NUaHJlYWRUYXNrLmNwcCAq
LywKIAkJCQkyNkEyQzcyRTE1RTJFNzNDMDA1QjFBMTQgLyogQ1N0cmluZy5jcHAgKi8sCiAJCQkJ
N0FBMDIxQkExQUIwOUVBNzAwNTI5NTNGIC8qIERhdGVNYXRoLmNwcCAqLywKQEAgLTI2NDYsNiAr
MjY1MSw3IEBACiAJCQkJMUFGREU2NTQxOTUzQjJDMDAwQzQ4RkZBIC8qIE9wdGlvbmFsLmNwcCAq
LywKIAkJCQlDRTUwRDhDODFDODY2NUNFMDA3MkVBNUEgLyogT3B0aW9uU2V0LmNwcCAqLywKIAkJ
CQkwRkU0NDc5NzFCNzZGMUUzMDA5NDk4RUIgLyogUGFya2luZ0xvdC5jcHAgKi8sCisJCQkJRkUw
NUZBRUUxRkUwNjQzRDAwMDkzMjMwIC8qIFBvaXNvbmVkLmNwcCAqLywKIAkJCQk1M0VDMjUzRjFF
OTZCQzgwMDAwODMxQjkgLyogUHJpb3JpdHlRdWV1ZS5jcHAgKi8sCiAJCQkJMEZDNkM0Q0IxNDEw
MjdFMDAwNUI3RjBDIC8qIFJlZEJsYWNrVHJlZS5jcHAgKi8sCiAJCQkJOTNBNDI3QUExODBEQTI2
NDAwQ0QyNEQ3IC8qIFJlZi5jcHAgKi8sCkBAIC0zMTkwLDYgKzMxOTYsNyBAQAogCQkJCTdDODNE
RjFEMUQwQTU5MEMwMEZFQkNGMyAvKiBMb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1N0Q1
NEY2MUYzMzk1RDAwMEE5N0FBNyAvKiBMb2dnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4
M0RFRUQxRDBBNTkwQzAwRkVCQ0YzIC8qIE1hdGhFeHRyYXMuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJRkUwNUZBRjExRkUwOENENDAwMDkzMjMwIC8qIENvbnN0RXhwclBvaXNvbmVkLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdDODNERUVGMUQwQTU5MEMwMEZFQkNGMyAvKiBNRDUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0M4M0RFRjExRDBBNTkwQzAwRkVCQ0YzIC8qIE1lZGlhVGltZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVGNjFEMEE1OTBDMDBGRUJDRjMgLyogTWV0YUFsbG9j
YXRvci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMyMTAsNiArMzIxNyw3IEBACiAJCQkJN0M4M0RG
MDUxRDBBNTkwQzAwRkVCQ0YzIC8qIFJ1bkxvb3AuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4
M0RGMjYxRDBBNTkwQzAwRkVCQ0YzIC8qIFNhdHVyYXRlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTFBMzUyNEFFMUQ2M0E0RkIwMDMxNzI5QiAvKiBTY29wZS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTA1RkFFRjFGRTA2NDVCMDAwOTMyMzAgLyogUG9pc29u
ZWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGMTIxRDBBNTkwQzAwRkVCQ0YzIC8qIFNj
b3BlZExhbWJkYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREYzRDFEMEE1OTBDMDBGRUJD
RjMgLyogU2V0Rm9yU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGMkExRDBBNTkw
QzAwRkVCQ0YzIC8qIFNIQTEuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9Db25zdEV4cHJQb2lzb25lZC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29uc3RFeHByUG9pc29uZWQuY3BwCShub25leGlz
dGVudCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NvbnN0RXhwclBvaXNvbmVk
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM1MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1
ZGUgIlJlZkxvZ2dlci5oIgorI2luY2x1ZGUgPG11dGV4PgorI2luY2x1ZGUgPHd0Zi9Qb2lzb25l
ZC5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyBjb25zdCB1aW50MzJf
dCBQb2lzb25BID0gMHhhYWFhOworc3RhdGljIGNvbnN0IHVpbnQzMl90IFBvaXNvbkIgPSAweGJi
YmI7CisKKy8vIEZvciB0aGVzZSB0ZXN0cywgd2UgbmVlZCBhIGJhc2UgY2xhc3MgYW5kIGEgZGVy
aXZlZCBjbGFzcy4gRm9yIHRoaXMgcHVycG9zZSwKKy8vIHdlIHJldXNlIHRoZSBSZWZMb2dnZXIg
YW5kIERlcml2ZWRSZWZMb2dnZXIgY2xhc3Nlcy4KKworVEVTVChXVEZfQ29uc3RFeHByUG9pc29u
ZWQsIEJhc2ljKQoreworICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOworCisgICAgQ29uc3RF
eHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gZW1wdHk7CisgICAgQVNTRVJUX0VRKG51
bGxwdHIsIGVtcHR5LnVucG9pc29uZWQoKSk7CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBv
aXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgm
YSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgJipwdHIpOworICAg
ICAgICBBU1NFUlRfRVEoJmEubmFtZSwgJnB0ci0+bmFtZSk7CisgICAgfQorCisgICAgeworICAg
ICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIgPSAmYTsKKyAg
ICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICB9CisKKyAgICB7Cisg
ICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxID0gJmE7Cisg
ICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKHAxKTsKKyAg
ICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDMocDEpOworICAg
ICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgm
YSwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVk
KCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAg
ICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDMuYml0cygpKTsKKyAgICB9CisKKyAgICB7
CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxID0gJmE7
CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyID0gcDE7
CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+IHAzID0gcDE7
CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9p
c29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7
CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBwMy5iaXRzKCkpOworICAgIH0KKwor
ICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEg
PSAmYTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIg
PSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwor
ICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQ29uc3RF
eHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMgPSAmYTsKKyAgICAgICAgQ29uc3RF
eHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQgPSBXVEZNb3ZlKHAzKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEs
IHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAy
LmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwor
ICAgIH0KKworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9n
Z2VyKj4gcDEgPSAmYTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9n
Z2VyKj4gcDIoV1RGTW92ZShwMSkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29u
ZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKKworICAgICAg
ICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMyA9ICZhOworICAgICAg
ICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwNChXVEZNb3ZlKHAzKSk7
CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZhLCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMo
KSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0
cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEs
IERlcml2ZWRSZWZMb2dnZXIqPiBwMSA9ICZhOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQ
b2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9IHAxOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQ
b2lzb25CLCBSZWZMb2dnZXIqPiBwMyA9IHAxOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVu
cG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKKyAg
ICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9U
UlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRz
KCkgIT0gcDMuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNv
bmVkPFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMSA9ICZhOworICAgICAgICBDb25zdEV4
cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9IFdURk1vdmUocDEpOworICAgICAg
ICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwg
cDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBE
ZXJpdmVkUmVmTG9nZ2VyKj4gcDMgPSAmYTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9p
c29uQiwgUmVmTG9nZ2VyKj4gcDQgPSBXVEZNb3ZlKHAzKTsKKyAgICAgICAgQVNTRVJUX0VRKCZh
LCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQo
KSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CisgICAg
ICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgIH0KKworICAgIHsK
KyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcHRyLmNs
ZWFyKCk7CisgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwdHIudW5wb2lzb25lZCgpKTsKKyAg
ICB9Cit9CisKK1RFU1QoV1RGX0NvbnN0RXhwclBvaXNvbmVkLCBBc3NpZ25tZW50KQoreworICAg
IERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOworICAgIFJlZkxvZ2dlciBiKCJiIik7CisgICAgRGVy
aXZlZFJlZkxvZ2dlciBjKCJjIik7CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVk
PFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8
UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoJmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVu
cG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKKyAg
ICAgICAgcDEgPSBwMjsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOwor
ICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQ29uc3RF
eHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOworICAgICAgICBDb25zdEV4
cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7CisgICAgICAgIEFTU0VSVF9F
USgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNv
bmVkKCkpOworICAgICAgICBwMyA9IHA0OworICAgICAgICBBU1NFUlRfRVEoJmIsIHAzLnVucG9p
c29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKKworICAg
ICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJU
X1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBD
b25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOworICAgICAgICBB
U1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICBwdHIgPSAmYjsKKyAgICAg
ICAgQVNTRVJUX0VRKCZiLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICB9CisKKyAgICB7CisgICAg
ICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAg
ICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHB0ciA9IG51bGxw
dHI7CisgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICB9
CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+
IHAxKCZhKTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4g
cDIoJmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAg
IEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDEgPSBXVEZNb3ZlKHAy
KTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NF
UlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8
UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQ
b2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOworICAg
ICAgICBwMyA9IFdURk1vdmUocDQpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAzLnVucG9pc29u
ZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKKworICAgICAg
ICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RS
VUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBDb25z
dEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7CisgICAgICAgIENvbnN0
RXhwclBvaXNvbmVkPFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMigmYyk7CisgICAgICAg
IEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBw
Mi51bnBvaXNvbmVkKCkpOworICAgICAgICBwMSA9IHAyOworICAgICAgICBBU1NFUlRfRVEoJmMs
IHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDIudW5wb2lzb25lZCgp
KTsKKworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygm
YSk7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIERlcml2ZWRSZWZMb2dnZXIq
PiBwNCgmYyk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZjLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAgICBwMyA9IHA0OworICAg
ICAgICBBU1NFUlRfRVEoJmMsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgm
YywgcDQudW5wb2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0g
cDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7
CisgICAgfQorCisgICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZM
b2dnZXIqPiBwdHIoJmEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkp
OworICAgICAgICBwdHIgPSAmYzsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwdHIudW5wb2lzb25l
ZCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEs
IFJlZkxvZ2dlcio+IHAxKCZhKTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwg
RGVyaXZlZFJlZkxvZ2dlcio+IHAyKCZjKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBv
aXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHAyLnVucG9pc29uZWQoKSk7CisgICAg
ICAgIHAxID0gV1RGTW92ZShwMik7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDEudW5wb2lzb25l
ZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMi51bnBvaXNvbmVkKCkpOworCisgICAgICAg
IENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKKyAgICAgICAg
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgRGVyaXZlZFJlZkxvZ2dlcio+IHA0KCZjKTsKKyAg
ICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEo
JmMsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIHAzID0gV1RGTW92ZShwNCk7CisgICAgICAg
IEFTU0VSVF9FUSgmYywgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBw
NC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5i
aXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAg
ICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dl
cio+IHB0cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7Cisg
ICAgICAgIHB0ciA9IHB0cjsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgp
KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJl
ZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQo
KSk7CisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAor
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW5rbm93bi1wcmFnbWFzIgorI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1Xc2VsZi1tb3ZlIgorI2VuZGlmCisgICAg
ICAgIHB0ciA9IFdURk1vdmUocHRyKTsKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBwb3AKKyNlbmRpZgorICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBv
aXNvbmVkKCkpOworICAgIH0KK30KKworVEVTVChXVEZfQ29uc3RFeHByUG9pc29uZWQsIFN3YXAp
Cit7CisgICAgUmVmTG9nZ2VyIGEoImEiKTsKKyAgICBSZWZMb2dnZXIgYigiYiIpOworCisgICAg
eworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7
CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKCZiKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRf
RVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHAxLnN3YXAocDIpOworICAgICAgICBB
U1NFUlRfRVEoJmIsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIu
dW5wb2lzb25lZCgpKTsKKworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZM
b2dnZXIqPiBwMygmYSk7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxv
Z2dlcio+IHA0KCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwor
ICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIHAzLnN3YXAo
cDQpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFT
U0VSVF9FUSgmYSwgcDQudW5wb2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5i
aXRzKCkgIT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0
LmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMy5iaXRzKCkpOwor
ICAgICAgICBBU1NFUlRfVFJVRShwMi5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9CisKKyAg
ICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZh
KTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoJmIp
OworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VS
VF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgc3dhcChwMSwgcDIpOworICAgICAg
ICBBU1NFUlRfRVEoJmIsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwg
cDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBS
ZWZMb2dnZXIqPiBwMygmYSk7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJl
ZkxvZ2dlcio+IHA0KCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkp
OworICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIHN3YXAo
cDMsIHA0KTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAg
ICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUo
cDEuYml0cygpICE9IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAh
PSBwNC5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDMuYml0cygp
KTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDIuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQor
fQorCitzdGF0aWMgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcG9pc29u
ZWRQdHJGb28oUmVmTG9nZ2VyJiBsb2dnZXIpCit7CisgICAgcmV0dXJuIENvbnN0RXhwclBvaXNv
bmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+KCZsb2dnZXIpOworfQorCitURVNUKFdURl9Db25zdEV4
cHJQb2lzb25lZCwgUmV0dXJuVmFsdWUpCit7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7
CisKKyAgICB7CisgICAgICAgIGF1dG8gcHRyID0gcG9pc29uZWRQdHJGb28oYSk7CisgICAgICAg
IEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwg
JipwdHIpOworICAgICAgICBBU1NFUlRfRVEoJmEubmFtZSwgJnB0ci0+bmFtZSk7CisgICAgfQor
fQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCisKSW5kZXg6IFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZC5jcHAJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMzg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiUmVmTG9nZ2VyLmgiCisjaW5jbHVkZSA8
bXV0ZXg+CisjaW5jbHVkZSA8d3RmL1BvaXNvbmVkLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKKwordWludHB0cl90IGdfdGVzdFBvaXNvbkE7Cit1aW50cHRyX3QgZ190ZXN0UG9pc29u
QjsKKworc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVRlc3RQb2lzb24oKQoreworICAgIHN0YXRpYyBz
dGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2UoaW5p
dGlhbGl6ZU9uY2VGbGFnLCBbXSB7CisgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBnZXQgMiBkaWZm
ZXJlbnQgcG9pc29uIHZhbHVlcy4KKyAgICAgICAgZ190ZXN0UG9pc29uQSA9IG1ha2VQb2lzb24o
KTsKKyAgICAgICAgd2hpbGUgKCFnX3Rlc3RQb2lzb25CIHx8IGdfdGVzdFBvaXNvbkIgPT0gZ190
ZXN0UG9pc29uQSkKKyAgICAgICAgICAgIGdfdGVzdFBvaXNvbkIgPSBtYWtlUG9pc29uKCk7Cisg
ICAgfSk7Cit9CisKKy8vIEZvciB0aGVzZSB0ZXN0cywgd2UgbmVlZCBhIGJhc2UgY2xhc3MgYW5k
IGEgZGVyaXZlZCBjbGFzcy4gRm9yIHRoaXMgcHVycG9zZSwKKy8vIHdlIHJldXNlIHRoZSBSZWZM
b2dnZXIgYW5kIERlcml2ZWRSZWZMb2dnZXIgY2xhc3Nlcy4KKworVEVTVChXVEZfUG9pc29uZWQs
IEJhc2ljKQoreworICAgIGluaXRpYWxpemVUZXN0UG9pc29uKCk7CisgICAgRGVyaXZlZFJlZkxv
Z2dlciBhKCJhIik7CisKKyAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBl
bXB0eTsKKyAgICBBU1NFUlRfRVEobnVsbHB0ciwgZW1wdHkudW5wb2lzb25lZCgpKTsKKworICAg
IHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZhLCAmKnB0cik7CisgICAgICAgIEFTU0VSVF9FUSgmYS5uYW1lLCAmcHRyLT5uYW1lKTsK
KyAgICB9CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dl
cio+IHB0ciA9ICZhOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOwor
ICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2Vy
Kj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4g
cDIocDEpOworCisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfVFJVRShw
MS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKworI2lmIEVOQUJMRShNSVhFRF9QT0lTT04pCisgICAg
ICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHAzKHAxKTsKKyAgICAgICAg
QVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMS5i
aXRzKCkgIT0gcDMuYml0cygpKTsKKyNlbmRpZgorICAgIH0KKworICAgIHsKKyAgICAgICAgUG9p
c29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29u
ZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIgPSBwMTsKKyAgICAgICAgQVNTRVJUX0VR
KCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29u
ZWQoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworCisj
aWYgRU5BQkxFKE1JWEVEX1BPSVNPTikKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwg
UmVmTG9nZ2VyKj4gcDMgPSBwMTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVk
KCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDMuYml0cygpKTsKKyNlbmRp
ZgorICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9n
Z2VyKj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2Vy
Kj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVk
KCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFT
U0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworCisjaWYgRU5BQkxFKE1JWEVEX1BP
SVNPTikKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMgPSAm
YTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQgPSBXVEZN
b3ZlKHAzKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAg
ICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAz
LmJpdHMoKSAhPSBwNC5iaXRzKCkpOworI2VuZGlmCisgICAgfQorCisgICAgeworICAgICAgICBQ
b2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSA9ICZhOworICAgICAgICBQb2lz
b25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMihXVEZNb3ZlKHAxKSk7CisgICAgICAg
IEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBw
Mi51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0
cygpKTsKKworI2lmIEVOQUJMRShNSVhFRF9QT0lTT04pCisgICAgICAgIFBvaXNvbmVkPGdfdGVz
dFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzID0gJmE7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBv
aXNvbkIsIFJlZkxvZ2dlcio+IHA0KFdURk1vdmUocDMpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZh
LCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQo
KSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworI2VuZGlm
CisgICAgfQorCisjaWYgRU5BQkxFKE1JWEVEX1BPSVNPTikKKyAgICB7CisgICAgICAgIFBvaXNv
bmVkPGdfdGVzdFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMSA9ICZhOworICAgICAgICBQ
b2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9IHAxOworICAgICAgICBBU1NF
UlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7
CisKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDMgPSBwMTsK
KyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRf
VFJVRShwMS5iaXRzKCkgIT0gcDMuYml0cygpKTsKKyAgICB9CisjZW5kaWYKKworI2lmIEVOQUJM
RShNSVhFRF9QT0lTT04pCisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBE
ZXJpdmVkUmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29u
QSwgUmVmTG9nZ2VyKj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBw
MS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7
CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworCisgICAgICAg
IFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMyA9ICZhOworICAg
ICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCA9IFdURk1vdmUocDMp
OworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VS
VF9FUSgmYSwgcDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygp
ICE9IHA0LmJpdHMoKSk7CisgICAgfQorI2VuZGlmCisKKyAgICB7CisgICAgICAgIFBvaXNvbmVk
PGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgm
YSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHB0ci5jbGVhcigpOworICAgICAgICBBU1NF
UlRfRVEobnVsbHB0ciwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgfQorfQorCitURVNUKFdURl9Q
b2lzb25lZCwgQXNzaWdubWVudCkKK3sKKyAgICBpbml0aWFsaXplVGVzdFBvaXNvbigpOworICAg
IERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOworICAgIFJlZkxvZ2dlciBiKCJiIik7CisgICAgRGVy
aXZlZFJlZkxvZ2dlciBjKCJjIik7CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBv
aXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29u
QSwgUmVmTG9nZ2VyKj4gcDIoJmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29u
ZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAg
cDEgPSBwMjsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAg
ICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAx
LmJpdHMoKSA9PSBwMi5iaXRzKCkpOworCisjaWYgRU5BQkxFKE1JWEVEX1BPSVNPTikKKyAgICAg
ICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOworICAgICAgICBQ
b2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7CisgICAgICAgIEFTU0VS
VF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBv
aXNvbmVkKCkpOworICAgICAgICBwMyA9IHA0OworICAgICAgICBBU1NFUlRfRVEoJmIsIHAzLnVu
cG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKKyAg
ICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisjZW5kaWYKKyAgICB9
CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0
cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAg
IHB0ciA9ICZiOworICAgICAgICBBU1NFUlRfRVEoJmIsIHB0ci51bnBvaXNvbmVkKCkpOworICAg
IH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4g
cHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAg
ICAgcHRyID0gbnVsbHB0cjsKKyAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHB0ci51bnBvaXNv
bmVkKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwg
UmVmTG9nZ2VyKj4gcDEoJmEpOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZM
b2dnZXIqPiBwMigmYik7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBwMSA9IFdU
Rk1vdmUocDIpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAxLnVucG9pc29uZWQoKSk7CisgICAg
ICAgIEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUo
cDEuYml0cygpID09IHAyLmJpdHMoKSk7CisKKyNpZiBFTkFCTEUoTUlYRURfUE9JU09OKQorICAg
ICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygmYSk7CisgICAgICAg
IFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KCZiKTsKKyAgICAgICAgQVNT
RVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVu
cG9pc29uZWQoKSk7CisgICAgICAgIHAzID0gV1RGTW92ZShwNCk7CisgICAgICAgIEFTU0VSVF9F
USgmYiwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNv
bmVkKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyNl
bmRpZgorICAgIH0KKworI2lmIEVOQUJMRShNSVhFRF9QT0lTT04pCisgICAgeworICAgICAgICBQ
b2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7CisgICAgICAgIFBvaXNv
bmVkPGdfdGVzdFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMigmYyk7CisgICAgICAgIEFT
U0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMi51
bnBvaXNvbmVkKCkpOworICAgICAgICBwMSA9IHAyOworICAgICAgICBBU1NFUlRfRVEoJmMsIHAx
LnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDIudW5wb2lzb25lZCgpKTsK
KyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CisKKyAgICAgICAg
UG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOworICAgICAgICBQb2lz
b25lZDxnX3Rlc3RQb2lzb25CLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDQoJmMpOworICAgICAgICBB
U1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDQu
dW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDMgPSBwNDsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBw
My51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHA0LnVucG9pc29uZWQoKSk7
CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgIH0KKyNl
bmRpZgorCisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIq
PiBwdHIoJmEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAg
ICAgICBwdHIgPSAmYzsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwdHIudW5wb2lzb25lZCgpKTsK
KyAgICB9CisKKyNpZiBFTkFCTEUoTUlYRURfUE9JU09OKQorICAgIHsKKyAgICAgICAgUG9pc29u
ZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOworICAgICAgICBQb2lzb25lZDxn
X3Rlc3RQb2lzb25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDIoJmMpOworICAgICAgICBBU1NFUlRf
RVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDIudW5wb2lz
b25lZCgpKTsKKyAgICAgICAgcDEgPSBXVEZNb3ZlKHAyKTsKKyAgICAgICAgQVNTRVJUX0VRKCZj
LCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHAyLnVucG9pc29uZWQo
KSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworCisgICAg
ICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKKyAgICAgICAg
UG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgRGVyaXZlZFJlZkxvZ2dlcio+IHA0KCZjKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMs
IHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIHAzID0gV1RGTW92ZShwNCk7CisgICAgICAgIEFT
U0VSVF9FUSgmYywgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwNC51
bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygp
KTsKKyAgICB9CisjZW5kaWYKKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29u
QSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lz
b25lZCgpKTsKKyAgICAgICAgcHRyID0gcHRyOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51
bnBvaXNvbmVkKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9p
c29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5w
b2lzb25lZCgpKTsKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3Rp
YyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bmtub3duLXByYWdt
YXMiCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdzZWxmLW1vdmUiCisjZW5k
aWYKKyAgICAgICAgcHRyID0gV1RGTW92ZShwdHIpOworI2lmIENPTVBJTEVSKENMQU5HKQorI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorI2VuZGlmCisgICAgICAgIEFTU0VSVF9FUSgmYSwg
cHRyLnVucG9pc29uZWQoKSk7CisgICAgfQorfQorCitURVNUKFdURl9Qb2lzb25lZCwgU3dhcCkK
K3sKKyAgICBpbml0aWFsaXplVGVzdFBvaXNvbigpOworICAgIFJlZkxvZ2dlciBhKCJhIik7Cisg
ICAgUmVmTG9nZ2VyIGIoImIiKTsKKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9p
c29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25B
LCBSZWZMb2dnZXIqPiBwMigmYik7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25l
ZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBw
MS5zd2FwKHAyKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOworICAg
ICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RS
VUUocDEuYml0cygpICE9IHAyLmJpdHMoKSk7CisKKyNpZiBFTkFCTEUoTUlYRURfUE9JU09OKQor
ICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygmYSk7CisgICAg
ICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KCZiKTsKKyAgICAgICAg
QVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHA0
LnVucG9pc29uZWQoKSk7CisgICAgICAgIHAzLnN3YXAocDQpOworICAgICAgICBBU1NFUlRfRVEo
JmIsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDQudW5wb2lzb25l
ZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAg
ICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAzLmJpdHMoKSk7CisgICAgICAgIEFTU0VS
VF9UUlVFKHAyLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworI2VuZGlmCisgICAgfQorCisgICAgewor
ICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7CisgICAg
ICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKCZiKTsKKyAgICAgICAg
QVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAy
LnVucG9pc29uZWQoKSk7CisgICAgICAgIHN3YXAocDEsIHAyKTsKKyAgICAgICAgQVNTRVJUX0VR
KCZiLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29u
ZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAyLmJpdHMoKSk7CisK
KyNpZiBFTkFCTEUoTUlYRURfUE9JU09OKQorICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25B
LCBSZWZMb2dnZXIqPiBwMygmYSk7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJl
ZkxvZ2dlcio+IHA0KCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkp
OworICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIHN3YXAo
cDMsIHA0KTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAg
ICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUo
cDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9
PSBwMy5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMi5iaXRzKCkgIT0gcDQuYml0cygp
KTsKKyNlbmRpZgorICAgIH0KK30KKworc3RhdGljIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJl
ZkxvZ2dlcio+IHBvaXNvbmVkUHRyRm9vKFJlZkxvZ2dlciYgbG9nZ2VyKQoreworICAgIHJldHVy
biBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPigmbG9nZ2VyKTsKK30KKworVEVT
VChXVEZfUG9pc29uZWQsIFJldHVyblZhbHVlKQoreworICAgIGluaXRpYWxpemVUZXN0UG9pc29u
KCk7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CisKKyAgICB7CisgICAgICAgIGF1dG8g
cHRyID0gcG9pc29uZWRQdHJGb28oYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9p
c29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgJipwdHIpOworICAgICAgICBBU1NFUlRf
RVEoJmEubmFtZSwgJnB0ci0+bmFtZSk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329207</attachid>
            <date>2017-12-12 23:19:16 -0800</date>
            <delta_ts>2017-12-13 00:20:04 -0800</delta_ts>
            <desc>patch for landing.</desc>
            <filename>bug-180724.patch</filename>
            <type>text/plain</type>
            <size>42546</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI1ODM3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDE3LTEyLTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBG
aWxsIG91dCBzb21lIFBvaXNvbmVkIEFQSXMsIGZpeCBzb21lIGJ1Z3MsIGFuZCBhZGQgc29tZSB0
ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
MDcyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYwMDY4ODQ+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgSkYgQmFzdGllbi4KKworICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlv
blRhYmxlLmg6CisKIDIwMTctMTItMTIgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4K
IAogICAgICAgICBTdHJ1Y3R1cmUsIFN0cnVjdHVyZVJhcmVEYXRhLCBhbmQgUHJvcGVydHlUYWJs
ZSBzaG91bGQgYmUgaW4gSXNvU3Vic3BhY2VzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaAkocmV2aXNp
b24gMjI1ODM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJh
bnNpdGlvblRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTg3LDggKzE4Nyw4IEBA
IHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgU2luZ2xlU2xvdFRyYW5zaXRp
b25XZWFrT3duZXI7Ci0gICAgdXNpbmcgUG9pc29uZWRUcmFuc2l0aW9uTWFwUHRyID0gSW50MzJQ
b2lzb25lZDxUcmFuc2l0aW9uTWFwUG9pc29uLCBUcmFuc2l0aW9uTWFwKj47Ci0gICAgdXNpbmcg
UG9pc29uZWRXZWFrSW1wbFB0ciA9IEludDMyUG9pc29uZWQ8V2Vha0ltcGxQb2lzb24sIFdlYWtJ
bXBsKj47CisgICAgdXNpbmcgUG9pc29uZWRUcmFuc2l0aW9uTWFwUHRyID0gQ29uc3RFeHByUG9p
c29uZWQ8VHJhbnNpdGlvbk1hcFBvaXNvbiwgVHJhbnNpdGlvbk1hcCo+OworICAgIHVzaW5nIFBv
aXNvbmVkV2Vha0ltcGxQdHIgPSBDb25zdEV4cHJQb2lzb25lZDxXZWFrSW1wbFBvaXNvbiwgV2Vh
a0ltcGwqPjsKIAogICAgIGJvb2wgaXNVc2luZ1NpbmdsZVNsb3QoKSBjb25zdAogICAgIHsKSW5k
ZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyMjU4MzcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDE3LTEyLTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFw
cGxlLmNvbT4KKworICAgICAgICBGaWxsIG91dCBzb21lIFBvaXNvbmVkIEFQSXMsIGZpeCBzb21l
IGJ1Z3MsIGFuZCBhZGQgc29tZSB0ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4MDcyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYwMDY4
ODQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSkYgQmFzdGllbi4KKworICAgICAgICBBbHNvIHJl
bmFtZSBJbnQzMlBvaXNvbmVkIHRvIENvbnN0RXhwclBvaXNvbmVkLiAgVGhlIGtleSBpdCB0YWtl
cyBpcyBhY3R1YWxseSBhCisgICAgICAgIHVpbnQzMl90LiAgU28sIEludDMyIGlzIHJlYWxseSBh
IG1pc25vbWVyLiAgSW4gYWRkaXRpb24sIHRoZSBrZXkgbmVlZHMgdG8gYmUgYQorICAgICAgICBj
b25zdGV4cHIuICBTbywgQ29uc3RFeHByUG9pc29uZWQgaXMgYSBiZXR0ZXIgbmFtZSBmb3IgaXQu
CisKKyAgICAgICAgKiB3dGYvUG9pc29uZWQuY3BwOgorICAgICAgICAoV1RGOjptYWtlUG9pc29u
KToKKyAgICAgICAgKiB3dGYvUG9pc29uZWQuaDoKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBs
SGVscGVyOjphc1JlZmVyZW5jZSk6CisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6UG9pc29u
ZWRJbXBsKToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpjbGVhcik6CisgICAgICAgIChX
VEY6OlBvaXNvbmVkSW1wbDo6b3BlcmF0b3IqIGNvbnN0KToKKyAgICAgICAgKFdURjo6UG9pc29u
ZWRJbXBsOjpvcGVyYXRvci0+IGNvbnN0KToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpv
cGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvciE9
IGNvbnN0KToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvcjwgY29uc3QpOgor
ICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6Om9wZXJhdG9yPD0gY29uc3QpOgorICAgICAgICAo
V1RGOjpQb2lzb25lZEltcGw6Om9wZXJhdG9yPiBjb25zdCk6CisgICAgICAgIChXVEY6OlBvaXNv
bmVkSW1wbDo6b3BlcmF0b3I+PSBjb25zdCk6CisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6
b3BlcmF0b3I9KToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpzd2FwKToKKyAgICAgICAg
KFdURjo6UG9pc29uZWRJbXBsOjpleGNoYW5nZSk6CisgICAgICAgIChXVEY6OnN3YXApOgorICAg
ICAgICAoV1RGOjptYWtlUG9pc29uKToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVy
YXRvcj09KTogRGVsZXRlZC4KKwogMjAxNy0xMi0xMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbSlNDXSBJbXBsZW1lbnQgb3B0aW1pemVkIFdlYWtN
YXAgYW5kIFdlYWtTZXQKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVkLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Qb2lzb25lZC5jcHAJKHJldmlzaW9uIDIyNTgzNykKKysr
IFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMs
NyBAQCBuYW1lc3BhY2UgV1RGIHsKIHVpbnRwdHJfdCBtYWtlUG9pc29uKCkKIHsKICAgICB1aW50
cHRyX3Qga2V5ID0gY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKTsKLSNpZiBVU0UoSlNW
QUxVRTY0KSAmJiAhT1MoV0lORE9XUykKKyNpZiBFTkFCTEUoUE9JU09OKQogICAgIGtleSA9IChr
ZXkgPDwgMzIpIF4gKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oY3J5cHRvZ3JhcGhpY2FsbHlSYW5k
b21OdW1iZXIoKSkgPDwgMyk7CiAgICAgLy8gRW5zdXJlIHRoYXQgdGhlIHBvaXNvbmVkIGJpdHMg
KHBvaW50ZXIgXiBrZXkpIGRvIG5vdCBtYWtlIGEgdmFsaWQgcG9pbnRlciBhbmQKICAgICAvLyBj
YW5ub3QgYmUgMC4gV2UgZW5zdXJlIHRoYXQgaXQgaXMgemVybyBzbyB0aGF0IHRoZSBwb2lzb25l
ZCBiaXRzIGNhbiBhbHNvIGJlCkBAIC01MSw0ICs1MSwzIEBAIHVpbnRwdHJfdCBtYWtlUG9pc29u
KCkKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCi0KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BvaXNv
bmVkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUG9pc29uZWQuaAkocmV2aXNpb24g
MjI1ODM3KQorKysgU291cmNlL1dURi93dGYvUG9pc29uZWQuaAkod29ya2luZyBjb3B5KQpAQCAt
MjcsMTEgKzI3LDM3IEBACiAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogCisjZGVmaW5l
IEVOQUJMRV9QT0lTT04gMQogI2RlZmluZSBFTkFCTEVfUE9JU09OX0FTU0VSVFMgMAogCisvLyBP
bGRlciB2ZXJzaW9ucyBvZiBnY2MgYW5kIGNsYW5nIGhhdmUgYSBidWcgd2hpY2ggcmVzdWx0cyBp
biBidWlsZCBmYWlsdXJlcworLy8gd2hlbiB1c2luZyB0ZW1wbGF0ZSBtZXRob2RzIHRoYXQgdGFr
ZSBhbiBhcmd1bWVudCBvZiBQb2lzb25lZEltcGw8SzIsIGsyLCBUMj4KKy8vIHdoZW4gdGhlIEtl
eVR5cGUgaXMgYSB1aW50cHRyX3QgKGkuZS4gd2hlbiB3ZSdyZSB1c2luZyB0aGUgUG9pc29uZWQg
dmFyaWFudAorLy8gb2YgUG9pc29uZWRJbXBsKS4gVGhpcyBidWcgZG9lcyBub3QgbWFuaWZlc3Qg
Zm9yIHRoZSBDb25zdEV4cHJQb2lzb25lZCB2YXJpYW50LgorLy8gSW4gcHJhY3RpY2UsIHdlIHdp
bGwgbGlrZWx5IG9ubHkgdXNlIHRoZXNlIG1ldGhvZHMgZm9yIGluc3RhbnRpYXRpb25zIG9mIHRo
ZQorLy8gQ29uc3RFeHByUG9pc29uZWQgdmFyaWFudC4gSGVuY2UuIHRoaXMgYnVnIGlzIG5vdCBh
IHNob3cgc3RvcHBlci4KKy8vIFRoYXQgc2FpZCwgd2UnbGwgZGVmaW5lIEVOQUJMRV9NSVhFRF9Q
T0lTT04gYWNjb3JkaW5nbHkgc28gdGhhdCB3ZSBjYW4gdXNlCisvLyBpdCB0byBkaXNhYmxlIHRo
ZSBhZmZlY3RlZCB0ZXN0cyB3aGVuIGJ1aWxkaW5nIHdpdGggb2xkIGNvbXBpbGVycy4KKyNpZiBk
ZWZpbmVkKF9fY2xhbmdfbWFqb3JfXykKKyNpZiBfX2NsYW5nX21ham9yX18gPj0gNAorI2RlZmlu
ZSBFTkFCTEVfTUlYRURfUE9JU09OIDEgLy8gRW5hYmxlIGZvciBjbGFuZyA0LjAuMCBhbmQgbmV3
ZXIuCisjZW5kaWYgLy8gX19jbGFuZ19tYWpvcl9fCisjZWxpZiBkZWZpbmVkKF9fR05VQ19fKQor
I2luY2x1ZGUgPGZlYXR1cmVzLmg+CisjaWYgX19HTlVDX1BSRVJFUSg3LDIpCisjZGVmaW5lIEVO
QUJMRV9NSVhFRF9QT0lTT04gMSAvLyBFbmFibGUgZm9yIGdjYyA3LjIgYW5kIG5ld2VyLgorI2Vu
ZGlmIC8vIF9fR05VQ19QUkVSRVEoNywyKQorI2VuZGlmIC8vICFkZWZpbmVkKF9fR05VQ19fKQor
CisjaWZuZGVmIEVOQUJMRV9NSVhFRF9QT0lTT04KKyNkZWZpbmUgRU5BQkxFX01JWEVEX1BPSVNP
TiAwIC8vIERpc2FibGUgZm9yIGV2ZXJ5dGhpbmcgZWxzZS4KKyNlbmRpZgorCiAvLyBOb3QgY3Vy
cmVudGx5IHN1cHBvcnRlZCBmb3IgMzItYml0IG9yIE9TKFdJTkRPV1MpIGJ1aWxkcyAoYmVjYXVz
ZSBvZiBtaXNzaW5nIGxsaW50IHN1cHBvcnQpLgogLy8gTWFrZSBzdXJlIGl0J3MgZGlzYWJsZWQu
CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkgfHwgT1MoV0lORE9XUykKKyN1bmRlZiBFTkFCTEVfUE9J
U09OCisjZGVmaW5lIEVOQUJMRV9QT0lTT04gMAogI3VuZGVmIEVOQUJMRV9QT0lTT05fQVNTRVJU
UwogI2RlZmluZSBFTkFCTEVfUE9JU09OX0FTU0VSVFMgMAogI2VuZGlmCkBAIC00MCwxNyArNjYs
NDcgQEAgbmFtZXNwYWNlIFdURiB7CiAKIHVzaW5nIFBvaXNvbmVkQml0cyA9IHVpbnRwdHJfdDsK
IAorbmFtZXNwYWNlIFBvaXNvbmVkSW1wbEhlbHBlciB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
CitzdHJ1Y3QgaXNGdW5jdGlvblBvaW50ZXIgOiBzdGQ6OmludGVncmFsX2NvbnN0YW50PGJvb2ws
IHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxUPjo6dHlwZT46
OnZhbHVlPiB7IH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgaXNWb2lkUG9pbnRl
ciA6IHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgc3RkOjppc192b2lkPHR5cGVuYW1lIHN0
ZDo6cmVtb3ZlX3BvaW50ZXI8VD46OnR5cGU+Ojp2YWx1ZT4geyB9OworCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorc3RydWN0IGlzQ29udmVydGlibGVUb1JlZmVyZW5jZSA6IHN0ZDo6aW50ZWdyYWxf
Y29uc3RhbnQ8Ym9vbCwgIWlzRnVuY3Rpb25Qb2ludGVyPFQ+Ojp2YWx1ZSAmJiAhaXNWb2lkUG9p
bnRlcjxUPjo6dmFsdWU+IHsgfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3R5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmX3Q8IWlzQ29udmVydGlibGVUb1JlZmVyZW5jZTxUPjo6dmFsdWUsIGludD4m
Cithc1JlZmVyZW5jZShUKSB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4KK3R5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8aXNDb252ZXJ0aWJs
ZVRvUmVmZXJlbmNlPFQ+Ojp2YWx1ZSwgdHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxUPjo6
dHlwZT4mCithc1JlZmVyZW5jZShUIHB0cikgeyByZXR1cm4gKnB0cjsgfQorCit9IC8vIG5hbWVz
cGFjZSBQb2lzb25lZEltcGxIZWxwZXIKKwogdGVtcGxhdGU8dHlwZW5hbWUgS2V5VHlwZSwgS2V5
VHlwZSBrZXksIHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxzdGQ6Omlz
X3BvaW50ZXI8VD46OnZhbHVlPj4KIGNsYXNzIFBvaXNvbmVkSW1wbCB7CiBwdWJsaWM6CiAgICAg
UG9pc29uZWRJbXBsKCkgeyB9CiAKLSAgICBleHBsaWNpdCBQb2lzb25lZEltcGwoVCBwdHIpCisg
ICAgUG9pc29uZWRJbXBsKFQgcHRyKQogICAgICAgICA6IG1fcG9pc29uZWRCaXRzKHBvaXNvbihw
dHIpKQogICAgIHsgfQogCiAgICAgUG9pc29uZWRJbXBsKGNvbnN0IFBvaXNvbmVkSW1wbCYpID0g
ZGVmYXVsdDsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEsyLCBLMiBrMiwgdHlwZW5hbWUgVDI+
CisgICAgUG9pc29uZWRJbXBsKGNvbnN0IFBvaXNvbmVkSW1wbDxLMiwgazIsIFQyPiYgb3RoZXIp
CisgICAgICAgIDogbV9wb2lzb25lZEJpdHMocG9pc29uPFQ+KG90aGVyLnVucG9pc29uZWQoKSkp
CisgICAgeyB9CisKKyAgICBQb2lzb25lZEltcGwoUG9pc29uZWRJbXBsJiYgb3RoZXIpCisgICAg
ICAgIDogbV9wb2lzb25lZEJpdHMoV1RGTW92ZShvdGhlci5tX3BvaXNvbmVkQml0cykpCisgICAg
eyB9CisKICAgICBleHBsaWNpdCBQb2lzb25lZEltcGwoUG9pc29uZWRCaXRzIHBvaXNvbmVkQml0
cykKICAgICAgICAgOiBtX3BvaXNvbmVkQml0cyhwb2lzb25lZEJpdHMpCiAgICAgeyB9CkBAIC03
Miw3ICsxMjgsMTAgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPgogICAg
IFUgdW5wb2lzb25lZCgpIGNvbnN0IHsgcmV0dXJuIHVucG9pc29uPFU+KG1fcG9pc29uZWRCaXRz
KTsgfQogCi0gICAgQUxXQVlTX0lOTElORSBUIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiB1
bnBvaXNvbjxUPihtX3BvaXNvbmVkQml0cyk7IH0KKyAgICB2b2lkIGNsZWFyKCkgeyBtX3BvaXNv
bmVkQml0cyA9IDA7IH0KKworICAgIGF1dG8mIG9wZXJhdG9yKigpIGNvbnN0IHsgQVNTRVJUKG1f
cG9pc29uZWRCaXRzKTsgcmV0dXJuIFBvaXNvbmVkSW1wbEhlbHBlcjo6YXNSZWZlcmVuY2UodW5w
b2lzb24obV9wb2lzb25lZEJpdHMpKTsgfQorICAgIEFMV0FZU19JTkxJTkUgVCBvcGVyYXRvci0+
KCkgY29uc3QgeyByZXR1cm4gdW5wb2lzb24obV9wb2lzb25lZEJpdHMpOyB9CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBVID0gUG9pc29uZWRCaXRzPgogICAgIFUgYml0cygpIGNvbnN0IHsgcmV0
dXJuIGJpdHdpc2VfY2FzdDxVPihtX3BvaXNvbmVkQml0cyk7IH0KQEAgLTgwLDU2ICsxMzksOTkg
QEAgcHVibGljOgogICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fcG9pc29u
ZWRCaXRzOyB9CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEh
bV9wb2lzb25lZEJpdHM7IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQb2lzb25lZElt
cGwmIGIpIGNvbnN0CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBvaXNvbmVkSW1wbCYgYikg
Y29uc3QgeyByZXR1cm4gbV9wb2lzb25lZEJpdHMgPT0gYi5tX3BvaXNvbmVkQml0czsgfQorICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0IHsgcmV0dXJuIG1f
cG9pc29uZWRCaXRzICE9IGIubV9wb2lzb25lZEJpdHM7IH0KKyAgICBib29sIG9wZXJhdG9yPChj
b25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzIDwgYi5t
X3BvaXNvbmVkQml0czsgfQorICAgIGJvb2wgb3BlcmF0b3I8PShjb25zdCBQb2lzb25lZEltcGwm
IGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzIDw9IGIubV9wb2lzb25lZEJpdHM7IH0K
KyAgICBib29sIG9wZXJhdG9yPihjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0IHsgcmV0dXJu
IG1fcG9pc29uZWRCaXRzID4gYi5tX3BvaXNvbmVkQml0czsgfQorICAgIGJvb2wgb3BlcmF0b3I+
PShjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzID49
IGIubV9wb2lzb25lZEJpdHM7IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgb3Bl
cmF0b3I9PShVIGIpIGNvbnN0IHsgcmV0dXJuIHVucG9pc29uZWQ8VT4oKSA9PSBiOyB9CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBvcGVyYXRvciE9KFUgYikgY29uc3QgeyByZXR1cm4g
dW5wb2lzb25lZDxVPigpICE9IGI7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIG9w
ZXJhdG9yPChVIGIpIGNvbnN0IHsgcmV0dXJuIHVucG9pc29uZWQ8VT4oKSA8IGI7IH0KKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIG9wZXJhdG9yPD0oVSBiKSBjb25zdCB7IHJldHVybiB1
bnBvaXNvbmVkPFU+KCkgPD0gYjsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgb3Bl
cmF0b3I+KFUgYikgY29uc3QgeyByZXR1cm4gdW5wb2lzb25lZDxVPigpID4gYjsgfQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgb3BlcmF0b3I+PShVIGIpIGNvbnN0IHsgcmV0dXJuIHVu
cG9pc29uZWQ8VT4oKSA+PSBiOyB9CisKKyAgICBQb2lzb25lZEltcGwmIG9wZXJhdG9yPShUIHB0
cikKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3BvaXNvbmVkQml0cyA9PSBiLm1fcG9pc29uZWRC
aXRzOworICAgICAgICBtX3BvaXNvbmVkQml0cyA9IHBvaXNvbihwdHIpOworICAgICAgICByZXR1
cm4gKnRoaXM7CiAgICAgfQorICAgIFBvaXNvbmVkSW1wbCYgb3BlcmF0b3I9KGNvbnN0IFBvaXNv
bmVkSW1wbCYpID0gZGVmYXVsdDsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFB0clR5cGUgPSB2
b2lkKiwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8
UHRyVHlwZT46OnZhbHVlPjo6dHlwZT4KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUHRyVHlw
ZSBiKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEsyLCBLMiBrMiwgdHlwZW5hbWUgVDI+CisgICAg
UG9pc29uZWRJbXBsJiBvcGVyYXRvcj0oY29uc3QgUG9pc29uZWRJbXBsPEsyLCBrMiwgVDI+JiBv
dGhlcikKICAgICB7Ci0gICAgICAgIHJldHVybiB1bnBvaXNvbmVkPFB0clR5cGU+KCkgPT0gYjsK
KyAgICAgICAgbV9wb2lzb25lZEJpdHMgPSBwb2lzb248VD4ob3RoZXIudW5wb2lzb25lZCgpKTsK
KyAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAotICAgIFBvaXNvbmVkSW1wbCYgb3BlcmF0
b3I9KFQgcHRyKQorICAgIHZvaWQgc3dhcChQb2lzb25lZEltcGwmIG8pCiAgICAgewotICAgICAg
ICBtX3BvaXNvbmVkQml0cyA9IHBvaXNvbihwdHIpOwotICAgICAgICByZXR1cm4gKnRoaXM7Cisg
ICAgICAgIHN0ZDo6c3dhcChtX3BvaXNvbmVkQml0cywgby5tX3BvaXNvbmVkQml0cyk7CisgICAg
fQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSzIsIEsyIGsyLCB0eXBlbmFtZSBUMj4KKyAgICB2
b2lkIHN3YXAoUG9pc29uZWRJbXBsPEsyLCBrMiwgVDI+JiBvKQorICAgIHsKKyAgICAgICAgVCB0
MSA9IHRoaXMtPnVucG9pc29uZWQoKTsKKyAgICAgICAgVDIgdDIgPSBvLnVucG9pc29uZWQoKTsK
KyAgICAgICAgc3RkOjpzd2FwKHQxLCB0Mik7CisgICAgICAgIG1fcG9pc29uZWRCaXRzID0gcG9p
c29uKHQxKTsKKyAgICAgICAgbyA9IHQyOworICAgIH0KKworICAgIHRlbXBsYXRlPGNsYXNzIFU+
CisgICAgVCBleGNoYW5nZShVJiYgbmV3VmFsdWUpCisgICAgeworICAgICAgICBUIG9sZFZhbHVl
ID0gdW5wb2lzb25lZCgpOworICAgICAgICBtX3BvaXNvbmVkQml0cyA9IHBvaXNvbihzdGQ6OmZv
cndhcmQ8VT4obmV3VmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIG9sZFZhbHVlOwogICAgIH0KLSAg
ICBQb2lzb25lZEltcGwmIG9wZXJhdG9yPShjb25zdCBQb2lzb25lZEltcGwmKSA9IGRlZmF1bHQ7
CiAKIHByaXZhdGU6Ci0jaWYgVVNFKEpTVkFMVUU2NCkKKyNpZiBFTkFCTEUoUE9JU09OKQogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFU+CiAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgUG9pc29uZWRC
aXRzIHBvaXNvbihVIHB0cikgeyByZXR1cm4gcHRyID8gYml0d2lzZV9jYXN0PFBvaXNvbmVkQml0
cz4ocHRyKSBeIGtleSA6IDA7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFUgPSBUPgogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFUgdW5wb2lzb24o
UG9pc29uZWRCaXRzIHBvaXNvbmVkQml0cykgeyByZXR1cm4gcG9pc29uZWRCaXRzID8gYml0d2lz
ZV9jYXN0PFU+KHBvaXNvbmVkQml0cyBeIGtleSkgOiBiaXR3aXNlX2Nhc3Q8VT4oMGxsKTsgfQog
I2Vsc2UKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgogICAgIEFMV0FZU19JTkxJTkUgc3RhdGlj
IFBvaXNvbmVkQml0cyBwb2lzb24oVSBwdHIpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxQb2lzb25l
ZEJpdHM+KHB0cik7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFUgPSBUPgogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFUgdW5wb2lzb24oUG9pc29u
ZWRCaXRzIHBvaXNvbmVkQml0cykgeyByZXR1cm4gYml0d2lzZV9jYXN0PFU+KHBvaXNvbmVkQml0
cyk7IH0KICNlbmRpZgogCiAgICAgUG9pc29uZWRCaXRzIG1fcG9pc29uZWRCaXRzIHsgMCB9Owog
fTsKIAotdGVtcGxhdGU8dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQ+Ci11c2luZyBQb2lzb25l
ZCA9IFBvaXNvbmVkSW1wbDx1aW50cHRyX3QmLCBrZXksIFQ+OwordGVtcGxhdGU8dHlwZW5hbWUg
SzEsIEsxIGsxLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgSzIsIEsyIGsyLCB0eXBlbmFtZSBUMj4K
K2lubGluZSB2b2lkIHN3YXAoUG9pc29uZWRJbXBsPEsxLCBrMSwgVDE+JiBhLCBQb2lzb25lZElt
cGw8SzIsIGsyLCBUMj4mIGIpCit7CisgICAgYS5zd2FwKGIpOworfQogCi0jaWYgVVNFKEpTVkFM
VUU2NCkKLXRlbXBsYXRlPHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVD4KLXVzaW5nIEludDMyUG9p
c29uZWQgPSBQb2lzb25lZEltcGw8dWludHB0cl90LCBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGtl
eSkgPDwgMzIsIFQ+OworV1RGX0VYUE9SVF9QUklWQVRFIHVpbnRwdHJfdCBtYWtlUG9pc29uKCk7
CisKK2lubGluZSBjb25zdGV4cHIgdWludHB0cl90IG1ha2VQb2lzb24odWludDMyX3Qga2V5KQor
eworI2lmIEVOQUJMRShQT0lTT04pCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnRwdHJfdD4o
MHg4MDAwMDAwMCB8IGtleSkgPDwgMzI7CiAjZWxzZQotdGVtcGxhdGU8dWludDMyX3QsIHR5cGVu
YW1lIFQ+Ci11c2luZyBJbnQzMlBvaXNvbmVkID0gUG9pc29uZWRJbXBsPHVpbnRwdHJfdCwgMCwg
VD47CisgICAgcmV0dXJuICh2b2lkKWtleSwgMDsKICNlbmRpZgorfQogCi1XVEZfRVhQT1JUX1BS
SVZBVEUgdWludHB0cl90IG1ha2VQb2lzb24oKTsKK3RlbXBsYXRlPHVpbnRwdHJfdCYga2V5LCB0
eXBlbmFtZSBUPgordXNpbmcgUG9pc29uZWQgPSBQb2lzb25lZEltcGw8dWludHB0cl90Jiwga2V5
LCBUPjsKKwordGVtcGxhdGU8dWludDMyX3Qga2V5LCB0eXBlbmFtZSBUPgordXNpbmcgQ29uc3RF
eHByUG9pc29uZWQgPSBQb2lzb25lZEltcGw8dWludHB0cl90LCBtYWtlUG9pc29uKGtleSksIFQ+
OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAotdXNpbmcgV1RGOjpJbnQzMlBvaXNvbmVkOwordXNp
bmcgV1RGOjpDb25zdEV4cHJQb2lzb25lZDsKIHVzaW5nIFdURjo6UG9pc29uZWQ7CiB1c2luZyBX
VEY6OlBvaXNvbmVkQml0czsKIHVzaW5nIFdURjo6bWFrZVBvaXNvbjsKSW5kZXg6IFRvb2xzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNTgzOCkK
KysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE3
LTEyLTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBGaWxsIG91
dCBzb21lIFBvaXNvbmVkIEFQSXMsIGZpeCBzb21lIGJ1Z3MsIGFuZCBhZGQgc29tZSB0ZXN0cy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDcyNAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYwMDY4ODQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
SkYgQmFzdGllbi4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29uc3RFeHByUG9pc29u
ZWQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkLmNwcDogQWRkZWQuCisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjppbml0aWFsaXplVGVzdFBvaXNvbik6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpURVNUKToKKwogMjAxNy0xMi0xMiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5j
b20+CiAKICAgICAgICAgW1dLXSBBZGQgbW9kZXJuIFdlYktpdCBTUEkgdG8gc2V0IGF1dG8gZmls
bCBidXR0b24gdHlwZSBhbmQgcXVlcnkgaWYgdGhlIGF1dG8gZmlsbCBidXR0b24gaXMgZW5hYmxl
ZApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMjU4MzcpCisr
KyBUb29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC05
NSw2ICs5NSw3IEBAIHNldChUZXN0V1RGX1NPVVJDRVMKICAgICAke1RFU1RXRUJLSVRBUElfRElS
fS9UZXN0cy9XVEYvQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcAogICAgICR7VEVTVFdF
QktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9Db25jdXJyZW50UHRySGFzaFNldC5jcHAKICAgICAke1RF
U1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvQ29uZGl0aW9uLmNwcAorICAgICR7VEVTVFdFQktJ
VEFQSV9ESVJ9L1Rlc3RzL1dURi9Db25zdEV4cHJQb2lzb25lZC5jcHAKICAgICAke1RFU1RXRUJL
SVRBUElfRElSfS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcAogICAgICR7VEVTVFdFQktJ
VEFQSV9ESVJ9L1Rlc3RzL1dURi9EYXRlTWF0aC5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElS
fS9UZXN0cy9XVEYvRGVxdWUuY3BwCkBAIC0xMjIsNiArMTIzLDcgQEAgc2V0KFRlc3RXVEZfU09V
UkNFUwogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9PcHRpb25hbC5jcHAKICAg
ICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvT3B0aW9uU2V0LmNwcAogICAgICR7VEVT
VFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9QYXJraW5nTG90LmNwcAorICAgICR7VEVTVFdFQktJ
VEFQSV9ESVJ9L1Rlc3RzL1dURi9Qb2lzb25lZC5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElS
fS9UZXN0cy9XVEYvUHJpb3JpdHlRdWV1ZS5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9U
ZXN0cy9XVEYvUmVkQmxhY2tUcmVlLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3Rz
L1dURi9SZWYuY3BwCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjI1ODM3
KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTc1Niw2ICs3NTYsOCBAQAogCQlGNkI3QkU5NzE3
NDY5Qjk2MDA4QTM0NDUgLyogYXNzb2NpYXRlLWZvcm0tY29udHJvbHMuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNkI3QkU5NjE3NDY5
QjdFMDA4QTM0NDUgLyogYXNzb2NpYXRlLWZvcm0tY29udHJvbHMuaHRtbCAqLzsgfTsKIAkJRjZG
NDlDNkIxNTU0NUNBNzAwMDdGMzlEIC8qIERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGVfQnVuZGxl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2RjQ5
QzY2MTU1NDVDOEQwMDA3RjM5RCAvKiBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlX0J1bmRsZS5j
cHAgKi87IH07CiAJCUY2RkREREQ2MTQyNDFDNkYwMDRGMTcyOSAvKiBwdXNoLXN0YXRlLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjZG
RERERDUxNDI0MUM0ODAwNEYxNzI5IC8qIHB1c2gtc3RhdGUuaHRtbCAqLzsgfTsKKwkJRkUwNUZB
RUYxRkUwNjQ1QjAwMDkzMjMwIC8qIFBvaXNvbmVkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMDVGQUVFMUZFMDY0M0QwMDA5MzIzMCAvKiBQb2lz
b25lZC5jcHAgKi87IH07CisJCUZFMDVGQUYxMUZFMDhDRDQwMDA5MzIzMCAvKiBDb25zdEV4cHJQ
b2lzb25lZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRTA1RkFGMDFGRTA4Q0NEMDAwOTMyMzAgLyogQ29uc3RFeHByUG9pc29uZWQuY3BwICovOyB9
OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5l
ckl0ZW1Qcm94eSBzZWN0aW9uICovCkBAIC0xODU3LDYgKzE4NTksOCBAQAogCQlGNkY0OUM2NzE1
NTQ1QzhEMDAwN0YzOUQgLyogRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjZGRERERDIxNDI0MUFENDAwNEYxNzI5
IC8qIFByaXZhdGVCcm93c2luZ1B1c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByaXZhdGVCcm93c2luZ1B1c2hTdGF0ZU5v
SGlzdG9yeUNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjZGRERE
RDUxNDI0MUM0ODAwNEYxNzI5IC8qIHB1c2gtc3RhdGUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRt
bDsgcGF0aCA9ICJwdXNoLXN0YXRlLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlGRTA1RkFFRTFGRTA2NDNEMDAwOTMyMzAgLyogUG9pc29uZWQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9pc29uZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlGRTA1RkFGMDFGRTA4Q0NEMDAwOTMyMzAgLyogQ29uc3RFeHByUG9pc29uZWQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29uc3RFeHByUG9pc29u
ZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUI2Rjc0RTFCMkJBNDRFMDA5
RTQ5MjIgLyogTmFrZWRQdHIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTmFrZWRQdHIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZp
bGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCkBAIC0yNjEzLDYgKzI2MTcsNyBAQAogCQkJCUE3QTk2
NkRBMTQwRUNDQzgwMDVFRjlCNCAvKiBDaGVja2VkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwICov
LAogCQkJCTBGMzBDQjVCMUZDRTE3OTIwMDRCNTMyMyAvKiBDb25jdXJyZW50UHRySGFzaFNldC5j
cHAgKi8sCiAJCQkJMEZFQUUzNjcxQjdEMTlDQjAwQ0UxN0YyIC8qIENvbmRpdGlvbi5jcHAgKi8s
CisJCQkJRkUwNUZBRjAxRkUwOENDRDAwMDkzMjMwIC8qIENvbnN0RXhwclBvaXNvbmVkLmNwcCAq
LywKIAkJCQk1MTcxNEVCOTFEMDg3NDE2MDA0NzIzQzQgLyogQ3Jvc3NUaHJlYWRUYXNrLmNwcCAq
LywKIAkJCQkyNkEyQzcyRTE1RTJFNzNDMDA1QjFBMTQgLyogQ1N0cmluZy5jcHAgKi8sCiAJCQkJ
N0FBMDIxQkExQUIwOUVBNzAwNTI5NTNGIC8qIERhdGVNYXRoLmNwcCAqLywKQEAgLTI2NDYsNiAr
MjY1MSw3IEBACiAJCQkJMUFGREU2NTQxOTUzQjJDMDAwQzQ4RkZBIC8qIE9wdGlvbmFsLmNwcCAq
LywKIAkJCQlDRTUwRDhDODFDODY2NUNFMDA3MkVBNUEgLyogT3B0aW9uU2V0LmNwcCAqLywKIAkJ
CQkwRkU0NDc5NzFCNzZGMUUzMDA5NDk4RUIgLyogUGFya2luZ0xvdC5jcHAgKi8sCisJCQkJRkUw
NUZBRUUxRkUwNjQzRDAwMDkzMjMwIC8qIFBvaXNvbmVkLmNwcCAqLywKIAkJCQk1M0VDMjUzRjFF
OTZCQzgwMDAwODMxQjkgLyogUHJpb3JpdHlRdWV1ZS5jcHAgKi8sCiAJCQkJMEZDNkM0Q0IxNDEw
MjdFMDAwNUI3RjBDIC8qIFJlZEJsYWNrVHJlZS5jcHAgKi8sCiAJCQkJOTNBNDI3QUExODBEQTI2
NDAwQ0QyNEQ3IC8qIFJlZi5jcHAgKi8sCkBAIC0zMTkwLDYgKzMxOTYsNyBAQAogCQkJCTdDODNE
RjFEMUQwQTU5MEMwMEZFQkNGMyAvKiBMb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1N0Q1
NEY2MUYzMzk1RDAwMEE5N0FBNyAvKiBMb2dnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4
M0RFRUQxRDBBNTkwQzAwRkVCQ0YzIC8qIE1hdGhFeHRyYXMuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJRkUwNUZBRjExRkUwOENENDAwMDkzMjMwIC8qIENvbnN0RXhwclBvaXNvbmVkLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdDODNERUVGMUQwQTU5MEMwMEZFQkNGMyAvKiBNRDUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0M4M0RFRjExRDBBNTkwQzAwRkVCQ0YzIC8qIE1lZGlhVGltZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVGNjFEMEE1OTBDMDBGRUJDRjMgLyogTWV0YUFsbG9j
YXRvci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMyMTAsNiArMzIxNyw3IEBACiAJCQkJN0M4M0RG
MDUxRDBBNTkwQzAwRkVCQ0YzIC8qIFJ1bkxvb3AuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4
M0RGMjYxRDBBNTkwQzAwRkVCQ0YzIC8qIFNhdHVyYXRlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTFBMzUyNEFFMUQ2M0E0RkIwMDMxNzI5QiAvKiBTY29wZS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTA1RkFFRjFGRTA2NDVCMDAwOTMyMzAgLyogUG9pc29u
ZWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGMTIxRDBBNTkwQzAwRkVCQ0YzIC8qIFNj
b3BlZExhbWJkYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREYzRDFEMEE1OTBDMDBGRUJD
RjMgLyogU2V0Rm9yU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGMkExRDBBNTkw
QzAwRkVCQ0YzIC8qIFNIQTEuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9Db25zdEV4cHJQb2lzb25lZC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29uc3RFeHByUG9pc29uZWQuY3BwCShub25leGlz
dGVudCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NvbnN0RXhwclBvaXNvbmVk
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM1MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1
ZGUgIlJlZkxvZ2dlci5oIgorI2luY2x1ZGUgPG11dGV4PgorI2luY2x1ZGUgPHd0Zi9Qb2lzb25l
ZC5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyBjb25zdCB1aW50MzJf
dCBQb2lzb25BID0gMHhhYWFhOworc3RhdGljIGNvbnN0IHVpbnQzMl90IFBvaXNvbkIgPSAweGJi
YmI7CisKKy8vIEZvciB0aGVzZSB0ZXN0cywgd2UgbmVlZCBhIGJhc2UgY2xhc3MgYW5kIGEgZGVy
aXZlZCBjbGFzcy4gRm9yIHRoaXMgcHVycG9zZSwKKy8vIHdlIHJldXNlIHRoZSBSZWZMb2dnZXIg
YW5kIERlcml2ZWRSZWZMb2dnZXIgY2xhc3Nlcy4KKworVEVTVChXVEZfQ29uc3RFeHByUG9pc29u
ZWQsIEJhc2ljKQoreworICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOworCisgICAgQ29uc3RF
eHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gZW1wdHk7CisgICAgQVNTRVJUX0VRKG51
bGxwdHIsIGVtcHR5LnVucG9pc29uZWQoKSk7CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBv
aXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgm
YSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgJipwdHIpOworICAg
ICAgICBBU1NFUlRfRVEoJmEubmFtZSwgJnB0ci0+bmFtZSk7CisgICAgfQorCisgICAgeworICAg
ICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIgPSAmYTsKKyAg
ICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICB9CisKKyAgICB7Cisg
ICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxID0gJmE7Cisg
ICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKHAxKTsKKyAg
ICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDMocDEpOworICAg
ICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgm
YSwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVk
KCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAg
ICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDMuYml0cygpKTsKKyAgICB9CisKKyAgICB7
CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxID0gJmE7
CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyID0gcDE7
CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+IHAzID0gcDE7
CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9p
c29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7
CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBwMy5iaXRzKCkpOworICAgIH0KKwor
ICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEg
PSAmYTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIg
PSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwor
ICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQ29uc3RF
eHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMgPSAmYTsKKyAgICAgICAgQ29uc3RF
eHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQgPSBXVEZNb3ZlKHAzKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEs
IHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAy
LmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwor
ICAgIH0KKworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9n
Z2VyKj4gcDEgPSAmYTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9n
Z2VyKj4gcDIoV1RGTW92ZShwMSkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29u
ZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKKworICAgICAg
ICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMyA9ICZhOworICAgICAg
ICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwNChXVEZNb3ZlKHAzKSk7
CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZhLCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMo
KSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0
cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEs
IERlcml2ZWRSZWZMb2dnZXIqPiBwMSA9ICZhOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQ
b2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9IHAxOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQ
b2lzb25CLCBSZWZMb2dnZXIqPiBwMyA9IHAxOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVu
cG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKKyAg
ICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9U
UlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRz
KCkgIT0gcDMuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNv
bmVkPFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMSA9ICZhOworICAgICAgICBDb25zdEV4
cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9IFdURk1vdmUocDEpOworICAgICAg
ICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwg
cDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBE
ZXJpdmVkUmVmTG9nZ2VyKj4gcDMgPSAmYTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9p
c29uQiwgUmVmTG9nZ2VyKj4gcDQgPSBXVEZNb3ZlKHAzKTsKKyAgICAgICAgQVNTRVJUX0VRKCZh
LCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQo
KSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CisgICAg
ICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgIH0KKworICAgIHsK
KyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcHRyLmNs
ZWFyKCk7CisgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwdHIudW5wb2lzb25lZCgpKTsKKyAg
ICB9Cit9CisKK1RFU1QoV1RGX0NvbnN0RXhwclBvaXNvbmVkLCBBc3NpZ25tZW50KQoreworICAg
IERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOworICAgIFJlZkxvZ2dlciBiKCJiIik7CisgICAgRGVy
aXZlZFJlZkxvZ2dlciBjKCJjIik7CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVk
PFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8
UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoJmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVu
cG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKKyAg
ICAgICAgcDEgPSBwMjsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOwor
ICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQ29uc3RF
eHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOworICAgICAgICBDb25zdEV4
cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7CisgICAgICAgIEFTU0VSVF9F
USgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNv
bmVkKCkpOworICAgICAgICBwMyA9IHA0OworICAgICAgICBBU1NFUlRfRVEoJmIsIHAzLnVucG9p
c29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKKworICAg
ICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJU
X1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBD
b25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOworICAgICAgICBB
U1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICBwdHIgPSAmYjsKKyAgICAg
ICAgQVNTRVJUX0VRKCZiLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICB9CisKKyAgICB7CisgICAg
ICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAg
ICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHB0ciA9IG51bGxw
dHI7CisgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICB9
CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+
IHAxKCZhKTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4g
cDIoJmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAg
IEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDEgPSBXVEZNb3ZlKHAy
KTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NF
UlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8
UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQ
b2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOworICAg
ICAgICBwMyA9IFdURk1vdmUocDQpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAzLnVucG9pc29u
ZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKKworICAgICAg
ICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RS
VUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBDb25z
dEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7CisgICAgICAgIENvbnN0
RXhwclBvaXNvbmVkPFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMigmYyk7CisgICAgICAg
IEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBw
Mi51bnBvaXNvbmVkKCkpOworICAgICAgICBwMSA9IHAyOworICAgICAgICBBU1NFUlRfRVEoJmMs
IHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDIudW5wb2lzb25lZCgp
KTsKKworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygm
YSk7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIERlcml2ZWRSZWZMb2dnZXIq
PiBwNCgmYyk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZjLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAgICBwMyA9IHA0OworICAg
ICAgICBBU1NFUlRfRVEoJmMsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgm
YywgcDQudW5wb2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0g
cDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7
CisgICAgfQorCisgICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZM
b2dnZXIqPiBwdHIoJmEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkp
OworICAgICAgICBwdHIgPSAmYzsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwdHIudW5wb2lzb25l
ZCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEs
IFJlZkxvZ2dlcio+IHAxKCZhKTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwg
RGVyaXZlZFJlZkxvZ2dlcio+IHAyKCZjKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBv
aXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHAyLnVucG9pc29uZWQoKSk7CisgICAg
ICAgIHAxID0gV1RGTW92ZShwMik7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDEudW5wb2lzb25l
ZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMi51bnBvaXNvbmVkKCkpOworCisgICAgICAg
IENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKKyAgICAgICAg
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgRGVyaXZlZFJlZkxvZ2dlcio+IHA0KCZjKTsKKyAg
ICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEo
JmMsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIHAzID0gV1RGTW92ZShwNCk7CisgICAgICAg
IEFTU0VSVF9FUSgmYywgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBw
NC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5i
aXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAg
ICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dl
cio+IHB0cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7Cisg
ICAgICAgIHB0ciA9IHB0cjsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgp
KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJl
ZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQo
KSk7CisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAor
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW5rbm93bi1wcmFnbWFzIgorI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1Xc2VsZi1tb3ZlIgorI2VuZGlmCisgICAg
ICAgIHB0ciA9IFdURk1vdmUocHRyKTsKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBwb3AKKyNlbmRpZgorICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBv
aXNvbmVkKCkpOworICAgIH0KK30KKworVEVTVChXVEZfQ29uc3RFeHByUG9pc29uZWQsIFN3YXAp
Cit7CisgICAgUmVmTG9nZ2VyIGEoImEiKTsKKyAgICBSZWZMb2dnZXIgYigiYiIpOworCisgICAg
eworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7
CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKCZiKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRf
RVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHAxLnN3YXAocDIpOworICAgICAgICBB
U1NFUlRfRVEoJmIsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIu
dW5wb2lzb25lZCgpKTsKKworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZM
b2dnZXIqPiBwMygmYSk7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxv
Z2dlcio+IHA0KCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwor
ICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIHAzLnN3YXAo
cDQpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFT
U0VSVF9FUSgmYSwgcDQudW5wb2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5i
aXRzKCkgIT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0
LmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMy5iaXRzKCkpOwor
ICAgICAgICBBU1NFUlRfVFJVRShwMi5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9CisKKyAg
ICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZh
KTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoJmIp
OworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VS
VF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgc3dhcChwMSwgcDIpOworICAgICAg
ICBBU1NFUlRfRVEoJmIsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwg
cDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBS
ZWZMb2dnZXIqPiBwMygmYSk7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJl
ZkxvZ2dlcio+IHA0KCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkp
OworICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIHN3YXAo
cDMsIHA0KTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAg
ICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUo
cDEuYml0cygpICE9IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAh
PSBwNC5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDMuYml0cygp
KTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDIuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQor
fQorCitzdGF0aWMgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcG9pc29u
ZWRQdHJGb28oUmVmTG9nZ2VyJiBsb2dnZXIpCit7CisgICAgcmV0dXJuIENvbnN0RXhwclBvaXNv
bmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+KCZsb2dnZXIpOworfQorCitURVNUKFdURl9Db25zdEV4
cHJQb2lzb25lZCwgUmV0dXJuVmFsdWUpCit7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7
CisKKyAgICB7CisgICAgICAgIGF1dG8gcHRyID0gcG9pc29uZWRQdHJGb28oYSk7CisgICAgICAg
IEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwg
JipwdHIpOworICAgICAgICBBU1NFUlRfRVEoJmEubmFtZSwgJnB0ci0+bmFtZSk7CisgICAgfQor
fQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCisKSW5kZXg6IFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZC5jcHAJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMzkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiUmVmTG9nZ2VyLmgiCisjaW5jbHVkZSA8
bXV0ZXg+CisjaW5jbHVkZSA8d3RmL1BvaXNvbmVkLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKKwordWludHB0cl90IGdfdGVzdFBvaXNvbkE7Cit1aW50cHRyX3QgZ190ZXN0UG9pc29u
QjsKKworc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVRlc3RQb2lzb24oKQoreworICAgIHN0YXRpYyBz
dGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2UoaW5p
dGlhbGl6ZU9uY2VGbGFnLCBbXSB7CisgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBnZXQgMiBkaWZm
ZXJlbnQgcG9pc29uIHZhbHVlcy4KKyAgICAgICAgZ190ZXN0UG9pc29uQSA9IG1ha2VQb2lzb24o
KTsKKyAgICAgICAgd2hpbGUgKCFnX3Rlc3RQb2lzb25CIHx8IGdfdGVzdFBvaXNvbkIgPT0gZ190
ZXN0UG9pc29uQSkKKyAgICAgICAgICAgIGdfdGVzdFBvaXNvbkIgPSBtYWtlUG9pc29uKCk7Cisg
ICAgfSk7Cit9CisKKy8vIEZvciB0aGVzZSB0ZXN0cywgd2UgbmVlZCBhIGJhc2UgY2xhc3MgYW5k
IGEgZGVyaXZlZCBjbGFzcy4gRm9yIHRoaXMgcHVycG9zZSwKKy8vIHdlIHJldXNlIHRoZSBSZWZM
b2dnZXIgYW5kIERlcml2ZWRSZWZMb2dnZXIgY2xhc3Nlcy4KKworVEVTVChXVEZfUG9pc29uZWQs
IEJhc2ljKQoreworICAgIGluaXRpYWxpemVUZXN0UG9pc29uKCk7CisgICAgRGVyaXZlZFJlZkxv
Z2dlciBhKCJhIik7CisKKyAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBl
bXB0eTsKKyAgICBBU1NFUlRfRVEobnVsbHB0ciwgZW1wdHkudW5wb2lzb25lZCgpKTsKKworICAg
IHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZhLCAmKnB0cik7CisgICAgICAgIEFTU0VSVF9FUSgmYS5uYW1lLCAmcHRyLT5uYW1lKTsK
KyAgICB9CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dl
cio+IHB0ciA9ICZhOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOwor
ICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2Vy
Kj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4g
cDIocDEpOworCisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfVFJVRShw
MS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKworI2lmIEVOQUJMRShNSVhFRF9QT0lTT04pCisgICAg
ICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHAzKHAxKTsKKyAgICAgICAg
QVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMS5i
aXRzKCkgIT0gcDMuYml0cygpKTsKKyNlbmRpZgorICAgIH0KKworICAgIHsKKyAgICAgICAgUG9p
c29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29u
ZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIgPSBwMTsKKyAgICAgICAgQVNTRVJUX0VR
KCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29u
ZWQoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworCisj
aWYgRU5BQkxFKE1JWEVEX1BPSVNPTikKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwg
UmVmTG9nZ2VyKj4gcDMgPSBwMTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVk
KCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDMuYml0cygpKTsKKyNlbmRp
ZgorICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9n
Z2VyKj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2Vy
Kj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVk
KCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFT
U0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworCisjaWYgRU5BQkxFKE1JWEVEX1BP
SVNPTikKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMgPSAm
YTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQgPSBXVEZN
b3ZlKHAzKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAg
ICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAz
LmJpdHMoKSAhPSBwNC5iaXRzKCkpOworI2VuZGlmCisgICAgfQorCisgICAgeworICAgICAgICBQ
b2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSA9ICZhOworICAgICAgICBQb2lz
b25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMihXVEZNb3ZlKHAxKSk7CisgICAgICAg
IEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBw
Mi51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0
cygpKTsKKworI2lmIEVOQUJMRShNSVhFRF9QT0lTT04pCisgICAgICAgIFBvaXNvbmVkPGdfdGVz
dFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzID0gJmE7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBv
aXNvbkIsIFJlZkxvZ2dlcio+IHA0KFdURk1vdmUocDMpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZh
LCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQo
KSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworI2VuZGlm
CisgICAgfQorCisjaWYgRU5BQkxFKE1JWEVEX1BPSVNPTikKKyAgICB7CisgICAgICAgIFBvaXNv
bmVkPGdfdGVzdFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMSA9ICZhOworICAgICAgICBQ
b2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9IHAxOworICAgICAgICBBU1NF
UlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7
CisKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDMgPSBwMTsK
KyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRf
VFJVRShwMS5iaXRzKCkgIT0gcDMuYml0cygpKTsKKyAgICB9CisjZW5kaWYKKworI2lmIEVOQUJM
RShNSVhFRF9QT0lTT04pCisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBE
ZXJpdmVkUmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29u
QSwgUmVmTG9nZ2VyKj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBw
MS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7
CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworCisgICAgICAg
IFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMyA9ICZhOworICAg
ICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCA9IFdURk1vdmUocDMp
OworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VS
VF9FUSgmYSwgcDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygp
ICE9IHA0LmJpdHMoKSk7CisgICAgfQorI2VuZGlmCisKKyAgICB7CisgICAgICAgIFBvaXNvbmVk
PGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgm
YSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHB0ci5jbGVhcigpOworICAgICAgICBBU1NF
UlRfRVEobnVsbHB0ciwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgfQorfQorCitURVNUKFdURl9Q
b2lzb25lZCwgQXNzaWdubWVudCkKK3sKKyAgICBpbml0aWFsaXplVGVzdFBvaXNvbigpOworICAg
IERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOworICAgIFJlZkxvZ2dlciBiKCJiIik7CisgICAgRGVy
aXZlZFJlZkxvZ2dlciBjKCJjIik7CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBv
aXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29u
QSwgUmVmTG9nZ2VyKj4gcDIoJmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29u
ZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAg
cDEgPSBwMjsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAg
ICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAx
LmJpdHMoKSA9PSBwMi5iaXRzKCkpOworCisjaWYgRU5BQkxFKE1JWEVEX1BPSVNPTikKKyAgICAg
ICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOworICAgICAgICBQ
b2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7CisgICAgICAgIEFTU0VS
VF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBv
aXNvbmVkKCkpOworICAgICAgICBwMyA9IHA0OworICAgICAgICBBU1NFUlRfRVEoJmIsIHAzLnVu
cG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKKyAg
ICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisjZW5kaWYKKyAgICB9
CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0
cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAg
IHB0ciA9ICZiOworICAgICAgICBBU1NFUlRfRVEoJmIsIHB0ci51bnBvaXNvbmVkKCkpOworICAg
IH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4g
cHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAg
ICAgcHRyID0gbnVsbHB0cjsKKyAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHB0ci51bnBvaXNv
bmVkKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwg
UmVmTG9nZ2VyKj4gcDEoJmEpOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZM
b2dnZXIqPiBwMigmYik7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBwMSA9IFdU
Rk1vdmUocDIpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAxLnVucG9pc29uZWQoKSk7CisgICAg
ICAgIEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUo
cDEuYml0cygpID09IHAyLmJpdHMoKSk7CisKKyNpZiBFTkFCTEUoTUlYRURfUE9JU09OKQorICAg
ICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygmYSk7CisgICAgICAg
IFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KCZiKTsKKyAgICAgICAgQVNT
RVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVu
cG9pc29uZWQoKSk7CisgICAgICAgIHAzID0gV1RGTW92ZShwNCk7CisgICAgICAgIEFTU0VSVF9F
USgmYiwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNv
bmVkKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyNl
bmRpZgorICAgIH0KKworI2lmIEVOQUJMRShNSVhFRF9QT0lTT04pCisgICAgeworICAgICAgICBQ
b2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7CisgICAgICAgIFBvaXNv
bmVkPGdfdGVzdFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMigmYyk7CisgICAgICAgIEFT
U0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMi51
bnBvaXNvbmVkKCkpOworICAgICAgICBwMSA9IHAyOworICAgICAgICBBU1NFUlRfRVEoJmMsIHAx
LnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDIudW5wb2lzb25lZCgpKTsK
KyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CisKKyAgICAgICAg
UG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOworICAgICAgICBQb2lz
b25lZDxnX3Rlc3RQb2lzb25CLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDQoJmMpOworICAgICAgICBB
U1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDQu
dW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDMgPSBwNDsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBw
My51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHA0LnVucG9pc29uZWQoKSk7
CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgIH0KKyNl
bmRpZgorCisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIq
PiBwdHIoJmEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAg
ICAgICBwdHIgPSAmYzsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwdHIudW5wb2lzb25lZCgpKTsK
KyAgICB9CisKKyNpZiBFTkFCTEUoTUlYRURfUE9JU09OKQorICAgIHsKKyAgICAgICAgUG9pc29u
ZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOworICAgICAgICBQb2lzb25lZDxn
X3Rlc3RQb2lzb25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDIoJmMpOworICAgICAgICBBU1NFUlRf
RVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDIudW5wb2lz
b25lZCgpKTsKKyAgICAgICAgcDEgPSBXVEZNb3ZlKHAyKTsKKyAgICAgICAgQVNTRVJUX0VRKCZj
LCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHAyLnVucG9pc29uZWQo
KSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworCisgICAg
ICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKKyAgICAgICAg
UG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgRGVyaXZlZFJlZkxvZ2dlcio+IHA0KCZjKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMs
IHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIHAzID0gV1RGTW92ZShwNCk7CisgICAgICAgIEFT
U0VSVF9FUSgmYywgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwNC51
bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygp
KTsKKyAgICB9CisjZW5kaWYKKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29u
QSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lz
b25lZCgpKTsKKyAgICAgICAgcHRyID0gcHRyOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51
bnBvaXNvbmVkKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9p
c29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5w
b2lzb25lZCgpKTsKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3Rp
YyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bmtub3duLXByYWdt
YXMiCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdzZWxmLW1vdmUiCisjZW5k
aWYKKyAgICAgICAgcHRyID0gV1RGTW92ZShwdHIpOworI2lmIENPTVBJTEVSKENMQU5HKQorI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorI2VuZGlmCisgICAgICAgIEFTU0VSVF9FUSgmYSwg
cHRyLnVucG9pc29uZWQoKSk7CisgICAgfQorfQorCitURVNUKFdURl9Qb2lzb25lZCwgU3dhcCkK
K3sKKyAgICBpbml0aWFsaXplVGVzdFBvaXNvbigpOworICAgIFJlZkxvZ2dlciBhKCJhIik7Cisg
ICAgUmVmTG9nZ2VyIGIoImIiKTsKKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9p
c29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25B
LCBSZWZMb2dnZXIqPiBwMigmYik7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25l
ZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBw
MS5zd2FwKHAyKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOworICAg
ICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RS
VUUocDEuYml0cygpICE9IHAyLmJpdHMoKSk7CisKKyNpZiBFTkFCTEUoTUlYRURfUE9JU09OKQor
ICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygmYSk7CisgICAg
ICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KCZiKTsKKyAgICAgICAg
QVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHA0
LnVucG9pc29uZWQoKSk7CisgICAgICAgIHAzLnN3YXAocDQpOworICAgICAgICBBU1NFUlRfRVEo
JmIsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDQudW5wb2lzb25l
ZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAg
ICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAzLmJpdHMoKSk7CisgICAgICAgIEFTU0VS
VF9UUlVFKHAyLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworI2VuZGlmCisgICAgfQorCisgICAgewor
ICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7CisgICAg
ICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKCZiKTsKKyAgICAgICAg
QVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAy
LnVucG9pc29uZWQoKSk7CisjaWYgRU5BQkxFKE1JWEVEX1BPSVNPTikKKyAgICAgICAgc3dhcChw
MSwgcDIpOworI2Vsc2UKKyAgICAgICAgc3RkOjpzd2FwKHAxLCBwMik7CisjZW5kaWYKKyAgICAg
ICAgQVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEs
IHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAy
LmJpdHMoKSk7CisKKyNpZiBFTkFCTEUoTUlYRURfUE9JU09OKQorICAgICAgICBQb2lzb25lZDxn
X3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygmYSk7CisgICAgICAgIFBvaXNvbmVkPGdfdGVz
dFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51
bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7Cisg
ICAgICAgIHN3YXAocDMsIHA0KTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMy51bnBvaXNvbmVk
KCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAg
QVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVF
KHAxLmJpdHMoKSA9PSBwMy5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMi5iaXRzKCkg
IT0gcDQuYml0cygpKTsKKyNlbmRpZgorICAgIH0KK30KKworc3RhdGljIFBvaXNvbmVkPGdfdGVz
dFBvaXNvbkEsIFJlZkxvZ2dlcio+IHBvaXNvbmVkUHRyRm9vKFJlZkxvZ2dlciYgbG9nZ2VyKQor
eworICAgIHJldHVybiBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPigmbG9nZ2Vy
KTsKK30KKworVEVTVChXVEZfUG9pc29uZWQsIFJldHVyblZhbHVlKQoreworICAgIGluaXRpYWxp
emVUZXN0UG9pc29uKCk7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CisKKyAgICB7Cisg
ICAgICAgIGF1dG8gcHRyID0gcG9pc29uZWRQdHJGb28oYSk7CisgICAgICAgIEFTU0VSVF9FUSgm
YSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgJipwdHIpOworICAg
ICAgICBBU1NFUlRfRVEoJmEubmFtZSwgJnB0ci0+bmFtZSk7CisgICAgfQorfQorCit9IC8vIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329212</attachid>
            <date>2017-12-13 00:20:04 -0800</date>
            <delta_ts>2017-12-13 01:00:34 -0800</delta_ts>
            <desc>patch for landing.</desc>
            <filename>bug-180724.patch</filename>
            <type>text/plain</type>
            <size>42517</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI1ODM3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDE3LTEyLTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBG
aWxsIG91dCBzb21lIFBvaXNvbmVkIEFQSXMsIGZpeCBzb21lIGJ1Z3MsIGFuZCBhZGQgc29tZSB0
ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
MDcyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYwMDY4ODQ+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgSkYgQmFzdGllbi4KKworICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlv
blRhYmxlLmg6CisKIDIwMTctMTItMTIgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4K
IAogICAgICAgICBTdHJ1Y3R1cmUsIFN0cnVjdHVyZVJhcmVEYXRhLCBhbmQgUHJvcGVydHlUYWJs
ZSBzaG91bGQgYmUgaW4gSXNvU3Vic3BhY2VzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaAkocmV2aXNp
b24gMjI1ODM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJh
bnNpdGlvblRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTg3LDggKzE4Nyw4IEBA
IHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgU2luZ2xlU2xvdFRyYW5zaXRp
b25XZWFrT3duZXI7Ci0gICAgdXNpbmcgUG9pc29uZWRUcmFuc2l0aW9uTWFwUHRyID0gSW50MzJQ
b2lzb25lZDxUcmFuc2l0aW9uTWFwUG9pc29uLCBUcmFuc2l0aW9uTWFwKj47Ci0gICAgdXNpbmcg
UG9pc29uZWRXZWFrSW1wbFB0ciA9IEludDMyUG9pc29uZWQ8V2Vha0ltcGxQb2lzb24sIFdlYWtJ
bXBsKj47CisgICAgdXNpbmcgUG9pc29uZWRUcmFuc2l0aW9uTWFwUHRyID0gQ29uc3RFeHByUG9p
c29uZWQ8VHJhbnNpdGlvbk1hcFBvaXNvbiwgVHJhbnNpdGlvbk1hcCo+OworICAgIHVzaW5nIFBv
aXNvbmVkV2Vha0ltcGxQdHIgPSBDb25zdEV4cHJQb2lzb25lZDxXZWFrSW1wbFBvaXNvbiwgV2Vh
a0ltcGwqPjsKIAogICAgIGJvb2wgaXNVc2luZ1NpbmdsZVNsb3QoKSBjb25zdAogICAgIHsKSW5k
ZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyMjU4MzcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDE3LTEyLTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFw
cGxlLmNvbT4KKworICAgICAgICBGaWxsIG91dCBzb21lIFBvaXNvbmVkIEFQSXMsIGZpeCBzb21l
IGJ1Z3MsIGFuZCBhZGQgc29tZSB0ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4MDcyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYwMDY4
ODQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSkYgQmFzdGllbi4KKworICAgICAgICBBbHNvIHJl
bmFtZSBJbnQzMlBvaXNvbmVkIHRvIENvbnN0RXhwclBvaXNvbmVkLiAgVGhlIGtleSBpdCB0YWtl
cyBpcyBhY3R1YWxseSBhCisgICAgICAgIHVpbnQzMl90LiAgU28sIEludDMyIGlzIHJlYWxseSBh
IG1pc25vbWVyLiAgSW4gYWRkaXRpb24sIHRoZSBrZXkgbmVlZHMgdG8gYmUgYQorICAgICAgICBj
b25zdGV4cHIuICBTbywgQ29uc3RFeHByUG9pc29uZWQgaXMgYSBiZXR0ZXIgbmFtZSBmb3IgaXQu
CisKKyAgICAgICAgKiB3dGYvUG9pc29uZWQuY3BwOgorICAgICAgICAoV1RGOjptYWtlUG9pc29u
KToKKyAgICAgICAgKiB3dGYvUG9pc29uZWQuaDoKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBs
SGVscGVyOjphc1JlZmVyZW5jZSk6CisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6UG9pc29u
ZWRJbXBsKToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpjbGVhcik6CisgICAgICAgIChX
VEY6OlBvaXNvbmVkSW1wbDo6b3BlcmF0b3IqIGNvbnN0KToKKyAgICAgICAgKFdURjo6UG9pc29u
ZWRJbXBsOjpvcGVyYXRvci0+IGNvbnN0KToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpv
cGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvciE9
IGNvbnN0KToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvcjwgY29uc3QpOgor
ICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6Om9wZXJhdG9yPD0gY29uc3QpOgorICAgICAgICAo
V1RGOjpQb2lzb25lZEltcGw6Om9wZXJhdG9yPiBjb25zdCk6CisgICAgICAgIChXVEY6OlBvaXNv
bmVkSW1wbDo6b3BlcmF0b3I+PSBjb25zdCk6CisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6
b3BlcmF0b3I9KToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpzd2FwKToKKyAgICAgICAg
KFdURjo6UG9pc29uZWRJbXBsOjpleGNoYW5nZSk6CisgICAgICAgIChXVEY6OnN3YXApOgorICAg
ICAgICAoV1RGOjptYWtlUG9pc29uKToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVy
YXRvcj09KTogRGVsZXRlZC4KKwogMjAxNy0xMi0xMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbSlNDXSBJbXBsZW1lbnQgb3B0aW1pemVkIFdlYWtN
YXAgYW5kIFdlYWtTZXQKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVkLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Qb2lzb25lZC5jcHAJKHJldmlzaW9uIDIyNTgzNykKKysr
IFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMs
NyBAQCBuYW1lc3BhY2UgV1RGIHsKIHVpbnRwdHJfdCBtYWtlUG9pc29uKCkKIHsKICAgICB1aW50
cHRyX3Qga2V5ID0gY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKTsKLSNpZiBVU0UoSlNW
QUxVRTY0KSAmJiAhT1MoV0lORE9XUykKKyNpZiBFTkFCTEUoUE9JU09OKQogICAgIGtleSA9IChr
ZXkgPDwgMzIpIF4gKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oY3J5cHRvZ3JhcGhpY2FsbHlSYW5k
b21OdW1iZXIoKSkgPDwgMyk7CiAgICAgLy8gRW5zdXJlIHRoYXQgdGhlIHBvaXNvbmVkIGJpdHMg
KHBvaW50ZXIgXiBrZXkpIGRvIG5vdCBtYWtlIGEgdmFsaWQgcG9pbnRlciBhbmQKICAgICAvLyBj
YW5ub3QgYmUgMC4gV2UgZW5zdXJlIHRoYXQgaXQgaXMgemVybyBzbyB0aGF0IHRoZSBwb2lzb25l
ZCBiaXRzIGNhbiBhbHNvIGJlCkBAIC01MSw0ICs1MSwzIEBAIHVpbnRwdHJfdCBtYWtlUG9pc29u
KCkKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCi0KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BvaXNv
bmVkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUG9pc29uZWQuaAkocmV2aXNpb24g
MjI1ODM3KQorKysgU291cmNlL1dURi93dGYvUG9pc29uZWQuaAkod29ya2luZyBjb3B5KQpAQCAt
MjcsMTEgKzI3LDM1IEBACiAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogCisjZGVmaW5l
IEVOQUJMRV9QT0lTT04gMQogI2RlZmluZSBFTkFCTEVfUE9JU09OX0FTU0VSVFMgMAogCisvLyBP
bGRlciB2ZXJzaW9ucyBvZiBnY2MgYW5kIGNsYW5nIGhhdmUgYSBidWcgd2hpY2ggcmVzdWx0cyBp
biBidWlsZCBmYWlsdXJlcworLy8gd2hlbiB1c2luZyB0ZW1wbGF0ZSBtZXRob2RzIHRoYXQgdGFr
ZSBhbiBhcmd1bWVudCBvZiBQb2lzb25lZEltcGw8SzIsIGsyLCBUMj4KKy8vIHdoZW4gdGhlIEtl
eVR5cGUgaXMgYSB1aW50cHRyX3QgKGkuZS4gd2hlbiB3ZSdyZSB1c2luZyB0aGUgUG9pc29uZWQg
dmFyaWFudAorLy8gb2YgUG9pc29uZWRJbXBsKS4gVGhpcyBidWcgZG9lcyBub3QgbWFuaWZlc3Qg
Zm9yIHRoZSBDb25zdEV4cHJQb2lzb25lZCB2YXJpYW50LgorLy8gSW4gcHJhY3RpY2UsIHdlIHdp
bGwgbGlrZWx5IG9ubHkgdXNlIHRoZXNlIG1ldGhvZHMgZm9yIGluc3RhbnRpYXRpb25zIG9mIHRo
ZQorLy8gQ29uc3RFeHByUG9pc29uZWQgdmFyaWFudC4gSGVuY2UuIHRoaXMgYnVnIGlzIG5vdCBh
IHNob3cgc3RvcHBlci4KKy8vIFRoYXQgc2FpZCwgd2UnbGwgZGVmaW5lIEVOQUJMRV9NSVhFRF9Q
T0lTT04gYWNjb3JkaW5nbHkgc28gdGhhdCB3ZSBjYW4gdXNlCisvLyBpdCB0byBkaXNhYmxlIHRo
ZSBhZmZlY3RlZCB0ZXN0cyB3aGVuIGJ1aWxkaW5nIHdpdGggb2xkIGNvbXBpbGVycy4KKyNpZiBk
ZWZpbmVkKF9fY2xhbmdfbWFqb3JfXykgJiYgX19jbGFuZ19tYWpvcl9fID49IDUKKyNkZWZpbmUg
RU5BQkxFX01JWEVEX1BPSVNPTiAxIC8vIEVuYWJsZSBmb3IgY2xhbmcgNS4wLjAgYW5kIG5ld2Vy
LgorI2VsaWYgZGVmaW5lZChfX0dOVUNfXykKKyNpbmNsdWRlIDxmZWF0dXJlcy5oPgorI2lmIF9f
R05VQ19QUkVSRVEoNywyKQorI2RlZmluZSBFTkFCTEVfTUlYRURfUE9JU09OIDEgLy8gRW5hYmxl
IGZvciBnY2MgNy4yIGFuZCBuZXdlci4KKyNlbmRpZiAvLyBfX0dOVUNfUFJFUkVRKDcsMikKKyNl
bmRpZiAvLyAhZGVmaW5lZChfX0dOVUNfXykKKworI2lmbmRlZiBFTkFCTEVfTUlYRURfUE9JU09O
CisjZGVmaW5lIEVOQUJMRV9NSVhFRF9QT0lTT04gMCAvLyBEaXNhYmxlIGZvciBldmVyeXRoaW5n
IGVsc2UuCisjZW5kaWYKKwogLy8gTm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgZm9yIDMyLWJpdCBv
ciBPUyhXSU5ET1dTKSBidWlsZHMgKGJlY2F1c2Ugb2YgbWlzc2luZyBsbGludCBzdXBwb3J0KS4K
IC8vIE1ha2Ugc3VyZSBpdCdzIGRpc2FibGVkLgogI2lmIFVTRShKU1ZBTFVFMzJfNjQpIHx8IE9T
KFdJTkRPV1MpCisjdW5kZWYgRU5BQkxFX1BPSVNPTgorI2RlZmluZSBFTkFCTEVfUE9JU09OIDAK
ICN1bmRlZiBFTkFCTEVfUE9JU09OX0FTU0VSVFMKICNkZWZpbmUgRU5BQkxFX1BPSVNPTl9BU1NF
UlRTIDAKICNlbmRpZgpAQCAtNDAsMTcgKzY0LDQ3IEBAIG5hbWVzcGFjZSBXVEYgewogCiB1c2lu
ZyBQb2lzb25lZEJpdHMgPSB1aW50cHRyX3Q7CiAKK25hbWVzcGFjZSBQb2lzb25lZEltcGxIZWxw
ZXIgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IGlzRnVuY3Rpb25Qb2ludGVyIDog
c3RkOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCBzdGQ6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0
ZDo6cmVtb3ZlX3BvaW50ZXI8VD46OnR5cGU+Ojp2YWx1ZT4geyB9OworCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorc3RydWN0IGlzVm9pZFBvaW50ZXIgOiBzdGQ6OmludGVncmFsX2NvbnN0YW50PGJv
b2wsIHN0ZDo6aXNfdm9pZDx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPFQ+Ojp0eXBlPjo6
dmFsdWU+IHsgfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBpc0NvbnZlcnRpYmxl
VG9SZWZlcmVuY2UgOiBzdGQ6OmludGVncmFsX2NvbnN0YW50PGJvb2wsICFpc0Z1bmN0aW9uUG9p
bnRlcjxUPjo6dmFsdWUgJiYgIWlzVm9pZFBvaW50ZXI8VD46OnZhbHVlPiB7IH07CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+Cit0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PCFpc0NvbnZlcnRpYmxl
VG9SZWZlcmVuY2U8VD46OnZhbHVlLCBpbnQ+JgorYXNSZWZlcmVuY2UoVCkgeyBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit0eXBlbmFtZSBz
dGQ6OmVuYWJsZV9pZl90PGlzQ29udmVydGlibGVUb1JlZmVyZW5jZTxUPjo6dmFsdWUsIHR5cGVu
YW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8VD46OnR5cGU+JgorYXNSZWZlcmVuY2UoVCBwdHIpIHsg
cmV0dXJuICpwdHI7IH0KKworfSAvLyBuYW1lc3BhY2UgUG9pc29uZWRJbXBsSGVscGVyCisKIHRl
bXBsYXRlPHR5cGVuYW1lIEtleVR5cGUsIEtleVR5cGUga2V5LCB0eXBlbmFtZSBULCB0eXBlbmFt
ZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZT4+CiBjbGFzcyBQ
b2lzb25lZEltcGwgewogcHVibGljOgogICAgIFBvaXNvbmVkSW1wbCgpIHsgfQogCi0gICAgZXhw
bGljaXQgUG9pc29uZWRJbXBsKFQgcHRyKQorICAgIFBvaXNvbmVkSW1wbChUIHB0cikKICAgICAg
ICAgOiBtX3BvaXNvbmVkQml0cyhwb2lzb24ocHRyKSkKICAgICB7IH0KIAogICAgIFBvaXNvbmVk
SW1wbChjb25zdCBQb2lzb25lZEltcGwmKSA9IGRlZmF1bHQ7CiAKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBLMiwgSzIgazIsIHR5cGVuYW1lIFQyPgorICAgIFBvaXNvbmVkSW1wbChjb25zdCBQb2lz
b25lZEltcGw8SzIsIGsyLCBUMj4mIG90aGVyKQorICAgICAgICA6IG1fcG9pc29uZWRCaXRzKHBv
aXNvbjxUPihvdGhlci51bnBvaXNvbmVkKCkpKQorICAgIHsgfQorCisgICAgUG9pc29uZWRJbXBs
KFBvaXNvbmVkSW1wbCYmIG90aGVyKQorICAgICAgICA6IG1fcG9pc29uZWRCaXRzKFdURk1vdmUo
b3RoZXIubV9wb2lzb25lZEJpdHMpKQorICAgIHsgfQorCiAgICAgZXhwbGljaXQgUG9pc29uZWRJ
bXBsKFBvaXNvbmVkQml0cyBwb2lzb25lZEJpdHMpCiAgICAgICAgIDogbV9wb2lzb25lZEJpdHMo
cG9pc29uZWRCaXRzKQogICAgIHsgfQpAQCAtNzIsNyArMTI2LDEwIEBAIHB1YmxpYzoKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4KICAgICBVIHVucG9pc29uZWQoKSBjb25zdCB7IHJldHVy
biB1bnBvaXNvbjxVPihtX3BvaXNvbmVkQml0cyk7IH0KIAotICAgIEFMV0FZU19JTkxJTkUgVCBv
cGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gdW5wb2lzb248VD4obV9wb2lzb25lZEJpdHMpOyB9
CisgICAgdm9pZCBjbGVhcigpIHsgbV9wb2lzb25lZEJpdHMgPSAwOyB9CisKKyAgICBhdXRvJiBv
cGVyYXRvciooKSBjb25zdCB7IEFTU0VSVChtX3BvaXNvbmVkQml0cyk7IHJldHVybiBQb2lzb25l
ZEltcGxIZWxwZXI6OmFzUmVmZXJlbmNlKHVucG9pc29uKG1fcG9pc29uZWRCaXRzKSk7IH0KKyAg
ICBBTFdBWVNfSU5MSU5FIFQgb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIHVucG9pc29uKG1f
cG9pc29uZWRCaXRzKTsgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFBvaXNvbmVkQml0
cz4KICAgICBVIGJpdHMoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8VT4obV9wb2lzb25l
ZEJpdHMpOyB9CkBAIC04MCw1NiArMTM3LDk5IEBAIHB1YmxpYzoKICAgICBib29sIG9wZXJhdG9y
ISgpIGNvbnN0IHsgcmV0dXJuICFtX3BvaXNvbmVkQml0czsgfQogICAgIGV4cGxpY2l0IG9wZXJh
dG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fcG9pc29uZWRCaXRzOyB9CiAKLSAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgUG9pc29uZWRJbXBsJiBiKSBjb25zdAorICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRz
ID09IGIubV9wb2lzb25lZEJpdHM7IH0KKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUG9pc29u
ZWRJbXBsJiBiKSBjb25zdCB7IHJldHVybiBtX3BvaXNvbmVkQml0cyAhPSBiLm1fcG9pc29uZWRC
aXRzOyB9CisgICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgUG9pc29uZWRJbXBsJiBiKSBjb25zdCB7
IHJldHVybiBtX3BvaXNvbmVkQml0cyA8IGIubV9wb2lzb25lZEJpdHM7IH0KKyAgICBib29sIG9w
ZXJhdG9yPD0oY29uc3QgUG9pc29uZWRJbXBsJiBiKSBjb25zdCB7IHJldHVybiBtX3BvaXNvbmVk
Qml0cyA8PSBiLm1fcG9pc29uZWRCaXRzOyB9CisgICAgYm9vbCBvcGVyYXRvcj4oY29uc3QgUG9p
c29uZWRJbXBsJiBiKSBjb25zdCB7IHJldHVybiBtX3BvaXNvbmVkQml0cyA+IGIubV9wb2lzb25l
ZEJpdHM7IH0KKyAgICBib29sIG9wZXJhdG9yPj0oY29uc3QgUG9pc29uZWRJbXBsJiBiKSBjb25z
dCB7IHJldHVybiBtX3BvaXNvbmVkQml0cyA+PSBiLm1fcG9pc29uZWRCaXRzOyB9CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIG9wZXJhdG9yPT0oVSBiKSBjb25zdCB7IHJldHVybiB1
bnBvaXNvbmVkPFU+KCkgPT0gYjsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgb3Bl
cmF0b3IhPShVIGIpIGNvbnN0IHsgcmV0dXJuIHVucG9pc29uZWQ8VT4oKSAhPSBiOyB9CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBvcGVyYXRvcjwoVSBiKSBjb25zdCB7IHJldHVybiB1
bnBvaXNvbmVkPFU+KCkgPCBiOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBvcGVy
YXRvcjw9KFUgYikgY29uc3QgeyByZXR1cm4gdW5wb2lzb25lZDxVPigpIDw9IGI7IH0KKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIG9wZXJhdG9yPihVIGIpIGNvbnN0IHsgcmV0dXJuIHVu
cG9pc29uZWQ8VT4oKSA+IGI7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIG9wZXJh
dG9yPj0oVSBiKSBjb25zdCB7IHJldHVybiB1bnBvaXNvbmVkPFU+KCkgPj0gYjsgfQorCisgICAg
UG9pc29uZWRJbXBsJiBvcGVyYXRvcj0oVCBwdHIpCiAgICAgewotICAgICAgICByZXR1cm4gbV9w
b2lzb25lZEJpdHMgPT0gYi5tX3BvaXNvbmVkQml0czsKKyAgICAgICAgbV9wb2lzb25lZEJpdHMg
PSBwb2lzb24ocHRyKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KKyAgICBQb2lzb25l
ZEltcGwmIG9wZXJhdG9yPShjb25zdCBQb2lzb25lZEltcGwmKSA9IGRlZmF1bHQ7CiAKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBQdHJUeXBlID0gdm9pZCosIHR5cGVuYW1lID0gdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFB0clR5cGU+Ojp2YWx1ZT46OnR5cGU+Ci0gICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFB0clR5cGUgYikKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBL
MiwgSzIgazIsIHR5cGVuYW1lIFQyPgorICAgIFBvaXNvbmVkSW1wbCYgb3BlcmF0b3I9KGNvbnN0
IFBvaXNvbmVkSW1wbDxLMiwgazIsIFQyPiYgb3RoZXIpCiAgICAgewotICAgICAgICByZXR1cm4g
dW5wb2lzb25lZDxQdHJUeXBlPigpID09IGI7CisgICAgICAgIG1fcG9pc29uZWRCaXRzID0gcG9p
c29uPFQ+KG90aGVyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9
CiAKLSAgICBQb2lzb25lZEltcGwmIG9wZXJhdG9yPShUIHB0cikKKyAgICB2b2lkIHN3YXAoUG9p
c29uZWRJbXBsJiBvKQogICAgIHsKLSAgICAgICAgbV9wb2lzb25lZEJpdHMgPSBwb2lzb24ocHRy
KTsKLSAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICBzdGQ6OnN3YXAobV9wb2lzb25lZEJp
dHMsIG8ubV9wb2lzb25lZEJpdHMpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEsy
LCBLMiBrMiwgdHlwZW5hbWUgVDI+CisgICAgdm9pZCBzd2FwKFBvaXNvbmVkSW1wbDxLMiwgazIs
IFQyPiYgbykKKyAgICB7CisgICAgICAgIFQgdDEgPSB0aGlzLT51bnBvaXNvbmVkKCk7CisgICAg
ICAgIFQyIHQyID0gby51bnBvaXNvbmVkKCk7CisgICAgICAgIHN0ZDo6c3dhcCh0MSwgdDIpOwor
ICAgICAgICBtX3BvaXNvbmVkQml0cyA9IHBvaXNvbih0MSk7CisgICAgICAgIG8gPSB0MjsKKyAg
ICB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBVPgorICAgIFQgZXhjaGFuZ2UoVSYmIG5ld1ZhbHVl
KQorICAgIHsKKyAgICAgICAgVCBvbGRWYWx1ZSA9IHVucG9pc29uZWQoKTsKKyAgICAgICAgbV9w
b2lzb25lZEJpdHMgPSBwb2lzb24oc3RkOjpmb3J3YXJkPFU+KG5ld1ZhbHVlKSk7CisgICAgICAg
IHJldHVybiBvbGRWYWx1ZTsKICAgICB9Ci0gICAgUG9pc29uZWRJbXBsJiBvcGVyYXRvcj0oY29u
c3QgUG9pc29uZWRJbXBsJikgPSBkZWZhdWx0OwogCiBwcml2YXRlOgotI2lmIFVTRShKU1ZBTFVF
NjQpCisjaWYgRU5BQkxFKFBPSVNPTikKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgogICAgIEFM
V0FZU19JTkxJTkUgc3RhdGljIFBvaXNvbmVkQml0cyBwb2lzb24oVSBwdHIpIHsgcmV0dXJuIHB0
ciA/IGJpdHdpc2VfY2FzdDxQb2lzb25lZEJpdHM+KHB0cikgXiBrZXkgOiAwOyB9Ci0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgVT4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4KICAgICBBTFdB
WVNfSU5MSU5FIHN0YXRpYyBVIHVucG9pc29uKFBvaXNvbmVkQml0cyBwb2lzb25lZEJpdHMpIHsg
cmV0dXJuIHBvaXNvbmVkQml0cyA/IGJpdHdpc2VfY2FzdDxVPihwb2lzb25lZEJpdHMgXiBrZXkp
IDogYml0d2lzZV9jYXN0PFU+KDBsbCk7IH0KICNlbHNlCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VT4KICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBQb2lzb25lZEJpdHMgcG9pc29uKFUgcHRyKSB7
IHJldHVybiBiaXR3aXNlX2Nhc3Q8UG9pc29uZWRCaXRzPihwdHIpOyB9Ci0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgVT4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4KICAgICBBTFdBWVNfSU5M
SU5FIHN0YXRpYyBVIHVucG9pc29uKFBvaXNvbmVkQml0cyBwb2lzb25lZEJpdHMpIHsgcmV0dXJu
IGJpdHdpc2VfY2FzdDxVPihwb2lzb25lZEJpdHMpOyB9CiAjZW5kaWYKIAogICAgIFBvaXNvbmVk
Qml0cyBtX3BvaXNvbmVkQml0cyB7IDAgfTsKIH07CiAKLXRlbXBsYXRlPHVpbnRwdHJfdCYga2V5
LCB0eXBlbmFtZSBUPgotdXNpbmcgUG9pc29uZWQgPSBQb2lzb25lZEltcGw8dWludHB0cl90Jiwg
a2V5LCBUPjsKK3RlbXBsYXRlPHR5cGVuYW1lIEsxLCBLMSBrMSwgdHlwZW5hbWUgVDEsIHR5cGVu
YW1lIEsyLCBLMiBrMiwgdHlwZW5hbWUgVDI+CitpbmxpbmUgdm9pZCBzd2FwKFBvaXNvbmVkSW1w
bDxLMSwgazEsIFQxPiYgYSwgUG9pc29uZWRJbXBsPEsyLCBrMiwgVDI+JiBiKQoreworICAgIGEu
c3dhcChiKTsKK30KIAotI2lmIFVTRShKU1ZBTFVFNjQpCi10ZW1wbGF0ZTx1aW50MzJfdCBrZXks
IHR5cGVuYW1lIFQ+Ci11c2luZyBJbnQzMlBvaXNvbmVkID0gUG9pc29uZWRJbXBsPHVpbnRwdHJf
dCwgc3RhdGljX2Nhc3Q8dWludHB0cl90PihrZXkpIDw8IDMyLCBUPjsKK1dURl9FWFBPUlRfUFJJ
VkFURSB1aW50cHRyX3QgbWFrZVBvaXNvbigpOworCitpbmxpbmUgY29uc3RleHByIHVpbnRwdHJf
dCBtYWtlUG9pc29uKHVpbnQzMl90IGtleSkKK3sKKyNpZiBFTkFCTEUoUE9JU09OKQorICAgIHJl
dHVybiBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDB4ODAwMDAwMDAgfCBrZXkpIDw8IDMyOwogI2Vs
c2UKLXRlbXBsYXRlPHVpbnQzMl90LCB0eXBlbmFtZSBUPgotdXNpbmcgSW50MzJQb2lzb25lZCA9
IFBvaXNvbmVkSW1wbDx1aW50cHRyX3QsIDAsIFQ+OworICAgIHJldHVybiAodm9pZClrZXksIDA7
CiAjZW5kaWYKK30KIAotV1RGX0VYUE9SVF9QUklWQVRFIHVpbnRwdHJfdCBtYWtlUG9pc29uKCk7
Cit0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4KK3VzaW5nIFBvaXNvbmVkID0g
UG9pc29uZWRJbXBsPHVpbnRwdHJfdCYsIGtleSwgVD47CisKK3RlbXBsYXRlPHVpbnQzMl90IGtl
eSwgdHlwZW5hbWUgVD4KK3VzaW5nIENvbnN0RXhwclBvaXNvbmVkID0gUG9pc29uZWRJbXBsPHVp
bnRwdHJfdCwgbWFrZVBvaXNvbihrZXkpLCBUPjsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKLXVz
aW5nIFdURjo6SW50MzJQb2lzb25lZDsKK3VzaW5nIFdURjo6Q29uc3RFeHByUG9pc29uZWQ7CiB1
c2luZyBXVEY6OlBvaXNvbmVkOwogdXNpbmcgV1RGOjpQb2lzb25lZEJpdHM7CiB1c2luZyBXVEY6
Om1ha2VQb2lzb247CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyMjU4MzgpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxNy0xMi0xMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBh
cHBsZS5jb20+CisKKyAgICAgICAgRmlsbCBvdXQgc29tZSBQb2lzb25lZCBBUElzLCBmaXggc29t
ZSBidWdzLCBhbmQgYWRkIHNvbWUgdGVzdHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODA3MjQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM2MDA2
ODg0PgorCisgICAgICAgIFJldmlld2VkIGJ5IEpGIEJhc3RpZW4uCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0NvbnN0RXhwclBvaXNvbmVkLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lz
b25lZC5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6aW5pdGlhbGl6ZVRlc3RQ
b2lzb24pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTctMTItMTIgIERh
bmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtXS10gQWRkIG1vZGVy
biBXZWJLaXQgU1BJIHRvIHNldCBhdXRvIGZpbGwgYnV0dG9uIHR5cGUgYW5kIHF1ZXJ5IGlmIHRo
ZSBhdXRvIGZpbGwgYnV0dG9uIGlzIGVuYWJsZWQKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkv
Q01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxp
c3RzLnR4dAkocmV2aXNpb24gMjI1ODM3KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxp
c3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtOTUsNiArOTUsNyBAQCBzZXQoVGVzdFdURl9TT1VS
Q0VTCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0NoZWNrZWRBcml0aG1ldGlj
T3BlcmF0aW9ucy5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvQ29uY3Vy
cmVudFB0ckhhc2hTZXQuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0Nv
bmRpdGlvbi5jcHAKKyAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvQ29uc3RFeHBy
UG9pc29uZWQuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0Nyb3NzVGhy
ZWFkVGFzay5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvRGF0ZU1hdGgu
Y3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL0RlcXVlLmNwcApAQCAtMTIy
LDYgKzEyMyw3IEBAIHNldChUZXN0V1RGX1NPVVJDRVMKICAgICAke1RFU1RXRUJLSVRBUElfRElS
fS9UZXN0cy9XVEYvT3B0aW9uYWwuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMv
V1RGL09wdGlvblNldC5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvUGFy
a2luZ0xvdC5jcHAKKyAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvUG9pc29uZWQu
Y3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1ByaW9yaXR5UXVldWUuY3Bw
CiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1JlZEJsYWNrVHJlZS5jcHAKICAg
ICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvUmVmLmNwcApJbmRleDogVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDIyNTgzNykKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03
NTYsNiArNzU2LDggQEAKIAkJRjZCN0JFOTcxNzQ2OUI5NjAwOEEzNDQ1IC8qIGFzc29jaWF0ZS1m
b3JtLWNvbnRyb2xzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjZCN0JFOTYxNzQ2OUI3RTAwOEEzNDQ1IC8qIGFzc29jaWF0ZS1mb3Jt
LWNvbnRyb2xzLmh0bWwgKi87IH07CiAJCUY2RjQ5QzZCMTU1NDVDQTcwMDA3RjM5RCAvKiBET01X
aW5kb3dFeHRlbnNpb25Ob0NhY2hlX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNkY0OUM2NjE1NTQ1QzhEMDAwN0YzOUQgLyogRE9NV2lu
ZG93RXh0ZW5zaW9uTm9DYWNoZV9CdW5kbGUuY3BwICovOyB9OwogCQlGNkZERERENjE0MjQxQzZG
MDA0RjE3MjkgLyogcHVzaC1zdGF0ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2RkREREQ1MTQyNDFDNDgwMDRGMTcyOSAvKiBwdXNo
LXN0YXRlLmh0bWwgKi87IH07CisJCUZFMDVGQUVGMUZFMDY0NUIwMDA5MzIzMCAvKiBQb2lzb25l
ZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTA1
RkFFRTFGRTA2NDNEMDAwOTMyMzAgLyogUG9pc29uZWQuY3BwICovOyB9OworCQlGRTA1RkFGMTFG
RTA4Q0Q0MDAwOTMyMzAgLyogQ29uc3RFeHByUG9pc29uZWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwNUZBRjAxRkUwOENDRDAwMDkzMjMwIC8q
IENvbnN0RXhwclBvaXNvbmVkLmNwcCAqLzsgfTsKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlv
biAqLwogCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwpAQCAtMTg1
Nyw2ICsxODU5LDggQEAKIAkJRjZGNDlDNjcxNTU0NUM4RDAwMDdGMzlEIC8qIERPTVdpbmRvd0V4
dGVuc2lvbk5vQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUY2RkREREQyMTQyNDFBRDQwMDRGMTcyOSAvKiBQcml2YXRlQnJvd3NpbmdQdXNoU3RhdGVO
b0hpc3RvcnlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBQcml2YXRlQnJvd3NpbmdQdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2RkREREQ1MTQyNDFDNDgwMDRGMTcyOSAvKiBwdXNoLXN0
YXRlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAicHVzaC1zdGF0ZS5odG1sIjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUwNUZBRUUxRkUwNjQzRDAwMDkzMjMwIC8q
IFBvaXNvbmVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvaXNv
bmVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUwNUZBRjAxRkUwOENDRDAw
MDkzMjMwIC8qIENvbnN0RXhwclBvaXNvbmVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENvbnN0RXhwclBvaXNvbmVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRkVCNkY3NEUxQjJCQTQ0RTAwOUU0OTIyIC8qIE5ha2VkUHRyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ha2VkUHRyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIApAQCAt
MjYxMyw2ICsyNjE3LDcgQEAKIAkJCQlBN0E5NjZEQTE0MEVDQ0M4MDA1RUY5QjQgLyogQ2hlY2tl
ZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcCAqLywKIAkJCQkwRjMwQ0I1QjFGQ0UxNzkyMDA0QjUz
MjMgLyogQ29uY3VycmVudFB0ckhhc2hTZXQuY3BwICovLAogCQkJCTBGRUFFMzY3MUI3RDE5Q0Iw
MENFMTdGMiAvKiBDb25kaXRpb24uY3BwICovLAorCQkJCUZFMDVGQUYwMUZFMDhDQ0QwMDA5MzIz
MCAvKiBDb25zdEV4cHJQb2lzb25lZC5jcHAgKi8sCiAJCQkJNTE3MTRFQjkxRDA4NzQxNjAwNDcy
M0M0IC8qIENyb3NzVGhyZWFkVGFzay5jcHAgKi8sCiAJCQkJMjZBMkM3MkUxNUUyRTczQzAwNUIx
QTE0IC8qIENTdHJpbmcuY3BwICovLAogCQkJCTdBQTAyMUJBMUFCMDlFQTcwMDUyOTUzRiAvKiBE
YXRlTWF0aC5jcHAgKi8sCkBAIC0yNjQ2LDYgKzI2NTEsNyBAQAogCQkJCTFBRkRFNjU0MTk1M0Iy
QzAwMEM0OEZGQSAvKiBPcHRpb25hbC5jcHAgKi8sCiAJCQkJQ0U1MEQ4QzgxQzg2NjVDRTAwNzJF
QTVBIC8qIE9wdGlvblNldC5jcHAgKi8sCiAJCQkJMEZFNDQ3OTcxQjc2RjFFMzAwOTQ5OEVCIC8q
IFBhcmtpbmdMb3QuY3BwICovLAorCQkJCUZFMDVGQUVFMUZFMDY0M0QwMDA5MzIzMCAvKiBQb2lz
b25lZC5jcHAgKi8sCiAJCQkJNTNFQzI1M0YxRTk2QkM4MDAwMDgzMUI5IC8qIFByaW9yaXR5UXVl
dWUuY3BwICovLAogCQkJCTBGQzZDNENCMTQxMDI3RTAwMDVCN0YwQyAvKiBSZWRCbGFja1RyZWUu
Y3BwICovLAogCQkJCTkzQTQyN0FBMTgwREEyNjQwMENEMjRENyAvKiBSZWYuY3BwICovLApAQCAt
MzE5MCw2ICszMTk2LDcgQEAKIAkJCQk3QzgzREYxRDFEMEE1OTBDMDBGRUJDRjMgLyogTG9jay5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTdENTRGNjFGMzM5NUQwMDBBOTdBQTcgLyogTG9nZ2Vy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERUVEMUQwQTU5MEMwMEZFQkNGMyAvKiBNYXRo
RXh0cmFzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFMDVGQUYxMUZFMDhDRDQwMDA5MzIzMCAv
KiBDb25zdEV4cHJQb2lzb25lZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVFRjFEMEE1
OTBDMDBGRUJDRjMgLyogTUQ1LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERUYxMUQwQTU5
MEMwMEZFQkNGMyAvKiBNZWRpYVRpbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RFRjYx
RDBBNTkwQzAwRkVCQ0YzIC8qIE1ldGFBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0z
MjEwLDYgKzMyMTcsNyBAQAogCQkJCTdDODNERjA1MUQwQTU5MEMwMEZFQkNGMyAvKiBSdW5Mb29w
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERjI2MUQwQTU5MEMwMEZFQkNGMyAvKiBTYXR1
cmF0ZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTM1MjRB
RTFENjNBNEZCMDAzMTcyOUIgLyogU2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkUwNUZB
RUYxRkUwNjQ1QjAwMDkzMjMwIC8qIFBvaXNvbmVkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdD
ODNERjEyMUQwQTU5MEMwMEZFQkNGMyAvKiBTY29wZWRMYW1iZGEuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0M4M0RGM0QxRDBBNTkwQzAwRkVCQ0YzIC8qIFNldEZvclNjb3BlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTdDODNERjJBMUQwQTU5MEMwMEZFQkNGMyAvKiBTSEExLmNwcCBpbiBTb3Vy
Y2VzICovLApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29uc3RFeHByUG9p
c29uZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nv
bnN0RXhwclBvaXNvbmVkLmNwcAkobm9uZXhpc3RlbnQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9Db25zdEV4cHJQb2lzb25lZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwzNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJSZWZMb2dnZXIuaCIKKyNpbmNsdWRlIDxt
dXRleD4KKyNpbmNsdWRlIDx3dGYvUG9pc29uZWQuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkgeworCitzdGF0aWMgY29uc3QgdWludDMyX3QgUG9pc29uQSA9IDB4YWFhYTsKK3N0YXRpYyBj
b25zdCB1aW50MzJfdCBQb2lzb25CID0gMHhiYmJiOworCisvLyBGb3IgdGhlc2UgdGVzdHMsIHdl
IG5lZWQgYSBiYXNlIGNsYXNzIGFuZCBhIGRlcml2ZWQgY2xhc3MuIEZvciB0aGlzIHB1cnBvc2Us
CisvLyB3ZSByZXVzZSB0aGUgUmVmTG9nZ2VyIGFuZCBEZXJpdmVkUmVmTG9nZ2VyIGNsYXNzZXMu
CisKK1RFU1QoV1RGX0NvbnN0RXhwclBvaXNvbmVkLCBCYXNpYykKK3sKKyAgICBEZXJpdmVkUmVm
TG9nZ2VyIGEoImEiKTsKKworICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dl
cio+IGVtcHR5OworICAgIEFTU0VSVF9FUShudWxscHRyLCBlbXB0eS51bnBvaXNvbmVkKCkpOwor
CisgICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBw
dHIoJmEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgICAg
ICBBU1NFUlRfRVEoJmEsICYqcHRyKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLm5hbWUsICZwdHIt
Pm5hbWUpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29u
QSwgUmVmTG9nZ2VyKj4gcHRyID0gJmE7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9p
c29uZWQoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lz
b25BLCBSZWZMb2dnZXIqPiBwMSA9ICZhOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lz
b25BLCBSZWZMb2dnZXIqPiBwMihwMSk7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNv
bkIsIFJlZkxvZ2dlcio+IHAzKHAxKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNv
bmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAg
IEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShw
MS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9
IHAzLmJpdHMoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQ
b2lzb25BLCBSZWZMb2dnZXIqPiBwMSA9ICZhOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQ
b2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9IHAxOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQ
b2lzb25CLCBSZWZMb2dnZXIqPiBwMyA9IHAxOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVu
cG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKKyAg
ICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9U
UlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRz
KCkgIT0gcDMuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNv
bmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxID0gJmE7CisgICAgICAgIENvbnN0RXhwclBvaXNv
bmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgIEFTU0VS
VF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBv
aXNvbmVkKCkpOworCisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dl
cio+IHAzID0gJmE7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dl
cio+IHA0ID0gV1RGTW92ZShwMyk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25l
ZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAg
IEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJV
RShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0
RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxID0gJmE7CisgICAgICAgIENvbnN0
RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKFdURk1vdmUocDEpKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEs
IHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwg
UmVmTG9nZ2VyKj4gcDMgPSAmYTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwg
UmVmTG9nZ2VyKj4gcDQoV1RGTW92ZShwMykpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVu
cG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDQudW5wb2lzb25lZCgpKTsKKwor
ICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNT
RVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQorCisgICAgeworICAgICAg
ICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDEgPSAmYTsK
KyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIgPSBwMTsK
KyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDMgPSBwMTsK
KyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRf
RVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lz
b25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsK
KyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAzLmJpdHMoKSk7CisgICAgfQorCisg
ICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBEZXJpdmVkUmVmTG9nZ2Vy
Kj4gcDEgPSAmYTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2Vy
Kj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVk
KCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAg
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgRGVyaXZlZFJlZkxvZ2dlcio+IHAzID0gJmE7Cisg
ICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0ID0gV1RGTW92
ZShwMyk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAg
QVNTRVJUX0VRKCZhLCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAx
LmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0g
cDQuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBv
aXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVu
cG9pc29uZWQoKSk7CisgICAgICAgIHB0ci5jbGVhcigpOworICAgICAgICBBU1NFUlRfRVEobnVs
bHB0ciwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgfQorfQorCitURVNUKFdURl9Db25zdEV4cHJQ
b2lzb25lZCwgQXNzaWdubWVudCkKK3sKKyAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKKyAg
ICBSZWZMb2dnZXIgYigiYiIpOworICAgIERlcml2ZWRSZWZMb2dnZXIgYygiYyIpOworCisgICAg
eworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7
CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKCZiKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRf
RVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHAxID0gcDI7CisgICAgICAgIEFTU0VS
VF9FUSgmYiwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBv
aXNvbmVkKCkpOworCisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dl
cio+IHAzKCZhKTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2Vy
Kj4gcDQoJmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAg
ICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDMgPSBwNDsKKyAg
ICAgICAgQVNTRVJUX0VRKCZiLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEo
JmIsIHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09
IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkp
OworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVm
TG9nZ2VyKj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgp
KTsKKyAgICAgICAgcHRyID0gJmI7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcHRyLnVucG9pc29u
ZWQoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25B
LCBSZWZMb2dnZXIqPiBwdHIoJmEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNv
bmVkKCkpOworICAgICAgICBwdHIgPSBudWxscHRyOworICAgICAgICBBU1NFUlRfRVEobnVsbHB0
ciwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBDb25zdEV4cHJQ
b2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7CisgICAgICAgIENvbnN0RXhwclBv
aXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZh
LCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQo
KSk7CisgICAgICAgIHAxID0gV1RGTW92ZShwMik7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDEu
dW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOwor
CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsK
KyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQoJmIpOwor
ICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9F
USgmYiwgcDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDMgPSBXVEZNb3ZlKHA0KTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZiLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIs
IHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAy
LmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwor
ICAgIH0KKworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9n
Z2VyKj4gcDEoJmEpOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBEZXJpdmVk
UmVmTG9nZ2VyKj4gcDIoJmMpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQo
KSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDEg
PSBwMjsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBB
U1NFUlRfRVEoJmMsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQ29uc3RFeHByUG9pc29u
ZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOworICAgICAgICBDb25zdEV4cHJQb2lzb25l
ZDxQb2lzb25CLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDQoJmMpOworICAgICAgICBBU1NFUlRfRVEo
JmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDQudW5wb2lzb25l
ZCgpKTsKKyAgICAgICAgcDMgPSBwNDsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMy51bnBvaXNv
bmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAg
ICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9U
UlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29u
c3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAgICAgICAgQVNT
RVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcHRyID0gJmM7CisgICAgICAg
IEFTU0VSVF9FUSgmYywgcHRyLnVucG9pc29uZWQoKSk7CisgICAgfQorCisgICAgeworICAgICAg
ICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7CisgICAgICAg
IENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMigmYyk7Cisg
ICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VR
KCZjLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBwMSA9IFdURk1vdmUocDIpOworICAgICAg
ICBBU1NFUlRfRVEoJmMsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywg
cDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBS
ZWZMb2dnZXIqPiBwMygmYSk7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIERl
cml2ZWRSZWZMb2dnZXIqPiBwNCgmYyk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lz
b25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAg
ICBwMyA9IFdURk1vdmUocDQpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHAzLnVucG9pc29uZWQo
KSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDQudW5wb2lzb25lZCgpKTsKKworICAgICAgICBB
U1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUo
cDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBDb25zdEV4
cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOworICAgICAgICBBU1NFUlRf
RVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICBwdHIgPSBwdHI7CisgICAgICAgIEFT
U0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBD
b25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOworICAgICAgICBB
U1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworI2lmIENPTVBJTEVSKENMQU5HKQorI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25v
cmVkICItV3Vua25vd24tcHJhZ21hcyIKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVk
ICItV3NlbGYtbW92ZSIKKyNlbmRpZgorICAgICAgICBwdHIgPSBXVEZNb3ZlKHB0cik7CisjaWYg
Q09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisjZW5kaWYKKyAg
ICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICB9Cit9CisKK1RFU1Qo
V1RGX0NvbnN0RXhwclBvaXNvbmVkLCBTd2FwKQoreworICAgIFJlZkxvZ2dlciBhKCJhIik7Cisg
ICAgUmVmTG9nZ2VyIGIoImIiKTsKKworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8
UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQ
b2lzb25BLCBSZWZMb2dnZXIqPiBwMigmYik7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOworICAg
ICAgICBwMS5zd2FwKHAyKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVkKCkp
OworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQ29u
c3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOworICAgICAgICBDb25z
dEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7CisgICAgICAgIEFTU0VS
VF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBv
aXNvbmVkKCkpOworICAgICAgICBwMy5zd2FwKHA0KTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBw
My51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7
CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAyLmJpdHMoKSk7CisgICAgICAg
IEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJV
RShwMS5iaXRzKCkgPT0gcDMuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDIuYml0cygp
ICE9IHA0LmJpdHMoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25l
ZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVk
PFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51
bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7Cisg
ICAgICAgIHN3YXAocDEsIHAyKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVk
KCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAg
Q29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOworICAgICAgICBD
b25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7CisgICAgICAgIEFT
U0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51
bnBvaXNvbmVkKCkpOworICAgICAgICBzd2FwKHAzLCBwNCk7CisgICAgICAgIEFTU0VSVF9FUSgm
YiwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwNC51bnBvaXNvbmVk
KCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBwMi5iaXRzKCkpOworICAg
ICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICAgICAgQVNTRVJU
X1RSVUUocDEuYml0cygpID09IHAzLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAyLmJp
dHMoKSAhPSBwNC5iaXRzKCkpOworICAgIH0KK30KKworc3RhdGljIENvbnN0RXhwclBvaXNvbmVk
PFBvaXNvbkEsIFJlZkxvZ2dlcio+IHBvaXNvbmVkUHRyRm9vKFJlZkxvZ2dlciYgbG9nZ2VyKQor
eworICAgIHJldHVybiBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPigmbG9n
Z2VyKTsKK30KKworVEVTVChXVEZfQ29uc3RFeHByUG9pc29uZWQsIFJldHVyblZhbHVlKQorewor
ICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOworCisgICAgeworICAgICAgICBhdXRvIHB0ciA9
IHBvaXNvbmVkUHRyRm9vKGEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVk
KCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsICYqcHRyKTsKKyAgICAgICAgQVNTRVJUX0VRKCZh
Lm5hbWUsICZwdHItPm5hbWUpOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSQorCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWQuY3Bw
CShub25leGlzdGVudCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVk
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM5MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1
ZGUgIlJlZkxvZ2dlci5oIgorI2luY2x1ZGUgPG11dGV4PgorI2luY2x1ZGUgPHd0Zi9Qb2lzb25l
ZC5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3VpbnRwdHJfdCBnX3Rlc3RQb2lz
b25BOwordWludHB0cl90IGdfdGVzdFBvaXNvbkI7CisKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVU
ZXN0UG9pc29uKCkKK3sKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZU9uY2VG
bGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRpYWxpemVPbmNlRmxhZywgW10geworICAgICAg
ICAvLyBNYWtlIHN1cmUgd2UgZ2V0IDIgZGlmZmVyZW50IHBvaXNvbiB2YWx1ZXMuCisgICAgICAg
IGdfdGVzdFBvaXNvbkEgPSBtYWtlUG9pc29uKCk7CisgICAgICAgIHdoaWxlICghZ190ZXN0UG9p
c29uQiB8fCBnX3Rlc3RQb2lzb25CID09IGdfdGVzdFBvaXNvbkEpCisgICAgICAgICAgICBnX3Rl
c3RQb2lzb25CID0gbWFrZVBvaXNvbigpOworICAgIH0pOworfQorCisvLyBGb3IgdGhlc2UgdGVz
dHMsIHdlIG5lZWQgYSBiYXNlIGNsYXNzIGFuZCBhIGRlcml2ZWQgY2xhc3MuIEZvciB0aGlzIHB1
cnBvc2UsCisvLyB3ZSByZXVzZSB0aGUgUmVmTG9nZ2VyIGFuZCBEZXJpdmVkUmVmTG9nZ2VyIGNs
YXNzZXMuCisKK1RFU1QoV1RGX1BvaXNvbmVkLCBCYXNpYykKK3sKKyAgICBpbml0aWFsaXplVGVz
dFBvaXNvbigpOworICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOworCisgICAgUG9pc29uZWQ8
Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gZW1wdHk7CisgICAgQVNTRVJUX0VRKG51bGxwdHIs
IGVtcHR5LnVucG9pc29uZWQoKSk7CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBv
aXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVu
cG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgJipwdHIpOworICAgICAgICBBU1NF
UlRfRVEoJmEubmFtZSwgJnB0ci0+bmFtZSk7CisgICAgfQorCisgICAgeworICAgICAgICBQb2lz
b25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIgPSAmYTsKKyAgICAgICAgQVNTRVJU
X0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFBvaXNv
bmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxID0gJmE7CisgICAgICAgIFBvaXNvbmVk
PGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKHAxKTsKKworICAgICAgICBBU1NFUlRfRVEo
JmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25l
ZCgpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CisKKyNp
ZiBFTkFCTEUoTUlYRURfUE9JU09OKQorICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBS
ZWZMb2dnZXIqPiBwMyhwMSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgp
KTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAzLmJpdHMoKSk7CisjZW5kaWYK
KyAgICB9CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dl
cio+IHAxID0gJmE7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+
IHAyID0gcDE7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfVFJVRShw
MS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKworI2lmIEVOQUJMRShNSVhFRF9QT0lTT04pCisgICAg
ICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHAzID0gcDE7CisgICAgICAg
IEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDEu
Yml0cygpICE9IHAzLmJpdHMoKSk7CisjZW5kaWYKKyAgICB9CisKKyAgICB7CisgICAgICAgIFBv
aXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxID0gJmE7CisgICAgICAgIFBvaXNv
bmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAg
IEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBw
Mi51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0
cygpKTsKKworI2lmIEVOQUJMRShNSVhFRF9QT0lTT04pCisgICAgICAgIFBvaXNvbmVkPGdfdGVz
dFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzID0gJmE7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBv
aXNvbkIsIFJlZkxvZ2dlcio+IHA0ID0gV1RGTW92ZShwMyk7CisgICAgICAgIEFTU0VSVF9FUSgm
YSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwNC51bnBvaXNvbmVk
KCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyNlbmRp
ZgorICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9n
Z2VyKj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2Vy
Kj4gcDIoV1RGTW92ZShwMSkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQo
KSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNT
RVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CisKKyNpZiBFTkFCTEUoTUlYRURfUE9J
U09OKQorICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMyA9ICZh
OworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwNChXVEZNb3Zl
KHAzKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAg
QVNTRVJUX0VRKCZhLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5i
aXRzKCkgIT0gcDQuYml0cygpKTsKKyNlbmRpZgorICAgIH0KKworI2lmIEVOQUJMRShNSVhFRF9Q
T0lTT04pCisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBEZXJpdmVkUmVm
TG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9n
Z2VyKj4gcDIgPSBwMTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwor
ICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9U
UlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworCisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBv
aXNvbkIsIFJlZkxvZ2dlcio+IHAzID0gcDE7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAzLmJpdHMoKSk7
CisgICAgfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoTUlYRURfUE9JU09OKQorICAgIHsKKyAgICAg
ICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgRGVyaXZlZFJlZkxvZ2dlcio+IHAxID0gJmE7Cisg
ICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyID0gV1RGTW92ZShw
MSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNT
RVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRz
KCkgPT0gcDIuYml0cygpKTsKKworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBEZXJp
dmVkUmVmTG9nZ2VyKj4gcDMgPSAmYTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwg
UmVmTG9nZ2VyKj4gcDQgPSBXVEZNb3ZlKHAzKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51
bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7Cisg
ICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgIH0KKyNlbmRp
ZgorCisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBw
dHIoJmEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgICAg
ICBwdHIuY2xlYXIoKTsKKyAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHB0ci51bnBvaXNvbmVk
KCkpOworICAgIH0KK30KKworVEVTVChXVEZfUG9pc29uZWQsIEFzc2lnbm1lbnQpCit7CisgICAg
aW5pdGlhbGl6ZVRlc3RQb2lzb24oKTsKKyAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKKyAg
ICBSZWZMb2dnZXIgYigiYiIpOworICAgIERlcml2ZWRSZWZMb2dnZXIgYygiYyIpOworCisgICAg
eworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7Cisg
ICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKCZiKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIs
IHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHAxID0gcDI7CisgICAgICAgIEFTU0VSVF9FUSgm
YiwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVk
KCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKworI2lm
IEVOQUJMRShNSVhFRF9QT0lTT04pCisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJl
ZkxvZ2dlcio+IHAzKCZhKTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgUmVmTG9n
Z2VyKj4gcDQoJmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7Cisg
ICAgICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDMgPSBwNDsK
KyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRf
RVEoJmIsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAh
PSBwNC5iaXRzKCkpOworI2VuZGlmCisgICAgfQorCisgICAgeworICAgICAgICBQb2lzb25lZDxn
X3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOworICAgICAgICBBU1NFUlRfRVEoJmEs
IHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICBwdHIgPSAmYjsKKyAgICAgICAgQVNTRVJUX0VR
KCZiLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVk
PGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgm
YSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHB0ciA9IG51bGxwdHI7CisgICAgICAgIEFT
U0VSVF9FUShudWxscHRyLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICB9CisKKyAgICB7CisgICAg
ICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKKyAgICAgICAg
UG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoJmIpOworICAgICAgICBBU1NF
UlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgcDEgPSBXVEZNb3ZlKHAyKTsKKyAgICAgICAgQVNTRVJUX0VR
KCZiLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29u
ZWQoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworCisj
aWYgRU5BQkxFKE1JWEVEX1BPSVNPTikKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwg
UmVmTG9nZ2VyKj4gcDMoJmEpOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZM
b2dnZXIqPiBwNCgmYik7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAgICBwMyA9IFdU
Rk1vdmUocDQpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAzLnVucG9pc29uZWQoKSk7CisgICAg
ICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUo
cDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisjZW5kaWYKKyAgICB9CisKKyNpZiBFTkFCTEUoTUlY
RURfUE9JU09OKQorICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9n
Z2VyKj4gcDEoJmEpOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBEZXJpdmVkUmVm
TG9nZ2VyKj4gcDIoJmMpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7
CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDEgPSBw
MjsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NF
UlRfRVEoJmMsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMo
KSA9PSBwMi5iaXRzKCkpOworCisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxv
Z2dlcio+IHAzKCZhKTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgRGVyaXZlZFJl
ZkxvZ2dlcio+IHA0KCZjKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkp
OworICAgICAgICBBU1NFUlRfRVEoJmMsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIHAzID0g
cDQ7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNT
RVJUX0VRKCZjLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRz
KCkgIT0gcDQuYml0cygpKTsKKyAgICB9CisjZW5kaWYKKworICAgIHsKKyAgICAgICAgUG9pc29u
ZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VR
KCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcHRyID0gJmM7CisgICAgICAgIEFTU0VS
VF9FUSgmYywgcHRyLnVucG9pc29uZWQoKSk7CisgICAgfQorCisjaWYgRU5BQkxFKE1JWEVEX1BP
SVNPTikKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+
IHAxKCZhKTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgRGVyaXZlZFJlZkxvZ2dl
cio+IHAyKCZjKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAg
ICAgICBBU1NFUlRfRVEoJmMsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHAxID0gV1RGTW92
ZShwMik7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAg
QVNTRVJUX0VRKCZjLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMS5i
aXRzKCkgPT0gcDIuYml0cygpKTsKKworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBS
ZWZMb2dnZXIqPiBwMygmYSk7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIERlcml2
ZWRSZWZMb2dnZXIqPiBwNCgmYyk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25l
ZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAgICBw
MyA9IFdURk1vdmUocDQpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHAzLnVucG9pc29uZWQoKSk7
CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJU
X1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQorI2VuZGlmCisKKyAgICB7Cisg
ICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAg
ICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHB0ciA9IHB0cjsK
KyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICB9CisKKyAgICB7
CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7Cisg
ICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisjaWYgQ09NUElMRVIoQ0xB
TkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9z
dGljIGlnbm9yZWQgIi1XdW5rbm93bi1wcmFnbWFzIgorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGlj
IGlnbm9yZWQgIi1Xc2VsZi1tb3ZlIgorI2VuZGlmCisgICAgICAgIHB0ciA9IFdURk1vdmUocHRy
KTsKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKyNl
bmRpZgorICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0KK30K
KworVEVTVChXVEZfUG9pc29uZWQsIFN3YXApCit7CisgICAgaW5pdGlhbGl6ZVRlc3RQb2lzb24o
KTsKKyAgICBSZWZMb2dnZXIgYSgiYSIpOworICAgIFJlZkxvZ2dlciBiKCJiIik7CisKKyAgICB7
CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKKyAg
ICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoJmIpOworICAgICAg
ICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwg
cDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDEuc3dhcChwMik7CisgICAgICAgIEFTU0VSVF9F
USgmYiwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNv
bmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBwMi5iaXRzKCkpOwor
CisjaWYgRU5BQkxFKE1JWEVEX1BPSVNPTikKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29u
QSwgUmVmTG9nZ2VyKj4gcDMoJmEpOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBS
ZWZMb2dnZXIqPiBwNCgmYik7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgp
KTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAgICBwMy5z
d2FwKHA0KTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAg
ICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUo
cDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9
PSBwMy5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMi5iaXRzKCkgIT0gcDQuYml0cygp
KTsKKyNlbmRpZgorICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29u
QSwgUmVmTG9nZ2VyKj4gcDEoJmEpOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBS
ZWZMb2dnZXIqPiBwMigmYik7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgp
KTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOworI2lmIEVOQUJMRShN
SVhFRF9QT0lTT04pCisgICAgICAgIHN3YXAocDEsIHAyKTsKKyNlbHNlCisgICAgICAgIHN0ZDo6
c3dhcChwMSwgcDIpOworI2VuZGlmCisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDEudW5wb2lzb25l
ZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOworCisgICAgICAg
IEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBwMi5iaXRzKCkpOworCisjaWYgRU5BQkxFKE1JWEVE
X1BPSVNPTikKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMo
JmEpOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7
CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAgICBzd2FwKHAzLCBwNCk7CisgICAgICAg
IEFTU0VSVF9FUSgmYiwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBw
NC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5i
aXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDMuYml0cygpKTsKKyAg
ICAgICAgQVNTRVJUX1RSVUUocDIuYml0cygpICE9IHA0LmJpdHMoKSk7CisjZW5kaWYKKyAgICB9
Cit9CisKK3N0YXRpYyBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwb2lzb25l
ZFB0ckZvbyhSZWZMb2dnZXImIGxvZ2dlcikKK3sKKyAgICByZXR1cm4gUG9pc29uZWQ8Z190ZXN0
UG9pc29uQSwgUmVmTG9nZ2VyKj4oJmxvZ2dlcik7Cit9CisKK1RFU1QoV1RGX1BvaXNvbmVkLCBS
ZXR1cm5WYWx1ZSkKK3sKKyAgICBpbml0aWFsaXplVGVzdFBvaXNvbigpOworICAgIERlcml2ZWRS
ZWZMb2dnZXIgYSgiYSIpOworCisgICAgeworICAgICAgICBhdXRvIHB0ciA9IHBvaXNvbmVkUHRy
Rm9vKGEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgICAg
ICBBU1NFUlRfRVEoJmEsICYqcHRyKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLm5hbWUsICZwdHIt
Pm5hbWUpOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329213</attachid>
            <date>2017-12-13 01:00:34 -0800</date>
            <delta_ts>2017-12-13 10:28:17 -0800</delta_ts>
            <desc>patch for landing.</desc>
            <filename>bug-180724.patch</filename>
            <type>text/plain</type>
            <size>42684</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI1ODM3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDE3LTEyLTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBG
aWxsIG91dCBzb21lIFBvaXNvbmVkIEFQSXMsIGZpeCBzb21lIGJ1Z3MsIGFuZCBhZGQgc29tZSB0
ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
MDcyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYwMDY4ODQ+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgSkYgQmFzdGllbi4KKworICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlv
blRhYmxlLmg6CisKIDIwMTctMTItMTIgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4K
IAogICAgICAgICBTdHJ1Y3R1cmUsIFN0cnVjdHVyZVJhcmVEYXRhLCBhbmQgUHJvcGVydHlUYWJs
ZSBzaG91bGQgYmUgaW4gSXNvU3Vic3BhY2VzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaAkocmV2aXNp
b24gMjI1ODM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJh
bnNpdGlvblRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTg3LDggKzE4Nyw4IEBA
IHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgU2luZ2xlU2xvdFRyYW5zaXRp
b25XZWFrT3duZXI7Ci0gICAgdXNpbmcgUG9pc29uZWRUcmFuc2l0aW9uTWFwUHRyID0gSW50MzJQ
b2lzb25lZDxUcmFuc2l0aW9uTWFwUG9pc29uLCBUcmFuc2l0aW9uTWFwKj47Ci0gICAgdXNpbmcg
UG9pc29uZWRXZWFrSW1wbFB0ciA9IEludDMyUG9pc29uZWQ8V2Vha0ltcGxQb2lzb24sIFdlYWtJ
bXBsKj47CisgICAgdXNpbmcgUG9pc29uZWRUcmFuc2l0aW9uTWFwUHRyID0gQ29uc3RFeHByUG9p
c29uZWQ8VHJhbnNpdGlvbk1hcFBvaXNvbiwgVHJhbnNpdGlvbk1hcCo+OworICAgIHVzaW5nIFBv
aXNvbmVkV2Vha0ltcGxQdHIgPSBDb25zdEV4cHJQb2lzb25lZDxXZWFrSW1wbFBvaXNvbiwgV2Vh
a0ltcGwqPjsKIAogICAgIGJvb2wgaXNVc2luZ1NpbmdsZVNsb3QoKSBjb25zdAogICAgIHsKSW5k
ZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyMjU4MzcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDE3LTEyLTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFw
cGxlLmNvbT4KKworICAgICAgICBGaWxsIG91dCBzb21lIFBvaXNvbmVkIEFQSXMsIGZpeCBzb21l
IGJ1Z3MsIGFuZCBhZGQgc29tZSB0ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4MDcyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYwMDY4
ODQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSkYgQmFzdGllbi4KKworICAgICAgICBBbHNvIHJl
bmFtZSBJbnQzMlBvaXNvbmVkIHRvIENvbnN0RXhwclBvaXNvbmVkLiAgVGhlIGtleSBpdCB0YWtl
cyBpcyBhY3R1YWxseSBhCisgICAgICAgIHVpbnQzMl90LiAgU28sIEludDMyIGlzIHJlYWxseSBh
IG1pc25vbWVyLiAgSW4gYWRkaXRpb24sIHRoZSBrZXkgbmVlZHMgdG8gYmUgYQorICAgICAgICBj
b25zdGV4cHIuICBTbywgQ29uc3RFeHByUG9pc29uZWQgaXMgYSBiZXR0ZXIgbmFtZSBmb3IgaXQu
CisKKyAgICAgICAgKiB3dGYvUG9pc29uZWQuY3BwOgorICAgICAgICAoV1RGOjptYWtlUG9pc29u
KToKKyAgICAgICAgKiB3dGYvUG9pc29uZWQuaDoKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBs
SGVscGVyOjphc1JlZmVyZW5jZSk6CisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6UG9pc29u
ZWRJbXBsKToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpjbGVhcik6CisgICAgICAgIChX
VEY6OlBvaXNvbmVkSW1wbDo6b3BlcmF0b3IqIGNvbnN0KToKKyAgICAgICAgKFdURjo6UG9pc29u
ZWRJbXBsOjpvcGVyYXRvci0+IGNvbnN0KToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpv
cGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvciE9
IGNvbnN0KToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvcjwgY29uc3QpOgor
ICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6Om9wZXJhdG9yPD0gY29uc3QpOgorICAgICAgICAo
V1RGOjpQb2lzb25lZEltcGw6Om9wZXJhdG9yPiBjb25zdCk6CisgICAgICAgIChXVEY6OlBvaXNv
bmVkSW1wbDo6b3BlcmF0b3I+PSBjb25zdCk6CisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6
b3BlcmF0b3I9KToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpzd2FwKToKKyAgICAgICAg
KFdURjo6UG9pc29uZWRJbXBsOjpleGNoYW5nZSk6CisgICAgICAgIChXVEY6OnN3YXApOgorICAg
ICAgICAoV1RGOjptYWtlUG9pc29uKToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVy
YXRvcj09KTogRGVsZXRlZC4KKwogMjAxNy0xMi0xMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbSlNDXSBJbXBsZW1lbnQgb3B0aW1pemVkIFdlYWtN
YXAgYW5kIFdlYWtTZXQKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVkLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Qb2lzb25lZC5jcHAJKHJldmlzaW9uIDIyNTgzNykKKysr
IFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMs
NyBAQCBuYW1lc3BhY2UgV1RGIHsKIHVpbnRwdHJfdCBtYWtlUG9pc29uKCkKIHsKICAgICB1aW50
cHRyX3Qga2V5ID0gY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKTsKLSNpZiBVU0UoSlNW
QUxVRTY0KSAmJiAhT1MoV0lORE9XUykKKyNpZiBFTkFCTEUoUE9JU09OKQogICAgIGtleSA9IChr
ZXkgPDwgMzIpIF4gKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oY3J5cHRvZ3JhcGhpY2FsbHlSYW5k
b21OdW1iZXIoKSkgPDwgMyk7CiAgICAgLy8gRW5zdXJlIHRoYXQgdGhlIHBvaXNvbmVkIGJpdHMg
KHBvaW50ZXIgXiBrZXkpIGRvIG5vdCBtYWtlIGEgdmFsaWQgcG9pbnRlciBhbmQKICAgICAvLyBj
YW5ub3QgYmUgMC4gV2UgZW5zdXJlIHRoYXQgaXQgaXMgemVybyBzbyB0aGF0IHRoZSBwb2lzb25l
ZCBiaXRzIGNhbiBhbHNvIGJlCkBAIC01MSw0ICs1MSwzIEBAIHVpbnRwdHJfdCBtYWtlUG9pc29u
KCkKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCi0KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BvaXNv
bmVkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUG9pc29uZWQuaAkocmV2aXNpb24g
MjI1ODM3KQorKysgU291cmNlL1dURi93dGYvUG9pc29uZWQuaAkod29ya2luZyBjb3B5KQpAQCAt
MjcsMTEgKzI3LDM3IEBACiAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogCisjZGVmaW5l
IEVOQUJMRV9QT0lTT04gMQogI2RlZmluZSBFTkFCTEVfUE9JU09OX0FTU0VSVFMgMAogCisvLyBP
bGRlciB2ZXJzaW9ucyBvZiBnY2MgYW5kIGNsYW5nIGhhdmUgYSBidWcgd2hpY2ggcmVzdWx0cyBp
biBidWlsZCBmYWlsdXJlcworLy8gd2hlbiB1c2luZyB0ZW1wbGF0ZSBtZXRob2RzIHRoYXQgdGFr
ZSBhbiBhcmd1bWVudCBvZiBQb2lzb25lZEltcGw8SzIsIGsyLCBUMj4KKy8vIHdoZW4gdGhlIEtl
eVR5cGUgaXMgYSB1aW50cHRyX3QgKGkuZS4gd2hlbiB3ZSdyZSB1c2luZyB0aGUgUG9pc29uZWQg
dmFyaWFudAorLy8gb2YgUG9pc29uZWRJbXBsKS4gVGhpcyBidWcgZG9lcyBub3QgbWFuaWZlc3Qg
Zm9yIHRoZSBDb25zdEV4cHJQb2lzb25lZCB2YXJpYW50LgorLy8gSW4gcHJhY3RpY2UsIHdlIHdp
bGwgbGlrZWx5IG9ubHkgdXNlIHRoZXNlIG1ldGhvZHMgZm9yIGluc3RhbnRpYXRpb25zIG9mIHRo
ZQorLy8gQ29uc3RFeHByUG9pc29uZWQgdmFyaWFudC4gSGVuY2UuIHRoaXMgYnVnIGlzIG5vdCBh
IHNob3cgc3RvcHBlci4KKy8vIFRoYXQgc2FpZCwgd2UnbGwgZGVmaW5lIEVOQUJMRV9NSVhFRF9Q
T0lTT04gYWNjb3JkaW5nbHkgc28gdGhhdCB3ZSBjYW4gdXNlCisvLyBpdCB0byBkaXNhYmxlIHRo
ZSBhZmZlY3RlZCB0ZXN0cyB3aGVuIGJ1aWxkaW5nIHdpdGggb2xkIGNvbXBpbGVycy4KKyNpZiAo
T1MoTUFDX09TX1gpIHx8IE9TKElPUykpICYmIF9fY2xhbmdfbWFqb3JfXyA+PSA5CisjZGVmaW5l
IEVOQUJMRV9NSVhFRF9QT0lTT04gMSAvLyBFbmFibGUgZm9yIGNsYW5nIDkuMC4wIGFuZCBuZXdl
ciAoQXBwbGUgdmVyc2lvbmluZykuCisjZWxpZiBkZWZpbmVkKF9fY2xhbmdfbWFqb3JfXykgJiYg
X19jbGFuZ19tYWpvcl9fID49IDQKKyNkZWZpbmUgRU5BQkxFX01JWEVEX1BPSVNPTiAxIC8vIEVu
YWJsZSBmb3IgY2xhbmcgNC4wLjAgYW5kIG5ld2VyIChub24tQXBwbGUgdmVyc2lvbmluZykuCisj
ZWxpZiBkZWZpbmVkKF9fR05VQ19fKQorI2luY2x1ZGUgPGZlYXR1cmVzLmg+CisjaWYgX19HTlVD
X1BSRVJFUSg3LDIpCisjZGVmaW5lIEVOQUJMRV9NSVhFRF9QT0lTT04gMSAvLyBFbmFibGUgZm9y
IGdjYyA3LjIgYW5kIG5ld2VyLgorI2VuZGlmIC8vIF9fR05VQ19QUkVSRVEoNywyKQorI2VuZGlm
IC8vICFkZWZpbmVkKF9fR05VQ19fKQorCisjaWZuZGVmIEVOQUJMRV9NSVhFRF9QT0lTT04KKyNk
ZWZpbmUgRU5BQkxFX01JWEVEX1BPSVNPTiAwIC8vIERpc2FibGUgZm9yIGV2ZXJ5dGhpbmcgZWxz
ZS4KKyNlbmRpZgorCiAvLyBOb3QgY3VycmVudGx5IHN1cHBvcnRlZCBmb3IgMzItYml0IG9yIE9T
KFdJTkRPV1MpIGJ1aWxkcyAoYmVjYXVzZSBvZiBtaXNzaW5nIGxsaW50IHN1cHBvcnQpLgogLy8g
TWFrZSBzdXJlIGl0J3MgZGlzYWJsZWQuCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkgfHwgT1MoV0lO
RE9XUykKKyN1bmRlZiBFTkFCTEVfUE9JU09OCisjZGVmaW5lIEVOQUJMRV9QT0lTT04gMAogI3Vu
ZGVmIEVOQUJMRV9QT0lTT05fQVNTRVJUUwogI2RlZmluZSBFTkFCTEVfUE9JU09OX0FTU0VSVFMg
MAogI2VuZGlmCkBAIC00MCwxNyArNjYsNDcgQEAgbmFtZXNwYWNlIFdURiB7CiAKIHVzaW5nIFBv
aXNvbmVkQml0cyA9IHVpbnRwdHJfdDsKIAorbmFtZXNwYWNlIFBvaXNvbmVkSW1wbEhlbHBlciB7
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgaXNGdW5jdGlvblBvaW50ZXIgOiBzdGQ6
OmludGVncmFsX2NvbnN0YW50PGJvb2wsIHN0ZDo6aXNfZnVuY3Rpb248dHlwZW5hbWUgc3RkOjpy
ZW1vdmVfcG9pbnRlcjxUPjo6dHlwZT46OnZhbHVlPiB7IH07CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+CitzdHJ1Y3QgaXNWb2lkUG9pbnRlciA6IHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwg
c3RkOjppc192b2lkPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8VD46OnR5cGU+Ojp2YWx1
ZT4geyB9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IGlzQ29udmVydGlibGVUb1Jl
ZmVyZW5jZSA6IHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgIWlzRnVuY3Rpb25Qb2ludGVy
PFQ+Ojp2YWx1ZSAmJiAhaXNWb2lkUG9pbnRlcjxUPjo6dmFsdWU+IHsgfTsKKwordGVtcGxhdGU8
dHlwZW5hbWUgVD4KK3R5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8IWlzQ29udmVydGlibGVUb1Jl
ZmVyZW5jZTxUPjo6dmFsdWUsIGludD4mCithc1JlZmVyZW5jZShUKSB7IFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7IH0KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3R5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmX3Q8aXNDb252ZXJ0aWJsZVRvUmVmZXJlbmNlPFQ+Ojp2YWx1ZSwgdHlwZW5hbWUg
c3RkOjpyZW1vdmVfcG9pbnRlcjxUPjo6dHlwZT4mCithc1JlZmVyZW5jZShUIHB0cikgeyByZXR1
cm4gKnB0cjsgfQorCit9IC8vIG5hbWVzcGFjZSBQb2lzb25lZEltcGxIZWxwZXIKKwogdGVtcGxh
dGU8dHlwZW5hbWUgS2V5VHlwZSwgS2V5VHlwZSBrZXksIHR5cGVuYW1lIFQsIHR5cGVuYW1lID0g
c3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVlPj4KIGNsYXNzIFBvaXNv
bmVkSW1wbCB7CiBwdWJsaWM6CiAgICAgUG9pc29uZWRJbXBsKCkgeyB9CiAKLSAgICBleHBsaWNp
dCBQb2lzb25lZEltcGwoVCBwdHIpCisgICAgUG9pc29uZWRJbXBsKFQgcHRyKQogICAgICAgICA6
IG1fcG9pc29uZWRCaXRzKHBvaXNvbihwdHIpKQogICAgIHsgfQogCiAgICAgUG9pc29uZWRJbXBs
KGNvbnN0IFBvaXNvbmVkSW1wbCYpID0gZGVmYXVsdDsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEsyLCBLMiBrMiwgdHlwZW5hbWUgVDI+CisgICAgUG9pc29uZWRJbXBsKGNvbnN0IFBvaXNvbmVk
SW1wbDxLMiwgazIsIFQyPiYgb3RoZXIpCisgICAgICAgIDogbV9wb2lzb25lZEJpdHMocG9pc29u
PFQ+KG90aGVyLnVucG9pc29uZWQoKSkpCisgICAgeyB9CisKKyAgICBQb2lzb25lZEltcGwoUG9p
c29uZWRJbXBsJiYgb3RoZXIpCisgICAgICAgIDogbV9wb2lzb25lZEJpdHMoV1RGTW92ZShvdGhl
ci5tX3BvaXNvbmVkQml0cykpCisgICAgeyB9CisKICAgICBleHBsaWNpdCBQb2lzb25lZEltcGwo
UG9pc29uZWRCaXRzIHBvaXNvbmVkQml0cykKICAgICAgICAgOiBtX3BvaXNvbmVkQml0cyhwb2lz
b25lZEJpdHMpCiAgICAgeyB9CkBAIC03Miw3ICsxMjgsMTAgQEAgcHVibGljOgogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFUgPSBUPgogICAgIFUgdW5wb2lzb25lZCgpIGNvbnN0IHsgcmV0dXJuIHVu
cG9pc29uPFU+KG1fcG9pc29uZWRCaXRzKTsgfQogCi0gICAgQUxXQVlTX0lOTElORSBUIG9wZXJh
dG9yLT4oKSBjb25zdCB7IHJldHVybiB1bnBvaXNvbjxUPihtX3BvaXNvbmVkQml0cyk7IH0KKyAg
ICB2b2lkIGNsZWFyKCkgeyBtX3BvaXNvbmVkQml0cyA9IDA7IH0KKworICAgIGF1dG8mIG9wZXJh
dG9yKigpIGNvbnN0IHsgQVNTRVJUKG1fcG9pc29uZWRCaXRzKTsgcmV0dXJuIFBvaXNvbmVkSW1w
bEhlbHBlcjo6YXNSZWZlcmVuY2UodW5wb2lzb24obV9wb2lzb25lZEJpdHMpKTsgfQorICAgIEFM
V0FZU19JTkxJTkUgVCBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gdW5wb2lzb24obV9wb2lz
b25lZEJpdHMpOyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gUG9pc29uZWRCaXRzPgog
ICAgIFUgYml0cygpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxVPihtX3BvaXNvbmVkQml0
cyk7IH0KQEAgLTgwLDU2ICsxMzksOTkgQEAgcHVibGljOgogICAgIGJvb2wgb3BlcmF0b3IhKCkg
Y29uc3QgeyByZXR1cm4gIW1fcG9pc29uZWRCaXRzOyB9CiAgICAgZXhwbGljaXQgb3BlcmF0b3Ig
Ym9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9wb2lzb25lZEJpdHM7IH0KIAotICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0CisgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFBvaXNvbmVkSW1wbCYgYikgY29uc3QgeyByZXR1cm4gbV9wb2lzb25lZEJpdHMgPT0g
Yi5tX3BvaXNvbmVkQml0czsgfQorICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQb2lzb25lZElt
cGwmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzICE9IGIubV9wb2lzb25lZEJpdHM7
IH0KKyAgICBib29sIG9wZXJhdG9yPChjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0IHsgcmV0
dXJuIG1fcG9pc29uZWRCaXRzIDwgYi5tX3BvaXNvbmVkQml0czsgfQorICAgIGJvb2wgb3BlcmF0
b3I8PShjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRz
IDw9IGIubV9wb2lzb25lZEJpdHM7IH0KKyAgICBib29sIG9wZXJhdG9yPihjb25zdCBQb2lzb25l
ZEltcGwmIGIpIGNvbnN0IHsgcmV0dXJuIG1fcG9pc29uZWRCaXRzID4gYi5tX3BvaXNvbmVkQml0
czsgfQorICAgIGJvb2wgb3BlcmF0b3I+PShjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0IHsg
cmV0dXJuIG1fcG9pc29uZWRCaXRzID49IGIubV9wb2lzb25lZEJpdHM7IH0KKworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFU+IGJvb2wgb3BlcmF0b3I9PShVIGIpIGNvbnN0IHsgcmV0dXJuIHVucG9p
c29uZWQ8VT4oKSA9PSBiOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBvcGVyYXRv
ciE9KFUgYikgY29uc3QgeyByZXR1cm4gdW5wb2lzb25lZDxVPigpICE9IGI7IH0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBVPiBib29sIG9wZXJhdG9yPChVIGIpIGNvbnN0IHsgcmV0dXJuIHVucG9p
c29uZWQ8VT4oKSA8IGI7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIG9wZXJhdG9y
PD0oVSBiKSBjb25zdCB7IHJldHVybiB1bnBvaXNvbmVkPFU+KCkgPD0gYjsgfQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFU+IGJvb2wgb3BlcmF0b3I+KFUgYikgY29uc3QgeyByZXR1cm4gdW5wb2lz
b25lZDxVPigpID4gYjsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgb3BlcmF0b3I+
PShVIGIpIGNvbnN0IHsgcmV0dXJuIHVucG9pc29uZWQ8VT4oKSA+PSBiOyB9CisKKyAgICBQb2lz
b25lZEltcGwmIG9wZXJhdG9yPShUIHB0cikKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3BvaXNv
bmVkQml0cyA9PSBiLm1fcG9pc29uZWRCaXRzOworICAgICAgICBtX3BvaXNvbmVkQml0cyA9IHBv
aXNvbihwdHIpOworICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQorICAgIFBvaXNvbmVkSW1w
bCYgb3BlcmF0b3I9KGNvbnN0IFBvaXNvbmVkSW1wbCYpID0gZGVmYXVsdDsKIAotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFB0clR5cGUgPSB2b2lkKiwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVu
YWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8UHRyVHlwZT46OnZhbHVlPjo6dHlwZT4KLSAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgUHRyVHlwZSBiKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEsyLCBL
MiBrMiwgdHlwZW5hbWUgVDI+CisgICAgUG9pc29uZWRJbXBsJiBvcGVyYXRvcj0oY29uc3QgUG9p
c29uZWRJbXBsPEsyLCBrMiwgVDI+JiBvdGhlcikKICAgICB7Ci0gICAgICAgIHJldHVybiB1bnBv
aXNvbmVkPFB0clR5cGU+KCkgPT0gYjsKKyAgICAgICAgbV9wb2lzb25lZEJpdHMgPSBwb2lzb248
VD4ob3RoZXIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAot
ICAgIFBvaXNvbmVkSW1wbCYgb3BlcmF0b3I9KFQgcHRyKQorICAgIHZvaWQgc3dhcChQb2lzb25l
ZEltcGwmIG8pCiAgICAgewotICAgICAgICBtX3BvaXNvbmVkQml0cyA9IHBvaXNvbihwdHIpOwot
ICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgICAgIHN0ZDo6c3dhcChtX3BvaXNvbmVkQml0cywg
by5tX3BvaXNvbmVkQml0cyk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSzIsIEsy
IGsyLCB0eXBlbmFtZSBUMj4KKyAgICB2b2lkIHN3YXAoUG9pc29uZWRJbXBsPEsyLCBrMiwgVDI+
JiBvKQorICAgIHsKKyAgICAgICAgVCB0MSA9IHRoaXMtPnVucG9pc29uZWQoKTsKKyAgICAgICAg
VDIgdDIgPSBvLnVucG9pc29uZWQoKTsKKyAgICAgICAgc3RkOjpzd2FwKHQxLCB0Mik7CisgICAg
ICAgIG1fcG9pc29uZWRCaXRzID0gcG9pc29uKHQxKTsKKyAgICAgICAgbyA9IHQyOworICAgIH0K
KworICAgIHRlbXBsYXRlPGNsYXNzIFU+CisgICAgVCBleGNoYW5nZShVJiYgbmV3VmFsdWUpCisg
ICAgeworICAgICAgICBUIG9sZFZhbHVlID0gdW5wb2lzb25lZCgpOworICAgICAgICBtX3BvaXNv
bmVkQml0cyA9IHBvaXNvbihzdGQ6OmZvcndhcmQ8VT4obmV3VmFsdWUpKTsKKyAgICAgICAgcmV0
dXJuIG9sZFZhbHVlOwogICAgIH0KLSAgICBQb2lzb25lZEltcGwmIG9wZXJhdG9yPShjb25zdCBQ
b2lzb25lZEltcGwmKSA9IGRlZmF1bHQ7CiAKIHByaXZhdGU6Ci0jaWYgVVNFKEpTVkFMVUU2NCkK
KyNpZiBFTkFCTEUoUE9JU09OKQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+CiAgICAgQUxXQVlT
X0lOTElORSBzdGF0aWMgUG9pc29uZWRCaXRzIHBvaXNvbihVIHB0cikgeyByZXR1cm4gcHRyID8g
Yml0d2lzZV9jYXN0PFBvaXNvbmVkQml0cz4ocHRyKSBeIGtleSA6IDA7IH0KLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBVPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPgogICAgIEFMV0FZU19J
TkxJTkUgc3RhdGljIFUgdW5wb2lzb24oUG9pc29uZWRCaXRzIHBvaXNvbmVkQml0cykgeyByZXR1
cm4gcG9pc29uZWRCaXRzID8gYml0d2lzZV9jYXN0PFU+KHBvaXNvbmVkQml0cyBeIGtleSkgOiBi
aXR3aXNlX2Nhc3Q8VT4oMGxsKTsgfQogI2Vsc2UKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgog
ICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFBvaXNvbmVkQml0cyBwb2lzb24oVSBwdHIpIHsgcmV0
dXJuIGJpdHdpc2VfY2FzdDxQb2lzb25lZEJpdHM+KHB0cik7IH0KLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBVPgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPgogICAgIEFMV0FZU19JTkxJTkUg
c3RhdGljIFUgdW5wb2lzb24oUG9pc29uZWRCaXRzIHBvaXNvbmVkQml0cykgeyByZXR1cm4gYml0
d2lzZV9jYXN0PFU+KHBvaXNvbmVkQml0cyk7IH0KICNlbmRpZgogCiAgICAgUG9pc29uZWRCaXRz
IG1fcG9pc29uZWRCaXRzIHsgMCB9OwogfTsKIAotdGVtcGxhdGU8dWludHB0cl90JiBrZXksIHR5
cGVuYW1lIFQ+Ci11c2luZyBQb2lzb25lZCA9IFBvaXNvbmVkSW1wbDx1aW50cHRyX3QmLCBrZXks
IFQ+OwordGVtcGxhdGU8dHlwZW5hbWUgSzEsIEsxIGsxLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUg
SzIsIEsyIGsyLCB0eXBlbmFtZSBUMj4KK2lubGluZSB2b2lkIHN3YXAoUG9pc29uZWRJbXBsPEsx
LCBrMSwgVDE+JiBhLCBQb2lzb25lZEltcGw8SzIsIGsyLCBUMj4mIGIpCit7CisgICAgYS5zd2Fw
KGIpOworfQogCi0jaWYgVVNFKEpTVkFMVUU2NCkKLXRlbXBsYXRlPHVpbnQzMl90IGtleSwgdHlw
ZW5hbWUgVD4KLXVzaW5nIEludDMyUG9pc29uZWQgPSBQb2lzb25lZEltcGw8dWludHB0cl90LCBz
dGF0aWNfY2FzdDx1aW50cHRyX3Q+KGtleSkgPDwgMzIsIFQ+OworV1RGX0VYUE9SVF9QUklWQVRF
IHVpbnRwdHJfdCBtYWtlUG9pc29uKCk7CisKK2lubGluZSBjb25zdGV4cHIgdWludHB0cl90IG1h
a2VQb2lzb24odWludDMyX3Qga2V5KQoreworI2lmIEVOQUJMRShQT0lTT04pCisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMHg4MDAwMDAwMCB8IGtleSkgPDwgMzI7CiAjZWxzZQot
dGVtcGxhdGU8dWludDMyX3QsIHR5cGVuYW1lIFQ+Ci11c2luZyBJbnQzMlBvaXNvbmVkID0gUG9p
c29uZWRJbXBsPHVpbnRwdHJfdCwgMCwgVD47CisgICAgcmV0dXJuICh2b2lkKWtleSwgMDsKICNl
bmRpZgorfQogCi1XVEZfRVhQT1JUX1BSSVZBVEUgdWludHB0cl90IG1ha2VQb2lzb24oKTsKK3Rl
bXBsYXRlPHVpbnRwdHJfdCYga2V5LCB0eXBlbmFtZSBUPgordXNpbmcgUG9pc29uZWQgPSBQb2lz
b25lZEltcGw8dWludHB0cl90Jiwga2V5LCBUPjsKKwordGVtcGxhdGU8dWludDMyX3Qga2V5LCB0
eXBlbmFtZSBUPgordXNpbmcgQ29uc3RFeHByUG9pc29uZWQgPSBQb2lzb25lZEltcGw8dWludHB0
cl90LCBtYWtlUG9pc29uKGtleSksIFQ+OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAotdXNpbmcg
V1RGOjpJbnQzMlBvaXNvbmVkOwordXNpbmcgV1RGOjpDb25zdEV4cHJQb2lzb25lZDsKIHVzaW5n
IFdURjo6UG9pc29uZWQ7CiB1c2luZyBXVEY6OlBvaXNvbmVkQml0czsKIHVzaW5nIFdURjo6bWFr
ZVBvaXNvbjsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDIyNTgzOCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE5IEBACisyMDE3LTEyLTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxl
LmNvbT4KKworICAgICAgICBGaWxsIG91dCBzb21lIFBvaXNvbmVkIEFQSXMsIGZpeCBzb21lIGJ1
Z3MsIGFuZCBhZGQgc29tZSB0ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4MDcyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYwMDY4ODQ+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSkYgQmFzdGllbi4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvQ29uc3RFeHByUG9pc29uZWQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVk
LmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjppbml0aWFsaXplVGVzdFBvaXNv
bik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxNy0xMi0xMiAgRGFuaWVs
IEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW1dLXSBBZGQgbW9kZXJuIFdl
YktpdCBTUEkgdG8gc2V0IGF1dG8gZmlsbCBidXR0b24gdHlwZSBhbmQgcXVlcnkgaWYgdGhlIGF1
dG8gZmlsbCBidXR0b24gaXMgZW5hYmxlZApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFr
ZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMu
dHh0CShyZXZpc2lvbiAyMjU4MzcpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC05NSw2ICs5NSw3IEBAIHNldChUZXN0V1RGX1NPVVJDRVMK
ICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvQ2hlY2tlZEFyaXRobWV0aWNPcGVy
YXRpb25zLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9Db25jdXJyZW50
UHRySGFzaFNldC5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvQ29uZGl0
aW9uLmNwcAorICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9Db25zdEV4cHJQb2lz
b25lZC5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRU
YXNrLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9EYXRlTWF0aC5jcHAK
ICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvRGVxdWUuY3BwCkBAIC0xMjIsNiAr
MTIzLDcgQEAgc2V0KFRlc3RXVEZfU09VUkNFUwogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rl
c3RzL1dURi9PcHRpb25hbC5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYv
T3B0aW9uU2V0LmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9QYXJraW5n
TG90LmNwcAorICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9Qb2lzb25lZC5jcHAK
ICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvUHJpb3JpdHlRdWV1ZS5jcHAKICAg
ICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvUmVkQmxhY2tUcmVlLmNwcAogICAgICR7
VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9SZWYuY3BwCkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMjI1ODM3KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTc1Niw2
ICs3NTYsOCBAQAogCQlGNkI3QkU5NzE3NDY5Qjk2MDA4QTM0NDUgLyogYXNzb2NpYXRlLWZvcm0t
Y29udHJvbHMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNkI3QkU5NjE3NDY5QjdFMDA4QTM0NDUgLyogYXNzb2NpYXRlLWZvcm0tY29u
dHJvbHMuaHRtbCAqLzsgfTsKIAkJRjZGNDlDNkIxNTU0NUNBNzAwMDdGMzlEIC8qIERPTVdpbmRv
d0V4dGVuc2lvbk5vQ2FjaGVfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY2RjQ5QzY2MTU1NDVDOEQwMDA3RjM5RCAvKiBET01XaW5kb3dF
eHRlbnNpb25Ob0NhY2hlX0J1bmRsZS5jcHAgKi87IH07CiAJCUY2RkREREQ2MTQyNDFDNkYwMDRG
MTcyOSAvKiBwdXNoLXN0YXRlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjZGRERERDUxNDI0MUM0ODAwNEYxNzI5IC8qIHB1c2gtc3Rh
dGUuaHRtbCAqLzsgfTsKKwkJRkUwNUZBRUYxRkUwNjQ1QjAwMDkzMjMwIC8qIFBvaXNvbmVkLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMDVGQUVF
MUZFMDY0M0QwMDA5MzIzMCAvKiBQb2lzb25lZC5jcHAgKi87IH07CisJCUZFMDVGQUYxMUZFMDhD
RDQwMDA5MzIzMCAvKiBDb25zdEV4cHJQb2lzb25lZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTA1RkFGMDFGRTA4Q0NEMDAwOTMyMzAgLyogQ29u
c3RFeHByUG9pc29uZWQuY3BwICovOyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICov
CiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCkBAIC0xODU3LDYg
KzE4NTksOCBAQAogCQlGNkY0OUM2NzE1NTQ1QzhEMDAwN0YzOUQgLyogRE9NV2luZG93RXh0ZW5z
aW9uTm9DYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01X
aW5kb3dFeHRlbnNpb25Ob0NhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RjZGRERERDIxNDI0MUFENDAwNEYxNzI5IC8qIFByaXZhdGVCcm93c2luZ1B1c2hTdGF0ZU5vSGlz
dG9yeUNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBy
aXZhdGVCcm93c2luZ1B1c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRjZGRERERDUxNDI0MUM0ODAwNEYxNzI5IC8qIHB1c2gtc3RhdGUu
aHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJwdXNoLXN0YXRlLmh0bWwiOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTA1RkFFRTFGRTA2NDNEMDAwOTMyMzAgLyogUG9p
c29uZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9pc29uZWQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTA1RkFGMDFGRTA4Q0NEMDAwOTMy
MzAgLyogQ29uc3RFeHByUG9pc29uZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ29uc3RFeHByUG9pc29uZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGRUI2Rjc0RTFCMkJBNDRFMDA5RTQ5MjIgLyogTmFrZWRQdHIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmFrZWRQdHIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCkBAIC0yNjEz
LDYgKzI2MTcsNyBAQAogCQkJCUE3QTk2NkRBMTQwRUNDQzgwMDVFRjlCNCAvKiBDaGVja2VkQXJp
dGhtZXRpY09wZXJhdGlvbnMuY3BwICovLAogCQkJCTBGMzBDQjVCMUZDRTE3OTIwMDRCNTMyMyAv
KiBDb25jdXJyZW50UHRySGFzaFNldC5jcHAgKi8sCiAJCQkJMEZFQUUzNjcxQjdEMTlDQjAwQ0Ux
N0YyIC8qIENvbmRpdGlvbi5jcHAgKi8sCisJCQkJRkUwNUZBRjAxRkUwOENDRDAwMDkzMjMwIC8q
IENvbnN0RXhwclBvaXNvbmVkLmNwcCAqLywKIAkJCQk1MTcxNEVCOTFEMDg3NDE2MDA0NzIzQzQg
LyogQ3Jvc3NUaHJlYWRUYXNrLmNwcCAqLywKIAkJCQkyNkEyQzcyRTE1RTJFNzNDMDA1QjFBMTQg
LyogQ1N0cmluZy5jcHAgKi8sCiAJCQkJN0FBMDIxQkExQUIwOUVBNzAwNTI5NTNGIC8qIERhdGVN
YXRoLmNwcCAqLywKQEAgLTI2NDYsNiArMjY1MSw3IEBACiAJCQkJMUFGREU2NTQxOTUzQjJDMDAw
QzQ4RkZBIC8qIE9wdGlvbmFsLmNwcCAqLywKIAkJCQlDRTUwRDhDODFDODY2NUNFMDA3MkVBNUEg
LyogT3B0aW9uU2V0LmNwcCAqLywKIAkJCQkwRkU0NDc5NzFCNzZGMUUzMDA5NDk4RUIgLyogUGFy
a2luZ0xvdC5jcHAgKi8sCisJCQkJRkUwNUZBRUUxRkUwNjQzRDAwMDkzMjMwIC8qIFBvaXNvbmVk
LmNwcCAqLywKIAkJCQk1M0VDMjUzRjFFOTZCQzgwMDAwODMxQjkgLyogUHJpb3JpdHlRdWV1ZS5j
cHAgKi8sCiAJCQkJMEZDNkM0Q0IxNDEwMjdFMDAwNUI3RjBDIC8qIFJlZEJsYWNrVHJlZS5jcHAg
Ki8sCiAJCQkJOTNBNDI3QUExODBEQTI2NDAwQ0QyNEQ3IC8qIFJlZi5jcHAgKi8sCkBAIC0zMTkw
LDYgKzMxOTYsNyBAQAogCQkJCTdDODNERjFEMUQwQTU5MEMwMEZFQkNGMyAvKiBMb2NrLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE1N0Q1NEY2MUYzMzk1RDAwMEE5N0FBNyAvKiBMb2dnZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RFRUQxRDBBNTkwQzAwRkVCQ0YzIC8qIE1hdGhFeHRy
YXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkUwNUZBRjExRkUwOENENDAwMDkzMjMwIC8qIENv
bnN0RXhwclBvaXNvbmVkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERUVGMUQwQTU5MEMw
MEZFQkNGMyAvKiBNRDUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RFRjExRDBBNTkwQzAw
RkVCQ0YzIC8qIE1lZGlhVGltZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVGNjFEMEE1
OTBDMDBGRUJDRjMgLyogTWV0YUFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMyMTAs
NiArMzIxNyw3IEBACiAJCQkJN0M4M0RGMDUxRDBBNTkwQzAwRkVCQ0YzIC8qIFJ1bkxvb3AuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGMjYxRDBBNTkwQzAwRkVCQ0YzIC8qIFNhdHVyYXRl
ZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMzUyNEFFMUQ2
M0E0RkIwMDMxNzI5QiAvKiBTY29wZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTA1RkFFRjFG
RTA2NDVCMDAwOTMyMzAgLyogUG9pc29uZWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RG
MTIxRDBBNTkwQzAwRkVCQ0YzIC8qIFNjb3BlZExhbWJkYS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk3QzgzREYzRDFEMEE1OTBDMDBGRUJDRjMgLyogU2V0Rm9yU2NvcGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0M4M0RGMkExRDBBNTkwQzAwRkVCQ0YzIC8qIFNIQTEuY3BwIGluIFNvdXJjZXMg
Ki8sCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Db25zdEV4cHJQb2lzb25l
ZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29uc3RF
eHByUG9pc29uZWQuY3BwCShub25leGlzdGVudCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0NvbnN0RXhwclBvaXNvbmVkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM1
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlJlZkxvZ2dlci5oIgorI2luY2x1ZGUgPG11dGV4
PgorI2luY2x1ZGUgPHd0Zi9Qb2lzb25lZC5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7
CisKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBQb2lzb25BID0gMHhhYWFhOworc3RhdGljIGNvbnN0
IHVpbnQzMl90IFBvaXNvbkIgPSAweGJiYmI7CisKKy8vIEZvciB0aGVzZSB0ZXN0cywgd2UgbmVl
ZCBhIGJhc2UgY2xhc3MgYW5kIGEgZGVyaXZlZCBjbGFzcy4gRm9yIHRoaXMgcHVycG9zZSwKKy8v
IHdlIHJldXNlIHRoZSBSZWZMb2dnZXIgYW5kIERlcml2ZWRSZWZMb2dnZXIgY2xhc3Nlcy4KKwor
VEVTVChXVEZfQ29uc3RFeHByUG9pc29uZWQsIEJhc2ljKQoreworICAgIERlcml2ZWRSZWZMb2dn
ZXIgYSgiYSIpOworCisgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4g
ZW1wdHk7CisgICAgQVNTRVJUX0VRKG51bGxwdHIsIGVtcHR5LnVucG9pc29uZWQoKSk7CisKKyAg
ICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigm
YSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFT
U0VSVF9FUSgmYSwgJipwdHIpOworICAgICAgICBBU1NFUlRfRVEoJmEubmFtZSwgJnB0ci0+bmFt
ZSk7CisgICAgfQorCisgICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBS
ZWZMb2dnZXIqPiBwdHIgPSAmYTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25l
ZCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEs
IFJlZkxvZ2dlcio+IHAxID0gJmE7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEs
IFJlZkxvZ2dlcio+IHAyKHAxKTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwg
UmVmTG9nZ2VyKj4gcDMocDEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQo
KSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNT
RVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJp
dHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDMu
Yml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNv
bkEsIFJlZkxvZ2dlcio+IHAxID0gJmE7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNv
bkEsIFJlZkxvZ2dlcio+IHAyID0gcDE7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNv
bkIsIFJlZkxvZ2dlcio+IHAzID0gcDE7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lz
b25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAg
ICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUo
cDEuYml0cygpID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAh
PSBwMy5iaXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8
UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8
UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgQVNTRVJUX0VR
KCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29u
ZWQoKSk7CisKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4g
cDMgPSAmYTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4g
cDQgPSBXVEZNb3ZlKHAzKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkp
OworICAgICAgICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNT
RVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAz
LmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29uc3RFeHBy
UG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAgICAgQ29uc3RFeHBy
UG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoV1RGTW92ZShwMSkpOworICAgICAgICBB
U1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIu
dW5wb2lzb25lZCgpKTsKKworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZM
b2dnZXIqPiBwMyA9ICZhOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZM
b2dnZXIqPiBwNChXVEZNb3ZlKHAzKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lz
b25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwNC51bnBvaXNvbmVkKCkpOworCisgICAg
ICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRf
VFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENv
bnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBwMSA9ICZhOworICAg
ICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9IHAxOworICAg
ICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwMyA9IHAxOworICAg
ICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgm
YSwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVk
KCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAg
ICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDMuYml0cygpKTsKKyAgICB9CisKKyAgICB7
CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIERlcml2ZWRSZWZMb2dnZXIqPiBw
MSA9ICZhOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBw
MiA9IFdURk1vdmUocDEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7
CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBDb25z
dEV4cHJQb2lzb25lZDxQb2lzb25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDMgPSAmYTsKKyAgICAg
ICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQgPSBXVEZNb3ZlKHAz
KTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NF
UlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0
cygpID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5i
aXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29u
QSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lz
b25lZCgpKTsKKyAgICAgICAgcHRyLmNsZWFyKCk7CisgICAgICAgIEFTU0VSVF9FUShudWxscHRy
LCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICB9Cit9CisKK1RFU1QoV1RGX0NvbnN0RXhwclBvaXNv
bmVkLCBBc3NpZ25tZW50KQoreworICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOworICAgIFJl
ZkxvZ2dlciBiKCJiIik7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBjKCJjIik7CisKKyAgICB7Cisg
ICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKKyAg
ICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoJmIpOworICAg
ICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgm
YiwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDEgPSBwMjsKKyAgICAgICAgQVNTRVJUX0VR
KCZiLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29u
ZWQoKSk7CisKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4g
cDMoJmEpOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBw
NCgmYik7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAg
QVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAgICBwMyA9IHA0OworICAgICAg
ICBBU1NFUlRfRVEoJmIsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwg
cDQudW5wb2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIu
Yml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7Cisg
ICAgfQorCisgICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dn
ZXIqPiBwdHIoJmEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOwor
ICAgICAgICBwdHIgPSAmYjsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwdHIudW5wb2lzb25lZCgp
KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJl
ZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQo
KSk7CisgICAgICAgIHB0ciA9IG51bGxwdHI7CisgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBw
dHIudW5wb2lzb25lZCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNv
bmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29u
ZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoJmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAx
LnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsK
KyAgICAgICAgcDEgPSBXVEZNb3ZlKHAyKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS51bnBv
aXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CisKKyAg
ICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOworICAg
ICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7CisgICAg
ICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZi
LCBwNC51bnBvaXNvbmVkKCkpOworICAgICAgICBwMyA9IFdURk1vdmUocDQpOworICAgICAgICBB
U1NFUlRfRVEoJmIsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDQu
dW5wb2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0
cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAg
fQorCisgICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIq
PiBwMSgmYSk7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIERlcml2ZWRSZWZM
b2dnZXIqPiBwMigmYyk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBwMSA9IHAy
OworICAgICAgICBBU1NFUlRfRVEoJmMsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VS
VF9FUSgmYywgcDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQ
b2lzb25BLCBSZWZMb2dnZXIqPiBwMygmYSk7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBv
aXNvbkIsIERlcml2ZWRSZWZMb2dnZXIqPiBwNCgmYyk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwg
cDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwNC51bnBvaXNvbmVkKCkp
OworICAgICAgICBwMyA9IHA0OworICAgICAgICBBU1NFUlRfRVEoJmMsIHAzLnVucG9pc29uZWQo
KSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDQudW5wb2lzb25lZCgpKTsKKworICAgICAgICBB
U1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUo
cDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBDb25zdEV4
cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOworICAgICAgICBBU1NFUlRf
RVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICBwdHIgPSAmYzsKKyAgICAgICAgQVNT
RVJUX0VRKCZjLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENv
bnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKKyAgICAgICAgQ29u
c3RFeHByUG9pc29uZWQ8UG9pc29uQSwgRGVyaXZlZFJlZkxvZ2dlcio+IHAyKCZjKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMs
IHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHAxID0gV1RGTW92ZShwMik7CisgICAgICAgIEFT
U0VSVF9FUSgmYywgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMi51
bnBvaXNvbmVkKCkpOworCisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxv
Z2dlcio+IHAzKCZhKTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwgRGVyaXZl
ZFJlZkxvZ2dlcio+IHA0KCZjKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVk
KCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIHAz
ID0gV1RGTW92ZShwNCk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDMudW5wb2lzb25lZCgpKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZjLCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VS
VF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5i
aXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBv
aXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgm
YSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHB0ciA9IHB0cjsKKyAgICAgICAgQVNTRVJU
X0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0
RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAgIEFTU0VS
VF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21h
IGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQg
Ii1XdW5rbm93bi1wcmFnbWFzIgorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1X
c2VsZi1tb3ZlIgorI2VuZGlmCisgICAgICAgIHB0ciA9IFdURk1vdmUocHRyKTsKKyNpZiBDT01Q
SUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKyNlbmRpZgorICAgICAg
ICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0KK30KKworVEVTVChXVEZf
Q29uc3RFeHByUG9pc29uZWQsIFN3YXApCit7CisgICAgUmVmTG9nZ2VyIGEoImEiKTsKKyAgICBS
ZWZMb2dnZXIgYigiYiIpOworCisgICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lz
b25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNv
bkEsIFJlZkxvZ2dlcio+IHAyKCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNv
bmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAg
IHAxLnN3YXAocDIpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAxLnVucG9pc29uZWQoKSk7Cisg
ICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBDb25zdEV4
cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygmYSk7CisgICAgICAgIENvbnN0RXhw
clBvaXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KCZiKTsKKyAgICAgICAgQVNTRVJUX0VR
KCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29u
ZWQoKSk7CisgICAgICAgIHAzLnN3YXAocDQpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAzLnVu
cG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDQudW5wb2lzb25lZCgpKTsKKwor
ICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNT
RVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAx
LmJpdHMoKSA9PSBwMy5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMi5iaXRzKCkgIT0g
cDQuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBv
aXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9p
c29uQSwgUmVmTG9nZ2VyKj4gcDIoJmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9p
c29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAg
ICAgc3dhcChwMSwgcDIpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAxLnVucG9pc29uZWQoKSk7
CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBDb25z
dEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygmYSk7CisgICAgICAgIENvbnN0
RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KCZiKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9p
c29uZWQoKSk7CisgICAgICAgIHN3YXAocDMsIHA0KTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBw
My51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7
CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAyLmJpdHMoKSk7CisgICAgICAg
IEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJV
RShwMS5iaXRzKCkgPT0gcDMuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDIuYml0cygp
ICE9IHA0LmJpdHMoKSk7CisgICAgfQorfQorCitzdGF0aWMgQ29uc3RFeHByUG9pc29uZWQ8UG9p
c29uQSwgUmVmTG9nZ2VyKj4gcG9pc29uZWRQdHJGb28oUmVmTG9nZ2VyJiBsb2dnZXIpCit7Cisg
ICAgcmV0dXJuIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+KCZsb2dnZXIp
OworfQorCitURVNUKFdURl9Db25zdEV4cHJQb2lzb25lZCwgUmV0dXJuVmFsdWUpCit7CisgICAg
RGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CisKKyAgICB7CisgICAgICAgIGF1dG8gcHRyID0gcG9p
c29uZWRQdHJGb28oYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7
CisgICAgICAgIEFTU0VSVF9FUSgmYSwgJipwdHIpOworICAgICAgICBBU1NFUlRfRVEoJmEubmFt
ZSwgJnB0ci0+bmFtZSk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
CisKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZC5jcHAJKG5v
bmV4aXN0ZW50KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAi
UmVmTG9nZ2VyLmgiCisjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVkZSA8d3RmL1BvaXNvbmVkLmg+
CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKwordWludHB0cl90IGdfdGVzdFBvaXNvbkE7
Cit1aW50cHRyX3QgZ190ZXN0UG9pc29uQjsKKworc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVRlc3RQ
b2lzb24oKQoreworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25jZUZsYWc7
CisgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZU9uY2VGbGFnLCBbXSB7CisgICAgICAgIC8v
IE1ha2Ugc3VyZSB3ZSBnZXQgMiBkaWZmZXJlbnQgcG9pc29uIHZhbHVlcy4KKyAgICAgICAgZ190
ZXN0UG9pc29uQSA9IG1ha2VQb2lzb24oKTsKKyAgICAgICAgd2hpbGUgKCFnX3Rlc3RQb2lzb25C
IHx8IGdfdGVzdFBvaXNvbkIgPT0gZ190ZXN0UG9pc29uQSkKKyAgICAgICAgICAgIGdfdGVzdFBv
aXNvbkIgPSBtYWtlUG9pc29uKCk7CisgICAgfSk7Cit9CisKKy8vIEZvciB0aGVzZSB0ZXN0cywg
d2UgbmVlZCBhIGJhc2UgY2xhc3MgYW5kIGEgZGVyaXZlZCBjbGFzcy4gRm9yIHRoaXMgcHVycG9z
ZSwKKy8vIHdlIHJldXNlIHRoZSBSZWZMb2dnZXIgYW5kIERlcml2ZWRSZWZMb2dnZXIgY2xhc3Nl
cy4KKworVEVTVChXVEZfUG9pc29uZWQsIEJhc2ljKQoreworICAgIGluaXRpYWxpemVUZXN0UG9p
c29uKCk7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CisKKyAgICBQb2lzb25lZDxnX3Rl
c3RQb2lzb25BLCBSZWZMb2dnZXIqPiBlbXB0eTsKKyAgICBBU1NFUlRfRVEobnVsbHB0ciwgZW1w
dHkudW5wb2lzb25lZCgpKTsKKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29u
QSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lz
b25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCAmKnB0cik7CisgICAgICAgIEFTU0VSVF9F
USgmYS5uYW1lLCAmcHRyLT5uYW1lKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVk
PGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0ciA9ICZhOworICAgICAgICBBU1NFUlRfRVEo
JmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8
Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWQ8Z190
ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIocDEpOworCisgICAgICAgIEFTU0VSVF9FUSgmYSwg
cDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkp
OworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKworI2lmIEVO
QUJMRShNSVhFRF9QT0lTT04pCisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxv
Z2dlcio+IHAzKHAxKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwor
ICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDMuYml0cygpKTsKKyNlbmRpZgorICAg
IH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4g
cDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIg
PSBwMTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBB
U1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJp
dHMoKSA9PSBwMi5iaXRzKCkpOworCisjaWYgRU5BQkxFKE1JWEVEX1BPSVNPTikKKyAgICAgICAg
UG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDMgPSBwMTsKKyAgICAgICAgQVNT
RVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRz
KCkgIT0gcDMuYml0cygpKTsKKyNlbmRpZgorICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29u
ZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWQ8
Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgQVNT
RVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVu
cG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkp
OworCisjaWYgRU5BQkxFKE1JWEVEX1BPSVNPTikKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9p
c29uQSwgUmVmTG9nZ2VyKj4gcDMgPSAmYTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29u
QiwgUmVmTG9nZ2VyKj4gcDQgPSBXVEZNb3ZlKHAzKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBw
My51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7
CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworI2VuZGlmCisg
ICAgfQorCisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIq
PiBwMSA9ICZhOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBw
MihXVEZNb3ZlKHAxKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRf
VFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKworI2lmIEVOQUJMRShNSVhFRF9QT0lTT04p
CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzID0gJmE7Cisg
ICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KFdURk1vdmUocDMp
KTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NF
UlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMo
KSAhPSBwNC5iaXRzKCkpOworI2VuZGlmCisgICAgfQorCisjaWYgRU5BQkxFKE1JWEVEX1BPSVNP
TikKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIERlcml2ZWRSZWZMb2dn
ZXIqPiBwMSA9ICZhOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIq
PiBwMiA9IHAxOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAg
ICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUo
cDEuYml0cygpID09IHAyLmJpdHMoKSk7CisKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29u
QiwgUmVmTG9nZ2VyKj4gcDMgPSBwMTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNv
bmVkKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDMuYml0cygpKTsKKyAg
ICB9CisjZW5kaWYKKworI2lmIEVOQUJMRShNSVhFRF9QT0lTT04pCisgICAgeworICAgICAgICBQ
b2lzb25lZDxnX3Rlc3RQb2lzb25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAg
ICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIgPSBXVEZNb3ZlKHAxKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRf
RVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9
PSBwMi5iaXRzKCkpOworCisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIERlcml2ZWRS
ZWZMb2dnZXIqPiBwMyA9ICZhOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZM
b2dnZXIqPiBwNCA9IFdURk1vdmUocDMpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9p
c29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDQudW5wb2lzb25lZCgpKTsKKyAgICAg
ICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQorI2VuZGlmCisK
KyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigm
YSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHB0
ci5jbGVhcigpOworICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcHRyLnVucG9pc29uZWQoKSk7
CisgICAgfQorfQorCitURVNUKFdURl9Qb2lzb25lZCwgQXNzaWdubWVudCkKK3sKKyAgICBpbml0
aWFsaXplVGVzdFBvaXNvbigpOworICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOworICAgIFJl
ZkxvZ2dlciBiKCJiIik7CisgICAgRGVyaXZlZFJlZkxvZ2dlciBjKCJjIik7CisKKyAgICB7Cisg
ICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKKyAgICAg
ICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoJmIpOworICAgICAgICBB
U1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIu
dW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDEgPSBwMjsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBw
MS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7
CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworCisjaWYgRU5B
QkxFKE1JWEVEX1BPSVNPTikKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9n
Z2VyKj4gcDMoJmEpOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIq
PiBwNCgmYik7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAgICBwMyA9IHA0OworICAg
ICAgICBBU1NFUlRfRVEoJmIsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgm
YiwgcDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0
LmJpdHMoKSk7CisjZW5kaWYKKyAgICB9CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVz
dFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRy
LnVucG9pc29uZWQoKSk7CisgICAgICAgIHB0ciA9ICZiOworICAgICAgICBBU1NFUlRfRVEoJmIs
IHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190
ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBw
dHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcHRyID0gbnVsbHB0cjsKKyAgICAgICAgQVNTRVJU
X0VRKG51bGxwdHIsIHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAg
UG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOworICAgICAgICBQb2lz
b25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMigmYik7CisgICAgICAgIEFTU0VSVF9F
USgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNv
bmVkKCkpOworICAgICAgICBwMSA9IFdURk1vdmUocDIpOworICAgICAgICBBU1NFUlRfRVEoJmIs
IHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgp
KTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CisKKyNpZiBF
TkFCTEUoTUlYRURfUE9JU09OKQorICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZM
b2dnZXIqPiBwMygmYSk7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dl
cio+IHA0KCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAg
ICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIHAzID0gV1RGTW92
ZShwNCk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAg
QVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5i
aXRzKCkgIT0gcDQuYml0cygpKTsKKyNlbmRpZgorICAgIH0KKworI2lmIEVOQUJMRShNSVhFRF9Q
T0lTT04pCisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIq
PiBwMSgmYSk7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIERlcml2ZWRSZWZMb2dn
ZXIqPiBwMigmYyk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAg
ICAgICAgQVNTRVJUX0VRKCZjLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBwMSA9IHAyOwor
ICAgICAgICBBU1NFUlRfRVEoJmMsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9F
USgmYywgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09
IHAyLmJpdHMoKSk7CisKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2Vy
Kj4gcDMoJmEpOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBEZXJpdmVkUmVmTG9n
Z2VyKj4gcDQoJmMpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7Cisg
ICAgICAgIEFTU0VSVF9FUSgmYywgcDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDMgPSBwNDsK
KyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRf
RVEoJmMsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAh
PSBwNC5iaXRzKCkpOworICAgIH0KKyNlbmRpZgorCisgICAgeworICAgICAgICBQb2lzb25lZDxn
X3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOworICAgICAgICBBU1NFUlRfRVEoJmEs
IHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICBwdHIgPSAmYzsKKyAgICAgICAgQVNTRVJUX0VR
KCZjLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICB9CisKKyNpZiBFTkFCTEUoTUlYRURfUE9JU09O
KQorICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEo
JmEpOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4g
cDIoJmMpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAg
IEFTU0VSVF9FUSgmYywgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDEgPSBXVEZNb3ZlKHAy
KTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NF
UlRfRVEoJmMsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMo
KSA9PSBwMi5iaXRzKCkpOworCisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxv
Z2dlcio+IHAzKCZhKTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQiwgRGVyaXZlZFJl
ZkxvZ2dlcio+IHA0KCZjKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkp
OworICAgICAgICBBU1NFUlRfRVEoJmMsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIHAzID0g
V1RGTW92ZShwNCk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDMudW5wb2lzb25lZCgpKTsKKyAg
ICAgICAgQVNTRVJUX0VRKCZjLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfVFJV
RShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9CisjZW5kaWYKKworICAgIHsKKyAgICAg
ICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAgICAgICAg
QVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcHRyID0gcHRyOworICAg
ICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0KKworICAgIHsKKyAg
ICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyNpZiBDT01QSUxFUihDTEFORykK
KyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMg
aWdub3JlZCAiLVd1bmtub3duLXByYWdtYXMiCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdu
b3JlZCAiLVdzZWxmLW1vdmUiCisjZW5kaWYKKyAgICAgICAgcHRyID0gV1RGTW92ZShwdHIpOwor
I2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorI2VuZGlm
CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgfQorfQorCitU
RVNUKFdURl9Qb2lzb25lZCwgU3dhcCkKK3sKKyAgICBpbml0aWFsaXplVGVzdFBvaXNvbigpOwor
ICAgIFJlZkxvZ2dlciBhKCJhIik7CisgICAgUmVmTG9nZ2VyIGIoImIiKTsKKworICAgIHsKKyAg
ICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOworICAgICAg
ICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMigmYik7CisgICAgICAgIEFT
U0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51
bnBvaXNvbmVkKCkpOworICAgICAgICBwMS5zd2FwKHAyKTsKKyAgICAgICAgQVNTRVJUX0VRKCZi
LCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQo
KSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAyLmJpdHMoKSk7CisKKyNp
ZiBFTkFCTEUoTUlYRURfUE9JU09OKQorICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBS
ZWZMb2dnZXIqPiBwMygmYSk7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxv
Z2dlcio+IHA0KCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOwor
ICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIHAzLnN3YXAo
cDQpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFT
U0VSVF9FUSgmYSwgcDQudW5wb2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMy5i
aXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAz
LmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAyLmJpdHMoKSAhPSBwNC5iaXRzKCkpOwor
I2VuZGlmCisgICAgfQorCisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBS
ZWZMb2dnZXIqPiBwMSgmYSk7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxv
Z2dlcio+IHAyKCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwor
ICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CisjaWYgRU5BQkxFKE1JWEVE
X1BPSVNPTikKKyAgICAgICAgc3dhcChwMSwgcDIpOworI2Vsc2UKKyAgICAgICAgc3RkOjpzd2Fw
KHAxLCBwMik7CisjZW5kaWYKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVkKCkp
OworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNT
RVJUX1RSVUUocDEuYml0cygpICE9IHAyLmJpdHMoKSk7CisKKyNpZiBFTkFCTEUoTUlYRURfUE9J
U09OKQorICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygmYSk7
CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0KCZiKTsKKyAg
ICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEo
JmIsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIHN3YXAocDMsIHA0KTsKKyAgICAgICAgQVNT
RVJUX0VRKCZiLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHA0LnVu
cG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMo
KSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMy5iaXRzKCkpOworICAgICAg
ICBBU1NFUlRfVFJVRShwMi5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyNlbmRpZgorICAgIH0KK30K
Kworc3RhdGljIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHBvaXNvbmVkUHRy
Rm9vKFJlZkxvZ2dlciYgbG9nZ2VyKQoreworICAgIHJldHVybiBQb2lzb25lZDxnX3Rlc3RQb2lz
b25BLCBSZWZMb2dnZXIqPigmbG9nZ2VyKTsKK30KKworVEVTVChXVEZfUG9pc29uZWQsIFJldHVy
blZhbHVlKQoreworICAgIGluaXRpYWxpemVUZXN0UG9pc29uKCk7CisgICAgRGVyaXZlZFJlZkxv
Z2dlciBhKCJhIik7CisKKyAgICB7CisgICAgICAgIGF1dG8gcHRyID0gcG9pc29uZWRQdHJGb28o
YSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFT
U0VSVF9FUSgmYSwgJipwdHIpOworICAgICAgICBBU1NFUlRfRVEoJmEubmFtZSwgJnB0ci0+bmFt
ZSk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCisK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329229</attachid>
            <date>2017-12-13 10:28:17 -0800</date>
            <delta_ts>2017-12-13 10:28:17 -0800</delta_ts>
            <desc>patch for landing.</desc>
            <filename>bug-180724.patch</filename>
            <type>text/plain</type>
            <size>42481</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI1ODM3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDE3LTEyLTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBG
aWxsIG91dCBzb21lIFBvaXNvbmVkIEFQSXMsIGZpeCBzb21lIGJ1Z3MsIGFuZCBhZGQgc29tZSB0
ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
MDcyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYwMDY4ODQ+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgSkYgQmFzdGllbi4KKworICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlv
blRhYmxlLmg6CisKIDIwMTctMTItMTIgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4K
IAogICAgICAgICBTdHJ1Y3R1cmUsIFN0cnVjdHVyZVJhcmVEYXRhLCBhbmQgUHJvcGVydHlUYWJs
ZSBzaG91bGQgYmUgaW4gSXNvU3Vic3BhY2VzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGUuaAkocmV2aXNp
b24gMjI1ODM3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJh
bnNpdGlvblRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTg3LDggKzE4Nyw4IEBA
IHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgU2luZ2xlU2xvdFRyYW5zaXRp
b25XZWFrT3duZXI7Ci0gICAgdXNpbmcgUG9pc29uZWRUcmFuc2l0aW9uTWFwUHRyID0gSW50MzJQ
b2lzb25lZDxUcmFuc2l0aW9uTWFwUG9pc29uLCBUcmFuc2l0aW9uTWFwKj47Ci0gICAgdXNpbmcg
UG9pc29uZWRXZWFrSW1wbFB0ciA9IEludDMyUG9pc29uZWQ8V2Vha0ltcGxQb2lzb24sIFdlYWtJ
bXBsKj47CisgICAgdXNpbmcgUG9pc29uZWRUcmFuc2l0aW9uTWFwUHRyID0gQ29uc3RFeHByUG9p
c29uZWQ8VHJhbnNpdGlvbk1hcFBvaXNvbiwgVHJhbnNpdGlvbk1hcCo+OworICAgIHVzaW5nIFBv
aXNvbmVkV2Vha0ltcGxQdHIgPSBDb25zdEV4cHJQb2lzb25lZDxXZWFrSW1wbFBvaXNvbiwgV2Vh
a0ltcGwqPjsKIAogICAgIGJvb2wgaXNVc2luZ1NpbmdsZVNsb3QoKSBjb25zdAogICAgIHsKSW5k
ZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyMjU4MzcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDE3LTEyLTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFw
cGxlLmNvbT4KKworICAgICAgICBGaWxsIG91dCBzb21lIFBvaXNvbmVkIEFQSXMsIGZpeCBzb21l
IGJ1Z3MsIGFuZCBhZGQgc29tZSB0ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4MDcyNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYwMDY4
ODQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSkYgQmFzdGllbi4KKworICAgICAgICBBbHNvIHJl
bmFtZSBJbnQzMlBvaXNvbmVkIHRvIENvbnN0RXhwclBvaXNvbmVkLiAgVGhlIGtleSBpdCB0YWtl
cyBpcyBhY3R1YWxseSBhCisgICAgICAgIHVpbnQzMl90LiAgU28sIEludDMyIGlzIHJlYWxseSBh
IG1pc25vbWVyLiAgSW4gYWRkaXRpb24sIHRoZSBrZXkgbmVlZHMgdG8gYmUgYQorICAgICAgICBj
b25zdGV4cHIuICBTbywgQ29uc3RFeHByUG9pc29uZWQgaXMgYSBiZXR0ZXIgbmFtZSBmb3IgaXQu
CisKKyAgICAgICAgKiB3dGYvUG9pc29uZWQuY3BwOgorICAgICAgICAoV1RGOjptYWtlUG9pc29u
KToKKyAgICAgICAgKiB3dGYvUG9pc29uZWQuaDoKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBs
SGVscGVyOjphc1JlZmVyZW5jZSk6CisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6UG9pc29u
ZWRJbXBsKToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpjbGVhcik6CisgICAgICAgIChX
VEY6OlBvaXNvbmVkSW1wbDo6b3BlcmF0b3IqIGNvbnN0KToKKyAgICAgICAgKFdURjo6UG9pc29u
ZWRJbXBsOjpvcGVyYXRvci0+IGNvbnN0KToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpv
cGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvciE9
IGNvbnN0KToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVyYXRvcjwgY29uc3QpOgor
ICAgICAgICAoV1RGOjpQb2lzb25lZEltcGw6Om9wZXJhdG9yPD0gY29uc3QpOgorICAgICAgICAo
V1RGOjpQb2lzb25lZEltcGw6Om9wZXJhdG9yPiBjb25zdCk6CisgICAgICAgIChXVEY6OlBvaXNv
bmVkSW1wbDo6b3BlcmF0b3I+PSBjb25zdCk6CisgICAgICAgIChXVEY6OlBvaXNvbmVkSW1wbDo6
b3BlcmF0b3I9KToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpzd2FwKToKKyAgICAgICAg
KFdURjo6UG9pc29uZWRJbXBsOjpleGNoYW5nZSk6CisgICAgICAgIChXVEY6OnN3YXApOgorICAg
ICAgICAoV1RGOjptYWtlUG9pc29uKToKKyAgICAgICAgKFdURjo6UG9pc29uZWRJbXBsOjpvcGVy
YXRvcj09KTogRGVsZXRlZC4KKwogMjAxNy0xMi0xMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbSlNDXSBJbXBsZW1lbnQgb3B0aW1pemVkIFdlYWtN
YXAgYW5kIFdlYWtTZXQKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVkLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Qb2lzb25lZC5jcHAJKHJldmlzaW9uIDIyNTgzNykKKysr
IFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMs
NyBAQCBuYW1lc3BhY2UgV1RGIHsKIHVpbnRwdHJfdCBtYWtlUG9pc29uKCkKIHsKICAgICB1aW50
cHRyX3Qga2V5ID0gY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKTsKLSNpZiBVU0UoSlNW
QUxVRTY0KSAmJiAhT1MoV0lORE9XUykKKyNpZiBFTkFCTEUoUE9JU09OKQogICAgIGtleSA9IChr
ZXkgPDwgMzIpIF4gKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oY3J5cHRvZ3JhcGhpY2FsbHlSYW5k
b21OdW1iZXIoKSkgPDwgMyk7CiAgICAgLy8gRW5zdXJlIHRoYXQgdGhlIHBvaXNvbmVkIGJpdHMg
KHBvaW50ZXIgXiBrZXkpIGRvIG5vdCBtYWtlIGEgdmFsaWQgcG9pbnRlciBhbmQKICAgICAvLyBj
YW5ub3QgYmUgMC4gV2UgZW5zdXJlIHRoYXQgaXQgaXMgemVybyBzbyB0aGF0IHRoZSBwb2lzb25l
ZCBiaXRzIGNhbiBhbHNvIGJlCkBAIC01MSw0ICs1MSwzIEBAIHVpbnRwdHJfdCBtYWtlUG9pc29u
KCkKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCi0KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BvaXNv
bmVkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUG9pc29uZWQuaAkocmV2aXNpb24g
MjI1ODM3KQorKysgU291cmNlL1dURi93dGYvUG9pc29uZWQuaAkod29ya2luZyBjb3B5KQpAQCAt
MjcsMTEgKzI3LDM2IEBACiAKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogCisjZGVmaW5l
IEVOQUJMRV9QT0lTT04gMQogI2RlZmluZSBFTkFCTEVfUE9JU09OX0FTU0VSVFMgMAogCisvLyBP
bGRlciB2ZXJzaW9ucyBvZiBnY2MgYW5kIGNsYW5nIGhhdmUgYSBidWcgd2hpY2ggcmVzdWx0cyBp
biBidWlsZCBmYWlsdXJlcworLy8gd2hlbiB1c2luZyB0ZW1wbGF0ZSBtZXRob2RzIHRoYXQgdGFr
ZSBhbiBhcmd1bWVudCBvZiBQb2lzb25lZEltcGw8SzIsIGsyLCBUMj4KKy8vIHdoZW4gdGhlIEtl
eVR5cGUgaXMgYSB1aW50cHRyX3QgKGkuZS4gd2hlbiB3ZSdyZSB1c2luZyB0aGUgUG9pc29uZWQg
dmFyaWFudAorLy8gb2YgUG9pc29uZWRJbXBsKS4gVGhpcyBidWcgZG9lcyBub3QgbWFuaWZlc3Qg
Zm9yIHRoZSBDb25zdEV4cHJQb2lzb25lZCB2YXJpYW50LgorLy8gSW4gcHJhY3RpY2UsIHdlIHdp
bGwgbGlrZWx5IG9ubHkgdXNlIHRoZXNlIG1ldGhvZHMgZm9yIGluc3RhbnRpYXRpb25zIG9mIHRo
ZQorLy8gQ29uc3RFeHByUG9pc29uZWQgdmFyaWFudC4gSGVuY2UuIHRoaXMgYnVnIGlzIG5vdCBh
IHNob3cgc3RvcHBlci4KKy8vIFRoYXQgc2FpZCwgd2UnbGwgZGVmaW5lIEVOQUJMRV9NSVhFRF9Q
T0lTT04gYWNjb3JkaW5nbHkgc28gdGhhdCB3ZSBjYW4gdXNlCisvLyBpdCB0byBkaXNhYmxlIHRo
ZSBhZmZlY3RlZCB0ZXN0cyB3aGVuIGJ1aWxkaW5nIHdpdGggb2xkIGNvbXBpbGVycy4KKworI2lm
IE9TKERBUldJTikKKyNkZWZpbmUgRU5BQkxFX01JWEVEX1BPSVNPTiAoX19jbGFuZ19tYWpvcl9f
ID49IDkpCisjZWxpZiBkZWZpbmVkKF9fY2xhbmdfbWFqb3JfXykKKyNkZWZpbmUgRU5BQkxFX01J
WEVEX1BPSVNPTiAoX19jbGFuZ19tYWpvcl9fID49IDQpCisjZWxpZiBkZWZpbmVkKF9fR05VQ19f
KQorI2luY2x1ZGUgPGZlYXR1cmVzLmg+CisjZGVmaW5lIEVOQUJMRV9NSVhFRF9QT0lTT04gKF9f
R05VQ19QUkVSRVEoNywyKSkKKyNlbmRpZiAvLyAhZGVmaW5lZChfX0dOVUNfXykKKworI2lmbmRl
ZiBFTkFCTEVfTUlYRURfUE9JU09OCisjZGVmaW5lIEVOQUJMRV9NSVhFRF9QT0lTT04gMCAvLyBE
aXNhYmxlIGZvciBldmVyeXRoaW5nIGVsc2UuCisjZW5kaWYKKwogLy8gTm90IGN1cnJlbnRseSBz
dXBwb3J0ZWQgZm9yIDMyLWJpdCBvciBPUyhXSU5ET1dTKSBidWlsZHMgKGJlY2F1c2Ugb2YgbWlz
c2luZyBsbGludCBzdXBwb3J0KS4KIC8vIE1ha2Ugc3VyZSBpdCdzIGRpc2FibGVkLgogI2lmIFVT
RShKU1ZBTFVFMzJfNjQpIHx8IE9TKFdJTkRPV1MpCisjdW5kZWYgRU5BQkxFX1BPSVNPTgorI2Rl
ZmluZSBFTkFCTEVfUE9JU09OIDAKICN1bmRlZiBFTkFCTEVfUE9JU09OX0FTU0VSVFMKICNkZWZp
bmUgRU5BQkxFX1BPSVNPTl9BU1NFUlRTIDAKICNlbmRpZgpAQCAtNDAsMTcgKzY1LDQ3IEBAIG5h
bWVzcGFjZSBXVEYgewogCiB1c2luZyBQb2lzb25lZEJpdHMgPSB1aW50cHRyX3Q7CiAKK25hbWVz
cGFjZSBQb2lzb25lZEltcGxIZWxwZXIgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0
IGlzRnVuY3Rpb25Qb2ludGVyIDogc3RkOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCBzdGQ6Omlz
X2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8VD46OnR5cGU+Ojp2YWx1ZT4g
eyB9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IGlzVm9pZFBvaW50ZXIgOiBzdGQ6
OmludGVncmFsX2NvbnN0YW50PGJvb2wsIHN0ZDo6aXNfdm9pZDx0eXBlbmFtZSBzdGQ6OnJlbW92
ZV9wb2ludGVyPFQ+Ojp0eXBlPjo6dmFsdWU+IHsgfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4K
K3N0cnVjdCBpc0NvbnZlcnRpYmxlVG9SZWZlcmVuY2UgOiBzdGQ6OmludGVncmFsX2NvbnN0YW50
PGJvb2wsICFpc0Z1bmN0aW9uUG9pbnRlcjxUPjo6dmFsdWUgJiYgIWlzVm9pZFBvaW50ZXI8VD46
OnZhbHVlPiB7IH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit0eXBlbmFtZSBzdGQ6OmVuYWJs
ZV9pZl90PCFpc0NvbnZlcnRpYmxlVG9SZWZlcmVuY2U8VD46OnZhbHVlLCBpbnQ+JgorYXNSZWZl
cmVuY2UoVCkgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+Cit0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PGlzQ29udmVydGlibGVUb1JlZmVy
ZW5jZTxUPjo6dmFsdWUsIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8VD46OnR5cGU+Jgor
YXNSZWZlcmVuY2UoVCBwdHIpIHsgcmV0dXJuICpwdHI7IH0KKworfSAvLyBuYW1lc3BhY2UgUG9p
c29uZWRJbXBsSGVscGVyCisKIHRlbXBsYXRlPHR5cGVuYW1lIEtleVR5cGUsIEtleVR5cGUga2V5
LCB0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19wb2ludGVy
PFQ+Ojp2YWx1ZT4+CiBjbGFzcyBQb2lzb25lZEltcGwgewogcHVibGljOgogICAgIFBvaXNvbmVk
SW1wbCgpIHsgfQogCi0gICAgZXhwbGljaXQgUG9pc29uZWRJbXBsKFQgcHRyKQorICAgIFBvaXNv
bmVkSW1wbChUIHB0cikKICAgICAgICAgOiBtX3BvaXNvbmVkQml0cyhwb2lzb24ocHRyKSkKICAg
ICB7IH0KIAogICAgIFBvaXNvbmVkSW1wbChjb25zdCBQb2lzb25lZEltcGwmKSA9IGRlZmF1bHQ7
CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLMiwgSzIgazIsIHR5cGVuYW1lIFQyPgorICAgIFBv
aXNvbmVkSW1wbChjb25zdCBQb2lzb25lZEltcGw8SzIsIGsyLCBUMj4mIG90aGVyKQorICAgICAg
ICA6IG1fcG9pc29uZWRCaXRzKHBvaXNvbjxUPihvdGhlci51bnBvaXNvbmVkKCkpKQorICAgIHsg
fQorCisgICAgUG9pc29uZWRJbXBsKFBvaXNvbmVkSW1wbCYmIG90aGVyKQorICAgICAgICA6IG1f
cG9pc29uZWRCaXRzKFdURk1vdmUob3RoZXIubV9wb2lzb25lZEJpdHMpKQorICAgIHsgfQorCiAg
ICAgZXhwbGljaXQgUG9pc29uZWRJbXBsKFBvaXNvbmVkQml0cyBwb2lzb25lZEJpdHMpCiAgICAg
ICAgIDogbV9wb2lzb25lZEJpdHMocG9pc29uZWRCaXRzKQogICAgIHsgfQpAQCAtNzIsNyArMTI3
LDEwIEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4KICAgICBVIHVucG9p
c29uZWQoKSBjb25zdCB7IHJldHVybiB1bnBvaXNvbjxVPihtX3BvaXNvbmVkQml0cyk7IH0KIAot
ICAgIEFMV0FZU19JTkxJTkUgVCBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gdW5wb2lzb248
VD4obV9wb2lzb25lZEJpdHMpOyB9CisgICAgdm9pZCBjbGVhcigpIHsgbV9wb2lzb25lZEJpdHMg
PSAwOyB9CisKKyAgICBhdXRvJiBvcGVyYXRvciooKSBjb25zdCB7IEFTU0VSVChtX3BvaXNvbmVk
Qml0cyk7IHJldHVybiBQb2lzb25lZEltcGxIZWxwZXI6OmFzUmVmZXJlbmNlKHVucG9pc29uKG1f
cG9pc29uZWRCaXRzKSk7IH0KKyAgICBBTFdBWVNfSU5MSU5FIFQgb3BlcmF0b3ItPigpIGNvbnN0
IHsgcmV0dXJuIHVucG9pc29uKG1fcG9pc29uZWRCaXRzKTsgfQogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVSA9IFBvaXNvbmVkQml0cz4KICAgICBVIGJpdHMoKSBjb25zdCB7IHJldHVybiBiaXR3
aXNlX2Nhc3Q8VT4obV9wb2lzb25lZEJpdHMpOyB9CkBAIC04MCw1NiArMTM4LDk5IEBAIHB1Ymxp
YzoKICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3BvaXNvbmVkQml0czsg
fQogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fcG9pc29u
ZWRCaXRzOyB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUG9pc29uZWRJbXBsJiBiKSBj
b25zdAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQb2lzb25lZEltcGwmIGIpIGNvbnN0IHsg
cmV0dXJuIG1fcG9pc29uZWRCaXRzID09IGIubV9wb2lzb25lZEJpdHM7IH0KKyAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgUG9pc29uZWRJbXBsJiBiKSBjb25zdCB7IHJldHVybiBtX3BvaXNvbmVk
Qml0cyAhPSBiLm1fcG9pc29uZWRCaXRzOyB9CisgICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgUG9p
c29uZWRJbXBsJiBiKSBjb25zdCB7IHJldHVybiBtX3BvaXNvbmVkQml0cyA8IGIubV9wb2lzb25l
ZEJpdHM7IH0KKyAgICBib29sIG9wZXJhdG9yPD0oY29uc3QgUG9pc29uZWRJbXBsJiBiKSBjb25z
dCB7IHJldHVybiBtX3BvaXNvbmVkQml0cyA8PSBiLm1fcG9pc29uZWRCaXRzOyB9CisgICAgYm9v
bCBvcGVyYXRvcj4oY29uc3QgUG9pc29uZWRJbXBsJiBiKSBjb25zdCB7IHJldHVybiBtX3BvaXNv
bmVkQml0cyA+IGIubV9wb2lzb25lZEJpdHM7IH0KKyAgICBib29sIG9wZXJhdG9yPj0oY29uc3Qg
UG9pc29uZWRJbXBsJiBiKSBjb25zdCB7IHJldHVybiBtX3BvaXNvbmVkQml0cyA+PSBiLm1fcG9p
c29uZWRCaXRzOyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIG9wZXJhdG9yPT0o
VSBiKSBjb25zdCB7IHJldHVybiB1bnBvaXNvbmVkPFU+KCkgPT0gYjsgfQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFU+IGJvb2wgb3BlcmF0b3IhPShVIGIpIGNvbnN0IHsgcmV0dXJuIHVucG9pc29u
ZWQ8VT4oKSAhPSBiOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBvcGVyYXRvcjwo
VSBiKSBjb25zdCB7IHJldHVybiB1bnBvaXNvbmVkPFU+KCkgPCBiOyB9CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVT4gYm9vbCBvcGVyYXRvcjw9KFUgYikgY29uc3QgeyByZXR1cm4gdW5wb2lzb25l
ZDxVPigpIDw9IGI7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIG9wZXJhdG9yPihV
IGIpIGNvbnN0IHsgcmV0dXJuIHVucG9pc29uZWQ8VT4oKSA+IGI7IH0KKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBVPiBib29sIG9wZXJhdG9yPj0oVSBiKSBjb25zdCB7IHJldHVybiB1bnBvaXNvbmVk
PFU+KCkgPj0gYjsgfQorCisgICAgUG9pc29uZWRJbXBsJiBvcGVyYXRvcj0oVCBwdHIpCiAgICAg
ewotICAgICAgICByZXR1cm4gbV9wb2lzb25lZEJpdHMgPT0gYi5tX3BvaXNvbmVkQml0czsKKyAg
ICAgICAgbV9wb2lzb25lZEJpdHMgPSBwb2lzb24ocHRyKTsKKyAgICAgICAgcmV0dXJuICp0aGlz
OwogICAgIH0KKyAgICBQb2lzb25lZEltcGwmIG9wZXJhdG9yPShjb25zdCBQb2lzb25lZEltcGwm
KSA9IGRlZmF1bHQ7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQdHJUeXBlID0gdm9pZCosIHR5
cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFB0clR5cGU+
Ojp2YWx1ZT46OnR5cGU+Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFB0clR5cGUgYikKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBLMiwgSzIgazIsIHR5cGVuYW1lIFQyPgorICAgIFBvaXNvbmVk
SW1wbCYgb3BlcmF0b3I9KGNvbnN0IFBvaXNvbmVkSW1wbDxLMiwgazIsIFQyPiYgb3RoZXIpCiAg
ICAgewotICAgICAgICByZXR1cm4gdW5wb2lzb25lZDxQdHJUeXBlPigpID09IGI7CisgICAgICAg
IG1fcG9pc29uZWRCaXRzID0gcG9pc29uPFQ+KG90aGVyLnVucG9pc29uZWQoKSk7CisgICAgICAg
IHJldHVybiAqdGhpczsKICAgICB9CiAKLSAgICBQb2lzb25lZEltcGwmIG9wZXJhdG9yPShUIHB0
cikKKyAgICB2b2lkIHN3YXAoUG9pc29uZWRJbXBsJiBvKQogICAgIHsKLSAgICAgICAgbV9wb2lz
b25lZEJpdHMgPSBwb2lzb24ocHRyKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICBz
dGQ6OnN3YXAobV9wb2lzb25lZEJpdHMsIG8ubV9wb2lzb25lZEJpdHMpOworICAgIH0KKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEsyLCBLMiBrMiwgdHlwZW5hbWUgVDI+CisgICAgdm9pZCBzd2Fw
KFBvaXNvbmVkSW1wbDxLMiwgazIsIFQyPiYgbykKKyAgICB7CisgICAgICAgIFQgdDEgPSB0aGlz
LT51bnBvaXNvbmVkKCk7CisgICAgICAgIFQyIHQyID0gby51bnBvaXNvbmVkKCk7CisgICAgICAg
IHN0ZDo6c3dhcCh0MSwgdDIpOworICAgICAgICBtX3BvaXNvbmVkQml0cyA9IHBvaXNvbih0MSk7
CisgICAgICAgIG8gPSB0MjsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBVPgorICAgIFQg
ZXhjaGFuZ2UoVSYmIG5ld1ZhbHVlKQorICAgIHsKKyAgICAgICAgVCBvbGRWYWx1ZSA9IHVucG9p
c29uZWQoKTsKKyAgICAgICAgbV9wb2lzb25lZEJpdHMgPSBwb2lzb24oc3RkOjpmb3J3YXJkPFU+
KG5ld1ZhbHVlKSk7CisgICAgICAgIHJldHVybiBvbGRWYWx1ZTsKICAgICB9Ci0gICAgUG9pc29u
ZWRJbXBsJiBvcGVyYXRvcj0oY29uc3QgUG9pc29uZWRJbXBsJikgPSBkZWZhdWx0OwogCiBwcml2
YXRlOgotI2lmIFVTRShKU1ZBTFVFNjQpCisjaWYgRU5BQkxFKFBPSVNPTikKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBVPgogICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFBvaXNvbmVkQml0cyBwb2lz
b24oVSBwdHIpIHsgcmV0dXJuIHB0ciA/IGJpdHdpc2VfY2FzdDxQb2lzb25lZEJpdHM+KHB0cikg
XiBrZXkgOiAwOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBVID0gVD4KICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBVIHVucG9pc29uKFBvaXNvbmVk
Qml0cyBwb2lzb25lZEJpdHMpIHsgcmV0dXJuIHBvaXNvbmVkQml0cyA/IGJpdHdpc2VfY2FzdDxV
Pihwb2lzb25lZEJpdHMgXiBrZXkpIDogYml0d2lzZV9jYXN0PFU+KDBsbCk7IH0KICNlbHNlCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBQb2lzb25l
ZEJpdHMgcG9pc29uKFUgcHRyKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8UG9pc29uZWRCaXRzPihw
dHIpOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBV
ID0gVD4KICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBVIHVucG9pc29uKFBvaXNvbmVkQml0cyBw
b2lzb25lZEJpdHMpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxVPihwb2lzb25lZEJpdHMpOyB9CiAj
ZW5kaWYKIAogICAgIFBvaXNvbmVkQml0cyBtX3BvaXNvbmVkQml0cyB7IDAgfTsKIH07CiAKLXRl
bXBsYXRlPHVpbnRwdHJfdCYga2V5LCB0eXBlbmFtZSBUPgotdXNpbmcgUG9pc29uZWQgPSBQb2lz
b25lZEltcGw8dWludHB0cl90Jiwga2V5LCBUPjsKK3RlbXBsYXRlPHR5cGVuYW1lIEsxLCBLMSBr
MSwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIEsyLCBLMiBrMiwgdHlwZW5hbWUgVDI+CitpbmxpbmUg
dm9pZCBzd2FwKFBvaXNvbmVkSW1wbDxLMSwgazEsIFQxPiYgYSwgUG9pc29uZWRJbXBsPEsyLCBr
MiwgVDI+JiBiKQoreworICAgIGEuc3dhcChiKTsKK30KIAotI2lmIFVTRShKU1ZBTFVFNjQpCi10
ZW1wbGF0ZTx1aW50MzJfdCBrZXksIHR5cGVuYW1lIFQ+Ci11c2luZyBJbnQzMlBvaXNvbmVkID0g
UG9pc29uZWRJbXBsPHVpbnRwdHJfdCwgc3RhdGljX2Nhc3Q8dWludHB0cl90PihrZXkpIDw8IDMy
LCBUPjsKK1dURl9FWFBPUlRfUFJJVkFURSB1aW50cHRyX3QgbWFrZVBvaXNvbigpOworCitpbmxp
bmUgY29uc3RleHByIHVpbnRwdHJfdCBtYWtlUG9pc29uKHVpbnQzMl90IGtleSkKK3sKKyNpZiBF
TkFCTEUoUE9JU09OKQorICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDB4ODAwMDAw
MDAgfCBrZXkpIDw8IDMyOwogI2Vsc2UKLXRlbXBsYXRlPHVpbnQzMl90LCB0eXBlbmFtZSBUPgot
dXNpbmcgSW50MzJQb2lzb25lZCA9IFBvaXNvbmVkSW1wbDx1aW50cHRyX3QsIDAsIFQ+OworICAg
IHJldHVybiAodm9pZClrZXksIDA7CiAjZW5kaWYKK30KIAotV1RGX0VYUE9SVF9QUklWQVRFIHVp
bnRwdHJfdCBtYWtlUG9pc29uKCk7Cit0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUg
VD4KK3VzaW5nIFBvaXNvbmVkID0gUG9pc29uZWRJbXBsPHVpbnRwdHJfdCYsIGtleSwgVD47CisK
K3RlbXBsYXRlPHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVD4KK3VzaW5nIENvbnN0RXhwclBvaXNv
bmVkID0gUG9pc29uZWRJbXBsPHVpbnRwdHJfdCwgbWFrZVBvaXNvbihrZXkpLCBUPjsKIAogfSAv
LyBuYW1lc3BhY2UgV1RGCiAKLXVzaW5nIFdURjo6SW50MzJQb2lzb25lZDsKK3VzaW5nIFdURjo6
Q29uc3RFeHByUG9pc29uZWQ7CiB1c2luZyBXVEY6OlBvaXNvbmVkOwogdXNpbmcgV1RGOjpQb2lz
b25lZEJpdHM7CiB1c2luZyBXVEY6Om1ha2VQb2lzb247CkluZGV4OiBUb29scy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjU4MzgpCisrKyBUb29s
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxNy0xMi0xMiAg
TWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgRmlsbCBvdXQgc29tZSBQ
b2lzb25lZCBBUElzLCBmaXggc29tZSBidWdzLCBhbmQgYWRkIHNvbWUgdGVzdHMuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODA3MjQKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzM2MDA2ODg0PgorCisgICAgICAgIFJldmlld2VkIGJ5IEpGIEJhc3Rp
ZW4uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NvbnN0RXhwclBvaXNvbmVkLmNwcDog
QWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZC5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6aW5pdGlhbGl6ZVRlc3RQb2lzb24pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVT
VCk6CisKIDIwMTctMTItMTIgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtXS10gQWRkIG1vZGVybiBXZWJLaXQgU1BJIHRvIHNldCBhdXRvIGZpbGwgYnV0dG9u
IHR5cGUgYW5kIHF1ZXJ5IGlmIHRoZSBhdXRvIGZpbGwgYnV0dG9uIGlzIGVuYWJsZWQKSW5kZXg6
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
VGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjI1ODM3KQorKysgVG9vbHMv
VGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtOTUsNiArOTUs
NyBAQCBzZXQoVGVzdFdURl9TT1VSQ0VTCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMv
V1RGL0NoZWNrZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAKICAgICAke1RFU1RXRUJLSVRBUElf
RElSfS9UZXN0cy9XVEYvQ29uY3VycmVudFB0ckhhc2hTZXQuY3BwCiAgICAgJHtURVNUV0VCS0lU
QVBJX0RJUn0vVGVzdHMvV1RGL0NvbmRpdGlvbi5jcHAKKyAgICAke1RFU1RXRUJLSVRBUElfRElS
fS9UZXN0cy9XVEYvQ29uc3RFeHByUG9pc29uZWQuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJ
Un0vVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElS
fS9UZXN0cy9XVEYvRGF0ZU1hdGguY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMv
V1RGL0RlcXVlLmNwcApAQCAtMTIyLDYgKzEyMyw3IEBAIHNldChUZXN0V1RGX1NPVVJDRVMKICAg
ICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvT3B0aW9uYWwuY3BwCiAgICAgJHtURVNU
V0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL09wdGlvblNldC5jcHAKICAgICAke1RFU1RXRUJLSVRB
UElfRElSfS9UZXN0cy9XVEYvUGFya2luZ0xvdC5jcHAKKyAgICAke1RFU1RXRUJLSVRBUElfRElS
fS9UZXN0cy9XVEYvUG9pc29uZWQuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMv
V1RGL1ByaW9yaXR5UXVldWUuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RG
L1JlZEJsYWNrVHJlZS5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvUmVm
LmNwcApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIyNTgzNykKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC03NTYsNiArNzU2LDggQEAKIAkJRjZCN0JFOTcxNzQ2OUI5NjAw
OEEzNDQ1IC8qIGFzc29jaWF0ZS1mb3JtLWNvbnRyb2xzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjZCN0JFOTYxNzQ2OUI3RTAwOEEz
NDQ1IC8qIGFzc29jaWF0ZS1mb3JtLWNvbnRyb2xzLmh0bWwgKi87IH07CiAJCUY2RjQ5QzZCMTU1
NDVDQTcwMDA3RjM5RCAvKiBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlX0J1bmRsZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNkY0OUM2NjE1NTQ1
QzhEMDAwN0YzOUQgLyogRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZV9CdW5kbGUuY3BwICovOyB9
OwogCQlGNkZERERENjE0MjQxQzZGMDA0RjE3MjkgLyogcHVzaC1zdGF0ZS5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2RkREREQ1MTQy
NDFDNDgwMDRGMTcyOSAvKiBwdXNoLXN0YXRlLmh0bWwgKi87IH07CisJCUZFMDVGQUVGMUZFMDY0
NUIwMDA5MzIzMCAvKiBQb2lzb25lZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRTA1RkFFRTFGRTA2NDNEMDAwOTMyMzAgLyogUG9pc29uZWQuY3Bw
ICovOyB9OworCQlGRTA1RkFGMTFGRTA4Q0Q0MDAwOTMyMzAgLyogQ29uc3RFeHByUG9pc29uZWQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwNUZB
RjAxRkUwOENDRDAwMDkzMjMwIC8qIENvbnN0RXhwclBvaXNvbmVkLmNwcCAqLzsgfTsKIC8qIEVu
ZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJv
eHkgc2VjdGlvbiAqLwpAQCAtMTg1Nyw2ICsxODU5LDggQEAKIAkJRjZGNDlDNjcxNTU0NUM4RDAw
MDdGMzlEIC8qIERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2RkREREQyMTQyNDFBRDQwMDRGMTcyOSAvKiBQcml2
YXRlQnJvd3NpbmdQdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcml2YXRlQnJvd3NpbmdQdXNoU3RhdGVOb0hpc3RvcnlD
YWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2RkREREQ1MTQyNDFD
NDgwMDRGMTcyOSAvKiBwdXNoLXN0YXRlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGgg
PSAicHVzaC1zdGF0ZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUwNUZB
RUUxRkUwNjQzRDAwMDkzMjMwIC8qIFBvaXNvbmVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFBvaXNvbmVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRkUwNUZBRjAxRkUwOENDRDAwMDkzMjMwIC8qIENvbnN0RXhwclBvaXNvbmVkLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnN0RXhwclBvaXNvbmVkLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVCNkY3NEUxQjJCQTQ0RTAwOUU0OTIyIC8q
IE5ha2VkUHRyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ha2Vk
UHRyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJl
bmNlIHNlY3Rpb24gKi8KIApAQCAtMjYxMyw2ICsyNjE3LDcgQEAKIAkJCQlBN0E5NjZEQTE0MEVD
Q0M4MDA1RUY5QjQgLyogQ2hlY2tlZEFyaXRobWV0aWNPcGVyYXRpb25zLmNwcCAqLywKIAkJCQkw
RjMwQ0I1QjFGQ0UxNzkyMDA0QjUzMjMgLyogQ29uY3VycmVudFB0ckhhc2hTZXQuY3BwICovLAog
CQkJCTBGRUFFMzY3MUI3RDE5Q0IwMENFMTdGMiAvKiBDb25kaXRpb24uY3BwICovLAorCQkJCUZF
MDVGQUYwMUZFMDhDQ0QwMDA5MzIzMCAvKiBDb25zdEV4cHJQb2lzb25lZC5jcHAgKi8sCiAJCQkJ
NTE3MTRFQjkxRDA4NzQxNjAwNDcyM0M0IC8qIENyb3NzVGhyZWFkVGFzay5jcHAgKi8sCiAJCQkJ
MjZBMkM3MkUxNUUyRTczQzAwNUIxQTE0IC8qIENTdHJpbmcuY3BwICovLAogCQkJCTdBQTAyMUJB
MUFCMDlFQTcwMDUyOTUzRiAvKiBEYXRlTWF0aC5jcHAgKi8sCkBAIC0yNjQ2LDYgKzI2NTEsNyBA
QAogCQkJCTFBRkRFNjU0MTk1M0IyQzAwMEM0OEZGQSAvKiBPcHRpb25hbC5jcHAgKi8sCiAJCQkJ
Q0U1MEQ4QzgxQzg2NjVDRTAwNzJFQTVBIC8qIE9wdGlvblNldC5jcHAgKi8sCiAJCQkJMEZFNDQ3
OTcxQjc2RjFFMzAwOTQ5OEVCIC8qIFBhcmtpbmdMb3QuY3BwICovLAorCQkJCUZFMDVGQUVFMUZF
MDY0M0QwMDA5MzIzMCAvKiBQb2lzb25lZC5jcHAgKi8sCiAJCQkJNTNFQzI1M0YxRTk2QkM4MDAw
MDgzMUI5IC8qIFByaW9yaXR5UXVldWUuY3BwICovLAogCQkJCTBGQzZDNENCMTQxMDI3RTAwMDVC
N0YwQyAvKiBSZWRCbGFja1RyZWUuY3BwICovLAogCQkJCTkzQTQyN0FBMTgwREEyNjQwMENEMjRE
NyAvKiBSZWYuY3BwICovLApAQCAtMzE5MCw2ICszMTk2LDcgQEAKIAkJCQk3QzgzREYxRDFEMEE1
OTBDMDBGRUJDRjMgLyogTG9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTdENTRGNjFGMzM5
NUQwMDBBOTdBQTcgLyogTG9nZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERUVEMUQw
QTU5MEMwMEZFQkNGMyAvKiBNYXRoRXh0cmFzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFMDVG
QUYxMUZFMDhDRDQwMDA5MzIzMCAvKiBDb25zdEV4cHJQb2lzb25lZC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3QzgzREVFRjFEMEE1OTBDMDBGRUJDRjMgLyogTUQ1LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTdDODNERUYxMUQwQTU5MEMwMEZFQkNGMyAvKiBNZWRpYVRpbWUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0M4M0RFRjYxRDBBNTkwQzAwRkVCQ0YzIC8qIE1ldGFBbGxvY2F0b3IuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC0zMjEwLDYgKzMyMTcsNyBAQAogCQkJCTdDODNERjA1MUQwQTU5
MEMwMEZFQkNGMyAvKiBSdW5Mb29wLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERjI2MUQw
QTU5MEMwMEZFQkNGMyAvKiBTYXR1cmF0ZWRBcml0aG1ldGljT3BlcmF0aW9ucy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxQTM1MjRBRTFENjNBNEZCMDAzMTcyOUIgLyogU2NvcGUuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJRkUwNUZBRUYxRkUwNjQ1QjAwMDkzMjMwIC8qIFBvaXNvbmVkLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTdDODNERjEyMUQwQTU5MEMwMEZFQkNGMyAvKiBTY29wZWRMYW1i
ZGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGM0QxRDBBNTkwQzAwRkVCQ0YzIC8qIFNl
dEZvclNjb3BlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERjJBMUQwQTU5MEMwMEZFQkNG
MyAvKiBTSEExLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvQ29uc3RFeHByUG9pc29uZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL0NvbnN0RXhwclBvaXNvbmVkLmNwcAkobm9uZXhpc3RlbnQpCisr
KyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Db25zdEV4cHJQb2lzb25lZC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwzNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJSZWZM
b2dnZXIuaCIKKyNpbmNsdWRlIDxtdXRleD4KKyNpbmNsdWRlIDx3dGYvUG9pc29uZWQuaD4KKwor
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitzdGF0aWMgY29uc3QgdWludDMyX3QgUG9pc29u
QSA9IDB4YWFhYTsKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBQb2lzb25CID0gMHhiYmJiOworCisv
LyBGb3IgdGhlc2UgdGVzdHMsIHdlIG5lZWQgYSBiYXNlIGNsYXNzIGFuZCBhIGRlcml2ZWQgY2xh
c3MuIEZvciB0aGlzIHB1cnBvc2UsCisvLyB3ZSByZXVzZSB0aGUgUmVmTG9nZ2VyIGFuZCBEZXJp
dmVkUmVmTG9nZ2VyIGNsYXNzZXMuCisKK1RFU1QoV1RGX0NvbnN0RXhwclBvaXNvbmVkLCBCYXNp
YykKK3sKKyAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKKworICAgIENvbnN0RXhwclBvaXNv
bmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IGVtcHR5OworICAgIEFTU0VSVF9FUShudWxscHRyLCBl
bXB0eS51bnBvaXNvbmVkKCkpOworCisgICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQ
b2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51
bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsICYqcHRyKTsKKyAgICAgICAgQVNT
RVJUX0VRKCZhLm5hbWUsICZwdHItPm5hbWUpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29u
c3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyID0gJmE7CisgICAgICAgIEFT
U0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBD
b25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSA9ICZhOworICAgICAgICBD
b25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMihwMSk7CisgICAgICAgIENv
bnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+IHAzKHAxKTsKKyAgICAgICAgQVNT
RVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVu
cG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKwor
ICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNT
RVJUX1RSVUUocDEuYml0cygpICE9IHAzLmJpdHMoKSk7CisgICAgfQorCisgICAgeworICAgICAg
ICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSA9ICZhOworICAgICAg
ICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMiA9IHAxOworICAgICAg
ICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBwMyA9IHAxOworICAgICAg
ICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwg
cDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkp
OworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAg
ICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgIT0gcDMuYml0cygpKTsKKyAgICB9CisKKyAgICB7Cisg
ICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxID0gJmE7Cisg
ICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyID0gV1RGTW92
ZShwMSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAg
QVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOworCisgICAgICAgIENvbnN0RXhwclBvaXNv
bmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzID0gJmE7CisgICAgICAgIENvbnN0RXhwclBvaXNv
bmVkPFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0ID0gV1RGTW92ZShwMyk7CisgICAgICAgIEFTU0VS
VF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwNC51bnBv
aXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkp
OworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9CisK
KyAgICB7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAx
ID0gJmE7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAy
KFdURk1vdmUocDEpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwor
ICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQ29uc3RF
eHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMgPSAmYTsKKyAgICAgICAgQ29uc3RF
eHByUG9pc29uZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQoV1RGTW92ZShwMykpOworICAgICAg
ICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwg
cDQudW5wb2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIu
Yml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7Cisg
ICAgfQorCisgICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBEZXJpdmVk
UmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwg
UmVmTG9nZ2VyKj4gcDIgPSBwMTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwg
UmVmTG9nZ2VyKj4gcDMgPSBwMTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVk
KCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFT
U0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5i
aXRzKCkgPT0gcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAz
LmJpdHMoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lz
b25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29u
ZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9p
c29uZWQoKSk7CisKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgRGVyaXZlZFJl
ZkxvZ2dlcio+IHAzID0gJmE7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkIsIFJl
ZkxvZ2dlcio+IHA0ID0gV1RGTW92ZShwMyk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwNC51bnBvaXNvbmVkKCkpOworCisg
ICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworICAgICAgICBBU1NF
UlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAg
IENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAg
IEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHB0ci5jbGVhcigpOwor
ICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgfQorfQor
CitURVNUKFdURl9Db25zdEV4cHJQb2lzb25lZCwgQXNzaWdubWVudCkKK3sKKyAgICBEZXJpdmVk
UmVmTG9nZ2VyIGEoImEiKTsKKyAgICBSZWZMb2dnZXIgYigiYiIpOworICAgIERlcml2ZWRSZWZM
b2dnZXIgYygiYyIpOworCisgICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25B
LCBSZWZMb2dnZXIqPiBwMSgmYSk7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEs
IFJlZkxvZ2dlcio+IHAyKCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVk
KCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHAx
ID0gcDI7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAg
QVNTRVJUX0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOworCisgICAgICAgIENvbnN0RXhwclBvaXNv
bmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29u
ZWQ8UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQoJmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAz
LnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsK
KyAgICAgICAgcDMgPSBwNDsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMy51bnBvaXNvbmVkKCkp
OworICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNT
RVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAz
LmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29uc3RFeHBy
UG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VR
KCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcHRyID0gJmI7CisgICAgICAgIEFTU0VS
VF9FUSgmYiwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBDb25z
dEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOworICAgICAgICBBU1NF
UlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICBwdHIgPSBudWxscHRyOworICAg
ICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgfQorCisgICAg
eworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7
CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKCZiKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRf
RVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHAxID0gV1RGTW92ZShwMik7CisgICAg
ICAgIEFTU0VSVF9FUSgmYiwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZi
LCBwMi51bnBvaXNvbmVkKCkpOworCisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEs
IFJlZkxvZ2dlcio+IHAzKCZhKTsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQiwg
UmVmTG9nZ2VyKj4gcDQoJmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQo
KSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDMg
PSBXVEZNb3ZlKHA0KTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMy51bnBvaXNvbmVkKCkpOwor
ICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJU
X1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJp
dHMoKSAhPSBwNC5iaXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9p
c29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOworICAgICAgICBDb25zdEV4cHJQb2lz
b25lZDxQb2lzb25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDIoJmMpOworICAgICAgICBBU1NFUlRf
RVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDIudW5wb2lz
b25lZCgpKTsKKyAgICAgICAgcDEgPSBwMjsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMS51bnBv
aXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHAyLnVucG9pc29uZWQoKSk7CisKKyAg
ICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOworICAg
ICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDQoJmMp
OworICAgICAgICBBU1NFUlRfRVEoJmEsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VS
VF9FUSgmYywgcDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDMgPSBwNDsKKyAgICAgICAgQVNT
RVJUX0VRKCZjLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHA0LnVu
cG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMo
KSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgIH0K
KworICAgIHsKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4g
cHRyKCZhKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAg
ICAgcHRyID0gJmM7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcHRyLnVucG9pc29uZWQoKSk7Cisg
ICAgfQorCisgICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dn
ZXIqPiBwMSgmYSk7CisgICAgICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIERlcml2ZWRS
ZWZMb2dnZXIqPiBwMigmYyk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgp
KTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBwMSA9
IFdURk1vdmUocDIpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHAxLnVucG9pc29uZWQoKSk7Cisg
ICAgICAgIEFTU0VSVF9FUSgmYywgcDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICBDb25zdEV4
cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygmYSk7CisgICAgICAgIENvbnN0RXhw
clBvaXNvbmVkPFBvaXNvbkIsIERlcml2ZWRSZWZMb2dnZXIqPiBwNCgmYyk7CisgICAgICAgIEFT
U0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwNC51
bnBvaXNvbmVkKCkpOworICAgICAgICBwMyA9IFdURk1vdmUocDQpOworICAgICAgICBBU1NFUlRf
RVEoJmMsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDQudW5wb2lz
b25lZCgpKTsKKworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsK
KyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQorCisg
ICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIo
JmEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICBw
dHIgPSBwdHI7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAg
fQorCisgICAgeworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIq
PiBwdHIoJmEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworI2lm
IENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEg
Y2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3Vua25vd24tcHJhZ21hcyIKKyNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3NlbGYtbW92ZSIKKyNlbmRpZgorICAgICAgICBwdHIg
PSBXVEZNb3ZlKHB0cik7CisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdu
b3N0aWMgcG9wCisjZW5kaWYKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgp
KTsKKyAgICB9Cit9CisKK1RFU1QoV1RGX0NvbnN0RXhwclBvaXNvbmVkLCBTd2FwKQoreworICAg
IFJlZkxvZ2dlciBhKCJhIik7CisgICAgUmVmTG9nZ2VyIGIoImIiKTsKKworICAgIHsKKyAgICAg
ICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOworICAgICAg
ICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMigmYik7CisgICAgICAg
IEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBw
Mi51bnBvaXNvbmVkKCkpOworICAgICAgICBwMS5zd2FwKHAyKTsKKyAgICAgICAgQVNTRVJUX0VR
KCZiLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29u
ZWQoKSk7CisKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2VyKj4g
cDMoJmEpOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIqPiBw
NCgmYik7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAg
QVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAgICBwMy5zd2FwKHA0KTsKKyAg
ICAgICAgQVNTRVJUX0VRKCZiLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEo
JmEsIHA0LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9
IHAyLmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkp
OworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDMuYml0cygpKTsKKyAgICAgICAg
QVNTRVJUX1RSVUUocDIuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgfQorCisgICAgeworICAg
ICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25BLCBSZWZMb2dnZXIqPiBwMSgmYSk7CisgICAg
ICAgIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKCZiKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmIs
IHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHN3YXAocDEsIHAyKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9p
c29uZWQoKSk7CisKKyAgICAgICAgQ29uc3RFeHByUG9pc29uZWQ8UG9pc29uQSwgUmVmTG9nZ2Vy
Kj4gcDMoJmEpOworICAgICAgICBDb25zdEV4cHJQb2lzb25lZDxQb2lzb25CLCBSZWZMb2dnZXIq
PiBwNCgmYik7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAgICBzd2FwKHAzLCBwNCk7
CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZhLCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMo
KSAhPSBwMi5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0
cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAzLmJpdHMoKSk7CisgICAg
ICAgIEFTU0VSVF9UUlVFKHAyLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgIH0KK30KKworc3Rh
dGljIENvbnN0RXhwclBvaXNvbmVkPFBvaXNvbkEsIFJlZkxvZ2dlcio+IHBvaXNvbmVkUHRyRm9v
KFJlZkxvZ2dlciYgbG9nZ2VyKQoreworICAgIHJldHVybiBDb25zdEV4cHJQb2lzb25lZDxQb2lz
b25BLCBSZWZMb2dnZXIqPigmbG9nZ2VyKTsKK30KKworVEVTVChXVEZfQ29uc3RFeHByUG9pc29u
ZWQsIFJldHVyblZhbHVlKQoreworICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOworCisgICAg
eworICAgICAgICBhdXRvIHB0ciA9IHBvaXNvbmVkUHRyRm9vKGEpOworICAgICAgICBBU1NFUlRf
RVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsICYqcHRyKTsK
KyAgICAgICAgQVNTRVJUX0VRKCZhLm5hbWUsICZwdHItPm5hbWUpOworICAgIH0KK30KKworfSAv
LyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9Qb2lzb25lZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvUG9pc29uZWQuY3BwCShub25leGlzdGVudCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1BvaXNvbmVkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM5MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2luY2x1ZGUgIlJlZkxvZ2dlci5oIgorI2luY2x1ZGUgPG11dGV4Pgor
I2luY2x1ZGUgPHd0Zi9Qb2lzb25lZC5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisK
K3VpbnRwdHJfdCBnX3Rlc3RQb2lzb25BOwordWludHB0cl90IGdfdGVzdFBvaXNvbkI7CisKK3N0
YXRpYyB2b2lkIGluaXRpYWxpemVUZXN0UG9pc29uKCkKK3sKKyAgICBzdGF0aWMgc3RkOjpvbmNl
X2ZsYWcgaW5pdGlhbGl6ZU9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRpYWxpemVP
bmNlRmxhZywgW10geworICAgICAgICAvLyBNYWtlIHN1cmUgd2UgZ2V0IDIgZGlmZmVyZW50IHBv
aXNvbiB2YWx1ZXMuCisgICAgICAgIGdfdGVzdFBvaXNvbkEgPSBtYWtlUG9pc29uKCk7CisgICAg
ICAgIHdoaWxlICghZ190ZXN0UG9pc29uQiB8fCBnX3Rlc3RQb2lzb25CID09IGdfdGVzdFBvaXNv
bkEpCisgICAgICAgICAgICBnX3Rlc3RQb2lzb25CID0gbWFrZVBvaXNvbigpOworICAgIH0pOwor
fQorCisvLyBGb3IgdGhlc2UgdGVzdHMsIHdlIG5lZWQgYSBiYXNlIGNsYXNzIGFuZCBhIGRlcml2
ZWQgY2xhc3MuIEZvciB0aGlzIHB1cnBvc2UsCisvLyB3ZSByZXVzZSB0aGUgUmVmTG9nZ2VyIGFu
ZCBEZXJpdmVkUmVmTG9nZ2VyIGNsYXNzZXMuCisKK1RFU1QoV1RGX1BvaXNvbmVkLCBCYXNpYykK
K3sKKyAgICBpbml0aWFsaXplVGVzdFBvaXNvbigpOworICAgIERlcml2ZWRSZWZMb2dnZXIgYSgi
YSIpOworCisgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gZW1wdHk7Cisg
ICAgQVNTRVJUX0VRKG51bGxwdHIsIGVtcHR5LnVucG9pc29uZWQoKSk7CisKKyAgICB7CisgICAg
ICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAg
IEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwg
JipwdHIpOworICAgICAgICBBU1NFUlRfRVEoJmEubmFtZSwgJnB0ci0+bmFtZSk7CisgICAgfQor
CisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIg
PSAmYTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICB9CisK
KyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxID0g
JmE7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyKHAxKTsK
KworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VS
VF9FUSgmYSwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygp
ID09IHAyLmJpdHMoKSk7CisKKyNpZiBFTkFCTEUoTUlYRURfUE9JU09OKQorICAgICAgICBQb2lz
b25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwMyhwMSk7CisgICAgICAgIEFTU0VSVF9F
USgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9
IHAzLmJpdHMoKSk7CisjZW5kaWYKKyAgICB9CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdf
dGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxID0gJmE7CisgICAgICAgIFBvaXNvbmVkPGdfdGVz
dFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyID0gcDE7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEu
dW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOwor
ICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKworI2lmIEVOQUJM
RShNSVhFRF9QT0lTT04pCisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dl
cio+IHAzID0gcDE7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAg
ICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpICE9IHAzLmJpdHMoKSk7CisjZW5kaWYKKyAgICB9
CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAx
ID0gJmE7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAyID0g
V1RGTW92ZShwMSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAg
ICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfVFJV
RShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKworI2lmIEVOQUJMRShNSVhFRF9QT0lTT04pCisg
ICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzID0gJmE7CisgICAg
ICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHA0ID0gV1RGTW92ZShwMyk7
CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZhLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkg
IT0gcDQuYml0cygpKTsKKyNlbmRpZgorICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWQ8
Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWQ8Z190
ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIoV1RGTW92ZShwMSkpOworICAgICAgICBBU1NFUlRf
RVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIudW5wb2lz
b25lZCgpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDEuYml0cygpID09IHAyLmJpdHMoKSk7CisK
KyNpZiBFTkFCTEUoTUlYRURfUE9JU09OKQorICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25B
LCBSZWZMb2dnZXIqPiBwMyA9ICZhOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25CLCBS
ZWZMb2dnZXIqPiBwNChXVEZNb3ZlKHAzKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwNC51bnBvaXNvbmVkKCkpOworICAg
ICAgICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyNlbmRpZgorICAgIH0K
KworI2lmIEVOQUJMRShNSVhFRF9QT0lTT04pCisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rl
c3RQb2lzb25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDEgPSAmYTsKKyAgICAgICAgUG9pc29uZWQ8
Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDIgPSBwMTsKKyAgICAgICAgQVNTRVJUX0VRKCZh
LCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLnVucG9pc29uZWQo
KSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworCisgICAg
ICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkIsIFJlZkxvZ2dlcio+IHAzID0gcDE7CisgICAgICAg
IEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDEu
Yml0cygpICE9IHAzLmJpdHMoKSk7CisgICAgfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoTUlYRURf
UE9JU09OKQorICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgRGVyaXZlZFJl
ZkxvZ2dlcio+IHAxID0gJmE7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxv
Z2dlcio+IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEudW5wb2lz
b25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAg
ICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKworICAgICAgICBQb2lzb25l
ZDxnX3Rlc3RQb2lzb25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDMgPSAmYTsKKyAgICAgICAgUG9p
c29uZWQ8Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQgPSBXVEZNb3ZlKHAzKTsKKyAgICAg
ICAgQVNTRVJUX0VRKCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEs
IHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5i
aXRzKCkpOworICAgIH0KKyNlbmRpZgorCisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQ
b2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51
bnBvaXNvbmVkKCkpOworICAgICAgICBwdHIuY2xlYXIoKTsKKyAgICAgICAgQVNTRVJUX0VRKG51
bGxwdHIsIHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0KK30KKworVEVTVChXVEZfUG9pc29uZWQs
IEFzc2lnbm1lbnQpCit7CisgICAgaW5pdGlhbGl6ZVRlc3RQb2lzb24oKTsKKyAgICBEZXJpdmVk
UmVmTG9nZ2VyIGEoImEiKTsKKyAgICBSZWZMb2dnZXIgYigiYiIpOworICAgIERlcml2ZWRSZWZM
b2dnZXIgYygiYyIpOworCisgICAgeworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBS
ZWZMb2dnZXIqPiBwMSgmYSk7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxv
Z2dlcio+IHAyKCZiKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS51bnBvaXNvbmVkKCkpOwor
ICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHAxID0gcDI7
CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJU
X0VRKCZiLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkg
PT0gcDIuYml0cygpKTsKKworI2lmIEVOQUJMRShNSVhFRF9QT0lTT04pCisgICAgICAgIFBvaXNv
bmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKKyAgICAgICAgUG9pc29uZWQ8
Z190ZXN0UG9pc29uQiwgUmVmTG9nZ2VyKj4gcDQoJmIpOworICAgICAgICBBU1NFUlRfRVEoJmEs
IHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgp
KTsKKyAgICAgICAgcDMgPSBwNDsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMy51bnBvaXNvbmVk
KCkpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIEFT
U0VSVF9UUlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworI2VuZGlmCisgICAgfQorCisgICAg
eworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwdHIoJmEpOwor
ICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICBwdHIgPSAm
YjsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICB9CisKKyAg
ICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHB0cigmYSk7
CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHB0ciA9
IG51bGxwdHI7CisgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwdHIudW5wb2lzb25lZCgpKTsK
KyAgICB9CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dl
cio+IHAxKCZhKTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4g
cDIoJmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAg
IEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDEgPSBXVEZNb3ZlKHAy
KTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NF
UlRfRVEoJmIsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMo
KSA9PSBwMi5iaXRzKCkpOworCisjaWYgRU5BQkxFKE1JWEVEX1BPSVNPTikKKyAgICAgICAgUG9p
c29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOworICAgICAgICBQb2lzb25l
ZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7CisgICAgICAgIEFTU0VSVF9FUSgm
YSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVk
KCkpOworICAgICAgICBwMyA9IFdURk1vdmUocDQpOworICAgICAgICBBU1NFUlRfRVEoJmIsIHAz
LnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDQudW5wb2lzb25lZCgpKTsK
KyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisjZW5kaWYKKyAg
ICB9CisKKyNpZiBFTkFCTEUoTUlYRURfUE9JU09OKQorICAgIHsKKyAgICAgICAgUG9pc29uZWQ8
Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOworICAgICAgICBQb2lzb25lZDxnX3Rl
c3RQb2lzb25BLCBEZXJpdmVkUmVmTG9nZ2VyKj4gcDIoJmMpOworICAgICAgICBBU1NFUlRfRVEo
JmEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDIudW5wb2lzb25l
ZCgpKTsKKyAgICAgICAgcDEgPSBwMjsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMS51bnBvaXNv
bmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAg
IEFTU0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMi5iaXRzKCkpOworCisgICAgICAgIFBvaXNvbmVk
PGdfdGVzdFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAzKCZhKTsKKyAgICAgICAgUG9pc29uZWQ8Z190
ZXN0UG9pc29uQiwgRGVyaXZlZFJlZkxvZ2dlcio+IHA0KCZjKTsKKyAgICAgICAgQVNTRVJUX0VR
KCZhLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHA0LnVucG9pc29u
ZWQoKSk7CisgICAgICAgIHAzID0gcDQ7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDMudW5wb2lz
b25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAg
ICBBU1NFUlRfVFJVRShwMy5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyAgICB9CisjZW5kaWYKKwor
ICAgIHsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcHRyKCZh
KTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcHRy
ID0gJmM7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcHRyLnVucG9pc29uZWQoKSk7CisgICAgfQor
CisjaWYgRU5BQkxFKE1JWEVEX1BPSVNPTikKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVz
dFBvaXNvbkEsIFJlZkxvZ2dlcio+IHAxKCZhKTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9p
c29uQSwgRGVyaXZlZFJlZkxvZ2dlcio+IHAyKCZjKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBw
MS51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmMsIHAyLnVucG9pc29uZWQoKSk7
CisgICAgICAgIHAxID0gV1RGTW92ZShwMik7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDEudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwMi51bnBvaXNvbmVkKCkpOworICAg
ICAgICBBU1NFUlRfVFJVRShwMS5iaXRzKCkgPT0gcDIuYml0cygpKTsKKworICAgICAgICBQb2lz
b25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMygmYSk7CisgICAgICAgIFBvaXNvbmVk
PGdfdGVzdFBvaXNvbkIsIERlcml2ZWRSZWZMb2dnZXIqPiBwNCgmYyk7CisgICAgICAgIEFTU0VS
VF9FUSgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZjLCBwNC51bnBv
aXNvbmVkKCkpOworICAgICAgICBwMyA9IFdURk1vdmUocDQpOworICAgICAgICBBU1NFUlRfRVEo
JmMsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgmYywgcDQudW5wb2lzb25l
ZCgpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAg
fQorI2VuZGlmCisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJlZkxv
Z2dlcio+IHB0cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQoKSk7
CisgICAgICAgIHB0ciA9IHB0cjsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwdHIudW5wb2lzb25l
ZCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJl
ZkxvZ2dlcio+IHB0cigmYSk7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLnVucG9pc29uZWQo
KSk7CisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAor
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW5rbm93bi1wcmFnbWFzIgorI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1Xc2VsZi1tb3ZlIgorI2VuZGlmCisgICAg
ICAgIHB0ciA9IFdURk1vdmUocHRyKTsKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBwb3AKKyNlbmRpZgorICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51bnBv
aXNvbmVkKCkpOworICAgIH0KK30KKworVEVTVChXVEZfUG9pc29uZWQsIFN3YXApCit7CisgICAg
aW5pdGlhbGl6ZVRlc3RQb2lzb24oKTsKKyAgICBSZWZMb2dnZXIgYSgiYSIpOworICAgIFJlZkxv
Z2dlciBiKCJiIik7CisKKyAgICB7CisgICAgICAgIFBvaXNvbmVkPGdfdGVzdFBvaXNvbkEsIFJl
ZkxvZ2dlcio+IHAxKCZhKTsKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9n
Z2VyKj4gcDIoJmIpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHAxLnVucG9pc29uZWQoKSk7Cisg
ICAgICAgIEFTU0VSVF9FUSgmYiwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDEuc3dhcChw
Mik7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNT
RVJUX0VRKCZhLCBwMi51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJp
dHMoKSAhPSBwMi5iaXRzKCkpOworCisjaWYgRU5BQkxFKE1JWEVEX1BPSVNPTikKKyAgICAgICAg
UG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOworICAgICAgICBQb2lz
b25lZDxnX3Rlc3RQb2lzb25CLCBSZWZMb2dnZXIqPiBwNCgmYik7CisgICAgICAgIEFTU0VSVF9F
USgmYSwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNv
bmVkKCkpOworICAgICAgICBwMy5zd2FwKHA0KTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMy51
bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHA0LnVucG9pc29uZWQoKSk7CisK
KyAgICAgICAgQVNTRVJUX1RSVUUocDMuYml0cygpICE9IHA0LmJpdHMoKSk7CisgICAgICAgIEFT
U0VSVF9UUlVFKHAxLmJpdHMoKSA9PSBwMy5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShw
Mi5iaXRzKCkgIT0gcDQuYml0cygpKTsKKyNlbmRpZgorICAgIH0KKworICAgIHsKKyAgICAgICAg
UG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4gcDEoJmEpOworICAgICAgICBQb2lz
b25lZDxnX3Rlc3RQb2lzb25BLCBSZWZMb2dnZXIqPiBwMigmYik7CisgICAgICAgIEFTU0VSVF9F
USgmYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi51bnBvaXNv
bmVkKCkpOworI2lmIEVOQUJMRShNSVhFRF9QT0lTT04pCisgICAgICAgIHN3YXAocDEsIHAyKTsK
KyNlbHNlCisgICAgICAgIHN0ZDo6c3dhcChwMSwgcDIpOworI2VuZGlmCisgICAgICAgIEFTU0VS
VF9FUSgmYiwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZhLCBwMi51bnBv
aXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9UUlVFKHAxLmJpdHMoKSAhPSBwMi5iaXRzKCkp
OworCisjaWYgRU5BQkxFKE1JWEVEX1BPSVNPTikKKyAgICAgICAgUG9pc29uZWQ8Z190ZXN0UG9p
c29uQSwgUmVmTG9nZ2VyKj4gcDMoJmEpOworICAgICAgICBQb2lzb25lZDxnX3Rlc3RQb2lzb25C
LCBSZWZMb2dnZXIqPiBwNCgmYik7CisgICAgICAgIEFTU0VSVF9FUSgmYSwgcDMudW5wb2lzb25l
ZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKCZiLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAgICBz
d2FwKHAzLCBwNCk7CisgICAgICAgIEFTU0VSVF9FUSgmYiwgcDMudW5wb2lzb25lZCgpKTsKKyAg
ICAgICAgQVNTRVJUX0VRKCZhLCBwNC51bnBvaXNvbmVkKCkpOworCisgICAgICAgIEFTU0VSVF9U
UlVFKHAzLmJpdHMoKSAhPSBwNC5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRShwMS5iaXRz
KCkgPT0gcDMuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUocDIuYml0cygpICE9IHA0LmJp
dHMoKSk7CisjZW5kaWYKKyAgICB9Cit9CisKK3N0YXRpYyBQb2lzb25lZDxnX3Rlc3RQb2lzb25B
LCBSZWZMb2dnZXIqPiBwb2lzb25lZFB0ckZvbyhSZWZMb2dnZXImIGxvZ2dlcikKK3sKKyAgICBy
ZXR1cm4gUG9pc29uZWQ8Z190ZXN0UG9pc29uQSwgUmVmTG9nZ2VyKj4oJmxvZ2dlcik7Cit9CisK
K1RFU1QoV1RGX1BvaXNvbmVkLCBSZXR1cm5WYWx1ZSkKK3sKKyAgICBpbml0aWFsaXplVGVzdFBv
aXNvbigpOworICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOworCisgICAgeworICAgICAgICBh
dXRvIHB0ciA9IHBvaXNvbmVkUHRyRm9vKGEpOworICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci51
bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoJmEsICYqcHRyKTsKKyAgICAgICAgQVNT
RVJUX0VRKCZhLm5hbWUsICZwdHItPm5hbWUpOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSQorCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>