<?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>73258</bug_id>
          
          <creation_ts>2011-11-28 14:59:59 -0800</creation_ts>
          <short_desc>WebSQLDatabase could use some better error reporting.</short_desc>
          <delta_ts>2011-11-30 04:59:28 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Nordman">michaeln</reporter>
          <assigned_to name="Michael Nordman">michaeln</assigned_to>
          <cc>fishd</cc>
    
    <cc>levin</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>510232</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2011-11-28 14:59:59 -0800</bug_when>
    <thetext>This is a continuation of https://bugs.webkit.org/show_bug.cgi?id=71575

This patch provides a way for errors in webcore to get reported in chrome&apos;s &apos;histogram&apos; logging mechanism. For the chromium side of this see http://codereview.chromium.org/8590043/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510236</commentid>
    <comment_count>1</comment_count>
      <attachid>116830</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2011-11-28 15:06:58 -0800</bug_when>
    <thetext>Created attachment 116830
reportError</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510250</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-28 15:10:45 -0800</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510324</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2011-11-28 16:37:20 -0800</bug_when>
    <thetext>hello, ptal here and at http://codereview.chromium.org/8590043/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510520</commentid>
    <comment_count>4</comment_count>
      <attachid>116830</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-11-28 23:05:03 -0800</bug_when>
    <thetext>Comment on attachment 116830
reportError

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

Just a few minor nits. Should be very quick to fix up.

&gt; Source/WebCore/storage/AbstractDatabase.cpp:189
&gt; +                                   const String&amp; displayName, unsigned long estimatedSize, bool isSyncDatabase)

Since the new parameter isSyncDatabase is passed as true/false at the calling site (as opposed to a variable name that would be more readable), it is the current style to make this an enum.

&gt; Source/WebCore/storage/AbstractDatabase.cpp:605
&gt; +{ }

Ideally put the } on a new line or the { } at the end of the line is another typical style.

&gt; Source/WebCore/storage/ChangeVersionWrapper.cpp:57
&gt; +                                      sqliteError,  database-&gt;sqliteDatabase().lastErrorMsg());

extra space after ,

&gt; Source/WebCore/storage/SQLTransaction.cpp:485
&gt; +            m_database-&gt;reportCommitTransactionResult(3, SQLError::UNKNOWN_ERR, 0); // ???

why the // ??? ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511093</commentid>
    <comment_count>5</comment_count>
      <attachid>117043</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2011-11-29 13:59:14 -0800</bug_when>
    <thetext>Created attachment 117043
reportError

Thnx for looking... done, done, done, and done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511645</commentid>
    <comment_count>6</comment_count>
      <attachid>117043</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-30 04:59:21 -0800</bug_when>
    <thetext>Comment on attachment 117043
reportError

Clearing flags on attachment: 117043

Committed r101492: &lt;http://trac.webkit.org/changeset/101492&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511646</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-30 04:59:28 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116830</attachid>
            <date>2011-11-28 15:06:58 -0800</date>
            <delta_ts>2011-11-29 13:59:14 -0800</delta_ts>
            <desc>reportError</desc>
            <filename>dbHist2.txt</filename>
            <type>text/plain</type>
            <size>40103</size>
            <attacher name="Michael Nordman">michaeln</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMTI4NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDExLTExLTI4ICBNaWNoYWVs
IE5vcmRtYW4gIDxtaWNoYWVsbkBnb29nbGUuY28+CisKKyAgICAgICAgW2Nocm9taXVtXSBXZWJT
UUxEYXRhYmFzZSBjb3VsZCB1c2Ugc29tZSBiZXR0ZXIgZXJyb3IgcmVwb3J0aW5nLgorICAgICAg
ICBJbnN0cnVtZW50cyB0aGUgZGF0YWJhc2UgY2xhc3NlcyB0byByZXBvcnQgZXJyb3JzIHRvIGEg
RGF0YWJhc2VPYnNlcnZlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTczMjU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBjb250ZW50IG9ic2VydmFibGUgYXJ0aWZhY3RzLgor
CisgICAgICAgICogc3RvcmFnZS9BYnN0cmFjdERhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFic3RyYWN0RGF0YWJhc2U6OkFic3RyYWN0RGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6QWJzdHJhY3REYXRhYmFzZTo6cGVyZm9ybU9wZW5BbmRWZXJpZnkpOgorICAgICAgICAoV2Vi
Q29yZTo6QWJzdHJhY3REYXRhYmFzZTo6aW5jcmVtZW50YWxWYWN1dW1JZk5lZWRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpBYnN0cmFjdERhdGFiYXNlOjpyZXBvcnRPcGVuRGF0YWJhc2VSZXN1bHQp
OgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3REYXRhYmFzZTo6cmVwb3J0Q2hhbmdlVmVyc2lv
blJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdERhdGFiYXNlOjpyZXBvcnRTdGFy
dFRyYW5zYWN0aW9uUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RGF0YWJhc2U6
OnJlcG9ydENvbW1pdFRyYW5zYWN0aW9uUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkFic3Ry
YWN0RGF0YWJhc2U6OnJlcG9ydEV4ZWN1dGVTdGF0ZW1lbnRSZXN1bHQpOgorICAgICAgICAoV2Vi
Q29yZTo6QWJzdHJhY3REYXRhYmFzZTo6cmVwb3J0VmFjdXVtRGF0YWJhc2VSZXN1bHQpOgorICAg
ICAgICAqIHN0b3JhZ2UvQWJzdHJhY3REYXRhYmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6QWJz
dHJhY3REYXRhYmFzZTo6aXNTeW5jRGF0YWJhc2UpOgorICAgICAgICAqIHN0b3JhZ2UvQ2hhbmdl
VmVyc2lvbldyYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hhbmdlVmVyc2lvbldyYXBw
ZXI6OnBlcmZvcm1QcmVmbGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hhbmdlVmVyc2lvbldy
YXBwZXI6OnBlcmZvcm1Qb3N0ZmxpZ2h0KToKKyAgICAgICAgKiBzdG9yYWdlL0RhdGFiYXNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpEYXRhYmFzZSk6CisgICAgICAgICogc3Rv
cmFnZS9EYXRhYmFzZVN5bmMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VTeW5jOjpE
YXRhYmFzZVN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VTeW5jOjpjaGFuZ2VWZXJz
aW9uKToKKyAgICAgICAgKiBzdG9yYWdlL1NRTFN0YXRlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTUUxTdGF0ZW1lbnQ6OmV4ZWN1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1FMU3RhdGVt
ZW50OjpzZXREYXRhYmFzZURlbGV0ZWRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpTUUxTdGF0
ZW1lbnQ6OnNldFZlcnNpb25NaXNtYXRjaGVkRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6U1FM
U3RhdGVtZW50OjpzZXRGYWlsdXJlRHVlVG9RdW90YSk6CisgICAgICAgICogc3RvcmFnZS9TUUxT
dGF0ZW1lbnQuaDoKKyAgICAgICAgKiBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpleGVjdXRlU1FMKToKKyAgICAgICAgKFdlYkNv
cmU6OlNRTFRyYW5zYWN0aW9uOjpvcGVuVHJhbnNhY3Rpb25BbmRQcmVmbGlnaHQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OmRlbGl2ZXJUcmFuc2FjdGlvbkNhbGxiYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpydW5DdXJyZW50U3RhdGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpoYW5kbGVDdXJyZW50U3RhdGVtZW50
RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OmRlbGl2ZXJTdGF0ZW1l
bnRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6cG9zdGZsaWdo
dEFuZENvbW1pdCk6CisgICAgICAgICogc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25TeW5jOjpiZWdpbik6CisgICAgICAgIChX
ZWJDb3JlOjpTUUxUcmFuc2FjdGlvblN5bmM6OmNvbW1pdCk6CisgICAgICAgICogc3RvcmFnZS9j
aHJvbWl1bS9EYXRhYmFzZU9ic2VydmVyLmg6CisKIDIwMTEtMTEtMjggIEZhZHkgU2FtdWVsICA8
ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRml4IEFzcGVjdCBSYXRpbyBQcm9wZXJ0
eSBJbmhlcml0YW5jZSBBbmQgTWFrZSB0aGUgQ29tcHV0ZWQgVmFsdWUgRXF1YWwgdGhlIFNwZWNp
ZmllZCBWYWx1ZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9BYnN0cmFjdERhdGFiYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0Fic3RyYWN0RGF0YWJh
c2UuY3BwCShyZXZpc2lvbiAxMDEyNzIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0Fic3Ry
YWN0RGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCwxMCBAQAogI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+
CiAKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyNpbmNsdWRlICJEYXRhYmFzZU9ic2VydmVyLmgi
IC8vIEZvciBlcnJvciByZXBvcnRpbmcuCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBzdGF0aWMgY29uc3QgY2hhciB2ZXJzaW9uS2V5W10gPSAiV2ViS2l0RGF0YWJhc2VWZXJzaW9u
S2V5IjsKQEAgLTE4Miw3ICsxODYsNyBAQCBjb25zdCBjaGFyKiBBYnN0cmFjdERhdGFiYXNlOjpk
YXRhYmFzZUluCiB9CiAKIEFic3RyYWN0RGF0YWJhc2U6OkFic3RyYWN0RGF0YWJhc2UoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIGV4cGVjdGVkVmVyc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGRpc3BsYXlO
YW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUsIGJvb2wgaXNTeW5jRGF0YWJhc2UpCiAg
ICAgOiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkKICAgICAsIG1fbmFtZShuYW1l
Lmlzb2xhdGVkQ29weSgpKQogICAgICwgbV9leHBlY3RlZFZlcnNpb24oZXhwZWN0ZWRWZXJzaW9u
Lmlzb2xhdGVkQ29weSgpKQpAQCAtMTkxLDYgKzE5NSw3IEBAIEFic3RyYWN0RGF0YWJhc2U6OkFi
c3RyYWN0RGF0YWJhc2UoU2NyaXAKICAgICAsIG1fZ3VpZCgwKQogICAgICwgbV9vcGVuZWQoZmFs
c2UpCiAgICAgLCBtX25ldyhmYWxzZSkKKyAgICAsIG1faXNTeW5jRGF0YWJhc2UoaXNTeW5jRGF0
YWJhc2UpCiB7CiAgICAgQVNTRVJUKGNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKTsKICAgICBt
X2NvbnRleHRUaHJlYWRTZWN1cml0eU9yaWdpbiA9IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
c2VjdXJpdHlPcmlnaW4oKTsKQEAgLTI1Nyw2ICsyNjIsNyBAQCBib29sIEFic3RyYWN0RGF0YWJh
c2U6OnBlcmZvcm1PcGVuQW5kVmVyCiAgICAgY29uc3QgaW50IG1heFNxbGl0ZUJ1c3lXYWl0VGlt
ZSA9IDMwMDAwOwogCiAgICAgaWYgKCFtX3NxbGl0ZURhdGFiYXNlLm9wZW4obV9maWxlbmFtZSwg
dHJ1ZSkpIHsKKyAgICAgICAgcmVwb3J0T3BlbkRhdGFiYXNlUmVzdWx0KDEsIElOVkFMSURfU1RB
VEVfRVJSLCBtX3NxbGl0ZURhdGFiYXNlLmxhc3RFcnJvcigpKTsKICAgICAgICAgZXJyb3JNZXNz
YWdlID0gZm9ybWF0RXJyb3JNZXNzYWdlKCJ1bmFibGUgdG8gb3BlbiBkYXRhYmFzZSIsIG1fc3Fs
aXRlRGF0YWJhc2UubGFzdEVycm9yKCksIG1fc3FsaXRlRGF0YWJhc2UubGFzdEVycm9yTXNnKCkp
OwogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0yOTgsNiArMzA0LDcgQEAgYm9vbCBBYnN0cmFjdERhdGFiYXNlOjpwZXJmb3JtT3BlbkFu
ZFZlcgogICAgICAgICAgICAgU1FMaXRlVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24obV9zcWxpdGVE
YXRhYmFzZSk7CiAgICAgICAgICAgICB0cmFuc2FjdGlvbi5iZWdpbigpOwogICAgICAgICAgICAg
aWYgKCF0cmFuc2FjdGlvbi5pblByb2dyZXNzKCkpIHsKKyAgICAgICAgICAgICAgICByZXBvcnRP
cGVuRGF0YWJhc2VSZXN1bHQoMiwgSU5WQUxJRF9TVEFURV9FUlIsIG1fc3FsaXRlRGF0YWJhc2Uu
bGFzdEVycm9yKCkpOwogICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGZvcm1hdEVycm9y
TWVzc2FnZSgidW5hYmxlIHRvIG9wZW4gZGF0YWJhc2UsIGZhaWxlZCB0byBzdGFydCB0cmFuc2Fj
dGlvbiIsIG1fc3FsaXRlRGF0YWJhc2UubGFzdEVycm9yKCksIG1fc3FsaXRlRGF0YWJhc2UubGFz
dEVycm9yTXNnKCkpOwogICAgICAgICAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAg
ICAgICAgICAgICAgICAgbV9zcWxpdGVEYXRhYmFzZS5jbG9zZSgpOwpAQCAtMzA5LDYgKzMxNiw3
IEBAIGJvb2wgQWJzdHJhY3REYXRhYmFzZTo6cGVyZm9ybU9wZW5BbmRWZXIKICAgICAgICAgICAg
ICAgICBtX25ldyA9IHRydWU7CiAKICAgICAgICAgICAgICAgICBpZiAoIW1fc3FsaXRlRGF0YWJh
c2UuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSAiICsgdGFibGVOYW1lICsgIiAoa2V5IFRF
WFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSx2
YWx1ZSBURVhUIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwpOyIpKSB7CisgICAgICAgICAgICAg
ICAgICAgIHJlcG9ydE9wZW5EYXRhYmFzZVJlc3VsdCgzLCBJTlZBTElEX1NUQVRFX0VSUiwgbV9z
cWxpdGVEYXRhYmFzZS5sYXN0RXJyb3IoKSk7CiAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVz
c2FnZSA9IGZvcm1hdEVycm9yTWVzc2FnZSgidW5hYmxlIHRvIG9wZW4gZGF0YWJhc2UsIGZhaWxl
ZCB0byBjcmVhdGUgJ2luZm8nIHRhYmxlIiwgbV9zcWxpdGVEYXRhYmFzZS5sYXN0RXJyb3IoKSwg
bV9zcWxpdGVEYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgICAgICAgICAgICAgIGVj
ID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uLnJv
bGxiYWNrKCk7CkBAIC0zMTYsNiArMzI0LDcgQEAgYm9vbCBBYnN0cmFjdERhdGFiYXNlOjpwZXJm
b3JtT3BlbkFuZFZlcgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIGlmICghZ2V0VmVyc2lvbkZyb21EYXRhYmFz
ZShjdXJyZW50VmVyc2lvbiwgZmFsc2UpKSB7CisgICAgICAgICAgICAgICAgcmVwb3J0T3BlbkRh
dGFiYXNlUmVzdWx0KDQsIElOVkFMSURfU1RBVEVfRVJSLCBtX3NxbGl0ZURhdGFiYXNlLmxhc3RF
cnJvcigpKTsKICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBmb3JtYXRFcnJvck1lc3Nh
Z2UoInVuYWJsZSB0byBvcGVuIGRhdGFiYXNlLCBmYWlsZWQgdG8gcmVhZCBjdXJyZW50IHZlcnNp
b24iLCBtX3NxbGl0ZURhdGFiYXNlLmxhc3RFcnJvcigpLCBtX3NxbGl0ZURhdGFiYXNlLmxhc3RF
cnJvck1zZygpKTsKICAgICAgICAgICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAg
ICAgICAgICAgICAgIHRyYW5zYWN0aW9uLnJvbGxiYWNrKCk7CkBAIC0zMjgsNiArMzM3LDcgQEAg
Ym9vbCBBYnN0cmFjdERhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcgogICAgICAgICAgICAgfSBl
bHNlIGlmICghbV9uZXcgfHwgc2hvdWxkU2V0VmVyc2lvbkluTmV3RGF0YWJhc2UpIHsKICAgICAg
ICAgICAgICAgICBMT0coU3RvcmFnZUFQSSwgIlNldHRpbmcgdmVyc2lvbiAlcyBpbiBkYXRhYmFz
ZSAlcyB0aGF0IHdhcyBqdXN0IGNyZWF0ZWQiLCBtX2V4cGVjdGVkVmVyc2lvbi5hc2NpaSgpLmRh
dGEoKSwgZGF0YWJhc2VEZWJ1Z05hbWUoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgICAgICAg
ICAgaWYgKCFzZXRWZXJzaW9uSW5EYXRhYmFzZShtX2V4cGVjdGVkVmVyc2lvbiwgZmFsc2UpKSB7
CisgICAgICAgICAgICAgICAgICAgIHJlcG9ydE9wZW5EYXRhYmFzZVJlc3VsdCg1LCBJTlZBTElE
X1NUQVRFX0VSUiwgbV9zcWxpdGVEYXRhYmFzZS5sYXN0RXJyb3IoKSk7CiAgICAgICAgICAgICAg
ICAgICAgIGVycm9yTWVzc2FnZSA9IGZvcm1hdEVycm9yTWVzc2FnZSgidW5hYmxlIHRvIG9wZW4g
ZGF0YWJhc2UsIGZhaWxlZCB0byB3cml0ZSBjdXJyZW50IHZlcnNpb24iLCBtX3NxbGl0ZURhdGFi
YXNlLmxhc3RFcnJvcigpLCBtX3NxbGl0ZURhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAg
ICAgICAgICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgICAgICAgICAg
ICAgdHJhbnNhY3Rpb24ucm9sbGJhY2soKTsKQEAgLTM0OSw2ICszNTksNyBAQCBib29sIEFic3Ry
YWN0RGF0YWJhc2U6OnBlcmZvcm1PcGVuQW5kVmVyCiAgICAgLy8gSWYgdGhlIGV4cGVjdGVkIHZl
cnNpb24gaXNuJ3QgdGhlIGVtcHR5IHN0cmluZywgZW5zdXJlIHRoYXQgdGhlIGN1cnJlbnQgZGF0
YWJhc2UgdmVyc2lvbiB3ZSBoYXZlIG1hdGNoZXMgdGhhdCB2ZXJzaW9uLiBPdGhlcndpc2UsIHNl
dCBhbiBleGNlcHRpb24uCiAgICAgLy8gSWYgdGhlIGV4cGVjdGVkIHZlcnNpb24gaXMgdGhlIGVt
cHR5IHN0cmluZywgdGhlbiB3ZSBhbHdheXMgcmV0dXJuIHdpdGggd2hhdGV2ZXIgdmVyc2lvbiBv
ZiB0aGUgZGF0YWJhc2Ugd2UgaGF2ZS4KICAgICBpZiAoKCFtX25ldyB8fCBzaG91bGRTZXRWZXJz
aW9uSW5OZXdEYXRhYmFzZSkgJiYgbV9leHBlY3RlZFZlcnNpb24ubGVuZ3RoKCkgJiYgbV9leHBl
Y3RlZFZlcnNpb24gIT0gY3VycmVudFZlcnNpb24pIHsKKyAgICAgICAgcmVwb3J0T3BlbkRhdGFi
YXNlUmVzdWx0KDYsIElOVkFMSURfU1RBVEVfRVJSLCAwKTsKICAgICAgICAgZXJyb3JNZXNzYWdl
ID0gInVuYWJsZSB0byBvcGVuIGRhdGFiYXNlLCB2ZXJzaW9uIG1pc21hdGNoLCAnIiArIG1fZXhw
ZWN0ZWRWZXJzaW9uICsgIicgZG9lcyBub3QgbWF0Y2ggdGhlIGN1cnJlbnRWZXJzaW9uIG9mICci
ICsgY3VycmVudFZlcnNpb24gKyAiJyI7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7
CiAgICAgICAgIG1fc3FsaXRlRGF0YWJhc2UuY2xvc2UoKTsKQEAgLTM2Myw2ICszNzQsNyBAQCBi
b29sIEFic3RyYWN0RGF0YWJhc2U6OnBlcmZvcm1PcGVuQW5kVmVyCiAgICAgaWYgKG1fbmV3ICYm
ICFzaG91bGRTZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSkKICAgICAgICAgbV9leHBlY3RlZFZlcnNp
b24gPSAiIjsgLy8gVGhlIGNhbGxlciBwcm92aWRlZCBhIGNyZWF0aW9uQ2FsbGJhY2sgd2hpY2gg
d2lsbCBzZXQgdGhlIGV4cGVjdGVkIHZlcnNpb24uCiAKKyAgICByZXBvcnRPcGVuRGF0YWJhc2VS
ZXN1bHQoMCwgLTEsIDApOyAvLyBPSwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC01MzMsNiAr
NTQ1LDcgQEAgdm9pZCBBYnN0cmFjdERhdGFiYXNlOjppbmNyZW1lbnRhbFZhY3V1bQogICAgIGlu
dDY0X3QgdG90YWxTaXplID0gbV9zcWxpdGVEYXRhYmFzZS50b3RhbFNpemUoKTsKICAgICBpZiAo
dG90YWxTaXplIDw9IDEwICogZnJlZVNwYWNlU2l6ZSkgewogICAgICAgICBpbnQgcmVzdWx0ID0g
bV9zcWxpdGVEYXRhYmFzZS5ydW5JbmNyZW1lbnRhbFZhY3V1bUNvbW1hbmQoKTsKKyAgICAgICAg
cmVwb3J0VmFjdXVtRGF0YWJhc2VSZXN1bHQocmVzdWx0KTsKICAgICAgICAgaWYgKHJlc3VsdCAh
PSBTUUxSZXN1bHRPaykKICAgICAgICAgICAgIGxvZ0Vycm9yTWVzc2FnZShmb3JtYXRFcnJvck1l
c3NhZ2UoImVycm9yIHZhY3V1bWluZyBkYXRhYmFzZSIsIHJlc3VsdCwgbV9zcWxpdGVEYXRhYmFz
ZS5sYXN0RXJyb3JNc2coKSkpOwogICAgIH0KQEAgLTU1NCw2ICs1NjcsNjAgQEAgdm9pZCBBYnN0
cmFjdERhdGFiYXNlOjpsb2dFcnJvck1lc3NhZ2UoYwogICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+YWRkTWVzc2FnZShPdGhlck1lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJv
ck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgMCwgU3RyaW5nKCksIDApOwogfQogCisjaWYgUExBVEZP
Uk0oQ0hST01JVU0pCisvLyBUaGVzZSBhcmUgdXNlZCB0byBnZW5lcmF0ZSBoaXN0b2dyYW1zIG9m
IGVycm9ycyBzZWVuIHdpdGggd2Vic3FsLgorLy8gU2VlIGFib3V0Omhpc3RvZ3JhbXMgaW4gY2hy
b21pdW0uCit2b2lkIEFic3RyYWN0RGF0YWJhc2U6OnJlcG9ydE9wZW5EYXRhYmFzZVJlc3VsdChp
bnQgZXJyb3JTaXRlLCBpbnQgd2ViU3FsRXJyb3JDb2RlLCBpbnQgc3FsaXRlRXJyb3JDb2RlKQor
eworICAgIERhdGFiYXNlT2JzZXJ2ZXI6OnJlcG9ydE9wZW5EYXRhYmFzZVJlc3VsdCh0aGlzLCBl
cnJvclNpdGUsIHdlYlNxbEVycm9yQ29kZSwgc3FsaXRlRXJyb3JDb2RlKTsKK30KKwordm9pZCBB
YnN0cmFjdERhdGFiYXNlOjpyZXBvcnRDaGFuZ2VWZXJzaW9uUmVzdWx0KGludCBlcnJvclNpdGUs
IGludCB3ZWJTcWxFcnJvckNvZGUsIGludCBzcWxpdGVFcnJvckNvZGUpCit7CisgICAgRGF0YWJh
c2VPYnNlcnZlcjo6cmVwb3J0Q2hhbmdlVmVyc2lvblJlc3VsdCh0aGlzLCBlcnJvclNpdGUsIHdl
YlNxbEVycm9yQ29kZSwgc3FsaXRlRXJyb3JDb2RlKTsKK30KKwordm9pZCBBYnN0cmFjdERhdGFi
YXNlOjpyZXBvcnRTdGFydFRyYW5zYWN0aW9uUmVzdWx0KGludCBlcnJvclNpdGUsIGludCB3ZWJT
cWxFcnJvckNvZGUsIGludCBzcWxpdGVFcnJvckNvZGUpCit7CisgICAgRGF0YWJhc2VPYnNlcnZl
cjo6cmVwb3J0U3RhcnRUcmFuc2FjdGlvblJlc3VsdCh0aGlzLCBlcnJvclNpdGUsIHdlYlNxbEVy
cm9yQ29kZSwgc3FsaXRlRXJyb3JDb2RlKTsKK30KKwordm9pZCBBYnN0cmFjdERhdGFiYXNlOjpy
ZXBvcnRDb21taXRUcmFuc2FjdGlvblJlc3VsdChpbnQgZXJyb3JTaXRlLCBpbnQgd2ViU3FsRXJy
b3JDb2RlLCBpbnQgc3FsaXRlRXJyb3JDb2RlKQoreworICAgIERhdGFiYXNlT2JzZXJ2ZXI6OnJl
cG9ydENvbW1pdFRyYW5zYWN0aW9uUmVzdWx0KHRoaXMsIGVycm9yU2l0ZSwgd2ViU3FsRXJyb3JD
b2RlLCBzcWxpdGVFcnJvckNvZGUpOworfQorCit2b2lkIEFic3RyYWN0RGF0YWJhc2U6OnJlcG9y
dEV4ZWN1dGVTdGF0ZW1lbnRSZXN1bHQoaW50IGVycm9yU2l0ZSwgaW50IHdlYlNxbEVycm9yQ29k
ZSwgaW50IHNxbGl0ZUVycm9yQ29kZSkKK3sKKyAgICBEYXRhYmFzZU9ic2VydmVyOjpyZXBvcnRF
eGVjdXRlU3RhdGVtZW50UmVzdWx0KHRoaXMsIGVycm9yU2l0ZSwgd2ViU3FsRXJyb3JDb2RlLCBz
cWxpdGVFcnJvckNvZGUpOworfQorCit2b2lkIEFic3RyYWN0RGF0YWJhc2U6OnJlcG9ydFZhY3V1
bURhdGFiYXNlUmVzdWx0KGludCBzcWxpdGVFcnJvckNvZGUpCit7CisgICAgRGF0YWJhc2VPYnNl
cnZlcjo6cmVwb3J0VmFjdXVtRGF0YWJhc2VSZXN1bHQodGhpcywgc3FsaXRlRXJyb3JDb2RlKTsK
K30KKworI2Vsc2UKK3ZvaWQgQWJzdHJhY3REYXRhYmFzZTo6cmVwb3J0T3BlbkRhdGFiYXNlUmVz
dWx0KGludCwgaW50LCBpbnQpCit7IH0KKwordm9pZCBBYnN0cmFjdERhdGFiYXNlOjpyZXBvcnRD
aGFuZ2VWZXJzaW9uUmVzdWx0KGludCwgaW50LCBpbnQpCit7IH0KKwordm9pZCBBYnN0cmFjdERh
dGFiYXNlOjpyZXBvcnRTdGFydFRyYW5zYWN0aW9uUmVzdWx0KGludCwgaW50LCBpbnQpCit7IH0K
Kwordm9pZCBBYnN0cmFjdERhdGFiYXNlOjpyZXBvcnRDb21taXRUcmFuc2FjdGlvblJlc3VsdChp
bnQsIGludCwgaW50KQoreyB9CisKK3ZvaWQgQWJzdHJhY3REYXRhYmFzZTo6cmVwb3J0RXhlY3V0
ZVN0YXRlbWVudFJlc3VsdChpbnQsIGludCwgaW50KQoreyB9CisKK3ZvaWQgQWJzdHJhY3REYXRh
YmFzZTo6cmVwb3J0VmFjdXVtRGF0YWJhc2VSZXN1bHQoaW50KQoreyB9CisKKyNlbmRpZiAvLyBQ
TEFURk9STShDSFJPTUlVTSkKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKFNRTF9EQVRBQkFTRSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvQWJzdHJh
Y3REYXRhYmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvQWJzdHJh
Y3REYXRhYmFzZS5oCShyZXZpc2lvbiAxMDEyNzIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L0Fic3RyYWN0RGF0YWJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsNiArNTgsNyBAQCBwdWJs
aWM6CiAKICAgICBib29sIG9wZW5lZCgpIGNvbnN0IHsgcmV0dXJuIG1fb3BlbmVkOyB9CiAgICAg
Ym9vbCBpc05ldygpIGNvbnN0IHsgcmV0dXJuIG1fbmV3OyB9CisgICAgYm9vbCBpc1N5bmNEYXRh
YmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTeW5jRGF0YWJhc2U7IH0KIAogICAgIHZpcnR1YWwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKCkgY29uc3Q7CkBAIC04
NiwxMiArODcsMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjbG9zZUltbWVkaWF0ZWx5
KCkgPSAwOwogCiBwcm90ZWN0ZWQ6CisgICAgZnJpZW5kIGNsYXNzIENoYW5nZVZlcnNpb25XcmFw
cGVyOworICAgIGZyaWVuZCBjbGFzcyBTUUxTdGF0ZW1lbnQ7CisgICAgZnJpZW5kIGNsYXNzIFNR
TFN0YXRlbWVudFN5bmM7CiAgICAgZnJpZW5kIGNsYXNzIFNRTFRyYW5zYWN0aW9uU3luYzsKICAg
ICBmcmllbmQgY2xhc3MgU1FMVHJhbnNhY3Rpb247Ci0gICAgZnJpZW5kIGNsYXNzIENoYW5nZVZl
cnNpb25XcmFwcGVyOwogCiAgICAgQWJzdHJhY3REYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwK
LSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVk
IGxvbmcgZXN0aW1hdGVkU2l6ZSk7CisgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcm
IGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUsIGJvb2wgaXNTeW5jRGF0
YWJhc2UpOwogCiAgICAgdm9pZCBjbG9zZURhdGFiYXNlKCk7CiAKQEAgLTEwNyw2ICsxMTAsMTMg
QEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCBsb2dFcnJvck1lc3NhZ2UoY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKTsKIAorICAgIHZvaWQgcmVwb3J0T3BlbkRhdGFiYXNlUmVzdWx0KGludCBlcnJvclNp
dGUsIGludCB3ZWJTcWxFcnJvckNvZGUsIGludCBzcWxpdGVFcnJvckNvZGUpOworICAgIHZvaWQg
cmVwb3J0Q2hhbmdlVmVyc2lvblJlc3VsdChpbnQgZXJyb3JTaXRlLCBpbnQgd2ViU3FsRXJyb3JD
b2RlLCBpbnQgc3FsaXRlRXJyb3JDb2RlKTsKKyAgICB2b2lkIHJlcG9ydFN0YXJ0VHJhbnNhY3Rp
b25SZXN1bHQoaW50IGVycm9yU2l0ZSwgaW50IHdlYlNxbEVycm9yQ29kZSwgaW50IHNxbGl0ZUVy
cm9yQ29kZSk7CisgICAgdm9pZCByZXBvcnRDb21taXRUcmFuc2FjdGlvblJlc3VsdChpbnQgZXJy
b3JTaXRlLCBpbnQgd2ViU3FsRXJyb3JDb2RlLCBpbnQgc3FsaXRlRXJyb3JDb2RlKTsKKyAgICB2
b2lkIHJlcG9ydEV4ZWN1dGVTdGF0ZW1lbnRSZXN1bHQoaW50IGVycm9yU2l0ZSwgaW50IHdlYlNx
bEVycm9yQ29kZSwgaW50IHNxbGl0ZUVycm9yQ29kZSk7CisgICAgdm9pZCByZXBvcnRWYWN1dW1E
YXRhYmFzZVJlc3VsdChpbnQgc3FsaXRlRXJyb3JDb2RlKTsKKwogICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBkYXRhYmFzZUluZm9UYWJsZU5hbWUoKTsKIAogICAgIFJlZlB0cjxTY3JpcHRFeGVjdXRp
b25Db250ZXh0PiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CkBAIC0xMjYsNiArMTM2LDcgQEAg
cHJpdmF0ZToKICAgICBpbnQgbV9ndWlkOwogICAgIGJvb2wgbV9vcGVuZWQ7CiAgICAgYm9vbCBt
X25ldzsKKyAgICBjb25zdCBib29sIG1faXNTeW5jRGF0YWJhc2U7CiAKICAgICBTUUxpdGVEYXRh
YmFzZSBtX3NxbGl0ZURhdGFiYXNlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0No
YW5nZVZlcnNpb25XcmFwcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0NoYW5nZVZlcnNpb25XcmFwcGVyLmNwcAkocmV2aXNpb24gMTAxMjcyKQorKysgU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9DaGFuZ2VWZXJzaW9uV3JhcHBlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUxLDEzICs1MSwxNSBAQCBib29sIENoYW5nZVZlcnNpb25XcmFwcGVyOjpwZXJmb3JtUHJl
ZmxpCiAKICAgICBTdHJpbmcgYWN0dWFsVmVyc2lvbjsKICAgICBpZiAoIWRhdGFiYXNlLT5nZXRW
ZXJzaW9uRnJvbURhdGFiYXNlKGFjdHVhbFZlcnNpb24pKSB7CisgICAgICAgIGludCBzcWxpdGVF
cnJvciA9IGRhdGFiYXNlLT5zcWxpdGVEYXRhYmFzZSgpLmxhc3RFcnJvcigpOworICAgICAgICBk
YXRhYmFzZS0+cmVwb3J0Q2hhbmdlVmVyc2lvblJlc3VsdCgxLCBTUUxFcnJvcjo6VU5LTk9XTl9F
UlIsIHNxbGl0ZUVycm9yKTsKICAgICAgICAgbV9zcWxFcnJvciA9IFNRTEVycm9yOjpjcmVhdGUo
U1FMRXJyb3I6OlVOS05PV05fRVJSLCAidW5hYmxlIHRvIHJlYWQgdGhlIGN1cnJlbnQgdmVyc2lv
biIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFiYXNlLT5zcWxp
dGVEYXRhYmFzZSgpLmxhc3RFcnJvcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS5sYXN0RXJyb3JNc2coKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNxbGl0ZUVycm9yLCAgZGF0YWJhc2Ut
PnNxbGl0ZURhdGFiYXNlKCkubGFzdEVycm9yTXNnKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCiAgICAgaWYgKGFjdHVhbFZlcnNpb24gIT0gbV9vbGRWZXJzaW9uKSB7CisgICAg
ICAgIGRhdGFiYXNlLT5yZXBvcnRDaGFuZ2VWZXJzaW9uUmVzdWx0KDIsIFNRTEVycm9yOjpWRVJT
SU9OX0VSUiwgMCk7CiAgICAgICAgIG1fc3FsRXJyb3IgPSBTUUxFcnJvcjo6Y3JlYXRlKFNRTEVy
cm9yOjpWRVJTSU9OX0VSUiwgImN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgZGF0YWJhc2UgYW5kIGBv
bGRWZXJzaW9uYCBhcmd1bWVudCBkbyBub3QgbWF0Y2giKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KQEAgLTcyLDE0ICs3NCwxNiBAQCBib29sIENoYW5nZVZlcnNpb25XcmFwcGVyOjpw
ZXJmb3JtUG9zdGZsCiAgICAgRGF0YWJhc2UqIGRhdGFiYXNlID0gdHJhbnNhY3Rpb24tPmRhdGFi
YXNlKCk7CiAKICAgICBpZiAoIWRhdGFiYXNlLT5zZXRWZXJzaW9uSW5EYXRhYmFzZShtX25ld1Zl
cnNpb24pKSB7CisgICAgICAgIGludCBzcWxpdGVFcnJvciA9IGRhdGFiYXNlLT5zcWxpdGVEYXRh
YmFzZSgpLmxhc3RFcnJvcigpOworICAgICAgICBkYXRhYmFzZS0+cmVwb3J0Q2hhbmdlVmVyc2lv
blJlc3VsdCgzLCBTUUxFcnJvcjo6VU5LTk9XTl9FUlIsIHNxbGl0ZUVycm9yKTsKICAgICAgICAg
bV9zcWxFcnJvciA9IFNRTEVycm9yOjpjcmVhdGUoU1FMRXJyb3I6OlVOS05PV05fRVJSLCAidW5h
YmxlIHRvIHNldCBuZXcgdmVyc2lvbiBpbiBkYXRhYmFzZSIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRhdGFiYXNlLT5zcWxpdGVEYXRhYmFzZSgpLmxhc3RFcnJvcigp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhYmFzZS0+c3FsaXRl
RGF0YWJhc2UoKS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNxbGl0ZUVycm9yLCBkYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS5sYXN0RXJy
b3JNc2coKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBkYXRhYmFzZS0+
c2V0RXhwZWN0ZWRWZXJzaW9uKG1fbmV3VmVyc2lvbik7CiAKKyAgICBkYXRhYmFzZS0+cmVwb3J0
Q2hhbmdlVmVyc2lvblJlc3VsdCgwLCAtMSwgMCk7IC8vIE9LCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuY3BwCShyZXZpc2lvbiAxMDEyNzIp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTIwLDcgKzEyMCw3IEBAIFBhc3NSZWZQdHI8RGF0YWJhc2U+IERhdGFiYXNlOjpvcGVuRGF0
YWIKIH0KIAogRGF0YWJhc2U6OkRhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZFZlcnNpb24sIGNv
bnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkKLSAg
ICA6IEFic3RyYWN0RGF0YWJhc2UoY29udGV4dCwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9uLCBkaXNw
bGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSkKKyAgICA6IEFic3RyYWN0RGF0YWJhc2UoY29udGV4dCwg
bmFtZSwgZXhwZWN0ZWRWZXJzaW9uLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSwgZmFsc2Up
CiAgICAgLCBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyhmYWxzZSkKICAgICAsIG1faXNUcmFuc2Fj
dGlvblF1ZXVlRW5hYmxlZCh0cnVlKQogICAgICwgbV9kZWxldGVkKGZhbHNlKQpJbmRleDogU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVN5bmMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2VTeW5jLmNwcAkocmV2aXNpb24gMTAxMjcyKQorKysg
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVN5bmMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03OCw3ICs3OCw3IEBAIFBhc3NSZWZQdHI8RGF0YWJhc2VTeW5jPiBEYXRhYmFzZVN5bmM6Om8K
IAogRGF0YWJhc2VTeW5jOjpEYXRhYmFzZVN5bmMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVmVyc2lvbiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVu
c2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkKLSAgICA6IEFic3RyYWN0RGF0YWJhc2UoY29udGV4
dCwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9uLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSkKKyAg
ICA6IEFic3RyYWN0RGF0YWJhc2UoY29udGV4dCwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9uLCBkaXNw
bGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSwgdHJ1ZSkKIHsKIH0KIApAQCAtOTcsNiArOTcsNyBAQCB2
b2lkIERhdGFiYXNlU3luYzo6Y2hhbmdlVmVyc2lvbihjb25zdCBTCiAgICAgQVNTRVJUKG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+aXNDb250ZXh0VGhyZWFkKCkpOwogCiAgICAgaWYgKHNxbGl0
ZURhdGFiYXNlKCkudHJhbnNhY3Rpb25JblByb2dyZXNzKCkpIHsKKyAgICAgICAgcmVwb3J0Q2hh
bmdlVmVyc2lvblJlc3VsdCgxLCBTUUxFeGNlcHRpb246OkRBVEFCQVNFX0VSUiwgMCk7CiAgICAg
ICAgIHNldExhc3RFcnJvck1lc3NhZ2UoInVuYWJsZSB0byBjaGFuZ2VWZXJzaW9uIGZyb20gd2l0
aGluIGEgdHJhbnNhY3Rpb24iKTsKICAgICAgICAgZWMgPSBTUUxFeGNlcHRpb246OkRBVEFCQVNF
X0VSUjsKICAgICAgICAgcmV0dXJuOwpAQCAtMTEwLDEyICsxMTEsMTQgQEAgdm9pZCBEYXRhYmFz
ZVN5bmM6OmNoYW5nZVZlcnNpb24oY29uc3QgUwogCiAgICAgU3RyaW5nIGFjdHVhbFZlcnNpb247
CiAgICAgaWYgKCFnZXRWZXJzaW9uRnJvbURhdGFiYXNlKGFjdHVhbFZlcnNpb24pKSB7CisgICAg
ICAgIHJlcG9ydENoYW5nZVZlcnNpb25SZXN1bHQoMiwgU1FMRXhjZXB0aW9uOjpVTktOT1dOX0VS
Uiwgc3FsaXRlRGF0YWJhc2UoKS5sYXN0RXJyb3IoKSk7CiAgICAgICAgIHNldExhc3RFcnJvck1l
c3NhZ2UoInVuYWJsZSB0byByZWFkIHRoZSBjdXJyZW50IHZlcnNpb24iLCBzcWxpdGVEYXRhYmFz
ZSgpLmxhc3RFcnJvcigpLCBzcWxpdGVEYXRhYmFzZSgpLmxhc3RFcnJvck1zZygpKTsKICAgICAg
ICAgZWMgPSBTUUxFeGNlcHRpb246OlVOS05PV05fRVJSOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgaWYgKGFjdHVhbFZlcnNpb24gIT0gb2xkVmVyc2lvbikgeworICAgICAgICByZXBv
cnRDaGFuZ2VWZXJzaW9uUmVzdWx0KDMsIFNRTEV4Y2VwdGlvbjo6VkVSU0lPTl9FUlIsIDApOwog
ICAgICAgICBzZXRMYXN0RXJyb3JNZXNzYWdlKCJjdXJyZW50IHZlcnNpb24gb2YgdGhlIGRhdGFi
YXNlIGFuZCBgb2xkVmVyc2lvbmAgYXJndW1lbnQgZG8gbm90IG1hdGNoIik7CiAgICAgICAgIGVj
ID0gU1FMRXhjZXB0aW9uOjpWRVJTSU9OX0VSUjsKICAgICAgICAgcmV0dXJuOwpAQCAtMTI3LDYg
KzEzMCw3IEBAIHZvaWQgRGF0YWJhc2VTeW5jOjpjaGFuZ2VWZXJzaW9uKGNvbnN0IFMKICAgICB9
CiAKICAgICBpZiAoIXNldFZlcnNpb25JbkRhdGFiYXNlKG5ld1ZlcnNpb24pKSB7CisgICAgICAg
IHJlcG9ydENoYW5nZVZlcnNpb25SZXN1bHQoNCwgU1FMRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwg
c3FsaXRlRGF0YWJhc2UoKS5sYXN0RXJyb3IoKSk7CiAgICAgICAgIHNldExhc3RFcnJvck1lc3Nh
Z2UoInVuYWJsZSB0byBzZXQgdGhlIG5ldyB2ZXJzaW9uIiwgc3FsaXRlRGF0YWJhc2UoKS5sYXN0
RXJyb3IoKSwgc3FsaXRlRGF0YWJhc2UoKS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIGVjID0g
U1FMRXhjZXB0aW9uOjpVTktOT1dOX0VSUjsKICAgICAgICAgcmV0dXJuOwpAQCAtMTM4LDYgKzE0
Miw4IEBAIHZvaWQgRGF0YWJhc2VTeW5jOjpjaGFuZ2VWZXJzaW9uKGNvbnN0IFMKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAorICAgIHJlcG9ydENoYW5nZVZlcnNpb25SZXN1bHQoMCwgLTEsIDAp
OyAvLyBPSworCiAgICAgc2V0RXhwZWN0ZWRWZXJzaW9uKG5ld1ZlcnNpb24pOwogICAgIHNldExh
c3RFcnJvck1lc3NhZ2UoIiIpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TUUxT
dGF0ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU1FMU3Rh
dGVtZW50LmNwcAkocmV2aXNpb24gMTAxMjcyKQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9T
UUxTdGF0ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw2ICs4Miw3IEBAIGJvb2wgU1FM
U3RhdGVtZW50OjpleGVjdXRlKERhdGFiYXNlKiBkYikKICAgICAgICAgICAgIG1fZXJyb3IgPSBT
UUxFcnJvcjo6Y3JlYXRlKFNRTEVycm9yOjpEQVRBQkFTRV9FUlIsICJjb3VsZCBub3QgcHJlcGFy
ZSBzdGF0ZW1lbnQiLCByZXN1bHQsICJpbnRlcnJ1cHRlZCIpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBtX2Vycm9yID0gU1FMRXJyb3I6OmNyZWF0ZShTUUxFcnJvcjo6U1lOVEFYX0VSUiwg
ImNvdWxkIG5vdCBwcmVwYXJlIHN0YXRlbWVudCIsIHJlc3VsdCwgZGF0YWJhc2UtPmxhc3RFcnJv
ck1zZygpKTsKKyAgICAgICAgZGItPnJlcG9ydEV4ZWN1dGVTdGF0ZW1lbnRSZXN1bHQoMSwgbV9l
cnJvci0+Y29kZSgpLCByZXN1bHQpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBA
IC05MCwxOCArOTEsMjAgQEAgYm9vbCBTUUxTdGF0ZW1lbnQ6OmV4ZWN1dGUoRGF0YWJhc2UqIGRi
KQogICAgIGlmIChzdGF0ZW1lbnQuYmluZFBhcmFtZXRlckNvdW50KCkgIT0gbV9hcmd1bWVudHMu
c2l6ZSgpKSB7CiAgICAgICAgIExPRyhTdG9yYWdlQVBJLCAiQmluZCBwYXJhbWV0ZXIgY291bnQg
ZG9lc24ndCBtYXRjaCBudW1iZXIgb2YgcXVlc3Rpb24gbWFya3MiKTsKICAgICAgICAgbV9lcnJv
ciA9IFNRTEVycm9yOjpjcmVhdGUoZGItPmlzSW50ZXJydXB0ZWQoKSA/IFNRTEVycm9yOjpEQVRB
QkFTRV9FUlIgOiBTUUxFcnJvcjo6U1lOVEFYX0VSUiwgIm51bWJlciBvZiAnPydzIGluIHN0YXRl
bWVudCBzdHJpbmcgZG9lcyBub3QgbWF0Y2ggYXJndW1lbnQgY291bnQiKTsKKyAgICAgICAgZGIt
PnJlcG9ydEV4ZWN1dGVTdGF0ZW1lbnRSZXN1bHQoMiwgbV9lcnJvci0+Y29kZSgpLCAwKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX2FyZ3VtZW50cy5zaXplKCk7ICsraSkgewogICAgICAgICByZXN1bHQgPSBzdGF0ZW1lbnQu
YmluZFZhbHVlKGkgKyAxLCBtX2FyZ3VtZW50c1tpXSk7CiAgICAgICAgIGlmIChyZXN1bHQgPT0g
U1FMUmVzdWx0RnVsbCkgewotICAgICAgICAgICAgc2V0RmFpbHVyZUR1ZVRvUXVvdGEoKTsKKyAg
ICAgICAgICAgIHNldEZhaWx1cmVEdWVUb1F1b3RhKGRiKTsKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChyZXN1bHQgIT0gU1FMUmVzdWx0T2spIHsK
ICAgICAgICAgICAgIExPRyhTdG9yYWdlQVBJLCAiRmFpbGVkIHRvIGJpbmQgdmFsdWUgaW5kZXgg
JWkgdG8gc3RhdGVtZW50IGZvciBxdWVyeSAnJXMnIiwgaSArIDEsIG1fc3RhdGVtZW50LmFzY2lp
KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGRiLT5yZXBvcnRFeGVjdXRlU3RhdGVtZW50UmVzdWx0
KDMsIFNRTEVycm9yOjpEQVRBQkFTRV9FUlIsIHJlc3VsdCk7CiAgICAgICAgICAgICBtX2Vycm9y
ID0gU1FMRXJyb3I6OmNyZWF0ZShTUUxFcnJvcjo6REFUQUJBU0VfRVJSLCAiY291bGQgbm90IGJp
bmQgdmFsdWUiLCByZXN1bHQsIGRhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTEyNiw2ICsxMjksNyBAQCBib29sIFNRTFN0
YXRlbWVudDo6ZXhlY3V0ZShEYXRhYmFzZSogZGIpCiAgICAgICAgIH0gd2hpbGUgKHJlc3VsdCA9
PSBTUUxSZXN1bHRSb3cpOwogCiAgICAgICAgIGlmIChyZXN1bHQgIT0gU1FMUmVzdWx0RG9uZSkg
eworICAgICAgICAgICAgZGItPnJlcG9ydEV4ZWN1dGVTdGF0ZW1lbnRSZXN1bHQoNCwgU1FMRXJy
b3I6OkRBVEFCQVNFX0VSUiwgcmVzdWx0KTsKICAgICAgICAgICAgIG1fZXJyb3IgPSBTUUxFcnJv
cjo6Y3JlYXRlKFNRTEVycm9yOjpEQVRBQkFTRV9FUlIsICJjb3VsZCBub3QgaXRlcmF0ZSByZXN1
bHRzIiwgcmVzdWx0LCBkYXRhYmFzZS0+bGFzdEVycm9yTXNnKCkpOwogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC0xMzUsOSArMTM5LDEwIEBAIGJvb2wgU1FMU3RhdGVt
ZW50OjpleGVjdXRlKERhdGFiYXNlKiBkYikKICAgICAgICAgICAgIHJlc3VsdFNldC0+c2V0SW5z
ZXJ0SWQoZGF0YWJhc2UtPmxhc3RJbnNlcnRSb3dJRCgpKTsKICAgICB9IGVsc2UgaWYgKHJlc3Vs
dCA9PSBTUUxSZXN1bHRGdWxsKSB7CiAgICAgICAgIC8vIFJldHVybiB0aGUgUXVvdGEgZXJyb3Ig
LSB0aGUgZGVsZWdhdGUgd2lsbCBiZSBhc2tlZCBmb3IgbW9yZSBzcGFjZSBhbmQgdGhpcyBzdGF0
ZW1lbnQgbWlnaHQgYmUgcmUtcnVuCi0gICAgICAgIHNldEZhaWx1cmVEdWVUb1F1b3RhKCk7Cisg
ICAgICAgIHNldEZhaWx1cmVEdWVUb1F1b3RhKGRiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0gZWxzZSB7CisgICAgICAgIGRiLT5yZXBvcnRFeGVjdXRlU3RhdGVtZW50UmVzdWx0KDUs
IFNRTEVycm9yOjpEQVRBQkFTRV9FUlIsIHJlc3VsdCk7CiAgICAgICAgIG1fZXJyb3IgPSBTUUxF
cnJvcjo6Y3JlYXRlKFNRTEVycm9yOjpEQVRBQkFTRV9FUlIsICJjb3VsZCBub3QgZXhlY3V0ZSBz
dGF0ZW1lbnQiLCByZXN1bHQsIGRhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CkBAIC0xNDgsMTggKzE1MywyMSBAQCBib29sIFNRTFN0YXRlbWVu
dDo6ZXhlY3V0ZShEYXRhYmFzZSogZGIpCiAgICAgcmVzdWx0U2V0LT5zZXRSb3dzQWZmZWN0ZWQo
ZGF0YWJhc2UtPmxhc3RDaGFuZ2VzKCkpOwogCiAgICAgbV9yZXN1bHRTZXQgPSByZXN1bHRTZXQ7
CisgICAgZGItPnJlcG9ydEV4ZWN1dGVTdGF0ZW1lbnRSZXN1bHQoMCwgLTEsIDApOyAvLyBPSwog
ICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFNRTFN0YXRlbWVudDo6c2V0RGF0YWJhc2VEZWxl
dGVkRXJyb3IoKQordm9pZCBTUUxTdGF0ZW1lbnQ6OnNldERhdGFiYXNlRGVsZXRlZEVycm9yKERh
dGFiYXNlKiBkYXRhYmFzZSkKIHsKICAgICBBU1NFUlQoIW1fZXJyb3IgJiYgIW1fcmVzdWx0U2V0
KTsKKyAgICBkYXRhYmFzZS0+cmVwb3J0RXhlY3V0ZVN0YXRlbWVudFJlc3VsdCg2LCBTUUxFcnJv
cjo6VU5LTk9XTl9FUlIsIDApOwogICAgIG1fZXJyb3IgPSBTUUxFcnJvcjo6Y3JlYXRlKFNRTEVy
cm9yOjpVTktOT1dOX0VSUiwgInVuYWJsZSB0byBleGVjdXRlIHN0YXRlbWVudCwgYmVjYXVzZSB0
aGUgdXNlciBkZWxldGVkIHRoZSBkYXRhYmFzZSIpOwogfQogCi12b2lkIFNRTFN0YXRlbWVudDo6
c2V0VmVyc2lvbk1pc21hdGNoZWRFcnJvcigpCit2b2lkIFNRTFN0YXRlbWVudDo6c2V0VmVyc2lv
bk1pc21hdGNoZWRFcnJvcihEYXRhYmFzZSogZGF0YWJhc2UpCiB7CiAgICAgQVNTRVJUKCFtX2Vy
cm9yICYmICFtX3Jlc3VsdFNldCk7CisgICAgZGF0YWJhc2UtPnJlcG9ydEV4ZWN1dGVTdGF0ZW1l
bnRSZXN1bHQoNywgU1FMRXJyb3I6OlZFUlNJT05fRVJSLCAwKTsKICAgICBtX2Vycm9yID0gU1FM
RXJyb3I6OmNyZWF0ZShTUUxFcnJvcjo6VkVSU0lPTl9FUlIsICJjdXJyZW50IHZlcnNpb24gb2Yg
dGhlIGRhdGFiYXNlIGFuZCBgb2xkVmVyc2lvbmAgYXJndW1lbnQgZG8gbm90IG1hdGNoIik7CiB9
CiAKQEAgLTE4Myw5ICsxOTEsMTAgQEAgYm9vbCBTUUxTdGF0ZW1lbnQ6OnBlcmZvcm1DYWxsYmFj
ayhTUUxUcgogICAgIHJldHVybiBjYWxsYmFja0Vycm9yOwogfQogCi12b2lkIFNRTFN0YXRlbWVu
dDo6c2V0RmFpbHVyZUR1ZVRvUXVvdGEoKQordm9pZCBTUUxTdGF0ZW1lbnQ6OnNldEZhaWx1cmVE
dWVUb1F1b3RhKERhdGFiYXNlKiBkYXRhYmFzZSkKIHsKICAgICBBU1NFUlQoIW1fZXJyb3IgJiYg
IW1fcmVzdWx0U2V0KTsKKyAgICBkYXRhYmFzZS0+cmVwb3J0RXhlY3V0ZVN0YXRlbWVudFJlc3Vs
dCg4LCBTUUxFcnJvcjo6UVVPVEFfRVJSLCAwKTsKICAgICBtX2Vycm9yID0gU1FMRXJyb3I6OmNy
ZWF0ZShTUUxFcnJvcjo6UVVPVEFfRVJSLCAidGhlcmUgd2FzIG5vdCBlbm91Z2ggcmVtYWluaW5n
IHN0b3JhZ2Ugc3BhY2UsIG9yIHRoZSBzdG9yYWdlIHF1b3RhIHdhcyByZWFjaGVkIGFuZCB0aGUg
dXNlciBkZWNsaW5lZCB0byBhbGxvdyBtb3JlIHNwYWNlIik7CiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvU1FMU3RhdGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9TUUxTdGF0ZW1lbnQuaAkocmV2aXNpb24gMTAxMjcyKQorKysgU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9TUUxTdGF0ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsOCArNTUs
OCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNTdGF0ZW1lbnRDYWxsYmFjaygpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdGVtZW50Q2FsbGJhY2tXcmFwcGVyLmhhc0NhbGxiYWNrKCk7IH0KICAgICBib29s
IGhhc1N0YXRlbWVudEVycm9yQ2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBtX3N0YXRlbWVudEVy
cm9yQ2FsbGJhY2tXcmFwcGVyLmhhc0NhbGxiYWNrKCk7IH0KIAotICAgIHZvaWQgc2V0RGF0YWJh
c2VEZWxldGVkRXJyb3IoKTsKLSAgICB2b2lkIHNldFZlcnNpb25NaXNtYXRjaGVkRXJyb3IoKTsK
KyAgICB2b2lkIHNldERhdGFiYXNlRGVsZXRlZEVycm9yKERhdGFiYXNlKik7CisgICAgdm9pZCBz
ZXRWZXJzaW9uTWlzbWF0Y2hlZEVycm9yKERhdGFiYXNlKik7CiAKICAgICBib29sIHBlcmZvcm1D
YWxsYmFjayhTUUxUcmFuc2FjdGlvbiopOwogCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgU1FMU3RhdGVtZW50KERhdGFiYXNlKiwgY29uc3QgU3RyaW5nJiBzdGF0ZW1l
bnQsIGNvbnN0IFZlY3RvcjxTUUxWYWx1ZT4mIGFyZ3VtZW50cywgUGFzc1JlZlB0cjxTUUxTdGF0
ZW1lbnRDYWxsYmFjaz4sIFBhc3NSZWZQdHI8U1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjaz4sIGlu
dCBwZXJtaXNzaW9ucyk7CiAKLSAgICB2b2lkIHNldEZhaWx1cmVEdWVUb1F1b3RhKCk7CisgICAg
dm9pZCBzZXRGYWlsdXJlRHVlVG9RdW90YShEYXRhYmFzZSopOwogICAgIHZvaWQgY2xlYXJGYWls
dXJlRHVlVG9RdW90YSgpOwogCiAgICAgU3RyaW5nIG1fc3RhdGVtZW50OwpJbmRleDogU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvbi5jcHAJKHJldmlzaW9uIDEwMTI3MikKKysr
IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNRTChjb25z
dCBTdAogICAgIFJlZlB0cjxTUUxTdGF0ZW1lbnQ+IHN0YXRlbWVudCA9IFNRTFN0YXRlbWVudDo6
Y3JlYXRlKG1fZGF0YWJhc2UuZ2V0KCksIHNxbFN0YXRlbWVudCwgYXJndW1lbnRzLCBjYWxsYmFj
aywgY2FsbGJhY2tFcnJvciwgcGVybWlzc2lvbnMpOwogCiAgICAgaWYgKG1fZGF0YWJhc2UtPmRl
bGV0ZWQoKSkKLSAgICAgICAgc3RhdGVtZW50LT5zZXREYXRhYmFzZURlbGV0ZWRFcnJvcigpOwor
ICAgICAgICBzdGF0ZW1lbnQtPnNldERhdGFiYXNlRGVsZXRlZEVycm9yKG1fZGF0YWJhc2UuZ2V0
KCkpOwogCiAgICAgZW5xdWV1ZVN0YXRlbWVudChzdGF0ZW1lbnQpOwogfQpAQCAtMjQ1LDYgKzI0
NSw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246Om9wZW5UcmFuc2FjdGlvbkFuZFAKIAogICAgIC8v
IElmIHRoZSBkYXRhYmFzZSB3YXMgZGVsZXRlZCwganVtcCB0byB0aGUgZXJyb3IgY2FsbGJhY2sK
ICAgICBpZiAobV9kYXRhYmFzZS0+ZGVsZXRlZCgpKSB7CisgICAgICAgIG1fZGF0YWJhc2UtPnJl
cG9ydFN0YXJ0VHJhbnNhY3Rpb25SZXN1bHQoMSwgU1FMRXJyb3I6OlVOS05PV05fRVJSLCAwKTsK
ICAgICAgICAgbV90cmFuc2FjdGlvbkVycm9yID0gU1FMRXJyb3I6OmNyZWF0ZShTUUxFcnJvcjo6
VU5LTk9XTl9FUlIsICJ1bmFibGUgdG8gb3BlbiBhIHRyYW5zYWN0aW9uLCBiZWNhdXNlIHRoZSB1
c2VyIGRlbGV0ZWQgdGhlIGRhdGFiYXNlIik7CiAgICAgICAgIGhhbmRsZVRyYW5zYWN0aW9uRXJy
b3IoZmFsc2UpOwogICAgICAgICByZXR1cm47CkBAIC0yNjUsNiArMjY2LDcgQEAgdm9pZCBTUUxU
cmFuc2FjdGlvbjo6b3BlblRyYW5zYWN0aW9uQW5kUAogICAgIC8vIFRyYW5zYWN0aW9uIFN0ZXBz
IDErMiAtIE9wZW4gYSB0cmFuc2FjdGlvbiB0byB0aGUgZGF0YWJhc2UsIGp1bXBpbmcgdG8gdGhl
IGVycm9yIGNhbGxiYWNrIGlmIHRoYXQgZmFpbHMKICAgICBpZiAoIW1fc3FsaXRlVHJhbnNhY3Rp
b24tPmluUHJvZ3Jlc3MoKSkgewogICAgICAgICBBU1NFUlQoIW1fZGF0YWJhc2UtPnNxbGl0ZURh
dGFiYXNlKCkudHJhbnNhY3Rpb25JblByb2dyZXNzKCkpOworICAgICAgICBtX2RhdGFiYXNlLT5y
ZXBvcnRTdGFydFRyYW5zYWN0aW9uUmVzdWx0KDIsIFNRTEVycm9yOjpEQVRBQkFTRV9FUlIsIG1f
ZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCkubGFzdEVycm9yKCkpOwogICAgICAgICBtX3RyYW5z
YWN0aW9uRXJyb3IgPSBTUUxFcnJvcjo6Y3JlYXRlKFNRTEVycm9yOjpEQVRBQkFTRV9FUlIsICJ1
bmFibGUgdG8gYmVnaW4gdHJhbnNhY3Rpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCkubGFzdEVycm9y
KCksIG1fZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCkubGFzdEVycm9yTXNnKCkpOwogICAgICAg
ICBtX3NxbGl0ZVRyYW5zYWN0aW9uLmNsZWFyKCk7CkBAIC0yNzcsNiArMjc5LDcgQEAgdm9pZCBT
UUxUcmFuc2FjdGlvbjo6b3BlblRyYW5zYWN0aW9uQW5kUAogICAgIC8vIHRoZSBhY3R1YWwgdmVy
c2lvbi4gSW4gc2luZ2xlLXByb2Nlc3MgYnJvd3NlcnMsIHRoaXMgaXMganVzdCBhIG1hcCBsb29r
dXAuCiAgICAgU3RyaW5nIGFjdHVhbFZlcnNpb247CiAgICAgaWYgKCFtX2RhdGFiYXNlLT5nZXRB
Y3R1YWxWZXJzaW9uRm9yVHJhbnNhY3Rpb24oYWN0dWFsVmVyc2lvbikpIHsKKyAgICAgICAgbV9k
YXRhYmFzZS0+cmVwb3J0U3RhcnRUcmFuc2FjdGlvblJlc3VsdCgzLCBTUUxFcnJvcjo6REFUQUJB
U0VfRVJSLCBtX2RhdGFiYXNlLT5zcWxpdGVEYXRhYmFzZSgpLmxhc3RFcnJvcigpKTsKICAgICAg
ICAgbV90cmFuc2FjdGlvbkVycm9yID0gU1FMRXJyb3I6OmNyZWF0ZShTUUxFcnJvcjo6REFUQUJB
U0VfRVJSLCAidW5hYmxlIHRvIHJlYWQgdmVyc2lvbiIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS5sYXN0
RXJyb3IoKSwgbV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS5sYXN0RXJyb3JNc2coKSk7CiAg
ICAgICAgIG1fZGF0YWJhc2UtPmRpc2FibGVBdXRob3JpemVyKCk7CkBAIC0yOTQsOCArMjk3LDEw
IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246Om9wZW5UcmFuc2FjdGlvbkFuZFAKICAgICAgICAgbV9z
cWxpdGVUcmFuc2FjdGlvbi5jbGVhcigpOwogICAgICAgICBtX2RhdGFiYXNlLT5lbmFibGVBdXRo
b3JpemVyKCk7CiAgICAgICAgIG1fdHJhbnNhY3Rpb25FcnJvciA9IG1fd3JhcHBlci0+c3FsRXJy
b3IoKTsKLSAgICAgICAgaWYgKCFtX3RyYW5zYWN0aW9uRXJyb3IpCisgICAgICAgIGlmICghbV90
cmFuc2FjdGlvbkVycm9yKSB7CisgICAgICAgICAgICBtX2RhdGFiYXNlLT5yZXBvcnRTdGFydFRy
YW5zYWN0aW9uUmVzdWx0KDQsIFNRTEVycm9yOjpVTktOT1dOX0VSUiwgMCk7CiAgICAgICAgICAg
ICBtX3RyYW5zYWN0aW9uRXJyb3IgPSBTUUxFcnJvcjo6Y3JlYXRlKFNRTEVycm9yOjpVTktOT1dO
X0VSUiwgInVua25vd24gZXJyb3Igb2NjdXJlZCBkdXJpbmcgdHJhbnNhY3Rpb24gcHJlZmxpZ2h0
Iik7CisgICAgICAgIH0KICAgICAgICAgaGFuZGxlVHJhbnNhY3Rpb25FcnJvcihmYWxzZSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zMTksMTAgKzMyNCwxMyBAQCB2b2lkIFNRTFRyYW5z
YWN0aW9uOjpkZWxpdmVyVHJhbnNhY3Rpb25DCiAKICAgICAvLyBUcmFuc2FjdGlvbiBTdGVwIDUg
LSBJZiB0aGUgdHJhbnNhY3Rpb24gY2FsbGJhY2sgd2FzIG51bGwgb3IgcmFpc2VkIGFuIGV4Y2Vw
dGlvbiwganVtcCB0byB0aGUgZXJyb3IgY2FsbGJhY2sKICAgICBpZiAoc2hvdWxkRGVsaXZlckVy
cm9yQ2FsbGJhY2spIHsKKyAgICAgICAgbV9kYXRhYmFzZS0+cmVwb3J0U3RhcnRUcmFuc2FjdGlv
blJlc3VsdCg1LCBTUUxFcnJvcjo6VU5LTk9XTl9FUlIsIDApOwogICAgICAgICBtX3RyYW5zYWN0
aW9uRXJyb3IgPSBTUUxFcnJvcjo6Y3JlYXRlKFNRTEVycm9yOjpVTktOT1dOX0VSUiwgInRoZSBT
UUxUcmFuc2FjdGlvbkNhbGxiYWNrIHdhcyBudWxsIG9yIHRocmV3IGFuIGV4Y2VwdGlvbiIpOwog
ICAgICAgICBkZWxpdmVyVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrKCk7CiAgICAgfSBlbHNlCiAg
ICAgICAgIHNjaGVkdWxlVG9SdW5TdGF0ZW1lbnRzKCk7CisKKyAgICBtX2RhdGFiYXNlLT5yZXBv
cnRTdGFydFRyYW5zYWN0aW9uUmVzdWx0KDAsIC0xLCAwKTsgLy8gT0sKIH0KIAogdm9pZCBTUUxU
cmFuc2FjdGlvbjo6c2NoZWR1bGVUb1J1blN0YXRlbWVudHMoKQpAQCAtMzg3LDcgKzM5NSw3IEBA
IGJvb2wgU1FMVHJhbnNhY3Rpb246OnJ1bkN1cnJlbnRTdGF0ZW1lbnQKICAgICBtX2RhdGFiYXNl
LT5yZXNldEF1dGhvcml6ZXIoKTsKIAogICAgIGlmIChtX2hhc1ZlcnNpb25NaXNtYXRjaCkKLSAg
ICAgICAgbV9jdXJyZW50U3RhdGVtZW50LT5zZXRWZXJzaW9uTWlzbWF0Y2hlZEVycm9yKCk7Cisg
ICAgICAgIG1fY3VycmVudFN0YXRlbWVudC0+c2V0VmVyc2lvbk1pc21hdGNoZWRFcnJvcihtX2Rh
dGFiYXNlLmdldCgpKTsKIAogICAgIGlmIChtX2N1cnJlbnRTdGF0ZW1lbnQtPmV4ZWN1dGUobV9k
YXRhYmFzZS5nZXQoKSkpIHsKICAgICAgICAgaWYgKG1fZGF0YWJhc2UtPmxhc3RBY3Rpb25DaGFu
Z2VkRGF0YWJhc2UoKSkgewpAQCAtNDI4LDggKzQzNiwxMCBAQCB2b2lkIFNRTFRyYW5zYWN0aW9u
OjpoYW5kbGVDdXJyZW50U3RhdGVtCiAgICAgICAgIG1fZGF0YWJhc2UtPnNjaGVkdWxlVHJhbnNh
Y3Rpb25DYWxsYmFjayh0aGlzKTsKICAgICB9IGVsc2UgewogICAgICAgICBtX3RyYW5zYWN0aW9u
RXJyb3IgPSBtX2N1cnJlbnRTdGF0ZW1lbnQtPnNxbEVycm9yKCk7Ci0gICAgICAgIGlmICghbV90
cmFuc2FjdGlvbkVycm9yKQorICAgICAgICBpZiAoIW1fdHJhbnNhY3Rpb25FcnJvcikgeworICAg
ICAgICAgICAgbV9kYXRhYmFzZS0+cmVwb3J0Q29tbWl0VHJhbnNhY3Rpb25SZXN1bHQoMSwgU1FM
RXJyb3I6OkRBVEFCQVNFX0VSUiwgMCk7CiAgICAgICAgICAgICBtX3RyYW5zYWN0aW9uRXJyb3Ig
PSBTUUxFcnJvcjo6Y3JlYXRlKFNRTEVycm9yOjpEQVRBQkFTRV9FUlIsICJ0aGUgc3RhdGVtZW50
IGZhaWxlZCB0byBleGVjdXRlIik7CisgICAgICAgIH0KICAgICAgICAgaGFuZGxlVHJhbnNhY3Rp
b25FcnJvcihmYWxzZSk7CiAgICAgfQogfQpAQCAtNDQ1LDYgKzQ1NSw3IEBAIHZvaWQgU1FMVHJh
bnNhY3Rpb246OmRlbGl2ZXJTdGF0ZW1lbnRDYWwKICAgICBtX2V4ZWN1dGVTcWxBbGxvd2VkID0g
ZmFsc2U7CiAKICAgICBpZiAocmVzdWx0KSB7CisgICAgICAgIG1fZGF0YWJhc2UtPnJlcG9ydENv
bW1pdFRyYW5zYWN0aW9uUmVzdWx0KDIsIFNRTEVycm9yOjpVTktOT1dOX0VSUiwgMCk7CiAgICAg
ICAgIG1fdHJhbnNhY3Rpb25FcnJvciA9IFNRTEVycm9yOjpjcmVhdGUoU1FMRXJyb3I6OlVOS05P
V05fRVJSLCAidGhlIHN0YXRlbWVudCBjYWxsYmFjayByYWlzZWQgYW4gZXhjZXB0aW9uIG9yIHN0
YXRlbWVudCBlcnJvciBjYWxsYmFjayBkaWQgbm90IHJldHVybiBmYWxzZSIpOwogICAgICAgICBo
YW5kbGVUcmFuc2FjdGlvbkVycm9yKHRydWUpOwogICAgIH0gZWxzZQpAQCAtNDcwLDggKzQ4MSwx
MCBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpwb3N0ZmxpZ2h0QW5kQ29tbWl0CiAgICAgLy8gVHJh
bnNhY3Rpb24gU3RlcCA3IC0gUGVmb3JtIHBvc3RmbGlnaHQgc3RlcHMsIGp1bXBpbmcgdG8gdGhl
IGVycm9yIGNhbGxiYWNrIGlmIHRoZXkgZmFpbAogICAgIGlmIChtX3dyYXBwZXIgJiYgIW1fd3Jh
cHBlci0+cGVyZm9ybVBvc3RmbGlnaHQodGhpcykpIHsKICAgICAgICAgbV90cmFuc2FjdGlvbkVy
cm9yID0gbV93cmFwcGVyLT5zcWxFcnJvcigpOwotICAgICAgICBpZiAoIW1fdHJhbnNhY3Rpb25F
cnJvcikKKyAgICAgICAgaWYgKCFtX3RyYW5zYWN0aW9uRXJyb3IpIHsKKyAgICAgICAgICAgIG1f
ZGF0YWJhc2UtPnJlcG9ydENvbW1pdFRyYW5zYWN0aW9uUmVzdWx0KDMsIFNRTEVycm9yOjpVTktO
T1dOX0VSUiwgMCk7IC8vID8/PwogICAgICAgICAgICAgbV90cmFuc2FjdGlvbkVycm9yID0gU1FM
RXJyb3I6OmNyZWF0ZShTUUxFcnJvcjo6VU5LTk9XTl9FUlIsICJ1bmtub3duIGVycm9yIG9jY3Vy
ZWQgZHVyaW5nIHRyYW5zYWN0aW9uIHBvc3RmbGlnaHQiKTsKKyAgICAgICAgfQogICAgICAgICBo
YW5kbGVUcmFuc2FjdGlvbkVycm9yKGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTQ4OCwxMiArNTAxLDE1IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246OnBvc3RmbGlnaHRBbmRDb21t
aXQKICAgICAgICAgaWYgKG1fd3JhcHBlcikKICAgICAgICAgICAgIG1fd3JhcHBlci0+aGFuZGxl
Q29tbWl0RmFpbGVkQWZ0ZXJQb3N0ZmxpZ2h0KHRoaXMpOwogICAgICAgICBtX3N1Y2Nlc3NDYWxs
YmFja1dyYXBwZXIuY2xlYXIoKTsKKyAgICAgICAgbV9kYXRhYmFzZS0+cmVwb3J0Q29tbWl0VHJh
bnNhY3Rpb25SZXN1bHQoNCwgU1FMRXJyb3I6OkRBVEFCQVNFX0VSUiwgbV9kYXRhYmFzZS0+c3Fs
aXRlRGF0YWJhc2UoKS5sYXN0RXJyb3IoKSk7CiAgICAgICAgIG1fdHJhbnNhY3Rpb25FcnJvciA9
IFNRTEVycm9yOjpjcmVhdGUoU1FMRXJyb3I6OkRBVEFCQVNFX0VSUiwgInVuYWJsZSB0byBjb21t
aXQgdHJhbnNhY3Rpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCkubGFzdEVycm9yKCksIG1fZGF0YWJh
c2UtPnNxbGl0ZURhdGFiYXNlKCkubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBoYW5kbGVUcmFu
c2FjdGlvbkVycm9yKGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIG1fZGF0
YWJhc2UtPnJlcG9ydENvbW1pdFRyYW5zYWN0aW9uUmVzdWx0KDAsIC0xLCAwKTsgLy8gT0sKKwog
ICAgIC8vIFZhY3V1bSB0aGUgZGF0YWJhc2UgaWYgYW55dGhpbmcgd2FzIGRlbGV0ZWQuCiAgICAg
aWYgKG1fZGF0YWJhc2UtPmhhZERlbGV0ZXMoKSkKICAgICAgICAgbV9kYXRhYmFzZS0+aW5jcmVt
ZW50YWxWYWN1dW1JZk5lZWRlZCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TUUxU
cmFuc2FjdGlvblN5bmMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
U1FMVHJhbnNhY3Rpb25TeW5jLmNwcAkocmV2aXNpb24gMTAxMjcyKQorKysgU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUs
NiArMTM1LDcgQEAgRXhjZXB0aW9uQ29kZSBTUUxUcmFuc2FjdGlvblN5bmM6OmJlZ2luKAogewog
ICAgIEFTU0VSVChtX2RhdGFiYXNlLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzQ29udGV4
dFRocmVhZCgpKTsKICAgICBpZiAoIW1fZGF0YWJhc2UtPm9wZW5lZCgpKSB7CisgICAgICAgIG1f
ZGF0YWJhc2UtPnJlcG9ydFN0YXJ0VHJhbnNhY3Rpb25SZXN1bHQoMSwgU1FMRXhjZXB0aW9uOjpV
TktOT1dOX0VSUiwgMCk7CiAgICAgICAgIG1fZGF0YWJhc2UtPnNldExhc3RFcnJvck1lc3NhZ2Uo
ImNhbm5vdCBiZWdpbiB0cmFuc2FjdGlvbiBiZWNhdXNlIHRoZSBkYXRhYmFzZSBpcyBub3Qgb3Bl
biIpOwogICAgICAgICByZXR1cm4gU1FMRXhjZXB0aW9uOjpVTktOT1dOX0VSUjsKICAgICB9CkBA
IC0xNTYsNiArMTU3LDcgQEAgRXhjZXB0aW9uQ29kZSBTUUxUcmFuc2FjdGlvblN5bmM6OmJlZ2lu
KAogICAgIC8vIENoZWNrIGlmIGJlZ2luKCkgc3VjY2VlZGVkLgogICAgIGlmICghbV9zcWxpdGVU
cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKSB7CiAgICAgICAgIEFTU0VSVCghbV9kYXRhYmFzZS0+
c3FsaXRlRGF0YWJhc2UoKS50cmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CisgICAgICAgIG1fZGF0
YWJhc2UtPnJlcG9ydFN0YXJ0VHJhbnNhY3Rpb25SZXN1bHQoMiwgU1FMRXhjZXB0aW9uOjpEQVRB
QkFTRV9FUlIsIG1fZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCkubGFzdEVycm9yKCkpOwogICAg
ICAgICBtX2RhdGFiYXNlLT5zZXRMYXN0RXJyb3JNZXNzYWdlKCJ1bmFibGUgdG8gYmVnaW4gdHJh
bnNhY3Rpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZGF0
YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCkubGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPnNxbGl0ZURh
dGFiYXNlKCkubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBtX3NxbGl0ZVRyYW5zYWN0aW9uLmNs
ZWFyKCk7CkBAIC0xNjcsNiArMTY5LDcgQEAgRXhjZXB0aW9uQ29kZSBTUUxUcmFuc2FjdGlvblN5
bmM6OmJlZ2luKAogICAgIC8vIHRoZSBhY3R1YWwgdmVyc2lvbi4gSW4gc2luZ2xlLXByb2Nlc3Mg
YnJvd3NlcnMsIHRoaXMgaXMganVzdCBhIG1hcCBsb29rdXAuCiAgICAgU3RyaW5nIGFjdHVhbFZl
cnNpb247CiAgICAgaWYgKCFtX2RhdGFiYXNlLT5nZXRBY3R1YWxWZXJzaW9uRm9yVHJhbnNhY3Rp
b24oYWN0dWFsVmVyc2lvbikpIHsKKyAgICAgICAgbV9kYXRhYmFzZS0+cmVwb3J0U3RhcnRUcmFu
c2FjdGlvblJlc3VsdCgzLCBTUUxFeGNlcHRpb246OkRBVEFCQVNFX0VSUiwgbV9kYXRhYmFzZS0+
c3FsaXRlRGF0YWJhc2UoKS5sYXN0RXJyb3IoKSk7CiAgICAgICAgIG1fZGF0YWJhc2UtPnNldExh
c3RFcnJvck1lc3NhZ2UoInVuYWJsZSB0byByZWFkIHZlcnNpb24iLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCkubGFz
dEVycm9yKCksIG1fZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCkubGFzdEVycm9yTXNnKCkpOwog
ICAgICAgICByb2xsYmFjaygpOwpAQCAtMTc0LDYgKzE3Nyw3IEBAIEV4Y2VwdGlvbkNvZGUgU1FM
VHJhbnNhY3Rpb25TeW5jOjpiZWdpbigKICAgICB9CiAgICAgbV9oYXNWZXJzaW9uTWlzbWF0Y2gg
PSAhbV9kYXRhYmFzZS0+ZXhwZWN0ZWRWZXJzaW9uKCkuaXNFbXB0eSgpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmJiAobV9kYXRhYmFzZS0+ZXhwZWN0ZWRWZXJzaW9uKCkgIT0gYWN0dWFs
VmVyc2lvbik7CisgICAgbV9kYXRhYmFzZS0+cmVwb3J0U3RhcnRUcmFuc2FjdGlvblJlc3VsdCgw
LCAtMSwgMCk7IC8vIE9LCiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTE5NSw2ICsxOTksNyBAQCBF
eGNlcHRpb25Db2RlIFNRTFRyYW5zYWN0aW9uU3luYzo6Y29tbWl0CiB7CiAgICAgQVNTRVJUKG1f
ZGF0YWJhc2UtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNDb250ZXh0VGhyZWFkKCkpOwog
ICAgIGlmICghbV9kYXRhYmFzZS0+b3BlbmVkKCkpIHsKKyAgICAgICAgbV9kYXRhYmFzZS0+cmVw
b3J0Q29tbWl0VHJhbnNhY3Rpb25SZXN1bHQoMSwgU1FMRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwg
MCk7CiAgICAgICAgIG1fZGF0YWJhc2UtPnNldExhc3RFcnJvck1lc3NhZ2UoInVuYWJsZSB0byBj
b21taXQgdHJhbnNhY3Rpb24gYmVjYXVzZSB0aGUgZGF0YWJhc2UgaXMgbm90IG9wZW4uIik7CiAg
ICAgICAgIHJldHVybiBTUUxFeGNlcHRpb246OlVOS05PV05fRVJSOwogICAgIH0KQEAgLTIwNyw2
ICsyMTIsNyBAQCBFeGNlcHRpb25Db2RlIFNRTFRyYW5zYWN0aW9uU3luYzo6Y29tbWl0CiAKICAg
ICAvLyBJZiB0aGUgY29tbWl0IGZhaWxlZCwgdGhlIHRyYW5zYWN0aW9uIHdpbGwgc3RpbGwgYmUg
bWFya2VkIGFzICJpbiBwcm9ncmVzcyIKICAgICBpZiAobV9zcWxpdGVUcmFuc2FjdGlvbi0+aW5Q
cm9ncmVzcygpKSB7CisgICAgICAgIG1fZGF0YWJhc2UtPnJlcG9ydENvbW1pdFRyYW5zYWN0aW9u
UmVzdWx0KDIsIFNRTEV4Y2VwdGlvbjo6REFUQUJBU0VfRVJSLCBtX2RhdGFiYXNlLT5zcWxpdGVE
YXRhYmFzZSgpLmxhc3RFcnJvcigpKTsKICAgICAgICAgbV9kYXRhYmFzZS0+c2V0TGFzdEVycm9y
TWVzc2FnZSgidW5hYmxlIHRvIGNvbW1pdCB0cmFuc2FjdGlvbiIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS5sYXN0
RXJyb3IoKSwgbV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS5sYXN0RXJyb3JNc2coKSk7CiAg
ICAgICAgIHJldHVybiBTUUxFeGNlcHRpb246OkRBVEFCQVNFX0VSUjsKQEAgLTIyMiw2ICsyMjgs
NyBAQCBFeGNlcHRpb25Db2RlIFNRTFRyYW5zYWN0aW9uU3luYzo6Y29tbWl0CiAgICAgaWYgKG1f
bW9kaWZpZWREYXRhYmFzZSkKICAgICAgICAgbV90cmFuc2FjdGlvbkNsaWVudC0+ZGlkQ29tbWl0
V3JpdGVUcmFuc2FjdGlvbihkYXRhYmFzZSgpKTsKIAorICAgIG1fZGF0YWJhc2UtPnJlcG9ydENv
bW1pdFRyYW5zYWN0aW9uUmVzdWx0KDAsIC0xLCAwKTsgLy8gT0sKICAgICByZXR1cm4gMDsKIH0K
IApJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9jaHJvbWl1bS9EYXRhYmFzZU9ic2VydmVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9jaHJvbWl1bS9EYXRhYmFz
ZU9ic2VydmVyLmgJKHJldmlzaW9uIDEwMTI3MikKKysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
Y2hyb21pdW0vRGF0YWJhc2VPYnNlcnZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCwx
MyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGF0YWJhc2VPcGVuZWQoQWJzdHJhY3REYXRh
YmFzZSopOwogICAgIHN0YXRpYyB2b2lkIGRhdGFiYXNlTW9kaWZpZWQoQWJzdHJhY3REYXRhYmFz
ZSopOwogICAgIHN0YXRpYyB2b2lkIGRhdGFiYXNlQ2xvc2VkKEFic3RyYWN0RGF0YWJhc2UqKTsK
KworICAgIHN0YXRpYyB2b2lkIHJlcG9ydE9wZW5EYXRhYmFzZVJlc3VsdChBYnN0cmFjdERhdGFi
YXNlKiwgaW50IGNhbGxzaXRlLCBpbnQgd2ViU3FsRXJyb3JDb2RlLCBpbnQgc3FsaXRlRXJyb3JD
b2RlKTsKKyAgICBzdGF0aWMgdm9pZCByZXBvcnRDaGFuZ2VWZXJzaW9uUmVzdWx0KEFic3RyYWN0
RGF0YWJhc2UqLCBpbnQgY2FsbHNpdGUsIGludCB3ZWJTcWxFcnJvckNvZGUsIGludCBzcWxpdGVF
cnJvckNvZGUpOworICAgIHN0YXRpYyB2b2lkIHJlcG9ydFN0YXJ0VHJhbnNhY3Rpb25SZXN1bHQo
QWJzdHJhY3REYXRhYmFzZSosIGludCBjYWxsc2l0ZSwgaW50IHdlYlNxbEVycm9yQ29kZSwgaW50
IHNxbGl0ZUVycm9yQ29kZSk7CisgICAgc3RhdGljIHZvaWQgcmVwb3J0Q29tbWl0VHJhbnNhY3Rp
b25SZXN1bHQoQWJzdHJhY3REYXRhYmFzZSosIGludCBjYWxsc2l0ZSwgaW50IHdlYlNxbEVycm9y
Q29kZSwgaW50IHNxbGl0ZUVycm9yQ29kZSk7CisgICAgc3RhdGljIHZvaWQgcmVwb3J0RXhlY3V0
ZVN0YXRlbWVudFJlc3VsdChBYnN0cmFjdERhdGFiYXNlKiwgaW50IGNhbGxzaXRlLCBpbnQgd2Vi
U3FsRXJyb3JDb2RlLCBpbnQgc3FsaXRlRXJyb3JDb2RlKTsKKyAgICBzdGF0aWMgdm9pZCByZXBv
cnRWYWN1dW1EYXRhYmFzZVJlc3VsdChBYnN0cmFjdERhdGFiYXNlKiwgaW50IHNxbGl0ZUVycm9y
Q29kZSk7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24g
MTAxMjg0KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwyOSBAQAorMjAxMS0xMS0yOCAgTWljaGFlbCBOb3JkbWFuICA8bWljaGFl
bG5AZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIFdlYlNRTERhdGFiYXNlIGNvdWxk
IHVzZSBzb21lIGJldHRlciBlcnJvciByZXBvcnRpbmcuCisgICAgICAgIEluc3RydW1lbnRzIHRo
ZSBkYXRhYmFzZSBjbGFzc2VzIHRvIHJlcG9ydCBlcnJvcnMgYSB0aGUgRGF0YWJhc2VPYnNlcnZl
ci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMjU4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwdWJs
aWMvV2ViRGF0YWJhc2UuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViRGF0YWJhc2VPYnNlcnZlci5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhYmFzZU9ic2VydmVyOjpyZXBvcnRPcGVuRGF0YWJh
c2VSZXN1bHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhYmFzZU9ic2VydmVyOjpyZXBvcnRD
aGFuZ2VWZXJzaW9uUmVzdWx0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2VPYnNlcnZl
cjo6cmVwb3J0U3RhcnRUcmFuc2FjdGlvblJlc3VsdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkRh
dGFiYXNlT2JzZXJ2ZXI6OnJlcG9ydENvbW1pdFRyYW5zYWN0aW9uUmVzdWx0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViRGF0YWJhc2VPYnNlcnZlcjo6cmVwb3J0RXhlY3V0ZVN0YXRlbWVudFJlc3Vs
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFiYXNlT2JzZXJ2ZXI6OnJlcG9ydFZhY3V1bURh
dGFiYXNlUmVzdWx0KToKKyAgICAgICAgKiBzcmMvRGF0YWJhc2VPYnNlcnZlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhYmFzZU9ic2VydmVyOjpyZXBvcnRPcGVuRGF0YWJhc2VSZXN1bHQp
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VPYnNlcnZlcjo6cmVwb3J0Q2hhbmdlVmVyc2lv
blJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU9ic2VydmVyOjpyZXBvcnRTdGFy
dFRyYW5zYWN0aW9uUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlT2JzZXJ2ZXI6
OnJlcG9ydENvbW1pdFRyYW5zYWN0aW9uUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFi
YXNlT2JzZXJ2ZXI6OnJlcG9ydEV4ZWN1dGVTdGF0ZW1lbnRSZXN1bHQpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YWJhc2VPYnNlcnZlcjo6cmVwb3J0VmFjdXVtRGF0YWJhc2VSZXN1bHQpOgorICAg
ICAgICAqIHNyYy9XZWJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFiYXNl
Ojppc1N5bmNEYXRhYmFzZSk6CisKIDIwMTEtMTEtMjggIFNoZXJpZmYgQm90ICA8d2Via2l0LnJl
dmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIx
MDEyNzMuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEYXRhYmFzZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRhdGFiYXNl
LmgJKHJldmlzaW9uIDEwMTI3MikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkRhdGFiYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAgcHVibGljOgogICAg
IFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIGRpc3BsYXlOYW1lKCkgY29uc3Q7CiAgICAgV0VCS0lU
X0VYUE9SVCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUoKSBjb25zdDsKICAgICBXRUJLSVRf
RVhQT1JUIFdlYlNlY3VyaXR5T3JpZ2luIHNlY3VyaXR5T3JpZ2luKCkgY29uc3Q7CisgICAgV0VC
S0lUX0VYUE9SVCBib29sIGlzU3luY0RhdGFiYXNlKCkgY29uc3Q7CiAKICAgICBXRUJLSVRfRVhQ
T1JUIHN0YXRpYyB2b2lkIHNldE9ic2VydmVyKFdlYkRhdGFiYXNlT2JzZXJ2ZXIqKTsKICAgICBX
RUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJEYXRhYmFzZU9ic2VydmVyKiBvYnNlcnZlcigpOwpJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGF0YWJhc2VPYnNlcnZlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRhdGFiYXNlT2Jz
ZXJ2ZXIuaAkocmV2aXNpb24gMTAxMjcyKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViRGF0YWJhc2VPYnNlcnZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSwxNCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRhdGFiYXNlT3BlbmVkKGNvbnN0IFdlYkRhdGFi
YXNlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkYXRhYmFzZU1vZGlmaWVkKGNvbnN0IFdlYkRh
dGFiYXNlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkYXRhYmFzZUNsb3NlZChjb25zdCBXZWJE
YXRhYmFzZSYpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCByZXBvcnRPcGVuRGF0YWJhc2VSZXN1
bHQoY29uc3QgV2ViRGF0YWJhc2UmLCBpbnQgZXJyb3JTaXRlLCBpbnQgd2ViU3FsRXJyb3JDb2Rl
LCBpbnQgc3FsaXRlRXJyb3JDb2RlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0Q2hhbmdl
VmVyc2lvblJlc3VsdChjb25zdCBXZWJEYXRhYmFzZSYsIGludCBlcnJvclNpdGUsIGludCB3ZWJT
cWxFcnJvckNvZGUsIGludCBzcWxpdGVFcnJvckNvZGUpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBy
ZXBvcnRTdGFydFRyYW5zYWN0aW9uUmVzdWx0KGNvbnN0IFdlYkRhdGFiYXNlJiwgaW50IGVycm9y
U2l0ZSwgaW50IHdlYlNxbEVycm9yQ29kZSwgaW50IHNxbGl0ZUVycm9yQ29kZSkgeyB9CisgICAg
dmlydHVhbCB2b2lkIHJlcG9ydENvbW1pdFRyYW5zYWN0aW9uUmVzdWx0KGNvbnN0IFdlYkRhdGFi
YXNlJiwgaW50IGVycm9yU2l0ZSwgaW50IHdlYlNxbEVycm9yQ29kZSwgaW50IHNxbGl0ZUVycm9y
Q29kZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIHJlcG9ydEV4ZWN1dGVTdGF0ZW1lbnRSZXN1bHQo
Y29uc3QgV2ViRGF0YWJhc2UmLCBpbnQgZXJyb3JTaXRlLCBpbnQgd2ViU3FsRXJyb3JDb2RlLCBp
bnQgc3FsaXRlRXJyb3JDb2RlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0VmFjdXVtRGF0
YWJhc2VSZXN1bHQoY29uc3QgV2ViRGF0YWJhc2UmLCBpbnQgc3FsaXRlRXJyb3JDb2RlKSB7IH0K
KwogcHJvdGVjdGVkOgogICAgIH5XZWJEYXRhYmFzZU9ic2VydmVyKCkge30KIH07CkluZGV4OiBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9EYXRhYmFzZU9ic2VydmVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9EYXRhYmFzZU9ic2VydmVyLmNwcAkocmV2
aXNpb24gMTAxMjcyKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRGF0YWJhc2VPYnNl
cnZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Nyw2ICsxOTcsMzYgQEAgdm9pZCBEYXRhYmFz
ZU9ic2VydmVyOjpkYXRhYmFzZUNsb3NlZChBYgogICAgIFdlYkRhdGFiYXNlOjpvYnNlcnZlcigp
LT5kYXRhYmFzZUNsb3NlZChXZWJEYXRhYmFzZShkYXRhYmFzZSkpOwogfQogCit2b2lkIERhdGFi
YXNlT2JzZXJ2ZXI6OnJlcG9ydE9wZW5EYXRhYmFzZVJlc3VsdChBYnN0cmFjdERhdGFiYXNlKiBk
YXRhYmFzZSwgaW50IGVycm9yU2l0ZSwgaW50IHdlYlNxbEVycm9yQ29kZSwgaW50IHNxbGl0ZUVy
cm9yQ29kZSkKK3sKKyAgICBXZWJEYXRhYmFzZTo6b2JzZXJ2ZXIoKS0+cmVwb3J0T3BlbkRhdGFi
YXNlUmVzdWx0KFdlYkRhdGFiYXNlKGRhdGFiYXNlKSwgZXJyb3JTaXRlLCB3ZWJTcWxFcnJvckNv
ZGUsIHNxbGl0ZUVycm9yQ29kZSk7Cit9CisKK3ZvaWQgRGF0YWJhc2VPYnNlcnZlcjo6cmVwb3J0
Q2hhbmdlVmVyc2lvblJlc3VsdChBYnN0cmFjdERhdGFiYXNlKiBkYXRhYmFzZSwgaW50IGVycm9y
U2l0ZSwgaW50IHdlYlNxbEVycm9yQ29kZSwgaW50IHNxbGl0ZUVycm9yQ29kZSkKK3sKKyAgICBX
ZWJEYXRhYmFzZTo6b2JzZXJ2ZXIoKS0+cmVwb3J0Q2hhbmdlVmVyc2lvblJlc3VsdChXZWJEYXRh
YmFzZShkYXRhYmFzZSksIGVycm9yU2l0ZSwgd2ViU3FsRXJyb3JDb2RlLCBzcWxpdGVFcnJvckNv
ZGUpOworfQorCit2b2lkIERhdGFiYXNlT2JzZXJ2ZXI6OnJlcG9ydFN0YXJ0VHJhbnNhY3Rpb25S
ZXN1bHQoQWJzdHJhY3REYXRhYmFzZSogZGF0YWJhc2UsIGludCBlcnJvclNpdGUsIGludCB3ZWJT
cWxFcnJvckNvZGUsIGludCBzcWxpdGVFcnJvckNvZGUpCit7CisgICAgV2ViRGF0YWJhc2U6Om9i
c2VydmVyKCktPnJlcG9ydFN0YXJ0VHJhbnNhY3Rpb25SZXN1bHQoV2ViRGF0YWJhc2UoZGF0YWJh
c2UpLCBlcnJvclNpdGUsIHdlYlNxbEVycm9yQ29kZSwgc3FsaXRlRXJyb3JDb2RlKTsKK30KKwor
dm9pZCBEYXRhYmFzZU9ic2VydmVyOjpyZXBvcnRDb21taXRUcmFuc2FjdGlvblJlc3VsdChBYnN0
cmFjdERhdGFiYXNlKiBkYXRhYmFzZSwgaW50IGVycm9yU2l0ZSwgaW50IHdlYlNxbEVycm9yQ29k
ZSwgaW50IHNxbGl0ZUVycm9yQ29kZSkKK3sKKyAgICBXZWJEYXRhYmFzZTo6b2JzZXJ2ZXIoKS0+
cmVwb3J0Q29tbWl0VHJhbnNhY3Rpb25SZXN1bHQoV2ViRGF0YWJhc2UoZGF0YWJhc2UpLCBlcnJv
clNpdGUsIHdlYlNxbEVycm9yQ29kZSwgc3FsaXRlRXJyb3JDb2RlKTsKK30KKwordm9pZCBEYXRh
YmFzZU9ic2VydmVyOjpyZXBvcnRFeGVjdXRlU3RhdGVtZW50UmVzdWx0KEFic3RyYWN0RGF0YWJh
c2UqIGRhdGFiYXNlLCBpbnQgZXJyb3JTaXRlLCBpbnQgd2ViU3FsRXJyb3JDb2RlLCBpbnQgc3Fs
aXRlRXJyb3JDb2RlKQoreworICAgIFdlYkRhdGFiYXNlOjpvYnNlcnZlcigpLT5yZXBvcnRFeGVj
dXRlU3RhdGVtZW50UmVzdWx0KFdlYkRhdGFiYXNlKGRhdGFiYXNlKSwgZXJyb3JTaXRlLCB3ZWJT
cWxFcnJvckNvZGUsIHNxbGl0ZUVycm9yQ29kZSk7Cit9CisKK3ZvaWQgRGF0YWJhc2VPYnNlcnZl
cjo6cmVwb3J0VmFjdXVtRGF0YWJhc2VSZXN1bHQoQWJzdHJhY3REYXRhYmFzZSogZGF0YWJhc2Us
IGludCBzcWxpdGVFcnJvckNvZGUpCit7CisgICAgV2ViRGF0YWJhc2U6Om9ic2VydmVyKCktPnJl
cG9ydFZhY3V1bURhdGFiYXNlUmVzdWx0KFdlYkRhdGFiYXNlKGRhdGFiYXNlKSwgc3FsaXRlRXJy
b3JDb2RlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxF
KFNRTF9EQVRBQkFTRSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRhdGFi
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEYXRh
YmFzZS5jcHAJKHJldmlzaW9uIDEwMTI3MikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkRhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsNiArODIsMTIgQEAgV2ViU2Vj
dXJpdHlPcmlnaW4gV2ViRGF0YWJhc2U6OnNlY3VyaXR5TwogICAgIHJldHVybiBXZWJTZWN1cml0
eU9yaWdpbihtX2RhdGFiYXNlLT5zZWN1cml0eU9yaWdpbigpKTsKIH0KIAorYm9vbCBXZWJEYXRh
YmFzZTo6aXNTeW5jRGF0YWJhc2UoKSBjb25zdAoreworICAgIEFTU0VSVChtX2RhdGFiYXNlKTsK
KyAgICByZXR1cm4gbV9kYXRhYmFzZS0+aXNTeW5jRGF0YWJhc2UoKTsKK30KKwogdm9pZCBXZWJE
YXRhYmFzZTo6c2V0T2JzZXJ2ZXIoV2ViRGF0YWJhc2VPYnNlcnZlciogb2JzZXJ2ZXIpCiB7CiAg
ICAgZGF0YWJhc2VPYnNlcnZlciA9IG9ic2VydmVyOwo=
</data>
<flag name="review"
          id="116115"
          type_id="1"
          status="-"
          setter="levin"
    />
    <flag name="commit-queue"
          id="116195"
          type_id="3"
          status="-"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117043</attachid>
            <date>2011-11-29 13:59:14 -0800</date>
            <delta_ts>2011-11-30 04:59:21 -0800</delta_ts>
            <desc>reportError</desc>
            <filename>dbHist2.2.txt</filename>
            <type>text/plain</type>
            <size>40187</size>
            <attacher name="Michael Nordman">michaeln</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMTI4NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDExLTExLTI4ICBNaWNoYWVs
IE5vcmRtYW4gIDxtaWNoYWVsbkBnb29nbGUuY28+CisKKyAgICAgICAgW2Nocm9taXVtXSBXZWJT
UUxEYXRhYmFzZSBjb3VsZCB1c2Ugc29tZSBiZXR0ZXIgZXJyb3IgcmVwb3J0aW5nLgorICAgICAg
ICBJbnN0cnVtZW50cyB0aGUgZGF0YWJhc2UgY2xhc3NlcyB0byByZXBvcnQgZXJyb3JzIHRvIGEg
RGF0YWJhc2VPYnNlcnZlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTczMjU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBjb250ZW50IG9ic2VydmFibGUgYXJ0aWZhY3RzLgor
CisgICAgICAgICogc3RvcmFnZS9BYnN0cmFjdERhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFic3RyYWN0RGF0YWJhc2U6OkFic3RyYWN0RGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6QWJzdHJhY3REYXRhYmFzZTo6cGVyZm9ybU9wZW5BbmRWZXJpZnkpOgorICAgICAgICAoV2Vi
Q29yZTo6QWJzdHJhY3REYXRhYmFzZTo6aW5jcmVtZW50YWxWYWN1dW1JZk5lZWRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpBYnN0cmFjdERhdGFiYXNlOjpyZXBvcnRPcGVuRGF0YWJhc2VSZXN1bHQp
OgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3REYXRhYmFzZTo6cmVwb3J0Q2hhbmdlVmVyc2lv
blJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpBYnN0cmFjdERhdGFiYXNlOjpyZXBvcnRTdGFy
dFRyYW5zYWN0aW9uUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkFic3RyYWN0RGF0YWJhc2U6
OnJlcG9ydENvbW1pdFRyYW5zYWN0aW9uUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkFic3Ry
YWN0RGF0YWJhc2U6OnJlcG9ydEV4ZWN1dGVTdGF0ZW1lbnRSZXN1bHQpOgorICAgICAgICAoV2Vi
Q29yZTo6QWJzdHJhY3REYXRhYmFzZTo6cmVwb3J0VmFjdXVtRGF0YWJhc2VSZXN1bHQpOgorICAg
ICAgICAqIHN0b3JhZ2UvQWJzdHJhY3REYXRhYmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6QWJz
dHJhY3REYXRhYmFzZTo6aXNTeW5jRGF0YWJhc2UpOgorICAgICAgICAqIHN0b3JhZ2UvQ2hhbmdl
VmVyc2lvbldyYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hhbmdlVmVyc2lvbldyYXBw
ZXI6OnBlcmZvcm1QcmVmbGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hhbmdlVmVyc2lvbldy
YXBwZXI6OnBlcmZvcm1Qb3N0ZmxpZ2h0KToKKyAgICAgICAgKiBzdG9yYWdlL0RhdGFiYXNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpEYXRhYmFzZSk6CisgICAgICAgICogc3Rv
cmFnZS9EYXRhYmFzZVN5bmMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VTeW5jOjpE
YXRhYmFzZVN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VTeW5jOjpjaGFuZ2VWZXJz
aW9uKToKKyAgICAgICAgKiBzdG9yYWdlL1NRTFN0YXRlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTUUxTdGF0ZW1lbnQ6OmV4ZWN1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1FMU3RhdGVt
ZW50OjpzZXREYXRhYmFzZURlbGV0ZWRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpTUUxTdGF0
ZW1lbnQ6OnNldFZlcnNpb25NaXNtYXRjaGVkRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6U1FM
U3RhdGVtZW50OjpzZXRGYWlsdXJlRHVlVG9RdW90YSk6CisgICAgICAgICogc3RvcmFnZS9TUUxT
dGF0ZW1lbnQuaDoKKyAgICAgICAgKiBzdG9yYWdlL1NRTFRyYW5zYWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpleGVjdXRlU1FMKToKKyAgICAgICAgKFdlYkNv
cmU6OlNRTFRyYW5zYWN0aW9uOjpvcGVuVHJhbnNhY3Rpb25BbmRQcmVmbGlnaHQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OmRlbGl2ZXJUcmFuc2FjdGlvbkNhbGxiYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpydW5DdXJyZW50U3RhdGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpoYW5kbGVDdXJyZW50U3RhdGVtZW50
RXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OmRlbGl2ZXJTdGF0ZW1l
bnRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6cG9zdGZsaWdo
dEFuZENvbW1pdCk6CisgICAgICAgICogc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25TeW5jOjpiZWdpbik6CisgICAgICAgIChX
ZWJDb3JlOjpTUUxUcmFuc2FjdGlvblN5bmM6OmNvbW1pdCk6CisgICAgICAgICogc3RvcmFnZS9j
aHJvbWl1bS9EYXRhYmFzZU9ic2VydmVyLmg6CisKIDIwMTEtMTEtMjggIEZhZHkgU2FtdWVsICA8
ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRml4IEFzcGVjdCBSYXRpbyBQcm9wZXJ0
eSBJbmhlcml0YW5jZSBBbmQgTWFrZSB0aGUgQ29tcHV0ZWQgVmFsdWUgRXF1YWwgdGhlIFNwZWNp
ZmllZCBWYWx1ZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9BYnN0cmFjdERhdGFiYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0Fic3RyYWN0RGF0YWJh
c2UuY3BwCShyZXZpc2lvbiAxMDEyNzIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0Fic3Ry
YWN0RGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCwxMCBAQAogI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+
CiAKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyNpbmNsdWRlICJEYXRhYmFzZU9ic2VydmVyLmgi
IC8vIEZvciBlcnJvciByZXBvcnRpbmcuCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBzdGF0aWMgY29uc3QgY2hhciB2ZXJzaW9uS2V5W10gPSAiV2ViS2l0RGF0YWJhc2VWZXJzaW9u
S2V5IjsKQEAgLTE4Miw3ICsxODYsNyBAQCBjb25zdCBjaGFyKiBBYnN0cmFjdERhdGFiYXNlOjpk
YXRhYmFzZUluCiB9CiAKIEFic3RyYWN0RGF0YWJhc2U6OkFic3RyYWN0RGF0YWJhc2UoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIGV4cGVjdGVkVmVyc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGRpc3BsYXlO
YW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUsIERhdGFiYXNlVHlwZSBkYXRhYmFzZVR5
cGUpCiAgICAgOiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkKICAgICAsIG1fbmFt
ZShuYW1lLmlzb2xhdGVkQ29weSgpKQogICAgICwgbV9leHBlY3RlZFZlcnNpb24oZXhwZWN0ZWRW
ZXJzaW9uLmlzb2xhdGVkQ29weSgpKQpAQCAtMTkxLDYgKzE5NSw3IEBAIEFic3RyYWN0RGF0YWJh
c2U6OkFic3RyYWN0RGF0YWJhc2UoU2NyaXAKICAgICAsIG1fZ3VpZCgwKQogICAgICwgbV9vcGVu
ZWQoZmFsc2UpCiAgICAgLCBtX25ldyhmYWxzZSkKKyAgICAsIG1faXNTeW5jRGF0YWJhc2UoZGF0
YWJhc2VUeXBlID09IFN5bmNEYXRhYmFzZSkKIHsKICAgICBBU1NFUlQoY29udGV4dC0+aXNDb250
ZXh0VGhyZWFkKCkpOwogICAgIG1fY29udGV4dFRocmVhZFNlY3VyaXR5T3JpZ2luID0gbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdpbigpOwpAQCAtMjU3LDYgKzI2Miw3IEBA
IGJvb2wgQWJzdHJhY3REYXRhYmFzZTo6cGVyZm9ybU9wZW5BbmRWZXIKICAgICBjb25zdCBpbnQg
bWF4U3FsaXRlQnVzeVdhaXRUaW1lID0gMzAwMDA7CiAKICAgICBpZiAoIW1fc3FsaXRlRGF0YWJh
c2Uub3BlbihtX2ZpbGVuYW1lLCB0cnVlKSkgeworICAgICAgICByZXBvcnRPcGVuRGF0YWJhc2VS
ZXN1bHQoMSwgSU5WQUxJRF9TVEFURV9FUlIsIG1fc3FsaXRlRGF0YWJhc2UubGFzdEVycm9yKCkp
OwogICAgICAgICBlcnJvck1lc3NhZ2UgPSBmb3JtYXRFcnJvck1lc3NhZ2UoInVuYWJsZSB0byBv
cGVuIGRhdGFiYXNlIiwgbV9zcWxpdGVEYXRhYmFzZS5sYXN0RXJyb3IoKSwgbV9zcWxpdGVEYXRh
YmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI5OCw2ICszMDQsNyBAQCBib29sIEFic3RyYWN0RGF0
YWJhc2U6OnBlcmZvcm1PcGVuQW5kVmVyCiAgICAgICAgICAgICBTUUxpdGVUcmFuc2FjdGlvbiB0
cmFuc2FjdGlvbihtX3NxbGl0ZURhdGFiYXNlKTsKICAgICAgICAgICAgIHRyYW5zYWN0aW9uLmJl
Z2luKCk7CiAgICAgICAgICAgICBpZiAoIXRyYW5zYWN0aW9uLmluUHJvZ3Jlc3MoKSkgeworICAg
ICAgICAgICAgICAgIHJlcG9ydE9wZW5EYXRhYmFzZVJlc3VsdCgyLCBJTlZBTElEX1NUQVRFX0VS
UiwgbV9zcWxpdGVEYXRhYmFzZS5sYXN0RXJyb3IoKSk7CiAgICAgICAgICAgICAgICAgZXJyb3JN
ZXNzYWdlID0gZm9ybWF0RXJyb3JNZXNzYWdlKCJ1bmFibGUgdG8gb3BlbiBkYXRhYmFzZSwgZmFp
bGVkIHRvIHN0YXJ0IHRyYW5zYWN0aW9uIiwgbV9zcWxpdGVEYXRhYmFzZS5sYXN0RXJyb3IoKSwg
bV9zcWxpdGVEYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgICAgICAgICAgZWMgPSBJ
TlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgICAgICAgICBtX3NxbGl0ZURhdGFiYXNlLmNsb3Nl
KCk7CkBAIC0zMDksNiArMzE2LDcgQEAgYm9vbCBBYnN0cmFjdERhdGFiYXNlOjpwZXJmb3JtT3Bl
bkFuZFZlcgogICAgICAgICAgICAgICAgIG1fbmV3ID0gdHJ1ZTsKIAogICAgICAgICAgICAgICAg
IGlmICghbV9zcWxpdGVEYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiQ1JFQVRFIFRBQkxFICIgKyB0
YWJsZU5hbWUgKyAiIChrZXkgVEVYVCBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMIFVOSVFVRSBP
TiBDT05GTElDVCBSRVBMQUNFLHZhbHVlIFRFWFQgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCk7
IikpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVwb3J0T3BlbkRhdGFiYXNlUmVzdWx0KDMsIElO
VkFMSURfU1RBVEVfRVJSLCBtX3NxbGl0ZURhdGFiYXNlLmxhc3RFcnJvcigpKTsKICAgICAgICAg
ICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gZm9ybWF0RXJyb3JNZXNzYWdlKCJ1bmFibGUgdG8g
b3BlbiBkYXRhYmFzZSwgZmFpbGVkIHRvIGNyZWF0ZSAnaW5mbycgdGFibGUiLCBtX3NxbGl0ZURh
dGFiYXNlLmxhc3RFcnJvcigpLCBtX3NxbGl0ZURhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAg
ICAgICAgICAgICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgICAgICAg
ICAgICAgdHJhbnNhY3Rpb24ucm9sbGJhY2soKTsKQEAgLTMxNiw2ICszMjQsNyBAQCBib29sIEFi
c3RyYWN0RGF0YWJhc2U6OnBlcmZvcm1PcGVuQW5kVmVyCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgaWYgKCFn
ZXRWZXJzaW9uRnJvbURhdGFiYXNlKGN1cnJlbnRWZXJzaW9uLCBmYWxzZSkpIHsKKyAgICAgICAg
ICAgICAgICByZXBvcnRPcGVuRGF0YWJhc2VSZXN1bHQoNCwgSU5WQUxJRF9TVEFURV9FUlIsIG1f
c3FsaXRlRGF0YWJhc2UubGFzdEVycm9yKCkpOwogICAgICAgICAgICAgICAgIGVycm9yTWVzc2Fn
ZSA9IGZvcm1hdEVycm9yTWVzc2FnZSgidW5hYmxlIHRvIG9wZW4gZGF0YWJhc2UsIGZhaWxlZCB0
byByZWFkIGN1cnJlbnQgdmVyc2lvbiIsIG1fc3FsaXRlRGF0YWJhc2UubGFzdEVycm9yKCksIG1f
c3FsaXRlRGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICAgICAgICAgIGVjID0gSU5W
QUxJRF9TVEFURV9FUlI7CiAgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb24ucm9sbGJhY2soKTsK
QEAgLTMyOCw2ICszMzcsNyBAQCBib29sIEFic3RyYWN0RGF0YWJhc2U6OnBlcmZvcm1PcGVuQW5k
VmVyCiAgICAgICAgICAgICB9IGVsc2UgaWYgKCFtX25ldyB8fCBzaG91bGRTZXRWZXJzaW9uSW5O
ZXdEYXRhYmFzZSkgewogICAgICAgICAgICAgICAgIExPRyhTdG9yYWdlQVBJLCAiU2V0dGluZyB2
ZXJzaW9uICVzIGluIGRhdGFiYXNlICVzIHRoYXQgd2FzIGp1c3QgY3JlYXRlZCIsIG1fZXhwZWN0
ZWRWZXJzaW9uLmFzY2lpKCkuZGF0YSgpLCBkYXRhYmFzZURlYnVnTmFtZSgpLmFzY2lpKCkuZGF0
YSgpKTsKICAgICAgICAgICAgICAgICBpZiAoIXNldFZlcnNpb25JbkRhdGFiYXNlKG1fZXhwZWN0
ZWRWZXJzaW9uLCBmYWxzZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVwb3J0T3BlbkRhdGFi
YXNlUmVzdWx0KDUsIElOVkFMSURfU1RBVEVfRVJSLCBtX3NxbGl0ZURhdGFiYXNlLmxhc3RFcnJv
cigpKTsKICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gZm9ybWF0RXJyb3JNZXNz
YWdlKCJ1bmFibGUgdG8gb3BlbiBkYXRhYmFzZSwgZmFpbGVkIHRvIHdyaXRlIGN1cnJlbnQgdmVy
c2lvbiIsIG1fc3FsaXRlRGF0YWJhc2UubGFzdEVycm9yKCksIG1fc3FsaXRlRGF0YWJhc2UubGFz
dEVycm9yTXNnKCkpOwogICAgICAgICAgICAgICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJS
OwogICAgICAgICAgICAgICAgICAgICB0cmFuc2FjdGlvbi5yb2xsYmFjaygpOwpAQCAtMzQ5LDYg
KzM1OSw3IEBAIGJvb2wgQWJzdHJhY3REYXRhYmFzZTo6cGVyZm9ybU9wZW5BbmRWZXIKICAgICAv
LyBJZiB0aGUgZXhwZWN0ZWQgdmVyc2lvbiBpc24ndCB0aGUgZW1wdHkgc3RyaW5nLCBlbnN1cmUg
dGhhdCB0aGUgY3VycmVudCBkYXRhYmFzZSB2ZXJzaW9uIHdlIGhhdmUgbWF0Y2hlcyB0aGF0IHZl
cnNpb24uIE90aGVyd2lzZSwgc2V0IGFuIGV4Y2VwdGlvbi4KICAgICAvLyBJZiB0aGUgZXhwZWN0
ZWQgdmVyc2lvbiBpcyB0aGUgZW1wdHkgc3RyaW5nLCB0aGVuIHdlIGFsd2F5cyByZXR1cm4gd2l0
aCB3aGF0ZXZlciB2ZXJzaW9uIG9mIHRoZSBkYXRhYmFzZSB3ZSBoYXZlLgogICAgIGlmICgoIW1f
bmV3IHx8IHNob3VsZFNldFZlcnNpb25Jbk5ld0RhdGFiYXNlKSAmJiBtX2V4cGVjdGVkVmVyc2lv
bi5sZW5ndGgoKSAmJiBtX2V4cGVjdGVkVmVyc2lvbiAhPSBjdXJyZW50VmVyc2lvbikgeworICAg
ICAgICByZXBvcnRPcGVuRGF0YWJhc2VSZXN1bHQoNiwgSU5WQUxJRF9TVEFURV9FUlIsIDApOwog
ICAgICAgICBlcnJvck1lc3NhZ2UgPSAidW5hYmxlIHRvIG9wZW4gZGF0YWJhc2UsIHZlcnNpb24g
bWlzbWF0Y2gsICciICsgbV9leHBlY3RlZFZlcnNpb24gKyAiJyBkb2VzIG5vdCBtYXRjaCB0aGUg
Y3VycmVudFZlcnNpb24gb2YgJyIgKyBjdXJyZW50VmVyc2lvbiArICInIjsKICAgICAgICAgZWMg
PSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgbV9zcWxpdGVEYXRhYmFzZS5jbG9zZSgpOwpA
QCAtMzYzLDYgKzM3NCw3IEBAIGJvb2wgQWJzdHJhY3REYXRhYmFzZTo6cGVyZm9ybU9wZW5BbmRW
ZXIKICAgICBpZiAobV9uZXcgJiYgIXNob3VsZFNldFZlcnNpb25Jbk5ld0RhdGFiYXNlKQogICAg
ICAgICBtX2V4cGVjdGVkVmVyc2lvbiA9ICIiOyAvLyBUaGUgY2FsbGVyIHByb3ZpZGVkIGEgY3Jl
YXRpb25DYWxsYmFjayB3aGljaCB3aWxsIHNldCB0aGUgZXhwZWN0ZWQgdmVyc2lvbi4KIAorICAg
IHJlcG9ydE9wZW5EYXRhYmFzZVJlc3VsdCgwLCAtMSwgMCk7IC8vIE9LCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKQEAgLTUzMyw2ICs1NDUsNyBAQCB2b2lkIEFic3RyYWN0RGF0YWJhc2U6OmluY3Jl
bWVudGFsVmFjdXVtCiAgICAgaW50NjRfdCB0b3RhbFNpemUgPSBtX3NxbGl0ZURhdGFiYXNlLnRv
dGFsU2l6ZSgpOwogICAgIGlmICh0b3RhbFNpemUgPD0gMTAgKiBmcmVlU3BhY2VTaXplKSB7CiAg
ICAgICAgIGludCByZXN1bHQgPSBtX3NxbGl0ZURhdGFiYXNlLnJ1bkluY3JlbWVudGFsVmFjdXVt
Q29tbWFuZCgpOworICAgICAgICByZXBvcnRWYWN1dW1EYXRhYmFzZVJlc3VsdChyZXN1bHQpOwog
ICAgICAgICBpZiAocmVzdWx0ICE9IFNRTFJlc3VsdE9rKQogICAgICAgICAgICAgbG9nRXJyb3JN
ZXNzYWdlKGZvcm1hdEVycm9yTWVzc2FnZSgiZXJyb3IgdmFjdXVtaW5nIGRhdGFiYXNlIiwgcmVz
dWx0LCBtX3NxbGl0ZURhdGFiYXNlLmxhc3RFcnJvck1zZygpKSk7CiAgICAgfQpAQCAtNTU0LDYg
KzU2Nyw0OCBAQCB2b2lkIEFic3RyYWN0RGF0YWJhc2U6OmxvZ0Vycm9yTWVzc2FnZShjCiAgICAg
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5hZGRNZXNzYWdlKE90aGVyTWVzc2FnZVNvdXJjZSwg
TG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdlLCAwLCBTdHJpbmcoKSwg
MCk7CiB9CiAKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKy8vIFRoZXNlIGFyZSB1c2VkIHRvIGdl
bmVyYXRlIGhpc3RvZ3JhbXMgb2YgZXJyb3JzIHNlZW4gd2l0aCB3ZWJzcWwuCisvLyBTZWUgYWJv
dXQ6aGlzdG9ncmFtcyBpbiBjaHJvbWl1bS4KK3ZvaWQgQWJzdHJhY3REYXRhYmFzZTo6cmVwb3J0
T3BlbkRhdGFiYXNlUmVzdWx0KGludCBlcnJvclNpdGUsIGludCB3ZWJTcWxFcnJvckNvZGUsIGlu
dCBzcWxpdGVFcnJvckNvZGUpCit7CisgICAgRGF0YWJhc2VPYnNlcnZlcjo6cmVwb3J0T3BlbkRh
dGFiYXNlUmVzdWx0KHRoaXMsIGVycm9yU2l0ZSwgd2ViU3FsRXJyb3JDb2RlLCBzcWxpdGVFcnJv
ckNvZGUpOworfQorCit2b2lkIEFic3RyYWN0RGF0YWJhc2U6OnJlcG9ydENoYW5nZVZlcnNpb25S
ZXN1bHQoaW50IGVycm9yU2l0ZSwgaW50IHdlYlNxbEVycm9yQ29kZSwgaW50IHNxbGl0ZUVycm9y
Q29kZSkKK3sKKyAgICBEYXRhYmFzZU9ic2VydmVyOjpyZXBvcnRDaGFuZ2VWZXJzaW9uUmVzdWx0
KHRoaXMsIGVycm9yU2l0ZSwgd2ViU3FsRXJyb3JDb2RlLCBzcWxpdGVFcnJvckNvZGUpOworfQor
Cit2b2lkIEFic3RyYWN0RGF0YWJhc2U6OnJlcG9ydFN0YXJ0VHJhbnNhY3Rpb25SZXN1bHQoaW50
IGVycm9yU2l0ZSwgaW50IHdlYlNxbEVycm9yQ29kZSwgaW50IHNxbGl0ZUVycm9yQ29kZSkKK3sK
KyAgICBEYXRhYmFzZU9ic2VydmVyOjpyZXBvcnRTdGFydFRyYW5zYWN0aW9uUmVzdWx0KHRoaXMs
IGVycm9yU2l0ZSwgd2ViU3FsRXJyb3JDb2RlLCBzcWxpdGVFcnJvckNvZGUpOworfQorCit2b2lk
IEFic3RyYWN0RGF0YWJhc2U6OnJlcG9ydENvbW1pdFRyYW5zYWN0aW9uUmVzdWx0KGludCBlcnJv
clNpdGUsIGludCB3ZWJTcWxFcnJvckNvZGUsIGludCBzcWxpdGVFcnJvckNvZGUpCit7CisgICAg
RGF0YWJhc2VPYnNlcnZlcjo6cmVwb3J0Q29tbWl0VHJhbnNhY3Rpb25SZXN1bHQodGhpcywgZXJy
b3JTaXRlLCB3ZWJTcWxFcnJvckNvZGUsIHNxbGl0ZUVycm9yQ29kZSk7Cit9CisKK3ZvaWQgQWJz
dHJhY3REYXRhYmFzZTo6cmVwb3J0RXhlY3V0ZVN0YXRlbWVudFJlc3VsdChpbnQgZXJyb3JTaXRl
LCBpbnQgd2ViU3FsRXJyb3JDb2RlLCBpbnQgc3FsaXRlRXJyb3JDb2RlKQoreworICAgIERhdGFi
YXNlT2JzZXJ2ZXI6OnJlcG9ydEV4ZWN1dGVTdGF0ZW1lbnRSZXN1bHQodGhpcywgZXJyb3JTaXRl
LCB3ZWJTcWxFcnJvckNvZGUsIHNxbGl0ZUVycm9yQ29kZSk7Cit9CisKK3ZvaWQgQWJzdHJhY3RE
YXRhYmFzZTo6cmVwb3J0VmFjdXVtRGF0YWJhc2VSZXN1bHQoaW50IHNxbGl0ZUVycm9yQ29kZSkK
K3sKKyAgICBEYXRhYmFzZU9ic2VydmVyOjpyZXBvcnRWYWN1dW1EYXRhYmFzZVJlc3VsdCh0aGlz
LCBzcWxpdGVFcnJvckNvZGUpOworfQorCisjZWxzZQordm9pZCBBYnN0cmFjdERhdGFiYXNlOjpy
ZXBvcnRPcGVuRGF0YWJhc2VSZXN1bHQoaW50LCBpbnQsIGludCkgeyB9Cit2b2lkIEFic3RyYWN0
RGF0YWJhc2U6OnJlcG9ydENoYW5nZVZlcnNpb25SZXN1bHQoaW50LCBpbnQsIGludCkgeyB9Cit2
b2lkIEFic3RyYWN0RGF0YWJhc2U6OnJlcG9ydFN0YXJ0VHJhbnNhY3Rpb25SZXN1bHQoaW50LCBp
bnQsIGludCkgeyB9Cit2b2lkIEFic3RyYWN0RGF0YWJhc2U6OnJlcG9ydENvbW1pdFRyYW5zYWN0
aW9uUmVzdWx0KGludCwgaW50LCBpbnQpIHsgfQordm9pZCBBYnN0cmFjdERhdGFiYXNlOjpyZXBv
cnRFeGVjdXRlU3RhdGVtZW50UmVzdWx0KGludCwgaW50LCBpbnQpIHsgfQordm9pZCBBYnN0cmFj
dERhdGFiYXNlOjpyZXBvcnRWYWN1dW1EYXRhYmFzZVJlc3VsdChpbnQpIHsgfQorI2VuZGlmIC8v
IFBMQVRGT1JNKENIUk9NSVVNKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBFTkFCTEUoU1FMX0RBVEFCQVNFKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFnZS9BYnN0
cmFjdERhdGFiYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9BYnN0
cmFjdERhdGFiYXNlLmgJKHJldmlzaW9uIDEwMTI3MikKKysrIFNvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvQWJzdHJhY3REYXRhYmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCw3IEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgb3BlbmVkKCkgY29uc3QgeyByZXR1cm4gbV9vcGVuZWQ7IH0KICAg
ICBib29sIGlzTmV3KCkgY29uc3QgeyByZXR1cm4gbV9uZXc7IH0KKyAgICBib29sIGlzU3luY0Rh
dGFiYXNlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N5bmNEYXRhYmFzZTsgfQogCiAgICAgdmlydHVh
bCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7
CiAgICAgdmlydHVhbCBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKQEAg
LTg2LDEyICs4NywxOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlSW1tZWRpYXRl
bHkoKSA9IDA7CiAKIHByb3RlY3RlZDoKKyAgICBmcmllbmQgY2xhc3MgQ2hhbmdlVmVyc2lvbldy
YXBwZXI7CisgICAgZnJpZW5kIGNsYXNzIFNRTFN0YXRlbWVudDsKKyAgICBmcmllbmQgY2xhc3Mg
U1FMU3RhdGVtZW50U3luYzsKICAgICBmcmllbmQgY2xhc3MgU1FMVHJhbnNhY3Rpb25TeW5jOwog
ICAgIGZyaWVuZCBjbGFzcyBTUUxUcmFuc2FjdGlvbjsKLSAgICBmcmllbmQgY2xhc3MgQ2hhbmdl
VmVyc2lvbldyYXBwZXI7CisKKyAgICBlbnVtIERhdGFiYXNlVHlwZSB7CisgICAgICAgIEFzeW5j
RGF0YWJhc2UsCisgICAgICAgIFN5bmNEYXRhYmFzZQorICAgIH07CiAKICAgICBBYnN0cmFjdERh
dGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3Ry
aW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKTsKKyAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0
aW1hdGVkU2l6ZSwgRGF0YWJhc2VUeXBlKTsKIAogICAgIHZvaWQgY2xvc2VEYXRhYmFzZSgpOwog
CkBAIC0xMDcsNiArMTE1LDEzIEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgbG9nRXJyb3JNZXNz
YWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAKKyAgICB2b2lkIHJlcG9ydE9wZW5EYXRhYmFz
ZVJlc3VsdChpbnQgZXJyb3JTaXRlLCBpbnQgd2ViU3FsRXJyb3JDb2RlLCBpbnQgc3FsaXRlRXJy
b3JDb2RlKTsKKyAgICB2b2lkIHJlcG9ydENoYW5nZVZlcnNpb25SZXN1bHQoaW50IGVycm9yU2l0
ZSwgaW50IHdlYlNxbEVycm9yQ29kZSwgaW50IHNxbGl0ZUVycm9yQ29kZSk7CisgICAgdm9pZCBy
ZXBvcnRTdGFydFRyYW5zYWN0aW9uUmVzdWx0KGludCBlcnJvclNpdGUsIGludCB3ZWJTcWxFcnJv
ckNvZGUsIGludCBzcWxpdGVFcnJvckNvZGUpOworICAgIHZvaWQgcmVwb3J0Q29tbWl0VHJhbnNh
Y3Rpb25SZXN1bHQoaW50IGVycm9yU2l0ZSwgaW50IHdlYlNxbEVycm9yQ29kZSwgaW50IHNxbGl0
ZUVycm9yQ29kZSk7CisgICAgdm9pZCByZXBvcnRFeGVjdXRlU3RhdGVtZW50UmVzdWx0KGludCBl
cnJvclNpdGUsIGludCB3ZWJTcWxFcnJvckNvZGUsIGludCBzcWxpdGVFcnJvckNvZGUpOworICAg
IHZvaWQgcmVwb3J0VmFjdXVtRGF0YWJhc2VSZXN1bHQoaW50IHNxbGl0ZUVycm9yQ29kZSk7CisK
ICAgICBzdGF0aWMgY29uc3QgY2hhciogZGF0YWJhc2VJbmZvVGFibGVOYW1lKCk7CiAKICAgICBS
ZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwpA
QCAtMTI2LDYgKzE0MSw3IEBAIHByaXZhdGU6CiAgICAgaW50IG1fZ3VpZDsKICAgICBib29sIG1f
b3BlbmVkOwogICAgIGJvb2wgbV9uZXc7CisgICAgY29uc3QgYm9vbCBtX2lzU3luY0RhdGFiYXNl
OwogCiAgICAgU1FMaXRlRGF0YWJhc2UgbV9zcWxpdGVEYXRhYmFzZTsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9DaGFuZ2VWZXJzaW9uV3JhcHBlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9DaGFuZ2VWZXJzaW9uV3JhcHBlci5jcHAJKHJldmlzaW9u
IDEwMTI3MikKKysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvQ2hhbmdlVmVyc2lvbldyYXBwZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxMyArNTEsMTUgQEAgYm9vbCBDaGFuZ2VWZXJzaW9u
V3JhcHBlcjo6cGVyZm9ybVByZWZsaQogCiAgICAgU3RyaW5nIGFjdHVhbFZlcnNpb247CiAgICAg
aWYgKCFkYXRhYmFzZS0+Z2V0VmVyc2lvbkZyb21EYXRhYmFzZShhY3R1YWxWZXJzaW9uKSkgewor
ICAgICAgICBpbnQgc3FsaXRlRXJyb3IgPSBkYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS5sYXN0
RXJyb3IoKTsKKyAgICAgICAgZGF0YWJhc2UtPnJlcG9ydENoYW5nZVZlcnNpb25SZXN1bHQoMSwg
U1FMRXJyb3I6OlVOS05PV05fRVJSLCBzcWxpdGVFcnJvcik7CiAgICAgICAgIG1fc3FsRXJyb3Ig
PSBTUUxFcnJvcjo6Y3JlYXRlKFNRTEVycm9yOjpVTktOT1dOX0VSUiwgInVuYWJsZSB0byByZWFk
IHRoZSBjdXJyZW50IHZlcnNpb24iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS5sYXN0RXJyb3IoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCkubGFz
dEVycm9yTXNnKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcWxp
dGVFcnJvciwgZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCkubGFzdEVycm9yTXNnKCkpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKGFjdHVhbFZlcnNpb24gIT0gbV9v
bGRWZXJzaW9uKSB7CisgICAgICAgIGRhdGFiYXNlLT5yZXBvcnRDaGFuZ2VWZXJzaW9uUmVzdWx0
KDIsIFNRTEVycm9yOjpWRVJTSU9OX0VSUiwgMCk7CiAgICAgICAgIG1fc3FsRXJyb3IgPSBTUUxF
cnJvcjo6Y3JlYXRlKFNRTEVycm9yOjpWRVJTSU9OX0VSUiwgImN1cnJlbnQgdmVyc2lvbiBvZiB0
aGUgZGF0YWJhc2UgYW5kIGBvbGRWZXJzaW9uYCBhcmd1bWVudCBkbyBub3QgbWF0Y2giKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTcyLDE0ICs3NCwxNiBAQCBib29sIENoYW5n
ZVZlcnNpb25XcmFwcGVyOjpwZXJmb3JtUG9zdGZsCiAgICAgRGF0YWJhc2UqIGRhdGFiYXNlID0g
dHJhbnNhY3Rpb24tPmRhdGFiYXNlKCk7CiAKICAgICBpZiAoIWRhdGFiYXNlLT5zZXRWZXJzaW9u
SW5EYXRhYmFzZShtX25ld1ZlcnNpb24pKSB7CisgICAgICAgIGludCBzcWxpdGVFcnJvciA9IGRh
dGFiYXNlLT5zcWxpdGVEYXRhYmFzZSgpLmxhc3RFcnJvcigpOworICAgICAgICBkYXRhYmFzZS0+
cmVwb3J0Q2hhbmdlVmVyc2lvblJlc3VsdCgzLCBTUUxFcnJvcjo6VU5LTk9XTl9FUlIsIHNxbGl0
ZUVycm9yKTsKICAgICAgICAgbV9zcWxFcnJvciA9IFNRTEVycm9yOjpjcmVhdGUoU1FMRXJyb3I6
OlVOS05PV05fRVJSLCAidW5hYmxlIHRvIHNldCBuZXcgdmVyc2lvbiBpbiBkYXRhYmFzZSIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFiYXNlLT5zcWxpdGVEYXRh
YmFzZSgpLmxhc3RFcnJvcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNxbGl0ZUVycm9yLCBkYXRhYmFzZS0+c3FsaXRl
RGF0YWJhc2UoKS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKICAgICBkYXRhYmFzZS0+c2V0RXhwZWN0ZWRWZXJzaW9uKG1fbmV3VmVyc2lvbik7CiAKKyAg
ICBkYXRhYmFzZS0+cmVwb3J0Q2hhbmdlVmVyc2lvblJlc3VsdCgwLCAtMSwgMCk7IC8vIE9LCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvRGF0YWJhc2UuY3Bw
CShyZXZpc2lvbiAxMDEyNzIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDcgKzEyMCw3IEBAIFBhc3NSZWZQdHI8RGF0YWJhc2U+
IERhdGFiYXNlOjpvcGVuRGF0YWIKIH0KIAogRGF0YWJhc2U6OkRhdGFiYXNlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBl
eHBlY3RlZFZlcnNpb24sIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcg
ZXN0aW1hdGVkU2l6ZSkKLSAgICA6IEFic3RyYWN0RGF0YWJhc2UoY29udGV4dCwgbmFtZSwgZXhw
ZWN0ZWRWZXJzaW9uLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSkKKyAgICA6IEFic3RyYWN0
RGF0YWJhc2UoY29udGV4dCwgbmFtZSwgZXhwZWN0ZWRWZXJzaW9uLCBkaXNwbGF5TmFtZSwgZXN0
aW1hdGVkU2l6ZSwgQXN5bmNEYXRhYmFzZSkKICAgICAsIG1fdHJhbnNhY3Rpb25JblByb2dyZXNz
KGZhbHNlKQogICAgICwgbV9pc1RyYW5zYWN0aW9uUXVldWVFbmFibGVkKHRydWUpCiAgICAgLCBt
X2RlbGV0ZWQoZmFsc2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNlU3lu
Yy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3RvcmFnZS9EYXRhYmFzZVN5bmMu
Y3BwCShyZXZpc2lvbiAxMDEyNzIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0RhdGFiYXNl
U3luYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcgQEAgUGFzc1JlZlB0cjxEYXRh
YmFzZVN5bmM+IERhdGFiYXNlU3luYzo6bwogCiBEYXRhYmFzZVN5bmM6OkRhdGFiYXNlU3luYyhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgZXhwZWN0ZWRWZXJzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKQotICAg
IDogQWJzdHJhY3REYXRhYmFzZShjb250ZXh0LCBuYW1lLCBleHBlY3RlZFZlcnNpb24sIGRpc3Bs
YXlOYW1lLCBlc3RpbWF0ZWRTaXplKQorICAgIDogQWJzdHJhY3REYXRhYmFzZShjb250ZXh0LCBu
YW1lLCBleHBlY3RlZFZlcnNpb24sIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplLCBTeW5jRGF0
YWJhc2UpCiB7CiB9CiAKQEAgLTk3LDYgKzk3LDcgQEAgdm9pZCBEYXRhYmFzZVN5bmM6OmNoYW5n
ZVZlcnNpb24oY29uc3QgUwogICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlz
Q29udGV4dFRocmVhZCgpKTsKIAogICAgIGlmIChzcWxpdGVEYXRhYmFzZSgpLnRyYW5zYWN0aW9u
SW5Qcm9ncmVzcygpKSB7CisgICAgICAgIHJlcG9ydENoYW5nZVZlcnNpb25SZXN1bHQoMSwgU1FM
RXhjZXB0aW9uOjpEQVRBQkFTRV9FUlIsIDApOwogICAgICAgICBzZXRMYXN0RXJyb3JNZXNzYWdl
KCJ1bmFibGUgdG8gY2hhbmdlVmVyc2lvbiBmcm9tIHdpdGhpbiBhIHRyYW5zYWN0aW9uIik7CiAg
ICAgICAgIGVjID0gU1FMRXhjZXB0aW9uOjpEQVRBQkFTRV9FUlI7CiAgICAgICAgIHJldHVybjsK
QEAgLTExMCwxMiArMTExLDE0IEBAIHZvaWQgRGF0YWJhc2VTeW5jOjpjaGFuZ2VWZXJzaW9uKGNv
bnN0IFMKIAogICAgIFN0cmluZyBhY3R1YWxWZXJzaW9uOwogICAgIGlmICghZ2V0VmVyc2lvbkZy
b21EYXRhYmFzZShhY3R1YWxWZXJzaW9uKSkgeworICAgICAgICByZXBvcnRDaGFuZ2VWZXJzaW9u
UmVzdWx0KDIsIFNRTEV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsIHNxbGl0ZURhdGFiYXNlKCkubGFz
dEVycm9yKCkpOwogICAgICAgICBzZXRMYXN0RXJyb3JNZXNzYWdlKCJ1bmFibGUgdG8gcmVhZCB0
aGUgY3VycmVudCB2ZXJzaW9uIiwgc3FsaXRlRGF0YWJhc2UoKS5sYXN0RXJyb3IoKSwgc3FsaXRl
RGF0YWJhc2UoKS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIGVjID0gU1FMRXhjZXB0aW9uOjpV
TktOT1dOX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChhY3R1YWxWZXJz
aW9uICE9IG9sZFZlcnNpb24pIHsKKyAgICAgICAgcmVwb3J0Q2hhbmdlVmVyc2lvblJlc3VsdCgz
LCBTUUxFeGNlcHRpb246OlZFUlNJT05fRVJSLCAwKTsKICAgICAgICAgc2V0TGFzdEVycm9yTWVz
c2FnZSgiY3VycmVudCB2ZXJzaW9uIG9mIHRoZSBkYXRhYmFzZSBhbmQgYG9sZFZlcnNpb25gIGFy
Z3VtZW50IGRvIG5vdCBtYXRjaCIpOwogICAgICAgICBlYyA9IFNRTEV4Y2VwdGlvbjo6VkVSU0lP
Tl9FUlI7CiAgICAgICAgIHJldHVybjsKQEAgLTEyNyw2ICsxMzAsNyBAQCB2b2lkIERhdGFiYXNl
U3luYzo6Y2hhbmdlVmVyc2lvbihjb25zdCBTCiAgICAgfQogCiAgICAgaWYgKCFzZXRWZXJzaW9u
SW5EYXRhYmFzZShuZXdWZXJzaW9uKSkgeworICAgICAgICByZXBvcnRDaGFuZ2VWZXJzaW9uUmVz
dWx0KDQsIFNRTEV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsIHNxbGl0ZURhdGFiYXNlKCkubGFzdEVy
cm9yKCkpOwogICAgICAgICBzZXRMYXN0RXJyb3JNZXNzYWdlKCJ1bmFibGUgdG8gc2V0IHRoZSBu
ZXcgdmVyc2lvbiIsIHNxbGl0ZURhdGFiYXNlKCkubGFzdEVycm9yKCksIHNxbGl0ZURhdGFiYXNl
KCkubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBlYyA9IFNRTEV4Y2VwdGlvbjo6VU5LTk9XTl9F
UlI7CiAgICAgICAgIHJldHVybjsKQEAgLTEzOCw2ICsxNDIsOCBAQCB2b2lkIERhdGFiYXNlU3lu
Yzo6Y2hhbmdlVmVyc2lvbihjb25zdCBTCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBy
ZXBvcnRDaGFuZ2VWZXJzaW9uUmVzdWx0KDAsIC0xLCAwKTsgLy8gT0sKKwogICAgIHNldEV4cGVj
dGVkVmVyc2lvbihuZXdWZXJzaW9uKTsKICAgICBzZXRMYXN0RXJyb3JNZXNzYWdlKCIiKTsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU1FMU3RhdGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1NRTFN0YXRlbWVudC5jcHAJKHJldmlzaW9uIDEw
MTI3MikKKysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU1FMU3RhdGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODIsNiArODIsNyBAQCBib29sIFNRTFN0YXRlbWVudDo6ZXhlY3V0ZShEYXRh
YmFzZSogZGIpCiAgICAgICAgICAgICBtX2Vycm9yID0gU1FMRXJyb3I6OmNyZWF0ZShTUUxFcnJv
cjo6REFUQUJBU0VfRVJSLCAiY291bGQgbm90IHByZXBhcmUgc3RhdGVtZW50IiwgcmVzdWx0LCAi
aW50ZXJydXB0ZWQiKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9lcnJvciA9IFNRTEVy
cm9yOjpjcmVhdGUoU1FMRXJyb3I6OlNZTlRBWF9FUlIsICJjb3VsZCBub3QgcHJlcGFyZSBzdGF0
ZW1lbnQiLCByZXN1bHQsIGRhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIGRiLT5y
ZXBvcnRFeGVjdXRlU3RhdGVtZW50UmVzdWx0KDEsIG1fZXJyb3ItPmNvZGUoKSwgcmVzdWx0KTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtOTAsMTggKzkxLDIwIEBAIGJvb2wg
U1FMU3RhdGVtZW50OjpleGVjdXRlKERhdGFiYXNlKiBkYikKICAgICBpZiAoc3RhdGVtZW50LmJp
bmRQYXJhbWV0ZXJDb3VudCgpICE9IG1fYXJndW1lbnRzLnNpemUoKSkgewogICAgICAgICBMT0co
U3RvcmFnZUFQSSwgIkJpbmQgcGFyYW1ldGVyIGNvdW50IGRvZXNuJ3QgbWF0Y2ggbnVtYmVyIG9m
IHF1ZXN0aW9uIG1hcmtzIik7CiAgICAgICAgIG1fZXJyb3IgPSBTUUxFcnJvcjo6Y3JlYXRlKGRi
LT5pc0ludGVycnVwdGVkKCkgPyBTUUxFcnJvcjo6REFUQUJBU0VfRVJSIDogU1FMRXJyb3I6OlNZ
TlRBWF9FUlIsICJudW1iZXIgb2YgJz8ncyBpbiBzdGF0ZW1lbnQgc3RyaW5nIGRvZXMgbm90IG1h
dGNoIGFyZ3VtZW50IGNvdW50Iik7CisgICAgICAgIGRiLT5yZXBvcnRFeGVjdXRlU3RhdGVtZW50
UmVzdWx0KDIsIG1fZXJyb3ItPmNvZGUoKSwgMCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9hcmd1bWVudHMuc2l6ZSgpOyAr
K2kpIHsKICAgICAgICAgcmVzdWx0ID0gc3RhdGVtZW50LmJpbmRWYWx1ZShpICsgMSwgbV9hcmd1
bWVudHNbaV0pOwogICAgICAgICBpZiAocmVzdWx0ID09IFNRTFJlc3VsdEZ1bGwpIHsKLSAgICAg
ICAgICAgIHNldEZhaWx1cmVEdWVUb1F1b3RhKCk7CisgICAgICAgICAgICBzZXRGYWlsdXJlRHVl
VG9RdW90YShkYik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAocmVzdWx0ICE9IFNRTFJlc3VsdE9rKSB7CiAgICAgICAgICAgICBMT0coU3RvcmFn
ZUFQSSwgIkZhaWxlZCB0byBiaW5kIHZhbHVlIGluZGV4ICVpIHRvIHN0YXRlbWVudCBmb3IgcXVl
cnkgJyVzJyIsIGkgKyAxLCBtX3N0YXRlbWVudC5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgICAg
ICBkYi0+cmVwb3J0RXhlY3V0ZVN0YXRlbWVudFJlc3VsdCgzLCBTUUxFcnJvcjo6REFUQUJBU0Vf
RVJSLCByZXN1bHQpOwogICAgICAgICAgICAgbV9lcnJvciA9IFNRTEVycm9yOjpjcmVhdGUoU1FM
RXJyb3I6OkRBVEFCQVNFX0VSUiwgImNvdWxkIG5vdCBiaW5kIHZhbHVlIiwgcmVzdWx0LCBkYXRh
YmFzZS0+bGFzdEVycm9yTXNnKCkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CkBAIC0xMjYsNiArMTI5LDcgQEAgYm9vbCBTUUxTdGF0ZW1lbnQ6OmV4ZWN1dGUoRGF0YWJh
c2UqIGRiKQogICAgICAgICB9IHdoaWxlIChyZXN1bHQgPT0gU1FMUmVzdWx0Um93KTsKIAogICAg
ICAgICBpZiAocmVzdWx0ICE9IFNRTFJlc3VsdERvbmUpIHsKKyAgICAgICAgICAgIGRiLT5yZXBv
cnRFeGVjdXRlU3RhdGVtZW50UmVzdWx0KDQsIFNRTEVycm9yOjpEQVRBQkFTRV9FUlIsIHJlc3Vs
dCk7CiAgICAgICAgICAgICBtX2Vycm9yID0gU1FMRXJyb3I6OmNyZWF0ZShTUUxFcnJvcjo6REFU
QUJBU0VfRVJSLCAiY291bGQgbm90IGl0ZXJhdGUgcmVzdWx0cyIsIHJlc3VsdCwgZGF0YWJhc2Ut
Pmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpA
QCAtMTM1LDkgKzEzOSwxMCBAQCBib29sIFNRTFN0YXRlbWVudDo6ZXhlY3V0ZShEYXRhYmFzZSog
ZGIpCiAgICAgICAgICAgICByZXN1bHRTZXQtPnNldEluc2VydElkKGRhdGFiYXNlLT5sYXN0SW5z
ZXJ0Um93SUQoKSk7CiAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU1FMUmVzdWx0RnVsbCkgewog
ICAgICAgICAvLyBSZXR1cm4gdGhlIFF1b3RhIGVycm9yIC0gdGhlIGRlbGVnYXRlIHdpbGwgYmUg
YXNrZWQgZm9yIG1vcmUgc3BhY2UgYW5kIHRoaXMgc3RhdGVtZW50IG1pZ2h0IGJlIHJlLXJ1bgot
ICAgICAgICBzZXRGYWlsdXJlRHVlVG9RdW90YSgpOworICAgICAgICBzZXRGYWlsdXJlRHVlVG9R
dW90YShkYik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9IGVsc2UgeworICAgICAgICBk
Yi0+cmVwb3J0RXhlY3V0ZVN0YXRlbWVudFJlc3VsdCg1LCBTUUxFcnJvcjo6REFUQUJBU0VfRVJS
LCByZXN1bHQpOwogICAgICAgICBtX2Vycm9yID0gU1FMRXJyb3I6OmNyZWF0ZShTUUxFcnJvcjo6
REFUQUJBU0VfRVJSLCAiY291bGQgbm90IGV4ZWN1dGUgc3RhdGVtZW50IiwgcmVzdWx0LCBkYXRh
YmFzZS0+bGFzdEVycm9yTXNnKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAt
MTQ4LDE4ICsxNTMsMjEgQEAgYm9vbCBTUUxTdGF0ZW1lbnQ6OmV4ZWN1dGUoRGF0YWJhc2UqIGRi
KQogICAgIHJlc3VsdFNldC0+c2V0Um93c0FmZmVjdGVkKGRhdGFiYXNlLT5sYXN0Q2hhbmdlcygp
KTsKIAogICAgIG1fcmVzdWx0U2V0ID0gcmVzdWx0U2V0OworICAgIGRiLT5yZXBvcnRFeGVjdXRl
U3RhdGVtZW50UmVzdWx0KDAsIC0xLCAwKTsgLy8gT0sKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
dm9pZCBTUUxTdGF0ZW1lbnQ6OnNldERhdGFiYXNlRGVsZXRlZEVycm9yKCkKK3ZvaWQgU1FMU3Rh
dGVtZW50OjpzZXREYXRhYmFzZURlbGV0ZWRFcnJvcihEYXRhYmFzZSogZGF0YWJhc2UpCiB7CiAg
ICAgQVNTRVJUKCFtX2Vycm9yICYmICFtX3Jlc3VsdFNldCk7CisgICAgZGF0YWJhc2UtPnJlcG9y
dEV4ZWN1dGVTdGF0ZW1lbnRSZXN1bHQoNiwgU1FMRXJyb3I6OlVOS05PV05fRVJSLCAwKTsKICAg
ICBtX2Vycm9yID0gU1FMRXJyb3I6OmNyZWF0ZShTUUxFcnJvcjo6VU5LTk9XTl9FUlIsICJ1bmFi
bGUgdG8gZXhlY3V0ZSBzdGF0ZW1lbnQsIGJlY2F1c2UgdGhlIHVzZXIgZGVsZXRlZCB0aGUgZGF0
YWJhc2UiKTsKIH0KIAotdm9pZCBTUUxTdGF0ZW1lbnQ6OnNldFZlcnNpb25NaXNtYXRjaGVkRXJy
b3IoKQordm9pZCBTUUxTdGF0ZW1lbnQ6OnNldFZlcnNpb25NaXNtYXRjaGVkRXJyb3IoRGF0YWJh
c2UqIGRhdGFiYXNlKQogewogICAgIEFTU0VSVCghbV9lcnJvciAmJiAhbV9yZXN1bHRTZXQpOwor
ICAgIGRhdGFiYXNlLT5yZXBvcnRFeGVjdXRlU3RhdGVtZW50UmVzdWx0KDcsIFNRTEVycm9yOjpW
RVJTSU9OX0VSUiwgMCk7CiAgICAgbV9lcnJvciA9IFNRTEVycm9yOjpjcmVhdGUoU1FMRXJyb3I6
OlZFUlNJT05fRVJSLCAiY3VycmVudCB2ZXJzaW9uIG9mIHRoZSBkYXRhYmFzZSBhbmQgYG9sZFZl
cnNpb25gIGFyZ3VtZW50IGRvIG5vdCBtYXRjaCIpOwogfQogCkBAIC0xODMsOSArMTkxLDEwIEBA
IGJvb2wgU1FMU3RhdGVtZW50OjpwZXJmb3JtQ2FsbGJhY2soU1FMVHIKICAgICByZXR1cm4gY2Fs
bGJhY2tFcnJvcjsKIH0KIAotdm9pZCBTUUxTdGF0ZW1lbnQ6OnNldEZhaWx1cmVEdWVUb1F1b3Rh
KCkKK3ZvaWQgU1FMU3RhdGVtZW50OjpzZXRGYWlsdXJlRHVlVG9RdW90YShEYXRhYmFzZSogZGF0
YWJhc2UpCiB7CiAgICAgQVNTRVJUKCFtX2Vycm9yICYmICFtX3Jlc3VsdFNldCk7CisgICAgZGF0
YWJhc2UtPnJlcG9ydEV4ZWN1dGVTdGF0ZW1lbnRSZXN1bHQoOCwgU1FMRXJyb3I6OlFVT1RBX0VS
UiwgMCk7CiAgICAgbV9lcnJvciA9IFNRTEVycm9yOjpjcmVhdGUoU1FMRXJyb3I6OlFVT1RBX0VS
UiwgInRoZXJlIHdhcyBub3QgZW5vdWdoIHJlbWFpbmluZyBzdG9yYWdlIHNwYWNlLCBvciB0aGUg
c3RvcmFnZSBxdW90YSB3YXMgcmVhY2hlZCBhbmQgdGhlIHVzZXIgZGVjbGluZWQgdG8gYWxsb3cg
bW9yZSBzcGFjZSIpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1NRTFN0YXRl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU1FMU3RhdGVtZW50
LmgJKHJldmlzaW9uIDEwMTI3MikKKysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU1FMU3RhdGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDggKzU1LDggQEAgcHVibGljOgogICAgIGJvb2wg
aGFzU3RhdGVtZW50Q2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBtX3N0YXRlbWVudENhbGxiYWNr
V3JhcHBlci5oYXNDYWxsYmFjaygpOyB9CiAgICAgYm9vbCBoYXNTdGF0ZW1lbnRFcnJvckNhbGxi
YWNrKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZW1lbnRFcnJvckNhbGxiYWNrV3JhcHBlci5oYXND
YWxsYmFjaygpOyB9CiAKLSAgICB2b2lkIHNldERhdGFiYXNlRGVsZXRlZEVycm9yKCk7Ci0gICAg
dm9pZCBzZXRWZXJzaW9uTWlzbWF0Y2hlZEVycm9yKCk7CisgICAgdm9pZCBzZXREYXRhYmFzZURl
bGV0ZWRFcnJvcihEYXRhYmFzZSopOworICAgIHZvaWQgc2V0VmVyc2lvbk1pc21hdGNoZWRFcnJv
cihEYXRhYmFzZSopOwogCiAgICAgYm9vbCBwZXJmb3JtQ2FsbGJhY2soU1FMVHJhbnNhY3Rpb24q
KTsKIApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNRTFN0YXRlbWVu
dChEYXRhYmFzZSosIGNvbnN0IFN0cmluZyYgc3RhdGVtZW50LCBjb25zdCBWZWN0b3I8U1FMVmFs
dWU+JiBhcmd1bWVudHMsIFBhc3NSZWZQdHI8U1FMU3RhdGVtZW50Q2FsbGJhY2s+LCBQYXNzUmVm
UHRyPFNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2s+LCBpbnQgcGVybWlzc2lvbnMpOwogCi0gICAg
dm9pZCBzZXRGYWlsdXJlRHVlVG9RdW90YSgpOworICAgIHZvaWQgc2V0RmFpbHVyZUR1ZVRvUXVv
dGEoRGF0YWJhc2UqKTsKICAgICB2b2lkIGNsZWFyRmFpbHVyZUR1ZVRvUXVvdGEoKTsKIAogICAg
IFN0cmluZyBtX3N0YXRlbWVudDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU1FMVHJh
bnNhY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU1FMVHJh
bnNhY3Rpb24uY3BwCShyZXZpc2lvbiAxMDEyNzIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L1NRTFRyYW5zYWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDcgKzEwNSw3IEBAIHZv
aWQgU1FMVHJhbnNhY3Rpb246OmV4ZWN1dGVTUUwoY29uc3QgU3QKICAgICBSZWZQdHI8U1FMU3Rh
dGVtZW50PiBzdGF0ZW1lbnQgPSBTUUxTdGF0ZW1lbnQ6OmNyZWF0ZShtX2RhdGFiYXNlLmdldCgp
LCBzcWxTdGF0ZW1lbnQsIGFyZ3VtZW50cywgY2FsbGJhY2ssIGNhbGxiYWNrRXJyb3IsIHBlcm1p
c3Npb25zKTsKIAogICAgIGlmIChtX2RhdGFiYXNlLT5kZWxldGVkKCkpCi0gICAgICAgIHN0YXRl
bWVudC0+c2V0RGF0YWJhc2VEZWxldGVkRXJyb3IoKTsKKyAgICAgICAgc3RhdGVtZW50LT5zZXRE
YXRhYmFzZURlbGV0ZWRFcnJvcihtX2RhdGFiYXNlLmdldCgpKTsKIAogICAgIGVucXVldWVTdGF0
ZW1lbnQoc3RhdGVtZW50KTsKIH0KQEAgLTI0NSw2ICsyNDUsNyBAQCB2b2lkIFNRTFRyYW5zYWN0
aW9uOjpvcGVuVHJhbnNhY3Rpb25BbmRQCiAKICAgICAvLyBJZiB0aGUgZGF0YWJhc2Ugd2FzIGRl
bGV0ZWQsIGp1bXAgdG8gdGhlIGVycm9yIGNhbGxiYWNrCiAgICAgaWYgKG1fZGF0YWJhc2UtPmRl
bGV0ZWQoKSkgeworICAgICAgICBtX2RhdGFiYXNlLT5yZXBvcnRTdGFydFRyYW5zYWN0aW9uUmVz
dWx0KDEsIFNRTEVycm9yOjpVTktOT1dOX0VSUiwgMCk7CiAgICAgICAgIG1fdHJhbnNhY3Rpb25F
cnJvciA9IFNRTEVycm9yOjpjcmVhdGUoU1FMRXJyb3I6OlVOS05PV05fRVJSLCAidW5hYmxlIHRv
IG9wZW4gYSB0cmFuc2FjdGlvbiwgYmVjYXVzZSB0aGUgdXNlciBkZWxldGVkIHRoZSBkYXRhYmFz
ZSIpOwogICAgICAgICBoYW5kbGVUcmFuc2FjdGlvbkVycm9yKGZhbHNlKTsKICAgICAgICAgcmV0
dXJuOwpAQCAtMjY1LDYgKzI2Niw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246Om9wZW5UcmFuc2Fj
dGlvbkFuZFAKICAgICAvLyBUcmFuc2FjdGlvbiBTdGVwcyAxKzIgLSBPcGVuIGEgdHJhbnNhY3Rp
b24gdG8gdGhlIGRhdGFiYXNlLCBqdW1waW5nIHRvIHRoZSBlcnJvciBjYWxsYmFjayBpZiB0aGF0
IGZhaWxzCiAgICAgaWYgKCFtX3NxbGl0ZVRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpIHsKICAg
ICAgICAgQVNTRVJUKCFtX2RhdGFiYXNlLT5zcWxpdGVEYXRhYmFzZSgpLnRyYW5zYWN0aW9uSW5Q
cm9ncmVzcygpKTsKKyAgICAgICAgbV9kYXRhYmFzZS0+cmVwb3J0U3RhcnRUcmFuc2FjdGlvblJl
c3VsdCgyLCBTUUxFcnJvcjo6REFUQUJBU0VfRVJSLCBtX2RhdGFiYXNlLT5zcWxpdGVEYXRhYmFz
ZSgpLmxhc3RFcnJvcigpKTsKICAgICAgICAgbV90cmFuc2FjdGlvbkVycm9yID0gU1FMRXJyb3I6
OmNyZWF0ZShTUUxFcnJvcjo6REFUQUJBU0VfRVJSLCAidW5hYmxlIHRvIGJlZ2luIHRyYW5zYWN0
aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2Rh
dGFiYXNlLT5zcWxpdGVEYXRhYmFzZSgpLmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLT5zcWxpdGVE
YXRhYmFzZSgpLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgbV9zcWxpdGVUcmFuc2FjdGlvbi5j
bGVhcigpOwpAQCAtMjc3LDYgKzI3OSw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246Om9wZW5UcmFu
c2FjdGlvbkFuZFAKICAgICAvLyB0aGUgYWN0dWFsIHZlcnNpb24uIEluIHNpbmdsZS1wcm9jZXNz
IGJyb3dzZXJzLCB0aGlzIGlzIGp1c3QgYSBtYXAgbG9va3VwLgogICAgIFN0cmluZyBhY3R1YWxW
ZXJzaW9uOwogICAgIGlmICghbV9kYXRhYmFzZS0+Z2V0QWN0dWFsVmVyc2lvbkZvclRyYW5zYWN0
aW9uKGFjdHVhbFZlcnNpb24pKSB7CisgICAgICAgIG1fZGF0YWJhc2UtPnJlcG9ydFN0YXJ0VHJh
bnNhY3Rpb25SZXN1bHQoMywgU1FMRXJyb3I6OkRBVEFCQVNFX0VSUiwgbV9kYXRhYmFzZS0+c3Fs
aXRlRGF0YWJhc2UoKS5sYXN0RXJyb3IoKSk7CiAgICAgICAgIG1fdHJhbnNhY3Rpb25FcnJvciA9
IFNRTEVycm9yOjpjcmVhdGUoU1FMRXJyb3I6OkRBVEFCQVNFX0VSUiwgInVuYWJsZSB0byByZWFk
IHZlcnNpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1fZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCkubGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPnNx
bGl0ZURhdGFiYXNlKCkubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBtX2RhdGFiYXNlLT5kaXNh
YmxlQXV0aG9yaXplcigpOwpAQCAtMjk0LDggKzI5NywxMCBAQCB2b2lkIFNRTFRyYW5zYWN0aW9u
OjpvcGVuVHJhbnNhY3Rpb25BbmRQCiAgICAgICAgIG1fc3FsaXRlVHJhbnNhY3Rpb24uY2xlYXIo
KTsKICAgICAgICAgbV9kYXRhYmFzZS0+ZW5hYmxlQXV0aG9yaXplcigpOwogICAgICAgICBtX3Ry
YW5zYWN0aW9uRXJyb3IgPSBtX3dyYXBwZXItPnNxbEVycm9yKCk7Ci0gICAgICAgIGlmICghbV90
cmFuc2FjdGlvbkVycm9yKQorICAgICAgICBpZiAoIW1fdHJhbnNhY3Rpb25FcnJvcikgeworICAg
ICAgICAgICAgbV9kYXRhYmFzZS0+cmVwb3J0U3RhcnRUcmFuc2FjdGlvblJlc3VsdCg0LCBTUUxF
cnJvcjo6VU5LTk9XTl9FUlIsIDApOwogICAgICAgICAgICAgbV90cmFuc2FjdGlvbkVycm9yID0g
U1FMRXJyb3I6OmNyZWF0ZShTUUxFcnJvcjo6VU5LTk9XTl9FUlIsICJ1bmtub3duIGVycm9yIG9j
Y3VyZWQgZHVyaW5nIHRyYW5zYWN0aW9uIHByZWZsaWdodCIpOworICAgICAgICB9CiAgICAgICAg
IGhhbmRsZVRyYW5zYWN0aW9uRXJyb3IoZmFsc2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtMzE5LDEwICszMjQsMTMgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6ZGVsaXZlclRyYW5zYWN0
aW9uQwogCiAgICAgLy8gVHJhbnNhY3Rpb24gU3RlcCA1IC0gSWYgdGhlIHRyYW5zYWN0aW9uIGNh
bGxiYWNrIHdhcyBudWxsIG9yIHJhaXNlZCBhbiBleGNlcHRpb24sIGp1bXAgdG8gdGhlIGVycm9y
IGNhbGxiYWNrCiAgICAgaWYgKHNob3VsZERlbGl2ZXJFcnJvckNhbGxiYWNrKSB7CisgICAgICAg
IG1fZGF0YWJhc2UtPnJlcG9ydFN0YXJ0VHJhbnNhY3Rpb25SZXN1bHQoNSwgU1FMRXJyb3I6OlVO
S05PV05fRVJSLCAwKTsKICAgICAgICAgbV90cmFuc2FjdGlvbkVycm9yID0gU1FMRXJyb3I6OmNy
ZWF0ZShTUUxFcnJvcjo6VU5LTk9XTl9FUlIsICJ0aGUgU1FMVHJhbnNhY3Rpb25DYWxsYmFjayB3
YXMgbnVsbCBvciB0aHJldyBhbiBleGNlcHRpb24iKTsKICAgICAgICAgZGVsaXZlclRyYW5zYWN0
aW9uRXJyb3JDYWxsYmFjaygpOwogICAgIH0gZWxzZQogICAgICAgICBzY2hlZHVsZVRvUnVuU3Rh
dGVtZW50cygpOworCisgICAgbV9kYXRhYmFzZS0+cmVwb3J0U3RhcnRUcmFuc2FjdGlvblJlc3Vs
dCgwLCAtMSwgMCk7IC8vIE9LCiB9CiAKIHZvaWQgU1FMVHJhbnNhY3Rpb246OnNjaGVkdWxlVG9S
dW5TdGF0ZW1lbnRzKCkKQEAgLTM4Nyw3ICszOTUsNyBAQCBib29sIFNRTFRyYW5zYWN0aW9uOjpy
dW5DdXJyZW50U3RhdGVtZW50CiAgICAgbV9kYXRhYmFzZS0+cmVzZXRBdXRob3JpemVyKCk7CiAK
ICAgICBpZiAobV9oYXNWZXJzaW9uTWlzbWF0Y2gpCi0gICAgICAgIG1fY3VycmVudFN0YXRlbWVu
dC0+c2V0VmVyc2lvbk1pc21hdGNoZWRFcnJvcigpOworICAgICAgICBtX2N1cnJlbnRTdGF0ZW1l
bnQtPnNldFZlcnNpb25NaXNtYXRjaGVkRXJyb3IobV9kYXRhYmFzZS5nZXQoKSk7CiAKICAgICBp
ZiAobV9jdXJyZW50U3RhdGVtZW50LT5leGVjdXRlKG1fZGF0YWJhc2UuZ2V0KCkpKSB7CiAgICAg
ICAgIGlmIChtX2RhdGFiYXNlLT5sYXN0QWN0aW9uQ2hhbmdlZERhdGFiYXNlKCkpIHsKQEAgLTQy
OCw4ICs0MzYsMTAgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6aGFuZGxlQ3VycmVudFN0YXRlbQog
ICAgICAgICBtX2RhdGFiYXNlLT5zY2hlZHVsZVRyYW5zYWN0aW9uQ2FsbGJhY2sodGhpcyk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgbV90cmFuc2FjdGlvbkVycm9yID0gbV9jdXJyZW50U3RhdGVt
ZW50LT5zcWxFcnJvcigpOwotICAgICAgICBpZiAoIW1fdHJhbnNhY3Rpb25FcnJvcikKKyAgICAg
ICAgaWYgKCFtX3RyYW5zYWN0aW9uRXJyb3IpIHsKKyAgICAgICAgICAgIG1fZGF0YWJhc2UtPnJl
cG9ydENvbW1pdFRyYW5zYWN0aW9uUmVzdWx0KDEsIFNRTEVycm9yOjpEQVRBQkFTRV9FUlIsIDAp
OwogICAgICAgICAgICAgbV90cmFuc2FjdGlvbkVycm9yID0gU1FMRXJyb3I6OmNyZWF0ZShTUUxF
cnJvcjo6REFUQUJBU0VfRVJSLCAidGhlIHN0YXRlbWVudCBmYWlsZWQgdG8gZXhlY3V0ZSIpOwor
ICAgICAgICB9CiAgICAgICAgIGhhbmRsZVRyYW5zYWN0aW9uRXJyb3IoZmFsc2UpOwogICAgIH0K
IH0KQEAgLTQ0NSw2ICs0NTUsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpkZWxpdmVyU3RhdGVt
ZW50Q2FsCiAgICAgbV9leGVjdXRlU3FsQWxsb3dlZCA9IGZhbHNlOwogCiAgICAgaWYgKHJlc3Vs
dCkgeworICAgICAgICBtX2RhdGFiYXNlLT5yZXBvcnRDb21taXRUcmFuc2FjdGlvblJlc3VsdCgy
LCBTUUxFcnJvcjo6VU5LTk9XTl9FUlIsIDApOwogICAgICAgICBtX3RyYW5zYWN0aW9uRXJyb3Ig
PSBTUUxFcnJvcjo6Y3JlYXRlKFNRTEVycm9yOjpVTktOT1dOX0VSUiwgInRoZSBzdGF0ZW1lbnQg
Y2FsbGJhY2sgcmFpc2VkIGFuIGV4Y2VwdGlvbiBvciBzdGF0ZW1lbnQgZXJyb3IgY2FsbGJhY2sg
ZGlkIG5vdCByZXR1cm4gZmFsc2UiKTsKICAgICAgICAgaGFuZGxlVHJhbnNhY3Rpb25FcnJvcih0
cnVlKTsKICAgICB9IGVsc2UKQEAgLTQ3MCw4ICs0ODEsMTAgQEAgdm9pZCBTUUxUcmFuc2FjdGlv
bjo6cG9zdGZsaWdodEFuZENvbW1pdAogICAgIC8vIFRyYW5zYWN0aW9uIFN0ZXAgNyAtIFBlZm9y
bSBwb3N0ZmxpZ2h0IHN0ZXBzLCBqdW1waW5nIHRvIHRoZSBlcnJvciBjYWxsYmFjayBpZiB0aGV5
IGZhaWwKICAgICBpZiAobV93cmFwcGVyICYmICFtX3dyYXBwZXItPnBlcmZvcm1Qb3N0ZmxpZ2h0
KHRoaXMpKSB7CiAgICAgICAgIG1fdHJhbnNhY3Rpb25FcnJvciA9IG1fd3JhcHBlci0+c3FsRXJy
b3IoKTsKLSAgICAgICAgaWYgKCFtX3RyYW5zYWN0aW9uRXJyb3IpCisgICAgICAgIGlmICghbV90
cmFuc2FjdGlvbkVycm9yKSB7CisgICAgICAgICAgICBtX2RhdGFiYXNlLT5yZXBvcnRDb21taXRU
cmFuc2FjdGlvblJlc3VsdCgzLCBTUUxFcnJvcjo6VU5LTk9XTl9FUlIsIDApOwogICAgICAgICAg
ICAgbV90cmFuc2FjdGlvbkVycm9yID0gU1FMRXJyb3I6OmNyZWF0ZShTUUxFcnJvcjo6VU5LTk9X
Tl9FUlIsICJ1bmtub3duIGVycm9yIG9jY3VyZWQgZHVyaW5nIHRyYW5zYWN0aW9uIHBvc3RmbGln
aHQiKTsKKyAgICAgICAgfQogICAgICAgICBoYW5kbGVUcmFuc2FjdGlvbkVycm9yKGZhbHNlKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQ4OCwxMiArNTAxLDE1IEBAIHZvaWQgU1FMVHJh
bnNhY3Rpb246OnBvc3RmbGlnaHRBbmRDb21taXQKICAgICAgICAgaWYgKG1fd3JhcHBlcikKICAg
ICAgICAgICAgIG1fd3JhcHBlci0+aGFuZGxlQ29tbWl0RmFpbGVkQWZ0ZXJQb3N0ZmxpZ2h0KHRo
aXMpOwogICAgICAgICBtX3N1Y2Nlc3NDYWxsYmFja1dyYXBwZXIuY2xlYXIoKTsKKyAgICAgICAg
bV9kYXRhYmFzZS0+cmVwb3J0Q29tbWl0VHJhbnNhY3Rpb25SZXN1bHQoNCwgU1FMRXJyb3I6OkRB
VEFCQVNFX0VSUiwgbV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS5sYXN0RXJyb3IoKSk7CiAg
ICAgICAgIG1fdHJhbnNhY3Rpb25FcnJvciA9IFNRTEVycm9yOjpjcmVhdGUoU1FMRXJyb3I6OkRB
VEFCQVNFX0VSUiwgInVuYWJsZSB0byBjb21taXQgdHJhbnNhY3Rpb24iLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZGF0YWJhc2UtPnNxbGl0ZURhdGFi
YXNlKCkubGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCkubGFzdEVycm9y
TXNnKCkpOwogICAgICAgICBoYW5kbGVUcmFuc2FjdGlvbkVycm9yKGZhbHNlKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAorICAgIG1fZGF0YWJhc2UtPnJlcG9ydENvbW1pdFRyYW5zYWN0aW9u
UmVzdWx0KDAsIC0xLCAwKTsgLy8gT0sKKwogICAgIC8vIFZhY3V1bSB0aGUgZGF0YWJhc2UgaWYg
YW55dGhpbmcgd2FzIGRlbGV0ZWQuCiAgICAgaWYgKG1fZGF0YWJhc2UtPmhhZERlbGV0ZXMoKSkK
ICAgICAgICAgbV9kYXRhYmFzZS0+aW5jcmVtZW50YWxWYWN1dW1JZk5lZWRlZCgpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU1FMVHJhbnNhY3Rpb25TeW5jLmNwcAkocmV2aXNp
b24gMTAxMjcyKQorKysgU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TUUxUcmFuc2FjdGlvblN5bmMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUsNiArMTM1LDcgQEAgRXhjZXB0aW9uQ29kZSBTUUxU
cmFuc2FjdGlvblN5bmM6OmJlZ2luKAogewogICAgIEFTU0VSVChtX2RhdGFiYXNlLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCktPmlzQ29udGV4dFRocmVhZCgpKTsKICAgICBpZiAoIW1fZGF0YWJh
c2UtPm9wZW5lZCgpKSB7CisgICAgICAgIG1fZGF0YWJhc2UtPnJlcG9ydFN0YXJ0VHJhbnNhY3Rp
b25SZXN1bHQoMSwgU1FMRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgMCk7CiAgICAgICAgIG1fZGF0
YWJhc2UtPnNldExhc3RFcnJvck1lc3NhZ2UoImNhbm5vdCBiZWdpbiB0cmFuc2FjdGlvbiBiZWNh
dXNlIHRoZSBkYXRhYmFzZSBpcyBub3Qgb3BlbiIpOwogICAgICAgICByZXR1cm4gU1FMRXhjZXB0
aW9uOjpVTktOT1dOX0VSUjsKICAgICB9CkBAIC0xNTYsNiArMTU3LDcgQEAgRXhjZXB0aW9uQ29k
ZSBTUUxUcmFuc2FjdGlvblN5bmM6OmJlZ2luKAogICAgIC8vIENoZWNrIGlmIGJlZ2luKCkgc3Vj
Y2VlZGVkLgogICAgIGlmICghbV9zcWxpdGVUcmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKSB7CiAg
ICAgICAgIEFTU0VSVCghbV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS50cmFuc2FjdGlvbklu
UHJvZ3Jlc3MoKSk7CisgICAgICAgIG1fZGF0YWJhc2UtPnJlcG9ydFN0YXJ0VHJhbnNhY3Rpb25S
ZXN1bHQoMiwgU1FMRXhjZXB0aW9uOjpEQVRBQkFTRV9FUlIsIG1fZGF0YWJhc2UtPnNxbGl0ZURh
dGFiYXNlKCkubGFzdEVycm9yKCkpOwogICAgICAgICBtX2RhdGFiYXNlLT5zZXRMYXN0RXJyb3JN
ZXNzYWdlKCJ1bmFibGUgdG8gYmVnaW4gdHJhbnNhY3Rpb24iLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1fZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCkubGFzdEVy
cm9yKCksIG1fZGF0YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCkubGFzdEVycm9yTXNnKCkpOwogICAg
ICAgICBtX3NxbGl0ZVRyYW5zYWN0aW9uLmNsZWFyKCk7CkBAIC0xNjcsNiArMTY5LDcgQEAgRXhj
ZXB0aW9uQ29kZSBTUUxUcmFuc2FjdGlvblN5bmM6OmJlZ2luKAogICAgIC8vIHRoZSBhY3R1YWwg
dmVyc2lvbi4gSW4gc2luZ2xlLXByb2Nlc3MgYnJvd3NlcnMsIHRoaXMgaXMganVzdCBhIG1hcCBs
b29rdXAuCiAgICAgU3RyaW5nIGFjdHVhbFZlcnNpb247CiAgICAgaWYgKCFtX2RhdGFiYXNlLT5n
ZXRBY3R1YWxWZXJzaW9uRm9yVHJhbnNhY3Rpb24oYWN0dWFsVmVyc2lvbikpIHsKKyAgICAgICAg
bV9kYXRhYmFzZS0+cmVwb3J0U3RhcnRUcmFuc2FjdGlvblJlc3VsdCgzLCBTUUxFeGNlcHRpb246
OkRBVEFCQVNFX0VSUiwgbV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS5sYXN0RXJyb3IoKSk7
CiAgICAgICAgIG1fZGF0YWJhc2UtPnNldExhc3RFcnJvck1lc3NhZ2UoInVuYWJsZSB0byByZWFk
IHZlcnNpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZGF0
YWJhc2UtPnNxbGl0ZURhdGFiYXNlKCkubGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPnNxbGl0ZURh
dGFiYXNlKCkubGFzdEVycm9yTXNnKCkpOwogICAgICAgICByb2xsYmFjaygpOwpAQCAtMTc0LDYg
KzE3Nyw3IEBAIEV4Y2VwdGlvbkNvZGUgU1FMVHJhbnNhY3Rpb25TeW5jOjpiZWdpbigKICAgICB9
CiAgICAgbV9oYXNWZXJzaW9uTWlzbWF0Y2ggPSAhbV9kYXRhYmFzZS0+ZXhwZWN0ZWRWZXJzaW9u
KCkuaXNFbXB0eSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAobV9kYXRhYmFzZS0+
ZXhwZWN0ZWRWZXJzaW9uKCkgIT0gYWN0dWFsVmVyc2lvbik7CisgICAgbV9kYXRhYmFzZS0+cmVw
b3J0U3RhcnRUcmFuc2FjdGlvblJlc3VsdCgwLCAtMSwgMCk7IC8vIE9LCiAgICAgcmV0dXJuIDA7
CiB9CiAKQEAgLTE5NSw2ICsxOTksNyBAQCBFeGNlcHRpb25Db2RlIFNRTFRyYW5zYWN0aW9uU3lu
Yzo6Y29tbWl0CiB7CiAgICAgQVNTRVJUKG1fZGF0YWJhc2UtPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+aXNDb250ZXh0VGhyZWFkKCkpOwogICAgIGlmICghbV9kYXRhYmFzZS0+b3BlbmVkKCkp
IHsKKyAgICAgICAgbV9kYXRhYmFzZS0+cmVwb3J0Q29tbWl0VHJhbnNhY3Rpb25SZXN1bHQoMSwg
U1FMRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgMCk7CiAgICAgICAgIG1fZGF0YWJhc2UtPnNldExh
c3RFcnJvck1lc3NhZ2UoInVuYWJsZSB0byBjb21taXQgdHJhbnNhY3Rpb24gYmVjYXVzZSB0aGUg
ZGF0YWJhc2UgaXMgbm90IG9wZW4uIik7CiAgICAgICAgIHJldHVybiBTUUxFeGNlcHRpb246OlVO
S05PV05fRVJSOwogICAgIH0KQEAgLTIwNyw2ICsyMTIsNyBAQCBFeGNlcHRpb25Db2RlIFNRTFRy
YW5zYWN0aW9uU3luYzo6Y29tbWl0CiAKICAgICAvLyBJZiB0aGUgY29tbWl0IGZhaWxlZCwgdGhl
IHRyYW5zYWN0aW9uIHdpbGwgc3RpbGwgYmUgbWFya2VkIGFzICJpbiBwcm9ncmVzcyIKICAgICBp
ZiAobV9zcWxpdGVUcmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKSB7CisgICAgICAgIG1fZGF0YWJh
c2UtPnJlcG9ydENvbW1pdFRyYW5zYWN0aW9uUmVzdWx0KDIsIFNRTEV4Y2VwdGlvbjo6REFUQUJB
U0VfRVJSLCBtX2RhdGFiYXNlLT5zcWxpdGVEYXRhYmFzZSgpLmxhc3RFcnJvcigpKTsKICAgICAg
ICAgbV9kYXRhYmFzZS0+c2V0TGFzdEVycm9yTWVzc2FnZSgidW5hYmxlIHRvIGNvbW1pdCB0cmFu
c2FjdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9kYXRh
YmFzZS0+c3FsaXRlRGF0YWJhc2UoKS5sYXN0RXJyb3IoKSwgbV9kYXRhYmFzZS0+c3FsaXRlRGF0
YWJhc2UoKS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBTUUxFeGNlcHRpb246OkRB
VEFCQVNFX0VSUjsKQEAgLTIyMiw2ICsyMjgsNyBAQCBFeGNlcHRpb25Db2RlIFNRTFRyYW5zYWN0
aW9uU3luYzo6Y29tbWl0CiAgICAgaWYgKG1fbW9kaWZpZWREYXRhYmFzZSkKICAgICAgICAgbV90
cmFuc2FjdGlvbkNsaWVudC0+ZGlkQ29tbWl0V3JpdGVUcmFuc2FjdGlvbihkYXRhYmFzZSgpKTsK
IAorICAgIG1fZGF0YWJhc2UtPnJlcG9ydENvbW1pdFRyYW5zYWN0aW9uUmVzdWx0KDAsIC0xLCAw
KTsgLy8gT0sKICAgICByZXR1cm4gMDsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9jaHJvbWl1bS9EYXRhYmFzZU9ic2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9jaHJvbWl1bS9EYXRhYmFzZU9ic2VydmVyLmgJKHJldmlzaW9uIDEwMTI3MikK
KysrIFNvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvY2hyb21pdW0vRGF0YWJhc2VPYnNlcnZlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCwxMyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQg
ZGF0YWJhc2VPcGVuZWQoQWJzdHJhY3REYXRhYmFzZSopOwogICAgIHN0YXRpYyB2b2lkIGRhdGFi
YXNlTW9kaWZpZWQoQWJzdHJhY3REYXRhYmFzZSopOwogICAgIHN0YXRpYyB2b2lkIGRhdGFiYXNl
Q2xvc2VkKEFic3RyYWN0RGF0YWJhc2UqKTsKKworICAgIHN0YXRpYyB2b2lkIHJlcG9ydE9wZW5E
YXRhYmFzZVJlc3VsdChBYnN0cmFjdERhdGFiYXNlKiwgaW50IGNhbGxzaXRlLCBpbnQgd2ViU3Fs
RXJyb3JDb2RlLCBpbnQgc3FsaXRlRXJyb3JDb2RlKTsKKyAgICBzdGF0aWMgdm9pZCByZXBvcnRD
aGFuZ2VWZXJzaW9uUmVzdWx0KEFic3RyYWN0RGF0YWJhc2UqLCBpbnQgY2FsbHNpdGUsIGludCB3
ZWJTcWxFcnJvckNvZGUsIGludCBzcWxpdGVFcnJvckNvZGUpOworICAgIHN0YXRpYyB2b2lkIHJl
cG9ydFN0YXJ0VHJhbnNhY3Rpb25SZXN1bHQoQWJzdHJhY3REYXRhYmFzZSosIGludCBjYWxsc2l0
ZSwgaW50IHdlYlNxbEVycm9yQ29kZSwgaW50IHNxbGl0ZUVycm9yQ29kZSk7CisgICAgc3RhdGlj
IHZvaWQgcmVwb3J0Q29tbWl0VHJhbnNhY3Rpb25SZXN1bHQoQWJzdHJhY3REYXRhYmFzZSosIGlu
dCBjYWxsc2l0ZSwgaW50IHdlYlNxbEVycm9yQ29kZSwgaW50IHNxbGl0ZUVycm9yQ29kZSk7Cisg
ICAgc3RhdGljIHZvaWQgcmVwb3J0RXhlY3V0ZVN0YXRlbWVudFJlc3VsdChBYnN0cmFjdERhdGFi
YXNlKiwgaW50IGNhbGxzaXRlLCBpbnQgd2ViU3FsRXJyb3JDb2RlLCBpbnQgc3FsaXRlRXJyb3JD
b2RlKTsKKyAgICBzdGF0aWMgdm9pZCByZXBvcnRWYWN1dW1EYXRhYmFzZVJlc3VsdChBYnN0cmFj
dERhdGFiYXNlKiwgaW50IHNxbGl0ZUVycm9yQ29kZSk7CiB9OwogCiB9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gMTAxMjg0KQorKysgU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOSBAQAorMjAxMS0xMS0y
OCAgTWljaGFlbCBOb3JkbWFuICA8bWljaGFlbG5AZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hy
b21pdW1dIFdlYlNRTERhdGFiYXNlIGNvdWxkIHVzZSBzb21lIGJldHRlciBlcnJvciByZXBvcnRp
bmcuCisgICAgICAgIEluc3RydW1lbnRzIHRoZSBkYXRhYmFzZSBjbGFzc2VzIHRvIHJlcG9ydCBl
cnJvcnMgYSB0aGUgRGF0YWJhc2VPYnNlcnZlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTczMjU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViRGF0YWJhc2UuaDoKKyAgICAgICAgKiBw
dWJsaWMvV2ViRGF0YWJhc2VPYnNlcnZlci5oOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhYmFz
ZU9ic2VydmVyOjpyZXBvcnRPcGVuRGF0YWJhc2VSZXN1bHQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJEYXRhYmFzZU9ic2VydmVyOjpyZXBvcnRDaGFuZ2VWZXJzaW9uUmVzdWx0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViRGF0YWJhc2VPYnNlcnZlcjo6cmVwb3J0U3RhcnRUcmFuc2FjdGlvblJlc3Vs
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFiYXNlT2JzZXJ2ZXI6OnJlcG9ydENvbW1pdFRy
YW5zYWN0aW9uUmVzdWx0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2VPYnNlcnZlcjo6
cmVwb3J0RXhlY3V0ZVN0YXRlbWVudFJlc3VsdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFi
YXNlT2JzZXJ2ZXI6OnJlcG9ydFZhY3V1bURhdGFiYXNlUmVzdWx0KToKKyAgICAgICAgKiBzcmMv
RGF0YWJhc2VPYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU9ic2VydmVy
OjpyZXBvcnRPcGVuRGF0YWJhc2VSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VP
YnNlcnZlcjo6cmVwb3J0Q2hhbmdlVmVyc2lvblJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhYmFzZU9ic2VydmVyOjpyZXBvcnRTdGFydFRyYW5zYWN0aW9uUmVzdWx0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFiYXNlT2JzZXJ2ZXI6OnJlcG9ydENvbW1pdFRyYW5zYWN0aW9uUmVzdWx0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlT2JzZXJ2ZXI6OnJlcG9ydEV4ZWN1dGVTdGF0
ZW1lbnRSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VPYnNlcnZlcjo6cmVwb3J0
VmFjdXVtRGF0YWJhc2VSZXN1bHQpOgorICAgICAgICAqIHNyYy9XZWJEYXRhYmFzZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkRhdGFiYXNlOjppc1N5bmNEYXRhYmFzZSk6CisKIDIwMTEtMTEt
MjggIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDEyNzMuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJEYXRhYmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkRhdGFiYXNlLmgJKHJldmlzaW9uIDEwMTI3MikKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRhdGFiYXNlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ3LDYgKzQ3LDcgQEAgcHVibGljOgogICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIGRpc3Bs
YXlOYW1lKCkgY29uc3Q7CiAgICAgV0VCS0lUX0VYUE9SVCB1bnNpZ25lZCBsb25nIGVzdGltYXRl
ZFNpemUoKSBjb25zdDsKICAgICBXRUJLSVRfRVhQT1JUIFdlYlNlY3VyaXR5T3JpZ2luIHNlY3Vy
aXR5T3JpZ2luKCkgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCBib29sIGlzU3luY0RhdGFiYXNl
KCkgY29uc3Q7CiAKICAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyB2b2lkIHNldE9ic2VydmVyKFdl
YkRhdGFiYXNlT2JzZXJ2ZXIqKTsKICAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJEYXRhYmFz
ZU9ic2VydmVyKiBvYnNlcnZlcigpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViRGF0YWJhc2VPYnNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkRhdGFiYXNlT2JzZXJ2ZXIuaAkocmV2aXNpb24gMTAxMjcyKQorKysg
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGF0YWJhc2VPYnNlcnZlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOSw2ICszOSwxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRh
dGFiYXNlT3BlbmVkKGNvbnN0IFdlYkRhdGFiYXNlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
YXRhYmFzZU1vZGlmaWVkKGNvbnN0IFdlYkRhdGFiYXNlJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkYXRhYmFzZUNsb3NlZChjb25zdCBXZWJEYXRhYmFzZSYpID0gMDsKKworICAgIHZpcnR1YWwg
dm9pZCByZXBvcnRPcGVuRGF0YWJhc2VSZXN1bHQoY29uc3QgV2ViRGF0YWJhc2UmLCBpbnQgZXJy
b3JTaXRlLCBpbnQgd2ViU3FsRXJyb3JDb2RlLCBpbnQgc3FsaXRlRXJyb3JDb2RlKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgcmVwb3J0Q2hhbmdlVmVyc2lvblJlc3VsdChjb25zdCBXZWJEYXRhYmFz
ZSYsIGludCBlcnJvclNpdGUsIGludCB3ZWJTcWxFcnJvckNvZGUsIGludCBzcWxpdGVFcnJvckNv
ZGUpIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZXBvcnRTdGFydFRyYW5zYWN0aW9uUmVzdWx0KGNv
bnN0IFdlYkRhdGFiYXNlJiwgaW50IGVycm9yU2l0ZSwgaW50IHdlYlNxbEVycm9yQ29kZSwgaW50
IHNxbGl0ZUVycm9yQ29kZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIHJlcG9ydENvbW1pdFRyYW5z
YWN0aW9uUmVzdWx0KGNvbnN0IFdlYkRhdGFiYXNlJiwgaW50IGVycm9yU2l0ZSwgaW50IHdlYlNx
bEVycm9yQ29kZSwgaW50IHNxbGl0ZUVycm9yQ29kZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIHJl
cG9ydEV4ZWN1dGVTdGF0ZW1lbnRSZXN1bHQoY29uc3QgV2ViRGF0YWJhc2UmLCBpbnQgZXJyb3JT
aXRlLCBpbnQgd2ViU3FsRXJyb3JDb2RlLCBpbnQgc3FsaXRlRXJyb3JDb2RlKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgcmVwb3J0VmFjdXVtRGF0YWJhc2VSZXN1bHQoY29uc3QgV2ViRGF0YWJhc2Um
LCBpbnQgc3FsaXRlRXJyb3JDb2RlKSB7IH0KKwogcHJvdGVjdGVkOgogICAgIH5XZWJEYXRhYmFz
ZU9ic2VydmVyKCkge30KIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9EYXRh
YmFzZU9ic2VydmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9EYXRhYmFzZU9ic2VydmVyLmNwcAkocmV2aXNpb24gMTAxMjcyKQorKysgU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvRGF0YWJhc2VPYnNlcnZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5
Nyw2ICsxOTcsMzYgQEAgdm9pZCBEYXRhYmFzZU9ic2VydmVyOjpkYXRhYmFzZUNsb3NlZChBYgog
ICAgIFdlYkRhdGFiYXNlOjpvYnNlcnZlcigpLT5kYXRhYmFzZUNsb3NlZChXZWJEYXRhYmFzZShk
YXRhYmFzZSkpOwogfQogCit2b2lkIERhdGFiYXNlT2JzZXJ2ZXI6OnJlcG9ydE9wZW5EYXRhYmFz
ZVJlc3VsdChBYnN0cmFjdERhdGFiYXNlKiBkYXRhYmFzZSwgaW50IGVycm9yU2l0ZSwgaW50IHdl
YlNxbEVycm9yQ29kZSwgaW50IHNxbGl0ZUVycm9yQ29kZSkKK3sKKyAgICBXZWJEYXRhYmFzZTo6
b2JzZXJ2ZXIoKS0+cmVwb3J0T3BlbkRhdGFiYXNlUmVzdWx0KFdlYkRhdGFiYXNlKGRhdGFiYXNl
KSwgZXJyb3JTaXRlLCB3ZWJTcWxFcnJvckNvZGUsIHNxbGl0ZUVycm9yQ29kZSk7Cit9CisKK3Zv
aWQgRGF0YWJhc2VPYnNlcnZlcjo6cmVwb3J0Q2hhbmdlVmVyc2lvblJlc3VsdChBYnN0cmFjdERh
dGFiYXNlKiBkYXRhYmFzZSwgaW50IGVycm9yU2l0ZSwgaW50IHdlYlNxbEVycm9yQ29kZSwgaW50
IHNxbGl0ZUVycm9yQ29kZSkKK3sKKyAgICBXZWJEYXRhYmFzZTo6b2JzZXJ2ZXIoKS0+cmVwb3J0
Q2hhbmdlVmVyc2lvblJlc3VsdChXZWJEYXRhYmFzZShkYXRhYmFzZSksIGVycm9yU2l0ZSwgd2Vi
U3FsRXJyb3JDb2RlLCBzcWxpdGVFcnJvckNvZGUpOworfQorCit2b2lkIERhdGFiYXNlT2JzZXJ2
ZXI6OnJlcG9ydFN0YXJ0VHJhbnNhY3Rpb25SZXN1bHQoQWJzdHJhY3REYXRhYmFzZSogZGF0YWJh
c2UsIGludCBlcnJvclNpdGUsIGludCB3ZWJTcWxFcnJvckNvZGUsIGludCBzcWxpdGVFcnJvckNv
ZGUpCit7CisgICAgV2ViRGF0YWJhc2U6Om9ic2VydmVyKCktPnJlcG9ydFN0YXJ0VHJhbnNhY3Rp
b25SZXN1bHQoV2ViRGF0YWJhc2UoZGF0YWJhc2UpLCBlcnJvclNpdGUsIHdlYlNxbEVycm9yQ29k
ZSwgc3FsaXRlRXJyb3JDb2RlKTsKK30KKwordm9pZCBEYXRhYmFzZU9ic2VydmVyOjpyZXBvcnRD
b21taXRUcmFuc2FjdGlvblJlc3VsdChBYnN0cmFjdERhdGFiYXNlKiBkYXRhYmFzZSwgaW50IGVy
cm9yU2l0ZSwgaW50IHdlYlNxbEVycm9yQ29kZSwgaW50IHNxbGl0ZUVycm9yQ29kZSkKK3sKKyAg
ICBXZWJEYXRhYmFzZTo6b2JzZXJ2ZXIoKS0+cmVwb3J0Q29tbWl0VHJhbnNhY3Rpb25SZXN1bHQo
V2ViRGF0YWJhc2UoZGF0YWJhc2UpLCBlcnJvclNpdGUsIHdlYlNxbEVycm9yQ29kZSwgc3FsaXRl
RXJyb3JDb2RlKTsKK30KKwordm9pZCBEYXRhYmFzZU9ic2VydmVyOjpyZXBvcnRFeGVjdXRlU3Rh
dGVtZW50UmVzdWx0KEFic3RyYWN0RGF0YWJhc2UqIGRhdGFiYXNlLCBpbnQgZXJyb3JTaXRlLCBp
bnQgd2ViU3FsRXJyb3JDb2RlLCBpbnQgc3FsaXRlRXJyb3JDb2RlKQoreworICAgIFdlYkRhdGFi
YXNlOjpvYnNlcnZlcigpLT5yZXBvcnRFeGVjdXRlU3RhdGVtZW50UmVzdWx0KFdlYkRhdGFiYXNl
KGRhdGFiYXNlKSwgZXJyb3JTaXRlLCB3ZWJTcWxFcnJvckNvZGUsIHNxbGl0ZUVycm9yQ29kZSk7
Cit9CisKK3ZvaWQgRGF0YWJhc2VPYnNlcnZlcjo6cmVwb3J0VmFjdXVtRGF0YWJhc2VSZXN1bHQo
QWJzdHJhY3REYXRhYmFzZSogZGF0YWJhc2UsIGludCBzcWxpdGVFcnJvckNvZGUpCit7CisgICAg
V2ViRGF0YWJhc2U6Om9ic2VydmVyKCktPnJlcG9ydFZhY3V1bURhdGFiYXNlUmVzdWx0KFdlYkRh
dGFiYXNlKGRhdGFiYXNlKSwgc3FsaXRlRXJyb3JDb2RlKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNRTF9EQVRBQkFTRSkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEYXRhYmFzZS5jcHAJKHJldmlzaW9uIDEwMTI3MikKKysr
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODIsNiArODIsMTIgQEAgV2ViU2VjdXJpdHlPcmlnaW4gV2ViRGF0YWJhc2U6OnNlY3Vy
aXR5TwogICAgIHJldHVybiBXZWJTZWN1cml0eU9yaWdpbihtX2RhdGFiYXNlLT5zZWN1cml0eU9y
aWdpbigpKTsKIH0KIAorYm9vbCBXZWJEYXRhYmFzZTo6aXNTeW5jRGF0YWJhc2UoKSBjb25zdAor
eworICAgIEFTU0VSVChtX2RhdGFiYXNlKTsKKyAgICByZXR1cm4gbV9kYXRhYmFzZS0+aXNTeW5j
RGF0YWJhc2UoKTsKK30KKwogdm9pZCBXZWJEYXRhYmFzZTo6c2V0T2JzZXJ2ZXIoV2ViRGF0YWJh
c2VPYnNlcnZlciogb2JzZXJ2ZXIpCiB7CiAgICAgZGF0YWJhc2VPYnNlcnZlciA9IG9ic2VydmVy
Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>