<?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>5391</bug_id>
          
          <creation_ts>2005-10-15 15:46:01 -0700</creation_ts>
          <short_desc>Need to merge with a more recent KSVG2 from kde</short_desc>
          <delta_ts>2005-11-21 01:45:06 -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>SVG</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P4</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>22115</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-10-15 15:46:01 -0700</bug_when>
    <thetext>Need to merge with a more recent KSVG2 from kde

Basically this just involves checking out both trees (WebCore and kde&apos;s) and using FileMerge to go through 
each one of the differences and pull changes into WebCore, or push them into KDE.  You would do one or 
the other at a time.  I generally start by pushing to KDE (since that&apos;s a smaller set).  Eventually I bottle up 
those patches and send them off to rwlbuis and WildFox or just commit them myself.

The second stage (and what this bug is about) is to pull changes from KDE to WebCore.  Small patches are 
best.  Pull a set of related changes, recompile, test, and then post a patch here for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22116</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-10-15 15:49:37 -0700</bug_when>
    <thetext>Getting source from KDE is easy:
http://developer.kde.org/source/anonsvn.html

Specifically you would just do this:
svn co svn://anonsvn.kde.org/home/kde/trunk/kdenonbeta/kdom
svn co svn://anonsvn.kde.org/home/kde/trunk/kdenonbeta/kcanvas
svn co svn://anonsvn.kde.org/home/kde/trunk/kdenonbeta/ksvg2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22164</commentid>
    <comment_count>2</comment_count>
      <attachid>4382</attachid>
    <who name="Julien Palmas">julien.palmas</who>
    <bug_when>2005-10-17 10:43:12 -0700</bug_when>
    <thetext>Created attachment 4382
Shared is now a Template class

Modifies Shared.h and TreeShared.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22165</commentid>
    <comment_count>3</comment_count>
      <attachid>4382</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-10-17 10:45:44 -0700</bug_when>
    <thetext>Comment on attachment 4382
Shared is now a Template class

This will need to be pulled over along with all the header changes which change
from:

class Foo : public Shared;

to:

class Foo : public Shared&lt;Foo&gt;;

Make sure you test the compile, and run-webkit-tests --svg.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22185</commentid>
    <comment_count>4</comment_count>
      <attachid>4390</attachid>
    <who name="Julien Palmas">julien.palmas</who>
    <bug_when>2005-10-17 17:48:59 -0700</bug_when>
    <thetext>Created attachment 4390
Shared is now a Template class

This patch modifies all the files that subclass or use the KDOM::Shared class.
It also creates kdom/SharedPtr.h.
It adds kdom/SharedPtr.h to the WebCore+SVG target and removes kdom/Shared.cpp
from the target

Run this patch from the kdom dir with `patch -p0`, it will handle the
WebCore.xcodeproj modifs as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22186</commentid>
    <comment_count>5</comment_count>
      <attachid>4390</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-10-17 17:56:06 -0700</bug_when>
    <thetext>Comment on attachment 4390
Shared is now a Template class

Assuming this was regression and leak tested, this looks great!  Thanks ever so
much for taking the time to make this merge patch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22804</commentid>
    <comment_count>6</comment_count>
      <attachid>4390</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-10-23 23:33:43 -0700</bug_when>
    <thetext>Comment on attachment 4390
Shared is now a Template class

Commited.  Removing review flag now, as we&apos;re not quite caught up with KDE...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>23273</commentid>
    <comment_count>7</comment_count>
      <attachid>4531</attachid>
    <who name="Julien Palmas">julien.palmas</who>
    <bug_when>2005-10-29 14:54:01 -0700</bug_when>
    <thetext>Created attachment 4531
Patch for ksvg2 svn r470231

Form svn log in ksvg2 :

r470231 | wildfox | 2005-10-13 13:56:19 +0200 (Thu, 13 Oct 2005) | 16 lines

Part 2/2:
* Commit Rob&apos;s patch aiming at killing SVGStyledElementImpl &lt;-&gt;
SVGTransformableImpl,
  and SVGStyledElementImpl &lt;-&gt; SVGLocatableImpl &apos;this&apos; ptr dynamic_casts.

run-webkit-tests --svg --leaks reports no regression in svg rendering and a
shift from 370 to 342 leaks in DumpKCanvasTree</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>23274</commentid>
    <comment_count>8</comment_count>
    <who name="Julien Palmas">julien.palmas</who>
    <bug_when>2005-10-29 14:55:14 -0700</bug_when>
    <thetext>Patch for ksvg2 svn r470231 creates 4 new files :

SVGStyledTransformableElementImpl.*
SVGStyledLocatableElementImpl.*

These files need to be added to the webcore+svg target</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>23750</commentid>
    <comment_count>9</comment_count>
      <attachid>4602</attachid>
    <who name="Julien Palmas">julien.palmas</who>
    <bug_when>2005-11-04 14:54:43 -0800</bug_when>
    <thetext>Created attachment 4602
Pulls many changes from kcanvas svn r475806

Patch for kcanvas svn r475806

Form svn log in kcanvas :

r475806 | buis | 2005-10-30 18:12:14 +0100 (Sun, 30 Oct 2005) | 12 lines

Important kcanvas changes:

- have a seperate item for images, KCanvasImageItem.)
not included in this patch

- use relative transforms in kcanvas but offer a way to compute the whole ctm
(getComputedTransform). This should have big benefits, next to nicer code it
should make having svg markers in OS X easier.
Porting is still needed to support markers, but we already see a change in :
    W3C-SVG-1.1/painting-marker-01-f
    W3C-SVG-1.1/painting-marker-02-f
Like rob said, now it should not be hard to finalize the porting

- to give better control add viewBox and preserveAspectRatio abilities into
KCanvasContainer.
- KCanvasContainer sets up its own viewport clip, not in SVGSVGElementImpl
anymore.

I also added a mapRect() method to KWQWMatrix

After this patch, webcore cvs get much closer to ksvg2 svn and will make easier
further merging.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>23834</commentid>
    <comment_count>10</comment_count>
      <attachid>4531</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-11-09 01:57:52 -0800</bug_when>
    <thetext>Comment on attachment 4531
Patch for ksvg2 svn r470231

Great patch.  This will need some tweaks as it lands (due to the DOM changes
I&apos;m soon to land), but I&apos;ll take care of those.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>23836</commentid>
    <comment_count>11</comment_count>
      <attachid>4602</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-11-09 02:01:55 -0800</bug_when>
    <thetext>Comment on attachment 4602
Pulls many changes from kcanvas svn r475806

So there are some good ideas in this patch.  I think that we need to talk about
it a bit more after my DOM merger lands however.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>24310</commentid>
    <comment_count>12</comment_count>
      <attachid>4602</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-11-20 15:48:40 -0800</bug_when>
    <thetext>Comment on attachment 4602
Pulls many changes from kcanvas svn r475806

Looks good.  Rolling in with my massive changes (as it gets rid of one last
remaining dynamic_cast for me).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>24345</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-11-21 01:45:06 -0800</bug_when>
    <thetext>Ok, this bug has served it&apos;s purpose well.  Both of Julien&apos;s patches are now landed.  Time to close.  Further 
mergers from kde should use separate bugs.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>4382</attachid>
            <date>2005-10-17 10:43:12 -0700</date>
            <delta_ts>2005-10-17 17:48:59 -0700</delta_ts>
            <desc>Shared is now a Template class</desc>
            <filename>Shared_template_patch</filename>
            <type>text/plain</type>
            <size>2138</size>
            <attacher name="Julien Palmas">julien.palmas</attacher>
            
              <data encoding="base64">SW5kZXg6IFNoYXJlZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0
L2tkb20vU2hhcmVkLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNgpkaWZmIC1wIC11IC1yMS42
IFNoYXJlZC5oCi0tLSBTaGFyZWQuaAk4IFNlcCAyMDA1IDA4OjAzOjE2IC0wMDAwCTEuNgorKysg
U2hhcmVkLmgJMTcgT2N0IDIwMDUgMTc6MzE6NDIgLTAwMDAKQEAgLTI1LDE5ICsyNSwyNSBAQAog
CiBuYW1lc3BhY2UgS0RPTQogeworCXRlbXBsYXRlPGNsYXNzIFQ+CiAgICAgY2xhc3MgU2hhcmVk
CiAgICAgewogICAgIHB1YmxpYzoKLSAgICAgICAgU2hhcmVkKCk7Ci0gICAgICAgIHZpcnR1YWwg
flNoYXJlZCgpOworICAgICAgICBTaGFyZWQoKSA6IG1fcmVmKDApIHsgfQorICAgICAgICB+U2hh
cmVkKCkgeyB9CiAKLSAgICAgICAgdm9pZCByZWYoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRl
cmVmKCk7CisgICAgICAgIGludCByZWZDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVmOyB9CiAK
LSAgICAgICAgaW50IHJlZkNvdW50KCkgY29uc3Q7CisgICAgICAgIHZvaWQgcmVmKCkgeyBtX3Jl
ZisrOyB9CisKKyAgICAgICAgdm9pZCBkZXJlZigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
KG1fcmVmKSBtX3JlZi0tOworCQkJaWYoIW1fcmVmKSBkZWxldGUgc3RhdGljX2Nhc3Q8VCAqPih0
aGlzKTsKKyAgICAgICAgfQogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBpbnQgbV9yZWY7Cisg
ICAgICAgIHVuc2lnbmVkIGludCBtX3JlZjsKICAgICB9OwogCiAgICAgdGVtcGxhdGU8Y2xhc3Mg
VD4KSW5kZXg6IFRyZWVTaGFyZWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZH
U3VwcG9ydC9rZG9tL1RyZWVTaGFyZWQuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40CmRpZmYg
LXAgLXUgLXIxLjQgVHJlZVNoYXJlZC5oCi0tLSBUcmVlU2hhcmVkLmgJMSBTZXAgMjAwNSAwNzoz
Mjo1NyAtMDAwMAkxLjQKKysrIFRyZWVTaGFyZWQuaAkxNyBPY3QgMjAwNSAxNzozMTo0MiAtMDAw
MApAQCAtMjcsMjUgKzI3LDI5IEBACiAKIG5hbWVzcGFjZSBLRE9NCiB7Ci0gICAgdGVtcGxhdGU8
Y2xhc3MgVD4gY2xhc3MgVHJlZVNoYXJlZCA6IHB1YmxpYyBTaGFyZWQKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBUPgorICAgIGNsYXNzIFRyZWVTaGFyZWQKICAgICB7CiAgICAgcHVibGljOgotICAgICAg
ICBUcmVlU2hhcmVkKCkgOiBTaGFyZWQoKSB7IG1fcGFyZW50ID0gMDsgfQotICAgICAgICB2aXJ0
dWFsIH5UcmVlU2hhcmVkKCkgeyB9CisgICAgICAgIFRyZWVTaGFyZWQoKSA6IG1fcmVmKDApLCBt
X3BhcmVudCgwKSB7IH0KKyAgICAgICAgflRyZWVTaGFyZWQoKSB7IH0KIAotICAgICAgICB2b2lk
IHNldFBhcmVudChUICpwYXJlbnQpIHsgbV9wYXJlbnQgPSBwYXJlbnQ7IH0KLSAgICAgICAgVCAq
cGFyZW50KCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnQ7IH0KKyAgICAgICAgaW50IHJlZkNvdW50
KCkgY29uc3QgeyByZXR1cm4gbV9yZWY7IH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgZGVyZWYo
KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZihtX3JlZikKLSAgICAgICAgICAgICAgICBtX3Jl
Zi0tOyAKKyAgICAgICAgdm9pZCByZWYoKSB7IG1fcmVmKys7IH0KIAotICAgICAgICAgICAgaWYo
IW1fcmVmICYmICFtX3BhcmVudCkKLSAgICAgICAgICAgICAgICBkZWxldGUgdGhpczsKKyAgICAg
ICAgdm9pZCBkZXJlZigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmKG1fcmVmKSBtX3JlZi0t
OworCQkJaWYoIW1fcmVmICYmICFtX3BhcmVudCkgZGVsZXRlIHN0YXRpY19jYXN0PFQgKj4odGhp
cyk7CiAgICAgICAgIH0KIAorCisgICAgICAgIFQgKnBhcmVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
cGFyZW50OyB9CisJCXZvaWQgc2V0UGFyZW50KFQgKnBhcmVudCkgeyBtX3BhcmVudCA9IHBhcmVu
dDsgfQorCiAgICAgcHJvdGVjdGVkOgorICAgICAgICB1bnNpZ25lZCBpbnQgbV9yZWY7CiAgICAg
ICAgIFQgKm1fcGFyZW50OwogICAgIH07CiB9Owo=
</data>
<flag name="review"
          id="747"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>4390</attachid>
            <date>2005-10-17 17:48:59 -0700</date>
            <delta_ts>2005-10-31 02:54:28 -0800</delta_ts>
            <desc>Shared is now a Template class</desc>
            <filename>Shared_template_patch</filename>
            <type>text/plain</type>
            <size>96688</size>
            <attacher name="Julien Palmas">julien.palmas</attacher>
            
              <data encoding="base64">SW5kZXg6IC4uL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaix2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zNApkaWZmIC11IC1wIC1yMS4zNCBw
cm9qZWN0LnBieHByb2oKLS0tIC4uL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCTkgT2N0IDIwMDUgMDQ6MTc6MzMgLTAwMDAJMS4zNAorKysgLi4vV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJMTggT2N0IDIwMDUgMDA6MTc6NTQgLTAwMDAK
QEAgLTIyMDMsNyArMjIwMyw2IEBACiAJCUE4QzBGRjE5MDg5NzAxRkIwMEJBNTExNCAvKiBSYW5n
ZUltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QThDMEZBODEwODk3MDFGNjAwQkE1MTE0IC8qIFJhbmdlSW1wbC5jcHAgKi87IH07CiAJCUE4QzBG
RjFBMDg5NzAxRkIwMEJBNTExNCAvKiBSYW5nZUltcGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QzBGQTgyMDg5NzAxRjYwMEJBNTExNCAvKiBSYW5n
ZUltcGwuaCAqLzsgfTsKIAkJQThDMEZGMUIwODk3MDFGQjAwQkE1MTE0IC8qIGtkb21yYW5nZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDMEZBODMw
ODk3MDFGNjAwQkE1MTE0IC8qIGtkb21yYW5nZS5oICovOyB9OwotCQlBOEMwRkYyRTA4OTcwMUZC
MDBCQTUxMTQgLyogU2hhcmVkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE4QzBGQTk3MDg5NzAxRjYwMEJBNTExNCAvKiBTaGFyZWQuY3BwICovOyB9
OwogCQlBOEMwRkYyRjA4OTcwMUZCMDBCQTUxMTQgLyogU2hhcmVkLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEMwRkE5ODA4OTcwMUY2MDBCQTUxMTQg
LyogU2hhcmVkLmggKi87IH07CiAJCUE4QzBGRjM0MDg5NzAxRkIwMEJBNTExNCAvKiBEb2N1bWVu
dFRyYXZlcnNhbEltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQThDMEZBOUYwODk3MDFGNjAwQkE1MTE0IC8qIERvY3VtZW50VHJhdmVyc2FsSW1w
bC5jcHAgKi87IH07CiAJCUE4QzBGRjM1MDg5NzAxRkIwMEJBNTExNCAvKiBEb2N1bWVudFRyYXZl
cnNhbEltcGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE4QzBGQUEwMDg5NzAxRjYwMEJBNTExNCAvKiBEb2N1bWVudFRyYXZlcnNhbEltcGwuaCAqLzsg
fTsKQEAgLTIyOTcsNiArMjI5Niw3IEBACiAJCUUxRUU3NzM5MDhGMTA4NkMwMDE2Njg3MCAvKiBX
ZWJDb3JlVGV4dERlY29kZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUxRUU3NzM1MDhGMTA4NkMwMDE2Njg3MCAvKiBXZWJDb3JlVGV4dERlY29kZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMUVF
NzczQTA4RjEwODZDMDAxNjY4NzAgLyogV2ViQ29yZVRleHREZWNvZGVyLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFFRTc3MzYwOEYxMDg2QzAwMTY2
ODcwIC8qIFdlYkNvcmVUZXh0RGVjb2Rlci5tbSAqLzsgfTsKIAkJRUQwNDhBQkMwODMzRjEzMjAw
NkUxRTY3IC8qIHRleHRBcmVhUmVzaXplQ29ybmVyLnRpZmYgaW4gUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVEMDQ4QUJCMDgzM0YxMzIwMDZFMUU2NyAvKiB0
ZXh0QXJlYVJlc2l6ZUNvcm5lci50aWZmICovOyB9OworCQlGOTlGQzFEMDA5MDQ3M0E3MDA3MTJB
NTQgLyogU2hhcmVkUHRyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGOUE3QTk5MjA5MDQ2N0JFMDBCRDU5QzkgLyogU2hhcmVkUHRyLmggKi87IH07CiAv
KiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQnVpbGRSdWxlIHNl
Y3Rpb24gKi8KQEAgLTQyOTIsNiArNDI5Miw3IEBACiAJCUY2OTBDRkVBMDMxQzQ3RjQwMUNBMkFD
NCAvKiByZW5kZXJfbGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHJl
bmRlcl9sYXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNjkwQ0ZFQjAzMUM0
N0Y0MDFDQTJBQzQgLyogcmVuZGVyX2xheWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSByZW5kZXJfbGF5ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGODIxNjI5OTAyOUY0RkI1MDEwMDAxMzEgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3Jr
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBl
ci5mcmFtZXdvcms7IHBhdGggPSBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcms7IHNvdXJjZVRyZWUg
PSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCUY5QTdBOTkyMDkwNDY3QkUwMEJENTlDOSAvKiBT
aGFyZWRQdHIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFB0ci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2Vj
dGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCkBA
IC01NjQ2LDYgKzU2NDcsNyBAQAogCQlBOEMwRjhGRTA4OTcwMUY0MDBCQTUxMTQgLyoga2RvbSAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRjlBN0E5OTIw
OTA0NjdCRTAwQkQ1OUM5IC8qIFNoYXJlZFB0ci5oICovLAogCQkJCUE4QzBGOTAyMDg5NzAxRjQw
MEJBNTExNCAvKiBiYWNrZW5kcyAqLywKIAkJCQlBODFENTdGRDA4QURERkY1MDAxMzZBQzEgLyog
YmluZGluZ3MgKi8sCiAJCQkJQThDMEY5MDcwODk3MDFGNDAwQkE1MTE0IC8qIGNhY2hlICovLApA
QCAtODEzOCw2ICs4MTQwLDcgQEAKIAkJCQlBOEVBNDM0QjA4RTE0RUFDMDA0QkMzOTYgLyogZG9t
X2tkb21kb2N1bWVudHdyYXBwZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1Qzk3QUY0MDhFQTkw
ODgwMEFDRDI3MyAvKiBjb25maWcuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxRUU3NzM5MDhGMTA4
NkMwMDE2Njg3MCAvKiBXZWJDb3JlVGV4dERlY29kZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUY5
OUZDMUQwMDkwNDczQTcwMDcxMkE1NCAvKiBTaGFyZWRQdHIuaCBpbiBIZWFkZXJzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAt
MTAwNDUsNyArMTAwNDgsNiBAQAogCQkJCUE4QzBGRjE1MDg5NzAxRkIwMEJBNTExNCAvKiBEb2N1
bWVudFJhbmdlSW1wbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEMwRkYxNzA4OTcwMUZCMDBC
QTUxMTQgLyogUmFuZ2VFeGNlcHRpb25JbXBsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QzBG
RjE5MDg5NzAxRkIwMEJBNTExNCAvKiBSYW5nZUltcGwuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
QThDMEZGMkUwODk3MDFGQjAwQkE1MTE0IC8qIFNoYXJlZC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBOEMwRkYzNDA4OTcwMUZCMDBCQTUxMTQgLyogRG9jdW1lbnRUcmF2ZXJzYWxJbXBsLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE4QzBGRjM2MDg5NzAxRkIwMEJBNTExNCAvKiBOb2RlRmlsdGVy
SW1wbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEMwRkYzODA4OTcwMUZCMDBCQTUxMTQgLyog
Tm9kZUl0ZXJhdG9ySW1wbC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IGtkb20vU2hhcmVkUHRy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQpkaWZmIC1OcHUga2RvbS9TaGFyZWRQdHIuaAotLS0ga2RvbS9TaGFyZWRQ
dHIuaAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBrZG9tL1NoYXJlZFB0ci5oCTE1IE9j
dCAyMDA1IDIzOjI4OjEyIC0wMDAwCkBAIC0wLDAgKzEsMTY0IEBACisvKgorICAgIENvcHlyaWdo
dChDKSBLSFRNTCBUZWFtCisgICAgQ29weXJpZ2h0KEMpIDIwMDUgRnJhbnMgRW5nbGljaCA8ZnJh
bnMuZW5nbGljaEB0ZWxpYS5jb20+CisKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RF
IHByb2plY3QKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAg
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkg
VGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNB
LgorKi8KKworI2lmbmRlZiBLRE9NX1NoYXJlZFB0cl9ICisjZGVmaW5lIEtET01fU2hhcmVkUHRy
X0gKKworI2luY2x1ZGUgPGtkZWJ1Zy5oPgorI2luY2x1ZGUgPFF0R2xvYmFsPgorCituYW1lc3Bh
Y2UgS0RPTQoreworCS8qKgorCSAqIEEgc21hcnQgcG9pbnRlciBmb3IgaGFuZGxpbmcgcG9pbnRl
cnMgdG8gU2hhcmVkKCkgY2xhc3Nlcy4KKwkgKgorCSAqIEBzZWUgU2hhcmVkCisJICogQGF1dGhv
ciB0aGUgS0hUTUwgdGVhbQorCSAqIEBhdXRob3IgRnJhbnMgRW5nbGljaCA8ZnJhbnMuZW5nbGlj
aEB0ZWxpYS5jb20+CisJICovCisJdGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3MgU2hhcmVkUHRyCisJ
eworCXB1YmxpYzoKKwkJU2hhcmVkUHRyKCkgOiBtX3B0cigwKSB7fQorCQlleHBsaWNpdCBTaGFy
ZWRQdHIoVCAqcHRyKSA6IG1fcHRyKHB0cikKKwkJeworCQkJaWYobV9wdHIpCisJCQkJbV9wdHIt
PnJlZigpOworCQl9CisKKwkJU2hhcmVkUHRyKGNvbnN0IFNoYXJlZFB0ciAmbykgOiBtX3B0cihv
Lm1fcHRyKQorCQl7CisJCQlpZihtX3B0cikKKwkJCQltX3B0ci0+cmVmKCk7CisJCX0KKworCQl0
ZW1wbGF0ZTx0eXBlbmFtZSBYPgorCQlTaGFyZWRQdHIoY29uc3QgU2hhcmVkUHRyPFg+ICZvKSA6
IG1fcHRyKHN0YXRpY19jYXN0PFQgKj4oby5nZXQoKSkpCisJCXsKKwkJCWlmKG1fcHRyKQorCQkJ
CW1fcHRyLT5yZWYoKTsKKwkJfQorCisJCX5TaGFyZWRQdHIoKQorCQl7CisJCQlpZihtX3B0cikK
KwkJCQltX3B0ci0+ZGVyZWYoKTsKKwkJfQorCisJCWJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1
cm4gbV9wdHIgPT0gMDsgfQorCQlib29sIG5vdE51bGwoKSBjb25zdCB7IHJldHVybiBtX3B0ciAh
PSAwOyB9CisKKwkJdm9pZCByZXNldCgpCisJCXsKKwkJCWlmKG1fcHRyKQorCQkJCW1fcHRyLT5k
ZXJlZigpOworCQkJbV9wdHIgPSAwOworCQl9CisKKwkJdm9pZCByZXNldChUICpvKQorCQl7CisJ
CQlpZihvKQorCQkJCW8tPnJlZigpOworCQkJaWYobV9wdHIpCisJCQkJbV9wdHItPmRlcmVmKCk7
CisJCQltX3B0ciA9IG87CisJCX0KKworCQlUICpnZXQoKSBjb25zdAorCQl7CisJCQlyZXR1cm4g
bV9wdHI7CisJCX0KKworCQlUICZvcGVyYXRvciooKSBjb25zdDsKKworCQlUICpvcGVyYXRvci0+
KCkgY29uc3Q7CisKKwkJYm9vbCBvcGVyYXRvciEoKSBjb25zdAorCQl7CisJCQlyZXR1cm4gbV9w
dHIgPT0gMDsKKwkJfQorCisJCW9wZXJhdG9yIGJvb2woKSBjb25zdAorCQl7CisJCQlyZXR1cm4g
bV9wdHIgIT0gMDsKKwkJfQorCisJCWlubGluZSBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFNoYXJlZFB0ciAmYSwgY29uc3QgU2hhcmVkUHRyICZiKQorCQl7CisJCQlyZXR1cm4gYS5tX3B0
ciA9PSBiLm1fcHRyOworCQl9CisKKwkJaW5saW5lIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29u
c3QgU2hhcmVkUHRyICZhLCBjb25zdCBUICpiKQorCQl7CisJCQlyZXR1cm4gYS5tX3B0ciA9PSBi
OworCQl9CisKKwkJaW5saW5lIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgVCAqYSwgY29u
c3QgU2hhcmVkUHRyICZiKQorCQl7CisJCQlyZXR1cm4gYSA9PSBiLm1fcHRyOworCQl9CisKKwkJ
U2hhcmVkUHRyICZvcGVyYXRvcj0oY29uc3QgU2hhcmVkUHRyICYpOworCisJcHJpdmF0ZToKKwkJ
VCogbV9wdHI7CisJfTsKKworCXRlbXBsYXRlPHR5cGVuYW1lIFQ+CisJU2hhcmVkUHRyPFQ+ICZT
aGFyZWRQdHI8VD46Om9wZXJhdG9yPShjb25zdCBTaGFyZWRQdHI8VD4gJm8pCisJeworCQlpZihv
Lm1fcHRyKQorCQkJby5tX3B0ci0+cmVmKCk7CisKKwkJaWYobV9wdHIpCisJCQltX3B0ci0+ZGVy
ZWYoKTsKKworCQltX3B0ciA9IG8ubV9wdHI7CisKKwkJcmV0dXJuICp0aGlzOworCX0KKworCXRl
bXBsYXRlPHR5cGVuYW1lIFQ+CisJVCAmU2hhcmVkUHRyPFQ+OjpvcGVyYXRvciooKSBjb25zdAor
CXsKKyNpZm5kZWYgTkRFQlVHCisJCVFfQ0hFQ0tfUFRSKG1fcHRyKTsKKwkJaWYoIW1fcHRyKQor
CQkJa2REZWJ1ZygyNjU2MCkgPDwga2RCYWNrdHJhY2UoKSA8PCBlbmRsOworI2VuZGlmCisJCXJl
dHVybiAqbV9wdHI7CisJfQorCisJdGVtcGxhdGU8dHlwZW5hbWUgVD4KKwlUICpTaGFyZWRQdHI8
VD46Om9wZXJhdG9yLT4oKSBjb25zdAorCXsKKyNpZm5kZWYgTkRFQlVHCisJCVFfQ0hFQ0tfUFRS
KG1fcHRyKTsKKwkJaWYoIW1fcHRyKQorCQkJa2REZWJ1ZygyNjU2MCkgPDwga2RCYWNrdHJhY2Uo
KSA8PCBlbmRsOworI2VuZGlmCisJCXJldHVybiBtX3B0cjsKKwl9Cit9OworCisjZW5kaWYKKy8v
IHZpbTp0cz00Om5vZXQKSW5kZXg6IGtkb20vU2hhcmVkLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog
L2N2cy9yb290L1NWR1N1cHBvcnQva2RvbS9TaGFyZWQuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24g
MS42CmRpZmYgLXAgLXUgLXIxLjYga2RvbS9TaGFyZWQuaAotLS0ga2RvbS9TaGFyZWQuaAk4IFNl
cCAyMDA1IDA4OjAzOjE2IC0wMDAwCTEuNgorKysga2RvbS9TaGFyZWQuaAkxOCBPY3QgMjAwNSAw
MDo0MjoyMyAtMDAwMApAQCAtMjUsMTkgKzI1LDI1IEBACiAKIG5hbWVzcGFjZSBLRE9NCiB7CisJ
dGVtcGxhdGU8Y2xhc3MgVD4KICAgICBjbGFzcyBTaGFyZWQKICAgICB7CiAgICAgcHVibGljOgot
ICAgICAgICBTaGFyZWQoKTsKLSAgICAgICAgdmlydHVhbCB+U2hhcmVkKCk7CisgICAgICAgIFNo
YXJlZCgpIDogbV9yZWYoMCkgeyB9CisgICAgICAgIH5TaGFyZWQoKSB7IH0KIAotICAgICAgICB2
b2lkIHJlZigpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGVyZWYoKTsKKyAgICAgICAgaW50IHJl
ZkNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9yZWY7IH0KIAotICAgICAgICBpbnQgcmVmQ291bnQo
KSBjb25zdDsKKyAgICAgICAgdm9pZCByZWYoKSB7IG1fcmVmKys7IH0KKworICAgICAgICB2b2lk
IGRlcmVmKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYobV9yZWYpIG1fcmVmLS07CisJCQlp
ZighbV9yZWYpIGRlbGV0ZSBzdGF0aWNfY2FzdDxUICo+KHRoaXMpOworICAgICAgICB9CiAKICAg
ICBwcm90ZWN0ZWQ6Ci0gICAgICAgIGludCBtX3JlZjsKKyAgICAgICAgdW5zaWduZWQgaW50IG1f
cmVmOwogICAgIH07CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBUPgpJbmRleDoga2RvbS9UcmVlU2hh
cmVkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2RvbS9UcmVl
U2hhcmVkLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNApkaWZmIC1wIC11IC1yMS40IGtkb20v
VHJlZVNoYXJlZC5oCi0tLSBrZG9tL1RyZWVTaGFyZWQuaAkxIFNlcCAyMDA1IDA3OjMyOjU3IC0w
MDAwCTEuNAorKysga2RvbS9UcmVlU2hhcmVkLmgJMTggT2N0IDIwMDUgMDA6NDI6MjMgLTAwMDAK
QEAgLTI3LDI1ICsyNywyOSBAQAogCiBuYW1lc3BhY2UgS0RPTQogewotICAgIHRlbXBsYXRlPGNs
YXNzIFQ+IGNsYXNzIFRyZWVTaGFyZWQgOiBwdWJsaWMgU2hhcmVkCisgICAgdGVtcGxhdGU8Y2xh
c3MgVD4KKyAgICBjbGFzcyBUcmVlU2hhcmVkCiAgICAgewogICAgIHB1YmxpYzoKLSAgICAgICAg
VHJlZVNoYXJlZCgpIDogU2hhcmVkKCkgeyBtX3BhcmVudCA9IDA7IH0KLSAgICAgICAgdmlydHVh
bCB+VHJlZVNoYXJlZCgpIHsgfQorICAgICAgICBUcmVlU2hhcmVkKCkgOiBtX3JlZigwKSwgbV9w
YXJlbnQoMCkgeyB9CisgICAgICAgIH5UcmVlU2hhcmVkKCkgeyB9CiAKLSAgICAgICAgdm9pZCBz
ZXRQYXJlbnQoVCAqcGFyZW50KSB7IG1fcGFyZW50ID0gcGFyZW50OyB9Ci0gICAgICAgIFQgKnBh
cmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50OyB9CisgICAgICAgIGludCByZWZDb3VudCgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVmOyB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGRlcmVmKCkK
LSAgICAgICAgewotICAgICAgICAgICAgaWYobV9yZWYpCi0gICAgICAgICAgICAgICAgbV9yZWYt
LTsgCisgICAgICAgIHZvaWQgcmVmKCkgeyBtX3JlZisrOyB9CiAKLSAgICAgICAgICAgIGlmKCFt
X3JlZiAmJiAhbV9wYXJlbnQpCi0gICAgICAgICAgICAgICAgZGVsZXRlIHRoaXM7CisgICAgICAg
IHZvaWQgZGVyZWYoKQorICAgICAgICB7CisgICAgICAgICAgICBpZihtX3JlZikgbV9yZWYtLTsK
KwkJCWlmKCFtX3JlZiAmJiAhbV9wYXJlbnQpIGRlbGV0ZSBzdGF0aWNfY2FzdDxUICo+KHRoaXMp
OwogICAgICAgICB9CiAKKworICAgICAgICBUICpwYXJlbnQoKSBjb25zdCB7IHJldHVybiBtX3Bh
cmVudDsgfQorCQl2b2lkIHNldFBhcmVudChUICpwYXJlbnQpIHsgbV9wYXJlbnQgPSBwYXJlbnQ7
IH0KKwogICAgIHByb3RlY3RlZDoKKyAgICAgICAgdW5zaWduZWQgaW50IG1fcmVmOwogICAgICAg
ICBUICptX3BhcmVudDsKICAgICB9OwogfTsKSW5kZXg6IGtkb20vY29yZS9ET01Db25maWd1cmF0
aW9uSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2Rv
bS9jb3JlL0RPTUNvbmZpZ3VyYXRpb25JbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS42
CmRpZmYgLXAgLXUgLXIxLjYga2RvbS9jb3JlL0RPTUNvbmZpZ3VyYXRpb25JbXBsLmNwcAotLS0g
a2RvbS9jb3JlL0RPTUNvbmZpZ3VyYXRpb25JbXBsLmNwcAk1IE9jdCAyMDA1IDA1OjM2OjA2IC0w
MDAwCTEuNgorKysga2RvbS9jb3JlL0RPTUNvbmZpZ3VyYXRpb25JbXBsLmNwcAkxOCBPY3QgMjAw
NSAwMDo0MjoyNSAtMDAwMApAQCAtMzIsNyArMzIsNyBAQCB1c2luZyBuYW1lc3BhY2UgS0RPTTsK
IAogRE9NU3RyaW5nTGlzdEltcGwgKkRPTUNvbmZpZ3VyYXRpb25JbXBsOjptX3BhcmFtTmFtZXMg
PSAwOwogCi1ET01Db25maWd1cmF0aW9uSW1wbDo6RE9NQ29uZmlndXJhdGlvbkltcGwoKSA6IFNo
YXJlZCgpCitET01Db25maWd1cmF0aW9uSW1wbDo6RE9NQ29uZmlndXJhdGlvbkltcGwoKSA6IFNo
YXJlZDxET01Db25maWd1cmF0aW9uSW1wbD4oKQogewogICAgIG1fZmxhZ3MgPSAwOwogICAgIG1f
ZmxhZ3MgfD0gRkVBVFVSRV9DT01NRU5UUzsKSW5kZXg6IGtkb20vY29yZS9ET01Db25maWd1cmF0
aW9uSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20v
Y29yZS9ET01Db25maWd1cmF0aW9uSW1wbC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjUKZGlm
ZiAtcCAtdSAtcjEuNSBrZG9tL2NvcmUvRE9NQ29uZmlndXJhdGlvbkltcGwuaAotLS0ga2RvbS9j
b3JlL0RPTUNvbmZpZ3VyYXRpb25JbXBsLmgJMSBTZXAgMjAwNSAwOTozOTowMiAtMDAwMAkxLjUK
KysrIGtkb20vY29yZS9ET01Db25maWd1cmF0aW9uSW1wbC5oCTE4IE9jdCAyMDA1IDAwOjQyOjI1
IC0wMDAwCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBLRE9NCiAgICAgY2xhc3MgRE9NVXNl
ckRhdGFJbXBsOwogICAgIGNsYXNzIERPTVN0cmluZ0xpc3RJbXBsOwogCi0gICAgY2xhc3MgRE9N
Q29uZmlndXJhdGlvbkltcGwgOiBwdWJsaWMgU2hhcmVkCisgICAgY2xhc3MgRE9NQ29uZmlndXJh
dGlvbkltcGwgOiBwdWJsaWMgU2hhcmVkPERPTUNvbmZpZ3VyYXRpb25JbXBsPgogICAgIHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIERPTUNvbmZpZ3VyYXRpb25JbXBsKCk7CkluZGV4OiBrZG9tL2Nv
cmUvRE9NRXJyb3JIYW5kbGVySW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290
L1NWR1N1cHBvcnQva2RvbS9jb3JlL0RPTUVycm9ySGFuZGxlckltcGwuY3BwLHYKcmV0cmlldmlu
ZyByZXZpc2lvbiAxLjUKZGlmZiAtcCAtdSAtcjEuNSBrZG9tL2NvcmUvRE9NRXJyb3JIYW5kbGVy
SW1wbC5jcHAKLS0tIGtkb20vY29yZS9ET01FcnJvckhhbmRsZXJJbXBsLmNwcAk1IE9jdCAyMDA1
IDA1OjM2OjA3IC0wMDAwCTEuNQorKysga2RvbS9jb3JlL0RPTUVycm9ySGFuZGxlckltcGwuY3Bw
CTE4IE9jdCAyMDA1IDAwOjQyOjI1IC0wMDAwCkBAIC0yNiw3ICsyNiw3IEBACiAKIHVzaW5nIG5h
bWVzcGFjZSBLRE9NOwogCi1ET01FcnJvckhhbmRsZXJJbXBsOjpET01FcnJvckhhbmRsZXJJbXBs
KCkgOiBTaGFyZWQoKQorRE9NRXJyb3JIYW5kbGVySW1wbDo6RE9NRXJyb3JIYW5kbGVySW1wbCgp
IDogU2hhcmVkPERPTUVycm9ySGFuZGxlckltcGw+KCkKIHsKIH0KIApJbmRleDoga2RvbS9jb3Jl
L0RPTUVycm9ySGFuZGxlckltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZH
U3VwcG9ydC9rZG9tL2NvcmUvRE9NRXJyb3JIYW5kbGVySW1wbC5oLHYKcmV0cmlldmluZyByZXZp
c2lvbiAxLjMKZGlmZiAtcCAtdSAtcjEuMyBrZG9tL2NvcmUvRE9NRXJyb3JIYW5kbGVySW1wbC5o
Ci0tLSBrZG9tL2NvcmUvRE9NRXJyb3JIYW5kbGVySW1wbC5oCTEgU2VwIDIwMDUgMDc6MzM6MzIg
LTAwMDAJMS4zCisrKyBrZG9tL2NvcmUvRE9NRXJyb3JIYW5kbGVySW1wbC5oCTE4IE9jdCAyMDA1
IDAwOjQyOjI1IC0wMDAwCkBAIC0zMCw3ICszMCw3IEBAIG5hbWVzcGFjZSBLRE9NCiB7CiAgICAg
Y2xhc3MgRE9NRXJyb3JJbXBsOwogCi0gICAgY2xhc3MgRE9NRXJyb3JIYW5kbGVySW1wbCA6IHB1
YmxpYyBTaGFyZWQKKyAgICBjbGFzcyBET01FcnJvckhhbmRsZXJJbXBsIDogcHVibGljIFNoYXJl
ZDxET01FcnJvckhhbmRsZXJJbXBsPgogICAgIHsKICAgICBwdWJsaWM6CiAgICAgICAgIERPTUVy
cm9ySGFuZGxlckltcGwoKTsKSW5kZXg6IGtkb20vY29yZS9ET01FcnJvckltcGwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20vY29yZS9ET01FcnJvcklt
cGwuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjUKZGlmZiAtcCAtdSAtcjEuNSBrZG9tL2Nv
cmUvRE9NRXJyb3JJbXBsLmNwcAotLS0ga2RvbS9jb3JlL0RPTUVycm9ySW1wbC5jcHAJNSBPY3Qg
MjAwNSAwNTozNjowNyAtMDAwMAkxLjUKKysrIGtkb20vY29yZS9ET01FcnJvckltcGwuY3BwCTE4
IE9jdCAyMDA1IDAwOjQyOjI1IC0wMDAwCkBAIC0yOCw3ICsyOCw3IEBACiAKIHVzaW5nIG5hbWVz
cGFjZSBLRE9NOwogCi1ET01FcnJvckltcGw6OkRPTUVycm9ySW1wbCgpIDogU2hhcmVkKCkKK0RP
TUVycm9ySW1wbDo6RE9NRXJyb3JJbXBsKCkgOiBTaGFyZWQ8RE9NRXJyb3JJbXBsPigpCiB7CiAg
ICAgbV9zZXZlcml0eSA9IDA7CiAgICAgbV9tZXNzYWdlID0gMDsKSW5kZXg6IGtkb20vY29yZS9E
T01FcnJvckltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9r
ZG9tL2NvcmUvRE9NRXJyb3JJbXBsLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNApkaWZmIC1w
IC11IC1yMS40IGtkb20vY29yZS9ET01FcnJvckltcGwuaAotLS0ga2RvbS9jb3JlL0RPTUVycm9y
SW1wbC5oCTEgU2VwIDIwMDUgMDc6MzM6MzIgLTAwMDAJMS40CisrKyBrZG9tL2NvcmUvRE9NRXJy
b3JJbXBsLmgJMTggT2N0IDIwMDUgMDA6NDI6MjUgLTAwMDAKQEAgLTM1LDExICszNSwxMSBAQCBu
YW1lc3BhY2UgS0RPTQogICAgIHsKICAgICAgICAgU0VWRVJJVFlfV0FSTklORyA9IDEsCiAgICAg
ICAgIFNFVkVSSVRZX0VSUk9SID0gMiwKLSAgICAgICAgU0VWRVJJVFlfRkFUQUxfRVJST1IgPSAz
LAorICAgICAgICBTRVZFUklUWV9GQVRBTF9FUlJPUiA9IDMKICAgICB9OwogCiAgICAgLy8gSW50
cm9kdWNlZCBpbiBET00gTGV2ZWwgMzoKLSAgICBjbGFzcyBET01FcnJvckltcGwgOiBwdWJsaWMg
U2hhcmVkCisgICAgY2xhc3MgRE9NRXJyb3JJbXBsIDogcHVibGljIFNoYXJlZDxET01FcnJvcklt
cGw+CiAgICAgewogICAgIHB1YmxpYzoKICAgICAgICAgRE9NRXJyb3JJbXBsKCk7CkluZGV4OiBr
ZG9tL2NvcmUvRE9NRXhjZXB0aW9uSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9y
b290L1NWR1N1cHBvcnQva2RvbS9jb3JlL0RPTUV4Y2VwdGlvbkltcGwuY3BwLHYKcmV0cmlldmlu
ZyByZXZpc2lvbiAxLjUKZGlmZiAtcCAtdSAtcjEuNSBrZG9tL2NvcmUvRE9NRXhjZXB0aW9uSW1w
bC5jcHAKLS0tIGtkb20vY29yZS9ET01FeGNlcHRpb25JbXBsLmNwcAk1IE9jdCAyMDA1IDA1OjM2
OjA3IC0wMDAwCTEuNQorKysga2RvbS9jb3JlL0RPTUV4Y2VwdGlvbkltcGwuY3BwCTE4IE9jdCAy
MDA1IDAwOjQyOjI1IC0wMDAwCkBAIC0yNSw3ICsyNSw3IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBL
RE9NOwogCi1ET01FeGNlcHRpb25JbXBsOjpET01FeGNlcHRpb25JbXBsKHVuc2lnbmVkIHNob3J0
IGNvZGUpIDogU2hhcmVkKCkKK0RPTUV4Y2VwdGlvbkltcGw6OkRPTUV4Y2VwdGlvbkltcGwodW5z
aWduZWQgc2hvcnQgY29kZSkgOiBTaGFyZWQ8RE9NRXhjZXB0aW9uSW1wbD4oKQogewogICAgIHJl
ZigpOyAvLyBFeGNlcHRpb25JbXBsIGNsYXNzZXMgbmVlZCB0byByZWYgdGhlbXNlbHZlcygpIGFz
IGl0J3MganVzdAogICAgICAgICAgICAvLyB2ZXJ5IGNvbnZpZW5pZW50IHRvIGp1c3QgdXNlICd0
aHJvdyBuZXcgRXhjZXB0aW9uSW1wbCcgLi4uCkluZGV4OiBrZG9tL2NvcmUvRE9NRXhjZXB0aW9u
SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20vY29y
ZS9ET01FeGNlcHRpb25JbXBsLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMwpkaWZmIC1wIC11
IC1yMS4zIGtkb20vY29yZS9ET01FeGNlcHRpb25JbXBsLmgKLS0tIGtkb20vY29yZS9ET01FeGNl
cHRpb25JbXBsLmgJMSBTZXAgMjAwNSAwNzozMzozMyAtMDAwMAkxLjMKKysrIGtkb20vY29yZS9E
T01FeGNlcHRpb25JbXBsLmgJMTggT2N0IDIwMDUgMDA6NDI6MjUgLTAwMDAKQEAgLTI3LDcgKzI3
LDcgQEAKIAogbmFtZXNwYWNlIEtET00KIHsKLSAgICBjbGFzcyBET01FeGNlcHRpb25JbXBsIDog
cHVibGljIFNoYXJlZAorICAgIGNsYXNzIERPTUV4Y2VwdGlvbkltcGwgOiBwdWJsaWMgU2hhcmVk
PERPTUV4Y2VwdGlvbkltcGw+CiAgICAgewogICAgIHB1YmxpYzoKICAgICAgICAgRE9NRXhjZXB0
aW9uSW1wbCh1bnNpZ25lZCBzaG9ydCBjb2RlKTsKSW5kZXg6IGtkb20vY29yZS9ET01MaXN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2RvbS9jb3JlL0RPTUxp
c3QuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41CmRpZmYgLXAgLXUgLXIxLjUga2RvbS9jb3Jl
L0RPTUxpc3QuaAotLS0ga2RvbS9jb3JlL0RPTUxpc3QuaAkyIFNlcCAyMDA1IDEwOjAzOjAxIC0w
MDAwCTEuNQorKysga2RvbS9jb3JlL0RPTUxpc3QuaAkxOCBPY3QgMjAwNSAwMDo0MjoyNiAtMDAw
MApAQCAtMjksMTIgKzI5LDEyIEBACiBuYW1lc3BhY2UgS0RPTQogewogICAgIHRlbXBsYXRlPGNs
YXNzIFQ+Ci0gICAgY2xhc3MgRE9NTGlzdCA6IHB1YmxpYyBTaGFyZWQKKyAgICBjbGFzcyBET01M
aXN0IDogcHVibGljIFNoYXJlZDxET01MaXN0PFQ+ID4KICAgICB7CiAgICAgcHVibGljOgotICAg
ICAgICBET01MaXN0KCkgOiBTaGFyZWQoKSB7IG1faW1wbC5zZXRBdXRvRGVsZXRlKGZhbHNlKTsg
fQorICAgICAgICBET01MaXN0KCkgOiBTaGFyZWQ8RE9NTGlzdDxUPiA+KCkgeyBtX2ltcGwuc2V0
QXV0b0RlbGV0ZShmYWxzZSk7IH0KICAgICAgICAgRE9NTGlzdChjb25zdCBET01MaXN0ICZvdGhl
cikgeyAqdGhpcyA9IG90aGVyOyB9Ci0gICAgICAgIH5ET01MaXN0KCkgeyBjbGVhcigpOyB9Cisg
ICAgICAgIHZpcnR1YWwgfkRPTUxpc3QoKSB7IGNsZWFyKCk7IH0KIAogICAgICAgICBET01MaXN0
PFQ+ICZvcGVyYXRvcj0oY29uc3QgRE9NTGlzdDxUPiAmb3RoZXIpCiAgICAgICAgIHsKSW5kZXg6
IGtkb20vY29yZS9ET01Mb2NhdG9ySW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9y
b290L1NWR1N1cHBvcnQva2RvbS9jb3JlL0RPTUxvY2F0b3JJbXBsLmNwcCx2CnJldHJpZXZpbmcg
cmV2aXNpb24gMS41CmRpZmYgLXAgLXUgLXIxLjUga2RvbS9jb3JlL0RPTUxvY2F0b3JJbXBsLmNw
cAotLS0ga2RvbS9jb3JlL0RPTUxvY2F0b3JJbXBsLmNwcAk1IE9jdCAyMDA1IDA1OjM2OjA3IC0w
MDAwCTEuNQorKysga2RvbS9jb3JlL0RPTUxvY2F0b3JJbXBsLmNwcAkxOCBPY3QgMjAwNSAwMDo0
MjoyNiAtMDAwMApAQCAtMjcsNyArMjcsNyBAQAogCiB1c2luZyBuYW1lc3BhY2UgS0RPTTsKIAot
RE9NTG9jYXRvckltcGw6OkRPTUxvY2F0b3JJbXBsKCkgOiBTaGFyZWQoKQorRE9NTG9jYXRvcklt
cGw6OkRPTUxvY2F0b3JJbXBsKCkgOiBTaGFyZWQ8RE9NTG9jYXRvckltcGw+KCkKIHsKICAgICBt
X3V0ZjE2T2Zmc2V0ID0gLTE7CiAgICAgbV9yZWxhdGVkTm9kZSA9IDA7CkluZGV4OiBrZG9tL2Nv
cmUvRE9NTG9jYXRvckltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3Vw
cG9ydC9rZG9tL2NvcmUvRE9NTG9jYXRvckltcGwuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40
CmRpZmYgLXAgLXUgLXIxLjQga2RvbS9jb3JlL0RPTUxvY2F0b3JJbXBsLmgKLS0tIGtkb20vY29y
ZS9ET01Mb2NhdG9ySW1wbC5oCTEgU2VwIDIwMDUgMDc6MzM6MzMgLTAwMDAJMS40CisrKyBrZG9t
L2NvcmUvRE9NTG9jYXRvckltcGwuaAkxOCBPY3QgMjAwNSAwMDo0MjoyNiAtMDAwMApAQCAtMzEs
NyArMzEsNyBAQCBuYW1lc3BhY2UgS0RPTQogICAgIGNsYXNzIERPTVN0cmluZ0ltcGw7CiAKICAg
ICAvLyBJbnRyb2R1Y2VkIGluIERPTSBMZXZlbCAzOgotICAgIGNsYXNzIERPTUxvY2F0b3JJbXBs
IDogcHVibGljIFNoYXJlZAorICAgIGNsYXNzIERPTUxvY2F0b3JJbXBsIDogcHVibGljIFNoYXJl
ZDxET01Mb2NhdG9ySW1wbD4KICAgICB7CiAgICAgcHVibGljOgogICAgICAgICBET01Mb2NhdG9y
SW1wbCgpOwpJbmRleDoga2RvbS9jb3JlL0RPTU9iamVjdEltcGwuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNT
IGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20vY29yZS9ET01PYmplY3RJbXBsLmNwcCx2
CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zCmRpZmYgLXAgLXUgLXIxLjMga2RvbS9jb3JlL0RPTU9i
amVjdEltcGwuY3BwCi0tLSBrZG9tL2NvcmUvRE9NT2JqZWN0SW1wbC5jcHAJNSBPY3QgMjAwNSAw
NTozNjowNyAtMDAwMAkxLjMKKysrIGtkb20vY29yZS9ET01PYmplY3RJbXBsLmNwcAkxOCBPY3Qg
MjAwNSAwMDo0MjoyNiAtMDAwMApAQCAtMjgsMTIgKzI4LDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBL
RE9NOwogY29uc3QgYm9vbCBGYWxzZSA9IGZhbHNlOwogY29uc3QgYm9vbCBUcnVlID0gdHJ1ZTsK
IAotRE9NT2JqZWN0SW1wbDo6RE9NT2JqZWN0SW1wbCgpIDogU2hhcmVkKCkKK0RPTU9iamVjdElt
cGw6OkRPTU9iamVjdEltcGwoKSA6IFNoYXJlZDxET01PYmplY3RJbXBsPigpCiB7CiAgICAgbV91
c2VyRGF0YSA9IDA7CiB9CiAKLURPTU9iamVjdEltcGw6OkRPTU9iamVjdEltcGwoYm9vbCBiKSA6
IFNoYXJlZCgpCitET01PYmplY3RJbXBsOjpET01PYmplY3RJbXBsKGJvb2wgYikgOiBTaGFyZWQ8
RE9NT2JqZWN0SW1wbD4oKQogewogICAgIG1fdXNlckRhdGEgPSBiID8gKHZvaWQgKikmVHJ1ZSA6
ICh2b2lkICopJkZhbHNlOwogfQpJbmRleDoga2RvbS9jb3JlL0RPTU9iamVjdEltcGwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rZG9tL2NvcmUvRE9NT2JqZWN0
SW1wbC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjIKZGlmZiAtcCAtdSAtcjEuMiBrZG9tL2Nv
cmUvRE9NT2JqZWN0SW1wbC5oCi0tLSBrZG9tL2NvcmUvRE9NT2JqZWN0SW1wbC5oCTEgU2VwIDIw
MDUgMDc6MzM6MzMgLTAwMDAJMS4yCisrKyBrZG9tL2NvcmUvRE9NT2JqZWN0SW1wbC5oCTE4IE9j
dCAyMDA1IDAwOjQyOjI2IC0wMDAwCkBAIC0yOCw3ICsyOCw3IEBACiBuYW1lc3BhY2UgS0RPTQog
ewogICAgIC8vIEludHJvZHVjZWQgaW4gRE9NIExldmVsIDM6Ci0gICAgY2xhc3MgRE9NT2JqZWN0
SW1wbCA6IHB1YmxpYyBTaGFyZWQKKyAgICBjbGFzcyBET01PYmplY3RJbXBsIDogcHVibGljIFNo
YXJlZDxET01PYmplY3RJbXBsPgogICAgIHsKICAgICBwdWJsaWM6CiAgICAgICAgIERPTU9iamVj
dEltcGwoKTsKSW5kZXg6IGtkb20vY29yZS9ET01TdHJpbmdJbXBsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD
UyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rZG9tL2NvcmUvRE9NU3RyaW5nSW1wbC5jcHAs
dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNwpkaWZmIC1wIC11IC1yMS43IGtkb20vY29yZS9ET01T
dHJpbmdJbXBsLmNwcAotLS0ga2RvbS9jb3JlL0RPTVN0cmluZ0ltcGwuY3BwCTUgT2N0IDIwMDUg
MDU6MzY6MDcgLTAwMDAJMS43CisrKyBrZG9tL2NvcmUvRE9NU3RyaW5nSW1wbC5jcHAJMTggT2N0
IDIwMDUgMDA6NDI6MjcgLTAwMDAKQEAgLTMyLDEzICszMiwxMyBAQCB1c2luZyBuYW1lc3BhY2Ug
S0RPTTsKICNkZWZpbmUgUVRfQUxMT0NfUUNIQVJfVkVDKE4pICAgIChRQ2hhciAqKSBuZXcgY2hh
cltzaXplb2YoUUNoYXIpICogKE4pXQogI2RlZmluZSBRVF9ERUxFVEVfUUNIQVJfVkVDKFApICAg
IGRlbGV0ZVtdKChjaGFyICopIChQKSkKIAotRE9NU3RyaW5nSW1wbDo6RE9NU3RyaW5nSW1wbCgp
IDogU2hhcmVkKCkKK0RPTVN0cmluZ0ltcGw6OkRPTVN0cmluZ0ltcGwoKSA6IFNoYXJlZDxET01T
dHJpbmdJbXBsPigpCiB7CiAgICAgbV9zdHIgPSAwOwogICAgIG1fbGVuID0gMDsKIH0KIAotRE9N
U3RyaW5nSW1wbDo6RE9NU3RyaW5nSW1wbChjb25zdCBRQ2hhciAqc3RyLCB1bnNpZ25lZCBpbnQg
bGVuKSA6IFNoYXJlZCgpCitET01TdHJpbmdJbXBsOjpET01TdHJpbmdJbXBsKGNvbnN0IFFDaGFy
ICpzdHIsIHVuc2lnbmVkIGludCBsZW4pIDogU2hhcmVkPERPTVN0cmluZ0ltcGw+KCkKIHsKICAg
ICBib29sIGhhdmVTdHIgPSBzdHIgJiYgbGVuOwogICAgIG1fc3RyID0gUVRfQUxMT0NfUUNIQVJf
VkVDKGhhdmVTdHIgPyBsZW4gOiAxKTsKQEAgLTU2LDcgKzU2LDcgQEAgRE9NU3RyaW5nSW1wbDo6
RE9NU3RyaW5nSW1wbChjb25zdCBRQ2hhcgogICAgIH0KIH0KIAotRE9NU3RyaW5nSW1wbDo6RE9N
U3RyaW5nSW1wbChjb25zdCBRU3RyaW5nICZzdHIpIDogU2hhcmVkKCkKK0RPTVN0cmluZ0ltcGw6
OkRPTVN0cmluZ0ltcGwoY29uc3QgUVN0cmluZyAmc3RyKSA6IFNoYXJlZDxET01TdHJpbmdJbXBs
PigpCiB7CiAgICAgaW50IGxlbiA9IHN0ci5sZW5ndGgoKTsKICAgICBtX3N0ciA9IFFUX0FMTE9D
X1FDSEFSX1ZFQyhsZW4pOwpAQCAtNjQsNyArNjQsNyBAQCBET01TdHJpbmdJbXBsOjpET01TdHJp
bmdJbXBsKGNvbnN0IFFTdHJpCiAgICAgbV9sZW4gPSBsZW47CiB9CiAKLURPTVN0cmluZ0ltcGw6
OkRPTVN0cmluZ0ltcGwoY29uc3QgY2hhciAqc3RyKSA6IFNoYXJlZCgpCitET01TdHJpbmdJbXBs
OjpET01TdHJpbmdJbXBsKGNvbnN0IGNoYXIgKnN0cikgOiBTaGFyZWQ8RE9NU3RyaW5nSW1wbD4o
KQogewogICAgIGlmKHN0ciAmJiAqc3RyKQogICAgIHsKSW5kZXg6IGtkb20vY29yZS9ET01TdHJp
bmdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2RvbS9j
b3JlL0RPTVN0cmluZ0ltcGwuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40CmRpZmYgLXAgLXUg
LXIxLjQga2RvbS9jb3JlL0RPTVN0cmluZ0ltcGwuaAotLS0ga2RvbS9jb3JlL0RPTVN0cmluZ0lt
cGwuaAkxIFNlcCAyMDA1IDA3OjMzOjM0IC0wMDAwCTEuNAorKysga2RvbS9jb3JlL0RPTVN0cmlu
Z0ltcGwuaAkxOCBPY3QgMjAwNSAwMDo0MjoyNyAtMDAwMApAQCAtMzMsNyArMzMsNyBAQAogCiBu
YW1lc3BhY2UgS0RPTQogewotICAgIGNsYXNzIERPTVN0cmluZ0ltcGwgOiBwdWJsaWMgU2hhcmVk
CisgICAgY2xhc3MgRE9NU3RyaW5nSW1wbCA6IHB1YmxpYyBTaGFyZWQ8RE9NU3RyaW5nSW1wbD4K
ICAgICB7CiAgICAgcHVibGljOgogICAgICAgICBET01TdHJpbmdJbXBsKCk7CkluZGV4OiBrZG9t
L2NvcmUvRE9NVXNlckRhdGFJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3Qv
U1ZHU3VwcG9ydC9rZG9tL2NvcmUvRE9NVXNlckRhdGFJbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2
aXNpb24gMS41CmRpZmYgLXAgLXUgLXIxLjUga2RvbS9jb3JlL0RPTVVzZXJEYXRhSW1wbC5jcHAK
LS0tIGtkb20vY29yZS9ET01Vc2VyRGF0YUltcGwuY3BwCTUgT2N0IDIwMDUgMDU6MzY6MDggLTAw
MDAJMS41CisrKyBrZG9tL2NvcmUvRE9NVXNlckRhdGFJbXBsLmNwcAkxOCBPY3QgMjAwNSAwMDo0
MjoyNyAtMDAwMApAQCAtMjgsMTIgKzI4LDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBLRE9NOwogY29u
c3QgYm9vbCBGYWxzZSA9IGZhbHNlOwogY29uc3QgYm9vbCBUcnVlID0gdHJ1ZTsKIAotRE9NVXNl
ckRhdGFJbXBsOjpET01Vc2VyRGF0YUltcGwoKSA6IFNoYXJlZCgpCitET01Vc2VyRGF0YUltcGw6
OkRPTVVzZXJEYXRhSW1wbCgpIDogU2hhcmVkPERPTVVzZXJEYXRhSW1wbD4oKQogewogICAgIG1f
dXNlckRhdGEgPSAwOwogfQogCi1ET01Vc2VyRGF0YUltcGw6OkRPTVVzZXJEYXRhSW1wbChib29s
IGIpIDogU2hhcmVkKCkKK0RPTVVzZXJEYXRhSW1wbDo6RE9NVXNlckRhdGFJbXBsKGJvb2wgYikg
OiBTaGFyZWQ8RE9NVXNlckRhdGFJbXBsPigpCiB7CiAgICAgbV91c2VyRGF0YSA9IGIgPyAodm9p
ZCAqKSZUcnVlIDogKHZvaWQgKikmRmFsc2U7CiB9CkluZGV4OiBrZG9tL2NvcmUvRE9NVXNlckRh
dGFJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2RvbS9j
b3JlL0RPTVVzZXJEYXRhSW1wbC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjUKZGlmZiAtcCAt
dSAtcjEuNSBrZG9tL2NvcmUvRE9NVXNlckRhdGFJbXBsLmgKLS0tIGtkb20vY29yZS9ET01Vc2Vy
RGF0YUltcGwuaAkxIFNlcCAyMDA1IDA3OjMzOjM0IC0wMDAwCTEuNQorKysga2RvbS9jb3JlL0RP
TVVzZXJEYXRhSW1wbC5oCTE4IE9jdCAyMDA1IDAwOjQyOjI3IC0wMDAwCkBAIC0zNSw3ICszNSw3
IEBAIG5hbWVzcGFjZSBLSlMKIG5hbWVzcGFjZSBLRE9NCiB7CiAgICAgLy8gSW50cm9kdWNlZCBp
biBET00gTGV2ZWwgMzoKLSAgICBjbGFzcyBET01Vc2VyRGF0YUltcGwgOiBwdWJsaWMgU2hhcmVk
CisgICAgY2xhc3MgRE9NVXNlckRhdGFJbXBsIDogcHVibGljIFNoYXJlZDxET01Vc2VyRGF0YUlt
cGw+CiAgICAgewogICAgIHB1YmxpYzoKICAgICAgICAgRE9NVXNlckRhdGFJbXBsKCk7CkluZGV4
OiBrZG9tL2NvcmUvTmFtZWROb2RlTWFwSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2
cy9yb290L1NWR1N1cHBvcnQva2RvbS9jb3JlL05hbWVkTm9kZU1hcEltcGwuY3BwLHYKcmV0cmll
dmluZyByZXZpc2lvbiAxLjcKZGlmZiAtcCAtdSAtcjEuNyBrZG9tL2NvcmUvTmFtZWROb2RlTWFw
SW1wbC5jcHAKLS0tIGtkb20vY29yZS9OYW1lZE5vZGVNYXBJbXBsLmNwcAk1IE9jdCAyMDA1IDA1
OjM2OjA5IC0wMDAwCTEuNworKysga2RvbS9jb3JlL05hbWVkTm9kZU1hcEltcGwuY3BwCTE4IE9j
dCAyMDA1IDAwOjQyOjI4IC0wMDAwCkBAIC0zNCw3ICszNCw3IEBACiAKIHVzaW5nIG5hbWVzcGFj
ZSBLRE9NOwogCi1OYW1lZE5vZGVNYXBJbXBsOjpOYW1lZE5vZGVNYXBJbXBsKCkgOiBTaGFyZWQo
KQorTmFtZWROb2RlTWFwSW1wbDo6TmFtZWROb2RlTWFwSW1wbCgpIDogU2hhcmVkPE5hbWVkTm9k
ZU1hcEltcGw+KCkKIHsKIH0KIApJbmRleDoga2RvbS9jb3JlL05hbWVkTm9kZU1hcEltcGwuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rZG9tL2NvcmUvTmFtZWRO
b2RlTWFwSW1wbC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjYKZGlmZiAtcCAtdSAtcjEuNiBr
ZG9tL2NvcmUvTmFtZWROb2RlTWFwSW1wbC5oCi0tLSBrZG9tL2NvcmUvTmFtZWROb2RlTWFwSW1w
bC5oCTIgU2VwIDIwMDUgMTA6MDM6MDEgLTAwMDAJMS42CisrKyBrZG9tL2NvcmUvTmFtZWROb2Rl
TWFwSW1wbC5oCTE4IE9jdCAyMDA1IDAwOjQyOjI4IC0wMDAwCkBAIC0zNiw3ICszNiw3IEBACiAK
IG5hbWVzcGFjZSBLRE9NCiB7Ci0gICAgY2xhc3MgTmFtZWROb2RlTWFwSW1wbCA6IHB1YmxpYyBT
aGFyZWQKKyAgICBjbGFzcyBOYW1lZE5vZGVNYXBJbXBsIDogcHVibGljIFNoYXJlZDxOYW1lZE5v
ZGVNYXBJbXBsPgogICAgIHsKICAgICBwdWJsaWM6CiAgICAgICAgIE5hbWVkTm9kZU1hcEltcGwo
KTsKSW5kZXg6IGtkb20vY29yZS9Ob2RlSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMv
cm9vdC9TVkdTdXBwb3J0L2tkb20vY29yZS9Ob2RlSW1wbC5oLHYKcmV0cmlldmluZyByZXZpc2lv
biAxLjYKZGlmZiAtcCAtdSAtcjEuNiBrZG9tL2NvcmUvTm9kZUltcGwuaAotLS0ga2RvbS9jb3Jl
L05vZGVJbXBsLmgJMjggU2VwIDIwMDUgMDU6MDY6MDUgLTAwMDAJMS42CisrKyBrZG9tL2NvcmUv
Tm9kZUltcGwuaAkxOCBPY3QgMjAwNSAwMDo0MjoyOSAtMDAwMApAQCAtNjAsOCArNjAsOSBAQCBu
YW1lc3BhY2UgS0RPTQogICAgIGNsYXNzIE5vZGVMaXN0SW1wbDsKICAgICBjbGFzcyBEb2N1bWVu
dEltcGw7CiAgICAgY2xhc3MgTmFtZWRBdHRyTWFwSW1wbDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBjbGFzcyBTaGFyZWRQdHI7CiAKLSAgICBjbGFzcyBEb2N1bWVudFB0ciA6IHB1YmxpYyBT
aGFyZWQKKyAgICBjbGFzcyBEb2N1bWVudFB0ciA6IHB1YmxpYyBTaGFyZWQ8RG9jdW1lbnRQdHI+
CiAgICAgewogICAgIHB1YmxpYzoKICAgICAgICAgRG9jdW1lbnRQdHIoKSB7IGRvYyA9IDA7IH0K
QEAgLTgyLDYgKzgzLDggQEAgbmFtZXNwYWNlIEtET00KICAgICBjbGFzcyBOb2RlSW1wbCA6IHB1
YmxpYyBFdmVudFRhcmdldEltcGwKICAgICB7CiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVm
IFNoYXJlZFB0cjxOb2RlSW1wbD4gUHRyOworCiAgICAgICAgIE5vZGVJbXBsKERvY3VtZW50UHRy
ICpkb2MpOwogICAgICAgICB2aXJ0dWFsIH5Ob2RlSW1wbCgpOwogCkluZGV4OiBrZG9tL2NvcmUv
Tm9kZUxpc3RJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9y
dC9rZG9tL2NvcmUvTm9kZUxpc3RJbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41CmRp
ZmYgLXAgLXUgLXIxLjUga2RvbS9jb3JlL05vZGVMaXN0SW1wbC5jcHAKLS0tIGtkb20vY29yZS9O
b2RlTGlzdEltcGwuY3BwCTUgT2N0IDIwMDUgMDU6MzY6MDkgLTAwMDAJMS41CisrKyBrZG9tL2Nv
cmUvTm9kZUxpc3RJbXBsLmNwcAkxOCBPY3QgMjAwNSAwMDo0MjoyOSAtMDAwMApAQCAtMzIsNyAr
MzIsNyBAQAogCiB1c2luZyBuYW1lc3BhY2UgS0RPTTsKIAotTm9kZUxpc3RJbXBsOjpOb2RlTGlz
dEltcGwoTm9kZUltcGwgKnJlZk5vZGUpIDogU2hhcmVkKCksIG1fcmVmTm9kZShyZWZOb2RlKQor
Tm9kZUxpc3RJbXBsOjpOb2RlTGlzdEltcGwoTm9kZUltcGwgKnJlZk5vZGUpIDogU2hhcmVkPE5v
ZGVMaXN0SW1wbD4oKSwgbV9yZWZOb2RlKHJlZk5vZGUpCiB7CiAgICAgaWYobV9yZWZOb2RlKQog
ICAgICAgICBtX3JlZk5vZGUtPnJlZigpOwpJbmRleDoga2RvbS9jb3JlL05vZGVMaXN0SW1wbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20vY29yZS9Ob2Rl
TGlzdEltcGwuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40CmRpZmYgLXAgLXUgLXIxLjQga2Rv
bS9jb3JlL05vZGVMaXN0SW1wbC5oCi0tLSBrZG9tL2NvcmUvTm9kZUxpc3RJbXBsLmgJMSBTZXAg
MjAwNSAwNzozMzozNyAtMDAwMAkxLjQKKysrIGtkb20vY29yZS9Ob2RlTGlzdEltcGwuaAkxOCBP
Y3QgMjAwNSAwMDo0MjoyOSAtMDAwMApAQCAtMzQsNyArMzQsNyBAQAogbmFtZXNwYWNlIEtET00K
IHsKICAgICBjbGFzcyBOb2RlSW1wbDsKLSAgICBjbGFzcyBOb2RlTGlzdEltcGwgOiBwdWJsaWMg
U2hhcmVkCisgICAgY2xhc3MgTm9kZUxpc3RJbXBsIDogcHVibGljIFNoYXJlZDxOb2RlTGlzdElt
cGw+CiAgICAgewogICAgIHB1YmxpYzoKICAgICAgICAgTm9kZUxpc3RJbXBsKE5vZGVJbXBsICpf
cmVmTm9kZSk7CkluZGV4OiBrZG9tL2NvcmUvVHlwZUluZm9JbXBsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD
UyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rZG9tL2NvcmUvVHlwZUluZm9JbXBsLmNwcCx2
CnJldHJpZXZpbmcgcmV2aXNpb24gMS40CmRpZmYgLXAgLXUgLXIxLjQga2RvbS9jb3JlL1R5cGVJ
bmZvSW1wbC5jcHAKLS0tIGtkb20vY29yZS9UeXBlSW5mb0ltcGwuY3BwCTUgT2N0IDIwMDUgMDU6
MzY6MTAgLTAwMDAJMS40CisrKyBrZG9tL2NvcmUvVHlwZUluZm9JbXBsLmNwcAkxOCBPY3QgMjAw
NSAwMDo0MjoyOSAtMDAwMApAQCAtMjQsNyArMjQsNyBAQAogCiB1c2luZyBuYW1lc3BhY2UgS0RP
TTsKIAotVHlwZUluZm9JbXBsOjpUeXBlSW5mb0ltcGwoKSA6IFNoYXJlZCgpCitUeXBlSW5mb0lt
cGw6OlR5cGVJbmZvSW1wbCgpCiB7CiB9CiAKSW5kZXg6IGtkb20vY29yZS9UeXBlSW5mb0ltcGwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rZG9tL2NvcmUvVHlw
ZUluZm9JbXBsLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMwpkaWZmIC1wIC11IC1yMS4zIGtk
b20vY29yZS9UeXBlSW5mb0ltcGwuaAotLS0ga2RvbS9jb3JlL1R5cGVJbmZvSW1wbC5oCTEgU2Vw
IDIwMDUgMDc6MzM6MzggLTAwMDAJMS4zCisrKyBrZG9tL2NvcmUvVHlwZUluZm9JbXBsLmgJMTgg
T2N0IDIwMDUgMDA6NDI6MjkgLTAwMDAKQEAgLTMwLDcgKzMwLDcgQEAgbmFtZXNwYWNlIEtET00K
ICAgICBjbGFzcyBET01TdHJpbmdJbXBsOwogCiAgICAgLy8gSW50cm9kdWNlZCBpbiBET00gTGV2
ZWwgMzoKLSAgICBjbGFzcyBUeXBlSW5mb0ltcGwgOiBwdWJsaWMgU2hhcmVkCisgICAgY2xhc3Mg
VHlwZUluZm9JbXBsIDogcHVibGljIFNoYXJlZDxUeXBlSW5mb0ltcGw+CiAgICAgewogICAgIHB1
YmxpYzoKICAgICAgICAgVHlwZUluZm9JbXBsKCk7CkluZGV4OiBrZG9tL2Nzcy9DU1NSdWxlTGlz
dEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20v
Y3NzL0NTU1J1bGVMaXN0SW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNQpkaWZmIC1w
IC11IC1yMS41IGtkb20vY3NzL0NTU1J1bGVMaXN0SW1wbC5jcHAKLS0tIGtkb20vY3NzL0NTU1J1
bGVMaXN0SW1wbC5jcHAJNSBPY3QgMjAwNSAwNTozNjoxNiAtMDAwMAkxLjUKKysrIGtkb20vY3Nz
L0NTU1J1bGVMaXN0SW1wbC5jcHAJMTggT2N0IDIwMDUgMDA6NDI6MjkgLTAwMDAKQEAgLTI3LDcg
KzI3LDcgQEAKIAogdXNpbmcgbmFtZXNwYWNlIEtET007CiAKLUNTU1J1bGVMaXN0SW1wbDo6Q1NT
UnVsZUxpc3RJbXBsKCkgOiBTaGFyZWQoKQorQ1NTUnVsZUxpc3RJbXBsOjpDU1NSdWxlTGlzdElt
cGwoKSA6IFNoYXJlZDxDU1NSdWxlTGlzdEltcGw+KCkKIHsKIH0KIApJbmRleDoga2RvbS9jc3Mv
Q1NTUnVsZUxpc3RJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBv
cnQva2RvbS9jc3MvQ1NTUnVsZUxpc3RJbXBsLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNApk
aWZmIC1wIC11IC1yMS40IGtkb20vY3NzL0NTU1J1bGVMaXN0SW1wbC5oCi0tLSBrZG9tL2Nzcy9D
U1NSdWxlTGlzdEltcGwuaAkyIFNlcCAyMDA1IDEwOjAzOjAzIC0wMDAwCTEuNAorKysga2RvbS9j
c3MvQ1NTUnVsZUxpc3RJbXBsLmgJMTggT2N0IDIwMDUgMDA6NDI6MjkgLTAwMDAKQEAgLTMwLDcg
KzMwLDcgQEAKIG5hbWVzcGFjZSBLRE9NCiB7CiAgICAgY2xhc3MgQ1NTUnVsZUltcGw7Ci0gICAg
Y2xhc3MgQ1NTUnVsZUxpc3RJbXBsIDogcHVibGljIFNoYXJlZAorICAgIGNsYXNzIENTU1J1bGVM
aXN0SW1wbCA6IHB1YmxpYyBTaGFyZWQ8Q1NTUnVsZUxpc3RJbXBsPgogICAgIHsKICAgICBwdWJs
aWM6CiAgICAgICAgIENTU1J1bGVMaXN0SW1wbCgpOwpJbmRleDoga2RvbS9jc3MvQ291bnRlcklt
cGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20vY3Nz
L0NvdW50ZXJJbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41CmRpZmYgLXAgLXUgLXIx
LjUga2RvbS9jc3MvQ291bnRlckltcGwuY3BwCi0tLSBrZG9tL2Nzcy9Db3VudGVySW1wbC5jcHAJ
NSBPY3QgMjAwNSAwNTozNjoxNyAtMDAwMAkxLjUKKysrIGtkb20vY3NzL0NvdW50ZXJJbXBsLmNw
cAkxOCBPY3QgMjAwNSAwMDo0MjozMCAtMDAwMApAQCAtMjcsNyArMjcsNyBAQAogCiB1c2luZyBu
YW1lc3BhY2UgS0RPTTsKIAotQ291bnRlckltcGw6OkNvdW50ZXJJbXBsKCkgOiBTaGFyZWQoKQor
Q291bnRlckltcGw6OkNvdW50ZXJJbXBsKCkgOiBTaGFyZWQ8Q291bnRlckltcGw+KCkKIHsKICAg
ICBtX2xpc3RTdHlsZSA9IDA7CiAgICAgbV9zZXBhcmF0b3IgPSAwOwpJbmRleDoga2RvbS9jc3Mv
Q291bnRlckltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9r
ZG9tL2Nzcy9Db3VudGVySW1wbC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjQKZGlmZiAtcCAt
dSAtcjEuNCBrZG9tL2Nzcy9Db3VudGVySW1wbC5oCi0tLSBrZG9tL2Nzcy9Db3VudGVySW1wbC5o
CTEgU2VwIDIwMDUgMDc6MzM6MDkgLTAwMDAJMS40CisrKyBrZG9tL2Nzcy9Db3VudGVySW1wbC5o
CTE4IE9jdCAyMDA1IDAwOjQyOjMwIC0wMDAwCkBAIC0yOCw3ICsyOCw3IEBACiAKIG5hbWVzcGFj
ZSBLRE9NCiB7Ci0gICAgY2xhc3MgQ291bnRlckltcGwgOiBwdWJsaWMgU2hhcmVkCisgICAgY2xh
c3MgQ291bnRlckltcGwgOiBwdWJsaWMgU2hhcmVkPENvdW50ZXJJbXBsPgogICAgIHsKICAgICBw
dWJsaWM6CiAgICAgICAgIENvdW50ZXJJbXBsKCk7CkluZGV4OiBrZG9tL2Nzcy9SR0JDb2xvcklt
cGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20vY3Nz
L1JHQkNvbG9ySW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNQpkaWZmIC1wIC11IC1y
MS41IGtkb20vY3NzL1JHQkNvbG9ySW1wbC5jcHAKLS0tIGtkb20vY3NzL1JHQkNvbG9ySW1wbC5j
cHAJNSBPY3QgMjAwNSAwNTozNjoxOCAtMDAwMAkxLjUKKysrIGtkb20vY3NzL1JHQkNvbG9ySW1w
bC5jcHAJMTggT2N0IDIwMDUgMDA6NDI6MzAgLTAwMDAKQEAgLTI2LDE2ICsyNiwxNiBAQAogCiB1
c2luZyBuYW1lc3BhY2UgS0RPTTsKIAotUkdCQ29sb3JJbXBsOjpSR0JDb2xvckltcGwoQ0RGSW50
ZXJmYWNlICppbnRlcmZhY2UpIDogU2hhcmVkKCksIG1faW50ZXJmYWNlKGludGVyZmFjZSkKK1JH
QkNvbG9ySW1wbDo6UkdCQ29sb3JJbXBsKENERkludGVyZmFjZSAqaW50ZXJmYWNlKSA6IFNoYXJl
ZDxSR0JDb2xvckltcGw+KCksIG1faW50ZXJmYWNlKGludGVyZmFjZSkKIHsKIH0KIAotUkdCQ29s
b3JJbXBsOjpSR0JDb2xvckltcGwoQ0RGSW50ZXJmYWNlICppbnRlcmZhY2UsIGNvbnN0IFFSZ2Ig
JmNvbG9yKSA6IFNoYXJlZCgpLCBtX2ludGVyZmFjZShpbnRlcmZhY2UpCitSR0JDb2xvckltcGw6
OlJHQkNvbG9ySW1wbChDREZJbnRlcmZhY2UgKmludGVyZmFjZSwgY29uc3QgUVJnYiAmY29sb3Ip
IDogU2hhcmVkPFJHQkNvbG9ySW1wbD4oKSwgbV9pbnRlcmZhY2UoaW50ZXJmYWNlKQogewogICAg
IG1fY29sb3IgPSBjb2xvcjsKIH0KIAotUkdCQ29sb3JJbXBsOjpSR0JDb2xvckltcGwoQ0RGSW50
ZXJmYWNlICppbnRlcmZhY2UsIGNvbnN0IFFDb2xvciAmY29sb3IpIDogU2hhcmVkKCksIG1faW50
ZXJmYWNlKGludGVyZmFjZSkKK1JHQkNvbG9ySW1wbDo6UkdCQ29sb3JJbXBsKENERkludGVyZmFj
ZSAqaW50ZXJmYWNlLCBjb25zdCBRQ29sb3IgJmNvbG9yKSA6IFNoYXJlZDxSR0JDb2xvckltcGw+
KCksIG1faW50ZXJmYWNlKGludGVyZmFjZSkKIHsKICAgICBtX2NvbG9yID0gY29sb3IucmdiKCk7
CiB9CkluZGV4OiBrZG9tL2Nzcy9SR0JDb2xvckltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAv
Y3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rZG9tL2Nzcy9SR0JDb2xvckltcGwuaCx2CnJldHJpZXZpbmcg
cmV2aXNpb24gMS4zCmRpZmYgLXAgLXUgLXIxLjMga2RvbS9jc3MvUkdCQ29sb3JJbXBsLmgKLS0t
IGtkb20vY3NzL1JHQkNvbG9ySW1wbC5oCTEgU2VwIDIwMDUgMDc6MzM6MTAgLTAwMDAJMS4zCisr
KyBrZG9tL2Nzcy9SR0JDb2xvckltcGwuaAkxOCBPY3QgMjAwNSAwMDo0MjozMCAtMDAwMApAQCAt
MzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgS0RPTQogICAgIGNsYXNzIERPTVN0cmluZzsKICAgICBj
bGFzcyBDREZJbnRlcmZhY2U7CiAgICAgY2xhc3MgQ1NTUHJpbWl0aXZlVmFsdWVJbXBsOwotICAg
IGNsYXNzIFJHQkNvbG9ySW1wbCA6IHB1YmxpYyBTaGFyZWQKKyAgICBjbGFzcyBSR0JDb2xvcklt
cGwgOiBwdWJsaWMgU2hhcmVkPFJHQkNvbG9ySW1wbD4KICAgICB7CiAgICAgcHVibGljOgogICAg
ICAgICBSR0JDb2xvckltcGwoQ0RGSW50ZXJmYWNlICppbnRlcmZhY2UpOwpJbmRleDoga2RvbS9j
c3MvUmVjdEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0
L2tkb20vY3NzL1JlY3RJbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS42CmRpZmYgLXAg
LXUgLXIxLjYga2RvbS9jc3MvUmVjdEltcGwuY3BwCi0tLSBrZG9tL2Nzcy9SZWN0SW1wbC5jcHAJ
NSBPY3QgMjAwNSAwNTozNjoxOCAtMDAwMAkxLjYKKysrIGtkb20vY3NzL1JlY3RJbXBsLmNwcAkx
OCBPY3QgMjAwNSAwMDo0MjozMCAtMDAwMApAQCAtMjYsNyArMjYsNyBAQAogCiB1c2luZyBuYW1l
c3BhY2UgS0RPTTsKIAotUmVjdEltcGw6OlJlY3RJbXBsKENERkludGVyZmFjZSAqaW50ZXJmYWNl
KSA6IFNoYXJlZCgpLCBtX2ludGVyZmFjZShpbnRlcmZhY2UpCitSZWN0SW1wbDo6UmVjdEltcGwo
Q0RGSW50ZXJmYWNlICppbnRlcmZhY2UpIDogU2hhcmVkPFJlY3RJbXBsPigpLCBtX2ludGVyZmFj
ZShpbnRlcmZhY2UpCiB7CiAgICAgbV90b3AgPSAwOwogICAgIG1fcmlnaHQgPSAwOwpJbmRleDog
a2RvbS9jc3MvUmVjdEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3Vw
cG9ydC9rZG9tL2Nzcy9SZWN0SW1wbC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjQKZGlmZiAt
cCAtdSAtcjEuNCBrZG9tL2Nzcy9SZWN0SW1wbC5oCi0tLSBrZG9tL2Nzcy9SZWN0SW1wbC5oCTgg
U2VwIDIwMDUgMDg6MDM6MjQgLTAwMDAJMS40CisrKyBrZG9tL2Nzcy9SZWN0SW1wbC5oCTE4IE9j
dCAyMDA1IDAwOjQyOjMxIC0wMDAwCkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBLRE9NCiB7
CiAgICAgY2xhc3MgQ0RGSW50ZXJmYWNlOwogICAgIGNsYXNzIENTU1ByaW1pdGl2ZVZhbHVlSW1w
bDsKLSAgICBjbGFzcyBSZWN0SW1wbCA6IHB1YmxpYyBTaGFyZWQKKyAgICBjbGFzcyBSZWN0SW1w
bCA6IHB1YmxpYyBTaGFyZWQ8UmVjdEltcGw+CiAgICAgewogICAgIHB1YmxpYzoKICAgICAgICAg
UmVjdEltcGwoQ0RGSW50ZXJmYWNlICppbnRlcmZhY2UpOwpJbmRleDoga2RvbS9jc3MvUmVuZGVy
U3R5bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20v
Y3NzL1JlbmRlclN0eWxlLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS43CmRpZmYgLXAgLXUg
LXIxLjcga2RvbS9jc3MvUmVuZGVyU3R5bGUuY3BwCi0tLSBrZG9tL2Nzcy9SZW5kZXJTdHlsZS5j
cHAJNSBPY3QgMjAwNSAwNTozNjoxOCAtMDAwMAkxLjcKKysrIGtkb20vY3NzL1JlbmRlclN0eWxl
LmNwcAkxOCBPY3QgMjAwNSAwMDo0MjozMyAtMDAwMApAQCAtMzUsNyArMzUsNyBAQCB1c2luZyBu
YW1lc3BhY2UgS0RPTTsKIAogUmVuZGVyU3R5bGUgKlJlbmRlclN0eWxlOjpzX2RlZmF1bHRTdHls
ZSA9IDA7CiAKLVJlbmRlclN0eWxlOjpSZW5kZXJTdHlsZSgpIDogU2hhcmVkKCkKK1JlbmRlclN0
eWxlOjpSZW5kZXJTdHlsZSgpIDogU2hhcmVkPFJlbmRlclN0eWxlPigpCiB7CiAgICAgaWYoIXNf
ZGVmYXVsdFN0eWxlKQogICAgICAgICBzX2RlZmF1bHRTdHlsZSA9IG5ldyBSZW5kZXJTdHlsZSh0
cnVlKTsKQEAgLTU3LDcgKzU3LDcgQEAgUmVuZGVyU3R5bGU6OlJlbmRlclN0eWxlKCkgOiBTaGFy
ZWQoKQogICAgIGNvdW50ZXJfaW5jcmVtZW50ID0gMDsKIH0KIAotUmVuZGVyU3R5bGU6OlJlbmRl
clN0eWxlKGJvb2wpIDogU2hhcmVkKCkKK1JlbmRlclN0eWxlOjpSZW5kZXJTdHlsZShib29sKSA6
IFNoYXJlZDxSZW5kZXJTdHlsZT4oKQogewogICAgIHNldEJpdERlZmF1bHRzKCk7CiAgICAgCkBA
IC03Niw3ICs3Niw3IEBAIFJlbmRlclN0eWxlOjpSZW5kZXJTdHlsZShib29sKSA6IFNoYXJlZCgK
ICAgICBjb3VudGVyX2luY3JlbWVudCA9IDA7CiB9CiAKLVJlbmRlclN0eWxlOjpSZW5kZXJTdHls
ZShjb25zdCBSZW5kZXJTdHlsZSAmb3RoZXIpIDogU2hhcmVkKCkKK1JlbmRlclN0eWxlOjpSZW5k
ZXJTdHlsZShjb25zdCBSZW5kZXJTdHlsZSAmb3RoZXIpIDogU2hhcmVkPFJlbmRlclN0eWxlPigp
CiB7CiAgICAgaW5oZXJpdGVkX2ZsYWdzID0gb3RoZXIuaW5oZXJpdGVkX2ZsYWdzOwogICAgIG5v
bmluaGVyaXRlZF9mbGFncyA9IG90aGVyLm5vbmluaGVyaXRlZF9mbGFnczsKSW5kZXg6IGtkb20v
Y3NzL1JlbmRlclN0eWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBv
cnQva2RvbS9jc3MvUmVuZGVyU3R5bGUuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS42CmRpZmYg
LXAgLXUgLXIxLjYga2RvbS9jc3MvUmVuZGVyU3R5bGUuaAotLS0ga2RvbS9jc3MvUmVuZGVyU3R5
bGUuaAk4IFNlcCAyMDA1IDA4OjAzOjI0IC0wMDAwCTEuNgorKysga2RvbS9jc3MvUmVuZGVyU3R5
bGUuaAkxOCBPY3QgMjAwNSAwMDo0MjozNiAtMDAwMApAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1l
c3BhY2UgS0RPTQogewotICAgIGNsYXNzIFJlbmRlclN0eWxlIDogcHVibGljIFNoYXJlZAorICAg
IGNsYXNzIFJlbmRlclN0eWxlIDogcHVibGljIFNoYXJlZDxSZW5kZXJTdHlsZT4KICAgICB7CiAg
ICAgcHVibGljOgogICAgICAgICAvLyBzdGF0aWMgcHNldWRvIHN0eWxlcy4gRHluYW1pYyBvbmVz
IGFyZSBwcm9kdWNlZCBvbiB0aGUgZmx5LgpAQCAtNDYxLDcgKzQ2MSw3IEBAIG5hbWVzcGFjZSBL
RE9NCiAgICAgICAgIENTU1ZhbHVlTGlzdEltcGwgKmNvdW50ZXJfaW5jcmVtZW50OwogCiAgICAg
cHJpdmF0ZToKLSAgICAgICAgUmVuZGVyU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUgKikgOiBTaGFy
ZWQoKSB7IH0KKyAgICAgICAgUmVuZGVyU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUgKikgOiBTaGFy
ZWQ8UmVuZGVyU3R5bGU+KCkgeyB9CiAKICAgICAgICAgdm9pZCBzZXRCaXREZWZhdWx0cygpCiAg
ICAgICAgIHsKSW5kZXg6IGtkb20vY3NzL1JlbmRlclN0eWxlRGVmcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS
Q1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2RvbS9jc3MvUmVuZGVyU3R5bGVEZWZzLmNw
cCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS42CmRpZmYgLXAgLXUgLXIxLjYga2RvbS9jc3MvUmVu
ZGVyU3R5bGVEZWZzLmNwcAotLS0ga2RvbS9jc3MvUmVuZGVyU3R5bGVEZWZzLmNwcAk1IE9jdCAy
MDA1IDA1OjM2OjE4IC0wMDAwCTEuNgorKysga2RvbS9jc3MvUmVuZGVyU3R5bGVEZWZzLmNwcAkx
OCBPY3QgMjAwNSAwMDo0MjozNyAtMDAwMApAQCAtMzYsMTEgKzM2LDExIEBAIHVzaW5nIG5hbWVz
cGFjZSBLRE9NOwogCiAvLyBDU1Mgc2F5cyAnRml4ZWQnIGZvciB0aGUgZGVmYXVsdCBwYWRkaW5n
IHZhbHVlLCBidXQgd2UgdHJlYXQgJ1ZhcmlhYmxlJyBhcyAwCiAvLyBwYWRkaW5nIGFueXdheSwg
YW5kIGxpa2UgdGhpcyBpcyB3b3JrcyBmaW5lIGZvciB0YWJsZSBwYWRkaW5ncyBhcyB3ZWxsLi4u
Ci1TdHlsZVN1cnJvdW5kRGF0YTo6U3R5bGVTdXJyb3VuZERhdGEoKSA6IFNoYXJlZCgpLCBtYXJn
aW4oTFRfRklYRUQpLCBwYWRkaW5nKExUX1ZBUklBQkxFKQorU3R5bGVTdXJyb3VuZERhdGE6OlN0
eWxlU3Vycm91bmREYXRhKCkgOiBTaGFyZWQ8U3R5bGVTdXJyb3VuZERhdGE+KCksIG1hcmdpbihM
VF9GSVhFRCksIHBhZGRpbmcoTFRfVkFSSUFCTEUpCiB7CiB9CiAKLVN0eWxlU3Vycm91bmREYXRh
OjpTdHlsZVN1cnJvdW5kRGF0YShjb25zdCBTdHlsZVN1cnJvdW5kRGF0YSAmb3RoZXIpIDogU2hh
cmVkKCkKK1N0eWxlU3Vycm91bmREYXRhOjpTdHlsZVN1cnJvdW5kRGF0YShjb25zdCBTdHlsZVN1
cnJvdW5kRGF0YSAmb3RoZXIpIDogU2hhcmVkPFN0eWxlU3Vycm91bmREYXRhPigpCiB7CiAgICAg
b2Zmc2V0ID0gb3RoZXIub2Zmc2V0OyBtYXJnaW4gPSBvdGhlci5tYXJnaW47CiAgICAgcGFkZGlu
ZyA9IG90aGVyLnBhZGRpbmc7IGJvcmRlciA9IG90aGVyLmJvcmRlcjsKQEAgLTUyLDcgKzUyLDcg
QEAgYm9vbCBTdHlsZVN1cnJvdW5kRGF0YTo6b3BlcmF0b3I9PShjb25zdAogICAgICAgICAgICAo
cGFkZGluZyA9PSBvdGhlci5wYWRkaW5nKSAmJiAoYm9yZGVyID09IG90aGVyLmJvcmRlcik7CiB9
CiAKLVN0eWxlQm94RGF0YTo6U3R5bGVCb3hEYXRhKCkgOiBTaGFyZWQoKSwgekluZGV4KDApLCB6
QXV0byh0cnVlKQorU3R5bGVCb3hEYXRhOjpTdHlsZUJveERhdGEoKSA6IFNoYXJlZDxTdHlsZUJv
eERhdGE+KCksIHpJbmRleCgwKSwgekF1dG8odHJ1ZSkKIHsKICAgICB3aWR0aCA9IFJlbmRlclN0
eWxlOjppbml0aWFsV2lkdGgoKTsKICAgICBoZWlnaHQgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbEhl
aWdodCgpOwpAQCAtNjMsNyArNjMsNyBAQCBTdHlsZUJveERhdGE6OlN0eWxlQm94RGF0YSgpIDog
U2hhcmVkKCksCiAgICAgYm94U2l6aW5nID0gUmVuZGVyU3R5bGU6OmluaXRpYWxCb3hTaXppbmco
KTsKIH0KIAotU3R5bGVCb3hEYXRhOjpTdHlsZUJveERhdGEoY29uc3QgU3R5bGVCb3hEYXRhICZv
dGhlcikgOiBTaGFyZWQoKQorU3R5bGVCb3hEYXRhOjpTdHlsZUJveERhdGEoY29uc3QgU3R5bGVC
b3hEYXRhICZvdGhlcikgOiBTaGFyZWQ8U3R5bGVCb3hEYXRhPigpCiB7CiAgICAgd2lkdGggPSBv
dGhlci53aWR0aDsgaGVpZ2h0ID0gb3RoZXIuaGVpZ2h0OwogICAgIG1pbldpZHRoID0gb3RoZXIu
bWluV2lkdGg7IG1pbkhlaWdodCA9IG90aGVyLm1pbkhlaWdodDsKQEAgLTgxLDEzICs4MSwxMyBA
QCBib29sIFN0eWxlQm94RGF0YTo6b3BlcmF0b3I9PShjb25zdCBTdHlsCiAgICAgICAgICAgICh6
QXV0byA9PSBvdGhlci56QXV0byk7CiB9CiAKLVN0eWxlVmlzdWFsRGF0YTo6U3R5bGVWaXN1YWxE
YXRhKCkgOiBTaGFyZWQoKQorU3R5bGVWaXN1YWxEYXRhOjpTdHlsZVZpc3VhbERhdGEoKSA6IFNo
YXJlZDxTdHlsZVZpc3VhbERhdGE+KCkKIHsKICAgICB0ZXh0RGVjb3JhdGlvbiA9IFJlbmRlclN0
eWxlOjppbml0aWFsVGV4dERlY29yYXRpb24oKTsKICAgICBwYWxldHRlID0gUUFwcGxpY2F0aW9u
OjpwYWxldHRlKCk7CiB9CiAKLVN0eWxlVmlzdWFsRGF0YTo6U3R5bGVWaXN1YWxEYXRhKGNvbnN0
IFN0eWxlVmlzdWFsRGF0YSAmb3RoZXIpIDogU2hhcmVkKCkKK1N0eWxlVmlzdWFsRGF0YTo6U3R5
bGVWaXN1YWxEYXRhKGNvbnN0IFN0eWxlVmlzdWFsRGF0YSAmb3RoZXIpIDogU2hhcmVkPFN0eWxl
VmlzdWFsRGF0YT4oKQogewogICAgIGNsaXAgPSBvdGhlci5jbGlwOwogICAgIHRleHREZWNvcmF0
aW9uID0gb3RoZXIudGV4dERlY29yYXRpb247CkBAIC0xMDEsMTIgKzEwMSwxMiBAQCBib29sIFN0
eWxlVmlzdWFsRGF0YTo6b3BlcmF0b3I9PShjb25zdCBTCiAgICAgICAgICAgIChwYWxldHRlID09
IG90aGVyLnBhbGV0dGUpOwogfQogCi1TdHlsZUJhY2tncm91bmREYXRhOjpTdHlsZUJhY2tncm91
bmREYXRhKCkgOiBTaGFyZWQoKQorU3R5bGVCYWNrZ3JvdW5kRGF0YTo6U3R5bGVCYWNrZ3JvdW5k
RGF0YSgpIDogU2hhcmVkPFN0eWxlQmFja2dyb3VuZERhdGE+KCkKIHsKICAgICBpbWFnZSA9IFJl
bmRlclN0eWxlOjppbml0aWFsQmFja2dyb3VuZEltYWdlKCk7CiB9CiAKLVN0eWxlQmFja2dyb3Vu
ZERhdGE6OlN0eWxlQmFja2dyb3VuZERhdGEoY29uc3QgU3R5bGVCYWNrZ3JvdW5kRGF0YSAmb3Ro
ZXIpIDogU2hhcmVkKCkKK1N0eWxlQmFja2dyb3VuZERhdGE6OlN0eWxlQmFja2dyb3VuZERhdGEo
Y29uc3QgU3R5bGVCYWNrZ3JvdW5kRGF0YSAmb3RoZXIpIDogU2hhcmVkPFN0eWxlQmFja2dyb3Vu
ZERhdGE+KCkKIHsKICAgICBjb2xvciA9IG90aGVyLmNvbG9yOwogICAgIGltYWdlID0gb3RoZXIu
aW1hZ2U7CkBAIC0xMjIsNyArMTIyLDcgQEAgYm9vbCBTdHlsZUJhY2tncm91bmREYXRhOjpvcGVy
YXRvcj09KGNvbgogICAgICAgICAgICAob3V0bGluZSA9PSBvdGhlci5vdXRsaW5lKTsKIH0KIAot
U3R5bGVNYXJxdWVlRGF0YTo6U3R5bGVNYXJxdWVlRGF0YSgpIDogU2hhcmVkKCkKK1N0eWxlTWFy
cXVlZURhdGE6OlN0eWxlTWFycXVlZURhdGEoKSA6IFNoYXJlZDxTdHlsZU1hcnF1ZWVEYXRhPigp
CiB7CiAgICAgaW5jcmVtZW50ID0gUmVuZGVyU3R5bGU6OmluaXRpYWxNYXJxdWVlSW5jcmVtZW50
KCk7CiAgICAgc3BlZWQgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbE1hcnF1ZWVTcGVlZCgpOwpAQCAt
MTMxLDcgKzEzMSw3IEBAIFN0eWxlTWFycXVlZURhdGE6OlN0eWxlTWFycXVlZURhdGEoKSA6IFMK
ICAgICBsb29wcyA9IFJlbmRlclN0eWxlOjppbml0aWFsTWFycXVlZUxvb3BDb3VudCgpOwogfQog
Ci1TdHlsZU1hcnF1ZWVEYXRhOjpTdHlsZU1hcnF1ZWVEYXRhKGNvbnN0IFN0eWxlTWFycXVlZURh
dGEgJm90aGVyKSA6IFNoYXJlZCgpCitTdHlsZU1hcnF1ZWVEYXRhOjpTdHlsZU1hcnF1ZWVEYXRh
KGNvbnN0IFN0eWxlTWFycXVlZURhdGEgJm90aGVyKSA6IFNoYXJlZDxTdHlsZU1hcnF1ZWVEYXRh
PigpCiB7CiAgICAgaW5jcmVtZW50ID0gb3RoZXIuaW5jcmVtZW50OwogICAgIHNwZWVkID0gb3Ro
ZXIuc3BlZWQ7CkBAIC0xNDYsMTIgKzE0NiwxMiBAQCBib29sIFN0eWxlTWFycXVlZURhdGE6Om9w
ZXJhdG9yPT0oY29uc3QgCiAgICAgICAgICAgICBkaXJlY3Rpb24gPT0gb3RoZXIuZGlyZWN0aW9u
ICYmIGJlaGF2aW9yID09IG90aGVyLmJlaGF2aW9yICYmIGxvb3BzID09IG90aGVyLmxvb3BzKTsK
IH0KIAotU3R5bGVDU1MzTm9uSW5oZXJpdGVkRGF0YTo6U3R5bGVDU1MzTm9uSW5oZXJpdGVkRGF0
YSgpIDogU2hhcmVkKCkKK1N0eWxlQ1NTM05vbkluaGVyaXRlZERhdGE6OlN0eWxlQ1NTM05vbklu
aGVyaXRlZERhdGEoKSA6IFNoYXJlZDxTdHlsZUNTUzNOb25Jbmhlcml0ZWREYXRhPigpCiB7CiAg
ICAgb3BhY2l0eSA9IFJlbmRlclN0eWxlOjppbml0aWFsT3BhY2l0eSgpOwogfQogCi1TdHlsZUNT
UzNOb25Jbmhlcml0ZWREYXRhOjpTdHlsZUNTUzNOb25Jbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxl
Q1NTM05vbkluaGVyaXRlZERhdGEgJm90aGVyKSA6IFNoYXJlZCgpCitTdHlsZUNTUzNOb25Jbmhl
cml0ZWREYXRhOjpTdHlsZUNTUzNOb25Jbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlQ1NTM05vbklu
aGVyaXRlZERhdGEgJm90aGVyKSA6IFNoYXJlZDxTdHlsZUNTUzNOb25Jbmhlcml0ZWREYXRhPigp
CiB7CiAgICAgb3BhY2l0eSA9IG90aGVyLm9wYWNpdHk7CiAgICAgbWFycXVlZSA9IG90aGVyLm1h
cnF1ZWU7CkBAIC0xNjIsMTEgKzE2MiwxMSBAQCBib29sIFN0eWxlQ1NTM05vbkluaGVyaXRlZERh
dGE6Om9wZXJhdG9yCiAgICAgcmV0dXJuIChvcGFjaXR5ID09IG90aGVyLm9wYWNpdHkpICYmICht
YXJxdWVlID09IG90aGVyLm1hcnF1ZWUpOwogfQogCi1TdHlsZUNTUzNJbmhlcml0ZWREYXRhOjpT
dHlsZUNTUzNJbmhlcml0ZWREYXRhKCkgOiBTaGFyZWQoKSwgdGV4dFNoYWRvdygwKQorU3R5bGVD
U1MzSW5oZXJpdGVkRGF0YTo6U3R5bGVDU1MzSW5oZXJpdGVkRGF0YSgpIDogU2hhcmVkPFN0eWxl
Q1NTM0luaGVyaXRlZERhdGE+KCksIHRleHRTaGFkb3coMCkKIHsKIH0KIAotU3R5bGVDU1MzSW5o
ZXJpdGVkRGF0YTo6U3R5bGVDU1MzSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZUNTUzNJbmhlcml0
ZWREYXRhICZvdGhlcikgOiBTaGFyZWQoKQorU3R5bGVDU1MzSW5oZXJpdGVkRGF0YTo6U3R5bGVD
U1MzSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZUNTUzNJbmhlcml0ZWREYXRhICZvdGhlcikgOiBT
aGFyZWQ8U3R5bGVDU1MzSW5oZXJpdGVkRGF0YT4oKQogewogICAgIHRleHRTaGFkb3cgPSBvdGhl
ci50ZXh0U2hhZG93ID8gbmV3IFNoYWRvd0RhdGEoKm90aGVyLnRleHRTaGFkb3cpIDogMDsKIH0K
QEAgLTE5MSw3ICsxOTEsNyBAQCBib29sIFN0eWxlQ1NTM0luaGVyaXRlZERhdGE6OnNoYWRvd0Rh
dGFFCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVN0eWxlSW5oZXJpdGVkRGF0YTo6U3R5bGVJbmhl
cml0ZWREYXRhKCkgOiBTaGFyZWQoKSwgZm9udCgpCitTdHlsZUluaGVyaXRlZERhdGE6OlN0eWxl
SW5oZXJpdGVkRGF0YSgpIDogU2hhcmVkPFN0eWxlSW5oZXJpdGVkRGF0YT4oKSwgZm9udCgpCiB7
CiAgICAgaW5kZW50ID0gUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0SW5kZW50KCk7CiAgICAgbGlu
ZUhlaWdodCA9IFJlbmRlclN0eWxlOjppbml0aWFsTGluZUhlaWdodCgpOwpAQCAtMjA4LDcgKzIw
OCw3IEBAIFN0eWxlSW5oZXJpdGVkRGF0YTo6U3R5bGVJbmhlcml0ZWREYXRhKCkKICAgICBwYWdl
QnJlYWtJbnNpZGUgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbFBhZ2VCcmVha0luc2lkZSgpOwogfQog
Ci1TdHlsZUluaGVyaXRlZERhdGE6OlN0eWxlSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZUluaGVy
aXRlZERhdGEgJm90aGVyKSA6IFNoYXJlZCgpCitTdHlsZUluaGVyaXRlZERhdGE6OlN0eWxlSW5o
ZXJpdGVkRGF0YShjb25zdCBTdHlsZUluaGVyaXRlZERhdGEgJm90aGVyKSA6IFNoYXJlZDxTdHls
ZUluaGVyaXRlZERhdGE+KCkKIHsKICAgICBpbmRlbnQgPSBvdGhlci5pbmRlbnQ7IGxpbmVIZWln
aHQgPSBvdGhlci5saW5lSGVpZ2h0OwogICAgIHN0eWxlSW1hZ2UgPSBvdGhlci5zdHlsZUltYWdl
OyBmb250ID0gb3RoZXIuZm9udDsKSW5kZXg6IGtkb20vY3NzL1JlbmRlclN0eWxlRGVmcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20vY3NzL1JlbmRlclN0
eWxlRGVmcy5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjYKZGlmZiAtcCAtdSAtcjEuNiBrZG9t
L2Nzcy9SZW5kZXJTdHlsZURlZnMuaAotLS0ga2RvbS9jc3MvUmVuZGVyU3R5bGVEZWZzLmgJOCBT
ZXAgMjAwNSAwODowMzoyNCAtMDAwMAkxLjYKKysrIGtkb20vY3NzL1JlbmRlclN0eWxlRGVmcy5o
CTE4IE9jdCAyMDA1IDAwOjQyOjM4IC0wMDAwCkBAIC0yOTMsMTAgKzI5MywxMCBAQCBuYW1lc3Bh
Y2UgS0RPTQogICAgICAgICBFQm9yZGVyUHJlY2VkZW5jZSBwcmVjZWRlbmNlOwogICAgIH07CiAK
LSAgICBjbGFzcyBCb3JkZXJEYXRhIDogcHVibGljIFNoYXJlZAorICAgIGNsYXNzIEJvcmRlckRh
dGEgOiBwdWJsaWMgU2hhcmVkPEJvcmRlckRhdGE+CiAgICAgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgQm9yZGVyRGF0YSgpIDogU2hhcmVkKCkgeyB9CisgICAgICAgIEJvcmRlckRhdGEoKSA6IFNo
YXJlZDxCb3JkZXJEYXRhPigpIHsgfQogICAgICAgICB2aXJ0dWFsIH5Cb3JkZXJEYXRhKCkgeyB9
CiAKICAgICAgICAgYm9vbCBoYXNCb3JkZXIoKSBjb25zdApAQCAtMzE1LDcgKzMxNSw3IEBAIG5h
bWVzcGFjZSBLRE9NCiAgICAgICAgIEJvcmRlclZhbHVlIHRvcCwgYm90dG9tOwogICAgIH07CiAK
LSAgICBjbGFzcyBTdHlsZVN1cnJvdW5kRGF0YSA6IHB1YmxpYyBTaGFyZWQKKyAgICBjbGFzcyBT
dHlsZVN1cnJvdW5kRGF0YSA6IHB1YmxpYyBTaGFyZWQ8U3R5bGVTdXJyb3VuZERhdGE+CiAgICAg
ewogICAgIHB1YmxpYzoKICAgICAgICAgU3R5bGVTdXJyb3VuZERhdGEoKTsKQEAgLTM0MSw3ICsz
NDEsNyBAQCBuYW1lc3BhY2UgS0RPTQogCiAgICAgZW51bSBFQm94U2l6aW5nIHsgQlNfQk9SREVS
X0JPWCwgQlNfQ09OVEVOVF9CT1ggfTsKIAotICAgIGNsYXNzIFN0eWxlQm94RGF0YSA6IHB1Ymxp
YyBTaGFyZWQKKyAgICBjbGFzcyBTdHlsZUJveERhdGEgOiBwdWJsaWMgU2hhcmVkPFN0eWxlQm94
RGF0YT4KICAgICB7CiAgICAgcHVibGljOgogICAgICAgICBTdHlsZUJveERhdGEoKTsKQEAgLTM3
Myw3ICszNzMsNyBAQCBuYW1lc3BhY2UgS0RPTQogCiAgICAgLy8gUmFuZG9tIHZpc3VhbCByZW5k
ZXJpbmcgbW9kZWwgYXR0cmlidXRlcy4gTm90IGluaGVyaXRlZC4KIAotICAgIGNsYXNzIFN0eWxl
VmlzdWFsRGF0YSA6IHB1YmxpYyBTaGFyZWQKKyAgICBjbGFzcyBTdHlsZVZpc3VhbERhdGEgOiBw
dWJsaWMgU2hhcmVkPFN0eWxlVmlzdWFsRGF0YT4KICAgICB7CiAgICAgcHVibGljOgogICAgICAg
ICBTdHlsZVZpc3VhbERhdGEoKTsKQEAgLTM5NCw3ICszOTQsNyBAQCBuYW1lc3BhY2UgS0RPTQog
CiAgICAgZW51bSBFQmFja2dyb3VuZFJlcGVhdCB7IEJSX1JFUEVBVCwgQlJfUkVQRUFUX1gsIEJS
X1JFUEVBVF9ZLCBCUl9OT19SRVBFQVQgfTsKIAotICAgIGNsYXNzIFN0eWxlQmFja2dyb3VuZERh
dGEgOiBwdWJsaWMgU2hhcmVkCisgICAgY2xhc3MgU3R5bGVCYWNrZ3JvdW5kRGF0YSA6IHB1Ymxp
YyBTaGFyZWQ8U3R5bGVCYWNrZ3JvdW5kRGF0YT4KICAgICB7CiAgICAgcHVibGljOgogICAgICAg
ICBTdHlsZUJhY2tncm91bmREYXRhKCk7CkBAIC00MzIsNyArNDMyLDcgQEAgbmFtZXNwYWNlIEtE
T00KICAgICAgICAgTURfQkFDS1dBUkQgPSAtMwogICAgIH07CiAKLSAgICBjbGFzcyBTdHlsZU1h
cnF1ZWVEYXRhIDogcHVibGljIFNoYXJlZAorICAgIGNsYXNzIFN0eWxlTWFycXVlZURhdGEgOiBw
dWJsaWMgU2hhcmVkPFN0eWxlTWFycXVlZURhdGE+CiAgICAgewogICAgIHB1YmxpYzoKICAgICAg
ICAgU3R5bGVNYXJxdWVlRGF0YSgpOwpAQCAtNDgwLDcgKzQ4MCw3IEBAIG5hbWVzcGFjZSBLRE9N
CiAgICAgLy8gVGhpcyBzdHJ1Y3QgaXMgZm9yIHJhcmVseSB1c2VkIG5vbi1pbmhlcml0ZWQgQ1NT
MyBwcm9wZXJ0aWVzLiAgQnkgZ3JvdXBpbmcgdGhlbSB0b2dldGhlciwKICAgICAvLyB3ZSBzYXZl
IHNwYWNlLCBhbmQgb25seSBhbGxvY2F0ZSB0aGlzIG9iamVjdCB3aGVuIHNvbWVvbmUgYWN0dWFs
bHkgdXNlcwogICAgIC8vIGEgbm9uLWluaGVyaXRlZCBDU1MzIHByb3BlcnR5LgotICAgIGNsYXNz
IFN0eWxlQ1NTM05vbkluaGVyaXRlZERhdGEgOiBwdWJsaWMgU2hhcmVkCisgICAgY2xhc3MgU3R5
bGVDU1MzTm9uSW5oZXJpdGVkRGF0YSA6IHB1YmxpYyBTaGFyZWQ8U3R5bGVDU1MzTm9uSW5oZXJp
dGVkRGF0YT4KICAgICB7CiAgICAgcHVibGljOgogICAgICAgICBTdHlsZUNTUzNOb25Jbmhlcml0
ZWREYXRhKCk7CkBAIC00OTgsNyArNDk4LDcgQEAgbmFtZXNwYWNlIEtET00KICAgICAvLyBUaGlz
IHN0cnVjdCBpcyBmb3IgcmFyZWx5IHVzZWQgaW5oZXJpdGVkIENTUzMgcHJvcGVydGllcy4gIEJ5
IGdyb3VwaW5nIHRoZW0gdG9nZXRoZXIsCiAgICAgLy8gd2Ugc2F2ZSBzcGFjZSwgYW5kIG9ubHkg
YWxsb2NhdGUgdGhpcyBvYmplY3Qgd2hlbiBzb21lb25lIGFjdHVhbGx5IHVzZXMKICAgICAvLyBh
biBpbmhlcml0ZWQgQ1NTMyBwcm9wZXJ0eS4KLSAgICBjbGFzcyBTdHlsZUNTUzNJbmhlcml0ZWRE
YXRhIDogcHVibGljIFNoYXJlZAorICAgIGNsYXNzIFN0eWxlQ1NTM0luaGVyaXRlZERhdGEgOiBw
dWJsaWMgU2hhcmVkPFN0eWxlQ1NTM0luaGVyaXRlZERhdGE+CiAgICAgewogICAgIHB1YmxpYzoK
ICAgICAgICAgU3R5bGVDU1MzSW5oZXJpdGVkRGF0YSgpOwpAQCAtNTIwLDcgKzUyMCw3IEBAIG5h
bWVzcGFjZSBLRE9NCiAKICAgICBlbnVtIEVQYWdlQnJlYWsgeyBQQl9BVVRPLCBQQl9BTFdBWVMs
IFBCX0FWT0lEIH07CiAKLSAgICBjbGFzcyBTdHlsZUluaGVyaXRlZERhdGEgOiBwdWJsaWMgU2hh
cmVkCisgICAgY2xhc3MgU3R5bGVJbmhlcml0ZWREYXRhIDogcHVibGljIFNoYXJlZDxTdHlsZUlu
aGVyaXRlZERhdGE+CiAgICAgewogICAgIHB1YmxpYzoKICAgICAgICAgU3R5bGVJbmhlcml0ZWRE
YXRhKCk7CkluZGV4OiBrZG9tL2Nzcy9TdHlsZVNoZWV0TGlzdEltcGwuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
UkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20vY3NzL1N0eWxlU2hlZXRMaXN0SW1w
bC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNgpkaWZmIC1wIC11IC1yMS42IGtkb20vY3Nz
L1N0eWxlU2hlZXRMaXN0SW1wbC5jcHAKLS0tIGtkb20vY3NzL1N0eWxlU2hlZXRMaXN0SW1wbC5j
cHAJNSBPY3QgMjAwNSAwNTozNjoxOCAtMDAwMAkxLjYKKysrIGtkb20vY3NzL1N0eWxlU2hlZXRM
aXN0SW1wbC5jcHAJMTggT2N0IDIwMDUgMDA6NDI6MzkgLTAwMDAKQEAgLTI3LDcgKzI3LDcgQEAK
IAogdXNpbmcgbmFtZXNwYWNlIEtET007CiAKLVN0eWxlU2hlZXRMaXN0SW1wbDo6U3R5bGVTaGVl
dExpc3RJbXBsKCkgOiBTaGFyZWQoKQorU3R5bGVTaGVldExpc3RJbXBsOjpTdHlsZVNoZWV0TGlz
dEltcGwoKSA6IFNoYXJlZDxTdHlsZVNoZWV0TGlzdEltcGw+KCkKIHsKIH0KIApJbmRleDoga2Rv
bS9jc3MvU3R5bGVTaGVldExpc3RJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290
L1NWR1N1cHBvcnQva2RvbS9jc3MvU3R5bGVTaGVldExpc3RJbXBsLmgsdgpyZXRyaWV2aW5nIHJl
dmlzaW9uIDEuNApkaWZmIC1wIC11IC1yMS40IGtkb20vY3NzL1N0eWxlU2hlZXRMaXN0SW1wbC5o
Ci0tLSBrZG9tL2Nzcy9TdHlsZVNoZWV0TGlzdEltcGwuaAkyIFNlcCAyMDA1IDEwOjAzOjA2IC0w
MDAwCTEuNAorKysga2RvbS9jc3MvU3R5bGVTaGVldExpc3RJbXBsLmgJMTggT2N0IDIwMDUgMDA6
NDI6MzkgLTAwMDAKQEAgLTMwLDcgKzMwLDcgQEAKIG5hbWVzcGFjZSBLRE9NCiB7CiAgICAgY2xh
c3MgU3R5bGVTaGVldEltcGw7Ci0gICAgY2xhc3MgU3R5bGVTaGVldExpc3RJbXBsIDogcHVibGlj
IFNoYXJlZAorICAgIGNsYXNzIFN0eWxlU2hlZXRMaXN0SW1wbCA6IHB1YmxpYyBTaGFyZWQ8U3R5
bGVTaGVldExpc3RJbXBsPgogICAgIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFN0eWxlU2hlZXRM
aXN0SW1wbCgpOwpJbmRleDoga2RvbS9ldmVudHMvRXZlbnRFeGNlcHRpb25JbXBsLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rZG9tL2V2ZW50cy9FdmVudEV4
Y2VwdGlvbkltcGwuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjUKZGlmZiAtcCAtdSAtcjEu
NSBrZG9tL2V2ZW50cy9FdmVudEV4Y2VwdGlvbkltcGwuY3BwCi0tLSBrZG9tL2V2ZW50cy9FdmVu
dEV4Y2VwdGlvbkltcGwuY3BwCTUgT2N0IDIwMDUgMDU6MzY6MjYgLTAwMDAJMS41CisrKyBrZG9t
L2V2ZW50cy9FdmVudEV4Y2VwdGlvbkltcGwuY3BwCTE4IE9jdCAyMDA1IDAwOjQyOjM5IC0wMDAw
CkBAIC0yNSw3ICsyNSw3IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBLRE9NOwogCi1FdmVudEV4Y2Vw
dGlvbkltcGw6OkV2ZW50RXhjZXB0aW9uSW1wbCh1bnNpZ25lZCBzaG9ydCBjb2RlKSA6IFNoYXJl
ZCgpCitFdmVudEV4Y2VwdGlvbkltcGw6OkV2ZW50RXhjZXB0aW9uSW1wbCh1bnNpZ25lZCBzaG9y
dCBjb2RlKSA6IFNoYXJlZDxFdmVudEV4Y2VwdGlvbkltcGw+KCkKIHsKICAgICByZWYoKTsgLy8g
RXhjZXB0aW9uSW1wbCBjbGFzc2VzIG5lZWQgdG8gcmVmIHRoZW1zZWx2ZXMoKSBhcyBpdCdzIGp1
c3QKICAgICAgICAgICAgLy8gdmVyeSBjb252aWVuaWVudCB0byBqdXN0IHVzZSAndGhyb3cgbmV3
IEV4Y2VwdGlvbkltcGwnIC4uLgpJbmRleDoga2RvbS9ldmVudHMvRXZlbnRFeGNlcHRpb25JbXBs
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2RvbS9ldmVudHMv
RXZlbnRFeGNlcHRpb25JbXBsLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMwpkaWZmIC1wIC11
IC1yMS4zIGtkb20vZXZlbnRzL0V2ZW50RXhjZXB0aW9uSW1wbC5oCi0tLSBrZG9tL2V2ZW50cy9F
dmVudEV4Y2VwdGlvbkltcGwuaAkxIFNlcCAyMDA1IDA3OjMzOjI2IC0wMDAwCTEuMworKysga2Rv
bS9ldmVudHMvRXZlbnRFeGNlcHRpb25JbXBsLmgJMTggT2N0IDIwMDUgMDA6NDI6MzkgLTAwMDAK
QEAgLTI3LDcgKzI3LDcgQEAKIAogbmFtZXNwYWNlIEtET00KIHsKLSAgICBjbGFzcyBFdmVudEV4
Y2VwdGlvbkltcGwgOiBwdWJsaWMgU2hhcmVkCisgICAgY2xhc3MgRXZlbnRFeGNlcHRpb25JbXBs
IDogcHVibGljIFNoYXJlZDxFdmVudEV4Y2VwdGlvbkltcGw+CiAgICAgewogICAgIHB1YmxpYzoK
ICAgICAgICAgRXZlbnRFeGNlcHRpb25JbXBsKHVuc2lnbmVkIHNob3J0IGNvZGUpOwpJbmRleDog
a2RvbS9ldmVudHMvRXZlbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3Qv
U1ZHU3VwcG9ydC9rZG9tL2V2ZW50cy9FdmVudEltcGwuY3BwLHYKcmV0cmlldmluZyByZXZpc2lv
biAxLjUKZGlmZiAtcCAtdSAtcjEuNSBrZG9tL2V2ZW50cy9FdmVudEltcGwuY3BwCi0tLSBrZG9t
L2V2ZW50cy9FdmVudEltcGwuY3BwCTUgT2N0IDIwMDUgMDU6MzY6MjYgLTAwMDAJMS41CisrKyBr
ZG9tL2V2ZW50cy9FdmVudEltcGwuY3BwCTE4IE9jdCAyMDA1IDAwOjQyOjM5IC0wMDAwCkBAIC0y
OSw3ICsyOSw3IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBLRE9NOwogCi1FdmVudEltcGw6OkV2ZW50
SW1wbChFdmVudEltcGxUeXBlIGlkZW50aWZpZXIpIDogU2hhcmVkKCksIG1faWRlbnRpZmllcihp
ZGVudGlmaWVyKQorRXZlbnRJbXBsOjpFdmVudEltcGwoRXZlbnRJbXBsVHlwZSBpZGVudGlmaWVy
KSA6IFNoYXJlZDxFdmVudEltcGw+KCksIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogewogICAg
IG1fY3JlYXRlVGltZSA9IFFEYXRlVGltZTo6Y3VycmVudERhdGVUaW1lKCk7CiAKSW5kZXg6IGtk
b20vZXZlbnRzL0V2ZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdT
dXBwb3J0L2tkb20vZXZlbnRzL0V2ZW50SW1wbC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjQK
ZGlmZiAtcCAtdSAtcjEuNCBrZG9tL2V2ZW50cy9FdmVudEltcGwuaAotLS0ga2RvbS9ldmVudHMv
RXZlbnRJbXBsLmgJMSBTZXAgMjAwNSAwNzozMzoyNiAtMDAwMAkxLjQKKysrIGtkb20vZXZlbnRz
L0V2ZW50SW1wbC5oCTE4IE9jdCAyMDA1IDAwOjQyOjM5IC0wMDAwCkBAIC00MSw3ICs0MSw3IEBA
IG5hbWVzcGFjZSBLRE9NCiAgICAgfSBFdmVudEltcGxUeXBlOwogCiAgICAgY2xhc3MgRXZlbnRU
YXJnZXRJbXBsOwotICAgIGNsYXNzIEV2ZW50SW1wbCA6IHB1YmxpYyBTaGFyZWQKKyAgICBjbGFz
cyBFdmVudEltcGwgOiBwdWJsaWMgU2hhcmVkPEV2ZW50SW1wbD4KICAgICB7CiAgICAgcHVibGlj
OgogICAgICAgICBFdmVudEltcGwoRXZlbnRJbXBsVHlwZSBpZGVudGlmaWVyKTsKSW5kZXg6IGtk
b20vZXZlbnRzL0V2ZW50TGlzdGVuZXJJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zz
L3Jvb3QvU1ZHU3VwcG9ydC9rZG9tL2V2ZW50cy9FdmVudExpc3RlbmVySW1wbC5jcHAsdgpyZXRy
aWV2aW5nIHJldmlzaW9uIDEuNgpkaWZmIC1wIC11IC1yMS42IGtkb20vZXZlbnRzL0V2ZW50TGlz
dGVuZXJJbXBsLmNwcAotLS0ga2RvbS9ldmVudHMvRXZlbnRMaXN0ZW5lckltcGwuY3BwCTUgT2N0
IDIwMDUgMDU6MzY6MjYgLTAwMDAJMS42CisrKyBrZG9tL2V2ZW50cy9FdmVudExpc3RlbmVySW1w
bC5jcHAJMTggT2N0IDIwMDUgMDA6NDI6NDAgLTAwMDAKQEAgLTI4LDcgKzI4LDcgQEAKIAogdXNp
bmcgbmFtZXNwYWNlIEtET007CiAKLUV2ZW50TGlzdGVuZXJJbXBsOjpFdmVudExpc3RlbmVySW1w
bCgpIDogU2hhcmVkKCkKK0V2ZW50TGlzdGVuZXJJbXBsOjpFdmVudExpc3RlbmVySW1wbCgpIDog
U2hhcmVkPEV2ZW50TGlzdGVuZXJJbXBsPigpCiB7CiAgICAgbV9kb2MgPSAwOwogICAgIG1faW50
ZXJuYWxUeXBlID0gMDsKSW5kZXg6IGtkb20vZXZlbnRzL0V2ZW50TGlzdGVuZXJJbXBsLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2RvbS9ldmVudHMvRXZlbnRM
aXN0ZW5lckltcGwuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS42CmRpZmYgLXAgLXUgLXIxLjYg
a2RvbS9ldmVudHMvRXZlbnRMaXN0ZW5lckltcGwuaAotLS0ga2RvbS9ldmVudHMvRXZlbnRMaXN0
ZW5lckltcGwuaAkxIFNlcCAyMDA1IDA5OjM5OjA5IC0wMDAwCTEuNgorKysga2RvbS9ldmVudHMv
RXZlbnRMaXN0ZW5lckltcGwuaAkxOCBPY3QgMjAwNSAwMDo0Mjo0MCAtMDAwMApAQCAtMzAsNyAr
MzAsNyBAQAogCiBuYW1lc3BhY2UgS0RPTQogewotICAgIGNsYXNzIEV2ZW50TGlzdGVuZXJJbXBs
IDogcHVibGljIFNoYXJlZAorICAgIGNsYXNzIEV2ZW50TGlzdGVuZXJJbXBsIDogcHVibGljIFNo
YXJlZDxFdmVudExpc3RlbmVySW1wbD4KICAgICB7CiAgICAgcHVibGljOgogICAgICAgICBFdmVu
dExpc3RlbmVySW1wbCgpOwpJbmRleDoga2RvbS9scy9MU0V4Y2VwdGlvbkltcGwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20vbHMvTFNFeGNlcHRpb25J
bXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41CmRpZmYgLXAgLXUgLXIxLjUga2RvbS9s
cy9MU0V4Y2VwdGlvbkltcGwuY3BwCi0tLSBrZG9tL2xzL0xTRXhjZXB0aW9uSW1wbC5jcHAJNSBP
Y3QgMjAwNSAwNTozNjoyOSAtMDAwMAkxLjUKKysrIGtkb20vbHMvTFNFeGNlcHRpb25JbXBsLmNw
cAkxOCBPY3QgMjAwNSAwMDo0Mjo0MCAtMDAwMApAQCAtMjUsNyArMjUsNyBAQAogCiB1c2luZyBu
YW1lc3BhY2UgS0RPTTsKIAotTFNFeGNlcHRpb25JbXBsOjpMU0V4Y2VwdGlvbkltcGwodW5zaWdu
ZWQgc2hvcnQgY29kZSkgOiBTaGFyZWQoKQorTFNFeGNlcHRpb25JbXBsOjpMU0V4Y2VwdGlvbklt
cGwodW5zaWduZWQgc2hvcnQgY29kZSkgOiBTaGFyZWQ8TFNFeGNlcHRpb25JbXBsPigpCiB7CiAg
ICAgcmVmKCk7IC8vIEV4Y2VwdGlvbkltcGwgY2xhc3NlcyBuZWVkIHRvIHJlZiB0aGVtc2VsdmVz
KCkgYXMgaXQncyBqdXN0CiAgICAgICAgICAgIC8vIHZlcnkgY29udmllbmllbnQgdG8ganVzdCB1
c2UgJ3Rocm93IG5ldyBFeGNlcHRpb25JbXBsJyAuLi4KSW5kZXg6IGtkb20vbHMvTFNFeGNlcHRp
b25JbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2RvbS9s
cy9MU0V4Y2VwdGlvbkltcGwuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zCmRpZmYgLXAgLXUg
LXIxLjMga2RvbS9scy9MU0V4Y2VwdGlvbkltcGwuaAotLS0ga2RvbS9scy9MU0V4Y2VwdGlvbklt
cGwuaAkxIFNlcCAyMDA1IDA3OjMzOjUwIC0wMDAwCTEuMworKysga2RvbS9scy9MU0V4Y2VwdGlv
bkltcGwuaAkxOCBPY3QgMjAwNSAwMDo0Mjo0MCAtMDAwMApAQCAtMjcsNyArMjcsNyBAQAogCiBu
YW1lc3BhY2UgS0RPTQogewotICAgIGNsYXNzIExTRXhjZXB0aW9uSW1wbCA6IHB1YmxpYyBTaGFy
ZWQKKyAgICBjbGFzcyBMU0V4Y2VwdGlvbkltcGwgOiBwdWJsaWMgU2hhcmVkPExTRXhjZXB0aW9u
SW1wbD4KICAgICB7CiAgICAgcHVibGljOgogICAgICAgICBMU0V4Y2VwdGlvbkltcGwodW5zaWdu
ZWQgc2hvcnQgY29kZSk7CkluZGV4OiBrZG9tL2xzL0xTSW5wdXRJbXBsLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rZG9tL2xzL0xTSW5wdXRJbXBsLmNwcCx2
CnJldHJpZXZpbmcgcmV2aXNpb24gMS41CmRpZmYgLXAgLXUgLXIxLjUga2RvbS9scy9MU0lucHV0
SW1wbC5jcHAKLS0tIGtkb20vbHMvTFNJbnB1dEltcGwuY3BwCTUgT2N0IDIwMDUgMDU6MzY6Mjkg
LTAwMDAJMS41CisrKyBrZG9tL2xzL0xTSW5wdXRJbXBsLmNwcAkxOCBPY3QgMjAwNSAwMDo0Mjo0
MSAtMDAwMApAQCAtMzAsNyArMzAsNyBAQAogdXNpbmcgbmFtZXNwYWNlIEtET007CiAKIExTSW5w
dXRJbXBsOjpMU0lucHV0SW1wbCgpCi06IFNoYXJlZCgpLCBtX2NoYXJhY3RlclN0cmVhbSgwKSwg
bV9ieXRlU3RyZWFtKDApLCBtX3N0cmluZ0RhdGEoMCksIG1fc3lzdGVtSWQoMCksCis6IFNoYXJl
ZDxMU0lucHV0SW1wbD4oKSwgbV9jaGFyYWN0ZXJTdHJlYW0oMCksIG1fYnl0ZVN0cmVhbSgwKSwg
bV9zdHJpbmdEYXRhKDApLCBtX3N5c3RlbUlkKDApLAogICBtX3B1YmxpY0lkKDApLCBtX2Jhc2VV
UkkoMCksIG1fZW5jb2RpbmcoMCksIG1fY2VydGlmaWVkVGV4dChmYWxzZSkKIHsKIH0KSW5kZXg6
IGtkb20vbHMvTFNJbnB1dEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZH
U3VwcG9ydC9rZG9tL2xzL0xTSW5wdXRJbXBsLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNApk
aWZmIC1wIC11IC1yMS40IGtkb20vbHMvTFNJbnB1dEltcGwuaAotLS0ga2RvbS9scy9MU0lucHV0
SW1wbC5oCTEgU2VwIDIwMDUgMDc6MzM6NTAgLTAwMDAJMS40CisrKyBrZG9tL2xzL0xTSW5wdXRJ
bXBsLmgJMTggT2N0IDIwMDUgMDA6NDI6NDEgLTAwMDAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNw
YWNlIEtET00KICAgICBjbGFzcyBET01TdHJpbmc7CiAgICAgY2xhc3MgRE9NU3RyaW5nSW1wbDsK
IAotICAgIGNsYXNzIExTSW5wdXRJbXBsIDogcHVibGljIFNoYXJlZAorICAgIGNsYXNzIExTSW5w
dXRJbXBsIDogcHVibGljIFNoYXJlZDxMU0lucHV0SW1wbD4KICAgICB7CiAgICAgcHVibGljOgog
ICAgICAgICBMU0lucHV0SW1wbCgpOwpJbmRleDoga2RvbS9scy9MU091dHB1dEltcGwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20vbHMvTFNPdXRwdXRJ
bXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41CmRpZmYgLXAgLXUgLXIxLjUga2RvbS9s
cy9MU091dHB1dEltcGwuY3BwCi0tLSBrZG9tL2xzL0xTT3V0cHV0SW1wbC5jcHAJNSBPY3QgMjAw
NSAwNTozNjoyOSAtMDAwMAkxLjUKKysrIGtkb20vbHMvTFNPdXRwdXRJbXBsLmNwcAkxOCBPY3Qg
MjAwNSAwMDo0Mjo0MiAtMDAwMApAQCAtMjcsNyArMjcsNyBAQAogCiB1c2luZyBuYW1lc3BhY2Ug
S0RPTTsKIAotTFNPdXRwdXRJbXBsOjpMU091dHB1dEltcGwoKSA6IFNoYXJlZCgpLCBtX3N5c3Rl
bUlkKDApLCBtX2VuY29kaW5nKDApCitMU091dHB1dEltcGw6OkxTT3V0cHV0SW1wbCgpIDogU2hh
cmVkPExTT3V0cHV0SW1wbD4oKSwgbV9zeXN0ZW1JZCgwKSwgbV9lbmNvZGluZygwKQogewogfQog
CkluZGV4OiBrZG9tL2xzL0xTT3V0cHV0SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMv
cm9vdC9TVkdTdXBwb3J0L2tkb20vbHMvTFNPdXRwdXRJbXBsLmgsdgpyZXRyaWV2aW5nIHJldmlz
aW9uIDEuNApkaWZmIC1wIC11IC1yMS40IGtkb20vbHMvTFNPdXRwdXRJbXBsLmgKLS0tIGtkb20v
bHMvTFNPdXRwdXRJbXBsLmgJMSBTZXAgMjAwNSAwNzozMzo1MCAtMDAwMAkxLjQKKysrIGtkb20v
bHMvTFNPdXRwdXRJbXBsLmgJMTggT2N0IDIwMDUgMDA6NDI6NDIgLTAwMDAKQEAgLTMwLDcgKzMw
LDcgQEAgbmFtZXNwYWNlIEtET00KICAgICBjbGFzcyBET01TdHJpbmc7CiAgICAgY2xhc3MgRE9N
U3RyaW5nSW1wbDsKIAotICAgIGNsYXNzIExTT3V0cHV0SW1wbCA6IHB1YmxpYyBTaGFyZWQKKyAg
ICBjbGFzcyBMU091dHB1dEltcGwgOiBwdWJsaWMgU2hhcmVkPExTT3V0cHV0SW1wbD4KICAgICB7
CiAgICAgcHVibGljOgogICAgICAgICBMU091dHB1dEltcGwoKTsKSW5kZXg6IGtkb20vbHMvTFNQ
YXJzZXJGaWx0ZXJJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3Vw
cG9ydC9rZG9tL2xzL0xTUGFyc2VyRmlsdGVySW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9u
IDEuNQpkaWZmIC1wIC11IC1yMS41IGtkb20vbHMvTFNQYXJzZXJGaWx0ZXJJbXBsLmNwcAotLS0g
a2RvbS9scy9MU1BhcnNlckZpbHRlckltcGwuY3BwCTUgT2N0IDIwMDUgMDU6MzY6MjkgLTAwMDAJ
MS41CisrKyBrZG9tL2xzL0xTUGFyc2VyRmlsdGVySW1wbC5jcHAJMTggT2N0IDIwMDUgMDA6NDI6
NDIgLTAwMDAKQEAgLTI3LDcgKzI3LDcgQEAKIAogdXNpbmcgbmFtZXNwYWNlIEtET007CiAKLUxT
UGFyc2VyRmlsdGVySW1wbDo6TFNQYXJzZXJGaWx0ZXJJbXBsKCkgOiBTaGFyZWQoKQorTFNQYXJz
ZXJGaWx0ZXJJbXBsOjpMU1BhcnNlckZpbHRlckltcGwoKSA6IFNoYXJlZDxMU1BhcnNlckZpbHRl
ckltcGw+KCkKIHsKIH0KIApJbmRleDoga2RvbS9scy9MU1BhcnNlckZpbHRlckltcGwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rZG9tL2xzL0xTUGFyc2VyRmls
dGVySW1wbC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjMKZGlmZiAtcCAtdSAtcjEuMyBrZG9t
L2xzL0xTUGFyc2VyRmlsdGVySW1wbC5oCi0tLSBrZG9tL2xzL0xTUGFyc2VyRmlsdGVySW1wbC5o
CTEgU2VwIDIwMDUgMDc6MzM6NTAgLTAwMDAJMS4zCisrKyBrZG9tL2xzL0xTUGFyc2VyRmlsdGVy
SW1wbC5oCTE4IE9jdCAyMDA1IDAwOjQyOjQyIC0wMDAwCkBAIC0zMCw3ICszMCw3IEBAIG5hbWVz
cGFjZSBLRE9NCiAgICAgY2xhc3MgTm9kZUltcGw7CiAgICAgY2xhc3MgRWxlbWVudEltcGw7CiAK
LSAgICBjbGFzcyBMU1BhcnNlckZpbHRlckltcGwgOiBwdWJsaWMgU2hhcmVkCisgICAgY2xhc3Mg
TFNQYXJzZXJGaWx0ZXJJbXBsIDogcHVibGljIFNoYXJlZDxMU1BhcnNlckZpbHRlckltcGw+CiAg
ICAgewogICAgIHB1YmxpYzoKICAgICAgICAgTFNQYXJzZXJGaWx0ZXJJbXBsKCk7CkluZGV4OiBr
ZG9tL2xzL0xTUmVzb3VyY2VSZXNvbHZlckltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9j
dnMvcm9vdC9TVkdTdXBwb3J0L2tkb20vbHMvTFNSZXNvdXJjZVJlc29sdmVySW1wbC5jcHAsdgpy
ZXRyaWV2aW5nIHJldmlzaW9uIDEuNQpkaWZmIC1wIC11IC1yMS41IGtkb20vbHMvTFNSZXNvdXJj
ZVJlc29sdmVySW1wbC5jcHAKLS0tIGtkb20vbHMvTFNSZXNvdXJjZVJlc29sdmVySW1wbC5jcHAJ
NSBPY3QgMjAwNSAwNTozNjozMCAtMDAwMAkxLjUKKysrIGtkb20vbHMvTFNSZXNvdXJjZVJlc29s
dmVySW1wbC5jcHAJMTggT2N0IDIwMDUgMDA6NDI6NDIgLTAwMDAKQEAgLTI2LDcgKzI2LDcgQEAK
IAogdXNpbmcgbmFtZXNwYWNlIEtET007CiAKLUxTUmVzb3VyY2VSZXNvbHZlckltcGw6OkxTUmVz
b3VyY2VSZXNvbHZlckltcGwoKSA6IFNoYXJlZCgpCitMU1Jlc291cmNlUmVzb2x2ZXJJbXBsOjpM
U1Jlc291cmNlUmVzb2x2ZXJJbXBsKCkgOiBTaGFyZWQ8TFNSZXNvdXJjZVJlc29sdmVySW1wbD4o
KQogewogfQogCkluZGV4OiBrZG9tL2xzL0xTUmVzb3VyY2VSZXNvbHZlckltcGwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rZG9tL2xzL0xTUmVzb3VyY2VSZXNv
bHZlckltcGwuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zCmRpZmYgLXAgLXUgLXIxLjMga2Rv
bS9scy9MU1Jlc291cmNlUmVzb2x2ZXJJbXBsLmgKLS0tIGtkb20vbHMvTFNSZXNvdXJjZVJlc29s
dmVySW1wbC5oCTggU2VwIDIwMDUgMDg6MDM6MjggLTAwMDAJMS4zCisrKyBrZG9tL2xzL0xTUmVz
b3VyY2VSZXNvbHZlckltcGwuaAkxOCBPY3QgMjAwNSAwMDo0Mjo0MiAtMDAwMApAQCAtMjksNyAr
MjksNyBAQCBuYW1lc3BhY2UgS0RPTQogICAgIGNsYXNzIERPTVN0cmluZ0ltcGw7CiAgICAgY2xh
c3MgTFNJbnB1dEltcGw7CiAKLSAgICBjbGFzcyBMU1Jlc291cmNlUmVzb2x2ZXJJbXBsIDogcHVi
bGljIFNoYXJlZAorICAgIGNsYXNzIExTUmVzb3VyY2VSZXNvbHZlckltcGwgOiBwdWJsaWMgU2hh
cmVkPExTUmVzb3VyY2VSZXNvbHZlckltcGw+CiAgICAgewogICAgIHB1YmxpYzoKICAgICAgICAg
TFNSZXNvdXJjZVJlc29sdmVySW1wbCgpOwpJbmRleDoga2RvbS9scy9MU1NlcmlhbGl6ZXJJbXBs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rZG9tL2xzL0xT
U2VyaWFsaXplckltcGwuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjYKZGlmZiAtcCAtdSAt
cjEuNiBrZG9tL2xzL0xTU2VyaWFsaXplckltcGwuY3BwCi0tLSBrZG9tL2xzL0xTU2VyaWFsaXpl
ckltcGwuY3BwCTUgT2N0IDIwMDUgMDU6MzY6MzAgLTAwMDAJMS42CisrKyBrZG9tL2xzL0xTU2Vy
aWFsaXplckltcGwuY3BwCTE4IE9jdCAyMDA1IDAwOjQyOjQ0IC0wMDAwCkBAIC00OCw3ICs0OCw3
IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBLRE9NOwogCi1MU1NlcmlhbGl6ZXJJbXBsOjpMU1Nlcmlh
bGl6ZXJJbXBsKCkgOiBTaGFyZWQoKSwgbV9jb25maWcoMCksIG1fc2VyaWFsaXplckZpbHRlcigw
KQorTFNTZXJpYWxpemVySW1wbDo6TFNTZXJpYWxpemVySW1wbCgpIDogU2hhcmVkPExTU2VyaWFs
aXplckltcGw+KCksIG1fY29uZmlnKDApLCBtX3NlcmlhbGl6ZXJGaWx0ZXIoMCkKIHsKICAgICBt
X25ld0xpbmUgPSBuZXcgRE9NU3RyaW5nSW1wbCgiXG4iKTsKICAgICBtX25ld0xpbmUtPnJlZigp
OwpJbmRleDoga2RvbS9scy9MU1NlcmlhbGl6ZXJJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog
L2N2cy9yb290L1NWR1N1cHBvcnQva2RvbS9scy9MU1NlcmlhbGl6ZXJJbXBsLmgsdgpyZXRyaWV2
aW5nIHJldmlzaW9uIDEuNQpkaWZmIC1wIC11IC1yMS41IGtkb20vbHMvTFNTZXJpYWxpemVySW1w
bC5oCi0tLSBrZG9tL2xzL0xTU2VyaWFsaXplckltcGwuaAk4IFNlcCAyMDA1IDA4OjAzOjI4IC0w
MDAwCTEuNQorKysga2RvbS9scy9MU1NlcmlhbGl6ZXJJbXBsLmgJMTggT2N0IDIwMDUgMDA6NDI6
NDUgLTAwMDAKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIEtET00KICAgICBjbGFzcyBMU1Nl
cmlhbGl6ZXJGaWx0ZXJJbXBsOwogICAgIGNsYXNzIERvY3VtZW50VHlwZUltcGw7CiAKLSAgICBj
bGFzcyBMU1NlcmlhbGl6ZXJJbXBsIDogcHVibGljIFNoYXJlZAorICAgIGNsYXNzIExTU2VyaWFs
aXplckltcGwgOiBwdWJsaWMgU2hhcmVkPExTU2VyaWFsaXplckltcGw+CiAgICAgewogICAgIHB1
YmxpYzoKICAgICAgICAgTFNTZXJpYWxpemVySW1wbCgpOwpJbmRleDoga2RvbS9yYW5nZS9SYW5n
ZUV4Y2VwdGlvbkltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBw
b3J0L2tkb20vcmFuZ2UvUmFuZ2VFeGNlcHRpb25JbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNp
b24gMS41CmRpZmYgLXAgLXUgLXIxLjUga2RvbS9yYW5nZS9SYW5nZUV4Y2VwdGlvbkltcGwuY3Bw
Ci0tLSBrZG9tL3JhbmdlL1JhbmdlRXhjZXB0aW9uSW1wbC5jcHAJNSBPY3QgMjAwNSAwNTozNjoz
MyAtMDAwMAkxLjUKKysrIGtkb20vcmFuZ2UvUmFuZ2VFeGNlcHRpb25JbXBsLmNwcAkxOCBPY3Qg
MjAwNSAwMDo0Mjo0NiAtMDAwMApAQCAtMjUsNyArMjUsNyBAQAogCiB1c2luZyBuYW1lc3BhY2Ug
S0RPTTsKIAotUmFuZ2VFeGNlcHRpb25JbXBsOjpSYW5nZUV4Y2VwdGlvbkltcGwodW5zaWduZWQg
c2hvcnQgY29kZSkgOiBTaGFyZWQoKQorUmFuZ2VFeGNlcHRpb25JbXBsOjpSYW5nZUV4Y2VwdGlv
bkltcGwodW5zaWduZWQgc2hvcnQgY29kZSkgOiBTaGFyZWQ8UmFuZ2VFeGNlcHRpb25JbXBsPigp
CiB7CiAgICAgcmVmKCk7IC8vIEV4Y2VwdGlvbkltcGwgY2xhc3NlcyBuZWVkIHRvIHJlZiB0aGVt
c2VsdmVzKCkgYXMgaXQncyBqdXN0CiAgICAgICAgICAgIC8vIHZlcnkgY29udmllbmllbnQgdG8g
anVzdCB1c2UgJ3Rocm93IG5ldyBFeGNlcHRpb25JbXBsJyAuLi4KSW5kZXg6IGtkb20vcmFuZ2Uv
UmFuZ2VFeGNlcHRpb25JbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1
cHBvcnQva2RvbS9yYW5nZS9SYW5nZUV4Y2VwdGlvbkltcGwuaCx2CnJldHJpZXZpbmcgcmV2aXNp
b24gMS4zCmRpZmYgLXAgLXUgLXIxLjMga2RvbS9yYW5nZS9SYW5nZUV4Y2VwdGlvbkltcGwuaAot
LS0ga2RvbS9yYW5nZS9SYW5nZUV4Y2VwdGlvbkltcGwuaAkxIFNlcCAyMDA1IDA3OjMzOjU1IC0w
MDAwCTEuMworKysga2RvbS9yYW5nZS9SYW5nZUV4Y2VwdGlvbkltcGwuaAkxOCBPY3QgMjAwNSAw
MDo0Mjo0NiAtMDAwMApAQCAtMjcsNyArMjcsNyBAQAogCiBuYW1lc3BhY2UgS0RPTQogewotICAg
IGNsYXNzIFJhbmdlRXhjZXB0aW9uSW1wbCA6IHB1YmxpYyBTaGFyZWQKKyAgICBjbGFzcyBSYW5n
ZUV4Y2VwdGlvbkltcGwgOiBwdWJsaWMgU2hhcmVkPFJhbmdlRXhjZXB0aW9uSW1wbD4KICAgICB7
CiAgICAgcHVibGljOgogICAgICAgICBSYW5nZUV4Y2VwdGlvbkltcGwodW5zaWduZWQgc2hvcnQg
Y29kZSk7CkluZGV4OiBrZG9tL3JhbmdlL1JhbmdlSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmls
ZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2RvbS9yYW5nZS9SYW5nZUltcGwuY3BwLHYKcmV0cmll
dmluZyByZXZpc2lvbiAxLjUKZGlmZiAtcCAtdSAtcjEuNSBrZG9tL3JhbmdlL1JhbmdlSW1wbC5j
cHAKLS0tIGtkb20vcmFuZ2UvUmFuZ2VJbXBsLmNwcAk1IE9jdCAyMDA1IDA1OjM2OjMzIC0wMDAw
CTEuNQorKysga2RvbS9yYW5nZS9SYW5nZUltcGwuY3BwCTE4IE9jdCAyMDA1IDAwOjQyOjQ5IC0w
MDAwCkBAIC00MCw3ICs0MCw3IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBLRE9NOwogCi1SYW5nZUlt
cGw6OlJhbmdlSW1wbChEb2N1bWVudFB0ciAqX293bmVyRG9jdW1lbnQpICA6IFNoYXJlZCgpCitS
YW5nZUltcGw6OlJhbmdlSW1wbChEb2N1bWVudFB0ciAqX293bmVyRG9jdW1lbnQpICA6IFNoYXJl
ZDxSYW5nZUltcGw+KCkKIHsKICAgICBtX293bmVyRG9jdW1lbnQgPSBfb3duZXJEb2N1bWVudDsK
ICAgICBtX293bmVyRG9jdW1lbnQtPnJlZigpOwpAQCAtNTgsNyArNTgsNyBAQCBSYW5nZUltcGw6
OlJhbmdlSW1wbChEb2N1bWVudFB0ciAqX293bmVyCiAKIFJhbmdlSW1wbDo6UmFuZ2VJbXBsKERv
Y3VtZW50UHRyICpfb3duZXJEb2N1bWVudCwKICAgICAgICAgICAgICAgICAgICAgIE5vZGVJbXBs
ICpfc3RhcnRDb250YWluZXIsIGxvbmcgX3N0YXJ0T2Zmc2V0LAotICAgICAgICAgICAgICAgICAg
ICAgTm9kZUltcGwgKl9lbmRDb250YWluZXIsIGxvbmcgX2VuZE9mZnNldCkgOiBTaGFyZWQoKQor
ICAgICAgICAgICAgICAgICAgICAgTm9kZUltcGwgKl9lbmRDb250YWluZXIsIGxvbmcgX2VuZE9m
ZnNldCkgOiBTaGFyZWQ8UmFuZ2VJbXBsPigpCiB7CiAgICAgbV9vd25lckRvY3VtZW50ID0gX293
bmVyRG9jdW1lbnQ7CiAgICAgbV9vd25lckRvY3VtZW50LT5yZWYoKTsKSW5kZXg6IGtkb20vcmFu
Z2UvUmFuZ2VJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQv
a2RvbS9yYW5nZS9SYW5nZUltcGwuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40CmRpZmYgLXAg
LXUgLXIxLjQga2RvbS9yYW5nZS9SYW5nZUltcGwuaAotLS0ga2RvbS9yYW5nZS9SYW5nZUltcGwu
aAk4IFNlcCAyMDA1IDA4OjAzOjMwIC0wMDAwCTEuNAorKysga2RvbS9yYW5nZS9SYW5nZUltcGwu
aAkxOCBPY3QgMjAwNSAwMDo0Mjo0OSAtMDAwMApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBEb2N1
bWVudFB0cjsKIGNsYXNzIERPTVN0cmluZ0ltcGw7CiBjbGFzcyBEb2N1bWVudEZyYWdtZW50SW1w
bDsKIAotY2xhc3MgUmFuZ2VJbXBsIDogcHVibGljIFNoYXJlZAorY2xhc3MgUmFuZ2VJbXBsIDog
cHVibGljIFNoYXJlZDxSYW5nZUltcGw+CiB7CiBmcmllbmQgY2xhc3MgRG9jdW1lbnRJbXBsOwog
cHVibGljOgpJbmRleDoga2RvbS90cmF2ZXJzYWwvTm9kZUZpbHRlckltcGwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20vdHJhdmVyc2FsL05vZGVGaWx0
ZXJJbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41CmRpZmYgLXAgLXUgLXIxLjUga2Rv
bS90cmF2ZXJzYWwvTm9kZUZpbHRlckltcGwuY3BwCi0tLSBrZG9tL3RyYXZlcnNhbC9Ob2RlRmls
dGVySW1wbC5jcHAJNSBPY3QgMjAwNSAwNTozNjozNCAtMDAwMAkxLjUKKysrIGtkb20vdHJhdmVy
c2FsL05vZGVGaWx0ZXJJbXBsLmNwcAkxOCBPY3QgMjAwNSAwMDo0Mjo0OSAtMDAwMApAQCAtMzEs
NyArMzEsNyBAQAogdXNpbmcgbmFtZXNwYWNlIEtET007CiAKIE5vZGVGaWx0ZXJJbXBsOjpOb2Rl
RmlsdGVySW1wbChOb2RlRmlsdGVyQ29uZGl0aW9uICpjb25kaXRpb24pCi06IFNoYXJlZCgpLCBt
X2NvbmRpdGlvbihjb25kaXRpb24pCis6IFNoYXJlZDxOb2RlRmlsdGVySW1wbD4oKSwgbV9jb25k
aXRpb24oY29uZGl0aW9uKQogewogICAgIGlmKG1fY29uZGl0aW9uKQogICAgICAgICBtX2NvbmRp
dGlvbi0+cmVmKCk7CkluZGV4OiBrZG9tL3RyYXZlcnNhbC9Ob2RlRmlsdGVySW1wbC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20vdHJhdmVyc2FsL05vZGVG
aWx0ZXJJbXBsLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNApkaWZmIC1wIC11IC1yMS40IGtk
b20vdHJhdmVyc2FsL05vZGVGaWx0ZXJJbXBsLmgKLS0tIGtkb20vdHJhdmVyc2FsL05vZGVGaWx0
ZXJJbXBsLmgJMSBTZXAgMjAwNSAwNzozMzo1NyAtMDAwMAkxLjQKKysrIGtkb20vdHJhdmVyc2Fs
L05vZGVGaWx0ZXJJbXBsLmgJMTggT2N0IDIwMDUgMDA6NDI6NDkgLTAwMDAKQEAgLTM2LDcgKzM2
LDcgQEAgbmFtZXNwYWNlIEtET00KICAgICBjbGFzcyBOb2RlSW1wbDsKICAgICBjbGFzcyBOb2Rl
RmlsdGVyQ29uZGl0aW9uOwogCi0gICAgY2xhc3MgTm9kZUZpbHRlckltcGwgOiBwdWJsaWMgU2hh
cmVkCisgICAgY2xhc3MgTm9kZUZpbHRlckltcGwgOiBwdWJsaWMgU2hhcmVkPE5vZGVGaWx0ZXJJ
bXBsPgogICAgIHsKICAgICBwdWJsaWM6CiAgICAgICAgIE5vZGVGaWx0ZXJJbXBsKE5vZGVGaWx0
ZXJDb25kaXRpb24gKik7CkBAIC01MSwxMiArNTEsMTMgQEAgbmFtZXNwYWNlIEtET00KICAgICAg
ICAgTm9kZUZpbHRlckNvbmRpdGlvbiAqbV9jb25kaXRpb247CiAgICAgfTsKIAotICAgIGNsYXNz
IE5vZGVGaWx0ZXJDb25kaXRpb24gOiBwdWJsaWMgU2hhcmVkCisgICAgY2xhc3MgTm9kZUZpbHRl
ckNvbmRpdGlvbiA6IHB1YmxpYyBTaGFyZWQ8Tm9kZUZpbHRlckNvbmRpdGlvbj4KICAgICB7CiAg
ICAgcHVibGljOgotICAgICAgICBOb2RlRmlsdGVyQ29uZGl0aW9uKCkgOiBTaGFyZWQoKSB7IH0K
KyAgICAgICAgTm9kZUZpbHRlckNvbmRpdGlvbigpIDogU2hhcmVkPE5vZGVGaWx0ZXJDb25kaXRp
b24+KCkgeyB9CisgICAgICAgIHZpcnR1YWwgfk5vZGVGaWx0ZXJDb25kaXRpb24oKSB7IH0KIAot
ICAgICAgICB2aXJ0dWFsIHNob3J0IGFjY2VwdE5vZGUoTm9kZUltcGwgKm4pIGNvbnN0IHsgcmV0
dXJuIEZJTFRFUl9BQ0NFUFQ7IH0KKyAgICAgICAgdmlydHVhbCBzaG9ydCBhY2NlcHROb2RlKE5v
ZGVJbXBsICogLypuKi8pIGNvbnN0IHsgcmV0dXJuIEZJTFRFUl9BQ0NFUFQ7IH0KICAgICB9Owog
fTsKIApJbmRleDoga2RvbS90cmF2ZXJzYWwvVHJhdmVyc2FsSW1wbC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS
Q1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2RvbS90cmF2ZXJzYWwvVHJhdmVyc2FsSW1w
bC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNQpkaWZmIC1wIC11IC1yMS41IGtkb20vdHJh
dmVyc2FsL1RyYXZlcnNhbEltcGwuY3BwCi0tLSBrZG9tL3RyYXZlcnNhbC9UcmF2ZXJzYWxJbXBs
LmNwcAk1IE9jdCAyMDA1IDA1OjM2OjM0IC0wMDAwCTEuNQorKysga2RvbS90cmF2ZXJzYWwvVHJh
dmVyc2FsSW1wbC5jcHAJMTggT2N0IDIwMDUgMDA6NDI6NDkgLTAwMDAKQEAgLTMyLDcgKzMyLDcg
QEAgdXNpbmcgbmFtZXNwYWNlIEtET007CiBUcmF2ZXJzYWxJbXBsOjpUcmF2ZXJzYWxJbXBsKE5v
ZGVJbXBsICpuLCBzaG9ydCBzaG93LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb2Rl
RmlsdGVySW1wbCAqbm9kZUZpbHRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCBleHBhbmRFbnRpdHlSZWZlcmVuY2VzKQotOiBTaGFyZWQoKSwgbV9yb290KG4pLCBtX3doYXRU
b1Nob3coc2hvdyksCis6IFNoYXJlZDxUcmF2ZXJzYWxJbXBsPigpLCBtX3Jvb3QobiksIG1fd2hh
dFRvU2hvdyhzaG93KSwKIG1fZmlsdGVyKG5vZGVGaWx0ZXIpLCBtX2V4cGFuZEVudGl0eVJlZmVy
ZW5jZXMoZXhwYW5kRW50aXR5UmVmZXJlbmNlcykKIHsKICAgICBpZihyb290KCkpCkluZGV4OiBr
ZG9tL3RyYXZlcnNhbC9UcmF2ZXJzYWxJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9y
b290L1NWR1N1cHBvcnQva2RvbS90cmF2ZXJzYWwvVHJhdmVyc2FsSW1wbC5oLHYKcmV0cmlldmlu
ZyByZXZpc2lvbiAxLjMKZGlmZiAtcCAtdSAtcjEuMyBrZG9tL3RyYXZlcnNhbC9UcmF2ZXJzYWxJ
bXBsLmgKLS0tIGtkb20vdHJhdmVyc2FsL1RyYXZlcnNhbEltcGwuaAkxIFNlcCAyMDA1IDA3OjMz
OjU3IC0wMDAwCTEuMworKysga2RvbS90cmF2ZXJzYWwvVHJhdmVyc2FsSW1wbC5oCTE4IE9jdCAy
MDA1IDAwOjQyOjQ5IC0wMDAwCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBLRE9NCiAgICAg
Y2xhc3MgTm9kZUltcGw7CiAgICAgY2xhc3MgTm9kZUZpbHRlckltcGw7CiAKLSAgICBjbGFzcyBU
cmF2ZXJzYWxJbXBsIDogcHVibGljIFNoYXJlZAorICAgIGNsYXNzIFRyYXZlcnNhbEltcGwgOiBw
dWJsaWMgU2hhcmVkPFRyYXZlcnNhbEltcGw+CiAgICAgewogICAgIHB1YmxpYzoKICAgICAgICAg
VHJhdmVyc2FsSW1wbChOb2RlSW1wbCAqbiwgc2hvcnQgc2hvdywKSW5kZXg6IGtkb20vdmlld3Mv
QWJzdHJhY3RWaWV3SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1
cHBvcnQva2RvbS92aWV3cy9BYnN0cmFjdFZpZXdJbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNp
b24gMS41CmRpZmYgLXAgLXUgLXIxLjUga2RvbS92aWV3cy9BYnN0cmFjdFZpZXdJbXBsLmNwcAot
LS0ga2RvbS92aWV3cy9BYnN0cmFjdFZpZXdJbXBsLmNwcAk1IE9jdCAyMDA1IDA1OjM2OjM1IC0w
MDAwCTEuNQorKysga2RvbS92aWV3cy9BYnN0cmFjdFZpZXdJbXBsLmNwcAkxOCBPY3QgMjAwNSAw
MDo0Mjo0OSAtMDAwMApAQCAtMjksNyArMjksNyBAQAogCiB1c2luZyBuYW1lc3BhY2UgS0RPTTsK
IAotQWJzdHJhY3RWaWV3SW1wbDo6QWJzdHJhY3RWaWV3SW1wbCgpIDogU2hhcmVkKCkKK0Fic3Ry
YWN0Vmlld0ltcGw6OkFic3RyYWN0Vmlld0ltcGwoKSA6IFNoYXJlZDxBYnN0cmFjdFZpZXdJbXBs
PigpCiB7CiAgICAgbV9kb2N1bWVudFZpZXcgPSAwOwogfQpJbmRleDoga2RvbS92aWV3cy9BYnN0
cmFjdFZpZXdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQv
a2RvbS92aWV3cy9BYnN0cmFjdFZpZXdJbXBsLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNApk
aWZmIC1wIC11IC1yMS40IGtkb20vdmlld3MvQWJzdHJhY3RWaWV3SW1wbC5oCi0tLSBrZG9tL3Zp
ZXdzL0Fic3RyYWN0Vmlld0ltcGwuaAkxIFNlcCAyMDA1IDA3OjMzOjU5IC0wMDAwCTEuNAorKysg
a2RvbS92aWV3cy9BYnN0cmFjdFZpZXdJbXBsLmgJMTggT2N0IDIwMDUgMDA6NDI6NDkgLTAwMDAK
QEAgLTMxLDcgKzMxLDcgQEAKIG5hbWVzcGFjZSBLRE9NCiB7CiAgICAgY2xhc3MgRG9jdW1lbnRW
aWV3SW1wbDsKLSAgICBjbGFzcyBBYnN0cmFjdFZpZXdJbXBsIDogcHVibGljIFNoYXJlZAorICAg
IGNsYXNzIEFic3RyYWN0Vmlld0ltcGwgOiBwdWJsaWMgU2hhcmVkPEFic3RyYWN0Vmlld0ltcGw+
CiAgICAgewogICAgIHB1YmxpYzoKICAgICAgICAgQWJzdHJhY3RWaWV3SW1wbCgpOwpJbmRleDog
a2RvbS94cGF0aC9YUGF0aEV4Y2VwdGlvbkltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zz
L3Jvb3QvU1ZHU3VwcG9ydC9rZG9tL3hwYXRoL1hQYXRoRXhjZXB0aW9uSW1wbC5oLHYKcmV0cmll
dmluZyByZXZpc2lvbiAxLjIKZGlmZiAtcCAtdSAtcjEuMiBrZG9tL3hwYXRoL1hQYXRoRXhjZXB0
aW9uSW1wbC5oCi0tLSBrZG9tL3hwYXRoL1hQYXRoRXhjZXB0aW9uSW1wbC5oCTEgU2VwIDIwMDUg
MDc6MzQ6MDAgLTAwMDAJMS4yCisrKyBrZG9tL3hwYXRoL1hQYXRoRXhjZXB0aW9uSW1wbC5oCTE4
IE9jdCAyMDA1IDAwOjQyOjQ5IC0wMDAwCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBLRE9N
CiBuYW1lc3BhY2UgWFBhdGgKIHsKIAotY2xhc3MgWFBhdGhFeGNlcHRpb25JbXBsIDogcHVibGlj
IFNoYXJlZAorY2xhc3MgWFBhdGhFeGNlcHRpb25JbXBsIDogcHVibGljIFNoYXJlZDxYUGF0aEV4
Y2VwdGlvbkltcGw+CiB7CiAgICAgcHVibGljOgogICAgICAgICBYUGF0aEV4Y2VwdGlvbkltcGwo
IHVuc2lnbmVkIHNob3J0IGNvZGUgKTsKSW5kZXg6IGtkb20veHBhdGgvWFBhdGhFeHByZXNzaW9u
SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20veHBh
dGgvWFBhdGhFeHByZXNzaW9uSW1wbC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjIKZGlmZiAt
cCAtdSAtcjEuMiBrZG9tL3hwYXRoL1hQYXRoRXhwcmVzc2lvbkltcGwuaAotLS0ga2RvbS94cGF0
aC9YUGF0aEV4cHJlc3Npb25JbXBsLmgJMSBTZXAgMjAwNSAwNzozNDowMCAtMDAwMAkxLjIKKysr
IGtkb20veHBhdGgvWFBhdGhFeHByZXNzaW9uSW1wbC5oCTE4IE9jdCAyMDA1IDAwOjQyOjQ5IC0w
MDAwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBYUGF0aAogY2xhc3MgWFBhdGhOU1Jlc29s
dmVySW1wbDsKIGNsYXNzIFhQYXRoUmVzdWx0SW1wbDsKIAotY2xhc3MgWFBhdGhFeHByZXNzaW9u
SW1wbCA6IHB1YmxpYyBTaGFyZWQKK2NsYXNzIFhQYXRoRXhwcmVzc2lvbkltcGwgOiBwdWJsaWMg
U2hhcmVkPFhQYXRoRXhwcmVzc2lvbkltcGw+CiB7CiAgICAgcHVibGljOgogICAgICAgICBYUGF0
aEV4cHJlc3Npb25JbXBsKCBET01TdHJpbmdJbXBsICpleHByZXNzaW9uLApJbmRleDoga2RvbS94
cGF0aC9YUGF0aE5TUmVzb2x2ZXJJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290
L1NWR1N1cHBvcnQva2RvbS94cGF0aC9YUGF0aE5TUmVzb2x2ZXJJbXBsLmgsdgpyZXRyaWV2aW5n
IHJldmlzaW9uIDEuMgpkaWZmIC1wIC11IC1yMS4yIGtkb20veHBhdGgvWFBhdGhOU1Jlc29sdmVy
SW1wbC5oCi0tLSBrZG9tL3hwYXRoL1hQYXRoTlNSZXNvbHZlckltcGwuaAkxIFNlcCAyMDA1IDA3
OjM0OjAxIC0wMDAwCTEuMgorKysga2RvbS94cGF0aC9YUGF0aE5TUmVzb2x2ZXJJbXBsLmgJMTgg
T2N0IDIwMDUgMDA6NDI6NDkgLTAwMDAKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgTm9kZUltcGw7
CiBuYW1lc3BhY2UgWFBhdGgKIHsKIAotY2xhc3MgWFBhdGhOU1Jlc29sdmVySW1wbCA6IHB1Ymxp
YyBTaGFyZWQKK2NsYXNzIFhQYXRoTlNSZXNvbHZlckltcGwgOiBwdWJsaWMgU2hhcmVkPFhQYXRo
TlNSZXNvbHZlckltcGw+CiB7CiAgICAgcHVibGljOgogICAgICAgICBYUGF0aE5TUmVzb2x2ZXJJ
bXBsKCBOb2RlSW1wbCAqbm9kZSApOwpJbmRleDoga2RvbS94cGF0aC9YUGF0aFJlc3VsdEltcGwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rZG9tL3hwYXRoL1hQ
YXRoUmVzdWx0SW1wbC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjIKZGlmZiAtcCAtdSAtcjEu
MiBrZG9tL3hwYXRoL1hQYXRoUmVzdWx0SW1wbC5oCi0tLSBrZG9tL3hwYXRoL1hQYXRoUmVzdWx0
SW1wbC5oCTEgU2VwIDIwMDUgMDc6MzQ6MDEgLTAwMDAJMS4yCisrKyBrZG9tL3hwYXRoL1hQYXRo
UmVzdWx0SW1wbC5oCTE4IE9jdCAyMDA1IDAwOjQyOjUwIC0wMDAwCkBAIC0zOCw3ICszOCw3IEBA
IGNsYXNzIE5vZGVJbXBsOwogbmFtZXNwYWNlIFhQYXRoCiB7CiAKLWNsYXNzIFhQYXRoUmVzdWx0
SW1wbCA6IHB1YmxpYyBTaGFyZWQKK2NsYXNzIFhQYXRoUmVzdWx0SW1wbCA6IHB1YmxpYyBTaGFy
ZWQ8WFBhdGhSZXN1bHRJbXBsPgogewogICAgIHB1YmxpYzoKICAgICAgICAgWFBhdGhSZXN1bHRJ
bXBsKCk7CkluZGV4OiBrZG9tL3hwb2ludGVyL05CQ0ltcGwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp
bGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20veHBvaW50ZXIvTkJDSW1wbC5jcHAsdgpyZXRy
aWV2aW5nIHJldmlzaW9uIDEuNApkaWZmIC1wIC11IC1yMS40IGtkb20veHBvaW50ZXIvTkJDSW1w
bC5jcHAKLS0tIGtkb20veHBvaW50ZXIvTkJDSW1wbC5jcHAJNSBPY3QgMjAwNSAwNTozNjo0MCAt
MDAwMAkxLjQKKysrIGtkb20veHBvaW50ZXIvTkJDSW1wbC5jcHAJMTggT2N0IDIwMDUgMDA6NDI6
NTAgLTAwMDAKQEAgLTI5LDcgKzI5LDcgQEAKIHVzaW5nIG5hbWVzcGFjZSBLRE9NOwogdXNpbmcg
bmFtZXNwYWNlIEtET006OlhQb2ludGVyOwogCi1OQkNJbXBsOjpOQkNJbXBsKE5CQ0ltcGwgKnBh
cmVudCkgOiAvKiBYUGF0aE5TUmVzb2x2ZXJJbXBsKCksICovIFNoYXJlZCgpLCBtX3BhcmVudChw
YXJlbnQpCitOQkNJbXBsOjpOQkNJbXBsKE5CQ0ltcGwgKnBhcmVudCkgOiAvKiBYUGF0aE5TUmVz
b2x2ZXJJbXBsKCksICovIFNoYXJlZDxOQkNJbXBsPigpLCBtX3BhcmVudChwYXJlbnQpCiB7CiAg
ICAgLyogUmlnZyB0aGUgImluaXRpYWwgbmFtZXNwYWNlIGJpbmRpbmcgY29udGV4dCIuIFdlIGNh
bid0IHVzZSBhZGRNYXBwaW5nLAogICAgICAqIGJlY2F1c2UgaXQncyBtZW50IGZvciBtZXJlIG1v
cnRhbHMgd2hvIGFyZW4ndCBhbGxvd2VkIHRvIHJlLXdyaXRlIHRoZSB3b3JsZC4gKi8KSW5kZXg6
IGtkb20veHBvaW50ZXIvTkJDSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9T
VkdTdXBwb3J0L2tkb20veHBvaW50ZXIvTkJDSW1wbC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAx
LjMKZGlmZiAtcCAtdSAtcjEuMyBrZG9tL3hwb2ludGVyL05CQ0ltcGwuaAotLS0ga2RvbS94cG9p
bnRlci9OQkNJbXBsLmgJMSBTZXAgMjAwNSAwNzozNDowOCAtMDAwMAkxLjMKKysrIGtkb20veHBv
aW50ZXIvTkJDSW1wbC5oCTE4IE9jdCAyMDA1IDAwOjQyOjUwIC0wMDAwCkBAIC0zNiw3ICszNiw3
IEBAIGNsYXNzIERPTVN0cmluZ0ltcGw7CiAKIG5hbWVzcGFjZSBYUG9pbnRlcgogewotICAgIGNs
YXNzIE5CQ0ltcGwgOiBwdWJsaWMgU2hhcmVkIC8vIDogcHVibGljIFhQYXRoTlNSZXNvbHZlcklt
cGwKKyAgICBjbGFzcyBOQkNJbXBsIDogcHVibGljIFNoYXJlZDxOQkNJbXBsPiAvLyA6IHB1Ymxp
YyBYUGF0aE5TUmVzb2x2ZXJJbXBsCiAgICAgewogICAgIHB1YmxpYzoKICAgICAgICAgTkJDSW1w
bChOQkNJbXBsICpwYXJlbnQpOwpJbmRleDoga2RvbS94cG9pbnRlci9Qb2ludGVyUGFydEltcGwu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20veHBvaW50
ZXIvUG9pbnRlclBhcnRJbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41CmRpZmYgLXAg
LXUgLXIxLjUga2RvbS94cG9pbnRlci9Qb2ludGVyUGFydEltcGwuY3BwCi0tLSBrZG9tL3hwb2lu
dGVyL1BvaW50ZXJQYXJ0SW1wbC5jcHAJNSBPY3QgMjAwNSAwNTozNjo0MCAtMDAwMAkxLjUKKysr
IGtkb20veHBvaW50ZXIvUG9pbnRlclBhcnRJbXBsLmNwcAkxOCBPY3QgMjAwNSAwMDo0Mjo1MCAt
MDAwMApAQCAtMzMsNyArMzMsNyBAQCB1c2luZyBuYW1lc3BhY2UgS0RPTTsKIHVzaW5nIG5hbWVz
cGFjZSBLRE9NOjpYUG9pbnRlcjsKIAogUG9pbnRlclBhcnRJbXBsOjpQb2ludGVyUGFydEltcGwo
RE9NU3RyaW5nSW1wbCAqbmFtZSwgRE9NU3RyaW5nSW1wbCAqc2NoZW1lRGF0YSwgTkJDSW1wbCAq
bmJjKQotOiBTaGFyZWQoKSwgbV9kYXRhKHNjaGVtZURhdGEpLCBtX25hbWUobmFtZSksIG1fbmJj
KG5iYykKKzogU2hhcmVkPFBvaW50ZXJQYXJ0SW1wbD4oKSwgbV9kYXRhKHNjaGVtZURhdGEpLCBt
X25hbWUobmFtZSksIG1fbmJjKG5iYykKIHsKICAgICBRX0FTU0VSVChtX25hbWUpOwogICAgIFFf
QVNTRVJUKG1fZGF0YSk7CkluZGV4OiBrZG9tL3hwb2ludGVyL1BvaW50ZXJQYXJ0SW1wbC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20veHBvaW50ZXIvUG9p
bnRlclBhcnRJbXBsLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMwpkaWZmIC1wIC11IC1yMS4z
IGtkb20veHBvaW50ZXIvUG9pbnRlclBhcnRJbXBsLmgKLS0tIGtkb20veHBvaW50ZXIvUG9pbnRl
clBhcnRJbXBsLmgJMSBTZXAgMjAwNSAwNzozNDowOCAtMDAwMAkxLjMKKysrIGtkb20veHBvaW50
ZXIvUG9pbnRlclBhcnRJbXBsLmgJMTggT2N0IDIwMDUgMDA6NDI6NTAgLTAwMDAKQEAgLTUwLDcg
KzUwLDcgQEAgbmFtZXNwYWNlIFhQb2ludGVyCiAgICAgICoKICAgICAgKiBAYXV0aG9yIEZyYW5z
IEVuZ2xpY2ggPGZyYW5zLmVuZ2xpY2hAdGVsaWEuY29tPgogICAgICAqLwotICAgIGNsYXNzIFBv
aW50ZXJQYXJ0SW1wbCA6IHB1YmxpYyBTaGFyZWQKKyAgICBjbGFzcyBQb2ludGVyUGFydEltcGwg
OiBwdWJsaWMgU2hhcmVkPFBvaW50ZXJQYXJ0SW1wbD4KICAgICB7CiAgICAgcHVibGljOgogICAg
ICAgICAgLyoqCkluZGV4OiBrZG9tL3hwb2ludGVyL1hQb2ludGVyRXhjZXB0aW9uSW1wbC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2RvbS94cG9pbnRlci9Y
UG9pbnRlckV4Y2VwdGlvbkltcGwuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjQKZGlmZiAt
cCAtdSAtcjEuNCBrZG9tL3hwb2ludGVyL1hQb2ludGVyRXhjZXB0aW9uSW1wbC5jcHAKLS0tIGtk
b20veHBvaW50ZXIvWFBvaW50ZXJFeGNlcHRpb25JbXBsLmNwcAk1IE9jdCAyMDA1IDA1OjM2OjQx
IC0wMDAwCTEuNAorKysga2RvbS94cG9pbnRlci9YUG9pbnRlckV4Y2VwdGlvbkltcGwuY3BwCTE4
IE9jdCAyMDA1IDAwOjQyOjUwIC0wMDAwCkBAIC0yNiw3ICsyNiw3IEBACiB1c2luZyBuYW1lc3Bh
Y2UgS0RPTTsKIHVzaW5nIG5hbWVzcGFjZSBLRE9NOjpYUG9pbnRlcjsKIAotWFBvaW50ZXJFeGNl
cHRpb25JbXBsOjpYUG9pbnRlckV4Y2VwdGlvbkltcGwodW5zaWduZWQgc2hvcnQgY29kZSkgOiBT
aGFyZWQoKQorWFBvaW50ZXJFeGNlcHRpb25JbXBsOjpYUG9pbnRlckV4Y2VwdGlvbkltcGwodW5z
aWduZWQgc2hvcnQgY29kZSkgOiBTaGFyZWQ8WFBvaW50ZXJFeGNlcHRpb25JbXBsPigpCiB7CiAg
ICAgcmVmKCk7IC8qIFNlZSBjb21tZW50IGluIERPTUV4Y2VwdGlvbkltcGwuY2MgKi8KICAgICAg
ICAgIApJbmRleDoga2RvbS94cG9pbnRlci9YUG9pbnRlckV4Y2VwdGlvbkltcGwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rZG9tL3hwb2ludGVyL1hQb2ludGVy
RXhjZXB0aW9uSW1wbC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjIKZGlmZiAtcCAtdSAtcjEu
MiBrZG9tL3hwb2ludGVyL1hQb2ludGVyRXhjZXB0aW9uSW1wbC5oCi0tLSBrZG9tL3hwb2ludGVy
L1hQb2ludGVyRXhjZXB0aW9uSW1wbC5oCTEgU2VwIDIwMDUgMDc6MzQ6MDkgLTAwMDAJMS4yCisr
KyBrZG9tL3hwb2ludGVyL1hQb2ludGVyRXhjZXB0aW9uSW1wbC5oCTE4IE9jdCAyMDA1IDAwOjQy
OjUwIC0wMDAwCkBAIC0zMCw3ICszMCw3IEBAIG5hbWVzcGFjZSBLRE9NCiAKIG5hbWVzcGFjZSBY
UG9pbnRlcgogewotICAgIGNsYXNzIFhQb2ludGVyRXhjZXB0aW9uSW1wbCA6IHB1YmxpYyBTaGFy
ZWQKKyAgICBjbGFzcyBYUG9pbnRlckV4Y2VwdGlvbkltcGwgOiBwdWJsaWMgU2hhcmVkPFhQb2lu
dGVyRXhjZXB0aW9uSW1wbD4KICAgICB7CiAgICAgcHVibGljOgogICAgICAgICBYUG9pbnRlckV4
Y2VwdGlvbkltcGwodW5zaWduZWQgc2hvcnQgY29kZSk7CkluZGV4OiBrZG9tL3hwb2ludGVyL1hQ
b2ludGVyRXhwcmVzc2lvbkltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9T
VkdTdXBwb3J0L2tkb20veHBvaW50ZXIvWFBvaW50ZXJFeHByZXNzaW9uSW1wbC5jcHAsdgpyZXRy
aWV2aW5nIHJldmlzaW9uIDEuNQpkaWZmIC1wIC11IC1yMS41IGtkb20veHBvaW50ZXIvWFBvaW50
ZXJFeHByZXNzaW9uSW1wbC5jcHAKLS0tIGtkb20veHBvaW50ZXIvWFBvaW50ZXJFeHByZXNzaW9u
SW1wbC5jcHAJNSBPY3QgMjAwNSAwNTozNjo0MSAtMDAwMAkxLjUKKysrIGtkb20veHBvaW50ZXIv
WFBvaW50ZXJFeHByZXNzaW9uSW1wbC5jcHAJMTggT2N0IDIwMDUgMDA6NDI6NTAgLTAwMDAKQEAg
LTIxLDkgKzIxLDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSA8cTN2
YWx1ZWxpc3QuaD4KLQotI2luY2x1ZGUgImtkb20vU2hhcmVkLmgiCisjaW5jbHVkZSAiU2hhcmVk
LmgiCiAjaW5jbHVkZSAiTm9kZUltcGwuaCIKICNpbmNsdWRlICJrZG9teHBvaW50ZXIuaCIKICNp
bmNsdWRlICJEb2N1bWVudEltcGwuaCIKQEAgLTM3LDcgKzM1LDcgQEAgdXNpbmcgbmFtZXNwYWNl
IEtET007CiB1c2luZyBuYW1lc3BhY2UgS0RPTTo6WFBvaW50ZXI7CiAKIFhQb2ludGVyRXhwcmVz
c2lvbkltcGw6OlhQb2ludGVyRXhwcmVzc2lvbkltcGwoRE9NU3RyaW5nSW1wbCAqcmF3LCBOb2Rl
SW1wbCAqciwgRG9jdW1lbnRJbXBsICpjb250ZXh0KQotOiBTaGFyZWQoKSwgbV9pc1Nob3J0SGFu
ZChmYWxzZSksIG1fcG9pbnRlcihyYXcpLCBtX3JlbGF0ZWROb2RlKHIpLCBtX2NvbnRleHQoY29u
dGV4dCkKKzogU2hhcmVkPFhQb2ludGVyRXhwcmVzc2lvbkltcGw+KCksIG1faXNTaG9ydEhhbmQo
ZmFsc2UpLCBtX3BvaW50ZXIocmF3KSwgbV9yZWxhdGVkTm9kZShyKSwgbV9jb250ZXh0KGNvbnRl
eHQpCiB7CiAgICAgUV9BU1NFUlQoKG1fcG9pbnRlciAmJiAhbV9wb2ludGVyLT5pc0VtcHR5KCkp
KTsKICAgICBRX0FTU0VSVChtX2NvbnRleHQpOwpJbmRleDoga2RvbS94cG9pbnRlci9YUG9pbnRl
ckV4cHJlc3Npb25JbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBv
cnQva2RvbS94cG9pbnRlci9YUG9pbnRlckV4cHJlc3Npb25JbXBsLmgsdgpyZXRyaWV2aW5nIHJl
dmlzaW9uIDEuNApkaWZmIC1wIC11IC1yMS40IGtkb20veHBvaW50ZXIvWFBvaW50ZXJFeHByZXNz
aW9uSW1wbC5oCi0tLSBrZG9tL3hwb2ludGVyL1hQb2ludGVyRXhwcmVzc2lvbkltcGwuaAkyIFNl
cCAyMDA1IDEwOjAzOjE0IC0wMDAwCTEuNAorKysga2RvbS94cG9pbnRlci9YUG9pbnRlckV4cHJl
c3Npb25JbXBsLmgJMTggT2N0IDIwMDUgMDA6NDI6NTEgLTAwMDAKQEAgLTM5LDcgKzM5LDcgQEAg
bmFtZXNwYWNlIFhQb2ludGVyCiAgICAgY2xhc3MgUG9pbnRlclBhcnRJbXBsOwogICAgIGNsYXNz
IFhQb2ludGVyUmVzdWx0SW1wbDsKIAotICAgIGNsYXNzIFhQb2ludGVyRXhwcmVzc2lvbkltcGwg
OiBwdWJsaWMgU2hhcmVkCisgICAgY2xhc3MgWFBvaW50ZXJFeHByZXNzaW9uSW1wbCA6IHB1Ymxp
YyBTaGFyZWQ8WFBvaW50ZXJFeHByZXNzaW9uSW1wbD4KICAgICB7CiAgICAgcHVibGljOgogICAg
ICAgICB0eXBlZGVmIFEzVmFsdWVMaXN0PFBvaW50ZXJQYXJ0SW1wbCAqPiBMaXN0OwpJbmRleDog
a2RvbS94cG9pbnRlci9YUG9pbnRlclJlc3VsdEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6
IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20veHBvaW50ZXIvWFBvaW50ZXJSZXN1bHRJbXBsLmNw
cCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40CmRpZmYgLXAgLXUgLXIxLjQga2RvbS94cG9pbnRl
ci9YUG9pbnRlclJlc3VsdEltcGwuY3BwCi0tLSBrZG9tL3hwb2ludGVyL1hQb2ludGVyUmVzdWx0
SW1wbC5jcHAJNSBPY3QgMjAwNSAwNTozNjo0MSAtMDAwMAkxLjQKKysrIGtkb20veHBvaW50ZXIv
WFBvaW50ZXJSZXN1bHRJbXBsLmNwcAkxOCBPY3QgMjAwNSAwMDo0Mjo1MSAtMDAwMApAQCAtMzMs
NyArMzMsNyBAQCB1c2luZyBuYW1lc3BhY2UgS0RPTTsKIHVzaW5nIG5hbWVzcGFjZSBLRE9NOjpY
UG9pbnRlcjsKICAgICAKIFhQb2ludGVyUmVzdWx0SW1wbDo6WFBvaW50ZXJSZXN1bHRJbXBsKGNv
bnN0IFJlc3VsdFR5cGUgY29kZSkKLTogU2hhcmVkKCksIG1fc2luZ2xlKDApLCBtX3Jlc3VsdFR5
cGUoY29kZSkKKzogU2hhcmVkPFhQb2ludGVyUmVzdWx0SW1wbD4oKSwgbV9zaW5nbGUoMCksIG1f
cmVzdWx0VHlwZShjb2RlKQogewogfQogCkluZGV4OiBrZG9tL3hwb2ludGVyL1hQb2ludGVyUmVz
dWx0SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tkb20v
eHBvaW50ZXIvWFBvaW50ZXJSZXN1bHRJbXBsLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNApk
aWZmIC1wIC11IC1yMS40IGtkb20veHBvaW50ZXIvWFBvaW50ZXJSZXN1bHRJbXBsLmgKLS0tIGtk
b20veHBvaW50ZXIvWFBvaW50ZXJSZXN1bHRJbXBsLmgJOCBTZXAgMjAwNSAwODowMzozMSAtMDAw
MAkxLjQKKysrIGtkb20veHBvaW50ZXIvWFBvaW50ZXJSZXN1bHRJbXBsLmgJMTggT2N0IDIwMDUg
MDA6NDI6NTEgLTAwMDAKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgTm9kZUltcGw7CiAKIG5hbWVz
cGFjZSBYUG9pbnRlcgogewotICAgIGNsYXNzIFhQb2ludGVyUmVzdWx0SW1wbCA6IHB1YmxpYyBT
aGFyZWQKKyAgICBjbGFzcyBYUG9pbnRlclJlc3VsdEltcGwgOiBwdWJsaWMgU2hhcmVkPFhQb2lu
dGVyUmVzdWx0SW1wbD4KICAgICB7CiAgICAgcHVibGljOgogICAgICAgICBYUG9pbnRlclJlc3Vs
dEltcGwoY29uc3QgUmVzdWx0VHlwZSBjb2RlKTsKSW5kZXg6IGtzdmcyL2Nzcy9TVkdSZW5kZXJT
dHlsZURlZnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tz
dmcyL2Nzcy9TVkdSZW5kZXJTdHlsZURlZnMuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjUK
ZGlmZiAtcCAtdSAtcjEuNSBrc3ZnMi9jc3MvU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcAotLS0ga3N2
ZzIvY3NzL1NWR1JlbmRlclN0eWxlRGVmcy5jcHAJNSBPY3QgMjAwNSAwNTozNToxMCAtMDAwMAkx
LjUKKysrIGtzdmcyL2Nzcy9TVkdSZW5kZXJTdHlsZURlZnMuY3BwCTE4IE9jdCAyMDA1IDAwOjQy
OjUxIC0wMDAwCkBAIC0zMywxMyArMzMsMTMgQEAKIAogdXNpbmcgbmFtZXNwYWNlIEtTVkc7CiAK
LVN0eWxlRmlsbERhdGE6OlN0eWxlRmlsbERhdGEoKSA6IEtET006OlNoYXJlZCgpCitTdHlsZUZp
bGxEYXRhOjpTdHlsZUZpbGxEYXRhKCkgOiBLRE9NOjpTaGFyZWQ8U3R5bGVGaWxsRGF0YT4oKQog
ewogICAgIHBhaW50ID0gU1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxGaWxsUGFpbnQoKTsKICAgICBv
cGFjaXR5ID0gU1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxGaWxsT3BhY2l0eSgpOwogfQogCi1TdHls
ZUZpbGxEYXRhOjpTdHlsZUZpbGxEYXRhKGNvbnN0IFN0eWxlRmlsbERhdGEgJm90aGVyKSA6IEtE
T006OlNoYXJlZCgpCitTdHlsZUZpbGxEYXRhOjpTdHlsZUZpbGxEYXRhKGNvbnN0IFN0eWxlRmls
bERhdGEgJm90aGVyKSA6IEtET006OlNoYXJlZDxTdHlsZUZpbGxEYXRhPigpCiB7CiAgICAgcGFp
bnQgPSBvdGhlci5wYWludDsKICAgICBvcGFjaXR5ID0gb3RoZXIub3BhY2l0eTsKQEAgLTY1LDcg
KzY1LDcgQEAgYm9vbCBTdHlsZUZpbGxEYXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0eQogICAgIHJl
dHVybiAocGFpbnQgPT0gb3RoZXIucGFpbnQpICYmIChvcGFjaXR5ID09IG90aGVyLm9wYWNpdHkp
OwogfQogCi1TdHlsZVN0cm9rZURhdGE6OlN0eWxlU3Ryb2tlRGF0YSgpIDogS0RPTTo6U2hhcmVk
KCkKK1N0eWxlU3Ryb2tlRGF0YTo6U3R5bGVTdHJva2VEYXRhKCkgOiBLRE9NOjpTaGFyZWQ8U3R5
bGVTdHJva2VEYXRhPigpCiB7CiAgICAgd2lkdGggPSBTVkdSZW5kZXJTdHlsZTo6aW5pdGlhbFN0
cm9rZVdpZHRoKCk7CiAgICAgcGFpbnQgPSBTVkdSZW5kZXJTdHlsZTo6aW5pdGlhbFN0cm9rZVBh
aW50KCk7CkBAIC03NSw3ICs3NSw3IEBAIFN0eWxlU3Ryb2tlRGF0YTo6U3R5bGVTdHJva2VEYXRh
KCkgOiBLRE8KICAgICBkYXNoQXJyYXkgPSBTVkdSZW5kZXJTdHlsZTo6aW5pdGlhbFN0cm9rZURh
c2hBcnJheSgpOwogfQogCi1TdHlsZVN0cm9rZURhdGE6OlN0eWxlU3Ryb2tlRGF0YShjb25zdCBT
dHlsZVN0cm9rZURhdGEgJm90aGVyKSA6IEtET006OlNoYXJlZCgpCitTdHlsZVN0cm9rZURhdGE6
OlN0eWxlU3Ryb2tlRGF0YShjb25zdCBTdHlsZVN0cm9rZURhdGEgJm90aGVyKSA6IEtET006OlNo
YXJlZDxTdHlsZVN0cm9rZURhdGE+KCkKIHsKICAgICB3aWR0aCA9IG90aGVyLndpZHRoOwogICAg
IHBhaW50ID0gb3RoZXIucGFpbnQ7CkBAIC05NSwxMyArOTUsMTMgQEAgYm9vbCBTdHlsZVN0cm9r
ZURhdGE6Om9wZXJhdG9yPT0oY29uc3QgUwogICAgICAgICAgICAoZGFzaEFycmF5ID09IG90aGVy
LmRhc2hBcnJheSk7CiB9CiAKLVN0eWxlU3RvcERhdGE6OlN0eWxlU3RvcERhdGEoKSA6IEtET006
OlNoYXJlZCgpCitTdHlsZVN0b3BEYXRhOjpTdHlsZVN0b3BEYXRhKCkgOiBLRE9NOjpTaGFyZWQ8
U3R5bGVTdG9wRGF0YT4oKQogewogICAgIGNvbG9yID0gU1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxT
dG9wQ29sb3IoKTsKICAgICBvcGFjaXR5ID0gU1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxTdG9wT3Bh
Y2l0eSgpOwogfQogCi1TdHlsZVN0b3BEYXRhOjpTdHlsZVN0b3BEYXRhKGNvbnN0IFN0eWxlU3Rv
cERhdGEgJm90aGVyKSA6IEtET006OlNoYXJlZCgpCitTdHlsZVN0b3BEYXRhOjpTdHlsZVN0b3BE
YXRhKGNvbnN0IFN0eWxlU3RvcERhdGEgJm90aGVyKSA6IEtET006OlNoYXJlZDxTdHlsZVN0b3BE
YXRhPigpCiB7CiAgICAgY29sb3IgPSBvdGhlci5jb2xvcjsKICAgICBvcGFjaXR5ID0gb3RoZXIu
b3BhY2l0eTsKQEAgLTExMywxMiArMTEzLDEyIEBAIGJvb2wgU3R5bGVTdG9wRGF0YTo6b3BlcmF0
b3I9PShjb25zdCBTdHkKICAgICAgICAgICAgKG9wYWNpdHkgPT0gb3RoZXIub3BhY2l0eSk7CiB9
CiAKLVN0eWxlQ2xpcERhdGE6OlN0eWxlQ2xpcERhdGEoKSA6IEtET006OlNoYXJlZCgpCitTdHls
ZUNsaXBEYXRhOjpTdHlsZUNsaXBEYXRhKCkgOiBLRE9NOjpTaGFyZWQ8U3R5bGVDbGlwRGF0YT4o
KQogewogICAgIGNsaXBQYXRoID0gU1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxDbGlwUGF0aCgpOwog
fQogCi1TdHlsZUNsaXBEYXRhOjpTdHlsZUNsaXBEYXRhKGNvbnN0IFN0eWxlQ2xpcERhdGEgJm90
aGVyKSA6IEtET006OlNoYXJlZCgpCitTdHlsZUNsaXBEYXRhOjpTdHlsZUNsaXBEYXRhKGNvbnN0
IFN0eWxlQ2xpcERhdGEgJm90aGVyKSA6IEtET006OlNoYXJlZDxTdHlsZUNsaXBEYXRhPigpCiB7
CiAgICAgY2xpcFBhdGggPSBvdGhlci5jbGlwUGF0aDsKIH0KQEAgLTEyOCwxNCArMTI4LDE0IEBA
IGJvb2wgU3R5bGVDbGlwRGF0YTo6b3BlcmF0b3I9PShjb25zdCBTdHkKICAgICByZXR1cm4gKGNs
aXBQYXRoID09IG90aGVyLmNsaXBQYXRoKTsKIH0KIAotU3R5bGVNYXJrZXJEYXRhOjpTdHlsZU1h
cmtlckRhdGEoKSA6IEtET006OlNoYXJlZCgpCitTdHlsZU1hcmtlckRhdGE6OlN0eWxlTWFya2Vy
RGF0YSgpIDogS0RPTTo6U2hhcmVkPFN0eWxlTWFya2VyRGF0YT4oKQogewogICAgIHN0YXJ0TWFy
a2VyID0gU1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxTdGFydE1hcmtlcigpOwogICAgIG1pZE1hcmtl
ciA9IFNWR1JlbmRlclN0eWxlOjppbml0aWFsTWlkTWFya2VyKCk7CiAgICAgZW5kTWFya2VyID0g
U1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxFbmRNYXJrZXIoKTsKIH0KIAotU3R5bGVNYXJrZXJEYXRh
OjpTdHlsZU1hcmtlckRhdGEoY29uc3QgU3R5bGVNYXJrZXJEYXRhICZvdGhlcikgOiBLRE9NOjpT
aGFyZWQoKQorU3R5bGVNYXJrZXJEYXRhOjpTdHlsZU1hcmtlckRhdGEoY29uc3QgU3R5bGVNYXJr
ZXJEYXRhICZvdGhlcikgOiBLRE9NOjpTaGFyZWQ8U3R5bGVNYXJrZXJEYXRhPigpCiB7CiAgICAg
c3RhcnRNYXJrZXIgPSBvdGhlci5zdGFydE1hcmtlcjsKICAgICBtaWRNYXJrZXIgPSBvdGhlci5t
aWRNYXJrZXI7CkBAIC0xNDcsMTQgKzE0NywxNCBAQCBib29sIFN0eWxlTWFya2VyRGF0YTo6b3Bl
cmF0b3I9PShjb25zdCBTCiAgICAgcmV0dXJuIChzdGFydE1hcmtlciA9PSBvdGhlci5zdGFydE1h
cmtlciAmJiBtaWRNYXJrZXIgPT0gb3RoZXIubWlkTWFya2VyICYmIGVuZE1hcmtlciA9PSBvdGhl
ci5lbmRNYXJrZXIpOwogfQogCi1TdHlsZU1pc2NEYXRhOjpTdHlsZU1pc2NEYXRhKCkgOiBLRE9N
OjpTaGFyZWQoKQorU3R5bGVNaXNjRGF0YTo6U3R5bGVNaXNjRGF0YSgpIDogS0RPTTo6U2hhcmVk
PFN0eWxlTWlzY0RhdGE+KCkKIHsKICAgICBvcGFjaXR5ID0gU1ZHUmVuZGVyU3R5bGU6OmluaXRp
YWxPcGFjaXR5KCk7CiAgICAgZmxvb2RDb2xvciA9IFNWR1JlbmRlclN0eWxlOjppbml0aWFsQ29s
b3IoKTsKICAgICBmbG9vZE9wYWNpdHkgPSBTVkdSZW5kZXJTdHlsZTo6aW5pdGlhbE9wYWNpdHko
KTsKIH0KIAotU3R5bGVNaXNjRGF0YTo6U3R5bGVNaXNjRGF0YShjb25zdCBTdHlsZU1pc2NEYXRh
ICZvdGhlcikgOiBLRE9NOjpTaGFyZWQoKQorU3R5bGVNaXNjRGF0YTo6U3R5bGVNaXNjRGF0YShj
b25zdCBTdHlsZU1pc2NEYXRhICZvdGhlcikgOiBLRE9NOjpTaGFyZWQ8U3R5bGVNaXNjRGF0YT4o
KQogewogICAgIG9wYWNpdHkgPSBvdGhlci5vcGFjaXR5OwogICAgIGZpbHRlciA9IG90aGVyLmZp
bHRlcjsKSW5kZXg6IGtzdmcyL2Nzcy9TVkdSZW5kZXJTdHlsZURlZnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD
UyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rc3ZnMi9jc3MvU1ZHUmVuZGVyU3R5bGVEZWZz
LmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMwpkaWZmIC1wIC11IC1yMS4zIGtzdmcyL2Nzcy9T
VkdSZW5kZXJTdHlsZURlZnMuaAotLS0ga3N2ZzIvY3NzL1NWR1JlbmRlclN0eWxlRGVmcy5oCTEg
U2VwIDIwMDUgMDc6MzQ6MTcgLTAwMDAJMS4zCisrKyBrc3ZnMi9jc3MvU1ZHUmVuZGVyU3R5bGVE
ZWZzLmgJMTggT2N0IDIwMDUgMDA6NDI6NTEgLTAwMDAKQEAgLTEwOCw3ICsxMDgsNyBAQCBuYW1l
c3BhY2UgS1NWRwogICAgIH07CiAKICAgICAvLyBJbmhlcml0ZWQvTm9uLUluaGVyaXRlZCBTdHls
ZSBEYXRhc3RydWN0dXJlcwotICAgIGNsYXNzIFN0eWxlRmlsbERhdGEgOiBwdWJsaWMgS0RPTTo6
U2hhcmVkCisgICAgY2xhc3MgU3R5bGVGaWxsRGF0YSA6IHB1YmxpYyBLRE9NOjpTaGFyZWQ8U3R5
bGVGaWxsRGF0YT4KICAgICB7CiAgICAgcHVibGljOgogICAgICAgICBTdHlsZUZpbGxEYXRhKCk7
CkBAIC0xMjcsNyArMTI3LDcgQEAgbmFtZXNwYWNlIEtTVkcKICAgICAgICAgU3R5bGVGaWxsRGF0
YSAmb3BlcmF0b3I9KGNvbnN0IFN0eWxlRmlsbERhdGEgJik7CiAgICAgfTsKIAotICAgIGNsYXNz
IFN0eWxlU3Ryb2tlRGF0YSA6IHB1YmxpYyBLRE9NOjpTaGFyZWQKKyAgICBjbGFzcyBTdHlsZVN0
cm9rZURhdGEgOiBwdWJsaWMgS0RPTTo6U2hhcmVkPFN0eWxlU3Ryb2tlRGF0YT4KICAgICB7CiAg
ICAgcHVibGljOgogICAgICAgICBTdHlsZVN0cm9rZURhdGEoKTsKQEAgLTE1Miw3ICsxNTIsNyBA
QCBuYW1lc3BhY2UgS1NWRwogICAgICAgICBTdHlsZVN0cm9rZURhdGEgJm9wZXJhdG9yPShjb25z
dCBTdHlsZVN0cm9rZURhdGEgJik7CiAgICAgfTsKIAotICAgIGNsYXNzIFN0eWxlU3RvcERhdGEg
OiBwdWJsaWMgS0RPTTo6U2hhcmVkCisgICAgY2xhc3MgU3R5bGVTdG9wRGF0YSA6IHB1YmxpYyBL
RE9NOjpTaGFyZWQ8U3R5bGVTdG9wRGF0YT4KICAgICB7CiAgICAgcHVibGljOgogICAgICAgICBT
dHlsZVN0b3BEYXRhKCk7CkBAIC0xNzEsNyArMTcxLDcgQEAgbmFtZXNwYWNlIEtTVkcKICAgICAg
ICAgU3R5bGVTdG9wRGF0YSAmb3BlcmF0b3I9KGNvbnN0IFN0eWxlU3RvcERhdGEgJik7CiAgICAg
fTsKIAotICAgIGNsYXNzIFN0eWxlQ2xpcERhdGEgOiBwdWJsaWMgS0RPTTo6U2hhcmVkCisgICAg
Y2xhc3MgU3R5bGVDbGlwRGF0YSA6IHB1YmxpYyBLRE9NOjpTaGFyZWQ8U3R5bGVDbGlwRGF0YT4K
ICAgICB7CiAgICAgcHVibGljOgogICAgICAgICBTdHlsZUNsaXBEYXRhKCk7CkBAIC0xODksNyAr
MTg5LDcgQEAgbmFtZXNwYWNlIEtTVkcKICAgICAgICAgU3R5bGVDbGlwRGF0YSAmb3BlcmF0b3I9
KGNvbnN0IFN0eWxlQ2xpcERhdGEgJik7CiAgICAgfTsKIAotICAgIGNsYXNzIFN0eWxlTWFya2Vy
RGF0YSA6IHB1YmxpYyBLRE9NOjpTaGFyZWQKKyAgICBjbGFzcyBTdHlsZU1hcmtlckRhdGEgOiBw
dWJsaWMgS0RPTTo6U2hhcmVkPFN0eWxlTWFya2VyRGF0YT4KICAgICB7CiAgICAgcHVibGljOgog
ICAgICAgICBTdHlsZU1hcmtlckRhdGEoKTsKQEAgLTIxMCw3ICsyMTAsNyBAQCBuYW1lc3BhY2Ug
S1NWRwogICAgIH07CiAKICAgICAvLyBOb3RlIDogdGhlIHJ1bGUgZm9yIHRoaXMgY2xhc3MgaXMs
ICpubyBpbmhlcml0YW5jZSogb2YgdGhlc2UgcHJvcHMKLSAgICBjbGFzcyBTdHlsZU1pc2NEYXRh
IDogcHVibGljIEtET006OlNoYXJlZAorICAgIGNsYXNzIFN0eWxlTWlzY0RhdGEgOiBwdWJsaWMg
S0RPTTo6U2hhcmVkPFN0eWxlTWlzY0RhdGE+CiAgICAgewogICAgIHB1YmxpYzoKICAgICAgICAg
U3R5bGVNaXNjRGF0YSgpOwpJbmRleDoga3N2ZzIvc3ZnL1NWR0FuZ2xlSW1wbC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva3N2ZzIvc3ZnL1NWR0FuZ2xlSW1w
bC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNgpkaWZmIC1wIC11IC1yMS42IGtzdmcyL3N2
Zy9TVkdBbmdsZUltcGwuY3BwCi0tLSBrc3ZnMi9zdmcvU1ZHQW5nbGVJbXBsLmNwcAk1IE9jdCAy
MDA1IDA1OjM1OjE0IC0wMDAwCTEuNgorKysga3N2ZzIvc3ZnL1NWR0FuZ2xlSW1wbC5jcHAJMTgg
T2N0IDIwMDUgMDA6NDI6NTIgLTAwMDAKQEAgLTM2LDggKzM2LDcgQEAgY29uc3QgZG91YmxlIGRl
ZzJyYWQgPSAwLjAxNzQ1MzI5MjUxOTk0MwogY29uc3QgZG91YmxlIGRlZzJncmFkID0gNDAwLjAg
LyAzNjAuMDsKIGNvbnN0IGRvdWJsZSByYWQyZ3JhZCA9IGRlZzJncmFkIC8gZGVnMnJhZDsKIAot
U1ZHQW5nbGVJbXBsOjpTVkdBbmdsZUltcGwoY29uc3QgU1ZHU3R5bGVkRWxlbWVudEltcGwgKmNv
bnRleHQpCi06IEtET006OlNoYXJlZCgpCitTVkdBbmdsZUltcGw6OlNWR0FuZ2xlSW1wbChjb25z
dCBTVkdTdHlsZWRFbGVtZW50SW1wbCAqY29udGV4dCkgOiBLRE9NOjpTaGFyZWQ8U1ZHQW5nbGVJ
bXBsPigpCiB7CiAgICAgbV91bml0VHlwZSA9IFNWR19BTkdMRVRZUEVfVU5LTk9XTjsKICAgICBt
X3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9IDA7CkluZGV4OiBrc3ZnMi9zdmcvU1ZHQW5nbGVJbXBs
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva3N2ZzIvc3ZnL1NW
R0FuZ2xlSW1wbC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjQKZGlmZiAtcCAtdSAtcjEuNCBr
c3ZnMi9zdmcvU1ZHQW5nbGVJbXBsLmgKLS0tIGtzdmcyL3N2Zy9TVkdBbmdsZUltcGwuaAkxIFNl
cCAyMDA1IDA3OjM1OjMxIC0wMDAwCTEuNAorKysga3N2ZzIvc3ZnL1NWR0FuZ2xlSW1wbC5oCTE4
IE9jdCAyMDA1IDAwOjQyOjUyIC0wMDAwCkBAIC0zMCw3ICszMCw3IEBAIG5hbWVzcGFjZSBLU1ZH
CiB7CiAgICAgY2xhc3MgU1ZHU3R5bGVkRWxlbWVudEltcGw7CiAKLSAgICBjbGFzcyBTVkdBbmds
ZUltcGwgOiBwdWJsaWMgS0RPTTo6U2hhcmVkCisgICAgY2xhc3MgU1ZHQW5nbGVJbXBsIDogcHVi
bGljIEtET006OlNoYXJlZDxTVkdBbmdsZUltcGw+CiAgICAgewogICAgIHB1YmxpYzoKICAgICAg
ICAgU1ZHQW5nbGVJbXBsKGNvbnN0IFNWR1N0eWxlZEVsZW1lbnRJbXBsICpjb250ZXh0KTsKSW5k
ZXg6IGtzdmcyL3N2Zy9TVkdBbmltYXRlZEJvb2xlYW5JbXBsLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm
aWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rc3ZnMi9zdmcvU1ZHQW5pbWF0ZWRCb29sZWFuSW1w
bC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNQpkaWZmIC1wIC11IC1yMS41IGtzdmcyL3N2
Zy9TVkdBbmltYXRlZEJvb2xlYW5JbXBsLmNwcAotLS0ga3N2ZzIvc3ZnL1NWR0FuaW1hdGVkQm9v
bGVhbkltcGwuY3BwCTUgT2N0IDIwMDUgMDU6MzU6MTUgLTAwMDAJMS41CisrKyBrc3ZnMi9zdmcv
U1ZHQW5pbWF0ZWRCb29sZWFuSW1wbC5jcHAJMTggT2N0IDIwMDUgMDA6NDI6NTIgLTAwMDAKQEAg
LTI2LDcgKzI2LDcgQEAKIAogdXNpbmcgbmFtZXNwYWNlIEtTVkc7CiAKLVNWR0FuaW1hdGVkQm9v
bGVhbkltcGw6OlNWR0FuaW1hdGVkQm9vbGVhbkltcGwoY29uc3QgU1ZHU3R5bGVkRWxlbWVudElt
cGwgKmNvbnRleHQpIDogS0RPTTo6U2hhcmVkKCkKK1NWR0FuaW1hdGVkQm9vbGVhbkltcGw6OlNW
R0FuaW1hdGVkQm9vbGVhbkltcGwoY29uc3QgU1ZHU3R5bGVkRWxlbWVudEltcGwgKmNvbnRleHQp
IDogS0RPTTo6U2hhcmVkPFNWR0FuaW1hdGVkQm9vbGVhbkltcGw+KCkKIHsKICAgICBtX2Jhc2VW
YWwgPSBmYWxzZTsKICAgICBtX2FuaW1WYWwgPSBmYWxzZTsKSW5kZXg6IGtzdmcyL3N2Zy9TVkdB
bmltYXRlZEJvb2xlYW5JbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1
cHBvcnQva3N2ZzIvc3ZnL1NWR0FuaW1hdGVkQm9vbGVhbkltcGwuaCx2CnJldHJpZXZpbmcgcmV2
aXNpb24gMS4zCmRpZmYgLXAgLXUgLXIxLjMga3N2ZzIvc3ZnL1NWR0FuaW1hdGVkQm9vbGVhbklt
cGwuaAotLS0ga3N2ZzIvc3ZnL1NWR0FuaW1hdGVkQm9vbGVhbkltcGwuaAkxIFNlcCAyMDA1IDA3
OjM1OjMyIC0wMDAwCTEuMworKysga3N2ZzIvc3ZnL1NWR0FuaW1hdGVkQm9vbGVhbkltcGwuaAkx
OCBPY3QgMjAwNSAwMDo0Mjo1MiAtMDAwMApAQCAtMjgsNyArMjgsNyBAQAogbmFtZXNwYWNlIEtT
VkcKIHsKICAgICBjbGFzcyBTVkdTdHlsZWRFbGVtZW50SW1wbDsKLSAgICBjbGFzcyBTVkdBbmlt
YXRlZEJvb2xlYW5JbXBsIDogcHVibGljIEtET006OlNoYXJlZAorICAgIGNsYXNzIFNWR0FuaW1h
dGVkQm9vbGVhbkltcGwgOiBwdWJsaWMgS0RPTTo6U2hhcmVkPFNWR0FuaW1hdGVkQm9vbGVhbklt
cGw+CiAgICAgewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHQW5pbWF0ZWRCb29sZWFuSW1wbChj
b25zdCBTVkdTdHlsZWRFbGVtZW50SW1wbCAqY29udGV4dCk7CkluZGV4OiBrc3ZnMi9zdmcvU1ZH
QW5pbWF0ZWRFbnVtZXJhdGlvbkltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9v
dC9TVkdTdXBwb3J0L2tzdmcyL3N2Zy9TVkdBbmltYXRlZEVudW1lcmF0aW9uSW1wbC5jcHAsdgpy
ZXRyaWV2aW5nIHJldmlzaW9uIDEuNQpkaWZmIC1wIC11IC1yMS41IGtzdmcyL3N2Zy9TVkdBbmlt
YXRlZEVudW1lcmF0aW9uSW1wbC5jcHAKLS0tIGtzdmcyL3N2Zy9TVkdBbmltYXRlZEVudW1lcmF0
aW9uSW1wbC5jcHAJNSBPY3QgMjAwNSAwNTozNToxNSAtMDAwMAkxLjUKKysrIGtzdmcyL3N2Zy9T
VkdBbmltYXRlZEVudW1lcmF0aW9uSW1wbC5jcHAJMTggT2N0IDIwMDUgMDA6NDI6NTIgLTAwMDAK
QEAgLTI2LDcgKzI2LDcgQEAKIAogdXNpbmcgbmFtZXNwYWNlIEtTVkc7CiAKLVNWR0FuaW1hdGVk
RW51bWVyYXRpb25JbXBsOjpTVkdBbmltYXRlZEVudW1lcmF0aW9uSW1wbChjb25zdCBTVkdTdHls
ZWRFbGVtZW50SW1wbCAqY29udGV4dCkgOiBLRE9NOjpTaGFyZWQoKQorU1ZHQW5pbWF0ZWRFbnVt
ZXJhdGlvbkltcGw6OlNWR0FuaW1hdGVkRW51bWVyYXRpb25JbXBsKGNvbnN0IFNWR1N0eWxlZEVs
ZW1lbnRJbXBsICpjb250ZXh0KSA6IEtET006OlNoYXJlZDxTVkdBbmltYXRlZEVudW1lcmF0aW9u
SW1wbD4oKQogewogICAgIG1fYmFzZVZhbCA9IDA7CiAgICAgbV9hbmltVmFsID0gMDsKSW5kZXg6
IGtzdmcyL3N2Zy9TVkdBbmltYXRlZEVudW1lcmF0aW9uSW1wbC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp
bGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tzdmcyL3N2Zy9TVkdBbmltYXRlZEVudW1lcmF0aW9u
SW1wbC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjQKZGlmZiAtcCAtdSAtcjEuNCBrc3ZnMi9z
dmcvU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkltcGwuaAotLS0ga3N2ZzIvc3ZnL1NWR0FuaW1hdGVk
RW51bWVyYXRpb25JbXBsLmgJMSBTZXAgMjAwNSAwNzozNTozMyAtMDAwMAkxLjQKKysrIGtzdmcy
L3N2Zy9TVkdBbmltYXRlZEVudW1lcmF0aW9uSW1wbC5oCTE4IE9jdCAyMDA1IDAwOjQyOjUyIC0w
MDAwCkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBLU1ZHCiB7CiAgICAgY2xhc3MgU1ZHU3R5
bGVkRWxlbWVudEltcGw7CiAKLSAgICBjbGFzcyBTVkdBbmltYXRlZEVudW1lcmF0aW9uSW1wbCA6
IHB1YmxpYyBLRE9NOjpTaGFyZWQKKyAgICBjbGFzcyBTVkdBbmltYXRlZEVudW1lcmF0aW9uSW1w
bCA6IHB1YmxpYyBLRE9NOjpTaGFyZWQ8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkltcGw+CiAgICAg
ewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbkltcGwoY29uc3Qg
U1ZHU3R5bGVkRWxlbWVudEltcGwgKmNvbnRleHQpOwpJbmRleDoga3N2ZzIvc3ZnL1NWR0FuaW1h
dGVkSW50ZWdlckltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBw
b3J0L2tzdmcyL3N2Zy9TVkdBbmltYXRlZEludGVnZXJJbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2
aXNpb24gMS41CmRpZmYgLXAgLXUgLXIxLjUga3N2ZzIvc3ZnL1NWR0FuaW1hdGVkSW50ZWdlcklt
cGwuY3BwCi0tLSBrc3ZnMi9zdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VySW1wbC5jcHAJNSBPY3QgMjAw
NSAwNTozNToxNSAtMDAwMAkxLjUKKysrIGtzdmcyL3N2Zy9TVkdBbmltYXRlZEludGVnZXJJbXBs
LmNwcAkxOCBPY3QgMjAwNSAwMDo0Mjo1MiAtMDAwMApAQCAtMjYsNyArMjYsNyBAQAogCiB1c2lu
ZyBuYW1lc3BhY2UgS1NWRzsKIAotU1ZHQW5pbWF0ZWRJbnRlZ2VySW1wbDo6U1ZHQW5pbWF0ZWRJ
bnRlZ2VySW1wbChjb25zdCBTVkdTdHlsZWRFbGVtZW50SW1wbCAqY29udGV4dCkgOiBLRE9NOjpT
aGFyZWQoKQorU1ZHQW5pbWF0ZWRJbnRlZ2VySW1wbDo6U1ZHQW5pbWF0ZWRJbnRlZ2VySW1wbChj
b25zdCBTVkdTdHlsZWRFbGVtZW50SW1wbCAqY29udGV4dCkgOiBLRE9NOjpTaGFyZWQ8U1ZHQW5p
bWF0ZWRJbnRlZ2VySW1wbD4oKQogewogICAgIG1fYmFzZVZhbCA9IDA7CiAgICAgbV9hbmltVmFs
ID0gMDsKSW5kZXg6IGtzdmcyL3N2Zy9TVkdBbmltYXRlZEludGVnZXJJbXBsLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva3N2ZzIvc3ZnL1NWR0FuaW1hdGVkSW50
ZWdlckltcGwuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40CmRpZmYgLXAgLXUgLXIxLjQga3N2
ZzIvc3ZnL1NWR0FuaW1hdGVkSW50ZWdlckltcGwuaAotLS0ga3N2ZzIvc3ZnL1NWR0FuaW1hdGVk
SW50ZWdlckltcGwuaAkxIFNlcCAyMDA1IDA3OjM1OjMzIC0wMDAwCTEuNAorKysga3N2ZzIvc3Zn
L1NWR0FuaW1hdGVkSW50ZWdlckltcGwuaAkxOCBPY3QgMjAwNSAwMDo0Mjo1MiAtMDAwMApAQCAt
MjksNyArMjksNyBAQCBuYW1lc3BhY2UgS1NWRwogewogICAgIGNsYXNzIFNWR1N0eWxlZEVsZW1l
bnRJbXBsOwogCi0gICAgY2xhc3MgU1ZHQW5pbWF0ZWRJbnRlZ2VySW1wbCA6IHB1YmxpYyBLRE9N
OjpTaGFyZWQKKyAgICBjbGFzcyBTVkdBbmltYXRlZEludGVnZXJJbXBsIDogcHVibGljIEtET006
OlNoYXJlZDxTVkdBbmltYXRlZEludGVnZXJJbXBsPgogICAgIHsKICAgICBwdWJsaWM6CiAgICAg
ICAgIFNWR0FuaW1hdGVkSW50ZWdlckltcGwoY29uc3QgU1ZHU3R5bGVkRWxlbWVudEltcGwgKmNv
bnRleHQpOwpJbmRleDoga3N2ZzIvc3ZnL1NWR0FuaW1hdGVkTnVtYmVySW1wbC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva3N2ZzIvc3ZnL1NWR0FuaW1hdGVk
TnVtYmVySW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNQpkaWZmIC1wIC11IC1yMS41
IGtzdmcyL3N2Zy9TVkdBbmltYXRlZE51bWJlckltcGwuY3BwCi0tLSBrc3ZnMi9zdmcvU1ZHQW5p
bWF0ZWROdW1iZXJJbXBsLmNwcAk1IE9jdCAyMDA1IDA1OjM1OjE2IC0wMDAwCTEuNQorKysga3N2
ZzIvc3ZnL1NWR0FuaW1hdGVkTnVtYmVySW1wbC5jcHAJMTggT2N0IDIwMDUgMDA6NDI6NTMgLTAw
MDAKQEAgLTI2LDcgKzI2LDcgQEAKIAogdXNpbmcgbmFtZXNwYWNlIEtTVkc7CiAKLVNWR0FuaW1h
dGVkTnVtYmVySW1wbDo6U1ZHQW5pbWF0ZWROdW1iZXJJbXBsKGNvbnN0IFNWR1N0eWxlZEVsZW1l
bnRJbXBsICpjb250ZXh0KSA6IEtET006OlNoYXJlZCgpCitTVkdBbmltYXRlZE51bWJlckltcGw6
OlNWR0FuaW1hdGVkTnVtYmVySW1wbChjb25zdCBTVkdTdHlsZWRFbGVtZW50SW1wbCAqY29udGV4
dCkgOiBLRE9NOjpTaGFyZWQ8U1ZHQW5pbWF0ZWROdW1iZXJJbXBsPigpCiB7CiAgICAgbV9iYXNl
VmFsID0gMDsKICAgICBtX2FuaW1WYWwgPSAwOwpJbmRleDoga3N2ZzIvc3ZnL1NWR0FuaW1hdGVk
TnVtYmVySW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tz
dmcyL3N2Zy9TVkdBbmltYXRlZE51bWJlckltcGwuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40
CmRpZmYgLXAgLXUgLXIxLjQga3N2ZzIvc3ZnL1NWR0FuaW1hdGVkTnVtYmVySW1wbC5oCi0tLSBr
c3ZnMi9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJJbXBsLmgJMSBTZXAgMjAwNSAwNzozNTozMyAtMDAw
MAkxLjQKKysrIGtzdmcyL3N2Zy9TVkdBbmltYXRlZE51bWJlckltcGwuaAkxOCBPY3QgMjAwNSAw
MDo0Mjo1MyAtMDAwMApAQCAtMjksNyArMjksNyBAQCBuYW1lc3BhY2UgS1NWRwogewogICAgIGNs
YXNzIFNWR1N0eWxlZEVsZW1lbnRJbXBsOwogCi0gICAgY2xhc3MgU1ZHQW5pbWF0ZWROdW1iZXJJ
bXBsIDogcHVibGljIEtET006OlNoYXJlZAorICAgIGNsYXNzIFNWR0FuaW1hdGVkTnVtYmVySW1w
bCA6IHB1YmxpYyBLRE9NOjpTaGFyZWQ8U1ZHQW5pbWF0ZWROdW1iZXJJbXBsPgogICAgIHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIFNWR0FuaW1hdGVkTnVtYmVySW1wbChjb25zdCBTVkdTdHlsZWRF
bGVtZW50SW1wbCAqY29udGV4dCk7CkluZGV4OiBrc3ZnMi9zdmcvU1ZHQW5pbWF0ZWRUZW1wbGF0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tzdmcyL3N2Zy9T
VkdBbmltYXRlZFRlbXBsYXRlLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNApkaWZmIC1wIC11
IC1yMS40IGtzdmcyL3N2Zy9TVkdBbmltYXRlZFRlbXBsYXRlLmgKLS0tIGtzdmcyL3N2Zy9TVkdB
bmltYXRlZFRlbXBsYXRlLmgJMSBTZXAgMjAwNSAwNzozNTozNCAtMDAwMAkxLjQKKysrIGtzdmcy
L3N2Zy9TVkdBbmltYXRlZFRlbXBsYXRlLmgJMTggT2N0IDIwMDUgMDA6NDI6NTMgLTAwMDAKQEAg
LTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIEtTVkcKICAgICAvLyAtIG5vIGNvcHkgY3Rvci9ubyBh
c3NpZ25tZW50IG9wZXJhdG9yIGF2YWlsYWJsZQogICAgIC8vICAgKC0+IGEgY2xhc3MgZm9yIG9u
bHkgZm9yIHBvaW50ZXIgdXNhZ2UpCiAgICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBjbGFzcyBT
VkdBbmltYXRlZFRlbXBsYXRlIDogcHVibGljIEtET006OlNoYXJlZAorICAgIGNsYXNzIFNWR0Fu
aW1hdGVkVGVtcGxhdGUgOiBwdWJsaWMgS0RPTTo6U2hhcmVkPFNWR0FuaW1hdGVkVGVtcGxhdGU8
VD4gPgogICAgIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgflNWR0FuaW1hdGVkVGVt
cGxhdGUoKQpAQCAtODcsNyArODcsNyBAQCBuYW1lc3BhY2UgS1NWRwogICAgICAgICB9CiAgICAg
ICAgIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgU1ZHQW5pbWF0ZWRUZW1wbGF0ZShjb25zdCBT
VkdTdHlsZWRFbGVtZW50SW1wbCAqY29udGV4dCkgOiBLRE9NOjpTaGFyZWQoKQorICAgICAgICBT
VkdBbmltYXRlZFRlbXBsYXRlKGNvbnN0IFNWR1N0eWxlZEVsZW1lbnRJbXBsICpjb250ZXh0KSA6
IEtET006OlNoYXJlZDxTVkdBbmltYXRlZFRlbXBsYXRlPigpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIG1fYmFzZVZhbCA9IDA7CiAgICAgICAgICAgICBtX2FuaW1WYWwgPSAwOwpJbmRleDoga3N2
ZzIvc3ZnL1NWR0V4Y2VwdGlvbkltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9v
dC9TVkdTdXBwb3J0L2tzdmcyL3N2Zy9TVkdFeGNlcHRpb25JbXBsLmNwcCx2CnJldHJpZXZpbmcg
cmV2aXNpb24gMS41CmRpZmYgLXAgLXUgLXIxLjUga3N2ZzIvc3ZnL1NWR0V4Y2VwdGlvbkltcGwu
Y3BwCi0tLSBrc3ZnMi9zdmcvU1ZHRXhjZXB0aW9uSW1wbC5jcHAJNSBPY3QgMjAwNSAwNTozNToy
MCAtMDAwMAkxLjUKKysrIGtzdmcyL3N2Zy9TVkdFeGNlcHRpb25JbXBsLmNwcAkxOCBPY3QgMjAw
NSAwMDo0Mjo1MyAtMDAwMApAQCAtMjUsNyArMjUsNyBAQAogCiB1c2luZyBuYW1lc3BhY2UgS1NW
RzsKIAotU1ZHRXhjZXB0aW9uSW1wbDo6U1ZHRXhjZXB0aW9uSW1wbCh1bnNpZ25lZCBzaG9ydCBj
b2RlKSA6IEtET006OlNoYXJlZCgpCitTVkdFeGNlcHRpb25JbXBsOjpTVkdFeGNlcHRpb25JbXBs
KHVuc2lnbmVkIHNob3J0IGNvZGUpIDogS0RPTTo6U2hhcmVkPFNWR0V4Y2VwdGlvbkltcGw+KCkK
IHsKICAgICByZWYoKTsgLy8gRXhjZXB0aW9uSW1wbCBjbGFzc2VzIG5lZWQgdG8gcmVmIHRoZW1z
ZWx2ZXMoKSBhcyBpdCdzIGp1c3QKICAgICAgICAgICAgLy8gdmVyeSBjb252aWVuaWVudCB0byBq
dXN0IHVzZSAndGhyb3cgbmV3IEV4Y2VwdGlvbkltcGwnIC4uLgpJbmRleDoga3N2ZzIvc3ZnL1NW
R0V4Y2VwdGlvbkltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9y
dC9rc3ZnMi9zdmcvU1ZHRXhjZXB0aW9uSW1wbC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjMK
ZGlmZiAtcCAtdSAtcjEuMyBrc3ZnMi9zdmcvU1ZHRXhjZXB0aW9uSW1wbC5oCi0tLSBrc3ZnMi9z
dmcvU1ZHRXhjZXB0aW9uSW1wbC5oCTEgU2VwIDIwMDUgMDc6MzU6MzggLTAwMDAJMS4zCisrKyBr
c3ZnMi9zdmcvU1ZHRXhjZXB0aW9uSW1wbC5oCTE4IE9jdCAyMDA1IDAwOjQyOjUzIC0wMDAwCkBA
IC0yNyw3ICsyNyw3IEBACiAKIG5hbWVzcGFjZSBLU1ZHCiB7Ci0gICAgY2xhc3MgU1ZHRXhjZXB0
aW9uSW1wbCA6IHB1YmxpYyBLRE9NOjpTaGFyZWQKKyAgICBjbGFzcyBTVkdFeGNlcHRpb25JbXBs
IDogcHVibGljIEtET006OlNoYXJlZDxTVkdFeGNlcHRpb25JbXBsPgogICAgIHsKICAgICBwdWJs
aWM6CiAgICAgICAgIFNWR0V4Y2VwdGlvbkltcGwodW5zaWduZWQgc2hvcnQgY29kZSk7CkluZGV4
OiBrc3ZnMi9zdmcvU1ZHTGVuZ3RoSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9y
b290L1NWR1N1cHBvcnQva3N2ZzIvc3ZnL1NWR0xlbmd0aEltcGwuY3BwLHYKcmV0cmlldmluZyBy
ZXZpc2lvbiAxLjUKZGlmZiAtcCAtdSAtcjEuNSBrc3ZnMi9zdmcvU1ZHTGVuZ3RoSW1wbC5jcHAK
LS0tIGtzdmcyL3N2Zy9TVkdMZW5ndGhJbXBsLmNwcAk1IE9jdCAyMDA1IDA1OjM1OjIzIC0wMDAw
CTEuNQorKysga3N2ZzIvc3ZnL1NWR0xlbmd0aEltcGwuY3BwCTE4IE9jdCAyMDA1IDAwOjQyOjU0
IC0wMDAwCkBAIC01NCw3ICs1NCw3IEBAIFFTdHJpbmcgVW5pdFRleHRbXSA9CiAgICAgUVN0cmlu
Zzo6ZnJvbUxhdGluMSgicGMiKQogfTsKIAotU1ZHTGVuZ3RoSW1wbDo6U1ZHTGVuZ3RoSW1wbChj
b25zdCBTVkdTdHlsZWRFbGVtZW50SW1wbCAqY29udGV4dCwgTGVuZ3RoTW9kZSBtb2RlLCBjb25z
dCBTVkdFbGVtZW50SW1wbCAqdmlld3BvcnQpIDogS0RPTTo6U2hhcmVkKCkKK1NWR0xlbmd0aElt
cGw6OlNWR0xlbmd0aEltcGwoY29uc3QgU1ZHU3R5bGVkRWxlbWVudEltcGwgKmNvbnRleHQsIExl
bmd0aE1vZGUgbW9kZSwgY29uc3QgU1ZHRWxlbWVudEltcGwgKnZpZXdwb3J0KSA6IEtET006OlNo
YXJlZDxTVkdMZW5ndGhJbXBsPigpCiB7CiAgICAgbV9tb2RlID0gbW9kZTsKICAgICBtX2NvbnRl
eHQgPSBjb250ZXh0OwpJbmRleDoga3N2ZzIvc3ZnL1NWR0xlbmd0aEltcGwuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rc3ZnMi9zdmcvU1ZHTGVuZ3RoSW1wbC5o
LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjUKZGlmZiAtcCAtdSAtcjEuNSBrc3ZnMi9zdmcvU1ZH
TGVuZ3RoSW1wbC5oCi0tLSBrc3ZnMi9zdmcvU1ZHTGVuZ3RoSW1wbC5oCTEgU2VwIDIwMDUgMDk6
Mzk6MTYgLTAwMDAJMS41CisrKyBrc3ZnMi9zdmcvU1ZHTGVuZ3RoSW1wbC5oCTE4IE9jdCAyMDA1
IDAwOjQyOjU0IC0wMDAwCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBLU1ZHCiB7CiAgICAg
Y2xhc3MgU1ZHRWxlbWVudEltcGw7CiAgICAgY2xhc3MgU1ZHU3R5bGVkRWxlbWVudEltcGw7Ci0g
ICAgY2xhc3MgU1ZHTGVuZ3RoSW1wbCA6IHB1YmxpYyBLRE9NOjpTaGFyZWQKKyAgICBjbGFzcyBT
VkdMZW5ndGhJbXBsIDogcHVibGljIEtET006OlNoYXJlZDxTVkdMZW5ndGhJbXBsPgogICAgIHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIFNWR0xlbmd0aEltcGwoY29uc3QgU1ZHU3R5bGVkRWxlbWVu
dEltcGwgKmNvbnRleHQsIExlbmd0aE1vZGUgbW9kZSA9IExNX1VOS05PV04sIGNvbnN0IFNWR0Vs
ZW1lbnRJbXBsICp2aWV3cG9ydCA9IDApOwpJbmRleDoga3N2ZzIvc3ZnL1NWR01hdHJpeEltcGwu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tzdmcyL3N2Zy9T
VkdNYXRyaXhJbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS42CmRpZmYgLXAgLXUgLXIx
LjYga3N2ZzIvc3ZnL1NWR01hdHJpeEltcGwuY3BwCi0tLSBrc3ZnMi9zdmcvU1ZHTWF0cml4SW1w
bC5jcHAJNSBPY3QgMjAwNSAwNTozNToyNCAtMDAwMAkxLjYKKysrIGtzdmcyL3N2Zy9TVkdNYXRy
aXhJbXBsLmNwcAkxOCBPY3QgMjAwNSAwMDo0Mjo1NCAtMDAwMApAQCAtMzAsMTYgKzMwLDE2IEBA
CiAKIHVzaW5nIG5hbWVzcGFjZSBLU1ZHOwogCi1TVkdNYXRyaXhJbXBsOjpTVkdNYXRyaXhJbXBs
KCkgOiBLRE9NOjpTaGFyZWQoKQorU1ZHTWF0cml4SW1wbDo6U1ZHTWF0cml4SW1wbCgpIDogS0RP
TTo6U2hhcmVkPFNWR01hdHJpeEltcGw+KCkKIHsKIH0KIAotU1ZHTWF0cml4SW1wbDo6U1ZHTWF0
cml4SW1wbChRTWF0cml4IG1hdCkgOiBLRE9NOjpTaGFyZWQoKQorU1ZHTWF0cml4SW1wbDo6U1ZH
TWF0cml4SW1wbChRTWF0cml4IG1hdCkgOiBLRE9NOjpTaGFyZWQ8U1ZHTWF0cml4SW1wbD4oKQog
ewogICAgIG1fbWF0ID0gbWF0OwogfQogCi1TVkdNYXRyaXhJbXBsOjpTVkdNYXRyaXhJbXBsKGRv
dWJsZSBhLCBkb3VibGUgYiwgZG91YmxlIGMsIGRvdWJsZSBkLCBkb3VibGUgZSwgZG91YmxlIGYp
IDogS0RPTTo6U2hhcmVkKCkKK1NWR01hdHJpeEltcGw6OlNWR01hdHJpeEltcGwoZG91YmxlIGEs
IGRvdWJsZSBiLCBkb3VibGUgYywgZG91YmxlIGQsIGRvdWJsZSBlLCBkb3VibGUgZikgOiBLRE9N
OjpTaGFyZWQ8U1ZHTWF0cml4SW1wbD4oKQogewogICAgIG1fbWF0LnNldE1hdHJpeChhLCBiLCBj
LCBkLCBlLCBmKTsKIH0KSW5kZXg6IGtzdmcyL3N2Zy9TVkdNYXRyaXhJbXBsLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva3N2ZzIvc3ZnL1NWR01hdHJpeEltcGwu
aCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40CmRpZmYgLXAgLXUgLXIxLjQga3N2ZzIvc3ZnL1NW
R01hdHJpeEltcGwuaAotLS0ga3N2ZzIvc3ZnL1NWR01hdHJpeEltcGwuaAk4IFNlcCAyMDA1IDA4
OjAzOjM2IC0wMDAwCTEuNAorKysga3N2ZzIvc3ZnL1NWR01hdHJpeEltcGwuaAkxOCBPY3QgMjAw
NSAwMDo0Mjo1NCAtMDAwMApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3BhY2UgS1NWRwogewot
ICAgIGNsYXNzIFNWR01hdHJpeEltcGwgOiBwdWJsaWMgS0RPTTo6U2hhcmVkCisgICAgY2xhc3Mg
U1ZHTWF0cml4SW1wbCA6IHB1YmxpYyBLRE9NOjpTaGFyZWQ8U1ZHTWF0cml4SW1wbD4KICAgICB7
IAogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHTWF0cml4SW1wbCgpOwpJbmRleDoga3N2ZzIvc3Zn
L1NWR051bWJlckltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBw
b3J0L2tzdmcyL3N2Zy9TVkdOdW1iZXJJbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41
CmRpZmYgLXAgLXUgLXIxLjUga3N2ZzIvc3ZnL1NWR051bWJlckltcGwuY3BwCi0tLSBrc3ZnMi9z
dmcvU1ZHTnVtYmVySW1wbC5jcHAJNSBPY3QgMjAwNSAwNTozNToyNCAtMDAwMAkxLjUKKysrIGtz
dmcyL3N2Zy9TVkdOdW1iZXJJbXBsLmNwcAkxOCBPY3QgMjAwNSAwMDo0Mjo1NCAtMDAwMApAQCAt
MjYsNyArMjYsNyBAQAogCiB1c2luZyBuYW1lc3BhY2UgS1NWRzsKIAotU1ZHTnVtYmVySW1wbDo6
U1ZHTnVtYmVySW1wbChjb25zdCBTVkdTdHlsZWRFbGVtZW50SW1wbCAqY29udGV4dCkgOiBLRE9N
OjpTaGFyZWQoKQorU1ZHTnVtYmVySW1wbDo6U1ZHTnVtYmVySW1wbChjb25zdCBTVkdTdHlsZWRF
bGVtZW50SW1wbCAqY29udGV4dCkgOiBLRE9NOjpTaGFyZWQ8U1ZHTnVtYmVySW1wbD4oKQogewog
ICAgIG1fdmFsdWUgPSAwLjA7CiAgICAgbV9jb250ZXh0ID0gY29udGV4dDsKSW5kZXg6IGtzdmcy
L3N2Zy9TVkdOdW1iZXJJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1
cHBvcnQva3N2ZzIvc3ZnL1NWR051bWJlckltcGwuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4z
CmRpZmYgLXAgLXUgLXIxLjMga3N2ZzIvc3ZnL1NWR051bWJlckltcGwuaAotLS0ga3N2ZzIvc3Zn
L1NWR051bWJlckltcGwuaAkxIFNlcCAyMDA1IDA3OjM1OjQ1IC0wMDAwCTEuMworKysga3N2ZzIv
c3ZnL1NWR051bWJlckltcGwuaAkxOCBPY3QgMjAwNSAwMDo0Mjo1NCAtMDAwMApAQCAtMjgsNyAr
MjgsNyBAQAogbmFtZXNwYWNlIEtTVkcKIHsKICAgICBjbGFzcyBTVkdTdHlsZWRFbGVtZW50SW1w
bDsKLSAgICBjbGFzcyBTVkdOdW1iZXJJbXBsIDogcHVibGljIEtET006OlNoYXJlZAorICAgIGNs
YXNzIFNWR051bWJlckltcGwgOiBwdWJsaWMgS0RPTTo6U2hhcmVkPFNWR051bWJlckltcGw+CiAg
ICAgewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHTnVtYmVySW1wbChjb25zdCBTVkdTdHlsZWRF
bGVtZW50SW1wbCAqY29udGV4dCk7CkluZGV4OiBrc3ZnMi9zdmcvU1ZHUGF0aFNlZ0ltcGwuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tzdmcyL3N2Zy9TVkdQ
YXRoU2VnSW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNQpkaWZmIC1wIC11IC1yMS41
IGtzdmcyL3N2Zy9TVkdQYXRoU2VnSW1wbC5jcHAKLS0tIGtzdmcyL3N2Zy9TVkdQYXRoU2VnSW1w
bC5jcHAJNSBPY3QgMjAwNSAwNTozNToyNiAtMDAwMAkxLjUKKysrIGtzdmcyL3N2Zy9TVkdQYXRo
U2VnSW1wbC5jcHAJMTggT2N0IDIwMDUgMDA6NDI6NTUgLTAwMDAKQEAgLTI2LDcgKzI2LDcgQEAK
IHVzaW5nIG5hbWVzcGFjZSBLU1ZHOwogCiBTVkdQYXRoU2VnSW1wbDo6U1ZHUGF0aFNlZ0ltcGwo
Y29uc3QgU1ZHU3R5bGVkRWxlbWVudEltcGwgKmNvbnRleHQpCi06IEtET006OlNoYXJlZCgpLCBt
X2NvbnRleHQoY29udGV4dCkKKzogS0RPTTo6U2hhcmVkPFNWR1BhdGhTZWdJbXBsPigpLCBtX2Nv
bnRleHQoY29udGV4dCkKIHsKIH0KIApJbmRleDoga3N2ZzIvc3ZnL1NWR1BhdGhTZWdJbXBsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva3N2ZzIvc3ZnL1NWR1Bh
dGhTZWdJbXBsLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNQpkaWZmIC1wIC11IC1yMS41IGtz
dmcyL3N2Zy9TVkdQYXRoU2VnSW1wbC5oCi0tLSBrc3ZnMi9zdmcvU1ZHUGF0aFNlZ0ltcGwuaAkx
IFNlcCAyMDA1IDA5OjM5OjE2IC0wMDAwCTEuNQorKysga3N2ZzIvc3ZnL1NWR1BhdGhTZWdJbXBs
LmgJMTggT2N0IDIwMDUgMDA6NDI6NTUgLTAwMDAKQEAgLTI3LDEzICsyNywxMiBAQAogI2luY2x1
ZGUgPGtkb20vY29yZS9ET01TdHJpbmdJbXBsLmg+CiAKICNpbmNsdWRlICJrc3ZnLmgiCi0vLyNp
bmNsdWRlICJTVkdQYXRoU2VnLmgiCiAKIG5hbWVzcGFjZSBLU1ZHCiB7CiAgICAgY2xhc3MgU1ZH
UGF0aEVsZW1lbnRJbXBsOwogICAgIGNsYXNzIFNWR1N0eWxlZEVsZW1lbnRJbXBsOwotICAgIGNs
YXNzIFNWR1BhdGhTZWdJbXBsIDogcHVibGljIEtET006OlNoYXJlZAorICAgIGNsYXNzIFNWR1Bh
dGhTZWdJbXBsIDogcHVibGljIEtET006OlNoYXJlZDxTVkdQYXRoU2VnSW1wbD4KICAgICB7CiAg
ICAgcHVibGljOgogICAgICAgICBTVkdQYXRoU2VnSW1wbChjb25zdCBTVkdTdHlsZWRFbGVtZW50
SW1wbCAqY29udGV4dCA9IDApOwpJbmRleDoga3N2ZzIvc3ZnL1NWR1BvaW50SW1wbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva3N2ZzIvc3ZnL1NWR1BvaW50
SW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNQpkaWZmIC1wIC11IC1yMS41IGtzdmcy
L3N2Zy9TVkdQb2ludEltcGwuY3BwCi0tLSBrc3ZnMi9zdmcvU1ZHUG9pbnRJbXBsLmNwcAk1IE9j
dCAyMDA1IDA1OjM1OjI2IC0wMDAwCTEuNQorKysga3N2ZzIvc3ZnL1NWR1BvaW50SW1wbC5jcHAJ
MTggT2N0IDIwMDUgMDA6NDI6NTUgLTAwMDAKQEAgLTI3LDIxICsyNywyMSBAQAogCiB1c2luZyBu
YW1lc3BhY2UgS1NWRzsKIAotU1ZHUG9pbnRJbXBsOjpTVkdQb2ludEltcGwoY29uc3QgU1ZHU3R5
bGVkRWxlbWVudEltcGwgKmNvbnRleHQpIDogS0RPTTo6U2hhcmVkKCkKK1NWR1BvaW50SW1wbDo6
U1ZHUG9pbnRJbXBsKGNvbnN0IFNWR1N0eWxlZEVsZW1lbnRJbXBsICpjb250ZXh0KSA6IEtET006
OlNoYXJlZDxTVkdQb2ludEltcGw+KCkKIHsKICAgICBtX3ggPSAwLjA7CiAgICAgbV95ID0gMC4w
OwogICAgIG1fY29udGV4dCA9IGNvbnRleHQ7CiB9CiAKLVNWR1BvaW50SW1wbDo6U1ZHUG9pbnRJ
bXBsKGZsb2F0IHgsIGZsb2F0IHksIGNvbnN0IFNWR1N0eWxlZEVsZW1lbnRJbXBsICpjb250ZXh0
KSA6IEtET006OlNoYXJlZCgpCitTVkdQb2ludEltcGw6OlNWR1BvaW50SW1wbChmbG9hdCB4LCBm
bG9hdCB5LCBjb25zdCBTVkdTdHlsZWRFbGVtZW50SW1wbCAqY29udGV4dCkgOiBLRE9NOjpTaGFy
ZWQ8U1ZHUG9pbnRJbXBsPigpCiB7CiAgICAgbV94ID0geDsKICAgICBtX3kgPSB5OwogICAgIG1f
Y29udGV4dCA9IGNvbnRleHQ7CiB9CiAKLVNWR1BvaW50SW1wbDo6U1ZHUG9pbnRJbXBsKGNvbnN0
IFFQb2ludCAmcCwgY29uc3QgU1ZHU3R5bGVkRWxlbWVudEltcGwgKmNvbnRleHQpIDogS0RPTTo6
U2hhcmVkKCkKK1NWR1BvaW50SW1wbDo6U1ZHUG9pbnRJbXBsKGNvbnN0IFFQb2ludCAmcCwgY29u
c3QgU1ZHU3R5bGVkRWxlbWVudEltcGwgKmNvbnRleHQpIDogS0RPTTo6U2hhcmVkPFNWR1BvaW50
SW1wbD4oKQogewogICAgIG1feCA9IHAueCgpOwogICAgIG1feSA9IHAueSgpOwpJbmRleDoga3N2
ZzIvc3ZnL1NWR1BvaW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdT
dXBwb3J0L2tzdmcyL3N2Zy9TVkdQb2ludEltcGwuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4z
CmRpZmYgLXAgLXUgLXIxLjMga3N2ZzIvc3ZnL1NWR1BvaW50SW1wbC5oCi0tLSBrc3ZnMi9zdmcv
U1ZHUG9pbnRJbXBsLmgJMSBTZXAgMjAwNSAwNzozNTo0OSAtMDAwMAkxLjMKKysrIGtzdmcyL3N2
Zy9TVkdQb2ludEltcGwuaAkxOCBPY3QgMjAwNSAwMDo0Mjo1NSAtMDAwMApAQCAtMzEsNyArMzEs
NyBAQCBuYW1lc3BhY2UgS1NWRwogewogICAgIGNsYXNzIFNWR01hdHJpeEltcGw7CiAgICAgY2xh
c3MgU1ZHU3R5bGVkRWxlbWVudEltcGw7Ci0gICAgY2xhc3MgU1ZHUG9pbnRJbXBsIDogcHVibGlj
IEtET006OlNoYXJlZAorICAgIGNsYXNzIFNWR1BvaW50SW1wbCA6IHB1YmxpYyBLRE9NOjpTaGFy
ZWQ8U1ZHUG9pbnRJbXBsPgogICAgIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNWR1BvaW50SW1w
bChjb25zdCBTVkdTdHlsZWRFbGVtZW50SW1wbCAqY29udGV4dCA9IDApOwpJbmRleDoga3N2ZzIv
c3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW9JbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAv
Y3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rc3ZnMi9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpb0ltcGwu
Y3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjcKZGlmZiAtcCAtdSAtcjEuNyBrc3ZnMi9zdmcv
U1ZHUHJlc2VydmVBc3BlY3RSYXRpb0ltcGwuY3BwCi0tLSBrc3ZnMi9zdmcvU1ZHUHJlc2VydmVB
c3BlY3RSYXRpb0ltcGwuY3BwCTEzIE9jdCAyMDA1IDA4OjI5OjIwIC0wMDAwCTEuNworKysga3N2
ZzIvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW9JbXBsLmNwcAkxOCBPY3QgMjAwNSAwMDo0Mjo1
NSAtMDAwMApAQCAtMzMsNyArMzMsNyBAQAogCiB1c2luZyBuYW1lc3BhY2UgS1NWRzsKIAotU1ZH
UHJlc2VydmVBc3BlY3RSYXRpb0ltcGw6OlNWR1ByZXNlcnZlQXNwZWN0UmF0aW9JbXBsKGNvbnN0
IFNWR1N0eWxlZEVsZW1lbnRJbXBsICpjb250ZXh0KSA6IEtET006OlNoYXJlZCgpCitTVkdQcmVz
ZXJ2ZUFzcGVjdFJhdGlvSW1wbDo6U1ZHUHJlc2VydmVBc3BlY3RSYXRpb0ltcGwoY29uc3QgU1ZH
U3R5bGVkRWxlbWVudEltcGwgKmNvbnRleHQpIDogS0RPTTo6U2hhcmVkPFNWR1ByZXNlcnZlQXNw
ZWN0UmF0aW9JbXBsPigpCiB7CiAgICAgbV9jb250ZXh0ID0gY29udGV4dDsKICAgICBtX21lZXRP
clNsaWNlID0gU1ZHX01FRVRPUlNMSUNFX01FRVQ7CkluZGV4OiBrc3ZnMi9zdmcvU1ZHUHJlc2Vy
dmVBc3BlY3RSYXRpb0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3Vw
cG9ydC9rc3ZnMi9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpb0ltcGwuaCx2CnJldHJpZXZpbmcg
cmV2aXNpb24gMS4zCmRpZmYgLXAgLXUgLXIxLjMga3N2ZzIvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0
UmF0aW9JbXBsLmgKLS0tIGtzdmcyL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvSW1wbC5oCTEg
U2VwIDIwMDUgMDc6MzU6NTAgLTAwMDAJMS4zCisrKyBrc3ZnMi9zdmcvU1ZHUHJlc2VydmVBc3Bl
Y3RSYXRpb0ltcGwuaAkxOCBPY3QgMjAwNSAwMDo0Mjo1NSAtMDAwMApAQCAtMzQsNyArMzQsNyBA
QCBuYW1lc3BhY2UgS1NWRwogewogICAgIGNsYXNzIFNWR01hdHJpeEltcGw7CiAgICAgY2xhc3Mg
U1ZHU3R5bGVkRWxlbWVudEltcGw7Ci0gICAgY2xhc3MgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb0lt
cGwgOiBwdWJsaWMgS0RPTTo6U2hhcmVkCisgICAgY2xhc3MgU1ZHUHJlc2VydmVBc3BlY3RSYXRp
b0ltcGwgOiBwdWJsaWMgS0RPTTo6U2hhcmVkPFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9JbXBsPgog
ICAgIHsgCiAgICAgcHVibGljOgogICAgICAgICBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvSW1wbChj
b25zdCBTVkdTdHlsZWRFbGVtZW50SW1wbCAqY29udGV4dCk7CkluZGV4OiBrc3ZnMi9zdmcvU1ZH
UmVjdEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tz
dmcyL3N2Zy9TVkdSZWN0SW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNQpkaWZmIC1w
IC11IC1yMS41IGtzdmcyL3N2Zy9TVkdSZWN0SW1wbC5jcHAKLS0tIGtzdmcyL3N2Zy9TVkdSZWN0
SW1wbC5jcHAJNSBPY3QgMjAwNSAwNTozNToyOCAtMDAwMAkxLjUKKysrIGtzdmcyL3N2Zy9TVkdS
ZWN0SW1wbC5jcHAJMTggT2N0IDIwMDUgMDA6NDI6NTUgLTAwMDAKQEAgLTI3LDcgKzI3LDcgQEAK
IAogdXNpbmcgbmFtZXNwYWNlIEtTVkc7CiAKLVNWR1JlY3RJbXBsOjpTVkdSZWN0SW1wbChjb25z
dCBTVkdTdHlsZWRFbGVtZW50SW1wbCAqY29udGV4dCkgOiBLRE9NOjpTaGFyZWQoKQorU1ZHUmVj
dEltcGw6OlNWR1JlY3RJbXBsKGNvbnN0IFNWR1N0eWxlZEVsZW1lbnRJbXBsICpjb250ZXh0KSA6
IEtET006OlNoYXJlZDxTVkdSZWN0SW1wbD4oKQogewogICAgIG1fY29udGV4dCA9IGNvbnRleHQ7
CiAgICAgbV94ID0gbV95ID0gbV93aWR0aCA9IG1faGVpZ2h0ID0gMC4wOwpJbmRleDoga3N2ZzIv
c3ZnL1NWR1JlY3RJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBv
cnQva3N2ZzIvc3ZnL1NWR1JlY3RJbXBsLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMwpkaWZm
IC1wIC11IC1yMS4zIGtzdmcyL3N2Zy9TVkdSZWN0SW1wbC5oCi0tLSBrc3ZnMi9zdmcvU1ZHUmVj
dEltcGwuaAkxIFNlcCAyMDA1IDA3OjM1OjUwIC0wMDAwCTEuMworKysga3N2ZzIvc3ZnL1NWR1Jl
Y3RJbXBsLmgJMTggT2N0IDIwMDUgMDA6NDI6NTUgLTAwMDAKQEAgLTI4LDcgKzI4LDcgQEAKIG5h
bWVzcGFjZSBLU1ZHCiB7CiAgICAgY2xhc3MgU1ZHU3R5bGVkRWxlbWVudEltcGw7Ci0gICAgY2xh
c3MgU1ZHUmVjdEltcGwgOiBwdWJsaWMgS0RPTTo6U2hhcmVkCisgICAgY2xhc3MgU1ZHUmVjdElt
cGwgOiBwdWJsaWMgS0RPTTo6U2hhcmVkPFNWR1JlY3RJbXBsPgogICAgIHsKICAgICBwdWJsaWM6
CiAgICAgICAgIFNWR1JlY3RJbXBsKGNvbnN0IFNWR1N0eWxlZEVsZW1lbnRJbXBsICpjb250ZXh0
KTsKSW5kZXg6IGtzdmcyL3N2Zy9TVkdUcmFuc2Zvcm1JbXBsLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm
aWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtSW1wbC5jcHAs
dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNQpkaWZmIC1wIC11IC1yMS41IGtzdmcyL3N2Zy9TVkdU
cmFuc2Zvcm1JbXBsLmNwcAotLS0ga3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybUltcGwuY3BwCTUgT2N0
IDIwMDUgMDU6MzU6MzAgLTAwMDAJMS41CisrKyBrc3ZnMi9zdmcvU1ZHVHJhbnNmb3JtSW1wbC5j
cHAJMTggT2N0IDIwMDUgMDA6NDI6NTYgLTAwMDAKQEAgLTMwLDcgKzMwLDcgQEAKIAogdXNpbmcg
bmFtZXNwYWNlIEtTVkc7CiAKLVNWR1RyYW5zZm9ybUltcGw6OlNWR1RyYW5zZm9ybUltcGwoKSA6
IEtET006OlNoYXJlZCgpCitTVkdUcmFuc2Zvcm1JbXBsOjpTVkdUcmFuc2Zvcm1JbXBsKCkgOiBL
RE9NOjpTaGFyZWQ8U1ZHVHJhbnNmb3JtSW1wbD4oKQogewogICAgIG1fbWF0cml4ID0gU1ZHU1ZH
RWxlbWVudEltcGw6OmNyZWF0ZVNWR01hdHJpeCgpOwogICAgIG1fbWF0cml4LT5yZWYoKTsKSW5k
ZXg6IGtzdmcyL3N2Zy9TVkdUcmFuc2Zvcm1JbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2
cy9yb290L1NWR1N1cHBvcnQva3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybUltcGwuaCx2CnJldHJpZXZp
bmcgcmV2aXNpb24gMS4zCmRpZmYgLXAgLXUgLXIxLjMga3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybUlt
cGwuaAotLS0ga3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybUltcGwuaAkxIFNlcCAyMDA1IDA3OjM1OjU1
IC0wMDAwCTEuMworKysga3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybUltcGwuaAkxOCBPY3QgMjAwNSAw
MDo0Mjo1NiAtMDAwMApAQCAtMjgsNyArMjgsNyBAQAogbmFtZXNwYWNlIEtTVkcKIHsKICAgICBj
bGFzcyBTVkdNYXRyaXhJbXBsOwotICAgIGNsYXNzIFNWR1RyYW5zZm9ybUltcGwgOiBwdWJsaWMg
S0RPTTo6U2hhcmVkCisgICAgY2xhc3MgU1ZHVHJhbnNmb3JtSW1wbCA6IHB1YmxpYyBLRE9NOjpT
aGFyZWQ8U1ZHVHJhbnNmb3JtSW1wbD4KICAgICB7CiAgICAgcHVibGljOgogICAgICAgICBTVkdU
cmFuc2Zvcm1JbXBsKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>4531</attachid>
            <date>2005-10-29 14:54:01 -0700</date>
            <delta_ts>2005-11-09 01:57:52 -0800</delta_ts>
            <desc>Patch for ksvg2 svn r470231</desc>
            <filename>patch_r470231</filename>
            <type>text/plain</type>
            <size>63975</size>
            <attacher name="Julien Palmas">julien.palmas</attacher>
            
              <data encoding="base64">SW5kZXg6IFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYg
LU5wdSBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50SW1wbC5jcHAKLS0tIFNWR1N0eWxlZExvY2F0
YWJsZUVsZW1lbnRJbXBsLmNwcAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBTVkdTdHls
ZWRMb2NhdGFibGVFbGVtZW50SW1wbC5jcHAJMjggT2N0IDIwMDUgMjI6MjE6NDEgLTAwMDAKQEAg
LTAsMCArMSw3NSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBa
aW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1
IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CisKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg
S0RFIHByb2plY3QKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAgICBCb3N0b24sIE1BIDAyMTExLTEzMDcs
IFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxrZG9tL2tkb20uaD4K
KyNpbmNsdWRlICJTVkdSZWN0SW1wbC5oIgorI2luY2x1ZGUgIlNWR01hdHJpeEltcGwuaCIKKyNp
bmNsdWRlICJTVkdFbGVtZW50SW1wbC5oIgorI2luY2x1ZGUgIlNWR1N0eWxlZExvY2F0YWJsZUVs
ZW1lbnRJbXBsLmgiCisjaW5jbHVkZSAiU1ZHU1ZHRWxlbWVudEltcGwuaCIKKworI2luY2x1ZGUg
PGtjYW52YXMvS0NhbnZhc0l0ZW0uaD4KKwordXNpbmcgbmFtZXNwYWNlIEtTVkc7CisKK1NWR1N0
eWxlZExvY2F0YWJsZUVsZW1lbnRJbXBsOjpTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50SW1wbChL
RE9NOjpEb2N1bWVudFB0ciAqZG9jLCBLRE9NOjpOb2RlSW1wbDo6SWQgaWQsIEtET006OkRPTVN0
cmluZ0ltcGwgKnByZWZpeCkKKzogU1ZHU3R5bGVkRWxlbWVudEltcGwoZG9jLCBpZCwgcHJlZml4
KSwgU1ZHTG9jYXRhYmxlSW1wbCgpCit7Cit9CisKK1NWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnRJ
bXBsOjp+U1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudEltcGwoKQoreworfQorCitTVkdFbGVtZW50
SW1wbCAqU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudEltcGw6Om5lYXJlc3RWaWV3cG9ydEVsZW1l
bnQoKSBjb25zdAoreworICAgIHJldHVybiBTVkdMb2NhdGFibGVJbXBsOjpuZWFyZXN0Vmlld3Bv
cnRFbGVtZW50KHRoaXMpOworfQorCitTVkdFbGVtZW50SW1wbCAqU1ZHU3R5bGVkTG9jYXRhYmxl
RWxlbWVudEltcGw6OmZhcnRoZXN0Vmlld3BvcnRFbGVtZW50KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gU1ZHTG9jYXRhYmxlSW1wbDo6ZmFydGhlc3RWaWV3cG9ydEVsZW1lbnQodGhpcyk7Cit9CisK
K1NWR1JlY3RJbXBsICpTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50SW1wbDo6Z2V0QkJveCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIFNWR0xvY2F0YWJsZUltcGw6OmdldEJCb3godGhpcyk7Cit9CisK
K1NWR01hdHJpeEltcGwgKlNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnRJbXBsOjpnZXRDVE0oKSBj
b25zdAoreworICAgIHJldHVybiBTVkdMb2NhdGFibGVJbXBsOjpnZXRDVE0odGhpcyk7Cit9CisK
K1NWR01hdHJpeEltcGwgKlNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnRJbXBsOjpnZXRTY3JlZW5D
VE0oKSBjb25zdAoreworICAgIHJldHVybiBTVkdMb2NhdGFibGVJbXBsOjpnZXRTY3JlZW5DVE0o
dGhpcyk7Cit9CisKK1NWR01hdHJpeEltcGwgKlNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnRJbXBs
OjpnZXRUcmFuc2Zvcm1Ub0VsZW1lbnQoU1ZHRWxlbWVudEltcGwgKikgY29uc3QKK3sKKyAgICAv
LyBUT0RPIQorICAgIHJldHVybiAwOworfQorCisvLyB2aW06dHM9NDpub2V0CkluZGV4OiBTVkdT
dHlsZWRMb2NhdGFibGVFbGVtZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtTnB1IFNWR1N0eWxl
ZExvY2F0YWJsZUVsZW1lbnRJbXBsLmgKLS0tIFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnRJbXBs
LmgJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAorKysgU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVu
dEltcGwuaAkxNSBPY3QgMjAwNSAyMzoyOToxOCAtMDAwMApAQCAtMCwwICsxLDUzIEBACisvKgor
ICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hA
a2RlLm9yZz4KKyAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2Rl
Lm9yZz4KKworICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAorCisgICAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0g
U3VpdGUgMzMwLAorICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorKi8KKworI2lmbmRl
ZiBLU1ZHX1NWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnRJbXBsX0gKKyNkZWZpbmUgS1NWR19TVkdT
dHlsZWRMb2NhdGFibGVFbGVtZW50SW1wbF9ICisKKyNpbmNsdWRlICJTVkdTdHlsZWRFbGVtZW50
SW1wbC5oIgorI2luY2x1ZGUgIlNWR0xvY2F0YWJsZUltcGwuaCIKKworbmFtZXNwYWNlIEtTVkcK
K3sKKyAgICBjbGFzcyBTVkdSZWN0SW1wbDsKKyAgICBjbGFzcyBTVkdNYXRyaXhJbXBsOworICAg
IGNsYXNzIFNWR0VsZW1lbnRJbXBsOworICAgIGNsYXNzIFNWR1N0eWxlZExvY2F0YWJsZUVsZW1l
bnRJbXBsIDogcHVibGljIFNWR1N0eWxlZEVsZW1lbnRJbXBsLCBwdWJsaWMgU1ZHTG9jYXRhYmxl
SW1wbAorICAgIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFNWR1N0eWxlZExvY2F0YWJsZUVsZW1l
bnRJbXBsKEtET006OkRvY3VtZW50UHRyICpkb2MsIEtET006Ok5vZGVJbXBsOjpJZCBpZCwgS0RP
TTo6RE9NU3RyaW5nSW1wbCAqcHJlZml4KTsKKyAgICAgICAgdmlydHVhbCB+U1ZHU3R5bGVkTG9j
YXRhYmxlRWxlbWVudEltcGwoKTsKKworICAgICAgICAvLyAnU1ZHU3R5bGVkTG9jYXRhYmxlRWxl
bWVudCcgZnVuY3Rpb25zCisgICAgICAgIHZpcnR1YWwgU1ZHRWxlbWVudEltcGwgKm5lYXJlc3RW
aWV3cG9ydEVsZW1lbnQoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBTVkdFbGVtZW50SW1wbCAq
ZmFydGhlc3RWaWV3cG9ydEVsZW1lbnQoKSBjb25zdDsKKworICAgICAgICB2aXJ0dWFsIFNWR1Jl
Y3RJbXBsICpnZXRCQm94KCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgU1ZHTWF0cml4SW1wbCAq
Z2V0Q1RNKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgU1ZHTWF0cml4SW1wbCAqZ2V0U2NyZWVu
Q1RNKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgU1ZHTWF0cml4SW1wbCAqZ2V0VHJhbnNmb3Jt
VG9FbGVtZW50KFNWR0VsZW1lbnRJbXBsICplbGVtZW50KSBjb25zdDsKKyAgICB9OworfTsKKwor
I2VuZGlmCisKKy8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVF
bGVtZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC1OcHUgU1ZHU3R5bGVkVHJhbnNmb3JtYWJs
ZUVsZW1lbnRJbXBsLmNwcAotLS0gU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnRJbXBsLmNw
cAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxl
bWVudEltcGwuY3BwCTI4IE9jdCAyMDA1IDIyOjIxOjQ2IC0wMDAwCkBAIC0wLDAgKzEsMTczIEBA
CisvKgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdp
bGRmb3hAa2RlLm9yZz4KKyAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1
aXNAa2RlLm9yZz4KKworICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAor
CisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBs
YWNlIC0gU3VpdGUgMzMwLAorICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPGtkZWJ1Zy5oPgorI2luY2x1ZGUgPHFyZWdl
eHAuaD4KKyNpbmNsdWRlIDxxc3RyaW5nbGlzdC5oPgorCisjaW5jbHVkZSA8a2RvbS9jb3JlL0F0
dHJJbXBsLmg+CisKKyNpbmNsdWRlIDxrY2FudmFzL0tDYW52YXMuaD4KKyNpbmNsdWRlIDxrY2Fu
dmFzL0tDYW52YXNJdGVtLmg+CisKKyNpbmNsdWRlICJzdmdhdHRycy5oIgorI2luY2x1ZGUgIlNW
R0hlbHBlci5oIgorI2luY2x1ZGUgIlNWR01hdHJpeEltcGwuaCIKKyNpbmNsdWRlICJTVkdEb2N1
bWVudEltcGwuaCIKKyNpbmNsdWRlICJTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudEltcGwu
aCIKKyNpbmNsdWRlICJTVkdTdHlsZWRFbGVtZW50SW1wbC5oIgorI2luY2x1ZGUgIlNWR0RPTUlt
cGxlbWVudGF0aW9uSW1wbC5oIgorI2luY2x1ZGUgIlNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdElt
cGwuaCIKKwordXNpbmcgbmFtZXNwYWNlIEtTVkc7CisKK1NWR1N0eWxlZFRyYW5zZm9ybWFibGVF
bGVtZW50SW1wbDo6U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnRJbXBsKEtET006OkRvY3Vt
ZW50UHRyICpkb2MsIEtET006Ok5vZGVJbXBsOjpJZCBpZCwgS0RPTTo6RE9NU3RyaW5nSW1wbCAq
cHJlZml4KQorOiBTVkdTdHlsZWRFbGVtZW50SW1wbChkb2MsIGlkLCBwcmVmaXgpLCBTVkdUcmFu
c2Zvcm1hYmxlSW1wbCgpCit7CisgICAgbV90cmFuc2Zvcm0gPSAwOworICAgIG1fbG9jYWxNYXRy
aXggPSAwOworfQorCitTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudEltcGw6On5TVkdTdHls
ZWRUcmFuc2Zvcm1hYmxlRWxlbWVudEltcGwoKQoreworICAgIGlmKG1fdHJhbnNmb3JtKQorICAg
ICAgICBtX3RyYW5zZm9ybS0+ZGVyZWYoKTsKKyAgICBpZihtX2xvY2FsTWF0cml4KQorICAgICAg
ICBtX2xvY2FsTWF0cml4LT5kZXJlZigpOworfQorCitTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RJ
bXBsICpTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudEltcGw6OnRyYW5zZm9ybSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGxhenlfY3JlYXRlPFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdEltcGw+
KG1fdHJhbnNmb3JtLCB0aGlzKTsKK30KKworU1ZHTWF0cml4SW1wbCAqU1ZHU3R5bGVkVHJhbnNm
b3JtYWJsZUVsZW1lbnRJbXBsOjpsb2NhbE1hdHJpeCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGxh
enlfY3JlYXRlPFNWR01hdHJpeEltcGw+KG1fbG9jYWxNYXRyaXgpOworfQorCitTVkdNYXRyaXhJ
bXBsICpTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudEltcGw6OmdldENUTSgpIGNvbnN0Cit7
CisgICAgU1ZHTWF0cml4SW1wbCAqY3RtID0gU1ZHTG9jYXRhYmxlSW1wbDo6Z2V0Q1RNKHRoaXMp
OworCisgICAgaWYobV9sb2NhbE1hdHJpeCkKKyAgICAgICAgY3RtLT5tdWx0aXBseShtX2xvY2Fs
TWF0cml4KTsKKworICAgIHJldHVybiBjdG07Cit9CisKK1NWR01hdHJpeEltcGwgKlNWR1N0eWxl
ZFRyYW5zZm9ybWFibGVFbGVtZW50SW1wbDo6Z2V0U2NyZWVuQ1RNKCkgY29uc3QKK3sKKyAgICBT
VkdNYXRyaXhJbXBsICpjdG0gPSBTVkdMb2NhdGFibGVJbXBsOjpnZXRTY3JlZW5DVE0odGhpcyk7
CisKKyAgICBpZihtX2xvY2FsTWF0cml4KQorICAgICAgICBjdG0tPm11bHRpcGx5KG1fbG9jYWxN
YXRyaXgpOworCisgICAgcmV0dXJuIGN0bTsKK30KKwordm9pZCBTVkdTdHlsZWRUcmFuc2Zvcm1h
YmxlRWxlbWVudEltcGw6OnVwZGF0ZUxvY2FsVHJhbnNmb3JtKFNWR1RyYW5zZm9ybUxpc3RJbXBs
ICpsb2NhbFRyYW5zZm9ybXMpCit7CisgICAgLy8gVXBkYXRlIGNhY2hlZCBsb2NhbCBtYXRyaXgK
KyAgICBTVkdUcmFuc2Zvcm1JbXBsICpsb2NhbFRyYW5zZm9ybSA9IGxvY2FsVHJhbnNmb3Jtcy0+
Y29uY2F0ZW5hdGUoKTsKKyAgICBpZihsb2NhbFRyYW5zZm9ybSkKKyAgICB7CisgICAgICAgIGxv
Y2FsVHJhbnNmb3JtLT5yZWYoKTsKKyAgICAgICAgCisgICAgICAgIEtET01fU0FGRV9TRVQobV9s
b2NhbE1hdHJpeCwgbG9jYWxUcmFuc2Zvcm0tPm1hdHJpeCgpKTsKKworICAgICAgICBsb2NhbFRy
YW5zZm9ybS0+ZGVyZWYoKTsKKyAgICB9Cit9CisKK3ZvaWQgU1ZHU3R5bGVkVHJhbnNmb3JtYWJs
ZUVsZW1lbnRJbXBsOjp1cGRhdGVTdWJ0cmVlTWF0cmljZXMoS0RPTTo6Tm9kZUltcGwgKm5vZGUp
Cit7CisgICAgaWYoIW5vZGUpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZpcnN0IHVwZGF0
ZSBsb2NhbCBtYXRyaXguLi4KKyAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudEltcGwg
KnRyYW5zZm9ybSA9IGR5bmFtaWNfY2FzdDxTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudElt
cGwgKj4obm9kZSk7CisKKyAgICBpZih0cmFuc2Zvcm0gJiYgdHJhbnNmb3JtLT5sb2NhbE1hdHJp
eCgpKQorICAgIHsKKyAgICAgICAgUU1hdHJpeCB1c2VNYXRyaXggPSB0cmFuc2Zvcm0tPmxvY2Fs
TWF0cml4KCktPnFtYXRyaXgoKTsKKworICAgICAgICBLRE9NOjpOb2RlSW1wbCAqcGFyZW50RWxl
bWVudCA9IG5vZGUtPnBhcmVudE5vZGUoKTsKKyAgICAgICAgaWYocGFyZW50RWxlbWVudCAmJiBw
YXJlbnRFbGVtZW50LT5pZCgpID09IElEX0cpCisgICAgICAgIHsKKyAgICAgICAgICAgIFNWR01h
dHJpeEltcGwgKmN0bSA9IHRyYW5zZm9ybS0+Z2V0Q1RNKCk7CisgICAgICAgICAgICBjdG0tPnJl
ZigpOworCisgICAgICAgICAgICB1c2VNYXRyaXggKj0gY3RtLT5xbWF0cml4KCk7CisKKyAgICAg
ICAgICAgIGN0bS0+ZGVyZWYoKTsKKyAgICAgICAgfQorCisgICAgICAgIHRyYW5zZm9ybS0+dXBk
YXRlQ1RNKHVzZU1hdHJpeCk7CisgICAgfQorCisgICAgLy8gLi4uIHRoZW4gdXBkYXRlIHRoZSB3
aG9sZSBzdWJ0cmVlLCBpZiBwb3NzaWJsZS4KKyAgICBmb3IoS0RPTTo6Tm9kZUltcGwgKm4gPSBu
b2RlLT5maXJzdENoaWxkKCk7IG4gIT0gMDsgbiA9IG4tPm5leHRTaWJsaW5nKCkpCisgICAgICAg
IHVwZGF0ZVN1YnRyZWVNYXRyaWNlcyhuKTsKK30KKwordm9pZCBTVkdTdHlsZWRUcmFuc2Zvcm1h
YmxlRWxlbWVudEltcGw6OnBhcnNlQXR0cmlidXRlKEtET006OkF0dHJpYnV0ZUltcGwgKmF0dHIp
Cit7CisgICAgaW50IGlkID0gKGF0dHItPmlkKCkgJiBOb2RlSW1wbF9JZExvY2FsTWFzayk7Cisg
ICAgaWYoaWQgPT0gQVRUUl9UUkFOU0ZPUk0pCisgICAgeworICAgICAgICBTVkdUcmFuc2Zvcm1M
aXN0SW1wbCAqbG9jYWxUcmFuc2Zvcm1zID0gdHJhbnNmb3JtKCktPmJhc2VWYWwoKTsKKworICAg
ICAgICBsb2NhbFRyYW5zZm9ybXMtPmNsZWFyKCk7CisgICAgICAgIFNWR1N0eWxlZFRyYW5zZm9y
bWFibGVFbGVtZW50SW1wbDo6cGFyc2VUcmFuc2Zvcm1BdHRyaWJ1dGUobG9jYWxUcmFuc2Zvcm1z
LCBhdHRyLT52YWx1ZSgpKTsKKworICAgICAgICAvLyBVcGRhdGUgY2FjaGVkIGxvY2FsIG1hdHJp
eAorICAgICAgICB1cGRhdGVMb2NhbFRyYW5zZm9ybShsb2NhbFRyYW5zZm9ybXMpOworCisgICAg
ICAgIHVwZGF0ZVN1YnRyZWVNYXRyaWNlcyh0aGlzKTsKKyAgICB9CisgICAgZWxzZQorICAgICAg
ICBTVkdTdHlsZWRFbGVtZW50SW1wbDo6cGFyc2VBdHRyaWJ1dGUoYXR0cik7Cit9CisKK1NWR0Vs
ZW1lbnRJbXBsICpTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudEltcGw6Om5lYXJlc3RWaWV3
cG9ydEVsZW1lbnQoKSBjb25zdAoreworICAgIHJldHVybiBTVkdUcmFuc2Zvcm1hYmxlSW1wbDo6
bmVhcmVzdFZpZXdwb3J0RWxlbWVudCh0aGlzKTsKK30KKworU1ZHRWxlbWVudEltcGwgKlNWR1N0
eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50SW1wbDo6ZmFydGhlc3RWaWV3cG9ydEVsZW1lbnQoKSBj
b25zdAoreworICAgIHJldHVybiBTVkdUcmFuc2Zvcm1hYmxlSW1wbDo6ZmFydGhlc3RWaWV3cG9y
dEVsZW1lbnQodGhpcyk7Cit9CisKK1NWR1JlY3RJbXBsICpTVkdTdHlsZWRUcmFuc2Zvcm1hYmxl
RWxlbWVudEltcGw6OmdldEJCb3goKSBjb25zdAoreworICAgIHJldHVybiBTVkdUcmFuc2Zvcm1h
YmxlSW1wbDo6Z2V0QkJveCh0aGlzKTsKK30KKworU1ZHTWF0cml4SW1wbCAqU1ZHU3R5bGVkVHJh
bnNmb3JtYWJsZUVsZW1lbnRJbXBsOjpnZXRUcmFuc2Zvcm1Ub0VsZW1lbnQoU1ZHRWxlbWVudElt
cGwgKikgY29uc3QKK3sKKyAgICByZXR1cm4gMDsKK30KKworLy8gdmltOnRzPTQ6bm9ldApJbmRl
eDogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC1O
cHUgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnRJbXBsLmgKLS0tIFNWR1N0eWxlZFRyYW5z
Zm9ybWFibGVFbGVtZW50SW1wbC5oCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIFNWR1N0
eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50SW1wbC5oCTE1IE9jdCAyMDA1IDIzOjI5OjE4IC0wMDAw
CkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29s
YXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgICAgICAgICAgICAgICAgMjAwNCwg
MjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg
dGhlIEtERSBwcm9qZWN0CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCisgICAgQm9zdG9uLCBNQSAwMjExMS0x
MzA3LCBVU0EuCisqLworCisjaWZuZGVmIEtTVkdfU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1l
bnRJbXBsX0gKKyNkZWZpbmUgS1NWR19TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudEltcGxf
SAorCisjaW5jbHVkZSAiU1ZHU3R5bGVkRWxlbWVudEltcGwuaCIKKyNpbmNsdWRlICJTVkdUcmFu
c2Zvcm1hYmxlSW1wbC5oIgorCitjbGFzcyBRTWF0cml4OworCituYW1lc3BhY2UgS0RPTQorewor
ICAgIGNsYXNzIE5vZGVJbXBsOworICAgIGNsYXNzIERPTVN0cmluZ0ltcGw7CisgICAgY2xhc3Mg
QXR0cmlidXRlSW1wbDsKK307CisKK25hbWVzcGFjZSBLU1ZHCit7CisgICAgY2xhc3MgU1ZHTWF0
cml4SW1wbDsKKyAgICBjbGFzcyBTVkdUcmFuc2Zvcm1MaXN0SW1wbDsKKyAgICBjbGFzcyBTVkdB
bmltYXRlZFRyYW5zZm9ybUxpc3RJbXBsOworICAgIGNsYXNzIFNWR1N0eWxlZFRyYW5zZm9ybWFi
bGVFbGVtZW50SW1wbCA6IHB1YmxpYyBTVkdTdHlsZWRFbGVtZW50SW1wbCwgcHVibGljIFNWR1Ry
YW5zZm9ybWFibGVJbXBsCisgICAgeworICAgIHB1YmxpYzoKKyAgICAgICAgU1ZHU3R5bGVkVHJh
bnNmb3JtYWJsZUVsZW1lbnRJbXBsKEtET006OkRvY3VtZW50UHRyICpkb2MsIEtET006Ok5vZGVJ
bXBsOjpJZCBpZCwgS0RPTTo6RE9NU3RyaW5nSW1wbCAqcHJlZml4KTsKKyAgICAgICAgdmlydHVh
bCB+U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnRJbXBsKCk7CisKKyAgICAgICAgLy8gJ1NW
R1RyYW5zZm9ybWFibGUnIGZ1bmN0aW9ucworICAgICAgICB2aXJ0dWFsIFNWR0FuaW1hdGVkVHJh
bnNmb3JtTGlzdEltcGwgKnRyYW5zZm9ybSgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIFNWR01h
dHJpeEltcGwgKmxvY2FsTWF0cml4KCkgY29uc3Q7CisKKyAgICAgICAgLy8gRGVyaXZlZCBmcm9t
OiAnU1ZHTG9jYXRhYmxlJworICAgICAgICB2aXJ0dWFsIFNWR01hdHJpeEltcGwgKmdldENUTSgp
IGNvbnN0OworICAgICAgICB2aXJ0dWFsIFNWR01hdHJpeEltcGwgKmdldFNjcmVlbkNUTSgpIGNv
bnN0OworICAgICAgICB2aXJ0dWFsIFNWR0VsZW1lbnRJbXBsICpuZWFyZXN0Vmlld3BvcnRFbGVt
ZW50KCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgU1ZHRWxlbWVudEltcGwgKmZhcnRoZXN0Vmll
d3BvcnRFbGVtZW50KCkgY29uc3Q7CisKKyAgICAgICAgdmlydHVhbCBTVkdSZWN0SW1wbCAqZ2V0
QkJveCgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIFNWR01hdHJpeEltcGwgKmdldFRyYW5zZm9y
bVRvRWxlbWVudChTVkdFbGVtZW50SW1wbCAqZWxlbWVudCkgY29uc3Q7CisKKyAgICAgICAgdmly
dHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKEtET006OkF0dHJpYnV0ZUltcGwgKmF0dHIpOworCisg
ICAgICAgIHZvaWQgdXBkYXRlU3VidHJlZU1hdHJpY2VzKEtET006Ok5vZGVJbXBsICpub2RlKTsK
KyAgICAgICAgdm9pZCB1cGRhdGVMb2NhbFRyYW5zZm9ybShTVkdUcmFuc2Zvcm1MaXN0SW1wbCAq
bG9jYWxUcmFuc2Zvcm1zKTsKKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgbXV0YWJsZSBTVkdN
YXRyaXhJbXBsICptX2xvY2FsTWF0cml4OworICAgICAgICBtdXRhYmxlIFNWR0FuaW1hdGVkVHJh
bnNmb3JtTGlzdEltcGwgKm1fdHJhbnNmb3JtOworICAgIH07Cit9OworCisjZW5kaWYKKworLy8g
dmltOnRzPTQ6bm9ldApJbmRleDogU1ZHQUVsZW1lbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm
aWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rc3ZnMi9zdmcvU1ZHQUVsZW1lbnRJbXBsLmNwcCx2
CnJldHJpZXZpbmcgcmV2aXNpb24gMS42CmRpZmYgLXAgLXUgLXIxLjYgU1ZHQUVsZW1lbnRJbXBs
LmNwcAotLS0gU1ZHQUVsZW1lbnRJbXBsLmNwcAk1IE9jdCAyMDA1IDA1OjM1OjE0IC0wMDAwCTEu
NgorKysgU1ZHQUVsZW1lbnRJbXBsLmNwcAkyOCBPY3QgMjAwNSAyMjo0MDozNiAtMDAwMApAQCAt
NDAsNyArNDAsNyBAQAogdXNpbmcgbmFtZXNwYWNlIEtTVkc7CiAKIFNWR0FFbGVtZW50SW1wbDo6
U1ZHQUVsZW1lbnRJbXBsKEtET006OkRvY3VtZW50UHRyICpkb2MsIEtET006Ok5vZGVJbXBsOjpJ
ZCBpZCwgS0RPTTo6RE9NU3RyaW5nSW1wbCAqcHJlZml4KQotOiBTVkdTdHlsZWRFbGVtZW50SW1w
bChkb2MsIGlkLCBwcmVmaXgpLCBTVkdVUklSZWZlcmVuY2VJbXBsKCksIFNWR1Rlc3RzSW1wbCgp
LCBTVkdMYW5nU3BhY2VJbXBsKCksIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRJbXBsKCks
IFNWR1RyYW5zZm9ybWFibGVJbXBsKCkKKzogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnRJ
bXBsKGRvYywgaWQsIHByZWZpeCksIFNWR1VSSVJlZmVyZW5jZUltcGwoKSwgU1ZHVGVzdHNJbXBs
KCksIFNWR0xhbmdTcGFjZUltcGwoKSwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEltcGwo
KQogewogICAgIG1fdGFyZ2V0ID0gMDsKIH0KQEAgLTc3LDkgKzc3LDggQEAgdm9pZCBTVkdBRWxl
bWVudEltcGw6OnBhcnNlQXR0cmlidXRlKEtETwogICAgICAgICAgICAgaWYoU1ZHVGVzdHNJbXBs
OjpwYXJzZUF0dHJpYnV0ZShhdHRyKSkgcmV0dXJuOwogICAgICAgICAgICAgaWYoU1ZHTGFuZ1Nw
YWNlSW1wbDo6cGFyc2VBdHRyaWJ1dGUoYXR0cikpIHJldHVybjsKICAgICAgICAgICAgIGlmKFNW
R0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRJbXBsOjpwYXJzZUF0dHJpYnV0ZShhdHRyKSkgcmV0
dXJuOwotICAgICAgICAgICAgaWYoU1ZHVHJhbnNmb3JtYWJsZUltcGw6OnBhcnNlQXR0cmlidXRl
KGF0dHIpKSByZXR1cm47Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIFNWR1N0eWxlZEVsZW1l
bnRJbXBsOjpwYXJzZUF0dHJpYnV0ZShhdHRyKTsKKworICAgICAgICAgICAgU1ZHU3R5bGVkVHJh
bnNmb3JtYWJsZUVsZW1lbnRJbXBsOjpwYXJzZUF0dHJpYnV0ZShhdHRyKTsKICAgICAgICAgfQog
ICAgIH07CiB9CkluZGV4OiBTVkdBRWxlbWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAv
Y3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rc3ZnMi9zdmcvU1ZHQUVsZW1lbnRJbXBsLmgsdgpyZXRyaWV2
aW5nIHJldmlzaW9uIDEuNApkaWZmIC1wIC11IC1yMS40IFNWR0FFbGVtZW50SW1wbC5oCi0tLSBT
VkdBRWxlbWVudEltcGwuaAkxIFNlcCAyMDA1IDA3OjM1OjMxIC0wMDAwCTEuNAorKysgU1ZHQUVs
ZW1lbnRJbXBsLmgJMjggT2N0IDIwMDUgMjI6NDA6MzYgLTAwMDAKQEAgLTI2LDE5ICsyNiwxNyBA
QAogI2luY2x1ZGUgIlNWR1Rlc3RzSW1wbC5oIgogI2luY2x1ZGUgIlNWR0xhbmdTcGFjZUltcGwu
aCIKICNpbmNsdWRlICJTVkdVUklSZWZlcmVuY2VJbXBsLmgiCi0jaW5jbHVkZSAiU1ZHU3R5bGVk
RWxlbWVudEltcGwuaCIKLSNpbmNsdWRlICJTVkdUcmFuc2Zvcm1hYmxlSW1wbC5oIgorI2luY2x1
ZGUgIlNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50SW1wbC5oIgogI2luY2x1ZGUgIlNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRJbXBsLmgiCiAKIG5hbWVzcGFjZSBLU1ZHCiB7CiAgICAg
Y2xhc3MgU1ZHQW5pbWF0ZWRTdHJpbmdJbXBsOwotICAgIGNsYXNzIFNWR0FFbGVtZW50SW1wbCA6
IHB1YmxpYyBTVkdTdHlsZWRFbGVtZW50SW1wbCwKKyAgICBjbGFzcyBTVkdBRWxlbWVudEltcGwg
OiBwdWJsaWMgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnRJbXBsLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdVUklSZWZlcmVuY2VJbXBsLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdUZXN0c0ltcGwsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHVibGljIFNWR0xhbmdTcGFjZUltcGwsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHVibGljIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRJbXBsLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdUcmFuc2Zvcm1hYmxlSW1wbAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkSW1w
bAogICAgIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNWR0FFbGVtZW50SW1wbChLRE9NOjpEb2N1
bWVudFB0ciAqZG9jLCBLRE9NOjpOb2RlSW1wbDo6SWQgaWQsIEtET006OkRPTVN0cmluZ0ltcGwg
KnByZWZpeCk7CkluZGV4OiBTVkdDaXJjbGVFbGVtZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1Mg
ZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva3N2ZzIvc3ZnL1NWR0NpcmNsZUVsZW1lbnRJbXBs
LmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS42CmRpZmYgLXAgLXUgLXIxLjYgU1ZHQ2lyY2xl
RWxlbWVudEltcGwuY3BwCi0tLSBTVkdDaXJjbGVFbGVtZW50SW1wbC5jcHAJNSBPY3QgMjAwNSAw
NTozNToxNyAtMDAwMAkxLjYKKysrIFNWR0NpcmNsZUVsZW1lbnRJbXBsLmNwcAkyOCBPY3QgMjAw
NSAyMjo0MDozNyAtMDAwMApAQCAtMzQsNyArMzQsNyBAQAogdXNpbmcgbmFtZXNwYWNlIEtTVkc7
CiAKIFNWR0NpcmNsZUVsZW1lbnRJbXBsOjpTVkdDaXJjbGVFbGVtZW50SW1wbChLRE9NOjpEb2N1
bWVudFB0ciAqZG9jLCBLRE9NOjpOb2RlSW1wbDo6SWQgaWQsIEtET006OkRPTVN0cmluZ0ltcGwg
KnByZWZpeCkKLTogU1ZHU3R5bGVkRWxlbWVudEltcGwoZG9jLCBpZCwgcHJlZml4KSwgU1ZHVGVz
dHNJbXBsKCksIFNWR0xhbmdTcGFjZUltcGwoKSwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZEltcGwoKSwgU1ZHVHJhbnNmb3JtYWJsZUltcGwoKQorOiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxl
RWxlbWVudEltcGwoZG9jLCBpZCwgcHJlZml4KSwgU1ZHVGVzdHNJbXBsKCksIFNWR0xhbmdTcGFj
ZUltcGwoKSwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEltcGwoKQogewogICAgIG1fY3gg
PSBtX2N5ID0gbV9yID0gMDsKIH0KQEAgLTkwLDkgKzkwLDggQEAgdm9pZCBTVkdDaXJjbGVFbGVt
ZW50SW1wbDo6cGFyc2VBdHRyaWJ1dAogICAgICAgICAgICAgaWYoU1ZHVGVzdHNJbXBsOjpwYXJz
ZUF0dHJpYnV0ZShhdHRyKSkgcmV0dXJuOwogICAgICAgICAgICAgaWYoU1ZHTGFuZ1NwYWNlSW1w
bDo6cGFyc2VBdHRyaWJ1dGUoYXR0cikpIHJldHVybjsKICAgICAgICAgICAgIGlmKFNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWRJbXBsOjpwYXJzZUF0dHJpYnV0ZShhdHRyKSkgcmV0dXJuOwot
ICAgICAgICAgICAgaWYoU1ZHVHJhbnNmb3JtYWJsZUltcGw6OnBhcnNlQXR0cmlidXRlKGF0dHIp
KSByZXR1cm47Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIFNWR1N0eWxlZEVsZW1lbnRJbXBs
OjpwYXJzZUF0dHJpYnV0ZShhdHRyKTsKKworICAgICAgICAgICAgU1ZHU3R5bGVkVHJhbnNmb3Jt
YWJsZUVsZW1lbnRJbXBsOjpwYXJzZUF0dHJpYnV0ZShhdHRyKTsKICAgICAgICAgfQogICAgIH07
CiB9CkluZGV4OiBTVkdDaXJjbGVFbGVtZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9j
dnMvcm9vdC9TVkdTdXBwb3J0L2tzdmcyL3N2Zy9TVkdDaXJjbGVFbGVtZW50SW1wbC5oLHYKcmV0
cmlldmluZyByZXZpc2lvbiAxLjQKZGlmZiAtcCAtdSAtcjEuNCBTVkdDaXJjbGVFbGVtZW50SW1w
bC5oCi0tLSBTVkdDaXJjbGVFbGVtZW50SW1wbC5oCTEgU2VwIDIwMDUgMDc6MzU6MzUgLTAwMDAJ
MS40CisrKyBTVkdDaXJjbGVFbGVtZW50SW1wbC5oCTI4IE9jdCAyMDA1IDIyOjQwOjM3IC0wMDAw
CkBAIC0yNSwxOCArMjUsMTYgQEAKIAogI2luY2x1ZGUgIlNWR1Rlc3RzSW1wbC5oIgogI2luY2x1
ZGUgIlNWR0xhbmdTcGFjZUltcGwuaCIKLSNpbmNsdWRlICJTVkdTdHlsZWRFbGVtZW50SW1wbC5o
IgotI2luY2x1ZGUgIlNWR1RyYW5zZm9ybWFibGVJbXBsLmgiCisjaW5jbHVkZSAiU1ZHU3R5bGVk
VHJhbnNmb3JtYWJsZUVsZW1lbnRJbXBsLmgiCiAjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZEltcGwuaCIKIAogbmFtZXNwYWNlIEtTVkcKIHsKICAgICBjbGFzcyBTVkdBbmlt
YXRlZExlbmd0aEltcGw7Ci0gICAgY2xhc3MgU1ZHQ2lyY2xlRWxlbWVudEltcGwgOiBwdWJsaWMg
U1ZHU3R5bGVkRWxlbWVudEltcGwsCisgICAgY2xhc3MgU1ZHQ2lyY2xlRWxlbWVudEltcGwgOiBw
dWJsaWMgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnRJbXBsLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHVibGljIFNWR1Rlc3RzSW1wbCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdMYW5nU3BhY2VJbXBsLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZElt
cGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVHJhbnNmb3Jt
YWJsZUltcGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkSW1wbAogICAgIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNW
R0NpcmNsZUVsZW1lbnRJbXBsKEtET006OkRvY3VtZW50UHRyICpkb2MsIEtET006Ok5vZGVJbXBs
OjpJZCBpZCwgS0RPTTo6RE9NU3RyaW5nSW1wbCAqcHJlZml4KTsKSW5kZXg6IFNWR0NsaXBQYXRo
RWxlbWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0
L2tzdmcyL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnRJbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNp
b24gMS42CmRpZmYgLXAgLXUgLXIxLjYgU1ZHQ2xpcFBhdGhFbGVtZW50SW1wbC5jcHAKLS0tIFNW
R0NsaXBQYXRoRWxlbWVudEltcGwuY3BwCTUgT2N0IDIwMDUgMDU6MzU6MTcgLTAwMDAJMS42Cisr
KyBTVkdDbGlwUGF0aEVsZW1lbnRJbXBsLmNwcAkyOCBPY3QgMjAwNSAyMjo0MDozNyAtMDAwMApA
QCAtMzksNyArMzksNyBAQAogdXNpbmcgbmFtZXNwYWNlIEtTVkc7CiAKIFNWR0NsaXBQYXRoRWxl
bWVudEltcGw6OlNWR0NsaXBQYXRoRWxlbWVudEltcGwoS0RPTTo6RG9jdW1lbnRQdHIgKmRvYywg
S0RPTTo6Tm9kZUltcGw6OklkIGlkLCBLRE9NOjpET01TdHJpbmdJbXBsICpwcmVmaXgpCi06IFNW
R1N0eWxlZEVsZW1lbnRJbXBsKGRvYywgaWQsIHByZWZpeCksIFNWR1Rlc3RzSW1wbCgpLCBTVkdM
YW5nU3BhY2VJbXBsKCksIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRJbXBsKCksIFNWR1Ry
YW5zZm9ybWFibGVJbXBsKCkKKzogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnRJbXBsKGRv
YywgaWQsIHByZWZpeCksIFNWR1Rlc3RzSW1wbCgpLCBTVkdMYW5nU3BhY2VJbXBsKCksIFNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRJbXBsKCkKIHsKICAgICBtX2NsaXBQYXRoVW5pdHMgPSAw
OwogICAgIG1fY2xpcHBlciA9IDA7CkBAIC04MSw5ICs4MSw4IEBAIHZvaWQgU1ZHQ2xpcFBhdGhF
bGVtZW50SW1wbDo6cGFyc2VBdHRyaWIKICAgICAgICAgICAgIGlmKFNWR1Rlc3RzSW1wbDo6cGFy
c2VBdHRyaWJ1dGUoYXR0cikpIHJldHVybjsKICAgICAgICAgICAgIGlmKFNWR0xhbmdTcGFjZUlt
cGw6OnBhcnNlQXR0cmlidXRlKGF0dHIpKSByZXR1cm47CiAgICAgICAgICAgICBpZihTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkSW1wbDo6cGFyc2VBdHRyaWJ1dGUoYXR0cikpIHJldHVybjsK
LSAgICAgICAgICAgIGlmKFNWR1RyYW5zZm9ybWFibGVJbXBsOjpwYXJzZUF0dHJpYnV0ZShhdHRy
KSkgcmV0dXJuOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBTVkdTdHlsZWRFbGVtZW50SW1w
bDo6cGFyc2VBdHRyaWJ1dGUoYXR0cik7CisKKyAgICAgICAgICAgIFNWR1N0eWxlZFRyYW5zZm9y
bWFibGVFbGVtZW50SW1wbDo6cGFyc2VBdHRyaWJ1dGUoYXR0cik7CiAgICAgICAgIH0KICAgICB9
OwogfQpJbmRleDogU1ZHQ2xpcFBhdGhFbGVtZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6
IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tzdmcyL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnRJbXBsLmgs
dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNApkaWZmIC1wIC11IC1yMS40IFNWR0NsaXBQYXRoRWxl
bWVudEltcGwuaAotLS0gU1ZHQ2xpcFBhdGhFbGVtZW50SW1wbC5oCTEgU2VwIDIwMDUgMDc6MzU6
MzUgLTAwMDAJMS40CisrKyBTVkdDbGlwUGF0aEVsZW1lbnRJbXBsLmgJMjggT2N0IDIwMDUgMjI6
NDA6MzcgLTAwMDAKQEAgLTI1LDggKzI1LDcgQEAKIAogI2luY2x1ZGUgIlNWR1Rlc3RzSW1wbC5o
IgogI2luY2x1ZGUgIlNWR0xhbmdTcGFjZUltcGwuaCIKLSNpbmNsdWRlICJTVkdTdHlsZWRFbGVt
ZW50SW1wbC5oIgotI2luY2x1ZGUgIlNWR1RyYW5zZm9ybWFibGVJbXBsLmgiCisjaW5jbHVkZSAi
U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnRJbXBsLmgiCiAjaW5jbHVkZSAiU1ZHRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZEltcGwuaCIKIAogY2xhc3MgS0NhbnZhc0NsaXBwZXI7CkBAIC0z
NCwxMSArMzMsMTAgQEAgY2xhc3MgS0NhbnZhc0NsaXBwZXI7CiBuYW1lc3BhY2UgS1NWRwogewog
ICAgIGNsYXNzIFNWR0FuaW1hdGVkRW51bWVyYXRpb25JbXBsOwotICAgIGNsYXNzIFNWR0NsaXBQ
YXRoRWxlbWVudEltcGwgOiBwdWJsaWMgU1ZHU3R5bGVkRWxlbWVudEltcGwsCisgICAgY2xhc3Mg
U1ZHQ2xpcFBhdGhFbGVtZW50SW1wbCA6IHB1YmxpYyBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxl
bWVudEltcGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdU
ZXN0c0ltcGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdM
YW5nU3BhY2VJbXBsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMg
U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEltcGwsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1YmxpYyBTVkdUcmFuc2Zvcm1hYmxlSW1wbAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZElt
cGwKICAgICB7CiAgICAgcHVibGljOgogICAgICAgICBTVkdDbGlwUGF0aEVsZW1lbnRJbXBsKEtE
T006OkRvY3VtZW50UHRyICpkb2MsIEtET006Ok5vZGVJbXBsOjpJZCBpZCwgIEtET006OkRPTVN0
cmluZ0ltcGwgKnByZWZpeCk7CkluZGV4OiBTVkdEZWZzRWxlbWVudEltcGwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tzdmcyL3N2Zy9TVkdEZWZzRWxlbWVu
dEltcGwuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjUKZGlmZiAtcCAtdSAtcjEuNSBTVkdE
ZWZzRWxlbWVudEltcGwuY3BwCi0tLSBTVkdEZWZzRWxlbWVudEltcGwuY3BwCTUgT2N0IDIwMDUg
MDU6MzU6MTggLTAwMDAJMS41CisrKyBTVkdEZWZzRWxlbWVudEltcGwuY3BwCTI4IE9jdCAyMDA1
IDIyOjQwOjM3IC0wMDAwCkBAIC0yNSw3ICsyNSw4IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBLU1ZH
OwogCi1TVkdEZWZzRWxlbWVudEltcGw6OlNWR0RlZnNFbGVtZW50SW1wbChLRE9NOjpEb2N1bWVu
dFB0ciAqZG9jLCBLRE9NOjpOb2RlSW1wbDo6SWQgaWQsIEtET006OkRPTVN0cmluZ0ltcGwgKnBy
ZWZpeCkgOiBTVkdTdHlsZWRFbGVtZW50SW1wbChkb2MsIGlkLCBwcmVmaXgpLCBTVkdUZXN0c0lt
cGwoKSwgU1ZHTGFuZ1NwYWNlSW1wbCgpLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkSW1w
bCgpLCBTVkdUcmFuc2Zvcm1hYmxlSW1wbCgpCitTVkdEZWZzRWxlbWVudEltcGw6OlNWR0RlZnNF
bGVtZW50SW1wbChLRE9NOjpEb2N1bWVudFB0ciAqZG9jLCBLRE9NOjpOb2RlSW1wbDo6SWQgaWQs
IEtET006OkRPTVN0cmluZ0ltcGwgKnByZWZpeCkKKzogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVs
ZW1lbnRJbXBsKGRvYywgaWQsIHByZWZpeCksIFNWR1Rlc3RzSW1wbCgpLCBTVkdMYW5nU3BhY2VJ
bXBsKCksIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRJbXBsKCkKIHsKIH0KIApJbmRleDog
U1ZHRGVmc0VsZW1lbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1
cHBvcnQva3N2ZzIvc3ZnL1NWR0RlZnNFbGVtZW50SW1wbC5oLHYKcmV0cmlldmluZyByZXZpc2lv
biAxLjQKZGlmZiAtcCAtdSAtcjEuNCBTVkdEZWZzRWxlbWVudEltcGwuaAotLS0gU1ZHRGVmc0Vs
ZW1lbnRJbXBsLmgJMSBTZXAgMjAwNSAwNzozNTozNiAtMDAwMAkxLjQKKysrIFNWR0RlZnNFbGVt
ZW50SW1wbC5oCTI4IE9jdCAyMDA1IDIyOjQwOjM3IC0wMDAwCkBAIC0yMywxOSArMjMsMTcgQEAK
ICNpZm5kZWYgS1NWR19TVkdEZWZzRWxlbWVudEltcGxfSAogI2RlZmluZSBLU1ZHX1NWR0RlZnNF
bGVtZW50SW1wbF9ICiAKLSNpbmNsdWRlICJTVkdTdHlsZWRFbGVtZW50SW1wbC5oIgorI2luY2x1
ZGUgIlNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50SW1wbC5oIgogI2luY2x1ZGUgIlNWR1Rl
c3RzSW1wbC5oIgogI2luY2x1ZGUgIlNWR0xhbmdTcGFjZUltcGwuaCIKICNpbmNsdWRlICJTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkSW1wbC5oIgotI2luY2x1ZGUgIlNWR1RyYW5zZm9ybWFi
bGVJbXBsLmgiCiAKIG5hbWVzcGFjZSBLU1ZHCiB7Ci0gICAgY2xhc3MgU1ZHRGVmc0VsZW1lbnRJ
bXBsIDogcHVibGljIFNWR1N0eWxlZEVsZW1lbnRJbXBsLAorICAgIGNsYXNzIFNWR0RlZnNFbGVt
ZW50SW1wbCA6IHB1YmxpYyBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudEltcGwsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR1Rlc3RzSW1wbCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHTGFuZ1NwYWNlSW1wbCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZEltcGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR1RyYW5zZm9y
bWFibGVJbXBsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWRJbXBsCiAgICAgewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZH
RGVmc0VsZW1lbnRJbXBsKEtET006OkRvY3VtZW50UHRyICpkb2MsIEtET006Ok5vZGVJbXBsOjpJ
ZCBpZCwgS0RPTTo6RE9NU3RyaW5nSW1wbCAqcHJlZml4KTsKSW5kZXg6IFNWR0VsbGlwc2VFbGVt
ZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva3N2
ZzIvc3ZnL1NWR0VsbGlwc2VFbGVtZW50SW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEu
NgpkaWZmIC1wIC11IC1yMS42IFNWR0VsbGlwc2VFbGVtZW50SW1wbC5jcHAKLS0tIFNWR0VsbGlw
c2VFbGVtZW50SW1wbC5jcHAJNSBPY3QgMjAwNSAwNTozNToxOSAtMDAwMAkxLjYKKysrIFNWR0Vs
bGlwc2VFbGVtZW50SW1wbC5jcHAJMjggT2N0IDIwMDUgMjI6NDA6MzcgLTAwMDAKQEAgLTM0LDcg
KzM0LDcgQEAKIHVzaW5nIG5hbWVzcGFjZSBLU1ZHOwogCiBTVkdFbGxpcHNlRWxlbWVudEltcGw6
OlNWR0VsbGlwc2VFbGVtZW50SW1wbChLRE9NOjpEb2N1bWVudFB0ciAqZG9jLCBLRE9NOjpOb2Rl
SW1wbDo6SWQgaWQsIEtET006OkRPTVN0cmluZ0ltcGwgKnByZWZpeCkKLTogU1ZHU3R5bGVkRWxl
bWVudEltcGwoZG9jLCBpZCwgcHJlZml4KSwgU1ZHVGVzdHNJbXBsKCksIFNWR0xhbmdTcGFjZUlt
cGwoKSwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEltcGwoKSwgU1ZHVHJhbnNmb3JtYWJs
ZUltcGwoKQorOiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudEltcGwoZG9jLCBpZCwgcHJl
Zml4KSwgU1ZHVGVzdHNJbXBsKCksIFNWR0xhbmdTcGFjZUltcGwoKSwgU1ZHRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZEltcGwoKQogewogICAgIG1fY3ggPSBtX2N5ID0gbV9yeCA9IG1fcnkgPSAw
OwogfQpAQCAtMTAyLDkgKzEwMiw4IEBAIHZvaWQgU1ZHRWxsaXBzZUVsZW1lbnRJbXBsOjpwYXJz
ZUF0dHJpYnUKICAgICAgICAgICAgIGlmKFNWR1Rlc3RzSW1wbDo6cGFyc2VBdHRyaWJ1dGUoYXR0
cikpIHJldHVybjsKICAgICAgICAgICAgIGlmKFNWR0xhbmdTcGFjZUltcGw6OnBhcnNlQXR0cmli
dXRlKGF0dHIpKSByZXR1cm47CiAgICAgICAgICAgICBpZihTVkdFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkSW1wbDo6cGFyc2VBdHRyaWJ1dGUoYXR0cikpIHJldHVybjsKLSAgICAgICAgICAgIGlm
KFNWR1RyYW5zZm9ybWFibGVJbXBsOjpwYXJzZUF0dHJpYnV0ZShhdHRyKSkgcmV0dXJuOwotICAg
ICAgICAgICAgCi0gICAgICAgICAgICBTVkdTdHlsZWRFbGVtZW50SW1wbDo6cGFyc2VBdHRyaWJ1
dGUoYXR0cik7CisKKyAgICAgICAgICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50SW1w
bDo6cGFyc2VBdHRyaWJ1dGUoYXR0cik7CiAgICAgICAgIH0KICAgICB9OwogfQpJbmRleDogU1ZH
RWxsaXBzZUVsZW1lbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1
cHBvcnQva3N2ZzIvc3ZnL1NWR0VsbGlwc2VFbGVtZW50SW1wbC5oLHYKcmV0cmlldmluZyByZXZp
c2lvbiAxLjQKZGlmZiAtcCAtdSAtcjEuNCBTVkdFbGxpcHNlRWxlbWVudEltcGwuaAotLS0gU1ZH
RWxsaXBzZUVsZW1lbnRJbXBsLmgJMSBTZXAgMjAwNSAwNzozNTozNyAtMDAwMAkxLjQKKysrIFNW
R0VsbGlwc2VFbGVtZW50SW1wbC5oCTI4IE9jdCAyMDA1IDIyOjQwOjM3IC0wMDAwCkBAIC0yNSwx
OCArMjUsMTYgQEAKIAogI2luY2x1ZGUgIlNWR1Rlc3RzSW1wbC5oIgogI2luY2x1ZGUgIlNWR0xh
bmdTcGFjZUltcGwuaCIKLSNpbmNsdWRlICJTVkdTdHlsZWRFbGVtZW50SW1wbC5oIgotI2luY2x1
ZGUgIlNWR1RyYW5zZm9ybWFibGVJbXBsLmgiCisjaW5jbHVkZSAiU1ZHU3R5bGVkVHJhbnNmb3Jt
YWJsZUVsZW1lbnRJbXBsLmgiCiAjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZEltcGwuaCIKIAogbmFtZXNwYWNlIEtTVkcKIHsKICAgICBjbGFzcyBTVkdBbmltYXRlZExlbmd0
aEltcGw7Ci0gICAgY2xhc3MgU1ZHRWxsaXBzZUVsZW1lbnRJbXBsIDogcHVibGljIFNWR1N0eWxl
ZEVsZW1lbnRJbXBsLAorICAgIGNsYXNzIFNWR0VsbGlwc2VFbGVtZW50SW1wbCA6IHB1YmxpYyBT
VkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudEltcGwsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHVibGljIFNWR1Rlc3RzSW1wbCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwdWJsaWMgU1ZHTGFuZ1NwYWNlSW1wbCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEltcGwsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR1RyYW5zZm9ybWFibGVJ
bXBsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0V4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWRJbXBsCiAgICAgewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHRWxs
aXBzZUVsZW1lbnRJbXBsKEtET006OkRvY3VtZW50UHRyICpkb2MsIEtET006Ok5vZGVJbXBsOjpJ
ZCBpZCwgS0RPTTo6RE9NU3RyaW5nSW1wbCAqcHJlZml4KTsKSW5kZXg6IFNWR0dFbGVtZW50SW1w
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva3N2ZzIvc3Zn
L1NWR0dFbGVtZW50SW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNQpkaWZmIC1wIC11
IC1yMS41IFNWR0dFbGVtZW50SW1wbC5jcHAKLS0tIFNWR0dFbGVtZW50SW1wbC5jcHAJNSBPY3Qg
MjAwNSAwNTozNToyMyAtMDAwMAkxLjUKKysrIFNWR0dFbGVtZW50SW1wbC5jcHAJMjggT2N0IDIw
MDUgMjI6NDA6MzcgLTAwMDAKQEAgLTMwLDcgKzMwLDggQEAKIAogdXNpbmcgbmFtZXNwYWNlIEtT
Vkc7CiAKLVNWR0dFbGVtZW50SW1wbDo6U1ZHR0VsZW1lbnRJbXBsKEtET006OkRvY3VtZW50UHRy
ICpkb2MsIEtET006Ok5vZGVJbXBsOjpJZCBpZCwgS0RPTTo6RE9NU3RyaW5nSW1wbCAqcHJlZml4
KSA6IFNWR1N0eWxlZEVsZW1lbnRJbXBsKGRvYywgaWQsIHByZWZpeCksIFNWR1Rlc3RzSW1wbCgp
LCBTVkdMYW5nU3BhY2VJbXBsKCksIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRJbXBsKCks
IFNWR1RyYW5zZm9ybWFibGVJbXBsKCkKK1NWR0dFbGVtZW50SW1wbDo6U1ZHR0VsZW1lbnRJbXBs
KEtET006OkRvY3VtZW50UHRyICpkb2MsIEtET006Ok5vZGVJbXBsOjpJZCBpZCwgS0RPTTo6RE9N
U3RyaW5nSW1wbCAqcHJlZml4KQorOiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudEltcGwo
ZG9jLCBpZCwgcHJlZml4KSwgU1ZHVGVzdHNJbXBsKCksIFNWR0xhbmdTcGFjZUltcGwoKSwgU1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEltcGwoKQogewogfQogCkBAIC00Myw5ICs0NCw4IEBA
IHZvaWQgU1ZHR0VsZW1lbnRJbXBsOjpwYXJzZUF0dHJpYnV0ZShLRE8KICAgICBpZihTVkdUZXN0
c0ltcGw6OnBhcnNlQXR0cmlidXRlKGF0dHIpKSByZXR1cm47CiAgICAgaWYoU1ZHTGFuZ1NwYWNl
SW1wbDo6cGFyc2VBdHRyaWJ1dGUoYXR0cikpIHJldHVybjsKICAgICBpZihTVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkSW1wbDo6cGFyc2VBdHRyaWJ1dGUoYXR0cikpIHJldHVybjsKLSAgICBp
ZihTVkdUcmFuc2Zvcm1hYmxlSW1wbDo6cGFyc2VBdHRyaWJ1dGUoYXR0cikpIHJldHVybjsKIAot
ICAgIFNWR1N0eWxlZEVsZW1lbnRJbXBsOjpwYXJzZUF0dHJpYnV0ZShhdHRyKTsKKyAgICBTVkdT
dHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudEltcGw6OnBhcnNlQXR0cmlidXRlKGF0dHIpOwogfQog
CiB2b2lkIFNWR0dFbGVtZW50SW1wbDo6c2V0Q2hhbmdlZChib29sIGIsIGJvb2wpCkluZGV4OiBT
VkdHRWxlbWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9y
dC9rc3ZnMi9zdmcvU1ZHR0VsZW1lbnRJbXBsLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNApk
aWZmIC1wIC11IC1yMS40IFNWR0dFbGVtZW50SW1wbC5oCi0tLSBTVkdHRWxlbWVudEltcGwuaAkx
IFNlcCAyMDA1IDA3OjM1OjQyIC0wMDAwCTEuNAorKysgU1ZHR0VsZW1lbnRJbXBsLmgJMjggT2N0
IDIwMDUgMjI6NDA6MzcgLTAwMDAKQEAgLTIzLDE5ICsyMywxNyBAQAogI2lmbmRlZiBLU1ZHX1NW
R0dFbGVtZW50SW1wbF9ICiAjZGVmaW5lIEtTVkdfU1ZHR0VsZW1lbnRJbXBsX0gKIAotI2luY2x1
ZGUgIlNWR1N0eWxlZEVsZW1lbnRJbXBsLmgiCisjaW5jbHVkZSAiU1ZHU3R5bGVkVHJhbnNmb3Jt
YWJsZUVsZW1lbnRJbXBsLmgiCiAjaW5jbHVkZSAiU1ZHVGVzdHNJbXBsLmgiCiAjaW5jbHVkZSAi
U1ZHTGFuZ1NwYWNlSW1wbC5oIgogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWRJbXBsLmgiCi0jaW5jbHVkZSAiU1ZHVHJhbnNmb3JtYWJsZUltcGwuaCIKIAogbmFtZXNwYWNl
IEtTVkcKIHsKLSAgICBjbGFzcyBTVkdHRWxlbWVudEltcGwgOiBwdWJsaWMgU1ZHU3R5bGVkRWxl
bWVudEltcGwsCisgICAgY2xhc3MgU1ZHR0VsZW1lbnRJbXBsIDogcHVibGljIFNWR1N0eWxlZFRy
YW5zZm9ybWFibGVFbGVtZW50SW1wbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJs
aWMgU1ZHVGVzdHNJbXBsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdM
YW5nU3BhY2VJbXBsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkSW1wbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
dWJsaWMgU1ZHVHJhbnNmb3JtYWJsZUltcGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
dWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEltcGwKICAgICB7CiAgICAgcHVibGlj
OgogICAgICAgICBTVkdHRWxlbWVudEltcGwoS0RPTTo6RG9jdW1lbnRQdHIgKmRvYywgS0RPTTo6
Tm9kZUltcGw6OklkIGlkLCBLRE9NOjpET01TdHJpbmdJbXBsICpwcmVmaXgpOwpJbmRleDogU1ZH
SW1hZ2VFbGVtZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1
cHBvcnQva3N2ZzIvc3ZnL1NWR0ltYWdlRWxlbWVudEltcGwuY3BwLHYKcmV0cmlldmluZyByZXZp
c2lvbiAxLjcKZGlmZiAtcCAtdSAtcjEuNyBTVkdJbWFnZUVsZW1lbnRJbXBsLmNwcAotLS0gU1ZH
SW1hZ2VFbGVtZW50SW1wbC5jcHAJNSBPY3QgMjAwNSAwNTozNToyMyAtMDAwMAkxLjcKKysrIFNW
R0ltYWdlRWxlbWVudEltcGwuY3BwCTI4IE9jdCAyMDA1IDIyOjQwOjM3IC0wMDAwCkBAIC02Myw3
ICs2Myw3IEBACiB1c2luZyBuYW1lc3BhY2UgS1NWRzsKIAogU1ZHSW1hZ2VFbGVtZW50SW1wbDo6
U1ZHSW1hZ2VFbGVtZW50SW1wbChLRE9NOjpEb2N1bWVudFB0ciAqZG9jLCBLRE9NOjpOb2RlSW1w
bDo6SWQgaWQsIEtET006OkRPTVN0cmluZ0ltcGwgKnByZWZpeCkKLTogU1ZHU3R5bGVkRWxlbWVu
dEltcGwoZG9jLCBpZCwgcHJlZml4KSwgU1ZHVGVzdHNJbXBsKCksIFNWR0xhbmdTcGFjZUltcGwo
KSwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEltcGwoKSwgU1ZHVHJhbnNmb3JtYWJsZUlt
cGwoKSwgU1ZHVVJJUmVmZXJlbmNlSW1wbCgpLCBLRE9NOjpDYWNoZWRPYmplY3RDbGllbnQoKQor
OiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudEltcGwoZG9jLCBpZCwgcHJlZml4KSwgU1ZH
VGVzdHNJbXBsKCksIFNWR0xhbmdTcGFjZUltcGwoKSwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZEltcGwoKSwgU1ZHVVJJUmVmZXJlbmNlSW1wbCgpLCBLRE9NOjpDYWNoZWRPYmplY3RDbGll
bnQoKQogewogICAgIG1feCA9IG1feSA9IG1fd2lkdGggPSBtX2hlaWdodCA9IDA7CiAgICAgbV9w
cmVzZXJ2ZUFzcGVjdFJhdGlvID0gMDsKQEAgLTE0OSwxMCArMTQ5LDkgQEAgdm9pZCBTVkdJbWFn
ZUVsZW1lbnRJbXBsOjpwYXJzZUF0dHJpYnV0ZQogICAgICAgICAgICAgaWYoU1ZHVGVzdHNJbXBs
OjpwYXJzZUF0dHJpYnV0ZShhdHRyKSkgcmV0dXJuOwogICAgICAgICAgICAgaWYoU1ZHTGFuZ1Nw
YWNlSW1wbDo6cGFyc2VBdHRyaWJ1dGUoYXR0cikpIHJldHVybjsKICAgICAgICAgICAgIGlmKFNW
R0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRJbXBsOjpwYXJzZUF0dHJpYnV0ZShhdHRyKSkgcmV0
dXJuOwotICAgICAgICAgICAgaWYoU1ZHVHJhbnNmb3JtYWJsZUltcGw6OnBhcnNlQXR0cmlidXRl
KGF0dHIpKSByZXR1cm47CiAgICAgICAgICAgICBpZihTVkdVUklSZWZlcmVuY2VJbXBsOjpwYXJz
ZUF0dHJpYnV0ZShhdHRyKSkgcmV0dXJuOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBTVkdT
dHlsZWRFbGVtZW50SW1wbDo6cGFyc2VBdHRyaWJ1dGUoYXR0cik7CisKKyAgICAgICAgICAgIFNW
R1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50SW1wbDo6cGFyc2VBdHRyaWJ1dGUoYXR0cik7CiAg
ICAgICAgIH0KICAgICB9OwogfQpJbmRleDogU1ZHSW1hZ2VFbGVtZW50SW1wbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tzdmcyL3N2Zy9TVkdJbWFnZUVsZW1l
bnRJbXBsLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNApkaWZmIC1wIC11IC1yMS40IFNWR0lt
YWdlRWxlbWVudEltcGwuaAotLS0gU1ZHSW1hZ2VFbGVtZW50SW1wbC5oCTEgU2VwIDIwMDUgMDc6
MzU6NDMgLTAwMDAJMS40CisrKyBTVkdJbWFnZUVsZW1lbnRJbXBsLmgJMjggT2N0IDIwMDUgMjI6
NDA6MzcgLTAwMDAKQEAgLTI2LDggKzI2LDcgQEAKICNpbmNsdWRlICJTVkdUZXN0c0ltcGwuaCIK
ICNpbmNsdWRlICJTVkdMYW5nU3BhY2VJbXBsLmgiCiAjaW5jbHVkZSAiU1ZHVVJJUmVmZXJlbmNl
SW1wbC5oIgotI2luY2x1ZGUgIlNWR1N0eWxlZEVsZW1lbnRJbXBsLmgiCi0jaW5jbHVkZSAiU1ZH
VHJhbnNmb3JtYWJsZUltcGwuaCIKKyNpbmNsdWRlICJTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxl
bWVudEltcGwuaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkSW1wbC5o
IgogI2luY2x1ZGUgPGtkb20vY2FjaGUvS0RPTUNhY2hlZEltYWdlLmg+CiAjaW5jbHVkZSA8a2Rv
bS9jYWNoZS9LRE9NQ2FjaGVkRG9jdW1lbnQuaD4KQEAgLTM5LDExICszOCwxMCBAQCBuYW1lc3Bh
Y2UgS1NWRwogICAgIGNsYXNzIFNWR0FuaW1hdGVkTGVuZ3RoSW1wbDsKICAgICBjbGFzcyBTVkdE
b2N1bWVudEltcGw7CiAKLSAgICBjbGFzcyBTVkdJbWFnZUVsZW1lbnRJbXBsIDogcHVibGljIFNW
R1N0eWxlZEVsZW1lbnRJbXBsLAorICAgIGNsYXNzIFNWR0ltYWdlRWxlbWVudEltcGwgOiBwdWJs
aWMgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnRJbXBsLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwdWJsaWMgU1ZHVGVzdHNJbXBsLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwdWJsaWMgU1ZHTGFuZ1NwYWNlSW1wbCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHVibGljIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRJbXBsLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVHJhbnNmb3JtYWJsZUltcGws
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdVUklSZWZlcmVuY2VJ
bXBsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgS0RPTTo6Q2FjaGVk
T2JqZWN0Q2xpZW50CiAgICAgewpJbmRleDogU1ZHTGluZUVsZW1lbnRJbXBsLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rc3ZnMi9zdmcvU1ZHTGluZUVsZW1l
bnRJbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS42CmRpZmYgLXAgLXUgLXIxLjYgU1ZH
TGluZUVsZW1lbnRJbXBsLmNwcAotLS0gU1ZHTGluZUVsZW1lbnRJbXBsLmNwcAk1IE9jdCAyMDA1
IDA1OjM1OjI0IC0wMDAwCTEuNgorKysgU1ZHTGluZUVsZW1lbnRJbXBsLmNwcAkyOCBPY3QgMjAw
NSAyMjo0MDozNyAtMDAwMApAQCAtMzQsNyArMzQsNyBAQAogdXNpbmcgbmFtZXNwYWNlIEtTVkc7
CiAKIFNWR0xpbmVFbGVtZW50SW1wbDo6U1ZHTGluZUVsZW1lbnRJbXBsKEtET006OkRvY3VtZW50
UHRyICpkb2MsIEtET006Ok5vZGVJbXBsOjpJZCBpZCwgS0RPTTo6RE9NU3RyaW5nSW1wbCAqcHJl
Zml4KQotOiBTVkdTdHlsZWRFbGVtZW50SW1wbChkb2MsIGlkLCBwcmVmaXgpLCBTVkdUZXN0c0lt
cGwoKSwgU1ZHTGFuZ1NwYWNlSW1wbCgpLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkSW1w
bCgpLCBTVkdUcmFuc2Zvcm1hYmxlSW1wbCgpCis6IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVt
ZW50SW1wbChkb2MsIGlkLCBwcmVmaXgpLCBTVkdUZXN0c0ltcGwoKSwgU1ZHTGFuZ1NwYWNlSW1w
bCgpLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkSW1wbCgpCiB7CiAgICAgbV94MSA9IG1f
eTEgPSBtX3gyID0gbV95MiA9IDA7CiB9CkBAIC0xMDIsOSArMTAyLDggQEAgdm9pZCBTVkdMaW5l
RWxlbWVudEltcGw6OnBhcnNlQXR0cmlidXRlKAogICAgICAgICAgICAgaWYoU1ZHVGVzdHNJbXBs
OjpwYXJzZUF0dHJpYnV0ZShhdHRyKSkgcmV0dXJuOwogICAgICAgICAgICAgaWYoU1ZHTGFuZ1Nw
YWNlSW1wbDo6cGFyc2VBdHRyaWJ1dGUoYXR0cikpIHJldHVybjsKICAgICAgICAgICAgIGlmKFNW
R0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRJbXBsOjpwYXJzZUF0dHJpYnV0ZShhdHRyKSkgcmV0
dXJuOwotICAgICAgICAgICAgaWYoU1ZHVHJhbnNmb3JtYWJsZUltcGw6OnBhcnNlQXR0cmlidXRl
KGF0dHIpKSByZXR1cm47Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIFNWR1N0eWxlZEVsZW1l
bnRJbXBsOjpwYXJzZUF0dHJpYnV0ZShhdHRyKTsKKworICAgICAgICAgICAgU1ZHU3R5bGVkVHJh
bnNmb3JtYWJsZUVsZW1lbnRJbXBsOjpwYXJzZUF0dHJpYnV0ZShhdHRyKTsKICAgICAgICAgfQog
ICAgIH07CiB9CkluZGV4OiBTVkdMaW5lRWxlbWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxl
OiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rc3ZnMi9zdmcvU1ZHTGluZUVsZW1lbnRJbXBsLmgsdgpy
ZXRyaWV2aW5nIHJldmlzaW9uIDEuNApkaWZmIC1wIC11IC1yMS40IFNWR0xpbmVFbGVtZW50SW1w
bC5oCi0tLSBTVkdMaW5lRWxlbWVudEltcGwuaAkxIFNlcCAyMDA1IDA3OjM1OjQ0IC0wMDAwCTEu
NAorKysgU1ZHTGluZUVsZW1lbnRJbXBsLmgJMjggT2N0IDIwMDUgMjI6NDA6MzggLTAwMDAKQEAg
LTI1LDE4ICsyNSwxNiBAQAogCiAjaW5jbHVkZSAiU1ZHVGVzdHNJbXBsLmgiCiAjaW5jbHVkZSAi
U1ZHTGFuZ1NwYWNlSW1wbC5oIgotI2luY2x1ZGUgIlNWR1N0eWxlZEVsZW1lbnRJbXBsLmgiCi0j
aW5jbHVkZSAiU1ZHVHJhbnNmb3JtYWJsZUltcGwuaCIKKyNpbmNsdWRlICJTVkdTdHlsZWRUcmFu
c2Zvcm1hYmxlRWxlbWVudEltcGwuaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkSW1wbC5oIgogCiBuYW1lc3BhY2UgS1NWRwogewogICAgIGNsYXNzIFNWR0FuaW1hdGVk
TGVuZ3RoSW1wbDsKLSAgICBjbGFzcyBTVkdMaW5lRWxlbWVudEltcGwgOiBwdWJsaWMgU1ZHU3R5
bGVkRWxlbWVudEltcGwsCisgICAgY2xhc3MgU1ZHTGluZUVsZW1lbnRJbXBsIDogcHVibGljIFNW
R1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50SW1wbCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwdWJsaWMgU1ZHVGVzdHNJbXBsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1YmxpYyBTVkdMYW5nU3BhY2VJbXBsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1YmxpYyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkSW1wbCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVHJhbnNmb3JtYWJsZUltcGwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZEltcGwKICAgICB7CiAgICAgcHVibGljOgogICAgICAgICBTVkdMaW5lRWxlbWVudEltcGwoS0RP
TTo6RG9jdW1lbnRQdHIgKmRvYywgS0RPTTo6Tm9kZUltcGw6OklkIGlkLCBLRE9NOjpET01TdHJp
bmdJbXBsICpwcmVmaXgpOwpJbmRleDogU1ZHTG9jYXRhYmxlSW1wbC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS
Q1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva3N2ZzIvc3ZnL1NWR0xvY2F0YWJsZUltcGwu
Y3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjYKZGlmZiAtcCAtdSAtcjEuNiBTVkdMb2NhdGFi
bGVJbXBsLmNwcAotLS0gU1ZHTG9jYXRhYmxlSW1wbC5jcHAJNSBPY3QgMjAwNSAwNTozNToyNCAt
MDAwMAkxLjYKKysrIFNWR0xvY2F0YWJsZUltcGwuY3BwCTI4IE9jdCAyMDA1IDIyOjQwOjM4IC0w
MDAwCkBAIC00MCw5ICs0MCw4IEBAIFNWR0xvY2F0YWJsZUltcGw6On5TVkdMb2NhdGFibGVJbXBs
KCkKIHsKIH0KIAotU1ZHRWxlbWVudEltcGwgKlNWR0xvY2F0YWJsZUltcGw6Om5lYXJlc3RWaWV3
cG9ydEVsZW1lbnQoKSBjb25zdAorU1ZHRWxlbWVudEltcGwgKlNWR0xvY2F0YWJsZUltcGw6Om5l
YXJlc3RWaWV3cG9ydEVsZW1lbnQoY29uc3QgU1ZHU3R5bGVkRWxlbWVudEltcGwgKmUpCiB7Ci0g
ICAgY29uc3QgU1ZHU3R5bGVkRWxlbWVudEltcGwgKmUgPSBkeW5hbWljX2Nhc3Q8Y29uc3QgU1ZH
U3R5bGVkRWxlbWVudEltcGwgKj4odGhpcyk7CiAgICAgS0RPTTo6Tm9kZUltcGwgKm4gPSBlLT5w
YXJlbnROb2RlKCk7CiAgICAgd2hpbGUobiAmJiBuLT5ub2RlVHlwZSgpICE9IEtET006OkRPQ1VN
RU5UX05PREUpCiAgICAgewpAQCAtNTcsMjAgKzU2LDE3IEBAIFNWR0VsZW1lbnRJbXBsICpTVkdM
b2NhdGFibGVJbXBsOjpuZWFyZXMKICAgICByZXR1cm4gMDsKIH0KIAotU1ZHRWxlbWVudEltcGwg
KlNWR0xvY2F0YWJsZUltcGw6OmZhcnRoZXN0Vmlld3BvcnRFbGVtZW50KCkgY29uc3QKK1NWR0Vs
ZW1lbnRJbXBsICpTVkdMb2NhdGFibGVJbXBsOjpmYXJ0aGVzdFZpZXdwb3J0RWxlbWVudChjb25z
dCBTVkdTdHlsZWRFbGVtZW50SW1wbCAqZSkKIHsKICAgICAvLyBGSVhNRSA6IGxpa2VseSB0aGlz
IHdpbGwgYmUgYWx3YXlzIHRoZSA8c3ZnPiBmYXJ0aGVzdCBhd2F5LgogICAgIC8vIElmIHdlIGhh
dmUgYSBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb24gb2YgZG9jdW1lbnRFbGVtZW50KCksIG9uZQog
ICAgIC8vIHRoYXQgZ2l2ZSB0aGUgZG9jdW1lbnRFbGVtZW50KCkgb2YgdGhlIHN2ZyBmcmFnbWVu
dCwgaXQgY291bGQgYmUKICAgICAvLyB1c2VkIGluc3RlYWQuIFRoaXMgZGVwZW5kcyBvbiBjZGYg
ZGVtYW5kcyB0aG91Z2goUm9iLikKICAgICBTVkdFbGVtZW50SW1wbCAqZmFydGhlc3QgPSAwOwot
ICAgIGNvbnN0IFNWR1N0eWxlZEVsZW1lbnRJbXBsICplID0gZHluYW1pY19jYXN0PGNvbnN0IFNW
R1N0eWxlZEVsZW1lbnRJbXBsICo+KHRoaXMpOwogICAgIEtET006Ok5vZGVJbXBsICpuID0gZS0+
cGFyZW50Tm9kZSgpOwogICAgIHdoaWxlKG4gJiYgbi0+bm9kZVR5cGUoKSAhPSBLRE9NOjpET0NV
TUVOVF9OT0RFKQogICAgIHsKLSAgICAgICAgaWYobi0+bm9kZVR5cGUoKSA9PSBLRE9NOjpFTEVN
RU5UX05PREUgJiYKLSAgICAgICAgICAgIChuLT5pZCgpID09IElEX1NWRyB8fCBuLT5pZCgpID09
IElEX1NZTUJPTCB8fAotICAgICAgICAgICAgIG4tPmlkKCkgPT0gSURfRk9SRUlHTk9CSkVDVCB8
fCBuLT5pZCgpID09IElEX0lNQUdFKSkKKyAgICAgICAgaWYobi0+bm9kZVR5cGUoKSA9PSBLRE9N
OjpFTEVNRU5UX05PREUgJiYgbi0+aWQoKSA9PSBJRF9TVkcpCiAgICAgICAgICAgICBmYXJ0aGVz
dCA9IHN0YXRpY19jYXN0PFNWR0VsZW1lbnRJbXBsICo+KG4pOwogCiAgICAgICAgIG4gPSBuLT5w
YXJlbnROb2RlKCk7CkBAIC03OSwxMSArNzUsMTAgQEAgU1ZHRWxlbWVudEltcGwgKlNWR0xvY2F0
YWJsZUltcGw6OmZhcnRoZQogICAgIHJldHVybiBmYXJ0aGVzdDsKIH0KIAotU1ZHUmVjdEltcGwg
KlNWR0xvY2F0YWJsZUltcGw6OmdldEJCb3goKSBjb25zdAorU1ZHUmVjdEltcGwgKlNWR0xvY2F0
YWJsZUltcGw6OmdldEJCb3goY29uc3QgU1ZHU3R5bGVkRWxlbWVudEltcGwgKmUpCiB7CiAgICAg
U1ZHUmVjdEltcGwgKnJlY3QgPSAwOwogCi0gICAgY29uc3QgU1ZHU3R5bGVkRWxlbWVudEltcGwg
KmUgPSBkeW5hbWljX2Nhc3Q8Y29uc3QgU1ZHU3R5bGVkRWxlbWVudEltcGwgKj4odGhpcyk7CiAg
ICAgaWYoZSAmJiBlLT5jYW52YXNJdGVtKCkpCiAgICAgewogICAgICAgICBRUmVjdCBiYm94UmVj
dCA9IGUtPmNhbnZhc0l0ZW0oKS0+YmJveChmYWxzZSk7CkBAIC05NywxNyArOTIsMTcgQEAgU1ZH
UmVjdEltcGwgKlNWR0xvY2F0YWJsZUltcGw6OmdldEJCb3goKQogICAgIHJldHVybiByZWN0Owog
fQogCi1TVkdNYXRyaXhJbXBsICpTVkdMb2NhdGFibGVJbXBsOjpnZXRDVE0oKSBjb25zdAorU1ZH
TWF0cml4SW1wbCAqU1ZHTG9jYXRhYmxlSW1wbDo6Z2V0Q1RNKGNvbnN0IFNWR0VsZW1lbnRJbXBs
ICplbGVtZW50KQogewotICAgIGNvbnN0IFNWR0VsZW1lbnRJbXBsICplbGVtZW50ID0gZHluYW1p
Y19jYXN0PGNvbnN0IFNWR0VsZW1lbnRJbXBsICo+KHRoaXMpOwogICAgIGlmKCFlbGVtZW50KQog
ICAgICAgICByZXR1cm4gMDsKIAogICAgIFNWR01hdHJpeEltcGwgKmN0bSA9IFNWR1NWR0VsZW1l
bnRJbXBsOjpjcmVhdGVTVkdNYXRyaXgoKTsKIAotICAgIFNWR0VsZW1lbnRJbXBsICpwYXJlbnRF
bGVtZW50ID0gc3ZnX2R5bmFtaWNfY2FzdChlbGVtZW50LT5wYXJlbnROb2RlKCkpOwotICAgIGlm
KHBhcmVudEVsZW1lbnQpCisgICAgS0RPTTo6Tm9kZUltcGwgKnBhcmVudCA9IGVsZW1lbnQtPnBh
cmVudE5vZGUoKTsKKyAgICBpZihwYXJlbnQgJiYgcGFyZW50LT5ub2RlVHlwZSgpID09IEtET006
OkVMRU1FTlRfTk9ERSkKICAgICB7CisgICAgICAgIFNWR0VsZW1lbnRJbXBsICpwYXJlbnRFbGVt
ZW50ID0gc3RhdGljX2Nhc3Q8U1ZHRWxlbWVudEltcGwgKj4ocGFyZW50KTsKICAgICAgICAgU1ZH
TG9jYXRhYmxlSW1wbCAqcGFyZW50TG9jYXRhYmxlID0gZHluYW1pY19jYXN0PFNWR0xvY2F0YWJs
ZUltcGwgKj4ocGFyZW50RWxlbWVudCk7CiAgICAgICAgIGlmKHBhcmVudExvY2F0YWJsZSkKICAg
ICAgICAgewpAQCAtMTIxLDkgKzExNiw4IEBAIFNWR01hdHJpeEltcGwgKlNWR0xvY2F0YWJsZUlt
cGw6OmdldENUTSgKICAgICByZXR1cm4gY3RtOwogfQogCi1TVkdNYXRyaXhJbXBsICpTVkdMb2Nh
dGFibGVJbXBsOjpnZXRTY3JlZW5DVE0oKSBjb25zdAorU1ZHTWF0cml4SW1wbCAqU1ZHTG9jYXRh
YmxlSW1wbDo6Z2V0U2NyZWVuQ1RNKGNvbnN0IFNWR0VsZW1lbnRJbXBsICplbGVtZW50KQogewot
ICAgIGNvbnN0IFNWR0VsZW1lbnRJbXBsICplbGVtZW50ID0gZHluYW1pY19jYXN0PGNvbnN0IFNW
R0VsZW1lbnRJbXBsICo+KHRoaXMpOwogICAgIGlmKCFlbGVtZW50KQogICAgICAgICByZXR1cm4g
MDsKIApAQCAtMTQ1LDExICsxMzksMTEgQEAgU1ZHTWF0cml4SW1wbCAqU1ZHTG9jYXRhYmxlSW1w
bDo6Z2V0U2NyZQogCiAgICAgcmV0dXJuIGN0bTsKIH0KLQorLyoKIFNWR01hdHJpeEltcGwgKlNW
R0xvY2F0YWJsZUltcGw6OmdldFRyYW5zZm9ybVRvRWxlbWVudChTVkdFbGVtZW50SW1wbCAqKSBj
b25zdAogewogICAgIC8vIFRPRE8hCiAgICAgcmV0dXJuIDA7CiB9Ci0KKyovCiAvLyB2aW06dHM9
NDpub2V0CkluZGV4OiBTVkdMb2NhdGFibGVJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2
cy9yb290L1NWR1N1cHBvcnQva3N2ZzIvc3ZnL1NWR0xvY2F0YWJsZUltcGwuaCx2CnJldHJpZXZp
bmcgcmV2aXNpb24gMS4zCmRpZmYgLXAgLXUgLXIxLjMgU1ZHTG9jYXRhYmxlSW1wbC5oCi0tLSBT
VkdMb2NhdGFibGVJbXBsLmgJMSBTZXAgMjAwNSAwNzozNTo0NCAtMDAwMAkxLjMKKysrIFNWR0xv
Y2F0YWJsZUltcGwuaAkyOCBPY3QgMjAwNSAyMjo0MDozOCAtMDAwMApAQCAtMjgsNiArMjgsNyBA
QCBuYW1lc3BhY2UgS1NWRwogICAgIGNsYXNzIFNWR1JlY3RJbXBsOwogICAgIGNsYXNzIFNWR01h
dHJpeEltcGw7CiAgICAgY2xhc3MgU1ZHRWxlbWVudEltcGw7CisgICAgY2xhc3MgU1ZHU3R5bGVk
RWxlbWVudEltcGw7CiAgICAgY2xhc3MgU1ZHTG9jYXRhYmxlSW1wbAogICAgIHsKICAgICBwdWJs
aWM6CkBAIC0zNSwxMyArMzYsMjAgQEAgbmFtZXNwYWNlIEtTVkcKICAgICAgICAgdmlydHVhbCB+
U1ZHTG9jYXRhYmxlSW1wbCgpOwogCiAgICAgICAgIC8vICdTVkdMb2NhdGFibGUnIGZ1bmN0aW9u
cwotICAgICAgICBTVkdFbGVtZW50SW1wbCAqbmVhcmVzdFZpZXdwb3J0RWxlbWVudCgpIGNvbnN0
OwotICAgICAgICBTVkdFbGVtZW50SW1wbCAqZmFydGhlc3RWaWV3cG9ydEVsZW1lbnQoKSBjb25z
dDsKKyAgICAgICAgdmlydHVhbCBTVkdFbGVtZW50SW1wbCAqbmVhcmVzdFZpZXdwb3J0RWxlbWVu
dCgpIGNvbnN0ID0gMDsKKyAgICAgICAgdmlydHVhbCBTVkdFbGVtZW50SW1wbCAqZmFydGhlc3RW
aWV3cG9ydEVsZW1lbnQoKSBjb25zdCA9IDA7CiAKLSAgICAgICAgdmlydHVhbCBTVkdSZWN0SW1w
bCAqZ2V0QkJveCgpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIFNWR01hdHJpeEltcGwgKmdldENU
TSgpIGNvbnN0OwotICAgICAgICB2aXJ0dWFsIFNWR01hdHJpeEltcGwgKmdldFNjcmVlbkNUTSgp
IGNvbnN0OwotICAgICAgICB2aXJ0dWFsIFNWR01hdHJpeEltcGwgKmdldFRyYW5zZm9ybVRvRWxl
bWVudChTVkdFbGVtZW50SW1wbCAqZWxlbWVudCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgU1ZH
UmVjdEltcGwgKmdldEJCb3goKSBjb25zdCA9IDA7CisgICAgICAgIHZpcnR1YWwgU1ZHTWF0cml4
SW1wbCAqZ2V0Q1RNKCkgY29uc3QgPSAwOworICAgICAgICB2aXJ0dWFsIFNWR01hdHJpeEltcGwg
KmdldFNjcmVlbkNUTSgpIGNvbnN0ID0gMDsKKyAgICAgICAgdmlydHVhbCBTVkdNYXRyaXhJbXBs
ICpnZXRUcmFuc2Zvcm1Ub0VsZW1lbnQoU1ZHRWxlbWVudEltcGwgKmVsZW1lbnQpIGNvbnN0ID0g
MDsKKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgc3RhdGljIFNWR0VsZW1lbnRJbXBsICpuZWFy
ZXN0Vmlld3BvcnRFbGVtZW50KGNvbnN0IFNWR1N0eWxlZEVsZW1lbnRJbXBsICplbGVtZW50KTsK
KyAgICAgICAgc3RhdGljIFNWR0VsZW1lbnRJbXBsICpmYXJ0aGVzdFZpZXdwb3J0RWxlbWVudChj
b25zdCBTVkdTdHlsZWRFbGVtZW50SW1wbCAqZWxlbWVudCk7CisgICAgICAgIHN0YXRpYyBTVkdS
ZWN0SW1wbCAqZ2V0QkJveChjb25zdCBTVkdTdHlsZWRFbGVtZW50SW1wbCAqZWxlbWVudCk7Cisg
ICAgICAgIHN0YXRpYyBTVkdNYXRyaXhJbXBsICpnZXRDVE0oY29uc3QgU1ZHRWxlbWVudEltcGwg
KmVsZW1lbnQpOworICAgICAgICBzdGF0aWMgU1ZHTWF0cml4SW1wbCAqZ2V0U2NyZWVuQ1RNKGNv
bnN0IFNWR0VsZW1lbnRJbXBsICplbGVtZW50KTsKICAgICB9OwogfTsKIApJbmRleDogU1ZHUGF0
aEVsZW1lbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9y
dC9rc3ZnMi9zdmcvU1ZHUGF0aEVsZW1lbnRJbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24g
MS42CmRpZmYgLXAgLXUgLXIxLjYgU1ZHUGF0aEVsZW1lbnRJbXBsLmNwcAotLS0gU1ZHUGF0aEVs
ZW1lbnRJbXBsLmNwcAk1IE9jdCAyMDA1IDA1OjM1OjI1IC0wMDAwCTEuNgorKysgU1ZHUGF0aEVs
ZW1lbnRJbXBsLmNwcAkyOCBPY3QgMjAwNSAyMjo0MDozOCAtMDAwMApAQCAtNTAsNyArNTAsNyBA
QAogdXNpbmcgbmFtZXNwYWNlIEtTVkc7CiAKIFNWR1BhdGhFbGVtZW50SW1wbDo6U1ZHUGF0aEVs
ZW1lbnRJbXBsKEtET006OkRvY3VtZW50UHRyICpkb2MsIEtET006Ok5vZGVJbXBsOjpJZCBpZCwg
S0RPTTo6RE9NU3RyaW5nSW1wbCAqcHJlZml4KQotOiBTVkdTdHlsZWRFbGVtZW50SW1wbChkb2Ms
IGlkLCBwcmVmaXgpLCBTVkdUZXN0c0ltcGwoKSwgU1ZHTGFuZ1NwYWNlSW1wbCgpLCBTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkSW1wbCgpLCBTVkdUcmFuc2Zvcm1hYmxlSW1wbCgpLCBTVkdQ
YXRoUGFyc2VyKCkKKzogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnRJbXBsKGRvYywgaWQs
IHByZWZpeCksIFNWR1Rlc3RzSW1wbCgpLCBTVkdMYW5nU3BhY2VJbXBsKCksIFNWR0V4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWRJbXBsKCksIFNWR1BhdGhQYXJzZXIoKQogewogICAgIG1fcGF0aExl
bmd0aCA9IDA7CiAgICAgbV9wYXRoU2VnTGlzdCA9IDA7CkBAIC0zNjUsOSArMzY1LDggQEAgdm9p
ZCBTVkdQYXRoRWxlbWVudEltcGw6OnBhcnNlQXR0cmlidXRlKAogICAgICAgICAgICAgaWYoU1ZH
VGVzdHNJbXBsOjpwYXJzZUF0dHJpYnV0ZShhdHRyKSkgcmV0dXJuOwogICAgICAgICAgICAgaWYo
U1ZHTGFuZ1NwYWNlSW1wbDo6cGFyc2VBdHRyaWJ1dGUoYXR0cikpIHJldHVybjsKICAgICAgICAg
ICAgIGlmKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRJbXBsOjpwYXJzZUF0dHJpYnV0ZShh
dHRyKSkgcmV0dXJuOwotICAgICAgICAgICAgaWYoU1ZHVHJhbnNmb3JtYWJsZUltcGw6OnBhcnNl
QXR0cmlidXRlKGF0dHIpKSByZXR1cm47CiAKLSAgICAgICAgICAgIFNWR1N0eWxlZEVsZW1lbnRJ
bXBsOjpwYXJzZUF0dHJpYnV0ZShhdHRyKTsKKyAgICAgICAgICAgIFNWR1N0eWxlZFRyYW5zZm9y
bWFibGVFbGVtZW50SW1wbDo6cGFyc2VBdHRyaWJ1dGUoYXR0cik7CiAgICAgICAgIH0KICAgICB9
OwogfQpJbmRleDogU1ZHUGF0aEVsZW1lbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2
cy9yb290L1NWR1N1cHBvcnQva3N2ZzIvc3ZnL1NWR1BhdGhFbGVtZW50SW1wbC5oLHYKcmV0cmll
dmluZyByZXZpc2lvbiAxLjQKZGlmZiAtcCAtdSAtcjEuNCBTVkdQYXRoRWxlbWVudEltcGwuaAot
LS0gU1ZHUGF0aEVsZW1lbnRJbXBsLmgJMSBTZXAgMjAwNSAwNzozNTo0NiAtMDAwMAkxLjQKKysr
IFNWR1BhdGhFbGVtZW50SW1wbC5oCTI4IE9jdCAyMDA1IDIyOjQwOjM4IC0wMDAwCkBAIC0yNiw4
ICsyNiw3IEBACiAjaW5jbHVkZSAiU1ZHVGVzdHNJbXBsLmgiCiAjaW5jbHVkZSAic3ZncGF0aHBh
cnNlci5oIgogI2luY2x1ZGUgIlNWR0xhbmdTcGFjZUltcGwuaCIKLSNpbmNsdWRlICJTVkdTdHls
ZWRFbGVtZW50SW1wbC5oIgotI2luY2x1ZGUgIlNWR1RyYW5zZm9ybWFibGVJbXBsLmgiCisjaW5j
bHVkZSAiU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnRJbXBsLmgiCiAjaW5jbHVkZSAiU1ZH
QW5pbWF0ZWRQYXRoRGF0YUltcGwuaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkSW1wbC5oIgogCkBAIC01NSwxMSArNTQsMTAgQEAgbmFtZXNwYWNlIEtTVkcKICAgICBj
bGFzcyBTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoUmVsSW1wbDsKICAgICBjbGFzcyBTVkdQ
YXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aEFic0ltcGw7CiAgICAgY2xhc3MgU1ZHUGF0aFNl
Z0N1cnZldG9RdWFkcmF0aWNTbW9vdGhSZWxJbXBsOwotICAgIGNsYXNzIFNWR1BhdGhFbGVtZW50
SW1wbCA6IHB1YmxpYyBTVkdTdHlsZWRFbGVtZW50SW1wbCwKKyAgICBjbGFzcyBTVkdQYXRoRWxl
bWVudEltcGwgOiBwdWJsaWMgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnRJbXBsLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdUZXN0c0ltcGwsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0xhbmdTcGFjZUltcGwsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWRJbXBsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdUcmFuc2Zv
cm1hYmxlSW1wbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHQW5p
bWF0ZWRQYXRoRGF0YUltcGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlj
IFNWR1BhdGhQYXJzZXIKICAgICB7CkluZGV4OiBTVkdQYXR0ZXJuRWxlbWVudEltcGwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tzdmcyL3N2Zy9TVkdQYXR0
ZXJuRWxlbWVudEltcGwuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjgKZGlmZiAtcCAtdSAt
cjEuOCBTVkdQYXR0ZXJuRWxlbWVudEltcGwuY3BwCi0tLSBTVkdQYXR0ZXJuRWxlbWVudEltcGwu
Y3BwCTUgT2N0IDIwMDUgMDU6MzU6MjYgLTAwMDAJMS44CisrKyBTVkdQYXR0ZXJuRWxlbWVudElt
cGwuY3BwCTI4IE9jdCAyMDA1IDIyOjQwOjM4IC0wMDAwCkBAIC01MCw3ICs1MCw3IEBACiAKIHVz
aW5nIG5hbWVzcGFjZSBLU1ZHOwogCi1TVkdQYXR0ZXJuRWxlbWVudEltcGw6OlNWR1BhdHRlcm5F
bGVtZW50SW1wbChLRE9NOjpEb2N1bWVudFB0ciAqZG9jLCBLRE9NOjpOb2RlSW1wbDo6SWQgaWQs
IEtET006OkRPTVN0cmluZ0ltcGwgKnByZWZpeCkgOiBTVkdTdHlsZWRFbGVtZW50SW1wbChkb2Ms
IGlkLCBwcmVmaXgpLCBTVkdVUklSZWZlcmVuY2VJbXBsKCksIFNWR1Rlc3RzSW1wbCgpLCBTVkdM
YW5nU3BhY2VJbXBsKCksIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRJbXBsKCksIFNWR0Zp
dFRvVmlld0JveEltcGwoKSwgS0NhbnZhc1Jlc291cmNlTGlzdGVuZXIoKQorU1ZHUGF0dGVybkVs
ZW1lbnRJbXBsOjpTVkdQYXR0ZXJuRWxlbWVudEltcGwoS0RPTTo6RG9jdW1lbnRQdHIgKmRvYywg
S0RPTTo6Tm9kZUltcGw6OklkIGlkLCBLRE9NOjpET01TdHJpbmdJbXBsICpwcmVmaXgpIDogU1ZH
U3R5bGVkTG9jYXRhYmxlRWxlbWVudEltcGwoZG9jLCBpZCwgcHJlZml4KSwgU1ZHVVJJUmVmZXJl
bmNlSW1wbCgpLCBTVkdUZXN0c0ltcGwoKSwgU1ZHTGFuZ1NwYWNlSW1wbCgpLCBTVkdFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkSW1wbCgpLCBTVkdGaXRUb1ZpZXdCb3hJbXBsKCksIEtDYW52YXNS
ZXNvdXJjZUxpc3RlbmVyKCkKIHsKICAgICBtX3BhdHRlcm5Vbml0cyA9IDA7CiAgICAgbV9wYXR0
ZXJuVHJhbnNmb3JtID0gMDsKQEAgLTMzOCw3ICszMzgsNyBAQCB2b2lkIFNWR1BhdHRlcm5FbGVt
ZW50SW1wbDo6bm90aWZ5QXR0cmliCiAgICAgICAgICAgICAgICAgU1ZHTWF0cml4SW1wbCAqc3Zn
Q1RNID0gc3ZnRWxlbWVudC0+Z2V0Q1RNKCk7CiAgICAgICAgICAgICAgICAgc3ZnQ1RNLT5yZWYo
KTsKIAotICAgICAgICAgICAgICAgIFNWR01hdHJpeEltcGwgKmN0bSA9IFNWR0xvY2F0YWJsZUlt
cGw6OmdldENUTSgpOworICAgICAgICAgICAgICAgIFNWR01hdHJpeEltcGwgKmN0bSA9IFNWR1N0
eWxlZExvY2F0YWJsZUVsZW1lbnRJbXBsOjpnZXRDVE0oKTsKICAgICAgICAgICAgICAgICBjdG0t
PnJlZigpOwogCiAgICAgICAgICAgICAgICAgS0NhbnZhc01hdHJpeCBuZXdNYXRyaXgoc3ZnQ1RN
LT5xbWF0cml4KCkpOwpAQCAtNDAwLDcgKzQwMCw2IEBAIEtDYW52YXNJdGVtICpTVkdQYXR0ZXJu
RWxlbWVudEltcGw6OmNyZWEKICAgICBwc2VydmVyLT5zZXRMaXN0ZW5lcihjb25zdF9jYXN0PFNW
R1BhdHRlcm5FbGVtZW50SW1wbCAqPih0aGlzKSk7CiAKICAgICBjYW52YXMtPnJlZ2lzdHJ5KCkt
PmFkZFBhaW50U2VydmVyQnlJZChLRE9NOjpET01TdHJpbmcoZ2V0SWQoKSkuc3RyaW5nKCksIHBz
ZXJ2ZXIpOwotCiAgICAgcmV0dXJuIDA7CiB9CiAKSW5kZXg6IFNWR1BhdHRlcm5FbGVtZW50SW1w
bC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tzdmcyL3N2Zy9T
VkdQYXR0ZXJuRWxlbWVudEltcGwuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40CmRpZmYgLXAg
LXUgLXIxLjQgU1ZHUGF0dGVybkVsZW1lbnRJbXBsLmgKLS0tIFNWR1BhdHRlcm5FbGVtZW50SW1w
bC5oCTEgU2VwIDIwMDUgMDc6MzU6NDkgLTAwMDAJMS40CisrKyBTVkdQYXR0ZXJuRWxlbWVudElt
cGwuaAkyOCBPY3QgMjAwNSAyMjo0MDozOCAtMDAwMApAQCAtMjUsMTAgKzI1LDkgQEAKIAogI2lu
Y2x1ZGUgIlNWR1Rlc3RzSW1wbC5oIgogI2luY2x1ZGUgIlNWR0xhbmdTcGFjZUltcGwuaCIKLSNp
bmNsdWRlICJTVkdMb2NhdGFibGVJbXBsLmgiCiAjaW5jbHVkZSAiU1ZHVVJJUmVmZXJlbmNlSW1w
bC5oIgogI2luY2x1ZGUgIlNWR0ZpdFRvVmlld0JveEltcGwuaCIKLSNpbmNsdWRlICJTVkdTdHls
ZWRFbGVtZW50SW1wbC5oIgorI2luY2x1ZGUgIlNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnRJbXBs
LmgiCiAjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEltcGwuaCIKIAogI2lu
Y2x1ZGUgPGtjYW52YXMvS0NhbnZhc1R5cGVzLmg+CkBAIC00NSwxMyArNDQsMTMgQEAgbmFtZXNw
YWNlIEtTVkcKICAgICBjbGFzcyBTVkdQYXR0ZXJuRWxlbWVudEltcGw7CiAgICAgY2xhc3MgU1ZH
QW5pbWF0ZWRFbnVtZXJhdGlvbkltcGw7CiAgICAgY2xhc3MgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1M
aXN0SW1wbDsKLSAgICBjbGFzcyBTVkdQYXR0ZXJuRWxlbWVudEltcGwgOiBwdWJsaWMgU1ZHU3R5
bGVkRWxlbWVudEltcGwsCisgICAgY2xhc3MgU1ZHUGF0dGVybkVsZW1lbnRJbXBsIDogcHVibGlj
IFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnRJbXBsLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1YmxpYyBTVkdVUklSZWZlcmVuY2VJbXBsLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdUZXN0c0ltcGwsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHVibGljIFNWR0xhbmdTcGFjZUltcGwsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRJbXBs
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdGaXRUb1ZpZXdC
b3hJbXBsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdMb2Nh
dGFibGVJbXBsLCAvLyBUT0RPIDogcmVhbGx5IG5lZWRlZD8KKy8vICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdMb2NhdGFibGVJbXBsLCAvLyBUT0RPIDogcmVhbGx5
IG5lZWRlZD8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgS0NhbnZh
c1Jlc291cmNlTGlzdGVuZXIKICAgICB7CiAgICAgcHVibGljOgpJbmRleDogU1ZHUG9seUVsZW1l
bnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rc3Zn
Mi9zdmcvU1ZHUG9seUVsZW1lbnRJbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS42CmRp
ZmYgLXAgLXUgLXIxLjYgU1ZHUG9seUVsZW1lbnRJbXBsLmNwcAotLS0gU1ZHUG9seUVsZW1lbnRJ
bXBsLmNwcAk1IE9jdCAyMDA1IDA1OjM1OjI3IC0wMDAwCTEuNgorKysgU1ZHUG9seUVsZW1lbnRJ
bXBsLmNwcAkyOCBPY3QgMjAwNSAyMjo0MDozOCAtMDAwMApAQCAtMzQsNyArMzQsNyBAQAogdXNp
bmcgbmFtZXNwYWNlIEtTVkc7CiAKIFNWR1BvbHlFbGVtZW50SW1wbDo6U1ZHUG9seUVsZW1lbnRJ
bXBsKEtET006OkRvY3VtZW50UHRyICpkb2MsIEtET006Ok5vZGVJbXBsOjpJZCBpZCwgS0RPTTo6
RE9NU3RyaW5nSW1wbCAqcHJlZml4KQotOiBTVkdTdHlsZWRFbGVtZW50SW1wbChkb2MsIGlkLCBw
cmVmaXgpLCBTVkdUZXN0c0ltcGwoKSwgU1ZHTGFuZ1NwYWNlSW1wbCgpLCBTVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkSW1wbCgpLCBTVkdUcmFuc2Zvcm1hYmxlSW1wbCgpLCBTVkdBbmltYXRl
ZFBvaW50c0ltcGwoKSwgU1ZHUG9seVBhcnNlcigpCis6IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVF
bGVtZW50SW1wbChkb2MsIGlkLCBwcmVmaXgpLCBTVkdUZXN0c0ltcGwoKSwgU1ZHTGFuZ1NwYWNl
SW1wbCgpLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkSW1wbCgpLCBTVkdBbmltYXRlZFBv
aW50c0ltcGwoKSwgU1ZHUG9seVBhcnNlcigpCiB7CiAgICAgbV9wb2ludHMgPSAwOwogfQpAQCAt
NzAsOSArNzAsOCBAQCB2b2lkIFNWR1BvbHlFbGVtZW50SW1wbDo6cGFyc2VBdHRyaWJ1dGUoCiAg
ICAgICAgICAgICBpZihTVkdUZXN0c0ltcGw6OnBhcnNlQXR0cmlidXRlKGF0dHIpKSByZXR1cm47
CiAgICAgICAgICAgICBpZihTVkdMYW5nU3BhY2VJbXBsOjpwYXJzZUF0dHJpYnV0ZShhdHRyKSkg
cmV0dXJuOwogICAgICAgICAgICAgaWYoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEltcGw6
OnBhcnNlQXR0cmlidXRlKGF0dHIpKSByZXR1cm47Ci0gICAgICAgICAgICBpZihTVkdUcmFuc2Zv
cm1hYmxlSW1wbDo6cGFyc2VBdHRyaWJ1dGUoYXR0cikpIHJldHVybjsKIAotICAgICAgICAgICAg
U1ZHU3R5bGVkRWxlbWVudEltcGw6OnBhcnNlQXR0cmlidXRlKGF0dHIpOworICAgICAgICAgICAg
U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnRJbXBsOjpwYXJzZUF0dHJpYnV0ZShhdHRyKTsK
ICAgICAgICAgfQogICAgIH07CiB9CkluZGV4OiBTVkdQb2x5RWxlbWVudEltcGwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rc3ZnMi9zdmcvU1ZHUG9seUVsZW1l
bnRJbXBsLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNApkaWZmIC1wIC11IC1yMS40IFNWR1Bv
bHlFbGVtZW50SW1wbC5oCi0tLSBTVkdQb2x5RWxlbWVudEltcGwuaAkxIFNlcCAyMDA1IDA3OjM1
OjQ5IC0wMDAwCTEuNAorKysgU1ZHUG9seUVsZW1lbnRJbXBsLmgJMjggT2N0IDIwMDUgMjI6NDA6
MzggLTAwMDAKQEAgLTI2LDE4ICsyNiwxNiBAQAogI2luY2x1ZGUgIlNWR1Rlc3RzSW1wbC5oIgog
I2luY2x1ZGUgInN2Z3BhdGhwYXJzZXIuaCIKICNpbmNsdWRlICJTVkdMYW5nU3BhY2VJbXBsLmgi
Ci0jaW5jbHVkZSAiU1ZHU3R5bGVkRWxlbWVudEltcGwuaCIKLSNpbmNsdWRlICJTVkdUcmFuc2Zv
cm1hYmxlSW1wbC5oIgorI2luY2x1ZGUgIlNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50SW1w
bC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkUG9pbnRzSW1wbC5oIgogI2luY2x1ZGUgIlNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRJbXBsLmgiCiAKIG5hbWVzcGFjZSBLU1ZHCiB7Ci0gICAg
Y2xhc3MgU1ZHUG9seUVsZW1lbnRJbXBsIDogIHB1YmxpYyBTVkdTdHlsZWRFbGVtZW50SW1wbCwK
KyAgICBjbGFzcyBTVkdQb2x5RWxlbWVudEltcGwgOiAgcHVibGljIFNWR1N0eWxlZFRyYW5zZm9y
bWFibGVFbGVtZW50SW1wbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlj
IFNWR1Rlc3RzSW1wbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNW
R0xhbmdTcGFjZUltcGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBT
VkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkSW1wbCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHVibGljIFNWR1RyYW5zZm9ybWFibGVJbXBsLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHQW5pbWF0ZWRQb2ludHNJbXBsLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHUG9seVBhcnNlcgogICAgIHsKSW5kZXg6
IFNWR1JlY3RFbGVtZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NW
R1N1cHBvcnQva3N2ZzIvc3ZnL1NWR1JlY3RFbGVtZW50SW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJl
dmlzaW9uIDEuNgpkaWZmIC1wIC11IC1yMS42IFNWR1JlY3RFbGVtZW50SW1wbC5jcHAKLS0tIFNW
R1JlY3RFbGVtZW50SW1wbC5jcHAJNSBPY3QgMjAwNSAwNTozNToyNyAtMDAwMAkxLjYKKysrIFNW
R1JlY3RFbGVtZW50SW1wbC5jcHAJMjggT2N0IDIwMDUgMjI6NDA6MzggLTAwMDAKQEAgLTM5LDcg
KzM5LDcgQEAKIHVzaW5nIG5hbWVzcGFjZSBLU1ZHOwogCiBTVkdSZWN0RWxlbWVudEltcGw6OlNW
R1JlY3RFbGVtZW50SW1wbChLRE9NOjpEb2N1bWVudFB0ciAqZG9jLCBLRE9NOjpOb2RlSW1wbDo6
SWQgaWQsIEtET006OkRPTVN0cmluZ0ltcGwgKnByZWZpeCkKLTogU1ZHU3R5bGVkRWxlbWVudElt
cGwoZG9jLCBpZCwgcHJlZml4KSwgU1ZHVGVzdHNJbXBsKCksIFNWR0xhbmdTcGFjZUltcGwoKSwg
U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEltcGwoKSwgU1ZHVHJhbnNmb3JtYWJsZUltcGwo
KQorOiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudEltcGwoZG9jLCBpZCwgcHJlZml4KSwg
U1ZHVGVzdHNJbXBsKCksIFNWR0xhbmdTcGFjZUltcGwoKSwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZEltcGwoKQogewogICAgIG1feCA9IG1feSA9IG1fcnggPSBtX3J5ID0gbV93aWR0aCA9
IG1faGVpZ2h0ID0gMDsKIH0KQEAgLTEzMSw5ICsxMzEsOCBAQCB2b2lkIFNWR1JlY3RFbGVtZW50
SW1wbDo6cGFyc2VBdHRyaWJ1dGUoCiAgICAgICAgICAgICBpZihTVkdUZXN0c0ltcGw6OnBhcnNl
QXR0cmlidXRlKGF0dHIpKSByZXR1cm47CiAgICAgICAgICAgICBpZihTVkdMYW5nU3BhY2VJbXBs
OjpwYXJzZUF0dHJpYnV0ZShhdHRyKSkgcmV0dXJuOwogICAgICAgICAgICAgaWYoU1ZHRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZEltcGw6OnBhcnNlQXR0cmlidXRlKGF0dHIpKSByZXR1cm47Ci0g
ICAgICAgICAgICBpZihTVkdUcmFuc2Zvcm1hYmxlSW1wbDo6cGFyc2VBdHRyaWJ1dGUoYXR0cikp
IHJldHVybjsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgU1ZHU3R5bGVkRWxlbWVudEltcGw6
OnBhcnNlQXR0cmlidXRlKGF0dHIpOworCisgICAgICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1h
YmxlRWxlbWVudEltcGw6OnBhcnNlQXR0cmlidXRlKGF0dHIpOwogICAgICAgICB9CiAgICAgfTsK
IH0KSW5kZXg6IFNWR1JlY3RFbGVtZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMv
cm9vdC9TVkdTdXBwb3J0L2tzdmcyL3N2Zy9TVkdSZWN0RWxlbWVudEltcGwuaCx2CnJldHJpZXZp
bmcgcmV2aXNpb24gMS40CmRpZmYgLXAgLXUgLXIxLjQgU1ZHUmVjdEVsZW1lbnRJbXBsLmgKLS0t
IFNWR1JlY3RFbGVtZW50SW1wbC5oCTEgU2VwIDIwMDUgMDc6MzU6NTAgLTAwMDAJMS40CisrKyBT
VkdSZWN0RWxlbWVudEltcGwuaAkyOCBPY3QgMjAwNSAyMjo0MDozOCAtMDAwMApAQCAtMjUsMTgg
KzI1LDE2IEBACiAKICNpbmNsdWRlICJTVkdUZXN0c0ltcGwuaCIKICNpbmNsdWRlICJTVkdMYW5n
U3BhY2VJbXBsLmgiCi0jaW5jbHVkZSAiU1ZHU3R5bGVkRWxlbWVudEltcGwuaCIKLSNpbmNsdWRl
ICJTVkdUcmFuc2Zvcm1hYmxlSW1wbC5oIgorI2luY2x1ZGUgIlNWR1N0eWxlZFRyYW5zZm9ybWFi
bGVFbGVtZW50SW1wbC5oIgogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRJ
bXBsLmgiCiAKIG5hbWVzcGFjZSBLU1ZHCiB7CiAgICAgY2xhc3MgU1ZHQW5pbWF0ZWRMZW5ndGhJ
bXBsOwotICAgIGNsYXNzIFNWR1JlY3RFbGVtZW50SW1wbCA6IHB1YmxpYyBTVkdTdHlsZWRFbGVt
ZW50SW1wbCwKKyAgICBjbGFzcyBTVkdSZWN0RWxlbWVudEltcGwgOiBwdWJsaWMgU1ZHU3R5bGVk
VHJhbnNmb3JtYWJsZUVsZW1lbnRJbXBsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHB1YmxpYyBTVkdUZXN0c0ltcGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVi
bGljIFNWR0xhbmdTcGFjZUltcGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVi
bGljIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRJbXBsLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1YmxpYyBTVkdUcmFuc2Zvcm1hYmxlSW1wbAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkSW1wbAog
ICAgIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNWR1JlY3RFbGVtZW50SW1wbChLRE9NOjpEb2N1
bWVudFB0ciAqZG9jLCBLRE9NOjpOb2RlSW1wbDo6SWQgaWQsICBLRE9NOjpET01TdHJpbmdJbXBs
ICpwcmVmaXgpOwpJbmRleDogU1ZHU1ZHRWxlbWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp
bGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tzdmcyL3N2Zy9TVkdTVkdFbGVtZW50SW1wbC5jcHAs
dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuOQpkaWZmIC1wIC11IC1yMS45IFNWR1NWR0VsZW1lbnRJ
bXBsLmNwcAotLS0gU1ZHU1ZHRWxlbWVudEltcGwuY3BwCTEzIE9jdCAyMDA1IDA4OjI5OjIwIC0w
MDAwCTEuOQorKysgU1ZHU1ZHRWxlbWVudEltcGwuY3BwCTI4IE9jdCAyMDA1IDIyOjQwOjM5IC0w
MDAwCkBAIC02Miw4ICs2Miw4IEBACiB1c2luZyBuYW1lc3BhY2UgS1NWRzsKIAogU1ZHU1ZHRWxl
bWVudEltcGw6OlNWR1NWR0VsZW1lbnRJbXBsKEtET006OkRvY3VtZW50UHRyICpkb2MsIEtET006
Ok5vZGVJbXBsOjpJZCBpZCwgS0RPTTo6RE9NU3RyaW5nSW1wbCAqcHJlZml4KQotOiBTVkdTdHls
ZWRFbGVtZW50SW1wbChkb2MsIGlkLCBwcmVmaXgpLCBTVkdUZXN0c0ltcGwoKSwgU1ZHTGFuZ1Nw
YWNlSW1wbCgpLAotICBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkSW1wbCgpLCBTVkdMb2Nh
dGFibGVJbXBsKCksIFNWR0ZpdFRvVmlld0JveEltcGwoKSwKKzogU1ZHU3R5bGVkTG9jYXRhYmxl
RWxlbWVudEltcGwoZG9jLCBpZCwgcHJlZml4KSwgU1ZHVGVzdHNJbXBsKCksIFNWR0xhbmdTcGFj
ZUltcGwoKSwKKyAgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEltcGwoKSwgU1ZHRml0VG9W
aWV3Qm94SW1wbCgpLAogICBTVkdab29tQW5kUGFuSW1wbCgpLCBLRE9NOjpEb2N1bWVudEV2ZW50
SW1wbCgpCiB7CiAgICAgbV9jbGlwcGVyID0gMDsKQEAgLTM2MSwxMSArMzYxLDcgQEAgS0RPTTo6
Tm9kZUxpc3RJbXBsICpTVkdTVkdFbGVtZW50SW1wbDo6ZwogYm9vbCBTVkdTVkdFbGVtZW50SW1w
bDo6Y2hlY2tJbnRlcnNlY3Rpb24oU1ZHRWxlbWVudEltcGwgKmVsZW1lbnQsIFNWR1JlY3RJbXBs
ICpyZWN0KQogewogICAgIC8vIFRPRE8gOiB0YWtlIGludG8gYWNjb3VudCBwb2ludGVyLWV2ZW50
cz8KLSAgICBTVkdMb2NhdGFibGVJbXBsICplID0gZHluYW1pY19jYXN0PFNWR0xvY2F0YWJsZUlt
cGwgKj4oZWxlbWVudCk7Ci0gICAgaWYoIWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IFNWR1JlY3RJbXBsICpiYm94ID0gZS0+Z2V0QkJveCgpOworICAgIFNWR1JlY3RJbXBsICpiYm94
ID0gZ2V0QkJveCgpOwogICAgIGJib3gtPnJlZigpOwogCiAgICAgUVJlY3QgcihpbnQocmVjdC0+
eCgpKSwgaW50KHJlY3QtPnkoKSksIGludChyZWN0LT53aWR0aCgpKSwgaW50KHJlY3QtPmhlaWdo
dCgpKSk7CkBAIC0zNzgsMTEgKzM3NCw3IEBAIGJvb2wgU1ZHU1ZHRWxlbWVudEltcGw6OmNoZWNr
SW50ZXJzZWN0aW8KIGJvb2wgU1ZHU1ZHRWxlbWVudEltcGw6OmNoZWNrRW5jbG9zdXJlKFNWR0Vs
ZW1lbnRJbXBsICplbGVtZW50LCBTVkdSZWN0SW1wbCAqcmVjdCkKIHsKICAgICAvLyBUT0RPIDog
dGFrZSBpbnRvIGFjY291bnQgcG9pbnRlci1ldmVudHM/Ci0gICAgU1ZHTG9jYXRhYmxlSW1wbCAq
ZSA9IGR5bmFtaWNfY2FzdDxTVkdMb2NhdGFibGVJbXBsICo+KGVsZW1lbnQpOwotICAgIGlmKCFl
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgU1ZHUmVjdEltcGwgKmJib3ggPSBl
LT5nZXRCQm94KCk7CisgICAgU1ZHUmVjdEltcGwgKmJib3ggPSBnZXRCQm94KCk7CiAgICAgYmJv
eC0+cmVmKCk7CiAgICAgICAgIAogICAgIFFSZWN0IHIoaW50KHJlY3QtPngoKSksIGludChyZWN0
LT55KCkpLCBpbnQocmVjdC0+d2lkdGgoKSksIGludChyZWN0LT5oZWlnaHQoKSkpOwpAQCAtNDYz
LDcgKzQ1NSw3IEBAIFNWR01hdHJpeEltcGwgKlNWR1NWR0VsZW1lbnRJbXBsOjpnZXRDVE0KIAog
U1ZHTWF0cml4SW1wbCAqU1ZHU1ZHRWxlbWVudEltcGw6OmdldFNjcmVlbkNUTSgpIGNvbnN0CiB7
Ci0gICAgU1ZHTWF0cml4SW1wbCAqbWF0ID0gU1ZHTG9jYXRhYmxlSW1wbDo6Z2V0U2NyZWVuQ1RN
KCk7CisgICAgU1ZHTWF0cml4SW1wbCAqbWF0ID0gU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudElt
cGw6OmdldFNjcmVlbkNUTSgpOwogICAgIGlmKG1hdCkKICAgICB7CiAgICAgICAgIG1hdC0+dHJh
bnNsYXRlKHgoKS0+YmFzZVZhbCgpLT52YWx1ZSgpLCB5KCktPmJhc2VWYWwoKS0+dmFsdWUoKSk7
CkBAIC01MTEsNyArNTAzLDcgQEAgUVN0cmluZyBTVkdTVkdFbGVtZW50SW1wbDo6YWRqdXN0Vmll
d3BvcgogCiAgICAgLy8gV2UgaGF2ZSB0byBhcHBseSB0aGUgbWF0cml4IHRyYW5zZm9ybWF0aW9u
IGhlcmUsIGFzIHRoaXMgPHN2Zz4gbWF5IGJlIHNvbWUKICAgICAvLyBpbm5lciB2aWV3cG9ydCwg
d2hpY2ggaGFzIGEgY2VydGFpbiAnY3RtIG1hdHJpeCcsIHRoYXQgd2UgaGF2ZSB0byByZXNwZWN0
LgotICAgIFNWR01hdHJpeEltcGwgKmN0bSA9IFNWR0xvY2F0YWJsZUltcGw6OmdldFNjcmVlbkNU
TSgpOworICAgIFNWR01hdHJpeEltcGwgKmN0bSA9IFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnRJ
bXBsOjpnZXRTY3JlZW5DVE0oKTsKIAogICAgIEtDYW52YXNNYXRyaXggbWF0cml4ID0gY3RtLT5x
bWF0cml4KCk7CiAgICAgS0NQYXRoRGF0YUxpc3QgcGF0aERhdGEgPSBtYXRyaXgubWFwKEtDYW52
YXNDcmVhdG9yOjpzZWxmKCktPmNyZWF0ZVJlY3RhbmdsZShfeCwgX3ksIF93aWR0aCwgX2hlaWdo
dCkpOwpJbmRleDogU1ZHU1ZHRWxlbWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zz
L3Jvb3QvU1ZHU3VwcG9ydC9rc3ZnMi9zdmcvU1ZHU1ZHRWxlbWVudEltcGwuaCx2CnJldHJpZXZp
bmcgcmV2aXNpb24gMS43CmRpZmYgLXAgLXUgLXIxLjcgU1ZHU1ZHRWxlbWVudEltcGwuaAotLS0g
U1ZHU1ZHRWxlbWVudEltcGwuaAkyOCBTZXAgMjAwNSAwNTowNjowOCAtMDAwMAkxLjcKKysrIFNW
R1NWR0VsZW1lbnRJbXBsLmgJMjggT2N0IDIwMDUgMjI6NDA6MzkgLTAwMDAKQEAgLTI5LDEwICsy
OSw5IEBACiAKICNpbmNsdWRlICJTVkdUZXN0c0ltcGwuaCIKICNpbmNsdWRlICJTVkdMYW5nU3Bh
Y2VJbXBsLmgiCi0jaW5jbHVkZSAiU1ZHTG9jYXRhYmxlSW1wbC5oIgogI2luY2x1ZGUgIlNWR0Zp
dFRvVmlld0JveEltcGwuaCIKICNpbmNsdWRlICJTVkdab29tQW5kUGFuSW1wbC5oIgotI2luY2x1
ZGUgIlNWR1N0eWxlZEVsZW1lbnRJbXBsLmgiCisjaW5jbHVkZSAiU1ZHU3R5bGVkTG9jYXRhYmxl
RWxlbWVudEltcGwuaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkSW1w
bC5oIgogCiBuYW1lc3BhY2UgS0RPTQpAQCAtNTIsMTEgKzUxLDEwIEBAIG5hbWVzcGFjZSBLU1ZH
CiAgICAgY2xhc3MgU1ZHTWF0cml4SW1wbDsKICAgICBjbGFzcyBTVkdUcmFuc2Zvcm1JbXBsOwog
ICAgIGNsYXNzIFNWR0FuaW1hdGVkTGVuZ3RoSW1wbDsKLSAgICBjbGFzcyBTVkdTVkdFbGVtZW50
SW1wbCA6IHB1YmxpYyBTVkdTdHlsZWRFbGVtZW50SW1wbCwKKyAgICBjbGFzcyBTVkdTVkdFbGVt
ZW50SW1wbCA6IHB1YmxpYyBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50SW1wbCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdUZXN0c0ltcGwsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHTGFuZ1NwYWNlSW1wbCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkSW1wbCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdMb2NhdGFibGVJbXBsLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0ZpdFRvVmlld0JveEltcGws
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHWm9vbUFuZFBhbkltcGws
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgS0RPTTo6RG9jdW1lbnRFdmVu
dEltcGwKSW5kZXg6IFNWR1N3aXRjaEVsZW1lbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxl
OiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rc3ZnMi9zdmcvU1ZHU3dpdGNoRWxlbWVudEltcGwuY3Bw
LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjYKZGlmZiAtcCAtdSAtcjEuNiBTVkdTd2l0Y2hFbGVt
ZW50SW1wbC5jcHAKLS0tIFNWR1N3aXRjaEVsZW1lbnRJbXBsLmNwcAk1IE9jdCAyMDA1IDA1OjM1
OjI5IC0wMDAwCTEuNgorKysgU1ZHU3dpdGNoRWxlbWVudEltcGwuY3BwCTI4IE9jdCAyMDA1IDIy
OjQwOjM5IC0wMDAwCkBAIC0zNyw3ICszNyw3IEBACiB1c2luZyBuYW1lc3BhY2UgS1NWRzsKIAog
U1ZHU3dpdGNoRWxlbWVudEltcGw6OlNWR1N3aXRjaEVsZW1lbnRJbXBsKEtET006OkRvY3VtZW50
UHRyICpkb2MsIEtET006Ok5vZGVJbXBsOjpJZCBpZCwgS0RPTTo6RE9NU3RyaW5nSW1wbCAqcHJl
Zml4KQotOiBTVkdTdHlsZWRFbGVtZW50SW1wbChkb2MsIGlkLCBwcmVmaXgpLCBTVkdUZXN0c0lt
cGwoKSwgU1ZHTGFuZ1NwYWNlSW1wbCgpLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkSW1w
bCgpLCBTVkdUcmFuc2Zvcm1hYmxlSW1wbCgpCis6IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVt
ZW50SW1wbChkb2MsIGlkLCBwcmVmaXgpLCBTVkdUZXN0c0ltcGwoKSwgU1ZHTGFuZ1NwYWNlSW1w
bCgpLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkSW1wbCgpCiB7CiB9CiAKSW5kZXg6IFNW
R1N3aXRjaEVsZW1lbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1
cHBvcnQva3N2ZzIvc3ZnL1NWR1N3aXRjaEVsZW1lbnRJbXBsLmgsdgpyZXRyaWV2aW5nIHJldmlz
aW9uIDEuNApkaWZmIC1wIC11IC1yMS40IFNWR1N3aXRjaEVsZW1lbnRJbXBsLmgKLS0tIFNWR1N3
aXRjaEVsZW1lbnRJbXBsLmgJMSBTZXAgMjAwNSAwNzozNTo1MyAtMDAwMAkxLjQKKysrIFNWR1N3
aXRjaEVsZW1lbnRJbXBsLmgJMjggT2N0IDIwMDUgMjI6NDA6MzkgLTAwMDAKQEAgLTI1LDE3ICsy
NSwxNSBAQAogCiAjaW5jbHVkZSAiU1ZHVGVzdHNJbXBsLmgiCiAjaW5jbHVkZSAiU1ZHTGFuZ1Nw
YWNlSW1wbC5oIgotI2luY2x1ZGUgIlNWR1N0eWxlZEVsZW1lbnRJbXBsLmgiCi0jaW5jbHVkZSAi
U1ZHVHJhbnNmb3JtYWJsZUltcGwuaCIKKyNpbmNsdWRlICJTVkdTdHlsZWRUcmFuc2Zvcm1hYmxl
RWxlbWVudEltcGwuaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkSW1w
bC5oIgogCiBuYW1lc3BhY2UgS1NWRwogewotICAgIGNsYXNzIFNWR1N3aXRjaEVsZW1lbnRJbXBs
IDogcHVibGljIFNWR1N0eWxlZEVsZW1lbnRJbXBsLAorICAgIGNsYXNzIFNWR1N3aXRjaEVsZW1l
bnRJbXBsIDogcHVibGljIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50SW1wbCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdUZXN0c0ltcGwsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHTGFuZ1NwYWNlSW1wbCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkSW1wbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdU
cmFuc2Zvcm1hYmxlSW1wbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlj
IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRJbXBsCiAgICAgewogICAgIHB1YmxpYzoKICAg
ICAgICAgU1ZHU3dpdGNoRWxlbWVudEltcGwoS0RPTTo6RG9jdW1lbnRQdHIgKmRvYywgS0RPTTo6
Tm9kZUltcGw6OklkIGlkLCAgS0RPTTo6RE9NU3RyaW5nSW1wbCAqcHJlZml4KTsKSW5kZXg6IFNW
R1RleHRFbGVtZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1
cHBvcnQva3N2ZzIvc3ZnL1NWR1RleHRFbGVtZW50SW1wbC5jcHAsdgpyZXRyaWV2aW5nIHJldmlz
aW9uIDEuNQpkaWZmIC1wIC11IC1yMS41IFNWR1RleHRFbGVtZW50SW1wbC5jcHAKLS0tIFNWR1Rl
eHRFbGVtZW50SW1wbC5jcHAJNSBPY3QgMjAwNSAwNTozNToyOSAtMDAwMAkxLjUKKysrIFNWR1Rl
eHRFbGVtZW50SW1wbC5jcHAJMjggT2N0IDIwMDUgMjI6NDA6MzkgLTAwMDAKQEAgLTIwLDkgKzIw
LDE4IEBACiAgICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCiAqLwogCi0vLyNpbmNsdWRl
ICJTVkdEb2N1bWVudC5oIgogI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPGtkb20va2Rv
bS5oPgogI2luY2x1ZGUgIlNWR1RleHRFbGVtZW50SW1wbC5oIgorI2luY2x1ZGUgIlNWR1RTcGFu
RWxlbWVudEltcGwuaCIKKyNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aExpc3RJbXBsLmgiCisj
aW5jbHVkZSAiU1ZHUmVuZGVyU3R5bGUuaCIKKyNpbmNsdWRlICJLQ2FudmFzUmVuZGVyaW5nU3R5
bGUuaCIKKyNpbmNsdWRlIDxrZG9tL2Nzcy9SZW5kZXJTdHlsZS5oPgorCisjaW5jbHVkZSA8a2Nh
bnZhcy9LQ2FudmFzQ3JlYXRvci5oPgorCisjaW5jbHVkZSA8cXZlY3Rvci5oPgogCiB1c2luZyBu
YW1lc3BhY2UgS1NWRzsKIApAQCAtMzUsNCArNDQsMzUgQEAgU1ZHVGV4dEVsZW1lbnRJbXBsOjp+
U1ZHVGV4dEVsZW1lbnRJbXBsKAogewogfQogCit2b2lkIFNWR1RleHRFbGVtZW50SW1wbDo6cGFy
c2VBdHRyaWJ1dGUoS0RPTTo6QXR0cmlidXRlSW1wbCAqYXR0cikKK3sKKyAgICAvL2lmKFNWR1Ry
YW5zZm9ybWFibGVJbXBsOjpwYXJzZUF0dHJpYnV0ZShhdHRyKSkgcmV0dXJuOworICAgIFNWR1Rl
eHRQb3NpdGlvbmluZ0VsZW1lbnRJbXBsOjpwYXJzZUF0dHJpYnV0ZShhdHRyKTsKK30KKworU1ZH
RWxlbWVudEltcGwgKlNWR1RleHRFbGVtZW50SW1wbDo6bmVhcmVzdFZpZXdwb3J0RWxlbWVudCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIFNWR1RyYW5zZm9ybWFibGVJbXBsOjpuZWFyZXN0Vmlld3Bv
cnRFbGVtZW50KHRoaXMpOworfQorCitTVkdFbGVtZW50SW1wbCAqU1ZHVGV4dEVsZW1lbnRJbXBs
OjpmYXJ0aGVzdFZpZXdwb3J0RWxlbWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFNWR1RyYW5z
Zm9ybWFibGVJbXBsOjpmYXJ0aGVzdFZpZXdwb3J0RWxlbWVudCh0aGlzKTsKK30KKworU1ZHUmVj
dEltcGwgKlNWR1RleHRFbGVtZW50SW1wbDo6Z2V0QkJveCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IFNWR1RyYW5zZm9ybWFibGVJbXBsOjpnZXRCQm94KHRoaXMpOworfQorCitTVkdNYXRyaXhJbXBs
ICpTVkdUZXh0RWxlbWVudEltcGw6OmdldFNjcmVlbkNUTSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IFNWR0xvY2F0YWJsZUltcGw6OmdldFNjcmVlbkNUTSh0aGlzKTsKK30KKworU1ZHTWF0cml4SW1w
bCAqU1ZHVGV4dEVsZW1lbnRJbXBsOjpnZXRDVE0oKSBjb25zdAoreworICAgIHJldHVybiBTVkdM
b2NhdGFibGVJbXBsOjpnZXRTY3JlZW5DVE0odGhpcyk7Cit9CisKIC8vIHZpbTp0cz00Om5vZXQK
SW5kZXg6IFNWR1RleHRFbGVtZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9v
dC9TVkdTdXBwb3J0L2tzdmcyL3N2Zy9TVkdUZXh0RWxlbWVudEltcGwuaCx2CnJldHJpZXZpbmcg
cmV2aXNpb24gMS40CmRpZmYgLXAgLXUgLXIxLjQgU1ZHVGV4dEVsZW1lbnRJbXBsLmgKLS0tIFNW
R1RleHRFbGVtZW50SW1wbC5oCTEgU2VwIDIwMDUgMDc6MzU6NTQgLTAwMDAJMS40CisrKyBTVkdU
ZXh0RWxlbWVudEltcGwuaAkyOCBPY3QgMjAwNSAyMjo0MDozOSAtMDAwMApAQCAtMjgsMTQgKzI4
LDI1IEBACiAKIG5hbWVzcGFjZSBLU1ZHCiB7Ci0gICAgY2xhc3MgU1ZHVGV4dEVsZW1lbnRJbXBs
IDogcHVibGljIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnRJbXBsLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdUcmFuc2Zvcm1hYmxlSW1wbAorICAgIGNsYXNzIFNW
R1RleHRFbGVtZW50SW1wbCA6IHB1YmxpYyBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50SW1wbCwg
cHVibGljIFNWR1RyYW5zZm9ybWFibGVJbXBsCiAgICAgewogICAgIHB1YmxpYzoKICAgICAgICAg
U1ZHVGV4dEVsZW1lbnRJbXBsKEtET006OkRvY3VtZW50UHRyICpkb2MsIEtET006Ok5vZGVJbXBs
OjpJZCBpZCwgIEtET006OkRPTVN0cmluZ0ltcGwgKnByZWZpeCk7CiAgICAgICAgIHZpcnR1YWwg
flNWR1RleHRFbGVtZW50SW1wbCgpOwogCisgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJp
YnV0ZShLRE9NOjpBdHRyaWJ1dGVJbXBsICphdHRyKTsKKwogICAgICAgICAvLyAnU1ZHVGV4dEVs
ZW1lbnQnIGZ1bmN0aW9ucworICAgICAgICB2aXJ0dWFsIFNWR0VsZW1lbnRJbXBsICpuZWFyZXN0
Vmlld3BvcnRFbGVtZW50KCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgU1ZHRWxlbWVudEltcGwg
KmZhcnRoZXN0Vmlld3BvcnRFbGVtZW50KCkgY29uc3Q7CisKKyAgICAgICAgdmlydHVhbCBTVkdS
ZWN0SW1wbCAqZ2V0QkJveCgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIFNWR01hdHJpeEltcGwg
KmdldENUTSgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIFNWR01hdHJpeEltcGwgKmdldFNjcmVl
bkNUTSgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIFNWR01hdHJpeEltcGwgKmdldFRyYW5zZm9y
bVRvRWxlbWVudChTVkdFbGVtZW50SW1wbCAqZWxlbWVudCkgY29uc3QgeyByZXR1cm4gMDsgfQor
CisgICAgICAgIHZpcnR1YWwgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0SW1wbCAqdHJhbnNmb3Jt
KCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgICAgICB2aXJ0dWFsIFNWR01hdHJpeEltcGwgKmxv
Y2FsTWF0cml4KCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIH07CiB9OwogCkluZGV4OiBTVkdU
cmFuc2Zvcm1hYmxlSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1
cHBvcnQva3N2ZzIvc3ZnL1NWR1RyYW5zZm9ybWFibGVJbXBsLmNwcCx2CnJldHJpZXZpbmcgcmV2
aXNpb24gMS43CmRpZmYgLXAgLXUgLXIxLjcgU1ZHVHJhbnNmb3JtYWJsZUltcGwuY3BwCi0tLSBT
VkdUcmFuc2Zvcm1hYmxlSW1wbC5jcHAJNSBPY3QgMjAwNSAwNTozNTozMCAtMDAwMAkxLjcKKysr
IFNWR1RyYW5zZm9ybWFibGVJbXBsLmNwcAkyOCBPY3QgMjAwNSAyMjo0MDozOSAtMDAwMApAQCAt
NjUsMjYgKzY1LDYgQEAgU1ZHTWF0cml4SW1wbCAqU1ZHVHJhbnNmb3JtYWJsZUltcGw6OmxvYwog
ICAgIHJldHVybiBsYXp5X2NyZWF0ZTxTVkdNYXRyaXhJbXBsPihtX2xvY2FsTWF0cml4KTsKIH0K
IAotU1ZHTWF0cml4SW1wbCAqU1ZHVHJhbnNmb3JtYWJsZUltcGw6OmdldENUTSgpIGNvbnN0Ci17
Ci0gICAgU1ZHTWF0cml4SW1wbCAqY3RtID0gU1ZHTG9jYXRhYmxlSW1wbDo6Z2V0Q1RNKCk7Ci0K
LSAgICBpZihtX2xvY2FsTWF0cml4KQotICAgICAgICBjdG0tPm11bHRpcGx5KG1fbG9jYWxNYXRy
aXgpOwotCi0gICAgcmV0dXJuIGN0bTsKLX0KLQotU1ZHTWF0cml4SW1wbCAqU1ZHVHJhbnNmb3Jt
YWJsZUltcGw6OmdldFNjcmVlbkNUTSgpIGNvbnN0Ci17Ci0gICAgU1ZHTWF0cml4SW1wbCAqY3Rt
ID0gU1ZHTG9jYXRhYmxlSW1wbDo6Z2V0U2NyZWVuQ1RNKCk7Ci0KLSAgICBpZihtX2xvY2FsTWF0
cml4KQotICAgICAgICBjdG0tPm11bHRpcGx5KG1fbG9jYWxNYXRyaXgpOwotCi0gICAgcmV0dXJu
IGN0bTsKLX0KLQogdm9pZCBTVkdUcmFuc2Zvcm1hYmxlSW1wbDo6dXBkYXRlTG9jYWxUcmFuc2Zv
cm0oU1ZHVHJhbnNmb3JtTGlzdEltcGwgKmxvY2FsVHJhbnNmb3JtcykKIHsKICAgICAvLyBVcGRh
dGUgY2FjaGVkIGxvY2FsIG1hdHJpeApJbmRleDogU1ZHVHJhbnNmb3JtYWJsZUltcGwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rc3ZnMi9zdmcvU1ZHVHJhbnNm
b3JtYWJsZUltcGwuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41CmRpZmYgLXAgLXUgLXIxLjUg
U1ZHVHJhbnNmb3JtYWJsZUltcGwuaAotLS0gU1ZHVHJhbnNmb3JtYWJsZUltcGwuaAk4IFNlcCAy
MDA1IDA4OjAzOjM3IC0wMDAwCTEuNQorKysgU1ZHVHJhbnNmb3JtYWJsZUltcGwuaAkyOCBPY3Qg
MjAwNSAyMjo0MDozOSAtMDAwMApAQCAtNDYsMTIgKzQ2LDggQEAgbmFtZXNwYWNlIEtTVkcKICAg
ICAgICAgdmlydHVhbCB+U1ZHVHJhbnNmb3JtYWJsZUltcGwoKTsKIAogICAgICAgICAvLyAnU1ZH
VHJhbnNmb3JtYWJsZScgZnVuY3Rpb25zCi0gICAgICAgIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlz
dEltcGwgKnRyYW5zZm9ybSgpIGNvbnN0OwotICAgICAgICBTVkdNYXRyaXhJbXBsICpsb2NhbE1h
dHJpeCgpIGNvbnN0OwotCi0gICAgICAgIC8vIERlcml2ZWQgZnJvbTogJ1NWR0xvY2F0YWJsZScK
LSAgICAgICAgdmlydHVhbCBTVkdNYXRyaXhJbXBsICpnZXRDVE0oKSBjb25zdDsKLSAgICAgICAg
dmlydHVhbCBTVkdNYXRyaXhJbXBsICpnZXRTY3JlZW5DVE0oKSBjb25zdDsKKyAgICAgICAgdmly
dHVhbCBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RJbXBsICp0cmFuc2Zvcm0oKSBjb25zdCA9IDA7
CisgICAgICAgIHZpcnR1YWwgU1ZHTWF0cml4SW1wbCAqbG9jYWxNYXRyaXgoKSBjb25zdCA9IDA7
CiAKICAgICAgICAgLy8gU3BlY2lhbCBwYXJzZUF0dHJpYnV0ZSBmdW5jdGlvbiwgcmV0dXJuaW5n
IGEgYm9vbCwKICAgICAgICAgLy8gd2hldGhlciBpdCBjb3VsZCBoYW5kbGUgdGhlIHBhc3NlZCBh
dHRyaWJ1dGUgb3Igbm90LgpJbmRleDogU1ZHVXNlRWxlbWVudEltcGwuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
UkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tzdmcyL3N2Zy9TVkdVc2VFbGVtZW50SW1w
bC5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuOQpkaWZmIC1wIC11IC1yMS45IFNWR1VzZUVs
ZW1lbnRJbXBsLmNwcAotLS0gU1ZHVXNlRWxlbWVudEltcGwuY3BwCTExIE9jdCAyMDA1IDA5OjE5
OjIzIC0wMDAwCTEuOQorKysgU1ZHVXNlRWxlbWVudEltcGwuY3BwCTI4IE9jdCAyMDA1IDIyOjQw
OjM5IC0wMDAwCkBAIC00Niw3ICs0Niw3IEBACiB1c2luZyBuYW1lc3BhY2UgS1NWRzsKIAogU1ZH
VXNlRWxlbWVudEltcGw6OlNWR1VzZUVsZW1lbnRJbXBsKEtET006OkRvY3VtZW50UHRyICpkb2Ms
IEtET006Ok5vZGVJbXBsOjpJZCBpZCwgS0RPTTo6RE9NU3RyaW5nSW1wbCAqcHJlZml4KQotOiBT
VkdTdHlsZWRFbGVtZW50SW1wbChkb2MsIGlkLCBwcmVmaXgpLCBTVkdUZXN0c0ltcGwoKSwgU1ZH
TGFuZ1NwYWNlSW1wbCgpLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkSW1wbCgpLCBTVkdU
cmFuc2Zvcm1hYmxlSW1wbCgpLCBTVkdVUklSZWZlcmVuY2VJbXBsKCkKKzogU1ZHU3R5bGVkVHJh
bnNmb3JtYWJsZUVsZW1lbnRJbXBsKGRvYywgaWQsIHByZWZpeCksIFNWR1Rlc3RzSW1wbCgpLCBT
VkdMYW5nU3BhY2VJbXBsKCksIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRJbXBsKCksIFNW
R1VSSVJlZmVyZW5jZUltcGwoKQogewogICAgIG1feCA9IG1feSA9IG1fd2lkdGggPSBtX2hlaWdo
dCA9IDA7CiB9CkBAIC0xMTQsMTAgKzExNCw5IEBAIHZvaWQgU1ZHVXNlRWxlbWVudEltcGw6OnBh
cnNlQXR0cmlidXRlKEsKICAgICAgICAgICAgIGlmKFNWR1Rlc3RzSW1wbDo6cGFyc2VBdHRyaWJ1
dGUoYXR0cikpIHJldHVybjsKICAgICAgICAgICAgIGlmKFNWR0xhbmdTcGFjZUltcGw6OnBhcnNl
QXR0cmlidXRlKGF0dHIpKSByZXR1cm47CiAgICAgICAgICAgICBpZihTVkdFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkSW1wbDo6cGFyc2VBdHRyaWJ1dGUoYXR0cikpIHJldHVybjsKLSAgICAgICAg
ICAgIGlmKFNWR1RyYW5zZm9ybWFibGVJbXBsOjpwYXJzZUF0dHJpYnV0ZShhdHRyKSkgcmV0dXJu
OwogICAgICAgICAgICAgaWYoU1ZHVVJJUmVmZXJlbmNlSW1wbDo6cGFyc2VBdHRyaWJ1dGUoYXR0
cikpIHJldHVybjsKIAotICAgICAgICAgICAgU1ZHU3R5bGVkRWxlbWVudEltcGw6OnBhcnNlQXR0
cmlidXRlKGF0dHIpOworICAgICAgICAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnRJ
bXBsOjpwYXJzZUF0dHJpYnV0ZShhdHRyKTsKICAgICAgICAgfQogICAgIH07CiB9CkBAIC0xMzYs
MTAgKzEzNSwxMCBAQCB2b2lkIFNWR1VzZUVsZW1lbnRJbXBsOjpjbG9zZSgpCiAKICAgICBmbG9h
dCBfeCA9IHgoKS0+YmFzZVZhbCgpLT52YWx1ZSgpLCBfeSA9IHkoKS0+YmFzZVZhbCgpLT52YWx1
ZSgpOwogICAgIGZsb2F0IF93ID0gd2lkdGgoKS0+YmFzZVZhbCgpLT52YWx1ZSgpLCBfaCA9IGhl
aWdodCgpLT5iYXNlVmFsKCktPnZhbHVlKCk7Ci0gICAgCisKICAgICBRU3RyaW5nIHcgPSBRU3Ry
aW5nOjpudW1iZXIoX3cpOwogICAgIFFTdHJpbmcgaCA9IFFTdHJpbmc6Om51bWJlcihfaCk7Ci0g
ICAgCisKICAgICBRU3RyaW5nIHRyYW5zID0gUVN0cmluZzo6ZnJvbUxhdGluMSgidHJhbnNsYXRl
KCUxLCAlMikiKS5hcmcoX3gpLmFyZyhfeSk7ICAgIAogICAgIGlmKHRhcmdldC0+aWQoKSA9PSBJ
RF9TWU1CT0wpCiAgICAgewpJbmRleDogU1ZHVXNlRWxlbWVudEltcGwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD
UyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rc3ZnMi9zdmcvU1ZHVXNlRWxlbWVudEltcGwu
aCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40CmRpZmYgLXAgLXUgLXIxLjQgU1ZHVXNlRWxlbWVu
dEltcGwuaAotLS0gU1ZHVXNlRWxlbWVudEltcGwuaAkxIFNlcCAyMDA1IDA3OjM1OjU2IC0wMDAw
CTEuNAorKysgU1ZHVXNlRWxlbWVudEltcGwuaAkyOCBPY3QgMjAwNSAyMjo0MDozOSAtMDAwMApA
QCAtMjYsMTkgKzI2LDE3IEBACiAjaW5jbHVkZSAiU1ZHVGVzdHNJbXBsLmgiCiAjaW5jbHVkZSAi
U1ZHTGFuZ1NwYWNlSW1wbC5oIgogI2luY2x1ZGUgIlNWR1VSSVJlZmVyZW5jZUltcGwuaCIKLSNp
bmNsdWRlICJTVkdTdHlsZWRFbGVtZW50SW1wbC5oIgotI2luY2x1ZGUgIlNWR1RyYW5zZm9ybWFi
bGVJbXBsLmgiCisjaW5jbHVkZSAiU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnRJbXBsLmgi
CiAjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEltcGwuaCIKIAogbmFtZXNw
YWNlIEtTVkcKIHsKICAgICAvL2NsYXNzIFNWR0VsZW1lbnRJbnN0YW5jZUltcGw7CiAgICAgY2xh
c3MgU1ZHQW5pbWF0ZWRMZW5ndGhJbXBsOwotICAgIGNsYXNzIFNWR1VzZUVsZW1lbnRJbXBsIDog
cHVibGljIFNWR1N0eWxlZEVsZW1lbnRJbXBsLAorICAgIGNsYXNzIFNWR1VzZUVsZW1lbnRJbXBs
IDogcHVibGljIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50SW1wbCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdUZXN0c0ltcGwsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwdWJsaWMgU1ZHTGFuZ1NwYWNlSW1wbCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1YmxpYyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkSW1wbCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdUcmFuc2Zvcm1hYmxlSW1wbCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdVUklSZWZlcmVuY2VJbXBs
CiAgICAgewogICAgIHB1YmxpYzoK
</data>
<flag name="review"
          id="799"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>4602</attachid>
            <date>2005-11-04 14:54:43 -0800</date>
            <delta_ts>2005-11-20 15:48:40 -0800</delta_ts>
            <desc>Pulls many changes from kcanvas svn r475806</desc>
            <filename>patch_kcanvas_r475806</filename>
            <type>text/plain</type>
            <size>32991</size>
            <attacher name="Julien Palmas">julien.palmas</attacher>
            
              <data encoding="base64">SW5kZXg6IC4uL1dlYkNvcmUva3dxL0tXUVdNYXRyaXguaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAv
Y3ZzL3Jvb3QvV2ViQ29yZS9rd3EvS1dRV01hdHJpeC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAx
LjIKZGlmZiAtcCAtdSAtcjEuMiBLV1FXTWF0cml4LmgKLS0tIC4uL1dlYkNvcmUva3dxL0tXUVdN
YXRyaXguaAk4IFNlcCAyMDA1IDA4OjAzOjQyIC0wMDAwCTEuMgorKysgLi4vV2ViQ29yZS9rd3Ev
S1dRV01hdHJpeC5oCTQgTm92IDIwMDUgMjE6NTE6NTkgLTAwMDAKQEAgLTI4LDYgKzI4LDggQEAK
IAogI2luY2x1ZGUgPEFwcGxpY2F0aW9uU2VydmljZXMvQXBwbGljYXRpb25TZXJ2aWNlcy5oPgog
CitjbGFzcyBRUmVjdDsKKwogY2xhc3MgUVdNYXRyaXggewogcHVibGljOgogICAgIFFXTWF0cml4
KCk7CkBAIC0zNiw2ICszOCw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHNldE1hdHJpeChk
b3VibGUgYSwgZG91YmxlIGIsIGRvdWJsZSBjLCBkb3VibGUgZCwgZG91YmxlIHR4LCBkb3VibGUg
dHkpOwogICAgIHZvaWQgbWFwKGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlICp4MiwgZG91Ymxl
ICp5MikgY29uc3Q7CisgICAgUVJlY3QgUVdNYXRyaXg6Om1hcFJlY3QoY29uc3QgUVJlY3QgJnJl
Y3QpIGNvbnN0OwogICAgIAogICAgIGJvb2wgaXNJZGVudGl0eSgpIGNvbnN0OwogICAgIApJbmRl
eDogLi4vV2ViQ29yZS9rd3EvS1dRV01hdHJpeC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zz
L3Jvb3QvV2ViQ29yZS9rd3EvS1dRV01hdHJpeC5tbSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS44
CmRpZmYgLXAgLXUgLXIxLjggS1dRV01hdHJpeC5tbQotLS0gLi4vV2ViQ29yZS9rd3EvS1dRV01h
dHJpeC5tbQkzIE9jdCAyMDA1IDIxOjEzOjExIC0wMDAwCTEuOAorKysgLi4vV2ViQ29yZS9rd3Ev
S1dRV01hdHJpeC5tbQk0IE5vdiAyMDA1IDIxOjUxOjU5IC0wMDAwCkBAIC0yNSw2ICsyNSw3IEBA
CiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbXBvcnQgIktXUVdNYXRyaXguaCIKKyNpbXBvcnQg
IktXUVJlY3QuaCIKIAogc3RhdGljIGNvbnN0IGRvdWJsZSBkZWcycmFkID0gMC4wMTc0NTMyOTI1
MTk5NDMyOTU3Njk7IC8vIHBpLzE4MAogCkBAIC01NCw2ICs1NSwxMiBAQCB2b2lkIFFXTWF0cml4
OjptYXAoZG91YmxlIHgsIGRvdWJsZSB5LCBkCiAgICAgKnkyID0gcmVzdWx0Lnk7CiB9CiAKK1FS
ZWN0IFFXTWF0cml4OjptYXBSZWN0KGNvbnN0IFFSZWN0ICZyZWN0KSBjb25zdAoreworICAgIENH
UmVjdCByZXN1bHQgPSBDR1JlY3RBcHBseUFmZmluZVRyYW5zZm9ybShDR1JlY3RNYWtlKHJlY3Qu
bGVmdCgpLCByZWN0LmJvdHRvbSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpLG1fdHJh
bnNmb3JtKTsKKyAgICByZXR1cm4gUVJlY3QoKGludClyZXN1bHQub3JpZ2luLngsIChpbnQpcmVz
dWx0Lm9yaWdpbi55ICsgKGludClyZXN1bHQuc2l6ZS5oZWlnaHQsIChpbnQpcmVzdWx0LnNpemUu
d2lkdGgsIChpbnQpcmVzdWx0LnNpemUuaGVpZ2h0KTsKK30KKwogYm9vbCBRV01hdHJpeDo6aXNJ
ZGVudGl0eSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIENHQWZmaW5lVHJhbnNmb3JtSXNJZGVudGl0
eShtX3RyYW5zZm9ybSk7CkluZGV4OiBrY2FudmFzL0tDYW52YXNDb250YWluZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tjYW52YXMvS0NhbnZhc0NvbnRh
aW5lci5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuOApkaWZmIC1wIC11IC1yMS44IGtjYW52
YXMvS0NhbnZhc0NvbnRhaW5lci5jcHAKLS0tIGtjYW52YXMvS0NhbnZhc0NvbnRhaW5lci5jcHAJ
NSBPY3QgMjAwNSAwNTozNjo0NCAtMDAwMAkxLjgKKysrIGtjYW52YXMvS0NhbnZhc0NvbnRhaW5l
ci5jcHAJNCBOb3YgMjAwNSAyMjo0NToyOSAtMDAwMApAQCAtMjIsNiArMjIsNyBAQAogCiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiS0NhbnZhcy5oIgorI2luY2x1ZGUgIktDYW52YXNN
YXRyaXguaCIKICNpbmNsdWRlICJLUmVuZGVyaW5nU3R5bGUuaCIKICNpbmNsdWRlICJLUmVuZGVy
aW5nRGV2aWNlLmgiCiAjaW5jbHVkZSAiS0NhbnZhc0NvbnRhaW5lci5oIgpAQCAtMjksMTMgKzMw
LDE1IEBACiBjbGFzcyBLQ2FudmFzQ29udGFpbmVyOjpQcml2YXRlCiB7CiBwdWJsaWM6Ci0gICAg
UHJpdmF0ZSgpIDogZHJhd0NvbnRlbnRzKHRydWUpLCBmaXJzdCgwKSwgbGFzdCgwKSB7IH0gICAg
CisgICAgUHJpdmF0ZSgpIDogZHJhd0NvbnRlbnRzKHRydWUpLCBzbGljZShmYWxzZSksIGZpcnN0
KDApLCBsYXN0KDApIHsgfQogICAgIH5Qcml2YXRlKCkgeyB9CiAKICAgICBib29sIGRyYXdDb250
ZW50cyA6IDE7CisgICAgYm9vbCBzbGljZSA6IDE7CiAKICAgICBLQ2FudmFzSXRlbSAqZmlyc3Q7
CiAgICAgS0NhbnZhc0l0ZW0gKmxhc3Q7CisgICAgS0NhbnZhc01hdHJpeCBtYXRyaXg7CiB9Owog
CiBLQ2FudmFzQ29udGFpbmVyOjpLQ2FudmFzQ29udGFpbmVyKEtDYW52YXMgKmNhbnZhcywgS1Jl
bmRlcmluZ1N0eWxlICpzdHlsZSkKQEAgLTMwMSw0ICszMDQsNzcgQEAgS0NhbnZhc0l0ZW0gKktD
YW52YXNDb250YWluZXI6Omxhc3QoKSBjbwogICAgIHJldHVybiBkLT5sYXN0OwogfQogCitLQ2Fu
dmFzTWF0cml4IEtDYW52YXNDb250YWluZXI6OmdldENvbXB1dGVkVHJhbnNmb3JtKCkgY29uc3QK
K3sKKyAgICAvL2lmKGQtPm1hdHJpeC5xbWF0cml4KCkuaXNJZGVudGl0eSgpKQorICAgIHsKKyAg
ICAgICAgS0NhbnZhc01hdHJpeCBtYXQ7CisgICAgICAgIG1hdC5zZXRPcGVyYXRpb25Nb2RlKE9Q
U19QT1NUTVVMKTsKKyAgICAgICAgaWYoIXZpZXdCb3goKS5pc051bGwoKSkKKyAgICAgICAgICAg
IG1hdCA9IGdldEFzcGVjdFJhdGlvKHZpZXdCb3goKSwgdmlld3BvcnQoKSk7CisgICAgICAgIG1h
dC5tdWx0aXBseShzdHlsZSgpLT5vYmplY3RNYXRyaXgoKSk7CisgICAgICAgIGlmKHBhcmVudCgp
KQorICAgICAgICAgICAgbWF0Lm11bHRpcGx5KHBhcmVudCgpLT5nZXRDb21wdXRlZFRyYW5zZm9y
bSgpKTsKKworICAgICAgICBkLT5tYXRyaXggPSBtYXQ7CisgICAgfQorCisgICAgcmV0dXJuIGQt
Pm1hdHJpeDsKK30KKwordm9pZCBLQ2FudmFzQ29udGFpbmVyOjpzZXRTbGljZShib29sIHNsaWNl
KQoreworICAgIGQtPnNsaWNlID0gc2xpY2U7Cit9CisKK2Jvb2wgS0NhbnZhc0NvbnRhaW5lcjo6
c2xpY2UoKSBjb25zdAoreworICAgIHJldHVybiBkLT5zbGljZTsKK30KKworS0NhbnZhc01hdHJp
eCBLQ2FudmFzQ29udGFpbmVyOjpnZXRBc3BlY3RSYXRpbyhjb25zdCBRUmVjdCBsb2dpY2FsLCBj
b25zdCBRUmVjdCBwaHlzaWNhbCkgY29uc3QKK3sKKyAgICBLQ2FudmFzTWF0cml4IHRlbXA7CisK
KyAgICBmbG9hdCBsb2dpY1ggPSBsb2dpY2FsLngoKTsKKyAgICBmbG9hdCBsb2dpY1kgPSBsb2dp
Y2FsLnkoKTsKKyAgICBmbG9hdCBsb2dpY1dpZHRoID0gbG9naWNhbC53aWR0aCgpOworICAgIGZs
b2F0IGxvZ2ljSGVpZ2h0ID0gbG9naWNhbC5oZWlnaHQoKTsKKyAgICBmbG9hdCBwaHlzV2lkdGgg
PSBwaHlzaWNhbC53aWR0aCgpOworICAgIGZsb2F0IHBoeXNIZWlnaHQgPSBwaHlzaWNhbC5oZWln
aHQoKTsKKworICAgIGZsb2F0IHZwYXIgPSBsb2dpY1dpZHRoIC8gbG9naWNIZWlnaHQ7CisgICAg
ZmxvYXQgc3ZnYXIgPSBwaHlzV2lkdGggLyBwaHlzSGVpZ2h0OworCisgICAgaWYoYWxpZ24oKSA9
PSBBTElHTl9OT05FKQorICAgIHsKKyAgICAgICAgdGVtcC5zY2FsZShwaHlzV2lkdGggLyBsb2dp
Y1dpZHRoLCBwaHlzSGVpZ2h0IC8gbG9naWNIZWlnaHQpOworICAgICAgICB0ZW1wLnRyYW5zbGF0
ZSgtbG9naWNYLCAtbG9naWNZKTsKKyAgICB9CisgICAgZWxzZSBpZigodnBhciA8IHN2Z2FyICYm
ICFzbGljZSgpKSB8fCAodnBhciA+PSBzdmdhciAmJiBzbGljZSgpKSkKKyAgICB7CisgICAgICAg
IHRlbXAuc2NhbGUocGh5c0hlaWdodCAvIGxvZ2ljSGVpZ2h0LCBwaHlzSGVpZ2h0IC8gbG9naWNI
ZWlnaHQpOworCisgICAgICAgIGlmKGFsaWduKCkgPT0gQUxJR05fWE1JTllNSU4gfHwgYWxpZ24o
KSA9PSBBTElHTl9YTUlOWU1JRCB8fCBhbGlnbigpID09IEFMSUdOX1hNSU5ZTUFYKQorICAgICAg
ICAgICAgdGVtcC50cmFuc2xhdGUoLWxvZ2ljWCwgLWxvZ2ljWSk7CisgICAgICAgIGVsc2UgaWYo
YWxpZ24oKSA9PSBBTElHTl9YTUlEWU1JTiB8fCBhbGlnbigpID09IEFMSUdOX1hNSURZTUlEIHx8
IGFsaWduKCkgPT0gQUxJR05fWE1JRFlNQVgpCisgICAgICAgICAgICB0ZW1wLnRyYW5zbGF0ZSgt
bG9naWNYIC0gKGxvZ2ljV2lkdGggLSBwaHlzV2lkdGggKiBsb2dpY0hlaWdodCAvIHBoeXNIZWln
aHQpIC8gMiwgLWxvZ2ljWSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRlbXAudHJhbnNs
YXRlKC1sb2dpY1ggLSAobG9naWNXaWR0aCAtIHBoeXNXaWR0aCAqIGxvZ2ljSGVpZ2h0IC8gcGh5
c0hlaWdodCksIC1sb2dpY1kpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICB0ZW1w
LnNjYWxlKHBoeXNXaWR0aCAvIGxvZ2ljV2lkdGgsIHBoeXNXaWR0aCAvIGxvZ2ljV2lkdGgpOwor
CisgICAgICAgIGlmKGFsaWduKCkgPT0gQUxJR05fWE1JTllNSU4gfHwgYWxpZ24oKSA9PSBBTElH
Tl9YTUlEWU1JTiB8fCBhbGlnbigpID09IEFMSUdOX1hNQVhZTUlOKQorICAgICAgICAgICAgdGVt
cC50cmFuc2xhdGUoLWxvZ2ljWCwgLWxvZ2ljWSk7CisgICAgICAgIGVsc2UgaWYoYWxpZ24oKSA9
PSBBTElHTl9YTUlOWU1JRCB8fCBhbGlnbigpID09IEFMSUdOX1hNSURZTUlEIHx8IGFsaWduKCkg
PT0gQUxJR05fWE1BWFlNSUQpCisgICAgICAgICAgICB0ZW1wLnRyYW5zbGF0ZSgtbG9naWNYLCAt
bG9naWNZIC0gKGxvZ2ljSGVpZ2h0IC0gcGh5c0hlaWdodCAqIGxvZ2ljV2lkdGggLyBwaHlzV2lk
dGgpIC8gMik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRlbXAudHJhbnNsYXRlKC1sb2dp
Y1gsIC1sb2dpY1kgLSAobG9naWNIZWlnaHQgLSBwaHlzSGVpZ2h0ICogbG9naWNXaWR0aCAvIHBo
eXNXaWR0aCkpOworICAgIH0KKworICAgIHJldHVybiB0ZW1wOworfQorCiAvLyB2aW06dHM9NDpu
b2V0CkluZGV4OiBrY2FudmFzL0tDYW52YXNDb250YWluZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxl
OiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rY2FudmFzL0tDYW52YXNDb250YWluZXIuaCx2CnJldHJp
ZXZpbmcgcmV2aXNpb24gMS41CmRpZmYgLXAgLXUgLXIxLjUga2NhbnZhcy9LQ2FudmFzQ29udGFp
bmVyLmgKLS0tIGtjYW52YXMvS0NhbnZhc0NvbnRhaW5lci5oCTggU2VwIDIwMDUgMDg6MDM6MTAg
LTAwMDAJMS41CisrKyBrY2FudmFzL0tDYW52YXNDb250YWluZXIuaAk0IE5vdiAyMDA1IDIyOjQ1
OjI5IC0wMDAwCkBAIC0yNSw3ICsyNSwyMiBAQAogCiAjaW5jbHVkZSA8a2NhbnZhcy9LQ2FudmFz
SXRlbS5oPgogCit0eXBlZGVmIGVudW0KK3sKKyAgICBBTElHTl9OT05FID0gMCwKKyAgICBBTElH
Tl9YTUlOWU1JTiA9IDEsCisgICAgQUxJR05fWE1JRFlNSU4gPSAyLAorICAgIEFMSUdOX1hNQVhZ
TUlOID0gMywKKyAgICBBTElHTl9YTUlOWU1JRCA9IDQsCisgICAgQUxJR05fWE1JRFlNSUQgPSA1
LAorICAgIEFMSUdOX1hNQVhZTUlEID0gNiwKKyAgICBBTElHTl9YTUlOWU1BWCA9IDcsCisgICAg
QUxJR05fWE1JRFlNQVggPSA4LAorICAgIEFMSUdOX1hNQVhZTUFYID0gOQorfSBLQ0FsaWduOwor
CiBjbGFzcyBLQ2FudmFzOworY2xhc3MgS0NhbnZhc01hdHJpeDsKIGNsYXNzIEtSZW5kZXJpbmdT
dHlsZTsKIGNsYXNzIEtDYW52YXNDb250YWluZXIgOiBwdWJsaWMgS0NhbnZhc0l0ZW0KIHsKQEAg
LTU3LDYgKzcyLDIzIEBAIHB1YmxpYzoKIAogICAgIEtDYW52YXNJdGVtICpmaXJzdCgpIGNvbnN0
OwogICAgIEtDYW52YXNJdGVtICpsYXN0KCkgY29uc3Q7CisgICAgCisgICAgdmlydHVhbCBLQ2Fu
dmFzTWF0cml4IGdldENvbXB1dGVkVHJhbnNmb3JtKCkgY29uc3Q7CisgICAgCisgICAgICAgIHZp
cnR1YWwgdm9pZCBzZXRWaWV3cG9ydChjb25zdCBRUmVjdCAmdmlld3BvcnQpID0gMDsKKyAgICB2
aXJ0dWFsIFFSZWN0IHZpZXdwb3J0KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNl
dFZpZXdCb3goY29uc3QgUVJlY3QgJnZpZXdCb3gpID0gMDsKKyAgICB2aXJ0dWFsIFFSZWN0IHZp
ZXdCb3goKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QWxpZ24oS0NBbGlnbiBh
bGlnbikgPSAwOworICAgIHZpcnR1YWwgS0NBbGlnbiBhbGlnbigpIGNvbnN0ID0gMDsKKworICAg
IHZvaWQgc2V0U2xpY2UoYm9vbCBzbGljZSk7CisgICAgYm9vbCBzbGljZSgpIGNvbnN0OworICAg
IAorcHJvdGVjdGVkOgorICAgIEtDYW52YXNNYXRyaXggZ2V0QXNwZWN0UmF0aW8oY29uc3QgUVJl
Y3QgbG9naWNhbCwgY29uc3QgUVJlY3QgcGh5c2ljYWwpIGNvbnN0OwogCiBwcml2YXRlOgogICAg
IGZyaWVuZCBjbGFzcyBLQ2FudmFzSXRlbTsKSW5kZXg6IGtjYW52YXMvS0NhbnZhc0l0ZW0uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tjYW52YXMvS0NhbnZh
c0l0ZW0uY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjYKZGlmZiAtcCAtdSAtcjEuNiBrY2Fu
dmFzL0tDYW52YXNJdGVtLmNwcAotLS0ga2NhbnZhcy9LQ2FudmFzSXRlbS5jcHAJNSBPY3QgMjAw
NSAwNTozNjo0NSAtMDAwMAkxLjYKKysrIGtjYW52YXMvS0NhbnZhc0l0ZW0uY3BwCTQgTm92IDIw
MDUgMjI6NDU6MjkgLTAwMDAKQEAgLTI2MCw0ICsyNjAsMTYgQEAgY29uc3QgS0NhbnZhc0NvbW1v
bkFyZ3MgS0NhbnZhc0l0ZW06OmNvbQogICAgIHJldHVybiBhcmdzOwogfQogCitLQ2FudmFzTWF0
cml4IEtDYW52YXNJdGVtOjpnZXRDb21wdXRlZFRyYW5zZm9ybSgpIGNvbnN0Cit7CisgICAgS0Nh
bnZhc01hdHJpeCBtYXQoc3R5bGUoKS0+b2JqZWN0TWF0cml4KCkpOworICAgIGlmKHBhcmVudCgp
KQorICAgIHsKKyAgICAgICAgbWF0LnNldE9wZXJhdGlvbk1vZGUoT1BTX1BPU1RNVUwpOworICAg
ICAgICBtYXQubXVsdGlwbHkocGFyZW50KCktPmdldENvbXB1dGVkVHJhbnNmb3JtKCkpOworICAg
IH0KKworICAgIHJldHVybiBtYXQ7Cit9CisKIC8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IGtjYW52
YXMvS0NhbnZhc0l0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9y
dC9rY2FudmFzL0tDYW52YXNJdGVtLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNApkaWZmIC1w
IC11IC1yMS40IGtjYW52YXMvS0NhbnZhc0l0ZW0uaAotLS0ga2NhbnZhcy9LQ2FudmFzSXRlbS5o
CTIgU2VwIDIwMDUgMTA6MDI6NTYgLTAwMDAJMS40CisrKyBrY2FudmFzL0tDYW52YXNJdGVtLmgJ
NCBOb3YgMjAwNSAyMjo0NToyOSAtMDAwMApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgPGtj
YW52YXMvS0NhbnZhc1R5cGVzLmg+CiAKIGNsYXNzIEtDYW52YXM7CitjbGFzcyBLQ2FudmFzTWF0
cml4OwogY2xhc3MgS1JlbmRlcmluZ1N0eWxlOwogY2xhc3MgS0NhbnZhc0NvbnRhaW5lcjsKIGNs
YXNzIEtDYW52YXNJdGVtCkBAIC04Nyw2ICs4OCw4IEBAIHB1YmxpYzoKICAgICBLQ2FudmFzSXRl
bSAqbmV4dCgpIGNvbnN0OwogICAgIHZvaWQgc2V0TmV4dChLQ2FudmFzSXRlbSAqbmV4dCk7CiAg
ICAgCisgICAgdmlydHVhbCBLQ2FudmFzTWF0cml4IGdldENvbXB1dGVkVHJhbnNmb3JtKCkgY29u
c3Q7CisgICAgCiBwcm90ZWN0ZWQ6CiAgICAgLy8gcmVzdHJpY3RlZCBzZXQgb2YgYXJncyBmb3Ig
cGFzc2luZyB0byBwYWludCBzZXJ2ZXJzLCBldGMuCiAgICAgY29uc3QgS0NhbnZhc0NvbW1vbkFy
Z3MgY29tbW9uQXJncygpIGNvbnN0OwpJbmRleDoga2NhbnZhcy9LQ2FudmFzUmVzb3VyY2VzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rY2FudmFzL0tDYW52
YXNSZXNvdXJjZXMuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjYKZGlmZiAtcCAtdSAtcjEu
NiBrY2FudmFzL0tDYW52YXNSZXNvdXJjZXMuY3BwCi0tLSBrY2FudmFzL0tDYW52YXNSZXNvdXJj
ZXMuY3BwCTUgT2N0IDIwMDUgMDU6MzY6NDUgLTAwMDAJMS42CisrKyBrY2FudmFzL0tDYW52YXNS
ZXNvdXJjZXMuY3BwCTQgTm92IDIwMDUgMjI6NDU6MzAgLTAwMDAKQEAgLTE0Miw2ICsxNDIsNyBA
QCBLQ2FudmFzTWFya2VyOjpLQ2FudmFzTWFya2VyKEtDYW52YXNJdGVtCiAgICAgbV9yZWZZID0g
MDsKICAgICBtX21hcmtlciA9IG1hcmtlcjsKICAgICBzZXRBdXRvQW5nbGUoKTsKKyAgICBtX3Vz
ZVN0cm9rZVdpZHRoID0gdHJ1ZTsKIH0KIAogS0NhbnZhc01hcmtlcjo6fktDYW52YXNNYXJrZXIo
KQpAQCAtMTg4LDE5ICsxODksNjAgQEAgdm9pZCBLQ2FudmFzTWFya2VyOjpzZXRBdXRvQW5nbGUo
KQogICAgIG1fYW5nbGUgPSAtMTsKIH0KIAotdm9pZCBLQ2FudmFzTWFya2VyOjpkcmF3KGRvdWJs
ZSB4LCBkb3VibGUgeSwgZG91YmxlIGFuZ2xlKQordm9pZCBLQ2FudmFzTWFya2VyOjpzZXRVc2VT
dHJva2VXaWR0aChib29sIHVzZVN0cm9rZVdpZHRoKQoreworICAgIG1fdXNlU3Ryb2tlV2lkdGgg
PSB1c2VTdHJva2VXaWR0aDsKK30KKworYm9vbCBLQ2FudmFzTWFya2VyOjp1c2VTdHJva2VXaWR0
aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdXNlU3Ryb2tlV2lkdGg7Cit9CisKK3ZvaWQgS0Nh
bnZhc01hcmtlcjo6c2V0U2NhbGVYKGZsb2F0IHNjYWxlWCkKK3sKKyAgICBtX3NjYWxlWCA9IHNj
YWxlWDsKK30KKworZmxvYXQgS0NhbnZhc01hcmtlcjo6c2NhbGVYKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9zY2FsZVg7Cit9CisKK3ZvaWQgS0NhbnZhc01hcmtlcjo6c2V0U2NhbGVZKGZsb2F0
IHNjYWxlWSkKK3sKKyAgICBtX3NjYWxlWSA9IHNjYWxlWTsKK30KKworZmxvYXQgS0NhbnZhc01h
cmtlcjo6c2NhbGVZKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zY2FsZVk7Cit9CisKK3ZvaWQg
S0NhbnZhc01hcmtlcjo6ZHJhdyhjb25zdCBRUmVjdCAmcmVjdCwgY29uc3QgS0NhbnZhc01hdHJp
eCAmb2JqZWN0TWF0cml4LCBkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSBzdHJva2VXaWR0aCwg
ZG91YmxlIGFuZ2xlKQogewogICAgIGlmKG1fbWFya2VyICYmIG1fbWFya2VyLT5zdHlsZSgpKQog
ICAgIHsKLSAgICAgICAgS0NhbnZhc01hdHJpeCB0cmFuc2xhdGlvbjsKKyAgICAgICAgS0NhbnZh
c01hdHJpeCB0cmFuc2xhdGlvbiA9IG9iamVjdE1hdHJpeDsKICAgICAgICAgdHJhbnNsYXRpb24u
dHJhbnNsYXRlKHgsIHkpOwogCiAgICAgICAgIEtDYW52YXNNYXRyaXggcm90YXRpb247CiAgICAg
ICAgIHJvdGF0aW9uLnNldE9wZXJhdGlvbk1vZGUoT1BTX1BPU1RNVUwpOwogICAgICAgICByb3Rh
dGlvbi50cmFuc2xhdGUoLW1fcmVmWCwgLW1fcmVmWSk7CisgICAgICAgIHJvdGF0aW9uLnNjYWxl
KG1fc2NhbGVYLCBtX3NjYWxlWSk7CiAgICAgICAgIHJvdGF0aW9uLnJvdGF0ZShtX2FuZ2xlID4g
LTEgPyBtX2FuZ2xlIDogYW5nbGUpOworICAgICAgICAKKyAgICAgICAgLy8gc3Ryb2tlIHdpZHRo
CisgICAgICAgIGlmKG1fdXNlU3Ryb2tlV2lkdGgpCisgICAgICAgICAgICByb3RhdGlvbi5zY2Fs
ZShzdHJva2VXaWR0aCwgc3Ryb2tlV2lkdGgpOworICAgICAgICAgICAgCisgICAgICAgIGlmKG1f
bWFya2VyLT5pc0NvbnRhaW5lcigpKQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8S0NhbnZhc0Nv
bnRhaW5lciAqPihtX21hcmtlciktPnNldERyYXdDb250ZW50cyh0cnVlKTsKIAogICAgICAgICBt
X21hcmtlci0+ZHJhdyhRUmVjdCgpKTsKKyAgICAgICAgCisgICAgICAgIGlmKG1fbWFya2VyLT5p
c0NvbnRhaW5lcigpKQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8S0NhbnZhc0NvbnRhaW5lciAq
PihtX21hcmtlciktPnNldERyYXdDb250ZW50cyhmYWxzZSk7CiAgICAgfQogfQogCkluZGV4OiBr
Y2FudmFzL0tDYW52YXNSZXNvdXJjZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3Qv
U1ZHU3VwcG9ydC9rY2FudmFzL0tDYW52YXNSZXNvdXJjZXMuaCx2CnJldHJpZXZpbmcgcmV2aXNp
b24gMS42CmRpZmYgLXAgLXUgLXIxLjYga2NhbnZhcy9LQ2FudmFzUmVzb3VyY2VzLmgKLS0tIGtj
YW52YXMvS0NhbnZhc1Jlc291cmNlcy5oCTggU2VwIDIwMDUgMDg6MDM6MTEgLTAwMDAJMS42Cisr
KyBrY2FudmFzL0tDYW52YXNSZXNvdXJjZXMuaAk0IE5vdiAyMDA1IDIyOjQ1OjMwIC0wMDAwCkBA
IC0xMDMsMTQgKzEwMywyNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBbmdsZShmbG9hdCBhbmds
ZSk7CiAgICAgZmxvYXQgYW5nbGUoKSBjb25zdDsKIAorICAgIHZvaWQgc2V0VXNlU3Ryb2tlV2lk
dGgoYm9vbCB1c2VTdHJva2VXaWR0aCA9IHRydWUpOworICAgIGJvb2wgdXNlU3Ryb2tlV2lkdGgo
KSBjb25zdDsKKworICAgIHZvaWQgc2V0U2NhbGVYKGZsb2F0IHNjYWxlWCk7CisgICAgZmxvYXQg
c2NhbGVYKCkgY29uc3Q7CisKKyAgICB2b2lkIHNldFNjYWxlWShmbG9hdCBzY2FsZVkpOworICAg
IGZsb2F0IHNjYWxlWSgpIGNvbnN0OworCiAgICAgLy8gRHJhdyBvbnRvIHRoZSBjYW52YXMKLSAg
ICB2b2lkIGRyYXcoZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUgYW5nbGUgPSAwLjApOworICAg
IHZvaWQgZHJhdyhjb25zdCBRUmVjdCAmcmVjdCwgY29uc3QgS0NhbnZhc01hdHJpeCAmb2JqZWN0
TWF0cml4LCBkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSBzdHJva2VXaWR0aCA9IDEuLCBkb3Vi
bGUgYW5nbGUgPSAwLjApOwogCiAgICAgUVRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRp
b24oUVRleHRTdHJlYW0gJikgY29uc3Q7IAogcHJpdmF0ZToKICAgICBkb3VibGUgbV9yZWZYLCBt
X3JlZlk7Ci0gICAgZmxvYXQgbV9hbmdsZTsKKyAgICBmbG9hdCBtX2FuZ2xlLCBtX3NjYWxlWCwg
bV9zY2FsZVk7CiAgICAgS0NhbnZhc0l0ZW0gKm1fbWFya2VyOworICAgIGJvb2wgbV91c2VTdHJv
a2VXaWR0aDsKIH07CiAKIFFUZXh0U3RyZWFtICZvcGVyYXRvcjw8KFFUZXh0U3RyZWFtICZ0cywg
Y29uc3QgS0NhbnZhc1Jlc291cmNlICZyKTsKSW5kZXg6IGtjYW52YXMvS0NhbnZhc1ZpZXcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tjYW52YXMvS0NhbnZh
c1ZpZXcuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjYKZGlmZiAtcCAtdSAtcjEuNiBrY2Fu
dmFzL0tDYW52YXNWaWV3LmNwcAotLS0ga2NhbnZhcy9LQ2FudmFzVmlldy5jcHAJNSBPY3QgMjAw
NSAwNTozNjo0NiAtMDAwMAkxLjYKKysrIGtjYW52YXMvS0NhbnZhc1ZpZXcuY3BwCTQgTm92IDIw
MDUgMjI6NDU6MzAgLTAwMDAKQEAgLTMxMCw3ICszMTAsNyBAQCB2b2lkIEtDYW52YXNWaWV3Ojpy
ZXNpemVWaWV3KGludCBfd2lkdGgsCiAjZW5kaWYKIAogICAgIC8vIFVwZGF0ZSByZW5kZXJpbmcg
Y29udGV4dHMgd29ybGQgbWF0cml4Ci0gICAgY29udGV4dCgpLT5zZXRXb3JsZE1hdHJpeCh2aWV3
VG9DYW52YXNNYXRyaXgoKSk7CisgICAgY29udGV4dCgpLT5zZXRSb290Q1RNKHZpZXdUb0NhbnZh
c01hdHJpeCgpKTsKIAogICAgIC8vIEludmFsaWRhdGUgdGhlIGVudGlyZSBzY3JlZW4gcmVnaW9u
CiAgICAgUVJlY3QgZnVsbCgwLCAwLCB2aWV3V2lkdGgoKSwgdmlld0hlaWdodCgpKTsKQEAgLTM3
NSw3ICszNzUsNyBAQCB2b2lkIEtDYW52YXNWaWV3Ojp1cGRhdGVWaWV3KCkKICAgICB9CiAjZW5k
aWYKIAotICAgIGNvbnRleHQoKS0+c2V0V29ybGRNYXRyaXgodmlld1RvQ2FudmFzTWF0cml4KCkp
OworICAgIGNvbnRleHQoKS0+c2V0Um9vdENUTSh2aWV3VG9DYW52YXNNYXRyaXgoKSk7CiAKICNp
ZmRlZiBFTkFCTEVfWDExX1NVUFBPUlQKICAgICAvLyBJbnZhbGlkYXRlIHRoZSBlbnRpcmUgc2Ny
ZWVuIHJlZ2lvbgpJbmRleDoga2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ0RldmljZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2NhbnZhcy9kZXZpY2UvS1Jl
bmRlcmluZ0RldmljZS5jcHAsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNApkaWZmIC1wIC11IC1y
MS40IGtjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdEZXZpY2UuY3BwCi0tLSBrY2FudmFzL2Rldmlj
ZS9LUmVuZGVyaW5nRGV2aWNlLmNwcAk1IE9jdCAyMDA1IDA1OjM2OjQ4IC0wMDAwCTEuNAorKysg
a2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ0RldmljZS5jcHAJNCBOb3YgMjAwNSAyMjo0NTozMCAt
MDAwMApAQCAtMjIsNyArMjIsNiBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
S1JlbmRlcmluZ0RldmljZS5oIgotI2luY2x1ZGUgIktSZW5kZXJpbmdEZXZpY2UubW9jIgogCiBL
Q2FudmFzQ29tbW9uQXJnczo6S0NhbnZhc0NvbW1vbkFyZ3MoKQogewpJbmRleDoga2NhbnZhcy9k
ZXZpY2UvS1JlbmRlcmluZ0RldmljZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9T
VkdTdXBwb3J0L2tjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdEZXZpY2UuaCx2CnJldHJpZXZpbmcg
cmV2aXNpb24gMS40CmRpZmYgLXAgLXUgLXIxLjQga2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ0Rl
dmljZS5oCi0tLSBrY2FudmFzL2RldmljZS9LUmVuZGVyaW5nRGV2aWNlLmgJMiBTZXAgMjAwNSAx
MDowMjo1OCAtMDAwMAkxLjQKKysrIGtjYW52YXMvZGV2aWNlL0tSZW5kZXJpbmdEZXZpY2UuaAk0
IE5vdiAyMDA1IDIyOjQ1OjMwIC0wMDAwCkBAIC0zOSw4ICszOSwxMSBAQCBwdWJsaWM6CiAgICAg
S1JlbmRlcmluZ0RldmljZUNvbnRleHQoKSB7IH0KICAgICB2aXJ0dWFsIH5LUmVuZGVyaW5nRGV2
aWNlQ29udGV4dCgpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIHNldFdvcmxkTWF0cml4KGNvbnN0
IEtDYW52YXNNYXRyaXggJndvcmxkTWF0cml4KSA9IDA7Ci0gICAgdmlydHVhbCBLQ2FudmFzTWF0
cml4IHdvcmxkTWF0cml4KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgS0NhbnZhc01hdHJpeCBj
b25jYXRDVE0oY29uc3QgS0NhbnZhc01hdHJpeCAmd29ybGRNYXRyaXgpID0gMDsKKyAgICB2aXJ0
dWFsIEtDYW52YXNNYXRyaXggY3RtKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRD
VE0oY29uc3QgS0NhbnZhc01hdHJpeCAmd29ybGRNYXRyaXgpID0gMDsKKyAgICB2aXJ0dWFsIEtD
YW52YXNNYXRyaXggcm9vdENUTSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Um9v
dENUTShjb25zdCBLQ2FudmFzTWF0cml4ICZ3b3JsZE1hdHJpeCkgPSAwOwogICAgIAogICAgIHZp
cnR1YWwgUVJlY3QgbWFwRnJvbVZpc3VhbChjb25zdCBRUmVjdCAmcmVjdCkgPSAwOwogICAgIHZp
cnR1YWwgUVJlY3QgbWFwVG9WaXN1YWwoY29uc3QgUVJlY3QgJnJlY3QpID0gMDsKQEAgLTkwLDYg
KzkzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgS0NhbnZhc0l0ZW0gKmNyZWF0ZUl0ZW0oS0Nh
bnZhcyAqY2FudmFzLCBLUmVuZGVyaW5nU3R5bGUgKnN0eWxlLCBLQ2FudmFzVXNlckRhdGEgcGF0
aCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgS0NhbnZhc0NvbnRhaW5lciAqY3JlYXRlQ29udGFp
bmVyKEtDYW52YXMgKmNhbnZhcywgS1JlbmRlcmluZ1N0eWxlICpzdHlsZSkgY29uc3QgPSAwOwog
CisKIHByb3RlY3RlZDogLy8gVG8gYmUgdXNlZCBieSBmcm9tIGluaGVyaXRlZCBlbmRQYXRoKCkK
ICAgICBmcmllbmQgY2xhc3MgS0NhbnZhc0l0ZW07CiAKSW5kZXg6IGtjYW52YXMvZGV2aWNlL0tS
ZW5kZXJpbmdTdHlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1NWR1N1cHBv
cnQva2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1N0eWxlLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNp
b24gMS42CmRpZmYgLXAgLXUgLXIxLjYga2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1N0eWxlLmNw
cAotLS0ga2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1N0eWxlLmNwcAk1IE9jdCAyMDA1IDA1OjM2
OjQ5IC0wMDAwCTEuNgorKysga2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1N0eWxlLmNwcAk0IE5v
diAyMDA1IDIyOjQ1OjMwIC0wMDAwCkBAIC00Niw2ICs0Niw3IEBAIHB1YmxpYzoKICAgICAgICAg
aW1hZ2VSZW5kZXJpbmcgPSBJUl9PUFRJTUlaRV9RVUFMSVRZOwogCiAgICAgICAgIG9wYWNpdHkg
PSAxLjBmOworICAgICAgICBzdHJva2VXaWR0aCA9IDEuMGY7CiAgICAgfQogCiAgICAgflByaXZh
dGUoKQpAQCAtNjIsNyArNjMsOCBAQCBwdWJsaWM6CiAKICAgICBLUmVuZGVyaW5nRmlsbFBhaW50
ZXIgKmZpbGxQYWludGVyOwogICAgIEtSZW5kZXJpbmdTdHJva2VQYWludGVyICpzdHJva2VQYWlu
dGVyOwotCisgICAgZG91YmxlIHN0cm9rZVdpZHRoOworICAgIAogICAgIGJvb2wgdmlzaWJsZSA6
IDE7CiAKICAgICBLQ0ltYWdlUmVuZGVyaW5nIGltYWdlUmVuZGVyaW5nIDogMTsKQEAgLTEyMSw2
ICsxMjMsMTYgQEAgdm9pZCBLUmVuZGVyaW5nU3R5bGU6OmRpc2FibGVTdHJva2VQYWludAogICAg
IH0KIH0KIAorZG91YmxlIEtSZW5kZXJpbmdTdHlsZTo6c3Ryb2tlV2lkdGgoKSBjb25zdAorewor
ICAgIHJldHVybiBkLT5zdHJva2VXaWR0aDsKK30KKwordm9pZCBLUmVuZGVyaW5nU3R5bGU6OnNl
dFN0cm9rZVdpZHRoKGRvdWJsZSBfc3Ryb2tlV2lkdGgpCit7CisgICAgZC0+c3Ryb2tlV2lkdGgg
PSBfc3Ryb2tlV2lkdGg7Cit9CisKIC8vIEZpbGwgKGFrYSBCdXNoKSBwcm9wZXJ0aWVzCiBib29s
IEtSZW5kZXJpbmdTdHlsZTo6aXNGaWxsZWQoKSBjb25zdAogewpAQCAtMjAwLDYgKzIxMiwxMSBA
QCB2b2lkIEtSZW5kZXJpbmdTdHlsZTo6c2V0Q2xpcFBhdGhzKGNvbnN0CiAgICAgZC0+Y2xpcFBh
dGhzID0gZGF0YTsKIH0KIAordm9pZCBLUmVuZGVyaW5nU3R5bGU6OmFkZENsaXBQYXRoKGNvbnN0
IFFTdHJpbmcgJmNsaXBQYXRoKQoreworICAgIGQtPmNsaXBQYXRocy5hcHBlbmQoY2xpcFBhdGgp
OworfQorCiAvLyBGaWx0ZXJzCiBLQ2FudmFzRmlsdGVyICpLUmVuZGVyaW5nU3R5bGU6OmZpbHRl
cigpIGNvbnN0CiB7CkluZGV4OiBrY2FudmFzL2RldmljZS9LUmVuZGVyaW5nU3R5bGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3VwcG9ydC9rY2FudmFzL2RldmljZS9LUmVu
ZGVyaW5nU3R5bGUuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41CmRpZmYgLXAgLXUgLXIxLjUg
a2NhbnZhcy9kZXZpY2UvS1JlbmRlcmluZ1N0eWxlLmgKLS0tIGtjYW52YXMvZGV2aWNlL0tSZW5k
ZXJpbmdTdHlsZS5oCTIgU2VwIDIwMDUgMTA6MDI6NTggLTAwMDAJMS41CisrKyBrY2FudmFzL2Rl
dmljZS9LUmVuZGVyaW5nU3R5bGUuaAk0IE5vdiAyMDA1IDIyOjQ1OjMwIC0wMDAwCkBAIC03Niw2
ICs3Niw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgS1JlbmRlcmluZ1N0cm9rZVBhaW50ZXIg
KnN0cm9rZVBhaW50ZXIoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZVN0cm9rZVBhaW50ZXIo
KTsKKyAgICAKKyAgICBkb3VibGUgc3Ryb2tlV2lkdGgoKSBjb25zdDsKKyAgICB2b2lkIHNldFN0
cm9rZVdpZHRoKGRvdWJsZSBzdHJva2VXaWR0aCk7CiAKICAgICAvLyBGaWxsIChha2EgQnJ1c2gp
IHByb3BlcnRpZXMKICAgICB2aXJ0dWFsIGJvb2wgaXNGaWxsZWQoKSBjb25zdDsKQEAgLTEwMiw2
ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ2xpcHBpbmcKICAgICB2aXJ0dWFsIFFTdHJpbmdM
aXN0IGNsaXBQYXRocygpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzZXRDbGlwUGF0aHMoY29u
c3QgUVN0cmluZ0xpc3QgJmRhdGEpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGRDbGlwUGF0
aChjb25zdCBRU3RyaW5nICZjbGlwUGF0aCk7CiAKICAgICAvLyBNYXJrZXJzCiAgICAgdmlydHVh
bCBLQ2FudmFzTWFya2VyICpzdGFydE1hcmtlcigpIGNvbnN0OwpJbmRleDoga2NhbnZhcy9kZXZp
Y2UvcXVhcnR6L0tDYW52YXNJdGVtUXVhcnR6LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9y
b290L1NWR1N1cHBvcnQva2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNJdGVtUXVhcnR6Lmgs
dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMgpkaWZmIC1wIC11IC1yMS4yIGtjYW52YXMvZGV2aWNl
L3F1YXJ0ei9LQ2FudmFzSXRlbVF1YXJ0ei5oCi0tLSBrY2FudmFzL2RldmljZS9xdWFydHovS0Nh
bnZhc0l0ZW1RdWFydHouaAkxIFNlcCAyMDA1IDA3OjMyOjU0IC0wMDAwCTEuMgorKysga2NhbnZh
cy9kZXZpY2UvcXVhcnR6L0tDYW52YXNJdGVtUXVhcnR6LmgJNCBOb3YgMjAwNSAyMjo0NTozMCAt
MDAwMApAQCAtMzYsNSArMzYsNSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGhpdHNQYXRo
KGNvbnN0IFFQb2ludCAmcCwgYm9vbCBmaWxsIC8qIGZhbHNlIG1lYW5zIHN0cm9rZSAqLykgY29u
c3Q7CiAgICAgCiBwcml2YXRlOgotICAgIHZvaWQgZHJhd01hcmtlcnMoKSBjb25zdDsKKyAgICB2
b2lkIGRyYXdNYXJrZXJzKGNvbnN0IFFSZWN0ICZyZWN0KSBjb25zdDsKIH07CkluZGV4OiBrY2Fu
dmFzL2RldmljZS9xdWFydHovS0NhbnZhc0l0ZW1RdWFydHoubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmls
ZTogL2N2cy9yb290L1NWR1N1cHBvcnQva2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNJdGVt
UXVhcnR6Lm1tLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjYKZGlmZiAtcCAtdSAtcjEuNiBrY2Fu
dmFzL2RldmljZS9xdWFydHovS0NhbnZhc0l0ZW1RdWFydHoubW0KLS0tIGtjYW52YXMvZGV2aWNl
L3F1YXJ0ei9LQ2FudmFzSXRlbVF1YXJ0ei5tbQk1IE9jdCAyMDA1IDA1OjM2OjUxIC0wMDAwCTEu
NgorKysga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNJdGVtUXVhcnR6Lm1tCTQgTm92IDIw
MDUgMjI6NDU6MzAgLTAwMDAKQEAgLTQ2LDIzICs0NiwyNSBAQCBLQ2FudmFzSXRlbVF1YXJ0ejo6
S0NhbnZhc0l0ZW1RdWFydHooS0NhCiAJCiB9CiAKLXZvaWQgS0NhbnZhc0l0ZW1RdWFydHo6OmRy
YXdNYXJrZXJzKCkgY29uc3QKK3ZvaWQgS0NhbnZhc0l0ZW1RdWFydHo6OmRyYXdNYXJrZXJzKGNv
bnN0IFFSZWN0ICZyZWN0KSBjb25zdAogewogCU5TTG9nKEAiKioqIE1hcmtlciBzdXBwb3J0IG5v
dCBpbXBsZW1lbnRlZC4iKTsKIAkKKyAgICBLQ2FudmFzTWF0cml4IG9iamVjdE1hdHJpeCA9IHN0
eWxlKCktPm9iamVjdE1hdHJpeCgpOworICAgIAogCS8vIGZpbmQgdGhlIHN0YXJ0IHZlcnRpY2ll
cy4uLgogCWlmKHN0eWxlKCktPnN0YXJ0TWFya2VyKCkpIHsKLQkJc3R5bGUoKS0+c3RhcnRNYXJr
ZXIoKS0+ZHJhdygwLCAwLCAwKTsKKwkJc3R5bGUoKS0+c3RhcnRNYXJrZXIoKS0+ZHJhdyhyZWN0
LCBvYmplY3RNYXRyaXgsIDAsIDAsIDApOwogCX0KIAogCS8vIGZpbmQgdGhlIG1pZGRsZSB2ZXJ0
aWNpZXMuLi4gCiAJaWYoc3R5bGUoKS0+bWlkTWFya2VyKCkpIHsKLQkJc3R5bGUoKS0+bWlkTWFy
a2VyKCktPmRyYXcoMCwgMCwgMCk7CisJCXN0eWxlKCktPm1pZE1hcmtlcigpLT5kcmF3KHJlY3Qs
IG9iamVjdE1hdHJpeCwgMCwgMCwgMCk7CiAJfQogCiAJLy8gZmluZCB0aGUgZW5kIHZlcnRpY2ll
cy4uLgogCWlmKHN0eWxlKCktPmVuZE1hcmtlcigpKSB7Ci0JCXN0eWxlKCktPmVuZE1hcmtlcigp
LT5kcmF3KDAsIDAsIDApOworCQlzdHlsZSgpLT5lbmRNYXJrZXIoKS0+ZHJhdyhyZWN0LCBvYmpl
Y3RNYXRyaXgsIDAsIDAsIDApOwogCX0KIH0KIApAQCAtMTE3LDcgKzExOSw3IEBAIHZvaWQgS0Nh
bnZhc0l0ZW1RdWFydHo6OmRyYXcoY29uc3QgUVJlY3QKIAogCS8vIERyYXcgbWFya2VycywgaWYg
bmVlZGVkCiAJaWYoc3R5bGUoKS0+aGFzTWFya2VycygpKSB7Ci0JCWRyYXdNYXJrZXJzKCk7CisJ
CWRyYXdNYXJrZXJzKHJlY3QpOwogCX0KIAkKIAkvLyBhY3R1YWxseSBhcHBseSB0aGUgZmlsdGVy
CkluZGV4OiBrY2FudmFzL2RldmljZS9xdWFydHovS0NhbnZhc1Jlc291cmNlc1F1YXJ0ei5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tjYW52YXMvZGV2aWNlL3F1
YXJ0ei9LQ2FudmFzUmVzb3VyY2VzUXVhcnR6LmgsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMwpk
aWZmIC1wIC11IC1yMS4zIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzUmVzb3VyY2VzUXVh
cnR6LmgKLS0tIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzUmVzb3VyY2VzUXVhcnR6LmgJ
MSBTZXAgMjAwNSAwNzozMjo1NCAtMDAwMAkxLjMKKysrIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9L
Q2FudmFzUmVzb3VyY2VzUXVhcnR6LmgJNCBOb3YgMjAwNSAyMjo0NTozMCAtMDAwMApAQCAtMzEs
MTQgKzMxLDYgQEAKIHR5cGVkZWYgc3RydWN0IENHQ29udGV4dCAqQ0dDb250ZXh0UmVmOwogdHlw
ZWRlZiBzdHJ1Y3QgQ0dMYXllciAqQ0dMYXllclJlZjsKIAotY2xhc3MgS0NhbnZhc0NvbnRhaW5l
clF1YXJ0eiA6IHB1YmxpYyBLQ2FudmFzQ29udGFpbmVyIHsKLXB1YmxpYzoKLSAgICBLQ2FudmFz
Q29udGFpbmVyUXVhcnR6KEtDYW52YXMgKmNhbnZhcywgS1JlbmRlcmluZ1N0eWxlICpzdHlsZSk7
Ci0gICAgCi0gICAgLy8gRHJhdyBvbnRvIHRoZSBjYW52YXMKLSAgICB2aXJ0dWFsIHZvaWQgZHJh
dyhjb25zdCBRUmVjdCAmZGlydHlSZWN0KSBjb25zdDsKLX07Ci0KIGNsYXNzIEtDYW52YXNDbGlw
cGVyUXVhcnR6IDogcHVibGljIEtDYW52YXNDbGlwcGVyIHsKIHB1YmxpYzoKICAgICBLQ2FudmFz
Q2xpcHBlclF1YXJ0eigpIHt9OwpAQCAtNjIsMyArNTQsMjYgQEAgcHVibGljOgogICAgIFFTaXpl
IG1fc2l6ZTsKICAgICBDR0xheWVyUmVmIG1fY2dMYXllcjsKIH07CisKK2NsYXNzIEtDYW52YXND
b250YWluZXJRdWFydHogOiBwdWJsaWMgS0NhbnZhc0NvbnRhaW5lciB7CitwdWJsaWM6CisgICAg
S0NhbnZhc0NvbnRhaW5lclF1YXJ0eihLQ2FudmFzICpjYW52YXMsIEtSZW5kZXJpbmdTdHlsZSAq
c3R5bGUpOworICAgIAorICAgIC8vIERyYXcgb250byB0aGUgY2FudmFzCisgICAgdmlydHVhbCB2
b2lkIGRyYXcoY29uc3QgUVJlY3QgJmRpcnR5UmVjdCkgY29uc3Q7CisgICAgCisgICAgdmlydHVh
bCB2b2lkIHNldFZpZXdwb3J0KGNvbnN0IFFSZWN0ICZ2aWV3cG9ydCk7CisgICAgdmlydHVhbCBR
UmVjdCB2aWV3cG9ydCgpIGNvbnN0OworCisgICAgdmlydHVhbCB2b2lkIHNldFZpZXdCb3goY29u
c3QgUVJlY3QgJnZpZXdCb3gpOworICAgIHZpcnR1YWwgUVJlY3Qgdmlld0JveCgpIGNvbnN0Owor
CisgICAgdmlydHVhbCB2b2lkIHNldEFsaWduKEtDQWxpZ24gYWxpZ24pOworICAgIHZpcnR1YWwg
S0NBbGlnbiBhbGlnbigpIGNvbnN0OworICAgIAorICAgIHByaXZhdGU6CisgICAgUVJlY3QgbV92
aWV3cG9ydDsKKyAgICBRUmVjdCBtX3ZpZXdCb3g7CisgICAgS0NhbnZhc0NsaXBwZXJRdWFydHog
Km1fY2xpcHBlcjsKKyAgICBLQ0FsaWduIG1fYWxpZ247Cit9OwpJbmRleDoga2NhbnZhcy9kZXZp
Y2UvcXVhcnR6L0tDYW52YXNSZXNvdXJjZXNRdWFydHoubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog
L2N2cy9yb290L1NWR1N1cHBvcnQva2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNSZXNvdXJj
ZXNRdWFydHoubW0sdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNQpkaWZmIC1wIC11IC1yMS41IGtj
YW52YXMvZGV2aWNlL3F1YXJ0ei9LQ2FudmFzUmVzb3VyY2VzUXVhcnR6Lm1tCi0tLSBrY2FudmFz
L2RldmljZS9xdWFydHovS0NhbnZhc1Jlc291cmNlc1F1YXJ0ei5tbQk1IE9jdCAyMDA1IDA1OjM2
OjUxIC0wMDAwCTEuNQorKysga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNSZXNvdXJjZXNR
dWFydHoubW0JNCBOb3YgMjAwNSAyMjo0NTozMCAtMDAwMApAQCAtMjUsMTMgKzI1LDIyIEBACiAK
IAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2ltcG9ydCAiS0NhbnZhc1Jlc291cmNlc1F1YXJ0ei5o
IgogCi0jaW1wb3J0ICJLUmVuZGVyaW5nRGV2aWNlUXVhcnR6LmgiCisjaW1wb3J0IDxrZGVidWcu
aD4KKyNpbXBvcnQgPHFyZWN0Lmg+CisjaW1wb3J0IDxxdGV4dHN0cmVhbS5oPgorCiAjaW1wb3J0
ICJLQ2FudmFzRmlsdGVyUXVhcnR6LmgiCisjaW1wb3J0ICJLUmVuZGVyaW5nRGV2aWNlUXVhcnR6
LmgiCisjaW1wb3J0ICJLQ2FudmFzUmVzb3VyY2VzUXVhcnR6LmgiCiAKLSNpbXBvcnQgIktSZW5k
ZXJpbmdTdHlsZS5oIiAvLyBmb3Igc3R5bGUoKSBjYWxsCi0jaW1wb3J0ICJLQ2FudmFzLmgiIC8v
IGZvciByZWdpc3RyeSgpCisjaW1wb3J0ICJLQ2FudmFzLmgiCisjaW1wb3J0ICJLQ2FudmFzUmVn
aXN0cnkuaCIKKyNpbXBvcnQgIktDYW52YXNNYXRyaXguaCIKKyNpbXBvcnQgIktDYW52YXNDcmVh
dG9yLmgiCisjaW1wb3J0ICJLQ2FudmFzQ29udGFpbmVyLmgiCisjaW1wb3J0ICJLQ2FudmFzSW1h
Z2UuaCIKKyNpbXBvcnQgIktSZW5kZXJpbmdTdHlsZS5oIgogCiAjaW1wb3J0ICJRdWFydHpTdXBw
b3J0LmgiCiAKQEAgLTYxLDcgKzcwLDcgQEAgQ0dQYXRoUmVmIENHUGF0aEZyb21LQ1BhdGhEYXRh
TGlzdChLQ1BhdAogfQogCiAKLUtDYW52YXNDb250YWluZXJRdWFydHo6OktDYW52YXNDb250YWlu
ZXJRdWFydHooS0NhbnZhcyAqY2FudmFzLCBLUmVuZGVyaW5nU3R5bGUgKnN0eWxlKSA6IEtDYW52
YXNDb250YWluZXIoY2FudmFzLCBzdHlsZSkKK0tDYW52YXNDb250YWluZXJRdWFydHo6OktDYW52
YXNDb250YWluZXJRdWFydHooS0NhbnZhcyAqY2FudmFzLCBLUmVuZGVyaW5nU3R5bGUgKnN0eWxl
KSA6IEtDYW52YXNDb250YWluZXIoY2FudmFzLCBzdHlsZSksIG1fY2xpcHBlcigwKSwgbV9hbGln
bihBTElHTl9YTUlEWU1JRCkKIHsKIAkvL05TTG9nKEAiS0NhbnZhc0NvbnRhaW5lclF1YXJ0ejo6
S0NhbnZhc0NvbnRhaW5lclF1YXJ0eigpIik7CiB9CkBAIC04NSw2ICs5NCwyMSBAQCB2b2lkIEtD
YW52YXNDb250YWluZXJRdWFydHo6OmRyYXcoY29uc3QgCiAJaWYgKCEgc3R5bGUoKS0+Y2xpcFBh
dGhzKCkuaXNFbXB0eSgpKQogICAgICAgICBhcHBseUNsaXBQYXRoc0ZvclN0eWxlKGNvbnRleHQs
IGNhbnZhcygpLT5yZWdpc3RyeSgpLCBzdHlsZSgpLCBiYm94KCkpOyAvLyBhcHBseSBhbnkgZXhw
bGljaXQgY2xpcHMKIAkKKyAgICBpZihtX2NsaXBwZXIpCisgICAgeworICAgICAgICBtX2NsaXBw
ZXItPnJlc2V0Q2xpcERhdGEoKTsKKyAgICAgICAgS0NhbnZhc01hdHJpeCBtYXRyaXg7CisgICAg
ICAgIGlmKHBhcmVudCgpKQorICAgICAgICAgICAgbWF0cml4ID0gcGFyZW50KCktPmdldENvbXB1
dGVkVHJhbnNmb3JtKCk7CisgICAgICAgIFFSZWN0IHJlYyA9IG1hdHJpeC5xbWF0cml4KCkubWFw
UmVjdCh2aWV3cG9ydCgpKTsKKyAgICAgICAgLy9rZERlYnVnKCkgPDwgInIueCA6ICIgPDwgcmVj
LngoKSA8PCBlbmRsOworICAgICAgICAvL2tkRGVidWcoKSA8PCAici55IDogIiA8PCByZWMueSgp
IDw8IGVuZGw7CisgICAgICAgIC8va2REZWJ1ZygpIDw8ICJyLncgOiAiIDw8IHJlYy53aWR0aCgp
IDw8IGVuZGw7CisgICAgICAgIC8va2REZWJ1ZygpIDw8ICJyLmggOiAiIDw8IHJlYy5oZWlnaHQo
KSA8PCBlbmRsOworICAgICAgICBLQ1BhdGhEYXRhTGlzdCBwYXRoRGF0YSA9IG1hdHJpeC5tYXAo
S0NhbnZhc0NyZWF0b3I6OnNlbGYoKS0+Y3JlYXRlUmVjdGFuZ2xlKHZpZXdwb3J0KCkueCgpLCB2
aWV3cG9ydCgpLnkoKSwgdmlld3BvcnQoKS53aWR0aCgpLCB2aWV3cG9ydCgpLmhlaWdodCgpKSk7
CisgICAgICAgIG1fY2xpcHBlci0+YWRkQ2xpcERhdGEocGF0aERhdGEsIFJVTEVfTk9OWkVSTywg
ZmFsc2UpOworICAgIH0KKyAgICAKIAkvLyBoYW5kbGUgb3BhY2l0eS4KIAlmbG9hdCBvcGFjaXR5
ID0gc3R5bGUoKS0+b3BhY2l0eSgpOwogCWlmIChvcGFjaXR5IDwgMS4wZikgewpAQCAtMTEyLDYg
KzEzNiw0NiBAQCB2b2lkIEtDYW52YXNDb250YWluZXJRdWFydHo6OmRyYXcoY29uc3QgCiAJQ0dD
b250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0KTsKIH0KIAordm9pZCBLQ2FudmFzQ29udGFpbmVy
UXVhcnR6OjpzZXRWaWV3cG9ydChjb25zdCBRUmVjdCAmdmlld3BvcnQpCit7CisgICAgbV92aWV3
cG9ydCA9IHZpZXdwb3J0OworICAgIGlmKCFtX2NsaXBwZXIpCisgICAgeworICAgICAgICBRU3Ry
aW5nIGtleTsKKyAgICAgICAgUVRleHRTdHJlYW0ga2V5U3RyZWFtKCZrZXksIElPX1dyaXRlT25s
eSk7CisgICAgICAgIGtleVN0cmVhbSA8PCAoKHZvaWQgKikgdGhpcyk7CisgICAgICAgIG1fY2xp
cHBlciA9IHN0YXRpY19jYXN0PEtDYW52YXNDbGlwcGVyUXVhcnR6ICo+KGNhbnZhcygpLT5yZW5k
ZXJpbmdEZXZpY2UoKS0+Y3JlYXRlUmVzb3VyY2UoUlNfQ0xJUFBFUikpOworICAgICAgICBtX2Ns
aXBwZXItPnNldFZpZXdwb3J0Q2xpcHBlcih0cnVlKTsKKyAgICAgICAgY2FudmFzKCktPnJlZ2lz
dHJ5KCktPmFkZFJlc291cmNlQnlJZChrZXksIG1fY2xpcHBlcik7CisgICAgICAgIHN0eWxlKCkt
PmFkZENsaXBQYXRoKFFTdHJpbmc6OmZyb21MYXRpbjEoIiMiKSArIGtleSk7CisgICAgfQorfQor
CitRUmVjdCBLQ2FudmFzQ29udGFpbmVyUXVhcnR6Ojp2aWV3cG9ydCgpIGNvbnN0Cit7CisgICBy
ZXR1cm4gbV92aWV3cG9ydDsKK30KKwordm9pZCBLQ2FudmFzQ29udGFpbmVyUXVhcnR6OjpzZXRW
aWV3Qm94KGNvbnN0IFFSZWN0ICZ2aWV3Qm94KQoreworICAgIG1fdmlld0JveCA9IHZpZXdCb3g7
Cit9CisKK1FSZWN0IEtDYW52YXNDb250YWluZXJRdWFydHo6OnZpZXdCb3goKSBjb25zdAorewor
ICAgIHJldHVybiBtX3ZpZXdCb3g7Cit9CisKK3ZvaWQgS0NhbnZhc0NvbnRhaW5lclF1YXJ0ejo6
c2V0QWxpZ24oS0NBbGlnbiBhbGlnbikKK3sKKyAgICBtX2FsaWduID0gYWxpZ247Cit9CisKK0tD
QWxpZ24gS0NhbnZhc0NvbnRhaW5lclF1YXJ0ejo6YWxpZ24oKSBjb25zdAoreworICAgIHJldHVy
biBtX2FsaWduOworfQorCiB2b2lkIEtDYW52YXNDbGlwcGVyUXVhcnR6OjphcHBseUNsaXAoQ0dD
b250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFFSZWN0ICZiYm94KSBjb25zdAogewogCS8vTlNMb2co
QCJhcHBseUNsaXAgdG8gY29udGV4dCAlcCB3aXRoIGRhdGE6ICVwIHRoaXM6ICVpIiwgY29udGV4
dCwgJm1fY2xpcERhdGEsIHRoaXMpOwpJbmRleDoga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tSZW5k
ZXJpbmdEZXZpY2VRdWFydHouaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvU1ZHU3Vw
cG9ydC9rY2FudmFzL2RldmljZS9xdWFydHovS1JlbmRlcmluZ0RldmljZVF1YXJ0ei5oLHYKcmV0
cmlldmluZyByZXZpc2lvbiAxLjQKZGlmZiAtcCAtdSAtcjEuNCBrY2FudmFzL2RldmljZS9xdWFy
dHovS1JlbmRlcmluZ0RldmljZVF1YXJ0ei5oCi0tLSBrY2FudmFzL2RldmljZS9xdWFydHovS1Jl
bmRlcmluZ0RldmljZVF1YXJ0ei5oCTEgU2VwIDIwMDUgMDc6MzI6NTUgLTAwMDAJMS40CisrKyBr
Y2FudmFzL2RldmljZS9xdWFydHovS1JlbmRlcmluZ0RldmljZVF1YXJ0ei5oCTQgTm92IDIwMDUg
MjI6NDU6MzAgLTAwMDAKQEAgLTM3LDggKzM3LDExIEBAIGNsYXNzIEtSZW5kZXJpbmdEZXZpY2VD
b250ZXh0UXVhcnR6IDogcHUKIHsKIHB1YmxpYzoKICAgICBLUmVuZGVyaW5nRGV2aWNlQ29udGV4
dFF1YXJ0eigpIDogbV9jZ0NvbnRleHQoMCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldFdvcmxk
TWF0cml4KGNvbnN0IEtDYW52YXNNYXRyaXggJndvcmxkTWF0cml4KTsKLSAgICB2aXJ0dWFsIEtD
YW52YXNNYXRyaXggd29ybGRNYXRyaXgoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEtDYW52YXNNYXRy
aXggY29uY2F0Q1RNKGNvbnN0IEtDYW52YXNNYXRyaXggJndvcmxkTWF0cml4KTsKKyAgICB2aXJ0
dWFsIEtDYW52YXNNYXRyaXggY3RtKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldENUTShj
b25zdCBLQ2FudmFzTWF0cml4ICZ3b3JsZE1hdHJpeCk7CisgICAgdmlydHVhbCBLQ2FudmFzTWF0
cml4IHJvb3RDVE0oKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Um9vdENUTShjb25zdCBL
Q2FudmFzTWF0cml4ICZ3b3JsZE1hdHJpeCk7CiAgICAgCiAgICAgdmlydHVhbCBRUmVjdCBtYXBG
cm9tVmlzdWFsKGNvbnN0IFFSZWN0ICZyZWN0KTsKICAgICB2aXJ0dWFsIFFSZWN0IG1hcFRvVmlz
dWFsKGNvbnN0IFFSZWN0ICZyZWN0KTsKQEAgLTg4LDggKzkxLDggQEAgcHVibGljOgogICAgIC8v
IGZpbHRlcnMgKG1vc3RseSBkZWJ1Z2dpbmcpCiAgICAgc3RhdGljIGJvb2wgZmlsdGVyc0VuYWJs
ZWQoKTsKICAgICBzdGF0aWMgdm9pZCBzZXRGaWx0ZXJzRW5hYmxlZChib29sIGVuYWJsZWQpOwot
ICAgICAgICBzdGF0aWMgYm9vbCBLUmVuZGVyaW5nRGV2aWNlUXVhcnR6OjpoYXJkd2FyZVJlbmRl
cmluZ0VuYWJsZWQoKTsKLSAgICAgICAgc3RhdGljIHZvaWQgS1JlbmRlcmluZ0RldmljZVF1YXJ0
ejo6c2V0SGFyZHdhcmVSZW5kZXJpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCk7CisgICAgc3RhdGlj
IGJvb2wgS1JlbmRlcmluZ0RldmljZVF1YXJ0ejo6aGFyZHdhcmVSZW5kZXJpbmdFbmFibGVkKCk7
CisgICAgc3RhdGljIHZvaWQgS1JlbmRlcmluZ0RldmljZVF1YXJ0ejo6c2V0SGFyZHdhcmVSZW5k
ZXJpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCk7CiAgICAgICAgICAgICAKIH07CiAKSW5kZXg6IGtj
YW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVyaW5nRGV2aWNlUXVhcnR6Lm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
UkNTIGZpbGU6IC9jdnMvcm9vdC9TVkdTdXBwb3J0L2tjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVu
ZGVyaW5nRGV2aWNlUXVhcnR6Lm1tLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjQKZGlmZiAtcCAt
dSAtcjEuNCBrY2FudmFzL2RldmljZS9xdWFydHovS1JlbmRlcmluZ0RldmljZVF1YXJ0ei5tbQot
LS0ga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tSZW5kZXJpbmdEZXZpY2VRdWFydHoubW0JNSBPY3Qg
MjAwNSAwNTozNjo1MiAtMDAwMAkxLjQKKysrIGtjYW52YXMvZGV2aWNlL3F1YXJ0ei9LUmVuZGVy
aW5nRGV2aWNlUXVhcnR6Lm1tCTQgTm92IDIwMDUgMjI6NDU6MzEgLTAwMDAKQEAgLTUyLDE2ICs1
MiwzNSBAQCBLQ2FudmFzUXVhcnR6UGF0aERhdGE6On5LQ2FudmFzUXVhcnR6UGF0CiAJQ0dQYXRo
UmVsZWFzZShwYXRoKTsKIH0KIAorS0NhbnZhc01hdHJpeCBLUmVuZGVyaW5nRGV2aWNlQ29udGV4
dFF1YXJ0ejo6Y29uY2F0Q1RNKGNvbnN0IEtDYW52YXNNYXRyaXggJndvcmxkTWF0cml4KQorewor
ICAgIEtDYW52YXNNYXRyaXggcmV0ID0gY3RtKCk7CisgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gd01h
dHJpeCA9IENHQWZmaW5lVHJhbnNmb3JtTWFrZSh3b3JsZE1hdHJpeC5hKCksIHdvcmxkTWF0cml4
LmIoKSwgd29ybGRNYXRyaXguYygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB3b3JsZE1hdHJpeC5kKCksIHdvcmxkTWF0cml4LmUoKSwgd29y
bGRNYXRyaXguZigpKTsKKyAgICBDR0NvbnRleHRDb25jYXRDVE0obV9jZ0NvbnRleHQsIHdNYXRy
aXgpOworICAgIHJldHVybiByZXQ7Cit9CisKK0tDYW52YXNNYXRyaXggS1JlbmRlcmluZ0Rldmlj
ZUNvbnRleHRRdWFydHo6OmN0bSgpIGNvbnN0Cit7CisgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gY29u
dGV4dENUTSA9IENHQ29udGV4dEdldENUTShtX2NnQ29udGV4dCk7CisgICAgcmV0dXJuIEtDYW52
YXNNYXRyaXgoY29udGV4dENUTS5hLCBjb250ZXh0Q1RNLmIsIGNvbnRleHRDVE0uYywgY29udGV4
dENUTS5kLCBjb250ZXh0Q1RNLnR4LCBjb250ZXh0Q1RNLnR5KTsKK30KKwordm9pZCBLUmVuZGVy
aW5nRGV2aWNlQ29udGV4dFF1YXJ0ejo6c2V0Q1RNKGNvbnN0IEtDYW52YXNNYXRyaXggJndvcmxk
TWF0cml4KQoreworICAgIE5TTG9nKEAic2V0Q1RNIGlnbm9yZWQgZm9yIFF1YXJ0eiIpOworfQog
Ci12b2lkIEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0UXVhcnR6OjpzZXRXb3JsZE1hdHJpeChjb25z
dCBLQ2FudmFzTWF0cml4ICZ3b3JsZE1hdHJpeCkKK0tDYW52YXNNYXRyaXggS1JlbmRlcmluZ0Rl
dmljZUNvbnRleHRRdWFydHo6OnJvb3RDVE0oKSBjb25zdAogewotCU5TTG9nKEAic2V0V29ybGRN
YXRyaXggaWdub3JlZCBmb3IgUXVhcnR6Iik7CisgICAgTlNMb2coQCJ3b3JsZE1hdHJpeCBpZ25v
cmVkIGZvciBRdWFydHoiKTsKKyAgICByZXR1cm4gS0NhbnZhc01hdHJpeCgpOwogfQogCi1LQ2Fu
dmFzTWF0cml4IEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0UXVhcnR6Ojp3b3JsZE1hdHJpeCgpIGNv
bnN0Cit2b2lkIEtSZW5kZXJpbmdEZXZpY2VDb250ZXh0UXVhcnR6OjpzZXRSb290Q1RNKGNvbnN0
IEtDYW52YXNNYXRyaXggJndvcmxkTWF0cml4KQogewotCU5TTG9nKEAid29ybGRNYXRyaXggaWdu
b3JlZCBmb3IgUXVhcnR6Iik7Ci0JcmV0dXJuIEtDYW52YXNNYXRyaXgoKTsKKyAgICBOU0xvZyhA
InNldFJvb3RDVE0gaWdub3JlZCBmb3IgUXVhcnR6Iik7CiB9CiAJCiBRUmVjdCBLUmVuZGVyaW5n
RGV2aWNlQ29udGV4dFF1YXJ0ejo6bWFwRnJvbVZpc3VhbChjb25zdCBRUmVjdCAmcmVjdCkKSW5k
ZXg6IGtzdmcyL3N2Zy9TVkdTVkdFbGVtZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog
L2N2cy9yb290L1NWR1N1cHBvcnQva3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnRJbXBsLmNwcCx2CnJl
dHJpZXZpbmcgcmV2aXNpb24gMS45CmRpZmYgLXAgLXUgLXIxLjkga3N2ZzIvc3ZnL1NWR1NWR0Vs
ZW1lbnRJbXBsLmNwcAotLS0ga3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnRJbXBsLmNwcAkxMyBPY3Qg
MjAwNSAwODoyOToyMCAtMDAwMAkxLjkKKysrIGtzdmcyL3N2Zy9TVkdTVkdFbGVtZW50SW1wbC5j
cHAJNCBOb3YgMjAwNSAyMjo0NTozNiAtMDAwMApAQCAtNTUsNiArNTUsOCBAQAogI2luY2x1ZGUg
IlNWR0FuaW1hdGVkUmVjdEltcGwuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aEltcGwu
aCIKICNpbmNsdWRlICJLQ2FudmFzUmVuZGVyaW5nU3R5bGUuaCIKKyNpbmNsdWRlICJTVkdQcmVz
ZXJ2ZUFzcGVjdFJhdGlvSW1wbC5oIgorI2luY2x1ZGUgIlNWR0FuaW1hdGVkUHJlc2VydmVBc3Bl
Y3RSYXRpb0ltcGwuaCIKIAogI2luY2x1ZGUgPHEzcGFpbnRkZXZpY2VtZXRyaWNzLmg+CiAjaW5j
bHVkZSA8cXRleHRzdHJlYW0uaD4KQEAgLTY2LDggKzY4LDYgQEAgU1ZHU1ZHRWxlbWVudEltcGw6
OlNWR1NWR0VsZW1lbnRJbXBsKEtETwogICBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkSW1w
bCgpLCBTVkdMb2NhdGFibGVJbXBsKCksIFNWR0ZpdFRvVmlld0JveEltcGwoKSwKICAgU1ZHWm9v
bUFuZFBhbkltcGwoKSwgS0RPTTo6RG9jdW1lbnRFdmVudEltcGwoKQogewotICAgIG1fY2xpcHBl
ciA9IDA7Ci0KICAgICBtX3VzZUN1cnJlbnRWaWV3ID0gZmFsc2U7CiAKICAgICBtX3ggPSBtX3kg
PSBtX3dpZHRoID0gbV9oZWlnaHQgPSAwOwpAQCAtMTMyLDEyICsxMzIsMTIgQEAgdm9pZCBTVkdT
VkdFbGVtZW50SW1wbDo6c2V0Q29udGVudFNjcmlwdAogCiBLRE9NOjpET01TdHJpbmdJbXBsICpT
VkdTVkdFbGVtZW50SW1wbDo6Y29udGVudFN0eWxlVHlwZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IHRyeUdldEF0dHJpYnV0ZShLRE9NOjpET01TdHJpbmcoImNvbnRlbnRTdHlsZVR5cGUiKS5oYW5k
bGUoKSwgS0RPTTo6RE9NU3RyaW5nKCJ0ZXh0L2NzcyIpLmhhbmRsZSgpKTsKKyAgICByZXR1cm4g
dHJ5R2V0QXR0cmlidXRlKG5ldyBLRE9NOjpET01TdHJpbmdJbXBsKCJjb250ZW50U3R5bGVUeXBl
IiksIG5ldyBLRE9NOjpET01TdHJpbmdJbXBsKCJ0ZXh0L2NzcyIpKTsKIH0KIAogdm9pZCBTVkdT
VkdFbGVtZW50SW1wbDo6c2V0Q29udGVudFN0eWxlVHlwZShLRE9NOjpET01TdHJpbmdJbXBsICp0
eXBlKQogewotICAgIHNldEF0dHJpYnV0ZShLRE9NOjpET01TdHJpbmcoImNvbnRlbnRTdHlsZVR5
cGUiKS5oYW5kbGUoKSwgdHlwZSk7CisgICAgc2V0QXR0cmlidXRlKG5ldyBLRE9NOjpET01TdHJp
bmdJbXBsKCJjb250ZW50U3R5bGVUeXBlIiksIHR5cGUpOwogfQogCiBTVkdSZWN0SW1wbCAqU1ZH
U1ZHRWxlbWVudEltcGw6OnZpZXdwb3J0KCkgY29uc3QKQEAgLTQ4MCw0OCArNDgwLDYgQEAgU1ZH
TWF0cml4SW1wbCAqU1ZHU1ZHRWxlbWVudEltcGw6OmdldFNjcgogICAgIHJldHVybiBtYXQ7CiB9
CiAKLVFTdHJpbmcgU1ZHU1ZHRWxlbWVudEltcGw6OmFkanVzdFZpZXdwb3J0Q2xpcHBpbmcoKSBj
b25zdAotewotICAgIFFTdHJpbmcga2V5OwotICAgIFFUZXh0U3RyZWFtIGtleVN0cmVhbSgma2V5
LCBJT19Xcml0ZU9ubHkpOwotICAgIGtleVN0cmVhbSA8PCAoKHZvaWQgKikgdGhpcyk7Ci0KLSAg
ICBpZihyZW5kZXJTdHlsZSgpLT5vdmVyZmxvdygpID09IEtET006Ok9GX1ZJU0lCTEUpCi0gICAg
ICAgIHJldHVybiBRU3RyaW5nKCk7Ci0KLSAgICBpZighbV9jbGlwcGVyKQotICAgIHsKLSAgICAg
ICAgU1ZHRG9jdW1lbnRJbXBsICpkb2MgPSBzdGF0aWNfY2FzdDxTVkdEb2N1bWVudEltcGwgKj4o
b3duZXJEb2N1bWVudCgpKTsKLSAgICAgICAgS0NhbnZhcyAqY2FudmFzID0gKGRvYyA/IGRvYy0+
Y2FudmFzKCkgOiAwKTsKLSAgICAgICAgaWYoIWNhbnZhcykKLSAgICAgICAgICAgIHJldHVybiBR
U3RyaW5nOjpudWxsOwotCi0gICAgICAgIG1fY2xpcHBlciA9IHN0YXRpY19jYXN0PEtDYW52YXND
bGlwcGVyICo+KGNhbnZhcy0+cmVuZGVyaW5nRGV2aWNlKCktPmNyZWF0ZVJlc291cmNlKFJTX0NM
SVBQRVIpKTsKLSAgICAgICAgbV9jbGlwcGVyLT5zZXRWaWV3cG9ydENsaXBwZXIodHJ1ZSk7Ci0K
LSAgICAgICAgY2FudmFzLT5yZWdpc3RyeSgpLT5hZGRSZXNvdXJjZUJ5SWQoa2V5LCBtX2NsaXBw
ZXIpOwotICAgIH0KLSAgICBlbHNlCi0gICAgICAgIG1fY2xpcHBlci0+cmVzZXRDbGlwRGF0YSgp
OwotCi0gICAgZmxvYXQgX3ggPSB4KCktPmJhc2VWYWwoKS0+dmFsdWUoKTsKLSAgICBmbG9hdCBf
eSA9IHkoKS0+YmFzZVZhbCgpLT52YWx1ZSgpOwotICAgIGZsb2F0IF93aWR0aCA9IHdpZHRoKCkt
PmJhc2VWYWwoKS0+dmFsdWUoKTsKLSAgICBmbG9hdCBfaGVpZ2h0ID0gaGVpZ2h0KCktPmJhc2VW
YWwoKS0+dmFsdWUoKTsKLQotICAgIC8vIFdlIGhhdmUgdG8gYXBwbHkgdGhlIG1hdHJpeCB0cmFu
c2Zvcm1hdGlvbiBoZXJlLCBhcyB0aGlzIDxzdmc+IG1heSBiZSBzb21lCi0gICAgLy8gaW5uZXIg
dmlld3BvcnQsIHdoaWNoIGhhcyBhIGNlcnRhaW4gJ2N0bSBtYXRyaXgnLCB0aGF0IHdlIGhhdmUg
dG8gcmVzcGVjdC4KLSAgICBTVkdNYXRyaXhJbXBsICpjdG0gPSBTVkdMb2NhdGFibGVJbXBsOjpn
ZXRTY3JlZW5DVE0oKTsKLQotICAgIEtDYW52YXNNYXRyaXggbWF0cml4ID0gY3RtLT5xbWF0cml4
KCk7Ci0gICAgS0NQYXRoRGF0YUxpc3QgcGF0aERhdGEgPSBtYXRyaXgubWFwKEtDYW52YXNDcmVh
dG9yOjpzZWxmKCktPmNyZWF0ZVJlY3RhbmdsZShfeCwgX3ksIF93aWR0aCwgX2hlaWdodCkpOwot
ICAgIG1fY2xpcHBlci0+YWRkQ2xpcERhdGEocGF0aERhdGEsIFJVTEVfTk9OWkVSTywgZmFsc2Up
OwotCi0gICAgY3RtLT5kZXJlZigpOwotCi0gICAgcmV0dXJuIGtleTsKLX0KLQogS0NhbnZhc0l0
ZW0gKlNWR1NWR0VsZW1lbnRJbXBsOjpjcmVhdGVDYW52YXNJdGVtKEtDYW52YXMgKmNhbnZhcywg
S1JlbmRlcmluZ1N0eWxlICpzdHlsZSkgY29uc3QKIHsKICAgICBLQ2FudmFzSXRlbSAqaXRlbSA9
IEtDYW52YXNDcmVhdG9yOjpzZWxmKCktPmNyZWF0ZUNvbnRhaW5lcihjYW52YXMsIHN0eWxlKTsK
QEAgLTUzNyw5ICs0OTUsMTcgQEAgS0NhbnZhc0l0ZW0gKlNWR1NWR0VsZW1lbnRJbXBsOjpjcmVh
dGVDYQogCiB2b2lkIFNWR1NWR0VsZW1lbnRJbXBsOjpmaW5hbGl6ZVN0eWxlKEtDYW52YXNSZW5k
ZXJpbmdTdHlsZSAqc3R5bGUsIGJvb2wpCiB7Ci0gICAgUVN0cmluZyByZWZlcmVuY2UgPSBhZGp1
c3RWaWV3cG9ydENsaXBwaW5nKCk7Ci0gICAgaWYoIXJlZmVyZW5jZS5pc0VtcHR5KCkpCi0gICAg
ICAgIHN0eWxlLT5hZGRDbGlwUGF0aChRU3RyaW5nOjpmcm9tTGF0aW4xKCIjIikgKyByZWZlcmVu
Y2UpOworICAgIGlmKHJlbmRlclN0eWxlKCktPm92ZXJmbG93KCkgPT0gS0RPTTo6T0ZfVklTSUJM
RSkgcmV0dXJuOworCisgICAgZmxvYXQgX3ggPSB4KCktPmJhc2VWYWwoKS0+dmFsdWUoKTsKKyAg
ICBmbG9hdCBfeSA9IHkoKS0+YmFzZVZhbCgpLT52YWx1ZSgpOworICAgIGZsb2F0IF93aWR0aCA9
IHdpZHRoKCktPmJhc2VWYWwoKS0+dmFsdWUoKTsKKyAgICBmbG9hdCBfaGVpZ2h0ID0gaGVpZ2h0
KCktPmJhc2VWYWwoKS0+dmFsdWUoKTsKKworICAgIHN0YXRpY19jYXN0PEtDYW52YXNDb250YWlu
ZXIgKj4oY2FudmFzSXRlbSgpKS0+c2V0Vmlld3BvcnQoUVJlY3QoKGludClfeCwgKGludClfeSwg
KGludClfd2lkdGgsIChpbnQpX2hlaWdodCkpOworICAgIHN0YXRpY19jYXN0PEtDYW52YXNDb250
YWluZXIgKj4oY2FudmFzSXRlbSgpKS0+c2V0Vmlld0JveChRUmVjdCgoaW50KXZpZXdCb3goKS0+
YmFzZVZhbCgpLT54KCksIChpbnQpdmlld0JveCgpLT5iYXNlVmFsKCktPnkoKSwgKGludCl2aWV3
Qm94KCktPmJhc2VWYWwoKS0+d2lkdGgoKSwgKGludCl2aWV3Qm94KCktPmJhc2VWYWwoKS0+aGVp
Z2h0KCkpKTsKKyAgICBzdGF0aWNfY2FzdDxLQ2FudmFzQ29udGFpbmVyICo+KGNhbnZhc0l0ZW0o
KSktPnNldEFsaWduKEtDQWxpZ24ocHJlc2VydmVBc3BlY3RSYXRpbygpLT5iYXNlVmFsKCktPmFs
aWduKCkgLSAxKSk7CisgICAgc3RhdGljX2Nhc3Q8S0NhbnZhc0NvbnRhaW5lciAqPihjYW52YXNJ
dGVtKCkpLT5zZXRTbGljZShwcmVzZXJ2ZUFzcGVjdFJhdGlvKCktPmJhc2VWYWwoKS0+bWVldE9y
U2xpY2UoKSA9PSBTVkdfTUVFVE9SU0xJQ0VfU0xJQ0UpOwogfQogCiB2b2lkIFNWR1NWR0VsZW1l
bnRJbXBsOjpzZXRab29tQW5kUGFuKHVuc2lnbmVkIHNob3J0IHpvb21BbmRQYW4pCkluZGV4OiBr
c3ZnMi9zdmcvU1ZHU1ZHRWxlbWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jv
b3QvU1ZHU3VwcG9ydC9rc3ZnMi9zdmcvU1ZHU1ZHRWxlbWVudEltcGwuaCx2CnJldHJpZXZpbmcg
cmV2aXNpb24gMS43CmRpZmYgLXAgLXUgLXIxLjcga3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnRJbXBs
LmgKLS0tIGtzdmcyL3N2Zy9TVkdTVkdFbGVtZW50SW1wbC5oCTI4IFNlcCAyMDA1IDA1OjA2OjA4
IC0wMDAwCTEuNworKysga3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnRJbXBsLmgJNCBOb3YgMjAwNSAy
Mjo0NTozNiAtMDAwMApAQCAtNDAsOCArNDAsNiBAQCBuYW1lc3BhY2UgS0RPTQogICAgIGNsYXNz
IERvY3VtZW50UHRyOwogfTsKIAotY2xhc3MgS0NhbnZhc0NsaXBwZXI7Ci0KIG5hbWVzcGFjZSBL
U1ZHCiB7CiAgICAgY2xhc3MgU1ZHUmVjdEltcGw7CkBAIC0xMzIsOCArMTMwLDYgQEAgbmFtZXNw
YWNlIEtTVkcKICAgICAgICAgdmlydHVhbCBTVkdNYXRyaXhJbXBsICpnZXRDVE0oKSBjb25zdDsK
ICAgICAgICAgdmlydHVhbCBTVkdNYXRyaXhJbXBsICpnZXRTY3JlZW5DVE0oKSBjb25zdDsKIAot
ICAgICAgICB2aXJ0dWFsIFFTdHJpbmcgYWRqdXN0Vmlld3BvcnRDbGlwcGluZygpIGNvbnN0Owot
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpbXBsZW1lbnRzQ2FudmFzSXRlbSgpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KICAgICAgICAgdmlydHVhbCBLQ2FudmFzSXRlbSAqY3JlYXRlQ2FudmFzSXRl
bShLQ2FudmFzICpjYW52YXMsIEtSZW5kZXJpbmdTdHlsZSAqc3R5bGUpIGNvbnN0OwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZmluYWxpemVTdHlsZShLQ2FudmFzUmVuZGVyaW5nU3R5bGUgKnN0eWxl
LCBib29sIG5lZWRGaWxsU3Ryb2tlVXBkYXRlID0gdHJ1ZSk7CkBAIC0xNDgsOCArMTQ0LDYgQEAg
bmFtZXNwYWNlIEtTVkcKICAgICAgICAgbXV0YWJsZSBTVkdBbmltYXRlZExlbmd0aEltcGwgKm1f
aGVpZ2h0OwogCiAgICAgICAgIGJvb2wgbV91c2VDdXJyZW50VmlldzsKLQotICAgICAgICBtdXRh
YmxlIEtDYW52YXNDbGlwcGVyICptX2NsaXBwZXI7CiAgICAgfTsKIH07CiAK
</data>
<flag name="review"
          id="822"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>