<?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>43929</bug_id>
          
          <creation_ts>2010-08-12 12:40:11 -0700</creation_ts>
          <short_desc>Use SVGPathByteStream to animate SVGPath</short_desc>
          <delta_ts>2010-08-13 03:15:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Schulze">krit</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>263915</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-08-12 12:40:11 -0700</bug_when>
    <thetext>Use SVGPathByteStream to animate SVGPath.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263931</commentid>
    <comment_count>1</comment_count>
      <attachid>64250</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-08-12 13:15:16 -0700</bug_when>
    <thetext>Created attachment 64250
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264235</commentid>
    <comment_count>2</comment_count>
      <attachid>64250</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-08-13 01:23:03 -0700</bug_when>
    <thetext>Comment on attachment 64250
Patch

WebCore/ChangeLog:9
 +          the starting point to the end point according to the current process.
s/process/progress value/

WebCore/ChangeLog:10
 +          Cleanup SVGPathSegList and delete the now needless blending code.
Cleanup SVGPathSegList, by removing the unnecessary legacy blending code.

WebCore/ChangeLog:55452
 +  == Rolled over to ChangeLog-2010-05-24 ==        No new tests because no functional changes.
This looks wrong.

WebCore/svg/SVGAnimateElement.cpp:34
 +  #include &lt;stdio.h&gt;
Leftover.

WebCore/svg/SVGAnimateElement.cpp:136
 +              ASSERT(m_fromPath);
Maybe add an additional ASSERT(percentage &gt;= 0) to assure percentage is always positive.

WebCore/svg/SVGPathBlender.cpp:201
 +          m_fromSource-&gt;parseSVGSegmentType(fromCommand);
You should check the return boolean, and abort if there&apos;s a problem.

WebCore/svg/SVGPathBlender.cpp:203
 +          m_toSource-&gt;parseSVGSegmentType(toCommand);
Ditto.

WebCore/svg/SVGPathBlender.cpp:204
 +          if (fromCommand != toCommand)
Because this line wouldn&apos;t catch it, if fromCommand and toCommand are both Unknown.

WebCore/svg/SVGPathBlender.cpp:267
 +              return false;
I&apos;m aware this would catch it, but I think the explicit check of the parseSVGSegmentType return values is cleaner.

WebCore/svg/SVGPathBlender.cpp:270
 +              break;
Also check wheter m_toSource hasMoreData, also abort if not.

WebCore/svg/SVGPathBlender.cpp:32
 +      , m_consumer(0)
Please also use , m_progress(0) here, to avoid confusion.

r=me, if you fix all issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264267</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-08-13 03:15:45 -0700</bug_when>
    <thetext>Committed r65312: &lt;http://trac.webkit.org/changeset/65312&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64250</attachid>
            <date>2010-08-12 13:15:16 -0700</date>
            <delta_ts>2010-08-13 01:23:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43929-20100812221514.patch</filename>
            <type>text/plain</type>
            <size>40974</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NTI2MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDYgKzEsNjIgQEAKIDIwMTAtMDgtMTIgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9y
Zz4KIAotICAgICAgICBVbnJldmlld2VkIHNvcnQgb2YgWENvZGUgcHJvamVjdCBmaWxlLgorICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgU1ZHUGF0aEJ5
dGVTdHJlYW0gdG8gYW5pbWF0ZSBTVkdQYXRoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00MzkyOQorCisgICAgICAgIFVzZSBTVkdQYXRoQnl0ZVN0cmVh
bSB0byBwZXJmb3JtIGFuaW1hdGlvbnMgb2YgUGF0aHMuIFNWR1BhdGhCbGVuZGVyIGJsZW5kcwor
ICAgICAgICB0aGUgc3RhcnRpbmcgcG9pbnQgdG8gdGhlIGVuZCBwb2ludCBhY2NvcmRpbmcgdG8g
dGhlIGN1cnJlbnQgcHJvY2Vzcy4KKyAgICAgICAgQ2xlYW51cCBTVkdQYXRoU2VnTGlzdCBhbmQg
ZGVsZXRlIHRoZSBub3cgbmVlZGxlc3MgYmxlbmRpbmcgY29kZS4KKworICAgICAgICBObyBuZXcg
dGVzdHMgYmVjYXVzZSBubyBmdW5jdGlvbmFsIGNoYW5nZXMuCisKKyAgICAgICAgKiBBbmRyb2lk
Lm1rOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFt
OgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAg
ICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogc3ZnL1NWR0FsbEluT25lLmNwcDoK
KyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQW5pbWF0ZUVsZW1lbnQ6OlNWR0FuaW1hdGVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OnJlc2V0VG9CYXNlVmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OmFwcGx5UmVzdWx0c1RvVGFyZ2V0KToK
KyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHUGF0
aEJsZW5kZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhCbGVuZGVyOjpT
VkdQYXRoQmxlbmRlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoQmxlbmRlcjo6flNWR1Bh
dGhCbGVuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhCbGVuZGVyOjpibGVuZEFuaW1h
dGVkRmxvYXQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEJsZW5kZXI6OmJsZW5kQW5pbWF0
ZWRGbG9hdFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhCbGVuZGVyOjpibGVuZE1v
dmVUb1NlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEJsZW5kZXI6OmJsZW5kTGlu
ZVRvU2VnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoQmxlbmRlcjo6YmxlbmRMaW5l
VG9Ib3Jpem9udGFsU2VnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoQmxlbmRlcjo6
YmxlbmRMaW5lVG9WZXJ0aWNhbFNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEJs
ZW5kZXI6OmJsZW5kQ3VydmVUb0N1YmljU2VnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQ
YXRoQmxlbmRlcjo6YmxlbmRDdXJ2ZVRvQ3ViaWNTbW9vdGhTZWdtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BhdGhCbGVuZGVyOjpibGVuZEN1cnZlVG9RdWFkcmF0aWNTZWdtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1BhdGhCbGVuZGVyOjpibGVuZEN1cnZlVG9RdWFkcmF0aWNTbW9v
dGhTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhCbGVuZGVyOjpibGVuZEFyY1Rv
U2VnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoQmxlbmRlcjo6YmxlbmRBbmltYXRl
ZFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEJsZW5kZXI6OmNsZWFudXApOgorICAg
ICAgICAqIHN2Zy9TVkdQYXRoQmxlbmRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvU1ZHUGF0
aFBhcnNlckZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2xvYmFsU1ZHUGF0aEJsZW5k
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFBhcnNlckZhY3Rvcnk6OmJ1aWxkQW5pbWF0
ZWRTVkdQYXRoQnl0ZVN0cmVhbSk6CisgICAgICAgICogc3ZnL1NWR1BhdGhQYXJzZXJGYWN0b3J5
Lmg6CisgICAgICAgICogc3ZnL1NWR1BhdGhTZWdMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1BhdGhTZWdMaXN0OjpnZXRQYXRoU2VnQXRMZW5ndGgpOgorICAgICAgICAqIHN2Zy9TVkdQ
YXRoU2VnTGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xpc3Q6OmNyZWF0ZSk6
CisgICAgICAgICogc3ZnL1NWR1BvaW50TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGp1
c3RBbmltYXRlZFZhbHVlKToKKworMjAxMC0wOC0xMiAgRGlyayBTY2h1bHplICA8a3JpdEB3ZWJr
aXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQgc29ydCBvZiBYY29kZSBwcm9qZWN0IGZpbGUu
CiAKICAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CiAKQEAgLTU1
MzkzLDQgKzU1NDQ5LDQgQEAKICAgICAgICAgKFdlYkNvcmU6OlNlZ21lbnRlZFN0cmluZzo6bG9v
a0FoZWFkSWdub3JpbmdDYXNlKToKICAgICAgICAgKFdlYkNvcmU6OlNlZ21lbnRlZFN0cmluZzo6
YWR2YW5jZUFuZEFTU0VSVElnbm9yaW5nQ2FzZSk6CiAKLT09IFJvbGxlZCBvdmVyIHRvIENoYW5n
ZUxvZy0yMDEwLTA1LTI0ID09Cis9PSBSb2xsZWQgb3ZlciB0byBDaGFuZ2VMb2ctMjAxMC0wNS0y
NCA9PSAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2Ugbm8gZnVuY3Rpb25hbCBjaGFuZ2VzLgpJ
bmRleDogV2ViQ29yZS9BbmRyb2lkLm1rCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQW5kcm9pZC5t
awkocmV2aXNpb24gNjUyNjApCisrKyBXZWJDb3JlL0FuZHJvaWQubWsJKHdvcmtpbmcgY29weSkK
QEAgLTg3MCw2ICs4NzAsNyBAQCBMT0NBTF9TUkNfRklMRVMgOj0gJChMT0NBTF9TUkNfRklMRVMp
IFwKIAlzdmcvU1ZHTnVtYmVyTGlzdC5jcHAgXAogCXN2Zy9TVkdQYWludC5jcHAgXAogCXN2Zy9T
VkdQYXJzZXJVdGlsaXRpZXMuY3BwIFwKKwlzdmcvU1ZHUGF0aEJsZW5kZXIuY3BwIFwKIAlzdmcv
U1ZHUGF0aEJ1aWxkZXIuY3BwIFwKIAlzdmcvU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyLmNwcCBc
CiAJc3ZnL1NWR1BhdGhCeXRlU3RyZWFtU291cmNlLmNwcCBcCkluZGV4OiBXZWJDb3JlL0NNYWtl
TGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9u
IDY1MjYwKQorKysgV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTY3
OSw2ICsxNjc5LDcgQEAgSUYgKEVOQUJMRV9TVkcpCiAgICAgICAgIHN2Zy9TVkdOdW1iZXJMaXN0
LmNwcAogICAgICAgICBzdmcvU1ZHUGFpbnQuY3BwCiAgICAgICAgIHN2Zy9TVkdQYXJzZXJVdGls
aXRpZXMuY3BwCisgICAgICAgIHN2Zy9TVkdQYXRoQmxlbmRlci5jcHAKICAgICAgICAgc3ZnL1NW
R1BhdGhCdWlsZGVyLmNwcAogICAgICAgICBzdmcvU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyLmNw
cAogICAgICAgICBzdmcvU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2UuY3BwCkluZGV4OiBXZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHJl
dmlzaW9uIDY1MjYwKQorKysgV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpA
QCAtNDA3OSw2ICs0MDc5LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3N2Zy9T
VkdQYWludC5oIFwKIAlXZWJDb3JlL3N2Zy9TVkdQYXJzZXJVdGlsaXRpZXMuY3BwIFwKIAlXZWJD
b3JlL3N2Zy9TVkdQYXJzZXJVdGlsaXRpZXMuaCBcCisJV2ViQ29yZS9zdmcvU1ZHUGF0aEJsZW5k
ZXIuY3BwIFwKKwlXZWJDb3JlL3N2Zy9TVkdQYXRoQmxlbmRlci5oIFwKIAlXZWJDb3JlL3N2Zy9T
VkdQYXRoQnVpbGRlci5jcHAgXAogCVdlYkNvcmUvc3ZnL1NWR1BhdGhCdWlsZGVyLmggXAogCVdl
YkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFtLmggXApJbmRleDogV2ViQ29yZS9XZWJDb3JlLmd5
cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDY1MjYwKQor
KysgV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTM4MjgsNiArMzgyOCw4
IEBACiAgICAgICAgICAgICAnc3ZnL1NWR1BhaW50LmgnLAogICAgICAgICAgICAgJ3N2Zy9TVkdQ
YXJzZXJVdGlsaXRpZXMuY3BwJywKICAgICAgICAgICAgICdzdmcvU1ZHUGFyc2VyVXRpbGl0aWVz
LmgnLAorICAgICAgICAgICAgJ3N2Zy9TVkdQYXRoQmxlbmRlci5jcHAnLAorICAgICAgICAgICAg
J3N2Zy9TVkdQYXRoQmxlbmRlci5oJywKICAgICAgICAgICAgICdzdmcvU1ZHUGF0aEJ1aWxkZXIu
Y3BwJywKICAgICAgICAgICAgICdzdmcvU1ZHUGF0aEJ1aWxkZXIuaCcsCiAgICAgICAgICAgICAn
c3ZnL1NWR1BhdGhCeXRlU3RyZWFtLmgnLApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnBybwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA2NTI2MCkKKysrIFdlYkNv
cmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTI4NjEsNiArMjg2MSw3IEBAIGNvbnRh
aW5zKERFRklORVMsIEVOQUJMRV9TVkc9MSkgewogICAgICAgICBzdmcvU1ZHTnVtYmVyTGlzdC5j
cHAgXAogICAgICAgICBzdmcvU1ZHUGFpbnQuY3BwIFwKICAgICAgICAgc3ZnL1NWR1BhcnNlclV0
aWxpdGllcy5jcHAgXAorICAgICAgICBzdmcvU1ZHUGF0aEJsZW5kZXIuY3BwIFwKICAgICAgICAg
c3ZnL1NWR1BhdGhCdWlsZGVyLmNwcCBcCiAgICAgICAgIHN2Zy9TVkdQYXRoQnl0ZVN0cmVhbUJ1
aWxkZXIuY3BwIFwKICAgICAgICAgc3ZnL1NWR1BhdGhCeXRlU3RyZWFtU291cmNlLmNwcCBcCklu
ZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDY1MjYwKQor
KysgV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpA
QCAtNDkzNDksNiArNDkzNDksMTAgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQor
CQkJCVJlbGF0aXZlUGF0aD0iLi5cc3ZnXFNWR1BhdGhCbGVuZGVyLmgiDQorCQkJCT4NCisJCQk8
L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdmdcU1ZHUGF0aEJ1aWxk
ZXIuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNjUyNjEpCisrKyBXZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTQ5Nyw2ICsxNDk3
LDggQEAKIAkJODRCNkI5NzgxMjBGMTNFNTAwQjhFRkFGIC8qIFNWR1BhdGhTZWdMaXN0U291cmNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NEI2Qjk3
NjEyMEYxM0U1MDBCOEVGQUYgLyogU1ZHUGF0aFNlZ0xpc3RTb3VyY2UuaCAqLzsgfTsKIAkJODRC
REExNkIxMTM1OEQyQTAwREJGNjRDIC8qIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NEJEQTE2OTExMzU4
RDJBMDBEQkY2NEMgLyogUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcCAqLzsgfTsKIAkJODRC
REExNkMxMTM1OEQyQTAwREJGNjRDIC8qIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODRCREExNkExMTM1OEQy
QTAwREJGNjRDIC8qIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oICovOyB9OworCQk4NEM2Nzg0
QzEyMTQ4MTQ3MDBBOTI5MDIgLyogU1ZHUGF0aEJsZW5kZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODRDNjc4NEExMjE0ODE0NzAwQTkyOTAyIC8q
IFNWR1BhdGhCbGVuZGVyLmNwcCAqLzsgfTsKKwkJODRDNjc4NEQxMjE0ODE0NzAwQTkyOTAyIC8q
IFNWR1BhdGhCbGVuZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NEM2Nzg0QjEyMTQ4MTQ3MDBBOTI5MDIgLyogU1ZHUGF0aEJsZW5kZXIuaCAqLzsg
fTsKIAkJODREMEM0MDQxMTE1RjFENDAwMThBQTM0IC8qIEFmZmluZVRyYW5zZm9ybS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NEQwQzQwMzExMTVG
MUQ0MDAxOEFBMzQgLyogQWZmaW5lVHJhbnNmb3JtLmNwcCAqLzsgfTsKIAkJODREMEM0MDYxMTE1
RjFFQTAwMThBQTM0IC8qIEFmZmluZVRyYW5zZm9ybS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODREMEM0MDUxMTE1RjFFQTAwMThBQTM0IC8qIEFmZmlu
ZVRyYW5zZm9ybS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTg1MDA0RDk0MEFDRUVBRUYwMEM0MzhGNiAvKiBET01TVkdEZWZzRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUwMDREODgwQUNF
RUFFRjAwQzQzOEY2IC8qIERPTVNWR0RlZnNFbGVtZW50LmggKi87IH07CkBAIC03MzQ0LDYgKzcz
NDYsOCBAQAogCQk4NEI2Qjk3NjEyMEYxM0U1MDBCOEVGQUYgLyogU1ZHUGF0aFNlZ0xpc3RTb3Vy
Y2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUGF0aFNlZ0xpc3RTb3Vy
Y2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODRCREExNjkxMTM1OEQyQTAwREJG
NjRDIC8qIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4NEJEQTE2QTExMzU4RDJBMDBEQkY2NEMgLyogUmVuZGVyU1ZH
UmVzb3VyY2VDbGlwcGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRl
clNWR1Jlc291cmNlQ2xpcHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NEM2
Nzg0QTEyMTQ4MTQ3MDBBOTI5MDIgLyogU1ZHUGF0aEJsZW5kZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHUGF0aEJsZW5kZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4NEM2Nzg0QjEyMTQ4MTQ3MDBBOTI5MDIgLyogU1ZHUGF0aEJsZW5k
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUGF0aEJsZW5kZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODREMEM0MDMxMTE1RjFENDAwMThBQTM0IC8q
IEFmZmluZVRyYW5zZm9ybS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBBZmZpbmVUcmFuc2Zvcm0uY3BwOyBwYXRoID0gdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NEQwQzQwNTExMTVGMUVBMDAxOEFB
MzQgLyogQWZmaW5lVHJhbnNmb3JtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IEFmZmluZVRyYW5zZm9ybS5oOyBwYXRoID0gdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODUwMDREODgwQUNFRUFFRjAwQzQzOEY2IC8q
IERPTVNWR0RlZnNFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
T01TVkdEZWZzRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUzMjcs
NiArMTUzMzEsOCBAQAogCQkJCUIyMjI3OEJGMEQwMEJGMjAwMDcxQjc4MiAvKiBTVkdQYWludC5p
ZGwgKi8sCiAJCQkJQjIyMjc4QzAwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR1BhcnNlclV0aWxpdGll
cy5jcHAgKi8sCiAJCQkJQjIyMjc4QzEwRDAwQkYyMDAwNzFCNzgyIC8qIFNWR1BhcnNlclV0aWxp
dGllcy5oICovLAorCQkJCTg0QzY3ODRBMTIxNDgxNDcwMEE5MjkwMiAvKiBTVkdQYXRoQmxlbmRl
ci5jcHAgKi8sCisJCQkJODRDNjc4NEIxMjE0ODE0NzAwQTkyOTAyIC8qIFNWR1BhdGhCbGVuZGVy
LmggKi8sCiAJCQkJODQ3NkM5RTcxMURGNkEyOTAwNTU1QjAyIC8qIFNWR1BhdGhCdWlsZGVyLmNw
cCAqLywKIAkJCQk4NDc2QzlFODExREY2QTI5MDA1NTVCMDIgLyogU1ZHUGF0aEJ1aWxkZXIuaCAq
LywKIAkJCQk4NDE5RDJBNDEyMEQ5MkQwMDAxNDFGOEYgLyogU1ZHUGF0aEJ5dGVTdHJlYW0uaCAq
LywKQEAgLTE5ODQ3LDYgKzE5ODUzLDcgQEAKIAkJCQlCMjIyN0E1MTBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHTnVtYmVyTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBNTQwRDAwQkYyMjAw
NzFCNzgyIC8qIFNWR1BhaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E1NzBEMDBCRjIy
MDA3MUI3ODIgLyogU1ZHUGFyc2VyVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NEM2
Nzg0RDEyMTQ4MTQ3MDBBOTI5MDIgLyogU1ZHUGF0aEJsZW5kZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg0NzZDOUVCMTFERjZBMjkwMDU1NUIwMiAvKiBTVkdQYXRoQnVpbGRlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODQxOUQyQTcxMjBEOTJEMDAwMTQxRjhGIC8qIFNWR1BhdGhCeXRlU3RyZWFt
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDE5RDJBOTEyMEQ5MkQwMDAxNDFGOEYgLyogU1ZHUGF0
aEJ5dGVTdHJlYW1CdWlsZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTIyMzE3LDYgKzIyMzI0LDcg
QEAKIAkJCQlCMjIyN0E1MDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTnVtYmVyTGlzdC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCMjIyN0E1MzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGFpbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBNTYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhcnNl
clV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk4NEM2Nzg0QzEyMTQ4MTQ3MDBBOTI5
MDIgLyogU1ZHUGF0aEJsZW5kZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODQ3NkM5RUExMURG
NkEyOTAwNTU1QjAyIC8qIFNWR1BhdGhCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg0
MTlEMkE4MTIwRDkyRDAwMDE0MUY4RiAvKiBTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJODQxOUQyQUMxMjBEOTJGQzAwMTQxRjhGIC8qIFNWR1BhdGhCeXRl
U3RyZWFtU291cmNlLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogV2ViQ29yZS9zdmcvU1ZHQWxs
SW5PbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0FsbEluT25lLmNwcAkocmV2
aXNpb24gNjUyNjApCisrKyBXZWJDb3JlL3N2Zy9TVkdBbGxJbk9uZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEwNyw2ICsxMDcsNyBAQAogI2luY2x1ZGUgIlNWR051bWJlckxpc3QuY3BwIgogI2lu
Y2x1ZGUgIlNWR1BhaW50LmNwcCIKICNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuY3BwIgor
I2luY2x1ZGUgIlNWR1BhdGhCbGVuZGVyLmNwcCIKICNpbmNsdWRlICJTVkdQYXRoQnVpbGRlci5j
cHAiCiAjaW5jbHVkZSAiU1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyLmNwcCIKICNpbmNsdWRlICJT
VkdQYXRoQnl0ZVN0cmVhbVNvdXJjZS5jcHAiCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdBbmltYXRl
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQu
Y3BwCShyZXZpc2lvbiA2NTI2MCkKKysrIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIlNWR1BhdGhTZWdM
aXN0LmgiCiAjaW5jbHVkZSAiU1ZHUG9pbnRMaXN0LmgiCiAjaW5jbHVkZSA8bWF0aC5oPgotCisj
aW5jbHVkZSA8c3RkaW8uaD4KIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTQyLDYgKzQyLDcgQEAgU1ZHQW5pbWF0ZUVsZW1lbnQ6OlNWR0FuaW1hdGVFbGVt
ZW50KGNvbgogICAgICwgbV9mcm9tTnVtYmVyKDApCiAgICAgLCBtX3RvTnVtYmVyKDApCiAgICAg
LCBtX2FuaW1hdGVkTnVtYmVyKG51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkpCisg
ICAgLCBtX2FuaW1hdGVkUGF0aFBvaW50ZXIoMCkKIHsKIH0KIApAQCAtMTMxLDE5ICsxMzIsMzAg
QEAgdm9pZCBTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlQW5pbWF0ZQogICAgIH0KICAgICBB
bmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUgPSB0aGlzLT5hbmltYXRpb25Nb2RlKCk7CiAgICAg
aWYgKG1fcHJvcGVydHlUeXBlID09IFBhdGhQcm9wZXJ0eSkgewotICAgICAgICBpZiAocGVyY2Vu
dGFnZSA9PSAwKQotICAgICAgICAgICAgcmVzdWx0cy0+bV9hbmltYXRlZFBhdGggPSBtX2Zyb21Q
YXRoOwotICAgICAgICBlbHNlIGlmIChwZXJjZW50YWdlID09IDEuZikKLSAgICAgICAgICAgIHJl
c3VsdHMtPm1fYW5pbWF0ZWRQYXRoID0gbV90b1BhdGg7Ci0gICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgaWYgKG1fZnJvbVBhdGggJiYgbV90b1BhdGgpCi0gICAgICAgICAgICAgICAgcmVzdWx0
cy0+bV9hbmltYXRlZFBhdGggPSBTVkdQYXRoU2VnTGlzdDo6Y3JlYXRlQW5pbWF0ZWQobV9mcm9t
UGF0aC5nZXQoKSwgbV90b1BhdGguZ2V0KCksIHBlcmNlbnRhZ2UpOwotICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIHJlc3VsdHMtPm1fYW5pbWF0ZWRQYXRoLmNsZWFyKCk7CisgICAg
ICAgIGlmICghcGVyY2VudGFnZSkgeworICAgICAgICAgICAgQVNTRVJUKG1fZnJvbVBhdGgpOwor
ICAgICAgICAgICAgcmVzdWx0cy0+bV9hbmltYXRlZFBhdGhQb2ludGVyID0gbV9mcm9tUGF0aC5n
ZXQoKTsKKyAgICAgICAgfSBlbHNlIGlmIChwZXJjZW50YWdlID09IDEuZikgeworICAgICAgICAg
ICAgQVNTRVJUKG1fdG9QYXRoKTsKKyAgICAgICAgICAgIHJlc3VsdHMtPm1fYW5pbWF0ZWRQYXRo
UG9pbnRlciA9IG1fdG9QYXRoLmdldCgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
aWYgKG1fZnJvbVBhdGggJiYgbV90b1BhdGgpIHsKKyAgICAgICAgICAgICAgICBTVkdQYXRoUGFy
c2VyRmFjdG9yeSogZmFjdG9yeSA9IFNWR1BhdGhQYXJzZXJGYWN0b3J5OjpzZWxmKCk7CisgICAg
ICAgICAgICAgICAgaWYgKCFmYWN0b3J5LT5idWlsZEFuaW1hdGVkU1ZHUGF0aEJ5dGVTdHJlYW0o
bV9mcm9tUGF0aC5nZXQoKSwgbV90b1BhdGguZ2V0KCksIHJlc3VsdHMtPm1fYW5pbWF0ZWRQYXRo
LCBwZXJjZW50YWdlKSkgeworICAgICAgICAgICAgICAgICAgICByZXN1bHRzLT5tX2FuaW1hdGVk
UGF0aC5jbGVhcigpOworICAgICAgICAgICAgICAgICAgICByZXN1bHRzLT5tX2FuaW1hdGVkUGF0
aFBvaW50ZXIgPSAwOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAg
ICByZXN1bHRzLT5tX2FuaW1hdGVkUGF0aFBvaW50ZXIgPSByZXN1bHRzLT5tX2FuaW1hdGVkUGF0
aC5nZXQoKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHJlc3VsdHMtPm1f
YW5pbWF0ZWRQYXRoUG9pbnRlciA9IDA7CiAgICAgICAgICAgICAvLyBGYWxsIGJhY2sgdG8gZGlz
Y3JldGUgYW5pbWF0aW9uIGlmIHRoZSBwYXRocyBhcmUgbm90IGNvbXBhdGlibGUKLSAgICAgICAg
ICAgIGlmICghcmVzdWx0cy0+bV9hbmltYXRlZFBhdGgpCi0gICAgICAgICAgICAgICAgcmVzdWx0
cy0+bV9hbmltYXRlZFBhdGggPSAoKGFuaW1hdGlvbk1vZGUgPT0gRnJvbVRvQW5pbWF0aW9uICYm
IHBlcmNlbnRhZ2UgPiAwLjVmKSB8fCBhbmltYXRpb25Nb2RlID09IFRvQW5pbWF0aW9uIHx8IHBl
cmNlbnRhZ2UgPT0gMS4wZikgCi0gICAgICAgICAgICAgICAgICAgID8gbV90b1BhdGggOiBtX2Zy
b21QYXRoOworICAgICAgICAgICAgaWYgKCFyZXN1bHRzLT5tX2FuaW1hdGVkUGF0aFBvaW50ZXIp
IHsKKyAgICAgICAgICAgICAgICBBU1NFUlQobV9mcm9tUGF0aCk7CisgICAgICAgICAgICAgICAg
QVNTRVJUKG1fdG9QYXRoKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIXJlc3VsdHMtPm1fYW5p
bWF0ZWRQYXRoKTsKKyAgICAgICAgICAgICAgICByZXN1bHRzLT5tX2FuaW1hdGVkUGF0aFBvaW50
ZXIgPSAoKGFuaW1hdGlvbk1vZGUgPT0gRnJvbVRvQW5pbWF0aW9uICYmIHBlcmNlbnRhZ2UgPiAw
LjVmKSB8fCBhbmltYXRpb25Nb2RlID09IFRvQW5pbWF0aW9uIHx8IHBlcmNlbnRhZ2UgPT0gMS4w
ZikgCisgICAgICAgICAgICAgICAgICAgID8gbV90b1BhdGguZ2V0KCkgOiBtX2Zyb21QYXRoLmdl
dCgpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9IGVs
c2UgaWYgKG1fcHJvcGVydHlUeXBlID09IFBvaW50c1Byb3BlcnR5KSB7CkBAIC0xODksMTEgKzIw
MSw5IEBAIGJvb2wgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUZyb21BbmQKICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobV9wcm9wZXJ0
eVR5cGUgPT0gUGF0aFByb3BlcnR5KSB7Ci0gICAgICAgIG1fZnJvbVBhdGggPSBTVkdQYXRoU2Vn
TGlzdDo6Y3JlYXRlKFNWR05hbWVzOjpkQXR0cik7CiAgICAgICAgIFNWR1BhdGhQYXJzZXJGYWN0
b3J5KiBmYWN0b3J5ID0gU1ZHUGF0aFBhcnNlckZhY3Rvcnk6OnNlbGYoKTsKLSAgICAgICAgaWYg
KGZhY3RvcnktPmJ1aWxkU1ZHUGF0aFNlZ0xpc3RGcm9tU3RyaW5nKGZyb21TdHJpbmcsIG1fZnJv
bVBhdGguZ2V0KCksIFVuYWx0ZXJlZFBhcnNpbmcpKSB7Ci0gICAgICAgICAgICBtX3RvUGF0aCA9
IFNWR1BhdGhTZWdMaXN0OjpjcmVhdGUoU1ZHTmFtZXM6OmRBdHRyKTsKLSAgICAgICAgICAgIGlm
IChmYWN0b3J5LT5idWlsZFNWR1BhdGhTZWdMaXN0RnJvbVN0cmluZyh0b1N0cmluZywgbV90b1Bh
dGguZ2V0KCksIFVuYWx0ZXJlZFBhcnNpbmcpKQorICAgICAgICBpZiAoZmFjdG9yeS0+YnVpbGRT
VkdQYXRoQnl0ZVN0cmVhbUZyb21TdHJpbmcoZnJvbVN0cmluZywgbV9mcm9tUGF0aCwgVW5hbHRl
cmVkUGFyc2luZykpIHsKKyAgICAgICAgICAgIGlmIChmYWN0b3J5LT5idWlsZFNWR1BhdGhCeXRl
U3RyZWFtRnJvbVN0cmluZyh0b1N0cmluZywgbV90b1BhdGgsIFVuYWx0ZXJlZFBhcnNpbmcpKQog
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIG1fZnJvbVBh
dGguY2xlYXIoKTsKQEAgLTI1Niw2ICsyNjYsNyBAQCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50Ojpy
ZXNldFRvQmFzZVZhbHVlCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfSBlbHNlIGlmIChtX3By
b3BlcnR5VHlwZSA9PSBQYXRoUHJvcGVydHkpIHsKICAgICAgICAgbV9hbmltYXRlZFBhdGguY2xl
YXIoKTsKKyAgICAgICAgbV9hbmltYXRlZFBhdGhQb2ludGVyID0gMDsKICAgICAgICAgcmV0dXJu
OwogICAgIH0gZWxzZSBpZiAobV9wcm9wZXJ0eVR5cGUgPT0gUG9pbnRzUHJvcGVydHkpIHsKICAg
ICAgICAgbV9hbmltYXRlZFBvaW50cy5jbGVhcigpOwpAQCAtMjcyLDcgKzI4Myw3IEBAIHZvaWQg
U1ZHQW5pbWF0ZUVsZW1lbnQ6OmFwcGx5UmVzdWx0c1RvVGEKICAgICBlbHNlIGlmIChtX3Byb3Bl
cnR5VHlwZSA9PSBOdW1iZXJQcm9wZXJ0eSkKICAgICAgICAgdmFsdWVUb0FwcGx5ID0gU3RyaW5n
OjpudW1iZXIobV9hbmltYXRlZE51bWJlcikgKyBtX251bWJlclVuaXQ7CiAgICAgZWxzZSBpZiAo
bV9wcm9wZXJ0eVR5cGUgPT0gUGF0aFByb3BlcnR5KSB7Ci0gICAgICAgIGlmICghbV9hbmltYXRl
ZFBhdGggfHwgIW1fYW5pbWF0ZWRQYXRoLT5udW1iZXJPZkl0ZW1zKCkpCisgICAgICAgIGlmICgh
bV9hbmltYXRlZFBhdGhQb2ludGVyIHx8IG1fYW5pbWF0ZWRQYXRoUG9pbnRlci0+aXNFbXB0eSgp
KQogICAgICAgICAgICAgdmFsdWVUb0FwcGx5ID0gbV9hbmltYXRlZFN0cmluZzsKICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGtlZXAgZ29pbmcgdG8gc3RyaW5nIGFu
ZCBiYWNrIGJlY2F1c2Ugd2UgYXJlIGN1cnJlbnRseSBvbmx5IGFibGUgdG8gcGFpbnQKQEAgLTI4
MCw3ICsyOTEsNyBAQCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50OjphcHBseVJlc3VsdHNUb1RhCiAg
ICAgICAgICAgICAvLyBtb3JwaGluZyBuZWVkcyB0byBiZSBkb25lIHdpdGggdW5wcm9jZXNzZWQg
cGF0aHMuCiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBjb3VsZCBiZSBvcHRpbWl6ZWQgaWYg
cGF0aHMgd2VyZSBub3QgcHJvY2Vzc2VkIGF0IHBhcnNlIHRpbWUuCiAgICAgICAgICAgICBTVkdQ
YXRoUGFyc2VyRmFjdG9yeSogZmFjdG9yeSA9IFNWR1BhdGhQYXJzZXJGYWN0b3J5OjpzZWxmKCk7
Ci0gICAgICAgICAgICBmYWN0b3J5LT5idWlsZFN0cmluZ0Zyb21TVkdQYXRoU2VnTGlzdChtX2Fu
aW1hdGVkUGF0aC5nZXQoKSwgdmFsdWVUb0FwcGx5LCBVbmFsdGVyZWRQYXJzaW5nKTsKKyAgICAg
ICAgICAgIGZhY3RvcnktPmJ1aWxkU3RyaW5nRnJvbUJ5dGVTdHJlYW0obV9hbmltYXRlZFBhdGhQ
b2ludGVyLCB2YWx1ZVRvQXBwbHksIFVuYWx0ZXJlZFBhcnNpbmcpOwogICAgICAgICB9CiAgICAg
fSBlbHNlIGlmIChtX3Byb3BlcnR5VHlwZSA9PSBQb2ludHNQcm9wZXJ0eSkgewogICAgICAgICBp
ZiAoIW1fYW5pbWF0ZWRQb2ludHMgfHwgIW1fYW5pbWF0ZWRQb2ludHMtPm51bWJlck9mSXRlbXMo
KSkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaAkocmV2aXNpb24gNjUyNjApCisrKyBXZWJD
b3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4
IEBACiAKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGlvbkVsZW1lbnQu
aCIKKyNpbmNsdWRlICJTVkdQYXRoQnl0ZVN0cmVhbS5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFNWR1BhdGhTZWdMaXN0OwpAQCAt
NTksOSArNjEsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTdHJpbmcgbV9mcm9t
U3RyaW5nOwogICAgICAgICBTdHJpbmcgbV90b1N0cmluZzsKICAgICAgICAgU3RyaW5nIG1fYW5p
bWF0ZWRTdHJpbmc7Ci0gICAgICAgIFJlZlB0cjxTVkdQYXRoU2VnTGlzdD4gbV9mcm9tUGF0aDsK
LSAgICAgICAgUmVmUHRyPFNWR1BhdGhTZWdMaXN0PiBtX3RvUGF0aDsKLSAgICAgICAgUmVmUHRy
PFNWR1BhdGhTZWdMaXN0PiBtX2FuaW1hdGVkUGF0aDsKKyAgICAgICAgT3duUHRyPFNWR1BhdGhC
eXRlU3RyZWFtPiBtX2Zyb21QYXRoOworICAgICAgICBPd25QdHI8U1ZHUGF0aEJ5dGVTdHJlYW0+
IG1fdG9QYXRoOworICAgICAgICBPd25QdHI8U1ZHUGF0aEJ5dGVTdHJlYW0+IG1fYW5pbWF0ZWRQ
YXRoOworICAgICAgICBTVkdQYXRoQnl0ZVN0cmVhbSogbV9hbmltYXRlZFBhdGhQb2ludGVyOwog
ICAgICAgICBSZWZQdHI8U1ZHUG9pbnRMaXN0PiBtX2Zyb21Qb2ludHM7CiAgICAgICAgIFJlZlB0
cjxTVkdQb2ludExpc3Q+IG1fdG9Qb2ludHM7CiAgICAgICAgIFJlZlB0cjxTVkdQb2ludExpc3Q+
IG1fYW5pbWF0ZWRQb2ludHM7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRoQmxlbmRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aEJsZW5kZXIuY3BwCShyZXZpc2lvbiAw
KQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aEJsZW5kZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDI4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0
ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYg
RU5BQkxFKFNWRykKKyNpbmNsdWRlICJTVkdQYXRoQmxlbmRlci5oIgorCisjaW5jbHVkZSAiU1ZH
UGF0aFNlZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NWR1BhdGhCbGVuZGVyOjpTVkdQ
YXRoQmxlbmRlcigpCisgICAgOiBtX2Zyb21Tb3VyY2UoMCkKKyAgICAsIG1fdG9Tb3VyY2UoMCkK
KyAgICAsIG1fY29uc3VtZXIoMCkKK3sKK30KKworU1ZHUGF0aEJsZW5kZXI6On5TVkdQYXRoQmxl
bmRlcigpCit7Cit9CisKK2Zsb2F0IFNWR1BhdGhCbGVuZGVyOjpibGVuZEFuaW1hdGVkRmxvYXQo
ZmxvYXQgZnJvbSwgZmxvYXQgdG8pCit7CisgICAgcmV0dXJuICh0byAtIGZyb20pICogbV9wcm9n
cmVzcyArIGZyb207Cit9CisKK0Zsb2F0UG9pbnQgU1ZHUGF0aEJsZW5kZXI6OmJsZW5kQW5pbWF0
ZWRGbG9hdFBvaW50KEZsb2F0UG9pbnQmIGZyb20sIEZsb2F0UG9pbnQmIHRvKQoreworICAgIHJl
dHVybiBGbG9hdFBvaW50KCh0by54KCkgLSBmcm9tLngoKSkgKiBtX3Byb2dyZXNzICsgZnJvbS54
KCksICh0by55KCkgLSBmcm9tLnkoKSkgKiBtX3Byb2dyZXNzICsgZnJvbS55KCkpOworfQorCiti
b29sIFNWR1BhdGhCbGVuZGVyOjpibGVuZE1vdmVUb1NlZ21lbnQoKQoreworICAgIEZsb2F0UG9p
bnQgZnJvbVRhcmdldFBvaW50OworICAgIEZsb2F0UG9pbnQgdG9UYXJnZXRQb2ludDsKKyAgICBp
ZiAoIW1fZnJvbVNvdXJjZS0+cGFyc2VNb3ZlVG9TZWdtZW50KGZyb21UYXJnZXRQb2ludCkKKyAg
ICAgICAgfHwgIW1fdG9Tb3VyY2UtPnBhcnNlTW92ZVRvU2VnbWVudCh0b1RhcmdldFBvaW50KSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9jb25zdW1lci0+bW92ZVRvKGJsZW5kQW5p
bWF0ZWRGbG9hdFBvaW50KGZyb21UYXJnZXRQb2ludCwgdG9UYXJnZXRQb2ludCksIGZhbHNlLCBt
X21vZGUpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFNWR1BhdGhCbGVuZGVyOjpibGVu
ZExpbmVUb1NlZ21lbnQoKQoreworICAgIEZsb2F0UG9pbnQgZnJvbVRhcmdldFBvaW50OworICAg
IEZsb2F0UG9pbnQgdG9UYXJnZXRQb2ludDsKKyAgICBpZiAoIW1fZnJvbVNvdXJjZS0+cGFyc2VM
aW5lVG9TZWdtZW50KGZyb21UYXJnZXRQb2ludCkKKyAgICAgICAgfHwgIW1fdG9Tb3VyY2UtPnBh
cnNlTGluZVRvU2VnbWVudCh0b1RhcmdldFBvaW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgbV9jb25zdW1lci0+bGluZVRvKGJsZW5kQW5pbWF0ZWRGbG9hdFBvaW50KGZyb21UYXJn
ZXRQb2ludCwgdG9UYXJnZXRQb2ludCksIG1fbW9kZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2Jvb2wgU1ZHUGF0aEJsZW5kZXI6OmJsZW5kTGluZVRvSG9yaXpvbnRhbFNlZ21lbnQoKQorewor
ICAgIGZsb2F0IGZyb21YOworICAgIGZsb2F0IHRvWDsKKyAgICBpZiAoIW1fZnJvbVNvdXJjZS0+
cGFyc2VMaW5lVG9Ib3Jpem9udGFsU2VnbWVudChmcm9tWCkKKyAgICAgICAgfHwgIW1fdG9Tb3Vy
Y2UtPnBhcnNlTGluZVRvSG9yaXpvbnRhbFNlZ21lbnQodG9YKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgbV9jb25zdW1lci0+bGluZVRvSG9yaXpvbnRhbChibGVuZEFuaW1hdGVkRmxv
YXQoZnJvbVgsIHRvWCksIG1fbW9kZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgU1ZH
UGF0aEJsZW5kZXI6OmJsZW5kTGluZVRvVmVydGljYWxTZWdtZW50KCkKK3sKKyAgICBmbG9hdCBm
cm9tWTsKKyAgICBmbG9hdCB0b1k7CisgICAgaWYgKCFtX2Zyb21Tb3VyY2UtPnBhcnNlTGluZVRv
VmVydGljYWxTZWdtZW50KGZyb21ZKQorICAgICAgICB8fCAhbV90b1NvdXJjZS0+cGFyc2VMaW5l
VG9WZXJ0aWNhbFNlZ21lbnQodG9ZKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9j
b25zdW1lci0+bGluZVRvVmVydGljYWwoYmxlbmRBbmltYXRlZEZsb2F0KGZyb21ZLCB0b1kpLCBt
X21vZGUpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFNWR1BhdGhCbGVuZGVyOjpibGVu
ZEN1cnZlVG9DdWJpY1NlZ21lbnQoKQoreworICAgIEZsb2F0UG9pbnQgZnJvbVRhcmdldFBvaW50
OworICAgIEZsb2F0UG9pbnQgZnJvbVBvaW50MTsKKyAgICBGbG9hdFBvaW50IGZyb21Qb2ludDI7
CisgICAgRmxvYXRQb2ludCB0b1RhcmdldFBvaW50OworICAgIEZsb2F0UG9pbnQgdG9Qb2ludDE7
CisgICAgRmxvYXRQb2ludCB0b1BvaW50MjsKKyAgICBpZiAoIW1fZnJvbVNvdXJjZS0+cGFyc2VD
dXJ2ZVRvQ3ViaWNTZWdtZW50KGZyb21Qb2ludDEsIGZyb21Qb2ludDIsIGZyb21UYXJnZXRQb2lu
dCkKKyAgICAgICAgfHwgIW1fdG9Tb3VyY2UtPnBhcnNlQ3VydmVUb0N1YmljU2VnbWVudCh0b1Bv
aW50MSwgdG9Qb2ludDIsIHRvVGFyZ2V0UG9pbnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBtX2NvbnN1bWVyLT5jdXJ2ZVRvQ3ViaWMoYmxlbmRBbmltYXRlZEZsb2F0UG9pbnQoZnJv
bVBvaW50MSwgdG9Qb2ludDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGVuZEFu
aW1hdGVkRmxvYXRQb2ludChmcm9tUG9pbnQyLCB0b1BvaW50MiksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJsZW5kQW5pbWF0ZWRGbG9hdFBvaW50KGZyb21UYXJnZXRQb2ludCwgdG9U
YXJnZXRQb2ludCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbW9kZSk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgU1ZHUGF0aEJsZW5kZXI6OmJsZW5kQ3VydmVUb0N1Ymlj
U21vb3RoU2VnbWVudCgpCit7CisgICAgRmxvYXRQb2ludCBmcm9tVGFyZ2V0UG9pbnQ7CisgICAg
RmxvYXRQb2ludCBmcm9tUG9pbnQyOworICAgIEZsb2F0UG9pbnQgdG9UYXJnZXRQb2ludDsKKyAg
ICBGbG9hdFBvaW50IHRvUG9pbnQyOworICAgIGlmICghbV9mcm9tU291cmNlLT5wYXJzZUN1cnZl
VG9DdWJpY1Ntb290aFNlZ21lbnQoZnJvbVBvaW50MiwgZnJvbVRhcmdldFBvaW50KQorICAgICAg
ICB8fCAhbV90b1NvdXJjZS0+cGFyc2VDdXJ2ZVRvQ3ViaWNTbW9vdGhTZWdtZW50KHRvUG9pbnQy
LCB0b1RhcmdldFBvaW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9jb25zdW1l
ci0+Y3VydmVUb0N1YmljU21vb3RoKGJsZW5kQW5pbWF0ZWRGbG9hdFBvaW50KGZyb21Qb2ludDIs
IHRvUG9pbnQyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxlbmRBbmlt
YXRlZEZsb2F0UG9pbnQoZnJvbVRhcmdldFBvaW50LCB0b1RhcmdldFBvaW50KSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9tb2RlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBTVkdQYXRoQmxlbmRlcjo6YmxlbmRDdXJ2ZVRvUXVhZHJhdGljU2VnbWVudCgpCit7
CisgICAgRmxvYXRQb2ludCBmcm9tVGFyZ2V0UG9pbnQ7CisgICAgRmxvYXRQb2ludCBmcm9tUG9p
bnQxOworICAgIEZsb2F0UG9pbnQgdG9UYXJnZXRQb2ludDsKKyAgICBGbG9hdFBvaW50IHRvUG9p
bnQxOworICAgIGlmICghbV9mcm9tU291cmNlLT5wYXJzZUN1cnZlVG9RdWFkcmF0aWNTZWdtZW50
KGZyb21Qb2ludDEsIGZyb21UYXJnZXRQb2ludCkKKyAgICAgICAgfHwgIW1fdG9Tb3VyY2UtPnBh
cnNlQ3VydmVUb1F1YWRyYXRpY1NlZ21lbnQodG9Qb2ludDEsIHRvVGFyZ2V0UG9pbnQpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX2NvbnN1bWVyLT5jdXJ2ZVRvUXVhZHJhdGljKGJs
ZW5kQW5pbWF0ZWRGbG9hdFBvaW50KGZyb21Qb2ludDEsIHRvUG9pbnQxKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJsZW5kQW5pbWF0ZWRGbG9hdFBvaW50KGZyb21UYXJnZXRQ
b2ludCwgdG9UYXJnZXRQb2ludCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X21vZGUpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFNWR1BhdGhCbGVuZGVyOjpibGVu
ZEN1cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdtZW50KCkKK3sKKyAgICBGbG9hdFBvaW50IGZyb21U
YXJnZXRQb2ludDsKKyAgICBGbG9hdFBvaW50IHRvVGFyZ2V0UG9pbnQ7CisgICAgaWYgKCFtX2Zy
b21Tb3VyY2UtPnBhcnNlQ3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQoZnJvbVRhcmdldFBv
aW50KQorICAgICAgICB8fCAhbV90b1NvdXJjZS0+cGFyc2VDdXJ2ZVRvUXVhZHJhdGljU21vb3Ro
U2VnbWVudCh0b1RhcmdldFBvaW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9j
b25zdW1lci0+Y3VydmVUb1F1YWRyYXRpY1Ntb290aChibGVuZEFuaW1hdGVkRmxvYXRQb2ludChm
cm9tVGFyZ2V0UG9pbnQsIHRvVGFyZ2V0UG9pbnQpLCBtX21vZGUpOworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIFNWR1BhdGhCbGVuZGVyOjpibGVuZEFyY1RvU2VnbWVudCgpCit7CisgICAg
ZmxvYXQgZnJvbVJ4OworICAgIGZsb2F0IGZyb21SeTsKKyAgICBmbG9hdCBmcm9tQW5nbGU7Cisg
ICAgYm9vbCBmcm9tTGFyZ2VBcmM7CisgICAgYm9vbCBmcm9tU3dlZXA7CisgICAgRmxvYXRQb2lu
dCBmcm9tVGFyZ2V0UG9pbnQ7CisgICAgZmxvYXQgdG9SeDsKKyAgICBmbG9hdCB0b1J5OworICAg
IGZsb2F0IHRvQW5nbGU7CisgICAgYm9vbCB0b0xhcmdlQXJjOworICAgIGJvb2wgdG9Td2VlcDsK
KyAgICBGbG9hdFBvaW50IHRvVGFyZ2V0UG9pbnQ7CisgICAgaWYgKCFtX2Zyb21Tb3VyY2UtPnBh
cnNlQXJjVG9TZWdtZW50KGZyb21SeCwgZnJvbVJ5LCBmcm9tQW5nbGUsIGZyb21MYXJnZUFyYywg
ZnJvbVN3ZWVwLCBmcm9tVGFyZ2V0UG9pbnQpCisgICAgICAgIHx8ICFtX3RvU291cmNlLT5wYXJz
ZUFyY1RvU2VnbWVudCh0b1J4LCB0b1J5LCB0b0FuZ2xlLCB0b0xhcmdlQXJjLCB0b1N3ZWVwLCB0
b1RhcmdldFBvaW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9jb25zdW1lci0+
YXJjVG8oYmxlbmRBbmltYXRlZEZsb2F0KGZyb21SeCwgdG9SeCksCisgICAgICAgICAgICAgICAg
ICAgICAgYmxlbmRBbmltYXRlZEZsb2F0KGZyb21SeSwgdG9SeSksCisgICAgICAgICAgICAgICAg
ICAgICAgYmxlbmRBbmltYXRlZEZsb2F0KGZyb21BbmdsZSwgdG9BbmdsZSksCisgICAgICAgICAg
ICAgICAgICAgICAgbV9wcm9ncmVzcyA8IDAuNSA/IGZyb21MYXJnZUFyYyA6IHRvTGFyZ2VBcmMs
CisgICAgICAgICAgICAgICAgICAgICAgbV9wcm9ncmVzcyA8IDAuNSA/IGZyb21Td2VlcCA6IHRv
U3dlZXAsCisgICAgICAgICAgICAgICAgICAgICAgYmxlbmRBbmltYXRlZEZsb2F0UG9pbnQoZnJv
bVRhcmdldFBvaW50LCB0b1RhcmdldFBvaW50KSwKKyAgICAgICAgICAgICAgICAgICAgICBtX21v
ZGUpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFNWR1BhdGhCbGVuZGVyOjpibGVuZEFu
aW1hdGVkUGF0aChmbG9hdCBwcm9ncmVzcywgU1ZHUGF0aFNvdXJjZSogZnJvbVNvdXJjZSwgU1ZH
UGF0aFNvdXJjZSogdG9Tb3VyY2UsIFNWR1BhdGhDb25zdW1lciogY29uc3VtZXIpCit7CisgICAg
QVNTRVJUKGZyb21Tb3VyY2UpOworICAgIEFTU0VSVCh0b1NvdXJjZSk7CisgICAgQVNTRVJUKGNv
bnN1bWVyKTsKKyAgICBtX2Zyb21Tb3VyY2UgPSBmcm9tU291cmNlOworICAgIG1fdG9Tb3VyY2Ug
PSB0b1NvdXJjZTsKKyAgICBtX2NvbnN1bWVyID0gY29uc3VtZXI7CisKKyAgICBtX3Byb2dyZXNz
ID0gcHJvZ3Jlc3M7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgU1ZHUGF0aFNlZ1R5cGUg
ZnJvbUNvbW1hbmQ7CisgICAgICAgIG1fZnJvbVNvdXJjZS0+cGFyc2VTVkdTZWdtZW50VHlwZShm
cm9tQ29tbWFuZCk7CisgICAgICAgIFNWR1BhdGhTZWdUeXBlIHRvQ29tbWFuZDsKKyAgICAgICAg
bV90b1NvdXJjZS0+cGFyc2VTVkdTZWdtZW50VHlwZSh0b0NvbW1hbmQpOworICAgICAgICBpZiAo
ZnJvbUNvbW1hbmQgIT0gdG9Db21tYW5kKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgICAgIG1fbW9kZSA9IEFic29sdXRlQ29vcmRpbmF0ZXM7CisgICAgICAgIHN3aXRjaCAoZnJv
bUNvbW1hbmQpIHsKKyAgICAgICAgY2FzZSBQYXRoU2VnTW92ZVRvUmVsOgorICAgICAgICAgICAg
bV9tb2RlID0gUmVsYXRpdmVDb29yZGluYXRlczsKKyAgICAgICAgY2FzZSBQYXRoU2VnTW92ZVRv
QWJzOgorICAgICAgICAgICAgaWYgKCFibGVuZE1vdmVUb1NlZ21lbnQoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQYXRo
U2VnTGluZVRvUmVsOgorICAgICAgICAgICAgbV9tb2RlID0gUmVsYXRpdmVDb29yZGluYXRlczsK
KyAgICAgICAgY2FzZSBQYXRoU2VnTGluZVRvQWJzOgorICAgICAgICAgICAgaWYgKCFibGVuZExp
bmVUb1NlZ21lbnQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBQYXRoU2VnTGluZVRvSG9yaXpvbnRhbFJlbDoKKyAgICAg
ICAgICAgIG1fbW9kZSA9IFJlbGF0aXZlQ29vcmRpbmF0ZXM7CisgICAgICAgIGNhc2UgUGF0aFNl
Z0xpbmVUb0hvcml6b250YWxBYnM6CisgICAgICAgICAgICBpZiAoIWJsZW5kTGluZVRvSG9yaXpv
bnRhbFNlZ21lbnQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBQYXRoU2VnTGluZVRvVmVydGljYWxSZWw6CisgICAgICAg
ICAgICBtX21vZGUgPSBSZWxhdGl2ZUNvb3JkaW5hdGVzOworICAgICAgICBjYXNlIFBhdGhTZWdM
aW5lVG9WZXJ0aWNhbEFiczoKKyAgICAgICAgICAgIGlmICghYmxlbmRMaW5lVG9WZXJ0aWNhbFNl
Z21lbnQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBQYXRoU2VnQ2xvc2VQYXRoOgorICAgICAgICAgICAgbV9jb25zdW1l
ci0+Y2xvc2VQYXRoKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQYXRoU2Vn
Q3VydmVUb0N1YmljUmVsOgorICAgICAgICAgICAgbV9tb2RlID0gUmVsYXRpdmVDb29yZGluYXRl
czsKKyAgICAgICAgY2FzZSBQYXRoU2VnQ3VydmVUb0N1YmljQWJzOgorICAgICAgICAgICAgaWYg
KCFibGVuZEN1cnZlVG9DdWJpY1NlZ21lbnQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQYXRoU2VnQ3VydmVUb0N1Ymlj
U21vb3RoUmVsOgorICAgICAgICAgICAgbV9tb2RlID0gUmVsYXRpdmVDb29yZGluYXRlczsKKyAg
ICAgICAgY2FzZSBQYXRoU2VnQ3VydmVUb0N1YmljU21vb3RoQWJzOgorICAgICAgICAgICAgaWYg
KCFibGVuZEN1cnZlVG9DdWJpY1Ntb290aFNlZ21lbnQoKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQYXRoU2VnQ3VydmVU
b1F1YWRyYXRpY1JlbDoKKyAgICAgICAgICAgIG1fbW9kZSA9IFJlbGF0aXZlQ29vcmRpbmF0ZXM7
CisgICAgICAgIGNhc2UgUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNBYnM6CisgICAgICAgICAgICBp
ZiAoIWJsZW5kQ3VydmVUb1F1YWRyYXRpY1NlZ21lbnQoKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQYXRoU2VnQ3VydmVU
b1F1YWRyYXRpY1Ntb290aFJlbDoKKyAgICAgICAgICAgIG1fbW9kZSA9IFJlbGF0aXZlQ29vcmRp
bmF0ZXM7CisgICAgICAgIGNhc2UgUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNTbW9vdGhBYnM6Cisg
ICAgICAgICAgICBpZiAoIWJsZW5kQ3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQoKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBQYXRoU2VnQXJjUmVsOgorICAgICAgICAgICAgbV9tb2RlID0gUmVsYXRpdmVDb29yZGlu
YXRlczsKKyAgICAgICAgY2FzZSBQYXRoU2VnQXJjQWJzOgorICAgICAgICAgICAgaWYgKCFibGVu
ZEFyY1RvU2VnbWVudCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB9CisgICAgICAgIGlmICghbV9mcm9tU291cmNlLT5oYXNNb3JlRGF0YSgpKQorICAg
ICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFNWR1Bh
dGhCbGVuZGVyOjpjbGVhbnVwKCkKK3sKKyAgICBBU1NFUlQobV90b1NvdXJjZSk7CisgICAgQVNT
RVJUKG1fZnJvbVNvdXJjZSk7CisgICAgQVNTRVJUKG1fY29uc3VtZXIpOworCisgICAgbV9jb25z
dW1lci0+Y2xlYW51cCgpOworICAgIG1fdG9Tb3VyY2UgPSAwOworICAgIG1fZnJvbVNvdXJjZSA9
IDA7CisgICAgbV9jb25zdW1lciA9IDA7Cit9CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShTVkcp
CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRoQmxlbmRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3ZnL1NWR1BhdGhCbGVuZGVyLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3N2Zy9TVkdQ
YXRoQmxlbmRlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjaWZuZGVmIFNWR1BhdGhCbGVuZGVyX2gKKyNkZWZpbmUgU1ZHUGF0aEJsZW5kZXJfaAor
CisjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJTVkdQYXRoQ29uc3VtZXIuaCIKKyNpbmNsdWRl
ICJTVkdQYXRoU291cmNlLmgiCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU1ZHUGF0aEJsZW5kZXIgOiBwdWJsaWMgTm9uY29weWFi
bGUgeworcHVibGljOgorICAgIFNWR1BhdGhCbGVuZGVyKCk7CisgICAgflNWR1BhdGhCbGVuZGVy
KCk7CisKKyAgICBib29sIGJsZW5kQW5pbWF0ZWRQYXRoKGZsb2F0LCBTVkdQYXRoU291cmNlKiwg
U1ZHUGF0aFNvdXJjZSosIFNWR1BhdGhDb25zdW1lciopOworICAgIHZvaWQgY2xlYW51cCgpOwor
Citwcml2YXRlOgorICAgIGJvb2wgYmxlbmRNb3ZlVG9TZWdtZW50KCk7CisgICAgYm9vbCBibGVu
ZExpbmVUb1NlZ21lbnQoKTsKKyAgICBib29sIGJsZW5kTGluZVRvSG9yaXpvbnRhbFNlZ21lbnQo
KTsKKyAgICBib29sIGJsZW5kTGluZVRvVmVydGljYWxTZWdtZW50KCk7CisgICAgYm9vbCBibGVu
ZEN1cnZlVG9DdWJpY1NlZ21lbnQoKTsKKyAgICBib29sIGJsZW5kQ3VydmVUb0N1YmljU21vb3Ro
U2VnbWVudCgpOworICAgIGJvb2wgYmxlbmRDdXJ2ZVRvUXVhZHJhdGljU2VnbWVudCgpOworICAg
IGJvb2wgYmxlbmRDdXJ2ZVRvUXVhZHJhdGljU21vb3RoU2VnbWVudCgpOworICAgIGJvb2wgYmxl
bmRBcmNUb1NlZ21lbnQoKTsKKworICAgIGZsb2F0IGJsZW5kQW5pbWF0ZWRGbG9hdChmbG9hdCwg
ZmxvYXQpOworICAgIEZsb2F0UG9pbnQgYmxlbmRBbmltYXRlZEZsb2F0UG9pbnQoRmxvYXRQb2lu
dCYsIEZsb2F0UG9pbnQmKTsKKworICAgIFNWR1BhdGhTb3VyY2UqIG1fZnJvbVNvdXJjZTsKKyAg
ICBTVkdQYXRoU291cmNlKiBtX3RvU291cmNlOworICAgIFNWR1BhdGhDb25zdW1lciogbV9jb25z
dW1lcjsKKyAgICBQYXRoQ29vcmRpbmF0ZU1vZGUgbV9tb2RlOworICAgIGZsb2F0IG1fcHJvZ3Jl
c3M7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1ZH
KQorI2VuZGlmIC8vIFNWR1BhdGhCbGVuZGVyX2gKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhQ
YXJzZXJGYWN0b3J5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2Vy
RmFjdG9yeS5jcHAJKHJldmlzaW9uIDY1MjYwKQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0aFBhcnNl
ckZhY3RvcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw3IEBACiAjaWYgRU5BQkxF
KFNWRykKICNpbmNsdWRlICJTVkdQYXRoUGFyc2VyRmFjdG9yeS5oIgogCi0jaW5jbHVkZSAiU3Ry
aW5nQnVpbGRlci5oIgorI2luY2x1ZGUgIlNWR1BhdGhCbGVuZGVyLmgiCiAjaW5jbHVkZSAiU1ZH
UGF0aEJ1aWxkZXIuaCIKICNpbmNsdWRlICJTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXIuaCIKICNp
bmNsdWRlICJTVkdQYXRoQnl0ZVN0cmVhbVNvdXJjZS5oIgpAQCAtMzEsNiArMzEsNyBAQAogI2lu
Y2x1ZGUgIlNWR1BhdGhTZWdMaXN0U291cmNlLmgiCiAjaW5jbHVkZSAiU1ZHUGF0aFN0cmluZ0J1
aWxkZXIuaCIKICNpbmNsdWRlICJTVkdQYXRoU3RyaW5nU291cmNlLmgiCisjaW5jbHVkZSAiU3Ry
aW5nQnVpbGRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTg0LDYgKzg1LDE1IEBA
IHN0YXRpYyBTVkdQYXRoUGFyc2VyKiBnbG9iYWxTVkdQYXRoUGFyc2UKICAgICByZXR1cm4gc19w
YXJzZXI7CiB9CiAKK3N0YXRpYyBTVkdQYXRoQmxlbmRlciogZ2xvYmFsU1ZHUGF0aEJsZW5kZXIo
KQoreworICAgIHN0YXRpYyBTVkdQYXRoQmxlbmRlciogc19ibGVuZGVyID0gMDsKKyAgICBpZiAo
IXNfYmxlbmRlcikKKyAgICAgICAgc19ibGVuZGVyID0gbmV3IFNWR1BhdGhCbGVuZGVyOworCisg
ICAgcmV0dXJuIHNfYmxlbmRlcjsKK30KKwogU1ZHUGF0aFBhcnNlckZhY3RvcnkqIFNWR1BhdGhQ
YXJzZXJGYWN0b3J5OjpzZWxmKCkKIHsKICAgICBzdGF0aWMgU1ZHUGF0aFBhcnNlckZhY3Rvcnkq
IHNfaW5zdGFuY2UgPSAwOwpAQCAtMjI0LDYgKzIzNCwyNSBAQCBib29sIFNWR1BhdGhQYXJzZXJG
YWN0b3J5OjpidWlsZFNWR1BhdGhCCiAgICAgcmV0dXJuIG9rOwogfQogCitib29sIFNWR1BhdGhQ
YXJzZXJGYWN0b3J5OjpidWlsZEFuaW1hdGVkU1ZHUGF0aEJ5dGVTdHJlYW0oU1ZHUGF0aEJ5dGVT
dHJlYW0qIGZyb21TdHJlYW0sIFNWR1BhdGhCeXRlU3RyZWFtKiB0b1N0cmVhbSwgT3duUHRyPFNW
R1BhdGhCeXRlU3RyZWFtPiYgcmVzdWx0LCBmbG9hdCBwcm9ncmVzcykKK3sKKyAgICBBU1NFUlQo
ZnJvbVN0cmVhbSk7CisgICAgQVNTRVJUKHRvU3RyZWFtKTsKKyAgICBpZiAoZnJvbVN0cmVhbS0+
aXNFbXB0eSgpIHx8IHRvU3RyZWFtLT5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIE93blB0cjxTVkdQYXRoQnl0ZVN0cmVhbT4gc3RyZWFtID0gU1ZHUGF0aEJ5dGVTdHJl
YW06OmNyZWF0ZSgpOworICAgIFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlciogYnVpbGRlciA9IGds
b2JhbFNWR1BhdGhCeXRlU3RyZWFtQnVpbGRlcihzdHJlYW0uZ2V0KCkpOworCisgICAgT3duUHRy
PFNWR1BhdGhCeXRlU3RyZWFtU291cmNlPiBmcm9tU291cmNlID0gU1ZHUGF0aEJ5dGVTdHJlYW1T
b3VyY2U6OmNyZWF0ZShmcm9tU3RyZWFtKTsKKyAgICBPd25QdHI8U1ZHUGF0aEJ5dGVTdHJlYW1T
b3VyY2U+IHRvU291cmNlID0gU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2U6OmNyZWF0ZSh0b1N0cmVh
bSk7CisgICAgU1ZHUGF0aEJsZW5kZXIqIGJsZW5kZXIgPSBnbG9iYWxTVkdQYXRoQmxlbmRlcigp
OworICAgIGJvb2wgb2sgPSBibGVuZGVyLT5ibGVuZEFuaW1hdGVkUGF0aChwcm9ncmVzcywgZnJv
bVNvdXJjZS5nZXQoKSwgdG9Tb3VyY2UuZ2V0KCksIGJ1aWxkZXIpOworICAgIHJlc3VsdCA9IHN0
cmVhbS5yZWxlYXNlKCk7CisgICAgYmxlbmRlci0+Y2xlYW51cCgpOworICAgIHJldHVybiBvazsK
K30KKwogfQogCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXJGYWN0b3J5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aFBhcnNlckZhY3RvcnkuaAkocmV2
aXNpb24gNjUyNjApCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2VyRmFjdG9yeS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Niw2ICs0Niw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgYnVpbGRTVkdQ
YXRoQnl0ZVN0cmVhbUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiwgT3duUHRyPFNWR1BhdGhCeXRl
U3RyZWFtPiYsIFBhdGhQYXJzaW5nTW9kZSk7CiAKKyAgICBib29sIGJ1aWxkQW5pbWF0ZWRTVkdQ
YXRoQnl0ZVN0cmVhbShTVkdQYXRoQnl0ZVN0cmVhbSosIFNWR1BhdGhCeXRlU3RyZWFtKiwgT3du
UHRyPFNWR1BhdGhCeXRlU3RyZWFtPiYsIGZsb2F0KTsKKwogcHJpdmF0ZToKICAgICBTVkdQYXRo
UGFyc2VyRmFjdG9yeSgpOwogICAgIH5TVkdQYXRoUGFyc2VyRmFjdG9yeSgpOwpJbmRleDogV2Vi
Q29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NW
R1BhdGhTZWdMaXN0LmNwcAkocmV2aXNpb24gNjUyNjApCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRo
U2VnTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE5ICsyNiwxMSBAQAogCiAjaW5jbHVk
ZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgotI2luY2x1ZGUg
IkZsb2F0U2l6ZS5oIgotI2luY2x1ZGUgIlBhdGguaCIKICNpbmNsdWRlICJQYXRoVHJhdmVyc2Fs
U3RhdGUuaCIKLSNpbmNsdWRlICJTVkdQYXRoU2VnQXJjLmgiCiAjaW5jbHVkZSAiU1ZHUGF0aFNl
Z0Nsb3NlUGF0aC5oIgogI2luY2x1ZGUgIlNWR1BhdGhTZWdNb3ZldG8uaCIKICNpbmNsdWRlICJT
VkdQYXRoU2VnTGluZXRvLmgiCi0jaW5jbHVkZSAiU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWwu
aCIKLSNpbmNsdWRlICJTVkdQYXRoU2VnTGluZXRvVmVydGljYWwuaCIKICNpbmNsdWRlICJTVkdQ
YXRoU2VnQ3VydmV0b0N1YmljLmgiCi0jaW5jbHVkZSAiU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Nt
b290aC5oIgotI2luY2x1ZGUgIlNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljLmgiCi0jaW5jbHVk
ZSAiU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGguaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC0xMDMsMTI2ICs5NSw2IEBAIHVuc2lnbmVkIFNWR1BhdGhTZWdMaXN0OjpnZXRQ
YXRoU2VnQXRMZW4KICAgICAvLyBXZWJLaXQvT3BlcmEvRkYgYWxsIHJldHVybiB0aGUgbGFzdCBw
YXRoIHNlZ21lbnQgaWYgdGhlIGRpc3RhbmNlIGV4Y2VlZHMgdGhlIGFjdHVhbCBwYXRoIGxlbmd0
aDoKICAgICByZXR1cm4gdHJhdmVyc2FsU3RhdGUubV9zZWdtZW50SW5kZXggPyB0cmF2ZXJzYWxT
dGF0ZS5tX3NlZ21lbnRJbmRleCAtIDEgOiAwOwogfQotICAgIAotZmxvYXQgYWRqdXN0QW5pbWF0
ZWRWYWx1ZShmbG9hdCBmcm9tLCBmbG9hdCB0bywgZmxvYXQgcHJvZ3Jlc3MpCi17Ci0gICAgcmV0
dXJuICh0byAtIGZyb20pICogcHJvZ3Jlc3MgKyBmcm9tOwotfQotICAgIAotI2RlZmluZSBCTEVO
RFBBVEhTRUcxKGNsYXNzLCBhdHRyMSkgXAotICAgIGNsYXNzOjpjcmVhdGUoYWRqdXN0QW5pbWF0
ZWRWYWx1ZShzdGF0aWNfY2FzdDxjbGFzcyo+KGZyb20pLT5hdHRyMSgpLCBzdGF0aWNfY2FzdDxj
bGFzcyo+KHRvKS0+YXR0cjEoKSwgcHJvZ3Jlc3MpKQotICAgIAotI2RlZmluZSBCTEVORFBBVEhT
RUcyKGNsYXNzLCBhdHRyMSwgYXR0cjIpIFwKLSAgICBjbGFzczo6Y3JlYXRlKGFkanVzdEFuaW1h
dGVkVmFsdWUoc3RhdGljX2Nhc3Q8Y2xhc3MqPihmcm9tKS0+YXR0cjEoKSwgc3RhdGljX2Nhc3Q8
Y2xhc3MqPih0byktPmF0dHIxKCksIHByb2dyZXNzKSwgXAotICAgICAgICAgICAgICAgICAgICBh
ZGp1c3RBbmltYXRlZFZhbHVlKHN0YXRpY19jYXN0PGNsYXNzKj4oZnJvbSktPmF0dHIyKCksIHN0
YXRpY19jYXN0PGNsYXNzKj4odG8pLT5hdHRyMigpLCBwcm9ncmVzcykpCi0gICAgCi0jZGVmaW5l
IEJMRU5EUEFUSFNFRzQoY2xhc3MsIGF0dHIxLCBhdHRyMiwgYXR0cjMsIGF0dHI0KSBcCi0gICAg
Y2xhc3M6OmNyZWF0ZShhZGp1c3RBbmltYXRlZFZhbHVlKHN0YXRpY19jYXN0PGNsYXNzKj4oZnJv
bSktPmF0dHIxKCksIHN0YXRpY19jYXN0PGNsYXNzKj4odG8pLT5hdHRyMSgpLCBwcm9ncmVzcyks
IFwKLSAgICAgICAgICAgICAgICBhZGp1c3RBbmltYXRlZFZhbHVlKHN0YXRpY19jYXN0PGNsYXNz
Kj4oZnJvbSktPmF0dHIyKCksIHN0YXRpY19jYXN0PGNsYXNzKj4odG8pLT5hdHRyMigpLCBwcm9n
cmVzcyksIFwKLSAgICAgICAgICAgICAgICBhZGp1c3RBbmltYXRlZFZhbHVlKHN0YXRpY19jYXN0
PGNsYXNzKj4oZnJvbSktPmF0dHIzKCksIHN0YXRpY19jYXN0PGNsYXNzKj4odG8pLT5hdHRyMygp
LCBwcm9ncmVzcyksIFwKLSAgICAgICAgICAgICAgICBhZGp1c3RBbmltYXRlZFZhbHVlKHN0YXRp
Y19jYXN0PGNsYXNzKj4oZnJvbSktPmF0dHI0KCksIHN0YXRpY19jYXN0PGNsYXNzKj4odG8pLT5h
dHRyNCgpLCBwcm9ncmVzcykpCi0gICAgCi0jZGVmaW5lIEJMRU5EUEFUSFNFRzYoY2xhc3MsIGF0
dHIxLCBhdHRyMiwgYXR0cjMsIGF0dHI0LCBhdHRyNSwgYXR0cjYpIFwKLSAgICBjbGFzczo6Y3Jl
YXRlKGFkanVzdEFuaW1hdGVkVmFsdWUoc3RhdGljX2Nhc3Q8Y2xhc3MqPihmcm9tKS0+YXR0cjEo
KSwgc3RhdGljX2Nhc3Q8Y2xhc3MqPih0byktPmF0dHIxKCksIHByb2dyZXNzKSwgXAotICAgICAg
ICAgICAgICAgIGFkanVzdEFuaW1hdGVkVmFsdWUoc3RhdGljX2Nhc3Q8Y2xhc3MqPihmcm9tKS0+
YXR0cjIoKSwgc3RhdGljX2Nhc3Q8Y2xhc3MqPih0byktPmF0dHIyKCksIHByb2dyZXNzKSwgXAot
ICAgICAgICAgICAgICAgIGFkanVzdEFuaW1hdGVkVmFsdWUoc3RhdGljX2Nhc3Q8Y2xhc3MqPihm
cm9tKS0+YXR0cjMoKSwgc3RhdGljX2Nhc3Q8Y2xhc3MqPih0byktPmF0dHIzKCksIHByb2dyZXNz
KSwgXAotICAgICAgICAgICAgICAgIGFkanVzdEFuaW1hdGVkVmFsdWUoc3RhdGljX2Nhc3Q8Y2xh
c3MqPihmcm9tKS0+YXR0cjQoKSwgc3RhdGljX2Nhc3Q8Y2xhc3MqPih0byktPmF0dHI0KCksIHBy
b2dyZXNzKSwgXAotICAgICAgICAgICAgICAgIGFkanVzdEFuaW1hdGVkVmFsdWUoc3RhdGljX2Nh
c3Q8Y2xhc3MqPihmcm9tKS0+YXR0cjUoKSwgc3RhdGljX2Nhc3Q8Y2xhc3MqPih0byktPmF0dHI1
KCksIHByb2dyZXNzKSwgXAotICAgICAgICAgICAgICAgIGFkanVzdEFuaW1hdGVkVmFsdWUoc3Rh
dGljX2Nhc3Q8Y2xhc3MqPihmcm9tKS0+YXR0cjYoKSwgc3RhdGljX2Nhc3Q8Y2xhc3MqPih0bykt
PmF0dHI2KCksIHByb2dyZXNzKSkKLQotI2RlZmluZSBCTEVORFBBVEhTRUc3KGNsYXNzLCBhdHRy
MSwgYXR0cjIsIGF0dHIzLCBhdHRyNCwgYXR0cjUsIGJvb2wxLCBib29sMikgXAotICAgIGNsYXNz
OjpjcmVhdGUoYWRqdXN0QW5pbWF0ZWRWYWx1ZShzdGF0aWNfY2FzdDxjbGFzcyo+KGZyb20pLT5h
dHRyMSgpLCBzdGF0aWNfY2FzdDxjbGFzcyo+KHRvKS0+YXR0cjEoKSwgcHJvZ3Jlc3MpLCBcCi0g
ICAgICAgICAgICAgICAgYWRqdXN0QW5pbWF0ZWRWYWx1ZShzdGF0aWNfY2FzdDxjbGFzcyo+KGZy
b20pLT5hdHRyMigpLCBzdGF0aWNfY2FzdDxjbGFzcyo+KHRvKS0+YXR0cjIoKSwgcHJvZ3Jlc3Mp
LCBcCi0gICAgICAgICAgICAgICAgYWRqdXN0QW5pbWF0ZWRWYWx1ZShzdGF0aWNfY2FzdDxjbGFz
cyo+KGZyb20pLT5hdHRyMygpLCBzdGF0aWNfY2FzdDxjbGFzcyo+KHRvKS0+YXR0cjMoKSwgcHJv
Z3Jlc3MpLCBcCi0gICAgICAgICAgICAgICAgYWRqdXN0QW5pbWF0ZWRWYWx1ZShzdGF0aWNfY2Fz
dDxjbGFzcyo+KGZyb20pLT5hdHRyNCgpLCBzdGF0aWNfY2FzdDxjbGFzcyo+KHRvKS0+YXR0cjQo
KSwgcHJvZ3Jlc3MpLCBcCi0gICAgICAgICAgICAgICAgYWRqdXN0QW5pbWF0ZWRWYWx1ZShzdGF0
aWNfY2FzdDxjbGFzcyo+KGZyb20pLT5hdHRyNSgpLCBzdGF0aWNfY2FzdDxjbGFzcyo+KHRvKS0+
YXR0cjUoKSwgcHJvZ3Jlc3MpLCBcCi0gICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Ym9vbD4o
YWRqdXN0QW5pbWF0ZWRWYWx1ZShzdGF0aWNfY2FzdDxjbGFzcyo+KGZyb20pLT5ib29sMSgpLCBz
dGF0aWNfY2FzdDxjbGFzcyo+KHRvKS0+Ym9vbDEoKSwgcHJvZ3Jlc3MpKSwgXAotICAgICAgICAg
ICAgICAgIHN0YXRpY19jYXN0PGJvb2w+KGFkanVzdEFuaW1hdGVkVmFsdWUoc3RhdGljX2Nhc3Q8
Y2xhc3MqPihmcm9tKS0+Ym9vbDIoKSwgc3RhdGljX2Nhc3Q8Y2xhc3MqPih0byktPmJvb2wyKCks
IHByb2dyZXNzKSkpCi0KLVBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0xpc3Q+IFNWR1BhdGhTZWdMaXN0
OjpjcmVhdGVBbmltYXRlZChjb25zdCBTVkdQYXRoU2VnTGlzdCogZnJvbUxpc3QsIGNvbnN0IFNW
R1BhdGhTZWdMaXN0KiB0b0xpc3QsIGZsb2F0IHByb2dyZXNzKQotewotICAgIHVuc2lnbmVkIGl0
ZW1Db3VudCA9IGZyb21MaXN0LT5udW1iZXJPZkl0ZW1zKCk7Ci0gICAgaWYgKCFpdGVtQ291bnQg
fHwgaXRlbUNvdW50ICE9IHRvTGlzdC0+bnVtYmVyT2ZJdGVtcygpKQotICAgICAgICByZXR1cm4g
MDsKLSAgICBSZWZQdHI8U1ZHUGF0aFNlZ0xpc3Q+IHJlc3VsdCA9IGNyZWF0ZShmcm9tTGlzdC0+
YXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUoKSk7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgZm9yICh1bnNpZ25lZCBuID0gMDsgbiA8IGl0ZW1Db3VudDsgKytuKSB7Ci0gICAgICAgIFNW
R1BhdGhTZWcqIGZyb20gPSBmcm9tTGlzdC0+Z2V0SXRlbShuLCBlYykuZ2V0KCk7Ci0gICAgICAg
IGlmIChlYykKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBTVkdQYXRoU2VnKiB0byA9
IHRvTGlzdC0+Z2V0SXRlbShuLCBlYykuZ2V0KCk7Ci0gICAgICAgIGlmIChlYykKLSAgICAgICAg
ICAgIHJldHVybiAwOwotICAgICAgICBpZiAoZnJvbS0+cGF0aFNlZ1R5cGUoKSA9PSBQYXRoU2Vn
VW5rbm93biB8fCBmcm9tLT5wYXRoU2VnVHlwZSgpICE9IHRvLT5wYXRoU2VnVHlwZSgpKQotICAg
ICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIFJlZlB0cjxTVkdQYXRoU2VnPiBzZWdtZW50ID0g
MDsKLSAgICAgICAgc3dpdGNoIChzdGF0aWNfY2FzdDxTVkdQYXRoU2VnVHlwZT4oZnJvbS0+cGF0
aFNlZ1R5cGUoKSkpIHsKLSAgICAgICAgY2FzZSBQYXRoU2VnQ2xvc2VQYXRoOgotICAgICAgICAg
ICAgc2VnbWVudCA9IFNWR1BhdGhTZWdDbG9zZVBhdGg6OmNyZWF0ZSgpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgUGF0aFNlZ0xpbmVUb0hvcml6b250YWxBYnM6Ci0gICAgICAg
ICAgICBzZWdtZW50ID0gQkxFTkRQQVRIU0VHMShTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbEFi
cywgeCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBQYXRoU2VnTGluZVRvSG9y
aXpvbnRhbFJlbDoKLSAgICAgICAgICAgIHNlZ21lbnQgPSBCTEVORFBBVEhTRUcxKFNWR1BhdGhT
ZWdMaW5ldG9Ib3Jpem9udGFsUmVsLCB4KTsKLSAgICAgICAgICAgIGJyZWFrOyAgIAotICAgICAg
ICBjYXNlIFBhdGhTZWdMaW5lVG9WZXJ0aWNhbEFiczoKLSAgICAgICAgICAgIHNlZ21lbnQgPSBC
TEVORFBBVEhTRUcxKFNWR1BhdGhTZWdMaW5ldG9WZXJ0aWNhbEFicywgeSk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBQYXRoU2VnTGluZVRvVmVydGljYWxSZWw6Ci0gICAgICAg
ICAgICBzZWdtZW50ID0gQkxFTkRQQVRIU0VHMShTVkdQYXRoU2VnTGluZXRvVmVydGljYWxSZWws
IHkpOwotICAgICAgICAgICAgYnJlYWs7ICAgICAgICAKLSAgICAgICAgY2FzZSBQYXRoU2VnTW92
ZVRvQWJzOgotICAgICAgICAgICAgc2VnbWVudCA9IEJMRU5EUEFUSFNFRzIoU1ZHUGF0aFNlZ01v
dmV0b0FicywgeCwgeSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBQYXRoU2Vn
TW92ZVRvUmVsOgotICAgICAgICAgICAgc2VnbWVudCA9IEJMRU5EUEFUSFNFRzIoU1ZHUGF0aFNl
Z01vdmV0b1JlbCwgeCwgeSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBQYXRo
U2VnTGluZVRvQWJzOgotICAgICAgICAgICAgc2VnbWVudCA9IEJMRU5EUEFUSFNFRzIoU1ZHUGF0
aFNlZ0xpbmV0b0FicywgeCwgeSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBQ
YXRoU2VnTGluZVRvUmVsOgotICAgICAgICAgICAgc2VnbWVudCA9IEJMRU5EUEFUSFNFRzIoU1ZH
UGF0aFNlZ0xpbmV0b1JlbCwgeCwgeSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBQYXRoU2VnQ3VydmVUb0N1YmljQWJzOgotICAgICAgICAgICAgc2VnbWVudCA9IEJMRU5EUEFU
SFNFRzYoU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0FicywgeCwgeSwgeDEsIHkxLCB4MiwgeTIpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUGF0aFNlZ0N1cnZlVG9DdWJpY1JlbDoK
LSAgICAgICAgICAgIHNlZ21lbnQgPSBCTEVORFBBVEhTRUc2KFNWR1BhdGhTZWdDdXJ2ZXRvQ3Vi
aWNSZWwsIHgsIHksIHgxLCB5MSwgeDIsIHkyKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIFBhdGhTZWdDdXJ2ZVRvQ3ViaWNTbW9vdGhBYnM6Ci0gICAgICAgICAgICBzZWdtZW50
ID0gQkxFTkRQQVRIU0VHNChTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoQWJzLCB4LCB5LCB4
MiwgeTIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUGF0aFNlZ0N1cnZlVG9D
dWJpY1Ntb290aFJlbDoKLSAgICAgICAgICAgIHNlZ21lbnQgPSBCTEVORFBBVEhTRUc0KFNWR1Bh
dGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhSZWwsIHgsIHksIHgyLCB5Mik7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBQYXRoU2VnQ3VydmVUb1F1YWRyYXRpY0FiczoKLSAgICAgICAg
ICAgIHNlZ21lbnQgPSBCTEVORFBBVEhTRUc0KFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljQWJz
LCB4LCB5LCB4MSwgeTEpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUGF0aFNl
Z0N1cnZlVG9RdWFkcmF0aWNSZWw6Ci0gICAgICAgICAgICBzZWdtZW50ID0gQkxFTkRQQVRIU0VH
NChTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1JlbCwgeCwgeSwgeDEsIHkxKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIFBhdGhTZWdDdXJ2ZVRvUXVhZHJhdGljU21vb3RoQWJz
OgotICAgICAgICAgICAgc2VnbWVudCA9IEJMRU5EUEFUSFNFRzIoU1ZHUGF0aFNlZ0N1cnZldG9R
dWFkcmF0aWNTbW9vdGhBYnMsIHgsIHkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgUGF0aFNlZ0N1cnZlVG9RdWFkcmF0aWNTbW9vdGhSZWw6Ci0gICAgICAgICAgICBzZWdtZW50
ID0gQkxFTkRQQVRIU0VHMihTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aFJlbCwgeCwg
eSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBQYXRoU2VnQXJjQWJzOgotICAg
ICAgICAgICAgc2VnbWVudCA9IEJMRU5EUEFUSFNFRzcoU1ZHUGF0aFNlZ0FyY0FicywgeCwgeSwg
cjEsIHIyLCBhbmdsZSwgbGFyZ2VBcmNGbGFnLCBzd2VlcEZsYWcpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgUGF0aFNlZ0FyY1JlbDoKLSAgICAgICAgICAgIHNlZ21lbnQgPSBC
TEVORFBBVEhTRUc3KFNWR1BhdGhTZWdBcmNSZWwsIHgsIHksIHIxLCByMiwgYW5nbGUsIGxhcmdl
QXJjRmxhZywgc3dlZXBGbGFnKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFBh
dGhTZWdVbmtub3duOgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
IH0KLSAgICAgICAgcmVzdWx0LT5hcHBlbmRJdGVtKHNlZ21lbnQsIGVjKTsKLSAgICAgICAgaWYg
KGVjKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQucmVs
ZWFzZSgpOwotfQogCiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuaAkocmV2aXNpb24gNjUyNjAp
CisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwy
MyArMjYsMTggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgUGF0aDsKLSAg
ICBjbGFzcyBTVkdFbGVtZW50OwotIAotICAgIGNsYXNzIFNWR1BhdGhTZWdMaXN0IDogcHVibGlj
IFNWR0xpc3Q8UmVmUHRyPFNWR1BhdGhTZWc+ID4gewotICAgIHB1YmxpYzoKLSAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0xpc3Q+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGVOYW1lKSB7IHJldHVybiBhZG9wdFJlZihuZXcgU1ZHUGF0aFNlZ0xpc3QoYXR0
cmlidXRlTmFtZSkpOyB9Ci0gICAgICAgIHZpcnR1YWwgflNWR1BhdGhTZWdMaXN0KCk7Ci0KLSAg
ICAgICAgdW5zaWduZWQgZ2V0UGF0aFNlZ0F0TGVuZ3RoKGRvdWJsZSwgRXhjZXB0aW9uQ29kZSYp
OwotICAgICAgICAKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHUGF0aFNlZ0xpc3Q+IGNy
ZWF0ZUFuaW1hdGVkKGNvbnN0IFNWR1BhdGhTZWdMaXN0KiBmcm9tTGlzdCwgY29uc3QgU1ZHUGF0
aFNlZ0xpc3QqIHRvTGlzdCwgZmxvYXQgcHJvZ3Jlc3MpOwotICAgICAgICAKLSAgICBwcml2YXRl
OgotICAgICAgICBTVkdQYXRoU2VnTGlzdChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgfTsK
K2NsYXNzIFNWR0VsZW1lbnQ7CiAKLSAgICBmbG9hdCBhZGp1c3RBbmltYXRlZFZhbHVlKGZsb2F0
IGZyb20sIGZsb2F0IHRvLCBmbG9hdCBwcm9ncmVzcyk7CitjbGFzcyBTVkdQYXRoU2VnTGlzdCA6
IHB1YmxpYyBTVkdMaXN0PFJlZlB0cjxTVkdQYXRoU2VnPiA+IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTVkdQYXRoU2VnTGlzdD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbWUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdQYXRoU2VnTGlzdChhdHRy
aWJ1dGVOYW1lKSk7IH0KKyAgICB2aXJ0dWFsIH5TVkdQYXRoU2VnTGlzdCgpOworCisgICAgdW5z
aWduZWQgZ2V0UGF0aFNlZ0F0TGVuZ3RoKGRvdWJsZSwgRXhjZXB0aW9uQ29kZSYpOworCitwcml2
YXRlOgorICAgIFNWR1BhdGhTZWdMaXN0KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKK307CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHUG9pbnRMaXN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQb2ludExpc3QuY3BwCShyZXZpc2lvbiA2
NTI2MCkKKysrIFdlYkNvcmUvc3ZnL1NWR1BvaW50TGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU0LDYgKzU0LDExIEBAIFN0cmluZyBTVkdQb2ludExpc3Q6OnZhbHVlQXNTdHJpbmcoKSBjb24K
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCitmbG9hdCBpbmxpbmUgYWRqdXN0QW5pbWF0ZWRWYWx1
ZShmbG9hdCBmcm9tLCBmbG9hdCB0bywgZmxvYXQgcHJvZ3Jlc3MpCit7CisgICAgcmV0dXJuICh0
byAtIGZyb20pICogcHJvZ3Jlc3MgKyBmcm9tOworfQorCiBQYXNzUmVmUHRyPFNWR1BvaW50TGlz
dD4gU1ZHUG9pbnRMaXN0OjpjcmVhdGVBbmltYXRlZChjb25zdCBTVkdQb2ludExpc3QqIGZyb21M
aXN0LCBjb25zdCBTVkdQb2ludExpc3QqIHRvTGlzdCwgZmxvYXQgcHJvZ3Jlc3MpCiB7CiAgICAg
dW5zaWduZWQgaXRlbUNvdW50ID0gZnJvbUxpc3QtPm51bWJlck9mSXRlbXMoKTsK
</data>
<flag name="review"
          id="52779"
          type_id="1"
          status="+"
          setter="zimmermann"
    />
          </attachment>
      

    </bug>

</bugzilla>