<?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>143190</bug_id>
          
          <creation_ts>2015-03-28 23:31:17 -0700</creation_ts>
          <short_desc>[iOS] When Web Audio is interrupted by a phone call, it cannot be restarted.</short_desc>
          <delta_ts>2015-04-27 14:23:57 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1080994</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-03-28 23:31:17 -0700</bug_when>
    <thetext>[iOS] When Web Audio is interrupted by a phone call, it cannot be restarted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081006</commentid>
    <comment_count>1</comment_count>
      <attachid>249682</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-03-29 08:03:17 -0700</bug_when>
    <thetext>Created attachment 249682
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081007</commentid>
    <comment_count>2</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-03-29 08:08:28 -0700</bug_when>
    <thetext>rdar://problem/16955315</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081008</commentid>
    <comment_count>3</comment_count>
      <attachid>249683</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-03-29 08:13:23 -0700</bug_when>
    <thetext>Created attachment 249683
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081009</commentid>
    <comment_count>4</comment_count>
      <attachid>249684</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-03-29 08:32:38 -0700</bug_when>
    <thetext>Created attachment 249684
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081018</commentid>
    <comment_count>5</comment_count>
      <attachid>249686</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-03-29 11:55:24 -0700</bug_when>
    <thetext>Created attachment 249686
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081044</commentid>
    <comment_count>6</comment_count>
      <attachid>249698</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-03-29 13:55:21 -0700</bug_when>
    <thetext>Created attachment 249698
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081058</commentid>
    <comment_count>7</comment_count>
      <attachid>249698</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-03-29 16:34:42 -0700</bug_when>
    <thetext>Comment on attachment 249698
Patch

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

&gt; Source/WebCore/Modules/webaudio/AudioContext.h:348
&gt; +    bool m_isDeletionScheduled = { false };
&gt; +    bool m_isStopScheduled = { false };
&gt; +    bool m_isInitialized = { false };
&gt; +    bool m_isAudioThreadFinished = { false };
&gt; +    bool m_automaticPullNodesNeedUpdating = { false };
&gt; +    bool m_isOfflineContext = { false };

I don’t think you need the &quot;=&quot;; in fact I didn’t even know you could include them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081065</commentid>
    <comment_count>8</comment_count>
      <attachid>249698</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-03-29 17:07:39 -0700</bug_when>
    <thetext>Comment on attachment 249698
Patch

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

&gt;&gt; Source/WebCore/Modules/webaudio/AudioContext.h:348
&gt;&gt; +    bool m_isOfflineContext = { false };
&gt; 
&gt; I don’t think you need the &quot;=&quot;; in fact I didn’t even know you could include them.

After a little sleuthing, it looks like C++11 both added the `type name { value }` syntax, and also loosened the requirements for the `type name = value` syntax, allowing it for non-const, non-static members.  Still, I&apos;ll switch these all to the former syntax.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081067</commentid>
    <comment_count>9</comment_count>
      <attachid>249704</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2015-03-29 17:13:07 -0700</bug_when>
    <thetext>Created attachment 249704
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081178</commentid>
    <comment_count>10</comment_count>
      <attachid>249704</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-30 09:15:48 -0700</bug_when>
    <thetext>Comment on attachment 249704
Patch for landing

Clearing flags on attachment: 249704

Committed r182141: &lt;http://trac.webkit.org/changeset/182141&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249682</attachid>
            <date>2015-03-29 08:03:17 -0700</date>
            <delta_ts>2015-03-29 08:13:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143190-20150329080236.patch</filename>
            <type>text/plain</type>
            <size>63967</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyMDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGY4MDEzZmVhNWNkMGEy
ZTIwODRkZjA0MWFiNWM4NzFlOWQ2YWM1Yi4uYTk4ZTA2M2VlYjkxNWZmYTY3ZmZlMDUyYjQ2NDA5
NDIyOGZmYmUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMyBAQAorMjAxNS0wMy0yOCAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBXaGVuIFdlYiBB
dWRpbyBpcyBpbnRlcnJ1cHRlZCBieSBhIHBob25lIGNhbGwsIGl0IGNhbm5vdCBiZSByZXN0YXJ0
ZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMx
OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0
czogd2ViYXVkaW8vYXVkaW9jb250ZXh0LXN0YXRlLWludGVycnVwdGVkLmh0bWwKKyAgICAgICAg
ICAgICAgIHdlYmF1ZGlvL2F1ZGlvY29udGV4dC1zdGF0ZS5odG1sCisKKyAgICAgICAgSW1wbGVt
ZW50IHRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhbmQgcHJvcGVydGllcyBmcm9tIHRoZSBXZWIgQXVk
aW8gc3BlYzoKKyAgICAgICAgY2xvc2UoKSwgc3VzcGVuZCgpLCByZXN1bWUoKSwgb25zdGF0ZWNo
YW5nZS4KKworICAgICAgICBBdWRpb0NvbnRleHQgd2lsbCB0YWtlIG1vcmUgcmVzcG9uc2liaWxp
dHkgZm9yIHRyYWNraW5nIHN0YXRlIGFuZCBpbnRlcnJ1cHRpb25zIChhbmQKKyAgICAgICAgQXVk
aW9EZXN0aW5hdGlvbiB3aWxsIGdpdmUgdXAgdGhhdCByZXNwb25zaWJpbGl0eSkuIFRoaXMgbWVh
bnMgQXVkaW9Db250ZXh0IG11c3QgYmUgYQorICAgICAgICBNZWRpYVNlc3Npb25DbGllbnQsIGFu
ZCBvd24gaXRzIG93biBNZWRpYVNlc3Npb24uIEluIHJldHVybiwgQXVkaW9EZXN0aW5hdGlvbklP
UyBhbmQgCisgICAgICAgIEF1ZGlvRGVzdGluYXRpb25NYWMgcmVsaW5xdWlzaCBib3RoLgorCisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9Db250ZXh0OjpBdWRpb0NvbnRleHQpOiBTZXQgZGVmYXVsdCB2YWx1ZXMgaW4g
aGVhZGVyLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0Ojp1bmluaXRpYWxpemUpOiBD
YWxsIHNldFN0YXRlKCkgaW5zdGVhZCBvZiBzZXR0aW5nIG1fc3RhdGUuCisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0NvbnRleHQ6OmFkZFJlYWN0aW9uKTogQWRkZWQuIEFwcGVuZCB0aGUgY2FsbGJh
Y2sgdG8gdGhlIGFwcHJvcHJpYXRlIHZlY3RvciBmb3IgdGhlIHN0YXRlLgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9Db250ZXh0OjpzZXRTdGF0ZSk6IEFkZGVkLiBGaXJlIGV2ZW50cyBhbmQgcmVz
b2x2ZSB0aGUgYXBwcm9wcmlhdGUgcmVhY3Rpb24gY2FsbGJhY2tzIGZvciB0aGUgbmV3IHN0YXRl
LgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpzdGF0ZSk6IFJldHVybiBhIHN0cmlu
ZyByZXByZXNlbnRpbmcgdGhlIGNvbnRleHQncyBzdGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvQ29udGV4dDo6c3RvcCk6IENsb3NlIHRoZSBldmVudCBxdWV1ZS4KKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvQ29udGV4dDo6c3RhcnRSZW5kZXJpbmcpOiBDYWxsIHNldFN0YXRlKCkuCisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmZpcmVDb21wbGV0aW9uRXZlbnQpOiBDYWxsIHNl
dFN0YXRlKCkuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OnN1c3BlbmRDb250ZXh0
KTogQWRkZWQuIEFkZCByZWFjdGlvbiBjYWxsYmFjayBhbmQgY2FsbCBzdXNwZW5kKCkgb24gdGhl
IGRlc3RpbmF0aW9uIG5vZGUuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OnJlc3Vt
ZUNvbnRleHQpOiBBZGRlZC4gQWRkIHJlYWN0aW9uIGNhbGxiYWNrIGFuZCBjYWxsIHJlc3VtZSgp
IG9uIHRoZSBkZXN0aW5hdGlvbiBub2RlLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0
OjpjbG9zZUNvbnRleHQpOiBBZGRlZC4gQWRkIHJlYWN0aW9uIGNhbGxiYWNrIGFuZCBjYWxsIGNs
b3NlKCkgb24gdGhlIGRlc3RpbmF0aW9uIG5vZGUuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Nv
bnRleHQ6OnN1c3BlbmRQbGF5YmFjayk6IEFkZGVkLiBTdXNwZW5kIHBsYXliYWNrIGFuZCBzZXQg
c3RhdGUgdG8gaW50ZXJydXB0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6Om1h
eVJlc3VtZVBsYXliYWNrKTogQWRkZWQuIENvbmRpdGlvbmFsbHkgcmVzdW1lIHBsYXliYWNrLgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTQXVkaW9Db250ZXh0OjpzdXNwZW5kKTogQWRkZWQuIENyZWF0ZSBhbmQgcmV0
dXJuIGEgbmV3IFByb21pc2Ugb2JqZWN0LgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb0NvbnRl
eHQ6OnJlc3VtZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb0NvbnRleHQ6OmNs
b3NlKTogRGl0dG8uCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRs
OiBBZGQgbmV3IG1ldGhvZHMgYW5kIHByb3BlcnRpZXMuCisKKyAgICAgICAgRXh0ZW5zaXZlIG9y
Z2FuaXphdGlvbmFsIGNoYW5nZXMgd2VyZSBtYWRlIHRvIEF1ZGlvQ29udGV4dC5oIHRvIGdyb3Vw
IGluc3RhbmNlCisgICAgICAgIHZhcmlhYmxlcyB0b2dldGhlciBhbmQgYWRkIEMrKzExIGluaXRp
YWxpemVycyBpbiB0aGVpciBkZWNsYXJhdGlvbnM6CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjptZWRp
YVR5cGUpOiBNb3ZlZCBmcm9tIEF1ZGlvRGVzdGluYXRpb25Ob2RlLgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9Db250ZXh0OjpwcmVzZW50YXRpb25UeXBlKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0NvbnRleHQ6OmNhblJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6ZGlkUmVjZWl2ZVJlbW90ZUNvbnRy
b2xDb21tYW5kKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6Om92ZXJy
aWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rpb24pOiBEaXR0by4KKyAgICAgICAgCisgICAg
ICAgIE90aGVyIGNoYW5nZXMgdG8gc3VwcG9ydCB0aGUgbmV3IEF1ZGlvQ29udGV4dCBtZXRob2Rz
OgorCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnJlc3VtZSk6IEFkZCBlbXB0
eSBkZWZhdWx0IHZpcnR1YWwgbWV0aG9kLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5h
dGlvbk5vZGU6OnN1c3BlbmQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGlu
YXRpb25Ob2RlOjpjbG9zZSk6IERpdHRvLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVm
YXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRB
dWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVzdW1lKTogQWRkZWQuIFBhc3MgdG8gQXVkaW9EZXN0aW5h
dGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3Vz
cGVuZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25O
b2RlOjpjbG9zZSk6IERpdHRvLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1
ZGlvRGVzdGluYXRpb25Ob2RlLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Qcm9taXNl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFdyYXBwZXI6OnJlc29sdmUpOiBBZGQgYW4g
b3ZlcmxvYWQgZm9yIGEgbnVsbHB0ciByZXNvbHZlIHZhbHVlLgorICAgICAgICAqIGRvbS9FdmVu
dE5hbWVzLmg6IEFkZGVkICdzdGF0ZWNoYW5nZScuCisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2s6OlRhc2spOiBBZGQgYSBjb25zdHJ1Y3RvciB3aGljaCB0YWtlcyBhIHZvaWQoKSBjYWxs
YmFjay4KKworICAgICAgICBNb2RpZnkgTWVkaWFTZXNzaW9uLCBBdWRpb1Nlc3Npb24sIGFuZCBN
ZWRpYVNlc3Npb25NYW5hZ2VyIHRvIHN1cHBvcnQgdGhlIG5ldworICAgICAgICBpbnRlcnJ1cHRp
b24gYmVoYXZpb3IuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c3VzcGVuZFBsYXliYWNrKTogUmVuYW1l
ZCBmcm9tIHBhdXNlUGxheWJhY2soKS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6Om1heVJlc3VtZVBsYXliYWNrKTogUmVuYW1lZCBmcm9tIHJlc3VtZVBsYXliYWNrKCkuCisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vQXVkaW9TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6dHJ5
VG9TZXRBY3RpdmUpOiBSZW5hbWVkIGZyb20gc2V0QWN0aXZlLiBSZXR1cm4gdHJ1ZSBieSBkZWZh
dWx0LgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpzZXRBY3RpdmUpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNl
c3Npb246OmJlZ2luSW50ZXJydXB0aW9uKTogcGF1c2VQbGF5YmFjaygpIHdhcyByZW5hbWVkIHRv
IHN1c3BlbmRQbGF5YmFjaygpLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uOjplbmRJ
bnRlcnJ1cHRpb24pOiBBbHdheXMgbm90aWZ5IHRoZSBjbGllbnQsIHRlbGxpbmcgaXQgd2hldGhl
ciB0byByZXN1bWUuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246OmNsaWVudFdpbGxC
ZWdpblBsYXliYWNrKTogQmFpbCBlYXJseSBpZiByZWVudHJhbnQuICBDaGVjayB0aGUgKG5ldykg
CisgICAgICAgICAgICByZXR1cm4gdmFsdWUgb2Ygc2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKCkg
YW5kIHJlbWVtYmVyIHRvIHJlc3VtZSBvbmNlIHRoZSBpbnRlcnJ1cHRpb24gZW5kcy4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6Y2xpZW50V2lsbFBhdXNlUGxheWJhY2spOiBCYWls
IGVhcmx5IGlmIHJlZW50cmFudC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6cGF1
c2VTZXNzaW9uKTogcGF1c2VQbGF5YmFjaygpIHdhcyByZW5hbWVkIHRvIHN1c3BlbmRQbGF5YmFj
aygpLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5oOgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKTogUmV0dXJu
IGZhbHNlIGlmIG5vdCBhbGxvd2VkIHRvIGJyZWFrIGludGVycnVwdGlvbiBvciAKKyAgICAgICAg
ICAgIGlmIGFjdGl2YXRpbmcgdGhlIGF1ZGlvIHNlc3Npb24gZmFpbGVkLiBPdGhlcndpc2UsIGVu
ZCB0aGUgaW50ZXJydXB0aW9uLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lv
bk1hbmFnZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlv
bklPUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uSU9TOjpBdWRpb0Rl
c3RpbmF0aW9uSU9TKTogbV9tZWRpYVNlc3Npb24gd2FzIHJlbW92ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0Rlc3RpbmF0aW9uSU9TOjpzdGFydCk6IERpdHRvLgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmg6CisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vz
c2lvbjo6dHJ5VG9TZXRBY3RpdmUpOiBSZW5hbWVkIGZyb20gc2V0QWN0aXZlLiBSZXR1cm4gZmFs
c2UgaWYgdGhlIEFWQXVkaW9TZXNzaW9uIGNvdWxkIG5vdCBiZSBhY3RpdmF0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnNldEFjdGl2ZSk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnNlc3Npb25XaWxsQmVnaW5QbGF5YmFjayk6
IERvIG5vdCB1cGRhdGUgdGhlIG5vdyBwbGF5aW5nIGluZm8gaWYgc2Vzc2lvbiBwbGF5YmFjayB3
YXMgYmxvY2tlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlv
bk1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uTWFjOjpBdWRpb0Rl
c3RpbmF0aW9uTWFjKTogbV9tZWRpYVNlc3Npb24gd2FzIHJlbW92ZWQuCisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
U2Vzc2lvbjo6dHJ5VG9TZXRBY3RpdmUpOiBSZW5hbWVkIGZyb20gc2V0QWN0aXZlKCkuIFJldHVy
biB0cnVlIGJ5IGRlZmF1bHQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnNldEFj
dGl2ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL01lZGlhU2Vzc2lv
bk1hbmFnZXJNYWMuY3BwOgorICAgICAgICAoTWVkaWFTZXNzaW9uTWFuYWdlcjo6dXBkYXRlU2Vz
c2lvblN0YXRlKTogTm8gbG9uZ2VyIGF0dGVtcHQgdG8gYWN0aXZhdGUgdGhlIHNlc3Npb24sIGFz
IHRoaXMgaXMgZG9uZQorICAgICAgICAgICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldp
bGxCZWdpblBsYXliYWNrKCkuCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRNZWRpYVNlc3Npb25SZXN0cmljdGlvbnMpOiBB
ZGQgIkludGVycnVwdGVkUGxheWJhY2tOb3RQZXJtaXR0ZWQiLgorCiAyMDE1LTAzLTI3ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQg
d2lsbCBmaXJlICdzZWVrZWQnIGJlZm9yZSBzZWVrIGNvbXBsZXRlcywgbGVhZGluZyB0byBjdXJy
ZW50VGltZSBkaXNjb250aW51aXRpZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggYzgyMTFlM2FiZWYxMDQwZmYzNmMxNDU3YzNi
ZGYxMjFmYmNiMjhjNi4uZTliMGJiODk1NmJmYmNmYzdlMTdiMTE5ZTM2Yjk1YTI4ZDhhYWY4MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNw
cApAQCAtNDQsOSArNDQsMTEgQEAKICNpbmNsdWRlICJEZWxheU5vZGUuaCIKICNpbmNsdWRlICJE
b2N1bWVudC5oIgogI2luY2x1ZGUgIkR5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaCIKKyNpbmNsdWRl
ICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZG
VEZyYW1lLmgiCiAjaW5jbHVkZSAiR2Fpbk5vZGUuaCIKKyNpbmNsdWRlICJHZW5lcmljRXZlbnRR
dWV1ZS5oIgogI2luY2x1ZGUgIkhSVEZEYXRhYmFzZUxvYWRlci5oIgogI2luY2x1ZGUgIkhSVEZQ
YW5uZXIuaCIKICNpbmNsdWRlICJPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaCIKQEAgLTU1
LDEwICs1NywxMSBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYW5uZXJOb2RlLmgi
CiAjaW5jbHVkZSAiUGVyaW9kaWNXYXZlLmgiCi0jaW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENh
bGxTdGFjay5oPgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3Jp
cHRQcm9jZXNzb3JOb2RlLmgiCiAjaW5jbHVkZSAiV2F2ZVNoYXBlck5vZGUuaCIKKyNpbmNsdWRl
IDxpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogI2luY2x1ZGUgIk1lZGlhU3RyZWFt
LmgiCkBAIC0xMjYsMTkgKzEyOSwxMSBAQCBSZWZQdHI8QXVkaW9Db250ZXh0PiBBdWRpb0NvbnRl
eHQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogLy8gQ29u
c3RydWN0b3IgZm9yIHJlbmRlcmluZyB0byB0aGUgYXVkaW8gaGFyZHdhcmUuCiBBdWRpb0NvbnRl
eHQ6OkF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBBY3RpdmVET01PYmpl
Y3QoJmRvY3VtZW50KQotICAgICwgbV9pc1N0b3BTY2hlZHVsZWQoZmFsc2UpCi0gICAgLCBtX2lz
SW5pdGlhbGl6ZWQoZmFsc2UpCi0gICAgLCBtX2lzQXVkaW9UaHJlYWRGaW5pc2hlZChmYWxzZSkK
LSAgICAsIG1fZGVzdGluYXRpb25Ob2RlKDApCi0gICAgLCBtX2lzRGVsZXRpb25TY2hlZHVsZWQo
ZmFsc2UpCi0gICAgLCBtX2F1dG9tYXRpY1B1bGxOb2Rlc05lZWRVcGRhdGluZyhmYWxzZSkKLSAg
ICAsIG1fY29ubmVjdGlvbkNvdW50KDApCi0gICAgLCBtX2F1ZGlvVGhyZWFkKDApCisjaWYgVVNF
KEFVRElPX1NFU1NJT04pCisgICAgLCBtX21lZGlhU2Vzc2lvbihNZWRpYVNlc3Npb246OmNyZWF0
ZSgqdGhpcykpCisjZW5kaWYKKyAgICAsIG1fZXZlbnRRdWV1ZShzdGQ6Om1ha2VfdW5pcXVlPEdl
bmVyaWNFdmVudFF1ZXVlPigqdGhpcykpCiAgICAgLCBtX2dyYXBoT3duZXJUaHJlYWQoVW5kZWZp
bmVkVGhyZWFkSWRlbnRpZmllcikKLSAgICAsIG1faXNPZmZsaW5lQ29udGV4dChmYWxzZSkKLSAg
ICAsIG1fYWN0aXZlU291cmNlQ291bnQoMCkKLSAgICAsIG1fcmVzdHJpY3Rpb25zKE5vUmVzdHJp
Y3Rpb25zKQotICAgICwgbV9zdGF0ZShTdGF0ZTo6U3VzcGVuZGVkKQogewogICAgIGNvbnN0cnVj
dENvbW1vbigpOwogCkBAIC0xNTEsMTggKzE0NiwxMiBAQCBBdWRpb0NvbnRleHQ6OkF1ZGlvQ29u
dGV4dChEb2N1bWVudCYgZG9jdW1lbnQpCiAvLyBDb25zdHJ1Y3RvciBmb3Igb2ZmbGluZSAobm9u
LXJlYWx0aW1lKSByZW5kZXJpbmcuCiBBdWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4dChEb2N1bWVu
dCYgZG9jdW1lbnQsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZy
YW1lcywgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEFjdGl2ZURPTU9iamVjdCgmZG9jdW1lbnQp
Ci0gICAgLCBtX2lzU3RvcFNjaGVkdWxlZChmYWxzZSkKLSAgICAsIG1faXNJbml0aWFsaXplZChm
YWxzZSkKLSAgICAsIG1faXNBdWRpb1RocmVhZEZpbmlzaGVkKGZhbHNlKQotICAgICwgbV9kZXN0
aW5hdGlvbk5vZGUoMCkKLSAgICAsIG1fYXV0b21hdGljUHVsbE5vZGVzTmVlZFVwZGF0aW5nKGZh
bHNlKQotICAgICwgbV9jb25uZWN0aW9uQ291bnQoMCkKLSAgICAsIG1fYXVkaW9UaHJlYWQoMCkK
LSAgICAsIG1fZ3JhcGhPd25lclRocmVhZChVbmRlZmluZWRUaHJlYWRJZGVudGlmaWVyKQogICAg
ICwgbV9pc09mZmxpbmVDb250ZXh0KHRydWUpCi0gICAgLCBtX2FjdGl2ZVNvdXJjZUNvdW50KDAp
Ci0gICAgLCBtX3Jlc3RyaWN0aW9ucyhOb1Jlc3RyaWN0aW9ucykKLSAgICAsIG1fc3RhdGUoU3Rh
dGU6OlN1c3BlbmRlZCkKKyNpZiBVU0UoQVVESU9fU0VTU0lPTikKKyAgICAsIG1fbWVkaWFTZXNz
aW9uKE1lZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0aGlzKSkKKyNlbmRpZgorICAgICwgbV9ldmVudFF1
ZXVlKHN0ZDo6bWFrZV91bmlxdWU8R2VuZXJpY0V2ZW50UXVldWU+KCp0aGlzKSkKKyAgICAsIG1f
Z3JhcGhPd25lclRocmVhZChVbmRlZmluZWRUaHJlYWRJZGVudGlmaWVyKQogewogICAgIGNvbnN0
cnVjdENvbW1vbigpOwogCkBAIC0yNzcsNyArMjY2LDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OnVu
aW5pdGlhbGl6ZSgpCiAgICAgICAgIC0tc19oYXJkd2FyZUNvbnRleHRDb3VudDsKIAogICAgICAg
ICAvLyBPZmZsaW5lIGNvbnRleHRzIG1vdmUgdG8gJ0Nsb3NlZCcgc3RhdGUgd2hlbiBkaXNwYXRj
aGluZyB0aGUgY29tcGxldGlvbiBldmVudC4KLSAgICAgICAgbV9zdGF0ZSA9IFN0YXRlOjpDbG9z
ZWQ7CisgICAgICAgIHNldFN0YXRlKFN0YXRlOjpDbG9zZWQpOwogICAgIH0KIAogICAgIC8vIEdl
dCByaWQgb2YgdGhlIHNvdXJjZXMgd2hpY2ggbWF5IHN0aWxsIGJlIHBsYXlpbmcuCkBAIC0yOTEs
NiArMjgwLDU1IEBAIGJvb2wgQXVkaW9Db250ZXh0Ojppc0luaXRpYWxpemVkKCkgY29uc3QKICAg
ICByZXR1cm4gbV9pc0luaXRpYWxpemVkOwogfQogCit2b2lkIEF1ZGlvQ29udGV4dDo6YWRkUmVh
Y3Rpb24oU3RhdGUgc3RhdGUsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiByZWFjdGlvbikKK3sKKyAg
ICBzaXplX3Qgc3RhdGVJbmRleCA9IHN0YXRpY19jYXN0PHNpemVfdD4oc3RhdGUpOworICAgIGlm
IChzdGF0ZUluZGV4ID49IG1fc3RhdGVSZWFjdGlvbnMuc2l6ZSgpKQorICAgICAgICBtX3N0YXRl
UmVhY3Rpb25zLnJlc2l6ZShzdGF0ZUluZGV4ICsgMSk7CisKKyAgICBtX3N0YXRlUmVhY3Rpb25z
W3N0YXRlSW5kZXhdLmFwcGVuZChyZWFjdGlvbik7Cit9CisKK3ZvaWQgQXVkaW9Db250ZXh0Ojpz
ZXRTdGF0ZShTdGF0ZSBzdGF0ZSkKK3sKKyAgICBpZiAobV9zdGF0ZSA9PSBzdGF0ZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9zdGF0ZSA9IHN0YXRlOworICAgIG1fZXZlbnRRdWV1ZS0+ZW5x
dWV1ZUV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnN0YXRlY2hhbmdlRXZlbnQsIHRy
dWUsIGZhbHNlKSk7CisKKyAgICBzaXplX3Qgc3RhdGVJbmRleCA9IHN0YXRpY19jYXN0PHNpemVf
dD4oc3RhdGUpOworICAgIGlmIChzdGF0ZUluZGV4ID49IG1fc3RhdGVSZWFjdGlvbnMuc2l6ZSgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8c3RkOjpmdW5jdGlvbjx2b2lkKCk+PiBy
ZWFjdGlvbnM7CisgICAgbV9zdGF0ZVJlYWN0aW9uc1tzdGF0ZUluZGV4XS5zd2FwKHJlYWN0aW9u
cyk7CisKKyAgICBmb3IgKGF1dG8mIHJlYWN0aW9uIDogcmVhY3Rpb25zKQorICAgICAgICByZWFj
dGlvbigpOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIEF1ZGlvQ29udGV4dDo6c3RhdGUoKSBj
b25zdAoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHN1c3BlbmRl
ZCgic3VzcGVuZGVkIik7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4g
cnVubmluZygicnVubmluZyIpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJp
bmc+IGludGVycnVwdGVkKCJpbnRlcnJ1cHRlZCIpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxBdG9taWNTdHJpbmc+IGNsb3NlZCgiY2xvc2VkIik7CisKKyAgICBzd2l0Y2ggKG1fc3RhdGUp
IHsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBjYXNl
IFN0YXRlOjpTdXNwZW5kZWQ6CisgICAgICAgIHJldHVybiBzdXNwZW5kZWQ7CisgICAgY2FzZSBT
dGF0ZTo6UnVubmluZzoKKyAgICAgICAgcmV0dXJuIHJ1bm5pbmc7CisgICAgY2FzZSBTdGF0ZTo6
SW50ZXJydXB0ZWQ6CisgICAgICAgIHJldHVybiBpbnRlcnJ1cHRlZDsKKyAgICBjYXNlIFN0YXRl
OjpDbG9zZWQ6CisgICAgICAgIHJldHVybiBjbG9zZWQ7CisgICAgfQorfQorCiB2b2lkIEF1ZGlv
Q29udGV4dDo6c3RvcERpc3BhdGNoKHZvaWQqIHVzZXJEYXRhKQogewogICAgIEF1ZGlvQ29udGV4
dCogY29udGV4dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXVkaW9Db250ZXh0Kj4odXNlckRhdGEpOwpA
QCAtMzExLDYgKzM0OSw4IEBAIHZvaWQgQXVkaW9Db250ZXh0OjpzdG9wKCkKIAogICAgIGRvY3Vt
ZW50KCktPnVwZGF0ZUlzUGxheWluZ0F1ZGlvKCk7CiAKKyAgICBtX2V2ZW50UXVldWUtPmNsb3Nl
KCk7CisKICAgICAvLyBEb24ndCBjYWxsIHVuaW5pdGlhbGl6ZSgpIGltbWVkaWF0ZWx5IGhlcmUg
YmVjYXVzZSB0aGUgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBpcyBpbiB0aGUgbWlkZGxlCiAgICAg
Ly8gb2YgZGVhbGluZyB3aXRoIGFsbCBvZiBpdHMgQWN0aXZlRE9NT2JqZWN0cyBhdCB0aGlzIHBv
aW50LiB1bmluaXRpYWxpemUoKSBjYW4gZGUtcmVmZXJlbmNlIG90aGVyCiAgICAgLy8gQWN0aXZl
RE9NT2JqZWN0cyBzbyBsZXQncyBzY2hlZHVsZSB1bmluaXRpYWxpemUoKSB0byBiZSBjYWxsZWQg
bGF0ZXIuCkBAIC05ODAsNyArMTAyMCw3IEBAIHZvaWQgQXVkaW9Db250ZXh0OjpzdGFydFJlbmRl
cmluZygpCiAgICAgICAgICAgICByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKEF1ZGlvQ29udGV4
dDo6UmVxdWlyZVBhZ2VDb25zZW50Rm9yQXVkaW9TdGFydFJlc3RyaWN0aW9uKTsKICAgICB9CiAg
ICAgZGVzdGluYXRpb24oKS0+c3RhcnRSZW5kZXJpbmcoKTsKLSAgICBtX3N0YXRlID0gU3RhdGU6
OlJ1bm5pbmc7CisgICAgc2V0U3RhdGUoU3RhdGU6OlJ1bm5pbmcpOwogfQogCiB2b2lkIEF1ZGlv
Q29udGV4dDo6bWVkaWFDYW5TdGFydCgpCkBAIC0xMDExLDcgKzEwNTEsNyBAQCB2b2lkIEF1ZGlv
Q29udGV4dDo6ZmlyZUNvbXBsZXRpb25FdmVudCgpCiAgICAgICAgIHJldHVybjsKICAgICAgICAg
CiAgICAgQXVkaW9CdWZmZXIqIHJlbmRlcmVkQnVmZmVyID0gbV9yZW5kZXJUYXJnZXQuZ2V0KCk7
Ci0gICAgbV9zdGF0ZSA9IFN0YXRlOjpDbG9zZWQ7CisgICAgc2V0U3RhdGUoU3RhdGU6OkNsb3Nl
ZCk7CiAKICAgICBBU1NFUlQocmVuZGVyZWRCdWZmZXIpOwogICAgIGlmICghcmVuZGVyZWRCdWZm
ZXIpCkBAIC0xMDIwLDcgKzEwNjAsNyBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6ZmlyZUNvbXBsZXRp
b25FdmVudCgpCiAgICAgLy8gQXZvaWQgZmlyaW5nIHRoZSBldmVudCBpZiB0aGUgZG9jdW1lbnQg
aGFzIGFscmVhZHkgZ29uZSBhd2F5LgogICAgIGlmIChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkp
IHsKICAgICAgICAgLy8gQ2FsbCB0aGUgb2ZmbGluZSByZW5kZXJpbmcgY29tcGxldGlvbiBldmVu
dCBsaXN0ZW5lci4KLSAgICAgICAgZGlzcGF0Y2hFdmVudChPZmZsaW5lQXVkaW9Db21wbGV0aW9u
RXZlbnQ6OmNyZWF0ZShyZW5kZXJlZEJ1ZmZlcikpOworICAgICAgICBtX2V2ZW50UXVldWUtPmVu
cXVldWVFdmVudChPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQ6OmNyZWF0ZShyZW5kZXJlZEJ1
ZmZlcikpOwogICAgIH0KIH0KIApAQCAtMTAzNCw2ICsxMDc0LDEyNyBAQCB2b2lkIEF1ZGlvQ29u
dGV4dDo6ZGVjcmVtZW50QWN0aXZlU291cmNlQ291bnQoKQogICAgIC0tbV9hY3RpdmVTb3VyY2VD
b3VudDsKIH0KIAordm9pZCBBdWRpb0NvbnRleHQ6OnN1c3BlbmRDb250ZXh0KHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPiBzdWNjZXNzQ2FsbGJhY2ssIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBmYWlsdXJl
Q2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIEFTU0VSVChzdWNjZXNzQ2FsbGJh
Y2spOworICAgIEFTU0VSVChmYWlsdXJlQ2FsbGJhY2spOworCisgICAgaWYgKGlzT2ZmbGluZUNv
bnRleHQoKSkgeworICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OlN1c3BlbmRlZCkgeworICAg
ICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKHN1Y2Nlc3NDYWxsYmFjayk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6Q2xv
c2VkIHx8IG1fc3RhdGUgPT0gU3RhdGU6OkludGVycnVwdGVkIHx8ICFtX2Rlc3RpbmF0aW9uTm9k
ZSkgeworICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKGZhaWx1cmVD
YWxsYmFjayk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhZGRSZWFjdGlvbihTdGF0
ZTo6U3VzcGVuZGVkLCBzdWNjZXNzQ2FsbGJhY2spOworCisgICAgaWYgKCFtX21lZGlhU2Vzc2lv
bi0+Y2xpZW50V2lsbFBhdXNlUGxheWJhY2soKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVm
UHRyPEF1ZGlvQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKKyAgICBtX2Rlc3RpbmF0aW9uTm9k
ZS0+c3VzcGVuZChbc3Ryb25nVGhpc10geworICAgICAgICBzdHJvbmdUaGlzLT5zZXRTdGF0ZShT
dGF0ZTo6U3VzcGVuZGVkKTsKKyAgICB9KTsKK30KKwordm9pZCBBdWRpb0NvbnRleHQ6OnJlc3Vt
ZUNvbnRleHQoc3RkOjpmdW5jdGlvbjx2b2lkKCk+IHN1Y2Nlc3NDYWxsYmFjaywgc3RkOjpmdW5j
dGlvbjx2b2lkKCk+IGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAg
QVNTRVJUKHN1Y2Nlc3NDYWxsYmFjayk7CisgICAgQVNTRVJUKGZhaWx1cmVDYWxsYmFjayk7CisK
KyAgICBpZiAoaXNPZmZsaW5lQ29udGV4dCgpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFU
RV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0
ZTo6UnVubmluZykgeworICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNr
KHN1Y2Nlc3NDYWxsYmFjayk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9z
dGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkIHx8ICFtX2Rlc3RpbmF0aW9uTm9kZSkgeworICAgICAgICBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKGZhaWx1cmVDYWxsYmFjayk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhZGRSZWFjdGlvbihTdGF0ZTo6UnVubmluZywgc3Vj
Y2Vzc0NhbGxiYWNrKTsKKworICAgIGlmICghbV9tZWRpYVNlc3Npb24tPmNsaWVudFdpbGxCZWdp
blBsYXliYWNrKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxBdWRpb0NvbnRleHQ+
IHN0cm9uZ1RoaXModGhpcyk7CisgICAgbV9kZXN0aW5hdGlvbk5vZGUtPnJlc3VtZShbc3Ryb25n
VGhpc10geworICAgICAgICBzdHJvbmdUaGlzLT5zZXRTdGF0ZShTdGF0ZTo6UnVubmluZyk7Cisg
ICAgfSk7Cit9CisKK3ZvaWQgQXVkaW9Db250ZXh0OjpjbG9zZUNvbnRleHQoc3RkOjpmdW5jdGlv
bjx2b2lkKCk+IHN1Y2Nlc3NDYWxsYmFjaywgc3RkOjpmdW5jdGlvbjx2b2lkKCk+LCBFeGNlcHRp
b25Db2RlJiBlYykKK3sKKyAgICBBU1NFUlQoc3VjY2Vzc0NhbGxiYWNrKTsKKworICAgIGlmIChp
c09mZmxpbmVDb250ZXh0KCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQg
fHwgIW1fZGVzdGluYXRpb25Ob2RlKSB7CisgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+cG9zdFRhc2soc3VjY2Vzc0NhbGxiYWNrKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGFkZFJlYWN0aW9uKFN0YXRlOjpDbG9zZWQsIHN1Y2Nlc3NDYWxsYmFjayk7CisKKyAgICBS
ZWZQdHI8QXVkaW9Db250ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOworICAgIG1fZGVzdGluYXRpb25O
b2RlLT5jbG9zZShbc3Ryb25nVGhpcywgc3VjY2Vzc0NhbGxiYWNrXSB7CisgICAgICAgIHN0cm9u
Z1RoaXMtPnNldFN0YXRlKFN0YXRlOjpDbG9zZWQpOworICAgICAgICBzdHJvbmdUaGlzLT51bmlu
aXRpYWxpemUoKTsKKyAgICB9KTsKK30KKworCit2b2lkIEF1ZGlvQ29udGV4dDo6c3VzcGVuZFBs
YXliYWNrKCkKK3sKKyAgICBpZiAoIW1fZGVzdGluYXRpb25Ob2RlIHx8IG1fc3RhdGUgPT0gU3Rh
dGU6OkNsb3NlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6
OlN1c3BlbmRlZCkgeworICAgICAgICBpZiAobV9tZWRpYVNlc3Npb24tPnN0YXRlKCkgPT0gTWVk
aWFTZXNzaW9uOjpJbnRlcnJ1cHRlZCkKKyAgICAgICAgICAgIHNldFN0YXRlKFN0YXRlOjpJbnRl
cnJ1cHRlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZWZQdHI8QXVkaW9Db250
ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOworICAgIG1fZGVzdGluYXRpb25Ob2RlLT5zdXNwZW5kKFtz
dHJvbmdUaGlzXSB7CisgICAgICAgIGJvb2wgaW50ZXJydXB0ZWQgPSBzdHJvbmdUaGlzLT5tX21l
ZGlhU2Vzc2lvbi0+c3RhdGUoKSA9PSBNZWRpYVNlc3Npb246OkludGVycnVwdGVkOworICAgICAg
ICBzdHJvbmdUaGlzLT5zZXRTdGF0ZShpbnRlcnJ1cHRlZCA/IFN0YXRlOjpJbnRlcnJ1cHRlZCA6
IFN0YXRlOjpTdXNwZW5kZWQpOworICAgIH0pOworfQorCit2b2lkIEF1ZGlvQ29udGV4dDo6bWF5
UmVzdW1lUGxheWJhY2soYm9vbCBzaG91bGRSZXN1bWUpCit7CisgICAgaWYgKCFtX2Rlc3RpbmF0
aW9uTm9kZSB8fCBtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6
UnVubmluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFzaG91bGRSZXN1bWUpIHsKKyAg
ICAgICAgc2V0U3RhdGUoU3RhdGU6OlN1c3BlbmRlZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBSZWZQdHI8QXVkaW9Db250ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOworICAgIG1fZGVz
dGluYXRpb25Ob2RlLT5yZXN1bWUoW3N0cm9uZ1RoaXNdIHsKKyAgICAgICAgc3Ryb25nVGhpcy0+
c2V0U3RhdGUoU3RhdGU6OlJ1bm5pbmcpOworICAgIH0pOworfQorCisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVESU8pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAppbmRleCBhZTg3NzJiYTBiNTNkNzk3
NzhiYjJlZjM1OThjYjAwMGFkMThiNDY0Li40MDk2M2RmMGQ4NDg0Y2M5NmJjNWIzODgwYzg1NjY0
NTk4NzRjNjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9D
b250ZXh0LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAj
aW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJNZWRpYUNhblN0YXJ0TGlzdGVuZXIu
aCIKKyNpbmNsdWRlICJNZWRpYVNlc3Npb24uaCIKICNpbmNsdWRlIDxhdG9taWM+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtNTcsNiAr
NTgsNyBAQCBjbGFzcyBIVE1MTWVkaWFFbGVtZW50OwogY2xhc3MgQ2hhbm5lbE1lcmdlck5vZGU7
CiBjbGFzcyBDaGFubmVsU3BsaXR0ZXJOb2RlOwogY2xhc3MgR2Fpbk5vZGU7CitjbGFzcyBHZW5l
cmljRXZlbnRRdWV1ZTsKIGNsYXNzIFBhbm5lck5vZGU7CiBjbGFzcyBBdWRpb0xpc3RlbmVyOwog
Y2xhc3MgQXVkaW9TdW1taW5nSnVuY3Rpb247CkBAIC03NCw3ICs3Niw3IEBAIGNsYXNzIFBlcmlv
ZGljV2F2ZTsKIC8vIEF1ZGlvQ29udGV4dCBpcyB0aGUgY29ybmVyc3RvbmUgb2YgdGhlIHdlYiBh
dWRpbyBBUEkgYW5kIGFsbCBBdWRpb05vZGVzIGFyZSBjcmVhdGVkIGZyb20gaXQuCiAvLyBGb3Ig
dGhyZWFkIHNhZmV0eSBiZXR3ZWVuIHRoZSBhdWRpbyB0aHJlYWQgYW5kIHRoZSBtYWluIHRocmVh
ZCwgaXQgaGFzIGEgcmVuZGVyaW5nIGdyYXBoIGxvY2tpbmcgbWVjaGFuaXNtLiAKIAotY2xhc3Mg
QXVkaW9Db250ZXh0IDogcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPEF1ZGlvQ29udGV4dD4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRh
LCBwdWJsaWMgTWVkaWFDYW5TdGFydExpc3RlbmVyLCBwdWJsaWMgQXVkaW9Qcm9kdWNlciB7Citj
bGFzcyBBdWRpb0NvbnRleHQgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8QXVkaW9Db250ZXh0PiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGlu
ZURhdGEsIHB1YmxpYyBNZWRpYUNhblN0YXJ0TGlzdGVuZXIsIHB1YmxpYyBBdWRpb1Byb2R1Y2Vy
LCBwcml2YXRlIE1lZGlhU2Vzc2lvbkNsaWVudCB7CiBwdWJsaWM6CiAgICAgLy8gQ3JlYXRlIGFu
IEF1ZGlvQ29udGV4dCBmb3IgcmVuZGVyaW5nIHRvIHRoZSBhdWRpbyBoYXJkd2FyZS4KICAgICBz
dGF0aWMgUmVmUHRyPEF1ZGlvQ29udGV4dD4gY3JlYXRlKERvY3VtZW50JiwgRXhjZXB0aW9uQ29k
ZSYpOwpAQCAtMTA0LDYgKzEwNiwxMSBAQCBwdWJsaWM6CiAKICAgICBBdWRpb0xpc3RlbmVyKiBs
aXN0ZW5lcigpIHsgcmV0dXJuIG1fbGlzdGVuZXIuZ2V0KCk7IH0KIAorICAgIHZvaWQgc3VzcGVu
ZENvbnRleHQoc3RkOjpmdW5jdGlvbjx2b2lkKCk+LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4sIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHJlc3VtZUNvbnRleHQoc3RkOjpmdW5jdGlvbjx2b2lk
KCk+LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGNs
b3NlQ29udGV4dChzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4sIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiwg
RXhjZXB0aW9uQ29kZSYpOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc3RhdGUoKSBjb25zdDsK
KwogICAgIC8vIFRoZSBBdWRpb05vZGUgY3JlYXRlIG1ldGhvZHMgYXJlIGNhbGxlZCBvbiB0aGUg
bWFpbiB0aHJlYWQgKGZyb20gSmF2YVNjcmlwdCkuCiAgICAgUGFzc1JlZlB0cjxBdWRpb0J1ZmZl
clNvdXJjZU5vZGU+IGNyZWF0ZUJ1ZmZlclNvdXJjZSgpOwogI2lmIEVOQUJMRShWSURFTykKQEAg
LTI2NCw5ICsyNzEsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGxhenlJbml0aWFsaXplKCk7CiAg
ICAgdm9pZCB1bmluaXRpYWxpemUoKTsKIAorICAgIGVudW0gY2xhc3MgU3RhdGUgeyBTdXNwZW5k
ZWQsIFJ1bm5pbmcsIEludGVycnVwdGVkLCBDbG9zZWQgfTsKKyAgICB2b2lkIHNldFN0YXRlKFN0
YXRlKTsKKwogICAgIC8vIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgY2FsbHMgc3RvcCB0d2ljZS4K
ICAgICAvLyBXZSdkIGxpa2UgdG8gc2NoZWR1bGUgb25seSBvbmUgc3RvcCBhY3Rpb24gZm9yIHRo
ZW0uCi0gICAgYm9vbCBtX2lzU3RvcFNjaGVkdWxlZDsKICAgICBzdGF0aWMgdm9pZCBzdG9wRGlz
cGF0Y2godm9pZCogdXNlckRhdGEpOwogICAgIHZvaWQgY2xlYXIoKTsKIApAQCAtMjc5LDkgKzI4
OCw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzUGxheWluZ0F1ZGlvKCkgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCB2b2lkIHBhZ2VNdXRlZFN0YXRlRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7
CiAKLSAgICBib29sIG1faXNJbml0aWFsaXplZDsKLSAgICBib29sIG1faXNBdWRpb1RocmVhZEZp
bmlzaGVkOwotCiAgICAgLy8gVGhlIGNvbnRleHQgaXRzZWxmIGtlZXBzIGEgcmVmZXJlbmNlIHRv
IGFsbCBzb3VyY2Ugbm9kZXMuICBUaGUgc291cmNlIG5vZGVzLCB0aGVuIHJlZmVyZW5jZSBhbGwg
bm9kZXMgdGhleSdyZSBjb25uZWN0ZWQgdG8uCiAgICAgLy8gSW4gdHVybiwgdGhlc2Ugbm9kZXMg
cmVmZXJlbmNlIGFsbCBub2RlcyB0aGV5J3JlIGNvbm5lY3RlZCB0by4gIEFsbCBub2RlcyBhcmUg
dWx0aW1hdGVseSBjb25uZWN0ZWQgdG8gdGhlIEF1ZGlvRGVzdGluYXRpb25Ob2RlLgogICAgIC8v
IFdoZW4gdGhlIGNvbnRleHQgZGVyZWZlcmVuY2VzIGEgc291cmNlIG5vZGUsIGl0IHdpbGwgYmUg
ZGVhY3RpdmF0ZWQgZnJvbSB0aGUgcmVuZGVyaW5nIGdyYXBoIGFsb25nIHdpdGggYWxsIG90aGVy
IG5vZGVzIGl0IGlzCkBAIC0yOTgsOCArMzA0LDI0IEBAIHByaXZhdGU6CiAgICAgLy8gTWFrZSBz
dXJlIHRvIGRlcmVmZXJlbmNlIHRoZW0gaGVyZS4KICAgICB2b2lkIGRlcmVmVW5maW5pc2hlZFNv
dXJjZU5vZGVzKCk7CiAKLSAgICBSZWZQdHI8QXVkaW9EZXN0aW5hdGlvbk5vZGU+IG1fZGVzdGlu
YXRpb25Ob2RlOwotICAgIFJlZlB0cjxBdWRpb0xpc3RlbmVyPiBtX2xpc3RlbmVyOworICAgIC8v
IE1lZGlhU2Vzc2lvbkNsaWVudAorICAgIHZpcnR1YWwgTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUg
bWVkaWFUeXBlKCkgY29uc3QgeyByZXR1cm4gTWVkaWFTZXNzaW9uOjpXZWJBdWRpbzsgfQorICAg
IHZpcnR1YWwgTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgcHJlc2VudGF0aW9uVHlwZSgpIGNvbnN0
IHsgcmV0dXJuIE1lZGlhU2Vzc2lvbjo6V2ViQXVkaW87IH0KKyAgICB2aXJ0dWFsIGJvb2wgY2Fu
UmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChNZWRpYVNlc3Np
b246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSkgeyB9CisgICAgdmlydHVhbCBib29sIG92ZXJy
aWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rpb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kUGxheWJhY2soKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgbWF5UmVzdW1lUGxheWJhY2soYm9vbCBzaG91bGRSZXN1bWUpIG92ZXJyaWRlOwor
CisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBv
dmVycmlkZSB7IHJlZigpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBv
dmVycmlkZSB7IGRlcmVmKCk7IH0KKworICAgIHZvaWQgaGFuZGxlRGlydHlBdWRpb1N1bW1pbmdK
dW5jdGlvbnMoKTsKKyAgICB2b2lkIGhhbmRsZURpcnR5QXVkaW9Ob2RlT3V0cHV0cygpOworCisg
ICAgdm9pZCBhZGRSZWFjdGlvbihTdGF0ZSwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+KTsKKyAgICB2
b2lkIHVwZGF0ZUF1dG9tYXRpY1B1bGxOb2RlcygpOwogCiAgICAgLy8gT25seSBhY2Nlc3NlZCBp
biB0aGUgYXVkaW8gdGhyZWFkLgogICAgIFZlY3RvcjxBdWRpb05vZGUqPiBtX2ZpbmlzaGVkTm9k
ZXM7CkBAIC0zMTcsMzkgKzMzOSw0MiBAQCBwcml2YXRlOgogCiAgICAgLy8gVGhleSB3aWxsIGJl
IHNjaGVkdWxlZCBmb3IgZGVsZXRpb24gKG9uIHRoZSBtYWluIHRocmVhZCkgYXQgdGhlIGVuZCBv
ZiBhIHJlbmRlciBjeWNsZSAoaW4gcmVhbHRpbWUgdGhyZWFkKS4KICAgICBWZWN0b3I8QXVkaW9O
b2RlKj4gbV9ub2Rlc1RvRGVsZXRlOwotICAgIGJvb2wgbV9pc0RlbGV0aW9uU2NoZWR1bGVkOwor
CisgICAgYm9vbCBtX2lzRGVsZXRpb25TY2hlZHVsZWQgPSB7IGZhbHNlIH07CisgICAgYm9vbCBt
X2lzU3RvcFNjaGVkdWxlZCA9IHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNJbml0aWFsaXplZCA9
IHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNBdWRpb1RocmVhZEZpbmlzaGVkID0geyBmYWxzZSB9
OworICAgIGJvb2wgbV9hdXRvbWF0aWNQdWxsTm9kZXNOZWVkVXBkYXRpbmcgPSB7IGZhbHNlIH07
CisgICAgYm9vbCBtX2lzT2ZmbGluZUNvbnRleHQgPSB7IGZhbHNlIH07CiAKICAgICAvLyBPbmx5
IGFjY2Vzc2VkIHdoZW4gdGhlIGdyYXBoIGxvY2sgaXMgaGVsZC4KICAgICBIYXNoU2V0PEF1ZGlv
U3VtbWluZ0p1bmN0aW9uKj4gbV9kaXJ0eVN1bW1pbmdKdW5jdGlvbnM7CiAgICAgSGFzaFNldDxB
dWRpb05vZGVPdXRwdXQqPiBtX2RpcnR5QXVkaW9Ob2RlT3V0cHV0czsKLSAgICB2b2lkIGhhbmRs
ZURpcnR5QXVkaW9TdW1taW5nSnVuY3Rpb25zKCk7Ci0gICAgdm9pZCBoYW5kbGVEaXJ0eUF1ZGlv
Tm9kZU91dHB1dHMoKTsKIAogICAgIC8vIEZvciB0aGUgc2FrZSBvZiB0aHJlYWQgc2FmZXR5LCB3
ZSBtYWludGFpbiBhIHNlcGVyYXRlIFZlY3RvciBvZiBhdXRvbWF0aWMgcHVsbCBub2RlcyBmb3Ig
cmVuZGVyaW5nIGluIG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzLgogICAgIC8vIEl0IHdp
bGwgYmUgY29waWVkIGZyb20gbV9hdXRvbWF0aWNQdWxsTm9kZXMgYnkgdXBkYXRlQXV0b21hdGlj
UHVsbE5vZGVzKCkgYXQgdGhlIHZlcnkgc3RhcnQgb3IgZW5kIG9mIHRoZSByZW5kZXJpbmcgcXVh
bnR1bS4KICAgICBIYXNoU2V0PEF1ZGlvTm9kZSo+IG1fYXV0b21hdGljUHVsbE5vZGVzOwogICAg
IFZlY3RvcjxBdWRpb05vZGUqPiBtX3JlbmRlcmluZ0F1dG9tYXRpY1B1bGxOb2RlczsKLSAgICAv
LyBtX2F1dG9tYXRpY1B1bGxOb2Rlc05lZWRVcGRhdGluZyBrZWVwcyB0cmFjayBpZiBtX2F1dG9t
YXRpY1B1bGxOb2RlcyBpcyBtb2RpZmllZC4KLSAgICBib29sIG1fYXV0b21hdGljUHVsbE5vZGVz
TmVlZFVwZGF0aW5nOwotICAgIHZvaWQgdXBkYXRlQXV0b21hdGljUHVsbE5vZGVzKCk7Ci0KLSAg
ICB1bnNpZ25lZCBtX2Nvbm5lY3Rpb25Db3VudDsKLQotICAgIC8vIEdyYXBoIGxvY2tpbmcuCi0g
ICAgTXV0ZXggbV9jb250ZXh0R3JhcGhNdXRleDsKLSAgICB2b2xhdGlsZSBUaHJlYWRJZGVudGlm
aWVyIG1fYXVkaW9UaHJlYWQ7Ci0gICAgdm9sYXRpbGUgVGhyZWFkSWRlbnRpZmllciBtX2dyYXBo
T3duZXJUaHJlYWQ7IC8vIGlmIHRoZSBsb2NrIGlzIGhlbGQgdGhlbiB0aGlzIGlzIHRoZSB0aHJl
YWQgd2hpY2ggb3ducyBpdCwgb3RoZXJ3aXNlID09IFVuZGVmaW5lZFRocmVhZElkZW50aWZpZXIK
LSAgICAKICAgICAvLyBPbmx5IGFjY2Vzc2VkIGluIHRoZSBhdWRpbyB0aHJlYWQuCiAgICAgVmVj
dG9yPEF1ZGlvTm9kZSo+IG1fZGVmZXJyZWRGaW5pc2hEZXJlZkxpc3Q7CisgICAgVmVjdG9yPFZl
Y3RvcjxzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4+PiBtX3N0YXRlUmVhY3Rpb25zOwogCi0gICAgLy8g
RXZlbnRUYXJnZXQKLSAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7
IHJlZigpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7
IGRlcmVmKCk7IH0KKyNpZiBVU0UoQVVESU9fU0VTU0lPTikKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
TWVkaWFTZXNzaW9uPiBtX21lZGlhU2Vzc2lvbjsKKyNlbmRpZgorCisgICAgc3RkOjp1bmlxdWVf
cHRyPEdlbmVyaWNFdmVudFF1ZXVlPiBtX2V2ZW50UXVldWU7CiAKICAgICBSZWZQdHI8QXVkaW9C
dWZmZXI+IG1fcmVuZGVyVGFyZ2V0OwotICAgIAotICAgIGJvb2wgbV9pc09mZmxpbmVDb250ZXh0
OworICAgIFJlZlB0cjxBdWRpb0Rlc3RpbmF0aW9uTm9kZT4gbV9kZXN0aW5hdGlvbk5vZGU7Cisg
ICAgUmVmUHRyPEF1ZGlvTGlzdGVuZXI+IG1fbGlzdGVuZXI7CisKKyAgICB1bnNpZ25lZCBtX2Nv
bm5lY3Rpb25Db3VudCA9IHsgMCB9OworCisgICAgLy8gR3JhcGggbG9ja2luZy4KKyAgICBNdXRl
eCBtX2NvbnRleHRHcmFwaE11dGV4OworICAgIHZvbGF0aWxlIFRocmVhZElkZW50aWZpZXIgbV9h
dWRpb1RocmVhZCA9IHsgMCB9OworICAgIHZvbGF0aWxlIFRocmVhZElkZW50aWZpZXIgbV9ncmFw
aE93bmVyVGhyZWFkOyAvLyBpZiB0aGUgbG9jayBpcyBoZWxkIHRoZW4gdGhpcyBpcyB0aGUgdGhy
ZWFkIHdoaWNoIG93bnMgaXQsIG90aGVyd2lzZSA9PSBVbmRlZmluZWRUaHJlYWRJZGVudGlmaWVy
CiAKICAgICBBc3luY0F1ZGlvRGVjb2RlciBtX2F1ZGlvRGVjb2RlcjsKIApAQCAtMzU4LDEyICsz
ODMsMTEgQEAgcHJpdmF0ZToKICAgICBlbnVtIHsgTWF4TnVtYmVyT2ZDaGFubmVscyA9IDMyIH07
CiAKICAgICAvLyBOdW1iZXIgb2YgQXVkaW9CdWZmZXJTb3VyY2VOb2RlcyB0aGF0IGFyZSBhY3Rp
dmUgKHBsYXlpbmcpLgotICAgIHN0ZDo6YXRvbWljPGludD4gbV9hY3RpdmVTb3VyY2VDb3VudDsK
KyAgICBzdGQ6OmF0b21pYzxpbnQ+IG1fYWN0aXZlU291cmNlQ291bnQgPSB7IDAgfTsKIAotICAg
IEJlaGF2aW9yUmVzdHJpY3Rpb25zIG1fcmVzdHJpY3Rpb25zOworICAgIEJlaGF2aW9yUmVzdHJp
Y3Rpb25zIG1fcmVzdHJpY3Rpb25zID0geyBOb1Jlc3RyaWN0aW9ucyB9OwogCi0gICAgZW51bSBj
bGFzcyBTdGF0ZSB7IFN1c3BlbmRlZCwgUnVubmluZywgQ2xvc2VkIH07Ci0gICAgU3RhdGUgbV9z
dGF0ZTsKKyAgICBTdGF0ZSBtX3N0YXRlID0geyBTdGF0ZTo6U3VzcGVuZGVkIH07CiB9OwogCiB9
IC8vIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Db250ZXh0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9D
b250ZXh0LmlkbAppbmRleCBiOTc1ZTQ3MjhlODM1NzNmMGU3YjFkNmUxMjVjODYxYThlNzgzZjdi
Li4xMmNkNTc1Njg0YTY2YTkyZTBjYmIzNWE3OWRiNTVjNjMwN2E4MGQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsCkBAIC0yMyw2ICsy
MywxMyBAQAogICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorZW51bSBBdWRpb0NvbnRleHRTdGF0ZSB7CisgICAgInN1
c3BlbmRlZCIsCisgICAgInJ1bm5pbmciLAorICAgICJpbnRlcnJ1cHRlZCIsCisgICAgImNsb3Nl
ZCIKK307CisKIFsKICAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkF1ZGlvLAogICAgIENvbmRpdGlv
bmFsPVdFQl9BVURJTywKQEAgLTQzLDYgKzUwLDEzIEBACiAgICAgLy8gQWxsIHBhbm5pbmcgaXMg
cmVsYXRpdmUgdG8gdGhpcyBsaXN0ZW5lci4KICAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9M
aXN0ZW5lciBsaXN0ZW5lcjsKIAorICAgIFtDdXN0b21dIFByb21pc2Ugc3VzcGVuZCgpOworICAg
IFtDdXN0b21dIFByb21pc2UgcmVzdW1lKCk7CisgICAgW0N1c3RvbV0gUHJvbWlzZSBjbG9zZSgp
OworCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlvQ29udGV4dFN0YXRlIHN0YXRlOworICAg
IGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25zdGF0ZWNoYW5nZTsKKwogICAgIC8vIE51bWJlciBv
ZiBBdWRpb0J1ZmZlclNvdXJjZU5vZGVzIHRoYXQgYXJlIGN1cnJlbnRseSBwbGF5aW5nLgogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGFjdGl2ZVNvdXJjZUNvdW50OwogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5oCmluZGV4IDc0ODk0NjQ5OWUzYjhkY2ViMTQyOGE5MzU1OGMyZjA3MTAzNmQx
NTMuLmFjNTg3YjFkZTI3M2Y3M2Y2ODI0ZWZmODA2ZWVlZmY3ZDBlMjIzYjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2Rl
LmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb0J1
czsKIGNsYXNzIEF1ZGlvQ29udGV4dDsKLSAgICAKKwogY2xhc3MgQXVkaW9EZXN0aW5hdGlvbk5v
ZGUgOiBwdWJsaWMgQXVkaW9Ob2RlLCBwdWJsaWMgQXVkaW9JT0NhbGxiYWNrIHsKIHB1YmxpYzoK
ICAgICBBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRl
KTsKQEAgLTU4LDYgKzU4LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbmFibGVJbnB1
dChjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBz
dGFydFJlbmRlcmluZygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPikgeyB9CisgICAgdmlydHVhbCB2b2lkIHN1c3BlbmQoc3RkOjpmdW5jdGlvbjx2
b2lkKCk+KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2Uoc3RkOjpmdW5jdGlvbjx2b2lkKCk+
KSB7IH0KIAogICAgIEF1ZGlvU291cmNlUHJvdmlkZXIqIGxvY2FsQXVkaW9JbnB1dFByb3ZpZGVy
KCkgeyByZXR1cm4gJm1fbG9jYWxBdWRpb0lucHV0UHJvdmlkZXI7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5v
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0
aW5hdGlvbk5vZGUuY3BwCmluZGV4IDk1NmNjMjI2Zjg1NmI0NzQxNDRlMzU2ZjdmM2VhODVmOTU5
MmJhYTkuLjBiY2MyYzBhNGFjNjBjOTQyNDAyMjY3ZGU1ZTRjNDBkY2JmODlkODkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRp
b25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRB
dWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJBdWRp
b0NvbnRleHQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgogCiBjb25zdCB1bnNpZ25lZCBFbmFibGVkSW5wdXRDaGFubmVscyA9IDI7
CkBAIC0xMDUsNiArMTA2LDI5IEBAIHZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpz
dGFydFJlbmRlcmluZygpCiAgICAgICAgIG1fZGVzdGluYXRpb24tPnN0YXJ0KCk7CiB9CiAKK3Zv
aWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpyZXN1bWUoc3RkOjpmdW5jdGlvbjx2b2lk
KCk+IGZ1bmN0aW9uKQoreworICAgIEFTU0VSVChpc0luaXRpYWxpemVkKCkpOworICAgIGlmIChp
c0luaXRpYWxpemVkKCkpCisgICAgICAgIG1fZGVzdGluYXRpb24tPnN0YXJ0KCk7CisgICAgY29u
dGV4dCgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKGZ1bmN0aW9uKTsKK30K
Kwordm9pZCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnN1c3BlbmQoc3RkOjpmdW5jdGlv
bjx2b2lkKCk+IGZ1bmN0aW9uKQoreworICAgIEFTU0VSVChpc0luaXRpYWxpemVkKCkpOworICAg
IGlmIChpc0luaXRpYWxpemVkKCkpCisgICAgICAgIG1fZGVzdGluYXRpb24tPnN0b3AoKTsKKyAg
ICBjb250ZXh0KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soZnVuY3Rpb24p
OworfQorCit2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6Y2xvc2Uoc3RkOjpmdW5j
dGlvbjx2b2lkKCk+IGZ1bmN0aW9uKQoreworICAgIEFTU0VSVChpc0luaXRpYWxpemVkKCkpOwor
ICAgIHVuaW5pdGlhbGl6ZSgpOworICAgIGNvbnRleHQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLT5wb3N0VGFzayhmdW5jdGlvbik7Cit9CisKIHVuc2lnbmVkIGxvbmcgRGVmYXVsdEF1ZGlv
RGVzdGluYXRpb25Ob2RlOjptYXhDaGFubmVsQ291bnQoKSBjb25zdAogewogICAgIHJldHVybiBB
dWRpb0Rlc3RpbmF0aW9uOjptYXhDaGFubmVsQ291bnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5oCmluZGV4IDJlMGE4NjU4Y2QyZWQwNGMzNThjNTVlM2NjYTgyN2NkMWQ1MmNiN2MuLmIxZDYy
OGRkMmU5Y2QwZDc0OTQzMzM4NjgyOTU1MGI0MWYyNWE2ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlv
bk5vZGUuaApAQCAtNTAsNiArNTAsOSBAQCBwdWJsaWM6CiAgICAgLy8gQXVkaW9EZXN0aW5hdGlv
bk5vZGUKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlSW5wdXQoY29uc3QgU3RyaW5nJiBpbnB1dERl
dmljZUlkKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRSZW5kZXJpbmcoKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHN1c3BlbmQoc3RkOjpmdW5jdGlvbjx2b2lkKCk+KSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2Uoc3RkOjpmdW5jdGlvbjx2b2lkKCk+KSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgbWF4Q2hhbm5lbENvdW50KCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGlzUGxheWluZygpIG92ZXJyaWRlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29udGV4dEN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29udGV4dEN1c3RvbS5j
cHAKaW5kZXggMWE3NWQ5MzViYzczMjIwNWFiNDdhNWQxOTYwNGQwODI5ZDFkNGVjNS4uZGRlYzc5
NGYwZTZmMjU5NDI2OGY2Zjk5MDY5Y2QwZDZkNDRjODhlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgIkpTQXVkaW9CdWZmZXIuaCIKICNpbmNsdWRlICJKU0F1ZGlvQ29udGV4
dC5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5o
IgogI2luY2x1ZGUgIkpTT2ZmbGluZUF1ZGlvQ29udGV4dC5oIgogI2luY2x1ZGUgIk9mZmxpbmVB
dWRpb0NvbnRleHQuaCIKICNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CkBAIC0xMTAs
NiArMTExLDY5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNBdWRp
b0NvbnRleHQoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoQ1JF
QVRFX0RPTV9XUkFQUEVSKGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCBBdWRpb0NvbnRl
eHQsIGF1ZGlvQ29udGV4dC5nZXQoKSkpOwogfQogCitKU1ZhbHVlIEpTQXVkaW9Db250ZXh0Ojpz
dXNwZW5kKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBEZWZlcnJlZFdyYXBwZXIgd3JhcHBlcihl
eGVjLCBnbG9iYWxPYmplY3QoKSk7CisgICAgYXV0byBzdWNjZXNzQ2FsbGJhY2sgPSBbd3JhcHBl
cl0oKSBtdXRhYmxlIHsKKyAgICAgICAgd3JhcHBlci5yZXNvbHZlKG51bGxwdHIpOworICAgIH07
CisgICAgYXV0byBmYWlsdXJlQ2FsbGJhY2sgPSBbd3JhcHBlcl0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgd3JhcHBlci5yZWplY3QobnVsbHB0cik7CisgICAgfTsKKworICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOworICAgIGltcGwoKS5zdXNwZW5kQ29udGV4dChXVEY6Om1vdmUoc3VjY2Vzc0NhbGxi
YWNrKSwgV1RGOjptb3ZlKGZhaWx1cmVDYWxsYmFjayksIGVjKTsKKworICAgIGlmIChlYykgewor
ICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gd3JhcHBlci5wcm9taXNlKCk7Cit9CisKK0pT
VmFsdWUgSlNBdWRpb0NvbnRleHQ6OnJlc3VtZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgRGVm
ZXJyZWRXcmFwcGVyIHdyYXBwZXIoZXhlYywgZ2xvYmFsT2JqZWN0KCkpOworICAgIGF1dG8gc3Vj
Y2Vzc0NhbGxiYWNrID0gW3dyYXBwZXJdKCkgbXV0YWJsZSB7CisgICAgICAgIHdyYXBwZXIucmVz
b2x2ZShudWxscHRyKTsKKyAgICB9OworICAgIGF1dG8gZmFpbHVyZUNhbGxiYWNrID0gW3dyYXBw
ZXJdKCkgbXV0YWJsZSB7CisgICAgICAgIHdyYXBwZXIucmVqZWN0KG51bGxwdHIpOworICAgIH07
CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBpbXBsKCkucmVzdW1lQ29udGV4dChX
VEY6Om1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGOjptb3ZlKGZhaWx1cmVDYWxsYmFjayksIGVj
KTsKKworICAgIGlmIChlYykgeworICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwor
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gd3JhcHBl
ci5wcm9taXNlKCk7Cit9CisKK0pTVmFsdWUgSlNBdWRpb0NvbnRleHQ6OmNsb3NlKEV4ZWNTdGF0
ZSogZXhlYykKK3sKKyAgICBEZWZlcnJlZFdyYXBwZXIgd3JhcHBlcihleGVjLCBnbG9iYWxPYmpl
Y3QoKSk7CisgICAgYXV0byBzdWNjZXNzQ2FsbGJhY2sgPSBbd3JhcHBlcl0oKSBtdXRhYmxlIHsK
KyAgICAgICAgd3JhcHBlci5yZXNvbHZlKG51bGxwdHIpOworICAgIH07CisgICAgYXV0byBmYWls
dXJlQ2FsbGJhY2sgPSBbd3JhcHBlcl0oKSBtdXRhYmxlIHsKKyAgICAgICAgd3JhcHBlci5yZWpl
Y3QobnVsbHB0cik7CisgICAgfTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGlt
cGwoKS5jbG9zZUNvbnRleHQoV1RGOjptb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURjo6bW92ZShm
YWlsdXJlQ2FsbGJhY2spLCBlYyk7CisKKyAgICBpZiAoZWMpIHsKKyAgICAgICAgc2V0RE9NRXhj
ZXB0aW9uKGV4ZWMsIGVjKTsKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQor
CisgICAgcmV0dXJuIHdyYXBwZXIucHJvbWlzZSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVByb21pc2UuaAppbmRleCA0MmQwMmQ5ZjI4ZTllNmE4NGE0ZTc1YzNhNzMxOGY5
NjE0ZjlhMDFjLi5kOTU2ODEyYzQzZTIzMWNlNmE1MDhmNTQ5MTgwYmZkMGYyOTVlZDRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaApAQCAtMTA3LDYgKzEwNywx
NCBAQCBpbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJlc29sdmU8VmVjdG9yPHVuc2lnbmVk
IGNoYXI+Pihjb25zdCBWZWN0b3I8dW5zaWduZQogfQogCiB0ZW1wbGF0ZTw+CitpbmxpbmUgdm9p
ZCBEZWZlcnJlZFdyYXBwZXI6OnJlc29sdmUoY29uc3Qgc3RkOjpudWxscHRyX3QmKQoreworICAg
IEpTQzo6RXhlY1N0YXRlKiBleGVjID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAg
ICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CisgICAgcmVzb2x2ZShleGVjLCBKU0M6
OmpzTnVsbCgpKTsKK30KKwordGVtcGxhdGU8PgogaW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVy
OjpyZWplY3Q8U3RyaW5nPihjb25zdCBTdHJpbmcmIHJlc3VsdCkKIHsKICAgICBKU0M6OkV4ZWNT
dGF0ZSogZXhlYyA9IG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
TmFtZXMuaAppbmRleCBmMWZkMTI3MzlmNjI2YmUyMjk5ZDVkZGRlMDY3NzRhZGJkYTFiNDRjLi41
NDVlMTZlNTI0ZTA3MWYxZTI1ODI0NWEwOGM2MWU1YzVkYjU5OWVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dE5hbWVzLmgKQEAgLTE5MCw2ICsxOTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFj
cm8oc3RhbGxlZCkgXAogICAgIG1hY3JvKHN0YXJ0KSBcCiAgICAgbWFjcm8oc3RhcnRlZCkgXAor
ICAgIG1hY3JvKHN0YXRlY2hhbmdlKSBcCiAgICAgbWFjcm8oc3RvcmFnZSkgXAogICAgIG1hY3Jv
KHN1Ym1pdCkgXAogICAgIG1hY3JvKHN1Y2Nlc3MpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4IDExNDY2MTI2NzAzZWUzMmQzMWRkZGYwOTY0YWVh
NmM2YzZjODc0ZGYuLjc5MDE5OGJhN2ZmOGJjYzQwNzc5OWQwZmFmYWJmNzAzMzFjMTA1NWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtMTMwLDYg
KzEzMCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgfQogCisgICAgICAgIFRhc2so
c3RkOjpmdW5jdGlvbjx2b2lkKCk+IHRhc2spCisgICAgICAgICAgICA6IG1fdGFzayhbdGFza10o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsgdGFzaygpOyB9KQorICAgICAgICAgICAgLCBtX2lz
Q2xlYW51cFRhc2soZmFsc2UpCisgICAgICAgIHsKKyAgICAgICAgfQorCiAgICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjpp
c19jb252ZXJ0aWJsZTxULCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmKT4+Ojp2YWx1ZT46OnR5cGU+CiAgICAgICAgIFRhc2soQ2xlYW51cFRhc2tUYWcsIFQgdGFz
aykKICAgICAgICAgICAgIDogbV90YXNrKFdURjo6bW92ZSh0YXNrKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDFhOWUyOThmNjQ0ZDZiMWUxYThmMzJmMjJj
N2IxZDc0Y2I3NmU3MWIuLjhkOWQ4NWJmMjZlNDcyZjBhZDFiZGExMTg0OGU0MzhhMTU2NzYxOWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNjAzMSwxNyAr
NjAzMSwxNyBAQCBzaXplX3QgSFRNTE1lZGlhRWxlbWVudDo6bWF4aW11bVNvdXJjZUJ1ZmZlclNp
emUoY29uc3QgU291cmNlQnVmZmVyJiBidWZmZXIpIGNvbgogfQogI2VuZGlmCiAKLXZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6cGF1c2VQbGF5YmFjaygpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnN1
c3BlbmRQbGF5YmFjaygpCiB7CiAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6cGF1
c2VQbGF5YmFjayglcCkgLSBwYXVzZWQgPSAlcyIsIHRoaXMsIGJvb2xTdHJpbmcocGF1c2VkKCkp
KTsKICAgICBpZiAoIXBhdXNlZCgpKQogICAgICAgICBwYXVzZSgpOwogfQogCi12b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnJlc3VtZVBsYXliYWNrKCkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWF5
UmVzdW1lUGxheWJhY2soYm9vbCBzaG91bGRSZXN1bWUpCiB7CiAgICAgTE9HKE1lZGlhLCAiSFRN
TE1lZGlhRWxlbWVudDo6cmVzdW1lUGxheWJhY2soJXApIC0gcGF1c2VkID0gJXMiLCB0aGlzLCBi
b29sU3RyaW5nKHBhdXNlZCgpKSk7Ci0gICAgaWYgKHBhdXNlZCgpKQorICAgIGlmIChwYXVzZWQo
KSAmJiBzaG91bGRSZXN1bWUpCiAgICAgICAgIHBsYXkoKTsKIH0KICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggOWU2MTkwYjQ4YWQ3OGViZGE3YzQ4ZWQ1Yzg1
M2RlM2VlMTRiODFlMC4uNmExNjZlNWFiOGMwYjBjZWYxOTg1NTk4NWI5ZjBkMjljMzBlMWQxZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTcwNyw4ICs3MDcsOCBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgbWVkaWFUeXBl
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBNZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBw
cmVzZW50YXRpb25UeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBNZWRpYVNlc3Np
b246OkRpc3BsYXlUeXBlIGRpc3BsYXlUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIHBhdXNlUGxheWJhY2soKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzdW1l
UGxheWJhY2soKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZFBsYXliYWNrKCkg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIG1heVJlc3VtZVBsYXliYWNrKGJvb2wgc2hvdWxk
UmVzdW1lKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVNlc3Npb25UaXRsZSgp
IGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgZG91YmxlIG1lZGlhU2Vzc2lvbkR1cmF0aW9u
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZHVyYXRpb24oKTsgfQogICAgIHZpcnR1YWwgZG91
YmxlIG1lZGlhU2Vzc2lvbkN1cnJlbnRUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gY3Vy
cmVudFRpbWUoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vz
c2lvbi5jcHAKaW5kZXggZjRkYjRmZWYwNDVlYzk3ODQzZjAwOTE1NWY0YWFkMTAwMzQ0MTRkNy4u
YWU5NTUwMjNiZjMyZTI2Y2NmZTQzMDZkNTkwYjJjNTQ2N2YyYmVkYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwCkBAIC04Niw5ICs4NiwxMCBA
QCBzaXplX3QgQXVkaW9TZXNzaW9uOjpudW1iZXJPZk91dHB1dENoYW5uZWxzKCkgY29uc3QKICAg
ICByZXR1cm4gMDsKIH0KIAotdm9pZCBBdWRpb1Nlc3Npb246OnNldEFjdGl2ZShib29sKQorYm9v
bCBBdWRpb1Nlc3Npb246OnRyeVRvU2V0QWN0aXZlKGJvb2wpCiB7CiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc2l6ZV90IEF1ZGlvU2Vzc2lvbjo6cHJlZmVy
cmVkQnVmZmVyU2l6ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9BdWRpb1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1
ZGlvU2Vzc2lvbi5oCmluZGV4IGQ4OTc2M2UyNDQ5Zjc4ZTMwZjRkNTI0ZDY3MzBhYTY2ZjJjNWRh
OGUuLmM2Yzk0NTJmZDRjMjA1ZmZkOWJlNjcwZmU2MjlmYzYzNTYxYWQzYzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oCkBAIC01OSw3ICs1OSw3IEBA
IHB1YmxpYzoKICAgICBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3Q7CiAgICAgc2l6ZV90IG51bWJl
ck9mT3V0cHV0Q2hhbm5lbHMoKSBjb25zdDsKIAotICAgIHZvaWQgc2V0QWN0aXZlKGJvb2wpOwor
ICAgIGJvb2wgdHJ5VG9TZXRBY3RpdmUoYm9vbCk7CiAKICAgICBzaXplX3QgcHJlZmVycmVkQnVm
ZmVyU2l6ZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0UHJlZmVycmVkQnVmZmVyU2l6ZShzaXplX3Qp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5jcHAKaW5k
ZXggNmY2OGQ3MDBlNWY2MmIzMDI4MjBhMmUxOWUzYTIxZWZiNjU2ZjNkOS4uMThlYTgyM2NiOTE5
MGM4NjA3ZjliNTJjZGM2MzgwMTVmNDE0YTQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uY3BwCkBAIC04OCw4ICs4OCw4IEBAIHZvaWQgTWVkaWFT
ZXNzaW9uOjpiZWdpbkludGVycnVwdGlvbihJbnRlcnJ1cHRpb25UeXBlIHR5cGUpCiAKICAgICBt
X3N0YXRlVG9SZXN0b3JlID0gc3RhdGUoKTsKICAgICBtX25vdGlmeWluZ0NsaWVudCA9IHRydWU7
Ci0gICAgY2xpZW50KCkucGF1c2VQbGF5YmFjaygpOwogICAgIHNldFN0YXRlKEludGVycnVwdGVk
KTsKKyAgICBjbGllbnQoKS5zdXNwZW5kUGxheWJhY2soKTsKICAgICBtX25vdGlmeWluZ0NsaWVu
dCA9IGZhbHNlOwogfQogCkBAIC0xMDksMjggKzEwOSwzNSBAQCB2b2lkIE1lZGlhU2Vzc2lvbjo6
ZW5kSW50ZXJydXB0aW9uKEVuZEludGVycnVwdGlvbkZsYWdzIGZsYWdzKQogICAgIG1fc3RhdGVU
b1Jlc3RvcmUgPSBJZGxlOwogICAgIHNldFN0YXRlKFBhdXNlZCk7CiAKLSAgICBpZiAoZmxhZ3Mg
JiBNYXlSZXN1bWVQbGF5aW5nICYmIHN0YXRlVG9SZXN0b3JlID09IFBsYXlpbmcpIHsKLSAgICAg
ICAgTE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uOjplbmRJbnRlcnJ1cHRpb24gLSByZXN1bWluZyBw
bGF5YmFjayIpOwotICAgICAgICBjbGllbnQoKS5yZXN1bWVQbGF5YmFjaygpOwotICAgIH0KKyAg
ICBib29sIHNob3VsZFJlc3VtZSA9IGZsYWdzICYgTWF5UmVzdW1lUGxheWluZyAmJiBzdGF0ZVRv
UmVzdG9yZSA9PSBQbGF5aW5nOworICAgIGNsaWVudCgpLm1heVJlc3VtZVBsYXliYWNrKHNob3Vs
ZFJlc3VtZSk7CiB9CiAKIGJvb2wgTWVkaWFTZXNzaW9uOjpjbGllbnRXaWxsQmVnaW5QbGF5YmFj
aygpCiB7CisgICAgaWYgKG1fbm90aWZ5aW5nQ2xpZW50KQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KworICAgIGlmICghTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnNlc3Npb25X
aWxsQmVnaW5QbGF5YmFjaygqdGhpcykpIHsKKyAgICAgICAgaWYgKHN0YXRlKCkgPT0gSW50ZXJy
dXB0ZWQpCisgICAgICAgICAgICBtX3N0YXRlVG9SZXN0b3JlID0gUGxheWluZzsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKwogICAgIHNldFN0YXRlKFBsYXlpbmcpOwotICAgIE1lZGlh
U2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5zZXNzaW9uV2lsbEJlZ2luUGxheWJhY2so
KnRoaXMpOwogICAgIHVwZGF0ZUNsaWVudERhdGFCdWZmZXJpbmcoKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogYm9vbCBNZWRpYVNlc3Npb246OmNsaWVudFdpbGxQYXVzZVBsYXliYWNrKCkKIHsK
KyAgICBpZiAobV9ub3RpZnlpbmdDbGllbnQpCisgICAgICAgIHJldHVybiB0cnVlOworCiAgICAg
TE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uOjpjbGllbnRXaWxsUGF1c2VQbGF5YmFjayglcCktIHN0
YXRlID0gJXMiLCB0aGlzLCBzdGF0ZU5hbWUobV9zdGF0ZSkpOwogICAgIGlmIChzdGF0ZSgpID09
IEludGVycnVwdGVkKSB7Ci0gICAgICAgIGlmICghbV9ub3RpZnlpbmdDbGllbnQpIHsKLSAgICAg
ICAgICAgIG1fc3RhdGVUb1Jlc3RvcmUgPSBQYXVzZWQ7Ci0gICAgICAgICAgICBMT0coTWVkaWEs
ICIgICAgICBzZXR0aW5nIHN0YXRlVG9SZXN0b3JlIHRvIFwiUGF1c2VkXCIiKTsKLSAgICAgICAg
fQorICAgICAgICBtX3N0YXRlVG9SZXN0b3JlID0gUGF1c2VkOworICAgICAgICBMT0coTWVkaWEs
ICIgICAgICBzZXR0aW5nIHN0YXRlVG9SZXN0b3JlIHRvIFwiUGF1c2VkXCIiKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKQEAgLTE0NCw3ICsxNTEsNyBAQCBib29sIE1lZGlh
U2Vzc2lvbjo6Y2xpZW50V2lsbFBhdXNlUGxheWJhY2soKQogdm9pZCBNZWRpYVNlc3Npb246OnBh
dXNlU2Vzc2lvbigpCiB7CiAgICAgTE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uOjpwYXVzZVNlc3Np
b24oJXApIiwgdGhpcyk7Ci0gICAgbV9jbGllbnQucGF1c2VQbGF5YmFjaygpOworICAgIG1fY2xp
ZW50LnN1c3BlbmRQbGF5YmFjaygpOwogfQogCiBNZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBNZWRp
YVNlc3Npb246Om1lZGlhVHlwZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL01lZGlhU2Vzc2lvbi5oCmluZGV4IDZkNzU0YzZiZTU1NmUwMzk0YWQzMGE3Y2EwNjM0OGYw
ZWExNjFmZWEuLmU5Nzc4MTQxN2Q2ZDBhOThhMzJkZGJmN2I4ZWE2Yzg1NDU2M2M2MzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5oCkBAIC0xNDksOCAr
MTQ5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgcHJl
c2VudGF0aW9uVHlwZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIE1lZGlhU2Vzc2lvbjo6RGlz
cGxheVR5cGUgZGlzcGxheVR5cGUoKSBjb25zdCB7IHJldHVybiBNZWRpYVNlc3Npb246Ok5vcm1h
bDsgfQogCi0gICAgdmlydHVhbCB2b2lkIHJlc3VtZVBsYXliYWNrKCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBwYXVzZVBsYXliYWNrKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBtYXlSZXN1bWVQ
bGF5YmFjayhib29sIHNob3VsZFJlc3VtZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5k
UGxheWJhY2soKSA9IDA7CiAKICAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVNlc3Npb25UaXRsZSgp
IGNvbnN0OwogICAgIHZpcnR1YWwgZG91YmxlIG1lZGlhU2Vzc2lvbkR1cmF0aW9uKCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25N
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1h
bmFnZXIuY3BwCmluZGV4IGUxMzBjMmNhZmY0YTZlNWJkNDI3NzMzMTE3MmE0YTMxZWQ0YzRmZGUu
LjQ5ODQyYjIwYTQ0ZDUyODQzYTIwNDQ3ODE5MGJjMTczM2Q4ZWRmYzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoVklERU8pCiAKKyNpbmNsdWRlICJBdWRpb1Nl
c3Npb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQu
aCIKICNpbmNsdWRlICJNZWRpYVNlc3Npb24uaCIKQEAgLTE2Niw3ICsxNjcsNyBAQCBNZWRpYVNl
c3Npb25NYW5hZ2VyOjpTZXNzaW9uUmVzdHJpY3Rpb25zIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJl
c3RyaWN0aW9ucyhNZWRpYQogICAgIHJldHVybiBtX3Jlc3RyaWN0aW9uc1t0eXBlXTsKIH0KIAot
dm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uV2lsbEJlZ2luUGxheWJhY2soTWVkaWFT
ZXNzaW9uJiBzZXNzaW9uKQorYm9vbCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uV2lsbEJl
Z2luUGxheWJhY2soTWVkaWFTZXNzaW9uJiBzZXNzaW9uKQogewogICAgIExPRyhNZWRpYSwgIk1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25XaWxsQmVnaW5QbGF5YmFjayAtICVwIiwgJnNlc3Np
b24pOwogICAgIApAQCAtMTc0LDggKzE3NSwxNyBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnNlc3Npb25XaWxsQmVnaW5QbGF5YmFjayhNZWRpYVNlc3Npb24mIHNlc3Npb24pCiAKICAgICBN
ZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBzZXNzaW9uVHlwZSA9IHNlc3Npb24ubWVkaWFUeXBlKCk7
CiAgICAgU2Vzc2lvblJlc3RyaWN0aW9ucyByZXN0cmljdGlvbnMgPSBtX3Jlc3RyaWN0aW9uc1tz
ZXNzaW9uVHlwZV07CisgICAgaWYgKHNlc3Npb24uc3RhdGUoKSA9PSBNZWRpYVNlc3Npb246Oklu
dGVycnVwdGVkICYmIHJlc3RyaWN0aW9ucyAmIEludGVycnVwdGVkUGxheWJhY2tOb3RQZXJtaXR0
ZWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChhY3RpdmVBdWRpb1Nlc3Npb25S
ZXF1aXJlZCgpICYmICFBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS50cnlUb1NldEFjdGl2
ZSh0cnVlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1faW50ZXJydXB0ZWQp
CisgICAgICAgIGVuZEludGVycnVwdGlvbihNZWRpYVNlc3Npb246Ok5vRmxhZ3MpOworCiAgICAg
aWYgKCFyZXN0cmljdGlvbnMgJiBDb25jdXJyZW50UGxheWJhY2tOb3RQZXJtaXR0ZWQpCi0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBWZWN0b3I8TWVkaWFTZXNz
aW9uKj4gc2Vzc2lvbnMgPSBtX3Nlc3Npb25zOwogICAgIGZvciAoYXV0byogb25lU2Vzc2lvbiA6
IHNlc3Npb25zKSB7CkBAIC0xODgsNiArMTk4LDcgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2Vy
OjpzZXNzaW9uV2lsbEJlZ2luUGxheWJhY2soTWVkaWFTZXNzaW9uJiBzZXNzaW9uKQogICAgIH0K
ICAgICAKICAgICB1cGRhdGVTZXNzaW9uU3RhdGUoKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KICAg
ICAKIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxFbmRQbGF5YmFjayhNZWRp
YVNlc3Npb24mIHNlc3Npb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9NZWRpYVNlc3Npb25NYW5hZ2VyLmgKaW5kZXggYzQ1NTk1ZTI2M2U2ZmUzZDgzOTRkMGVmMDI4
N2VlYTU3NDhlMDhlMS4uMjk2ZGNkNTMyOWI2NDc4ZjFlMDUyZjg5OTA2ZTcxNWJhYzZjOWIyNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFu
YWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1h
bmFnZXIuaApAQCAtNjMsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIEF1dG9QcmVsb2FkaW5n
Tm90UGVybWl0dGVkID0gMSA8PCAzLAogICAgICAgICBCYWNrZ3JvdW5kUHJvY2Vzc1BsYXliYWNr
UmVzdHJpY3RlZCA9IDEgPDwgNCwKICAgICAgICAgQmFja2dyb3VuZFRhYlBsYXliYWNrUmVzdHJp
Y3RlZCA9IDEgPDwgNSwKKyAgICAgICAgSW50ZXJydXB0ZWRQbGF5YmFja05vdFBlcm1pdHRlZCA9
IDEgPDwgNiwKICAgICB9OwogICAgIHR5cGVkZWYgdW5zaWduZWQgU2Vzc2lvblJlc3RyaWN0aW9u
czsKIApAQCAtNzEsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgU2Vzc2lv
blJlc3RyaWN0aW9ucyByZXN0cmljdGlvbnMoTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUpOwogICAg
IHZpcnR1YWwgdm9pZCByZXNldFJlc3RyaWN0aW9ucygpOwogCi0gICAgdmlydHVhbCB2b2lkIHNl
c3Npb25XaWxsQmVnaW5QbGF5YmFjayhNZWRpYVNlc3Npb24mKTsKKyAgICB2aXJ0dWFsIGJvb2wg
c2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKE1lZGlhU2Vzc2lvbiYpOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXNzaW9uV2lsbEVuZFBsYXliYWNrKE1lZGlhU2Vzc2lvbiYpOwogCiAgICAgYm9vbCBzZXNz
aW9uUmVzdHJpY3RzSW5saW5lVmlkZW9QbGF5YmFjayhjb25zdCBNZWRpYVNlc3Npb24mKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rl
c3RpbmF0aW9uSU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRp
b0Rlc3RpbmF0aW9uSU9TLmNwcAppbmRleCBiNDRiMGNlYzI5MWQ4YmU3MGFjMjRmYzVjYThlYmQ0
ZmY5OTVkZTg0Li4zYTEwOGVkNTM5ZWU1Yjc3YmVlMzM3ODY5MGMzN2FjZjc2YjIzZjE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlv
bklPUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVz
dGluYXRpb25JT1MuY3BwCkBAIC0xMDAsNyArMTAwLDYgQEAgQXVkaW9EZXN0aW5hdGlvbklPUzo6
QXVkaW9EZXN0aW5hdGlvbklPUyhBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLCBkb3VibGUgc2Ft
cGwKICAgICA6IG1fb3V0cHV0VW5pdCgwKQogICAgICwgbV9jYWxsYmFjayhjYWxsYmFjaykKICAg
ICAsIG1fcmVuZGVyQnVzKEF1ZGlvQnVzOjpjcmVhdGUoMiwga1JlbmRlckJ1ZmZlclNpemUsIGZh
bHNlKSkKLSAgICAsIG1fbWVkaWFTZXNzaW9uKE1lZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0aGlzKSkK
ICAgICAsIG1fc2FtcGxlUmF0ZShzYW1wbGVSYXRlKQogICAgICwgbV9pc1BsYXlpbmcoZmFsc2Up
CiB7CkBAIC0xODQsMTAgKzE4Myw2IEBAIHZvaWQgQXVkaW9EZXN0aW5hdGlvbklPUzo6Y29uZmln
dXJlKCkKIHZvaWQgQXVkaW9EZXN0aW5hdGlvbklPUzo6c3RhcnQoKQogewogICAgIExPRyhNZWRp
YSwgIkF1ZGlvRGVzdGluYXRpb25JT1M6OnN0YXJ0Iik7Ci0gICAgaWYgKCFtX21lZGlhU2Vzc2lv
bi0+Y2xpZW50V2lsbEJlZ2luUGxheWJhY2soKSkgewotICAgICAgICBMT0coTWVkaWEsICIgIHJl
dHVybmluZyBiZWNhdXNlIG9mIGludGVycnVwdGlvbiIpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQogCiAgICAgT1NTdGF0dXMgcmVzdWx0ID0gQXVkaW9PdXRwdXRVbml0U3RhcnQobV9vdXRwdXRV
bml0KTsKICAgICBpZiAoIXJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5oCmluZGV4IDY0YWYxMWFiY2EyMTFk
YzE4YjUzYzljOGEzOWJlZGJlMTQxMjZlNjAuLjgxMjQ4N2EzM2ZmMGE4YzYzYWVhNGEwY2M3ZDQ3
ODk2NzZjZmUzYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lv
cy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuaApAQCAtMzIsNyArMzIsNiBAQAogCiAjaW5jbHVk
ZSAiQXVkaW9CdXMuaCIKICNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uLmgiCi0jaW5jbHVkZSAi
TWVkaWFTZXNzaW9uLmgiCiAjaW5jbHVkZSA8QXVkaW9Vbml0L0F1ZGlvVW5pdC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtNDAsNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIC8vIEFuIEF1ZGlvRGVzdGluYXRpb24gdXNpbmcgQ29yZUF1ZGlvJ3MgZGVmYXVsdCBvdXRw
dXQgQXVkaW9Vbml0CiAKLWNsYXNzIEF1ZGlvRGVzdGluYXRpb25JT1MgZmluYWwgOiBwdWJsaWMg
QXVkaW9EZXN0aW5hdGlvbiwgcHJpdmF0ZSBNZWRpYVNlc3Npb25DbGllbnQgeworY2xhc3MgQXVk
aW9EZXN0aW5hdGlvbklPUyBmaW5hbCA6IHB1YmxpYyBBdWRpb0Rlc3RpbmF0aW9uIHsKIHB1Ymxp
YzoKICAgICBBdWRpb0Rlc3RpbmF0aW9uSU9TKEF1ZGlvSU9DYWxsYmFjayYsIGRvdWJsZSBzYW1w
bGVSYXRlKTsKICAgICB2aXJ0dWFsIH5BdWRpb0Rlc3RpbmF0aW9uSU9TKCk7CkBAIC01NCwxNSAr
NTMsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1BsYXlpbmcoKSBvdmVycmlkZSB7
IHJldHVybiBtX2lzUGxheWluZzsgfQogICAgIHZpcnR1YWwgZmxvYXQgc2FtcGxlUmF0ZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQogCi0gICAgLy8gTWVkaWFTZXNz
aW9uQ2xpZW50Ci0gICAgdmlydHVhbCBNZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBtZWRpYVR5cGUo
KSBjb25zdCB7IHJldHVybiBNZWRpYVNlc3Npb246OldlYkF1ZGlvOyB9Ci0gICAgdmlydHVhbCBN
ZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBwcmVzZW50YXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4g
TWVkaWFTZXNzaW9uOjpXZWJBdWRpbzsgfQotICAgIHZpcnR1YWwgYm9vbCBjYW5SZWNlaXZlUmVt
b3RlQ29udHJvbENvbW1hbmRzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKE1lZGlhU2Vzc2lvbjo6UmVtb3Rl
Q29udHJvbENvbW1hbmRUeXBlKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgb3ZlcnJpZGVCYWNrZ3Jv
dW5kUGxheWJhY2tSZXN0cmljdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCB2b2lkIHBhdXNlUGxheWJhY2soKSBvdmVycmlkZSB7IHN0b3AoKTsgfQotICAgIHZpcnR1
YWwgdm9pZCByZXN1bWVQbGF5YmFjaygpIG92ZXJyaWRlIHsgc3RhcnQoKTsgfQotCiAgICAgLy8g
RGVmYXVsdE91dHB1dFVuaXQgY2FsbGJhY2sKICAgICBzdGF0aWMgT1NTdGF0dXMgaW5wdXRQcm9j
KHZvaWQqIHVzZXJEYXRhLCBBdWRpb1VuaXRSZW5kZXJBY3Rpb25GbGFncyosIGNvbnN0IEF1ZGlv
VGltZVN0YW1wKiwgVUludDMyIGJ1c051bWJlciwgVUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRp
b0J1ZmZlckxpc3QqIGlvRGF0YSk7CiAgICAgc3RhdGljIHZvaWQgZnJhbWVTaXplQ2hhbmdlZFBy
b2Modm9pZCAqaW5SZWZDb24sIEF1ZGlvVW5pdCBpblVuaXQsIEF1ZGlvVW5pdFByb3BlcnR5SUQg
aW5JRCwgQXVkaW9Vbml0U2NvcGUgaW5TY29wZSwgQXVkaW9Vbml0RWxlbWVudCBpbkVsZW1lbnQp
OwpAQCAtNzUsNyArNjUsNiBAQCBwcml2YXRlOgogICAgIEF1ZGlvVW5pdCBtX291dHB1dFVuaXQ7
CiAgICAgQXVkaW9JT0NhbGxiYWNrJiBtX2NhbGxiYWNrOwogICAgIFJlZlB0cjxBdWRpb0J1cz4g
bV9yZW5kZXJCdXM7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhU2Vzc2lvbj4gbV9tZWRpYVNl
c3Npb247CiAKICAgICBkb3VibGUgbV9zYW1wbGVSYXRlOwogICAgIGJvb2wgbV9pc1BsYXlpbmc7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNz
aW9uSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lv
bklPUy5tbQppbmRleCBmZmU5N2JjNzhhMWI4NDI5NmNjYjlkMTY2Y2M2ZjU1OGIwY2I4NWYyLi5i
ZDhjNzViYmQyZTExNjc5Y2U5NjZmMjdlN2M4NzZlYTc4ZWU4YTU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0KQEAgLTE3
NiwxMSArMTc2LDExIEBAIHNpemVfdCBBdWRpb1Nlc3Npb246Om51bWJlck9mT3V0cHV0Q2hhbm5l
bHMoKSBjb25zdAogICAgIHJldHVybiBbW0FWQXVkaW9TZXNzaW9uIHNoYXJlZEluc3RhbmNlXSBv
dXRwdXROdW1iZXJPZkNoYW5uZWxzXTsKIH0KIAotdm9pZCBBdWRpb1Nlc3Npb246OnNldEFjdGl2
ZShib29sIGFjdGl2ZSkKK2Jvb2wgQXVkaW9TZXNzaW9uOjp0cnlUb1NldEFjdGl2ZShib29sIGFj
dGl2ZSkKIHsKICAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKICAgICBbW0FWQXVkaW9TZXNzaW9u
IHNoYXJlZEluc3RhbmNlXSBzZXRBY3RpdmU6YWN0aXZlIGVycm9yOiZlcnJvcl07Ci0gICAgQVNT
RVJUKCFlcnJvcik7CisgICAgcmV0dXJuICFlcnJvcjsKIH0KIAogc2l6ZV90IEF1ZGlvU2Vzc2lv
bjo6cHJlZmVycmVkQnVmZmVyU2l6ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaAppbmRleCA2
MWNjMDIxZjNmNWYyZmJmZWEyNGJlZWY3YmNmMmVlOWM4ZTMxZjAwLi45M2VjYmNlYzY0YjBlYTc1
MWVkNjYxNDBkZTIxYmYzNjIxMzBkZWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLmgKQEAgLTUzLDcg
KzUzLDcgQEAgcHJpdmF0ZToKIAogICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1MoKTsKIAotICAg
IHZpcnR1YWwgdm9pZCBzZXNzaW9uV2lsbEJlZ2luUGxheWJhY2soTWVkaWFTZXNzaW9uJikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBib29sIHNlc3Npb25XaWxsQmVnaW5QbGF5YmFjayhNZWRpYVNl
c3Npb24mKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2Vzc2lvbldpbGxFbmRQbGF5YmFj
ayhNZWRpYVNlc3Npb24mKSBvdmVycmlkZTsKICAgICAKICAgICB2b2lkIHVwZGF0ZU5vd1BsYXlp
bmdJbmZvKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3Mv
TWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tCmluZGV4IDY2MDA0ODFkNjcxYzZhMjQyNTlm
MDRhYjYzN2UwYTZlOTJiMjMyOGMuLjcwOTQ2N2UyYWU4MjRmNTE1NzVhZmQ4ZjM2MDk0ZDliNTI3
ZWJlNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRp
YVNlc3Npb25NYW5hZ2VySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tCkBAIC0xODQsMTAgKzE4NCwxMyBAQCB2b2lk
IE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OmNvbmZpZ3VyZVdpcmVMZXNzVGFyZ2V0TW9uaXRvcmlu
ZygpCiAgICAgICAgIFttX29iamNPYnNlcnZlciBzdG9wTW9uaXRvcmluZ0FpclBsYXlSb3V0ZXNd
OwogfQogCi12b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnNlc3Npb25XaWxsQmVnaW5QbGF5
YmFjayhNZWRpYVNlc3Npb24mIHNlc3Npb24pCitib29sIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6
OnNlc3Npb25XaWxsQmVnaW5QbGF5YmFjayhNZWRpYVNlc3Npb24mIHNlc3Npb24pCiB7Ci0gICAg
TWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKHNlc3Npb24pOwor
ICAgIGlmICghTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKHNl
c3Npb24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICB1cGRhdGVOb3dQbGF5aW5nSW5m
bygpOworICAgIHJldHVybiB0cnVlOwogfQogICAgIAogdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2Vy
aU9TOjpzZXNzaW9uV2lsbEVuZFBsYXliYWNrKE1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9u
TWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0
aW9uTWFjLmNwcAppbmRleCAwYWFlMWZjNWEzYWQ4MzZmY2IzNjgwODg1YmIyOTYwZGRjOGVmOWY5
Li5kYzNhMWI1NGVkNDNiNzQyODk4ZTU5MzlhN2FkY2ZjMzhmNGUxNTNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25N
YWMuY3BwCkBAIC04NSw3ICs4NSw2IEBAIEF1ZGlvRGVzdGluYXRpb25NYWM6OkF1ZGlvRGVzdGlu
YXRpb25NYWMoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywgZmxvYXQgc2FtcGxlCiAgICAgLCBt
X3JlbmRlckJ1cyhBdWRpb0J1czo6Y3JlYXRlKDIsIGtCdWZmZXJTaXplLCBmYWxzZSkpCiAgICAg
LCBtX3NhbXBsZVJhdGUoc2FtcGxlUmF0ZSkKICAgICAsIG1faXNQbGF5aW5nKGZhbHNlKQotICAg
ICwgbV9tZWRpYVNlc3Npb24oTWVkaWFTZXNzaW9uOjpjcmVhdGUoKnRoaXMpKQogewogICAgIC8v
IE9wZW4gYW5kIGluaXRpYWxpemUgRGVmYXVsdE91dHB1dFVuaXQKICAgICBBdWRpb0NvbXBvbmVu
dCBjb21wOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1
ZGlvRGVzdGluYXRpb25NYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9B
dWRpb0Rlc3RpbmF0aW9uTWFjLmgKaW5kZXggMjAwMjZmN2E3ZDUxMTRkODUyMDVjOWZmYzA4NmFj
YWE3NDcxMDg2YS4uOWU4NjlkMGI4ZGFlZDRmNjk5MmIzZDkzZDY4OGZiMmNhYjllNjczYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRp
b25NYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0
aW5hdGlvbk1hYy5oCkBAIC0zMSw3ICszMSw2IEBACiAKICNpbmNsdWRlICJBdWRpb0J1cy5oIgog
I2luY2x1ZGUgIkF1ZGlvRGVzdGluYXRpb24uaCIKLSNpbmNsdWRlICJNZWRpYVNlc3Npb24uaCIK
ICNpbmNsdWRlIDxBdWRpb1VuaXQvQXVkaW9Vbml0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogCkBAIC0zOSw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gQW4gQXVkaW9E
ZXN0aW5hdGlvbiB1c2luZyBDb3JlQXVkaW8ncyBkZWZhdWx0IG91dHB1dCBBdWRpb1VuaXQKIAot
Y2xhc3MgQXVkaW9EZXN0aW5hdGlvbk1hYyA6IHB1YmxpYyBBdWRpb0Rlc3RpbmF0aW9uLCBwdWJs
aWMgTWVkaWFTZXNzaW9uQ2xpZW50IHsKK2NsYXNzIEF1ZGlvRGVzdGluYXRpb25NYWMgOiBwdWJs
aWMgQXVkaW9EZXN0aW5hdGlvbiB7CiBwdWJsaWM6CiAgICAgQXVkaW9EZXN0aW5hdGlvbk1hYyhB
dWRpb0lPQ2FsbGJhY2smLCBmbG9hdCBzYW1wbGVSYXRlKTsKICAgICB2aXJ0dWFsIH5BdWRpb0Rl
c3RpbmF0aW9uTWFjKCk7CkBAIC01MywxOSArNTIsOSBAQCBwcml2YXRlOgogICAgIE9TU3RhdHVz
IHJlbmRlcihVSW50MzIgbnVtYmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCogaW9EYXRhKTsK
ICAgICB2b2lkIHNldElzUGxheWluZyhib29sKTsKIAotICAgIHZpcnR1YWwgTWVkaWFTZXNzaW9u
OjpNZWRpYVR5cGUgbWVkaWFUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gTWVkaWFTZXNz
aW9uOjpXZWJBdWRpbzsgfQotICAgIHZpcnR1YWwgTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgcHJl
c2VudGF0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIE1lZGlhU2Vzc2lvbjo6V2ViQXVkaW87IH0K
LSAgICB2aXJ0dWFsIGJvb2wgY2FuUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kcygpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVS
ZW1vdGVDb250cm9sQ29tbWFuZChNZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlw
ZSkgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCBib29sIG92ZXJyaWRlQmFja2dyb3VuZFBsYXli
YWNrUmVzdHJpY3Rpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotCiAgICAg
dmlydHVhbCB2b2lkIHN0YXJ0KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgaXNQbGF5aW5nKCkgb3ZlcnJpZGUgeyByZXR1cm4g
bV9pc1BsYXlpbmc7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBwYXVzZVBsYXliYWNrKCkgb3ZlcnJp
ZGUgeyBzdG9wKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lUGxheWJhY2soKSBvdmVycmlk
ZSB7IHN0YXJ0KCk7IH0KLQogICAgIHZpcnR1YWwgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQogCiAgICAgQXVkaW9Vbml0IG1fb3V0cHV0
VW5pdDsKQEAgLTc0LDEwICs2Myw2IEBAIHByaXZhdGU6CiAKICAgICBmbG9hdCBtX3NhbXBsZVJh
dGU7CiAgICAgYm9vbCBtX2lzUGxheWluZzsKLQotI2lmIFVTRShBVURJT19TRVNTSU9OKQotICAg
IHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVNlc3Npb24+IG1fbWVkaWFTZXNzaW9uOwotI2VuZGlmCiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMuY3BwCmluZGV4IGM5MmEzODA3ZjZiNjlj
M2FjNDU5MzEyNzg0ZDlkN2ZiODM4OTJlNDUuLjFkMjg0ZjZjNTFmMDUwZTM1MzdjOWJmZmVmNTIy
M2NmYmI0MzM1ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21h
Yy9BdWRpb1Nlc3Npb25NYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L21hYy9BdWRpb1Nlc3Npb25NYWMuY3BwCkBAIC0xMDcsOSArMTA3LDEwIEBAIHNpemVfdCBBdWRp
b1Nlc3Npb246Om51bWJlck9mT3V0cHV0Q2hhbm5lbHMoKSBjb25zdAogICAgIHJldHVybiAwOwog
fQogCi12b2lkIEF1ZGlvU2Vzc2lvbjo6c2V0QWN0aXZlKGJvb2wpCitib29sIEF1ZGlvU2Vzc2lv
bjo6dHJ5VG9TZXRBY3RpdmUoYm9vbCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiB0cnVlOwogfQogCiBzaXplX3QgQXVkaW9TZXNzaW9uOjpwcmVmZXJyZWRCdWZmZXJTaXpl
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9N
ZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L21hYy9NZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcAppbmRleCBhYWZjYmQyNDgwYmNlZjMyZWFk
ZDhhNzg0NjY1YWQxYTQ5YzYyNDA1Li5mNWIyODg1MGRkNDE4ZTdmMDNmNjE1NzEwZjVhZjcxM2Zl
ODFkOWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvTWVk
aWFTZXNzaW9uTWFuYWdlck1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vbWFjL01lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwCkBAIC01Nyw5ICs1Nyw2IEBAIHZvaWQg
TWVkaWFTZXNzaW9uTWFuYWdlcjo6dXBkYXRlU2Vzc2lvblN0YXRlKCkKICAgICB9CiAKICNpZiBQ
TEFURk9STShJT1MpCi0gICAgaWYgKGFjdGl2ZUF1ZGlvU2Vzc2lvblJlcXVpcmVkKCkpCi0gICAg
ICAgIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnNldEFjdGl2ZSh0cnVlKTsKLQogICAg
IGlmICghU2V0dGluZ3M6OnNob3VsZE1hbmFnZUF1ZGlvU2Vzc2lvbkNhdGVnb3J5KCkpCiAgICAg
ICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDJkZTRj
Mjc0MDNkMGJkNGM5MDJhYmIxOGJjZGQ0YzEyZjdmYzljNTcuLjg5ZDFmOGJjMTFmNWFmNjc5YzA2
NzUxMWY2OTRlNzIxZWNjZDFhMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
QEAgLTI0NjcsNiArMjQ2Nyw4IEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRNZWRpYVNlc3Npb25SZXN0
cmljdGlvbnMoY29uc3QgU3RyaW5nJiBtZWRpYVR5cGVTdHJpbmcsIGNvbnN0CiAgICAgICAgIHJl
c3RyaWN0aW9ucyArPSBNZWRpYVNlc3Npb25NYW5hZ2VyOjpCYWNrZ3JvdW5kUHJvY2Vzc1BsYXli
YWNrUmVzdHJpY3RlZDsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocmVzdHJpY3Rpb25zU3Ry
aW5nLCAiQmFja2dyb3VuZFRhYlBsYXliYWNrUmVzdHJpY3RlZCIpKQogICAgICAgICByZXN0cmlj
dGlvbnMgKz0gTWVkaWFTZXNzaW9uTWFuYWdlcjo6QmFja2dyb3VuZFRhYlBsYXliYWNrUmVzdHJp
Y3RlZDsKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UocmVzdHJpY3Rpb25zU3RyaW5nLCAiSW50
ZXJydXB0ZWRQbGF5YmFja05vdFBlcm1pdHRlZCIpKQorICAgICAgICByZXN0cmljdGlvbnMgKz0g
TWVkaWFTZXNzaW9uTWFuYWdlcjo6SW50ZXJydXB0ZWRQbGF5YmFja05vdFBlcm1pdHRlZDsKIAog
ICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5hZGRSZXN0cmljdGlvbiht
ZWRpYVR5cGUsIHJlc3RyaWN0aW9ucyk7CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjI4ZmRhMWExYjY1NjUzMjVmNjAy
NDBmMmE4MzE2YzAxNmJmMWVhZC4uNWI3NzVjNTBiZjcyMzA3MDEyMzk4ZmZkOGFhOGJjYTVkMTY1
ZDExOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE1LTAzLTI4ICBKZXIgTm9ibGUgIDxqZXIu
bm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFdoZW4gV2ViIEF1ZGlvIGlzIGludGVy
cnVwdGVkIGJ5IGEgcGhvbmUgY2FsbCwgaXQgY2Fubm90IGJlIHJlc3RhcnRlZC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzE5MAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2ViYXVkaW8vYXVkaW9j
b250ZXh0LXN0YXRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViYXVkaW8vYXVk
aW9jb250ZXh0LXN0YXRlLWludGVycnVwdGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogd2ViYXVkaW8vYXVkaW9jb250ZXh0LXN0YXRlLWludGVycnVwdGVkLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHdlYmF1ZGlvL2F1ZGlvY29udGV4dC1zdGF0ZS5odG1sOiBBZGRlZC4KKwogMjAx
NS0wMy0yNiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgQXBw
bHkgQ29udGVudEV4dGVuc2lvbiBhY3Rpb25zIGFmdGVyIHJlZGlyZWN0cy4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvY29udGV4dC1zdGF0ZS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb2NvbnRleHQtc3RhdGUtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjVhNjk2NWZiZGFhY2RjMDc5ZTUzOTM5ODZlNzFhYjQwZDcyMTZmNDAKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb2NvbnRleHQtc3RhdGUtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMjYgQEAKK0Jhc2ljIHRlc3RzIGZvciBBdWRpb05vZGUgQVBJLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1MgY29udGV4dC5zdGF0ZSBpcyAic3Vz
cGVuZGVkIgorbm9kZS5jb25uZWN0KGNvbnRleHQuZGVzdGluYXRpb24pCitQQVNTIGNvbnRleHQu
c3RhdGUgaXMgInJ1bm5pbmciCitDYWxsaW5nIGNvbnRleHQuc3VzcGVuZCgpCitQQVNTIGNvbnRl
eHQuc3VzcGVuZCgpIHByb21pc2UgcmVzb2x2ZWQKK1BBU1MgY29udGV4dC5zdGF0ZSBpcyAic3Vz
cGVuZGVkIgorQ2FsbGluZyBjb250ZXh0LnJlc3VtZSgpCitQQVNTIGNvbnRleHQucmVzdW1lKCkg
cHJvbWlzZSByZXNvbHZlZAorUEFTUyBjb250ZXh0LnN0YXRlIGlzICJydW5uaW5nIgorQ2FsbGlu
ZyBjb250ZXh0LmNsb3NlKCkKK1BBU1MgY29udGV4dC5jbG9zZSgpIHByb21pc2UgcmVzb2x2ZWQK
K1BBU1MgY29udGV4dC5zdGF0ZSBpcyAiY2xvc2VkIgorQ2FsbGluZyBjb250ZXh0LnJlc3VtZSgp
IChzaG91bGQgZmFpbCkKK1BBU1MgY29udGV4dC5yZXN1bWUoKSBwcm9taXNlIHJlamVjdGVkIChj
b3JyZWN0bHkpCitQQVNTIGNvbnRleHQuc3RhdGUgaXMgImNsb3NlZCIKK0NhbGxpbmcgY29udGV4
dC5zdXNwZW5kKCkgKHNob3VsZCBmYWlsKQorUEFTUyBjb250ZXh0LnJlc3VtZSgpIHByb21pc2Ug
cmVqZWN0ZWQgKGNvcnJlY3RseSkKK1BBU1MgY29udGV4dC5zdGF0ZSBpcyAiY2xvc2VkIgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvY29udGV4dC1zdGF0ZS1pbnRlcnJ1cHRlZC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb2NvbnRleHQtc3RhdGUtaW50
ZXJydXB0ZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzODUxMTFhNjZlZDdiZjZkNDgxZjRi
NmRmNzk0ZjY3YWY0NWU4NmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRp
by9hdWRpb2NvbnRleHQtc3RhdGUtaW50ZXJydXB0ZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
NTAgQEAKK0Jhc2ljIHRlc3RzIGZvciBBdWRpb05vZGUgQVBJLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKK1BBU1MgY29udGV4dC5zdGF0ZSBpcyAic3VzcGVuZGVkIgorbm9kZS5jb25u
ZWN0KGNvbnRleHQuZGVzdGluYXRpb24pCitFVkVOVCBzdGF0ZWNoYW5nZQorUEFTUyBjb250ZXh0
LnN0YXRlIGlzICJydW5uaW5nIgorCitUZXN0IDE6IHJlc3VtZSgpIHdoaWxlIGludGVycnVwdGVk
IGlzIHJlc29sdmVkIGFmdGVyIHRoZSBpbnRlcnJ1cHRpb24gZW5kcy4KK2ludGVybmFscy5iZWdp
bk1lZGlhU2Vzc2lvbkludGVycnVwdGlvbigpCitFVkVOVCBzdGF0ZWNoYW5nZQorUEFTUyBjb250
ZXh0LnN0YXRlIGlzICJpbnRlcnJ1cHRlZCIKK2ludGVybmFscy5zZXRNZWRpYVNlc3Npb25SZXN0
cmljdGlvbnMoIldlYkF1ZGlvIiwgIkludGVycnVwdGVkUGxheWJhY2tOb3RQZXJtaXR0ZWQiKQor
Q2FsbGluZyBjb250ZXh0LnJlc3VtZSgpCitEZWxheWluZyAxMDBtcworUEFTUyBjb250ZXh0LnN0
YXRlIGlzICJpbnRlcnJ1cHRlZCIKK2ludGVybmFscy5lbmRNZWRpYVNlc3Npb25JbnRlcnJ1cHRp
b24oIk1heVJlc3VtZVBsYXlpbmciKQorUEFTUyBjb250ZXh0LnJlc3VtZSgpIHByb21pc2UgcmVz
b2x2ZWQKK1BBU1MgY29udGV4dC5zdGF0ZSBpcyAicnVubmluZyIKKworVGVzdCAyOiByZXN1bWUo
KSB3aGlsZSBpbnRlcnJ1cHRlZCB3aWxsIGNhdXNlIGludGVycnVwdGlvbiB0byBlbmQuCitpbnRl
cm5hbHMuYmVnaW5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oKQorRVZFTlQgc3RhdGVjaGFuZ2UK
K1BBU1MgY29udGV4dC5zdGF0ZSBpcyAiaW50ZXJydXB0ZWQiCitpbnRlcm5hbHMuc2V0TWVkaWFT
ZXNzaW9uUmVzdHJpY3Rpb25zKCJXZWJBdWRpbyIsICIiKQorQ2FsbGluZyBjb250ZXh0LnJlc3Vt
ZSgpCitQQVNTIGNvbnRleHQucmVzdW1lKCkgcHJvbWlzZSByZXNvbHZlZAorUEFTUyBjb250ZXh0
LnN0YXRlIGlzICJydW5uaW5nIgorCitUZXN0IDM6IHJ1bm5pbmcgQXVkaW9Db250ZXh0cyB3aWxs
IG5vdCByZXN1bWUgYWZ0ZXIgYW4gaW50ZXJydXB0aW9uIGVuZHMuCitpbnRlcm5hbHMuYmVnaW5N
ZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oKQorRVZFTlQgc3RhdGVjaGFuZ2UKK1BBU1MgY29udGV4
dC5zdGF0ZSBpcyAiaW50ZXJydXB0ZWQiCitpbnRlcm5hbHMuZW5kTWVkaWFTZXNzaW9uSW50ZXJy
dXB0aW9uKCIiKQorRVZFTlQgc3RhdGVjaGFuZ2UKK1BBU1MgY29udGV4dC5zdGF0ZSBpcyAic3Vz
cGVuZGVkIgorCitUZXN0IDQ6IHJlc3VtZSgpIHdoaWxlIGludGVycnVwdGVkIHdpbGwgbm90IHJl
c3VtZSBwbGF5YmFjayBhZnRlciBhbiBpbnRlcnJ1cHRpb24uCitpbnRlcm5hbHMuYmVnaW5NZWRp
YVNlc3Npb25JbnRlcnJ1cHRpb24oKQorRVZFTlQgc3RhdGVjaGFuZ2UKK1BBU1MgY29udGV4dC5z
dGF0ZSBpcyAiaW50ZXJydXB0ZWQiCitDYWxsaW5nIGNvbnRleHQucmVzdW1lKCkKK2ludGVybmFs
cy5lbmRNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oIiIpCitFVkVOVCBzdGF0ZWNoYW5nZQorUEFT
UyBjb250ZXh0LnN0YXRlIGlzICJzdXNwZW5kZWQiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVk
aW8vYXVkaW9jb250ZXh0LXN0YXRlLWludGVycnVwdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJh
dWRpby9hdWRpb2NvbnRleHQtc3RhdGUtaW50ZXJydXB0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMDk2
MjA2MmUyYTNiZGUzZjI3ZDI2ODBjMzQ4MmQyZGEwNDJkMDNlCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9jb250ZXh0LXN0YXRlLWludGVycnVwdGVkLmh0bWwK
QEAgLTAsMCArMSwxNTAgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJyZXNvdXJjZXMvYXVkaW8tdGVzdGluZy5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignQmFz
aWMgdGVzdHMgZm9yIEF1ZGlvTm9kZSBBUEkuJyk7CisKK3ZhciBjb250ZXh0ID0gbnVsbDsKK3Zh
ciBub2RlID0gbnVsbDsKKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKyAgICAKKyAgICB3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7CisKKyAgICBjb250ZXh0ID0gbmV3IHdlYmtpdEF1ZGlvQ29udGV4dCgp
OworCisgICAgc2hvdWxkQmUoJ2NvbnRleHQuc3RhdGUnLCAnInN1c3BlbmRlZCInKTsKKyAgICBj
b250ZXh0Lm9uc3RhdGVjaGFuZ2UgPSBiZWdhblJ1bm5pbmc7CisKKyAgICBub2RlID0gY29udGV4
dC5jcmVhdGVCdWZmZXJTb3VyY2UoKTsKKyAgICBldmFsQW5kTG9nKCdub2RlLmNvbm5lY3QoY29u
dGV4dC5kZXN0aW5hdGlvbiknKTsKKworfQorCitmdW5jdGlvbiBiZWdhblJ1bm5pbmcoZSkgewor
ICAgIGRlYnVnKCdFVkVOVCAnICsgZXZlbnQudHlwZSk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQu
c3RhdGUnLCAnInJ1bm5pbmciJyk7CisKKyAgICBkZWJ1ZygnJyk7CisgICAgZGVidWcoJ1Rlc3Qg
MTogcmVzdW1lKCkgd2hpbGUgaW50ZXJydXB0ZWQgaXMgcmVzb2x2ZWQgYWZ0ZXIgdGhlIGludGVy
cnVwdGlvbiBlbmRzLicpOworCisgICAgY29udGV4dC5vbnN0YXRlY2hhbmdlID0gZmlyc3RJbnRl
cnJ1cHRpb25TdGFydGVkOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBldmFs
QW5kTG9nKCdpbnRlcm5hbHMuYmVnaW5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oKScpOworCit9
CisKK2Z1bmN0aW9uIGZpcnN0SW50ZXJydXB0aW9uU3RhcnRlZChlKSB7CisgICAgZGVidWcoJ0VW
RU5UICcgKyBldmVudC50eXBlKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5zdGF0ZScsICciaW50
ZXJydXB0ZWQiJyk7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGV2YWxBbmRM
b2coJ2ludGVybmFscy5zZXRNZWRpYVNlc3Npb25SZXN0cmljdGlvbnMoIldlYkF1ZGlvIiwgIklu
dGVycnVwdGVkUGxheWJhY2tOb3RQZXJtaXR0ZWQiKScpOworCisgICAgY29udGV4dC5vbnN0YXRl
Y2hhbmdlID0gbnVsbDsKKworICAgIGRlYnVnKCdDYWxsaW5nIGNvbnRleHQucmVzdW1lKCknKTsK
KyAgICBjb250ZXh0LnJlc3VtZSgpLnRoZW4oZmlyc3RSZXN1bWVTdWNjZWVkZWQpOworICAgIGRl
YnVnKCdEZWxheWluZyAxMDBtcycpOworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAg
ICAgIHNob3VsZEJlKCdjb250ZXh0LnN0YXRlJywgJyJpbnRlcnJ1cHRlZCInKTsKKyAgICAgICAg
aWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBldmFsQW5kTG9nKCdpbnRlcm5hbHMu
ZW5kTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCJNYXlSZXN1bWVQbGF5aW5nIiknKTsKKyAgICB9
LCAxMDApOworfQorCitmdW5jdGlvbiBmaXJzdFJlc3VtZVN1Y2NlZWRlZCgpIHsKKyAgICB0ZXN0
UGFzc2VkKCdjb250ZXh0LnJlc3VtZSgpIHByb21pc2UgcmVzb2x2ZWQnKTsKKyAgICBzaG91bGRC
ZSgnY29udGV4dC5zdGF0ZScsICcicnVubmluZyInKTsKKworICAgIGRlYnVnKCcnKTsKKyAgICBk
ZWJ1ZygnVGVzdCAyOiByZXN1bWUoKSB3aGlsZSBpbnRlcnJ1cHRlZCB3aWxsIGNhdXNlIGludGVy
cnVwdGlvbiB0byBlbmQuJykKKworICAgIGNvbnRleHQub25zdGF0ZWNoYW5nZSA9IHNlY29uZElu
dGVycnVwdGlvblN0YXJ0ZWQ7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGV2
YWxBbmRMb2coJ2ludGVybmFscy5iZWdpbk1lZGlhU2Vzc2lvbkludGVycnVwdGlvbigpJyk7Cit9
CisKK2Z1bmN0aW9uIHNlY29uZEludGVycnVwdGlvblN0YXJ0ZWQoZSkgeworICAgIGRlYnVnKCdF
VkVOVCAnICsgZXZlbnQudHlwZSk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuc3RhdGUnLCAnImlu
dGVycnVwdGVkIicpOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBldmFsQW5k
TG9nKCdpbnRlcm5hbHMuc2V0TWVkaWFTZXNzaW9uUmVzdHJpY3Rpb25zKCJXZWJBdWRpbyIsICIi
KScpOworCisgICAgY29udGV4dC5vbnN0YXRlY2hhbmdlID0gbnVsbDsKKworICAgIGRlYnVnKCdD
YWxsaW5nIGNvbnRleHQucmVzdW1lKCknKTsKKyAgICBjb250ZXh0LnJlc3VtZSgpLnRoZW4oc2Vj
b25kUmVzdW1lU3VjY2VlZGVkKTsKK30KKworZnVuY3Rpb24gc2Vjb25kUmVzdW1lU3VjY2VlZGVk
KCkgeworICAgIHRlc3RQYXNzZWQoJ2NvbnRleHQucmVzdW1lKCkgcHJvbWlzZSByZXNvbHZlZCcp
OworICAgIHNob3VsZEJlKCdjb250ZXh0LnN0YXRlJywgJyJydW5uaW5nIicpOworCisgICAgZGVi
dWcoJycpOworICAgIGRlYnVnKCdUZXN0IDM6IHJ1bm5pbmcgQXVkaW9Db250ZXh0cyB3aWxsIG5v
dCByZXN1bWUgYWZ0ZXIgYW4gaW50ZXJydXB0aW9uIGVuZHMuJykKKworICAgIGNvbnRleHQub25z
dGF0ZWNoYW5nZSA9IHRoaXJkSW50ZXJydXB0aW9uU3RhcnRlZDsKKyAgICBpZiAod2luZG93Lmlu
dGVybmFscykKKyAgICAgICAgZXZhbEFuZExvZygnaW50ZXJuYWxzLmJlZ2luTWVkaWFTZXNzaW9u
SW50ZXJydXB0aW9uKCknKTsKK30KKworZnVuY3Rpb24gdGhpcmRJbnRlcnJ1cHRpb25TdGFydGVk
KCkgeworICAgIGRlYnVnKCdFVkVOVCAnICsgZXZlbnQudHlwZSk7CisgICAgc2hvdWxkQmUoJ2Nv
bnRleHQuc3RhdGUnLCAnImludGVycnVwdGVkIicpOworCisgICAgY29udGV4dC5vbnN0YXRlY2hh
bmdlID0gdGhpcmRJbnRlcnJ1cHRpb25FbmRlZDsKKyAgICBpZiAod2luZG93LmludGVybmFscykK
KyAgICAgICAgZXZhbEFuZExvZygnaW50ZXJuYWxzLmVuZE1lZGlhU2Vzc2lvbkludGVycnVwdGlv
bigiIiknKTsKK30KKworZnVuY3Rpb24gdGhpcmRJbnRlcnJ1cHRpb25FbmRlZCgpIHsKKyAgICBk
ZWJ1ZygnRVZFTlQgJyArIGV2ZW50LnR5cGUpOworICAgIHNob3VsZEJlKCdjb250ZXh0LnN0YXRl
JywgJyJzdXNwZW5kZWQiJyk7CisKKyAgICBkZWJ1ZygnJyk7CisgICAgZGVidWcoJ1Rlc3QgNDog
cmVzdW1lKCkgd2hpbGUgaW50ZXJydXB0ZWQgd2lsbCBub3QgcmVzdW1lIHBsYXliYWNrIGFmdGVy
IGFuIGludGVycnVwdGlvbi4nKQorCisgICAgY29udGV4dC5vbnN0YXRlY2hhbmdlID0gZm91cnRo
SW50ZXJydXB0aW9uU3RhcnRlZDsKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAg
ZXZhbEFuZExvZygnaW50ZXJuYWxzLmJlZ2luTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCknKTsK
K30KKworZnVuY3Rpb24gZm91cnRoSW50ZXJydXB0aW9uU3RhcnRlZCgpIHsKKyAgICBkZWJ1Zygn
RVZFTlQgJyArIGV2ZW50LnR5cGUpOworICAgIHNob3VsZEJlKCdjb250ZXh0LnN0YXRlJywgJyJp
bnRlcnJ1cHRlZCInKTsKKworICAgIGNvbnRleHQub25zdGF0ZWNoYW5nZSA9IGZvdXJ0aEludGVy
cnVwdGlvbkVuZGVkOworCisgICAgZGVidWcoJ0NhbGxpbmcgY29udGV4dC5yZXN1bWUoKScpOwor
ICAgIGNvbnRleHQucmVzdW1lKCk7CisKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAg
ICAgZXZhbEFuZExvZygnaW50ZXJuYWxzLmVuZE1lZGlhU2Vzc2lvbkludGVycnVwdGlvbigiIikn
KTsKK30KKworZnVuY3Rpb24gZm91cnRoSW50ZXJydXB0aW9uRW5kZWQoKSB7CisgICAgZGVidWco
J0VWRU5UICcgKyBldmVudC50eXBlKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5zdGF0ZScsICci
c3VzcGVuZGVkIicpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitydW5UZXN0KCk7CisKKzwv
c2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRp
by9hdWRpb2NvbnRleHQtc3RhdGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvY29u
dGV4dC1zdGF0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1ZmI0YzViMWMzM2YwOTdiODEzZGQxNmMwZjIx
NTgxODVhOTQ3NzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRp
b2NvbnRleHQtc3RhdGUuaHRtbApAQCAtMCwwICsxLDEwOSBAQAorPCFET0NUWVBFIGh0bWw+CisK
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InJlc291cmNl
cy9hdWRpby10ZXN0aW5nLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+Cis8ZGl2IGlk
PSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlw
dD4KK2Rlc2NyaXB0aW9uKCdCYXNpYyB0ZXN0cyBmb3IgQXVkaW9Ob2RlIEFQSS4nKTsKKwordmFy
IGNvbnRleHQgPSBudWxsOwordmFyIG5vZGUgPSBudWxsOworCitmdW5jdGlvbiBydW5UZXN0KCkg
eworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgfQorICAg
IAorICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIGNvbnRleHQgPSBuZXcg
d2Via2l0QXVkaW9Db250ZXh0KCk7CisKKyAgICBzaG91bGRCZSgnY29udGV4dC5zdGF0ZScsICci
c3VzcGVuZGVkIicpOworCisgICAgbm9kZSA9IGNvbnRleHQuY3JlYXRlQnVmZmVyU291cmNlKCk7
CisgICAgZXZhbEFuZExvZygnbm9kZS5jb25uZWN0KGNvbnRleHQuZGVzdGluYXRpb24pJyk7CisK
KyAgICBzaG91bGRCZSgnY29udGV4dC5zdGF0ZScsICcicnVubmluZyInKTsKKworICAgIGRlYnVn
KCdDYWxsaW5nIGNvbnRleHQuc3VzcGVuZCgpJyk7CisgICAgY29udGV4dC5zdXNwZW5kKCkudGhl
bihzdXNwZW5kU3VjY2VlZGVkLCBzdXNwZW5kRmFpbGVkKTsKK30KKworZnVuY3Rpb24gc3VzcGVu
ZEZhaWxlZCgpIHsKKyAgICB0ZXN0RmFpbGVkKCdjb250ZXh0LnN1c3BlbmQoKSBwcm9taXNlIHJl
amVjdGVkJyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHN1c3BlbmRTdWNj
ZWVkZWQoKSB7CisgICAgdGVzdFBhc3NlZCgnY29udGV4dC5zdXNwZW5kKCkgcHJvbWlzZSByZXNv
bHZlZCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0LnN0YXRlJywgJyJzdXNwZW5kZWQiJyk7CisK
KyAgICBkZWJ1ZygnQ2FsbGluZyBjb250ZXh0LnJlc3VtZSgpJyk7CisgICAgY29udGV4dC5yZXN1
bWUoKS50aGVuKHJlc3VtZVN1Y2NlZWRlZCwgcmVzdW1lRmFpbGVkKTsKK30KKworZnVuY3Rpb24g
cmVzdW1lRmFpbGVkKCkgeworICAgIHRlc3RGYWlsZWQoJ2NvbnRleHQucmVzdW1lKCkgcHJvbWlz
ZSByZWplY3RlZCcpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitmdW5jdGlvbiByZXN1bWVT
dWNjZWVkZWQoKSB7CisgICAgdGVzdFBhc3NlZCgnY29udGV4dC5yZXN1bWUoKSBwcm9taXNlIHJl
c29sdmVkJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuc3RhdGUnLCAnInJ1bm5pbmciJyk7CisK
KyAgICBkZWJ1ZygnQ2FsbGluZyBjb250ZXh0LmNsb3NlKCknKTsKKyAgICBjb250ZXh0LmNsb3Nl
KCkudGhlbihjbG9zZVN1Y2NlZWRlZCwgY2xvc2VGYWlsZWQpOworfQorCitmdW5jdGlvbiBjbG9z
ZUZhaWxlZCgpIHsgCisgICAgdGVzdEZhaWxlZCgnY29udGV4dC5jbG9zZSgpIHByb21pc2UgcmVq
ZWN0ZWQnKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gY2xvc2VTdWNjZWVk
ZWQoKSB7CisgICAgdGVzdFBhc3NlZCgnY29udGV4dC5jbG9zZSgpIHByb21pc2UgcmVzb2x2ZWQn
KTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5zdGF0ZScsICciY2xvc2VkIicpOworCisgICAgZGVi
dWcoJ0NhbGxpbmcgY29udGV4dC5yZXN1bWUoKSAoc2hvdWxkIGZhaWwpJyk7CisgICAgY29udGV4
dC5yZXN1bWUoKS50aGVuKHJlc3VtZVN1Y2NlZWRlZEluY29ycmVjdGx5LCByZXN1bWVGYWlsZWRD
b3JyZWN0bHkpOworfQorCitmdW5jdGlvbiByZXN1bWVTdWNjZWVkZWRJbmNvcnJlY3RseSgpIHsK
KyAgICB0ZXN0RmFpbGVkKCdjb250ZXh0LnJlc3VtZSgpIHByb21pc2UgcmVzb2x2ZWQgKHNob3Vs
ZCBoYXZlIHJlamVjdGVkKScpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitmdW5jdGlvbiBy
ZXN1bWVGYWlsZWRDb3JyZWN0bHkoKSB7CisgICAgdGVzdFBhc3NlZCgnY29udGV4dC5yZXN1bWUo
KSBwcm9taXNlIHJlamVjdGVkIChjb3JyZWN0bHkpJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQu
c3RhdGUnLCAnImNsb3NlZCInKTsKKworICAgIGRlYnVnKCdDYWxsaW5nIGNvbnRleHQuc3VzcGVu
ZCgpIChzaG91bGQgZmFpbCknKTsKKyAgICBjb250ZXh0LnN1c3BlbmQoKS50aGVuKHN1c3BlbmRT
dWNjZWVkZWRJbmNvcnJlY3RseSwgc3VzcGVuZEZhaWxlZENvcnJlY3RseSk7Cit9CisKK2Z1bmN0
aW9uIHN1c3BlbmRTdWNjZWVkZWRJbmNvcnJlY3RseSgpIHsKKyAgICB0ZXN0RmFpbGVkKCdjb250
ZXh0LnN1c3BlbmQoKSBwcm9taXNlIHJlc29sdmVkIChzaG91bGQgaGF2ZSByZWplY3RlZCknKTsK
KyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gc3VzcGVuZEZhaWxlZENvcnJlY3Rs
eSgpIHsKKyAgICB0ZXN0UGFzc2VkKCdjb250ZXh0LnJlc3VtZSgpIHByb21pc2UgcmVqZWN0ZWQg
KGNvcnJlY3RseSknKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5zdGF0ZScsICciY2xvc2VkIicp
OworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitydW5UZXN0KCk7CisKKzwvc2NyaXB0PgorCis8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249683</attachid>
            <date>2015-03-29 08:13:23 -0700</date>
            <delta_ts>2015-03-29 08:32:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143190-20150329081242.patch</filename>
            <type>text/plain</type>
            <size>63890</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyMDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGY4MDEzZmVhNWNkMGEy
ZTIwODRkZjA0MWFiNWM4NzFlOWQ2YWM1Yi4uYTk4ZTA2M2VlYjkxNWZmYTY3ZmZlMDUyYjQ2NDA5
NDIyOGZmYmUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMyBAQAorMjAxNS0wMy0yOCAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBXaGVuIFdlYiBB
dWRpbyBpcyBpbnRlcnJ1cHRlZCBieSBhIHBob25lIGNhbGwsIGl0IGNhbm5vdCBiZSByZXN0YXJ0
ZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMx
OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0
czogd2ViYXVkaW8vYXVkaW9jb250ZXh0LXN0YXRlLWludGVycnVwdGVkLmh0bWwKKyAgICAgICAg
ICAgICAgIHdlYmF1ZGlvL2F1ZGlvY29udGV4dC1zdGF0ZS5odG1sCisKKyAgICAgICAgSW1wbGVt
ZW50IHRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhbmQgcHJvcGVydGllcyBmcm9tIHRoZSBXZWIgQXVk
aW8gc3BlYzoKKyAgICAgICAgY2xvc2UoKSwgc3VzcGVuZCgpLCByZXN1bWUoKSwgb25zdGF0ZWNo
YW5nZS4KKworICAgICAgICBBdWRpb0NvbnRleHQgd2lsbCB0YWtlIG1vcmUgcmVzcG9uc2liaWxp
dHkgZm9yIHRyYWNraW5nIHN0YXRlIGFuZCBpbnRlcnJ1cHRpb25zIChhbmQKKyAgICAgICAgQXVk
aW9EZXN0aW5hdGlvbiB3aWxsIGdpdmUgdXAgdGhhdCByZXNwb25zaWJpbGl0eSkuIFRoaXMgbWVh
bnMgQXVkaW9Db250ZXh0IG11c3QgYmUgYQorICAgICAgICBNZWRpYVNlc3Npb25DbGllbnQsIGFu
ZCBvd24gaXRzIG93biBNZWRpYVNlc3Npb24uIEluIHJldHVybiwgQXVkaW9EZXN0aW5hdGlvbklP
UyBhbmQgCisgICAgICAgIEF1ZGlvRGVzdGluYXRpb25NYWMgcmVsaW5xdWlzaCBib3RoLgorCisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9Db250ZXh0OjpBdWRpb0NvbnRleHQpOiBTZXQgZGVmYXVsdCB2YWx1ZXMgaW4g
aGVhZGVyLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0Ojp1bmluaXRpYWxpemUpOiBD
YWxsIHNldFN0YXRlKCkgaW5zdGVhZCBvZiBzZXR0aW5nIG1fc3RhdGUuCisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0NvbnRleHQ6OmFkZFJlYWN0aW9uKTogQWRkZWQuIEFwcGVuZCB0aGUgY2FsbGJh
Y2sgdG8gdGhlIGFwcHJvcHJpYXRlIHZlY3RvciBmb3IgdGhlIHN0YXRlLgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9Db250ZXh0OjpzZXRTdGF0ZSk6IEFkZGVkLiBGaXJlIGV2ZW50cyBhbmQgcmVz
b2x2ZSB0aGUgYXBwcm9wcmlhdGUgcmVhY3Rpb24gY2FsbGJhY2tzIGZvciB0aGUgbmV3IHN0YXRl
LgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpzdGF0ZSk6IFJldHVybiBhIHN0cmlu
ZyByZXByZXNlbnRpbmcgdGhlIGNvbnRleHQncyBzdGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvQ29udGV4dDo6c3RvcCk6IENsb3NlIHRoZSBldmVudCBxdWV1ZS4KKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvQ29udGV4dDo6c3RhcnRSZW5kZXJpbmcpOiBDYWxsIHNldFN0YXRlKCkuCisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmZpcmVDb21wbGV0aW9uRXZlbnQpOiBDYWxsIHNl
dFN0YXRlKCkuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OnN1c3BlbmRDb250ZXh0
KTogQWRkZWQuIEFkZCByZWFjdGlvbiBjYWxsYmFjayBhbmQgY2FsbCBzdXNwZW5kKCkgb24gdGhl
IGRlc3RpbmF0aW9uIG5vZGUuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OnJlc3Vt
ZUNvbnRleHQpOiBBZGRlZC4gQWRkIHJlYWN0aW9uIGNhbGxiYWNrIGFuZCBjYWxsIHJlc3VtZSgp
IG9uIHRoZSBkZXN0aW5hdGlvbiBub2RlLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0
OjpjbG9zZUNvbnRleHQpOiBBZGRlZC4gQWRkIHJlYWN0aW9uIGNhbGxiYWNrIGFuZCBjYWxsIGNs
b3NlKCkgb24gdGhlIGRlc3RpbmF0aW9uIG5vZGUuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Nv
bnRleHQ6OnN1c3BlbmRQbGF5YmFjayk6IEFkZGVkLiBTdXNwZW5kIHBsYXliYWNrIGFuZCBzZXQg
c3RhdGUgdG8gaW50ZXJydXB0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6Om1h
eVJlc3VtZVBsYXliYWNrKTogQWRkZWQuIENvbmRpdGlvbmFsbHkgcmVzdW1lIHBsYXliYWNrLgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTQXVkaW9Db250ZXh0OjpzdXNwZW5kKTogQWRkZWQuIENyZWF0ZSBhbmQgcmV0
dXJuIGEgbmV3IFByb21pc2Ugb2JqZWN0LgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb0NvbnRl
eHQ6OnJlc3VtZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb0NvbnRleHQ6OmNs
b3NlKTogRGl0dG8uCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRs
OiBBZGQgbmV3IG1ldGhvZHMgYW5kIHByb3BlcnRpZXMuCisKKyAgICAgICAgRXh0ZW5zaXZlIG9y
Z2FuaXphdGlvbmFsIGNoYW5nZXMgd2VyZSBtYWRlIHRvIEF1ZGlvQ29udGV4dC5oIHRvIGdyb3Vw
IGluc3RhbmNlCisgICAgICAgIHZhcmlhYmxlcyB0b2dldGhlciBhbmQgYWRkIEMrKzExIGluaXRp
YWxpemVycyBpbiB0aGVpciBkZWNsYXJhdGlvbnM6CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjptZWRp
YVR5cGUpOiBNb3ZlZCBmcm9tIEF1ZGlvRGVzdGluYXRpb25Ob2RlLgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9Db250ZXh0OjpwcmVzZW50YXRpb25UeXBlKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0NvbnRleHQ6OmNhblJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6ZGlkUmVjZWl2ZVJlbW90ZUNvbnRy
b2xDb21tYW5kKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6Om92ZXJy
aWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rpb24pOiBEaXR0by4KKyAgICAgICAgCisgICAg
ICAgIE90aGVyIGNoYW5nZXMgdG8gc3VwcG9ydCB0aGUgbmV3IEF1ZGlvQ29udGV4dCBtZXRob2Rz
OgorCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnJlc3VtZSk6IEFkZCBlbXB0
eSBkZWZhdWx0IHZpcnR1YWwgbWV0aG9kLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5h
dGlvbk5vZGU6OnN1c3BlbmQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGlu
YXRpb25Ob2RlOjpjbG9zZSk6IERpdHRvLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVm
YXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRB
dWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVzdW1lKTogQWRkZWQuIFBhc3MgdG8gQXVkaW9EZXN0aW5h
dGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3Vz
cGVuZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25O
b2RlOjpjbG9zZSk6IERpdHRvLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1
ZGlvRGVzdGluYXRpb25Ob2RlLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Qcm9taXNl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFdyYXBwZXI6OnJlc29sdmUpOiBBZGQgYW4g
b3ZlcmxvYWQgZm9yIGEgbnVsbHB0ciByZXNvbHZlIHZhbHVlLgorICAgICAgICAqIGRvbS9FdmVu
dE5hbWVzLmg6IEFkZGVkICdzdGF0ZWNoYW5nZScuCisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2s6OlRhc2spOiBBZGQgYSBjb25zdHJ1Y3RvciB3aGljaCB0YWtlcyBhIHZvaWQoKSBjYWxs
YmFjay4KKworICAgICAgICBNb2RpZnkgTWVkaWFTZXNzaW9uLCBBdWRpb1Nlc3Npb24sIGFuZCBN
ZWRpYVNlc3Npb25NYW5hZ2VyIHRvIHN1cHBvcnQgdGhlIG5ldworICAgICAgICBpbnRlcnJ1cHRp
b24gYmVoYXZpb3IuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c3VzcGVuZFBsYXliYWNrKTogUmVuYW1l
ZCBmcm9tIHBhdXNlUGxheWJhY2soKS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6Om1heVJlc3VtZVBsYXliYWNrKTogUmVuYW1lZCBmcm9tIHJlc3VtZVBsYXliYWNrKCkuCisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vQXVkaW9TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6dHJ5
VG9TZXRBY3RpdmUpOiBSZW5hbWVkIGZyb20gc2V0QWN0aXZlLiBSZXR1cm4gdHJ1ZSBieSBkZWZh
dWx0LgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpzZXRBY3RpdmUpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNl
c3Npb246OmJlZ2luSW50ZXJydXB0aW9uKTogcGF1c2VQbGF5YmFjaygpIHdhcyByZW5hbWVkIHRv
IHN1c3BlbmRQbGF5YmFjaygpLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uOjplbmRJ
bnRlcnJ1cHRpb24pOiBBbHdheXMgbm90aWZ5IHRoZSBjbGllbnQsIHRlbGxpbmcgaXQgd2hldGhl
ciB0byByZXN1bWUuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246OmNsaWVudFdpbGxC
ZWdpblBsYXliYWNrKTogQmFpbCBlYXJseSBpZiByZWVudHJhbnQuICBDaGVjayB0aGUgKG5ldykg
CisgICAgICAgICAgICByZXR1cm4gdmFsdWUgb2Ygc2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKCkg
YW5kIHJlbWVtYmVyIHRvIHJlc3VtZSBvbmNlIHRoZSBpbnRlcnJ1cHRpb24gZW5kcy4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6Y2xpZW50V2lsbFBhdXNlUGxheWJhY2spOiBCYWls
IGVhcmx5IGlmIHJlZW50cmFudC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6cGF1
c2VTZXNzaW9uKTogcGF1c2VQbGF5YmFjaygpIHdhcyByZW5hbWVkIHRvIHN1c3BlbmRQbGF5YmFj
aygpLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5oOgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKTogUmV0dXJu
IGZhbHNlIGlmIG5vdCBhbGxvd2VkIHRvIGJyZWFrIGludGVycnVwdGlvbiBvciAKKyAgICAgICAg
ICAgIGlmIGFjdGl2YXRpbmcgdGhlIGF1ZGlvIHNlc3Npb24gZmFpbGVkLiBPdGhlcndpc2UsIGVu
ZCB0aGUgaW50ZXJydXB0aW9uLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lv
bk1hbmFnZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlv
bklPUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uSU9TOjpBdWRpb0Rl
c3RpbmF0aW9uSU9TKTogbV9tZWRpYVNlc3Npb24gd2FzIHJlbW92ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0Rlc3RpbmF0aW9uSU9TOjpzdGFydCk6IERpdHRvLgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmg6CisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vz
c2lvbjo6dHJ5VG9TZXRBY3RpdmUpOiBSZW5hbWVkIGZyb20gc2V0QWN0aXZlLiBSZXR1cm4gZmFs
c2UgaWYgdGhlIEFWQXVkaW9TZXNzaW9uIGNvdWxkIG5vdCBiZSBhY3RpdmF0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnNldEFjdGl2ZSk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnNlc3Npb25XaWxsQmVnaW5QbGF5YmFjayk6
IERvIG5vdCB1cGRhdGUgdGhlIG5vdyBwbGF5aW5nIGluZm8gaWYgc2Vzc2lvbiBwbGF5YmFjayB3
YXMgYmxvY2tlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlv
bk1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uTWFjOjpBdWRpb0Rl
c3RpbmF0aW9uTWFjKTogbV9tZWRpYVNlc3Npb24gd2FzIHJlbW92ZWQuCisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
U2Vzc2lvbjo6dHJ5VG9TZXRBY3RpdmUpOiBSZW5hbWVkIGZyb20gc2V0QWN0aXZlKCkuIFJldHVy
biB0cnVlIGJ5IGRlZmF1bHQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnNldEFj
dGl2ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL01lZGlhU2Vzc2lv
bk1hbmFnZXJNYWMuY3BwOgorICAgICAgICAoTWVkaWFTZXNzaW9uTWFuYWdlcjo6dXBkYXRlU2Vz
c2lvblN0YXRlKTogTm8gbG9uZ2VyIGF0dGVtcHQgdG8gYWN0aXZhdGUgdGhlIHNlc3Npb24sIGFz
IHRoaXMgaXMgZG9uZQorICAgICAgICAgICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldp
bGxCZWdpblBsYXliYWNrKCkuCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRNZWRpYVNlc3Npb25SZXN0cmljdGlvbnMpOiBB
ZGQgIkludGVycnVwdGVkUGxheWJhY2tOb3RQZXJtaXR0ZWQiLgorCiAyMDE1LTAzLTI3ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQg
d2lsbCBmaXJlICdzZWVrZWQnIGJlZm9yZSBzZWVrIGNvbXBsZXRlcywgbGVhZGluZyB0byBjdXJy
ZW50VGltZSBkaXNjb250aW51aXRpZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggYzgyMTFlM2FiZWYxMDQwZmYzNmMxNDU3YzNi
ZGYxMjFmYmNiMjhjNi4uMDQ3ZjY5OGEwMzJkZWE5ZjI3ZTFlNTZkMGQxYTMwNDU2NTc0Zjc2YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNw
cApAQCAtNDQsOSArNDQsMTEgQEAKICNpbmNsdWRlICJEZWxheU5vZGUuaCIKICNpbmNsdWRlICJE
b2N1bWVudC5oIgogI2luY2x1ZGUgIkR5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaCIKKyNpbmNsdWRl
ICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZG
VEZyYW1lLmgiCiAjaW5jbHVkZSAiR2Fpbk5vZGUuaCIKKyNpbmNsdWRlICJHZW5lcmljRXZlbnRR
dWV1ZS5oIgogI2luY2x1ZGUgIkhSVEZEYXRhYmFzZUxvYWRlci5oIgogI2luY2x1ZGUgIkhSVEZQ
YW5uZXIuaCIKICNpbmNsdWRlICJPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaCIKQEAgLTU1
LDEwICs1NywxMSBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYW5uZXJOb2RlLmgi
CiAjaW5jbHVkZSAiUGVyaW9kaWNXYXZlLmgiCi0jaW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENh
bGxTdGFjay5oPgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3Jp
cHRQcm9jZXNzb3JOb2RlLmgiCiAjaW5jbHVkZSAiV2F2ZVNoYXBlck5vZGUuaCIKKyNpbmNsdWRl
IDxpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogI2luY2x1ZGUgIk1lZGlhU3RyZWFt
LmgiCkBAIC0xMjYsMTkgKzEyOSw5IEBAIFJlZlB0cjxBdWRpb0NvbnRleHQ+IEF1ZGlvQ29udGV4
dDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAvLyBDb25z
dHJ1Y3RvciBmb3IgcmVuZGVyaW5nIHRvIHRoZSBhdWRpbyBoYXJkd2FyZS4KIEF1ZGlvQ29udGV4
dDo6QXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IEFjdGl2ZURPTU9iamVj
dCgmZG9jdW1lbnQpCi0gICAgLCBtX2lzU3RvcFNjaGVkdWxlZChmYWxzZSkKLSAgICAsIG1faXNJ
bml0aWFsaXplZChmYWxzZSkKLSAgICAsIG1faXNBdWRpb1RocmVhZEZpbmlzaGVkKGZhbHNlKQot
ICAgICwgbV9kZXN0aW5hdGlvbk5vZGUoMCkKLSAgICAsIG1faXNEZWxldGlvblNjaGVkdWxlZChm
YWxzZSkKLSAgICAsIG1fYXV0b21hdGljUHVsbE5vZGVzTmVlZFVwZGF0aW5nKGZhbHNlKQotICAg
ICwgbV9jb25uZWN0aW9uQ291bnQoMCkKLSAgICAsIG1fYXVkaW9UaHJlYWQoMCkKKyAgICAsIG1f
bWVkaWFTZXNzaW9uKE1lZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0aGlzKSkKKyAgICAsIG1fZXZlbnRR
dWV1ZShzdGQ6Om1ha2VfdW5pcXVlPEdlbmVyaWNFdmVudFF1ZXVlPigqdGhpcykpCiAgICAgLCBt
X2dyYXBoT3duZXJUaHJlYWQoVW5kZWZpbmVkVGhyZWFkSWRlbnRpZmllcikKLSAgICAsIG1faXNP
ZmZsaW5lQ29udGV4dChmYWxzZSkKLSAgICAsIG1fYWN0aXZlU291cmNlQ291bnQoMCkKLSAgICAs
IG1fcmVzdHJpY3Rpb25zKE5vUmVzdHJpY3Rpb25zKQotICAgICwgbV9zdGF0ZShTdGF0ZTo6U3Vz
cGVuZGVkKQogewogICAgIGNvbnN0cnVjdENvbW1vbigpOwogCkBAIC0xNTEsMTggKzE0NCwxMCBA
QCBBdWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQpCiAvLyBDb25z
dHJ1Y3RvciBmb3Igb2ZmbGluZSAobm9uLXJlYWx0aW1lKSByZW5kZXJpbmcuCiBBdWRpb0NvbnRl
eHQ6OkF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIHVuc2lnbmVkIG51bWJlck9mQ2hh
bm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEFj
dGl2ZURPTU9iamVjdCgmZG9jdW1lbnQpCi0gICAgLCBtX2lzU3RvcFNjaGVkdWxlZChmYWxzZSkK
LSAgICAsIG1faXNJbml0aWFsaXplZChmYWxzZSkKLSAgICAsIG1faXNBdWRpb1RocmVhZEZpbmlz
aGVkKGZhbHNlKQotICAgICwgbV9kZXN0aW5hdGlvbk5vZGUoMCkKLSAgICAsIG1fYXV0b21hdGlj
UHVsbE5vZGVzTmVlZFVwZGF0aW5nKGZhbHNlKQotICAgICwgbV9jb25uZWN0aW9uQ291bnQoMCkK
LSAgICAsIG1fYXVkaW9UaHJlYWQoMCkKLSAgICAsIG1fZ3JhcGhPd25lclRocmVhZChVbmRlZmlu
ZWRUaHJlYWRJZGVudGlmaWVyKQogICAgICwgbV9pc09mZmxpbmVDb250ZXh0KHRydWUpCi0gICAg
LCBtX2FjdGl2ZVNvdXJjZUNvdW50KDApCi0gICAgLCBtX3Jlc3RyaWN0aW9ucyhOb1Jlc3RyaWN0
aW9ucykKLSAgICAsIG1fc3RhdGUoU3RhdGU6OlN1c3BlbmRlZCkKKyAgICAsIG1fbWVkaWFTZXNz
aW9uKE1lZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0aGlzKSkKKyAgICAsIG1fZXZlbnRRdWV1ZShzdGQ6
Om1ha2VfdW5pcXVlPEdlbmVyaWNFdmVudFF1ZXVlPigqdGhpcykpCisgICAgLCBtX2dyYXBoT3du
ZXJUaHJlYWQoVW5kZWZpbmVkVGhyZWFkSWRlbnRpZmllcikKIHsKICAgICBjb25zdHJ1Y3RDb21t
b24oKTsKIApAQCAtMjc3LDcgKzI2Miw3IEBAIHZvaWQgQXVkaW9Db250ZXh0Ojp1bmluaXRpYWxp
emUoKQogICAgICAgICAtLXNfaGFyZHdhcmVDb250ZXh0Q291bnQ7CiAKICAgICAgICAgLy8gT2Zm
bGluZSBjb250ZXh0cyBtb3ZlIHRvICdDbG9zZWQnIHN0YXRlIHdoZW4gZGlzcGF0Y2hpbmcgdGhl
IGNvbXBsZXRpb24gZXZlbnQuCi0gICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6Q2xvc2VkOworICAg
ICAgICBzZXRTdGF0ZShTdGF0ZTo6Q2xvc2VkKTsKICAgICB9CiAKICAgICAvLyBHZXQgcmlkIG9m
IHRoZSBzb3VyY2VzIHdoaWNoIG1heSBzdGlsbCBiZSBwbGF5aW5nLgpAQCAtMjkxLDYgKzI3Niw1
NiBAQCBib29sIEF1ZGlvQ29udGV4dDo6aXNJbml0aWFsaXplZCgpIGNvbnN0CiAgICAgcmV0dXJu
IG1faXNJbml0aWFsaXplZDsKIH0KIAordm9pZCBBdWRpb0NvbnRleHQ6OmFkZFJlYWN0aW9uKFN0
YXRlIHN0YXRlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gcmVhY3Rpb24pCit7CisgICAgc2l6ZV90
IHN0YXRlSW5kZXggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHN0YXRlKTsKKyAgICBpZiAoc3RhdGVJ
bmRleCA+PSBtX3N0YXRlUmVhY3Rpb25zLnNpemUoKSkKKyAgICAgICAgbV9zdGF0ZVJlYWN0aW9u
cy5yZXNpemUoc3RhdGVJbmRleCArIDEpOworCisgICAgbV9zdGF0ZVJlYWN0aW9uc1tzdGF0ZUlu
ZGV4XS5hcHBlbmQocmVhY3Rpb24pOworfQorCit2b2lkIEF1ZGlvQ29udGV4dDo6c2V0U3RhdGUo
U3RhdGUgc3RhdGUpCit7CisgICAgaWYgKG1fc3RhdGUgPT0gc3RhdGUpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fc3RhdGUgPSBzdGF0ZTsKKyAgICBtX2V2ZW50UXVldWUtPmVucXVldWVFdmVu
dChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zdGF0ZWNoYW5nZUV2ZW50LCB0cnVlLCBmYWxz
ZSkpOworCisgICAgc2l6ZV90IHN0YXRlSW5kZXggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHN0YXRl
KTsKKyAgICBpZiAoc3RhdGVJbmRleCA+PSBtX3N0YXRlUmVhY3Rpb25zLnNpemUoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgVmVjdG9yPHN0ZDo6ZnVuY3Rpb248dm9pZCgpPj4gcmVhY3Rpb25z
OworICAgIG1fc3RhdGVSZWFjdGlvbnNbc3RhdGVJbmRleF0uc3dhcChyZWFjdGlvbnMpOworCisg
ICAgZm9yIChhdXRvJiByZWFjdGlvbiA6IHJlYWN0aW9ucykKKyAgICAgICAgcmVhY3Rpb24oKTsK
K30KKworY29uc3QgQXRvbWljU3RyaW5nJiBBdWRpb0NvbnRleHQ6OnN0YXRlKCkgY29uc3QKK3sK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzdXNwZW5kZWQoInN1c3Bl
bmRlZCIpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHJ1bm5pbmco
InJ1bm5pbmciKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBpbnRl
cnJ1cHRlZCgiaW50ZXJydXB0ZWQiKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWlj
U3RyaW5nPiBjbG9zZWQoImNsb3NlZCIpOworCisgICAgc3dpdGNoIChtX3N0YXRlKSB7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIEZBTExUSFJP
VUdIOworICAgIGNhc2UgU3RhdGU6OlN1c3BlbmRlZDoKKyAgICAgICAgcmV0dXJuIHN1c3BlbmRl
ZDsKKyAgICBjYXNlIFN0YXRlOjpSdW5uaW5nOgorICAgICAgICByZXR1cm4gcnVubmluZzsKKyAg
ICBjYXNlIFN0YXRlOjpJbnRlcnJ1cHRlZDoKKyAgICAgICAgcmV0dXJuIGludGVycnVwdGVkOwor
ICAgIGNhc2UgU3RhdGU6OkNsb3NlZDoKKyAgICAgICAgcmV0dXJuIGNsb3NlZDsKKyAgICB9Cit9
CisKIHZvaWQgQXVkaW9Db250ZXh0OjpzdG9wRGlzcGF0Y2godm9pZCogdXNlckRhdGEpCiB7CiAg
ICAgQXVkaW9Db250ZXh0KiBjb250ZXh0ID0gcmVpbnRlcnByZXRfY2FzdDxBdWRpb0NvbnRleHQq
Pih1c2VyRGF0YSk7CkBAIC0zMTEsNiArMzQ2LDggQEAgdm9pZCBBdWRpb0NvbnRleHQ6OnN0b3Ao
KQogCiAgICAgZG9jdW1lbnQoKS0+dXBkYXRlSXNQbGF5aW5nQXVkaW8oKTsKIAorICAgIG1fZXZl
bnRRdWV1ZS0+Y2xvc2UoKTsKKwogICAgIC8vIERvbid0IGNhbGwgdW5pbml0aWFsaXplKCkgaW1t
ZWRpYXRlbHkgaGVyZSBiZWNhdXNlIHRoZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IGlzIGluIHRo
ZSBtaWRkbGUKICAgICAvLyBvZiBkZWFsaW5nIHdpdGggYWxsIG9mIGl0cyBBY3RpdmVET01PYmpl
Y3RzIGF0IHRoaXMgcG9pbnQuIHVuaW5pdGlhbGl6ZSgpIGNhbiBkZS1yZWZlcmVuY2Ugb3RoZXIK
ICAgICAvLyBBY3RpdmVET01PYmplY3RzIHNvIGxldCdzIHNjaGVkdWxlIHVuaW5pdGlhbGl6ZSgp
IHRvIGJlIGNhbGxlZCBsYXRlci4KQEAgLTk4MCw3ICsxMDE3LDcgQEAgdm9pZCBBdWRpb0NvbnRl
eHQ6OnN0YXJ0UmVuZGVyaW5nKCkKICAgICAgICAgICAgIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rp
b24oQXVkaW9Db250ZXh0OjpSZXF1aXJlUGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rp
b24pOwogICAgIH0KICAgICBkZXN0aW5hdGlvbigpLT5zdGFydFJlbmRlcmluZygpOwotICAgIG1f
c3RhdGUgPSBTdGF0ZTo6UnVubmluZzsKKyAgICBzZXRTdGF0ZShTdGF0ZTo6UnVubmluZyk7CiB9
CiAKIHZvaWQgQXVkaW9Db250ZXh0OjptZWRpYUNhblN0YXJ0KCkKQEAgLTEwMTEsNyArMTA0OCw3
IEBAIHZvaWQgQXVkaW9Db250ZXh0OjpmaXJlQ29tcGxldGlvbkV2ZW50KCkKICAgICAgICAgcmV0
dXJuOwogICAgICAgICAKICAgICBBdWRpb0J1ZmZlciogcmVuZGVyZWRCdWZmZXIgPSBtX3JlbmRl
clRhcmdldC5nZXQoKTsKLSAgICBtX3N0YXRlID0gU3RhdGU6OkNsb3NlZDsKKyAgICBzZXRTdGF0
ZShTdGF0ZTo6Q2xvc2VkKTsKIAogICAgIEFTU0VSVChyZW5kZXJlZEJ1ZmZlcik7CiAgICAgaWYg
KCFyZW5kZXJlZEJ1ZmZlcikKQEAgLTEwMjAsNyArMTA1Nyw3IEBAIHZvaWQgQXVkaW9Db250ZXh0
OjpmaXJlQ29tcGxldGlvbkV2ZW50KCkKICAgICAvLyBBdm9pZCBmaXJpbmcgdGhlIGV2ZW50IGlm
IHRoZSBkb2N1bWVudCBoYXMgYWxyZWFkeSBnb25lIGF3YXkuCiAgICAgaWYgKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSkgewogICAgICAgICAvLyBDYWxsIHRoZSBvZmZsaW5lIHJlbmRlcmluZyBj
b21wbGV0aW9uIGV2ZW50IGxpc3RlbmVyLgotICAgICAgICBkaXNwYXRjaEV2ZW50KE9mZmxpbmVB
dWRpb0NvbXBsZXRpb25FdmVudDo6Y3JlYXRlKHJlbmRlcmVkQnVmZmVyKSk7CisgICAgICAgIG1f
ZXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KE9mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudDo6Y3Jl
YXRlKHJlbmRlcmVkQnVmZmVyKSk7CiAgICAgfQogfQogCkBAIC0xMDM0LDYgKzEwNzEsMTI3IEBA
IHZvaWQgQXVkaW9Db250ZXh0OjpkZWNyZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgpCiAgICAgLS1t
X2FjdGl2ZVNvdXJjZUNvdW50OwogfQogCit2b2lkIEF1ZGlvQ29udGV4dDo6c3VzcGVuZENvbnRl
eHQoc3RkOjpmdW5jdGlvbjx2b2lkKCk+IHN1Y2Nlc3NDYWxsYmFjaywgc3RkOjpmdW5jdGlvbjx2
b2lkKCk+IGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgQVNTRVJU
KHN1Y2Nlc3NDYWxsYmFjayk7CisgICAgQVNTRVJUKGZhaWx1cmVDYWxsYmFjayk7CisKKyAgICBp
ZiAoaXNPZmZsaW5lQ29udGV4dCgpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6U3Vz
cGVuZGVkKSB7CisgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soc3Vj
Y2Vzc0NhbGxiYWNrKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX3N0YXRl
ID09IFN0YXRlOjpDbG9zZWQgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6SW50ZXJydXB0ZWQgfHwgIW1f
ZGVzdGluYXRpb25Ob2RlKSB7CisgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9z
dFRhc2soZmFpbHVyZUNhbGxiYWNrKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGFk
ZFJlYWN0aW9uKFN0YXRlOjpTdXNwZW5kZWQsIHN1Y2Nlc3NDYWxsYmFjayk7CisKKyAgICBpZiAo
IW1fbWVkaWFTZXNzaW9uLT5jbGllbnRXaWxsUGF1c2VQbGF5YmFjaygpKQorICAgICAgICByZXR1
cm47CisKKyAgICBSZWZQdHI8QXVkaW9Db250ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOworICAgIG1f
ZGVzdGluYXRpb25Ob2RlLT5zdXNwZW5kKFtzdHJvbmdUaGlzXSB7CisgICAgICAgIHN0cm9uZ1Ro
aXMtPnNldFN0YXRlKFN0YXRlOjpTdXNwZW5kZWQpOworICAgIH0pOworfQorCit2b2lkIEF1ZGlv
Q29udGV4dDo6cmVzdW1lQ29udGV4dChzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gc3VjY2Vzc0NhbGxi
YWNrLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2Rl
JiBlYykKK3sKKyAgICBBU1NFUlQoc3VjY2Vzc0NhbGxiYWNrKTsKKyAgICBBU1NFUlQoZmFpbHVy
ZUNhbGxiYWNrKTsKKworICAgIGlmIChpc09mZmxpbmVDb250ZXh0KCkpIHsKKyAgICAgICAgZWMg
PSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICht
X3N0YXRlID09IFN0YXRlOjpSdW5uaW5nKSB7CisgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+cG9zdFRhc2soc3VjY2Vzc0NhbGxiYWNrKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQgfHwgIW1fZGVzdGluYXRpb25Ob2Rl
KSB7CisgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soZmFpbHVyZUNh
bGxiYWNrKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGFkZFJlYWN0aW9uKFN0YXRl
OjpSdW5uaW5nLCBzdWNjZXNzQ2FsbGJhY2spOworCisgICAgaWYgKCFtX21lZGlhU2Vzc2lvbi0+
Y2xpZW50V2lsbEJlZ2luUGxheWJhY2soKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRy
PEF1ZGlvQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKKyAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+
cmVzdW1lKFtzdHJvbmdUaGlzXSB7CisgICAgICAgIHN0cm9uZ1RoaXMtPnNldFN0YXRlKFN0YXRl
OjpSdW5uaW5nKTsKKyAgICB9KTsKK30KKwordm9pZCBBdWRpb0NvbnRleHQ6OmNsb3NlQ29udGV4
dChzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gc3VjY2Vzc0NhbGxiYWNrLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQoKT4sIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIEFTU0VSVChzdWNjZXNzQ2FsbGJhY2sp
OworCisgICAgaWYgKGlzT2ZmbGluZUNvbnRleHQoKSkgeworICAgICAgICBlYyA9IElOVkFMSURf
U1RBVEVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fc3RhdGUgPT0g
U3RhdGU6OkNsb3NlZCB8fCAhbV9kZXN0aW5hdGlvbk5vZGUpIHsKKyAgICAgICAgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhzdWNjZXNzQ2FsbGJhY2spOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgYWRkUmVhY3Rpb24oU3RhdGU6OkNsb3NlZCwgc3VjY2Vzc0NhbGxi
YWNrKTsKKworICAgIFJlZlB0cjxBdWRpb0NvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7CisgICAg
bV9kZXN0aW5hdGlvbk5vZGUtPmNsb3NlKFtzdHJvbmdUaGlzLCBzdWNjZXNzQ2FsbGJhY2tdIHsK
KyAgICAgICAgc3Ryb25nVGhpcy0+c2V0U3RhdGUoU3RhdGU6OkNsb3NlZCk7CisgICAgICAgIHN0
cm9uZ1RoaXMtPnVuaW5pdGlhbGl6ZSgpOworICAgIH0pOworfQorCisKK3ZvaWQgQXVkaW9Db250
ZXh0OjpzdXNwZW5kUGxheWJhY2soKQoreworICAgIGlmICghbV9kZXN0aW5hdGlvbk5vZGUgfHwg
bV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9z
dGF0ZSA9PSBTdGF0ZTo6U3VzcGVuZGVkKSB7CisgICAgICAgIGlmIChtX21lZGlhU2Vzc2lvbi0+
c3RhdGUoKSA9PSBNZWRpYVNlc3Npb246OkludGVycnVwdGVkKQorICAgICAgICAgICAgc2V0U3Rh
dGUoU3RhdGU6OkludGVycnVwdGVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJl
ZlB0cjxBdWRpb0NvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7CisgICAgbV9kZXN0aW5hdGlvbk5v
ZGUtPnN1c3BlbmQoW3N0cm9uZ1RoaXNdIHsKKyAgICAgICAgYm9vbCBpbnRlcnJ1cHRlZCA9IHN0
cm9uZ1RoaXMtPm1fbWVkaWFTZXNzaW9uLT5zdGF0ZSgpID09IE1lZGlhU2Vzc2lvbjo6SW50ZXJy
dXB0ZWQ7CisgICAgICAgIHN0cm9uZ1RoaXMtPnNldFN0YXRlKGludGVycnVwdGVkID8gU3RhdGU6
OkludGVycnVwdGVkIDogU3RhdGU6OlN1c3BlbmRlZCk7CisgICAgfSk7Cit9CisKK3ZvaWQgQXVk
aW9Db250ZXh0OjptYXlSZXN1bWVQbGF5YmFjayhib29sIHNob3VsZFJlc3VtZSkKK3sKKyAgICBp
ZiAoIW1fZGVzdGluYXRpb25Ob2RlIHx8IG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCB8fCBtX3N0
YXRlID09IFN0YXRlOjpSdW5uaW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIXNob3Vs
ZFJlc3VtZSkgeworICAgICAgICBzZXRTdGF0ZShTdGF0ZTo6U3VzcGVuZGVkKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIFJlZlB0cjxBdWRpb0NvbnRleHQ+IHN0cm9uZ1RoaXModGhp
cyk7CisgICAgbV9kZXN0aW5hdGlvbk5vZGUtPnJlc3VtZShbc3Ryb25nVGhpc10geworICAgICAg
ICBzdHJvbmdUaGlzLT5zZXRTdGF0ZShTdGF0ZTo6UnVubmluZyk7CisgICAgfSk7Cit9CisKKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCmluZGV4IGFl
ODc3MmJhMGI1M2Q3OTc3OGJiMmVmMzU5OGNiMDAwYWQxOGI0NjQuLjIwNjI3NTE4NDU2NjUyMjY1
OTdmNGY4ZTY3YmExZTQyNDgwM2QzZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0NvbnRleHQuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkV2ZW50
TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIk1lZGlhQ2Fu
U3RhcnRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgogI2luY2x1ZGUgPGF0
b21pYz4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFk
Lmg+CkBAIC01Nyw2ICs1OCw3IEBAIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiBjbGFzcyBDaGFu
bmVsTWVyZ2VyTm9kZTsKIGNsYXNzIENoYW5uZWxTcGxpdHRlck5vZGU7CiBjbGFzcyBHYWluTm9k
ZTsKK2NsYXNzIEdlbmVyaWNFdmVudFF1ZXVlOwogY2xhc3MgUGFubmVyTm9kZTsKIGNsYXNzIEF1
ZGlvTGlzdGVuZXI7CiBjbGFzcyBBdWRpb1N1bW1pbmdKdW5jdGlvbjsKQEAgLTc0LDcgKzc2LDcg
QEAgY2xhc3MgUGVyaW9kaWNXYXZlOwogLy8gQXVkaW9Db250ZXh0IGlzIHRoZSBjb3JuZXJzdG9u
ZSBvZiB0aGUgd2ViIGF1ZGlvIEFQSSBhbmQgYWxsIEF1ZGlvTm9kZXMgYXJlIGNyZWF0ZWQgZnJv
bSBpdC4KIC8vIEZvciB0aHJlYWQgc2FmZXR5IGJldHdlZW4gdGhlIGF1ZGlvIHRocmVhZCBhbmQg
dGhlIG1haW4gdGhyZWFkLCBpdCBoYXMgYSByZW5kZXJpbmcgZ3JhcGggbG9ja2luZyBtZWNoYW5p
c20uIAogCi1jbGFzcyBBdWRpb0NvbnRleHQgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QXVkaW9Db250ZXh0PiwgcHVibGljIEV2ZW50VGFyZ2V0
V2l0aElubGluZURhdGEsIHB1YmxpYyBNZWRpYUNhblN0YXJ0TGlzdGVuZXIsIHB1YmxpYyBBdWRp
b1Byb2R1Y2VyIHsKK2NsYXNzIEF1ZGlvQ29udGV4dCA6IHB1YmxpYyBBY3RpdmVET01PYmplY3Qs
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBdWRpb0NvbnRleHQ+LCBwdWJsaWMgRXZlbnRU
YXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciwgcHVibGlj
IEF1ZGlvUHJvZHVjZXIsIHByaXZhdGUgTWVkaWFTZXNzaW9uQ2xpZW50IHsKIHB1YmxpYzoKICAg
ICAvLyBDcmVhdGUgYW4gQXVkaW9Db250ZXh0IGZvciByZW5kZXJpbmcgdG8gdGhlIGF1ZGlvIGhh
cmR3YXJlLgogICAgIHN0YXRpYyBSZWZQdHI8QXVkaW9Db250ZXh0PiBjcmVhdGUoRG9jdW1lbnQm
LCBFeGNlcHRpb25Db2RlJik7CkBAIC0xMDQsNiArMTA2LDExIEBAIHB1YmxpYzoKIAogICAgIEF1
ZGlvTGlzdGVuZXIqIGxpc3RlbmVyKCkgeyByZXR1cm4gbV9saXN0ZW5lci5nZXQoKTsgfQogCisg
ICAgdm9pZCBzdXNwZW5kQ29udGV4dChzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4sIHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgcmVzdW1lQ29udGV4dChzdGQ6
OmZ1bmN0aW9uPHZvaWQoKT4sIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiwgRXhjZXB0aW9uQ29kZSYp
OworICAgIHZvaWQgY2xvc2VDb250ZXh0KHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiwgc3RkOjpmdW5j
dGlvbjx2b2lkKCk+LCBFeGNlcHRpb25Db2RlJik7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBz
dGF0ZSgpIGNvbnN0OworCiAgICAgLy8gVGhlIEF1ZGlvTm9kZSBjcmVhdGUgbWV0aG9kcyBhcmUg
Y2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZCAoZnJvbSBKYXZhU2NyaXB0KS4KICAgICBQYXNzUmVm
UHRyPEF1ZGlvQnVmZmVyU291cmNlTm9kZT4gY3JlYXRlQnVmZmVyU291cmNlKCk7CiAjaWYgRU5B
QkxFKFZJREVPKQpAQCAtMjY0LDkgKzI3MSwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgbGF6eUlu
aXRpYWxpemUoKTsKICAgICB2b2lkIHVuaW5pdGlhbGl6ZSgpOwogCisgICAgZW51bSBjbGFzcyBT
dGF0ZSB7IFN1c3BlbmRlZCwgUnVubmluZywgSW50ZXJydXB0ZWQsIENsb3NlZCB9OworICAgIHZv
aWQgc2V0U3RhdGUoU3RhdGUpOworCiAgICAgLy8gU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBjYWxs
cyBzdG9wIHR3aWNlLgogICAgIC8vIFdlJ2QgbGlrZSB0byBzY2hlZHVsZSBvbmx5IG9uZSBzdG9w
IGFjdGlvbiBmb3IgdGhlbS4KLSAgICBib29sIG1faXNTdG9wU2NoZWR1bGVkOwogICAgIHN0YXRp
YyB2b2lkIHN0b3BEaXNwYXRjaCh2b2lkKiB1c2VyRGF0YSk7CiAgICAgdm9pZCBjbGVhcigpOwog
CkBAIC0yNzksOSArMjg4LDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNQbGF5aW5n
QXVkaW8oKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcGFnZU11dGVkU3RhdGVEaWRDaGFu
Z2UoKSBvdmVycmlkZTsKIAotICAgIGJvb2wgbV9pc0luaXRpYWxpemVkOwotICAgIGJvb2wgbV9p
c0F1ZGlvVGhyZWFkRmluaXNoZWQ7Ci0KICAgICAvLyBUaGUgY29udGV4dCBpdHNlbGYga2VlcHMg
YSByZWZlcmVuY2UgdG8gYWxsIHNvdXJjZSBub2Rlcy4gIFRoZSBzb3VyY2Ugbm9kZXMsIHRoZW4g
cmVmZXJlbmNlIGFsbCBub2RlcyB0aGV5J3JlIGNvbm5lY3RlZCB0by4KICAgICAvLyBJbiB0dXJu
LCB0aGVzZSBub2RlcyByZWZlcmVuY2UgYWxsIG5vZGVzIHRoZXkncmUgY29ubmVjdGVkIHRvLiAg
QWxsIG5vZGVzIGFyZSB1bHRpbWF0ZWx5IGNvbm5lY3RlZCB0byB0aGUgQXVkaW9EZXN0aW5hdGlv
bk5vZGUuCiAgICAgLy8gV2hlbiB0aGUgY29udGV4dCBkZXJlZmVyZW5jZXMgYSBzb3VyY2Ugbm9k
ZSwgaXQgd2lsbCBiZSBkZWFjdGl2YXRlZCBmcm9tIHRoZSByZW5kZXJpbmcgZ3JhcGggYWxvbmcg
d2l0aCBhbGwgb3RoZXIgbm9kZXMgaXQgaXMKQEAgLTI5OCw4ICszMDQsMjQgQEAgcHJpdmF0ZToK
ICAgICAvLyBNYWtlIHN1cmUgdG8gZGVyZWZlcmVuY2UgdGhlbSBoZXJlLgogICAgIHZvaWQgZGVy
ZWZVbmZpbmlzaGVkU291cmNlTm9kZXMoKTsKIAotICAgIFJlZlB0cjxBdWRpb0Rlc3RpbmF0aW9u
Tm9kZT4gbV9kZXN0aW5hdGlvbk5vZGU7Ci0gICAgUmVmUHRyPEF1ZGlvTGlzdGVuZXI+IG1fbGlz
dGVuZXI7CisgICAgLy8gTWVkaWFTZXNzaW9uQ2xpZW50CisgICAgdmlydHVhbCBNZWRpYVNlc3Np
b246Ok1lZGlhVHlwZSBtZWRpYVR5cGUoKSBjb25zdCB7IHJldHVybiBNZWRpYVNlc3Npb246Oldl
YkF1ZGlvOyB9CisgICAgdmlydHVhbCBNZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBwcmVzZW50YXRp
b25UeXBlKCkgY29uc3QgeyByZXR1cm4gTWVkaWFTZXNzaW9uOjpXZWJBdWRpbzsgfQorICAgIHZp
cnR1YWwgYm9vbCBjYW5SZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmRzKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21t
YW5kKE1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlKSB7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgb3ZlcnJpZGVCYWNrZ3JvdW5kUGxheWJhY2tSZXN0cmljdGlvbigpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHN1c3BlbmRQbGF5YmFjaygpIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgdm9pZCBtYXlSZXN1bWVQbGF5YmFjayhib29sIHNob3VsZFJlc3Vt
ZSkgb3ZlcnJpZGU7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgdm9pZCByZWZF
dmVudFRhcmdldCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZF
dmVudFRhcmdldCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQorCisgICAgdm9pZCBoYW5kbGVEaXJ0
eUF1ZGlvU3VtbWluZ0p1bmN0aW9ucygpOworICAgIHZvaWQgaGFuZGxlRGlydHlBdWRpb05vZGVP
dXRwdXRzKCk7CisKKyAgICB2b2lkIGFkZFJlYWN0aW9uKFN0YXRlLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQoKT4pOworICAgIHZvaWQgdXBkYXRlQXV0b21hdGljUHVsbE5vZGVzKCk7CiAKICAgICAvLyBP
bmx5IGFjY2Vzc2VkIGluIHRoZSBhdWRpbyB0aHJlYWQuCiAgICAgVmVjdG9yPEF1ZGlvTm9kZSo+
IG1fZmluaXNoZWROb2RlczsKQEAgLTMxNywzOSArMzM5LDM5IEBAIHByaXZhdGU6CiAKICAgICAv
LyBUaGV5IHdpbGwgYmUgc2NoZWR1bGVkIGZvciBkZWxldGlvbiAob24gdGhlIG1haW4gdGhyZWFk
KSBhdCB0aGUgZW5kIG9mIGEgcmVuZGVyIGN5Y2xlIChpbiByZWFsdGltZSB0aHJlYWQpLgogICAg
IFZlY3RvcjxBdWRpb05vZGUqPiBtX25vZGVzVG9EZWxldGU7Ci0gICAgYm9vbCBtX2lzRGVsZXRp
b25TY2hlZHVsZWQ7CisKKyAgICBib29sIG1faXNEZWxldGlvblNjaGVkdWxlZCA9IHsgZmFsc2Ug
fTsKKyAgICBib29sIG1faXNTdG9wU2NoZWR1bGVkID0geyBmYWxzZSB9OworICAgIGJvb2wgbV9p
c0luaXRpYWxpemVkID0geyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0F1ZGlvVGhyZWFkRmluaXNo
ZWQgPSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2F1dG9tYXRpY1B1bGxOb2Rlc05lZWRVcGRhdGlu
ZyA9IHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNPZmZsaW5lQ29udGV4dCA9IHsgZmFsc2UgfTsK
IAogICAgIC8vIE9ubHkgYWNjZXNzZWQgd2hlbiB0aGUgZ3JhcGggbG9jayBpcyBoZWxkLgogICAg
IEhhc2hTZXQ8QXVkaW9TdW1taW5nSnVuY3Rpb24qPiBtX2RpcnR5U3VtbWluZ0p1bmN0aW9uczsK
ICAgICBIYXNoU2V0PEF1ZGlvTm9kZU91dHB1dCo+IG1fZGlydHlBdWRpb05vZGVPdXRwdXRzOwot
ICAgIHZvaWQgaGFuZGxlRGlydHlBdWRpb1N1bW1pbmdKdW5jdGlvbnMoKTsKLSAgICB2b2lkIGhh
bmRsZURpcnR5QXVkaW9Ob2RlT3V0cHV0cygpOwogCiAgICAgLy8gRm9yIHRoZSBzYWtlIG9mIHRo
cmVhZCBzYWZldHksIHdlIG1haW50YWluIGEgc2VwZXJhdGUgVmVjdG9yIG9mIGF1dG9tYXRpYyBw
dWxsIG5vZGVzIGZvciByZW5kZXJpbmcgaW4gbV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXMu
CiAgICAgLy8gSXQgd2lsbCBiZSBjb3BpZWQgZnJvbSBtX2F1dG9tYXRpY1B1bGxOb2RlcyBieSB1
cGRhdGVBdXRvbWF0aWNQdWxsTm9kZXMoKSBhdCB0aGUgdmVyeSBzdGFydCBvciBlbmQgb2YgdGhl
IHJlbmRlcmluZyBxdWFudHVtLgogICAgIEhhc2hTZXQ8QXVkaW9Ob2RlKj4gbV9hdXRvbWF0aWNQ
dWxsTm9kZXM7CiAgICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fcmVuZGVyaW5nQXV0b21hdGljUHVs
bE5vZGVzOwotICAgIC8vIG1fYXV0b21hdGljUHVsbE5vZGVzTmVlZFVwZGF0aW5nIGtlZXBzIHRy
YWNrIGlmIG1fYXV0b21hdGljUHVsbE5vZGVzIGlzIG1vZGlmaWVkLgotICAgIGJvb2wgbV9hdXRv
bWF0aWNQdWxsTm9kZXNOZWVkVXBkYXRpbmc7Ci0gICAgdm9pZCB1cGRhdGVBdXRvbWF0aWNQdWxs
Tm9kZXMoKTsKLQotICAgIHVuc2lnbmVkIG1fY29ubmVjdGlvbkNvdW50OwotCi0gICAgLy8gR3Jh
cGggbG9ja2luZy4KLSAgICBNdXRleCBtX2NvbnRleHRHcmFwaE11dGV4OwotICAgIHZvbGF0aWxl
IFRocmVhZElkZW50aWZpZXIgbV9hdWRpb1RocmVhZDsKLSAgICB2b2xhdGlsZSBUaHJlYWRJZGVu
dGlmaWVyIG1fZ3JhcGhPd25lclRocmVhZDsgLy8gaWYgdGhlIGxvY2sgaXMgaGVsZCB0aGVuIHRo
aXMgaXMgdGhlIHRocmVhZCB3aGljaCBvd25zIGl0LCBvdGhlcndpc2UgPT0gVW5kZWZpbmVkVGhy
ZWFkSWRlbnRpZmllcgotICAgIAogICAgIC8vIE9ubHkgYWNjZXNzZWQgaW4gdGhlIGF1ZGlvIHRo
cmVhZC4KICAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9kZWZlcnJlZEZpbmlzaERlcmVmTGlzdDsK
KyAgICBWZWN0b3I8VmVjdG9yPHN0ZDo6ZnVuY3Rpb248dm9pZCgpPj4+IG1fc3RhdGVSZWFjdGlv
bnM7CiAKLSAgICAvLyBFdmVudFRhcmdldAotICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdl
dCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdl
dCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQorICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVNlc3Np
b24+IG1fbWVkaWFTZXNzaW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxHZW5lcmljRXZlbnRRdWV1
ZT4gbV9ldmVudFF1ZXVlOwogCiAgICAgUmVmUHRyPEF1ZGlvQnVmZmVyPiBtX3JlbmRlclRhcmdl
dDsKLSAgICAKLSAgICBib29sIG1faXNPZmZsaW5lQ29udGV4dDsKKyAgICBSZWZQdHI8QXVkaW9E
ZXN0aW5hdGlvbk5vZGU+IG1fZGVzdGluYXRpb25Ob2RlOworICAgIFJlZlB0cjxBdWRpb0xpc3Rl
bmVyPiBtX2xpc3RlbmVyOworCisgICAgdW5zaWduZWQgbV9jb25uZWN0aW9uQ291bnQgPSB7IDAg
fTsKKworICAgIC8vIEdyYXBoIGxvY2tpbmcuCisgICAgTXV0ZXggbV9jb250ZXh0R3JhcGhNdXRl
eDsKKyAgICB2b2xhdGlsZSBUaHJlYWRJZGVudGlmaWVyIG1fYXVkaW9UaHJlYWQgPSB7IDAgfTsK
KyAgICB2b2xhdGlsZSBUaHJlYWRJZGVudGlmaWVyIG1fZ3JhcGhPd25lclRocmVhZDsgLy8gaWYg
dGhlIGxvY2sgaXMgaGVsZCB0aGVuIHRoaXMgaXMgdGhlIHRocmVhZCB3aGljaCBvd25zIGl0LCBv
dGhlcndpc2UgPT0gVW5kZWZpbmVkVGhyZWFkSWRlbnRpZmllcgogCiAgICAgQXN5bmNBdWRpb0Rl
Y29kZXIgbV9hdWRpb0RlY29kZXI7CiAKQEAgLTM1OCwxMiArMzgwLDExIEBAIHByaXZhdGU6CiAg
ICAgZW51bSB7IE1heE51bWJlck9mQ2hhbm5lbHMgPSAzMiB9OwogCiAgICAgLy8gTnVtYmVyIG9m
IEF1ZGlvQnVmZmVyU291cmNlTm9kZXMgdGhhdCBhcmUgYWN0aXZlIChwbGF5aW5nKS4KLSAgICBz
dGQ6OmF0b21pYzxpbnQ+IG1fYWN0aXZlU291cmNlQ291bnQ7CisgICAgc3RkOjphdG9taWM8aW50
PiBtX2FjdGl2ZVNvdXJjZUNvdW50ID0geyAwIH07CiAKLSAgICBCZWhhdmlvclJlc3RyaWN0aW9u
cyBtX3Jlc3RyaWN0aW9uczsKKyAgICBCZWhhdmlvclJlc3RyaWN0aW9ucyBtX3Jlc3RyaWN0aW9u
cyA9IHsgTm9SZXN0cmljdGlvbnMgfTsKIAotICAgIGVudW0gY2xhc3MgU3RhdGUgeyBTdXNwZW5k
ZWQsIFJ1bm5pbmcsIENsb3NlZCB9OwotICAgIFN0YXRlIG1fc3RhdGU7CisgICAgU3RhdGUgbV9z
dGF0ZSA9IHsgU3RhdGU6OlN1c3BlbmRlZCB9OwogfTsKIAogfSAvLyBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwKaW5kZXggYjk3
NWU0NzI4ZTgzNTczZjBlN2IxZDZlMTI1Yzg2MWE4ZTc4M2Y3Yi4uMTJjZDU3NTY4NGE2NmE5MmUw
Y2JiMzVhNzlkYjU1YzYzMDdhODBkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbApAQCAtMjMsNiArMjMsMTMgQEAKICAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKK2VudW0gQXVkaW9Db250ZXh0U3RhdGUgeworICAgICJzdXNwZW5kZWQiLAorICAgICJydW5u
aW5nIiwKKyAgICAiaW50ZXJydXB0ZWQiLAorICAgICJjbG9zZWQiCit9OworCiBbCiAgICAgRW5h
YmxlZEJ5U2V0dGluZz1XZWJBdWRpbywKICAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCkBAIC00
Myw2ICs1MCwxMyBAQAogICAgIC8vIEFsbCBwYW5uaW5nIGlzIHJlbGF0aXZlIHRvIHRoaXMgbGlz
dGVuZXIuCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlvTGlzdGVuZXIgbGlzdGVuZXI7CiAK
KyAgICBbQ3VzdG9tXSBQcm9taXNlIHN1c3BlbmQoKTsKKyAgICBbQ3VzdG9tXSBQcm9taXNlIHJl
c3VtZSgpOworICAgIFtDdXN0b21dIFByb21pc2UgY2xvc2UoKTsKKworICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBBdWRpb0NvbnRleHRTdGF0ZSBzdGF0ZTsKKyAgICBhdHRyaWJ1dGUgRXZlbnRIYW5k
bGVyIG9uc3RhdGVjaGFuZ2U7CisKICAgICAvLyBOdW1iZXIgb2YgQXVkaW9CdWZmZXJTb3VyY2VO
b2RlcyB0aGF0IGFyZSBjdXJyZW50bHkgcGxheWluZy4KICAgICByZWFkb25seSBhdHRyaWJ1dGUg
dW5zaWduZWQgbG9uZyBhY3RpdmVTb3VyY2VDb3VudDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAppbmRleCA3
NDg5NDY0OTllM2I4ZGNlYjE0MjhhOTM1NThjMmYwNzEwMzZkMTUzLi5hYzU4N2IxZGUyNzNmNzNm
NjgyNGVmZjgwNmVlZWZmN2QwZTIyM2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCkBAIC0zNSw3ICszNSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9CdXM7CiBjbGFzcyBBdWRpb0NvbnRl
eHQ7Ci0gICAgCisKIGNsYXNzIEF1ZGlvRGVzdGluYXRpb25Ob2RlIDogcHVibGljIEF1ZGlvTm9k
ZSwgcHVibGljIEF1ZGlvSU9DYWxsYmFjayB7CiBwdWJsaWM6CiAgICAgQXVkaW9EZXN0aW5hdGlv
bk5vZGUoQXVkaW9Db250ZXh0KiwgZmxvYXQgc2FtcGxlUmF0ZSk7CkBAIC01OCw2ICs1OCw5IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlSW5wdXQoY29uc3QgU3RyaW5nJiBpbnB1
dERldmljZUlkKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRSZW5kZXJpbmcoKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHJlc3VtZShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4pIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBzdXNwZW5kKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPikgeyB9CisgICAgdmly
dHVhbCB2b2lkIGNsb3NlKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPikgeyB9CiAKICAgICBBdWRpb1Nv
dXJjZVByb3ZpZGVyKiBsb2NhbEF1ZGlvSW5wdXRQcm92aWRlcigpIHsgcmV0dXJuICZtX2xvY2Fs
QXVkaW9JbnB1dFByb3ZpZGVyOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRl
eCA5NTZjYzIyNmY4NTZiNDc0MTQ0ZTM1NmY3ZjNlYTg1Zjk1OTJiYWE5Li4wYmNjMmMwYTRhYzYw
Yzk0MjQwMjI2N2RlNWU0YzQwZGNiZjg5ZDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUu
Y3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQXVkaW9Db250ZXh0LmgiCiAjaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAogY29u
c3QgdW5zaWduZWQgRW5hYmxlZElucHV0Q2hhbm5lbHMgPSAyOwpAQCAtMTA1LDYgKzEwNiwyOSBA
QCB2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3RhcnRSZW5kZXJpbmcoKQogICAg
ICAgICBtX2Rlc3RpbmF0aW9uLT5zdGFydCgpOwogfQogCit2b2lkIERlZmF1bHRBdWRpb0Rlc3Rp
bmF0aW9uTm9kZTo6cmVzdW1lKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbikKK3sKKyAg
ICBBU1NFUlQoaXNJbml0aWFsaXplZCgpKTsKKyAgICBpZiAoaXNJbml0aWFsaXplZCgpKQorICAg
ICAgICBtX2Rlc3RpbmF0aW9uLT5zdGFydCgpOworICAgIGNvbnRleHQoKS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5wb3N0VGFzayhmdW5jdGlvbik7Cit9CisKK3ZvaWQgRGVmYXVsdEF1ZGlv
RGVzdGluYXRpb25Ob2RlOjpzdXNwZW5kKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbikK
K3sKKyAgICBBU1NFUlQoaXNJbml0aWFsaXplZCgpKTsKKyAgICBpZiAoaXNJbml0aWFsaXplZCgp
KQorICAgICAgICBtX2Rlc3RpbmF0aW9uLT5zdG9wKCk7CisgICAgY29udGV4dCgpLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKGZ1bmN0aW9uKTsKK30KKwordm9pZCBEZWZhdWx0
QXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNsb3NlKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlv
bikKK3sKKyAgICBBU1NFUlQoaXNJbml0aWFsaXplZCgpKTsKKyAgICB1bmluaXRpYWxpemUoKTsK
KyAgICBjb250ZXh0KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soZnVuY3Rp
b24pOworfQorCiB1bnNpZ25lZCBsb25nIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6bWF4
Q2hhbm5lbENvdW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gQXVkaW9EZXN0aW5hdGlvbjo6bWF4
Q2hhbm5lbENvdW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaAppbmRleCAyZTBhODY1OGNk
MmVkMDRjMzU4YzU1ZTNjY2E4MjdjZDFkNTJjYjdjLi5iMWQ2MjhkZDJlOWNkMGQ3NDk0MzMzODY4
Mjk1NTBiNDFmMjVhNmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTUwLDYgKzUw
LDkgQEAgcHVibGljOgogICAgIC8vIEF1ZGlvRGVzdGluYXRpb25Ob2RlCiAgICAgdmlydHVhbCB2
b2lkIGVuYWJsZUlucHV0KGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCkgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIHN0YXJ0UmVuZGVyaW5nKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2
b2lkIHJlc3VtZShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBzdXNwZW5kKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPikgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIGNsb3NlKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPikgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB1bnNpZ25lZCBsb25nIG1heENoYW5uZWxDb3VudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgYm9vbCBpc1BsYXlpbmcoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwCmluZGV4IDFhNzVkOTM1YmM3
MzIyMDVhYjQ3YTVkMTk2MDRkMDgyOWQxZDRlYzUuLmRkZWM3OTRmMGU2ZjI1OTQyNjhmNmY5OTA2
OWNkMGQ2ZDQ0Yzg4ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
QXVkaW9Db250ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0F1ZGlvQ29udGV4dEN1c3RvbS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJKU0F1
ZGlvQnVmZmVyLmgiCiAjaW5jbHVkZSAiSlNBdWRpb0NvbnRleHQuaCIKICNpbmNsdWRlICJKU0RP
TUJpbmRpbmcuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKICNpbmNsdWRlICJKU09mZmxp
bmVBdWRpb0NvbnRleHQuaCIKICNpbmNsdWRlICJPZmZsaW5lQXVkaW9Db250ZXh0LmgiCiAjaW5j
bHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgpAQCAtMTEwLDYgKzExMSw2OSBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTQXVkaW9Db250ZXh0KEV4ZWNTdGF0ZSog
ZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKENSRUFURV9ET01fV1JBUFBFUihqc0Nv
bnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKSwgQXVkaW9Db250ZXh0LCBhdWRpb0NvbnRleHQuZ2V0
KCkpKTsKIH0KIAorSlNWYWx1ZSBKU0F1ZGlvQ29udGV4dDo6c3VzcGVuZChFeGVjU3RhdGUqIGV4
ZWMpCit7CisgICAgRGVmZXJyZWRXcmFwcGVyIHdyYXBwZXIoZXhlYywgZ2xvYmFsT2JqZWN0KCkp
OworICAgIGF1dG8gc3VjY2Vzc0NhbGxiYWNrID0gW3dyYXBwZXJdKCkgbXV0YWJsZSB7CisgICAg
ICAgIHdyYXBwZXIucmVzb2x2ZShudWxscHRyKTsKKyAgICB9OworICAgIGF1dG8gZmFpbHVyZUNh
bGxiYWNrID0gW3dyYXBwZXJdKCkgbXV0YWJsZSB7CisgICAgICAgIHdyYXBwZXIucmVqZWN0KG51
bGxwdHIpOworICAgIH07CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBpbXBsKCku
c3VzcGVuZENvbnRleHQoV1RGOjptb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURjo6bW92ZShmYWls
dXJlQ2FsbGJhY2spLCBlYyk7CisKKyAgICBpZiAoZWMpIHsKKyAgICAgICAgc2V0RE9NRXhjZXB0
aW9uKGV4ZWMsIGVjKTsKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorCisg
ICAgcmV0dXJuIHdyYXBwZXIucHJvbWlzZSgpOworfQorCitKU1ZhbHVlIEpTQXVkaW9Db250ZXh0
OjpyZXN1bWUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIERlZmVycmVkV3JhcHBlciB3cmFwcGVy
KGV4ZWMsIGdsb2JhbE9iamVjdCgpKTsKKyAgICBhdXRvIHN1Y2Nlc3NDYWxsYmFjayA9IFt3cmFw
cGVyXSgpIG11dGFibGUgeworICAgICAgICB3cmFwcGVyLnJlc29sdmUobnVsbHB0cik7CisgICAg
fTsKKyAgICBhdXRvIGZhaWx1cmVDYWxsYmFjayA9IFt3cmFwcGVyXSgpIG11dGFibGUgeworICAg
ICAgICB3cmFwcGVyLnJlamVjdChudWxscHRyKTsKKyAgICB9OworCisgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CisgICAgaW1wbCgpLnJlc3VtZUNvbnRleHQoV1RGOjptb3ZlKHN1Y2Nlc3NDYWxs
YmFjayksIFdURjo6bW92ZShmYWlsdXJlQ2FsbGJhY2spLCBlYyk7CisKKyAgICBpZiAoZWMpIHsK
KyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKyAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CisgICAgfQorCisgICAgcmV0dXJuIHdyYXBwZXIucHJvbWlzZSgpOworfQorCitK
U1ZhbHVlIEpTQXVkaW9Db250ZXh0OjpjbG9zZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgRGVm
ZXJyZWRXcmFwcGVyIHdyYXBwZXIoZXhlYywgZ2xvYmFsT2JqZWN0KCkpOworICAgIGF1dG8gc3Vj
Y2Vzc0NhbGxiYWNrID0gW3dyYXBwZXJdKCkgbXV0YWJsZSB7CisgICAgICAgIHdyYXBwZXIucmVz
b2x2ZShudWxscHRyKTsKKyAgICB9OworICAgIGF1dG8gZmFpbHVyZUNhbGxiYWNrID0gW3dyYXBw
ZXJdKCkgbXV0YWJsZSB7CisgICAgICAgIHdyYXBwZXIucmVqZWN0KG51bGxwdHIpOworICAgIH07
CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBpbXBsKCkuY2xvc2VDb250ZXh0KFdU
Rjo6bW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEY6Om1vdmUoZmFpbHVyZUNhbGxiYWNrKSwgZWMp
OworCisgICAgaWYgKGVjKSB7CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7Cisg
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIH0KKworICAgIHJldHVybiB3cmFwcGVy
LnByb21pc2UoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NUHJvbWlzZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgK
aW5kZXggNDJkMDJkOWYyOGU5ZTZhODRhNGU3NWMzYTczMThmOTYxNGY5YTAxYy4uZDk1NjgxMmM0
M2UyMzFjZTZhNTA4ZjU0OTE4MGJmZDBmMjk1ZWQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01Qcm9taXNlLmgKQEAgLTEwNyw2ICsxMDcsMTQgQEAgaW5saW5lIHZvaWQgRGVm
ZXJyZWRXcmFwcGVyOjpyZXNvbHZlPFZlY3Rvcjx1bnNpZ25lZCBjaGFyPj4oY29uc3QgVmVjdG9y
PHVuc2lnbmUKIH0KIAogdGVtcGxhdGU8PgoraW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpy
ZXNvbHZlKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikKK3sKKyAgICBKU0M6OkV4ZWNTdGF0ZSogZXhl
YyA9IG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIg
bG9ja2VyKGV4ZWMpOworICAgIHJlc29sdmUoZXhlYywgSlNDOjpqc051bGwoKSk7Cit9CisKK3Rl
bXBsYXRlPD4KIGlubGluZSB2b2lkIERlZmVycmVkV3JhcHBlcjo6cmVqZWN0PFN0cmluZz4oY29u
c3QgU3RyaW5nJiByZXN1bHQpCiB7CiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBtX2dsb2Jh
bE9iamVjdC0+Z2xvYmFsRXhlYygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50TmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKaW5kZXggZjFmZDEy
NzM5ZjYyNmJlMjI5OWQ1ZGRkZTA2Nzc0YWRiZGExYjQ0Yy4uNTQ1ZTE2ZTUyNGUwNzFmMWUyNTgy
NDVhMDhjNjFlNWM1ZGI1OTllZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
TmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCkBAIC0xOTAsNiAr
MTkwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKHN0YWxsZWQpIFwKICAgICBt
YWNybyhzdGFydCkgXAogICAgIG1hY3JvKHN0YXJ0ZWQpIFwKKyAgICBtYWNybyhzdGF0ZWNoYW5n
ZSkgXAogICAgIG1hY3JvKHN0b3JhZ2UpIFwKICAgICBtYWNybyhzdWJtaXQpIFwKICAgICBtYWNy
byhzdWNjZXNzKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aAppbmRleCAxMTQ2NjEyNjcwM2VlMzJkMzFkZGRmMDk2NGFlYTZjNmM2Yzg3NGRmLi43OTAxOThi
YTdmZjhiY2M0MDc3OTlkMGZhZmFiZjcwMzMxYzEwNTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTEzMCw2ICsxMzAsMTIgQEAgcHVibGljOgog
ICAgICAgICB7CiAgICAgICAgIH0KIAorICAgICAgICBUYXNrKHN0ZDo6ZnVuY3Rpb248dm9pZCgp
PiB0YXNrKQorICAgICAgICAgICAgOiBtX3Rhc2soW3Rhc2tdKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmKSB7IHRhc2soKTsgfSkKKyAgICAgICAgICAgICwgbV9pc0NsZWFudXBUYXNrKGZhbHNlKQor
ICAgICAgICB7CisgICAgICAgIH0KKwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfY29udmVydGlibGU8VCwgc3Rk
OjpmdW5jdGlvbjx2b2lkIChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik+Pjo6dmFsdWU+Ojp0eXBl
PgogICAgICAgICBUYXNrKENsZWFudXBUYXNrVGFnLCBUIHRhc2spCiAgICAgICAgICAgICA6IG1f
dGFzayhXVEY6Om1vdmUodGFzaykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcAppbmRleCAxYTllMjk4ZjY0NGQ2YjFlMWE4ZjMyZjIyYzdiMWQ3NGNiNzZlNzFiLi44ZDlk
ODViZjI2ZTQ3MmYwYWQxYmRhMTE4NDhlNDM4YTE1Njc2MTliIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTYwMzEsMTcgKzYwMzEsMTcgQEAgc2l6ZV90IEhU
TUxNZWRpYUVsZW1lbnQ6Om1heGltdW1Tb3VyY2VCdWZmZXJTaXplKGNvbnN0IFNvdXJjZUJ1ZmZl
ciYgYnVmZmVyKSBjb24KIH0KICNlbmRpZgogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNl
UGxheWJhY2soKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzdXNwZW5kUGxheWJhY2soKQogewog
ICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlUGxheWJhY2soJXApIC0gcGF1
c2VkID0gJXMiLCB0aGlzLCBib29sU3RyaW5nKHBhdXNlZCgpKSk7CiAgICAgaWYgKCFwYXVzZWQo
KSkKICAgICAgICAgcGF1c2UoKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZXN1bWVQ
bGF5YmFjaygpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1heVJlc3VtZVBsYXliYWNrKGJvb2wg
c2hvdWxkUmVzdW1lKQogewogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnJlc3Vt
ZVBsYXliYWNrKCVwKSAtIHBhdXNlZCA9ICVzIiwgdGhpcywgYm9vbFN0cmluZyhwYXVzZWQoKSkp
OwotICAgIGlmIChwYXVzZWQoKSkKKyAgICBpZiAocGF1c2VkKCkgJiYgc2hvdWxkUmVzdW1lKQog
ICAgICAgICBwbGF5KCk7CiB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCmluZGV4IDllNjE5MGI0OGFkNzhlYmRhN2M0OGVkNWM4NTNkZTNlZTE0YjgxZTAuLjZhMTY2
ZTVhYjhjMGIwY2VmMTk4NTU5ODViOWYwZDI5YzMwZTFkMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oCkBAIC03MDcsOCArNzA3LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIE1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIG1lZGlhVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgcHJlc2VudGF0aW9uVHlwZSgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgTWVkaWFTZXNzaW9uOjpEaXNwbGF5VHlwZSBkaXNw
bGF5VHlwZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYXVzZVBsYXliYWNr
KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlc3VtZVBsYXliYWNrKCkgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCB2b2lkIHN1c3BlbmRQbGF5YmFjaygpIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgdm9pZCBtYXlSZXN1bWVQbGF5YmFjayhib29sIHNob3VsZFJlc3VtZSkgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCBTdHJpbmcgbWVkaWFTZXNzaW9uVGl0bGUoKSBjb25zdCBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIGRvdWJsZSBtZWRpYVNlc3Npb25EdXJhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGR1cmF0aW9uKCk7IH0KICAgICB2aXJ0dWFsIGRvdWJsZSBtZWRpYVNlc3Npb25DdXJy
ZW50VGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGN1cnJlbnRUaW1lKCk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwCmluZGV4IGY0ZGI0
ZmVmMDQ1ZWM5Nzg0M2YwMDkxNTVmNGFhZDEwMDM0NDE0ZDcuLmFlOTU1MDIzYmYzMmUyNmNjZmU0
MzA2ZDU5MGIyYzU0NjdmMmJlZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9TZXNzaW9uLmNwcApAQCAtODYsOSArODYsMTAgQEAgc2l6ZV90IEF1ZGlvU2Vzc2lv
bjo6bnVtYmVyT2ZPdXRwdXRDaGFubmVscygpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKLXZv
aWQgQXVkaW9TZXNzaW9uOjpzZXRBY3RpdmUoYm9vbCkKK2Jvb2wgQXVkaW9TZXNzaW9uOjp0cnlU
b1NldEFjdGl2ZShib29sKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIHNpemVfdCBBdWRpb1Nlc3Npb246OnByZWZlcnJlZEJ1ZmZlclNpemUoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaAppbmRleCBk
ODk3NjNlMjQ0OWY3OGUzMGY0ZDUyNGQ2NzMwYWE2NmYyYzVkYThlLi5jNmM5NDUyZmQ0YzIwNWZm
ZDliZTY3MGZlNjI5ZmM2MzU2MWFkM2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb1Nlc3Npb24uaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgZmxvYXQg
c2FtcGxlUmF0ZSgpIGNvbnN0OwogICAgIHNpemVfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzKCkg
Y29uc3Q7CiAKLSAgICB2b2lkIHNldEFjdGl2ZShib29sKTsKKyAgICBib29sIHRyeVRvU2V0QWN0
aXZlKGJvb2wpOwogCiAgICAgc2l6ZV90IHByZWZlcnJlZEJ1ZmZlclNpemUoKSBjb25zdDsKICAg
ICB2b2lkIHNldFByZWZlcnJlZEJ1ZmZlclNpemUoc2l6ZV90KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uY3BwCmluZGV4IDZmNjhkNzAwZTVmNjJiMzAy
ODIwYTJlMTllM2EyMWVmYjY1NmYzZDkuLjE4ZWE4MjNjYjkxOTBjODYwN2Y5YjUyY2RjNjM4MDE1
ZjQxNGE0NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlh
U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNz
aW9uLmNwcApAQCAtODgsOCArODgsOCBAQCB2b2lkIE1lZGlhU2Vzc2lvbjo6YmVnaW5JbnRlcnJ1
cHRpb24oSW50ZXJydXB0aW9uVHlwZSB0eXBlKQogCiAgICAgbV9zdGF0ZVRvUmVzdG9yZSA9IHN0
YXRlKCk7CiAgICAgbV9ub3RpZnlpbmdDbGllbnQgPSB0cnVlOwotICAgIGNsaWVudCgpLnBhdXNl
UGxheWJhY2soKTsKICAgICBzZXRTdGF0ZShJbnRlcnJ1cHRlZCk7CisgICAgY2xpZW50KCkuc3Vz
cGVuZFBsYXliYWNrKCk7CiAgICAgbV9ub3RpZnlpbmdDbGllbnQgPSBmYWxzZTsKIH0KIApAQCAt
MTA5LDI4ICsxMDksMzUgQEAgdm9pZCBNZWRpYVNlc3Npb246OmVuZEludGVycnVwdGlvbihFbmRJ
bnRlcnJ1cHRpb25GbGFncyBmbGFncykKICAgICBtX3N0YXRlVG9SZXN0b3JlID0gSWRsZTsKICAg
ICBzZXRTdGF0ZShQYXVzZWQpOwogCi0gICAgaWYgKGZsYWdzICYgTWF5UmVzdW1lUGxheWluZyAm
JiBzdGF0ZVRvUmVzdG9yZSA9PSBQbGF5aW5nKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIk1lZGlh
U2Vzc2lvbjo6ZW5kSW50ZXJydXB0aW9uIC0gcmVzdW1pbmcgcGxheWJhY2siKTsKLSAgICAgICAg
Y2xpZW50KCkucmVzdW1lUGxheWJhY2soKTsKLSAgICB9CisgICAgYm9vbCBzaG91bGRSZXN1bWUg
PSBmbGFncyAmIE1heVJlc3VtZVBsYXlpbmcgJiYgc3RhdGVUb1Jlc3RvcmUgPT0gUGxheWluZzsK
KyAgICBjbGllbnQoKS5tYXlSZXN1bWVQbGF5YmFjayhzaG91bGRSZXN1bWUpOwogfQogCiBib29s
IE1lZGlhU2Vzc2lvbjo6Y2xpZW50V2lsbEJlZ2luUGxheWJhY2soKQogeworICAgIGlmIChtX25v
dGlmeWluZ0NsaWVudCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoIU1lZGlhU2Vz
c2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5zZXNzaW9uV2lsbEJlZ2luUGxheWJhY2soKnRo
aXMpKSB7CisgICAgICAgIGlmIChzdGF0ZSgpID09IEludGVycnVwdGVkKQorICAgICAgICAgICAg
bV9zdGF0ZVRvUmVzdG9yZSA9IFBsYXlpbmc7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKICAgICBzZXRTdGF0ZShQbGF5aW5nKTsKLSAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFy
ZWRNYW5hZ2VyKCkuc2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKCp0aGlzKTsKICAgICB1cGRhdGVD
bGllbnREYXRhQnVmZmVyaW5nKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgTWVkaWFT
ZXNzaW9uOjpjbGllbnRXaWxsUGF1c2VQbGF5YmFjaygpCiB7CisgICAgaWYgKG1fbm90aWZ5aW5n
Q2xpZW50KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwogICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vz
c2lvbjo6Y2xpZW50V2lsbFBhdXNlUGxheWJhY2soJXApLSBzdGF0ZSA9ICVzIiwgdGhpcywgc3Rh
dGVOYW1lKG1fc3RhdGUpKTsKICAgICBpZiAoc3RhdGUoKSA9PSBJbnRlcnJ1cHRlZCkgewotICAg
ICAgICBpZiAoIW1fbm90aWZ5aW5nQ2xpZW50KSB7Ci0gICAgICAgICAgICBtX3N0YXRlVG9SZXN0
b3JlID0gUGF1c2VkOwotICAgICAgICAgICAgTE9HKE1lZGlhLCAiICAgICAgc2V0dGluZyBzdGF0
ZVRvUmVzdG9yZSB0byBcIlBhdXNlZFwiIik7Ci0gICAgICAgIH0KKyAgICAgICAgbV9zdGF0ZVRv
UmVzdG9yZSA9IFBhdXNlZDsKKyAgICAgICAgTE9HKE1lZGlhLCAiICAgICAgc2V0dGluZyBzdGF0
ZVRvUmVzdG9yZSB0byBcIlBhdXNlZFwiIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAgICAgCkBAIC0xNDQsNyArMTUxLDcgQEAgYm9vbCBNZWRpYVNlc3Npb246OmNsaWVudFdpbGxQ
YXVzZVBsYXliYWNrKCkKIHZvaWQgTWVkaWFTZXNzaW9uOjpwYXVzZVNlc3Npb24oKQogewogICAg
IExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbjo6cGF1c2VTZXNzaW9uKCVwKSIsIHRoaXMpOwotICAg
IG1fY2xpZW50LnBhdXNlUGxheWJhY2soKTsKKyAgICBtX2NsaWVudC5zdXNwZW5kUGxheWJhY2so
KTsKIH0KIAogTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgTWVkaWFTZXNzaW9uOjptZWRpYVR5cGUo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFT
ZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uaApp
bmRleCA2ZDc1NGM2YmU1NTZlMDM5NGFkMzBhN2NhMDYzNDhmMGVhMTYxZmVhLi5lOTc3ODE0MTdk
NmQwYTk4YTMyZGRiZjdiOGVhNmM4NTQ1NjNjNjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uaApAQCAtMTQ5LDggKzE0OSw4IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIE1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHByZXNlbnRhdGlvblR5cGUoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBNZWRpYVNlc3Npb246OkRpc3BsYXlUeXBlIGRpc3BsYXlUeXBl
KCkgY29uc3QgeyByZXR1cm4gTWVkaWFTZXNzaW9uOjpOb3JtYWw7IH0KIAotICAgIHZpcnR1YWwg
dm9pZCByZXN1bWVQbGF5YmFjaygpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcGF1c2VQbGF5YmFj
aygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbWF5UmVzdW1lUGxheWJhY2soYm9vbCBzaG91bGRS
ZXN1bWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZFBsYXliYWNrKCkgPSAwOwogCiAg
ICAgdmlydHVhbCBTdHJpbmcgbWVkaWFTZXNzaW9uVGl0bGUoKSBjb25zdDsKICAgICB2aXJ0dWFs
IGRvdWJsZSBtZWRpYVNlc3Npb25EdXJhdGlvbigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAppbmRleCBlMTMw
YzJjYWZmNGE2ZTViZDQyNzczMzExNzJhNGEzMWVkNGM0ZmRlLi40OTg0MmIyMGE0NGQ1Mjg0M2Ey
MDQ0NzgxOTBiYzE3MzNkOGVkZmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAj
aWYgRU5BQkxFKFZJREVPKQogCisjaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiTWVkaWFT
ZXNzaW9uLmgiCkBAIC0xNjYsNyArMTY3LDcgQEAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6U2Vzc2lv
blJlc3RyaWN0aW9ucyBNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZXN0cmljdGlvbnMoTWVkaWEKICAg
ICByZXR1cm4gbV9yZXN0cmljdGlvbnNbdHlwZV07CiB9CiAKLXZvaWQgTWVkaWFTZXNzaW9uTWFu
YWdlcjo6c2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKE1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikKK2Jv
b2wgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKE1lZGlhU2Vz
c2lvbiYgc2Vzc2lvbikKIHsKICAgICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb25NYW5hZ2VyOjpz
ZXNzaW9uV2lsbEJlZ2luUGxheWJhY2sgLSAlcCIsICZzZXNzaW9uKTsKICAgICAKQEAgLTE3NCw4
ICsxNzUsMTcgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uV2lsbEJlZ2luUGxh
eWJhY2soTWVkaWFTZXNzaW9uJiBzZXNzaW9uKQogCiAgICAgTWVkaWFTZXNzaW9uOjpNZWRpYVR5
cGUgc2Vzc2lvblR5cGUgPSBzZXNzaW9uLm1lZGlhVHlwZSgpOwogICAgIFNlc3Npb25SZXN0cmlj
dGlvbnMgcmVzdHJpY3Rpb25zID0gbV9yZXN0cmljdGlvbnNbc2Vzc2lvblR5cGVdOworICAgIGlm
IChzZXNzaW9uLnN0YXRlKCkgPT0gTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRlZCAmJiByZXN0cmlj
dGlvbnMgJiBJbnRlcnJ1cHRlZFBsYXliYWNrTm90UGVybWl0dGVkKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBpZiAoYWN0aXZlQXVkaW9TZXNzaW9uUmVxdWlyZWQoKSAmJiAhQXVkaW9T
ZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkudHJ5VG9TZXRBY3RpdmUodHJ1ZSkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGlmIChtX2ludGVycnVwdGVkKQorICAgICAgICBlbmRJbnRlcnJ1
cHRpb24oTWVkaWFTZXNzaW9uOjpOb0ZsYWdzKTsKKwogICAgIGlmICghcmVzdHJpY3Rpb25zICYg
Q29uY3VycmVudFBsYXliYWNrTm90UGVybWl0dGVkKQotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiB0cnVlOwogCiAgICAgVmVjdG9yPE1lZGlhU2Vzc2lvbio+IHNlc3Npb25zID0gbV9z
ZXNzaW9uczsKICAgICBmb3IgKGF1dG8qIG9uZVNlc3Npb24gOiBzZXNzaW9ucykgewpAQCAtMTg4
LDYgKzE5OCw3IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxCZWdpblBs
YXliYWNrKE1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikKICAgICB9CiAgICAgCiAgICAgdXBkYXRlU2Vz
c2lvblN0YXRlKCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAgICAgCiB2b2lkIE1lZGlhU2Vzc2lv
bk1hbmFnZXI6OnNlc3Npb25XaWxsRW5kUGxheWJhY2soTWVkaWFTZXNzaW9uJiBzZXNzaW9uKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFu
YWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdl
ci5oCmluZGV4IGM0NTU5NWUyNjNlNmZlM2Q4Mzk0ZDBlZjAyODdlZWE1NzQ4ZTA4ZTEuLjI5NmRj
ZDUzMjliNjQ3OGYxZTA1MmY4OTkwNmU3MTViYWM2YzliMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmgKQEAgLTYzLDYgKzYz
LDcgQEAgcHVibGljOgogICAgICAgICBBdXRvUHJlbG9hZGluZ05vdFBlcm1pdHRlZCA9IDEgPDwg
MywKICAgICAgICAgQmFja2dyb3VuZFByb2Nlc3NQbGF5YmFja1Jlc3RyaWN0ZWQgPSAxIDw8IDQs
CiAgICAgICAgIEJhY2tncm91bmRUYWJQbGF5YmFja1Jlc3RyaWN0ZWQgPSAxIDw8IDUsCisgICAg
ICAgIEludGVycnVwdGVkUGxheWJhY2tOb3RQZXJtaXR0ZWQgPSAxIDw8IDYsCiAgICAgfTsKICAg
ICB0eXBlZGVmIHVuc2lnbmVkIFNlc3Npb25SZXN0cmljdGlvbnM7CiAKQEAgLTcxLDcgKzcyLDcg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFNlc3Npb25SZXN0cmljdGlvbnMgcmVzdHJp
Y3Rpb25zKE1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRS
ZXN0cmljdGlvbnMoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXNzaW9uV2lsbEJlZ2luUGxheWJh
Y2soTWVkaWFTZXNzaW9uJik7CisgICAgdmlydHVhbCBib29sIHNlc3Npb25XaWxsQmVnaW5QbGF5
YmFjayhNZWRpYVNlc3Npb24mKTsKICAgICB2aXJ0dWFsIHZvaWQgc2Vzc2lvbldpbGxFbmRQbGF5
YmFjayhNZWRpYVNlc3Npb24mKTsKIAogICAgIGJvb2wgc2Vzc2lvblJlc3RyaWN0c0lubGluZVZp
ZGVvUGxheWJhY2soY29uc3QgTWVkaWFTZXNzaW9uJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAK
aW5kZXggYjQ0YjBjZWMyOTFkOGJlNzBhYzI0ZmM1Y2E4ZWJkNGZmOTk1ZGU4NC4uM2ExMDhlZDUz
OWVlNWI3N2JlZTMzNzg2OTBjMzdhY2Y3NmIyM2YxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcApAQCAt
MTAwLDcgKzEwMCw2IEBAIEF1ZGlvRGVzdGluYXRpb25JT1M6OkF1ZGlvRGVzdGluYXRpb25JT1Mo
QXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywgZG91YmxlIHNhbXBsCiAgICAgOiBtX291dHB1dFVu
aXQoMCkKICAgICAsIG1fY2FsbGJhY2soY2FsbGJhY2spCiAgICAgLCBtX3JlbmRlckJ1cyhBdWRp
b0J1czo6Y3JlYXRlKDIsIGtSZW5kZXJCdWZmZXJTaXplLCBmYWxzZSkpCi0gICAgLCBtX21lZGlh
U2Vzc2lvbihNZWRpYVNlc3Npb246OmNyZWF0ZSgqdGhpcykpCiAgICAgLCBtX3NhbXBsZVJhdGUo
c2FtcGxlUmF0ZSkKICAgICAsIG1faXNQbGF5aW5nKGZhbHNlKQogewpAQCAtMTg0LDEwICsxODMs
NiBAQCB2b2lkIEF1ZGlvRGVzdGluYXRpb25JT1M6OmNvbmZpZ3VyZSgpCiB2b2lkIEF1ZGlvRGVz
dGluYXRpb25JT1M6OnN0YXJ0KCkKIHsKICAgICBMT0coTWVkaWEsICJBdWRpb0Rlc3RpbmF0aW9u
SU9TOjpzdGFydCIpOwotICAgIGlmICghbV9tZWRpYVNlc3Npb24tPmNsaWVudFdpbGxCZWdpblBs
YXliYWNrKCkpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiICByZXR1cm5pbmcgYmVjYXVzZSBvZiBp
bnRlcnJ1cHRpb24iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIE9TU3RhdHVzIHJl
c3VsdCA9IEF1ZGlvT3V0cHV0VW5pdFN0YXJ0KG1fb3V0cHV0VW5pdCk7CiAgICAgaWYgKCFyZXN1
bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9E
ZXN0aW5hdGlvbklPUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlv
RGVzdGluYXRpb25JT1MuaAppbmRleCA2NGFmMTFhYmNhMjExZGMxOGI1M2M5YzhhMzliZWRiZTE0
MTI2ZTYwLi44MTI0ODdhMzNmZjBhOGM2M2FlYTRhMGNjN2Q0Nzg5Njc2Y2ZlM2EzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklP
Uy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0
aW9uSU9TLmgKQEAgLTMyLDcgKzMyLDYgQEAKIAogI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCiAjaW5j
bHVkZSAiQXVkaW9EZXN0aW5hdGlvbi5oIgotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgogI2lu
Y2x1ZGUgPEF1ZGlvVW5pdC9BdWRpb1VuaXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAK
QEAgLTQwLDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBBbiBBdWRpb0Rlc3Rp
bmF0aW9uIHVzaW5nIENvcmVBdWRpbydzIGRlZmF1bHQgb3V0cHV0IEF1ZGlvVW5pdAogCi1jbGFz
cyBBdWRpb0Rlc3RpbmF0aW9uSU9TIGZpbmFsIDogcHVibGljIEF1ZGlvRGVzdGluYXRpb24sIHBy
aXZhdGUgTWVkaWFTZXNzaW9uQ2xpZW50IHsKK2NsYXNzIEF1ZGlvRGVzdGluYXRpb25JT1MgZmlu
YWwgOiBwdWJsaWMgQXVkaW9EZXN0aW5hdGlvbiB7CiBwdWJsaWM6CiAgICAgQXVkaW9EZXN0aW5h
dGlvbklPUyhBdWRpb0lPQ2FsbGJhY2smLCBkb3VibGUgc2FtcGxlUmF0ZSk7CiAgICAgdmlydHVh
bCB+QXVkaW9EZXN0aW5hdGlvbklPUygpOwpAQCAtNTQsMTUgKzUzLDYgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIGJvb2wgaXNQbGF5aW5nKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc1BsYXlpbmc7
IH0KICAgICB2aXJ0dWFsIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX3NhbXBsZVJhdGU7IH0KIAotICAgIC8vIE1lZGlhU2Vzc2lvbkNsaWVudAotICAgIHZpcnR1
YWwgTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgbWVkaWFUeXBlKCkgY29uc3QgeyByZXR1cm4gTWVk
aWFTZXNzaW9uOjpXZWJBdWRpbzsgfQotICAgIHZpcnR1YWwgTWVkaWFTZXNzaW9uOjpNZWRpYVR5
cGUgcHJlc2VudGF0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIE1lZGlhU2Vzc2lvbjo6V2ViQXVk
aW87IH0KLSAgICB2aXJ0dWFsIGJvb2wgY2FuUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kcygp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZW1v
dGVDb250cm9sQ29tbWFuZChNZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSkg
eyB9Ci0gICAgdmlydHVhbCBib29sIG92ZXJyaWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rp
b24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBwYXVzZVBsYXli
YWNrKCkgb3ZlcnJpZGUgeyBzdG9wKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lUGxheWJh
Y2soKSBvdmVycmlkZSB7IHN0YXJ0KCk7IH0KLQogICAgIC8vIERlZmF1bHRPdXRwdXRVbml0IGNh
bGxiYWNrCiAgICAgc3RhdGljIE9TU3RhdHVzIGlucHV0UHJvYyh2b2lkKiB1c2VyRGF0YSwgQXVk
aW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MqLCBjb25zdCBBdWRpb1RpbWVTdGFtcCosIFVJbnQzMiBi
dXNOdW1iZXIsIFVJbnQzMiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEp
OwogICAgIHN0YXRpYyB2b2lkIGZyYW1lU2l6ZUNoYW5nZWRQcm9jKHZvaWQgKmluUmVmQ29uLCBB
dWRpb1VuaXQgaW5Vbml0LCBBdWRpb1VuaXRQcm9wZXJ0eUlEIGluSUQsIEF1ZGlvVW5pdFNjb3Bl
IGluU2NvcGUsIEF1ZGlvVW5pdEVsZW1lbnQgaW5FbGVtZW50KTsKQEAgLTc1LDcgKzY1LDYgQEAg
cHJpdmF0ZToKICAgICBBdWRpb1VuaXQgbV9vdXRwdXRVbml0OwogICAgIEF1ZGlvSU9DYWxsYmFj
ayYgbV9jYWxsYmFjazsKICAgICBSZWZQdHI8QXVkaW9CdXM+IG1fcmVuZGVyQnVzOwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxNZWRpYVNlc3Npb24+IG1fbWVkaWFTZXNzaW9uOwogCiAgICAgZG91Ymxl
IG1fc2FtcGxlUmF0ZTsKICAgICBib29sIG1faXNQbGF5aW5nOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0KaW5kZXggZmZlOTdi
Yzc4YTFiODQyOTZjY2I5ZDE2NmNjNmY1NThiMGNiODVmMi4uYmQ4Yzc1YmJkMmUxMTY3OWNlOTY2
ZjI3ZTdjODc2ZWE3OGVlOGE1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tCkBAIC0xNzYsMTEgKzE3NiwxMSBAQCBzaXpl
X3QgQXVkaW9TZXNzaW9uOjpudW1iZXJPZk91dHB1dENoYW5uZWxzKCkgY29uc3QKICAgICByZXR1
cm4gW1tBVkF1ZGlvU2Vzc2lvbiBzaGFyZWRJbnN0YW5jZV0gb3V0cHV0TnVtYmVyT2ZDaGFubmVs
c107CiB9CiAKLXZvaWQgQXVkaW9TZXNzaW9uOjpzZXRBY3RpdmUoYm9vbCBhY3RpdmUpCitib29s
IEF1ZGlvU2Vzc2lvbjo6dHJ5VG9TZXRBY3RpdmUoYm9vbCBhY3RpdmUpCiB7CiAgICAgTlNFcnJv
ciAqZXJyb3IgPSBuaWw7CiAgICAgW1tBVkF1ZGlvU2Vzc2lvbiBzaGFyZWRJbnN0YW5jZV0gc2V0
QWN0aXZlOmFjdGl2ZSBlcnJvcjomZXJyb3JdOwotICAgIEFTU0VSVCghZXJyb3IpOworICAgIHJl
dHVybiAhZXJyb3I7CiB9CiAKIHNpemVfdCBBdWRpb1Nlc3Npb246OnByZWZlcnJlZEJ1ZmZlclNp
emUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9z
L01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLmgKaW5kZXggNjFjYzAyMWYzZjVmMmZiZmVhMjRi
ZWVmN2JjZjJlZTljOGUzMWYwMC4uOTNlY2JjZWM2NGIwZWE3NTFlZDY2MTQwZGUyMWJmMzYyMTMw
ZGVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlh
U2Vzc2lvbk1hbmFnZXJJT1MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9p
b3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oCkBAIC01Myw3ICs1Myw3IEBAIHByaXZhdGU6CiAK
ICAgICBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2Vzc2lv
bldpbGxCZWdpblBsYXliYWNrKE1lZGlhU2Vzc2lvbiYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
Ym9vbCBzZXNzaW9uV2lsbEJlZ2luUGxheWJhY2soTWVkaWFTZXNzaW9uJikgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIHNlc3Npb25XaWxsRW5kUGxheWJhY2soTWVkaWFTZXNzaW9uJikgb3Zl
cnJpZGU7CiAgICAgCiAgICAgdm9pZCB1cGRhdGVOb3dQbGF5aW5nSW5mbygpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJ
T1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFu
YWdlcklPUy5tbQppbmRleCA2NjAwNDgxZDY3MWM2YTI0MjU5ZjA0YWI2MzdlMGE2ZTkyYjIzMjhj
Li43MDk0NjdlMmFlODI0ZjUxNTc1YWZkOGYzNjA5NGQ5YjUyN2ViZTQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFu
YWdlcklPUy5tbQpAQCAtMTg0LDEwICsxODQsMTMgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2Vy
aU9TOjpjb25maWd1cmVXaXJlTGVzc1RhcmdldE1vbml0b3JpbmcoKQogICAgICAgICBbbV9vYmpj
T2JzZXJ2ZXIgc3RvcE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXTsKIH0KIAotdm9pZCBNZWRpYVNl
c3Npb25NYW5hZ2VyaU9TOjpzZXNzaW9uV2lsbEJlZ2luUGxheWJhY2soTWVkaWFTZXNzaW9uJiBz
ZXNzaW9uKQorYm9vbCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpzZXNzaW9uV2lsbEJlZ2luUGxh
eWJhY2soTWVkaWFTZXNzaW9uJiBzZXNzaW9uKQogewotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnNlc3Npb25XaWxsQmVnaW5QbGF5YmFjayhzZXNzaW9uKTsKKyAgICBpZiAoIU1lZGlhU2Vzc2lv
bk1hbmFnZXI6OnNlc3Npb25XaWxsQmVnaW5QbGF5YmFjayhzZXNzaW9uKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCiAgICAgdXBkYXRlTm93UGxheWluZ0luZm8oKTsKKyAgICByZXR1cm4gdHJ1
ZTsKIH0KICAgICAKIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6c2Vzc2lvbldpbGxFbmRQ
bGF5YmFjayhNZWRpYVNlc3Npb24mIHNlc3Npb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAKaW5kZXggMGFh
ZTFmYzVhM2FkODM2ZmNiMzY4MDg4NWJiMjk2MGRkYzhlZjlmOS4uZGMzYTFiNTRlZDQzYjc0Mjg5
OGU1OTM5YTdhZGNmYzM4ZjRlMTUzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcApAQCAtODUsNyArODUs
NiBAQCBBdWRpb0Rlc3RpbmF0aW9uTWFjOjpBdWRpb0Rlc3RpbmF0aW9uTWFjKEF1ZGlvSU9DYWxs
YmFjayYgY2FsbGJhY2ssIGZsb2F0IHNhbXBsZQogICAgICwgbV9yZW5kZXJCdXMoQXVkaW9CdXM6
OmNyZWF0ZSgyLCBrQnVmZmVyU2l6ZSwgZmFsc2UpKQogICAgICwgbV9zYW1wbGVSYXRlKHNhbXBs
ZVJhdGUpCiAgICAgLCBtX2lzUGxheWluZyhmYWxzZSkKLSAgICAsIG1fbWVkaWFTZXNzaW9uKE1l
ZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0aGlzKSkKIHsKICAgICAvLyBPcGVuIGFuZCBpbml0aWFsaXpl
IERlZmF1bHRPdXRwdXRVbml0CiAgICAgQXVkaW9Db21wb25lbnQgY29tcDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5o
CmluZGV4IDIwMDI2ZjdhN2Q1MTE0ZDg1MjA1YzlmZmMwODZhY2FhNzQ3MTA4NmEuLjllODY5ZDBi
OGRhZWQ0ZjY5OTJiM2Q5M2Q2ODhmYjJjYWI5ZTY3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuaApAQCAtMzEs
NyArMzEsNiBAQAogCiAjaW5jbHVkZSAiQXVkaW9CdXMuaCIKICNpbmNsdWRlICJBdWRpb0Rlc3Rp
bmF0aW9uLmgiCi0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uLmgiCiAjaW5jbHVkZSA8QXVkaW9Vbml0
L0F1ZGlvVW5pdC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtMzksNyArMzgsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEFuIEF1ZGlvRGVzdGluYXRpb24gdXNpbmcgQ29y
ZUF1ZGlvJ3MgZGVmYXVsdCBvdXRwdXQgQXVkaW9Vbml0CiAKLWNsYXNzIEF1ZGlvRGVzdGluYXRp
b25NYWMgOiBwdWJsaWMgQXVkaW9EZXN0aW5hdGlvbiwgcHVibGljIE1lZGlhU2Vzc2lvbkNsaWVu
dCB7CitjbGFzcyBBdWRpb0Rlc3RpbmF0aW9uTWFjIDogcHVibGljIEF1ZGlvRGVzdGluYXRpb24g
ewogcHVibGljOgogICAgIEF1ZGlvRGVzdGluYXRpb25NYWMoQXVkaW9JT0NhbGxiYWNrJiwgZmxv
YXQgc2FtcGxlUmF0ZSk7CiAgICAgdmlydHVhbCB+QXVkaW9EZXN0aW5hdGlvbk1hYygpOwpAQCAt
NTMsMTkgKzUyLDkgQEAgcHJpdmF0ZToKICAgICBPU1N0YXR1cyByZW5kZXIoVUludDMyIG51bWJl
ck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSk7CiAgICAgdm9pZCBzZXRJc1BsYXlp
bmcoYm9vbCk7CiAKLSAgICB2aXJ0dWFsIE1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIG1lZGlhVHlw
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIE1lZGlhU2Vzc2lvbjo6V2ViQXVkaW87IH0KLSAg
ICB2aXJ0dWFsIE1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHByZXNlbnRhdGlvblR5cGUoKSBjb25z
dCB7IHJldHVybiBNZWRpYVNlc3Npb246OldlYkF1ZGlvOyB9Ci0gICAgdmlydHVhbCBib29sIGNh
blJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQo
TWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUpIG92ZXJyaWRlIHsgfQotICAg
IHZpcnR1YWwgYm9vbCBvdmVycmlkZUJhY2tncm91bmRQbGF5YmFja1Jlc3RyaWN0aW9uKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLQogICAgIHZpcnR1YWwgdm9pZCBzdGFydCgp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCBib29sIGlzUGxheWluZygpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNQbGF5aW5nOyB9Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgcGF1c2VQbGF5YmFjaygpIG92ZXJyaWRlIHsgc3RvcCgpOyB9Ci0gICAg
dmlydHVhbCB2b2lkIHJlc3VtZVBsYXliYWNrKCkgb3ZlcnJpZGUgeyBzdGFydCgpOyB9Ci0KICAg
ICB2aXJ0dWFsIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Nh
bXBsZVJhdGU7IH0KIAogICAgIEF1ZGlvVW5pdCBtX291dHB1dFVuaXQ7CkBAIC03NCwxMCArNjMs
NiBAQCBwcml2YXRlOgogCiAgICAgZmxvYXQgbV9zYW1wbGVSYXRlOwogICAgIGJvb2wgbV9pc1Bs
YXlpbmc7Ci0KLSNpZiBVU0UoQVVESU9fU0VTU0lPTikKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVk
aWFTZXNzaW9uPiBtX21lZGlhU2Vzc2lvbjsKLSNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1
ZGlvU2Vzc2lvbk1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVk
aW9TZXNzaW9uTWFjLmNwcAppbmRleCBjOTJhMzgwN2Y2YjY5YzNhYzQ1OTMxMjc4NGQ5ZDdmYjgz
ODkyZTQ1Li4xZDI4NGY2YzUxZjA1MGUzNTM3YzliZmZlZjUyMjNjZmJiNDMzNWU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFj
LmNwcApAQCAtMTA3LDkgKzEwNywxMCBAQCBzaXplX3QgQXVkaW9TZXNzaW9uOjpudW1iZXJPZk91
dHB1dENoYW5uZWxzKCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBBdWRpb1Nlc3Np
b246OnNldEFjdGl2ZShib29sKQorYm9vbCBBdWRpb1Nlc3Npb246OnRyeVRvU2V0QWN0aXZlKGJv
b2wpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc2l6
ZV90IEF1ZGlvU2Vzc2lvbjo6cHJlZmVycmVkQnVmZmVyU2l6ZSgpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvTWVkaWFTZXNzaW9uTWFuYWdlck1h
Yy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvTWVkaWFTZXNzaW9uTWFu
YWdlck1hYy5jcHAKaW5kZXggYWFmY2JkMjQ4MGJjZWYzMmVhZGQ4YTc4NDY2NWFkMWE0OWM2MjQw
NS4uZjViMjg4NTBkZDQxOGU3ZjAzZjYxNTcxMGY1YWY3MTNmZTgxZDlkNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL01lZGlhU2Vzc2lvbk1hbmFnZXJNYWMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9NZWRpYVNlc3Npb25N
YW5hZ2VyTWFjLmNwcApAQCAtNTcsOSArNTcsNiBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnVwZGF0ZVNlc3Npb25TdGF0ZSgpCiAgICAgfQogCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIGlm
IChhY3RpdmVBdWRpb1Nlc3Npb25SZXF1aXJlZCgpKQotICAgICAgICBBdWRpb1Nlc3Npb246OnNo
YXJlZFNlc3Npb24oKS5zZXRBY3RpdmUodHJ1ZSk7Ci0KICAgICBpZiAoIVNldHRpbmdzOjpzaG91
bGRNYW5hZ2VBdWRpb1Nlc3Npb25DYXRlZ29yeSgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAyZGU0YzI3NDAzZDBiZDRjOTAyYWJiMThi
Y2RkNGMxMmY3ZmM5YzU3Li44OWQxZjhiYzExZjVhZjY3OWMwNjc1MTFmNjk0ZTcyMWVjY2QxYTMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yNDY3LDYgKzI0NjcsOCBA
QCB2b2lkIEludGVybmFsczo6c2V0TWVkaWFTZXNzaW9uUmVzdHJpY3Rpb25zKGNvbnN0IFN0cmlu
ZyYgbWVkaWFUeXBlU3RyaW5nLCBjb25zdAogICAgICAgICByZXN0cmljdGlvbnMgKz0gTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6QmFja2dyb3VuZFByb2Nlc3NQbGF5YmFja1Jlc3RyaWN0ZWQ7CiAgICAg
aWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlc3RyaWN0aW9uc1N0cmluZywgIkJhY2tncm91bmRUYWJQ
bGF5YmFja1Jlc3RyaWN0ZWQiKSkKICAgICAgICAgcmVzdHJpY3Rpb25zICs9IE1lZGlhU2Vzc2lv
bk1hbmFnZXI6OkJhY2tncm91bmRUYWJQbGF5YmFja1Jlc3RyaWN0ZWQ7CisgICAgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKHJlc3RyaWN0aW9uc1N0cmluZywgIkludGVycnVwdGVkUGxheWJhY2tOb3RQ
ZXJtaXR0ZWQiKSkKKyAgICAgICAgcmVzdHJpY3Rpb25zICs9IE1lZGlhU2Vzc2lvbk1hbmFnZXI6
OkludGVycnVwdGVkUGxheWJhY2tOb3RQZXJtaXR0ZWQ7CiAKICAgICBNZWRpYVNlc3Npb25NYW5h
Z2VyOjpzaGFyZWRNYW5hZ2VyKCkuYWRkUmVzdHJpY3Rpb24obWVkaWFUeXBlLCByZXN0cmljdGlv
bnMpOwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IGIyOGZkYTFhMWI2NTY1MzI1ZjYwMjQwZjJhODMxNmMwMTZiZjFlYWQu
LjViNzc1YzUwYmY3MjMwNzAxMjM5OGZmZDhhYThiY2E1ZDE2NWQxMTggMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNSBAQAorMjAxNS0wMy0yOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbaU9TXSBXaGVuIFdlYiBBdWRpbyBpcyBpbnRlcnJ1cHRlZCBieSBhIHBob25lIGNh
bGwsIGl0IGNhbm5vdCBiZSByZXN0YXJ0ZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMxOTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHdlYmF1ZGlvL2F1ZGlvY29udGV4dC1zdGF0ZS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYmF1ZGlvL2F1ZGlvY29udGV4dC1zdGF0ZS1pbnRl
cnJ1cHRlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYmF1ZGlvL2F1ZGlvY29u
dGV4dC1zdGF0ZS1pbnRlcnJ1cHRlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJhdWRpby9h
dWRpb2NvbnRleHQtc3RhdGUuaHRtbDogQWRkZWQuCisKIDIwMTUtMDMtMjYgIEJyYWR5IEVpZHNv
biAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEFwcGx5IENvbnRlbnRFeHRlbnNpb24g
YWN0aW9ucyBhZnRlciByZWRpcmVjdHMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRp
by9hdWRpb2NvbnRleHQtc3RhdGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8v
YXVkaW9jb250ZXh0LXN0YXRlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YTY5NjVmYmRhYWNk
YzA3OWU1MzkzOTg2ZTcxYWI0MGQ3MjE2ZjQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViYXVkaW8vYXVkaW9jb250ZXh0LXN0YXRlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI2
IEBACitCYXNpYyB0ZXN0cyBmb3IgQXVkaW9Ob2RlIEFQSS4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCitQQVNTIGNvbnRleHQuc3RhdGUgaXMgInN1c3BlbmRlZCIKK25vZGUuY29ubmVj
dChjb250ZXh0LmRlc3RpbmF0aW9uKQorUEFTUyBjb250ZXh0LnN0YXRlIGlzICJydW5uaW5nIgor
Q2FsbGluZyBjb250ZXh0LnN1c3BlbmQoKQorUEFTUyBjb250ZXh0LnN1c3BlbmQoKSBwcm9taXNl
IHJlc29sdmVkCitQQVNTIGNvbnRleHQuc3RhdGUgaXMgInN1c3BlbmRlZCIKK0NhbGxpbmcgY29u
dGV4dC5yZXN1bWUoKQorUEFTUyBjb250ZXh0LnJlc3VtZSgpIHByb21pc2UgcmVzb2x2ZWQKK1BB
U1MgY29udGV4dC5zdGF0ZSBpcyAicnVubmluZyIKK0NhbGxpbmcgY29udGV4dC5jbG9zZSgpCitQ
QVNTIGNvbnRleHQuY2xvc2UoKSBwcm9taXNlIHJlc29sdmVkCitQQVNTIGNvbnRleHQuc3RhdGUg
aXMgImNsb3NlZCIKK0NhbGxpbmcgY29udGV4dC5yZXN1bWUoKSAoc2hvdWxkIGZhaWwpCitQQVNT
IGNvbnRleHQucmVzdW1lKCkgcHJvbWlzZSByZWplY3RlZCAoY29ycmVjdGx5KQorUEFTUyBjb250
ZXh0LnN0YXRlIGlzICJjbG9zZWQiCitDYWxsaW5nIGNvbnRleHQuc3VzcGVuZCgpIChzaG91bGQg
ZmFpbCkKK1BBU1MgY29udGV4dC5yZXN1bWUoKSBwcm9taXNlIHJlamVjdGVkIChjb3JyZWN0bHkp
CitQQVNTIGNvbnRleHQuc3RhdGUgaXMgImNsb3NlZCIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJh
dWRpby9hdWRpb2NvbnRleHQtc3RhdGUtaW50ZXJydXB0ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvd2ViYXVkaW8vYXVkaW9jb250ZXh0LXN0YXRlLWludGVycnVwdGVkLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hMzg1MTExYTY2ZWQ3YmY2ZDQ4MWY0YjZkZjc5NGY2N2FmNDVlODZiCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9jb250ZXh0LXN0YXRl
LWludGVycnVwdGVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUwIEBACitCYXNpYyB0ZXN0cyBm
b3IgQXVkaW9Ob2RlIEFQSS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIGNv
bnRleHQuc3RhdGUgaXMgInN1c3BlbmRlZCIKK25vZGUuY29ubmVjdChjb250ZXh0LmRlc3RpbmF0
aW9uKQorRVZFTlQgc3RhdGVjaGFuZ2UKK1BBU1MgY29udGV4dC5zdGF0ZSBpcyAicnVubmluZyIK
KworVGVzdCAxOiByZXN1bWUoKSB3aGlsZSBpbnRlcnJ1cHRlZCBpcyByZXNvbHZlZCBhZnRlciB0
aGUgaW50ZXJydXB0aW9uIGVuZHMuCitpbnRlcm5hbHMuYmVnaW5NZWRpYVNlc3Npb25JbnRlcnJ1
cHRpb24oKQorRVZFTlQgc3RhdGVjaGFuZ2UKK1BBU1MgY29udGV4dC5zdGF0ZSBpcyAiaW50ZXJy
dXB0ZWQiCitpbnRlcm5hbHMuc2V0TWVkaWFTZXNzaW9uUmVzdHJpY3Rpb25zKCJXZWJBdWRpbyIs
ICJJbnRlcnJ1cHRlZFBsYXliYWNrTm90UGVybWl0dGVkIikKK0NhbGxpbmcgY29udGV4dC5yZXN1
bWUoKQorRGVsYXlpbmcgMTAwbXMKK1BBU1MgY29udGV4dC5zdGF0ZSBpcyAiaW50ZXJydXB0ZWQi
CitpbnRlcm5hbHMuZW5kTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCJNYXlSZXN1bWVQbGF5aW5n
IikKK1BBU1MgY29udGV4dC5yZXN1bWUoKSBwcm9taXNlIHJlc29sdmVkCitQQVNTIGNvbnRleHQu
c3RhdGUgaXMgInJ1bm5pbmciCisKK1Rlc3QgMjogcmVzdW1lKCkgd2hpbGUgaW50ZXJydXB0ZWQg
d2lsbCBjYXVzZSBpbnRlcnJ1cHRpb24gdG8gZW5kLgoraW50ZXJuYWxzLmJlZ2luTWVkaWFTZXNz
aW9uSW50ZXJydXB0aW9uKCkKK0VWRU5UIHN0YXRlY2hhbmdlCitQQVNTIGNvbnRleHQuc3RhdGUg
aXMgImludGVycnVwdGVkIgoraW50ZXJuYWxzLnNldE1lZGlhU2Vzc2lvblJlc3RyaWN0aW9ucygi
V2ViQXVkaW8iLCAiIikKK0NhbGxpbmcgY29udGV4dC5yZXN1bWUoKQorUEFTUyBjb250ZXh0LnJl
c3VtZSgpIHByb21pc2UgcmVzb2x2ZWQKK1BBU1MgY29udGV4dC5zdGF0ZSBpcyAicnVubmluZyIK
KworVGVzdCAzOiBydW5uaW5nIEF1ZGlvQ29udGV4dHMgd2lsbCBub3QgcmVzdW1lIGFmdGVyIGFu
IGludGVycnVwdGlvbiBlbmRzLgoraW50ZXJuYWxzLmJlZ2luTWVkaWFTZXNzaW9uSW50ZXJydXB0
aW9uKCkKK0VWRU5UIHN0YXRlY2hhbmdlCitQQVNTIGNvbnRleHQuc3RhdGUgaXMgImludGVycnVw
dGVkIgoraW50ZXJuYWxzLmVuZE1lZGlhU2Vzc2lvbkludGVycnVwdGlvbigiIikKK0VWRU5UIHN0
YXRlY2hhbmdlCitQQVNTIGNvbnRleHQuc3RhdGUgaXMgInN1c3BlbmRlZCIKKworVGVzdCA0OiBy
ZXN1bWUoKSB3aGlsZSBpbnRlcnJ1cHRlZCB3aWxsIG5vdCByZXN1bWUgcGxheWJhY2sgYWZ0ZXIg
YW4gaW50ZXJydXB0aW9uLgoraW50ZXJuYWxzLmJlZ2luTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9u
KCkKK0VWRU5UIHN0YXRlY2hhbmdlCitQQVNTIGNvbnRleHQuc3RhdGUgaXMgImludGVycnVwdGVk
IgorQ2FsbGluZyBjb250ZXh0LnJlc3VtZSgpCitpbnRlcm5hbHMuZW5kTWVkaWFTZXNzaW9uSW50
ZXJydXB0aW9uKCIiKQorRVZFTlQgc3RhdGVjaGFuZ2UKK1BBU1MgY29udGV4dC5zdGF0ZSBpcyAi
c3VzcGVuZGVkIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvY29udGV4dC1zdGF0
ZS1pbnRlcnJ1cHRlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9jb250ZXh0LXN0
YXRlLWludGVycnVwdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzA5NjIwNjJlMmEzYmRlM2YyN2QyNjgw
YzM0ODJkMmRhMDQyZDAzZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlv
L2F1ZGlvY29udGV4dC1zdGF0ZS1pbnRlcnJ1cHRlZC5odG1sCkBAIC0wLDAgKzEsMTUwIEBACis8
IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIHNyYz0icmVzb3VyY2VzL2F1ZGlvLXRlc3RpbmcuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ0Jhc2ljIHRlc3RzIGZvciBBdWRpb05v
ZGUgQVBJLicpOworCit2YXIgY29udGV4dCA9IG51bGw7Cit2YXIgbm9kZSA9IG51bGw7CisKK2Z1
bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKKyAgICB9CisgICAgCisgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisg
ICAgY29udGV4dCA9IG5ldyB3ZWJraXRBdWRpb0NvbnRleHQoKTsKKworICAgIHNob3VsZEJlKCdj
b250ZXh0LnN0YXRlJywgJyJzdXNwZW5kZWQiJyk7CisgICAgY29udGV4dC5vbnN0YXRlY2hhbmdl
ID0gYmVnYW5SdW5uaW5nOworCisgICAgbm9kZSA9IGNvbnRleHQuY3JlYXRlQnVmZmVyU291cmNl
KCk7CisgICAgZXZhbEFuZExvZygnbm9kZS5jb25uZWN0KGNvbnRleHQuZGVzdGluYXRpb24pJyk7
CisKK30KKworZnVuY3Rpb24gYmVnYW5SdW5uaW5nKGUpIHsKKyAgICBkZWJ1ZygnRVZFTlQgJyAr
IGV2ZW50LnR5cGUpOworICAgIHNob3VsZEJlKCdjb250ZXh0LnN0YXRlJywgJyJydW5uaW5nIicp
OworCisgICAgZGVidWcoJycpOworICAgIGRlYnVnKCdUZXN0IDE6IHJlc3VtZSgpIHdoaWxlIGlu
dGVycnVwdGVkIGlzIHJlc29sdmVkIGFmdGVyIHRoZSBpbnRlcnJ1cHRpb24gZW5kcy4nKTsKKwor
ICAgIGNvbnRleHQub25zdGF0ZWNoYW5nZSA9IGZpcnN0SW50ZXJydXB0aW9uU3RhcnRlZDsKKyAg
ICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgZXZhbEFuZExvZygnaW50ZXJuYWxzLmJl
Z2luTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCknKTsKKworfQorCitmdW5jdGlvbiBmaXJzdElu
dGVycnVwdGlvblN0YXJ0ZWQoZSkgeworICAgIGRlYnVnKCdFVkVOVCAnICsgZXZlbnQudHlwZSk7
CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuc3RhdGUnLCAnImludGVycnVwdGVkIicpOworICAgIGlm
ICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBldmFsQW5kTG9nKCdpbnRlcm5hbHMuc2V0TWVk
aWFTZXNzaW9uUmVzdHJpY3Rpb25zKCJXZWJBdWRpbyIsICJJbnRlcnJ1cHRlZFBsYXliYWNrTm90
UGVybWl0dGVkIiknKTsKKworICAgIGNvbnRleHQub25zdGF0ZWNoYW5nZSA9IG51bGw7CisKKyAg
ICBkZWJ1ZygnQ2FsbGluZyBjb250ZXh0LnJlc3VtZSgpJyk7CisgICAgY29udGV4dC5yZXN1bWUo
KS50aGVuKGZpcnN0UmVzdW1lU3VjY2VlZGVkKTsKKyAgICBkZWJ1ZygnRGVsYXlpbmcgMTAwbXMn
KTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICBzaG91bGRCZSgnY29udGV4
dC5zdGF0ZScsICciaW50ZXJydXB0ZWQiJyk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxz
KQorICAgICAgICAgICAgZXZhbEFuZExvZygnaW50ZXJuYWxzLmVuZE1lZGlhU2Vzc2lvbkludGVy
cnVwdGlvbigiTWF5UmVzdW1lUGxheWluZyIpJyk7CisgICAgfSwgMTAwKTsKK30KKworZnVuY3Rp
b24gZmlyc3RSZXN1bWVTdWNjZWVkZWQoKSB7CisgICAgdGVzdFBhc3NlZCgnY29udGV4dC5yZXN1
bWUoKSBwcm9taXNlIHJlc29sdmVkJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuc3RhdGUnLCAn
InJ1bm5pbmciJyk7CisKKyAgICBkZWJ1ZygnJyk7CisgICAgZGVidWcoJ1Rlc3QgMjogcmVzdW1l
KCkgd2hpbGUgaW50ZXJydXB0ZWQgd2lsbCBjYXVzZSBpbnRlcnJ1cHRpb24gdG8gZW5kLicpCisK
KyAgICBjb250ZXh0Lm9uc3RhdGVjaGFuZ2UgPSBzZWNvbmRJbnRlcnJ1cHRpb25TdGFydGVkOwor
ICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBldmFsQW5kTG9nKCdpbnRlcm5hbHMu
YmVnaW5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oKScpOworfQorCitmdW5jdGlvbiBzZWNvbmRJ
bnRlcnJ1cHRpb25TdGFydGVkKGUpIHsKKyAgICBkZWJ1ZygnRVZFTlQgJyArIGV2ZW50LnR5cGUp
OworICAgIHNob3VsZEJlKCdjb250ZXh0LnN0YXRlJywgJyJpbnRlcnJ1cHRlZCInKTsKKyAgICBp
ZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgZXZhbEFuZExvZygnaW50ZXJuYWxzLnNldE1l
ZGlhU2Vzc2lvblJlc3RyaWN0aW9ucygiV2ViQXVkaW8iLCAiIiknKTsKKworICAgIGNvbnRleHQu
b25zdGF0ZWNoYW5nZSA9IG51bGw7CisKKyAgICBkZWJ1ZygnQ2FsbGluZyBjb250ZXh0LnJlc3Vt
ZSgpJyk7CisgICAgY29udGV4dC5yZXN1bWUoKS50aGVuKHNlY29uZFJlc3VtZVN1Y2NlZWRlZCk7
Cit9CisKK2Z1bmN0aW9uIHNlY29uZFJlc3VtZVN1Y2NlZWRlZCgpIHsKKyAgICB0ZXN0UGFzc2Vk
KCdjb250ZXh0LnJlc3VtZSgpIHByb21pc2UgcmVzb2x2ZWQnKTsKKyAgICBzaG91bGRCZSgnY29u
dGV4dC5zdGF0ZScsICcicnVubmluZyInKTsKKworICAgIGRlYnVnKCcnKTsKKyAgICBkZWJ1Zygn
VGVzdCAzOiBydW5uaW5nIEF1ZGlvQ29udGV4dHMgd2lsbCBub3QgcmVzdW1lIGFmdGVyIGFuIGlu
dGVycnVwdGlvbiBlbmRzLicpCisKKyAgICBjb250ZXh0Lm9uc3RhdGVjaGFuZ2UgPSB0aGlyZElu
dGVycnVwdGlvblN0YXJ0ZWQ7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGV2
YWxBbmRMb2coJ2ludGVybmFscy5iZWdpbk1lZGlhU2Vzc2lvbkludGVycnVwdGlvbigpJyk7Cit9
CisKK2Z1bmN0aW9uIHRoaXJkSW50ZXJydXB0aW9uU3RhcnRlZCgpIHsKKyAgICBkZWJ1ZygnRVZF
TlQgJyArIGV2ZW50LnR5cGUpOworICAgIHNob3VsZEJlKCdjb250ZXh0LnN0YXRlJywgJyJpbnRl
cnJ1cHRlZCInKTsKKworICAgIGNvbnRleHQub25zdGF0ZWNoYW5nZSA9IHRoaXJkSW50ZXJydXB0
aW9uRW5kZWQ7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGV2YWxBbmRMb2co
J2ludGVybmFscy5lbmRNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oIiIpJyk7Cit9CisKK2Z1bmN0
aW9uIHRoaXJkSW50ZXJydXB0aW9uRW5kZWQoKSB7CisgICAgZGVidWcoJ0VWRU5UICcgKyBldmVu
dC50eXBlKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5zdGF0ZScsICcic3VzcGVuZGVkIicpOwor
CisgICAgZGVidWcoJycpOworICAgIGRlYnVnKCdUZXN0IDQ6IHJlc3VtZSgpIHdoaWxlIGludGVy
cnVwdGVkIHdpbGwgbm90IHJlc3VtZSBwbGF5YmFjayBhZnRlciBhbiBpbnRlcnJ1cHRpb24uJykK
KworICAgIGNvbnRleHQub25zdGF0ZWNoYW5nZSA9IGZvdXJ0aEludGVycnVwdGlvblN0YXJ0ZWQ7
CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGV2YWxBbmRMb2coJ2ludGVybmFs
cy5iZWdpbk1lZGlhU2Vzc2lvbkludGVycnVwdGlvbigpJyk7Cit9CisKK2Z1bmN0aW9uIGZvdXJ0
aEludGVycnVwdGlvblN0YXJ0ZWQoKSB7CisgICAgZGVidWcoJ0VWRU5UICcgKyBldmVudC50eXBl
KTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5zdGF0ZScsICciaW50ZXJydXB0ZWQiJyk7CisKKyAg
ICBjb250ZXh0Lm9uc3RhdGVjaGFuZ2UgPSBmb3VydGhJbnRlcnJ1cHRpb25FbmRlZDsKKworICAg
IGRlYnVnKCdDYWxsaW5nIGNvbnRleHQucmVzdW1lKCknKTsKKyAgICBjb250ZXh0LnJlc3VtZSgp
OworCisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGV2YWxBbmRMb2coJ2ludGVy
bmFscy5lbmRNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oIiIpJyk7Cit9CisKK2Z1bmN0aW9uIGZv
dXJ0aEludGVycnVwdGlvbkVuZGVkKCkgeworICAgIGRlYnVnKCdFVkVOVCAnICsgZXZlbnQudHlw
ZSk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuc3RhdGUnLCAnInN1c3BlbmRlZCInKTsKKyAgICBm
aW5pc2hKU1Rlc3QoKTsKK30KKworcnVuVGVzdCgpOworCis8L3NjcmlwdD4KKworPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9jb250ZXh0LXN0YXRl
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb2NvbnRleHQtc3RhdGUuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43NWZiNGM1YjFjMzNmMDk3YjgxM2RkMTZjMGYyMTU4MTg1YTk0NzcxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9jb250ZXh0LXN0YXRlLmh0bWwK
QEAgLTAsMCArMSwxMDkgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJyZXNvdXJjZXMvYXVkaW8tdGVzdGluZy5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignQmFz
aWMgdGVzdHMgZm9yIEF1ZGlvTm9kZSBBUEkuJyk7CisKK3ZhciBjb250ZXh0ID0gbnVsbDsKK3Zh
ciBub2RlID0gbnVsbDsKKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKyAgICAKKyAgICB3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7CisKKyAgICBjb250ZXh0ID0gbmV3IHdlYmtpdEF1ZGlvQ29udGV4dCgp
OworCisgICAgc2hvdWxkQmUoJ2NvbnRleHQuc3RhdGUnLCAnInN1c3BlbmRlZCInKTsKKworICAg
IG5vZGUgPSBjb250ZXh0LmNyZWF0ZUJ1ZmZlclNvdXJjZSgpOworICAgIGV2YWxBbmRMb2coJ25v
ZGUuY29ubmVjdChjb250ZXh0LmRlc3RpbmF0aW9uKScpOworCisgICAgc2hvdWxkQmUoJ2NvbnRl
eHQuc3RhdGUnLCAnInJ1bm5pbmciJyk7CisKKyAgICBkZWJ1ZygnQ2FsbGluZyBjb250ZXh0LnN1
c3BlbmQoKScpOworICAgIGNvbnRleHQuc3VzcGVuZCgpLnRoZW4oc3VzcGVuZFN1Y2NlZWRlZCwg
c3VzcGVuZEZhaWxlZCk7Cit9CisKK2Z1bmN0aW9uIHN1c3BlbmRGYWlsZWQoKSB7CisgICAgdGVz
dEZhaWxlZCgnY29udGV4dC5zdXNwZW5kKCkgcHJvbWlzZSByZWplY3RlZCcpOworICAgIGZpbmlz
aEpTVGVzdCgpOworfQorCitmdW5jdGlvbiBzdXNwZW5kU3VjY2VlZGVkKCkgeworICAgIHRlc3RQ
YXNzZWQoJ2NvbnRleHQuc3VzcGVuZCgpIHByb21pc2UgcmVzb2x2ZWQnKTsKKyAgICBzaG91bGRC
ZSgnY29udGV4dC5zdGF0ZScsICcic3VzcGVuZGVkIicpOworCisgICAgZGVidWcoJ0NhbGxpbmcg
Y29udGV4dC5yZXN1bWUoKScpOworICAgIGNvbnRleHQucmVzdW1lKCkudGhlbihyZXN1bWVTdWNj
ZWVkZWQsIHJlc3VtZUZhaWxlZCk7Cit9CisKK2Z1bmN0aW9uIHJlc3VtZUZhaWxlZCgpIHsKKyAg
ICB0ZXN0RmFpbGVkKCdjb250ZXh0LnJlc3VtZSgpIHByb21pc2UgcmVqZWN0ZWQnKTsKKyAgICBm
aW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gcmVzdW1lU3VjY2VlZGVkKCkgeworICAgIHRl
c3RQYXNzZWQoJ2NvbnRleHQucmVzdW1lKCkgcHJvbWlzZSByZXNvbHZlZCcpOworICAgIHNob3Vs
ZEJlKCdjb250ZXh0LnN0YXRlJywgJyJydW5uaW5nIicpOworCisgICAgZGVidWcoJ0NhbGxpbmcg
Y29udGV4dC5jbG9zZSgpJyk7CisgICAgY29udGV4dC5jbG9zZSgpLnRoZW4oY2xvc2VTdWNjZWVk
ZWQsIGNsb3NlRmFpbGVkKTsKK30KKworZnVuY3Rpb24gY2xvc2VGYWlsZWQoKSB7IAorICAgIHRl
c3RGYWlsZWQoJ2NvbnRleHQuY2xvc2UoKSBwcm9taXNlIHJlamVjdGVkJyk7CisgICAgZmluaXNo
SlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIGNsb3NlU3VjY2VlZGVkKCkgeworICAgIHRlc3RQYXNz
ZWQoJ2NvbnRleHQuY2xvc2UoKSBwcm9taXNlIHJlc29sdmVkJyk7CisgICAgc2hvdWxkQmUoJ2Nv
bnRleHQuc3RhdGUnLCAnImNsb3NlZCInKTsKKworICAgIGRlYnVnKCdDYWxsaW5nIGNvbnRleHQu
cmVzdW1lKCkgKHNob3VsZCBmYWlsKScpOworICAgIGNvbnRleHQucmVzdW1lKCkudGhlbihyZXN1
bWVTdWNjZWVkZWRJbmNvcnJlY3RseSwgcmVzdW1lRmFpbGVkQ29ycmVjdGx5KTsKK30KKworZnVu
Y3Rpb24gcmVzdW1lU3VjY2VlZGVkSW5jb3JyZWN0bHkoKSB7CisgICAgdGVzdEZhaWxlZCgnY29u
dGV4dC5yZXN1bWUoKSBwcm9taXNlIHJlc29sdmVkIChzaG91bGQgaGF2ZSByZWplY3RlZCknKTsK
KyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gcmVzdW1lRmFpbGVkQ29ycmVjdGx5
KCkgeworICAgIHRlc3RQYXNzZWQoJ2NvbnRleHQucmVzdW1lKCkgcHJvbWlzZSByZWplY3RlZCAo
Y29ycmVjdGx5KScpOworICAgIHNob3VsZEJlKCdjb250ZXh0LnN0YXRlJywgJyJjbG9zZWQiJyk7
CisKKyAgICBkZWJ1ZygnQ2FsbGluZyBjb250ZXh0LnN1c3BlbmQoKSAoc2hvdWxkIGZhaWwpJyk7
CisgICAgY29udGV4dC5zdXNwZW5kKCkudGhlbihzdXNwZW5kU3VjY2VlZGVkSW5jb3JyZWN0bHks
IHN1c3BlbmRGYWlsZWRDb3JyZWN0bHkpOworfQorCitmdW5jdGlvbiBzdXNwZW5kU3VjY2VlZGVk
SW5jb3JyZWN0bHkoKSB7CisgICAgdGVzdEZhaWxlZCgnY29udGV4dC5zdXNwZW5kKCkgcHJvbWlz
ZSByZXNvbHZlZCAoc2hvdWxkIGhhdmUgcmVqZWN0ZWQpJyk7CisgICAgZmluaXNoSlNUZXN0KCk7
Cit9CisKK2Z1bmN0aW9uIHN1c3BlbmRGYWlsZWRDb3JyZWN0bHkoKSB7CisgICAgdGVzdFBhc3Nl
ZCgnY29udGV4dC5yZXN1bWUoKSBwcm9taXNlIHJlamVjdGVkIChjb3JyZWN0bHkpJyk7CisgICAg
c2hvdWxkQmUoJ2NvbnRleHQuc3RhdGUnLCAnImNsb3NlZCInKTsKKyAgICBmaW5pc2hKU1Rlc3Qo
KTsKK30KKworcnVuVGVzdCgpOworCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249684</attachid>
            <date>2015-03-29 08:32:38 -0700</date>
            <delta_ts>2015-03-29 11:55:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143190-20150329083157.patch</filename>
            <type>text/plain</type>
            <size>64277</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyMDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGY4MDEzZmVhNWNkMGEy
ZTIwODRkZjA0MWFiNWM4NzFlOWQ2YWM1Yi4uYTk4ZTA2M2VlYjkxNWZmYTY3ZmZlMDUyYjQ2NDA5
NDIyOGZmYmUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMyBAQAorMjAxNS0wMy0yOCAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBXaGVuIFdlYiBB
dWRpbyBpcyBpbnRlcnJ1cHRlZCBieSBhIHBob25lIGNhbGwsIGl0IGNhbm5vdCBiZSByZXN0YXJ0
ZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMx
OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0
czogd2ViYXVkaW8vYXVkaW9jb250ZXh0LXN0YXRlLWludGVycnVwdGVkLmh0bWwKKyAgICAgICAg
ICAgICAgIHdlYmF1ZGlvL2F1ZGlvY29udGV4dC1zdGF0ZS5odG1sCisKKyAgICAgICAgSW1wbGVt
ZW50IHRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhbmQgcHJvcGVydGllcyBmcm9tIHRoZSBXZWIgQXVk
aW8gc3BlYzoKKyAgICAgICAgY2xvc2UoKSwgc3VzcGVuZCgpLCByZXN1bWUoKSwgb25zdGF0ZWNo
YW5nZS4KKworICAgICAgICBBdWRpb0NvbnRleHQgd2lsbCB0YWtlIG1vcmUgcmVzcG9uc2liaWxp
dHkgZm9yIHRyYWNraW5nIHN0YXRlIGFuZCBpbnRlcnJ1cHRpb25zIChhbmQKKyAgICAgICAgQXVk
aW9EZXN0aW5hdGlvbiB3aWxsIGdpdmUgdXAgdGhhdCByZXNwb25zaWJpbGl0eSkuIFRoaXMgbWVh
bnMgQXVkaW9Db250ZXh0IG11c3QgYmUgYQorICAgICAgICBNZWRpYVNlc3Npb25DbGllbnQsIGFu
ZCBvd24gaXRzIG93biBNZWRpYVNlc3Npb24uIEluIHJldHVybiwgQXVkaW9EZXN0aW5hdGlvbklP
UyBhbmQgCisgICAgICAgIEF1ZGlvRGVzdGluYXRpb25NYWMgcmVsaW5xdWlzaCBib3RoLgorCisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9Db250ZXh0OjpBdWRpb0NvbnRleHQpOiBTZXQgZGVmYXVsdCB2YWx1ZXMgaW4g
aGVhZGVyLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0Ojp1bmluaXRpYWxpemUpOiBD
YWxsIHNldFN0YXRlKCkgaW5zdGVhZCBvZiBzZXR0aW5nIG1fc3RhdGUuCisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0NvbnRleHQ6OmFkZFJlYWN0aW9uKTogQWRkZWQuIEFwcGVuZCB0aGUgY2FsbGJh
Y2sgdG8gdGhlIGFwcHJvcHJpYXRlIHZlY3RvciBmb3IgdGhlIHN0YXRlLgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9Db250ZXh0OjpzZXRTdGF0ZSk6IEFkZGVkLiBGaXJlIGV2ZW50cyBhbmQgcmVz
b2x2ZSB0aGUgYXBwcm9wcmlhdGUgcmVhY3Rpb24gY2FsbGJhY2tzIGZvciB0aGUgbmV3IHN0YXRl
LgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpzdGF0ZSk6IFJldHVybiBhIHN0cmlu
ZyByZXByZXNlbnRpbmcgdGhlIGNvbnRleHQncyBzdGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvQ29udGV4dDo6c3RvcCk6IENsb3NlIHRoZSBldmVudCBxdWV1ZS4KKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvQ29udGV4dDo6c3RhcnRSZW5kZXJpbmcpOiBDYWxsIHNldFN0YXRlKCkuCisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmZpcmVDb21wbGV0aW9uRXZlbnQpOiBDYWxsIHNl
dFN0YXRlKCkuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OnN1c3BlbmRDb250ZXh0
KTogQWRkZWQuIEFkZCByZWFjdGlvbiBjYWxsYmFjayBhbmQgY2FsbCBzdXNwZW5kKCkgb24gdGhl
IGRlc3RpbmF0aW9uIG5vZGUuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OnJlc3Vt
ZUNvbnRleHQpOiBBZGRlZC4gQWRkIHJlYWN0aW9uIGNhbGxiYWNrIGFuZCBjYWxsIHJlc3VtZSgp
IG9uIHRoZSBkZXN0aW5hdGlvbiBub2RlLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0
OjpjbG9zZUNvbnRleHQpOiBBZGRlZC4gQWRkIHJlYWN0aW9uIGNhbGxiYWNrIGFuZCBjYWxsIGNs
b3NlKCkgb24gdGhlIGRlc3RpbmF0aW9uIG5vZGUuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Nv
bnRleHQ6OnN1c3BlbmRQbGF5YmFjayk6IEFkZGVkLiBTdXNwZW5kIHBsYXliYWNrIGFuZCBzZXQg
c3RhdGUgdG8gaW50ZXJydXB0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6Om1h
eVJlc3VtZVBsYXliYWNrKTogQWRkZWQuIENvbmRpdGlvbmFsbHkgcmVzdW1lIHBsYXliYWNrLgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTQXVkaW9Db250ZXh0OjpzdXNwZW5kKTogQWRkZWQuIENyZWF0ZSBhbmQgcmV0
dXJuIGEgbmV3IFByb21pc2Ugb2JqZWN0LgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb0NvbnRl
eHQ6OnJlc3VtZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb0NvbnRleHQ6OmNs
b3NlKTogRGl0dG8uCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRs
OiBBZGQgbmV3IG1ldGhvZHMgYW5kIHByb3BlcnRpZXMuCisKKyAgICAgICAgRXh0ZW5zaXZlIG9y
Z2FuaXphdGlvbmFsIGNoYW5nZXMgd2VyZSBtYWRlIHRvIEF1ZGlvQ29udGV4dC5oIHRvIGdyb3Vw
IGluc3RhbmNlCisgICAgICAgIHZhcmlhYmxlcyB0b2dldGhlciBhbmQgYWRkIEMrKzExIGluaXRp
YWxpemVycyBpbiB0aGVpciBkZWNsYXJhdGlvbnM6CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjptZWRp
YVR5cGUpOiBNb3ZlZCBmcm9tIEF1ZGlvRGVzdGluYXRpb25Ob2RlLgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9Db250ZXh0OjpwcmVzZW50YXRpb25UeXBlKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0NvbnRleHQ6OmNhblJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6ZGlkUmVjZWl2ZVJlbW90ZUNvbnRy
b2xDb21tYW5kKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6Om92ZXJy
aWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rpb24pOiBEaXR0by4KKyAgICAgICAgCisgICAg
ICAgIE90aGVyIGNoYW5nZXMgdG8gc3VwcG9ydCB0aGUgbmV3IEF1ZGlvQ29udGV4dCBtZXRob2Rz
OgorCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnJlc3VtZSk6IEFkZCBlbXB0
eSBkZWZhdWx0IHZpcnR1YWwgbWV0aG9kLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5h
dGlvbk5vZGU6OnN1c3BlbmQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGlu
YXRpb25Ob2RlOjpjbG9zZSk6IERpdHRvLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVm
YXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRB
dWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVzdW1lKTogQWRkZWQuIFBhc3MgdG8gQXVkaW9EZXN0aW5h
dGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3Vz
cGVuZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25O
b2RlOjpjbG9zZSk6IERpdHRvLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1
ZGlvRGVzdGluYXRpb25Ob2RlLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Qcm9taXNl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFdyYXBwZXI6OnJlc29sdmUpOiBBZGQgYW4g
b3ZlcmxvYWQgZm9yIGEgbnVsbHB0ciByZXNvbHZlIHZhbHVlLgorICAgICAgICAqIGRvbS9FdmVu
dE5hbWVzLmg6IEFkZGVkICdzdGF0ZWNoYW5nZScuCisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2s6OlRhc2spOiBBZGQgYSBjb25zdHJ1Y3RvciB3aGljaCB0YWtlcyBhIHZvaWQoKSBjYWxs
YmFjay4KKworICAgICAgICBNb2RpZnkgTWVkaWFTZXNzaW9uLCBBdWRpb1Nlc3Npb24sIGFuZCBN
ZWRpYVNlc3Npb25NYW5hZ2VyIHRvIHN1cHBvcnQgdGhlIG5ldworICAgICAgICBpbnRlcnJ1cHRp
b24gYmVoYXZpb3IuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c3VzcGVuZFBsYXliYWNrKTogUmVuYW1l
ZCBmcm9tIHBhdXNlUGxheWJhY2soKS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6Om1heVJlc3VtZVBsYXliYWNrKTogUmVuYW1lZCBmcm9tIHJlc3VtZVBsYXliYWNrKCkuCisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vQXVkaW9TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6dHJ5
VG9TZXRBY3RpdmUpOiBSZW5hbWVkIGZyb20gc2V0QWN0aXZlLiBSZXR1cm4gdHJ1ZSBieSBkZWZh
dWx0LgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpzZXRBY3RpdmUpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNl
c3Npb246OmJlZ2luSW50ZXJydXB0aW9uKTogcGF1c2VQbGF5YmFjaygpIHdhcyByZW5hbWVkIHRv
IHN1c3BlbmRQbGF5YmFjaygpLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uOjplbmRJ
bnRlcnJ1cHRpb24pOiBBbHdheXMgbm90aWZ5IHRoZSBjbGllbnQsIHRlbGxpbmcgaXQgd2hldGhl
ciB0byByZXN1bWUuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246OmNsaWVudFdpbGxC
ZWdpblBsYXliYWNrKTogQmFpbCBlYXJseSBpZiByZWVudHJhbnQuICBDaGVjayB0aGUgKG5ldykg
CisgICAgICAgICAgICByZXR1cm4gdmFsdWUgb2Ygc2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKCkg
YW5kIHJlbWVtYmVyIHRvIHJlc3VtZSBvbmNlIHRoZSBpbnRlcnJ1cHRpb24gZW5kcy4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6Y2xpZW50V2lsbFBhdXNlUGxheWJhY2spOiBCYWls
IGVhcmx5IGlmIHJlZW50cmFudC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6cGF1
c2VTZXNzaW9uKTogcGF1c2VQbGF5YmFjaygpIHdhcyByZW5hbWVkIHRvIHN1c3BlbmRQbGF5YmFj
aygpLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5oOgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKTogUmV0dXJu
IGZhbHNlIGlmIG5vdCBhbGxvd2VkIHRvIGJyZWFrIGludGVycnVwdGlvbiBvciAKKyAgICAgICAg
ICAgIGlmIGFjdGl2YXRpbmcgdGhlIGF1ZGlvIHNlc3Npb24gZmFpbGVkLiBPdGhlcndpc2UsIGVu
ZCB0aGUgaW50ZXJydXB0aW9uLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lv
bk1hbmFnZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlv
bklPUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uSU9TOjpBdWRpb0Rl
c3RpbmF0aW9uSU9TKTogbV9tZWRpYVNlc3Npb24gd2FzIHJlbW92ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0Rlc3RpbmF0aW9uSU9TOjpzdGFydCk6IERpdHRvLgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmg6CisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vz
c2lvbjo6dHJ5VG9TZXRBY3RpdmUpOiBSZW5hbWVkIGZyb20gc2V0QWN0aXZlLiBSZXR1cm4gZmFs
c2UgaWYgdGhlIEFWQXVkaW9TZXNzaW9uIGNvdWxkIG5vdCBiZSBhY3RpdmF0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnNldEFjdGl2ZSk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnNlc3Npb25XaWxsQmVnaW5QbGF5YmFjayk6
IERvIG5vdCB1cGRhdGUgdGhlIG5vdyBwbGF5aW5nIGluZm8gaWYgc2Vzc2lvbiBwbGF5YmFjayB3
YXMgYmxvY2tlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlv
bk1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uTWFjOjpBdWRpb0Rl
c3RpbmF0aW9uTWFjKTogbV9tZWRpYVNlc3Npb24gd2FzIHJlbW92ZWQuCisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
U2Vzc2lvbjo6dHJ5VG9TZXRBY3RpdmUpOiBSZW5hbWVkIGZyb20gc2V0QWN0aXZlKCkuIFJldHVy
biB0cnVlIGJ5IGRlZmF1bHQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnNldEFj
dGl2ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL01lZGlhU2Vzc2lv
bk1hbmFnZXJNYWMuY3BwOgorICAgICAgICAoTWVkaWFTZXNzaW9uTWFuYWdlcjo6dXBkYXRlU2Vz
c2lvblN0YXRlKTogTm8gbG9uZ2VyIGF0dGVtcHQgdG8gYWN0aXZhdGUgdGhlIHNlc3Npb24sIGFz
IHRoaXMgaXMgZG9uZQorICAgICAgICAgICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldp
bGxCZWdpblBsYXliYWNrKCkuCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRNZWRpYVNlc3Npb25SZXN0cmljdGlvbnMpOiBB
ZGQgIkludGVycnVwdGVkUGxheWJhY2tOb3RQZXJtaXR0ZWQiLgorCiAyMDE1LTAzLTI3ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQg
d2lsbCBmaXJlICdzZWVrZWQnIGJlZm9yZSBzZWVrIGNvbXBsZXRlcywgbGVhZGluZyB0byBjdXJy
ZW50VGltZSBkaXNjb250aW51aXRpZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggYzgyMTFlM2FiZWYxMDQwZmYzNmMxNDU3YzNi
ZGYxMjFmYmNiMjhjNi4uMDQ3ZjY5OGEwMzJkZWE5ZjI3ZTFlNTZkMGQxYTMwNDU2NTc0Zjc2YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNw
cApAQCAtNDQsOSArNDQsMTEgQEAKICNpbmNsdWRlICJEZWxheU5vZGUuaCIKICNpbmNsdWRlICJE
b2N1bWVudC5oIgogI2luY2x1ZGUgIkR5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaCIKKyNpbmNsdWRl
ICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZG
VEZyYW1lLmgiCiAjaW5jbHVkZSAiR2Fpbk5vZGUuaCIKKyNpbmNsdWRlICJHZW5lcmljRXZlbnRR
dWV1ZS5oIgogI2luY2x1ZGUgIkhSVEZEYXRhYmFzZUxvYWRlci5oIgogI2luY2x1ZGUgIkhSVEZQ
YW5uZXIuaCIKICNpbmNsdWRlICJPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaCIKQEAgLTU1
LDEwICs1NywxMSBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYW5uZXJOb2RlLmgi
CiAjaW5jbHVkZSAiUGVyaW9kaWNXYXZlLmgiCi0jaW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENh
bGxTdGFjay5oPgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3Jp
cHRQcm9jZXNzb3JOb2RlLmgiCiAjaW5jbHVkZSAiV2F2ZVNoYXBlck5vZGUuaCIKKyNpbmNsdWRl
IDxpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogI2luY2x1ZGUgIk1lZGlhU3RyZWFt
LmgiCkBAIC0xMjYsMTkgKzEyOSw5IEBAIFJlZlB0cjxBdWRpb0NvbnRleHQ+IEF1ZGlvQ29udGV4
dDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAvLyBDb25z
dHJ1Y3RvciBmb3IgcmVuZGVyaW5nIHRvIHRoZSBhdWRpbyBoYXJkd2FyZS4KIEF1ZGlvQ29udGV4
dDo6QXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IEFjdGl2ZURPTU9iamVj
dCgmZG9jdW1lbnQpCi0gICAgLCBtX2lzU3RvcFNjaGVkdWxlZChmYWxzZSkKLSAgICAsIG1faXNJ
bml0aWFsaXplZChmYWxzZSkKLSAgICAsIG1faXNBdWRpb1RocmVhZEZpbmlzaGVkKGZhbHNlKQot
ICAgICwgbV9kZXN0aW5hdGlvbk5vZGUoMCkKLSAgICAsIG1faXNEZWxldGlvblNjaGVkdWxlZChm
YWxzZSkKLSAgICAsIG1fYXV0b21hdGljUHVsbE5vZGVzTmVlZFVwZGF0aW5nKGZhbHNlKQotICAg
ICwgbV9jb25uZWN0aW9uQ291bnQoMCkKLSAgICAsIG1fYXVkaW9UaHJlYWQoMCkKKyAgICAsIG1f
bWVkaWFTZXNzaW9uKE1lZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0aGlzKSkKKyAgICAsIG1fZXZlbnRR
dWV1ZShzdGQ6Om1ha2VfdW5pcXVlPEdlbmVyaWNFdmVudFF1ZXVlPigqdGhpcykpCiAgICAgLCBt
X2dyYXBoT3duZXJUaHJlYWQoVW5kZWZpbmVkVGhyZWFkSWRlbnRpZmllcikKLSAgICAsIG1faXNP
ZmZsaW5lQ29udGV4dChmYWxzZSkKLSAgICAsIG1fYWN0aXZlU291cmNlQ291bnQoMCkKLSAgICAs
IG1fcmVzdHJpY3Rpb25zKE5vUmVzdHJpY3Rpb25zKQotICAgICwgbV9zdGF0ZShTdGF0ZTo6U3Vz
cGVuZGVkKQogewogICAgIGNvbnN0cnVjdENvbW1vbigpOwogCkBAIC0xNTEsMTggKzE0NCwxMCBA
QCBBdWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQpCiAvLyBDb25z
dHJ1Y3RvciBmb3Igb2ZmbGluZSAobm9uLXJlYWx0aW1lKSByZW5kZXJpbmcuCiBBdWRpb0NvbnRl
eHQ6OkF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIHVuc2lnbmVkIG51bWJlck9mQ2hh
bm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEFj
dGl2ZURPTU9iamVjdCgmZG9jdW1lbnQpCi0gICAgLCBtX2lzU3RvcFNjaGVkdWxlZChmYWxzZSkK
LSAgICAsIG1faXNJbml0aWFsaXplZChmYWxzZSkKLSAgICAsIG1faXNBdWRpb1RocmVhZEZpbmlz
aGVkKGZhbHNlKQotICAgICwgbV9kZXN0aW5hdGlvbk5vZGUoMCkKLSAgICAsIG1fYXV0b21hdGlj
UHVsbE5vZGVzTmVlZFVwZGF0aW5nKGZhbHNlKQotICAgICwgbV9jb25uZWN0aW9uQ291bnQoMCkK
LSAgICAsIG1fYXVkaW9UaHJlYWQoMCkKLSAgICAsIG1fZ3JhcGhPd25lclRocmVhZChVbmRlZmlu
ZWRUaHJlYWRJZGVudGlmaWVyKQogICAgICwgbV9pc09mZmxpbmVDb250ZXh0KHRydWUpCi0gICAg
LCBtX2FjdGl2ZVNvdXJjZUNvdW50KDApCi0gICAgLCBtX3Jlc3RyaWN0aW9ucyhOb1Jlc3RyaWN0
aW9ucykKLSAgICAsIG1fc3RhdGUoU3RhdGU6OlN1c3BlbmRlZCkKKyAgICAsIG1fbWVkaWFTZXNz
aW9uKE1lZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0aGlzKSkKKyAgICAsIG1fZXZlbnRRdWV1ZShzdGQ6
Om1ha2VfdW5pcXVlPEdlbmVyaWNFdmVudFF1ZXVlPigqdGhpcykpCisgICAgLCBtX2dyYXBoT3du
ZXJUaHJlYWQoVW5kZWZpbmVkVGhyZWFkSWRlbnRpZmllcikKIHsKICAgICBjb25zdHJ1Y3RDb21t
b24oKTsKIApAQCAtMjc3LDcgKzI2Miw3IEBAIHZvaWQgQXVkaW9Db250ZXh0Ojp1bmluaXRpYWxp
emUoKQogICAgICAgICAtLXNfaGFyZHdhcmVDb250ZXh0Q291bnQ7CiAKICAgICAgICAgLy8gT2Zm
bGluZSBjb250ZXh0cyBtb3ZlIHRvICdDbG9zZWQnIHN0YXRlIHdoZW4gZGlzcGF0Y2hpbmcgdGhl
IGNvbXBsZXRpb24gZXZlbnQuCi0gICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6Q2xvc2VkOworICAg
ICAgICBzZXRTdGF0ZShTdGF0ZTo6Q2xvc2VkKTsKICAgICB9CiAKICAgICAvLyBHZXQgcmlkIG9m
IHRoZSBzb3VyY2VzIHdoaWNoIG1heSBzdGlsbCBiZSBwbGF5aW5nLgpAQCAtMjkxLDYgKzI3Niw1
NiBAQCBib29sIEF1ZGlvQ29udGV4dDo6aXNJbml0aWFsaXplZCgpIGNvbnN0CiAgICAgcmV0dXJu
IG1faXNJbml0aWFsaXplZDsKIH0KIAordm9pZCBBdWRpb0NvbnRleHQ6OmFkZFJlYWN0aW9uKFN0
YXRlIHN0YXRlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gcmVhY3Rpb24pCit7CisgICAgc2l6ZV90
IHN0YXRlSW5kZXggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHN0YXRlKTsKKyAgICBpZiAoc3RhdGVJ
bmRleCA+PSBtX3N0YXRlUmVhY3Rpb25zLnNpemUoKSkKKyAgICAgICAgbV9zdGF0ZVJlYWN0aW9u
cy5yZXNpemUoc3RhdGVJbmRleCArIDEpOworCisgICAgbV9zdGF0ZVJlYWN0aW9uc1tzdGF0ZUlu
ZGV4XS5hcHBlbmQocmVhY3Rpb24pOworfQorCit2b2lkIEF1ZGlvQ29udGV4dDo6c2V0U3RhdGUo
U3RhdGUgc3RhdGUpCit7CisgICAgaWYgKG1fc3RhdGUgPT0gc3RhdGUpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fc3RhdGUgPSBzdGF0ZTsKKyAgICBtX2V2ZW50UXVldWUtPmVucXVldWVFdmVu
dChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zdGF0ZWNoYW5nZUV2ZW50LCB0cnVlLCBmYWxz
ZSkpOworCisgICAgc2l6ZV90IHN0YXRlSW5kZXggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHN0YXRl
KTsKKyAgICBpZiAoc3RhdGVJbmRleCA+PSBtX3N0YXRlUmVhY3Rpb25zLnNpemUoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgVmVjdG9yPHN0ZDo6ZnVuY3Rpb248dm9pZCgpPj4gcmVhY3Rpb25z
OworICAgIG1fc3RhdGVSZWFjdGlvbnNbc3RhdGVJbmRleF0uc3dhcChyZWFjdGlvbnMpOworCisg
ICAgZm9yIChhdXRvJiByZWFjdGlvbiA6IHJlYWN0aW9ucykKKyAgICAgICAgcmVhY3Rpb24oKTsK
K30KKworY29uc3QgQXRvbWljU3RyaW5nJiBBdWRpb0NvbnRleHQ6OnN0YXRlKCkgY29uc3QKK3sK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzdXNwZW5kZWQoInN1c3Bl
bmRlZCIpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHJ1bm5pbmco
InJ1bm5pbmciKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBpbnRl
cnJ1cHRlZCgiaW50ZXJydXB0ZWQiKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWlj
U3RyaW5nPiBjbG9zZWQoImNsb3NlZCIpOworCisgICAgc3dpdGNoIChtX3N0YXRlKSB7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIEZBTExUSFJP
VUdIOworICAgIGNhc2UgU3RhdGU6OlN1c3BlbmRlZDoKKyAgICAgICAgcmV0dXJuIHN1c3BlbmRl
ZDsKKyAgICBjYXNlIFN0YXRlOjpSdW5uaW5nOgorICAgICAgICByZXR1cm4gcnVubmluZzsKKyAg
ICBjYXNlIFN0YXRlOjpJbnRlcnJ1cHRlZDoKKyAgICAgICAgcmV0dXJuIGludGVycnVwdGVkOwor
ICAgIGNhc2UgU3RhdGU6OkNsb3NlZDoKKyAgICAgICAgcmV0dXJuIGNsb3NlZDsKKyAgICB9Cit9
CisKIHZvaWQgQXVkaW9Db250ZXh0OjpzdG9wRGlzcGF0Y2godm9pZCogdXNlckRhdGEpCiB7CiAg
ICAgQXVkaW9Db250ZXh0KiBjb250ZXh0ID0gcmVpbnRlcnByZXRfY2FzdDxBdWRpb0NvbnRleHQq
Pih1c2VyRGF0YSk7CkBAIC0zMTEsNiArMzQ2LDggQEAgdm9pZCBBdWRpb0NvbnRleHQ6OnN0b3Ao
KQogCiAgICAgZG9jdW1lbnQoKS0+dXBkYXRlSXNQbGF5aW5nQXVkaW8oKTsKIAorICAgIG1fZXZl
bnRRdWV1ZS0+Y2xvc2UoKTsKKwogICAgIC8vIERvbid0IGNhbGwgdW5pbml0aWFsaXplKCkgaW1t
ZWRpYXRlbHkgaGVyZSBiZWNhdXNlIHRoZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IGlzIGluIHRo
ZSBtaWRkbGUKICAgICAvLyBvZiBkZWFsaW5nIHdpdGggYWxsIG9mIGl0cyBBY3RpdmVET01PYmpl
Y3RzIGF0IHRoaXMgcG9pbnQuIHVuaW5pdGlhbGl6ZSgpIGNhbiBkZS1yZWZlcmVuY2Ugb3RoZXIK
ICAgICAvLyBBY3RpdmVET01PYmplY3RzIHNvIGxldCdzIHNjaGVkdWxlIHVuaW5pdGlhbGl6ZSgp
IHRvIGJlIGNhbGxlZCBsYXRlci4KQEAgLTk4MCw3ICsxMDE3LDcgQEAgdm9pZCBBdWRpb0NvbnRl
eHQ6OnN0YXJ0UmVuZGVyaW5nKCkKICAgICAgICAgICAgIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rp
b24oQXVkaW9Db250ZXh0OjpSZXF1aXJlUGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rp
b24pOwogICAgIH0KICAgICBkZXN0aW5hdGlvbigpLT5zdGFydFJlbmRlcmluZygpOwotICAgIG1f
c3RhdGUgPSBTdGF0ZTo6UnVubmluZzsKKyAgICBzZXRTdGF0ZShTdGF0ZTo6UnVubmluZyk7CiB9
CiAKIHZvaWQgQXVkaW9Db250ZXh0OjptZWRpYUNhblN0YXJ0KCkKQEAgLTEwMTEsNyArMTA0OCw3
IEBAIHZvaWQgQXVkaW9Db250ZXh0OjpmaXJlQ29tcGxldGlvbkV2ZW50KCkKICAgICAgICAgcmV0
dXJuOwogICAgICAgICAKICAgICBBdWRpb0J1ZmZlciogcmVuZGVyZWRCdWZmZXIgPSBtX3JlbmRl
clRhcmdldC5nZXQoKTsKLSAgICBtX3N0YXRlID0gU3RhdGU6OkNsb3NlZDsKKyAgICBzZXRTdGF0
ZShTdGF0ZTo6Q2xvc2VkKTsKIAogICAgIEFTU0VSVChyZW5kZXJlZEJ1ZmZlcik7CiAgICAgaWYg
KCFyZW5kZXJlZEJ1ZmZlcikKQEAgLTEwMjAsNyArMTA1Nyw3IEBAIHZvaWQgQXVkaW9Db250ZXh0
OjpmaXJlQ29tcGxldGlvbkV2ZW50KCkKICAgICAvLyBBdm9pZCBmaXJpbmcgdGhlIGV2ZW50IGlm
IHRoZSBkb2N1bWVudCBoYXMgYWxyZWFkeSBnb25lIGF3YXkuCiAgICAgaWYgKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSkgewogICAgICAgICAvLyBDYWxsIHRoZSBvZmZsaW5lIHJlbmRlcmluZyBj
b21wbGV0aW9uIGV2ZW50IGxpc3RlbmVyLgotICAgICAgICBkaXNwYXRjaEV2ZW50KE9mZmxpbmVB
dWRpb0NvbXBsZXRpb25FdmVudDo6Y3JlYXRlKHJlbmRlcmVkQnVmZmVyKSk7CisgICAgICAgIG1f
ZXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KE9mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudDo6Y3Jl
YXRlKHJlbmRlcmVkQnVmZmVyKSk7CiAgICAgfQogfQogCkBAIC0xMDM0LDYgKzEwNzEsMTI3IEBA
IHZvaWQgQXVkaW9Db250ZXh0OjpkZWNyZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgpCiAgICAgLS1t
X2FjdGl2ZVNvdXJjZUNvdW50OwogfQogCit2b2lkIEF1ZGlvQ29udGV4dDo6c3VzcGVuZENvbnRl
eHQoc3RkOjpmdW5jdGlvbjx2b2lkKCk+IHN1Y2Nlc3NDYWxsYmFjaywgc3RkOjpmdW5jdGlvbjx2
b2lkKCk+IGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgQVNTRVJU
KHN1Y2Nlc3NDYWxsYmFjayk7CisgICAgQVNTRVJUKGZhaWx1cmVDYWxsYmFjayk7CisKKyAgICBp
ZiAoaXNPZmZsaW5lQ29udGV4dCgpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6U3Vz
cGVuZGVkKSB7CisgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soc3Vj
Y2Vzc0NhbGxiYWNrKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX3N0YXRl
ID09IFN0YXRlOjpDbG9zZWQgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6SW50ZXJydXB0ZWQgfHwgIW1f
ZGVzdGluYXRpb25Ob2RlKSB7CisgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9z
dFRhc2soZmFpbHVyZUNhbGxiYWNrKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGFk
ZFJlYWN0aW9uKFN0YXRlOjpTdXNwZW5kZWQsIHN1Y2Nlc3NDYWxsYmFjayk7CisKKyAgICBpZiAo
IW1fbWVkaWFTZXNzaW9uLT5jbGllbnRXaWxsUGF1c2VQbGF5YmFjaygpKQorICAgICAgICByZXR1
cm47CisKKyAgICBSZWZQdHI8QXVkaW9Db250ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOworICAgIG1f
ZGVzdGluYXRpb25Ob2RlLT5zdXNwZW5kKFtzdHJvbmdUaGlzXSB7CisgICAgICAgIHN0cm9uZ1Ro
aXMtPnNldFN0YXRlKFN0YXRlOjpTdXNwZW5kZWQpOworICAgIH0pOworfQorCit2b2lkIEF1ZGlv
Q29udGV4dDo6cmVzdW1lQ29udGV4dChzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gc3VjY2Vzc0NhbGxi
YWNrLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2Rl
JiBlYykKK3sKKyAgICBBU1NFUlQoc3VjY2Vzc0NhbGxiYWNrKTsKKyAgICBBU1NFUlQoZmFpbHVy
ZUNhbGxiYWNrKTsKKworICAgIGlmIChpc09mZmxpbmVDb250ZXh0KCkpIHsKKyAgICAgICAgZWMg
PSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICht
X3N0YXRlID09IFN0YXRlOjpSdW5uaW5nKSB7CisgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+cG9zdFRhc2soc3VjY2Vzc0NhbGxiYWNrKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQgfHwgIW1fZGVzdGluYXRpb25Ob2Rl
KSB7CisgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soZmFpbHVyZUNh
bGxiYWNrKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGFkZFJlYWN0aW9uKFN0YXRl
OjpSdW5uaW5nLCBzdWNjZXNzQ2FsbGJhY2spOworCisgICAgaWYgKCFtX21lZGlhU2Vzc2lvbi0+
Y2xpZW50V2lsbEJlZ2luUGxheWJhY2soKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRy
PEF1ZGlvQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKKyAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+
cmVzdW1lKFtzdHJvbmdUaGlzXSB7CisgICAgICAgIHN0cm9uZ1RoaXMtPnNldFN0YXRlKFN0YXRl
OjpSdW5uaW5nKTsKKyAgICB9KTsKK30KKwordm9pZCBBdWRpb0NvbnRleHQ6OmNsb3NlQ29udGV4
dChzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gc3VjY2Vzc0NhbGxiYWNrLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQoKT4sIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIEFTU0VSVChzdWNjZXNzQ2FsbGJhY2sp
OworCisgICAgaWYgKGlzT2ZmbGluZUNvbnRleHQoKSkgeworICAgICAgICBlYyA9IElOVkFMSURf
U1RBVEVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fc3RhdGUgPT0g
U3RhdGU6OkNsb3NlZCB8fCAhbV9kZXN0aW5hdGlvbk5vZGUpIHsKKyAgICAgICAgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhzdWNjZXNzQ2FsbGJhY2spOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgYWRkUmVhY3Rpb24oU3RhdGU6OkNsb3NlZCwgc3VjY2Vzc0NhbGxi
YWNrKTsKKworICAgIFJlZlB0cjxBdWRpb0NvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7CisgICAg
bV9kZXN0aW5hdGlvbk5vZGUtPmNsb3NlKFtzdHJvbmdUaGlzLCBzdWNjZXNzQ2FsbGJhY2tdIHsK
KyAgICAgICAgc3Ryb25nVGhpcy0+c2V0U3RhdGUoU3RhdGU6OkNsb3NlZCk7CisgICAgICAgIHN0
cm9uZ1RoaXMtPnVuaW5pdGlhbGl6ZSgpOworICAgIH0pOworfQorCisKK3ZvaWQgQXVkaW9Db250
ZXh0OjpzdXNwZW5kUGxheWJhY2soKQoreworICAgIGlmICghbV9kZXN0aW5hdGlvbk5vZGUgfHwg
bV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9z
dGF0ZSA9PSBTdGF0ZTo6U3VzcGVuZGVkKSB7CisgICAgICAgIGlmIChtX21lZGlhU2Vzc2lvbi0+
c3RhdGUoKSA9PSBNZWRpYVNlc3Npb246OkludGVycnVwdGVkKQorICAgICAgICAgICAgc2V0U3Rh
dGUoU3RhdGU6OkludGVycnVwdGVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJl
ZlB0cjxBdWRpb0NvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7CisgICAgbV9kZXN0aW5hdGlvbk5v
ZGUtPnN1c3BlbmQoW3N0cm9uZ1RoaXNdIHsKKyAgICAgICAgYm9vbCBpbnRlcnJ1cHRlZCA9IHN0
cm9uZ1RoaXMtPm1fbWVkaWFTZXNzaW9uLT5zdGF0ZSgpID09IE1lZGlhU2Vzc2lvbjo6SW50ZXJy
dXB0ZWQ7CisgICAgICAgIHN0cm9uZ1RoaXMtPnNldFN0YXRlKGludGVycnVwdGVkID8gU3RhdGU6
OkludGVycnVwdGVkIDogU3RhdGU6OlN1c3BlbmRlZCk7CisgICAgfSk7Cit9CisKK3ZvaWQgQXVk
aW9Db250ZXh0OjptYXlSZXN1bWVQbGF5YmFjayhib29sIHNob3VsZFJlc3VtZSkKK3sKKyAgICBp
ZiAoIW1fZGVzdGluYXRpb25Ob2RlIHx8IG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCB8fCBtX3N0
YXRlID09IFN0YXRlOjpSdW5uaW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIXNob3Vs
ZFJlc3VtZSkgeworICAgICAgICBzZXRTdGF0ZShTdGF0ZTo6U3VzcGVuZGVkKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIFJlZlB0cjxBdWRpb0NvbnRleHQ+IHN0cm9uZ1RoaXModGhp
cyk7CisgICAgbV9kZXN0aW5hdGlvbk5vZGUtPnJlc3VtZShbc3Ryb25nVGhpc10geworICAgICAg
ICBzdHJvbmdUaGlzLT5zZXRTdGF0ZShTdGF0ZTo6UnVubmluZyk7CisgICAgfSk7Cit9CisKKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCmluZGV4IGFl
ODc3MmJhMGI1M2Q3OTc3OGJiMmVmMzU5OGNiMDAwYWQxOGI0NjQuLjIwNjI3NTE4NDU2NjUyMjY1
OTdmNGY4ZTY3YmExZTQyNDgwM2QzZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0NvbnRleHQuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkV2ZW50
TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIk1lZGlhQ2Fu
U3RhcnRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgogI2luY2x1ZGUgPGF0
b21pYz4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFk
Lmg+CkBAIC01Nyw2ICs1OCw3IEBAIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiBjbGFzcyBDaGFu
bmVsTWVyZ2VyTm9kZTsKIGNsYXNzIENoYW5uZWxTcGxpdHRlck5vZGU7CiBjbGFzcyBHYWluTm9k
ZTsKK2NsYXNzIEdlbmVyaWNFdmVudFF1ZXVlOwogY2xhc3MgUGFubmVyTm9kZTsKIGNsYXNzIEF1
ZGlvTGlzdGVuZXI7CiBjbGFzcyBBdWRpb1N1bW1pbmdKdW5jdGlvbjsKQEAgLTc0LDcgKzc2LDcg
QEAgY2xhc3MgUGVyaW9kaWNXYXZlOwogLy8gQXVkaW9Db250ZXh0IGlzIHRoZSBjb3JuZXJzdG9u
ZSBvZiB0aGUgd2ViIGF1ZGlvIEFQSSBhbmQgYWxsIEF1ZGlvTm9kZXMgYXJlIGNyZWF0ZWQgZnJv
bSBpdC4KIC8vIEZvciB0aHJlYWQgc2FmZXR5IGJldHdlZW4gdGhlIGF1ZGlvIHRocmVhZCBhbmQg
dGhlIG1haW4gdGhyZWFkLCBpdCBoYXMgYSByZW5kZXJpbmcgZ3JhcGggbG9ja2luZyBtZWNoYW5p
c20uIAogCi1jbGFzcyBBdWRpb0NvbnRleHQgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QXVkaW9Db250ZXh0PiwgcHVibGljIEV2ZW50VGFyZ2V0
V2l0aElubGluZURhdGEsIHB1YmxpYyBNZWRpYUNhblN0YXJ0TGlzdGVuZXIsIHB1YmxpYyBBdWRp
b1Byb2R1Y2VyIHsKK2NsYXNzIEF1ZGlvQ29udGV4dCA6IHB1YmxpYyBBY3RpdmVET01PYmplY3Qs
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBdWRpb0NvbnRleHQ+LCBwdWJsaWMgRXZlbnRU
YXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciwgcHVibGlj
IEF1ZGlvUHJvZHVjZXIsIHByaXZhdGUgTWVkaWFTZXNzaW9uQ2xpZW50IHsKIHB1YmxpYzoKICAg
ICAvLyBDcmVhdGUgYW4gQXVkaW9Db250ZXh0IGZvciByZW5kZXJpbmcgdG8gdGhlIGF1ZGlvIGhh
cmR3YXJlLgogICAgIHN0YXRpYyBSZWZQdHI8QXVkaW9Db250ZXh0PiBjcmVhdGUoRG9jdW1lbnQm
LCBFeGNlcHRpb25Db2RlJik7CkBAIC0xMDQsNiArMTA2LDExIEBAIHB1YmxpYzoKIAogICAgIEF1
ZGlvTGlzdGVuZXIqIGxpc3RlbmVyKCkgeyByZXR1cm4gbV9saXN0ZW5lci5nZXQoKTsgfQogCisg
ICAgdm9pZCBzdXNwZW5kQ29udGV4dChzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4sIHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgcmVzdW1lQ29udGV4dChzdGQ6
OmZ1bmN0aW9uPHZvaWQoKT4sIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiwgRXhjZXB0aW9uQ29kZSYp
OworICAgIHZvaWQgY2xvc2VDb250ZXh0KHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiwgc3RkOjpmdW5j
dGlvbjx2b2lkKCk+LCBFeGNlcHRpb25Db2RlJik7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBz
dGF0ZSgpIGNvbnN0OworCiAgICAgLy8gVGhlIEF1ZGlvTm9kZSBjcmVhdGUgbWV0aG9kcyBhcmUg
Y2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZCAoZnJvbSBKYXZhU2NyaXB0KS4KICAgICBQYXNzUmVm
UHRyPEF1ZGlvQnVmZmVyU291cmNlTm9kZT4gY3JlYXRlQnVmZmVyU291cmNlKCk7CiAjaWYgRU5B
QkxFKFZJREVPKQpAQCAtMjY0LDkgKzI3MSwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgbGF6eUlu
aXRpYWxpemUoKTsKICAgICB2b2lkIHVuaW5pdGlhbGl6ZSgpOwogCisgICAgZW51bSBjbGFzcyBT
dGF0ZSB7IFN1c3BlbmRlZCwgUnVubmluZywgSW50ZXJydXB0ZWQsIENsb3NlZCB9OworICAgIHZv
aWQgc2V0U3RhdGUoU3RhdGUpOworCiAgICAgLy8gU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBjYWxs
cyBzdG9wIHR3aWNlLgogICAgIC8vIFdlJ2QgbGlrZSB0byBzY2hlZHVsZSBvbmx5IG9uZSBzdG9w
IGFjdGlvbiBmb3IgdGhlbS4KLSAgICBib29sIG1faXNTdG9wU2NoZWR1bGVkOwogICAgIHN0YXRp
YyB2b2lkIHN0b3BEaXNwYXRjaCh2b2lkKiB1c2VyRGF0YSk7CiAgICAgdm9pZCBjbGVhcigpOwog
CkBAIC0yNzksOSArMjg4LDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNQbGF5aW5n
QXVkaW8oKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcGFnZU11dGVkU3RhdGVEaWRDaGFu
Z2UoKSBvdmVycmlkZTsKIAotICAgIGJvb2wgbV9pc0luaXRpYWxpemVkOwotICAgIGJvb2wgbV9p
c0F1ZGlvVGhyZWFkRmluaXNoZWQ7Ci0KICAgICAvLyBUaGUgY29udGV4dCBpdHNlbGYga2VlcHMg
YSByZWZlcmVuY2UgdG8gYWxsIHNvdXJjZSBub2Rlcy4gIFRoZSBzb3VyY2Ugbm9kZXMsIHRoZW4g
cmVmZXJlbmNlIGFsbCBub2RlcyB0aGV5J3JlIGNvbm5lY3RlZCB0by4KICAgICAvLyBJbiB0dXJu
LCB0aGVzZSBub2RlcyByZWZlcmVuY2UgYWxsIG5vZGVzIHRoZXkncmUgY29ubmVjdGVkIHRvLiAg
QWxsIG5vZGVzIGFyZSB1bHRpbWF0ZWx5IGNvbm5lY3RlZCB0byB0aGUgQXVkaW9EZXN0aW5hdGlv
bk5vZGUuCiAgICAgLy8gV2hlbiB0aGUgY29udGV4dCBkZXJlZmVyZW5jZXMgYSBzb3VyY2Ugbm9k
ZSwgaXQgd2lsbCBiZSBkZWFjdGl2YXRlZCBmcm9tIHRoZSByZW5kZXJpbmcgZ3JhcGggYWxvbmcg
d2l0aCBhbGwgb3RoZXIgbm9kZXMgaXQgaXMKQEAgLTI5OCw4ICszMDQsMjQgQEAgcHJpdmF0ZToK
ICAgICAvLyBNYWtlIHN1cmUgdG8gZGVyZWZlcmVuY2UgdGhlbSBoZXJlLgogICAgIHZvaWQgZGVy
ZWZVbmZpbmlzaGVkU291cmNlTm9kZXMoKTsKIAotICAgIFJlZlB0cjxBdWRpb0Rlc3RpbmF0aW9u
Tm9kZT4gbV9kZXN0aW5hdGlvbk5vZGU7Ci0gICAgUmVmUHRyPEF1ZGlvTGlzdGVuZXI+IG1fbGlz
dGVuZXI7CisgICAgLy8gTWVkaWFTZXNzaW9uQ2xpZW50CisgICAgdmlydHVhbCBNZWRpYVNlc3Np
b246Ok1lZGlhVHlwZSBtZWRpYVR5cGUoKSBjb25zdCB7IHJldHVybiBNZWRpYVNlc3Npb246Oldl
YkF1ZGlvOyB9CisgICAgdmlydHVhbCBNZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBwcmVzZW50YXRp
b25UeXBlKCkgY29uc3QgeyByZXR1cm4gTWVkaWFTZXNzaW9uOjpXZWJBdWRpbzsgfQorICAgIHZp
cnR1YWwgYm9vbCBjYW5SZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmRzKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21t
YW5kKE1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlKSB7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgb3ZlcnJpZGVCYWNrZ3JvdW5kUGxheWJhY2tSZXN0cmljdGlvbigpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHN1c3BlbmRQbGF5YmFjaygpIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgdm9pZCBtYXlSZXN1bWVQbGF5YmFjayhib29sIHNob3VsZFJlc3Vt
ZSkgb3ZlcnJpZGU7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgdm9pZCByZWZF
dmVudFRhcmdldCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZF
dmVudFRhcmdldCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQorCisgICAgdm9pZCBoYW5kbGVEaXJ0
eUF1ZGlvU3VtbWluZ0p1bmN0aW9ucygpOworICAgIHZvaWQgaGFuZGxlRGlydHlBdWRpb05vZGVP
dXRwdXRzKCk7CisKKyAgICB2b2lkIGFkZFJlYWN0aW9uKFN0YXRlLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQoKT4pOworICAgIHZvaWQgdXBkYXRlQXV0b21hdGljUHVsbE5vZGVzKCk7CiAKICAgICAvLyBP
bmx5IGFjY2Vzc2VkIGluIHRoZSBhdWRpbyB0aHJlYWQuCiAgICAgVmVjdG9yPEF1ZGlvTm9kZSo+
IG1fZmluaXNoZWROb2RlczsKQEAgLTMxNywzOSArMzM5LDM5IEBAIHByaXZhdGU6CiAKICAgICAv
LyBUaGV5IHdpbGwgYmUgc2NoZWR1bGVkIGZvciBkZWxldGlvbiAob24gdGhlIG1haW4gdGhyZWFk
KSBhdCB0aGUgZW5kIG9mIGEgcmVuZGVyIGN5Y2xlIChpbiByZWFsdGltZSB0aHJlYWQpLgogICAg
IFZlY3RvcjxBdWRpb05vZGUqPiBtX25vZGVzVG9EZWxldGU7Ci0gICAgYm9vbCBtX2lzRGVsZXRp
b25TY2hlZHVsZWQ7CisKKyAgICBib29sIG1faXNEZWxldGlvblNjaGVkdWxlZCA9IHsgZmFsc2Ug
fTsKKyAgICBib29sIG1faXNTdG9wU2NoZWR1bGVkID0geyBmYWxzZSB9OworICAgIGJvb2wgbV9p
c0luaXRpYWxpemVkID0geyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0F1ZGlvVGhyZWFkRmluaXNo
ZWQgPSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2F1dG9tYXRpY1B1bGxOb2Rlc05lZWRVcGRhdGlu
ZyA9IHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNPZmZsaW5lQ29udGV4dCA9IHsgZmFsc2UgfTsK
IAogICAgIC8vIE9ubHkgYWNjZXNzZWQgd2hlbiB0aGUgZ3JhcGggbG9jayBpcyBoZWxkLgogICAg
IEhhc2hTZXQ8QXVkaW9TdW1taW5nSnVuY3Rpb24qPiBtX2RpcnR5U3VtbWluZ0p1bmN0aW9uczsK
ICAgICBIYXNoU2V0PEF1ZGlvTm9kZU91dHB1dCo+IG1fZGlydHlBdWRpb05vZGVPdXRwdXRzOwot
ICAgIHZvaWQgaGFuZGxlRGlydHlBdWRpb1N1bW1pbmdKdW5jdGlvbnMoKTsKLSAgICB2b2lkIGhh
bmRsZURpcnR5QXVkaW9Ob2RlT3V0cHV0cygpOwogCiAgICAgLy8gRm9yIHRoZSBzYWtlIG9mIHRo
cmVhZCBzYWZldHksIHdlIG1haW50YWluIGEgc2VwZXJhdGUgVmVjdG9yIG9mIGF1dG9tYXRpYyBw
dWxsIG5vZGVzIGZvciByZW5kZXJpbmcgaW4gbV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXMu
CiAgICAgLy8gSXQgd2lsbCBiZSBjb3BpZWQgZnJvbSBtX2F1dG9tYXRpY1B1bGxOb2RlcyBieSB1
cGRhdGVBdXRvbWF0aWNQdWxsTm9kZXMoKSBhdCB0aGUgdmVyeSBzdGFydCBvciBlbmQgb2YgdGhl
IHJlbmRlcmluZyBxdWFudHVtLgogICAgIEhhc2hTZXQ8QXVkaW9Ob2RlKj4gbV9hdXRvbWF0aWNQ
dWxsTm9kZXM7CiAgICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fcmVuZGVyaW5nQXV0b21hdGljUHVs
bE5vZGVzOwotICAgIC8vIG1fYXV0b21hdGljUHVsbE5vZGVzTmVlZFVwZGF0aW5nIGtlZXBzIHRy
YWNrIGlmIG1fYXV0b21hdGljUHVsbE5vZGVzIGlzIG1vZGlmaWVkLgotICAgIGJvb2wgbV9hdXRv
bWF0aWNQdWxsTm9kZXNOZWVkVXBkYXRpbmc7Ci0gICAgdm9pZCB1cGRhdGVBdXRvbWF0aWNQdWxs
Tm9kZXMoKTsKLQotICAgIHVuc2lnbmVkIG1fY29ubmVjdGlvbkNvdW50OwotCi0gICAgLy8gR3Jh
cGggbG9ja2luZy4KLSAgICBNdXRleCBtX2NvbnRleHRHcmFwaE11dGV4OwotICAgIHZvbGF0aWxl
IFRocmVhZElkZW50aWZpZXIgbV9hdWRpb1RocmVhZDsKLSAgICB2b2xhdGlsZSBUaHJlYWRJZGVu
dGlmaWVyIG1fZ3JhcGhPd25lclRocmVhZDsgLy8gaWYgdGhlIGxvY2sgaXMgaGVsZCB0aGVuIHRo
aXMgaXMgdGhlIHRocmVhZCB3aGljaCBvd25zIGl0LCBvdGhlcndpc2UgPT0gVW5kZWZpbmVkVGhy
ZWFkSWRlbnRpZmllcgotICAgIAogICAgIC8vIE9ubHkgYWNjZXNzZWQgaW4gdGhlIGF1ZGlvIHRo
cmVhZC4KICAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9kZWZlcnJlZEZpbmlzaERlcmVmTGlzdDsK
KyAgICBWZWN0b3I8VmVjdG9yPHN0ZDo6ZnVuY3Rpb248dm9pZCgpPj4+IG1fc3RhdGVSZWFjdGlv
bnM7CiAKLSAgICAvLyBFdmVudFRhcmdldAotICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdl
dCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdl
dCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQorICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVNlc3Np
b24+IG1fbWVkaWFTZXNzaW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxHZW5lcmljRXZlbnRRdWV1
ZT4gbV9ldmVudFF1ZXVlOwogCiAgICAgUmVmUHRyPEF1ZGlvQnVmZmVyPiBtX3JlbmRlclRhcmdl
dDsKLSAgICAKLSAgICBib29sIG1faXNPZmZsaW5lQ29udGV4dDsKKyAgICBSZWZQdHI8QXVkaW9E
ZXN0aW5hdGlvbk5vZGU+IG1fZGVzdGluYXRpb25Ob2RlOworICAgIFJlZlB0cjxBdWRpb0xpc3Rl
bmVyPiBtX2xpc3RlbmVyOworCisgICAgdW5zaWduZWQgbV9jb25uZWN0aW9uQ291bnQgPSB7IDAg
fTsKKworICAgIC8vIEdyYXBoIGxvY2tpbmcuCisgICAgTXV0ZXggbV9jb250ZXh0R3JhcGhNdXRl
eDsKKyAgICB2b2xhdGlsZSBUaHJlYWRJZGVudGlmaWVyIG1fYXVkaW9UaHJlYWQgPSB7IDAgfTsK
KyAgICB2b2xhdGlsZSBUaHJlYWRJZGVudGlmaWVyIG1fZ3JhcGhPd25lclRocmVhZDsgLy8gaWYg
dGhlIGxvY2sgaXMgaGVsZCB0aGVuIHRoaXMgaXMgdGhlIHRocmVhZCB3aGljaCBvd25zIGl0LCBv
dGhlcndpc2UgPT0gVW5kZWZpbmVkVGhyZWFkSWRlbnRpZmllcgogCiAgICAgQXN5bmNBdWRpb0Rl
Y29kZXIgbV9hdWRpb0RlY29kZXI7CiAKQEAgLTM1OCwxMiArMzgwLDExIEBAIHByaXZhdGU6CiAg
ICAgZW51bSB7IE1heE51bWJlck9mQ2hhbm5lbHMgPSAzMiB9OwogCiAgICAgLy8gTnVtYmVyIG9m
IEF1ZGlvQnVmZmVyU291cmNlTm9kZXMgdGhhdCBhcmUgYWN0aXZlIChwbGF5aW5nKS4KLSAgICBz
dGQ6OmF0b21pYzxpbnQ+IG1fYWN0aXZlU291cmNlQ291bnQ7CisgICAgc3RkOjphdG9taWM8aW50
PiBtX2FjdGl2ZVNvdXJjZUNvdW50ID0geyAwIH07CiAKLSAgICBCZWhhdmlvclJlc3RyaWN0aW9u
cyBtX3Jlc3RyaWN0aW9uczsKKyAgICBCZWhhdmlvclJlc3RyaWN0aW9ucyBtX3Jlc3RyaWN0aW9u
cyA9IHsgTm9SZXN0cmljdGlvbnMgfTsKIAotICAgIGVudW0gY2xhc3MgU3RhdGUgeyBTdXNwZW5k
ZWQsIFJ1bm5pbmcsIENsb3NlZCB9OwotICAgIFN0YXRlIG1fc3RhdGU7CisgICAgU3RhdGUgbV9z
dGF0ZSA9IHsgU3RhdGU6OlN1c3BlbmRlZCB9OwogfTsKIAogfSAvLyBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwKaW5kZXggYjk3
NWU0NzI4ZTgzNTczZjBlN2IxZDZlMTI1Yzg2MWE4ZTc4M2Y3Yi4uMTJjZDU3NTY4NGE2NmE5MmUw
Y2JiMzVhNzlkYjU1YzYzMDdhODBkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbApAQCAtMjMsNiArMjMsMTMgQEAKICAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKK2VudW0gQXVkaW9Db250ZXh0U3RhdGUgeworICAgICJzdXNwZW5kZWQiLAorICAgICJydW5u
aW5nIiwKKyAgICAiaW50ZXJydXB0ZWQiLAorICAgICJjbG9zZWQiCit9OworCiBbCiAgICAgRW5h
YmxlZEJ5U2V0dGluZz1XZWJBdWRpbywKICAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCkBAIC00
Myw2ICs1MCwxMyBAQAogICAgIC8vIEFsbCBwYW5uaW5nIGlzIHJlbGF0aXZlIHRvIHRoaXMgbGlz
dGVuZXIuCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlvTGlzdGVuZXIgbGlzdGVuZXI7CiAK
KyAgICBbQ3VzdG9tXSBQcm9taXNlIHN1c3BlbmQoKTsKKyAgICBbQ3VzdG9tXSBQcm9taXNlIHJl
c3VtZSgpOworICAgIFtDdXN0b21dIFByb21pc2UgY2xvc2UoKTsKKworICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBBdWRpb0NvbnRleHRTdGF0ZSBzdGF0ZTsKKyAgICBhdHRyaWJ1dGUgRXZlbnRIYW5k
bGVyIG9uc3RhdGVjaGFuZ2U7CisKICAgICAvLyBOdW1iZXIgb2YgQXVkaW9CdWZmZXJTb3VyY2VO
b2RlcyB0aGF0IGFyZSBjdXJyZW50bHkgcGxheWluZy4KICAgICByZWFkb25seSBhdHRyaWJ1dGUg
dW5zaWduZWQgbG9uZyBhY3RpdmVTb3VyY2VDb3VudDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAppbmRleCA3
NDg5NDY0OTllM2I4ZGNlYjE0MjhhOTM1NThjMmYwNzEwMzZkMTUzLi5hYzU4N2IxZGUyNzNmNzNm
NjgyNGVmZjgwNmVlZWZmN2QwZTIyM2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCkBAIC0zNSw3ICszNSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXVkaW9CdXM7CiBjbGFzcyBBdWRpb0NvbnRl
eHQ7Ci0gICAgCisKIGNsYXNzIEF1ZGlvRGVzdGluYXRpb25Ob2RlIDogcHVibGljIEF1ZGlvTm9k
ZSwgcHVibGljIEF1ZGlvSU9DYWxsYmFjayB7CiBwdWJsaWM6CiAgICAgQXVkaW9EZXN0aW5hdGlv
bk5vZGUoQXVkaW9Db250ZXh0KiwgZmxvYXQgc2FtcGxlUmF0ZSk7CkBAIC01OCw2ICs1OCw5IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlSW5wdXQoY29uc3QgU3RyaW5nJiBpbnB1
dERldmljZUlkKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRSZW5kZXJpbmcoKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHJlc3VtZShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4pIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBzdXNwZW5kKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPikgeyB9CisgICAgdmly
dHVhbCB2b2lkIGNsb3NlKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPikgeyB9CiAKICAgICBBdWRpb1Nv
dXJjZVByb3ZpZGVyKiBsb2NhbEF1ZGlvSW5wdXRQcm92aWRlcigpIHsgcmV0dXJuICZtX2xvY2Fs
QXVkaW9JbnB1dFByb3ZpZGVyOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRl
eCA5NTZjYzIyNmY4NTZiNDc0MTQ0ZTM1NmY3ZjNlYTg1Zjk1OTJiYWE5Li4wYmNjMmMwYTRhYzYw
Yzk0MjQwMjI2N2RlNWU0YzQwZGNiZjg5ZDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUu
Y3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQXVkaW9Db250ZXh0LmgiCiAjaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAogY29u
c3QgdW5zaWduZWQgRW5hYmxlZElucHV0Q2hhbm5lbHMgPSAyOwpAQCAtMTA1LDYgKzEwNiwyOSBA
QCB2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3RhcnRSZW5kZXJpbmcoKQogICAg
ICAgICBtX2Rlc3RpbmF0aW9uLT5zdGFydCgpOwogfQogCit2b2lkIERlZmF1bHRBdWRpb0Rlc3Rp
bmF0aW9uTm9kZTo6cmVzdW1lKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbikKK3sKKyAg
ICBBU1NFUlQoaXNJbml0aWFsaXplZCgpKTsKKyAgICBpZiAoaXNJbml0aWFsaXplZCgpKQorICAg
ICAgICBtX2Rlc3RpbmF0aW9uLT5zdGFydCgpOworICAgIGNvbnRleHQoKS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5wb3N0VGFzayhmdW5jdGlvbik7Cit9CisKK3ZvaWQgRGVmYXVsdEF1ZGlv
RGVzdGluYXRpb25Ob2RlOjpzdXNwZW5kKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbikK
K3sKKyAgICBBU1NFUlQoaXNJbml0aWFsaXplZCgpKTsKKyAgICBpZiAoaXNJbml0aWFsaXplZCgp
KQorICAgICAgICBtX2Rlc3RpbmF0aW9uLT5zdG9wKCk7CisgICAgY29udGV4dCgpLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKGZ1bmN0aW9uKTsKK30KKwordm9pZCBEZWZhdWx0
QXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNsb3NlKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlv
bikKK3sKKyAgICBBU1NFUlQoaXNJbml0aWFsaXplZCgpKTsKKyAgICB1bmluaXRpYWxpemUoKTsK
KyAgICBjb250ZXh0KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soZnVuY3Rp
b24pOworfQorCiB1bnNpZ25lZCBsb25nIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6bWF4
Q2hhbm5lbENvdW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gQXVkaW9EZXN0aW5hdGlvbjo6bWF4
Q2hhbm5lbENvdW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaAppbmRleCAyZTBhODY1OGNk
MmVkMDRjMzU4YzU1ZTNjY2E4MjdjZDFkNTJjYjdjLi5iMWQ2MjhkZDJlOWNkMGQ3NDk0MzMzODY4
Mjk1NTBiNDFmMjVhNmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTUwLDYgKzUw
LDkgQEAgcHVibGljOgogICAgIC8vIEF1ZGlvRGVzdGluYXRpb25Ob2RlCiAgICAgdmlydHVhbCB2
b2lkIGVuYWJsZUlucHV0KGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCkgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIHN0YXJ0UmVuZGVyaW5nKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2
b2lkIHJlc3VtZShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBzdXNwZW5kKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPikgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIGNsb3NlKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPikgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB1bnNpZ25lZCBsb25nIG1heENoYW5uZWxDb3VudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgYm9vbCBpc1BsYXlpbmcoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwCmluZGV4IDFhNzVkOTM1YmM3
MzIyMDVhYjQ3YTVkMTk2MDRkMDgyOWQxZDRlYzUuLmRkZWM3OTRmMGU2ZjI1OTQyNjhmNmY5OTA2
OWNkMGQ2ZDQ0Yzg4ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
QXVkaW9Db250ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0F1ZGlvQ29udGV4dEN1c3RvbS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJKU0F1
ZGlvQnVmZmVyLmgiCiAjaW5jbHVkZSAiSlNBdWRpb0NvbnRleHQuaCIKICNpbmNsdWRlICJKU0RP
TUJpbmRpbmcuaCIKKyNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKICNpbmNsdWRlICJKU09mZmxp
bmVBdWRpb0NvbnRleHQuaCIKICNpbmNsdWRlICJPZmZsaW5lQXVkaW9Db250ZXh0LmgiCiAjaW5j
bHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgpAQCAtMTEwLDYgKzExMSw2OSBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTQXVkaW9Db250ZXh0KEV4ZWNTdGF0ZSog
ZXhlYykKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKENSRUFURV9ET01fV1JBUFBFUihqc0Nv
bnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKSwgQXVkaW9Db250ZXh0LCBhdWRpb0NvbnRleHQuZ2V0
KCkpKTsKIH0KIAorSlNWYWx1ZSBKU0F1ZGlvQ29udGV4dDo6c3VzcGVuZChFeGVjU3RhdGUqIGV4
ZWMpCit7CisgICAgRGVmZXJyZWRXcmFwcGVyIHdyYXBwZXIoZXhlYywgZ2xvYmFsT2JqZWN0KCkp
OworICAgIGF1dG8gc3VjY2Vzc0NhbGxiYWNrID0gW3dyYXBwZXJdKCkgbXV0YWJsZSB7CisgICAg
ICAgIHdyYXBwZXIucmVzb2x2ZShudWxscHRyKTsKKyAgICB9OworICAgIGF1dG8gZmFpbHVyZUNh
bGxiYWNrID0gW3dyYXBwZXJdKCkgbXV0YWJsZSB7CisgICAgICAgIHdyYXBwZXIucmVqZWN0KG51
bGxwdHIpOworICAgIH07CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBpbXBsKCku
c3VzcGVuZENvbnRleHQoV1RGOjptb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURjo6bW92ZShmYWls
dXJlQ2FsbGJhY2spLCBlYyk7CisKKyAgICBpZiAoZWMpIHsKKyAgICAgICAgc2V0RE9NRXhjZXB0
aW9uKGV4ZWMsIGVjKTsKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorCisg
ICAgcmV0dXJuIHdyYXBwZXIucHJvbWlzZSgpOworfQorCitKU1ZhbHVlIEpTQXVkaW9Db250ZXh0
OjpyZXN1bWUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIERlZmVycmVkV3JhcHBlciB3cmFwcGVy
KGV4ZWMsIGdsb2JhbE9iamVjdCgpKTsKKyAgICBhdXRvIHN1Y2Nlc3NDYWxsYmFjayA9IFt3cmFw
cGVyXSgpIG11dGFibGUgeworICAgICAgICB3cmFwcGVyLnJlc29sdmUobnVsbHB0cik7CisgICAg
fTsKKyAgICBhdXRvIGZhaWx1cmVDYWxsYmFjayA9IFt3cmFwcGVyXSgpIG11dGFibGUgeworICAg
ICAgICB3cmFwcGVyLnJlamVjdChudWxscHRyKTsKKyAgICB9OworCisgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CisgICAgaW1wbCgpLnJlc3VtZUNvbnRleHQoV1RGOjptb3ZlKHN1Y2Nlc3NDYWxs
YmFjayksIFdURjo6bW92ZShmYWlsdXJlQ2FsbGJhY2spLCBlYyk7CisKKyAgICBpZiAoZWMpIHsK
KyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKyAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CisgICAgfQorCisgICAgcmV0dXJuIHdyYXBwZXIucHJvbWlzZSgpOworfQorCitK
U1ZhbHVlIEpTQXVkaW9Db250ZXh0OjpjbG9zZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgRGVm
ZXJyZWRXcmFwcGVyIHdyYXBwZXIoZXhlYywgZ2xvYmFsT2JqZWN0KCkpOworICAgIGF1dG8gc3Vj
Y2Vzc0NhbGxiYWNrID0gW3dyYXBwZXJdKCkgbXV0YWJsZSB7CisgICAgICAgIHdyYXBwZXIucmVz
b2x2ZShudWxscHRyKTsKKyAgICB9OworICAgIGF1dG8gZmFpbHVyZUNhbGxiYWNrID0gW3dyYXBw
ZXJdKCkgbXV0YWJsZSB7CisgICAgICAgIHdyYXBwZXIucmVqZWN0KG51bGxwdHIpOworICAgIH07
CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBpbXBsKCkuY2xvc2VDb250ZXh0KFdU
Rjo6bW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEY6Om1vdmUoZmFpbHVyZUNhbGxiYWNrKSwgZWMp
OworCisgICAgaWYgKGVjKSB7CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7Cisg
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIH0KKworICAgIHJldHVybiB3cmFwcGVy
LnByb21pc2UoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NUHJvbWlzZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgK
aW5kZXggNDJkMDJkOWYyOGU5ZTZhODRhNGU3NWMzYTczMThmOTYxNGY5YTAxYy4uZDk1NjgxMmM0
M2UyMzFjZTZhNTA4ZjU0OTE4MGJmZDBmMjk1ZWQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01Qcm9taXNlLmgKQEAgLTEwNyw2ICsxMDcsMTQgQEAgaW5saW5lIHZvaWQgRGVm
ZXJyZWRXcmFwcGVyOjpyZXNvbHZlPFZlY3Rvcjx1bnNpZ25lZCBjaGFyPj4oY29uc3QgVmVjdG9y
PHVuc2lnbmUKIH0KIAogdGVtcGxhdGU8PgoraW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpy
ZXNvbHZlKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikKK3sKKyAgICBKU0M6OkV4ZWNTdGF0ZSogZXhl
YyA9IG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIg
bG9ja2VyKGV4ZWMpOworICAgIHJlc29sdmUoZXhlYywgSlNDOjpqc051bGwoKSk7Cit9CisKK3Rl
bXBsYXRlPD4KIGlubGluZSB2b2lkIERlZmVycmVkV3JhcHBlcjo6cmVqZWN0PFN0cmluZz4oY29u
c3QgU3RyaW5nJiByZXN1bHQpCiB7CiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBtX2dsb2Jh
bE9iamVjdC0+Z2xvYmFsRXhlYygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50TmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKaW5kZXggZjFmZDEy
NzM5ZjYyNmJlMjI5OWQ1ZGRkZTA2Nzc0YWRiZGExYjQ0Yy4uNTQ1ZTE2ZTUyNGUwNzFmMWUyNTgy
NDVhMDhjNjFlNWM1ZGI1OTllZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
TmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCkBAIC0xOTAsNiAr
MTkwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKHN0YWxsZWQpIFwKICAgICBt
YWNybyhzdGFydCkgXAogICAgIG1hY3JvKHN0YXJ0ZWQpIFwKKyAgICBtYWNybyhzdGF0ZWNoYW5n
ZSkgXAogICAgIG1hY3JvKHN0b3JhZ2UpIFwKICAgICBtYWNybyhzdWJtaXQpIFwKICAgICBtYWNy
byhzdWNjZXNzKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aAppbmRleCAxMTQ2NjEyNjcwM2VlMzJkMzFkZGRmMDk2NGFlYTZjNmM2Yzg3NGRmLi43OTAxOThi
YTdmZjhiY2M0MDc3OTlkMGZhZmFiZjcwMzMxYzEwNTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTEzMCw2ICsxMzAsMTIgQEAgcHVibGljOgog
ICAgICAgICB7CiAgICAgICAgIH0KIAorICAgICAgICBUYXNrKHN0ZDo6ZnVuY3Rpb248dm9pZCgp
PiB0YXNrKQorICAgICAgICAgICAgOiBtX3Rhc2soW3Rhc2tdKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmKSB7IHRhc2soKTsgfSkKKyAgICAgICAgICAgICwgbV9pc0NsZWFudXBUYXNrKGZhbHNlKQor
ICAgICAgICB7CisgICAgICAgIH0KKwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfY29udmVydGlibGU8VCwgc3Rk
OjpmdW5jdGlvbjx2b2lkIChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik+Pjo6dmFsdWU+Ojp0eXBl
PgogICAgICAgICBUYXNrKENsZWFudXBUYXNrVGFnLCBUIHRhc2spCiAgICAgICAgICAgICA6IG1f
dGFzayhXVEY6Om1vdmUodGFzaykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcAppbmRleCAxYTllMjk4ZjY0NGQ2YjFlMWE4ZjMyZjIyYzdiMWQ3NGNiNzZlNzFiLi44ZDlk
ODViZjI2ZTQ3MmYwYWQxYmRhMTE4NDhlNDM4YTE1Njc2MTliIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTYwMzEsMTcgKzYwMzEsMTcgQEAgc2l6ZV90IEhU
TUxNZWRpYUVsZW1lbnQ6Om1heGltdW1Tb3VyY2VCdWZmZXJTaXplKGNvbnN0IFNvdXJjZUJ1ZmZl
ciYgYnVmZmVyKSBjb24KIH0KICNlbmRpZgogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNl
UGxheWJhY2soKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzdXNwZW5kUGxheWJhY2soKQogewog
ICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlUGxheWJhY2soJXApIC0gcGF1
c2VkID0gJXMiLCB0aGlzLCBib29sU3RyaW5nKHBhdXNlZCgpKSk7CiAgICAgaWYgKCFwYXVzZWQo
KSkKICAgICAgICAgcGF1c2UoKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZXN1bWVQ
bGF5YmFjaygpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1heVJlc3VtZVBsYXliYWNrKGJvb2wg
c2hvdWxkUmVzdW1lKQogewogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnJlc3Vt
ZVBsYXliYWNrKCVwKSAtIHBhdXNlZCA9ICVzIiwgdGhpcywgYm9vbFN0cmluZyhwYXVzZWQoKSkp
OwotICAgIGlmIChwYXVzZWQoKSkKKyAgICBpZiAocGF1c2VkKCkgJiYgc2hvdWxkUmVzdW1lKQog
ICAgICAgICBwbGF5KCk7CiB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCmluZGV4IDllNjE5MGI0OGFkNzhlYmRhN2M0OGVkNWM4NTNkZTNlZTE0YjgxZTAuLjZhMTY2
ZTVhYjhjMGIwY2VmMTk4NTU5ODViOWYwZDI5YzMwZTFkMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oCkBAIC03MDcsOCArNzA3LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIE1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIG1lZGlhVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgcHJlc2VudGF0aW9uVHlwZSgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgTWVkaWFTZXNzaW9uOjpEaXNwbGF5VHlwZSBkaXNw
bGF5VHlwZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYXVzZVBsYXliYWNr
KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlc3VtZVBsYXliYWNrKCkgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCB2b2lkIHN1c3BlbmRQbGF5YmFjaygpIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgdm9pZCBtYXlSZXN1bWVQbGF5YmFjayhib29sIHNob3VsZFJlc3VtZSkgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCBTdHJpbmcgbWVkaWFTZXNzaW9uVGl0bGUoKSBjb25zdCBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIGRvdWJsZSBtZWRpYVNlc3Npb25EdXJhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGR1cmF0aW9uKCk7IH0KICAgICB2aXJ0dWFsIGRvdWJsZSBtZWRpYVNlc3Npb25DdXJy
ZW50VGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGN1cnJlbnRUaW1lKCk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwCmluZGV4IGY0ZGI0
ZmVmMDQ1ZWM5Nzg0M2YwMDkxNTVmNGFhZDEwMDM0NDE0ZDcuLmFlOTU1MDIzYmYzMmUyNmNjZmU0
MzA2ZDU5MGIyYzU0NjdmMmJlZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9TZXNzaW9uLmNwcApAQCAtODYsOSArODYsMTAgQEAgc2l6ZV90IEF1ZGlvU2Vzc2lv
bjo6bnVtYmVyT2ZPdXRwdXRDaGFubmVscygpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKLXZv
aWQgQXVkaW9TZXNzaW9uOjpzZXRBY3RpdmUoYm9vbCkKK2Jvb2wgQXVkaW9TZXNzaW9uOjp0cnlU
b1NldEFjdGl2ZShib29sKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIHNpemVfdCBBdWRpb1Nlc3Npb246OnByZWZlcnJlZEJ1ZmZlclNpemUoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaAppbmRleCBk
ODk3NjNlMjQ0OWY3OGUzMGY0ZDUyNGQ2NzMwYWE2NmYyYzVkYThlLi5jNmM5NDUyZmQ0YzIwNWZm
ZDliZTY3MGZlNjI5ZmM2MzU2MWFkM2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb1Nlc3Npb24uaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgZmxvYXQg
c2FtcGxlUmF0ZSgpIGNvbnN0OwogICAgIHNpemVfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzKCkg
Y29uc3Q7CiAKLSAgICB2b2lkIHNldEFjdGl2ZShib29sKTsKKyAgICBib29sIHRyeVRvU2V0QWN0
aXZlKGJvb2wpOwogCiAgICAgc2l6ZV90IHByZWZlcnJlZEJ1ZmZlclNpemUoKSBjb25zdDsKICAg
ICB2b2lkIHNldFByZWZlcnJlZEJ1ZmZlclNpemUoc2l6ZV90KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uY3BwCmluZGV4IDZmNjhkNzAwZTVmNjJiMzAy
ODIwYTJlMTllM2EyMWVmYjY1NmYzZDkuLjE4ZWE4MjNjYjkxOTBjODYwN2Y5YjUyY2RjNjM4MDE1
ZjQxNGE0NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlh
U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNz
aW9uLmNwcApAQCAtODgsOCArODgsOCBAQCB2b2lkIE1lZGlhU2Vzc2lvbjo6YmVnaW5JbnRlcnJ1
cHRpb24oSW50ZXJydXB0aW9uVHlwZSB0eXBlKQogCiAgICAgbV9zdGF0ZVRvUmVzdG9yZSA9IHN0
YXRlKCk7CiAgICAgbV9ub3RpZnlpbmdDbGllbnQgPSB0cnVlOwotICAgIGNsaWVudCgpLnBhdXNl
UGxheWJhY2soKTsKICAgICBzZXRTdGF0ZShJbnRlcnJ1cHRlZCk7CisgICAgY2xpZW50KCkuc3Vz
cGVuZFBsYXliYWNrKCk7CiAgICAgbV9ub3RpZnlpbmdDbGllbnQgPSBmYWxzZTsKIH0KIApAQCAt
MTA5LDI4ICsxMDksMzUgQEAgdm9pZCBNZWRpYVNlc3Npb246OmVuZEludGVycnVwdGlvbihFbmRJ
bnRlcnJ1cHRpb25GbGFncyBmbGFncykKICAgICBtX3N0YXRlVG9SZXN0b3JlID0gSWRsZTsKICAg
ICBzZXRTdGF0ZShQYXVzZWQpOwogCi0gICAgaWYgKGZsYWdzICYgTWF5UmVzdW1lUGxheWluZyAm
JiBzdGF0ZVRvUmVzdG9yZSA9PSBQbGF5aW5nKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIk1lZGlh
U2Vzc2lvbjo6ZW5kSW50ZXJydXB0aW9uIC0gcmVzdW1pbmcgcGxheWJhY2siKTsKLSAgICAgICAg
Y2xpZW50KCkucmVzdW1lUGxheWJhY2soKTsKLSAgICB9CisgICAgYm9vbCBzaG91bGRSZXN1bWUg
PSBmbGFncyAmIE1heVJlc3VtZVBsYXlpbmcgJiYgc3RhdGVUb1Jlc3RvcmUgPT0gUGxheWluZzsK
KyAgICBjbGllbnQoKS5tYXlSZXN1bWVQbGF5YmFjayhzaG91bGRSZXN1bWUpOwogfQogCiBib29s
IE1lZGlhU2Vzc2lvbjo6Y2xpZW50V2lsbEJlZ2luUGxheWJhY2soKQogeworICAgIGlmIChtX25v
dGlmeWluZ0NsaWVudCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoIU1lZGlhU2Vz
c2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5zZXNzaW9uV2lsbEJlZ2luUGxheWJhY2soKnRo
aXMpKSB7CisgICAgICAgIGlmIChzdGF0ZSgpID09IEludGVycnVwdGVkKQorICAgICAgICAgICAg
bV9zdGF0ZVRvUmVzdG9yZSA9IFBsYXlpbmc7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKICAgICBzZXRTdGF0ZShQbGF5aW5nKTsKLSAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFy
ZWRNYW5hZ2VyKCkuc2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKCp0aGlzKTsKICAgICB1cGRhdGVD
bGllbnREYXRhQnVmZmVyaW5nKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgTWVkaWFT
ZXNzaW9uOjpjbGllbnRXaWxsUGF1c2VQbGF5YmFjaygpCiB7CisgICAgaWYgKG1fbm90aWZ5aW5n
Q2xpZW50KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwogICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vz
c2lvbjo6Y2xpZW50V2lsbFBhdXNlUGxheWJhY2soJXApLSBzdGF0ZSA9ICVzIiwgdGhpcywgc3Rh
dGVOYW1lKG1fc3RhdGUpKTsKICAgICBpZiAoc3RhdGUoKSA9PSBJbnRlcnJ1cHRlZCkgewotICAg
ICAgICBpZiAoIW1fbm90aWZ5aW5nQ2xpZW50KSB7Ci0gICAgICAgICAgICBtX3N0YXRlVG9SZXN0
b3JlID0gUGF1c2VkOwotICAgICAgICAgICAgTE9HKE1lZGlhLCAiICAgICAgc2V0dGluZyBzdGF0
ZVRvUmVzdG9yZSB0byBcIlBhdXNlZFwiIik7Ci0gICAgICAgIH0KKyAgICAgICAgbV9zdGF0ZVRv
UmVzdG9yZSA9IFBhdXNlZDsKKyAgICAgICAgTE9HKE1lZGlhLCAiICAgICAgc2V0dGluZyBzdGF0
ZVRvUmVzdG9yZSB0byBcIlBhdXNlZFwiIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAgICAgCkBAIC0xNDQsNyArMTUxLDcgQEAgYm9vbCBNZWRpYVNlc3Npb246OmNsaWVudFdpbGxQ
YXVzZVBsYXliYWNrKCkKIHZvaWQgTWVkaWFTZXNzaW9uOjpwYXVzZVNlc3Npb24oKQogewogICAg
IExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbjo6cGF1c2VTZXNzaW9uKCVwKSIsIHRoaXMpOwotICAg
IG1fY2xpZW50LnBhdXNlUGxheWJhY2soKTsKKyAgICBtX2NsaWVudC5zdXNwZW5kUGxheWJhY2so
KTsKIH0KIAogTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgTWVkaWFTZXNzaW9uOjptZWRpYVR5cGUo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFT
ZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uaApp
bmRleCA2ZDc1NGM2YmU1NTZlMDM5NGFkMzBhN2NhMDYzNDhmMGVhMTYxZmVhLi5lOTc3ODE0MTdk
NmQwYTk4YTMyZGRiZjdiOGVhNmM4NTQ1NjNjNjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uaApAQCAtMTQ5LDggKzE0OSw4IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIE1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHByZXNlbnRhdGlvblR5cGUoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBNZWRpYVNlc3Npb246OkRpc3BsYXlUeXBlIGRpc3BsYXlUeXBl
KCkgY29uc3QgeyByZXR1cm4gTWVkaWFTZXNzaW9uOjpOb3JtYWw7IH0KIAotICAgIHZpcnR1YWwg
dm9pZCByZXN1bWVQbGF5YmFjaygpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcGF1c2VQbGF5YmFj
aygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbWF5UmVzdW1lUGxheWJhY2soYm9vbCBzaG91bGRS
ZXN1bWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZFBsYXliYWNrKCkgPSAwOwogCiAg
ICAgdmlydHVhbCBTdHJpbmcgbWVkaWFTZXNzaW9uVGl0bGUoKSBjb25zdDsKICAgICB2aXJ0dWFs
IGRvdWJsZSBtZWRpYVNlc3Npb25EdXJhdGlvbigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAppbmRleCBlMTMw
YzJjYWZmNGE2ZTViZDQyNzczMzExNzJhNGEzMWVkNGM0ZmRlLi41YzA0YmYyY2JlNmFhNmI2NWRj
MDM0NDc1ODQzMzIwNTgwZjI1ZTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAj
aWYgRU5BQkxFKFZJREVPKQogCisjaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiTWVkaWFT
ZXNzaW9uLmgiCkBAIC0xNjYsNyArMTY3LDcgQEAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6U2Vzc2lv
blJlc3RyaWN0aW9ucyBNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZXN0cmljdGlvbnMoTWVkaWEKICAg
ICByZXR1cm4gbV9yZXN0cmljdGlvbnNbdHlwZV07CiB9CiAKLXZvaWQgTWVkaWFTZXNzaW9uTWFu
YWdlcjo6c2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKE1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikKK2Jv
b2wgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKE1lZGlhU2Vz
c2lvbiYgc2Vzc2lvbikKIHsKICAgICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb25NYW5hZ2VyOjpz
ZXNzaW9uV2lsbEJlZ2luUGxheWJhY2sgLSAlcCIsICZzZXNzaW9uKTsKICAgICAKQEAgLTE3NCw4
ICsxNzUsMTkgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uV2lsbEJlZ2luUGxh
eWJhY2soTWVkaWFTZXNzaW9uJiBzZXNzaW9uKQogCiAgICAgTWVkaWFTZXNzaW9uOjpNZWRpYVR5
cGUgc2Vzc2lvblR5cGUgPSBzZXNzaW9uLm1lZGlhVHlwZSgpOwogICAgIFNlc3Npb25SZXN0cmlj
dGlvbnMgcmVzdHJpY3Rpb25zID0gbV9yZXN0cmljdGlvbnNbc2Vzc2lvblR5cGVdOworICAgIGlm
IChzZXNzaW9uLnN0YXRlKCkgPT0gTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRlZCAmJiByZXN0cmlj
dGlvbnMgJiBJbnRlcnJ1cHRlZFBsYXliYWNrTm90UGVybWl0dGVkKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyNpZiBVU0UoQVVESU9fU0VTU0lPTikKKyAgICBpZiAoYWN0aXZlQXVkaW9TZXNz
aW9uUmVxdWlyZWQoKSAmJiAhQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkudHJ5VG9TZXRB
Y3RpdmUodHJ1ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorCisgICAgaWYgKG1f
aW50ZXJydXB0ZWQpCisgICAgICAgIGVuZEludGVycnVwdGlvbihNZWRpYVNlc3Npb246Ok5vRmxh
Z3MpOworCiAgICAgaWYgKCFyZXN0cmljdGlvbnMgJiBDb25jdXJyZW50UGxheWJhY2tOb3RQZXJt
aXR0ZWQpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBWZWN0
b3I8TWVkaWFTZXNzaW9uKj4gc2Vzc2lvbnMgPSBtX3Nlc3Npb25zOwogICAgIGZvciAoYXV0byog
b25lU2Vzc2lvbiA6IHNlc3Npb25zKSB7CkBAIC0xODgsNiArMjAwLDcgQEAgdm9pZCBNZWRpYVNl
c3Npb25NYW5hZ2VyOjpzZXNzaW9uV2lsbEJlZ2luUGxheWJhY2soTWVkaWFTZXNzaW9uJiBzZXNz
aW9uKQogICAgIH0KICAgICAKICAgICB1cGRhdGVTZXNzaW9uU3RhdGUoKTsKKyAgICByZXR1cm4g
dHJ1ZTsKIH0KICAgICAKIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxFbmRQ
bGF5YmFjayhNZWRpYVNlc3Npb24mIHNlc3Npb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmgKaW5kZXggYzQ1NTk1ZTI2M2U2ZmUz
ZDgzOTRkMGVmMDI4N2VlYTU3NDhlMDhlMS4uMjk2ZGNkNTMyOWI2NDc4ZjFlMDUyZjg5OTA2ZTcx
NWJhYzZjOWIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVk
aWFTZXNzaW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01l
ZGlhU2Vzc2lvbk1hbmFnZXIuaApAQCAtNjMsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIEF1
dG9QcmVsb2FkaW5nTm90UGVybWl0dGVkID0gMSA8PCAzLAogICAgICAgICBCYWNrZ3JvdW5kUHJv
Y2Vzc1BsYXliYWNrUmVzdHJpY3RlZCA9IDEgPDwgNCwKICAgICAgICAgQmFja2dyb3VuZFRhYlBs
YXliYWNrUmVzdHJpY3RlZCA9IDEgPDwgNSwKKyAgICAgICAgSW50ZXJydXB0ZWRQbGF5YmFja05v
dFBlcm1pdHRlZCA9IDEgPDwgNiwKICAgICB9OwogICAgIHR5cGVkZWYgdW5zaWduZWQgU2Vzc2lv
blJlc3RyaWN0aW9uczsKIApAQCAtNzEsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgU2Vzc2lvblJlc3RyaWN0aW9ucyByZXN0cmljdGlvbnMoTWVkaWFTZXNzaW9uOjpNZWRp
YVR5cGUpOwogICAgIHZpcnR1YWwgdm9pZCByZXNldFJlc3RyaWN0aW9ucygpOwogCi0gICAgdmly
dHVhbCB2b2lkIHNlc3Npb25XaWxsQmVnaW5QbGF5YmFjayhNZWRpYVNlc3Npb24mKTsKKyAgICB2
aXJ0dWFsIGJvb2wgc2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKE1lZGlhU2Vzc2lvbiYpOwogICAg
IHZpcnR1YWwgdm9pZCBzZXNzaW9uV2lsbEVuZFBsYXliYWNrKE1lZGlhU2Vzc2lvbiYpOwogCiAg
ICAgYm9vbCBzZXNzaW9uUmVzdHJpY3RzSW5saW5lVmlkZW9QbGF5YmFjayhjb25zdCBNZWRpYVNl
c3Npb24mKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcAppbmRleCBiNDRiMGNlYzI5MWQ4YmU3MGFj
MjRmYzVjYThlYmQ0ZmY5OTVkZTg0Li45ZDhkMWUxNGE2YWI5ZWZlMDRhOTk2YWI2NmM2ODEwMzA3
ODk3Mzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVk
aW9EZXN0aW5hdGlvbklPUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
aW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwCkBAIC0xMDAsNyArMTAwLDYgQEAgQXVkaW9EZXN0
aW5hdGlvbklPUzo6QXVkaW9EZXN0aW5hdGlvbklPUyhBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNr
LCBkb3VibGUgc2FtcGwKICAgICA6IG1fb3V0cHV0VW5pdCgwKQogICAgICwgbV9jYWxsYmFjayhj
YWxsYmFjaykKICAgICAsIG1fcmVuZGVyQnVzKEF1ZGlvQnVzOjpjcmVhdGUoMiwga1JlbmRlckJ1
ZmZlclNpemUsIGZhbHNlKSkKLSAgICAsIG1fbWVkaWFTZXNzaW9uKE1lZGlhU2Vzc2lvbjo6Y3Jl
YXRlKCp0aGlzKSkKICAgICAsIG1fc2FtcGxlUmF0ZShzYW1wbGVSYXRlKQogICAgICwgbV9pc1Bs
YXlpbmcoZmFsc2UpCiB7CkBAIC0xODQsMTAgKzE4Myw2IEBAIHZvaWQgQXVkaW9EZXN0aW5hdGlv
bklPUzo6Y29uZmlndXJlKCkKIHZvaWQgQXVkaW9EZXN0aW5hdGlvbklPUzo6c3RhcnQoKQogewog
ICAgIExPRyhNZWRpYSwgIkF1ZGlvRGVzdGluYXRpb25JT1M6OnN0YXJ0Iik7Ci0gICAgaWYgKCFt
X21lZGlhU2Vzc2lvbi0+Y2xpZW50V2lsbEJlZ2luUGxheWJhY2soKSkgewotICAgICAgICBMT0co
TWVkaWEsICIgIHJldHVybmluZyBiZWNhdXNlIG9mIGludGVycnVwdGlvbiIpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQogCiAgICAgT1NTdGF0dXMgcmVzdWx0ID0gQXVkaW9PdXRwdXRVbml0U3Rh
cnQobV9vdXRwdXRVbml0KTsKICAgICBpZiAoIXJlc3VsdCkKQEAgLTE5NywxMCArMTkyLDYgQEAg
dm9pZCBBdWRpb0Rlc3RpbmF0aW9uSU9TOjpzdGFydCgpCiB2b2lkIEF1ZGlvRGVzdGluYXRpb25J
T1M6OnN0b3AoKQogewogICAgIExPRyhNZWRpYSwgIkF1ZGlvRGVzdGluYXRpb25JT1M6OnN0b3Ai
KTsKLSAgICBpZiAoIW1fbWVkaWFTZXNzaW9uLT5jbGllbnRXaWxsUGF1c2VQbGF5YmFjaygpKSB7
Ci0gICAgICAgIExPRyhNZWRpYSwgIiAgcmV0dXJuaW5nIGJlY2F1c2Ugb2YgaW50ZXJydXB0aW9u
Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBPU1N0YXR1cyByZXN1bHQgPSBBdWRp
b091dHB1dFVuaXRTdG9wKG1fb3V0cHV0VW5pdCk7CiAgICAgaWYgKCFyZXN1bHQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklP
Uy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25J
T1MuaAppbmRleCA2NGFmMTFhYmNhMjExZGMxOGI1M2M5YzhhMzliZWRiZTE0MTI2ZTYwLi44MTI0
ODdhMzNmZjBhOGM2M2FlYTRhMGNjN2Q0Nzg5Njc2Y2ZlM2EzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmgKQEAg
LTMyLDcgKzMyLDYgQEAKIAogI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCiAjaW5jbHVkZSAiQXVkaW9E
ZXN0aW5hdGlvbi5oIgotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgogI2luY2x1ZGUgPEF1ZGlv
VW5pdC9BdWRpb1VuaXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTQwLDcgKzM5
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBBbiBBdWRpb0Rlc3RpbmF0aW9uIHVzaW5n
IENvcmVBdWRpbydzIGRlZmF1bHQgb3V0cHV0IEF1ZGlvVW5pdAogCi1jbGFzcyBBdWRpb0Rlc3Rp
bmF0aW9uSU9TIGZpbmFsIDogcHVibGljIEF1ZGlvRGVzdGluYXRpb24sIHByaXZhdGUgTWVkaWFT
ZXNzaW9uQ2xpZW50IHsKK2NsYXNzIEF1ZGlvRGVzdGluYXRpb25JT1MgZmluYWwgOiBwdWJsaWMg
QXVkaW9EZXN0aW5hdGlvbiB7CiBwdWJsaWM6CiAgICAgQXVkaW9EZXN0aW5hdGlvbklPUyhBdWRp
b0lPQ2FsbGJhY2smLCBkb3VibGUgc2FtcGxlUmF0ZSk7CiAgICAgdmlydHVhbCB+QXVkaW9EZXN0
aW5hdGlvbklPUygpOwpAQCAtNTQsMTUgKzUzLDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJv
b2wgaXNQbGF5aW5nKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc1BsYXlpbmc7IH0KICAgICB2aXJ0
dWFsIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3NhbXBsZVJh
dGU7IH0KIAotICAgIC8vIE1lZGlhU2Vzc2lvbkNsaWVudAotICAgIHZpcnR1YWwgTWVkaWFTZXNz
aW9uOjpNZWRpYVR5cGUgbWVkaWFUeXBlKCkgY29uc3QgeyByZXR1cm4gTWVkaWFTZXNzaW9uOjpX
ZWJBdWRpbzsgfQotICAgIHZpcnR1YWwgTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgcHJlc2VudGF0
aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIE1lZGlhU2Vzc2lvbjo6V2ViQXVkaW87IH0KLSAgICB2
aXJ0dWFsIGJvb2wgY2FuUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kcygpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29t
bWFuZChNZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSkgeyB9Ci0gICAgdmly
dHVhbCBib29sIG92ZXJyaWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rpb24oKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBwYXVzZVBsYXliYWNrKCkgb3ZlcnJp
ZGUgeyBzdG9wKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lUGxheWJhY2soKSBvdmVycmlk
ZSB7IHN0YXJ0KCk7IH0KLQogICAgIC8vIERlZmF1bHRPdXRwdXRVbml0IGNhbGxiYWNrCiAgICAg
c3RhdGljIE9TU3RhdHVzIGlucHV0UHJvYyh2b2lkKiB1c2VyRGF0YSwgQXVkaW9Vbml0UmVuZGVy
QWN0aW9uRmxhZ3MqLCBjb25zdCBBdWRpb1RpbWVTdGFtcCosIFVJbnQzMiBidXNOdW1iZXIsIFVJ
bnQzMiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpOwogICAgIHN0YXRp
YyB2b2lkIGZyYW1lU2l6ZUNoYW5nZWRQcm9jKHZvaWQgKmluUmVmQ29uLCBBdWRpb1VuaXQgaW5V
bml0LCBBdWRpb1VuaXRQcm9wZXJ0eUlEIGluSUQsIEF1ZGlvVW5pdFNjb3BlIGluU2NvcGUsIEF1
ZGlvVW5pdEVsZW1lbnQgaW5FbGVtZW50KTsKQEAgLTc1LDcgKzY1LDYgQEAgcHJpdmF0ZToKICAg
ICBBdWRpb1VuaXQgbV9vdXRwdXRVbml0OwogICAgIEF1ZGlvSU9DYWxsYmFjayYgbV9jYWxsYmFj
azsKICAgICBSZWZQdHI8QXVkaW9CdXM+IG1fcmVuZGVyQnVzOwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxNZWRpYVNlc3Npb24+IG1fbWVkaWFTZXNzaW9uOwogCiAgICAgZG91YmxlIG1fc2FtcGxlUmF0
ZTsKICAgICBib29sIG1faXNQbGF5aW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0KaW5kZXggZmZlOTdiYzc4YTFiODQyOTZj
Y2I5ZDE2NmNjNmY1NThiMGNiODVmMi4uYmQ4Yzc1YmJkMmUxMTY3OWNlOTY2ZjI3ZTdjODc2ZWE3
OGVlOGE1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1
ZGlvU2Vzc2lvbklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3Mv
QXVkaW9TZXNzaW9uSU9TLm1tCkBAIC0xNzYsMTEgKzE3NiwxMSBAQCBzaXplX3QgQXVkaW9TZXNz
aW9uOjpudW1iZXJPZk91dHB1dENoYW5uZWxzKCkgY29uc3QKICAgICByZXR1cm4gW1tBVkF1ZGlv
U2Vzc2lvbiBzaGFyZWRJbnN0YW5jZV0gb3V0cHV0TnVtYmVyT2ZDaGFubmVsc107CiB9CiAKLXZv
aWQgQXVkaW9TZXNzaW9uOjpzZXRBY3RpdmUoYm9vbCBhY3RpdmUpCitib29sIEF1ZGlvU2Vzc2lv
bjo6dHJ5VG9TZXRBY3RpdmUoYm9vbCBhY3RpdmUpCiB7CiAgICAgTlNFcnJvciAqZXJyb3IgPSBu
aWw7CiAgICAgW1tBVkF1ZGlvU2Vzc2lvbiBzaGFyZWRJbnN0YW5jZV0gc2V0QWN0aXZlOmFjdGl2
ZSBlcnJvcjomZXJyb3JdOwotICAgIEFTU0VSVCghZXJyb3IpOworICAgIHJldHVybiAhZXJyb3I7
CiB9CiAKIHNpemVfdCBBdWRpb1Nlc3Npb246OnByZWZlcnJlZEJ1ZmZlclNpemUoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lv
bk1hbmFnZXJJT1MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNl
c3Npb25NYW5hZ2VySU9TLmgKaW5kZXggNjFjYzAyMWYzZjVmMmZiZmVhMjRiZWVmN2JjZjJlZTlj
OGUzMWYwMC4uOTNlY2JjZWM2NGIwZWE3NTFlZDY2MTQwZGUyMWJmMzYyMTMwZGVlYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFn
ZXJJT1MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNz
aW9uTWFuYWdlcklPUy5oCkBAIC01Myw3ICs1Myw3IEBAIHByaXZhdGU6CiAKICAgICBNZWRpYVNl
c3Npb25NYW5hZ2VyaU9TKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2Vzc2lvbldpbGxCZWdpblBs
YXliYWNrKE1lZGlhU2Vzc2lvbiYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBzZXNzaW9u
V2lsbEJlZ2luUGxheWJhY2soTWVkaWFTZXNzaW9uJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIHNlc3Npb25XaWxsRW5kUGxheWJhY2soTWVkaWFTZXNzaW9uJikgb3ZlcnJpZGU7CiAgICAg
CiAgICAgdm9pZCB1cGRhdGVOb3dQbGF5aW5nSW5mbygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbQpp
bmRleCA2NjAwNDgxZDY3MWM2YTI0MjU5ZjA0YWI2MzdlMGE2ZTkyYjIzMjhjLi43MDk0NjdlMmFl
ODI0ZjUxNTc1YWZkOGYzNjA5NGQ5YjUyN2ViZTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbQpA
QCAtMTg0LDEwICsxODQsMTMgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpjb25maWd1
cmVXaXJlTGVzc1RhcmdldE1vbml0b3JpbmcoKQogICAgICAgICBbbV9vYmpjT2JzZXJ2ZXIgc3Rv
cE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXTsKIH0KIAotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2Vy
aU9TOjpzZXNzaW9uV2lsbEJlZ2luUGxheWJhY2soTWVkaWFTZXNzaW9uJiBzZXNzaW9uKQorYm9v
bCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpzZXNzaW9uV2lsbEJlZ2luUGxheWJhY2soTWVkaWFT
ZXNzaW9uJiBzZXNzaW9uKQogewotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25XaWxs
QmVnaW5QbGF5YmFjayhzZXNzaW9uKTsKKyAgICBpZiAoIU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNl
c3Npb25XaWxsQmVnaW5QbGF5YmFjayhzZXNzaW9uKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CiAgICAgdXBkYXRlTm93UGxheWluZ0luZm8oKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KICAgICAK
IHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6c2Vzc2lvbldpbGxFbmRQbGF5YmFjayhNZWRp
YVNlc3Npb24mIHNlc3Npb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAKaW5kZXggMGFhZTFmYzVhM2FkODM2
ZmNiMzY4MDg4NWJiMjk2MGRkYzhlZjlmOS4uZGMzYTFiNTRlZDQzYjc0Mjg5OGU1OTM5YTdhZGNm
YzM4ZjRlMTUzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFj
L0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcApAQCAtODUsNyArODUsNiBAQCBBdWRpb0Rl
c3RpbmF0aW9uTWFjOjpBdWRpb0Rlc3RpbmF0aW9uTWFjKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJh
Y2ssIGZsb2F0IHNhbXBsZQogICAgICwgbV9yZW5kZXJCdXMoQXVkaW9CdXM6OmNyZWF0ZSgyLCBr
QnVmZmVyU2l6ZSwgZmFsc2UpKQogICAgICwgbV9zYW1wbGVSYXRlKHNhbXBsZVJhdGUpCiAgICAg
LCBtX2lzUGxheWluZyhmYWxzZSkKLSAgICAsIG1fbWVkaWFTZXNzaW9uKE1lZGlhU2Vzc2lvbjo6
Y3JlYXRlKCp0aGlzKSkKIHsKICAgICAvLyBPcGVuIGFuZCBpbml0aWFsaXplIERlZmF1bHRPdXRw
dXRVbml0CiAgICAgQXVkaW9Db21wb25lbnQgY29tcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5oCmluZGV4IDIwMDI2
ZjdhN2Q1MTE0ZDg1MjA1YzlmZmMwODZhY2FhNzQ3MTA4NmEuLjllODY5ZDBiOGRhZWQ0ZjY5OTJi
M2Q5M2Q2ODhmYjJjYWI5ZTY3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuaApAQCAtMzEsNyArMzEsNiBAQAog
CiAjaW5jbHVkZSAiQXVkaW9CdXMuaCIKICNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uLmgiCi0j
aW5jbHVkZSAiTWVkaWFTZXNzaW9uLmgiCiAjaW5jbHVkZSA8QXVkaW9Vbml0L0F1ZGlvVW5pdC5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtMzksNyArMzgsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIC8vIEFuIEF1ZGlvRGVzdGluYXRpb24gdXNpbmcgQ29yZUF1ZGlvJ3MgZGVm
YXVsdCBvdXRwdXQgQXVkaW9Vbml0CiAKLWNsYXNzIEF1ZGlvRGVzdGluYXRpb25NYWMgOiBwdWJs
aWMgQXVkaW9EZXN0aW5hdGlvbiwgcHVibGljIE1lZGlhU2Vzc2lvbkNsaWVudCB7CitjbGFzcyBB
dWRpb0Rlc3RpbmF0aW9uTWFjIDogcHVibGljIEF1ZGlvRGVzdGluYXRpb24gewogcHVibGljOgog
ICAgIEF1ZGlvRGVzdGluYXRpb25NYWMoQXVkaW9JT0NhbGxiYWNrJiwgZmxvYXQgc2FtcGxlUmF0
ZSk7CiAgICAgdmlydHVhbCB+QXVkaW9EZXN0aW5hdGlvbk1hYygpOwpAQCAtNTMsMTkgKzUyLDkg
QEAgcHJpdmF0ZToKICAgICBPU1N0YXR1cyByZW5kZXIoVUludDMyIG51bWJlck9mRnJhbWVzLCBB
dWRpb0J1ZmZlckxpc3QqIGlvRGF0YSk7CiAgICAgdm9pZCBzZXRJc1BsYXlpbmcoYm9vbCk7CiAK
LSAgICB2aXJ0dWFsIE1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIG1lZGlhVHlwZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIE1lZGlhU2Vzc2lvbjo6V2ViQXVkaW87IH0KLSAgICB2aXJ0dWFsIE1l
ZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHByZXNlbnRhdGlvblR5cGUoKSBjb25zdCB7IHJldHVybiBN
ZWRpYVNlc3Npb246OldlYkF1ZGlvOyB9Ci0gICAgdmlydHVhbCBib29sIGNhblJlY2VpdmVSZW1v
dGVDb250cm9sQ29tbWFuZHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoTWVkaWFTZXNzaW9u
OjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgYm9v
bCBvdmVycmlkZUJhY2tncm91bmRQbGF5YmFja1Jlc3RyaWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KLQogICAgIHZpcnR1YWwgdm9pZCBzdGFydCgpIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGlzUGxh
eWluZygpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNQbGF5aW5nOyB9Ci0KLSAgICB2aXJ0dWFsIHZv
aWQgcGF1c2VQbGF5YmFjaygpIG92ZXJyaWRlIHsgc3RvcCgpOyB9Ci0gICAgdmlydHVhbCB2b2lk
IHJlc3VtZVBsYXliYWNrKCkgb3ZlcnJpZGUgeyBzdGFydCgpOyB9Ci0KICAgICB2aXJ0dWFsIGZs
b2F0IHNhbXBsZVJhdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3NhbXBsZVJhdGU7IH0K
IAogICAgIEF1ZGlvVW5pdCBtX291dHB1dFVuaXQ7CkBAIC03NCwxMCArNjMsNiBAQCBwcml2YXRl
OgogCiAgICAgZmxvYXQgbV9zYW1wbGVSYXRlOwogICAgIGJvb2wgbV9pc1BsYXlpbmc7Ci0KLSNp
ZiBVU0UoQVVESU9fU0VTU0lPTikKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFTZXNzaW9uPiBt
X21lZGlhU2Vzc2lvbjsKLSNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1h
Yy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFj
LmNwcAppbmRleCBjOTJhMzgwN2Y2YjY5YzNhYzQ1OTMxMjc4NGQ5ZDdmYjgzODkyZTQ1Li4xZDI4
NGY2YzUxZjA1MGUzNTM3YzliZmZlZjUyMjNjZmJiNDMzNWU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcApAQCAtMTA3
LDkgKzEwNywxMCBAQCBzaXplX3QgQXVkaW9TZXNzaW9uOjpudW1iZXJPZk91dHB1dENoYW5uZWxz
KCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBBdWRpb1Nlc3Npb246OnNldEFjdGl2
ZShib29sKQorYm9vbCBBdWRpb1Nlc3Npb246OnRyeVRvU2V0QWN0aXZlKGJvb2wpCiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc2l6ZV90IEF1ZGlvU2Vz
c2lvbjo6cHJlZmVycmVkQnVmZmVyU2l6ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAK
aW5kZXggYWFmY2JkMjQ4MGJjZWYzMmVhZGQ4YTc4NDY2NWFkMWE0OWM2MjQwNS4uZjViMjg4NTBk
ZDQxOGU3ZjAzZjYxNTcxMGY1YWY3MTNmZTgxZDlkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vbWFjL01lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9NZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNw
cApAQCAtNTcsOSArNTcsNiBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZVNlc3Np
b25TdGF0ZSgpCiAgICAgfQogCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIGlmIChhY3RpdmVBdWRp
b1Nlc3Npb25SZXF1aXJlZCgpKQotICAgICAgICBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24o
KS5zZXRBY3RpdmUodHJ1ZSk7Ci0KICAgICBpZiAoIVNldHRpbmdzOjpzaG91bGRNYW5hZ2VBdWRp
b1Nlc3Npb25DYXRlZ29yeSgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAppbmRleCAyZGU0YzI3NDAzZDBiZDRjOTAyYWJiMThiY2RkNGMxMmY3ZmM5
YzU3Li44OWQxZjhiYzExZjVhZjY3OWMwNjc1MTFmNjk0ZTcyMWVjY2QxYTMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yNDY3LDYgKzI0NjcsOCBAQCB2b2lkIEludGVy
bmFsczo6c2V0TWVkaWFTZXNzaW9uUmVzdHJpY3Rpb25zKGNvbnN0IFN0cmluZyYgbWVkaWFUeXBl
U3RyaW5nLCBjb25zdAogICAgICAgICByZXN0cmljdGlvbnMgKz0gTWVkaWFTZXNzaW9uTWFuYWdl
cjo6QmFja2dyb3VuZFByb2Nlc3NQbGF5YmFja1Jlc3RyaWN0ZWQ7CiAgICAgaWYgKGVxdWFsSWdu
b3JpbmdDYXNlKHJlc3RyaWN0aW9uc1N0cmluZywgIkJhY2tncm91bmRUYWJQbGF5YmFja1Jlc3Ry
aWN0ZWQiKSkKICAgICAgICAgcmVzdHJpY3Rpb25zICs9IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OkJh
Y2tncm91bmRUYWJQbGF5YmFja1Jlc3RyaWN0ZWQ7CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KHJlc3RyaWN0aW9uc1N0cmluZywgIkludGVycnVwdGVkUGxheWJhY2tOb3RQZXJtaXR0ZWQiKSkK
KyAgICAgICAgcmVzdHJpY3Rpb25zICs9IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OkludGVycnVwdGVk
UGxheWJhY2tOb3RQZXJtaXR0ZWQ7CiAKICAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRN
YW5hZ2VyKCkuYWRkUmVzdHJpY3Rpb24obWVkaWFUeXBlLCByZXN0cmljdGlvbnMpOwogfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGIyOGZkYTFhMWI2NTY1MzI1ZjYwMjQwZjJhODMxNmMwMTZiZjFlYWQuLjViNzc1YzUwYmY3
MjMwNzAxMjM5OGZmZDhhYThiY2E1ZDE2NWQxMTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAx
NS0wMy0yOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9T
XSBXaGVuIFdlYiBBdWRpbyBpcyBpbnRlcnJ1cHRlZCBieSBhIHBob25lIGNhbGwsIGl0IGNhbm5v
dCBiZSByZXN0YXJ0ZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDMxOTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHdlYmF1ZGlvL2F1ZGlvY29udGV4dC1zdGF0ZS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHdlYmF1ZGlvL2F1ZGlvY29udGV4dC1zdGF0ZS1pbnRlcnJ1cHRlZC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYmF1ZGlvL2F1ZGlvY29udGV4dC1zdGF0ZS1p
bnRlcnJ1cHRlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJhdWRpby9hdWRpb2NvbnRleHQt
c3RhdGUuaHRtbDogQWRkZWQuCisKIDIwMTUtMDMtMjYgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25A
YXBwbGUuY29tPgogCiAgICAgICAgIEFwcGx5IENvbnRlbnRFeHRlbnNpb24gYWN0aW9ucyBhZnRl
ciByZWRpcmVjdHMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb2NvbnRl
eHQtc3RhdGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9jb250ZXh0
LXN0YXRlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YTY5NjVmYmRhYWNkYzA3OWU1MzkzOTg2
ZTcxYWI0MGQ3MjE2ZjQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8v
YXVkaW9jb250ZXh0LXN0YXRlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI2IEBACitCYXNpYyB0
ZXN0cyBmb3IgQXVkaW9Ob2RlIEFQSS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQ
QVNTIGNvbnRleHQuc3RhdGUgaXMgInN1c3BlbmRlZCIKK25vZGUuY29ubmVjdChjb250ZXh0LmRl
c3RpbmF0aW9uKQorUEFTUyBjb250ZXh0LnN0YXRlIGlzICJydW5uaW5nIgorQ2FsbGluZyBjb250
ZXh0LnN1c3BlbmQoKQorUEFTUyBjb250ZXh0LnN1c3BlbmQoKSBwcm9taXNlIHJlc29sdmVkCitQ
QVNTIGNvbnRleHQuc3RhdGUgaXMgInN1c3BlbmRlZCIKK0NhbGxpbmcgY29udGV4dC5yZXN1bWUo
KQorUEFTUyBjb250ZXh0LnJlc3VtZSgpIHByb21pc2UgcmVzb2x2ZWQKK1BBU1MgY29udGV4dC5z
dGF0ZSBpcyAicnVubmluZyIKK0NhbGxpbmcgY29udGV4dC5jbG9zZSgpCitQQVNTIGNvbnRleHQu
Y2xvc2UoKSBwcm9taXNlIHJlc29sdmVkCitQQVNTIGNvbnRleHQuc3RhdGUgaXMgImNsb3NlZCIK
K0NhbGxpbmcgY29udGV4dC5yZXN1bWUoKSAoc2hvdWxkIGZhaWwpCitQQVNTIGNvbnRleHQucmVz
dW1lKCkgcHJvbWlzZSByZWplY3RlZCAoY29ycmVjdGx5KQorUEFTUyBjb250ZXh0LnN0YXRlIGlz
ICJjbG9zZWQiCitDYWxsaW5nIGNvbnRleHQuc3VzcGVuZCgpIChzaG91bGQgZmFpbCkKK1BBU1Mg
Y29udGV4dC5yZXN1bWUoKSBwcm9taXNlIHJlamVjdGVkIChjb3JyZWN0bHkpCitQQVNTIGNvbnRl
eHQuc3RhdGUgaXMgImNsb3NlZCIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb2Nv
bnRleHQtc3RhdGUtaW50ZXJydXB0ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViYXVk
aW8vYXVkaW9jb250ZXh0LXN0YXRlLWludGVycnVwdGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hMzg1MTExYTY2ZWQ3YmY2ZDQ4MWY0YjZkZjc5NGY2N2FmNDVlODZiCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9jb250ZXh0LXN0YXRlLWludGVycnVwdGVk
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUwIEBACitCYXNpYyB0ZXN0cyBmb3IgQXVkaW9Ob2Rl
IEFQSS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIGNvbnRleHQuc3RhdGUg
aXMgInN1c3BlbmRlZCIKK25vZGUuY29ubmVjdChjb250ZXh0LmRlc3RpbmF0aW9uKQorRVZFTlQg
c3RhdGVjaGFuZ2UKK1BBU1MgY29udGV4dC5zdGF0ZSBpcyAicnVubmluZyIKKworVGVzdCAxOiBy
ZXN1bWUoKSB3aGlsZSBpbnRlcnJ1cHRlZCBpcyByZXNvbHZlZCBhZnRlciB0aGUgaW50ZXJydXB0
aW9uIGVuZHMuCitpbnRlcm5hbHMuYmVnaW5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oKQorRVZF
TlQgc3RhdGVjaGFuZ2UKK1BBU1MgY29udGV4dC5zdGF0ZSBpcyAiaW50ZXJydXB0ZWQiCitpbnRl
cm5hbHMuc2V0TWVkaWFTZXNzaW9uUmVzdHJpY3Rpb25zKCJXZWJBdWRpbyIsICJJbnRlcnJ1cHRl
ZFBsYXliYWNrTm90UGVybWl0dGVkIikKK0NhbGxpbmcgY29udGV4dC5yZXN1bWUoKQorRGVsYXlp
bmcgMTAwbXMKK1BBU1MgY29udGV4dC5zdGF0ZSBpcyAiaW50ZXJydXB0ZWQiCitpbnRlcm5hbHMu
ZW5kTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCJNYXlSZXN1bWVQbGF5aW5nIikKK1BBU1MgY29u
dGV4dC5yZXN1bWUoKSBwcm9taXNlIHJlc29sdmVkCitQQVNTIGNvbnRleHQuc3RhdGUgaXMgInJ1
bm5pbmciCisKK1Rlc3QgMjogcmVzdW1lKCkgd2hpbGUgaW50ZXJydXB0ZWQgd2lsbCBjYXVzZSBp
bnRlcnJ1cHRpb24gdG8gZW5kLgoraW50ZXJuYWxzLmJlZ2luTWVkaWFTZXNzaW9uSW50ZXJydXB0
aW9uKCkKK0VWRU5UIHN0YXRlY2hhbmdlCitQQVNTIGNvbnRleHQuc3RhdGUgaXMgImludGVycnVw
dGVkIgoraW50ZXJuYWxzLnNldE1lZGlhU2Vzc2lvblJlc3RyaWN0aW9ucygiV2ViQXVkaW8iLCAi
IikKK0NhbGxpbmcgY29udGV4dC5yZXN1bWUoKQorUEFTUyBjb250ZXh0LnJlc3VtZSgpIHByb21p
c2UgcmVzb2x2ZWQKK1BBU1MgY29udGV4dC5zdGF0ZSBpcyAicnVubmluZyIKKworVGVzdCAzOiBy
dW5uaW5nIEF1ZGlvQ29udGV4dHMgd2lsbCBub3QgcmVzdW1lIGFmdGVyIGFuIGludGVycnVwdGlv
biBlbmRzLgoraW50ZXJuYWxzLmJlZ2luTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCkKK0VWRU5U
IHN0YXRlY2hhbmdlCitQQVNTIGNvbnRleHQuc3RhdGUgaXMgImludGVycnVwdGVkIgoraW50ZXJu
YWxzLmVuZE1lZGlhU2Vzc2lvbkludGVycnVwdGlvbigiIikKK0VWRU5UIHN0YXRlY2hhbmdlCitQ
QVNTIGNvbnRleHQuc3RhdGUgaXMgInN1c3BlbmRlZCIKKworVGVzdCA0OiByZXN1bWUoKSB3aGls
ZSBpbnRlcnJ1cHRlZCB3aWxsIG5vdCByZXN1bWUgcGxheWJhY2sgYWZ0ZXIgYW4gaW50ZXJydXB0
aW9uLgoraW50ZXJuYWxzLmJlZ2luTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCkKK0VWRU5UIHN0
YXRlY2hhbmdlCitQQVNTIGNvbnRleHQuc3RhdGUgaXMgImludGVycnVwdGVkIgorQ2FsbGluZyBj
b250ZXh0LnJlc3VtZSgpCitpbnRlcm5hbHMuZW5kTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCIi
KQorRVZFTlQgc3RhdGVjaGFuZ2UKK1BBU1MgY29udGV4dC5zdGF0ZSBpcyAic3VzcGVuZGVkIgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvY29udGV4dC1zdGF0ZS1pbnRlcnJ1cHRl
ZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9jb250ZXh0LXN0YXRlLWludGVycnVw
dGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYzA5NjIwNjJlMmEzYmRlM2YyN2QyNjgwYzM0ODJkMmRhMDQy
ZDAzZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvY29udGV4
dC1zdGF0ZS1pbnRlcnJ1cHRlZC5odG1sCkBAIC0wLDAgKzEsMTUwIEBACis8IURPQ1RZUEUgaHRt
bD4KKworPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0icmVz
b3VyY2VzL2F1ZGlvLXRlc3RpbmcuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKzxk
aXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8
c2NyaXB0PgorZGVzY3JpcHRpb24oJ0Jhc2ljIHRlc3RzIGZvciBBdWRpb05vZGUgQVBJLicpOwor
Cit2YXIgY29udGV4dCA9IG51bGw7Cit2YXIgbm9kZSA9IG51bGw7CisKK2Z1bmN0aW9uIHJ1blRl
c3QoKSB7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9
CisgICAgCisgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgY29udGV4dCA9
IG5ldyB3ZWJraXRBdWRpb0NvbnRleHQoKTsKKworICAgIHNob3VsZEJlKCdjb250ZXh0LnN0YXRl
JywgJyJzdXNwZW5kZWQiJyk7CisgICAgY29udGV4dC5vbnN0YXRlY2hhbmdlID0gYmVnYW5SdW5u
aW5nOworCisgICAgbm9kZSA9IGNvbnRleHQuY3JlYXRlQnVmZmVyU291cmNlKCk7CisgICAgZXZh
bEFuZExvZygnbm9kZS5jb25uZWN0KGNvbnRleHQuZGVzdGluYXRpb24pJyk7CisKK30KKworZnVu
Y3Rpb24gYmVnYW5SdW5uaW5nKGUpIHsKKyAgICBkZWJ1ZygnRVZFTlQgJyArIGV2ZW50LnR5cGUp
OworICAgIHNob3VsZEJlKCdjb250ZXh0LnN0YXRlJywgJyJydW5uaW5nIicpOworCisgICAgZGVi
dWcoJycpOworICAgIGRlYnVnKCdUZXN0IDE6IHJlc3VtZSgpIHdoaWxlIGludGVycnVwdGVkIGlz
IHJlc29sdmVkIGFmdGVyIHRoZSBpbnRlcnJ1cHRpb24gZW5kcy4nKTsKKworICAgIGNvbnRleHQu
b25zdGF0ZWNoYW5nZSA9IGZpcnN0SW50ZXJydXB0aW9uU3RhcnRlZDsKKyAgICBpZiAod2luZG93
LmludGVybmFscykKKyAgICAgICAgZXZhbEFuZExvZygnaW50ZXJuYWxzLmJlZ2luTWVkaWFTZXNz
aW9uSW50ZXJydXB0aW9uKCknKTsKKworfQorCitmdW5jdGlvbiBmaXJzdEludGVycnVwdGlvblN0
YXJ0ZWQoZSkgeworICAgIGRlYnVnKCdFVkVOVCAnICsgZXZlbnQudHlwZSk7CisgICAgc2hvdWxk
QmUoJ2NvbnRleHQuc3RhdGUnLCAnImludGVycnVwdGVkIicpOworICAgIGlmICh3aW5kb3cuaW50
ZXJuYWxzKQorICAgICAgICBldmFsQW5kTG9nKCdpbnRlcm5hbHMuc2V0TWVkaWFTZXNzaW9uUmVz
dHJpY3Rpb25zKCJXZWJBdWRpbyIsICJJbnRlcnJ1cHRlZFBsYXliYWNrTm90UGVybWl0dGVkIikn
KTsKKworICAgIGNvbnRleHQub25zdGF0ZWNoYW5nZSA9IG51bGw7CisKKyAgICBkZWJ1ZygnQ2Fs
bGluZyBjb250ZXh0LnJlc3VtZSgpJyk7CisgICAgY29udGV4dC5yZXN1bWUoKS50aGVuKGZpcnN0
UmVzdW1lU3VjY2VlZGVkKTsKKyAgICBkZWJ1ZygnRGVsYXlpbmcgMTAwbXMnKTsKKyAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICBzaG91bGRCZSgnY29udGV4dC5zdGF0ZScsICci
aW50ZXJydXB0ZWQiJyk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAg
ICAgZXZhbEFuZExvZygnaW50ZXJuYWxzLmVuZE1lZGlhU2Vzc2lvbkludGVycnVwdGlvbigiTWF5
UmVzdW1lUGxheWluZyIpJyk7CisgICAgfSwgMTAwKTsKK30KKworZnVuY3Rpb24gZmlyc3RSZXN1
bWVTdWNjZWVkZWQoKSB7CisgICAgdGVzdFBhc3NlZCgnY29udGV4dC5yZXN1bWUoKSBwcm9taXNl
IHJlc29sdmVkJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuc3RhdGUnLCAnInJ1bm5pbmciJyk7
CisKKyAgICBkZWJ1ZygnJyk7CisgICAgZGVidWcoJ1Rlc3QgMjogcmVzdW1lKCkgd2hpbGUgaW50
ZXJydXB0ZWQgd2lsbCBjYXVzZSBpbnRlcnJ1cHRpb24gdG8gZW5kLicpCisKKyAgICBjb250ZXh0
Lm9uc3RhdGVjaGFuZ2UgPSBzZWNvbmRJbnRlcnJ1cHRpb25TdGFydGVkOworICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzKQorICAgICAgICBldmFsQW5kTG9nKCdpbnRlcm5hbHMuYmVnaW5NZWRpYVNl
c3Npb25JbnRlcnJ1cHRpb24oKScpOworfQorCitmdW5jdGlvbiBzZWNvbmRJbnRlcnJ1cHRpb25T
dGFydGVkKGUpIHsKKyAgICBkZWJ1ZygnRVZFTlQgJyArIGV2ZW50LnR5cGUpOworICAgIHNob3Vs
ZEJlKCdjb250ZXh0LnN0YXRlJywgJyJpbnRlcnJ1cHRlZCInKTsKKyAgICBpZiAod2luZG93Lmlu
dGVybmFscykKKyAgICAgICAgZXZhbEFuZExvZygnaW50ZXJuYWxzLnNldE1lZGlhU2Vzc2lvblJl
c3RyaWN0aW9ucygiV2ViQXVkaW8iLCAiIiknKTsKKworICAgIGNvbnRleHQub25zdGF0ZWNoYW5n
ZSA9IG51bGw7CisKKyAgICBkZWJ1ZygnQ2FsbGluZyBjb250ZXh0LnJlc3VtZSgpJyk7CisgICAg
Y29udGV4dC5yZXN1bWUoKS50aGVuKHNlY29uZFJlc3VtZVN1Y2NlZWRlZCk7Cit9CisKK2Z1bmN0
aW9uIHNlY29uZFJlc3VtZVN1Y2NlZWRlZCgpIHsKKyAgICB0ZXN0UGFzc2VkKCdjb250ZXh0LnJl
c3VtZSgpIHByb21pc2UgcmVzb2x2ZWQnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5zdGF0ZScs
ICcicnVubmluZyInKTsKKworICAgIGRlYnVnKCcnKTsKKyAgICBkZWJ1ZygnVGVzdCAzOiBydW5u
aW5nIEF1ZGlvQ29udGV4dHMgd2lsbCBub3QgcmVzdW1lIGFmdGVyIGFuIGludGVycnVwdGlvbiBl
bmRzLicpCisKKyAgICBjb250ZXh0Lm9uc3RhdGVjaGFuZ2UgPSB0aGlyZEludGVycnVwdGlvblN0
YXJ0ZWQ7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGV2YWxBbmRMb2coJ2lu
dGVybmFscy5iZWdpbk1lZGlhU2Vzc2lvbkludGVycnVwdGlvbigpJyk7Cit9CisKK2Z1bmN0aW9u
IHRoaXJkSW50ZXJydXB0aW9uU3RhcnRlZCgpIHsKKyAgICBkZWJ1ZygnRVZFTlQgJyArIGV2ZW50
LnR5cGUpOworICAgIHNob3VsZEJlKCdjb250ZXh0LnN0YXRlJywgJyJpbnRlcnJ1cHRlZCInKTsK
KworICAgIGNvbnRleHQub25zdGF0ZWNoYW5nZSA9IHRoaXJkSW50ZXJydXB0aW9uRW5kZWQ7Cisg
ICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGV2YWxBbmRMb2coJ2ludGVybmFscy5l
bmRNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oIiIpJyk7Cit9CisKK2Z1bmN0aW9uIHRoaXJkSW50
ZXJydXB0aW9uRW5kZWQoKSB7CisgICAgZGVidWcoJ0VWRU5UICcgKyBldmVudC50eXBlKTsKKyAg
ICBzaG91bGRCZSgnY29udGV4dC5zdGF0ZScsICcic3VzcGVuZGVkIicpOworCisgICAgZGVidWco
JycpOworICAgIGRlYnVnKCdUZXN0IDQ6IHJlc3VtZSgpIHdoaWxlIGludGVycnVwdGVkIHdpbGwg
bm90IHJlc3VtZSBwbGF5YmFjayBhZnRlciBhbiBpbnRlcnJ1cHRpb24uJykKKworICAgIGNvbnRl
eHQub25zdGF0ZWNoYW5nZSA9IGZvdXJ0aEludGVycnVwdGlvblN0YXJ0ZWQ7CisgICAgaWYgKHdp
bmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGV2YWxBbmRMb2coJ2ludGVybmFscy5iZWdpbk1lZGlh
U2Vzc2lvbkludGVycnVwdGlvbigpJyk7Cit9CisKK2Z1bmN0aW9uIGZvdXJ0aEludGVycnVwdGlv
blN0YXJ0ZWQoKSB7CisgICAgZGVidWcoJ0VWRU5UICcgKyBldmVudC50eXBlKTsKKyAgICBzaG91
bGRCZSgnY29udGV4dC5zdGF0ZScsICciaW50ZXJydXB0ZWQiJyk7CisKKyAgICBjb250ZXh0Lm9u
c3RhdGVjaGFuZ2UgPSBmb3VydGhJbnRlcnJ1cHRpb25FbmRlZDsKKworICAgIGRlYnVnKCdDYWxs
aW5nIGNvbnRleHQucmVzdW1lKCknKTsKKyAgICBjb250ZXh0LnJlc3VtZSgpOworCisgICAgaWYg
KHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGV2YWxBbmRMb2coJ2ludGVybmFscy5lbmRNZWRp
YVNlc3Npb25JbnRlcnJ1cHRpb24oIiIpJyk7Cit9CisKK2Z1bmN0aW9uIGZvdXJ0aEludGVycnVw
dGlvbkVuZGVkKCkgeworICAgIGRlYnVnKCdFVkVOVCAnICsgZXZlbnQudHlwZSk7CisgICAgc2hv
dWxkQmUoJ2NvbnRleHQuc3RhdGUnLCAnInN1c3BlbmRlZCInKTsKKyAgICBmaW5pc2hKU1Rlc3Qo
KTsKK30KKworcnVuVGVzdCgpOworCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9jb250ZXh0LXN0YXRlLmh0bWwgYi9MYXlv
dXRUZXN0cy93ZWJhdWRpby9hdWRpb2NvbnRleHQtc3RhdGUuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NWZi
NGM1YjFjMzNmMDk3YjgxM2RkMTZjMGYyMTU4MTg1YTk0NzcxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9jb250ZXh0LXN0YXRlLmh0bWwKQEAgLTAsMCArMSwx
MDkgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgc3JjPSJyZXNvdXJjZXMvYXVkaW8tdGVzdGluZy5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+CisKKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignQmFzaWMgdGVzdHMgZm9y
IEF1ZGlvTm9kZSBBUEkuJyk7CisKK3ZhciBjb250ZXh0ID0gbnVsbDsKK3ZhciBub2RlID0gbnVs
bDsKKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOworICAgIH0KKyAgICAKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7CisKKyAgICBjb250ZXh0ID0gbmV3IHdlYmtpdEF1ZGlvQ29udGV4dCgpOworCisgICAgc2hv
dWxkQmUoJ2NvbnRleHQuc3RhdGUnLCAnInN1c3BlbmRlZCInKTsKKworICAgIG5vZGUgPSBjb250
ZXh0LmNyZWF0ZUJ1ZmZlclNvdXJjZSgpOworICAgIGV2YWxBbmRMb2coJ25vZGUuY29ubmVjdChj
b250ZXh0LmRlc3RpbmF0aW9uKScpOworCisgICAgc2hvdWxkQmUoJ2NvbnRleHQuc3RhdGUnLCAn
InJ1bm5pbmciJyk7CisKKyAgICBkZWJ1ZygnQ2FsbGluZyBjb250ZXh0LnN1c3BlbmQoKScpOwor
ICAgIGNvbnRleHQuc3VzcGVuZCgpLnRoZW4oc3VzcGVuZFN1Y2NlZWRlZCwgc3VzcGVuZEZhaWxl
ZCk7Cit9CisKK2Z1bmN0aW9uIHN1c3BlbmRGYWlsZWQoKSB7CisgICAgdGVzdEZhaWxlZCgnY29u
dGV4dC5zdXNwZW5kKCkgcHJvbWlzZSByZWplY3RlZCcpOworICAgIGZpbmlzaEpTVGVzdCgpOwor
fQorCitmdW5jdGlvbiBzdXNwZW5kU3VjY2VlZGVkKCkgeworICAgIHRlc3RQYXNzZWQoJ2NvbnRl
eHQuc3VzcGVuZCgpIHByb21pc2UgcmVzb2x2ZWQnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5z
dGF0ZScsICcic3VzcGVuZGVkIicpOworCisgICAgZGVidWcoJ0NhbGxpbmcgY29udGV4dC5yZXN1
bWUoKScpOworICAgIGNvbnRleHQucmVzdW1lKCkudGhlbihyZXN1bWVTdWNjZWVkZWQsIHJlc3Vt
ZUZhaWxlZCk7Cit9CisKK2Z1bmN0aW9uIHJlc3VtZUZhaWxlZCgpIHsKKyAgICB0ZXN0RmFpbGVk
KCdjb250ZXh0LnJlc3VtZSgpIHByb21pc2UgcmVqZWN0ZWQnKTsKKyAgICBmaW5pc2hKU1Rlc3Qo
KTsKK30KKworZnVuY3Rpb24gcmVzdW1lU3VjY2VlZGVkKCkgeworICAgIHRlc3RQYXNzZWQoJ2Nv
bnRleHQucmVzdW1lKCkgcHJvbWlzZSByZXNvbHZlZCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0
LnN0YXRlJywgJyJydW5uaW5nIicpOworCisgICAgZGVidWcoJ0NhbGxpbmcgY29udGV4dC5jbG9z
ZSgpJyk7CisgICAgY29udGV4dC5jbG9zZSgpLnRoZW4oY2xvc2VTdWNjZWVkZWQsIGNsb3NlRmFp
bGVkKTsKK30KKworZnVuY3Rpb24gY2xvc2VGYWlsZWQoKSB7IAorICAgIHRlc3RGYWlsZWQoJ2Nv
bnRleHQuY2xvc2UoKSBwcm9taXNlIHJlamVjdGVkJyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9
CisKK2Z1bmN0aW9uIGNsb3NlU3VjY2VlZGVkKCkgeworICAgIHRlc3RQYXNzZWQoJ2NvbnRleHQu
Y2xvc2UoKSBwcm9taXNlIHJlc29sdmVkJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuc3RhdGUn
LCAnImNsb3NlZCInKTsKKworICAgIGRlYnVnKCdDYWxsaW5nIGNvbnRleHQucmVzdW1lKCkgKHNo
b3VsZCBmYWlsKScpOworICAgIGNvbnRleHQucmVzdW1lKCkudGhlbihyZXN1bWVTdWNjZWVkZWRJ
bmNvcnJlY3RseSwgcmVzdW1lRmFpbGVkQ29ycmVjdGx5KTsKK30KKworZnVuY3Rpb24gcmVzdW1l
U3VjY2VlZGVkSW5jb3JyZWN0bHkoKSB7CisgICAgdGVzdEZhaWxlZCgnY29udGV4dC5yZXN1bWUo
KSBwcm9taXNlIHJlc29sdmVkIChzaG91bGQgaGF2ZSByZWplY3RlZCknKTsKKyAgICBmaW5pc2hK
U1Rlc3QoKTsKK30KKworZnVuY3Rpb24gcmVzdW1lRmFpbGVkQ29ycmVjdGx5KCkgeworICAgIHRl
c3RQYXNzZWQoJ2NvbnRleHQucmVzdW1lKCkgcHJvbWlzZSByZWplY3RlZCAoY29ycmVjdGx5KScp
OworICAgIHNob3VsZEJlKCdjb250ZXh0LnN0YXRlJywgJyJjbG9zZWQiJyk7CisKKyAgICBkZWJ1
ZygnQ2FsbGluZyBjb250ZXh0LnN1c3BlbmQoKSAoc2hvdWxkIGZhaWwpJyk7CisgICAgY29udGV4
dC5zdXNwZW5kKCkudGhlbihzdXNwZW5kU3VjY2VlZGVkSW5jb3JyZWN0bHksIHN1c3BlbmRGYWls
ZWRDb3JyZWN0bHkpOworfQorCitmdW5jdGlvbiBzdXNwZW5kU3VjY2VlZGVkSW5jb3JyZWN0bHko
KSB7CisgICAgdGVzdEZhaWxlZCgnY29udGV4dC5zdXNwZW5kKCkgcHJvbWlzZSByZXNvbHZlZCAo
c2hvdWxkIGhhdmUgcmVqZWN0ZWQpJyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Z1bmN0
aW9uIHN1c3BlbmRGYWlsZWRDb3JyZWN0bHkoKSB7CisgICAgdGVzdFBhc3NlZCgnY29udGV4dC5y
ZXN1bWUoKSBwcm9taXNlIHJlamVjdGVkIChjb3JyZWN0bHkpJyk7CisgICAgc2hvdWxkQmUoJ2Nv
bnRleHQuc3RhdGUnLCAnImNsb3NlZCInKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworcnVu
VGVzdCgpOworCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249686</attachid>
            <date>2015-03-29 11:55:24 -0700</date>
            <delta_ts>2015-03-29 13:55:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143190-20150329115447.patch</filename>
            <type>text/plain</type>
            <size>64973</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyMDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGY4MDEzZmVhNWNkMGEy
ZTIwODRkZjA0MWFiNWM4NzFlOWQ2YWM1Yi4uYTk4ZTA2M2VlYjkxNWZmYTY3ZmZlMDUyYjQ2NDA5
NDIyOGZmYmUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMyBAQAorMjAxNS0wMy0yOCAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBXaGVuIFdlYiBB
dWRpbyBpcyBpbnRlcnJ1cHRlZCBieSBhIHBob25lIGNhbGwsIGl0IGNhbm5vdCBiZSByZXN0YXJ0
ZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMx
OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0
czogd2ViYXVkaW8vYXVkaW9jb250ZXh0LXN0YXRlLWludGVycnVwdGVkLmh0bWwKKyAgICAgICAg
ICAgICAgIHdlYmF1ZGlvL2F1ZGlvY29udGV4dC1zdGF0ZS5odG1sCisKKyAgICAgICAgSW1wbGVt
ZW50IHRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhbmQgcHJvcGVydGllcyBmcm9tIHRoZSBXZWIgQXVk
aW8gc3BlYzoKKyAgICAgICAgY2xvc2UoKSwgc3VzcGVuZCgpLCByZXN1bWUoKSwgb25zdGF0ZWNo
YW5nZS4KKworICAgICAgICBBdWRpb0NvbnRleHQgd2lsbCB0YWtlIG1vcmUgcmVzcG9uc2liaWxp
dHkgZm9yIHRyYWNraW5nIHN0YXRlIGFuZCBpbnRlcnJ1cHRpb25zIChhbmQKKyAgICAgICAgQXVk
aW9EZXN0aW5hdGlvbiB3aWxsIGdpdmUgdXAgdGhhdCByZXNwb25zaWJpbGl0eSkuIFRoaXMgbWVh
bnMgQXVkaW9Db250ZXh0IG11c3QgYmUgYQorICAgICAgICBNZWRpYVNlc3Npb25DbGllbnQsIGFu
ZCBvd24gaXRzIG93biBNZWRpYVNlc3Npb24uIEluIHJldHVybiwgQXVkaW9EZXN0aW5hdGlvbklP
UyBhbmQgCisgICAgICAgIEF1ZGlvRGVzdGluYXRpb25NYWMgcmVsaW5xdWlzaCBib3RoLgorCisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9Db250ZXh0OjpBdWRpb0NvbnRleHQpOiBTZXQgZGVmYXVsdCB2YWx1ZXMgaW4g
aGVhZGVyLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0Ojp1bmluaXRpYWxpemUpOiBD
YWxsIHNldFN0YXRlKCkgaW5zdGVhZCBvZiBzZXR0aW5nIG1fc3RhdGUuCisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0NvbnRleHQ6OmFkZFJlYWN0aW9uKTogQWRkZWQuIEFwcGVuZCB0aGUgY2FsbGJh
Y2sgdG8gdGhlIGFwcHJvcHJpYXRlIHZlY3RvciBmb3IgdGhlIHN0YXRlLgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9Db250ZXh0OjpzZXRTdGF0ZSk6IEFkZGVkLiBGaXJlIGV2ZW50cyBhbmQgcmVz
b2x2ZSB0aGUgYXBwcm9wcmlhdGUgcmVhY3Rpb24gY2FsbGJhY2tzIGZvciB0aGUgbmV3IHN0YXRl
LgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpzdGF0ZSk6IFJldHVybiBhIHN0cmlu
ZyByZXByZXNlbnRpbmcgdGhlIGNvbnRleHQncyBzdGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvQ29udGV4dDo6c3RvcCk6IENsb3NlIHRoZSBldmVudCBxdWV1ZS4KKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvQ29udGV4dDo6c3RhcnRSZW5kZXJpbmcpOiBDYWxsIHNldFN0YXRlKCkuCisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmZpcmVDb21wbGV0aW9uRXZlbnQpOiBDYWxsIHNl
dFN0YXRlKCkuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OnN1c3BlbmRDb250ZXh0
KTogQWRkZWQuIEFkZCByZWFjdGlvbiBjYWxsYmFjayBhbmQgY2FsbCBzdXNwZW5kKCkgb24gdGhl
IGRlc3RpbmF0aW9uIG5vZGUuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OnJlc3Vt
ZUNvbnRleHQpOiBBZGRlZC4gQWRkIHJlYWN0aW9uIGNhbGxiYWNrIGFuZCBjYWxsIHJlc3VtZSgp
IG9uIHRoZSBkZXN0aW5hdGlvbiBub2RlLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0
OjpjbG9zZUNvbnRleHQpOiBBZGRlZC4gQWRkIHJlYWN0aW9uIGNhbGxiYWNrIGFuZCBjYWxsIGNs
b3NlKCkgb24gdGhlIGRlc3RpbmF0aW9uIG5vZGUuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Nv
bnRleHQ6OnN1c3BlbmRQbGF5YmFjayk6IEFkZGVkLiBTdXNwZW5kIHBsYXliYWNrIGFuZCBzZXQg
c3RhdGUgdG8gaW50ZXJydXB0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6Om1h
eVJlc3VtZVBsYXliYWNrKTogQWRkZWQuIENvbmRpdGlvbmFsbHkgcmVzdW1lIHBsYXliYWNrLgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTQXVkaW9Db250ZXh0OjpzdXNwZW5kKTogQWRkZWQuIENyZWF0ZSBhbmQgcmV0
dXJuIGEgbmV3IFByb21pc2Ugb2JqZWN0LgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb0NvbnRl
eHQ6OnJlc3VtZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb0NvbnRleHQ6OmNs
b3NlKTogRGl0dG8uCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRs
OiBBZGQgbmV3IG1ldGhvZHMgYW5kIHByb3BlcnRpZXMuCisKKyAgICAgICAgRXh0ZW5zaXZlIG9y
Z2FuaXphdGlvbmFsIGNoYW5nZXMgd2VyZSBtYWRlIHRvIEF1ZGlvQ29udGV4dC5oIHRvIGdyb3Vw
IGluc3RhbmNlCisgICAgICAgIHZhcmlhYmxlcyB0b2dldGhlciBhbmQgYWRkIEMrKzExIGluaXRp
YWxpemVycyBpbiB0aGVpciBkZWNsYXJhdGlvbnM6CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjptZWRp
YVR5cGUpOiBNb3ZlZCBmcm9tIEF1ZGlvRGVzdGluYXRpb25Ob2RlLgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9Db250ZXh0OjpwcmVzZW50YXRpb25UeXBlKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0NvbnRleHQ6OmNhblJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6ZGlkUmVjZWl2ZVJlbW90ZUNvbnRy
b2xDb21tYW5kKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6Om92ZXJy
aWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rpb24pOiBEaXR0by4KKyAgICAgICAgCisgICAg
ICAgIE90aGVyIGNoYW5nZXMgdG8gc3VwcG9ydCB0aGUgbmV3IEF1ZGlvQ29udGV4dCBtZXRob2Rz
OgorCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnJlc3VtZSk6IEFkZCBlbXB0
eSBkZWZhdWx0IHZpcnR1YWwgbWV0aG9kLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5h
dGlvbk5vZGU6OnN1c3BlbmQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGlu
YXRpb25Ob2RlOjpjbG9zZSk6IERpdHRvLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVm
YXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRB
dWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVzdW1lKTogQWRkZWQuIFBhc3MgdG8gQXVkaW9EZXN0aW5h
dGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3Vz
cGVuZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25O
b2RlOjpjbG9zZSk6IERpdHRvLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1
ZGlvRGVzdGluYXRpb25Ob2RlLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Qcm9taXNl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFdyYXBwZXI6OnJlc29sdmUpOiBBZGQgYW4g
b3ZlcmxvYWQgZm9yIGEgbnVsbHB0ciByZXNvbHZlIHZhbHVlLgorICAgICAgICAqIGRvbS9FdmVu
dE5hbWVzLmg6IEFkZGVkICdzdGF0ZWNoYW5nZScuCisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2s6OlRhc2spOiBBZGQgYSBjb25zdHJ1Y3RvciB3aGljaCB0YWtlcyBhIHZvaWQoKSBjYWxs
YmFjay4KKworICAgICAgICBNb2RpZnkgTWVkaWFTZXNzaW9uLCBBdWRpb1Nlc3Npb24sIGFuZCBN
ZWRpYVNlc3Npb25NYW5hZ2VyIHRvIHN1cHBvcnQgdGhlIG5ldworICAgICAgICBpbnRlcnJ1cHRp
b24gYmVoYXZpb3IuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c3VzcGVuZFBsYXliYWNrKTogUmVuYW1l
ZCBmcm9tIHBhdXNlUGxheWJhY2soKS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6Om1heVJlc3VtZVBsYXliYWNrKTogUmVuYW1lZCBmcm9tIHJlc3VtZVBsYXliYWNrKCkuCisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vQXVkaW9TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6dHJ5
VG9TZXRBY3RpdmUpOiBSZW5hbWVkIGZyb20gc2V0QWN0aXZlLiBSZXR1cm4gdHJ1ZSBieSBkZWZh
dWx0LgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpzZXRBY3RpdmUpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNl
c3Npb246OmJlZ2luSW50ZXJydXB0aW9uKTogcGF1c2VQbGF5YmFjaygpIHdhcyByZW5hbWVkIHRv
IHN1c3BlbmRQbGF5YmFjaygpLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uOjplbmRJ
bnRlcnJ1cHRpb24pOiBBbHdheXMgbm90aWZ5IHRoZSBjbGllbnQsIHRlbGxpbmcgaXQgd2hldGhl
ciB0byByZXN1bWUuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246OmNsaWVudFdpbGxC
ZWdpblBsYXliYWNrKTogQmFpbCBlYXJseSBpZiByZWVudHJhbnQuICBDaGVjayB0aGUgKG5ldykg
CisgICAgICAgICAgICByZXR1cm4gdmFsdWUgb2Ygc2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKCkg
YW5kIHJlbWVtYmVyIHRvIHJlc3VtZSBvbmNlIHRoZSBpbnRlcnJ1cHRpb24gZW5kcy4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6Y2xpZW50V2lsbFBhdXNlUGxheWJhY2spOiBCYWls
IGVhcmx5IGlmIHJlZW50cmFudC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6cGF1
c2VTZXNzaW9uKTogcGF1c2VQbGF5YmFjaygpIHdhcyByZW5hbWVkIHRvIHN1c3BlbmRQbGF5YmFj
aygpLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5oOgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKTogUmV0dXJu
IGZhbHNlIGlmIG5vdCBhbGxvd2VkIHRvIGJyZWFrIGludGVycnVwdGlvbiBvciAKKyAgICAgICAg
ICAgIGlmIGFjdGl2YXRpbmcgdGhlIGF1ZGlvIHNlc3Npb24gZmFpbGVkLiBPdGhlcndpc2UsIGVu
ZCB0aGUgaW50ZXJydXB0aW9uLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lv
bk1hbmFnZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlv
bklPUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uSU9TOjpBdWRpb0Rl
c3RpbmF0aW9uSU9TKTogbV9tZWRpYVNlc3Npb24gd2FzIHJlbW92ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0Rlc3RpbmF0aW9uSU9TOjpzdGFydCk6IERpdHRvLgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmg6CisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vz
c2lvbjo6dHJ5VG9TZXRBY3RpdmUpOiBSZW5hbWVkIGZyb20gc2V0QWN0aXZlLiBSZXR1cm4gZmFs
c2UgaWYgdGhlIEFWQXVkaW9TZXNzaW9uIGNvdWxkIG5vdCBiZSBhY3RpdmF0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnNldEFjdGl2ZSk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnNlc3Npb25XaWxsQmVnaW5QbGF5YmFjayk6
IERvIG5vdCB1cGRhdGUgdGhlIG5vdyBwbGF5aW5nIGluZm8gaWYgc2Vzc2lvbiBwbGF5YmFjayB3
YXMgYmxvY2tlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlv
bk1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uTWFjOjpBdWRpb0Rl
c3RpbmF0aW9uTWFjKTogbV9tZWRpYVNlc3Npb24gd2FzIHJlbW92ZWQuCisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
U2Vzc2lvbjo6dHJ5VG9TZXRBY3RpdmUpOiBSZW5hbWVkIGZyb20gc2V0QWN0aXZlKCkuIFJldHVy
biB0cnVlIGJ5IGRlZmF1bHQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnNldEFj
dGl2ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL01lZGlhU2Vzc2lv
bk1hbmFnZXJNYWMuY3BwOgorICAgICAgICAoTWVkaWFTZXNzaW9uTWFuYWdlcjo6dXBkYXRlU2Vz
c2lvblN0YXRlKTogTm8gbG9uZ2VyIGF0dGVtcHQgdG8gYWN0aXZhdGUgdGhlIHNlc3Npb24sIGFz
IHRoaXMgaXMgZG9uZQorICAgICAgICAgICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldp
bGxCZWdpblBsYXliYWNrKCkuCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRNZWRpYVNlc3Npb25SZXN0cmljdGlvbnMpOiBB
ZGQgIkludGVycnVwdGVkUGxheWJhY2tOb3RQZXJtaXR0ZWQiLgorCiAyMDE1LTAzLTI3ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQg
d2lsbCBmaXJlICdzZWVrZWQnIGJlZm9yZSBzZWVrIGNvbXBsZXRlcywgbGVhZGluZyB0byBjdXJy
ZW50VGltZSBkaXNjb250aW51aXRpZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggYzgyMTFlM2FiZWYxMDQwZmYzNmMxNDU3YzNi
ZGYxMjFmYmNiMjhjNi4uOWM3ZTFlZTkyNDZkNDc2Mjk4ZTlkZmJjYjkzNzgwZjlhMzYyNjFiMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNw
cApAQCAtNDQsOSArNDQsMTEgQEAKICNpbmNsdWRlICJEZWxheU5vZGUuaCIKICNpbmNsdWRlICJE
b2N1bWVudC5oIgogI2luY2x1ZGUgIkR5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaCIKKyNpbmNsdWRl
ICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZG
VEZyYW1lLmgiCiAjaW5jbHVkZSAiR2Fpbk5vZGUuaCIKKyNpbmNsdWRlICJHZW5lcmljRXZlbnRR
dWV1ZS5oIgogI2luY2x1ZGUgIkhSVEZEYXRhYmFzZUxvYWRlci5oIgogI2luY2x1ZGUgIkhSVEZQ
YW5uZXIuaCIKICNpbmNsdWRlICJPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaCIKQEAgLTU1
LDEwICs1NywxMSBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYW5uZXJOb2RlLmgi
CiAjaW5jbHVkZSAiUGVyaW9kaWNXYXZlLmgiCi0jaW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENh
bGxTdGFjay5oPgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3Jp
cHRQcm9jZXNzb3JOb2RlLmgiCiAjaW5jbHVkZSAiV2F2ZVNoYXBlck5vZGUuaCIKKyNpbmNsdWRl
IDxpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogI2luY2x1ZGUgIk1lZGlhU3RyZWFt
LmgiCkBAIC0xMjYsMTkgKzEyOSw5IEBAIFJlZlB0cjxBdWRpb0NvbnRleHQ+IEF1ZGlvQ29udGV4
dDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAvLyBDb25z
dHJ1Y3RvciBmb3IgcmVuZGVyaW5nIHRvIHRoZSBhdWRpbyBoYXJkd2FyZS4KIEF1ZGlvQ29udGV4
dDo6QXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IEFjdGl2ZURPTU9iamVj
dCgmZG9jdW1lbnQpCi0gICAgLCBtX2lzU3RvcFNjaGVkdWxlZChmYWxzZSkKLSAgICAsIG1faXNJ
bml0aWFsaXplZChmYWxzZSkKLSAgICAsIG1faXNBdWRpb1RocmVhZEZpbmlzaGVkKGZhbHNlKQot
ICAgICwgbV9kZXN0aW5hdGlvbk5vZGUoMCkKLSAgICAsIG1faXNEZWxldGlvblNjaGVkdWxlZChm
YWxzZSkKLSAgICAsIG1fYXV0b21hdGljUHVsbE5vZGVzTmVlZFVwZGF0aW5nKGZhbHNlKQotICAg
ICwgbV9jb25uZWN0aW9uQ291bnQoMCkKLSAgICAsIG1fYXVkaW9UaHJlYWQoMCkKKyAgICAsIG1f
bWVkaWFTZXNzaW9uKE1lZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0aGlzKSkKKyAgICAsIG1fZXZlbnRR
dWV1ZShzdGQ6Om1ha2VfdW5pcXVlPEdlbmVyaWNFdmVudFF1ZXVlPigqdGhpcykpCiAgICAgLCBt
X2dyYXBoT3duZXJUaHJlYWQoVW5kZWZpbmVkVGhyZWFkSWRlbnRpZmllcikKLSAgICAsIG1faXNP
ZmZsaW5lQ29udGV4dChmYWxzZSkKLSAgICAsIG1fYWN0aXZlU291cmNlQ291bnQoMCkKLSAgICAs
IG1fcmVzdHJpY3Rpb25zKE5vUmVzdHJpY3Rpb25zKQotICAgICwgbV9zdGF0ZShTdGF0ZTo6U3Vz
cGVuZGVkKQogewogICAgIGNvbnN0cnVjdENvbW1vbigpOwogCkBAIC0xNTEsMTggKzE0NCwxMCBA
QCBBdWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQpCiAvLyBDb25z
dHJ1Y3RvciBmb3Igb2ZmbGluZSAobm9uLXJlYWx0aW1lKSByZW5kZXJpbmcuCiBBdWRpb0NvbnRl
eHQ6OkF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIHVuc2lnbmVkIG51bWJlck9mQ2hh
bm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEFj
dGl2ZURPTU9iamVjdCgmZG9jdW1lbnQpCi0gICAgLCBtX2lzU3RvcFNjaGVkdWxlZChmYWxzZSkK
LSAgICAsIG1faXNJbml0aWFsaXplZChmYWxzZSkKLSAgICAsIG1faXNBdWRpb1RocmVhZEZpbmlz
aGVkKGZhbHNlKQotICAgICwgbV9kZXN0aW5hdGlvbk5vZGUoMCkKLSAgICAsIG1fYXV0b21hdGlj
UHVsbE5vZGVzTmVlZFVwZGF0aW5nKGZhbHNlKQotICAgICwgbV9jb25uZWN0aW9uQ291bnQoMCkK
LSAgICAsIG1fYXVkaW9UaHJlYWQoMCkKLSAgICAsIG1fZ3JhcGhPd25lclRocmVhZChVbmRlZmlu
ZWRUaHJlYWRJZGVudGlmaWVyKQogICAgICwgbV9pc09mZmxpbmVDb250ZXh0KHRydWUpCi0gICAg
LCBtX2FjdGl2ZVNvdXJjZUNvdW50KDApCi0gICAgLCBtX3Jlc3RyaWN0aW9ucyhOb1Jlc3RyaWN0
aW9ucykKLSAgICAsIG1fc3RhdGUoU3RhdGU6OlN1c3BlbmRlZCkKKyAgICAsIG1fbWVkaWFTZXNz
aW9uKE1lZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0aGlzKSkKKyAgICAsIG1fZXZlbnRRdWV1ZShzdGQ6
Om1ha2VfdW5pcXVlPEdlbmVyaWNFdmVudFF1ZXVlPigqdGhpcykpCisgICAgLCBtX2dyYXBoT3du
ZXJUaHJlYWQoVW5kZWZpbmVkVGhyZWFkSWRlbnRpZmllcikKIHsKICAgICBjb25zdHJ1Y3RDb21t
b24oKTsKIApAQCAtMjc3LDcgKzI2Miw3IEBAIHZvaWQgQXVkaW9Db250ZXh0Ojp1bmluaXRpYWxp
emUoKQogICAgICAgICAtLXNfaGFyZHdhcmVDb250ZXh0Q291bnQ7CiAKICAgICAgICAgLy8gT2Zm
bGluZSBjb250ZXh0cyBtb3ZlIHRvICdDbG9zZWQnIHN0YXRlIHdoZW4gZGlzcGF0Y2hpbmcgdGhl
IGNvbXBsZXRpb24gZXZlbnQuCi0gICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6Q2xvc2VkOworICAg
ICAgICBzZXRTdGF0ZShTdGF0ZTo6Q2xvc2VkKTsKICAgICB9CiAKICAgICAvLyBHZXQgcmlkIG9m
IHRoZSBzb3VyY2VzIHdoaWNoIG1heSBzdGlsbCBiZSBwbGF5aW5nLgpAQCAtMjkxLDYgKzI3Niw1
MyBAQCBib29sIEF1ZGlvQ29udGV4dDo6aXNJbml0aWFsaXplZCgpIGNvbnN0CiAgICAgcmV0dXJu
IG1faXNJbml0aWFsaXplZDsKIH0KIAordm9pZCBBdWRpb0NvbnRleHQ6OmFkZFJlYWN0aW9uKFN0
YXRlIHN0YXRlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gcmVhY3Rpb24pCit7CisgICAgc2l6ZV90
IHN0YXRlSW5kZXggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHN0YXRlKTsKKyAgICBpZiAoc3RhdGVJ
bmRleCA+PSBtX3N0YXRlUmVhY3Rpb25zLnNpemUoKSkKKyAgICAgICAgbV9zdGF0ZVJlYWN0aW9u
cy5yZXNpemUoc3RhdGVJbmRleCArIDEpOworCisgICAgbV9zdGF0ZVJlYWN0aW9uc1tzdGF0ZUlu
ZGV4XS5hcHBlbmQocmVhY3Rpb24pOworfQorCit2b2lkIEF1ZGlvQ29udGV4dDo6c2V0U3RhdGUo
U3RhdGUgc3RhdGUpCit7CisgICAgaWYgKG1fc3RhdGUgPT0gc3RhdGUpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fc3RhdGUgPSBzdGF0ZTsKKyAgICBtX2V2ZW50UXVldWUtPmVucXVldWVFdmVu
dChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zdGF0ZWNoYW5nZUV2ZW50LCB0cnVlLCBmYWxz
ZSkpOworCisgICAgc2l6ZV90IHN0YXRlSW5kZXggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHN0YXRl
KTsKKyAgICBpZiAoc3RhdGVJbmRleCA+PSBtX3N0YXRlUmVhY3Rpb25zLnNpemUoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgVmVjdG9yPHN0ZDo6ZnVuY3Rpb248dm9pZCgpPj4gcmVhY3Rpb25z
OworICAgIG1fc3RhdGVSZWFjdGlvbnNbc3RhdGVJbmRleF0uc3dhcChyZWFjdGlvbnMpOworCisg
ICAgZm9yIChhdXRvJiByZWFjdGlvbiA6IHJlYWN0aW9ucykKKyAgICAgICAgcmVhY3Rpb24oKTsK
K30KKworY29uc3QgQXRvbWljU3RyaW5nJiBBdWRpb0NvbnRleHQ6OnN0YXRlKCkgY29uc3QKK3sK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzdXNwZW5kZWQoInN1c3Bl
bmRlZCIpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHJ1bm5pbmco
InJ1bm5pbmciKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBpbnRl
cnJ1cHRlZCgiaW50ZXJydXB0ZWQiKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWlj
U3RyaW5nPiBjbG9zZWQoImNsb3NlZCIpOworCisgICAgc3dpdGNoIChtX3N0YXRlKSB7CisgICAg
Y2FzZSBTdGF0ZTo6U3VzcGVuZGVkOgorICAgICAgICByZXR1cm4gc3VzcGVuZGVkOworICAgIGNh
c2UgU3RhdGU6OlJ1bm5pbmc6CisgICAgICAgIHJldHVybiBydW5uaW5nOworICAgIGNhc2UgU3Rh
dGU6OkludGVycnVwdGVkOgorICAgICAgICByZXR1cm4gaW50ZXJydXB0ZWQ7CisgICAgY2FzZSBT
dGF0ZTo6Q2xvc2VkOgorICAgICAgICByZXR1cm4gY2xvc2VkOworICAgIH0KK30KKwogdm9pZCBB
dWRpb0NvbnRleHQ6OnN0b3BEaXNwYXRjaCh2b2lkKiB1c2VyRGF0YSkKIHsKICAgICBBdWRpb0Nv
bnRleHQqIGNvbnRleHQgPSByZWludGVycHJldF9jYXN0PEF1ZGlvQ29udGV4dCo+KHVzZXJEYXRh
KTsKQEAgLTMxMSw2ICszNDMsOCBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6c3RvcCgpCiAKICAgICBk
b2N1bWVudCgpLT51cGRhdGVJc1BsYXlpbmdBdWRpbygpOwogCisgICAgbV9ldmVudFF1ZXVlLT5j
bG9zZSgpOworCiAgICAgLy8gRG9uJ3QgY2FsbCB1bmluaXRpYWxpemUoKSBpbW1lZGlhdGVseSBo
ZXJlIGJlY2F1c2UgdGhlIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgaXMgaW4gdGhlIG1pZGRsZQog
ICAgIC8vIG9mIGRlYWxpbmcgd2l0aCBhbGwgb2YgaXRzIEFjdGl2ZURPTU9iamVjdHMgYXQgdGhp
cyBwb2ludC4gdW5pbml0aWFsaXplKCkgY2FuIGRlLXJlZmVyZW5jZSBvdGhlcgogICAgIC8vIEFj
dGl2ZURPTU9iamVjdHMgc28gbGV0J3Mgc2NoZWR1bGUgdW5pbml0aWFsaXplKCkgdG8gYmUgY2Fs
bGVkIGxhdGVyLgpAQCAtOTgwLDcgKzEwMTQsNyBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6c3RhcnRS
ZW5kZXJpbmcoKQogICAgICAgICAgICAgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihBdWRpb0Nv
bnRleHQ6OlJlcXVpcmVQYWdlQ29uc2VudEZvckF1ZGlvU3RhcnRSZXN0cmljdGlvbik7CiAgICAg
fQogICAgIGRlc3RpbmF0aW9uKCktPnN0YXJ0UmVuZGVyaW5nKCk7Ci0gICAgbV9zdGF0ZSA9IFN0
YXRlOjpSdW5uaW5nOworICAgIHNldFN0YXRlKFN0YXRlOjpSdW5uaW5nKTsKIH0KIAogdm9pZCBB
dWRpb0NvbnRleHQ6Om1lZGlhQ2FuU3RhcnQoKQpAQCAtMTAxMSw3ICsxMDQ1LDcgQEAgdm9pZCBB
dWRpb0NvbnRleHQ6OmZpcmVDb21wbGV0aW9uRXZlbnQoKQogICAgICAgICByZXR1cm47CiAgICAg
ICAgIAogICAgIEF1ZGlvQnVmZmVyKiByZW5kZXJlZEJ1ZmZlciA9IG1fcmVuZGVyVGFyZ2V0Lmdl
dCgpOwotICAgIG1fc3RhdGUgPSBTdGF0ZTo6Q2xvc2VkOworICAgIHNldFN0YXRlKFN0YXRlOjpD
bG9zZWQpOwogCiAgICAgQVNTRVJUKHJlbmRlcmVkQnVmZmVyKTsKICAgICBpZiAoIXJlbmRlcmVk
QnVmZmVyKQpAQCAtMTAyMCw3ICsxMDU0LDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OmZpcmVDb21w
bGV0aW9uRXZlbnQoKQogICAgIC8vIEF2b2lkIGZpcmluZyB0aGUgZXZlbnQgaWYgdGhlIGRvY3Vt
ZW50IGhhcyBhbHJlYWR5IGdvbmUgYXdheS4KICAgICBpZiAoc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKSB7CiAgICAgICAgIC8vIENhbGwgdGhlIG9mZmxpbmUgcmVuZGVyaW5nIGNvbXBsZXRpb24g
ZXZlbnQgbGlzdGVuZXIuCi0gICAgICAgIGRpc3BhdGNoRXZlbnQoT2ZmbGluZUF1ZGlvQ29tcGxl
dGlvbkV2ZW50OjpjcmVhdGUocmVuZGVyZWRCdWZmZXIpKTsKKyAgICAgICAgbV9ldmVudFF1ZXVl
LT5lbnF1ZXVlRXZlbnQoT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50OjpjcmVhdGUocmVuZGVy
ZWRCdWZmZXIpKTsKICAgICB9CiB9CiAKQEAgLTEwMzQsNiArMTA2OCwxMjcgQEAgdm9pZCBBdWRp
b0NvbnRleHQ6OmRlY3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50KCkKICAgICAtLW1fYWN0aXZlU291
cmNlQ291bnQ7CiB9CiAKK3ZvaWQgQXVkaW9Db250ZXh0OjpzdXNwZW5kQ29udGV4dChzdGQ6OmZ1
bmN0aW9uPHZvaWQoKT4gc3VjY2Vzc0NhbGxiYWNrLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZmFp
bHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBBU1NFUlQoc3VjY2Vzc0Nh
bGxiYWNrKTsKKyAgICBBU1NFUlQoZmFpbHVyZUNhbGxiYWNrKTsKKworICAgIGlmIChpc09mZmxp
bmVDb250ZXh0KCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpTdXNwZW5kZWQpIHsK
KyAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhzdWNjZXNzQ2FsbGJh
Y2spOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6
OkNsb3NlZCB8fCBtX3N0YXRlID09IFN0YXRlOjpJbnRlcnJ1cHRlZCB8fCAhbV9kZXN0aW5hdGlv
bk5vZGUpIHsKKyAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhmYWls
dXJlQ2FsbGJhY2spOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYWRkUmVhY3Rpb24o
U3RhdGU6OlN1c3BlbmRlZCwgc3VjY2Vzc0NhbGxiYWNrKTsKKworICAgIGlmICghbV9tZWRpYVNl
c3Npb24tPmNsaWVudFdpbGxQYXVzZVBsYXliYWNrKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IFJlZlB0cjxBdWRpb0NvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7CisgICAgbV9kZXN0aW5hdGlv
bk5vZGUtPnN1c3BlbmQoW3N0cm9uZ1RoaXNdIHsKKyAgICAgICAgc3Ryb25nVGhpcy0+c2V0U3Rh
dGUoU3RhdGU6OlN1c3BlbmRlZCk7CisgICAgfSk7Cit9CisKK3ZvaWQgQXVkaW9Db250ZXh0Ojpy
ZXN1bWVDb250ZXh0KHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBzdWNjZXNzQ2FsbGJhY2ssIHN0ZDo6
ZnVuY3Rpb248dm9pZCgpPiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQorewor
ICAgIEFTU0VSVChzdWNjZXNzQ2FsbGJhY2spOworICAgIEFTU0VSVChmYWlsdXJlQ2FsbGJhY2sp
OworCisgICAgaWYgKGlzT2ZmbGluZUNvbnRleHQoKSkgeworICAgICAgICBlYyA9IElOVkFMSURf
U1RBVEVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fc3RhdGUgPT0g
U3RhdGU6OlJ1bm5pbmcpIHsKKyAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0
VGFzayhzdWNjZXNzQ2FsbGJhY2spOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCB8fCAhbV9kZXN0aW5hdGlvbk5vZGUpIHsKKyAgICAg
ICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhmYWlsdXJlQ2FsbGJhY2spOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYWRkUmVhY3Rpb24oU3RhdGU6OlJ1bm5pbmcs
IHN1Y2Nlc3NDYWxsYmFjayk7CisKKyAgICBpZiAoIW1fbWVkaWFTZXNzaW9uLT5jbGllbnRXaWxs
QmVnaW5QbGF5YmFjaygpKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8QXVkaW9Db250
ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOworICAgIG1fZGVzdGluYXRpb25Ob2RlLT5yZXN1bWUoW3N0
cm9uZ1RoaXNdIHsKKyAgICAgICAgc3Ryb25nVGhpcy0+c2V0U3RhdGUoU3RhdGU6OlJ1bm5pbmcp
OworICAgIH0pOworfQorCit2b2lkIEF1ZGlvQ29udGV4dDo6Y2xvc2VDb250ZXh0KHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPiBzdWNjZXNzQ2FsbGJhY2ssIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiwgRXhj
ZXB0aW9uQ29kZSYgZWMpCit7CisgICAgQVNTRVJUKHN1Y2Nlc3NDYWxsYmFjayk7CisKKyAgICBp
ZiAoaXNPZmZsaW5lQ29udGV4dCgpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6Q2xv
c2VkIHx8ICFtX2Rlc3RpbmF0aW9uTm9kZSkgeworICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPnBvc3RUYXNrKHN1Y2Nlc3NDYWxsYmFjayk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBhZGRSZWFjdGlvbihTdGF0ZTo6Q2xvc2VkLCBzdWNjZXNzQ2FsbGJhY2spOworCisg
ICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKKyAgICBtX2Rlc3RpbmF0
aW9uTm9kZS0+Y2xvc2UoW3N0cm9uZ1RoaXMsIHN1Y2Nlc3NDYWxsYmFja10geworICAgICAgICBz
dHJvbmdUaGlzLT5zZXRTdGF0ZShTdGF0ZTo6Q2xvc2VkKTsKKyAgICAgICAgc3Ryb25nVGhpcy0+
dW5pbml0aWFsaXplKCk7CisgICAgfSk7Cit9CisKKwordm9pZCBBdWRpb0NvbnRleHQ6OnN1c3Bl
bmRQbGF5YmFjaygpCit7CisgICAgaWYgKCFtX2Rlc3RpbmF0aW9uTm9kZSB8fCBtX3N0YXRlID09
IFN0YXRlOjpDbG9zZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX3N0YXRlID09IFN0
YXRlOjpTdXNwZW5kZWQpIHsKKyAgICAgICAgaWYgKG1fbWVkaWFTZXNzaW9uLT5zdGF0ZSgpID09
IE1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0ZWQpCisgICAgICAgICAgICBzZXRTdGF0ZShTdGF0ZTo6
SW50ZXJydXB0ZWQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUmVmUHRyPEF1ZGlv
Q29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKKyAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+c3VzcGVu
ZChbc3Ryb25nVGhpc10geworICAgICAgICBib29sIGludGVycnVwdGVkID0gc3Ryb25nVGhpcy0+
bV9tZWRpYVNlc3Npb24tPnN0YXRlKCkgPT0gTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRlZDsKKyAg
ICAgICAgc3Ryb25nVGhpcy0+c2V0U3RhdGUoaW50ZXJydXB0ZWQgPyBTdGF0ZTo6SW50ZXJydXB0
ZWQgOiBTdGF0ZTo6U3VzcGVuZGVkKTsKKyAgICB9KTsKK30KKwordm9pZCBBdWRpb0NvbnRleHQ6
Om1heVJlc3VtZVBsYXliYWNrKGJvb2wgc2hvdWxkUmVzdW1lKQoreworICAgIGlmICghbV9kZXN0
aW5hdGlvbk5vZGUgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkIHx8IG1fc3RhdGUgPT0gU3Rh
dGU6OlJ1bm5pbmcpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghc2hvdWxkUmVzdW1lKSB7
CisgICAgICAgIHNldFN0YXRlKFN0YXRlOjpTdXNwZW5kZWQpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKKyAgICBt
X2Rlc3RpbmF0aW9uTm9kZS0+cmVzdW1lKFtzdHJvbmdUaGlzXSB7CisgICAgICAgIHN0cm9uZ1Ro
aXMtPnNldFN0YXRlKFN0YXRlOjpSdW5uaW5nKTsKKyAgICB9KTsKK30KKworCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKaW5kZXggYWU4NzcyYmEwYjUz
ZDc5Nzc4YmIyZWYzNTk4Y2IwMDBhZDE4YjQ2NC4uMjA2Mjc1MTg0NTY2NTIyNjU5N2Y0ZjhlNjdi
YTFlNDI0ODAzZDNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5o
IgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiTWVkaWFDYW5TdGFydExpc3Rl
bmVyLmgiCisjaW5jbHVkZSAiTWVkaWFTZXNzaW9uLmgiCiAjaW5jbHVkZSA8YXRvbWljPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTU3
LDYgKzU4LDcgQEAgY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKIGNsYXNzIENoYW5uZWxNZXJnZXJO
b2RlOwogY2xhc3MgQ2hhbm5lbFNwbGl0dGVyTm9kZTsKIGNsYXNzIEdhaW5Ob2RlOworY2xhc3Mg
R2VuZXJpY0V2ZW50UXVldWU7CiBjbGFzcyBQYW5uZXJOb2RlOwogY2xhc3MgQXVkaW9MaXN0ZW5l
cjsKIGNsYXNzIEF1ZGlvU3VtbWluZ0p1bmN0aW9uOwpAQCAtNzQsNyArNzYsNyBAQCBjbGFzcyBQ
ZXJpb2RpY1dhdmU7CiAvLyBBdWRpb0NvbnRleHQgaXMgdGhlIGNvcm5lcnN0b25lIG9mIHRoZSB3
ZWIgYXVkaW8gQVBJIGFuZCBhbGwgQXVkaW9Ob2RlcyBhcmUgY3JlYXRlZCBmcm9tIGl0LgogLy8g
Rm9yIHRocmVhZCBzYWZldHkgYmV0d2VlbiB0aGUgYXVkaW8gdGhyZWFkIGFuZCB0aGUgbWFpbiB0
aHJlYWQsIGl0IGhhcyBhIHJlbmRlcmluZyBncmFwaCBsb2NraW5nIG1lY2hhbmlzbS4gCiAKLWNs
YXNzIEF1ZGlvQ29udGV4dCA6IHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxBdWRpb0NvbnRleHQ+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5l
RGF0YSwgcHVibGljIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciwgcHVibGljIEF1ZGlvUHJvZHVjZXIg
eworY2xhc3MgQXVkaW9Db250ZXh0IDogcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPEF1ZGlvQ29udGV4dD4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJ
bmxpbmVEYXRhLCBwdWJsaWMgTWVkaWFDYW5TdGFydExpc3RlbmVyLCBwdWJsaWMgQXVkaW9Qcm9k
dWNlciwgcHJpdmF0ZSBNZWRpYVNlc3Npb25DbGllbnQgewogcHVibGljOgogICAgIC8vIENyZWF0
ZSBhbiBBdWRpb0NvbnRleHQgZm9yIHJlbmRlcmluZyB0byB0aGUgYXVkaW8gaGFyZHdhcmUuCiAg
ICAgc3RhdGljIFJlZlB0cjxBdWRpb0NvbnRleHQ+IGNyZWF0ZShEb2N1bWVudCYsIEV4Y2VwdGlv
bkNvZGUmKTsKQEAgLTEwNCw2ICsxMDYsMTEgQEAgcHVibGljOgogCiAgICAgQXVkaW9MaXN0ZW5l
ciogbGlzdGVuZXIoKSB7IHJldHVybiBtX2xpc3RlbmVyLmdldCgpOyB9CiAKKyAgICB2b2lkIHN1
c3BlbmRDb250ZXh0KHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+
LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCByZXN1bWVDb250ZXh0KHN0ZDo6ZnVuY3Rpb248
dm9pZCgpPiwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+LCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9p
ZCBjbG9zZUNvbnRleHQoc3RkOjpmdW5jdGlvbjx2b2lkKCk+LCBzdGQ6OmZ1bmN0aW9uPHZvaWQo
KT4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHN0YXRlKCkgY29u
c3Q7CisKICAgICAvLyBUaGUgQXVkaW9Ob2RlIGNyZWF0ZSBtZXRob2RzIGFyZSBjYWxsZWQgb24g
dGhlIG1haW4gdGhyZWFkIChmcm9tIEphdmFTY3JpcHQpLgogICAgIFBhc3NSZWZQdHI8QXVkaW9C
dWZmZXJTb3VyY2VOb2RlPiBjcmVhdGVCdWZmZXJTb3VyY2UoKTsKICNpZiBFTkFCTEUoVklERU8p
CkBAIC0yNjQsOSArMjcxLDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBsYXp5SW5pdGlhbGl6ZSgp
OwogICAgIHZvaWQgdW5pbml0aWFsaXplKCk7CiAKKyAgICBlbnVtIGNsYXNzIFN0YXRlIHsgU3Vz
cGVuZGVkLCBSdW5uaW5nLCBJbnRlcnJ1cHRlZCwgQ2xvc2VkIH07CisgICAgdm9pZCBzZXRTdGF0
ZShTdGF0ZSk7CisKICAgICAvLyBTY3JpcHRFeGVjdXRpb25Db250ZXh0IGNhbGxzIHN0b3AgdHdp
Y2UuCiAgICAgLy8gV2UnZCBsaWtlIHRvIHNjaGVkdWxlIG9ubHkgb25lIHN0b3AgYWN0aW9uIGZv
ciB0aGVtLgotICAgIGJvb2wgbV9pc1N0b3BTY2hlZHVsZWQ7CiAgICAgc3RhdGljIHZvaWQgc3Rv
cERpc3BhdGNoKHZvaWQqIHVzZXJEYXRhKTsKICAgICB2b2lkIGNsZWFyKCk7CiAKQEAgLTI3OSw5
ICsyODgsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1BsYXlpbmdBdWRpbygpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBwYWdlTXV0ZWRTdGF0ZURpZENoYW5nZSgpIG92ZXJy
aWRlOwogCi0gICAgYm9vbCBtX2lzSW5pdGlhbGl6ZWQ7Ci0gICAgYm9vbCBtX2lzQXVkaW9UaHJl
YWRGaW5pc2hlZDsKLQogICAgIC8vIFRoZSBjb250ZXh0IGl0c2VsZiBrZWVwcyBhIHJlZmVyZW5j
ZSB0byBhbGwgc291cmNlIG5vZGVzLiAgVGhlIHNvdXJjZSBub2RlcywgdGhlbiByZWZlcmVuY2Ug
YWxsIG5vZGVzIHRoZXkncmUgY29ubmVjdGVkIHRvLgogICAgIC8vIEluIHR1cm4sIHRoZXNlIG5v
ZGVzIHJlZmVyZW5jZSBhbGwgbm9kZXMgdGhleSdyZSBjb25uZWN0ZWQgdG8uICBBbGwgbm9kZXMg
YXJlIHVsdGltYXRlbHkgY29ubmVjdGVkIHRvIHRoZSBBdWRpb0Rlc3RpbmF0aW9uTm9kZS4KICAg
ICAvLyBXaGVuIHRoZSBjb250ZXh0IGRlcmVmZXJlbmNlcyBhIHNvdXJjZSBub2RlLCBpdCB3aWxs
IGJlIGRlYWN0aXZhdGVkIGZyb20gdGhlIHJlbmRlcmluZyBncmFwaCBhbG9uZyB3aXRoIGFsbCBv
dGhlciBub2RlcyBpdCBpcwpAQCAtMjk4LDggKzMwNCwyNCBAQCBwcml2YXRlOgogICAgIC8vIE1h
a2Ugc3VyZSB0byBkZXJlZmVyZW5jZSB0aGVtIGhlcmUuCiAgICAgdm9pZCBkZXJlZlVuZmluaXNo
ZWRTb3VyY2VOb2RlcygpOwogCi0gICAgUmVmUHRyPEF1ZGlvRGVzdGluYXRpb25Ob2RlPiBtX2Rl
c3RpbmF0aW9uTm9kZTsKLSAgICBSZWZQdHI8QXVkaW9MaXN0ZW5lcj4gbV9saXN0ZW5lcjsKKyAg
ICAvLyBNZWRpYVNlc3Npb25DbGllbnQKKyAgICB2aXJ0dWFsIE1lZGlhU2Vzc2lvbjo6TWVkaWFU
eXBlIG1lZGlhVHlwZSgpIGNvbnN0IHsgcmV0dXJuIE1lZGlhU2Vzc2lvbjo6V2ViQXVkaW87IH0K
KyAgICB2aXJ0dWFsIE1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHByZXNlbnRhdGlvblR5cGUoKSBj
b25zdCB7IHJldHVybiBNZWRpYVNlc3Npb246OldlYkF1ZGlvOyB9CisgICAgdmlydHVhbCBib29s
IGNhblJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoTWVkaWFT
ZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBv
dmVycmlkZUJhY2tncm91bmRQbGF5YmFja1Jlc3RyaWN0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZFBsYXliYWNrKCkgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIG1heVJlc3VtZVBsYXliYWNrKGJvb2wgc2hvdWxkUmVzdW1lKSBvdmVycmlk
ZTsKKworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0
KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0
KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9CisKKyAgICB2b2lkIGhhbmRsZURpcnR5QXVkaW9TdW1t
aW5nSnVuY3Rpb25zKCk7CisgICAgdm9pZCBoYW5kbGVEaXJ0eUF1ZGlvTm9kZU91dHB1dHMoKTsK
KworICAgIHZvaWQgYWRkUmVhY3Rpb24oU3RhdGUsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPik7Cisg
ICAgdm9pZCB1cGRhdGVBdXRvbWF0aWNQdWxsTm9kZXMoKTsKIAogICAgIC8vIE9ubHkgYWNjZXNz
ZWQgaW4gdGhlIGF1ZGlvIHRocmVhZC4KICAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9maW5pc2hl
ZE5vZGVzOwpAQCAtMzE3LDM5ICszMzksMzkgQEAgcHJpdmF0ZToKIAogICAgIC8vIFRoZXkgd2ls
bCBiZSBzY2hlZHVsZWQgZm9yIGRlbGV0aW9uIChvbiB0aGUgbWFpbiB0aHJlYWQpIGF0IHRoZSBl
bmQgb2YgYSByZW5kZXIgY3ljbGUgKGluIHJlYWx0aW1lIHRocmVhZCkuCiAgICAgVmVjdG9yPEF1
ZGlvTm9kZSo+IG1fbm9kZXNUb0RlbGV0ZTsKLSAgICBib29sIG1faXNEZWxldGlvblNjaGVkdWxl
ZDsKKworICAgIGJvb2wgbV9pc0RlbGV0aW9uU2NoZWR1bGVkID0geyBmYWxzZSB9OworICAgIGJv
b2wgbV9pc1N0b3BTY2hlZHVsZWQgPSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzSW5pdGlhbGl6
ZWQgPSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzQXVkaW9UaHJlYWRGaW5pc2hlZCA9IHsgZmFs
c2UgfTsKKyAgICBib29sIG1fYXV0b21hdGljUHVsbE5vZGVzTmVlZFVwZGF0aW5nID0geyBmYWxz
ZSB9OworICAgIGJvb2wgbV9pc09mZmxpbmVDb250ZXh0ID0geyBmYWxzZSB9OwogCiAgICAgLy8g
T25seSBhY2Nlc3NlZCB3aGVuIHRoZSBncmFwaCBsb2NrIGlzIGhlbGQuCiAgICAgSGFzaFNldDxB
dWRpb1N1bW1pbmdKdW5jdGlvbio+IG1fZGlydHlTdW1taW5nSnVuY3Rpb25zOwogICAgIEhhc2hT
ZXQ8QXVkaW9Ob2RlT3V0cHV0Kj4gbV9kaXJ0eUF1ZGlvTm9kZU91dHB1dHM7Ci0gICAgdm9pZCBo
YW5kbGVEaXJ0eUF1ZGlvU3VtbWluZ0p1bmN0aW9ucygpOwotICAgIHZvaWQgaGFuZGxlRGlydHlB
dWRpb05vZGVPdXRwdXRzKCk7CiAKICAgICAvLyBGb3IgdGhlIHNha2Ugb2YgdGhyZWFkIHNhZmV0
eSwgd2UgbWFpbnRhaW4gYSBzZXBlcmF0ZSBWZWN0b3Igb2YgYXV0b21hdGljIHB1bGwgbm9kZXMg
Zm9yIHJlbmRlcmluZyBpbiBtX3JlbmRlcmluZ0F1dG9tYXRpY1B1bGxOb2Rlcy4KICAgICAvLyBJ
dCB3aWxsIGJlIGNvcGllZCBmcm9tIG1fYXV0b21hdGljUHVsbE5vZGVzIGJ5IHVwZGF0ZUF1dG9t
YXRpY1B1bGxOb2RlcygpIGF0IHRoZSB2ZXJ5IHN0YXJ0IG9yIGVuZCBvZiB0aGUgcmVuZGVyaW5n
IHF1YW50dW0uCiAgICAgSGFzaFNldDxBdWRpb05vZGUqPiBtX2F1dG9tYXRpY1B1bGxOb2RlczsK
ICAgICBWZWN0b3I8QXVkaW9Ob2RlKj4gbV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXM7Ci0g
ICAgLy8gbV9hdXRvbWF0aWNQdWxsTm9kZXNOZWVkVXBkYXRpbmcga2VlcHMgdHJhY2sgaWYgbV9h
dXRvbWF0aWNQdWxsTm9kZXMgaXMgbW9kaWZpZWQuCi0gICAgYm9vbCBtX2F1dG9tYXRpY1B1bGxO
b2Rlc05lZWRVcGRhdGluZzsKLSAgICB2b2lkIHVwZGF0ZUF1dG9tYXRpY1B1bGxOb2RlcygpOwot
Ci0gICAgdW5zaWduZWQgbV9jb25uZWN0aW9uQ291bnQ7Ci0KLSAgICAvLyBHcmFwaCBsb2NraW5n
LgotICAgIE11dGV4IG1fY29udGV4dEdyYXBoTXV0ZXg7Ci0gICAgdm9sYXRpbGUgVGhyZWFkSWRl
bnRpZmllciBtX2F1ZGlvVGhyZWFkOwotICAgIHZvbGF0aWxlIFRocmVhZElkZW50aWZpZXIgbV9n
cmFwaE93bmVyVGhyZWFkOyAvLyBpZiB0aGUgbG9jayBpcyBoZWxkIHRoZW4gdGhpcyBpcyB0aGUg
dGhyZWFkIHdoaWNoIG93bnMgaXQsIG90aGVyd2lzZSA9PSBVbmRlZmluZWRUaHJlYWRJZGVudGlm
aWVyCi0gICAgCiAgICAgLy8gT25seSBhY2Nlc3NlZCBpbiB0aGUgYXVkaW8gdGhyZWFkLgogICAg
IFZlY3RvcjxBdWRpb05vZGUqPiBtX2RlZmVycmVkRmluaXNoRGVyZWZMaXN0OworICAgIFZlY3Rv
cjxWZWN0b3I8c3RkOjpmdW5jdGlvbjx2b2lkKCk+Pj4gbV9zdGF0ZVJlYWN0aW9uczsKIAotICAg
IC8vIEV2ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJp
ZGUgeyByZWYoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJp
ZGUgeyBkZXJlZigpOyB9CisgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhU2Vzc2lvbj4gbV9tZWRp
YVNlc3Npb247CisgICAgc3RkOjp1bmlxdWVfcHRyPEdlbmVyaWNFdmVudFF1ZXVlPiBtX2V2ZW50
UXVldWU7CiAKICAgICBSZWZQdHI8QXVkaW9CdWZmZXI+IG1fcmVuZGVyVGFyZ2V0OwotICAgIAot
ICAgIGJvb2wgbV9pc09mZmxpbmVDb250ZXh0OworICAgIFJlZlB0cjxBdWRpb0Rlc3RpbmF0aW9u
Tm9kZT4gbV9kZXN0aW5hdGlvbk5vZGU7CisgICAgUmVmUHRyPEF1ZGlvTGlzdGVuZXI+IG1fbGlz
dGVuZXI7CisKKyAgICB1bnNpZ25lZCBtX2Nvbm5lY3Rpb25Db3VudCA9IHsgMCB9OworCisgICAg
Ly8gR3JhcGggbG9ja2luZy4KKyAgICBNdXRleCBtX2NvbnRleHRHcmFwaE11dGV4OworICAgIHZv
bGF0aWxlIFRocmVhZElkZW50aWZpZXIgbV9hdWRpb1RocmVhZCA9IHsgMCB9OworICAgIHZvbGF0
aWxlIFRocmVhZElkZW50aWZpZXIgbV9ncmFwaE93bmVyVGhyZWFkOyAvLyBpZiB0aGUgbG9jayBp
cyBoZWxkIHRoZW4gdGhpcyBpcyB0aGUgdGhyZWFkIHdoaWNoIG93bnMgaXQsIG90aGVyd2lzZSA9
PSBVbmRlZmluZWRUaHJlYWRJZGVudGlmaWVyCiAKICAgICBBc3luY0F1ZGlvRGVjb2RlciBtX2F1
ZGlvRGVjb2RlcjsKIApAQCAtMzU4LDEyICszODAsMTEgQEAgcHJpdmF0ZToKICAgICBlbnVtIHsg
TWF4TnVtYmVyT2ZDaGFubmVscyA9IDMyIH07CiAKICAgICAvLyBOdW1iZXIgb2YgQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlcyB0aGF0IGFyZSBhY3RpdmUgKHBsYXlpbmcpLgotICAgIHN0ZDo6YXRvbWlj
PGludD4gbV9hY3RpdmVTb3VyY2VDb3VudDsKKyAgICBzdGQ6OmF0b21pYzxpbnQ+IG1fYWN0aXZl
U291cmNlQ291bnQgPSB7IDAgfTsKIAotICAgIEJlaGF2aW9yUmVzdHJpY3Rpb25zIG1fcmVzdHJp
Y3Rpb25zOworICAgIEJlaGF2aW9yUmVzdHJpY3Rpb25zIG1fcmVzdHJpY3Rpb25zID0geyBOb1Jl
c3RyaWN0aW9ucyB9OwogCi0gICAgZW51bSBjbGFzcyBTdGF0ZSB7IFN1c3BlbmRlZCwgUnVubmlu
ZywgQ2xvc2VkIH07Ci0gICAgU3RhdGUgbV9zdGF0ZTsKKyAgICBTdGF0ZSBtX3N0YXRlID0geyBT
dGF0ZTo6U3VzcGVuZGVkIH07CiB9OwogCiB9IC8vIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbAppbmRleCBiOTc1ZTQ3MjhlODM1
NzNmMGU3YjFkNmUxMjVjODYxYThlNzgzZjdiLi4xMmNkNTc1Njg0YTY2YTkyZTBjYmIzNWE3OWRi
NTVjNjMwN2E4MGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0NvbnRleHQuaWRsCkBAIC0yMyw2ICsyMywxMyBAQAogICogU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorZW51bSBB
dWRpb0NvbnRleHRTdGF0ZSB7CisgICAgInN1c3BlbmRlZCIsCisgICAgInJ1bm5pbmciLAorICAg
ICJpbnRlcnJ1cHRlZCIsCisgICAgImNsb3NlZCIKK307CisKIFsKICAgICBFbmFibGVkQnlTZXR0
aW5nPVdlYkF1ZGlvLAogICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywKQEAgLTQzLDYgKzUwLDEz
IEBACiAgICAgLy8gQWxsIHBhbm5pbmcgaXMgcmVsYXRpdmUgdG8gdGhpcyBsaXN0ZW5lci4KICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9MaXN0ZW5lciBsaXN0ZW5lcjsKIAorICAgIFtDdXN0
b21dIFByb21pc2Ugc3VzcGVuZCgpOworICAgIFtDdXN0b21dIFByb21pc2UgcmVzdW1lKCk7Cisg
ICAgW0N1c3RvbV0gUHJvbWlzZSBjbG9zZSgpOworCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1
ZGlvQ29udGV4dFN0YXRlIHN0YXRlOworICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25zdGF0
ZWNoYW5nZTsKKwogICAgIC8vIE51bWJlciBvZiBBdWRpb0J1ZmZlclNvdXJjZU5vZGVzIHRoYXQg
YXJlIGN1cnJlbnRseSBwbGF5aW5nLgogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBs
b25nIGFjdGl2ZVNvdXJjZUNvdW50OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCmluZGV4IDc0ODk0NjQ5OWUz
YjhkY2ViMTQyOGE5MzU1OGMyZjA3MTAzNmQxNTMuLmFjNTg3YjFkZTI3M2Y3M2Y2ODI0ZWZmODA2
ZWVlZmY3ZDBlMjIzYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb0J1czsKIGNsYXNzIEF1ZGlvQ29udGV4dDsKLSAgICAK
KwogY2xhc3MgQXVkaW9EZXN0aW5hdGlvbk5vZGUgOiBwdWJsaWMgQXVkaW9Ob2RlLCBwdWJsaWMg
QXVkaW9JT0NhbGxiYWNrIHsKIHB1YmxpYzoKICAgICBBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRp
b0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRlKTsKQEAgLTU4LDYgKzU4LDkgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBlbmFibGVJbnB1dChjb25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQp
ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzdGFydFJlbmRlcmluZygpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVzdW1lKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPikgeyB9CisgICAgdmlydHVhbCB2
b2lkIHN1c3BlbmQoc3RkOjpmdW5jdGlvbjx2b2lkKCk+KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
Y2xvc2Uoc3RkOjpmdW5jdGlvbjx2b2lkKCk+KSB7IH0KIAogICAgIEF1ZGlvU291cmNlUHJvdmlk
ZXIqIGxvY2FsQXVkaW9JbnB1dFByb3ZpZGVyKCkgeyByZXR1cm4gJm1fbG9jYWxBdWRpb0lucHV0
UHJvdmlkZXI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCmluZGV4IDk1NmNjMjI2
Zjg1NmI0NzQxNDRlMzU2ZjdmM2VhODVmOTU5MmJhYTkuLjBiY2MyYzBhNGFjNjBjOTQyNDAyMjY3
ZGU1ZTRjNDBkY2JmODlkODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKQEAgLTMx
LDYgKzMxLDcgQEAKICNpbmNsdWRlICJBdWRpb0NvbnRleHQuaCIKICNpbmNsdWRlICJFeGNlcHRp
b25Db2RlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiBjb25zdCB1bnNpZ25l
ZCBFbmFibGVkSW5wdXRDaGFubmVscyA9IDI7CkBAIC0xMDUsNiArMTA2LDI5IEBAIHZvaWQgRGVm
YXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpzdGFydFJlbmRlcmluZygpCiAgICAgICAgIG1fZGVz
dGluYXRpb24tPnN0YXJ0KCk7CiB9CiAKK3ZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2Rl
OjpyZXN1bWUoc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9uKQoreworICAgIEFTU0VSVChp
c0luaXRpYWxpemVkKCkpOworICAgIGlmIChpc0luaXRpYWxpemVkKCkpCisgICAgICAgIG1fZGVz
dGluYXRpb24tPnN0YXJ0KCk7CisgICAgY29udGV4dCgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPnBvc3RUYXNrKGZ1bmN0aW9uKTsKK30KKwordm9pZCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlv
bk5vZGU6OnN1c3BlbmQoc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9uKQoreworICAgIEFT
U0VSVChpc0luaXRpYWxpemVkKCkpOworICAgIGlmIChpc0luaXRpYWxpemVkKCkpCisgICAgICAg
IG1fZGVzdGluYXRpb24tPnN0b3AoKTsKKyAgICBjb250ZXh0KCktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+cG9zdFRhc2soZnVuY3Rpb24pOworfQorCit2b2lkIERlZmF1bHRBdWRpb0Rlc3Rp
bmF0aW9uTm9kZTo6Y2xvc2Uoc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9uKQoreworICAg
IEFTU0VSVChpc0luaXRpYWxpemVkKCkpOworICAgIHVuaW5pdGlhbGl6ZSgpOworICAgIGNvbnRl
eHQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhmdW5jdGlvbik7Cit9CisK
IHVuc2lnbmVkIGxvbmcgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjptYXhDaGFubmVsQ291
bnQoKSBjb25zdAogewogICAgIHJldHVybiBBdWRpb0Rlc3RpbmF0aW9uOjptYXhDaGFubmVsQ291
bnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVs
dEF1ZGlvRGVzdGluYXRpb25Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCmluZGV4IDJlMGE4NjU4Y2QyZWQwNGMzNThj
NTVlM2NjYTgyN2NkMWQ1MmNiN2MuLmIxZDYyOGRkMmU5Y2QwZDc0OTQzMzM4NjgyOTU1MGI0MWYy
NWE2ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVs
dEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaApAQCAtNTAsNiArNTAsOSBAQCBwdWJs
aWM6CiAgICAgLy8gQXVkaW9EZXN0aW5hdGlvbk5vZGUKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxl
SW5wdXQoY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgc3RhcnRSZW5kZXJpbmcoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzdW1l
KHN0ZDo6ZnVuY3Rpb248dm9pZCgpPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHN1c3Bl
bmQoc3RkOjpmdW5jdGlvbjx2b2lkKCk+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xv
c2Uoc3RkOjpmdW5jdGlvbjx2b2lkKCk+KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHVuc2lnbmVk
IGxvbmcgbWF4Q2hhbm5lbENvdW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29s
IGlzUGxheWluZygpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0F1ZGlvQ29udGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0F1ZGlvQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggMWE3NWQ5MzViYzczMjIwNWFiNDdh
NWQxOTYwNGQwODI5ZDFkNGVjNS4uZGRlYzc5NGYwZTZmMjU5NDI2OGY2Zjk5MDY5Y2QwZDZkNDRj
ODhlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnRl
eHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db250
ZXh0Q3VzdG9tLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkpTQXVkaW9CdWZmZXIu
aCIKICNpbmNsdWRlICJKU0F1ZGlvQ29udGV4dC5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5o
IgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgogI2luY2x1ZGUgIkpTT2ZmbGluZUF1ZGlvQ29u
dGV4dC5oIgogI2luY2x1ZGUgIk9mZmxpbmVBdWRpb0NvbnRleHQuaCIKICNpbmNsdWRlIDxydW50
aW1lL0FycmF5QnVmZmVyLmg+CkBAIC0xMTAsNiArMTExLDY5IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc3RydWN0SlNBdWRpb0NvbnRleHQoRXhlY1N0YXRlKiBleGVjKQogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoQ1JFQVRFX0RPTV9XUkFQUEVSKGpzQ29uc3RydWN0b3It
Pmdsb2JhbE9iamVjdCgpLCBBdWRpb0NvbnRleHQsIGF1ZGlvQ29udGV4dC5nZXQoKSkpOwogfQog
CitKU1ZhbHVlIEpTQXVkaW9Db250ZXh0OjpzdXNwZW5kKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAg
ICBEZWZlcnJlZFdyYXBwZXIgd3JhcHBlcihleGVjLCBnbG9iYWxPYmplY3QoKSk7CisgICAgYXV0
byBzdWNjZXNzQ2FsbGJhY2sgPSBbd3JhcHBlcl0oKSBtdXRhYmxlIHsKKyAgICAgICAgd3JhcHBl
ci5yZXNvbHZlKG51bGxwdHIpOworICAgIH07CisgICAgYXV0byBmYWlsdXJlQ2FsbGJhY2sgPSBb
d3JhcHBlcl0oKSBtdXRhYmxlIHsKKyAgICAgICAgd3JhcHBlci5yZWplY3QobnVsbHB0cik7Cisg
ICAgfTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGltcGwoKS5zdXNwZW5kQ29u
dGV4dChXVEY6Om1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGOjptb3ZlKGZhaWx1cmVDYWxsYmFj
ayksIGVjKTsKKworICAgIGlmIChlYykgeworICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywg
ZWMpOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisKKyAgICByZXR1cm4g
d3JhcHBlci5wcm9taXNlKCk7Cit9CisKK0pTVmFsdWUgSlNBdWRpb0NvbnRleHQ6OnJlc3VtZShF
eGVjU3RhdGUqIGV4ZWMpCit7CisgICAgRGVmZXJyZWRXcmFwcGVyIHdyYXBwZXIoZXhlYywgZ2xv
YmFsT2JqZWN0KCkpOworICAgIGF1dG8gc3VjY2Vzc0NhbGxiYWNrID0gW3dyYXBwZXJdKCkgbXV0
YWJsZSB7CisgICAgICAgIHdyYXBwZXIucmVzb2x2ZShudWxscHRyKTsKKyAgICB9OworICAgIGF1
dG8gZmFpbHVyZUNhbGxiYWNrID0gW3dyYXBwZXJdKCkgbXV0YWJsZSB7CisgICAgICAgIHdyYXBw
ZXIucmVqZWN0KG51bGxwdHIpOworICAgIH07CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
KyAgICBpbXBsKCkucmVzdW1lQ29udGV4dChXVEY6Om1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RG
Ojptb3ZlKGZhaWx1cmVDYWxsYmFjayksIGVjKTsKKworICAgIGlmIChlYykgeworICAgICAgICBz
ZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
KyAgICB9CisKKyAgICByZXR1cm4gd3JhcHBlci5wcm9taXNlKCk7Cit9CisKK0pTVmFsdWUgSlNB
dWRpb0NvbnRleHQ6OmNsb3NlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBEZWZlcnJlZFdyYXBw
ZXIgd3JhcHBlcihleGVjLCBnbG9iYWxPYmplY3QoKSk7CisgICAgYXV0byBzdWNjZXNzQ2FsbGJh
Y2sgPSBbd3JhcHBlcl0oKSBtdXRhYmxlIHsKKyAgICAgICAgd3JhcHBlci5yZXNvbHZlKG51bGxw
dHIpOworICAgIH07CisgICAgYXV0byBmYWlsdXJlQ2FsbGJhY2sgPSBbd3JhcHBlcl0oKSBtdXRh
YmxlIHsKKyAgICAgICAgd3JhcHBlci5yZWplY3QobnVsbHB0cik7CisgICAgfTsKKworICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGltcGwoKS5jbG9zZUNvbnRleHQoV1RGOjptb3ZlKHN1
Y2Nlc3NDYWxsYmFjayksIFdURjo6bW92ZShmYWlsdXJlQ2FsbGJhY2spLCBlYyk7CisKKyAgICBp
ZiAoZWMpIHsKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKyAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorCisgICAgcmV0dXJuIHdyYXBwZXIucHJvbWlzZSgp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FV
RElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0Rh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmgKaW5kZXgg
MTljMDBjMjMyZmRjY2ExOTZmMDExMTg0MTAwNzQyZTM5ZjFjMTY1MS4uODNhZTg5NzQ3MzFiOGY4
NDgwMGQ4MTQ2MzMzM2IwMzA5NjIxNWE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0NhbGxiYWNrRGF0YS5oCkBAIC04MCw5ICs4MCw5IEBAIHByaXZhdGU6CiBjbGFzcyBEZWxl
dGVDYWxsYmFja0RhdGFUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sg
ewogcHVibGljOgogICAgIERlbGV0ZUNhbGxiYWNrRGF0YVRhc2soSlNDYWxsYmFja0RhdGEqIGRh
dGEpCi0gICAgICAgIDogU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayh7IFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2s6OkNsZWFudXBUYXNrLCBbZGF0YV0gKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmKSB7CisgICAgICAgIDogU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayhTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrOjpDbGVhbnVwVGFzaywgW2RhdGFdIChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JikgewogICAgICAgICAgICAgZGVsZXRlIGRhdGE7Ci0gICAgICAgIH0gfSkKKyAg
ICAgICAgfSkKICAgICB7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01Qcm9taXNlLmgKaW5kZXggNDJkMDJkOWYyOGU5ZTZhODRhNGU3NWMzYTczMThmOTYxNGY5YTAx
Yy4uZDk1NjgxMmM0M2UyMzFjZTZhNTA4ZjU0OTE4MGJmZDBmMjk1ZWQ0ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgKQEAgLTEwNyw2ICsxMDcsMTQgQEAgaW5s
aW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZXNvbHZlPFZlY3Rvcjx1bnNpZ25lZCBjaGFyPj4o
Y29uc3QgVmVjdG9yPHVuc2lnbmUKIH0KIAogdGVtcGxhdGU8PgoraW5saW5lIHZvaWQgRGVmZXJy
ZWRXcmFwcGVyOjpyZXNvbHZlKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikKK3sKKyAgICBKU0M6OkV4
ZWNTdGF0ZSogZXhlYyA9IG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CisgICAgSlNDOjpK
U0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOworICAgIHJlc29sdmUoZXhlYywgSlNDOjpqc051bGwo
KSk7Cit9CisKK3RlbXBsYXRlPD4KIGlubGluZSB2b2lkIERlZmVycmVkV3JhcHBlcjo6cmVqZWN0
PFN0cmluZz4oY29uc3QgU3RyaW5nJiByZXN1bHQpCiB7CiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4
ZWMgPSBtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50TmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgK
aW5kZXggZjFmZDEyNzM5ZjYyNmJlMjI5OWQ1ZGRkZTA2Nzc0YWRiZGExYjQ0Yy4uNTQ1ZTE2ZTUy
NGUwNzFmMWUyNTgyNDVhMDhjNjFlNWM1ZGI1OTllZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50TmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5o
CkBAIC0xOTAsNiArMTkwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKHN0YWxs
ZWQpIFwKICAgICBtYWNybyhzdGFydCkgXAogICAgIG1hY3JvKHN0YXJ0ZWQpIFwKKyAgICBtYWNy
byhzdGF0ZWNoYW5nZSkgXAogICAgIG1hY3JvKHN0b3JhZ2UpIFwKICAgICBtYWNybyhzdWJtaXQp
IFwKICAgICBtYWNybyhzdWNjZXNzKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaAppbmRleCAxMTQ2NjEyNjcwM2VlMzJkMzFkZGRmMDk2NGFlYTZjNmM2Yzg3
NGRmLi43OTAxOThiYTdmZjhiY2M0MDc3OTlkMGZhZmFiZjcwMzMxYzEwNTVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTEzMCw2ICsxMzAsMTIg
QEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAgIH0KIAorICAgICAgICBUYXNrKHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPiB0YXNrKQorICAgICAgICAgICAgOiBtX3Rhc2soW3Rhc2tdKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmKSB7IHRhc2soKTsgfSkKKyAgICAgICAgICAgICwgbV9pc0NsZWFudXBU
YXNrKGZhbHNlKQorICAgICAgICB7CisgICAgICAgIH0KKwogICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfY29udmVy
dGlibGU8VCwgc3RkOjpmdW5jdGlvbjx2b2lkIChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik+Pjo6
dmFsdWU+Ojp0eXBlPgogICAgICAgICBUYXNrKENsZWFudXBUYXNrVGFnLCBUIHRhc2spCiAgICAg
ICAgICAgICA6IG1fdGFzayhXVEY6Om1vdmUodGFzaykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcAppbmRleCAxYTllMjk4ZjY0NGQ2YjFlMWE4ZjMyZjIyYzdiMWQ3NGNi
NzZlNzFiLi44ZDlkODViZjI2ZTQ3MmYwYWQxYmRhMTE4NDhlNDM4YTE1Njc2MTliIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTYwMzEsMTcgKzYwMzEsMTcg
QEAgc2l6ZV90IEhUTUxNZWRpYUVsZW1lbnQ6Om1heGltdW1Tb3VyY2VCdWZmZXJTaXplKGNvbnN0
IFNvdXJjZUJ1ZmZlciYgYnVmZmVyKSBjb24KIH0KICNlbmRpZgogCi12b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnBhdXNlUGxheWJhY2soKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzdXNwZW5kUGxh
eWJhY2soKQogewogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlUGxheWJh
Y2soJXApIC0gcGF1c2VkID0gJXMiLCB0aGlzLCBib29sU3RyaW5nKHBhdXNlZCgpKSk7CiAgICAg
aWYgKCFwYXVzZWQoKSkKICAgICAgICAgcGF1c2UoKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjpyZXN1bWVQbGF5YmFjaygpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1heVJlc3VtZVBs
YXliYWNrKGJvb2wgc2hvdWxkUmVzdW1lKQogewogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVs
ZW1lbnQ6OnJlc3VtZVBsYXliYWNrKCVwKSAtIHBhdXNlZCA9ICVzIiwgdGhpcywgYm9vbFN0cmlu
ZyhwYXVzZWQoKSkpOwotICAgIGlmIChwYXVzZWQoKSkKKyAgICBpZiAocGF1c2VkKCkgJiYgc2hv
dWxkUmVzdW1lKQogICAgICAgICBwbGF5KCk7CiB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oCmluZGV4IDllNjE5MGI0OGFkNzhlYmRhN2M0OGVkNWM4NTNkZTNlZTE0
YjgxZTAuLjZhMTY2ZTVhYjhjMGIwY2VmMTk4NTU5ODViOWYwZDI5YzMwZTFkMWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC03MDcsOCArNzA3LDggQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIE1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIG1lZGlhVHlwZSgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgcHJlc2VudGF0
aW9uVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgTWVkaWFTZXNzaW9uOjpEaXNw
bGF5VHlwZSBkaXNwbGF5VHlwZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBw
YXVzZVBsYXliYWNrKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlc3VtZVBsYXliYWNr
KCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHN1c3BlbmRQbGF5YmFjaygpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgdm9pZCBtYXlSZXN1bWVQbGF5YmFjayhib29sIHNob3VsZFJlc3VtZSkg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCBTdHJpbmcgbWVkaWFTZXNzaW9uVGl0bGUoKSBjb25zdCBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIGRvdWJsZSBtZWRpYVNlc3Npb25EdXJhdGlvbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGR1cmF0aW9uKCk7IH0KICAgICB2aXJ0dWFsIGRvdWJsZSBtZWRp
YVNlc3Npb25DdXJyZW50VGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGN1cnJlbnRUaW1l
KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vz
c2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3Bw
CmluZGV4IGY0ZGI0ZmVmMDQ1ZWM5Nzg0M2YwMDkxNTVmNGFhZDEwMDM0NDE0ZDcuLmFlOTU1MDIz
YmYzMmUyNmNjZmU0MzA2ZDU5MGIyYzU0NjdmMmJlZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcApAQCAtODYsOSArODYsMTAgQEAgc2l6ZV90
IEF1ZGlvU2Vzc2lvbjo6bnVtYmVyT2ZPdXRwdXRDaGFubmVscygpIGNvbnN0CiAgICAgcmV0dXJu
IDA7CiB9CiAKLXZvaWQgQXVkaW9TZXNzaW9uOjpzZXRBY3RpdmUoYm9vbCkKK2Jvb2wgQXVkaW9T
ZXNzaW9uOjp0cnlUb1NldEFjdGl2ZShib29sKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIHRydWU7CiB9CiAKIHNpemVfdCBBdWRpb1Nlc3Npb246OnByZWZlcnJlZEJ1ZmZl
clNpemUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9TZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Np
b24uaAppbmRleCBkODk3NjNlMjQ0OWY3OGUzMGY0ZDUyNGQ2NzMwYWE2NmYyYzVkYThlLi5jNmM5
NDUyZmQ0YzIwNWZmZDliZTY3MGZlNjI5ZmM2MzU2MWFkM2M2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6
CiAgICAgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0OwogICAgIHNpemVfdCBudW1iZXJPZk91dHB1
dENoYW5uZWxzKCkgY29uc3Q7CiAKLSAgICB2b2lkIHNldEFjdGl2ZShib29sKTsKKyAgICBib29s
IHRyeVRvU2V0QWN0aXZlKGJvb2wpOwogCiAgICAgc2l6ZV90IHByZWZlcnJlZEJ1ZmZlclNpemUo
KSBjb25zdDsKICAgICB2b2lkIHNldFByZWZlcnJlZEJ1ZmZlclNpemUoc2l6ZV90KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uY3BwCmluZGV4IDZmNjhk
NzAwZTVmNjJiMzAyODIwYTJlMTllM2EyMWVmYjY1NmYzZDkuLjE4ZWE4MjNjYjkxOTBjODYwN2Y5
YjUyY2RjNjM4MDE1ZjQxNGE0NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL01lZGlhU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vTWVkaWFTZXNzaW9uLmNwcApAQCAtODgsOCArODgsOCBAQCB2b2lkIE1lZGlhU2Vzc2lvbjo6
YmVnaW5JbnRlcnJ1cHRpb24oSW50ZXJydXB0aW9uVHlwZSB0eXBlKQogCiAgICAgbV9zdGF0ZVRv
UmVzdG9yZSA9IHN0YXRlKCk7CiAgICAgbV9ub3RpZnlpbmdDbGllbnQgPSB0cnVlOwotICAgIGNs
aWVudCgpLnBhdXNlUGxheWJhY2soKTsKICAgICBzZXRTdGF0ZShJbnRlcnJ1cHRlZCk7CisgICAg
Y2xpZW50KCkuc3VzcGVuZFBsYXliYWNrKCk7CiAgICAgbV9ub3RpZnlpbmdDbGllbnQgPSBmYWxz
ZTsKIH0KIApAQCAtMTA5LDI4ICsxMDksMzUgQEAgdm9pZCBNZWRpYVNlc3Npb246OmVuZEludGVy
cnVwdGlvbihFbmRJbnRlcnJ1cHRpb25GbGFncyBmbGFncykKICAgICBtX3N0YXRlVG9SZXN0b3Jl
ID0gSWRsZTsKICAgICBzZXRTdGF0ZShQYXVzZWQpOwogCi0gICAgaWYgKGZsYWdzICYgTWF5UmVz
dW1lUGxheWluZyAmJiBzdGF0ZVRvUmVzdG9yZSA9PSBQbGF5aW5nKSB7Ci0gICAgICAgIExPRyhN
ZWRpYSwgIk1lZGlhU2Vzc2lvbjo6ZW5kSW50ZXJydXB0aW9uIC0gcmVzdW1pbmcgcGxheWJhY2si
KTsKLSAgICAgICAgY2xpZW50KCkucmVzdW1lUGxheWJhY2soKTsKLSAgICB9CisgICAgYm9vbCBz
aG91bGRSZXN1bWUgPSBmbGFncyAmIE1heVJlc3VtZVBsYXlpbmcgJiYgc3RhdGVUb1Jlc3RvcmUg
PT0gUGxheWluZzsKKyAgICBjbGllbnQoKS5tYXlSZXN1bWVQbGF5YmFjayhzaG91bGRSZXN1bWUp
OwogfQogCiBib29sIE1lZGlhU2Vzc2lvbjo6Y2xpZW50V2lsbEJlZ2luUGxheWJhY2soKQogewor
ICAgIGlmIChtX25vdGlmeWluZ0NsaWVudCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBp
ZiAoIU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5zZXNzaW9uV2lsbEJlZ2lu
UGxheWJhY2soKnRoaXMpKSB7CisgICAgICAgIGlmIChzdGF0ZSgpID09IEludGVycnVwdGVkKQor
ICAgICAgICAgICAgbV9zdGF0ZVRvUmVzdG9yZSA9IFBsYXlpbmc7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKICAgICBzZXRTdGF0ZShQbGF5aW5nKTsKLSAgICBNZWRpYVNlc3Npb25N
YW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuc2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKCp0aGlzKTsK
ICAgICB1cGRhdGVDbGllbnREYXRhQnVmZmVyaW5nKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
IGJvb2wgTWVkaWFTZXNzaW9uOjpjbGllbnRXaWxsUGF1c2VQbGF5YmFjaygpCiB7CisgICAgaWYg
KG1fbm90aWZ5aW5nQ2xpZW50KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwogICAgIExPRyhNZWRp
YSwgIk1lZGlhU2Vzc2lvbjo6Y2xpZW50V2lsbFBhdXNlUGxheWJhY2soJXApLSBzdGF0ZSA9ICVz
IiwgdGhpcywgc3RhdGVOYW1lKG1fc3RhdGUpKTsKICAgICBpZiAoc3RhdGUoKSA9PSBJbnRlcnJ1
cHRlZCkgewotICAgICAgICBpZiAoIW1fbm90aWZ5aW5nQ2xpZW50KSB7Ci0gICAgICAgICAgICBt
X3N0YXRlVG9SZXN0b3JlID0gUGF1c2VkOwotICAgICAgICAgICAgTE9HKE1lZGlhLCAiICAgICAg
c2V0dGluZyBzdGF0ZVRvUmVzdG9yZSB0byBcIlBhdXNlZFwiIik7Ci0gICAgICAgIH0KKyAgICAg
ICAgbV9zdGF0ZVRvUmVzdG9yZSA9IFBhdXNlZDsKKyAgICAgICAgTE9HKE1lZGlhLCAiICAgICAg
c2V0dGluZyBzdGF0ZVRvUmVzdG9yZSB0byBcIlBhdXNlZFwiIik7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAgICAgCkBAIC0xNDQsNyArMTUxLDcgQEAgYm9vbCBNZWRpYVNlc3Npb246
OmNsaWVudFdpbGxQYXVzZVBsYXliYWNrKCkKIHZvaWQgTWVkaWFTZXNzaW9uOjpwYXVzZVNlc3Np
b24oKQogewogICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbjo6cGF1c2VTZXNzaW9uKCVwKSIs
IHRoaXMpOwotICAgIG1fY2xpZW50LnBhdXNlUGxheWJhY2soKTsKKyAgICBtX2NsaWVudC5zdXNw
ZW5kUGxheWJhY2soKTsKIH0KIAogTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgTWVkaWFTZXNzaW9u
OjptZWRpYVR5cGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vTWVkaWFTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRp
YVNlc3Npb24uaAppbmRleCA2ZDc1NGM2YmU1NTZlMDM5NGFkMzBhN2NhMDYzNDhmMGVhMTYxZmVh
Li5lOTc3ODE0MTdkNmQwYTk4YTMyZGRiZjdiOGVhNmM4NTQ1NjNjNjM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uaApAQCAtMTQ5LDggKzE0OSw4IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIE1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHByZXNlbnRhdGlv
blR5cGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBNZWRpYVNlc3Npb246OkRpc3BsYXlUeXBl
IGRpc3BsYXlUeXBlKCkgY29uc3QgeyByZXR1cm4gTWVkaWFTZXNzaW9uOjpOb3JtYWw7IH0KIAot
ICAgIHZpcnR1YWwgdm9pZCByZXN1bWVQbGF5YmFjaygpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
cGF1c2VQbGF5YmFjaygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbWF5UmVzdW1lUGxheWJhY2so
Ym9vbCBzaG91bGRSZXN1bWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZFBsYXliYWNr
KCkgPSAwOwogCiAgICAgdmlydHVhbCBTdHJpbmcgbWVkaWFTZXNzaW9uVGl0bGUoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIGRvdWJsZSBtZWRpYVNlc3Npb25EdXJhdGlvbigpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmNw
cAppbmRleCBlMTMwYzJjYWZmNGE2ZTViZDQyNzczMzExNzJhNGEzMWVkNGM0ZmRlLi41YzA0YmYy
Y2JlNmFhNmI2NWRjMDM0NDc1ODQzMzIwNTgwZjI1ZTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcApAQCAtMjgsNiAr
MjgsNyBAQAogCiAjaWYgRU5BQkxFKFZJREVPKQogCisjaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5j
bHVkZSAiTWVkaWFTZXNzaW9uLmgiCkBAIC0xNjYsNyArMTY3LDcgQEAgTWVkaWFTZXNzaW9uTWFu
YWdlcjo6U2Vzc2lvblJlc3RyaWN0aW9ucyBNZWRpYVNlc3Npb25NYW5hZ2VyOjpyZXN0cmljdGlv
bnMoTWVkaWEKICAgICByZXR1cm4gbV9yZXN0cmljdGlvbnNbdHlwZV07CiB9CiAKLXZvaWQgTWVk
aWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKE1lZGlhU2Vzc2lvbiYg
c2Vzc2lvbikKK2Jvb2wgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxCZWdpblBsYXli
YWNrKE1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikKIHsKICAgICBMT0coTWVkaWEsICJNZWRpYVNlc3Np
b25NYW5hZ2VyOjpzZXNzaW9uV2lsbEJlZ2luUGxheWJhY2sgLSAlcCIsICZzZXNzaW9uKTsKICAg
ICAKQEAgLTE3NCw4ICsxNzUsMTkgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9u
V2lsbEJlZ2luUGxheWJhY2soTWVkaWFTZXNzaW9uJiBzZXNzaW9uKQogCiAgICAgTWVkaWFTZXNz
aW9uOjpNZWRpYVR5cGUgc2Vzc2lvblR5cGUgPSBzZXNzaW9uLm1lZGlhVHlwZSgpOwogICAgIFNl
c3Npb25SZXN0cmljdGlvbnMgcmVzdHJpY3Rpb25zID0gbV9yZXN0cmljdGlvbnNbc2Vzc2lvblR5
cGVdOworICAgIGlmIChzZXNzaW9uLnN0YXRlKCkgPT0gTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRl
ZCAmJiByZXN0cmljdGlvbnMgJiBJbnRlcnJ1cHRlZFBsYXliYWNrTm90UGVybWl0dGVkKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyNpZiBVU0UoQVVESU9fU0VTU0lPTikKKyAgICBpZiAoYWN0
aXZlQXVkaW9TZXNzaW9uUmVxdWlyZWQoKSAmJiAhQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9u
KCkudHJ5VG9TZXRBY3RpdmUodHJ1ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgor
CisgICAgaWYgKG1faW50ZXJydXB0ZWQpCisgICAgICAgIGVuZEludGVycnVwdGlvbihNZWRpYVNl
c3Npb246Ok5vRmxhZ3MpOworCiAgICAgaWYgKCFyZXN0cmljdGlvbnMgJiBDb25jdXJyZW50UGxh
eWJhY2tOb3RQZXJtaXR0ZWQpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7
CiAKICAgICBWZWN0b3I8TWVkaWFTZXNzaW9uKj4gc2Vzc2lvbnMgPSBtX3Nlc3Npb25zOwogICAg
IGZvciAoYXV0byogb25lU2Vzc2lvbiA6IHNlc3Npb25zKSB7CkBAIC0xODgsNiArMjAwLDcgQEAg
dm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uV2lsbEJlZ2luUGxheWJhY2soTWVkaWFT
ZXNzaW9uJiBzZXNzaW9uKQogICAgIH0KICAgICAKICAgICB1cGRhdGVTZXNzaW9uU3RhdGUoKTsK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KICAgICAKIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vz
c2lvbldpbGxFbmRQbGF5YmFjayhNZWRpYVNlc3Npb24mIHNlc3Npb24pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmgKaW5kZXggYzQ1
NTk1ZTI2M2U2ZmUzZDgzOTRkMGVmMDI4N2VlYTU3NDhlMDhlMS4uMjk2ZGNkNTMyOWI2NDc4ZjFl
MDUyZjg5OTA2ZTcxNWJhYzZjOWIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuaApAQCAtNjMsNiArNjMsNyBAQCBwdWJsaWM6
CiAgICAgICAgIEF1dG9QcmVsb2FkaW5nTm90UGVybWl0dGVkID0gMSA8PCAzLAogICAgICAgICBC
YWNrZ3JvdW5kUHJvY2Vzc1BsYXliYWNrUmVzdHJpY3RlZCA9IDEgPDwgNCwKICAgICAgICAgQmFj
a2dyb3VuZFRhYlBsYXliYWNrUmVzdHJpY3RlZCA9IDEgPDwgNSwKKyAgICAgICAgSW50ZXJydXB0
ZWRQbGF5YmFja05vdFBlcm1pdHRlZCA9IDEgPDwgNiwKICAgICB9OwogICAgIHR5cGVkZWYgdW5z
aWduZWQgU2Vzc2lvblJlc3RyaWN0aW9uczsKIApAQCAtNzEsNyArNzIsNyBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgU2Vzc2lvblJlc3RyaWN0aW9ucyByZXN0cmljdGlvbnMoTWVkaWFT
ZXNzaW9uOjpNZWRpYVR5cGUpOwogICAgIHZpcnR1YWwgdm9pZCByZXNldFJlc3RyaWN0aW9ucygp
OwogCi0gICAgdmlydHVhbCB2b2lkIHNlc3Npb25XaWxsQmVnaW5QbGF5YmFjayhNZWRpYVNlc3Np
b24mKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKE1lZGlhU2Vz
c2lvbiYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXNzaW9uV2lsbEVuZFBsYXliYWNrKE1lZGlhU2Vz
c2lvbiYpOwogCiAgICAgYm9vbCBzZXNzaW9uUmVzdHJpY3RzSW5saW5lVmlkZW9QbGF5YmFjayhj
b25zdCBNZWRpYVNlc3Npb24mKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcAppbmRleCBiNDRiMGNl
YzI5MWQ4YmU3MGFjMjRmYzVjYThlYmQ0ZmY5OTVkZTg0Li45ZDhkMWUxNGE2YWI5ZWZlMDRhOTk2
YWI2NmM2ODEwMzA3ODk3Mzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwCkBAIC0xMDAsNyArMTAwLDYg
QEAgQXVkaW9EZXN0aW5hdGlvbklPUzo6QXVkaW9EZXN0aW5hdGlvbklPUyhBdWRpb0lPQ2FsbGJh
Y2smIGNhbGxiYWNrLCBkb3VibGUgc2FtcGwKICAgICA6IG1fb3V0cHV0VW5pdCgwKQogICAgICwg
bV9jYWxsYmFjayhjYWxsYmFjaykKICAgICAsIG1fcmVuZGVyQnVzKEF1ZGlvQnVzOjpjcmVhdGUo
Miwga1JlbmRlckJ1ZmZlclNpemUsIGZhbHNlKSkKLSAgICAsIG1fbWVkaWFTZXNzaW9uKE1lZGlh
U2Vzc2lvbjo6Y3JlYXRlKCp0aGlzKSkKICAgICAsIG1fc2FtcGxlUmF0ZShzYW1wbGVSYXRlKQog
ICAgICwgbV9pc1BsYXlpbmcoZmFsc2UpCiB7CkBAIC0xODQsMTAgKzE4Myw2IEBAIHZvaWQgQXVk
aW9EZXN0aW5hdGlvbklPUzo6Y29uZmlndXJlKCkKIHZvaWQgQXVkaW9EZXN0aW5hdGlvbklPUzo6
c3RhcnQoKQogewogICAgIExPRyhNZWRpYSwgIkF1ZGlvRGVzdGluYXRpb25JT1M6OnN0YXJ0Iik7
Ci0gICAgaWYgKCFtX21lZGlhU2Vzc2lvbi0+Y2xpZW50V2lsbEJlZ2luUGxheWJhY2soKSkgewot
ICAgICAgICBMT0coTWVkaWEsICIgIHJldHVybmluZyBiZWNhdXNlIG9mIGludGVycnVwdGlvbiIp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgT1NTdGF0dXMgcmVzdWx0ID0gQXVkaW9P
dXRwdXRVbml0U3RhcnQobV9vdXRwdXRVbml0KTsKICAgICBpZiAoIXJlc3VsdCkKQEAgLTE5Nywx
MCArMTkyLDYgQEAgdm9pZCBBdWRpb0Rlc3RpbmF0aW9uSU9TOjpzdGFydCgpCiB2b2lkIEF1ZGlv
RGVzdGluYXRpb25JT1M6OnN0b3AoKQogewogICAgIExPRyhNZWRpYSwgIkF1ZGlvRGVzdGluYXRp
b25JT1M6OnN0b3AiKTsKLSAgICBpZiAoIW1fbWVkaWFTZXNzaW9uLT5jbGllbnRXaWxsUGF1c2VQ
bGF5YmFjaygpKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIiAgcmV0dXJuaW5nIGJlY2F1c2Ugb2Yg
aW50ZXJydXB0aW9uIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBPU1N0YXR1cyBy
ZXN1bHQgPSBBdWRpb091dHB1dFVuaXRTdG9wKG1fb3V0cHV0VW5pdCk7CiAgICAgaWYgKCFyZXN1
bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9E
ZXN0aW5hdGlvbklPUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlv
RGVzdGluYXRpb25JT1MuaAppbmRleCA2NGFmMTFhYmNhMjExZGMxOGI1M2M5YzhhMzliZWRiZTE0
MTI2ZTYwLi44MTI0ODdhMzNmZjBhOGM2M2FlYTRhMGNjN2Q0Nzg5Njc2Y2ZlM2EzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklP
Uy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0
aW9uSU9TLmgKQEAgLTMyLDcgKzMyLDYgQEAKIAogI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCiAjaW5j
bHVkZSAiQXVkaW9EZXN0aW5hdGlvbi5oIgotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgogI2lu
Y2x1ZGUgPEF1ZGlvVW5pdC9BdWRpb1VuaXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAK
QEAgLTQwLDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBBbiBBdWRpb0Rlc3Rp
bmF0aW9uIHVzaW5nIENvcmVBdWRpbydzIGRlZmF1bHQgb3V0cHV0IEF1ZGlvVW5pdAogCi1jbGFz
cyBBdWRpb0Rlc3RpbmF0aW9uSU9TIGZpbmFsIDogcHVibGljIEF1ZGlvRGVzdGluYXRpb24sIHBy
aXZhdGUgTWVkaWFTZXNzaW9uQ2xpZW50IHsKK2NsYXNzIEF1ZGlvRGVzdGluYXRpb25JT1MgZmlu
YWwgOiBwdWJsaWMgQXVkaW9EZXN0aW5hdGlvbiB7CiBwdWJsaWM6CiAgICAgQXVkaW9EZXN0aW5h
dGlvbklPUyhBdWRpb0lPQ2FsbGJhY2smLCBkb3VibGUgc2FtcGxlUmF0ZSk7CiAgICAgdmlydHVh
bCB+QXVkaW9EZXN0aW5hdGlvbklPUygpOwpAQCAtNTQsMTUgKzUzLDYgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIGJvb2wgaXNQbGF5aW5nKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc1BsYXlpbmc7
IH0KICAgICB2aXJ0dWFsIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX3NhbXBsZVJhdGU7IH0KIAotICAgIC8vIE1lZGlhU2Vzc2lvbkNsaWVudAotICAgIHZpcnR1
YWwgTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgbWVkaWFUeXBlKCkgY29uc3QgeyByZXR1cm4gTWVk
aWFTZXNzaW9uOjpXZWJBdWRpbzsgfQotICAgIHZpcnR1YWwgTWVkaWFTZXNzaW9uOjpNZWRpYVR5
cGUgcHJlc2VudGF0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIE1lZGlhU2Vzc2lvbjo6V2ViQXVk
aW87IH0KLSAgICB2aXJ0dWFsIGJvb2wgY2FuUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kcygp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZW1v
dGVDb250cm9sQ29tbWFuZChNZWRpYVNlc3Npb246OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSkg
eyB9Ci0gICAgdmlydHVhbCBib29sIG92ZXJyaWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rp
b24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBwYXVzZVBsYXli
YWNrKCkgb3ZlcnJpZGUgeyBzdG9wKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lUGxheWJh
Y2soKSBvdmVycmlkZSB7IHN0YXJ0KCk7IH0KLQogICAgIC8vIERlZmF1bHRPdXRwdXRVbml0IGNh
bGxiYWNrCiAgICAgc3RhdGljIE9TU3RhdHVzIGlucHV0UHJvYyh2b2lkKiB1c2VyRGF0YSwgQXVk
aW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MqLCBjb25zdCBBdWRpb1RpbWVTdGFtcCosIFVJbnQzMiBi
dXNOdW1iZXIsIFVJbnQzMiBudW1iZXJPZkZyYW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEp
OwogICAgIHN0YXRpYyB2b2lkIGZyYW1lU2l6ZUNoYW5nZWRQcm9jKHZvaWQgKmluUmVmQ29uLCBB
dWRpb1VuaXQgaW5Vbml0LCBBdWRpb1VuaXRQcm9wZXJ0eUlEIGluSUQsIEF1ZGlvVW5pdFNjb3Bl
IGluU2NvcGUsIEF1ZGlvVW5pdEVsZW1lbnQgaW5FbGVtZW50KTsKQEAgLTc1LDcgKzY1LDYgQEAg
cHJpdmF0ZToKICAgICBBdWRpb1VuaXQgbV9vdXRwdXRVbml0OwogICAgIEF1ZGlvSU9DYWxsYmFj
ayYgbV9jYWxsYmFjazsKICAgICBSZWZQdHI8QXVkaW9CdXM+IG1fcmVuZGVyQnVzOwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxNZWRpYVNlc3Npb24+IG1fbWVkaWFTZXNzaW9uOwogCiAgICAgZG91Ymxl
IG1fc2FtcGxlUmF0ZTsKICAgICBib29sIG1faXNQbGF5aW5nOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0KaW5kZXggZmZlOTdi
Yzc4YTFiODQyOTZjY2I5ZDE2NmNjNmY1NThiMGNiODVmMi4uYmQ4Yzc1YmJkMmUxMTY3OWNlOTY2
ZjI3ZTdjODc2ZWE3OGVlOGE1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tCkBAIC0xNzYsMTEgKzE3NiwxMSBAQCBzaXpl
X3QgQXVkaW9TZXNzaW9uOjpudW1iZXJPZk91dHB1dENoYW5uZWxzKCkgY29uc3QKICAgICByZXR1
cm4gW1tBVkF1ZGlvU2Vzc2lvbiBzaGFyZWRJbnN0YW5jZV0gb3V0cHV0TnVtYmVyT2ZDaGFubmVs
c107CiB9CiAKLXZvaWQgQXVkaW9TZXNzaW9uOjpzZXRBY3RpdmUoYm9vbCBhY3RpdmUpCitib29s
IEF1ZGlvU2Vzc2lvbjo6dHJ5VG9TZXRBY3RpdmUoYm9vbCBhY3RpdmUpCiB7CiAgICAgTlNFcnJv
ciAqZXJyb3IgPSBuaWw7CiAgICAgW1tBVkF1ZGlvU2Vzc2lvbiBzaGFyZWRJbnN0YW5jZV0gc2V0
QWN0aXZlOmFjdGl2ZSBlcnJvcjomZXJyb3JdOwotICAgIEFTU0VSVCghZXJyb3IpOworICAgIHJl
dHVybiAhZXJyb3I7CiB9CiAKIHNpemVfdCBBdWRpb1Nlc3Npb246OnByZWZlcnJlZEJ1ZmZlclNp
emUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9z
L01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLmgKaW5kZXggNjFjYzAyMWYzZjVmMmZiZmVhMjRi
ZWVmN2JjZjJlZTljOGUzMWYwMC4uOTNlY2JjZWM2NGIwZWE3NTFlZDY2MTQwZGUyMWJmMzYyMTMw
ZGVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlh
U2Vzc2lvbk1hbmFnZXJJT1MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9p
b3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oCkBAIC01Myw3ICs1Myw3IEBAIHByaXZhdGU6CiAK
ICAgICBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2Vzc2lv
bldpbGxCZWdpblBsYXliYWNrKE1lZGlhU2Vzc2lvbiYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
Ym9vbCBzZXNzaW9uV2lsbEJlZ2luUGxheWJhY2soTWVkaWFTZXNzaW9uJikgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIHNlc3Npb25XaWxsRW5kUGxheWJhY2soTWVkaWFTZXNzaW9uJikgb3Zl
cnJpZGU7CiAgICAgCiAgICAgdm9pZCB1cGRhdGVOb3dQbGF5aW5nSW5mbygpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJ
T1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFu
YWdlcklPUy5tbQppbmRleCA2NjAwNDgxZDY3MWM2YTI0MjU5ZjA0YWI2MzdlMGE2ZTkyYjIzMjhj
Li43MDk0NjdlMmFlODI0ZjUxNTc1YWZkOGYzNjA5NGQ5YjUyN2ViZTQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFu
YWdlcklPUy5tbQpAQCAtMTg0LDEwICsxODQsMTMgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2Vy
aU9TOjpjb25maWd1cmVXaXJlTGVzc1RhcmdldE1vbml0b3JpbmcoKQogICAgICAgICBbbV9vYmpj
T2JzZXJ2ZXIgc3RvcE1vbml0b3JpbmdBaXJQbGF5Um91dGVzXTsKIH0KIAotdm9pZCBNZWRpYVNl
c3Npb25NYW5hZ2VyaU9TOjpzZXNzaW9uV2lsbEJlZ2luUGxheWJhY2soTWVkaWFTZXNzaW9uJiBz
ZXNzaW9uKQorYm9vbCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpzZXNzaW9uV2lsbEJlZ2luUGxh
eWJhY2soTWVkaWFTZXNzaW9uJiBzZXNzaW9uKQogewotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnNlc3Npb25XaWxsQmVnaW5QbGF5YmFjayhzZXNzaW9uKTsKKyAgICBpZiAoIU1lZGlhU2Vzc2lv
bk1hbmFnZXI6OnNlc3Npb25XaWxsQmVnaW5QbGF5YmFjayhzZXNzaW9uKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCiAgICAgdXBkYXRlTm93UGxheWluZ0luZm8oKTsKKyAgICByZXR1cm4gdHJ1
ZTsKIH0KICAgICAKIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6c2Vzc2lvbldpbGxFbmRQ
bGF5YmFjayhNZWRpYVNlc3Npb24mIHNlc3Npb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAKaW5kZXggMGFh
ZTFmYzVhM2FkODM2ZmNiMzY4MDg4NWJiMjk2MGRkYzhlZjlmOS4uZGMzYTFiNTRlZDQzYjc0Mjg5
OGU1OTM5YTdhZGNmYzM4ZjRlMTUzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcApAQCAtODUsNyArODUs
NiBAQCBBdWRpb0Rlc3RpbmF0aW9uTWFjOjpBdWRpb0Rlc3RpbmF0aW9uTWFjKEF1ZGlvSU9DYWxs
YmFjayYgY2FsbGJhY2ssIGZsb2F0IHNhbXBsZQogICAgICwgbV9yZW5kZXJCdXMoQXVkaW9CdXM6
OmNyZWF0ZSgyLCBrQnVmZmVyU2l6ZSwgZmFsc2UpKQogICAgICwgbV9zYW1wbGVSYXRlKHNhbXBs
ZVJhdGUpCiAgICAgLCBtX2lzUGxheWluZyhmYWxzZSkKLSAgICAsIG1fbWVkaWFTZXNzaW9uKE1l
ZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0aGlzKSkKIHsKICAgICAvLyBPcGVuIGFuZCBpbml0aWFsaXpl
IERlZmF1bHRPdXRwdXRVbml0CiAgICAgQXVkaW9Db21wb25lbnQgY29tcDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5o
CmluZGV4IDIwMDI2ZjdhN2Q1MTE0ZDg1MjA1YzlmZmMwODZhY2FhNzQ3MTA4NmEuLjllODY5ZDBi
OGRhZWQ0ZjY5OTJiM2Q5M2Q2ODhmYjJjYWI5ZTY3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuaApAQCAtMzEs
NyArMzEsNiBAQAogCiAjaW5jbHVkZSAiQXVkaW9CdXMuaCIKICNpbmNsdWRlICJBdWRpb0Rlc3Rp
bmF0aW9uLmgiCi0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uLmgiCiAjaW5jbHVkZSA8QXVkaW9Vbml0
L0F1ZGlvVW5pdC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtMzksNyArMzgsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEFuIEF1ZGlvRGVzdGluYXRpb24gdXNpbmcgQ29y
ZUF1ZGlvJ3MgZGVmYXVsdCBvdXRwdXQgQXVkaW9Vbml0CiAKLWNsYXNzIEF1ZGlvRGVzdGluYXRp
b25NYWMgOiBwdWJsaWMgQXVkaW9EZXN0aW5hdGlvbiwgcHVibGljIE1lZGlhU2Vzc2lvbkNsaWVu
dCB7CitjbGFzcyBBdWRpb0Rlc3RpbmF0aW9uTWFjIDogcHVibGljIEF1ZGlvRGVzdGluYXRpb24g
ewogcHVibGljOgogICAgIEF1ZGlvRGVzdGluYXRpb25NYWMoQXVkaW9JT0NhbGxiYWNrJiwgZmxv
YXQgc2FtcGxlUmF0ZSk7CiAgICAgdmlydHVhbCB+QXVkaW9EZXN0aW5hdGlvbk1hYygpOwpAQCAt
NTMsMTkgKzUyLDkgQEAgcHJpdmF0ZToKICAgICBPU1N0YXR1cyByZW5kZXIoVUludDMyIG51bWJl
ck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSk7CiAgICAgdm9pZCBzZXRJc1BsYXlp
bmcoYm9vbCk7CiAKLSAgICB2aXJ0dWFsIE1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIG1lZGlhVHlw
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIE1lZGlhU2Vzc2lvbjo6V2ViQXVkaW87IH0KLSAg
ICB2aXJ0dWFsIE1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHByZXNlbnRhdGlvblR5cGUoKSBjb25z
dCB7IHJldHVybiBNZWRpYVNlc3Npb246OldlYkF1ZGlvOyB9Ci0gICAgdmlydHVhbCBib29sIGNh
blJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQo
TWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUpIG92ZXJyaWRlIHsgfQotICAg
IHZpcnR1YWwgYm9vbCBvdmVycmlkZUJhY2tncm91bmRQbGF5YmFja1Jlc3RyaWN0aW9uKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLQogICAgIHZpcnR1YWwgdm9pZCBzdGFydCgp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCBib29sIGlzUGxheWluZygpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNQbGF5aW5nOyB9Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgcGF1c2VQbGF5YmFjaygpIG92ZXJyaWRlIHsgc3RvcCgpOyB9Ci0gICAg
dmlydHVhbCB2b2lkIHJlc3VtZVBsYXliYWNrKCkgb3ZlcnJpZGUgeyBzdGFydCgpOyB9Ci0KICAg
ICB2aXJ0dWFsIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Nh
bXBsZVJhdGU7IH0KIAogICAgIEF1ZGlvVW5pdCBtX291dHB1dFVuaXQ7CkBAIC03NCwxMCArNjMs
NiBAQCBwcml2YXRlOgogCiAgICAgZmxvYXQgbV9zYW1wbGVSYXRlOwogICAgIGJvb2wgbV9pc1Bs
YXlpbmc7Ci0KLSNpZiBVU0UoQVVESU9fU0VTU0lPTikKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVk
aWFTZXNzaW9uPiBtX21lZGlhU2Vzc2lvbjsKLSNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1
ZGlvU2Vzc2lvbk1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVk
aW9TZXNzaW9uTWFjLmNwcAppbmRleCBjOTJhMzgwN2Y2YjY5YzNhYzQ1OTMxMjc4NGQ5ZDdmYjgz
ODkyZTQ1Li4xZDI4NGY2YzUxZjA1MGUzNTM3YzliZmZlZjUyMjNjZmJiNDMzNWU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFj
LmNwcApAQCAtMTA3LDkgKzEwNywxMCBAQCBzaXplX3QgQXVkaW9TZXNzaW9uOjpudW1iZXJPZk91
dHB1dENoYW5uZWxzKCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBBdWRpb1Nlc3Np
b246OnNldEFjdGl2ZShib29sKQorYm9vbCBBdWRpb1Nlc3Npb246OnRyeVRvU2V0QWN0aXZlKGJv
b2wpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc2l6
ZV90IEF1ZGlvU2Vzc2lvbjo6cHJlZmVycmVkQnVmZmVyU2l6ZSgpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvTWVkaWFTZXNzaW9uTWFuYWdlck1h
Yy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvTWVkaWFTZXNzaW9uTWFu
YWdlck1hYy5jcHAKaW5kZXggYWFmY2JkMjQ4MGJjZWYzMmVhZGQ4YTc4NDY2NWFkMWE0OWM2MjQw
NS4uZjViMjg4NTBkZDQxOGU3ZjAzZjYxNTcxMGY1YWY3MTNmZTgxZDlkNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL01lZGlhU2Vzc2lvbk1hbmFnZXJNYWMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9NZWRpYVNlc3Npb25N
YW5hZ2VyTWFjLmNwcApAQCAtNTcsOSArNTcsNiBAQCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6
OnVwZGF0ZVNlc3Npb25TdGF0ZSgpCiAgICAgfQogCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIGlm
IChhY3RpdmVBdWRpb1Nlc3Npb25SZXF1aXJlZCgpKQotICAgICAgICBBdWRpb1Nlc3Npb246OnNo
YXJlZFNlc3Npb24oKS5zZXRBY3RpdmUodHJ1ZSk7Ci0KICAgICBpZiAoIVNldHRpbmdzOjpzaG91
bGRNYW5hZ2VBdWRpb1Nlc3Npb25DYXRlZ29yeSgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAyZGU0YzI3NDAzZDBiZDRjOTAyYWJiMThi
Y2RkNGMxMmY3ZmM5YzU3Li44OWQxZjhiYzExZjVhZjY3OWMwNjc1MTFmNjk0ZTcyMWVjY2QxYTMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yNDY3LDYgKzI0NjcsOCBA
QCB2b2lkIEludGVybmFsczo6c2V0TWVkaWFTZXNzaW9uUmVzdHJpY3Rpb25zKGNvbnN0IFN0cmlu
ZyYgbWVkaWFUeXBlU3RyaW5nLCBjb25zdAogICAgICAgICByZXN0cmljdGlvbnMgKz0gTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6QmFja2dyb3VuZFByb2Nlc3NQbGF5YmFja1Jlc3RyaWN0ZWQ7CiAgICAg
aWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlc3RyaWN0aW9uc1N0cmluZywgIkJhY2tncm91bmRUYWJQ
bGF5YmFja1Jlc3RyaWN0ZWQiKSkKICAgICAgICAgcmVzdHJpY3Rpb25zICs9IE1lZGlhU2Vzc2lv
bk1hbmFnZXI6OkJhY2tncm91bmRUYWJQbGF5YmFja1Jlc3RyaWN0ZWQ7CisgICAgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKHJlc3RyaWN0aW9uc1N0cmluZywgIkludGVycnVwdGVkUGxheWJhY2tOb3RQ
ZXJtaXR0ZWQiKSkKKyAgICAgICAgcmVzdHJpY3Rpb25zICs9IE1lZGlhU2Vzc2lvbk1hbmFnZXI6
OkludGVycnVwdGVkUGxheWJhY2tOb3RQZXJtaXR0ZWQ7CiAKICAgICBNZWRpYVNlc3Npb25NYW5h
Z2VyOjpzaGFyZWRNYW5hZ2VyKCkuYWRkUmVzdHJpY3Rpb24obWVkaWFUeXBlLCByZXN0cmljdGlv
bnMpOwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IGIyOGZkYTFhMWI2NTY1MzI1ZjYwMjQwZjJhODMxNmMwMTZiZjFlYWQu
LjViNzc1YzUwYmY3MjMwNzAxMjM5OGZmZDhhYThiY2E1ZDE2NWQxMTggMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNSBAQAorMjAxNS0wMy0yOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbaU9TXSBXaGVuIFdlYiBBdWRpbyBpcyBpbnRlcnJ1cHRlZCBieSBhIHBob25lIGNh
bGwsIGl0IGNhbm5vdCBiZSByZXN0YXJ0ZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMxOTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHdlYmF1ZGlvL2F1ZGlvY29udGV4dC1zdGF0ZS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYmF1ZGlvL2F1ZGlvY29udGV4dC1zdGF0ZS1pbnRl
cnJ1cHRlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYmF1ZGlvL2F1ZGlvY29u
dGV4dC1zdGF0ZS1pbnRlcnJ1cHRlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJhdWRpby9h
dWRpb2NvbnRleHQtc3RhdGUuaHRtbDogQWRkZWQuCisKIDIwMTUtMDMtMjYgIEJyYWR5IEVpZHNv
biAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEFwcGx5IENvbnRlbnRFeHRlbnNpb24g
YWN0aW9ucyBhZnRlciByZWRpcmVjdHMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRp
by9hdWRpb2NvbnRleHQtc3RhdGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8v
YXVkaW9jb250ZXh0LXN0YXRlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YTY5NjVmYmRhYWNk
YzA3OWU1MzkzOTg2ZTcxYWI0MGQ3MjE2ZjQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViYXVkaW8vYXVkaW9jb250ZXh0LXN0YXRlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI2
IEBACitCYXNpYyB0ZXN0cyBmb3IgQXVkaW9Ob2RlIEFQSS4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCitQQVNTIGNvbnRleHQuc3RhdGUgaXMgInN1c3BlbmRlZCIKK25vZGUuY29ubmVj
dChjb250ZXh0LmRlc3RpbmF0aW9uKQorUEFTUyBjb250ZXh0LnN0YXRlIGlzICJydW5uaW5nIgor
Q2FsbGluZyBjb250ZXh0LnN1c3BlbmQoKQorUEFTUyBjb250ZXh0LnN1c3BlbmQoKSBwcm9taXNl
IHJlc29sdmVkCitQQVNTIGNvbnRleHQuc3RhdGUgaXMgInN1c3BlbmRlZCIKK0NhbGxpbmcgY29u
dGV4dC5yZXN1bWUoKQorUEFTUyBjb250ZXh0LnJlc3VtZSgpIHByb21pc2UgcmVzb2x2ZWQKK1BB
U1MgY29udGV4dC5zdGF0ZSBpcyAicnVubmluZyIKK0NhbGxpbmcgY29udGV4dC5jbG9zZSgpCitQ
QVNTIGNvbnRleHQuY2xvc2UoKSBwcm9taXNlIHJlc29sdmVkCitQQVNTIGNvbnRleHQuc3RhdGUg
aXMgImNsb3NlZCIKK0NhbGxpbmcgY29udGV4dC5yZXN1bWUoKSAoc2hvdWxkIGZhaWwpCitQQVNT
IGNvbnRleHQucmVzdW1lKCkgcHJvbWlzZSByZWplY3RlZCAoY29ycmVjdGx5KQorUEFTUyBjb250
ZXh0LnN0YXRlIGlzICJjbG9zZWQiCitDYWxsaW5nIGNvbnRleHQuc3VzcGVuZCgpIChzaG91bGQg
ZmFpbCkKK1BBU1MgY29udGV4dC5yZXN1bWUoKSBwcm9taXNlIHJlamVjdGVkIChjb3JyZWN0bHkp
CitQQVNTIGNvbnRleHQuc3RhdGUgaXMgImNsb3NlZCIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJh
dWRpby9hdWRpb2NvbnRleHQtc3RhdGUtaW50ZXJydXB0ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvd2ViYXVkaW8vYXVkaW9jb250ZXh0LXN0YXRlLWludGVycnVwdGVkLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hMzg1MTExYTY2ZWQ3YmY2ZDQ4MWY0YjZkZjc5NGY2N2FmNDVlODZiCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9jb250ZXh0LXN0YXRl
LWludGVycnVwdGVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUwIEBACitCYXNpYyB0ZXN0cyBm
b3IgQXVkaW9Ob2RlIEFQSS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIGNv
bnRleHQuc3RhdGUgaXMgInN1c3BlbmRlZCIKK25vZGUuY29ubmVjdChjb250ZXh0LmRlc3RpbmF0
aW9uKQorRVZFTlQgc3RhdGVjaGFuZ2UKK1BBU1MgY29udGV4dC5zdGF0ZSBpcyAicnVubmluZyIK
KworVGVzdCAxOiByZXN1bWUoKSB3aGlsZSBpbnRlcnJ1cHRlZCBpcyByZXNvbHZlZCBhZnRlciB0
aGUgaW50ZXJydXB0aW9uIGVuZHMuCitpbnRlcm5hbHMuYmVnaW5NZWRpYVNlc3Npb25JbnRlcnJ1
cHRpb24oKQorRVZFTlQgc3RhdGVjaGFuZ2UKK1BBU1MgY29udGV4dC5zdGF0ZSBpcyAiaW50ZXJy
dXB0ZWQiCitpbnRlcm5hbHMuc2V0TWVkaWFTZXNzaW9uUmVzdHJpY3Rpb25zKCJXZWJBdWRpbyIs
ICJJbnRlcnJ1cHRlZFBsYXliYWNrTm90UGVybWl0dGVkIikKK0NhbGxpbmcgY29udGV4dC5yZXN1
bWUoKQorRGVsYXlpbmcgMTAwbXMKK1BBU1MgY29udGV4dC5zdGF0ZSBpcyAiaW50ZXJydXB0ZWQi
CitpbnRlcm5hbHMuZW5kTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCJNYXlSZXN1bWVQbGF5aW5n
IikKK1BBU1MgY29udGV4dC5yZXN1bWUoKSBwcm9taXNlIHJlc29sdmVkCitQQVNTIGNvbnRleHQu
c3RhdGUgaXMgInJ1bm5pbmciCisKK1Rlc3QgMjogcmVzdW1lKCkgd2hpbGUgaW50ZXJydXB0ZWQg
d2lsbCBjYXVzZSBpbnRlcnJ1cHRpb24gdG8gZW5kLgoraW50ZXJuYWxzLmJlZ2luTWVkaWFTZXNz
aW9uSW50ZXJydXB0aW9uKCkKK0VWRU5UIHN0YXRlY2hhbmdlCitQQVNTIGNvbnRleHQuc3RhdGUg
aXMgImludGVycnVwdGVkIgoraW50ZXJuYWxzLnNldE1lZGlhU2Vzc2lvblJlc3RyaWN0aW9ucygi
V2ViQXVkaW8iLCAiIikKK0NhbGxpbmcgY29udGV4dC5yZXN1bWUoKQorUEFTUyBjb250ZXh0LnJl
c3VtZSgpIHByb21pc2UgcmVzb2x2ZWQKK1BBU1MgY29udGV4dC5zdGF0ZSBpcyAicnVubmluZyIK
KworVGVzdCAzOiBydW5uaW5nIEF1ZGlvQ29udGV4dHMgd2lsbCBub3QgcmVzdW1lIGFmdGVyIGFu
IGludGVycnVwdGlvbiBlbmRzLgoraW50ZXJuYWxzLmJlZ2luTWVkaWFTZXNzaW9uSW50ZXJydXB0
aW9uKCkKK0VWRU5UIHN0YXRlY2hhbmdlCitQQVNTIGNvbnRleHQuc3RhdGUgaXMgImludGVycnVw
dGVkIgoraW50ZXJuYWxzLmVuZE1lZGlhU2Vzc2lvbkludGVycnVwdGlvbigiIikKK0VWRU5UIHN0
YXRlY2hhbmdlCitQQVNTIGNvbnRleHQuc3RhdGUgaXMgInN1c3BlbmRlZCIKKworVGVzdCA0OiBy
ZXN1bWUoKSB3aGlsZSBpbnRlcnJ1cHRlZCB3aWxsIG5vdCByZXN1bWUgcGxheWJhY2sgYWZ0ZXIg
YW4gaW50ZXJydXB0aW9uLgoraW50ZXJuYWxzLmJlZ2luTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9u
KCkKK0VWRU5UIHN0YXRlY2hhbmdlCitQQVNTIGNvbnRleHQuc3RhdGUgaXMgImludGVycnVwdGVk
IgorQ2FsbGluZyBjb250ZXh0LnJlc3VtZSgpCitpbnRlcm5hbHMuZW5kTWVkaWFTZXNzaW9uSW50
ZXJydXB0aW9uKCIiKQorRVZFTlQgc3RhdGVjaGFuZ2UKK1BBU1MgY29udGV4dC5zdGF0ZSBpcyAi
c3VzcGVuZGVkIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvY29udGV4dC1zdGF0
ZS1pbnRlcnJ1cHRlZC5odG1sIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9jb250ZXh0LXN0
YXRlLWludGVycnVwdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzA5NjIwNjJlMmEzYmRlM2YyN2QyNjgw
YzM0ODJkMmRhMDQyZDAzZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlv
L2F1ZGlvY29udGV4dC1zdGF0ZS1pbnRlcnJ1cHRlZC5odG1sCkBAIC0wLDAgKzEsMTUwIEBACis8
IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIHNyYz0icmVzb3VyY2VzL2F1ZGlvLXRlc3RpbmcuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ0Jhc2ljIHRlc3RzIGZvciBBdWRpb05v
ZGUgQVBJLicpOworCit2YXIgY29udGV4dCA9IG51bGw7Cit2YXIgbm9kZSA9IG51bGw7CisKK2Z1
bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERv
bmUoKTsKKyAgICB9CisgICAgCisgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisg
ICAgY29udGV4dCA9IG5ldyB3ZWJraXRBdWRpb0NvbnRleHQoKTsKKworICAgIHNob3VsZEJlKCdj
b250ZXh0LnN0YXRlJywgJyJzdXNwZW5kZWQiJyk7CisgICAgY29udGV4dC5vbnN0YXRlY2hhbmdl
ID0gYmVnYW5SdW5uaW5nOworCisgICAgbm9kZSA9IGNvbnRleHQuY3JlYXRlQnVmZmVyU291cmNl
KCk7CisgICAgZXZhbEFuZExvZygnbm9kZS5jb25uZWN0KGNvbnRleHQuZGVzdGluYXRpb24pJyk7
CisKK30KKworZnVuY3Rpb24gYmVnYW5SdW5uaW5nKGUpIHsKKyAgICBkZWJ1ZygnRVZFTlQgJyAr
IGV2ZW50LnR5cGUpOworICAgIHNob3VsZEJlKCdjb250ZXh0LnN0YXRlJywgJyJydW5uaW5nIicp
OworCisgICAgZGVidWcoJycpOworICAgIGRlYnVnKCdUZXN0IDE6IHJlc3VtZSgpIHdoaWxlIGlu
dGVycnVwdGVkIGlzIHJlc29sdmVkIGFmdGVyIHRoZSBpbnRlcnJ1cHRpb24gZW5kcy4nKTsKKwor
ICAgIGNvbnRleHQub25zdGF0ZWNoYW5nZSA9IGZpcnN0SW50ZXJydXB0aW9uU3RhcnRlZDsKKyAg
ICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgZXZhbEFuZExvZygnaW50ZXJuYWxzLmJl
Z2luTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCknKTsKKworfQorCitmdW5jdGlvbiBmaXJzdElu
dGVycnVwdGlvblN0YXJ0ZWQoZSkgeworICAgIGRlYnVnKCdFVkVOVCAnICsgZXZlbnQudHlwZSk7
CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuc3RhdGUnLCAnImludGVycnVwdGVkIicpOworICAgIGlm
ICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBldmFsQW5kTG9nKCdpbnRlcm5hbHMuc2V0TWVk
aWFTZXNzaW9uUmVzdHJpY3Rpb25zKCJXZWJBdWRpbyIsICJJbnRlcnJ1cHRlZFBsYXliYWNrTm90
UGVybWl0dGVkIiknKTsKKworICAgIGNvbnRleHQub25zdGF0ZWNoYW5nZSA9IG51bGw7CisKKyAg
ICBkZWJ1ZygnQ2FsbGluZyBjb250ZXh0LnJlc3VtZSgpJyk7CisgICAgY29udGV4dC5yZXN1bWUo
KS50aGVuKGZpcnN0UmVzdW1lU3VjY2VlZGVkKTsKKyAgICBkZWJ1ZygnRGVsYXlpbmcgMTAwbXMn
KTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICBzaG91bGRCZSgnY29udGV4
dC5zdGF0ZScsICciaW50ZXJydXB0ZWQiJyk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxz
KQorICAgICAgICAgICAgZXZhbEFuZExvZygnaW50ZXJuYWxzLmVuZE1lZGlhU2Vzc2lvbkludGVy
cnVwdGlvbigiTWF5UmVzdW1lUGxheWluZyIpJyk7CisgICAgfSwgMTAwKTsKK30KKworZnVuY3Rp
b24gZmlyc3RSZXN1bWVTdWNjZWVkZWQoKSB7CisgICAgdGVzdFBhc3NlZCgnY29udGV4dC5yZXN1
bWUoKSBwcm9taXNlIHJlc29sdmVkJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuc3RhdGUnLCAn
InJ1bm5pbmciJyk7CisKKyAgICBkZWJ1ZygnJyk7CisgICAgZGVidWcoJ1Rlc3QgMjogcmVzdW1l
KCkgd2hpbGUgaW50ZXJydXB0ZWQgd2lsbCBjYXVzZSBpbnRlcnJ1cHRpb24gdG8gZW5kLicpCisK
KyAgICBjb250ZXh0Lm9uc3RhdGVjaGFuZ2UgPSBzZWNvbmRJbnRlcnJ1cHRpb25TdGFydGVkOwor
ICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBldmFsQW5kTG9nKCdpbnRlcm5hbHMu
YmVnaW5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oKScpOworfQorCitmdW5jdGlvbiBzZWNvbmRJ
bnRlcnJ1cHRpb25TdGFydGVkKGUpIHsKKyAgICBkZWJ1ZygnRVZFTlQgJyArIGV2ZW50LnR5cGUp
OworICAgIHNob3VsZEJlKCdjb250ZXh0LnN0YXRlJywgJyJpbnRlcnJ1cHRlZCInKTsKKyAgICBp
ZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgZXZhbEFuZExvZygnaW50ZXJuYWxzLnNldE1l
ZGlhU2Vzc2lvblJlc3RyaWN0aW9ucygiV2ViQXVkaW8iLCAiIiknKTsKKworICAgIGNvbnRleHQu
b25zdGF0ZWNoYW5nZSA9IG51bGw7CisKKyAgICBkZWJ1ZygnQ2FsbGluZyBjb250ZXh0LnJlc3Vt
ZSgpJyk7CisgICAgY29udGV4dC5yZXN1bWUoKS50aGVuKHNlY29uZFJlc3VtZVN1Y2NlZWRlZCk7
Cit9CisKK2Z1bmN0aW9uIHNlY29uZFJlc3VtZVN1Y2NlZWRlZCgpIHsKKyAgICB0ZXN0UGFzc2Vk
KCdjb250ZXh0LnJlc3VtZSgpIHByb21pc2UgcmVzb2x2ZWQnKTsKKyAgICBzaG91bGRCZSgnY29u
dGV4dC5zdGF0ZScsICcicnVubmluZyInKTsKKworICAgIGRlYnVnKCcnKTsKKyAgICBkZWJ1Zygn
VGVzdCAzOiBydW5uaW5nIEF1ZGlvQ29udGV4dHMgd2lsbCBub3QgcmVzdW1lIGFmdGVyIGFuIGlu
dGVycnVwdGlvbiBlbmRzLicpCisKKyAgICBjb250ZXh0Lm9uc3RhdGVjaGFuZ2UgPSB0aGlyZElu
dGVycnVwdGlvblN0YXJ0ZWQ7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGV2
YWxBbmRMb2coJ2ludGVybmFscy5iZWdpbk1lZGlhU2Vzc2lvbkludGVycnVwdGlvbigpJyk7Cit9
CisKK2Z1bmN0aW9uIHRoaXJkSW50ZXJydXB0aW9uU3RhcnRlZCgpIHsKKyAgICBkZWJ1ZygnRVZF
TlQgJyArIGV2ZW50LnR5cGUpOworICAgIHNob3VsZEJlKCdjb250ZXh0LnN0YXRlJywgJyJpbnRl
cnJ1cHRlZCInKTsKKworICAgIGNvbnRleHQub25zdGF0ZWNoYW5nZSA9IHRoaXJkSW50ZXJydXB0
aW9uRW5kZWQ7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGV2YWxBbmRMb2co
J2ludGVybmFscy5lbmRNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oIiIpJyk7Cit9CisKK2Z1bmN0
aW9uIHRoaXJkSW50ZXJydXB0aW9uRW5kZWQoKSB7CisgICAgZGVidWcoJ0VWRU5UICcgKyBldmVu
dC50eXBlKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5zdGF0ZScsICcic3VzcGVuZGVkIicpOwor
CisgICAgZGVidWcoJycpOworICAgIGRlYnVnKCdUZXN0IDQ6IHJlc3VtZSgpIHdoaWxlIGludGVy
cnVwdGVkIHdpbGwgbm90IHJlc3VtZSBwbGF5YmFjayBhZnRlciBhbiBpbnRlcnJ1cHRpb24uJykK
KworICAgIGNvbnRleHQub25zdGF0ZWNoYW5nZSA9IGZvdXJ0aEludGVycnVwdGlvblN0YXJ0ZWQ7
CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGV2YWxBbmRMb2coJ2ludGVybmFs
cy5iZWdpbk1lZGlhU2Vzc2lvbkludGVycnVwdGlvbigpJyk7Cit9CisKK2Z1bmN0aW9uIGZvdXJ0
aEludGVycnVwdGlvblN0YXJ0ZWQoKSB7CisgICAgZGVidWcoJ0VWRU5UICcgKyBldmVudC50eXBl
KTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5zdGF0ZScsICciaW50ZXJydXB0ZWQiJyk7CisKKyAg
ICBjb250ZXh0Lm9uc3RhdGVjaGFuZ2UgPSBmb3VydGhJbnRlcnJ1cHRpb25FbmRlZDsKKworICAg
IGRlYnVnKCdDYWxsaW5nIGNvbnRleHQucmVzdW1lKCknKTsKKyAgICBjb250ZXh0LnJlc3VtZSgp
OworCisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGV2YWxBbmRMb2coJ2ludGVy
bmFscy5lbmRNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oIiIpJyk7Cit9CisKK2Z1bmN0aW9uIGZv
dXJ0aEludGVycnVwdGlvbkVuZGVkKCkgeworICAgIGRlYnVnKCdFVkVOVCAnICsgZXZlbnQudHlw
ZSk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuc3RhdGUnLCAnInN1c3BlbmRlZCInKTsKKyAgICBm
aW5pc2hKU1Rlc3QoKTsKK30KKworcnVuVGVzdCgpOworCis8L3NjcmlwdD4KKworPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9jb250ZXh0LXN0YXRl
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb2NvbnRleHQtc3RhdGUuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43NWZiNGM1YjFjMzNmMDk3YjgxM2RkMTZjMGYyMTU4MTg1YTk0NzcxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9jb250ZXh0LXN0YXRlLmh0bWwK
QEAgLTAsMCArMSwxMDkgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJyZXNvdXJjZXMvYXVkaW8tdGVzdGluZy5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignQmFz
aWMgdGVzdHMgZm9yIEF1ZGlvTm9kZSBBUEkuJyk7CisKK3ZhciBjb250ZXh0ID0gbnVsbDsKK3Zh
ciBub2RlID0gbnVsbDsKKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRl
c3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKyAgICAKKyAgICB3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7CisKKyAgICBjb250ZXh0ID0gbmV3IHdlYmtpdEF1ZGlvQ29udGV4dCgp
OworCisgICAgc2hvdWxkQmUoJ2NvbnRleHQuc3RhdGUnLCAnInN1c3BlbmRlZCInKTsKKworICAg
IG5vZGUgPSBjb250ZXh0LmNyZWF0ZUJ1ZmZlclNvdXJjZSgpOworICAgIGV2YWxBbmRMb2coJ25v
ZGUuY29ubmVjdChjb250ZXh0LmRlc3RpbmF0aW9uKScpOworCisgICAgc2hvdWxkQmUoJ2NvbnRl
eHQuc3RhdGUnLCAnInJ1bm5pbmciJyk7CisKKyAgICBkZWJ1ZygnQ2FsbGluZyBjb250ZXh0LnN1
c3BlbmQoKScpOworICAgIGNvbnRleHQuc3VzcGVuZCgpLnRoZW4oc3VzcGVuZFN1Y2NlZWRlZCwg
c3VzcGVuZEZhaWxlZCk7Cit9CisKK2Z1bmN0aW9uIHN1c3BlbmRGYWlsZWQoKSB7CisgICAgdGVz
dEZhaWxlZCgnY29udGV4dC5zdXNwZW5kKCkgcHJvbWlzZSByZWplY3RlZCcpOworICAgIGZpbmlz
aEpTVGVzdCgpOworfQorCitmdW5jdGlvbiBzdXNwZW5kU3VjY2VlZGVkKCkgeworICAgIHRlc3RQ
YXNzZWQoJ2NvbnRleHQuc3VzcGVuZCgpIHByb21pc2UgcmVzb2x2ZWQnKTsKKyAgICBzaG91bGRC
ZSgnY29udGV4dC5zdGF0ZScsICcic3VzcGVuZGVkIicpOworCisgICAgZGVidWcoJ0NhbGxpbmcg
Y29udGV4dC5yZXN1bWUoKScpOworICAgIGNvbnRleHQucmVzdW1lKCkudGhlbihyZXN1bWVTdWNj
ZWVkZWQsIHJlc3VtZUZhaWxlZCk7Cit9CisKK2Z1bmN0aW9uIHJlc3VtZUZhaWxlZCgpIHsKKyAg
ICB0ZXN0RmFpbGVkKCdjb250ZXh0LnJlc3VtZSgpIHByb21pc2UgcmVqZWN0ZWQnKTsKKyAgICBm
aW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gcmVzdW1lU3VjY2VlZGVkKCkgeworICAgIHRl
c3RQYXNzZWQoJ2NvbnRleHQucmVzdW1lKCkgcHJvbWlzZSByZXNvbHZlZCcpOworICAgIHNob3Vs
ZEJlKCdjb250ZXh0LnN0YXRlJywgJyJydW5uaW5nIicpOworCisgICAgZGVidWcoJ0NhbGxpbmcg
Y29udGV4dC5jbG9zZSgpJyk7CisgICAgY29udGV4dC5jbG9zZSgpLnRoZW4oY2xvc2VTdWNjZWVk
ZWQsIGNsb3NlRmFpbGVkKTsKK30KKworZnVuY3Rpb24gY2xvc2VGYWlsZWQoKSB7IAorICAgIHRl
c3RGYWlsZWQoJ2NvbnRleHQuY2xvc2UoKSBwcm9taXNlIHJlamVjdGVkJyk7CisgICAgZmluaXNo
SlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIGNsb3NlU3VjY2VlZGVkKCkgeworICAgIHRlc3RQYXNz
ZWQoJ2NvbnRleHQuY2xvc2UoKSBwcm9taXNlIHJlc29sdmVkJyk7CisgICAgc2hvdWxkQmUoJ2Nv
bnRleHQuc3RhdGUnLCAnImNsb3NlZCInKTsKKworICAgIGRlYnVnKCdDYWxsaW5nIGNvbnRleHQu
cmVzdW1lKCkgKHNob3VsZCBmYWlsKScpOworICAgIGNvbnRleHQucmVzdW1lKCkudGhlbihyZXN1
bWVTdWNjZWVkZWRJbmNvcnJlY3RseSwgcmVzdW1lRmFpbGVkQ29ycmVjdGx5KTsKK30KKworZnVu
Y3Rpb24gcmVzdW1lU3VjY2VlZGVkSW5jb3JyZWN0bHkoKSB7CisgICAgdGVzdEZhaWxlZCgnY29u
dGV4dC5yZXN1bWUoKSBwcm9taXNlIHJlc29sdmVkIChzaG91bGQgaGF2ZSByZWplY3RlZCknKTsK
KyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gcmVzdW1lRmFpbGVkQ29ycmVjdGx5
KCkgeworICAgIHRlc3RQYXNzZWQoJ2NvbnRleHQucmVzdW1lKCkgcHJvbWlzZSByZWplY3RlZCAo
Y29ycmVjdGx5KScpOworICAgIHNob3VsZEJlKCdjb250ZXh0LnN0YXRlJywgJyJjbG9zZWQiJyk7
CisKKyAgICBkZWJ1ZygnQ2FsbGluZyBjb250ZXh0LnN1c3BlbmQoKSAoc2hvdWxkIGZhaWwpJyk7
CisgICAgY29udGV4dC5zdXNwZW5kKCkudGhlbihzdXNwZW5kU3VjY2VlZGVkSW5jb3JyZWN0bHks
IHN1c3BlbmRGYWlsZWRDb3JyZWN0bHkpOworfQorCitmdW5jdGlvbiBzdXNwZW5kU3VjY2VlZGVk
SW5jb3JyZWN0bHkoKSB7CisgICAgdGVzdEZhaWxlZCgnY29udGV4dC5zdXNwZW5kKCkgcHJvbWlz
ZSByZXNvbHZlZCAoc2hvdWxkIGhhdmUgcmVqZWN0ZWQpJyk7CisgICAgZmluaXNoSlNUZXN0KCk7
Cit9CisKK2Z1bmN0aW9uIHN1c3BlbmRGYWlsZWRDb3JyZWN0bHkoKSB7CisgICAgdGVzdFBhc3Nl
ZCgnY29udGV4dC5yZXN1bWUoKSBwcm9taXNlIHJlamVjdGVkIChjb3JyZWN0bHkpJyk7CisgICAg
c2hvdWxkQmUoJ2NvbnRleHQuc3RhdGUnLCAnImNsb3NlZCInKTsKKyAgICBmaW5pc2hKU1Rlc3Qo
KTsKK30KKworcnVuVGVzdCgpOworCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249698</attachid>
            <date>2015-03-29 13:55:21 -0700</date>
            <delta_ts>2015-03-29 16:34:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143190-20150329135440.patch</filename>
            <type>text/plain</type>
            <size>65025</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyMDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGY4MDEzZmVhNWNkMGEy
ZTIwODRkZjA0MWFiNWM4NzFlOWQ2YWM1Yi4uYTk4ZTA2M2VlYjkxNWZmYTY3ZmZlMDUyYjQ2NDA5
NDIyOGZmYmUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMyBAQAorMjAxNS0wMy0yOCAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBXaGVuIFdlYiBB
dWRpbyBpcyBpbnRlcnJ1cHRlZCBieSBhIHBob25lIGNhbGwsIGl0IGNhbm5vdCBiZSByZXN0YXJ0
ZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMx
OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0
czogd2ViYXVkaW8vYXVkaW9jb250ZXh0LXN0YXRlLWludGVycnVwdGVkLmh0bWwKKyAgICAgICAg
ICAgICAgIHdlYmF1ZGlvL2F1ZGlvY29udGV4dC1zdGF0ZS5odG1sCisKKyAgICAgICAgSW1wbGVt
ZW50IHRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhbmQgcHJvcGVydGllcyBmcm9tIHRoZSBXZWIgQXVk
aW8gc3BlYzoKKyAgICAgICAgY2xvc2UoKSwgc3VzcGVuZCgpLCByZXN1bWUoKSwgb25zdGF0ZWNo
YW5nZS4KKworICAgICAgICBBdWRpb0NvbnRleHQgd2lsbCB0YWtlIG1vcmUgcmVzcG9uc2liaWxp
dHkgZm9yIHRyYWNraW5nIHN0YXRlIGFuZCBpbnRlcnJ1cHRpb25zIChhbmQKKyAgICAgICAgQXVk
aW9EZXN0aW5hdGlvbiB3aWxsIGdpdmUgdXAgdGhhdCByZXNwb25zaWJpbGl0eSkuIFRoaXMgbWVh
bnMgQXVkaW9Db250ZXh0IG11c3QgYmUgYQorICAgICAgICBNZWRpYVNlc3Npb25DbGllbnQsIGFu
ZCBvd24gaXRzIG93biBNZWRpYVNlc3Npb24uIEluIHJldHVybiwgQXVkaW9EZXN0aW5hdGlvbklP
UyBhbmQgCisgICAgICAgIEF1ZGlvRGVzdGluYXRpb25NYWMgcmVsaW5xdWlzaCBib3RoLgorCisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9Db250ZXh0OjpBdWRpb0NvbnRleHQpOiBTZXQgZGVmYXVsdCB2YWx1ZXMgaW4g
aGVhZGVyLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0Ojp1bmluaXRpYWxpemUpOiBD
YWxsIHNldFN0YXRlKCkgaW5zdGVhZCBvZiBzZXR0aW5nIG1fc3RhdGUuCisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0NvbnRleHQ6OmFkZFJlYWN0aW9uKTogQWRkZWQuIEFwcGVuZCB0aGUgY2FsbGJh
Y2sgdG8gdGhlIGFwcHJvcHJpYXRlIHZlY3RvciBmb3IgdGhlIHN0YXRlLgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9Db250ZXh0OjpzZXRTdGF0ZSk6IEFkZGVkLiBGaXJlIGV2ZW50cyBhbmQgcmVz
b2x2ZSB0aGUgYXBwcm9wcmlhdGUgcmVhY3Rpb24gY2FsbGJhY2tzIGZvciB0aGUgbmV3IHN0YXRl
LgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpzdGF0ZSk6IFJldHVybiBhIHN0cmlu
ZyByZXByZXNlbnRpbmcgdGhlIGNvbnRleHQncyBzdGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvQ29udGV4dDo6c3RvcCk6IENsb3NlIHRoZSBldmVudCBxdWV1ZS4KKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvQ29udGV4dDo6c3RhcnRSZW5kZXJpbmcpOiBDYWxsIHNldFN0YXRlKCkuCisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmZpcmVDb21wbGV0aW9uRXZlbnQpOiBDYWxsIHNl
dFN0YXRlKCkuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OnN1c3BlbmRDb250ZXh0
KTogQWRkZWQuIEFkZCByZWFjdGlvbiBjYWxsYmFjayBhbmQgY2FsbCBzdXNwZW5kKCkgb24gdGhl
IGRlc3RpbmF0aW9uIG5vZGUuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OnJlc3Vt
ZUNvbnRleHQpOiBBZGRlZC4gQWRkIHJlYWN0aW9uIGNhbGxiYWNrIGFuZCBjYWxsIHJlc3VtZSgp
IG9uIHRoZSBkZXN0aW5hdGlvbiBub2RlLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0
OjpjbG9zZUNvbnRleHQpOiBBZGRlZC4gQWRkIHJlYWN0aW9uIGNhbGxiYWNrIGFuZCBjYWxsIGNs
b3NlKCkgb24gdGhlIGRlc3RpbmF0aW9uIG5vZGUuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Nv
bnRleHQ6OnN1c3BlbmRQbGF5YmFjayk6IEFkZGVkLiBTdXNwZW5kIHBsYXliYWNrIGFuZCBzZXQg
c3RhdGUgdG8gaW50ZXJydXB0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6Om1h
eVJlc3VtZVBsYXliYWNrKTogQWRkZWQuIENvbmRpdGlvbmFsbHkgcmVzdW1lIHBsYXliYWNrLgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTQXVkaW9Db250ZXh0OjpzdXNwZW5kKTogQWRkZWQuIENyZWF0ZSBhbmQgcmV0
dXJuIGEgbmV3IFByb21pc2Ugb2JqZWN0LgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb0NvbnRl
eHQ6OnJlc3VtZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb0NvbnRleHQ6OmNs
b3NlKTogRGl0dG8uCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRs
OiBBZGQgbmV3IG1ldGhvZHMgYW5kIHByb3BlcnRpZXMuCisKKyAgICAgICAgRXh0ZW5zaXZlIG9y
Z2FuaXphdGlvbmFsIGNoYW5nZXMgd2VyZSBtYWRlIHRvIEF1ZGlvQ29udGV4dC5oIHRvIGdyb3Vw
IGluc3RhbmNlCisgICAgICAgIHZhcmlhYmxlcyB0b2dldGhlciBhbmQgYWRkIEMrKzExIGluaXRp
YWxpemVycyBpbiB0aGVpciBkZWNsYXJhdGlvbnM6CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjptZWRp
YVR5cGUpOiBNb3ZlZCBmcm9tIEF1ZGlvRGVzdGluYXRpb25Ob2RlLgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9Db250ZXh0OjpwcmVzZW50YXRpb25UeXBlKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0NvbnRleHQ6OmNhblJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6ZGlkUmVjZWl2ZVJlbW90ZUNvbnRy
b2xDb21tYW5kKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6Om92ZXJy
aWRlQmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rpb24pOiBEaXR0by4KKyAgICAgICAgCisgICAg
ICAgIE90aGVyIGNoYW5nZXMgdG8gc3VwcG9ydCB0aGUgbmV3IEF1ZGlvQ29udGV4dCBtZXRob2Rz
OgorCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnJlc3VtZSk6IEFkZCBlbXB0
eSBkZWZhdWx0IHZpcnR1YWwgbWV0aG9kLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5h
dGlvbk5vZGU6OnN1c3BlbmQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGlu
YXRpb25Ob2RlOjpjbG9zZSk6IERpdHRvLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVm
YXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRB
dWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVzdW1lKTogQWRkZWQuIFBhc3MgdG8gQXVkaW9EZXN0aW5h
dGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3Vz
cGVuZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25O
b2RlOjpjbG9zZSk6IERpdHRvLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1
ZGlvRGVzdGluYXRpb25Ob2RlLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Qcm9taXNl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFdyYXBwZXI6OnJlc29sdmUpOiBBZGQgYW4g
b3ZlcmxvYWQgZm9yIGEgbnVsbHB0ciByZXNvbHZlIHZhbHVlLgorICAgICAgICAqIGRvbS9FdmVu
dE5hbWVzLmg6IEFkZGVkICdzdGF0ZWNoYW5nZScuCisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2s6OlRhc2spOiBBZGQgYSBjb25zdHJ1Y3RvciB3aGljaCB0YWtlcyBhIHZvaWQoKSBjYWxs
YmFjay4KKworICAgICAgICBNb2RpZnkgTWVkaWFTZXNzaW9uLCBBdWRpb1Nlc3Npb24sIGFuZCBN
ZWRpYVNlc3Npb25NYW5hZ2VyIHRvIHN1cHBvcnQgdGhlIG5ldworICAgICAgICBpbnRlcnJ1cHRp
b24gYmVoYXZpb3IuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c3VzcGVuZFBsYXliYWNrKTogUmVuYW1l
ZCBmcm9tIHBhdXNlUGxheWJhY2soKS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6Om1heVJlc3VtZVBsYXliYWNrKTogUmVuYW1lZCBmcm9tIHJlc3VtZVBsYXliYWNrKCkuCisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vQXVkaW9TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6dHJ5
VG9TZXRBY3RpdmUpOiBSZW5hbWVkIGZyb20gc2V0QWN0aXZlLiBSZXR1cm4gdHJ1ZSBieSBkZWZh
dWx0LgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpzZXRBY3RpdmUpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNl
c3Npb246OmJlZ2luSW50ZXJydXB0aW9uKTogcGF1c2VQbGF5YmFjaygpIHdhcyByZW5hbWVkIHRv
IHN1c3BlbmRQbGF5YmFjaygpLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uOjplbmRJ
bnRlcnJ1cHRpb24pOiBBbHdheXMgbm90aWZ5IHRoZSBjbGllbnQsIHRlbGxpbmcgaXQgd2hldGhl
ciB0byByZXN1bWUuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246OmNsaWVudFdpbGxC
ZWdpblBsYXliYWNrKTogQmFpbCBlYXJseSBpZiByZWVudHJhbnQuICBDaGVjayB0aGUgKG5ldykg
CisgICAgICAgICAgICByZXR1cm4gdmFsdWUgb2Ygc2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKCkg
YW5kIHJlbWVtYmVyIHRvIHJlc3VtZSBvbmNlIHRoZSBpbnRlcnJ1cHRpb24gZW5kcy4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6Y2xpZW50V2lsbFBhdXNlUGxheWJhY2spOiBCYWls
IGVhcmx5IGlmIHJlZW50cmFudC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6cGF1
c2VTZXNzaW9uKTogcGF1c2VQbGF5YmFjaygpIHdhcyByZW5hbWVkIHRvIHN1c3BlbmRQbGF5YmFj
aygpLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5oOgorICAgICAgICAq
IHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKTogUmV0dXJu
IGZhbHNlIGlmIG5vdCBhbGxvd2VkIHRvIGJyZWFrIGludGVycnVwdGlvbiBvciAKKyAgICAgICAg
ICAgIGlmIGFjdGl2YXRpbmcgdGhlIGF1ZGlvIHNlc3Npb24gZmFpbGVkLiBPdGhlcndpc2UsIGVu
ZCB0aGUgaW50ZXJydXB0aW9uLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lv
bk1hbmFnZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlv
bklPUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uSU9TOjpBdWRpb0Rl
c3RpbmF0aW9uSU9TKTogbV9tZWRpYVNlc3Npb24gd2FzIHJlbW92ZWQuCisgICAgICAgIChXZWJD
b3JlOjpBdWRpb0Rlc3RpbmF0aW9uSU9TOjpzdGFydCk6IERpdHRvLgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmg6CisgICAgICAgICogcGxhdGZvcm0v
YXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vz
c2lvbjo6dHJ5VG9TZXRBY3RpdmUpOiBSZW5hbWVkIGZyb20gc2V0QWN0aXZlLiBSZXR1cm4gZmFs
c2UgaWYgdGhlIEFWQXVkaW9TZXNzaW9uIGNvdWxkIG5vdCBiZSBhY3RpdmF0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnNldEFjdGl2ZSk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnNlc3Npb25XaWxsQmVnaW5QbGF5YmFjayk6
IERvIG5vdCB1cGRhdGUgdGhlIG5vdyBwbGF5aW5nIGluZm8gaWYgc2Vzc2lvbiBwbGF5YmFjayB3
YXMgYmxvY2tlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlv
bk1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uTWFjOjpBdWRpb0Rl
c3RpbmF0aW9uTWFjKTogbV9tZWRpYVNlc3Npb24gd2FzIHJlbW92ZWQuCisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
U2Vzc2lvbjo6dHJ5VG9TZXRBY3RpdmUpOiBSZW5hbWVkIGZyb20gc2V0QWN0aXZlKCkuIFJldHVy
biB0cnVlIGJ5IGRlZmF1bHQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnNldEFj
dGl2ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL01lZGlhU2Vzc2lv
bk1hbmFnZXJNYWMuY3BwOgorICAgICAgICAoTWVkaWFTZXNzaW9uTWFuYWdlcjo6dXBkYXRlU2Vz
c2lvblN0YXRlKTogTm8gbG9uZ2VyIGF0dGVtcHQgdG8gYWN0aXZhdGUgdGhlIHNlc3Npb24sIGFz
IHRoaXMgaXMgZG9uZQorICAgICAgICAgICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldp
bGxCZWdpblBsYXliYWNrKCkuCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRNZWRpYVNlc3Npb25SZXN0cmljdGlvbnMpOiBB
ZGQgIkludGVycnVwdGVkUGxheWJhY2tOb3RQZXJtaXR0ZWQiLgorCiAyMDE1LTAzLTI3ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQg
d2lsbCBmaXJlICdzZWVrZWQnIGJlZm9yZSBzZWVrIGNvbXBsZXRlcywgbGVhZGluZyB0byBjdXJy
ZW50VGltZSBkaXNjb250aW51aXRpZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggYzgyMTFlM2FiZWYxMDQwZmYzNmMxNDU3YzNi
ZGYxMjFmYmNiMjhjNi4uOWIzY2ZjYjMzNTU0M2Q4YzcxYzlmZTVhMjE0MjhkOGM1NGJjZTJjMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNw
cApAQCAtNDQsOSArNDQsMTEgQEAKICNpbmNsdWRlICJEZWxheU5vZGUuaCIKICNpbmNsdWRlICJE
b2N1bWVudC5oIgogI2luY2x1ZGUgIkR5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaCIKKyNpbmNsdWRl
ICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZG
VEZyYW1lLmgiCiAjaW5jbHVkZSAiR2Fpbk5vZGUuaCIKKyNpbmNsdWRlICJHZW5lcmljRXZlbnRR
dWV1ZS5oIgogI2luY2x1ZGUgIkhSVEZEYXRhYmFzZUxvYWRlci5oIgogI2luY2x1ZGUgIkhSVEZQ
YW5uZXIuaCIKICNpbmNsdWRlICJPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaCIKQEAgLTU1
LDEwICs1NywxMSBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYW5uZXJOb2RlLmgi
CiAjaW5jbHVkZSAiUGVyaW9kaWNXYXZlLmgiCi0jaW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENh
bGxTdGFjay5oPgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3Jp
cHRQcm9jZXNzb3JOb2RlLmgiCiAjaW5jbHVkZSAiV2F2ZVNoYXBlck5vZGUuaCIKKyNpbmNsdWRl
IDxpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogI2luY2x1ZGUgIk1lZGlhU3RyZWFt
LmgiCkBAIC0xMjYsMTkgKzEyOSw5IEBAIFJlZlB0cjxBdWRpb0NvbnRleHQ+IEF1ZGlvQ29udGV4
dDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAvLyBDb25z
dHJ1Y3RvciBmb3IgcmVuZGVyaW5nIHRvIHRoZSBhdWRpbyBoYXJkd2FyZS4KIEF1ZGlvQ29udGV4
dDo6QXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IEFjdGl2ZURPTU9iamVj
dCgmZG9jdW1lbnQpCi0gICAgLCBtX2lzU3RvcFNjaGVkdWxlZChmYWxzZSkKLSAgICAsIG1faXNJ
bml0aWFsaXplZChmYWxzZSkKLSAgICAsIG1faXNBdWRpb1RocmVhZEZpbmlzaGVkKGZhbHNlKQot
ICAgICwgbV9kZXN0aW5hdGlvbk5vZGUoMCkKLSAgICAsIG1faXNEZWxldGlvblNjaGVkdWxlZChm
YWxzZSkKLSAgICAsIG1fYXV0b21hdGljUHVsbE5vZGVzTmVlZFVwZGF0aW5nKGZhbHNlKQotICAg
ICwgbV9jb25uZWN0aW9uQ291bnQoMCkKLSAgICAsIG1fYXVkaW9UaHJlYWQoMCkKKyAgICAsIG1f
bWVkaWFTZXNzaW9uKE1lZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0aGlzKSkKKyAgICAsIG1fZXZlbnRR
dWV1ZShzdGQ6Om1ha2VfdW5pcXVlPEdlbmVyaWNFdmVudFF1ZXVlPigqdGhpcykpCiAgICAgLCBt
X2dyYXBoT3duZXJUaHJlYWQoVW5kZWZpbmVkVGhyZWFkSWRlbnRpZmllcikKLSAgICAsIG1faXNP
ZmZsaW5lQ29udGV4dChmYWxzZSkKLSAgICAsIG1fYWN0aXZlU291cmNlQ291bnQoMCkKLSAgICAs
IG1fcmVzdHJpY3Rpb25zKE5vUmVzdHJpY3Rpb25zKQotICAgICwgbV9zdGF0ZShTdGF0ZTo6U3Vz
cGVuZGVkKQogewogICAgIGNvbnN0cnVjdENvbW1vbigpOwogCkBAIC0xNTEsMTggKzE0NCwxMCBA
QCBBdWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQpCiAvLyBDb25z
dHJ1Y3RvciBmb3Igb2ZmbGluZSAobm9uLXJlYWx0aW1lKSByZW5kZXJpbmcuCiBBdWRpb0NvbnRl
eHQ6OkF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIHVuc2lnbmVkIG51bWJlck9mQ2hh
bm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEFj
dGl2ZURPTU9iamVjdCgmZG9jdW1lbnQpCi0gICAgLCBtX2lzU3RvcFNjaGVkdWxlZChmYWxzZSkK
LSAgICAsIG1faXNJbml0aWFsaXplZChmYWxzZSkKLSAgICAsIG1faXNBdWRpb1RocmVhZEZpbmlz
aGVkKGZhbHNlKQotICAgICwgbV9kZXN0aW5hdGlvbk5vZGUoMCkKLSAgICAsIG1fYXV0b21hdGlj
UHVsbE5vZGVzTmVlZFVwZGF0aW5nKGZhbHNlKQotICAgICwgbV9jb25uZWN0aW9uQ291bnQoMCkK
LSAgICAsIG1fYXVkaW9UaHJlYWQoMCkKLSAgICAsIG1fZ3JhcGhPd25lclRocmVhZChVbmRlZmlu
ZWRUaHJlYWRJZGVudGlmaWVyKQogICAgICwgbV9pc09mZmxpbmVDb250ZXh0KHRydWUpCi0gICAg
LCBtX2FjdGl2ZVNvdXJjZUNvdW50KDApCi0gICAgLCBtX3Jlc3RyaWN0aW9ucyhOb1Jlc3RyaWN0
aW9ucykKLSAgICAsIG1fc3RhdGUoU3RhdGU6OlN1c3BlbmRlZCkKKyAgICAsIG1fbWVkaWFTZXNz
aW9uKE1lZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0aGlzKSkKKyAgICAsIG1fZXZlbnRRdWV1ZShzdGQ6
Om1ha2VfdW5pcXVlPEdlbmVyaWNFdmVudFF1ZXVlPigqdGhpcykpCisgICAgLCBtX2dyYXBoT3du
ZXJUaHJlYWQoVW5kZWZpbmVkVGhyZWFkSWRlbnRpZmllcikKIHsKICAgICBjb25zdHJ1Y3RDb21t
b24oKTsKIApAQCAtMjc3LDcgKzI2Miw3IEBAIHZvaWQgQXVkaW9Db250ZXh0Ojp1bmluaXRpYWxp
emUoKQogICAgICAgICAtLXNfaGFyZHdhcmVDb250ZXh0Q291bnQ7CiAKICAgICAgICAgLy8gT2Zm
bGluZSBjb250ZXh0cyBtb3ZlIHRvICdDbG9zZWQnIHN0YXRlIHdoZW4gZGlzcGF0Y2hpbmcgdGhl
IGNvbXBsZXRpb24gZXZlbnQuCi0gICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6Q2xvc2VkOworICAg
ICAgICBzZXRTdGF0ZShTdGF0ZTo6Q2xvc2VkKTsKICAgICB9CiAKICAgICAvLyBHZXQgcmlkIG9m
IHRoZSBzb3VyY2VzIHdoaWNoIG1heSBzdGlsbCBiZSBwbGF5aW5nLgpAQCAtMjkxLDYgKzI3Niw1
NiBAQCBib29sIEF1ZGlvQ29udGV4dDo6aXNJbml0aWFsaXplZCgpIGNvbnN0CiAgICAgcmV0dXJu
IG1faXNJbml0aWFsaXplZDsKIH0KIAordm9pZCBBdWRpb0NvbnRleHQ6OmFkZFJlYWN0aW9uKFN0
YXRlIHN0YXRlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gcmVhY3Rpb24pCit7CisgICAgc2l6ZV90
IHN0YXRlSW5kZXggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHN0YXRlKTsKKyAgICBpZiAoc3RhdGVJ
bmRleCA+PSBtX3N0YXRlUmVhY3Rpb25zLnNpemUoKSkKKyAgICAgICAgbV9zdGF0ZVJlYWN0aW9u
cy5yZXNpemUoc3RhdGVJbmRleCArIDEpOworCisgICAgbV9zdGF0ZVJlYWN0aW9uc1tzdGF0ZUlu
ZGV4XS5hcHBlbmQocmVhY3Rpb24pOworfQorCit2b2lkIEF1ZGlvQ29udGV4dDo6c2V0U3RhdGUo
U3RhdGUgc3RhdGUpCit7CisgICAgaWYgKG1fc3RhdGUgPT0gc3RhdGUpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fc3RhdGUgPSBzdGF0ZTsKKyAgICBtX2V2ZW50UXVldWUtPmVucXVldWVFdmVu
dChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zdGF0ZWNoYW5nZUV2ZW50LCB0cnVlLCBmYWxz
ZSkpOworCisgICAgc2l6ZV90IHN0YXRlSW5kZXggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHN0YXRl
KTsKKyAgICBpZiAoc3RhdGVJbmRleCA+PSBtX3N0YXRlUmVhY3Rpb25zLnNpemUoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgVmVjdG9yPHN0ZDo6ZnVuY3Rpb248dm9pZCgpPj4gcmVhY3Rpb25z
OworICAgIG1fc3RhdGVSZWFjdGlvbnNbc3RhdGVJbmRleF0uc3dhcChyZWFjdGlvbnMpOworCisg
ICAgZm9yIChhdXRvJiByZWFjdGlvbiA6IHJlYWN0aW9ucykKKyAgICAgICAgcmVhY3Rpb24oKTsK
K30KKworY29uc3QgQXRvbWljU3RyaW5nJiBBdWRpb0NvbnRleHQ6OnN0YXRlKCkgY29uc3QKK3sK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzdXNwZW5kZWQoInN1c3Bl
bmRlZCIpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHJ1bm5pbmco
InJ1bm5pbmciKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBpbnRl
cnJ1cHRlZCgiaW50ZXJydXB0ZWQiKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWlj
U3RyaW5nPiBjbG9zZWQoImNsb3NlZCIpOworCisgICAgc3dpdGNoIChtX3N0YXRlKSB7CisgICAg
Y2FzZSBTdGF0ZTo6U3VzcGVuZGVkOgorICAgICAgICByZXR1cm4gc3VzcGVuZGVkOworICAgIGNh
c2UgU3RhdGU6OlJ1bm5pbmc6CisgICAgICAgIHJldHVybiBydW5uaW5nOworICAgIGNhc2UgU3Rh
dGU6OkludGVycnVwdGVkOgorICAgICAgICByZXR1cm4gaW50ZXJydXB0ZWQ7CisgICAgY2FzZSBT
dGF0ZTo6Q2xvc2VkOgorICAgICAgICByZXR1cm4gY2xvc2VkOworICAgIH0KKworICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBzdXNwZW5kZWQ7Cit9CisKIHZvaWQgQXVkaW9D
b250ZXh0OjpzdG9wRGlzcGF0Y2godm9pZCogdXNlckRhdGEpCiB7CiAgICAgQXVkaW9Db250ZXh0
KiBjb250ZXh0ID0gcmVpbnRlcnByZXRfY2FzdDxBdWRpb0NvbnRleHQqPih1c2VyRGF0YSk7CkBA
IC0zMTEsNiArMzQ2LDggQEAgdm9pZCBBdWRpb0NvbnRleHQ6OnN0b3AoKQogCiAgICAgZG9jdW1l
bnQoKS0+dXBkYXRlSXNQbGF5aW5nQXVkaW8oKTsKIAorICAgIG1fZXZlbnRRdWV1ZS0+Y2xvc2Uo
KTsKKwogICAgIC8vIERvbid0IGNhbGwgdW5pbml0aWFsaXplKCkgaW1tZWRpYXRlbHkgaGVyZSBi
ZWNhdXNlIHRoZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IGlzIGluIHRoZSBtaWRkbGUKICAgICAv
LyBvZiBkZWFsaW5nIHdpdGggYWxsIG9mIGl0cyBBY3RpdmVET01PYmplY3RzIGF0IHRoaXMgcG9p
bnQuIHVuaW5pdGlhbGl6ZSgpIGNhbiBkZS1yZWZlcmVuY2Ugb3RoZXIKICAgICAvLyBBY3RpdmVE
T01PYmplY3RzIHNvIGxldCdzIHNjaGVkdWxlIHVuaW5pdGlhbGl6ZSgpIHRvIGJlIGNhbGxlZCBs
YXRlci4KQEAgLTk4MCw3ICsxMDE3LDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OnN0YXJ0UmVuZGVy
aW5nKCkKICAgICAgICAgICAgIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oQXVkaW9Db250ZXh0
OjpSZXF1aXJlUGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24pOwogICAgIH0KICAg
ICBkZXN0aW5hdGlvbigpLT5zdGFydFJlbmRlcmluZygpOwotICAgIG1fc3RhdGUgPSBTdGF0ZTo6
UnVubmluZzsKKyAgICBzZXRTdGF0ZShTdGF0ZTo6UnVubmluZyk7CiB9CiAKIHZvaWQgQXVkaW9D
b250ZXh0OjptZWRpYUNhblN0YXJ0KCkKQEAgLTEwMTEsNyArMTA0OCw3IEBAIHZvaWQgQXVkaW9D
b250ZXh0OjpmaXJlQ29tcGxldGlvbkV2ZW50KCkKICAgICAgICAgcmV0dXJuOwogICAgICAgICAK
ICAgICBBdWRpb0J1ZmZlciogcmVuZGVyZWRCdWZmZXIgPSBtX3JlbmRlclRhcmdldC5nZXQoKTsK
LSAgICBtX3N0YXRlID0gU3RhdGU6OkNsb3NlZDsKKyAgICBzZXRTdGF0ZShTdGF0ZTo6Q2xvc2Vk
KTsKIAogICAgIEFTU0VSVChyZW5kZXJlZEJ1ZmZlcik7CiAgICAgaWYgKCFyZW5kZXJlZEJ1ZmZl
cikKQEAgLTEwMjAsNyArMTA1Nyw3IEBAIHZvaWQgQXVkaW9Db250ZXh0OjpmaXJlQ29tcGxldGlv
bkV2ZW50KCkKICAgICAvLyBBdm9pZCBmaXJpbmcgdGhlIGV2ZW50IGlmIHRoZSBkb2N1bWVudCBo
YXMgYWxyZWFkeSBnb25lIGF3YXkuCiAgICAgaWYgKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkg
ewogICAgICAgICAvLyBDYWxsIHRoZSBvZmZsaW5lIHJlbmRlcmluZyBjb21wbGV0aW9uIGV2ZW50
IGxpc3RlbmVyLgotICAgICAgICBkaXNwYXRjaEV2ZW50KE9mZmxpbmVBdWRpb0NvbXBsZXRpb25F
dmVudDo6Y3JlYXRlKHJlbmRlcmVkQnVmZmVyKSk7CisgICAgICAgIG1fZXZlbnRRdWV1ZS0+ZW5x
dWV1ZUV2ZW50KE9mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudDo6Y3JlYXRlKHJlbmRlcmVkQnVm
ZmVyKSk7CiAgICAgfQogfQogCkBAIC0xMDM0LDYgKzEwNzEsMTI3IEBAIHZvaWQgQXVkaW9Db250
ZXh0OjpkZWNyZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgpCiAgICAgLS1tX2FjdGl2ZVNvdXJjZUNv
dW50OwogfQogCit2b2lkIEF1ZGlvQ29udGV4dDo6c3VzcGVuZENvbnRleHQoc3RkOjpmdW5jdGlv
bjx2b2lkKCk+IHN1Y2Nlc3NDYWxsYmFjaywgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGZhaWx1cmVD
YWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgQVNTRVJUKHN1Y2Nlc3NDYWxsYmFj
ayk7CisgICAgQVNTRVJUKGZhaWx1cmVDYWxsYmFjayk7CisKKyAgICBpZiAoaXNPZmZsaW5lQ29u
dGV4dCgpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6U3VzcGVuZGVkKSB7CisgICAg
ICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soc3VjY2Vzc0NhbGxiYWNrKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDbG9z
ZWQgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6SW50ZXJydXB0ZWQgfHwgIW1fZGVzdGluYXRpb25Ob2Rl
KSB7CisgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soZmFpbHVyZUNh
bGxiYWNrKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGFkZFJlYWN0aW9uKFN0YXRl
OjpTdXNwZW5kZWQsIHN1Y2Nlc3NDYWxsYmFjayk7CisKKyAgICBpZiAoIW1fbWVkaWFTZXNzaW9u
LT5jbGllbnRXaWxsUGF1c2VQbGF5YmFjaygpKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQ
dHI8QXVkaW9Db250ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOworICAgIG1fZGVzdGluYXRpb25Ob2Rl
LT5zdXNwZW5kKFtzdHJvbmdUaGlzXSB7CisgICAgICAgIHN0cm9uZ1RoaXMtPnNldFN0YXRlKFN0
YXRlOjpTdXNwZW5kZWQpOworICAgIH0pOworfQorCit2b2lkIEF1ZGlvQ29udGV4dDo6cmVzdW1l
Q29udGV4dChzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gc3VjY2Vzc0NhbGxiYWNrLCBzdGQ6OmZ1bmN0
aW9uPHZvaWQoKT4gZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBB
U1NFUlQoc3VjY2Vzc0NhbGxiYWNrKTsKKyAgICBBU1NFUlQoZmFpbHVyZUNhbGxiYWNrKTsKKwor
ICAgIGlmIChpc09mZmxpbmVDb250ZXh0KCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRF
X0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX3N0YXRlID09IFN0YXRl
OjpSdW5uaW5nKSB7CisgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2so
c3VjY2Vzc0NhbGxiYWNrKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX3N0
YXRlID09IFN0YXRlOjpDbG9zZWQgfHwgIW1fZGVzdGluYXRpb25Ob2RlKSB7CisgICAgICAgIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soZmFpbHVyZUNhbGxiYWNrKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGFkZFJlYWN0aW9uKFN0YXRlOjpSdW5uaW5nLCBzdWNj
ZXNzQ2FsbGJhY2spOworCisgICAgaWYgKCFtX21lZGlhU2Vzc2lvbi0+Y2xpZW50V2lsbEJlZ2lu
UGxheWJhY2soKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4g
c3Ryb25nVGhpcyh0aGlzKTsKKyAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+cmVzdW1lKFtzdHJvbmdU
aGlzXSB7CisgICAgICAgIHN0cm9uZ1RoaXMtPnNldFN0YXRlKFN0YXRlOjpSdW5uaW5nKTsKKyAg
ICB9KTsKK30KKwordm9pZCBBdWRpb0NvbnRleHQ6OmNsb3NlQ29udGV4dChzdGQ6OmZ1bmN0aW9u
PHZvaWQoKT4gc3VjY2Vzc0NhbGxiYWNrLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4sIEV4Y2VwdGlv
bkNvZGUmIGVjKQoreworICAgIEFTU0VSVChzdWNjZXNzQ2FsbGJhY2spOworCisgICAgaWYgKGlz
T2ZmbGluZUNvbnRleHQoKSkgeworICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCB8
fCAhbV9kZXN0aW5hdGlvbk5vZGUpIHsKKyAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5wb3N0VGFzayhzdWNjZXNzQ2FsbGJhY2spOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgYWRkUmVhY3Rpb24oU3RhdGU6OkNsb3NlZCwgc3VjY2Vzc0NhbGxiYWNrKTsKKworICAgIFJl
ZlB0cjxBdWRpb0NvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7CisgICAgbV9kZXN0aW5hdGlvbk5v
ZGUtPmNsb3NlKFtzdHJvbmdUaGlzLCBzdWNjZXNzQ2FsbGJhY2tdIHsKKyAgICAgICAgc3Ryb25n
VGhpcy0+c2V0U3RhdGUoU3RhdGU6OkNsb3NlZCk7CisgICAgICAgIHN0cm9uZ1RoaXMtPnVuaW5p
dGlhbGl6ZSgpOworICAgIH0pOworfQorCisKK3ZvaWQgQXVkaW9Db250ZXh0OjpzdXNwZW5kUGxh
eWJhY2soKQoreworICAgIGlmICghbV9kZXN0aW5hdGlvbk5vZGUgfHwgbV9zdGF0ZSA9PSBTdGF0
ZTo6Q2xvc2VkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6
U3VzcGVuZGVkKSB7CisgICAgICAgIGlmIChtX21lZGlhU2Vzc2lvbi0+c3RhdGUoKSA9PSBNZWRp
YVNlc3Npb246OkludGVycnVwdGVkKQorICAgICAgICAgICAgc2V0U3RhdGUoU3RhdGU6OkludGVy
cnVwdGVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJlZlB0cjxBdWRpb0NvbnRl
eHQ+IHN0cm9uZ1RoaXModGhpcyk7CisgICAgbV9kZXN0aW5hdGlvbk5vZGUtPnN1c3BlbmQoW3N0
cm9uZ1RoaXNdIHsKKyAgICAgICAgYm9vbCBpbnRlcnJ1cHRlZCA9IHN0cm9uZ1RoaXMtPm1fbWVk
aWFTZXNzaW9uLT5zdGF0ZSgpID09IE1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0ZWQ7CisgICAgICAg
IHN0cm9uZ1RoaXMtPnNldFN0YXRlKGludGVycnVwdGVkID8gU3RhdGU6OkludGVycnVwdGVkIDog
U3RhdGU6OlN1c3BlbmRlZCk7CisgICAgfSk7Cit9CisKK3ZvaWQgQXVkaW9Db250ZXh0OjptYXlS
ZXN1bWVQbGF5YmFjayhib29sIHNob3VsZFJlc3VtZSkKK3sKKyAgICBpZiAoIW1fZGVzdGluYXRp
b25Ob2RlIHx8IG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCB8fCBtX3N0YXRlID09IFN0YXRlOjpS
dW5uaW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIXNob3VsZFJlc3VtZSkgeworICAg
ICAgICBzZXRTdGF0ZShTdGF0ZTo6U3VzcGVuZGVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIFJlZlB0cjxBdWRpb0NvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7CisgICAgbV9kZXN0
aW5hdGlvbk5vZGUtPnJlc3VtZShbc3Ryb25nVGhpc10geworICAgICAgICBzdHJvbmdUaGlzLT5z
ZXRTdGF0ZShTdGF0ZTo6UnVubmluZyk7CisgICAgfSk7Cit9CisKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCmluZGV4IGFlODc3MmJhMGI1M2Q3OTc3
OGJiMmVmMzU5OGNiMDAwYWQxOGI0NjQuLjIwNjI3NTE4NDU2NjUyMjY1OTdmNGY4ZTY3YmExZTQy
NDgwM2QzZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Nv
bnRleHQuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNp
bmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIk1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5o
IgorI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgogI2luY2x1ZGUgPGF0b21pYz4KICNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC01Nyw2ICs1
OCw3IEBAIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiBjbGFzcyBDaGFubmVsTWVyZ2VyTm9kZTsK
IGNsYXNzIENoYW5uZWxTcGxpdHRlck5vZGU7CiBjbGFzcyBHYWluTm9kZTsKK2NsYXNzIEdlbmVy
aWNFdmVudFF1ZXVlOwogY2xhc3MgUGFubmVyTm9kZTsKIGNsYXNzIEF1ZGlvTGlzdGVuZXI7CiBj
bGFzcyBBdWRpb1N1bW1pbmdKdW5jdGlvbjsKQEAgLTc0LDcgKzc2LDcgQEAgY2xhc3MgUGVyaW9k
aWNXYXZlOwogLy8gQXVkaW9Db250ZXh0IGlzIHRoZSBjb3JuZXJzdG9uZSBvZiB0aGUgd2ViIGF1
ZGlvIEFQSSBhbmQgYWxsIEF1ZGlvTm9kZXMgYXJlIGNyZWF0ZWQgZnJvbSBpdC4KIC8vIEZvciB0
aHJlYWQgc2FmZXR5IGJldHdlZW4gdGhlIGF1ZGlvIHRocmVhZCBhbmQgdGhlIG1haW4gdGhyZWFk
LCBpdCBoYXMgYSByZW5kZXJpbmcgZ3JhcGggbG9ja2luZyBtZWNoYW5pc20uIAogCi1jbGFzcyBB
dWRpb0NvbnRleHQgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8QXVkaW9Db250ZXh0PiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEs
IHB1YmxpYyBNZWRpYUNhblN0YXJ0TGlzdGVuZXIsIHB1YmxpYyBBdWRpb1Byb2R1Y2VyIHsKK2Ns
YXNzIEF1ZGlvQ29udGV4dCA6IHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxBdWRpb0NvbnRleHQ+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5l
RGF0YSwgcHVibGljIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciwgcHVibGljIEF1ZGlvUHJvZHVjZXIs
IHByaXZhdGUgTWVkaWFTZXNzaW9uQ2xpZW50IHsKIHB1YmxpYzoKICAgICAvLyBDcmVhdGUgYW4g
QXVkaW9Db250ZXh0IGZvciByZW5kZXJpbmcgdG8gdGhlIGF1ZGlvIGhhcmR3YXJlLgogICAgIHN0
YXRpYyBSZWZQdHI8QXVkaW9Db250ZXh0PiBjcmVhdGUoRG9jdW1lbnQmLCBFeGNlcHRpb25Db2Rl
Jik7CkBAIC0xMDQsNiArMTA2LDExIEBAIHB1YmxpYzoKIAogICAgIEF1ZGlvTGlzdGVuZXIqIGxp
c3RlbmVyKCkgeyByZXR1cm4gbV9saXN0ZW5lci5nZXQoKTsgfQogCisgICAgdm9pZCBzdXNwZW5k
Q29udGV4dChzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4sIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiwgRXhj
ZXB0aW9uQ29kZSYpOworICAgIHZvaWQgcmVzdW1lQ29udGV4dChzdGQ6OmZ1bmN0aW9uPHZvaWQo
KT4sIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgY2xv
c2VDb250ZXh0KHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+LCBF
eGNlcHRpb25Db2RlJik7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBzdGF0ZSgpIGNvbnN0Owor
CiAgICAgLy8gVGhlIEF1ZGlvTm9kZSBjcmVhdGUgbWV0aG9kcyBhcmUgY2FsbGVkIG9uIHRoZSBt
YWluIHRocmVhZCAoZnJvbSBKYXZhU2NyaXB0KS4KICAgICBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVy
U291cmNlTm9kZT4gY3JlYXRlQnVmZmVyU291cmNlKCk7CiAjaWYgRU5BQkxFKFZJREVPKQpAQCAt
MjY0LDkgKzI3MSwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgbGF6eUluaXRpYWxpemUoKTsKICAg
ICB2b2lkIHVuaW5pdGlhbGl6ZSgpOwogCisgICAgZW51bSBjbGFzcyBTdGF0ZSB7IFN1c3BlbmRl
ZCwgUnVubmluZywgSW50ZXJydXB0ZWQsIENsb3NlZCB9OworICAgIHZvaWQgc2V0U3RhdGUoU3Rh
dGUpOworCiAgICAgLy8gU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBjYWxscyBzdG9wIHR3aWNlLgog
ICAgIC8vIFdlJ2QgbGlrZSB0byBzY2hlZHVsZSBvbmx5IG9uZSBzdG9wIGFjdGlvbiBmb3IgdGhl
bS4KLSAgICBib29sIG1faXNTdG9wU2NoZWR1bGVkOwogICAgIHN0YXRpYyB2b2lkIHN0b3BEaXNw
YXRjaCh2b2lkKiB1c2VyRGF0YSk7CiAgICAgdm9pZCBjbGVhcigpOwogCkBAIC0yNzksOSArMjg4
LDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNQbGF5aW5nQXVkaW8oKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIHZvaWQgcGFnZU11dGVkU3RhdGVEaWRDaGFuZ2UoKSBvdmVycmlkZTsK
IAotICAgIGJvb2wgbV9pc0luaXRpYWxpemVkOwotICAgIGJvb2wgbV9pc0F1ZGlvVGhyZWFkRmlu
aXNoZWQ7Ci0KICAgICAvLyBUaGUgY29udGV4dCBpdHNlbGYga2VlcHMgYSByZWZlcmVuY2UgdG8g
YWxsIHNvdXJjZSBub2Rlcy4gIFRoZSBzb3VyY2Ugbm9kZXMsIHRoZW4gcmVmZXJlbmNlIGFsbCBu
b2RlcyB0aGV5J3JlIGNvbm5lY3RlZCB0by4KICAgICAvLyBJbiB0dXJuLCB0aGVzZSBub2RlcyBy
ZWZlcmVuY2UgYWxsIG5vZGVzIHRoZXkncmUgY29ubmVjdGVkIHRvLiAgQWxsIG5vZGVzIGFyZSB1
bHRpbWF0ZWx5IGNvbm5lY3RlZCB0byB0aGUgQXVkaW9EZXN0aW5hdGlvbk5vZGUuCiAgICAgLy8g
V2hlbiB0aGUgY29udGV4dCBkZXJlZmVyZW5jZXMgYSBzb3VyY2Ugbm9kZSwgaXQgd2lsbCBiZSBk
ZWFjdGl2YXRlZCBmcm9tIHRoZSByZW5kZXJpbmcgZ3JhcGggYWxvbmcgd2l0aCBhbGwgb3RoZXIg
bm9kZXMgaXQgaXMKQEAgLTI5OCw4ICszMDQsMjQgQEAgcHJpdmF0ZToKICAgICAvLyBNYWtlIHN1
cmUgdG8gZGVyZWZlcmVuY2UgdGhlbSBoZXJlLgogICAgIHZvaWQgZGVyZWZVbmZpbmlzaGVkU291
cmNlTm9kZXMoKTsKIAotICAgIFJlZlB0cjxBdWRpb0Rlc3RpbmF0aW9uTm9kZT4gbV9kZXN0aW5h
dGlvbk5vZGU7Ci0gICAgUmVmUHRyPEF1ZGlvTGlzdGVuZXI+IG1fbGlzdGVuZXI7CisgICAgLy8g
TWVkaWFTZXNzaW9uQ2xpZW50CisgICAgdmlydHVhbCBNZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBt
ZWRpYVR5cGUoKSBjb25zdCB7IHJldHVybiBNZWRpYVNlc3Npb246OldlYkF1ZGlvOyB9CisgICAg
dmlydHVhbCBNZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBwcmVzZW50YXRpb25UeXBlKCkgY29uc3Qg
eyByZXR1cm4gTWVkaWFTZXNzaW9uOjpXZWJBdWRpbzsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5S
ZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmRzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKE1lZGlhU2Vzc2lv
bjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgb3ZlcnJp
ZGVCYWNrZ3JvdW5kUGxheWJhY2tSZXN0cmljdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCB2b2lkIHN1c3BlbmRQbGF5YmFjaygpIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgdm9pZCBtYXlSZXN1bWVQbGF5YmFjayhib29sIHNob3VsZFJlc3VtZSkgb3ZlcnJpZGU7CisK
KyAgICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIG92
ZXJyaWRlIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92
ZXJyaWRlIHsgZGVyZWYoKTsgfQorCisgICAgdm9pZCBoYW5kbGVEaXJ0eUF1ZGlvU3VtbWluZ0p1
bmN0aW9ucygpOworICAgIHZvaWQgaGFuZGxlRGlydHlBdWRpb05vZGVPdXRwdXRzKCk7CisKKyAg
ICB2b2lkIGFkZFJlYWN0aW9uKFN0YXRlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4pOworICAgIHZv
aWQgdXBkYXRlQXV0b21hdGljUHVsbE5vZGVzKCk7CiAKICAgICAvLyBPbmx5IGFjY2Vzc2VkIGlu
IHRoZSBhdWRpbyB0aHJlYWQuCiAgICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fZmluaXNoZWROb2Rl
czsKQEAgLTMxNywzOSArMzM5LDM5IEBAIHByaXZhdGU6CiAKICAgICAvLyBUaGV5IHdpbGwgYmUg
c2NoZWR1bGVkIGZvciBkZWxldGlvbiAob24gdGhlIG1haW4gdGhyZWFkKSBhdCB0aGUgZW5kIG9m
IGEgcmVuZGVyIGN5Y2xlIChpbiByZWFsdGltZSB0aHJlYWQpLgogICAgIFZlY3RvcjxBdWRpb05v
ZGUqPiBtX25vZGVzVG9EZWxldGU7Ci0gICAgYm9vbCBtX2lzRGVsZXRpb25TY2hlZHVsZWQ7CisK
KyAgICBib29sIG1faXNEZWxldGlvblNjaGVkdWxlZCA9IHsgZmFsc2UgfTsKKyAgICBib29sIG1f
aXNTdG9wU2NoZWR1bGVkID0geyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0luaXRpYWxpemVkID0g
eyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0F1ZGlvVGhyZWFkRmluaXNoZWQgPSB7IGZhbHNlIH07
CisgICAgYm9vbCBtX2F1dG9tYXRpY1B1bGxOb2Rlc05lZWRVcGRhdGluZyA9IHsgZmFsc2UgfTsK
KyAgICBib29sIG1faXNPZmZsaW5lQ29udGV4dCA9IHsgZmFsc2UgfTsKIAogICAgIC8vIE9ubHkg
YWNjZXNzZWQgd2hlbiB0aGUgZ3JhcGggbG9jayBpcyBoZWxkLgogICAgIEhhc2hTZXQ8QXVkaW9T
dW1taW5nSnVuY3Rpb24qPiBtX2RpcnR5U3VtbWluZ0p1bmN0aW9uczsKICAgICBIYXNoU2V0PEF1
ZGlvTm9kZU91dHB1dCo+IG1fZGlydHlBdWRpb05vZGVPdXRwdXRzOwotICAgIHZvaWQgaGFuZGxl
RGlydHlBdWRpb1N1bW1pbmdKdW5jdGlvbnMoKTsKLSAgICB2b2lkIGhhbmRsZURpcnR5QXVkaW9O
b2RlT3V0cHV0cygpOwogCiAgICAgLy8gRm9yIHRoZSBzYWtlIG9mIHRocmVhZCBzYWZldHksIHdl
IG1haW50YWluIGEgc2VwZXJhdGUgVmVjdG9yIG9mIGF1dG9tYXRpYyBwdWxsIG5vZGVzIGZvciBy
ZW5kZXJpbmcgaW4gbV9yZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXMuCiAgICAgLy8gSXQgd2ls
bCBiZSBjb3BpZWQgZnJvbSBtX2F1dG9tYXRpY1B1bGxOb2RlcyBieSB1cGRhdGVBdXRvbWF0aWNQ
dWxsTm9kZXMoKSBhdCB0aGUgdmVyeSBzdGFydCBvciBlbmQgb2YgdGhlIHJlbmRlcmluZyBxdWFu
dHVtLgogICAgIEhhc2hTZXQ8QXVkaW9Ob2RlKj4gbV9hdXRvbWF0aWNQdWxsTm9kZXM7CiAgICAg
VmVjdG9yPEF1ZGlvTm9kZSo+IG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzOwotICAgIC8v
IG1fYXV0b21hdGljUHVsbE5vZGVzTmVlZFVwZGF0aW5nIGtlZXBzIHRyYWNrIGlmIG1fYXV0b21h
dGljUHVsbE5vZGVzIGlzIG1vZGlmaWVkLgotICAgIGJvb2wgbV9hdXRvbWF0aWNQdWxsTm9kZXNO
ZWVkVXBkYXRpbmc7Ci0gICAgdm9pZCB1cGRhdGVBdXRvbWF0aWNQdWxsTm9kZXMoKTsKLQotICAg
IHVuc2lnbmVkIG1fY29ubmVjdGlvbkNvdW50OwotCi0gICAgLy8gR3JhcGggbG9ja2luZy4KLSAg
ICBNdXRleCBtX2NvbnRleHRHcmFwaE11dGV4OwotICAgIHZvbGF0aWxlIFRocmVhZElkZW50aWZp
ZXIgbV9hdWRpb1RocmVhZDsKLSAgICB2b2xhdGlsZSBUaHJlYWRJZGVudGlmaWVyIG1fZ3JhcGhP
d25lclRocmVhZDsgLy8gaWYgdGhlIGxvY2sgaXMgaGVsZCB0aGVuIHRoaXMgaXMgdGhlIHRocmVh
ZCB3aGljaCBvd25zIGl0LCBvdGhlcndpc2UgPT0gVW5kZWZpbmVkVGhyZWFkSWRlbnRpZmllcgot
ICAgIAogICAgIC8vIE9ubHkgYWNjZXNzZWQgaW4gdGhlIGF1ZGlvIHRocmVhZC4KICAgICBWZWN0
b3I8QXVkaW9Ob2RlKj4gbV9kZWZlcnJlZEZpbmlzaERlcmVmTGlzdDsKKyAgICBWZWN0b3I8VmVj
dG9yPHN0ZDo6ZnVuY3Rpb248dm9pZCgpPj4+IG1fc3RhdGVSZWFjdGlvbnM7CiAKLSAgICAvLyBF
dmVudFRhcmdldAotICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsg
cmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsg
ZGVyZWYoKTsgfQorICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVNlc3Npb24+IG1fbWVkaWFTZXNz
aW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxHZW5lcmljRXZlbnRRdWV1ZT4gbV9ldmVudFF1ZXVl
OwogCiAgICAgUmVmUHRyPEF1ZGlvQnVmZmVyPiBtX3JlbmRlclRhcmdldDsKLSAgICAKLSAgICBi
b29sIG1faXNPZmZsaW5lQ29udGV4dDsKKyAgICBSZWZQdHI8QXVkaW9EZXN0aW5hdGlvbk5vZGU+
IG1fZGVzdGluYXRpb25Ob2RlOworICAgIFJlZlB0cjxBdWRpb0xpc3RlbmVyPiBtX2xpc3RlbmVy
OworCisgICAgdW5zaWduZWQgbV9jb25uZWN0aW9uQ291bnQgPSB7IDAgfTsKKworICAgIC8vIEdy
YXBoIGxvY2tpbmcuCisgICAgTXV0ZXggbV9jb250ZXh0R3JhcGhNdXRleDsKKyAgICB2b2xhdGls
ZSBUaHJlYWRJZGVudGlmaWVyIG1fYXVkaW9UaHJlYWQgPSB7IDAgfTsKKyAgICB2b2xhdGlsZSBU
aHJlYWRJZGVudGlmaWVyIG1fZ3JhcGhPd25lclRocmVhZDsgLy8gaWYgdGhlIGxvY2sgaXMgaGVs
ZCB0aGVuIHRoaXMgaXMgdGhlIHRocmVhZCB3aGljaCBvd25zIGl0LCBvdGhlcndpc2UgPT0gVW5k
ZWZpbmVkVGhyZWFkSWRlbnRpZmllcgogCiAgICAgQXN5bmNBdWRpb0RlY29kZXIgbV9hdWRpb0Rl
Y29kZXI7CiAKQEAgLTM1OCwxMiArMzgwLDExIEBAIHByaXZhdGU6CiAgICAgZW51bSB7IE1heE51
bWJlck9mQ2hhbm5lbHMgPSAzMiB9OwogCiAgICAgLy8gTnVtYmVyIG9mIEF1ZGlvQnVmZmVyU291
cmNlTm9kZXMgdGhhdCBhcmUgYWN0aXZlIChwbGF5aW5nKS4KLSAgICBzdGQ6OmF0b21pYzxpbnQ+
IG1fYWN0aXZlU291cmNlQ291bnQ7CisgICAgc3RkOjphdG9taWM8aW50PiBtX2FjdGl2ZVNvdXJj
ZUNvdW50ID0geyAwIH07CiAKLSAgICBCZWhhdmlvclJlc3RyaWN0aW9ucyBtX3Jlc3RyaWN0aW9u
czsKKyAgICBCZWhhdmlvclJlc3RyaWN0aW9ucyBtX3Jlc3RyaWN0aW9ucyA9IHsgTm9SZXN0cmlj
dGlvbnMgfTsKIAotICAgIGVudW0gY2xhc3MgU3RhdGUgeyBTdXNwZW5kZWQsIFJ1bm5pbmcsIENs
b3NlZCB9OwotICAgIFN0YXRlIG1fc3RhdGU7CisgICAgU3RhdGUgbV9zdGF0ZSA9IHsgU3RhdGU6
OlN1c3BlbmRlZCB9OwogfTsKIAogfSAvLyBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwKaW5kZXggYjk3NWU0NzI4ZTgzNTczZjBl
N2IxZDZlMTI1Yzg2MWE4ZTc4M2Y3Yi4uMTJjZDU3NTY4NGE2NmE5MmUwY2JiMzVhNzlkYjU1YzYz
MDdhODBkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NvbnRleHQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9D
b250ZXh0LmlkbApAQCAtMjMsNiArMjMsMTMgQEAKICAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKK2VudW0gQXVkaW9D
b250ZXh0U3RhdGUgeworICAgICJzdXNwZW5kZWQiLAorICAgICJydW5uaW5nIiwKKyAgICAiaW50
ZXJydXB0ZWQiLAorICAgICJjbG9zZWQiCit9OworCiBbCiAgICAgRW5hYmxlZEJ5U2V0dGluZz1X
ZWJBdWRpbywKICAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCkBAIC00Myw2ICs1MCwxMyBAQAog
ICAgIC8vIEFsbCBwYW5uaW5nIGlzIHJlbGF0aXZlIHRvIHRoaXMgbGlzdGVuZXIuCiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIEF1ZGlvTGlzdGVuZXIgbGlzdGVuZXI7CiAKKyAgICBbQ3VzdG9tXSBQ
cm9taXNlIHN1c3BlbmQoKTsKKyAgICBbQ3VzdG9tXSBQcm9taXNlIHJlc3VtZSgpOworICAgIFtD
dXN0b21dIFByb21pc2UgY2xvc2UoKTsKKworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBBdWRpb0Nv
bnRleHRTdGF0ZSBzdGF0ZTsKKyAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9uc3RhdGVjaGFu
Z2U7CisKICAgICAvLyBOdW1iZXIgb2YgQXVkaW9CdWZmZXJTb3VyY2VOb2RlcyB0aGF0IGFyZSBj
dXJyZW50bHkgcGxheWluZy4KICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBh
Y3RpdmVTb3VyY2VDb3VudDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAppbmRleCA3NDg5NDY0OTllM2I4ZGNl
YjE0MjhhOTM1NThjMmYwNzEwMzZkMTUzLi5hYzU4N2IxZGUyNzNmNzNmNjgyNGVmZjgwNmVlZWZm
N2QwZTIyM2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgQXVkaW9CdXM7CiBjbGFzcyBBdWRpb0NvbnRleHQ7Ci0gICAgCisKIGNs
YXNzIEF1ZGlvRGVzdGluYXRpb25Ob2RlIDogcHVibGljIEF1ZGlvTm9kZSwgcHVibGljIEF1ZGlv
SU9DYWxsYmFjayB7CiBwdWJsaWM6CiAgICAgQXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250
ZXh0KiwgZmxvYXQgc2FtcGxlUmF0ZSk7CkBAIC01OCw2ICs1OCw5IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZW5hYmxlSW5wdXQoY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkKSA9IDA7
CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRSZW5kZXJpbmcoKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHJlc3VtZShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBz
dXNwZW5kKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPikgeyB9CisgICAgdmlydHVhbCB2b2lkIGNsb3Nl
KHN0ZDo6ZnVuY3Rpb248dm9pZCgpPikgeyB9CiAKICAgICBBdWRpb1NvdXJjZVByb3ZpZGVyKiBs
b2NhbEF1ZGlvSW5wdXRQcm92aWRlcigpIHsgcmV0dXJuICZtX2xvY2FsQXVkaW9JbnB1dFByb3Zp
ZGVyOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVm
YXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCA5NTZjYzIyNmY4NTZi
NDc0MTQ0ZTM1NmY3ZjNlYTg1Zjk1OTJiYWE5Li4wYmNjMmMwYTRhYzYwYzk0MjQwMjI2N2RlNWU0
YzQwZGNiZjg5ZDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCkBAIC0zMSw2ICsz
MSw3IEBACiAjaW5jbHVkZSAiQXVkaW9Db250ZXh0LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29k
ZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAogY29uc3QgdW5zaWduZWQgRW5h
YmxlZElucHV0Q2hhbm5lbHMgPSAyOwpAQCAtMTA1LDYgKzEwNiwyOSBAQCB2b2lkIERlZmF1bHRB
dWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3RhcnRSZW5kZXJpbmcoKQogICAgICAgICBtX2Rlc3RpbmF0
aW9uLT5zdGFydCgpOwogfQogCit2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVz
dW1lKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbikKK3sKKyAgICBBU1NFUlQoaXNJbml0
aWFsaXplZCgpKTsKKyAgICBpZiAoaXNJbml0aWFsaXplZCgpKQorICAgICAgICBtX2Rlc3RpbmF0
aW9uLT5zdGFydCgpOworICAgIGNvbnRleHQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5w
b3N0VGFzayhmdW5jdGlvbik7Cit9CisKK3ZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2Rl
OjpzdXNwZW5kKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbikKK3sKKyAgICBBU1NFUlQo
aXNJbml0aWFsaXplZCgpKTsKKyAgICBpZiAoaXNJbml0aWFsaXplZCgpKQorICAgICAgICBtX2Rl
c3RpbmF0aW9uLT5zdG9wKCk7CisgICAgY29udGV4dCgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPnBvc3RUYXNrKGZ1bmN0aW9uKTsKK30KKwordm9pZCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlv
bk5vZGU6OmNsb3NlKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbikKK3sKKyAgICBBU1NF
UlQoaXNJbml0aWFsaXplZCgpKTsKKyAgICB1bmluaXRpYWxpemUoKTsKKyAgICBjb250ZXh0KCkt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soZnVuY3Rpb24pOworfQorCiB1bnNp
Z25lZCBsb25nIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6bWF4Q2hhbm5lbENvdW50KCkg
Y29uc3QKIHsKICAgICByZXR1cm4gQXVkaW9EZXN0aW5hdGlvbjo6bWF4Q2hhbm5lbENvdW50KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRp
b0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZh
dWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaAppbmRleCAyZTBhODY1OGNkMmVkMDRjMzU4YzU1ZTNj
Y2E4MjdjZDFkNTJjYjdjLi5iMWQ2MjhkZDJlOWNkMGQ3NDk0MzMzODY4Mjk1NTBiNDFmMjVhNmRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRp
b0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTUwLDYgKzUwLDkgQEAgcHVibGljOgog
ICAgIC8vIEF1ZGlvRGVzdGluYXRpb25Ob2RlCiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZUlucHV0
KGNvbnN0IFN0cmluZyYgaW5wdXREZXZpY2VJZCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IHN0YXJ0UmVuZGVyaW5nKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHJlc3VtZShzdGQ6
OmZ1bmN0aW9uPHZvaWQoKT4pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kKHN0
ZDo6ZnVuY3Rpb248dm9pZCgpPikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGNsb3NlKHN0
ZDo6ZnVuY3Rpb248dm9pZCgpPikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB1bnNpZ25lZCBsb25n
IG1heENoYW5uZWxDb3VudCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBpc1Bs
YXlpbmcoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNBdWRpb0NvbnRleHRDdXN0b20uY3BwCmluZGV4IDFhNzVkOTM1YmM3MzIyMDVhYjQ3YTVkMTk2
MDRkMDgyOWQxZDRlYzUuLmRkZWM3OTRmMGU2ZjI1OTQyNjhmNmY5OTA2OWNkMGQ2ZDQ0Yzg4ZTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db250ZXh0Q3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29udGV4dEN1
c3RvbS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJKU0F1ZGlvQnVmZmVyLmgiCiAj
aW5jbHVkZSAiSlNBdWRpb0NvbnRleHQuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNp
bmNsdWRlICJKU0RPTVByb21pc2UuaCIKICNpbmNsdWRlICJKU09mZmxpbmVBdWRpb0NvbnRleHQu
aCIKICNpbmNsdWRlICJPZmZsaW5lQXVkaW9Db250ZXh0LmgiCiAjaW5jbHVkZSA8cnVudGltZS9B
cnJheUJ1ZmZlci5oPgpAQCAtMTEwLDYgKzExMSw2OSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNvbnN0cnVjdEpTQXVkaW9Db250ZXh0KEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKENSRUFURV9ET01fV1JBUFBFUihqc0NvbnN0cnVjdG9yLT5nbG9i
YWxPYmplY3QoKSwgQXVkaW9Db250ZXh0LCBhdWRpb0NvbnRleHQuZ2V0KCkpKTsKIH0KIAorSlNW
YWx1ZSBKU0F1ZGlvQ29udGV4dDo6c3VzcGVuZChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgRGVm
ZXJyZWRXcmFwcGVyIHdyYXBwZXIoZXhlYywgZ2xvYmFsT2JqZWN0KCkpOworICAgIGF1dG8gc3Vj
Y2Vzc0NhbGxiYWNrID0gW3dyYXBwZXJdKCkgbXV0YWJsZSB7CisgICAgICAgIHdyYXBwZXIucmVz
b2x2ZShudWxscHRyKTsKKyAgICB9OworICAgIGF1dG8gZmFpbHVyZUNhbGxiYWNrID0gW3dyYXBw
ZXJdKCkgbXV0YWJsZSB7CisgICAgICAgIHdyYXBwZXIucmVqZWN0KG51bGxwdHIpOworICAgIH07
CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBpbXBsKCkuc3VzcGVuZENvbnRleHQo
V1RGOjptb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURjo6bW92ZShmYWlsdXJlQ2FsbGJhY2spLCBl
Yyk7CisKKyAgICBpZiAoZWMpIHsKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsK
KyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorCisgICAgcmV0dXJuIHdyYXBw
ZXIucHJvbWlzZSgpOworfQorCitKU1ZhbHVlIEpTQXVkaW9Db250ZXh0OjpyZXN1bWUoRXhlY1N0
YXRlKiBleGVjKQoreworICAgIERlZmVycmVkV3JhcHBlciB3cmFwcGVyKGV4ZWMsIGdsb2JhbE9i
amVjdCgpKTsKKyAgICBhdXRvIHN1Y2Nlc3NDYWxsYmFjayA9IFt3cmFwcGVyXSgpIG11dGFibGUg
eworICAgICAgICB3cmFwcGVyLnJlc29sdmUobnVsbHB0cik7CisgICAgfTsKKyAgICBhdXRvIGZh
aWx1cmVDYWxsYmFjayA9IFt3cmFwcGVyXSgpIG11dGFibGUgeworICAgICAgICB3cmFwcGVyLnJl
amVjdChudWxscHRyKTsKKyAgICB9OworCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAg
aW1wbCgpLnJlc3VtZUNvbnRleHQoV1RGOjptb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURjo6bW92
ZShmYWlsdXJlQ2FsbGJhY2spLCBlYyk7CisKKyAgICBpZiAoZWMpIHsKKyAgICAgICAgc2V0RE9N
RXhjZXB0aW9uKGV4ZWMsIGVjKTsKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAg
fQorCisgICAgcmV0dXJuIHdyYXBwZXIucHJvbWlzZSgpOworfQorCitKU1ZhbHVlIEpTQXVkaW9D
b250ZXh0OjpjbG9zZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgRGVmZXJyZWRXcmFwcGVyIHdy
YXBwZXIoZXhlYywgZ2xvYmFsT2JqZWN0KCkpOworICAgIGF1dG8gc3VjY2Vzc0NhbGxiYWNrID0g
W3dyYXBwZXJdKCkgbXV0YWJsZSB7CisgICAgICAgIHdyYXBwZXIucmVzb2x2ZShudWxscHRyKTsK
KyAgICB9OworICAgIGF1dG8gZmFpbHVyZUNhbGxiYWNrID0gW3dyYXBwZXJdKCkgbXV0YWJsZSB7
CisgICAgICAgIHdyYXBwZXIucmVqZWN0KG51bGxwdHIpOworICAgIH07CisKKyAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKKyAgICBpbXBsKCkuY2xvc2VDb250ZXh0KFdURjo6bW92ZShzdWNjZXNz
Q2FsbGJhY2spLCBXVEY6Om1vdmUoZmFpbHVyZUNhbGxiYWNrKSwgZWMpOworCisgICAgaWYgKGVj
KSB7CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOworICAgIH0KKworICAgIHJldHVybiB3cmFwcGVyLnByb21pc2UoKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5oCmluZGV4IDE5YzAw
YzIzMmZkY2NhMTk2ZjAxMTE4NDEwMDc0MmUzOWYxYzE2NTEuLjgzYWU4OTc0NzMxYjhmODQ4MDBk
ODE0NjMzMzNiMDMwOTYyMTVhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQ2FsbGJhY2tEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
YWxsYmFja0RhdGEuaApAQCAtODAsOSArODAsOSBAQCBwcml2YXRlOgogY2xhc3MgRGVsZXRlQ2Fs
bGJhY2tEYXRhVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKIHB1
YmxpYzoKICAgICBEZWxldGVDYWxsYmFja0RhdGFUYXNrKEpTQ2FsbGJhY2tEYXRhKiBkYXRhKQot
ICAgICAgICA6IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2soeyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrOjpDbGVhbnVwVGFzaywgW2RhdGFdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JikgeworICAgICAgICA6IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2soU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzazo6Q2xlYW51cFRhc2ssIFtkYXRhXSAoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYpIHsKICAgICAgICAgICAgIGRlbGV0ZSBkYXRhOwotICAgICAgICB9IH0pCisgICAgICAg
IH0pCiAgICAgewogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVByb21pc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJv
bWlzZS5oCmluZGV4IDQyZDAyZDlmMjhlOWU2YTg0YTRlNzVjM2E3MzE4Zjk2MTRmOWEwMWMuLmQ5
NTY4MTJjNDNlMjMxY2U2YTUwOGY1NDkxODBiZmQwZjI5NWVkNGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oCkBAIC0xMDcsNiArMTA3LDE0IEBAIGlubGluZSB2
b2lkIERlZmVycmVkV3JhcHBlcjo6cmVzb2x2ZTxWZWN0b3I8dW5zaWduZWQgY2hhcj4+KGNvbnN0
IFZlY3Rvcjx1bnNpZ25lCiB9CiAKIHRlbXBsYXRlPD4KK2lubGluZSB2b2lkIERlZmVycmVkV3Jh
cHBlcjo6cmVzb2x2ZShjb25zdCBzdGQ6Om51bGxwdHJfdCYpCit7CisgICAgSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMgPSBtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOworICAgIEpTQzo6SlNMb2Nr
SG9sZGVyIGxvY2tlcihleGVjKTsKKyAgICByZXNvbHZlKGV4ZWMsIEpTQzo6anNOdWxsKCkpOwor
fQorCit0ZW1wbGF0ZTw+CiBpbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJlamVjdDxTdHJp
bmc+KGNvbnN0IFN0cmluZyYgcmVzdWx0KQogewogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0g
bV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudE5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCmluZGV4
IGYxZmQxMjczOWY2MjZiZTIyOTlkNWRkZGUwNjc3NGFkYmRhMWI0NGMuLjU0NWUxNmU1MjRlMDcx
ZjFlMjU4MjQ1YTA4YzYxZTVjNWRiNTk5ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudE5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaApAQCAt
MTkwLDYgKzE5MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhzdGFsbGVkKSBc
CiAgICAgbWFjcm8oc3RhcnQpIFwKICAgICBtYWNybyhzdGFydGVkKSBcCisgICAgbWFjcm8oc3Rh
dGVjaGFuZ2UpIFwKICAgICBtYWNybyhzdG9yYWdlKSBcCiAgICAgbWFjcm8oc3VibWl0KSBcCiAg
ICAgbWFjcm8oc3VjY2VzcykgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgKaW5kZXggMTE0NjYxMjY3MDNlZTMyZDMxZGRkZjA5NjRhZWE2YzZjNmM4NzRkZi4u
NzkwMTk4YmE3ZmY4YmNjNDA3Nzk5ZDBmYWZhYmY3MDMzMWMxMDU1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0xMzAsNiArMTMwLDEyIEBAIHB1
YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAKKyAgICAgICAgVGFzayhzdGQ6OmZ1bmN0aW9u
PHZvaWQoKT4gdGFzaykKKyAgICAgICAgICAgIDogbV90YXNrKFt0YXNrXShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JikgeyB0YXNrKCk7IH0pCisgICAgICAgICAgICAsIG1faXNDbGVhbnVwVGFzayhm
YWxzZSkKKyAgICAgICAgeworICAgICAgICB9CisKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2NvbnZlcnRpYmxl
PFQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPj46OnZhbHVl
Pjo6dHlwZT4KICAgICAgICAgVGFzayhDbGVhbnVwVGFza1RhZywgVCB0YXNrKQogICAgICAgICAg
ICAgOiBtX3Rhc2soV1RGOjptb3ZlKHRhc2spKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKaW5kZXggMWE5ZTI5OGY2NDRkNmIxZTFhOGYzMmYyMmM3YjFkNzRjYjc2ZTcx
Yi4uOGQ5ZDg1YmYyNmU0NzJmMGFkMWJkYTExODQ4ZTQzOGExNTY3NjE5YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC02MDMxLDE3ICs2MDMxLDE3IEBAIHNp
emVfdCBIVE1MTWVkaWFFbGVtZW50OjptYXhpbXVtU291cmNlQnVmZmVyU2l6ZShjb25zdCBTb3Vy
Y2VCdWZmZXImIGJ1ZmZlcikgY29uCiB9CiAjZW5kaWYKIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpwYXVzZVBsYXliYWNrKCkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c3VzcGVuZFBsYXliYWNr
KCkKIHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpwYXVzZVBsYXliYWNrKCVw
KSAtIHBhdXNlZCA9ICVzIiwgdGhpcywgYm9vbFN0cmluZyhwYXVzZWQoKSkpOwogICAgIGlmICgh
cGF1c2VkKCkpCiAgICAgICAgIHBhdXNlKCk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
cmVzdW1lUGxheWJhY2soKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptYXlSZXN1bWVQbGF5YmFj
ayhib29sIHNob3VsZFJlc3VtZSkKIHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50
OjpyZXN1bWVQbGF5YmFjayglcCkgLSBwYXVzZWQgPSAlcyIsIHRoaXMsIGJvb2xTdHJpbmcocGF1
c2VkKCkpKTsKLSAgICBpZiAocGF1c2VkKCkpCisgICAgaWYgKHBhdXNlZCgpICYmIHNob3VsZFJl
c3VtZSkKICAgICAgICAgcGxheSgpOwogfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuaAppbmRleCA5ZTYxOTBiNDhhZDc4ZWJkYTdjNDhlZDVjODUzZGUzZWUxNGI4MWUw
Li42YTE2NmU1YWI4YzBiMGNlZjE5ODU1OTg1YjlmMGQyOWMzMGUxZDFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtNzA3LDggKzcwNyw4IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCBNZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBtZWRpYVR5cGUoKSBjb25zdCBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIE1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHByZXNlbnRhdGlvblR5
cGUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIE1lZGlhU2Vzc2lvbjo6RGlzcGxheVR5
cGUgZGlzcGxheVR5cGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcGF1c2VQ
bGF5YmFjaygpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZXN1bWVQbGF5YmFjaygpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kUGxheWJhY2soKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgbWF5UmVzdW1lUGxheWJhY2soYm9vbCBzaG91bGRSZXN1bWUpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhU2Vzc2lvblRpdGxlKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCBkb3VibGUgbWVkaWFTZXNzaW9uRHVyYXRpb24oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBkdXJhdGlvbigpOyB9CiAgICAgdmlydHVhbCBkb3VibGUgbWVkaWFTZXNz
aW9uQ3VycmVudFRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBjdXJyZW50VGltZSgpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcAppbmRl
eCBmNGRiNGZlZjA0NWVjOTc4NDNmMDA5MTU1ZjRhYWQxMDAzNDQxNGQ3Li5hZTk1NTAyM2JmMzJl
MjZjY2ZlNDMwNmQ1OTBiMmM1NDY3ZjJiZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAKQEAgLTg2LDkgKzg2LDEwIEBAIHNpemVfdCBBdWRp
b1Nlc3Npb246Om51bWJlck9mT3V0cHV0Q2hhbm5lbHMoKSBjb25zdAogICAgIHJldHVybiAwOwog
fQogCi12b2lkIEF1ZGlvU2Vzc2lvbjo6c2V0QWN0aXZlKGJvb2wpCitib29sIEF1ZGlvU2Vzc2lv
bjo6dHJ5VG9TZXRBY3RpdmUoYm9vbCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiB0cnVlOwogfQogCiBzaXplX3QgQXVkaW9TZXNzaW9uOjpwcmVmZXJyZWRCdWZmZXJTaXpl
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlv
U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgK
aW5kZXggZDg5NzYzZTI0NDlmNzhlMzBmNGQ1MjRkNjczMGFhNjZmMmM1ZGE4ZS4uYzZjOTQ1MmZk
NGMyMDVmZmQ5YmU2NzBmZTYyOWZjNjM1NjFhZDNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAg
IGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdDsKICAgICBzaXplX3QgbnVtYmVyT2ZPdXRwdXRDaGFu
bmVscygpIGNvbnN0OwogCi0gICAgdm9pZCBzZXRBY3RpdmUoYm9vbCk7CisgICAgYm9vbCB0cnlU
b1NldEFjdGl2ZShib29sKTsKIAogICAgIHNpemVfdCBwcmVmZXJyZWRCdWZmZXJTaXplKCkgY29u
c3Q7CiAgICAgdm9pZCBzZXRQcmVmZXJyZWRCdWZmZXJTaXplKHNpemVfdCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uLmNwcAppbmRleCA2ZjY4ZDcwMGU1
ZjYyYjMwMjgyMGEyZTE5ZTNhMjFlZmI2NTZmM2Q5Li4xOGVhODIzY2I5MTkwYzg2MDdmOWI1MmNk
YzYzODAxNWY0MTRhNDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9NZWRpYVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01l
ZGlhU2Vzc2lvbi5jcHAKQEAgLTg4LDggKzg4LDggQEAgdm9pZCBNZWRpYVNlc3Npb246OmJlZ2lu
SW50ZXJydXB0aW9uKEludGVycnVwdGlvblR5cGUgdHlwZSkKIAogICAgIG1fc3RhdGVUb1Jlc3Rv
cmUgPSBzdGF0ZSgpOwogICAgIG1fbm90aWZ5aW5nQ2xpZW50ID0gdHJ1ZTsKLSAgICBjbGllbnQo
KS5wYXVzZVBsYXliYWNrKCk7CiAgICAgc2V0U3RhdGUoSW50ZXJydXB0ZWQpOworICAgIGNsaWVu
dCgpLnN1c3BlbmRQbGF5YmFjaygpOwogICAgIG1fbm90aWZ5aW5nQ2xpZW50ID0gZmFsc2U7CiB9
CiAKQEAgLTEwOSwyOCArMTA5LDM1IEBAIHZvaWQgTWVkaWFTZXNzaW9uOjplbmRJbnRlcnJ1cHRp
b24oRW5kSW50ZXJydXB0aW9uRmxhZ3MgZmxhZ3MpCiAgICAgbV9zdGF0ZVRvUmVzdG9yZSA9IElk
bGU7CiAgICAgc2V0U3RhdGUoUGF1c2VkKTsKIAotICAgIGlmIChmbGFncyAmIE1heVJlc3VtZVBs
YXlpbmcgJiYgc3RhdGVUb1Jlc3RvcmUgPT0gUGxheWluZykgewotICAgICAgICBMT0coTWVkaWEs
ICJNZWRpYVNlc3Npb246OmVuZEludGVycnVwdGlvbiAtIHJlc3VtaW5nIHBsYXliYWNrIik7Ci0g
ICAgICAgIGNsaWVudCgpLnJlc3VtZVBsYXliYWNrKCk7Ci0gICAgfQorICAgIGJvb2wgc2hvdWxk
UmVzdW1lID0gZmxhZ3MgJiBNYXlSZXN1bWVQbGF5aW5nICYmIHN0YXRlVG9SZXN0b3JlID09IFBs
YXlpbmc7CisgICAgY2xpZW50KCkubWF5UmVzdW1lUGxheWJhY2soc2hvdWxkUmVzdW1lKTsKIH0K
IAogYm9vbCBNZWRpYVNlc3Npb246OmNsaWVudFdpbGxCZWdpblBsYXliYWNrKCkKIHsKKyAgICBp
ZiAobV9ub3RpZnlpbmdDbGllbnQpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKCFN
ZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuc2Vzc2lvbldpbGxCZWdpblBsYXli
YWNrKCp0aGlzKSkgeworICAgICAgICBpZiAoc3RhdGUoKSA9PSBJbnRlcnJ1cHRlZCkKKyAgICAg
ICAgICAgIG1fc3RhdGVUb1Jlc3RvcmUgPSBQbGF5aW5nOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCiAgICAgc2V0U3RhdGUoUGxheWluZyk7Ci0gICAgTWVkaWFTZXNzaW9uTWFuYWdl
cjo6c2hhcmVkTWFuYWdlcigpLnNlc3Npb25XaWxsQmVnaW5QbGF5YmFjaygqdGhpcyk7CiAgICAg
dXBkYXRlQ2xpZW50RGF0YUJ1ZmZlcmluZygpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBib29s
IE1lZGlhU2Vzc2lvbjo6Y2xpZW50V2lsbFBhdXNlUGxheWJhY2soKQogeworICAgIGlmIChtX25v
dGlmeWluZ0NsaWVudCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKICAgICBMT0coTWVkaWEsICJN
ZWRpYVNlc3Npb246OmNsaWVudFdpbGxQYXVzZVBsYXliYWNrKCVwKS0gc3RhdGUgPSAlcyIsIHRo
aXMsIHN0YXRlTmFtZShtX3N0YXRlKSk7CiAgICAgaWYgKHN0YXRlKCkgPT0gSW50ZXJydXB0ZWQp
IHsKLSAgICAgICAgaWYgKCFtX25vdGlmeWluZ0NsaWVudCkgewotICAgICAgICAgICAgbV9zdGF0
ZVRvUmVzdG9yZSA9IFBhdXNlZDsKLSAgICAgICAgICAgIExPRyhNZWRpYSwgIiAgICAgIHNldHRp
bmcgc3RhdGVUb1Jlc3RvcmUgdG8gXCJQYXVzZWRcIiIpOwotICAgICAgICB9CisgICAgICAgIG1f
c3RhdGVUb1Jlc3RvcmUgPSBQYXVzZWQ7CisgICAgICAgIExPRyhNZWRpYSwgIiAgICAgIHNldHRp
bmcgc3RhdGVUb1Jlc3RvcmUgdG8gXCJQYXVzZWRcIiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogICAgIApAQCAtMTQ0LDcgKzE1MSw3IEBAIGJvb2wgTWVkaWFTZXNzaW9uOjpjbGll
bnRXaWxsUGF1c2VQbGF5YmFjaygpCiB2b2lkIE1lZGlhU2Vzc2lvbjo6cGF1c2VTZXNzaW9uKCkK
IHsKICAgICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb246OnBhdXNlU2Vzc2lvbiglcCkiLCB0aGlz
KTsKLSAgICBtX2NsaWVudC5wYXVzZVBsYXliYWNrKCk7CisgICAgbV9jbGllbnQuc3VzcGVuZFBs
YXliYWNrKCk7CiB9CiAKIE1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIE1lZGlhU2Vzc2lvbjo6bWVk
aWFUeXBlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L01lZGlhU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNz
aW9uLmgKaW5kZXggNmQ3NTRjNmJlNTU2ZTAzOTRhZDMwYTdjYTA2MzQ4ZjBlYTE2MWZlYS4uZTk3
NzgxNDE3ZDZkMGE5OGEzMmRkYmY3YjhlYTZjODU0NTYzYzYzNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uLmgKQEAgLTE0OSw4ICsxNDksOCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBNZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBwcmVzZW50YXRpb25UeXBl
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgTWVkaWFTZXNzaW9uOjpEaXNwbGF5VHlwZSBkaXNw
bGF5VHlwZSgpIGNvbnN0IHsgcmV0dXJuIE1lZGlhU2Vzc2lvbjo6Tm9ybWFsOyB9CiAKLSAgICB2
aXJ0dWFsIHZvaWQgcmVzdW1lUGxheWJhY2soKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBhdXNl
UGxheWJhY2soKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG1heVJlc3VtZVBsYXliYWNrKGJvb2wg
c2hvdWxkUmVzdW1lKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN1c3BlbmRQbGF5YmFjaygpID0g
MDsKIAogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhU2Vzc2lvblRpdGxlKCkgY29uc3Q7CiAgICAg
dmlydHVhbCBkb3VibGUgbWVkaWFTZXNzaW9uRHVyYXRpb24oKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKaW5k
ZXggZTEzMGMyY2FmZjRhNmU1YmQ0Mjc3MzMxMTcyYTRhMzFlZDRjNGZkZS4uNWMwNGJmMmNiZTZh
YTZiNjVkYzAzNDQ3NTg0MzMyMDU4MGYyNWU5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKQEAgLTI4LDYgKzI4LDcg
QEAKIAogI2lmIEVOQUJMRShWSURFTykKIAorI2luY2x1ZGUgIkF1ZGlvU2Vzc2lvbi5oIgogI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUg
Ik1lZGlhU2Vzc2lvbi5oIgpAQCAtMTY2LDcgKzE2Nyw3IEBAIE1lZGlhU2Vzc2lvbk1hbmFnZXI6
OlNlc3Npb25SZXN0cmljdGlvbnMgTWVkaWFTZXNzaW9uTWFuYWdlcjo6cmVzdHJpY3Rpb25zKE1l
ZGlhCiAgICAgcmV0dXJuIG1fcmVzdHJpY3Rpb25zW3R5cGVdOwogfQogCi12b2lkIE1lZGlhU2Vz
c2lvbk1hbmFnZXI6OnNlc3Npb25XaWxsQmVnaW5QbGF5YmFjayhNZWRpYVNlc3Npb24mIHNlc3Np
b24pCitib29sIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25XaWxsQmVnaW5QbGF5YmFjayhN
ZWRpYVNlc3Npb24mIHNlc3Npb24pCiB7CiAgICAgTE9HKE1lZGlhLCAiTWVkaWFTZXNzaW9uTWFu
YWdlcjo6c2Vzc2lvbldpbGxCZWdpblBsYXliYWNrIC0gJXAiLCAmc2Vzc2lvbik7CiAgICAgCkBA
IC0xNzQsOCArMTc1LDE5IEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxC
ZWdpblBsYXliYWNrKE1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikKIAogICAgIE1lZGlhU2Vzc2lvbjo6
TWVkaWFUeXBlIHNlc3Npb25UeXBlID0gc2Vzc2lvbi5tZWRpYVR5cGUoKTsKICAgICBTZXNzaW9u
UmVzdHJpY3Rpb25zIHJlc3RyaWN0aW9ucyA9IG1fcmVzdHJpY3Rpb25zW3Nlc3Npb25UeXBlXTsK
KyAgICBpZiAoc2Vzc2lvbi5zdGF0ZSgpID09IE1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0ZWQgJiYg
cmVzdHJpY3Rpb25zICYgSW50ZXJydXB0ZWRQbGF5YmFja05vdFBlcm1pdHRlZCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisjaWYgVVNFKEFVRElPX1NFU1NJT04pCisgICAgaWYgKGFjdGl2ZUF1
ZGlvU2Vzc2lvblJlcXVpcmVkKCkgJiYgIUF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpLnRy
eVRvU2V0QWN0aXZlKHRydWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKworICAg
IGlmIChtX2ludGVycnVwdGVkKQorICAgICAgICBlbmRJbnRlcnJ1cHRpb24oTWVkaWFTZXNzaW9u
OjpOb0ZsYWdzKTsKKwogICAgIGlmICghcmVzdHJpY3Rpb25zICYgQ29uY3VycmVudFBsYXliYWNr
Tm90UGVybWl0dGVkKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogCiAg
ICAgVmVjdG9yPE1lZGlhU2Vzc2lvbio+IHNlc3Npb25zID0gbV9zZXNzaW9uczsKICAgICBmb3Ig
KGF1dG8qIG9uZVNlc3Npb24gOiBzZXNzaW9ucykgewpAQCAtMTg4LDYgKzIwMCw3IEBAIHZvaWQg
TWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKE1lZGlhU2Vzc2lv
biYgc2Vzc2lvbikKICAgICB9CiAgICAgCiAgICAgdXBkYXRlU2Vzc2lvblN0YXRlKCk7CisgICAg
cmV0dXJuIHRydWU7CiB9CiAgICAgCiB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25X
aWxsRW5kUGxheWJhY2soTWVkaWFTZXNzaW9uJiBzZXNzaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5oCmluZGV4IGM0NTU5NWUy
NjNlNmZlM2Q4Mzk0ZDBlZjAyODdlZWE1NzQ4ZTA4ZTEuLjI5NmRjZDUzMjliNjQ3OGYxZTA1MmY4
OTkwNmU3MTViYWM2YzliMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmgKQEAgLTYzLDYgKzYzLDcgQEAgcHVibGljOgogICAg
ICAgICBBdXRvUHJlbG9hZGluZ05vdFBlcm1pdHRlZCA9IDEgPDwgMywKICAgICAgICAgQmFja2dy
b3VuZFByb2Nlc3NQbGF5YmFja1Jlc3RyaWN0ZWQgPSAxIDw8IDQsCiAgICAgICAgIEJhY2tncm91
bmRUYWJQbGF5YmFja1Jlc3RyaWN0ZWQgPSAxIDw8IDUsCisgICAgICAgIEludGVycnVwdGVkUGxh
eWJhY2tOb3RQZXJtaXR0ZWQgPSAxIDw8IDYsCiAgICAgfTsKICAgICB0eXBlZGVmIHVuc2lnbmVk
IFNlc3Npb25SZXN0cmljdGlvbnM7CiAKQEAgLTcxLDcgKzcyLDcgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIFNlc3Npb25SZXN0cmljdGlvbnMgcmVzdHJpY3Rpb25zKE1lZGlhU2Vzc2lv
bjo6TWVkaWFUeXBlKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRSZXN0cmljdGlvbnMoKTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBzZXNzaW9uV2lsbEJlZ2luUGxheWJhY2soTWVkaWFTZXNzaW9uJik7
CisgICAgdmlydHVhbCBib29sIHNlc3Npb25XaWxsQmVnaW5QbGF5YmFjayhNZWRpYVNlc3Npb24m
KTsKICAgICB2aXJ0dWFsIHZvaWQgc2Vzc2lvbldpbGxFbmRQbGF5YmFjayhNZWRpYVNlc3Npb24m
KTsKIAogICAgIGJvb2wgc2Vzc2lvblJlc3RyaWN0c0lubGluZVZpZGVvUGxheWJhY2soY29uc3Qg
TWVkaWFTZXNzaW9uJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5jcHAKaW5kZXggYjQ0YjBjZWMyOTFk
OGJlNzBhYzI0ZmM1Y2E4ZWJkNGZmOTk1ZGU4NC4uOWQ4ZDFlMTRhNmFiOWVmZTA0YTk5NmFiNjZj
NjgxMDMwNzg5NzM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
aW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmNwcApAQCAtMTAwLDcgKzEwMCw2IEBAIEF1
ZGlvRGVzdGluYXRpb25JT1M6OkF1ZGlvRGVzdGluYXRpb25JT1MoQXVkaW9JT0NhbGxiYWNrJiBj
YWxsYmFjaywgZG91YmxlIHNhbXBsCiAgICAgOiBtX291dHB1dFVuaXQoMCkKICAgICAsIG1fY2Fs
bGJhY2soY2FsbGJhY2spCiAgICAgLCBtX3JlbmRlckJ1cyhBdWRpb0J1czo6Y3JlYXRlKDIsIGtS
ZW5kZXJCdWZmZXJTaXplLCBmYWxzZSkpCi0gICAgLCBtX21lZGlhU2Vzc2lvbihNZWRpYVNlc3Np
b246OmNyZWF0ZSgqdGhpcykpCiAgICAgLCBtX3NhbXBsZVJhdGUoc2FtcGxlUmF0ZSkKICAgICAs
IG1faXNQbGF5aW5nKGZhbHNlKQogewpAQCAtMTg0LDEwICsxODMsNiBAQCB2b2lkIEF1ZGlvRGVz
dGluYXRpb25JT1M6OmNvbmZpZ3VyZSgpCiB2b2lkIEF1ZGlvRGVzdGluYXRpb25JT1M6OnN0YXJ0
KCkKIHsKICAgICBMT0coTWVkaWEsICJBdWRpb0Rlc3RpbmF0aW9uSU9TOjpzdGFydCIpOwotICAg
IGlmICghbV9tZWRpYVNlc3Npb24tPmNsaWVudFdpbGxCZWdpblBsYXliYWNrKCkpIHsKLSAgICAg
ICAgTE9HKE1lZGlhLCAiICByZXR1cm5pbmcgYmVjYXVzZSBvZiBpbnRlcnJ1cHRpb24iKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIE9TU3RhdHVzIHJlc3VsdCA9IEF1ZGlvT3V0cHV0
VW5pdFN0YXJ0KG1fb3V0cHV0VW5pdCk7CiAgICAgaWYgKCFyZXN1bHQpCkBAIC0xOTcsMTAgKzE5
Miw2IEBAIHZvaWQgQXVkaW9EZXN0aW5hdGlvbklPUzo6c3RhcnQoKQogdm9pZCBBdWRpb0Rlc3Rp
bmF0aW9uSU9TOjpzdG9wKCkKIHsKICAgICBMT0coTWVkaWEsICJBdWRpb0Rlc3RpbmF0aW9uSU9T
OjpzdG9wIik7Ci0gICAgaWYgKCFtX21lZGlhU2Vzc2lvbi0+Y2xpZW50V2lsbFBhdXNlUGxheWJh
Y2soKSkgewotICAgICAgICBMT0coTWVkaWEsICIgIHJldHVybmluZyBiZWNhdXNlIG9mIGludGVy
cnVwdGlvbiIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgT1NTdGF0dXMgcmVzdWx0
ID0gQXVkaW9PdXRwdXRVbml0U3RvcChtX291dHB1dFVuaXQpOwogICAgIGlmICghcmVzdWx0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGlu
YXRpb25JT1MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3Rp
bmF0aW9uSU9TLmgKaW5kZXggNjRhZjExYWJjYTIxMWRjMThiNTNjOWM4YTM5YmVkYmUxNDEyNmU2
MC4uODEyNDg3YTMzZmYwYThjNjNhZWE0YTBjYzdkNDc4OTY3NmNmZTNhMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklP
Uy5oCkBAIC0zMiw3ICszMiw2IEBACiAKICNpbmNsdWRlICJBdWRpb0J1cy5oIgogI2luY2x1ZGUg
IkF1ZGlvRGVzdGluYXRpb24uaCIKLSNpbmNsdWRlICJNZWRpYVNlc3Npb24uaCIKICNpbmNsdWRl
IDxBdWRpb1VuaXQvQXVkaW9Vbml0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC00
MCw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gQW4gQXVkaW9EZXN0aW5hdGlv
biB1c2luZyBDb3JlQXVkaW8ncyBkZWZhdWx0IG91dHB1dCBBdWRpb1VuaXQKIAotY2xhc3MgQXVk
aW9EZXN0aW5hdGlvbklPUyBmaW5hbCA6IHB1YmxpYyBBdWRpb0Rlc3RpbmF0aW9uLCBwcml2YXRl
IE1lZGlhU2Vzc2lvbkNsaWVudCB7CitjbGFzcyBBdWRpb0Rlc3RpbmF0aW9uSU9TIGZpbmFsIDog
cHVibGljIEF1ZGlvRGVzdGluYXRpb24gewogcHVibGljOgogICAgIEF1ZGlvRGVzdGluYXRpb25J
T1MoQXVkaW9JT0NhbGxiYWNrJiwgZG91YmxlIHNhbXBsZVJhdGUpOwogICAgIHZpcnR1YWwgfkF1
ZGlvRGVzdGluYXRpb25JT1MoKTsKQEAgLTU0LDE1ICs1Myw2IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCBib29sIGlzUGxheWluZygpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNQbGF5aW5nOyB9CiAg
ICAgdmlydHVhbCBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9z
YW1wbGVSYXRlOyB9CiAKLSAgICAvLyBNZWRpYVNlc3Npb25DbGllbnQKLSAgICB2aXJ0dWFsIE1l
ZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIG1lZGlhVHlwZSgpIGNvbnN0IHsgcmV0dXJuIE1lZGlhU2Vz
c2lvbjo6V2ViQXVkaW87IH0KLSAgICB2aXJ0dWFsIE1lZGlhU2Vzc2lvbjo6TWVkaWFUeXBlIHBy
ZXNlbnRhdGlvblR5cGUoKSBjb25zdCB7IHJldHVybiBNZWRpYVNlc3Npb246OldlYkF1ZGlvOyB9
Ci0gICAgdmlydHVhbCBib29sIGNhblJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVtb3RlQ29u
dHJvbENvbW1hbmQoTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUpIHsgfQot
ICAgIHZpcnR1YWwgYm9vbCBvdmVycmlkZUJhY2tncm91bmRQbGF5YmFja1Jlc3RyaWN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcGF1c2VQbGF5YmFjaygp
IG92ZXJyaWRlIHsgc3RvcCgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlc3VtZVBsYXliYWNrKCkg
b3ZlcnJpZGUgeyBzdGFydCgpOyB9Ci0KICAgICAvLyBEZWZhdWx0T3V0cHV0VW5pdCBjYWxsYmFj
awogICAgIHN0YXRpYyBPU1N0YXR1cyBpbnB1dFByb2Modm9pZCogdXNlckRhdGEsIEF1ZGlvVW5p
dFJlbmRlckFjdGlvbkZsYWdzKiwgY29uc3QgQXVkaW9UaW1lU3RhbXAqLCBVSW50MzIgYnVzTnVt
YmVyLCBVSW50MzIgbnVtYmVyT2ZGcmFtZXMsIEF1ZGlvQnVmZmVyTGlzdCogaW9EYXRhKTsKICAg
ICBzdGF0aWMgdm9pZCBmcmFtZVNpemVDaGFuZ2VkUHJvYyh2b2lkICppblJlZkNvbiwgQXVkaW9V
bml0IGluVW5pdCwgQXVkaW9Vbml0UHJvcGVydHlJRCBpbklELCBBdWRpb1VuaXRTY29wZSBpblNj
b3BlLCBBdWRpb1VuaXRFbGVtZW50IGluRWxlbWVudCk7CkBAIC03NSw3ICs2NSw2IEBAIHByaXZh
dGU6CiAgICAgQXVkaW9Vbml0IG1fb3V0cHV0VW5pdDsKICAgICBBdWRpb0lPQ2FsbGJhY2smIG1f
Y2FsbGJhY2s7CiAgICAgUmVmUHRyPEF1ZGlvQnVzPiBtX3JlbmRlckJ1czsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8TWVkaWFTZXNzaW9uPiBtX21lZGlhU2Vzc2lvbjsKIAogICAgIGRvdWJsZSBtX3Nh
bXBsZVJhdGU7CiAgICAgYm9vbCBtX2lzUGxheWluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tCmluZGV4IGZmZTk3YmM3OGEx
Yjg0Mjk2Y2NiOWQxNjZjYzZmNTU4YjBjYjg1ZjIuLmJkOGM3NWJiZDJlMTE2NzljZTk2NmYyN2U3
Yzg3NmVhNzhlZThhNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2lvcy9BdWRpb1Nlc3Npb25JT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbQpAQCAtMTc2LDExICsxNzYsMTEgQEAgc2l6ZV90IEF1
ZGlvU2Vzc2lvbjo6bnVtYmVyT2ZPdXRwdXRDaGFubmVscygpIGNvbnN0CiAgICAgcmV0dXJuIFtb
QVZBdWRpb1Nlc3Npb24gc2hhcmVkSW5zdGFuY2VdIG91dHB1dE51bWJlck9mQ2hhbm5lbHNdOwog
fQogCi12b2lkIEF1ZGlvU2Vzc2lvbjo6c2V0QWN0aXZlKGJvb2wgYWN0aXZlKQorYm9vbCBBdWRp
b1Nlc3Npb246OnRyeVRvU2V0QWN0aXZlKGJvb2wgYWN0aXZlKQogewogICAgIE5TRXJyb3IgKmVy
cm9yID0gbmlsOwogICAgIFtbQVZBdWRpb1Nlc3Npb24gc2hhcmVkSW5zdGFuY2VdIHNldEFjdGl2
ZTphY3RpdmUgZXJyb3I6JmVycm9yXTsKLSAgICBBU1NFUlQoIWVycm9yKTsKKyAgICByZXR1cm4g
IWVycm9yOwogfQogCiBzaXplX3QgQXVkaW9TZXNzaW9uOjpwcmVmZXJyZWRCdWZmZXJTaXplKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRp
YVNlc3Npb25NYW5hZ2VySU9TLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3Mv
TWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oCmluZGV4IDYxY2MwMjFmM2Y1ZjJmYmZlYTI0YmVlZjdi
Y2YyZWU5YzhlMzFmMDAuLjkzZWNiY2VjNjRiMGVhNzUxZWQ2NjE0MGRlMjFiZjM2MjEzMGRlZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Np
b25NYW5hZ2VySU9TLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01l
ZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaApAQCAtNTMsNyArNTMsNyBAQCBwcml2YXRlOgogCiAgICAg
TWVkaWFTZXNzaW9uTWFuYWdlcmlPUygpOwogCi0gICAgdmlydHVhbCB2b2lkIHNlc3Npb25XaWxs
QmVnaW5QbGF5YmFjayhNZWRpYVNlc3Npb24mKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wg
c2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKE1lZGlhU2Vzc2lvbiYpIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCBzZXNzaW9uV2lsbEVuZFBsYXliYWNrKE1lZGlhU2Vzc2lvbiYpIG92ZXJyaWRl
OwogICAgIAogICAgIHZvaWQgdXBkYXRlTm93UGxheWluZ0luZm8oKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJ
T1MubW0KaW5kZXggNjYwMDQ4MWQ2NzFjNmEyNDI1OWYwNGFiNjM3ZTBhNmU5MmIyMzI4Yy4uNzA5
NDY3ZTJhZTgyNGY1MTU3NWFmZDhmMzYwOTRkOWI1MjdlYmU0OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJ
T1MubW0KQEAgLTE4NCwxMCArMTg0LDEzIEBAIHZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6
Y29uZmlndXJlV2lyZUxlc3NUYXJnZXRNb25pdG9yaW5nKCkKICAgICAgICAgW21fb2JqY09ic2Vy
dmVyIHN0b3BNb25pdG9yaW5nQWlyUGxheVJvdXRlc107CiB9CiAKLXZvaWQgTWVkaWFTZXNzaW9u
TWFuYWdlcmlPUzo6c2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKE1lZGlhU2Vzc2lvbiYgc2Vzc2lv
bikKK2Jvb2wgTWVkaWFTZXNzaW9uTWFuYWdlcmlPUzo6c2Vzc2lvbldpbGxCZWdpblBsYXliYWNr
KE1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikKIHsKLSAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNz
aW9uV2lsbEJlZ2luUGxheWJhY2soc2Vzc2lvbik7CisgICAgaWYgKCFNZWRpYVNlc3Npb25NYW5h
Z2VyOjpzZXNzaW9uV2lsbEJlZ2luUGxheWJhY2soc2Vzc2lvbikpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKwogICAgIHVwZGF0ZU5vd1BsYXlpbmdJbmZvKCk7CisgICAgcmV0dXJuIHRydWU7CiB9
CiAgICAgCiB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnNlc3Npb25XaWxsRW5kUGxheWJh
Y2soTWVkaWFTZXNzaW9uJiBzZXNzaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuY3BwCmluZGV4IDBhYWUxZmM1
YTNhZDgzNmZjYjM2ODA4ODViYjI5NjBkZGM4ZWY5ZjkuLmRjM2ExYjU0ZWQ0M2I3NDI4OThlNTkz
OWE3YWRjZmMzOGY0ZTE1M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5jcHAKQEAgLTg1LDcgKzg1LDYgQEAg
QXVkaW9EZXN0aW5hdGlvbk1hYzo6QXVkaW9EZXN0aW5hdGlvbk1hYyhBdWRpb0lPQ2FsbGJhY2sm
IGNhbGxiYWNrLCBmbG9hdCBzYW1wbGUKICAgICAsIG1fcmVuZGVyQnVzKEF1ZGlvQnVzOjpjcmVh
dGUoMiwga0J1ZmZlclNpemUsIGZhbHNlKSkKICAgICAsIG1fc2FtcGxlUmF0ZShzYW1wbGVSYXRl
KQogICAgICwgbV9pc1BsYXlpbmcoZmFsc2UpCi0gICAgLCBtX21lZGlhU2Vzc2lvbihNZWRpYVNl
c3Npb246OmNyZWF0ZSgqdGhpcykpCiB7CiAgICAgLy8gT3BlbiBhbmQgaW5pdGlhbGl6ZSBEZWZh
dWx0T3V0cHV0VW5pdAogICAgIEF1ZGlvQ29tcG9uZW50IGNvbXA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuaAppbmRl
eCAyMDAyNmY3YTdkNTExNGQ4NTIwNWM5ZmZjMDg2YWNhYTc0NzEwODZhLi45ZTg2OWQwYjhkYWVk
NGY2OTkyYjNkOTNkNjg4ZmIyY2FiOWU2NzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmgKQEAgLTMxLDcgKzMx
LDYgQEAKIAogI2luY2x1ZGUgIkF1ZGlvQnVzLmgiCiAjaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlv
bi5oIgotI2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgogI2luY2x1ZGUgPEF1ZGlvVW5pdC9BdWRp
b1VuaXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTM5LDcgKzM4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAvLyBBbiBBdWRpb0Rlc3RpbmF0aW9uIHVzaW5nIENvcmVBdWRp
bydzIGRlZmF1bHQgb3V0cHV0IEF1ZGlvVW5pdAogCi1jbGFzcyBBdWRpb0Rlc3RpbmF0aW9uTWFj
IDogcHVibGljIEF1ZGlvRGVzdGluYXRpb24sIHB1YmxpYyBNZWRpYVNlc3Npb25DbGllbnQgewor
Y2xhc3MgQXVkaW9EZXN0aW5hdGlvbk1hYyA6IHB1YmxpYyBBdWRpb0Rlc3RpbmF0aW9uIHsKIHB1
YmxpYzoKICAgICBBdWRpb0Rlc3RpbmF0aW9uTWFjKEF1ZGlvSU9DYWxsYmFjayYsIGZsb2F0IHNh
bXBsZVJhdGUpOwogICAgIHZpcnR1YWwgfkF1ZGlvRGVzdGluYXRpb25NYWMoKTsKQEAgLTUzLDE5
ICs1Miw5IEBAIHByaXZhdGU6CiAgICAgT1NTdGF0dXMgcmVuZGVyKFVJbnQzMiBudW1iZXJPZkZy
YW1lcywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpOwogICAgIHZvaWQgc2V0SXNQbGF5aW5nKGJv
b2wpOwogCi0gICAgdmlydHVhbCBNZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBtZWRpYVR5cGUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBNZWRpYVNlc3Npb246OldlYkF1ZGlvOyB9Ci0gICAgdmly
dHVhbCBNZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBwcmVzZW50YXRpb25UeXBlKCkgY29uc3QgeyBy
ZXR1cm4gTWVkaWFTZXNzaW9uOjpXZWJBdWRpbzsgfQotICAgIHZpcnR1YWwgYm9vbCBjYW5SZWNl
aXZlUmVtb3RlQ29udHJvbENvbW1hbmRzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKE1lZGlh
U2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgb3ZlcnJpZGVCYWNrZ3JvdW5kUGxheWJhY2tSZXN0cmljdGlvbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0KICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9v
bCBpc1BsYXlpbmcoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzUGxheWluZzsgfQotCi0gICAgdmly
dHVhbCB2b2lkIHBhdXNlUGxheWJhY2soKSBvdmVycmlkZSB7IHN0b3AoKTsgfQotICAgIHZpcnR1
YWwgdm9pZCByZXN1bWVQbGF5YmFjaygpIG92ZXJyaWRlIHsgc3RhcnQoKTsgfQotCiAgICAgdmly
dHVhbCBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zYW1wbGVS
YXRlOyB9CiAKICAgICBBdWRpb1VuaXQgbV9vdXRwdXRVbml0OwpAQCAtNzQsMTAgKzYzLDYgQEAg
cHJpdmF0ZToKIAogICAgIGZsb2F0IG1fc2FtcGxlUmF0ZTsKICAgICBib29sIG1faXNQbGF5aW5n
OwotCi0jaWYgVVNFKEFVRElPX1NFU1NJT04pCi0gICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhU2Vz
c2lvbj4gbV9tZWRpYVNlc3Npb247Ci0jZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nl
c3Npb25NYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vz
c2lvbk1hYy5jcHAKaW5kZXggYzkyYTM4MDdmNmI2OWMzYWM0NTkzMTI3ODRkOWQ3ZmI4Mzg5MmU0
NS4uMWQyODRmNmM1MWYwNTBlMzUzN2M5YmZmZWY1MjIzY2ZiYjQzMzVlNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5jcHAK
QEAgLTEwNyw5ICsxMDcsMTAgQEAgc2l6ZV90IEF1ZGlvU2Vzc2lvbjo6bnVtYmVyT2ZPdXRwdXRD
aGFubmVscygpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgQXVkaW9TZXNzaW9uOjpz
ZXRBY3RpdmUoYm9vbCkKK2Jvb2wgQXVkaW9TZXNzaW9uOjp0cnlUb1NldEFjdGl2ZShib29sKQog
ewogICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHNpemVfdCBB
dWRpb1Nlc3Npb246OnByZWZlcnJlZEJ1ZmZlclNpemUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL01lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL01lZGlhU2Vzc2lvbk1hbmFnZXJN
YWMuY3BwCmluZGV4IGFhZmNiZDI0ODBiY2VmMzJlYWRkOGE3ODQ2NjVhZDFhNDljNjI0MDUuLmY1
YjI4ODUwZGQ0MThlN2YwM2Y2MTU3MTBmNWFmNzEzZmU4MWQ5ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9NZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvTWVkaWFTZXNzaW9uTWFuYWdl
ck1hYy5jcHAKQEAgLTU3LDkgKzU3LDYgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjp1cGRh
dGVTZXNzaW9uU3RhdGUoKQogICAgIH0KIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICBpZiAoYWN0
aXZlQXVkaW9TZXNzaW9uUmVxdWlyZWQoKSkKLSAgICAgICAgQXVkaW9TZXNzaW9uOjpzaGFyZWRT
ZXNzaW9uKCkuc2V0QWN0aXZlKHRydWUpOwotCiAgICAgaWYgKCFTZXR0aW5nczo6c2hvdWxkTWFu
YWdlQXVkaW9TZXNzaW9uQ2F0ZWdvcnkoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggMmRlNGMyNzQwM2QwYmQ0YzkwMmFiYjE4YmNkZDRj
MTJmN2ZjOWM1Ny4uODlkMWY4YmMxMWY1YWY2NzljMDY3NTExZjY5NGU3MjFlY2NkMWEzMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMjQ2Nyw2ICsyNDY3LDggQEAgdm9p
ZCBJbnRlcm5hbHM6OnNldE1lZGlhU2Vzc2lvblJlc3RyaWN0aW9ucyhjb25zdCBTdHJpbmcmIG1l
ZGlhVHlwZVN0cmluZywgY29uc3QKICAgICAgICAgcmVzdHJpY3Rpb25zICs9IE1lZGlhU2Vzc2lv
bk1hbmFnZXI6OkJhY2tncm91bmRQcm9jZXNzUGxheWJhY2tSZXN0cmljdGVkOwogICAgIGlmIChl
cXVhbElnbm9yaW5nQ2FzZShyZXN0cmljdGlvbnNTdHJpbmcsICJCYWNrZ3JvdW5kVGFiUGxheWJh
Y2tSZXN0cmljdGVkIikpCiAgICAgICAgIHJlc3RyaWN0aW9ucyArPSBNZWRpYVNlc3Npb25NYW5h
Z2VyOjpCYWNrZ3JvdW5kVGFiUGxheWJhY2tSZXN0cmljdGVkOworICAgIGlmIChlcXVhbElnbm9y
aW5nQ2FzZShyZXN0cmljdGlvbnNTdHJpbmcsICJJbnRlcnJ1cHRlZFBsYXliYWNrTm90UGVybWl0
dGVkIikpCisgICAgICAgIHJlc3RyaWN0aW9ucyArPSBNZWRpYVNlc3Npb25NYW5hZ2VyOjpJbnRl
cnJ1cHRlZFBsYXliYWNrTm90UGVybWl0dGVkOwogCiAgICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6
c2hhcmVkTWFuYWdlcigpLmFkZFJlc3RyaWN0aW9uKG1lZGlhVHlwZSwgcmVzdHJpY3Rpb25zKTsK
IH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCBiMjhmZGExYTFiNjU2NTMyNWY2MDI0MGYyYTgzMTZjMDE2YmYxZWFkLi41Yjc3
NWM1MGJmNzIzMDcwMTIzOThmZmQ4YWE4YmNhNWQxNjVkMTE4IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTUtMDMtMjggIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAg
ICAgW2lPU10gV2hlbiBXZWIgQXVkaW8gaXMgaW50ZXJydXB0ZWQgYnkgYSBwaG9uZSBjYWxsLCBp
dCBjYW5ub3QgYmUgcmVzdGFydGVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQzMTkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiB3ZWJhdWRpby9hdWRpb2NvbnRleHQtc3RhdGUtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJhdWRpby9hdWRpb2NvbnRleHQtc3RhdGUtaW50ZXJydXB0
ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJhdWRpby9hdWRpb2NvbnRleHQt
c3RhdGUtaW50ZXJydXB0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViYXVkaW8vYXVkaW9j
b250ZXh0LXN0YXRlLmh0bWw6IEFkZGVkLgorCiAyMDE1LTAzLTI2ICBCcmFkeSBFaWRzb24gIDxi
ZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBBcHBseSBDb250ZW50RXh0ZW5zaW9uIGFjdGlv
bnMgYWZ0ZXIgcmVkaXJlY3RzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVk
aW9jb250ZXh0LXN0YXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlv
Y29udGV4dC1zdGF0ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWE2OTY1ZmJkYWFjZGMwNzll
NTM5Mzk4NmU3MWFiNDBkNzIxNmY0MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmF1ZGlvL2F1ZGlvY29udGV4dC1zdGF0ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyNiBAQAor
QmFzaWMgdGVzdHMgZm9yIEF1ZGlvTm9kZSBBUEkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworUEFTUyBjb250ZXh0LnN0YXRlIGlzICJzdXNwZW5kZWQiCitub2RlLmNvbm5lY3QoY29u
dGV4dC5kZXN0aW5hdGlvbikKK1BBU1MgY29udGV4dC5zdGF0ZSBpcyAicnVubmluZyIKK0NhbGxp
bmcgY29udGV4dC5zdXNwZW5kKCkKK1BBU1MgY29udGV4dC5zdXNwZW5kKCkgcHJvbWlzZSByZXNv
bHZlZAorUEFTUyBjb250ZXh0LnN0YXRlIGlzICJzdXNwZW5kZWQiCitDYWxsaW5nIGNvbnRleHQu
cmVzdW1lKCkKK1BBU1MgY29udGV4dC5yZXN1bWUoKSBwcm9taXNlIHJlc29sdmVkCitQQVNTIGNv
bnRleHQuc3RhdGUgaXMgInJ1bm5pbmciCitDYWxsaW5nIGNvbnRleHQuY2xvc2UoKQorUEFTUyBj
b250ZXh0LmNsb3NlKCkgcHJvbWlzZSByZXNvbHZlZAorUEFTUyBjb250ZXh0LnN0YXRlIGlzICJj
bG9zZWQiCitDYWxsaW5nIGNvbnRleHQucmVzdW1lKCkgKHNob3VsZCBmYWlsKQorUEFTUyBjb250
ZXh0LnJlc3VtZSgpIHByb21pc2UgcmVqZWN0ZWQgKGNvcnJlY3RseSkKK1BBU1MgY29udGV4dC5z
dGF0ZSBpcyAiY2xvc2VkIgorQ2FsbGluZyBjb250ZXh0LnN1c3BlbmQoKSAoc2hvdWxkIGZhaWwp
CitQQVNTIGNvbnRleHQucmVzdW1lKCkgcHJvbWlzZSByZWplY3RlZCAoY29ycmVjdGx5KQorUEFT
UyBjb250ZXh0LnN0YXRlIGlzICJjbG9zZWQiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8v
YXVkaW9jb250ZXh0LXN0YXRlLWludGVycnVwdGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3dlYmF1ZGlvL2F1ZGlvY29udGV4dC1zdGF0ZS1pbnRlcnJ1cHRlZC1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYTM4NTExMWE2NmVkN2JmNmQ0ODFmNGI2ZGY3OTRmNjdhZjQ1ZTg2YgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvY29udGV4dC1zdGF0ZS1pbnRl
cnJ1cHRlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1MCBAQAorQmFzaWMgdGVzdHMgZm9yIEF1
ZGlvTm9kZSBBUEkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyBjb250ZXh0
LnN0YXRlIGlzICJzdXNwZW5kZWQiCitub2RlLmNvbm5lY3QoY29udGV4dC5kZXN0aW5hdGlvbikK
K0VWRU5UIHN0YXRlY2hhbmdlCitQQVNTIGNvbnRleHQuc3RhdGUgaXMgInJ1bm5pbmciCisKK1Rl
c3QgMTogcmVzdW1lKCkgd2hpbGUgaW50ZXJydXB0ZWQgaXMgcmVzb2x2ZWQgYWZ0ZXIgdGhlIGlu
dGVycnVwdGlvbiBlbmRzLgoraW50ZXJuYWxzLmJlZ2luTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9u
KCkKK0VWRU5UIHN0YXRlY2hhbmdlCitQQVNTIGNvbnRleHQuc3RhdGUgaXMgImludGVycnVwdGVk
IgoraW50ZXJuYWxzLnNldE1lZGlhU2Vzc2lvblJlc3RyaWN0aW9ucygiV2ViQXVkaW8iLCAiSW50
ZXJydXB0ZWRQbGF5YmFja05vdFBlcm1pdHRlZCIpCitDYWxsaW5nIGNvbnRleHQucmVzdW1lKCkK
K0RlbGF5aW5nIDEwMG1zCitQQVNTIGNvbnRleHQuc3RhdGUgaXMgImludGVycnVwdGVkIgoraW50
ZXJuYWxzLmVuZE1lZGlhU2Vzc2lvbkludGVycnVwdGlvbigiTWF5UmVzdW1lUGxheWluZyIpCitQ
QVNTIGNvbnRleHQucmVzdW1lKCkgcHJvbWlzZSByZXNvbHZlZAorUEFTUyBjb250ZXh0LnN0YXRl
IGlzICJydW5uaW5nIgorCitUZXN0IDI6IHJlc3VtZSgpIHdoaWxlIGludGVycnVwdGVkIHdpbGwg
Y2F1c2UgaW50ZXJydXB0aW9uIHRvIGVuZC4KK2ludGVybmFscy5iZWdpbk1lZGlhU2Vzc2lvbklu
dGVycnVwdGlvbigpCitFVkVOVCBzdGF0ZWNoYW5nZQorUEFTUyBjb250ZXh0LnN0YXRlIGlzICJp
bnRlcnJ1cHRlZCIKK2ludGVybmFscy5zZXRNZWRpYVNlc3Npb25SZXN0cmljdGlvbnMoIldlYkF1
ZGlvIiwgIiIpCitDYWxsaW5nIGNvbnRleHQucmVzdW1lKCkKK1BBU1MgY29udGV4dC5yZXN1bWUo
KSBwcm9taXNlIHJlc29sdmVkCitQQVNTIGNvbnRleHQuc3RhdGUgaXMgInJ1bm5pbmciCisKK1Rl
c3QgMzogcnVubmluZyBBdWRpb0NvbnRleHRzIHdpbGwgbm90IHJlc3VtZSBhZnRlciBhbiBpbnRl
cnJ1cHRpb24gZW5kcy4KK2ludGVybmFscy5iZWdpbk1lZGlhU2Vzc2lvbkludGVycnVwdGlvbigp
CitFVkVOVCBzdGF0ZWNoYW5nZQorUEFTUyBjb250ZXh0LnN0YXRlIGlzICJpbnRlcnJ1cHRlZCIK
K2ludGVybmFscy5lbmRNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oIiIpCitFVkVOVCBzdGF0ZWNo
YW5nZQorUEFTUyBjb250ZXh0LnN0YXRlIGlzICJzdXNwZW5kZWQiCisKK1Rlc3QgNDogcmVzdW1l
KCkgd2hpbGUgaW50ZXJydXB0ZWQgd2lsbCBub3QgcmVzdW1lIHBsYXliYWNrIGFmdGVyIGFuIGlu
dGVycnVwdGlvbi4KK2ludGVybmFscy5iZWdpbk1lZGlhU2Vzc2lvbkludGVycnVwdGlvbigpCitF
VkVOVCBzdGF0ZWNoYW5nZQorUEFTUyBjb250ZXh0LnN0YXRlIGlzICJpbnRlcnJ1cHRlZCIKK0Nh
bGxpbmcgY29udGV4dC5yZXN1bWUoKQoraW50ZXJuYWxzLmVuZE1lZGlhU2Vzc2lvbkludGVycnVw
dGlvbigiIikKK0VWRU5UIHN0YXRlY2hhbmdlCitQQVNTIGNvbnRleHQuc3RhdGUgaXMgInN1c3Bl
bmRlZCIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb2NvbnRleHQtc3RhdGUtaW50
ZXJydXB0ZWQuaHRtbCBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvY29udGV4dC1zdGF0ZS1p
bnRlcnJ1cHRlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwOTYyMDYyZTJhM2JkZTNmMjdkMjY4MGMzNDgy
ZDJkYTA0MmQwM2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRp
b2NvbnRleHQtc3RhdGUtaW50ZXJydXB0ZWQuaHRtbApAQCAtMCwwICsxLDE1MCBAQAorPCFET0NU
WVBFIGh0bWw+CisKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBz
cmM9InJlc291cmNlcy9hdWRpby10ZXN0aW5nLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKworPGJv
ZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdCYXNpYyB0ZXN0cyBmb3IgQXVkaW9Ob2RlIEFQ
SS4nKTsKKwordmFyIGNvbnRleHQgPSBudWxsOwordmFyIG5vZGUgPSBudWxsOworCitmdW5jdGlv
biBydW5UZXN0KCkgeworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
CisgICAgfQorICAgIAorICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIGNv
bnRleHQgPSBuZXcgd2Via2l0QXVkaW9Db250ZXh0KCk7CisKKyAgICBzaG91bGRCZSgnY29udGV4
dC5zdGF0ZScsICcic3VzcGVuZGVkIicpOworICAgIGNvbnRleHQub25zdGF0ZWNoYW5nZSA9IGJl
Z2FuUnVubmluZzsKKworICAgIG5vZGUgPSBjb250ZXh0LmNyZWF0ZUJ1ZmZlclNvdXJjZSgpOwor
ICAgIGV2YWxBbmRMb2coJ25vZGUuY29ubmVjdChjb250ZXh0LmRlc3RpbmF0aW9uKScpOworCit9
CisKK2Z1bmN0aW9uIGJlZ2FuUnVubmluZyhlKSB7CisgICAgZGVidWcoJ0VWRU5UICcgKyBldmVu
dC50eXBlKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5zdGF0ZScsICcicnVubmluZyInKTsKKwor
ICAgIGRlYnVnKCcnKTsKKyAgICBkZWJ1ZygnVGVzdCAxOiByZXN1bWUoKSB3aGlsZSBpbnRlcnJ1
cHRlZCBpcyByZXNvbHZlZCBhZnRlciB0aGUgaW50ZXJydXB0aW9uIGVuZHMuJyk7CisKKyAgICBj
b250ZXh0Lm9uc3RhdGVjaGFuZ2UgPSBmaXJzdEludGVycnVwdGlvblN0YXJ0ZWQ7CisgICAgaWYg
KHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGV2YWxBbmRMb2coJ2ludGVybmFscy5iZWdpbk1l
ZGlhU2Vzc2lvbkludGVycnVwdGlvbigpJyk7CisKK30KKworZnVuY3Rpb24gZmlyc3RJbnRlcnJ1
cHRpb25TdGFydGVkKGUpIHsKKyAgICBkZWJ1ZygnRVZFTlQgJyArIGV2ZW50LnR5cGUpOworICAg
IHNob3VsZEJlKCdjb250ZXh0LnN0YXRlJywgJyJpbnRlcnJ1cHRlZCInKTsKKyAgICBpZiAod2lu
ZG93LmludGVybmFscykKKyAgICAgICAgZXZhbEFuZExvZygnaW50ZXJuYWxzLnNldE1lZGlhU2Vz
c2lvblJlc3RyaWN0aW9ucygiV2ViQXVkaW8iLCAiSW50ZXJydXB0ZWRQbGF5YmFja05vdFBlcm1p
dHRlZCIpJyk7CisKKyAgICBjb250ZXh0Lm9uc3RhdGVjaGFuZ2UgPSBudWxsOworCisgICAgZGVi
dWcoJ0NhbGxpbmcgY29udGV4dC5yZXN1bWUoKScpOworICAgIGNvbnRleHQucmVzdW1lKCkudGhl
bihmaXJzdFJlc3VtZVN1Y2NlZWRlZCk7CisgICAgZGVidWcoJ0RlbGF5aW5nIDEwMG1zJyk7Cisg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgc2hvdWxkQmUoJ2NvbnRleHQuc3Rh
dGUnLCAnImludGVycnVwdGVkIicpOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAg
ICAgICAgICAgIGV2YWxBbmRMb2coJ2ludGVybmFscy5lbmRNZWRpYVNlc3Npb25JbnRlcnJ1cHRp
b24oIk1heVJlc3VtZVBsYXlpbmciKScpOworICAgIH0sIDEwMCk7Cit9CisKK2Z1bmN0aW9uIGZp
cnN0UmVzdW1lU3VjY2VlZGVkKCkgeworICAgIHRlc3RQYXNzZWQoJ2NvbnRleHQucmVzdW1lKCkg
cHJvbWlzZSByZXNvbHZlZCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0LnN0YXRlJywgJyJydW5u
aW5nIicpOworCisgICAgZGVidWcoJycpOworICAgIGRlYnVnKCdUZXN0IDI6IHJlc3VtZSgpIHdo
aWxlIGludGVycnVwdGVkIHdpbGwgY2F1c2UgaW50ZXJydXB0aW9uIHRvIGVuZC4nKQorCisgICAg
Y29udGV4dC5vbnN0YXRlY2hhbmdlID0gc2Vjb25kSW50ZXJydXB0aW9uU3RhcnRlZDsKKyAgICBp
ZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgZXZhbEFuZExvZygnaW50ZXJuYWxzLmJlZ2lu
TWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCknKTsKK30KKworZnVuY3Rpb24gc2Vjb25kSW50ZXJy
dXB0aW9uU3RhcnRlZChlKSB7CisgICAgZGVidWcoJ0VWRU5UICcgKyBldmVudC50eXBlKTsKKyAg
ICBzaG91bGRCZSgnY29udGV4dC5zdGF0ZScsICciaW50ZXJydXB0ZWQiJyk7CisgICAgaWYgKHdp
bmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGV2YWxBbmRMb2coJ2ludGVybmFscy5zZXRNZWRpYVNl
c3Npb25SZXN0cmljdGlvbnMoIldlYkF1ZGlvIiwgIiIpJyk7CisKKyAgICBjb250ZXh0Lm9uc3Rh
dGVjaGFuZ2UgPSBudWxsOworCisgICAgZGVidWcoJ0NhbGxpbmcgY29udGV4dC5yZXN1bWUoKScp
OworICAgIGNvbnRleHQucmVzdW1lKCkudGhlbihzZWNvbmRSZXN1bWVTdWNjZWVkZWQpOworfQor
CitmdW5jdGlvbiBzZWNvbmRSZXN1bWVTdWNjZWVkZWQoKSB7CisgICAgdGVzdFBhc3NlZCgnY29u
dGV4dC5yZXN1bWUoKSBwcm9taXNlIHJlc29sdmVkJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQu
c3RhdGUnLCAnInJ1bm5pbmciJyk7CisKKyAgICBkZWJ1ZygnJyk7CisgICAgZGVidWcoJ1Rlc3Qg
MzogcnVubmluZyBBdWRpb0NvbnRleHRzIHdpbGwgbm90IHJlc3VtZSBhZnRlciBhbiBpbnRlcnJ1
cHRpb24gZW5kcy4nKQorCisgICAgY29udGV4dC5vbnN0YXRlY2hhbmdlID0gdGhpcmRJbnRlcnJ1
cHRpb25TdGFydGVkOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBldmFsQW5k
TG9nKCdpbnRlcm5hbHMuYmVnaW5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oKScpOworfQorCitm
dW5jdGlvbiB0aGlyZEludGVycnVwdGlvblN0YXJ0ZWQoKSB7CisgICAgZGVidWcoJ0VWRU5UICcg
KyBldmVudC50eXBlKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5zdGF0ZScsICciaW50ZXJydXB0
ZWQiJyk7CisKKyAgICBjb250ZXh0Lm9uc3RhdGVjaGFuZ2UgPSB0aGlyZEludGVycnVwdGlvbkVu
ZGVkOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBldmFsQW5kTG9nKCdpbnRl
cm5hbHMuZW5kTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCIiKScpOworfQorCitmdW5jdGlvbiB0
aGlyZEludGVycnVwdGlvbkVuZGVkKCkgeworICAgIGRlYnVnKCdFVkVOVCAnICsgZXZlbnQudHlw
ZSk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuc3RhdGUnLCAnInN1c3BlbmRlZCInKTsKKworICAg
IGRlYnVnKCcnKTsKKyAgICBkZWJ1ZygnVGVzdCA0OiByZXN1bWUoKSB3aGlsZSBpbnRlcnJ1cHRl
ZCB3aWxsIG5vdCByZXN1bWUgcGxheWJhY2sgYWZ0ZXIgYW4gaW50ZXJydXB0aW9uLicpCisKKyAg
ICBjb250ZXh0Lm9uc3RhdGVjaGFuZ2UgPSBmb3VydGhJbnRlcnJ1cHRpb25TdGFydGVkOworICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBldmFsQW5kTG9nKCdpbnRlcm5hbHMuYmVn
aW5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oKScpOworfQorCitmdW5jdGlvbiBmb3VydGhJbnRl
cnJ1cHRpb25TdGFydGVkKCkgeworICAgIGRlYnVnKCdFVkVOVCAnICsgZXZlbnQudHlwZSk7Cisg
ICAgc2hvdWxkQmUoJ2NvbnRleHQuc3RhdGUnLCAnImludGVycnVwdGVkIicpOworCisgICAgY29u
dGV4dC5vbnN0YXRlY2hhbmdlID0gZm91cnRoSW50ZXJydXB0aW9uRW5kZWQ7CisKKyAgICBkZWJ1
ZygnQ2FsbGluZyBjb250ZXh0LnJlc3VtZSgpJyk7CisgICAgY29udGV4dC5yZXN1bWUoKTsKKwor
ICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBldmFsQW5kTG9nKCdpbnRlcm5hbHMu
ZW5kTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCIiKScpOworfQorCitmdW5jdGlvbiBmb3VydGhJ
bnRlcnJ1cHRpb25FbmRlZCgpIHsKKyAgICBkZWJ1ZygnRVZFTlQgJyArIGV2ZW50LnR5cGUpOwor
ICAgIHNob3VsZEJlKCdjb250ZXh0LnN0YXRlJywgJyJzdXNwZW5kZWQiJyk7CisgICAgZmluaXNo
SlNUZXN0KCk7Cit9CisKK3J1blRlc3QoKTsKKworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvY29udGV4dC1zdGF0ZS5odG1s
IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9jb250ZXh0LXN0YXRlLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNzVmYjRjNWIxYzMzZjA5N2I4MTNkZDE2YzBmMjE1ODE4NWE5NDc3MQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvY29udGV4dC1zdGF0ZS5odG1sCkBAIC0w
LDAgKzEsMTA5IEBACis8IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0icmVzb3VyY2VzL2F1ZGlvLXRlc3RpbmcuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorCis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ0Jhc2ljIHRl
c3RzIGZvciBBdWRpb05vZGUgQVBJLicpOworCit2YXIgY29udGV4dCA9IG51bGw7Cit2YXIgbm9k
ZSA9IG51bGw7CisKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisgICAgCisgICAgd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOworCisgICAgY29udGV4dCA9IG5ldyB3ZWJraXRBdWRpb0NvbnRleHQoKTsKKwor
ICAgIHNob3VsZEJlKCdjb250ZXh0LnN0YXRlJywgJyJzdXNwZW5kZWQiJyk7CisKKyAgICBub2Rl
ID0gY29udGV4dC5jcmVhdGVCdWZmZXJTb3VyY2UoKTsKKyAgICBldmFsQW5kTG9nKCdub2RlLmNv
bm5lY3QoY29udGV4dC5kZXN0aW5hdGlvbiknKTsKKworICAgIHNob3VsZEJlKCdjb250ZXh0LnN0
YXRlJywgJyJydW5uaW5nIicpOworCisgICAgZGVidWcoJ0NhbGxpbmcgY29udGV4dC5zdXNwZW5k
KCknKTsKKyAgICBjb250ZXh0LnN1c3BlbmQoKS50aGVuKHN1c3BlbmRTdWNjZWVkZWQsIHN1c3Bl
bmRGYWlsZWQpOworfQorCitmdW5jdGlvbiBzdXNwZW5kRmFpbGVkKCkgeworICAgIHRlc3RGYWls
ZWQoJ2NvbnRleHQuc3VzcGVuZCgpIHByb21pc2UgcmVqZWN0ZWQnKTsKKyAgICBmaW5pc2hKU1Rl
c3QoKTsKK30KKworZnVuY3Rpb24gc3VzcGVuZFN1Y2NlZWRlZCgpIHsKKyAgICB0ZXN0UGFzc2Vk
KCdjb250ZXh0LnN1c3BlbmQoKSBwcm9taXNlIHJlc29sdmVkJyk7CisgICAgc2hvdWxkQmUoJ2Nv
bnRleHQuc3RhdGUnLCAnInN1c3BlbmRlZCInKTsKKworICAgIGRlYnVnKCdDYWxsaW5nIGNvbnRl
eHQucmVzdW1lKCknKTsKKyAgICBjb250ZXh0LnJlc3VtZSgpLnRoZW4ocmVzdW1lU3VjY2VlZGVk
LCByZXN1bWVGYWlsZWQpOworfQorCitmdW5jdGlvbiByZXN1bWVGYWlsZWQoKSB7CisgICAgdGVz
dEZhaWxlZCgnY29udGV4dC5yZXN1bWUoKSBwcm9taXNlIHJlamVjdGVkJyk7CisgICAgZmluaXNo
SlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHJlc3VtZVN1Y2NlZWRlZCgpIHsKKyAgICB0ZXN0UGFz
c2VkKCdjb250ZXh0LnJlc3VtZSgpIHByb21pc2UgcmVzb2x2ZWQnKTsKKyAgICBzaG91bGRCZSgn
Y29udGV4dC5zdGF0ZScsICcicnVubmluZyInKTsKKworICAgIGRlYnVnKCdDYWxsaW5nIGNvbnRl
eHQuY2xvc2UoKScpOworICAgIGNvbnRleHQuY2xvc2UoKS50aGVuKGNsb3NlU3VjY2VlZGVkLCBj
bG9zZUZhaWxlZCk7Cit9CisKK2Z1bmN0aW9uIGNsb3NlRmFpbGVkKCkgeyAKKyAgICB0ZXN0RmFp
bGVkKCdjb250ZXh0LmNsb3NlKCkgcHJvbWlzZSByZWplY3RlZCcpOworICAgIGZpbmlzaEpTVGVz
dCgpOworfQorCitmdW5jdGlvbiBjbG9zZVN1Y2NlZWRlZCgpIHsKKyAgICB0ZXN0UGFzc2VkKCdj
b250ZXh0LmNsb3NlKCkgcHJvbWlzZSByZXNvbHZlZCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0
LnN0YXRlJywgJyJjbG9zZWQiJyk7CisKKyAgICBkZWJ1ZygnQ2FsbGluZyBjb250ZXh0LnJlc3Vt
ZSgpIChzaG91bGQgZmFpbCknKTsKKyAgICBjb250ZXh0LnJlc3VtZSgpLnRoZW4ocmVzdW1lU3Vj
Y2VlZGVkSW5jb3JyZWN0bHksIHJlc3VtZUZhaWxlZENvcnJlY3RseSk7Cit9CisKK2Z1bmN0aW9u
IHJlc3VtZVN1Y2NlZWRlZEluY29ycmVjdGx5KCkgeworICAgIHRlc3RGYWlsZWQoJ2NvbnRleHQu
cmVzdW1lKCkgcHJvbWlzZSByZXNvbHZlZCAoc2hvdWxkIGhhdmUgcmVqZWN0ZWQpJyk7CisgICAg
ZmluaXNoSlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHJlc3VtZUZhaWxlZENvcnJlY3RseSgpIHsK
KyAgICB0ZXN0UGFzc2VkKCdjb250ZXh0LnJlc3VtZSgpIHByb21pc2UgcmVqZWN0ZWQgKGNvcnJl
Y3RseSknKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5zdGF0ZScsICciY2xvc2VkIicpOworCisg
ICAgZGVidWcoJ0NhbGxpbmcgY29udGV4dC5zdXNwZW5kKCkgKHNob3VsZCBmYWlsKScpOworICAg
IGNvbnRleHQuc3VzcGVuZCgpLnRoZW4oc3VzcGVuZFN1Y2NlZWRlZEluY29ycmVjdGx5LCBzdXNw
ZW5kRmFpbGVkQ29ycmVjdGx5KTsKK30KKworZnVuY3Rpb24gc3VzcGVuZFN1Y2NlZWRlZEluY29y
cmVjdGx5KCkgeworICAgIHRlc3RGYWlsZWQoJ2NvbnRleHQuc3VzcGVuZCgpIHByb21pc2UgcmVz
b2x2ZWQgKHNob3VsZCBoYXZlIHJlamVjdGVkKScpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQor
CitmdW5jdGlvbiBzdXNwZW5kRmFpbGVkQ29ycmVjdGx5KCkgeworICAgIHRlc3RQYXNzZWQoJ2Nv
bnRleHQucmVzdW1lKCkgcHJvbWlzZSByZWplY3RlZCAoY29ycmVjdGx5KScpOworICAgIHNob3Vs
ZEJlKCdjb250ZXh0LnN0YXRlJywgJyJjbG9zZWQiJyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9
CisKK3J1blRlc3QoKTsKKworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="274529"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249704</attachid>
            <date>2015-03-29 17:13:07 -0700</date>
            <delta_ts>2015-03-30 09:15:48 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-143190-20150329171224.patch</filename>
            <type>text/plain</type>
            <size>64997</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyMDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGY4MDEzZmVhNWNkMGEy
ZTIwODRkZjA0MWFiNWM4NzFlOWQ2YWM1Yi4uMjZiZWZmMmE4NGNjNWNlOTM3MjllMDcxNDg4ZTY5
ODhhMjkwMGExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMyBAQAorMjAxNS0wMy0yOCAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBXaGVuIFdlYiBB
dWRpbyBpcyBpbnRlcnJ1cHRlZCBieSBhIHBob25lIGNhbGwsIGl0IGNhbm5vdCBiZSByZXN0YXJ0
ZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMx
OTAKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBUZXN0czog
d2ViYXVkaW8vYXVkaW9jb250ZXh0LXN0YXRlLWludGVycnVwdGVkLmh0bWwKKyAgICAgICAgICAg
ICAgIHdlYmF1ZGlvL2F1ZGlvY29udGV4dC1zdGF0ZS5odG1sCisKKyAgICAgICAgSW1wbGVtZW50
IHRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhbmQgcHJvcGVydGllcyBmcm9tIHRoZSBXZWIgQXVkaW8g
c3BlYzoKKyAgICAgICAgY2xvc2UoKSwgc3VzcGVuZCgpLCByZXN1bWUoKSwgb25zdGF0ZWNoYW5n
ZS4KKworICAgICAgICBBdWRpb0NvbnRleHQgd2lsbCB0YWtlIG1vcmUgcmVzcG9uc2liaWxpdHkg
Zm9yIHRyYWNraW5nIHN0YXRlIGFuZCBpbnRlcnJ1cHRpb25zIChhbmQKKyAgICAgICAgQXVkaW9E
ZXN0aW5hdGlvbiB3aWxsIGdpdmUgdXAgdGhhdCByZXNwb25zaWJpbGl0eSkuIFRoaXMgbWVhbnMg
QXVkaW9Db250ZXh0IG11c3QgYmUgYQorICAgICAgICBNZWRpYVNlc3Npb25DbGllbnQsIGFuZCBv
d24gaXRzIG93biBNZWRpYVNlc3Npb24uIEluIHJldHVybiwgQXVkaW9EZXN0aW5hdGlvbklPUyBh
bmQgCisgICAgICAgIEF1ZGlvRGVzdGluYXRpb25NYWMgcmVsaW5xdWlzaCBib3RoLgorCisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9Db250ZXh0OjpBdWRpb0NvbnRleHQpOiBTZXQgZGVmYXVsdCB2YWx1ZXMgaW4gaGVh
ZGVyLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0Ojp1bmluaXRpYWxpemUpOiBDYWxs
IHNldFN0YXRlKCkgaW5zdGVhZCBvZiBzZXR0aW5nIG1fc3RhdGUuCisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb0NvbnRleHQ6OmFkZFJlYWN0aW9uKTogQWRkZWQuIEFwcGVuZCB0aGUgY2FsbGJhY2sg
dG8gdGhlIGFwcHJvcHJpYXRlIHZlY3RvciBmb3IgdGhlIHN0YXRlLgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9Db250ZXh0OjpzZXRTdGF0ZSk6IEFkZGVkLiBGaXJlIGV2ZW50cyBhbmQgcmVzb2x2
ZSB0aGUgYXBwcm9wcmlhdGUgcmVhY3Rpb24gY2FsbGJhY2tzIGZvciB0aGUgbmV3IHN0YXRlLgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpzdGF0ZSk6IFJldHVybiBhIHN0cmluZyBy
ZXByZXNlbnRpbmcgdGhlIGNvbnRleHQncyBzdGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
Q29udGV4dDo6c3RvcCk6IENsb3NlIHRoZSBldmVudCBxdWV1ZS4KKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvQ29udGV4dDo6c3RhcnRSZW5kZXJpbmcpOiBDYWxsIHNldFN0YXRlKCkuCisgICAgICAg
IChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmZpcmVDb21wbGV0aW9uRXZlbnQpOiBDYWxsIHNldFN0
YXRlKCkuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OnN1c3BlbmRDb250ZXh0KTog
QWRkZWQuIEFkZCByZWFjdGlvbiBjYWxsYmFjayBhbmQgY2FsbCBzdXNwZW5kKCkgb24gdGhlIGRl
c3RpbmF0aW9uIG5vZGUuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OnJlc3VtZUNv
bnRleHQpOiBBZGRlZC4gQWRkIHJlYWN0aW9uIGNhbGxiYWNrIGFuZCBjYWxsIHJlc3VtZSgpIG9u
IHRoZSBkZXN0aW5hdGlvbiBub2RlLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0Ojpj
bG9zZUNvbnRleHQpOiBBZGRlZC4gQWRkIHJlYWN0aW9uIGNhbGxiYWNrIGFuZCBjYWxsIGNsb3Nl
KCkgb24gdGhlIGRlc3RpbmF0aW9uIG5vZGUuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRl
eHQ6OnN1c3BlbmRQbGF5YmFjayk6IEFkZGVkLiBTdXNwZW5kIHBsYXliYWNrIGFuZCBzZXQgc3Rh
dGUgdG8gaW50ZXJydXB0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6Om1heVJl
c3VtZVBsYXliYWNrKTogQWRkZWQuIENvbmRpdGlvbmFsbHkgcmVzdW1lIHBsYXliYWNrLgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTQXVkaW9Db250ZXh0OjpzdXNwZW5kKTogQWRkZWQuIENyZWF0ZSBhbmQgcmV0dXJu
IGEgbmV3IFByb21pc2Ugb2JqZWN0LgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb0NvbnRleHQ6
OnJlc3VtZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb0NvbnRleHQ6OmNsb3Nl
KTogRGl0dG8uCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsOiBB
ZGQgbmV3IG1ldGhvZHMgYW5kIHByb3BlcnRpZXMuCisKKyAgICAgICAgRXh0ZW5zaXZlIG9yZ2Fu
aXphdGlvbmFsIGNoYW5nZXMgd2VyZSBtYWRlIHRvIEF1ZGlvQ29udGV4dC5oIHRvIGdyb3VwIGlu
c3RhbmNlCisgICAgICAgIHZhcmlhYmxlcyB0b2dldGhlciBhbmQgYWRkIEMrKzExIGluaXRpYWxp
emVycyBpbiB0aGVpciBkZWNsYXJhdGlvbnM6CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjptZWRpYVR5
cGUpOiBNb3ZlZCBmcm9tIEF1ZGlvRGVzdGluYXRpb25Ob2RlLgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9Db250ZXh0OjpwcmVzZW50YXRpb25UeXBlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb0NvbnRleHQ6OmNhblJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6ZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xD
b21tYW5kKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6Om92ZXJyaWRl
QmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rpb24pOiBEaXR0by4KKyAgICAgICAgCisgICAgICAg
IE90aGVyIGNoYW5nZXMgdG8gc3VwcG9ydCB0aGUgbmV3IEF1ZGlvQ29udGV4dCBtZXRob2RzOgor
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnJlc3VtZSk6IEFkZCBlbXB0eSBk
ZWZhdWx0IHZpcnR1YWwgbWV0aG9kLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlv
bk5vZGU6OnN1c3BlbmQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRp
b25Ob2RlOjpjbG9zZSk6IERpdHRvLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVmYXVs
dEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRBdWRp
b0Rlc3RpbmF0aW9uTm9kZTo6cmVzdW1lKTogQWRkZWQuIFBhc3MgdG8gQXVkaW9EZXN0aW5hdGlv
bi4KKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3VzcGVu
ZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2Rl
OjpjbG9zZSk6IERpdHRvLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlv
RGVzdGluYXRpb25Ob2RlLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmg6
CisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFdyYXBwZXI6OnJlc29sdmUpOiBBZGQgYW4gb3Zl
cmxvYWQgZm9yIGEgbnVsbHB0ciByZXNvbHZlIHZhbHVlLgorICAgICAgICAqIGRvbS9FdmVudE5h
bWVzLmg6IEFkZGVkICdzdGF0ZWNoYW5nZScuCisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2s6OlRhc2spOiBBZGQgYSBjb25zdHJ1Y3RvciB3aGljaCB0YWtlcyBhIHZvaWQoKSBjYWxsYmFj
ay4KKworICAgICAgICBNb2RpZnkgTWVkaWFTZXNzaW9uLCBBdWRpb1Nlc3Npb24sIGFuZCBNZWRp
YVNlc3Npb25NYW5hZ2VyIHRvIHN1cHBvcnQgdGhlIG5ldworICAgICAgICBpbnRlcnJ1cHRpb24g
YmVoYXZpb3IuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c3VzcGVuZFBsYXliYWNrKTogUmVuYW1lZCBm
cm9tIHBhdXNlUGxheWJhY2soKS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
Om1heVJlc3VtZVBsYXliYWNrKTogUmVuYW1lZCBmcm9tIHJlc3VtZVBsYXliYWNrKCkuCisgICAg
ICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8v
QXVkaW9TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6dHJ5VG9T
ZXRBY3RpdmUpOiBSZW5hbWVkIGZyb20gc2V0QWN0aXZlLiBSZXR1cm4gdHJ1ZSBieSBkZWZhdWx0
LgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpzZXRBY3RpdmUpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Np
b246OmJlZ2luSW50ZXJydXB0aW9uKTogcGF1c2VQbGF5YmFjaygpIHdhcyByZW5hbWVkIHRvIHN1
c3BlbmRQbGF5YmFjaygpLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTZXNzaW9uOjplbmRJbnRl
cnJ1cHRpb24pOiBBbHdheXMgbm90aWZ5IHRoZSBjbGllbnQsIHRlbGxpbmcgaXQgd2hldGhlciB0
byByZXN1bWUuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNlc3Npb246OmNsaWVudFdpbGxCZWdp
blBsYXliYWNrKTogQmFpbCBlYXJseSBpZiByZWVudHJhbnQuICBDaGVjayB0aGUgKG5ldykgCisg
ICAgICAgICAgICByZXR1cm4gdmFsdWUgb2Ygc2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKCkgYW5k
IHJlbWVtYmVyIHRvIHJlc3VtZSBvbmNlIHRoZSBpbnRlcnJ1cHRpb24gZW5kcy4KKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6Y2xpZW50V2lsbFBhdXNlUGxheWJhY2spOiBCYWlsIGVh
cmx5IGlmIHJlZW50cmFudC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbjo6cGF1c2VT
ZXNzaW9uKTogcGF1c2VQbGF5YmFjaygpIHdhcyByZW5hbWVkIHRvIHN1c3BlbmRQbGF5YmFjaygp
LgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5oOgorICAgICAgICAqIHBs
YXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKTogUmV0dXJuIGZh
bHNlIGlmIG5vdCBhbGxvd2VkIHRvIGJyZWFrIGludGVycnVwdGlvbiBvciAKKyAgICAgICAgICAg
IGlmIGFjdGl2YXRpbmcgdGhlIGF1ZGlvIHNlc3Npb24gZmFpbGVkLiBPdGhlcndpc2UsIGVuZCB0
aGUgaW50ZXJydXB0aW9uLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1h
bmFnZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklP
Uy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uSU9TOjpBdWRpb0Rlc3Rp
bmF0aW9uSU9TKTogbV9tZWRpYVNlc3Npb24gd2FzIHJlbW92ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb0Rlc3RpbmF0aW9uSU9TOjpzdGFydCk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lv
bjo6dHJ5VG9TZXRBY3RpdmUpOiBSZW5hbWVkIGZyb20gc2V0QWN0aXZlLiBSZXR1cm4gZmFsc2Ug
aWYgdGhlIEFWQXVkaW9TZXNzaW9uIGNvdWxkIG5vdCBiZSBhY3RpdmF0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1Nlc3Npb246OnNldEFjdGl2ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU2Vzc2lvbk1hbmFnZXJpT1M6OnNlc3Npb25XaWxsQmVnaW5QbGF5YmFjayk6IERv
IG5vdCB1cGRhdGUgdGhlIG5vdyBwbGF5aW5nIGluZm8gaWYgc2Vzc2lvbiBwbGF5YmFjayB3YXMg
YmxvY2tlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1h
Yy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uTWFjOjpBdWRpb0Rlc3Rp
bmF0aW9uTWFjKTogbV9tZWRpYVNlc3Npb24gd2FzIHJlbW92ZWQuCisgICAgICAgICogcGxhdGZv
cm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vz
c2lvbjo6dHJ5VG9TZXRBY3RpdmUpOiBSZW5hbWVkIGZyb20gc2V0QWN0aXZlKCkuIFJldHVybiB0
cnVlIGJ5IGRlZmF1bHQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnNldEFjdGl2
ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL01lZGlhU2Vzc2lvbk1h
bmFnZXJNYWMuY3BwOgorICAgICAgICAoTWVkaWFTZXNzaW9uTWFuYWdlcjo6dXBkYXRlU2Vzc2lv
blN0YXRlKTogTm8gbG9uZ2VyIGF0dGVtcHQgdG8gYWN0aXZhdGUgdGhlIHNlc3Npb24sIGFzIHRo
aXMgaXMgZG9uZQorICAgICAgICAgICAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxC
ZWdpblBsYXliYWNrKCkuCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRNZWRpYVNlc3Npb25SZXN0cmljdGlvbnMpOiBBZGQg
IkludGVycnVwdGVkUGxheWJhY2tOb3RQZXJtaXR0ZWQiLgorCiAyMDE1LTAzLTI3ICBKZXIgTm9i
bGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQgd2ls
bCBmaXJlICdzZWVrZWQnIGJlZm9yZSBzZWVrIGNvbXBsZXRlcywgbGVhZGluZyB0byBjdXJyZW50
VGltZSBkaXNjb250aW51aXRpZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggYzgyMTFlM2FiZWYxMDQwZmYzNmMxNDU3YzNiZGYx
MjFmYmNiMjhjNi4uOWIzY2ZjYjMzNTU0M2Q4YzcxYzlmZTVhMjE0MjhkOGM1NGJjZTJjMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApA
QCAtNDQsOSArNDQsMTEgQEAKICNpbmNsdWRlICJEZWxheU5vZGUuaCIKICNpbmNsdWRlICJEb2N1
bWVudC5oIgogI2luY2x1ZGUgIkR5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaCIKKyNpbmNsdWRlICJF
dmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZGVEZy
YW1lLmgiCiAjaW5jbHVkZSAiR2Fpbk5vZGUuaCIKKyNpbmNsdWRlICJHZW5lcmljRXZlbnRRdWV1
ZS5oIgogI2luY2x1ZGUgIkhSVEZEYXRhYmFzZUxvYWRlci5oIgogI2luY2x1ZGUgIkhSVEZQYW5u
ZXIuaCIKICNpbmNsdWRlICJPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaCIKQEAgLTU1LDEw
ICs1NywxMSBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYW5uZXJOb2RlLmgiCiAj
aW5jbHVkZSAiUGVyaW9kaWNXYXZlLmgiCi0jaW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENhbGxT
dGFjay5oPgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRQ
cm9jZXNzb3JOb2RlLmgiCiAjaW5jbHVkZSAiV2F2ZVNoYXBlck5vZGUuaCIKKyNpbmNsdWRlIDxp
bnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogI2luY2x1ZGUgIk1lZGlhU3RyZWFtLmgi
CkBAIC0xMjYsMTkgKzEyOSw5IEBAIFJlZlB0cjxBdWRpb0NvbnRleHQ+IEF1ZGlvQ29udGV4dDo6
Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAvLyBDb25zdHJ1
Y3RvciBmb3IgcmVuZGVyaW5nIHRvIHRoZSBhdWRpbyBoYXJkd2FyZS4KIEF1ZGlvQ29udGV4dDo6
QXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IEFjdGl2ZURPTU9iamVjdCgm
ZG9jdW1lbnQpCi0gICAgLCBtX2lzU3RvcFNjaGVkdWxlZChmYWxzZSkKLSAgICAsIG1faXNJbml0
aWFsaXplZChmYWxzZSkKLSAgICAsIG1faXNBdWRpb1RocmVhZEZpbmlzaGVkKGZhbHNlKQotICAg
ICwgbV9kZXN0aW5hdGlvbk5vZGUoMCkKLSAgICAsIG1faXNEZWxldGlvblNjaGVkdWxlZChmYWxz
ZSkKLSAgICAsIG1fYXV0b21hdGljUHVsbE5vZGVzTmVlZFVwZGF0aW5nKGZhbHNlKQotICAgICwg
bV9jb25uZWN0aW9uQ291bnQoMCkKLSAgICAsIG1fYXVkaW9UaHJlYWQoMCkKKyAgICAsIG1fbWVk
aWFTZXNzaW9uKE1lZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0aGlzKSkKKyAgICAsIG1fZXZlbnRRdWV1
ZShzdGQ6Om1ha2VfdW5pcXVlPEdlbmVyaWNFdmVudFF1ZXVlPigqdGhpcykpCiAgICAgLCBtX2dy
YXBoT3duZXJUaHJlYWQoVW5kZWZpbmVkVGhyZWFkSWRlbnRpZmllcikKLSAgICAsIG1faXNPZmZs
aW5lQ29udGV4dChmYWxzZSkKLSAgICAsIG1fYWN0aXZlU291cmNlQ291bnQoMCkKLSAgICAsIG1f
cmVzdHJpY3Rpb25zKE5vUmVzdHJpY3Rpb25zKQotICAgICwgbV9zdGF0ZShTdGF0ZTo6U3VzcGVu
ZGVkKQogewogICAgIGNvbnN0cnVjdENvbW1vbigpOwogCkBAIC0xNTEsMTggKzE0NCwxMCBAQCBB
dWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQpCiAvLyBDb25zdHJ1
Y3RvciBmb3Igb2ZmbGluZSAobm9uLXJlYWx0aW1lKSByZW5kZXJpbmcuCiBBdWRpb0NvbnRleHQ6
OkF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5l
bHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEFjdGl2
ZURPTU9iamVjdCgmZG9jdW1lbnQpCi0gICAgLCBtX2lzU3RvcFNjaGVkdWxlZChmYWxzZSkKLSAg
ICAsIG1faXNJbml0aWFsaXplZChmYWxzZSkKLSAgICAsIG1faXNBdWRpb1RocmVhZEZpbmlzaGVk
KGZhbHNlKQotICAgICwgbV9kZXN0aW5hdGlvbk5vZGUoMCkKLSAgICAsIG1fYXV0b21hdGljUHVs
bE5vZGVzTmVlZFVwZGF0aW5nKGZhbHNlKQotICAgICwgbV9jb25uZWN0aW9uQ291bnQoMCkKLSAg
ICAsIG1fYXVkaW9UaHJlYWQoMCkKLSAgICAsIG1fZ3JhcGhPd25lclRocmVhZChVbmRlZmluZWRU
aHJlYWRJZGVudGlmaWVyKQogICAgICwgbV9pc09mZmxpbmVDb250ZXh0KHRydWUpCi0gICAgLCBt
X2FjdGl2ZVNvdXJjZUNvdW50KDApCi0gICAgLCBtX3Jlc3RyaWN0aW9ucyhOb1Jlc3RyaWN0aW9u
cykKLSAgICAsIG1fc3RhdGUoU3RhdGU6OlN1c3BlbmRlZCkKKyAgICAsIG1fbWVkaWFTZXNzaW9u
KE1lZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0aGlzKSkKKyAgICAsIG1fZXZlbnRRdWV1ZShzdGQ6Om1h
a2VfdW5pcXVlPEdlbmVyaWNFdmVudFF1ZXVlPigqdGhpcykpCisgICAgLCBtX2dyYXBoT3duZXJU
aHJlYWQoVW5kZWZpbmVkVGhyZWFkSWRlbnRpZmllcikKIHsKICAgICBjb25zdHJ1Y3RDb21tb24o
KTsKIApAQCAtMjc3LDcgKzI2Miw3IEBAIHZvaWQgQXVkaW9Db250ZXh0Ojp1bmluaXRpYWxpemUo
KQogICAgICAgICAtLXNfaGFyZHdhcmVDb250ZXh0Q291bnQ7CiAKICAgICAgICAgLy8gT2ZmbGlu
ZSBjb250ZXh0cyBtb3ZlIHRvICdDbG9zZWQnIHN0YXRlIHdoZW4gZGlzcGF0Y2hpbmcgdGhlIGNv
bXBsZXRpb24gZXZlbnQuCi0gICAgICAgIG1fc3RhdGUgPSBTdGF0ZTo6Q2xvc2VkOworICAgICAg
ICBzZXRTdGF0ZShTdGF0ZTo6Q2xvc2VkKTsKICAgICB9CiAKICAgICAvLyBHZXQgcmlkIG9mIHRo
ZSBzb3VyY2VzIHdoaWNoIG1heSBzdGlsbCBiZSBwbGF5aW5nLgpAQCAtMjkxLDYgKzI3Niw1NiBA
QCBib29sIEF1ZGlvQ29udGV4dDo6aXNJbml0aWFsaXplZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1f
aXNJbml0aWFsaXplZDsKIH0KIAordm9pZCBBdWRpb0NvbnRleHQ6OmFkZFJlYWN0aW9uKFN0YXRl
IHN0YXRlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gcmVhY3Rpb24pCit7CisgICAgc2l6ZV90IHN0
YXRlSW5kZXggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHN0YXRlKTsKKyAgICBpZiAoc3RhdGVJbmRl
eCA+PSBtX3N0YXRlUmVhY3Rpb25zLnNpemUoKSkKKyAgICAgICAgbV9zdGF0ZVJlYWN0aW9ucy5y
ZXNpemUoc3RhdGVJbmRleCArIDEpOworCisgICAgbV9zdGF0ZVJlYWN0aW9uc1tzdGF0ZUluZGV4
XS5hcHBlbmQocmVhY3Rpb24pOworfQorCit2b2lkIEF1ZGlvQ29udGV4dDo6c2V0U3RhdGUoU3Rh
dGUgc3RhdGUpCit7CisgICAgaWYgKG1fc3RhdGUgPT0gc3RhdGUpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fc3RhdGUgPSBzdGF0ZTsKKyAgICBtX2V2ZW50UXVldWUtPmVucXVldWVFdmVudChF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zdGF0ZWNoYW5nZUV2ZW50LCB0cnVlLCBmYWxzZSkp
OworCisgICAgc2l6ZV90IHN0YXRlSW5kZXggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHN0YXRlKTsK
KyAgICBpZiAoc3RhdGVJbmRleCA+PSBtX3N0YXRlUmVhY3Rpb25zLnNpemUoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgVmVjdG9yPHN0ZDo6ZnVuY3Rpb248dm9pZCgpPj4gcmVhY3Rpb25zOwor
ICAgIG1fc3RhdGVSZWFjdGlvbnNbc3RhdGVJbmRleF0uc3dhcChyZWFjdGlvbnMpOworCisgICAg
Zm9yIChhdXRvJiByZWFjdGlvbiA6IHJlYWN0aW9ucykKKyAgICAgICAgcmVhY3Rpb24oKTsKK30K
KworY29uc3QgQXRvbWljU3RyaW5nJiBBdWRpb0NvbnRleHQ6OnN0YXRlKCkgY29uc3QKK3sKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBzdXNwZW5kZWQoInN1c3BlbmRl
ZCIpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHJ1bm5pbmcoInJ1
bm5pbmciKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBpbnRlcnJ1
cHRlZCgiaW50ZXJydXB0ZWQiKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3Ry
aW5nPiBjbG9zZWQoImNsb3NlZCIpOworCisgICAgc3dpdGNoIChtX3N0YXRlKSB7CisgICAgY2Fz
ZSBTdGF0ZTo6U3VzcGVuZGVkOgorICAgICAgICByZXR1cm4gc3VzcGVuZGVkOworICAgIGNhc2Ug
U3RhdGU6OlJ1bm5pbmc6CisgICAgICAgIHJldHVybiBydW5uaW5nOworICAgIGNhc2UgU3RhdGU6
OkludGVycnVwdGVkOgorICAgICAgICByZXR1cm4gaW50ZXJydXB0ZWQ7CisgICAgY2FzZSBTdGF0
ZTo6Q2xvc2VkOgorICAgICAgICByZXR1cm4gY2xvc2VkOworICAgIH0KKworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBzdXNwZW5kZWQ7Cit9CisKIHZvaWQgQXVkaW9Db250
ZXh0OjpzdG9wRGlzcGF0Y2godm9pZCogdXNlckRhdGEpCiB7CiAgICAgQXVkaW9Db250ZXh0KiBj
b250ZXh0ID0gcmVpbnRlcnByZXRfY2FzdDxBdWRpb0NvbnRleHQqPih1c2VyRGF0YSk7CkBAIC0z
MTEsNiArMzQ2LDggQEAgdm9pZCBBdWRpb0NvbnRleHQ6OnN0b3AoKQogCiAgICAgZG9jdW1lbnQo
KS0+dXBkYXRlSXNQbGF5aW5nQXVkaW8oKTsKIAorICAgIG1fZXZlbnRRdWV1ZS0+Y2xvc2UoKTsK
KwogICAgIC8vIERvbid0IGNhbGwgdW5pbml0aWFsaXplKCkgaW1tZWRpYXRlbHkgaGVyZSBiZWNh
dXNlIHRoZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IGlzIGluIHRoZSBtaWRkbGUKICAgICAvLyBv
ZiBkZWFsaW5nIHdpdGggYWxsIG9mIGl0cyBBY3RpdmVET01PYmplY3RzIGF0IHRoaXMgcG9pbnQu
IHVuaW5pdGlhbGl6ZSgpIGNhbiBkZS1yZWZlcmVuY2Ugb3RoZXIKICAgICAvLyBBY3RpdmVET01P
YmplY3RzIHNvIGxldCdzIHNjaGVkdWxlIHVuaW5pdGlhbGl6ZSgpIHRvIGJlIGNhbGxlZCBsYXRl
ci4KQEAgLTk4MCw3ICsxMDE3LDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OnN0YXJ0UmVuZGVyaW5n
KCkKICAgICAgICAgICAgIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oQXVkaW9Db250ZXh0OjpS
ZXF1aXJlUGFnZUNvbnNlbnRGb3JBdWRpb1N0YXJ0UmVzdHJpY3Rpb24pOwogICAgIH0KICAgICBk
ZXN0aW5hdGlvbigpLT5zdGFydFJlbmRlcmluZygpOwotICAgIG1fc3RhdGUgPSBTdGF0ZTo6UnVu
bmluZzsKKyAgICBzZXRTdGF0ZShTdGF0ZTo6UnVubmluZyk7CiB9CiAKIHZvaWQgQXVkaW9Db250
ZXh0OjptZWRpYUNhblN0YXJ0KCkKQEAgLTEwMTEsNyArMTA0OCw3IEBAIHZvaWQgQXVkaW9Db250
ZXh0OjpmaXJlQ29tcGxldGlvbkV2ZW50KCkKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAg
ICBBdWRpb0J1ZmZlciogcmVuZGVyZWRCdWZmZXIgPSBtX3JlbmRlclRhcmdldC5nZXQoKTsKLSAg
ICBtX3N0YXRlID0gU3RhdGU6OkNsb3NlZDsKKyAgICBzZXRTdGF0ZShTdGF0ZTo6Q2xvc2VkKTsK
IAogICAgIEFTU0VSVChyZW5kZXJlZEJ1ZmZlcik7CiAgICAgaWYgKCFyZW5kZXJlZEJ1ZmZlcikK
QEAgLTEwMjAsNyArMTA1Nyw3IEBAIHZvaWQgQXVkaW9Db250ZXh0OjpmaXJlQ29tcGxldGlvbkV2
ZW50KCkKICAgICAvLyBBdm9pZCBmaXJpbmcgdGhlIGV2ZW50IGlmIHRoZSBkb2N1bWVudCBoYXMg
YWxyZWFkeSBnb25lIGF3YXkuCiAgICAgaWYgKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkgewog
ICAgICAgICAvLyBDYWxsIHRoZSBvZmZsaW5lIHJlbmRlcmluZyBjb21wbGV0aW9uIGV2ZW50IGxp
c3RlbmVyLgotICAgICAgICBkaXNwYXRjaEV2ZW50KE9mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVu
dDo6Y3JlYXRlKHJlbmRlcmVkQnVmZmVyKSk7CisgICAgICAgIG1fZXZlbnRRdWV1ZS0+ZW5xdWV1
ZUV2ZW50KE9mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudDo6Y3JlYXRlKHJlbmRlcmVkQnVmZmVy
KSk7CiAgICAgfQogfQogCkBAIC0xMDM0LDYgKzEwNzEsMTI3IEBAIHZvaWQgQXVkaW9Db250ZXh0
OjpkZWNyZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgpCiAgICAgLS1tX2FjdGl2ZVNvdXJjZUNvdW50
OwogfQogCit2b2lkIEF1ZGlvQ29udGV4dDo6c3VzcGVuZENvbnRleHQoc3RkOjpmdW5jdGlvbjx2
b2lkKCk+IHN1Y2Nlc3NDYWxsYmFjaywgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGZhaWx1cmVDYWxs
YmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgQVNTRVJUKHN1Y2Nlc3NDYWxsYmFjayk7
CisgICAgQVNTRVJUKGZhaWx1cmVDYWxsYmFjayk7CisKKyAgICBpZiAoaXNPZmZsaW5lQ29udGV4
dCgpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6U3VzcGVuZGVkKSB7CisgICAgICAg
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soc3VjY2Vzc0NhbGxiYWNrKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQg
fHwgbV9zdGF0ZSA9PSBTdGF0ZTo6SW50ZXJydXB0ZWQgfHwgIW1fZGVzdGluYXRpb25Ob2RlKSB7
CisgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soZmFpbHVyZUNhbGxi
YWNrKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGFkZFJlYWN0aW9uKFN0YXRlOjpT
dXNwZW5kZWQsIHN1Y2Nlc3NDYWxsYmFjayk7CisKKyAgICBpZiAoIW1fbWVkaWFTZXNzaW9uLT5j
bGllbnRXaWxsUGF1c2VQbGF5YmFjaygpKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8
QXVkaW9Db250ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOworICAgIG1fZGVzdGluYXRpb25Ob2RlLT5z
dXNwZW5kKFtzdHJvbmdUaGlzXSB7CisgICAgICAgIHN0cm9uZ1RoaXMtPnNldFN0YXRlKFN0YXRl
OjpTdXNwZW5kZWQpOworICAgIH0pOworfQorCit2b2lkIEF1ZGlvQ29udGV4dDo6cmVzdW1lQ29u
dGV4dChzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gc3VjY2Vzc0NhbGxiYWNrLCBzdGQ6OmZ1bmN0aW9u
PHZvaWQoKT4gZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBBU1NF
UlQoc3VjY2Vzc0NhbGxiYWNrKTsKKyAgICBBU1NFUlQoZmFpbHVyZUNhbGxiYWNrKTsKKworICAg
IGlmIChpc09mZmxpbmVDb250ZXh0KCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VS
UjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpS
dW5uaW5nKSB7CisgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soc3Vj
Y2Vzc0NhbGxiYWNrKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX3N0YXRl
ID09IFN0YXRlOjpDbG9zZWQgfHwgIW1fZGVzdGluYXRpb25Ob2RlKSB7CisgICAgICAgIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soZmFpbHVyZUNhbGxiYWNrKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGFkZFJlYWN0aW9uKFN0YXRlOjpSdW5uaW5nLCBzdWNjZXNz
Q2FsbGJhY2spOworCisgICAgaWYgKCFtX21lZGlhU2Vzc2lvbi0+Y2xpZW50V2lsbEJlZ2luUGxh
eWJhY2soKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4gc3Ry
b25nVGhpcyh0aGlzKTsKKyAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+cmVzdW1lKFtzdHJvbmdUaGlz
XSB7CisgICAgICAgIHN0cm9uZ1RoaXMtPnNldFN0YXRlKFN0YXRlOjpSdW5uaW5nKTsKKyAgICB9
KTsKK30KKwordm9pZCBBdWRpb0NvbnRleHQ6OmNsb3NlQ29udGV4dChzdGQ6OmZ1bmN0aW9uPHZv
aWQoKT4gc3VjY2Vzc0NhbGxiYWNrLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4sIEV4Y2VwdGlvbkNv
ZGUmIGVjKQoreworICAgIEFTU0VSVChzdWNjZXNzQ2FsbGJhY2spOworCisgICAgaWYgKGlzT2Zm
bGluZUNvbnRleHQoKSkgeworICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCB8fCAh
bV9kZXN0aW5hdGlvbk5vZGUpIHsKKyAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5w
b3N0VGFzayhzdWNjZXNzQ2FsbGJhY2spOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
YWRkUmVhY3Rpb24oU3RhdGU6OkNsb3NlZCwgc3VjY2Vzc0NhbGxiYWNrKTsKKworICAgIFJlZlB0
cjxBdWRpb0NvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7CisgICAgbV9kZXN0aW5hdGlvbk5vZGUt
PmNsb3NlKFtzdHJvbmdUaGlzLCBzdWNjZXNzQ2FsbGJhY2tdIHsKKyAgICAgICAgc3Ryb25nVGhp
cy0+c2V0U3RhdGUoU3RhdGU6OkNsb3NlZCk7CisgICAgICAgIHN0cm9uZ1RoaXMtPnVuaW5pdGlh
bGl6ZSgpOworICAgIH0pOworfQorCisKK3ZvaWQgQXVkaW9Db250ZXh0OjpzdXNwZW5kUGxheWJh
Y2soKQoreworICAgIGlmICghbV9kZXN0aW5hdGlvbk5vZGUgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6
Q2xvc2VkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6U3Vz
cGVuZGVkKSB7CisgICAgICAgIGlmIChtX21lZGlhU2Vzc2lvbi0+c3RhdGUoKSA9PSBNZWRpYVNl
c3Npb246OkludGVycnVwdGVkKQorICAgICAgICAgICAgc2V0U3RhdGUoU3RhdGU6OkludGVycnVw
dGVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJlZlB0cjxBdWRpb0NvbnRleHQ+
IHN0cm9uZ1RoaXModGhpcyk7CisgICAgbV9kZXN0aW5hdGlvbk5vZGUtPnN1c3BlbmQoW3N0cm9u
Z1RoaXNdIHsKKyAgICAgICAgYm9vbCBpbnRlcnJ1cHRlZCA9IHN0cm9uZ1RoaXMtPm1fbWVkaWFT
ZXNzaW9uLT5zdGF0ZSgpID09IE1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0ZWQ7CisgICAgICAgIHN0
cm9uZ1RoaXMtPnNldFN0YXRlKGludGVycnVwdGVkID8gU3RhdGU6OkludGVycnVwdGVkIDogU3Rh
dGU6OlN1c3BlbmRlZCk7CisgICAgfSk7Cit9CisKK3ZvaWQgQXVkaW9Db250ZXh0OjptYXlSZXN1
bWVQbGF5YmFjayhib29sIHNob3VsZFJlc3VtZSkKK3sKKyAgICBpZiAoIW1fZGVzdGluYXRpb25O
b2RlIHx8IG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCB8fCBtX3N0YXRlID09IFN0YXRlOjpSdW5u
aW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIXNob3VsZFJlc3VtZSkgeworICAgICAg
ICBzZXRTdGF0ZShTdGF0ZTo6U3VzcGVuZGVkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIFJlZlB0cjxBdWRpb0NvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7CisgICAgbV9kZXN0aW5h
dGlvbk5vZGUtPnJlc3VtZShbc3Ryb25nVGhpc10geworICAgICAgICBzdHJvbmdUaGlzLT5zZXRT
dGF0ZShTdGF0ZTo6UnVubmluZyk7CisgICAgfSk7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCmluZGV4IGFlODc3MmJhMGI1M2Q3OTc3OGJi
MmVmMzU5OGNiMDAwYWQxOGI0NjQuLjhkYmI3NjZkMjBlMjdhOWJmNDk0ZjM5NDhlNWVjNTI5YzY3
YjkwY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9D
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRl
eHQuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNs
dWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIk1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oIgor
I2luY2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgogI2luY2x1ZGUgPGF0b21pYz4KICNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC01Nyw2ICs1OCw3
IEBAIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiBjbGFzcyBDaGFubmVsTWVyZ2VyTm9kZTsKIGNs
YXNzIENoYW5uZWxTcGxpdHRlck5vZGU7CiBjbGFzcyBHYWluTm9kZTsKK2NsYXNzIEdlbmVyaWNF
dmVudFF1ZXVlOwogY2xhc3MgUGFubmVyTm9kZTsKIGNsYXNzIEF1ZGlvTGlzdGVuZXI7CiBjbGFz
cyBBdWRpb1N1bW1pbmdKdW5jdGlvbjsKQEAgLTc0LDcgKzc2LDcgQEAgY2xhc3MgUGVyaW9kaWNX
YXZlOwogLy8gQXVkaW9Db250ZXh0IGlzIHRoZSBjb3JuZXJzdG9uZSBvZiB0aGUgd2ViIGF1ZGlv
IEFQSSBhbmQgYWxsIEF1ZGlvTm9kZXMgYXJlIGNyZWF0ZWQgZnJvbSBpdC4KIC8vIEZvciB0aHJl
YWQgc2FmZXR5IGJldHdlZW4gdGhlIGF1ZGlvIHRocmVhZCBhbmQgdGhlIG1haW4gdGhyZWFkLCBp
dCBoYXMgYSByZW5kZXJpbmcgZ3JhcGggbG9ja2luZyBtZWNoYW5pc20uIAogCi1jbGFzcyBBdWRp
b0NvbnRleHQgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8QXVkaW9Db250ZXh0PiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1
YmxpYyBNZWRpYUNhblN0YXJ0TGlzdGVuZXIsIHB1YmxpYyBBdWRpb1Byb2R1Y2VyIHsKK2NsYXNz
IEF1ZGlvQ29udGV4dCA6IHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxBdWRpb0NvbnRleHQ+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0
YSwgcHVibGljIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciwgcHVibGljIEF1ZGlvUHJvZHVjZXIsIHBy
aXZhdGUgTWVkaWFTZXNzaW9uQ2xpZW50IHsKIHB1YmxpYzoKICAgICAvLyBDcmVhdGUgYW4gQXVk
aW9Db250ZXh0IGZvciByZW5kZXJpbmcgdG8gdGhlIGF1ZGlvIGhhcmR3YXJlLgogICAgIHN0YXRp
YyBSZWZQdHI8QXVkaW9Db250ZXh0PiBjcmVhdGUoRG9jdW1lbnQmLCBFeGNlcHRpb25Db2RlJik7
CkBAIC0xMDQsNiArMTA2LDExIEBAIHB1YmxpYzoKIAogICAgIEF1ZGlvTGlzdGVuZXIqIGxpc3Rl
bmVyKCkgeyByZXR1cm4gbV9saXN0ZW5lci5nZXQoKTsgfQogCisgICAgdm9pZCBzdXNwZW5kQ29u
dGV4dChzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4sIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiwgRXhjZXB0
aW9uQ29kZSYpOworICAgIHZvaWQgcmVzdW1lQ29udGV4dChzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4s
IHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgY2xvc2VD
b250ZXh0KHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+LCBFeGNl
cHRpb25Db2RlJik7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBzdGF0ZSgpIGNvbnN0OworCiAg
ICAgLy8gVGhlIEF1ZGlvTm9kZSBjcmVhdGUgbWV0aG9kcyBhcmUgY2FsbGVkIG9uIHRoZSBtYWlu
IHRocmVhZCAoZnJvbSBKYXZhU2NyaXB0KS4KICAgICBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyU291
cmNlTm9kZT4gY3JlYXRlQnVmZmVyU291cmNlKCk7CiAjaWYgRU5BQkxFKFZJREVPKQpAQCAtMjY0
LDkgKzI3MSwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgbGF6eUluaXRpYWxpemUoKTsKICAgICB2
b2lkIHVuaW5pdGlhbGl6ZSgpOwogCisgICAgZW51bSBjbGFzcyBTdGF0ZSB7IFN1c3BlbmRlZCwg
UnVubmluZywgSW50ZXJydXB0ZWQsIENsb3NlZCB9OworICAgIHZvaWQgc2V0U3RhdGUoU3RhdGUp
OworCiAgICAgLy8gU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBjYWxscyBzdG9wIHR3aWNlLgogICAg
IC8vIFdlJ2QgbGlrZSB0byBzY2hlZHVsZSBvbmx5IG9uZSBzdG9wIGFjdGlvbiBmb3IgdGhlbS4K
LSAgICBib29sIG1faXNTdG9wU2NoZWR1bGVkOwogICAgIHN0YXRpYyB2b2lkIHN0b3BEaXNwYXRj
aCh2b2lkKiB1c2VyRGF0YSk7CiAgICAgdm9pZCBjbGVhcigpOwogCkBAIC0yNzksOSArMjg4LDYg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNQbGF5aW5nQXVkaW8oKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgcGFnZU11dGVkU3RhdGVEaWRDaGFuZ2UoKSBvdmVycmlkZTsKIAot
ICAgIGJvb2wgbV9pc0luaXRpYWxpemVkOwotICAgIGJvb2wgbV9pc0F1ZGlvVGhyZWFkRmluaXNo
ZWQ7Ci0KICAgICAvLyBUaGUgY29udGV4dCBpdHNlbGYga2VlcHMgYSByZWZlcmVuY2UgdG8gYWxs
IHNvdXJjZSBub2Rlcy4gIFRoZSBzb3VyY2Ugbm9kZXMsIHRoZW4gcmVmZXJlbmNlIGFsbCBub2Rl
cyB0aGV5J3JlIGNvbm5lY3RlZCB0by4KICAgICAvLyBJbiB0dXJuLCB0aGVzZSBub2RlcyByZWZl
cmVuY2UgYWxsIG5vZGVzIHRoZXkncmUgY29ubmVjdGVkIHRvLiAgQWxsIG5vZGVzIGFyZSB1bHRp
bWF0ZWx5IGNvbm5lY3RlZCB0byB0aGUgQXVkaW9EZXN0aW5hdGlvbk5vZGUuCiAgICAgLy8gV2hl
biB0aGUgY29udGV4dCBkZXJlZmVyZW5jZXMgYSBzb3VyY2Ugbm9kZSwgaXQgd2lsbCBiZSBkZWFj
dGl2YXRlZCBmcm9tIHRoZSByZW5kZXJpbmcgZ3JhcGggYWxvbmcgd2l0aCBhbGwgb3RoZXIgbm9k
ZXMgaXQgaXMKQEAgLTI5OCw4ICszMDQsMjQgQEAgcHJpdmF0ZToKICAgICAvLyBNYWtlIHN1cmUg
dG8gZGVyZWZlcmVuY2UgdGhlbSBoZXJlLgogICAgIHZvaWQgZGVyZWZVbmZpbmlzaGVkU291cmNl
Tm9kZXMoKTsKIAotICAgIFJlZlB0cjxBdWRpb0Rlc3RpbmF0aW9uTm9kZT4gbV9kZXN0aW5hdGlv
bk5vZGU7Ci0gICAgUmVmUHRyPEF1ZGlvTGlzdGVuZXI+IG1fbGlzdGVuZXI7CisgICAgLy8gTWVk
aWFTZXNzaW9uQ2xpZW50CisgICAgdmlydHVhbCBNZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBtZWRp
YVR5cGUoKSBjb25zdCB7IHJldHVybiBNZWRpYVNlc3Npb246OldlYkF1ZGlvOyB9CisgICAgdmly
dHVhbCBNZWRpYVNlc3Npb246Ok1lZGlhVHlwZSBwcmVzZW50YXRpb25UeXBlKCkgY29uc3QgeyBy
ZXR1cm4gTWVkaWFTZXNzaW9uOjpXZWJBdWRpbzsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5SZWNl
aXZlUmVtb3RlQ29udHJvbENvbW1hbmRzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKE1lZGlhU2Vzc2lvbjo6
UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgb3ZlcnJpZGVC
YWNrZ3JvdW5kUGxheWJhY2tSZXN0cmljdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgdmlydHVhbCB2b2lkIHN1c3BlbmRQbGF5YmFjaygpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBtYXlSZXN1bWVQbGF5YmFjayhib29sIHNob3VsZFJlc3VtZSkgb3ZlcnJpZGU7CisKKyAg
ICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIG92ZXJy
aWRlIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJy
aWRlIHsgZGVyZWYoKTsgfQorCisgICAgdm9pZCBoYW5kbGVEaXJ0eUF1ZGlvU3VtbWluZ0p1bmN0
aW9ucygpOworICAgIHZvaWQgaGFuZGxlRGlydHlBdWRpb05vZGVPdXRwdXRzKCk7CisKKyAgICB2
b2lkIGFkZFJlYWN0aW9uKFN0YXRlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4pOworICAgIHZvaWQg
dXBkYXRlQXV0b21hdGljUHVsbE5vZGVzKCk7CiAKICAgICAvLyBPbmx5IGFjY2Vzc2VkIGluIHRo
ZSBhdWRpbyB0aHJlYWQuCiAgICAgVmVjdG9yPEF1ZGlvTm9kZSo+IG1fZmluaXNoZWROb2RlczsK
QEAgLTMxNywzOSArMzM5LDM5IEBAIHByaXZhdGU6CiAKICAgICAvLyBUaGV5IHdpbGwgYmUgc2No
ZWR1bGVkIGZvciBkZWxldGlvbiAob24gdGhlIG1haW4gdGhyZWFkKSBhdCB0aGUgZW5kIG9mIGEg
cmVuZGVyIGN5Y2xlIChpbiByZWFsdGltZSB0aHJlYWQpLgogICAgIFZlY3RvcjxBdWRpb05vZGUq
PiBtX25vZGVzVG9EZWxldGU7Ci0gICAgYm9vbCBtX2lzRGVsZXRpb25TY2hlZHVsZWQ7CisKKyAg
ICBib29sIG1faXNEZWxldGlvblNjaGVkdWxlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzU3Rv
cFNjaGVkdWxlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzSW5pdGlhbGl6ZWQgeyBmYWxzZSB9
OworICAgIGJvb2wgbV9pc0F1ZGlvVGhyZWFkRmluaXNoZWQgeyBmYWxzZSB9OworICAgIGJvb2wg
bV9hdXRvbWF0aWNQdWxsTm9kZXNOZWVkVXBkYXRpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgbV9p
c09mZmxpbmVDb250ZXh0IHsgZmFsc2UgfTsKIAogICAgIC8vIE9ubHkgYWNjZXNzZWQgd2hlbiB0
aGUgZ3JhcGggbG9jayBpcyBoZWxkLgogICAgIEhhc2hTZXQ8QXVkaW9TdW1taW5nSnVuY3Rpb24q
PiBtX2RpcnR5U3VtbWluZ0p1bmN0aW9uczsKICAgICBIYXNoU2V0PEF1ZGlvTm9kZU91dHB1dCo+
IG1fZGlydHlBdWRpb05vZGVPdXRwdXRzOwotICAgIHZvaWQgaGFuZGxlRGlydHlBdWRpb1N1bW1p
bmdKdW5jdGlvbnMoKTsKLSAgICB2b2lkIGhhbmRsZURpcnR5QXVkaW9Ob2RlT3V0cHV0cygpOwog
CiAgICAgLy8gRm9yIHRoZSBzYWtlIG9mIHRocmVhZCBzYWZldHksIHdlIG1haW50YWluIGEgc2Vw
ZXJhdGUgVmVjdG9yIG9mIGF1dG9tYXRpYyBwdWxsIG5vZGVzIGZvciByZW5kZXJpbmcgaW4gbV9y
ZW5kZXJpbmdBdXRvbWF0aWNQdWxsTm9kZXMuCiAgICAgLy8gSXQgd2lsbCBiZSBjb3BpZWQgZnJv
bSBtX2F1dG9tYXRpY1B1bGxOb2RlcyBieSB1cGRhdGVBdXRvbWF0aWNQdWxsTm9kZXMoKSBhdCB0
aGUgdmVyeSBzdGFydCBvciBlbmQgb2YgdGhlIHJlbmRlcmluZyBxdWFudHVtLgogICAgIEhhc2hT
ZXQ8QXVkaW9Ob2RlKj4gbV9hdXRvbWF0aWNQdWxsTm9kZXM7CiAgICAgVmVjdG9yPEF1ZGlvTm9k
ZSo+IG1fcmVuZGVyaW5nQXV0b21hdGljUHVsbE5vZGVzOwotICAgIC8vIG1fYXV0b21hdGljUHVs
bE5vZGVzTmVlZFVwZGF0aW5nIGtlZXBzIHRyYWNrIGlmIG1fYXV0b21hdGljUHVsbE5vZGVzIGlz
IG1vZGlmaWVkLgotICAgIGJvb2wgbV9hdXRvbWF0aWNQdWxsTm9kZXNOZWVkVXBkYXRpbmc7Ci0g
ICAgdm9pZCB1cGRhdGVBdXRvbWF0aWNQdWxsTm9kZXMoKTsKLQotICAgIHVuc2lnbmVkIG1fY29u
bmVjdGlvbkNvdW50OwotCi0gICAgLy8gR3JhcGggbG9ja2luZy4KLSAgICBNdXRleCBtX2NvbnRl
eHRHcmFwaE11dGV4OwotICAgIHZvbGF0aWxlIFRocmVhZElkZW50aWZpZXIgbV9hdWRpb1RocmVh
ZDsKLSAgICB2b2xhdGlsZSBUaHJlYWRJZGVudGlmaWVyIG1fZ3JhcGhPd25lclRocmVhZDsgLy8g
aWYgdGhlIGxvY2sgaXMgaGVsZCB0aGVuIHRoaXMgaXMgdGhlIHRocmVhZCB3aGljaCBvd25zIGl0
LCBvdGhlcndpc2UgPT0gVW5kZWZpbmVkVGhyZWFkSWRlbnRpZmllcgotICAgIAogICAgIC8vIE9u
bHkgYWNjZXNzZWQgaW4gdGhlIGF1ZGlvIHRocmVhZC4KICAgICBWZWN0b3I8QXVkaW9Ob2RlKj4g
bV9kZWZlcnJlZEZpbmlzaERlcmVmTGlzdDsKKyAgICBWZWN0b3I8VmVjdG9yPHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPj4+IG1fc3RhdGVSZWFjdGlvbnM7CiAKLSAgICAvLyBFdmVudFRhcmdldAotICAg
IHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQorICAg
IHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVNlc3Npb24+IG1fbWVkaWFTZXNzaW9uOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxHZW5lcmljRXZlbnRRdWV1ZT4gbV9ldmVudFF1ZXVlOwogCiAgICAgUmVmUHRy
PEF1ZGlvQnVmZmVyPiBtX3JlbmRlclRhcmdldDsKLSAgICAKLSAgICBib29sIG1faXNPZmZsaW5l
Q29udGV4dDsKKyAgICBSZWZQdHI8QXVkaW9EZXN0aW5hdGlvbk5vZGU+IG1fZGVzdGluYXRpb25O
b2RlOworICAgIFJlZlB0cjxBdWRpb0xpc3RlbmVyPiBtX2xpc3RlbmVyOworCisgICAgdW5zaWdu
ZWQgbV9jb25uZWN0aW9uQ291bnQgeyAwIH07CisKKyAgICAvLyBHcmFwaCBsb2NraW5nLgorICAg
IE11dGV4IG1fY29udGV4dEdyYXBoTXV0ZXg7CisgICAgdm9sYXRpbGUgVGhyZWFkSWRlbnRpZmll
ciBtX2F1ZGlvVGhyZWFkIHsgMCB9OworICAgIHZvbGF0aWxlIFRocmVhZElkZW50aWZpZXIgbV9n
cmFwaE93bmVyVGhyZWFkOyAvLyBpZiB0aGUgbG9jayBpcyBoZWxkIHRoZW4gdGhpcyBpcyB0aGUg
dGhyZWFkIHdoaWNoIG93bnMgaXQsIG90aGVyd2lzZSA9PSBVbmRlZmluZWRUaHJlYWRJZGVudGlm
aWVyCiAKICAgICBBc3luY0F1ZGlvRGVjb2RlciBtX2F1ZGlvRGVjb2RlcjsKIApAQCAtMzU4LDEy
ICszODAsMTEgQEAgcHJpdmF0ZToKICAgICBlbnVtIHsgTWF4TnVtYmVyT2ZDaGFubmVscyA9IDMy
IH07CiAKICAgICAvLyBOdW1iZXIgb2YgQXVkaW9CdWZmZXJTb3VyY2VOb2RlcyB0aGF0IGFyZSBh
Y3RpdmUgKHBsYXlpbmcpLgotICAgIHN0ZDo6YXRvbWljPGludD4gbV9hY3RpdmVTb3VyY2VDb3Vu
dDsKKyAgICBzdGQ6OmF0b21pYzxpbnQ+IG1fYWN0aXZlU291cmNlQ291bnQgeyAwIH07CiAKLSAg
ICBCZWhhdmlvclJlc3RyaWN0aW9ucyBtX3Jlc3RyaWN0aW9uczsKKyAgICBCZWhhdmlvclJlc3Ry
aWN0aW9ucyBtX3Jlc3RyaWN0aW9ucyB7IE5vUmVzdHJpY3Rpb25zIH07CiAKLSAgICBlbnVtIGNs
YXNzIFN0YXRlIHsgU3VzcGVuZGVkLCBSdW5uaW5nLCBDbG9zZWQgfTsKLSAgICBTdGF0ZSBtX3N0
YXRlOworICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6U3VzcGVuZGVkIH07CiB9OwogCiB9IC8v
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Db250ZXh0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250
ZXh0LmlkbAppbmRleCBiOTc1ZTQ3MjhlODM1NzNmMGU3YjFkNmUxMjVjODYxYThlNzgzZjdiLi4x
MmNkNTc1Njg0YTY2YTkyZTBjYmIzNWE3OWRiNTVjNjMwN2E4MGQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsCkBAIC0yMyw2ICsyMywx
MyBAQAogICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAorZW51bSBBdWRpb0NvbnRleHRTdGF0ZSB7CisgICAgInN1c3Bl
bmRlZCIsCisgICAgInJ1bm5pbmciLAorICAgICJpbnRlcnJ1cHRlZCIsCisgICAgImNsb3NlZCIK
K307CisKIFsKICAgICBFbmFibGVkQnlTZXR0aW5nPVdlYkF1ZGlvLAogICAgIENvbmRpdGlvbmFs
PVdFQl9BVURJTywKQEAgLTQzLDYgKzUwLDEzIEBACiAgICAgLy8gQWxsIHBhbm5pbmcgaXMgcmVs
YXRpdmUgdG8gdGhpcyBsaXN0ZW5lci4KICAgICByZWFkb25seSBhdHRyaWJ1dGUgQXVkaW9MaXN0
ZW5lciBsaXN0ZW5lcjsKIAorICAgIFtDdXN0b21dIFByb21pc2Ugc3VzcGVuZCgpOworICAgIFtD
dXN0b21dIFByb21pc2UgcmVzdW1lKCk7CisgICAgW0N1c3RvbV0gUHJvbWlzZSBjbG9zZSgpOwor
CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlvQ29udGV4dFN0YXRlIHN0YXRlOworICAgIGF0
dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25zdGF0ZWNoYW5nZTsKKwogICAgIC8vIE51bWJlciBvZiBB
dWRpb0J1ZmZlclNvdXJjZU5vZGVzIHRoYXQgYXJlIGN1cnJlbnRseSBwbGF5aW5nLgogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGFjdGl2ZVNvdXJjZUNvdW50OwogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0
aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0
aW9uTm9kZS5oCmluZGV4IDc0ODk0NjQ5OWUzYjhkY2ViMTQyOGE5MzU1OGMyZjA3MTAzNmQxNTMu
LmFjNTg3YjFkZTI3M2Y3M2Y2ODI0ZWZmODA2ZWVlZmY3ZDBlMjIzYjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmgK
QEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb0J1czsK
IGNsYXNzIEF1ZGlvQ29udGV4dDsKLSAgICAKKwogY2xhc3MgQXVkaW9EZXN0aW5hdGlvbk5vZGUg
OiBwdWJsaWMgQXVkaW9Ob2RlLCBwdWJsaWMgQXVkaW9JT0NhbGxiYWNrIHsKIHB1YmxpYzoKICAg
ICBBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRlKTsK
QEAgLTU4LDYgKzU4LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbmFibGVJbnB1dChj
b25zdCBTdHJpbmcmIGlucHV0RGV2aWNlSWQpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzdGFy
dFJlbmRlcmluZygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKHN0ZDo6ZnVuY3Rpb248
dm9pZCgpPikgeyB9CisgICAgdmlydHVhbCB2b2lkIHN1c3BlbmQoc3RkOjpmdW5jdGlvbjx2b2lk
KCk+KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2Uoc3RkOjpmdW5jdGlvbjx2b2lkKCk+KSB7
IH0KIAogICAgIEF1ZGlvU291cmNlUHJvdmlkZXIqIGxvY2FsQXVkaW9JbnB1dFByb3ZpZGVyKCkg
eyByZXR1cm4gJm1fbG9jYWxBdWRpb0lucHV0UHJvdmlkZXI7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5h
dGlvbk5vZGUuY3BwCmluZGV4IDk1NmNjMjI2Zjg1NmI0NzQxNDRlMzU2ZjdmM2VhODVmOTU5MmJh
YTkuLjBiY2MyYzBhNGFjNjBjOTQyNDAyMjY3ZGU1ZTRjNDBkY2JmODlkODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25O
b2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRp
b0Rlc3RpbmF0aW9uTm9kZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJBdWRpb0Nv
bnRleHQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgogCiBjb25zdCB1bnNpZ25lZCBFbmFibGVkSW5wdXRDaGFubmVscyA9IDI7CkBA
IC0xMDUsNiArMTA2LDI5IEBAIHZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpzdGFy
dFJlbmRlcmluZygpCiAgICAgICAgIG1fZGVzdGluYXRpb24tPnN0YXJ0KCk7CiB9CiAKK3ZvaWQg
RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpyZXN1bWUoc3RkOjpmdW5jdGlvbjx2b2lkKCk+
IGZ1bmN0aW9uKQoreworICAgIEFTU0VSVChpc0luaXRpYWxpemVkKCkpOworICAgIGlmIChpc0lu
aXRpYWxpemVkKCkpCisgICAgICAgIG1fZGVzdGluYXRpb24tPnN0YXJ0KCk7CisgICAgY29udGV4
dCgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKGZ1bmN0aW9uKTsKK30KKwor
dm9pZCBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnN1c3BlbmQoc3RkOjpmdW5jdGlvbjx2
b2lkKCk+IGZ1bmN0aW9uKQoreworICAgIEFTU0VSVChpc0luaXRpYWxpemVkKCkpOworICAgIGlm
IChpc0luaXRpYWxpemVkKCkpCisgICAgICAgIG1fZGVzdGluYXRpb24tPnN0b3AoKTsKKyAgICBj
b250ZXh0KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soZnVuY3Rpb24pOwor
fQorCit2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6Y2xvc2Uoc3RkOjpmdW5jdGlv
bjx2b2lkKCk+IGZ1bmN0aW9uKQoreworICAgIEFTU0VSVChpc0luaXRpYWxpemVkKCkpOworICAg
IHVuaW5pdGlhbGl6ZSgpOworICAgIGNvbnRleHQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5wb3N0VGFzayhmdW5jdGlvbik7Cit9CisKIHVuc2lnbmVkIGxvbmcgRGVmYXVsdEF1ZGlvRGVz
dGluYXRpb25Ob2RlOjptYXhDaGFubmVsQ291bnQoKSBjb25zdAogewogICAgIHJldHVybiBBdWRp
b0Rlc3RpbmF0aW9uOjptYXhDaGFubmVsQ291bnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5o
CmluZGV4IDJlMGE4NjU4Y2QyZWQwNGMzNThjNTVlM2NjYTgyN2NkMWQ1MmNiN2MuLmIxZDYyOGRk
MmU5Y2QwZDc0OTQzMzM4NjgyOTU1MGI0MWYyNWE2ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5v
ZGUuaApAQCAtNTAsNiArNTAsOSBAQCBwdWJsaWM6CiAgICAgLy8gQXVkaW9EZXN0aW5hdGlvbk5v
ZGUKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlSW5wdXQoY29uc3QgU3RyaW5nJiBpbnB1dERldmlj
ZUlkKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRSZW5kZXJpbmcoKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIHN1c3BlbmQoc3RkOjpmdW5jdGlvbjx2b2lkKCk+KSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2Uoc3RkOjpmdW5jdGlvbjx2b2lkKCk+KSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgbWF4Q2hhbm5lbENvdW50KCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGlzUGxheWluZygpIG92ZXJyaWRlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29udGV4dEN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvQ29udGV4dEN1c3RvbS5jcHAK
aW5kZXggMWE3NWQ5MzViYzczMjIwNWFiNDdhNWQxOTYwNGQwODI5ZDFkNGVjNS4uZGRlYzc5NGYw
ZTZmMjU5NDI2OGY2Zjk5MDY5Y2QwZDZkNDRjODhlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcApAQCAtMzMsNiArMzMsNyBA
QAogI2luY2x1ZGUgIkpTQXVkaW9CdWZmZXIuaCIKICNpbmNsdWRlICJKU0F1ZGlvQ29udGV4dC5o
IgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgog
I2luY2x1ZGUgIkpTT2ZmbGluZUF1ZGlvQ29udGV4dC5oIgogI2luY2x1ZGUgIk9mZmxpbmVBdWRp
b0NvbnRleHQuaCIKICNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CkBAIC0xMTAsNiAr
MTExLDY5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNBdWRpb0Nv
bnRleHQoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoQ1JFQVRF
X0RPTV9XUkFQUEVSKGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCBBdWRpb0NvbnRleHQs
IGF1ZGlvQ29udGV4dC5nZXQoKSkpOwogfQogCitKU1ZhbHVlIEpTQXVkaW9Db250ZXh0OjpzdXNw
ZW5kKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBEZWZlcnJlZFdyYXBwZXIgd3JhcHBlcihleGVj
LCBnbG9iYWxPYmplY3QoKSk7CisgICAgYXV0byBzdWNjZXNzQ2FsbGJhY2sgPSBbd3JhcHBlcl0o
KSBtdXRhYmxlIHsKKyAgICAgICAgd3JhcHBlci5yZXNvbHZlKG51bGxwdHIpOworICAgIH07Cisg
ICAgYXV0byBmYWlsdXJlQ2FsbGJhY2sgPSBbd3JhcHBlcl0oKSBtdXRhYmxlIHsKKyAgICAgICAg
d3JhcHBlci5yZWplY3QobnVsbHB0cik7CisgICAgfTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOworICAgIGltcGwoKS5zdXNwZW5kQ29udGV4dChXVEY6Om1vdmUoc3VjY2Vzc0NhbGxiYWNr
KSwgV1RGOjptb3ZlKGZhaWx1cmVDYWxsYmFjayksIGVjKTsKKworICAgIGlmIChlYykgeworICAg
ICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gd3JhcHBlci5wcm9taXNlKCk7Cit9CisKK0pTVmFs
dWUgSlNBdWRpb0NvbnRleHQ6OnJlc3VtZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgRGVmZXJy
ZWRXcmFwcGVyIHdyYXBwZXIoZXhlYywgZ2xvYmFsT2JqZWN0KCkpOworICAgIGF1dG8gc3VjY2Vz
c0NhbGxiYWNrID0gW3dyYXBwZXJdKCkgbXV0YWJsZSB7CisgICAgICAgIHdyYXBwZXIucmVzb2x2
ZShudWxscHRyKTsKKyAgICB9OworICAgIGF1dG8gZmFpbHVyZUNhbGxiYWNrID0gW3dyYXBwZXJd
KCkgbXV0YWJsZSB7CisgICAgICAgIHdyYXBwZXIucmVqZWN0KG51bGxwdHIpOworICAgIH07CisK
KyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBpbXBsKCkucmVzdW1lQ29udGV4dChXVEY6
Om1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGOjptb3ZlKGZhaWx1cmVDYWxsYmFjayksIGVjKTsK
KworICAgIGlmIChlYykgeworICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gd3JhcHBlci5w
cm9taXNlKCk7Cit9CisKK0pTVmFsdWUgSlNBdWRpb0NvbnRleHQ6OmNsb3NlKEV4ZWNTdGF0ZSog
ZXhlYykKK3sKKyAgICBEZWZlcnJlZFdyYXBwZXIgd3JhcHBlcihleGVjLCBnbG9iYWxPYmplY3Qo
KSk7CisgICAgYXV0byBzdWNjZXNzQ2FsbGJhY2sgPSBbd3JhcHBlcl0oKSBtdXRhYmxlIHsKKyAg
ICAgICAgd3JhcHBlci5yZXNvbHZlKG51bGxwdHIpOworICAgIH07CisgICAgYXV0byBmYWlsdXJl
Q2FsbGJhY2sgPSBbd3JhcHBlcl0oKSBtdXRhYmxlIHsKKyAgICAgICAgd3JhcHBlci5yZWplY3Qo
bnVsbHB0cik7CisgICAgfTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGltcGwo
KS5jbG9zZUNvbnRleHQoV1RGOjptb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURjo6bW92ZShmYWls
dXJlQ2FsbGJhY2spLCBlYyk7CisKKyAgICBpZiAoZWMpIHsKKyAgICAgICAgc2V0RE9NRXhjZXB0
aW9uKGV4ZWMsIGVjKTsKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorCisg
ICAgcmV0dXJuIHdyYXBwZXIucHJvbWlzZSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVRElPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQ2FsbGJhY2tEYXRhLmgKaW5kZXggMTljMDBjMjMyZmRjY2ExOTZmMDExMTg0MTAwNzQy
ZTM5ZjFjMTY1MS4uODNhZTg5NzQ3MzFiOGY4NDgwMGQ4MTQ2MzMzM2IwMzA5NjIxNWE0MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5oCkBAIC04MCw5ICs4
MCw5IEBAIHByaXZhdGU6CiBjbGFzcyBEZWxldGVDYWxsYmFja0RhdGFUYXNrIDogcHVibGljIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewogcHVibGljOgogICAgIERlbGV0ZUNhbGxiYWNr
RGF0YVRhc2soSlNDYWxsYmFja0RhdGEqIGRhdGEpCi0gICAgICAgIDogU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzayh7IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s6OkNsZWFudXBUYXNr
LCBbZGF0YV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgICAgIDogU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrOjpDbGVhbnVw
VGFzaywgW2RhdGFdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAgICAgICAgZGVs
ZXRlIGRhdGE7Ci0gICAgICAgIH0gfSkKKyAgICAgICAgfSkKICAgICB7CiAgICAgfQogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgKaW5kZXggNDJkMDJkOWYyOGU5
ZTZhODRhNGU3NWMzYTczMThmOTYxNGY5YTAxYy4uZDk1NjgxMmM0M2UyMzFjZTZhNTA4ZjU0OTE4
MGJmZDBmMjk1ZWQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01Qcm9taXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNl
LmgKQEAgLTEwNyw2ICsxMDcsMTQgQEAgaW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZXNv
bHZlPFZlY3Rvcjx1bnNpZ25lZCBjaGFyPj4oY29uc3QgVmVjdG9yPHVuc2lnbmUKIH0KIAogdGVt
cGxhdGU8PgoraW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZXNvbHZlKGNvbnN0IHN0ZDo6
bnVsbHB0cl90JikKK3sKKyAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IG1fZ2xvYmFsT2JqZWN0
LT5nbG9iYWxFeGVjKCk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOworICAg
IHJlc29sdmUoZXhlYywgSlNDOjpqc051bGwoKSk7Cit9CisKK3RlbXBsYXRlPD4KIGlubGluZSB2
b2lkIERlZmVycmVkV3JhcHBlcjo6cmVqZWN0PFN0cmluZz4oY29uc3QgU3RyaW5nJiByZXN1bHQp
CiB7CiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhl
YygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKaW5kZXggZjFmZDEyNzM5ZjYyNmJlMjI5OWQ1ZGRk
ZTA2Nzc0YWRiZGExYjQ0Yy4uNTQ1ZTE2ZTUyNGUwNzFmMWUyNTgyNDVhMDhjNjFlNWM1ZGI1OTll
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCkBAIC0xOTAsNiArMTkwLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIG1hY3JvKHN0YWxsZWQpIFwKICAgICBtYWNybyhzdGFydCkgXAogICAg
IG1hY3JvKHN0YXJ0ZWQpIFwKKyAgICBtYWNybyhzdGF0ZWNoYW5nZSkgXAogICAgIG1hY3JvKHN0
b3JhZ2UpIFwKICAgICBtYWNybyhzdWJtaXQpIFwKICAgICBtYWNybyhzdWNjZXNzKSBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCAxMTQ2NjEyNjcw
M2VlMzJkMzFkZGRmMDk2NGFlYTZjNmM2Yzg3NGRmLi43OTAxOThiYTdmZjhiY2M0MDc3OTlkMGZh
ZmFiZjcwMzMxYzEwNTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgKQEAgLTEzMCw2ICsxMzAsMTIgQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAg
IH0KIAorICAgICAgICBUYXNrKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiB0YXNrKQorICAgICAgICAg
ICAgOiBtX3Rhc2soW3Rhc2tdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7IHRhc2soKTsgfSkK
KyAgICAgICAgICAgICwgbV9pc0NsZWFudXBUYXNrKGZhbHNlKQorICAgICAgICB7CisgICAgICAg
IH0KKwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfY29udmVydGlibGU8VCwgc3RkOjpmdW5jdGlvbjx2b2lkIChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Jik+Pjo6dmFsdWU+Ojp0eXBlPgogICAgICAgICBUYXNrKENs
ZWFudXBUYXNrVGFnLCBUIHRhc2spCiAgICAgICAgICAgICA6IG1fdGFzayhXVEY6Om1vdmUodGFz
aykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCAxYTllMjk4
ZjY0NGQ2YjFlMWE4ZjMyZjIyYzdiMWQ3NGNiNzZlNzFiLi44ZDlkODViZjI2ZTQ3MmYwYWQxYmRh
MTE4NDhlNDM4YTE1Njc2MTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKQEAgLTYwMzEsMTcgKzYwMzEsMTcgQEAgc2l6ZV90IEhUTUxNZWRpYUVsZW1lbnQ6Om1h
eGltdW1Tb3VyY2VCdWZmZXJTaXplKGNvbnN0IFNvdXJjZUJ1ZmZlciYgYnVmZmVyKSBjb24KIH0K
ICNlbmRpZgogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlUGxheWJhY2soKQordm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpzdXNwZW5kUGxheWJhY2soKQogewogICAgIExPRyhNZWRpYSwgIkhU
TUxNZWRpYUVsZW1lbnQ6OnBhdXNlUGxheWJhY2soJXApIC0gcGF1c2VkID0gJXMiLCB0aGlzLCBi
b29sU3RyaW5nKHBhdXNlZCgpKSk7CiAgICAgaWYgKCFwYXVzZWQoKSkKICAgICAgICAgcGF1c2Uo
KTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZXN1bWVQbGF5YmFjaygpCit2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6Om1heVJlc3VtZVBsYXliYWNrKGJvb2wgc2hvdWxkUmVzdW1lKQogewog
ICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnJlc3VtZVBsYXliYWNrKCVwKSAtIHBh
dXNlZCA9ICVzIiwgdGhpcywgYm9vbFN0cmluZyhwYXVzZWQoKSkpOwotICAgIGlmIChwYXVzZWQo
KSkKKyAgICBpZiAocGF1c2VkKCkgJiYgc2hvdWxkUmVzdW1lKQogICAgICAgICBwbGF5KCk7CiB9
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDllNjE5MGI0
OGFkNzhlYmRhN2M0OGVkNWM4NTNkZTNlZTE0YjgxZTAuLjZhMTY2ZTVhYjhjMGIwY2VmMTk4NTU5
ODViOWYwZDI5YzMwZTFkMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5o
CkBAIC03MDcsOCArNzA3LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIE1lZGlhU2Vzc2lvbjo6
TWVkaWFUeXBlIG1lZGlhVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgTWVkaWFT
ZXNzaW9uOjpNZWRpYVR5cGUgcHJlc2VudGF0aW9uVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgTWVkaWFTZXNzaW9uOjpEaXNwbGF5VHlwZSBkaXNwbGF5VHlwZSgpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYXVzZVBsYXliYWNrKCkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIHJlc3VtZVBsYXliYWNrKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IHN1c3BlbmRQbGF5YmFjaygpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBtYXlSZXN1bWVQ
bGF5YmFjayhib29sIHNob3VsZFJlc3VtZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBTdHJpbmcg
bWVkaWFTZXNzaW9uVGl0bGUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGRvdWJsZSBt
ZWRpYVNlc3Npb25EdXJhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGR1cmF0aW9uKCk7
IH0KICAgICB2aXJ0dWFsIGRvdWJsZSBtZWRpYVNlc3Npb25DdXJyZW50VGltZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGN1cnJlbnRUaW1lKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwCmluZGV4IGY0ZGI0ZmVmMDQ1ZWM5Nzg0M2YwMDkx
NTVmNGFhZDEwMDM0NDE0ZDcuLmFlOTU1MDIzYmYzMmUyNmNjZmU0MzA2ZDU5MGIyYzU0NjdmMmJl
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNw
cApAQCAtODYsOSArODYsMTAgQEAgc2l6ZV90IEF1ZGlvU2Vzc2lvbjo6bnVtYmVyT2ZPdXRwdXRD
aGFubmVscygpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgQXVkaW9TZXNzaW9uOjpz
ZXRBY3RpdmUoYm9vbCkKK2Jvb2wgQXVkaW9TZXNzaW9uOjp0cnlUb1NldEFjdGl2ZShib29sKQog
ewogICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHNpemVfdCBB
dWRpb1Nlc3Npb246OnByZWZlcnJlZEJ1ZmZlclNpemUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaAppbmRleCBkODk3NjNlMjQ0OWY3OGUzMGY0
ZDUyNGQ2NzMwYWE2NmYyYzVkYThlLi5jNmM5NDUyZmQ0YzIwNWZmZDliZTY3MGZlNjI5ZmM2MzU2
MWFkM2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nl
c3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24u
aApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0
OwogICAgIHNpemVfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzKCkgY29uc3Q7CiAKLSAgICB2b2lk
IHNldEFjdGl2ZShib29sKTsKKyAgICBib29sIHRyeVRvU2V0QWN0aXZlKGJvb2wpOwogCiAgICAg
c2l6ZV90IHByZWZlcnJlZEJ1ZmZlclNpemUoKSBjb25zdDsKICAgICB2b2lkIHNldFByZWZlcnJl
ZEJ1ZmZlclNpemUoc2l6ZV90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL01lZGlhU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9N
ZWRpYVNlc3Npb24uY3BwCmluZGV4IDZmNjhkNzAwZTVmNjJiMzAyODIwYTJlMTllM2EyMWVmYjY1
NmYzZDkuLjE4ZWE4MjNjYjkxOTBjODYwN2Y5YjUyY2RjNjM4MDE1ZjQxNGE0NTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uLmNwcApAQCAtODgsOCAr
ODgsOCBAQCB2b2lkIE1lZGlhU2Vzc2lvbjo6YmVnaW5JbnRlcnJ1cHRpb24oSW50ZXJydXB0aW9u
VHlwZSB0eXBlKQogCiAgICAgbV9zdGF0ZVRvUmVzdG9yZSA9IHN0YXRlKCk7CiAgICAgbV9ub3Rp
ZnlpbmdDbGllbnQgPSB0cnVlOwotICAgIGNsaWVudCgpLnBhdXNlUGxheWJhY2soKTsKICAgICBz
ZXRTdGF0ZShJbnRlcnJ1cHRlZCk7CisgICAgY2xpZW50KCkuc3VzcGVuZFBsYXliYWNrKCk7CiAg
ICAgbV9ub3RpZnlpbmdDbGllbnQgPSBmYWxzZTsKIH0KIApAQCAtMTA5LDI4ICsxMDksMzUgQEAg
dm9pZCBNZWRpYVNlc3Npb246OmVuZEludGVycnVwdGlvbihFbmRJbnRlcnJ1cHRpb25GbGFncyBm
bGFncykKICAgICBtX3N0YXRlVG9SZXN0b3JlID0gSWRsZTsKICAgICBzZXRTdGF0ZShQYXVzZWQp
OwogCi0gICAgaWYgKGZsYWdzICYgTWF5UmVzdW1lUGxheWluZyAmJiBzdGF0ZVRvUmVzdG9yZSA9
PSBQbGF5aW5nKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbjo6ZW5kSW50ZXJy
dXB0aW9uIC0gcmVzdW1pbmcgcGxheWJhY2siKTsKLSAgICAgICAgY2xpZW50KCkucmVzdW1lUGxh
eWJhY2soKTsKLSAgICB9CisgICAgYm9vbCBzaG91bGRSZXN1bWUgPSBmbGFncyAmIE1heVJlc3Vt
ZVBsYXlpbmcgJiYgc3RhdGVUb1Jlc3RvcmUgPT0gUGxheWluZzsKKyAgICBjbGllbnQoKS5tYXlS
ZXN1bWVQbGF5YmFjayhzaG91bGRSZXN1bWUpOwogfQogCiBib29sIE1lZGlhU2Vzc2lvbjo6Y2xp
ZW50V2lsbEJlZ2luUGxheWJhY2soKQogeworICAgIGlmIChtX25vdGlmeWluZ0NsaWVudCkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoIU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJl
ZE1hbmFnZXIoKS5zZXNzaW9uV2lsbEJlZ2luUGxheWJhY2soKnRoaXMpKSB7CisgICAgICAgIGlm
IChzdGF0ZSgpID09IEludGVycnVwdGVkKQorICAgICAgICAgICAgbV9zdGF0ZVRvUmVzdG9yZSA9
IFBsYXlpbmc7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICBzZXRTdGF0ZShQ
bGF5aW5nKTsKLSAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuc2Vzc2lv
bldpbGxCZWdpblBsYXliYWNrKCp0aGlzKTsKICAgICB1cGRhdGVDbGllbnREYXRhQnVmZmVyaW5n
KCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgTWVkaWFTZXNzaW9uOjpjbGllbnRXaWxs
UGF1c2VQbGF5YmFjaygpCiB7CisgICAgaWYgKG1fbm90aWZ5aW5nQ2xpZW50KQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKwogICAgIExPRyhNZWRpYSwgIk1lZGlhU2Vzc2lvbjo6Y2xpZW50V2lsbFBh
dXNlUGxheWJhY2soJXApLSBzdGF0ZSA9ICVzIiwgdGhpcywgc3RhdGVOYW1lKG1fc3RhdGUpKTsK
ICAgICBpZiAoc3RhdGUoKSA9PSBJbnRlcnJ1cHRlZCkgewotICAgICAgICBpZiAoIW1fbm90aWZ5
aW5nQ2xpZW50KSB7Ci0gICAgICAgICAgICBtX3N0YXRlVG9SZXN0b3JlID0gUGF1c2VkOwotICAg
ICAgICAgICAgTE9HKE1lZGlhLCAiICAgICAgc2V0dGluZyBzdGF0ZVRvUmVzdG9yZSB0byBcIlBh
dXNlZFwiIik7Ci0gICAgICAgIH0KKyAgICAgICAgbV9zdGF0ZVRvUmVzdG9yZSA9IFBhdXNlZDsK
KyAgICAgICAgTE9HKE1lZGlhLCAiICAgICAgc2V0dGluZyBzdGF0ZVRvUmVzdG9yZSB0byBcIlBh
dXNlZFwiIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCkBAIC0xNDQsNyAr
MTUxLDcgQEAgYm9vbCBNZWRpYVNlc3Npb246OmNsaWVudFdpbGxQYXVzZVBsYXliYWNrKCkKIHZv
aWQgTWVkaWFTZXNzaW9uOjpwYXVzZVNlc3Npb24oKQogewogICAgIExPRyhNZWRpYSwgIk1lZGlh
U2Vzc2lvbjo6cGF1c2VTZXNzaW9uKCVwKSIsIHRoaXMpOwotICAgIG1fY2xpZW50LnBhdXNlUGxh
eWJhY2soKTsKKyAgICBtX2NsaWVudC5zdXNwZW5kUGxheWJhY2soKTsKIH0KIAogTWVkaWFTZXNz
aW9uOjpNZWRpYVR5cGUgTWVkaWFTZXNzaW9uOjptZWRpYVR5cGUoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Npb24uaAppbmRleCA2ZDc1NGM2YmU1NTZl
MDM5NGFkMzBhN2NhMDYzNDhmMGVhMTYxZmVhLi5lOTc3ODE0MTdkNmQwYTk4YTMyZGRiZjdiOGVh
NmM4NTQ1NjNjNjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9N
ZWRpYVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNl
c3Npb24uaApAQCAtMTQ5LDggKzE0OSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIE1lZGlhU2Vz
c2lvbjo6TWVkaWFUeXBlIHByZXNlbnRhdGlvblR5cGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCBNZWRpYVNlc3Npb246OkRpc3BsYXlUeXBlIGRpc3BsYXlUeXBlKCkgY29uc3QgeyByZXR1cm4g
TWVkaWFTZXNzaW9uOjpOb3JtYWw7IH0KIAotICAgIHZpcnR1YWwgdm9pZCByZXN1bWVQbGF5YmFj
aygpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcGF1c2VQbGF5YmFjaygpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgbWF5UmVzdW1lUGxheWJhY2soYm9vbCBzaG91bGRSZXN1bWUpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgc3VzcGVuZFBsYXliYWNrKCkgPSAwOwogCiAgICAgdmlydHVhbCBTdHJpbmcg
bWVkaWFTZXNzaW9uVGl0bGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGRvdWJsZSBtZWRpYVNlc3Np
b25EdXJhdGlvbigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAppbmRleCBlMTMwYzJjYWZmNGE2ZTViZDQyNzcz
MzExNzJhNGEzMWVkNGM0ZmRlLi41YzA0YmYyY2JlNmFhNmI2NWRjMDM0NDc1ODQzMzIwNTgwZjI1
ZTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNlc3Np
b25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRpYVNl
c3Npb25NYW5hZ2VyLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKFZJREVPKQog
CisjaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiTWVkaWFTZXNzaW9uLmgiCkBAIC0xNjYs
NyArMTY3LDcgQEAgTWVkaWFTZXNzaW9uTWFuYWdlcjo6U2Vzc2lvblJlc3RyaWN0aW9ucyBNZWRp
YVNlc3Npb25NYW5hZ2VyOjpyZXN0cmljdGlvbnMoTWVkaWEKICAgICByZXR1cm4gbV9yZXN0cmlj
dGlvbnNbdHlwZV07CiB9CiAKLXZvaWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxC
ZWdpblBsYXliYWNrKE1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikKK2Jvb2wgTWVkaWFTZXNzaW9uTWFu
YWdlcjo6c2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKE1lZGlhU2Vzc2lvbiYgc2Vzc2lvbikKIHsK
ICAgICBMT0coTWVkaWEsICJNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uV2lsbEJlZ2luUGxh
eWJhY2sgLSAlcCIsICZzZXNzaW9uKTsKICAgICAKQEAgLTE3NCw4ICsxNzUsMTkgQEAgdm9pZCBN
ZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNzaW9uV2lsbEJlZ2luUGxheWJhY2soTWVkaWFTZXNzaW9u
JiBzZXNzaW9uKQogCiAgICAgTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgc2Vzc2lvblR5cGUgPSBz
ZXNzaW9uLm1lZGlhVHlwZSgpOwogICAgIFNlc3Npb25SZXN0cmljdGlvbnMgcmVzdHJpY3Rpb25z
ID0gbV9yZXN0cmljdGlvbnNbc2Vzc2lvblR5cGVdOworICAgIGlmIChzZXNzaW9uLnN0YXRlKCkg
PT0gTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRlZCAmJiByZXN0cmljdGlvbnMgJiBJbnRlcnJ1cHRl
ZFBsYXliYWNrTm90UGVybWl0dGVkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyNpZiBVU0Uo
QVVESU9fU0VTU0lPTikKKyAgICBpZiAoYWN0aXZlQXVkaW9TZXNzaW9uUmVxdWlyZWQoKSAmJiAh
QXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkudHJ5VG9TZXRBY3RpdmUodHJ1ZSkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorCisgICAgaWYgKG1faW50ZXJydXB0ZWQpCisgICAg
ICAgIGVuZEludGVycnVwdGlvbihNZWRpYVNlc3Npb246Ok5vRmxhZ3MpOworCiAgICAgaWYgKCFy
ZXN0cmljdGlvbnMgJiBDb25jdXJyZW50UGxheWJhY2tOb3RQZXJtaXR0ZWQpCi0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBWZWN0b3I8TWVkaWFTZXNzaW9uKj4g
c2Vzc2lvbnMgPSBtX3Nlc3Npb25zOwogICAgIGZvciAoYXV0byogb25lU2Vzc2lvbiA6IHNlc3Np
b25zKSB7CkBAIC0xODgsNiArMjAwLDcgQEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzZXNz
aW9uV2lsbEJlZ2luUGxheWJhY2soTWVkaWFTZXNzaW9uJiBzZXNzaW9uKQogICAgIH0KICAgICAK
ICAgICB1cGRhdGVTZXNzaW9uU3RhdGUoKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KICAgICAKIHZv
aWQgTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2Vzc2lvbldpbGxFbmRQbGF5YmFjayhNZWRpYVNlc3Np
b24mIHNlc3Npb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9N
ZWRpYVNlc3Npb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9NZWRp
YVNlc3Npb25NYW5hZ2VyLmgKaW5kZXggYzQ1NTk1ZTI2M2U2ZmUzZDgzOTRkMGVmMDI4N2VlYTU3
NDhlMDhlMS4uMjk2ZGNkNTMyOWI2NDc4ZjFlMDUyZjg5OTA2ZTcxNWJhYzZjOWIyNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTWVkaWFTZXNzaW9uTWFuYWdlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL01lZGlhU2Vzc2lvbk1hbmFnZXIu
aApAQCAtNjMsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIEF1dG9QcmVsb2FkaW5nTm90UGVy
bWl0dGVkID0gMSA8PCAzLAogICAgICAgICBCYWNrZ3JvdW5kUHJvY2Vzc1BsYXliYWNrUmVzdHJp
Y3RlZCA9IDEgPDwgNCwKICAgICAgICAgQmFja2dyb3VuZFRhYlBsYXliYWNrUmVzdHJpY3RlZCA9
IDEgPDwgNSwKKyAgICAgICAgSW50ZXJydXB0ZWRQbGF5YmFja05vdFBlcm1pdHRlZCA9IDEgPDwg
NiwKICAgICB9OwogICAgIHR5cGVkZWYgdW5zaWduZWQgU2Vzc2lvblJlc3RyaWN0aW9uczsKIApA
QCAtNzEsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgU2Vzc2lvblJlc3Ry
aWN0aW9ucyByZXN0cmljdGlvbnMoTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUpOwogICAgIHZpcnR1
YWwgdm9pZCByZXNldFJlc3RyaWN0aW9ucygpOwogCi0gICAgdmlydHVhbCB2b2lkIHNlc3Npb25X
aWxsQmVnaW5QbGF5YmFjayhNZWRpYVNlc3Npb24mKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2Vzc2lv
bldpbGxCZWdpblBsYXliYWNrKE1lZGlhU2Vzc2lvbiYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXNz
aW9uV2lsbEVuZFBsYXliYWNrKE1lZGlhU2Vzc2lvbiYpOwogCiAgICAgYm9vbCBzZXNzaW9uUmVz
dHJpY3RzSW5saW5lVmlkZW9QbGF5YmFjayhjb25zdCBNZWRpYVNlc3Npb24mKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0
aW9uSU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3Rp
bmF0aW9uSU9TLmNwcAppbmRleCBiNDRiMGNlYzI5MWQ4YmU3MGFjMjRmYzVjYThlYmQ0ZmY5OTVk
ZTg0Li45ZDhkMWUxNGE2YWI5ZWZlMDRhOTk2YWI2NmM2ODEwMzA3ODk3Mzc5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRp
b25JT1MuY3BwCkBAIC0xMDAsNyArMTAwLDYgQEAgQXVkaW9EZXN0aW5hdGlvbklPUzo6QXVkaW9E
ZXN0aW5hdGlvbklPUyhBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLCBkb3VibGUgc2FtcGwKICAg
ICA6IG1fb3V0cHV0VW5pdCgwKQogICAgICwgbV9jYWxsYmFjayhjYWxsYmFjaykKICAgICAsIG1f
cmVuZGVyQnVzKEF1ZGlvQnVzOjpjcmVhdGUoMiwga1JlbmRlckJ1ZmZlclNpemUsIGZhbHNlKSkK
LSAgICAsIG1fbWVkaWFTZXNzaW9uKE1lZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0aGlzKSkKICAgICAs
IG1fc2FtcGxlUmF0ZShzYW1wbGVSYXRlKQogICAgICwgbV9pc1BsYXlpbmcoZmFsc2UpCiB7CkBA
IC0xODQsMTAgKzE4Myw2IEBAIHZvaWQgQXVkaW9EZXN0aW5hdGlvbklPUzo6Y29uZmlndXJlKCkK
IHZvaWQgQXVkaW9EZXN0aW5hdGlvbklPUzo6c3RhcnQoKQogewogICAgIExPRyhNZWRpYSwgIkF1
ZGlvRGVzdGluYXRpb25JT1M6OnN0YXJ0Iik7Ci0gICAgaWYgKCFtX21lZGlhU2Vzc2lvbi0+Y2xp
ZW50V2lsbEJlZ2luUGxheWJhY2soKSkgewotICAgICAgICBMT0coTWVkaWEsICIgIHJldHVybmlu
ZyBiZWNhdXNlIG9mIGludGVycnVwdGlvbiIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQogCiAg
ICAgT1NTdGF0dXMgcmVzdWx0ID0gQXVkaW9PdXRwdXRVbml0U3RhcnQobV9vdXRwdXRVbml0KTsK
ICAgICBpZiAoIXJlc3VsdCkKQEAgLTE5NywxMCArMTkyLDYgQEAgdm9pZCBBdWRpb0Rlc3RpbmF0
aW9uSU9TOjpzdGFydCgpCiB2b2lkIEF1ZGlvRGVzdGluYXRpb25JT1M6OnN0b3AoKQogewogICAg
IExPRyhNZWRpYSwgIkF1ZGlvRGVzdGluYXRpb25JT1M6OnN0b3AiKTsKLSAgICBpZiAoIW1fbWVk
aWFTZXNzaW9uLT5jbGllbnRXaWxsUGF1c2VQbGF5YmFjaygpKSB7Ci0gICAgICAgIExPRyhNZWRp
YSwgIiAgcmV0dXJuaW5nIGJlY2F1c2Ugb2YgaW50ZXJydXB0aW9uIik7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9CiAKICAgICBPU1N0YXR1cyByZXN1bHQgPSBBdWRpb091dHB1dFVuaXRTdG9wKG1f
b3V0cHV0VW5pdCk7CiAgICAgaWYgKCFyZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVzdGluYXRpb25JT1MuaAppbmRleCA2NGFmMTFh
YmNhMjExZGMxOGI1M2M5YzhhMzliZWRiZTE0MTI2ZTYwLi44MTI0ODdhMzNmZjBhOGM2M2FlYTRh
MGNjN2Q0Nzg5Njc2Y2ZlM2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9pb3MvQXVkaW9EZXN0aW5hdGlvbklPUy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0aW9uSU9TLmgKQEAgLTMyLDcgKzMyLDYgQEAKIAog
I2luY2x1ZGUgIkF1ZGlvQnVzLmgiCiAjaW5jbHVkZSAiQXVkaW9EZXN0aW5hdGlvbi5oIgotI2lu
Y2x1ZGUgIk1lZGlhU2Vzc2lvbi5oIgogI2luY2x1ZGUgPEF1ZGlvVW5pdC9BdWRpb1VuaXQuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTQwLDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAvLyBBbiBBdWRpb0Rlc3RpbmF0aW9uIHVzaW5nIENvcmVBdWRpbydzIGRlZmF1
bHQgb3V0cHV0IEF1ZGlvVW5pdAogCi1jbGFzcyBBdWRpb0Rlc3RpbmF0aW9uSU9TIGZpbmFsIDog
cHVibGljIEF1ZGlvRGVzdGluYXRpb24sIHByaXZhdGUgTWVkaWFTZXNzaW9uQ2xpZW50IHsKK2Ns
YXNzIEF1ZGlvRGVzdGluYXRpb25JT1MgZmluYWwgOiBwdWJsaWMgQXVkaW9EZXN0aW5hdGlvbiB7
CiBwdWJsaWM6CiAgICAgQXVkaW9EZXN0aW5hdGlvbklPUyhBdWRpb0lPQ2FsbGJhY2smLCBkb3Vi
bGUgc2FtcGxlUmF0ZSk7CiAgICAgdmlydHVhbCB+QXVkaW9EZXN0aW5hdGlvbklPUygpOwpAQCAt
NTQsMTUgKzUzLDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNQbGF5aW5nKCkgb3Zl
cnJpZGUgeyByZXR1cm4gbV9pc1BsYXlpbmc7IH0KICAgICB2aXJ0dWFsIGZsb2F0IHNhbXBsZVJh
dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3NhbXBsZVJhdGU7IH0KIAotICAgIC8vIE1l
ZGlhU2Vzc2lvbkNsaWVudAotICAgIHZpcnR1YWwgTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgbWVk
aWFUeXBlKCkgY29uc3QgeyByZXR1cm4gTWVkaWFTZXNzaW9uOjpXZWJBdWRpbzsgfQotICAgIHZp
cnR1YWwgTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgcHJlc2VudGF0aW9uVHlwZSgpIGNvbnN0IHsg
cmV0dXJuIE1lZGlhU2Vzc2lvbjo6V2ViQXVkaW87IH0KLSAgICB2aXJ0dWFsIGJvb2wgY2FuUmVj
ZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChNZWRpYVNlc3Npb246
OlJlbW90ZUNvbnRyb2xDb21tYW5kVHlwZSkgeyB9Ci0gICAgdmlydHVhbCBib29sIG92ZXJyaWRl
QmFja2dyb3VuZFBsYXliYWNrUmVzdHJpY3Rpb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZpcnR1YWwgdm9pZCBwYXVzZVBsYXliYWNrKCkgb3ZlcnJpZGUgeyBzdG9wKCk7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgcmVzdW1lUGxheWJhY2soKSBvdmVycmlkZSB7IHN0YXJ0KCk7IH0KLQog
ICAgIC8vIERlZmF1bHRPdXRwdXRVbml0IGNhbGxiYWNrCiAgICAgc3RhdGljIE9TU3RhdHVzIGlu
cHV0UHJvYyh2b2lkKiB1c2VyRGF0YSwgQXVkaW9Vbml0UmVuZGVyQWN0aW9uRmxhZ3MqLCBjb25z
dCBBdWRpb1RpbWVTdGFtcCosIFVJbnQzMiBidXNOdW1iZXIsIFVJbnQzMiBudW1iZXJPZkZyYW1l
cywgQXVkaW9CdWZmZXJMaXN0KiBpb0RhdGEpOwogICAgIHN0YXRpYyB2b2lkIGZyYW1lU2l6ZUNo
YW5nZWRQcm9jKHZvaWQgKmluUmVmQ29uLCBBdWRpb1VuaXQgaW5Vbml0LCBBdWRpb1VuaXRQcm9w
ZXJ0eUlEIGluSUQsIEF1ZGlvVW5pdFNjb3BlIGluU2NvcGUsIEF1ZGlvVW5pdEVsZW1lbnQgaW5F
bGVtZW50KTsKQEAgLTc1LDcgKzY1LDYgQEAgcHJpdmF0ZToKICAgICBBdWRpb1VuaXQgbV9vdXRw
dXRVbml0OwogICAgIEF1ZGlvSU9DYWxsYmFjayYgbV9jYWxsYmFjazsKICAgICBSZWZQdHI8QXVk
aW9CdXM+IG1fcmVuZGVyQnVzOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVNlc3Npb24+IG1f
bWVkaWFTZXNzaW9uOwogCiAgICAgZG91YmxlIG1fc2FtcGxlUmF0ZTsKICAgICBib29sIG1faXNQ
bGF5aW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1
ZGlvU2Vzc2lvbklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRp
b1Nlc3Npb25JT1MubW0KaW5kZXggZmZlOTdiYzc4YTFiODQyOTZjY2I5ZDE2NmNjNmY1NThiMGNi
ODVmMi4uYmQ4Yzc1YmJkMmUxMTY3OWNlOTY2ZjI3ZTdjODc2ZWE3OGVlOGE1OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1t
CkBAIC0xNzYsMTEgKzE3NiwxMSBAQCBzaXplX3QgQXVkaW9TZXNzaW9uOjpudW1iZXJPZk91dHB1
dENoYW5uZWxzKCkgY29uc3QKICAgICByZXR1cm4gW1tBVkF1ZGlvU2Vzc2lvbiBzaGFyZWRJbnN0
YW5jZV0gb3V0cHV0TnVtYmVyT2ZDaGFubmVsc107CiB9CiAKLXZvaWQgQXVkaW9TZXNzaW9uOjpz
ZXRBY3RpdmUoYm9vbCBhY3RpdmUpCitib29sIEF1ZGlvU2Vzc2lvbjo6dHJ5VG9TZXRBY3RpdmUo
Ym9vbCBhY3RpdmUpCiB7CiAgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CiAgICAgW1tBVkF1ZGlv
U2Vzc2lvbiBzaGFyZWRJbnN0YW5jZV0gc2V0QWN0aXZlOmFjdGl2ZSBlcnJvcjomZXJyb3JdOwot
ICAgIEFTU0VSVCghZXJyb3IpOworICAgIHJldHVybiAhZXJyb3I7CiB9CiAKIHNpemVfdCBBdWRp
b1Nlc3Npb246OnByZWZlcnJlZEJ1ZmZlclNpemUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9TLmgK
aW5kZXggNjFjYzAyMWYzZjVmMmZiZmVhMjRiZWVmN2JjZjJlZTljOGUzMWYwMC4uOTNlY2JjZWM2
NGIwZWE3NTFlZDY2MTQwZGUyMWJmMzYyMTMwZGVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5oCkBA
IC01Myw3ICs1Myw3IEBAIHByaXZhdGU6CiAKICAgICBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TKCk7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKE1lZGlhU2Vzc2lv
biYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBzZXNzaW9uV2lsbEJlZ2luUGxheWJhY2so
TWVkaWFTZXNzaW9uJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNlc3Npb25XaWxsRW5k
UGxheWJhY2soTWVkaWFTZXNzaW9uJikgb3ZlcnJpZGU7CiAgICAgCiAgICAgdm9pZCB1cGRhdGVO
b3dQbGF5aW5nSW5mbygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbQppbmRleCA2NjAwNDgxZDY3MWM2
YTI0MjU5ZjA0YWI2MzdlMGE2ZTkyYjIzMjhjLi43MDk0NjdlMmFlODI0ZjUxNTc1YWZkOGYzNjA5
NGQ5YjUyN2ViZTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9p
b3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5tbQpAQCAtMTg0LDEwICsxODQsMTMg
QEAgdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpjb25maWd1cmVXaXJlTGVzc1RhcmdldE1v
bml0b3JpbmcoKQogICAgICAgICBbbV9vYmpjT2JzZXJ2ZXIgc3RvcE1vbml0b3JpbmdBaXJQbGF5
Um91dGVzXTsKIH0KIAotdm9pZCBNZWRpYVNlc3Npb25NYW5hZ2VyaU9TOjpzZXNzaW9uV2lsbEJl
Z2luUGxheWJhY2soTWVkaWFTZXNzaW9uJiBzZXNzaW9uKQorYm9vbCBNZWRpYVNlc3Npb25NYW5h
Z2VyaU9TOjpzZXNzaW9uV2lsbEJlZ2luUGxheWJhY2soTWVkaWFTZXNzaW9uJiBzZXNzaW9uKQog
ewotICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25XaWxsQmVnaW5QbGF5YmFjayhzZXNz
aW9uKTsKKyAgICBpZiAoIU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNlc3Npb25XaWxsQmVnaW5QbGF5
YmFjayhzZXNzaW9uKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgdXBkYXRlTm93UGxh
eWluZ0luZm8oKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KICAgICAKIHZvaWQgTWVkaWFTZXNzaW9u
TWFuYWdlcmlPUzo6c2Vzc2lvbldpbGxFbmRQbGF5YmFjayhNZWRpYVNlc3Npb24mIHNlc3Npb24p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0
aW5hdGlvbk1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9E
ZXN0aW5hdGlvbk1hYy5jcHAKaW5kZXggMGFhZTFmYzVhM2FkODM2ZmNiMzY4MDg4NWJiMjk2MGRk
YzhlZjlmOS4uZGMzYTFiNTRlZDQzYjc0Mjg5OGU1OTM5YTdhZGNmYzM4ZjRlMTUzYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25N
YWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3Rp
bmF0aW9uTWFjLmNwcApAQCAtODUsNyArODUsNiBAQCBBdWRpb0Rlc3RpbmF0aW9uTWFjOjpBdWRp
b0Rlc3RpbmF0aW9uTWFjKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ssIGZsb2F0IHNhbXBsZQog
ICAgICwgbV9yZW5kZXJCdXMoQXVkaW9CdXM6OmNyZWF0ZSgyLCBrQnVmZmVyU2l6ZSwgZmFsc2Up
KQogICAgICwgbV9zYW1wbGVSYXRlKHNhbXBsZVJhdGUpCiAgICAgLCBtX2lzUGxheWluZyhmYWxz
ZSkKLSAgICAsIG1fbWVkaWFTZXNzaW9uKE1lZGlhU2Vzc2lvbjo6Y3JlYXRlKCp0aGlzKSkKIHsK
ICAgICAvLyBPcGVuIGFuZCBpbml0aWFsaXplIERlZmF1bHRPdXRwdXRVbml0CiAgICAgQXVkaW9D
b21wb25lbnQgY29tcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5oCmluZGV4IDIwMDI2ZjdhN2Q1MTE0ZDg1MjA1Yzlm
ZmMwODZhY2FhNzQ3MTA4NmEuLjllODY5ZDBiOGRhZWQ0ZjY5OTJiM2Q5M2Q2ODhmYjJjYWI5ZTY3
M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rl
c3RpbmF0aW9uTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1
ZGlvRGVzdGluYXRpb25NYWMuaApAQCAtMzEsNyArMzEsNiBAQAogCiAjaW5jbHVkZSAiQXVkaW9C
dXMuaCIKICNpbmNsdWRlICJBdWRpb0Rlc3RpbmF0aW9uLmgiCi0jaW5jbHVkZSAiTWVkaWFTZXNz
aW9uLmgiCiAjaW5jbHVkZSA8QXVkaW9Vbml0L0F1ZGlvVW5pdC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KIApAQCAtMzksNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEFu
IEF1ZGlvRGVzdGluYXRpb24gdXNpbmcgQ29yZUF1ZGlvJ3MgZGVmYXVsdCBvdXRwdXQgQXVkaW9V
bml0CiAKLWNsYXNzIEF1ZGlvRGVzdGluYXRpb25NYWMgOiBwdWJsaWMgQXVkaW9EZXN0aW5hdGlv
biwgcHVibGljIE1lZGlhU2Vzc2lvbkNsaWVudCB7CitjbGFzcyBBdWRpb0Rlc3RpbmF0aW9uTWFj
IDogcHVibGljIEF1ZGlvRGVzdGluYXRpb24gewogcHVibGljOgogICAgIEF1ZGlvRGVzdGluYXRp
b25NYWMoQXVkaW9JT0NhbGxiYWNrJiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAgICAgdmlydHVhbCB+
QXVkaW9EZXN0aW5hdGlvbk1hYygpOwpAQCAtNTMsMTkgKzUyLDkgQEAgcHJpdmF0ZToKICAgICBP
U1N0YXR1cyByZW5kZXIoVUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlv
RGF0YSk7CiAgICAgdm9pZCBzZXRJc1BsYXlpbmcoYm9vbCk7CiAKLSAgICB2aXJ0dWFsIE1lZGlh
U2Vzc2lvbjo6TWVkaWFUeXBlIG1lZGlhVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIE1l
ZGlhU2Vzc2lvbjo6V2ViQXVkaW87IH0KLSAgICB2aXJ0dWFsIE1lZGlhU2Vzc2lvbjo6TWVkaWFU
eXBlIHByZXNlbnRhdGlvblR5cGUoKSBjb25zdCB7IHJldHVybiBNZWRpYVNlc3Npb246OldlYkF1
ZGlvOyB9Ci0gICAgdmlydHVhbCBib29sIGNhblJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZHMo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlUmVtb3RlQ29udHJvbENvbW1hbmQoTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29t
bWFuZFR5cGUpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgYm9vbCBvdmVycmlkZUJhY2tncm91
bmRQbGF5YmFja1Jlc3RyaWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
LQogICAgIHZpcnR1YWwgdm9pZCBzdGFydCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBz
dG9wKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGlzUGxheWluZygpIG92ZXJyaWRlIHsg
cmV0dXJuIG1faXNQbGF5aW5nOyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcGF1c2VQbGF5YmFjaygp
IG92ZXJyaWRlIHsgc3RvcCgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlc3VtZVBsYXliYWNrKCkg
b3ZlcnJpZGUgeyBzdGFydCgpOyB9Ci0KICAgICB2aXJ0dWFsIGZsb2F0IHNhbXBsZVJhdGUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX3NhbXBsZVJhdGU7IH0KIAogICAgIEF1ZGlvVW5pdCBt
X291dHB1dFVuaXQ7CkBAIC03NCwxMCArNjMsNiBAQCBwcml2YXRlOgogCiAgICAgZmxvYXQgbV9z
YW1wbGVSYXRlOwogICAgIGJvb2wgbV9pc1BsYXlpbmc7Ci0KLSNpZiBVU0UoQVVESU9fU0VTU0lP
TikKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFTZXNzaW9uPiBtX21lZGlhU2Vzc2lvbjsKLSNl
bmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcAppbmRleCBjOTJhMzgw
N2Y2YjY5YzNhYzQ1OTMxMjc4NGQ5ZDdmYjgzODkyZTQ1Li4xZDI4NGY2YzUxZjA1MGUzNTM3Yzli
ZmZlZjUyMjNjZmJiNDMzNWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmNwcApAQCAtMTA3LDkgKzEwNywxMCBAQCBzaXpl
X3QgQXVkaW9TZXNzaW9uOjpudW1iZXJPZk91dHB1dENoYW5uZWxzKCkgY29uc3QKICAgICByZXR1
cm4gMDsKIH0KIAotdm9pZCBBdWRpb1Nlc3Npb246OnNldEFjdGl2ZShib29sKQorYm9vbCBBdWRp
b1Nlc3Npb246OnRyeVRvU2V0QWN0aXZlKGJvb2wpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc2l6ZV90IEF1ZGlvU2Vzc2lvbjo6cHJlZmVycmVkQnVm
ZmVyU2l6ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9tYWMvTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9tYWMvTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5jcHAKaW5kZXggYWFmY2JkMjQ4MGJj
ZWYzMmVhZGQ4YTc4NDY2NWFkMWE0OWM2MjQwNS4uZjViMjg4NTBkZDQxOGU3ZjAzZjYxNTcxMGY1
YWY3MTNmZTgxZDlkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
bWFjL01lZGlhU2Vzc2lvbk1hbmFnZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL21hYy9NZWRpYVNlc3Npb25NYW5hZ2VyTWFjLmNwcApAQCAtNTcsOSArNTcsNiBA
QCB2b2lkIE1lZGlhU2Vzc2lvbk1hbmFnZXI6OnVwZGF0ZVNlc3Npb25TdGF0ZSgpCiAgICAgfQog
CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIGlmIChhY3RpdmVBdWRpb1Nlc3Npb25SZXF1aXJlZCgp
KQotICAgICAgICBBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24oKS5zZXRBY3RpdmUodHJ1ZSk7
Ci0KICAgICBpZiAoIVNldHRpbmdzOjpzaG91bGRNYW5hZ2VBdWRpb1Nlc3Npb25DYXRlZ29yeSgp
KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRl
eCAyZGU0YzI3NDAzZDBiZDRjOTAyYWJiMThiY2RkNGMxMmY3ZmM5YzU3Li44OWQxZjhiYzExZjVh
ZjY3OWMwNjc1MTFmNjk0ZTcyMWVjY2QxYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCkBAIC0yNDY3LDYgKzI0NjcsOCBAQCB2b2lkIEludGVybmFsczo6c2V0TWVkaWFTZXNz
aW9uUmVzdHJpY3Rpb25zKGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlU3RyaW5nLCBjb25zdAogICAg
ICAgICByZXN0cmljdGlvbnMgKz0gTWVkaWFTZXNzaW9uTWFuYWdlcjo6QmFja2dyb3VuZFByb2Nl
c3NQbGF5YmFja1Jlc3RyaWN0ZWQ7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlc3RyaWN0
aW9uc1N0cmluZywgIkJhY2tncm91bmRUYWJQbGF5YmFja1Jlc3RyaWN0ZWQiKSkKICAgICAgICAg
cmVzdHJpY3Rpb25zICs9IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OkJhY2tncm91bmRUYWJQbGF5YmFj
a1Jlc3RyaWN0ZWQ7CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHJlc3RyaWN0aW9uc1N0cmlu
ZywgIkludGVycnVwdGVkUGxheWJhY2tOb3RQZXJtaXR0ZWQiKSkKKyAgICAgICAgcmVzdHJpY3Rp
b25zICs9IE1lZGlhU2Vzc2lvbk1hbmFnZXI6OkludGVycnVwdGVkUGxheWJhY2tOb3RQZXJtaXR0
ZWQ7CiAKICAgICBNZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VyKCkuYWRkUmVzdHJp
Y3Rpb24obWVkaWFUeXBlLCByZXN0cmljdGlvbnMpOwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGIyOGZkYTFhMWI2NTY1
MzI1ZjYwMjQwZjJhODMxNmMwMTZiZjFlYWQuLmQ5MDY5MDE2YWM4OGY2NmYyOWNkNzNmNDQzNDhm
ZTBiMzliMWQ0NTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNS0wMy0yOCAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBXaGVuIFdlYiBBdWRpbyBp
cyBpbnRlcnJ1cHRlZCBieSBhIHBob25lIGNhbGwsIGl0IGNhbm5vdCBiZSByZXN0YXJ0ZWQuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMxOTAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIHdlYmF1ZGlvL2F1
ZGlvY29udGV4dC1zdGF0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYmF1ZGlv
L2F1ZGlvY29udGV4dC1zdGF0ZS1pbnRlcnJ1cHRlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHdlYmF1ZGlvL2F1ZGlvY29udGV4dC1zdGF0ZS1pbnRlcnJ1cHRlZC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiB3ZWJhdWRpby9hdWRpb2NvbnRleHQtc3RhdGUuaHRtbDogQWRkZWQuCisK
IDIwMTUtMDMtMjYgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAg
IEFwcGx5IENvbnRlbnRFeHRlbnNpb24gYWN0aW9ucyBhZnRlciByZWRpcmVjdHMuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb2NvbnRleHQtc3RhdGUtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9jb250ZXh0LXN0YXRlLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41YTY5NjVmYmRhYWNkYzA3OWU1MzkzOTg2ZTcxYWI0MGQ3MjE2ZjQwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9jb250ZXh0LXN0YXRlLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDI2IEBACitCYXNpYyB0ZXN0cyBmb3IgQXVkaW9Ob2RlIEFQ
SS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIGNvbnRleHQuc3RhdGUgaXMg
InN1c3BlbmRlZCIKK25vZGUuY29ubmVjdChjb250ZXh0LmRlc3RpbmF0aW9uKQorUEFTUyBjb250
ZXh0LnN0YXRlIGlzICJydW5uaW5nIgorQ2FsbGluZyBjb250ZXh0LnN1c3BlbmQoKQorUEFTUyBj
b250ZXh0LnN1c3BlbmQoKSBwcm9taXNlIHJlc29sdmVkCitQQVNTIGNvbnRleHQuc3RhdGUgaXMg
InN1c3BlbmRlZCIKK0NhbGxpbmcgY29udGV4dC5yZXN1bWUoKQorUEFTUyBjb250ZXh0LnJlc3Vt
ZSgpIHByb21pc2UgcmVzb2x2ZWQKK1BBU1MgY29udGV4dC5zdGF0ZSBpcyAicnVubmluZyIKK0Nh
bGxpbmcgY29udGV4dC5jbG9zZSgpCitQQVNTIGNvbnRleHQuY2xvc2UoKSBwcm9taXNlIHJlc29s
dmVkCitQQVNTIGNvbnRleHQuc3RhdGUgaXMgImNsb3NlZCIKK0NhbGxpbmcgY29udGV4dC5yZXN1
bWUoKSAoc2hvdWxkIGZhaWwpCitQQVNTIGNvbnRleHQucmVzdW1lKCkgcHJvbWlzZSByZWplY3Rl
ZCAoY29ycmVjdGx5KQorUEFTUyBjb250ZXh0LnN0YXRlIGlzICJjbG9zZWQiCitDYWxsaW5nIGNv
bnRleHQuc3VzcGVuZCgpIChzaG91bGQgZmFpbCkKK1BBU1MgY29udGV4dC5yZXN1bWUoKSBwcm9t
aXNlIHJlamVjdGVkIChjb3JyZWN0bHkpCitQQVNTIGNvbnRleHQuc3RhdGUgaXMgImNsb3NlZCIK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRpb2NvbnRleHQtc3RhdGUtaW50ZXJydXB0
ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vYXVkaW9jb250ZXh0LXN0YXRl
LWludGVycnVwdGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMzg1MTExYTY2ZWQ3YmY2ZDQ4
MWY0YjZkZjc5NGY2N2FmNDVlODZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
YXVkaW8vYXVkaW9jb250ZXh0LXN0YXRlLWludGVycnVwdGVkLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDUwIEBACitCYXNpYyB0ZXN0cyBmb3IgQXVkaW9Ob2RlIEFQSS4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCitQQVNTIGNvbnRleHQuc3RhdGUgaXMgInN1c3BlbmRlZCIKK25vZGUu
Y29ubmVjdChjb250ZXh0LmRlc3RpbmF0aW9uKQorRVZFTlQgc3RhdGVjaGFuZ2UKK1BBU1MgY29u
dGV4dC5zdGF0ZSBpcyAicnVubmluZyIKKworVGVzdCAxOiByZXN1bWUoKSB3aGlsZSBpbnRlcnJ1
cHRlZCBpcyByZXNvbHZlZCBhZnRlciB0aGUgaW50ZXJydXB0aW9uIGVuZHMuCitpbnRlcm5hbHMu
YmVnaW5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oKQorRVZFTlQgc3RhdGVjaGFuZ2UKK1BBU1Mg
Y29udGV4dC5zdGF0ZSBpcyAiaW50ZXJydXB0ZWQiCitpbnRlcm5hbHMuc2V0TWVkaWFTZXNzaW9u
UmVzdHJpY3Rpb25zKCJXZWJBdWRpbyIsICJJbnRlcnJ1cHRlZFBsYXliYWNrTm90UGVybWl0dGVk
IikKK0NhbGxpbmcgY29udGV4dC5yZXN1bWUoKQorRGVsYXlpbmcgMTAwbXMKK1BBU1MgY29udGV4
dC5zdGF0ZSBpcyAiaW50ZXJydXB0ZWQiCitpbnRlcm5hbHMuZW5kTWVkaWFTZXNzaW9uSW50ZXJy
dXB0aW9uKCJNYXlSZXN1bWVQbGF5aW5nIikKK1BBU1MgY29udGV4dC5yZXN1bWUoKSBwcm9taXNl
IHJlc29sdmVkCitQQVNTIGNvbnRleHQuc3RhdGUgaXMgInJ1bm5pbmciCisKK1Rlc3QgMjogcmVz
dW1lKCkgd2hpbGUgaW50ZXJydXB0ZWQgd2lsbCBjYXVzZSBpbnRlcnJ1cHRpb24gdG8gZW5kLgor
aW50ZXJuYWxzLmJlZ2luTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCkKK0VWRU5UIHN0YXRlY2hh
bmdlCitQQVNTIGNvbnRleHQuc3RhdGUgaXMgImludGVycnVwdGVkIgoraW50ZXJuYWxzLnNldE1l
ZGlhU2Vzc2lvblJlc3RyaWN0aW9ucygiV2ViQXVkaW8iLCAiIikKK0NhbGxpbmcgY29udGV4dC5y
ZXN1bWUoKQorUEFTUyBjb250ZXh0LnJlc3VtZSgpIHByb21pc2UgcmVzb2x2ZWQKK1BBU1MgY29u
dGV4dC5zdGF0ZSBpcyAicnVubmluZyIKKworVGVzdCAzOiBydW5uaW5nIEF1ZGlvQ29udGV4dHMg
d2lsbCBub3QgcmVzdW1lIGFmdGVyIGFuIGludGVycnVwdGlvbiBlbmRzLgoraW50ZXJuYWxzLmJl
Z2luTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCkKK0VWRU5UIHN0YXRlY2hhbmdlCitQQVNTIGNv
bnRleHQuc3RhdGUgaXMgImludGVycnVwdGVkIgoraW50ZXJuYWxzLmVuZE1lZGlhU2Vzc2lvbklu
dGVycnVwdGlvbigiIikKK0VWRU5UIHN0YXRlY2hhbmdlCitQQVNTIGNvbnRleHQuc3RhdGUgaXMg
InN1c3BlbmRlZCIKKworVGVzdCA0OiByZXN1bWUoKSB3aGlsZSBpbnRlcnJ1cHRlZCB3aWxsIG5v
dCByZXN1bWUgcGxheWJhY2sgYWZ0ZXIgYW4gaW50ZXJydXB0aW9uLgoraW50ZXJuYWxzLmJlZ2lu
TWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCkKK0VWRU5UIHN0YXRlY2hhbmdlCitQQVNTIGNvbnRl
eHQuc3RhdGUgaXMgImludGVycnVwdGVkIgorQ2FsbGluZyBjb250ZXh0LnJlc3VtZSgpCitpbnRl
cm5hbHMuZW5kTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCIiKQorRVZFTlQgc3RhdGVjaGFuZ2UK
K1BBU1MgY29udGV4dC5zdGF0ZSBpcyAic3VzcGVuZGVkIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YmF1ZGlvL2F1ZGlvY29udGV4dC1zdGF0ZS1pbnRlcnJ1cHRlZC5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViYXVkaW8vYXVkaW9jb250ZXh0LXN0YXRlLWludGVycnVwdGVkLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YzA5NjIwNjJlMmEzYmRlM2YyN2QyNjgwYzM0ODJkMmRhMDQyZDAzZQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2F1ZGlvY29udGV4dC1zdGF0ZS1pbnRlcnJ1cHRlZC5o
dG1sCkBAIC0wLDAgKzEsMTUwIEBACis8IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0icmVzb3VyY2VzL2F1ZGlvLXRlc3Rpbmcu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24o
J0Jhc2ljIHRlc3RzIGZvciBBdWRpb05vZGUgQVBJLicpOworCit2YXIgY29udGV4dCA9IG51bGw7
Cit2YXIgbm9kZSA9IG51bGw7CisKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisgICAgCisgICAgd2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgY29udGV4dCA9IG5ldyB3ZWJraXRBdWRpb0NvbnRl
eHQoKTsKKworICAgIHNob3VsZEJlKCdjb250ZXh0LnN0YXRlJywgJyJzdXNwZW5kZWQiJyk7Cisg
ICAgY29udGV4dC5vbnN0YXRlY2hhbmdlID0gYmVnYW5SdW5uaW5nOworCisgICAgbm9kZSA9IGNv
bnRleHQuY3JlYXRlQnVmZmVyU291cmNlKCk7CisgICAgZXZhbEFuZExvZygnbm9kZS5jb25uZWN0
KGNvbnRleHQuZGVzdGluYXRpb24pJyk7CisKK30KKworZnVuY3Rpb24gYmVnYW5SdW5uaW5nKGUp
IHsKKyAgICBkZWJ1ZygnRVZFTlQgJyArIGV2ZW50LnR5cGUpOworICAgIHNob3VsZEJlKCdjb250
ZXh0LnN0YXRlJywgJyJydW5uaW5nIicpOworCisgICAgZGVidWcoJycpOworICAgIGRlYnVnKCdU
ZXN0IDE6IHJlc3VtZSgpIHdoaWxlIGludGVycnVwdGVkIGlzIHJlc29sdmVkIGFmdGVyIHRoZSBp
bnRlcnJ1cHRpb24gZW5kcy4nKTsKKworICAgIGNvbnRleHQub25zdGF0ZWNoYW5nZSA9IGZpcnN0
SW50ZXJydXB0aW9uU3RhcnRlZDsKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAg
ZXZhbEFuZExvZygnaW50ZXJuYWxzLmJlZ2luTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uKCknKTsK
KworfQorCitmdW5jdGlvbiBmaXJzdEludGVycnVwdGlvblN0YXJ0ZWQoZSkgeworICAgIGRlYnVn
KCdFVkVOVCAnICsgZXZlbnQudHlwZSk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuc3RhdGUnLCAn
ImludGVycnVwdGVkIicpOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBldmFs
QW5kTG9nKCdpbnRlcm5hbHMuc2V0TWVkaWFTZXNzaW9uUmVzdHJpY3Rpb25zKCJXZWJBdWRpbyIs
ICJJbnRlcnJ1cHRlZFBsYXliYWNrTm90UGVybWl0dGVkIiknKTsKKworICAgIGNvbnRleHQub25z
dGF0ZWNoYW5nZSA9IG51bGw7CisKKyAgICBkZWJ1ZygnQ2FsbGluZyBjb250ZXh0LnJlc3VtZSgp
Jyk7CisgICAgY29udGV4dC5yZXN1bWUoKS50aGVuKGZpcnN0UmVzdW1lU3VjY2VlZGVkKTsKKyAg
ICBkZWJ1ZygnRGVsYXlpbmcgMTAwbXMnKTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewor
ICAgICAgICBzaG91bGRCZSgnY29udGV4dC5zdGF0ZScsICciaW50ZXJydXB0ZWQiJyk7CisgICAg
ICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgZXZhbEFuZExvZygnaW50ZXJu
YWxzLmVuZE1lZGlhU2Vzc2lvbkludGVycnVwdGlvbigiTWF5UmVzdW1lUGxheWluZyIpJyk7Cisg
ICAgfSwgMTAwKTsKK30KKworZnVuY3Rpb24gZmlyc3RSZXN1bWVTdWNjZWVkZWQoKSB7CisgICAg
dGVzdFBhc3NlZCgnY29udGV4dC5yZXN1bWUoKSBwcm9taXNlIHJlc29sdmVkJyk7CisgICAgc2hv
dWxkQmUoJ2NvbnRleHQuc3RhdGUnLCAnInJ1bm5pbmciJyk7CisKKyAgICBkZWJ1ZygnJyk7Cisg
ICAgZGVidWcoJ1Rlc3QgMjogcmVzdW1lKCkgd2hpbGUgaW50ZXJydXB0ZWQgd2lsbCBjYXVzZSBp
bnRlcnJ1cHRpb24gdG8gZW5kLicpCisKKyAgICBjb250ZXh0Lm9uc3RhdGVjaGFuZ2UgPSBzZWNv
bmRJbnRlcnJ1cHRpb25TdGFydGVkOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAg
ICBldmFsQW5kTG9nKCdpbnRlcm5hbHMuYmVnaW5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24oKScp
OworfQorCitmdW5jdGlvbiBzZWNvbmRJbnRlcnJ1cHRpb25TdGFydGVkKGUpIHsKKyAgICBkZWJ1
ZygnRVZFTlQgJyArIGV2ZW50LnR5cGUpOworICAgIHNob3VsZEJlKCdjb250ZXh0LnN0YXRlJywg
JyJpbnRlcnJ1cHRlZCInKTsKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgZXZh
bEFuZExvZygnaW50ZXJuYWxzLnNldE1lZGlhU2Vzc2lvblJlc3RyaWN0aW9ucygiV2ViQXVkaW8i
LCAiIiknKTsKKworICAgIGNvbnRleHQub25zdGF0ZWNoYW5nZSA9IG51bGw7CisKKyAgICBkZWJ1
ZygnQ2FsbGluZyBjb250ZXh0LnJlc3VtZSgpJyk7CisgICAgY29udGV4dC5yZXN1bWUoKS50aGVu
KHNlY29uZFJlc3VtZVN1Y2NlZWRlZCk7Cit9CisKK2Z1bmN0aW9uIHNlY29uZFJlc3VtZVN1Y2Nl
ZWRlZCgpIHsKKyAgICB0ZXN0UGFzc2VkKCdjb250ZXh0LnJlc3VtZSgpIHByb21pc2UgcmVzb2x2
ZWQnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5zdGF0ZScsICcicnVubmluZyInKTsKKworICAg
IGRlYnVnKCcnKTsKKyAgICBkZWJ1ZygnVGVzdCAzOiBydW5uaW5nIEF1ZGlvQ29udGV4dHMgd2ls
bCBub3QgcmVzdW1lIGFmdGVyIGFuIGludGVycnVwdGlvbiBlbmRzLicpCisKKyAgICBjb250ZXh0
Lm9uc3RhdGVjaGFuZ2UgPSB0aGlyZEludGVycnVwdGlvblN0YXJ0ZWQ7CisgICAgaWYgKHdpbmRv
dy5pbnRlcm5hbHMpCisgICAgICAgIGV2YWxBbmRMb2coJ2ludGVybmFscy5iZWdpbk1lZGlhU2Vz
c2lvbkludGVycnVwdGlvbigpJyk7Cit9CisKK2Z1bmN0aW9uIHRoaXJkSW50ZXJydXB0aW9uU3Rh
cnRlZCgpIHsKKyAgICBkZWJ1ZygnRVZFTlQgJyArIGV2ZW50LnR5cGUpOworICAgIHNob3VsZEJl
KCdjb250ZXh0LnN0YXRlJywgJyJpbnRlcnJ1cHRlZCInKTsKKworICAgIGNvbnRleHQub25zdGF0
ZWNoYW5nZSA9IHRoaXJkSW50ZXJydXB0aW9uRW5kZWQ7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5h
bHMpCisgICAgICAgIGV2YWxBbmRMb2coJ2ludGVybmFscy5lbmRNZWRpYVNlc3Npb25JbnRlcnJ1
cHRpb24oIiIpJyk7Cit9CisKK2Z1bmN0aW9uIHRoaXJkSW50ZXJydXB0aW9uRW5kZWQoKSB7Cisg
ICAgZGVidWcoJ0VWRU5UICcgKyBldmVudC50eXBlKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5z
dGF0ZScsICcic3VzcGVuZGVkIicpOworCisgICAgZGVidWcoJycpOworICAgIGRlYnVnKCdUZXN0
IDQ6IHJlc3VtZSgpIHdoaWxlIGludGVycnVwdGVkIHdpbGwgbm90IHJlc3VtZSBwbGF5YmFjayBh
ZnRlciBhbiBpbnRlcnJ1cHRpb24uJykKKworICAgIGNvbnRleHQub25zdGF0ZWNoYW5nZSA9IGZv
dXJ0aEludGVycnVwdGlvblN0YXJ0ZWQ7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAg
ICAgIGV2YWxBbmRMb2coJ2ludGVybmFscy5iZWdpbk1lZGlhU2Vzc2lvbkludGVycnVwdGlvbigp
Jyk7Cit9CisKK2Z1bmN0aW9uIGZvdXJ0aEludGVycnVwdGlvblN0YXJ0ZWQoKSB7CisgICAgZGVi
dWcoJ0VWRU5UICcgKyBldmVudC50eXBlKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5zdGF0ZScs
ICciaW50ZXJydXB0ZWQiJyk7CisKKyAgICBjb250ZXh0Lm9uc3RhdGVjaGFuZ2UgPSBmb3VydGhJ
bnRlcnJ1cHRpb25FbmRlZDsKKworICAgIGRlYnVnKCdDYWxsaW5nIGNvbnRleHQucmVzdW1lKCkn
KTsKKyAgICBjb250ZXh0LnJlc3VtZSgpOworCisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisg
ICAgICAgIGV2YWxBbmRMb2coJ2ludGVybmFscy5lbmRNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb24o
IiIpJyk7Cit9CisKK2Z1bmN0aW9uIGZvdXJ0aEludGVycnVwdGlvbkVuZGVkKCkgeworICAgIGRl
YnVnKCdFVkVOVCAnICsgZXZlbnQudHlwZSk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuc3RhdGUn
LCAnInN1c3BlbmRlZCInKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworcnVuVGVzdCgpOwor
Cis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vi
YXVkaW8vYXVkaW9jb250ZXh0LXN0YXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9hdWRp
b2NvbnRleHQtc3RhdGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NWZiNGM1YjFjMzNmMDk3YjgxM2RkMTZj
MGYyMTU4MTg1YTk0NzcxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8v
YXVkaW9jb250ZXh0LXN0YXRlLmh0bWwKQEAgLTAsMCArMSwxMDkgQEAKKzwhRE9DVFlQRSBodG1s
PgorCis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJyZXNv
dXJjZXMvYXVkaW8tdGVzdGluZy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxz
Y3JpcHQ+CitkZXNjcmlwdGlvbignQmFzaWMgdGVzdHMgZm9yIEF1ZGlvTm9kZSBBUEkuJyk7CisK
K3ZhciBjb250ZXh0ID0gbnVsbDsKK3ZhciBub2RlID0gbnVsbDsKKworZnVuY3Rpb24gcnVuVGVz
dCgpIHsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0K
KyAgICAKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICBjb250ZXh0ID0g
bmV3IHdlYmtpdEF1ZGlvQ29udGV4dCgpOworCisgICAgc2hvdWxkQmUoJ2NvbnRleHQuc3RhdGUn
LCAnInN1c3BlbmRlZCInKTsKKworICAgIG5vZGUgPSBjb250ZXh0LmNyZWF0ZUJ1ZmZlclNvdXJj
ZSgpOworICAgIGV2YWxBbmRMb2coJ25vZGUuY29ubmVjdChjb250ZXh0LmRlc3RpbmF0aW9uKScp
OworCisgICAgc2hvdWxkQmUoJ2NvbnRleHQuc3RhdGUnLCAnInJ1bm5pbmciJyk7CisKKyAgICBk
ZWJ1ZygnQ2FsbGluZyBjb250ZXh0LnN1c3BlbmQoKScpOworICAgIGNvbnRleHQuc3VzcGVuZCgp
LnRoZW4oc3VzcGVuZFN1Y2NlZWRlZCwgc3VzcGVuZEZhaWxlZCk7Cit9CisKK2Z1bmN0aW9uIHN1
c3BlbmRGYWlsZWQoKSB7CisgICAgdGVzdEZhaWxlZCgnY29udGV4dC5zdXNwZW5kKCkgcHJvbWlz
ZSByZWplY3RlZCcpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitmdW5jdGlvbiBzdXNwZW5k
U3VjY2VlZGVkKCkgeworICAgIHRlc3RQYXNzZWQoJ2NvbnRleHQuc3VzcGVuZCgpIHByb21pc2Ug
cmVzb2x2ZWQnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5zdGF0ZScsICcic3VzcGVuZGVkIicp
OworCisgICAgZGVidWcoJ0NhbGxpbmcgY29udGV4dC5yZXN1bWUoKScpOworICAgIGNvbnRleHQu
cmVzdW1lKCkudGhlbihyZXN1bWVTdWNjZWVkZWQsIHJlc3VtZUZhaWxlZCk7Cit9CisKK2Z1bmN0
aW9uIHJlc3VtZUZhaWxlZCgpIHsKKyAgICB0ZXN0RmFpbGVkKCdjb250ZXh0LnJlc3VtZSgpIHBy
b21pc2UgcmVqZWN0ZWQnKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gcmVz
dW1lU3VjY2VlZGVkKCkgeworICAgIHRlc3RQYXNzZWQoJ2NvbnRleHQucmVzdW1lKCkgcHJvbWlz
ZSByZXNvbHZlZCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0LnN0YXRlJywgJyJydW5uaW5nIicp
OworCisgICAgZGVidWcoJ0NhbGxpbmcgY29udGV4dC5jbG9zZSgpJyk7CisgICAgY29udGV4dC5j
bG9zZSgpLnRoZW4oY2xvc2VTdWNjZWVkZWQsIGNsb3NlRmFpbGVkKTsKK30KKworZnVuY3Rpb24g
Y2xvc2VGYWlsZWQoKSB7IAorICAgIHRlc3RGYWlsZWQoJ2NvbnRleHQuY2xvc2UoKSBwcm9taXNl
IHJlamVjdGVkJyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIGNsb3NlU3Vj
Y2VlZGVkKCkgeworICAgIHRlc3RQYXNzZWQoJ2NvbnRleHQuY2xvc2UoKSBwcm9taXNlIHJlc29s
dmVkJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuc3RhdGUnLCAnImNsb3NlZCInKTsKKworICAg
IGRlYnVnKCdDYWxsaW5nIGNvbnRleHQucmVzdW1lKCkgKHNob3VsZCBmYWlsKScpOworICAgIGNv
bnRleHQucmVzdW1lKCkudGhlbihyZXN1bWVTdWNjZWVkZWRJbmNvcnJlY3RseSwgcmVzdW1lRmFp
bGVkQ29ycmVjdGx5KTsKK30KKworZnVuY3Rpb24gcmVzdW1lU3VjY2VlZGVkSW5jb3JyZWN0bHko
KSB7CisgICAgdGVzdEZhaWxlZCgnY29udGV4dC5yZXN1bWUoKSBwcm9taXNlIHJlc29sdmVkIChz
aG91bGQgaGF2ZSByZWplY3RlZCknKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rp
b24gcmVzdW1lRmFpbGVkQ29ycmVjdGx5KCkgeworICAgIHRlc3RQYXNzZWQoJ2NvbnRleHQucmVz
dW1lKCkgcHJvbWlzZSByZWplY3RlZCAoY29ycmVjdGx5KScpOworICAgIHNob3VsZEJlKCdjb250
ZXh0LnN0YXRlJywgJyJjbG9zZWQiJyk7CisKKyAgICBkZWJ1ZygnQ2FsbGluZyBjb250ZXh0LnN1
c3BlbmQoKSAoc2hvdWxkIGZhaWwpJyk7CisgICAgY29udGV4dC5zdXNwZW5kKCkudGhlbihzdXNw
ZW5kU3VjY2VlZGVkSW5jb3JyZWN0bHksIHN1c3BlbmRGYWlsZWRDb3JyZWN0bHkpOworfQorCitm
dW5jdGlvbiBzdXNwZW5kU3VjY2VlZGVkSW5jb3JyZWN0bHkoKSB7CisgICAgdGVzdEZhaWxlZCgn
Y29udGV4dC5zdXNwZW5kKCkgcHJvbWlzZSByZXNvbHZlZCAoc2hvdWxkIGhhdmUgcmVqZWN0ZWQp
Jyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHN1c3BlbmRGYWlsZWRDb3Jy
ZWN0bHkoKSB7CisgICAgdGVzdFBhc3NlZCgnY29udGV4dC5yZXN1bWUoKSBwcm9taXNlIHJlamVj
dGVkIChjb3JyZWN0bHkpJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuc3RhdGUnLCAnImNsb3Nl
ZCInKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworcnVuVGVzdCgpOworCis8L3NjcmlwdD4K
KworPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>