<?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>181062</bug_id>
          
          <creation_ts>2017-12-20 16:08:19 -0800</creation_ts>
          <short_desc>Add WTF::PoisonedUniquePtr to replace std::unique_ptr when poisoning is desired.</short_desc>
          <delta_ts>2017-12-21 15:06:05 -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>cdumez</cc>
    
    <cc>darin</cc>
    
    <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>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1383872</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-12-20 16:08:19 -0800</bug_when>
    <thetext>Patch coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383873</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-12-20 16:09:10 -0800</bug_when>
    <thetext>&lt;rdar://problem/36167040&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384194</commentid>
    <comment_count>2</comment_count>
      <attachid>330047</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-12-21 12:02:05 -0800</bug_when>
    <thetext>Created attachment 330047
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384196</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-21 12:04:55 -0800</bug_when>
    <thetext>Attachment 330047 did not pass style-queue:


ERROR: Source/WTF/wtf/PoisonedUniquePtr.h:38:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/PoisonedUniquePtr.h:39:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/PoisonedUniquePtr.h:116:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/PoisonedUniquePtr.h:117:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 4 in 14 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>1384228</commentid>
    <comment_count>4</comment_count>
      <attachid>330047</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-12-21 13:19:36 -0800</bug_when>
    <thetext>Comment on attachment 330047
proposed patch.

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

r=me

&gt; Source/WTF/wtf/PoisonedUniquePtr.h:38
&gt; +    PoisonedUniquePtr() : Base() { }

PoisonedUniquePtr() = default; ?

&gt; Source/WTF/wtf/PoisonedUniquePtr.h:57
&gt; +        return PoisonedUniquePtr(result);

Seems like return result; would just work since this constructor is not marked as explicit.

&gt; Source/WTF/wtf/PoisonedUniquePtr.h:72
&gt; +        ASSERT(this == reinterpret_cast&lt;void*&gt;(&amp;ptr) || this-&gt;unpoisoned() != ptr.unpoisoned());

I believe reinterpret_cast&lt;void*&gt;() can change the address, no? wouldn&apos;t static_cast&lt;&gt;() be more adequate?

&gt; Source/WTF/wtf/PoisonedUniquePtr.h:73
&gt; +        if (LIKELY(this != reinterpret_cast&lt;void*&gt;(&amp;ptr))) {

ditto.

&gt; Source/WTF/wtf/PoisonedUniquePtr.h:116
&gt; +    PoisonedUniquePtr() : Base() { }

= default; ?

&gt; Source/WTF/wtf/PoisonedUniquePtr.h:152
&gt; +        ASSERT(this == reinterpret_cast&lt;void*&gt;(&amp;ptr) || this-&gt;unpoisoned() != ptr.unpoisoned());

same comment about static_cast.

&gt; Source/WTF/wtf/PoisonedUniquePtr.h:153
&gt; +        if (LIKELY(this != reinterpret_cast&lt;void*&gt;(&amp;ptr))) {

ditto.

&gt; Tools/TestWebKitAPI/Tests/WTF/PoisonedUniquePtr.cpp:43
&gt; +    ~Logger() { destructCount++; }

I believe we usually pre-increment when possible.

&gt; Tools/TestWebKitAPI/Tests/WTF/PoisonedUniquePtrForNonTriviallyDestructibleArrays.cpp:44
&gt; +    ~Logger() { (*destructCount)++; }

pre-increment?

&gt; Tools/TestWebKitAPI/Tests/WTF/PoisonedUniquePtrForNonTriviallyDestructibleArrays.cpp:59
&gt; +static const int arraySize = 2;

I do not believe we need the static here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384253</commentid>
    <comment_count>5</comment_count>
      <attachid>330063</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-12-21 14:08:09 -0800</bug_when>
    <thetext>Created attachment 330063
patch for landing.

Thanks for the review.  I&apos;ve updated the patch with the feedback.  Wil land when the EWS bots are green.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384256</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-21 14:11:11 -0800</bug_when>
    <thetext>Attachment 330063 did not pass style-queue:


ERROR: Source/WTF/wtf/PoisonedUniquePtr.h:39:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WTF/wtf/PoisonedUniquePtr.h:116:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 2 in 14 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>1384287</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-12-21 15:06:05 -0800</bug_when>
    <thetext>Landed in r226247: &lt;http://trac.webkit.org/r226247&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330047</attachid>
            <date>2017-12-21 12:02:05 -0800</date>
            <delta_ts>2017-12-21 14:08:09 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-181062.patch</filename>
            <type>text/plain</type>
            <size>73615</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI2MjMyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBA
CisyMDE3LTEyLTIxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgV1RGOjpQb2lzb25lZFVuaXF1ZVB0ciB0byByZXBsYWNlIHN0ZDo6dW5pcXVlX3B0ciB3aGVu
IHBvaXNvbmluZyBpcyBkZXNpcmVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTgxMDYyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNjE2NzA0MD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJ1bnRp
bWUvSlNDUG9pc29uZWRQdHIuY3BwOgorICAgICAgICAtIEFkZGVkIGEgbmVlZGVkICNpbmNsdWRl
LgorCiAyMDE3LTEyLTE5ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgog
CiAgICAgICAgIFtKU0NdIERvIG5vdCBjaGVjayBpc1ZhbGlkKCkgaW4gb3BfbmV3X3JlZ2V4cApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUG9pc29uZWRQdHIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1BvaXNvbmVkUHRy
LmNwcAkocmV2aXNpb24gMjI2MjMyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDUG9pc29uZWRQdHIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNDUG9pc29uZWRQdHIuaCIKIAorI2luY2x1ZGUg
PG11dGV4PgorCiBuYW1lc3BhY2UgSlNDIHsKIAogdWludHB0cl90IGdfZ2xvYmFsRGF0YVBvaXNv
bjsKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyMjYyMzIpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE3LTEyLTIxICBNYXJrIExhbSAgPG1hcmsu
bGFtQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgV1RGOjpQb2lzb25lZFVuaXF1ZVB0ciB0byBy
ZXBsYWNlIHN0ZDo6dW5pcXVlX3B0ciB3aGVuIHBvaXNvbmluZyBpcyBkZXNpcmVkLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxMDYyCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8zNjE2NzA0MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvUG9pbnRlckFzc2VydHMu
Y3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV1RGL3d0Zi9SZWZQdHIuY3BwLgorICAgICAgICAtIHJl
bmFtZWQgZmlsZSBiZWNhdXNlIHdlIGFzc2VydHMgYWxsIGtpbmRzIG9mIHBvaW50ZXJzIGluIGhl
cmUsIG5vdCBqdXN0IFJlZlB0ci4KKyAgICAgICAgCisgICAgICAgICogd3RmL1BvaXNvbmVkLmg6
CisgICAgICAgIC0gYWRkZWQgYSBtaXNzaW5nICNpbmNsdWRlLgorICAgICAgICAtIG1ha2UgY29u
c3RleHByIHBvaXNvbiB2YWx1ZXMgbW9yZSBzY3JhbWJsZWQuCisgICAgICAgIChXVEY6Om1ha2VQ
b2lzb24pOgorCisgICAgICAgICogd3RmL1BvaXNvbmVkVW5pcXVlUHRyLmg6IEFkZGVkLgorICAg
ICAgICAoV1RGOjpQb2lzb25lZFVuaXF1ZVB0cjo6UG9pc29uZWRVbmlxdWVQdHIpOgorICAgICAg
ICAoV1RGOjpQb2lzb25lZFVuaXF1ZVB0cjo6flBvaXNvbmVkVW5pcXVlUHRyKToKKyAgICAgICAg
KFdURjo6UG9pc29uZWRVbmlxdWVQdHI6OmNyZWF0ZSk6CisgICAgICAgIChXVEY6OlBvaXNvbmVk
VW5pcXVlUHRyOjpvcGVyYXRvcj0pOgorICAgICAgICAoV1RGOjpQb2lzb25lZFVuaXF1ZVB0cjo6
Z2V0IGNvbnN0KToKKyAgICAgICAgKFdURjo6UG9pc29uZWRVbmlxdWVQdHI6Om9wZXJhdG9yW10g
Y29uc3QpOgorICAgICAgICAoV1RGOjpQb2lzb25lZFVuaXF1ZVB0cjo6Y2xlYXIpOgorICAgICAg
ICAoV1RGOjpQb2lzb25lZFVuaXF1ZVB0cjo6ZGVzdHJveSk6CisgICAgICAgIChXVEY6OlBvaXNv
bmVkVW5pcXVlUHRyOjpjbGVhcldpdGhvdXREZXN0cm95KToKKyAgICAgICAgKFdURjo6bWFrZVBv
aXNvbmVkVW5pcXVlKToKKyAgICAgICAgKiB3dGYvUmVmUHRyLmNwcDogUmVtb3ZlZC4KKwogMjAx
Ny0xMi0yMSAgSmVyZW15IEpvbmVzICA8amVyZW15akBhcHBsZS5jb20+CiAKICAgICAgICAgRWxl
bWVudCBmdWxsc2NyZWVuIGludGVyZmFjZSBzaG91bGQgZGlzcGxheSB0aGUgbG9jYXRpb24KSW5k
ZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjI2
MjMyKQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMTUwLDcgKzE1MCw3IEBACiAJCUUzQTMyQkM0MUZDODMwRTIwMDdEN0U3NiAv
KiBKU1ZhbHVlTWFsbG9jLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzQTMyQkMyMUZDODMwRTIwMDdEN0U3NiAvKiBKU1ZhbHVlTWFsbG9jLmNwcCAq
LzsgfTsKIAkJRTRBMEFEMzkxQTk2MjQ1NTAwNTM2REY2IC8qIFdvcmtRdWV1ZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEEwQUQzNzFBOTYyNDU1
MDA1MzZERjYgLyogV29ya1F1ZXVlLmNwcCAqLzsgfTsKIAkJRTRBMEFEM0QxQTk2MjUzQzAwNTM2
REY2IC8qIFdvcmtRdWV1ZUNvY29hLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEU0QTBBRDNDMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2Nv
YS5jcHAgKi87IH07Ci0JCUZFMDVGQUZGMUZFNTAwNzUwMDA5MzIzMCAvKiBSZWZQdHIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwNUZBRkUxRkU1
MDA3NTAwMDkzMjMwIC8qIFJlZlB0ci5jcHAgKi87IH07CisJCUZFMDVGQUZGMUZFNTAwNzUwMDA5
MzIzMCAvKiBQb2ludGVyQXNzZXJ0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRTA1RkFGRTFGRTUwMDc1MDAwOTMyMzAgLyogUG9pbnRlckFzc2Vy
dHMuY3BwICovOyB9OwogCQlGRTg1NDE2RTFGQkUyODVEMDA4REE1REEgLyogUG9pc29uZWQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4NTQxNkMx
RkJFMjg1QjAwOERBNURBIC8qIFBvaXNvbmVkLmNwcCAqLzsgfTsKIAkJRkVEQUNEM0QxNjMwRjgz
RjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkVEQUNEM0IxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMu
Y3BwICovOyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCkBAIC02MTksNyArNjE5
LDggQEAKIAkJRUY3RDZDRDU5RDg2NDJBOEEwREE4NkFEIC8qIFN0YWNrVHJhY2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhY2tUcmFjZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGNzJCQkRCMTA3RkE0MjQ4ODYxNzhCOUUgLyogU3ltYm9sSW1wbC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTeW1ib2xJbXBsLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUwNUZBRTYxRkRCMjE0MzAwMDkzMjMwIC8qIER1
bWJQdHJUcmFpdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRHVtYlB0clRy
YWl0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRTA1RkFGRTFGRTUwMDc1MDAw
OTMyMzAgLyogUmVmUHRyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlZlB0ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMDVGQUZFMUZFNTAw
NzUwMDA5MzIzMCAvKiBQb2ludGVyQXNzZXJ0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBQb2ludGVyQXNzZXJ0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUZFMDVGQjA0MUZFODQ1MzIwMDA5MzIzMCAvKiBQb2lzb25lZFVuaXF1ZVB0ci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb2lzb25lZFVuaXF1ZVB0ci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTgyMjUzMDFCMkExRTVCMDBCQTY4RkQgLyogTmFr
ZWRQdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmFrZWRQdHIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU4NTQxNkMxRkJFMjg1QjAwOERBNURBIC8qIFBv
aXNvbmVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvaXNvbmVk
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU4NTQxNkQxRkJFMjg1QzAwOERB
NURBIC8qIFBvaXNvbmVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvaXNv
bmVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05ODIsOSArOTgzLDExIEBACiAJ
CQkJMEY4MjRBNjUxQjc0NDNBMDAwMkUzNDVEIC8qIFBhcmtpbmdMb3QuaCAqLywKIAkJCQlBODc2
REJENzE1MTgxNkU1MDBEQURCOTUgLyogUGxhdGZvcm0uaCAqLywKIAkJCQlFMzIwMEFCNDFFOUE1
MzZEMDAzQjU5RDIgLyogUGxhdGZvcm1SZWdpc3RlcnMuaCAqLywKKwkJCQlGRTA1RkFGRTFGRTUw
MDc1MDAwOTMyMzAgLyogUG9pbnRlckFzc2VydHMuY3BwICovLAogCQkJCTBGRjg2MDk0MUJDQ0JE
NzQwMDQ1MTI3RiAvKiBQb2ludGVyQ29tcGFyaXNvbi5oICovLAogCQkJCUZFODU0MTZDMUZCRTI4
NUIwMDhEQTVEQSAvKiBQb2lzb25lZC5jcHAgKi8sCiAJCQkJRkU4NTQxNkQxRkJFMjg1QzAwOERB
NURBIC8qIFBvaXNvbmVkLmggKi8sCisJCQkJRkUwNUZCMDQxRkU4NDUzMjAwMDkzMjMwIC8qIFBv
aXNvbmVkVW5pcXVlUHRyLmggKi8sCiAJCQkJMEY5RDMzNUQxNjVEQkE3MzAwNUFEMzg3IC8qIFBy
aW50U3RyZWFtLmNwcCAqLywKIAkJCQkwRjlEMzM1RTE2NURCQTczMDA1QUQzODcgLyogUHJpbnRT
dHJlYW0uaCAqLywKIAkJCQk1M0VDMjUzQzFFOTVBRDMwMDAwODMxQjkgLyogUHJpb3JpdHlRdWV1
ZS5oICovLApAQCAtMTAxMCw3ICsxMDEzLDYgQEAKIAkJCQlBOEE0NzMwMTE1MUE4MjVCMDA0MTIz
RkYgLyogUmVmQ291bnRlZExlYWtDb3VudGVyLmNwcCAqLywKIAkJCQlBOEE0NzMwMjE1MUE4MjVC
MDA0MTIzRkYgLyogUmVmQ291bnRlZExlYWtDb3VudGVyLmggKi8sCiAJCQkJODZGNDZGNUYxQTI4
NDBFRTAwQ0NCRjIyIC8qIFJlZkNvdW50ZXIuaCAqLywKLQkJCQlGRTA1RkFGRTFGRTUwMDc1MDAw
OTMyMzAgLyogUmVmUHRyLmNwcCAqLywKIAkJCQlBOEE0NzMwMzE1MUE4MjVCMDA0MTIzRkYgLyog
UmVmUHRyLmggKi8sCiAJCQkJQThBNDczMDUxNTFBODI1QjAwNDEyM0ZGIC8qIFJldGFpblB0ci5o
ICovLAogCQkJCTJDREVEMEYxMTgxMTVDODUwMDREQkE3MCAvKiBSdW5Mb29wLmNwcCAqLywKQEAg
LTE0MTgsNyArMTQyMCw3IEBACiAJCQkJMEY2NkIyOEExREM5N0JBQjAwNEExRDNGIC8qIENsb2Nr
VHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQ2MDE1MUE4MjVCMDA0MTIzRkYgLyog
Q29sbGF0b3JEZWZhdWx0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDYzMTUxQTgyNUIw
MDQxMjNGRiAvKiBDb2xsYXRvcklDVS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlGRTA1RkFGRjFG
RTUwMDc1MDAwOTMyMzAgLyogUmVmUHRyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFMDVGQUZG
MUZFNTAwNzUwMDA5MzIzMCAvKiBQb2ludGVyQXNzZXJ0cy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjhGMkI5MjE3MkUwMTAzMDA3REJEQTUgLyogQ29tcGlsYXRpb25UaHJlYWQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEYzMENCNUExRkNERjEzNDAwNEI1MzIzIC8qIENvbmN1cnJlbnRQdHJI
YXNoU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOEU4NURCMUZENDg1QjAwMDY5MTg4OSAv
KiBDb3VudGluZ0xvY2suY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9D
TWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4
dAkocmV2aXNpb24gMjI2MjMyKQorKysgU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTExMSw2ICsxMTEsNyBAQCBzZXQoV1RGX0hFQURFUlMKICAgICBQbGF0
Zm9ybS5oCiAgICAgUGxhdGZvcm1SZWdpc3RlcnMuaAogICAgIFBvaXNvbmVkLmgKKyAgICBQb2lz
b25lZFVuaXF1ZVB0ci5oCiAgICAgUHJpbnRTdHJlYW0uaAogICAgIFByb2Nlc3NJRC5oCiAgICAg
UkFNU2l6ZS5oCkBAIC0yNjIsNiArMjYzLDcgQEAgc2V0KFdURl9TT1VSQ0VTCiAgICAgUGFyYWxs
ZWxIZWxwZXJQb29sLmNwcAogICAgIFBhcmFsbGVsSm9ic0dlbmVyaWMuY3BwCiAgICAgUGFya2lu
Z0xvdC5jcHAKKyAgICBQb2ludGVyQXNzZXJ0cy5jcHAKICAgICBQb2lzb25lZC5jcHAKICAgICBQ
cmludFN0cmVhbS5jcHAKICAgICBSQU1TaXplLmNwcApAQCAtMjY5LDcgKzI3MSw2IEBAIHNldChX
VEZfU09VUkNFUwogICAgIFJhbmRvbU51bWJlci5jcHAKICAgICBSZWFkV3JpdGVMb2NrLmNwcAog
ICAgIFJlZkNvdW50ZWRMZWFrQ291bnRlci5jcHAKLSAgICBSZWZQdHIuY3BwCiAgICAgUnVuTG9v
cC5jcHAKICAgICBTSEExLmNwcAogICAgIFNlY29uZHMuY3BwCkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi9Qb2ludGVyQXNzZXJ0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUG9pbnRl
ckFzc2VydHMuY3BwCShyZXZpc2lvbiAyMjYyMzIpCShmcm9tIFNvdXJjZS9XVEYvd3RmL1JlZlB0
ci5jcHA6MjI2MjMyKQorKysgU291cmNlL1dURi93dGYvUG9pbnRlckFzc2VydHMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVmUHRyLmgi
CisKKyNpbmNsdWRlICJQb2lzb25lZC5oIgorCituYW1lc3BhY2UgV1RGIHsKKworc3RydWN0IER1
bW15Q2xhc3MgeyB9OworCitzdGF0aWNfYXNzZXJ0KHNpemVvZihSZWY8RHVtbXlDbGFzcz4pID09
IHNpemVvZihEdW1teUNsYXNzKiksICIiKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFBvaXNvbmVk
UmVmPDB4ZmZmZiwgRHVtbXlDbGFzcz4pID09IHNpemVvZihEdW1teUNsYXNzKiksICIiKTsKKwor
c3RhdGljX2Fzc2VydChzaXplb2YoUmVmUHRyPER1bW15Q2xhc3M+KSA9PSBzaXplb2YoRHVtbXlD
bGFzcyopLCAiIik7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihQb2lzb25lZFJlZlB0cjwweGZmZmYs
IER1bW15Q2xhc3M+KSA9PSBzaXplb2YoRHVtbXlDbGFzcyopLCAiIik7CisKK30gLy8gbmFtZXNw
YWNlIFdURgorCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Qb2ludGVyQXNzZXJ0cy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvUG9pbnRlckFzc2VydHMuY3BwCShyZXZpc2lvbiAyMjYy
MzIpCisrKyBTb3VyY2UvV1RGL3d0Zi9Qb2ludGVyQXNzZXJ0cy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI0LDEzICsyNCwxNiBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJSZWZQdHIuaCIKIAotI2luY2x1ZGUgIlBvaXNvbmVkLmgiCisjaW5jbHVkZSA8d3RmL1BvaXNv
bmVkLmg+CisjaW5jbHVkZSA8d3RmL1BvaXNvbmVkVW5pcXVlUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIAorbmFtZXNwYWNlIHsKIHN0cnVjdCBEdW1t
eUNsYXNzIHsgfTsKK30KIAogc3RhdGljX2Fzc2VydChzaXplb2YoUmVmPER1bW15Q2xhc3M+KSA9
PSBzaXplb2YoRHVtbXlDbGFzcyopLCAiIik7CiBzdGF0aWNfYXNzZXJ0KHNpemVvZihQb2lzb25l
ZFJlZjwweGZmZmYsIER1bW15Q2xhc3M+KSA9PSBzaXplb2YoRHVtbXlDbGFzcyopLCAiIik7CkBA
IC0zOCw1ICs0MSw5IEBAIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFBvaXNvbmVkUmVmPDB4ZmZmZiwK
IHN0YXRpY19hc3NlcnQoc2l6ZW9mKFJlZlB0cjxEdW1teUNsYXNzPikgPT0gc2l6ZW9mKER1bW15
Q2xhc3MqKSwgIiIpOwogc3RhdGljX2Fzc2VydChzaXplb2YoUG9pc29uZWRSZWZQdHI8MHhmZmZm
LCBEdW1teUNsYXNzPikgPT0gc2l6ZW9mKER1bW15Q2xhc3MqKSwgIiIpOwogCitzdGF0aWNfYXNz
ZXJ0KHNpemVvZihQb2lzb25lZFVuaXF1ZVB0cjwweGZmZmYsIER1bW15Q2xhc3M+KSA9PSBzaXpl
b2YoRHVtbXlDbGFzcyopLCAiIik7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihQb2lzb25lZFVuaXF1
ZVB0cjwweGZmZmYsIGludFtdPikgPT0gc2l6ZW9mKGludCopLCAiIik7CitzdGF0aWNfYXNzZXJ0
KHNpemVvZihQb2lzb25lZFVuaXF1ZVB0cjwweGZmZmYsIER1bW15Q2xhc3NbXT4pID09IHNpemVv
ZihEdW1teUNsYXNzKiksICIiKTsKKwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL1BvaXNvbmVkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUG9pc29u
ZWQuaAkocmV2aXNpb24gMjI2MjMyKQorKysgU291cmNlL1dURi93dGYvUG9pc29uZWQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUg
PHV0aWxpdHk+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAogI2RlZmluZSBFTkFCTEVf
UE9JU09OIDEKQEAgLTIxNiw3ICsyMTcsOSBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgdWludHB0cl90
IG1ha2VQb2lzb24oCiBpbmxpbmUgY29uc3RleHByIHVpbnRwdHJfdCBtYWtlUG9pc29uKHVpbnQz
Ml90IGtleSkKIHsKICNpZiBFTkFCTEUoUE9JU09OKQotICAgIHJldHVybiBzdGF0aWNfY2FzdDx1
aW50cHRyX3Q+KDB4ODAwMDAwMDAgfCBrZXkpIDw8IDMyOworICAgIHVpbnRwdHJfdCBwb2lzb24x
ID0gc3RhdGljX2Nhc3Q8dWludHB0cl90PihrZXkpICogNjkwNjk2OTA2OSArIDEyMzQ1Njc7Cisg
ICAgdWludHB0cl90IHBvaXNvbjIgPSBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGtleSkgKiA4MjUz
NzI5ICsgMjM5NjQwMzsKKyAgICByZXR1cm4gKChwb2lzb24xIDw8IDMpIF4gKHBvaXNvbjIgPDwg
MzIpKSB8IChzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpIDw8IDYzKTsKICNlbHNlCiAgICAgcmV0
dXJuICh2b2lkKWtleSwgMDsKICNlbmRpZgpJbmRleDogU291cmNlL1dURi93dGYvUG9pc29uZWRV
bmlxdWVQdHIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Qb2lzb25lZFVuaXF1ZVB0
ci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVkVW5pcXVlUHRyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9GYXN0
TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL1BvaXNvbmVkLmg+CisKK25hbWVzcGFjZSBXVEYgewor
Cit0ZW1wbGF0ZTx1aW50MzJfdCBrZXksIHR5cGVuYW1lIFQsIHR5cGVuYW1lIEVuYWJsZSA9IHZv
aWQ+CitjbGFzcyBQb2lzb25lZFVuaXF1ZVB0ciA6IHB1YmxpYyBDb25zdEV4cHJQb2lzb25lZDxr
ZXksIFQqPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgdXNpbmcgQmFzZSA9
IENvbnN0RXhwclBvaXNvbmVkPGtleSwgVCo+OworcHVibGljOgorICAgIFBvaXNvbmVkVW5pcXVl
UHRyKCkgOiBCYXNlKCkgeyB9CisgICAgUG9pc29uZWRVbmlxdWVQdHIoVCogcHRyKSA6IEJhc2Uo
cHRyKSB7IH0KKyAgICBQb2lzb25lZFVuaXF1ZVB0cihQb2lzb25lZFVuaXF1ZVB0ciYmIHB0cikg
OiBCYXNlKFdURk1vdmUocHRyKSkgeyBwdHIuY2xlYXJXaXRob3V0RGVzdHJveSgpOyB9CisKKyAg
ICB0ZW1wbGF0ZTx1aW50MzJfdCBrZXkyLCB0eXBlbmFtZSBVLCB0eXBlbmFtZSA9IHN0ZDo6ZW5h
YmxlX2lmX3Q8c3RkOjppc19iYXNlX29mPFQsIFU+Ojp2YWx1ZT4+CisgICAgUG9pc29uZWRVbmlx
dWVQdHIoUG9pc29uZWRVbmlxdWVQdHI8a2V5MiwgVT4mJiBwdHIpCisgICAgICAgIDogQmFzZShw
dHIudW5wb2lzb25lZCgpKQorICAgIHsKKyAgICAgICAgcHRyLmNsZWFyV2l0aG91dERlc3Ryb3ko
KTsKKyAgICB9CisKKyAgICBQb2lzb25lZFVuaXF1ZVB0cihjb25zdCBQb2lzb25lZFVuaXF1ZVB0
ciYpID0gZGVsZXRlOworCisgICAgflBvaXNvbmVkVW5pcXVlUHRyKCkgeyBkZXN0cm95KCk7IH0K
KworICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAgICBzdGF0aWMgUG9pc29u
ZWRVbmlxdWVQdHIgY3JlYXRlKEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKKyAgICB7CisgICAg
ICAgIFQqIHJlc3VsdCA9IG5ldyBUKHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cyku
Li4pOworICAgICAgICByZXR1cm4gUG9pc29uZWRVbmlxdWVQdHIocmVzdWx0KTsKKyAgICB9CisK
KyAgICBQb2lzb25lZFVuaXF1ZVB0ciYgb3BlcmF0b3I9KFQqIHB0cikKKyAgICB7CisgICAgICAg
IGlmIChMSUtFTFkodGhpcy0+dW5wb2lzb25lZCgpICE9IHB0cikpIHsKKyAgICAgICAgICAgIHRo
aXMtPmNsZWFyKCk7CisgICAgICAgICAgICB0aGlzLT5CYXNlOjpvcGVyYXRvcj0ocHRyKTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgdGVtcGxhdGU8dWlu
dDMyX3Qga2V5MiwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6
aXNfYmFzZV9vZjxULCBVPjo6dmFsdWU+PgorICAgIFBvaXNvbmVkVW5pcXVlUHRyJiBvcGVyYXRv
cj0oUG9pc29uZWRVbmlxdWVQdHI8a2V5MiwgVT4mJiBwdHIpCisgICAgeworICAgICAgICBBU1NF
UlQodGhpcyA9PSByZWludGVycHJldF9jYXN0PHZvaWQqPigmcHRyKSB8fCB0aGlzLT51bnBvaXNv
bmVkKCkgIT0gcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIGlmIChMSUtFTFkodGhpcyAhPSBy
ZWludGVycHJldF9jYXN0PHZvaWQqPigmcHRyKSkpIHsKKyAgICAgICAgICAgIHRoaXMtPmNsZWFy
KCk7CisgICAgICAgICAgICB0aGlzLT5CYXNlOjpvcGVyYXRvcj0oV1RGTW92ZShwdHIpKTsKKyAg
ICAgICAgICAgIHB0ci5jbGVhcldpdGhvdXREZXN0cm95KCk7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuICp0aGlzOworICAgIH0KKworICAgIFBvaXNvbmVkVW5pcXVlUHRyJiBvcGVyYXRvcj0o
Y29uc3QgUG9pc29uZWRVbmlxdWVQdHImKSA9IGRlbGV0ZTsKKworICAgIFQqIGdldCgpIGNvbnN0
IHsgcmV0dXJuIHRoaXMtPnVucG9pc29uZWQoKTsgfQorICAgIFQmIG9wZXJhdG9yW10oc2l6ZV90
IGluZGV4KSBjb25zdCB7IHJldHVybiB0aGlzLT51bnBvaXNvbmVkKClbaW5kZXhdOyB9CisKKyAg
ICB2b2lkIGNsZWFyKCkKKyAgICB7CisgICAgICAgIGRlc3Ryb3koKTsKKyAgICAgICAgY2xlYXJX
aXRob3V0RGVzdHJveSgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGRlc3Ryb3koKQor
ICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLT5iaXRzKCkpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIGRlbGV0ZSB0aGlzLT51bnBvaXNvbmVkKCk7CisgICAgfQorCisgICAgdm9pZCBjbGVh
cldpdGhvdXREZXN0cm95KCkgeyBCYXNlOjpjbGVhcigpOyB9CisKKyAgICB0ZW1wbGF0ZTx1aW50
MzJfdCwgdHlwZW5hbWUsIHR5cGVuYW1lPiBmcmllbmQgY2xhc3MgUG9pc29uZWRVbmlxdWVQdHI7
Cit9OworCit0ZW1wbGF0ZTx1aW50MzJfdCBrZXksIHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFy
Z3VtZW50cywgdHlwZW5hbWUgRW5hYmxlID0gdm9pZD4KK1BvaXNvbmVkVW5pcXVlUHRyPGtleSwg
VD4gbWFrZVBvaXNvbmVkVW5pcXVlKEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKK3sKKyAgICBy
ZXR1cm4gUG9pc29uZWRVbmlxdWVQdHI8a2V5LCBUPjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmd1
bWVudHM+KGFyZ3VtZW50cykuLi4pOworfQorCit0ZW1wbGF0ZTx1aW50MzJfdCBrZXksIHR5cGVu
YW1lIFQ+CitjbGFzcyBQb2lzb25lZFVuaXF1ZVB0cjxrZXksIFRbXT4gOiBwdWJsaWMgQ29uc3RF
eHByUG9pc29uZWQ8a2V5LCBUKj4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAg
IHVzaW5nIEJhc2UgPSBDb25zdEV4cHJQb2lzb25lZDxrZXksIFQqPjsKK3B1YmxpYzoKKyAgICBQ
b2lzb25lZFVuaXF1ZVB0cigpIDogQmFzZSgpIHsgfQorICAgIFBvaXNvbmVkVW5pcXVlUHRyKFQq
IHB0cikgOiBCYXNlKHB0cikgeyB9CisgICAgUG9pc29uZWRVbmlxdWVQdHIoUG9pc29uZWRVbmlx
dWVQdHImJiBwdHIpIDogQmFzZShXVEZNb3ZlKHB0cikpIHsgcHRyLmNsZWFyV2l0aG91dERlc3Ry
b3koKTsgfQorCisgICAgdGVtcGxhdGU8dWludDMyX3Qga2V5Mj4KKyAgICBQb2lzb25lZFVuaXF1
ZVB0cihQb2lzb25lZFVuaXF1ZVB0cjxrZXkyLCBUW10+JiYgcHRyKQorICAgICAgICA6IEJhc2Uo
cHRyLnVucG9pc29uZWQoKSkKKyAgICB7CisgICAgICAgIHB0ci5jbGVhcldpdGhvdXREZXN0cm95
KCk7CisgICAgfQorCisgICAgUG9pc29uZWRVbmlxdWVQdHIoY29uc3QgUG9pc29uZWRVbmlxdWVQ
dHImKSA9IGRlbGV0ZTsKKworICAgIH5Qb2lzb25lZFVuaXF1ZVB0cigpIHsgZGVzdHJveSgpOyB9
CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAgc3RhdGljIFBvaXNv
bmVkVW5pcXVlUHRyIGNyZWF0ZShzaXplX3QgY291bnQsIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50
cykKKyAgICB7CisgICAgICAgIFQqIHJlc3VsdCA9IG5ldyBUW2NvdW50XTsKKyAgICAgICAgd2hp
bGUgKGNvdW50LS0pCisgICAgICAgICAgICBuZXcgKHJlc3VsdCArIGNvdW50KSBUKHN0ZDo6Zm9y
d2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pOworICAgICAgICByZXR1cm4gUG9pc29uZWRV
bmlxdWVQdHIocmVzdWx0KTsKKyAgICB9CisKKyAgICBQb2lzb25lZFVuaXF1ZVB0ciYgb3BlcmF0
b3I9KFQqIHB0cikKKyAgICB7CisgICAgICAgIGlmIChMSUtFTFkodGhpcy0+dW5wb2lzb25lZCgp
ICE9IHB0cikpIHsKKyAgICAgICAgICAgIHRoaXMtPmNsZWFyKCk7CisgICAgICAgICAgICB0aGlz
LT5CYXNlOjpvcGVyYXRvcj0ocHRyKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gKnRoaXM7
CisgICAgfQorCisgICAgdGVtcGxhdGU8dWludDMyX3Qga2V5Mj4KKyAgICBQb2lzb25lZFVuaXF1
ZVB0ciYgb3BlcmF0b3I9KFBvaXNvbmVkVW5pcXVlUHRyPGtleTIsIFRbXT4mJiBwdHIpCisgICAg
eworICAgICAgICBBU1NFUlQodGhpcyA9PSByZWludGVycHJldF9jYXN0PHZvaWQqPigmcHRyKSB8
fCB0aGlzLT51bnBvaXNvbmVkKCkgIT0gcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIGlmIChM
SUtFTFkodGhpcyAhPSByZWludGVycHJldF9jYXN0PHZvaWQqPigmcHRyKSkpIHsKKyAgICAgICAg
ICAgIHRoaXMtPmNsZWFyKCk7CisgICAgICAgICAgICB0aGlzLT5CYXNlOjpvcGVyYXRvcj0oV1RG
TW92ZShwdHIpKTsKKyAgICAgICAgICAgIHB0ci5jbGVhcldpdGhvdXREZXN0cm95KCk7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIFBvaXNvbmVkVW5pcXVl
UHRyJiBvcGVyYXRvcj0oY29uc3QgUG9pc29uZWRVbmlxdWVQdHImKSA9IGRlbGV0ZTsKKworICAg
IFQqIGdldCgpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPnVucG9pc29uZWQoKTsgfQorICAgIFQmIG9w
ZXJhdG9yW10oc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiB0aGlzLT51bnBvaXNvbmVkKClb
aW5kZXhdOyB9CisKKyAgICB2b2lkIGNsZWFyKCkKKyAgICB7CisgICAgICAgIGRlc3Ryb3koKTsK
KyAgICAgICAgY2xlYXJXaXRob3V0RGVzdHJveSgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2
b2lkIGRlc3Ryb3koKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLT5iaXRzKCkpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIGRlbGV0ZVtdIHRoaXMtPnVucG9pc29uZWQoKTsKKyAgICB9
CisKKyAgICB2b2lkIGNsZWFyV2l0aG91dERlc3Ryb3koKSB7IEJhc2U6OmNsZWFyKCk7IH0KKwor
ICAgIHRlbXBsYXRlPHVpbnQzMl90LCB0eXBlbmFtZSwgdHlwZW5hbWU+IGZyaWVuZCBjbGFzcyBQ
b2lzb25lZFVuaXF1ZVB0cjsKK307CisKK3RlbXBsYXRlPHVpbnQzMl90IGtleSwgdHlwZW5hbWUg
VCwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgorUG9pc29uZWRVbmlxdWVQdHI8a2V5LCBUW10+IG1h
a2VQb2lzb25lZFVuaXF1ZShzaXplX3QgY291bnQsIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykK
K3sKKyAgICByZXR1cm4gUG9pc29uZWRVbmlxdWVQdHI8a2V5LCBUW10+OjpjcmVhdGUoY291bnQs
IHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pOworfQorCit9IC8vIG5hbWVz
cGFjZSBXVEYKKwordXNpbmcgV1RGOjpQb2lzb25lZFVuaXF1ZVB0cjsKK3VzaW5nIFdURjo6bWFr
ZVBvaXNvbmVkVW5pcXVlOworCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9SZWZQdHIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1JlZlB0ci5jcHAJKHJldmlzaW9uIDIyNjIzMikKKysr
IFNvdXJjZS9XVEYvd3RmL1JlZlB0ci5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw0MiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIlJlZlB0ci5oIgotCi0jaW5jbHVkZSAiUG9pc29uZWQuaCIK
LQotbmFtZXNwYWNlIFdURiB7Ci0KLXN0cnVjdCBEdW1teUNsYXNzIHsgfTsKLQotc3RhdGljX2Fz
c2VydChzaXplb2YoUmVmPER1bW15Q2xhc3M+KSA9PSBzaXplb2YoRHVtbXlDbGFzcyopLCAiIik7
Ci1zdGF0aWNfYXNzZXJ0KHNpemVvZihQb2lzb25lZFJlZjwweGZmZmYsIER1bW15Q2xhc3M+KSA9
PSBzaXplb2YoRHVtbXlDbGFzcyopLCAiIik7Ci0KLXN0YXRpY19hc3NlcnQoc2l6ZW9mKFJlZlB0
cjxEdW1teUNsYXNzPikgPT0gc2l6ZW9mKER1bW15Q2xhc3MqKSwgIiIpOwotc3RhdGljX2Fzc2Vy
dChzaXplb2YoUG9pc29uZWRSZWZQdHI8MHhmZmZmLCBEdW1teUNsYXNzPikgPT0gc2l6ZW9mKER1
bW15Q2xhc3MqKSwgIiIpOwotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQpJbmRleDogVG9vbHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjI2MjMzKQor
KysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTct
MTItMjEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXVEY6
OlBvaXNvbmVkVW5pcXVlUHRyIHRvIHJlcGxhY2Ugc3RkOjp1bmlxdWVfcHRyIHdoZW4gcG9pc29u
aW5nIGlzIGRlc2lyZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODEwNjIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM2MTY3MDQwPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0NvbnN0RXhwclBvaXNvbmVkLmNwcDoKKyAgICAgICAgLSBSZW1vdmVkIGFuIHVubmVl
ZGVkICNpbmNsdWRlLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29u
ZWRVbmlxdWVQdHIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6cG9pc29uZWRQdHJGb28pOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGx5RGVzdHJ1
Y3RpYmxlQXJyYXlzLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFVuaXF1ZVB0ckZvclRy
aXZpYWxseURlc3RydWN0aWJsZUFycmF5cy5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6CisKIDIwMTctMTItMjEgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBz
b255LmNvbT4KIAogICAgICAgICBbQXBwbGVXaW5dIEF1eGlsaWFyeSBsaWJyYXJpZXMgc2hvdWxk
IGJlIHVwZGF0ZWQgd2l0aGluIGJ1aWxkLXdlYmtpdApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQ
SS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL0NNYWtl
TGlzdHMudHh0CShyZXZpc2lvbiAyMjYyMzIpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL0NNYWtl
TGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNiArMTI2LDkgQEAgc2V0KFRlc3RXVEZf
U09VUkNFUwogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9Qb2lzb25lZC5jcHAK
ICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvUG9pc29uZWRSZWYuY3BwCiAgICAg
JHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1BvaXNvbmVkUmVmUHRyLmNwcAorICAgICR7
VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9Qb2lzb25lZFVuaXF1ZVB0ci5jcHAKKyAgICAk
e1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2
aWFsbHlEZXN0cnVjdGlibGVBcnJheXMuY3BwCisgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVz
dHMvV1RGL1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLmNw
cAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9Qcmlvcml0eVF1ZXVlLmNwcAog
ICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9SZWRCbGFja1RyZWUuY3BwCiAgICAg
JHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1JlZi5jcHAKSW5kZXg6IFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiAyMjYyMzIpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzYy
LDYgKzc2Miw5IEBACiAJCUZFMDVGQUVEMUZEQjUxMEUwMDA5MzIzMCAvKiBQb2lzb25lZFJlZlB0
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTA1
RkFFQTFGREI1MTAxMDAwOTMyMzAgLyogUG9pc29uZWRSZWZQdHIuY3BwICovOyB9OwogCQlGRTA1
RkFFRjFGRTA2NDVCMDAwOTMyMzAgLyogUG9pc29uZWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwNUZBRUUxRkUwNjQzRDAwMDkzMjMwIC8qIFBv
aXNvbmVkLmNwcCAqLzsgfTsKIAkJRkUwNUZBRjExRkUwOENENDAwMDkzMjMwIC8qIENvbnN0RXhw
clBvaXNvbmVkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFMDVGQUYwMUZFMDhDQ0QwMDA5MzIzMCAvKiBDb25zdEV4cHJQb2lzb25lZC5jcHAgKi87
IH07CisJCUZFMDVGQjA2MUZFODRGQjcwMDA5MzIzMCAvKiBQb2lzb25lZFVuaXF1ZVB0ci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTA1RkIwNTFG
RTg0RkFFMDAwOTMyMzAgLyogUG9pc29uZWRVbmlxdWVQdHIuY3BwICovOyB9OworCQlGRUM4RjRF
NzFGRTlDOTA1MDA1NkZEOEEgLyogUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZXN0cnVj
dGlibGVBcnJheXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkVDOEY0RTYxRkU5QzhERTAwNTZGRDhBIC8qIFBvaXNvbmVkVW5pcXVlUHRyRm9yVHJp
dmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLmNwcCAqLzsgfTsKKwkJRkVDOEY0RUIxRkU5RjVBRjAw
NTZGRDhBIC8qIFBvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJy
YXlzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
QzhGNEVBMUZFOUY1QTcwMDU2RkQ4QSAvKiBQb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxs
eURlc3RydWN0aWJsZUFycmF5cy5jcHAgKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rp
b24gKi8KIAogLyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTE4
NjksNyArMTg3MiwxMCBAQAogCQlGRTA1RkFFQjFGREI1MTAyMDAwOTMyMzAgLyogUG9pc29uZWRS
ZWYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9pc29uZWRSZWYu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTA1RkFFRTFGRTA2NDNEMDAwOTMy
MzAgLyogUG9pc29uZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UG9pc29uZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTA1RkFGMDFGRTA4
Q0NEMDAwOTMyMzAgLyogQ29uc3RFeHByUG9pc29uZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQ29uc3RFeHByUG9pc29uZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGRTA1RkIwNTFGRTg0RkFFMDAwOTMyMzAgLyogUG9pc29uZWRVbmlxdWVQ
dHIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9pc29uZWRVbmlx
dWVQdHIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUI2Rjc0RTFCMkJBNDRF
MDA5RTQ5MjIgLyogTmFrZWRQdHIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTmFrZWRQdHIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRUM4RjRF
NjFGRTlDOERFMDA1NkZEOEEgLyogUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZXN0cnVj
dGlibGVBcnJheXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9p
c29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlGRUM4RjRFQTFGRTlGNUE3MDA1NkZEOEEgLyogUG9pc29u
ZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2
aWFsbHlEZXN0cnVjdGlibGVBcnJheXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
LyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdv
cmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCkBAIC0yNjcxLDYgKzI2NzcsOSBAQAogCQkJCUZFMDVG
QUVFMUZFMDY0M0QwMDA5MzIzMCAvKiBQb2lzb25lZC5jcHAgKi8sCiAJCQkJRkUwNUZBRUIxRkRC
NTEwMjAwMDkzMjMwIC8qIFBvaXNvbmVkUmVmLmNwcCAqLywKIAkJCQlGRTA1RkFFQTFGREI1MTAx
MDAwOTMyMzAgLyogUG9pc29uZWRSZWZQdHIuY3BwICovLAorCQkJCUZFMDVGQjA1MUZFODRGQUUw
MDA5MzIzMCAvKiBQb2lzb25lZFVuaXF1ZVB0ci5jcHAgKi8sCisJCQkJRkVDOEY0RUExRkU5RjVB
NzAwNTZGRDhBIC8qIFBvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGx5RGVzdHJ1Y3RpYmxl
QXJyYXlzLmNwcCAqLywKKwkJCQlGRUM4RjRFNjFGRTlDOERFMDA1NkZEOEEgLyogUG9pc29uZWRV
bmlxdWVQdHJGb3JUcml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMuY3BwICovLAogCQkJCTUzRUMy
NTNGMUU5NkJDODAwMDA4MzFCOSAvKiBQcmlvcml0eVF1ZXVlLmNwcCAqLywKIAkJCQkwRkM2QzRD
QjE0MTAyN0UwMDA1QjdGMEMgLyogUmVkQmxhY2tUcmVlLmNwcCAqLywKIAkJCQk5M0E0MjdBQTE4
MERBMjY0MDBDRDI0RDcgLyogUmVmLmNwcCAqLywKQEAgLTMyMTEsNiArMzIyMCw3IEBACiAJCQkJ
N0M4M0RFRDQxRDBBNTkwQzAwRkVCQ0YzIC8qIEhhc2hTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0M4M0RFRTAxRDBBNTkwQzAwRkVCQ0YzIC8qIEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0EwNTA5NDExRkI5RjA2NDAwQjMzRkI4IC8qIEpTT05W
YWx1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTA1RkIwNjFGRTg0RkI3MDAwOTMyMzAgLyog
UG9pc29uZWRVbmlxdWVQdHIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTMxQzFEOEUxREY4RUY3
MjAwNkU5NzlGIC8qIExFQkRlY29kZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU3RDU0Rjkx
RjMzOTdCNDAwQTk3QUE3IC8qIExpZmVjeWNsZUxvZ2dlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5M0UyQzU1NTFGRDMyMDQxMDBFMURGNkEgLyogTGluZUVuZGluZy5jcHAgaW4gU291cmNlcyAq
LywKQEAgLTMyNDcsNiArMzI1Nyw3IEBACiAJCQkJN0M4M0RGMzIxRDBBNTkwQzAwRkVCQ0YzIC8q
IFN0cmluZ0J1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NENEMyNkUxRTJDMEU2RTAw
OTI5NDcwIC8qIFN0cmluZ0NvbmNhdGVuYXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNE
RjM2MUQwQTU5MEMwMEZFQkNGMyAvKiBTdHJpbmdIYXNoZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJRkVDOEY0RTcxRkU5QzkwNTAwNTZGRDhBIC8qIFBvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlh
bGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERjM3MUQw
QTU5MEMwMEZFQkNGMyAvKiBTdHJpbmdJbXBsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNE
RjM4MUQwQTU5MEMwMEZFQkNGMyAvKiBTdHJpbmdPcGVyYXRvcnMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0M4M0RGM0ExRDBBNTkwQzAwRkVCQ0YzIC8qIFN0cmluZ1ZpZXcuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC0zMjU1LDYgKzMyNjYsNyBAQAogCQkJCTkzMjlBQTI5MURFM0Y4MUUwMDNBQkQw
NyAvKiBUZXh0QnJlYWtJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFM0RFQTgxMTFG
MEE1ODkwMDBDQkMyRTggLyogVGhyZWFkR3JvdXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTM4
QTBEMzUxRkQ1MENDMzAwRTk4QzhCIC8qIFRocmVhZGluZy5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlGRUM4RjRFQjFGRTlGNUFGMDA1NkZEOEEgLyogUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2
aWFsbHlEZXN0cnVjdGlibGVBcnJheXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTMxMUJENUUx
RUE5NDkwRTAwNTI1MjgxIC8qIFRocmVhZE1lc3NhZ2VzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGMkMyMEI4MURDRDU0NTAwMDU0MkQ5RSAvKiBUaW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTdDODNFMDNCMUQwQTYwMjcwMEZFQkNGMyAvKiBVdGlsaXRpZXNDb2NvYS5tbSBpbiBTb3VyY2Vz
ICovLApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29uc3RFeHByUG9pc29u
ZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NvbnN0
RXhwclBvaXNvbmVkLmNwcAkocmV2aXNpb24gMjI2MjMyKQorKysgVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvQ29uc3RFeHByUG9pc29uZWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3
ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJSZWZMb2dnZXIuaCIK
LSNpbmNsdWRlIDxtdXRleD4KICNpbmNsdWRlIDx3dGYvUG9pc29uZWQuaD4KIAogbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkgewpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9p
c29uZWRVbmlxdWVQdHIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1BvaXNvbmVkVW5pcXVlUHRyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFVuaXF1ZVB0ci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw1MzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDx3dGYvUG9pc29uZWRVbmlx
dWVQdHIuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCituYW1lc3BhY2UgeworCitj
b25zdCB1aW50MzJfdCBQb2lzb25BID0gMHhhYWFhOworY29uc3QgdWludDMyX3QgUG9pc29uQiA9
IDB4YmJiYjsKKworc3RydWN0IExvZ2dlciB7CisgICAgTG9nZ2VyKGNvbnN0IGNoYXIqIG5hbWUs
IGludCYgZGVzdHJ1Y3RDb3VudCkKKyAgICAgICAgOiBuYW1lKCpuYW1lKQorICAgICAgICAsIGRl
c3RydWN0Q291bnQoZGVzdHJ1Y3RDb3VudCkKKyAgICB7IH0KKworICAgIH5Mb2dnZXIoKSB7IGRl
c3RydWN0Q291bnQrKzsgfQorCisgICAgY29uc3QgY2hhciYgbmFtZTsKKyAgICBpbnQmIGRlc3Ry
dWN0Q291bnQ7Cit9OworICAgIAorc3RydWN0IERlcml2ZWRMb2dnZXIgOiBMb2dnZXIgeworICAg
IERlcml2ZWRMb2dnZXIoY29uc3QgY2hhciogbmFtZSwgaW50JiBkZXN0cnVjdENvdW50KQorICAg
ICAgICA6IExvZ2dlcihuYW1lLCBkZXN0cnVjdENvdW50KQorICAgIHsgfQorfTsKKworc3RydWN0
IE90aGVyIHsKKyAgICBPdGhlcihjb25zdCBjaGFyKiwgaW50JikKKyAgICB7IH0KK307CisKK30g
Ly8gYW5vbnltb3VzIG5hbWVzcGFjZQorCitURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgQmFz
aWMpCit7CisgICAgeworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+
IGVtcHR5OworICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgZW1wdHkudW5wb2lzb25lZCgpKTsK
KyAgICAgICAgQVNTRVJUX0VRKDB1LCBlbXB0eS5iaXRzKCkpOworICAgIH0KKworICAgIHsKKyAg
ICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKKyAgICAgICAgTG9nZ2VyKiBhID0gbmV3IExv
Z2dlcigiYSIsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgeworICAgICAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwdHIoYSk7CisgICAgICAgICAgICBBU1NFUlRf
RVEoMCwgYURlc3RydWN0Q291bnQpOworICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBv
aXNvbmVkKCkpOworICAgICAgICAgICAgQVNTRVJUX0VRKGEsICYqcHRyKTsKKyAgICAgICAgICAg
IEFTU0VSVF9FUSgmYS0+bmFtZSwgJnB0ci0+bmFtZSk7CisKKyNpZiBFTkFCTEUoUE9JU09OKQor
ICAgICAgICAgICAgdWludHB0cl90IHB0ckJpdHM7CisgICAgICAgICAgICBzdGQ6Om1lbWNweSgm
cHRyQml0cywgJnB0ciwgc2l6ZW9mKHB0ckJpdHMpKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVF
KHB0ckJpdHMgIT0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oYSkpOworI2lmIEVOQUJMRShQT0lT
T05fQVNTRVJUUykKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKChQb2lzb25lZFVuaXF1ZVB0cjxQ
b2lzb25BLCBMb2dnZXI+Ojppc1BvaXNvbmVkKHB0ckJpdHMpKSk7CisjZW5kaWYKKyNlbmRpZiAv
LyBFTkFCTEUoUE9JU09OKQorICAgICAgICB9CisgICAgICAgIEFTU0VSVF9FUSgxLCBhRGVzdHJ1
Y3RDb3VudCk7CisKKyAgICAgICAgaW50IGJEZXN0cnVjdENvdW50ID0gMDsKKyAgICAgICAgRGVy
aXZlZExvZ2dlciogYiA9IG5ldyBEZXJpdmVkTG9nZ2VyKCJiIiwgYkRlc3RydWN0Q291bnQpOwor
ICAgICAgICB7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+
IHB0cihiKTsKKyAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3VudCk7CisgICAg
ICAgICAgICBBU1NFUlRfRVEoYiwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgICAgICBBU1NF
UlRfRVEoYiwgJipwdHIpOworICAgICAgICAgICAgQVNTRVJUX0VRKCZiLT5uYW1lLCAmcHRyLT5u
YW1lKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlRfRVEoMSwgYkRlc3RydWN0Q291bnQpOwor
ICAgIH0KKworICAgIHsKKyAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKKyAgICAgICAg
TG9nZ2VyKiBhID0gbmV3IExvZ2dlcigiYSIsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgewor
ICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwdHIgPSBhOwor
ICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIEFT
U0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlRf
RVEoMSwgYURlc3RydWN0Q291bnQpOworCisgICAgICAgIGludCBiRGVzdHJ1Y3RDb3VudCA9IDA7
CisgICAgICAgIERlcml2ZWRMb2dnZXIqIGIgPSBuZXcgRGVyaXZlZExvZ2dlcigiYiIsIGJEZXN0
cnVjdENvdW50KTsKKyAgICAgICAgeworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9p
c29uQSwgTG9nZ2VyPiBwdHIgPSBiOworICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGJEZXN0cnVj
dENvdW50KTsKKyAgICAgICAgICAgIEFTU0VSVF9FUShiLCBwdHIudW5wb2lzb25lZCgpKTsKKyAg
ICAgICAgfQorICAgICAgICBBU1NFUlRfRVEoMSwgYkRlc3RydWN0Q291bnQpOworICAgIH0KKwor
ICAgIHsKKyAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKKyAgICAgICAgY29uc3QgY2hh
ciogYU5hbWUgPSAiYSI7CisgICAgICAgIHsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRy
PFBvaXNvbkEsIExvZ2dlcj4gcHRyID0gUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2Vy
Pjo6Y3JlYXRlKGFOYW1lLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBBU1NFUlRfRVEo
MCwgYURlc3RydWN0Q291bnQpOworICAgICAgICAgICAgQVNTRVJUX1RSVUUobnVsbHB0ciAhPSBw
dHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9FUShhTmFtZSwgJnB0ci0+bmFt
ZSk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUX0VRKDEsIGFEZXN0cnVjdENvdW50KTsKKwor
ICAgICAgICBpbnQgYkRlc3RydWN0Q291bnQgPSAwOworICAgICAgICBjb25zdCBjaGFyKiBiTmFt
ZSA9ICJiIjsKKyAgICAgICAgeworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29u
QSwgTG9nZ2VyPiBwdHIgPSBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBEZXJpdmVkTG9nZ2Vy
Pjo6Y3JlYXRlKGJOYW1lLCBiRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBBU1NFUlRfRVEo
MCwgYkRlc3RydWN0Q291bnQpOworICAgICAgICAgICAgQVNTRVJUX1RSVUUobnVsbHB0ciAhPSBw
dHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9FUShiTmFtZSwgJnB0ci0+bmFt
ZSk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUX0VRKDEsIGJEZXN0cnVjdENvdW50KTsKKyAg
ICB9CisKKyAgICB7CisgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CisgICAgICAgIGNv
bnN0IGNoYXIqIGFOYW1lID0gImEiOworICAgICAgICB7CisgICAgICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0ciA9IG1ha2VQb2lzb25lZFVuaXF1ZTxQb2lzb25B
LCBMb2dnZXI+KGFOYW1lLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBBU1NFUlRfRVEo
MCwgYURlc3RydWN0Q291bnQpOworICAgICAgICAgICAgQVNTRVJUX1RSVUUobnVsbHB0ciAhPSBw
dHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9FUShhTmFtZSwgJnB0ci0+bmFt
ZSk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUX0VRKDEsIGFEZXN0cnVjdENvdW50KTsKKwor
ICAgICAgICBpbnQgYkRlc3RydWN0Q291bnQgPSAwOworICAgICAgICBjb25zdCBjaGFyKiBiTmFt
ZSA9ICJiIjsKKyAgICAgICAgeworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29u
QSwgTG9nZ2VyPiBwdHIgPSBtYWtlUG9pc29uZWRVbmlxdWU8UG9pc29uQSwgRGVyaXZlZExvZ2dl
cj4oYk5hbWUsIGJEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVz
dHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRShudWxscHRyICE9IHB0ci51bnBv
aXNvbmVkKCkpOworICAgICAgICAgICAgQVNTRVJUX0VRKGJOYW1lLCAmcHRyLT5uYW1lKTsKKyAg
ICAgICAgfQorICAgICAgICBBU1NFUlRfRVEoMSwgYkRlc3RydWN0Q291bnQpOworICAgIH0KKwor
ICAgIHsKKyAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKKyAgICAgICAgaW50IGJEZXN0
cnVjdENvdW50ID0gMDsKKyAgICAgICAgTG9nZ2VyKiBhID0gbmV3IExvZ2dlcigiYSIsIGFEZXN0
cnVjdENvdW50KTsKKyAgICAgICAgTG9nZ2VyKiBiID0gbmV3IExvZ2dlcigiYiIsIGJEZXN0cnVj
dENvdW50KTsKKyAgICAgICAgeworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29u
QSwgTG9nZ2VyPiBwMSA9IGE7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25B
LCBMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgICAgICBBU1NFUlRfRVEoYURlc3Ry
dWN0Q291bnQsIDApOworICAgICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAxLnVucG9pc29u
ZWQoKSk7CisgICAgICAgICAgICBBU1NFUlRfRVEoMHUsIHAxLmJpdHMoKSk7CisgICAgICAgICAg
ICBBU1NFUlRfRVEoYSwgcDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMyA9IGI7CisgICAgICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxQb2lzb25CLCBMb2dnZXI+IHA0ID0gV1RGTW92ZShwMyk7CisgICAgICAgICAgICBB
U1NFUlRfRVEoMCwgYkRlc3RydWN0Q291bnQpOworICAgICAgICAgICAgQVNTRVJUX0VRKG51bGxw
dHIsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgICAgICBBU1NFUlRfRVEoMHUsIHAzLmJpdHMo
KSk7CisgICAgICAgICAgICBBU1NFUlRfRVEoYiwgcDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAg
fQorICAgICAgICBBU1NFUlRfRVEoMSwgYURlc3RydWN0Q291bnQpOworICAgICAgICBBU1NFUlRf
RVEoMSwgYkRlc3RydWN0Q291bnQpOworICAgIH0KKworICAgIHsKKyAgICAgICAgaW50IGFEZXN0
cnVjdENvdW50ID0gMDsKKyAgICAgICAgaW50IGJEZXN0cnVjdENvdW50ID0gMDsKKyAgICAgICAg
TG9nZ2VyKiBhID0gbmV3IExvZ2dlcigiYSIsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgTG9n
Z2VyKiBiID0gbmV3IExvZ2dlcigiYiIsIGJEZXN0cnVjdENvdW50KTsKKyAgICAgICAgeworICAg
ICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMSA9IGE7CisgICAg
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAyKFdURk1vdmUocDEp
KTsKKyAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAg
ICBBU1NFUlRfRVEobnVsbHB0ciwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgICAgIEFTU0VS
VF9FUSgwdSwgcDEuYml0cygpKTsKKyAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwMi51bnBvaXNv
bmVkKCkpOworCisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+
IHAzID0gYjsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIExvZ2dlcj4g
cDQoV1RGTW92ZShwMykpOworICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGJEZXN0cnVjdENvdW50
KTsKKyAgICAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwMy51bnBvaXNvbmVkKCkpOworICAg
ICAgICAgICAgQVNTRVJUX0VRKDB1LCBwMy5iaXRzKCkpOworICAgICAgICAgICAgQVNTRVJUX0VR
KGIsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUX0VRKDEsIGFE
ZXN0cnVjdENvdW50KTsKKyAgICAgICAgQVNTRVJUX0VRKDEsIGJEZXN0cnVjdENvdW50KTsKKyAg
ICB9CisKKyAgICB7CisgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CisgICAgICAgIGlu
dCBiRGVzdHJ1Y3RDb3VudCA9IDA7CisgICAgICAgIERlcml2ZWRMb2dnZXIqIGEgPSBuZXcgRGVy
aXZlZExvZ2dlcigiYSIsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgRGVyaXZlZExvZ2dlciog
YiA9IG5ldyBEZXJpdmVkTG9nZ2VyKCJiIiwgYkRlc3RydWN0Q291bnQpOworICAgICAgICB7Cisg
ICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAxID0gYTsKKyAg
ICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDIgPSBXVEZNb3Zl
KHAxKTsKKyAgICAgICAgICAgIEFTU0VSVF9FUShhRGVzdHJ1Y3RDb3VudCwgMCk7CisgICAgICAg
ICAgICBBU1NFUlRfVFJVRSghcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9U
UlVFKCFwMS5iaXRzKCkpOworICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29uZWQo
KSk7CisKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDMg
PSBiOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgTG9nZ2VyPiBwNCA9
IFdURk1vdmUocDMpOworICAgICAgICAgICAgQVNTRVJUX0VRKGJEZXN0cnVjdENvdW50LCAwKTsK
KyAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMy51bnBvaXNvbmVkKCkpOworICAgICAgICAgICAg
QVNTRVJUX1RSVUUoIXAzLmJpdHMoKSk7CisgICAgICAgICAgICBBU1NFUlRfRVEoYiwgcDQudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlRfRVEoMSwgYURlc3RydWN0Q291
bnQpOworICAgICAgICBBU1NFUlRfRVEoMSwgYkRlc3RydWN0Q291bnQpOworICAgIH0KKworICAg
IHsKKyAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKKyAgICAgICAgaW50IGJEZXN0cnVj
dENvdW50ID0gMDsKKyAgICAgICAgRGVyaXZlZExvZ2dlciogYSA9IG5ldyBEZXJpdmVkTG9nZ2Vy
KCJhIiwgYURlc3RydWN0Q291bnQpOworICAgICAgICBEZXJpdmVkTG9nZ2VyKiBiID0gbmV3IERl
cml2ZWRMb2dnZXIoImIiLCBiRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgIHsKKyAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDEgPSBhOworICAgICAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMihXVEZNb3ZlKHAxKSk7CisgICAg
ICAgICAgICBBU1NFUlRfRVEoYURlc3RydWN0Q291bnQsIDApOworICAgICAgICAgICAgQVNTRVJU
X1RSVUUoIXAxLnVucG9pc29uZWQoKSk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDEuYml0
cygpKTsKKyAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwMi51bnBvaXNvbmVkKCkpOworCisgICAg
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAzID0gYjsKKyAgICAg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIExvZ2dlcj4gcDQoV1RGTW92ZShwMykp
OworICAgICAgICAgICAgQVNTRVJUX0VRKGJEZXN0cnVjdENvdW50LCAwKTsKKyAgICAgICAgICAg
IEFTU0VSVF9UUlVFKCFwMy51bnBvaXNvbmVkKCkpOworICAgICAgICAgICAgQVNTRVJUX1RSVUUo
IXAzLmJpdHMoKSk7CisgICAgICAgICAgICBBU1NFUlRfRVEoYiwgcDQudW5wb2lzb25lZCgpKTsK
KyAgICAgICAgfQorICAgICAgICBBU1NFUlRfRVEoMSwgYURlc3RydWN0Q291bnQpOworICAgICAg
ICBBU1NFUlRfRVEoMSwgYkRlc3RydWN0Q291bnQpOworICAgIH0KKworICAgIHsKKyAgICAgICAg
aW50IGFEZXN0cnVjdENvdW50ID0gMDsKKyAgICAgICAgTG9nZ2VyKiBhID0gbmV3IExvZ2dlcigi
YSIsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgeworICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwdHIoYSk7CisgICAgICAgICAgICBBU1NFUlRfRVEoYSwg
cHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgICAgICBwdHIuY2xlYXIoKTsKKyAgICAgICAgICAg
IEFTU0VSVF9UUlVFKCFwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVF
KCFwdHIuYml0cygpKTsKKyAgICAgICAgICAgIEFTU0VSVF9FUSgxLCBhRGVzdHJ1Y3RDb3VudCk7
CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUX0VRKDEsIGFEZXN0cnVjdENvdW50KTsKKyAgICB9
Cit9CisKK1RFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyLCBBc3NpZ25tZW50KQoreworICAgIHsK
KyAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKKyAgICAgICAgaW50IGJEZXN0cnVjdENv
dW50ID0gMDsKKyAgICAgICAgTG9nZ2VyKiBhID0gbmV3IExvZ2dlcigiYSIsIGFEZXN0cnVjdENv
dW50KTsKKyAgICAgICAgTG9nZ2VyKiBiID0gbmV3IExvZ2dlcigiYiIsIGJEZXN0cnVjdENvdW50
KTsKKyAgICAgICAgeworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9n
Z2VyPiBwdHIoYSk7CisgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwor
ICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGJEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIEFT
U0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgICAgIHB0ciA9IGI7CisgICAg
ICAgICAgICBBU1NFUlRfRVEoMSwgYURlc3RydWN0Q291bnQpOworICAgICAgICAgICAgQVNTRVJU
X0VRKDAsIGJEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIEFTU0VSVF9FUShiLCBwdHIudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlRfRVEoMSwgYURlc3RydWN0Q291
bnQpOworICAgICAgICBBU1NFUlRfRVEoMSwgYkRlc3RydWN0Q291bnQpOworICAgIH0KKworICAg
IHsKKyAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKKyAgICAgICAgTG9nZ2VyKiBhID0g
bmV3IExvZ2dlcigiYSIsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgeworICAgICAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwdHIoYSk7CisgICAgICAgICAgICBB
U1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOworICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHB0
ci51bnBvaXNvbmVkKCkpOworICAgICAgICAgICAgcHRyID0gbnVsbHB0cjsKKyAgICAgICAgICAg
IEFTU0VSVF9FUSgxLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBBU1NFUlRfRVEobnVs
bHB0ciwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUX0VRKDEs
IGFEZXN0cnVjdENvdW50KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGludCBhRGVzdHJ1Y3RD
b3VudCA9IDA7CisgICAgICAgIGludCBiRGVzdHJ1Y3RDb3VudCA9IDA7CisgICAgICAgIGludCBj
RGVzdHJ1Y3RDb3VudCA9IDA7CisgICAgICAgIGludCBkRGVzdHJ1Y3RDb3VudCA9IDA7CisgICAg
ICAgIExvZ2dlciogYSA9IG5ldyBMb2dnZXIoImEiLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAg
IExvZ2dlciogYiA9IG5ldyBMb2dnZXIoImIiLCBiRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgIExv
Z2dlciogYyA9IG5ldyBMb2dnZXIoImMiLCBjRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgIExvZ2dl
ciogZCA9IG5ldyBMb2dnZXIoImQiLCBkRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgIHsKKyAgICAg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDEoYSk7CisgICAgICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAyKGIpOworICAgICAgICAg
ICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIEFTU0VSVF9FUSgw
LCBiRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDEudW5wb2lzb25l
ZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9FUShiLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAg
ICAgICAgcDEgPSBXVEZNb3ZlKHAyKTsKKyAgICAgICAgICAgIEFTU0VSVF9FUSgxLCBhRGVzdHJ1
Y3RDb3VudCk7CisgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYkRlc3RydWN0Q291bnQpOworICAg
ICAgICAgICAgQVNTRVJUX0VRKGIsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgICAgICBBU1NF
UlRfRVEobnVsbHB0ciwgcDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMyhjKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPFBvaXNvbkIsIExvZ2dlcj4gcDQoZCk7CisgICAgICAgICAgICBBU1NFUlRfRVEoMCwg
Y0Rlc3RydWN0Q291bnQpOworICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGREZXN0cnVjdENvdW50
KTsKKyAgICAgICAgICAgIEFTU0VSVF9FUShjLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICAg
ICAgQVNTRVJUX0VRKGQsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgICAgICBwMyA9IFdURk1v
dmUocDQpOworICAgICAgICAgICAgQVNTRVJUX0VRKDEsIGNEZXN0cnVjdENvdW50KTsKKyAgICAg
ICAgICAgIEFTU0VSVF9FUSgwLCBkRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBBU1NFUlRf
RVEoZCwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBw
NC51bnBvaXNvbmVkKCkpOworICAgICAgICB9CisgICAgICAgIEFTU0VSVF9FUSgxLCBhRGVzdHJ1
Y3RDb3VudCk7CisgICAgICAgIEFTU0VSVF9FUSgxLCBiRGVzdHJ1Y3RDb3VudCk7CisgICAgICAg
IEFTU0VSVF9FUSgxLCBjRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgIEFTU0VSVF9FUSgxLCBkRGVz
dHJ1Y3RDb3VudCk7CisgICAgfQorCisgICAgeworICAgICAgICBpbnQgYURlc3RydWN0Q291bnQg
PSAwOworICAgICAgICBpbnQgYkRlc3RydWN0Q291bnQgPSAwOworICAgICAgICBEZXJpdmVkTG9n
Z2VyKiBhID0gbmV3IERlcml2ZWRMb2dnZXIoImEiLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAg
IERlcml2ZWRMb2dnZXIqIGIgPSBuZXcgRGVyaXZlZExvZ2dlcigiYiIsIGJEZXN0cnVjdENvdW50
KTsKKyAgICAgICAgeworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9n
Z2VyPiBwdHIoYSk7CisgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwor
ICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGJEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIEFT
U0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgICAgIHB0ciA9IGI7CisgICAg
ICAgICAgICBBU1NFUlRfRVEoMSwgYURlc3RydWN0Q291bnQpOworICAgICAgICAgICAgQVNTRVJU
X0VRKDAsIGJEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIEFTU0VSVF9FUShiLCBwdHIudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlRfRVEoMSwgYURlc3RydWN0Q291
bnQpOworICAgICAgICBBU1NFUlRfRVEoMSwgYkRlc3RydWN0Q291bnQpOworICAgIH0KKworICAg
IHsKKyAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKKyAgICAgICAgaW50IGJEZXN0cnVj
dENvdW50ID0gMDsKKyAgICAgICAgaW50IGNEZXN0cnVjdENvdW50ID0gMDsKKyAgICAgICAgaW50
IGREZXN0cnVjdENvdW50ID0gMDsKKyAgICAgICAgRGVyaXZlZExvZ2dlciogYSA9IG5ldyBEZXJp
dmVkTG9nZ2VyKCJhIiwgYURlc3RydWN0Q291bnQpOworICAgICAgICBEZXJpdmVkTG9nZ2VyKiBi
ID0gbmV3IERlcml2ZWRMb2dnZXIoImIiLCBiRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgIERlcml2
ZWRMb2dnZXIqIGMgPSBuZXcgRGVyaXZlZExvZ2dlcigiYyIsIGNEZXN0cnVjdENvdW50KTsKKyAg
ICAgICAgRGVyaXZlZExvZ2dlciogZCA9IG5ldyBEZXJpdmVkTG9nZ2VyKCJkIiwgZERlc3RydWN0
Q291bnQpOworICAgICAgICB7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25B
LCBMb2dnZXI+IHAxKGEpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwg
RGVyaXZlZExvZ2dlcj4gcDIoYik7CisgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0
Q291bnQpOworICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGJEZXN0cnVjdENvdW50KTsKKyAgICAg
ICAgICAgIEFTU0VSVF9FUShhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICAgICAgQVNTRVJU
X0VRKGIsIHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgICAgICBwMSA9IFdURk1vdmUocDIpOwor
ICAgICAgICAgICAgQVNTRVJUX0VRKDEsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIEFT
U0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBBU1NFUlRfRVEoYiwgcDEu
dW5wb2lzb25lZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwMi51bnBvaXNv
bmVkKCkpOworCisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+
IHAzKGMpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgRGVyaXZlZExv
Z2dlcj4gcDQoZCk7CisgICAgICAgICAgICBBU1NFUlRfRVEoMCwgY0Rlc3RydWN0Q291bnQpOwor
ICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGREZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIEFT
U0VSVF9FUShjLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICAgICAgQVNTRVJUX0VRKGQsIHA0
LnVucG9pc29uZWQoKSk7CisgICAgICAgICAgICBwMyA9IFdURk1vdmUocDQpOworICAgICAgICAg
ICAgQVNTRVJUX0VRKDEsIGNEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIEFTU0VSVF9FUSgw
LCBkRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBBU1NFUlRfRVEoZCwgcDMudW5wb2lzb25l
ZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwNC51bnBvaXNvbmVkKCkpOwor
ICAgICAgICB9CisgICAgICAgIEFTU0VSVF9FUSgxLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAg
IEFTU0VSVF9FUSgxLCBiRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgIEFTU0VSVF9FUSgxLCBjRGVz
dHJ1Y3RDb3VudCk7CisgICAgICAgIEFTU0VSVF9FUSgxLCBkRGVzdHJ1Y3RDb3VudCk7CisgICAg
fQorCisgICAgeworICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOworICAgICAgICBMb2dn
ZXIqIGEgPSBuZXcgTG9nZ2VyKCJhIiwgYURlc3RydWN0Q291bnQpOworICAgICAgICB7CisgICAg
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0cihhKTsKKyAgICAg
ICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBBU1NFUlRf
RVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgICAgICBwdHIgPSBhOworICAgICAgICAg
ICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIEFTU0VSVF9FUShh
LCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlRfRVEoMSwgYURl
c3RydWN0Q291bnQpOworICAgIH0KKworICAgIHsKKyAgICAgICAgaW50IGFEZXN0cnVjdENvdW50
ID0gMDsKKyAgICAgICAgTG9nZ2VyKiBhID0gbmV3IExvZ2dlcigiYSIsIGFEZXN0cnVjdENvdW50
KTsKKyAgICAgICAgeworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9n
Z2VyPiBwdHIoYSk7CisgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwor
ICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOworI2lmIENPTVBJTEVS
KENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBpZ25vcmVkICItV3Vua25vd24tcHJhZ21hcyIKKyNwcmFnbWEgY2xhbmcgZGlhZ25v
c3RpYyBpZ25vcmVkICItV3NlbGYtbW92ZSIKKyNlbmRpZgorICAgICAgICAgICAgcHRyID0gV1RG
TW92ZShwdHIpOworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGlj
IHBvcAorI2VuZGlmCisgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOwor
ICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICB9Cisg
ICAgICAgIEFTU0VSVF9FUSgxLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgfQorfQorCitURVNUKFdU
Rl9Qb2lzb25lZFVuaXF1ZVB0ciwgU3dhcCkKK3sKKyAgICB7CisgICAgICAgIGludCBhRGVzdHJ1
Y3RDb3VudCA9IDA7CisgICAgICAgIGludCBiRGVzdHJ1Y3RDb3VudCA9IDA7CisgICAgICAgIExv
Z2dlciogYSA9IG5ldyBMb2dnZXIoImEiLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgIExvZ2dl
ciogYiA9IG5ldyBMb2dnZXIoImIiLCBiRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgIHsKKyAgICAg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDEgPSBhOworICAgICAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMjsKKyAgICAgICAgICAg
IEFTU0VSVF9FUShhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICAgICAgQVNTRVJUX1RSVUUo
IXAyLmJpdHMoKSk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDIudW5wb2lzb25lZCgpKTsK
KyAgICAgICAgICAgIHAyLnN3YXAocDEpOworICAgICAgICAgICAgQVNTRVJUX0VRKGFEZXN0cnVj
dENvdW50LCAwKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMS5iaXRzKCkpOworICAgICAg
ICAgICAgQVNTRVJUX1RSVUUoIXAxLnVucG9pc29uZWQoKSk7CisgICAgICAgICAgICBBU1NFUlRf
RVEoYSwgcDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8
UG9pc29uQSwgTG9nZ2VyPiBwMyA9IGI7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQ
b2lzb25CLCBMb2dnZXI+IHA0OworICAgICAgICAgICAgQVNTRVJUX0VRKGIsIHAzLnVucG9pc29u
ZWQoKSk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDQuYml0cygpKTsKKyAgICAgICAgICAg
IEFTU0VSVF9UUlVFKCFwNC51bnBvaXNvbmVkKCkpOworICAgICAgICAgICAgcDQuc3dhcChwMyk7
CisgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYkRlc3RydWN0Q291bnQpOworICAgICAgICAgICAg
QVNTRVJUX1RSVUUoIXAzLmJpdHMoKSk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDMudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9FUShiLCBwNC51bnBvaXNvbmVkKCkpOwor
ICAgICAgICB9CisgICAgICAgIEFTU0VSVF9FUSgxLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAg
IEFTU0VSVF9FUSgxLCBiRGVzdHJ1Y3RDb3VudCk7CisgICAgfQorCisgICAgeworICAgICAgICBp
bnQgYURlc3RydWN0Q291bnQgPSAwOworICAgICAgICBpbnQgYkRlc3RydWN0Q291bnQgPSAwOwor
ICAgICAgICBMb2dnZXIqIGEgPSBuZXcgTG9nZ2VyKCJhIiwgYURlc3RydWN0Q291bnQpOworICAg
ICAgICBMb2dnZXIqIGIgPSBuZXcgTG9nZ2VyKCJiIiwgYkRlc3RydWN0Q291bnQpOworICAgICAg
ICB7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAxID0g
YTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDI7Cisg
ICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgICAgIEFT
U0VSVF9UUlVFKCFwMi5iaXRzKCkpOworICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAyLnVucG9p
c29uZWQoKSk7CisgICAgICAgICAgICBzd2FwKHAxLCBwMik7CisgICAgICAgICAgICBBU1NFUlRf
RVEoMCwgYURlc3RydWN0Q291bnQpOworICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAxLmJpdHMo
KSk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAg
ICAgIEFTU0VSVF9FUShhLCBwMi51bnBvaXNvbmVkKCkpOworCisgICAgICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAzID0gYjsKKyAgICAgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPFBvaXNvbkIsIExvZ2dlcj4gcDQ7CisgICAgICAgICAgICBBU1NFUlRfRVEoYiwg
cDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwNC5iaXRzKCkpOwor
ICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXA0LnVucG9pc29uZWQoKSk7CisgICAgICAgICAgICBz
d2FwKHAzLCBwNCk7CisgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYkRlc3RydWN0Q291bnQpOwor
ICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAzLmJpdHMoKSk7CisgICAgICAgICAgICBBU1NFUlRf
VFJVRSghcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9FUShiLCBwNC51bnBv
aXNvbmVkKCkpOworICAgICAgICB9CisgICAgICAgIEFTU0VSVF9FUSgxLCBhRGVzdHJ1Y3RDb3Vu
dCk7CisgICAgICAgIEFTU0VSVF9FUSgxLCBiRGVzdHJ1Y3RDb3VudCk7CisgICAgfQorfQorCitz
dGF0aWMgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwb2lzb25lZFB0ckZvbyhM
b2dnZXIqIGxvZ2dlcikKK3sKKyAgICByZXR1cm4gUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwg
TG9nZ2VyPihsb2dnZXIpOworfQorCitURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ciwgUmV0dXJu
VmFsdWUpCit7CisgICAgeworICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOworICAgICAg
ICBMb2dnZXIqIGEgPSBuZXcgTG9nZ2VyKCJhIiwgYURlc3RydWN0Q291bnQpOworICAgICAgICB7
CisgICAgICAgICAgICBhdXRvIHB0ciA9IHBvaXNvbmVkUHRyRm9vKGEpOworICAgICAgICAgICAg
QVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIEFTU0VSVF9FUShhLCBw
dHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9FUShhLCAmKnB0cik7CisgICAg
ICAgICAgICBBU1NFUlRfRVEoJmEtPm5hbWUsICZwdHItPm5hbWUpOworICAgICAgICB9CisgICAg
ICAgIEFTU0VSVF9FUSgxLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgfQorfQorCit9IC8vIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJCisKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFVuaXF1
ZVB0ckZvck5vblRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cy5jcHAJKG5vbmV4aXN0ZW50KQor
KysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRVbmlxdWVQdHJGb3JOb25U
cml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSA8d3RmL1BvaXNvbmVkVW5pcXVlUHRyLmg+CisK
K25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworbmFtZXNwYWNlIHsKKworY29uc3QgdWludDMy
X3QgUG9pc29uQSA9IDB4YWFhYTsKK2NvbnN0IHVpbnQzMl90IFBvaXNvbkIgPSAweGJiYmI7CisK
K3N0cnVjdCBMb2dnZXIgeworICAgIExvZ2dlcigpIHsgfQorICAgIExvZ2dlcihjb25zdCBjaGFy
KiBuYW1lLCBpbnQmIGRlc3RydWN0Q291bnQpCisgICAgICAgIDogbmFtZShuYW1lKQorICAgICAg
ICAsIGRlc3RydWN0Q291bnQoJmRlc3RydWN0Q291bnQpCisgICAgeyB9CisKKyAgICB+TG9nZ2Vy
KCkgeyAoKmRlc3RydWN0Q291bnQpKys7IH0KKworICAgIGNvbnN0IGNoYXIqIG5hbWU7CisgICAg
aW50KiBkZXN0cnVjdENvdW50OworfTsKKyAgICAKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lLi4uIEFyZ3VtZW50cz4KK1QqIG1ha2VBcnJheShzaXplX3QgY291bnQsIEFyZ3VtZW50cyYm
Li4uIGFyZ3VtZW50cykKK3sKKyAgICBUKiByZXN1bHQgPSBuZXcgVFtjb3VudF07CisgICAgd2hp
bGUgKGNvdW50LS0pCisgICAgICAgIG5ldyAocmVzdWx0ICsgY291bnQpIFQoc3RkOjpmb3J3YXJk
PEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3Rh
dGljIGNvbnN0IGludCBhcnJheVNpemUgPSAyOworCit9IC8vIGFub255bW91cyBuYW1lc3BhY2UK
KworVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbHlEZXN0cnVjdGlibGVB
cnJheXMsIEJhc2ljKQoreworICAgIHsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29u
QSwgTG9nZ2VyW10+IGVtcHR5OworICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgZW1wdHkudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKDB1LCBlbXB0eS5iaXRzKCkpOworICAgIH0K
KworICAgIHsKKyAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKKyAgICAgICAgTG9nZ2Vy
KiBhID0gbWFrZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiYSIsIGFEZXN0cnVjdENvdW50KTsK
KyAgICAgICAgeworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2Vy
W10+IHB0cihhKTsKKyAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7Cisg
ICAgICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgICAgICBB
U1NFUlRfRVEoYSwgJipwdHIpOworICAgICAgICAgICAgZm9yIChhdXRvIGkgPSAwOyBpIDwgYXJy
YXlTaXplOyArK2kpCisgICAgICAgICAgICAgICAgQVNTRVJUX0VRKGFbaV0ubmFtZSwgcHRyW2ld
Lm5hbWUpOworCisjaWYgRU5BQkxFKFBPSVNPTikKKyAgICAgICAgICAgIHVpbnRwdHJfdCBwdHJC
aXRzOworICAgICAgICAgICAgc3RkOjptZW1jcHkoJnB0ckJpdHMsICZwdHIsIHNpemVvZihwdHJC
aXRzKSk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRShwdHJCaXRzICE9IGJpdHdpc2VfY2FzdDx1
aW50cHRyX3Q+KGEpKTsKKyNpZiBFTkFCTEUoUE9JU09OX0FTU0VSVFMpCisgICAgICAgICAgICBB
U1NFUlRfVFJVRSgoUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+Ojppc1BvaXNv
bmVkKHB0ckJpdHMpKSk7CisjZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoUE9JU09OKQorICAgICAg
ICB9CisgICAgICAgIEFTU0VSVF9FUShhcnJheVNpemUsIGFEZXN0cnVjdENvdW50KTsKKyAgICB9
CisKKyAgICB7CisgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CisgICAgICAgIExvZ2dl
ciogYSA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RDb3VudCk7
CisgICAgICAgIHsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dl
cltdPiBwdHIgPSBhOworICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsK
KyAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgICAg
IGZvciAoYXV0byBpID0gMDsgaSA8IGFycmF5U2l6ZTsgKytpKQorICAgICAgICAgICAgICAgIEFT
U0VSVF9FUShhW2ldLm5hbWUsIHB0cltpXS5uYW1lKTsKKyAgICAgICAgfQorICAgICAgICBBU1NF
UlRfRVEoYXJyYXlTaXplLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgfQorCisgICAgeworICAgICAg
ICBpbnQgYURlc3RydWN0Q291bnQgPSAwOworICAgICAgICBjb25zdCBjaGFyKiBhTmFtZSA9ICJh
IjsKKyAgICAgICAgeworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9n
Z2VyW10+IHB0ciA9IFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPjo6Y3JlYXRl
KGFycmF5U2l6ZSwgYU5hbWUsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIEFTU0VSVF9F
USgwLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRShudWxscHRyICE9
IHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICAgICAgZm9yIChhdXRvIGkgPSAwOyBpIDwgYXJy
YXlTaXplOyArK2kpCisgICAgICAgICAgICAgICAgQVNTRVJUX0VRKGFOYW1lLCBwdHJbaV0ubmFt
ZSk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUX0VRKGFycmF5U2l6ZSwgYURlc3RydWN0Q291
bnQpOworICAgIH0KKworICAgIHsKKyAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKKyAg
ICAgICAgY29uc3QgY2hhciogYU5hbWUgPSAiYSI7CisgICAgICAgIHsKKyAgICAgICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwdHIgPSBtYWtlUG9pc29uZWRVbmlx
dWU8UG9pc29uQSwgTG9nZ2VyW10+KGFycmF5U2l6ZSwgYU5hbWUsIGFEZXN0cnVjdENvdW50KTsK
KyAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBB
U1NFUlRfVFJVRShudWxscHRyICE9IHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICAgICAgZm9y
IChhdXRvIGkgPSAwOyBpIDwgYXJyYXlTaXplOyArK2kpCisgICAgICAgICAgICAgICAgQVNTRVJU
X0VRKGFOYW1lLCBwdHJbaV0ubmFtZSk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUX0VRKGFy
cmF5U2l6ZSwgYURlc3RydWN0Q291bnQpOworICAgIH0KKworICAgIHsKKyAgICAgICAgaW50IGFE
ZXN0cnVjdENvdW50ID0gMDsKKyAgICAgICAgY29uc3QgY2hhciogYU5hbWUgPSAiYSI7CisgICAg
ICAgIHsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBw
dHIgPSBtYWtlUG9pc29uZWRVbmlxdWU8UG9pc29uQSwgTG9nZ2VyW10+KGFycmF5U2l6ZSwgYU5h
bWUsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RD
b3VudCk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRShudWxscHRyICE9IHB0ci51bnBvaXNvbmVk
KCkpOworICAgICAgICAgICAgZm9yIChhdXRvIGkgPSAwOyBpIDwgYXJyYXlTaXplOyArK2kpCisg
ICAgICAgICAgICAgICAgQVNTRVJUX0VRKGFOYW1lLCBwdHJbaV0ubmFtZSk7CisgICAgICAgIH0K
KyAgICAgICAgQVNTRVJUX0VRKGFycmF5U2l6ZSwgYURlc3RydWN0Q291bnQpOworICAgIH0KKwor
ICAgIHsKKyAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKKyAgICAgICAgaW50IGJEZXN0
cnVjdENvdW50ID0gMDsKKyAgICAgICAgTG9nZ2VyKiBhID0gbWFrZUFycmF5PExvZ2dlcj4oYXJy
YXlTaXplLCAiYSIsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgTG9nZ2VyKiBiID0gbWFrZUFy
cmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiYiIsIGJEZXN0cnVjdENvdW50KTsKKyAgICAgICAgewor
ICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAxID0gYTsK
KyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMiA9IFdU
Rk1vdmUocDEpOworICAgICAgICAgICAgQVNTRVJUX0VRKGFEZXN0cnVjdENvdW50LCAwKTsKKyAg
ICAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICAg
ICAgQVNTRVJUX0VRKDB1LCBwMS5iaXRzKCkpOworICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAy
LnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEs
IExvZ2dlcltdPiBwMyA9IGI7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25C
LCBMb2dnZXJbXT4gcDQgPSBXVEZNb3ZlKHAzKTsKKyAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBi
RGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDMudW5wb2lz
b25lZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9FUSgwdSwgcDMuYml0cygpKTsKKyAgICAgICAg
ICAgIEFTU0VSVF9FUShiLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAgICB9CisgICAgICAgIEFT
U0VSVF9FUShhcnJheVNpemUsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgQVNTRVJUX0VRKGFy
cmF5U2l6ZSwgYkRlc3RydWN0Q291bnQpOworICAgIH0KKworICAgIHsKKyAgICAgICAgaW50IGFE
ZXN0cnVjdENvdW50ID0gMDsKKyAgICAgICAgaW50IGJEZXN0cnVjdENvdW50ID0gMDsKKyAgICAg
ICAgTG9nZ2VyKiBhID0gbWFrZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiYSIsIGFEZXN0cnVj
dENvdW50KTsKKyAgICAgICAgTG9nZ2VyKiBiID0gbWFrZUFycmF5PExvZ2dlcj4oYXJyYXlTaXpl
LCAiYiIsIGJEZXN0cnVjdENvdW50KTsKKyAgICAgICAgeworICAgICAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAxID0gYTsKKyAgICAgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMihXVEZNb3ZlKHAxKSk7CisgICAgICAgICAg
ICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOworICAgICAgICAgICAgQVNTRVJUX0VRKG51
bGxwdHIsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgICAgICBBU1NFUlRfRVEoMHUsIHAxLmJp
dHMoKSk7CisgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDIudW5wb2lzb25lZCgpKTsKKworICAg
ICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAzID0gYjsKKyAg
ICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIExvZ2dlcltdPiBwNChXVEZNb3Zl
KHAzKSk7CisgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYkRlc3RydWN0Q291bnQpOworICAgICAg
ICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgICAgICBB
U1NFUlRfRVEoMHUsIHAzLmJpdHMoKSk7CisgICAgICAgICAgICBBU1NFUlRfRVEoYiwgcDQudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlRfRVEoYXJyYXlTaXplLCBhRGVz
dHJ1Y3RDb3VudCk7CisgICAgICAgIEFTU0VSVF9FUShhcnJheVNpemUsIGJEZXN0cnVjdENvdW50
KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CisgICAg
ICAgIGludCBiRGVzdHJ1Y3RDb3VudCA9IDA7CisgICAgICAgIExvZ2dlciogYSA9IG1ha2VBcnJh
eTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgIExvZ2dl
ciogYiA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImIiLCBiRGVzdHJ1Y3RDb3VudCk7
CisgICAgICAgIHsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dl
cltdPiBwMSA9IGE7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dn
ZXJbXT4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgICAgIEFTU0VSVF9FUShhRGVzdHJ1Y3RD
b3VudCwgMCk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDEudW5wb2lzb25lZCgpKTsKKyAg
ICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMS5iaXRzKCkpOworICAgICAgICAgICAgQVNTRVJUX0VR
KGEsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBv
aXNvbkEsIExvZ2dlcltdPiBwMyA9IGI7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQ
b2lzb25CLCBMb2dnZXJbXT4gcDQgPSBXVEZNb3ZlKHAzKTsKKyAgICAgICAgICAgIEFTU0VSVF9F
UShiRGVzdHJ1Y3RDb3VudCwgMCk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDMudW5wb2lz
b25lZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMy5iaXRzKCkpOworICAgICAgICAg
ICAgQVNTRVJUX0VRKGIsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIH0KKyAgICAgICAgQVNT
RVJUX0VRKGFycmF5U2l6ZSwgYURlc3RydWN0Q291bnQpOworICAgICAgICBBU1NFUlRfRVEoYXJy
YXlTaXplLCBiRGVzdHJ1Y3RDb3VudCk7CisgICAgfQorCisgICAgeworICAgICAgICBpbnQgYURl
c3RydWN0Q291bnQgPSAwOworICAgICAgICBpbnQgYkRlc3RydWN0Q291bnQgPSAwOworICAgICAg
ICBMb2dnZXIqIGEgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJhIiwgYURlc3RydWN0
Q291bnQpOworICAgICAgICBMb2dnZXIqIGIgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUs
ICJiIiwgYkRlc3RydWN0Q291bnQpOworICAgICAgICB7CisgICAgICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDEgPSBhOworICAgICAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAyKFdURk1vdmUocDEpKTsKKyAgICAgICAgICAg
IEFTU0VSVF9FUShhRGVzdHJ1Y3RDb3VudCwgMCk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRSgh
cDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMS5iaXRzKCkpOwor
ICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMyA9IGI7CisgICAgICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25CLCBMb2dnZXJbXT4gcDQoV1RGTW92ZShwMykpOwor
ICAgICAgICAgICAgQVNTRVJUX0VRKGJEZXN0cnVjdENvdW50LCAwKTsKKyAgICAgICAgICAgIEFT
U0VSVF9UUlVFKCFwMy51bnBvaXNvbmVkKCkpOworICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAz
LmJpdHMoKSk7CisgICAgICAgICAgICBBU1NFUlRfRVEoYiwgcDQudW5wb2lzb25lZCgpKTsKKyAg
ICAgICAgfQorICAgICAgICBBU1NFUlRfRVEoYXJyYXlTaXplLCBhRGVzdHJ1Y3RDb3VudCk7Cisg
ICAgICAgIEFTU0VSVF9FUShhcnJheVNpemUsIGJEZXN0cnVjdENvdW50KTsKKyAgICB9CisKKyAg
ICB7CisgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CisgICAgICAgIExvZ2dlciogYSA9
IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAg
ICAgIHsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBw
dHIoYSk7CisgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAg
ICAgICAgICBwdHIuY2xlYXIoKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwdHIudW5wb2lz
b25lZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwdHIuYml0cygpKTsKKyAgICAgICAg
ICAgIEFTU0VSVF9FUShhcnJheVNpemUsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgfQorICAg
ICAgICBBU1NFUlRfRVEoYXJyYXlTaXplLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgfQorfQorCitU
RVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5
cywgQXNzaWdubWVudCkKK3sKKyAgICB7CisgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7
CisgICAgICAgIGludCBiRGVzdHJ1Y3RDb3VudCA9IDA7CisgICAgICAgIExvZ2dlciogYSA9IG1h
a2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAg
IExvZ2dlciogYiA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImIiLCBiRGVzdHJ1Y3RD
b3VudCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEs
IExvZ2dlcltdPiBwdHIoYSk7CisgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291
bnQpOworICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGJEZXN0cnVjdENvdW50KTsKKyAgICAgICAg
ICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgICAgIHB0ciA9IGI7
CisgICAgICAgICAgICBBU1NFUlRfRVEoYXJyYXlTaXplLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAg
ICAgICAgICBBU1NFUlRfRVEoMCwgYkRlc3RydWN0Q291bnQpOworICAgICAgICAgICAgQVNTRVJU
X0VRKGIsIHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICB9CisgICAgICAgIEFTU0VSVF9FUShh
cnJheVNpemUsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgQVNTRVJUX0VRKGFycmF5U2l6ZSwg
YkRlc3RydWN0Q291bnQpOworICAgIH0KKworICAgIHsKKyAgICAgICAgaW50IGFEZXN0cnVjdENv
dW50ID0gMDsKKyAgICAgICAgTG9nZ2VyKiBhID0gbWFrZUFycmF5PExvZ2dlcj4oYXJyYXlTaXpl
LCAiYSIsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgeworICAgICAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHB0cihhKTsKKyAgICAgICAgICAgIEFTU0VSVF9F
USgwLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9p
c29uZWQoKSk7CisgICAgICAgICAgICBwdHIgPSBudWxscHRyOworICAgICAgICAgICAgQVNTRVJU
X0VRKGFycmF5U2l6ZSwgYURlc3RydWN0Q291bnQpOworICAgICAgICAgICAgQVNTRVJUX0VRKG51
bGxwdHIsIHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICB9CisgICAgICAgIEFTU0VSVF9FUShh
cnJheVNpemUsIGFEZXN0cnVjdENvdW50KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGludCBh
RGVzdHJ1Y3RDb3VudCA9IDA7CisgICAgICAgIGludCBiRGVzdHJ1Y3RDb3VudCA9IDA7CisgICAg
ICAgIGludCBjRGVzdHJ1Y3RDb3VudCA9IDA7CisgICAgICAgIGludCBkRGVzdHJ1Y3RDb3VudCA9
IDA7CisgICAgICAgIExvZ2dlciogYSA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImEi
LCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgIExvZ2dlciogYiA9IG1ha2VBcnJheTxMb2dnZXI+
KGFycmF5U2l6ZSwgImIiLCBiRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgIExvZ2dlciogYyA9IG1h
a2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImMiLCBjRGVzdHJ1Y3RDb3VudCk7CisgICAgICAg
IExvZ2dlciogZCA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImQiLCBkRGVzdHJ1Y3RD
b3VudCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEs
IExvZ2dlcltdPiBwMShhKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEs
IExvZ2dlcltdPiBwMihiKTsKKyAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3Vu
dCk7CisgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYkRlc3RydWN0Q291bnQpOworICAgICAgICAg
ICAgQVNTRVJUX0VRKGEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgICAgICBBU1NFUlRfRVEo
YiwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgICAgIHAxID0gV1RGTW92ZShwMik7CisgICAg
ICAgICAgICBBU1NFUlRfRVEoYXJyYXlTaXplLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAg
ICBBU1NFUlRfRVEoMCwgYkRlc3RydWN0Q291bnQpOworICAgICAgICAgICAgQVNTRVJUX0VRKGIs
IHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDIudW5w
b2lzb25lZCgpKTsKKworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9n
Z2VyW10+IHAzKGMpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgTG9n
Z2VyW10+IHA0KGQpOworICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGNEZXN0cnVjdENvdW50KTsK
KyAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBkRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBB
U1NFUlRfRVEoYywgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9FUShkLCBw
NC51bnBvaXNvbmVkKCkpOworICAgICAgICAgICAgcDMgPSBXVEZNb3ZlKHA0KTsKKyAgICAgICAg
ICAgIEFTU0VSVF9FUShhcnJheVNpemUsIGNEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIEFT
U0VSVF9FUSgwLCBkRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBBU1NFUlRfRVEoZCwgcDMu
dW5wb2lzb25lZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwNC51bnBvaXNv
bmVkKCkpOworICAgICAgICB9CisgICAgICAgIEFTU0VSVF9FUShhcnJheVNpemUsIGFEZXN0cnVj
dENvdW50KTsKKyAgICAgICAgQVNTRVJUX0VRKGFycmF5U2l6ZSwgYkRlc3RydWN0Q291bnQpOwor
ICAgICAgICBBU1NFUlRfRVEoYXJyYXlTaXplLCBjRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgIEFT
U0VSVF9FUShhcnJheVNpemUsIGREZXN0cnVjdENvdW50KTsKKyAgICB9CisKKyAgICB7CisgICAg
ICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CisgICAgICAgIExvZ2dlciogYSA9IG1ha2VBcnJh
eTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgIHsKKyAg
ICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwdHIoYSk7Cisg
ICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOworICAgICAgICAgICAgQVNT
RVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICAgICAgcHRyID0gYTsKKyAgICAg
ICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBBU1NFUlRf
RVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUX0VRKGFy
cmF5U2l6ZSwgYURlc3RydWN0Q291bnQpOworICAgIH0KKworICAgIHsKKyAgICAgICAgaW50IGFE
ZXN0cnVjdENvdW50ID0gMDsKKyAgICAgICAgTG9nZ2VyKiBhID0gbWFrZUFycmF5PExvZ2dlcj4o
YXJyYXlTaXplLCAiYSIsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgeworICAgICAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHB0cihhKTsKKyAgICAgICAgICAg
IEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBBU1NFUlRfRVEoYSwg
cHRyLnVucG9pc29uZWQoKSk7CisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRp
YWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW5rbm93
bi1wcmFnbWFzIgorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1Xc2VsZi1tb3Zl
IgorI2VuZGlmCisgICAgICAgICAgICBwdHIgPSBXVEZNb3ZlKHB0cik7CisjaWYgQ09NUElMRVIo
Q0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisjZW5kaWYKKyAgICAgICAgICAg
IEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBBU1NFUlRfRVEoYSwg
cHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUX0VRKGFycmF5U2l6
ZSwgYURlc3RydWN0Q291bnQpOworICAgIH0KK30KKworVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQ
dHJGb3JOb25Ucml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMsIFN3YXApCit7CisgICAgeworICAg
ICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOworICAgICAgICBpbnQgYkRlc3RydWN0Q291bnQg
PSAwOworICAgICAgICBMb2dnZXIqIGEgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJh
IiwgYURlc3RydWN0Q291bnQpOworICAgICAgICBMb2dnZXIqIGIgPSBtYWtlQXJyYXk8TG9nZ2Vy
PihhcnJheVNpemUsICJiIiwgYkRlc3RydWN0Q291bnQpOworICAgICAgICB7CisgICAgICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDEgPSBhOworICAgICAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAyOworICAgICAgICAgICAg
QVNTRVJUX0VRKGEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRSgh
cDIuYml0cygpKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMi51bnBvaXNvbmVkKCkpOwor
ICAgICAgICAgICAgcDIuc3dhcChwMSk7CisgICAgICAgICAgICBBU1NFUlRfRVEoYURlc3RydWN0
Q291bnQsIDApOworICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAxLmJpdHMoKSk7CisgICAgICAg
ICAgICBBU1NFUlRfVFJVRSghcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9F
UShhLCBwMi51bnBvaXNvbmVkKCkpOworCisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQ
b2lzb25BLCBMb2dnZXJbXT4gcDMgPSBiOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8
UG9pc29uQiwgTG9nZ2VyW10+IHA0OworICAgICAgICAgICAgQVNTRVJUX0VRKGIsIHAzLnVucG9p
c29uZWQoKSk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDQuYml0cygpKTsKKyAgICAgICAg
ICAgIEFTU0VSVF9UUlVFKCFwNC51bnBvaXNvbmVkKCkpOworICAgICAgICAgICAgcDQuc3dhcChw
Myk7CisgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYkRlc3RydWN0Q291bnQpOworICAgICAgICAg
ICAgQVNTRVJUX1RSVUUoIXAzLmJpdHMoKSk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDMu
dW5wb2lzb25lZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9FUShiLCBwNC51bnBvaXNvbmVkKCkp
OworICAgICAgICB9CisgICAgICAgIEFTU0VSVF9FUShhcnJheVNpemUsIGFEZXN0cnVjdENvdW50
KTsKKyAgICAgICAgQVNTRVJUX0VRKGFycmF5U2l6ZSwgYkRlc3RydWN0Q291bnQpOworICAgIH0K
KworICAgIHsKKyAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKKyAgICAgICAgaW50IGJE
ZXN0cnVjdENvdW50ID0gMDsKKyAgICAgICAgTG9nZ2VyKiBhID0gbWFrZUFycmF5PExvZ2dlcj4o
YXJyYXlTaXplLCAiYSIsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgTG9nZ2VyKiBiID0gbWFr
ZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiYiIsIGJEZXN0cnVjdENvdW50KTsKKyAgICAgICAg
eworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAxID0g
YTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMjsK
KyAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICAgICAg
QVNTRVJUX1RSVUUoIXAyLmJpdHMoKSk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDIudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgICAgIHN3YXAocDEsIHAyKTsKKyAgICAgICAgICAgIEFTU0VS
VF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDEuYml0
cygpKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMS51bnBvaXNvbmVkKCkpOworICAgICAg
ICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMyA9IGI7CisgICAgICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxQb2lzb25CLCBMb2dnZXJbXT4gcDQ7CisgICAgICAgICAgICBBU1NFUlRf
RVEoYiwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwNC5iaXRz
KCkpOworICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXA0LnVucG9pc29uZWQoKSk7CisgICAgICAg
ICAgICBzd2FwKHAzLCBwNCk7CisgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYkRlc3RydWN0Q291
bnQpOworICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAzLmJpdHMoKSk7CisgICAgICAgICAgICBB
U1NFUlRfVFJVRSghcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9FUShiLCBw
NC51bnBvaXNvbmVkKCkpOworICAgICAgICB9CisgICAgICAgIEFTU0VSVF9FUShhcnJheVNpemUs
IGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgQVNTRVJUX0VRKGFycmF5U2l6ZSwgYkRlc3RydWN0
Q291bnQpOworICAgIH0KK30KKworc3RhdGljIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExv
Z2dlcltdPiBwb2lzb25lZFB0ckZvbyhMb2dnZXIqIGFycmF5KQoreworICAgIHJldHVybiBQb2lz
b25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4oYXJyYXkpOworfQorCitURVNUKFdURl9Q
b2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cywgUmV0dXJu
VmFsdWUpCit7CisgICAgeworICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOworICAgICAg
ICBMb2dnZXIqIGEgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJhIiwgYURlc3RydWN0
Q291bnQpOworICAgICAgICB7CisgICAgICAgICAgICBhdXRvIHB0ciA9IHBvaXNvbmVkUHRyRm9v
KGEpOworICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAg
ICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9F
UShhLCAmKnB0cik7CisgICAgICAgICAgICBmb3IgKGF1dG8gaSA9IDA7IGkgPCBhcnJheVNpemU7
ICsraSkKKyAgICAgICAgICAgICAgICBBU1NFUlRfRVEoYVtpXS5uYW1lLCBwdHJbaV0ubmFtZSk7
CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUX0VRKGFycmF5U2l6ZSwgYURlc3RydWN0Q291bnQp
OworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCkluZGV4OiBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURl
c3RydWN0aWJsZUFycmF5cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMu
Y3BwCShub25leGlzdGVudCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNv
bmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDMxMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgPHd0Zi9GYXN0TWFs
bG9jLmg+CisjaW5jbHVkZSA8d3RmL1BvaXNvbmVkVW5pcXVlUHRyLmg+CisKK25hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKKworbmFtZXNwYWNlIHsKKworY29uc3QgdWludDMyX3QgUG9pc29uQSA9
IDB4YWFhYTsKK2NvbnN0IHVpbnQzMl90IFBvaXNvbkIgPSAweGJiYmI7CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+CitzdGF0aWMgdm9pZCBmaWxsQXJyYXkoVCYgYXJyYXksIGludCBzaXplKQorewor
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBhcnJheVtpXSA9IGkg
KyAxMDA7Cit9CisKK3N0YXRpYyBjb25zdCBpbnQgYXJyYXlTaXplID0gNTsKKworfSAvLyBhbm9u
eW1vdXMgbmFtZXNwYWNlCisKK1RFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5
RGVzdHJ1Y3RpYmxlQXJyYXlzLCBCYXNpYykKK3sKKyAgICB7CisgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPFBvaXNvbkEsIGludFtdPiBlbXB0eTsKKyAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIs
IGVtcHR5LnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgwdSwgZW1wdHkuYml0cygp
KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGF1dG8qIGEgPSBuZXcgaW50W2FycmF5U2l6ZV07
CisgICAgICAgIGZpbGxBcnJheShhLCBhcnJheVNpemUpOworICAgICAgICB7CisgICAgICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcHRyKGEpOworICAgICAgICAgICAg
QVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICAgICAgQVNTRVJUX0VRKGEs
ICYqcHRyKTsKKyAgICAgICAgICAgIGZvciAoYXV0byBpID0gMDsgaSA8IGFycmF5U2l6ZTsgKytp
KQorICAgICAgICAgICAgICAgIEFTU0VSVF9FUShhW2ldLCBwdHJbaV0pOworCisjaWYgRU5BQkxF
KFBPSVNPTikKKyAgICAgICAgICAgIHVpbnRwdHJfdCBwdHJCaXRzOworICAgICAgICAgICAgc3Rk
OjptZW1jcHkoJnB0ckJpdHMsICZwdHIsIHNpemVvZihwdHJCaXRzKSk7CisgICAgICAgICAgICBB
U1NFUlRfVFJVRShwdHJCaXRzICE9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGEpKTsKKyNpZiBF
TkFCTEUoUE9JU09OX0FTU0VSVFMpCisgICAgICAgICAgICBBU1NFUlRfVFJVRSgoUG9pc29uZWRV
bmlxdWVQdHI8UG9pc29uQSwgaW50W10+Ojppc1BvaXNvbmVkKHB0ckJpdHMpKSk7CisjZW5kaWYK
KyNlbmRpZiAvLyBFTkFCTEUoUE9JU09OKQorICAgICAgICB9CisgICAgfQorCisgICAgeworICAg
ICAgICBhdXRvKiBhID0gbmV3IGludFthcnJheVNpemVdOworICAgICAgICBmaWxsQXJyYXkoYSwg
YXJyYXlTaXplKTsKKworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4g
cHRyID0gYTsKKyAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgICAg
ICBBU1NFUlRfRVEoYSwgJipwdHIpOworICAgICAgICBmb3IgKGF1dG8gaSA9IDA7IGkgPCBhcnJh
eVNpemU7ICsraSkKKyAgICAgICAgICAgIEFTU0VSVF9FUShhW2ldLCBwdHJbaV0pOworICAgIH0K
KworICAgIHsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHB0ciA9
IFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPjo6Y3JlYXRlKGFycmF5U2l6ZSk7Cisg
ICAgICAgIEFTU0VSVF9UUlVFKG51bGxwdHIgIT0gcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAg
IGZpbGxBcnJheShwdHIsIGFycmF5U2l6ZSk7CisgICAgICAgIGZvciAoYXV0byBpID0gMDsgaSA8
IGFycmF5U2l6ZTsgKytpKQorICAgICAgICAgICAgQVNTRVJUX0VRKCgxMDAgKyBpKSwgcHRyW2ld
KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGF1dG8qIGEgPSBuZXcgaW50W2FycmF5U2l6ZV07
CisgICAgICAgIGZpbGxBcnJheShhLCBhcnJheVNpemUpOworICAgICAgICBhdXRvKiBiID0gbmV3
IGludFthcnJheVNpemVdOworICAgICAgICBmaWxsQXJyYXkoYiwgYXJyYXlTaXplKTsKKworICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDEgPSBhOworICAgICAgICBQ
b2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAg
ICAgQVNTRVJUX0VRKG51bGxwdHIsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9F
USgwdSwgcDEuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29uZWQoKSk7
CisgICAgICAgIGZvciAoYXV0byBpID0gMDsgaSA8IGFycmF5U2l6ZTsgKytpKQorICAgICAgICAg
ICAgQVNTRVJUX0VRKGFbaV0sIHAyW2ldKTsKKworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQ
b2lzb25BLCBpbnRbXT4gcDMgPSBiOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25C
LCBpbnRbXT4gcDQgPSBXVEZNb3ZlKHAzKTsKKyAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAz
LnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgwdSwgcDMuYml0cygpKTsKKyAgICAg
ICAgQVNTRVJUX0VRKGIsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIGZvciAoYXV0byBpID0g
MDsgaSA8IGFycmF5U2l6ZTsgKytpKQorICAgICAgICAgICAgQVNTRVJUX0VRKGJbaV0sIHA0W2ld
KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGF1dG8qIGEgPSBuZXcgaW50W2FycmF5U2l6ZV07
CisgICAgICAgIGZpbGxBcnJheShhLCBhcnJheVNpemUpOworICAgICAgICBhdXRvKiBiID0gbmV3
IGludFthcnJheVNpemVdOworICAgICAgICBmaWxsQXJyYXkoYiwgYXJyYXlTaXplKTsKKworICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDEgPSBhOworICAgICAgICBQ
b2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDIoV1RGTW92ZShwMSkpOworICAgICAg
ICBBU1NFUlRfRVEobnVsbHB0ciwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VR
KDB1LCBwMS5iaXRzKCkpOworICAgICAgICBBU1NFUlRfRVEoYSwgcDIudW5wb2lzb25lZCgpKTsK
KyAgICAgICAgZm9yIChhdXRvIGkgPSAwOyBpIDwgYXJyYXlTaXplOyArK2kpCisgICAgICAgICAg
ICBBU1NFUlRfRVEoYVtpXSwgcDJbaV0pOworCisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBv
aXNvbkEsIGludFtdPiBwMyA9IGI7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIs
IGludFtdPiBwNChXVEZNb3ZlKHAzKSk7CisgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwMy51
bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoMHUsIHAzLmJpdHMoKSk7CisgICAgICAg
IEFTU0VSVF9FUShiLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAgICBmb3IgKGF1dG8gaSA9IDA7
IGkgPCBhcnJheVNpemU7ICsraSkKKyAgICAgICAgICAgIEFTU0VSVF9FUShiW2ldLCBwNFtpXSk7
CisgICAgfQorCisgICAgeworICAgICAgICBhdXRvKiBhID0gbmV3IGludFthcnJheVNpemVdOwor
ICAgICAgICBmaWxsQXJyYXkoYSwgYXJyYXlTaXplKTsKKworICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxQb2lzb25BLCBpbnRbXT4gcHRyKGEpOworICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVu
cG9pc29uZWQoKSk7CisgICAgICAgIHB0ci5jbGVhcigpOworICAgICAgICBBU1NFUlRfVFJVRSgh
cHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKCFwdHIuYml0cygpKTsKKyAg
ICB9Cit9CisKK1RFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGVzdHJ1Y3Rp
YmxlQXJyYXlzLCBBc3NpZ25tZW50KQoreworICAgIHsKKyAgICAgICAgYXV0byogYSA9IG5ldyBp
bnRbYXJyYXlTaXplXTsKKyAgICAgICAgYXV0byogYiA9IG5ldyBpbnRbYXJyYXlTaXplXTsKKyAg
ICAgICAgZmlsbEFycmF5KGEsIGFycmF5U2l6ZSk7CisgICAgICAgIGZpbGxBcnJheShiLCBhcnJh
eVNpemUpOworCisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwdHIo
YSk7CisgICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcHRy
ID0gYjsKKyAgICAgICAgQVNTRVJUX0VRKGIsIHB0ci51bnBvaXNvbmVkKCkpOworICAgIH0KKwor
ICAgIHsKKyAgICAgICAgYXV0byogYSA9IG5ldyBpbnRbYXJyYXlTaXplXTsKKyAgICAgICAgZmls
bEFycmF5KGEsIGFycmF5U2l6ZSk7CisKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29u
QSwgaW50W10+IHB0cihhKTsKKyAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkp
OworICAgICAgICBwdHIgPSBudWxscHRyOworICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcHRy
LnVucG9pc29uZWQoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBhdXRvKiBhID0gbmV3IGlu
dFthcnJheVNpemVdOworICAgICAgICBhdXRvKiBiID0gbmV3IGludFthcnJheVNpemVdOworICAg
ICAgICBhdXRvKiBjID0gbmV3IGludFthcnJheVNpemVdOworICAgICAgICBhdXRvKiBkID0gbmV3
IGludFthcnJheVNpemVdOworICAgICAgICBmaWxsQXJyYXkoYSwgYXJyYXlTaXplKTsKKyAgICAg
ICAgZmlsbEFycmF5KGIsIGFycmF5U2l6ZSk7CisgICAgICAgIGZpbGxBcnJheShjLCBhcnJheVNp
emUpOworICAgICAgICBmaWxsQXJyYXkoZCwgYXJyYXlTaXplKTsKKworICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDEoYSk7CisgICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPFBvaXNvbkEsIGludFtdPiBwMihiKTsKKyAgICAgICAgQVNTRVJUX0VRKGEsIHAxLnVucG9p
c29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUShiLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAg
ICBwMSA9IFdURk1vdmUocDIpOworICAgICAgICBBU1NFUlRfRVEoYiwgcDEudW5wb2lzb25lZCgp
KTsKKyAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAzKGMpOworICAgICAgICBQb2lz
b25lZFVuaXF1ZVB0cjxQb2lzb25CLCBpbnRbXT4gcDQoZCk7CisgICAgICAgIEFTU0VSVF9FUShj
LCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoZCwgcDQudW5wb2lzb25lZCgp
KTsKKyAgICAgICAgcDMgPSBXVEZNb3ZlKHA0KTsKKyAgICAgICAgQVNTRVJUX0VRKGQsIHAzLnVu
cG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwNC51bnBvaXNvbmVkKCkp
OworICAgIH0KKworICAgIHsKKyAgICAgICAgYXV0byogYSA9IG5ldyBpbnRbYXJyYXlTaXplXTsK
KyAgICAgICAgZmlsbEFycmF5KGEsIGFycmF5U2l6ZSk7CisKKyAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8UG9pc29uQSwgaW50W10+IHB0cihhKTsKKyAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51
bnBvaXNvbmVkKCkpOworICAgICAgICBwdHIgPSBhOworICAgICAgICBBU1NFUlRfRVEoYSwgcHRy
LnVucG9pc29uZWQoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBhdXRvKiBhID0gbmV3IGlu
dFthcnJheVNpemVdOworICAgICAgICBmaWxsQXJyYXkoYSwgYXJyYXlTaXplKTsKKworICAgICAg
ICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcHRyKGEpOworICAgICAgICBBU1NF
UlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21h
IGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQg
Ii1XdW5rbm93bi1wcmFnbWFzIgorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1X
c2VsZi1tb3ZlIgorI2VuZGlmCisgICAgICAgIHB0ciA9IFdURk1vdmUocHRyKTsKKyNpZiBDT01Q
SUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKyNlbmRpZgorICAgICAg
ICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgfQorfQorCitURVNUKFdURl9Q
b2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cywgU3dhcCkKK3sK
KyAgICB7CisgICAgICAgIGF1dG8qIGEgPSBuZXcgaW50W2FycmF5U2l6ZV07CisgICAgICAgIGF1
dG8qIGIgPSBuZXcgaW50W2FycmF5U2l6ZV07CisgICAgICAgIGZpbGxBcnJheShhLCBhcnJheVNp
emUpOworICAgICAgICBmaWxsQXJyYXkoYiwgYXJyYXlTaXplKTsKKworICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDEgPSBhOworICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDI7CisgICAgICAgIEFTU0VSVF9FUShwMS51bnBvaXNvbmVk
KCksIGEpOworICAgICAgICBBU1NFUlRfVFJVRSghcDIuYml0cygpKTsKKyAgICAgICAgQVNTRVJU
X1RSVUUoIXAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHAyLnN3YXAocDEpOworICAgICAgICBB
U1NFUlRfVFJVRSghcDEuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX1RSVUUoIXAxLnVucG9pc29u
ZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUShwMi51bnBvaXNvbmVkKCksIGEpOworCisgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwMyA9IGI7CisgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPFBvaXNvbkIsIGludFtdPiBwNDsKKyAgICAgICAgQVNTRVJUX0VRKHAzLnVu
cG9pc29uZWQoKSwgYik7CisgICAgICAgIEFTU0VSVF9UUlVFKCFwNC5iaXRzKCkpOworICAgICAg
ICBBU1NFUlRfVFJVRSghcDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDQuc3dhcChwMyk7Cisg
ICAgICAgIEFTU0VSVF9UUlVFKCFwMy5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRSghcDMu
dW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKHA0LnVucG9pc29uZWQoKSwgYik7Cisg
ICAgfQorCisgICAgeworICAgICAgICBhdXRvKiBhID0gbmV3IGludFthcnJheVNpemVdOworICAg
ICAgICBhdXRvKiBiID0gbmV3IGludFthcnJheVNpemVdOworICAgICAgICBmaWxsQXJyYXkoYSwg
YXJyYXlTaXplKTsKKyAgICAgICAgZmlsbEFycmF5KGIsIGFycmF5U2l6ZSk7CisKKyAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAxID0gYTsKKyAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAyOworICAgICAgICBBU1NFUlRfRVEocDEudW5w
b2lzb25lZCgpLCBhKTsKKyAgICAgICAgQVNTRVJUX1RSVUUoIXAyLmJpdHMoKSk7CisgICAgICAg
IEFTU0VSVF9UUlVFKCFwMi51bnBvaXNvbmVkKCkpOworICAgICAgICBzd2FwKHAxLCBwMik7Cisg
ICAgICAgIEFTU0VSVF9UUlVFKCFwMS5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRSghcDEu
dW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKHAyLnVucG9pc29uZWQoKSwgYSk7CisK
KyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAzID0gYjsKKyAgICAg
ICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgaW50W10+IHA0OworICAgICAgICBBU1NFUlRf
RVEocDMudW5wb2lzb25lZCgpLCBiKTsKKyAgICAgICAgQVNTRVJUX1RSVUUoIXA0LmJpdHMoKSk7
CisgICAgICAgIEFTU0VSVF9UUlVFKCFwNC51bnBvaXNvbmVkKCkpOworICAgICAgICBzd2FwKHAz
LCBwNCk7CisgICAgICAgIEFTU0VSVF9UUlVFKCFwMy5iaXRzKCkpOworICAgICAgICBBU1NFUlRf
VFJVRSghcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKHA0LnVucG9pc29uZWQo
KSwgYik7CisgICAgfQorfQorCitzdGF0aWMgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50
W10+IHBvaXNvbmVkUHRyRm9vKGludCogcHRyKQoreworICAgIHJldHVybiBQb2lzb25lZFVuaXF1
ZVB0cjxQb2lzb25BLCBpbnRbXT4ocHRyKTsKK30KKworVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQ
dHJGb3JUcml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMsIFJldHVyblZhbHVlKQoreworICAgIHsK
KyAgICAgICAgYXV0byogYSA9IG5ldyBpbnRbYXJyYXlTaXplXTsKKyAgICAgICAgZmlsbEFycmF5
KGEsIGFycmF5U2l6ZSk7CisKKyAgICAgICAgYXV0byBwdHIgPSBwb2lzb25lZFB0ckZvbyhhKTsK
KyAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRf
RVEoYSwgJipwdHIpOworICAgICAgICBmb3IgKGF1dG8gaSA9IDA7IGkgPCBhcnJheVNpemU7ICsr
aSkKKyAgICAgICAgICAgIEFTU0VSVF9FUShhW2ldLCBwdHJbaV0pOworICAgIH0KK30KKworfSAv
LyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCg==
</data>
<flag name="review"
          id="349090"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330063</attachid>
            <date>2017-12-21 14:08:09 -0800</date>
            <delta_ts>2017-12-21 14:08:09 -0800</delta_ts>
            <desc>patch for landing.</desc>
            <filename>bug-181062.patch</filename>
            <type>text/plain</type>
            <size>73462</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI2MjM5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBA
CisyMDE3LTEyLTIxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgV1RGOjpQb2lzb25lZFVuaXF1ZVB0ciB0byByZXBsYWNlIHN0ZDo6dW5pcXVlX3B0ciB3aGVu
IHBvaXNvbmluZyBpcyBkZXNpcmVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTgxMDYyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNjE2NzA0MD4K
KworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICAqIHJ1bnRpbWUv
SlNDUG9pc29uZWRQdHIuY3BwOgorICAgICAgICAtIEFkZGVkIGEgbmVlZGVkICNpbmNsdWRlLgor
CiAyMDE3LTEyLTIxICBKZXJlbXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KIAogICAgICAg
ICBVcGRhdGUgRlVMTFNDUkVFTl9BUEkgZmVhdHVyZSBkZWZpbmVzLgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUG9pc29uZWRQdHIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1BvaXNvbmVkUHRyLmNwcAkocmV2aXNpb24g
MjI2MjM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDUG9pc29uZWRQdHIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiSlNDUG9pc29uZWRQdHIuaCIKIAorI2luY2x1ZGUgPG11dGV4PgorCiBuYW1l
c3BhY2UgSlNDIHsKIAogdWludHB0cl90IGdfZ2xvYmFsRGF0YVBvaXNvbjsKSW5kZXg6IFNvdXJj
ZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyMjYyMzkpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDM0IEBACisyMDE3LTEyLTIxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4K
KworICAgICAgICBBZGQgV1RGOjpQb2lzb25lZFVuaXF1ZVB0ciB0byByZXBsYWNlIHN0ZDo6dW5p
cXVlX3B0ciB3aGVuIHBvaXNvbmluZyBpcyBkZXNpcmVkLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxMDYyCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8zNjE2NzA0MD4KKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAg
ICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiB3dGYvUG9pbnRlckFzc2VydHMuY3BwOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV1RGL3d0Zi9SZWZQdHIuY3BwLgorICAgICAgICAtIHJlbmFtZWQgZmlsZSBiZWNhdXNl
IHdlIGFzc2VydHMgYWxsIGtpbmRzIG9mIHBvaW50ZXJzIGluIGhlcmUsIG5vdCBqdXN0IFJlZlB0
ci4KKyAgICAgICAgCisgICAgICAgICogd3RmL1BvaXNvbmVkLmg6CisgICAgICAgIC0gYWRkZWQg
YSBtaXNzaW5nICNpbmNsdWRlLgorICAgICAgICAtIG1ha2UgY29uc3RleHByIHBvaXNvbiB2YWx1
ZXMgbW9yZSBzY3JhbWJsZWQuCisgICAgICAgIChXVEY6Om1ha2VQb2lzb24pOgorCisgICAgICAg
ICogd3RmL1BvaXNvbmVkVW5pcXVlUHRyLmg6IEFkZGVkLgorICAgICAgICAoV1RGOjpQb2lzb25l
ZFVuaXF1ZVB0cjo6UG9pc29uZWRVbmlxdWVQdHIpOgorICAgICAgICAoV1RGOjpQb2lzb25lZFVu
aXF1ZVB0cjo6flBvaXNvbmVkVW5pcXVlUHRyKToKKyAgICAgICAgKFdURjo6UG9pc29uZWRVbmlx
dWVQdHI6OmNyZWF0ZSk6CisgICAgICAgIChXVEY6OlBvaXNvbmVkVW5pcXVlUHRyOjpvcGVyYXRv
cj0pOgorICAgICAgICAoV1RGOjpQb2lzb25lZFVuaXF1ZVB0cjo6Z2V0IGNvbnN0KToKKyAgICAg
ICAgKFdURjo6UG9pc29uZWRVbmlxdWVQdHI6Om9wZXJhdG9yW10gY29uc3QpOgorICAgICAgICAo
V1RGOjpQb2lzb25lZFVuaXF1ZVB0cjo6Y2xlYXIpOgorICAgICAgICAoV1RGOjpQb2lzb25lZFVu
aXF1ZVB0cjo6ZGVzdHJveSk6CisgICAgICAgIChXVEY6OlBvaXNvbmVkVW5pcXVlUHRyOjpjbGVh
cldpdGhvdXREZXN0cm95KToKKyAgICAgICAgKFdURjo6bWFrZVBvaXNvbmVkVW5pcXVlKToKKyAg
ICAgICAgKiB3dGYvUmVmUHRyLmNwcDogUmVtb3ZlZC4KKwogMjAxNy0xMi0yMSAgSmVyZW15IEpv
bmVzICA8amVyZW15akBhcHBsZS5jb20+CiAKICAgICAgICAgRWxlbWVudCBmdWxsc2NyZWVuIGlu
dGVyZmFjZSBzaG91bGQgZGlzcGxheSB0aGUgbG9jYXRpb24KSW5kZXg6IFNvdXJjZS9XVEYvV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjI2MjM5KQorKysgU291cmNlL1dU
Ri9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTUwLDcg
KzE1MCw3IEBACiAJCUUzQTMyQkM0MUZDODMwRTIwMDdEN0U3NiAvKiBKU1ZhbHVlTWFsbG9jLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTMyQkMy
MUZDODMwRTIwMDdEN0U3NiAvKiBKU1ZhbHVlTWFsbG9jLmNwcCAqLzsgfTsKIAkJRTRBMEFEMzkx
QTk2MjQ1NTAwNTM2REY2IC8qIFdvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEEwQUQzNzFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1
ZXVlLmNwcCAqLzsgfTsKIAkJRTRBMEFEM0QxQTk2MjUzQzAwNTM2REY2IC8qIFdvcmtRdWV1ZUNv
Y29hLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0
QTBBRDNDMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2NvYS5jcHAgKi87IH07Ci0JCUZF
MDVGQUZGMUZFNTAwNzUwMDA5MzIzMCAvKiBSZWZQdHIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwNUZBRkUxRkU1MDA3NTAwMDkzMjMwIC8qIFJl
ZlB0ci5jcHAgKi87IH07CisJCUZFMDVGQUZGMUZFNTAwNzUwMDA5MzIzMCAvKiBQb2ludGVyQXNz
ZXJ0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTA1RkFGRTFGRTUwMDc1MDAwOTMyMzAgLyogUG9pbnRlckFzc2VydHMuY3BwICovOyB9OwogCQlG
RTg1NDE2RTFGQkUyODVEMDA4REE1REEgLyogUG9pc29uZWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4NTQxNkMxRkJFMjg1QjAwOERBNURBIC8q
IFBvaXNvbmVkLmNwcCAqLzsgfTsKIAkJRkVEQUNEM0QxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNr
U3RhdHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkVEQUNEM0IxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuY3BwICovOyB9OwogLyogRW5k
IFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCkBAIC02MTksNyArNjE5LDggQEAKIAkJRUY3RDZDRDU5
RDg2NDJBOEEwREE4NkFEIC8qIFN0YWNrVHJhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU3RhY2tUcmFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNzJC
QkRCMTA3RkE0MjQ4ODYxNzhCOUUgLyogU3ltYm9sSW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTeW1ib2xJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRkUwNUZBRTYxRkRCMjE0MzAwMDkzMjMwIC8qIER1bWJQdHJUcmFpdHMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRHVtYlB0clRyYWl0cy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlGRTA1RkFGRTFGRTUwMDc1MDAwOTMyMzAgLyogUmVmUHRyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZlB0ci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMDVGQUZFMUZFNTAwNzUwMDA5MzIzMCAvKiBQb2lu
dGVyQXNzZXJ0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb2lu
dGVyQXNzZXJ0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMDVGQjA0MUZF
ODQ1MzIwMDA5MzIzMCAvKiBQb2lzb25lZFVuaXF1ZVB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQb2lzb25lZFVuaXF1ZVB0ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGRTgyMjUzMDFCMkExRTVCMDBCQTY4RkQgLyogTmFrZWRQdHIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmFrZWRQdHIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRkU4NTQxNkMxRkJFMjg1QjAwOERBNURBIC8qIFBvaXNvbmVkLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvaXNvbmVkLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkU4NTQxNkQxRkJFMjg1QzAwOERBNURBIC8qIFBvaXNvbmVkLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvaXNvbmVkLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC05ODIsOSArOTgzLDExIEBACiAJCQkJMEY4MjRBNjUxQjc0NDNB
MDAwMkUzNDVEIC8qIFBhcmtpbmdMb3QuaCAqLywKIAkJCQlBODc2REJENzE1MTgxNkU1MDBEQURC
OTUgLyogUGxhdGZvcm0uaCAqLywKIAkJCQlFMzIwMEFCNDFFOUE1MzZEMDAzQjU5RDIgLyogUGxh
dGZvcm1SZWdpc3RlcnMuaCAqLywKKwkJCQlGRTA1RkFGRTFGRTUwMDc1MDAwOTMyMzAgLyogUG9p
bnRlckFzc2VydHMuY3BwICovLAogCQkJCTBGRjg2MDk0MUJDQ0JENzQwMDQ1MTI3RiAvKiBQb2lu
dGVyQ29tcGFyaXNvbi5oICovLAogCQkJCUZFODU0MTZDMUZCRTI4NUIwMDhEQTVEQSAvKiBQb2lz
b25lZC5jcHAgKi8sCiAJCQkJRkU4NTQxNkQxRkJFMjg1QzAwOERBNURBIC8qIFBvaXNvbmVkLmgg
Ki8sCisJCQkJRkUwNUZCMDQxRkU4NDUzMjAwMDkzMjMwIC8qIFBvaXNvbmVkVW5pcXVlUHRyLmgg
Ki8sCiAJCQkJMEY5RDMzNUQxNjVEQkE3MzAwNUFEMzg3IC8qIFByaW50U3RyZWFtLmNwcCAqLywK
IAkJCQkwRjlEMzM1RTE2NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0uaCAqLywKIAkJCQk1
M0VDMjUzQzFFOTVBRDMwMDAwODMxQjkgLyogUHJpb3JpdHlRdWV1ZS5oICovLApAQCAtMTAxMCw3
ICsxMDEzLDYgQEAKIAkJCQlBOEE0NzMwMTE1MUE4MjVCMDA0MTIzRkYgLyogUmVmQ291bnRlZExl
YWtDb3VudGVyLmNwcCAqLywKIAkJCQlBOEE0NzMwMjE1MUE4MjVCMDA0MTIzRkYgLyogUmVmQ291
bnRlZExlYWtDb3VudGVyLmggKi8sCiAJCQkJODZGNDZGNUYxQTI4NDBFRTAwQ0NCRjIyIC8qIFJl
ZkNvdW50ZXIuaCAqLywKLQkJCQlGRTA1RkFGRTFGRTUwMDc1MDAwOTMyMzAgLyogUmVmUHRyLmNw
cCAqLywKIAkJCQlBOEE0NzMwMzE1MUE4MjVCMDA0MTIzRkYgLyogUmVmUHRyLmggKi8sCiAJCQkJ
QThBNDczMDUxNTFBODI1QjAwNDEyM0ZGIC8qIFJldGFpblB0ci5oICovLAogCQkJCTJDREVEMEYx
MTgxMTVDODUwMDREQkE3MCAvKiBSdW5Mb29wLmNwcCAqLywKQEAgLTE0MTgsNyArMTQyMCw3IEBA
CiAJCQkJMEY2NkIyOEExREM5N0JBQjAwNEExRDNGIC8qIENsb2NrVHlwZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBOEE0NzQ2MDE1MUE4MjVCMDA0MTIzRkYgLyogQ29sbGF0b3JEZWZhdWx0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDYzMTUxQTgyNUIwMDQxMjNGRiAvKiBDb2xsYXRv
cklDVS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlGRTA1RkFGRjFGRTUwMDc1MDAwOTMyMzAgLyog
UmVmUHRyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFMDVGQUZGMUZFNTAwNzUwMDA5MzIzMCAv
KiBQb2ludGVyQXNzZXJ0cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjhGMkI5MjE3MkUwMTAz
MDA3REJEQTUgLyogQ29tcGlsYXRpb25UaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYz
MENCNUExRkNERjEzNDAwNEI1MzIzIC8qIENvbmN1cnJlbnRQdHJIYXNoU2V0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGOEU4NURCMUZENDg1QjAwMDY5MTg4OSAvKiBDb3VudGluZ0xvY2suY3Bw
IGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjI2MjM5
KQorKysgU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEx
MSw2ICsxMTEsNyBAQCBzZXQoV1RGX0hFQURFUlMKICAgICBQbGF0Zm9ybS5oCiAgICAgUGxhdGZv
cm1SZWdpc3RlcnMuaAogICAgIFBvaXNvbmVkLmgKKyAgICBQb2lzb25lZFVuaXF1ZVB0ci5oCiAg
ICAgUHJpbnRTdHJlYW0uaAogICAgIFByb2Nlc3NJRC5oCiAgICAgUkFNU2l6ZS5oCkBAIC0yNjIs
NiArMjYzLDcgQEAgc2V0KFdURl9TT1VSQ0VTCiAgICAgUGFyYWxsZWxIZWxwZXJQb29sLmNwcAog
ICAgIFBhcmFsbGVsSm9ic0dlbmVyaWMuY3BwCiAgICAgUGFya2luZ0xvdC5jcHAKKyAgICBQb2lu
dGVyQXNzZXJ0cy5jcHAKICAgICBQb2lzb25lZC5jcHAKICAgICBQcmludFN0cmVhbS5jcHAKICAg
ICBSQU1TaXplLmNwcApAQCAtMjY5LDcgKzI3MSw2IEBAIHNldChXVEZfU09VUkNFUwogICAgIFJh
bmRvbU51bWJlci5jcHAKICAgICBSZWFkV3JpdGVMb2NrLmNwcAogICAgIFJlZkNvdW50ZWRMZWFr
Q291bnRlci5jcHAKLSAgICBSZWZQdHIuY3BwCiAgICAgUnVuTG9vcC5jcHAKICAgICBTSEExLmNw
cAogICAgIFNlY29uZHMuY3BwCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Qb2ludGVyQXNzZXJ0cy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUG9pbnRlckFzc2VydHMuY3BwCShyZXZp
c2lvbiAyMjYyMzkpCShmcm9tIFNvdXJjZS9XVEYvd3RmL1JlZlB0ci5jcHA6MjI2MjM5KQorKysg
U291cmNlL1dURi93dGYvUG9pbnRlckFzc2VydHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVmUHRyLmgiCisKKyNpbmNsdWRlICJQb2lz
b25lZC5oIgorCituYW1lc3BhY2UgV1RGIHsKKworc3RydWN0IER1bW15Q2xhc3MgeyB9OworCitz
dGF0aWNfYXNzZXJ0KHNpemVvZihSZWY8RHVtbXlDbGFzcz4pID09IHNpemVvZihEdW1teUNsYXNz
KiksICIiKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFBvaXNvbmVkUmVmPDB4ZmZmZiwgRHVtbXlD
bGFzcz4pID09IHNpemVvZihEdW1teUNsYXNzKiksICIiKTsKKworc3RhdGljX2Fzc2VydChzaXpl
b2YoUmVmUHRyPER1bW15Q2xhc3M+KSA9PSBzaXplb2YoRHVtbXlDbGFzcyopLCAiIik7CitzdGF0
aWNfYXNzZXJ0KHNpemVvZihQb2lzb25lZFJlZlB0cjwweGZmZmYsIER1bW15Q2xhc3M+KSA9PSBz
aXplb2YoRHVtbXlDbGFzcyopLCAiIik7CisKK30gLy8gbmFtZXNwYWNlIFdURgorCkluZGV4OiBT
b3VyY2UvV1RGL3d0Zi9Qb2ludGVyQXNzZXJ0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri93dGYvUG9pbnRlckFzc2VydHMuY3BwCShyZXZpc2lvbiAyMjYyMzkpCisrKyBTb3VyY2UvV1RG
L3d0Zi9Qb2ludGVyQXNzZXJ0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDEzICsyNCwxNiBA
QAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJSZWZQdHIuaCIKIAotI2lu
Y2x1ZGUgIlBvaXNvbmVkLmgiCisjaW5jbHVkZSA8d3RmL1BvaXNvbmVkLmg+CisjaW5jbHVkZSA8
d3RmL1BvaXNvbmVkVW5pcXVlUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1l
c3BhY2UgV1RGIHsKIAorbmFtZXNwYWNlIHsKIHN0cnVjdCBEdW1teUNsYXNzIHsgfTsKK30KIAog
c3RhdGljX2Fzc2VydChzaXplb2YoUmVmPER1bW15Q2xhc3M+KSA9PSBzaXplb2YoRHVtbXlDbGFz
cyopLCAiIik7CiBzdGF0aWNfYXNzZXJ0KHNpemVvZihQb2lzb25lZFJlZjwweGZmZmYsIER1bW15
Q2xhc3M+KSA9PSBzaXplb2YoRHVtbXlDbGFzcyopLCAiIik7CkBAIC0zOCw1ICs0MSw5IEBAIHN0
YXRpY19hc3NlcnQoc2l6ZW9mKFBvaXNvbmVkUmVmPDB4ZmZmZiwKIHN0YXRpY19hc3NlcnQoc2l6
ZW9mKFJlZlB0cjxEdW1teUNsYXNzPikgPT0gc2l6ZW9mKER1bW15Q2xhc3MqKSwgIiIpOwogc3Rh
dGljX2Fzc2VydChzaXplb2YoUG9pc29uZWRSZWZQdHI8MHhmZmZmLCBEdW1teUNsYXNzPikgPT0g
c2l6ZW9mKER1bW15Q2xhc3MqKSwgIiIpOwogCitzdGF0aWNfYXNzZXJ0KHNpemVvZihQb2lzb25l
ZFVuaXF1ZVB0cjwweGZmZmYsIER1bW15Q2xhc3M+KSA9PSBzaXplb2YoRHVtbXlDbGFzcyopLCAi
Iik7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihQb2lzb25lZFVuaXF1ZVB0cjwweGZmZmYsIGludFtd
PikgPT0gc2l6ZW9mKGludCopLCAiIik7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihQb2lzb25lZFVu
aXF1ZVB0cjwweGZmZmYsIER1bW15Q2xhc3NbXT4pID09IHNpemVvZihEdW1teUNsYXNzKiksICIi
KTsKKwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVk
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUG9pc29uZWQuaAkocmV2aXNpb24gMjI2
MjM5KQorKysgU291cmNlL1dURi93dGYvUG9pc29uZWQuaAkod29ya2luZyBjb3B5KQpAQCAtMjUs
NiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPHV0aWxpdHk+CiAjaW5jbHVk
ZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAogI2RlZmluZSBFTkFCTEVfUE9JU09OIDEKQEAgLTIxNiw3
ICsyMTcsOSBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgdWludHB0cl90IG1ha2VQb2lzb24oCiBpbmxp
bmUgY29uc3RleHByIHVpbnRwdHJfdCBtYWtlUG9pc29uKHVpbnQzMl90IGtleSkKIHsKICNpZiBF
TkFCTEUoUE9JU09OKQotICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDB4ODAwMDAw
MDAgfCBrZXkpIDw8IDMyOworICAgIHVpbnRwdHJfdCBwb2lzb24xID0gc3RhdGljX2Nhc3Q8dWlu
dHB0cl90PihrZXkpICogNjkwNjk2OTA2OSArIDEyMzQ1Njc7CisgICAgdWludHB0cl90IHBvaXNv
bjIgPSBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGtleSkgKiA4MjUzNzI5ICsgMjM5NjQwMzsKKyAg
ICByZXR1cm4gKChwb2lzb24xIDw8IDMpIF4gKHBvaXNvbjIgPDwgMzIpKSB8IChzdGF0aWNfY2Fz
dDx1aW50cHRyX3Q+KDEpIDw8IDYzKTsKICNlbHNlCiAgICAgcmV0dXJuICh2b2lkKWtleSwgMDsK
ICNlbmRpZgpJbmRleDogU291cmNlL1dURi93dGYvUG9pc29uZWRVbmlxdWVQdHIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Qb2lzb25lZFVuaXF1ZVB0ci5oCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVkVW5pcXVlUHRyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVk
ZSA8d3RmL1BvaXNvbmVkLmg+CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTx1aW50MzJf
dCBrZXksIHR5cGVuYW1lIFQsIHR5cGVuYW1lIEVuYWJsZSA9IHZvaWQ+CitjbGFzcyBQb2lzb25l
ZFVuaXF1ZVB0ciA6IHB1YmxpYyBDb25zdEV4cHJQb2lzb25lZDxrZXksIFQqPiB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgdXNpbmcgQmFzZSA9IENvbnN0RXhwclBvaXNvbmVk
PGtleSwgVCo+OworcHVibGljOgorICAgIFBvaXNvbmVkVW5pcXVlUHRyKCkgPSBkZWZhdWx0Owor
ICAgIFBvaXNvbmVkVW5pcXVlUHRyKFQqIHB0cikgOiBCYXNlKHB0cikgeyB9CisgICAgUG9pc29u
ZWRVbmlxdWVQdHIoUG9pc29uZWRVbmlxdWVQdHImJiBwdHIpIDogQmFzZShXVEZNb3ZlKHB0cikp
IHsgcHRyLmNsZWFyV2l0aG91dERlc3Ryb3koKTsgfQorCisgICAgdGVtcGxhdGU8dWludDMyX3Qg
a2V5MiwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYmFz
ZV9vZjxULCBVPjo6dmFsdWU+PgorICAgIFBvaXNvbmVkVW5pcXVlUHRyKFBvaXNvbmVkVW5pcXVl
UHRyPGtleTIsIFU+JiYgcHRyKQorICAgICAgICA6IEJhc2UocHRyLnVucG9pc29uZWQoKSkKKyAg
ICB7CisgICAgICAgIHB0ci5jbGVhcldpdGhvdXREZXN0cm95KCk7CisgICAgfQorCisgICAgUG9p
c29uZWRVbmlxdWVQdHIoY29uc3QgUG9pc29uZWRVbmlxdWVQdHImKSA9IGRlbGV0ZTsKKworICAg
IH5Qb2lzb25lZFVuaXF1ZVB0cigpIHsgZGVzdHJveSgpOyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBBcmd1bWVudHM+CisgICAgc3RhdGljIFBvaXNvbmVkVW5pcXVlUHRyIGNyZWF0ZShB
cmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IFQoc3Rk
Ojpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLik7CisgICAgfQorCisgICAgUG9pc29u
ZWRVbmlxdWVQdHImIG9wZXJhdG9yPShUKiBwdHIpCisgICAgeworICAgICAgICBpZiAoTElLRUxZ
KHRoaXMtPnVucG9pc29uZWQoKSAhPSBwdHIpKSB7CisgICAgICAgICAgICB0aGlzLT5jbGVhcigp
OworICAgICAgICAgICAgdGhpcy0+QmFzZTo6b3BlcmF0b3I9KHB0cik7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIHRlbXBsYXRlPHVpbnQzMl90IGtleTIs
IHR5cGVuYW1lIFUsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Jhc2Vfb2Y8
VCwgVT46OnZhbHVlPj4KKyAgICBQb2lzb25lZFVuaXF1ZVB0ciYgb3BlcmF0b3I9KFBvaXNvbmVk
VW5pcXVlUHRyPGtleTIsIFU+JiYgcHRyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHRoaXMgPT0g
c3RhdGljX2Nhc3Q8dm9pZCo+KCZwdHIpIHx8IHRoaXMtPnVucG9pc29uZWQoKSAhPSBwdHIudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgaWYgKExJS0VMWSh0aGlzICE9IHN0YXRpY19jYXN0PHZvaWQq
PigmcHRyKSkpIHsKKyAgICAgICAgICAgIHRoaXMtPmNsZWFyKCk7CisgICAgICAgICAgICB0aGlz
LT5CYXNlOjpvcGVyYXRvcj0oV1RGTW92ZShwdHIpKTsKKyAgICAgICAgICAgIHB0ci5jbGVhcldp
dGhvdXREZXN0cm95KCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0K
KworICAgIFBvaXNvbmVkVW5pcXVlUHRyJiBvcGVyYXRvcj0oY29uc3QgUG9pc29uZWRVbmlxdWVQ
dHImKSA9IGRlbGV0ZTsKKworICAgIFQqIGdldCgpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPnVucG9p
c29uZWQoKTsgfQorICAgIFQmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVy
biB0aGlzLT51bnBvaXNvbmVkKClbaW5kZXhdOyB9CisKKyAgICB2b2lkIGNsZWFyKCkKKyAgICB7
CisgICAgICAgIGRlc3Ryb3koKTsKKyAgICAgICAgY2xlYXJXaXRob3V0RGVzdHJveSgpOworICAg
IH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGRlc3Ryb3koKQorICAgIHsKKyAgICAgICAgaWYgKCF0
aGlzLT5iaXRzKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGRlbGV0ZSB0aGlzLT51
bnBvaXNvbmVkKCk7CisgICAgfQorCisgICAgdm9pZCBjbGVhcldpdGhvdXREZXN0cm95KCkgeyBC
YXNlOjpjbGVhcigpOyB9CisKKyAgICB0ZW1wbGF0ZTx1aW50MzJfdCwgdHlwZW5hbWUsIHR5cGVu
YW1lPiBmcmllbmQgY2xhc3MgUG9pc29uZWRVbmlxdWVQdHI7Cit9OworCit0ZW1wbGF0ZTx1aW50
MzJfdCBrZXksIHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cywgdHlwZW5hbWUgRW5h
YmxlID0gdm9pZD4KK1BvaXNvbmVkVW5pcXVlUHRyPGtleSwgVD4gbWFrZVBvaXNvbmVkVW5pcXVl
KEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKK3sKKyAgICByZXR1cm4gUG9pc29uZWRVbmlxdWVQ
dHI8a2V5LCBUPjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4p
OworfQorCit0ZW1wbGF0ZTx1aW50MzJfdCBrZXksIHR5cGVuYW1lIFQ+CitjbGFzcyBQb2lzb25l
ZFVuaXF1ZVB0cjxrZXksIFRbXT4gOiBwdWJsaWMgQ29uc3RFeHByUG9pc29uZWQ8a2V5LCBUKj4g
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIHVzaW5nIEJhc2UgPSBDb25zdEV4
cHJQb2lzb25lZDxrZXksIFQqPjsKK3B1YmxpYzoKKyAgICBQb2lzb25lZFVuaXF1ZVB0cigpID0g
ZGVmYXVsdDsKKyAgICBQb2lzb25lZFVuaXF1ZVB0cihUKiBwdHIpIDogQmFzZShwdHIpIHsgfQor
ICAgIFBvaXNvbmVkVW5pcXVlUHRyKFBvaXNvbmVkVW5pcXVlUHRyJiYgcHRyKSA6IEJhc2UoV1RG
TW92ZShwdHIpKSB7IHB0ci5jbGVhcldpdGhvdXREZXN0cm95KCk7IH0KKworICAgIHRlbXBsYXRl
PHVpbnQzMl90IGtleTI+CisgICAgUG9pc29uZWRVbmlxdWVQdHIoUG9pc29uZWRVbmlxdWVQdHI8
a2V5MiwgVFtdPiYmIHB0cikKKyAgICAgICAgOiBCYXNlKHB0ci51bnBvaXNvbmVkKCkpCisgICAg
eworICAgICAgICBwdHIuY2xlYXJXaXRob3V0RGVzdHJveSgpOworICAgIH0KKworICAgIFBvaXNv
bmVkVW5pcXVlUHRyKGNvbnN0IFBvaXNvbmVkVW5pcXVlUHRyJikgPSBkZWxldGU7CisKKyAgICB+
UG9pc29uZWRVbmlxdWVQdHIoKSB7IGRlc3Ryb3koKTsgfQorCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUuLi4gQXJndW1lbnRzPgorICAgIHN0YXRpYyBQb2lzb25lZFVuaXF1ZVB0ciBjcmVhdGUoc2l6
ZV90IGNvdW50LCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCisgICAgeworICAgICAgICBUKiBy
ZXN1bHQgPSBuZXcgVFtjb3VudF07CisgICAgICAgIHdoaWxlIChjb3VudC0tKQorICAgICAgICAg
ICAgbmV3IChyZXN1bHQgKyBjb3VudCkgVChzdGQ6OmZvcndhcmQ8QXJndW1lbnRzPihhcmd1bWVu
dHMpLi4uKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBQb2lzb25lZFVu
aXF1ZVB0ciYgb3BlcmF0b3I9KFQqIHB0cikKKyAgICB7CisgICAgICAgIGlmIChMSUtFTFkodGhp
cy0+dW5wb2lzb25lZCgpICE9IHB0cikpIHsKKyAgICAgICAgICAgIHRoaXMtPmNsZWFyKCk7Cisg
ICAgICAgICAgICB0aGlzLT5CYXNlOjpvcGVyYXRvcj0ocHRyKTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgdGVtcGxhdGU8dWludDMyX3Qga2V5Mj4KKyAg
ICBQb2lzb25lZFVuaXF1ZVB0ciYgb3BlcmF0b3I9KFBvaXNvbmVkVW5pcXVlUHRyPGtleTIsIFRb
XT4mJiBwdHIpCisgICAgeworICAgICAgICBBU1NFUlQodGhpcyA9PSBzdGF0aWNfY2FzdDx2b2lk
Kj4oJnB0cikgfHwgdGhpcy0+dW5wb2lzb25lZCgpICE9IHB0ci51bnBvaXNvbmVkKCkpOworICAg
ICAgICBpZiAoTElLRUxZKHRoaXMgIT0gc3RhdGljX2Nhc3Q8dm9pZCo+KCZwdHIpKSkgeworICAg
ICAgICAgICAgdGhpcy0+Y2xlYXIoKTsKKyAgICAgICAgICAgIHRoaXMtPkJhc2U6Om9wZXJhdG9y
PShXVEZNb3ZlKHB0cikpOworICAgICAgICAgICAgcHRyLmNsZWFyV2l0aG91dERlc3Ryb3koKTsK
KyAgICAgICAgfQorICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgUG9pc29uZWRV
bmlxdWVQdHImIG9wZXJhdG9yPShjb25zdCBQb2lzb25lZFVuaXF1ZVB0ciYpID0gZGVsZXRlOwor
CisgICAgVCogZ2V0KCkgY29uc3QgeyByZXR1cm4gdGhpcy0+dW5wb2lzb25lZCgpOyB9CisgICAg
VCYgb3BlcmF0b3JbXShzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPnVucG9pc29u
ZWQoKVtpbmRleF07IH0KKworICAgIHZvaWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgZGVzdHJv
eSgpOworICAgICAgICBjbGVhcldpdGhvdXREZXN0cm95KCk7CisgICAgfQorCitwcml2YXRlOgor
ICAgIHZvaWQgZGVzdHJveSgpCisgICAgeworICAgICAgICBpZiAoIXRoaXMtPmJpdHMoKSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZGVsZXRlW10gdGhpcy0+dW5wb2lzb25lZCgpOwor
ICAgIH0KKworICAgIHZvaWQgY2xlYXJXaXRob3V0RGVzdHJveSgpIHsgQmFzZTo6Y2xlYXIoKTsg
fQorCisgICAgdGVtcGxhdGU8dWludDMyX3QsIHR5cGVuYW1lLCB0eXBlbmFtZT4gZnJpZW5kIGNs
YXNzIFBvaXNvbmVkVW5pcXVlUHRyOworfTsKKwordGVtcGxhdGU8dWludDMyX3Qga2V5LCB0eXBl
bmFtZSBULCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CitQb2lzb25lZFVuaXF1ZVB0cjxrZXksIFRb
XT4gbWFrZVBvaXNvbmVkVW5pcXVlKHNpemVfdCBjb3VudCwgQXJndW1lbnRzJiYuLi4gYXJndW1l
bnRzKQoreworICAgIHJldHVybiBQb2lzb25lZFVuaXF1ZVB0cjxrZXksIFRbXT46OmNyZWF0ZShj
b3VudCwgc3RkOjpmb3J3YXJkPEFyZ3VtZW50cz4oYXJndW1lbnRzKS4uLik7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OlBvaXNvbmVkVW5pcXVlUHRyOwordXNpbmcgV1RG
OjptYWtlUG9pc29uZWRVbmlxdWU7CisKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1JlZlB0ci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUmVmUHRyLmNwcAkocmV2aXNpb24gMjI2MjM5
KQorKysgU291cmNlL1dURi93dGYvUmVmUHRyLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDQyICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUmVmUHRyLmgiCi0KLSNpbmNsdWRlICJQb2lzb25l
ZC5oIgotCi1uYW1lc3BhY2UgV1RGIHsKLQotc3RydWN0IER1bW15Q2xhc3MgeyB9OwotCi1zdGF0
aWNfYXNzZXJ0KHNpemVvZihSZWY8RHVtbXlDbGFzcz4pID09IHNpemVvZihEdW1teUNsYXNzKiks
ICIiKTsKLXN0YXRpY19hc3NlcnQoc2l6ZW9mKFBvaXNvbmVkUmVmPDB4ZmZmZiwgRHVtbXlDbGFz
cz4pID09IHNpemVvZihEdW1teUNsYXNzKiksICIiKTsKLQotc3RhdGljX2Fzc2VydChzaXplb2Yo
UmVmUHRyPER1bW15Q2xhc3M+KSA9PSBzaXplb2YoRHVtbXlDbGFzcyopLCAiIik7Ci1zdGF0aWNf
YXNzZXJ0KHNpemVvZihQb2lzb25lZFJlZlB0cjwweGZmZmYsIER1bW15Q2xhc3M+KSA9PSBzaXpl
b2YoRHVtbXlDbGFzcyopLCAiIik7Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCkluZGV4OiBUb29s
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjYy
MzkpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNSBAQAor
MjAxNy0xMi0yMSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRk
IFdURjo6UG9pc29uZWRVbmlxdWVQdHIgdG8gcmVwbGFjZSBzdGQ6OnVuaXF1ZV9wdHIgd2hlbiBw
b2lzb25pbmcgaXMgZGVzaXJlZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE4MTA2MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYxNjcwNDA+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvQ29uc3RFeHByUG9pc29uZWQuY3BwOgorICAgICAgICAtIFJlbW92ZWQgYW4gdW5u
ZWVkZWQgI2luY2x1ZGUuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lz
b25lZFVuaXF1ZVB0ci5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpwb2lzb25lZFB0ckZvbyk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbHlEZXN0
cnVjdGlibGVBcnJheXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkVW5pcXVlUHRyRm9y
VHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUKToKKwogMjAxNy0xMi0yMSAgSmVyZW15IEpvbmVzICA8amVyZW15akBhcHBs
ZS5jb20+CiAKICAgICAgICAgVXBkYXRlIEZVTExTQ1JFRU5fQVBJIGZlYXR1cmUgZGVmaW5lcy4K
SW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjI2MjM5KQorKysg
VG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTI2
LDYgKzEyNiw5IEBAIHNldChUZXN0V1RGX1NPVVJDRVMKICAgICAke1RFU1RXRUJLSVRBUElfRElS
fS9UZXN0cy9XVEYvUG9pc29uZWQuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMv
V1RGL1BvaXNvbmVkUmVmLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9Q
b2lzb25lZFJlZlB0ci5jcHAKKyAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvUG9p
c29uZWRVbmlxdWVQdHIuY3BwCisgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1Bv
aXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLmNwcAorICAg
ICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZp
YWxseURlc3RydWN0aWJsZUFycmF5cy5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0
cy9XVEYvUHJpb3JpdHlRdWV1ZS5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9X
VEYvUmVkQmxhY2tUcmVlLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9S
ZWYuY3BwCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjI2MjM5KQorKysg
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTc2Miw2ICs3NjIsOSBAQAogCQlGRTA1RkFFRDFGREI1MTBF
MDAwOTMyMzAgLyogUG9pc29uZWRSZWZQdHIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwNUZBRUExRkRCNTEwMTAwMDkzMjMwIC8qIFBvaXNvbmVk
UmVmUHRyLmNwcCAqLzsgfTsKIAkJRkUwNUZBRUYxRkUwNjQ1QjAwMDkzMjMwIC8qIFBvaXNvbmVk
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMDVG
QUVFMUZFMDY0M0QwMDA5MzIzMCAvKiBQb2lzb25lZC5jcHAgKi87IH07CiAJCUZFMDVGQUYxMUZF
MDhDRDQwMDA5MzIzMCAvKiBDb25zdEV4cHJQb2lzb25lZC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTA1RkFGMDFGRTA4Q0NEMDAwOTMyMzAgLyog
Q29uc3RFeHByUG9pc29uZWQuY3BwICovOyB9OworCQlGRTA1RkIwNjFGRTg0RkI3MDAwOTMyMzAg
LyogUG9pc29uZWRVbmlxdWVQdHIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkUwNUZCMDUxRkU4NEZBRTAwMDkzMjMwIC8qIFBvaXNvbmVkVW5pcXVl
UHRyLmNwcCAqLzsgfTsKKwkJRkVDOEY0RTcxRkU5QzkwNTAwNTZGRDhBIC8qIFBvaXNvbmVkVW5p
cXVlUHRyRm9yVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQzhGNEU2MUZFOUM4REUwMDU2RkQ4QSAv
KiBQb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cy5jcHAgKi87
IH07CisJCUZFQzhGNEVCMUZFOUY1QUYwMDU2RkQ4QSAvKiBQb2lzb25lZFVuaXF1ZVB0ckZvck5v
blRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUM4RjRFQTFGRTlGNUE3MDA1NkZEOEEgLyogUG9pc29u
ZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMuY3BwICovOyB9Owog
LyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0
ZW1Qcm94eSBzZWN0aW9uICovCkBAIC0xODY5LDcgKzE4NzIsMTAgQEAKIAkJRkUwNUZBRUIxRkRC
NTEwMjAwMDkzMjMwIC8qIFBvaXNvbmVkUmVmLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFBvaXNvbmVkUmVmLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkUwNUZBRUUxRkUwNjQzRDAwMDkzMjMwIC8qIFBvaXNvbmVkLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvaXNvbmVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkUwNUZBRjAxRkUwOENDRDAwMDkzMjMwIC8qIENvbnN0RXhwclBvaXNvbmVk
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnN0RXhwclBvaXNv
bmVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUwNUZCMDUxRkU4NEZBRTAw
MDkzMjMwIC8qIFBvaXNvbmVkVW5pcXVlUHRyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFBvaXNvbmVkVW5pcXVlUHRyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRkVCNkY3NEUxQjJCQTQ0RTAwOUU0OTIyIC8qIE5ha2VkUHRyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ha2VkUHRyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRkVDOEY0RTYxRkU5QzhERTAwNTZGRDhBIC8qIFBvaXNvbmVkVW5p
cXVlUHRyRm9yVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGVzdHJ1
Y3RpYmxlQXJyYXlzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVDOEY0RUEx
RkU5RjVBNzAwNTZGRDhBIC8qIFBvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGx5RGVzdHJ1
Y3RpYmxlQXJyYXlzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBv
aXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24g
Ki8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtMjY3
MSw2ICsyNjc3LDkgQEAKIAkJCQlGRTA1RkFFRTFGRTA2NDNEMDAwOTMyMzAgLyogUG9pc29uZWQu
Y3BwICovLAogCQkJCUZFMDVGQUVCMUZEQjUxMDIwMDA5MzIzMCAvKiBQb2lzb25lZFJlZi5jcHAg
Ki8sCiAJCQkJRkUwNUZBRUExRkRCNTEwMTAwMDkzMjMwIC8qIFBvaXNvbmVkUmVmUHRyLmNwcCAq
LywKKwkJCQlGRTA1RkIwNTFGRTg0RkFFMDAwOTMyMzAgLyogUG9pc29uZWRVbmlxdWVQdHIuY3Bw
ICovLAorCQkJCUZFQzhGNEVBMUZFOUY1QTcwMDU2RkQ4QSAvKiBQb2lzb25lZFVuaXF1ZVB0ckZv
ck5vblRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cy5jcHAgKi8sCisJCQkJRkVDOEY0RTYxRkU5
QzhERTAwNTZGRDhBIC8qIFBvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGVzdHJ1Y3RpYmxl
QXJyYXlzLmNwcCAqLywKIAkJCQk1M0VDMjUzRjFFOTZCQzgwMDAwODMxQjkgLyogUHJpb3JpdHlR
dWV1ZS5jcHAgKi8sCiAJCQkJMEZDNkM0Q0IxNDEwMjdFMDAwNUI3RjBDIC8qIFJlZEJsYWNrVHJl
ZS5jcHAgKi8sCiAJCQkJOTNBNDI3QUExODBEQTI2NDAwQ0QyNEQ3IC8qIFJlZi5jcHAgKi8sCkBA
IC0zMjExLDYgKzMyMjAsNyBAQAogCQkJCTdDODNERUQ0MUQwQTU5MEMwMEZFQkNGMyAvKiBIYXNo
U2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERUUwMUQwQTU5MEMwMEZFQkNGMyAvKiBJ
bnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBMDUwOTQx
MUZCOUYwNjQwMEIzM0ZCOCAvKiBKU09OVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkUw
NUZCMDYxRkU4NEZCNzAwMDkzMjMwIC8qIFBvaXNvbmVkVW5pcXVlUHRyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTUzMUMxRDhFMURGOEVGNzIwMDZFOTc5RiAvKiBMRUJEZWNvZGVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE1N0Q1NEY5MUYzMzk3QjQwMEE5N0FBNyAvKiBMaWZlY3ljbGVMb2dn
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNFMkM1NTUxRkQzMjA0MTAwRTFERjZBIC8qIExp
bmVFbmRpbmcuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMjQ3LDYgKzMyNTcsNyBAQAogCQkJCTdD
ODNERjMyMUQwQTU5MEMwMEZFQkNGMyAvKiBTdHJpbmdCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTdDRDRDMjZFMUUyQzBFNkUwMDkyOTQ3MCAvKiBTdHJpbmdDb25jYXRlbmF0ZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk3QzgzREYzNjFEMEE1OTBDMDBGRUJDRjMgLyogU3RyaW5nSGFz
aGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFQzhGNEU3MUZFOUM5MDUwMDU2RkQ4QSAvKiBQ
b2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk3QzgzREYzNzFEMEE1OTBDMDBGRUJDRjMgLyogU3RyaW5nSW1wbC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk3QzgzREYzODFEMEE1OTBDMDBGRUJDRjMgLyogU3RyaW5nT3Bl
cmF0b3JzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERjNBMUQwQTU5MEMwMEZFQkNGMyAv
KiBTdHJpbmdWaWV3LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzI1NSw2ICszMjY2LDcgQEAKIAkJ
CQk5MzI5QUEyOTFERTNGODFFMDAzQUJEMDcgLyogVGV4dEJyZWFrSXRlcmF0b3IuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJRTNERUE4MTExRjBBNTg5MDAwQ0JDMkU4IC8qIFRocmVhZEdyb3VwLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUUzOEEwRDM1MUZENTBDQzMwMEU5OEM4QiAvKiBUaHJlYWRp
bmcuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkVDOEY0RUIxRkU5RjVBRjAwNTZGRDhBIC8qIFBv
aXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUzMTFCRDVFMUVBOTQ5MEUwMDUyNTI4MSAvKiBUaHJlYWRNZXNzYWdl
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJDMjBCODFEQ0Q1NDUwMDA1NDJEOUUgLyogVGlt
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzRTAzQjFEMEE2MDI3MDBGRUJDRjMgLyogVXRp
bGl0aWVzQ29jb2EubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0NvbnN0RXhwclBvaXNvbmVkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9Db25zdEV4cHJQb2lzb25lZC5jcHAJKHJldmlzaW9uIDIyNjIz
OSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NvbnN0RXhwclBvaXNvbmVkLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
CiAjaW5jbHVkZSAiUmVmTG9nZ2VyLmgiCi0jaW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8d3Rm
L1BvaXNvbmVkLmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKSW5kZXg6IFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1BvaXNvbmVkVW5pcXVlUHRyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFVuaXF1ZVB0ci5jcHAJKG5v
bmV4aXN0ZW50KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRVbmlx
dWVQdHIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTM4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisj
aW5jbHVkZSA8d3RmL1BvaXNvbmVkVW5pcXVlUHRyLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKKworbmFtZXNwYWNlIHsKKworY29uc3QgdWludDMyX3QgUG9pc29uQSA9IDB4YWFhYTsK
K2NvbnN0IHVpbnQzMl90IFBvaXNvbkIgPSAweGJiYmI7CisKK3N0cnVjdCBMb2dnZXIgeworICAg
IExvZ2dlcihjb25zdCBjaGFyKiBuYW1lLCBpbnQmIGRlc3RydWN0Q291bnQpCisgICAgICAgIDog
bmFtZSgqbmFtZSkKKyAgICAgICAgLCBkZXN0cnVjdENvdW50KGRlc3RydWN0Q291bnQpCisgICAg
eyB9CisKKyAgICB+TG9nZ2VyKCkgeyArK2Rlc3RydWN0Q291bnQ7IH0KKworICAgIGNvbnN0IGNo
YXImIG5hbWU7CisgICAgaW50JiBkZXN0cnVjdENvdW50OworfTsKKyAgICAKK3N0cnVjdCBEZXJp
dmVkTG9nZ2VyIDogTG9nZ2VyIHsKKyAgICBEZXJpdmVkTG9nZ2VyKGNvbnN0IGNoYXIqIG5hbWUs
IGludCYgZGVzdHJ1Y3RDb3VudCkKKyAgICAgICAgOiBMb2dnZXIobmFtZSwgZGVzdHJ1Y3RDb3Vu
dCkKKyAgICB7IH0KK307CisKK3N0cnVjdCBPdGhlciB7CisgICAgT3RoZXIoY29uc3QgY2hhcios
IGludCYpCisgICAgeyB9Cit9OworCit9IC8vIGFub255bW91cyBuYW1lc3BhY2UKKworVEVTVChX
VEZfUG9pc29uZWRVbmlxdWVQdHIsIEJhc2ljKQoreworICAgIHsKKyAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBlbXB0eTsKKyAgICAgICAgQVNTRVJUX0VRKG51bGxw
dHIsIGVtcHR5LnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgwdSwgZW1wdHkuYml0
cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7Cisg
ICAgICAgIExvZ2dlciogYSA9IG5ldyBMb2dnZXIoImEiLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAg
ICAgIHsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcHRy
KGEpOworICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAg
ICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9F
UShhLCAmKnB0cik7CisgICAgICAgICAgICBBU1NFUlRfRVEoJmEtPm5hbWUsICZwdHItPm5hbWUp
OworCisjaWYgRU5BQkxFKFBPSVNPTikKKyAgICAgICAgICAgIHVpbnRwdHJfdCBwdHJCaXRzOwor
ICAgICAgICAgICAgc3RkOjptZW1jcHkoJnB0ckJpdHMsICZwdHIsIHNpemVvZihwdHJCaXRzKSk7
CisgICAgICAgICAgICBBU1NFUlRfVFJVRShwdHJCaXRzICE9IGJpdHdpc2VfY2FzdDx1aW50cHRy
X3Q+KGEpKTsKKyNpZiBFTkFCTEUoUE9JU09OX0FTU0VSVFMpCisgICAgICAgICAgICBBU1NFUlRf
VFJVRSgoUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPjo6aXNQb2lzb25lZChwdHJC
aXRzKSkpOworI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKFBPSVNPTikKKyAgICAgICAgfQorICAg
ICAgICBBU1NFUlRfRVEoMSwgYURlc3RydWN0Q291bnQpOworCisgICAgICAgIGludCBiRGVzdHJ1
Y3RDb3VudCA9IDA7CisgICAgICAgIERlcml2ZWRMb2dnZXIqIGIgPSBuZXcgRGVyaXZlZExvZ2dl
cigiYiIsIGJEZXN0cnVjdENvdW50KTsKKyAgICAgICAgeworICAgICAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwdHIoYik7CisgICAgICAgICAgICBBU1NFUlRfRVEo
MCwgYkRlc3RydWN0Q291bnQpOworICAgICAgICAgICAgQVNTRVJUX0VRKGIsIHB0ci51bnBvaXNv
bmVkKCkpOworICAgICAgICAgICAgQVNTRVJUX0VRKGIsICYqcHRyKTsKKyAgICAgICAgICAgIEFT
U0VSVF9FUSgmYi0+bmFtZSwgJnB0ci0+bmFtZSk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJU
X0VRKDEsIGJEZXN0cnVjdENvdW50KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGludCBhRGVz
dHJ1Y3RDb3VudCA9IDA7CisgICAgICAgIExvZ2dlciogYSA9IG5ldyBMb2dnZXIoImEiLCBhRGVz
dHJ1Y3RDb3VudCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBv
aXNvbkEsIExvZ2dlcj4gcHRyID0gYTsKKyAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1
Y3RDb3VudCk7CisgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgQVNTRVJUX0VRKDEsIGFEZXN0cnVjdENvdW50KTsKKworICAgICAg
ICBpbnQgYkRlc3RydWN0Q291bnQgPSAwOworICAgICAgICBEZXJpdmVkTG9nZ2VyKiBiID0gbmV3
IERlcml2ZWRMb2dnZXIoImIiLCBiRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgIHsKKyAgICAgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcHRyID0gYjsKKyAgICAgICAg
ICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBBU1NFUlRfRVEo
YiwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUX0VRKDEsIGJE
ZXN0cnVjdENvdW50KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGludCBhRGVzdHJ1Y3RDb3Vu
dCA9IDA7CisgICAgICAgIGNvbnN0IGNoYXIqIGFOYW1lID0gImEiOworICAgICAgICB7CisgICAg
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHB0ciA9IFBvaXNvbmVk
VW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj46OmNyZWF0ZShhTmFtZSwgYURlc3RydWN0Q291bnQp
OworICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAg
IEFTU0VSVF9UUlVFKG51bGxwdHIgIT0gcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgICAgICBB
U1NFUlRfRVEoYU5hbWUsICZwdHItPm5hbWUpOworICAgICAgICB9CisgICAgICAgIEFTU0VSVF9F
USgxLCBhRGVzdHJ1Y3RDb3VudCk7CisKKyAgICAgICAgaW50IGJEZXN0cnVjdENvdW50ID0gMDsK
KyAgICAgICAgY29uc3QgY2hhciogYk5hbWUgPSAiYiI7CisgICAgICAgIHsKKyAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcHRyID0gUG9pc29uZWRVbmlxdWVQ
dHI8UG9pc29uQSwgRGVyaXZlZExvZ2dlcj46OmNyZWF0ZShiTmFtZSwgYkRlc3RydWN0Q291bnQp
OworICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGJEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAg
IEFTU0VSVF9UUlVFKG51bGxwdHIgIT0gcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgICAgICBB
U1NFUlRfRVEoYk5hbWUsICZwdHItPm5hbWUpOworICAgICAgICB9CisgICAgICAgIEFTU0VSVF9F
USgxLCBiRGVzdHJ1Y3RDb3VudCk7CisgICAgfQorCisgICAgeworICAgICAgICBpbnQgYURlc3Ry
dWN0Q291bnQgPSAwOworICAgICAgICBjb25zdCBjaGFyKiBhTmFtZSA9ICJhIjsKKyAgICAgICAg
eworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwdHIgPSBt
YWtlUG9pc29uZWRVbmlxdWU8UG9pc29uQSwgTG9nZ2VyPihhTmFtZSwgYURlc3RydWN0Q291bnQp
OworICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAg
IEFTU0VSVF9UUlVFKG51bGxwdHIgIT0gcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgICAgICBB
U1NFUlRfRVEoYU5hbWUsICZwdHItPm5hbWUpOworICAgICAgICB9CisgICAgICAgIEFTU0VSVF9F
USgxLCBhRGVzdHJ1Y3RDb3VudCk7CisKKyAgICAgICAgaW50IGJEZXN0cnVjdENvdW50ID0gMDsK
KyAgICAgICAgY29uc3QgY2hhciogYk5hbWUgPSAiYiI7CisgICAgICAgIHsKKyAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcHRyID0gbWFrZVBvaXNvbmVkVW5p
cXVlPFBvaXNvbkEsIERlcml2ZWRMb2dnZXI+KGJOYW1lLCBiRGVzdHJ1Y3RDb3VudCk7CisgICAg
ICAgICAgICBBU1NFUlRfRVEoMCwgYkRlc3RydWN0Q291bnQpOworICAgICAgICAgICAgQVNTRVJU
X1RSVUUobnVsbHB0ciAhPSBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9F
UShiTmFtZSwgJnB0ci0+bmFtZSk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUX0VRKDEsIGJE
ZXN0cnVjdENvdW50KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGludCBhRGVzdHJ1Y3RDb3Vu
dCA9IDA7CisgICAgICAgIGludCBiRGVzdHJ1Y3RDb3VudCA9IDA7CisgICAgICAgIExvZ2dlciog
YSA9IG5ldyBMb2dnZXIoImEiLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgIExvZ2dlciogYiA9
IG5ldyBMb2dnZXIoImIiLCBiRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgIHsKKyAgICAgICAgICAg
IFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDEgPSBhOworICAgICAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEpOworICAg
ICAgICAgICAgQVNTRVJUX0VRKGFEZXN0cnVjdENvdW50LCAwKTsKKyAgICAgICAgICAgIEFTU0VS
VF9FUShudWxscHRyLCBwMS51bnBvaXNvbmVkKCkpOworICAgICAgICAgICAgQVNTRVJUX0VRKDB1
LCBwMS5iaXRzKCkpOworICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29uZWQoKSk7
CisKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDMgPSBi
OworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgTG9nZ2VyPiBwNCA9IFdU
Rk1vdmUocDMpOworICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGJEZXN0cnVjdENvdW50KTsKKyAg
ICAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICAg
ICAgQVNTRVJUX0VRKDB1LCBwMy5iaXRzKCkpOworICAgICAgICAgICAgQVNTRVJUX0VRKGIsIHA0
LnVucG9pc29uZWQoKSk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUX0VRKDEsIGFEZXN0cnVj
dENvdW50KTsKKyAgICAgICAgQVNTRVJUX0VRKDEsIGJEZXN0cnVjdENvdW50KTsKKyAgICB9CisK
KyAgICB7CisgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CisgICAgICAgIGludCBiRGVz
dHJ1Y3RDb3VudCA9IDA7CisgICAgICAgIExvZ2dlciogYSA9IG5ldyBMb2dnZXIoImEiLCBhRGVz
dHJ1Y3RDb3VudCk7CisgICAgICAgIExvZ2dlciogYiA9IG5ldyBMb2dnZXIoImIiLCBiRGVzdHJ1
Y3RDb3VudCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNv
bkEsIExvZ2dlcj4gcDEgPSBhOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29u
QSwgTG9nZ2VyPiBwMihXVEZNb3ZlKHAxKSk7CisgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURl
c3RydWN0Q291bnQpOworICAgICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAxLnVucG9pc29u
ZWQoKSk7CisgICAgICAgICAgICBBU1NFUlRfRVEoMHUsIHAxLmJpdHMoKSk7CisgICAgICAgICAg
ICBBU1NFUlRfRVEoYSwgcDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMyA9IGI7CisgICAgICAgICAgICBQb2lzb25lZFVu
aXF1ZVB0cjxQb2lzb25CLCBMb2dnZXI+IHA0KFdURk1vdmUocDMpKTsKKyAgICAgICAgICAgIEFT
U0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBBU1NFUlRfRVEobnVsbHB0
ciwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9FUSgwdSwgcDMuYml0cygp
KTsKKyAgICAgICAgICAgIEFTU0VSVF9FUShiLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAgICB9
CisgICAgICAgIEFTU0VSVF9FUSgxLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgIEFTU0VSVF9F
USgxLCBiRGVzdHJ1Y3RDb3VudCk7CisgICAgfQorCisgICAgeworICAgICAgICBpbnQgYURlc3Ry
dWN0Q291bnQgPSAwOworICAgICAgICBpbnQgYkRlc3RydWN0Q291bnQgPSAwOworICAgICAgICBE
ZXJpdmVkTG9nZ2VyKiBhID0gbmV3IERlcml2ZWRMb2dnZXIoImEiLCBhRGVzdHJ1Y3RDb3VudCk7
CisgICAgICAgIERlcml2ZWRMb2dnZXIqIGIgPSBuZXcgRGVyaXZlZExvZ2dlcigiYiIsIGJEZXN0
cnVjdENvdW50KTsKKyAgICAgICAgeworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9p
c29uQSwgTG9nZ2VyPiBwMSA9IGE7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lz
b25BLCBMb2dnZXI+IHAyID0gV1RGTW92ZShwMSk7CisgICAgICAgICAgICBBU1NFUlRfRVEoYURl
c3RydWN0Q291bnQsIDApOworICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAxLnVucG9pc29uZWQo
KSk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDEuYml0cygpKTsKKyAgICAgICAgICAgIEFT
U0VSVF9FUShhLCBwMi51bnBvaXNvbmVkKCkpOworCisgICAgICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxQb2lzb25BLCBMb2dnZXI+IHAzID0gYjsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPFBvaXNvbkIsIExvZ2dlcj4gcDQgPSBXVEZNb3ZlKHAzKTsKKyAgICAgICAgICAgIEFTU0VS
VF9FUShiRGVzdHJ1Y3RDb3VudCwgMCk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDMudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMy5iaXRzKCkpOworICAgICAg
ICAgICAgQVNTRVJUX0VRKGIsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIH0KKyAgICAgICAg
QVNTRVJUX0VRKDEsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgQVNTRVJUX0VRKDEsIGJEZXN0
cnVjdENvdW50KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9
IDA7CisgICAgICAgIGludCBiRGVzdHJ1Y3RDb3VudCA9IDA7CisgICAgICAgIERlcml2ZWRMb2dn
ZXIqIGEgPSBuZXcgRGVyaXZlZExvZ2dlcigiYSIsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAg
RGVyaXZlZExvZ2dlciogYiA9IG5ldyBEZXJpdmVkTG9nZ2VyKCJiIiwgYkRlc3RydWN0Q291bnQp
OworICAgICAgICB7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dn
ZXI+IHAxID0gYTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dl
cj4gcDIoV1RGTW92ZShwMSkpOworICAgICAgICAgICAgQVNTRVJUX0VRKGFEZXN0cnVjdENvdW50
LCAwKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMS51bnBvaXNvbmVkKCkpOworICAgICAg
ICAgICAgQVNTRVJUX1RSVUUoIXAxLmJpdHMoKSk7CisgICAgICAgICAgICBBU1NFUlRfRVEoYSwg
cDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29u
QSwgTG9nZ2VyPiBwMyA9IGI7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25C
LCBMb2dnZXI+IHA0KFdURk1vdmUocDMpKTsKKyAgICAgICAgICAgIEFTU0VSVF9FUShiRGVzdHJ1
Y3RDb3VudCwgMCk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDMudW5wb2lzb25lZCgpKTsK
KyAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMy5iaXRzKCkpOworICAgICAgICAgICAgQVNTRVJU
X0VRKGIsIHA0LnVucG9pc29uZWQoKSk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUX0VRKDEs
IGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgQVNTRVJUX0VRKDEsIGJEZXN0cnVjdENvdW50KTsK
KyAgICB9CisKKyAgICB7CisgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CisgICAgICAg
IExvZ2dlciogYSA9IG5ldyBMb2dnZXIoImEiLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgIHsK
KyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcHRyKGEpOwor
ICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICAgICAg
cHRyLmNsZWFyKCk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRSghcHRyLnVucG9pc29uZWQoKSk7
CisgICAgICAgICAgICBBU1NFUlRfVFJVRSghcHRyLmJpdHMoKSk7CisgICAgICAgICAgICBBU1NF
UlRfRVEoMSwgYURlc3RydWN0Q291bnQpOworICAgICAgICB9CisgICAgICAgIEFTU0VSVF9FUSgx
LCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgfQorfQorCitURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0
ciwgQXNzaWdubWVudCkKK3sKKyAgICB7CisgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7
CisgICAgICAgIGludCBiRGVzdHJ1Y3RDb3VudCA9IDA7CisgICAgICAgIExvZ2dlciogYSA9IG5l
dyBMb2dnZXIoImEiLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgIExvZ2dlciogYiA9IG5ldyBM
b2dnZXIoImIiLCBiRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcHRyKGEpOworICAgICAgICAgICAgQVNTRVJU
X0VRKDAsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1
Y3RDb3VudCk7CisgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7Cisg
ICAgICAgICAgICBwdHIgPSBiOworICAgICAgICAgICAgQVNTRVJUX0VRKDEsIGFEZXN0cnVjdENv
dW50KTsKKyAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3VudCk7CisgICAgICAg
ICAgICBBU1NFUlRfRVEoYiwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIH0KKyAgICAgICAg
QVNTRVJUX0VRKDEsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgQVNTRVJUX0VRKDEsIGJEZXN0
cnVjdENvdW50KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9
IDA7CisgICAgICAgIExvZ2dlciogYSA9IG5ldyBMb2dnZXIoImEiLCBhRGVzdHJ1Y3RDb3VudCk7
CisgICAgICAgIHsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dl
cj4gcHRyKGEpOworICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKKyAg
ICAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgICAgIHB0
ciA9IG51bGxwdHI7CisgICAgICAgICAgICBBU1NFUlRfRVEoMSwgYURlc3RydWN0Q291bnQpOwor
ICAgICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHB0ci51bnBvaXNvbmVkKCkpOworICAgICAg
ICB9CisgICAgICAgIEFTU0VSVF9FUSgxLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgfQorCisgICAg
eworICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOworICAgICAgICBpbnQgYkRlc3RydWN0
Q291bnQgPSAwOworICAgICAgICBpbnQgY0Rlc3RydWN0Q291bnQgPSAwOworICAgICAgICBpbnQg
ZERlc3RydWN0Q291bnQgPSAwOworICAgICAgICBMb2dnZXIqIGEgPSBuZXcgTG9nZ2VyKCJhIiwg
YURlc3RydWN0Q291bnQpOworICAgICAgICBMb2dnZXIqIGIgPSBuZXcgTG9nZ2VyKCJiIiwgYkRl
c3RydWN0Q291bnQpOworICAgICAgICBMb2dnZXIqIGMgPSBuZXcgTG9nZ2VyKCJjIiwgY0Rlc3Ry
dWN0Q291bnQpOworICAgICAgICBMb2dnZXIqIGQgPSBuZXcgTG9nZ2VyKCJkIiwgZERlc3RydWN0
Q291bnQpOworICAgICAgICB7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25B
LCBMb2dnZXI+IHAxKGEpOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwg
TG9nZ2VyPiBwMihiKTsKKyAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7
CisgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYkRlc3RydWN0Q291bnQpOworICAgICAgICAgICAg
QVNTRVJUX0VRKGEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgICAgICBBU1NFUlRfRVEoYiwg
cDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgICAgIHAxID0gV1RGTW92ZShwMik7CisgICAgICAg
ICAgICBBU1NFUlRfRVEoMSwgYURlc3RydWN0Q291bnQpOworICAgICAgICAgICAgQVNTRVJUX0VR
KDAsIGJEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIEFTU0VSVF9FUShiLCBwMS51bnBvaXNv
bmVkKCkpOworICAgICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAyLnVucG9pc29uZWQoKSk7
CisKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDMoYyk7
CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25CLCBMb2dnZXI+IHA0KGQpOwor
ICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGNEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIEFT
U0VSVF9FUSgwLCBkRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBBU1NFUlRfRVEoYywgcDMu
dW5wb2lzb25lZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9FUShkLCBwNC51bnBvaXNvbmVkKCkp
OworICAgICAgICAgICAgcDMgPSBXVEZNb3ZlKHA0KTsKKyAgICAgICAgICAgIEFTU0VSVF9FUSgx
LCBjRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBBU1NFUlRfRVEoMCwgZERlc3RydWN0Q291
bnQpOworICAgICAgICAgICAgQVNTRVJUX0VRKGQsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAg
ICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAgfQorICAg
ICAgICBBU1NFUlRfRVEoMSwgYURlc3RydWN0Q291bnQpOworICAgICAgICBBU1NFUlRfRVEoMSwg
YkRlc3RydWN0Q291bnQpOworICAgICAgICBBU1NFUlRfRVEoMSwgY0Rlc3RydWN0Q291bnQpOwor
ICAgICAgICBBU1NFUlRfRVEoMSwgZERlc3RydWN0Q291bnQpOworICAgIH0KKworICAgIHsKKyAg
ICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKKyAgICAgICAgaW50IGJEZXN0cnVjdENvdW50
ID0gMDsKKyAgICAgICAgRGVyaXZlZExvZ2dlciogYSA9IG5ldyBEZXJpdmVkTG9nZ2VyKCJhIiwg
YURlc3RydWN0Q291bnQpOworICAgICAgICBEZXJpdmVkTG9nZ2VyKiBiID0gbmV3IERlcml2ZWRM
b2dnZXIoImIiLCBiRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcHRyKGEpOworICAgICAgICAgICAgQVNTRVJU
X0VRKDAsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1
Y3RDb3VudCk7CisgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7Cisg
ICAgICAgICAgICBwdHIgPSBiOworICAgICAgICAgICAgQVNTRVJUX0VRKDEsIGFEZXN0cnVjdENv
dW50KTsKKyAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3VudCk7CisgICAgICAg
ICAgICBBU1NFUlRfRVEoYiwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIH0KKyAgICAgICAg
QVNTRVJUX0VRKDEsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgQVNTRVJUX0VRKDEsIGJEZXN0
cnVjdENvdW50KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9
IDA7CisgICAgICAgIGludCBiRGVzdHJ1Y3RDb3VudCA9IDA7CisgICAgICAgIGludCBjRGVzdHJ1
Y3RDb3VudCA9IDA7CisgICAgICAgIGludCBkRGVzdHJ1Y3RDb3VudCA9IDA7CisgICAgICAgIERl
cml2ZWRMb2dnZXIqIGEgPSBuZXcgRGVyaXZlZExvZ2dlcigiYSIsIGFEZXN0cnVjdENvdW50KTsK
KyAgICAgICAgRGVyaXZlZExvZ2dlciogYiA9IG5ldyBEZXJpdmVkTG9nZ2VyKCJiIiwgYkRlc3Ry
dWN0Q291bnQpOworICAgICAgICBEZXJpdmVkTG9nZ2VyKiBjID0gbmV3IERlcml2ZWRMb2dnZXIo
ImMiLCBjRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgIERlcml2ZWRMb2dnZXIqIGQgPSBuZXcgRGVy
aXZlZExvZ2dlcigiZCIsIGREZXN0cnVjdENvdW50KTsKKyAgICAgICAgeworICAgICAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMShhKTsKKyAgICAgICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIERlcml2ZWRMb2dnZXI+IHAyKGIpOworICAgICAgICAg
ICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIEFTU0VSVF9FUSgw
LCBiRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDEudW5wb2lzb25l
ZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9FUShiLCBwMi51bnBvaXNvbmVkKCkpOworICAgICAg
ICAgICAgcDEgPSBXVEZNb3ZlKHAyKTsKKyAgICAgICAgICAgIEFTU0VSVF9FUSgxLCBhRGVzdHJ1
Y3RDb3VudCk7CisgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYkRlc3RydWN0Q291bnQpOworICAg
ICAgICAgICAgQVNTRVJUX0VRKGIsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgICAgICBBU1NF
UlRfRVEobnVsbHB0ciwgcDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICAgICAgUG9pc29uZWRV
bmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMyhjKTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5p
cXVlUHRyPFBvaXNvbkIsIERlcml2ZWRMb2dnZXI+IHA0KGQpOworICAgICAgICAgICAgQVNTRVJU
X0VRKDAsIGNEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBkRGVzdHJ1
Y3RDb3VudCk7CisgICAgICAgICAgICBBU1NFUlRfRVEoYywgcDMudW5wb2lzb25lZCgpKTsKKyAg
ICAgICAgICAgIEFTU0VSVF9FUShkLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAgICAgICAgcDMg
PSBXVEZNb3ZlKHA0KTsKKyAgICAgICAgICAgIEFTU0VSVF9FUSgxLCBjRGVzdHJ1Y3RDb3VudCk7
CisgICAgICAgICAgICBBU1NFUlRfRVEoMCwgZERlc3RydWN0Q291bnQpOworICAgICAgICAgICAg
QVNTRVJUX0VRKGQsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgICAgICBBU1NFUlRfRVEobnVs
bHB0ciwgcDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlRfRVEoMSwg
YURlc3RydWN0Q291bnQpOworICAgICAgICBBU1NFUlRfRVEoMSwgYkRlc3RydWN0Q291bnQpOwor
ICAgICAgICBBU1NFUlRfRVEoMSwgY0Rlc3RydWN0Q291bnQpOworICAgICAgICBBU1NFUlRfRVEo
MSwgZERlc3RydWN0Q291bnQpOworICAgIH0KKworICAgIHsKKyAgICAgICAgaW50IGFEZXN0cnVj
dENvdW50ID0gMDsKKyAgICAgICAgTG9nZ2VyKiBhID0gbmV3IExvZ2dlcigiYSIsIGFEZXN0cnVj
dENvdW50KTsKKyAgICAgICAgeworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29u
QSwgTG9nZ2VyPiBwdHIoYSk7CisgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291
bnQpOworICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgICAg
ICAgICAgcHRyID0gYTsKKyAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7
CisgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIH0K
KyAgICAgICAgQVNTRVJUX0VRKDEsIGFEZXN0cnVjdENvdW50KTsKKyAgICB9CisKKyAgICB7Cisg
ICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CisgICAgICAgIExvZ2dlciogYSA9IG5ldyBM
b2dnZXIoImEiLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIFBvaXNv
bmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcHRyKGEpOworICAgICAgICAgICAgQVNTRVJU
X0VRKDAsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5w
b2lzb25lZCgpKTsKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3Rp
YyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bmtub3duLXByYWdt
YXMiCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdzZWxmLW1vdmUiCisjZW5k
aWYKKyAgICAgICAgICAgIHB0ciA9IFdURk1vdmUocHRyKTsKKyNpZiBDT01QSUxFUihDTEFORykK
KyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKyNlbmRpZgorICAgICAgICAgICAgQVNTRVJU
X0VRKDAsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5w
b2lzb25lZCgpKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlRfRVEoMSwgYURlc3RydWN0Q291
bnQpOworICAgIH0KK30KKworVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHIsIFN3YXApCit7Cisg
ICAgeworICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOworICAgICAgICBpbnQgYkRlc3Ry
dWN0Q291bnQgPSAwOworICAgICAgICBMb2dnZXIqIGEgPSBuZXcgTG9nZ2VyKCJhIiwgYURlc3Ry
dWN0Q291bnQpOworICAgICAgICBMb2dnZXIqIGIgPSBuZXcgTG9nZ2VyKCJiIiwgYkRlc3RydWN0
Q291bnQpOworICAgICAgICB7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25B
LCBMb2dnZXI+IHAxID0gYTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEs
IExvZ2dlcj4gcDI7CisgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDEudW5wb2lzb25lZCgpKTsK
KyAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMi5iaXRzKCkpOworICAgICAgICAgICAgQVNTRVJU
X1RSVUUoIXAyLnVucG9pc29uZWQoKSk7CisgICAgICAgICAgICBwMi5zd2FwKHAxKTsKKyAgICAg
ICAgICAgIEFTU0VSVF9FUShhRGVzdHJ1Y3RDb3VudCwgMCk7CisgICAgICAgICAgICBBU1NFUlRf
VFJVRSghcDEuYml0cygpKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMS51bnBvaXNvbmVk
KCkpOworICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4gcDMgPSBiOworICAgICAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgTG9nZ2VyPiBwNDsKKyAgICAgICAgICAg
IEFTU0VSVF9FUShiLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICAgICAgQVNTRVJUX1RSVUUo
IXA0LmJpdHMoKSk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDQudW5wb2lzb25lZCgpKTsK
KyAgICAgICAgICAgIHA0LnN3YXAocDMpOworICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGJEZXN0
cnVjdENvdW50KTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMy5iaXRzKCkpOworICAgICAg
ICAgICAgQVNTRVJUX1RSVUUoIXAzLnVucG9pc29uZWQoKSk7CisgICAgICAgICAgICBBU1NFUlRf
RVEoYiwgcDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlRfRVEoMSwg
YURlc3RydWN0Q291bnQpOworICAgICAgICBBU1NFUlRfRVEoMSwgYkRlc3RydWN0Q291bnQpOwor
ICAgIH0KKworICAgIHsKKyAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKKyAgICAgICAg
aW50IGJEZXN0cnVjdENvdW50ID0gMDsKKyAgICAgICAgTG9nZ2VyKiBhID0gbmV3IExvZ2dlcigi
YSIsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgTG9nZ2VyKiBiID0gbmV3IExvZ2dlcigiYiIs
IGJEZXN0cnVjdENvdW50KTsKKyAgICAgICAgeworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8UG9pc29uQSwgTG9nZ2VyPiBwMSA9IGE7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxQb2lzb25BLCBMb2dnZXI+IHAyOworICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAxLnVucG9p
c29uZWQoKSk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDIuYml0cygpKTsKKyAgICAgICAg
ICAgIEFTU0VSVF9UUlVFKCFwMi51bnBvaXNvbmVkKCkpOworICAgICAgICAgICAgc3dhcChwMSwg
cDIpOworICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAg
ICAgIEFTU0VSVF9UUlVFKCFwMS5iaXRzKCkpOworICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAx
LnVucG9pc29uZWQoKSk7CisgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDIudW5wb2lzb25lZCgp
KTsKKworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyPiBwMyA9
IGI7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25CLCBMb2dnZXI+IHA0Owor
ICAgICAgICAgICAgQVNTRVJUX0VRKGIsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgICAgICBB
U1NFUlRfVFJVRSghcDQuYml0cygpKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwNC51bnBv
aXNvbmVkKCkpOworICAgICAgICAgICAgc3dhcChwMywgcDQpOworICAgICAgICAgICAgQVNTRVJU
X0VRKDAsIGJEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMy5iaXRz
KCkpOworICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAzLnVucG9pc29uZWQoKSk7CisgICAgICAg
ICAgICBBU1NFUlRfRVEoYiwgcDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAgfQorICAgICAgICBB
U1NFUlRfRVEoMSwgYURlc3RydWN0Q291bnQpOworICAgICAgICBBU1NFUlRfRVEoMSwgYkRlc3Ry
dWN0Q291bnQpOworICAgIH0KK30KKworc3RhdGljIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEs
IExvZ2dlcj4gcG9pc29uZWRQdHJGb28oTG9nZ2VyKiBsb2dnZXIpCit7CisgICAgcmV0dXJuIFBv
aXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcj4obG9nZ2VyKTsKK30KKworVEVTVChXVEZf
UG9pc29uZWRVbmlxdWVQdHIsIFJldHVyblZhbHVlKQoreworICAgIHsKKyAgICAgICAgaW50IGFE
ZXN0cnVjdENvdW50ID0gMDsKKyAgICAgICAgTG9nZ2VyKiBhID0gbmV3IExvZ2dlcigiYSIsIGFE
ZXN0cnVjdENvdW50KTsKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byBwdHIgPSBwb2lzb25l
ZFB0ckZvbyhhKTsKKyAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7Cisg
ICAgICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgICAgICBB
U1NFUlRfRVEoYSwgJipwdHIpOworICAgICAgICAgICAgQVNTRVJUX0VRKCZhLT5uYW1lLCAmcHRy
LT5uYW1lKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlRfRVEoMSwgYURlc3RydWN0Q291bnQp
OworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCkluZGV4OiBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxs
eURlc3RydWN0aWJsZUFycmF5cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbHlEZXN0cnVjdGlibGVB
cnJheXMuY3BwCShub25leGlzdGVudCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1BvaXNvbmVkVW5pcXVlUHRyRm9yTm9uVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgPHd0
Zi9Qb2lzb25lZFVuaXF1ZVB0ci5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK25h
bWVzcGFjZSB7CisKK2NvbnN0IHVpbnQzMl90IFBvaXNvbkEgPSAweGFhYWE7Citjb25zdCB1aW50
MzJfdCBQb2lzb25CID0gMHhiYmJiOworCitzdHJ1Y3QgTG9nZ2VyIHsKKyAgICBMb2dnZXIoKSB7
IH0KKyAgICBMb2dnZXIoY29uc3QgY2hhciogbmFtZSwgaW50JiBkZXN0cnVjdENvdW50KQorICAg
ICAgICA6IG5hbWUobmFtZSkKKyAgICAgICAgLCBkZXN0cnVjdENvdW50KCZkZXN0cnVjdENvdW50
KQorICAgIHsgfQorCisgICAgfkxvZ2dlcigpIHsgKysoKmRlc3RydWN0Q291bnQpOyB9CisKKyAg
ICBjb25zdCBjaGFyKiBuYW1lOworICAgIGludCogZGVzdHJ1Y3RDb3VudDsKK307CisgICAgCit0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CitUKiBtYWtlQXJyYXko
c2l6ZV90IGNvdW50LCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCit7CisgICAgVCogcmVzdWx0
ID0gbmV3IFRbY291bnRdOworICAgIHdoaWxlIChjb3VudC0tKQorICAgICAgICBuZXcgKHJlc3Vs
dCArIGNvdW50KSBUKHN0ZDo6Zm9yd2FyZDxBcmd1bWVudHM+KGFyZ3VtZW50cykuLi4pOworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK2NvbnN0IGludCBhcnJheVNpemUgPSA1OworCit9IC8vIGFu
b255bW91cyBuYW1lc3BhY2UKKworVEVTVChXVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2
aWFsbHlEZXN0cnVjdGlibGVBcnJheXMsIEJhc2ljKQoreworICAgIHsKKyAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IGVtcHR5OworICAgICAgICBBU1NFUlRfRVEo
bnVsbHB0ciwgZW1wdHkudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKDB1LCBlbXB0
eS5iaXRzKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0g
MDsKKyAgICAgICAgTG9nZ2VyKiBhID0gbWFrZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiYSIs
IGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgeworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQ
dHI8UG9pc29uQSwgTG9nZ2VyW10+IHB0cihhKTsKKyAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBh
RGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQo
KSk7CisgICAgICAgICAgICBBU1NFUlRfRVEoYSwgJipwdHIpOworICAgICAgICAgICAgZm9yIChh
dXRvIGkgPSAwOyBpIDwgYXJyYXlTaXplOyArK2kpCisgICAgICAgICAgICAgICAgQVNTRVJUX0VR
KGFbaV0ubmFtZSwgcHRyW2ldLm5hbWUpOworCisjaWYgRU5BQkxFKFBPSVNPTikKKyAgICAgICAg
ICAgIHVpbnRwdHJfdCBwdHJCaXRzOworICAgICAgICAgICAgc3RkOjptZW1jcHkoJnB0ckJpdHMs
ICZwdHIsIHNpemVvZihwdHJCaXRzKSk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRShwdHJCaXRz
ICE9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGEpKTsKKyNpZiBFTkFCTEUoUE9JU09OX0FTU0VS
VFMpCisgICAgICAgICAgICBBU1NFUlRfVFJVRSgoUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwg
TG9nZ2VyW10+Ojppc1BvaXNvbmVkKHB0ckJpdHMpKSk7CisjZW5kaWYKKyNlbmRpZiAvLyBFTkFC
TEUoUE9JU09OKQorICAgICAgICB9CisgICAgICAgIEFTU0VSVF9FUShhcnJheVNpemUsIGFEZXN0
cnVjdENvdW50KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9
IDA7CisgICAgICAgIExvZ2dlciogYSA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImEi
LCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwdHIgPSBhOworICAgICAgICAgICAgQVNTRVJUX0VRKDAs
IGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25l
ZCgpKTsKKyAgICAgICAgICAgIGZvciAoYXV0byBpID0gMDsgaSA8IGFycmF5U2l6ZTsgKytpKQor
ICAgICAgICAgICAgICAgIEFTU0VSVF9FUShhW2ldLm5hbWUsIHB0cltpXS5uYW1lKTsKKyAgICAg
ICAgfQorICAgICAgICBBU1NFUlRfRVEoYXJyYXlTaXplLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAg
fQorCisgICAgeworICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOworICAgICAgICBjb25z
dCBjaGFyKiBhTmFtZSA9ICJhIjsKKyAgICAgICAgeworICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHB0ciA9IFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEs
IExvZ2dlcltdPjo6Y3JlYXRlKGFycmF5U2l6ZSwgYU5hbWUsIGFEZXN0cnVjdENvdW50KTsKKyAg
ICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBBU1NF
UlRfVFJVRShudWxscHRyICE9IHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICAgICAgZm9yIChh
dXRvIGkgPSAwOyBpIDwgYXJyYXlTaXplOyArK2kpCisgICAgICAgICAgICAgICAgQVNTRVJUX0VR
KGFOYW1lLCBwdHJbaV0ubmFtZSk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUX0VRKGFycmF5
U2l6ZSwgYURlc3RydWN0Q291bnQpOworICAgIH0KKworICAgIHsKKyAgICAgICAgaW50IGFEZXN0
cnVjdENvdW50ID0gMDsKKyAgICAgICAgY29uc3QgY2hhciogYU5hbWUgPSAiYSI7CisgICAgICAg
IHsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwdHIg
PSBtYWtlUG9pc29uZWRVbmlxdWU8UG9pc29uQSwgTG9nZ2VyW10+KGFycmF5U2l6ZSwgYU5hbWUs
IGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3Vu
dCk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRShudWxscHRyICE9IHB0ci51bnBvaXNvbmVkKCkp
OworICAgICAgICAgICAgZm9yIChhdXRvIGkgPSAwOyBpIDwgYXJyYXlTaXplOyArK2kpCisgICAg
ICAgICAgICAgICAgQVNTRVJUX0VRKGFOYW1lLCBwdHJbaV0ubmFtZSk7CisgICAgICAgIH0KKyAg
ICAgICAgQVNTRVJUX0VRKGFycmF5U2l6ZSwgYURlc3RydWN0Q291bnQpOworICAgIH0KKworICAg
IHsKKyAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKKyAgICAgICAgY29uc3QgY2hhciog
YU5hbWUgPSAiYSI7CisgICAgICAgIHsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBv
aXNvbkEsIExvZ2dlcltdPiBwdHIgPSBtYWtlUG9pc29uZWRVbmlxdWU8UG9pc29uQSwgTG9nZ2Vy
W10+KGFycmF5U2l6ZSwgYU5hbWUsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIEFTU0VS
VF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRShudWxscHRy
ICE9IHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICAgICAgZm9yIChhdXRvIGkgPSAwOyBpIDwg
YXJyYXlTaXplOyArK2kpCisgICAgICAgICAgICAgICAgQVNTRVJUX0VRKGFOYW1lLCBwdHJbaV0u
bmFtZSk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUX0VRKGFycmF5U2l6ZSwgYURlc3RydWN0
Q291bnQpOworICAgIH0KKworICAgIHsKKyAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsK
KyAgICAgICAgaW50IGJEZXN0cnVjdENvdW50ID0gMDsKKyAgICAgICAgTG9nZ2VyKiBhID0gbWFr
ZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiYSIsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAg
TG9nZ2VyKiBiID0gbWFrZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiYiIsIGJEZXN0cnVjdENv
dW50KTsKKyAgICAgICAgeworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwg
TG9nZ2VyW10+IHAxID0gYTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEs
IExvZ2dlcltdPiBwMiA9IFdURk1vdmUocDEpOworICAgICAgICAgICAgQVNTRVJUX0VRKGFEZXN0
cnVjdENvdW50LCAwKTsKKyAgICAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwMS51bnBvaXNv
bmVkKCkpOworICAgICAgICAgICAgQVNTRVJUX0VRKDB1LCBwMS5iaXRzKCkpOworICAgICAgICAg
ICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMyA9IGI7CisgICAgICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxQb2lzb25CLCBMb2dnZXJbXT4gcDQgPSBXVEZNb3ZlKHAzKTsKKyAgICAgICAg
ICAgIEFTU0VSVF9FUSgwLCBiRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBBU1NFUlRfRVEo
bnVsbHB0ciwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9FUSgwdSwgcDMu
Yml0cygpKTsKKyAgICAgICAgICAgIEFTU0VSVF9FUShiLCBwNC51bnBvaXNvbmVkKCkpOworICAg
ICAgICB9CisgICAgICAgIEFTU0VSVF9FUShhcnJheVNpemUsIGFEZXN0cnVjdENvdW50KTsKKyAg
ICAgICAgQVNTRVJUX0VRKGFycmF5U2l6ZSwgYkRlc3RydWN0Q291bnQpOworICAgIH0KKworICAg
IHsKKyAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKKyAgICAgICAgaW50IGJEZXN0cnVj
dENvdW50ID0gMDsKKyAgICAgICAgTG9nZ2VyKiBhID0gbWFrZUFycmF5PExvZ2dlcj4oYXJyYXlT
aXplLCAiYSIsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgTG9nZ2VyKiBiID0gbWFrZUFycmF5
PExvZ2dlcj4oYXJyYXlTaXplLCAiYiIsIGJEZXN0cnVjdENvdW50KTsKKyAgICAgICAgeworICAg
ICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAxID0gYTsKKyAg
ICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMihXVEZNb3Zl
KHAxKSk7CisgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQpOworICAgICAg
ICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgICAgICBB
U1NFUlRfRVEoMHUsIHAxLmJpdHMoKSk7CisgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcDIudW5w
b2lzb25lZCgpKTsKKworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9n
Z2VyW10+IHAzID0gYjsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIExv
Z2dlcltdPiBwNChXVEZNb3ZlKHAzKSk7CisgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYkRlc3Ry
dWN0Q291bnQpOworICAgICAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAzLnVucG9pc29uZWQo
KSk7CisgICAgICAgICAgICBBU1NFUlRfRVEoMHUsIHAzLmJpdHMoKSk7CisgICAgICAgICAgICBB
U1NFUlRfRVEoYiwgcDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlRf
RVEoYXJyYXlTaXplLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgIEFTU0VSVF9FUShhcnJheVNp
emUsIGJEZXN0cnVjdENvdW50KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGludCBhRGVzdHJ1
Y3RDb3VudCA9IDA7CisgICAgICAgIGludCBiRGVzdHJ1Y3RDb3VudCA9IDA7CisgICAgICAgIExv
Z2dlciogYSA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RDb3Vu
dCk7CisgICAgICAgIExvZ2dlciogYiA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImIi
LCBiRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVl
UHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMSA9IGE7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1
ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDIgPSBXVEZNb3ZlKHAxKTsKKyAgICAgICAgICAgIEFT
U0VSVF9FUShhRGVzdHJ1Y3RDb3VudCwgMCk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDEu
dW5wb2lzb25lZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMS5iaXRzKCkpOworICAg
ICAgICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29uZWQoKSk7CisKKyAgICAgICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMyA9IGI7CisgICAgICAgICAgICBQ
b2lzb25lZFVuaXF1ZVB0cjxQb2lzb25CLCBMb2dnZXJbXT4gcDQgPSBXVEZNb3ZlKHAzKTsKKyAg
ICAgICAgICAgIEFTU0VSVF9FUShiRGVzdHJ1Y3RDb3VudCwgMCk7CisgICAgICAgICAgICBBU1NF
UlRfVFJVRSghcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMy5i
aXRzKCkpOworICAgICAgICAgICAgQVNTRVJUX0VRKGIsIHA0LnVucG9pc29uZWQoKSk7CisgICAg
ICAgIH0KKyAgICAgICAgQVNTRVJUX0VRKGFycmF5U2l6ZSwgYURlc3RydWN0Q291bnQpOworICAg
ICAgICBBU1NFUlRfRVEoYXJyYXlTaXplLCBiRGVzdHJ1Y3RDb3VudCk7CisgICAgfQorCisgICAg
eworICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOworICAgICAgICBpbnQgYkRlc3RydWN0
Q291bnQgPSAwOworICAgICAgICBMb2dnZXIqIGEgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNp
emUsICJhIiwgYURlc3RydWN0Q291bnQpOworICAgICAgICBMb2dnZXIqIGIgPSBtYWtlQXJyYXk8
TG9nZ2VyPihhcnJheVNpemUsICJiIiwgYkRlc3RydWN0Q291bnQpOworICAgICAgICB7CisgICAg
ICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDEgPSBhOworICAg
ICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAyKFdURk1vdmUo
cDEpKTsKKyAgICAgICAgICAgIEFTU0VSVF9FUShhRGVzdHJ1Y3RDb3VudCwgMCk7CisgICAgICAg
ICAgICBBU1NFUlRfVFJVRSghcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9U
UlVFKCFwMS5iaXRzKCkpOworICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29uZWQo
KSk7CisKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBw
MyA9IGI7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25CLCBMb2dnZXJbXT4g
cDQoV1RGTW92ZShwMykpOworICAgICAgICAgICAgQVNTRVJUX0VRKGJEZXN0cnVjdENvdW50LCAw
KTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMy51bnBvaXNvbmVkKCkpOworICAgICAgICAg
ICAgQVNTRVJUX1RSVUUoIXAzLmJpdHMoKSk7CisgICAgICAgICAgICBBU1NFUlRfRVEoYiwgcDQu
dW5wb2lzb25lZCgpKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlRfRVEoYXJyYXlTaXplLCBh
RGVzdHJ1Y3RDb3VudCk7CisgICAgICAgIEFTU0VSVF9FUShhcnJheVNpemUsIGJEZXN0cnVjdENv
dW50KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7Cisg
ICAgICAgIExvZ2dlciogYSA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVz
dHJ1Y3RDb3VudCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBv
aXNvbkEsIExvZ2dlcltdPiBwdHIoYSk7CisgICAgICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVu
cG9pc29uZWQoKSk7CisgICAgICAgICAgICBwdHIuY2xlYXIoKTsKKyAgICAgICAgICAgIEFTU0VS
VF9UUlVFKCFwdHIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwdHIu
Yml0cygpKTsKKyAgICAgICAgICAgIEFTU0VSVF9FUShhcnJheVNpemUsIGFEZXN0cnVjdENvdW50
KTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlRfRVEoYXJyYXlTaXplLCBhRGVzdHJ1Y3RDb3Vu
dCk7CisgICAgfQorfQorCitURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxs
eURlc3RydWN0aWJsZUFycmF5cywgQXNzaWdubWVudCkKK3sKKyAgICB7CisgICAgICAgIGludCBh
RGVzdHJ1Y3RDb3VudCA9IDA7CisgICAgICAgIGludCBiRGVzdHJ1Y3RDb3VudCA9IDA7CisgICAg
ICAgIExvZ2dlciogYSA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1
Y3RDb3VudCk7CisgICAgICAgIExvZ2dlciogYiA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6
ZSwgImIiLCBiRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwdHIoYSk7CisgICAgICAgICAgICBBU1NFUlRf
RVEoMCwgYURlc3RydWN0Q291bnQpOworICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGJEZXN0cnVj
dENvdW50KTsKKyAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAg
ICAgICAgICAgIHB0ciA9IGI7CisgICAgICAgICAgICBBU1NFUlRfRVEoYXJyYXlTaXplLCBhRGVz
dHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYkRlc3RydWN0Q291bnQpOwor
ICAgICAgICAgICAgQVNTRVJUX0VRKGIsIHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICB9Cisg
ICAgICAgIEFTU0VSVF9FUShhcnJheVNpemUsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgQVNT
RVJUX0VRKGFycmF5U2l6ZSwgYkRlc3RydWN0Q291bnQpOworICAgIH0KKworICAgIHsKKyAgICAg
ICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKKyAgICAgICAgTG9nZ2VyKiBhID0gbWFrZUFycmF5
PExvZ2dlcj4oYXJyYXlTaXplLCAiYSIsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgeworICAg
ICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHB0cihhKTsKKyAg
ICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBBU1NF
UlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgICAgICBwdHIgPSBudWxscHRyOwor
ICAgICAgICAgICAgQVNTRVJUX0VRKGFycmF5U2l6ZSwgYURlc3RydWN0Q291bnQpOworICAgICAg
ICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICB9Cisg
ICAgICAgIEFTU0VSVF9FUShhcnJheVNpemUsIGFEZXN0cnVjdENvdW50KTsKKyAgICB9CisKKyAg
ICB7CisgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CisgICAgICAgIGludCBiRGVzdHJ1
Y3RDb3VudCA9IDA7CisgICAgICAgIGludCBjRGVzdHJ1Y3RDb3VudCA9IDA7CisgICAgICAgIGlu
dCBkRGVzdHJ1Y3RDb3VudCA9IDA7CisgICAgICAgIExvZ2dlciogYSA9IG1ha2VBcnJheTxMb2dn
ZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgIExvZ2dlciogYiA9
IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImIiLCBiRGVzdHJ1Y3RDb3VudCk7CisgICAg
ICAgIExvZ2dlciogYyA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImMiLCBjRGVzdHJ1
Y3RDb3VudCk7CisgICAgICAgIExvZ2dlciogZCA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6
ZSwgImQiLCBkRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMShhKTsKKyAgICAgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMihiKTsKKyAgICAgICAgICAgIEFTU0VSVF9F
USgwLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYkRlc3RydWN0
Q291bnQpOworICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAxLnVucG9pc29uZWQoKSk7CisgICAg
ICAgICAgICBBU1NFUlRfRVEoYiwgcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgICAgIHAxID0g
V1RGTW92ZShwMik7CisgICAgICAgICAgICBBU1NFUlRfRVEoYXJyYXlTaXplLCBhRGVzdHJ1Y3RD
b3VudCk7CisgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYkRlc3RydWN0Q291bnQpOworICAgICAg
ICAgICAgQVNTRVJUX0VRKGIsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgICAgICBBU1NFUlRf
RVEobnVsbHB0ciwgcDIudW5wb2lzb25lZCgpKTsKKworICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHAzKGMpOworICAgICAgICAgICAgUG9pc29uZWRVbmlx
dWVQdHI8UG9pc29uQiwgTG9nZ2VyW10+IHA0KGQpOworICAgICAgICAgICAgQVNTRVJUX0VRKDAs
IGNEZXN0cnVjdENvdW50KTsKKyAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBkRGVzdHJ1Y3RDb3Vu
dCk7CisgICAgICAgICAgICBBU1NFUlRfRVEoYywgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAg
ICAgIEFTU0VSVF9FUShkLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAgICAgICAgcDMgPSBXVEZN
b3ZlKHA0KTsKKyAgICAgICAgICAgIEFTU0VSVF9FUShhcnJheVNpemUsIGNEZXN0cnVjdENvdW50
KTsKKyAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBkRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAg
ICBBU1NFUlRfRVEoZCwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9FUShu
dWxscHRyLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAgICB9CisgICAgICAgIEFTU0VSVF9FUShh
cnJheVNpemUsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgQVNTRVJUX0VRKGFycmF5U2l6ZSwg
YkRlc3RydWN0Q291bnQpOworICAgICAgICBBU1NFUlRfRVEoYXJyYXlTaXplLCBjRGVzdHJ1Y3RD
b3VudCk7CisgICAgICAgIEFTU0VSVF9FUShhcnJheVNpemUsIGREZXN0cnVjdENvdW50KTsKKyAg
ICB9CisKKyAgICB7CisgICAgICAgIGludCBhRGVzdHJ1Y3RDb3VudCA9IDA7CisgICAgICAgIExv
Z2dlciogYSA9IG1ha2VBcnJheTxMb2dnZXI+KGFycmF5U2l6ZSwgImEiLCBhRGVzdHJ1Y3RDb3Vu
dCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExv
Z2dlcltdPiBwdHIoYSk7CisgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYURlc3RydWN0Q291bnQp
OworICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICAg
ICAgcHRyID0gYTsKKyAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7Cisg
ICAgICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIH0KKyAg
ICAgICAgQVNTRVJUX0VRKGFycmF5U2l6ZSwgYURlc3RydWN0Q291bnQpOworICAgIH0KKworICAg
IHsKKyAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0gMDsKKyAgICAgICAgTG9nZ2VyKiBhID0g
bWFrZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiYSIsIGFEZXN0cnVjdENvdW50KTsKKyAgICAg
ICAgeworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+IHB0
cihhKTsKKyAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAg
ICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CisjaWYgQ09NUElMRVIoQ0xBTkcp
CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGlj
IGlnbm9yZWQgIi1XdW5rbm93bi1wcmFnbWFzIgorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGln
bm9yZWQgIi1Xc2VsZi1tb3ZlIgorI2VuZGlmCisgICAgICAgICAgICBwdHIgPSBXVEZNb3ZlKHB0
cik7CisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisj
ZW5kaWYKKyAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAg
ICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIH0KKyAgICAgICAg
QVNTRVJUX0VRKGFycmF5U2l6ZSwgYURlc3RydWN0Q291bnQpOworICAgIH0KK30KKworVEVTVChX
VEZfUG9pc29uZWRVbmlxdWVQdHJGb3JOb25Ucml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMsIFN3
YXApCit7CisgICAgeworICAgICAgICBpbnQgYURlc3RydWN0Q291bnQgPSAwOworICAgICAgICBp
bnQgYkRlc3RydWN0Q291bnQgPSAwOworICAgICAgICBMb2dnZXIqIGEgPSBtYWtlQXJyYXk8TG9n
Z2VyPihhcnJheVNpemUsICJhIiwgYURlc3RydWN0Q291bnQpOworICAgICAgICBMb2dnZXIqIGIg
PSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNpemUsICJiIiwgYkRlc3RydWN0Q291bnQpOworICAg
ICAgICB7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4g
cDEgPSBhOworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgTG9nZ2VyW10+
IHAyOworICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAg
ICAgICBBU1NFUlRfVFJVRSghcDIuYml0cygpKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFw
Mi51bnBvaXNvbmVkKCkpOworICAgICAgICAgICAgcDIuc3dhcChwMSk7CisgICAgICAgICAgICBB
U1NFUlRfRVEoYURlc3RydWN0Q291bnQsIDApOworICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAx
LmJpdHMoKSk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDEudW5wb2lzb25lZCgpKTsKKyAg
ICAgICAgICAgIEFTU0VSVF9FUShhLCBwMi51bnBvaXNvbmVkKCkpOworCisgICAgICAgICAgICBQ
b2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4gcDMgPSBiOworICAgICAgICAgICAg
UG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgTG9nZ2VyW10+IHA0OworICAgICAgICAgICAgQVNT
RVJUX0VRKGIsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDQu
Yml0cygpKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwNC51bnBvaXNvbmVkKCkpOworICAg
ICAgICAgICAgcDQuc3dhcChwMyk7CisgICAgICAgICAgICBBU1NFUlRfRVEoMCwgYkRlc3RydWN0
Q291bnQpOworICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAzLmJpdHMoKSk7CisgICAgICAgICAg
ICBBU1NFUlRfVFJVRSghcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVF9FUShi
LCBwNC51bnBvaXNvbmVkKCkpOworICAgICAgICB9CisgICAgICAgIEFTU0VSVF9FUShhcnJheVNp
emUsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgQVNTRVJUX0VRKGFycmF5U2l6ZSwgYkRlc3Ry
dWN0Q291bnQpOworICAgIH0KKworICAgIHsKKyAgICAgICAgaW50IGFEZXN0cnVjdENvdW50ID0g
MDsKKyAgICAgICAgaW50IGJEZXN0cnVjdENvdW50ID0gMDsKKyAgICAgICAgTG9nZ2VyKiBhID0g
bWFrZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiYSIsIGFEZXN0cnVjdENvdW50KTsKKyAgICAg
ICAgTG9nZ2VyKiBiID0gbWFrZUFycmF5PExvZ2dlcj4oYXJyYXlTaXplLCAiYiIsIGJEZXN0cnVj
dENvdW50KTsKKyAgICAgICAgeworICAgICAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29u
QSwgTG9nZ2VyW10+IHAxID0gYTsKKyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNv
bkEsIExvZ2dlcltdPiBwMjsKKyAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwMS51bnBvaXNvbmVk
KCkpOworICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAyLmJpdHMoKSk7CisgICAgICAgICAgICBB
U1NFUlRfVFJVRSghcDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgICAgIHN3YXAocDEsIHAyKTsK
KyAgICAgICAgICAgIEFTU0VSVF9FUSgwLCBhRGVzdHJ1Y3RDb3VudCk7CisgICAgICAgICAgICBB
U1NFUlRfVFJVRSghcDEuYml0cygpKTsKKyAgICAgICAgICAgIEFTU0VSVF9UUlVFKCFwMS51bnBv
aXNvbmVkKCkpOworICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHAyLnVucG9pc29uZWQoKSk7CisK
KyAgICAgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwMyA9IGI7
CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25CLCBMb2dnZXJbXT4gcDQ7Cisg
ICAgICAgICAgICBBU1NFUlRfRVEoYiwgcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgICAgIEFT
U0VSVF9UUlVFKCFwNC5iaXRzKCkpOworICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXA0LnVucG9p
c29uZWQoKSk7CisgICAgICAgICAgICBzd2FwKHAzLCBwNCk7CisgICAgICAgICAgICBBU1NFUlRf
RVEoMCwgYkRlc3RydWN0Q291bnQpOworICAgICAgICAgICAgQVNTRVJUX1RSVUUoIXAzLmJpdHMo
KSk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRSghcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAg
ICAgIEFTU0VSVF9FUShiLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAgICB9CisgICAgICAgIEFT
U0VSVF9FUShhcnJheVNpemUsIGFEZXN0cnVjdENvdW50KTsKKyAgICAgICAgQVNTRVJUX0VRKGFy
cmF5U2l6ZSwgYkRlc3RydWN0Q291bnQpOworICAgIH0KK30KKworc3RhdGljIFBvaXNvbmVkVW5p
cXVlUHRyPFBvaXNvbkEsIExvZ2dlcltdPiBwb2lzb25lZFB0ckZvbyhMb2dnZXIqIGFycmF5KQor
eworICAgIHJldHVybiBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBMb2dnZXJbXT4oYXJyYXkp
OworfQorCitURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvck5vblRyaXZpYWxseURlc3RydWN0
aWJsZUFycmF5cywgUmV0dXJuVmFsdWUpCit7CisgICAgeworICAgICAgICBpbnQgYURlc3RydWN0
Q291bnQgPSAwOworICAgICAgICBMb2dnZXIqIGEgPSBtYWtlQXJyYXk8TG9nZ2VyPihhcnJheVNp
emUsICJhIiwgYURlc3RydWN0Q291bnQpOworICAgICAgICB7CisgICAgICAgICAgICBhdXRvIHB0
ciA9IHBvaXNvbmVkUHRyRm9vKGEpOworICAgICAgICAgICAgQVNTRVJUX0VRKDAsIGFEZXN0cnVj
dENvdW50KTsKKyAgICAgICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25lZCgpKTsKKyAg
ICAgICAgICAgIEFTU0VSVF9FUShhLCAmKnB0cik7CisgICAgICAgICAgICBmb3IgKGF1dG8gaSA9
IDA7IGkgPCBhcnJheVNpemU7ICsraSkKKyAgICAgICAgICAgICAgICBBU1NFUlRfRVEoYVtpXS5u
YW1lLCBwdHJbaV0ubmFtZSk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUX0VRKGFycmF5U2l6
ZSwgYURlc3RydWN0Q291bnQpOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSQorCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Qb2lzb25lZFVuaXF1
ZVB0ckZvclRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5cy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlE
ZXN0cnVjdGlibGVBcnJheXMuY3BwCShub25leGlzdGVudCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJy
YXlzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMxMiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lu
Y2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL1BvaXNvbmVkVW5pcXVlUHRy
Lmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworbmFtZXNwYWNlIHsKKworY29uc3Qg
dWludDMyX3QgUG9pc29uQSA9IDB4YWFhYTsKK2NvbnN0IHVpbnQzMl90IFBvaXNvbkIgPSAweGJi
YmI7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdGF0aWMgdm9pZCBmaWxsQXJyYXkoVCYgYXJy
YXksIGludCBzaXplKQoreworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAg
ICAgICBhcnJheVtpXSA9IGkgKyAxMDA7Cit9CisKK3N0YXRpYyBjb25zdCBpbnQgYXJyYXlTaXpl
ID0gNTsKKworfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKK1RFU1QoV1RGX1BvaXNvbmVkVW5p
cXVlUHRyRm9yVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLCBCYXNpYykKK3sKKyAgICB7Cisg
ICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBlbXB0eTsKKyAgICAgICAg
QVNTRVJUX0VRKG51bGxwdHIsIGVtcHR5LnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9F
USgwdSwgZW1wdHkuYml0cygpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGF1dG8qIGEgPSBu
ZXcgaW50W2FycmF5U2l6ZV07CisgICAgICAgIGZpbGxBcnJheShhLCBhcnJheVNpemUpOworICAg
ICAgICB7CisgICAgICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcHRy
KGEpOworICAgICAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgICAg
ICAgICAgQVNTRVJUX0VRKGEsICYqcHRyKTsKKyAgICAgICAgICAgIGZvciAoYXV0byBpID0gMDsg
aSA8IGFycmF5U2l6ZTsgKytpKQorICAgICAgICAgICAgICAgIEFTU0VSVF9FUShhW2ldLCBwdHJb
aV0pOworCisjaWYgRU5BQkxFKFBPSVNPTikKKyAgICAgICAgICAgIHVpbnRwdHJfdCBwdHJCaXRz
OworICAgICAgICAgICAgc3RkOjptZW1jcHkoJnB0ckJpdHMsICZwdHIsIHNpemVvZihwdHJCaXRz
KSk7CisgICAgICAgICAgICBBU1NFUlRfVFJVRShwdHJCaXRzICE9IGJpdHdpc2VfY2FzdDx1aW50
cHRyX3Q+KGEpKTsKKyNpZiBFTkFCTEUoUE9JU09OX0FTU0VSVFMpCisgICAgICAgICAgICBBU1NF
UlRfVFJVRSgoUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+Ojppc1BvaXNvbmVkKHB0
ckJpdHMpKSk7CisjZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoUE9JU09OKQorICAgICAgICB9Cisg
ICAgfQorCisgICAgeworICAgICAgICBhdXRvKiBhID0gbmV3IGludFthcnJheVNpemVdOworICAg
ICAgICBmaWxsQXJyYXkoYSwgYXJyYXlTaXplKTsKKworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0
cjxQb2lzb25BLCBpbnRbXT4gcHRyID0gYTsKKyAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBv
aXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoYSwgJipwdHIpOworICAgICAgICBmb3IgKGF1
dG8gaSA9IDA7IGkgPCBhcnJheVNpemU7ICsraSkKKyAgICAgICAgICAgIEFTU0VSVF9FUShhW2ld
LCBwdHJbaV0pOworICAgIH0KKworICAgIHsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9p
c29uQSwgaW50W10+IHB0ciA9IFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPjo6Y3Jl
YXRlKGFycmF5U2l6ZSk7CisgICAgICAgIEFTU0VSVF9UUlVFKG51bGxwdHIgIT0gcHRyLnVucG9p
c29uZWQoKSk7CisgICAgICAgIGZpbGxBcnJheShwdHIsIGFycmF5U2l6ZSk7CisgICAgICAgIGZv
ciAoYXV0byBpID0gMDsgaSA8IGFycmF5U2l6ZTsgKytpKQorICAgICAgICAgICAgQVNTRVJUX0VR
KCgxMDAgKyBpKSwgcHRyW2ldKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGF1dG8qIGEgPSBu
ZXcgaW50W2FycmF5U2l6ZV07CisgICAgICAgIGZpbGxBcnJheShhLCBhcnJheVNpemUpOworICAg
ICAgICBhdXRvKiBiID0gbmV3IGludFthcnJheVNpemVdOworICAgICAgICBmaWxsQXJyYXkoYiwg
YXJyYXlTaXplKTsKKworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4g
cDEgPSBhOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDIgPSBX
VEZNb3ZlKHAxKTsKKyAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAxLnVucG9pc29uZWQoKSk7
CisgICAgICAgIEFTU0VSVF9FUSgwdSwgcDEuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX0VRKGEs
IHAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIGZvciAoYXV0byBpID0gMDsgaSA8IGFycmF5U2l6
ZTsgKytpKQorICAgICAgICAgICAgQVNTRVJUX0VRKGFbaV0sIHAyW2ldKTsKKworICAgICAgICBQ
b2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDMgPSBiOworICAgICAgICBQb2lzb25l
ZFVuaXF1ZVB0cjxQb2lzb25CLCBpbnRbXT4gcDQgPSBXVEZNb3ZlKHAzKTsKKyAgICAgICAgQVNT
RVJUX0VRKG51bGxwdHIsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUSgwdSwg
cDMuYml0cygpKTsKKyAgICAgICAgQVNTRVJUX0VRKGIsIHA0LnVucG9pc29uZWQoKSk7CisgICAg
ICAgIGZvciAoYXV0byBpID0gMDsgaSA8IGFycmF5U2l6ZTsgKytpKQorICAgICAgICAgICAgQVNT
RVJUX0VRKGJbaV0sIHA0W2ldKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGF1dG8qIGEgPSBu
ZXcgaW50W2FycmF5U2l6ZV07CisgICAgICAgIGZpbGxBcnJheShhLCBhcnJheVNpemUpOworICAg
ICAgICBhdXRvKiBiID0gbmV3IGludFthcnJheVNpemVdOworICAgICAgICBmaWxsQXJyYXkoYiwg
YXJyYXlTaXplKTsKKworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4g
cDEgPSBhOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDIoV1RG
TW92ZShwMSkpOworICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDEudW5wb2lzb25lZCgpKTsK
KyAgICAgICAgQVNTRVJUX0VRKDB1LCBwMS5iaXRzKCkpOworICAgICAgICBBU1NFUlRfRVEoYSwg
cDIudW5wb2lzb25lZCgpKTsKKyAgICAgICAgZm9yIChhdXRvIGkgPSAwOyBpIDwgYXJyYXlTaXpl
OyArK2kpCisgICAgICAgICAgICBBU1NFUlRfRVEoYVtpXSwgcDJbaV0pOworCisgICAgICAgIFBv
aXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwMyA9IGI7CisgICAgICAgIFBvaXNvbmVk
VW5pcXVlUHRyPFBvaXNvbkIsIGludFtdPiBwNChXVEZNb3ZlKHAzKSk7CisgICAgICAgIEFTU0VS
VF9FUShudWxscHRyLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEoMHUsIHAz
LmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9FUShiLCBwNC51bnBvaXNvbmVkKCkpOworICAgICAg
ICBmb3IgKGF1dG8gaSA9IDA7IGkgPCBhcnJheVNpemU7ICsraSkKKyAgICAgICAgICAgIEFTU0VS
VF9FUShiW2ldLCBwNFtpXSk7CisgICAgfQorCisgICAgeworICAgICAgICBhdXRvKiBhID0gbmV3
IGludFthcnJheVNpemVdOworICAgICAgICBmaWxsQXJyYXkoYSwgYXJyYXlTaXplKTsKKworICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcHRyKGEpOworICAgICAgICBB
U1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHB0ci5jbGVhcigpOworICAg
ICAgICBBU1NFUlRfVFJVRSghcHRyLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9UUlVF
KCFwdHIuYml0cygpKTsKKyAgICB9Cit9CisKK1RFU1QoV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9y
VHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLCBBc3NpZ25tZW50KQoreworICAgIHsKKyAgICAg
ICAgYXV0byogYSA9IG5ldyBpbnRbYXJyYXlTaXplXTsKKyAgICAgICAgYXV0byogYiA9IG5ldyBp
bnRbYXJyYXlTaXplXTsKKyAgICAgICAgZmlsbEFycmF5KGEsIGFycmF5U2l6ZSk7CisgICAgICAg
IGZpbGxBcnJheShiLCBhcnJheVNpemUpOworCisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBv
aXNvbkEsIGludFtdPiBwdHIoYSk7CisgICAgICAgIEFTU0VSVF9FUShhLCBwdHIudW5wb2lzb25l
ZCgpKTsKKyAgICAgICAgcHRyID0gYjsKKyAgICAgICAgQVNTRVJUX0VRKGIsIHB0ci51bnBvaXNv
bmVkKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgYXV0byogYSA9IG5ldyBpbnRbYXJyYXlT
aXplXTsKKyAgICAgICAgZmlsbEFycmF5KGEsIGFycmF5U2l6ZSk7CisKKyAgICAgICAgUG9pc29u
ZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHB0cihhKTsKKyAgICAgICAgQVNTRVJUX0VRKGEs
IHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICBwdHIgPSBudWxscHRyOworICAgICAgICBBU1NF
UlRfRVEobnVsbHB0ciwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgfQorCisgICAgeworICAgICAg
ICBhdXRvKiBhID0gbmV3IGludFthcnJheVNpemVdOworICAgICAgICBhdXRvKiBiID0gbmV3IGlu
dFthcnJheVNpemVdOworICAgICAgICBhdXRvKiBjID0gbmV3IGludFthcnJheVNpemVdOworICAg
ICAgICBhdXRvKiBkID0gbmV3IGludFthcnJheVNpemVdOworICAgICAgICBmaWxsQXJyYXkoYSwg
YXJyYXlTaXplKTsKKyAgICAgICAgZmlsbEFycmF5KGIsIGFycmF5U2l6ZSk7CisgICAgICAgIGZp
bGxBcnJheShjLCBhcnJheVNpemUpOworICAgICAgICBmaWxsQXJyYXkoZCwgYXJyYXlTaXplKTsK
KworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDEoYSk7CisgICAg
ICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwMihiKTsKKyAgICAgICAgQVNT
RVJUX0VRKGEsIHAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUShiLCBwMi51bnBv
aXNvbmVkKCkpOworICAgICAgICBwMSA9IFdURk1vdmUocDIpOworICAgICAgICBBU1NFUlRfRVEo
YiwgcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIHAyLnVucG9p
c29uZWQoKSk7CisKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAz
KGMpOworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25CLCBpbnRbXT4gcDQoZCk7Cisg
ICAgICAgIEFTU0VSVF9FUShjLCBwMy51bnBvaXNvbmVkKCkpOworICAgICAgICBBU1NFUlRfRVEo
ZCwgcDQudW5wb2lzb25lZCgpKTsKKyAgICAgICAgcDMgPSBXVEZNb3ZlKHA0KTsKKyAgICAgICAg
QVNTRVJUX0VRKGQsIHAzLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUShudWxscHRy
LCBwNC51bnBvaXNvbmVkKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgYXV0byogYSA9IG5l
dyBpbnRbYXJyYXlTaXplXTsKKyAgICAgICAgZmlsbEFycmF5KGEsIGFycmF5U2l6ZSk7CisKKyAg
ICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHB0cihhKTsKKyAgICAgICAg
QVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkpOworICAgICAgICBwdHIgPSBhOworICAgICAg
ICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAgfQorCisgICAgeworICAgICAg
ICBhdXRvKiBhID0gbmV3IGludFthcnJheVNpemVdOworICAgICAgICBmaWxsQXJyYXkoYSwgYXJy
YXlTaXplKTsKKworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcHRy
KGEpOworICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CisjaWYgQ09NUElM
RVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBk
aWFnbm9zdGljIGlnbm9yZWQgIi1XdW5rbm93bi1wcmFnbWFzIgorI3ByYWdtYSBjbGFuZyBkaWFn
bm9zdGljIGlnbm9yZWQgIi1Xc2VsZi1tb3ZlIgorI2VuZGlmCisgICAgICAgIHB0ciA9IFdURk1v
dmUocHRyKTsKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBw
b3AKKyNlbmRpZgorICAgICAgICBBU1NFUlRfRVEoYSwgcHRyLnVucG9pc29uZWQoKSk7CisgICAg
fQorfQorCitURVNUKFdURl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlc3RydWN0aWJs
ZUFycmF5cywgU3dhcCkKK3sKKyAgICB7CisgICAgICAgIGF1dG8qIGEgPSBuZXcgaW50W2FycmF5
U2l6ZV07CisgICAgICAgIGF1dG8qIGIgPSBuZXcgaW50W2FycmF5U2l6ZV07CisgICAgICAgIGZp
bGxBcnJheShhLCBhcnJheVNpemUpOworICAgICAgICBmaWxsQXJyYXkoYiwgYXJyYXlTaXplKTsK
KworICAgICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDEgPSBhOworICAg
ICAgICBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4gcDI7CisgICAgICAgIEFTU0VS
VF9FUShwMS51bnBvaXNvbmVkKCksIGEpOworICAgICAgICBBU1NFUlRfVFJVRSghcDIuYml0cygp
KTsKKyAgICAgICAgQVNTRVJUX1RSVUUoIXAyLnVucG9pc29uZWQoKSk7CisgICAgICAgIHAyLnN3
YXAocDEpOworICAgICAgICBBU1NFUlRfVFJVRSghcDEuYml0cygpKTsKKyAgICAgICAgQVNTRVJU
X1RSVUUoIXAxLnVucG9pc29uZWQoKSk7CisgICAgICAgIEFTU0VSVF9FUShwMi51bnBvaXNvbmVk
KCksIGEpOworCisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkEsIGludFtdPiBwMyA9
IGI7CisgICAgICAgIFBvaXNvbmVkVW5pcXVlUHRyPFBvaXNvbkIsIGludFtdPiBwNDsKKyAgICAg
ICAgQVNTRVJUX0VRKHAzLnVucG9pc29uZWQoKSwgYik7CisgICAgICAgIEFTU0VSVF9UUlVFKCFw
NC5iaXRzKCkpOworICAgICAgICBBU1NFUlRfVFJVRSghcDQudW5wb2lzb25lZCgpKTsKKyAgICAg
ICAgcDQuc3dhcChwMyk7CisgICAgICAgIEFTU0VSVF9UUlVFKCFwMy5iaXRzKCkpOworICAgICAg
ICBBU1NFUlRfVFJVRSghcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKHA0LnVu
cG9pc29uZWQoKSwgYik7CisgICAgfQorCisgICAgeworICAgICAgICBhdXRvKiBhID0gbmV3IGlu
dFthcnJheVNpemVdOworICAgICAgICBhdXRvKiBiID0gbmV3IGludFthcnJheVNpemVdOworICAg
ICAgICBmaWxsQXJyYXkoYSwgYXJyYXlTaXplKTsKKyAgICAgICAgZmlsbEFycmF5KGIsIGFycmF5
U2l6ZSk7CisKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAxID0g
YTsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50W10+IHAyOworICAgICAg
ICBBU1NFUlRfRVEocDEudW5wb2lzb25lZCgpLCBhKTsKKyAgICAgICAgQVNTRVJUX1RSVUUoIXAy
LmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKCFwMi51bnBvaXNvbmVkKCkpOworICAgICAg
ICBzd2FwKHAxLCBwMik7CisgICAgICAgIEFTU0VSVF9UUlVFKCFwMS5iaXRzKCkpOworICAgICAg
ICBBU1NFUlRfVFJVRSghcDEudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJUX0VRKHAyLnVu
cG9pc29uZWQoKSwgYSk7CisKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQSwgaW50
W10+IHAzID0gYjsKKyAgICAgICAgUG9pc29uZWRVbmlxdWVQdHI8UG9pc29uQiwgaW50W10+IHA0
OworICAgICAgICBBU1NFUlRfRVEocDMudW5wb2lzb25lZCgpLCBiKTsKKyAgICAgICAgQVNTRVJU
X1RSVUUoIXA0LmJpdHMoKSk7CisgICAgICAgIEFTU0VSVF9UUlVFKCFwNC51bnBvaXNvbmVkKCkp
OworICAgICAgICBzd2FwKHAzLCBwNCk7CisgICAgICAgIEFTU0VSVF9UUlVFKCFwMy5iaXRzKCkp
OworICAgICAgICBBU1NFUlRfVFJVRSghcDMudW5wb2lzb25lZCgpKTsKKyAgICAgICAgQVNTRVJU
X0VRKHA0LnVucG9pc29uZWQoKSwgYik7CisgICAgfQorfQorCitzdGF0aWMgUG9pc29uZWRVbmlx
dWVQdHI8UG9pc29uQSwgaW50W10+IHBvaXNvbmVkUHRyRm9vKGludCogcHRyKQoreworICAgIHJl
dHVybiBQb2lzb25lZFVuaXF1ZVB0cjxQb2lzb25BLCBpbnRbXT4ocHRyKTsKK30KKworVEVTVChX
VEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZXN0cnVjdGlibGVBcnJheXMsIFJldHVy
blZhbHVlKQoreworICAgIHsKKyAgICAgICAgYXV0byogYSA9IG5ldyBpbnRbYXJyYXlTaXplXTsK
KyAgICAgICAgZmlsbEFycmF5KGEsIGFycmF5U2l6ZSk7CisKKyAgICAgICAgYXV0byBwdHIgPSBw
b2lzb25lZFB0ckZvbyhhKTsKKyAgICAgICAgQVNTRVJUX0VRKGEsIHB0ci51bnBvaXNvbmVkKCkp
OworICAgICAgICBBU1NFUlRfRVEoYSwgJipwdHIpOworICAgICAgICBmb3IgKGF1dG8gaSA9IDA7
IGkgPCBhcnJheVNpemU7ICsraSkKKyAgICAgICAgICAgIEFTU0VSVF9FUShhW2ldLCBwdHJbaV0p
OworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>