<?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>157257</bug_id>
          
          <creation_ts>2016-05-02 00:36:48 -0700</creation_ts>
          <short_desc>Change IDL enumerations to be nested in their C++ class instead of at WebCore namespace level</short_desc>
          <delta_ts>2016-05-02 22:46:59 -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>Bindings</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1189336</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-02 00:36:48 -0700</bug_when>
    <thetext>Change IDL enumerations to be nested in their C++ class instead of at WebCore namespace level</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189342</commentid>
    <comment_count>1</comment_count>
      <attachid>277897</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-02 01:01:12 -0700</bug_when>
    <thetext>Created attachment 277897
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189343</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-02 01:01:50 -0700</bug_when>
    <thetext>OK, Chris, Alex, here is the change we discussed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189387</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-02 07:19:02 -0700</bug_when>
    <thetext>Build failures on GTK and iOS should be quick to fix; just a couple call sites that need the class prefixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189392</commentid>
    <comment_count>4</comment_count>
      <attachid>277907</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-02 08:26:18 -0700</bug_when>
    <thetext>Created attachment 277907
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189393</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-02 08:27:06 -0700</bug_when>
    <thetext>New patch may fix the GTK and iOS builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189397</commentid>
    <comment_count>6</comment_count>
      <attachid>277908</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-02 08:47:11 -0700</bug_when>
    <thetext>Created attachment 277908
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189399</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-02 08:59:42 -0700</bug_when>
    <thetext>iOS still does not build:
/Volumes/Data/EWS/WebKit/Source/WebCore/html/HTMLVideoElement.cpp:404:75: error: no type named &apos;VideoPresentationMode&apos; in &apos;WebCore::HTMLMediaElement&apos;; did you mean &apos;HTMLVideoElement::VideoPresentationMode&apos;?
static inline HTMLMediaElementEnums::VideoFullscreenMode toFullscreenMode(HTMLMediaElement::VideoPresentationMode mode)
                                                                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                                                          HTMLVideoElement::VideoPresentationMode
In file included from /Volumes/Data/EWS/WebKit/Source/WebCore/html/HTMLVideoElement.cpp:28:
/Volumes/Data/EWS/WebKit/Source/WebCore/html/HTMLVideoElement.h:81:16: note: &apos;HTMLVideoElement::VideoPresentationMode&apos; declared here
    enum class VideoPresentationMode { Fullscreen, PictureInPicture, Inline };
               ^
/Volumes/Data/EWS/WebKit/Source/WebCore/html/HTMLVideoElement.cpp:407:10: error: no member named &apos;VideoPresentationMode&apos; in &apos;WebCore::HTMLMediaElement&apos;; did you mean &apos;HTMLVideoElement::VideoPresentationMode&apos;?
    case HTMLMediaElement::VideoPresentationMode::Fullscreen:
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         HTMLVideoElement::VideoPresentationMode
In file included from /Volumes/Data/EWS/WebKit/Source/WebCore/html/HTMLVideoElement.cpp:28:
/Volumes/Data/EWS/WebKit/Source/WebCore/html/HTMLVideoElement.h:81:16: note: &apos;HTMLVideoElement::VideoPresentationMode&apos; declared here
    enum class VideoPresentationMode { Fullscreen, PictureInPicture, Inline };
               ^
/Volumes/Data/EWS/WebKit/Source/WebCore/html/HTMLVideoElement.cpp:409:10: error: no member named &apos;VideoPresentationMode&apos; in &apos;WebCore::HTMLMediaElement&apos;; did you mean &apos;HTMLVideoElement::VideoPresentationMode&apos;?
    case HTMLMediaElement::VideoPresentationMode::PictureInPicture:
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         HTMLVideoElement::VideoPresentationMode
In file included from /Volumes/Data/EWS/WebKit/Source/WebCore/html/HTMLVideoElement.cpp:28:
/Volumes/Data/EWS/WebKit/Source/WebCore/html/HTMLVideoElement.h:81:16: note: &apos;HTMLVideoElement::VideoPresentationMode&apos; declared here
    enum class VideoPresentationMode { Fullscreen, PictureInPicture, Inline };
               ^
/Volumes/Data/EWS/WebKit/Source/WebCore/html/HTMLVideoElement.cpp:411:10: error: no member named &apos;VideoPresentationMode&apos; in &apos;WebCore::HTMLMediaElement&apos;; did you mean &apos;HTMLVideoElement::VideoPresentationMode&apos;?
    case HTMLMediaElement::VideoPresentationMode::Inline:
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         HTMLVideoElement::VideoPresentationMode
In file included from /Volumes/Data/EWS/WebKit/Source/WebCore/html/HTMLVideoElement.cpp:28:
/Volumes/Data/EWS/WebKit/Source/WebCore/html/HTMLVideoElement.h:81:16: note: &apos;HTMLVideoElement::VideoPresentationMode&apos; declared here
    enum class VideoPresentationMode { Fullscreen, PictureInPicture, Inline };
               ^
/Volumes/Data/EWS/WebKit/Source/WebCore/html/HTMLVideoElement.cpp:436:8: error: no type named &apos;VideoPresentationMode&apos; in &apos;WebCore::HTMLMediaElement&apos;; did you mean &apos;HTMLVideoElement::VideoPresentationMode&apos;?
static HTMLMediaElement::VideoPresentationMode toPresentationMode(HTMLMediaElement::VideoFullscreenMode mode)
       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       HTMLVideoElement::VideoPresentationMode
In file included from /Volumes/Data/EWS/WebKit/Source/WebCore/html/HTMLVideoElement.cpp:28:
/Volumes/Data/EWS/WebKit/Source/WebCore/html/HTMLVideoElement.h:81:16: note: &apos;HTMLVideoElement::VideoPresentationMode&apos; declared here
    enum class VideoPresentationMode { Fullscreen, PictureInPicture, Inline };
               ^
/Volumes/Data/EWS/WebKit/Source/WebCore/html/HTMLVideoElement.cpp:439:16: error: no member named &apos;VideoPresentationMode&apos; in &apos;WebCore::HTMLMediaElement&apos;; did you mean &apos;HTMLVideoElement::VideoPresentationMode&apos;?
        return HTMLMediaElement::VideoPresentationMode::Fullscreen;
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
               HTMLVideoElement::VideoPresentationMode
In file included from /Volumes/Data/EWS/WebKit/Source/WebCore/html/HTMLVideoElement.cpp:28:
/Volumes/Data/EWS/WebKit/Source/WebCore/html/HTMLVideoElement.h:81:16: note: &apos;HTMLVideoElement::VideoPresentationMode&apos; declared here
    enum class VideoPresentationMode { Fullscreen, PictureInPicture, Inline };
               ^
/Volumes/Data/EWS/WebKit/Source/WebCore/html/HTMLVideoElement.cpp:442:16: error: no member named &apos;VideoPresentationMode&apos; in &apos;WebCore::HTMLMediaElement&apos;; did you mean &apos;HTMLVideoElement::VideoPresentationMode&apos;?
        return HTMLMediaElement::VideoPresentationMode::PictureInPicture;
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
               HTMLVideoElement::VideoPresentationMode
In file included from /Volumes/Data/EWS/WebKit/Source/WebCore/html/HTMLVideoElement.cpp:28:
/Volumes/Data/EWS/WebKit/Source/WebCore/html/HTMLVideoElement.h:81:16: note: &apos;HTMLVideoElement::VideoPresentationMode&apos; declared here
    enum class VideoPresentationMode { Fullscreen, PictureInPicture, Inline };
               ^
/Volumes/Data/EWS/WebKit/Source/WebCore/html/HTMLVideoElement.cpp:445:16: error: no member named &apos;VideoPresentationMode&apos; in &apos;WebCore::HTMLMediaElement&apos;; did you mean &apos;HTMLVideoElement::VideoPresentationMode&apos;?
        return HTMLMediaElement::VideoPresentationMode::Inline;
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
               HTMLVideoElement::VideoPresentationMode
In file included from /Volumes/Data/EWS/WebKit/Source/WebCore/html/HTMLVideoElement.cpp:28:
/Volumes/Data/EWS/WebKit/Source/WebCore/html/HTMLVideoElement.h:81:16: note: &apos;HTMLVideoElement::VideoPresentationMode&apos; declared here
    enum class VideoPresentationMode { Fullscreen, PictureInPicture, Inline };
               ^
/Volumes/Data/EWS/WebKit/Source/WebCore/html/HTMLVideoElement.cpp:448:12: error: no member named &apos;VideoPresentationMode&apos; in &apos;WebCore::HTMLMediaElement&apos;; did you mean &apos;HTMLVideoElement::VideoPresentationMode&apos;?
    return HTMLMediaElement::VideoPresentationMode::Inline;
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           HTMLVideoElement::VideoPresentationMode
In file included from /Volumes/Data/EWS/WebKit/Source/WebCore/html/HTMLVideoElement.cpp:28:
/Volumes/Data/EWS/WebKit/Source/WebCore/html/HTMLVideoElement.h:81:16: note: &apos;HTMLVideoElement::VideoPresentationMode&apos; declared here
    enum class VideoPresentationMode { Fullscreen, PictureInPicture, Inline };
               ^
/Volumes/Data/EWS/WebKit/Source/WebCore/html/HTMLVideoElement.cpp:451:1: error: unknown type name &apos;VideoPresentationMode&apos;; did you mean &apos;HTMLVideoElement::VideoPresentationMode&apos;?
VideoPresentationMode HTMLVideoElement::webkitPresentationMode() const
^~~~~~~~~~~~~~~~~~~~~
HTMLVideoElement::VideoPresentationMode
In file included from /Volumes/Data/EWS/WebKit/Source/WebCore/html/HTMLVideoElement.cpp:28:
/Volumes/Data/EWS/WebKit/Source/WebCore/html/HTMLVideoElement.h:81:16: note: &apos;HTMLVideoElement::VideoPresentationMode&apos; declared here
    enum class VideoPresentationMode { Fullscreen, PictureInPicture, Inline };
               ^
10 errors generated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189400</commentid>
    <comment_count>8</comment_count>
      <attachid>277909</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-02 09:00:59 -0700</bug_when>
    <thetext>Created attachment 277909
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189412</commentid>
    <comment_count>9</comment_count>
      <attachid>277909</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-02 09:21:43 -0700</bug_when>
    <thetext>Comment on attachment 277909
Patch

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

r=me

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:815
&gt; +sub PrefixIsWordsThatMatchStartOrEndWords

I find this name to bit unclear. If we cannot find a better name, I suggest a comment explaining what this routine does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189413</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-02 09:22:43 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Comment on attachment 277909 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=277909&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:815
&gt; &gt; +sub PrefixIsWordsThatMatchStartOrEndWords
&gt; 
&gt; I find this name to bit unclear. If we cannot find a better name, I suggest
&gt; a comment explaining what this routine does.

BTW, I think the code looks much nicer now after this change.

However, it looks like iOS is still red.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189417</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-02 09:44:15 -0700</bug_when>
    <thetext>I’ll land this tonight, I guess, after fixing iOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189685</commentid>
    <comment_count>12</comment_count>
      <attachid>277982</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-02 22:20:40 -0700</bug_when>
    <thetext>Created attachment 277982
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189687</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-02 22:35:23 -0700</bug_when>
    <thetext>Will land this as soon as I see the iOS build succeeding on the EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189688</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-02 22:46:59 -0700</bug_when>
    <thetext>Committed r200361: &lt;http://trac.webkit.org/changeset/200361&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277897</attachid>
            <date>2016-05-02 01:01:12 -0700</date>
            <delta_ts>2016-05-02 08:26:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157257-20160502010148.patch</filename>
            <type>text/plain</type>
            <size>188311</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwMzE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTRlMTkxNTQ4YTlhYmEz
MmRjZWI0NjQ3Y2Y3ZTBmNTU2NDQ3M2MyZC4uMzE5M2VkN2YxOWUxYmJkNjQ3NzVjMmQ0ZTMxZWFl
YjYyMzIzM2JiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1NiBAQAorMjAxNi0wNS0wMiAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIElETCBlbnVtZXJh
dGlvbnMgdG8gYmUgbmVzdGVkIGluIHRoZWlyIEMrKyBjbGFzcyBpbnN0ZWFkIG9mIGF0IFdlYkNv
cmUgbmFtZXNwYWNlIGxldmVsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTcyNTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBDaHJpcyBhbmQgQWxleCByZXF1ZXN0ZWQgdGhpcyBhbHRlcm5hdGUgc3R5bGUs
IHdoZXJlIHRoZSBlbnVtIGNsYXNzIGZvciBlYWNoIGVudW1lcmF0aW9uCisgICAgICAgIGdvZXMg
aW5zaWRlIHRoZSBjbGFzcyBmb3IgdGhlIGludGVyZmFjZSB0aGUgZW51bWVyYXRpb24gaXMgdXNl
ZCBpbi4gQWxzbyBtYWRlIGEgcnVsZSB0aGF0CisgICAgICAgIGtlZXBzIHRoZSBuYW1lcyBzaG9y
dCBhbmQgbm90IHJlZHVuZGFudCB3aXRoIHRoZSBjbGFzcyBuYW1lIHRoZXkgYXJlIG5lc3RlZCBp
bi4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hPcHRpb25zLmg6IE1vdmVkIGFsbCB0
aGUgZW51bSBjbGFzcyB0eXBlcyBpbnRvIHRoZSBzdHJ1Y3QuCisKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRSZWZlcnJlclBv
bGljeSk6IFVwZGF0ZWQuCisgICAgICAgIChXZWJDb3JlOjpzZXRNb2RlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpzZXRDcmVkZW50aWFscyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
c2V0Q2FjaGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnNldFJlZGlyZWN0KTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpidWlsZE9wdGlvbnMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OmJ1aWxkSGVhZGVycyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXF1ZXN0
OjpjcmVhdGUpOiBEaXR0by4KKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5o
OiBVc2VkICJ1c2luZyIgdG8gcmVwZWF0IHRoZSB0eXBlcyBmcm9tIEZldGNoT3B0aW9ucworICAg
ICAgICBoZXJlIGluIEZldGNoUmVxdWVzdC4gVGhhdCB3YXkgdGhlIGdlbmVyYXRlZCBiaW5kaW5n
cyBjYW4gZmluZCB0aGUgdHlwZXMsIGFuZCB3ZSBkb24ndAorICAgICAgICBuZWVkIHRvIGRvIGFu
eSB0cmljayBsaWtlIFtJbXBsZW1lbnRlZEFzXSBpbiB0aGQgSURMIHRvIG1ha2UgaXQgd29yay4K
KworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjplcnJvcik6IFVwZGF0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaFJlc3BvbnNlOjpyZWRpcmVjdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hSZXNwb25zZTo6RmV0Y2hSZXNwb25zZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hSZXNwb25zZTo6c3RhcnRGZXRjaGluZyk6IERpdHRvLgorICAgICAgICAqIE1vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5oOiBNb3ZlZCBlbnVtIGNsYXNzIGludG8gdGhlIGNsYXNzLgorCisg
ICAgICAgICogTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNIb3N0OjpleHRlcm5hbERldmljZVR5cGUpOiBV
cGRhdGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9z
dC5oOiBNb3ZlZCBlbnVtIGNsYXNzcyBpbnRvIHRoZSBjbGFzcy4KKworICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNlc3Npb246Ok1lZGlhU2Vzc2lvbik6IFVwZGF0ZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRp
YXNlc3Npb24vTWVkaWFTZXNzaW9uLmg6IE1vdmVkIGVudW0gY2xhc3NzIGludG8gdGhlIGNsYXNz
LgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6YWRkU291cmNlQnVmZmVyKTogVXBkYXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpyZW1vdmVTb3VyY2VCdWZmZXIpOiBEaXR0by4K
KworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaDogTW92ZWQgZW51
bSBjbGFzcyBpbnRvIHRoZSBjbGFzcy4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2Uv
U291cmNlQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6c291cmNl
QnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVSZW5kZXJpbmdFcnJvcik6IFVwZGF0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OmFwcGVuZEVycm9yKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlU2FtcGxl
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnRleHRUcmFja01vZGVD
aGFuZ2VkKTogRGl0dG8uCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1
ZmZlci5oOiBSZW1vdmVkIGluY29ycmVjdCBmb3J3YXJkIGRlY2xhcmF0aW9uCisgICAgICAgIG9m
IEVuZE9mU3RyZWFtRXJyb3IgdGhhdCBhbHNvIG5vdyBzZWVtcyB0byBiZSB1bm5lZWRlZC4gTW92
ZWQgZW51bSBjbGFzcyBpbnRvCisgICAgICAgIHRoZSBjbGFzcy4KKworICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhRGV2aWNlSW5mbzo6TWVkaWFEZXZpY2VJbmZvKTogVXBkYXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhRGV2aWNlSW5mbzo6Y3JlYXRlKTogRGl0dG8uCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYURldmljZUluZm8uaDogTW92ZWQgZW51bSBjbGFzcyBpbnRvIHRoZSBj
bGFzcy4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZXNSZXF1ZXN0OjpkaWRDb21wbGV0
ZVRyYWNrU291cmNlSW5mb1JlcXVlc3QpOiBVcGRhdGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0
cmVhbVRyYWNrOjpyZWFkeVN0YXRlKTogVXBkYXRlZC4KKworICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oOiBNb3ZlZCBlbnVtIGNsYXNzIGludG8gdGhlIGNs
YXNzLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENDb25maWd1cmF0aW9uLmg6
IE1vdmVkIGVudW0gY2xhc3NlcyBpbnRvIHRoZSBjbGFzcy4KKworICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0Lmg6IE1vdmVkIGVudW0gY2xhc3MgaW50byB0aGUgY2xhc3Mu
CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnByb2Nlc3NvclR5cGUpOiBVcGRhdGVkLgorICAgICAgICAoV2ViQ29yZTo6
V2F2ZVNoYXBlck5vZGU6Om92ZXJzYW1wbGUpOiBEaXR0by4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmg6IE1vdmVkIGVudW0gY2xhc3MgaW50byB0aGUgY2xhc3Mu
CisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlKTogVXBkYXRlZC4KKwor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAo
R2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RCb2R5KTogUmVtb3ZlZCB1bm5lZWRlZCAkaW50ZXJm
YWNlTmFtZSBhcmd1bWVudC4KKyAgICAgICAgKEdldEF0dHJpYnV0ZUdldHRlck5hbWUpOiBEaXR0
by4KKyAgICAgICAgKEdldEF0dHJpYnV0ZVNldHRlck5hbWUpOiBEaXR0by4KKyAgICAgICAgKEdl
dEZ1bmN0aW9uTmFtZSk6IFR3ZWFrZWQgc3R5bGUuCisgICAgICAgIChBdHRyaWJ1dGVTaG91bGRC
ZU9uSW5zdGFuY2VGb3JDb21wYXRpYmlsaXR5KTogRGVsZXRlZC4gV2FzIGEgZnVuY3Rpb24gdGhh
dAorICAgICAgICBhbHdheXMgcmV0dXJuZWQgMC4KKyAgICAgICAgKEF0dHJpYnV0ZVNob3VsZEJl
T25JbnN0YW5jZSk6IFJlbW92ZWQgdGhlIGNhbGwgdG8gdGhlIGZ1bmN0aW9uIGFib3ZlLgorICAg
ICAgICAoSXNDbGFzc05hbWVXb3JkQm91bmRhcnkpOiBBZGRlZC4gSGVscGVyIGZvciBmdW5jdGlv
biBiZWxvdy4KKyAgICAgICAgKFByZWZpeElzV29yZHNUaGF0TWF0Y2hTdGFydE9yRW5kV29yZHMp
OiBEaXR0by4KKyAgICAgICAgKEdldEVudW1lcmF0aW9uQ2xhc3NOYW1lKTogQWRkZWQgYW4gJGlu
dGVyZmFjZSBhcmd1bWVudCBhbmQgY2hhbmdlZCB0aGlzCisgICAgICAgIHNvIGl0IGNyZWF0ZXMg
YSBuZXN0ZWQgbmFtZSBpbnNpZGUgdGhlIGNsYXNzIHJhdGhlciB0aGFuIGEgdG9wIGxldmVsIG5h
bWUKKyAgICAgICAgZm9yIHVzZSBhdCB0aGUgV2ViQ29yZSBuYW1lc3BhY2UgbGV2ZWwuCisgICAg
ICAgIChHZXRFbnVtZXJhdGlvbkNsYXNzSWRlbnRpZmllcik6IEFkZGVkLiBDYWxscyBHZXRFbnVt
ZXJhdGlvbkNsYXNzTmFtZSBhbmQKKyAgICAgICAgbWFrZXMgYSBmbGF0dGVuZWQgbmFtZSB3aXRo
b3V0ICI6OiIgdGhhdCBjYW4gYmUgdXNlZCBpbiBhbiBpZGVudGlmaWVyLgorICAgICAgICAoR2Vu
ZXJhdGVFbnVtZXJhdGlvbkltcGxlbWVudGF0aW9uQ29udGVudCk6IFJlbmFtZWQgZnJvbSBHZXRY
WFguIEFkZGVkIGFuCisgICAgICAgICRpbnRlcmZhY2UgYXJndW1lbnQsIHNvIGl0IGNhbiBwYXNz
IHRoYXQgYWxvbmcgdG8gdGhlIGZ1bmN0aW9ucyBhYm92ZS4KKyAgICAgICAgKEdlbmVyYXRlSGVh
ZGVyKTogVXBkYXRlZCB0byBub3QgcGFzcyAkaW50ZXJmYWNlTmFtZS4KKyAgICAgICAgKEdlbmVy
YXRlUHJvcGVydGllc0hhc2hUYWJsZSk6IERpdHRvLgorICAgICAgICAoR2VuZXJhdGVPdmVybG9h
ZGVkRnVuY3Rpb24pOiBSZW1vdmVkIHVubmVlZGVkICRpbnRlcmZhY2VOYW1lIGFyZ3VtZW50Lgor
ICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6IFVwZGF0ZWQgZm9yIGNoYW5nZXMgYWJv
dmUuIFR3ZWFrZWQgZm9ybWF0dGluZy4KKyAgICAgICAgKEdlbmVyYXRlRnVuY3Rpb25DYXN0ZWRU
aGlzKTogUmVtb3ZlZCB1bm5lZWRlZCAkaW50ZXJmYWNlTmFtZSBhcmd1bWVudC4KKyAgICAgICAg
KEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrKTogRGl0dG8uIEFsc28gc3RyZWFtbGluZWQgaW1wbGVt
ZW50YXRpb24gYSBiaXQKKyAgICAgICAgYW5kIG1hZGUgdGhlIElzRW51bVR5cGUgc2VjdGlvbiBj
YWxsIHRoZSBuZXcgZnVuY3Rpb25zLgorICAgICAgICAoR2VuZXJhdGVDYWxsYmFja0ltcGxlbWVu
dGF0aW9uKTogRGl0dG8uCisgICAgICAgIChKU1ZhbHVlVG9OYXRpdmUpOiBBZGRlZCBhbiAkaW50
ZXJmYWNlIGFyZ3VtZW50IGFuZCBwYXNzIGl0IGFsb25nIHdoZW4KKyAgICAgICAgZGVhbGluZyB3
aXRoIGVudW1lcmF0aW9ucy4KKyAgICAgICAgKEdlbmVyYXRlUHJvdG90eXBlRGVjbGFyYXRpb24p
OiBSZW1vdmVkIHVubmVlZGVkICRpbnRlcmZhY2VOYW1lIGFyZ3VtZW50LgorICAgICAgICAoR2Vu
ZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uKTogRGl0dG8uCisgICAgICAgIChHZW5lcmF0ZUNv
bnN0cnVjdG9yRGVmaW5pdGlvbnMpOiBEaXR0by4KKyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0
b3JEZWZpbml0aW9uKTogRGl0dG8uCisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVy
TWV0aG9kcyk6IERpdHRvLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE9iai5jcHA6IFJlZ2VuZXJhdGVkLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Rlc3RPYmouaWRsOiBBZGRlZCBzb21lIG5ldyBlbnVtcyB0aGF0IHRlc3Qgc29tZQorICAg
ICAgICBvZiB0aGUgbG9naWMgYWJvdmUuCisKKyAgICAgICAgKiBjcnlwdG8vQ3J5cHRvS2V5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleTo6Q3J5cHRvS2V5KTogVXBkYXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleTo6dXNhZ2VzKTogRGl0dG8uCisgICAgICAgICogY3J5
cHRvL0NyeXB0b0tleS5oOiBNb3ZlZCBlbnVtIGNsYXNzIHR5cGVzIGluc2lkZSB0aGUgQ3J5cHRv
S2V5IGNsYXNzLgorICAgICAgICBBZGRlZCBjb21tZW50cyBhYm91dCB0aGUgdHdvIHNpbWlsYXIg
YnV0IGRpc3RpbmN0IHR5cGVzIG5hbWVkCisgICAgICAgIENyeXB0b0tleVVzYWdlIGFuZCBDcnlw
dG9LZXk6OlVzYWdlLgorCisgICAgICAgICogY3NzL0ZvbnRGYWNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRGYWNlOjpzdGF0dXMpOiBVcGRhdGVkLgorICAgICAgICAqIGNzcy9Gb250RmFj
ZS5oOiBNb3ZlZCBlbnVtIGNsYXNzIGludG8gdGhlIGNsYXNzLgorCisgICAgICAgICogY3NzL0Zv
bnRGYWNlU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlU2V0OjpzdGF0dXMpOiBV
cGRhdGVkLgorICAgICAgICAqIGNzcy9Gb250RmFjZVNldC5oOiBNb3ZlZCBlbnVtIGNsYXNzIGlu
dG8gdGhlIGNsYXNzLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpEb2N1bWVudCk6IFVwZGF0ZWQgZm9yIHRoZSBuYW1lIGNoYW5nZSBi
YWNrIGZyb20KKyAgICAgICAgUmVmZXJyZXJIZWFkZXJQb2xpY3kgdG8gUmVmZXJyZXJQb2xpY3ku
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cHJvY2Vzc1JlZmVycmVyUG9saWN5KTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YXBwbHlDb250ZW50RGlzcG9zaXRpb25B
dHRhY2htZW50U2FuZGJveCk6IERpdHRvLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOiBNb3Jl
IG9mIHRoZSBzYW1lLgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRJbnRlcm5hbCk6IFVwZGF0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdl
ZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNr
S2luZENoYW5nZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OnRleHRUcmFja0FkZEN1ZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnRleHRUcmFja0FkZEN1ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50Ojpjb25maWd1cmVUZXh0VHJhY2tHcm91cCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0U2VsZWN0ZWRUZXh0VHJhY2spOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNvbmZpZ3VyZVRleHRUcmFja3Mp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Omhhc0Nsb3NlZENh
cHRpb25zKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpjb25m
aWd1cmVUZXh0VHJhY2tEaXNwbGF5KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjptYXJrQ2FwdGlvbkFuZFN1YnRpdGxlVHJhY2tzQXNVbmNvbmZpZ3VyZWQpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnRvUGxhdGZvcm0pOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om91dE9mQmFuZFRyYWNrU291cmNlcyk6IERpdHRvLgor
ICAgICAgICAqIGh0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVHJhY2tFbGVtZW50OjpzY2hlZHVsZUxvYWQpOiBEaXR0by4KKworICAgICAgICAqIGh0bWwv
SFRNTFZpZGVvRWxlbWVudC5oOiBNb3ZlZCBlbnVtIGNsYXNzIGludG8gY2xhc3MuCisKKyAgICAg
ICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuaWRsOiBBZGRlZCB0aGUgbWlzc2luZyBjb25kaXRp
b25hbCBvbgorICAgICAgICBWaWRlb1ByZXNlbnRhdGlvbk1vZGUsIGFuZCBhbHNvIG1vdmVkIGl0
IHRvIHRoZSBib3R0b20gb2YgdGhlIGZpbGUKKyAgICAgICAgdG8gd29yayBhcm91bmQgd2hhdCBp
cyBhcHBhcmVudGx5IGEgYnVnIGluIHRoZSBJREwgcGFyc2VyLgorCisgICAgICAgICogaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRv
V2luZFJ1bGUpOiBVcGRhdGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpmaWxsKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OmNsaXApOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6ZmlsbEludGVybmFsKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsaXBJbnRlcm5hbCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjppc1BvaW50SW5QYXRoKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmlzUG9pbnRJblBhdGhJ
bnRlcm5hbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6c21vb3RoaW5nVG9JbnRlcnBvbGF0
aW9uUXVhbGl0eSk6IERpdHRvLgorCisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmg6IE1vdmVkIGVudW0gY2xhc3MgdHlwZXMgaW50byB0aGUgY2xhc3MuCisK
KyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OnVw
ZGF0ZURpc3BsYXkpOiBVcGRhdGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGV4
dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6dXBkYXRlRGlzcGxheSk6IERpdHRvLgorCisgICAgICAg
ICogaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5i
YW5kVGV4dFRyYWNrOjpzZXRNb2RlKTogVXBkYXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRvUHJp
dmF0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrOjpzZXRNb2Rl
SW50ZXJuYWwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFjazo6dXBk
YXRlS2luZEZyb21Qcml2YXRlKTogRGl0dG8uCisgICAgICAgICogaHRtbC90cmFjay9JbmJhbmRU
ZXh0VHJhY2suaDogRGl0dG8uCisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2suY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpUZXh0VHJhY2spOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OlRleHRUcmFjazo6ZW5hYmxlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFRyYWNrOjpraW5kS2V5d29yZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRy
YWNrOjpzZXRLaW5kKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnNldEtp
bmRLZXl3b3JkSWdub3JpbmdBU0NJSUNhc2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRUcmFjazo6c2V0TW9kZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpj
dWVzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmFjdGl2ZUN1ZXMpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6YWRkQ3VlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnJlZ2lvbnMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlRleHRUcmFjazo6aXNSZW5kZXJlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VGV4
dFRyYWNrOjppc01haW5Qcm9ncmFtQ29udGVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFRyYWNrOjpjb250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMpOiBEaXR0by4KKworICAgICAg
ICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrLmg6IE1vdmVkIGVudW0gY2xhc3MgdHlwZXMgaW50byB0
aGUgY2xhc3MuCisKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmRpc3BhdGNoRXZlbnQpOiBVcGRhdGVkLgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjppc0FjdGl2ZSk6IERpdHRvLgorICAgICAgICAq
IGxvYWRlci9GcmFtZU5ldHdvcmtpbmdDb250ZXh0Lmg6IERpdHRvLgorICAgICAgICAqIHBhZ2Uv
Q2FwdGlvblVzZXJQcmVmZXJlbmNlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNl
clByZWZlcmVuY2VzOjpzb3J0ZWRUcmFja0xpc3RGb3JNZW51KTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp0ZXh0VHJhY2tTZWxlY3Rpb25TY29yZSk6
IERpdHRvLgorICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OnRleHRU
cmFja1NlbGVjdGlvblNjb3JlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNl
clByZWZlcmVuY2VzTWVkaWFBRjo6c29ydGVkVHJhY2tMaXN0Rm9yTWVudSk6IERpdHRvLgorCisg
ICAgICAgICogcGFnZS9TZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1
cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcik6IFVwZGF0ZWQgc2luY2Ugd2UKKyAg
ICAgICAgY2hhbmdlZCBSZWZlcnJlckhlYWRlclBvbGljeSBiYWNrIHRvIFJlZmVycmVyUG9saWN5
LgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlQb2xpY3kuaDogRGl0dG8uCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9SZWZlcnJlclBvbGljeS5oOiBDaGFuZ2VkIFJlZmVycmVySGVhZGVyUG9saWN5IG5h
bWUgYmFjaworICAgICAgICB0byBSZWZlcnJlclBvbGljeSBub3cgdGhhdCBuZXN0aW5nIGluc2lk
ZSBhIGNsYXNzIGVsaW1pbmF0ZWQgdGhlIGNvbmZsaWN0OworICAgICAgICBzdGlsbCBzaG91bGQg
bWVyZ2UgdGhlbSBhbmQgdGhhdCBGSVhNRSByZW1haW5zLgorCisgICAgICAgICogcGxhdGZvcm0v
Y29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW06CisgICAgICAgIChX
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6dXBkYXRlTGVnaWJsZU9wdGlvbnMp
OiBVcGRhdGVkLgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6dG9SZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSk6IFVwZGF0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldE92ZXJyaWRlQ2FjaGVQb2xpY3kpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OnRvUmVzb3VyY2VMb2FkUHJpb3JpdHkpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkludGVybmFsczo6c2V0T3ZlcnJpZGVSZXNvdXJjZUxvYWRQcmlvcml0eSk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6dG9BdXRvRmlsbEJ1dHRvblR5cGUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0U2hvd0F1dG9GaWxsQnV0dG9uKTogRGl0dG8u
CisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOiBNb3ZlZCBlbnVtIGNsYXNzIHR5cGVz
IGludG8gY2xhc3MuCisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6IFJlbW92ZWQg
dGhlICJJbnRlcm5hbHMiIHByZWZpeGVzIHdlIGFkZGVkCisgICAgICAgIHRvIHJlc29sdmUgYW1i
aWd1aXR5IGJlZm9yZS4gTmVzdGluZyB0aGVzZSBpbiB0aGUgY2xhc3Mgbm93IHRha2VzIGNhcmUK
KyAgICAgICAgb2YgdGhlIGFtYmlndWl0eSBpbnN0ZWFkLgorCisgICAgICAgICogeG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpyZXNwb25z
ZVRleHQpOiBVcGRhdGVkLgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZENh
Y2hlUmVzcG9uc2VKU09OKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVz
dDo6cmVzcG9uc2VYTUwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0
OjpyZXNwb25zZUJsb2IpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0
OjpyZXNwb25zZUFycmF5QnVmZmVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRw
UmVxdWVzdDo6c2V0UmVzcG9uc2VUeXBlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpYTUxI
dHRwUmVxdWVzdDo6b3Blbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkRGVjb2Rl
UmVzcG9uc2UpOiBEaXR0by4KKworICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5oOiBNb3Zl
ZCB0aGUgZW51bSBjbGFzcyBpbnRvIHRoZSBjbGFzcy4KKwogMjAxNi0wNS0wMSAgRGFyaW4gQWRs
ZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcCB1c2luZyBzdHJpbmctYmFzZWQg
ZW51bWVyYXRpb25zIGluIFRleHRUcmFjaywgYW5kIGVsaW1pbmF0ZSBzdXBwb3J0IGZvciBzdHJp
bmctYmFzZWQgZW51bWVyYXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNTQxMjhlNDQ1MWNjMjQ4NzAwMmYw
NWFhOTg0NDI5NTlkNTZlYTc2NS4uNGE2YzFlNDBhOGMzM2MzYjYwMTgyYTU2OGM5NzdhMmZjMWQ3
YTgyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE2LTA1LTAyICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBDaGFuZ2UgSURMIGVudW1lcmF0aW9ucyB0
byBiZSBuZXN0ZWQgaW4gdGhlaXIgQysrIGNsYXNzIGluc3RlYWQgb2YgYXQgV2ViQ29yZSBuYW1l
c3BhY2UgbGV2ZWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1NzI1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJjZSk6IFVwZGF0ZWQgc2luY2Ug
d2UgY2hhbmdlZAorICAgICAgICBSZWZlcnJlckhlYWRlclBvbGljeSBiYWNrIHRvIFJlZmVycmVy
UG9saWN5LgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVQbHVn
aW5TdHJlYW1Mb2FkKTogRGl0dG8uCisKIDIwMTYtMDUtMDEgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBGZXRjaCB0byB1c2UgZW51bSBjbGFzcyBpbnN0
ZWFkIG9mIHN0cmluZyBmb3IgZW51bWVyYXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoT3B0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaE9wdGlvbnMuaAppbmRleCA4MWYwN2QxOWFlMDA1MmJiYmZlMmVlNmMzMWI0YjBh
MTNkZDZlMmY5Li45OTNkNzA4YTgwMzZiOGJlNWU5NGM4N2FmMTM0OTYxOTcwODkxNWY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoT3B0aW9ucy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hPcHRpb25zLmgKQEAgLTMyLDIxICsz
MiwyNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gY2xhc3MgUmVmZXJyZXJQb2xp
Y3kgeyBFbXB0eVN0cmluZywgTm9SZWZlcnJlciwgTm9SZWZlcnJlcldoZW5Eb3duZ3JhZGUsIE9y
aWdpbk9ubHksIE9yaWdpbldoZW5Dcm9zc09yaWdpbiwgVW5zYWZlVXJsIH07Ci1lbnVtIGNsYXNz
IFJlcXVlc3RDYWNoZSB7IERlZmF1bHQsIE5vU3RvcmUsIFJlbG9hZCwgTm9DYWNoZSwgRm9yY2VD
YWNoZSB9OwotZW51bSBjbGFzcyBSZXF1ZXN0Q3JlZGVudGlhbHMgeyBPbWl0LCBTYW1lT3JpZ2lu
LCBJbmNsdWRlIH07Ci1lbnVtIGNsYXNzIFJlcXVlc3REZXN0aW5hdGlvbiB7IEVtcHR5U3RyaW5n
LCBEb2N1bWVudCwgU2hhcmVkd29ya2VyLCBTdWJyZXNvdXJjZSwgVW5rbm93biwgV29ya2VyIH07
Ci1lbnVtIGNsYXNzIFJlcXVlc3RNb2RlIHsgTmF2aWdhdGUsIFNhbWVPcmlnaW4sIE5vQ29ycywg
Q29ycyB9OwotZW51bSBjbGFzcyBSZXF1ZXN0UmVkaXJlY3QgeyBGb2xsb3csIEVycm9yLCBNYW51
YWwgfTsKLWVudW0gY2xhc3MgUmVxdWVzdFR5cGUgeyBFbXB0eVN0cmluZywgQXVkaW8sIEZvbnQs
IEltYWdlLCBTY3JpcHQsIFN0eWxlLCBUcmFjaywgVmlkZW8gfTsKLQogc3RydWN0IEZldGNoT3B0
aW9ucyB7Ci0gICAgUmVxdWVzdFR5cGUgdHlwZSB7IFJlcXVlc3RUeXBlOjpFbXB0eVN0cmluZyB9
OwotICAgIFJlcXVlc3REZXN0aW5hdGlvbiBkZXN0aW5hdGlvbiB7IFJlcXVlc3REZXN0aW5hdGlv
bjo6RW1wdHlTdHJpbmcgfTsKLSAgICBSZXF1ZXN0TW9kZSBtb2RlIHsgUmVxdWVzdE1vZGU6Ok5v
Q29ycyB9OwotICAgIFJlcXVlc3RDcmVkZW50aWFscyBjcmVkZW50aWFscyB7IFJlcXVlc3RDcmVk
ZW50aWFsczo6T21pdCB9OwotICAgIFJlcXVlc3RDYWNoZSBjYWNoZSB7IFJlcXVlc3RDYWNoZTo6
RGVmYXVsdCB9OwotICAgIFJlcXVlc3RSZWRpcmVjdCByZWRpcmVjdCB7IFJlcXVlc3RSZWRpcmVj
dDo6Rm9sbG93IH07CisgICAgZW51bSBjbGFzcyBUeXBlIHsgRW1wdHlTdHJpbmcsIEF1ZGlvLCBG
b250LCBJbWFnZSwgU2NyaXB0LCBTdHlsZSwgVHJhY2ssIFZpZGVvIH07CisgICAgVHlwZSB0eXBl
IHsgVHlwZTo6RW1wdHlTdHJpbmcgfTsKKworICAgIGVudW0gY2xhc3MgRGVzdGluYXRpb24geyBF
bXB0eVN0cmluZywgRG9jdW1lbnQsIFNoYXJlZHdvcmtlciwgU3VicmVzb3VyY2UsIFVua25vd24s
IFdvcmtlciB9OworICAgIERlc3RpbmF0aW9uIGRlc3RpbmF0aW9uIHsgRGVzdGluYXRpb246OkVt
cHR5U3RyaW5nIH07CisKKyAgICBlbnVtIGNsYXNzIE1vZGUgeyBOYXZpZ2F0ZSwgU2FtZU9yaWdp
biwgTm9Db3JzLCBDb3JzIH07CisgICAgTW9kZSBtb2RlIHsgTW9kZTo6Tm9Db3JzIH07CisKKyAg
ICBlbnVtIGNsYXNzIENyZWRlbnRpYWxzIHsgT21pdCwgU2FtZU9yaWdpbiwgSW5jbHVkZSB9Owor
ICAgIENyZWRlbnRpYWxzIGNyZWRlbnRpYWxzIHsgQ3JlZGVudGlhbHM6Ok9taXQgfTsKKworICAg
IGVudW0gY2xhc3MgQ2FjaGUgeyBEZWZhdWx0LCBOb1N0b3JlLCBSZWxvYWQsIE5vQ2FjaGUsIEZv
cmNlQ2FjaGUgfTsKKyAgICBDYWNoZSBjYWNoZSB7IENhY2hlOjpEZWZhdWx0IH07CisKKyAgICBl
bnVtIGNsYXNzIFJlZGlyZWN0IHsgRm9sbG93LCBFcnJvciwgTWFudWFsIH07CisgICAgUmVkaXJl
Y3QgcmVkaXJlY3QgeyBSZWRpcmVjdDo6Rm9sbG93IH07CisKKyAgICBlbnVtIGNsYXNzIFJlZmVy
cmVyUG9saWN5IHsgRW1wdHlTdHJpbmcsIE5vUmVmZXJyZXIsIE5vUmVmZXJyZXJXaGVuRG93bmdy
YWRlLCBPcmlnaW5Pbmx5LCBPcmlnaW5XaGVuQ3Jvc3NPcmlnaW4sIFVuc2FmZVVybCB9OwogICAg
IFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5IHsgUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3Ry
aW5nIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVz
dC5jcHAKaW5kZXggMTBmN2M1Y2FmNmY3ZWI5MmE2ZDAzNDJkYjY2MDUxMGE4YjkzZDhmYS4uMzAz
YTgxMWVmMmNiZWQxY2I2YmI1NTYwNTJiNWQwYjdkZTM2NTIxYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcApAQCAtNDIsMTcgKzQyLDE3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyBib29sIHNldFJlZmVycmVyUG9saWN5KEZldGNoT3B0
aW9ucyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGljeSkKIHsKICAgICBpZiAo
cmVmZXJyZXJQb2xpY3kuaXNFbXB0eSgpKQotICAgICAgICBvcHRpb25zLnJlZmVycmVyUG9saWN5
ID0gUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nOworICAgICAgICBvcHRpb25zLnJlZmVycmVy
UG9saWN5ID0gRmV0Y2hPcHRpb25zOjpSZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmc7CiAgICAg
ZWxzZSBpZiAocmVmZXJyZXJQb2xpY3kgPT0gIm5vLXJlZmVycmVyIikKLSAgICAgICAgb3B0aW9u
cy5yZWZlcnJlclBvbGljeSA9IFJlZmVycmVyUG9saWN5OjpOb1JlZmVycmVyOworICAgICAgICBv
cHRpb25zLnJlZmVycmVyUG9saWN5ID0gRmV0Y2hPcHRpb25zOjpSZWZlcnJlclBvbGljeTo6Tm9S
ZWZlcnJlcjsKICAgICBlbHNlIGlmIChyZWZlcnJlclBvbGljeSA9PSAibm8tcmVmZXJyZXItd2hl
bi1kb3duZ3JhZGUiKQotICAgICAgICBvcHRpb25zLnJlZmVycmVyUG9saWN5ID0gUmVmZXJyZXJQ
b2xpY3k6Ok5vUmVmZXJyZXJXaGVuRG93bmdyYWRlOworICAgICAgICBvcHRpb25zLnJlZmVycmVy
UG9saWN5ID0gRmV0Y2hPcHRpb25zOjpSZWZlcnJlclBvbGljeTo6Tm9SZWZlcnJlcldoZW5Eb3du
Z3JhZGU7CiAgICAgZWxzZSBpZiAocmVmZXJyZXJQb2xpY3kgPT0gIm9yaWdpbi1vbmx5IikKLSAg
ICAgICAgb3B0aW9ucy5yZWZlcnJlclBvbGljeSA9IFJlZmVycmVyUG9saWN5OjpPcmlnaW5Pbmx5
OworICAgICAgICBvcHRpb25zLnJlZmVycmVyUG9saWN5ID0gRmV0Y2hPcHRpb25zOjpSZWZlcnJl
clBvbGljeTo6T3JpZ2luT25seTsKICAgICBlbHNlIGlmIChyZWZlcnJlclBvbGljeSA9PSAib3Jp
Z2luLXdoZW4tY3Jvc3Mtb3JpZ2luIikKLSAgICAgICAgb3B0aW9ucy5yZWZlcnJlclBvbGljeSA9
IFJlZmVycmVyUG9saWN5OjpPcmlnaW5XaGVuQ3Jvc3NPcmlnaW47CisgICAgICAgIG9wdGlvbnMu
cmVmZXJyZXJQb2xpY3kgPSBGZXRjaE9wdGlvbnM6OlJlZmVycmVyUG9saWN5OjpPcmlnaW5XaGVu
Q3Jvc3NPcmlnaW47CiAgICAgZWxzZSBpZiAocmVmZXJyZXJQb2xpY3kgPT0gInVuc2FmZS11cmwi
KQotICAgICAgICBvcHRpb25zLnJlZmVycmVyUG9saWN5ID0gUmVmZXJyZXJQb2xpY3k6OlVuc2Fm
ZVVybDsKKyAgICAgICAgb3B0aW9ucy5yZWZlcnJlclBvbGljeSA9IEZldGNoT3B0aW9uczo6UmVm
ZXJyZXJQb2xpY3k6OlVuc2FmZVVybDsKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTYxLDEzICs2MSwxMyBAQCBzdGF0aWMgYm9vbCBzZXRSZWZl
cnJlclBvbGljeShGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXJQ
b2xpYwogc3RhdGljIGJvb2wgc2V0TW9kZShGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0
cmluZyYgbW9kZSkKIHsKICAgICBpZiAobW9kZSA9PSAibmF2aWdhdGUiKQotICAgICAgICBvcHRp
b25zLm1vZGUgPSBSZXF1ZXN0TW9kZTo6TmF2aWdhdGU7CisgICAgICAgIG9wdGlvbnMubW9kZSA9
IEZldGNoT3B0aW9uczo6TW9kZTo6TmF2aWdhdGU7CiAgICAgZWxzZSBpZiAobW9kZSA9PSAic2Ft
ZS1vcmlnaW4iKQotICAgICAgICBvcHRpb25zLm1vZGUgPSBSZXF1ZXN0TW9kZTo6U2FtZU9yaWdp
bjsKKyAgICAgICAgb3B0aW9ucy5tb2RlID0gRmV0Y2hPcHRpb25zOjpNb2RlOjpTYW1lT3JpZ2lu
OwogICAgIGVsc2UgaWYgKG1vZGUgPT0gIm5vLWNvcnMiKQotICAgICAgICBvcHRpb25zLm1vZGUg
PSBSZXF1ZXN0TW9kZTo6Tm9Db3JzOworICAgICAgICBvcHRpb25zLm1vZGUgPSBGZXRjaE9wdGlv
bnM6Ok1vZGU6Ok5vQ29yczsKICAgICBlbHNlIGlmIChtb2RlID09ICJjb3JzIikKLSAgICAgICAg
b3B0aW9ucy5tb2RlID0gUmVxdWVzdE1vZGU6OkNvcnM7CisgICAgICAgIG9wdGlvbnMubW9kZSA9
IEZldGNoT3B0aW9uczo6TW9kZTo6Q29yczsKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTc2LDExICs3NiwxMSBAQCBzdGF0aWMgYm9vbCBzZXRN
b2RlKEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiBtb2RlKQogc3RhdGljIGJv
b2wgc2V0Q3JlZGVudGlhbHMoRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIGNy
ZWRlbnRpYWxzKQogewogICAgIGlmIChjcmVkZW50aWFscyA9PSAib21pdCIpCi0gICAgICAgIG9w
dGlvbnMuY3JlZGVudGlhbHMgPSBSZXF1ZXN0Q3JlZGVudGlhbHM6Ok9taXQ7CisgICAgICAgIG9w
dGlvbnMuY3JlZGVudGlhbHMgPSBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpPbWl0OwogICAg
IGVsc2UgaWYgKGNyZWRlbnRpYWxzID09ICJzYW1lLW9yaWdpbiIpCi0gICAgICAgIG9wdGlvbnMu
Y3JlZGVudGlhbHMgPSBSZXF1ZXN0Q3JlZGVudGlhbHM6OlNhbWVPcmlnaW47CisgICAgICAgIG9w
dGlvbnMuY3JlZGVudGlhbHMgPSBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpTYW1lT3JpZ2lu
OwogICAgIGVsc2UgaWYgKGNyZWRlbnRpYWxzID09ICJpbmNsdWRlIikKLSAgICAgICAgb3B0aW9u
cy5jcmVkZW50aWFscyA9IFJlcXVlc3RDcmVkZW50aWFsczo6SW5jbHVkZTsKKyAgICAgICAgb3B0
aW9ucy5jcmVkZW50aWFscyA9IEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6OkluY2x1ZGU7CiAg
ICAgZWxzZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CkBAIC04OSwx
NSArODksMTUgQEAgc3RhdGljIGJvb2wgc2V0Q3JlZGVudGlhbHMoRmV0Y2hPcHRpb25zJiBvcHRp
b25zLCBjb25zdCBTdHJpbmcmIGNyZWRlbnRpYWxzKQogc3RhdGljIGJvb2wgc2V0Q2FjaGUoRmV0
Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIGNhY2hlKQogewogICAgIGlmIChjYWNo
ZSA9PSAiZGVmYXVsdCIpCi0gICAgICAgIG9wdGlvbnMuY2FjaGUgPSBSZXF1ZXN0Q2FjaGU6OkRl
ZmF1bHQ7CisgICAgICAgIG9wdGlvbnMuY2FjaGUgPSBGZXRjaE9wdGlvbnM6OkNhY2hlOjpEZWZh
dWx0OwogICAgIGVsc2UgaWYgKGNhY2hlID09ICJuby1zdG9yZSIpCi0gICAgICAgIG9wdGlvbnMu
Y2FjaGUgPSBSZXF1ZXN0Q2FjaGU6Ok5vU3RvcmU7CisgICAgICAgIG9wdGlvbnMuY2FjaGUgPSBG
ZXRjaE9wdGlvbnM6OkNhY2hlOjpOb1N0b3JlOwogICAgIGVsc2UgaWYgKGNhY2hlID09ICJyZWxv
YWQiKQotICAgICAgICBvcHRpb25zLmNhY2hlID0gUmVxdWVzdENhY2hlOjpSZWxvYWQ7CisgICAg
ICAgIG9wdGlvbnMuY2FjaGUgPSBGZXRjaE9wdGlvbnM6OkNhY2hlOjpSZWxvYWQ7CiAgICAgZWxz
ZSBpZiAoY2FjaGUgPT0gIm5vLWNhY2hlIikKLSAgICAgICAgb3B0aW9ucy5jYWNoZSA9IFJlcXVl
c3RDYWNoZTo6Tm9DYWNoZTsKKyAgICAgICAgb3B0aW9ucy5jYWNoZSA9IEZldGNoT3B0aW9uczo6
Q2FjaGU6Ok5vQ2FjaGU7CiAgICAgZWxzZSBpZiAoY2FjaGUgPT0gImZvcmNlLWNhY2hlIikKLSAg
ICAgICAgb3B0aW9ucy5jYWNoZSA9IFJlcXVlc3RDYWNoZTo6Rm9yY2VDYWNoZTsKKyAgICAgICAg
b3B0aW9ucy5jYWNoZSA9IEZldGNoT3B0aW9uczo6Q2FjaGU6OkZvcmNlQ2FjaGU7CiAgICAgZWxz
ZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMDYsMTEgKzEw
NiwxMSBAQCBzdGF0aWMgYm9vbCBzZXRDYWNoZShGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0
IFN0cmluZyYgY2FjaGUpCiBzdGF0aWMgYm9vbCBzZXRSZWRpcmVjdChGZXRjaE9wdGlvbnMmIG9w
dGlvbnMsIGNvbnN0IFN0cmluZyYgcmVkaXJlY3QpCiB7CiAgICAgaWYgKHJlZGlyZWN0ID09ICJm
b2xsb3ciKQotICAgICAgICBvcHRpb25zLnJlZGlyZWN0ID0gUmVxdWVzdFJlZGlyZWN0OjpGb2xs
b3c7CisgICAgICAgIG9wdGlvbnMucmVkaXJlY3QgPSBGZXRjaE9wdGlvbnM6OlJlZGlyZWN0OjpG
b2xsb3c7CiAgICAgZWxzZSBpZiAocmVkaXJlY3QgPT0gImVycm9yIikKLSAgICAgICAgb3B0aW9u
cy5yZWRpcmVjdCA9IFJlcXVlc3RSZWRpcmVjdDo6RXJyb3I7CisgICAgICAgIG9wdGlvbnMucmVk
aXJlY3QgPSBGZXRjaE9wdGlvbnM6OlJlZGlyZWN0OjpFcnJvcjsKICAgICBlbHNlIGlmIChyZWRp
cmVjdCA9PSAibWFudWFsIikKLSAgICAgICAgb3B0aW9ucy5yZWRpcmVjdCA9IFJlcXVlc3RSZWRp
cmVjdDo6TWFudWFsOworICAgICAgICBvcHRpb25zLnJlZGlyZWN0ID0gRmV0Y2hPcHRpb25zOjpS
ZWRpcmVjdDo6TWFudWFsOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJl
dHVybiB0cnVlOwpAQCAtMTczLDcgKzE3Myw3IEBAIHN0YXRpYyBib29sIGJ1aWxkT3B0aW9ucyhG
ZXRjaFJlcXVlc3Q6OkludGVybmFsUmVxdWVzdCYgcmVxdWVzdCwgU2NyaXB0RXhlY3V0aW9uCiAK
ICAgICBpZiAoaW5pdC5nZXQoIm1vZGUiLCB2YWx1ZSkgJiYgIXNldE1vZGUocmVxdWVzdC5vcHRp
b25zLCB2YWx1ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAocmVxdWVzdC5vcHRp
b25zLm1vZGUgPT0gUmVxdWVzdE1vZGU6Ok5hdmlnYXRlKQorICAgIGlmIChyZXF1ZXN0Lm9wdGlv
bnMubW9kZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5hdmlnYXRlKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBpZiAoaW5pdC5nZXQoImNyZWRlbnRpYWxzIiwgdmFsdWUpICYmICFzZXRD
cmVkZW50aWFscyhyZXF1ZXN0Lm9wdGlvbnMsIHZhbHVlKSkKQEAgLTE5Niw3ICsxOTYsNyBAQCBz
dGF0aWMgYm9vbCBidWlsZE9wdGlvbnMoRmV0Y2hSZXF1ZXN0OjpJbnRlcm5hbFJlcXVlc3QmIHJl
cXVlc3QsIFNjcmlwdEV4ZWN1dGlvbgogc3RhdGljIFJlZlB0cjxGZXRjaEhlYWRlcnM+IGJ1aWxk
SGVhZGVycyhjb25zdCBEaWN0aW9uYXJ5JiBpbml0LCBjb25zdCBGZXRjaFJlcXVlc3Q6OkludGVy
bmFsUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgRmV0Y2hIZWFkZXJzKiBpbnB1dEhlYWRlcnMgPSBu
dWxscHRyKQogewogICAgIEZldGNoSGVhZGVyczo6R3VhcmQgZ3VhcmQgPSBGZXRjaEhlYWRlcnM6
Okd1YXJkOjpSZXF1ZXN0OwotICAgIGlmIChyZXF1ZXN0Lm9wdGlvbnMubW9kZSA9PSBSZXF1ZXN0
TW9kZTo6Tm9Db3JzKSB7CisgICAgaWYgKHJlcXVlc3Qub3B0aW9ucy5tb2RlID09IEZldGNoT3B0
aW9uczo6TW9kZTo6Tm9Db3JzKSB7CiAgICAgICAgIGNvbnN0IFN0cmluZyYgbWV0aG9kID0gcmVx
dWVzdC5yZXF1ZXN0Lmh0dHBNZXRob2QoKTsKICAgICAgICAgaWYgKG1ldGhvZCAhPSAiR0VUIiAm
JiBtZXRob2QgIT0gIlBPU1QiICYmIG1ldGhvZCAhPSAiSEVBRCIpCiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTI0NCw4ICsyNDQsOCBAQCBSZWZQdHI8RmV0Y2hSZXF1ZXN0PiBGZXRj
aFJlcXVlc3Q6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdAog
ICAgIH0KIAogICAgIEZldGNoUmVxdWVzdDo6SW50ZXJuYWxSZXF1ZXN0IGludGVybmFsUmVxdWVz
dDsKLSAgICBpbnRlcm5hbFJlcXVlc3Qub3B0aW9ucy5tb2RlID0gUmVxdWVzdE1vZGU6OkNvcnM7
Ci0gICAgaW50ZXJuYWxSZXF1ZXN0Lm9wdGlvbnMuY3JlZGVudGlhbHMgPSBSZXF1ZXN0Q3JlZGVu
dGlhbHM6Ok9taXQ7CisgICAgaW50ZXJuYWxSZXF1ZXN0Lm9wdGlvbnMubW9kZSA9IE1vZGU6OkNv
cnM7CisgICAgaW50ZXJuYWxSZXF1ZXN0Lm9wdGlvbnMuY3JlZGVudGlhbHMgPSBDcmVkZW50aWFs
czo6T21pdDsKICAgICBpbnRlcm5hbFJlcXVlc3QucmVmZXJyZXIgPSBBU0NJSUxpdGVyYWwoImNs
aWVudCIpOwogICAgIGludGVybmFsUmVxdWVzdC5yZXF1ZXN0LnNldFVSTChyZXF1ZXN0VVJMKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmgKaW5kZXggNWY1
NDgwNjlkYTUyMWJkMGRmNGEzNzRiY2E1OTYxMDk3MmRmODYwMi4uZGI0ZDIyMGMyN2EyZGIzYzIy
YjZiOWY4ODY2ODZjM2NiY2M3MzMyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoUmVxdWVzdC5oCkBAIC01MiwxNCArNTIsMjkgQEAgcHVibGljOgogICAgIGNvbnN0IFN0
cmluZyYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcm5hbFJlcXVlc3QucmVxdWVzdC51cmwo
KS5zdHJpbmcoKTsgfQogICAgIEZldGNoSGVhZGVycyYgaGVhZGVycygpIHsgcmV0dXJuIG1faGVh
ZGVycy5nZXQoKTsgfQogCi0gICAgUmVxdWVzdFR5cGUgdHlwZSgpIGNvbnN0OwotICAgIFJlcXVl
c3REZXN0aW5hdGlvbiBkZXN0aW5hdGlvbigpIGNvbnN0OworICAgIHVzaW5nIFR5cGUgPSBGZXRj
aE9wdGlvbnM6OlR5cGU7CisgICAgVHlwZSB0eXBlKCkgY29uc3Q7CisKKyAgICB1c2luZyBEZXN0
aW5hdGlvbiA9IEZldGNoT3B0aW9uczo6RGVzdGluYXRpb247CisgICAgRGVzdGluYXRpb24gZGVz
dGluYXRpb24oKSBjb25zdDsKKwogICAgIFN0cmluZyByZWZlcnJlcigpIGNvbnN0OworCisgICAg
dXNpbmcgUmVmZXJyZXJQb2xpY3kgPSBGZXRjaE9wdGlvbnM6OlJlZmVycmVyUG9saWN5OwogICAg
IFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KCkgY29uc3Q7Ci0gICAgUmVxdWVzdE1vZGUg
bW9kZSgpIGNvbnN0OwotICAgIFJlcXVlc3RDcmVkZW50aWFscyBjcmVkZW50aWFscygpIGNvbnN0
OwotICAgIFJlcXVlc3RDYWNoZSBjYWNoZSgpIGNvbnN0OwotICAgIFJlcXVlc3RSZWRpcmVjdCBy
ZWRpcmVjdCgpIGNvbnN0OworCisgICAgdXNpbmcgTW9kZSA9IEZldGNoT3B0aW9uczo6TW9kZTsK
KyAgICBNb2RlIG1vZGUoKSBjb25zdDsKKworICAgIHVzaW5nIENyZWRlbnRpYWxzID0gRmV0Y2hP
cHRpb25zOjpDcmVkZW50aWFsczsKKyAgICBDcmVkZW50aWFscyBjcmVkZW50aWFscygpIGNvbnN0
OworCisgICAgdXNpbmcgQ2FjaGUgPSBGZXRjaE9wdGlvbnM6OkNhY2hlOworICAgIENhY2hlIGNh
Y2hlKCkgY29uc3Q7CisKKyAgICB1c2luZyBSZWRpcmVjdCA9IEZldGNoT3B0aW9uczo6UmVkaXJl
Y3Q7CisgICAgUmVkaXJlY3QgcmVkaXJlY3QoKSBjb25zdDsKKwogICAgIGNvbnN0IFN0cmluZyYg
aW50ZWdyaXR5KCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcm5hbFJlcXVlc3QuaW50ZWdyaXR5OyB9
CiAKICAgICBSZWZQdHI8RmV0Y2hSZXF1ZXN0PiBjbG9uZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgRXhjZXB0aW9uQ29kZSYpOwpAQCAtOTIsMzcgKzEwNywzNyBAQCBpbmxpbmUgRmV0Y2hSZXF1
ZXN0OjpGZXRjaFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRmV0Y2hC
b2R5JiYgYgogewogfQogCi1pbmxpbmUgUmVxdWVzdENhY2hlIEZldGNoUmVxdWVzdDo6Y2FjaGUo
KSBjb25zdAoraW5saW5lIGF1dG8gRmV0Y2hSZXF1ZXN0OjpjYWNoZSgpIGNvbnN0IC0+IENhY2hl
CiB7CiAgICAgcmV0dXJuIG1faW50ZXJuYWxSZXF1ZXN0Lm9wdGlvbnMuY2FjaGU7CiB9CiAKLWlu
bGluZSBSZXF1ZXN0Q3JlZGVudGlhbHMgRmV0Y2hSZXF1ZXN0OjpjcmVkZW50aWFscygpIGNvbnN0
CitpbmxpbmUgYXV0byBGZXRjaFJlcXVlc3Q6OmNyZWRlbnRpYWxzKCkgY29uc3QgLT4gQ3JlZGVu
dGlhbHMKIHsKICAgICByZXR1cm4gbV9pbnRlcm5hbFJlcXVlc3Qub3B0aW9ucy5jcmVkZW50aWFs
czsKIH0KIAotaW5saW5lIFJlcXVlc3REZXN0aW5hdGlvbiBGZXRjaFJlcXVlc3Q6OmRlc3RpbmF0
aW9uKCkgY29uc3QKK2lubGluZSBhdXRvIEZldGNoUmVxdWVzdDo6ZGVzdGluYXRpb24oKSBjb25z
dCAtPiBEZXN0aW5hdGlvbgogewogICAgIHJldHVybiBtX2ludGVybmFsUmVxdWVzdC5vcHRpb25z
LmRlc3RpbmF0aW9uOwogfQogCi1pbmxpbmUgUmVxdWVzdE1vZGUgRmV0Y2hSZXF1ZXN0Ojptb2Rl
KCkgY29uc3QKK2lubGluZSBhdXRvIEZldGNoUmVxdWVzdDo6bW9kZSgpIGNvbnN0IC0+IE1vZGUK
IHsKICAgICByZXR1cm4gbV9pbnRlcm5hbFJlcXVlc3Qub3B0aW9ucy5tb2RlOwogfQogCi1pbmxp
bmUgUmVxdWVzdFJlZGlyZWN0IEZldGNoUmVxdWVzdDo6cmVkaXJlY3QoKSBjb25zdAoraW5saW5l
IGF1dG8gRmV0Y2hSZXF1ZXN0OjpyZWRpcmVjdCgpIGNvbnN0IC0+IFJlZGlyZWN0CiB7CiAgICAg
cmV0dXJuIG1faW50ZXJuYWxSZXF1ZXN0Lm9wdGlvbnMucmVkaXJlY3Q7CiB9CiAKLWlubGluZSBS
ZWZlcnJlclBvbGljeSBGZXRjaFJlcXVlc3Q6OnJlZmVycmVyUG9saWN5KCkgY29uc3QKK2lubGlu
ZSBhdXRvIEZldGNoUmVxdWVzdDo6cmVmZXJyZXJQb2xpY3koKSBjb25zdCAtPiBSZWZlcnJlclBv
bGljeQogewogICAgIHJldHVybiBtX2ludGVybmFsUmVxdWVzdC5vcHRpb25zLnJlZmVycmVyUG9s
aWN5OwogfQogCi1pbmxpbmUgUmVxdWVzdFR5cGUgRmV0Y2hSZXF1ZXN0Ojp0eXBlKCkgY29uc3QK
K2lubGluZSBhdXRvIEZldGNoUmVxdWVzdDo6dHlwZSgpIGNvbnN0IC0+IFR5cGUKIHsKICAgICBy
ZXR1cm4gbV9pbnRlcm5hbFJlcXVlc3Qub3B0aW9ucy50eXBlOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKaW5kZXggMjFhODQxZmM0NmIzYzUy
NTA1MzY2MjJmMDkwOWYyN2ZlYzA4ZTk5NC4uMzViZTI0Mzk0ZmU0YWMyNWUwMTdkMDI1NWZlYjQ1
Y2Q4NjM4YTg0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVz
cG9uc2UuY3BwCkBAIC01MSw3ICs1MSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc051bGxCb2R5
U3RhdHVzKGludCBzdGF0dXMpCiAKIFJlZjxGZXRjaFJlc3BvbnNlPiBGZXRjaFJlc3BvbnNlOjpl
cnJvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogewotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEZldGNoUmVzcG9uc2UoY29udGV4dCwgUmVzcG9uc2VUeXBlOjpFcnJvciwgeyB9
LCBGZXRjaEhlYWRlcnM6OmNyZWF0ZShGZXRjaEhlYWRlcnM6Okd1YXJkOjpJbW11dGFibGUpLCB7
IH0pKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGZXRjaFJlc3BvbnNlKGNvbnRleHQsIFR5
cGU6OkVycm9yLCB7IH0sIEZldGNoSGVhZGVyczo6Y3JlYXRlKEZldGNoSGVhZGVyczo6R3VhcmQ6
OkltbXV0YWJsZSksIHsgfSkpOwogfQogCiBSZWZQdHI8RmV0Y2hSZXNwb25zZT4gRmV0Y2hSZXNw
b25zZTo6cmVkaXJlY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3Ry
aW5nJiB1cmwsIGludCBzdGF0dXMsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtNjYsNyArNjYsNyBA
QCBSZWZQdHI8RmV0Y2hSZXNwb25zZT4gRmV0Y2hSZXNwb25zZTo6cmVkaXJlY3QoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgYwogICAgICAgICBlYyA9IFR5cGVFcnJvcjsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIGF1dG8gcmVkaXJlY3RSZXNwb25zZSA9IGFk
b3B0UmVmKCpuZXcgRmV0Y2hSZXNwb25zZShjb250ZXh0LCBSZXNwb25zZVR5cGU6OkRlZmF1bHQs
IHsgfSwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUoRmV0Y2hIZWFkZXJzOjpHdWFyZDo6SW1tdXRhYmxl
KSwgeyB9KSk7CisgICAgYXV0byByZWRpcmVjdFJlc3BvbnNlID0gYWRvcHRSZWYoKm5ldyBGZXRj
aFJlc3BvbnNlKGNvbnRleHQsIFR5cGU6OkRlZmF1bHQsIHsgfSwgRmV0Y2hIZWFkZXJzOjpjcmVh
dGUoRmV0Y2hIZWFkZXJzOjpHdWFyZDo6SW1tdXRhYmxlKSwgeyB9KSk7CiAgICAgcmVkaXJlY3RS
ZXNwb25zZS0+bV9yZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZShzdGF0dXMpOwogICAgIHJlZGly
ZWN0UmVzcG9uc2UtPm1faGVhZGVycy0+ZmFzdFNldChIVFRQSGVhZGVyTmFtZTo6TG9jYXRpb24s
IHJlcXVlc3RVUkwuc3RyaW5nKCkpOwogICAgIHJldHVybiBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9u
c2UpOwpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6aW5pdGlhbGl6ZVdp
dGgoY29uc3QgRGljdGlvbmFyeSYgaW5pdCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgfQogfQog
Ci1GZXRjaFJlc3BvbnNlOjpGZXRjaFJlc3BvbnNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIFJlc3BvbnNlVHlwZSB0eXBlLCBGZXRjaEJvZHkmJiBib2R5LCBSZWY8RmV0Y2hIZWFk
ZXJzPiYmIGhlYWRlcnMsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkKK0ZldGNoUmVzcG9u
c2U6OkZldGNoUmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgVHlwZSB0
eXBlLCBGZXRjaEJvZHkmJiBib2R5LCBSZWY8RmV0Y2hIZWFkZXJzPiYmIGhlYWRlcnMsIFJlc291
cmNlUmVzcG9uc2UmJiByZXNwb25zZSkKICAgICA6IEZldGNoQm9keU93bmVyKGNvbnRleHQsIFdU
Rk1vdmUoYm9keSkpCiAgICAgLCBtX3R5cGUodHlwZSkKICAgICAsIG1fcmVzcG9uc2UoV1RGTW92
ZShyZXNwb25zZSkpCkBAIC0xMzAsNyArMTMwLDcgQEAgUmVmUHRyPEZldGNoUmVzcG9uc2U+IEZl
dGNoUmVzcG9uc2U6OmNsb25lKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEV4Y2UK
IAogdm9pZCBGZXRjaFJlc3BvbnNlOjpzdGFydEZldGNoaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEZldGNoUmVxdWVzdCYgcmVxdWVzdCwgRmV0Y2hQcm9taXNlJiYg
cHJvbWlzZSkKIHsKLSAgICBhdXRvIHJlc3BvbnNlID0gYWRvcHRSZWYoKm5ldyBGZXRjaFJlc3Bv
bnNlKGNvbnRleHQsIFJlc3BvbnNlVHlwZTo6QmFzaWMsIEZldGNoQm9keTo6bG9hZGluZ0JvZHko
KSwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUoRmV0Y2hIZWFkZXJzOjpHdWFyZDo6SW1tdXRhYmxlKSwg
UmVzb3VyY2VSZXNwb25zZSgpKSk7CisgICAgYXV0byByZXNwb25zZSA9IGFkb3B0UmVmKCpuZXcg
RmV0Y2hSZXNwb25zZShjb250ZXh0LCBUeXBlOjpCYXNpYywgRmV0Y2hCb2R5Ojpsb2FkaW5nQm9k
eSgpLCBGZXRjaEhlYWRlcnM6OmNyZWF0ZShGZXRjaEhlYWRlcnM6Okd1YXJkOjpJbW11dGFibGUp
LCBSZXNvdXJjZVJlc3BvbnNlKCkpKTsKIAogICAgIC8vIFNldHRpbmcgcGVuZGluZyBhY3Rpdml0
eSB1bnRpbCBCb2R5TG9hZGVyIGRpZEZhaWwgb3IgZGlkU3VjY2VlZCBjYWxsYmFjayBpcyBjYWxs
ZWQuCiAgICAgcmVzcG9uc2UtPnNldFBlbmRpbmdBY3Rpdml0eShyZXNwb25zZS5wdHIoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IGQ5ZWYz
OGQyMTFhMTJkYmRiOTk1ZmNlNTk0MjYyMzJlYTQ3MzZiNGUuLjdlNDhiMDNiMDQzNTljN2NmMDA0
NjA4NzhmNzRkOWI5NmI2NGYzODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5oCkBAIC00NiwxMSArNDYsMTEgQEAgY2xhc3MgUmVhZGFibGVTdHJlYW1T
b3VyY2U7CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKLWVudW0gY2xhc3MgUmVzcG9u
c2VUeXBlIHsgQmFzaWMsIENvcnMsIERlZmF1bHQsIEVycm9yLCBPcGFxdWUsIE9wYXF1ZXJlZGly
ZWN0IH07Ci0KIGNsYXNzIEZldGNoUmVzcG9uc2UgZmluYWwgOiBwdWJsaWMgRmV0Y2hCb2R5T3du
ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RmV0Y2hSZXNwb25zZT4gY3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hS
ZXNwb25zZShjb250ZXh0LCBSZXNwb25zZVR5cGU6OkRlZmF1bHQsIHsgfSwgRmV0Y2hIZWFkZXJz
OjpjcmVhdGUoRmV0Y2hIZWFkZXJzOjpHdWFyZDo6UmVzcG9uc2UpLCBSZXNvdXJjZVJlc3BvbnNl
KCkpKTsgfQorICAgIGVudW0gY2xhc3MgVHlwZSB7IEJhc2ljLCBDb3JzLCBEZWZhdWx0LCBFcnJv
ciwgT3BhcXVlLCBPcGFxdWVyZWRpcmVjdCB9OworCisgICAgc3RhdGljIFJlZjxGZXRjaFJlc3Bv
bnNlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBGZXRjaFJlc3BvbnNlKGNvbnRleHQsIFR5cGU6OkRlZmF1bHQsIHsgfSwgRmV0
Y2hIZWFkZXJzOjpjcmVhdGUoRmV0Y2hIZWFkZXJzOjpHdWFyZDo6UmVzcG9uc2UpLCBSZXNvdXJj
ZVJlc3BvbnNlKCkpKTsgfQogICAgIHN0YXRpYyBSZWY8RmV0Y2hSZXNwb25zZT4gZXJyb3IoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYpOwogICAgIHN0YXRpYyBSZWZQdHI8RmV0Y2hSZXNwb25zZT4g
cmVkaXJlY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYsIGludCwgRXhj
ZXB0aW9uQ29kZSYpOwogCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW5p
dGlhbGl6ZVdpdGgoY29uc3QgRGljdGlvbmFyeSYsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIFJl
c3BvbnNlVHlwZSB0eXBlKCkgY29uc3Q7CisgICAgVHlwZSB0eXBlKCkgY29uc3Q7CiAgICAgY29u
c3QgU3RyaW5nJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlLnVybCgpLnN0cmluZygp
OyB9CiAgICAgYm9vbCByZWRpcmVjdGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1JlZGlyZWN0ZWQ7
IH0KICAgICBpbnQgc3RhdHVzKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZS5odHRwU3RhdHVz
Q29kZSgpOyB9CkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgot
ICAgIEZldGNoUmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlc3BvbnNlVHlwZSwg
RmV0Y2hCb2R5JiYsIFJlZjxGZXRjaEhlYWRlcnM+JiYsIFJlc291cmNlUmVzcG9uc2UmJik7Cisg
ICAgRmV0Y2hSZXNwb25zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgVHlwZSwgRmV0Y2hCb2R5
JiYsIFJlZjxGZXRjaEhlYWRlcnM+JiYsIFJlc291cmNlUmVzcG9uc2UmJik7CiAKICAgICBzdGF0
aWMgdm9pZCBzdGFydEZldGNoaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBGZXRj
aFJlcXVlc3QmLCBGZXRjaFByb21pc2UmJik7CiAKQEAgLTEwOSwxNCArMTA5LDE0IEBAIHByaXZh
dGU6CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxGZXRjaExvYWRlcj4gbV9sb2FkZXI7CiAgICAg
fTsKIAotICAgIFJlc3BvbnNlVHlwZSBtX3R5cGU7CisgICAgVHlwZSBtX3R5cGU7CiAgICAgUmVz
b3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogICAgIFJlZjxGZXRjaEhlYWRlcnM+IG1faGVhZGVy
czsKICAgICBib29sIG1faXNSZWRpcmVjdGVkID0gZmFsc2U7CiAgICAgT3B0aW9uYWw8Qm9keUxv
YWRlcj4gbV9ib2R5TG9hZGVyOwogfTsKIAotaW5saW5lIFJlc3BvbnNlVHlwZSBGZXRjaFJlc3Bv
bnNlOjp0eXBlKCkgY29uc3QKK2lubGluZSBhdXRvIEZldGNoUmVzcG9uc2U6OnR5cGUoKSBjb25z
dCAtPiBUeXBlCiB7CiAgICAgcmV0dXJuIG1fdHlwZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuY3BwCmlu
ZGV4IDY2YzVmMTkxOGVkN2UzZjgzNDA4ZDAyYjg3NjczMjViZDFlYWZiN2UuLjkxMTIyMzA2NGI5
NzgwZDNhNGIxMmYxN2IwMjgwYjE5OWEzOThkOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcApAQCAt
MjMzLDcgKzIzMyw3IEBAIFN0cmluZyBNZWRpYUNvbnRyb2xzSG9zdDo6ZXh0ZXJuYWxEZXZpY2VE
aXNwbGF5TmFtZSgpIGNvbnN0CiAjZW5kaWYKIH0KIAotRGV2aWNlVHlwZSBNZWRpYUNvbnRyb2xz
SG9zdDo6ZXh0ZXJuYWxEZXZpY2VUeXBlKCkgY29uc3QKK2F1dG8gTWVkaWFDb250cm9sc0hvc3Q6
OmV4dGVybmFsRGV2aWNlVHlwZSgpIGNvbnN0IC0+IERldmljZVR5cGUKIHsKICNpZiAhRU5BQkxF
KFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICByZXR1cm4gRGV2aWNlVHlwZTo6Tm9uZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNv
bnRyb2xzSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlh
Q29udHJvbHNIb3N0LmgKaW5kZXggYzBhNzgyOThmNDRmMzhlYmYyM2E1OTJhYjhjOWIxYmNkMmRm
NmQzNC4uNGJhM2NhMzljYTk2M2JlYTMyMTZlY2EwMzA2NGQyYzA2ZTIwMDY3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJv
bHNIb3N0LmgKQEAgLTQyLDggKzQyLDYgQEAgY2xhc3MgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29u
dGFpbmVyRWxlbWVudDsKIGNsYXNzIFRleHRUcmFjazsKIGNsYXNzIFRleHRUcmFja0xpc3Q7CiAK
LWVudW0gY2xhc3MgRGV2aWNlVHlwZSB7IE5vbmUsIEFpcnBsYXksIFR2b3V0IH07Ci0KIGNsYXNz
IE1lZGlhQ29udHJvbHNIb3N0IDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFDb250cm9sc0hvc3Q+
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1lZGlhQ29udHJvbHNIb3N0PiBjcmVhdGUoSFRN
TE1lZGlhRWxlbWVudCopOwpAQCAtNzMsNiArNzEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBleGl0
ZWRGdWxsc2NyZWVuKCk7CiAKICAgICBTdHJpbmcgZXh0ZXJuYWxEZXZpY2VEaXNwbGF5TmFtZSgp
IGNvbnN0OworCisgICAgZW51bSBjbGFzcyBEZXZpY2VUeXBlIHsgTm9uZSwgQWlycGxheSwgVHZv
dXQgfTsKICAgICBEZXZpY2VUeXBlIGV4dGVybmFsRGV2aWNlVHlwZSgpIGNvbnN0OwogCiAgICAg
Ym9vbCBjb250cm9sc0RlcGVuZE9uUGFnZVNjYWxlRmFjdG9yKCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcAppbmRl
eCA3ODBiZDA5MDMwMDkxYmNlNjI4ZDNhNmQzNGFmMWFkYzU3M2FjZGY0Li4zYTgyMTY2ZjEwMTU5
NDM1Yjc2ZTlmODVjZGZlNDhjNTFiOWI0ZWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAKQEAgLTM3LDcgKzM3LDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1NZWRpYVNlc3Npb246Ok1lZGlhU2Vzc2lvbihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBNZWRpYVNlc3Npb25LaW5kIGtpbmQpCitNZWRp
YVNlc3Npb246Ok1lZGlhU2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBL
aW5kIGtpbmQpCiAgICAgOiBtX2RvY3VtZW50KGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KSkK
ICAgICAsIG1fa2luZChraW5kKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaAppbmRleCA2N2RkMzkzN2QwMDI3MDA2MDE4YjU3ZTFi
NGFlZDJkNjEzOTI5NzkxLi41MTEwMTkxZGViYWQzNjQ3Y2QwMjY5OTA0YWY4YTY5MzFkMTBjNGE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNl
c3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNl
c3Npb24uaApAQCAtMzYsMjAgKzM2LDE5IEBAIGNsYXNzIERpY3Rpb25hcnk7CiBjbGFzcyBEb2N1
bWVudDsKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiAKLWVudW0gY2xhc3MgTWVkaWFTZXNzaW9u
S2luZCB7IENvbnRlbnQsIFRyYW5zaWVudCwgVHJhbnNpZW50U29sbywgQW1iaWVudCB9OwotCiBj
bGFzcyBNZWRpYVNlc3Npb24gZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVNlc3Npb24+
IHsKIHB1YmxpYzoKKyAgICBlbnVtIGNsYXNzIEtpbmQgeyBDb250ZW50LCBUcmFuc2llbnQsIFRy
YW5zaWVudFNvbG8sIEFtYmllbnQgfTsKICAgICBlbnVtIGNsYXNzIFN0YXRlIHsgSWRsZSwgQWN0
aXZlLCBJbnRlcnJ1cHRlZCB9OwogCi0gICAgc3RhdGljIFJlZjxNZWRpYVNlc3Npb24+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBNZWRpYVNlc3Npb25LaW5kIGtpbmQp
CisgICAgc3RhdGljIFJlZjxNZWRpYVNlc3Npb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBLaW5kIGtpbmQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBNZWRpYVNlc3Npb24oY29udGV4dCwga2luZCkpOwogICAgIH0KIAogICAgIH5NZWRpYVNl
c3Npb24oKTsKIAotICAgIE1lZGlhU2Vzc2lvbktpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1f
a2luZDsgfQorICAgIEtpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQogICAgIE1l
ZGlhUmVtb3RlQ29udHJvbHMqIGNvbnRyb2xzKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTdGF0
ZSBjdXJyZW50U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRTdGF0ZTsgfQpAQCAtOTUs
NyArOTQsNyBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8SFRNTE1lZGlhRWxlbWVudCo+KiBtX2l0
ZXJhdGVkQWN0aXZlUGFydGljaXBhdGluZ0VsZW1lbnRzIHsgbnVsbHB0ciB9OwogCiAgICAgRG9j
dW1lbnQmIG1fZG9jdW1lbnQ7Ci0gICAgY29uc3QgTWVkaWFTZXNzaW9uS2luZCBtX2tpbmQ7Cisg
ICAgY29uc3QgS2luZCBtX2tpbmQ7CiAgICAgUmVmUHRyPE1lZGlhUmVtb3RlQ29udHJvbHM+IG1f
Y29udHJvbHM7CiAgICAgTWVkaWFTZXNzaW9uTWV0YWRhdGEgbV9tZXRhZGF0YTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCmlu
ZGV4IDFhMDljM2VmZmZkZjY5MjQwN2Q5MTRhYjUwZjg2N2ZiYzg0ZDJhMTQuLjQxNDI4NzljNWMz
ZDE4MDZhNDc0YjZhYTdlYzhhMzk2MTBiZWVlNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCkBAIC01NDUsNyArNTQ1LDcgQEAg
U291cmNlQnVmZmVyKiBNZWRpYVNvdXJjZTo6YWRkU291cmNlQnVmZmVyKGNvbnN0IFN0cmluZyYg
dHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMKICAgICAvLyDihrMgU2V0IHRoZSBtb2RlIGF0dHJpYnV0
ZSBvbiB0aGUgbmV3IG9iamVjdCB0byAic2VxdWVuY2UiLgogICAgIC8vIE90aGVyd2lzZToKICAg
ICAvLyDihrMgU2V0IHRoZSBtb2RlIGF0dHJpYnV0ZSBvbiB0aGUgbmV3IG9iamVjdCB0byAic2Vn
bWVudHMiLgotICAgIGJ1ZmZlci0+c2V0TW9kZShzaG91bGRHZW5lcmF0ZVRpbWVzdGFtcHMgPyBB
cHBlbmRNb2RlOjpTZXF1ZW5jZSA6IEFwcGVuZE1vZGU6OlNlZ21lbnRzLCBJR05PUkVfRVhDRVBU
SU9OKTsKKyAgICBidWZmZXItPnNldE1vZGUoc2hvdWxkR2VuZXJhdGVUaW1lc3RhbXBzID8gU291
cmNlQnVmZmVyOjpBcHBlbmRNb2RlOjpTZXF1ZW5jZSA6IFNvdXJjZUJ1ZmZlcjo6QXBwZW5kTW9k
ZTo6U2VnbWVudHMsIElHTk9SRV9FWENFUFRJT04pOwogCiAgICAgU291cmNlQnVmZmVyKiByZXN1
bHQgPSBidWZmZXIucHRyKCk7CiAKQEAgLTY3MSw3ICs2NzEsNyBAQCB2b2lkIE1lZGlhU291cmNl
OjpyZW1vdmVTb3VyY2VCdWZmZXIoU291cmNlQnVmZmVyJiBidWZmZXIsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogCiAgICAgICAgICAgICAvLyA5LjMuMiBJZiB0aGUgbW9kZSBhdHRyaWJ1dGUgb24gdGhl
IFRleHRUcmFjayBvYmplY3QgaXMgc2V0IHRvICJzaG93aW5nIiBvciAiaGlkZGVuIiwgdGhlbgog
ICAgICAgICAgICAgLy8gc2V0IHRoZSByZW1vdmVkIGVuYWJsZWQgdGV4dCB0cmFjayBmbGFnIHRv
IHRydWUuCi0gICAgICAgICAgICBpZiAodHJhY2stPm1vZGUoKSA9PSBUZXh0VHJhY2tNb2RlOjpT
aG93aW5nIHx8IHRyYWNrLT5tb2RlKCkgPT0gVGV4dFRyYWNrTW9kZTo6SGlkZGVuKQorICAgICAg
ICAgICAgaWYgKHRyYWNrLT5tb2RlKCkgPT0gVGV4dFRyYWNrOjpNb2RlOjpTaG93aW5nIHx8IHRy
YWNrLT5tb2RlKCkgPT0gVGV4dFRyYWNrOjpNb2RlOjpIaWRkZW4pCiAgICAgICAgICAgICAgICAg
cmVtb3ZlZEVuYWJsZWRUZXh0VHJhY2sgPSB0cnVlOwogCiAgICAgICAgICAgICAvLyA5LjMuMyBS
ZW1vdmUgdGhlIFRleHRUcmFjayBvYmplY3QgZnJvbSB0aGUgSFRNTE1lZGlhRWxlbWVudCB0ZXh0
VHJhY2tzIGxpc3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291
cmNlL01lZGlhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01l
ZGlhU291cmNlLmgKaW5kZXggNTk3MWM4NmU2ZjQ2MGVjMGYxYTczOGIzZDA2M2ExYmNiMGEyMWMw
MC4uMTliYTFhNGU4YzQ0MTkxNGM1YzJlMDNjYzY4YzQ2MWNkNDNmYmE4YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaApAQCAtNDgsOCAr
NDgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdlbmVyaWNFdmVudFF1ZXVlOwog
Ci1lbnVtIGNsYXNzIEVuZE9mU3RyZWFtRXJyb3IgeyBOZXR3b3JrLCBEZWNvZGUgfTsKLQogY2xh
c3MgTWVkaWFTb3VyY2UgOiBwdWJsaWMgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50LCBwdWJsaWMg
QWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGlj
IFVSTFJlZ2lzdHJhYmxlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBzZXRSZWdpc3RyeShV
UkxSZWdpc3RyeSopOwpAQCAtNjksNiArNjcsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0Nsb3Nl
ZCgpIGNvbnN0OwogICAgIGJvb2wgaXNFbmRlZCgpIGNvbnN0OwogICAgIHZvaWQgc291cmNlQnVm
ZmVyRGlkQ2hhbmdlQWN0aXZlU3RhdGUoU291cmNlQnVmZmVyJiwgYm9vbCk7CisKKyAgICBlbnVt
IGNsYXNzIEVuZE9mU3RyZWFtRXJyb3IgeyBOZXR3b3JrLCBEZWNvZGUgfTsKICAgICB2b2lkIHN0
cmVhbUVuZGVkV2l0aEVycm9yKE9wdGlvbmFsPEVuZE9mU3RyZWFtRXJyb3I+KTsKIAogICAgIC8v
IE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCmluZGV4IGJjNDkyMmJjZDYxZTZmZjA1NDU1
ZDA0MDEzYjkxNTM5N2M2ODg4ZjAuLmNjMmQzYjhkYmNkN2Y2ZTEwYzY5MTQyNjI4NDc0ZDI0MWM2
ZWMyNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291
cmNlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1Nv
dXJjZUJ1ZmZlci5jcHAKQEAgLTY0Myw3ICs2NDMsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291
cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVSZW5kZXJpbmdFcnJvcihTb3VyY2VCdWZmZXJQcml2
YQogICAgIExPRyhNZWRpYVNvdXJjZSwgIlNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0
ZURpZFJlY2VpdmVSZW5kZXJpbmdFcnJvciglcCkgLSByZXN1bHQgPSAlaSIsIHRoaXMsIGVycm9y
KTsKIAogICAgIGlmICghaXNSZW1vdmVkKCkpCi0gICAgICAgIG1fc291cmNlLT5zdHJlYW1FbmRl
ZFdpdGhFcnJvcihFbmRPZlN0cmVhbUVycm9yOjpEZWNvZGUpOworICAgICAgICBtX3NvdXJjZS0+
c3RyZWFtRW5kZWRXaXRoRXJyb3IoTWVkaWFTb3VyY2U6OkVuZE9mU3RyZWFtRXJyb3I6OkRlY29k
ZSk7CiB9CiAKIHN0YXRpYyBib29sIGRlY29kZVRpbWVDb21wYXJhdG9yKGNvbnN0IFByZXNlbnRh
dGlvbk9yZGVyU2FtcGxlTWFwOjpNYXBUeXBlOjp2YWx1ZV90eXBlJiBhLCBjb25zdCBQcmVzZW50
YXRpb25PcmRlclNhbXBsZU1hcDo6TWFwVHlwZTo6dmFsdWVfdHlwZSYgYikKQEAgLTEyNzAsNyAr
MTI3MCw3IEBAIHZvaWQgU291cmNlQnVmZmVyOjphcHBlbmRFcnJvcihib29sIGRlY29kZUVycm9y
UGFyYW0pCiAKICAgICAvLyA1LiBJZiBkZWNvZGUgZXJyb3IgaXMgdHJ1ZSwgdGhlbiBydW4gdGhl
IGVuZCBvZiBzdHJlYW0gYWxnb3JpdGhtIHdpdGggdGhlIGVycm9yIHBhcmFtZXRlciBzZXQgdG8g
ImRlY29kZSIuCiAgICAgaWYgKGRlY29kZUVycm9yUGFyYW0pCi0gICAgICAgIG1fc291cmNlLT5z
dHJlYW1FbmRlZFdpdGhFcnJvcihFbmRPZlN0cmVhbUVycm9yOjpEZWNvZGUpOworICAgICAgICBt
X3NvdXJjZS0+c3RyZWFtRW5kZWRXaXRoRXJyb3IoTWVkaWFTb3VyY2U6OkVuZE9mU3RyZWFtRXJy
b3I6OkRlY29kZSk7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRl
RGlkUmVjZWl2ZVNhbXBsZShTb3VyY2VCdWZmZXJQcml2YXRlKiwgUGFzc1JlZlB0cjxNZWRpYVNh
bXBsZT4gcHJwU2FtcGxlKQpAQCAtMTQyMSw3ICsxNDIxLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXI6
OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlU2FtcGxlKFNvdXJjZUJ1ZmZlclByaXZhdGUq
LCBQYXMKICAgICAgICAgTWVkaWFUaW1lIHByZXNlbnRhdGlvblN0YXJ0VGltZSA9IE1lZGlhVGlt
ZTo6emVyb1RpbWUoKTsKICAgICAgICAgaWYgKHByZXNlbnRhdGlvblRpbWVzdGFtcCA8IHByZXNl
bnRhdGlvblN0YXJ0VGltZSkgewogICAgICAgICAgICAgTE9HKE1lZGlhU291cmNlLCAiU291cmNl
QnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZVNhbXBsZSglcCkgLSBmYWlsaW5n
IGJlY2F1c2UgcHJlc2VudGF0aW9uVGltZXN0YW1wIDwgcHJlc2VudGF0aW9uU3RhcnRUaW1lIiwg
dGhpcyk7Ci0gICAgICAgICAgICBtX3NvdXJjZS0+c3RyZWFtRW5kZWRXaXRoRXJyb3IoRW5kT2ZT
dHJlYW1FcnJvcjo6RGVjb2RlKTsKKyAgICAgICAgICAgIG1fc291cmNlLT5zdHJlYW1FbmRlZFdp
dGhFcnJvcihNZWRpYVNvdXJjZTo6RW5kT2ZTdHJlYW1FcnJvcjo6RGVjb2RlKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xNjc0LDcgKzE2NzQsNyBAQCB2b2lkIFNvdXJj
ZUJ1ZmZlcjo6dGV4dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrKiB0cmFjaykKICAgICAvLyAy
LjQuNSBDaGFuZ2VzIHRvIHNlbGVjdGVkL2VuYWJsZWQgdHJhY2sgc3RhdGUKICAgICAvLyBJZiBh
IHRleHQgdHJhY2sgbW9kZSBiZWNvbWVzICJkaXNhYmxlZCIgYW5kIHRoZSBTb3VyY2VCdWZmZXIg
YXNzb2NpYXRlZCB3aXRoIHRoaXMgdHJhY2sgaXMgbm90CiAgICAgLy8gYXNzb2NpYXRlZCB3aXRo
IGFueSBvdGhlciBlbmFibGVkIG9yIHNlbGVjdGVkIHRyYWNrLCB0aGVuIHJ1biB0aGUgZm9sbG93
aW5nIHN0ZXBzOgotICAgIGlmICh0cmFjay0+bW9kZSgpID09IFRleHRUcmFja01vZGU6OkRpc2Fi
bGVkCisgICAgaWYgKHRyYWNrLT5tb2RlKCkgPT0gVGV4dFRyYWNrOjpNb2RlOjpEaXNhYmxlZAog
ICAgICAgICAmJiAoIW1fdmlkZW9UcmFja3MgfHwgIW1fdmlkZW9UcmFja3MtPmlzQW55VHJhY2tF
bmFibGVkKCkpCiAgICAgICAgICYmICghbV9hdWRpb1RyYWNrcyB8fCAhbV9hdWRpb1RyYWNrcy0+
aXNBbnlUcmFja0VuYWJsZWQoKSkKICAgICAgICAgJiYgKCFtX3RleHRUcmFja3MgfHwgIW1fdGV4
dFRyYWNrcy0+aXNBbnlUcmFja0VuYWJsZWQoKSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCmluZGV4IDQ4N2RmYzhlZDEyZDY0MmJj
MmNkMGQ5MTU1Y2RkNmI2ZmM1NjY5NTYuLmNiMGRjOGY3YWIyZTllMmRiYTA4NzQ1MDA3Mjk4ODIw
MzkwYmMwMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2Uv
U291cmNlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9T
b3VyY2VCdWZmZXIuaApAQCAtNTgsMTAgKzU4LDYgQEAgY2xhc3MgVGV4dFRyYWNrTGlzdDsKIGNs
YXNzIFRpbWVSYW5nZXM7CiBjbGFzcyBWaWRlb1RyYWNrTGlzdDsKIAotZW51bSBjbGFzcyBFbmRP
ZlN0cmVhbUVycm9yOwotCi1lbnVtIGNsYXNzIEFwcGVuZE1vZGUgeyBTZWdtZW50cywgU2VxdWVu
Y2UgfTsKLQogY2xhc3MgU291cmNlQnVmZmVyIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8U291
cmNlQnVmZmVyPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0V2l0
aElubGluZURhdGEsIHB1YmxpYyBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LCBwdWJsaWMgQXVk
aW9UcmFja0NsaWVudCwgcHVibGljIFZpZGVvVHJhY2tDbGllbnQsIHB1YmxpYyBUZXh0VHJhY2tD
bGllbnQgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8U291cmNlQnVmZmVyPiBjcmVhdGUoUmVm
PFNvdXJjZUJ1ZmZlclByaXZhdGU+JiYsIE1lZGlhU291cmNlKik7CkBAIC0xMTcsNiArMTEzLDcg
QEAgcHVibGljOgogCiAgICAgRG9jdW1lbnQmIGRvY3VtZW50KCkgY29uc3Q7CiAKKyAgICBlbnVt
IGNsYXNzIEFwcGVuZE1vZGUgeyBTZWdtZW50cywgU2VxdWVuY2UgfTsKICAgICBBcHBlbmRNb2Rl
IG1vZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0KICAgICB2b2lkIHNldE1vZGUoQXBwZW5k
TW9kZSwgRXhjZXB0aW9uQ29kZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5jcHAKaW5kZXggNGI4Mjc4ZTExN2Q4NjRh
MTJkZGFjZjMyZjRjNGJhZGQyMmIxZDIxNy4uZmU3NjBkOTE3ZjJlM2QxMGZhNTcyNTRiZjEyZmJj
MDkzZDlkY2Q1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYURldmljZUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFEZXZpY2VJbmZvLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWlubGluZSBNZWRpYURldmljZUluZm86Ok1lZGlhRGV2aWNlSW5mbyhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBT
dHJpbmcmIGRldmljZUlkLCBjb25zdCBTdHJpbmcmIGdyb3VwSWQsIE1lZGlhRGV2aWNlS2luZCBr
aW5kKQoraW5saW5lIE1lZGlhRGV2aWNlSW5mbzo6TWVkaWFEZXZpY2VJbmZvKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYg
ZGV2aWNlSWQsIGNvbnN0IFN0cmluZyYgZ3JvdXBJZCwgS2luZCBraW5kKQogICAgIDogQ29udGV4
dERlc3RydWN0aW9uT2JzZXJ2ZXIoY29udGV4dCkKICAgICAsIG1fbGFiZWwobGFiZWwpCiAgICAg
LCBtX2RldmljZUlkKGRldmljZUlkKQpAQCAtMzksNyArMzksNyBAQCBpbmxpbmUgTWVkaWFEZXZp
Y2VJbmZvOjpNZWRpYURldmljZUluZm8oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
Y29uc3QgUwogewogfQogCi1SZWY8TWVkaWFEZXZpY2VJbmZvPiBNZWRpYURldmljZUluZm86OmNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGxhYmVs
LCBjb25zdCBTdHJpbmcmIGRldmljZUlkLCBjb25zdCBTdHJpbmcmIGdyb3VwSWQsIE1lZGlhRGV2
aWNlS2luZCBraW5kKQorUmVmPE1lZGlhRGV2aWNlSW5mbz4gTWVkaWFEZXZpY2VJbmZvOjpjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBsYWJlbCwg
Y29uc3QgU3RyaW5nJiBkZXZpY2VJZCwgY29uc3QgU3RyaW5nJiBncm91cElkLCBLaW5kIGtpbmQp
CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFEZXZpY2VJbmZvKGNvbnRleHQsIGxh
YmVsLCBkZXZpY2VJZCwgZ3JvdXBJZCwga2luZCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZUluZm8uaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmgKaW5kZXggYzY1OWY1MmZh
MDc4YTRiYjcwNDc5Zjc0MTY5OTMzNThmNzk5MWMzZi4uZmM2ODkwNDMzMzA5ZDQ0ZTU3ZDJiY2M3
OTZiZGVkZGE1ZjRhM2RhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYURldmljZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5oCkBAIC0zMywyNCArMzMsMjQgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIE1lZGlhRGV2aWNlS2luZCB7IEF1ZGlvaW5wdXQs
IEF1ZGlvb3V0cHV0LCBWaWRlb2lucHV0IH07Ci0KIGNsYXNzIE1lZGlhRGV2aWNlSW5mbyA6IHB1
YmxpYyBSZWZDb3VudGVkPE1lZGlhRGV2aWNlSW5mbz4sIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUs
IHByaXZhdGUgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8TWVkaWFEZXZpY2VJbmZvPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIE1lZGlhRGV2aWNlS2lu
ZCk7CisgICAgZW51bSBjbGFzcyBLaW5kIHsgQXVkaW9pbnB1dCwgQXVkaW9vdXRwdXQsIFZpZGVv
aW5wdXQgfTsKKworICAgIHN0YXRpYyBSZWY8TWVkaWFEZXZpY2VJbmZvPiBjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIEtpbmQpOwogCiAgICAgY29uc3QgU3RyaW5nJiBsYWJlbCgpIGNvbnN0IHsgcmV0dXJu
IG1fbGFiZWw7IH0KICAgICBjb25zdCBTdHJpbmcmIGRldmljZUlkKCkgY29uc3QgeyByZXR1cm4g
bV9kZXZpY2VJZDsgfQogICAgIGNvbnN0IFN0cmluZyYgZ3JvdXBJZCgpIGNvbnN0IHsgcmV0dXJu
IG1fZ3JvdXBJZDsgfQotICAgIE1lZGlhRGV2aWNlS2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4g
bV9raW5kOyB9CisgICAgS2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4gbV9raW5kOyB9CiAKIHBy
aXZhdGU6Ci0gICAgTWVkaWFEZXZpY2VJbmZvKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBNZWRpYURldmljZUtpbmQp
OworICAgIE1lZGlhRGV2aWNlSW5mbyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgS2luZCk7CiAKICAgICBjb25zdCBT
dHJpbmcgbV9sYWJlbDsKICAgICBjb25zdCBTdHJpbmcgbV9kZXZpY2VJZDsKICAgICBjb25zdCBT
dHJpbmcgbV9ncm91cElkOwotICAgIGNvbnN0IE1lZGlhRGV2aWNlS2luZCBtX2tpbmQ7CisgICAg
Y29uc3QgS2luZCBtX2tpbmQ7CiB9OwogCiB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8TWVkaWFEZXZp
Y2VJbmZvPj4gTWVkaWFEZXZpY2VJbmZvVmVjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNSZXF1ZXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHAKaW5kZXgg
ODQ4ZWM4MGNhNGM1MWFmY2I5NWQ2YTc0ZjJjYWFhNzBmZmE1MzNlOS4uMTgwMmNjNWI5ZTc0NTVm
NGFmYmQ4NDgyMTlhM2RhMjI5OGNiMDcyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVlc3QuY3BwCkBAIC0xNTUs
NyArMTU1LDcgQEAgdm9pZCBNZWRpYURldmljZXNSZXF1ZXN0OjpkaWRDb21wbGV0ZVRyYWNrU291
cmNlSW5mb1JlcXVlc3QoY29uc3QgVHJhY2tTb3VyY2VJbmYKIAogICAgICAgICBTdHJpbmcgZ3Jv
dXBJZCA9IGhhc2hJRChkZXZpY2VJbmZvLT5ncm91cElkKCkpOwogCi0gICAgICAgIGF1dG8gZGV2
aWNlVHlwZSA9IGRldmljZUluZm8tPmtpbmQoKSA9PSBUcmFja1NvdXJjZUluZm86OlNvdXJjZUtp
bmQ6OkF1ZGlvID8gTWVkaWFEZXZpY2VLaW5kOjpBdWRpb2lucHV0IDogTWVkaWFEZXZpY2VLaW5k
OjpWaWRlb2lucHV0OworICAgICAgICBhdXRvIGRldmljZVR5cGUgPSBkZXZpY2VJbmZvLT5raW5k
KCkgPT0gVHJhY2tTb3VyY2VJbmZvOjpTb3VyY2VLaW5kOjpBdWRpbyA/IE1lZGlhRGV2aWNlSW5m
bzo6S2luZDo6QXVkaW9pbnB1dCA6IE1lZGlhRGV2aWNlSW5mbzo6S2luZDo6VmlkZW9pbnB1dDsK
IAogICAgICAgICBkZXZpY2VzLmFwcGVuZChNZWRpYURldmljZUluZm86OmNyZWF0ZShzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksIGxhYmVsLCBpZCwgZ3JvdXBJZCwgZGV2aWNlVHlwZSkpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtVHJhY2suY3BwCmluZGV4IDE1ZmM5OGUyYWUyNWQ4ZTJiZWQ4N2JkNjg0ZWQ0MGI0ZWQw
ZTg5NWEuLjNiMzkyZGFiNGJkMGI2ODliZGJjZGNhYTE3MjIwMTAwZDI0YjU2M2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRy
YWNrLmNwcApAQCAtMTExLDkgKzExMSw5IEBAIGJvb2wgTWVkaWFTdHJlYW1UcmFjazo6cmVtb3Rl
KCkgY29uc3QKICAgICByZXR1cm4gbV9wcml2YXRlLT5yZW1vdGUoKTsKIH0KIAotTWVkaWFTdHJl
YW1UcmFja1N0YXRlIE1lZGlhU3RyZWFtVHJhY2s6OnJlYWR5U3RhdGUoKSBjb25zdAorYXV0byBN
ZWRpYVN0cmVhbVRyYWNrOjpyZWFkeVN0YXRlKCkgY29uc3QgLT4gU3RhdGUKIHsKLSAgICByZXR1
cm4gZW5kZWQoKSA/IE1lZGlhU3RyZWFtVHJhY2tTdGF0ZTo6RW5kZWQgOiBNZWRpYVN0cmVhbVRy
YWNrU3RhdGU6OkxpdmU7CisgICAgcmV0dXJuIGVuZGVkKCkgPyBTdGF0ZTo6RW5kZWQgOiBTdGF0
ZTo6TGl2ZTsKIH0KIAogYm9vbCBNZWRpYVN0cmVhbVRyYWNrOjplbmRlZCgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2suaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFj
ay5oCmluZGV4IGM4ZGZhZTQ4YzgyZTIyNzBkM2NhN2MxZTI0MjgwNDJjYzZmMWQ0MTIuLmM5OWY0
Y2UzNDI0YzM1ZDM4OGY5MzZkYmM3OGE4MTQyMzVlYzZmMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCkBAIC00Niw4
ICs0Niw2IEBAIGNsYXNzIE1lZGlhQ29uc3RyYWludHNJbXBsOwogY2xhc3MgTWVkaWFTb3VyY2VT
ZXR0aW5nczsKIGNsYXNzIE1lZGlhVHJhY2tDb25zdHJhaW50czsKIAotZW51bSBjbGFzcyBNZWRp
YVN0cmVhbVRyYWNrU3RhdGUgeyBOZXcsIExpdmUsIEVuZGVkIH07Ci0KIGNsYXNzIE1lZGlhU3Ry
ZWFtVHJhY2sgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVN0cmVhbVRyYWNrPiwgcHVi
bGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHBy
aXZhdGUgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6Ok9ic2VydmVyIHsKIHB1YmxpYzoKICAgICBj
bGFzcyBPYnNlcnZlciB7CkBAIC03MCw3ICs2OCw4IEBAIHB1YmxpYzoKICAgICBib29sIHJlYWRv
bmx5KCkgY29uc3Q7CiAgICAgYm9vbCByZW1vdGUoKSBjb25zdDsKIAotICAgIE1lZGlhU3RyZWFt
VHJhY2tTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Q7CisgICAgZW51bSBjbGFzcyBTdGF0ZSB7IE5l
dywgTGl2ZSwgRW5kZWQgfTsKKyAgICBTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Q7CiAKICAgICBi
b29sIGVuZGVkKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENDb25maWd1cmF0aW9uLmgKaW5kZXggMTQwMmZlZDM0YTNiMmJiNWZkOTll
Y2VmOTY1M2E0MWEyNzE0MzY2MC4uYzZkMDc1MjE1ZDUyODJkYTZhYmJiY2E4ZjYzM2ViZWZhMzk5
NGY1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVEND
b25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENDb25maWd1cmF0aW9uLmgKQEAgLTQ1LDE2ICs0NSwxNyBAQCBjbGFzcyBEaWN0aW9uYXJ5Owog
CiB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCi1lbnVtIGNsYXNzIFJUQ0J1bmRsZVBvbGlj
eSB7IEJhbGFuY2VkLCBNYXhDb21wYXQsIE1heEJ1bmRsZSB9OwotZW51bSBjbGFzcyBSVENJY2VU
cmFuc3BvcnRQb2xpY3kgeyBQdWJsaWMsIFJlbGF5LCBBbGwgfTsKLQogY2xhc3MgUlRDQ29uZmln
dXJhdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ0NvbmZpZ3VyYXRpb24+IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+IGNyZWF0ZShjb25zdCBEaWN0aW9u
YXJ5JiBjb25maWd1cmF0aW9uLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB+UlRDQ29u
ZmlndXJhdGlvbigpIHsgfQogCisgICAgZW51bSBjbGFzcyBSVENCdW5kbGVQb2xpY3kgeyBCYWxh
bmNlZCwgTWF4Q29tcGF0LCBNYXhCdW5kbGUgfTsKICAgICBSVENJY2VUcmFuc3BvcnRQb2xpY3kg
aWNlVHJhbnNwb3J0UG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9pY2VUcmFuc3BvcnRQb2xpY3k7
IH0KKworICAgIGVudW0gY2xhc3MgUlRDSWNlVHJhbnNwb3J0UG9saWN5IHsgUHVibGljLCBSZWxh
eSwgQWxsIH07CiAgICAgUlRDQnVuZGxlUG9saWN5IGJ1bmRsZVBvbGljeSgpIGNvbnN0IHsgcmV0
dXJuIG1fYnVuZGxlUG9saWN5OyB9CisKICAgICBWZWN0b3I8UmVmUHRyPFJUQ0ljZVNlcnZlcj4+
IGljZVNlcnZlcnMoKSBjb25zdCB7IHJldHVybiBtX2ljZVNlcnZlcnM7IH0KIAogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCmluZGV4
IGIwOWRhMTY0OGJjZTZlYjI3ZmJkN2I2NzhmNDcxN2FlZTg5OWRiYmQuLjg1OGY2NDdhZmY3N2Ri
YjI1Mzg2NmZlMDkyMmE1NWQ0ZGJhZmM1ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaApAQCAtNzEsOCArNzEsNiBAQCBjbGFzcyBQZXJpb2Rp
Y1dhdmU7CiBjbGFzcyBTY3JpcHRQcm9jZXNzb3JOb2RlOwogY2xhc3MgV2F2ZVNoYXBlck5vZGU7
CiAKLWVudW0gY2xhc3MgQXVkaW9Db250ZXh0U3RhdGUgeyBTdXNwZW5kZWQsIFJ1bm5pbmcsIElu
dGVycnVwdGVkLCBDbG9zZWQgfTsKLQogLy8gQXVkaW9Db250ZXh0IGlzIHRoZSBjb3JuZXJzdG9u
ZSBvZiB0aGUgd2ViIGF1ZGlvIEFQSSBhbmQgYWxsIEF1ZGlvTm9kZXMgYXJlIGNyZWF0ZWQgZnJv
bSBpdC4KIC8vIEZvciB0aHJlYWQgc2FmZXR5IGJldHdlZW4gdGhlIGF1ZGlvIHRocmVhZCBhbmQg
dGhlIG1haW4gdGhyZWFkLCBpdCBoYXMgYSByZW5kZXJpbmcgZ3JhcGggbG9ja2luZyBtZWNoYW5p
c20uIAogCkBAIC0xMTcsNyArMTE1LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzdW1lKFByb21p
c2UmJik7CiAgICAgdm9pZCBjbG9zZShQcm9taXNlJiYpOwogCi0gICAgdXNpbmcgU3RhdGUgPSBB
dWRpb0NvbnRleHRTdGF0ZTsKKyAgICBlbnVtIGNsYXNzIFN0YXRlIHsgU3VzcGVuZGVkLCBSdW5u
aW5nLCBJbnRlcnJ1cHRlZCwgQ2xvc2VkIH07CiAgICAgU3RhdGUgc3RhdGUoKSBjb25zdDsKIAog
ICAgIC8vIFRoZSBBdWRpb05vZGUgY3JlYXRlIG1ldGhvZHMgYXJlIGNhbGxlZCBvbiB0aGUgbWFp
biB0aHJlYWQgKGZyb20gSmF2YVNjcmlwdCkuCkBAIC00MDUsNyArNDAzLDcgQEAgaW5saW5lIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBBdWRpb0NvbnRleHQmIGxocywgY29uc3QgQXVkaW9Db250ZXh0
JiByaHMpCiAgICAgcmV0dXJuICZsaHMgIT0gJnJoczsKIH0KIAotaW5saW5lIEF1ZGlvQ29udGV4
dFN0YXRlIEF1ZGlvQ29udGV4dDo6c3RhdGUoKSBjb25zdAoraW5saW5lIEF1ZGlvQ29udGV4dDo6
U3RhdGUgQXVkaW9Db250ZXh0OjpzdGF0ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc3RhdGU7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFw
ZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5v
ZGUuY3BwCmluZGV4IGVjZDNmNDczMmE1OTU2YTkwYzUyOGYxYmY1NGE5NDhmMjcwZmVkNWEuLjVl
ZDZiYTI5YzM4YTA4MmJiYjhhMmM3MTM5YzhkNThjY2ZlZmVlNWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwCkBAIC01NCwxNCAr
NTQsMTQgQEAgRmxvYXQzMkFycmF5KiBXYXZlU2hhcGVyTm9kZTo6Y3VydmUoKQogICAgIHJldHVy
biB3YXZlU2hhcGVyUHJvY2Vzc29yKCktPmN1cnZlKCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgV2F2
ZVNoYXBlclByb2Nlc3Nvcjo6T3ZlclNhbXBsZVR5cGUgcHJvY2Vzc29yVHlwZShPdmVyU2FtcGxl
VHlwZSB0eXBlKQorc3RhdGljIGlubGluZSBXYXZlU2hhcGVyUHJvY2Vzc29yOjpPdmVyU2FtcGxl
VHlwZSBwcm9jZXNzb3JUeXBlKFdhdmVTaGFwZXJOb2RlOjpPdmVyU2FtcGxlVHlwZSB0eXBlKQog
ewogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgT3ZlclNhbXBsZVR5cGU6Ok5vbmU6Cisg
ICAgY2FzZSBXYXZlU2hhcGVyTm9kZTo6T3ZlclNhbXBsZVR5cGU6Ok5vbmU6CiAgICAgICAgIHJl
dHVybiBXYXZlU2hhcGVyUHJvY2Vzc29yOjpPdmVyU2FtcGxlTm9uZTsKLSAgICBjYXNlIE92ZXJT
YW1wbGVUeXBlOjpfMng6CisgICAgY2FzZSBXYXZlU2hhcGVyTm9kZTo6T3ZlclNhbXBsZVR5cGU6
Ol8yeDoKICAgICAgICAgcmV0dXJuIFdhdmVTaGFwZXJQcm9jZXNzb3I6Ok92ZXJTYW1wbGUyeDsK
LSAgICBjYXNlIE92ZXJTYW1wbGVUeXBlOjpfNHg6CisgICAgY2FzZSBXYXZlU2hhcGVyTm9kZTo6
T3ZlclNhbXBsZVR5cGU6Ol80eDoKICAgICAgICAgcmV0dXJuIFdhdmVTaGFwZXJQcm9jZXNzb3I6
Ok92ZXJTYW1wbGU0eDsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC03Nyw3
ICs3Nyw3IEBAIHZvaWQgV2F2ZVNoYXBlck5vZGU6OnNldE92ZXJzYW1wbGUoT3ZlclNhbXBsZVR5
cGUgdHlwZSkKICAgICB3YXZlU2hhcGVyUHJvY2Vzc29yKCktPnNldE92ZXJzYW1wbGUocHJvY2Vz
c29yVHlwZSh0eXBlKSk7CiB9CiAKLU92ZXJTYW1wbGVUeXBlIFdhdmVTaGFwZXJOb2RlOjpvdmVy
c2FtcGxlKCkgY29uc3QKK2F1dG8gV2F2ZVNoYXBlck5vZGU6Om92ZXJzYW1wbGUoKSBjb25zdCAt
PiBPdmVyU2FtcGxlVHlwZQogewogICAgIHN3aXRjaCAoY29uc3RfY2FzdDxXYXZlU2hhcGVyTm9k
ZSo+KHRoaXMpLT53YXZlU2hhcGVyUHJvY2Vzc29yKCktPm92ZXJzYW1wbGUoKSkgewogICAgIGNh
c2UgV2F2ZVNoYXBlclByb2Nlc3Nvcjo6T3ZlclNhbXBsZU5vbmU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmgKaW5kZXggOTRmMjU5Njg1NGIw
ZDk4YTI1Y2MxNTVhODMzN2U4YzNkNzBjNmU3My4uYzkwODM3MzBjZDllNWZjYzlmOTAwNjNlN2M4
ZjAxOTcyMjZjNjY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9XYXZlU2hhcGVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
V2F2ZVNoYXBlck5vZGUuaApAQCAtMzAsOCArMzAsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWVudW0gY2xhc3MgT3ZlclNhbXBsZVR5cGUgeyBOb25lLCBfMngsIF80eCB9OwotCiBjbGFz
cyBXYXZlU2hhcGVyTm9kZSBmaW5hbCA6IHB1YmxpYyBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZSB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXYXZlU2hhcGVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29u
dGV4dCYgY29udGV4dCkKQEAgLTQzLDYgKzQxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q3Vy
dmUoRmxvYXQzMkFycmF5Kik7CiAgICAgRmxvYXQzMkFycmF5KiBjdXJ2ZSgpOwogCisgICAgZW51
bSBjbGFzcyBPdmVyU2FtcGxlVHlwZSB7IE5vbmUsIF8yeCwgXzR4IH07CiAgICAgdm9pZCBzZXRP
dmVyc2FtcGxlKE92ZXJTYW1wbGVUeXBlKTsKICAgICBPdmVyU2FtcGxlVHlwZSBvdmVyc2FtcGxl
KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1M
SHR0cFJlcXVlc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxI
dHRwUmVxdWVzdEN1c3RvbS5jcHAKaW5kZXggNGIzNGY4N2EwOGVmYjk4YWVkYjZiY2QzYjI2YWU5
NDI2ODdkODNjOC4uNzRjY2I5NjNkYmU0ZTVmZWQzYWMzY2YxZWQ5NzhjOTc1YWYyMTJlZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1
c3RvbS5jcHAKQEAgLTE4OSw4ICsxODksOCBAQCBKU1ZhbHVlIEpTWE1MSHR0cFJlcXVlc3Q6OnJl
c3BvbnNlKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiAgICAgYXV0byB0eXBlID0gd3JhcHBlZCgp
LnJlc3BvbnNlVHlwZSgpOwogCiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBYTUxIdHRw
UmVxdWVzdFJlc3BvbnNlVHlwZTo6RW1wdHlTdHJpbmc6Ci0gICAgY2FzZSBYTUxIdHRwUmVxdWVz
dFJlc3BvbnNlVHlwZTo6VGV4dDoKKyAgICBjYXNlIFhNTEh0dHBSZXF1ZXN0OjpSZXNwb25zZVR5
cGU6OkVtcHR5U3RyaW5nOgorICAgIGNhc2UgWE1MSHR0cFJlcXVlc3Q6OlJlc3BvbnNlVHlwZTo6
VGV4dDoKICAgICAgICAgcmV0dXJuIHJlc3BvbnNlVGV4dChzdGF0ZSk7CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgYnJlYWs7CkBAIC0yMDAsMTIgKzIwMCwxMiBAQCBKU1ZhbHVlIEpTWE1MSHR0cFJl
cXVlc3Q6OnJlc3BvbnNlKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiAgICAgICAgIHJldHVybiBq
c051bGwoKTsKIAogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgWE1MSHR0cFJlcXVlc3RS
ZXNwb25zZVR5cGU6OkVtcHR5U3RyaW5nOgotICAgIGNhc2UgWE1MSHR0cFJlcXVlc3RSZXNwb25z
ZVR5cGU6OlRleHQ6CisgICAgY2FzZSBYTUxIdHRwUmVxdWVzdDo6UmVzcG9uc2VUeXBlOjpFbXB0
eVN0cmluZzoKKyAgICBjYXNlIFhNTEh0dHBSZXF1ZXN0OjpSZXNwb25zZVR5cGU6OlRleHQ6CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKIAotICAgIGNhc2Ug
WE1MSHR0cFJlcXVlc3RSZXNwb25zZVR5cGU6Okpzb246CisgICAgY2FzZSBYTUxIdHRwUmVxdWVz
dDo6UmVzcG9uc2VUeXBlOjpKc29uOgogICAgICAgICB7CiAgICAgICAgICAgICBKU1ZhbHVlIHZh
bHVlID0gSlNPTlBhcnNlKCZzdGF0ZSwgd3JhcHBlZCgpLnJlc3BvbnNlVGV4dElnbm9yaW5nUmVz
cG9uc2VUeXBlKCkpOwogICAgICAgICAgICAgaWYgKCF2YWx1ZSkKQEAgLTIxNSw3ICsyMTUsNyBA
QCBKU1ZhbHVlIEpTWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlKEV4ZWNTdGF0ZSYgc3RhdGUpIGNv
bnN0CiAgICAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgICAgIH0KIAotICAgIGNhc2UgWE1M
SHR0cFJlcXVlc3RSZXNwb25zZVR5cGU6OkRvY3VtZW50OgorICAgIGNhc2UgWE1MSHR0cFJlcXVl
c3Q6OlJlc3BvbnNlVHlwZTo6RG9jdW1lbnQ6CiAgICAgICAgIHsKICAgICAgICAgICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwogICAgICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gd3JhcHBl
ZCgpLnJlc3BvbnNlWE1MKGVjKTsKQEAgLTIyNiwxMCArMjI2LDEwIEBAIEpTVmFsdWUgSlNYTUxI
dHRwUmVxdWVzdDo6cmVzcG9uc2UoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKICAgICAgICAgICAg
IHJldHVybiB0b0pTKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIGRvY3VtZW50KTsKICAgICAgICAg
fQogCi0gICAgY2FzZSBYTUxIdHRwUmVxdWVzdFJlc3BvbnNlVHlwZTo6QmxvYjoKKyAgICBjYXNl
IFhNTEh0dHBSZXF1ZXN0OjpSZXNwb25zZVR5cGU6OkJsb2I6CiAgICAgICAgIHJldHVybiB0b0pT
KCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIHdyYXBwZWQoKS5yZXNwb25zZUJsb2IoKSk7CiAKLSAg
ICBjYXNlIFhNTEh0dHBSZXF1ZXN0UmVzcG9uc2VUeXBlOjpBcnJheWJ1ZmZlcjoKKyAgICBjYXNl
IFhNTEh0dHBSZXF1ZXN0OjpSZXNwb25zZVR5cGU6OkFycmF5YnVmZmVyOgogICAgICAgICByZXR1
cm4gdG9KUygmc3RhdGUsIGdsb2JhbE9iamVjdCgpLCB3cmFwcGVkKCkucmVzcG9uc2VBcnJheUJ1
ZmZlcigpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggMzNhMzhkMDhmOWM1MzU4NTQzODM4YWFiZDA3MzM2
NDIwMDA5MTFhZi4uYjY5MzBmMjMwODlmZGM0ZTViMGFmMTk1MDU4NDczYzdlNWQyZTU0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0KQEAgLTMyMSw3ICszMjEsNyBAQCBzdWIgSXNET01HbG9iYWxPYmplY3QKIAogc3ViIEdlbmVy
YXRlR2V0T3duUHJvcGVydHlTbG90Qm9keQogewotICAgIG15ICgkaW50ZXJmYWNlLCAkaW50ZXJm
YWNlTmFtZSwgJGNsYXNzTmFtZSwgJGhhc0luc3RhbmNlUHJvcGVydGllcywgJGlubGluZWQpID0g
QF87CisgICAgbXkgKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRoYXNJbnN0YW5jZVByb3BlcnRp
ZXMsICRpbmxpbmVkKSA9IEBfOwogCiAgICAgbXkgJG5hbWVzcGFjZU1heWJlID0gKCRpbmxpbmVk
ID8gIkpTQzo6IiA6ICIiKTsKICAgICBteSAkbmFtZWRHZXR0ZXJGdW5jdGlvbiA9IEdldE5hbWVk
R2V0dGVyRnVuY3Rpb24oJGludGVyZmFjZSk7CkBAIC01MTEsMzUgKzUxMSwyNyBAQCBzdWIgU2hv
dWxkR2VuZXJhdGVUb0pTSW1wbGVtZW50YXRpb24KIAogc3ViIEdldEF0dHJpYnV0ZUdldHRlck5h
bWUKIHsKLSAgICBteSAoJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRpbnRlcmZhY2UsICRh
dHRyaWJ1dGUpID0gQF87Ci0gICAgaWYgKCRhdHRyaWJ1dGUtPmlzU3RhdGljKSB7Ci0gICAgICAg
IHJldHVybiAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkY2xhc3NOYW1lKSAuICJDb25zdHJ1
Y3RvciIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUt
Pm5hbWUpOwotICAgIH0KLSAgICBpZiAoSXNKU0J1aWx0aW4oJGludGVyZmFjZSwgJGF0dHJpYnV0
ZSkpIHsKLSAgICAgICAgcmV0dXJuIEdldEpTQnVpbHRpbkZ1bmN0aW9uTmFtZSgkY2xhc3NOYW1l
LCAkYXR0cmlidXRlKTsKLSAgICB9Ci0gICAgcmV0dXJuICJqcyIgLiAkaW50ZXJmYWNlTmFtZSAu
ICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSkg
LiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+IC9Db25zdHJ1Y3RvciQvID8gIkNvbnN0
cnVjdG9yIiA6ICIiKTsKKyAgICBteSAoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0
ZSkgPSBAXzsKKworICAgIHJldHVybiAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkY2xhc3NO
YW1lKSAuICJDb25zdHJ1Y3RvciIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0cmli
dXRlLT5zaWduYXR1cmUtPm5hbWUpIGlmICRhdHRyaWJ1dGUtPmlzU3RhdGljOworICAgIHJldHVy
biBHZXRKU0J1aWx0aW5GdW5jdGlvbk5hbWUoJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSkgaWYgSXNK
U0J1aWx0aW4oJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CisgICAgcmV0dXJuICJqcyIgLiAkaW50
ZXJmYWNlLT5uYW1lIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT5uYW1lKSAuICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVj
dG9yJC8gPyAiQ29uc3RydWN0b3IiIDogIiIpOwogfQogCiBzdWIgR2V0QXR0cmlidXRlU2V0dGVy
TmFtZQogewotICAgIG15ICgkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSwg
JGF0dHJpYnV0ZSkgPSBAXzsKLSAgICBpZiAoJGF0dHJpYnV0ZS0+aXNTdGF0aWMpIHsKLSAgICAg
ICAgcmV0dXJuICJzZXQiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGNsYXNzTmFtZSkg
LiAiQ29uc3RydWN0b3IiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5uYW1lKTsKLSAgICB9Ci0gICAgaWYgKElzSlNCdWlsdGluKCRpbnRlcmZhY2Us
ICRhdHRyaWJ1dGUpKSB7Ci0gICAgICAgIHJldHVybiAic2V0IiAuICRjb2RlR2VuZXJhdG9yLT5X
S191Y2ZpcnN0KEdldEpTQnVpbHRpbkZ1bmN0aW9uTmFtZSgkY2xhc3NOYW1lLCAkYXR0cmlidXRl
KSk7Ci0gICAgfQotICAgIHJldHVybiAic2V0SlMiIC4gJGludGVyZmFjZU5hbWUgLiAkY29kZUdl
bmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUpIC4gKCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29uc3RydWN0b3IkLyA/ICJDb25zdHJ1Y3RvciIg
OiAiIik7CisgICAgbXkgKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpID0gQF87
CisKKyAgICByZXR1cm4gInNldCIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkY2xhc3NO
YW1lKSAuICJDb25zdHJ1Y3RvciIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0cmli
dXRlLT5zaWduYXR1cmUtPm5hbWUpIGlmICRhdHRyaWJ1dGUtPmlzU3RhdGljOworICAgIHJldHVy
biAic2V0IiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KEdldEpTQnVpbHRpbkZ1bmN0aW9u
TmFtZSgkY2xhc3NOYW1lLCAkYXR0cmlidXRlKSkgaWYgSXNKU0J1aWx0aW4oJGludGVyZmFjZSwg
JGF0dHJpYnV0ZSk7CisgICAgcmV0dXJuICJzZXRKUyIgLiAkaW50ZXJmYWNlLT5uYW1lIC4gJGNv
ZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKSAuICgk
YXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8gPyAiQ29uc3RydWN0
b3IiIDogIiIpOwogfQogCiBzdWIgR2V0RnVuY3Rpb25OYW1lCiB7CiAgICAgbXkgKCRpbnRlcmZh
Y2UsICRjbGFzc05hbWUsICRmdW5jdGlvbikgPSBAXzsKIAotICAgIGlmIChJc0pTQnVpbHRpbigk
aW50ZXJmYWNlLCAkZnVuY3Rpb24pKSB7Ci0gICAgICAgIHJldHVybiBHZXRKU0J1aWx0aW5GdW5j
dGlvbk5hbWUoJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKTsKLSAgICB9CisgICAgcmV0dXJuIEdldEpT
QnVpbHRpbkZ1bmN0aW9uTmFtZSgkY2xhc3NOYW1lLCAkZnVuY3Rpb24pIGlmIElzSlNCdWlsdGlu
KCRpbnRlcmZhY2UsICRmdW5jdGlvbik7CiAKICAgICBteSAkZnVuY3Rpb25OYW1lID0gJGZ1bmN0
aW9uLT5zaWduYXR1cmUtPm5hbWU7CiAgICAgJGZ1bmN0aW9uTmFtZSA9ICJTeW1ib2xJdGVyYXRv
ciIgaWYgJGZ1bmN0aW9uTmFtZSBlcSAiW1N5bWJvbC5JdGVyYXRvcl0iOwpAQCAtNjE5LDE0ICs2
MTEsNiBAQCBzdWIgSW50ZXJmYWNlUmVxdWlyZXNBdHRyaWJ1dGVzT25JbnN0YW5jZQogICAgIHJl
dHVybiAwOwogfQogCi1zdWIgQXR0cmlidXRlU2hvdWxkQmVPbkluc3RhbmNlRm9yQ29tcGF0aWJp
bGl0eQotewotICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKLSAgICBteSAkYXR0cmlidXRlID0g
c2hpZnQ7Ci0gICAgbXkgJGludGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT5uYW1lOwotICAgIHJl
dHVybiAwOwotfQotCiBzdWIgQXR0cmlidXRlU2hvdWxkQmVPbkluc3RhbmNlCiB7CiAgICAgbXkg
JGludGVyZmFjZSA9IHNoaWZ0OwpAQCAtNjQyLDggKzYyNiw2IEBAIHN1YiBBdHRyaWJ1dGVTaG91
bGRCZU9uSW5zdGFuY2UKICAgICAjIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI1Vu
Zm9yZ2VhYmxlCiAgICAgcmV0dXJuIDEgaWYgSXNVbmZvcmdlYWJsZSgkaW50ZXJmYWNlLCAkYXR0
cmlidXRlKTsKIAotICAgIHJldHVybiAxIGlmIEF0dHJpYnV0ZVNob3VsZEJlT25JbnN0YW5jZUZv
ckNvbXBhdGliaWxpdHkoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7Ci0KICAgICBpZiAoJGludGVy
ZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNoZWNrU2VjdXJpdHkifSkgewogICAgICAgICBp
ZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRG9Ob3RDaGVj
a1NlY3VyaXR5In0gb3IKICAgICAgICAgICAgICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkRvTm90Q2hlY2tTZWN1cml0eU9uR2V0dGVyIn0pIHsKQEAgLTgxMywz
MyArNzk1LDg2IEBAIHN1YiBHZXRJbXBsQ2xhc3NOYW1lCiAgICAgcmV0dXJuICRuYW1lOwogfQog
CitzdWIgSXNDbGFzc05hbWVXb3JkQm91bmRhcnkKK3sKKyAgICBteSAoJG5hbWUsICRpKSA9IEBf
OworCisgICAgIyBJbnRlcnByZXQgbmVnYXRpdmUgbnVtYmVycyBhcyBkaXN0YW5jZSBmcm9tIGVu
ZCBvZiBzdHJpbmcsIGp1c3QgYXMgdGhlIHN1YnN0ciBmdW5jdGlvbiBkb2VzLgorICAgICRpICs9
IGxlbmd0aCgkbmFtZSkgaWYgJGkgPCAwOworCisgICAgcmV0dXJuIDAgaWYgJGkgPCAwOworICAg
IHJldHVybiAxIGlmICRpID09IDA7CisgICAgcmV0dXJuIDEgaWYgJGkgPT0gbGVuZ3RoKCRuYW1l
KTsKKyAgICByZXR1cm4gMCBpZiAkaSA+IGxlbmd0aCgkbmFtZSk7CisKKyAgICAjIEZvciBub3cs
IHdvcmQgYm91bmRhcmllcyBhcmUgd2hlcmUgdGhlIHByZXZpb3VzIGxldHRlciB3YXMgbm90IHVw
cGVyY2FzZSBidXQgdGhlIG5leHQgbGV0dGVyIGlzIHVwcGVyY2FzZS4KKyAgICAjIENvdWxkIG1h
a2UgYSBmYW5jaWVyIHJ1bGUgdGhhdCB1bmRlcnN0YW5kcyB0aGF0IHRoZSBib3VuZGFyeSBiZXR3
ZWVuIFVSTCBhbmQgTGVuZ3RoIGluIFVSTExlbmd0aCBpcyBvbmUgdG9vLgorICAgIHJldHVybiBz
dWJzdHIoJG5hbWUsICRpIC0gMSwgMikgPX4gL1teQS1aXVtBLVpdLzsKK30KKworc3ViIFByZWZp
eElzV29yZHNUaGF0TWF0Y2hTdGFydE9yRW5kV29yZHMKK3sKKyAgICBteSAoJGNsYXNzLCAkbmFt
ZSwgJGkpID0gQF87CisKKyAgICByZXR1cm4gSXNDbGFzc05hbWVXb3JkQm91bmRhcnkoJG5hbWUs
ICRpKQorICAgICAgICAmJiAoSXNDbGFzc05hbWVXb3JkQm91bmRhcnkoJGNsYXNzLCAkaSkgJiYg
c3Vic3RyKCRjbGFzcywgMCwgJGkpIGVxIHN1YnN0cigkbmFtZSwgMCwgJGkpCisgICAgICAgICAg
ICB8fCBJc0NsYXNzTmFtZVdvcmRCb3VuZGFyeSgkY2xhc3MsIC0kaSkgJiYgc3Vic3RyKCRjbGFz
cywgLSRpKSBlcSBzdWJzdHIoJG5hbWUsIDAsICRpKSk7Cit9CisKIHN1YiBHZXRFbnVtZXJhdGlv
bkNsYXNzTmFtZQogewotICAgIG15ICgkbmFtZSkgPSBAXzsKLSAgICByZXR1cm4gJGNvZGVHZW5l
cmF0b3ItPldLX3VjZmlyc3QoJG5hbWUpOwotfTsKKyAgICBteSAoJGludGVyZmFjZSwgJG5hbWUp
ID0gQF87CisKKyAgICBteSAkY2xhc3MgPSBHZXRJbXBsQ2xhc3NOYW1lKCRpbnRlcmZhY2UtPm5h
bWUpOworICAgIG15ICRlbnVtID0gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJG5hbWUpOwor
CisgICAgIyBTaW5jZSB0aGUgZW51bWVyYXRpb24gbmFtZSB3aWxsIGJlIG5lc3RlZCBpbiB0aGUg
Y2xhc3MgbmFtZSdzIG5hbWVzcGFjZSwgcmVtb3ZlIGFueSB3b3JkcworICAgICMgdGhhdCBoYXBw
ZW4gdG8gbWF0Y2ggdGhlIHN0YXJ0IG9yIGVuZCBvZiB0aGUgY2xhc3MgbmFtZS4gSWYgYW4gZW51
bWVyYXRpb24gaXMgbmFtZWQgVHJhY2tUeXBlIG9yCisgICAgIyBUZXh0VHJhY2tUeXBlLCBhbmQg
dGhlIGNsYXNzIGlzIG5hbWVkIFRleHRUcmFjaywgdGhlbiB3ZSB3aWxsIGdldCBhIG5hbWUgbGlr
ZSBUZXh0VHJhY2s6OlR5cGUuCisgICAgbXkgJGVudW1MZW5ndGggPSBsZW5ndGgoJGVudW0pOwor
ICAgIG15ICRsb25nZXN0UHJlZml4TGVuZ3RoID0gMDsKKyAgICBpZiAoJGVudW0gPX4gL15bQS1a
XS4vKSB7CisgICAgICAgIGZvciAobXkgJGkgPSAyOyAkaSA8ICRlbnVtTGVuZ3RoIC0gMTsgJGkr
KykgeworICAgICAgICAgICAgJGxvbmdlc3RQcmVmaXhMZW5ndGggPSAkaSBpZiBQcmVmaXhJc1dv
cmRzVGhhdE1hdGNoU3RhcnRPckVuZFdvcmRzKCRjbGFzcywgJGVudW0sICRpKTsKKyAgICAgICAg
fQorICAgIH0KKyAgICAkZW51bSA9IHN1YnN0cigkZW51bSwgJGxvbmdlc3RQcmVmaXhMZW5ndGgp
OworCisgICAgcmV0dXJuICIke2NsYXNzfTo6JGVudW0iOworfQorCitzdWIgR2V0RW51bWVyYXRp
b25DbGFzc0lkZW50aWZpZXIKK3sKKyAgICBteSAoJGludGVyZmFjZSwgJG5hbWUpID0gQF87CisK
KyAgICBteSAkaWRlbnRpZmllciA9IEdldEVudW1lcmF0aW9uQ2xhc3NOYW1lKCRpbnRlcmZhY2Us
ICRuYW1lKTsKKyAgICAkaWRlbnRpZmllciA9fiBzLzo6Ly87CisgICAgcmV0dXJuICRpZGVudGlm
aWVyOworfQogCiBzdWIgR2V0RW51bWVyYXRpb25WYWx1ZU5hbWUKIHsKICAgICBteSAoJG5hbWUp
ID0gQF87CisKICAgICByZXR1cm4gIkVtcHR5U3RyaW5nIiBpZiAkbmFtZSBlcSAiIjsKICAgICAk
bmFtZSA9IGpvaW4oIiIsIG1hcCB7ICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRfKSB9IHNw
bGl0KCItIiwgJG5hbWUpKTsKICAgICAkbmFtZSA9ICJfJG5hbWUiIGlmICRuYW1lID1+IC9eXGQv
OwogICAgIHJldHVybiAkbmFtZTsKLX07Cit9CiAKLXN1YiBHZXRFbnVtZXJhdGlvbkltcGxlbWVu
dGF0aW9uQ29udGVudAorc3ViIEdlbmVyYXRlRW51bWVyYXRpb25JbXBsZW1lbnRhdGlvbkNvbnRl
bnQKIHsKLSAgICBteSAoJGVudW1lcmF0aW9ucykgPSBAXzsKKyAgICBteSAoJGludGVyZmFjZSwg
JGVudW1lcmF0aW9ucykgPSBAXzsKIAotICAgICMgRklYTUU6IENvdWxkIG9wdGltaXplIHRoaXMg
dG8gb25seSBnZW5lcmF0ZSB0aGluZ3MgdGhhdCBhcmUgdXNlZCwgd2hpY2ggd291bGQgcmVxdWly
ZQotICAgICMgaXRlcmF0aW5nIG92ZXIgZXZlcnl0aGluZyBpbiB0aGUgaW50ZXJmYWNlLgorICAg
ICMgRklYTUU6IENvdWxkIG9wdGltaXplIHRoaXMgdG8gb25seSBnZW5lcmF0ZSB0aGUgcGFydHMg
b2YgZWFjaCBlbnVtZXJhdGlvbiB0aGF0IGFyZSBhY3R1YWxseQorICAgICMgdXNlZCwgd2hpY2gg
d291bGQgcmVxdWlyZSBpdGVyYXRpbmcgb3ZlciBldmVyeXRoaW5nIGluIHRoZSBpbnRlcmZhY2Uu
CiAKICAgICBteSAkcmVzdWx0ID0gIiI7CiAgICAgZm9yZWFjaCBteSAkZW51bWVyYXRpb24gKEAk
ZW51bWVyYXRpb25zKSB7CiAgICAgICAgIG15ICRuYW1lID0gJGVudW1lcmF0aW9uLT5uYW1lOwog
Ci0gICAgICAgIG15ICRjbGFzc05hbWUgPSBHZXRFbnVtZXJhdGlvbkNsYXNzTmFtZSgkbmFtZSk7
CisgICAgICAgIG15ICRjbGFzc05hbWUgPSBHZXRFbnVtZXJhdGlvbkNsYXNzTmFtZSgkaW50ZXJm
YWNlLCAkbmFtZSk7CisgICAgICAgIG15ICRjbGFzc0lkZW50aWZpZXIgPSBHZXRFbnVtZXJhdGlv
bkNsYXNzSWRlbnRpZmllcigkaW50ZXJmYWNlLCAkbmFtZSk7CiAKICAgICAgICAgIyBGSVhNRTog
QSBsaXR0bGUgdWdseSB0byBoYXZlIHRoaXMgYmUgYSBzaWRlIGVmZmVjdCBpbnN0ZWFkIG9mIGEg
cmV0dXJuIHZhbHVlLgogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiPHJ1bnRpbWUvSlNTdHJp
bmcuaD4iKTsKQEAgLTg1MCw4ICs4ODUsOCBAQCBzdWIgR2V0RW51bWVyYXRpb25JbXBsZW1lbnRh
dGlvbkNvbnRlbnQKICAgICAgICAgIyBEZWNsYXJlIHRoZXNlIGluc3RlYWQgb2YgdXNpbmcgInN0
YXRpYyIgYmVjYXVzZSB0aGVzZSBtYXkgYmUgdW51c2VkIGFuZCB3ZSBkb24ndAogICAgICAgICAj
IHdhbnQgdG8gZ2V0IHdhcm5pbmdzIGFib3V0IHRoZW0uCiAgICAgICAgICRyZXN1bHQgLj0gIkpT
U3RyaW5nKiBqc1N0cmluZ1dpdGhDYWNoZShFeGVjU3RhdGUqLCAkY2xhc3NOYW1lKTtcbiI7Ci0g
ICAgICAgICRyZXN1bHQgLj0gIk9wdGlvbmFsPCRjbGFzc05hbWU+IHBhcnNlJGNsYXNzTmFtZShF
eGVjU3RhdGUmLCBKU1ZhbHVlKTtcbiI7Ci0gICAgICAgICRyZXN1bHQgLj0gImV4dGVybiBjb25z
dCBjaGFyIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXMke2NsYXNzTmFtZX1bXTtcblxuIjsKKyAg
ICAgICAgJHJlc3VsdCAuPSAiT3B0aW9uYWw8JGNsYXNzTmFtZT4gcGFyc2UkY2xhc3NJZGVudGlm
aWVyKEV4ZWNTdGF0ZSYsIEpTVmFsdWUpO1xuIjsKKyAgICAgICAgJHJlc3VsdCAuPSAiZXh0ZXJu
IGNvbnN0IGNoYXIgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlcyR7Y2xhc3NJZGVudGlmaWVyfVtd
O1xuXG4iOwogCiAgICAgICAgICMgVGFrZSBhbiBFeGVjU3RhdGUqIGluc3RlYWQgb2YgYW4gRXhl
Y1N0YXRlJiB0byBtYXRjaCB0aGUganNTdHJpbmdXaXRoQ2FjaGUgZnJvbSBKU1N0cmluZy5oLgog
ICAgICAgICAjIEZJWE1FOiBDaGFuZ2UgdG8gdGFrZSBWTSYgaW5zdGVhZCBvZiBFeGVjU3RhdGUq
LgpAQCAtODg1LDcgKzkyMCw3IEBAIHN1YiBHZXRFbnVtZXJhdGlvbkltcGxlbWVudGF0aW9uQ29u
dGVudAogICAgICAgICAjIEZJWE1FOiBDaGFuZ2UgdG8gdGFrZSBWTSYgaW5zdGVhZCBvZiBFeGVj
U3RhdGUmLgogICAgICAgICAjIEZJWE1FOiBDb25zaWRlciB1c2luZyB0b1N0cmluZ09yTnVsbCB0
byBtYWtlIGV4Y2VwdGlvbiBjaGVja2luZyBmYXN0ZXIuCiAgICAgICAgICMgRklYTUU6IENvbnNp
ZGVyIGZpbmRpbmcgYSBtb3JlIGVmZmljaWVudCB3YXkgdG8gbWF0Y2ggYWdhaW5zdCBhbGwgdGhl
IHN0cmluZ3MgcXVpY2tseS4KLSAgICAgICAgJHJlc3VsdCAuPSAiT3B0aW9uYWw8JGNsYXNzTmFt
ZT4gcGFyc2UkY2xhc3NOYW1lKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpXG4iOwor
ICAgICAgICAkcmVzdWx0IC49ICJPcHRpb25hbDwkY2xhc3NOYW1lPiBwYXJzZSRjbGFzc0lkZW50
aWZpZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSlcbiI7CiAgICAgICAgICRyZXN1
bHQgLj0gIntcbiI7CiAgICAgICAgICRyZXN1bHQgLj0gIiAgICBhdXRvIHN0cmluZ1ZhbHVlID0g
dmFsdWUudG9XVEZTdHJpbmcoJnN0YXRlKTtcbiI7CiAgICAgICAgIGZvcmVhY2ggbXkgJHZhbHVl
IChAeyRlbnVtZXJhdGlvbi0+dmFsdWVzfSkgewpAQCAtOTAwLDcgKzkzNSw3IEBAIHN1YiBHZXRF
bnVtZXJhdGlvbkltcGxlbWVudGF0aW9uQ29udGVudAogICAgICAgICAkcmVzdWx0IC49ICIgICAg
cmV0dXJuIE51bGxvcHQ7XG4iOwogICAgICAgICAkcmVzdWx0IC49ICJ9XG5cbiI7CiAKLSAgICAg
ICAgJHJlc3VsdCAuPSAiY29uc3QgY2hhciBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzJHtjbGFz
c05hbWV9W10gPSBcIlxcXCIiIC4gam9pbiAoIlxcXCIsIFxcXCIiLCBAeyRlbnVtZXJhdGlvbi0+
dmFsdWVzfSkgLiAiXFxcIlwiO1xuXG4iOworICAgICAgICAkcmVzdWx0IC49ICJjb25zdCBjaGFy
IGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXMke2NsYXNzSWRlbnRpZmllcn1bXSA9IFwiXFxcIiIg
LiBqb2luICgiXFxcIiwgXFxcIiIsIEB7JGVudW1lcmF0aW9uLT52YWx1ZXN9KSAuICJcXFwiXCI7
XG5cbiI7CiAKICAgICAgICAgJHJlc3VsdCAuPSAiI2VuZGlmXG5cbiIgaWYgJGNvbmRpdGlvbmFs
U3RyaW5nOwogICAgIH0KQEAgLTEzNDgsMTAgKzEzODMsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIK
IAogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJcbiIpOwogCi0gICAgIyBBZGQgcHJvdG90eXBl
IGRlY2xhcmF0aW9uLgotICAgIGlmIChIZWFkZXJOZWVkc1Byb3RvdHlwZURlY2xhcmF0aW9uKCRp
bnRlcmZhY2UpKSB7Ci0gICAgICAgIEdlbmVyYXRlUHJvdG90eXBlRGVjbGFyYXRpb24oXEBoZWFk
ZXJDb250ZW50LCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlLCAkaW50ZXJmYWNlTmFtZSk7Ci0gICAg
fQorICAgIEdlbmVyYXRlUHJvdG90eXBlRGVjbGFyYXRpb24oXEBoZWFkZXJDb250ZW50LCAkY2xh
c3NOYW1lLCAkaW50ZXJmYWNlKSBpZiBIZWFkZXJOZWVkc1Byb3RvdHlwZURlY2xhcmF0aW9uKCRp
bnRlcmZhY2UpOwogCiAgICAgaWYgKCRoYXNGb3J3YXJkRGVjbGFyaW5nRnVuY3Rpb25zKSB7CiAg
ICAgICAgIG15ICRpbkFwcGxlQ29weXJpZ2h0ID0gMDsKQEAgLTEzODksMTAgKzE0MjEsMTAgQEAg
c3ViIEdlbmVyYXRlSGVhZGVyCiAKICAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9
ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRhdHRyaWJ1dGUtPnNp
Z25hdHVyZSk7CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2lmICR7Y29uZGl0
aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Ci0gICAgICAgICAgICBteSAk
Z2V0dGVyID0gR2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFt
ZSwgJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICBteSAkZ2V0dGVyID0gR2V0
QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsK
ICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJKU0M6OkVuY29kZWRKU1ZhbHVlICR7
Z2V0dGVyfShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVy
dHlOYW1lKTtcbiIpOwogICAgICAgICAgICAgaWYgKCFJc1JlYWRvbmx5KCRhdHRyaWJ1dGUpKSB7
Ci0gICAgICAgICAgICAgICAgbXkgJHNldHRlciA9IEdldEF0dHJpYnV0ZVNldHRlck5hbWUoJGlu
dGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOworICAgICAg
ICAgICAgICAgIG15ICRzZXR0ZXIgPSBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2Us
ICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICJib29sICR7c2V0dGVyfShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpO1xuIik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7
CkBAIC0xNDU4LDEzICsxNDkwLDEzIEBAIHN1YiBHZW5lcmF0ZVByb3BlcnRpZXNIYXNoVGFibGUK
ICAgICAgICAgbXkgJHNwZWNpYWwgPSBHZXRKU0NBdHRyaWJ1dGVzRm9yQXR0cmlidXRlKCRpbnRl
cmZhY2UsICRhdHRyaWJ1dGUpOwogICAgICAgICBwdXNoKEAkaGFzaFNwZWNpYWxzLCAkc3BlY2lh
bCk7CiAKLSAgICAgICAgbXkgJGdldHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVy
ZmFjZU5hbWUsICRjbGFzc05hbWUsICRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOworICAgICAgICBt
eSAkZ2V0dGVyID0gR2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1l
LCAkYXR0cmlidXRlKTsKICAgICAgICAgcHVzaChAJGhhc2hWYWx1ZTEsICRnZXR0ZXIpOwogCiAg
ICAgICAgIGlmIChJc1JlYWRvbmx5KCRhdHRyaWJ1dGUpKSB7CiAgICAgICAgICAgICBwdXNoKEAk
aGFzaFZhbHVlMiwgIjAiKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG15ICRzZXR0
ZXIgPSBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAk
aW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKKyAgICAgICAgICAgIG15ICRzZXR0ZXIgPSBHZXRBdHRy
aWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpOwogICAg
ICAgICAgICAgcHVzaChAJGhhc2hWYWx1ZTIsICRzZXR0ZXIpOwogICAgICAgICB9CiAKQEAgLTE2
NDEsOSArMTY3Myw3IEBAIHN1YiBMZW5ndGhPZkxvbmdlc3RGdW5jdGlvblBhcmFtZXRlckxpc3QK
IAogc3ViIEdlbmVyYXRlT3ZlcmxvYWRlZEZ1bmN0aW9uCiB7Ci0gICAgbXkgJGZ1bmN0aW9uID0g
c2hpZnQ7Ci0gICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OwotICAgIG15ICRpbnRlcmZhY2VOYW1l
ID0gc2hpZnQ7CisgICAgbXkgKCRmdW5jdGlvbiwgJGludGVyZmFjZSkgPSBAXzsKIAogICAgICMg
R2VuZXJhdGUgY29kZSBmb3IgY2hvb3NpbmcgdGhlIGNvcnJlY3Qgb3ZlcmxvYWQgdG8gY2FsbC4g
T3ZlcmxvYWRzIGFyZQogICAgICMgY2hvc2VuIGJhc2VkIG9uIHRoZSB0b3RhbCBudW1iZXIgb2Yg
YXJndW1lbnRzIHBhc3NlZCBhbmQgdGhlIHR5cGUgb2YKQEAgLTE2NTIsNiArMTY4Miw3IEBAIHN1
YiBHZW5lcmF0ZU92ZXJsb2FkZWRGdW5jdGlvbgogICAgICMgZGVjbGFyYXRpb24gaW4gdGhlIElE
TC4KIAogICAgIG15ICRraW5kID0gJGZ1bmN0aW9uLT5pc1N0YXRpYyA/ICJDb25zdHJ1Y3RvciIg
OiAoT3BlcmF0aW9uU2hvdWxkQmVPbkluc3RhbmNlKCRpbnRlcmZhY2UsICRmdW5jdGlvbikgPyAi
SW5zdGFuY2UiIDogIlByb3RvdHlwZSIpOworICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGludGVy
ZmFjZS0+bmFtZTsKICAgICBteSAkZnVuY3Rpb25OYW1lID0gImpzJHtpbnRlcmZhY2VOYW1lfSR7
a2luZH1GdW5jdGlvbiIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkZnVuY3Rpb24tPnNp
Z25hdHVyZS0+bmFtZSk7CiAKICAgICAjIEZJWE1FOiBJbXBsZW1lbnQgc3VwcG9ydCBmb3Igb3Zl
cmxvYWRlZCBmdW5jdGlvbnMgd2l0aCB2YXJpYWRpYyBhcmd1bWVudHMuCkBAIC0xOTAxLDcgKzE5
MzIsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgIHB1c2goQGltcGxDb250ZW50
LCAiXG51c2luZyBuYW1lc3BhY2UgSlNDO1xuXG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwg
Im5hbWVzcGFjZSBXZWJDb3JlIHtcblxuIik7CiAKLSAgICBwdXNoKEBpbXBsQ29udGVudCwgR2V0
RW51bWVyYXRpb25JbXBsZW1lbnRhdGlvbkNvbnRlbnQoJGVudW1lcmF0aW9ucykpOworICAgIHB1
c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZUVudW1lcmF0aW9uSW1wbGVtZW50YXRpb25Db250ZW50
KCRpbnRlcmZhY2UsICRlbnVtZXJhdGlvbnMpKTsKIAogICAgIG15IEBmdW5jdGlvbnMgPSBAeyRp
bnRlcmZhY2UtPmZ1bmN0aW9uc307CiAgICAgcHVzaChAZnVuY3Rpb25zLCBAeyRpbnRlcmZhY2Ut
Pml0ZXJhYmxlLT5mdW5jdGlvbnN9KSBpZiAkaW50ZXJmYWNlLT5pdGVyYWJsZTsKQEAgLTE5NDks
MTAgKzE5ODAsMTAgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICAgICAg
bXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9u
YWxTdHJpbmcoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlKTsKICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJp
bmc7Ci0gICAgICAgICAgICBteSAkZ2V0dGVyID0gR2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50
ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CisgICAgICAg
ICAgICBteSAkZ2V0dGVyID0gR2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkY2xh
c3NOYW1lLCAkYXR0cmlidXRlKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlND
OjpFbmNvZGVkSlNWYWx1ZSAke2dldHRlcn0oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7XG4iKTsKICAgICAgICAgICAgIGlmICghSXNSZWFk
b25seSgkYXR0cmlidXRlKSkgewotICAgICAgICAgICAgICAgIG15ICRzZXR0ZXIgPSBHZXRBdHRy
aWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlLCAk
YXR0cmlidXRlKTsKKyAgICAgICAgICAgICAgICBteSAkc2V0dGVyID0gR2V0QXR0cmlidXRlU2V0
dGVyTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtzZXR0ZXJ9KEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7XG4iKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG4iKSBpZiAkY29u
ZGl0aW9uYWxTdHJpbmc7CkBAIC0xOTY5LDE2ICsyMDAwLDkgQEAgc3ViIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiIpOwogICAgIH0KIAotICAg
ICMgQWRkIHByb3RvdHlwZSBkZWNsYXJhdGlvbi4KLSAgICBpZiAoIUhlYWRlck5lZWRzUHJvdG90
eXBlRGVjbGFyYXRpb24oJGludGVyZmFjZSkpIHsKLSAgICAgICAgR2VuZXJhdGVQcm90b3R5cGVE
ZWNsYXJhdGlvbihcQGltcGxDb250ZW50LCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlLCAkaW50ZXJm
YWNlTmFtZSk7Ci0gICAgfQotCi0gICAgIyBBZGQgY29uc3RydWN0b3IgZGVjbGFyYXRpb24KLSAg
ICBpZiAoTmVlZHNDb25zdHJ1Y3RvclByb3BlcnR5KCRpbnRlcmZhY2UpKSB7Ci0gICAgICAgIEdl
bmVyYXRlQ29uc3RydWN0b3JEZWNsYXJhdGlvbihcQGltcGxDb250ZW50LCAkY2xhc3NOYW1lLCAk
aW50ZXJmYWNlLCAkaW50ZXJmYWNlTmFtZSk7Ci0gICAgfQorICAgIEdlbmVyYXRlUHJvdG90eXBl
RGVjbGFyYXRpb24oXEBpbXBsQ29udGVudCwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSkgaWYgIUhl
YWRlck5lZWRzUHJvdG90eXBlRGVjbGFyYXRpb24oJGludGVyZmFjZSk7CiAKKyAgICBHZW5lcmF0
ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24oXEBpbXBsQ29udGVudCwgJGNsYXNzTmFtZSwgJGludGVy
ZmFjZSkgaWYgTmVlZHNDb25zdHJ1Y3RvclByb3BlcnR5KCRpbnRlcmZhY2UpOwogCiAgICAgbXkg
QGhhc2hLZXlzID0gKCk7CiAgICAgbXkgQGhhc2hWYWx1ZTEgPSAoKTsKQEAgLTIwNDMsMTMgKzIw
NjcsMTMgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIG15ICRzcGVj
aWFsID0gKEBzcGVjaWFscyA+IDApID8gam9pbigiIHwgIiwgQHNwZWNpYWxzKSA6ICIwIjsKICAg
ICAgICAgICAgIHB1c2goQGhhc2hTcGVjaWFscywgJHNwZWNpYWwpOwogCi0gICAgICAgICAgICBt
eSAkZ2V0dGVyID0gR2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlTmFtZSwgJGNsYXNz
TmFtZSwgJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICBteSAkZ2V0dGVyID0g
R2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRl
KTsKICAgICAgICAgICAgIHB1c2goQGhhc2hWYWx1ZTEsICRnZXR0ZXIpOwogCiAgICAgICAgICAg
ICBpZiAoSXNSZWFkb25seSgkYXR0cmlidXRlKSkgewogICAgICAgICAgICAgICAgIHB1c2goQGhh
c2hWYWx1ZTIsICIwIik7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG15
ICRzZXR0ZXIgPSBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NO
YW1lLCAkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKKyAgICAgICAgICAgICAgICBteSAkc2V0dGVy
ID0gR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmli
dXRlKTsKICAgICAgICAgICAgICAgICBwdXNoKEBoYXNoVmFsdWUyLCAkc2V0dGVyKTsKICAgICAg
ICAgICAgIH0KIApAQCAtMjA5MSw5ICsyMTE1LDkgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNv
bXBpbGVUaW1lQ2hlY2tGb3JFbnVtc0lmTmVlZGVkKCRpbnRlcmZhY2UpKTsKIAogICAgICAgICBt
eSAkcHJvdG9DbGFzc05hbWUgPSAiJHtjbGFzc05hbWV9UHJvdG90eXBlIjsKLSAgICAgICAgR2Vu
ZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb25zKFxAaW1wbENvbnRlbnQsICRjbGFzc05hbWUsICRw
cm90b0NsYXNzTmFtZSwgJGludGVyZmFjZU5hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGlu
dGVyZmFjZSk7CisgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9ucyhcQGltcGxD
b250ZW50LCAkY2xhc3NOYW1lLCAkcHJvdG9DbGFzc05hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFt
ZSwgJGludGVyZmFjZSk7CiAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiTmFtZWRDb25zdHJ1Y3RvciJ9KSB7Ci0gICAgICAgICAgICBHZW5lcmF0ZUNvbnN0cnVj
dG9yRGVmaW5pdGlvbnMoXEBpbXBsQ29udGVudCwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1l
LCAkaW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5hbWVk
Q29uc3RydWN0b3IifSwgJGludGVyZmFjZSwgIkdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yIik7
CisgICAgICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbnMoXEBpbXBsQ29udGVu
dCwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1lLCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiTmFtZWRDb25zdHJ1Y3RvciJ9LCAkaW50ZXJmYWNlLCAiR2VuZXJhdGluZ05hbWVk
Q29uc3RydWN0b3IiKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjI4MCw4ICsyMzA0LDggQEAg
c3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIG15ICRlbmFibGVfZnVuY3Rp
b24gPSBHZXRSdW50aW1lRW5hYmxlRnVuY3Rpb25OYW1lKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSk7
CiAgICAgICAgICAgICBteSAkYXR0cmlidXRlTmFtZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+
bmFtZTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICgke2VuYWJsZV9m
dW5jdGlvbn0oKSkge1xuIik7Ci0gICAgICAgICAgICBteSAkZ2V0dGVyID0gR2V0QXR0cmlidXRl
R2V0dGVyTmFtZSgkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSwgJGF0dHJp
YnV0ZSk7Ci0gICAgICAgICAgICBteSAkc2V0dGVyID0gSXNSZWFkb25seSgkYXR0cmlidXRlKSA/
ICJudWxscHRyIiA6IEdldEF0dHJpYnV0ZVNldHRlck5hbWUoJGludGVyZmFjZU5hbWUsICRjbGFz
c05hbWUsICRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOworICAgICAgICAgICAgbXkgJGdldHRlciA9
IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0
ZSk7CisgICAgICAgICAgICBteSAkc2V0dGVyID0gSXNSZWFkb25seSgkYXR0cmlidXRlKSA/ICJu
dWxscHRyIiA6IEdldEF0dHJpYnV0ZVNldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwg
JGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgYXV0
byogY3VzdG9tR2V0dGVyU2V0dGVyID0gQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sICRn
ZXR0ZXIsICRzZXR0ZXIpO1xuIik7CiAgICAgICAgICAgICBteSAkanNjQXR0cmlidXRlcyA9IEdl
dEpTQ0F0dHJpYnV0ZXNGb3JBdHRyaWJ1dGUoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CiAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNz
b3Iodm0sIHZtLnByb3BlcnR5TmFtZXMtPiRhdHRyaWJ1dGVOYW1lLCBjdXN0b21HZXR0ZXJTZXR0
ZXIsIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoJGpzY0F0dHJpYnV0ZXMpKTtcbiIpOwpAQCAtMjM0
MCw3ICsyMzY0LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfSo+KG9iamVjdCk7XG4i
KTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsIEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90Qm9keSgkaW50ZXJmYWNlLCAkaW50
ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJG51bUluc3RhbmNlUHJvcGVydGllcyA+IDAsIDApKTsK
KyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZUdldE93blByb3BlcnR5U2xv
dEJvZHkoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJG51bUluc3RhbmNlUHJvcGVydGllcyA+IDAs
IDApKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKICAgICAgICAg
fQogCkBAIC0yNDE1LDcgKzI0MzksNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAg
ICAgICAgICAgbXkgJG5hbWUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWU7CiAgICAgICAg
ICAgICBteSAkdHlwZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZTsKICAgICAgICAgICAg
ICRjb2RlR2VuZXJhdG9yLT5Bc3NlcnROb3RTZXF1ZW5jZVR5cGUoJHR5cGUpOwotICAgICAgICAg
ICAgbXkgJGdldEZ1bmN0aW9uTmFtZSA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFj
ZU5hbWUsICRjbGFzc05hbWUsICRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOworICAgICAgICAgICAg
bXkgJGdldEZ1bmN0aW9uTmFtZSA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZSwg
JGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICBteSAkaW1wbEdldHRlckZ1bmN0
aW9uTmFtZSA9ICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQXMifSB8fCAkbmFtZSk7CiAgICAg
ICAgICAgICBteSAkZ2V0dGVyRXhjZXB0aW9uc1dpdGhNZXNzYWdlID0gJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiR2V0dGVyUmFpc2VzRXhjZXB0aW9uV2l0aE1l
c3NhZ2UifTsKICAgICAgICAgICAgIG15ICRnZXR0ZXJFeGNlcHRpb25zID0gJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiR2V0dGVyUmFpc2VzRXhjZXB0aW9uIn0g
fHwgJGdldHRlckV4Y2VwdGlvbnNXaXRoTWVzc2FnZTsKQEAgLTI3MjAsNyArMjc0NCw3IEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgICAgIG15ICRuYW1lID0gJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLT5uYW1lOwogICAgICAgICAgICAgbXkgJHR5cGUgPSAkYXR0cmlidXRl
LT5zaWduYXR1cmUtPnR5cGU7Ci0gICAgICAgICAgICBteSAkcHV0RnVuY3Rpb25OYW1lID0gR2V0
QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJGludGVyZmFj
ZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICBteSAkcHV0RnVuY3Rpb25OYW1lID0gR2V0QXR0
cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKICAg
ICAgICAgICAgIG15ICRpbXBsU2V0dGVyRnVuY3Rpb25OYW1lID0gJGNvZGVHZW5lcmF0b3ItPldL
X3VjZmlyc3QoJG5hbWUpOwogICAgICAgICAgICAgbXkgJHNldHRlclJhaXNlc0V4Y2VwdGlvbldp
dGhNZXNzYWdlID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
U2V0dGVyUmFpc2VzRXhjZXB0aW9uV2l0aE1lc3NhZ2UifTsKICAgICAgICAgICAgIG15ICRzZXR0
ZXJSYWlzZXNFeGNlcHRpb24gPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJTZXR0ZXJSYWlzZXNFeGNlcHRpb24ifSB8fCAkc2V0dGVyUmFpc2VzRXhjZXB0aW9u
V2l0aE1lc3NhZ2U7CkBAIC0yODQwLDcgKzI4NjQsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRh
dGlvbgogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9O1xuIik7
CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgIiAuIEdldE5hdGl2ZVR5cGVGcm9tU2lnbmF0dXJlKCRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZSkgLiAiIG5hdGl2ZVZhbHVlID0gIiAuIEpTVmFsdWVUb05hdGl2ZSgkYXR0cmlidXRlLT5zaWdu
YXR1cmUsICJ2YWx1ZSIsICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkNvbmRpdGlvbmFsIn0pIC4gIjtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICIgLiBHZXROYXRpdmVUeXBlRnJvbVNpZ25hdHVyZSgkYXR0cmlidXRlLT5z
aWduYXR1cmUpIC4gIiBuYXRpdmVWYWx1ZSA9ICIgLiBKU1ZhbHVlVG9OYXRpdmUoJGludGVyZmFj
ZSwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAidmFsdWUiLCAkYXR0cmlidXRlLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25kaXRpb25hbCJ9KSAuICI7XG4iKTsKICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4
Y2VwdGlvbigpKSlcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICAgICByZXR1cm4gZmFsc2U7XG4iKTsKIApAQCAtMzA0OCwxMSArMzA3MiwxMSBAQCBFTkQKICAg
ICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgIG15ICRudW1QYXJhbWV0
ZXJzID0gQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9OwotICAgICAgICAgICAgICAgICAgICBteSAo
JGZ1bmN0aW9uU3RyaW5nLCAkZHVtbXkpID0gR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2soXEBpbXBs
Q29udGVudCwgJGZ1bmN0aW9uLCAkaW50ZXJmYWNlLCAkbnVtUGFyYW1ldGVycywgJGludGVyZmFj
ZU5hbWUsICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSwgJHN2Z1Byb3BlcnR5VHlwZSwgJHN2
Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlLCAkc3ZnTGlzdFByb3BlcnR5VHlwZSk7CisgICAg
ICAgICAgICAgICAgICAgIG15ICgkZnVuY3Rpb25TdHJpbmcsICRkdW1teSkgPSBHZW5lcmF0ZVBh
cmFtZXRlcnNDaGVjayhcQGltcGxDb250ZW50LCAkZnVuY3Rpb24sICRpbnRlcmZhY2UsICRudW1Q
YXJhbWV0ZXJzLCAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUsICRzdmdQcm9wZXJ0eVR5cGUs
ICRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSwgJHN2Z0xpc3RQcm9wZXJ0eVR5cGUpOwog
ICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25DYWxsKCRm
dW5jdGlvbiwgJGZ1bmN0aW9uU3RyaW5nLCAiICAgICIsICRzdmdQcm9wZXJ0eVR5cGUsICRpbnRl
cmZhY2VOYW1lKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgIEdlbmVyYXRlRnVuY3Rpb25DYXN0ZWRUaGlzKCRpbnRlcmZhY2UsICRpbnRl
cmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkZnVuY3Rpb24pOworICAgICAgICAgICAgICAgIEdlbmVy
YXRlRnVuY3Rpb25DYXN0ZWRUaGlzKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRmdW5jdGlvbik7
CiAKICAgICAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkNoZWNrU2VjdXJpdHkifSBhbmQKICAgICAgICAgICAgICAgICAgICAgISRmdW5jdGlvbi0+c2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRG9Ob3RDaGVja1NlY3VyaXR5In0pIHsKQEAg
LTMxMDIsNyArMzEyNiw3IEBAIEVORAogICAgICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICAgICAgICAgICAgICBteSAkbnVtUGFyYW1ldGVycyA9IEB7JGZ1bmN0aW9uLT5wYXJh
bWV0ZXJzfTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG15ICgkZnVuY3Rpb25TdHJpbmcsICRk
dW1teSkgPSBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayhcQGltcGxDb250ZW50LCAkZnVuY3Rpb24s
ICRpbnRlcmZhY2UsICRudW1QYXJhbWV0ZXJzLCAkaW50ZXJmYWNlTmFtZSwgJGZ1bmN0aW9uSW1w
bGVtZW50YXRpb25OYW1lLCAkc3ZnUHJvcGVydHlUeXBlLCAkc3ZnUHJvcGVydHlPckxpc3RQcm9w
ZXJ0eVR5cGUsICRzdmdMaXN0UHJvcGVydHlUeXBlKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IG15ICgkZnVuY3Rpb25TdHJpbmcsICRkdW1teSkgPSBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayhc
QGltcGxDb250ZW50LCAkZnVuY3Rpb24sICRpbnRlcmZhY2UsICRudW1QYXJhbWV0ZXJzLCAkZnVu
Y3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUsICRzdmdQcm9wZXJ0eVR5cGUsICRzdmdQcm9wZXJ0eU9y
TGlzdFByb3BlcnR5VHlwZSwgJHN2Z0xpc3RQcm9wZXJ0eVR5cGUpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uQ2FsbCgkZnVuY3Rpb24sICRm
dW5jdGlvblN0cmluZywgIiAgICAiLCAkc3ZnUHJvcGVydHlUeXBlLCAkaW50ZXJmYWNlTmFtZSk7
CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC0zMTExLDExICsz
MTM1LDggQEAgRU5ECiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuXG4iKSBpZiAkY29uZGl0aW9u
YWw7CiAKLSAgICAgICAgICAgIGlmICghJGlzQ3VzdG9tICYmICRpc092ZXJsb2FkZWQgJiYgJGZ1
bmN0aW9uLT57b3ZlcmxvYWRJbmRleH0gPT0gQHskZnVuY3Rpb24tPntvdmVybG9hZHN9fSkgewot
ICAgICAgICAgICAgICAgICMgR2VuZXJhdGUgYSBmdW5jdGlvbiBkaXNwYXRjaGluZyBjYWxsIHRv
IHRoZSByZXN0IG9mIHRoZSBvdmVybG9hZHMuCi0gICAgICAgICAgICAgICAgR2VuZXJhdGVPdmVy
bG9hZGVkRnVuY3Rpb24oJGZ1bmN0aW9uLCAkaW50ZXJmYWNlLCAkaW50ZXJmYWNlTmFtZSk7Ci0g
ICAgICAgICAgICB9Ci0KKyAgICAgICAgICAgICMgR2VuZXJhdGUgYSBmdW5jdGlvbiBkaXNwYXRj
aGluZyBjYWxsIHRvIHRoZSByZXN0IG9mIHRoZSBvdmVybG9hZHMuCisgICAgICAgICAgICBHZW5l
cmF0ZU92ZXJsb2FkZWRGdW5jdGlvbigkZnVuY3Rpb24sICRpbnRlcmZhY2UpIGlmICEkaXNDdXN0
b20gJiYgJGlzT3ZlcmxvYWRlZCAmJiAkZnVuY3Rpb24tPntvdmVybG9hZEluZGV4fSA9PSBAeyRm
dW5jdGlvbi0+e292ZXJsb2Fkc319OwogICAgICAgICB9CiAKICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICRlbmRBcHBsZUNvcHlyaWdodCkgaWYgJGluQXBwbGVDb3B5cmlnaHQ7CkBAIC0zMzYx
LDEwICszMzgyLDggQEAgRU5ECiAKIHN1YiBHZW5lcmF0ZUZ1bmN0aW9uQ2FzdGVkVGhpcwogewot
ICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKLSAgICBteSAkaW50ZXJmYWNlTmFtZSA9IHNoaWZ0
OwotICAgIG15ICRjbGFzc05hbWUgPSBzaGlmdDsKLSAgICBteSAkZnVuY3Rpb24gPSBzaGlmdDsK
KyAgICBteSAoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKSA9IEBfOworCiAgICAg
aWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Qcm94eVRvSlNPYmpl
Y3QifSkgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkY2xhc3NOYW1lKiBjYXN0
ZWRUaGlzID0gdG8ke2NsYXNzTmFtZX0oc3RhdGUtPnRoaXNWYWx1ZSgpLnRvVGhpcyhzdGF0ZSwg
Tm90U3RyaWN0TW9kZSkpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpXG4iKTsKQEAgLTMzNzIsNiArMzM5MSw3IEBAIHN1YiBH
ZW5lcmF0ZUZ1bmN0aW9uQ2FzdGVkVGhpcwogICAgIH0gZWxzZSB7CiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpO1xu
Iik7CiAgICAgICAgIG15ICRjYXN0aW5nSGVscGVyID0gR2V0Q2FzdGluZ0hlbHBlckZvclRoaXNP
YmplY3QoJGludGVyZmFjZSk7CisgICAgICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGludGVyZmFj
ZS0+bmFtZTsKICAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJFdmVudFRhcmdldCIpIHsK
ICAgICAgICAgICAgICMgV2UgYWxsb3cgY2FsbGluZyB0aGUgRXZlbnRUYXJnZXQgQVBJIHdpdGhv
dXQgYW4gZXhwbGljaXQgJ3RoaXMnIHZhbHVlIGFuZCBmYWxsIGJhY2sgdG8gdXNpbmcgdGhlIGds
b2JhbCBvYmplY3QgaW5zdGVhZC4KICAgICAgICAgICAgICMgQXMgb2YgZWFybHkgMjAxNiwgdGhp
cyBtYXRjaGVzIEZpcmVmb3ggYW5kIENocm9tZSdzIGJlaGF2aW9yLgpAQCAtMzM4NCw3ICszNDA0
LDcgQEAgc3ViIEdlbmVyYXRlRnVuY3Rpb25DYXN0ZWRUaGlzCiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpzdGF0ZSwgXCIkaW50
ZXJmYWNlTmFtZVwiLCBcIiRkb21GdW5jdGlvbk5hbWVcIik7XG4iKTsKICAgICB9CiAKLSAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsICR7Y2xhc3NOYW1lfTo6aW5mbygpKTtcbiIpIHVubGVzcyAkaW50ZXJmYWNlTmFtZSBlcSAi
RXZlbnRUYXJnZXQiOworICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgJHtjbGFzc05hbWV9OjppbmZvKCkpO1xuIikgdW5sZXNz
ICRpbnRlcmZhY2UtPm5hbWUgZXEgIkV2ZW50VGFyZ2V0IjsKIH0KIAogc3ViIEdlbmVyYXRlQ2Fs
bFdpdGgKQEAgLTM0OTMsMjAgKzM1MTMsOSBAQCBzdWIgV2lsbENvbnZlcnRVbmRlZmluZWRUb0Rl
ZmF1bHRQYXJhbWV0ZXJWYWx1ZQogCiBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKIHsKLSAg
ICBteSAkb3V0cHV0QXJyYXkgPSBzaGlmdDsKLSAgICBteSAkZnVuY3Rpb24gPSBzaGlmdDsKLSAg
ICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7Ci0gICAgbXkgJG51bVBhcmFtZXRlcnMgPSBzaGlmdDsK
LSAgICBteSAkaW50ZXJmYWNlTmFtZSA9IHNoaWZ0OwotICAgIG15ICRmdW5jdGlvbkltcGxlbWVu
dGF0aW9uTmFtZSA9IHNoaWZ0OwotICAgIG15ICRzdmdQcm9wZXJ0eVR5cGUgPSBzaGlmdDsKLSAg
ICBteSAkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUgPSBzaGlmdDsKLSAgICBteSAkc3Zn
TGlzdFByb3BlcnR5VHlwZSA9IHNoaWZ0OwotCi0gICAgbXkgJGFyZ3NJbmRleCA9IDA7Ci0gICAg
bXkgJGhhc09wdGlvbmFsQXJndW1lbnRzID0gMDsKKyAgICBteSAoJG91dHB1dEFycmF5LCAkZnVu
Y3Rpb24sICRpbnRlcmZhY2UsICRudW1QYXJhbWV0ZXJzLCAkZnVuY3Rpb25JbXBsZW1lbnRhdGlv
bk5hbWUsICRzdmdQcm9wZXJ0eVR5cGUsICRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSwg
JHN2Z0xpc3RQcm9wZXJ0eVR5cGUpID0gQF87CiAKLSAgICBteSAkY2xhc3NOYW1lID0gJGludGVy
ZmFjZS0+bmFtZTsKKyAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRpbnRlcmZhY2UtPm5hbWU7CiAg
ICAgbXkgQGFyZ3VtZW50czsKICAgICBteSAkZnVuY3Rpb25OYW1lOwogICAgIG15ICRpbXBsZW1l
bnRlZEJ5ID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBs
ZW1lbnRlZEJ5In07CkBAIC0zNTMzLDYgKzM1NDIsOCBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJz
Q2hlY2sKIAogICAgICRpbXBsSW5jbHVkZXN7IkV4Y2VwdGlvbkNvZGUuaCJ9ID0gMTsKICAgICAk
aW1wbEluY2x1ZGVzeyJKU0RPTUJpbmRpbmcuaCJ9ID0gMTsKKworICAgIG15ICRhcmdzSW5kZXgg
PSAwOwogICAgIGZvcmVhY2ggbXkgJHBhcmFtZXRlciAoQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9
KSB7CiAgICAgICAgIG15ICRhcmdUeXBlID0gJHBhcmFtZXRlci0+dHlwZTsKICAgICAgICAgbXkg
JG9wdGlvbmFsID0gJHBhcmFtZXRlci0+aXNPcHRpb25hbDsKQEAgLTM2MjUsNyArMzYzNiw5IEBA
IHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTtc
biIpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SXNF
bnVtVHlwZSgkYXJnVHlwZSkpIHsKLSAgICAgICAgICAgIG15ICRjbGFzc05hbWUgPSBHZXRFbnVt
ZXJhdGlvbkNsYXNzTmFtZSgkYXJnVHlwZSk7CisgICAgICAgICAgICBteSAkY2xhc3NOYW1lID0g
R2V0RW51bWVyYXRpb25DbGFzc05hbWUoJGludGVyZmFjZSwgJGFyZ1R5cGUpOworICAgICAgICAg
ICAgbXkgJGNsYXNzSWRlbnRpZmllciA9IEdldEVudW1lcmF0aW9uQ2xhc3NJZGVudGlmaWVyKCRp
bnRlcmZhY2UsICRhcmdUeXBlKTsKKwogICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siPHJ1bnRp
bWUvRXJyb3IuaD4ifSA9IDE7CiAKICAgICAgICAgICAgIG15ICRuYXRpdmVUeXBlID0gJGNsYXNz
TmFtZTsKQEAgLTM2NTIsMTEgKzM2NjUsMTEgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNr
CiAgICAgICAgICAgICAgICAgJGluZGVudCA9ICIgICAgIjsKICAgICAgICAgICAgIH0KIAotICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiJGluZGVudCAgICAkZGVmaW5lT3B0aW9uYWxW
YWx1ZSA9IHBhcnNlJGNsYXNzTmFtZSgqc3RhdGUsICR7bmFtZX1WYWx1ZSk7XG4iKTsKKyAgICAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiRpbmRlbnQgICAgJGRlZmluZU9wdGlvbmFsVmFs
dWUgPSBwYXJzZSRjbGFzc0lkZW50aWZpZXIoKnN0YXRlLCAke25hbWV9VmFsdWUpO1xuIik7CiAg
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIkaW5kZW50ICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+aGFkRXhjZXB0aW9uKCkpKVxuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIkaW5kZW50ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
O1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIkaW5kZW50ICAgIGlmIChV
TkxJS0VMWSghJG9wdGlvbmFsVmFsdWUpKVxuIik7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIkaW5kZW50ICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJv
cigqc3RhdGUsICRhcmdzSW5kZXgsIFwiJG5hbWVcIiwgXCIkaW50ZXJmYWNlTmFtZVwiLCAkcXVv
dGVkRnVuY3Rpb25OYW1lLCBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzJGNsYXNzTmFtZSk7XG4i
KTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiRpbmRlbnQgICAgICAgIHJldHVy
biB0aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9yKCpzdGF0ZSwgJGFyZ3NJbmRleCwgXCIkbmFt
ZVwiLCBcIiRpbnRlcmZhY2VOYW1lXCIsICRxdW90ZWRGdW5jdGlvbk5hbWUsIGV4cGVjdGVkRW51
bWVyYXRpb25WYWx1ZXMkY2xhc3NJZGVudGlmaWVyKTtcbiIpOwogICAgICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiJGluZGVudCAgICAkbmFtZSA9IG9wdGlvbmFsVmFsdWUudmFsdWUoKTtc
biIpIGlmICRvcHRpb25hbFZhbHVlIG5lICRuYW1lOwogCiAgICAgICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgfVxuIikgaWYgJGluZGVudCBuZSAiIjsKQEAgLTM3MTksNyArMzczMiw3
IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICAgICAgICAgICAgICAkb3V0
ZXIgPSAiIjsKICAgICAgICAgICAgICAgICAgICAgJGlubmVyID0gInN0YXRlLT5hcmd1bWVudCgk
YXJnc0luZGV4KSI7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICAkbmF0aXZlVHlwZSAkbmFtZSA9ICRvdXRlciIgLiBKU1ZhbHVlVG9O
YXRpdmUoJHBhcmFtZXRlciwgJGlubmVyLCAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkNvbmRpdGlvbmFsIn0pIC4gIjtcbiIpOworICAgICAgICAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICAkbmF0aXZlVHlwZSAkbmFtZSA9ICRvdXRlciIgLiBKU1Zh
bHVlVG9OYXRpdmUoJGludGVyZmFjZSwgJHBhcmFtZXRlciwgJGlubmVyLCAkZnVuY3Rpb24tPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbmRpdGlvbmFsIn0pIC4gIjtcbiIpOwog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAjIENoZWNrIGlmIHRoZSB0eXBlIGNvbnZlcnNp
b24gc3VjY2VlZGVkLgpAQCAtMzg2Miw3ICszODc1LDcgQEAgc3ViIEdlbmVyYXRlQ2FsbGJhY2tJ
bXBsZW1lbnRhdGlvbgogICAgIHB1c2goQGltcGxDb250ZW50LCAiXG51c2luZyBuYW1lc3BhY2Ug
SlNDO1xuXG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIm5hbWVzcGFjZSBXZWJDb3JlIHtc
blxuIik7CiAKLSAgICBwdXNoKEBpbXBsQ29udGVudCwgR2V0RW51bWVyYXRpb25JbXBsZW1lbnRh
dGlvbkNvbnRlbnQoJGVudW1lcmF0aW9ucykpOworICAgIHB1c2goQGltcGxDb250ZW50LCBHZW5l
cmF0ZUVudW1lcmF0aW9uSW1wbGVtZW50YXRpb25Db250ZW50KCRpbnRlcmZhY2UsICRlbnVtZXJh
dGlvbnMpKTsKIAogICAgICMgQ29uc3RydWN0b3IKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiR7
Y2xhc3NOYW1lfTo6JHtjbGFzc05hbWV9KEpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdClcbiIpOwpAQCAtMzkzOSw3ICszOTUyLDcgQEAgc3ViIEdlbmVy
YXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlvbgogCiAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRj
b2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbXBpbGVUaW1lQ2hlY2tGb3JFbnVtc0lmTmVlZGVkKCRp
bnRlcmZhY2UpKTsKIAotICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9ucyhcQGlt
cGxDb250ZW50LCAkY2xhc3NOYW1lLCAiIiwgJGludGVyZmFjZU5hbWUsICR2aXNpYmxlSW50ZXJm
YWNlTmFtZSwgJGludGVyZmFjZSk7CisgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRp
b25zKFxAaW1wbENvbnRlbnQsICRjbGFzc05hbWUsICIiLCAkdmlzaWJsZUludGVyZmFjZU5hbWUs
ICRpbnRlcmZhY2UpOwogCiAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU1ZhbHVlICR7Y2xh
c3NOYW1lfTo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBjb25zdCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KVxue1xuIik7CiAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJu
IGdldERPTUNvbnN0cnVjdG9yPCR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxj
b25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpO1xuIik7CkBAIC00MzE3LDkg
KzQzMzAsNyBAQCBteSAlaW50ZWdlckNvbnZlcnNpb25GdW5jdGlvbiA9ICgKIAogc3ViIEpTVmFs
dWVUb05hdGl2ZQogewotICAgIG15ICRzaWduYXR1cmUgPSBzaGlmdDsKLSAgICBteSAkdmFsdWUg
PSBzaGlmdDsKLSAgICBteSAkY29uZGl0aW9uYWwgPSBzaGlmdDsKKyAgICBteSAoJGludGVyZmFj
ZSwgJHNpZ25hdHVyZSwgJHZhbHVlLCAkY29uZGl0aW9uYWwpID0gQF87CiAKICAgICBteSAkdHlw
ZSA9ICRzaWduYXR1cmUtPnR5cGU7CiAKQEAgLTQzNjgsNyArNDM3OSw3IEBAIHN1YiBKU1ZhbHVl
VG9OYXRpdmUKICAgICByZXR1cm4gInZhbHVlVG9EYXRlKHN0YXRlLCAkdmFsdWUpIiBpZiAkdHlw
ZSBlcSAiRGF0ZSI7CiAKICAgICByZXR1cm4gInRvJHR5cGUoJHZhbHVlKSIgaWYgJGNvZGVHZW5l
cmF0b3ItPklzVHlwZWRBcnJheVR5cGUoJHR5cGUpOwotICAgIHJldHVybiAicGFyc2UiIC4gR2V0
RW51bWVyYXRpb25DbGFzc05hbWUoJHR5cGUpIC4gIigqc3RhdGUsICR2YWx1ZSkiIGlmICRjb2Rl
R2VuZXJhdG9yLT5Jc0VudW1UeXBlKCR0eXBlKTsKKyAgICByZXR1cm4gInBhcnNlIiAuIEdldEVu
dW1lcmF0aW9uQ2xhc3NJZGVudGlmaWVyKCRpbnRlcmZhY2UsICR0eXBlKSAuICIoKnN0YXRlLCAk
dmFsdWUpIiBpZiAkY29kZUdlbmVyYXRvci0+SXNFbnVtVHlwZSgkdHlwZSk7CiAKICAgICBBZGRU
b0ltcGxJbmNsdWRlcygiSlMkdHlwZS5oIiwgJGNvbmRpdGlvbmFsKTsKIApAQCAtNDc0NywxMCAr
NDc1OCw3IEBAIHN1YiBXcml0ZURhdGEKIAogc3ViIEdlbmVyYXRlUHJvdG90eXBlRGVjbGFyYXRp
b24KIHsKLSAgICBteSAkb3V0cHV0QXJyYXkgPSBzaGlmdDsKLSAgICBteSAkY2xhc3NOYW1lID0g
c2hpZnQ7Ci0gICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OwotICAgIG15ICRpbnRlcmZhY2VOYW1l
ID0gc2hpZnQ7CisgICAgbXkgKCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSkg
PSBAXzsKIAogICAgIG15ICRwcm90b3R5cGVDbGFzc05hbWUgPSAiJHtjbGFzc05hbWV9UHJvdG90
eXBlIjsKIApAQCAtNDgyNiwxMSArNDgzNCw5IEBAIHN1YiBHZXRDb25zdHJ1Y3RvclRlbXBsYXRl
Q2xhc3NOYW1lCiAKIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24KIHsKLSAgICBt
eSAkb3V0cHV0QXJyYXkgPSBzaGlmdDsKLSAgICBteSAkY2xhc3NOYW1lID0gc2hpZnQ7Ci0gICAg
bXkgJGludGVyZmFjZSA9IHNoaWZ0OwotICAgIG15ICRpbnRlcmZhY2VOYW1lID0gc2hpZnQ7Cisg
ICAgbXkgKCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSkgPSBAXzsKIAorICAg
IG15ICRpbnRlcmZhY2VOYW1lID0gJGludGVyZmFjZS0+bmFtZTsKICAgICBteSAkY29uc3RydWN0
b3JDbGFzc05hbWUgPSAiJHtjbGFzc05hbWV9Q29uc3RydWN0b3IiOwogICAgIG15ICR0ZW1wbGF0
ZUNsYXNzTmFtZSA9IEdldENvbnN0cnVjdG9yVGVtcGxhdGVDbGFzc05hbWUoJGludGVyZmFjZSk7
CiAKQEAgLTQ4NDMsMjkgKzQ4NDksMjMgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWNsYXJh
dGlvbgogCiBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb25zCiB7Ci0gICAgbXkgJG91
dHB1dEFycmF5ID0gc2hpZnQ7Ci0gICAgbXkgJGNsYXNzTmFtZSA9IHNoaWZ0OwotICAgIG15ICRw
cm90b0NsYXNzTmFtZSA9IHNoaWZ0OwotICAgIG15ICRpbnRlcmZhY2VOYW1lID0gc2hpZnQ7Ci0g
ICAgbXkgJHZpc2libGVJbnRlcmZhY2VOYW1lID0gc2hpZnQ7Ci0gICAgbXkgJGludGVyZmFjZSA9
IHNoaWZ0OwotICAgIG15ICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciA9IHNoaWZ0OworICAg
IG15ICgkb3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJHZpc2libGVJ
bnRlcmZhY2VOYW1lLCAkaW50ZXJmYWNlLCAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IpID0g
QF87CiAKICAgICBpZiAoSXNDb25zdHJ1Y3RhYmxlKCRpbnRlcmZhY2UpKSB7CiAgICAgICAgIG15
IEBjb25zdHJ1Y3RvcnMgPSBAeyRpbnRlcmZhY2UtPmNvbnN0cnVjdG9yc307CiAgICAgICAgIGlm
IChAY29uc3RydWN0b3JzID4gMSkgewogICAgICAgICAgICAgZm9yZWFjaCBteSAkY29uc3RydWN0
b3IgKEBjb25zdHJ1Y3RvcnMpIHsKLSAgICAgICAgICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9y
RGVmaW5pdGlvbigkb3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJGlu
dGVyZmFjZU5hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZSwgJGdlbmVyYXRp
bmdOYW1lZENvbnN0cnVjdG9yLCAkY29uc3RydWN0b3IpOworICAgICAgICAgICAgICAgIEdlbmVy
YXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwgJHByb3Rv
Q2xhc3NOYW1lLCAkdmlzaWJsZUludGVyZmFjZU5hbWUsICRpbnRlcmZhY2UsICRnZW5lcmF0aW5n
TmFtZWRDb25zdHJ1Y3RvciwgJGNvbnN0cnVjdG9yKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIEdlbmVyYXRlT3ZlcmxvYWRlZENvbnN0cnVjdG9yRGVmaW5pdGlvbigkb3V0cHV0QXJyYXks
ICRjbGFzc05hbWUsICRpbnRlcmZhY2UpOwogICAgICAgICB9IGVsc2lmIChAY29uc3RydWN0b3Jz
ID09IDEpIHsKLSAgICAgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKCRvdXRw
dXRBcnJheSwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1lLCAkaW50ZXJmYWNlTmFtZSwgJHZp
c2libGVJbnRlcmZhY2VOYW1lLCAkaW50ZXJmYWNlLCAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0
b3IsICRjb25zdHJ1Y3RvcnNbMF0pOworICAgICAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRl
ZmluaXRpb24oJG91dHB1dEFycmF5LCAkY2xhc3NOYW1lLCAkcHJvdG9DbGFzc05hbWUsICR2aXNp
YmxlSW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZSwgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9y
LCAkY29uc3RydWN0b3JzWzBdKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEdlbmVy
YXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwgJHByb3Rv
Q2xhc3NOYW1lLCAkaW50ZXJmYWNlTmFtZSwgJHZpc2libGVJbnRlcmZhY2VOYW1lLCAkaW50ZXJm
YWNlLCAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IpOworICAgICAgICAgICAgR2VuZXJhdGVD
b25zdHJ1Y3RvckRlZmluaXRpb24oJG91dHB1dEFycmF5LCAkY2xhc3NOYW1lLCAkcHJvdG9DbGFz
c05hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZSwgJGdlbmVyYXRpbmdOYW1l
ZENvbnN0cnVjdG9yKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIEdlbmVyYXRlQ29uc3RydWN0
b3JIZWxwZXJNZXRob2RzKCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1l
LCAkaW50ZXJmYWNlTmFtZSwgJHZpc2libGVJbnRlcmZhY2VOYW1lLCAkaW50ZXJmYWNlLCAkZ2Vu
ZXJhdGluZ05hbWVkQ29uc3RydWN0b3IpOworICAgIEdlbmVyYXRlQ29uc3RydWN0b3JIZWxwZXJN
ZXRob2RzKCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1lLCAkdmlzaWJs
ZUludGVyZmFjZU5hbWUsICRpbnRlcmZhY2UsICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3Rvcik7
CiB9CiAKIHN1YiBHZW5lcmF0ZU92ZXJsb2FkZWRDb25zdHJ1Y3RvckRlZmluaXRpb24KQEAgLTQ5
MTUsMTkgKzQ5MTUsMTEgQEAgRU5ECiAKIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlv
bgogewotICAgIG15ICRvdXRwdXRBcnJheSA9IHNoaWZ0OwotICAgIG15ICRjbGFzc05hbWUgPSBz
aGlmdDsKLSAgICBteSAkcHJvdG9DbGFzc05hbWUgPSBzaGlmdDsKLSAgICBteSAkaW50ZXJmYWNl
TmFtZSA9IHNoaWZ0OwotICAgIG15ICR2aXNpYmxlSW50ZXJmYWNlTmFtZSA9IHNoaWZ0OwotICAg
IG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKLSAgICBteSAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0
b3IgPSBzaGlmdDsKLSAgICBteSAkZnVuY3Rpb24gPSBzaGlmdDsKKyAgICBteSAoJG91dHB1dEFy
cmF5LCAkY2xhc3NOYW1lLCAkcHJvdG9DbGFzc05hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwg
JGludGVyZmFjZSwgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yLCAkZnVuY3Rpb24pID0gQF87
CiAKLSAgICBpZiAoSXNKU0J1aWx0aW5Db25zdHJ1Y3RvcigkaW50ZXJmYWNlKSkgewotICAgICAg
ICByZXR1cm47Ci0gICAgfQorICAgIHJldHVybiBpZiBJc0pTQnVpbHRpbkNvbnN0cnVjdG9yKCRp
bnRlcmZhY2UpOwogCisgICAgbXkgJGludGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT5uYW1lOwog
ICAgIG15ICRjb25zdHJ1Y3RvckNsYXNzTmFtZSA9ICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3Rv
ciA/ICIke2NsYXNzTmFtZX1OYW1lZENvbnN0cnVjdG9yIiA6ICIke2NsYXNzTmFtZX1Db25zdHJ1
Y3RvciI7CiAKICAgICBpZiAoSXNDb25zdHJ1Y3RhYmxlKCRpbnRlcmZhY2UpKSB7CkBAIC01MDQw
LDcgKzUwMzIsNyBAQCBFTkQKICAgICAgICAgICAgICMgRklYTUU6IEZvciBub3csIHdlIGRvIG5v
dCBzdXBwb3J0IFNWRyBjb25zdHJ1Y3RvcnMuCiAgICAgICAgICAgICAjIEZJWE1FOiBDdXJyZW50
bHkgW0NvbnN0cnVjdG9yKC4uLildIGRvZXMgbm90IHlldCBzdXBwb3J0IG9wdGlvbmFsIGFyZ3Vt
ZW50cyB3aXRob3V0IFtEZWZhdWx0PS4uLl0KICAgICAgICAgICAgIG15ICRudW1QYXJhbWV0ZXJz
ID0gQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9OwotICAgICAgICAgICAgbXkgKCRkdW1teSwgJHBh
cmFtSW5kZXgpID0gR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2soJG91dHB1dEFycmF5LCAkZnVuY3Rp
b24sICRpbnRlcmZhY2UsICRudW1QYXJhbWV0ZXJzLCAkaW50ZXJmYWNlTmFtZSwgImNvbnN0cnVj
dG9yQ2FsbGJhY2siLCB1bmRlZiwgdW5kZWYsIHVuZGVmKTsKKyAgICAgICAgICAgIG15ICgkZHVt
bXksICRwYXJhbUluZGV4KSA9IEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrKCRvdXRwdXRBcnJheSwg
JGZ1bmN0aW9uLCAkaW50ZXJmYWNlLCAkbnVtUGFyYW1ldGVycywgImNvbnN0cnVjdG9yQ2FsbGJh
Y2siLCB1bmRlZiwgdW5kZWYsIHVuZGVmKTsKIAogICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJh
dG9yLT5FeHRlbmRlZEF0dHJpYnV0ZUNvbnRhaW5zKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJDb25zdHJ1Y3RvckNhbGxXaXRoIn0sICJTY3JpcHRTdGF0ZSIpKSB7CiAgICAgICAg
ICAgICAgICAgcHVzaChAY29uc3RydWN0b3JBcmdMaXN0LCAiKnN0YXRlIik7CkBAIC01MTI2LDEz
ICs1MTE4LDcgQEAgc3ViIENvbnN0cnVjdG9ySGFzUHJvcGVydGllcwogCiBzdWIgR2VuZXJhdGVD
b25zdHJ1Y3RvckhlbHBlck1ldGhvZHMKIHsKLSAgICBteSAkb3V0cHV0QXJyYXkgPSBzaGlmdDsK
LSAgICBteSAkY2xhc3NOYW1lID0gc2hpZnQ7Ci0gICAgbXkgJHByb3RvQ2xhc3NOYW1lID0gc2hp
ZnQ7Ci0gICAgbXkgJGludGVyZmFjZU5hbWUgPSBzaGlmdDsKLSAgICBteSAkdmlzaWJsZUludGVy
ZmFjZU5hbWUgPSBzaGlmdDsKLSAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7Ci0gICAgbXkgJGdl
bmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yID0gc2hpZnQ7CisgICAgbXkgKCRvdXRwdXRBcnJheSwg
JGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1lLCAkdmlzaWJsZUludGVyZmFjZU5hbWUsICRpbnRl
cmZhY2UsICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvcikgPSBAXzsKIAogICAgIG15ICRjb25z
dHJ1Y3RvckNsYXNzTmFtZSA9ICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciA/ICIke2NsYXNz
TmFtZX1OYW1lZENvbnN0cnVjdG9yIiA6ICIke2NsYXNzTmFtZX1Db25zdHJ1Y3RvciI7CiAgICAg
bXkgJGxlYXN0Q29uc3RydWN0b3JMZW5ndGggPSAwOwpAQCAtNTE4MywxNCArNTE2OSw4IEBAIHN1
YiBHZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcwogICAgIH0KIAogICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpz
Tm9udHJpdmlhbFN0cmluZygmdm0sIFN0cmluZyhBU0NJSUxpdGVyYWwoXCIkdmlzaWJsZUludGVy
ZmFjZU5hbWVcIikpKSwgUmVhZE9ubHkgfCBEb250RW51bSk7XG4iKTsKLQotICAgIGlmIChkZWZp
bmVkICRsZWFzdENvbnN0cnVjdG9yTGVuZ3RoKSB7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIo
JHtsZWFzdENvbnN0cnVjdG9yTGVuZ3RofSksIFJlYWRPbmx5IHwgRG9udEVudW0pO1xuIik7Ci0g
ICAgfQotCi0gICAgaWYgKENvbnN0cnVjdG9ySGFzUHJvcGVydGllcygkaW50ZXJmYWNlKSkgewot
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZt
LCAke2NsYXNzTmFtZX1Db25zdHJ1Y3RvclRhYmxlVmFsdWVzLCAqdGhpcyk7XG4iKTsKLSAgICB9
CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bGVuZ3RoLCBqc051bWJlcigke2xlYXN0Q29uc3RydWN0b3JMZW5ndGh9KSwgUmVhZE9u
bHkgfCBEb250RW51bSk7XG4iKSBpZiBkZWZpbmVkICRsZWFzdENvbnN0cnVjdG9yTGVuZ3RoOwor
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sICR7
Y2xhc3NOYW1lfUNvbnN0cnVjdG9yVGFibGVWYWx1ZXMsICp0aGlzKTtcbiIpIGlmIENvbnN0cnVj
dG9ySGFzUHJvcGVydGllcygkaW50ZXJmYWNlKTsKIAogICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
In1cblxuIik7CiAKQEAgLTUyMTIsNyArNTE5Miw3IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9y
SGVscGVyTWV0aG9kcwogICAgIGlmIChJc0pTQnVpbHRpbkNvbnN0cnVjdG9yKCRpbnRlcmZhY2Up
KSB7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgInRlbXBsYXRlPD4gRnVuY3Rpb25FeGVj
dXRhYmxlKiAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6aW5pdGlhbGl6ZUV4ZWN1dGFibGUoVk0m
IHZtKVxuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwotICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuICIgLiBHZXRKU0J1aWx0aW5GdW5jdGlvbk5h
bWVGcm9tU3RyaW5nKCRpbnRlcmZhY2VOYW1lLCAiaW5pdGlhbGl6ZSIgLiAkaW50ZXJmYWNlTmFt
ZSkgLiAiKHZtKTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJu
ICIgLiBHZXRKU0J1aWx0aW5GdW5jdGlvbk5hbWVGcm9tU3RyaW5nKCRpbnRlcmZhY2UtPm5hbWUs
ICJpbml0aWFsaXplIiAuICRpbnRlcmZhY2UtPm5hbWUpIC4gIih2bSk7XG4iKTsKICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAifVxuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IlxuIik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCBjY2QxM2JhNmI4NWY4ZmFmYTRhMzRjNTNiODJh
OTk1MWNmOGU2NDZmLi5iOGUxMzUwYmMxNjYzMDJiOGNkNzE1YzA1YWUwOWU3ZWFiMDIyMTI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcApAQCAtODcsMTEgKzg3LDExIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotSlNTdHJpbmcqIGpzU3RyaW5nV2l0aENhY2hlKEV4ZWNTdGF0
ZSosIFRlc3RFbnVtVHlwZSk7Ci1PcHRpb25hbDxUZXN0RW51bVR5cGU+IHBhcnNlVGVzdEVudW1U
eXBlKEV4ZWNTdGF0ZSYsIEpTVmFsdWUpOwotZXh0ZXJuIGNvbnN0IGNoYXIgZXhwZWN0ZWRFbnVt
ZXJhdGlvblZhbHVlc1Rlc3RFbnVtVHlwZVtdOworSlNTdHJpbmcqIGpzU3RyaW5nV2l0aENhY2hl
KEV4ZWNTdGF0ZSosIFRlc3RPYmo6OkVudW1UeXBlKTsKK09wdGlvbmFsPFRlc3RPYmo6OkVudW1U
eXBlPiBwYXJzZVRlc3RPYmpFbnVtVHlwZShFeGVjU3RhdGUmLCBKU1ZhbHVlKTsKK2V4dGVybiBj
b25zdCBjaGFyIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXNUZXN0T2JqRW51bVR5cGVbXTsKIAot
SlNTdHJpbmcqIGpzU3RyaW5nV2l0aENhY2hlKEV4ZWNTdGF0ZSogc3RhdGUsIFRlc3RFbnVtVHlw
ZSBlbnVtZXJhdGlvblZhbHVlKQorSlNTdHJpbmcqIGpzU3RyaW5nV2l0aENhY2hlKEV4ZWNTdGF0
ZSogc3RhdGUsIFRlc3RPYmo6OkVudW1UeXBlIGVudW1lcmF0aW9uVmFsdWUpCiB7CiAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gdmFsdWVzW10gPSB7CiAgICAgICAgIGVt
cHR5U3RyaW5nKCksCkBAIC05OSwzOSArOTksMzkgQEAgSlNTdHJpbmcqIGpzU3RyaW5nV2l0aENh
Y2hlKEV4ZWNTdGF0ZSogc3RhdGUsIFRlc3RFbnVtVHlwZSBlbnVtZXJhdGlvblZhbHVlKQogICAg
ICAgICBBU0NJSUxpdGVyYWwoIkVudW1WYWx1ZTIiKSwKICAgICAgICAgQVNDSUlMaXRlcmFsKCJF
bnVtVmFsdWUzIiksCiAgICAgfTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVf
dD4oVGVzdEVudW1UeXBlOjpFbXB0eVN0cmluZykgPT0gMCwgIlRlc3RFbnVtVHlwZTo6RW1wdHlT
dHJpbmcgaXMgbm90IDAgYXMgZXhwZWN0ZWQiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19j
YXN0PHNpemVfdD4oVGVzdEVudW1UeXBlOjpFbnVtVmFsdWUxKSA9PSAxLCAiVGVzdEVudW1UeXBl
OjpFbnVtVmFsdWUxIGlzIG5vdCAxIGFzIGV4cGVjdGVkIik7Ci0gICAgc3RhdGljX2Fzc2VydChz
dGF0aWNfY2FzdDxzaXplX3Q+KFRlc3RFbnVtVHlwZTo6RW51bVZhbHVlMikgPT0gMiwgIlRlc3RF
bnVtVHlwZTo6RW51bVZhbHVlMiBpcyBub3QgMiBhcyBleHBlY3RlZCIpOwotICAgIHN0YXRpY19h
c3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihUZXN0RW51bVR5cGU6OkVudW1WYWx1ZTMpID09IDMs
ICJUZXN0RW51bVR5cGU6OkVudW1WYWx1ZTMgaXMgbm90IDMgYXMgZXhwZWN0ZWQiKTsKKyAgICBz
dGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oVGVzdE9iajo6RW51bVR5cGU6OkVtcHR5
U3RyaW5nKSA9PSAwLCAiVGVzdE9iajo6RW51bVR5cGU6OkVtcHR5U3RyaW5nIGlzIG5vdCAwIGFz
IGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFRlc3RP
Ymo6OkVudW1UeXBlOjpFbnVtVmFsdWUxKSA9PSAxLCAiVGVzdE9iajo6RW51bVR5cGU6OkVudW1W
YWx1ZTEgaXMgbm90IDEgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19j
YXN0PHNpemVfdD4oVGVzdE9iajo6RW51bVR5cGU6OkVudW1WYWx1ZTIpID09IDIsICJUZXN0T2Jq
OjpFbnVtVHlwZTo6RW51bVZhbHVlMiBpcyBub3QgMiBhcyBleHBlY3RlZCIpOworICAgIHN0YXRp
Y19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihUZXN0T2JqOjpFbnVtVHlwZTo6RW51bVZhbHVl
MykgPT0gMywgIlRlc3RPYmo6OkVudW1UeXBlOjpFbnVtVmFsdWUzIGlzIG5vdCAzIGFzIGV4cGVj
dGVkIik7CiAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4oZW51bWVyYXRpb25WYWx1ZSkg
PCBXVEZfQVJSQVlfTEVOR1RIKHZhbHVlcykpOwogICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNo
ZShzdGF0ZSwgdmFsdWVzW3N0YXRpY19jYXN0PHNpemVfdD4oZW51bWVyYXRpb25WYWx1ZSldKTsK
IH0KIAotdGVtcGxhdGU8PiBzdHJ1Y3QgSlNWYWx1ZVRyYWl0czxUZXN0RW51bVR5cGU+IHsKLSAg
ICBzdGF0aWMgSlNTdHJpbmcqIGFycmF5SlNWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUds
b2JhbE9iamVjdCosIFRlc3RFbnVtVHlwZSB2YWx1ZSkgeyByZXR1cm4ganNTdHJpbmdXaXRoQ2Fj
aGUoc3RhdGUsIHZhbHVlKTsgfQordGVtcGxhdGU8PiBzdHJ1Y3QgSlNWYWx1ZVRyYWl0czxUZXN0
T2JqOjpFbnVtVHlwZT4geworICAgIHN0YXRpYyBKU1N0cmluZyogYXJyYXlKU1ZhbHVlKEV4ZWNT
dGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdE9iajo6RW51bVR5cGUgdmFsdWUp
IHsgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCB2YWx1ZSk7IH0KIH07CiAKLU9wdGlv
bmFsPFRlc3RFbnVtVHlwZT4gcGFyc2VUZXN0RW51bVR5cGUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNW
YWx1ZSB2YWx1ZSkKK09wdGlvbmFsPFRlc3RPYmo6OkVudW1UeXBlPiBwYXJzZVRlc3RPYmpFbnVt
VHlwZShFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIGF1dG8gc3RyaW5n
VmFsdWUgPSB2YWx1ZS50b1dURlN0cmluZygmc3RhdGUpOwogICAgIGlmIChzdHJpbmdWYWx1ZS5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBUZXN0RW51bVR5cGU6OkVtcHR5U3RyaW5nOworICAg
ICAgICByZXR1cm4gVGVzdE9iajo6RW51bVR5cGU6OkVtcHR5U3RyaW5nOwogICAgIGlmIChzdHJp
bmdWYWx1ZSA9PSAiRW51bVZhbHVlMSIpCi0gICAgICAgIHJldHVybiBUZXN0RW51bVR5cGU6OkVu
dW1WYWx1ZTE7CisgICAgICAgIHJldHVybiBUZXN0T2JqOjpFbnVtVHlwZTo6RW51bVZhbHVlMTsK
ICAgICBpZiAoc3RyaW5nVmFsdWUgPT0gIkVudW1WYWx1ZTIiKQotICAgICAgICByZXR1cm4gVGVz
dEVudW1UeXBlOjpFbnVtVmFsdWUyOworICAgICAgICByZXR1cm4gVGVzdE9iajo6RW51bVR5cGU6
OkVudW1WYWx1ZTI7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJFbnVtVmFsdWUzIikKLSAgICAg
ICAgcmV0dXJuIFRlc3RFbnVtVHlwZTo6RW51bVZhbHVlMzsKKyAgICAgICAgcmV0dXJuIFRlc3RP
Ymo6OkVudW1UeXBlOjpFbnVtVmFsdWUzOwogICAgIHJldHVybiBOdWxsb3B0OwogfQogCi1jb25z
dCBjaGFyIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXNUZXN0RW51bVR5cGVbXSA9ICJcIlwiLCBc
IkVudW1WYWx1ZTFcIiwgXCJFbnVtVmFsdWUyXCIsIFwiRW51bVZhbHVlM1wiIjsKK2NvbnN0IGNo
YXIgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlc1Rlc3RPYmpFbnVtVHlwZVtdID0gIlwiXCIsIFwi
RW51bVZhbHVlMVwiLCBcIkVudW1WYWx1ZTJcIiwgXCJFbnVtVmFsdWUzXCIiOwogCi1KU1N0cmlu
ZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiwgT3B0aW9uYWwpOwotT3B0aW9uYWw8T3B0
aW9uYWw+IHBhcnNlT3B0aW9uYWwoRXhlY1N0YXRlJiwgSlNWYWx1ZSk7Ci1leHRlcm4gY29uc3Qg
Y2hhciBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzT3B0aW9uYWxbXTsKK0pTU3RyaW5nKiBqc1N0
cmluZ1dpdGhDYWNoZShFeGVjU3RhdGUqLCBUZXN0T2JqOjpPcHRpb25hbCk7CitPcHRpb25hbDxU
ZXN0T2JqOjpPcHRpb25hbD4gcGFyc2VUZXN0T2JqT3B0aW9uYWwoRXhlY1N0YXRlJiwgSlNWYWx1
ZSk7CitleHRlcm4gY29uc3QgY2hhciBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzVGVzdE9iak9w
dGlvbmFsW107CiAKLUpTU3RyaW5nKiBqc1N0cmluZ1dpdGhDYWNoZShFeGVjU3RhdGUqIHN0YXRl
LCBPcHRpb25hbCBlbnVtZXJhdGlvblZhbHVlKQorSlNTdHJpbmcqIGpzU3RyaW5nV2l0aENhY2hl
KEV4ZWNTdGF0ZSogc3RhdGUsIFRlc3RPYmo6Ok9wdGlvbmFsIGVudW1lcmF0aW9uVmFsdWUpCiB7
CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gdmFsdWVzW10gPSB7CiAg
ICAgICAgIGVtcHR5U3RyaW5nKCksCkBAIC0xMzksMTMwICsxMzksMjI2IEBAIEpTU3RyaW5nKiBq
c1N0cmluZ1dpdGhDYWNoZShFeGVjU3RhdGUqIHN0YXRlLCBPcHRpb25hbCBlbnVtZXJhdGlvblZh
bHVlKQogICAgICAgICBBU0NJSUxpdGVyYWwoIk9wdGlvbmFsVmFsdWUyIiksCiAgICAgICAgIEFT
Q0lJTGl0ZXJhbCgiT3B0aW9uYWxWYWx1ZTMiKSwKICAgICB9OwotICAgIHN0YXRpY19hc3NlcnQo
c3RhdGljX2Nhc3Q8c2l6ZV90PihPcHRpb25hbDo6RW1wdHlTdHJpbmcpID09IDAsICJPcHRpb25h
bDo6RW1wdHlTdHJpbmcgaXMgbm90IDAgYXMgZXhwZWN0ZWQiKTsKLSAgICBzdGF0aWNfYXNzZXJ0
KHN0YXRpY19jYXN0PHNpemVfdD4oT3B0aW9uYWw6Ok9wdGlvbmFsVmFsdWUxKSA9PSAxLCAiT3B0
aW9uYWw6Ok9wdGlvbmFsVmFsdWUxIGlzIG5vdCAxIGFzIGV4cGVjdGVkIik7Ci0gICAgc3RhdGlj
X2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KE9wdGlvbmFsOjpPcHRpb25hbFZhbHVlMikgPT0g
MiwgIk9wdGlvbmFsOjpPcHRpb25hbFZhbHVlMiBpcyBub3QgMiBhcyBleHBlY3RlZCIpOwotICAg
IHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihPcHRpb25hbDo6T3B0aW9uYWxWYWx1
ZTMpID09IDMsICJPcHRpb25hbDo6T3B0aW9uYWxWYWx1ZTMgaXMgbm90IDMgYXMgZXhwZWN0ZWQi
KTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oVGVzdE9iajo6T3B0aW9u
YWw6OkVtcHR5U3RyaW5nKSA9PSAwLCAiVGVzdE9iajo6T3B0aW9uYWw6OkVtcHR5U3RyaW5nIGlz
IG5vdCAwIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXpl
X3Q+KFRlc3RPYmo6Ok9wdGlvbmFsOjpPcHRpb25hbFZhbHVlMSkgPT0gMSwgIlRlc3RPYmo6Ok9w
dGlvbmFsOjpPcHRpb25hbFZhbHVlMSBpcyBub3QgMSBhcyBleHBlY3RlZCIpOworICAgIHN0YXRp
Y19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihUZXN0T2JqOjpPcHRpb25hbDo6T3B0aW9uYWxW
YWx1ZTIpID09IDIsICJUZXN0T2JqOjpPcHRpb25hbDo6T3B0aW9uYWxWYWx1ZTIgaXMgbm90IDIg
YXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oVGVz
dE9iajo6T3B0aW9uYWw6Ok9wdGlvbmFsVmFsdWUzKSA9PSAzLCAiVGVzdE9iajo6T3B0aW9uYWw6
Ok9wdGlvbmFsVmFsdWUzIGlzIG5vdCAzIGFzIGV4cGVjdGVkIik7CiAgICAgQVNTRVJUKHN0YXRp
Y19jYXN0PHNpemVfdD4oZW51bWVyYXRpb25WYWx1ZSkgPCBXVEZfQVJSQVlfTEVOR1RIKHZhbHVl
cykpOwogICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgdmFsdWVzW3N0YXRpY19j
YXN0PHNpemVfdD4oZW51bWVyYXRpb25WYWx1ZSldKTsKIH0KIAotdGVtcGxhdGU8PiBzdHJ1Y3Qg
SlNWYWx1ZVRyYWl0czxPcHRpb25hbD4gewotICAgIHN0YXRpYyBKU1N0cmluZyogYXJyYXlKU1Zh
bHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiwgT3B0aW9uYWwgdmFsdWUp
IHsgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCB2YWx1ZSk7IH0KK3RlbXBsYXRlPD4g
c3RydWN0IEpTVmFsdWVUcmFpdHM8VGVzdE9iajo6T3B0aW9uYWw+IHsKKyAgICBzdGF0aWMgSlNT
dHJpbmcqIGFycmF5SlNWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCos
IFRlc3RPYmo6Ok9wdGlvbmFsIHZhbHVlKSB7IHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShzdGF0
ZSwgdmFsdWUpOyB9CiB9OwogCi1PcHRpb25hbDxPcHRpb25hbD4gcGFyc2VPcHRpb25hbChFeGVj
U3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQorT3B0aW9uYWw8VGVzdE9iajo6T3B0aW9uYWw+
IHBhcnNlVGVzdE9iak9wdGlvbmFsKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7
CiAgICAgYXV0byBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAg
aWYgKHN0cmluZ1ZhbHVlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsOjpFbXB0
eVN0cmluZzsKKyAgICAgICAgcmV0dXJuIFRlc3RPYmo6Ok9wdGlvbmFsOjpFbXB0eVN0cmluZzsK
ICAgICBpZiAoc3RyaW5nVmFsdWUgPT0gIk9wdGlvbmFsVmFsdWUxIikKLSAgICAgICAgcmV0dXJu
IE9wdGlvbmFsOjpPcHRpb25hbFZhbHVlMTsKKyAgICAgICAgcmV0dXJuIFRlc3RPYmo6Ok9wdGlv
bmFsOjpPcHRpb25hbFZhbHVlMTsKICAgICBpZiAoc3RyaW5nVmFsdWUgPT0gIk9wdGlvbmFsVmFs
dWUyIikKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsOjpPcHRpb25hbFZhbHVlMjsKKyAgICAgICAg
cmV0dXJuIFRlc3RPYmo6Ok9wdGlvbmFsOjpPcHRpb25hbFZhbHVlMjsKICAgICBpZiAoc3RyaW5n
VmFsdWUgPT0gIk9wdGlvbmFsVmFsdWUzIikKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsOjpPcHRp
b25hbFZhbHVlMzsKKyAgICAgICAgcmV0dXJuIFRlc3RPYmo6Ok9wdGlvbmFsOjpPcHRpb25hbFZh
bHVlMzsKICAgICByZXR1cm4gTnVsbG9wdDsKIH0KIAotY29uc3QgY2hhciBleHBlY3RlZEVudW1l
cmF0aW9uVmFsdWVzT3B0aW9uYWxbXSA9ICJcIlwiLCBcIk9wdGlvbmFsVmFsdWUxXCIsIFwiT3B0
aW9uYWxWYWx1ZTJcIiwgXCJPcHRpb25hbFZhbHVlM1wiIjsKK2NvbnN0IGNoYXIgZXhwZWN0ZWRF
bnVtZXJhdGlvblZhbHVlc1Rlc3RPYmpPcHRpb25hbFtdID0gIlwiXCIsIFwiT3B0aW9uYWxWYWx1
ZTFcIiwgXCJPcHRpb25hbFZhbHVlMlwiLCBcIk9wdGlvbmFsVmFsdWUzXCIiOwogCiAjaWYgRU5B
QkxFKENvbmRpdGlvbjEpCiAKLUpTU3RyaW5nKiBqc1N0cmluZ1dpdGhDYWNoZShFeGVjU3RhdGUq
LCBUZXN0RW51bUEpOwotT3B0aW9uYWw8VGVzdEVudW1BPiBwYXJzZVRlc3RFbnVtQShFeGVjU3Rh
dGUmLCBKU1ZhbHVlKTsKLWV4dGVybiBjb25zdCBjaGFyIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1
ZXNUZXN0RW51bUFbXTsKK0pTU3RyaW5nKiBqc1N0cmluZ1dpdGhDYWNoZShFeGVjU3RhdGUqLCBU
ZXN0T2JqOjpFbnVtQSk7CitPcHRpb25hbDxUZXN0T2JqOjpFbnVtQT4gcGFyc2VUZXN0T2JqRW51
bUEoRXhlY1N0YXRlJiwgSlNWYWx1ZSk7CitleHRlcm4gY29uc3QgY2hhciBleHBlY3RlZEVudW1l
cmF0aW9uVmFsdWVzVGVzdE9iakVudW1BW107CiAKLUpTU3RyaW5nKiBqc1N0cmluZ1dpdGhDYWNo
ZShFeGVjU3RhdGUqIHN0YXRlLCBUZXN0RW51bUEgZW51bWVyYXRpb25WYWx1ZSkKK0pTU3RyaW5n
KiBqc1N0cmluZ1dpdGhDYWNoZShFeGVjU3RhdGUqIHN0YXRlLCBUZXN0T2JqOjpFbnVtQSBlbnVt
ZXJhdGlvblZhbHVlKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+
IHZhbHVlc1tdID0gewogICAgICAgICBBU0NJSUxpdGVyYWwoIkEiKSwKICAgICB9OwotICAgIHN0
YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihUZXN0RW51bUE6OkEpID09IDAsICJUZXN0
RW51bUE6OkEgaXMgbm90IDAgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRp
Y19jYXN0PHNpemVfdD4oVGVzdE9iajo6RW51bUE6OkEpID09IDAsICJUZXN0T2JqOjpFbnVtQTo6
QSBpcyBub3QgMCBhcyBleHBlY3RlZCIpOwogICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+
KGVudW1lcmF0aW9uVmFsdWUpIDwgV1RGX0FSUkFZX0xFTkdUSCh2YWx1ZXMpKTsKICAgICByZXR1
cm4ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIHZhbHVlc1tzdGF0aWNfY2FzdDxzaXplX3Q+KGVu
dW1lcmF0aW9uVmFsdWUpXSk7CiB9CiAKLXRlbXBsYXRlPD4gc3RydWN0IEpTVmFsdWVUcmFpdHM8
VGVzdEVudW1BPiB7Ci0gICAgc3RhdGljIEpTU3RyaW5nKiBhcnJheUpTVmFsdWUoRXhlY1N0YXRl
KiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqLCBUZXN0RW51bUEgdmFsdWUpIHsgcmV0dXJuIGpz
U3RyaW5nV2l0aENhY2hlKHN0YXRlLCB2YWx1ZSk7IH0KK3RlbXBsYXRlPD4gc3RydWN0IEpTVmFs
dWVUcmFpdHM8VGVzdE9iajo6RW51bUE+IHsKKyAgICBzdGF0aWMgSlNTdHJpbmcqIGFycmF5SlNW
YWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCosIFRlc3RPYmo6OkVudW1B
IHZhbHVlKSB7IHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgdmFsdWUpOyB9CiB9Owog
Ci1PcHRpb25hbDxUZXN0RW51bUE+IHBhcnNlVGVzdEVudW1BKEV4ZWNTdGF0ZSYgc3RhdGUsIEpT
VmFsdWUgdmFsdWUpCitPcHRpb25hbDxUZXN0T2JqOjpFbnVtQT4gcGFyc2VUZXN0T2JqRW51bUEo
RXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBhdXRvIHN0cmluZ1ZhbHVl
ID0gdmFsdWUudG9XVEZTdHJpbmcoJnN0YXRlKTsKICAgICBpZiAoc3RyaW5nVmFsdWUgPT0gIkEi
KQotICAgICAgICByZXR1cm4gVGVzdEVudW1BOjpBOworICAgICAgICByZXR1cm4gVGVzdE9iajo6
RW51bUE6OkE7CiAgICAgcmV0dXJuIE51bGxvcHQ7CiB9CiAKLWNvbnN0IGNoYXIgZXhwZWN0ZWRF
bnVtZXJhdGlvblZhbHVlc1Rlc3RFbnVtQVtdID0gIlwiQVwiIjsKK2NvbnN0IGNoYXIgZXhwZWN0
ZWRFbnVtZXJhdGlvblZhbHVlc1Rlc3RPYmpFbnVtQVtdID0gIlwiQVwiIjsKIAogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCiAKLUpTU3RyaW5n
KiBqc1N0cmluZ1dpdGhDYWNoZShFeGVjU3RhdGUqLCBUZXN0RW51bUIpOwotT3B0aW9uYWw8VGVz
dEVudW1CPiBwYXJzZVRlc3RFbnVtQihFeGVjU3RhdGUmLCBKU1ZhbHVlKTsKLWV4dGVybiBjb25z
dCBjaGFyIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXNUZXN0RW51bUJbXTsKK0pTU3RyaW5nKiBq
c1N0cmluZ1dpdGhDYWNoZShFeGVjU3RhdGUqLCBUZXN0T2JqOjpFbnVtQik7CitPcHRpb25hbDxU
ZXN0T2JqOjpFbnVtQj4gcGFyc2VUZXN0T2JqRW51bUIoRXhlY1N0YXRlJiwgSlNWYWx1ZSk7Citl
eHRlcm4gY29uc3QgY2hhciBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzVGVzdE9iakVudW1CW107
CiAKLUpTU3RyaW5nKiBqc1N0cmluZ1dpdGhDYWNoZShFeGVjU3RhdGUqIHN0YXRlLCBUZXN0RW51
bUIgZW51bWVyYXRpb25WYWx1ZSkKK0pTU3RyaW5nKiBqc1N0cmluZ1dpdGhDYWNoZShFeGVjU3Rh
dGUqIHN0YXRlLCBUZXN0T2JqOjpFbnVtQiBlbnVtZXJhdGlvblZhbHVlKQogewogICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IHZhbHVlc1tdID0gewogICAgICAgICBBU0NJ
SUxpdGVyYWwoIkIiKSwKICAgICB9OwotICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6
ZV90PihUZXN0RW51bUI6OkIpID09IDAsICJUZXN0RW51bUI6OkIgaXMgbm90IDAgYXMgZXhwZWN0
ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oVGVzdE9iajo6RW51
bUI6OkIpID09IDAsICJUZXN0T2JqOjpFbnVtQjo6QiBpcyBub3QgMCBhcyBleHBlY3RlZCIpOwog
ICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpIDwgV1RGX0FS
UkFZX0xFTkdUSCh2YWx1ZXMpKTsKICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUs
IHZhbHVlc1tzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpXSk7CiB9CiAKLXRl
bXBsYXRlPD4gc3RydWN0IEpTVmFsdWVUcmFpdHM8VGVzdEVudW1CPiB7Ci0gICAgc3RhdGljIEpT
U3RyaW5nKiBhcnJheUpTVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3Qq
LCBUZXN0RW51bUIgdmFsdWUpIHsgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCB2YWx1
ZSk7IH0KK3RlbXBsYXRlPD4gc3RydWN0IEpTVmFsdWVUcmFpdHM8VGVzdE9iajo6RW51bUI+IHsK
KyAgICBzdGF0aWMgSlNTdHJpbmcqIGFycmF5SlNWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBKU0RP
TUdsb2JhbE9iamVjdCosIFRlc3RPYmo6OkVudW1CIHZhbHVlKSB7IHJldHVybiBqc1N0cmluZ1dp
dGhDYWNoZShzdGF0ZSwgdmFsdWUpOyB9CiB9OwogCi1PcHRpb25hbDxUZXN0RW51bUI+IHBhcnNl
VGVzdEVudW1CKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCitPcHRpb25hbDxUZXN0
T2JqOjpFbnVtQj4gcGFyc2VUZXN0T2JqRW51bUIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2
YWx1ZSkKIHsKICAgICBhdXRvIHN0cmluZ1ZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoJnN0YXRl
KTsKICAgICBpZiAoc3RyaW5nVmFsdWUgPT0gIkIiKQotICAgICAgICByZXR1cm4gVGVzdEVudW1C
OjpCOworICAgICAgICByZXR1cm4gVGVzdE9iajo6RW51bUI6OkI7CiAgICAgcmV0dXJuIE51bGxv
cHQ7CiB9CiAKLWNvbnN0IGNoYXIgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlc1Rlc3RFbnVtQltd
ID0gIlwiQlwiIjsKK2NvbnN0IGNoYXIgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlc1Rlc3RPYmpF
bnVtQltdID0gIlwiQlwiIjsKIAogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwg
RU5BQkxFKENvbmRpdGlvbjIpCiAKLUpTU3RyaW5nKiBqc1N0cmluZ1dpdGhDYWNoZShFeGVjU3Rh
dGUqLCBUZXN0RW51bUMpOwotT3B0aW9uYWw8VGVzdEVudW1DPiBwYXJzZVRlc3RFbnVtQyhFeGVj
U3RhdGUmLCBKU1ZhbHVlKTsKLWV4dGVybiBjb25zdCBjaGFyIGV4cGVjdGVkRW51bWVyYXRpb25W
YWx1ZXNUZXN0RW51bUNbXTsKK0pTU3RyaW5nKiBqc1N0cmluZ1dpdGhDYWNoZShFeGVjU3RhdGUq
LCBUZXN0T2JqOjpFbnVtQyk7CitPcHRpb25hbDxUZXN0T2JqOjpFbnVtQz4gcGFyc2VUZXN0T2Jq
RW51bUMoRXhlY1N0YXRlJiwgSlNWYWx1ZSk7CitleHRlcm4gY29uc3QgY2hhciBleHBlY3RlZEVu
dW1lcmF0aW9uVmFsdWVzVGVzdE9iakVudW1DW107CiAKLUpTU3RyaW5nKiBqc1N0cmluZ1dpdGhD
YWNoZShFeGVjU3RhdGUqIHN0YXRlLCBUZXN0RW51bUMgZW51bWVyYXRpb25WYWx1ZSkKK0pTU3Ry
aW5nKiBqc1N0cmluZ1dpdGhDYWNoZShFeGVjU3RhdGUqIHN0YXRlLCBUZXN0T2JqOjpFbnVtQyBl
bnVtZXJhdGlvblZhbHVlKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJp
bmc+IHZhbHVlc1tdID0gewogICAgICAgICBBU0NJSUxpdGVyYWwoIkMiKSwKICAgICB9OwotICAg
IHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihUZXN0RW51bUM6OkMpID09IDAsICJU
ZXN0RW51bUM6OkMgaXMgbm90IDAgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0
YXRpY19jYXN0PHNpemVfdD4oVGVzdE9iajo6RW51bUM6OkMpID09IDAsICJUZXN0T2JqOjpFbnVt
Qzo6QyBpcyBub3QgMCBhcyBleHBlY3RlZCIpOwogICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXpl
X3Q+KGVudW1lcmF0aW9uVmFsdWUpIDwgV1RGX0FSUkFZX0xFTkdUSCh2YWx1ZXMpKTsKICAgICBy
ZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIHZhbHVlc1tzdGF0aWNfY2FzdDxzaXplX3Q+
KGVudW1lcmF0aW9uVmFsdWUpXSk7CiB9CiAKLXRlbXBsYXRlPD4gc3RydWN0IEpTVmFsdWVUcmFp
dHM8VGVzdEVudW1DPiB7Ci0gICAgc3RhdGljIEpTU3RyaW5nKiBhcnJheUpTVmFsdWUoRXhlY1N0
YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqLCBUZXN0RW51bUMgdmFsdWUpIHsgcmV0dXJu
IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCB2YWx1ZSk7IH0KK3RlbXBsYXRlPD4gc3RydWN0IEpT
VmFsdWVUcmFpdHM8VGVzdE9iajo6RW51bUM+IHsKKyAgICBzdGF0aWMgSlNTdHJpbmcqIGFycmF5
SlNWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCosIFRlc3RPYmo6OkVu
dW1DIHZhbHVlKSB7IHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgdmFsdWUpOyB9CiB9
OwogCi1PcHRpb25hbDxUZXN0RW51bUM+IHBhcnNlVGVzdEVudW1DKEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTVmFsdWUgdmFsdWUpCitPcHRpb25hbDxUZXN0T2JqOjpFbnVtQz4gcGFyc2VUZXN0T2JqRW51
bUMoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBhdXRvIHN0cmluZ1Zh
bHVlID0gdmFsdWUudG9XVEZTdHJpbmcoJnN0YXRlKTsKICAgICBpZiAoc3RyaW5nVmFsdWUgPT0g
IkMiKQotICAgICAgICByZXR1cm4gVGVzdEVudW1DOjpDOworICAgICAgICByZXR1cm4gVGVzdE9i
ajo6RW51bUM6OkM7CiAgICAgcmV0dXJuIE51bGxvcHQ7CiB9CiAKLWNvbnN0IGNoYXIgZXhwZWN0
ZWRFbnVtZXJhdGlvblZhbHVlc1Rlc3RFbnVtQ1tdID0gIlwiQ1wiIjsKK2NvbnN0IGNoYXIgZXhw
ZWN0ZWRFbnVtZXJhdGlvblZhbHVlc1Rlc3RPYmpFbnVtQ1tdID0gIlwiQ1wiIjsKIAogI2VuZGlm
CiAKK0pTU3RyaW5nKiBqc1N0cmluZ1dpdGhDYWNoZShFeGVjU3RhdGUqLCBUZXN0T2JqOjpLaW5k
KTsKK09wdGlvbmFsPFRlc3RPYmo6OktpbmQ+IHBhcnNlVGVzdE9iaktpbmQoRXhlY1N0YXRlJiwg
SlNWYWx1ZSk7CitleHRlcm4gY29uc3QgY2hhciBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzVGVz
dE9iaktpbmRbXTsKKworSlNTdHJpbmcqIGpzU3RyaW5nV2l0aENhY2hlKEV4ZWNTdGF0ZSogc3Rh
dGUsIFRlc3RPYmo6OktpbmQgZW51bWVyYXRpb25WYWx1ZSkKK3sKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiB2YWx1ZXNbXSA9IHsKKyAgICAgICAgQVNDSUlMaXRlcmFs
KCJxdWljayIpLAorICAgICAgICBBU0NJSUxpdGVyYWwoImRlYWQiKSwKKyAgICB9OworICAgIHN0
YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihUZXN0T2JqOjpLaW5kOjpRdWljaykgPT0g
MCwgIlRlc3RPYmo6OktpbmQ6OlF1aWNrIGlzIG5vdCAwIGFzIGV4cGVjdGVkIik7CisgICAgc3Rh
dGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFRlc3RPYmo6OktpbmQ6OkRlYWQpID09IDEs
ICJUZXN0T2JqOjpLaW5kOjpEZWFkIGlzIG5vdCAxIGFzIGV4cGVjdGVkIik7CisgICAgQVNTRVJU
KHN0YXRpY19jYXN0PHNpemVfdD4oZW51bWVyYXRpb25WYWx1ZSkgPCBXVEZfQVJSQVlfTEVOR1RI
KHZhbHVlcykpOworICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgdmFsdWVzW3N0
YXRpY19jYXN0PHNpemVfdD4oZW51bWVyYXRpb25WYWx1ZSldKTsKK30KKwordGVtcGxhdGU8PiBz
dHJ1Y3QgSlNWYWx1ZVRyYWl0czxUZXN0T2JqOjpLaW5kPiB7CisgICAgc3RhdGljIEpTU3RyaW5n
KiBhcnJheUpTVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqLCBUZXN0
T2JqOjpLaW5kIHZhbHVlKSB7IHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgdmFsdWUp
OyB9Cit9OworCitPcHRpb25hbDxUZXN0T2JqOjpLaW5kPiBwYXJzZVRlc3RPYmpLaW5kKEV4ZWNT
dGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgYXV0byBzdHJpbmdWYWx1ZSA9IHZh
bHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CisgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJxdWljayIp
CisgICAgICAgIHJldHVybiBUZXN0T2JqOjpLaW5kOjpRdWljazsKKyAgICBpZiAoc3RyaW5nVmFs
dWUgPT0gImRlYWQiKQorICAgICAgICByZXR1cm4gVGVzdE9iajo6S2luZDo6RGVhZDsKKyAgICBy
ZXR1cm4gTnVsbG9wdDsKK30KKworY29uc3QgY2hhciBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVz
VGVzdE9iaktpbmRbXSA9ICJcInF1aWNrXCIsIFwiZGVhZFwiIjsKKworSlNTdHJpbmcqIGpzU3Ry
aW5nV2l0aENhY2hlKEV4ZWNTdGF0ZSosIFRlc3RPYmo6OlNpemUpOworT3B0aW9uYWw8VGVzdE9i
ajo6U2l6ZT4gcGFyc2VUZXN0T2JqU2l6ZShFeGVjU3RhdGUmLCBKU1ZhbHVlKTsKK2V4dGVybiBj
b25zdCBjaGFyIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXNUZXN0T2JqU2l6ZVtdOworCitKU1N0
cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiBzdGF0ZSwgVGVzdE9iajo6U2l6ZSBl
bnVtZXJhdGlvblZhbHVlKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJp
bmc+IHZhbHVlc1tdID0geworICAgICAgICBBU0NJSUxpdGVyYWwoInNtYWxsIiksCisgICAgICAg
IEFTQ0lJTGl0ZXJhbCgibXVjaC1tdWNoLWxhcmdlciIpLAorICAgIH07CisgICAgc3RhdGljX2Fz
c2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFRlc3RPYmo6OlNpemU6OlNtYWxsKSA9PSAwLCAiVGVz
dE9iajo6U2l6ZTo6U21hbGwgaXMgbm90IDAgYXMgZXhwZWN0ZWQiKTsKKyAgICBzdGF0aWNfYXNz
ZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oVGVzdE9iajo6U2l6ZTo6TXVjaE11Y2hMYXJnZXIpID09
IDEsICJUZXN0T2JqOjpTaXplOjpNdWNoTXVjaExhcmdlciBpcyBub3QgMSBhcyBleHBlY3RlZCIp
OworICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpIDwgV1RG
X0FSUkFZX0xFTkdUSCh2YWx1ZXMpKTsKKyAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoc3Rh
dGUsIHZhbHVlc1tzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpXSk7Cit9CisK
K3RlbXBsYXRlPD4gc3RydWN0IEpTVmFsdWVUcmFpdHM8VGVzdE9iajo6U2l6ZT4geworICAgIHN0
YXRpYyBKU1N0cmluZyogYXJyYXlKU1ZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFs
T2JqZWN0KiwgVGVzdE9iajo6U2l6ZSB2YWx1ZSkgeyByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUo
c3RhdGUsIHZhbHVlKTsgfQorfTsKKworT3B0aW9uYWw8VGVzdE9iajo6U2l6ZT4gcGFyc2VUZXN0
T2JqU2l6ZShFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGF1dG8gc3Ry
aW5nVmFsdWUgPSB2YWx1ZS50b1dURlN0cmluZygmc3RhdGUpOworICAgIGlmIChzdHJpbmdWYWx1
ZSA9PSAic21hbGwiKQorICAgICAgICByZXR1cm4gVGVzdE9iajo6U2l6ZTo6U21hbGw7CisgICAg
aWYgKHN0cmluZ1ZhbHVlID09ICJtdWNoLW11Y2gtbGFyZ2VyIikKKyAgICAgICAgcmV0dXJuIFRl
c3RPYmo6OlNpemU6Ok11Y2hNdWNoTGFyZ2VyOworICAgIHJldHVybiBOdWxsb3B0OworfQorCitj
b25zdCBjaGFyIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXNUZXN0T2JqU2l6ZVtdID0gIlwic21h
bGxcIiwgXCJtdWNoLW11Y2gtbGFyZ2VyXCIiOworCitKU1N0cmluZyoganNTdHJpbmdXaXRoQ2Fj
aGUoRXhlY1N0YXRlKiwgVGVzdE9iajo6Q29uZmlkZW5jZSk7CitPcHRpb25hbDxUZXN0T2JqOjpD
b25maWRlbmNlPiBwYXJzZVRlc3RPYmpDb25maWRlbmNlKEV4ZWNTdGF0ZSYsIEpTVmFsdWUpOwor
ZXh0ZXJuIGNvbnN0IGNoYXIgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlc1Rlc3RPYmpDb25maWRl
bmNlW107CisKK0pTU3RyaW5nKiBqc1N0cmluZ1dpdGhDYWNoZShFeGVjU3RhdGUqIHN0YXRlLCBU
ZXN0T2JqOjpDb25maWRlbmNlIGVudW1lcmF0aW9uVmFsdWUpCit7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPGNvbnN0IFN0cmluZz4gdmFsdWVzW10gPSB7CisgICAgICAgIEFTQ0lJTGl0ZXJh
bCgiaGlnaCIpLAorICAgICAgICBBU0NJSUxpdGVyYWwoImtpbmRhLWxvdyIpLAorICAgIH07Cisg
ICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFRlc3RPYmo6OkNvbmZpZGVuY2U6
OkhpZ2gpID09IDAsICJUZXN0T2JqOjpDb25maWRlbmNlOjpIaWdoIGlzIG5vdCAwIGFzIGV4cGVj
dGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFRlc3RPYmo6OkNv
bmZpZGVuY2U6OktpbmRhTG93KSA9PSAxLCAiVGVzdE9iajo6Q29uZmlkZW5jZTo6S2luZGFMb3cg
aXMgbm90IDEgYXMgZXhwZWN0ZWQiKTsKKyAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90Pihl
bnVtZXJhdGlvblZhbHVlKSA8IFdURl9BUlJBWV9MRU5HVEgodmFsdWVzKSk7CisgICAgcmV0dXJu
IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVt
ZXJhdGlvblZhbHVlKV0pOworfQorCit0ZW1wbGF0ZTw+IHN0cnVjdCBKU1ZhbHVlVHJhaXRzPFRl
c3RPYmo6OkNvbmZpZGVuY2U+IHsKKyAgICBzdGF0aWMgSlNTdHJpbmcqIGFycmF5SlNWYWx1ZShF
eGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCosIFRlc3RPYmo6OkNvbmZpZGVuY2Ug
dmFsdWUpIHsgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCB2YWx1ZSk7IH0KK307CisK
K09wdGlvbmFsPFRlc3RPYmo6OkNvbmZpZGVuY2U+IHBhcnNlVGVzdE9iakNvbmZpZGVuY2UoRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBhdXRvIHN0cmluZ1ZhbHVlID0g
dmFsdWUudG9XVEZTdHJpbmcoJnN0YXRlKTsKKyAgICBpZiAoc3RyaW5nVmFsdWUgPT0gImhpZ2gi
KQorICAgICAgICByZXR1cm4gVGVzdE9iajo6Q29uZmlkZW5jZTo6SGlnaDsKKyAgICBpZiAoc3Ry
aW5nVmFsdWUgPT0gImtpbmRhLWxvdyIpCisgICAgICAgIHJldHVybiBUZXN0T2JqOjpDb25maWRl
bmNlOjpLaW5kYUxvdzsKKyAgICByZXR1cm4gTnVsbG9wdDsKK30KKworY29uc3QgY2hhciBleHBl
Y3RlZEVudW1lcmF0aW9uVmFsdWVzVGVzdE9iakNvbmZpZGVuY2VbXSA9ICJcImhpZ2hcIiwgXCJr
aW5kYS1sb3dcIiI7CisKIC8vIEZ1bmN0aW9ucwogCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkK
QEAgLTIzOTgsNyArMjQ5NCw3IEBAIGJvb2wgc2V0SlNUZXN0T2JqRW51bUF0dHIoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWCiAgICAgICAgIHJl
dHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgImVudW1BdHRyIik7
CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgYXV0
byBuYXRpdmVWYWx1ZSA9IHBhcnNlVGVzdEVudW1UeXBlKCpzdGF0ZSwgdmFsdWUpOworICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBwYXJzZVRlc3RPYmpFbnVtVHlwZSgqc3RhdGUsIHZhbHVlKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFsdWUpKQpAQCAtMzUzMCw3ICszNjI2LDcg
QEAgYm9vbCBzZXRKU1Rlc3RPYmpBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZShFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZQogICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJhdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZSIp
OwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGF1
dG8gbmF0aXZlVmFsdWUgPSBwYXJzZU9wdGlvbmFsKCpzdGF0ZSwgdmFsdWUpOworICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSBwYXJzZVRlc3RPYmpPcHRpb25hbCgqc3RhdGUsIHZhbHVlKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGlmIChVTkxJS0VMWSghbmF0aXZlVmFsdWUpKQpAQCAtMzk0NCwxMiArNDA0MCwxMiBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aEVudW1BcmcoRXhlY1N0YQogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1l
bnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgYXV0byBlbnVtQXJnVmFsdWUg
PSBzdGF0ZS0+YXJndW1lbnQoMCk7Ci0gICAgVGVzdEVudW1UeXBlIGVudW1Bcmc7Ci0gICAgYXV0
byBvcHRpb25hbFZhbHVlID0gcGFyc2VUZXN0RW51bVR5cGUoKnN0YXRlLCBlbnVtQXJnVmFsdWUp
OworICAgIFRlc3RPYmo6OkVudW1UeXBlIGVudW1Bcmc7CisgICAgYXV0byBvcHRpb25hbFZhbHVl
ID0gcGFyc2VUZXN0T2JqRW51bVR5cGUoKnN0YXRlLCBlbnVtQXJnVmFsdWUpOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGlmIChVTkxJS0VMWSghb3B0aW9uYWxWYWx1ZSkp
Ci0gICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9yKCpzdGF0ZSwgMCwg
ImVudW1BcmciLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoRW51bUFyZyIsIGV4cGVjdGVkRW51bWVy
YXRpb25WYWx1ZXNUZXN0RW51bVR5cGUpOworICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11
c3RCZUVudW1FcnJvcigqc3RhdGUsIDAsICJlbnVtQXJnIiwgIlRlc3RPYmoiLCAibWV0aG9kV2l0
aEVudW1BcmciLCBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzVGVzdE9iakVudW1UeXBlKTsKICAg
ICBlbnVtQXJnID0gb3B0aW9uYWxWYWx1ZS52YWx1ZSgpOwogICAgIGltcGwubWV0aG9kV2l0aEVu
dW1BcmcoZW51bUFyZyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKQEAgLTM5NjQsMTUgKzQwNjAsMTUgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmcKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsK
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGF1dG8gZW51bUFy
Z1ZhbHVlID0gc3RhdGUtPmFyZ3VtZW50KDApOwotICAgIFRlc3RFbnVtVHlwZSBlbnVtQXJnOwor
ICAgIFRlc3RPYmo6OkVudW1UeXBlIGVudW1Bcmc7CiAgICAgaWYgKGVudW1BcmdWYWx1ZS5pc1Vu
ZGVmaW5lZCgpKSB7Ci0gICAgICAgIGVudW1BcmcgPSBUZXN0RW51bVR5cGU6OkVudW1WYWx1ZTE7
CisgICAgICAgIGVudW1BcmcgPSBUZXN0T2JqOjpFbnVtVHlwZTo6RW51bVZhbHVlMTsKICAgICB9
IGVsc2UgewotICAgICAgICBhdXRvIG9wdGlvbmFsVmFsdWUgPSBwYXJzZVRlc3RFbnVtVHlwZSgq
c3RhdGUsIGVudW1BcmdWYWx1ZSk7CisgICAgICAgIGF1dG8gb3B0aW9uYWxWYWx1ZSA9IHBhcnNl
VGVzdE9iakVudW1UeXBlKCpzdGF0ZSwgZW51bUFyZ1ZhbHVlKTsKICAgICAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgICAgICBpZiAoVU5MSUtFTFkoIW9wdGlvbmFsVmFs
dWUpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVFbnVtRXJyb3IoKnN0
YXRlLCAwLCAiZW51bUFyZyIsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdB
bmREZWZhdWx0VmFsdWUiLCBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzVGVzdEVudW1UeXBlKTsK
KyAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9yKCpzdGF0ZSwg
MCwgImVudW1BcmciLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnQW5kRGVm
YXVsdFZhbHVlIiwgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlc1Rlc3RPYmpFbnVtVHlwZSk7CiAg
ICAgICAgIGVudW1BcmcgPSBvcHRpb25hbFZhbHVlLnZhbHVlKCk7CiAgICAgfQogICAgIGltcGwu
bWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1bHRWYWx1ZShlbnVtQXJnKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAppbmRleCBm
ZTEzY2U3OWU3ZDBmNTNkYzI5ZDQ0NzBmZTM1NTZmNTcwNTZhM2EwLi43NzQzZWVkMzVmNDVlMTdh
NzBiMGE5MDA0NGJhZDViYTEyNzY5MDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCkBAIC0zOSw2ICszOSwxMCBAQCBlbnVtIF9vcHRp
b25hbCB7ICIiLCAiT3B0aW9uYWxWYWx1ZTEiLCAiT3B0aW9uYWxWYWx1ZTIiLCAiT3B0aW9uYWxW
YWx1ZTMiIH07CiBbQ29uZGl0aW9uYWw9Q29uZGl0aW9uMSZDb25kaXRpb24yXSBlbnVtIFRlc3RF
bnVtQiB7ICJCIiB9OwogW0NvbmRpdGlvbmFsPUNvbmRpdGlvbjF8Q29uZGl0aW9uMl0gZW51bSBU
ZXN0RW51bUMgeyAiQyIgfTsKIAorZW51bSBUZXN0T2JqS2luZCB7ICJxdWljayIsICJkZWFkIiB9
OworZW51bSBPYmpTaXplIHsgInNtYWxsIiwgIm11Y2gtbXVjaC1sYXJnZXIiIH07CitlbnVtIFRl
c3RDb25maWRlbmNlIHsgImhpZ2giLCAia2luZGEtbG93IiB9OworCiBbCiAgICAgQ29uc3RydWN0
b3IoVGVzdENhbGxiYWNrIHRlc3RDYWxsYmFjaywgVGVzdENhbGxiYWNrRnVuY3Rpb24gdGVzdENh
bGxiYWNrRnVuY3Rpb24pLAogICAgIEludGVyZmFjZU5hbWU9VGVzdE9iamVjdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vQ3J5cHRvS2V5LmNwcAppbmRleCBkZjY3YzI5MmY0NTYxNDFiYTljMDAxYTZhNjJlMDkz
ZTdkMDA0MTI5Li5kODI3ZjdjY2UyNDgwMmViMWM1OWZhZGJkY2NkMWFiYWU4ZWM3NTgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5LmNwcApAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLUNyeXB0b0tleTo6Q3J5cHRvS2V5KENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXIgYWxnb3JpdGhtLCBDcnlwdG9LZXlUeXBlIHR5cGUsIGJvb2wgZXh0cmFjdGFibGUsIENy
eXB0b0tleVVzYWdlIHVzYWdlcykKK0NyeXB0b0tleTo6Q3J5cHRvS2V5KENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXIgYWxnb3JpdGhtLCBUeXBlIHR5cGUsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0
b0tleVVzYWdlIHVzYWdlcykKICAgICA6IG1fYWxnb3JpdGhtKGFsZ29yaXRobSkKICAgICAsIG1f
dHlwZSh0eXBlKQogICAgICwgbV9leHRyYWN0YWJsZShleHRyYWN0YWJsZSkKQEAgLTUzLDI2ICs1
MywyNiBAQCB2b2lkIENyeXB0b0tleTo6YnVpbGRBbGdvcml0aG1EZXNjcmlwdGlvbihDcnlwdG9B
bGdvcml0aG1EZXNjcmlwdGlvbkJ1aWxkZXImIGJ1aQogICAgIC8vIFN1YmNsYXNzZXMgd2lsbCBh
ZGQgb3RoZXIga2V5cy4KIH0KIAotVmVjdG9yPEtleVVzYWdlPiBDcnlwdG9LZXk6OnVzYWdlcygp
IGNvbnN0CithdXRvIENyeXB0b0tleTo6dXNhZ2VzKCkgY29uc3QgLT4gVmVjdG9yPFVzYWdlPgog
ewogICAgIC8vIFRoZSByZXN1bHQgaXMgb3JkZXJlZCBhbHBoYWJldGljYWxseS4KLSAgICBWZWN0
b3I8S2V5VXNhZ2U+IHJlc3VsdDsKKyAgICBWZWN0b3I8VXNhZ2U+IHJlc3VsdDsKICAgICBpZiAo
bV91c2FnZXMgJiBDcnlwdG9LZXlVc2FnZURlY3J5cHQpCi0gICAgICAgIHJlc3VsdC5hcHBlbmQo
S2V5VXNhZ2U6OkRlY3J5cHQpOworICAgICAgICByZXN1bHQuYXBwZW5kKFVzYWdlOjpEZWNyeXB0
KTsKICAgICBpZiAobV91c2FnZXMgJiBDcnlwdG9LZXlVc2FnZURlcml2ZUJpdHMpCi0gICAgICAg
IHJlc3VsdC5hcHBlbmQoS2V5VXNhZ2U6OkRlcml2ZUJpdHMpOworICAgICAgICByZXN1bHQuYXBw
ZW5kKFVzYWdlOjpEZXJpdmVCaXRzKTsKICAgICBpZiAobV91c2FnZXMgJiBDcnlwdG9LZXlVc2Fn
ZURlcml2ZUtleSkKLSAgICAgICAgcmVzdWx0LmFwcGVuZChLZXlVc2FnZTo6RGVyaXZlS2V5KTsK
KyAgICAgICAgcmVzdWx0LmFwcGVuZChVc2FnZTo6RGVyaXZlS2V5KTsKICAgICBpZiAobV91c2Fn
ZXMgJiBDcnlwdG9LZXlVc2FnZUVuY3J5cHQpCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoS2V5VXNh
Z2U6OkVuY3J5cHQpOworICAgICAgICByZXN1bHQuYXBwZW5kKFVzYWdlOjpFbmNyeXB0KTsKICAg
ICBpZiAobV91c2FnZXMgJiBDcnlwdG9LZXlVc2FnZVNpZ24pCi0gICAgICAgIHJlc3VsdC5hcHBl
bmQoS2V5VXNhZ2U6OlNpZ24pOworICAgICAgICByZXN1bHQuYXBwZW5kKFVzYWdlOjpTaWduKTsK
ICAgICBpZiAobV91c2FnZXMgJiBDcnlwdG9LZXlVc2FnZVVud3JhcEtleSkKLSAgICAgICAgcmVz
dWx0LmFwcGVuZChLZXlVc2FnZTo6VW53cmFwS2V5KTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChV
c2FnZTo6VW53cmFwS2V5KTsKICAgICBpZiAobV91c2FnZXMgJiBDcnlwdG9LZXlVc2FnZVZlcmlm
eSkKLSAgICAgICAgcmVzdWx0LmFwcGVuZChLZXlVc2FnZTo6VmVyaWZ5KTsKKyAgICAgICAgcmVz
dWx0LmFwcGVuZChVc2FnZTo6VmVyaWZ5KTsKICAgICBpZiAobV91c2FnZXMgJiBDcnlwdG9LZXlV
c2FnZVdyYXBLZXkpCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoS2V5VXNhZ2U6OldyYXBLZXkpOwor
ICAgICAgICByZXN1bHQuYXBwZW5kKFVzYWdlOjpXcmFwS2V5KTsKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCkBAIC04NCw2ICs4NCw3IEBAIFZlY3Rvcjx1aW50OF90PiBDcnlwdG9LZXk6OnJhbmRv
bURhdGEoc2l6ZV90IHNpemUpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KICNlbmRpZgorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1VCVExFX0NSWVBUTykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXkuaCBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9DcnlwdG9LZXkuaAppbmRleCAwN2ZiN2Q5ZDQ2N2ZjOGNhNmQ4ODk2OTU3ZWU0
NGM2NDIyY2VmY2VhLi5lYjZiNzAxNmQ3NTFhOTcyMWEwOWFiNWEwZDMzMzI4YjJkZjFkZGRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleS5oCkBAIC00NywyMSArNDcsMjMgQEAgZW51bSBjbGFz
cyBDcnlwdG9LZXlDbGFzcyB7CiAgICAgUlNBCiB9OwogCi1lbnVtIGNsYXNzIEtleVVzYWdlIHsg
RW5jcnlwdCwgRGVjcnlwdCwgU2lnbiwgVmVyaWZ5LCBEZXJpdmVLZXksIERlcml2ZUJpdHMsIFdy
YXBLZXksIFVud3JhcEtleSB9OwotCi11c2luZyBLZXlUeXBlID0gQ3J5cHRvS2V5VHlwZTsKLQog
Y2xhc3MgQ3J5cHRvS2V5IDogcHVibGljIFJlZkNvdW50ZWQ8Q3J5cHRvS2V5PiB7CiBwdWJsaWM6
Ci0gICAgQ3J5cHRvS2V5KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIsIENyeXB0b0tleVR5cGUs
IGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlKTsKKyAgICB1c2luZyBUeXBlID0gQ3J5
cHRvS2V5VHlwZTsKKyAgICBDcnlwdG9LZXkoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwgVHlw
ZSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2UpOwogICAgIHZpcnR1YWwgfkNyeXB0
b0tleSgpOwogCiAgICAgdmlydHVhbCBDcnlwdG9LZXlDbGFzcyBrZXlDbGFzcygpIGNvbnN0ID0g
MDsKIAotICAgIENyeXB0b0tleVR5cGUgdHlwZSgpIGNvbnN0OworICAgIFR5cGUgdHlwZSgpIGNv
bnN0OwogICAgIGJvb2wgZXh0cmFjdGFibGUoKSBjb25zdCB7IHJldHVybiBtX2V4dHJhY3RhYmxl
OyB9CiAgICAgdmlydHVhbCB2b2lkIGJ1aWxkQWxnb3JpdGhtRGVzY3JpcHRpb24oQ3J5cHRvQWxn
b3JpdGhtRGVzY3JpcHRpb25CdWlsZGVyJikgY29uc3Q7Ci0gICAgVmVjdG9yPEtleVVzYWdlPiB1
c2FnZXMoKSBjb25zdDsKKworICAgIC8vIEZJWE1FOiBDb25mdXNpbmcgdG8gaGF2ZSBDcnlwdG9L
ZXlVc2FnZSBhbmQgQ3J5cHRvS2V5OjpVc2FnZSBuYW1lZCBhbG1vc3QgdGhlIHNhbWUsIGJ1dCBi
ZSBzbGlnaHRseSBkaWZmZXJlbnQuCisgICAgLy8gQ3J5cHRvS2V5VXNhZ2UgdmFsdWVzIGFyZSBi
aXQgbWFza3Mgc28gdGhleSBjYW4gYmUgY29tYmluZWQgd2l0aCAib3IiLCB3aGlsZSB0aGlzIGlz
IGEgbm9ybWFsIGVudW0gdGhhdCBtdXN0CisgICAgLy8gbWF0Y2ggd2hhdCBpcyBkZWZpbmVkIGlu
IHRoZSBJREwuIE1heWJlIHdlIGNhbiByZW5hbWUgQ3J5cHRvS2V5VXNhZ2UgdG8gQ3J5cHRvS2V5
OjpVc2FnZXNCaXRtYXA/CisgICAgZW51bSBjbGFzcyBVc2FnZSB7IEVuY3J5cHQsIERlY3J5cHQs
IFNpZ24sIFZlcmlmeSwgRGVyaXZlS2V5LCBEZXJpdmVCaXRzLCBXcmFwS2V5LCBVbndyYXBLZXkg
fTsKKyAgICBWZWN0b3I8VXNhZ2U+IHVzYWdlcygpIGNvbnN0OwogCiAgICAgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllciBhbGdvcml0aG1JZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9hbGdv
cml0aG07IH0KICAgICBDcnlwdG9LZXlVc2FnZSB1c2FnZXNCaXRtYXAoKSBjb25zdCB7IHJldHVy
biBtX3VzYWdlczsgfQpAQCAtNzMsMTIgKzc1LDEyIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIG1fYWxnb3JpdGhtOwotICAgIENyeXB0b0tleVR5
cGUgbV90eXBlOworICAgIFR5cGUgbV90eXBlOwogICAgIGJvb2wgbV9leHRyYWN0YWJsZTsKICAg
ICBDcnlwdG9LZXlVc2FnZSBtX3VzYWdlczsKIH07CiAKLWlubGluZSBDcnlwdG9LZXlUeXBlIENy
eXB0b0tleTo6dHlwZSgpIGNvbnN0CitpbmxpbmUgYXV0byBDcnlwdG9LZXk6OnR5cGUoKSBjb25z
dCAtPiBUeXBlCiB7CiAgICAgcmV0dXJuIG1fdHlwZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3Bw
CmluZGV4IDE3M2E1ODJiMTY5NGYzZDJjMGFjODExNjg4ZTI0MjA5NWNiYmNhMDcuLmNhOGY5ODU1
ZWUzNjM5OGI4OTQ4YjczODI5YzQzMGViZDQ5ZTQ5NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9Gb250RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNw
cApAQCAtMzE3LDIyICszMTcsMjIgQEAgU3RyaW5nIEZvbnRGYWNlOjpmZWF0dXJlU2V0dGluZ3Mo
KSBjb25zdAogICAgIHJldHVybiBsaXN0LT5jc3NUZXh0KCk7CiB9CiAKLUZvbnRGYWNlTG9hZFN0
YXR1cyBGb250RmFjZTo6c3RhdHVzKCkgY29uc3QKK2F1dG8gRm9udEZhY2U6OnN0YXR1cygpIGNv
bnN0IC0+IExvYWRTdGF0dXMKIHsKICAgICBzd2l0Y2ggKG1fYmFja2luZy0+c3RhdHVzKCkpIHsK
ICAgICBjYXNlIENTU0ZvbnRGYWNlOjpTdGF0dXM6OlBlbmRpbmc6Ci0gICAgICAgIHJldHVybiBG
b250RmFjZUxvYWRTdGF0dXM6OlVubG9hZGVkOworICAgICAgICByZXR1cm4gTG9hZFN0YXR1czo6
VW5sb2FkZWQ7CiAgICAgY2FzZSBDU1NGb250RmFjZTo6U3RhdHVzOjpMb2FkaW5nOgotICAgICAg
ICByZXR1cm4gRm9udEZhY2VMb2FkU3RhdHVzOjpMb2FkaW5nOworICAgICAgICByZXR1cm4gTG9h
ZFN0YXR1czo6TG9hZGluZzsKICAgICBjYXNlIENTU0ZvbnRGYWNlOjpTdGF0dXM6OlRpbWVkT3V0
OgotICAgICAgICByZXR1cm4gRm9udEZhY2VMb2FkU3RhdHVzOjpFcnJvcjsKKyAgICAgICAgcmV0
dXJuIExvYWRTdGF0dXM6OkVycm9yOwogICAgIGNhc2UgQ1NTRm9udEZhY2U6OlN0YXR1czo6U3Vj
Y2VzczoKLSAgICAgICAgcmV0dXJuIEZvbnRGYWNlTG9hZFN0YXR1czo6TG9hZGVkOworICAgICAg
ICByZXR1cm4gTG9hZFN0YXR1czo6TG9hZGVkOwogICAgIGNhc2UgQ1NTRm9udEZhY2U6OlN0YXR1
czo6RmFpbHVyZToKLSAgICAgICAgcmV0dXJuIEZvbnRGYWNlTG9hZFN0YXR1czo6RXJyb3I7Cisg
ICAgICAgIHJldHVybiBMb2FkU3RhdHVzOjpFcnJvcjsKICAgICB9CiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgcmV0dXJuIEZvbnRGYWNlTG9hZFN0YXR1czo6RXJyb3I7CisgICAgcmV0
dXJuIExvYWRTdGF0dXM6OkVycm9yOwogfQogCiB2b2lkIEZvbnRGYWNlOjpmb250U3RhdGVDaGFu
Z2VkKENTU0ZvbnRGYWNlJiBmYWNlLCBDU1NGb250RmFjZTo6U3RhdHVzLCBDU1NGb250RmFjZTo6
U3RhdHVzIG5ld1N0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaAppbmRleCAyYjJhOTRiYmM5OWMyMjA1
OTBjOGU3NWZlYTZkMDdiOTQ4ZjMwMDAwLi5mNGI0MzdhNWI3NGYzZmE4Yzc2ZTEwN2IwMGRiYjY3
OTNlYTZmZDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaApAQCAtNDIsOCArNDIsNiBAQCBjbGFzcyBD
U1NGb250RmFjZTsKIGNsYXNzIENTU1ZhbHVlOwogY2xhc3MgRGljdGlvbmFyeTsKIAotZW51bSBj
bGFzcyBGb250RmFjZUxvYWRTdGF0dXMgeyBVbmxvYWRlZCwgTG9hZGluZywgTG9hZGVkLCBFcnJv
ciB9OwotCiBjbGFzcyBGb250RmFjZSBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPEZvbnRGYWNl
PiwgcHVibGljIENTU0ZvbnRGYWNlOjpDbGllbnQgewogcHVibGljOgogICAgIHN0YXRpYyBSZWZQ
dHI8Rm9udEZhY2U+IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBjb25zdCBTdHJpbmcmIGZhbWlseSwgSlNDOjpKU1ZhbHVlIHNvdXJjZSwgY29uc3QgRGlj
dGlvbmFyeSYgZGVzY3JpcHRvcnMsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTY1LDcgKzYzLDkgQEAg
cHVibGljOgogICAgIFN0cmluZyB1bmljb2RlUmFuZ2UoKSBjb25zdDsKICAgICBTdHJpbmcgdmFy
aWFudCgpIGNvbnN0OwogICAgIFN0cmluZyBmZWF0dXJlU2V0dGluZ3MoKSBjb25zdDsKLSAgICBG
b250RmFjZUxvYWRTdGF0dXMgc3RhdHVzKCkgY29uc3Q7CisKKyAgICBlbnVtIGNsYXNzIExvYWRT
dGF0dXMgeyBVbmxvYWRlZCwgTG9hZGluZywgTG9hZGVkLCBFcnJvciB9OworICAgIExvYWRTdGF0
dXMgc3RhdHVzKCkgY29uc3Q7CiAKICAgICB0eXBlZGVmIERPTVByb21pc2U8Rm9udEZhY2UmLCBE
T01Db3JlRXhjZXB0aW9uJj4gUHJvbWlzZTsKICAgICBQcm9taXNlJiBwcm9taXNlKCkgeyByZXR1
cm4gbV9wcm9taXNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VT
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmNwcAppbmRleCAwMDUwOTkz
NmQ2MzU5ZjM2YWM2MjQ3ZWRmYjIxNWM1Y2I1MGY3OWEyLi40NTYyMmNhNGQyYTQwMTgwM2EyNGQz
Y2FhNjEwNjVkNjZiZjY2NmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZh
Y2VTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5jcHAKQEAgLTE4
MiwxNiArMTgyLDE2IEBAIGF1dG8gRm9udEZhY2VTZXQ6OnByb21pc2UoSlNDOjpFeGVjU3RhdGUm
IGV4ZWNTdGF0ZSkgLT4gUHJvbWlzZSYKICAgICByZXR1cm4gbV9wcm9taXNlLnZhbHVlKCk7CiB9
CiAgICAgCi1Gb250RmFjZVNldExvYWRTdGF0dXMgRm9udEZhY2VTZXQ6OnN0YXR1cygpIGNvbnN0
CithdXRvIEZvbnRGYWNlU2V0OjpzdGF0dXMoKSBjb25zdCAtPiBMb2FkU3RhdHVzCiB7CiAgICAg
c3dpdGNoIChtX2JhY2tpbmctPnN0YXR1cygpKSB7CiAgICAgY2FzZSBDU1NGb250RmFjZVNldDo6
U3RhdHVzOjpMb2FkaW5nOgotICAgICAgICByZXR1cm4gRm9udEZhY2VTZXRMb2FkU3RhdHVzOjpM
b2FkaW5nOworICAgICAgICByZXR1cm4gTG9hZFN0YXR1czo6TG9hZGluZzsKICAgICBjYXNlIENT
U0ZvbnRGYWNlU2V0OjpTdGF0dXM6OkxvYWRlZDoKLSAgICAgICAgcmV0dXJuIEZvbnRGYWNlU2V0
TG9hZFN0YXR1czo6TG9hZGVkOworICAgICAgICByZXR1cm4gTG9hZFN0YXR1czo6TG9hZGVkOwog
ICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gRm9udEZhY2VTZXRM
b2FkU3RhdHVzOjpMb2FkZWQ7CisgICAgcmV0dXJuIExvYWRTdGF0dXM6OkxvYWRlZDsKIH0KIAog
Ym9vbCBGb250RmFjZVNldDo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5oCmluZGV4IDI5NTNhOWE4YTUwOWY1MGE4NjQ1OTc1NmMz
ZmRjMzk0ZTFkNzA4OWQuLmIxNzU4MzYzOGViMWU3ZGM1OTE1NzI0NjlkNDQxODc2ZWM1N2JjNjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5oCkBAIC0zNSw4ICszNSw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRE9NQ29yZUV4Y2VwdGlvbjsKIAotZW51bSBjbGFzcyBGb250RmFj
ZVNldExvYWRTdGF0dXMgeyBMb2FkaW5nLCBMb2FkZWQgfTsKLQogY2xhc3MgRm9udEZhY2VTZXQg
ZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxGb250RmFjZVNldD4sIHByaXZhdGUgQ1NTRm9udEZh
Y2VTZXRDbGllbnQsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwcml2YXRlIEFj
dGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxGb250RmFjZVNldD4gY3Jl
YXRlKERvY3VtZW50JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxGb250RmFjZT4+JiBpbml0aWFsRmFj
ZXMpOwpAQCAtNTIsNyArNTAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkKEpTQzo6RXhlY1N0
YXRlJiwgY29uc3QgU3RyaW5nJiBmb250LCBjb25zdCBTdHJpbmcmIHRleHQsIERlZmVycmVkV3Jh
cHBlciYmIHByb21pc2UsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBib29sIGNoZWNrKGNvbnN0IFN0
cmluZyYgZm9udCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICBG
b250RmFjZVNldExvYWRTdGF0dXMgc3RhdHVzKCkgY29uc3Q7CisgICAgZW51bSBjbGFzcyBMb2Fk
U3RhdHVzIHsgTG9hZGluZywgTG9hZGVkIH07CisgICAgTG9hZFN0YXR1cyBzdGF0dXMoKSBjb25z
dDsKIAogICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxGb250RmFjZVNldCYsIERPTUNvcmVFeGNlcHRp
b24mPiBQcm9taXNlOwogICAgIFByb21pc2UmIHByb21pc2UoSlNDOjpFeGVjU3RhdGUmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDA1NDVlZmMxZDkwOTNjNGExZDRiNjBhZjZjNDYzNjc2
MDU4NzU3NTYuLmZhN2Y2ZDAzMmRjZmI2YzJjM2I2ZDE3Zjk4YjA3MmMzNDAyYTg2NDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNTIxLDcgKzUyMSw3IEBAIERvY3VtZW50OjpEb2N1bWVu
dChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCB1bnNpZ25lZCBkb2N1bWVudENsYXNzZXMs
IHVuc2lnCiAjZW5kaWYKICAgICAsIG1fbG9hZEV2ZW50RGVsYXlDb3VudCgwKQogICAgICwgbV9s
b2FkRXZlbnREZWxheVRpbWVyKCp0aGlzLCAmRG9jdW1lbnQ6OmxvYWRFdmVudERlbGF5VGltZXJG
aXJlZCkKLSAgICAsIG1fcmVmZXJyZXJQb2xpY3koUmVmZXJyZXJIZWFkZXJQb2xpY3k6OkRlZmF1
bHQpCisgICAgLCBtX3JlZmVycmVyUG9saWN5KFJlZmVycmVyUG9saWN5OjpEZWZhdWx0KQogICAg
ICwgbV93cml0ZVJlY3Vyc2lvbklzVG9vRGVlcChmYWxzZSkKICAgICAsIG1fd3JpdGVSZWN1cnNp
b25EZXB0aCgwKQogICAgICwgbV9sYXN0SGFuZGxlZFVzZXJHZXN0dXJlVGltZXN0YW1wKDApCkBA
IC0zMzYwLDE2ICszMzYwLDE2IEBAIHZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NSZWZlcnJlclBvbGlj
eShjb25zdCBTdHJpbmcmIHBvbGljeSkKICAgICAvLyBOb3RlIHRoYXQgd2UncmUgc3VwcG9ydGlu
ZyBib3RoIHRoZSBzdGFuZGFyZCBhbmQgbGVnYWN5IGtleXdvcmRzIGZvciByZWZlcnJlcgogICAg
IC8vIHBvbGljaWVzLCBhcyBkZWZpbmVkIGJ5IGh0dHA6Ly93d3cudzMub3JnL1RSL3JlZmVycmVy
LXBvbGljeS8jcmVmZXJyZXItcG9saWN5LWRlbGl2ZXJ5LW1ldGEKICAgICBpZiAoZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UocG9saWN5LCAibm8tcmVmZXJyZXIiKSB8fCBlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShwb2xpY3ksICJuZXZlciIpKQotICAgICAgICBzZXRSZWZlcnJl
clBvbGljeShSZWZlcnJlckhlYWRlclBvbGljeTo6TmV2ZXIpOworICAgICAgICBzZXRSZWZlcnJl
clBvbGljeShSZWZlcnJlclBvbGljeTo6TmV2ZXIpOwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKHBvbGljeSwgInVuc2FmZS11cmwiKSB8fCBlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShwb2xpY3ksICJhbHdheXMiKSkKLSAgICAgICAgc2V0UmVmZXJyZXJQ
b2xpY3koUmVmZXJyZXJIZWFkZXJQb2xpY3k6OkFsd2F5cyk7CisgICAgICAgIHNldFJlZmVycmVy
UG9saWN5KFJlZmVycmVyUG9saWN5OjpBbHdheXMpOwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKHBvbGljeSwgIm9yaWdpbiIpKQotICAgICAgICBzZXRSZWZlcnJl
clBvbGljeShSZWZlcnJlckhlYWRlclBvbGljeTo6T3JpZ2luKTsKKyAgICAgICAgc2V0UmVmZXJy
ZXJQb2xpY3koUmVmZXJyZXJQb2xpY3k6Ok9yaWdpbik7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UocG9saWN5LCAibm8tcmVmZXJyZXItd2hlbi1kb3duZ3JhZGUi
KSB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwb2xpY3ksICJkZWZhdWx0IikpCi0g
ICAgICAgIHNldFJlZmVycmVyUG9saWN5KFJlZmVycmVySGVhZGVyUG9saWN5OjpEZWZhdWx0KTsK
KyAgICAgICAgc2V0UmVmZXJyZXJQb2xpY3koUmVmZXJyZXJQb2xpY3k6OkRlZmF1bHQpOwogICAg
IGVsc2UgewogICAgICAgICBhZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpSZW5kZXJp
bmcsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJGYWlsZWQgdG8gc2V0IHJlZmVycmVyIHBvbGljeTog
VGhlIHZhbHVlICciICsgcG9saWN5ICsgIicgaXMgbm90IG9uZSBvZiAnbm8tcmVmZXJyZXInLCAn
b3JpZ2luJywgJ25vLXJlZmVycmVyLXdoZW4tZG93bmdyYWRlJywgb3IgJ3Vuc2FmZS11cmwnLiBE
ZWZhdWx0aW5nIHRvICduby1yZWZlcnJlcicuIik7Ci0gICAgICAgIHNldFJlZmVycmVyUG9saWN5
KFJlZmVycmVySGVhZGVyUG9saWN5OjpOZXZlcik7CisgICAgICAgIHNldFJlZmVycmVyUG9saWN5
KFJlZmVycmVyUG9saWN5OjpOZXZlcik7CiAgICAgfQogfQogCkBAIC02OTM3LDcgKzY5MzcsNyBA
QCB2b2lkIERvY3VtZW50OjphcHBseUNvbnRlbnREaXNwb3NpdGlvbkF0dGFjaG1lbnRTYW5kYm94
KCkKIHsKICAgICBBU1NFUlQoc2hvdWxkRW5mb3JjZUNvbnRlbnREaXNwb3NpdGlvbkF0dGFjaG1l
bnRTYW5kYm94KCkpOwogCi0gICAgc2V0UmVmZXJyZXJQb2xpY3koUmVmZXJyZXJIZWFkZXJQb2xp
Y3k6Ok5ldmVyKTsKKyAgICBzZXRSZWZlcnJlclBvbGljeShSZWZlcnJlclBvbGljeTo6TmV2ZXIp
OwogICAgIGlmICghaXNNZWRpYURvY3VtZW50KCkpCiAgICAgICAgIGVuZm9yY2VTYW5kYm94Rmxh
Z3MoU2FuZGJveEFsbCk7CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAxNjYyMWVi
YTcxNzBiOTE2ZWJhODY2ZTEwYTg4ZWVjYTU4NDk3YzcyLi4xYmNiNDhiZTI1ZWJhYmQ5YWM2OGVj
Y2Q1MDFlNjY1MTkxNTE3ZTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMzYxLDggKzM2MSw4
IEBAIHB1YmxpYzoKICAgICBib29sIGRpZERpc3BhdGNoVmlld3BvcnRQcm9wZXJ0aWVzQ2hhbmdl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlkRGlzcGF0Y2hWaWV3cG9ydFByb3BlcnRpZXNDaGFuZ2Vk
OyB9CiAjZW5kaWYKIAotICAgIHZvaWQgc2V0UmVmZXJyZXJQb2xpY3koUmVmZXJyZXJIZWFkZXJQ
b2xpY3kgcmVmZXJyZXJQb2xpY3kpIHsgbV9yZWZlcnJlclBvbGljeSA9IHJlZmVycmVyUG9saWN5
OyB9Ci0gICAgUmVmZXJyZXJIZWFkZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3koKSBjb25zdCB7IHJl
dHVybiBtX3JlZmVycmVyUG9saWN5OyB9CisgICAgdm9pZCBzZXRSZWZlcnJlclBvbGljeShSZWZl
cnJlclBvbGljeSByZWZlcnJlclBvbGljeSkgeyBtX3JlZmVycmVyUG9saWN5ID0gcmVmZXJyZXJQ
b2xpY3k7IH0KKyAgICBSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVmZXJyZXJQb2xpY3k7IH0KIAogICAgIERvY3VtZW50VHlwZSogZG9jdHlwZSgpIGNv
bnN0OwogCkBAIC0xNjQwLDcgKzE2NDAsNyBAQCBwcml2YXRlOgogCiAgICAgVmlld3BvcnRBcmd1
bWVudHMgbV92aWV3cG9ydEFyZ3VtZW50czsKIAotICAgIFJlZmVycmVySGVhZGVyUG9saWN5IG1f
cmVmZXJyZXJQb2xpY3k7CisgICAgUmVmZXJyZXJQb2xpY3kgbV9yZWZlcnJlclBvbGljeTsKIAog
I2lmIEVOQUJMRShXRUJfVElNSU5HKQogICAgIERvY3VtZW50VGltaW5nIG1fZG9jdW1lbnRUaW1p
bmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBhODNlYmI3
ODZiMmQ1NDBlNjgwZGVhZmE1NjJiYzUxMWZmNjNjMWIxLi5iMThlMjk3MTNiYTJkNmViYzFjODJi
ZWY3MTIyNmRiNTVkYzY5YzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKQEAgLTExNzQsNyArMTE3NCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZElu
dGVybmFsKCkKICAgICAgICAgaWYgKG1fdGV4dFRyYWNrcykgewogICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fdGV4dFRyYWNrcy0+bGVuZ3RoKCk7ICsraSkgewogICAgICAg
ICAgICAgICAgIFRleHRUcmFjayogdHJhY2sgPSBtX3RleHRUcmFja3MtPml0ZW0oaSk7Ci0gICAg
ICAgICAgICAgICAgaWYgKHRyYWNrLT5tb2RlKCkgIT0gVGV4dFRyYWNrTW9kZTo6RGlzYWJsZWQp
CisgICAgICAgICAgICAgICAgaWYgKHRyYWNrLT5tb2RlKCkgIT0gVGV4dFRyYWNrOjpNb2RlOjpE
aXNhYmxlZCkKICAgICAgICAgICAgICAgICAgICAgbV90ZXh0VHJhY2tzV2hlblJlc291cmNlU2Vs
ZWN0aW9uQmVnYW4uYXBwZW5kKHRyYWNrKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAt
MTczMSw3ICsxNzMxLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tNb2RlQ2hh
bmdlZChUZXh0VHJhY2sqIHRyYWNrKQogICAgIC8vIE1hcmsgdGhpcyB0cmFjayBhcyAiY29uZmln
dXJlZCIgc28gY29uZmlndXJlVGV4dFRyYWNrcyB3b24ndCBjaGFuZ2UgdGhlIG1vZGUgYWdhaW4u
CiAgICAgdHJhY2stPnNldEhhc0JlZW5Db25maWd1cmVkKHRydWUpOwogICAgIAotICAgIGlmICh0
cmFjay0+bW9kZSgpICE9IFRleHRUcmFja01vZGU6OkRpc2FibGVkICYmIHRyYWNrSXNMb2FkZWQp
CisgICAgaWYgKHRyYWNrLT5tb2RlKCkgIT0gVGV4dFRyYWNrOjpNb2RlOjpEaXNhYmxlZCAmJiB0
cmFja0lzTG9hZGVkKQogICAgICAgICB0ZXh0VHJhY2tBZGRDdWVzKHRyYWNrLCB0cmFjay0+Y3Vl
cygpKTsKIAogICAgIGNvbmZpZ3VyZVRleHRUcmFja0Rpc3BsYXkoQXNzdW1lVGV4dFRyYWNrVmlz
aWJpbGl0eUNoYW5nZWQpOwpAQCAtMTc1NSw4ICsxNzU1LDggQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojp2aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKFZpZGVvVHJhY2sqIHRyYWNrKQogCiB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja0tpbmRDaGFuZ2VkKFRleHRUcmFjayogdHJhY2sp
CiB7Ci0gICAgaWYgKHRyYWNrLT5raW5kKCkgIT0gVGV4dFRyYWNrS2luZDo6Q2FwdGlvbnMgJiYg
dHJhY2stPmtpbmQoKSAhPSBUZXh0VHJhY2tLaW5kOjpTdWJ0aXRsZXMgJiYgdHJhY2stPm1vZGUo
KSA9PSBUZXh0VHJhY2tNb2RlOjpTaG93aW5nKQotICAgICAgICB0cmFjay0+c2V0TW9kZShUZXh0
VHJhY2tNb2RlOjpIaWRkZW4pOworICAgIGlmICh0cmFjay0+a2luZCgpICE9IFRleHRUcmFjazo6
S2luZDo6Q2FwdGlvbnMgJiYgdHJhY2stPmtpbmQoKSAhPSBUZXh0VHJhY2s6OktpbmQ6OlN1YnRp
dGxlcyAmJiB0cmFjay0+bW9kZSgpID09IFRleHRUcmFjazo6TW9kZTo6U2hvd2luZykKKyAgICAg
ICAgdHJhY2stPnNldE1vZGUoVGV4dFRyYWNrOjpNb2RlOjpIaWRkZW4pOwogfQogCiB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OmJlZ2luSWdub3JpbmdUcmFja0Rpc3BsYXlVcGRhdGVSZXF1ZXN0cygp
CkBAIC0xNzc0LDcgKzE3NzQsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmVuZElnbm9yaW5n
VHJhY2tEaXNwbGF5VXBkYXRlUmVxdWVzdHMoKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRl
eHRUcmFja0FkZEN1ZXMoVGV4dFRyYWNrKiB0cmFjaywgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCog
Y3VlcykgCiB7Ci0gICAgaWYgKHRyYWNrLT5tb2RlKCkgPT0gVGV4dFRyYWNrTW9kZTo6RGlzYWJs
ZWQpCisgICAgaWYgKHRyYWNrLT5tb2RlKCkgPT0gVGV4dFRyYWNrOjpNb2RlOjpEaXNhYmxlZCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgVHJhY2tEaXNwbGF5VXBkYXRlU2NvcGUgc2NvcGUodGhp
cyk7CkBAIC0xNzkxLDcgKzE3OTEsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFj
a1JlbW92ZUN1ZXMoVGV4dFRyYWNrKiwgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCogYwogCiB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja0FkZEN1ZShUZXh0VHJhY2sqIHRyYWNrLCBQYXNz
UmVmUHRyPFRleHRUcmFja0N1ZT4gcHJwQ3VlKQogewotICAgIGlmICh0cmFjay0+bW9kZSgpID09
IFRleHRUcmFja01vZGU6OkRpc2FibGVkKQorICAgIGlmICh0cmFjay0+bW9kZSgpID09IFRleHRU
cmFjazo6TW9kZTo6RGlzYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxUZXh0
VHJhY2tDdWU+IGN1ZSA9IHBycEN1ZTsKQEAgLTM2NjQsNyArMzY2NCw3IEBAIFBhc3NSZWZQdHI8
VGV4dFRyYWNrPiBIVE1MTWVkaWFFbGVtZW50OjphZGRUZXh0VHJhY2soY29uc3QgU3RyaW5nJiBr
aW5kLCBjb25zdCBTCiAgICAgdGV4dFRyYWNrLT5zZXRSZWFkaW5lc3NTdGF0ZShUZXh0VHJhY2s6
OkxvYWRlZCk7CiAKICAgICAvLyAuLi4gaXRzIHRleHQgdHJhY2sgbW9kZSB0byB0aGUgdGV4dCB0
cmFjayBoaWRkZW4gbW9kZSwgYW5kIGl0cyB0ZXh0IHRyYWNrIGxpc3Qgb2YgY3VlcyB0byBhbiBl
bXB0eSBsaXN0IC4uLgotICAgIHRleHRUcmFjay0+c2V0TW9kZShUZXh0VHJhY2tNb2RlOjpIaWRk
ZW4pOworICAgIHRleHRUcmFjay0+c2V0TW9kZShUZXh0VHJhY2s6Ok1vZGU6OkhpZGRlbik7CiAK
ICAgICByZXR1cm4gdGV4dFRyYWNrLnJlbGVhc2UoKTsKIH0KQEAgLTM3OTIsNyArMzc5Miw3IEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y29uZmlndXJlVGV4dFRyYWNrR3JvdXAoY29uc3QgVHJh
Y2tHcm91cCYgZ3JvdXApCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBncm91cC50cmFja3Mu
c2l6ZSgpOyArK2kpIHsKICAgICAgICAgUmVmUHRyPFRleHRUcmFjaz4gdGV4dFRyYWNrID0gZ3Jv
dXAudHJhY2tzW2ldOwogCi0gICAgICAgIGlmIChtX3Byb2Nlc3NpbmdQcmVmZXJlbmNlQ2hhbmdl
ICYmIHRleHRUcmFjay0+bW9kZSgpID09IFRleHRUcmFja01vZGU6OlNob3dpbmcpCisgICAgICAg
IGlmIChtX3Byb2Nlc3NpbmdQcmVmZXJlbmNlQ2hhbmdlICYmIHRleHRUcmFjay0+bW9kZSgpID09
IFRleHRUcmFjazo6TW9kZTo6U2hvd2luZykKICAgICAgICAgICAgIGN1cnJlbnRseUVuYWJsZWRU
cmFja3MuYXBwZW5kKHRleHRUcmFjayk7CiAKICAgICAgICAgaW50IHRyYWNrU2NvcmUgPSBjYXB0
aW9uUHJlZmVyZW5jZXMgPyBjYXB0aW9uUHJlZmVyZW5jZXMtPnRleHRUcmFja1NlbGVjdGlvblNj
b3JlKHRleHRUcmFjay5nZXQoKSwgdGhpcykgOiAwOwpAQCAtMzg2MSwxMiArMzg2MSwxMiBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNvbmZpZ3VyZVRleHRUcmFja0dyb3VwKGNvbnN0IFRyYWNr
R3JvdXAmIGdyb3VwKQogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGN1cnJlbnRseUVu
YWJsZWRUcmFja3Muc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIFJlZlB0cjxUZXh0VHJhY2s+
IHRleHRUcmFjayA9IGN1cnJlbnRseUVuYWJsZWRUcmFja3NbaV07CiAgICAgICAgICAgICBpZiAo
dGV4dFRyYWNrICE9IHRyYWNrVG9FbmFibGUpCi0gICAgICAgICAgICAgICAgdGV4dFRyYWNrLT5z
ZXRNb2RlKFRleHRUcmFja01vZGU6OkRpc2FibGVkKTsKKyAgICAgICAgICAgICAgICB0ZXh0VHJh
Y2stPnNldE1vZGUoVGV4dFRyYWNrOjpNb2RlOjpEaXNhYmxlZCk7CiAgICAgICAgIH0KICAgICB9
CiAKICAgICBpZiAodHJhY2tUb0VuYWJsZSkgewotICAgICAgICB0cmFja1RvRW5hYmxlLT5zZXRN
b2RlKFRleHRUcmFja01vZGU6OlNob3dpbmcpOworICAgICAgICB0cmFja1RvRW5hYmxlLT5zZXRN
b2RlKFRleHRUcmFjazo6TW9kZTo6U2hvd2luZyk7CiAKICAgICAgICAgLy8gSWYgdXNlciBwcmVm
ZXJlbmNlcyBpbmRpY2F0ZSB3ZSBzaG91bGQgYWx3YXlzIGRpc3BsYXkgY2FwdGlvbnMsIG1ha2Ug
c3VyZSB3ZSByZWZsZWN0IHRoZQogICAgICAgICAvLyBwcm9wZXIgc3RhdHVzIHZpYSB0aGUgd2Vi
a2l0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlIEFQSSBjYWxsOgpAQCAtMzk5NiwxMyArMzk5NiwxMyBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFNlbGVjdGVkVGV4dFRyYWNrKFRleHRUcmFjayog
dHJhY2tUb1NlbGVjdCkKICAgICAgICAgZm9yIChpbnQgaSA9IDAsIGxlbmd0aCA9IHRyYWNrTGlz
dC0+bGVuZ3RoKCk7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICAgICAgVGV4dFRyYWNrKiB0
cmFjayA9IHRyYWNrTGlzdC0+aXRlbShpKTsKICAgICAgICAgICAgIGlmICghdHJhY2tUb1NlbGVj
dCB8fCB0cmFjayAhPSB0cmFja1RvU2VsZWN0KQotICAgICAgICAgICAgICAgIHRyYWNrLT5zZXRN
b2RlKFRleHRUcmFja01vZGU6OkRpc2FibGVkKTsKKyAgICAgICAgICAgICAgICB0cmFjay0+c2V0
TW9kZShUZXh0VHJhY2s6Ok1vZGU6OkRpc2FibGVkKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICB0cmFjay0+c2V0TW9kZShUZXh0VHJhY2tNb2RlOjpTaG93aW5nKTsKKyAgICAg
ICAgICAgICAgICB0cmFjay0+c2V0TW9kZShUZXh0VHJhY2s6Ok1vZGU6OlNob3dpbmcpOwogICAg
ICAgICB9CiAgICAgfSBlbHNlIGlmICh0cmFja1RvU2VsZWN0ID09IFRleHRUcmFjazo6Y2FwdGlv
bk1lbnVPZmZJdGVtKCkpIHsKICAgICAgICAgZm9yIChpbnQgaSA9IDAsIGxlbmd0aCA9IHRyYWNr
TGlzdC0+bGVuZ3RoKCk7IGkgPCBsZW5ndGg7ICsraSkKLSAgICAgICAgICAgIHRyYWNrTGlzdC0+
aXRlbShpKS0+c2V0TW9kZShUZXh0VHJhY2tNb2RlOjpEaXNhYmxlZCk7CisgICAgICAgICAgICB0
cmFja0xpc3QtPml0ZW0oaSktPnNldE1vZGUoVGV4dFRyYWNrOjpNb2RlOjpEaXNhYmxlZCk7CiAg
ICAgfQogCiAgICAgaWYgKCFkb2N1bWVudCgpLnBhZ2UoKSkKQEAgLTQwNDEsMTggKzQwNDEsMTgg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpjb25maWd1cmVUZXh0VHJhY2tzKCkKIAogICAgICAg
ICBhdXRvIGtpbmQgPSB0ZXh0VHJhY2stPmtpbmQoKTsKICAgICAgICAgVHJhY2tHcm91cCogY3Vy
cmVudEdyb3VwOwotICAgICAgICBpZiAoa2luZCA9PSBUZXh0VHJhY2tLaW5kOjpTdWJ0aXRsZXMg
fHwga2luZCA9PSBUZXh0VHJhY2tLaW5kOjpDYXB0aW9ucyB8fCBraW5kID09IFRleHRUcmFja0tp
bmQ6OkZvcmNlZCkKKyAgICAgICAgaWYgKGtpbmQgPT0gVGV4dFRyYWNrOjpLaW5kOjpTdWJ0aXRs
ZXMgfHwga2luZCA9PSBUZXh0VHJhY2s6OktpbmQ6OkNhcHRpb25zIHx8IGtpbmQgPT0gVGV4dFRy
YWNrOjpLaW5kOjpGb3JjZWQpCiAgICAgICAgICAgICBjdXJyZW50R3JvdXAgPSAmY2FwdGlvbkFu
ZFN1YnRpdGxlVHJhY2tzOwotICAgICAgICBlbHNlIGlmIChraW5kID09IFRleHRUcmFja0tpbmQ6
OkRlc2NyaXB0aW9ucykKKyAgICAgICAgZWxzZSBpZiAoa2luZCA9PSBUZXh0VHJhY2s6OktpbmQ6
OkRlc2NyaXB0aW9ucykKICAgICAgICAgICAgIGN1cnJlbnRHcm91cCA9ICZkZXNjcmlwdGlvblRy
YWNrczsKLSAgICAgICAgZWxzZSBpZiAoa2luZCA9PSBUZXh0VHJhY2tLaW5kOjpDaGFwdGVycykK
KyAgICAgICAgZWxzZSBpZiAoa2luZCA9PSBUZXh0VHJhY2s6OktpbmQ6OkNoYXB0ZXJzKQogICAg
ICAgICAgICAgY3VycmVudEdyb3VwID0gJmNoYXB0ZXJUcmFja3M7Ci0gICAgICAgIGVsc2UgaWYg
KGtpbmQgPT0gVGV4dFRyYWNrS2luZDo6TWV0YWRhdGEpCisgICAgICAgIGVsc2UgaWYgKGtpbmQg
PT0gVGV4dFRyYWNrOjpLaW5kOjpNZXRhZGF0YSkKICAgICAgICAgICAgIGN1cnJlbnRHcm91cCA9
ICZtZXRhZGF0YVRyYWNrczsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY3VycmVudEdyb3Vw
ID0gJm90aGVyVHJhY2tzOwogCi0gICAgICAgIGlmICghY3VycmVudEdyb3VwLT52aXNpYmxlVHJh
Y2sgJiYgdGV4dFRyYWNrLT5tb2RlKCkgPT0gVGV4dFRyYWNrTW9kZTo6U2hvd2luZykKKyAgICAg
ICAgaWYgKCFjdXJyZW50R3JvdXAtPnZpc2libGVUcmFjayAmJiB0ZXh0VHJhY2stPm1vZGUoKSA9
PSBUZXh0VHJhY2s6Ok1vZGU6OlNob3dpbmcpCiAgICAgICAgICAgICBjdXJyZW50R3JvdXAtPnZp
c2libGVUcmFjayA9IHRleHRUcmFjazsKICAgICAgICAgaWYgKCFjdXJyZW50R3JvdXAtPmRlZmF1
bHRUcmFjayAmJiB0ZXh0VHJhY2stPmlzRGVmYXVsdCgpKQogICAgICAgICAgICAgY3VycmVudEdy
b3VwLT5kZWZhdWx0VHJhY2sgPSB0ZXh0VHJhY2s7CkBAIC01NDkxLDcgKzU0OTEsNyBAQCBib29s
IEhUTUxNZWRpYUVsZW1lbnQ6Omhhc0Nsb3NlZENhcHRpb25zKCkgY29uc3QKICAgICAgICAgYXV0
byYgdHJhY2sgPSAqbV90ZXh0VHJhY2tzLT5pdGVtKGkpOwogICAgICAgICBpZiAodHJhY2sucmVh
ZGluZXNzU3RhdGUoKSA9PSBUZXh0VHJhY2s6OkZhaWxlZFRvTG9hZCkKICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICBpZiAodHJhY2sua2luZCgpID09IFRleHRUcmFja0tpbmQ6OkNhcHRp
b25zIHx8IHRyYWNrLmtpbmQoKSA9PSBUZXh0VHJhY2tLaW5kOjpTdWJ0aXRsZXMpCisgICAgICAg
IGlmICh0cmFjay5raW5kKCkgPT0gVGV4dFRyYWNrOjpLaW5kOjpDYXB0aW9ucyB8fCB0cmFjay5r
aW5kKCkgPT0gVGV4dFRyYWNrOjpLaW5kOjpTdWJ0aXRsZXMpCiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAjZW5kaWYKQEAgLTU3NTgsNyArNTc1OCw3IEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6Y29uZmlndXJlVGV4dFRyYWNrRGlzcGxheShUZXh0VHJhY2tWaXNpYmlsaXR5Q2hl
Y2tUeXBlIGNoCiAKICAgICBib29sIGhhdmVWaXNpYmxlVGV4dFRyYWNrID0gZmFsc2U7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdGV4dFRyYWNrcy0+bGVuZ3RoKCk7ICsraSkgewot
ICAgICAgICBpZiAobV90ZXh0VHJhY2tzLT5pdGVtKGkpLT5tb2RlKCkgPT0gVGV4dFRyYWNrTW9k
ZTo6U2hvd2luZykgeworICAgICAgICBpZiAobV90ZXh0VHJhY2tzLT5pdGVtKGkpLT5tb2RlKCkg
PT0gVGV4dFRyYWNrOjpNb2RlOjpTaG93aW5nKSB7CiAgICAgICAgICAgICBoYXZlVmlzaWJsZVRl
eHRUcmFjayA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNTgzNCw3
ICs1ODM0LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptYXJrQ2FwdGlvbkFuZFN1YnRpdGxl
VHJhY2tzQXNVbmNvbmZpZ3VyZWQoUmVjb25maWd1cmVNb2QKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV90ZXh0VHJhY2tzLT5sZW5ndGgoKTsgKytpKSB7CiAgICAgICAgIGF1dG8mIHRy
YWNrID0gKm1fdGV4dFRyYWNrcy0+aXRlbShpKTsKICAgICAgICAgYXV0byBraW5kID0gdHJhY2su
a2luZCgpOwotICAgICAgICBpZiAoa2luZCA9PSBUZXh0VHJhY2tLaW5kOjpTdWJ0aXRsZXMgfHwg
a2luZCA9PSBUZXh0VHJhY2tLaW5kOjpDYXB0aW9ucykKKyAgICAgICAgaWYgKGtpbmQgPT0gVGV4
dFRyYWNrOjpLaW5kOjpTdWJ0aXRsZXMgfHwga2luZCA9PSBUZXh0VHJhY2s6OktpbmQ6OkNhcHRp
b25zKQogICAgICAgICAgICAgdHJhY2suc2V0SGFzQmVlbkNvbmZpZ3VyZWQoZmFsc2UpOwogICAg
IH0KIApAQCAtNjA4MCwzNCArNjA4MCwzNCBAQCBTdHJpbmcgSFRNTE1lZGlhRWxlbWVudDo6bWVk
aWFQbGF5ZXJVc2VyQWdlbnQoKSBjb25zdAogCiAjaWYgRU5BQkxFKEFWRl9DQVBUSU9OUykKIAot
c3RhdGljIGlubGluZSBQbGF0Zm9ybVRleHRUcmFjazo6VHJhY2tLaW5kIHRvUGxhdGZvcm0oVGV4
dFRyYWNrS2luZCBraW5kKQorc3RhdGljIGlubGluZSBQbGF0Zm9ybVRleHRUcmFjazo6VHJhY2tL
aW5kIHRvUGxhdGZvcm0oVGV4dFRyYWNrOjpLaW5kIGtpbmQpCiB7CiAgICAgc3dpdGNoIChraW5k
KSB7Ci0gICAgY2FzZSBUZXh0VHJhY2tLaW5kOjpDYXB0aW9uczoKKyAgICBjYXNlIFRleHRUcmFj
azo6S2luZDo6Q2FwdGlvbnM6CiAgICAgICAgIHJldHVybiBQbGF0Zm9ybVRleHRUcmFjazo6Q2Fw
dGlvbjsKLSAgICBjYXNlIFRleHRUcmFja0tpbmQ6OkNoYXB0ZXJzOgorICAgIGNhc2UgVGV4dFRy
YWNrOjpLaW5kOjpDaGFwdGVyczoKICAgICAgICAgcmV0dXJuIFBsYXRmb3JtVGV4dFRyYWNrOjpD
aGFwdGVyOwotICAgIGNhc2UgVGV4dFRyYWNrS2luZDo6RGVzY3JpcHRpb25zOgorICAgIGNhc2Ug
VGV4dFRyYWNrOjpLaW5kOjpEZXNjcmlwdGlvbnM6CiAgICAgICAgIHJldHVybiBQbGF0Zm9ybVRl
eHRUcmFjazo6RGVzY3JpcHRpb247Ci0gICAgY2FzZSBUZXh0VHJhY2tLaW5kOjpGb3JjZWQ6Cisg
ICAgY2FzZSBUZXh0VHJhY2s6OktpbmQ6OkZvcmNlZDoKICAgICAgICAgcmV0dXJuIFBsYXRmb3Jt
VGV4dFRyYWNrOjpGb3JjZWQ7Ci0gICAgY2FzZSBUZXh0VHJhY2tLaW5kOjpNZXRhZGF0YToKKyAg
ICBjYXNlIFRleHRUcmFjazo6S2luZDo6TWV0YWRhdGE6CiAgICAgICAgIHJldHVybiBQbGF0Zm9y
bVRleHRUcmFjazo6TWV0YURhdGE7Ci0gICAgY2FzZSBUZXh0VHJhY2tLaW5kOjpTdWJ0aXRsZXM6
CisgICAgY2FzZSBUZXh0VHJhY2s6OktpbmQ6OlN1YnRpdGxlczoKICAgICAgICAgcmV0dXJuIFBs
YXRmb3JtVGV4dFRyYWNrOjpTdWJ0aXRsZTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgcmV0dXJuIFBsYXRmb3JtVGV4dFRyYWNrOjpDYXB0aW9uOwogfQogCi1zdGF0aWMg
aW5saW5lIFBsYXRmb3JtVGV4dFRyYWNrOjpUcmFja01vZGUgdG9QbGF0Zm9ybShUZXh0VHJhY2tN
b2RlIG1vZGUpCitzdGF0aWMgaW5saW5lIFBsYXRmb3JtVGV4dFRyYWNrOjpUcmFja01vZGUgdG9Q
bGF0Zm9ybShUZXh0VHJhY2s6Ok1vZGUgbW9kZSkKIHsKICAgICBzd2l0Y2ggKG1vZGUpIHsKLSAg
ICBjYXNlIFRleHRUcmFja01vZGU6OkRpc2FibGVkOgorICAgIGNhc2UgVGV4dFRyYWNrOjpNb2Rl
OjpEaXNhYmxlZDoKICAgICAgICAgcmV0dXJuIFBsYXRmb3JtVGV4dFRyYWNrOjpEaXNhYmxlZDsK
LSAgICBjYXNlIFRleHRUcmFja01vZGU6OkhpZGRlbjoKKyAgICBjYXNlIFRleHRUcmFjazo6TW9k
ZTo6SGlkZGVuOgogICAgICAgICByZXR1cm4gUGxhdGZvcm1UZXh0VHJhY2s6OkhpZGRlbjsKLSAg
ICBjYXNlIFRleHRUcmFja01vZGU6OlNob3dpbmc6CisgICAgY2FzZSBUZXh0VHJhY2s6Ok1vZGU6
OlNob3dpbmc6CiAgICAgICAgIHJldHVybiBQbGF0Zm9ybVRleHRUcmFjazo6U2hvd2luZzsKICAg
ICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC02MTMxLDEzICs2MTMxLDEzIEBAIFZl
Y3RvcjxSZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2s+PiBIVE1MTWVkaWFFbGVtZW50OjpvdXRPZkJh
bmRUcmFja1NvdXJjZXMoKQogICAgICAgICAvLyBGSVhNRTogVGhlIHN3aXRjaCBzdGF0ZW1lbnQg
YmVsb3cgcHJlc2VydmVzIGV4aXN0aW5nIGJlaGF2aW9yIHdoZXJlIHdlIGlnbm9yZSBjaGFwdGVy
cyBhbmQgbWV0YWRhdGEgdHJhY2tzLgogICAgICAgICAvLyBJZiB3ZSBjb25maXJtIHRoaXMgYmVo
YXZpb3IgaXMgdmFsdWFibGUsIHdlIHNob3VsZCByZW1vdmUgdGhpcyBjb21tZW50LiBPdGhlcndp
c2UsIHJlbW92ZSBib3RoIGNvbW1lbnQgYW5kIHN3aXRjaC4KICAgICAgICAgc3dpdGNoIChraW5k
KSB7Ci0gICAgICAgIGNhc2UgVGV4dFRyYWNrS2luZDo6Q2FwdGlvbnM6Ci0gICAgICAgIGNhc2Ug
VGV4dFRyYWNrS2luZDo6RGVzY3JpcHRpb25zOgotICAgICAgICBjYXNlIFRleHRUcmFja0tpbmQ6
OkZvcmNlZDoKLSAgICAgICAgY2FzZSBUZXh0VHJhY2tLaW5kOjpTdWJ0aXRsZXM6CisgICAgICAg
IGNhc2UgVGV4dFRyYWNrOjpLaW5kOjpDYXB0aW9uczoKKyAgICAgICAgY2FzZSBUZXh0VHJhY2s6
OktpbmQ6OkRlc2NyaXB0aW9uczoKKyAgICAgICAgY2FzZSBUZXh0VHJhY2s6OktpbmQ6OkZvcmNl
ZDoKKyAgICAgICAgY2FzZSBUZXh0VHJhY2s6OktpbmQ6OlN1YnRpdGxlczoKICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIFRleHRUcmFja0tpbmQ6OkNoYXB0ZXJzOgotICAgICAgICBj
YXNlIFRleHRUcmFja0tpbmQ6Ok1ldGFkYXRhOgorICAgICAgICBjYXNlIFRleHRUcmFjazo6S2lu
ZDo6Q2hhcHRlcnM6CisgICAgICAgIGNhc2UgVGV4dFRyYWNrOjpLaW5kOjpNZXRhZGF0YToKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
cmFja0VsZW1lbnQuY3BwCmluZGV4IDQ1NGJjMjY0ZDkzOGUwNTE2OWI4NDRlMjA0ZWFlNTZhMDMx
NDVlMzAuLmMyMDFhYmUzYmM4NDcyNjMwNDdhYjJjNWNlNmM5YjZkMWEwYjlkNjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcApAQCAtMTc0LDcgKzE3NCw3IEBAIHZv
aWQgSFRNTFRyYWNrRWxlbWVudDo6c2NoZWR1bGVMb2FkKCkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgLy8gMi4gSWYgdGhlIHRleHQgdHJhY2sncyB0ZXh0IHRyYWNrIG1vZGUgaXMgbm90IHNldCB0
byBvbmUgb2YgaGlkZGVuIG9yIHNob3dpbmcsIGFib3J0IHRoZXNlIHN0ZXBzLgotICAgIGlmIChl
bnN1cmVUcmFjaygpLm1vZGUoKSAhPSBUZXh0VHJhY2tNb2RlOjpIaWRkZW4gJiYgZW5zdXJlVHJh
Y2soKS5tb2RlKCkgIT0gVGV4dFRyYWNrTW9kZTo6U2hvd2luZykKKyAgICBpZiAoZW5zdXJlVHJh
Y2soKS5tb2RlKCkgIT0gVGV4dFRyYWNrOjpNb2RlOjpIaWRkZW4gJiYgZW5zdXJlVHJhY2soKS5t
b2RlKCkgIT0gVGV4dFRyYWNrOjpNb2RlOjpTaG93aW5nKQogICAgICAgICByZXR1cm47CiAKICAg
ICAvLyAzLiBJZiB0aGUgdGV4dCB0cmFjaydzIHRyYWNrIGVsZW1lbnQgZG9lcyBub3QgaGF2ZSBh
IG1lZGlhIGVsZW1lbnQgYXMgYSBwYXJlbnQsIGFib3J0IHRoZXNlIHN0ZXBzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAppbmRleCBmNDkzMTM3ZWE3MzFjMjdjNTAxYWZiYzdk
MmQ3OTc1YTQwYjY1OThhLi45YTFkZjdiYWJhNDUyNDZkMmM4ZjA3ZWY4NTU2N2FlNWNmZWRlNWRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtMzQsOCArMzQsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxJbWFnZUxvYWRlcjsKIAotZW51bSBj
bGFzcyBWaWRlb1ByZXNlbnRhdGlvbk1vZGUgeyBGdWxsc2NyZWVuLCBQaWN0dXJlSW5QaWN0dXJl
LCBJbmxpbmUgfTsKLQogY2xhc3MgSFRNTFZpZGVvRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1M
TWVkaWFFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEhUTUxWaWRlb0VsZW1lbnQ+
IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBib29sKTsKQEAgLTQzLDcg
KzQxLDYgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIHZpZGVvV2lkdGgo
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCB2aWRlb0hlaWdodCgpIGNvbnN0
OwogCi0gICAgLy8gRnVsbHNjcmVlbgogICAgIHZvaWQgd2Via2l0RW50ZXJGdWxsc2NyZWVuKEV4
Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHdlYmtpdEV4aXRGdWxsc2NyZWVuKCk7CiAgICAgYm9v
bCB3ZWJraXRTdXBwb3J0c0Z1bGxzY3JlZW4oKTsKQEAgLTYyLDcgKzU5LDYgQEAgcHVibGljOgog
I2VuZGlmCiAKICNpZiBFTkFCTEUoTUVESUFfU1RBVElTVElDUykKLSAgICAvLyBTdGF0aXN0aWNz
CiAgICAgdW5zaWduZWQgd2Via2l0RGVjb2RlZEZyYW1lQ291bnQoKSBjb25zdDsKICAgICB1bnNp
Z25lZCB3ZWJraXREcm9wcGVkRnJhbWVDb3VudCgpIGNvbnN0OwogI2VuZGlmCkBAIC04Miw2ICs3
OCw3IEBAIHB1YmxpYzoKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJy
aWRlOwogCiAjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQorICAgIGVudW0gY2xh
c3MgVmlkZW9QcmVzZW50YXRpb25Nb2RlIHsgRnVsbHNjcmVlbiwgUGljdHVyZUluUGljdHVyZSwg
SW5saW5lIH07CiAgICAgYm9vbCB3ZWJraXRTdXBwb3J0c1ByZXNlbnRhdGlvbk1vZGUoVmlkZW9Q
cmVzZW50YXRpb25Nb2RlKSBjb25zdDsKICAgICB2b2lkIHdlYmtpdFNldFByZXNlbnRhdGlvbk1v
ZGUoVmlkZW9QcmVzZW50YXRpb25Nb2RlKTsKICAgICBWaWRlb1ByZXNlbnRhdGlvbk1vZGUgd2Vi
a2l0UHJlc2VudGF0aW9uTW9kZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVv
RWxlbWVudC5pZGwKaW5kZXggYzNjN2UxNzRlOWFlMDAyYmY0NWNmMTJlNjU2ODk0M2FhZTEzN2Zi
OC4uYjgyODU1ZTRjY2UxZGUyZWVkYWEwZDk0YTgwMzRkMzgwMzAwNTdlOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaWRsCkBAIC0yMyw5ICsyMyw2IEBACiAgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKICAqLwogCi0vLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgQ29uZGl0aW9uYWw9VklE
RU9fUFJFU0VOVEFUSU9OX01PREUuCi1lbnVtIFZpZGVvUHJlc2VudGF0aW9uTW9kZSB7ICJmdWxs
c2NyZWVuIiwgInBpY3R1cmUtaW4tcGljdHVyZSIsICJpbmxpbmUiIH07Ci0KIFsKICAgICBDb25k
aXRpb25hbD1WSURFTywKICAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCkBAIC02MywzICs2
MCw1IEBAIGVudW0gVmlkZW9QcmVzZW50YXRpb25Nb2RlIHsgImZ1bGxzY3JlZW4iLCAicGljdHVy
ZS1pbi1waWN0dXJlIiwgImlubGluZSIgfTsKICAgICBbQ29uZGl0aW9uYWw9VklERU9fUFJFU0VO
VEFUSU9OX01PREVdIHZvaWQgd2Via2l0U2V0UHJlc2VudGF0aW9uTW9kZShWaWRlb1ByZXNlbnRh
dGlvbk1vZGUgbW9kZSk7CiAjZW5kaWYKIH07CisKK1tDb25kaXRpb25hbD1WSURFT19QUkVTRU5U
QVRJT05fTU9ERV0gZW51bSBWaWRlb1ByZXNlbnRhdGlvbk1vZGUgeyAiZnVsbHNjcmVlbiIsICJw
aWN0dXJlLWluLXBpY3R1cmUiLCAiaW5saW5lIiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggN2VhN2U0
NTQwMzgzYTFhOTQ1NWEwNjY4YjhiOGFiMDAxZmZkNTM5Ni4uZjJhZTBhMWYzMmRjNTQ3Zjg0NGFj
M2Q1NmFlODA4MTI4YjEzZGFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC03Niw5ICs3Niw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKICNpZiBVU0Uo
Q0cpCi1jb25zdCBJbWFnZVNtb290aGluZ1F1YWxpdHkgZGVmYXVsdFNtb290aGluZ1F1YWxpdHkg
PSBJbWFnZVNtb290aGluZ1F1YWxpdHk6OkxvdzsKK2NvbnN0IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6SW1hZ2VTbW9vdGhpbmdRdWFsaXR5IGRlZmF1bHRTbW9vdGhpbmdRdWFsaXR5ID0gQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpJbWFnZVNtb290aGluZ1F1YWxpdHk6OkxvdzsKICNlbHNl
Ci1jb25zdCBJbWFnZVNtb290aGluZ1F1YWxpdHkgZGVmYXVsdFNtb290aGluZ1F1YWxpdHkgPSBJ
bWFnZVNtb290aGluZ1F1YWxpdHk6Ok1lZGl1bTsKK2NvbnN0IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6SW1hZ2VTbW9vdGhpbmdRdWFsaXR5IGRlZmF1bHRTbW9vdGhpbmdRdWFsaXR5ID0gQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpJbWFnZVNtb290aGluZ1F1YWxpdHk6Ok1lZGl1bTsKICNl
bmRpZgogCiBzdGF0aWMgY29uc3QgaW50IGRlZmF1bHRGb250U2l6ZSA9IDEwOwpAQCAtOTMwLDEy
ICs5MzAsMTIgQEAgc3RhdGljIGJvb2wgaXNGdWxsQ2FudmFzQ29tcG9zaXRlTW9kZShDb21wb3Np
dGVPcGVyYXRvciBvcCkKICAgICByZXR1cm4gb3AgPT0gQ29tcG9zaXRlU291cmNlSW4gfHwgb3Ag
PT0gQ29tcG9zaXRlU291cmNlT3V0IHx8IG9wID09IENvbXBvc2l0ZURlc3RpbmF0aW9uSW4gfHwg
b3AgPT0gQ29tcG9zaXRlRGVzdGluYXRpb25BdG9wOwogfQogCi1zdGF0aWMgV2luZFJ1bGUgdG9X
aW5kUnVsZShDYW52YXNXaW5kaW5nUnVsZSBydWxlKQorc3RhdGljIFdpbmRSdWxlIHRvV2luZFJ1
bGUoQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpXaW5kaW5nUnVsZSBydWxlKQogewotICAgIHJl
dHVybiBydWxlID09IENhbnZhc1dpbmRpbmdSdWxlOjpOb256ZXJvID8gUlVMRV9OT05aRVJPIDog
UlVMRV9FVkVOT0REOworICAgIHJldHVybiBydWxlID09IENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6V2luZGluZ1J1bGU6Ok5vbnplcm8gPyBSVUxFX05PTlpFUk8gOiBSVUxFX0VWRU5PREQ7CiB9
CiAKLXZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmaWxsKENhbnZhc1dpbmRpbmdSdWxl
IHdpbmRpbmdSdWxlKQordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGwoV2luZGlu
Z1J1bGUgd2luZGluZ1J1bGUpCiB7CiAgICAgZmlsbEludGVybmFsKG1fcGF0aCwgd2luZGluZ1J1
bGUpOwogCkBAIC05NTMsNyArOTUzLDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OnN0cm9rZSgpCiAjZW5kaWYKIH0KIAotdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNs
aXAoQ2FudmFzV2luZGluZ1J1bGUgd2luZGluZ1J1bGUpCit2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6Y2xpcChXaW5kaW5nUnVsZSB3aW5kaW5nUnVsZSkKIHsKICAgICBjbGlwSW50ZXJu
YWwobV9wYXRoLCB3aW5kaW5nUnVsZSk7CiAKQEAgLTk2Miw3ICs5NjIsNyBAQCB2b2lkIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6Y2xpcChDYW52YXNXaW5kaW5nUnVsZSB3aW5kaW5nUnVsZSkK
ICNlbmRpZgogfQogCi12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbChET01QYXRo
JiBwYXRoLCBDYW52YXNXaW5kaW5nUnVsZSB3aW5kaW5nUnVsZSkKK3ZvaWQgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpmaWxsKERPTVBhdGgmIHBhdGgsIFdpbmRpbmdSdWxlIHdpbmRpbmdSdWxl
KQogewogICAgIGZpbGxJbnRlcm5hbChwYXRoLnBhdGgoKSwgd2luZGluZ1J1bGUpOwogfQpAQCAt
OTcyLDEyICs5NzIsMTIgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnN0cm9rZShE
T01QYXRoJiBwYXRoKQogICAgIHN0cm9rZUludGVybmFsKHBhdGgucGF0aCgpKTsKIH0KIAotdm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsaXAoRE9NUGF0aCYgcGF0aCwgQ2FudmFzV2lu
ZGluZ1J1bGUgd2luZGluZ1J1bGUpCit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y2xp
cChET01QYXRoJiBwYXRoLCBXaW5kaW5nUnVsZSB3aW5kaW5nUnVsZSkKIHsKICAgICBjbGlwSW50
ZXJuYWwocGF0aC5wYXRoKCksIHdpbmRpbmdSdWxlKTsKIH0KIAotdm9pZCBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OmZpbGxJbnRlcm5hbChjb25zdCBQYXRoJiBwYXRoLCBDYW52YXNXaW5kaW5n
UnVsZSB3aW5kaW5nUnVsZSkKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmaWxsSW50
ZXJuYWwoY29uc3QgUGF0aCYgcGF0aCwgV2luZGluZ1J1bGUgd2luZGluZ1J1bGUpCiB7CiAgICAg
R3JhcGhpY3NDb250ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQoKTsKICAgICBpZiAoIWMpCkBAIC0x
MDQ0LDcgKzEwNDQsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c3Ryb2tlSW50
ZXJuYWwoY29uc3QgUGF0aCYgcGF0aCkKICAgICB9CiB9CiAKLXZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpjbGlwSW50ZXJuYWwoY29uc3QgUGF0aCYgcGF0aCwgQ2FudmFzV2luZGluZ1J1
bGUgd2luZGluZ1J1bGUpCit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y2xpcEludGVy
bmFsKGNvbnN0IFBhdGgmIHBhdGgsIFdpbmRpbmdSdWxlIHdpbmRpbmdSdWxlKQogewogICAgIEdy
YXBoaWNzQ29udGV4dCogYyA9IGRyYXdpbmdDb250ZXh0KCk7CiAgICAgaWYgKCFjKQpAQCAtMTA3
MCw3ICsxMDcwLDcgQEAgaW5saW5lIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjplbmRD
b21wb3NpdGVMYXllcigpCiAjZW5kaWYKIH0KIAotYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OmlzUG9pbnRJblBhdGgoZmxvYXQgeCwgZmxvYXQgeSwgQ2FudmFzV2luZGluZ1J1bGUgd2lu
ZGluZ1J1bGUpCitib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6aXNQb2ludEluUGF0aChm
bG9hdCB4LCBmbG9hdCB5LCBXaW5kaW5nUnVsZSB3aW5kaW5nUnVsZSkKIHsKICAgICByZXR1cm4g
aXNQb2ludEluUGF0aEludGVybmFsKG1fcGF0aCwgeCwgeSwgd2luZGluZ1J1bGUpOwogfQpAQCAt
MTA4MCw3ICsxMDgwLDcgQEAgYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmlzUG9pbnRJ
blN0cm9rZShmbG9hdCB4LCBmbG9hdCB5KQogICAgIHJldHVybiBpc1BvaW50SW5TdHJva2VJbnRl
cm5hbChtX3BhdGgsIHgsIHkpOwogfQogCi1ib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
aXNQb2ludEluUGF0aChET01QYXRoJiBwYXRoLCBmbG9hdCB4LCBmbG9hdCB5LCBDYW52YXNXaW5k
aW5nUnVsZSB3aW5kaW5nUnVsZSkKK2Jvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjppc1Bv
aW50SW5QYXRoKERPTVBhdGgmIHBhdGgsIGZsb2F0IHgsIGZsb2F0IHksIFdpbmRpbmdSdWxlIHdp
bmRpbmdSdWxlKQogewogICAgIHJldHVybiBpc1BvaW50SW5QYXRoSW50ZXJuYWwocGF0aC5wYXRo
KCksIHgsIHksIHdpbmRpbmdSdWxlKTsKIH0KQEAgLTEwOTAsNyArMTA5MCw3IEBAIGJvb2wgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjppc1BvaW50SW5TdHJva2UoRE9NUGF0aCYgcGF0aCwgZmxv
YXQgeCwgZmxvYXQgeSkKICAgICByZXR1cm4gaXNQb2ludEluU3Ryb2tlSW50ZXJuYWwocGF0aC5w
YXRoKCksIHgsIHkpOwogfQogCi1ib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6aXNQb2lu
dEluUGF0aEludGVybmFsKGNvbnN0IFBhdGgmIHBhdGgsIGZsb2F0IHgsIGZsb2F0IHksIENhbnZh
c1dpbmRpbmdSdWxlIHdpbmRpbmdSdWxlKQorYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OmlzUG9pbnRJblBhdGhJbnRlcm5hbChjb25zdCBQYXRoJiBwYXRoLCBmbG9hdCB4LCBmbG9hdCB5
LCBXaW5kaW5nUnVsZSB3aW5kaW5nUnVsZSkKIHsKICAgICBHcmFwaGljc0NvbnRleHQqIGMgPSBk
cmF3aW5nQ29udGV4dCgpOwogICAgIGlmICghYykKQEAgLTI1MzcsMTQgKzI1MzcsMTQgQEAgUGxh
dGZvcm1MYXllciogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpwbGF0Zm9ybUxheWVyKCkgY29u
c3QKIH0KICNlbmRpZgogCi1zdGF0aWMgSW50ZXJwb2xhdGlvblF1YWxpdHkgc21vb3RoaW5nVG9J
bnRlcnBvbGF0aW9uUXVhbGl0eShJbWFnZVNtb290aGluZ1F1YWxpdHkgcXVhbGl0eSkKK3N0YXRp
YyBJbnRlcnBvbGF0aW9uUXVhbGl0eSBzbW9vdGhpbmdUb0ludGVycG9sYXRpb25RdWFsaXR5KENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6SW1hZ2VTbW9vdGhpbmdRdWFsaXR5IHF1YWxpdHkpCiB7
CiAgICAgc3dpdGNoIChxdWFsaXR5KSB7Ci0gICAgY2FzZSBJbWFnZVNtb290aGluZ1F1YWxpdHk6
OkxvdzoKKyAgICBjYXNlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6SW1hZ2VTbW9vdGhpbmdR
dWFsaXR5OjpMb3c6CiAgICAgICAgIHJldHVybiBJbnRlcnBvbGF0aW9uTG93OwotICAgIGNhc2Ug
SW1hZ2VTbW9vdGhpbmdRdWFsaXR5OjpNZWRpdW06CisgICAgY2FzZSBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OkltYWdlU21vb3RoaW5nUXVhbGl0eTo6TWVkaXVtOgogICAgICAgICByZXR1cm4g
SW50ZXJwb2xhdGlvbk1lZGl1bTsKLSAgICBjYXNlIEltYWdlU21vb3RoaW5nUXVhbGl0eTo6SGln
aDoKKyAgICBjYXNlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6SW1hZ2VTbW9vdGhpbmdRdWFs
aXR5OjpIaWdoOgogICAgICAgICByZXR1cm4gSW50ZXJwb2xhdGlvbkhpZ2g7CiAgICAgfQogCkBA
IC0yNTUyLDcgKzI1NTIsNyBAQCBzdGF0aWMgSW50ZXJwb2xhdGlvblF1YWxpdHkgc21vb3RoaW5n
VG9JbnRlcnBvbGF0aW9uUXVhbGl0eShJbWFnZVNtb290aGluZ1F1YWxpdAogICAgIHJldHVybiBJ
bnRlcnBvbGF0aW9uTG93OwogfTsKIAotSW1hZ2VTbW9vdGhpbmdRdWFsaXR5IENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6aW1hZ2VTbW9vdGhpbmdRdWFsaXR5KCkgY29uc3QKK2F1dG8gQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjppbWFnZVNtb290aGluZ1F1YWxpdHkoKSBjb25zdCAtPiBJbWFn
ZVNtb290aGluZ1F1YWxpdHkKIHsKICAgICByZXR1cm4gc3RhdGUoKS5pbWFnZVNtb290aGluZ1F1
YWxpdHk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5oCmluZGV4IGJjMDYyYWVlZWQyMzYyMDg4ODVmMGQ5OWZiYWVkYjkz
Mzg4MmE5OTUuLjkxYmQ4NTY5ZTMyMjIzNjFjYzYyZGQxNDVhM2VkMjM2ZDQyODQ0NjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5oCkBAIC01Nyw5ICs1Nyw2IEBAIGNsYXNzIFRleHRNZXRyaWNzOwogCiB0eXBlZGVmIGlu
dCBFeGNlcHRpb25Db2RlOwogCi1lbnVtIGNsYXNzIENhbnZhc1dpbmRpbmdSdWxlIHsgTm9uemVy
bywgRXZlbm9kZCB9OwotZW51bSBjbGFzcyBJbWFnZVNtb290aGluZ1F1YWxpdHkgeyBMb3csIE1l
ZGl1bSwgSGlnaCB9OwotCiBjbGFzcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgZmluYWwgOiBw
dWJsaWMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCwgcHVibGljIENhbnZhc1BhdGhNZXRob2RzIHsK
IHB1YmxpYzoKICAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQoSFRNTENhbnZhc0VsZW1lbnQq
LCBib29sIHVzZXNDU1NDb21wYXRpYmlsaXR5UGFyc2VNb2RlLCBib29sIHVzZXNEYXNoYm9hcmRD
b21wYXRpYmlsaXR5TW9kZSk7CkBAIC0xMzEsMTggKzEyOCwyMCBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGJlZ2luUGF0aCgpOwogCi0gICAgdm9pZCBmaWxsKENhbnZhc1dpbmRpbmdSdWxlID0gQ2Fu
dmFzV2luZGluZ1J1bGU6Ok5vbnplcm8pOworICAgIGVudW0gY2xhc3MgV2luZGluZ1J1bGUgeyBO
b256ZXJvLCBFdmVub2RkIH07CisKKyAgICB2b2lkIGZpbGwoV2luZGluZ1J1bGUgPSBXaW5kaW5n
UnVsZTo6Tm9uemVybyk7CiAgICAgdm9pZCBzdHJva2UoKTsKLSAgICB2b2lkIGNsaXAoQ2FudmFz
V2luZGluZ1J1bGUgPSBDYW52YXNXaW5kaW5nUnVsZTo6Tm9uemVybyk7CisgICAgdm9pZCBjbGlw
KFdpbmRpbmdSdWxlID0gV2luZGluZ1J1bGU6Ok5vbnplcm8pOwogCi0gICAgdm9pZCBmaWxsKERP
TVBhdGgmLCBDYW52YXNXaW5kaW5nUnVsZSA9IENhbnZhc1dpbmRpbmdSdWxlOjpOb256ZXJvKTsK
KyAgICB2b2lkIGZpbGwoRE9NUGF0aCYsIFdpbmRpbmdSdWxlID0gV2luZGluZ1J1bGU6Ok5vbnpl
cm8pOwogICAgIHZvaWQgc3Ryb2tlKERPTVBhdGgmKTsKLSAgICB2b2lkIGNsaXAoRE9NUGF0aCYs
IENhbnZhc1dpbmRpbmdSdWxlID0gQ2FudmFzV2luZGluZ1J1bGU6Ok5vbnplcm8pOworICAgIHZv
aWQgY2xpcChET01QYXRoJiwgV2luZGluZ1J1bGUgPSBXaW5kaW5nUnVsZTo6Tm9uemVybyk7CiAK
LSAgICBib29sIGlzUG9pbnRJblBhdGgoZmxvYXQgeCwgZmxvYXQgeSwgQ2FudmFzV2luZGluZ1J1
bGUgPSBDYW52YXNXaW5kaW5nUnVsZTo6Tm9uemVybyk7CisgICAgYm9vbCBpc1BvaW50SW5QYXRo
KGZsb2F0IHgsIGZsb2F0IHksIFdpbmRpbmdSdWxlID0gV2luZGluZ1J1bGU6Ok5vbnplcm8pOwog
ICAgIGJvb2wgaXNQb2ludEluU3Ryb2tlKGZsb2F0IHgsIGZsb2F0IHkpOwogCi0gICAgYm9vbCBp
c1BvaW50SW5QYXRoKERPTVBhdGgmLCBmbG9hdCB4LCBmbG9hdCB5LCBDYW52YXNXaW5kaW5nUnVs
ZSA9IENhbnZhc1dpbmRpbmdSdWxlOjpOb256ZXJvKTsKKyAgICBib29sIGlzUG9pbnRJblBhdGgo
RE9NUGF0aCYsIGZsb2F0IHgsIGZsb2F0IHksIFdpbmRpbmdSdWxlID0gV2luZGluZ1J1bGU6Ok5v
bnplcm8pOwogICAgIGJvb2wgaXNQb2ludEluU3Ryb2tlKERPTVBhdGgmLCBmbG9hdCB4LCBmbG9h
dCB5KTsKIAogICAgIHZvaWQgY2xlYXJSZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRo
LCBmbG9hdCBoZWlnaHQpOwpAQCAtMjIyLDYgKzIyMSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlt
YWdlU21vb3RoaW5nRW5hYmxlZCgpIGNvbnN0OwogICAgIHZvaWQgc2V0SW1hZ2VTbW9vdGhpbmdF
bmFibGVkKGJvb2wpOwogCisgICAgZW51bSBjbGFzcyBJbWFnZVNtb290aGluZ1F1YWxpdHkgeyBM
b3csIE1lZGl1bSwgSGlnaCB9OwogICAgIEltYWdlU21vb3RoaW5nUXVhbGl0eSBpbWFnZVNtb290
aGluZ1F1YWxpdHkoKSBjb25zdDsKICAgICB2b2lkIHNldEltYWdlU21vb3RoaW5nUXVhbGl0eShJ
bWFnZVNtb290aGluZ1F1YWxpdHkpOwogCkBAIC0zNDUsMTEgKzM0NSwxMSBAQCBwcml2YXRlOgog
ICAgIHZvaWQgYmVnaW5Db21wb3NpdGVMYXllcigpOwogICAgIHZvaWQgZW5kQ29tcG9zaXRlTGF5
ZXIoKTsKIAotICAgIHZvaWQgZmlsbEludGVybmFsKGNvbnN0IFBhdGgmLCBDYW52YXNXaW5kaW5n
UnVsZSk7CisgICAgdm9pZCBmaWxsSW50ZXJuYWwoY29uc3QgUGF0aCYsIFdpbmRpbmdSdWxlKTsK
ICAgICB2b2lkIHN0cm9rZUludGVybmFsKGNvbnN0IFBhdGgmKTsKLSAgICB2b2lkIGNsaXBJbnRl
cm5hbChjb25zdCBQYXRoJiwgQ2FudmFzV2luZGluZ1J1bGUpOworICAgIHZvaWQgY2xpcEludGVy
bmFsKGNvbnN0IFBhdGgmLCBXaW5kaW5nUnVsZSk7CiAKLSAgICBib29sIGlzUG9pbnRJblBhdGhJ
bnRlcm5hbChjb25zdCBQYXRoJiwgZmxvYXQgeCwgZmxvYXQgeSwgQ2FudmFzV2luZGluZ1J1bGUp
OworICAgIGJvb2wgaXNQb2ludEluUGF0aEludGVybmFsKGNvbnN0IFBhdGgmLCBmbG9hdCB4LCBm
bG9hdCB5LCBXaW5kaW5nUnVsZSk7CiAgICAgYm9vbCBpc1BvaW50SW5TdHJva2VJbnRlcm5hbChj
b25zdCBQYXRoJiwgZmxvYXQgeCwgZmxvYXQgeSk7CiAKICAgICB2b2lkIGRyYXdGb2N1c0lmTmVl
ZGVkSW50ZXJuYWwoY29uc3QgUGF0aCYsIEVsZW1lbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAppbmRleCBkOWMxZjlkY2Ux
YzE4NzQ0ZGJiZGYzYzhjZjk3NTZhYjMxN2FlZTA0Li5kYzQzZTJjNDMwOWU5MjI4ZjQ3OWQ5YWI1
MTcxMWI0NjIxNTI4YzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sRWxlbWVudHMuY3BwCkBAIC03NjUsNyArNzY1LDcgQEAgdm9pZCBNZWRpYUNv
bnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OnVwZGF0ZURpc3BsYXkoKQogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoZGlzcGxheU1vZGUg
IT0gQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6QXV0b21hdGljICYmIHRleHRUcmFjay0+bW9kZSgp
ID09IFRleHRUcmFja01vZGU6OlNob3dpbmcpIHsKKyAgICAgICAgaWYgKGRpc3BsYXlNb2RlICE9
IENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkF1dG9tYXRpYyAmJiB0ZXh0VHJhY2stPm1vZGUoKSA9
PSBUZXh0VHJhY2s6Ok1vZGU6OlNob3dpbmcpIHsKICAgICAgICAgICAgIHRyYWNrTWVudUl0ZW1T
ZWxlY3RlZCA9IHRydWU7CiAgICAgICAgICAgICB0cmFja0l0ZW0tPmNsYXNzTGlzdCgpLmFkZChz
ZWxlY3RlZENsYXNzVmFsdWUsIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgICAgICB9IGVsc2UK
QEAgLTExNzMsNyArMTE3Myw3IEBAIHZvaWQgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVy
RWxlbWVudDo6dXBkYXRlRGlzcGxheSgpCiAgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhQ29udHJv
bFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZURpc3BsYXkoJXApIC0gYWRkaW5nIGFu
ZCBwb3NpdGlvbmluZyBjdWUgIyV6dTogXCIlc1wiLCBzdGFydD0lLjJmLCBlbmQ9JS4yZiwgbGlu
ZT0lLjJmIiwgdGhpcywgaSwgY3VlLT50ZXh0KCkudXRmOCgpLmRhdGEoKSwgY3VlLT5zdGFydFRp
bWUoKSwgY3VlLT5lbmRUaW1lKCksIGN1ZS0+bGluZSgpKTsKIAogICAgICAgICBSZWZQdHI8VlRU
Q3VlQm94PiBkaXNwbGF5Qm94ID0gY3VlLT5nZXREaXNwbGF5VHJlZShtX3ZpZGVvRGlzcGxheVNp
emUuc2l6ZSgpLCBtX2ZvbnRTaXplKTsKLSAgICAgICAgaWYgKGN1ZS0+dHJhY2soKS0+bW9kZSgp
ID09IFRleHRUcmFja01vZGU6OkRpc2FibGVkKQorICAgICAgICBpZiAoY3VlLT50cmFjaygpLT5t
b2RlKCkgPT0gVGV4dFRyYWNrOjpNb2RlOjpEaXNhYmxlZCkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCiAgICAgICAgIFZUVFJlZ2lvbiogcmVnaW9uID0gY3VlLT50cmFjaygpLT5yZWdpb25zKCkt
PmdldFJlZ2lvbkJ5SWQoY3VlLT5yZWdpb25JZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svSW5iYW5kVGV4dFRyYWNrLmNwcAppbmRleCAzYzEwYTQ0ZGQ3MjQ0ZTQ4ZTdmY2ZmM2Iw
MzM5ZTk1ZDZlMmI2ODExLi5mMDYyODYyYjQ1Y2Q5NDA2ODkwZmU3ZDUwMTRlZjIzN2RmZjEzODUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwCkBA
IC04OSwyNyArODksMjcgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2s6OnNldFByaXZhdGUoUGFzc1Jl
ZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPiB0cmFja1ByaXZhdGUKICAgICB1cGRhdGVLaW5k
RnJvbVByaXZhdGUoKTsKIH0KIAotdm9pZCBJbmJhbmRUZXh0VHJhY2s6OnNldE1vZGUoVGV4dFRy
YWNrTW9kZSBtb2RlKQordm9pZCBJbmJhbmRUZXh0VHJhY2s6OnNldE1vZGUoTW9kZSBtb2RlKQog
ewogICAgIFRleHRUcmFjazo6c2V0TW9kZShtb2RlKTsKICAgICBzZXRNb2RlSW50ZXJuYWwobW9k
ZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6TW9kZSB0b1By
aXZhdGUoVGV4dFRyYWNrTW9kZSBtb2RlKQorc3RhdGljIGlubGluZSBJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlOjpNb2RlIHRvUHJpdmF0ZShUZXh0VHJhY2s6Ok1vZGUgbW9kZSkKIHsKICAgICBzd2l0
Y2ggKG1vZGUpIHsKLSAgICBjYXNlIFRleHRUcmFja01vZGU6OkRpc2FibGVkOgorICAgIGNhc2Ug
VGV4dFRyYWNrOjpNb2RlOjpEaXNhYmxlZDoKICAgICAgICAgcmV0dXJuIEluYmFuZFRleHRUcmFj
a1ByaXZhdGU6OkRpc2FibGVkOwotICAgIGNhc2UgVGV4dFRyYWNrTW9kZTo6SGlkZGVuOgorICAg
IGNhc2UgVGV4dFRyYWNrOjpNb2RlOjpIaWRkZW46CiAgICAgICAgIHJldHVybiBJbmJhbmRUZXh0
VHJhY2tQcml2YXRlOjpIaWRkZW47Ci0gICAgY2FzZSBUZXh0VHJhY2tNb2RlOjpTaG93aW5nOgor
ICAgIGNhc2UgVGV4dFRyYWNrOjpNb2RlOjpTaG93aW5nOgogICAgICAgICByZXR1cm4gSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZTo6U2hvd2luZzsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgcmV0dXJuIEluYmFuZFRleHRUcmFja1ByaXZhdGU6OkRpc2FibGVkOwogfQogCi12
b2lkIEluYmFuZFRleHRUcmFjazo6c2V0TW9kZUludGVybmFsKFRleHRUcmFja01vZGUgbW9kZSkK
K3ZvaWQgSW5iYW5kVGV4dFRyYWNrOjpzZXRNb2RlSW50ZXJuYWwoTW9kZSBtb2RlKQogewogICAg
IG1fcHJpdmF0ZS0+c2V0TW9kZSh0b1ByaXZhdGUobW9kZSkpOwogfQpAQCAtMTk2LDIyICsxOTYs
MjIgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2s6OnVwZGF0ZUtpbmRGcm9tUHJpdmF0ZSgpCiB7CiAg
ICAgc3dpdGNoIChtX3ByaXZhdGUtPmtpbmQoKSkgewogICAgIGNhc2UgSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZTo6U3VidGl0bGVzOgotICAgICAgICBzZXRLaW5kKFRleHRUcmFja0tpbmQ6OlN1YnRp
dGxlcyk7CisgICAgICAgIHNldEtpbmQoS2luZDo6U3VidGl0bGVzKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpDYXB0aW9uczoKLSAgICAgICAgc2V0
S2luZChUZXh0VHJhY2tLaW5kOjpDYXB0aW9ucyk7CisgICAgICAgIHNldEtpbmQoS2luZDo6Q2Fw
dGlvbnMpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEluYmFuZFRleHRUcmFja1ByaXZhdGU6
OkRlc2NyaXB0aW9uczoKLSAgICAgICAgc2V0S2luZChUZXh0VHJhY2tLaW5kOjpEZXNjcmlwdGlv
bnMpOworICAgICAgICBzZXRLaW5kKEtpbmQ6OkRlc2NyaXB0aW9ucyk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6Q2hhcHRlcnM6Ci0gICAgICAgIHNl
dEtpbmQoVGV4dFRyYWNrS2luZDo6Q2hhcHRlcnMpOworICAgICAgICBzZXRLaW5kKEtpbmQ6OkNo
YXB0ZXJzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
OjpNZXRhZGF0YToKLSAgICAgICAgc2V0S2luZChUZXh0VHJhY2tLaW5kOjpNZXRhZGF0YSk7Cisg
ICAgICAgIHNldEtpbmQoS2luZDo6TWV0YWRhdGEpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEluYmFuZFRleHRUcmFja1ByaXZhdGU6OkZvcmNlZDoKLSAgICAgICAgc2V0S2luZChUZXh0VHJh
Y2tLaW5kOjpGb3JjZWQpOworICAgICAgICBzZXRLaW5kKEtpbmQ6OkZvcmNlZCk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6Tm9uZToKICAgICBkZWZh
dWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJh
Y2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmgKaW5kZXgg
YTNhYTAxMDE2MTViNjY4OWM3OTU1ZGI2YjU4Yzc2NDMxNWU2YjYyYi4uZTVmOGQyYjZkMWJmZDg1
NjNhYWYzNjNmOWZhZWMxZWU4ODM5Nzk4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9JbmJhbmRUZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L0luYmFuZFRleHRUcmFjay5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGNv
bnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNN
YWluUHJvZ3JhbUNvbnRlbnQoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzRWFzeVRvUmVh
ZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgc2V0TW9kZShUZXh0VHJhY2tNb2RlKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHNldE1vZGUoTW9kZSkgb3ZlcnJpZGU7CiAgICAgc2l6ZV90IGluYmFu
ZFRyYWNrSW5kZXgoKTsKIAogICAgIEF0b21pY1N0cmluZyBpbkJhbmRNZXRhZGF0YVRyYWNrRGlz
cGF0Y2hUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKIHBy
b3RlY3RlZDoKICAgICBJbmJhbmRUZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFRl
eHRUcmFja0NsaWVudCosIFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4pOwogCi0g
ICAgdm9pZCBzZXRNb2RlSW50ZXJuYWwoVGV4dFRyYWNrTW9kZSk7CisgICAgdm9pZCBzZXRNb2Rl
SW50ZXJuYWwoTW9kZSk7CiAgICAgdm9pZCB1cGRhdGVLaW5kRnJvbVByaXZhdGUoKTsKIAogICAg
IFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPiBtX3ByaXZhdGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RleHRUcmFjay5jcHAKaW5kZXggYTdkODFiZTcxN2RjMTVmYmZhODk2YmU2NTYz
YWFiYmY0NzYwNjA5ZC4uMzE4ODc4MWRiZjVmNDk1MDIxNzQ0YTA0MzhiYzdhN2IyMzkzMGNhOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcApAQCAtMTA0LDE1ICsxMDQs
MTUgQEAgVGV4dFRyYWNrOjpUZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgVGV4dFRyYWNrQ2xpZW50KiBjbGllbnQsIGMKICAgICAsIG1fcmVuZGVyZWRUcmFja0luZGV4
KGludmFsaWRUcmFja0luZGV4KQogewogICAgIGlmIChraW5kID09IGNhcHRpb25zS2V5d29yZCgp
KQotICAgICAgICBtX2tpbmQgPSBUZXh0VHJhY2tLaW5kOjpDYXB0aW9uczsKKyAgICAgICAgbV9r
aW5kID0gS2luZDo6Q2FwdGlvbnM7CiAgICAgZWxzZSBpZiAoa2luZCA9PSBjaGFwdGVyc0tleXdv
cmQoKSkKLSAgICAgICAgbV9raW5kID0gVGV4dFRyYWNrS2luZDo6Q2hhcHRlcnM7CisgICAgICAg
IG1fa2luZCA9IEtpbmQ6OkNoYXB0ZXJzOwogICAgIGVsc2UgaWYgKGtpbmQgPT0gZGVzY3JpcHRp
b25zS2V5d29yZCgpKQotICAgICAgICBtX2tpbmQgPSBUZXh0VHJhY2tLaW5kOjpEZXNjcmlwdGlv
bnM7CisgICAgICAgIG1fa2luZCA9IEtpbmQ6OkRlc2NyaXB0aW9uczsKICAgICBlbHNlIGlmIChr
aW5kID09IGZvcmNlZEtleXdvcmQoKSkKLSAgICAgICAgbV9raW5kID0gVGV4dFRyYWNrS2luZDo6
Rm9yY2VkOworICAgICAgICBtX2tpbmQgPSBLaW5kOjpGb3JjZWQ7CiAgICAgZWxzZSBpZiAoa2lu
ZCA9PSBtZXRhZGF0YUtleXdvcmQoKSkKLSAgICAgICAgbV9raW5kID0gVGV4dFRyYWNrS2luZDo6
TWV0YWRhdGE7CisgICAgICAgIG1fa2luZCA9IEtpbmQ6Ok1ldGFkYXRhOwogfQogCiBUZXh0VHJh
Y2s6On5UZXh0VHJhY2soKQpAQCAtMTMyLDcgKzEzMiw3IEBAIFRleHRUcmFjazo6flRleHRUcmFj
aygpCiAKIGJvb2wgVGV4dFRyYWNrOjplbmFibGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9t
b2RlICE9IFRleHRUcmFja01vZGU6OkRpc2FibGVkOworICAgIHJldHVybiBtX21vZGUgIT0gTW9k
ZTo6RGlzYWJsZWQ7CiB9CiAKIGJvb2wgVGV4dFRyYWNrOjppc1ZhbGlkS2luZEtleXdvcmQoY29u
c3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKQEAgLTE1NiwyNCArMTU2LDI0IEBAIGJvb2wgVGV4dFRy
YWNrOjppc1ZhbGlkS2luZEtleXdvcmQoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIGNvbnN0
IEF0b21pY1N0cmluZyYgVGV4dFRyYWNrOjpraW5kS2V5d29yZCgpIGNvbnN0CiB7CiAgICAgc3dp
dGNoIChtX2tpbmQpIHsKLSAgICBjYXNlIFRleHRUcmFja0tpbmQ6OkNhcHRpb25zOgorICAgIGNh
c2UgS2luZDo6Q2FwdGlvbnM6CiAgICAgICAgIHJldHVybiBjYXB0aW9uc0tleXdvcmQoKTsKLSAg
ICBjYXNlIFRleHRUcmFja0tpbmQ6OkNoYXB0ZXJzOgorICAgIGNhc2UgS2luZDo6Q2hhcHRlcnM6
CiAgICAgICAgIHJldHVybiBjaGFwdGVyc0tleXdvcmQoKTsKLSAgICBjYXNlIFRleHRUcmFja0tp
bmQ6OkRlc2NyaXB0aW9uczoKKyAgICBjYXNlIEtpbmQ6OkRlc2NyaXB0aW9uczoKICAgICAgICAg
cmV0dXJuIGRlc2NyaXB0aW9uc0tleXdvcmQoKTsKLSAgICBjYXNlIFRleHRUcmFja0tpbmQ6OkZv
cmNlZDoKKyAgICBjYXNlIEtpbmQ6OkZvcmNlZDoKICAgICAgICAgcmV0dXJuIGZvcmNlZEtleXdv
cmQoKTsKLSAgICBjYXNlIFRleHRUcmFja0tpbmQ6Ok1ldGFkYXRhOgorICAgIGNhc2UgS2luZDo6
TWV0YWRhdGE6CiAgICAgICAgIHJldHVybiBtZXRhZGF0YUtleXdvcmQoKTsKLSAgICBjYXNlIFRl
eHRUcmFja0tpbmQ6OlN1YnRpdGxlczoKKyAgICBjYXNlIEtpbmQ6OlN1YnRpdGxlczoKICAgICAg
ICAgcmV0dXJuIHN1YnRpdGxlc0tleXdvcmQoKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgcmV0dXJuIHN1YnRpdGxlc0tleXdvcmQoKTsKIH0KIAotdm9pZCBUZXh0VHJh
Y2s6OnNldEtpbmQoVGV4dFRyYWNrS2luZCBuZXdLaW5kKQordm9pZCBUZXh0VHJhY2s6OnNldEtp
bmQoS2luZCBuZXdLaW5kKQogewogICAgIGF1dG8gb2xkS2luZCA9IG1fa2luZDsKIApAQCAtMjAz
LDI4ICsyMDMsMjggQEAgdm9pZCBUZXh0VHJhY2s6OnNldEtpbmQoVGV4dFRyYWNrS2luZCBuZXdL
aW5kKQogdm9pZCBUZXh0VHJhY2s6OnNldEtpbmRLZXl3b3JkSWdub3JpbmdBU0NJSUNhc2UoU3Ry
aW5nVmlldyBrZXl3b3JkKQogewogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShrZXl3b3JkLCAiY2FwdGlvbnMiKSkKLSAgICAgICAgc2V0S2luZChUZXh0VHJhY2tLaW5kOjpD
YXB0aW9ucyk7CisgICAgICAgIHNldEtpbmQoS2luZDo6Q2FwdGlvbnMpOwogICAgIGVsc2UgaWYg
KGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGtleXdvcmQsICJjaGFwdGVycyIpKQotICAg
ICAgICBzZXRLaW5kKFRleHRUcmFja0tpbmQ6OkNoYXB0ZXJzKTsKKyAgICAgICAgc2V0S2luZChL
aW5kOjpDaGFwdGVycyk7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2Uoa2V5d29yZCwgImRlc2NyaXB0aW9ucyIpKQotICAgICAgICBzZXRLaW5kKFRleHRUcmFja0tp
bmQ6OkRlc2NyaXB0aW9ucyk7CisgICAgICAgIHNldEtpbmQoS2luZDo6RGVzY3JpcHRpb25zKTsK
ICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShrZXl3b3JkLCAiZm9y
Y2VkIikpCi0gICAgICAgIHNldEtpbmQoVGV4dFRyYWNrS2luZDo6Rm9yY2VkKTsKKyAgICAgICAg
c2V0S2luZChLaW5kOjpGb3JjZWQpOwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKGtleXdvcmQsICJtZXRhZGF0YSIpKQotICAgICAgICBzZXRLaW5kKFRleHRUcmFj
a0tpbmQ6Ok1ldGFkYXRhKTsKKyAgICAgICAgc2V0S2luZChLaW5kOjpNZXRhZGF0YSk7CiAgICAg
ZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoa2V5d29yZCwgInN1YnRpdGxl
cyIpKQotICAgICAgICBzZXRLaW5kKFRleHRUcmFja0tpbmQ6OlN1YnRpdGxlcyk7CisgICAgICAg
IHNldEtpbmQoS2luZDo6U3VidGl0bGVzKTsKICNpZiAhRU5BQkxFKE1FRElBX1NPVVJDRSkKICAg
ICAvLyBGSVhNRTogVGhpcyBwcmVzZXJ2ZXMgdGhlIGJlaGF2aW9yIG9mIGFuIG9sZGVyIHZlcnNp
b24gb2YgdGhpcyBjb2RlIGJlZm9yZSByZWZhY3RvcmluZy4KICAgICAvLyAhRU5BQkxFKE1FRElB
X1NPVVJDRSk6IHVua25vd24ga2V5d29yZHMgYWxsIGdldCB0dXJuZWQgaW50byBTdWJ0aXRsZXMu
CiAgICAgLy8gRU5BQkxFKE1FRElBX1NPVVJDRSk6IHVua25vd24ga2V5d29yZHMgbGVhdmUgdGhl
IG9sZCB2YWx1ZSBmb3Iga2luZCB1bnRvdWNoZWQuCiAgICAgLy8gSSBhbSBub3Qgc3VyZSB0aGF0
IGVpdGhlciBvZiB0aG9zZSBpcyB0aGUgY29ycmVjdCBiZWhhdmlvcjsgc2hvdWxkIHRlc3QgYW5k
IGZpeC4KICAgICBlbHNlCi0gICAgICAgIHNldEtpbmQoVGV4dFRyYWNrS2luZDo6U3VidGl0bGVz
KTsKKyAgICAgICAgc2V0S2luZChLaW5kOjpTdWJ0aXRsZXMpOwogI2VuZGlmCiB9CiAKLXZvaWQg
VGV4dFRyYWNrOjpzZXRNb2RlKFRleHRUcmFja01vZGUgbW9kZSkKK3ZvaWQgVGV4dFRyYWNrOjpz
ZXRNb2RlKE1vZGUgbW9kZSkKIHsKICAgICAvLyBPbiBzZXR0aW5nLCBpZiB0aGUgbmV3IHZhbHVl
IGlzbid0IGVxdWFsIHRvIHdoYXQgdGhlIGF0dHJpYnV0ZSB3b3VsZCBjdXJyZW50bHkKICAgICAv
LyByZXR1cm4sIHRoZSBuZXcgdmFsdWUgbXVzdCBiZSBwcm9jZXNzZWQgYXMgZm9sbG93cyAuLi4K
QEAgLTIzMywxMCArMjMzLDEwIEBAIHZvaWQgVGV4dFRyYWNrOjpzZXRNb2RlKFRleHRUcmFja01v
ZGUgbW9kZSkKIAogICAgIC8vIElmIG1vZGUgY2hhbmdlcyB0byBkaXNhYmxlZCwgcmVtb3ZlIHRo
aXMgdHJhY2sncyBjdWVzIGZyb20gdGhlIGNsaWVudAogICAgIC8vIGJlY2F1c2UgdGhleSB3aWxs
IG5vIGxvbmdlciBiZSBhY2Nlc3NpYmxlIGZyb20gdGhlIGN1ZXMoKSBmdW5jdGlvbi4KLSAgICBp
ZiAobW9kZSA9PSBUZXh0VHJhY2tNb2RlOjpEaXNhYmxlZCAmJiBtX2NsaWVudCAmJiBtX2N1ZXMp
CisgICAgaWYgKG1vZGUgPT0gTW9kZTo6RGlzYWJsZWQgJiYgbV9jbGllbnQgJiYgbV9jdWVzKQog
ICAgICAgICBtX2NsaWVudC0+dGV4dFRyYWNrUmVtb3ZlQ3Vlcyh0aGlzLCBtX2N1ZXMuZ2V0KCkp
OwogCi0gICAgaWYgKG1vZGUgIT0gVGV4dFRyYWNrTW9kZTo6U2hvd2luZyAmJiBtX2N1ZXMpIHsK
KyAgICBpZiAobW9kZSAhPSBNb2RlOjpTaG93aW5nICYmIG1fY3VlcykgewogICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fY3Vlcy0+bGVuZ3RoKCk7ICsraSkgewogICAgICAgICAgICAg
VGV4dFRyYWNrQ3VlKiBjdWUgPSBtX2N1ZXMtPml0ZW0oaSk7CiAgICAgICAgICAgICBpZiAoY3Vl
LT5pc1JlbmRlcmFibGUoKSkKQEAgLTI1Nyw3ICsyNTcsNyBAQCBUZXh0VHJhY2tDdWVMaXN0KiBU
ZXh0VHJhY2s6OmN1ZXMoKQogICAgIC8vIE90aGVyd2lzZSwgaXQgbXVzdCByZXR1cm4gbnVsbC4g
V2hlbiBhbiBvYmplY3QgaXMgcmV0dXJuZWQsIHRoZQogICAgIC8vIHNhbWUgb2JqZWN0IG11c3Qg
YmUgcmV0dXJuZWQgZWFjaCB0aW1lLgogICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVj
cy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI2RvbS10ZXh0dHJhY2stY3VlcwotICAgIGlmIChtX21v
ZGUgPT0gVGV4dFRyYWNrTW9kZTo6RGlzYWJsZWQpCisgICAgaWYgKG1fbW9kZSA9PSBNb2RlOjpE
aXNhYmxlZCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuICZlbnN1cmVUZXh0
VHJhY2tDdWVMaXN0KCk7CiB9CkBAIC0yODQsNyArMjg0LDcgQEAgVGV4dFRyYWNrQ3VlTGlzdCog
VGV4dFRyYWNrOjphY3RpdmVDdWVzKCkgY29uc3QKICAgICAvLyBvcmRlci4gT3RoZXJ3aXNlLCBp
dCBtdXN0IHJldHVybiBudWxsLiBXaGVuIGFuIG9iamVjdCBpcyByZXR1cm5lZCwgdGhlCiAgICAg
Ly8gc2FtZSBvYmplY3QgbXVzdCBiZSByZXR1cm5lZCBlYWNoIHRpbWUuCiAgICAgLy8gaHR0cDov
L3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jZG9tLXRleHR0cmFj
ay1hY3RpdmVjdWVzCi0gICAgaWYgKCFtX2N1ZXMgfHwgbV9tb2RlID09IFRleHRUcmFja01vZGU6
OkRpc2FibGVkKQorICAgIGlmICghbV9jdWVzIHx8IG1fbW9kZSA9PSBNb2RlOjpEaXNhYmxlZCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIG1fY3Vlcy0+YWN0aXZlQ3Vlcygp
OwogfQpAQCAtMzAyLDcgKzMwMiw3IEBAIHZvaWQgVGV4dFRyYWNrOjphZGRDdWUoUGFzc1JlZlB0
cjxUZXh0VHJhY2tDdWU+IHBycEN1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgLy8gSWYgYSBE
YXRhQ3VlIGlzIGFkZGVkIHRvIGEgVGV4dFRyYWNrIHZpYSB0aGUgYWRkQ3VlKCkgbWV0aG9kIGJ1
dCB0aGUgdGV4dCB0cmFjayBkb2VzIG5vdCBoYXZlIGl0cyB0ZXh0CiAgICAgLy8gdHJhY2sga2lu
ZCBzZXQgdG8gbWV0YWRhdGEsIHRocm93IGEgSW52YWxpZE5vZGVUeXBlRXJyb3IgZXhjZXB0aW9u
IGFuZCBkb24ndCBhZGQgdGhlIGN1ZSB0byB0aGUgVGV4dFRyYWNrTGlzdAogICAgIC8vIG9mIHRo
ZSBUZXh0VHJhY2suCi0gICAgaWYgKGN1ZS0+Y3VlVHlwZSgpID09IFRleHRUcmFja0N1ZTo6RGF0
YSAmJiBtX2tpbmQgIT0gVGV4dFRyYWNrS2luZDo6TWV0YWRhdGEpIHsKKyAgICBpZiAoY3VlLT5j
dWVUeXBlKCkgPT0gVGV4dFRyYWNrQ3VlOjpEYXRhICYmIG1fa2luZCAhPSBLaW5kOjpNZXRhZGF0
YSkgewogICAgICAgICBlYyA9IElOVkFMSURfTk9ERV9UWVBFX0VSUjsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTM3Miw3ICszNzIsNyBAQCBWVFRSZWdpb25MaXN0KiBUZXh0VHJhY2s6OnJl
Z2lvbnMoKQogICAgIC8vIHRoZSB0ZXh0IHRyYWNrIGxpc3Qgb2YgcmVnaW9ucyBvZiB0aGUgdGV4
dCB0cmFjay4gT3RoZXJ3aXNlLCBpdCBtdXN0CiAgICAgLy8gcmV0dXJuIG51bGwuIFdoZW4gYW4g
b2JqZWN0IGlzIHJldHVybmVkLCB0aGUgc2FtZSBvYmplY3QgbXVzdCBiZSByZXR1cm5lZAogICAg
IC8vIGVhY2ggdGltZS4KLSAgICBpZiAobV9tb2RlID09IFRleHRUcmFja01vZGU6OkRpc2FibGVk
KQorICAgIGlmIChtX21vZGUgPT0gTW9kZTo6RGlzYWJsZWQpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIHJldHVybiAmZW5zdXJlVlRUUmVnaW9uTGlzdCgpOwogfQpAQCAtNDY3LDggKzQ2
Nyw4IEBAIHZvaWQgVGV4dFRyYWNrOjppbnZhbGlkYXRlVHJhY2tJbmRleCgpCiAKIGJvb2wgVGV4
dFRyYWNrOjppc1JlbmRlcmVkKCkKIHsKLSAgICByZXR1cm4gKG1fa2luZCA9PSBUZXh0VHJhY2tL
aW5kOjpDYXB0aW9ucyB8fCBtX2tpbmQgPT0gVGV4dFRyYWNrS2luZDo6U3VidGl0bGVzIHx8IG1f
a2luZCA9PSBUZXh0VHJhY2tLaW5kOjpGb3JjZWQpCi0gICAgICAgICYmIG1fbW9kZSA9PSBUZXh0
VHJhY2tNb2RlOjpTaG93aW5nOworICAgIHJldHVybiAobV9raW5kID09IEtpbmQ6OkNhcHRpb25z
IHx8IG1fa2luZCA9PSBLaW5kOjpTdWJ0aXRsZXMgfHwgbV9raW5kID09IEtpbmQ6OkZvcmNlZCkK
KyAgICAgICAgJiYgbV9tb2RlID09IE1vZGU6OlNob3dpbmc7CiB9CiAKIFRleHRUcmFja0N1ZUxp
c3QmIFRleHRUcmFjazo6ZW5zdXJlVGV4dFRyYWNrQ3VlTGlzdCgpCkBAIC01NTMsMTIgKzU1Mywx
MiBAQCBib29sIFRleHRUcmFjazo6aXNNYWluUHJvZ3JhbUNvbnRlbnQoKSBjb25zdAogICAgIC8v
IGRpcmVjdG9ycyBjb21tZW50YXJ5IGlzIG5vdCAibWFpbiBwcm9ncmFtIiBiZWNhdXNlIGl0IGlz
IG5vdCBlc3NlbnRpYWwgZm9yIHRoZSBwcmVzZW50YXRpb24uIEhUTUw1IGRvZXNuJ3QgaGF2ZQog
ICAgIC8vIGEgd2F5IHRvIGV4cHJlc3MgdGhpcyBpbiBhIG1hY2hpbmUtcmVhYmxlIGZvcm0sIGl0
IGlzIHR5cGljYWxseSBkb25lIHdpdGggdGhlIHRyYWNrIGxhYmVsLCBzbyB3ZSBhc3N1bWUgdGhh
dCBjYXB0aW9uCiAgICAgLy8gdHJhY2tzIGFyZSBtYWluIGNvbnRlbnQgYW5kIGFsbCBvdGhlciB0
cmFjayB0eXBlcyBhcmUgbm90LgotICAgIHJldHVybiBtX2tpbmQgPT0gVGV4dFRyYWNrS2luZDo6
Q2FwdGlvbnM7CisgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpDYXB0aW9uczsKIH0KIAogYm9v
bCBUZXh0VHJhY2s6OmNvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcygpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fa2luZCA9PSBUZXh0VHJhY2tLaW5kOjpGb3JjZWQ7CisgICAgcmV0dXJuIG1fa2lu
ZCA9PSBLaW5kOjpGb3JjZWQ7CiB9CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmgKaW5kZXggNWNiMjQ5MDUwZjhlMWI2Mzk1ODM5NzAw
NGYxNTY0MTcxMGRmZDZjMC4uNzgxOGQyMjQ3YWFkMTZhNTUzM2MzMzM2MzQwYmRkOGZhZWViZTg1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oCkBAIC00Miw5ICs0Miw2IEBA
IGNsYXNzIFRleHRUcmFja0N1ZUxpc3Q7CiBjbGFzcyBWVFRSZWdpb247CiBjbGFzcyBWVFRSZWdp
b25MaXN0OwogCi1lbnVtIGNsYXNzIFRleHRUcmFja0tpbmQgeyBTdWJ0aXRsZXMsIENhcHRpb25z
LCBEZXNjcmlwdGlvbnMsIENoYXB0ZXJzLCBNZXRhZGF0YSwgRm9yY2VkIH07Ci1lbnVtIGNsYXNz
IFRleHRUcmFja01vZGUgeyBEaXNhYmxlZCwgSGlkZGVuLCBTaG93aW5nIH07Ci0KIGNsYXNzIFRl
eHRUcmFja0NsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+VGV4dFRyYWNrQ2xpZW50KCkg
eyB9CkBAIC03NywxOSArNzQsMjEgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBBdG9taWNT
dHJpbmcmIGhpZGRlbktleXdvcmQoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBz
aG93aW5nS2V5d29yZCgpOwogCi0gICAgVGV4dFRyYWNrS2luZCBraW5kKCkgY29uc3Q7Ci0gICAg
dm9pZCBzZXRLaW5kKFRleHRUcmFja0tpbmQpOworICAgIGVudW0gY2xhc3MgS2luZCB7IFN1YnRp
dGxlcywgQ2FwdGlvbnMsIERlc2NyaXB0aW9ucywgQ2hhcHRlcnMsIE1ldGFkYXRhLCBGb3JjZWQg
fTsKKyAgICBLaW5kIGtpbmQoKSBjb25zdDsKKyAgICB2b2lkIHNldEtpbmQoS2luZCk7CiAKLSAg
ICBUZXh0VHJhY2tLaW5kIGtpbmRGb3JCaW5kaW5ncygpIGNvbnN0OwotICAgIHZvaWQgc2V0S2lu
ZEZvckJpbmRpbmdzKFRleHRUcmFja0tpbmQpOworICAgIEtpbmQga2luZEZvckJpbmRpbmdzKCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRLaW5kRm9yQmluZGluZ3MoS2luZCk7CiAKICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIGtpbmRLZXl3b3JkKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRLaW5kS2V5d29y
ZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcpOwogCiAgICAgdmlydHVhbCBBdG9taWNTdHJp
bmcgaW5CYW5kTWV0YWRhdGFUcmFja0Rpc3BhdGNoVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7IH0KIAotICAgIFRleHRUcmFja01vZGUgbW9kZSgpIGNvbnN0OwotICAgIHZpcnR1
YWwgdm9pZCBzZXRNb2RlKFRleHRUcmFja01vZGUpOworICAgIGVudW0gY2xhc3MgTW9kZSB7IERp
c2FibGVkLCBIaWRkZW4sIFNob3dpbmcgfTsKKyAgICBNb2RlIG1vZGUoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0TW9kZShNb2RlKTsKIAogICAgIGVudW0gUmVhZGluZXNzU3RhdGUgeyBO
b3RMb2FkZWQgPSAwLCBMb2FkaW5nID0gMSwgTG9hZGVkID0gMiwgRmFpbGVkVG9Mb2FkID0gMyB9
OwogICAgIFJlYWRpbmVzc1N0YXRlIHJlYWRpbmVzc1N0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9y
ZWFkaW5lc3NTdGF0ZTsgfQpAQCAtMTY0LDggKzE2Myw4IEBAIHByaXZhdGU6CiAgICAgVGV4dFRy
YWNrQ3VlTGlzdCYgZW5zdXJlVGV4dFRyYWNrQ3VlTGlzdCgpOwogCiAgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwotICAgIFRleHRUcmFja01vZGUg
bV9tb2RlIHsgVGV4dFRyYWNrTW9kZTo6RGlzYWJsZWQgfTsKLSAgICBUZXh0VHJhY2tLaW5kIG1f
a2luZCB7IFRleHRUcmFja0tpbmQ6OlN1YnRpdGxlcyB9OworICAgIE1vZGUgbV9tb2RlIHsgTW9k
ZTo6RGlzYWJsZWQgfTsKKyAgICBLaW5kIG1fa2luZCB7IEtpbmQ6OlN1YnRpdGxlcyB9OwogICAg
IFRleHRUcmFja0NsaWVudCogbV9jbGllbnQ7CiAgICAgVGV4dFRyYWNrVHlwZSBtX3RyYWNrVHlw
ZTsKICAgICBSZWFkaW5lc3NTdGF0ZSBtX3JlYWRpbmVzc1N0YXRlIHsgTm90TG9hZGVkIH07CkBA
IC0xODAsMjQgKzE3OSwyNCBAQCBpbmxpbmUgVGV4dFRyYWNrKiB0b1RleHRUcmFjayhUcmFja0Jh
c2UqIHRyYWNrKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxUZXh0VHJhY2sqPih0cmFjayk7CiB9
CiAKLWlubGluZSBUZXh0VHJhY2tNb2RlIFRleHRUcmFjazo6bW9kZSgpIGNvbnN0CitpbmxpbmUg
YXV0byBUZXh0VHJhY2s6Om1vZGUoKSBjb25zdCAtPiBNb2RlCiB7CiAgICAgcmV0dXJuIG1fbW9k
ZTsKIH0KIAotaW5saW5lIFRleHRUcmFja0tpbmQgVGV4dFRyYWNrOjpraW5kKCkgY29uc3QKK2lu
bGluZSBhdXRvIFRleHRUcmFjazo6a2luZCgpIGNvbnN0IC0+IEtpbmQKIHsKICAgICByZXR1cm4g
bV9raW5kOwogfQogCi1pbmxpbmUgVGV4dFRyYWNrS2luZCBUZXh0VHJhY2s6OmtpbmRGb3JCaW5k
aW5ncygpIGNvbnN0CitpbmxpbmUgYXV0byBUZXh0VHJhY2s6OmtpbmRGb3JCaW5kaW5ncygpIGNv
bnN0IC0+IEtpbmQKIHsKICAgICByZXR1cm4ga2luZCgpOwogfQogCiAjaWYgIUVOQUJMRShNRURJ
QV9TT1VSQ0UpCiAKLWlubGluZSB2b2lkIFRleHRUcmFjazo6c2V0S2luZEZvckJpbmRpbmdzKFRl
eHRUcmFja0tpbmQpCitpbmxpbmUgdm9pZCBUZXh0VHJhY2s6OnNldEtpbmRGb3JCaW5kaW5ncyhL
aW5kKQogewogICAgIC8vIEZJWE1FOiBXZSBhcmUgdXNpbmcga2luZEZvckJpbmRpbmdzIG9ubHkg
dG8gaW1wbGVtZW50IHRoaXMgZW1wdHkgZnVuY3Rpb24sIHByZXNlcnZpbmcgdGhlCiAgICAgLy8g
YmVoYXZpb3Igb2YgZG9pbmcgbm90aGluZyB3aGVuIHRyeWluZyB0byBzZXQgdGhlIGtpbmQsIG9y
aWdpbmFsbHkgaW1wbGVtZW50ZWQgaW4gYSBjdXN0b20gc2V0dGVyLgpAQCAtMjA2LDcgKzIwNSw3
IEBAIGlubGluZSB2b2lkIFRleHRUcmFjazo6c2V0S2luZEZvckJpbmRpbmdzKFRleHRUcmFja0tp
bmQpCiAKICNlbHNlCiAKLWlubGluZSB2b2lkIFRleHRUcmFjazo6c2V0S2luZEZvckJpbmRpbmdz
KFRleHRUcmFja0tpbmQga2luZCkKK2lubGluZSB2b2lkIFRleHRUcmFjazo6c2V0S2luZEZvckJp
bmRpbmdzKEtpbmQga2luZCkKIHsKICAgICBzZXRLaW5kKGtpbmQpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCmluZGV4IDQyNzM2ZmIzYjllNGQyZTMzOTA2
M2NmN2Q2OTcyNzZjMGYzMzE3ZDkuLmI3ZWUyMjVmNWYxOGQ2NmY1NjliZmFjYTgxYWExNmVkZjgw
OThhZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3Vl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKQEAg
LTE5Myw3ICsxOTMsNyBAQCB2b2lkIFRleHRUcmFja0N1ZTo6aW52YWxpZGF0ZUN1ZUluZGV4KCkK
IGJvb2wgVGV4dFRyYWNrQ3VlOjpkaXNwYXRjaEV2ZW50KEV2ZW50JiBldmVudCkKIHsKICAgICAv
LyBXaGVuIGEgVGV4dFRyYWNrJ3MgbW9kZSBpcyBkaXNhYmxlZDogbm8gY3VlcyBhcmUgYWN0aXZl
LCBubyBldmVudHMgZmlyZWQuCi0gICAgaWYgKCF0cmFjaygpIHx8IHRyYWNrKCktPm1vZGUoKSA9
PSBUZXh0VHJhY2tNb2RlOjpEaXNhYmxlZCkKKyAgICBpZiAoIXRyYWNrKCkgfHwgdHJhY2soKS0+
bW9kZSgpID09IFRleHRUcmFjazo6TW9kZTo6RGlzYWJsZWQpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIHJldHVybiBFdmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVudChldmVudCk7CkBAIC0y
MDEsNyArMjAxLDcgQEAgYm9vbCBUZXh0VHJhY2tDdWU6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2
ZW50KQogCiBib29sIFRleHRUcmFja0N1ZTo6aXNBY3RpdmUoKQogewotICAgIHJldHVybiBtX2lz
QWN0aXZlICYmIHRyYWNrKCkgJiYgdHJhY2soKS0+bW9kZSgpICE9IFRleHRUcmFja01vZGU6OkRp
c2FibGVkOworICAgIHJldHVybiBtX2lzQWN0aXZlICYmIHRyYWNrKCkgJiYgdHJhY2soKS0+bW9k
ZSgpICE9IFRleHRUcmFjazo6TW9kZTo6RGlzYWJsZWQ7CiB9CiAKIHZvaWQgVGV4dFRyYWNrQ3Vl
OjpzZXRJc0FjdGl2ZShib29sIGFjdGl2ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5oCmluZGV4IGZmNTFiM2JjZGI1YjJjODAzODIxYjc4OTY2MTY0
MjI1NDU5ZDIwOGMuLmQ4N2NmOWUxZmNjZTEwYzQyYzJkOWFmNTIzM2ZjNTdlZmIwNWU4ZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTmV0d29ya2luZ0NvbnRleHQuaApAQCAt
MzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogCi0gICAgICAgIHJldHVybiBtX2ZyYW1lLT5kb2N1bWVudCgpLT5yZWZl
cnJlclBvbGljeSgpID09IFJlZmVycmVySGVhZGVyUG9saWN5OjpEZWZhdWx0OworICAgICAgICBy
ZXR1cm4gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSA9PSBSZWZlcnJlclBv
bGljeTo6RGVmYXVsdDsKICAgICB9CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3BwCmluZGV4IDFkMDZjMmRkOTE1MjlmZWM5MGZk
MzA5MzIwNTBiOTJiMmQ2NmMyYTEuLjkzNWMxZmIwYTU2MDE0MzExZjIzNGY3OGNkYWI3MDRmYjky
NjNmOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJl
bmNlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2Vz
LmNwcApAQCAtMjE3LDcgKzIxNyw3IEBAIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPj4gQ2FwdGlv
blVzZXJQcmVmZXJlbmNlczo6c29ydGVkVHJhY2tMaXN0Rm9yTWVudShUZXh0VHJhCiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMCwgbGVuZ3RoID0gdHJhY2tMaXN0LT5sZW5ndGgoKTsgaSA8IGxlbmd0
aDsgKytpKSB7CiAgICAgICAgIFRleHRUcmFjayogdHJhY2sgPSB0cmFja0xpc3QtPml0ZW0oaSk7
CiAgICAgICAgIGF1dG8ga2luZCA9IHRyYWNrLT5raW5kKCk7Ci0gICAgICAgIGlmIChraW5kID09
IFRleHRUcmFja0tpbmQ6OkNhcHRpb25zIHx8IGtpbmQgPT0gVGV4dFRyYWNrS2luZDo6RGVzY3Jp
cHRpb25zIHx8IGtpbmQgPT0gVGV4dFRyYWNrS2luZDo6U3VidGl0bGVzKQorICAgICAgICBpZiAo
a2luZCA9PSBUZXh0VHJhY2s6OktpbmQ6OkNhcHRpb25zIHx8IGtpbmQgPT0gVGV4dFRyYWNrOjpL
aW5kOjpEZXNjcmlwdGlvbnMgfHwga2luZCA9PSBUZXh0VHJhY2s6OktpbmQ6OlN1YnRpdGxlcykK
ICAgICAgICAgICAgIHRyYWNrc0Zvck1lbnUuYXBwZW5kKHRyYWNrKTsKICAgICB9CiAKQEAgLTI2
NSw3ICsyNjUsNyBAQCBWZWN0b3I8UmVmUHRyPEF1ZGlvVHJhY2s+PiBDYXB0aW9uVXNlclByZWZl
cmVuY2VzOjpzb3J0ZWRUcmFja0xpc3RGb3JNZW51KEF1ZGlvVAogCiBpbnQgQ2FwdGlvblVzZXJQ
cmVmZXJlbmNlczo6dGV4dFRyYWNrU2VsZWN0aW9uU2NvcmUoVGV4dFRyYWNrKiB0cmFjaywgSFRN
TE1lZGlhRWxlbWVudCopIGNvbnN0CiB7Ci0gICAgaWYgKHRyYWNrLT5raW5kKCkgIT0gVGV4dFRy
YWNrS2luZDo6Q2FwdGlvbnMgJiYgdHJhY2stPmtpbmQoKSAhPSBUZXh0VHJhY2tLaW5kOjpTdWJ0
aXRsZXMpCisgICAgaWYgKHRyYWNrLT5raW5kKCkgIT0gVGV4dFRyYWNrOjpLaW5kOjpDYXB0aW9u
cyAmJiB0cmFjay0+a2luZCgpICE9IFRleHRUcmFjazo6S2luZDo6U3VidGl0bGVzKQogICAgICAg
ICByZXR1cm4gMDsKICAgICAKICAgICBpZiAoIXVzZXJQcmVmZXJzU3VidGl0bGVzKCkgJiYgIXVz
ZXJQcmVmZXJzQ2FwdGlvbnMoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2Fw
dGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0
aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKaW5kZXggM2QxMTZmOWJjYWIyMmE3MTlkMmVi
YTY1YzI2MTRhZWMxOTAxZWRjNy4uOGJjMDI5ZGU3ZTM5Yjg5YzM1ODY3MmU2Y2M2MTIyZTNhNGFl
NWNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWVkaWFBRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZl
cmVuY2VzTWVkaWFBRi5jcHAKQEAgLTcxMCw3ICs3MTAsNyBAQCBpbnQgQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlc01lZGlhQUY6OnRleHRUcmFja1NlbGVjdGlvblNjb3JlKFRleHRUcmFjayogdHJhY2ss
IEhUTQogICAgIGJvb2wgbGVnYWN5T3ZlcnJpZGUgPSBtZWRpYUVsZW1lbnQtPndlYmtpdENsb3Nl
ZENhcHRpb25zVmlzaWJsZSgpOwogICAgIGlmIChkaXNwbGF5TW9kZSA9PSBBbHdheXNPbiAmJiAo
IXVzZXJQcmVmZXJzU3VidGl0bGVzKCkgJiYgIXVzZXJQcmVmZXJzQ2FwdGlvbnMoKSAmJiAhbGVn
YWN5T3ZlcnJpZGUpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAodHJhY2stPmtpbmQoKSAh
PSBUZXh0VHJhY2tLaW5kOjpDYXB0aW9ucyAmJiB0cmFjay0+a2luZCgpICE9IFRleHRUcmFja0tp
bmQ6OlN1YnRpdGxlcyAmJiB0cmFjay0+a2luZCgpICE9IFRleHRUcmFja0tpbmQ6OkZvcmNlZCkK
KyAgICBpZiAodHJhY2stPmtpbmQoKSAhPSBUZXh0VHJhY2s6OktpbmQ6OkNhcHRpb25zICYmIHRy
YWNrLT5raW5kKCkgIT0gVGV4dFRyYWNrOjpLaW5kOjpTdWJ0aXRsZXMgJiYgdHJhY2stPmtpbmQo
KSAhPSBUZXh0VHJhY2s6OktpbmQ6OkZvcmNlZCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYg
KCF0cmFjay0+aXNNYWluUHJvZ3JhbUNvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC03
NzEsNyArNzcxLDcgQEAgaW50IENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjp0ZXh0VHJh
Y2tTZWxlY3Rpb25TY29yZShUZXh0VHJhY2sqIHRyYWNrLCBIVE0KIAogICAgIGlmICh1c2VyUHJl
ZmVyc0NhcHRpb25zKCkpIHsKICAgICAgICAgLy8gV2hlbiB0aGUgdXNlciBwcmVmZXJzIGFjY2Vz
c2liaWxpdHkgdHJhY2tzLCByYW5rIGlzIFNESCwgdGhlbiBDQywgdGhlbiBzdWJ0aXRsZXMuCi0g
ICAgICAgIGlmICh0cmFjay0+a2luZCgpID09IFRleHRUcmFja0tpbmQ6OlN1YnRpdGxlcykKKyAg
ICAgICAgaWYgKHRyYWNrLT5raW5kKCkgPT0gVGV4dFRyYWNrOjpLaW5kOjpTdWJ0aXRsZXMpCiAg
ICAgICAgICAgICB0cmFja1Njb3JlID0gMTsKICAgICAgICAgZWxzZSBpZiAodHJhY2stPmlzQ2xv
c2VkQ2FwdGlvbnMoKSkKICAgICAgICAgICAgIHRyYWNrU2NvcmUgPSAyOwpAQCAtNzc5LDcgKzc3
OSw3IEBAIGludCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6dGV4dFRyYWNrU2VsZWN0
aW9uU2NvcmUoVGV4dFRyYWNrKiB0cmFjaywgSFRNCiAgICAgICAgICAgICB0cmFja1Njb3JlID0g
MzsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBXaGVuIHRoZSB1c2VyIHByZWZlcnMgdHJhbnNs
YXRpb24gdHJhY2tzLCByYW5rIGlzIHN1YnRpdGxlcywgdGhlbiBTREgsIHRoZW4gQ0MgdHJhY2tz
LgotICAgICAgICBpZiAodHJhY2stPmtpbmQoKSA9PSBUZXh0VHJhY2tLaW5kOjpTdWJ0aXRsZXMp
CisgICAgICAgIGlmICh0cmFjay0+a2luZCgpID09IFRleHRUcmFjazo6S2luZDo6U3VidGl0bGVz
KQogICAgICAgICAgICAgdHJhY2tTY29yZSA9IDM7CiAgICAgICAgIGVsc2UgaWYgKCF0cmFjay0+
aXNDbG9zZWRDYXB0aW9ucygpKQogICAgICAgICAgICAgdHJhY2tTY29yZSA9IDI7CkBAIC04NjUs
NyArODY1LDcgQEAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+PiBDYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWVkaWFBRjo6c29ydGVkVHJhY2tMaXN0Rm9yTWVudSgKICAgICAgICAgfQogCiAgICAgICAg
IGF1dG8ga2luZCA9IHRyYWNrLT5raW5kKCk7Ci0gICAgICAgIGlmIChraW5kICE9IFRleHRUcmFj
a0tpbmQ6OkNhcHRpb25zICYmIGtpbmQgIT0gVGV4dFRyYWNrS2luZDo6RGVzY3JpcHRpb25zICYm
IGtpbmQgIT0gVGV4dFRyYWNrS2luZDo6U3VidGl0bGVzKQorICAgICAgICBpZiAoa2luZCAhPSBU
ZXh0VHJhY2s6OktpbmQ6OkNhcHRpb25zICYmIGtpbmQgIT0gVGV4dFRyYWNrOjpLaW5kOjpEZXNj
cmlwdGlvbnMgJiYga2luZCAhPSBUZXh0VHJhY2s6OktpbmQ6OlN1YnRpdGxlcykKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmICh0cmFjay0+Y29udGFpbnNPbmx5Rm9yY2VkU3Vi
dGl0bGVzKCkpIHsKQEAgLTg4MSw3ICs4ODEsNyBAQCBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4+
IENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpzb3J0ZWRUcmFja0xpc3RGb3JNZW51KAog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAodHJhY2stPm1v
ZGUoKSA9PSBUZXh0VHJhY2tNb2RlOjpTaG93aW5nKSB7CisgICAgICAgIGlmICh0cmFjay0+bW9k
ZSgpID09IFRleHRUcmFjazo6TW9kZTo6U2hvd2luZykgewogICAgICAgICAgICAgTE9HKE1lZGlh
LCAiQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OnNvcnRlZFRyYWNrTGlzdEZvck1lbnUg
LSBhZGRpbmcgJyVzJyB0cmFjayB3aXRoIGxhbmd1YWdlICclcycgYmVjYXVzZSBpdCBpcyBhbHJl
YWR5IHZpc2libGUiLCB0cmFjay0+a2luZEtleXdvcmQoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
LCBsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIGlmICghbGFuZ3VhZ2UuaXNF
bXB0eSgpKQogICAgICAgICAgICAgICAgIGxhbmd1YWdlc0luY2x1ZGVkLmFkZChsYW5ndWFnZSk7
CkBAIC04OTAsNyArODkwLDcgQEAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+PiBDYXB0aW9uVXNl
clByZWZlcmVuY2VzTWVkaWFBRjo6c29ydGVkVHJhY2tMaXN0Rm9yTWVudSgKICAgICAgICAgfQog
CiAgICAgICAgIGlmICghbGFuZ3VhZ2UuaXNFbXB0eSgpICYmIHRyYWNrLT5pc01haW5Qcm9ncmFt
Q29udGVudCgpKSB7Ci0gICAgICAgICAgICBib29sIGlzQWNjZXNzaWJpbGl0eVRyYWNrID0gdHJh
Y2stPmtpbmQoKSA9PSBUZXh0VHJhY2tLaW5kOjpDYXB0aW9uczsKKyAgICAgICAgICAgIGJvb2wg
aXNBY2Nlc3NpYmlsaXR5VHJhY2sgPSB0cmFjay0+a2luZCgpID09IFRleHRUcmFjazo6S2luZDo6
Q2FwdGlvbnM7CiAgICAgICAgICAgICBpZiAocHJlZmVyc0FjY2Vzc2liaWxpdHlUcmFja3MpIHsK
ICAgICAgICAgICAgICAgICAvLyBJbiB0aGUgZmlyc3QgcGFzcywgaW5jbHVkZSBvbmx5IGNhcHRp
b24gdHJhY2tzIGlmIHRoZSB1c2VyIHByZWZlcnMgYWNjZXNzaWJpbGl0eSB0cmFja3MuCiAgICAg
ICAgICAgICAgICAgaWYgKCFpc0FjY2Vzc2liaWxpdHlUcmFjayAmJiBmaWx0ZXJUcmFja0xpc3Qp
IHsKQEAgLTkyNiw3ICs5MjYsNyBAQCBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4+IENhcHRpb25V
c2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpzb3J0ZWRUcmFja0xpc3RGb3JNZW51KAogICAgICAgICAg
ICAgY29udGludWU7CiAKICAgICAgICAgYXV0byBraW5kID0gdHJhY2stPmtpbmQoKTsKLSAgICAg
ICAgaWYgKGtpbmQgIT0gVGV4dFRyYWNrS2luZDo6Q2FwdGlvbnMgJiYga2luZCAhPSBUZXh0VHJh
Y2tLaW5kOjpEZXNjcmlwdGlvbnMgJiYga2luZCAhPSBUZXh0VHJhY2tLaW5kOjpTdWJ0aXRsZXMp
CisgICAgICAgIGlmIChraW5kICE9IFRleHRUcmFjazo6S2luZDo6Q2FwdGlvbnMgJiYga2luZCAh
PSBUZXh0VHJhY2s6OktpbmQ6OkRlc2NyaXB0aW9ucyAmJiBraW5kICE9IFRleHRUcmFjazo6S2lu
ZDo6U3VidGl0bGVzKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgLy8gQWxsIGNh
bmRpZGF0ZXMgd2l0aCBubyBsYW5ndWdlIHdlcmUgYWRkZWQgdGhlIGZpcnN0IHRpbWUgdGhyb3Vn
aC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKaW5kZXggMjNkY2YxMWNiZWM3
ZWFjM2U2NWQ3NjNiNDEyNWRiYTEyOTUxZDVmOC4uNWRiMjczZDJkYmUwNzEwYTg2MTE4ZTdjZWI0
Mzg5YjUzNGZmYjZhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBv
bGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKQEAg
LTY2LDcgKzY2LDcgQEAgYm9vbCBTZWN1cml0eVBvbGljeTo6c2hvdWxkSGlkZVJlZmVycmVyKGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQogICAgIHJldHVybiAhVVJMSXNT
ZWN1cmVVUkw7CiB9CiAKLVN0cmluZyBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhl
YWRlcihSZWZlcnJlckhlYWRlclBvbGljeSByZWZlcnJlclBvbGljeSwgY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpCitTdHJpbmcgU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRl
UmVmZXJyZXJIZWFkZXIoUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3ksIGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQogewogICAgIGlmIChyZWZlcnJlci5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTc1LDExICs3NSwxMSBAQCBTdHJpbmcg
U2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIoUmVmZXJyZXJIZWFkZXJQb2xp
Y3kgcmVmZXJyZXJQb2xpYwogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBzd2l0Y2gg
KHJlZmVycmVyUG9saWN5KSB7Ci0gICAgY2FzZSBSZWZlcnJlckhlYWRlclBvbGljeTo6TmV2ZXI6
CisgICAgY2FzZSBSZWZlcnJlclBvbGljeTo6TmV2ZXI6CiAgICAgICAgIHJldHVybiBTdHJpbmco
KTsKLSAgICBjYXNlIFJlZmVycmVySGVhZGVyUG9saWN5OjpBbHdheXM6CisgICAgY2FzZSBSZWZl
cnJlclBvbGljeTo6QWx3YXlzOgogICAgICAgICByZXR1cm4gcmVmZXJyZXI7Ci0gICAgY2FzZSBS
ZWZlcnJlckhlYWRlclBvbGljeTo6T3JpZ2luOiB7CisgICAgY2FzZSBSZWZlcnJlclBvbGljeTo6
T3JpZ2luOiB7CiAgICAgICAgIFN0cmluZyBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
RnJvbVN0cmluZyhyZWZlcnJlciktPnRvU3RyaW5nKCk7CiAgICAgICAgIGlmIChvcmlnaW4gPT0g
Im51bGwiKQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAtODcsNyArODcsNyBAQCBT
dHJpbmcgU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIoUmVmZXJyZXJIZWFk
ZXJQb2xpY3kgcmVmZXJyZXJQb2xpYwogICAgICAgICAvLyB0byB0dXJuIGl0IGludG8gYSBjYW5v
bmljYWwgVVJMIHdlIGNhbiB1c2UgYXMgcmVmZXJyZXIuCiAgICAgICAgIHJldHVybiBvcmlnaW4g
KyAiLyI7CiAgICAgfQotICAgIGNhc2UgUmVmZXJyZXJIZWFkZXJQb2xpY3k6OkRlZmF1bHQ6Cisg
ICAgY2FzZSBSZWZlcnJlclBvbGljeTo6RGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmgKaW5kZXggYWI2ZTY4ZjBjNTg3NzE5M2Yy
MDVlYzQ5NDdhMzcxMDQzZmIwMTY4NS4uNmM4MThmZDYyMGJhNTUxOTgwY2EwZTVkYmM1NjVmYmM1
ODkwNDFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuaApAQCAtMzgsMTQgKzM4
LDE0IEBAIGNsYXNzIFVSTDsKIAogY2xhc3MgU2VjdXJpdHlQb2xpY3kgewogcHVibGljOgotICAg
IC8vIFRydWUgaWYgdGhlIHJlZmVycmVyIHNob3VsZCBiZSBvbWl0dGVkIGFjY29yZGluZyB0byBS
ZWZlcnJlckhlYWRlclBvbGljeTo6RGVmYXVsdC4KKyAgICAvLyBUcnVlIGlmIHRoZSByZWZlcnJl
ciBzaG91bGQgYmUgb21pdHRlZCBhY2NvcmRpbmcgdG8gUmVmZXJyZXJQb2xpY3k6OkRlZmF1bHQu
CiAgICAgLy8gSWYgeW91IGludGVuZCB0byBzZW5kIGEgcmVmZXJyZXIgaGVhZGVyLCB5b3Ugc2hv
dWxkIHVzZSBnZW5lcmF0ZVJlZmVycmVySGVhZGVyIGluc3RlYWQuCiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIGJvb2wgc2hvdWxkSGlkZVJlZmVycmVyKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYgcmVmZXJyZXIpOwogCiAgICAgLy8gUmV0dXJucyB0aGUgcmVmZXJyZXIgbW9kaWZpZWQgYWNj
b3JkaW5nIHRvIHRoZSByZWZlcnJlciBwb2xpY3kgZm9yIGEKICAgICAvLyBuYXZpZ2F0aW9uIHRv
IGEgZ2l2ZW4gVVJMLiBJZiB0aGUgcmVmZXJyZXIgcmV0dXJuZWQgaXMgZW1wdHksIHRoZQogICAg
IC8vIHJlZmVycmVyIGhlYWRlciBzaG91bGQgYmUgb21pdHRlZC4KLSAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgU3RyaW5nIGdlbmVyYXRlUmVmZXJyZXJIZWFkZXIoUmVmZXJyZXJIZWFkZXJQb2xp
Y3ksIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBTdHJpbmcgZ2VuZXJhdGVSZWZlcnJlckhlYWRlcihSZWZlcnJlclBvbGljeSwg
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlcik7CiAKICAgICBlbnVtIExvY2FsTG9h
ZFBvbGljeSB7CiAgICAgICAgIEFsbG93TG9jYWxMb2Fkc0ZvckFsbCwgLy8gTm8gcmVzdHJpY3Rp
b24gb24gbG9jYWwgbG9hZHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9S
ZWZlcnJlclBvbGljeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVmZXJyZXJQb2xpY3ku
aAppbmRleCBlNTFjNTgwNDdiNjIxZDRmZjdjMDdiMTFkNDA2ODkyY2I0ZWY1YjIwLi44NzBjMTY5
ODdjMzI2ZGFlMDc4NThmZDliZWI5NzRiNGY0N2JlODE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9SZWZlcnJlclBvbGljeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1JlZmVycmVyUG9saWN5LmgKQEAgLTM3LDkgKzM3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogLy8gRklYTUU6IE1vdmUgdGhpcyB3b3JrYXJvdW5kIHRvIGEgZ2xvYmFsIGxvY2F0aW9uLCBw
ZXJoYXBzIGNvbmZpZy5oOyBtYXliZSBhIEdUSy1zcGVjaWZpYyBsb2NhdGlvbi4KICN1bmRlZiBB
bHdheXMKIAotLy8gRklYTUU6IE1lcmdlIHRoaXMgd2l0aCB0aGUgUmVmZXJyZXJQb2xpY3kgZGVm
aW5lZCBpbiB0aGUgRmV0Y2ggc3BlY2lmaWNhdGlvbi4KLS8vIEZJWE1FOiBSZW5hbWUgYmFjayB0
byBSZWZlcnJlclBvbGljeSBldmVuIGJlZm9yZSB0aGF0LCBpZiB3ZSBmaW5kIGEgd2F5LgotZW51
bSBjbGFzcyBSZWZlcnJlckhlYWRlclBvbGljeSB7CisvLyBGSVhNRTogTWVyZ2UgdGhpcyB3aXRo
IEZldGNoT3B0aW9uczo6UmVmZXJyZXJQb2xpY3ksIHdoaWNoIGlzIHRoZSBvbmUgZGVmaW5lZCBp
biB0aGUgRmV0Y2ggc3BlY2lmaWNhdGlvbi4KK2VudW0gY2xhc3MgUmVmZXJyZXJQb2xpY3kgewog
ICAgIEFsd2F5cywKICAgICBEZWZhdWx0LAogICAgIE5ldmVyLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1l
bnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25N
b2RlbE1lZGlhRWxlbWVudC5tbQppbmRleCA3NTRlYjFlM2Q3NDA1Mjg2NjcwNDIzN2EwMjhkNjY2
NjVhZTEzMWE5Li5lNzE0MGE2YWEyZWNkM2I2NDJmNDgwNDhmZWQzYWUzOTNlYzgxZGFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25N
b2RlbE1lZGlhRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9X
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbQpAQCAtMzAzLDcgKzMwMyw3IEBA
IHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUxlZ2libGVP
cHRpb25zKCkKICAgICAgICAgICAgIHRyYWNrTWVudUl0ZW1TZWxlY3RlZCA9IHRydWU7CiAgICAg
ICAgIH0KIAotICAgICAgICBpZiAoZGlzcGxheU1vZGUgIT0gTWVkaWFDb250cm9sc0hvc3Q6OmF1
dG9tYXRpY0tleXdvcmQoKSAmJiB0cmFjay0+bW9kZSgpID09IFRleHRUcmFja01vZGU6OlNob3dp
bmcpIHsKKyAgICAgICAgaWYgKGRpc3BsYXlNb2RlICE9IE1lZGlhQ29udHJvbHNIb3N0OjphdXRv
bWF0aWNLZXl3b3JkKCkgJiYgdHJhY2stPm1vZGUoKSA9PSBUZXh0VHJhY2s6Ok1vZGU6OlNob3dp
bmcpIHsKICAgICAgICAgICAgIHNlbGVjdGVkSW5kZXggPSBpbmRleDsKICAgICAgICAgICAgIHRy
YWNrTWVudUl0ZW1TZWxlY3RlZCA9IHRydWU7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAppbmRleCA5MzkyM2ZlMTIxMDNmYmUwMzU2NzFkODJjOTg0NmNjNGY3MWU1
MDY3Li42NGJjNWQzZTI1MTFjMDViMzdkMWVjMDEyYTQwZmFkZWVmNjJkMzQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC01NjMsMjMgKzU2MywyMyBAQCBib29sIEludGVy
bmFsczo6aXNTdHlsZVNoZWV0TG9hZGluZ1N1YnJlc291cmNlcyhIVE1MTGlua0VsZW1lbnQmIGxp
bmspCiAgICAgcmV0dXJuIGxpbmsuc2hlZXQoKSAmJiBsaW5rLnNoZWV0KCktPmNvbnRlbnRzKCku
aXNMb2FkaW5nU3VicmVzb3VyY2VzKCk7CiB9CiAKLXN0YXRpYyBSZXNvdXJjZVJlcXVlc3RDYWNo
ZVBvbGljeSB0b1Jlc291cmNlUmVxdWVzdENhY2hlUG9saWN5KEludGVybmFsc0NhY2hlUG9saWN5
IHBvbGljeSkKK3N0YXRpYyBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSB0b1Jlc291cmNlUmVx
dWVzdENhY2hlUG9saWN5KEludGVybmFsczo6Q2FjaGVQb2xpY3kgcG9saWN5KQogewogICAgIHN3
aXRjaCAocG9saWN5KSB7Ci0gICAgY2FzZSBJbnRlcm5hbHNDYWNoZVBvbGljeTo6VXNlUHJvdG9j
b2xDYWNoZVBvbGljeToKKyAgICBjYXNlIEludGVybmFsczo6Q2FjaGVQb2xpY3k6OlVzZVByb3Rv
Y29sQ2FjaGVQb2xpY3k6CiAgICAgICAgIHJldHVybiBVc2VQcm90b2NvbENhY2hlUG9saWN5Owot
ICAgIGNhc2UgSW50ZXJuYWxzQ2FjaGVQb2xpY3k6OlJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhOgor
ICAgIGNhc2UgSW50ZXJuYWxzOjpDYWNoZVBvbGljeTo6UmVsb2FkSWdub3JpbmdDYWNoZURhdGE6
CiAgICAgICAgIHJldHVybiBSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YTsKLSAgICBjYXNlIEludGVy
bmFsc0NhY2hlUG9saWN5OjpSZXR1cm5DYWNoZURhdGFFbHNlTG9hZDoKKyAgICBjYXNlIEludGVy
bmFsczo6Q2FjaGVQb2xpY3k6OlJldHVybkNhY2hlRGF0YUVsc2VMb2FkOgogICAgICAgICByZXR1
cm4gUmV0dXJuQ2FjaGVEYXRhRWxzZUxvYWQ7Ci0gICAgY2FzZSBJbnRlcm5hbHNDYWNoZVBvbGlj
eTo6UmV0dXJuQ2FjaGVEYXRhRG9udExvYWQ6CisgICAgY2FzZSBJbnRlcm5hbHM6OkNhY2hlUG9s
aWN5OjpSZXR1cm5DYWNoZURhdGFEb250TG9hZDoKICAgICAgICAgcmV0dXJuIFJldHVybkNhY2hl
RGF0YURvbnRMb2FkOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1
cm4gVXNlUHJvdG9jb2xDYWNoZVBvbGljeTsKIH0KIAotdm9pZCBJbnRlcm5hbHM6OnNldE92ZXJy
aWRlQ2FjaGVQb2xpY3koSW50ZXJuYWxzQ2FjaGVQb2xpY3kgcG9saWN5KQordm9pZCBJbnRlcm5h
bHM6OnNldE92ZXJyaWRlQ2FjaGVQb2xpY3koQ2FjaGVQb2xpY3kgcG9saWN5KQogewogICAgIGZy
YW1lKCktPmxvYWRlcigpLnNldE92ZXJyaWRlQ2FjaGVQb2xpY3lGb3JUZXN0aW5nKHRvUmVzb3Vy
Y2VSZXF1ZXN0Q2FjaGVQb2xpY3kocG9saWN5KSk7CiB9CkBAIC01OTQsMjUgKzU5NCwyNSBAQCB2
b2lkIEludGVybmFsczo6c2V0Q2FuU2hvd01vZGFsRGlhbG9nT3ZlcnJpZGUoYm9vbCBhbGxvdywg
RXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgY29udGV4dERvY3VtZW50KCktPmRvbVdpbmRvdygpLT5z
ZXRDYW5TaG93TW9kYWxEaWFsb2dPdmVycmlkZShhbGxvdyk7CiB9CiAKLXN0YXRpYyBSZXNvdXJj
ZUxvYWRQcmlvcml0eSB0b1Jlc291cmNlTG9hZFByaW9yaXR5KEludGVybmFsc1Jlc291cmNlTG9h
ZFByaW9yaXR5IHByaW9yaXR5KQorc3RhdGljIFJlc291cmNlTG9hZFByaW9yaXR5IHRvUmVzb3Vy
Y2VMb2FkUHJpb3JpdHkoSW50ZXJuYWxzOjpSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSkK
IHsKICAgICBzd2l0Y2ggKHByaW9yaXR5KSB7Ci0gICAgY2FzZSBJbnRlcm5hbHNSZXNvdXJjZUxv
YWRQcmlvcml0eTo6UmVzb3VyY2VMb2FkUHJpb3JpdHlWZXJ5TG93OgorICAgIGNhc2UgSW50ZXJu
YWxzOjpSZXNvdXJjZUxvYWRQcmlvcml0eTo6UmVzb3VyY2VMb2FkUHJpb3JpdHlWZXJ5TG93Ogog
ICAgICAgICByZXR1cm4gUmVzb3VyY2VMb2FkUHJpb3JpdHk6OlZlcnlMb3c7Ci0gICAgY2FzZSBJ
bnRlcm5hbHNSZXNvdXJjZUxvYWRQcmlvcml0eTo6UmVzb3VyY2VMb2FkUHJpb3JpdHlMb3c6Cisg
ICAgY2FzZSBJbnRlcm5hbHM6OlJlc291cmNlTG9hZFByaW9yaXR5OjpSZXNvdXJjZUxvYWRQcmlv
cml0eUxvdzoKICAgICAgICAgcmV0dXJuIFJlc291cmNlTG9hZFByaW9yaXR5OjpMb3c7Ci0gICAg
Y2FzZSBJbnRlcm5hbHNSZXNvdXJjZUxvYWRQcmlvcml0eTo6UmVzb3VyY2VMb2FkUHJpb3JpdHlN
ZWRpdW06CisgICAgY2FzZSBJbnRlcm5hbHM6OlJlc291cmNlTG9hZFByaW9yaXR5OjpSZXNvdXJj
ZUxvYWRQcmlvcml0eU1lZGl1bToKICAgICAgICAgcmV0dXJuIFJlc291cmNlTG9hZFByaW9yaXR5
OjpNZWRpdW07Ci0gICAgY2FzZSBJbnRlcm5hbHNSZXNvdXJjZUxvYWRQcmlvcml0eTo6UmVzb3Vy
Y2VMb2FkUHJpb3JpdHlIaWdoOgorICAgIGNhc2UgSW50ZXJuYWxzOjpSZXNvdXJjZUxvYWRQcmlv
cml0eTo6UmVzb3VyY2VMb2FkUHJpb3JpdHlIaWdoOgogICAgICAgICByZXR1cm4gUmVzb3VyY2VM
b2FkUHJpb3JpdHk6OkhpZ2g7Ci0gICAgY2FzZSBJbnRlcm5hbHNSZXNvdXJjZUxvYWRQcmlvcml0
eTo6UmVzb3VyY2VMb2FkUHJpb3JpdHlWZXJ5SGlnaDoKKyAgICBjYXNlIEludGVybmFsczo6UmVz
b3VyY2VMb2FkUHJpb3JpdHk6OlJlc291cmNlTG9hZFByaW9yaXR5VmVyeUhpZ2g6CiAgICAgICAg
IHJldHVybiBSZXNvdXJjZUxvYWRQcmlvcml0eTo6VmVyeUhpZ2g7CiAgICAgfQogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBSZXNvdXJjZUxvYWRQcmlvcml0eTo6TG93Owog
fQogCi12b2lkIEludGVybmFsczo6c2V0T3ZlcnJpZGVSZXNvdXJjZUxvYWRQcmlvcml0eShJbnRl
cm5hbHNSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSkKK3ZvaWQgSW50ZXJuYWxzOjpzZXRP
dmVycmlkZVJlc291cmNlTG9hZFByaW9yaXR5KFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5
KQogewogICAgIGZyYW1lKCktPmxvYWRlcigpLnNldE92ZXJyaWRlUmVzb3VyY2VMb2FkUHJpb3Jp
dHlGb3JUZXN0aW5nKHRvUmVzb3VyY2VMb2FkUHJpb3JpdHkocHJpb3JpdHkpKTsKIH0KQEAgLTEy
MTgsMjEgKzEyMTgsMjEgQEAgdm9pZCBJbnRlcm5hbHM6OnNldEF1dG9maWxsZWQoSFRNTElucHV0
RWxlbWVudCYgZWxlbWVudCwgYm9vbCBlbmFibGVkKQogICAgIGVsZW1lbnQuc2V0QXV0b0ZpbGxl
ZChlbmFibGVkKTsKIH0KIAotc3RhdGljIEF1dG9GaWxsQnV0dG9uVHlwZSB0b0F1dG9GaWxsQnV0
dG9uVHlwZShJbnRlcm5hbHNBdXRvRmlsbEJ1dHRvblR5cGUgdHlwZSkKK3N0YXRpYyBBdXRvRmls
bEJ1dHRvblR5cGUgdG9BdXRvRmlsbEJ1dHRvblR5cGUoSW50ZXJuYWxzOjpBdXRvRmlsbEJ1dHRv
blR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIEludGVybmFsc0F1
dG9GaWxsQnV0dG9uVHlwZTo6QXV0b0ZpbGxCdXR0b25UeXBlTm9uZToKKyAgICBjYXNlIEludGVy
bmFsczo6QXV0b0ZpbGxCdXR0b25UeXBlOjpBdXRvRmlsbEJ1dHRvblR5cGVOb25lOgogICAgICAg
ICByZXR1cm4gQXV0b0ZpbGxCdXR0b25UeXBlOjpOb25lOwotICAgIGNhc2UgSW50ZXJuYWxzQXV0
b0ZpbGxCdXR0b25UeXBlOjpBdXRvRmlsbEJ1dHRvblR5cGVDcmVkZW50aWFsczoKKyAgICBjYXNl
IEludGVybmFsczo6QXV0b0ZpbGxCdXR0b25UeXBlOjpBdXRvRmlsbEJ1dHRvblR5cGVDcmVkZW50
aWFsczoKICAgICAgICAgcmV0dXJuIEF1dG9GaWxsQnV0dG9uVHlwZTo6Q3JlZGVudGlhbHM7Ci0g
ICAgY2FzZSBJbnRlcm5hbHNBdXRvRmlsbEJ1dHRvblR5cGU6OkF1dG9GaWxsQnV0dG9uVHlwZUNv
bnRhY3RzOgorICAgIGNhc2UgSW50ZXJuYWxzOjpBdXRvRmlsbEJ1dHRvblR5cGU6OkF1dG9GaWxs
QnV0dG9uVHlwZUNvbnRhY3RzOgogICAgICAgICByZXR1cm4gQXV0b0ZpbGxCdXR0b25UeXBlOjpD
b250YWN0czsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEF1
dG9GaWxsQnV0dG9uVHlwZTo6Tm9uZTsKIH0KIAotdm9pZCBJbnRlcm5hbHM6OnNldFNob3dBdXRv
RmlsbEJ1dHRvbihIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50LCBJbnRlcm5hbHNBdXRvRmlsbEJ1
dHRvblR5cGUgdHlwZSkKK3ZvaWQgSW50ZXJuYWxzOjpzZXRTaG93QXV0b0ZpbGxCdXR0b24oSFRN
TElucHV0RWxlbWVudCYgZWxlbWVudCwgQXV0b0ZpbGxCdXR0b25UeXBlIHR5cGUpCiB7CiAgICAg
ZWxlbWVudC5zZXRTaG93QXV0b0ZpbGxCdXR0b24odG9BdXRvRmlsbEJ1dHRvblR5cGUodHlwZSkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggMzI2NzNjZTVmMjE5ZTFmZmEx
OGFmYWM3MzU2YzE5NTlmZWU2NWRjMS4uMmFmMjZkZmY5NjRiMjI1OGNiZTUzNmM1OTdmNmQ3OTQz
NzIwNjE4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC03MCwxMiArNzAsNiBA
QCBjbGFzcyBYTUxIdHRwUmVxdWVzdDsKIAogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAot
ZW51bSBjbGFzcyBJbnRlcm5hbHNBdXRvRmlsbEJ1dHRvblR5cGUgeyBBdXRvRmlsbEJ1dHRvblR5
cGVOb25lLCBBdXRvRmlsbEJ1dHRvblR5cGVDb250YWN0cywgQXV0b0ZpbGxCdXR0b25UeXBlQ3Jl
ZGVudGlhbHMgfTsKLWVudW0gY2xhc3MgSW50ZXJuYWxzQ2FjaGVQb2xpY3kgeyBVc2VQcm90b2Nv
bENhY2hlUG9saWN5LCBSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YSwgUmV0dXJuQ2FjaGVEYXRhRWxz
ZUxvYWQsIFJldHVybkNhY2hlRGF0YURvbnRMb2FkIH07Ci1lbnVtIGNsYXNzIEludGVybmFsc1Jl
c291cmNlTG9hZFByaW9yaXR5IHsgUmVzb3VyY2VMb2FkUHJpb3JpdHlWZXJ5TG93LCBSZXNvdXJj
ZUxvYWRQcmlvcml0eUxvdywgUmVzb3VyY2VMb2FkUHJpb3JpdHlNZWRpdW0sIFJlc291cmNlTG9h
ZFByaW9yaXR5SGlnaCwgUmVzb3VyY2VMb2FkUHJpb3JpdHlWZXJ5SGlnaCB9OwotZW51bSBjbGFz
cyBNZWRpYUNvbnRyb2xFdmVudCB7IFBsYXlQYXVzZSwgTmV4dFRyYWNrLCBQcmV2aW91c1RyYWNr
IH07Ci1lbnVtIGNsYXNzIFBhZ2VPdmVybGF5VHlwZSB7IFZpZXcsIERvY3VtZW50IH07Ci0KIGNs
YXNzIEludGVybmFscyBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPEludGVybmFscz4sIHByaXZh
dGUgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8
SW50ZXJuYWxzPiBjcmVhdGUoRG9jdW1lbnQmKTsKQEAgLTk2LDkgKzkwLDExIEBAIHB1YmxpYzoK
ICAgICBTdHJpbmcgeGhyUmVzcG9uc2VTb3VyY2UoWE1MSHR0cFJlcXVlc3QmKTsKICAgICBib29s
IGlzU2hhcmluZ1N0eWxlU2hlZXRDb250ZW50cyhIVE1MTGlua0VsZW1lbnQmLCBIVE1MTGlua0Vs
ZW1lbnQmKTsKICAgICBib29sIGlzU3R5bGVTaGVldExvYWRpbmdTdWJyZXNvdXJjZXMoSFRNTExp
bmtFbGVtZW50Jik7Ci0gICAgdm9pZCBzZXRPdmVycmlkZUNhY2hlUG9saWN5KEludGVybmFsc0Nh
Y2hlUG9saWN5KTsKKyAgICBlbnVtIGNsYXNzIENhY2hlUG9saWN5IHsgVXNlUHJvdG9jb2xDYWNo
ZVBvbGljeSwgUmVsb2FkSWdub3JpbmdDYWNoZURhdGEsIFJldHVybkNhY2hlRGF0YUVsc2VMb2Fk
LCBSZXR1cm5DYWNoZURhdGFEb250TG9hZCB9OworICAgIHZvaWQgc2V0T3ZlcnJpZGVDYWNoZVBv
bGljeShDYWNoZVBvbGljeSk7CiAgICAgdm9pZCBzZXRDYW5TaG93TW9kYWxEaWFsb2dPdmVycmlk
ZShib29sIGFsbG93LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBzZXRPdmVycmlkZVJlc291
cmNlTG9hZFByaW9yaXR5KEludGVybmFsc1Jlc291cmNlTG9hZFByaW9yaXR5KTsKKyAgICBlbnVt
IGNsYXNzIFJlc291cmNlTG9hZFByaW9yaXR5IHsgUmVzb3VyY2VMb2FkUHJpb3JpdHlWZXJ5TG93
LCBSZXNvdXJjZUxvYWRQcmlvcml0eUxvdywgUmVzb3VyY2VMb2FkUHJpb3JpdHlNZWRpdW0sIFJl
c291cmNlTG9hZFByaW9yaXR5SGlnaCwgUmVzb3VyY2VMb2FkUHJpb3JpdHlWZXJ5SGlnaCB9Owor
ICAgIHZvaWQgc2V0T3ZlcnJpZGVSZXNvdXJjZUxvYWRQcmlvcml0eShSZXNvdXJjZUxvYWRQcmlv
cml0eSk7CiAgICAgdm9pZCBzZXRTdHJpY3RSYXdSZXNvdXJjZVZhbGlkYXRpb25Qb2xpY3lEaXNh
YmxlZChib29sKTsKIAogICAgIHZvaWQgY2xlYXJNZW1vcnlDYWNoZSgpOwpAQCAtMTc1LDcgKzE3
MSw4IEBAIHB1YmxpYzoKICAgICBib29sIGVsZW1lbnRTaG91bGRBdXRvQ29tcGxldGUoSFRNTElu
cHV0RWxlbWVudCYpOwogICAgIHZvaWQgc2V0RWRpdGluZ1ZhbHVlKEhUTUxJbnB1dEVsZW1lbnQm
LCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldEF1dG9maWxsZWQoSFRNTElucHV0RWxlbWVu
dCYsIGJvb2wgZW5hYmxlZCk7Ci0gICAgdm9pZCBzZXRTaG93QXV0b0ZpbGxCdXR0b24oSFRNTElu
cHV0RWxlbWVudCYsIEludGVybmFsc0F1dG9GaWxsQnV0dG9uVHlwZSk7CisgICAgZW51bSBjbGFz
cyBBdXRvRmlsbEJ1dHRvblR5cGUgeyBBdXRvRmlsbEJ1dHRvblR5cGVOb25lLCBBdXRvRmlsbEJ1
dHRvblR5cGVDb250YWN0cywgQXV0b0ZpbGxCdXR0b25UeXBlQ3JlZGVudGlhbHMgfTsKKyAgICB2
b2lkIHNldFNob3dBdXRvRmlsbEJ1dHRvbihIVE1MSW5wdXRFbGVtZW50JiwgQXV0b0ZpbGxCdXR0
b25UeXBlKTsKICAgICB2b2lkIHNjcm9sbEVsZW1lbnRUb1JlY3QoRWxlbWVudCYsIGludCB4LCBp
bnQgeSwgaW50IHcsIGludCBoLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBTdHJpbmcgYXV0b2Zp
bGxGaWVsZE5hbWUoRWxlbWVudCYsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTQyMCw2ICs0MTcsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZW5kTWVkaWFTZXNzaW9uRW5kT2ZJbnRlcnJ1cHRpb25Ob3Rp
ZmljYXRpb24oTWVkaWFTZXNzaW9uSW50ZXJydXB0aW5nQ2F0ZWdvcnkpOwogICAgIFN0cmluZyBt
ZWRpYVNlc3Npb25DdXJyZW50U3RhdGUoTWVkaWFTZXNzaW9uJikgY29uc3Q7CiAgICAgZG91Ymxl
IG1lZGlhRWxlbWVudFBsYXllclZvbHVtZShIVE1MTWVkaWFFbGVtZW50JikgY29uc3Q7CisgICAg
ZW51bSBjbGFzcyBNZWRpYUNvbnRyb2xFdmVudCB7IFBsYXlQYXVzZSwgTmV4dFRyYWNrLCBQcmV2
aW91c1RyYWNrIH07CiAgICAgdm9pZCBzZW5kTWVkaWFDb250cm9sRXZlbnQoTWVkaWFDb250cm9s
RXZlbnQpOwogI2VuZGlmCiAKQEAgLTQzNSw2ICs0MzMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
aW11bGF0ZVN5c3RlbVNsZWVwKCkgY29uc3Q7CiAgICAgdm9pZCBzaW11bGF0ZVN5c3RlbVdha2Uo
KSBjb25zdDsKIAorICAgIGVudW0gY2xhc3MgUGFnZU92ZXJsYXlUeXBlIHsgVmlldywgRG9jdW1l
bnQgfTsKICAgICBSZWZQdHI8TW9ja1BhZ2VPdmVybGF5PiBpbnN0YWxsTW9ja1BhZ2VPdmVybGF5
KFBhZ2VPdmVybGF5VHlwZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFN0cmluZyBwYWdlT3Zlcmxh
eUxheWVyVHJlZUFzVGV4dChFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmlkbAppbmRleCBkODNjYjRkMzVlNDlkODE4YzRiNjY5NDFiY2UxZDBmZDEy
NTIzYTk2Li4wNGFhMGEyMzJkZjIyN2ZlMzA3OTgyMDFhYWIxOGFlMzllZTNhNTE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0zMCw3ICszMCw3IEBAIGVudW0gUGFnZU92
ZXJsYXlUeXBlIHsKIH07CiAKIC8vIFRoZXNlIG1hcCB0byBSZXNvdXJjZVJlcXVlc3RDYWNoZVBv
bGljeS4KLWVudW0gSW50ZXJuYWxzQ2FjaGVQb2xpY3kgeworZW51bSBDYWNoZVBvbGljeSB7CiAg
ICAgIlVzZVByb3RvY29sQ2FjaGVQb2xpY3kiLAogICAgICJSZWxvYWRJZ25vcmluZ0NhY2hlRGF0
YSIsCiAgICAgIlJldHVybkNhY2hlRGF0YUVsc2VMb2FkIiwKQEAgLTM4LDcgKzM4LDcgQEAgZW51
bSBJbnRlcm5hbHNDYWNoZVBvbGljeSB7CiB9OwogCiAvLyBGSVhNRTogU3RyaW5ncyBpbiBhbiBl
bnVtIHNob3VsZCBub3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgZW51bSBhcyBhIHByZWZpeC4KLWVu
dW0gSW50ZXJuYWxzUmVzb3VyY2VMb2FkUHJpb3JpdHkgeworZW51bSBSZXNvdXJjZUxvYWRQcmlv
cml0eSB7CiAgICAgIlJlc291cmNlTG9hZFByaW9yaXR5VmVyeUxvdyIsCiAgICAgIlJlc291cmNl
TG9hZFByaW9yaXR5TG93IiwKICAgICAiUmVzb3VyY2VMb2FkUHJpb3JpdHlNZWRpdW0iLApAQCAt
NTksNyArNTksNyBAQCBlbnVtIEludGVybmFsc1Jlc291cmNlTG9hZFByaW9yaXR5IHsKIH07CiAK
IC8vIEZJWE1FOiBTdHJpbmdzIGluIGFuIGVudW0gc2hvdWxkIG5vdCBoYXZlIHRoZSBuYW1lIG9m
IHRoZSBlbnVtIGFzIGEgcHJlZml4LgotZW51bSBJbnRlcm5hbHNBdXRvRmlsbEJ1dHRvblR5cGUg
eworZW51bSBBdXRvRmlsbEJ1dHRvblR5cGUgewogICAgICJBdXRvRmlsbEJ1dHRvblR5cGVOb25l
IiwKICAgICAiQXV0b0ZpbGxCdXR0b25UeXBlQ29udGFjdHMiLAogICAgICJBdXRvRmlsbEJ1dHRv
blR5cGVDcmVkZW50aWFscyIKQEAgLTg2LDggKzg2LDggQEAgZW51bSBJbnRlcm5hbHNBdXRvRmls
bEJ1dHRvblR5cGUgewogICAgIHZvaWQgY2xlYXJNZW1vcnlDYWNoZSgpOwogICAgIHZvaWQgcHJ1
bmVNZW1vcnlDYWNoZVRvU2l6ZShsb25nIHNpemUpOwogICAgIGxvbmcgbWVtb3J5Q2FjaGVTaXpl
KCk7Ci0gICAgdm9pZCBzZXRPdmVycmlkZUNhY2hlUG9saWN5KEludGVybmFsc0NhY2hlUG9saWN5
IHBvbGljeSk7Ci0gICAgdm9pZCBzZXRPdmVycmlkZVJlc291cmNlTG9hZFByaW9yaXR5KEludGVy
bmFsc1Jlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5KTsKKyAgICB2b2lkIHNldE92ZXJyaWRl
Q2FjaGVQb2xpY3koQ2FjaGVQb2xpY3kgcG9saWN5KTsKKyAgICB2b2lkIHNldE92ZXJyaWRlUmVz
b3VyY2VMb2FkUHJpb3JpdHkoUmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJpb3JpdHkpOwogICAgIHZv
aWQgc2V0U3RyaWN0UmF3UmVzb3VyY2VWYWxpZGF0aW9uUG9saWN5RGlzYWJsZWQoYm9vbGVhbiBk
aXNhYmxlZCk7CiAKICAgICB2b2lkIGNsZWFyUGFnZUNhY2hlKCk7CkBAIC0xNTksNyArMTU5LDcg
QEAgZW51bSBJbnRlcm5hbHNBdXRvRmlsbEJ1dHRvblR5cGUgewogICAgIGJvb2xlYW4gZWxlbWVu
dFNob3VsZEF1dG9Db21wbGV0ZShIVE1MSW5wdXRFbGVtZW50IGlucHV0RWxlbWVudCk7CiAgICAg
dm9pZCBzZXRFZGl0aW5nVmFsdWUoSFRNTElucHV0RWxlbWVudCBpbnB1dEVsZW1lbnQsIERPTVN0
cmluZyB2YWx1ZSk7CiAgICAgdm9pZCBzZXRBdXRvZmlsbGVkKEhUTUxJbnB1dEVsZW1lbnQgaW5w
dXRFbGVtZW50LCBib29sZWFuIGVuYWJsZWQpOwotICAgIHZvaWQgc2V0U2hvd0F1dG9GaWxsQnV0
dG9uKEhUTUxJbnB1dEVsZW1lbnQgaW5wdXRFbGVtZW50LCBJbnRlcm5hbHNBdXRvRmlsbEJ1dHRv
blR5cGUgYXV0b0ZpbGxCdXR0b25UeXBlKTsKKyAgICB2b2lkIHNldFNob3dBdXRvRmlsbEJ1dHRv
bihIVE1MSW5wdXRFbGVtZW50IGlucHV0RWxlbWVudCwgQXV0b0ZpbGxCdXR0b25UeXBlIGF1dG9G
aWxsQnV0dG9uVHlwZSk7CiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gdW5zaWduZWQgbG9uZyBjb3Vu
dE1hdGNoZXNGb3JUZXh0KERPTVN0cmluZyB0ZXh0LCB1bnNpZ25lZCBsb25nIGZpbmRPcHRpb25z
LCBET01TdHJpbmcgbWFya01hdGNoZXMpOwogCiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gRE9NU3Ry
aW5nIGF1dG9maWxsRmllbGROYW1lKEVsZW1lbnQgZm9ybUNvbnRyb2xFbGVtZW50KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IDIyNGI4NjU2ODMwMjk2ZGE3NzQ4OGY0
ZDE2NWFiMTVmNjg4NjUyNjkuLjZhYjMxNTk3YTU0NzRkZjE4ZWE5ZTg1ODI0YjVmZDA2YTZlZWNi
NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMTYzLDcgKzE2Myw3
IEBAIFhNTEh0dHBSZXF1ZXN0OjpTdGF0ZSBYTUxIdHRwUmVxdWVzdDo6cmVhZHlTdGF0ZSgpIGNv
bnN0CiAKIFN0cmluZyBYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VUZXh0KEV4Y2VwdGlvbkNvZGUm
IGVjKQogewotICAgIGlmIChtX3Jlc3BvbnNlVHlwZSAhPSBYTUxIdHRwUmVxdWVzdFJlc3BvbnNl
VHlwZTo6RW1wdHlTdHJpbmcgJiYgbV9yZXNwb25zZVR5cGUgIT0gWE1MSHR0cFJlcXVlc3RSZXNw
b25zZVR5cGU6OlRleHQpIHsKKyAgICBpZiAobV9yZXNwb25zZVR5cGUgIT0gUmVzcG9uc2VUeXBl
OjpFbXB0eVN0cmluZyAmJiBtX3Jlc3BvbnNlVHlwZSAhPSBSZXNwb25zZVR5cGU6OlRleHQpIHsK
ICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICB9CkBAIC0xNzIsNyArMTcyLDcgQEAgU3RyaW5nIFhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZVRl
eHQoRXhjZXB0aW9uQ29kZSYgZWMpCiAKIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZENhY2hlUmVz
cG9uc2VKU09OKCkKIHsKLSAgICBBU1NFUlQobV9yZXNwb25zZVR5cGUgPT0gWE1MSHR0cFJlcXVl
c3RSZXNwb25zZVR5cGU6Okpzb24pOworICAgIEFTU0VSVChtX3Jlc3BvbnNlVHlwZSA9PSBSZXNw
b25zZVR5cGU6Okpzb24pOwogICAgIEFTU0VSVChkb25lV2l0aG91dEVycm9ycygpKTsKICAgICBt
X3Jlc3BvbnNlQ2FjaGVJc1ZhbGlkID0gdHJ1ZTsKICAgICBtX3Jlc3BvbnNlQnVpbGRlci5jbGVh
cigpOwpAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZENhY2hlUmVz
cG9uc2VKU09OKCkKIAogRG9jdW1lbnQqIFhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZVhNTChFeGNl
cHRpb25Db2RlJiBlYykKIHsKLSAgICBpZiAobV9yZXNwb25zZVR5cGUgIT0gWE1MSHR0cFJlcXVl
c3RSZXNwb25zZVR5cGU6OkVtcHR5U3RyaW5nICYmIG1fcmVzcG9uc2VUeXBlICE9IFhNTEh0dHBS
ZXF1ZXN0UmVzcG9uc2VUeXBlOjpEb2N1bWVudCkgeworICAgIGlmIChtX3Jlc3BvbnNlVHlwZSAh
PSBSZXNwb25zZVR5cGU6OkVtcHR5U3RyaW5nICYmIG1fcmVzcG9uc2VUeXBlICE9IFJlc3BvbnNl
VHlwZTo6RG9jdW1lbnQpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMTk1LDcgKzE5NSw3IEBAIERvY3VtZW50KiBY
TUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VYTUwoRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIC8v
IFRoZSBXM0Mgc3BlYyByZXF1aXJlcyB0aGUgZmluYWwgTUlNRSB0eXBlIHRvIGJlIHNvbWUgdmFs
aWQgWE1MIHR5cGUsIG9yIHRleHQvaHRtbC4KICAgICAgICAgLy8gSWYgaXQgaXMgdGV4dC9odG1s
LCB0aGVuIHRoZSByZXNwb25zZVR5cGUgb2YgImRvY3VtZW50IiBtdXN0IGhhdmUgYmVlbiBzdXBw
bGllZCBleHBsaWNpdGx5LgogICAgICAgICBpZiAoKG1fcmVzcG9uc2UuaXNIVFRQKCkgJiYgIXJl
c3BvbnNlSXNYTUwoKSAmJiAhaXNIVE1MKQotICAgICAgICAgICAgfHwgKGlzSFRNTCAmJiBtX3Jl
c3BvbnNlVHlwZSA9PSBYTUxIdHRwUmVxdWVzdFJlc3BvbnNlVHlwZTo6RW1wdHlTdHJpbmcpCisg
ICAgICAgICAgICB8fCAoaXNIVE1MICYmIG1fcmVzcG9uc2VUeXBlID09IFJlc3BvbnNlVHlwZTo6
RW1wdHlTdHJpbmcpCiAgICAgICAgICAgICB8fCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlz
V29ya2VyR2xvYmFsU2NvcGUoKSkgewogICAgICAgICAgICAgbV9yZXNwb25zZURvY3VtZW50ID0g
bnVsbHB0cjsKICAgICAgICAgfSBlbHNlIHsKQEAgLTIxOSw3ICsyMTksNyBAQCBEb2N1bWVudCog
WE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlWE1MKEV4Y2VwdGlvbkNvZGUmIGVjKQogCiBCbG9iKiBY
TUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VCbG9iKCkKIHsKLSAgICBBU1NFUlQobV9yZXNwb25zZVR5
cGUgPT0gWE1MSHR0cFJlcXVlc3RSZXNwb25zZVR5cGU6OkJsb2IpOworICAgIEFTU0VSVChtX3Jl
c3BvbnNlVHlwZSA9PSBSZXNwb25zZVR5cGU6OkJsb2IpOwogICAgIEFTU0VSVChkb25lV2l0aG91
dEVycm9ycygpKTsKIAogICAgIGlmICghbV9yZXNwb25zZUJsb2IpIHsKQEAgLTI0MSw3ICsyNDEs
NyBAQCBCbG9iKiBYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VCbG9iKCkKIAogQXJyYXlCdWZmZXIq
IFhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZUFycmF5QnVmZmVyKCkKIHsKLSAgICBBU1NFUlQobV9y
ZXNwb25zZVR5cGUgPT0gWE1MSHR0cFJlcXVlc3RSZXNwb25zZVR5cGU6OkFycmF5YnVmZmVyKTsK
KyAgICBBU1NFUlQobV9yZXNwb25zZVR5cGUgPT0gUmVzcG9uc2VUeXBlOjpBcnJheWJ1ZmZlcik7
CiAgICAgQVNTRVJUKGRvbmVXaXRob3V0RXJyb3JzKCkpOwogCiAgICAgaWYgKCFtX3Jlc3BvbnNl
QXJyYXlCdWZmZXIpIHsKQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0Ojpz
ZXRUaW1lb3V0KHVuc2lnbmVkIHRpbWVvdXQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIG1fdGlt
ZW91dFRpbWVyLnN0YXJ0T25lU2hvdChzdGQ6Om1heCgwLjAsIGludGVydmFsLmNvdW50KCkpKTsK
IH0KIAotdm9pZCBYTUxIdHRwUmVxdWVzdDo6c2V0UmVzcG9uc2VUeXBlKFhNTEh0dHBSZXF1ZXN0
UmVzcG9uc2VUeXBlIHR5cGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBYTUxIdHRwUmVxdWVz
dDo6c2V0UmVzcG9uc2VUeXBlKFJlc3BvbnNlVHlwZSB0eXBlLCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKICAgICBpZiAobV9zdGF0ZSA+PSBMT0FESU5HKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9T
VEFURV9FUlI7CkBAIC00NjMsNyArNDYzLDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6b3Blbihj
b25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgVVJMJiB1cmwsIGJvb2wgYXN5bmMsIEV4Y2UKICAg
ICAgICAgLy8gYXR0ZW1wdCB0byBkaXNjb3VyYWdlIHN5bmNocm9ub3VzIFhIUiB1c2UuIHJlc3Bv
bnNlVHlwZSBpcyBvbmUgc3VjaCBwaWVjZSBvZiBmdW5jdGlvbmFsaXR5LgogICAgICAgICAvLyBX
ZSdsbCBvbmx5IGRpc2FibGUgdGhpcyBmdW5jdGlvbmFsaXR5IGZvciBIVFRQKFMpIHJlcXVlc3Rz
IHNpbmNlIHN5bmMgcmVxdWVzdHMgZm9yIGxvY2FsIHByb3RvY29scwogICAgICAgICAvLyBzdWNo
IGFzIGZpbGU6IGFuZCBkYXRhOiBzdGlsbCBtYWtlIHNlbnNlIHRvIGFsbG93LgotICAgICAgICBp
ZiAodXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSAmJiBtX3Jlc3BvbnNlVHlwZSAhPSBYTUxI
dHRwUmVxdWVzdFJlc3BvbnNlVHlwZTo6RW1wdHlTdHJpbmcpIHsKKyAgICAgICAgaWYgKHVybC5w
cm90b2NvbElzSW5IVFRQRmFtaWx5KCkgJiYgbV9yZXNwb25zZVR5cGUgIT0gUmVzcG9uc2VUeXBl
OjpFbXB0eVN0cmluZykgewogICAgICAgICAgICAgbG9nQ29uc29sZUVycm9yKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgIlN5bmNocm9ub3VzIEhUVFAoUykgcmVxdWVzdHMgbWFkZSBmcm9tIHRo
ZSB3aW5kb3cgY29udGV4dCBjYW5ub3QgaGF2ZSBYTUxIdHRwUmVxdWVzdC5yZXNwb25zZVR5cGUg
c2V0LiIpOwogICAgICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0xMDk1LDE2ICsxMDk1LDE2IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRp
ZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
CiAgICAgICAgIG1fcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpD
b250ZW50VHlwZSwgbV9taW1lVHlwZU92ZXJyaWRlKTsKIH0KIAotc3RhdGljIGlubGluZSBib29s
IHNob3VsZERlY29kZVJlc3BvbnNlKFhNTEh0dHBSZXF1ZXN0UmVzcG9uc2VUeXBlIHR5cGUpCitz
dGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkRGVjb2RlUmVzcG9uc2UoWE1MSHR0cFJlcXVlc3Q6OlJl
c3BvbnNlVHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgWE1MSHR0
cFJlcXVlc3RSZXNwb25zZVR5cGU6OkVtcHR5U3RyaW5nOgotICAgIGNhc2UgWE1MSHR0cFJlcXVl
c3RSZXNwb25zZVR5cGU6OkRvY3VtZW50OgotICAgIGNhc2UgWE1MSHR0cFJlcXVlc3RSZXNwb25z
ZVR5cGU6Okpzb246Ci0gICAgY2FzZSBYTUxIdHRwUmVxdWVzdFJlc3BvbnNlVHlwZTo6VGV4dDoK
KyAgICBjYXNlIFhNTEh0dHBSZXF1ZXN0OjpSZXNwb25zZVR5cGU6OkVtcHR5U3RyaW5nOgorICAg
IGNhc2UgWE1MSHR0cFJlcXVlc3Q6OlJlc3BvbnNlVHlwZTo6RG9jdW1lbnQ6CisgICAgY2FzZSBY
TUxIdHRwUmVxdWVzdDo6UmVzcG9uc2VUeXBlOjpKc29uOgorICAgIGNhc2UgWE1MSHR0cFJlcXVl
c3Q6OlJlc3BvbnNlVHlwZTo6VGV4dDoKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgY2FzZSBY
TUxIdHRwUmVxdWVzdFJlc3BvbnNlVHlwZTo6QXJyYXlidWZmZXI6Ci0gICAgY2FzZSBYTUxIdHRw
UmVxdWVzdFJlc3BvbnNlVHlwZTo6QmxvYjoKKyAgICBjYXNlIFhNTEh0dHBSZXF1ZXN0OjpSZXNw
b25zZVR5cGU6OkFycmF5YnVmZmVyOgorICAgIGNhc2UgWE1MSHR0cFJlcXVlc3Q6OlJlc3BvbnNl
VHlwZTo6QmxvYjoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVz
dC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggMWU4ZDA5YjY3
NWM4YTYxMzA4YzM3NTdhNGE3ZjY1Mzk5MDE0ODA5Mi4uYjg4MDg3MmMyY2MxOGI2YTViNDY3ZTRm
NjBiMzJhNTM2YzZhMTU4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTQ0
LDggKzQ0LDYgQEAgY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2Rl
cjsKIGNsYXNzIFRocmVhZGFibGVMb2FkZXI7CiAKLWVudW0gY2xhc3MgWE1MSHR0cFJlcXVlc3RS
ZXNwb25zZVR5cGUgeyBFbXB0eVN0cmluZywgQXJyYXlidWZmZXIsIEJsb2IsIERvY3VtZW50LCBK
c29uLCBUZXh0IH07Ci0KIGNsYXNzIFhNTEh0dHBSZXF1ZXN0IGZpbmFsIDogcHVibGljIFJlZkNv
dW50ZWQ8WE1MSHR0cFJlcXVlc3Q+LCBwdWJsaWMgWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldCwg
cHJpdmF0ZSBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTEwNiw4ICsxMDQsOSBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyB1cHBlcmNhc2VLbm93bkhUVFBNZXRob2QoY29u
c3QgU3RyaW5nJik7CiAgICAgc3RhdGljIGJvb2wgaXNBbGxvd2VkSFRUUEhlYWRlcihjb25zdCBT
dHJpbmcmKTsKIAotICAgIHZvaWQgc2V0UmVzcG9uc2VUeXBlKFhNTEh0dHBSZXF1ZXN0UmVzcG9u
c2VUeXBlLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgWE1MSHR0cFJlcXVlc3RSZXNwb25zZVR5cGUg
cmVzcG9uc2VUeXBlKCkgY29uc3Q7CisgICAgZW51bSBjbGFzcyBSZXNwb25zZVR5cGUgeyBFbXB0
eVN0cmluZywgQXJyYXlidWZmZXIsIEJsb2IsIERvY3VtZW50LCBKc29uLCBUZXh0IH07CisgICAg
dm9pZCBzZXRSZXNwb25zZVR5cGUoUmVzcG9uc2VUeXBlLCBFeGNlcHRpb25Db2RlJik7CisgICAg
UmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSgpIGNvbnN0OwogCiAgICAgU3RyaW5nIHJlc3BvbnNl
VVJMKCkgY29uc3Q7CiAKQEAgLTIyNSw3ICsyMjQsNyBAQCBwcml2YXRlOgogCiAgICAgWE1MSHR0
cFJlcXVlc3RQcm9ncmVzc0V2ZW50VGhyb3R0bGUgbV9wcm9ncmVzc0V2ZW50VGhyb3R0bGU7CiAK
LSAgICBYTUxIdHRwUmVxdWVzdFJlc3BvbnNlVHlwZSBtX3Jlc3BvbnNlVHlwZSB7IFhNTEh0dHBS
ZXF1ZXN0UmVzcG9uc2VUeXBlOjpFbXB0eVN0cmluZyB9OworICAgIFJlc3BvbnNlVHlwZSBtX3Jl
c3BvbnNlVHlwZSB7IFJlc3BvbnNlVHlwZTo6RW1wdHlTdHJpbmcgfTsKICAgICBib29sIG1fcmVz
cG9uc2VDYWNoZUlzVmFsaWQgeyBmYWxzZSB9OwogCiAgICAgVGltZXIgbV9yZXN1bWVUaW1lcjsK
QEAgLTIzOSw3ICsyMzgsNyBAQCBwcml2YXRlOgogICAgIFRpbWVyIG1fdGltZW91dFRpbWVyOwog
fTsKIAotaW5saW5lIFhNTEh0dHBSZXF1ZXN0UmVzcG9uc2VUeXBlIFhNTEh0dHBSZXF1ZXN0Ojpy
ZXNwb25zZVR5cGUoKSBjb25zdAoraW5saW5lIGF1dG8gWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNl
VHlwZSgpIGNvbnN0IC0+IFJlc3BvbnNlVHlwZQogewogICAgIHJldHVybiBtX3Jlc3BvbnNlVHlw
ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJM
b2FkZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IDE4MDk2YzJjNWYyYTJjY2I2YjczNDQ5ZDY3YjQ0MGNl
ODEwNzhlZjEuLmUzZDRhNDgzN2Q3YWUwODNhNGUzODk3Njk4ZDEzM2YyZGIxOGEyNTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVn
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0
cmF0ZWd5LmNwcApAQCAtNzUsNyArNzUsNyBAQCBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFdl
YkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2UoRnJhbWUqIGZyYW1lLCBDYWNoZWRSZQogewog
ICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbG9hZGVyID0gU3VicmVzb3VyY2VMb2FkZXI6
OmNyZWF0ZShmcmFtZSwgcmVzb3VyY2UsIHJlcXVlc3QsIG9wdGlvbnMpOwogICAgIGlmIChsb2Fk
ZXIpCi0gICAgICAgIHNjaGVkdWxlTG9hZChsb2FkZXIuZ2V0KCksIHJlc291cmNlLCBmcmFtZS0+
ZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSA9PSBSZWZlcnJlckhlYWRlclBvbGljeTo6RGVm
YXVsdCk7CisgICAgICAgIHNjaGVkdWxlTG9hZChsb2FkZXIuZ2V0KCksIHJlc291cmNlLCBmcmFt
ZS0+ZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSA9PSBSZWZlcnJlclBvbGljeTo6RGVmYXVs
dCk7CiAgICAgcmV0dXJuIGxvYWRlcjsKIH0KIApAQCAtODMsNyArODMsNyBAQCBSZWZQdHI8TmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZVBsdWdp
blN0cmVhbUxvYWQoRgogewogICAgIFJlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4g
bG9hZGVyID0gTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmNyZWF0ZShmcmFtZSwgY2xpZW50
LCByZXF1ZXN0KTsKICAgICBpZiAobG9hZGVyKQotICAgICAgICBzY2hlZHVsZUxvYWQobG9hZGVy
LmdldCgpLCAwLCBmcmFtZS0+ZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSA9PSBSZWZlcnJl
ckhlYWRlclBvbGljeTo6RGVmYXVsdCk7CisgICAgICAgIHNjaGVkdWxlTG9hZChsb2FkZXIuZ2V0
KCksIDAsIGZyYW1lLT5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpID09IFJlZmVycmVyUG9s
aWN5OjpEZWZhdWx0KTsKICAgICByZXR1cm4gbG9hZGVyOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277907</attachid>
            <date>2016-05-02 08:26:18 -0700</date>
            <delta_ts>2016-05-02 08:47:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157257-20160502082654.patch</filename>
            <type>text/plain</type>
            <size>189054</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwMzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWIzMDA4Y2RjMWM3MWMy
YjQwYWE2YTYxNGU4ODNiMmQwYTg2N2QyNC4uMDIzZTNiYTc1ODg2NTA5YjkzZjFjNTA3ZGQ3ODQz
MzNjNTkyMGYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1NyBAQAorMjAxNi0wNS0wMiAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIElETCBlbnVtZXJh
dGlvbnMgdG8gYmUgbmVzdGVkIGluIHRoZWlyIEMrKyBjbGFzcyBpbnN0ZWFkIG9mIGF0IFdlYkNv
cmUgbmFtZXNwYWNlIGxldmVsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTcyNTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBDaHJpcyBhbmQgQWxleCByZXF1ZXN0ZWQgdGhpcyBhbHRlcm5hdGUgc3R5bGUs
IHdoZXJlIHRoZSBlbnVtIGNsYXNzIGZvciBlYWNoIGVudW1lcmF0aW9uCisgICAgICAgIGdvZXMg
aW5zaWRlIHRoZSBjbGFzcyBmb3IgdGhlIGludGVyZmFjZSB0aGUgZW51bWVyYXRpb24gaXMgdXNl
ZCBpbi4gQWxzbyBtYWRlIGEgcnVsZSB0aGF0CisgICAgICAgIGtlZXBzIHRoZSBuYW1lcyBzaG9y
dCBhbmQgbm90IHJlZHVuZGFudCB3aXRoIHRoZSBjbGFzcyBuYW1lIHRoZXkgYXJlIG5lc3RlZCBp
bi4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hPcHRpb25zLmg6IE1vdmVkIGFsbCB0
aGUgZW51bSBjbGFzcyB0eXBlcyBpbnRvIHRoZSBzdHJ1Y3QuCisKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRSZWZlcnJlclBv
bGljeSk6IFVwZGF0ZWQuCisgICAgICAgIChXZWJDb3JlOjpzZXRNb2RlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpzZXRDcmVkZW50aWFscyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
c2V0Q2FjaGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnNldFJlZGlyZWN0KTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpidWlsZE9wdGlvbnMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OmJ1aWxkSGVhZGVycyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXF1ZXN0
OjpjcmVhdGUpOiBEaXR0by4KKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5o
OiBVc2VkICJ1c2luZyIgdG8gcmVwZWF0IHRoZSB0eXBlcyBmcm9tIEZldGNoT3B0aW9ucworICAg
ICAgICBoZXJlIGluIEZldGNoUmVxdWVzdC4gVGhhdCB3YXkgdGhlIGdlbmVyYXRlZCBiaW5kaW5n
cyBjYW4gZmluZCB0aGUgdHlwZXMsIGFuZCB3ZSBkb24ndAorICAgICAgICBuZWVkIHRvIGRvIGFu
eSB0cmljayBsaWtlIFtJbXBsZW1lbnRlZEFzXSBpbiB0aGQgSURMIHRvIG1ha2UgaXQgd29yay4K
KworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjplcnJvcik6IFVwZGF0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaFJlc3BvbnNlOjpyZWRpcmVjdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hSZXNwb25zZTo6RmV0Y2hSZXNwb25zZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hSZXNwb25zZTo6c3RhcnRGZXRjaGluZyk6IERpdHRvLgorICAgICAgICAqIE1vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5oOiBNb3ZlZCBlbnVtIGNsYXNzIGludG8gdGhlIGNsYXNzLgorCisg
ICAgICAgICogTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNIb3N0OjpleHRlcm5hbERldmljZVR5cGUpOiBV
cGRhdGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9z
dC5oOiBNb3ZlZCBlbnVtIGNsYXNzcyBpbnRvIHRoZSBjbGFzcy4KKworICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNlc3Npb246Ok1lZGlhU2Vzc2lvbik6IFVwZGF0ZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRp
YXNlc3Npb24vTWVkaWFTZXNzaW9uLmg6IE1vdmVkIGVudW0gY2xhc3NzIGludG8gdGhlIGNsYXNz
LgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6YWRkU291cmNlQnVmZmVyKTogVXBkYXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpyZW1vdmVTb3VyY2VCdWZmZXIpOiBEaXR0by4K
KworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaDogTW92ZWQgZW51
bSBjbGFzcyBpbnRvIHRoZSBjbGFzcy4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2Uv
U291cmNlQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6c291cmNl
QnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVSZW5kZXJpbmdFcnJvcik6IFVwZGF0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OmFwcGVuZEVycm9yKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlU2FtcGxl
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnRleHRUcmFja01vZGVD
aGFuZ2VkKTogRGl0dG8uCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1
ZmZlci5oOiBSZW1vdmVkIGluY29ycmVjdCBmb3J3YXJkIGRlY2xhcmF0aW9uCisgICAgICAgIG9m
IEVuZE9mU3RyZWFtRXJyb3IgdGhhdCBhbHNvIG5vdyBzZWVtcyB0byBiZSB1bm5lZWRlZC4gTW92
ZWQgZW51bSBjbGFzcyBpbnRvCisgICAgICAgIHRoZSBjbGFzcy4KKworICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhRGV2aWNlSW5mbzo6TWVkaWFEZXZpY2VJbmZvKTogVXBkYXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhRGV2aWNlSW5mbzo6Y3JlYXRlKTogRGl0dG8uCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYURldmljZUluZm8uaDogTW92ZWQgZW51bSBjbGFzcyBpbnRvIHRoZSBj
bGFzcy4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZXNSZXF1ZXN0OjpkaWRDb21wbGV0
ZVRyYWNrU291cmNlSW5mb1JlcXVlc3QpOiBVcGRhdGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0
cmVhbVRyYWNrOjpyZWFkeVN0YXRlKTogVXBkYXRlZC4KKworICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oOiBNb3ZlZCBlbnVtIGNsYXNzIGludG8gdGhlIGNs
YXNzLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENDb25maWd1cmF0aW9uLmg6
IE1vdmVkIGVudW0gY2xhc3NlcyBpbnRvIHRoZSBjbGFzcy4KKworICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0Lmg6IE1vdmVkIGVudW0gY2xhc3MgaW50byB0aGUgY2xhc3Mu
CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnByb2Nlc3NvclR5cGUpOiBVcGRhdGVkLgorICAgICAgICAoV2ViQ29yZTo6
V2F2ZVNoYXBlck5vZGU6Om92ZXJzYW1wbGUpOiBEaXR0by4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmg6IE1vdmVkIGVudW0gY2xhc3MgaW50byB0aGUgY2xhc3Mu
CisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlKTogVXBkYXRlZC4KKwor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAo
R2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RCb2R5KTogUmVtb3ZlZCB1bm5lZWRlZCAkaW50ZXJm
YWNlTmFtZSBhcmd1bWVudC4KKyAgICAgICAgKEdldEF0dHJpYnV0ZUdldHRlck5hbWUpOiBEaXR0
by4KKyAgICAgICAgKEdldEF0dHJpYnV0ZVNldHRlck5hbWUpOiBEaXR0by4KKyAgICAgICAgKEdl
dEZ1bmN0aW9uTmFtZSk6IFR3ZWFrZWQgc3R5bGUuCisgICAgICAgIChBdHRyaWJ1dGVTaG91bGRC
ZU9uSW5zdGFuY2VGb3JDb21wYXRpYmlsaXR5KTogRGVsZXRlZC4gV2FzIGEgZnVuY3Rpb24gdGhh
dAorICAgICAgICBhbHdheXMgcmV0dXJuZWQgMC4KKyAgICAgICAgKEF0dHJpYnV0ZVNob3VsZEJl
T25JbnN0YW5jZSk6IFJlbW92ZWQgdGhlIGNhbGwgdG8gdGhlIGZ1bmN0aW9uIGFib3ZlLgorICAg
ICAgICAoSXNDbGFzc05hbWVXb3JkQm91bmRhcnkpOiBBZGRlZC4gSGVscGVyIGZvciBmdW5jdGlv
biBiZWxvdy4KKyAgICAgICAgKFByZWZpeElzV29yZHNUaGF0TWF0Y2hTdGFydE9yRW5kV29yZHMp
OiBEaXR0by4KKyAgICAgICAgKEdldEVudW1lcmF0aW9uQ2xhc3NOYW1lKTogQWRkZWQgYW4gJGlu
dGVyZmFjZSBhcmd1bWVudCBhbmQgY2hhbmdlZCB0aGlzCisgICAgICAgIHNvIGl0IGNyZWF0ZXMg
YSBuZXN0ZWQgbmFtZSBpbnNpZGUgdGhlIGNsYXNzIHJhdGhlciB0aGFuIGEgdG9wIGxldmVsIG5h
bWUKKyAgICAgICAgZm9yIHVzZSBhdCB0aGUgV2ViQ29yZSBuYW1lc3BhY2UgbGV2ZWwuCisgICAg
ICAgIChHZXRFbnVtZXJhdGlvbkNsYXNzSWRlbnRpZmllcik6IEFkZGVkLiBDYWxscyBHZXRFbnVt
ZXJhdGlvbkNsYXNzTmFtZSBhbmQKKyAgICAgICAgbWFrZXMgYSBmbGF0dGVuZWQgbmFtZSB3aXRo
b3V0ICI6OiIgdGhhdCBjYW4gYmUgdXNlZCBpbiBhbiBpZGVudGlmaWVyLgorICAgICAgICAoR2Vu
ZXJhdGVFbnVtZXJhdGlvbkltcGxlbWVudGF0aW9uQ29udGVudCk6IFJlbmFtZWQgZnJvbSBHZXRY
WFguIEFkZGVkIGFuCisgICAgICAgICRpbnRlcmZhY2UgYXJndW1lbnQsIHNvIGl0IGNhbiBwYXNz
IHRoYXQgYWxvbmcgdG8gdGhlIGZ1bmN0aW9ucyBhYm92ZS4KKyAgICAgICAgKEdlbmVyYXRlSGVh
ZGVyKTogVXBkYXRlZCB0byBub3QgcGFzcyAkaW50ZXJmYWNlTmFtZS4KKyAgICAgICAgKEdlbmVy
YXRlUHJvcGVydGllc0hhc2hUYWJsZSk6IERpdHRvLgorICAgICAgICAoR2VuZXJhdGVPdmVybG9h
ZGVkRnVuY3Rpb24pOiBSZW1vdmVkIHVubmVlZGVkICRpbnRlcmZhY2VOYW1lIGFyZ3VtZW50Lgor
ICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6IFVwZGF0ZWQgZm9yIGNoYW5nZXMgYWJv
dmUuIFR3ZWFrZWQgZm9ybWF0dGluZy4KKyAgICAgICAgKEdlbmVyYXRlRnVuY3Rpb25DYXN0ZWRU
aGlzKTogUmVtb3ZlZCB1bm5lZWRlZCAkaW50ZXJmYWNlTmFtZSBhcmd1bWVudC4KKyAgICAgICAg
KEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrKTogRGl0dG8uIEFsc28gc3RyZWFtbGluZWQgaW1wbGVt
ZW50YXRpb24gYSBiaXQKKyAgICAgICAgYW5kIG1hZGUgdGhlIElzRW51bVR5cGUgc2VjdGlvbiBj
YWxsIHRoZSBuZXcgZnVuY3Rpb25zLgorICAgICAgICAoR2VuZXJhdGVDYWxsYmFja0ltcGxlbWVu
dGF0aW9uKTogRGl0dG8uCisgICAgICAgIChKU1ZhbHVlVG9OYXRpdmUpOiBBZGRlZCBhbiAkaW50
ZXJmYWNlIGFyZ3VtZW50IGFuZCBwYXNzIGl0IGFsb25nIHdoZW4KKyAgICAgICAgZGVhbGluZyB3
aXRoIGVudW1lcmF0aW9ucy4KKyAgICAgICAgKEdlbmVyYXRlUHJvdG90eXBlRGVjbGFyYXRpb24p
OiBSZW1vdmVkIHVubmVlZGVkICRpbnRlcmZhY2VOYW1lIGFyZ3VtZW50LgorICAgICAgICAoR2Vu
ZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uKTogRGl0dG8uCisgICAgICAgIChHZW5lcmF0ZUNv
bnN0cnVjdG9yRGVmaW5pdGlvbnMpOiBEaXR0by4KKyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0
b3JEZWZpbml0aW9uKTogRGl0dG8uCisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVy
TWV0aG9kcyk6IERpdHRvLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE9iai5jcHA6IFJlZ2VuZXJhdGVkLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Rlc3RPYmouaWRsOiBBZGRlZCBzb21lIG5ldyBlbnVtcyB0aGF0IHRlc3Qgc29tZQorICAg
ICAgICBvZiB0aGUgbG9naWMgYWJvdmUuCisKKyAgICAgICAgKiBjcnlwdG8vQ3J5cHRvS2V5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleTo6Q3J5cHRvS2V5KTogVXBkYXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleTo6dXNhZ2VzKTogRGl0dG8uCisgICAgICAgICogY3J5
cHRvL0NyeXB0b0tleS5oOiBNb3ZlZCBlbnVtIGNsYXNzIHR5cGVzIGluc2lkZSB0aGUgQ3J5cHRv
S2V5IGNsYXNzLgorICAgICAgICBBZGRlZCBjb21tZW50cyBhYm91dCB0aGUgdHdvIHNpbWlsYXIg
YnV0IGRpc3RpbmN0IHR5cGVzIG5hbWVkCisgICAgICAgIENyeXB0b0tleVVzYWdlIGFuZCBDcnlw
dG9LZXk6OlVzYWdlLgorCisgICAgICAgICogY3NzL0ZvbnRGYWNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRGYWNlOjpzdGF0dXMpOiBVcGRhdGVkLgorICAgICAgICAqIGNzcy9Gb250RmFj
ZS5oOiBNb3ZlZCBlbnVtIGNsYXNzIGludG8gdGhlIGNsYXNzLgorCisgICAgICAgICogY3NzL0Zv
bnRGYWNlU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlU2V0OjpzdGF0dXMpOiBV
cGRhdGVkLgorICAgICAgICAqIGNzcy9Gb250RmFjZVNldC5oOiBNb3ZlZCBlbnVtIGNsYXNzIGlu
dG8gdGhlIGNsYXNzLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpEb2N1bWVudCk6IFVwZGF0ZWQgZm9yIHRoZSBuYW1lIGNoYW5nZSBi
YWNrIGZyb20KKyAgICAgICAgUmVmZXJyZXJIZWFkZXJQb2xpY3kgdG8gUmVmZXJyZXJQb2xpY3ku
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cHJvY2Vzc1JlZmVycmVyUG9saWN5KTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YXBwbHlDb250ZW50RGlzcG9zaXRpb25B
dHRhY2htZW50U2FuZGJveCk6IERpdHRvLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOiBNb3Jl
IG9mIHRoZSBzYW1lLgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRJbnRlcm5hbCk6IFVwZGF0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdl
ZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNr
S2luZENoYW5nZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OnRleHRUcmFja0FkZEN1ZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnRleHRUcmFja0FkZEN1ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50Ojpjb25maWd1cmVUZXh0VHJhY2tHcm91cCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0U2VsZWN0ZWRUZXh0VHJhY2spOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNvbmZpZ3VyZVRleHRUcmFja3Mp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Omhhc0Nsb3NlZENh
cHRpb25zKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpjb25m
aWd1cmVUZXh0VHJhY2tEaXNwbGF5KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjptYXJrQ2FwdGlvbkFuZFN1YnRpdGxlVHJhY2tzQXNVbmNvbmZpZ3VyZWQpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnRvUGxhdGZvcm0pOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om91dE9mQmFuZFRyYWNrU291cmNlcyk6IERpdHRvLgor
ICAgICAgICAqIGh0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVHJhY2tFbGVtZW50OjpzY2hlZHVsZUxvYWQpOiBEaXR0by4KKworICAgICAgICAqIGh0bWwv
SFRNTFZpZGVvRWxlbWVudC5oOiBNb3ZlZCBlbnVtIGNsYXNzIGludG8gY2xhc3MuCisKKyAgICAg
ICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuaWRsOiBBZGRlZCB0aGUgbWlzc2luZyBjb25kaXRp
b25hbCBvbgorICAgICAgICBWaWRlb1ByZXNlbnRhdGlvbk1vZGUsIGFuZCBhbHNvIG1vdmVkIGl0
IHRvIHRoZSBib3R0b20gb2YgdGhlIGZpbGUKKyAgICAgICAgdG8gd29yayBhcm91bmQgd2hhdCBp
cyBhcHBhcmVudGx5IGEgYnVnIGluIHRoZSBJREwgcGFyc2VyLgorCisgICAgICAgICogaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRv
V2luZFJ1bGUpOiBVcGRhdGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpmaWxsKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OmNsaXApOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6ZmlsbEludGVybmFsKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsaXBJbnRlcm5hbCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjppc1BvaW50SW5QYXRoKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmlzUG9pbnRJblBhdGhJ
bnRlcm5hbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6c21vb3RoaW5nVG9JbnRlcnBvbGF0
aW9uUXVhbGl0eSk6IERpdHRvLgorCisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmg6IE1vdmVkIGVudW0gY2xhc3MgdHlwZXMgaW50byB0aGUgY2xhc3MuCisK
KyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OnVw
ZGF0ZURpc3BsYXkpOiBVcGRhdGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGV4
dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6dXBkYXRlRGlzcGxheSk6IERpdHRvLgorCisgICAgICAg
ICogaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5i
YW5kVGV4dFRyYWNrOjpzZXRNb2RlKTogVXBkYXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRvUHJp
dmF0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrOjpzZXRNb2Rl
SW50ZXJuYWwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFjazo6dXBk
YXRlS2luZEZyb21Qcml2YXRlKTogRGl0dG8uCisgICAgICAgICogaHRtbC90cmFjay9JbmJhbmRU
ZXh0VHJhY2suaDogRGl0dG8uCisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2suY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpUZXh0VHJhY2spOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OlRleHRUcmFjazo6ZW5hYmxlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFRyYWNrOjpraW5kS2V5d29yZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRy
YWNrOjpzZXRLaW5kKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnNldEtp
bmRLZXl3b3JkSWdub3JpbmdBU0NJSUNhc2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRUcmFjazo6c2V0TW9kZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpj
dWVzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmFjdGl2ZUN1ZXMpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6YWRkQ3VlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnJlZ2lvbnMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlRleHRUcmFjazo6aXNSZW5kZXJlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VGV4
dFRyYWNrOjppc01haW5Qcm9ncmFtQ29udGVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFRyYWNrOjpjb250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMpOiBEaXR0by4KKworICAgICAg
ICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrLmg6IE1vdmVkIGVudW0gY2xhc3MgdHlwZXMgaW50byB0
aGUgY2xhc3MuCisKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmRpc3BhdGNoRXZlbnQpOiBVcGRhdGVkLgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjppc0FjdGl2ZSk6IERpdHRvLgorICAgICAgICAq
IGxvYWRlci9GcmFtZU5ldHdvcmtpbmdDb250ZXh0Lmg6IERpdHRvLgorICAgICAgICAqIHBhZ2Uv
Q2FwdGlvblVzZXJQcmVmZXJlbmNlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNl
clByZWZlcmVuY2VzOjpzb3J0ZWRUcmFja0xpc3RGb3JNZW51KTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp0ZXh0VHJhY2tTZWxlY3Rpb25TY29yZSk6
IERpdHRvLgorICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OnRleHRU
cmFja1NlbGVjdGlvblNjb3JlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNl
clByZWZlcmVuY2VzTWVkaWFBRjo6c29ydGVkVHJhY2tMaXN0Rm9yTWVudSk6IERpdHRvLgorCisg
ICAgICAgICogcGFnZS9TZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1
cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcik6IFVwZGF0ZWQgc2luY2Ugd2UKKyAg
ICAgICAgY2hhbmdlZCBSZWZlcnJlckhlYWRlclBvbGljeSBiYWNrIHRvIFJlZmVycmVyUG9saWN5
LgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlQb2xpY3kuaDogRGl0dG8uCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9SZWZlcnJlclBvbGljeS5oOiBDaGFuZ2VkIFJlZmVycmVySGVhZGVyUG9saWN5IG5h
bWUgYmFjaworICAgICAgICB0byBSZWZlcnJlclBvbGljeSBub3cgdGhhdCBuZXN0aW5nIGluc2lk
ZSBhIGNsYXNzIGVsaW1pbmF0ZWQgdGhlIGNvbmZsaWN0OworICAgICAgICBzdGlsbCBzaG91bGQg
bWVyZ2UgdGhlbSBhbmQgdGhhdCBGSVhNRSByZW1haW5zLgorCisgICAgICAgICogcGxhdGZvcm0v
Y29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW06CisgICAgICAgIChX
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6dXBkYXRlRm9yRXZlbnROYW1lKTog
VXBkYXRlZC4KKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Ojp1
cGRhdGVMZWdpYmxlT3B0aW9ucyk6IERpdHRvLgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5h
bHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9SZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSk6
IFVwZGF0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldE92ZXJyaWRlQ2FjaGVQ
b2xpY3kpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnRvUmVzb3VyY2VMb2FkUHJpb3JpdHkp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0T3ZlcnJpZGVSZXNvdXJj
ZUxvYWRQcmlvcml0eSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6dG9BdXRvRmlsbEJ1dHRv
blR5cGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0U2hvd0F1dG9G
aWxsQnV0dG9uKTogRGl0dG8uCisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOiBNb3Zl
ZCBlbnVtIGNsYXNzIHR5cGVzIGludG8gY2xhc3MuCisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVy
bmFscy5pZGw6IFJlbW92ZWQgdGhlICJJbnRlcm5hbHMiIHByZWZpeGVzIHdlIGFkZGVkCisgICAg
ICAgIHRvIHJlc29sdmUgYW1iaWd1aXR5IGJlZm9yZS4gTmVzdGluZyB0aGVzZSBpbiB0aGUgY2xh
c3Mgbm93IHRha2VzIGNhcmUKKyAgICAgICAgb2YgdGhlIGFtYmlndWl0eSBpbnN0ZWFkLgorCisg
ICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0
dHBSZXF1ZXN0OjpyZXNwb25zZVRleHQpOiBVcGRhdGVkLgorICAgICAgICAoV2ViQ29yZTo6WE1M
SHR0cFJlcXVlc3Q6OmRpZENhY2hlUmVzcG9uc2VKU09OKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VYTUwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZUJsb2IpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZUFycmF5QnVmZmVyKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6c2V0UmVzcG9uc2VUeXBlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6b3Blbik6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6c2hvdWxkRGVjb2RlUmVzcG9uc2UpOiBEaXR0by4KKworICAgICAgICAqIHhtbC9YTUxI
dHRwUmVxdWVzdC5oOiBNb3ZlZCB0aGUgZW51bSBjbGFzcyBpbnRvIHRoZSBjbGFzcy4KKwogMjAx
Ni0wNS0wMiAgWW9hdiBXZWlzcyAgPHlvYXZAeW9hdi53cz4KIAogICAgICAgICBNb3ZlIFJlc291
cmNlVGltaW5nIGJlaGluZCBhIHJ1bnRpbWUgZmxhZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDU0MTI4ZTQ0NTFj
YzI0ODcwMDJmMDVhYTk4NDQyOTU5ZDU2ZWE3NjUuLjRhNmMxZTQwYThjMzNjM2I2MDE4MmE1Njhj
OTc3YTJmYzFkN2E4MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNi0wNS0wMiAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIElETCBlbnVt
ZXJhdGlvbnMgdG8gYmUgbmVzdGVkIGluIHRoZWlyIEMrKyBjbGFzcyBpbnN0ZWFkIG9mIGF0IFdl
YkNvcmUgbmFtZXNwYWNlIGxldmVsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTcyNTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2UpOiBVcGRh
dGVkIHNpbmNlIHdlIGNoYW5nZWQKKyAgICAgICAgUmVmZXJyZXJIZWFkZXJQb2xpY3kgYmFjayB0
byBSZWZlcnJlclBvbGljeS4KKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnNj
aGVkdWxlUGx1Z2luU3RyZWFtTG9hZCk6IERpdHRvLgorCiAyMDE2LTA1LTAxICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgRmV0Y2ggdG8gdXNlIGVudW0g
Y2xhc3MgaW5zdGVhZCBvZiBzdHJpbmcgZm9yIGVudW1lcmF0aW9ucwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaE9wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hPcHRpb25zLmgKaW5kZXggODFmMDdkMTlhZTAwNTJiYmJmZTJl
ZTZjMzFiNGIwYTEzZGQ2ZTJmOS4uOTkzZDcwOGE4MDM2YjhiZTVlOTRjODdhZjEzNDk2MTk3MDg5
MTVmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaE9wdGlv
bnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoT3B0aW9ucy5oCkBA
IC0zMiwyMSArMzIsMjYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIFJl
ZmVycmVyUG9saWN5IHsgRW1wdHlTdHJpbmcsIE5vUmVmZXJyZXIsIE5vUmVmZXJyZXJXaGVuRG93
bmdyYWRlLCBPcmlnaW5Pbmx5LCBPcmlnaW5XaGVuQ3Jvc3NPcmlnaW4sIFVuc2FmZVVybCB9Owot
ZW51bSBjbGFzcyBSZXF1ZXN0Q2FjaGUgeyBEZWZhdWx0LCBOb1N0b3JlLCBSZWxvYWQsIE5vQ2Fj
aGUsIEZvcmNlQ2FjaGUgfTsKLWVudW0gY2xhc3MgUmVxdWVzdENyZWRlbnRpYWxzIHsgT21pdCwg
U2FtZU9yaWdpbiwgSW5jbHVkZSB9OwotZW51bSBjbGFzcyBSZXF1ZXN0RGVzdGluYXRpb24geyBF
bXB0eVN0cmluZywgRG9jdW1lbnQsIFNoYXJlZHdvcmtlciwgU3VicmVzb3VyY2UsIFVua25vd24s
IFdvcmtlciB9OwotZW51bSBjbGFzcyBSZXF1ZXN0TW9kZSB7IE5hdmlnYXRlLCBTYW1lT3JpZ2lu
LCBOb0NvcnMsIENvcnMgfTsKLWVudW0gY2xhc3MgUmVxdWVzdFJlZGlyZWN0IHsgRm9sbG93LCBF
cnJvciwgTWFudWFsIH07Ci1lbnVtIGNsYXNzIFJlcXVlc3RUeXBlIHsgRW1wdHlTdHJpbmcsIEF1
ZGlvLCBGb250LCBJbWFnZSwgU2NyaXB0LCBTdHlsZSwgVHJhY2ssIFZpZGVvIH07Ci0KIHN0cnVj
dCBGZXRjaE9wdGlvbnMgewotICAgIFJlcXVlc3RUeXBlIHR5cGUgeyBSZXF1ZXN0VHlwZTo6RW1w
dHlTdHJpbmcgfTsKLSAgICBSZXF1ZXN0RGVzdGluYXRpb24gZGVzdGluYXRpb24geyBSZXF1ZXN0
RGVzdGluYXRpb246OkVtcHR5U3RyaW5nIH07Ci0gICAgUmVxdWVzdE1vZGUgbW9kZSB7IFJlcXVl
c3RNb2RlOjpOb0NvcnMgfTsKLSAgICBSZXF1ZXN0Q3JlZGVudGlhbHMgY3JlZGVudGlhbHMgeyBS
ZXF1ZXN0Q3JlZGVudGlhbHM6Ok9taXQgfTsKLSAgICBSZXF1ZXN0Q2FjaGUgY2FjaGUgeyBSZXF1
ZXN0Q2FjaGU6OkRlZmF1bHQgfTsKLSAgICBSZXF1ZXN0UmVkaXJlY3QgcmVkaXJlY3QgeyBSZXF1
ZXN0UmVkaXJlY3Q6OkZvbGxvdyB9OworICAgIGVudW0gY2xhc3MgVHlwZSB7IEVtcHR5U3RyaW5n
LCBBdWRpbywgRm9udCwgSW1hZ2UsIFNjcmlwdCwgU3R5bGUsIFRyYWNrLCBWaWRlbyB9OworICAg
IFR5cGUgdHlwZSB7IFR5cGU6OkVtcHR5U3RyaW5nIH07CisKKyAgICBlbnVtIGNsYXNzIERlc3Rp
bmF0aW9uIHsgRW1wdHlTdHJpbmcsIERvY3VtZW50LCBTaGFyZWR3b3JrZXIsIFN1YnJlc291cmNl
LCBVbmtub3duLCBXb3JrZXIgfTsKKyAgICBEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbiB7IERlc3Rp
bmF0aW9uOjpFbXB0eVN0cmluZyB9OworCisgICAgZW51bSBjbGFzcyBNb2RlIHsgTmF2aWdhdGUs
IFNhbWVPcmlnaW4sIE5vQ29ycywgQ29ycyB9OworICAgIE1vZGUgbW9kZSB7IE1vZGU6Ok5vQ29y
cyB9OworCisgICAgZW51bSBjbGFzcyBDcmVkZW50aWFscyB7IE9taXQsIFNhbWVPcmlnaW4sIElu
Y2x1ZGUgfTsKKyAgICBDcmVkZW50aWFscyBjcmVkZW50aWFscyB7IENyZWRlbnRpYWxzOjpPbWl0
IH07CisKKyAgICBlbnVtIGNsYXNzIENhY2hlIHsgRGVmYXVsdCwgTm9TdG9yZSwgUmVsb2FkLCBO
b0NhY2hlLCBGb3JjZUNhY2hlIH07CisgICAgQ2FjaGUgY2FjaGUgeyBDYWNoZTo6RGVmYXVsdCB9
OworCisgICAgZW51bSBjbGFzcyBSZWRpcmVjdCB7IEZvbGxvdywgRXJyb3IsIE1hbnVhbCB9Owor
ICAgIFJlZGlyZWN0IHJlZGlyZWN0IHsgUmVkaXJlY3Q6OkZvbGxvdyB9OworCisgICAgZW51bSBj
bGFzcyBSZWZlcnJlclBvbGljeSB7IEVtcHR5U3RyaW5nLCBOb1JlZmVycmVyLCBOb1JlZmVycmVy
V2hlbkRvd25ncmFkZSwgT3JpZ2luT25seSwgT3JpZ2luV2hlbkNyb3NzT3JpZ2luLCBVbnNhZmVV
cmwgfTsKICAgICBSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSB7IFJlZmVycmVyUG9saWN5
OjpFbXB0eVN0cmluZyB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlcXVlc3QuY3BwCmluZGV4IDEwZjdjNWNhZjZmN2ViOTJhNmQwMzQyZGI2NjA1MTBhOGI5
M2Q4ZmEuLjMwM2E4MTFlZjJjYmVkMWNiNmJiNTU2MDUyYjVkMGI3ZGUzNjUyMWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAKQEAgLTQyLDE3ICs0
MiwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgYm9vbCBzZXRSZWZlcnJlclBvbGlj
eShGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXJQb2xpY3kpCiB7
CiAgICAgaWYgKHJlZmVycmVyUG9saWN5LmlzRW1wdHkoKSkKLSAgICAgICAgb3B0aW9ucy5yZWZl
cnJlclBvbGljeSA9IFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZzsKKyAgICAgICAgb3B0aW9u
cy5yZWZlcnJlclBvbGljeSA9IEZldGNoT3B0aW9uczo6UmVmZXJyZXJQb2xpY3k6OkVtcHR5U3Ry
aW5nOwogICAgIGVsc2UgaWYgKHJlZmVycmVyUG9saWN5ID09ICJuby1yZWZlcnJlciIpCi0gICAg
ICAgIG9wdGlvbnMucmVmZXJyZXJQb2xpY3kgPSBSZWZlcnJlclBvbGljeTo6Tm9SZWZlcnJlcjsK
KyAgICAgICAgb3B0aW9ucy5yZWZlcnJlclBvbGljeSA9IEZldGNoT3B0aW9uczo6UmVmZXJyZXJQ
b2xpY3k6Ok5vUmVmZXJyZXI7CiAgICAgZWxzZSBpZiAocmVmZXJyZXJQb2xpY3kgPT0gIm5vLXJl
ZmVycmVyLXdoZW4tZG93bmdyYWRlIikKLSAgICAgICAgb3B0aW9ucy5yZWZlcnJlclBvbGljeSA9
IFJlZmVycmVyUG9saWN5OjpOb1JlZmVycmVyV2hlbkRvd25ncmFkZTsKKyAgICAgICAgb3B0aW9u
cy5yZWZlcnJlclBvbGljeSA9IEZldGNoT3B0aW9uczo6UmVmZXJyZXJQb2xpY3k6Ok5vUmVmZXJy
ZXJXaGVuRG93bmdyYWRlOwogICAgIGVsc2UgaWYgKHJlZmVycmVyUG9saWN5ID09ICJvcmlnaW4t
b25seSIpCi0gICAgICAgIG9wdGlvbnMucmVmZXJyZXJQb2xpY3kgPSBSZWZlcnJlclBvbGljeTo6
T3JpZ2luT25seTsKKyAgICAgICAgb3B0aW9ucy5yZWZlcnJlclBvbGljeSA9IEZldGNoT3B0aW9u
czo6UmVmZXJyZXJQb2xpY3k6Ok9yaWdpbk9ubHk7CiAgICAgZWxzZSBpZiAocmVmZXJyZXJQb2xp
Y3kgPT0gIm9yaWdpbi13aGVuLWNyb3NzLW9yaWdpbiIpCi0gICAgICAgIG9wdGlvbnMucmVmZXJy
ZXJQb2xpY3kgPSBSZWZlcnJlclBvbGljeTo6T3JpZ2luV2hlbkNyb3NzT3JpZ2luOworICAgICAg
ICBvcHRpb25zLnJlZmVycmVyUG9saWN5ID0gRmV0Y2hPcHRpb25zOjpSZWZlcnJlclBvbGljeTo6
T3JpZ2luV2hlbkNyb3NzT3JpZ2luOwogICAgIGVsc2UgaWYgKHJlZmVycmVyUG9saWN5ID09ICJ1
bnNhZmUtdXJsIikKLSAgICAgICAgb3B0aW9ucy5yZWZlcnJlclBvbGljeSA9IFJlZmVycmVyUG9s
aWN5OjpVbnNhZmVVcmw7CisgICAgICAgIG9wdGlvbnMucmVmZXJyZXJQb2xpY3kgPSBGZXRjaE9w
dGlvbnM6OlJlZmVycmVyUG9saWN5OjpVbnNhZmVVcmw7CiAgICAgZWxzZQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CkBAIC02MSwxMyArNjEsMTMgQEAgc3RhdGljIGJv
b2wgc2V0UmVmZXJyZXJQb2xpY3koRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcm
IHJlZmVycmVyUG9saWMKIHN0YXRpYyBib29sIHNldE1vZGUoRmV0Y2hPcHRpb25zJiBvcHRpb25z
LCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgaWYgKG1vZGUgPT0gIm5hdmlnYXRlIikKLSAg
ICAgICAgb3B0aW9ucy5tb2RlID0gUmVxdWVzdE1vZGU6Ok5hdmlnYXRlOworICAgICAgICBvcHRp
b25zLm1vZGUgPSBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5hdmlnYXRlOwogICAgIGVsc2UgaWYgKG1v
ZGUgPT0gInNhbWUtb3JpZ2luIikKLSAgICAgICAgb3B0aW9ucy5tb2RlID0gUmVxdWVzdE1vZGU6
OlNhbWVPcmlnaW47CisgICAgICAgIG9wdGlvbnMubW9kZSA9IEZldGNoT3B0aW9uczo6TW9kZTo6
U2FtZU9yaWdpbjsKICAgICBlbHNlIGlmIChtb2RlID09ICJuby1jb3JzIikKLSAgICAgICAgb3B0
aW9ucy5tb2RlID0gUmVxdWVzdE1vZGU6Ok5vQ29yczsKKyAgICAgICAgb3B0aW9ucy5tb2RlID0g
RmV0Y2hPcHRpb25zOjpNb2RlOjpOb0NvcnM7CiAgICAgZWxzZSBpZiAobW9kZSA9PSAiY29ycyIp
Ci0gICAgICAgIG9wdGlvbnMubW9kZSA9IFJlcXVlc3RNb2RlOjpDb3JzOworICAgICAgICBvcHRp
b25zLm1vZGUgPSBGZXRjaE9wdGlvbnM6Ok1vZGU6OkNvcnM7CiAgICAgZWxzZQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CkBAIC03NiwxMSArNzYsMTEgQEAgc3RhdGlj
IGJvb2wgc2V0TW9kZShGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgbW9kZSkK
IHN0YXRpYyBib29sIHNldENyZWRlbnRpYWxzKEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3Qg
U3RyaW5nJiBjcmVkZW50aWFscykKIHsKICAgICBpZiAoY3JlZGVudGlhbHMgPT0gIm9taXQiKQot
ICAgICAgICBvcHRpb25zLmNyZWRlbnRpYWxzID0gUmVxdWVzdENyZWRlbnRpYWxzOjpPbWl0Owor
ICAgICAgICBvcHRpb25zLmNyZWRlbnRpYWxzID0gRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6
T21pdDsKICAgICBlbHNlIGlmIChjcmVkZW50aWFscyA9PSAic2FtZS1vcmlnaW4iKQotICAgICAg
ICBvcHRpb25zLmNyZWRlbnRpYWxzID0gUmVxdWVzdENyZWRlbnRpYWxzOjpTYW1lT3JpZ2luOwor
ICAgICAgICBvcHRpb25zLmNyZWRlbnRpYWxzID0gRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6
U2FtZU9yaWdpbjsKICAgICBlbHNlIGlmIChjcmVkZW50aWFscyA9PSAiaW5jbHVkZSIpCi0gICAg
ICAgIG9wdGlvbnMuY3JlZGVudGlhbHMgPSBSZXF1ZXN0Q3JlZGVudGlhbHM6OkluY2x1ZGU7Cisg
ICAgICAgIG9wdGlvbnMuY3JlZGVudGlhbHMgPSBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpJ
bmNsdWRlOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVl
OwpAQCAtODksMTUgKzg5LDE1IEBAIHN0YXRpYyBib29sIHNldENyZWRlbnRpYWxzKEZldGNoT3B0
aW9ucyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFscykKIHN0YXRpYyBib29sIHNl
dENhY2hlKEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiBjYWNoZSkKIHsKICAg
ICBpZiAoY2FjaGUgPT0gImRlZmF1bHQiKQotICAgICAgICBvcHRpb25zLmNhY2hlID0gUmVxdWVz
dENhY2hlOjpEZWZhdWx0OworICAgICAgICBvcHRpb25zLmNhY2hlID0gRmV0Y2hPcHRpb25zOjpD
YWNoZTo6RGVmYXVsdDsKICAgICBlbHNlIGlmIChjYWNoZSA9PSAibm8tc3RvcmUiKQotICAgICAg
ICBvcHRpb25zLmNhY2hlID0gUmVxdWVzdENhY2hlOjpOb1N0b3JlOworICAgICAgICBvcHRpb25z
LmNhY2hlID0gRmV0Y2hPcHRpb25zOjpDYWNoZTo6Tm9TdG9yZTsKICAgICBlbHNlIGlmIChjYWNo
ZSA9PSAicmVsb2FkIikKLSAgICAgICAgb3B0aW9ucy5jYWNoZSA9IFJlcXVlc3RDYWNoZTo6UmVs
b2FkOworICAgICAgICBvcHRpb25zLmNhY2hlID0gRmV0Y2hPcHRpb25zOjpDYWNoZTo6UmVsb2Fk
OwogICAgIGVsc2UgaWYgKGNhY2hlID09ICJuby1jYWNoZSIpCi0gICAgICAgIG9wdGlvbnMuY2Fj
aGUgPSBSZXF1ZXN0Q2FjaGU6Ok5vQ2FjaGU7CisgICAgICAgIG9wdGlvbnMuY2FjaGUgPSBGZXRj
aE9wdGlvbnM6OkNhY2hlOjpOb0NhY2hlOwogICAgIGVsc2UgaWYgKGNhY2hlID09ICJmb3JjZS1j
YWNoZSIpCi0gICAgICAgIG9wdGlvbnMuY2FjaGUgPSBSZXF1ZXN0Q2FjaGU6OkZvcmNlQ2FjaGU7
CisgICAgICAgIG9wdGlvbnMuY2FjaGUgPSBGZXRjaE9wdGlvbnM6OkNhY2hlOjpGb3JjZUNhY2hl
OwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwpAQCAt
MTA2LDExICsxMDYsMTEgQEAgc3RhdGljIGJvb2wgc2V0Q2FjaGUoRmV0Y2hPcHRpb25zJiBvcHRp
b25zLCBjb25zdCBTdHJpbmcmIGNhY2hlKQogc3RhdGljIGJvb2wgc2V0UmVkaXJlY3QoRmV0Y2hP
cHRpb25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIHJlZGlyZWN0KQogewogICAgIGlmIChyZWRp
cmVjdCA9PSAiZm9sbG93IikKLSAgICAgICAgb3B0aW9ucy5yZWRpcmVjdCA9IFJlcXVlc3RSZWRp
cmVjdDo6Rm9sbG93OworICAgICAgICBvcHRpb25zLnJlZGlyZWN0ID0gRmV0Y2hPcHRpb25zOjpS
ZWRpcmVjdDo6Rm9sbG93OwogICAgIGVsc2UgaWYgKHJlZGlyZWN0ID09ICJlcnJvciIpCi0gICAg
ICAgIG9wdGlvbnMucmVkaXJlY3QgPSBSZXF1ZXN0UmVkaXJlY3Q6OkVycm9yOworICAgICAgICBv
cHRpb25zLnJlZGlyZWN0ID0gRmV0Y2hPcHRpb25zOjpSZWRpcmVjdDo6RXJyb3I7CiAgICAgZWxz
ZSBpZiAocmVkaXJlY3QgPT0gIm1hbnVhbCIpCi0gICAgICAgIG9wdGlvbnMucmVkaXJlY3QgPSBS
ZXF1ZXN0UmVkaXJlY3Q6Ok1hbnVhbDsKKyAgICAgICAgb3B0aW9ucy5yZWRpcmVjdCA9IEZldGNo
T3B0aW9uczo6UmVkaXJlY3Q6Ok1hbnVhbDsKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE3Myw3ICsxNzMsNyBAQCBzdGF0aWMgYm9vbCBidWls
ZE9wdGlvbnMoRmV0Y2hSZXF1ZXN0OjpJbnRlcm5hbFJlcXVlc3QmIHJlcXVlc3QsIFNjcmlwdEV4
ZWN1dGlvbgogCiAgICAgaWYgKGluaXQuZ2V0KCJtb2RlIiwgdmFsdWUpICYmICFzZXRNb2RlKHJl
cXVlc3Qub3B0aW9ucywgdmFsdWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKHJl
cXVlc3Qub3B0aW9ucy5tb2RlID09IFJlcXVlc3RNb2RlOjpOYXZpZ2F0ZSkKKyAgICBpZiAocmVx
dWVzdC5vcHRpb25zLm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpOYXZpZ2F0ZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGluaXQuZ2V0KCJjcmVkZW50aWFscyIsIHZhbHVl
KSAmJiAhc2V0Q3JlZGVudGlhbHMocmVxdWVzdC5vcHRpb25zLCB2YWx1ZSkpCkBAIC0xOTYsNyAr
MTk2LDcgQEAgc3RhdGljIGJvb2wgYnVpbGRPcHRpb25zKEZldGNoUmVxdWVzdDo6SW50ZXJuYWxS
ZXF1ZXN0JiByZXF1ZXN0LCBTY3JpcHRFeGVjdXRpb24KIHN0YXRpYyBSZWZQdHI8RmV0Y2hIZWFk
ZXJzPiBidWlsZEhlYWRlcnMoY29uc3QgRGljdGlvbmFyeSYgaW5pdCwgY29uc3QgRmV0Y2hSZXF1
ZXN0OjpJbnRlcm5hbFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEZldGNoSGVhZGVycyogaW5wdXRI
ZWFkZXJzID0gbnVsbHB0cikKIHsKICAgICBGZXRjaEhlYWRlcnM6Okd1YXJkIGd1YXJkID0gRmV0
Y2hIZWFkZXJzOjpHdWFyZDo6UmVxdWVzdDsKLSAgICBpZiAocmVxdWVzdC5vcHRpb25zLm1vZGUg
PT0gUmVxdWVzdE1vZGU6Ok5vQ29ycykgeworICAgIGlmIChyZXF1ZXN0Lm9wdGlvbnMubW9kZSA9
PSBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5vQ29ycykgewogICAgICAgICBjb25zdCBTdHJpbmcmIG1l
dGhvZCA9IHJlcXVlc3QucmVxdWVzdC5odHRwTWV0aG9kKCk7CiAgICAgICAgIGlmIChtZXRob2Qg
IT0gIkdFVCIgJiYgbWV0aG9kICE9ICJQT1NUIiAmJiBtZXRob2QgIT0gIkhFQUQiKQogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNDQsOCArMjQ0LDggQEAgUmVmUHRyPEZldGNoUmVx
dWVzdD4gRmV0Y2hSZXF1ZXN0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgY29uc3QKICAgICB9CiAKICAgICBGZXRjaFJlcXVlc3Q6OkludGVybmFsUmVxdWVzdCBpbnRl
cm5hbFJlcXVlc3Q7Ci0gICAgaW50ZXJuYWxSZXF1ZXN0Lm9wdGlvbnMubW9kZSA9IFJlcXVlc3RN
b2RlOjpDb3JzOwotICAgIGludGVybmFsUmVxdWVzdC5vcHRpb25zLmNyZWRlbnRpYWxzID0gUmVx
dWVzdENyZWRlbnRpYWxzOjpPbWl0OworICAgIGludGVybmFsUmVxdWVzdC5vcHRpb25zLm1vZGUg
PSBNb2RlOjpDb3JzOworICAgIGludGVybmFsUmVxdWVzdC5vcHRpb25zLmNyZWRlbnRpYWxzID0g
Q3JlZGVudGlhbHM6Ok9taXQ7CiAgICAgaW50ZXJuYWxSZXF1ZXN0LnJlZmVycmVyID0gQVNDSUlM
aXRlcmFsKCJjbGllbnQiKTsKICAgICBpbnRlcm5hbFJlcXVlc3QucmVxdWVzdC5zZXRVUkwocmVx
dWVzdFVSTCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5o
CmluZGV4IDVmNTQ4MDY5ZGE1MjFiZDBkZjRhMzc0YmNhNTk2MTA5NzJkZjg2MDIuLmRiNGQyMjBj
MjdhMmRiM2MyMmI2YjlmODg2Njg2YzNjYmNjNzMzMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuaApAQCAtNTIsMTQgKzUyLDI5IEBAIHB1YmxpYzoKICAg
ICBjb25zdCBTdHJpbmcmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuYWxSZXF1ZXN0LnJl
cXVlc3QudXJsKCkuc3RyaW5nKCk7IH0KICAgICBGZXRjaEhlYWRlcnMmIGhlYWRlcnMoKSB7IHJl
dHVybiBtX2hlYWRlcnMuZ2V0KCk7IH0KIAotICAgIFJlcXVlc3RUeXBlIHR5cGUoKSBjb25zdDsK
LSAgICBSZXF1ZXN0RGVzdGluYXRpb24gZGVzdGluYXRpb24oKSBjb25zdDsKKyAgICB1c2luZyBU
eXBlID0gRmV0Y2hPcHRpb25zOjpUeXBlOworICAgIFR5cGUgdHlwZSgpIGNvbnN0OworCisgICAg
dXNpbmcgRGVzdGluYXRpb24gPSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOworICAgIERlc3Rp
bmF0aW9uIGRlc3RpbmF0aW9uKCkgY29uc3Q7CisKICAgICBTdHJpbmcgcmVmZXJyZXIoKSBjb25z
dDsKKworICAgIHVzaW5nIFJlZmVycmVyUG9saWN5ID0gRmV0Y2hPcHRpb25zOjpSZWZlcnJlclBv
bGljeTsKICAgICBSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSgpIGNvbnN0OwotICAgIFJl
cXVlc3RNb2RlIG1vZGUoKSBjb25zdDsKLSAgICBSZXF1ZXN0Q3JlZGVudGlhbHMgY3JlZGVudGlh
bHMoKSBjb25zdDsKLSAgICBSZXF1ZXN0Q2FjaGUgY2FjaGUoKSBjb25zdDsKLSAgICBSZXF1ZXN0
UmVkaXJlY3QgcmVkaXJlY3QoKSBjb25zdDsKKworICAgIHVzaW5nIE1vZGUgPSBGZXRjaE9wdGlv
bnM6Ok1vZGU7CisgICAgTW9kZSBtb2RlKCkgY29uc3Q7CisKKyAgICB1c2luZyBDcmVkZW50aWFs
cyA9IEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM7CisgICAgQ3JlZGVudGlhbHMgY3JlZGVudGlh
bHMoKSBjb25zdDsKKworICAgIHVzaW5nIENhY2hlID0gRmV0Y2hPcHRpb25zOjpDYWNoZTsKKyAg
ICBDYWNoZSBjYWNoZSgpIGNvbnN0OworCisgICAgdXNpbmcgUmVkaXJlY3QgPSBGZXRjaE9wdGlv
bnM6OlJlZGlyZWN0OworICAgIFJlZGlyZWN0IHJlZGlyZWN0KCkgY29uc3Q7CisKICAgICBjb25z
dCBTdHJpbmcmIGludGVncml0eSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuYWxSZXF1ZXN0Lmlu
dGVncml0eTsgfQogCiAgICAgUmVmUHRyPEZldGNoUmVxdWVzdD4gY2xvbmUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTkyLDM3ICsxMDcsMzcgQEAgaW5saW5l
IEZldGNoUmVxdWVzdDo6RmV0Y2hSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIEZldGNoQm9keSYmIGIKIHsKIH0KIAotaW5saW5lIFJlcXVlc3RDYWNoZSBGZXRjaFJlcXVl
c3Q6OmNhY2hlKCkgY29uc3QKK2lubGluZSBhdXRvIEZldGNoUmVxdWVzdDo6Y2FjaGUoKSBjb25z
dCAtPiBDYWNoZQogewogICAgIHJldHVybiBtX2ludGVybmFsUmVxdWVzdC5vcHRpb25zLmNhY2hl
OwogfQogCi1pbmxpbmUgUmVxdWVzdENyZWRlbnRpYWxzIEZldGNoUmVxdWVzdDo6Y3JlZGVudGlh
bHMoKSBjb25zdAoraW5saW5lIGF1dG8gRmV0Y2hSZXF1ZXN0OjpjcmVkZW50aWFscygpIGNvbnN0
IC0+IENyZWRlbnRpYWxzCiB7CiAgICAgcmV0dXJuIG1faW50ZXJuYWxSZXF1ZXN0Lm9wdGlvbnMu
Y3JlZGVudGlhbHM7CiB9CiAKLWlubGluZSBSZXF1ZXN0RGVzdGluYXRpb24gRmV0Y2hSZXF1ZXN0
OjpkZXN0aW5hdGlvbigpIGNvbnN0CitpbmxpbmUgYXV0byBGZXRjaFJlcXVlc3Q6OmRlc3RpbmF0
aW9uKCkgY29uc3QgLT4gRGVzdGluYXRpb24KIHsKICAgICByZXR1cm4gbV9pbnRlcm5hbFJlcXVl
c3Qub3B0aW9ucy5kZXN0aW5hdGlvbjsKIH0KIAotaW5saW5lIFJlcXVlc3RNb2RlIEZldGNoUmVx
dWVzdDo6bW9kZSgpIGNvbnN0CitpbmxpbmUgYXV0byBGZXRjaFJlcXVlc3Q6Om1vZGUoKSBjb25z
dCAtPiBNb2RlCiB7CiAgICAgcmV0dXJuIG1faW50ZXJuYWxSZXF1ZXN0Lm9wdGlvbnMubW9kZTsK
IH0KIAotaW5saW5lIFJlcXVlc3RSZWRpcmVjdCBGZXRjaFJlcXVlc3Q6OnJlZGlyZWN0KCkgY29u
c3QKK2lubGluZSBhdXRvIEZldGNoUmVxdWVzdDo6cmVkaXJlY3QoKSBjb25zdCAtPiBSZWRpcmVj
dAogewogICAgIHJldHVybiBtX2ludGVybmFsUmVxdWVzdC5vcHRpb25zLnJlZGlyZWN0OwogfQog
Ci1pbmxpbmUgUmVmZXJyZXJQb2xpY3kgRmV0Y2hSZXF1ZXN0OjpyZWZlcnJlclBvbGljeSgpIGNv
bnN0CitpbmxpbmUgYXV0byBGZXRjaFJlcXVlc3Q6OnJlZmVycmVyUG9saWN5KCkgY29uc3QgLT4g
UmVmZXJyZXJQb2xpY3kKIHsKICAgICByZXR1cm4gbV9pbnRlcm5hbFJlcXVlc3Qub3B0aW9ucy5y
ZWZlcnJlclBvbGljeTsKIH0KIAotaW5saW5lIFJlcXVlc3RUeXBlIEZldGNoUmVxdWVzdDo6dHlw
ZSgpIGNvbnN0CitpbmxpbmUgYXV0byBGZXRjaFJlcXVlc3Q6OnR5cGUoKSBjb25zdCAtPiBUeXBl
CiB7CiAgICAgcmV0dXJuIG1faW50ZXJuYWxSZXF1ZXN0Lm9wdGlvbnMudHlwZTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IDIxYTg0
MWZjNDZiM2M1MjUwNTM2NjIyZjA5MDlmMjdmZWMwOGU5OTQuLjM1YmUyNDM5NGZlNGFjMjVlMDE3
ZDAyNTVmZWI0NWNkODYzOGE4NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtNTEsNyArNTEsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wg
aXNOdWxsQm9keVN0YXR1cyhpbnQgc3RhdHVzKQogCiBSZWY8RmV0Y2hSZXNwb25zZT4gRmV0Y2hS
ZXNwb25zZTo6ZXJyb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBGZXRjaFJlc3BvbnNlKGNvbnRleHQsIFJlc3BvbnNlVHlwZTo6
RXJyb3IsIHsgfSwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUoRmV0Y2hIZWFkZXJzOjpHdWFyZDo6SW1t
dXRhYmxlKSwgeyB9KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXNwb25zZShj
b250ZXh0LCBUeXBlOjpFcnJvciwgeyB9LCBGZXRjaEhlYWRlcnM6OmNyZWF0ZShGZXRjaEhlYWRl
cnM6Okd1YXJkOjpJbW11dGFibGUpLCB7IH0pKTsKIH0KIAogUmVmUHRyPEZldGNoUmVzcG9uc2U+
IEZldGNoUmVzcG9uc2U6OnJlZGlyZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgc3RhdHVzLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTY2
LDcgKzY2LDcgQEAgUmVmUHRyPEZldGNoUmVzcG9uc2U+IEZldGNoUmVzcG9uc2U6OnJlZGlyZWN0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGMKICAgICAgICAgZWMgPSBUeXBlRXJy
b3I7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBhdXRvIHJlZGlyZWN0UmVz
cG9uc2UgPSBhZG9wdFJlZigqbmV3IEZldGNoUmVzcG9uc2UoY29udGV4dCwgUmVzcG9uc2VUeXBl
OjpEZWZhdWx0LCB7IH0sIEZldGNoSGVhZGVyczo6Y3JlYXRlKEZldGNoSGVhZGVyczo6R3VhcmQ6
OkltbXV0YWJsZSksIHsgfSkpOworICAgIGF1dG8gcmVkaXJlY3RSZXNwb25zZSA9IGFkb3B0UmVm
KCpuZXcgRmV0Y2hSZXNwb25zZShjb250ZXh0LCBUeXBlOjpEZWZhdWx0LCB7IH0sIEZldGNoSGVh
ZGVyczo6Y3JlYXRlKEZldGNoSGVhZGVyczo6R3VhcmQ6OkltbXV0YWJsZSksIHsgfSkpOwogICAg
IHJlZGlyZWN0UmVzcG9uc2UtPm1fcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoc3RhdHVzKTsK
ICAgICByZWRpcmVjdFJlc3BvbnNlLT5tX2hlYWRlcnMtPmZhc3RTZXQoSFRUUEhlYWRlck5hbWU6
OkxvY2F0aW9uLCByZXF1ZXN0VVJMLnN0cmluZygpKTsKICAgICByZXR1cm4gV1RGTW92ZShyZWRp
cmVjdFJlc3BvbnNlKTsKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6Omlu
aXRpYWxpemVXaXRoKGNvbnN0IERpY3Rpb25hcnkmIGluaXQsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ICAgIH0KIH0KIAotRmV0Y2hSZXNwb25zZTo6RmV0Y2hSZXNwb25zZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBSZXNwb25zZVR5cGUgdHlwZSwgRmV0Y2hCb2R5JiYgYm9keSwgUmVm
PEZldGNoSGVhZGVycz4mJiBoZWFkZXJzLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UpCitG
ZXRjaFJlc3BvbnNlOjpGZXRjaFJlc3BvbnNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIFR5cGUgdHlwZSwgRmV0Y2hCb2R5JiYgYm9keSwgUmVmPEZldGNoSGVhZGVycz4mJiBoZWFk
ZXJzLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UpCiAgICAgOiBGZXRjaEJvZHlPd25lcihj
b250ZXh0LCBXVEZNb3ZlKGJvZHkpKQogICAgICwgbV90eXBlKHR5cGUpCiAgICAgLCBtX3Jlc3Bv
bnNlKFdURk1vdmUocmVzcG9uc2UpKQpAQCAtMTMwLDcgKzEzMCw3IEBAIFJlZlB0cjxGZXRjaFJl
c3BvbnNlPiBGZXRjaFJlc3BvbnNlOjpjbG9uZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBFeGNlCiAKIHZvaWQgRmV0Y2hSZXNwb25zZTo6c3RhcnRGZXRjaGluZyhTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBGZXRjaFJlcXVlc3QmIHJlcXVlc3QsIEZldGNo
UHJvbWlzZSYmIHByb21pc2UpCiB7Ci0gICAgYXV0byByZXNwb25zZSA9IGFkb3B0UmVmKCpuZXcg
RmV0Y2hSZXNwb25zZShjb250ZXh0LCBSZXNwb25zZVR5cGU6OkJhc2ljLCBGZXRjaEJvZHk6Omxv
YWRpbmdCb2R5KCksIEZldGNoSGVhZGVyczo6Y3JlYXRlKEZldGNoSGVhZGVyczo6R3VhcmQ6Oklt
bXV0YWJsZSksIFJlc291cmNlUmVzcG9uc2UoKSkpOworICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9w
dFJlZigqbmV3IEZldGNoUmVzcG9uc2UoY29udGV4dCwgVHlwZTo6QmFzaWMsIEZldGNoQm9keTo6
bG9hZGluZ0JvZHkoKSwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUoRmV0Y2hIZWFkZXJzOjpHdWFyZDo6
SW1tdXRhYmxlKSwgUmVzb3VyY2VSZXNwb25zZSgpKSk7CiAKICAgICAvLyBTZXR0aW5nIHBlbmRp
bmcgYWN0aXZpdHkgdW50aWwgQm9keUxvYWRlciBkaWRGYWlsIG9yIGRpZFN1Y2NlZWQgY2FsbGJh
Y2sgaXMgY2FsbGVkLgogICAgIHJlc3BvbnNlLT5zZXRQZW5kaW5nQWN0aXZpdHkocmVzcG9uc2Uu
cHRyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApp
bmRleCBkOWVmMzhkMjExYTEyZGJkYjk5NWZjZTU5NDI2MjMyZWE0NzM2YjRlLi43ZTQ4YjAzYjA0
MzU5YzdjZjAwNDYwODc4Zjc0ZDliOTZiNjRmMzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApAQCAtNDYsMTEgKzQ2LDExIEBAIGNsYXNzIFJlYWRh
YmxlU3RyZWFtU291cmNlOwogCiB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCi1lbnVtIGNs
YXNzIFJlc3BvbnNlVHlwZSB7IEJhc2ljLCBDb3JzLCBEZWZhdWx0LCBFcnJvciwgT3BhcXVlLCBP
cGFxdWVyZWRpcmVjdCB9OwotCiBjbGFzcyBGZXRjaFJlc3BvbnNlIGZpbmFsIDogcHVibGljIEZl
dGNoQm9keU93bmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZldGNoUmVzcG9uc2U+IGNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IEZldGNoUmVzcG9uc2UoY29udGV4dCwgUmVzcG9uc2VUeXBlOjpEZWZhdWx0LCB7IH0sIEZl
dGNoSGVhZGVyczo6Y3JlYXRlKEZldGNoSGVhZGVyczo6R3VhcmQ6OlJlc3BvbnNlKSwgUmVzb3Vy
Y2VSZXNwb25zZSgpKSk7IH0KKyAgICBlbnVtIGNsYXNzIFR5cGUgeyBCYXNpYywgQ29ycywgRGVm
YXVsdCwgRXJyb3IsIE9wYXF1ZSwgT3BhcXVlcmVkaXJlY3QgfTsKKworICAgIHN0YXRpYyBSZWY8
RmV0Y2hSZXNwb25zZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXNwb25zZShjb250ZXh0LCBUeXBlOjpEZWZhdWx0
LCB7IH0sIEZldGNoSGVhZGVyczo6Y3JlYXRlKEZldGNoSGVhZGVyczo6R3VhcmQ6OlJlc3BvbnNl
KSwgUmVzb3VyY2VSZXNwb25zZSgpKSk7IH0KICAgICBzdGF0aWMgUmVmPEZldGNoUmVzcG9uc2U+
IGVycm9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKICAgICBzdGF0aWMgUmVmUHRyPEZldGNo
UmVzcG9uc2U+IHJlZGlyZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcm
LCBpbnQsIEV4Y2VwdGlvbkNvZGUmKTsKIApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGluaXRpYWxpemVXaXRoKGNvbnN0IERpY3Rpb25hcnkmLCBFeGNlcHRpb25Db2RlJik7
CiAKLSAgICBSZXNwb25zZVR5cGUgdHlwZSgpIGNvbnN0OworICAgIFR5cGUgdHlwZSgpIGNvbnN0
OwogICAgIGNvbnN0IFN0cmluZyYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZS51cmwo
KS5zdHJpbmcoKTsgfQogICAgIGJvb2wgcmVkaXJlY3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNS
ZWRpcmVjdGVkOyB9CiAgICAgaW50IHN0YXR1cygpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2Uu
aHR0cFN0YXR1c0NvZGUoKTsgfQpAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAog
cHJpdmF0ZToKLSAgICBGZXRjaFJlc3BvbnNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZXNw
b25zZVR5cGUsIEZldGNoQm9keSYmLCBSZWY8RmV0Y2hIZWFkZXJzPiYmLCBSZXNvdXJjZVJlc3Bv
bnNlJiYpOworICAgIEZldGNoUmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFR5cGUs
IEZldGNoQm9keSYmLCBSZWY8RmV0Y2hIZWFkZXJzPiYmLCBSZXNvdXJjZVJlc3BvbnNlJiYpOwog
CiAgICAgc3RhdGljIHZvaWQgc3RhcnRGZXRjaGluZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
Y29uc3QgRmV0Y2hSZXF1ZXN0JiwgRmV0Y2hQcm9taXNlJiYpOwogCkBAIC0xMDksMTQgKzEwOSwx
NCBAQCBwcml2YXRlOgogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RmV0Y2hMb2FkZXI+IG1fbG9h
ZGVyOwogICAgIH07CiAKLSAgICBSZXNwb25zZVR5cGUgbV90eXBlOworICAgIFR5cGUgbV90eXBl
OwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKICAgICBSZWY8RmV0Y2hIZWFkZXJz
PiBtX2hlYWRlcnM7CiAgICAgYm9vbCBtX2lzUmVkaXJlY3RlZCA9IGZhbHNlOwogICAgIE9wdGlv
bmFsPEJvZHlMb2FkZXI+IG1fYm9keUxvYWRlcjsKIH07CiAKLWlubGluZSBSZXNwb25zZVR5cGUg
RmV0Y2hSZXNwb25zZTo6dHlwZSgpIGNvbnN0CitpbmxpbmUgYXV0byBGZXRjaFJlc3BvbnNlOjp0
eXBlKCkgY29uc3QgLT4gVHlwZQogewogICAgIHJldHVybiBtX3R5cGU7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNI
b3N0LmNwcAppbmRleCA2NmM1ZjE5MThlZDdlM2Y4MzQwOGQwMmI4NzY3MzI1YmQxZWFmYjdlLi45
MTEyMjMwNjRiOTc4MGQzYTRiMTJmMTdiMDI4MGIxOTlhMzk4ZDkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9z
dC5jcHAKQEAgLTIzMyw3ICsyMzMsNyBAQCBTdHJpbmcgTWVkaWFDb250cm9sc0hvc3Q6OmV4dGVy
bmFsRGV2aWNlRGlzcGxheU5hbWUoKSBjb25zdAogI2VuZGlmCiB9CiAKLURldmljZVR5cGUgTWVk
aWFDb250cm9sc0hvc3Q6OmV4dGVybmFsRGV2aWNlVHlwZSgpIGNvbnN0CithdXRvIE1lZGlhQ29u
dHJvbHNIb3N0OjpleHRlcm5hbERldmljZVR5cGUoKSBjb25zdCAtPiBEZXZpY2VUeXBlCiB7CiAj
aWYgIUVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgcmV0dXJuIERldmljZVR5
cGU6Ok5vbmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJv
bHMvTWVkaWFDb250cm9sc0hvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250
cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5oCmluZGV4IGMwYTc4Mjk4ZjQ0ZjM4ZWJmMjNhNTkyYWI4
YzliMWJjZDJkZjZkMzQuLjRiYTNjYTM5Y2E5NjNiZWEzMjE2ZWNhMDMwNjRkMmMwNmUyMDA2N2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNv
bnRyb2xzSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9N
ZWRpYUNvbnRyb2xzSG9zdC5oCkBAIC00Miw4ICs0Miw2IEBAIGNsYXNzIE1lZGlhQ29udHJvbFRl
eHRUcmFja0NvbnRhaW5lckVsZW1lbnQ7CiBjbGFzcyBUZXh0VHJhY2s7CiBjbGFzcyBUZXh0VHJh
Y2tMaXN0OwogCi1lbnVtIGNsYXNzIERldmljZVR5cGUgeyBOb25lLCBBaXJwbGF5LCBUdm91dCB9
OwotCiBjbGFzcyBNZWRpYUNvbnRyb2xzSG9zdCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhQ29u
dHJvbHNIb3N0PiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxNZWRpYUNvbnRyb2xzSG9zdD4g
Y3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqKTsKQEAgLTczLDYgKzcxLDggQEAgcHVibGljOgogICAg
IHZvaWQgZXhpdGVkRnVsbHNjcmVlbigpOwogCiAgICAgU3RyaW5nIGV4dGVybmFsRGV2aWNlRGlz
cGxheU5hbWUoKSBjb25zdDsKKworICAgIGVudW0gY2xhc3MgRGV2aWNlVHlwZSB7IE5vbmUsIEFp
cnBsYXksIFR2b3V0IH07CiAgICAgRGV2aWNlVHlwZSBleHRlcm5hbERldmljZVR5cGUoKSBjb25z
dDsKIAogICAgIGJvb2wgY29udHJvbHNEZXBlbmRPblBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNz
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lv
bi5jcHAKaW5kZXggNzgwYmQwOTAzMDA5MWJjZTYyOGQzYTZkMzRhZjFhZGM1NzNhY2RmNC4uM2E4
MjE2NmYxMDE1OTQzNWI3NmU5Zjg1Y2RmZTQ4YzUxYjliNGVjNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwCkBAIC0zNyw3
ICszNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTWVkaWFTZXNzaW9uOjpNZWRpYVNl
c3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgTWVkaWFTZXNzaW9uS2luZCBr
aW5kKQorTWVkaWFTZXNzaW9uOjpNZWRpYVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgS2luZCBraW5kKQogICAgIDogbV9kb2N1bWVudChkb3duY2FzdDxEb2N1bWVudD4o
Y29udGV4dCkpCiAgICAgLCBtX2tpbmQoa2luZCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmgKaW5kZXggNjdkZDM5MzdkMDAyNzAw
NjAxOGI1N2UxYjRhZWQyZDYxMzkyOTc5MS4uNTExMDE5MWRlYmFkMzY0N2NkMDI2OTkwNGFmOGE2
OTMxZDEwYzRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFTZXNzaW9uLmgKQEAgLTM2LDIwICszNiwxOSBAQCBjbGFzcyBEaWN0aW9uYXJ5Owog
Y2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBIVE1MTWVkaWFFbGVtZW50OwogCi1lbnVtIGNsYXNzIE1l
ZGlhU2Vzc2lvbktpbmQgeyBDb250ZW50LCBUcmFuc2llbnQsIFRyYW5zaWVudFNvbG8sIEFtYmll
bnQgfTsKLQogY2xhc3MgTWVkaWFTZXNzaW9uIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8TWVk
aWFTZXNzaW9uPiB7CiBwdWJsaWM6CisgICAgZW51bSBjbGFzcyBLaW5kIHsgQ29udGVudCwgVHJh
bnNpZW50LCBUcmFuc2llbnRTb2xvLCBBbWJpZW50IH07CiAgICAgZW51bSBjbGFzcyBTdGF0ZSB7
IElkbGUsIEFjdGl2ZSwgSW50ZXJydXB0ZWQgfTsKIAotICAgIHN0YXRpYyBSZWY8TWVkaWFTZXNz
aW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgTWVkaWFTZXNzaW9u
S2luZCBraW5kKQorICAgIHN0YXRpYyBSZWY8TWVkaWFTZXNzaW9uPiBjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgS2luZCBraW5kKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgTWVkaWFTZXNzaW9uKGNvbnRleHQsIGtpbmQpKTsKICAgICB9CiAKICAg
ICB+TWVkaWFTZXNzaW9uKCk7CiAKLSAgICBNZWRpYVNlc3Npb25LaW5kIGtpbmQoKSBjb25zdCB7
IHJldHVybiBtX2tpbmQ7IH0KKyAgICBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7
IH0KICAgICBNZWRpYVJlbW90ZUNvbnRyb2xzKiBjb250cm9scygpOwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgU3RhdGUgY3VycmVudFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50U3RhdGU7
IH0KQEAgLTk1LDcgKzk0LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PEhUTUxNZWRpYUVsZW1l
bnQqPiogbV9pdGVyYXRlZEFjdGl2ZVBhcnRpY2lwYXRpbmdFbGVtZW50cyB7IG51bGxwdHIgfTsK
IAogICAgIERvY3VtZW50JiBtX2RvY3VtZW50OwotICAgIGNvbnN0IE1lZGlhU2Vzc2lvbktpbmQg
bV9raW5kOworICAgIGNvbnN0IEtpbmQgbV9raW5kOwogICAgIFJlZlB0cjxNZWRpYVJlbW90ZUNv
bnRyb2xzPiBtX2NvbnRyb2xzOwogICAgIE1lZGlhU2Vzc2lvbk1ldGFkYXRhIG1fbWV0YWRhdGE7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRp
YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291
cmNlLmNwcAppbmRleCAxYTA5YzNlZmZmZGY2OTI0MDdkOTE0YWI1MGY4NjdmYmM4NGQyYTE0Li40
MTQyODc5YzVjM2QxODA2YTQ3NGI2YWE3ZWM4YTM5NjEwYmVlZTY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcApAQCAtNTQ1LDcg
KzU0NSw3IEBAIFNvdXJjZUJ1ZmZlciogTWVkaWFTb3VyY2U6OmFkZFNvdXJjZUJ1ZmZlcihjb25z
dCBTdHJpbmcmIHR5cGUsIEV4Y2VwdGlvbkNvZGUmIGVjCiAgICAgLy8g4oazIFNldCB0aGUgbW9k
ZSBhdHRyaWJ1dGUgb24gdGhlIG5ldyBvYmplY3QgdG8gInNlcXVlbmNlIi4KICAgICAvLyBPdGhl
cndpc2U6CiAgICAgLy8g4oazIFNldCB0aGUgbW9kZSBhdHRyaWJ1dGUgb24gdGhlIG5ldyBvYmpl
Y3QgdG8gInNlZ21lbnRzIi4KLSAgICBidWZmZXItPnNldE1vZGUoc2hvdWxkR2VuZXJhdGVUaW1l
c3RhbXBzID8gQXBwZW5kTW9kZTo6U2VxdWVuY2UgOiBBcHBlbmRNb2RlOjpTZWdtZW50cywgSUdO
T1JFX0VYQ0VQVElPTik7CisgICAgYnVmZmVyLT5zZXRNb2RlKHNob3VsZEdlbmVyYXRlVGltZXN0
YW1wcyA/IFNvdXJjZUJ1ZmZlcjo6QXBwZW5kTW9kZTo6U2VxdWVuY2UgOiBTb3VyY2VCdWZmZXI6
OkFwcGVuZE1vZGU6OlNlZ21lbnRzLCBJR05PUkVfRVhDRVBUSU9OKTsKIAogICAgIFNvdXJjZUJ1
ZmZlciogcmVzdWx0ID0gYnVmZmVyLnB0cigpOwogCkBAIC02NzEsNyArNjcxLDcgQEAgdm9pZCBN
ZWRpYVNvdXJjZTo6cmVtb3ZlU291cmNlQnVmZmVyKFNvdXJjZUJ1ZmZlciYgYnVmZmVyLCBFeGNl
cHRpb25Db2RlJiBlYykKIAogICAgICAgICAgICAgLy8gOS4zLjIgSWYgdGhlIG1vZGUgYXR0cmli
dXRlIG9uIHRoZSBUZXh0VHJhY2sgb2JqZWN0IGlzIHNldCB0byAic2hvd2luZyIgb3IgImhpZGRl
biIsIHRoZW4KICAgICAgICAgICAgIC8vIHNldCB0aGUgcmVtb3ZlZCBlbmFibGVkIHRleHQgdHJh
Y2sgZmxhZyB0byB0cnVlLgotICAgICAgICAgICAgaWYgKHRyYWNrLT5tb2RlKCkgPT0gVGV4dFRy
YWNrTW9kZTo6U2hvd2luZyB8fCB0cmFjay0+bW9kZSgpID09IFRleHRUcmFja01vZGU6OkhpZGRl
bikKKyAgICAgICAgICAgIGlmICh0cmFjay0+bW9kZSgpID09IFRleHRUcmFjazo6TW9kZTo6U2hv
d2luZyB8fCB0cmFjay0+bW9kZSgpID09IFRleHRUcmFjazo6TW9kZTo6SGlkZGVuKQogICAgICAg
ICAgICAgICAgIHJlbW92ZWRFbmFibGVkVGV4dFRyYWNrID0gdHJ1ZTsKIAogICAgICAgICAgICAg
Ly8gOS4zLjMgUmVtb3ZlIHRoZSBUZXh0VHJhY2sgb2JqZWN0IGZyb20gdGhlIEhUTUxNZWRpYUVs
ZW1lbnQgdGV4dFRyYWNrcyBsaXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9NZWRpYVNvdXJjZS5oCmluZGV4IDU5NzFjODZlNmY0NjBlYzBmMWE3MzhiM2QwNjNh
MWJjYjBhMjFjMDAuLjE5YmExYTRlOGM0NDE5MTRjNWMyZTAzY2M2OGM0NjFjZDQzZmJhOGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmgK
QEAgLTQ4LDggKzQ4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHZW5lcmljRXZl
bnRRdWV1ZTsKIAotZW51bSBjbGFzcyBFbmRPZlN0cmVhbUVycm9yIHsgTmV0d29yaywgRGVjb2Rl
IH07Ci0KIGNsYXNzIE1lZGlhU291cmNlIDogcHVibGljIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVu
dCwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURh
dGEsIHB1YmxpYyBVUkxSZWdpc3RyYWJsZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgc2V0
UmVnaXN0cnkoVVJMUmVnaXN0cnkqKTsKQEAgLTY5LDYgKzY3LDggQEAgcHVibGljOgogICAgIGJv
b2wgaXNDbG9zZWQoKSBjb25zdDsKICAgICBib29sIGlzRW5kZWQoKSBjb25zdDsKICAgICB2b2lk
IHNvdXJjZUJ1ZmZlckRpZENoYW5nZUFjdGl2ZVN0YXRlKFNvdXJjZUJ1ZmZlciYsIGJvb2wpOwor
CisgICAgZW51bSBjbGFzcyBFbmRPZlN0cmVhbUVycm9yIHsgTmV0d29yaywgRGVjb2RlIH07CiAg
ICAgdm9pZCBzdHJlYW1FbmRlZFdpdGhFcnJvcihPcHRpb25hbDxFbmRPZlN0cmVhbUVycm9yPik7
CiAKICAgICAvLyBNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAppbmRleCBiYzQ5MjJiY2Q2
MWU2ZmYwNTQ1NWQwNDAxM2I5MTUzOTdjNjg4OGYwLi5jYzJkM2I4ZGJjZDdmNmUxMGM2OTE0MjYy
ODQ3NGQyNDFjNmVjMjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCkBAIC02NDMsNyArNjQzLDcgQEAgdm9pZCBTb3VyY2VC
dWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlUmVuZGVyaW5nRXJyb3IoU291cmNl
QnVmZmVyUHJpdmEKICAgICBMT0coTWVkaWFTb3VyY2UsICJTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1
ZmZlclByaXZhdGVEaWRSZWNlaXZlUmVuZGVyaW5nRXJyb3IoJXApIC0gcmVzdWx0ID0gJWkiLCB0
aGlzLCBlcnJvcik7CiAKICAgICBpZiAoIWlzUmVtb3ZlZCgpKQotICAgICAgICBtX3NvdXJjZS0+
c3RyZWFtRW5kZWRXaXRoRXJyb3IoRW5kT2ZTdHJlYW1FcnJvcjo6RGVjb2RlKTsKKyAgICAgICAg
bV9zb3VyY2UtPnN0cmVhbUVuZGVkV2l0aEVycm9yKE1lZGlhU291cmNlOjpFbmRPZlN0cmVhbUVy
cm9yOjpEZWNvZGUpOwogfQogCiBzdGF0aWMgYm9vbCBkZWNvZGVUaW1lQ29tcGFyYXRvcihjb25z
dCBQcmVzZW50YXRpb25PcmRlclNhbXBsZU1hcDo6TWFwVHlwZTo6dmFsdWVfdHlwZSYgYSwgY29u
c3QgUHJlc2VudGF0aW9uT3JkZXJTYW1wbGVNYXA6Ok1hcFR5cGU6OnZhbHVlX3R5cGUmIGIpCkBA
IC0xMjcwLDcgKzEyNzAsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6YXBwZW5kRXJyb3IoYm9vbCBk
ZWNvZGVFcnJvclBhcmFtKQogCiAgICAgLy8gNS4gSWYgZGVjb2RlIGVycm9yIGlzIHRydWUsIHRo
ZW4gcnVuIHRoZSBlbmQgb2Ygc3RyZWFtIGFsZ29yaXRobSB3aXRoIHRoZSBlcnJvciBwYXJhbWV0
ZXIgc2V0IHRvICJkZWNvZGUiLgogICAgIGlmIChkZWNvZGVFcnJvclBhcmFtKQotICAgICAgICBt
X3NvdXJjZS0+c3RyZWFtRW5kZWRXaXRoRXJyb3IoRW5kT2ZTdHJlYW1FcnJvcjo6RGVjb2RlKTsK
KyAgICAgICAgbV9zb3VyY2UtPnN0cmVhbUVuZGVkV2l0aEVycm9yKE1lZGlhU291cmNlOjpFbmRP
ZlN0cmVhbUVycm9yOjpEZWNvZGUpOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVm
ZmVyUHJpdmF0ZURpZFJlY2VpdmVTYW1wbGUoU291cmNlQnVmZmVyUHJpdmF0ZSosIFBhc3NSZWZQ
dHI8TWVkaWFTYW1wbGU+IHBycFNhbXBsZSkKQEAgLTE0MjEsNyArMTQyMSw3IEBAIHZvaWQgU291
cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZVNhbXBsZShTb3VyY2VCdWZm
ZXJQcml2YXRlKiwgUGFzCiAgICAgICAgIE1lZGlhVGltZSBwcmVzZW50YXRpb25TdGFydFRpbWUg
PSBNZWRpYVRpbWU6Onplcm9UaW1lKCk7CiAgICAgICAgIGlmIChwcmVzZW50YXRpb25UaW1lc3Rh
bXAgPCBwcmVzZW50YXRpb25TdGFydFRpbWUpIHsKICAgICAgICAgICAgIExPRyhNZWRpYVNvdXJj
ZSwgIlNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVTYW1wbGUoJXAp
IC0gZmFpbGluZyBiZWNhdXNlIHByZXNlbnRhdGlvblRpbWVzdGFtcCA8IHByZXNlbnRhdGlvblN0
YXJ0VGltZSIsIHRoaXMpOwotICAgICAgICAgICAgbV9zb3VyY2UtPnN0cmVhbUVuZGVkV2l0aEVy
cm9yKEVuZE9mU3RyZWFtRXJyb3I6OkRlY29kZSk7CisgICAgICAgICAgICBtX3NvdXJjZS0+c3Ry
ZWFtRW5kZWRXaXRoRXJyb3IoTWVkaWFTb3VyY2U6OkVuZE9mU3RyZWFtRXJyb3I6OkRlY29kZSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTY3NCw3ICsxNjc0LDcgQEAg
dm9pZCBTb3VyY2VCdWZmZXI6OnRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRUcmFjayogdHJhY2sp
CiAgICAgLy8gMi40LjUgQ2hhbmdlcyB0byBzZWxlY3RlZC9lbmFibGVkIHRyYWNrIHN0YXRlCiAg
ICAgLy8gSWYgYSB0ZXh0IHRyYWNrIG1vZGUgYmVjb21lcyAiZGlzYWJsZWQiIGFuZCB0aGUgU291
cmNlQnVmZmVyIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRyYWNrIGlzIG5vdAogICAgIC8vIGFzc29j
aWF0ZWQgd2l0aCBhbnkgb3RoZXIgZW5hYmxlZCBvciBzZWxlY3RlZCB0cmFjaywgdGhlbiBydW4g
dGhlIGZvbGxvd2luZyBzdGVwczoKLSAgICBpZiAodHJhY2stPm1vZGUoKSA9PSBUZXh0VHJhY2tN
b2RlOjpEaXNhYmxlZAorICAgIGlmICh0cmFjay0+bW9kZSgpID09IFRleHRUcmFjazo6TW9kZTo6
RGlzYWJsZWQKICAgICAgICAgJiYgKCFtX3ZpZGVvVHJhY2tzIHx8ICFtX3ZpZGVvVHJhY2tzLT5p
c0FueVRyYWNrRW5hYmxlZCgpKQogICAgICAgICAmJiAoIW1fYXVkaW9UcmFja3MgfHwgIW1fYXVk
aW9UcmFja3MtPmlzQW55VHJhY2tFbmFibGVkKCkpCiAgICAgICAgICYmICghbV90ZXh0VHJhY2tz
IHx8ICFtX3RleHRUcmFja3MtPmlzQW55VHJhY2tFbmFibGVkKCkpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaAppbmRleCA0ODdkZmM4
ZWQxMmQ2NDJiYzJjZDBkOTE1NWNkZDZiNmZjNTY2OTU2Li5jYjBkYzhmN2FiMmU5ZTJkYmEwODc0
NTAwNzI5ODgyMDM5MGJjMDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzb3VyY2UvU291cmNlQnVmZmVyLmgKQEAgLTU4LDEwICs1OCw2IEBAIGNsYXNzIFRleHRUcmFj
a0xpc3Q7CiBjbGFzcyBUaW1lUmFuZ2VzOwogY2xhc3MgVmlkZW9UcmFja0xpc3Q7CiAKLWVudW0g
Y2xhc3MgRW5kT2ZTdHJlYW1FcnJvcjsKLQotZW51bSBjbGFzcyBBcHBlbmRNb2RlIHsgU2VnbWVu
dHMsIFNlcXVlbmNlIH07Ci0KIGNsYXNzIFNvdXJjZUJ1ZmZlciBmaW5hbCA6IHB1YmxpYyBSZWZD
b3VudGVkPFNvdXJjZUJ1ZmZlcj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVu
dFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudCwg
cHVibGljIEF1ZGlvVHJhY2tDbGllbnQsIHB1YmxpYyBWaWRlb1RyYWNrQ2xpZW50LCBwdWJsaWMg
VGV4dFRyYWNrQ2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFNvdXJjZUJ1ZmZlcj4g
Y3JlYXRlKFJlZjxTb3VyY2VCdWZmZXJQcml2YXRlPiYmLCBNZWRpYVNvdXJjZSopOwpAQCAtMTE3
LDYgKzExMyw3IEBAIHB1YmxpYzoKIAogICAgIERvY3VtZW50JiBkb2N1bWVudCgpIGNvbnN0Owog
CisgICAgZW51bSBjbGFzcyBBcHBlbmRNb2RlIHsgU2VnbWVudHMsIFNlcXVlbmNlIH07CiAgICAg
QXBwZW5kTW9kZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CiAgICAgdm9pZCBzZXRN
b2RlKEFwcGVuZE1vZGUsIEV4Y2VwdGlvbkNvZGUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZUluZm8uY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZUluZm8uY3BwCmluZGV4IDRiODI3
OGUxMTdkODY0YTEyZGRhY2YzMmY0YzRiYWRkMjJiMWQyMTcuLmZlNzYwZDkxN2YyZTNkMTBmYTU3
MjU0YmYxMmZiYzA5M2Q5ZGNkNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUgTWVkaWFEZXZpY2VJbmZvOjpNZWRpYURldmlj
ZUluZm8oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBsYWJl
bCwgY29uc3QgU3RyaW5nJiBkZXZpY2VJZCwgY29uc3QgU3RyaW5nJiBncm91cElkLCBNZWRpYURl
dmljZUtpbmQga2luZCkKK2lubGluZSBNZWRpYURldmljZUluZm86Ok1lZGlhRGV2aWNlSW5mbyhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25z
dCBTdHJpbmcmIGRldmljZUlkLCBjb25zdCBTdHJpbmcmIGdyb3VwSWQsIEtpbmQga2luZCkKICAg
ICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKGNvbnRleHQpCiAgICAgLCBtX2xhYmVsKGxh
YmVsKQogICAgICwgbV9kZXZpY2VJZChkZXZpY2VJZCkKQEAgLTM5LDcgKzM5LDcgQEAgaW5saW5l
IE1lZGlhRGV2aWNlSW5mbzo6TWVkaWFEZXZpY2VJbmZvKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IFMKIHsKIH0KIAotUmVmPE1lZGlhRGV2aWNlSW5mbz4gTWVkaWFEZXZp
Y2VJbmZvOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3Ry
aW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBkZXZpY2VJZCwgY29uc3QgU3RyaW5nJiBncm91cElk
LCBNZWRpYURldmljZUtpbmQga2luZCkKK1JlZjxNZWRpYURldmljZUluZm8+IE1lZGlhRGV2aWNl
SW5mbzo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmlu
ZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgZGV2aWNlSWQsIGNvbnN0IFN0cmluZyYgZ3JvdXBJZCwg
S2luZCBraW5kKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhRGV2aWNlSW5mbyhj
b250ZXh0LCBsYWJlbCwgZGV2aWNlSWQsIGdyb3VwSWQsIGtpbmQpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5oCmluZGV4
IGM2NTlmNTJmYTA3OGE0YmI3MDQ3OWY3NDE2OTkzMzU4Zjc5OTFjM2YuLmZjNjg5MDQzMzMwOWQ0
NGU1N2QyYmNjNzk2YmRlZGRhNWY0YTNkYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZUluZm8uaApAQCAtMzMsMjQgKzMzLDI0IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBjbGFzcyBNZWRpYURldmljZUtpbmQgeyBB
dWRpb2lucHV0LCBBdWRpb291dHB1dCwgVmlkZW9pbnB1dCB9OwotCiBjbGFzcyBNZWRpYURldmlj
ZUluZm8gOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYURldmljZUluZm8+LCBwdWJsaWMgU2NyaXB0
V3JhcHBhYmxlLCBwcml2YXRlIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPE1lZGlhRGV2aWNlSW5mbz4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBNZWRp
YURldmljZUtpbmQpOworICAgIGVudW0gY2xhc3MgS2luZCB7IEF1ZGlvaW5wdXQsIEF1ZGlvb3V0
cHV0LCBWaWRlb2lucHV0IH07CisKKyAgICBzdGF0aWMgUmVmPE1lZGlhRGV2aWNlSW5mbz4gY3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmLCBLaW5kKTsKIAogICAgIGNvbnN0IFN0cmluZyYgbGFiZWwoKSBjb25z
dCB7IHJldHVybiBtX2xhYmVsOyB9CiAgICAgY29uc3QgU3RyaW5nJiBkZXZpY2VJZCgpIGNvbnN0
IHsgcmV0dXJuIG1fZGV2aWNlSWQ7IH0KICAgICBjb25zdCBTdHJpbmcmIGdyb3VwSWQoKSBjb25z
dCB7IHJldHVybiBtX2dyb3VwSWQ7IH0KLSAgICBNZWRpYURldmljZUtpbmQga2luZCgpIGNvbnN0
IHsgcmV0dXJuIG1fa2luZDsgfQorICAgIEtpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2lu
ZDsgfQogCiBwcml2YXRlOgotICAgIE1lZGlhRGV2aWNlSW5mbyhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTWVkaWFE
ZXZpY2VLaW5kKTsKKyAgICBNZWRpYURldmljZUluZm8oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIEtpbmQpOwogCiAg
ICAgY29uc3QgU3RyaW5nIG1fbGFiZWw7CiAgICAgY29uc3QgU3RyaW5nIG1fZGV2aWNlSWQ7CiAg
ICAgY29uc3QgU3RyaW5nIG1fZ3JvdXBJZDsKLSAgICBjb25zdCBNZWRpYURldmljZUtpbmQgbV9r
aW5kOworICAgIGNvbnN0IEtpbmQgbV9raW5kOwogfTsKIAogdHlwZWRlZiBWZWN0b3I8UmVmUHRy
PE1lZGlhRGV2aWNlSW5mbz4+IE1lZGlhRGV2aWNlSW5mb1ZlY3RvcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVlc3Qu
Y3BwCmluZGV4IDg0OGVjODBjYTRjNTFhZmNiOTVkNmE3NGYyY2FhYTcwZmZhNTMzZTkuLjE4MDJj
YzViOWU3NDU1ZjRhZmJkODQ4MjE5YTNkYTIyOThjYjA3MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNSZXF1ZXN0LmNw
cApAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgTWVkaWFEZXZpY2VzUmVxdWVzdDo6ZGlkQ29tcGxl
dGVUcmFja1NvdXJjZUluZm9SZXF1ZXN0KGNvbnN0IFRyYWNrU291cmNlSW5mCiAKICAgICAgICAg
U3RyaW5nIGdyb3VwSWQgPSBoYXNoSUQoZGV2aWNlSW5mby0+Z3JvdXBJZCgpKTsKIAotICAgICAg
ICBhdXRvIGRldmljZVR5cGUgPSBkZXZpY2VJbmZvLT5raW5kKCkgPT0gVHJhY2tTb3VyY2VJbmZv
OjpTb3VyY2VLaW5kOjpBdWRpbyA/IE1lZGlhRGV2aWNlS2luZDo6QXVkaW9pbnB1dCA6IE1lZGlh
RGV2aWNlS2luZDo6VmlkZW9pbnB1dDsKKyAgICAgICAgYXV0byBkZXZpY2VUeXBlID0gZGV2aWNl
SW5mby0+a2luZCgpID09IFRyYWNrU291cmNlSW5mbzo6U291cmNlS2luZDo6QXVkaW8gPyBNZWRp
YURldmljZUluZm86OktpbmQ6OkF1ZGlvaW5wdXQgOiBNZWRpYURldmljZUluZm86OktpbmQ6OlZp
ZGVvaW5wdXQ7CiAKICAgICAgICAgZGV2aWNlcy5hcHBlbmQoTWVkaWFEZXZpY2VJbmZvOjpjcmVh
dGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBsYWJlbCwgaWQsIGdyb3VwSWQsIGRldmljZVR5
cGUpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcAppbmRleCAxNWZjOThlMmFlMjVkOGUyYmVkODdiZDY4
NGVkNDBiNGVkMGU4OTVhLi4zYjM5MmRhYjRiZDBiNjg5YmRiY2RjYWExNzIyMDEwMGQyNGI1NjNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtVHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFjay5jcHAKQEAgLTExMSw5ICsxMTEsOSBAQCBib29sIE1lZGlhU3RyZWFtVHJh
Y2s6OnJlbW90ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+cmVtb3RlKCk7CiB9CiAK
LU1lZGlhU3RyZWFtVHJhY2tTdGF0ZSBNZWRpYVN0cmVhbVRyYWNrOjpyZWFkeVN0YXRlKCkgY29u
c3QKK2F1dG8gTWVkaWFTdHJlYW1UcmFjazo6cmVhZHlTdGF0ZSgpIGNvbnN0IC0+IFN0YXRlCiB7
Ci0gICAgcmV0dXJuIGVuZGVkKCkgPyBNZWRpYVN0cmVhbVRyYWNrU3RhdGU6OkVuZGVkIDogTWVk
aWFTdHJlYW1UcmFja1N0YXRlOjpMaXZlOworICAgIHJldHVybiBlbmRlZCgpID8gU3RhdGU6OkVu
ZGVkIDogU3RhdGU6OkxpdmU7CiB9CiAKIGJvb2wgTWVkaWFTdHJlYW1UcmFjazo6ZW5kZWQoKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtVHJhY2suaAppbmRleCBjOGRmYWU0OGM4MmUyMjcwZDNjYTdjMWUyNDI4MDQyY2M2ZjFk
NDEyLi5jOTlmNGNlMzQyNGMzNWQzODhmOTM2ZGJjNzhhODE0MjM1ZWM2ZjA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2su
aApAQCAtNDYsOCArNDYsNiBAQCBjbGFzcyBNZWRpYUNvbnN0cmFpbnRzSW1wbDsKIGNsYXNzIE1l
ZGlhU291cmNlU2V0dGluZ3M7CiBjbGFzcyBNZWRpYVRyYWNrQ29uc3RyYWludHM7CiAKLWVudW0g
Y2xhc3MgTWVkaWFTdHJlYW1UcmFja1N0YXRlIHsgTmV3LCBMaXZlLCBFbmRlZCB9OwotCiBjbGFz
cyBNZWRpYVN0cmVhbVRyYWNrIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW1U
cmFjaz4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxp
bmVEYXRhLCBwcml2YXRlIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpPYnNlcnZlciB7CiBwdWJs
aWM6CiAgICAgY2xhc3MgT2JzZXJ2ZXIgewpAQCAtNzAsNyArNjgsOCBAQCBwdWJsaWM6CiAgICAg
Ym9vbCByZWFkb25seSgpIGNvbnN0OwogICAgIGJvb2wgcmVtb3RlKCkgY29uc3Q7CiAKLSAgICBN
ZWRpYVN0cmVhbVRyYWNrU3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0OworICAgIGVudW0gY2xhc3Mg
U3RhdGUgeyBOZXcsIExpdmUsIEVuZGVkIH07CisgICAgU3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0
OwogCiAgICAgYm9vbCBlbmRlZCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0NvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDQ29uZmlndXJhdGlvbi5oCmluZGV4IDE0MDJmZWQzNGEz
YjJiYjVmZDk5ZWNlZjk2NTNhNDFhMjcxNDM2NjAuLmM5ZjY0YzBhYWUyYmNkYTRhN2E4NTI4NTg3
NGRlNGU1ZGY3ZTc0YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDQ29uZmlndXJhdGlvbi5oCkBAIC00NSwxNiArNDUsMTcgQEAgY2xhc3MgRGlj
dGlvbmFyeTsKIAogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAotZW51bSBjbGFzcyBSVENC
dW5kbGVQb2xpY3kgeyBCYWxhbmNlZCwgTWF4Q29tcGF0LCBNYXhCdW5kbGUgfTsKLWVudW0gY2xh
c3MgUlRDSWNlVHJhbnNwb3J0UG9saWN5IHsgUHVibGljLCBSZWxheSwgQWxsIH07Ci0KIGNsYXNz
IFJUQ0NvbmZpZ3VyYXRpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxSVENDb25maWd1cmF0aW9uPiB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxSVENDb25maWd1cmF0aW9uPiBjcmVhdGUoY29u
c3QgRGljdGlvbmFyeSYgY29uZmlndXJhdGlvbiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1
YWwgflJUQ0NvbmZpZ3VyYXRpb24oKSB7IH0KIAorICAgIGVudW0gY2xhc3MgUlRDSWNlVHJhbnNw
b3J0UG9saWN5IHsgUHVibGljLCBSZWxheSwgQWxsIH07CiAgICAgUlRDSWNlVHJhbnNwb3J0UG9s
aWN5IGljZVRyYW5zcG9ydFBvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1faWNlVHJhbnNwb3J0UG9s
aWN5OyB9CisKKyAgICBlbnVtIGNsYXNzIFJUQ0J1bmRsZVBvbGljeSB7IEJhbGFuY2VkLCBNYXhD
b21wYXQsIE1heEJ1bmRsZSB9OwogICAgIFJUQ0J1bmRsZVBvbGljeSBidW5kbGVQb2xpY3koKSBj
b25zdCB7IHJldHVybiBtX2J1bmRsZVBvbGljeTsgfQorCiAgICAgVmVjdG9yPFJlZlB0cjxSVENJ
Y2VTZXJ2ZXI+PiBpY2VTZXJ2ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9pY2VTZXJ2ZXJzOyB9CiAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRl
eHQuaAppbmRleCBiMDlkYTE2NDhiY2U2ZWIyN2ZiZDdiNjc4ZjQ3MTdhZWU4OTlkYmJkLi44NThm
NjQ3YWZmNzdkYmIyNTM4NjZmZTA5MjJhNTVkNGRiYWZjNWU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKQEAgLTcxLDggKzcxLDYgQEAgY2xh
c3MgUGVyaW9kaWNXYXZlOwogY2xhc3MgU2NyaXB0UHJvY2Vzc29yTm9kZTsKIGNsYXNzIFdhdmVT
aGFwZXJOb2RlOwogCi1lbnVtIGNsYXNzIEF1ZGlvQ29udGV4dFN0YXRlIHsgU3VzcGVuZGVkLCBS
dW5uaW5nLCBJbnRlcnJ1cHRlZCwgQ2xvc2VkIH07Ci0KIC8vIEF1ZGlvQ29udGV4dCBpcyB0aGUg
Y29ybmVyc3RvbmUgb2YgdGhlIHdlYiBhdWRpbyBBUEkgYW5kIGFsbCBBdWRpb05vZGVzIGFyZSBj
cmVhdGVkIGZyb20gaXQuCiAvLyBGb3IgdGhyZWFkIHNhZmV0eSBiZXR3ZWVuIHRoZSBhdWRpbyB0
aHJlYWQgYW5kIHRoZSBtYWluIHRocmVhZCwgaXQgaGFzIGEgcmVuZGVyaW5nIGdyYXBoIGxvY2tp
bmcgbWVjaGFuaXNtLiAKIApAQCAtMTE3LDcgKzExNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJl
c3VtZShQcm9taXNlJiYpOwogICAgIHZvaWQgY2xvc2UoUHJvbWlzZSYmKTsKIAotICAgIHVzaW5n
IFN0YXRlID0gQXVkaW9Db250ZXh0U3RhdGU7CisgICAgZW51bSBjbGFzcyBTdGF0ZSB7IFN1c3Bl
bmRlZCwgUnVubmluZywgSW50ZXJydXB0ZWQsIENsb3NlZCB9OwogICAgIFN0YXRlIHN0YXRlKCkg
Y29uc3Q7CiAKICAgICAvLyBUaGUgQXVkaW9Ob2RlIGNyZWF0ZSBtZXRob2RzIGFyZSBjYWxsZWQg
b24gdGhlIG1haW4gdGhyZWFkIChmcm9tIEphdmFTY3JpcHQpLgpAQCAtNDA1LDcgKzQwMyw3IEBA
IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgQXVkaW9Db250ZXh0JiBsaHMsIGNvbnN0IEF1
ZGlvQ29udGV4dCYgcmhzKQogICAgIHJldHVybiAmbGhzICE9ICZyaHM7CiB9CiAKLWlubGluZSBB
dWRpb0NvbnRleHRTdGF0ZSBBdWRpb0NvbnRleHQ6OnN0YXRlKCkgY29uc3QKK2lubGluZSBBdWRp
b0NvbnRleHQ6OlN0YXRlIEF1ZGlvQ29udGV4dDo6c3RhdGUoKSBjb25zdAogewogICAgIHJldHVy
biBtX3N0YXRlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9XYXZlU2hhcGVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dh
dmVTaGFwZXJOb2RlLmNwcAppbmRleCBlY2QzZjQ3MzJhNTk1NmE5MGM1MjhmMWJmNTRhOTQ4ZjI3
MGZlZDVhLi41ZWQ2YmEyOWMzOGEwODJiYmI4YTJjNzEzOWM4ZDU4Y2NmZWZlZTVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcApA
QCAtNTQsMTQgKzU0LDE0IEBAIEZsb2F0MzJBcnJheSogV2F2ZVNoYXBlck5vZGU6OmN1cnZlKCkK
ICAgICByZXR1cm4gd2F2ZVNoYXBlclByb2Nlc3NvcigpLT5jdXJ2ZSgpOwogfQogCi1zdGF0aWMg
aW5saW5lIFdhdmVTaGFwZXJQcm9jZXNzb3I6Ok92ZXJTYW1wbGVUeXBlIHByb2Nlc3NvclR5cGUo
T3ZlclNhbXBsZVR5cGUgdHlwZSkKK3N0YXRpYyBpbmxpbmUgV2F2ZVNoYXBlclByb2Nlc3Nvcjo6
T3ZlclNhbXBsZVR5cGUgcHJvY2Vzc29yVHlwZShXYXZlU2hhcGVyTm9kZTo6T3ZlclNhbXBsZVR5
cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIE92ZXJTYW1wbGVUeXBl
OjpOb25lOgorICAgIGNhc2UgV2F2ZVNoYXBlck5vZGU6Ok92ZXJTYW1wbGVUeXBlOjpOb25lOgog
ICAgICAgICByZXR1cm4gV2F2ZVNoYXBlclByb2Nlc3Nvcjo6T3ZlclNhbXBsZU5vbmU7Ci0gICAg
Y2FzZSBPdmVyU2FtcGxlVHlwZTo6XzJ4OgorICAgIGNhc2UgV2F2ZVNoYXBlck5vZGU6Ok92ZXJT
YW1wbGVUeXBlOjpfMng6CiAgICAgICAgIHJldHVybiBXYXZlU2hhcGVyUHJvY2Vzc29yOjpPdmVy
U2FtcGxlMng7Ci0gICAgY2FzZSBPdmVyU2FtcGxlVHlwZTo6XzR4OgorICAgIGNhc2UgV2F2ZVNo
YXBlck5vZGU6Ok92ZXJTYW1wbGVUeXBlOjpfNHg6CiAgICAgICAgIHJldHVybiBXYXZlU2hhcGVy
UHJvY2Vzc29yOjpPdmVyU2FtcGxlNHg7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpAQCAtNzcsNyArNzcsNyBAQCB2b2lkIFdhdmVTaGFwZXJOb2RlOjpzZXRPdmVyc2FtcGxlKE92
ZXJTYW1wbGVUeXBlIHR5cGUpCiAgICAgd2F2ZVNoYXBlclByb2Nlc3NvcigpLT5zZXRPdmVyc2Ft
cGxlKHByb2Nlc3NvclR5cGUodHlwZSkpOwogfQogCi1PdmVyU2FtcGxlVHlwZSBXYXZlU2hhcGVy
Tm9kZTo6b3ZlcnNhbXBsZSgpIGNvbnN0CithdXRvIFdhdmVTaGFwZXJOb2RlOjpvdmVyc2FtcGxl
KCkgY29uc3QgLT4gT3ZlclNhbXBsZVR5cGUKIHsKICAgICBzd2l0Y2ggKGNvbnN0X2Nhc3Q8V2F2
ZVNoYXBlck5vZGUqPih0aGlzKS0+d2F2ZVNoYXBlclByb2Nlc3NvcigpLT5vdmVyc2FtcGxlKCkp
IHsKICAgICBjYXNlIFdhdmVTaGFwZXJQcm9jZXNzb3I6Ok92ZXJTYW1wbGVOb25lOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5oCmluZGV4IDk0
ZjI1OTY4NTRiMGQ5OGEyNWNjMTU1YTgzMzdlOGMzZDcwYzZlNzMuLmM5MDgzNzMwY2Q5ZTVmY2M5
ZjkwMDYzZTdjOGYwMTk3MjI2YzY2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmgKQEAgLTMwLDggKzMwLDYgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIE92ZXJTYW1wbGVUeXBlIHsgTm9uZSwgXzJ4LCBfNHgg
fTsKLQogY2xhc3MgV2F2ZVNoYXBlck5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9CYXNpY1Byb2Nl
c3Nvck5vZGUgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2F2ZVNoYXBlck5vZGU+IGNyZWF0
ZShBdWRpb0NvbnRleHQmIGNvbnRleHQpCkBAIC00Myw2ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldEN1cnZlKEZsb2F0MzJBcnJheSopOwogICAgIEZsb2F0MzJBcnJheSogY3VydmUoKTsK
IAorICAgIGVudW0gY2xhc3MgT3ZlclNhbXBsZVR5cGUgeyBOb25lLCBfMngsIF80eCB9OwogICAg
IHZvaWQgc2V0T3ZlcnNhbXBsZShPdmVyU2FtcGxlVHlwZSk7CiAgICAgT3ZlclNhbXBsZVR5cGUg
b3ZlcnNhbXBsZSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCmluZGV4IDRiMzRmODdhMDhlZmI5OGFlZGI2
YmNkM2IyNmFlOTQyNjg3ZDgzYzguLjc0Y2NiOTYzZGJlNGU1ZmVkM2FjM2NmMWVkOTc4Yzk3NWFm
MjEyZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJl
cXVlc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0
cFJlcXVlc3RDdXN0b20uY3BwCkBAIC0xODksOCArMTg5LDggQEAgSlNWYWx1ZSBKU1hNTEh0dHBS
ZXF1ZXN0OjpyZXNwb25zZShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogICAgIGF1dG8gdHlwZSA9
IHdyYXBwZWQoKS5yZXNwb25zZVR5cGUoKTsKIAogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNh
c2UgWE1MSHR0cFJlcXVlc3RSZXNwb25zZVR5cGU6OkVtcHR5U3RyaW5nOgotICAgIGNhc2UgWE1M
SHR0cFJlcXVlc3RSZXNwb25zZVR5cGU6OlRleHQ6CisgICAgY2FzZSBYTUxIdHRwUmVxdWVzdDo6
UmVzcG9uc2VUeXBlOjpFbXB0eVN0cmluZzoKKyAgICBjYXNlIFhNTEh0dHBSZXF1ZXN0OjpSZXNw
b25zZVR5cGU6OlRleHQ6CiAgICAgICAgIHJldHVybiByZXNwb25zZVRleHQoc3RhdGUpOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtMjAwLDEyICsyMDAsMTIgQEAgSlNWYWx1ZSBK
U1hNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogICAgICAg
ICByZXR1cm4ganNOdWxsKCk7CiAKICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIFhNTEh0
dHBSZXF1ZXN0UmVzcG9uc2VUeXBlOjpFbXB0eVN0cmluZzoKLSAgICBjYXNlIFhNTEh0dHBSZXF1
ZXN0UmVzcG9uc2VUeXBlOjpUZXh0OgorICAgIGNhc2UgWE1MSHR0cFJlcXVlc3Q6OlJlc3BvbnNl
VHlwZTo6RW1wdHlTdHJpbmc6CisgICAgY2FzZSBYTUxIdHRwUmVxdWVzdDo6UmVzcG9uc2VUeXBl
OjpUZXh0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAK
LSAgICBjYXNlIFhNTEh0dHBSZXF1ZXN0UmVzcG9uc2VUeXBlOjpKc29uOgorICAgIGNhc2UgWE1M
SHR0cFJlcXVlc3Q6OlJlc3BvbnNlVHlwZTo6SnNvbjoKICAgICAgICAgewogICAgICAgICAgICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTT05QYXJzZSgmc3RhdGUsIHdyYXBwZWQoKS5yZXNwb25zZVRleHRJ
Z25vcmluZ1Jlc3BvbnNlVHlwZSgpKTsKICAgICAgICAgICAgIGlmICghdmFsdWUpCkBAIC0yMTUs
NyArMjE1LDcgQEAgSlNWYWx1ZSBKU1hNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZShFeGVjU3RhdGUm
IHN0YXRlKSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgICAgICB9CiAKLSAg
ICBjYXNlIFhNTEh0dHBSZXF1ZXN0UmVzcG9uc2VUeXBlOjpEb2N1bWVudDoKKyAgICBjYXNlIFhN
TEh0dHBSZXF1ZXN0OjpSZXNwb25zZVR5cGU6OkRvY3VtZW50OgogICAgICAgICB7CiAgICAgICAg
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICAgICAgICAgIERvY3VtZW50KiBkb2N1bWVu
dCA9IHdyYXBwZWQoKS5yZXNwb25zZVhNTChlYyk7CkBAIC0yMjYsMTAgKzIyNiwxMCBAQCBKU1Zh
bHVlIEpTWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiAg
ICAgICAgICAgICByZXR1cm4gdG9KUygmc3RhdGUsIGdsb2JhbE9iamVjdCgpLCBkb2N1bWVudCk7
CiAgICAgICAgIH0KIAotICAgIGNhc2UgWE1MSHR0cFJlcXVlc3RSZXNwb25zZVR5cGU6OkJsb2I6
CisgICAgY2FzZSBYTUxIdHRwUmVxdWVzdDo6UmVzcG9uc2VUeXBlOjpCbG9iOgogICAgICAgICBy
ZXR1cm4gdG9KUygmc3RhdGUsIGdsb2JhbE9iamVjdCgpLCB3cmFwcGVkKCkucmVzcG9uc2VCbG9i
KCkpOwogCi0gICAgY2FzZSBYTUxIdHRwUmVxdWVzdFJlc3BvbnNlVHlwZTo6QXJyYXlidWZmZXI6
CisgICAgY2FzZSBYTUxIdHRwUmVxdWVzdDo6UmVzcG9uc2VUeXBlOjpBcnJheWJ1ZmZlcjoKICAg
ICAgICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgd3JhcHBlZCgpLnJlc3Bv
bnNlQXJyYXlCdWZmZXIoKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDMzYTM4ZDA4ZjljNTM1ODU0Mzgz
OGFhYmQwNzMzNjQyMDAwOTExYWYuLmI2OTMwZjIzMDg5ZmRjNGU1YjBhZjE5NTA1ODQ3M2M3ZTVk
MmU1NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCkBAIC0zMjEsNyArMzIxLDcgQEAgc3ViIElzRE9NR2xvYmFsT2JqZWN0CiAK
IHN1YiBHZW5lcmF0ZUdldE93blByb3BlcnR5U2xvdEJvZHkKIHsKLSAgICBteSAoJGludGVyZmFj
ZSwgJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRoYXNJbnN0YW5jZVByb3BlcnRpZXMsICRp
bmxpbmVkKSA9IEBfOworICAgIG15ICgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkaGFzSW5zdGFu
Y2VQcm9wZXJ0aWVzLCAkaW5saW5lZCkgPSBAXzsKIAogICAgIG15ICRuYW1lc3BhY2VNYXliZSA9
ICgkaW5saW5lZCA/ICJKU0M6OiIgOiAiIik7CiAgICAgbXkgJG5hbWVkR2V0dGVyRnVuY3Rpb24g
PSBHZXROYW1lZEdldHRlckZ1bmN0aW9uKCRpbnRlcmZhY2UpOwpAQCAtNTExLDM1ICs1MTEsMjcg
QEAgc3ViIFNob3VsZEdlbmVyYXRlVG9KU0ltcGxlbWVudGF0aW9uCiAKIHN1YiBHZXRBdHRyaWJ1
dGVHZXR0ZXJOYW1lCiB7Ci0gICAgbXkgKCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkaW50
ZXJmYWNlLCAkYXR0cmlidXRlKSA9IEBfOwotICAgIGlmICgkYXR0cmlidXRlLT5pc1N0YXRpYykg
ewotICAgICAgICByZXR1cm4gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGNsYXNzTmFtZSkg
LiAiQ29uc3RydWN0b3IiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5uYW1lKTsKLSAgICB9Ci0gICAgaWYgKElzSlNCdWlsdGluKCRpbnRlcmZhY2Us
ICRhdHRyaWJ1dGUpKSB7Ci0gICAgICAgIHJldHVybiBHZXRKU0J1aWx0aW5GdW5jdGlvbk5hbWUo
JGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7Ci0gICAgfQotICAgIHJldHVybiAianMiIC4gJGludGVy
ZmFjZU5hbWUgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1
cmUtPm5hbWUpIC4gKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29uc3RydWN0b3Ik
LyA/ICJDb25zdHJ1Y3RvciIgOiAiIik7CisgICAgbXkgKCRpbnRlcmZhY2UsICRjbGFzc05hbWUs
ICRhdHRyaWJ1dGUpID0gQF87CisKKyAgICByZXR1cm4gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmly
c3QoJGNsYXNzTmFtZSkgLiAiQ29uc3RydWN0b3IiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmly
c3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKSBpZiAkYXR0cmlidXRlLT5pc1N0YXRpYzsK
KyAgICByZXR1cm4gR2V0SlNCdWlsdGluRnVuY3Rpb25OYW1lKCRjbGFzc05hbWUsICRhdHRyaWJ1
dGUpIGlmIElzSlNCdWlsdGluKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOworICAgIHJldHVybiAi
anMiIC4gJGludGVyZmFjZS0+bmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSkgLiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+
IC9Db25zdHJ1Y3RvciQvID8gIkNvbnN0cnVjdG9yIiA6ICIiKTsKIH0KIAogc3ViIEdldEF0dHJp
YnV0ZVNldHRlck5hbWUKIHsKLSAgICBteSAoJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRp
bnRlcmZhY2UsICRhdHRyaWJ1dGUpID0gQF87Ci0gICAgaWYgKCRhdHRyaWJ1dGUtPmlzU3RhdGlj
KSB7Ci0gICAgICAgIHJldHVybiAic2V0IiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRj
bGFzc05hbWUpIC4gIkNvbnN0cnVjdG9yIiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSk7Ci0gICAgfQotICAgIGlmIChJc0pTQnVpbHRpbigk
aW50ZXJmYWNlLCAkYXR0cmlidXRlKSkgewotICAgICAgICByZXR1cm4gInNldCIgLiAkY29kZUdl
bmVyYXRvci0+V0tfdWNmaXJzdChHZXRKU0J1aWx0aW5GdW5jdGlvbk5hbWUoJGNsYXNzTmFtZSwg
JGF0dHJpYnV0ZSkpOwotICAgIH0KLSAgICByZXR1cm4gInNldEpTIiAuICRpbnRlcmZhY2VOYW1l
IC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1l
KSAuICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8gPyAiQ29u
c3RydWN0b3IiIDogIiIpOworICAgIG15ICgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmli
dXRlKSA9IEBfOworCisgICAgcmV0dXJuICJzZXQiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmly
c3QoJGNsYXNzTmFtZSkgLiAiQ29uc3RydWN0b3IiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmly
c3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKSBpZiAkYXR0cmlidXRlLT5pc1N0YXRpYzsK
KyAgICByZXR1cm4gInNldCIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdChHZXRKU0J1aWx0
aW5GdW5jdGlvbk5hbWUoJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSkpIGlmIElzSlNCdWlsdGluKCRp
bnRlcmZhY2UsICRhdHRyaWJ1dGUpOworICAgIHJldHVybiAic2V0SlMiIC4gJGludGVyZmFjZS0+
bmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+
bmFtZSkgLiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+IC9Db25zdHJ1Y3RvciQvID8g
IkNvbnN0cnVjdG9yIiA6ICIiKTsKIH0KIAogc3ViIEdldEZ1bmN0aW9uTmFtZQogewogICAgIG15
ICgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkZnVuY3Rpb24pID0gQF87CiAKLSAgICBpZiAoSXNK
U0J1aWx0aW4oJGludGVyZmFjZSwgJGZ1bmN0aW9uKSkgewotICAgICAgICByZXR1cm4gR2V0SlNC
dWlsdGluRnVuY3Rpb25OYW1lKCRjbGFzc05hbWUsICRmdW5jdGlvbik7Ci0gICAgfQorICAgIHJl
dHVybiBHZXRKU0J1aWx0aW5GdW5jdGlvbk5hbWUoJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKSBpZiBJ
c0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkZnVuY3Rpb24pOwogCiAgICAgbXkgJGZ1bmN0aW9uTmFt
ZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOwogICAgICRmdW5jdGlvbk5hbWUgPSAiU3lt
Ym9sSXRlcmF0b3IiIGlmICRmdW5jdGlvbk5hbWUgZXEgIltTeW1ib2wuSXRlcmF0b3JdIjsKQEAg
LTYxOSwxNCArNjExLDYgQEAgc3ViIEludGVyZmFjZVJlcXVpcmVzQXR0cmlidXRlc09uSW5zdGFu
Y2UKICAgICByZXR1cm4gMDsKIH0KIAotc3ViIEF0dHJpYnV0ZVNob3VsZEJlT25JbnN0YW5jZUZv
ckNvbXBhdGliaWxpdHkKLXsKLSAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7Ci0gICAgbXkgJGF0
dHJpYnV0ZSA9IHNoaWZ0OwotICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGludGVyZmFjZS0+bmFt
ZTsKLSAgICByZXR1cm4gMDsKLX0KLQogc3ViIEF0dHJpYnV0ZVNob3VsZEJlT25JbnN0YW5jZQog
ewogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKQEAgLTY0Miw4ICs2MjYsNiBAQCBzdWIgQXR0
cmlidXRlU2hvdWxkQmVPbkluc3RhbmNlCiAgICAgIyBodHRwczovL2hleWNhbS5naXRodWIuaW8v
d2ViaWRsLyNVbmZvcmdlYWJsZQogICAgIHJldHVybiAxIGlmIElzVW5mb3JnZWFibGUoJGludGVy
ZmFjZSwgJGF0dHJpYnV0ZSk7CiAKLSAgICByZXR1cm4gMSBpZiBBdHRyaWJ1dGVTaG91bGRCZU9u
SW5zdGFuY2VGb3JDb21wYXRpYmlsaXR5KCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwotCiAgICAg
aWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja1NlY3VyaXR5In0pIHsK
ICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkRvTm90Q2hlY2tTZWN1cml0eSJ9IG9yCiAgICAgICAgICAgICAkYXR0cmlidXRlLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEb05vdENoZWNrU2VjdXJpdHlPbkdldHRlciJ9KSB7
CkBAIC04MTMsMzMgKzc5NSw4NiBAQCBzdWIgR2V0SW1wbENsYXNzTmFtZQogICAgIHJldHVybiAk
bmFtZTsKIH0KIAorc3ViIElzQ2xhc3NOYW1lV29yZEJvdW5kYXJ5Cit7CisgICAgbXkgKCRuYW1l
LCAkaSkgPSBAXzsKKworICAgICMgSW50ZXJwcmV0IG5lZ2F0aXZlIG51bWJlcnMgYXMgZGlzdGFu
Y2UgZnJvbSBlbmQgb2Ygc3RyaW5nLCBqdXN0IGFzIHRoZSBzdWJzdHIgZnVuY3Rpb24gZG9lcy4K
KyAgICAkaSArPSBsZW5ndGgoJG5hbWUpIGlmICRpIDwgMDsKKworICAgIHJldHVybiAwIGlmICRp
IDwgMDsKKyAgICByZXR1cm4gMSBpZiAkaSA9PSAwOworICAgIHJldHVybiAxIGlmICRpID09IGxl
bmd0aCgkbmFtZSk7CisgICAgcmV0dXJuIDAgaWYgJGkgPiBsZW5ndGgoJG5hbWUpOworCisgICAg
IyBGb3Igbm93LCB3b3JkIGJvdW5kYXJpZXMgYXJlIHdoZXJlIHRoZSBwcmV2aW91cyBsZXR0ZXIg
d2FzIG5vdCB1cHBlcmNhc2UgYnV0IHRoZSBuZXh0IGxldHRlciBpcyB1cHBlcmNhc2UuCisgICAg
IyBDb3VsZCBtYWtlIGEgZmFuY2llciBydWxlIHRoYXQgdW5kZXJzdGFuZHMgdGhhdCB0aGUgYm91
bmRhcnkgYmV0d2VlbiBVUkwgYW5kIExlbmd0aCBpbiBVUkxMZW5ndGggaXMgb25lIHRvby4KKyAg
ICByZXR1cm4gc3Vic3RyKCRuYW1lLCAkaSAtIDEsIDIpID1+IC9bXkEtWl1bQS1aXS87Cit9CisK
K3N1YiBQcmVmaXhJc1dvcmRzVGhhdE1hdGNoU3RhcnRPckVuZFdvcmRzCit7CisgICAgbXkgKCRj
bGFzcywgJG5hbWUsICRpKSA9IEBfOworCisgICAgcmV0dXJuIElzQ2xhc3NOYW1lV29yZEJvdW5k
YXJ5KCRuYW1lLCAkaSkKKyAgICAgICAgJiYgKElzQ2xhc3NOYW1lV29yZEJvdW5kYXJ5KCRjbGFz
cywgJGkpICYmIHN1YnN0cigkY2xhc3MsIDAsICRpKSBlcSBzdWJzdHIoJG5hbWUsIDAsICRpKQor
ICAgICAgICAgICAgfHwgSXNDbGFzc05hbWVXb3JkQm91bmRhcnkoJGNsYXNzLCAtJGkpICYmIHN1
YnN0cigkY2xhc3MsIC0kaSkgZXEgc3Vic3RyKCRuYW1lLCAwLCAkaSkpOworfQorCiBzdWIgR2V0
RW51bWVyYXRpb25DbGFzc05hbWUKIHsKLSAgICBteSAoJG5hbWUpID0gQF87Ci0gICAgcmV0dXJu
ICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRuYW1lKTsKLX07CisgICAgbXkgKCRpbnRlcmZh
Y2UsICRuYW1lKSA9IEBfOworCisgICAgbXkgJGNsYXNzID0gR2V0SW1wbENsYXNzTmFtZSgkaW50
ZXJmYWNlLT5uYW1lKTsKKyAgICBteSAkZW51bSA9ICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0
KCRuYW1lKTsKKworICAgICMgU2luY2UgdGhlIGVudW1lcmF0aW9uIG5hbWUgd2lsbCBiZSBuZXN0
ZWQgaW4gdGhlIGNsYXNzIG5hbWUncyBuYW1lc3BhY2UsIHJlbW92ZSBhbnkgd29yZHMKKyAgICAj
IHRoYXQgaGFwcGVuIHRvIG1hdGNoIHRoZSBzdGFydCBvciBlbmQgb2YgdGhlIGNsYXNzIG5hbWUu
IElmIGFuIGVudW1lcmF0aW9uIGlzIG5hbWVkIFRyYWNrVHlwZSBvcgorICAgICMgVGV4dFRyYWNr
VHlwZSwgYW5kIHRoZSBjbGFzcyBpcyBuYW1lZCBUZXh0VHJhY2ssIHRoZW4gd2Ugd2lsbCBnZXQg
YSBuYW1lIGxpa2UgVGV4dFRyYWNrOjpUeXBlLgorICAgIG15ICRlbnVtTGVuZ3RoID0gbGVuZ3Ro
KCRlbnVtKTsKKyAgICBteSAkbG9uZ2VzdFByZWZpeExlbmd0aCA9IDA7CisgICAgaWYgKCRlbnVt
ID1+IC9eW0EtWl0uLykgeworICAgICAgICBmb3IgKG15ICRpID0gMjsgJGkgPCAkZW51bUxlbmd0
aCAtIDE7ICRpKyspIHsKKyAgICAgICAgICAgICRsb25nZXN0UHJlZml4TGVuZ3RoID0gJGkgaWYg
UHJlZml4SXNXb3Jkc1RoYXRNYXRjaFN0YXJ0T3JFbmRXb3JkcygkY2xhc3MsICRlbnVtLCAkaSk7
CisgICAgICAgIH0KKyAgICB9CisgICAgJGVudW0gPSBzdWJzdHIoJGVudW0sICRsb25nZXN0UHJl
Zml4TGVuZ3RoKTsKKworICAgIHJldHVybiAiJHtjbGFzc306OiRlbnVtIjsKK30KKworc3ViIEdl
dEVudW1lcmF0aW9uQ2xhc3NJZGVudGlmaWVyCit7CisgICAgbXkgKCRpbnRlcmZhY2UsICRuYW1l
KSA9IEBfOworCisgICAgbXkgJGlkZW50aWZpZXIgPSBHZXRFbnVtZXJhdGlvbkNsYXNzTmFtZSgk
aW50ZXJmYWNlLCAkbmFtZSk7CisgICAgJGlkZW50aWZpZXIgPX4gcy86Oi8vOworICAgIHJldHVy
biAkaWRlbnRpZmllcjsKK30KIAogc3ViIEdldEVudW1lcmF0aW9uVmFsdWVOYW1lCiB7CiAgICAg
bXkgKCRuYW1lKSA9IEBfOworCiAgICAgcmV0dXJuICJFbXB0eVN0cmluZyIgaWYgJG5hbWUgZXEg
IiI7CiAgICAgJG5hbWUgPSBqb2luKCIiLCBtYXAgeyAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJz
dCgkXykgfSBzcGxpdCgiLSIsICRuYW1lKSk7CiAgICAgJG5hbWUgPSAiXyRuYW1lIiBpZiAkbmFt
ZSA9fiAvXlxkLzsKICAgICByZXR1cm4gJG5hbWU7Ci19OworfQogCi1zdWIgR2V0RW51bWVyYXRp
b25JbXBsZW1lbnRhdGlvbkNvbnRlbnQKK3N1YiBHZW5lcmF0ZUVudW1lcmF0aW9uSW1wbGVtZW50
YXRpb25Db250ZW50CiB7Ci0gICAgbXkgKCRlbnVtZXJhdGlvbnMpID0gQF87CisgICAgbXkgKCRp
bnRlcmZhY2UsICRlbnVtZXJhdGlvbnMpID0gQF87CiAKLSAgICAjIEZJWE1FOiBDb3VsZCBvcHRp
bWl6ZSB0aGlzIHRvIG9ubHkgZ2VuZXJhdGUgdGhpbmdzIHRoYXQgYXJlIHVzZWQsIHdoaWNoIHdv
dWxkIHJlcXVpcmUKLSAgICAjIGl0ZXJhdGluZyBvdmVyIGV2ZXJ5dGhpbmcgaW4gdGhlIGludGVy
ZmFjZS4KKyAgICAjIEZJWE1FOiBDb3VsZCBvcHRpbWl6ZSB0aGlzIHRvIG9ubHkgZ2VuZXJhdGUg
dGhlIHBhcnRzIG9mIGVhY2ggZW51bWVyYXRpb24gdGhhdCBhcmUgYWN0dWFsbHkKKyAgICAjIHVz
ZWQsIHdoaWNoIHdvdWxkIHJlcXVpcmUgaXRlcmF0aW5nIG92ZXIgZXZlcnl0aGluZyBpbiB0aGUg
aW50ZXJmYWNlLgogCiAgICAgbXkgJHJlc3VsdCA9ICIiOwogICAgIGZvcmVhY2ggbXkgJGVudW1l
cmF0aW9uIChAJGVudW1lcmF0aW9ucykgewogICAgICAgICBteSAkbmFtZSA9ICRlbnVtZXJhdGlv
bi0+bmFtZTsKIAotICAgICAgICBteSAkY2xhc3NOYW1lID0gR2V0RW51bWVyYXRpb25DbGFzc05h
bWUoJG5hbWUpOworICAgICAgICBteSAkY2xhc3NOYW1lID0gR2V0RW51bWVyYXRpb25DbGFzc05h
bWUoJGludGVyZmFjZSwgJG5hbWUpOworICAgICAgICBteSAkY2xhc3NJZGVudGlmaWVyID0gR2V0
RW51bWVyYXRpb25DbGFzc0lkZW50aWZpZXIoJGludGVyZmFjZSwgJG5hbWUpOwogCiAgICAgICAg
ICMgRklYTUU6IEEgbGl0dGxlIHVnbHkgdG8gaGF2ZSB0aGlzIGJlIGEgc2lkZSBlZmZlY3QgaW5z
dGVhZCBvZiBhIHJldHVybiB2YWx1ZS4KICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIjxydW50
aW1lL0pTU3RyaW5nLmg+Iik7CkBAIC04NTAsOCArODg1LDggQEAgc3ViIEdldEVudW1lcmF0aW9u
SW1wbGVtZW50YXRpb25Db250ZW50CiAgICAgICAgICMgRGVjbGFyZSB0aGVzZSBpbnN0ZWFkIG9m
IHVzaW5nICJzdGF0aWMiIGJlY2F1c2UgdGhlc2UgbWF5IGJlIHVudXNlZCBhbmQgd2UgZG9uJ3QK
ICAgICAgICAgIyB3YW50IHRvIGdldCB3YXJuaW5ncyBhYm91dCB0aGVtLgogICAgICAgICAkcmVz
dWx0IC49ICJKU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiwgJGNsYXNzTmFt
ZSk7XG4iOwotICAgICAgICAkcmVzdWx0IC49ICJPcHRpb25hbDwkY2xhc3NOYW1lPiBwYXJzZSRj
bGFzc05hbWUoRXhlY1N0YXRlJiwgSlNWYWx1ZSk7XG4iOwotICAgICAgICAkcmVzdWx0IC49ICJl
eHRlcm4gY29uc3QgY2hhciBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzJHtjbGFzc05hbWV9W107
XG5cbiI7CisgICAgICAgICRyZXN1bHQgLj0gIk9wdGlvbmFsPCRjbGFzc05hbWU+IHBhcnNlJGNs
YXNzSWRlbnRpZmllcihFeGVjU3RhdGUmLCBKU1ZhbHVlKTtcbiI7CisgICAgICAgICRyZXN1bHQg
Lj0gImV4dGVybiBjb25zdCBjaGFyIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXMke2NsYXNzSWRl
bnRpZmllcn1bXTtcblxuIjsKIAogICAgICAgICAjIFRha2UgYW4gRXhlY1N0YXRlKiBpbnN0ZWFk
IG9mIGFuIEV4ZWNTdGF0ZSYgdG8gbWF0Y2ggdGhlIGpzU3RyaW5nV2l0aENhY2hlIGZyb20gSlNT
dHJpbmcuaC4KICAgICAgICAgIyBGSVhNRTogQ2hhbmdlIHRvIHRha2UgVk0mIGluc3RlYWQgb2Yg
RXhlY1N0YXRlKi4KQEAgLTg4NSw3ICs5MjAsNyBAQCBzdWIgR2V0RW51bWVyYXRpb25JbXBsZW1l
bnRhdGlvbkNvbnRlbnQKICAgICAgICAgIyBGSVhNRTogQ2hhbmdlIHRvIHRha2UgVk0mIGluc3Rl
YWQgb2YgRXhlY1N0YXRlJi4KICAgICAgICAgIyBGSVhNRTogQ29uc2lkZXIgdXNpbmcgdG9TdHJp
bmdPck51bGwgdG8gbWFrZSBleGNlcHRpb24gY2hlY2tpbmcgZmFzdGVyLgogICAgICAgICAjIEZJ
WE1FOiBDb25zaWRlciBmaW5kaW5nIGEgbW9yZSBlZmZpY2llbnQgd2F5IHRvIG1hdGNoIGFnYWlu
c3QgYWxsIHRoZSBzdHJpbmdzIHF1aWNrbHkuCi0gICAgICAgICRyZXN1bHQgLj0gIk9wdGlvbmFs
PCRjbGFzc05hbWU+IHBhcnNlJGNsYXNzTmFtZShFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZh
bHVlKVxuIjsKKyAgICAgICAgJHJlc3VsdCAuPSAiT3B0aW9uYWw8JGNsYXNzTmFtZT4gcGFyc2Uk
Y2xhc3NJZGVudGlmaWVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpXG4iOwogICAg
ICAgICAkcmVzdWx0IC49ICJ7XG4iOwogICAgICAgICAkcmVzdWx0IC49ICIgICAgYXV0byBzdHJp
bmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7XG4iOwogICAgICAgICBmb3JlYWNo
IG15ICR2YWx1ZSAoQHskZW51bWVyYXRpb24tPnZhbHVlc30pIHsKQEAgLTkwMCw3ICs5MzUsNyBA
QCBzdWIgR2V0RW51bWVyYXRpb25JbXBsZW1lbnRhdGlvbkNvbnRlbnQKICAgICAgICAgJHJlc3Vs
dCAuPSAiICAgIHJldHVybiBOdWxsb3B0O1xuIjsKICAgICAgICAgJHJlc3VsdCAuPSAifVxuXG4i
OwogCi0gICAgICAgICRyZXN1bHQgLj0gImNvbnN0IGNoYXIgZXhwZWN0ZWRFbnVtZXJhdGlvblZh
bHVlcyR7Y2xhc3NOYW1lfVtdID0gXCJcXFwiIiAuIGpvaW4gKCJcXFwiLCBcXFwiIiwgQHskZW51
bWVyYXRpb24tPnZhbHVlc30pIC4gIlxcXCJcIjtcblxuIjsKKyAgICAgICAgJHJlc3VsdCAuPSAi
Y29uc3QgY2hhciBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzJHtjbGFzc0lkZW50aWZpZXJ9W10g
PSBcIlxcXCIiIC4gam9pbiAoIlxcXCIsIFxcXCIiLCBAeyRlbnVtZXJhdGlvbi0+dmFsdWVzfSkg
LiAiXFxcIlwiO1xuXG4iOwogCiAgICAgICAgICRyZXN1bHQgLj0gIiNlbmRpZlxuXG4iIGlmICRj
b25kaXRpb25hbFN0cmluZzsKICAgICB9CkBAIC0xMzQ4LDEwICsxMzgzLDcgQEAgc3ViIEdlbmVy
YXRlSGVhZGVyCiAKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4iKTsKIAotICAgICMgQWRk
IHByb3RvdHlwZSBkZWNsYXJhdGlvbi4KLSAgICBpZiAoSGVhZGVyTmVlZHNQcm90b3R5cGVEZWNs
YXJhdGlvbigkaW50ZXJmYWNlKSkgewotICAgICAgICBHZW5lcmF0ZVByb3RvdHlwZURlY2xhcmF0
aW9uKFxAaGVhZGVyQ29udGVudCwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSwgJGludGVyZmFjZU5h
bWUpOwotICAgIH0KKyAgICBHZW5lcmF0ZVByb3RvdHlwZURlY2xhcmF0aW9uKFxAaGVhZGVyQ29u
dGVudCwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSkgaWYgSGVhZGVyTmVlZHNQcm90b3R5cGVEZWNs
YXJhdGlvbigkaW50ZXJmYWNlKTsKIAogICAgIGlmICgkaGFzRm9yd2FyZERlY2xhcmluZ0Z1bmN0
aW9ucykgewogICAgICAgICBteSAkaW5BcHBsZUNvcHlyaWdodCA9IDA7CkBAIC0xMzg5LDEwICsx
NDIxLDEwIEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgICAgICAgICBteSAkY29uZGl0aW9u
YWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0
cmlidXRlLT5zaWduYXR1cmUpOwogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNp
ZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAgICAg
ICAgICAgbXkgJGdldHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZU5hbWUs
ICRjbGFzc05hbWUsICRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOworICAgICAgICAgICAgbXkgJGdl
dHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0
dHJpYnV0ZSk7CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiSlNDOjpFbmNvZGVk
SlNWYWx1ZSAke2dldHRlcn0oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7XG4iKTsKICAgICAgICAgICAgIGlmICghSXNSZWFkb25seSgkYXR0
cmlidXRlKSkgewotICAgICAgICAgICAgICAgIG15ICRzZXR0ZXIgPSBHZXRBdHRyaWJ1dGVTZXR0
ZXJOYW1lKCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlLCAkYXR0cmlidXRl
KTsKKyAgICAgICAgICAgICAgICBteSAkc2V0dGVyID0gR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgk
aW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKICAgICAgICAgICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiYm9vbCAke3NldHRlcn0oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTtcbiIpOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNvbmRpdGlv
bmFsU3RyaW5nOwpAQCAtMTQ1OCwxMyArMTQ5MCwxMyBAQCBzdWIgR2VuZXJhdGVQcm9wZXJ0aWVz
SGFzaFRhYmxlCiAgICAgICAgIG15ICRzcGVjaWFsID0gR2V0SlNDQXR0cmlidXRlc0ZvckF0dHJp
YnV0ZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKICAgICAgICAgcHVzaChAJGhhc2hTcGVjaWFs
cywgJHNwZWNpYWwpOwogCi0gICAgICAgIG15ICRnZXR0ZXIgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJO
YW1lKCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsK
KyAgICAgICAgbXkgJGdldHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZSwg
JGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgIHB1c2goQCRoYXNoVmFsdWUxLCAkZ2V0
dGVyKTsKIAogICAgICAgICBpZiAoSXNSZWFkb25seSgkYXR0cmlidXRlKSkgewogICAgICAgICAg
ICAgcHVzaChAJGhhc2hWYWx1ZTIsICIwIik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBteSAkc2V0dGVyID0gR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNlTmFtZSwgJGNs
YXNzTmFtZSwgJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICBteSAkc2V0dGVy
ID0gR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmli
dXRlKTsKICAgICAgICAgICAgIHB1c2goQCRoYXNoVmFsdWUyLCAkc2V0dGVyKTsKICAgICAgICAg
fQogCkBAIC0xNjQxLDkgKzE2NzMsNyBAQCBzdWIgTGVuZ3RoT2ZMb25nZXN0RnVuY3Rpb25QYXJh
bWV0ZXJMaXN0CiAKIHN1YiBHZW5lcmF0ZU92ZXJsb2FkZWRGdW5jdGlvbgogewotICAgIG15ICRm
dW5jdGlvbiA9IHNoaWZ0OwotICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKLSAgICBteSAkaW50
ZXJmYWNlTmFtZSA9IHNoaWZ0OworICAgIG15ICgkZnVuY3Rpb24sICRpbnRlcmZhY2UpID0gQF87
CiAKICAgICAjIEdlbmVyYXRlIGNvZGUgZm9yIGNob29zaW5nIHRoZSBjb3JyZWN0IG92ZXJsb2Fk
IHRvIGNhbGwuIE92ZXJsb2FkcyBhcmUKICAgICAjIGNob3NlbiBiYXNlZCBvbiB0aGUgdG90YWwg
bnVtYmVyIG9mIGFyZ3VtZW50cyBwYXNzZWQgYW5kIHRoZSB0eXBlIG9mCkBAIC0xNjUyLDYgKzE2
ODIsNyBAQCBzdWIgR2VuZXJhdGVPdmVybG9hZGVkRnVuY3Rpb24KICAgICAjIGRlY2xhcmF0aW9u
IGluIHRoZSBJREwuCiAKICAgICBteSAka2luZCA9ICRmdW5jdGlvbi0+aXNTdGF0aWMgPyAiQ29u
c3RydWN0b3IiIDogKE9wZXJhdGlvblNob3VsZEJlT25JbnN0YW5jZSgkaW50ZXJmYWNlLCAkZnVu
Y3Rpb24pID8gIkluc3RhbmNlIiA6ICJQcm90b3R5cGUiKTsKKyAgICBteSAkaW50ZXJmYWNlTmFt
ZSA9ICRpbnRlcmZhY2UtPm5hbWU7CiAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9ICJqcyR7aW50ZXJm
YWNlTmFtZX0ke2tpbmR9RnVuY3Rpb24iIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUpOwogCiAgICAgIyBGSVhNRTogSW1wbGVtZW50IHN1cHBv
cnQgZm9yIG92ZXJsb2FkZWQgZnVuY3Rpb25zIHdpdGggdmFyaWFkaWMgYXJndW1lbnRzLgpAQCAt
MTkwMSw3ICsxOTMyLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIlxudXNpbmcgbmFtZXNwYWNlIEpTQztcblxuIik7CiAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJuYW1lc3BhY2UgV2ViQ29yZSB7XG5cbiIpOwogCi0gICAgcHVzaChAaW1wbENv
bnRlbnQsIEdldEVudW1lcmF0aW9uSW1wbGVtZW50YXRpb25Db250ZW50KCRlbnVtZXJhdGlvbnMp
KTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgR2VuZXJhdGVFbnVtZXJhdGlvbkltcGxlbWVudGF0
aW9uQ29udGVudCgkaW50ZXJmYWNlLCAkZW51bWVyYXRpb25zKSk7CiAKICAgICBteSBAZnVuY3Rp
b25zID0gQHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9OwogICAgIHB1c2goQGZ1bmN0aW9ucywgQHsk
aW50ZXJmYWNlLT5pdGVyYWJsZS0+ZnVuY3Rpb25zfSkgaWYgJGludGVyZmFjZS0+aXRlcmFibGU7
CkBAIC0xOTQ5LDEwICsxOTgwLDEwIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAg
ICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0
ZUNvbmRpdGlvbmFsU3RyaW5nKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSk7CiAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRp
dGlvbmFsU3RyaW5nOwotICAgICAgICAgICAgbXkgJGdldHRlciA9IEdldEF0dHJpYnV0ZUdldHRl
ck5hbWUoJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRpbnRlcmZhY2UsICRhdHRyaWJ1dGUp
OworICAgICAgICAgICAgbXkgJGdldHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVy
ZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIkpTQzo6RW5jb2RlZEpTVmFsdWUgJHtnZXR0ZXJ9KEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpO1xuIik7CiAgICAgICAgICAgICBp
ZiAoIUlzUmVhZG9ubHkoJGF0dHJpYnV0ZSkpIHsKLSAgICAgICAgICAgICAgICBteSAkc2V0dGVy
ID0gR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJGlu
dGVyZmFjZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICAgICAgbXkgJHNldHRlciA9IEdldEF0
dHJpYnV0ZVNldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CiAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJib29sICR7c2V0dGVyfShKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpO1xuIik7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxu
IikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwpAQCAtMTk2OSwxNiArMjAwMCw5IEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4iKTsKICAg
ICB9CiAKLSAgICAjIEFkZCBwcm90b3R5cGUgZGVjbGFyYXRpb24uCi0gICAgaWYgKCFIZWFkZXJO
ZWVkc1Byb3RvdHlwZURlY2xhcmF0aW9uKCRpbnRlcmZhY2UpKSB7Ci0gICAgICAgIEdlbmVyYXRl
UHJvdG90eXBlRGVjbGFyYXRpb24oXEBpbXBsQ29udGVudCwgJGNsYXNzTmFtZSwgJGludGVyZmFj
ZSwgJGludGVyZmFjZU5hbWUpOwotICAgIH0KLQotICAgICMgQWRkIGNvbnN0cnVjdG9yIGRlY2xh
cmF0aW9uCi0gICAgaWYgKE5lZWRzQ29uc3RydWN0b3JQcm9wZXJ0eSgkaW50ZXJmYWNlKSkgewot
ICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24oXEBpbXBsQ29udGVudCwgJGNs
YXNzTmFtZSwgJGludGVyZmFjZSwgJGludGVyZmFjZU5hbWUpOwotICAgIH0KKyAgICBHZW5lcmF0
ZVByb3RvdHlwZURlY2xhcmF0aW9uKFxAaW1wbENvbnRlbnQsICRjbGFzc05hbWUsICRpbnRlcmZh
Y2UpIGlmICFIZWFkZXJOZWVkc1Byb3RvdHlwZURlY2xhcmF0aW9uKCRpbnRlcmZhY2UpOwogCisg
ICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uKFxAaW1wbENvbnRlbnQsICRjbGFzc05h
bWUsICRpbnRlcmZhY2UpIGlmIE5lZWRzQ29uc3RydWN0b3JQcm9wZXJ0eSgkaW50ZXJmYWNlKTsK
IAogICAgIG15IEBoYXNoS2V5cyA9ICgpOwogICAgIG15IEBoYXNoVmFsdWUxID0gKCk7CkBAIC0y
MDQzLDEzICsyMDY3LDEzIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAg
ICBteSAkc3BlY2lhbCA9IChAc3BlY2lhbHMgPiAwKSA/IGpvaW4oIiB8ICIsIEBzcGVjaWFscykg
OiAiMCI7CiAgICAgICAgICAgICBwdXNoKEBoYXNoU3BlY2lhbHMsICRzcGVjaWFsKTsKIAotICAg
ICAgICAgICAgbXkgJGdldHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZU5h
bWUsICRjbGFzc05hbWUsICRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOworICAgICAgICAgICAgbXkg
JGdldHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwg
JGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICBwdXNoKEBoYXNoVmFsdWUxLCAkZ2V0dGVyKTsKIAog
ICAgICAgICAgICAgaWYgKElzUmVhZG9ubHkoJGF0dHJpYnV0ZSkpIHsKICAgICAgICAgICAgICAg
ICBwdXNoKEBoYXNoVmFsdWUyLCAiMCIpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICBteSAkc2V0dGVyID0gR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNlTmFt
ZSwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICAgICAg
bXkgJHNldHRlciA9IEdldEF0dHJpYnV0ZVNldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFt
ZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICAgICAgcHVzaChAaGFzaFZhbHVlMiwgJHNldHRl
cik7CiAgICAgICAgICAgICB9CiAKQEAgLTIwOTEsOSArMjExNSw5IEBAIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkY29kZUdlbmVyYXRvci0+
R2VuZXJhdGVDb21waWxlVGltZUNoZWNrRm9yRW51bXNJZk5lZWRlZCgkaW50ZXJmYWNlKSk7CiAK
ICAgICAgICAgbXkgJHByb3RvQ2xhc3NOYW1lID0gIiR7Y2xhc3NOYW1lfVByb3RvdHlwZSI7Ci0g
ICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9ucyhcQGltcGxDb250ZW50LCAkY2xh
c3NOYW1lLCAkcHJvdG9DbGFzc05hbWUsICRpbnRlcmZhY2VOYW1lLCAkdmlzaWJsZUludGVyZmFj
ZU5hbWUsICRpbnRlcmZhY2UpOworICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlv
bnMoXEBpbXBsQ29udGVudCwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1lLCAkdmlzaWJsZUlu
dGVyZmFjZU5hbWUsICRpbnRlcmZhY2UpOwogICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Ik5hbWVkQ29uc3RydWN0b3IifSkgewotICAgICAgICAgICAgR2VuZXJh
dGVDb25zdHJ1Y3RvckRlZmluaXRpb25zKFxAaW1wbENvbnRlbnQsICRjbGFzc05hbWUsICRwcm90
b0NsYXNzTmFtZSwgJGludGVyZmFjZU5hbWUsICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJOYW1lZENvbnN0cnVjdG9yIn0sICRpbnRlcmZhY2UsICJHZW5lcmF0aW5nTmFtZWRDb25z
dHJ1Y3RvciIpOworICAgICAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb25zKFxA
aW1wbENvbnRlbnQsICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJGludGVyZmFjZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57Ik5hbWVkQ29uc3RydWN0b3IifSwgJGludGVyZmFjZSwgIkdlbmVy
YXRpbmdOYW1lZENvbnN0cnVjdG9yIik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTIyODAsOCAr
MjMwNCw4IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBteSAkZW5h
YmxlX2Z1bmN0aW9uID0gR2V0UnVudGltZUVuYWJsZUZ1bmN0aW9uTmFtZSgkYXR0cmlidXRlLT5z
aWduYXR1cmUpOwogICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZU5hbWUgPSAkYXR0cmlidXRlLT5z
aWduYXR1cmUtPm5hbWU7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAo
JHtlbmFibGVfZnVuY3Rpb259KCkpIHtcbiIpOwotICAgICAgICAgICAgbXkgJGdldHRlciA9IEdl
dEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRpbnRlcmZh
Y2UsICRhdHRyaWJ1dGUpOwotICAgICAgICAgICAgbXkgJHNldHRlciA9IElzUmVhZG9ubHkoJGF0
dHJpYnV0ZSkgPyAibnVsbHB0ciIgOiBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2VO
YW1lLCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKKyAgICAgICAgICAgIG15
ICRnZXR0ZXIgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUs
ICRhdHRyaWJ1dGUpOworICAgICAgICAgICAgbXkgJHNldHRlciA9IElzUmVhZG9ubHkoJGF0dHJp
YnV0ZSkgPyAibnVsbHB0ciIgOiBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRj
bGFzc05hbWUsICRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgICAgIGF1dG8qIGN1c3RvbUdldHRlclNldHRlciA9IEN1c3RvbUdldHRlclNldHRlcjo6Y3Jl
YXRlKHZtLCAkZ2V0dGVyLCAkc2V0dGVyKTtcbiIpOwogICAgICAgICAgICAgbXkgJGpzY0F0dHJp
YnV0ZXMgPSBHZXRKU0NBdHRyaWJ1dGVzRm9yQXR0cmlidXRlKCRpbnRlcmZhY2UsICRhdHRyaWJ1
dGUpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHB1dERpcmVjdEN1
c3RvbUFjY2Vzc29yKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT4kYXR0cmlidXRlTmFtZSwgY3VzdG9t
R2V0dGVyU2V0dGVyLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKCRqc2NBdHRyaWJ1dGVzKSk7XG4i
KTsKQEAgLTIzNDAsNyArMjM2NCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDwke2NsYXNzTmFtZX0qPihv
YmplY3QpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7XG4iKTsKLSAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZUdldE93blByb3BlcnR5U2xvdEJvZHkoJGludGVy
ZmFjZSwgJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRudW1JbnN0YW5jZVByb3BlcnRpZXMg
PiAwLCAwKSk7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgR2VuZXJhdGVHZXRPd25Q
cm9wZXJ0eVNsb3RCb2R5KCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRudW1JbnN0YW5jZVByb3Bl
cnRpZXMgPiAwLCAwKSk7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7
CiAgICAgICAgIH0KIApAQCAtMjQxNSw3ICsyNDM5LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb24KICAgICAgICAgICAgIG15ICRuYW1lID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1l
OwogICAgICAgICAgICAgbXkgJHR5cGUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGU7CiAg
ICAgICAgICAgICAkY29kZUdlbmVyYXRvci0+QXNzZXJ0Tm90U2VxdWVuY2VUeXBlKCR0eXBlKTsK
LSAgICAgICAgICAgIG15ICRnZXRGdW5jdGlvbk5hbWUgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1l
KCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKKyAg
ICAgICAgICAgIG15ICRnZXRGdW5jdGlvbk5hbWUgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRp
bnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgbXkgJGltcGxH
ZXR0ZXJGdW5jdGlvbk5hbWUgPSAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkYXR0cmlidXRl
LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEFzIn0gfHwgJG5h
bWUpOwogICAgICAgICAgICAgbXkgJGdldHRlckV4Y2VwdGlvbnNXaXRoTWVzc2FnZSA9ICRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkdldHRlclJhaXNlc0V4Y2Vw
dGlvbldpdGhNZXNzYWdlIn07CiAgICAgICAgICAgICBteSAkZ2V0dGVyRXhjZXB0aW9ucyA9ICRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkdldHRlclJhaXNlc0V4
Y2VwdGlvbiJ9IHx8ICRnZXR0ZXJFeGNlcHRpb25zV2l0aE1lc3NhZ2U7CkBAIC0yNzIwLDcgKzI3
NDQsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgICAgICAgICBteSAkbmFt
ZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZTsKICAgICAgICAgICAgIG15ICR0eXBlID0g
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlOwotICAgICAgICAgICAgbXkgJHB1dEZ1bmN0aW9u
TmFtZSA9IEdldEF0dHJpYnV0ZVNldHRlck5hbWUoJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUs
ICRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOworICAgICAgICAgICAgbXkgJHB1dEZ1bmN0aW9uTmFt
ZSA9IEdldEF0dHJpYnV0ZVNldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJp
YnV0ZSk7CiAgICAgICAgICAgICBteSAkaW1wbFNldHRlckZ1bmN0aW9uTmFtZSA9ICRjb2RlR2Vu
ZXJhdG9yLT5XS191Y2ZpcnN0KCRuYW1lKTsKICAgICAgICAgICAgIG15ICRzZXR0ZXJSYWlzZXNF
eGNlcHRpb25XaXRoTWVzc2FnZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IlNldHRlclJhaXNlc0V4Y2VwdGlvbldpdGhNZXNzYWdlIn07CiAgICAgICAgICAg
ICBteSAkc2V0dGVyUmFpc2VzRXhjZXB0aW9uID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiU2V0dGVyUmFpc2VzRXhjZXB0aW9uIn0gfHwgJHNldHRlclJhaXNl
c0V4Y2VwdGlvbldpdGhNZXNzYWdlOwpAQCAtMjg0MCw3ICsyODY0LDcgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgfTtcbiIpOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICIgLiBHZXROYXRpdmVUeXBlRnJvbVNpZ25hdHVyZSgkYXR0cmlidXRl
LT5zaWduYXR1cmUpIC4gIiBuYXRpdmVWYWx1ZSA9ICIgLiBKU1ZhbHVlVG9OYXRpdmUoJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLCAidmFsdWUiLCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJDb25kaXRpb25hbCJ9KSAuICI7XG4iKTsKKyAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAiIC4gR2V0TmF0aXZlVHlwZUZyb21TaWduYXR1cmUoJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlKSAuICIgbmF0aXZlVmFsdWUgPSAiIC4gSlNWYWx1ZVRvTmF0aXZl
KCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgInZhbHVlIiwgJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uZGl0aW9uYWwifSkgLiAiO1xuIik7
CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpXG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAgICAgcmV0dXJuIGZhbHNlO1xuIik7CiAKQEAgLTMwNDgsMTEgKzMwNzIsMTEg
QEAgRU5ECiAgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgICBteSAk
bnVtUGFyYW1ldGVycyA9IEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfTsKLSAgICAgICAgICAgICAg
ICAgICAgbXkgKCRmdW5jdGlvblN0cmluZywgJGR1bW15KSA9IEdlbmVyYXRlUGFyYW1ldGVyc0No
ZWNrKFxAaW1wbENvbnRlbnQsICRmdW5jdGlvbiwgJGludGVyZmFjZSwgJG51bVBhcmFtZXRlcnMs
ICRpbnRlcmZhY2VOYW1lLCAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUsICRzdmdQcm9wZXJ0
eVR5cGUsICRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSwgJHN2Z0xpc3RQcm9wZXJ0eVR5
cGUpOworICAgICAgICAgICAgICAgICAgICBteSAoJGZ1bmN0aW9uU3RyaW5nLCAkZHVtbXkpID0g
R2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2soXEBpbXBsQ29udGVudCwgJGZ1bmN0aW9uLCAkaW50ZXJm
YWNlLCAkbnVtUGFyYW1ldGVycywgJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lLCAkc3ZnUHJv
cGVydHlUeXBlLCAkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUsICRzdmdMaXN0UHJvcGVy
dHlUeXBlKTsKICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0
aW9uQ2FsbCgkZnVuY3Rpb24sICRmdW5jdGlvblN0cmluZywgIiAgICAiLCAkc3ZnUHJvcGVydHlU
eXBlLCAkaW50ZXJmYWNlTmFtZSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICBHZW5lcmF0ZUZ1bmN0aW9uQ2FzdGVkVGhpcygkaW50ZXJm
YWNlLCAkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKTsKKyAgICAgICAgICAg
ICAgICBHZW5lcmF0ZUZ1bmN0aW9uQ2FzdGVkVGhpcygkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAk
ZnVuY3Rpb24pOwogCiAgICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJDaGVja1NlY3VyaXR5In0gYW5kCiAgICAgICAgICAgICAgICAgICAgICEkZnVu
Y3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRvTm90Q2hlY2tTZWN1cml0
eSJ9KSB7CkBAIC0zMTAyLDcgKzMxMjYsNyBAQCBFTkQKICAgICAgICAgICAgICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgICAgICAgICAgICAgbXkgJG51bVBhcmFtZXRlcnMgPSBAeyRmdW5j
dGlvbi0+cGFyYW1ldGVyc307Ci0gICAgICAgICAgICAgICAgICAgICAgICBteSAoJGZ1bmN0aW9u
U3RyaW5nLCAkZHVtbXkpID0gR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2soXEBpbXBsQ29udGVudCwg
JGZ1bmN0aW9uLCAkaW50ZXJmYWNlLCAkbnVtUGFyYW1ldGVycywgJGludGVyZmFjZU5hbWUsICRm
dW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSwgJHN2Z1Byb3BlcnR5VHlwZSwgJHN2Z1Byb3BlcnR5
T3JMaXN0UHJvcGVydHlUeXBlLCAkc3ZnTGlzdFByb3BlcnR5VHlwZSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBteSAoJGZ1bmN0aW9uU3RyaW5nLCAkZHVtbXkpID0gR2VuZXJhdGVQYXJhbWV0
ZXJzQ2hlY2soXEBpbXBsQ29udGVudCwgJGZ1bmN0aW9uLCAkaW50ZXJmYWNlLCAkbnVtUGFyYW1l
dGVycywgJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lLCAkc3ZnUHJvcGVydHlUeXBlLCAkc3Zn
UHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUsICRzdmdMaXN0UHJvcGVydHlUeXBlKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlSW1wbGVtZW50YXRpb25GdW5jdGlvbkNhbGwoJGZ1
bmN0aW9uLCAkZnVuY3Rpb25TdHJpbmcsICIgICAgIiwgJHN2Z1Byb3BlcnR5VHlwZSwgJGludGVy
ZmFjZU5hbWUpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQpAQCAt
MzExMSwxMSArMzEzNSw4IEBAIEVORAogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9
XG5cbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcblxuIikgaWYg
JGNvbmRpdGlvbmFsOwogCi0gICAgICAgICAgICBpZiAoISRpc0N1c3RvbSAmJiAkaXNPdmVybG9h
ZGVkICYmICRmdW5jdGlvbi0+e292ZXJsb2FkSW5kZXh9ID09IEB7JGZ1bmN0aW9uLT57b3Zlcmxv
YWRzfX0pIHsKLSAgICAgICAgICAgICAgICAjIEdlbmVyYXRlIGEgZnVuY3Rpb24gZGlzcGF0Y2hp
bmcgY2FsbCB0byB0aGUgcmVzdCBvZiB0aGUgb3ZlcmxvYWRzLgotICAgICAgICAgICAgICAgIEdl
bmVyYXRlT3ZlcmxvYWRlZEZ1bmN0aW9uKCRmdW5jdGlvbiwgJGludGVyZmFjZSwgJGludGVyZmFj
ZU5hbWUpOwotICAgICAgICAgICAgfQotCisgICAgICAgICAgICAjIEdlbmVyYXRlIGEgZnVuY3Rp
b24gZGlzcGF0Y2hpbmcgY2FsbCB0byB0aGUgcmVzdCBvZiB0aGUgb3ZlcmxvYWRzLgorICAgICAg
ICAgICAgR2VuZXJhdGVPdmVybG9hZGVkRnVuY3Rpb24oJGZ1bmN0aW9uLCAkaW50ZXJmYWNlKSBp
ZiAhJGlzQ3VzdG9tICYmICRpc092ZXJsb2FkZWQgJiYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRl
eH0gPT0gQHskZnVuY3Rpb24tPntvdmVybG9hZHN9fTsKICAgICAgICAgfQogCiAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAkZW5kQXBwbGVDb3B5cmlnaHQpIGlmICRpbkFwcGxlQ29weXJpZ2h0
OwpAQCAtMzM2MSwxMCArMzM4Miw4IEBAIEVORAogCiBzdWIgR2VuZXJhdGVGdW5jdGlvbkNhc3Rl
ZFRoaXMKIHsKLSAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7Ci0gICAgbXkgJGludGVyZmFjZU5h
bWUgPSBzaGlmdDsKLSAgICBteSAkY2xhc3NOYW1lID0gc2hpZnQ7Ci0gICAgbXkgJGZ1bmN0aW9u
ID0gc2hpZnQ7CisgICAgbXkgKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRmdW5jdGlvbikgPSBA
XzsKKwogICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tUHJv
eHlUb0pTT2JqZWN0In0pIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGNsYXNz
TmFtZSogY2FzdGVkVGhpcyA9IHRvJHtjbGFzc05hbWV9KHN0YXRlLT50aGlzVmFsdWUoKS50b1Ro
aXMoc3RhdGUsIE5vdFN0cmljdE1vZGUpKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKVxuIik7CkBAIC0zMzcyLDYgKzMzOTEs
NyBAQCBzdWIgR2VuZXJhdGVGdW5jdGlvbkNhc3RlZFRoaXMKICAgICB9IGVsc2UgewogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlz
VmFsdWUoKTtcbiIpOwogICAgICAgICBteSAkY2FzdGluZ0hlbHBlciA9IEdldENhc3RpbmdIZWxw
ZXJGb3JUaGlzT2JqZWN0KCRpbnRlcmZhY2UpOworICAgICAgICBteSAkaW50ZXJmYWNlTmFtZSA9
ICRpbnRlcmZhY2UtPm5hbWU7CiAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRXZlbnRU
YXJnZXQiKSB7CiAgICAgICAgICAgICAjIFdlIGFsbG93IGNhbGxpbmcgdGhlIEV2ZW50VGFyZ2V0
IEFQSSB3aXRob3V0IGFuIGV4cGxpY2l0ICd0aGlzJyB2YWx1ZSBhbmQgZmFsbCBiYWNrIHRvIHVz
aW5nIHRoZSBnbG9iYWwgb2JqZWN0IGluc3RlYWQuCiAgICAgICAgICAgICAjIEFzIG9mIGVhcmx5
IDIwMTYsIHRoaXMgbWF0Y2hlcyBGaXJlZm94IGFuZCBDaHJvbWUncyBiZWhhdmlvci4KQEAgLTMz
ODQsNyArMzQwNCw3IEBAIHN1YiBHZW5lcmF0ZUZ1bmN0aW9uQ2FzdGVkVGhpcwogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsIFwiJGludGVyZmFjZU5hbWVcIiwgXCIkZG9tRnVuY3Rpb25OYW1lXCIpO1xuIik7CiAgICAg
fQogCi0gICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCAke2NsYXNzTmFtZX06OmluZm8oKSk7XG4iKSB1bmxlc3MgJGludGVyZmFj
ZU5hbWUgZXEgIkV2ZW50VGFyZ2V0IjsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICR7Y2xhc3NOYW1lfTo6aW5mbygpKTtc
biIpIHVubGVzcyAkaW50ZXJmYWNlLT5uYW1lIGVxICJFdmVudFRhcmdldCI7CiB9CiAKIHN1YiBH
ZW5lcmF0ZUNhbGxXaXRoCkBAIC0zNDkzLDIwICszNTEzLDkgQEAgc3ViIFdpbGxDb252ZXJ0VW5k
ZWZpbmVkVG9EZWZhdWx0UGFyYW1ldGVyVmFsdWUKIAogc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0No
ZWNrCiB7Ci0gICAgbXkgJG91dHB1dEFycmF5ID0gc2hpZnQ7Ci0gICAgbXkgJGZ1bmN0aW9uID0g
c2hpZnQ7Ci0gICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OwotICAgIG15ICRudW1QYXJhbWV0ZXJz
ID0gc2hpZnQ7Ci0gICAgbXkgJGludGVyZmFjZU5hbWUgPSBzaGlmdDsKLSAgICBteSAkZnVuY3Rp
b25JbXBsZW1lbnRhdGlvbk5hbWUgPSBzaGlmdDsKLSAgICBteSAkc3ZnUHJvcGVydHlUeXBlID0g
c2hpZnQ7Ci0gICAgbXkgJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlID0gc2hpZnQ7Ci0g
ICAgbXkgJHN2Z0xpc3RQcm9wZXJ0eVR5cGUgPSBzaGlmdDsKLQotICAgIG15ICRhcmdzSW5kZXgg
PSAwOwotICAgIG15ICRoYXNPcHRpb25hbEFyZ3VtZW50cyA9IDA7CisgICAgbXkgKCRvdXRwdXRB
cnJheSwgJGZ1bmN0aW9uLCAkaW50ZXJmYWNlLCAkbnVtUGFyYW1ldGVycywgJGZ1bmN0aW9uSW1w
bGVtZW50YXRpb25OYW1lLCAkc3ZnUHJvcGVydHlUeXBlLCAkc3ZnUHJvcGVydHlPckxpc3RQcm9w
ZXJ0eVR5cGUsICRzdmdMaXN0UHJvcGVydHlUeXBlKSA9IEBfOwogCi0gICAgbXkgJGNsYXNzTmFt
ZSA9ICRpbnRlcmZhY2UtPm5hbWU7CisgICAgbXkgJGludGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNl
LT5uYW1lOwogICAgIG15IEBhcmd1bWVudHM7CiAgICAgbXkgJGZ1bmN0aW9uTmFtZTsKICAgICBt
eSAkaW1wbGVtZW50ZWRCeSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9OwpAQCAtMzUzMyw2ICszNTQyLDggQEAgc3ViIEdlbmVyYXRl
UGFyYW1ldGVyc0NoZWNrCiAKICAgICAkaW1wbEluY2x1ZGVzeyJFeGNlcHRpb25Db2RlLmgifSA9
IDE7CiAgICAgJGltcGxJbmNsdWRlc3siSlNET01CaW5kaW5nLmgifSA9IDE7CisKKyAgICBteSAk
YXJnc0luZGV4ID0gMDsKICAgICBmb3JlYWNoIG15ICRwYXJhbWV0ZXIgKEB7JGZ1bmN0aW9uLT5w
YXJhbWV0ZXJzfSkgewogICAgICAgICBteSAkYXJnVHlwZSA9ICRwYXJhbWV0ZXItPnR5cGU7CiAg
ICAgICAgIG15ICRvcHRpb25hbCA9ICRwYXJhbWV0ZXItPmlzT3B0aW9uYWw7CkBAIC0zNjI1LDcg
KzM2MzYsOSBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7XG4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNpZiAoJGNvZGVHZW5l
cmF0b3ItPklzRW51bVR5cGUoJGFyZ1R5cGUpKSB7Ci0gICAgICAgICAgICBteSAkY2xhc3NOYW1l
ID0gR2V0RW51bWVyYXRpb25DbGFzc05hbWUoJGFyZ1R5cGUpOworICAgICAgICAgICAgbXkgJGNs
YXNzTmFtZSA9IEdldEVudW1lcmF0aW9uQ2xhc3NOYW1lKCRpbnRlcmZhY2UsICRhcmdUeXBlKTsK
KyAgICAgICAgICAgIG15ICRjbGFzc0lkZW50aWZpZXIgPSBHZXRFbnVtZXJhdGlvbkNsYXNzSWRl
bnRpZmllcigkaW50ZXJmYWNlLCAkYXJnVHlwZSk7CisKICAgICAgICAgICAgICRpbXBsSW5jbHVk
ZXN7IjxydW50aW1lL0Vycm9yLmg+In0gPSAxOwogCiAgICAgICAgICAgICBteSAkbmF0aXZlVHlw
ZSA9ICRjbGFzc05hbWU7CkBAIC0zNjUyLDExICszNjY1LDExIEBAIHN1YiBHZW5lcmF0ZVBhcmFt
ZXRlcnNDaGVjawogICAgICAgICAgICAgICAgICRpbmRlbnQgPSAiICAgICI7CiAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiRpbmRlbnQgICAgJGRlZmlu
ZU9wdGlvbmFsVmFsdWUgPSBwYXJzZSRjbGFzc05hbWUoKnN0YXRlLCAke25hbWV9VmFsdWUpO1xu
Iik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIkaW5kZW50ICAgICRkZWZpbmVP
cHRpb25hbFZhbHVlID0gcGFyc2UkY2xhc3NJZGVudGlmaWVyKCpzdGF0ZSwgJHtuYW1lfVZhbHVl
KTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiJGluZGVudCAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSlcbiIpOwogICAgICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiJGluZGVudCAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiJGluZGVu
dCAgICBpZiAoVU5MSUtFTFkoISRvcHRpb25hbFZhbHVlKSlcbiIpOwotICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiJGluZGVudCAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0
QmVFbnVtRXJyb3IoKnN0YXRlLCAkYXJnc0luZGV4LCBcIiRuYW1lXCIsIFwiJGludGVyZmFjZU5h
bWVcIiwgJHF1b3RlZEZ1bmN0aW9uTmFtZSwgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlcyRjbGFz
c05hbWUpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIkaW5kZW50ICAg
ICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJvcigqc3RhdGUsICRhcmdzSW5k
ZXgsIFwiJG5hbWVcIiwgXCIkaW50ZXJmYWNlTmFtZVwiLCAkcXVvdGVkRnVuY3Rpb25OYW1lLCBl
eHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzJGNsYXNzSWRlbnRpZmllcik7XG4iKTsKICAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiRpbmRlbnQgICAgJG5hbWUgPSBvcHRpb25hbFZhbHVl
LnZhbHVlKCk7XG4iKSBpZiAkb3B0aW9uYWxWYWx1ZSBuZSAkbmFtZTsKIAogICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1cbiIpIGlmICRpbmRlbnQgbmUgIiI7CkBAIC0zNzE5
LDcgKzM3MzIsNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgICAg
ICAgICAgJG91dGVyID0gIiI7CiAgICAgICAgICAgICAgICAgICAgICRpbm5lciA9ICJzdGF0ZS0+
YXJndW1lbnQoJGFyZ3NJbmRleCkiOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgJG5hdGl2ZVR5cGUgJG5hbWUgPSAkb3V0ZXIiIC4g
SlNWYWx1ZVRvTmF0aXZlKCRwYXJhbWV0ZXIsICRpbm5lciwgJGZ1bmN0aW9uLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25kaXRpb25hbCJ9KSAuICI7XG4iKTsKKyAgICAgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgJG5hdGl2ZVR5cGUgJG5hbWUgPSAkb3V0
ZXIiIC4gSlNWYWx1ZVRvTmF0aXZlKCRpbnRlcmZhY2UsICRwYXJhbWV0ZXIsICRpbm5lciwgJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25kaXRpb25hbCJ9KSAu
ICI7XG4iKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgIyBDaGVjayBpZiB0aGUgdHlw
ZSBjb252ZXJzaW9uIHN1Y2NlZWRlZC4KQEAgLTM4NjIsNyArMzg3NSw3IEBAIHN1YiBHZW5lcmF0
ZUNhbGxiYWNrSW1wbGVtZW50YXRpb24KICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxudXNpbmcg
bmFtZXNwYWNlIEpTQztcblxuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJuYW1lc3BhY2Ug
V2ViQ29yZSB7XG5cbiIpOwogCi0gICAgcHVzaChAaW1wbENvbnRlbnQsIEdldEVudW1lcmF0aW9u
SW1wbGVtZW50YXRpb25Db250ZW50KCRlbnVtZXJhdGlvbnMpKTsKKyAgICBwdXNoKEBpbXBsQ29u
dGVudCwgR2VuZXJhdGVFbnVtZXJhdGlvbkltcGxlbWVudGF0aW9uQ29udGVudCgkaW50ZXJmYWNl
LCAkZW51bWVyYXRpb25zKSk7CiAKICAgICAjIENvbnN0cnVjdG9yCiAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIke2NsYXNzTmFtZX06OiR7Y2xhc3NOYW1lfShKU09iamVjdCogY2FsbGJhY2ssIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG4iKTsKQEAgLTM5MzksNyArMzk1Miw3IEBA
IHN1YiBHZW5lcmF0ZUNhbGxiYWNrSW1wbGVtZW50YXRpb24KIAogICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb21waWxlVGltZUNoZWNrRm9yRW51bXNJ
Zk5lZWRlZCgkaW50ZXJmYWNlKSk7CiAKLSAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5p
dGlvbnMoXEBpbXBsQ29udGVudCwgJGNsYXNzTmFtZSwgIiIsICRpbnRlcmZhY2VOYW1lLCAkdmlz
aWJsZUludGVyZmFjZU5hbWUsICRpbnRlcmZhY2UpOworICAgICAgIEdlbmVyYXRlQ29uc3RydWN0
b3JEZWZpbml0aW9ucyhcQGltcGxDb250ZW50LCAkY2xhc3NOYW1lLCAiIiwgJHZpc2libGVJbnRl
cmZhY2VOYW1lLCAkaW50ZXJmYWNlKTsKIAogICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNW
YWx1ZSAke2NsYXNzTmFtZX06OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdClcbntcbiIpOwogICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3Rvcjwke2NsYXNzTmFtZX1Db25zdHJ1Y3Rvcj4odm0s
ICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTtcbiIpOwpA
QCAtNDMxNyw5ICs0MzMwLDcgQEAgbXkgJWludGVnZXJDb252ZXJzaW9uRnVuY3Rpb24gPSAoCiAK
IHN1YiBKU1ZhbHVlVG9OYXRpdmUKIHsKLSAgICBteSAkc2lnbmF0dXJlID0gc2hpZnQ7Ci0gICAg
bXkgJHZhbHVlID0gc2hpZnQ7Ci0gICAgbXkgJGNvbmRpdGlvbmFsID0gc2hpZnQ7CisgICAgbXkg
KCRpbnRlcmZhY2UsICRzaWduYXR1cmUsICR2YWx1ZSwgJGNvbmRpdGlvbmFsKSA9IEBfOwogCiAg
ICAgbXkgJHR5cGUgPSAkc2lnbmF0dXJlLT50eXBlOwogCkBAIC00MzY4LDcgKzQzNzksNyBAQCBz
dWIgSlNWYWx1ZVRvTmF0aXZlCiAgICAgcmV0dXJuICJ2YWx1ZVRvRGF0ZShzdGF0ZSwgJHZhbHVl
KSIgaWYgJHR5cGUgZXEgIkRhdGUiOwogCiAgICAgcmV0dXJuICJ0byR0eXBlKCR2YWx1ZSkiIGlm
ICRjb2RlR2VuZXJhdG9yLT5Jc1R5cGVkQXJyYXlUeXBlKCR0eXBlKTsKLSAgICByZXR1cm4gInBh
cnNlIiAuIEdldEVudW1lcmF0aW9uQ2xhc3NOYW1lKCR0eXBlKSAuICIoKnN0YXRlLCAkdmFsdWUp
IiBpZiAkY29kZUdlbmVyYXRvci0+SXNFbnVtVHlwZSgkdHlwZSk7CisgICAgcmV0dXJuICJwYXJz
ZSIgLiBHZXRFbnVtZXJhdGlvbkNsYXNzSWRlbnRpZmllcigkaW50ZXJmYWNlLCAkdHlwZSkgLiAi
KCpzdGF0ZSwgJHZhbHVlKSIgaWYgJGNvZGVHZW5lcmF0b3ItPklzRW51bVR5cGUoJHR5cGUpOwog
CiAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTJHR5cGUuaCIsICRjb25kaXRpb25hbCk7CiAKQEAg
LTQ3NDcsMTAgKzQ3NTgsNyBAQCBzdWIgV3JpdGVEYXRhCiAKIHN1YiBHZW5lcmF0ZVByb3RvdHlw
ZURlY2xhcmF0aW9uCiB7Ci0gICAgbXkgJG91dHB1dEFycmF5ID0gc2hpZnQ7Ci0gICAgbXkgJGNs
YXNzTmFtZSA9IHNoaWZ0OwotICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKLSAgICBteSAkaW50
ZXJmYWNlTmFtZSA9IHNoaWZ0OworICAgIG15ICgkb3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRp
bnRlcmZhY2UpID0gQF87CiAKICAgICBteSAkcHJvdG90eXBlQ2xhc3NOYW1lID0gIiR7Y2xhc3NO
YW1lfVByb3RvdHlwZSI7CiAKQEAgLTQ4MjYsMTEgKzQ4MzQsOSBAQCBzdWIgR2V0Q29uc3RydWN0
b3JUZW1wbGF0ZUNsYXNzTmFtZQogCiBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9u
CiB7Ci0gICAgbXkgJG91dHB1dEFycmF5ID0gc2hpZnQ7Ci0gICAgbXkgJGNsYXNzTmFtZSA9IHNo
aWZ0OwotICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKLSAgICBteSAkaW50ZXJmYWNlTmFtZSA9
IHNoaWZ0OworICAgIG15ICgkb3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRpbnRlcmZhY2UpID0g
QF87CiAKKyAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRpbnRlcmZhY2UtPm5hbWU7CiAgICAgbXkg
JGNvbnN0cnVjdG9yQ2xhc3NOYW1lID0gIiR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yIjsKICAgICBt
eSAkdGVtcGxhdGVDbGFzc05hbWUgPSBHZXRDb25zdHJ1Y3RvclRlbXBsYXRlQ2xhc3NOYW1lKCRp
bnRlcmZhY2UpOwogCkBAIC00ODQzLDI5ICs0ODQ5LDIzIEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVj
dG9yRGVjbGFyYXRpb24KIAogc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9ucwogewot
ICAgIG15ICRvdXRwdXRBcnJheSA9IHNoaWZ0OwotICAgIG15ICRjbGFzc05hbWUgPSBzaGlmdDsK
LSAgICBteSAkcHJvdG9DbGFzc05hbWUgPSBzaGlmdDsKLSAgICBteSAkaW50ZXJmYWNlTmFtZSA9
IHNoaWZ0OwotICAgIG15ICR2aXNpYmxlSW50ZXJmYWNlTmFtZSA9IHNoaWZ0OwotICAgIG15ICRp
bnRlcmZhY2UgPSBzaGlmdDsKLSAgICBteSAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IgPSBz
aGlmdDsKKyAgICBteSAoJG91dHB1dEFycmF5LCAkY2xhc3NOYW1lLCAkcHJvdG9DbGFzc05hbWUs
ICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZSwgJGdlbmVyYXRpbmdOYW1lZENvbnN0
cnVjdG9yKSA9IEBfOwogCiAgICAgaWYgKElzQ29uc3RydWN0YWJsZSgkaW50ZXJmYWNlKSkgewog
ICAgICAgICBteSBAY29uc3RydWN0b3JzID0gQHskaW50ZXJmYWNlLT5jb25zdHJ1Y3RvcnN9Owog
ICAgICAgICBpZiAoQGNvbnN0cnVjdG9ycyA+IDEpIHsKICAgICAgICAgICAgIGZvcmVhY2ggbXkg
JGNvbnN0cnVjdG9yIChAY29uc3RydWN0b3JzKSB7Ci0gICAgICAgICAgICAgICAgR2VuZXJhdGVD
b25zdHJ1Y3RvckRlZmluaXRpb24oJG91dHB1dEFycmF5LCAkY2xhc3NOYW1lLCAkcHJvdG9DbGFz
c05hbWUsICRpbnRlcmZhY2VOYW1lLCAkdmlzaWJsZUludGVyZmFjZU5hbWUsICRpbnRlcmZhY2Us
ICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciwgJGNvbnN0cnVjdG9yKTsKKyAgICAgICAgICAg
ICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbigkb3V0cHV0QXJyYXksICRjbGFzc05h
bWUsICRwcm90b0NsYXNzTmFtZSwgJHZpc2libGVJbnRlcmZhY2VOYW1lLCAkaW50ZXJmYWNlLCAk
Z2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IsICRjb25zdHJ1Y3Rvcik7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBHZW5lcmF0ZU92ZXJsb2FkZWRDb25zdHJ1Y3RvckRlZmluaXRpb24oJG91
dHB1dEFycmF5LCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlKTsKICAgICAgICAgfSBlbHNpZiAoQGNv
bnN0cnVjdG9ycyA9PSAxKSB7Ci0gICAgICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5p
dGlvbigkb3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJGludGVyZmFj
ZU5hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZSwgJGdlbmVyYXRpbmdOYW1l
ZENvbnN0cnVjdG9yLCAkY29uc3RydWN0b3JzWzBdKTsKKyAgICAgICAgICAgIEdlbmVyYXRlQ29u
c3RydWN0b3JEZWZpbml0aW9uKCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NO
YW1lLCAkdmlzaWJsZUludGVyZmFjZU5hbWUsICRpbnRlcmZhY2UsICRnZW5lcmF0aW5nTmFtZWRD
b25zdHJ1Y3RvciwgJGNvbnN0cnVjdG9yc1swXSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbigkb3V0cHV0QXJyYXksICRjbGFzc05h
bWUsICRwcm90b0NsYXNzTmFtZSwgJGludGVyZmFjZU5hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFt
ZSwgJGludGVyZmFjZSwgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yKTsKKyAgICAgICAgICAg
IEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwg
JHByb3RvQ2xhc3NOYW1lLCAkdmlzaWJsZUludGVyZmFjZU5hbWUsICRpbnRlcmZhY2UsICRnZW5l
cmF0aW5nTmFtZWRDb25zdHJ1Y3Rvcik7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBHZW5lcmF0
ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcygkb3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRwcm90
b0NsYXNzTmFtZSwgJGludGVyZmFjZU5hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGludGVy
ZmFjZSwgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yKTsKKyAgICBHZW5lcmF0ZUNvbnN0cnVj
dG9ySGVscGVyTWV0aG9kcygkb3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFt
ZSwgJHZpc2libGVJbnRlcmZhY2VOYW1lLCAkaW50ZXJmYWNlLCAkZ2VuZXJhdGluZ05hbWVkQ29u
c3RydWN0b3IpOwogfQogCiBzdWIgR2VuZXJhdGVPdmVybG9hZGVkQ29uc3RydWN0b3JEZWZpbml0
aW9uCkBAIC00OTE1LDE5ICs0OTE1LDExIEBAIEVORAogCiBzdWIgR2VuZXJhdGVDb25zdHJ1Y3Rv
ckRlZmluaXRpb24KIHsKLSAgICBteSAkb3V0cHV0QXJyYXkgPSBzaGlmdDsKLSAgICBteSAkY2xh
c3NOYW1lID0gc2hpZnQ7Ci0gICAgbXkgJHByb3RvQ2xhc3NOYW1lID0gc2hpZnQ7Ci0gICAgbXkg
JGludGVyZmFjZU5hbWUgPSBzaGlmdDsKLSAgICBteSAkdmlzaWJsZUludGVyZmFjZU5hbWUgPSBz
aGlmdDsKLSAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7Ci0gICAgbXkgJGdlbmVyYXRpbmdOYW1l
ZENvbnN0cnVjdG9yID0gc2hpZnQ7Ci0gICAgbXkgJGZ1bmN0aW9uID0gc2hpZnQ7CisgICAgbXkg
KCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1lLCAkdmlzaWJsZUludGVy
ZmFjZU5hbWUsICRpbnRlcmZhY2UsICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciwgJGZ1bmN0
aW9uKSA9IEBfOwogCi0gICAgaWYgKElzSlNCdWlsdGluQ29uc3RydWN0b3IoJGludGVyZmFjZSkp
IHsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICByZXR1cm4gaWYgSXNKU0J1aWx0aW5Db25z
dHJ1Y3RvcigkaW50ZXJmYWNlKTsKIAorICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGludGVyZmFj
ZS0+bmFtZTsKICAgICBteSAkY29uc3RydWN0b3JDbGFzc05hbWUgPSAkZ2VuZXJhdGluZ05hbWVk
Q29uc3RydWN0b3IgPyAiJHtjbGFzc05hbWV9TmFtZWRDb25zdHJ1Y3RvciIgOiAiJHtjbGFzc05h
bWV9Q29uc3RydWN0b3IiOwogCiAgICAgaWYgKElzQ29uc3RydWN0YWJsZSgkaW50ZXJmYWNlKSkg
ewpAQCAtNTA0MCw3ICs1MDMyLDcgQEAgRU5ECiAgICAgICAgICAgICAjIEZJWE1FOiBGb3Igbm93
LCB3ZSBkbyBub3Qgc3VwcG9ydCBTVkcgY29uc3RydWN0b3JzLgogICAgICAgICAgICAgIyBGSVhN
RTogQ3VycmVudGx5IFtDb25zdHJ1Y3RvciguLi4pXSBkb2VzIG5vdCB5ZXQgc3VwcG9ydCBvcHRp
b25hbCBhcmd1bWVudHMgd2l0aG91dCBbRGVmYXVsdD0uLi5dCiAgICAgICAgICAgICBteSAkbnVt
UGFyYW1ldGVycyA9IEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfTsKLSAgICAgICAgICAgIG15ICgk
ZHVtbXksICRwYXJhbUluZGV4KSA9IEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrKCRvdXRwdXRBcnJh
eSwgJGZ1bmN0aW9uLCAkaW50ZXJmYWNlLCAkbnVtUGFyYW1ldGVycywgJGludGVyZmFjZU5hbWUs
ICJjb25zdHJ1Y3RvckNhbGxiYWNrIiwgdW5kZWYsIHVuZGVmLCB1bmRlZik7CisgICAgICAgICAg
ICBteSAoJGR1bW15LCAkcGFyYW1JbmRleCkgPSBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjaygkb3V0
cHV0QXJyYXksICRmdW5jdGlvbiwgJGludGVyZmFjZSwgJG51bVBhcmFtZXRlcnMsICJjb25zdHJ1
Y3RvckNhbGxiYWNrIiwgdW5kZWYsIHVuZGVmLCB1bmRlZik7CiAKICAgICAgICAgICAgIGlmICgk
Y29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygkaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3JDYWxsV2l0aCJ9LCAiU2NyaXB0U3RhdGUiKSkg
ewogICAgICAgICAgICAgICAgIHB1c2goQGNvbnN0cnVjdG9yQXJnTGlzdCwgIipzdGF0ZSIpOwpA
QCAtNTEyNiwxMyArNTExOCw3IEBAIHN1YiBDb25zdHJ1Y3Rvckhhc1Byb3BlcnRpZXMKIAogc3Vi
IEdlbmVyYXRlQ29uc3RydWN0b3JIZWxwZXJNZXRob2RzCiB7Ci0gICAgbXkgJG91dHB1dEFycmF5
ID0gc2hpZnQ7Ci0gICAgbXkgJGNsYXNzTmFtZSA9IHNoaWZ0OwotICAgIG15ICRwcm90b0NsYXNz
TmFtZSA9IHNoaWZ0OwotICAgIG15ICRpbnRlcmZhY2VOYW1lID0gc2hpZnQ7Ci0gICAgbXkgJHZp
c2libGVJbnRlcmZhY2VOYW1lID0gc2hpZnQ7Ci0gICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0Owot
ICAgIG15ICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciA9IHNoaWZ0OworICAgIG15ICgkb3V0
cHV0QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJHZpc2libGVJbnRlcmZhY2VO
YW1lLCAkaW50ZXJmYWNlLCAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IpID0gQF87CiAKICAg
ICBteSAkY29uc3RydWN0b3JDbGFzc05hbWUgPSAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3Ig
PyAiJHtjbGFzc05hbWV9TmFtZWRDb25zdHJ1Y3RvciIgOiAiJHtjbGFzc05hbWV9Q29uc3RydWN0
b3IiOwogICAgIG15ICRsZWFzdENvbnN0cnVjdG9yTGVuZ3RoID0gMDsKQEAgLTUxODMsMTQgKzUx
NjksOCBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMKICAgICB9CiAKICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcoJnZtLCBTdHJpbmcoQVNDSUlMaXRlcmFsKFwiJHZp
c2libGVJbnRlcmZhY2VOYW1lXCIpKSksIFJlYWRPbmx5IHwgRG9udEVudW0pO1xuIik7Ci0KLSAg
ICBpZiAoZGVmaW5lZCAkbGVhc3RDb25zdHJ1Y3Rvckxlbmd0aCkgewotICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgs
IGpzTnVtYmVyKCR7bGVhc3RDb25zdHJ1Y3Rvckxlbmd0aH0pLCBSZWFkT25seSB8IERvbnRFbnVt
KTtcbiIpOwotICAgIH0KLQotICAgIGlmIChDb25zdHJ1Y3Rvckhhc1Byb3BlcnRpZXMoJGludGVy
ZmFjZSkpIHsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJlaWZ5U3RhdGljUHJv
cGVydGllcyh2bSwgJHtjbGFzc05hbWV9Q29uc3RydWN0b3JUYWJsZVZhbHVlcywgKnRoaXMpO1xu
Iik7Ci0gICAgfQorICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoJHtsZWFzdENvbnN0cnVjdG9yTGVuZ3Ro
fSksIFJlYWRPbmx5IHwgRG9udEVudW0pO1xuIikgaWYgZGVmaW5lZCAkbGVhc3RDb25zdHJ1Y3Rv
ckxlbmd0aDsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmVpZnlTdGF0aWNQcm9wZXJ0
aWVzKHZtLCAke2NsYXNzTmFtZX1Db25zdHJ1Y3RvclRhYmxlVmFsdWVzLCAqdGhpcyk7XG4iKSBp
ZiBDb25zdHJ1Y3Rvckhhc1Byb3BlcnRpZXMoJGludGVyZmFjZSk7CiAKICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICJ9XG5cbiIpOwogCkBAIC01MjEyLDcgKzUxOTIsNyBAQCBzdWIgR2VuZXJhdGVD
b25zdHJ1Y3RvckhlbHBlck1ldGhvZHMKICAgICBpZiAoSXNKU0J1aWx0aW5Db25zdHJ1Y3Rvcigk
aW50ZXJmYWNlKSkgewogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ0ZW1wbGF0ZTw+IEZ1
bmN0aW9uRXhlY3V0YWJsZSogJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OmluaXRpYWxpemVFeGVj
dXRhYmxlKFZNJiB2bSlcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsK
LSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiAiIC4gR2V0SlNCdWlsdGlu
RnVuY3Rpb25OYW1lRnJvbVN0cmluZygkaW50ZXJmYWNlTmFtZSwgImluaXRpYWxpemUiIC4gJGlu
dGVyZmFjZU5hbWUpIC4gIih2bSk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgIHJldHVybiAiIC4gR2V0SlNCdWlsdGluRnVuY3Rpb25OYW1lRnJvbVN0cmluZygkaW50ZXJm
YWNlLT5uYW1lLCAiaW5pdGlhbGl6ZSIgLiAkaW50ZXJmYWNlLT5uYW1lKSAuICIodm0pO1xuIik7
CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn1cbiIpOwogICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICJcbiIpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggY2NkMTNiYTZiODVmOGZhZmE0
YTM0YzUzYjgyYTk5NTFjZjhlNjQ2Zi4uYjhlMTM1MGJjMTY2MzAyYjhjZDcxNWMwNWFlMDllN2Vh
YjAyMjEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTg3LDExICs4NywxMSBAQCB1c2luZyBuYW1lc3BhY2Ug
SlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUpTU3RyaW5nKiBqc1N0cmluZ1dpdGhDYWNo
ZShFeGVjU3RhdGUqLCBUZXN0RW51bVR5cGUpOwotT3B0aW9uYWw8VGVzdEVudW1UeXBlPiBwYXJz
ZVRlc3RFbnVtVHlwZShFeGVjU3RhdGUmLCBKU1ZhbHVlKTsKLWV4dGVybiBjb25zdCBjaGFyIGV4
cGVjdGVkRW51bWVyYXRpb25WYWx1ZXNUZXN0RW51bVR5cGVbXTsKK0pTU3RyaW5nKiBqc1N0cmlu
Z1dpdGhDYWNoZShFeGVjU3RhdGUqLCBUZXN0T2JqOjpFbnVtVHlwZSk7CitPcHRpb25hbDxUZXN0
T2JqOjpFbnVtVHlwZT4gcGFyc2VUZXN0T2JqRW51bVR5cGUoRXhlY1N0YXRlJiwgSlNWYWx1ZSk7
CitleHRlcm4gY29uc3QgY2hhciBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzVGVzdE9iakVudW1U
eXBlW107CiAKLUpTU3RyaW5nKiBqc1N0cmluZ1dpdGhDYWNoZShFeGVjU3RhdGUqIHN0YXRlLCBU
ZXN0RW51bVR5cGUgZW51bWVyYXRpb25WYWx1ZSkKK0pTU3RyaW5nKiBqc1N0cmluZ1dpdGhDYWNo
ZShFeGVjU3RhdGUqIHN0YXRlLCBUZXN0T2JqOjpFbnVtVHlwZSBlbnVtZXJhdGlvblZhbHVlKQog
ewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IHZhbHVlc1tdID0gewog
ICAgICAgICBlbXB0eVN0cmluZygpLApAQCAtOTksMzkgKzk5LDM5IEBAIEpTU3RyaW5nKiBqc1N0
cmluZ1dpdGhDYWNoZShFeGVjU3RhdGUqIHN0YXRlLCBUZXN0RW51bVR5cGUgZW51bWVyYXRpb25W
YWx1ZSkKICAgICAgICAgQVNDSUlMaXRlcmFsKCJFbnVtVmFsdWUyIiksCiAgICAgICAgIEFTQ0lJ
TGl0ZXJhbCgiRW51bVZhbHVlMyIpLAogICAgIH07Ci0gICAgc3RhdGljX2Fzc2VydChzdGF0aWNf
Y2FzdDxzaXplX3Q+KFRlc3RFbnVtVHlwZTo6RW1wdHlTdHJpbmcpID09IDAsICJUZXN0RW51bVR5
cGU6OkVtcHR5U3RyaW5nIGlzIG5vdCAwIGFzIGV4cGVjdGVkIik7Ci0gICAgc3RhdGljX2Fzc2Vy
dChzdGF0aWNfY2FzdDxzaXplX3Q+KFRlc3RFbnVtVHlwZTo6RW51bVZhbHVlMSkgPT0gMSwgIlRl
c3RFbnVtVHlwZTo6RW51bVZhbHVlMSBpcyBub3QgMSBhcyBleHBlY3RlZCIpOwotICAgIHN0YXRp
Y19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihUZXN0RW51bVR5cGU6OkVudW1WYWx1ZTIpID09
IDIsICJUZXN0RW51bVR5cGU6OkVudW1WYWx1ZTIgaXMgbm90IDIgYXMgZXhwZWN0ZWQiKTsKLSAg
ICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oVGVzdEVudW1UeXBlOjpFbnVtVmFs
dWUzKSA9PSAzLCAiVGVzdEVudW1UeXBlOjpFbnVtVmFsdWUzIGlzIG5vdCAzIGFzIGV4cGVjdGVk
Iik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFRlc3RPYmo6OkVudW1U
eXBlOjpFbXB0eVN0cmluZykgPT0gMCwgIlRlc3RPYmo6OkVudW1UeXBlOjpFbXB0eVN0cmluZyBp
cyBub3QgMCBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6
ZV90PihUZXN0T2JqOjpFbnVtVHlwZTo6RW51bVZhbHVlMSkgPT0gMSwgIlRlc3RPYmo6OkVudW1U
eXBlOjpFbnVtVmFsdWUxIGlzIG5vdCAxIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2Vy
dChzdGF0aWNfY2FzdDxzaXplX3Q+KFRlc3RPYmo6OkVudW1UeXBlOjpFbnVtVmFsdWUyKSA9PSAy
LCAiVGVzdE9iajo6RW51bVR5cGU6OkVudW1WYWx1ZTIgaXMgbm90IDIgYXMgZXhwZWN0ZWQiKTsK
KyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oVGVzdE9iajo6RW51bVR5cGU6
OkVudW1WYWx1ZTMpID09IDMsICJUZXN0T2JqOjpFbnVtVHlwZTo6RW51bVZhbHVlMyBpcyBub3Qg
MyBhcyBleHBlY3RlZCIpOwogICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0
aW9uVmFsdWUpIDwgV1RGX0FSUkFZX0xFTkdUSCh2YWx1ZXMpKTsKICAgICByZXR1cm4ganNTdHJp
bmdXaXRoQ2FjaGUoc3RhdGUsIHZhbHVlc1tzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9u
VmFsdWUpXSk7CiB9CiAKLXRlbXBsYXRlPD4gc3RydWN0IEpTVmFsdWVUcmFpdHM8VGVzdEVudW1U
eXBlPiB7Ci0gICAgc3RhdGljIEpTU3RyaW5nKiBhcnJheUpTVmFsdWUoRXhlY1N0YXRlKiBzdGF0
ZSwgSlNET01HbG9iYWxPYmplY3QqLCBUZXN0RW51bVR5cGUgdmFsdWUpIHsgcmV0dXJuIGpzU3Ry
aW5nV2l0aENhY2hlKHN0YXRlLCB2YWx1ZSk7IH0KK3RlbXBsYXRlPD4gc3RydWN0IEpTVmFsdWVU
cmFpdHM8VGVzdE9iajo6RW51bVR5cGU+IHsKKyAgICBzdGF0aWMgSlNTdHJpbmcqIGFycmF5SlNW
YWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCosIFRlc3RPYmo6OkVudW1U
eXBlIHZhbHVlKSB7IHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgdmFsdWUpOyB9CiB9
OwogCi1PcHRpb25hbDxUZXN0RW51bVR5cGU+IHBhcnNlVGVzdEVudW1UeXBlKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVmFsdWUgdmFsdWUpCitPcHRpb25hbDxUZXN0T2JqOjpFbnVtVHlwZT4gcGFyc2VU
ZXN0T2JqRW51bVR5cGUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBh
dXRvIHN0cmluZ1ZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoJnN0YXRlKTsKICAgICBpZiAoc3Ry
aW5nVmFsdWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gVGVzdEVudW1UeXBlOjpFbXB0eVN0
cmluZzsKKyAgICAgICAgcmV0dXJuIFRlc3RPYmo6OkVudW1UeXBlOjpFbXB0eVN0cmluZzsKICAg
ICBpZiAoc3RyaW5nVmFsdWUgPT0gIkVudW1WYWx1ZTEiKQotICAgICAgICByZXR1cm4gVGVzdEVu
dW1UeXBlOjpFbnVtVmFsdWUxOworICAgICAgICByZXR1cm4gVGVzdE9iajo6RW51bVR5cGU6OkVu
dW1WYWx1ZTE7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJFbnVtVmFsdWUyIikKLSAgICAgICAg
cmV0dXJuIFRlc3RFbnVtVHlwZTo6RW51bVZhbHVlMjsKKyAgICAgICAgcmV0dXJuIFRlc3RPYmo6
OkVudW1UeXBlOjpFbnVtVmFsdWUyOwogICAgIGlmIChzdHJpbmdWYWx1ZSA9PSAiRW51bVZhbHVl
MyIpCi0gICAgICAgIHJldHVybiBUZXN0RW51bVR5cGU6OkVudW1WYWx1ZTM7CisgICAgICAgIHJl
dHVybiBUZXN0T2JqOjpFbnVtVHlwZTo6RW51bVZhbHVlMzsKICAgICByZXR1cm4gTnVsbG9wdDsK
IH0KIAotY29uc3QgY2hhciBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzVGVzdEVudW1UeXBlW10g
PSAiXCJcIiwgXCJFbnVtVmFsdWUxXCIsIFwiRW51bVZhbHVlMlwiLCBcIkVudW1WYWx1ZTNcIiI7
Citjb25zdCBjaGFyIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXNUZXN0T2JqRW51bVR5cGVbXSA9
ICJcIlwiLCBcIkVudW1WYWx1ZTFcIiwgXCJFbnVtVmFsdWUyXCIsIFwiRW51bVZhbHVlM1wiIjsK
IAotSlNTdHJpbmcqIGpzU3RyaW5nV2l0aENhY2hlKEV4ZWNTdGF0ZSosIE9wdGlvbmFsKTsKLU9w
dGlvbmFsPE9wdGlvbmFsPiBwYXJzZU9wdGlvbmFsKEV4ZWNTdGF0ZSYsIEpTVmFsdWUpOwotZXh0
ZXJuIGNvbnN0IGNoYXIgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlc09wdGlvbmFsW107CitKU1N0
cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiwgVGVzdE9iajo6T3B0aW9uYWwpOwor
T3B0aW9uYWw8VGVzdE9iajo6T3B0aW9uYWw+IHBhcnNlVGVzdE9iak9wdGlvbmFsKEV4ZWNTdGF0
ZSYsIEpTVmFsdWUpOworZXh0ZXJuIGNvbnN0IGNoYXIgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVl
c1Rlc3RPYmpPcHRpb25hbFtdOwogCi1KU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0
YXRlKiBzdGF0ZSwgT3B0aW9uYWwgZW51bWVyYXRpb25WYWx1ZSkKK0pTU3RyaW5nKiBqc1N0cmlu
Z1dpdGhDYWNoZShFeGVjU3RhdGUqIHN0YXRlLCBUZXN0T2JqOjpPcHRpb25hbCBlbnVtZXJhdGlv
blZhbHVlKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IHZhbHVl
c1tdID0gewogICAgICAgICBlbXB0eVN0cmluZygpLApAQCAtMTM5LDEzMCArMTM5LDIyNiBAQCBK
U1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiBzdGF0ZSwgT3B0aW9uYWwgZW51
bWVyYXRpb25WYWx1ZSkKICAgICAgICAgQVNDSUlMaXRlcmFsKCJPcHRpb25hbFZhbHVlMiIpLAog
ICAgICAgICBBU0NJSUxpdGVyYWwoIk9wdGlvbmFsVmFsdWUzIiksCiAgICAgfTsKLSAgICBzdGF0
aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oT3B0aW9uYWw6OkVtcHR5U3RyaW5nKSA9PSAw
LCAiT3B0aW9uYWw6OkVtcHR5U3RyaW5nIGlzIG5vdCAwIGFzIGV4cGVjdGVkIik7Ci0gICAgc3Rh
dGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KE9wdGlvbmFsOjpPcHRpb25hbFZhbHVlMSkg
PT0gMSwgIk9wdGlvbmFsOjpPcHRpb25hbFZhbHVlMSBpcyBub3QgMSBhcyBleHBlY3RlZCIpOwot
ICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihPcHRpb25hbDo6T3B0aW9uYWxW
YWx1ZTIpID09IDIsICJPcHRpb25hbDo6T3B0aW9uYWxWYWx1ZTIgaXMgbm90IDIgYXMgZXhwZWN0
ZWQiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oT3B0aW9uYWw6Ok9w
dGlvbmFsVmFsdWUzKSA9PSAzLCAiT3B0aW9uYWw6Ok9wdGlvbmFsVmFsdWUzIGlzIG5vdCAzIGFz
IGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFRlc3RP
Ymo6Ok9wdGlvbmFsOjpFbXB0eVN0cmluZykgPT0gMCwgIlRlc3RPYmo6Ok9wdGlvbmFsOjpFbXB0
eVN0cmluZyBpcyBub3QgMCBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGlj
X2Nhc3Q8c2l6ZV90PihUZXN0T2JqOjpPcHRpb25hbDo6T3B0aW9uYWxWYWx1ZTEpID09IDEsICJU
ZXN0T2JqOjpPcHRpb25hbDo6T3B0aW9uYWxWYWx1ZTEgaXMgbm90IDEgYXMgZXhwZWN0ZWQiKTsK
KyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oVGVzdE9iajo6T3B0aW9uYWw6
Ok9wdGlvbmFsVmFsdWUyKSA9PSAyLCAiVGVzdE9iajo6T3B0aW9uYWw6Ok9wdGlvbmFsVmFsdWUy
IGlzIG5vdCAyIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxz
aXplX3Q+KFRlc3RPYmo6Ok9wdGlvbmFsOjpPcHRpb25hbFZhbHVlMykgPT0gMywgIlRlc3RPYmo6
Ok9wdGlvbmFsOjpPcHRpb25hbFZhbHVlMyBpcyBub3QgMyBhcyBleHBlY3RlZCIpOwogICAgIEFT
U0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpIDwgV1RGX0FSUkFZX0xF
TkdUSCh2YWx1ZXMpKTsKICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIHZhbHVl
c1tzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpXSk7CiB9CiAKLXRlbXBsYXRl
PD4gc3RydWN0IEpTVmFsdWVUcmFpdHM8T3B0aW9uYWw+IHsKLSAgICBzdGF0aWMgSlNTdHJpbmcq
IGFycmF5SlNWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCosIE9wdGlv
bmFsIHZhbHVlKSB7IHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgdmFsdWUpOyB9Cit0
ZW1wbGF0ZTw+IHN0cnVjdCBKU1ZhbHVlVHJhaXRzPFRlc3RPYmo6Ok9wdGlvbmFsPiB7CisgICAg
c3RhdGljIEpTU3RyaW5nKiBhcnJheUpTVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9i
YWxPYmplY3QqLCBUZXN0T2JqOjpPcHRpb25hbCB2YWx1ZSkgeyByZXR1cm4ganNTdHJpbmdXaXRo
Q2FjaGUoc3RhdGUsIHZhbHVlKTsgfQogfTsKIAotT3B0aW9uYWw8T3B0aW9uYWw+IHBhcnNlT3B0
aW9uYWwoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKK09wdGlvbmFsPFRlc3RPYmo6
Ok9wdGlvbmFsPiBwYXJzZVRlc3RPYmpPcHRpb25hbChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVl
IHZhbHVlKQogewogICAgIGF1dG8gc3RyaW5nVmFsdWUgPSB2YWx1ZS50b1dURlN0cmluZygmc3Rh
dGUpOwogICAgIGlmIChzdHJpbmdWYWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBPcHRp
b25hbDo6RW1wdHlTdHJpbmc7CisgICAgICAgIHJldHVybiBUZXN0T2JqOjpPcHRpb25hbDo6RW1w
dHlTdHJpbmc7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJPcHRpb25hbFZhbHVlMSIpCi0gICAg
ICAgIHJldHVybiBPcHRpb25hbDo6T3B0aW9uYWxWYWx1ZTE7CisgICAgICAgIHJldHVybiBUZXN0
T2JqOjpPcHRpb25hbDo6T3B0aW9uYWxWYWx1ZTE7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJP
cHRpb25hbFZhbHVlMiIpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDo6T3B0aW9uYWxWYWx1ZTI7
CisgICAgICAgIHJldHVybiBUZXN0T2JqOjpPcHRpb25hbDo6T3B0aW9uYWxWYWx1ZTI7CiAgICAg
aWYgKHN0cmluZ1ZhbHVlID09ICJPcHRpb25hbFZhbHVlMyIpCi0gICAgICAgIHJldHVybiBPcHRp
b25hbDo6T3B0aW9uYWxWYWx1ZTM7CisgICAgICAgIHJldHVybiBUZXN0T2JqOjpPcHRpb25hbDo6
T3B0aW9uYWxWYWx1ZTM7CiAgICAgcmV0dXJuIE51bGxvcHQ7CiB9CiAKLWNvbnN0IGNoYXIgZXhw
ZWN0ZWRFbnVtZXJhdGlvblZhbHVlc09wdGlvbmFsW10gPSAiXCJcIiwgXCJPcHRpb25hbFZhbHVl
MVwiLCBcIk9wdGlvbmFsVmFsdWUyXCIsIFwiT3B0aW9uYWxWYWx1ZTNcIiI7Citjb25zdCBjaGFy
IGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXNUZXN0T2JqT3B0aW9uYWxbXSA9ICJcIlwiLCBcIk9w
dGlvbmFsVmFsdWUxXCIsIFwiT3B0aW9uYWxWYWx1ZTJcIiwgXCJPcHRpb25hbFZhbHVlM1wiIjsK
IAogI2lmIEVOQUJMRShDb25kaXRpb24xKQogCi1KU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUo
RXhlY1N0YXRlKiwgVGVzdEVudW1BKTsKLU9wdGlvbmFsPFRlc3RFbnVtQT4gcGFyc2VUZXN0RW51
bUEoRXhlY1N0YXRlJiwgSlNWYWx1ZSk7Ci1leHRlcm4gY29uc3QgY2hhciBleHBlY3RlZEVudW1l
cmF0aW9uVmFsdWVzVGVzdEVudW1BW107CitKU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhl
Y1N0YXRlKiwgVGVzdE9iajo6RW51bUEpOworT3B0aW9uYWw8VGVzdE9iajo6RW51bUE+IHBhcnNl
VGVzdE9iakVudW1BKEV4ZWNTdGF0ZSYsIEpTVmFsdWUpOworZXh0ZXJuIGNvbnN0IGNoYXIgZXhw
ZWN0ZWRFbnVtZXJhdGlvblZhbHVlc1Rlc3RPYmpFbnVtQVtdOwogCi1KU1N0cmluZyoganNTdHJp
bmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiBzdGF0ZSwgVGVzdEVudW1BIGVudW1lcmF0aW9uVmFsdWUp
CitKU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiBzdGF0ZSwgVGVzdE9iajo6
RW51bUEgZW51bWVyYXRpb25WYWx1ZSkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgU3RyaW5nPiB2YWx1ZXNbXSA9IHsKICAgICAgICAgQVNDSUlMaXRlcmFsKCJBIiksCiAgICAg
fTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oVGVzdEVudW1BOjpBKSA9
PSAwLCAiVGVzdEVudW1BOjpBIGlzIG5vdCAwIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fz
c2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFRlc3RPYmo6OkVudW1BOjpBKSA9PSAwLCAiVGVzdE9i
ajo6RW51bUE6OkEgaXMgbm90IDAgYXMgZXhwZWN0ZWQiKTsKICAgICBBU1NFUlQoc3RhdGljX2Nh
c3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKSA8IFdURl9BUlJBWV9MRU5HVEgodmFsdWVzKSk7
CiAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCB2YWx1ZXNbc3RhdGljX2Nhc3Q8
c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKV0pOwogfQogCi10ZW1wbGF0ZTw+IHN0cnVjdCBKU1Zh
bHVlVHJhaXRzPFRlc3RFbnVtQT4gewotICAgIHN0YXRpYyBKU1N0cmluZyogYXJyYXlKU1ZhbHVl
KEV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdEVudW1BIHZhbHVlKSB7
IHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgdmFsdWUpOyB9Cit0ZW1wbGF0ZTw+IHN0
cnVjdCBKU1ZhbHVlVHJhaXRzPFRlc3RPYmo6OkVudW1BPiB7CisgICAgc3RhdGljIEpTU3RyaW5n
KiBhcnJheUpTVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqLCBUZXN0
T2JqOjpFbnVtQSB2YWx1ZSkgeyByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIHZhbHVl
KTsgfQogfTsKIAotT3B0aW9uYWw8VGVzdEVudW1BPiBwYXJzZVRlc3RFbnVtQShFeGVjU3RhdGUm
IHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQorT3B0aW9uYWw8VGVzdE9iajo6RW51bUE+IHBhcnNlVGVz
dE9iakVudW1BKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0byBz
dHJpbmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAgaWYgKHN0cmluZ1Zh
bHVlID09ICJBIikKLSAgICAgICAgcmV0dXJuIFRlc3RFbnVtQTo6QTsKKyAgICAgICAgcmV0dXJu
IFRlc3RPYmo6OkVudW1BOjpBOwogICAgIHJldHVybiBOdWxsb3B0OwogfQogCi1jb25zdCBjaGFy
IGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXNUZXN0RW51bUFbXSA9ICJcIkFcIiI7Citjb25zdCBj
aGFyIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXNUZXN0T2JqRW51bUFbXSA9ICJcIkFcIiI7CiAK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpICYmIEVOQUJMRShDb25kaXRpb24yKQog
Ci1KU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiwgVGVzdEVudW1CKTsKLU9w
dGlvbmFsPFRlc3RFbnVtQj4gcGFyc2VUZXN0RW51bUIoRXhlY1N0YXRlJiwgSlNWYWx1ZSk7Ci1l
eHRlcm4gY29uc3QgY2hhciBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzVGVzdEVudW1CW107CitK
U1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiwgVGVzdE9iajo6RW51bUIpOwor
T3B0aW9uYWw8VGVzdE9iajo6RW51bUI+IHBhcnNlVGVzdE9iakVudW1CKEV4ZWNTdGF0ZSYsIEpT
VmFsdWUpOworZXh0ZXJuIGNvbnN0IGNoYXIgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlc1Rlc3RP
YmpFbnVtQltdOwogCi1KU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiBzdGF0
ZSwgVGVzdEVudW1CIGVudW1lcmF0aW9uVmFsdWUpCitKU1N0cmluZyoganNTdHJpbmdXaXRoQ2Fj
aGUoRXhlY1N0YXRlKiBzdGF0ZSwgVGVzdE9iajo6RW51bUIgZW51bWVyYXRpb25WYWx1ZSkKIHsK
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiB2YWx1ZXNbXSA9IHsKICAg
ICAgICAgQVNDSUlMaXRlcmFsKCJCIiksCiAgICAgfTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0YXRp
Y19jYXN0PHNpemVfdD4oVGVzdEVudW1COjpCKSA9PSAwLCAiVGVzdEVudW1COjpCIGlzIG5vdCAw
IGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFRl
c3RPYmo6OkVudW1COjpCKSA9PSAwLCAiVGVzdE9iajo6RW51bUI6OkIgaXMgbm90IDAgYXMgZXhw
ZWN0ZWQiKTsKICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVl
KSA8IFdURl9BUlJBWV9MRU5HVEgodmFsdWVzKSk7CiAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENh
Y2hlKHN0YXRlLCB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKV0p
OwogfQogCi10ZW1wbGF0ZTw+IHN0cnVjdCBKU1ZhbHVlVHJhaXRzPFRlc3RFbnVtQj4gewotICAg
IHN0YXRpYyBKU1N0cmluZyogYXJyYXlKU1ZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xv
YmFsT2JqZWN0KiwgVGVzdEVudW1CIHZhbHVlKSB7IHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShz
dGF0ZSwgdmFsdWUpOyB9Cit0ZW1wbGF0ZTw+IHN0cnVjdCBKU1ZhbHVlVHJhaXRzPFRlc3RPYmo6
OkVudW1CPiB7CisgICAgc3RhdGljIEpTU3RyaW5nKiBhcnJheUpTVmFsdWUoRXhlY1N0YXRlKiBz
dGF0ZSwgSlNET01HbG9iYWxPYmplY3QqLCBUZXN0T2JqOjpFbnVtQiB2YWx1ZSkgeyByZXR1cm4g
anNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIHZhbHVlKTsgfQogfTsKIAotT3B0aW9uYWw8VGVzdEVu
dW1CPiBwYXJzZVRlc3RFbnVtQihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQorT3B0
aW9uYWw8VGVzdE9iajo6RW51bUI+IHBhcnNlVGVzdE9iakVudW1CKEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0byBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3Ry
aW5nKCZzdGF0ZSk7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJCIikKLSAgICAgICAgcmV0dXJu
IFRlc3RFbnVtQjo6QjsKKyAgICAgICAgcmV0dXJuIFRlc3RPYmo6OkVudW1COjpCOwogICAgIHJl
dHVybiBOdWxsb3B0OwogfQogCi1jb25zdCBjaGFyIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXNU
ZXN0RW51bUJbXSA9ICJcIkJcIiI7Citjb25zdCBjaGFyIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1
ZXNUZXN0T2JqRW51bUJbXSA9ICJcIkJcIiI7CiAKICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRp
dGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQogCi1KU1N0cmluZyoganNTdHJpbmdXaXRoQ2Fj
aGUoRXhlY1N0YXRlKiwgVGVzdEVudW1DKTsKLU9wdGlvbmFsPFRlc3RFbnVtQz4gcGFyc2VUZXN0
RW51bUMoRXhlY1N0YXRlJiwgSlNWYWx1ZSk7Ci1leHRlcm4gY29uc3QgY2hhciBleHBlY3RlZEVu
dW1lcmF0aW9uVmFsdWVzVGVzdEVudW1DW107CitKU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUo
RXhlY1N0YXRlKiwgVGVzdE9iajo6RW51bUMpOworT3B0aW9uYWw8VGVzdE9iajo6RW51bUM+IHBh
cnNlVGVzdE9iakVudW1DKEV4ZWNTdGF0ZSYsIEpTVmFsdWUpOworZXh0ZXJuIGNvbnN0IGNoYXIg
ZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlc1Rlc3RPYmpFbnVtQ1tdOwogCi1KU1N0cmluZyoganNT
dHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiBzdGF0ZSwgVGVzdEVudW1DIGVudW1lcmF0aW9uVmFs
dWUpCitKU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiBzdGF0ZSwgVGVzdE9i
ajo6RW51bUMgZW51bWVyYXRpb25WYWx1ZSkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgU3RyaW5nPiB2YWx1ZXNbXSA9IHsKICAgICAgICAgQVNDSUlMaXRlcmFsKCJDIiksCiAg
ICAgfTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oVGVzdEVudW1DOjpD
KSA9PSAwLCAiVGVzdEVudW1DOjpDIGlzIG5vdCAwIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGlj
X2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFRlc3RPYmo6OkVudW1DOjpDKSA9PSAwLCAiVGVz
dE9iajo6RW51bUM6OkMgaXMgbm90IDAgYXMgZXhwZWN0ZWQiKTsKICAgICBBU1NFUlQoc3RhdGlj
X2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKSA8IFdURl9BUlJBWV9MRU5HVEgodmFsdWVz
KSk7CiAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCB2YWx1ZXNbc3RhdGljX2Nh
c3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKV0pOwogfQogCi10ZW1wbGF0ZTw+IHN0cnVjdCBK
U1ZhbHVlVHJhaXRzPFRlc3RFbnVtQz4gewotICAgIHN0YXRpYyBKU1N0cmluZyogYXJyYXlKU1Zh
bHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdEVudW1DIHZhbHVl
KSB7IHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgdmFsdWUpOyB9Cit0ZW1wbGF0ZTw+
IHN0cnVjdCBKU1ZhbHVlVHJhaXRzPFRlc3RPYmo6OkVudW1DPiB7CisgICAgc3RhdGljIEpTU3Ry
aW5nKiBhcnJheUpTVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqLCBU
ZXN0T2JqOjpFbnVtQyB2YWx1ZSkgeyByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIHZh
bHVlKTsgfQogfTsKIAotT3B0aW9uYWw8VGVzdEVudW1DPiBwYXJzZVRlc3RFbnVtQyhFeGVjU3Rh
dGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQorT3B0aW9uYWw8VGVzdE9iajo6RW51bUM+IHBhcnNl
VGVzdE9iakVudW1DKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0
byBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAgaWYgKHN0cmlu
Z1ZhbHVlID09ICJDIikKLSAgICAgICAgcmV0dXJuIFRlc3RFbnVtQzo6QzsKKyAgICAgICAgcmV0
dXJuIFRlc3RPYmo6OkVudW1DOjpDOwogICAgIHJldHVybiBOdWxsb3B0OwogfQogCi1jb25zdCBj
aGFyIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXNUZXN0RW51bUNbXSA9ICJcIkNcIiI7Citjb25z
dCBjaGFyIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXNUZXN0T2JqRW51bUNbXSA9ICJcIkNcIiI7
CiAKICNlbmRpZgogCitKU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiwgVGVz
dE9iajo6S2luZCk7CitPcHRpb25hbDxUZXN0T2JqOjpLaW5kPiBwYXJzZVRlc3RPYmpLaW5kKEV4
ZWNTdGF0ZSYsIEpTVmFsdWUpOworZXh0ZXJuIGNvbnN0IGNoYXIgZXhwZWN0ZWRFbnVtZXJhdGlv
blZhbHVlc1Rlc3RPYmpLaW5kW107CisKK0pTU3RyaW5nKiBqc1N0cmluZ1dpdGhDYWNoZShFeGVj
U3RhdGUqIHN0YXRlLCBUZXN0T2JqOjpLaW5kIGVudW1lcmF0aW9uVmFsdWUpCit7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gdmFsdWVzW10gPSB7CisgICAgICAgIEFT
Q0lJTGl0ZXJhbCgicXVpY2siKSwKKyAgICAgICAgQVNDSUlMaXRlcmFsKCJkZWFkIiksCisgICAg
fTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oVGVzdE9iajo6S2luZDo6
UXVpY2spID09IDAsICJUZXN0T2JqOjpLaW5kOjpRdWljayBpcyBub3QgMCBhcyBleHBlY3RlZCIp
OworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihUZXN0T2JqOjpLaW5kOjpE
ZWFkKSA9PSAxLCAiVGVzdE9iajo6S2luZDo6RGVhZCBpcyBub3QgMSBhcyBleHBlY3RlZCIpOwor
ICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpIDwgV1RGX0FS
UkFZX0xFTkdUSCh2YWx1ZXMpKTsKKyAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUs
IHZhbHVlc1tzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpXSk7Cit9CisKK3Rl
bXBsYXRlPD4gc3RydWN0IEpTVmFsdWVUcmFpdHM8VGVzdE9iajo6S2luZD4geworICAgIHN0YXRp
YyBKU1N0cmluZyogYXJyYXlKU1ZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiwgVGVzdE9iajo6S2luZCB2YWx1ZSkgeyByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoc3Rh
dGUsIHZhbHVlKTsgfQorfTsKKworT3B0aW9uYWw8VGVzdE9iajo6S2luZD4gcGFyc2VUZXN0T2Jq
S2luZChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGF1dG8gc3RyaW5n
VmFsdWUgPSB2YWx1ZS50b1dURlN0cmluZygmc3RhdGUpOworICAgIGlmIChzdHJpbmdWYWx1ZSA9
PSAicXVpY2siKQorICAgICAgICByZXR1cm4gVGVzdE9iajo6S2luZDo6UXVpY2s7CisgICAgaWYg
KHN0cmluZ1ZhbHVlID09ICJkZWFkIikKKyAgICAgICAgcmV0dXJuIFRlc3RPYmo6OktpbmQ6OkRl
YWQ7CisgICAgcmV0dXJuIE51bGxvcHQ7Cit9CisKK2NvbnN0IGNoYXIgZXhwZWN0ZWRFbnVtZXJh
dGlvblZhbHVlc1Rlc3RPYmpLaW5kW10gPSAiXCJxdWlja1wiLCBcImRlYWRcIiI7CisKK0pTU3Ry
aW5nKiBqc1N0cmluZ1dpdGhDYWNoZShFeGVjU3RhdGUqLCBUZXN0T2JqOjpTaXplKTsKK09wdGlv
bmFsPFRlc3RPYmo6OlNpemU+IHBhcnNlVGVzdE9ialNpemUoRXhlY1N0YXRlJiwgSlNWYWx1ZSk7
CitleHRlcm4gY29uc3QgY2hhciBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzVGVzdE9ialNpemVb
XTsKKworSlNTdHJpbmcqIGpzU3RyaW5nV2l0aENhY2hlKEV4ZWNTdGF0ZSogc3RhdGUsIFRlc3RP
Ymo6OlNpemUgZW51bWVyYXRpb25WYWx1ZSkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgU3RyaW5nPiB2YWx1ZXNbXSA9IHsKKyAgICAgICAgQVNDSUlMaXRlcmFsKCJzbWFsbCIp
LAorICAgICAgICBBU0NJSUxpdGVyYWwoIm11Y2gtbXVjaC1sYXJnZXIiKSwKKyAgICB9OworICAg
IHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihUZXN0T2JqOjpTaXplOjpTbWFsbCkg
PT0gMCwgIlRlc3RPYmo6OlNpemU6OlNtYWxsIGlzIG5vdCAwIGFzIGV4cGVjdGVkIik7CisgICAg
c3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFRlc3RPYmo6OlNpemU6Ok11Y2hNdWNo
TGFyZ2VyKSA9PSAxLCAiVGVzdE9iajo6U2l6ZTo6TXVjaE11Y2hMYXJnZXIgaXMgbm90IDEgYXMg
ZXhwZWN0ZWQiKTsKKyAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZh
bHVlKSA8IFdURl9BUlJBWV9MRU5HVEgodmFsdWVzKSk7CisgICAgcmV0dXJuIGpzU3RyaW5nV2l0
aENhY2hlKHN0YXRlLCB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVl
KV0pOworfQorCit0ZW1wbGF0ZTw+IHN0cnVjdCBKU1ZhbHVlVHJhaXRzPFRlc3RPYmo6OlNpemU+
IHsKKyAgICBzdGF0aWMgSlNTdHJpbmcqIGFycmF5SlNWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBK
U0RPTUdsb2JhbE9iamVjdCosIFRlc3RPYmo6OlNpemUgdmFsdWUpIHsgcmV0dXJuIGpzU3RyaW5n
V2l0aENhY2hlKHN0YXRlLCB2YWx1ZSk7IH0KK307CisKK09wdGlvbmFsPFRlc3RPYmo6OlNpemU+
IHBhcnNlVGVzdE9ialNpemUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAg
ICBhdXRvIHN0cmluZ1ZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoJnN0YXRlKTsKKyAgICBpZiAo
c3RyaW5nVmFsdWUgPT0gInNtYWxsIikKKyAgICAgICAgcmV0dXJuIFRlc3RPYmo6OlNpemU6OlNt
YWxsOworICAgIGlmIChzdHJpbmdWYWx1ZSA9PSAibXVjaC1tdWNoLWxhcmdlciIpCisgICAgICAg
IHJldHVybiBUZXN0T2JqOjpTaXplOjpNdWNoTXVjaExhcmdlcjsKKyAgICByZXR1cm4gTnVsbG9w
dDsKK30KKworY29uc3QgY2hhciBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzVGVzdE9ialNpemVb
XSA9ICJcInNtYWxsXCIsIFwibXVjaC1tdWNoLWxhcmdlclwiIjsKKworSlNTdHJpbmcqIGpzU3Ry
aW5nV2l0aENhY2hlKEV4ZWNTdGF0ZSosIFRlc3RPYmo6OkNvbmZpZGVuY2UpOworT3B0aW9uYWw8
VGVzdE9iajo6Q29uZmlkZW5jZT4gcGFyc2VUZXN0T2JqQ29uZmlkZW5jZShFeGVjU3RhdGUmLCBK
U1ZhbHVlKTsKK2V4dGVybiBjb25zdCBjaGFyIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXNUZXN0
T2JqQ29uZmlkZW5jZVtdOworCitKU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRl
KiBzdGF0ZSwgVGVzdE9iajo6Q29uZmlkZW5jZSBlbnVtZXJhdGlvblZhbHVlKQoreworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IHZhbHVlc1tdID0geworICAgICAgICBB
U0NJSUxpdGVyYWwoImhpZ2giKSwKKyAgICAgICAgQVNDSUlMaXRlcmFsKCJraW5kYS1sb3ciKSwK
KyAgICB9OworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihUZXN0T2JqOjpD
b25maWRlbmNlOjpIaWdoKSA9PSAwLCAiVGVzdE9iajo6Q29uZmlkZW5jZTo6SGlnaCBpcyBub3Qg
MCBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihU
ZXN0T2JqOjpDb25maWRlbmNlOjpLaW5kYUxvdykgPT0gMSwgIlRlc3RPYmo6OkNvbmZpZGVuY2U6
OktpbmRhTG93IGlzIG5vdCAxIGFzIGV4cGVjdGVkIik7CisgICAgQVNTRVJUKHN0YXRpY19jYXN0
PHNpemVfdD4oZW51bWVyYXRpb25WYWx1ZSkgPCBXVEZfQVJSQVlfTEVOR1RIKHZhbHVlcykpOwor
ICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgdmFsdWVzW3N0YXRpY19jYXN0PHNp
emVfdD4oZW51bWVyYXRpb25WYWx1ZSldKTsKK30KKwordGVtcGxhdGU8PiBzdHJ1Y3QgSlNWYWx1
ZVRyYWl0czxUZXN0T2JqOjpDb25maWRlbmNlPiB7CisgICAgc3RhdGljIEpTU3RyaW5nKiBhcnJh
eUpTVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqLCBUZXN0T2JqOjpD
b25maWRlbmNlIHZhbHVlKSB7IHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgdmFsdWUp
OyB9Cit9OworCitPcHRpb25hbDxUZXN0T2JqOjpDb25maWRlbmNlPiBwYXJzZVRlc3RPYmpDb25m
aWRlbmNlKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgYXV0byBzdHJp
bmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CisgICAgaWYgKHN0cmluZ1ZhbHVl
ID09ICJoaWdoIikKKyAgICAgICAgcmV0dXJuIFRlc3RPYmo6OkNvbmZpZGVuY2U6OkhpZ2g7Cisg
ICAgaWYgKHN0cmluZ1ZhbHVlID09ICJraW5kYS1sb3ciKQorICAgICAgICByZXR1cm4gVGVzdE9i
ajo6Q29uZmlkZW5jZTo6S2luZGFMb3c7CisgICAgcmV0dXJuIE51bGxvcHQ7Cit9CisKK2NvbnN0
IGNoYXIgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlc1Rlc3RPYmpDb25maWRlbmNlW10gPSAiXCJo
aWdoXCIsIFwia2luZGEtbG93XCIiOworCiAvLyBGdW5jdGlvbnMKIAogI2lmIEVOQUJMRShURVNU
X0ZFQVRVUkUpCkBAIC0yMzk4LDcgKzI0OTQsNyBAQCBib29sIHNldEpTVGVzdE9iakVudW1BdHRy
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVgog
ICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJl
bnVtQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwotICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBwYXJzZVRlc3RFbnVtVHlwZSgqc3RhdGUsIHZhbHVl
KTsKKyAgICBhdXRvIG5hdGl2ZVZhbHVlID0gcGFyc2VUZXN0T2JqRW51bVR5cGUoKnN0YXRlLCB2
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkKQEAgLTM1MzAs
NyArMzYyNiw3IEBAIGJvb2wgc2V0SlNUZXN0T2JqQXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5
cGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUKICAgICAgICAgcmV0dXJuIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYXR0cmlidXRlV2l0aFJlc2VydmVk
RW51bVR5cGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKLSAgICBhdXRvIG5hdGl2ZVZhbHVlID0gcGFyc2VPcHRpb25hbCgqc3RhdGUsIHZhbHVlKTsK
KyAgICBhdXRvIG5hdGl2ZVZhbHVlID0gcGFyc2VUZXN0T2JqT3B0aW9uYWwoKnN0YXRlLCB2YWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkKQEAgLTM5NDQsMTIg
KzQwNDAsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhFbnVtQXJnKEV4ZWNTdGEKICAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0
YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gZW51
bUFyZ1ZhbHVlID0gc3RhdGUtPmFyZ3VtZW50KDApOwotICAgIFRlc3RFbnVtVHlwZSBlbnVtQXJn
OwotICAgIGF1dG8gb3B0aW9uYWxWYWx1ZSA9IHBhcnNlVGVzdEVudW1UeXBlKCpzdGF0ZSwgZW51
bUFyZ1ZhbHVlKTsKKyAgICBUZXN0T2JqOjpFbnVtVHlwZSBlbnVtQXJnOworICAgIGF1dG8gb3B0
aW9uYWxWYWx1ZSA9IHBhcnNlVGVzdE9iakVudW1UeXBlKCpzdGF0ZSwgZW51bUFyZ1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpZiAoVU5MSUtFTFkoIW9wdGlv
bmFsVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJvcigq
c3RhdGUsIDAsICJlbnVtQXJnIiwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aEVudW1BcmciLCBleHBl
Y3RlZEVudW1lcmF0aW9uVmFsdWVzVGVzdEVudW1UeXBlKTsKKyAgICAgICAgcmV0dXJuIHRocm93
QXJndW1lbnRNdXN0QmVFbnVtRXJyb3IoKnN0YXRlLCAwLCAiZW51bUFyZyIsICJUZXN0T2JqIiwg
Im1ldGhvZFdpdGhFbnVtQXJnIiwgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlc1Rlc3RPYmpFbnVt
VHlwZSk7CiAgICAgZW51bUFyZyA9IG9wdGlvbmFsVmFsdWUudmFsdWUoKTsKICAgICBpbXBsLm1l
dGhvZFdpdGhFbnVtQXJnKGVudW1BcmcpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CkBAIC0zOTY0LDE1ICs0MDYwLDE1IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxFbnVt
QXJnCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6
OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBh
dXRvIGVudW1BcmdWYWx1ZSA9IHN0YXRlLT5hcmd1bWVudCgwKTsKLSAgICBUZXN0RW51bVR5cGUg
ZW51bUFyZzsKKyAgICBUZXN0T2JqOjpFbnVtVHlwZSBlbnVtQXJnOwogICAgIGlmIChlbnVtQXJn
VmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICBlbnVtQXJnID0gVGVzdEVudW1UeXBlOjpF
bnVtVmFsdWUxOworICAgICAgICBlbnVtQXJnID0gVGVzdE9iajo6RW51bVR5cGU6OkVudW1WYWx1
ZTE7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgYXV0byBvcHRpb25hbFZhbHVlID0gcGFyc2VUZXN0
RW51bVR5cGUoKnN0YXRlLCBlbnVtQXJnVmFsdWUpOworICAgICAgICBhdXRvIG9wdGlvbmFsVmFs
dWUgPSBwYXJzZVRlc3RPYmpFbnVtVHlwZSgqc3RhdGUsIGVudW1BcmdWYWx1ZSk7CiAgICAgICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCFv
cHRpb25hbFZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRW51
bUVycm9yKCpzdGF0ZSwgMCwgImVudW1BcmciLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoT3B0aW9u
YWxFbnVtQXJnQW5kRGVmYXVsdFZhbHVlIiwgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlc1Rlc3RF
bnVtVHlwZSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJv
cigqc3RhdGUsIDAsICJlbnVtQXJnIiwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE9wdGlvbmFsRW51
bUFyZ0FuZERlZmF1bHRWYWx1ZSIsIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXNUZXN0T2JqRW51
bVR5cGUpOwogICAgICAgICBlbnVtQXJnID0gb3B0aW9uYWxWYWx1ZS52YWx1ZSgpOwogICAgIH0K
ICAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdBbmREZWZhdWx0VmFsdWUoZW51bUFy
Zyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dE9iai5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5p
ZGwKaW5kZXggZmUxM2NlNzllN2QwZjUzZGMyOWQ0NDcwZmUzNTU2ZjU3MDU2YTNhMC4uNzc0M2Vl
ZDM1ZjQ1ZTE3YTcwYjBhOTAwNDRiYWQ1YmExMjc2OTA4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbApAQCAtMzksNiArMzksMTAgQEAg
ZW51bSBfb3B0aW9uYWwgeyAiIiwgIk9wdGlvbmFsVmFsdWUxIiwgIk9wdGlvbmFsVmFsdWUyIiwg
Ik9wdGlvbmFsVmFsdWUzIiB9OwogW0NvbmRpdGlvbmFsPUNvbmRpdGlvbjEmQ29uZGl0aW9uMl0g
ZW51bSBUZXN0RW51bUIgeyAiQiIgfTsKIFtDb25kaXRpb25hbD1Db25kaXRpb24xfENvbmRpdGlv
bjJdIGVudW0gVGVzdEVudW1DIHsgIkMiIH07CiAKK2VudW0gVGVzdE9iaktpbmQgeyAicXVpY2si
LCAiZGVhZCIgfTsKK2VudW0gT2JqU2l6ZSB7ICJzbWFsbCIsICJtdWNoLW11Y2gtbGFyZ2VyIiB9
OworZW51bSBUZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwgImtpbmRhLWxvdyIgfTsKKwogWwogICAg
IENvbnN0cnVjdG9yKFRlc3RDYWxsYmFjayB0ZXN0Q2FsbGJhY2ssIFRlc3RDYWxsYmFja0Z1bmN0
aW9uIHRlc3RDYWxsYmFja0Z1bmN0aW9uKSwKICAgICBJbnRlcmZhY2VOYW1lPVRlc3RPYmplY3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXkuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleS5jcHAKaW5kZXggZGY2N2MyOTJmNDU2MTQxYmE5YzAw
MWE2YTYyZTA5M2U3ZDAwNDEyOS4uZDgyN2Y3Y2NlMjQ4MDJlYjFjNTlmYWRiZGNjZDFhYmFlOGVj
NzU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DcnlwdG9LZXk6OkNyeXB0b0tleShDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyIGFsZ29yaXRobSwgQ3J5cHRvS2V5VHlwZSB0eXBlLCBib29sIGV4dHJh
Y3RhYmxlLCBDcnlwdG9LZXlVc2FnZSB1c2FnZXMpCitDcnlwdG9LZXk6OkNyeXB0b0tleShDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobSwgVHlwZSB0eXBlLCBib29sIGV4dHJhY3Rh
YmxlLCBDcnlwdG9LZXlVc2FnZSB1c2FnZXMpCiAgICAgOiBtX2FsZ29yaXRobShhbGdvcml0aG0p
CiAgICAgLCBtX3R5cGUodHlwZSkKICAgICAsIG1fZXh0cmFjdGFibGUoZXh0cmFjdGFibGUpCkBA
IC01MywyNiArNTMsMjYgQEAgdm9pZCBDcnlwdG9LZXk6OmJ1aWxkQWxnb3JpdGhtRGVzY3JpcHRp
b24oQ3J5cHRvQWxnb3JpdGhtRGVzY3JpcHRpb25CdWlsZGVyJiBidWkKICAgICAvLyBTdWJjbGFz
c2VzIHdpbGwgYWRkIG90aGVyIGtleXMuCiB9CiAKLVZlY3RvcjxLZXlVc2FnZT4gQ3J5cHRvS2V5
Ojp1c2FnZXMoKSBjb25zdAorYXV0byBDcnlwdG9LZXk6OnVzYWdlcygpIGNvbnN0IC0+IFZlY3Rv
cjxVc2FnZT4KIHsKICAgICAvLyBUaGUgcmVzdWx0IGlzIG9yZGVyZWQgYWxwaGFiZXRpY2FsbHku
Ci0gICAgVmVjdG9yPEtleVVzYWdlPiByZXN1bHQ7CisgICAgVmVjdG9yPFVzYWdlPiByZXN1bHQ7
CiAgICAgaWYgKG1fdXNhZ2VzICYgQ3J5cHRvS2V5VXNhZ2VEZWNyeXB0KQotICAgICAgICByZXN1
bHQuYXBwZW5kKEtleVVzYWdlOjpEZWNyeXB0KTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChVc2Fn
ZTo6RGVjcnlwdCk7CiAgICAgaWYgKG1fdXNhZ2VzICYgQ3J5cHRvS2V5VXNhZ2VEZXJpdmVCaXRz
KQotICAgICAgICByZXN1bHQuYXBwZW5kKEtleVVzYWdlOjpEZXJpdmVCaXRzKTsKKyAgICAgICAg
cmVzdWx0LmFwcGVuZChVc2FnZTo6RGVyaXZlQml0cyk7CiAgICAgaWYgKG1fdXNhZ2VzICYgQ3J5
cHRvS2V5VXNhZ2VEZXJpdmVLZXkpCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoS2V5VXNhZ2U6OkRl
cml2ZUtleSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoVXNhZ2U6OkRlcml2ZUtleSk7CiAgICAg
aWYgKG1fdXNhZ2VzICYgQ3J5cHRvS2V5VXNhZ2VFbmNyeXB0KQotICAgICAgICByZXN1bHQuYXBw
ZW5kKEtleVVzYWdlOjpFbmNyeXB0KTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChVc2FnZTo6RW5j
cnlwdCk7CiAgICAgaWYgKG1fdXNhZ2VzICYgQ3J5cHRvS2V5VXNhZ2VTaWduKQotICAgICAgICBy
ZXN1bHQuYXBwZW5kKEtleVVzYWdlOjpTaWduKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChVc2Fn
ZTo6U2lnbik7CiAgICAgaWYgKG1fdXNhZ2VzICYgQ3J5cHRvS2V5VXNhZ2VVbndyYXBLZXkpCi0g
ICAgICAgIHJlc3VsdC5hcHBlbmQoS2V5VXNhZ2U6OlVud3JhcEtleSk7CisgICAgICAgIHJlc3Vs
dC5hcHBlbmQoVXNhZ2U6OlVud3JhcEtleSk7CiAgICAgaWYgKG1fdXNhZ2VzICYgQ3J5cHRvS2V5
VXNhZ2VWZXJpZnkpCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoS2V5VXNhZ2U6OlZlcmlmeSk7Cisg
ICAgICAgIHJlc3VsdC5hcHBlbmQoVXNhZ2U6OlZlcmlmeSk7CiAgICAgaWYgKG1fdXNhZ2VzICYg
Q3J5cHRvS2V5VXNhZ2VXcmFwS2V5KQotICAgICAgICByZXN1bHQuYXBwZW5kKEtleVVzYWdlOjpX
cmFwS2V5KTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChVc2FnZTo6V3JhcEtleSk7CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIApAQCAtODQsNiArODQsNyBAQCBWZWN0b3I8dWludDhfdD4gQ3J5cHRv
S2V5OjpyYW5kb21EYXRhKHNpemVfdCBzaXplKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAjZW5k
aWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNVQlRMRV9D
UllQVE8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5LmggYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5LmgKaW5kZXggMDdmYjdkOWQ0NjdmYzhjYTZk
ODg5Njk1N2VlNDRjNjQyMmNlZmNlYS4uZWI2YjcwMTZkNzUxYTk3MjFhMDlhYjVhMGQzMzMyOGIy
ZGYxZGRkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXkuaApAQCAtNDcsMjEgKzQ3LDIzIEBA
IGVudW0gY2xhc3MgQ3J5cHRvS2V5Q2xhc3MgewogICAgIFJTQQogfTsKIAotZW51bSBjbGFzcyBL
ZXlVc2FnZSB7IEVuY3J5cHQsIERlY3J5cHQsIFNpZ24sIFZlcmlmeSwgRGVyaXZlS2V5LCBEZXJp
dmVCaXRzLCBXcmFwS2V5LCBVbndyYXBLZXkgfTsKLQotdXNpbmcgS2V5VHlwZSA9IENyeXB0b0tl
eVR5cGU7Ci0KIGNsYXNzIENyeXB0b0tleSA6IHB1YmxpYyBSZWZDb3VudGVkPENyeXB0b0tleT4g
ewogcHVibGljOgotICAgIENyeXB0b0tleShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBDcnlw
dG9LZXlUeXBlLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSk7CisgICAgdXNpbmcg
VHlwZSA9IENyeXB0b0tleVR5cGU7CisgICAgQ3J5cHRvS2V5KENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXIsIFR5cGUsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlKTsKICAgICB2aXJ0
dWFsIH5DcnlwdG9LZXkoKTsKIAogICAgIHZpcnR1YWwgQ3J5cHRvS2V5Q2xhc3Mga2V5Q2xhc3Mo
KSBjb25zdCA9IDA7CiAKLSAgICBDcnlwdG9LZXlUeXBlIHR5cGUoKSBjb25zdDsKKyAgICBUeXBl
IHR5cGUoKSBjb25zdDsKICAgICBib29sIGV4dHJhY3RhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9l
eHRyYWN0YWJsZTsgfQogICAgIHZpcnR1YWwgdm9pZCBidWlsZEFsZ29yaXRobURlc2NyaXB0aW9u
KENyeXB0b0FsZ29yaXRobURlc2NyaXB0aW9uQnVpbGRlciYpIGNvbnN0OwotICAgIFZlY3RvcjxL
ZXlVc2FnZT4gdXNhZ2VzKCkgY29uc3Q7CisKKyAgICAvLyBGSVhNRTogQ29uZnVzaW5nIHRvIGhh
dmUgQ3J5cHRvS2V5VXNhZ2UgYW5kIENyeXB0b0tleTo6VXNhZ2UgbmFtZWQgYWxtb3N0IHRoZSBz
YW1lLCBidXQgYmUgc2xpZ2h0bHkgZGlmZmVyZW50LgorICAgIC8vIENyeXB0b0tleVVzYWdlIHZh
bHVlcyBhcmUgYml0IG1hc2tzIHNvIHRoZXkgY2FuIGJlIGNvbWJpbmVkIHdpdGggIm9yIiwgd2hp
bGUgdGhpcyBpcyBhIG5vcm1hbCBlbnVtIHRoYXQgbXVzdAorICAgIC8vIG1hdGNoIHdoYXQgaXMg
ZGVmaW5lZCBpbiB0aGUgSURMLiBNYXliZSB3ZSBjYW4gcmVuYW1lIENyeXB0b0tleVVzYWdlIHRv
IENyeXB0b0tleTo6VXNhZ2VzQml0bWFwPworICAgIGVudW0gY2xhc3MgVXNhZ2UgeyBFbmNyeXB0
LCBEZWNyeXB0LCBTaWduLCBWZXJpZnksIERlcml2ZUtleSwgRGVyaXZlQml0cywgV3JhcEtleSwg
VW53cmFwS2V5IH07CisgICAgVmVjdG9yPFVzYWdlPiB1c2FnZXMoKSBjb25zdDsKIAogICAgIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIgYWxnb3JpdGhtSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1fYWxnb3JpdGhtOyB9CiAgICAgQ3J5cHRvS2V5VXNhZ2UgdXNhZ2VzQml0bWFwKCkgY29u
c3QgeyByZXR1cm4gbV91c2FnZXM7IH0KQEAgLTczLDEyICs3NSwxMiBAQCBwdWJsaWM6CiAKIHBy
aXZhdGU6CiAgICAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBtX2FsZ29yaXRobTsKLSAgICBD
cnlwdG9LZXlUeXBlIG1fdHlwZTsKKyAgICBUeXBlIG1fdHlwZTsKICAgICBib29sIG1fZXh0cmFj
dGFibGU7CiAgICAgQ3J5cHRvS2V5VXNhZ2UgbV91c2FnZXM7CiB9OwogCi1pbmxpbmUgQ3J5cHRv
S2V5VHlwZSBDcnlwdG9LZXk6OnR5cGUoKSBjb25zdAoraW5saW5lIGF1dG8gQ3J5cHRvS2V5Ojp0
eXBlKCkgY29uc3QgLT4gVHlwZQogewogICAgIHJldHVybiBtX3R5cGU7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0Zv
bnRGYWNlLmNwcAppbmRleCAxNzNhNTgyYjE2OTRmM2QyYzBhYzgxMTY4OGUyNDIwOTVjYmJjYTA3
Li5jYThmOTg1NWVlMzYzOThiODk0OGI3MzgyOWM0MzBlYmQ0OWU0OTVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9G
b250RmFjZS5jcHAKQEAgLTMxNywyMiArMzE3LDIyIEBAIFN0cmluZyBGb250RmFjZTo6ZmVhdHVy
ZVNldHRpbmdzKCkgY29uc3QKICAgICByZXR1cm4gbGlzdC0+Y3NzVGV4dCgpOwogfQogCi1Gb250
RmFjZUxvYWRTdGF0dXMgRm9udEZhY2U6OnN0YXR1cygpIGNvbnN0CithdXRvIEZvbnRGYWNlOjpz
dGF0dXMoKSBjb25zdCAtPiBMb2FkU3RhdHVzCiB7CiAgICAgc3dpdGNoIChtX2JhY2tpbmctPnN0
YXR1cygpKSB7CiAgICAgY2FzZSBDU1NGb250RmFjZTo6U3RhdHVzOjpQZW5kaW5nOgotICAgICAg
ICByZXR1cm4gRm9udEZhY2VMb2FkU3RhdHVzOjpVbmxvYWRlZDsKKyAgICAgICAgcmV0dXJuIExv
YWRTdGF0dXM6OlVubG9hZGVkOwogICAgIGNhc2UgQ1NTRm9udEZhY2U6OlN0YXR1czo6TG9hZGlu
ZzoKLSAgICAgICAgcmV0dXJuIEZvbnRGYWNlTG9hZFN0YXR1czo6TG9hZGluZzsKKyAgICAgICAg
cmV0dXJuIExvYWRTdGF0dXM6OkxvYWRpbmc7CiAgICAgY2FzZSBDU1NGb250RmFjZTo6U3RhdHVz
OjpUaW1lZE91dDoKLSAgICAgICAgcmV0dXJuIEZvbnRGYWNlTG9hZFN0YXR1czo6RXJyb3I7Cisg
ICAgICAgIHJldHVybiBMb2FkU3RhdHVzOjpFcnJvcjsKICAgICBjYXNlIENTU0ZvbnRGYWNlOjpT
dGF0dXM6OlN1Y2Nlc3M6Ci0gICAgICAgIHJldHVybiBGb250RmFjZUxvYWRTdGF0dXM6OkxvYWRl
ZDsKKyAgICAgICAgcmV0dXJuIExvYWRTdGF0dXM6OkxvYWRlZDsKICAgICBjYXNlIENTU0ZvbnRG
YWNlOjpTdGF0dXM6OkZhaWx1cmU6Ci0gICAgICAgIHJldHVybiBGb250RmFjZUxvYWRTdGF0dXM6
OkVycm9yOworICAgICAgICByZXR1cm4gTG9hZFN0YXR1czo6RXJyb3I7CiAgICAgfQogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBGb250RmFjZUxvYWRTdGF0dXM6OkVycm9y
OworICAgIHJldHVybiBMb2FkU3RhdHVzOjpFcnJvcjsKIH0KIAogdm9pZCBGb250RmFjZTo6Zm9u
dFN0YXRlQ2hhbmdlZChDU1NGb250RmFjZSYgZmFjZSwgQ1NTRm9udEZhY2U6OlN0YXR1cywgQ1NT
Rm9udEZhY2U6OlN0YXR1cyBuZXdTdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9Gb250RmFjZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmgKaW5kZXggMmIyYTk0
YmJjOTljMjIwNTkwYzhlNzVmZWE2ZDA3Yjk0OGYzMDAwMC4uZjRiNDM3YTViNzRmM2ZhOGM3NmUx
MDdiMDBkYmI2NzkzZWE2ZmQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRG
YWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmgKQEAgLTQyLDggKzQyLDYg
QEAgY2xhc3MgQ1NTRm9udEZhY2U7CiBjbGFzcyBDU1NWYWx1ZTsKIGNsYXNzIERpY3Rpb25hcnk7
CiAKLWVudW0gY2xhc3MgRm9udEZhY2VMb2FkU3RhdHVzIHsgVW5sb2FkZWQsIExvYWRpbmcsIExv
YWRlZCwgRXJyb3IgfTsKLQogY2xhc3MgRm9udEZhY2UgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRl
ZDxGb250RmFjZT4sIHB1YmxpYyBDU1NGb250RmFjZTo6Q2xpZW50IHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmUHRyPEZvbnRGYWNlPiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUmLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJiBmYW1pbHksIEpTQzo6SlNWYWx1ZSBzb3VyY2Us
IGNvbnN0IERpY3Rpb25hcnkmIGRlc2NyaXB0b3JzLCBFeGNlcHRpb25Db2RlJik7CkBAIC02NSw3
ICs2Myw5IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgdW5pY29kZVJhbmdlKCkgY29uc3Q7CiAgICAg
U3RyaW5nIHZhcmlhbnQoKSBjb25zdDsKICAgICBTdHJpbmcgZmVhdHVyZVNldHRpbmdzKCkgY29u
c3Q7Ci0gICAgRm9udEZhY2VMb2FkU3RhdHVzIHN0YXR1cygpIGNvbnN0OworCisgICAgZW51bSBj
bGFzcyBMb2FkU3RhdHVzIHsgVW5sb2FkZWQsIExvYWRpbmcsIExvYWRlZCwgRXJyb3IgfTsKKyAg
ICBMb2FkU3RhdHVzIHN0YXR1cygpIGNvbnN0OwogCiAgICAgdHlwZWRlZiBET01Qcm9taXNlPEZv
bnRGYWNlJiwgRE9NQ29yZUV4Y2VwdGlvbiY+IFByb21pc2U7CiAgICAgUHJvbWlzZSYgcHJvbWlz
ZSgpIHsgcmV0dXJuIG1fcHJvbWlzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0ZvbnRGYWNlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5jcHAKaW5k
ZXggMDA1MDk5MzZkNjM1OWYzNmFjNjI0N2VkZmIyMTVjNWNiNTBmNzlhMi4uNDU2MjJjYTRkMmE0
MDE4MDNhMjRkM2NhYTYxMDY1ZDY2YmY2NjZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0ZvbnRGYWNlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQu
Y3BwCkBAIC0xODIsMTYgKzE4MiwxNiBAQCBhdXRvIEZvbnRGYWNlU2V0Ojpwcm9taXNlKEpTQzo6
RXhlY1N0YXRlJiBleGVjU3RhdGUpIC0+IFByb21pc2UmCiAgICAgcmV0dXJuIG1fcHJvbWlzZS52
YWx1ZSgpOwogfQogICAgIAotRm9udEZhY2VTZXRMb2FkU3RhdHVzIEZvbnRGYWNlU2V0OjpzdGF0
dXMoKSBjb25zdAorYXV0byBGb250RmFjZVNldDo6c3RhdHVzKCkgY29uc3QgLT4gTG9hZFN0YXR1
cwogewogICAgIHN3aXRjaCAobV9iYWNraW5nLT5zdGF0dXMoKSkgewogICAgIGNhc2UgQ1NTRm9u
dEZhY2VTZXQ6OlN0YXR1czo6TG9hZGluZzoKLSAgICAgICAgcmV0dXJuIEZvbnRGYWNlU2V0TG9h
ZFN0YXR1czo6TG9hZGluZzsKKyAgICAgICAgcmV0dXJuIExvYWRTdGF0dXM6OkxvYWRpbmc7CiAg
ICAgY2FzZSBDU1NGb250RmFjZVNldDo6U3RhdHVzOjpMb2FkZWQ6Ci0gICAgICAgIHJldHVybiBG
b250RmFjZVNldExvYWRTdGF0dXM6OkxvYWRlZDsKKyAgICAgICAgcmV0dXJuIExvYWRTdGF0dXM6
OkxvYWRlZDsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEZv
bnRGYWNlU2V0TG9hZFN0YXR1czo6TG9hZGVkOworICAgIHJldHVybiBMb2FkU3RhdHVzOjpMb2Fk
ZWQ7CiB9CiAKIGJvb2wgRm9udEZhY2VTZXQ6OmNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNp
b24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaAppbmRleCAyOTUzYTlhOGE1MDlmNTBh
ODY0NTk3NTZjM2ZkYzM5NGUxZDcwODlkLi5iMTc1ODM2MzhlYjFlN2RjNTkxNTcyNDY5ZDQ0MTg3
NmVjNTdiYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaApAQCAtMzUsOCArMzUsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERPTUNvcmVFeGNlcHRpb247CiAKLWVudW0gY2xh
c3MgRm9udEZhY2VTZXRMb2FkU3RhdHVzIHsgTG9hZGluZywgTG9hZGVkIH07Ci0KIGNsYXNzIEZv
bnRGYWNlU2V0IGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8Rm9udEZhY2VTZXQ+LCBwcml2YXRl
IENTU0ZvbnRGYWNlU2V0Q2xpZW50LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwg
cHJpdmF0ZSBBY3RpdmVET01PYmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8Rm9udEZh
Y2VTZXQ+IGNyZWF0ZShEb2N1bWVudCYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Rm9udEZhY2U+PiYg
aW5pdGlhbEZhY2VzKTsKQEAgLTUyLDcgKzUwLDggQEAgcHVibGljOgogICAgIHZvaWQgbG9hZChK
U0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IFN0cmluZyYgZm9udCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBE
ZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlLCBFeGNlcHRpb25Db2RlJik7CiAgICAgYm9vbCBjaGVj
ayhjb25zdCBTdHJpbmcmIGZvbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYp
OwogCi0gICAgRm9udEZhY2VTZXRMb2FkU3RhdHVzIHN0YXR1cygpIGNvbnN0OworICAgIGVudW0g
Y2xhc3MgTG9hZFN0YXR1cyB7IExvYWRpbmcsIExvYWRlZCB9OworICAgIExvYWRTdGF0dXMgc3Rh
dHVzKCkgY29uc3Q7CiAKICAgICB0eXBlZGVmIERPTVByb21pc2U8Rm9udEZhY2VTZXQmLCBET01D
b3JlRXhjZXB0aW9uJj4gUHJvbWlzZTsKICAgICBQcm9taXNlJiBwcm9taXNlKEpTQzo6RXhlY1N0
YXRlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAwNTQ1ZWZjMWQ5MDkzYzRhMWQ0YjYw
YWY2YzQ2MzY3NjA1ODc1NzU2Li5mYTdmNmQwMzJkY2ZiNmMyYzNiNmQxN2Y5OGIwNzJjMzQwMmE4
NjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTUyMSw3ICs1MjEsNyBAQCBEb2N1bWVu
dDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCwgdW5zaWduZWQgZG9jdW1l
bnRDbGFzc2VzLCB1bnNpZwogI2VuZGlmCiAgICAgLCBtX2xvYWRFdmVudERlbGF5Q291bnQoMCkK
ICAgICAsIG1fbG9hZEV2ZW50RGVsYXlUaW1lcigqdGhpcywgJkRvY3VtZW50Ojpsb2FkRXZlbnRE
ZWxheVRpbWVyRmlyZWQpCi0gICAgLCBtX3JlZmVycmVyUG9saWN5KFJlZmVycmVySGVhZGVyUG9s
aWN5OjpEZWZhdWx0KQorICAgICwgbV9yZWZlcnJlclBvbGljeShSZWZlcnJlclBvbGljeTo6RGVm
YXVsdCkKICAgICAsIG1fd3JpdGVSZWN1cnNpb25Jc1Rvb0RlZXAoZmFsc2UpCiAgICAgLCBtX3dy
aXRlUmVjdXJzaW9uRGVwdGgoMCkKICAgICAsIG1fbGFzdEhhbmRsZWRVc2VyR2VzdHVyZVRpbWVz
dGFtcCgwKQpAQCAtMzM2MCwxNiArMzM2MCwxNiBAQCB2b2lkIERvY3VtZW50Ojpwcm9jZXNzUmVm
ZXJyZXJQb2xpY3koY29uc3QgU3RyaW5nJiBwb2xpY3kpCiAgICAgLy8gTm90ZSB0aGF0IHdlJ3Jl
IHN1cHBvcnRpbmcgYm90aCB0aGUgc3RhbmRhcmQgYW5kIGxlZ2FjeSBrZXl3b3JkcyBmb3IgcmVm
ZXJyZXIKICAgICAvLyBwb2xpY2llcywgYXMgZGVmaW5lZCBieSBodHRwOi8vd3d3LnczLm9yZy9U
Ui9yZWZlcnJlci1wb2xpY3kvI3JlZmVycmVyLXBvbGljeS1kZWxpdmVyeS1tZXRhCiAgICAgaWYg
KGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHBvbGljeSwgIm5vLXJlZmVycmVyIikgfHwg
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocG9saWN5LCAibmV2ZXIiKSkKLSAgICAgICAg
c2V0UmVmZXJyZXJQb2xpY3koUmVmZXJyZXJIZWFkZXJQb2xpY3k6Ok5ldmVyKTsKKyAgICAgICAg
c2V0UmVmZXJyZXJQb2xpY3koUmVmZXJyZXJQb2xpY3k6Ok5ldmVyKTsKICAgICBlbHNlIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwb2xpY3ksICJ1bnNhZmUtdXJsIikgfHwgZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocG9saWN5LCAiYWx3YXlzIikpCi0gICAgICAgIHNl
dFJlZmVycmVyUG9saWN5KFJlZmVycmVySGVhZGVyUG9saWN5OjpBbHdheXMpOworICAgICAgICBz
ZXRSZWZlcnJlclBvbGljeShSZWZlcnJlclBvbGljeTo6QWx3YXlzKTsKICAgICBlbHNlIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwb2xpY3ksICJvcmlnaW4iKSkKLSAgICAgICAg
c2V0UmVmZXJyZXJQb2xpY3koUmVmZXJyZXJIZWFkZXJQb2xpY3k6Ok9yaWdpbik7CisgICAgICAg
IHNldFJlZmVycmVyUG9saWN5KFJlZmVycmVyUG9saWN5OjpPcmlnaW4pOwogICAgIGVsc2UgaWYg
KGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHBvbGljeSwgIm5vLXJlZmVycmVyLXdoZW4t
ZG93bmdyYWRlIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocG9saWN5LCAiZGVm
YXVsdCIpKQotICAgICAgICBzZXRSZWZlcnJlclBvbGljeShSZWZlcnJlckhlYWRlclBvbGljeTo6
RGVmYXVsdCk7CisgICAgICAgIHNldFJlZmVycmVyUG9saWN5KFJlZmVycmVyUG9saWN5OjpEZWZh
dWx0KTsKICAgICBlbHNlIHsKICAgICAgICAgYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZTo6UmVuZGVyaW5nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiRmFpbGVkIHRvIHNldCByZWZlcnJl
ciBwb2xpY3k6IFRoZSB2YWx1ZSAnIiArIHBvbGljeSArICInIGlzIG5vdCBvbmUgb2YgJ25vLXJl
ZmVycmVyJywgJ29yaWdpbicsICduby1yZWZlcnJlci13aGVuLWRvd25ncmFkZScsIG9yICd1bnNh
ZmUtdXJsJy4gRGVmYXVsdGluZyB0byAnbm8tcmVmZXJyZXInLiIpOwotICAgICAgICBzZXRSZWZl
cnJlclBvbGljeShSZWZlcnJlckhlYWRlclBvbGljeTo6TmV2ZXIpOworICAgICAgICBzZXRSZWZl
cnJlclBvbGljeShSZWZlcnJlclBvbGljeTo6TmV2ZXIpOwogICAgIH0KIH0KIApAQCAtNjkzNyw3
ICs2OTM3LDcgQEAgdm9pZCBEb2N1bWVudDo6YXBwbHlDb250ZW50RGlzcG9zaXRpb25BdHRhY2ht
ZW50U2FuZGJveCgpCiB7CiAgICAgQVNTRVJUKHNob3VsZEVuZm9yY2VDb250ZW50RGlzcG9zaXRp
b25BdHRhY2htZW50U2FuZGJveCgpKTsKIAotICAgIHNldFJlZmVycmVyUG9saWN5KFJlZmVycmVy
SGVhZGVyUG9saWN5OjpOZXZlcik7CisgICAgc2V0UmVmZXJyZXJQb2xpY3koUmVmZXJyZXJQb2xp
Y3k6Ok5ldmVyKTsKICAgICBpZiAoIWlzTWVkaWFEb2N1bWVudCgpKQogICAgICAgICBlbmZvcmNl
U2FuZGJveEZsYWdzKFNhbmRib3hBbGwpOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5k
ZXggMTY2MjFlYmE3MTcwYjkxNmViYTg2NmUxMGE4OGVlY2E1ODQ5N2M3Mi4uMWJjYjQ4YmUyNWVi
YWJkOWFjNjhlY2NkNTAxZTY2NTE5MTUxN2UzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTM2
MSw4ICszNjEsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBkaWREaXNwYXRjaFZpZXdwb3J0UHJvcGVy
dGllc0NoYW5nZWQoKSBjb25zdCB7IHJldHVybiBtX2RpZERpc3BhdGNoVmlld3BvcnRQcm9wZXJ0
aWVzQ2hhbmdlZDsgfQogI2VuZGlmCiAKLSAgICB2b2lkIHNldFJlZmVycmVyUG9saWN5KFJlZmVy
cmVySGVhZGVyUG9saWN5IHJlZmVycmVyUG9saWN5KSB7IG1fcmVmZXJyZXJQb2xpY3kgPSByZWZl
cnJlclBvbGljeTsgfQotICAgIFJlZmVycmVySGVhZGVyUG9saWN5IHJlZmVycmVyUG9saWN5KCkg
Y29uc3QgeyByZXR1cm4gbV9yZWZlcnJlclBvbGljeTsgfQorICAgIHZvaWQgc2V0UmVmZXJyZXJQ
b2xpY3koUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3kpIHsgbV9yZWZlcnJlclBvbGljeSA9
IHJlZmVycmVyUG9saWN5OyB9CisgICAgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3koKSBj
b25zdCB7IHJldHVybiBtX3JlZmVycmVyUG9saWN5OyB9CiAKICAgICBEb2N1bWVudFR5cGUqIGRv
Y3R5cGUoKSBjb25zdDsKIApAQCAtMTY0MCw3ICsxNjQwLDcgQEAgcHJpdmF0ZToKIAogICAgIFZp
ZXdwb3J0QXJndW1lbnRzIG1fdmlld3BvcnRBcmd1bWVudHM7CiAKLSAgICBSZWZlcnJlckhlYWRl
clBvbGljeSBtX3JlZmVycmVyUG9saWN5OworICAgIFJlZmVycmVyUG9saWN5IG1fcmVmZXJyZXJQ
b2xpY3k7CiAKICNpZiBFTkFCTEUoV0VCX1RJTUlORykKICAgICBEb2N1bWVudFRpbWluZyBtX2Rv
Y3VtZW50VGltaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5k
ZXggYTgzZWJiNzg2YjJkNTQwZTY4MGRlYWZhNTYyYmM1MTFmZjYzYzFiMS4uYjE4ZTI5NzEzYmEy
ZDZlYmMxYzgyYmVmNzEyMjZkYjU1ZGM2OWMyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCkBAIC0xMTc0LDcgKzExNzQsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OmxvYWRJbnRlcm5hbCgpCiAgICAgICAgIGlmIChtX3RleHRUcmFja3MpIHsKICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3RleHRUcmFja3MtPmxlbmd0aCgpOyArK2kp
IHsKICAgICAgICAgICAgICAgICBUZXh0VHJhY2sqIHRyYWNrID0gbV90ZXh0VHJhY2tzLT5pdGVt
KGkpOwotICAgICAgICAgICAgICAgIGlmICh0cmFjay0+bW9kZSgpICE9IFRleHRUcmFja01vZGU6
OkRpc2FibGVkKQorICAgICAgICAgICAgICAgIGlmICh0cmFjay0+bW9kZSgpICE9IFRleHRUcmFj
azo6TW9kZTo6RGlzYWJsZWQpCiAgICAgICAgICAgICAgICAgICAgIG1fdGV4dFRyYWNrc1doZW5S
ZXNvdXJjZVNlbGVjdGlvbkJlZ2FuLmFwcGVuZCh0cmFjayk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KQEAgLTE3MzEsNyArMTczMSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRy
YWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrKiB0cmFjaykKICAgICAvLyBNYXJrIHRoaXMgdHJhY2sg
YXMgImNvbmZpZ3VyZWQiIHNvIGNvbmZpZ3VyZVRleHRUcmFja3Mgd29uJ3QgY2hhbmdlIHRoZSBt
b2RlIGFnYWluLgogICAgIHRyYWNrLT5zZXRIYXNCZWVuQ29uZmlndXJlZCh0cnVlKTsKICAgICAK
LSAgICBpZiAodHJhY2stPm1vZGUoKSAhPSBUZXh0VHJhY2tNb2RlOjpEaXNhYmxlZCAmJiB0cmFj
a0lzTG9hZGVkKQorICAgIGlmICh0cmFjay0+bW9kZSgpICE9IFRleHRUcmFjazo6TW9kZTo6RGlz
YWJsZWQgJiYgdHJhY2tJc0xvYWRlZCkKICAgICAgICAgdGV4dFRyYWNrQWRkQ3Vlcyh0cmFjaywg
dHJhY2stPmN1ZXMoKSk7CiAKICAgICBjb25maWd1cmVUZXh0VHJhY2tEaXNwbGF5KEFzc3VtZVRl
eHRUcmFja1Zpc2liaWxpdHlDaGFuZ2VkKTsKQEAgLTE3NTUsOCArMTc1NSw4IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6dmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZChWaWRlb1RyYWNrKiB0cmFj
aykKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tLaW5kQ2hhbmdlZChUZXh0VHJh
Y2sqIHRyYWNrKQogewotICAgIGlmICh0cmFjay0+a2luZCgpICE9IFRleHRUcmFja0tpbmQ6OkNh
cHRpb25zICYmIHRyYWNrLT5raW5kKCkgIT0gVGV4dFRyYWNrS2luZDo6U3VidGl0bGVzICYmIHRy
YWNrLT5tb2RlKCkgPT0gVGV4dFRyYWNrTW9kZTo6U2hvd2luZykKLSAgICAgICAgdHJhY2stPnNl
dE1vZGUoVGV4dFRyYWNrTW9kZTo6SGlkZGVuKTsKKyAgICBpZiAodHJhY2stPmtpbmQoKSAhPSBU
ZXh0VHJhY2s6OktpbmQ6OkNhcHRpb25zICYmIHRyYWNrLT5raW5kKCkgIT0gVGV4dFRyYWNrOjpL
aW5kOjpTdWJ0aXRsZXMgJiYgdHJhY2stPm1vZGUoKSA9PSBUZXh0VHJhY2s6Ok1vZGU6OlNob3dp
bmcpCisgICAgICAgIHRyYWNrLT5zZXRNb2RlKFRleHRUcmFjazo6TW9kZTo6SGlkZGVuKTsKIH0K
IAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpiZWdpbklnbm9yaW5nVHJhY2tEaXNwbGF5VXBkYXRl
UmVxdWVzdHMoKQpAQCAtMTc3NCw3ICsxNzc0LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpl
bmRJZ25vcmluZ1RyYWNrRGlzcGxheVVwZGF0ZVJlcXVlc3RzKCkKIAogdm9pZCBIVE1MTWVkaWFF
bGVtZW50Ojp0ZXh0VHJhY2tBZGRDdWVzKFRleHRUcmFjayogdHJhY2ssIGNvbnN0IFRleHRUcmFj
a0N1ZUxpc3QqIGN1ZXMpIAogewotICAgIGlmICh0cmFjay0+bW9kZSgpID09IFRleHRUcmFja01v
ZGU6OkRpc2FibGVkKQorICAgIGlmICh0cmFjay0+bW9kZSgpID09IFRleHRUcmFjazo6TW9kZTo6
RGlzYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIFRyYWNrRGlzcGxheVVwZGF0ZVNjb3Bl
IHNjb3BlKHRoaXMpOwpAQCAtMTc5MSw3ICsxNzkxLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
Ojp0ZXh0VHJhY2tSZW1vdmVDdWVzKFRleHRUcmFjayosIGNvbnN0IFRleHRUcmFja0N1ZUxpc3Qq
IGMKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tBZGRDdWUoVGV4dFRyYWNrKiB0
cmFjaywgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+IHBycEN1ZSkKIHsKLSAgICBpZiAodHJhY2st
Pm1vZGUoKSA9PSBUZXh0VHJhY2tNb2RlOjpEaXNhYmxlZCkKKyAgICBpZiAodHJhY2stPm1vZGUo
KSA9PSBUZXh0VHJhY2s6Ok1vZGU6OkRpc2FibGVkKQogICAgICAgICByZXR1cm47CiAKICAgICBS
ZWZQdHI8VGV4dFRyYWNrQ3VlPiBjdWUgPSBwcnBDdWU7CkBAIC0zNjY0LDcgKzM2NjQsNyBAQCBQ
YXNzUmVmUHRyPFRleHRUcmFjaz4gSFRNTE1lZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKGNvbnN0
IFN0cmluZyYga2luZCwgY29uc3QgUwogICAgIHRleHRUcmFjay0+c2V0UmVhZGluZXNzU3RhdGUo
VGV4dFRyYWNrOjpMb2FkZWQpOwogCiAgICAgLy8gLi4uIGl0cyB0ZXh0IHRyYWNrIG1vZGUgdG8g
dGhlIHRleHQgdHJhY2sgaGlkZGVuIG1vZGUsIGFuZCBpdHMgdGV4dCB0cmFjayBsaXN0IG9mIGN1
ZXMgdG8gYW4gZW1wdHkgbGlzdCAuLi4KLSAgICB0ZXh0VHJhY2stPnNldE1vZGUoVGV4dFRyYWNr
TW9kZTo6SGlkZGVuKTsKKyAgICB0ZXh0VHJhY2stPnNldE1vZGUoVGV4dFRyYWNrOjpNb2RlOjpI
aWRkZW4pOwogCiAgICAgcmV0dXJuIHRleHRUcmFjay5yZWxlYXNlKCk7CiB9CkBAIC0zNzkyLDcg
KzM3OTIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNvbmZpZ3VyZVRleHRUcmFja0dyb3Vw
KGNvbnN0IFRyYWNrR3JvdXAmIGdyb3VwKQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZ3Jv
dXAudHJhY2tzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFJlZlB0cjxUZXh0VHJhY2s+IHRleHRU
cmFjayA9IGdyb3VwLnRyYWNrc1tpXTsKIAotICAgICAgICBpZiAobV9wcm9jZXNzaW5nUHJlZmVy
ZW5jZUNoYW5nZSAmJiB0ZXh0VHJhY2stPm1vZGUoKSA9PSBUZXh0VHJhY2tNb2RlOjpTaG93aW5n
KQorICAgICAgICBpZiAobV9wcm9jZXNzaW5nUHJlZmVyZW5jZUNoYW5nZSAmJiB0ZXh0VHJhY2st
Pm1vZGUoKSA9PSBUZXh0VHJhY2s6Ok1vZGU6OlNob3dpbmcpCiAgICAgICAgICAgICBjdXJyZW50
bHlFbmFibGVkVHJhY2tzLmFwcGVuZCh0ZXh0VHJhY2spOwogCiAgICAgICAgIGludCB0cmFja1Nj
b3JlID0gY2FwdGlvblByZWZlcmVuY2VzID8gY2FwdGlvblByZWZlcmVuY2VzLT50ZXh0VHJhY2tT
ZWxlY3Rpb25TY29yZSh0ZXh0VHJhY2suZ2V0KCksIHRoaXMpIDogMDsKQEAgLTM4NjEsMTIgKzM4
NjEsMTIgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpjb25maWd1cmVUZXh0VHJhY2tHcm91cChj
b25zdCBUcmFja0dyb3VwJiBncm91cCkKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBj
dXJyZW50bHlFbmFibGVkVHJhY2tzLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBSZWZQdHI8
VGV4dFRyYWNrPiB0ZXh0VHJhY2sgPSBjdXJyZW50bHlFbmFibGVkVHJhY2tzW2ldOwogICAgICAg
ICAgICAgaWYgKHRleHRUcmFjayAhPSB0cmFja1RvRW5hYmxlKQotICAgICAgICAgICAgICAgIHRl
eHRUcmFjay0+c2V0TW9kZShUZXh0VHJhY2tNb2RlOjpEaXNhYmxlZCk7CisgICAgICAgICAgICAg
ICAgdGV4dFRyYWNrLT5zZXRNb2RlKFRleHRUcmFjazo6TW9kZTo6RGlzYWJsZWQpOwogICAgICAg
ICB9CiAgICAgfQogCiAgICAgaWYgKHRyYWNrVG9FbmFibGUpIHsKLSAgICAgICAgdHJhY2tUb0Vu
YWJsZS0+c2V0TW9kZShUZXh0VHJhY2tNb2RlOjpTaG93aW5nKTsKKyAgICAgICAgdHJhY2tUb0Vu
YWJsZS0+c2V0TW9kZShUZXh0VHJhY2s6Ok1vZGU6OlNob3dpbmcpOwogCiAgICAgICAgIC8vIElm
IHVzZXIgcHJlZmVyZW5jZXMgaW5kaWNhdGUgd2Ugc2hvdWxkIGFsd2F5cyBkaXNwbGF5IGNhcHRp
b25zLCBtYWtlIHN1cmUgd2UgcmVmbGVjdCB0aGUKICAgICAgICAgLy8gcHJvcGVyIHN0YXR1cyB2
aWEgdGhlIHdlYmtpdENsb3NlZENhcHRpb25zVmlzaWJsZSBBUEkgY2FsbDoKQEAgLTM5OTYsMTMg
KzM5OTYsMTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRTZWxlY3RlZFRleHRUcmFjayhU
ZXh0VHJhY2sqIHRyYWNrVG9TZWxlY3QpCiAgICAgICAgIGZvciAoaW50IGkgPSAwLCBsZW5ndGgg
PSB0cmFja0xpc3QtPmxlbmd0aCgpOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIFRl
eHRUcmFjayogdHJhY2sgPSB0cmFja0xpc3QtPml0ZW0oaSk7CiAgICAgICAgICAgICBpZiAoIXRy
YWNrVG9TZWxlY3QgfHwgdHJhY2sgIT0gdHJhY2tUb1NlbGVjdCkKLSAgICAgICAgICAgICAgICB0
cmFjay0+c2V0TW9kZShUZXh0VHJhY2tNb2RlOjpEaXNhYmxlZCk7CisgICAgICAgICAgICAgICAg
dHJhY2stPnNldE1vZGUoVGV4dFRyYWNrOjpNb2RlOjpEaXNhYmxlZCk7CiAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgdHJhY2stPnNldE1vZGUoVGV4dFRyYWNrTW9kZTo6U2hvd2lu
Zyk7CisgICAgICAgICAgICAgICAgdHJhY2stPnNldE1vZGUoVGV4dFRyYWNrOjpNb2RlOjpTaG93
aW5nKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAodHJhY2tUb1NlbGVjdCA9PSBUZXh0VHJh
Y2s6OmNhcHRpb25NZW51T2ZmSXRlbSgpKSB7CiAgICAgICAgIGZvciAoaW50IGkgPSAwLCBsZW5n
dGggPSB0cmFja0xpc3QtPmxlbmd0aCgpOyBpIDwgbGVuZ3RoOyArK2kpCi0gICAgICAgICAgICB0
cmFja0xpc3QtPml0ZW0oaSktPnNldE1vZGUoVGV4dFRyYWNrTW9kZTo6RGlzYWJsZWQpOworICAg
ICAgICAgICAgdHJhY2tMaXN0LT5pdGVtKGkpLT5zZXRNb2RlKFRleHRUcmFjazo6TW9kZTo6RGlz
YWJsZWQpOwogICAgIH0KIAogICAgIGlmICghZG9jdW1lbnQoKS5wYWdlKCkpCkBAIC00MDQxLDE4
ICs0MDQxLDE4IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y29uZmlndXJlVGV4dFRyYWNrcygp
CiAKICAgICAgICAgYXV0byBraW5kID0gdGV4dFRyYWNrLT5raW5kKCk7CiAgICAgICAgIFRyYWNr
R3JvdXAqIGN1cnJlbnRHcm91cDsKLSAgICAgICAgaWYgKGtpbmQgPT0gVGV4dFRyYWNrS2luZDo6
U3VidGl0bGVzIHx8IGtpbmQgPT0gVGV4dFRyYWNrS2luZDo6Q2FwdGlvbnMgfHwga2luZCA9PSBU
ZXh0VHJhY2tLaW5kOjpGb3JjZWQpCisgICAgICAgIGlmIChraW5kID09IFRleHRUcmFjazo6S2lu
ZDo6U3VidGl0bGVzIHx8IGtpbmQgPT0gVGV4dFRyYWNrOjpLaW5kOjpDYXB0aW9ucyB8fCBraW5k
ID09IFRleHRUcmFjazo6S2luZDo6Rm9yY2VkKQogICAgICAgICAgICAgY3VycmVudEdyb3VwID0g
JmNhcHRpb25BbmRTdWJ0aXRsZVRyYWNrczsKLSAgICAgICAgZWxzZSBpZiAoa2luZCA9PSBUZXh0
VHJhY2tLaW5kOjpEZXNjcmlwdGlvbnMpCisgICAgICAgIGVsc2UgaWYgKGtpbmQgPT0gVGV4dFRy
YWNrOjpLaW5kOjpEZXNjcmlwdGlvbnMpCiAgICAgICAgICAgICBjdXJyZW50R3JvdXAgPSAmZGVz
Y3JpcHRpb25UcmFja3M7Ci0gICAgICAgIGVsc2UgaWYgKGtpbmQgPT0gVGV4dFRyYWNrS2luZDo6
Q2hhcHRlcnMpCisgICAgICAgIGVsc2UgaWYgKGtpbmQgPT0gVGV4dFRyYWNrOjpLaW5kOjpDaGFw
dGVycykKICAgICAgICAgICAgIGN1cnJlbnRHcm91cCA9ICZjaGFwdGVyVHJhY2tzOwotICAgICAg
ICBlbHNlIGlmIChraW5kID09IFRleHRUcmFja0tpbmQ6Ok1ldGFkYXRhKQorICAgICAgICBlbHNl
IGlmIChraW5kID09IFRleHRUcmFjazo6S2luZDo6TWV0YWRhdGEpCiAgICAgICAgICAgICBjdXJy
ZW50R3JvdXAgPSAmbWV0YWRhdGFUcmFja3M7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGN1
cnJlbnRHcm91cCA9ICZvdGhlclRyYWNrczsKIAotICAgICAgICBpZiAoIWN1cnJlbnRHcm91cC0+
dmlzaWJsZVRyYWNrICYmIHRleHRUcmFjay0+bW9kZSgpID09IFRleHRUcmFja01vZGU6OlNob3dp
bmcpCisgICAgICAgIGlmICghY3VycmVudEdyb3VwLT52aXNpYmxlVHJhY2sgJiYgdGV4dFRyYWNr
LT5tb2RlKCkgPT0gVGV4dFRyYWNrOjpNb2RlOjpTaG93aW5nKQogICAgICAgICAgICAgY3VycmVu
dEdyb3VwLT52aXNpYmxlVHJhY2sgPSB0ZXh0VHJhY2s7CiAgICAgICAgIGlmICghY3VycmVudEdy
b3VwLT5kZWZhdWx0VHJhY2sgJiYgdGV4dFRyYWNrLT5pc0RlZmF1bHQoKSkKICAgICAgICAgICAg
IGN1cnJlbnRHcm91cC0+ZGVmYXVsdFRyYWNrID0gdGV4dFRyYWNrOwpAQCAtNTQ5MSw3ICs1NDkx
LDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpoYXNDbG9zZWRDYXB0aW9ucygpIGNvbnN0CiAg
ICAgICAgIGF1dG8mIHRyYWNrID0gKm1fdGV4dFRyYWNrcy0+aXRlbShpKTsKICAgICAgICAgaWYg
KHRyYWNrLnJlYWRpbmVzc1N0YXRlKCkgPT0gVGV4dFRyYWNrOjpGYWlsZWRUb0xvYWQpCiAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKHRyYWNrLmtpbmQoKSA9PSBUZXh0VHJhY2tL
aW5kOjpDYXB0aW9ucyB8fCB0cmFjay5raW5kKCkgPT0gVGV4dFRyYWNrS2luZDo6U3VidGl0bGVz
KQorICAgICAgICBpZiAodHJhY2sua2luZCgpID09IFRleHRUcmFjazo6S2luZDo6Q2FwdGlvbnMg
fHwgdHJhY2sua2luZCgpID09IFRleHRUcmFjazo6S2luZDo6U3VidGl0bGVzKQogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogI2VuZGlmCkBAIC01NzU4LDcgKzU3NTgsNyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OmNvbmZpZ3VyZVRleHRUcmFja0Rpc3BsYXkoVGV4dFRyYWNrVmlz
aWJpbGl0eUNoZWNrVHlwZSBjaAogCiAgICAgYm9vbCBoYXZlVmlzaWJsZVRleHRUcmFjayA9IGZh
bHNlOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3RleHRUcmFja3MtPmxlbmd0aCgp
OyArK2kpIHsKLSAgICAgICAgaWYgKG1fdGV4dFRyYWNrcy0+aXRlbShpKS0+bW9kZSgpID09IFRl
eHRUcmFja01vZGU6OlNob3dpbmcpIHsKKyAgICAgICAgaWYgKG1fdGV4dFRyYWNrcy0+aXRlbShp
KS0+bW9kZSgpID09IFRleHRUcmFjazo6TW9kZTo6U2hvd2luZykgewogICAgICAgICAgICAgaGF2
ZVZpc2libGVUZXh0VHJhY2sgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
QEAgLTU4MzQsNyArNTgzNCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWFya0NhcHRpb25B
bmRTdWJ0aXRsZVRyYWNrc0FzVW5jb25maWd1cmVkKFJlY29uZmlndXJlTW9kCiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fdGV4dFRyYWNrcy0+bGVuZ3RoKCk7ICsraSkgewogICAgICAg
ICBhdXRvJiB0cmFjayA9ICptX3RleHRUcmFja3MtPml0ZW0oaSk7CiAgICAgICAgIGF1dG8ga2lu
ZCA9IHRyYWNrLmtpbmQoKTsKLSAgICAgICAgaWYgKGtpbmQgPT0gVGV4dFRyYWNrS2luZDo6U3Vi
dGl0bGVzIHx8IGtpbmQgPT0gVGV4dFRyYWNrS2luZDo6Q2FwdGlvbnMpCisgICAgICAgIGlmIChr
aW5kID09IFRleHRUcmFjazo6S2luZDo6U3VidGl0bGVzIHx8IGtpbmQgPT0gVGV4dFRyYWNrOjpL
aW5kOjpDYXB0aW9ucykKICAgICAgICAgICAgIHRyYWNrLnNldEhhc0JlZW5Db25maWd1cmVkKGZh
bHNlKTsKICAgICB9CiAKQEAgLTYwODAsMzQgKzYwODAsMzQgQEAgU3RyaW5nIEhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVyVXNlckFnZW50KCkgY29uc3QKIAogI2lmIEVOQUJMRShBVkZfQ0FQ
VElPTlMpCiAKLXN0YXRpYyBpbmxpbmUgUGxhdGZvcm1UZXh0VHJhY2s6OlRyYWNrS2luZCB0b1Bs
YXRmb3JtKFRleHRUcmFja0tpbmQga2luZCkKK3N0YXRpYyBpbmxpbmUgUGxhdGZvcm1UZXh0VHJh
Y2s6OlRyYWNrS2luZCB0b1BsYXRmb3JtKFRleHRUcmFjazo6S2luZCBraW5kKQogewogICAgIHN3
aXRjaCAoa2luZCkgewotICAgIGNhc2UgVGV4dFRyYWNrS2luZDo6Q2FwdGlvbnM6CisgICAgY2Fz
ZSBUZXh0VHJhY2s6OktpbmQ6OkNhcHRpb25zOgogICAgICAgICByZXR1cm4gUGxhdGZvcm1UZXh0
VHJhY2s6OkNhcHRpb247Ci0gICAgY2FzZSBUZXh0VHJhY2tLaW5kOjpDaGFwdGVyczoKKyAgICBj
YXNlIFRleHRUcmFjazo6S2luZDo6Q2hhcHRlcnM6CiAgICAgICAgIHJldHVybiBQbGF0Zm9ybVRl
eHRUcmFjazo6Q2hhcHRlcjsKLSAgICBjYXNlIFRleHRUcmFja0tpbmQ6OkRlc2NyaXB0aW9uczoK
KyAgICBjYXNlIFRleHRUcmFjazo6S2luZDo6RGVzY3JpcHRpb25zOgogICAgICAgICByZXR1cm4g
UGxhdGZvcm1UZXh0VHJhY2s6OkRlc2NyaXB0aW9uOwotICAgIGNhc2UgVGV4dFRyYWNrS2luZDo6
Rm9yY2VkOgorICAgIGNhc2UgVGV4dFRyYWNrOjpLaW5kOjpGb3JjZWQ6CiAgICAgICAgIHJldHVy
biBQbGF0Zm9ybVRleHRUcmFjazo6Rm9yY2VkOwotICAgIGNhc2UgVGV4dFRyYWNrS2luZDo6TWV0
YWRhdGE6CisgICAgY2FzZSBUZXh0VHJhY2s6OktpbmQ6Ok1ldGFkYXRhOgogICAgICAgICByZXR1
cm4gUGxhdGZvcm1UZXh0VHJhY2s6Ok1ldGFEYXRhOwotICAgIGNhc2UgVGV4dFRyYWNrS2luZDo6
U3VidGl0bGVzOgorICAgIGNhc2UgVGV4dFRyYWNrOjpLaW5kOjpTdWJ0aXRsZXM6CiAgICAgICAg
IHJldHVybiBQbGF0Zm9ybVRleHRUcmFjazo6U3VidGl0bGU7CiAgICAgfQogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBQbGF0Zm9ybVRleHRUcmFjazo6Q2FwdGlvbjsKIH0K
IAotc3RhdGljIGlubGluZSBQbGF0Zm9ybVRleHRUcmFjazo6VHJhY2tNb2RlIHRvUGxhdGZvcm0o
VGV4dFRyYWNrTW9kZSBtb2RlKQorc3RhdGljIGlubGluZSBQbGF0Zm9ybVRleHRUcmFjazo6VHJh
Y2tNb2RlIHRvUGxhdGZvcm0oVGV4dFRyYWNrOjpNb2RlIG1vZGUpCiB7CiAgICAgc3dpdGNoICht
b2RlKSB7Ci0gICAgY2FzZSBUZXh0VHJhY2tNb2RlOjpEaXNhYmxlZDoKKyAgICBjYXNlIFRleHRU
cmFjazo6TW9kZTo6RGlzYWJsZWQ6CiAgICAgICAgIHJldHVybiBQbGF0Zm9ybVRleHRUcmFjazo6
RGlzYWJsZWQ7Ci0gICAgY2FzZSBUZXh0VHJhY2tNb2RlOjpIaWRkZW46CisgICAgY2FzZSBUZXh0
VHJhY2s6Ok1vZGU6OkhpZGRlbjoKICAgICAgICAgcmV0dXJuIFBsYXRmb3JtVGV4dFRyYWNrOjpI
aWRkZW47Ci0gICAgY2FzZSBUZXh0VHJhY2tNb2RlOjpTaG93aW5nOgorICAgIGNhc2UgVGV4dFRy
YWNrOjpNb2RlOjpTaG93aW5nOgogICAgICAgICByZXR1cm4gUGxhdGZvcm1UZXh0VHJhY2s6OlNo
b3dpbmc7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNjEzMSwxMyArNjEz
MSwxMyBAQCBWZWN0b3I8UmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrPj4gSFRNTE1lZGlhRWxlbWVu
dDo6b3V0T2ZCYW5kVHJhY2tTb3VyY2VzKCkKICAgICAgICAgLy8gRklYTUU6IFRoZSBzd2l0Y2gg
c3RhdGVtZW50IGJlbG93IHByZXNlcnZlcyBleGlzdGluZyBiZWhhdmlvciB3aGVyZSB3ZSBpZ25v
cmUgY2hhcHRlcnMgYW5kIG1ldGFkYXRhIHRyYWNrcy4KICAgICAgICAgLy8gSWYgd2UgY29uZmly
bSB0aGlzIGJlaGF2aW9yIGlzIHZhbHVhYmxlLCB3ZSBzaG91bGQgcmVtb3ZlIHRoaXMgY29tbWVu
dC4gT3RoZXJ3aXNlLCByZW1vdmUgYm90aCBjb21tZW50IGFuZCBzd2l0Y2guCiAgICAgICAgIHN3
aXRjaCAoa2luZCkgewotICAgICAgICBjYXNlIFRleHRUcmFja0tpbmQ6OkNhcHRpb25zOgotICAg
ICAgICBjYXNlIFRleHRUcmFja0tpbmQ6OkRlc2NyaXB0aW9uczoKLSAgICAgICAgY2FzZSBUZXh0
VHJhY2tLaW5kOjpGb3JjZWQ6Ci0gICAgICAgIGNhc2UgVGV4dFRyYWNrS2luZDo6U3VidGl0bGVz
OgorICAgICAgICBjYXNlIFRleHRUcmFjazo6S2luZDo6Q2FwdGlvbnM6CisgICAgICAgIGNhc2Ug
VGV4dFRyYWNrOjpLaW5kOjpEZXNjcmlwdGlvbnM6CisgICAgICAgIGNhc2UgVGV4dFRyYWNrOjpL
aW5kOjpGb3JjZWQ6CisgICAgICAgIGNhc2UgVGV4dFRyYWNrOjpLaW5kOjpTdWJ0aXRsZXM6CiAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBUZXh0VHJhY2tLaW5kOjpDaGFwdGVyczoK
LSAgICAgICAgY2FzZSBUZXh0VHJhY2tLaW5kOjpNZXRhZGF0YToKKyAgICAgICAgY2FzZSBUZXh0
VHJhY2s6OktpbmQ6OkNoYXB0ZXJzOgorICAgICAgICBjYXNlIFRleHRUcmFjazo6S2luZDo6TWV0
YWRhdGE6CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcAppbmRleCA0NTRiYzI2NGQ5MzhlMDUxNjliODQ0ZTIw
NGVhZTU2YTAzMTQ1ZTMwLi5jMjAxYWJlM2JjODQ3MjYzMDQ3YWIyYzVjZTZjOWI2ZDFhMGI5ZDY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKQEAgLTE3NCw3ICsx
NzQsNyBAQCB2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnNjaGVkdWxlTG9hZCgpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIC8vIDIuIElmIHRoZSB0ZXh0IHRyYWNrJ3MgdGV4dCB0cmFjayBtb2RlIGlz
IG5vdCBzZXQgdG8gb25lIG9mIGhpZGRlbiBvciBzaG93aW5nLCBhYm9ydCB0aGVzZSBzdGVwcy4K
LSAgICBpZiAoZW5zdXJlVHJhY2soKS5tb2RlKCkgIT0gVGV4dFRyYWNrTW9kZTo6SGlkZGVuICYm
IGVuc3VyZVRyYWNrKCkubW9kZSgpICE9IFRleHRUcmFja01vZGU6OlNob3dpbmcpCisgICAgaWYg
KGVuc3VyZVRyYWNrKCkubW9kZSgpICE9IFRleHRUcmFjazo6TW9kZTo6SGlkZGVuICYmIGVuc3Vy
ZVRyYWNrKCkubW9kZSgpICE9IFRleHRUcmFjazo6TW9kZTo6U2hvd2luZykKICAgICAgICAgcmV0
dXJuOwogCiAgICAgLy8gMy4gSWYgdGhlIHRleHQgdHJhY2sncyB0cmFjayBlbGVtZW50IGRvZXMg
bm90IGhhdmUgYSBtZWRpYSBlbGVtZW50IGFzIGEgcGFyZW50LCBhYm9ydCB0aGVzZSBzdGVwcy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKaW5kZXggZjQ5MzEzN2VhNzMxYzI3
YzUwMWFmYmM3ZDJkNzk3NWE0MGI2NTk4YS4uOWExZGY3YmFiYTQ1MjQ2ZDJjOGYwN2VmODU1Njdh
ZTVjZmVkZTVkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKQEAgLTM0
LDggKzM0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MSW1hZ2VMb2FkZXI7
CiAKLWVudW0gY2xhc3MgVmlkZW9QcmVzZW50YXRpb25Nb2RlIHsgRnVsbHNjcmVlbiwgUGljdHVy
ZUluUGljdHVyZSwgSW5saW5lIH07Ci0KIGNsYXNzIEhUTUxWaWRlb0VsZW1lbnQgZmluYWwgOiBw
dWJsaWMgSFRNTE1lZGlhRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxIVE1MVmlk
ZW9FbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgYm9vbCk7
CkBAIC00Myw3ICs0MSw2IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCB2
aWRlb1dpZHRoKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgdmlkZW9IZWln
aHQoKSBjb25zdDsKIAotICAgIC8vIEZ1bGxzY3JlZW4KICAgICB2b2lkIHdlYmtpdEVudGVyRnVs
bHNjcmVlbihFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCB3ZWJraXRFeGl0RnVsbHNjcmVlbigp
OwogICAgIGJvb2wgd2Via2l0U3VwcG9ydHNGdWxsc2NyZWVuKCk7CkBAIC02Miw3ICs1OSw2IEBA
IHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NUQVRJU1RJQ1MpCi0gICAgLy8g
U3RhdGlzdGljcwogICAgIHVuc2lnbmVkIHdlYmtpdERlY29kZWRGcmFtZUNvdW50KCkgY29uc3Q7
CiAgICAgdW5zaWduZWQgd2Via2l0RHJvcHBlZEZyYW1lQ291bnQoKSBjb25zdDsKICNlbmRpZgpA
QCAtODIsNiArNzgsNyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRp
b24mKSBvdmVycmlkZTsKIAogI2lmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKKyAg
ICBlbnVtIGNsYXNzIFZpZGVvUHJlc2VudGF0aW9uTW9kZSB7IEZ1bGxzY3JlZW4sIFBpY3R1cmVJ
blBpY3R1cmUsIElubGluZSB9OwogICAgIGJvb2wgd2Via2l0U3VwcG9ydHNQcmVzZW50YXRpb25N
b2RlKFZpZGVvUHJlc2VudGF0aW9uTW9kZSkgY29uc3Q7CiAgICAgdm9pZCB3ZWJraXRTZXRQcmVz
ZW50YXRpb25Nb2RlKFZpZGVvUHJlc2VudGF0aW9uTW9kZSk7CiAgICAgVmlkZW9QcmVzZW50YXRp
b25Nb2RlIHdlYmtpdFByZXNlbnRhdGlvbk1vZGUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxWaWRlb0VsZW1lbnQuaWRsCmluZGV4IGMzYzdlMTc0ZTlhZTAwMmJmNDVjZjEyZTY1Njg5
NDNhYWUxMzdmYjguLmI4Mjg1NWU0Y2NlMWRlMmVlZGFhMGQ5NGE4MDM0ZDM4MDMwMDU3ZTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmlkbApAQCAtMjMsOSArMjMsNiBA
QAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIENvbmRp
dGlvbmFsPVZJREVPX1BSRVNFTlRBVElPTl9NT0RFLgotZW51bSBWaWRlb1ByZXNlbnRhdGlvbk1v
ZGUgeyAiZnVsbHNjcmVlbiIsICJwaWN0dXJlLWluLXBpY3R1cmUiLCAiaW5saW5lIiB9OwotCiBb
CiAgICAgQ29uZGl0aW9uYWw9VklERU8sCiAgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LApA
QCAtNjMsMyArNjAsNSBAQCBlbnVtIFZpZGVvUHJlc2VudGF0aW9uTW9kZSB7ICJmdWxsc2NyZWVu
IiwgInBpY3R1cmUtaW4tcGljdHVyZSIsICJpbmxpbmUiIH07CiAgICAgW0NvbmRpdGlvbmFsPVZJ
REVPX1BSRVNFTlRBVElPTl9NT0RFXSB2b2lkIHdlYmtpdFNldFByZXNlbnRhdGlvbk1vZGUoVmlk
ZW9QcmVzZW50YXRpb25Nb2RlIG1vZGUpOwogI2VuZGlmCiB9OworCitbQ29uZGl0aW9uYWw9VklE
RU9fUFJFU0VOVEFUSU9OX01PREVdIGVudW0gVmlkZW9QcmVzZW50YXRpb25Nb2RlIHsgImZ1bGxz
Y3JlZW4iLCAicGljdHVyZS1pbi1waWN0dXJlIiwgImlubGluZSIgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmlu
ZGV4IDdlYTdlNDU0MDM4M2ExYTk0NTVhMDY2OGI4YjhhYjAwMWZmZDUzOTYuLmYyYWUwYTFmMzJk
YzU0N2Y4NDRhYzNkNTZhZTgwODEyOGIxM2RhZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtNzYsOSAr
NzYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwog
CiAjaWYgVVNFKENHKQotY29uc3QgSW1hZ2VTbW9vdGhpbmdRdWFsaXR5IGRlZmF1bHRTbW9vdGhp
bmdRdWFsaXR5ID0gSW1hZ2VTbW9vdGhpbmdRdWFsaXR5OjpMb3c7Citjb25zdCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OkltYWdlU21vb3RoaW5nUXVhbGl0eSBkZWZhdWx0U21vb3RoaW5nUXVh
bGl0eSA9IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6SW1hZ2VTbW9vdGhpbmdRdWFsaXR5OjpM
b3c7CiAjZWxzZQotY29uc3QgSW1hZ2VTbW9vdGhpbmdRdWFsaXR5IGRlZmF1bHRTbW9vdGhpbmdR
dWFsaXR5ID0gSW1hZ2VTbW9vdGhpbmdRdWFsaXR5OjpNZWRpdW07Citjb25zdCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OkltYWdlU21vb3RoaW5nUXVhbGl0eSBkZWZhdWx0U21vb3RoaW5nUXVh
bGl0eSA9IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6SW1hZ2VTbW9vdGhpbmdRdWFsaXR5OjpN
ZWRpdW07CiAjZW5kaWYKIAogc3RhdGljIGNvbnN0IGludCBkZWZhdWx0Rm9udFNpemUgPSAxMDsK
QEAgLTkzMCwxMiArOTMwLDEyIEBAIHN0YXRpYyBib29sIGlzRnVsbENhbnZhc0NvbXBvc2l0ZU1v
ZGUoQ29tcG9zaXRlT3BlcmF0b3Igb3ApCiAgICAgcmV0dXJuIG9wID09IENvbXBvc2l0ZVNvdXJj
ZUluIHx8IG9wID09IENvbXBvc2l0ZVNvdXJjZU91dCB8fCBvcCA9PSBDb21wb3NpdGVEZXN0aW5h
dGlvbkluIHx8IG9wID09IENvbXBvc2l0ZURlc3RpbmF0aW9uQXRvcDsKIH0KIAotc3RhdGljIFdp
bmRSdWxlIHRvV2luZFJ1bGUoQ2FudmFzV2luZGluZ1J1bGUgcnVsZSkKK3N0YXRpYyBXaW5kUnVs
ZSB0b1dpbmRSdWxlKENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6V2luZGluZ1J1bGUgcnVsZSkK
IHsKLSAgICByZXR1cm4gcnVsZSA9PSBDYW52YXNXaW5kaW5nUnVsZTo6Tm9uemVybyA/IFJVTEVf
Tk9OWkVSTyA6IFJVTEVfRVZFTk9ERDsKKyAgICByZXR1cm4gcnVsZSA9PSBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OldpbmRpbmdSdWxlOjpOb256ZXJvID8gUlVMRV9OT05aRVJPIDogUlVMRV9F
VkVOT0REOwogfQogCi12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbChDYW52YXNX
aW5kaW5nUnVsZSB3aW5kaW5nUnVsZSkKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpm
aWxsKFdpbmRpbmdSdWxlIHdpbmRpbmdSdWxlKQogewogICAgIGZpbGxJbnRlcm5hbChtX3BhdGgs
IHdpbmRpbmdSdWxlKTsKIApAQCAtOTUzLDcgKzk1Myw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpzdHJva2UoKQogI2VuZGlmCiB9CiAKLXZvaWQgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpjbGlwKENhbnZhc1dpbmRpbmdSdWxlIHdpbmRpbmdSdWxlKQordm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmNsaXAoV2luZGluZ1J1bGUgd2luZGluZ1J1bGUpCiB7CiAgICAg
Y2xpcEludGVybmFsKG1fcGF0aCwgd2luZGluZ1J1bGUpOwogCkBAIC05NjIsNyArOTYyLDcgQEAg
dm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsaXAoQ2FudmFzV2luZGluZ1J1bGUgd2lu
ZGluZ1J1bGUpCiAjZW5kaWYKIH0KIAotdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZp
bGwoRE9NUGF0aCYgcGF0aCwgQ2FudmFzV2luZGluZ1J1bGUgd2luZGluZ1J1bGUpCit2b2lkIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbChET01QYXRoJiBwYXRoLCBXaW5kaW5nUnVsZSB3
aW5kaW5nUnVsZSkKIHsKICAgICBmaWxsSW50ZXJuYWwocGF0aC5wYXRoKCksIHdpbmRpbmdSdWxl
KTsKIH0KQEAgLTk3MiwxMiArOTcyLDEyIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpzdHJva2UoRE9NUGF0aCYgcGF0aCkKICAgICBzdHJva2VJbnRlcm5hbChwYXRoLnBhdGgoKSk7
CiB9CiAKLXZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjbGlwKERPTVBhdGgmIHBhdGgs
IENhbnZhc1dpbmRpbmdSdWxlIHdpbmRpbmdSdWxlKQordm9pZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OmNsaXAoRE9NUGF0aCYgcGF0aCwgV2luZGluZ1J1bGUgd2luZGluZ1J1bGUpCiB7CiAg
ICAgY2xpcEludGVybmFsKHBhdGgucGF0aCgpLCB3aW5kaW5nUnVsZSk7CiB9CiAKLXZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmaWxsSW50ZXJuYWwoY29uc3QgUGF0aCYgcGF0aCwgQ2Fu
dmFzV2luZGluZ1J1bGUgd2luZGluZ1J1bGUpCit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6ZmlsbEludGVybmFsKGNvbnN0IFBhdGgmIHBhdGgsIFdpbmRpbmdSdWxlIHdpbmRpbmdSdWxl
KQogewogICAgIEdyYXBoaWNzQ29udGV4dCogYyA9IGRyYXdpbmdDb250ZXh0KCk7CiAgICAgaWYg
KCFjKQpAQCAtMTA0NCw3ICsxMDQ0LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OnN0cm9rZUludGVybmFsKGNvbnN0IFBhdGgmIHBhdGgpCiAgICAgfQogfQogCi12b2lkIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6Y2xpcEludGVybmFsKGNvbnN0IFBhdGgmIHBhdGgsIENhbnZh
c1dpbmRpbmdSdWxlIHdpbmRpbmdSdWxlKQordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OmNsaXBJbnRlcm5hbChjb25zdCBQYXRoJiBwYXRoLCBXaW5kaW5nUnVsZSB3aW5kaW5nUnVsZSkK
IHsKICAgICBHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpOwogICAgIGlmICgh
YykKQEAgLTEwNzAsNyArMTA3MCw3IEBAIGlubGluZSB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6ZW5kQ29tcG9zaXRlTGF5ZXIoKQogI2VuZGlmCiB9CiAKLWJvb2wgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjppc1BvaW50SW5QYXRoKGZsb2F0IHgsIGZsb2F0IHksIENhbnZhc1dpbmRp
bmdSdWxlIHdpbmRpbmdSdWxlKQorYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmlzUG9p
bnRJblBhdGgoZmxvYXQgeCwgZmxvYXQgeSwgV2luZGluZ1J1bGUgd2luZGluZ1J1bGUpCiB7CiAg
ICAgcmV0dXJuIGlzUG9pbnRJblBhdGhJbnRlcm5hbChtX3BhdGgsIHgsIHksIHdpbmRpbmdSdWxl
KTsKIH0KQEAgLTEwODAsNyArMTA4MCw3IEBAIGJvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
Ojppc1BvaW50SW5TdHJva2UoZmxvYXQgeCwgZmxvYXQgeSkKICAgICByZXR1cm4gaXNQb2ludElu
U3Ryb2tlSW50ZXJuYWwobV9wYXRoLCB4LCB5KTsKIH0KIAotYm9vbCBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OmlzUG9pbnRJblBhdGgoRE9NUGF0aCYgcGF0aCwgZmxvYXQgeCwgZmxvYXQgeSwg
Q2FudmFzV2luZGluZ1J1bGUgd2luZGluZ1J1bGUpCitib29sIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6aXNQb2ludEluUGF0aChET01QYXRoJiBwYXRoLCBmbG9hdCB4LCBmbG9hdCB5LCBXaW5k
aW5nUnVsZSB3aW5kaW5nUnVsZSkKIHsKICAgICByZXR1cm4gaXNQb2ludEluUGF0aEludGVybmFs
KHBhdGgucGF0aCgpLCB4LCB5LCB3aW5kaW5nUnVsZSk7CiB9CkBAIC0xMDkwLDcgKzEwOTAsNyBA
QCBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6aXNQb2ludEluU3Ryb2tlKERPTVBhdGgm
IHBhdGgsIGZsb2F0IHgsIGZsb2F0IHkpCiAgICAgcmV0dXJuIGlzUG9pbnRJblN0cm9rZUludGVy
bmFsKHBhdGgucGF0aCgpLCB4LCB5KTsKIH0KIAotYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OmlzUG9pbnRJblBhdGhJbnRlcm5hbChjb25zdCBQYXRoJiBwYXRoLCBmbG9hdCB4LCBmbG9h
dCB5LCBDYW52YXNXaW5kaW5nUnVsZSB3aW5kaW5nUnVsZSkKK2Jvb2wgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjppc1BvaW50SW5QYXRoSW50ZXJuYWwoY29uc3QgUGF0aCYgcGF0aCwgZmxvYXQg
eCwgZmxvYXQgeSwgV2luZGluZ1J1bGUgd2luZGluZ1J1bGUpCiB7CiAgICAgR3JhcGhpY3NDb250
ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQoKTsKICAgICBpZiAoIWMpCkBAIC0yNTM3LDE0ICsyNTM3
LDE0IEBAIFBsYXRmb3JtTGF5ZXIqIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6cGxhdGZvcm1M
YXllcigpIGNvbnN0CiB9CiAjZW5kaWYKIAotc3RhdGljIEludGVycG9sYXRpb25RdWFsaXR5IHNt
b290aGluZ1RvSW50ZXJwb2xhdGlvblF1YWxpdHkoSW1hZ2VTbW9vdGhpbmdRdWFsaXR5IHF1YWxp
dHkpCitzdGF0aWMgSW50ZXJwb2xhdGlvblF1YWxpdHkgc21vb3RoaW5nVG9JbnRlcnBvbGF0aW9u
UXVhbGl0eShDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OkltYWdlU21vb3RoaW5nUXVhbGl0eSBx
dWFsaXR5KQogewogICAgIHN3aXRjaCAocXVhbGl0eSkgewotICAgIGNhc2UgSW1hZ2VTbW9vdGhp
bmdRdWFsaXR5OjpMb3c6CisgICAgY2FzZSBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OkltYWdl
U21vb3RoaW5nUXVhbGl0eTo6TG93OgogICAgICAgICByZXR1cm4gSW50ZXJwb2xhdGlvbkxvdzsK
LSAgICBjYXNlIEltYWdlU21vb3RoaW5nUXVhbGl0eTo6TWVkaXVtOgorICAgIGNhc2UgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpJbWFnZVNtb290aGluZ1F1YWxpdHk6Ok1lZGl1bToKICAgICAg
ICAgcmV0dXJuIEludGVycG9sYXRpb25NZWRpdW07Ci0gICAgY2FzZSBJbWFnZVNtb290aGluZ1F1
YWxpdHk6OkhpZ2g6CisgICAgY2FzZSBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OkltYWdlU21v
b3RoaW5nUXVhbGl0eTo6SGlnaDoKICAgICAgICAgcmV0dXJuIEludGVycG9sYXRpb25IaWdoOwog
ICAgIH0KIApAQCAtMjU1Miw3ICsyNTUyLDcgQEAgc3RhdGljIEludGVycG9sYXRpb25RdWFsaXR5
IHNtb290aGluZ1RvSW50ZXJwb2xhdGlvblF1YWxpdHkoSW1hZ2VTbW9vdGhpbmdRdWFsaXQKICAg
ICByZXR1cm4gSW50ZXJwb2xhdGlvbkxvdzsKIH07CiAKLUltYWdlU21vb3RoaW5nUXVhbGl0eSBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmltYWdlU21vb3RoaW5nUXVhbGl0eSgpIGNvbnN0Cith
dXRvIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6aW1hZ2VTbW9vdGhpbmdRdWFsaXR5KCkgY29u
c3QgLT4gSW1hZ2VTbW9vdGhpbmdRdWFsaXR5CiB7CiAgICAgcmV0dXJuIHN0YXRlKCkuaW1hZ2VT
bW9vdGhpbmdRdWFsaXR5OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAppbmRleCBiYzA2MmFlZWVkMjM2MjA4ODg1ZjBk
OTlmYmFlZGI5MzM4ODJhOTk1Li45MWJkODU2OWUzMjIyMzYxY2M2MmRkMTQ1YTNlZDIzNmQ0Mjg0
NDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuaApAQCAtNTcsOSArNTcsNiBAQCBjbGFzcyBUZXh0TWV0cmljczsKIAog
dHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAotZW51bSBjbGFzcyBDYW52YXNXaW5kaW5nUnVs
ZSB7IE5vbnplcm8sIEV2ZW5vZGQgfTsKLWVudW0gY2xhc3MgSW1hZ2VTbW9vdGhpbmdRdWFsaXR5
IHsgTG93LCBNZWRpdW0sIEhpZ2ggfTsKLQogY2xhc3MgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
IGZpbmFsIDogcHVibGljIENhbnZhc1JlbmRlcmluZ0NvbnRleHQsIHB1YmxpYyBDYW52YXNQYXRo
TWV0aG9kcyB7CiBwdWJsaWM6CiAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKEhUTUxDYW52
YXNFbGVtZW50KiwgYm9vbCB1c2VzQ1NTQ29tcGF0aWJpbGl0eVBhcnNlTW9kZSwgYm9vbCB1c2Vz
RGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1vZGUpOwpAQCAtMTMxLDE4ICsxMjgsMjAgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBiZWdpblBhdGgoKTsKIAotICAgIHZvaWQgZmlsbChDYW52YXNXaW5kaW5n
UnVsZSA9IENhbnZhc1dpbmRpbmdSdWxlOjpOb256ZXJvKTsKKyAgICBlbnVtIGNsYXNzIFdpbmRp
bmdSdWxlIHsgTm9uemVybywgRXZlbm9kZCB9OworCisgICAgdm9pZCBmaWxsKFdpbmRpbmdSdWxl
ID0gV2luZGluZ1J1bGU6Ok5vbnplcm8pOwogICAgIHZvaWQgc3Ryb2tlKCk7Ci0gICAgdm9pZCBj
bGlwKENhbnZhc1dpbmRpbmdSdWxlID0gQ2FudmFzV2luZGluZ1J1bGU6Ok5vbnplcm8pOworICAg
IHZvaWQgY2xpcChXaW5kaW5nUnVsZSA9IFdpbmRpbmdSdWxlOjpOb256ZXJvKTsKIAotICAgIHZv
aWQgZmlsbChET01QYXRoJiwgQ2FudmFzV2luZGluZ1J1bGUgPSBDYW52YXNXaW5kaW5nUnVsZTo6
Tm9uemVybyk7CisgICAgdm9pZCBmaWxsKERPTVBhdGgmLCBXaW5kaW5nUnVsZSA9IFdpbmRpbmdS
dWxlOjpOb256ZXJvKTsKICAgICB2b2lkIHN0cm9rZShET01QYXRoJik7Ci0gICAgdm9pZCBjbGlw
KERPTVBhdGgmLCBDYW52YXNXaW5kaW5nUnVsZSA9IENhbnZhc1dpbmRpbmdSdWxlOjpOb256ZXJv
KTsKKyAgICB2b2lkIGNsaXAoRE9NUGF0aCYsIFdpbmRpbmdSdWxlID0gV2luZGluZ1J1bGU6Ok5v
bnplcm8pOwogCi0gICAgYm9vbCBpc1BvaW50SW5QYXRoKGZsb2F0IHgsIGZsb2F0IHksIENhbnZh
c1dpbmRpbmdSdWxlID0gQ2FudmFzV2luZGluZ1J1bGU6Ok5vbnplcm8pOworICAgIGJvb2wgaXNQ
b2ludEluUGF0aChmbG9hdCB4LCBmbG9hdCB5LCBXaW5kaW5nUnVsZSA9IFdpbmRpbmdSdWxlOjpO
b256ZXJvKTsKICAgICBib29sIGlzUG9pbnRJblN0cm9rZShmbG9hdCB4LCBmbG9hdCB5KTsKIAot
ICAgIGJvb2wgaXNQb2ludEluUGF0aChET01QYXRoJiwgZmxvYXQgeCwgZmxvYXQgeSwgQ2FudmFz
V2luZGluZ1J1bGUgPSBDYW52YXNXaW5kaW5nUnVsZTo6Tm9uemVybyk7CisgICAgYm9vbCBpc1Bv
aW50SW5QYXRoKERPTVBhdGgmLCBmbG9hdCB4LCBmbG9hdCB5LCBXaW5kaW5nUnVsZSA9IFdpbmRp
bmdSdWxlOjpOb256ZXJvKTsKICAgICBib29sIGlzUG9pbnRJblN0cm9rZShET01QYXRoJiwgZmxv
YXQgeCwgZmxvYXQgeSk7CiAKICAgICB2b2lkIGNsZWFyUmVjdChmbG9hdCB4LCBmbG9hdCB5LCBm
bG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KTsKQEAgLTIyMiw2ICsyMjEsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBpbWFnZVNtb290aGluZ0VuYWJsZWQoKSBjb25zdDsKICAgICB2b2lkIHNldEltYWdl
U21vb3RoaW5nRW5hYmxlZChib29sKTsKIAorICAgIGVudW0gY2xhc3MgSW1hZ2VTbW9vdGhpbmdR
dWFsaXR5IHsgTG93LCBNZWRpdW0sIEhpZ2ggfTsKICAgICBJbWFnZVNtb290aGluZ1F1YWxpdHkg
aW1hZ2VTbW9vdGhpbmdRdWFsaXR5KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRJbWFnZVNtb290aGlu
Z1F1YWxpdHkoSW1hZ2VTbW9vdGhpbmdRdWFsaXR5KTsKIApAQCAtMzQ1LDExICszNDUsMTEgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGJlZ2luQ29tcG9zaXRlTGF5ZXIoKTsKICAgICB2b2lkIGVuZENv
bXBvc2l0ZUxheWVyKCk7CiAKLSAgICB2b2lkIGZpbGxJbnRlcm5hbChjb25zdCBQYXRoJiwgQ2Fu
dmFzV2luZGluZ1J1bGUpOworICAgIHZvaWQgZmlsbEludGVybmFsKGNvbnN0IFBhdGgmLCBXaW5k
aW5nUnVsZSk7CiAgICAgdm9pZCBzdHJva2VJbnRlcm5hbChjb25zdCBQYXRoJik7Ci0gICAgdm9p
ZCBjbGlwSW50ZXJuYWwoY29uc3QgUGF0aCYsIENhbnZhc1dpbmRpbmdSdWxlKTsKKyAgICB2b2lk
IGNsaXBJbnRlcm5hbChjb25zdCBQYXRoJiwgV2luZGluZ1J1bGUpOwogCi0gICAgYm9vbCBpc1Bv
aW50SW5QYXRoSW50ZXJuYWwoY29uc3QgUGF0aCYsIGZsb2F0IHgsIGZsb2F0IHksIENhbnZhc1dp
bmRpbmdSdWxlKTsKKyAgICBib29sIGlzUG9pbnRJblBhdGhJbnRlcm5hbChjb25zdCBQYXRoJiwg
ZmxvYXQgeCwgZmxvYXQgeSwgV2luZGluZ1J1bGUpOwogICAgIGJvb2wgaXNQb2ludEluU3Ryb2tl
SW50ZXJuYWwoY29uc3QgUGF0aCYsIGZsb2F0IHgsIGZsb2F0IHkpOwogCiAgICAgdm9pZCBkcmF3
Rm9jdXNJZk5lZWRlZEludGVybmFsKGNvbnN0IFBhdGgmLCBFbGVtZW50Kik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKaW5kZXgg
ZDljMWY5ZGNlMWMxODc0NGRiYmRmM2M4Y2Y5NzU2YWIzMTdhZWUwNC4uZGM0M2UyYzQzMDllOTIy
OGY0NzlkOWFiNTE3MTFiNDYyMTUyOGMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcApAQCAtNzY1LDcgKzc2NSw3IEBAIHZv
aWQgTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50Ojp1cGRhdGVEaXNw
bGF5KCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGRp
c3BsYXlNb2RlICE9IENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkF1dG9tYXRpYyAmJiB0ZXh0VHJh
Y2stPm1vZGUoKSA9PSBUZXh0VHJhY2tNb2RlOjpTaG93aW5nKSB7CisgICAgICAgIGlmIChkaXNw
bGF5TW9kZSAhPSBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpBdXRvbWF0aWMgJiYgdGV4dFRyYWNr
LT5tb2RlKCkgPT0gVGV4dFRyYWNrOjpNb2RlOjpTaG93aW5nKSB7CiAgICAgICAgICAgICB0cmFj
a01lbnVJdGVtU2VsZWN0ZWQgPSB0cnVlOwogICAgICAgICAgICAgdHJhY2tJdGVtLT5jbGFzc0xp
c3QoKS5hZGQoc2VsZWN0ZWRDbGFzc1ZhbHVlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICAg
ICAgfSBlbHNlCkBAIC0xMTczLDcgKzExNzMsNyBAQCB2b2lkIE1lZGlhQ29udHJvbFRleHRUcmFj
a0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZURpc3BsYXkoKQogICAgICAgICBMT0coTWVkaWEsICJN
ZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50Ojp1cGRhdGVEaXNwbGF5KCVwKSAt
IGFkZGluZyBhbmQgcG9zaXRpb25pbmcgY3VlICMlenU6IFwiJXNcIiwgc3RhcnQ9JS4yZiwgZW5k
PSUuMmYsIGxpbmU9JS4yZiIsIHRoaXMsIGksIGN1ZS0+dGV4dCgpLnV0ZjgoKS5kYXRhKCksIGN1
ZS0+c3RhcnRUaW1lKCksIGN1ZS0+ZW5kVGltZSgpLCBjdWUtPmxpbmUoKSk7CiAKICAgICAgICAg
UmVmUHRyPFZUVEN1ZUJveD4gZGlzcGxheUJveCA9IGN1ZS0+Z2V0RGlzcGxheVRyZWUobV92aWRl
b0Rpc3BsYXlTaXplLnNpemUoKSwgbV9mb250U2l6ZSk7Ci0gICAgICAgIGlmIChjdWUtPnRyYWNr
KCktPm1vZGUoKSA9PSBUZXh0VHJhY2tNb2RlOjpEaXNhYmxlZCkKKyAgICAgICAgaWYgKGN1ZS0+
dHJhY2soKS0+bW9kZSgpID09IFRleHRUcmFjazo6TW9kZTo6RGlzYWJsZWQpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAogICAgICAgICBWVFRSZWdpb24qIHJlZ2lvbiA9IGN1ZS0+dHJhY2soKS0+
cmVnaW9ucygpLT5nZXRSZWdpb25CeUlkKGN1ZS0+cmVnaW9uSWQoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5jcHAKaW5kZXggM2MxMGE0NGRkNzI0NGU0
OGU3ZmNmZjNiMDMzOWU5NWQ2ZTJiNjgxMS4uZjA2Mjg2MmI0NWNkOTQwNjg5MGZlN2Q1MDE0ZWYy
MzdkZmYxMzg1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRU
ZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRy
YWNrLmNwcApAQCAtODksMjcgKzg5LDI3IEBAIHZvaWQgSW5iYW5kVGV4dFRyYWNrOjpzZXRQcml2
YXRlKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4gdHJhY2tQcml2YXRlCiAgICAg
dXBkYXRlS2luZEZyb21Qcml2YXRlKCk7CiB9CiAKLXZvaWQgSW5iYW5kVGV4dFRyYWNrOjpzZXRN
b2RlKFRleHRUcmFja01vZGUgbW9kZSkKK3ZvaWQgSW5iYW5kVGV4dFRyYWNrOjpzZXRNb2RlKE1v
ZGUgbW9kZSkKIHsKICAgICBUZXh0VHJhY2s6OnNldE1vZGUobW9kZSk7CiAgICAgc2V0TW9kZUlu
dGVybmFsKG1vZGUpOwogfQogCi1zdGF0aWMgaW5saW5lIEluYmFuZFRleHRUcmFja1ByaXZhdGU6
Ok1vZGUgdG9Qcml2YXRlKFRleHRUcmFja01vZGUgbW9kZSkKK3N0YXRpYyBpbmxpbmUgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZTo6TW9kZSB0b1ByaXZhdGUoVGV4dFRyYWNrOjpNb2RlIG1vZGUpCiB7
CiAgICAgc3dpdGNoIChtb2RlKSB7Ci0gICAgY2FzZSBUZXh0VHJhY2tNb2RlOjpEaXNhYmxlZDoK
KyAgICBjYXNlIFRleHRUcmFjazo6TW9kZTo6RGlzYWJsZWQ6CiAgICAgICAgIHJldHVybiBJbmJh
bmRUZXh0VHJhY2tQcml2YXRlOjpEaXNhYmxlZDsKLSAgICBjYXNlIFRleHRUcmFja01vZGU6Okhp
ZGRlbjoKKyAgICBjYXNlIFRleHRUcmFjazo6TW9kZTo6SGlkZGVuOgogICAgICAgICByZXR1cm4g
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6SGlkZGVuOwotICAgIGNhc2UgVGV4dFRyYWNrTW9kZTo6
U2hvd2luZzoKKyAgICBjYXNlIFRleHRUcmFjazo6TW9kZTo6U2hvd2luZzoKICAgICAgICAgcmV0
dXJuIEluYmFuZFRleHRUcmFja1ByaXZhdGU6OlNob3dpbmc7CiAgICAgfQogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpEaXNhYmxl
ZDsKIH0KIAotdm9pZCBJbmJhbmRUZXh0VHJhY2s6OnNldE1vZGVJbnRlcm5hbChUZXh0VHJhY2tN
b2RlIG1vZGUpCit2b2lkIEluYmFuZFRleHRUcmFjazo6c2V0TW9kZUludGVybmFsKE1vZGUgbW9k
ZSkKIHsKICAgICBtX3ByaXZhdGUtPnNldE1vZGUodG9Qcml2YXRlKG1vZGUpKTsKIH0KQEAgLTE5
NiwyMiArMTk2LDIyIEBAIHZvaWQgSW5iYW5kVGV4dFRyYWNrOjp1cGRhdGVLaW5kRnJvbVByaXZh
dGUoKQogewogICAgIHN3aXRjaCAobV9wcml2YXRlLT5raW5kKCkpIHsKICAgICBjYXNlIEluYmFu
ZFRleHRUcmFja1ByaXZhdGU6OlN1YnRpdGxlczoKLSAgICAgICAgc2V0S2luZChUZXh0VHJhY2tL
aW5kOjpTdWJ0aXRsZXMpOworICAgICAgICBzZXRLaW5kKEtpbmQ6OlN1YnRpdGxlcyk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6Q2FwdGlvbnM6Ci0g
ICAgICAgIHNldEtpbmQoVGV4dFRyYWNrS2luZDo6Q2FwdGlvbnMpOworICAgICAgICBzZXRLaW5k
KEtpbmQ6OkNhcHRpb25zKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlOjpEZXNjcmlwdGlvbnM6Ci0gICAgICAgIHNldEtpbmQoVGV4dFRyYWNrS2luZDo6
RGVzY3JpcHRpb25zKTsKKyAgICAgICAgc2V0S2luZChLaW5kOjpEZXNjcmlwdGlvbnMpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIEluYmFuZFRleHRUcmFja1ByaXZhdGU6OkNoYXB0ZXJzOgot
ICAgICAgICBzZXRLaW5kKFRleHRUcmFja0tpbmQ6OkNoYXB0ZXJzKTsKKyAgICAgICAgc2V0S2lu
ZChLaW5kOjpDaGFwdGVycyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZTo6TWV0YWRhdGE6Ci0gICAgICAgIHNldEtpbmQoVGV4dFRyYWNrS2luZDo6TWV0
YWRhdGEpOworICAgICAgICBzZXRLaW5kKEtpbmQ6Ok1ldGFkYXRhKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpGb3JjZWQ6Ci0gICAgICAgIHNldEtp
bmQoVGV4dFRyYWNrS2luZDo6Rm9yY2VkKTsKKyAgICAgICAgc2V0S2luZChLaW5kOjpGb3JjZWQp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIEluYmFuZFRleHRUcmFja1ByaXZhdGU6Ok5vbmU6
CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5i
YW5kVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFj
ay5oCmluZGV4IGEzYWEwMTAxNjE1YjY2ODljNzk1NWRiNmI1OGM3NjQzMTVlNmI2MmIuLmU1Zjhk
MmI2ZDFiZmQ4NTYzYWFmMzYzZjlmYWVjMWVlODgzOTc5ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBjb250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMoKSBjb25zdCBvdmVycmlkZTsKICAg
ICBib29sIGlzTWFpblByb2dyYW1Db250ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBp
c0Vhc3lUb1JlYWQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIHNldE1vZGUoVGV4dFRyYWNr
TW9kZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRNb2RlKE1vZGUpIG92ZXJyaWRlOwogICAgIHNp
emVfdCBpbmJhbmRUcmFja0luZGV4KCk7CiAKICAgICBBdG9taWNTdHJpbmcgaW5CYW5kTWV0YWRh
dGFUcmFja0Rpc3BhdGNoVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwpAQCAtNTUsNyArNTUsNyBAQCBw
dWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSW5iYW5kVGV4dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBUZXh0VHJhY2tDbGllbnQqLCBQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZh
dGU+KTsKIAotICAgIHZvaWQgc2V0TW9kZUludGVybmFsKFRleHRUcmFja01vZGUpOworICAgIHZv
aWQgc2V0TW9kZUludGVybmFsKE1vZGUpOwogICAgIHZvaWQgdXBkYXRlS2luZEZyb21Qcml2YXRl
KCk7CiAKICAgICBSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4gbV9wcml2YXRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCmluZGV4IGE3ZDgxYmU3MTdkYzE1ZmJm
YTg5NmJlNjU2M2FhYmJmNDc2MDYwOWQuLjMxODg3ODFkYmY1ZjQ5NTAyMTc0NGEwNDM4YmM3YTdi
MjM5MzBjYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKQEAgLTEw
NCwxNSArMTA0LDE1IEBAIFRleHRUcmFjazo6VGV4dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIFRleHRUcmFja0NsaWVudCogY2xpZW50LCBjCiAgICAgLCBtX3JlbmRlcmVk
VHJhY2tJbmRleChpbnZhbGlkVHJhY2tJbmRleCkKIHsKICAgICBpZiAoa2luZCA9PSBjYXB0aW9u
c0tleXdvcmQoKSkKLSAgICAgICAgbV9raW5kID0gVGV4dFRyYWNrS2luZDo6Q2FwdGlvbnM7Cisg
ICAgICAgIG1fa2luZCA9IEtpbmQ6OkNhcHRpb25zOwogICAgIGVsc2UgaWYgKGtpbmQgPT0gY2hh
cHRlcnNLZXl3b3JkKCkpCi0gICAgICAgIG1fa2luZCA9IFRleHRUcmFja0tpbmQ6OkNoYXB0ZXJz
OworICAgICAgICBtX2tpbmQgPSBLaW5kOjpDaGFwdGVyczsKICAgICBlbHNlIGlmIChraW5kID09
IGRlc2NyaXB0aW9uc0tleXdvcmQoKSkKLSAgICAgICAgbV9raW5kID0gVGV4dFRyYWNrS2luZDo6
RGVzY3JpcHRpb25zOworICAgICAgICBtX2tpbmQgPSBLaW5kOjpEZXNjcmlwdGlvbnM7CiAgICAg
ZWxzZSBpZiAoa2luZCA9PSBmb3JjZWRLZXl3b3JkKCkpCi0gICAgICAgIG1fa2luZCA9IFRleHRU
cmFja0tpbmQ6OkZvcmNlZDsKKyAgICAgICAgbV9raW5kID0gS2luZDo6Rm9yY2VkOwogICAgIGVs
c2UgaWYgKGtpbmQgPT0gbWV0YWRhdGFLZXl3b3JkKCkpCi0gICAgICAgIG1fa2luZCA9IFRleHRU
cmFja0tpbmQ6Ok1ldGFkYXRhOworICAgICAgICBtX2tpbmQgPSBLaW5kOjpNZXRhZGF0YTsKIH0K
IAogVGV4dFRyYWNrOjp+VGV4dFRyYWNrKCkKQEAgLTEzMiw3ICsxMzIsNyBAQCBUZXh0VHJhY2s6
On5UZXh0VHJhY2soKQogCiBib29sIFRleHRUcmFjazo6ZW5hYmxlZCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fbW9kZSAhPSBUZXh0VHJhY2tNb2RlOjpEaXNhYmxlZDsKKyAgICByZXR1cm4gbV9t
b2RlICE9IE1vZGU6OkRpc2FibGVkOwogfQogCiBib29sIFRleHRUcmFjazo6aXNWYWxpZEtpbmRL
ZXl3b3JkKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCkBAIC0xNTYsMjQgKzE1NiwyNCBAQCBi
b29sIFRleHRUcmFjazo6aXNWYWxpZEtpbmRLZXl3b3JkKGNvbnN0IEF0b21pY1N0cmluZyYgdmFs
dWUpCiBjb25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFjazo6a2luZEtleXdvcmQoKSBjb25zdAog
ewogICAgIHN3aXRjaCAobV9raW5kKSB7Ci0gICAgY2FzZSBUZXh0VHJhY2tLaW5kOjpDYXB0aW9u
czoKKyAgICBjYXNlIEtpbmQ6OkNhcHRpb25zOgogICAgICAgICByZXR1cm4gY2FwdGlvbnNLZXl3
b3JkKCk7Ci0gICAgY2FzZSBUZXh0VHJhY2tLaW5kOjpDaGFwdGVyczoKKyAgICBjYXNlIEtpbmQ6
OkNoYXB0ZXJzOgogICAgICAgICByZXR1cm4gY2hhcHRlcnNLZXl3b3JkKCk7Ci0gICAgY2FzZSBU
ZXh0VHJhY2tLaW5kOjpEZXNjcmlwdGlvbnM6CisgICAgY2FzZSBLaW5kOjpEZXNjcmlwdGlvbnM6
CiAgICAgICAgIHJldHVybiBkZXNjcmlwdGlvbnNLZXl3b3JkKCk7Ci0gICAgY2FzZSBUZXh0VHJh
Y2tLaW5kOjpGb3JjZWQ6CisgICAgY2FzZSBLaW5kOjpGb3JjZWQ6CiAgICAgICAgIHJldHVybiBm
b3JjZWRLZXl3b3JkKCk7Ci0gICAgY2FzZSBUZXh0VHJhY2tLaW5kOjpNZXRhZGF0YToKKyAgICBj
YXNlIEtpbmQ6Ok1ldGFkYXRhOgogICAgICAgICByZXR1cm4gbWV0YWRhdGFLZXl3b3JkKCk7Ci0g
ICAgY2FzZSBUZXh0VHJhY2tLaW5kOjpTdWJ0aXRsZXM6CisgICAgY2FzZSBLaW5kOjpTdWJ0aXRs
ZXM6CiAgICAgICAgIHJldHVybiBzdWJ0aXRsZXNLZXl3b3JkKCk7CiAgICAgfQogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBzdWJ0aXRsZXNLZXl3b3JkKCk7CiB9CiAKLXZv
aWQgVGV4dFRyYWNrOjpzZXRLaW5kKFRleHRUcmFja0tpbmQgbmV3S2luZCkKK3ZvaWQgVGV4dFRy
YWNrOjpzZXRLaW5kKEtpbmQgbmV3S2luZCkKIHsKICAgICBhdXRvIG9sZEtpbmQgPSBtX2tpbmQ7
CiAKQEAgLTIwMywyOCArMjAzLDI4IEBAIHZvaWQgVGV4dFRyYWNrOjpzZXRLaW5kKFRleHRUcmFj
a0tpbmQgbmV3S2luZCkKIHZvaWQgVGV4dFRyYWNrOjpzZXRLaW5kS2V5d29yZElnbm9yaW5nQVND
SUlDYXNlKFN0cmluZ1ZpZXcga2V5d29yZCkKIHsKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2Uoa2V5d29yZCwgImNhcHRpb25zIikpCi0gICAgICAgIHNldEtpbmQoVGV4dFRy
YWNrS2luZDo6Q2FwdGlvbnMpOworICAgICAgICBzZXRLaW5kKEtpbmQ6OkNhcHRpb25zKTsKICAg
ICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShrZXl3b3JkLCAiY2hhcHRl
cnMiKSkKLSAgICAgICAgc2V0S2luZChUZXh0VHJhY2tLaW5kOjpDaGFwdGVycyk7CisgICAgICAg
IHNldEtpbmQoS2luZDo6Q2hhcHRlcnMpOwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKGtleXdvcmQsICJkZXNjcmlwdGlvbnMiKSkKLSAgICAgICAgc2V0S2luZChU
ZXh0VHJhY2tLaW5kOjpEZXNjcmlwdGlvbnMpOworICAgICAgICBzZXRLaW5kKEtpbmQ6OkRlc2Ny
aXB0aW9ucyk7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoa2V5
d29yZCwgImZvcmNlZCIpKQotICAgICAgICBzZXRLaW5kKFRleHRUcmFja0tpbmQ6OkZvcmNlZCk7
CisgICAgICAgIHNldEtpbmQoS2luZDo6Rm9yY2VkKTsKICAgICBlbHNlIGlmIChlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShrZXl3b3JkLCAibWV0YWRhdGEiKSkKLSAgICAgICAgc2V0S2lu
ZChUZXh0VHJhY2tLaW5kOjpNZXRhZGF0YSk7CisgICAgICAgIHNldEtpbmQoS2luZDo6TWV0YWRh
dGEpOwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGtleXdvcmQs
ICJzdWJ0aXRsZXMiKSkKLSAgICAgICAgc2V0S2luZChUZXh0VHJhY2tLaW5kOjpTdWJ0aXRsZXMp
OworICAgICAgICBzZXRLaW5kKEtpbmQ6OlN1YnRpdGxlcyk7CiAjaWYgIUVOQUJMRShNRURJQV9T
T1VSQ0UpCiAgICAgLy8gRklYTUU6IFRoaXMgcHJlc2VydmVzIHRoZSBiZWhhdmlvciBvZiBhbiBv
bGRlciB2ZXJzaW9uIG9mIHRoaXMgY29kZSBiZWZvcmUgcmVmYWN0b3JpbmcuCiAgICAgLy8gIUVO
QUJMRShNRURJQV9TT1VSQ0UpOiB1bmtub3duIGtleXdvcmRzIGFsbCBnZXQgdHVybmVkIGludG8g
U3VidGl0bGVzLgogICAgIC8vIEVOQUJMRShNRURJQV9TT1VSQ0UpOiB1bmtub3duIGtleXdvcmRz
IGxlYXZlIHRoZSBvbGQgdmFsdWUgZm9yIGtpbmQgdW50b3VjaGVkLgogICAgIC8vIEkgYW0gbm90
IHN1cmUgdGhhdCBlaXRoZXIgb2YgdGhvc2UgaXMgdGhlIGNvcnJlY3QgYmVoYXZpb3I7IHNob3Vs
ZCB0ZXN0IGFuZCBmaXguCiAgICAgZWxzZQotICAgICAgICBzZXRLaW5kKFRleHRUcmFja0tpbmQ6
OlN1YnRpdGxlcyk7CisgICAgICAgIHNldEtpbmQoS2luZDo6U3VidGl0bGVzKTsKICNlbmRpZgog
fQogCi12b2lkIFRleHRUcmFjazo6c2V0TW9kZShUZXh0VHJhY2tNb2RlIG1vZGUpCit2b2lkIFRl
eHRUcmFjazo6c2V0TW9kZShNb2RlIG1vZGUpCiB7CiAgICAgLy8gT24gc2V0dGluZywgaWYgdGhl
IG5ldyB2YWx1ZSBpc24ndCBlcXVhbCB0byB3aGF0IHRoZSBhdHRyaWJ1dGUgd291bGQgY3VycmVu
dGx5CiAgICAgLy8gcmV0dXJuLCB0aGUgbmV3IHZhbHVlIG11c3QgYmUgcHJvY2Vzc2VkIGFzIGZv
bGxvd3MgLi4uCkBAIC0yMzMsMTAgKzIzMywxMCBAQCB2b2lkIFRleHRUcmFjazo6c2V0TW9kZShU
ZXh0VHJhY2tNb2RlIG1vZGUpCiAKICAgICAvLyBJZiBtb2RlIGNoYW5nZXMgdG8gZGlzYWJsZWQs
IHJlbW92ZSB0aGlzIHRyYWNrJ3MgY3VlcyBmcm9tIHRoZSBjbGllbnQKICAgICAvLyBiZWNhdXNl
IHRoZXkgd2lsbCBubyBsb25nZXIgYmUgYWNjZXNzaWJsZSBmcm9tIHRoZSBjdWVzKCkgZnVuY3Rp
b24uCi0gICAgaWYgKG1vZGUgPT0gVGV4dFRyYWNrTW9kZTo6RGlzYWJsZWQgJiYgbV9jbGllbnQg
JiYgbV9jdWVzKQorICAgIGlmIChtb2RlID09IE1vZGU6OkRpc2FibGVkICYmIG1fY2xpZW50ICYm
IG1fY3VlcykKICAgICAgICAgbV9jbGllbnQtPnRleHRUcmFja1JlbW92ZUN1ZXModGhpcywgbV9j
dWVzLmdldCgpKTsKIAotICAgIGlmIChtb2RlICE9IFRleHRUcmFja01vZGU6OlNob3dpbmcgJiYg
bV9jdWVzKSB7CisgICAgaWYgKG1vZGUgIT0gTW9kZTo6U2hvd2luZyAmJiBtX2N1ZXMpIHsKICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2N1ZXMtPmxlbmd0aCgpOyArK2kpIHsKICAg
ICAgICAgICAgIFRleHRUcmFja0N1ZSogY3VlID0gbV9jdWVzLT5pdGVtKGkpOwogICAgICAgICAg
ICAgaWYgKGN1ZS0+aXNSZW5kZXJhYmxlKCkpCkBAIC0yNTcsNyArMjU3LDcgQEAgVGV4dFRyYWNr
Q3VlTGlzdCogVGV4dFRyYWNrOjpjdWVzKCkKICAgICAvLyBPdGhlcndpc2UsIGl0IG11c3QgcmV0
dXJuIG51bGwuIFdoZW4gYW4gb2JqZWN0IGlzIHJldHVybmVkLCB0aGUKICAgICAvLyBzYW1lIG9i
amVjdCBtdXN0IGJlIHJldHVybmVkIGVhY2ggdGltZS4KICAgICAvLyBodHRwOi8vd3d3LndoYXR3
Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNkb20tdGV4dHRyYWNrLWN1ZXMKLSAg
ICBpZiAobV9tb2RlID09IFRleHRUcmFja01vZGU6OkRpc2FibGVkKQorICAgIGlmIChtX21vZGUg
PT0gTW9kZTo6RGlzYWJsZWQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiAm
ZW5zdXJlVGV4dFRyYWNrQ3VlTGlzdCgpOwogfQpAQCAtMjg0LDcgKzI4NCw3IEBAIFRleHRUcmFj
a0N1ZUxpc3QqIFRleHRUcmFjazo6YWN0aXZlQ3VlcygpIGNvbnN0CiAgICAgLy8gb3JkZXIuIE90
aGVyd2lzZSwgaXQgbXVzdCByZXR1cm4gbnVsbC4gV2hlbiBhbiBvYmplY3QgaXMgcmV0dXJuZWQs
IHRoZQogICAgIC8vIHNhbWUgb2JqZWN0IG11c3QgYmUgcmV0dXJuZWQgZWFjaCB0aW1lLgogICAg
IC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI2Rv
bS10ZXh0dHJhY2stYWN0aXZlY3VlcwotICAgIGlmICghbV9jdWVzIHx8IG1fbW9kZSA9PSBUZXh0
VHJhY2tNb2RlOjpEaXNhYmxlZCkKKyAgICBpZiAoIW1fY3VlcyB8fCBtX21vZGUgPT0gTW9kZTo6
RGlzYWJsZWQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBtX2N1ZXMtPmFj
dGl2ZUN1ZXMoKTsKIH0KQEAgLTMwMiw3ICszMDIsNyBAQCB2b2lkIFRleHRUcmFjazo6YWRkQ3Vl
KFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiBwcnBDdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAg
IC8vIElmIGEgRGF0YUN1ZSBpcyBhZGRlZCB0byBhIFRleHRUcmFjayB2aWEgdGhlIGFkZEN1ZSgp
IG1ldGhvZCBidXQgdGhlIHRleHQgdHJhY2sgZG9lcyBub3QgaGF2ZSBpdHMgdGV4dAogICAgIC8v
IHRyYWNrIGtpbmQgc2V0IHRvIG1ldGFkYXRhLCB0aHJvdyBhIEludmFsaWROb2RlVHlwZUVycm9y
IGV4Y2VwdGlvbiBhbmQgZG9uJ3QgYWRkIHRoZSBjdWUgdG8gdGhlIFRleHRUcmFja0xpc3QKICAg
ICAvLyBvZiB0aGUgVGV4dFRyYWNrLgotICAgIGlmIChjdWUtPmN1ZVR5cGUoKSA9PSBUZXh0VHJh
Y2tDdWU6OkRhdGEgJiYgbV9raW5kICE9IFRleHRUcmFja0tpbmQ6Ok1ldGFkYXRhKSB7CisgICAg
aWYgKGN1ZS0+Y3VlVHlwZSgpID09IFRleHRUcmFja0N1ZTo6RGF0YSAmJiBtX2tpbmQgIT0gS2lu
ZDo6TWV0YWRhdGEpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX05PREVfVFlQRV9FUlI7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC0zNzIsNyArMzcyLDcgQEAgVlRUUmVnaW9uTGlzdCogVGV4
dFRyYWNrOjpyZWdpb25zKCkKICAgICAvLyB0aGUgdGV4dCB0cmFjayBsaXN0IG9mIHJlZ2lvbnMg
b2YgdGhlIHRleHQgdHJhY2suIE90aGVyd2lzZSwgaXQgbXVzdAogICAgIC8vIHJldHVybiBudWxs
LiBXaGVuIGFuIG9iamVjdCBpcyByZXR1cm5lZCwgdGhlIHNhbWUgb2JqZWN0IG11c3QgYmUgcmV0
dXJuZWQKICAgICAvLyBlYWNoIHRpbWUuCi0gICAgaWYgKG1fbW9kZSA9PSBUZXh0VHJhY2tNb2Rl
OjpEaXNhYmxlZCkKKyAgICBpZiAobV9tb2RlID09IE1vZGU6OkRpc2FibGVkKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gJmVuc3VyZVZUVFJlZ2lvbkxpc3QoKTsKIH0KQEAg
LTQ2Nyw4ICs0NjcsOCBAQCB2b2lkIFRleHRUcmFjazo6aW52YWxpZGF0ZVRyYWNrSW5kZXgoKQog
CiBib29sIFRleHRUcmFjazo6aXNSZW5kZXJlZCgpCiB7Ci0gICAgcmV0dXJuIChtX2tpbmQgPT0g
VGV4dFRyYWNrS2luZDo6Q2FwdGlvbnMgfHwgbV9raW5kID09IFRleHRUcmFja0tpbmQ6OlN1YnRp
dGxlcyB8fCBtX2tpbmQgPT0gVGV4dFRyYWNrS2luZDo6Rm9yY2VkKQotICAgICAgICAmJiBtX21v
ZGUgPT0gVGV4dFRyYWNrTW9kZTo6U2hvd2luZzsKKyAgICByZXR1cm4gKG1fa2luZCA9PSBLaW5k
OjpDYXB0aW9ucyB8fCBtX2tpbmQgPT0gS2luZDo6U3VidGl0bGVzIHx8IG1fa2luZCA9PSBLaW5k
OjpGb3JjZWQpCisgICAgICAgICYmIG1fbW9kZSA9PSBNb2RlOjpTaG93aW5nOwogfQogCiBUZXh0
VHJhY2tDdWVMaXN0JiBUZXh0VHJhY2s6OmVuc3VyZVRleHRUcmFja0N1ZUxpc3QoKQpAQCAtNTUz
LDEyICs1NTMsMTIgQEAgYm9vbCBUZXh0VHJhY2s6OmlzTWFpblByb2dyYW1Db250ZW50KCkgY29u
c3QKICAgICAvLyBkaXJlY3RvcnMgY29tbWVudGFyeSBpcyBub3QgIm1haW4gcHJvZ3JhbSIgYmVj
YXVzZSBpdCBpcyBub3QgZXNzZW50aWFsIGZvciB0aGUgcHJlc2VudGF0aW9uLiBIVE1MNSBkb2Vz
bid0IGhhdmUKICAgICAvLyBhIHdheSB0byBleHByZXNzIHRoaXMgaW4gYSBtYWNoaW5lLXJlYWJs
ZSBmb3JtLCBpdCBpcyB0eXBpY2FsbHkgZG9uZSB3aXRoIHRoZSB0cmFjayBsYWJlbCwgc28gd2Ug
YXNzdW1lIHRoYXQgY2FwdGlvbgogICAgIC8vIHRyYWNrcyBhcmUgbWFpbiBjb250ZW50IGFuZCBh
bGwgb3RoZXIgdHJhY2sgdHlwZXMgYXJlIG5vdC4KLSAgICByZXR1cm4gbV9raW5kID09IFRleHRU
cmFja0tpbmQ6OkNhcHRpb25zOworICAgIHJldHVybiBtX2tpbmQgPT0gS2luZDo6Q2FwdGlvbnM7
CiB9CiAKIGJvb2wgVGV4dFRyYWNrOjpjb250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMoKSBjb25z
dAogewotICAgIHJldHVybiBtX2tpbmQgPT0gVGV4dFRyYWNrS2luZDo6Rm9yY2VkOworICAgIHJl
dHVybiBtX2tpbmQgPT0gS2luZDo6Rm9yY2VkOwogfQogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJD
RSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oCmluZGV4IDVjYjI0OTA1MGY4ZTFi
NjM5NTgzOTcwMDRmMTU2NDE3MTBkZmQ2YzAuLjc4MThkMjI0N2FhZDE2YTU1MzNjMzMzNjM0MGJk
ZDhmYWVlYmU4NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRy
YWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaApAQCAtNDIs
OSArNDIsNiBAQCBjbGFzcyBUZXh0VHJhY2tDdWVMaXN0OwogY2xhc3MgVlRUUmVnaW9uOwogY2xh
c3MgVlRUUmVnaW9uTGlzdDsKIAotZW51bSBjbGFzcyBUZXh0VHJhY2tLaW5kIHsgU3VidGl0bGVz
LCBDYXB0aW9ucywgRGVzY3JpcHRpb25zLCBDaGFwdGVycywgTWV0YWRhdGEsIEZvcmNlZCB9Owot
ZW51bSBjbGFzcyBUZXh0VHJhY2tNb2RlIHsgRGlzYWJsZWQsIEhpZGRlbiwgU2hvd2luZyB9Owot
CiBjbGFzcyBUZXh0VHJhY2tDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgflRleHRUcmFj
a0NsaWVudCgpIHsgfQpAQCAtNzcsMTkgKzc0LDIxIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29u
c3QgQXRvbWljU3RyaW5nJiBoaWRkZW5LZXl3b3JkKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21p
Y1N0cmluZyYgc2hvd2luZ0tleXdvcmQoKTsKIAotICAgIFRleHRUcmFja0tpbmQga2luZCgpIGNv
bnN0OwotICAgIHZvaWQgc2V0S2luZChUZXh0VHJhY2tLaW5kKTsKKyAgICBlbnVtIGNsYXNzIEtp
bmQgeyBTdWJ0aXRsZXMsIENhcHRpb25zLCBEZXNjcmlwdGlvbnMsIENoYXB0ZXJzLCBNZXRhZGF0
YSwgRm9yY2VkIH07CisgICAgS2luZCBraW5kKCkgY29uc3Q7CisgICAgdm9pZCBzZXRLaW5kKEtp
bmQpOwogCi0gICAgVGV4dFRyYWNrS2luZCBraW5kRm9yQmluZGluZ3MoKSBjb25zdDsKLSAgICB2
b2lkIHNldEtpbmRGb3JCaW5kaW5ncyhUZXh0VHJhY2tLaW5kKTsKKyAgICBLaW5kIGtpbmRGb3JC
aW5kaW5ncygpIGNvbnN0OworICAgIHZvaWQgc2V0S2luZEZvckJpbmRpbmdzKEtpbmQpOwogCiAg
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBraW5kS2V5d29yZCgpIGNvbnN0OwogICAgIHZvaWQgc2V0
S2luZEtleXdvcmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3KTsKIAogICAgIHZpcnR1YWwg
QXRvbWljU3RyaW5nIGluQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5cGUoKSBjb25zdCB7IHJl
dHVybiBlbXB0eVN0cmluZygpOyB9CiAKLSAgICBUZXh0VHJhY2tNb2RlIG1vZGUoKSBjb25zdDsK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0TW9kZShUZXh0VHJhY2tNb2RlKTsKKyAgICBlbnVtIGNsYXNz
IE1vZGUgeyBEaXNhYmxlZCwgSGlkZGVuLCBTaG93aW5nIH07CisgICAgTW9kZSBtb2RlKCkgY29u
c3Q7CisgICAgdmlydHVhbCB2b2lkIHNldE1vZGUoTW9kZSk7CiAKICAgICBlbnVtIFJlYWRpbmVz
c1N0YXRlIHsgTm90TG9hZGVkID0gMCwgTG9hZGluZyA9IDEsIExvYWRlZCA9IDIsIEZhaWxlZFRv
TG9hZCA9IDMgfTsKICAgICBSZWFkaW5lc3NTdGF0ZSByZWFkaW5lc3NTdGF0ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVhZGluZXNzU3RhdGU7IH0KQEAgLTE2NCw4ICsxNjMsOCBAQCBwcml2YXRlOgog
ICAgIFRleHRUcmFja0N1ZUxpc3QmIGVuc3VyZVRleHRUcmFja0N1ZUxpc3QoKTsKIAogICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKLSAgICBUZXh0
VHJhY2tNb2RlIG1fbW9kZSB7IFRleHRUcmFja01vZGU6OkRpc2FibGVkIH07Ci0gICAgVGV4dFRy
YWNrS2luZCBtX2tpbmQgeyBUZXh0VHJhY2tLaW5kOjpTdWJ0aXRsZXMgfTsKKyAgICBNb2RlIG1f
bW9kZSB7IE1vZGU6OkRpc2FibGVkIH07CisgICAgS2luZCBtX2tpbmQgeyBLaW5kOjpTdWJ0aXRs
ZXMgfTsKICAgICBUZXh0VHJhY2tDbGllbnQqIG1fY2xpZW50OwogICAgIFRleHRUcmFja1R5cGUg
bV90cmFja1R5cGU7CiAgICAgUmVhZGluZXNzU3RhdGUgbV9yZWFkaW5lc3NTdGF0ZSB7IE5vdExv
YWRlZCB9OwpAQCAtMTgwLDI0ICsxNzksMjQgQEAgaW5saW5lIFRleHRUcmFjayogdG9UZXh0VHJh
Y2soVHJhY2tCYXNlKiB0cmFjaykKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dFRyYWNrKj4o
dHJhY2spOwogfQogCi1pbmxpbmUgVGV4dFRyYWNrTW9kZSBUZXh0VHJhY2s6Om1vZGUoKSBjb25z
dAoraW5saW5lIGF1dG8gVGV4dFRyYWNrOjptb2RlKCkgY29uc3QgLT4gTW9kZQogewogICAgIHJl
dHVybiBtX21vZGU7CiB9CiAKLWlubGluZSBUZXh0VHJhY2tLaW5kIFRleHRUcmFjazo6a2luZCgp
IGNvbnN0CitpbmxpbmUgYXV0byBUZXh0VHJhY2s6OmtpbmQoKSBjb25zdCAtPiBLaW5kCiB7CiAg
ICAgcmV0dXJuIG1fa2luZDsKIH0KIAotaW5saW5lIFRleHRUcmFja0tpbmQgVGV4dFRyYWNrOjpr
aW5kRm9yQmluZGluZ3MoKSBjb25zdAoraW5saW5lIGF1dG8gVGV4dFRyYWNrOjpraW5kRm9yQmlu
ZGluZ3MoKSBjb25zdCAtPiBLaW5kCiB7CiAgICAgcmV0dXJuIGtpbmQoKTsKIH0KIAogI2lmICFF
TkFCTEUoTUVESUFfU09VUkNFKQogCi1pbmxpbmUgdm9pZCBUZXh0VHJhY2s6OnNldEtpbmRGb3JC
aW5kaW5ncyhUZXh0VHJhY2tLaW5kKQoraW5saW5lIHZvaWQgVGV4dFRyYWNrOjpzZXRLaW5kRm9y
QmluZGluZ3MoS2luZCkKIHsKICAgICAvLyBGSVhNRTogV2UgYXJlIHVzaW5nIGtpbmRGb3JCaW5k
aW5ncyBvbmx5IHRvIGltcGxlbWVudCB0aGlzIGVtcHR5IGZ1bmN0aW9uLCBwcmVzZXJ2aW5nIHRo
ZQogICAgIC8vIGJlaGF2aW9yIG9mIGRvaW5nIG5vdGhpbmcgd2hlbiB0cnlpbmcgdG8gc2V0IHRo
ZSBraW5kLCBvcmlnaW5hbGx5IGltcGxlbWVudGVkIGluIGEgY3VzdG9tIHNldHRlci4KQEAgLTIw
Niw3ICsyMDUsNyBAQCBpbmxpbmUgdm9pZCBUZXh0VHJhY2s6OnNldEtpbmRGb3JCaW5kaW5ncyhU
ZXh0VHJhY2tLaW5kKQogCiAjZWxzZQogCi1pbmxpbmUgdm9pZCBUZXh0VHJhY2s6OnNldEtpbmRG
b3JCaW5kaW5ncyhUZXh0VHJhY2tLaW5kIGtpbmQpCitpbmxpbmUgdm9pZCBUZXh0VHJhY2s6OnNl
dEtpbmRGb3JCaW5kaW5ncyhLaW5kIGtpbmQpCiB7CiAgICAgc2V0S2luZChraW5kKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAppbmRleCA0MjczNmZiM2I5
ZTRkMmUzMzkwNjNjZjdkNjk3Mjc2YzBmMzMxN2Q5Li5iN2VlMjI1ZjVmMThkNjZmNTY5YmZhY2E4
MWFhMTZlZGY4MDk4YWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFja0N1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tD
dWUuY3BwCkBAIC0xOTMsNyArMTkzLDcgQEAgdm9pZCBUZXh0VHJhY2tDdWU6OmludmFsaWRhdGVD
dWVJbmRleCgpCiBib29sIFRleHRUcmFja0N1ZTo6ZGlzcGF0Y2hFdmVudChFdmVudCYgZXZlbnQp
CiB7CiAgICAgLy8gV2hlbiBhIFRleHRUcmFjaydzIG1vZGUgaXMgZGlzYWJsZWQ6IG5vIGN1ZXMg
YXJlIGFjdGl2ZSwgbm8gZXZlbnRzIGZpcmVkLgotICAgIGlmICghdHJhY2soKSB8fCB0cmFjaygp
LT5tb2RlKCkgPT0gVGV4dFRyYWNrTW9kZTo6RGlzYWJsZWQpCisgICAgaWYgKCF0cmFjaygpIHx8
IHRyYWNrKCktPm1vZGUoKSA9PSBUZXh0VHJhY2s6Ok1vZGU6OkRpc2FibGVkKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gRXZlbnRUYXJnZXQ6OmRpc3BhdGNoRXZlbnQoZXZl
bnQpOwpAQCAtMjAxLDcgKzIwMSw3IEBAIGJvb2wgVGV4dFRyYWNrQ3VlOjpkaXNwYXRjaEV2ZW50
KEV2ZW50JiBldmVudCkKIAogYm9vbCBUZXh0VHJhY2tDdWU6OmlzQWN0aXZlKCkKIHsKLSAgICBy
ZXR1cm4gbV9pc0FjdGl2ZSAmJiB0cmFjaygpICYmIHRyYWNrKCktPm1vZGUoKSAhPSBUZXh0VHJh
Y2tNb2RlOjpEaXNhYmxlZDsKKyAgICByZXR1cm4gbV9pc0FjdGl2ZSAmJiB0cmFjaygpICYmIHRy
YWNrKCktPm1vZGUoKSAhPSBUZXh0VHJhY2s6Ok1vZGU6OkRpc2FibGVkOwogfQogCiB2b2lkIFRl
eHRUcmFja0N1ZTo6c2V0SXNBY3RpdmUoYm9vbCBhY3RpdmUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAppbmRleCBmZjUxYjNiY2RiNWIyYzgwMzgy
MWI3ODk2NjE2NDIyNTQ1OWQyMDhjLi5kODdjZjllMWZjY2UxMGM0MmMyZDlhZjUyMzNmYzU3ZWZi
MDVlOGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVOZXR3b3JraW5n
Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZU5ldHdvcmtpbmdDb250
ZXh0LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgICAgICBpZiAoIW1fZnJhbWUpCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICByZXR1cm4gbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+cmVmZXJyZXJQb2xpY3koKSA9PSBSZWZlcnJlckhlYWRlclBvbGljeTo6RGVmYXVsdDsK
KyAgICAgICAgcmV0dXJuIG1fZnJhbWUtPmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCkgPT0g
UmVmZXJyZXJQb2xpY3k6OkRlZmF1bHQ7CiAgICAgfQogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmNwcAppbmRleCAxZDA2YzJkZDkx
NTI5ZmVjOTBmZDMwOTMyMDUwYjkyYjJkNjZjMmExLi45MzVjMWZiMGE1NjAxNDMxMWYyMzRmNzhj
ZGFiNzA0ZmI5MjYzZjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25V
c2VyUHJlZmVyZW5jZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQ
cmVmZXJlbmNlcy5jcHAKQEAgLTIxNyw3ICsyMTcsNyBAQCBWZWN0b3I8UmVmUHRyPFRleHRUcmFj
az4+IENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNvcnRlZFRyYWNrTGlzdEZvck1lbnUoVGV4dFRy
YQogICAgIGZvciAodW5zaWduZWQgaSA9IDAsIGxlbmd0aCA9IHRyYWNrTGlzdC0+bGVuZ3RoKCk7
IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICBUZXh0VHJhY2sqIHRyYWNrID0gdHJhY2tMaXN0
LT5pdGVtKGkpOwogICAgICAgICBhdXRvIGtpbmQgPSB0cmFjay0+a2luZCgpOwotICAgICAgICBp
ZiAoa2luZCA9PSBUZXh0VHJhY2tLaW5kOjpDYXB0aW9ucyB8fCBraW5kID09IFRleHRUcmFja0tp
bmQ6OkRlc2NyaXB0aW9ucyB8fCBraW5kID09IFRleHRUcmFja0tpbmQ6OlN1YnRpdGxlcykKKyAg
ICAgICAgaWYgKGtpbmQgPT0gVGV4dFRyYWNrOjpLaW5kOjpDYXB0aW9ucyB8fCBraW5kID09IFRl
eHRUcmFjazo6S2luZDo6RGVzY3JpcHRpb25zIHx8IGtpbmQgPT0gVGV4dFRyYWNrOjpLaW5kOjpT
dWJ0aXRsZXMpCiAgICAgICAgICAgICB0cmFja3NGb3JNZW51LmFwcGVuZCh0cmFjayk7CiAgICAg
fQogCkBAIC0yNjUsNyArMjY1LDcgQEAgVmVjdG9yPFJlZlB0cjxBdWRpb1RyYWNrPj4gQ2FwdGlv
blVzZXJQcmVmZXJlbmNlczo6c29ydGVkVHJhY2tMaXN0Rm9yTWVudShBdWRpb1QKIAogaW50IENh
cHRpb25Vc2VyUHJlZmVyZW5jZXM6OnRleHRUcmFja1NlbGVjdGlvblNjb3JlKFRleHRUcmFjayog
dHJhY2ssIEhUTUxNZWRpYUVsZW1lbnQqKSBjb25zdAogewotICAgIGlmICh0cmFjay0+a2luZCgp
ICE9IFRleHRUcmFja0tpbmQ6OkNhcHRpb25zICYmIHRyYWNrLT5raW5kKCkgIT0gVGV4dFRyYWNr
S2luZDo6U3VidGl0bGVzKQorICAgIGlmICh0cmFjay0+a2luZCgpICE9IFRleHRUcmFjazo6S2lu
ZDo6Q2FwdGlvbnMgJiYgdHJhY2stPmtpbmQoKSAhPSBUZXh0VHJhY2s6OktpbmQ6OlN1YnRpdGxl
cykKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCiAgICAgaWYgKCF1c2VyUHJlZmVyc1N1YnRpdGxl
cygpICYmICF1c2VyUHJlZmVyc0NhcHRpb25zKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCmluZGV4IDNkMTE2ZjliY2Fi
MjJhNzE5ZDJlYmE2NWMyNjE0YWVjMTkwMWVkYzcuLjhiYzAyOWRlN2UzOWI4OWMzNTg2NzJlNmNj
NjEyMmUzYTRhZTVjYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlv
blVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwCkBAIC03MTAsNyArNzEwLDcgQEAgaW50IENhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjp0ZXh0VHJhY2tTZWxlY3Rpb25TY29yZShUZXh0VHJh
Y2sqIHRyYWNrLCBIVE0KICAgICBib29sIGxlZ2FjeU92ZXJyaWRlID0gbWVkaWFFbGVtZW50LT53
ZWJraXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoKTsKICAgICBpZiAoZGlzcGxheU1vZGUgPT0gQWx3
YXlzT24gJiYgKCF1c2VyUHJlZmVyc1N1YnRpdGxlcygpICYmICF1c2VyUHJlZmVyc0NhcHRpb25z
KCkgJiYgIWxlZ2FjeU92ZXJyaWRlKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKHRyYWNr
LT5raW5kKCkgIT0gVGV4dFRyYWNrS2luZDo6Q2FwdGlvbnMgJiYgdHJhY2stPmtpbmQoKSAhPSBU
ZXh0VHJhY2tLaW5kOjpTdWJ0aXRsZXMgJiYgdHJhY2stPmtpbmQoKSAhPSBUZXh0VHJhY2tLaW5k
OjpGb3JjZWQpCisgICAgaWYgKHRyYWNrLT5raW5kKCkgIT0gVGV4dFRyYWNrOjpLaW5kOjpDYXB0
aW9ucyAmJiB0cmFjay0+a2luZCgpICE9IFRleHRUcmFjazo6S2luZDo6U3VidGl0bGVzICYmIHRy
YWNrLT5raW5kKCkgIT0gVGV4dFRyYWNrOjpLaW5kOjpGb3JjZWQpCiAgICAgICAgIHJldHVybiAw
OwogICAgIGlmICghdHJhY2stPmlzTWFpblByb2dyYW1Db250ZW50KCkpCiAgICAgICAgIHJldHVy
biAwOwpAQCAtNzcxLDcgKzc3MSw3IEBAIGludCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFB
Rjo6dGV4dFRyYWNrU2VsZWN0aW9uU2NvcmUoVGV4dFRyYWNrKiB0cmFjaywgSFRNCiAKICAgICBp
ZiAodXNlclByZWZlcnNDYXB0aW9ucygpKSB7CiAgICAgICAgIC8vIFdoZW4gdGhlIHVzZXIgcHJl
ZmVycyBhY2Nlc3NpYmlsaXR5IHRyYWNrcywgcmFuayBpcyBTREgsIHRoZW4gQ0MsIHRoZW4gc3Vi
dGl0bGVzLgotICAgICAgICBpZiAodHJhY2stPmtpbmQoKSA9PSBUZXh0VHJhY2tLaW5kOjpTdWJ0
aXRsZXMpCisgICAgICAgIGlmICh0cmFjay0+a2luZCgpID09IFRleHRUcmFjazo6S2luZDo6U3Vi
dGl0bGVzKQogICAgICAgICAgICAgdHJhY2tTY29yZSA9IDE7CiAgICAgICAgIGVsc2UgaWYgKHRy
YWNrLT5pc0Nsb3NlZENhcHRpb25zKCkpCiAgICAgICAgICAgICB0cmFja1Njb3JlID0gMjsKQEAg
LTc3OSw3ICs3NzksNyBAQCBpbnQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OnRleHRU
cmFja1NlbGVjdGlvblNjb3JlKFRleHRUcmFjayogdHJhY2ssIEhUTQogICAgICAgICAgICAgdHJh
Y2tTY29yZSA9IDM7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gV2hlbiB0aGUgdXNlciBwcmVm
ZXJzIHRyYW5zbGF0aW9uIHRyYWNrcywgcmFuayBpcyBzdWJ0aXRsZXMsIHRoZW4gU0RILCB0aGVu
IENDIHRyYWNrcy4KLSAgICAgICAgaWYgKHRyYWNrLT5raW5kKCkgPT0gVGV4dFRyYWNrS2luZDo6
U3VidGl0bGVzKQorICAgICAgICBpZiAodHJhY2stPmtpbmQoKSA9PSBUZXh0VHJhY2s6OktpbmQ6
OlN1YnRpdGxlcykKICAgICAgICAgICAgIHRyYWNrU2NvcmUgPSAzOwogICAgICAgICBlbHNlIGlm
ICghdHJhY2stPmlzQ2xvc2VkQ2FwdGlvbnMoKSkKICAgICAgICAgICAgIHRyYWNrU2NvcmUgPSAy
OwpAQCAtODY1LDcgKzg2NSw3IEBAIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPj4gQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlc01lZGlhQUY6OnNvcnRlZFRyYWNrTGlzdEZvck1lbnUoCiAgICAgICAgIH0K
IAogICAgICAgICBhdXRvIGtpbmQgPSB0cmFjay0+a2luZCgpOwotICAgICAgICBpZiAoa2luZCAh
PSBUZXh0VHJhY2tLaW5kOjpDYXB0aW9ucyAmJiBraW5kICE9IFRleHRUcmFja0tpbmQ6OkRlc2Ny
aXB0aW9ucyAmJiBraW5kICE9IFRleHRUcmFja0tpbmQ6OlN1YnRpdGxlcykKKyAgICAgICAgaWYg
KGtpbmQgIT0gVGV4dFRyYWNrOjpLaW5kOjpDYXB0aW9ucyAmJiBraW5kICE9IFRleHRUcmFjazo6
S2luZDo6RGVzY3JpcHRpb25zICYmIGtpbmQgIT0gVGV4dFRyYWNrOjpLaW5kOjpTdWJ0aXRsZXMp
CiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAodHJhY2stPmNvbnRhaW5zT25s
eUZvcmNlZFN1YnRpdGxlcygpKSB7CkBAIC04ODEsNyArODgxLDcgQEAgVmVjdG9yPFJlZlB0cjxU
ZXh0VHJhY2s+PiBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6c29ydGVkVHJhY2tMaXN0
Rm9yTWVudSgKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYg
KHRyYWNrLT5tb2RlKCkgPT0gVGV4dFRyYWNrTW9kZTo6U2hvd2luZykgeworICAgICAgICBpZiAo
dHJhY2stPm1vZGUoKSA9PSBUZXh0VHJhY2s6Ok1vZGU6OlNob3dpbmcpIHsKICAgICAgICAgICAg
IExPRyhNZWRpYSwgIkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpzb3J0ZWRUcmFja0xp
c3RGb3JNZW51IC0gYWRkaW5nICclcycgdHJhY2sgd2l0aCBsYW5ndWFnZSAnJXMnIGJlY2F1c2Ug
aXQgaXMgYWxyZWFkeSB2aXNpYmxlIiwgdHJhY2stPmtpbmRLZXl3b3JkKCkuc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSwgbGFuZ3VhZ2UudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBpZiAoIWxh
bmd1YWdlLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBsYW5ndWFnZXNJbmNsdWRlZC5hZGQo
bGFuZ3VhZ2UpOwpAQCAtODkwLDcgKzg5MCw3IEBAIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPj4g
Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OnNvcnRlZFRyYWNrTGlzdEZvck1lbnUoCiAg
ICAgICAgIH0KIAogICAgICAgICBpZiAoIWxhbmd1YWdlLmlzRW1wdHkoKSAmJiB0cmFjay0+aXNN
YWluUHJvZ3JhbUNvbnRlbnQoKSkgewotICAgICAgICAgICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlU
cmFjayA9IHRyYWNrLT5raW5kKCkgPT0gVGV4dFRyYWNrS2luZDo6Q2FwdGlvbnM7CisgICAgICAg
ICAgICBib29sIGlzQWNjZXNzaWJpbGl0eVRyYWNrID0gdHJhY2stPmtpbmQoKSA9PSBUZXh0VHJh
Y2s6OktpbmQ6OkNhcHRpb25zOwogICAgICAgICAgICAgaWYgKHByZWZlcnNBY2Nlc3NpYmlsaXR5
VHJhY2tzKSB7CiAgICAgICAgICAgICAgICAgLy8gSW4gdGhlIGZpcnN0IHBhc3MsIGluY2x1ZGUg
b25seSBjYXB0aW9uIHRyYWNrcyBpZiB0aGUgdXNlciBwcmVmZXJzIGFjY2Vzc2liaWxpdHkgdHJh
Y2tzLgogICAgICAgICAgICAgICAgIGlmICghaXNBY2Nlc3NpYmlsaXR5VHJhY2sgJiYgZmlsdGVy
VHJhY2tMaXN0KSB7CkBAIC05MjYsNyArOTI2LDcgQEAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+
PiBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6c29ydGVkVHJhY2tMaXN0Rm9yTWVudSgK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGF1dG8ga2luZCA9IHRyYWNrLT5raW5k
KCk7Ci0gICAgICAgIGlmIChraW5kICE9IFRleHRUcmFja0tpbmQ6OkNhcHRpb25zICYmIGtpbmQg
IT0gVGV4dFRyYWNrS2luZDo6RGVzY3JpcHRpb25zICYmIGtpbmQgIT0gVGV4dFRyYWNrS2luZDo6
U3VidGl0bGVzKQorICAgICAgICBpZiAoa2luZCAhPSBUZXh0VHJhY2s6OktpbmQ6OkNhcHRpb25z
ICYmIGtpbmQgIT0gVGV4dFRyYWNrOjpLaW5kOjpEZXNjcmlwdGlvbnMgJiYga2luZCAhPSBUZXh0
VHJhY2s6OktpbmQ6OlN1YnRpdGxlcykKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAg
IC8vIEFsbCBjYW5kaWRhdGVzIHdpdGggbm8gbGFuZ3VnZSB3ZXJlIGFkZGVkIHRoZSBmaXJzdCB0
aW1lIHRocm91Z2guCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9s
aWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IDIz
ZGNmMTFjYmVjN2VhYzNlNjVkNzYzYjQxMjVkYmExMjk1MWQ1ZjguLjVkYjI3M2QyZGJlMDcxMGE4
NjExOGU3Y2ViNDM4OWI1MzRmZmI2YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xp
Y3kuY3BwCkBAIC02Niw3ICs2Niw3IEBAIGJvb2wgU2VjdXJpdHlQb2xpY3k6OnNob3VsZEhpZGVS
ZWZlcnJlcihjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKICAgICByZXR1
cm4gIVVSTElzU2VjdXJlVVJMOwogfQogCi1TdHJpbmcgU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRl
UmVmZXJyZXJIZWFkZXIoUmVmZXJyZXJIZWFkZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3ksIGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQorU3RyaW5nIFNlY3VyaXR5UG9saWN5
OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5LCBj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKIHsKICAgICBpZiAocmVmZXJy
ZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CkBAIC03NSwxMSArNzUsMTEg
QEAgU3RyaW5nIFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKFJlZmVycmVy
SGVhZGVyUG9saWN5IHJlZmVycmVyUG9saWMKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAg
ICAgc3dpdGNoIChyZWZlcnJlclBvbGljeSkgewotICAgIGNhc2UgUmVmZXJyZXJIZWFkZXJQb2xp
Y3k6Ok5ldmVyOgorICAgIGNhc2UgUmVmZXJyZXJQb2xpY3k6Ok5ldmVyOgogICAgICAgICByZXR1
cm4gU3RyaW5nKCk7Ci0gICAgY2FzZSBSZWZlcnJlckhlYWRlclBvbGljeTo6QWx3YXlzOgorICAg
IGNhc2UgUmVmZXJyZXJQb2xpY3k6OkFsd2F5czoKICAgICAgICAgcmV0dXJuIHJlZmVycmVyOwot
ICAgIGNhc2UgUmVmZXJyZXJIZWFkZXJQb2xpY3k6Ok9yaWdpbjogeworICAgIGNhc2UgUmVmZXJy
ZXJQb2xpY3k6Ok9yaWdpbjogewogICAgICAgICBTdHJpbmcgb3JpZ2luID0gU2VjdXJpdHlPcmln
aW46OmNyZWF0ZUZyb21TdHJpbmcocmVmZXJyZXIpLT50b1N0cmluZygpOwogICAgICAgICBpZiAo
b3JpZ2luID09ICJudWxsIikKICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTg3LDcg
Kzg3LDcgQEAgU3RyaW5nIFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKFJl
ZmVycmVySGVhZGVyUG9saWN5IHJlZmVycmVyUG9saWMKICAgICAgICAgLy8gdG8gdHVybiBpdCBp
bnRvIGEgY2Fub25pY2FsIFVSTCB3ZSBjYW4gdXNlIGFzIHJlZmVycmVyLgogICAgICAgICByZXR1
cm4gb3JpZ2luICsgIi8iOwogICAgIH0KLSAgICBjYXNlIFJlZmVycmVySGVhZGVyUG9saWN5OjpE
ZWZhdWx0OgorICAgIGNhc2UgUmVmZXJyZXJQb2xpY3k6OkRlZmF1bHQ6CiAgICAgICAgIGJyZWFr
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGlj
eS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5oCmluZGV4IGFiNmU2OGYw
YzU4NzcxOTNmMjA1ZWM0OTQ3YTM3MTA0M2ZiMDE2ODUuLjZjODE4ZmQ2MjBiYTU1MTk4MGNhMGU1
ZGJjNTY1ZmJjNTg5MDQxZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJp
dHlQb2xpY3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmgKQEAg
LTM4LDE0ICszOCwxNCBAQCBjbGFzcyBVUkw7CiAKIGNsYXNzIFNlY3VyaXR5UG9saWN5IHsKIHB1
YmxpYzoKLSAgICAvLyBUcnVlIGlmIHRoZSByZWZlcnJlciBzaG91bGQgYmUgb21pdHRlZCBhY2Nv
cmRpbmcgdG8gUmVmZXJyZXJIZWFkZXJQb2xpY3k6OkRlZmF1bHQuCisgICAgLy8gVHJ1ZSBpZiB0
aGUgcmVmZXJyZXIgc2hvdWxkIGJlIG9taXR0ZWQgYWNjb3JkaW5nIHRvIFJlZmVycmVyUG9saWN5
OjpEZWZhdWx0LgogICAgIC8vIElmIHlvdSBpbnRlbmQgdG8gc2VuZCBhIHJlZmVycmVyIGhlYWRl
ciwgeW91IHNob3VsZCB1c2UgZ2VuZXJhdGVSZWZlcnJlckhlYWRlciBpbnN0ZWFkLgogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIHNob3VsZEhpZGVSZWZlcnJlcihjb25zdCBVUkwmLCBj
b25zdCBTdHJpbmcmIHJlZmVycmVyKTsKIAogICAgIC8vIFJldHVybnMgdGhlIHJlZmVycmVyIG1v
ZGlmaWVkIGFjY29yZGluZyB0byB0aGUgcmVmZXJyZXIgcG9saWN5IGZvciBhCiAgICAgLy8gbmF2
aWdhdGlvbiB0byBhIGdpdmVuIFVSTC4gSWYgdGhlIHJlZmVycmVyIHJldHVybmVkIGlzIGVtcHR5
LCB0aGUKICAgICAvLyByZWZlcnJlciBoZWFkZXIgc2hvdWxkIGJlIG9taXR0ZWQuCi0gICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBnZW5lcmF0ZVJlZmVycmVySGVhZGVyKFJlZmVycmVy
SGVhZGVyUG9saWN5LCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIGdlbmVyYXRlUmVmZXJyZXJIZWFkZXIoUmVmZXJy
ZXJQb2xpY3ksIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpOwogCiAgICAgZW51
bSBMb2NhbExvYWRQb2xpY3kgewogICAgICAgICBBbGxvd0xvY2FsTG9hZHNGb3JBbGwsIC8vIE5v
IHJlc3RyaWN0aW9uIG9uIGxvY2FsIGxvYWRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUmVmZXJyZXJQb2xpY3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlZmVy
cmVyUG9saWN5LmgKaW5kZXggZTUxYzU4MDQ3YjYyMWQ0ZmY3YzA3YjExZDQwNjg5MmNiNGVmNWIy
MC4uODcwYzE2OTg3YzMyNmRhZTA3ODU4ZmQ5YmViOTc0YjRmNDdiZTgxNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVmZXJyZXJQb2xpY3kuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9SZWZlcnJlclBvbGljeS5oCkBAIC0zNyw5ICszNyw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIC8vIEZJWE1FOiBNb3ZlIHRoaXMgd29ya2Fyb3VuZCB0byBhIGdsb2JhbCBs
b2NhdGlvbiwgcGVyaGFwcyBjb25maWcuaDsgbWF5YmUgYSBHVEstc3BlY2lmaWMgbG9jYXRpb24u
CiAjdW5kZWYgQWx3YXlzCiAKLS8vIEZJWE1FOiBNZXJnZSB0aGlzIHdpdGggdGhlIFJlZmVycmVy
UG9saWN5IGRlZmluZWQgaW4gdGhlIEZldGNoIHNwZWNpZmljYXRpb24uCi0vLyBGSVhNRTogUmVu
YW1lIGJhY2sgdG8gUmVmZXJyZXJQb2xpY3kgZXZlbiBiZWZvcmUgdGhhdCwgaWYgd2UgZmluZCBh
IHdheS4KLWVudW0gY2xhc3MgUmVmZXJyZXJIZWFkZXJQb2xpY3kgeworLy8gRklYTUU6IE1lcmdl
IHRoaXMgd2l0aCBGZXRjaE9wdGlvbnM6OlJlZmVycmVyUG9saWN5LCB3aGljaCBpcyB0aGUgb25l
IGRlZmluZWQgaW4gdGhlIEZldGNoIHNwZWNpZmljYXRpb24uCitlbnVtIGNsYXNzIFJlZmVycmVy
UG9saWN5IHsKICAgICBBbHdheXMsCiAgICAgRGVmYXVsdCwKICAgICBOZXZlciwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
TWVkaWFFbGVtZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJh
Y2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0KaW5kZXggNzU0ZWIxZTNkNzQwNTI4NjY3MDQy
MzdhMDI4ZDY2NjY1YWUxMzFhOS4uMDI5OWU3YTMyMjlhM2QxYmYwNzc5MjdjNmMyNTEyZDA0NzI2
Y2ZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJh
Y2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0KQEAgLTE1OCw5
ICsxNTgsOSBAQCB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Ojp1cGRh
dGVGb3JFdmVudE5hbWUoY29uc3QgV1RGOjpBdG9taWNTdAogCiAgICAgICAgIGlmIChtX21lZGlh
RWxlbWVudC0+bWVkaWFDb250cm9sc0hvc3QoKSkgewogICAgICAgICAgICAgYXV0byB0eXBlID0g
bV9tZWRpYUVsZW1lbnQtPm1lZGlhQ29udHJvbHNIb3N0KCktPmV4dGVybmFsRGV2aWNlVHlwZSgp
OwotICAgICAgICAgICAgaWYgKHR5cGUgPT0gRGV2aWNlVHlwZTo6QWlycGxheSkKKyAgICAgICAg
ICAgIGlmICh0eXBlID09IE1lZGlhQ29udHJvbHNIb3N0OjpEZXZpY2VUeXBlOjpBaXJwbGF5KQog
ICAgICAgICAgICAgICAgIHRhcmdldFR5cGUgPSBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U6
OlRhcmdldFR5cGVBaXJQbGF5OwotICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBEZXZpY2VU
eXBlOjpUdm91dCkKKyAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gTWVkaWFDb250cm9sc0hv
c3Q6OkRldmljZVR5cGU6OlR2b3V0KQogICAgICAgICAgICAgICAgIHRhcmdldFR5cGUgPSBXZWJQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2U6OlRhcmdldFR5cGVUVk91dDsKICAgICAgICAgICAgIGxv
Y2FsaXplZERldmljZU5hbWUgPSBtX21lZGlhRWxlbWVudC0+bWVkaWFDb250cm9sc0hvc3QoKS0+
ZXh0ZXJuYWxEZXZpY2VEaXNwbGF5TmFtZSgpOwogICAgICAgICB9CkBAIC0zMDMsNyArMzAzLDcg
QEAgdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6dXBkYXRlTGVnaWJs
ZU9wdGlvbnMoKQogICAgICAgICAgICAgdHJhY2tNZW51SXRlbVNlbGVjdGVkID0gdHJ1ZTsKICAg
ICAgICAgfQogCi0gICAgICAgIGlmIChkaXNwbGF5TW9kZSAhPSBNZWRpYUNvbnRyb2xzSG9zdDo6
YXV0b21hdGljS2V5d29yZCgpICYmIHRyYWNrLT5tb2RlKCkgPT0gVGV4dFRyYWNrTW9kZTo6U2hv
d2luZykgeworICAgICAgICBpZiAoZGlzcGxheU1vZGUgIT0gTWVkaWFDb250cm9sc0hvc3Q6OmF1
dG9tYXRpY0tleXdvcmQoKSAmJiB0cmFjay0+bW9kZSgpID09IFRleHRUcmFjazo6TW9kZTo6U2hv
d2luZykgewogICAgICAgICAgICAgc2VsZWN0ZWRJbmRleCA9IGluZGV4OwogICAgICAgICAgICAg
dHJhY2tNZW51SXRlbVNlbGVjdGVkID0gdHJ1ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCmluZGV4IDgwZjU5NGNiNDY4YTY4YmEyMjNmNGZlMDllYmQ4MjcyYjE2
MjIzMzQuLjU2ZmRhNjk0MzA3NGE0MmZiMDgzNTYyMjlkOTZlMTU2MGQyNmVmMGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTU2MywyMyArNTYzLDIzIEBAIGJvb2wgSW50
ZXJuYWxzOjppc1N0eWxlU2hlZXRMb2FkaW5nU3VicmVzb3VyY2VzKEhUTUxMaW5rRWxlbWVudCYg
bGluaykKICAgICByZXR1cm4gbGluay5zaGVldCgpICYmIGxpbmsuc2hlZXQoKS0+Y29udGVudHMo
KS5pc0xvYWRpbmdTdWJyZXNvdXJjZXMoKTsKIH0KIAotc3RhdGljIFJlc291cmNlUmVxdWVzdENh
Y2hlUG9saWN5IHRvUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3koSW50ZXJuYWxzQ2FjaGVQb2xp
Y3kgcG9saWN5KQorc3RhdGljIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IHRvUmVzb3VyY2VS
ZXF1ZXN0Q2FjaGVQb2xpY3koSW50ZXJuYWxzOjpDYWNoZVBvbGljeSBwb2xpY3kpCiB7CiAgICAg
c3dpdGNoIChwb2xpY3kpIHsKLSAgICBjYXNlIEludGVybmFsc0NhY2hlUG9saWN5OjpVc2VQcm90
b2NvbENhY2hlUG9saWN5OgorICAgIGNhc2UgSW50ZXJuYWxzOjpDYWNoZVBvbGljeTo6VXNlUHJv
dG9jb2xDYWNoZVBvbGljeToKICAgICAgICAgcmV0dXJuIFVzZVByb3RvY29sQ2FjaGVQb2xpY3k7
Ci0gICAgY2FzZSBJbnRlcm5hbHNDYWNoZVBvbGljeTo6UmVsb2FkSWdub3JpbmdDYWNoZURhdGE6
CisgICAgY2FzZSBJbnRlcm5hbHM6OkNhY2hlUG9saWN5OjpSZWxvYWRJZ25vcmluZ0NhY2hlRGF0
YToKICAgICAgICAgcmV0dXJuIFJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhOwotICAgIGNhc2UgSW50
ZXJuYWxzQ2FjaGVQb2xpY3k6OlJldHVybkNhY2hlRGF0YUVsc2VMb2FkOgorICAgIGNhc2UgSW50
ZXJuYWxzOjpDYWNoZVBvbGljeTo6UmV0dXJuQ2FjaGVEYXRhRWxzZUxvYWQ6CiAgICAgICAgIHJl
dHVybiBSZXR1cm5DYWNoZURhdGFFbHNlTG9hZDsKLSAgICBjYXNlIEludGVybmFsc0NhY2hlUG9s
aWN5OjpSZXR1cm5DYWNoZURhdGFEb250TG9hZDoKKyAgICBjYXNlIEludGVybmFsczo6Q2FjaGVQ
b2xpY3k6OlJldHVybkNhY2hlRGF0YURvbnRMb2FkOgogICAgICAgICByZXR1cm4gUmV0dXJuQ2Fj
aGVEYXRhRG9udExvYWQ7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJl
dHVybiBVc2VQcm90b2NvbENhY2hlUG9saWN5OwogfQogCi12b2lkIEludGVybmFsczo6c2V0T3Zl
cnJpZGVDYWNoZVBvbGljeShJbnRlcm5hbHNDYWNoZVBvbGljeSBwb2xpY3kpCit2b2lkIEludGVy
bmFsczo6c2V0T3ZlcnJpZGVDYWNoZVBvbGljeShDYWNoZVBvbGljeSBwb2xpY3kpCiB7CiAgICAg
ZnJhbWUoKS0+bG9hZGVyKCkuc2V0T3ZlcnJpZGVDYWNoZVBvbGljeUZvclRlc3RpbmcodG9SZXNv
dXJjZVJlcXVlc3RDYWNoZVBvbGljeShwb2xpY3kpKTsKIH0KQEAgLTU5NCwyNSArNTk0LDI1IEBA
IHZvaWQgSW50ZXJuYWxzOjpzZXRDYW5TaG93TW9kYWxEaWFsb2dPdmVycmlkZShib29sIGFsbG93
LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBjb250ZXh0RG9jdW1lbnQoKS0+ZG9tV2luZG93KCkt
PnNldENhblNob3dNb2RhbERpYWxvZ092ZXJyaWRlKGFsbG93KTsKIH0KIAotc3RhdGljIFJlc291
cmNlTG9hZFByaW9yaXR5IHRvUmVzb3VyY2VMb2FkUHJpb3JpdHkoSW50ZXJuYWxzUmVzb3VyY2VM
b2FkUHJpb3JpdHkgcHJpb3JpdHkpCitzdGF0aWMgUmVzb3VyY2VMb2FkUHJpb3JpdHkgdG9SZXNv
dXJjZUxvYWRQcmlvcml0eShJbnRlcm5hbHM6OlJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5
KQogewogICAgIHN3aXRjaCAocHJpb3JpdHkpIHsKLSAgICBjYXNlIEludGVybmFsc1Jlc291cmNl
TG9hZFByaW9yaXR5OjpSZXNvdXJjZUxvYWRQcmlvcml0eVZlcnlMb3c6CisgICAgY2FzZSBJbnRl
cm5hbHM6OlJlc291cmNlTG9hZFByaW9yaXR5OjpSZXNvdXJjZUxvYWRQcmlvcml0eVZlcnlMb3c6
CiAgICAgICAgIHJldHVybiBSZXNvdXJjZUxvYWRQcmlvcml0eTo6VmVyeUxvdzsKLSAgICBjYXNl
IEludGVybmFsc1Jlc291cmNlTG9hZFByaW9yaXR5OjpSZXNvdXJjZUxvYWRQcmlvcml0eUxvdzoK
KyAgICBjYXNlIEludGVybmFsczo6UmVzb3VyY2VMb2FkUHJpb3JpdHk6OlJlc291cmNlTG9hZFBy
aW9yaXR5TG93OgogICAgICAgICByZXR1cm4gUmVzb3VyY2VMb2FkUHJpb3JpdHk6OkxvdzsKLSAg
ICBjYXNlIEludGVybmFsc1Jlc291cmNlTG9hZFByaW9yaXR5OjpSZXNvdXJjZUxvYWRQcmlvcml0
eU1lZGl1bToKKyAgICBjYXNlIEludGVybmFsczo6UmVzb3VyY2VMb2FkUHJpb3JpdHk6OlJlc291
cmNlTG9hZFByaW9yaXR5TWVkaXVtOgogICAgICAgICByZXR1cm4gUmVzb3VyY2VMb2FkUHJpb3Jp
dHk6Ok1lZGl1bTsKLSAgICBjYXNlIEludGVybmFsc1Jlc291cmNlTG9hZFByaW9yaXR5OjpSZXNv
dXJjZUxvYWRQcmlvcml0eUhpZ2g6CisgICAgY2FzZSBJbnRlcm5hbHM6OlJlc291cmNlTG9hZFBy
aW9yaXR5OjpSZXNvdXJjZUxvYWRQcmlvcml0eUhpZ2g6CiAgICAgICAgIHJldHVybiBSZXNvdXJj
ZUxvYWRQcmlvcml0eTo6SGlnaDsKLSAgICBjYXNlIEludGVybmFsc1Jlc291cmNlTG9hZFByaW9y
aXR5OjpSZXNvdXJjZUxvYWRQcmlvcml0eVZlcnlIaWdoOgorICAgIGNhc2UgSW50ZXJuYWxzOjpS
ZXNvdXJjZUxvYWRQcmlvcml0eTo6UmVzb3VyY2VMb2FkUHJpb3JpdHlWZXJ5SGlnaDoKICAgICAg
ICAgcmV0dXJuIFJlc291cmNlTG9hZFByaW9yaXR5OjpWZXJ5SGlnaDsKICAgICB9CiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIFJlc291cmNlTG9hZFByaW9yaXR5OjpMb3c7
CiB9CiAKLXZvaWQgSW50ZXJuYWxzOjpzZXRPdmVycmlkZVJlc291cmNlTG9hZFByaW9yaXR5KElu
dGVybmFsc1Jlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5KQordm9pZCBJbnRlcm5hbHM6OnNl
dE92ZXJyaWRlUmVzb3VyY2VMb2FkUHJpb3JpdHkoUmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJpb3Jp
dHkpCiB7CiAgICAgZnJhbWUoKS0+bG9hZGVyKCkuc2V0T3ZlcnJpZGVSZXNvdXJjZUxvYWRQcmlv
cml0eUZvclRlc3RpbmcodG9SZXNvdXJjZUxvYWRQcmlvcml0eShwcmlvcml0eSkpOwogfQpAQCAt
MTIxOCwyMSArMTIxOCwyMSBAQCB2b2lkIEludGVybmFsczo6c2V0QXV0b2ZpbGxlZChIVE1MSW5w
dXRFbGVtZW50JiBlbGVtZW50LCBib29sIGVuYWJsZWQpCiAgICAgZWxlbWVudC5zZXRBdXRvRmls
bGVkKGVuYWJsZWQpOwogfQogCi1zdGF0aWMgQXV0b0ZpbGxCdXR0b25UeXBlIHRvQXV0b0ZpbGxC
dXR0b25UeXBlKEludGVybmFsc0F1dG9GaWxsQnV0dG9uVHlwZSB0eXBlKQorc3RhdGljIEF1dG9G
aWxsQnV0dG9uVHlwZSB0b0F1dG9GaWxsQnV0dG9uVHlwZShJbnRlcm5hbHM6OkF1dG9GaWxsQnV0
dG9uVHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgSW50ZXJuYWxz
QXV0b0ZpbGxCdXR0b25UeXBlOjpBdXRvRmlsbEJ1dHRvblR5cGVOb25lOgorICAgIGNhc2UgSW50
ZXJuYWxzOjpBdXRvRmlsbEJ1dHRvblR5cGU6OkF1dG9GaWxsQnV0dG9uVHlwZU5vbmU6CiAgICAg
ICAgIHJldHVybiBBdXRvRmlsbEJ1dHRvblR5cGU6Ok5vbmU7Ci0gICAgY2FzZSBJbnRlcm5hbHNB
dXRvRmlsbEJ1dHRvblR5cGU6OkF1dG9GaWxsQnV0dG9uVHlwZUNyZWRlbnRpYWxzOgorICAgIGNh
c2UgSW50ZXJuYWxzOjpBdXRvRmlsbEJ1dHRvblR5cGU6OkF1dG9GaWxsQnV0dG9uVHlwZUNyZWRl
bnRpYWxzOgogICAgICAgICByZXR1cm4gQXV0b0ZpbGxCdXR0b25UeXBlOjpDcmVkZW50aWFsczsK
LSAgICBjYXNlIEludGVybmFsc0F1dG9GaWxsQnV0dG9uVHlwZTo6QXV0b0ZpbGxCdXR0b25UeXBl
Q29udGFjdHM6CisgICAgY2FzZSBJbnRlcm5hbHM6OkF1dG9GaWxsQnV0dG9uVHlwZTo6QXV0b0Zp
bGxCdXR0b25UeXBlQ29udGFjdHM6CiAgICAgICAgIHJldHVybiBBdXRvRmlsbEJ1dHRvblR5cGU6
OkNvbnRhY3RzOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4g
QXV0b0ZpbGxCdXR0b25UeXBlOjpOb25lOwogfQogCi12b2lkIEludGVybmFsczo6c2V0U2hvd0F1
dG9GaWxsQnV0dG9uKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQsIEludGVybmFsc0F1dG9GaWxs
QnV0dG9uVHlwZSB0eXBlKQordm9pZCBJbnRlcm5hbHM6OnNldFNob3dBdXRvRmlsbEJ1dHRvbihI
VE1MSW5wdXRFbGVtZW50JiBlbGVtZW50LCBBdXRvRmlsbEJ1dHRvblR5cGUgdHlwZSkKIHsKICAg
ICBlbGVtZW50LnNldFNob3dBdXRvRmlsbEJ1dHRvbih0b0F1dG9GaWxsQnV0dG9uVHlwZSh0eXBl
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCAzOTA2N2VmMjQ1NjUxNzg3
NmI3YTBlOGQ3MzE5Yzk2MzA3OGI1MDhiLi4xMWY4Yzg4YmQ5YmU1MzkzMjZjYzc1ZGRhODg4MmEx
ZjI3ZWQyMWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTcwLDEyICs3MCw2
IEBAIGNsYXNzIFhNTEh0dHBSZXF1ZXN0OwogCiB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwog
Ci1lbnVtIGNsYXNzIEludGVybmFsc0F1dG9GaWxsQnV0dG9uVHlwZSB7IEF1dG9GaWxsQnV0dG9u
VHlwZU5vbmUsIEF1dG9GaWxsQnV0dG9uVHlwZUNvbnRhY3RzLCBBdXRvRmlsbEJ1dHRvblR5cGVD
cmVkZW50aWFscyB9OwotZW51bSBjbGFzcyBJbnRlcm5hbHNDYWNoZVBvbGljeSB7IFVzZVByb3Rv
Y29sQ2FjaGVQb2xpY3ksIFJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhLCBSZXR1cm5DYWNoZURhdGFF
bHNlTG9hZCwgUmV0dXJuQ2FjaGVEYXRhRG9udExvYWQgfTsKLWVudW0gY2xhc3MgSW50ZXJuYWxz
UmVzb3VyY2VMb2FkUHJpb3JpdHkgeyBSZXNvdXJjZUxvYWRQcmlvcml0eVZlcnlMb3csIFJlc291
cmNlTG9hZFByaW9yaXR5TG93LCBSZXNvdXJjZUxvYWRQcmlvcml0eU1lZGl1bSwgUmVzb3VyY2VM
b2FkUHJpb3JpdHlIaWdoLCBSZXNvdXJjZUxvYWRQcmlvcml0eVZlcnlIaWdoIH07Ci1lbnVtIGNs
YXNzIE1lZGlhQ29udHJvbEV2ZW50IHsgUGxheVBhdXNlLCBOZXh0VHJhY2ssIFByZXZpb3VzVHJh
Y2sgfTsKLWVudW0gY2xhc3MgUGFnZU92ZXJsYXlUeXBlIHsgVmlldywgRG9jdW1lbnQgfTsKLQog
Y2xhc3MgSW50ZXJuYWxzIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8SW50ZXJuYWxzPiwgcHJp
dmF0ZSBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZjxJbnRlcm5hbHM+IGNyZWF0ZShEb2N1bWVudCYpOwpAQCAtOTYsOSArOTAsMTEgQEAgcHVibGlj
OgogICAgIFN0cmluZyB4aHJSZXNwb25zZVNvdXJjZShYTUxIdHRwUmVxdWVzdCYpOwogICAgIGJv
b2wgaXNTaGFyaW5nU3R5bGVTaGVldENvbnRlbnRzKEhUTUxMaW5rRWxlbWVudCYsIEhUTUxMaW5r
RWxlbWVudCYpOwogICAgIGJvb2wgaXNTdHlsZVNoZWV0TG9hZGluZ1N1YnJlc291cmNlcyhIVE1M
TGlua0VsZW1lbnQmKTsKLSAgICB2b2lkIHNldE92ZXJyaWRlQ2FjaGVQb2xpY3koSW50ZXJuYWxz
Q2FjaGVQb2xpY3kpOworICAgIGVudW0gY2xhc3MgQ2FjaGVQb2xpY3kgeyBVc2VQcm90b2NvbENh
Y2hlUG9saWN5LCBSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YSwgUmV0dXJuQ2FjaGVEYXRhRWxzZUxv
YWQsIFJldHVybkNhY2hlRGF0YURvbnRMb2FkIH07CisgICAgdm9pZCBzZXRPdmVycmlkZUNhY2hl
UG9saWN5KENhY2hlUG9saWN5KTsKICAgICB2b2lkIHNldENhblNob3dNb2RhbERpYWxvZ092ZXJy
aWRlKGJvb2wgYWxsb3csIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHNldE92ZXJyaWRlUmVz
b3VyY2VMb2FkUHJpb3JpdHkoSW50ZXJuYWxzUmVzb3VyY2VMb2FkUHJpb3JpdHkpOworICAgIGVu
dW0gY2xhc3MgUmVzb3VyY2VMb2FkUHJpb3JpdHkgeyBSZXNvdXJjZUxvYWRQcmlvcml0eVZlcnlM
b3csIFJlc291cmNlTG9hZFByaW9yaXR5TG93LCBSZXNvdXJjZUxvYWRQcmlvcml0eU1lZGl1bSwg
UmVzb3VyY2VMb2FkUHJpb3JpdHlIaWdoLCBSZXNvdXJjZUxvYWRQcmlvcml0eVZlcnlIaWdoIH07
CisgICAgdm9pZCBzZXRPdmVycmlkZVJlc291cmNlTG9hZFByaW9yaXR5KFJlc291cmNlTG9hZFBy
aW9yaXR5KTsKICAgICB2b2lkIHNldFN0cmljdFJhd1Jlc291cmNlVmFsaWRhdGlvblBvbGljeURp
c2FibGVkKGJvb2wpOwogCiAgICAgdm9pZCBjbGVhck1lbW9yeUNhY2hlKCk7CkBAIC0xNzUsNyAr
MTcxLDggQEAgcHVibGljOgogICAgIGJvb2wgZWxlbWVudFNob3VsZEF1dG9Db21wbGV0ZShIVE1M
SW5wdXRFbGVtZW50Jik7CiAgICAgdm9pZCBzZXRFZGl0aW5nVmFsdWUoSFRNTElucHV0RWxlbWVu
dCYsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0QXV0b2ZpbGxlZChIVE1MSW5wdXRFbGVt
ZW50JiwgYm9vbCBlbmFibGVkKTsKLSAgICB2b2lkIHNldFNob3dBdXRvRmlsbEJ1dHRvbihIVE1M
SW5wdXRFbGVtZW50JiwgSW50ZXJuYWxzQXV0b0ZpbGxCdXR0b25UeXBlKTsKKyAgICBlbnVtIGNs
YXNzIEF1dG9GaWxsQnV0dG9uVHlwZSB7IEF1dG9GaWxsQnV0dG9uVHlwZU5vbmUsIEF1dG9GaWxs
QnV0dG9uVHlwZUNvbnRhY3RzLCBBdXRvRmlsbEJ1dHRvblR5cGVDcmVkZW50aWFscyB9OworICAg
IHZvaWQgc2V0U2hvd0F1dG9GaWxsQnV0dG9uKEhUTUxJbnB1dEVsZW1lbnQmLCBBdXRvRmlsbEJ1
dHRvblR5cGUpOwogICAgIHZvaWQgc2Nyb2xsRWxlbWVudFRvUmVjdChFbGVtZW50JiwgaW50IHgs
IGludCB5LCBpbnQgdywgaW50IGgsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIFN0cmluZyBhdXRv
ZmlsbEZpZWxkTmFtZShFbGVtZW50JiwgRXhjZXB0aW9uQ29kZSYpOwpAQCAtNDIwLDYgKzQxNyw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNlbmRNZWRpYVNlc3Npb25FbmRPZkludGVycnVwdGlvbk5v
dGlmaWNhdGlvbihNZWRpYVNlc3Npb25JbnRlcnJ1cHRpbmdDYXRlZ29yeSk7CiAgICAgU3RyaW5n
IG1lZGlhU2Vzc2lvbkN1cnJlbnRTdGF0ZShNZWRpYVNlc3Npb24mKSBjb25zdDsKICAgICBkb3Vi
bGUgbWVkaWFFbGVtZW50UGxheWVyVm9sdW1lKEhUTUxNZWRpYUVsZW1lbnQmKSBjb25zdDsKKyAg
ICBlbnVtIGNsYXNzIE1lZGlhQ29udHJvbEV2ZW50IHsgUGxheVBhdXNlLCBOZXh0VHJhY2ssIFBy
ZXZpb3VzVHJhY2sgfTsKICAgICB2b2lkIHNlbmRNZWRpYUNvbnRyb2xFdmVudChNZWRpYUNvbnRy
b2xFdmVudCk7CiAjZW5kaWYKIApAQCAtNDM1LDYgKzQzMyw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNpbXVsYXRlU3lzdGVtU2xlZXAoKSBjb25zdDsKICAgICB2b2lkIHNpbXVsYXRlU3lzdGVtV2Fr
ZSgpIGNvbnN0OwogCisgICAgZW51bSBjbGFzcyBQYWdlT3ZlcmxheVR5cGUgeyBWaWV3LCBEb2N1
bWVudCB9OwogICAgIFJlZlB0cjxNb2NrUGFnZU92ZXJsYXk+IGluc3RhbGxNb2NrUGFnZU92ZXJs
YXkoUGFnZU92ZXJsYXlUeXBlLCBFeGNlcHRpb25Db2RlJik7CiAgICAgU3RyaW5nIHBhZ2VPdmVy
bGF5TGF5ZXJUcmVlQXNUZXh0KEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDFjYTBmZTZmOWQxNjI2NDk5YTg2NDdiMTBhOTJjM2Ex
ODQ4YThmNzYuLmIzNDg5N2M5NmQ0ZTBhOTA5NTBlMTE5ZTQ2ZDA2OTgyNzIwMzRlYzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTMwLDcgKzMwLDcgQEAgZW51bSBQYWdl
T3ZlcmxheVR5cGUgewogfTsKIAogLy8gVGhlc2UgbWFwIHRvIFJlc291cmNlUmVxdWVzdENhY2hl
UG9saWN5LgotZW51bSBJbnRlcm5hbHNDYWNoZVBvbGljeSB7CitlbnVtIENhY2hlUG9saWN5IHsK
ICAgICAiVXNlUHJvdG9jb2xDYWNoZVBvbGljeSIsCiAgICAgIlJlbG9hZElnbm9yaW5nQ2FjaGVE
YXRhIiwKICAgICAiUmV0dXJuQ2FjaGVEYXRhRWxzZUxvYWQiLApAQCAtMzgsNyArMzgsNyBAQCBl
bnVtIEludGVybmFsc0NhY2hlUG9saWN5IHsKIH07CiAKIC8vIEZJWE1FOiBTdHJpbmdzIGluIGFu
IGVudW0gc2hvdWxkIG5vdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBlbnVtIGFzIGEgcHJlZml4Lgot
ZW51bSBJbnRlcm5hbHNSZXNvdXJjZUxvYWRQcmlvcml0eSB7CitlbnVtIFJlc291cmNlTG9hZFBy
aW9yaXR5IHsKICAgICAiUmVzb3VyY2VMb2FkUHJpb3JpdHlWZXJ5TG93IiwKICAgICAiUmVzb3Vy
Y2VMb2FkUHJpb3JpdHlMb3ciLAogICAgICJSZXNvdXJjZUxvYWRQcmlvcml0eU1lZGl1bSIsCkBA
IC01OSw3ICs1OSw3IEBAIGVudW0gSW50ZXJuYWxzUmVzb3VyY2VMb2FkUHJpb3JpdHkgewogfTsK
IAogLy8gRklYTUU6IFN0cmluZ3MgaW4gYW4gZW51bSBzaG91bGQgbm90IGhhdmUgdGhlIG5hbWUg
b2YgdGhlIGVudW0gYXMgYSBwcmVmaXguCi1lbnVtIEludGVybmFsc0F1dG9GaWxsQnV0dG9uVHlw
ZSB7CitlbnVtIEF1dG9GaWxsQnV0dG9uVHlwZSB7CiAgICAgIkF1dG9GaWxsQnV0dG9uVHlwZU5v
bmUiLAogICAgICJBdXRvRmlsbEJ1dHRvblR5cGVDb250YWN0cyIsCiAgICAgIkF1dG9GaWxsQnV0
dG9uVHlwZUNyZWRlbnRpYWxzIgpAQCAtODYsOCArODYsOCBAQCBlbnVtIEludGVybmFsc0F1dG9G
aWxsQnV0dG9uVHlwZSB7CiAgICAgdm9pZCBjbGVhck1lbW9yeUNhY2hlKCk7CiAgICAgdm9pZCBw
cnVuZU1lbW9yeUNhY2hlVG9TaXplKGxvbmcgc2l6ZSk7CiAgICAgbG9uZyBtZW1vcnlDYWNoZVNp
emUoKTsKLSAgICB2b2lkIHNldE92ZXJyaWRlQ2FjaGVQb2xpY3koSW50ZXJuYWxzQ2FjaGVQb2xp
Y3kgcG9saWN5KTsKLSAgICB2b2lkIHNldE92ZXJyaWRlUmVzb3VyY2VMb2FkUHJpb3JpdHkoSW50
ZXJuYWxzUmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJpb3JpdHkpOworICAgIHZvaWQgc2V0T3ZlcnJp
ZGVDYWNoZVBvbGljeShDYWNoZVBvbGljeSBwb2xpY3kpOworICAgIHZvaWQgc2V0T3ZlcnJpZGVS
ZXNvdXJjZUxvYWRQcmlvcml0eShSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSk7CiAgICAg
dm9pZCBzZXRTdHJpY3RSYXdSZXNvdXJjZVZhbGlkYXRpb25Qb2xpY3lEaXNhYmxlZChib29sZWFu
IGRpc2FibGVkKTsKIAogICAgIHZvaWQgY2xlYXJQYWdlQ2FjaGUoKTsKQEAgLTE1OSw3ICsxNTks
NyBAQCBlbnVtIEludGVybmFsc0F1dG9GaWxsQnV0dG9uVHlwZSB7CiAgICAgYm9vbGVhbiBlbGVt
ZW50U2hvdWxkQXV0b0NvbXBsZXRlKEhUTUxJbnB1dEVsZW1lbnQgaW5wdXRFbGVtZW50KTsKICAg
ICB2b2lkIHNldEVkaXRpbmdWYWx1ZShIVE1MSW5wdXRFbGVtZW50IGlucHV0RWxlbWVudCwgRE9N
U3RyaW5nIHZhbHVlKTsKICAgICB2b2lkIHNldEF1dG9maWxsZWQoSFRNTElucHV0RWxlbWVudCBp
bnB1dEVsZW1lbnQsIGJvb2xlYW4gZW5hYmxlZCk7Ci0gICAgdm9pZCBzZXRTaG93QXV0b0ZpbGxC
dXR0b24oSFRNTElucHV0RWxlbWVudCBpbnB1dEVsZW1lbnQsIEludGVybmFsc0F1dG9GaWxsQnV0
dG9uVHlwZSBhdXRvRmlsbEJ1dHRvblR5cGUpOworICAgIHZvaWQgc2V0U2hvd0F1dG9GaWxsQnV0
dG9uKEhUTUxJbnB1dEVsZW1lbnQgaW5wdXRFbGVtZW50LCBBdXRvRmlsbEJ1dHRvblR5cGUgYXV0
b0ZpbGxCdXR0b25UeXBlKTsKICAgICBbUmFpc2VzRXhjZXB0aW9uXSB1bnNpZ25lZCBsb25nIGNv
dW50TWF0Y2hlc0ZvclRleHQoRE9NU3RyaW5nIHRleHQsIHVuc2lnbmVkIGxvbmcgZmluZE9wdGlv
bnMsIERPTVN0cmluZyBtYXJrTWF0Y2hlcyk7CiAKICAgICBbUmFpc2VzRXhjZXB0aW9uXSBET01T
dHJpbmcgYXV0b2ZpbGxGaWVsZE5hbWUoRWxlbWVudCBmb3JtQ29udHJvbEVsZW1lbnQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggMjI0Yjg2NTY4MzAyOTZkYTc3NDg4
ZjRkMTY1YWIxNWY2ODg2NTI2OS4uNmFiMzE1OTdhNTQ3NGRmMThlYTllODU4MjRiNWZkMDZhNmVl
Y2I1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0xNjMsNyArMTYz
LDcgQEAgWE1MSHR0cFJlcXVlc3Q6OlN0YXRlIFhNTEh0dHBSZXF1ZXN0OjpyZWFkeVN0YXRlKCkg
Y29uc3QKIAogU3RyaW5nIFhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZVRleHQoRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7Ci0gICAgaWYgKG1fcmVzcG9uc2VUeXBlICE9IFhNTEh0dHBSZXF1ZXN0UmVzcG9u
c2VUeXBlOjpFbXB0eVN0cmluZyAmJiBtX3Jlc3BvbnNlVHlwZSAhPSBYTUxIdHRwUmVxdWVzdFJl
c3BvbnNlVHlwZTo6VGV4dCkgeworICAgIGlmIChtX3Jlc3BvbnNlVHlwZSAhPSBSZXNwb25zZVR5
cGU6OkVtcHR5U3RyaW5nICYmIG1fcmVzcG9uc2VUeXBlICE9IFJlc3BvbnNlVHlwZTo6VGV4dCkg
ewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1cm4geyB9Owog
ICAgIH0KQEAgLTE3Miw3ICsxNzIsNyBAQCBTdHJpbmcgWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNl
VGV4dChFeGNlcHRpb25Db2RlJiBlYykKIAogdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkQ2FjaGVS
ZXNwb25zZUpTT04oKQogewotICAgIEFTU0VSVChtX3Jlc3BvbnNlVHlwZSA9PSBYTUxIdHRwUmVx
dWVzdFJlc3BvbnNlVHlwZTo6SnNvbik7CisgICAgQVNTRVJUKG1fcmVzcG9uc2VUeXBlID09IFJl
c3BvbnNlVHlwZTo6SnNvbik7CiAgICAgQVNTRVJUKGRvbmVXaXRob3V0RXJyb3JzKCkpOwogICAg
IG1fcmVzcG9uc2VDYWNoZUlzVmFsaWQgPSB0cnVlOwogICAgIG1fcmVzcG9uc2VCdWlsZGVyLmNs
ZWFyKCk7CkBAIC0xODAsNyArMTgwLDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkQ2FjaGVS
ZXNwb25zZUpTT04oKQogCiBEb2N1bWVudCogWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlWE1MKEV4
Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmIChtX3Jlc3BvbnNlVHlwZSAhPSBYTUxIdHRwUmVx
dWVzdFJlc3BvbnNlVHlwZTo6RW1wdHlTdHJpbmcgJiYgbV9yZXNwb25zZVR5cGUgIT0gWE1MSHR0
cFJlcXVlc3RSZXNwb25zZVR5cGU6OkRvY3VtZW50KSB7CisgICAgaWYgKG1fcmVzcG9uc2VUeXBl
ICE9IFJlc3BvbnNlVHlwZTo6RW1wdHlTdHJpbmcgJiYgbV9yZXNwb25zZVR5cGUgIT0gUmVzcG9u
c2VUeXBlOjpEb2N1bWVudCkgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0xOTUsNyArMTk1LDcgQEAgRG9jdW1lbnQq
IFhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZVhNTChFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAg
Ly8gVGhlIFczQyBzcGVjIHJlcXVpcmVzIHRoZSBmaW5hbCBNSU1FIHR5cGUgdG8gYmUgc29tZSB2
YWxpZCBYTUwgdHlwZSwgb3IgdGV4dC9odG1sLgogICAgICAgICAvLyBJZiBpdCBpcyB0ZXh0L2h0
bWwsIHRoZW4gdGhlIHJlc3BvbnNlVHlwZSBvZiAiZG9jdW1lbnQiIG11c3QgaGF2ZSBiZWVuIHN1
cHBsaWVkIGV4cGxpY2l0bHkuCiAgICAgICAgIGlmICgobV9yZXNwb25zZS5pc0hUVFAoKSAmJiAh
cmVzcG9uc2VJc1hNTCgpICYmICFpc0hUTUwpCi0gICAgICAgICAgICB8fCAoaXNIVE1MICYmIG1f
cmVzcG9uc2VUeXBlID09IFhNTEh0dHBSZXF1ZXN0UmVzcG9uc2VUeXBlOjpFbXB0eVN0cmluZykK
KyAgICAgICAgICAgIHx8IChpc0hUTUwgJiYgbV9yZXNwb25zZVR5cGUgPT0gUmVzcG9uc2VUeXBl
OjpFbXB0eVN0cmluZykKICAgICAgICAgICAgIHx8IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
aXNXb3JrZXJHbG9iYWxTY29wZSgpKSB7CiAgICAgICAgICAgICBtX3Jlc3BvbnNlRG9jdW1lbnQg
PSBudWxscHRyOwogICAgICAgICB9IGVsc2UgewpAQCAtMjE5LDcgKzIxOSw3IEBAIERvY3VtZW50
KiBYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VYTUwoRXhjZXB0aW9uQ29kZSYgZWMpCiAKIEJsb2Iq
IFhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZUJsb2IoKQogewotICAgIEFTU0VSVChtX3Jlc3BvbnNl
VHlwZSA9PSBYTUxIdHRwUmVxdWVzdFJlc3BvbnNlVHlwZTo6QmxvYik7CisgICAgQVNTRVJUKG1f
cmVzcG9uc2VUeXBlID09IFJlc3BvbnNlVHlwZTo6QmxvYik7CiAgICAgQVNTRVJUKGRvbmVXaXRo
b3V0RXJyb3JzKCkpOwogCiAgICAgaWYgKCFtX3Jlc3BvbnNlQmxvYikgewpAQCAtMjQxLDcgKzI0
MSw3IEBAIEJsb2IqIFhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZUJsb2IoKQogCiBBcnJheUJ1ZmZl
ciogWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlQXJyYXlCdWZmZXIoKQogewotICAgIEFTU0VSVCht
X3Jlc3BvbnNlVHlwZSA9PSBYTUxIdHRwUmVxdWVzdFJlc3BvbnNlVHlwZTo6QXJyYXlidWZmZXIp
OworICAgIEFTU0VSVChtX3Jlc3BvbnNlVHlwZSA9PSBSZXNwb25zZVR5cGU6OkFycmF5YnVmZmVy
KTsKICAgICBBU1NFUlQoZG9uZVdpdGhvdXRFcnJvcnMoKSk7CiAKICAgICBpZiAoIW1fcmVzcG9u
c2VBcnJheUJ1ZmZlcikgewpAQCAtMjczLDcgKzI3Myw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6
OnNldFRpbWVvdXQodW5zaWduZWQgdGltZW91dCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgbV90
aW1lb3V0VGltZXIuc3RhcnRPbmVTaG90KHN0ZDo6bWF4KDAuMCwgaW50ZXJ2YWwuY291bnQoKSkp
OwogfQogCi12b2lkIFhNTEh0dHBSZXF1ZXN0OjpzZXRSZXNwb25zZVR5cGUoWE1MSHR0cFJlcXVl
c3RSZXNwb25zZVR5cGUgdHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIFhNTEh0dHBSZXF1
ZXN0OjpzZXRSZXNwb25zZVR5cGUoUmVzcG9uc2VUeXBlIHR5cGUsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogewogICAgIGlmIChtX3N0YXRlID49IExPQURJTkcpIHsKICAgICAgICAgZWMgPSBJTlZBTElE
X1NUQVRFX0VSUjsKQEAgLTQ2Myw3ICs0NjMsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpvcGVu
KGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBVUkwmIHVybCwgYm9vbCBhc3luYywgRXhjZQog
ICAgICAgICAvLyBhdHRlbXB0IHRvIGRpc2NvdXJhZ2Ugc3luY2hyb25vdXMgWEhSIHVzZS4gcmVz
cG9uc2VUeXBlIGlzIG9uZSBzdWNoIHBpZWNlIG9mIGZ1bmN0aW9uYWxpdHkuCiAgICAgICAgIC8v
IFdlJ2xsIG9ubHkgZGlzYWJsZSB0aGlzIGZ1bmN0aW9uYWxpdHkgZm9yIEhUVFAoUykgcmVxdWVz
dHMgc2luY2Ugc3luYyByZXF1ZXN0cyBmb3IgbG9jYWwgcHJvdG9jb2xzCiAgICAgICAgIC8vIHN1
Y2ggYXMgZmlsZTogYW5kIGRhdGE6IHN0aWxsIG1ha2Ugc2Vuc2UgdG8gYWxsb3cuCi0gICAgICAg
IGlmICh1cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpICYmIG1fcmVzcG9uc2VUeXBlICE9IFhN
TEh0dHBSZXF1ZXN0UmVzcG9uc2VUeXBlOjpFbXB0eVN0cmluZykgeworICAgICAgICBpZiAodXJs
LnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSAmJiBtX3Jlc3BvbnNlVHlwZSAhPSBSZXNwb25zZVR5
cGU6OkVtcHR5U3RyaW5nKSB7CiAgICAgICAgICAgICBsb2dDb25zb2xlRXJyb3Ioc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCAiU3luY2hyb25vdXMgSFRUUChTKSByZXF1ZXN0cyBtYWRlIGZyb20g
dGhlIHdpbmRvdyBjb250ZXh0IGNhbm5vdCBoYXZlIFhNTEh0dHBSZXF1ZXN0LnJlc3BvbnNlVHlw
ZSBzZXQuIik7CiAgICAgICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTEwOTUsMTYgKzEwOTUsMTYgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3Vy
Y2UKICAgICAgICAgbV9yZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6
OkNvbnRlbnRUeXBlLCBtX21pbWVUeXBlT3ZlcnJpZGUpOwogfQogCi1zdGF0aWMgaW5saW5lIGJv
b2wgc2hvdWxkRGVjb2RlUmVzcG9uc2UoWE1MSHR0cFJlcXVlc3RSZXNwb25zZVR5cGUgdHlwZSkK
K3N0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGREZWNvZGVSZXNwb25zZShYTUxIdHRwUmVxdWVzdDo6
UmVzcG9uc2VUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBYTUxI
dHRwUmVxdWVzdFJlc3BvbnNlVHlwZTo6RW1wdHlTdHJpbmc6Ci0gICAgY2FzZSBYTUxIdHRwUmVx
dWVzdFJlc3BvbnNlVHlwZTo6RG9jdW1lbnQ6Ci0gICAgY2FzZSBYTUxIdHRwUmVxdWVzdFJlc3Bv
bnNlVHlwZTo6SnNvbjoKLSAgICBjYXNlIFhNTEh0dHBSZXF1ZXN0UmVzcG9uc2VUeXBlOjpUZXh0
OgorICAgIGNhc2UgWE1MSHR0cFJlcXVlc3Q6OlJlc3BvbnNlVHlwZTo6RW1wdHlTdHJpbmc6Cisg
ICAgY2FzZSBYTUxIdHRwUmVxdWVzdDo6UmVzcG9uc2VUeXBlOjpEb2N1bWVudDoKKyAgICBjYXNl
IFhNTEh0dHBSZXF1ZXN0OjpSZXNwb25zZVR5cGU6Okpzb246CisgICAgY2FzZSBYTUxIdHRwUmVx
dWVzdDo6UmVzcG9uc2VUeXBlOjpUZXh0OgogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBjYXNl
IFhNTEh0dHBSZXF1ZXN0UmVzcG9uc2VUeXBlOjpBcnJheWJ1ZmZlcjoKLSAgICBjYXNlIFhNTEh0
dHBSZXF1ZXN0UmVzcG9uc2VUeXBlOjpCbG9iOgorICAgIGNhc2UgWE1MSHR0cFJlcXVlc3Q6OlJl
c3BvbnNlVHlwZTo6QXJyYXlidWZmZXI6CisgICAgY2FzZSBYTUxIdHRwUmVxdWVzdDo6UmVzcG9u
c2VUeXBlOjpCbG9iOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCAxZThkMDli
Njc1YzhhNjEzMDhjMzc1N2E0YTdmNjUzOTkwMTQ4MDkyLi5iODgwODcyYzJjYzE4YjZhNWI0Njdl
NGY2MGIzMmE1MzZjNmExNTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAt
NDQsOCArNDQsNiBAQCBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNv
ZGVyOwogY2xhc3MgVGhyZWFkYWJsZUxvYWRlcjsKIAotZW51bSBjbGFzcyBYTUxIdHRwUmVxdWVz
dFJlc3BvbnNlVHlwZSB7IEVtcHR5U3RyaW5nLCBBcnJheWJ1ZmZlciwgQmxvYiwgRG9jdW1lbnQs
IEpzb24sIFRleHQgfTsKLQogY2xhc3MgWE1MSHR0cFJlcXVlc3QgZmluYWwgOiBwdWJsaWMgUmVm
Q291bnRlZDxYTUxIdHRwUmVxdWVzdD4sIHB1YmxpYyBYTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0
LCBwcml2YXRlIFRocmVhZGFibGVMb2FkZXJDbGllbnQsIHB1YmxpYyBBY3RpdmVET01PYmplY3Qg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtMTA2LDggKzEwNCw5
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIHVwcGVyY2FzZUtub3duSFRUUE1ldGhvZChj
b25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgYm9vbCBpc0FsbG93ZWRIVFRQSGVhZGVyKGNvbnN0
IFN0cmluZyYpOwogCi0gICAgdm9pZCBzZXRSZXNwb25zZVR5cGUoWE1MSHR0cFJlcXVlc3RSZXNw
b25zZVR5cGUsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBYTUxIdHRwUmVxdWVzdFJlc3BvbnNlVHlw
ZSByZXNwb25zZVR5cGUoKSBjb25zdDsKKyAgICBlbnVtIGNsYXNzIFJlc3BvbnNlVHlwZSB7IEVt
cHR5U3RyaW5nLCBBcnJheWJ1ZmZlciwgQmxvYiwgRG9jdW1lbnQsIEpzb24sIFRleHQgfTsKKyAg
ICB2b2lkIHNldFJlc3BvbnNlVHlwZShSZXNwb25zZVR5cGUsIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICBSZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlKCkgY29uc3Q7CiAKICAgICBTdHJpbmcgcmVzcG9u
c2VVUkwoKSBjb25zdDsKIApAQCAtMjI1LDcgKzIyNCw3IEBAIHByaXZhdGU6CiAKICAgICBYTUxI
dHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRsZSBtX3Byb2dyZXNzRXZlbnRUaHJvdHRsZTsK
IAotICAgIFhNTEh0dHBSZXF1ZXN0UmVzcG9uc2VUeXBlIG1fcmVzcG9uc2VUeXBlIHsgWE1MSHR0
cFJlcXVlc3RSZXNwb25zZVR5cGU6OkVtcHR5U3RyaW5nIH07CisgICAgUmVzcG9uc2VUeXBlIG1f
cmVzcG9uc2VUeXBlIHsgUmVzcG9uc2VUeXBlOjpFbXB0eVN0cmluZyB9OwogICAgIGJvb2wgbV9y
ZXNwb25zZUNhY2hlSXNWYWxpZCB7IGZhbHNlIH07CiAKICAgICBUaW1lciBtX3Jlc3VtZVRpbWVy
OwpAQCAtMjM5LDcgKzIzOCw3IEBAIHByaXZhdGU6CiAgICAgVGltZXIgbV90aW1lb3V0VGltZXI7
CiB9OwogCi1pbmxpbmUgWE1MSHR0cFJlcXVlc3RSZXNwb25zZVR5cGUgWE1MSHR0cFJlcXVlc3Q6
OnJlc3BvbnNlVHlwZSgpIGNvbnN0CitpbmxpbmUgYXV0byBYTUxIdHRwUmVxdWVzdDo6cmVzcG9u
c2VUeXBlKCkgY29uc3QgLT4gUmVzcG9uc2VUeXBlCiB7CiAgICAgcmV0dXJuIG1fcmVzcG9uc2VU
eXBlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5kZXggMTgwOTZjMmM1ZjJhMmNjYjZiNzM0NDlkNjdiNDQw
Y2U4MTA3OGVmMS4uZTNkNGE0ODM3ZDdhZTA4M2E0ZTM4OTc2OThkMTMzZjJkYjE4YTI1MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0
ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVy
U3RyYXRlZ3kuY3BwCkBAIC03NSw3ICs3NSw3IEBAIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4g
V2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJjZShGcmFtZSogZnJhbWUsIENhY2hlZFJlCiB7
CiAgICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBsb2FkZXIgPSBTdWJyZXNvdXJjZUxvYWRl
cjo6Y3JlYXRlKGZyYW1lLCByZXNvdXJjZSwgcmVxdWVzdCwgb3B0aW9ucyk7CiAgICAgaWYgKGxv
YWRlcikKLSAgICAgICAgc2NoZWR1bGVMb2FkKGxvYWRlci5nZXQoKSwgcmVzb3VyY2UsIGZyYW1l
LT5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpID09IFJlZmVycmVySGVhZGVyUG9saWN5OjpE
ZWZhdWx0KTsKKyAgICAgICAgc2NoZWR1bGVMb2FkKGxvYWRlci5nZXQoKSwgcmVzb3VyY2UsIGZy
YW1lLT5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpID09IFJlZmVycmVyUG9saWN5OjpEZWZh
dWx0KTsKICAgICByZXR1cm4gbG9hZGVyOwogfQogCkBAIC04Myw3ICs4Myw3IEBAIFJlZlB0cjxO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlUGx1
Z2luU3RyZWFtTG9hZChGCiB7CiAgICAgUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
PiBsb2FkZXIgPSBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6Y3JlYXRlKGZyYW1lLCBjbGll
bnQsIHJlcXVlc3QpOwogICAgIGlmIChsb2FkZXIpCi0gICAgICAgIHNjaGVkdWxlTG9hZChsb2Fk
ZXIuZ2V0KCksIDAsIGZyYW1lLT5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpID09IFJlZmVy
cmVySGVhZGVyUG9saWN5OjpEZWZhdWx0KTsKKyAgICAgICAgc2NoZWR1bGVMb2FkKGxvYWRlci5n
ZXQoKSwgMCwgZnJhbWUtPmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCkgPT0gUmVmZXJyZXJQ
b2xpY3k6OkRlZmF1bHQpOwogICAgIHJldHVybiBsb2FkZXI7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277908</attachid>
            <date>2016-05-02 08:47:11 -0700</date>
            <delta_ts>2016-05-02 09:00:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157257-20160502084748.patch</filename>
            <type>text/plain</type>
            <size>191417</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwMzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWIzMDA4Y2RjMWM3MWMy
YjQwYWE2YTYxNGU4ODNiMmQwYTg2N2QyNC4uMDIzZTNiYTc1ODg2NTA5YjkzZjFjNTA3ZGQ3ODQz
MzNjNTkyMGYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1NyBAQAorMjAxNi0wNS0wMiAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIElETCBlbnVtZXJh
dGlvbnMgdG8gYmUgbmVzdGVkIGluIHRoZWlyIEMrKyBjbGFzcyBpbnN0ZWFkIG9mIGF0IFdlYkNv
cmUgbmFtZXNwYWNlIGxldmVsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTcyNTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBDaHJpcyBhbmQgQWxleCByZXF1ZXN0ZWQgdGhpcyBhbHRlcm5hdGUgc3R5bGUs
IHdoZXJlIHRoZSBlbnVtIGNsYXNzIGZvciBlYWNoIGVudW1lcmF0aW9uCisgICAgICAgIGdvZXMg
aW5zaWRlIHRoZSBjbGFzcyBmb3IgdGhlIGludGVyZmFjZSB0aGUgZW51bWVyYXRpb24gaXMgdXNl
ZCBpbi4gQWxzbyBtYWRlIGEgcnVsZSB0aGF0CisgICAgICAgIGtlZXBzIHRoZSBuYW1lcyBzaG9y
dCBhbmQgbm90IHJlZHVuZGFudCB3aXRoIHRoZSBjbGFzcyBuYW1lIHRoZXkgYXJlIG5lc3RlZCBp
bi4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hPcHRpb25zLmg6IE1vdmVkIGFsbCB0
aGUgZW51bSBjbGFzcyB0eXBlcyBpbnRvIHRoZSBzdHJ1Y3QuCisKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRSZWZlcnJlclBv
bGljeSk6IFVwZGF0ZWQuCisgICAgICAgIChXZWJDb3JlOjpzZXRNb2RlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpzZXRDcmVkZW50aWFscyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
c2V0Q2FjaGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnNldFJlZGlyZWN0KTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpidWlsZE9wdGlvbnMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OmJ1aWxkSGVhZGVycyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXF1ZXN0
OjpjcmVhdGUpOiBEaXR0by4KKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5o
OiBVc2VkICJ1c2luZyIgdG8gcmVwZWF0IHRoZSB0eXBlcyBmcm9tIEZldGNoT3B0aW9ucworICAg
ICAgICBoZXJlIGluIEZldGNoUmVxdWVzdC4gVGhhdCB3YXkgdGhlIGdlbmVyYXRlZCBiaW5kaW5n
cyBjYW4gZmluZCB0aGUgdHlwZXMsIGFuZCB3ZSBkb24ndAorICAgICAgICBuZWVkIHRvIGRvIGFu
eSB0cmljayBsaWtlIFtJbXBsZW1lbnRlZEFzXSBpbiB0aGQgSURMIHRvIG1ha2UgaXQgd29yay4K
KworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjplcnJvcik6IFVwZGF0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaFJlc3BvbnNlOjpyZWRpcmVjdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hSZXNwb25zZTo6RmV0Y2hSZXNwb25zZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hSZXNwb25zZTo6c3RhcnRGZXRjaGluZyk6IERpdHRvLgorICAgICAgICAqIE1vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5oOiBNb3ZlZCBlbnVtIGNsYXNzIGludG8gdGhlIGNsYXNzLgorCisg
ICAgICAgICogTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNIb3N0OjpleHRlcm5hbERldmljZVR5cGUpOiBV
cGRhdGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9z
dC5oOiBNb3ZlZCBlbnVtIGNsYXNzcyBpbnRvIHRoZSBjbGFzcy4KKworICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNlc3Npb246Ok1lZGlhU2Vzc2lvbik6IFVwZGF0ZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRp
YXNlc3Npb24vTWVkaWFTZXNzaW9uLmg6IE1vdmVkIGVudW0gY2xhc3NzIGludG8gdGhlIGNsYXNz
LgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6YWRkU291cmNlQnVmZmVyKTogVXBkYXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpyZW1vdmVTb3VyY2VCdWZmZXIpOiBEaXR0by4K
KworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaDogTW92ZWQgZW51
bSBjbGFzcyBpbnRvIHRoZSBjbGFzcy4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2Uv
U291cmNlQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6c291cmNl
QnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVSZW5kZXJpbmdFcnJvcik6IFVwZGF0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OmFwcGVuZEVycm9yKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlU2FtcGxl
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnRleHRUcmFja01vZGVD
aGFuZ2VkKTogRGl0dG8uCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1
ZmZlci5oOiBSZW1vdmVkIGluY29ycmVjdCBmb3J3YXJkIGRlY2xhcmF0aW9uCisgICAgICAgIG9m
IEVuZE9mU3RyZWFtRXJyb3IgdGhhdCBhbHNvIG5vdyBzZWVtcyB0byBiZSB1bm5lZWRlZC4gTW92
ZWQgZW51bSBjbGFzcyBpbnRvCisgICAgICAgIHRoZSBjbGFzcy4KKworICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhRGV2aWNlSW5mbzo6TWVkaWFEZXZpY2VJbmZvKTogVXBkYXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhRGV2aWNlSW5mbzo6Y3JlYXRlKTogRGl0dG8uCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYURldmljZUluZm8uaDogTW92ZWQgZW51bSBjbGFzcyBpbnRvIHRoZSBj
bGFzcy4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZXNSZXF1ZXN0OjpkaWRDb21wbGV0
ZVRyYWNrU291cmNlSW5mb1JlcXVlc3QpOiBVcGRhdGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0
cmVhbVRyYWNrOjpyZWFkeVN0YXRlKTogVXBkYXRlZC4KKworICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oOiBNb3ZlZCBlbnVtIGNsYXNzIGludG8gdGhlIGNs
YXNzLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENDb25maWd1cmF0aW9uLmg6
IE1vdmVkIGVudW0gY2xhc3NlcyBpbnRvIHRoZSBjbGFzcy4KKworICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0Lmg6IE1vdmVkIGVudW0gY2xhc3MgaW50byB0aGUgY2xhc3Mu
CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnByb2Nlc3NvclR5cGUpOiBVcGRhdGVkLgorICAgICAgICAoV2ViQ29yZTo6
V2F2ZVNoYXBlck5vZGU6Om92ZXJzYW1wbGUpOiBEaXR0by4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmg6IE1vdmVkIGVudW0gY2xhc3MgaW50byB0aGUgY2xhc3Mu
CisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlKTogVXBkYXRlZC4KKwor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAo
R2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RCb2R5KTogUmVtb3ZlZCB1bm5lZWRlZCAkaW50ZXJm
YWNlTmFtZSBhcmd1bWVudC4KKyAgICAgICAgKEdldEF0dHJpYnV0ZUdldHRlck5hbWUpOiBEaXR0
by4KKyAgICAgICAgKEdldEF0dHJpYnV0ZVNldHRlck5hbWUpOiBEaXR0by4KKyAgICAgICAgKEdl
dEZ1bmN0aW9uTmFtZSk6IFR3ZWFrZWQgc3R5bGUuCisgICAgICAgIChBdHRyaWJ1dGVTaG91bGRC
ZU9uSW5zdGFuY2VGb3JDb21wYXRpYmlsaXR5KTogRGVsZXRlZC4gV2FzIGEgZnVuY3Rpb24gdGhh
dAorICAgICAgICBhbHdheXMgcmV0dXJuZWQgMC4KKyAgICAgICAgKEF0dHJpYnV0ZVNob3VsZEJl
T25JbnN0YW5jZSk6IFJlbW92ZWQgdGhlIGNhbGwgdG8gdGhlIGZ1bmN0aW9uIGFib3ZlLgorICAg
ICAgICAoSXNDbGFzc05hbWVXb3JkQm91bmRhcnkpOiBBZGRlZC4gSGVscGVyIGZvciBmdW5jdGlv
biBiZWxvdy4KKyAgICAgICAgKFByZWZpeElzV29yZHNUaGF0TWF0Y2hTdGFydE9yRW5kV29yZHMp
OiBEaXR0by4KKyAgICAgICAgKEdldEVudW1lcmF0aW9uQ2xhc3NOYW1lKTogQWRkZWQgYW4gJGlu
dGVyZmFjZSBhcmd1bWVudCBhbmQgY2hhbmdlZCB0aGlzCisgICAgICAgIHNvIGl0IGNyZWF0ZXMg
YSBuZXN0ZWQgbmFtZSBpbnNpZGUgdGhlIGNsYXNzIHJhdGhlciB0aGFuIGEgdG9wIGxldmVsIG5h
bWUKKyAgICAgICAgZm9yIHVzZSBhdCB0aGUgV2ViQ29yZSBuYW1lc3BhY2UgbGV2ZWwuCisgICAg
ICAgIChHZXRFbnVtZXJhdGlvbkNsYXNzSWRlbnRpZmllcik6IEFkZGVkLiBDYWxscyBHZXRFbnVt
ZXJhdGlvbkNsYXNzTmFtZSBhbmQKKyAgICAgICAgbWFrZXMgYSBmbGF0dGVuZWQgbmFtZSB3aXRo
b3V0ICI6OiIgdGhhdCBjYW4gYmUgdXNlZCBpbiBhbiBpZGVudGlmaWVyLgorICAgICAgICAoR2Vu
ZXJhdGVFbnVtZXJhdGlvbkltcGxlbWVudGF0aW9uQ29udGVudCk6IFJlbmFtZWQgZnJvbSBHZXRY
WFguIEFkZGVkIGFuCisgICAgICAgICRpbnRlcmZhY2UgYXJndW1lbnQsIHNvIGl0IGNhbiBwYXNz
IHRoYXQgYWxvbmcgdG8gdGhlIGZ1bmN0aW9ucyBhYm92ZS4KKyAgICAgICAgKEdlbmVyYXRlSGVh
ZGVyKTogVXBkYXRlZCB0byBub3QgcGFzcyAkaW50ZXJmYWNlTmFtZS4KKyAgICAgICAgKEdlbmVy
YXRlUHJvcGVydGllc0hhc2hUYWJsZSk6IERpdHRvLgorICAgICAgICAoR2VuZXJhdGVPdmVybG9h
ZGVkRnVuY3Rpb24pOiBSZW1vdmVkIHVubmVlZGVkICRpbnRlcmZhY2VOYW1lIGFyZ3VtZW50Lgor
ICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6IFVwZGF0ZWQgZm9yIGNoYW5nZXMgYWJv
dmUuIFR3ZWFrZWQgZm9ybWF0dGluZy4KKyAgICAgICAgKEdlbmVyYXRlRnVuY3Rpb25DYXN0ZWRU
aGlzKTogUmVtb3ZlZCB1bm5lZWRlZCAkaW50ZXJmYWNlTmFtZSBhcmd1bWVudC4KKyAgICAgICAg
KEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrKTogRGl0dG8uIEFsc28gc3RyZWFtbGluZWQgaW1wbGVt
ZW50YXRpb24gYSBiaXQKKyAgICAgICAgYW5kIG1hZGUgdGhlIElzRW51bVR5cGUgc2VjdGlvbiBj
YWxsIHRoZSBuZXcgZnVuY3Rpb25zLgorICAgICAgICAoR2VuZXJhdGVDYWxsYmFja0ltcGxlbWVu
dGF0aW9uKTogRGl0dG8uCisgICAgICAgIChKU1ZhbHVlVG9OYXRpdmUpOiBBZGRlZCBhbiAkaW50
ZXJmYWNlIGFyZ3VtZW50IGFuZCBwYXNzIGl0IGFsb25nIHdoZW4KKyAgICAgICAgZGVhbGluZyB3
aXRoIGVudW1lcmF0aW9ucy4KKyAgICAgICAgKEdlbmVyYXRlUHJvdG90eXBlRGVjbGFyYXRpb24p
OiBSZW1vdmVkIHVubmVlZGVkICRpbnRlcmZhY2VOYW1lIGFyZ3VtZW50LgorICAgICAgICAoR2Vu
ZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uKTogRGl0dG8uCisgICAgICAgIChHZW5lcmF0ZUNv
bnN0cnVjdG9yRGVmaW5pdGlvbnMpOiBEaXR0by4KKyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0
b3JEZWZpbml0aW9uKTogRGl0dG8uCisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVy
TWV0aG9kcyk6IERpdHRvLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE9iai5jcHA6IFJlZ2VuZXJhdGVkLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Rlc3RPYmouaWRsOiBBZGRlZCBzb21lIG5ldyBlbnVtcyB0aGF0IHRlc3Qgc29tZQorICAg
ICAgICBvZiB0aGUgbG9naWMgYWJvdmUuCisKKyAgICAgICAgKiBjcnlwdG8vQ3J5cHRvS2V5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleTo6Q3J5cHRvS2V5KTogVXBkYXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleTo6dXNhZ2VzKTogRGl0dG8uCisgICAgICAgICogY3J5
cHRvL0NyeXB0b0tleS5oOiBNb3ZlZCBlbnVtIGNsYXNzIHR5cGVzIGluc2lkZSB0aGUgQ3J5cHRv
S2V5IGNsYXNzLgorICAgICAgICBBZGRlZCBjb21tZW50cyBhYm91dCB0aGUgdHdvIHNpbWlsYXIg
YnV0IGRpc3RpbmN0IHR5cGVzIG5hbWVkCisgICAgICAgIENyeXB0b0tleVVzYWdlIGFuZCBDcnlw
dG9LZXk6OlVzYWdlLgorCisgICAgICAgICogY3NzL0ZvbnRGYWNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRGYWNlOjpzdGF0dXMpOiBVcGRhdGVkLgorICAgICAgICAqIGNzcy9Gb250RmFj
ZS5oOiBNb3ZlZCBlbnVtIGNsYXNzIGludG8gdGhlIGNsYXNzLgorCisgICAgICAgICogY3NzL0Zv
bnRGYWNlU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlU2V0OjpzdGF0dXMpOiBV
cGRhdGVkLgorICAgICAgICAqIGNzcy9Gb250RmFjZVNldC5oOiBNb3ZlZCBlbnVtIGNsYXNzIGlu
dG8gdGhlIGNsYXNzLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpEb2N1bWVudCk6IFVwZGF0ZWQgZm9yIHRoZSBuYW1lIGNoYW5nZSBi
YWNrIGZyb20KKyAgICAgICAgUmVmZXJyZXJIZWFkZXJQb2xpY3kgdG8gUmVmZXJyZXJQb2xpY3ku
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cHJvY2Vzc1JlZmVycmVyUG9saWN5KTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YXBwbHlDb250ZW50RGlzcG9zaXRpb25B
dHRhY2htZW50U2FuZGJveCk6IERpdHRvLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOiBNb3Jl
IG9mIHRoZSBzYW1lLgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRJbnRlcm5hbCk6IFVwZGF0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdl
ZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNr
S2luZENoYW5nZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OnRleHRUcmFja0FkZEN1ZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnRleHRUcmFja0FkZEN1ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50Ojpjb25maWd1cmVUZXh0VHJhY2tHcm91cCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0U2VsZWN0ZWRUZXh0VHJhY2spOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNvbmZpZ3VyZVRleHRUcmFja3Mp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Omhhc0Nsb3NlZENh
cHRpb25zKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpjb25m
aWd1cmVUZXh0VHJhY2tEaXNwbGF5KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjptYXJrQ2FwdGlvbkFuZFN1YnRpdGxlVHJhY2tzQXNVbmNvbmZpZ3VyZWQpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnRvUGxhdGZvcm0pOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om91dE9mQmFuZFRyYWNrU291cmNlcyk6IERpdHRvLgor
ICAgICAgICAqIGh0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVHJhY2tFbGVtZW50OjpzY2hlZHVsZUxvYWQpOiBEaXR0by4KKworICAgICAgICAqIGh0bWwv
SFRNTFZpZGVvRWxlbWVudC5oOiBNb3ZlZCBlbnVtIGNsYXNzIGludG8gY2xhc3MuCisKKyAgICAg
ICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuaWRsOiBBZGRlZCB0aGUgbWlzc2luZyBjb25kaXRp
b25hbCBvbgorICAgICAgICBWaWRlb1ByZXNlbnRhdGlvbk1vZGUsIGFuZCBhbHNvIG1vdmVkIGl0
IHRvIHRoZSBib3R0b20gb2YgdGhlIGZpbGUKKyAgICAgICAgdG8gd29yayBhcm91bmQgd2hhdCBp
cyBhcHBhcmVudGx5IGEgYnVnIGluIHRoZSBJREwgcGFyc2VyLgorCisgICAgICAgICogaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRv
V2luZFJ1bGUpOiBVcGRhdGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpmaWxsKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OmNsaXApOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6ZmlsbEludGVybmFsKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsaXBJbnRlcm5hbCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjppc1BvaW50SW5QYXRoKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmlzUG9pbnRJblBhdGhJ
bnRlcm5hbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6c21vb3RoaW5nVG9JbnRlcnBvbGF0
aW9uUXVhbGl0eSk6IERpdHRvLgorCisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmg6IE1vdmVkIGVudW0gY2xhc3MgdHlwZXMgaW50byB0aGUgY2xhc3MuCisK
KyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OnVw
ZGF0ZURpc3BsYXkpOiBVcGRhdGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGV4
dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6dXBkYXRlRGlzcGxheSk6IERpdHRvLgorCisgICAgICAg
ICogaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5i
YW5kVGV4dFRyYWNrOjpzZXRNb2RlKTogVXBkYXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRvUHJp
dmF0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrOjpzZXRNb2Rl
SW50ZXJuYWwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFjazo6dXBk
YXRlS2luZEZyb21Qcml2YXRlKTogRGl0dG8uCisgICAgICAgICogaHRtbC90cmFjay9JbmJhbmRU
ZXh0VHJhY2suaDogRGl0dG8uCisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2suY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpUZXh0VHJhY2spOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OlRleHRUcmFjazo6ZW5hYmxlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFRyYWNrOjpraW5kS2V5d29yZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRy
YWNrOjpzZXRLaW5kKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnNldEtp
bmRLZXl3b3JkSWdub3JpbmdBU0NJSUNhc2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRUcmFjazo6c2V0TW9kZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpj
dWVzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmFjdGl2ZUN1ZXMpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6YWRkQ3VlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnJlZ2lvbnMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlRleHRUcmFjazo6aXNSZW5kZXJlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VGV4
dFRyYWNrOjppc01haW5Qcm9ncmFtQ29udGVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFRyYWNrOjpjb250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMpOiBEaXR0by4KKworICAgICAg
ICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrLmg6IE1vdmVkIGVudW0gY2xhc3MgdHlwZXMgaW50byB0
aGUgY2xhc3MuCisKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmRpc3BhdGNoRXZlbnQpOiBVcGRhdGVkLgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjppc0FjdGl2ZSk6IERpdHRvLgorICAgICAgICAq
IGxvYWRlci9GcmFtZU5ldHdvcmtpbmdDb250ZXh0Lmg6IERpdHRvLgorICAgICAgICAqIHBhZ2Uv
Q2FwdGlvblVzZXJQcmVmZXJlbmNlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNl
clByZWZlcmVuY2VzOjpzb3J0ZWRUcmFja0xpc3RGb3JNZW51KTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp0ZXh0VHJhY2tTZWxlY3Rpb25TY29yZSk6
IERpdHRvLgorICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OnRleHRU
cmFja1NlbGVjdGlvblNjb3JlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNl
clByZWZlcmVuY2VzTWVkaWFBRjo6c29ydGVkVHJhY2tMaXN0Rm9yTWVudSk6IERpdHRvLgorCisg
ICAgICAgICogcGFnZS9TZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1
cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcik6IFVwZGF0ZWQgc2luY2Ugd2UKKyAg
ICAgICAgY2hhbmdlZCBSZWZlcnJlckhlYWRlclBvbGljeSBiYWNrIHRvIFJlZmVycmVyUG9saWN5
LgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlQb2xpY3kuaDogRGl0dG8uCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9SZWZlcnJlclBvbGljeS5oOiBDaGFuZ2VkIFJlZmVycmVySGVhZGVyUG9saWN5IG5h
bWUgYmFjaworICAgICAgICB0byBSZWZlcnJlclBvbGljeSBub3cgdGhhdCBuZXN0aW5nIGluc2lk
ZSBhIGNsYXNzIGVsaW1pbmF0ZWQgdGhlIGNvbmZsaWN0OworICAgICAgICBzdGlsbCBzaG91bGQg
bWVyZ2UgdGhlbSBhbmQgdGhhdCBGSVhNRSByZW1haW5zLgorCisgICAgICAgICogcGxhdGZvcm0v
Y29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW06CisgICAgICAgIChX
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6dXBkYXRlRm9yRXZlbnROYW1lKTog
VXBkYXRlZC4KKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Ojp1
cGRhdGVMZWdpYmxlT3B0aW9ucyk6IERpdHRvLgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5h
bHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9SZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSk6
IFVwZGF0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldE92ZXJyaWRlQ2FjaGVQ
b2xpY3kpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnRvUmVzb3VyY2VMb2FkUHJpb3JpdHkp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0T3ZlcnJpZGVSZXNvdXJj
ZUxvYWRQcmlvcml0eSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6dG9BdXRvRmlsbEJ1dHRv
blR5cGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0U2hvd0F1dG9G
aWxsQnV0dG9uKTogRGl0dG8uCisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOiBNb3Zl
ZCBlbnVtIGNsYXNzIHR5cGVzIGludG8gY2xhc3MuCisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVy
bmFscy5pZGw6IFJlbW92ZWQgdGhlICJJbnRlcm5hbHMiIHByZWZpeGVzIHdlIGFkZGVkCisgICAg
ICAgIHRvIHJlc29sdmUgYW1iaWd1aXR5IGJlZm9yZS4gTmVzdGluZyB0aGVzZSBpbiB0aGUgY2xh
c3Mgbm93IHRha2VzIGNhcmUKKyAgICAgICAgb2YgdGhlIGFtYmlndWl0eSBpbnN0ZWFkLgorCisg
ICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0
dHBSZXF1ZXN0OjpyZXNwb25zZVRleHQpOiBVcGRhdGVkLgorICAgICAgICAoV2ViQ29yZTo6WE1M
SHR0cFJlcXVlc3Q6OmRpZENhY2hlUmVzcG9uc2VKU09OKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VYTUwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZUJsb2IpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZUFycmF5QnVmZmVyKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6c2V0UmVzcG9uc2VUeXBlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6b3Blbik6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6c2hvdWxkRGVjb2RlUmVzcG9uc2UpOiBEaXR0by4KKworICAgICAgICAqIHhtbC9YTUxI
dHRwUmVxdWVzdC5oOiBNb3ZlZCB0aGUgZW51bSBjbGFzcyBpbnRvIHRoZSBjbGFzcy4KKwogMjAx
Ni0wNS0wMiAgWW9hdiBXZWlzcyAgPHlvYXZAeW9hdi53cz4KIAogICAgICAgICBNb3ZlIFJlc291
cmNlVGltaW5nIGJlaGluZCBhIHJ1bnRpbWUgZmxhZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDU0MTI4ZTQ0NTFj
YzI0ODcwMDJmMDVhYTk4NDQyOTU5ZDU2ZWE3NjUuLjRhNmMxZTQwYThjMzNjM2I2MDE4MmE1Njhj
OTc3YTJmYzFkN2E4MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNi0wNS0wMiAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIElETCBlbnVt
ZXJhdGlvbnMgdG8gYmUgbmVzdGVkIGluIHRoZWlyIEMrKyBjbGFzcyBpbnN0ZWFkIG9mIGF0IFdl
YkNvcmUgbmFtZXNwYWNlIGxldmVsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTcyNTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2UpOiBVcGRh
dGVkIHNpbmNlIHdlIGNoYW5nZWQKKyAgICAgICAgUmVmZXJyZXJIZWFkZXJQb2xpY3kgYmFjayB0
byBSZWZlcnJlclBvbGljeS4KKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnNj
aGVkdWxlUGx1Z2luU3RyZWFtTG9hZCk6IERpdHRvLgorCiAyMDE2LTA1LTAxICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgRmV0Y2ggdG8gdXNlIGVudW0g
Y2xhc3MgaW5zdGVhZCBvZiBzdHJpbmcgZm9yIGVudW1lcmF0aW9ucwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaE9wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hPcHRpb25zLmgKaW5kZXggODFmMDdkMTlhZTAwNTJiYmJmZTJl
ZTZjMzFiNGIwYTEzZGQ2ZTJmOS4uOTkzZDcwOGE4MDM2YjhiZTVlOTRjODdhZjEzNDk2MTk3MDg5
MTVmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaE9wdGlv
bnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoT3B0aW9ucy5oCkBA
IC0zMiwyMSArMzIsMjYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIFJl
ZmVycmVyUG9saWN5IHsgRW1wdHlTdHJpbmcsIE5vUmVmZXJyZXIsIE5vUmVmZXJyZXJXaGVuRG93
bmdyYWRlLCBPcmlnaW5Pbmx5LCBPcmlnaW5XaGVuQ3Jvc3NPcmlnaW4sIFVuc2FmZVVybCB9Owot
ZW51bSBjbGFzcyBSZXF1ZXN0Q2FjaGUgeyBEZWZhdWx0LCBOb1N0b3JlLCBSZWxvYWQsIE5vQ2Fj
aGUsIEZvcmNlQ2FjaGUgfTsKLWVudW0gY2xhc3MgUmVxdWVzdENyZWRlbnRpYWxzIHsgT21pdCwg
U2FtZU9yaWdpbiwgSW5jbHVkZSB9OwotZW51bSBjbGFzcyBSZXF1ZXN0RGVzdGluYXRpb24geyBF
bXB0eVN0cmluZywgRG9jdW1lbnQsIFNoYXJlZHdvcmtlciwgU3VicmVzb3VyY2UsIFVua25vd24s
IFdvcmtlciB9OwotZW51bSBjbGFzcyBSZXF1ZXN0TW9kZSB7IE5hdmlnYXRlLCBTYW1lT3JpZ2lu
LCBOb0NvcnMsIENvcnMgfTsKLWVudW0gY2xhc3MgUmVxdWVzdFJlZGlyZWN0IHsgRm9sbG93LCBF
cnJvciwgTWFudWFsIH07Ci1lbnVtIGNsYXNzIFJlcXVlc3RUeXBlIHsgRW1wdHlTdHJpbmcsIEF1
ZGlvLCBGb250LCBJbWFnZSwgU2NyaXB0LCBTdHlsZSwgVHJhY2ssIFZpZGVvIH07Ci0KIHN0cnVj
dCBGZXRjaE9wdGlvbnMgewotICAgIFJlcXVlc3RUeXBlIHR5cGUgeyBSZXF1ZXN0VHlwZTo6RW1w
dHlTdHJpbmcgfTsKLSAgICBSZXF1ZXN0RGVzdGluYXRpb24gZGVzdGluYXRpb24geyBSZXF1ZXN0
RGVzdGluYXRpb246OkVtcHR5U3RyaW5nIH07Ci0gICAgUmVxdWVzdE1vZGUgbW9kZSB7IFJlcXVl
c3RNb2RlOjpOb0NvcnMgfTsKLSAgICBSZXF1ZXN0Q3JlZGVudGlhbHMgY3JlZGVudGlhbHMgeyBS
ZXF1ZXN0Q3JlZGVudGlhbHM6Ok9taXQgfTsKLSAgICBSZXF1ZXN0Q2FjaGUgY2FjaGUgeyBSZXF1
ZXN0Q2FjaGU6OkRlZmF1bHQgfTsKLSAgICBSZXF1ZXN0UmVkaXJlY3QgcmVkaXJlY3QgeyBSZXF1
ZXN0UmVkaXJlY3Q6OkZvbGxvdyB9OworICAgIGVudW0gY2xhc3MgVHlwZSB7IEVtcHR5U3RyaW5n
LCBBdWRpbywgRm9udCwgSW1hZ2UsIFNjcmlwdCwgU3R5bGUsIFRyYWNrLCBWaWRlbyB9OworICAg
IFR5cGUgdHlwZSB7IFR5cGU6OkVtcHR5U3RyaW5nIH07CisKKyAgICBlbnVtIGNsYXNzIERlc3Rp
bmF0aW9uIHsgRW1wdHlTdHJpbmcsIERvY3VtZW50LCBTaGFyZWR3b3JrZXIsIFN1YnJlc291cmNl
LCBVbmtub3duLCBXb3JrZXIgfTsKKyAgICBEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbiB7IERlc3Rp
bmF0aW9uOjpFbXB0eVN0cmluZyB9OworCisgICAgZW51bSBjbGFzcyBNb2RlIHsgTmF2aWdhdGUs
IFNhbWVPcmlnaW4sIE5vQ29ycywgQ29ycyB9OworICAgIE1vZGUgbW9kZSB7IE1vZGU6Ok5vQ29y
cyB9OworCisgICAgZW51bSBjbGFzcyBDcmVkZW50aWFscyB7IE9taXQsIFNhbWVPcmlnaW4sIElu
Y2x1ZGUgfTsKKyAgICBDcmVkZW50aWFscyBjcmVkZW50aWFscyB7IENyZWRlbnRpYWxzOjpPbWl0
IH07CisKKyAgICBlbnVtIGNsYXNzIENhY2hlIHsgRGVmYXVsdCwgTm9TdG9yZSwgUmVsb2FkLCBO
b0NhY2hlLCBGb3JjZUNhY2hlIH07CisgICAgQ2FjaGUgY2FjaGUgeyBDYWNoZTo6RGVmYXVsdCB9
OworCisgICAgZW51bSBjbGFzcyBSZWRpcmVjdCB7IEZvbGxvdywgRXJyb3IsIE1hbnVhbCB9Owor
ICAgIFJlZGlyZWN0IHJlZGlyZWN0IHsgUmVkaXJlY3Q6OkZvbGxvdyB9OworCisgICAgZW51bSBj
bGFzcyBSZWZlcnJlclBvbGljeSB7IEVtcHR5U3RyaW5nLCBOb1JlZmVycmVyLCBOb1JlZmVycmVy
V2hlbkRvd25ncmFkZSwgT3JpZ2luT25seSwgT3JpZ2luV2hlbkNyb3NzT3JpZ2luLCBVbnNhZmVV
cmwgfTsKICAgICBSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSB7IFJlZmVycmVyUG9saWN5
OjpFbXB0eVN0cmluZyB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlcXVlc3QuY3BwCmluZGV4IDEwZjdjNWNhZjZmN2ViOTJhNmQwMzQyZGI2NjA1MTBhOGI5
M2Q4ZmEuLjMwM2E4MTFlZjJjYmVkMWNiNmJiNTU2MDUyYjVkMGI3ZGUzNjUyMWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAKQEAgLTQyLDE3ICs0
MiwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgYm9vbCBzZXRSZWZlcnJlclBvbGlj
eShGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXJQb2xpY3kpCiB7
CiAgICAgaWYgKHJlZmVycmVyUG9saWN5LmlzRW1wdHkoKSkKLSAgICAgICAgb3B0aW9ucy5yZWZl
cnJlclBvbGljeSA9IFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZzsKKyAgICAgICAgb3B0aW9u
cy5yZWZlcnJlclBvbGljeSA9IEZldGNoT3B0aW9uczo6UmVmZXJyZXJQb2xpY3k6OkVtcHR5U3Ry
aW5nOwogICAgIGVsc2UgaWYgKHJlZmVycmVyUG9saWN5ID09ICJuby1yZWZlcnJlciIpCi0gICAg
ICAgIG9wdGlvbnMucmVmZXJyZXJQb2xpY3kgPSBSZWZlcnJlclBvbGljeTo6Tm9SZWZlcnJlcjsK
KyAgICAgICAgb3B0aW9ucy5yZWZlcnJlclBvbGljeSA9IEZldGNoT3B0aW9uczo6UmVmZXJyZXJQ
b2xpY3k6Ok5vUmVmZXJyZXI7CiAgICAgZWxzZSBpZiAocmVmZXJyZXJQb2xpY3kgPT0gIm5vLXJl
ZmVycmVyLXdoZW4tZG93bmdyYWRlIikKLSAgICAgICAgb3B0aW9ucy5yZWZlcnJlclBvbGljeSA9
IFJlZmVycmVyUG9saWN5OjpOb1JlZmVycmVyV2hlbkRvd25ncmFkZTsKKyAgICAgICAgb3B0aW9u
cy5yZWZlcnJlclBvbGljeSA9IEZldGNoT3B0aW9uczo6UmVmZXJyZXJQb2xpY3k6Ok5vUmVmZXJy
ZXJXaGVuRG93bmdyYWRlOwogICAgIGVsc2UgaWYgKHJlZmVycmVyUG9saWN5ID09ICJvcmlnaW4t
b25seSIpCi0gICAgICAgIG9wdGlvbnMucmVmZXJyZXJQb2xpY3kgPSBSZWZlcnJlclBvbGljeTo6
T3JpZ2luT25seTsKKyAgICAgICAgb3B0aW9ucy5yZWZlcnJlclBvbGljeSA9IEZldGNoT3B0aW9u
czo6UmVmZXJyZXJQb2xpY3k6Ok9yaWdpbk9ubHk7CiAgICAgZWxzZSBpZiAocmVmZXJyZXJQb2xp
Y3kgPT0gIm9yaWdpbi13aGVuLWNyb3NzLW9yaWdpbiIpCi0gICAgICAgIG9wdGlvbnMucmVmZXJy
ZXJQb2xpY3kgPSBSZWZlcnJlclBvbGljeTo6T3JpZ2luV2hlbkNyb3NzT3JpZ2luOworICAgICAg
ICBvcHRpb25zLnJlZmVycmVyUG9saWN5ID0gRmV0Y2hPcHRpb25zOjpSZWZlcnJlclBvbGljeTo6
T3JpZ2luV2hlbkNyb3NzT3JpZ2luOwogICAgIGVsc2UgaWYgKHJlZmVycmVyUG9saWN5ID09ICJ1
bnNhZmUtdXJsIikKLSAgICAgICAgb3B0aW9ucy5yZWZlcnJlclBvbGljeSA9IFJlZmVycmVyUG9s
aWN5OjpVbnNhZmVVcmw7CisgICAgICAgIG9wdGlvbnMucmVmZXJyZXJQb2xpY3kgPSBGZXRjaE9w
dGlvbnM6OlJlZmVycmVyUG9saWN5OjpVbnNhZmVVcmw7CiAgICAgZWxzZQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CkBAIC02MSwxMyArNjEsMTMgQEAgc3RhdGljIGJv
b2wgc2V0UmVmZXJyZXJQb2xpY3koRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcm
IHJlZmVycmVyUG9saWMKIHN0YXRpYyBib29sIHNldE1vZGUoRmV0Y2hPcHRpb25zJiBvcHRpb25z
LCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgaWYgKG1vZGUgPT0gIm5hdmlnYXRlIikKLSAg
ICAgICAgb3B0aW9ucy5tb2RlID0gUmVxdWVzdE1vZGU6Ok5hdmlnYXRlOworICAgICAgICBvcHRp
b25zLm1vZGUgPSBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5hdmlnYXRlOwogICAgIGVsc2UgaWYgKG1v
ZGUgPT0gInNhbWUtb3JpZ2luIikKLSAgICAgICAgb3B0aW9ucy5tb2RlID0gUmVxdWVzdE1vZGU6
OlNhbWVPcmlnaW47CisgICAgICAgIG9wdGlvbnMubW9kZSA9IEZldGNoT3B0aW9uczo6TW9kZTo6
U2FtZU9yaWdpbjsKICAgICBlbHNlIGlmIChtb2RlID09ICJuby1jb3JzIikKLSAgICAgICAgb3B0
aW9ucy5tb2RlID0gUmVxdWVzdE1vZGU6Ok5vQ29yczsKKyAgICAgICAgb3B0aW9ucy5tb2RlID0g
RmV0Y2hPcHRpb25zOjpNb2RlOjpOb0NvcnM7CiAgICAgZWxzZSBpZiAobW9kZSA9PSAiY29ycyIp
Ci0gICAgICAgIG9wdGlvbnMubW9kZSA9IFJlcXVlc3RNb2RlOjpDb3JzOworICAgICAgICBvcHRp
b25zLm1vZGUgPSBGZXRjaE9wdGlvbnM6Ok1vZGU6OkNvcnM7CiAgICAgZWxzZQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CkBAIC03NiwxMSArNzYsMTEgQEAgc3RhdGlj
IGJvb2wgc2V0TW9kZShGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgbW9kZSkK
IHN0YXRpYyBib29sIHNldENyZWRlbnRpYWxzKEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3Qg
U3RyaW5nJiBjcmVkZW50aWFscykKIHsKICAgICBpZiAoY3JlZGVudGlhbHMgPT0gIm9taXQiKQot
ICAgICAgICBvcHRpb25zLmNyZWRlbnRpYWxzID0gUmVxdWVzdENyZWRlbnRpYWxzOjpPbWl0Owor
ICAgICAgICBvcHRpb25zLmNyZWRlbnRpYWxzID0gRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6
T21pdDsKICAgICBlbHNlIGlmIChjcmVkZW50aWFscyA9PSAic2FtZS1vcmlnaW4iKQotICAgICAg
ICBvcHRpb25zLmNyZWRlbnRpYWxzID0gUmVxdWVzdENyZWRlbnRpYWxzOjpTYW1lT3JpZ2luOwor
ICAgICAgICBvcHRpb25zLmNyZWRlbnRpYWxzID0gRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6
U2FtZU9yaWdpbjsKICAgICBlbHNlIGlmIChjcmVkZW50aWFscyA9PSAiaW5jbHVkZSIpCi0gICAg
ICAgIG9wdGlvbnMuY3JlZGVudGlhbHMgPSBSZXF1ZXN0Q3JlZGVudGlhbHM6OkluY2x1ZGU7Cisg
ICAgICAgIG9wdGlvbnMuY3JlZGVudGlhbHMgPSBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpJ
bmNsdWRlOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVl
OwpAQCAtODksMTUgKzg5LDE1IEBAIHN0YXRpYyBib29sIHNldENyZWRlbnRpYWxzKEZldGNoT3B0
aW9ucyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFscykKIHN0YXRpYyBib29sIHNl
dENhY2hlKEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiBjYWNoZSkKIHsKICAg
ICBpZiAoY2FjaGUgPT0gImRlZmF1bHQiKQotICAgICAgICBvcHRpb25zLmNhY2hlID0gUmVxdWVz
dENhY2hlOjpEZWZhdWx0OworICAgICAgICBvcHRpb25zLmNhY2hlID0gRmV0Y2hPcHRpb25zOjpD
YWNoZTo6RGVmYXVsdDsKICAgICBlbHNlIGlmIChjYWNoZSA9PSAibm8tc3RvcmUiKQotICAgICAg
ICBvcHRpb25zLmNhY2hlID0gUmVxdWVzdENhY2hlOjpOb1N0b3JlOworICAgICAgICBvcHRpb25z
LmNhY2hlID0gRmV0Y2hPcHRpb25zOjpDYWNoZTo6Tm9TdG9yZTsKICAgICBlbHNlIGlmIChjYWNo
ZSA9PSAicmVsb2FkIikKLSAgICAgICAgb3B0aW9ucy5jYWNoZSA9IFJlcXVlc3RDYWNoZTo6UmVs
b2FkOworICAgICAgICBvcHRpb25zLmNhY2hlID0gRmV0Y2hPcHRpb25zOjpDYWNoZTo6UmVsb2Fk
OwogICAgIGVsc2UgaWYgKGNhY2hlID09ICJuby1jYWNoZSIpCi0gICAgICAgIG9wdGlvbnMuY2Fj
aGUgPSBSZXF1ZXN0Q2FjaGU6Ok5vQ2FjaGU7CisgICAgICAgIG9wdGlvbnMuY2FjaGUgPSBGZXRj
aE9wdGlvbnM6OkNhY2hlOjpOb0NhY2hlOwogICAgIGVsc2UgaWYgKGNhY2hlID09ICJmb3JjZS1j
YWNoZSIpCi0gICAgICAgIG9wdGlvbnMuY2FjaGUgPSBSZXF1ZXN0Q2FjaGU6OkZvcmNlQ2FjaGU7
CisgICAgICAgIG9wdGlvbnMuY2FjaGUgPSBGZXRjaE9wdGlvbnM6OkNhY2hlOjpGb3JjZUNhY2hl
OwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwpAQCAt
MTA2LDExICsxMDYsMTEgQEAgc3RhdGljIGJvb2wgc2V0Q2FjaGUoRmV0Y2hPcHRpb25zJiBvcHRp
b25zLCBjb25zdCBTdHJpbmcmIGNhY2hlKQogc3RhdGljIGJvb2wgc2V0UmVkaXJlY3QoRmV0Y2hP
cHRpb25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIHJlZGlyZWN0KQogewogICAgIGlmIChyZWRp
cmVjdCA9PSAiZm9sbG93IikKLSAgICAgICAgb3B0aW9ucy5yZWRpcmVjdCA9IFJlcXVlc3RSZWRp
cmVjdDo6Rm9sbG93OworICAgICAgICBvcHRpb25zLnJlZGlyZWN0ID0gRmV0Y2hPcHRpb25zOjpS
ZWRpcmVjdDo6Rm9sbG93OwogICAgIGVsc2UgaWYgKHJlZGlyZWN0ID09ICJlcnJvciIpCi0gICAg
ICAgIG9wdGlvbnMucmVkaXJlY3QgPSBSZXF1ZXN0UmVkaXJlY3Q6OkVycm9yOworICAgICAgICBv
cHRpb25zLnJlZGlyZWN0ID0gRmV0Y2hPcHRpb25zOjpSZWRpcmVjdDo6RXJyb3I7CiAgICAgZWxz
ZSBpZiAocmVkaXJlY3QgPT0gIm1hbnVhbCIpCi0gICAgICAgIG9wdGlvbnMucmVkaXJlY3QgPSBS
ZXF1ZXN0UmVkaXJlY3Q6Ok1hbnVhbDsKKyAgICAgICAgb3B0aW9ucy5yZWRpcmVjdCA9IEZldGNo
T3B0aW9uczo6UmVkaXJlY3Q6Ok1hbnVhbDsKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE3Myw3ICsxNzMsNyBAQCBzdGF0aWMgYm9vbCBidWls
ZE9wdGlvbnMoRmV0Y2hSZXF1ZXN0OjpJbnRlcm5hbFJlcXVlc3QmIHJlcXVlc3QsIFNjcmlwdEV4
ZWN1dGlvbgogCiAgICAgaWYgKGluaXQuZ2V0KCJtb2RlIiwgdmFsdWUpICYmICFzZXRNb2RlKHJl
cXVlc3Qub3B0aW9ucywgdmFsdWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKHJl
cXVlc3Qub3B0aW9ucy5tb2RlID09IFJlcXVlc3RNb2RlOjpOYXZpZ2F0ZSkKKyAgICBpZiAocmVx
dWVzdC5vcHRpb25zLm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpOYXZpZ2F0ZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGluaXQuZ2V0KCJjcmVkZW50aWFscyIsIHZhbHVl
KSAmJiAhc2V0Q3JlZGVudGlhbHMocmVxdWVzdC5vcHRpb25zLCB2YWx1ZSkpCkBAIC0xOTYsNyAr
MTk2LDcgQEAgc3RhdGljIGJvb2wgYnVpbGRPcHRpb25zKEZldGNoUmVxdWVzdDo6SW50ZXJuYWxS
ZXF1ZXN0JiByZXF1ZXN0LCBTY3JpcHRFeGVjdXRpb24KIHN0YXRpYyBSZWZQdHI8RmV0Y2hIZWFk
ZXJzPiBidWlsZEhlYWRlcnMoY29uc3QgRGljdGlvbmFyeSYgaW5pdCwgY29uc3QgRmV0Y2hSZXF1
ZXN0OjpJbnRlcm5hbFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEZldGNoSGVhZGVycyogaW5wdXRI
ZWFkZXJzID0gbnVsbHB0cikKIHsKICAgICBGZXRjaEhlYWRlcnM6Okd1YXJkIGd1YXJkID0gRmV0
Y2hIZWFkZXJzOjpHdWFyZDo6UmVxdWVzdDsKLSAgICBpZiAocmVxdWVzdC5vcHRpb25zLm1vZGUg
PT0gUmVxdWVzdE1vZGU6Ok5vQ29ycykgeworICAgIGlmIChyZXF1ZXN0Lm9wdGlvbnMubW9kZSA9
PSBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5vQ29ycykgewogICAgICAgICBjb25zdCBTdHJpbmcmIG1l
dGhvZCA9IHJlcXVlc3QucmVxdWVzdC5odHRwTWV0aG9kKCk7CiAgICAgICAgIGlmIChtZXRob2Qg
IT0gIkdFVCIgJiYgbWV0aG9kICE9ICJQT1NUIiAmJiBtZXRob2QgIT0gIkhFQUQiKQogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNDQsOCArMjQ0LDggQEAgUmVmUHRyPEZldGNoUmVx
dWVzdD4gRmV0Y2hSZXF1ZXN0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgY29uc3QKICAgICB9CiAKICAgICBGZXRjaFJlcXVlc3Q6OkludGVybmFsUmVxdWVzdCBpbnRl
cm5hbFJlcXVlc3Q7Ci0gICAgaW50ZXJuYWxSZXF1ZXN0Lm9wdGlvbnMubW9kZSA9IFJlcXVlc3RN
b2RlOjpDb3JzOwotICAgIGludGVybmFsUmVxdWVzdC5vcHRpb25zLmNyZWRlbnRpYWxzID0gUmVx
dWVzdENyZWRlbnRpYWxzOjpPbWl0OworICAgIGludGVybmFsUmVxdWVzdC5vcHRpb25zLm1vZGUg
PSBNb2RlOjpDb3JzOworICAgIGludGVybmFsUmVxdWVzdC5vcHRpb25zLmNyZWRlbnRpYWxzID0g
Q3JlZGVudGlhbHM6Ok9taXQ7CiAgICAgaW50ZXJuYWxSZXF1ZXN0LnJlZmVycmVyID0gQVNDSUlM
aXRlcmFsKCJjbGllbnQiKTsKICAgICBpbnRlcm5hbFJlcXVlc3QucmVxdWVzdC5zZXRVUkwocmVx
dWVzdFVSTCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5o
CmluZGV4IDVmNTQ4MDY5ZGE1MjFiZDBkZjRhMzc0YmNhNTk2MTA5NzJkZjg2MDIuLmRiNGQyMjBj
MjdhMmRiM2MyMmI2YjlmODg2Njg2YzNjYmNjNzMzMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuaApAQCAtNTIsMTQgKzUyLDI5IEBAIHB1YmxpYzoKICAg
ICBjb25zdCBTdHJpbmcmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuYWxSZXF1ZXN0LnJl
cXVlc3QudXJsKCkuc3RyaW5nKCk7IH0KICAgICBGZXRjaEhlYWRlcnMmIGhlYWRlcnMoKSB7IHJl
dHVybiBtX2hlYWRlcnMuZ2V0KCk7IH0KIAotICAgIFJlcXVlc3RUeXBlIHR5cGUoKSBjb25zdDsK
LSAgICBSZXF1ZXN0RGVzdGluYXRpb24gZGVzdGluYXRpb24oKSBjb25zdDsKKyAgICB1c2luZyBU
eXBlID0gRmV0Y2hPcHRpb25zOjpUeXBlOworICAgIFR5cGUgdHlwZSgpIGNvbnN0OworCisgICAg
dXNpbmcgRGVzdGluYXRpb24gPSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOworICAgIERlc3Rp
bmF0aW9uIGRlc3RpbmF0aW9uKCkgY29uc3Q7CisKICAgICBTdHJpbmcgcmVmZXJyZXIoKSBjb25z
dDsKKworICAgIHVzaW5nIFJlZmVycmVyUG9saWN5ID0gRmV0Y2hPcHRpb25zOjpSZWZlcnJlclBv
bGljeTsKICAgICBSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSgpIGNvbnN0OwotICAgIFJl
cXVlc3RNb2RlIG1vZGUoKSBjb25zdDsKLSAgICBSZXF1ZXN0Q3JlZGVudGlhbHMgY3JlZGVudGlh
bHMoKSBjb25zdDsKLSAgICBSZXF1ZXN0Q2FjaGUgY2FjaGUoKSBjb25zdDsKLSAgICBSZXF1ZXN0
UmVkaXJlY3QgcmVkaXJlY3QoKSBjb25zdDsKKworICAgIHVzaW5nIE1vZGUgPSBGZXRjaE9wdGlv
bnM6Ok1vZGU7CisgICAgTW9kZSBtb2RlKCkgY29uc3Q7CisKKyAgICB1c2luZyBDcmVkZW50aWFs
cyA9IEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM7CisgICAgQ3JlZGVudGlhbHMgY3JlZGVudGlh
bHMoKSBjb25zdDsKKworICAgIHVzaW5nIENhY2hlID0gRmV0Y2hPcHRpb25zOjpDYWNoZTsKKyAg
ICBDYWNoZSBjYWNoZSgpIGNvbnN0OworCisgICAgdXNpbmcgUmVkaXJlY3QgPSBGZXRjaE9wdGlv
bnM6OlJlZGlyZWN0OworICAgIFJlZGlyZWN0IHJlZGlyZWN0KCkgY29uc3Q7CisKICAgICBjb25z
dCBTdHJpbmcmIGludGVncml0eSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuYWxSZXF1ZXN0Lmlu
dGVncml0eTsgfQogCiAgICAgUmVmUHRyPEZldGNoUmVxdWVzdD4gY2xvbmUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTkyLDM3ICsxMDcsMzcgQEAgaW5saW5l
IEZldGNoUmVxdWVzdDo6RmV0Y2hSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIEZldGNoQm9keSYmIGIKIHsKIH0KIAotaW5saW5lIFJlcXVlc3RDYWNoZSBGZXRjaFJlcXVl
c3Q6OmNhY2hlKCkgY29uc3QKK2lubGluZSBhdXRvIEZldGNoUmVxdWVzdDo6Y2FjaGUoKSBjb25z
dCAtPiBDYWNoZQogewogICAgIHJldHVybiBtX2ludGVybmFsUmVxdWVzdC5vcHRpb25zLmNhY2hl
OwogfQogCi1pbmxpbmUgUmVxdWVzdENyZWRlbnRpYWxzIEZldGNoUmVxdWVzdDo6Y3JlZGVudGlh
bHMoKSBjb25zdAoraW5saW5lIGF1dG8gRmV0Y2hSZXF1ZXN0OjpjcmVkZW50aWFscygpIGNvbnN0
IC0+IENyZWRlbnRpYWxzCiB7CiAgICAgcmV0dXJuIG1faW50ZXJuYWxSZXF1ZXN0Lm9wdGlvbnMu
Y3JlZGVudGlhbHM7CiB9CiAKLWlubGluZSBSZXF1ZXN0RGVzdGluYXRpb24gRmV0Y2hSZXF1ZXN0
OjpkZXN0aW5hdGlvbigpIGNvbnN0CitpbmxpbmUgYXV0byBGZXRjaFJlcXVlc3Q6OmRlc3RpbmF0
aW9uKCkgY29uc3QgLT4gRGVzdGluYXRpb24KIHsKICAgICByZXR1cm4gbV9pbnRlcm5hbFJlcXVl
c3Qub3B0aW9ucy5kZXN0aW5hdGlvbjsKIH0KIAotaW5saW5lIFJlcXVlc3RNb2RlIEZldGNoUmVx
dWVzdDo6bW9kZSgpIGNvbnN0CitpbmxpbmUgYXV0byBGZXRjaFJlcXVlc3Q6Om1vZGUoKSBjb25z
dCAtPiBNb2RlCiB7CiAgICAgcmV0dXJuIG1faW50ZXJuYWxSZXF1ZXN0Lm9wdGlvbnMubW9kZTsK
IH0KIAotaW5saW5lIFJlcXVlc3RSZWRpcmVjdCBGZXRjaFJlcXVlc3Q6OnJlZGlyZWN0KCkgY29u
c3QKK2lubGluZSBhdXRvIEZldGNoUmVxdWVzdDo6cmVkaXJlY3QoKSBjb25zdCAtPiBSZWRpcmVj
dAogewogICAgIHJldHVybiBtX2ludGVybmFsUmVxdWVzdC5vcHRpb25zLnJlZGlyZWN0OwogfQog
Ci1pbmxpbmUgUmVmZXJyZXJQb2xpY3kgRmV0Y2hSZXF1ZXN0OjpyZWZlcnJlclBvbGljeSgpIGNv
bnN0CitpbmxpbmUgYXV0byBGZXRjaFJlcXVlc3Q6OnJlZmVycmVyUG9saWN5KCkgY29uc3QgLT4g
UmVmZXJyZXJQb2xpY3kKIHsKICAgICByZXR1cm4gbV9pbnRlcm5hbFJlcXVlc3Qub3B0aW9ucy5y
ZWZlcnJlclBvbGljeTsKIH0KIAotaW5saW5lIFJlcXVlc3RUeXBlIEZldGNoUmVxdWVzdDo6dHlw
ZSgpIGNvbnN0CitpbmxpbmUgYXV0byBGZXRjaFJlcXVlc3Q6OnR5cGUoKSBjb25zdCAtPiBUeXBl
CiB7CiAgICAgcmV0dXJuIG1faW50ZXJuYWxSZXF1ZXN0Lm9wdGlvbnMudHlwZTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IDIxYTg0
MWZjNDZiM2M1MjUwNTM2NjIyZjA5MDlmMjdmZWMwOGU5OTQuLjM1YmUyNDM5NGZlNGFjMjVlMDE3
ZDAyNTVmZWI0NWNkODYzOGE4NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtNTEsNyArNTEsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wg
aXNOdWxsQm9keVN0YXR1cyhpbnQgc3RhdHVzKQogCiBSZWY8RmV0Y2hSZXNwb25zZT4gRmV0Y2hS
ZXNwb25zZTo6ZXJyb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBGZXRjaFJlc3BvbnNlKGNvbnRleHQsIFJlc3BvbnNlVHlwZTo6
RXJyb3IsIHsgfSwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUoRmV0Y2hIZWFkZXJzOjpHdWFyZDo6SW1t
dXRhYmxlKSwgeyB9KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXNwb25zZShj
b250ZXh0LCBUeXBlOjpFcnJvciwgeyB9LCBGZXRjaEhlYWRlcnM6OmNyZWF0ZShGZXRjaEhlYWRl
cnM6Okd1YXJkOjpJbW11dGFibGUpLCB7IH0pKTsKIH0KIAogUmVmUHRyPEZldGNoUmVzcG9uc2U+
IEZldGNoUmVzcG9uc2U6OnJlZGlyZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgc3RhdHVzLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTY2
LDcgKzY2LDcgQEAgUmVmUHRyPEZldGNoUmVzcG9uc2U+IEZldGNoUmVzcG9uc2U6OnJlZGlyZWN0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGMKICAgICAgICAgZWMgPSBUeXBlRXJy
b3I7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBhdXRvIHJlZGlyZWN0UmVz
cG9uc2UgPSBhZG9wdFJlZigqbmV3IEZldGNoUmVzcG9uc2UoY29udGV4dCwgUmVzcG9uc2VUeXBl
OjpEZWZhdWx0LCB7IH0sIEZldGNoSGVhZGVyczo6Y3JlYXRlKEZldGNoSGVhZGVyczo6R3VhcmQ6
OkltbXV0YWJsZSksIHsgfSkpOworICAgIGF1dG8gcmVkaXJlY3RSZXNwb25zZSA9IGFkb3B0UmVm
KCpuZXcgRmV0Y2hSZXNwb25zZShjb250ZXh0LCBUeXBlOjpEZWZhdWx0LCB7IH0sIEZldGNoSGVh
ZGVyczo6Y3JlYXRlKEZldGNoSGVhZGVyczo6R3VhcmQ6OkltbXV0YWJsZSksIHsgfSkpOwogICAg
IHJlZGlyZWN0UmVzcG9uc2UtPm1fcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoc3RhdHVzKTsK
ICAgICByZWRpcmVjdFJlc3BvbnNlLT5tX2hlYWRlcnMtPmZhc3RTZXQoSFRUUEhlYWRlck5hbWU6
OkxvY2F0aW9uLCByZXF1ZXN0VVJMLnN0cmluZygpKTsKICAgICByZXR1cm4gV1RGTW92ZShyZWRp
cmVjdFJlc3BvbnNlKTsKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6Omlu
aXRpYWxpemVXaXRoKGNvbnN0IERpY3Rpb25hcnkmIGluaXQsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ICAgIH0KIH0KIAotRmV0Y2hSZXNwb25zZTo6RmV0Y2hSZXNwb25zZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBSZXNwb25zZVR5cGUgdHlwZSwgRmV0Y2hCb2R5JiYgYm9keSwgUmVm
PEZldGNoSGVhZGVycz4mJiBoZWFkZXJzLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UpCitG
ZXRjaFJlc3BvbnNlOjpGZXRjaFJlc3BvbnNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIFR5cGUgdHlwZSwgRmV0Y2hCb2R5JiYgYm9keSwgUmVmPEZldGNoSGVhZGVycz4mJiBoZWFk
ZXJzLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UpCiAgICAgOiBGZXRjaEJvZHlPd25lcihj
b250ZXh0LCBXVEZNb3ZlKGJvZHkpKQogICAgICwgbV90eXBlKHR5cGUpCiAgICAgLCBtX3Jlc3Bv
bnNlKFdURk1vdmUocmVzcG9uc2UpKQpAQCAtMTMwLDcgKzEzMCw3IEBAIFJlZlB0cjxGZXRjaFJl
c3BvbnNlPiBGZXRjaFJlc3BvbnNlOjpjbG9uZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBFeGNlCiAKIHZvaWQgRmV0Y2hSZXNwb25zZTo6c3RhcnRGZXRjaGluZyhTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBGZXRjaFJlcXVlc3QmIHJlcXVlc3QsIEZldGNo
UHJvbWlzZSYmIHByb21pc2UpCiB7Ci0gICAgYXV0byByZXNwb25zZSA9IGFkb3B0UmVmKCpuZXcg
RmV0Y2hSZXNwb25zZShjb250ZXh0LCBSZXNwb25zZVR5cGU6OkJhc2ljLCBGZXRjaEJvZHk6Omxv
YWRpbmdCb2R5KCksIEZldGNoSGVhZGVyczo6Y3JlYXRlKEZldGNoSGVhZGVyczo6R3VhcmQ6Oklt
bXV0YWJsZSksIFJlc291cmNlUmVzcG9uc2UoKSkpOworICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9w
dFJlZigqbmV3IEZldGNoUmVzcG9uc2UoY29udGV4dCwgVHlwZTo6QmFzaWMsIEZldGNoQm9keTo6
bG9hZGluZ0JvZHkoKSwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUoRmV0Y2hIZWFkZXJzOjpHdWFyZDo6
SW1tdXRhYmxlKSwgUmVzb3VyY2VSZXNwb25zZSgpKSk7CiAKICAgICAvLyBTZXR0aW5nIHBlbmRp
bmcgYWN0aXZpdHkgdW50aWwgQm9keUxvYWRlciBkaWRGYWlsIG9yIGRpZFN1Y2NlZWQgY2FsbGJh
Y2sgaXMgY2FsbGVkLgogICAgIHJlc3BvbnNlLT5zZXRQZW5kaW5nQWN0aXZpdHkocmVzcG9uc2Uu
cHRyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApp
bmRleCBkOWVmMzhkMjExYTEyZGJkYjk5NWZjZTU5NDI2MjMyZWE0NzM2YjRlLi43ZTQ4YjAzYjA0
MzU5YzdjZjAwNDYwODc4Zjc0ZDliOTZiNjRmMzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApAQCAtNDYsMTEgKzQ2LDExIEBAIGNsYXNzIFJlYWRh
YmxlU3RyZWFtU291cmNlOwogCiB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCi1lbnVtIGNs
YXNzIFJlc3BvbnNlVHlwZSB7IEJhc2ljLCBDb3JzLCBEZWZhdWx0LCBFcnJvciwgT3BhcXVlLCBP
cGFxdWVyZWRpcmVjdCB9OwotCiBjbGFzcyBGZXRjaFJlc3BvbnNlIGZpbmFsIDogcHVibGljIEZl
dGNoQm9keU93bmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZldGNoUmVzcG9uc2U+IGNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IEZldGNoUmVzcG9uc2UoY29udGV4dCwgUmVzcG9uc2VUeXBlOjpEZWZhdWx0LCB7IH0sIEZl
dGNoSGVhZGVyczo6Y3JlYXRlKEZldGNoSGVhZGVyczo6R3VhcmQ6OlJlc3BvbnNlKSwgUmVzb3Vy
Y2VSZXNwb25zZSgpKSk7IH0KKyAgICBlbnVtIGNsYXNzIFR5cGUgeyBCYXNpYywgQ29ycywgRGVm
YXVsdCwgRXJyb3IsIE9wYXF1ZSwgT3BhcXVlcmVkaXJlY3QgfTsKKworICAgIHN0YXRpYyBSZWY8
RmV0Y2hSZXNwb25zZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXNwb25zZShjb250ZXh0LCBUeXBlOjpEZWZhdWx0
LCB7IH0sIEZldGNoSGVhZGVyczo6Y3JlYXRlKEZldGNoSGVhZGVyczo6R3VhcmQ6OlJlc3BvbnNl
KSwgUmVzb3VyY2VSZXNwb25zZSgpKSk7IH0KICAgICBzdGF0aWMgUmVmPEZldGNoUmVzcG9uc2U+
IGVycm9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKICAgICBzdGF0aWMgUmVmUHRyPEZldGNo
UmVzcG9uc2U+IHJlZGlyZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcm
LCBpbnQsIEV4Y2VwdGlvbkNvZGUmKTsKIApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGluaXRpYWxpemVXaXRoKGNvbnN0IERpY3Rpb25hcnkmLCBFeGNlcHRpb25Db2RlJik7
CiAKLSAgICBSZXNwb25zZVR5cGUgdHlwZSgpIGNvbnN0OworICAgIFR5cGUgdHlwZSgpIGNvbnN0
OwogICAgIGNvbnN0IFN0cmluZyYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZS51cmwo
KS5zdHJpbmcoKTsgfQogICAgIGJvb2wgcmVkaXJlY3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNS
ZWRpcmVjdGVkOyB9CiAgICAgaW50IHN0YXR1cygpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2Uu
aHR0cFN0YXR1c0NvZGUoKTsgfQpAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAog
cHJpdmF0ZToKLSAgICBGZXRjaFJlc3BvbnNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZXNw
b25zZVR5cGUsIEZldGNoQm9keSYmLCBSZWY8RmV0Y2hIZWFkZXJzPiYmLCBSZXNvdXJjZVJlc3Bv
bnNlJiYpOworICAgIEZldGNoUmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFR5cGUs
IEZldGNoQm9keSYmLCBSZWY8RmV0Y2hIZWFkZXJzPiYmLCBSZXNvdXJjZVJlc3BvbnNlJiYpOwog
CiAgICAgc3RhdGljIHZvaWQgc3RhcnRGZXRjaGluZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
Y29uc3QgRmV0Y2hSZXF1ZXN0JiwgRmV0Y2hQcm9taXNlJiYpOwogCkBAIC0xMDksMTQgKzEwOSwx
NCBAQCBwcml2YXRlOgogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RmV0Y2hMb2FkZXI+IG1fbG9h
ZGVyOwogICAgIH07CiAKLSAgICBSZXNwb25zZVR5cGUgbV90eXBlOworICAgIFR5cGUgbV90eXBl
OwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKICAgICBSZWY8RmV0Y2hIZWFkZXJz
PiBtX2hlYWRlcnM7CiAgICAgYm9vbCBtX2lzUmVkaXJlY3RlZCA9IGZhbHNlOwogICAgIE9wdGlv
bmFsPEJvZHlMb2FkZXI+IG1fYm9keUxvYWRlcjsKIH07CiAKLWlubGluZSBSZXNwb25zZVR5cGUg
RmV0Y2hSZXNwb25zZTo6dHlwZSgpIGNvbnN0CitpbmxpbmUgYXV0byBGZXRjaFJlc3BvbnNlOjp0
eXBlKCkgY29uc3QgLT4gVHlwZQogewogICAgIHJldHVybiBtX3R5cGU7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNI
b3N0LmNwcAppbmRleCA2NmM1ZjE5MThlZDdlM2Y4MzQwOGQwMmI4NzY3MzI1YmQxZWFmYjdlLi45
MTEyMjMwNjRiOTc4MGQzYTRiMTJmMTdiMDI4MGIxOTlhMzk4ZDkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9z
dC5jcHAKQEAgLTIzMyw3ICsyMzMsNyBAQCBTdHJpbmcgTWVkaWFDb250cm9sc0hvc3Q6OmV4dGVy
bmFsRGV2aWNlRGlzcGxheU5hbWUoKSBjb25zdAogI2VuZGlmCiB9CiAKLURldmljZVR5cGUgTWVk
aWFDb250cm9sc0hvc3Q6OmV4dGVybmFsRGV2aWNlVHlwZSgpIGNvbnN0CithdXRvIE1lZGlhQ29u
dHJvbHNIb3N0OjpleHRlcm5hbERldmljZVR5cGUoKSBjb25zdCAtPiBEZXZpY2VUeXBlCiB7CiAj
aWYgIUVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgcmV0dXJuIERldmljZVR5
cGU6Ok5vbmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJv
bHMvTWVkaWFDb250cm9sc0hvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250
cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5oCmluZGV4IGMwYTc4Mjk4ZjQ0ZjM4ZWJmMjNhNTkyYWI4
YzliMWJjZDJkZjZkMzQuLjRiYTNjYTM5Y2E5NjNiZWEzMjE2ZWNhMDMwNjRkMmMwNmUyMDA2N2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNv
bnRyb2xzSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9N
ZWRpYUNvbnRyb2xzSG9zdC5oCkBAIC00Miw4ICs0Miw2IEBAIGNsYXNzIE1lZGlhQ29udHJvbFRl
eHRUcmFja0NvbnRhaW5lckVsZW1lbnQ7CiBjbGFzcyBUZXh0VHJhY2s7CiBjbGFzcyBUZXh0VHJh
Y2tMaXN0OwogCi1lbnVtIGNsYXNzIERldmljZVR5cGUgeyBOb25lLCBBaXJwbGF5LCBUdm91dCB9
OwotCiBjbGFzcyBNZWRpYUNvbnRyb2xzSG9zdCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhQ29u
dHJvbHNIb3N0PiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxNZWRpYUNvbnRyb2xzSG9zdD4g
Y3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqKTsKQEAgLTczLDYgKzcxLDggQEAgcHVibGljOgogICAg
IHZvaWQgZXhpdGVkRnVsbHNjcmVlbigpOwogCiAgICAgU3RyaW5nIGV4dGVybmFsRGV2aWNlRGlz
cGxheU5hbWUoKSBjb25zdDsKKworICAgIGVudW0gY2xhc3MgRGV2aWNlVHlwZSB7IE5vbmUsIEFp
cnBsYXksIFR2b3V0IH07CiAgICAgRGV2aWNlVHlwZSBleHRlcm5hbERldmljZVR5cGUoKSBjb25z
dDsKIAogICAgIGJvb2wgY29udHJvbHNEZXBlbmRPblBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNz
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lv
bi5jcHAKaW5kZXggNzgwYmQwOTAzMDA5MWJjZTYyOGQzYTZkMzRhZjFhZGM1NzNhY2RmNC4uM2E4
MjE2NmYxMDE1OTQzNWI3NmU5Zjg1Y2RmZTQ4YzUxYjliNGVjNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwCkBAIC0zNyw3
ICszNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTWVkaWFTZXNzaW9uOjpNZWRpYVNl
c3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgTWVkaWFTZXNzaW9uS2luZCBr
aW5kKQorTWVkaWFTZXNzaW9uOjpNZWRpYVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgS2luZCBraW5kKQogICAgIDogbV9kb2N1bWVudChkb3duY2FzdDxEb2N1bWVudD4o
Y29udGV4dCkpCiAgICAgLCBtX2tpbmQoa2luZCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmgKaW5kZXggNjdkZDM5MzdkMDAyNzAw
NjAxOGI1N2UxYjRhZWQyZDYxMzkyOTc5MS4uNTExMDE5MWRlYmFkMzY0N2NkMDI2OTkwNGFmOGE2
OTMxZDEwYzRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFTZXNzaW9uLmgKQEAgLTM2LDIwICszNiwxOSBAQCBjbGFzcyBEaWN0aW9uYXJ5Owog
Y2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBIVE1MTWVkaWFFbGVtZW50OwogCi1lbnVtIGNsYXNzIE1l
ZGlhU2Vzc2lvbktpbmQgeyBDb250ZW50LCBUcmFuc2llbnQsIFRyYW5zaWVudFNvbG8sIEFtYmll
bnQgfTsKLQogY2xhc3MgTWVkaWFTZXNzaW9uIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8TWVk
aWFTZXNzaW9uPiB7CiBwdWJsaWM6CisgICAgZW51bSBjbGFzcyBLaW5kIHsgQ29udGVudCwgVHJh
bnNpZW50LCBUcmFuc2llbnRTb2xvLCBBbWJpZW50IH07CiAgICAgZW51bSBjbGFzcyBTdGF0ZSB7
IElkbGUsIEFjdGl2ZSwgSW50ZXJydXB0ZWQgfTsKIAotICAgIHN0YXRpYyBSZWY8TWVkaWFTZXNz
aW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgTWVkaWFTZXNzaW9u
S2luZCBraW5kKQorICAgIHN0YXRpYyBSZWY8TWVkaWFTZXNzaW9uPiBjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgS2luZCBraW5kKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgTWVkaWFTZXNzaW9uKGNvbnRleHQsIGtpbmQpKTsKICAgICB9CiAKICAg
ICB+TWVkaWFTZXNzaW9uKCk7CiAKLSAgICBNZWRpYVNlc3Npb25LaW5kIGtpbmQoKSBjb25zdCB7
IHJldHVybiBtX2tpbmQ7IH0KKyAgICBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7
IH0KICAgICBNZWRpYVJlbW90ZUNvbnRyb2xzKiBjb250cm9scygpOwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgU3RhdGUgY3VycmVudFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50U3RhdGU7
IH0KQEAgLTk1LDcgKzk0LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PEhUTUxNZWRpYUVsZW1l
bnQqPiogbV9pdGVyYXRlZEFjdGl2ZVBhcnRpY2lwYXRpbmdFbGVtZW50cyB7IG51bGxwdHIgfTsK
IAogICAgIERvY3VtZW50JiBtX2RvY3VtZW50OwotICAgIGNvbnN0IE1lZGlhU2Vzc2lvbktpbmQg
bV9raW5kOworICAgIGNvbnN0IEtpbmQgbV9raW5kOwogICAgIFJlZlB0cjxNZWRpYVJlbW90ZUNv
bnRyb2xzPiBtX2NvbnRyb2xzOwogICAgIE1lZGlhU2Vzc2lvbk1ldGFkYXRhIG1fbWV0YWRhdGE7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRp
YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291
cmNlLmNwcAppbmRleCAxYTA5YzNlZmZmZGY2OTI0MDdkOTE0YWI1MGY4NjdmYmM4NGQyYTE0Li40
MTQyODc5YzVjM2QxODA2YTQ3NGI2YWE3ZWM4YTM5NjEwYmVlZTY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcApAQCAtNTQ1LDcg
KzU0NSw3IEBAIFNvdXJjZUJ1ZmZlciogTWVkaWFTb3VyY2U6OmFkZFNvdXJjZUJ1ZmZlcihjb25z
dCBTdHJpbmcmIHR5cGUsIEV4Y2VwdGlvbkNvZGUmIGVjCiAgICAgLy8g4oazIFNldCB0aGUgbW9k
ZSBhdHRyaWJ1dGUgb24gdGhlIG5ldyBvYmplY3QgdG8gInNlcXVlbmNlIi4KICAgICAvLyBPdGhl
cndpc2U6CiAgICAgLy8g4oazIFNldCB0aGUgbW9kZSBhdHRyaWJ1dGUgb24gdGhlIG5ldyBvYmpl
Y3QgdG8gInNlZ21lbnRzIi4KLSAgICBidWZmZXItPnNldE1vZGUoc2hvdWxkR2VuZXJhdGVUaW1l
c3RhbXBzID8gQXBwZW5kTW9kZTo6U2VxdWVuY2UgOiBBcHBlbmRNb2RlOjpTZWdtZW50cywgSUdO
T1JFX0VYQ0VQVElPTik7CisgICAgYnVmZmVyLT5zZXRNb2RlKHNob3VsZEdlbmVyYXRlVGltZXN0
YW1wcyA/IFNvdXJjZUJ1ZmZlcjo6QXBwZW5kTW9kZTo6U2VxdWVuY2UgOiBTb3VyY2VCdWZmZXI6
OkFwcGVuZE1vZGU6OlNlZ21lbnRzLCBJR05PUkVfRVhDRVBUSU9OKTsKIAogICAgIFNvdXJjZUJ1
ZmZlciogcmVzdWx0ID0gYnVmZmVyLnB0cigpOwogCkBAIC02NzEsNyArNjcxLDcgQEAgdm9pZCBN
ZWRpYVNvdXJjZTo6cmVtb3ZlU291cmNlQnVmZmVyKFNvdXJjZUJ1ZmZlciYgYnVmZmVyLCBFeGNl
cHRpb25Db2RlJiBlYykKIAogICAgICAgICAgICAgLy8gOS4zLjIgSWYgdGhlIG1vZGUgYXR0cmli
dXRlIG9uIHRoZSBUZXh0VHJhY2sgb2JqZWN0IGlzIHNldCB0byAic2hvd2luZyIgb3IgImhpZGRl
biIsIHRoZW4KICAgICAgICAgICAgIC8vIHNldCB0aGUgcmVtb3ZlZCBlbmFibGVkIHRleHQgdHJh
Y2sgZmxhZyB0byB0cnVlLgotICAgICAgICAgICAgaWYgKHRyYWNrLT5tb2RlKCkgPT0gVGV4dFRy
YWNrTW9kZTo6U2hvd2luZyB8fCB0cmFjay0+bW9kZSgpID09IFRleHRUcmFja01vZGU6OkhpZGRl
bikKKyAgICAgICAgICAgIGlmICh0cmFjay0+bW9kZSgpID09IFRleHRUcmFjazo6TW9kZTo6U2hv
d2luZyB8fCB0cmFjay0+bW9kZSgpID09IFRleHRUcmFjazo6TW9kZTo6SGlkZGVuKQogICAgICAg
ICAgICAgICAgIHJlbW92ZWRFbmFibGVkVGV4dFRyYWNrID0gdHJ1ZTsKIAogICAgICAgICAgICAg
Ly8gOS4zLjMgUmVtb3ZlIHRoZSBUZXh0VHJhY2sgb2JqZWN0IGZyb20gdGhlIEhUTUxNZWRpYUVs
ZW1lbnQgdGV4dFRyYWNrcyBsaXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9NZWRpYVNvdXJjZS5oCmluZGV4IDU5NzFjODZlNmY0NjBlYzBmMWE3MzhiM2QwNjNh
MWJjYjBhMjFjMDAuLjE5YmExYTRlOGM0NDE5MTRjNWMyZTAzY2M2OGM0NjFjZDQzZmJhOGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmgK
QEAgLTQ4LDggKzQ4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHZW5lcmljRXZl
bnRRdWV1ZTsKIAotZW51bSBjbGFzcyBFbmRPZlN0cmVhbUVycm9yIHsgTmV0d29yaywgRGVjb2Rl
IH07Ci0KIGNsYXNzIE1lZGlhU291cmNlIDogcHVibGljIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVu
dCwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURh
dGEsIHB1YmxpYyBVUkxSZWdpc3RyYWJsZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgc2V0
UmVnaXN0cnkoVVJMUmVnaXN0cnkqKTsKQEAgLTY5LDYgKzY3LDggQEAgcHVibGljOgogICAgIGJv
b2wgaXNDbG9zZWQoKSBjb25zdDsKICAgICBib29sIGlzRW5kZWQoKSBjb25zdDsKICAgICB2b2lk
IHNvdXJjZUJ1ZmZlckRpZENoYW5nZUFjdGl2ZVN0YXRlKFNvdXJjZUJ1ZmZlciYsIGJvb2wpOwor
CisgICAgZW51bSBjbGFzcyBFbmRPZlN0cmVhbUVycm9yIHsgTmV0d29yaywgRGVjb2RlIH07CiAg
ICAgdm9pZCBzdHJlYW1FbmRlZFdpdGhFcnJvcihPcHRpb25hbDxFbmRPZlN0cmVhbUVycm9yPik7
CiAKICAgICAvLyBNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAppbmRleCBiYzQ5MjJiY2Q2
MWU2ZmYwNTQ1NWQwNDAxM2I5MTUzOTdjNjg4OGYwLi5jYzJkM2I4ZGJjZDdmNmUxMGM2OTE0MjYy
ODQ3NGQyNDFjNmVjMjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCkBAIC02NDMsNyArNjQzLDcgQEAgdm9pZCBTb3VyY2VC
dWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlUmVuZGVyaW5nRXJyb3IoU291cmNl
QnVmZmVyUHJpdmEKICAgICBMT0coTWVkaWFTb3VyY2UsICJTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1
ZmZlclByaXZhdGVEaWRSZWNlaXZlUmVuZGVyaW5nRXJyb3IoJXApIC0gcmVzdWx0ID0gJWkiLCB0
aGlzLCBlcnJvcik7CiAKICAgICBpZiAoIWlzUmVtb3ZlZCgpKQotICAgICAgICBtX3NvdXJjZS0+
c3RyZWFtRW5kZWRXaXRoRXJyb3IoRW5kT2ZTdHJlYW1FcnJvcjo6RGVjb2RlKTsKKyAgICAgICAg
bV9zb3VyY2UtPnN0cmVhbUVuZGVkV2l0aEVycm9yKE1lZGlhU291cmNlOjpFbmRPZlN0cmVhbUVy
cm9yOjpEZWNvZGUpOwogfQogCiBzdGF0aWMgYm9vbCBkZWNvZGVUaW1lQ29tcGFyYXRvcihjb25z
dCBQcmVzZW50YXRpb25PcmRlclNhbXBsZU1hcDo6TWFwVHlwZTo6dmFsdWVfdHlwZSYgYSwgY29u
c3QgUHJlc2VudGF0aW9uT3JkZXJTYW1wbGVNYXA6Ok1hcFR5cGU6OnZhbHVlX3R5cGUmIGIpCkBA
IC0xMjcwLDcgKzEyNzAsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6YXBwZW5kRXJyb3IoYm9vbCBk
ZWNvZGVFcnJvclBhcmFtKQogCiAgICAgLy8gNS4gSWYgZGVjb2RlIGVycm9yIGlzIHRydWUsIHRo
ZW4gcnVuIHRoZSBlbmQgb2Ygc3RyZWFtIGFsZ29yaXRobSB3aXRoIHRoZSBlcnJvciBwYXJhbWV0
ZXIgc2V0IHRvICJkZWNvZGUiLgogICAgIGlmIChkZWNvZGVFcnJvclBhcmFtKQotICAgICAgICBt
X3NvdXJjZS0+c3RyZWFtRW5kZWRXaXRoRXJyb3IoRW5kT2ZTdHJlYW1FcnJvcjo6RGVjb2RlKTsK
KyAgICAgICAgbV9zb3VyY2UtPnN0cmVhbUVuZGVkV2l0aEVycm9yKE1lZGlhU291cmNlOjpFbmRP
ZlN0cmVhbUVycm9yOjpEZWNvZGUpOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVm
ZmVyUHJpdmF0ZURpZFJlY2VpdmVTYW1wbGUoU291cmNlQnVmZmVyUHJpdmF0ZSosIFBhc3NSZWZQ
dHI8TWVkaWFTYW1wbGU+IHBycFNhbXBsZSkKQEAgLTE0MjEsNyArMTQyMSw3IEBAIHZvaWQgU291
cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZVNhbXBsZShTb3VyY2VCdWZm
ZXJQcml2YXRlKiwgUGFzCiAgICAgICAgIE1lZGlhVGltZSBwcmVzZW50YXRpb25TdGFydFRpbWUg
PSBNZWRpYVRpbWU6Onplcm9UaW1lKCk7CiAgICAgICAgIGlmIChwcmVzZW50YXRpb25UaW1lc3Rh
bXAgPCBwcmVzZW50YXRpb25TdGFydFRpbWUpIHsKICAgICAgICAgICAgIExPRyhNZWRpYVNvdXJj
ZSwgIlNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVTYW1wbGUoJXAp
IC0gZmFpbGluZyBiZWNhdXNlIHByZXNlbnRhdGlvblRpbWVzdGFtcCA8IHByZXNlbnRhdGlvblN0
YXJ0VGltZSIsIHRoaXMpOwotICAgICAgICAgICAgbV9zb3VyY2UtPnN0cmVhbUVuZGVkV2l0aEVy
cm9yKEVuZE9mU3RyZWFtRXJyb3I6OkRlY29kZSk7CisgICAgICAgICAgICBtX3NvdXJjZS0+c3Ry
ZWFtRW5kZWRXaXRoRXJyb3IoTWVkaWFTb3VyY2U6OkVuZE9mU3RyZWFtRXJyb3I6OkRlY29kZSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTY3NCw3ICsxNjc0LDcgQEAg
dm9pZCBTb3VyY2VCdWZmZXI6OnRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRUcmFjayogdHJhY2sp
CiAgICAgLy8gMi40LjUgQ2hhbmdlcyB0byBzZWxlY3RlZC9lbmFibGVkIHRyYWNrIHN0YXRlCiAg
ICAgLy8gSWYgYSB0ZXh0IHRyYWNrIG1vZGUgYmVjb21lcyAiZGlzYWJsZWQiIGFuZCB0aGUgU291
cmNlQnVmZmVyIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRyYWNrIGlzIG5vdAogICAgIC8vIGFzc29j
aWF0ZWQgd2l0aCBhbnkgb3RoZXIgZW5hYmxlZCBvciBzZWxlY3RlZCB0cmFjaywgdGhlbiBydW4g
dGhlIGZvbGxvd2luZyBzdGVwczoKLSAgICBpZiAodHJhY2stPm1vZGUoKSA9PSBUZXh0VHJhY2tN
b2RlOjpEaXNhYmxlZAorICAgIGlmICh0cmFjay0+bW9kZSgpID09IFRleHRUcmFjazo6TW9kZTo6
RGlzYWJsZWQKICAgICAgICAgJiYgKCFtX3ZpZGVvVHJhY2tzIHx8ICFtX3ZpZGVvVHJhY2tzLT5p
c0FueVRyYWNrRW5hYmxlZCgpKQogICAgICAgICAmJiAoIW1fYXVkaW9UcmFja3MgfHwgIW1fYXVk
aW9UcmFja3MtPmlzQW55VHJhY2tFbmFibGVkKCkpCiAgICAgICAgICYmICghbV90ZXh0VHJhY2tz
IHx8ICFtX3RleHRUcmFja3MtPmlzQW55VHJhY2tFbmFibGVkKCkpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaAppbmRleCA0ODdkZmM4
ZWQxMmQ2NDJiYzJjZDBkOTE1NWNkZDZiNmZjNTY2OTU2Li5jYjBkYzhmN2FiMmU5ZTJkYmEwODc0
NTAwNzI5ODgyMDM5MGJjMDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzb3VyY2UvU291cmNlQnVmZmVyLmgKQEAgLTU4LDEwICs1OCw2IEBAIGNsYXNzIFRleHRUcmFj
a0xpc3Q7CiBjbGFzcyBUaW1lUmFuZ2VzOwogY2xhc3MgVmlkZW9UcmFja0xpc3Q7CiAKLWVudW0g
Y2xhc3MgRW5kT2ZTdHJlYW1FcnJvcjsKLQotZW51bSBjbGFzcyBBcHBlbmRNb2RlIHsgU2VnbWVu
dHMsIFNlcXVlbmNlIH07Ci0KIGNsYXNzIFNvdXJjZUJ1ZmZlciBmaW5hbCA6IHB1YmxpYyBSZWZD
b3VudGVkPFNvdXJjZUJ1ZmZlcj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVu
dFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudCwg
cHVibGljIEF1ZGlvVHJhY2tDbGllbnQsIHB1YmxpYyBWaWRlb1RyYWNrQ2xpZW50LCBwdWJsaWMg
VGV4dFRyYWNrQ2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFNvdXJjZUJ1ZmZlcj4g
Y3JlYXRlKFJlZjxTb3VyY2VCdWZmZXJQcml2YXRlPiYmLCBNZWRpYVNvdXJjZSopOwpAQCAtMTE3
LDYgKzExMyw3IEBAIHB1YmxpYzoKIAogICAgIERvY3VtZW50JiBkb2N1bWVudCgpIGNvbnN0Owog
CisgICAgZW51bSBjbGFzcyBBcHBlbmRNb2RlIHsgU2VnbWVudHMsIFNlcXVlbmNlIH07CiAgICAg
QXBwZW5kTW9kZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CiAgICAgdm9pZCBzZXRN
b2RlKEFwcGVuZE1vZGUsIEV4Y2VwdGlvbkNvZGUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZUluZm8uY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZUluZm8uY3BwCmluZGV4IDRiODI3
OGUxMTdkODY0YTEyZGRhY2YzMmY0YzRiYWRkMjJiMWQyMTcuLmZlNzYwZDkxN2YyZTNkMTBmYTU3
MjU0YmYxMmZiYzA5M2Q5ZGNkNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUgTWVkaWFEZXZpY2VJbmZvOjpNZWRpYURldmlj
ZUluZm8oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBsYWJl
bCwgY29uc3QgU3RyaW5nJiBkZXZpY2VJZCwgY29uc3QgU3RyaW5nJiBncm91cElkLCBNZWRpYURl
dmljZUtpbmQga2luZCkKK2lubGluZSBNZWRpYURldmljZUluZm86Ok1lZGlhRGV2aWNlSW5mbyhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25z
dCBTdHJpbmcmIGRldmljZUlkLCBjb25zdCBTdHJpbmcmIGdyb3VwSWQsIEtpbmQga2luZCkKICAg
ICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKGNvbnRleHQpCiAgICAgLCBtX2xhYmVsKGxh
YmVsKQogICAgICwgbV9kZXZpY2VJZChkZXZpY2VJZCkKQEAgLTM5LDcgKzM5LDcgQEAgaW5saW5l
IE1lZGlhRGV2aWNlSW5mbzo6TWVkaWFEZXZpY2VJbmZvKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IFMKIHsKIH0KIAotUmVmPE1lZGlhRGV2aWNlSW5mbz4gTWVkaWFEZXZp
Y2VJbmZvOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3Ry
aW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBkZXZpY2VJZCwgY29uc3QgU3RyaW5nJiBncm91cElk
LCBNZWRpYURldmljZUtpbmQga2luZCkKK1JlZjxNZWRpYURldmljZUluZm8+IE1lZGlhRGV2aWNl
SW5mbzo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmlu
ZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgZGV2aWNlSWQsIGNvbnN0IFN0cmluZyYgZ3JvdXBJZCwg
S2luZCBraW5kKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhRGV2aWNlSW5mbyhj
b250ZXh0LCBsYWJlbCwgZGV2aWNlSWQsIGdyb3VwSWQsIGtpbmQpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5oCmluZGV4
IGM2NTlmNTJmYTA3OGE0YmI3MDQ3OWY3NDE2OTkzMzU4Zjc5OTFjM2YuLmZjNjg5MDQzMzMwOWQ0
NGU1N2QyYmNjNzk2YmRlZGRhNWY0YTNkYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZUluZm8uaApAQCAtMzMsMjQgKzMzLDI0IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBjbGFzcyBNZWRpYURldmljZUtpbmQgeyBB
dWRpb2lucHV0LCBBdWRpb291dHB1dCwgVmlkZW9pbnB1dCB9OwotCiBjbGFzcyBNZWRpYURldmlj
ZUluZm8gOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYURldmljZUluZm8+LCBwdWJsaWMgU2NyaXB0
V3JhcHBhYmxlLCBwcml2YXRlIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPE1lZGlhRGV2aWNlSW5mbz4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBNZWRp
YURldmljZUtpbmQpOworICAgIGVudW0gY2xhc3MgS2luZCB7IEF1ZGlvaW5wdXQsIEF1ZGlvb3V0
cHV0LCBWaWRlb2lucHV0IH07CisKKyAgICBzdGF0aWMgUmVmPE1lZGlhRGV2aWNlSW5mbz4gY3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmLCBLaW5kKTsKIAogICAgIGNvbnN0IFN0cmluZyYgbGFiZWwoKSBjb25z
dCB7IHJldHVybiBtX2xhYmVsOyB9CiAgICAgY29uc3QgU3RyaW5nJiBkZXZpY2VJZCgpIGNvbnN0
IHsgcmV0dXJuIG1fZGV2aWNlSWQ7IH0KICAgICBjb25zdCBTdHJpbmcmIGdyb3VwSWQoKSBjb25z
dCB7IHJldHVybiBtX2dyb3VwSWQ7IH0KLSAgICBNZWRpYURldmljZUtpbmQga2luZCgpIGNvbnN0
IHsgcmV0dXJuIG1fa2luZDsgfQorICAgIEtpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2lu
ZDsgfQogCiBwcml2YXRlOgotICAgIE1lZGlhRGV2aWNlSW5mbyhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTWVkaWFE
ZXZpY2VLaW5kKTsKKyAgICBNZWRpYURldmljZUluZm8oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIEtpbmQpOwogCiAg
ICAgY29uc3QgU3RyaW5nIG1fbGFiZWw7CiAgICAgY29uc3QgU3RyaW5nIG1fZGV2aWNlSWQ7CiAg
ICAgY29uc3QgU3RyaW5nIG1fZ3JvdXBJZDsKLSAgICBjb25zdCBNZWRpYURldmljZUtpbmQgbV9r
aW5kOworICAgIGNvbnN0IEtpbmQgbV9raW5kOwogfTsKIAogdHlwZWRlZiBWZWN0b3I8UmVmUHRy
PE1lZGlhRGV2aWNlSW5mbz4+IE1lZGlhRGV2aWNlSW5mb1ZlY3RvcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVlc3Qu
Y3BwCmluZGV4IDg0OGVjODBjYTRjNTFhZmNiOTVkNmE3NGYyY2FhYTcwZmZhNTMzZTkuLjE4MDJj
YzViOWU3NDU1ZjRhZmJkODQ4MjE5YTNkYTIyOThjYjA3MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNSZXF1ZXN0LmNw
cApAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgTWVkaWFEZXZpY2VzUmVxdWVzdDo6ZGlkQ29tcGxl
dGVUcmFja1NvdXJjZUluZm9SZXF1ZXN0KGNvbnN0IFRyYWNrU291cmNlSW5mCiAKICAgICAgICAg
U3RyaW5nIGdyb3VwSWQgPSBoYXNoSUQoZGV2aWNlSW5mby0+Z3JvdXBJZCgpKTsKIAotICAgICAg
ICBhdXRvIGRldmljZVR5cGUgPSBkZXZpY2VJbmZvLT5raW5kKCkgPT0gVHJhY2tTb3VyY2VJbmZv
OjpTb3VyY2VLaW5kOjpBdWRpbyA/IE1lZGlhRGV2aWNlS2luZDo6QXVkaW9pbnB1dCA6IE1lZGlh
RGV2aWNlS2luZDo6VmlkZW9pbnB1dDsKKyAgICAgICAgYXV0byBkZXZpY2VUeXBlID0gZGV2aWNl
SW5mby0+a2luZCgpID09IFRyYWNrU291cmNlSW5mbzo6U291cmNlS2luZDo6QXVkaW8gPyBNZWRp
YURldmljZUluZm86OktpbmQ6OkF1ZGlvaW5wdXQgOiBNZWRpYURldmljZUluZm86OktpbmQ6OlZp
ZGVvaW5wdXQ7CiAKICAgICAgICAgZGV2aWNlcy5hcHBlbmQoTWVkaWFEZXZpY2VJbmZvOjpjcmVh
dGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBsYWJlbCwgaWQsIGdyb3VwSWQsIGRldmljZVR5
cGUpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcAppbmRleCAxNWZjOThlMmFlMjVkOGUyYmVkODdiZDY4
NGVkNDBiNGVkMGU4OTVhLi4zYjM5MmRhYjRiZDBiNjg5YmRiY2RjYWExNzIyMDEwMGQyNGI1NjNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtVHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFjay5jcHAKQEAgLTExMSw5ICsxMTEsOSBAQCBib29sIE1lZGlhU3RyZWFtVHJh
Y2s6OnJlbW90ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+cmVtb3RlKCk7CiB9CiAK
LU1lZGlhU3RyZWFtVHJhY2tTdGF0ZSBNZWRpYVN0cmVhbVRyYWNrOjpyZWFkeVN0YXRlKCkgY29u
c3QKK2F1dG8gTWVkaWFTdHJlYW1UcmFjazo6cmVhZHlTdGF0ZSgpIGNvbnN0IC0+IFN0YXRlCiB7
Ci0gICAgcmV0dXJuIGVuZGVkKCkgPyBNZWRpYVN0cmVhbVRyYWNrU3RhdGU6OkVuZGVkIDogTWVk
aWFTdHJlYW1UcmFja1N0YXRlOjpMaXZlOworICAgIHJldHVybiBlbmRlZCgpID8gU3RhdGU6OkVu
ZGVkIDogU3RhdGU6OkxpdmU7CiB9CiAKIGJvb2wgTWVkaWFTdHJlYW1UcmFjazo6ZW5kZWQoKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtVHJhY2suaAppbmRleCBjOGRmYWU0OGM4MmUyMjcwZDNjYTdjMWUyNDI4MDQyY2M2ZjFk
NDEyLi5jOTlmNGNlMzQyNGMzNWQzODhmOTM2ZGJjNzhhODE0MjM1ZWM2ZjA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2su
aApAQCAtNDYsOCArNDYsNiBAQCBjbGFzcyBNZWRpYUNvbnN0cmFpbnRzSW1wbDsKIGNsYXNzIE1l
ZGlhU291cmNlU2V0dGluZ3M7CiBjbGFzcyBNZWRpYVRyYWNrQ29uc3RyYWludHM7CiAKLWVudW0g
Y2xhc3MgTWVkaWFTdHJlYW1UcmFja1N0YXRlIHsgTmV3LCBMaXZlLCBFbmRlZCB9OwotCiBjbGFz
cyBNZWRpYVN0cmVhbVRyYWNrIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW1U
cmFjaz4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxp
bmVEYXRhLCBwcml2YXRlIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpPYnNlcnZlciB7CiBwdWJs
aWM6CiAgICAgY2xhc3MgT2JzZXJ2ZXIgewpAQCAtNzAsNyArNjgsOCBAQCBwdWJsaWM6CiAgICAg
Ym9vbCByZWFkb25seSgpIGNvbnN0OwogICAgIGJvb2wgcmVtb3RlKCkgY29uc3Q7CiAKLSAgICBN
ZWRpYVN0cmVhbVRyYWNrU3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0OworICAgIGVudW0gY2xhc3Mg
U3RhdGUgeyBOZXcsIExpdmUsIEVuZGVkIH07CisgICAgU3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0
OwogCiAgICAgYm9vbCBlbmRlZCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0NvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDQ29uZmlndXJhdGlvbi5oCmluZGV4IDE0MDJmZWQzNGEz
YjJiYjVmZDk5ZWNlZjk2NTNhNDFhMjcxNDM2NjAuLmM5ZjY0YzBhYWUyYmNkYTRhN2E4NTI4NTg3
NGRlNGU1ZGY3ZTc0YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDQ29uZmlndXJhdGlvbi5oCkBAIC00NSwxNiArNDUsMTcgQEAgY2xhc3MgRGlj
dGlvbmFyeTsKIAogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAotZW51bSBjbGFzcyBSVENC
dW5kbGVQb2xpY3kgeyBCYWxhbmNlZCwgTWF4Q29tcGF0LCBNYXhCdW5kbGUgfTsKLWVudW0gY2xh
c3MgUlRDSWNlVHJhbnNwb3J0UG9saWN5IHsgUHVibGljLCBSZWxheSwgQWxsIH07Ci0KIGNsYXNz
IFJUQ0NvbmZpZ3VyYXRpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxSVENDb25maWd1cmF0aW9uPiB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxSVENDb25maWd1cmF0aW9uPiBjcmVhdGUoY29u
c3QgRGljdGlvbmFyeSYgY29uZmlndXJhdGlvbiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1
YWwgflJUQ0NvbmZpZ3VyYXRpb24oKSB7IH0KIAorICAgIGVudW0gY2xhc3MgUlRDSWNlVHJhbnNw
b3J0UG9saWN5IHsgUHVibGljLCBSZWxheSwgQWxsIH07CiAgICAgUlRDSWNlVHJhbnNwb3J0UG9s
aWN5IGljZVRyYW5zcG9ydFBvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1faWNlVHJhbnNwb3J0UG9s
aWN5OyB9CisKKyAgICBlbnVtIGNsYXNzIFJUQ0J1bmRsZVBvbGljeSB7IEJhbGFuY2VkLCBNYXhD
b21wYXQsIE1heEJ1bmRsZSB9OwogICAgIFJUQ0J1bmRsZVBvbGljeSBidW5kbGVQb2xpY3koKSBj
b25zdCB7IHJldHVybiBtX2J1bmRsZVBvbGljeTsgfQorCiAgICAgVmVjdG9yPFJlZlB0cjxSVENJ
Y2VTZXJ2ZXI+PiBpY2VTZXJ2ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9pY2VTZXJ2ZXJzOyB9CiAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRl
eHQuaAppbmRleCBiMDlkYTE2NDhiY2U2ZWIyN2ZiZDdiNjc4ZjQ3MTdhZWU4OTlkYmJkLi44NThm
NjQ3YWZmNzdkYmIyNTM4NjZmZTA5MjJhNTVkNGRiYWZjNWU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKQEAgLTcxLDggKzcxLDYgQEAgY2xh
c3MgUGVyaW9kaWNXYXZlOwogY2xhc3MgU2NyaXB0UHJvY2Vzc29yTm9kZTsKIGNsYXNzIFdhdmVT
aGFwZXJOb2RlOwogCi1lbnVtIGNsYXNzIEF1ZGlvQ29udGV4dFN0YXRlIHsgU3VzcGVuZGVkLCBS
dW5uaW5nLCBJbnRlcnJ1cHRlZCwgQ2xvc2VkIH07Ci0KIC8vIEF1ZGlvQ29udGV4dCBpcyB0aGUg
Y29ybmVyc3RvbmUgb2YgdGhlIHdlYiBhdWRpbyBBUEkgYW5kIGFsbCBBdWRpb05vZGVzIGFyZSBj
cmVhdGVkIGZyb20gaXQuCiAvLyBGb3IgdGhyZWFkIHNhZmV0eSBiZXR3ZWVuIHRoZSBhdWRpbyB0
aHJlYWQgYW5kIHRoZSBtYWluIHRocmVhZCwgaXQgaGFzIGEgcmVuZGVyaW5nIGdyYXBoIGxvY2tp
bmcgbWVjaGFuaXNtLiAKIApAQCAtMTE3LDcgKzExNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJl
c3VtZShQcm9taXNlJiYpOwogICAgIHZvaWQgY2xvc2UoUHJvbWlzZSYmKTsKIAotICAgIHVzaW5n
IFN0YXRlID0gQXVkaW9Db250ZXh0U3RhdGU7CisgICAgZW51bSBjbGFzcyBTdGF0ZSB7IFN1c3Bl
bmRlZCwgUnVubmluZywgSW50ZXJydXB0ZWQsIENsb3NlZCB9OwogICAgIFN0YXRlIHN0YXRlKCkg
Y29uc3Q7CiAKICAgICAvLyBUaGUgQXVkaW9Ob2RlIGNyZWF0ZSBtZXRob2RzIGFyZSBjYWxsZWQg
b24gdGhlIG1haW4gdGhyZWFkIChmcm9tIEphdmFTY3JpcHQpLgpAQCAtNDA1LDcgKzQwMyw3IEBA
IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgQXVkaW9Db250ZXh0JiBsaHMsIGNvbnN0IEF1
ZGlvQ29udGV4dCYgcmhzKQogICAgIHJldHVybiAmbGhzICE9ICZyaHM7CiB9CiAKLWlubGluZSBB
dWRpb0NvbnRleHRTdGF0ZSBBdWRpb0NvbnRleHQ6OnN0YXRlKCkgY29uc3QKK2lubGluZSBBdWRp
b0NvbnRleHQ6OlN0YXRlIEF1ZGlvQ29udGV4dDo6c3RhdGUoKSBjb25zdAogewogICAgIHJldHVy
biBtX3N0YXRlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9XYXZlU2hhcGVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dh
dmVTaGFwZXJOb2RlLmNwcAppbmRleCBlY2QzZjQ3MzJhNTk1NmE5MGM1MjhmMWJmNTRhOTQ4ZjI3
MGZlZDVhLi41ZWQ2YmEyOWMzOGEwODJiYmI4YTJjNzEzOWM4ZDU4Y2NmZWZlZTVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcApA
QCAtNTQsMTQgKzU0LDE0IEBAIEZsb2F0MzJBcnJheSogV2F2ZVNoYXBlck5vZGU6OmN1cnZlKCkK
ICAgICByZXR1cm4gd2F2ZVNoYXBlclByb2Nlc3NvcigpLT5jdXJ2ZSgpOwogfQogCi1zdGF0aWMg
aW5saW5lIFdhdmVTaGFwZXJQcm9jZXNzb3I6Ok92ZXJTYW1wbGVUeXBlIHByb2Nlc3NvclR5cGUo
T3ZlclNhbXBsZVR5cGUgdHlwZSkKK3N0YXRpYyBpbmxpbmUgV2F2ZVNoYXBlclByb2Nlc3Nvcjo6
T3ZlclNhbXBsZVR5cGUgcHJvY2Vzc29yVHlwZShXYXZlU2hhcGVyTm9kZTo6T3ZlclNhbXBsZVR5
cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIE92ZXJTYW1wbGVUeXBl
OjpOb25lOgorICAgIGNhc2UgV2F2ZVNoYXBlck5vZGU6Ok92ZXJTYW1wbGVUeXBlOjpOb25lOgog
ICAgICAgICByZXR1cm4gV2F2ZVNoYXBlclByb2Nlc3Nvcjo6T3ZlclNhbXBsZU5vbmU7Ci0gICAg
Y2FzZSBPdmVyU2FtcGxlVHlwZTo6XzJ4OgorICAgIGNhc2UgV2F2ZVNoYXBlck5vZGU6Ok92ZXJT
YW1wbGVUeXBlOjpfMng6CiAgICAgICAgIHJldHVybiBXYXZlU2hhcGVyUHJvY2Vzc29yOjpPdmVy
U2FtcGxlMng7Ci0gICAgY2FzZSBPdmVyU2FtcGxlVHlwZTo6XzR4OgorICAgIGNhc2UgV2F2ZVNo
YXBlck5vZGU6Ok92ZXJTYW1wbGVUeXBlOjpfNHg6CiAgICAgICAgIHJldHVybiBXYXZlU2hhcGVy
UHJvY2Vzc29yOjpPdmVyU2FtcGxlNHg7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpAQCAtNzcsNyArNzcsNyBAQCB2b2lkIFdhdmVTaGFwZXJOb2RlOjpzZXRPdmVyc2FtcGxlKE92
ZXJTYW1wbGVUeXBlIHR5cGUpCiAgICAgd2F2ZVNoYXBlclByb2Nlc3NvcigpLT5zZXRPdmVyc2Ft
cGxlKHByb2Nlc3NvclR5cGUodHlwZSkpOwogfQogCi1PdmVyU2FtcGxlVHlwZSBXYXZlU2hhcGVy
Tm9kZTo6b3ZlcnNhbXBsZSgpIGNvbnN0CithdXRvIFdhdmVTaGFwZXJOb2RlOjpvdmVyc2FtcGxl
KCkgY29uc3QgLT4gT3ZlclNhbXBsZVR5cGUKIHsKICAgICBzd2l0Y2ggKGNvbnN0X2Nhc3Q8V2F2
ZVNoYXBlck5vZGUqPih0aGlzKS0+d2F2ZVNoYXBlclByb2Nlc3NvcigpLT5vdmVyc2FtcGxlKCkp
IHsKICAgICBjYXNlIFdhdmVTaGFwZXJQcm9jZXNzb3I6Ok92ZXJTYW1wbGVOb25lOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5oCmluZGV4IDk0
ZjI1OTY4NTRiMGQ5OGEyNWNjMTU1YTgzMzdlOGMzZDcwYzZlNzMuLmM5MDgzNzMwY2Q5ZTVmY2M5
ZjkwMDYzZTdjOGYwMTk3MjI2YzY2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmgKQEAgLTMwLDggKzMwLDYgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIE92ZXJTYW1wbGVUeXBlIHsgTm9uZSwgXzJ4LCBfNHgg
fTsKLQogY2xhc3MgV2F2ZVNoYXBlck5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9CYXNpY1Byb2Nl
c3Nvck5vZGUgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2F2ZVNoYXBlck5vZGU+IGNyZWF0
ZShBdWRpb0NvbnRleHQmIGNvbnRleHQpCkBAIC00Myw2ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldEN1cnZlKEZsb2F0MzJBcnJheSopOwogICAgIEZsb2F0MzJBcnJheSogY3VydmUoKTsK
IAorICAgIGVudW0gY2xhc3MgT3ZlclNhbXBsZVR5cGUgeyBOb25lLCBfMngsIF80eCB9OwogICAg
IHZvaWQgc2V0T3ZlcnNhbXBsZShPdmVyU2FtcGxlVHlwZSk7CiAgICAgT3ZlclNhbXBsZVR5cGUg
b3ZlcnNhbXBsZSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCmluZGV4IDRiMzRmODdhMDhlZmI5OGFlZGI2
YmNkM2IyNmFlOTQyNjg3ZDgzYzguLjc0Y2NiOTYzZGJlNGU1ZmVkM2FjM2NmMWVkOTc4Yzk3NWFm
MjEyZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJl
cXVlc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0
cFJlcXVlc3RDdXN0b20uY3BwCkBAIC0xODksOCArMTg5LDggQEAgSlNWYWx1ZSBKU1hNTEh0dHBS
ZXF1ZXN0OjpyZXNwb25zZShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogICAgIGF1dG8gdHlwZSA9
IHdyYXBwZWQoKS5yZXNwb25zZVR5cGUoKTsKIAogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNh
c2UgWE1MSHR0cFJlcXVlc3RSZXNwb25zZVR5cGU6OkVtcHR5U3RyaW5nOgotICAgIGNhc2UgWE1M
SHR0cFJlcXVlc3RSZXNwb25zZVR5cGU6OlRleHQ6CisgICAgY2FzZSBYTUxIdHRwUmVxdWVzdDo6
UmVzcG9uc2VUeXBlOjpFbXB0eVN0cmluZzoKKyAgICBjYXNlIFhNTEh0dHBSZXF1ZXN0OjpSZXNw
b25zZVR5cGU6OlRleHQ6CiAgICAgICAgIHJldHVybiByZXNwb25zZVRleHQoc3RhdGUpOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtMjAwLDEyICsyMDAsMTIgQEAgSlNWYWx1ZSBK
U1hNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogICAgICAg
ICByZXR1cm4ganNOdWxsKCk7CiAKICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIFhNTEh0
dHBSZXF1ZXN0UmVzcG9uc2VUeXBlOjpFbXB0eVN0cmluZzoKLSAgICBjYXNlIFhNTEh0dHBSZXF1
ZXN0UmVzcG9uc2VUeXBlOjpUZXh0OgorICAgIGNhc2UgWE1MSHR0cFJlcXVlc3Q6OlJlc3BvbnNl
VHlwZTo6RW1wdHlTdHJpbmc6CisgICAgY2FzZSBYTUxIdHRwUmVxdWVzdDo6UmVzcG9uc2VUeXBl
OjpUZXh0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAK
LSAgICBjYXNlIFhNTEh0dHBSZXF1ZXN0UmVzcG9uc2VUeXBlOjpKc29uOgorICAgIGNhc2UgWE1M
SHR0cFJlcXVlc3Q6OlJlc3BvbnNlVHlwZTo6SnNvbjoKICAgICAgICAgewogICAgICAgICAgICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTT05QYXJzZSgmc3RhdGUsIHdyYXBwZWQoKS5yZXNwb25zZVRleHRJ
Z25vcmluZ1Jlc3BvbnNlVHlwZSgpKTsKICAgICAgICAgICAgIGlmICghdmFsdWUpCkBAIC0yMTUs
NyArMjE1LDcgQEAgSlNWYWx1ZSBKU1hNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZShFeGVjU3RhdGUm
IHN0YXRlKSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgICAgICB9CiAKLSAg
ICBjYXNlIFhNTEh0dHBSZXF1ZXN0UmVzcG9uc2VUeXBlOjpEb2N1bWVudDoKKyAgICBjYXNlIFhN
TEh0dHBSZXF1ZXN0OjpSZXNwb25zZVR5cGU6OkRvY3VtZW50OgogICAgICAgICB7CiAgICAgICAg
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICAgICAgICAgIERvY3VtZW50KiBkb2N1bWVu
dCA9IHdyYXBwZWQoKS5yZXNwb25zZVhNTChlYyk7CkBAIC0yMjYsMTAgKzIyNiwxMCBAQCBKU1Zh
bHVlIEpTWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiAg
ICAgICAgICAgICByZXR1cm4gdG9KUygmc3RhdGUsIGdsb2JhbE9iamVjdCgpLCBkb2N1bWVudCk7
CiAgICAgICAgIH0KIAotICAgIGNhc2UgWE1MSHR0cFJlcXVlc3RSZXNwb25zZVR5cGU6OkJsb2I6
CisgICAgY2FzZSBYTUxIdHRwUmVxdWVzdDo6UmVzcG9uc2VUeXBlOjpCbG9iOgogICAgICAgICBy
ZXR1cm4gdG9KUygmc3RhdGUsIGdsb2JhbE9iamVjdCgpLCB3cmFwcGVkKCkucmVzcG9uc2VCbG9i
KCkpOwogCi0gICAgY2FzZSBYTUxIdHRwUmVxdWVzdFJlc3BvbnNlVHlwZTo6QXJyYXlidWZmZXI6
CisgICAgY2FzZSBYTUxIdHRwUmVxdWVzdDo6UmVzcG9uc2VUeXBlOjpBcnJheWJ1ZmZlcjoKICAg
ICAgICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgd3JhcHBlZCgpLnJlc3Bv
bnNlQXJyYXlCdWZmZXIoKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDMzYTM4ZDA4ZjljNTM1ODU0Mzgz
OGFhYmQwNzMzNjQyMDAwOTExYWYuLmI2OTMwZjIzMDg5ZmRjNGU1YjBhZjE5NTA1ODQ3M2M3ZTVk
MmU1NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCkBAIC0zMjEsNyArMzIxLDcgQEAgc3ViIElzRE9NR2xvYmFsT2JqZWN0CiAK
IHN1YiBHZW5lcmF0ZUdldE93blByb3BlcnR5U2xvdEJvZHkKIHsKLSAgICBteSAoJGludGVyZmFj
ZSwgJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRoYXNJbnN0YW5jZVByb3BlcnRpZXMsICRp
bmxpbmVkKSA9IEBfOworICAgIG15ICgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkaGFzSW5zdGFu
Y2VQcm9wZXJ0aWVzLCAkaW5saW5lZCkgPSBAXzsKIAogICAgIG15ICRuYW1lc3BhY2VNYXliZSA9
ICgkaW5saW5lZCA/ICJKU0M6OiIgOiAiIik7CiAgICAgbXkgJG5hbWVkR2V0dGVyRnVuY3Rpb24g
PSBHZXROYW1lZEdldHRlckZ1bmN0aW9uKCRpbnRlcmZhY2UpOwpAQCAtNTExLDM1ICs1MTEsMjcg
QEAgc3ViIFNob3VsZEdlbmVyYXRlVG9KU0ltcGxlbWVudGF0aW9uCiAKIHN1YiBHZXRBdHRyaWJ1
dGVHZXR0ZXJOYW1lCiB7Ci0gICAgbXkgKCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkaW50
ZXJmYWNlLCAkYXR0cmlidXRlKSA9IEBfOwotICAgIGlmICgkYXR0cmlidXRlLT5pc1N0YXRpYykg
ewotICAgICAgICByZXR1cm4gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGNsYXNzTmFtZSkg
LiAiQ29uc3RydWN0b3IiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5uYW1lKTsKLSAgICB9Ci0gICAgaWYgKElzSlNCdWlsdGluKCRpbnRlcmZhY2Us
ICRhdHRyaWJ1dGUpKSB7Ci0gICAgICAgIHJldHVybiBHZXRKU0J1aWx0aW5GdW5jdGlvbk5hbWUo
JGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7Ci0gICAgfQotICAgIHJldHVybiAianMiIC4gJGludGVy
ZmFjZU5hbWUgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1
cmUtPm5hbWUpIC4gKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29uc3RydWN0b3Ik
LyA/ICJDb25zdHJ1Y3RvciIgOiAiIik7CisgICAgbXkgKCRpbnRlcmZhY2UsICRjbGFzc05hbWUs
ICRhdHRyaWJ1dGUpID0gQF87CisKKyAgICByZXR1cm4gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmly
c3QoJGNsYXNzTmFtZSkgLiAiQ29uc3RydWN0b3IiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmly
c3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKSBpZiAkYXR0cmlidXRlLT5pc1N0YXRpYzsK
KyAgICByZXR1cm4gR2V0SlNCdWlsdGluRnVuY3Rpb25OYW1lKCRjbGFzc05hbWUsICRhdHRyaWJ1
dGUpIGlmIElzSlNCdWlsdGluKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOworICAgIHJldHVybiAi
anMiIC4gJGludGVyZmFjZS0+bmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSkgLiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+
IC9Db25zdHJ1Y3RvciQvID8gIkNvbnN0cnVjdG9yIiA6ICIiKTsKIH0KIAogc3ViIEdldEF0dHJp
YnV0ZVNldHRlck5hbWUKIHsKLSAgICBteSAoJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRp
bnRlcmZhY2UsICRhdHRyaWJ1dGUpID0gQF87Ci0gICAgaWYgKCRhdHRyaWJ1dGUtPmlzU3RhdGlj
KSB7Ci0gICAgICAgIHJldHVybiAic2V0IiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRj
bGFzc05hbWUpIC4gIkNvbnN0cnVjdG9yIiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSk7Ci0gICAgfQotICAgIGlmIChJc0pTQnVpbHRpbigk
aW50ZXJmYWNlLCAkYXR0cmlidXRlKSkgewotICAgICAgICByZXR1cm4gInNldCIgLiAkY29kZUdl
bmVyYXRvci0+V0tfdWNmaXJzdChHZXRKU0J1aWx0aW5GdW5jdGlvbk5hbWUoJGNsYXNzTmFtZSwg
JGF0dHJpYnV0ZSkpOwotICAgIH0KLSAgICByZXR1cm4gInNldEpTIiAuICRpbnRlcmZhY2VOYW1l
IC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1l
KSAuICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8gPyAiQ29u
c3RydWN0b3IiIDogIiIpOworICAgIG15ICgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmli
dXRlKSA9IEBfOworCisgICAgcmV0dXJuICJzZXQiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmly
c3QoJGNsYXNzTmFtZSkgLiAiQ29uc3RydWN0b3IiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmly
c3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKSBpZiAkYXR0cmlidXRlLT5pc1N0YXRpYzsK
KyAgICByZXR1cm4gInNldCIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdChHZXRKU0J1aWx0
aW5GdW5jdGlvbk5hbWUoJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSkpIGlmIElzSlNCdWlsdGluKCRp
bnRlcmZhY2UsICRhdHRyaWJ1dGUpOworICAgIHJldHVybiAic2V0SlMiIC4gJGludGVyZmFjZS0+
bmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+
bmFtZSkgLiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+IC9Db25zdHJ1Y3RvciQvID8g
IkNvbnN0cnVjdG9yIiA6ICIiKTsKIH0KIAogc3ViIEdldEZ1bmN0aW9uTmFtZQogewogICAgIG15
ICgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkZnVuY3Rpb24pID0gQF87CiAKLSAgICBpZiAoSXNK
U0J1aWx0aW4oJGludGVyZmFjZSwgJGZ1bmN0aW9uKSkgewotICAgICAgICByZXR1cm4gR2V0SlNC
dWlsdGluRnVuY3Rpb25OYW1lKCRjbGFzc05hbWUsICRmdW5jdGlvbik7Ci0gICAgfQorICAgIHJl
dHVybiBHZXRKU0J1aWx0aW5GdW5jdGlvbk5hbWUoJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKSBpZiBJ
c0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkZnVuY3Rpb24pOwogCiAgICAgbXkgJGZ1bmN0aW9uTmFt
ZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOwogICAgICRmdW5jdGlvbk5hbWUgPSAiU3lt
Ym9sSXRlcmF0b3IiIGlmICRmdW5jdGlvbk5hbWUgZXEgIltTeW1ib2wuSXRlcmF0b3JdIjsKQEAg
LTYxOSwxNCArNjExLDYgQEAgc3ViIEludGVyZmFjZVJlcXVpcmVzQXR0cmlidXRlc09uSW5zdGFu
Y2UKICAgICByZXR1cm4gMDsKIH0KIAotc3ViIEF0dHJpYnV0ZVNob3VsZEJlT25JbnN0YW5jZUZv
ckNvbXBhdGliaWxpdHkKLXsKLSAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7Ci0gICAgbXkgJGF0
dHJpYnV0ZSA9IHNoaWZ0OwotICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGludGVyZmFjZS0+bmFt
ZTsKLSAgICByZXR1cm4gMDsKLX0KLQogc3ViIEF0dHJpYnV0ZVNob3VsZEJlT25JbnN0YW5jZQog
ewogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKQEAgLTY0Miw4ICs2MjYsNiBAQCBzdWIgQXR0
cmlidXRlU2hvdWxkQmVPbkluc3RhbmNlCiAgICAgIyBodHRwczovL2hleWNhbS5naXRodWIuaW8v
d2ViaWRsLyNVbmZvcmdlYWJsZQogICAgIHJldHVybiAxIGlmIElzVW5mb3JnZWFibGUoJGludGVy
ZmFjZSwgJGF0dHJpYnV0ZSk7CiAKLSAgICByZXR1cm4gMSBpZiBBdHRyaWJ1dGVTaG91bGRCZU9u
SW5zdGFuY2VGb3JDb21wYXRpYmlsaXR5KCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwotCiAgICAg
aWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja1NlY3VyaXR5In0pIHsK
ICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkRvTm90Q2hlY2tTZWN1cml0eSJ9IG9yCiAgICAgICAgICAgICAkYXR0cmlidXRlLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEb05vdENoZWNrU2VjdXJpdHlPbkdldHRlciJ9KSB7
CkBAIC04MTMsMzMgKzc5NSw4NiBAQCBzdWIgR2V0SW1wbENsYXNzTmFtZQogICAgIHJldHVybiAk
bmFtZTsKIH0KIAorc3ViIElzQ2xhc3NOYW1lV29yZEJvdW5kYXJ5Cit7CisgICAgbXkgKCRuYW1l
LCAkaSkgPSBAXzsKKworICAgICMgSW50ZXJwcmV0IG5lZ2F0aXZlIG51bWJlcnMgYXMgZGlzdGFu
Y2UgZnJvbSBlbmQgb2Ygc3RyaW5nLCBqdXN0IGFzIHRoZSBzdWJzdHIgZnVuY3Rpb24gZG9lcy4K
KyAgICAkaSArPSBsZW5ndGgoJG5hbWUpIGlmICRpIDwgMDsKKworICAgIHJldHVybiAwIGlmICRp
IDwgMDsKKyAgICByZXR1cm4gMSBpZiAkaSA9PSAwOworICAgIHJldHVybiAxIGlmICRpID09IGxl
bmd0aCgkbmFtZSk7CisgICAgcmV0dXJuIDAgaWYgJGkgPiBsZW5ndGgoJG5hbWUpOworCisgICAg
IyBGb3Igbm93LCB3b3JkIGJvdW5kYXJpZXMgYXJlIHdoZXJlIHRoZSBwcmV2aW91cyBsZXR0ZXIg
d2FzIG5vdCB1cHBlcmNhc2UgYnV0IHRoZSBuZXh0IGxldHRlciBpcyB1cHBlcmNhc2UuCisgICAg
IyBDb3VsZCBtYWtlIGEgZmFuY2llciBydWxlIHRoYXQgdW5kZXJzdGFuZHMgdGhhdCB0aGUgYm91
bmRhcnkgYmV0d2VlbiBVUkwgYW5kIExlbmd0aCBpbiBVUkxMZW5ndGggaXMgb25lIHRvby4KKyAg
ICByZXR1cm4gc3Vic3RyKCRuYW1lLCAkaSAtIDEsIDIpID1+IC9bXkEtWl1bQS1aXS87Cit9CisK
K3N1YiBQcmVmaXhJc1dvcmRzVGhhdE1hdGNoU3RhcnRPckVuZFdvcmRzCit7CisgICAgbXkgKCRj
bGFzcywgJG5hbWUsICRpKSA9IEBfOworCisgICAgcmV0dXJuIElzQ2xhc3NOYW1lV29yZEJvdW5k
YXJ5KCRuYW1lLCAkaSkKKyAgICAgICAgJiYgKElzQ2xhc3NOYW1lV29yZEJvdW5kYXJ5KCRjbGFz
cywgJGkpICYmIHN1YnN0cigkY2xhc3MsIDAsICRpKSBlcSBzdWJzdHIoJG5hbWUsIDAsICRpKQor
ICAgICAgICAgICAgfHwgSXNDbGFzc05hbWVXb3JkQm91bmRhcnkoJGNsYXNzLCAtJGkpICYmIHN1
YnN0cigkY2xhc3MsIC0kaSkgZXEgc3Vic3RyKCRuYW1lLCAwLCAkaSkpOworfQorCiBzdWIgR2V0
RW51bWVyYXRpb25DbGFzc05hbWUKIHsKLSAgICBteSAoJG5hbWUpID0gQF87Ci0gICAgcmV0dXJu
ICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRuYW1lKTsKLX07CisgICAgbXkgKCRpbnRlcmZh
Y2UsICRuYW1lKSA9IEBfOworCisgICAgbXkgJGNsYXNzID0gR2V0SW1wbENsYXNzTmFtZSgkaW50
ZXJmYWNlLT5uYW1lKTsKKyAgICBteSAkZW51bSA9ICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0
KCRuYW1lKTsKKworICAgICMgU2luY2UgdGhlIGVudW1lcmF0aW9uIG5hbWUgd2lsbCBiZSBuZXN0
ZWQgaW4gdGhlIGNsYXNzIG5hbWUncyBuYW1lc3BhY2UsIHJlbW92ZSBhbnkgd29yZHMKKyAgICAj
IHRoYXQgaGFwcGVuIHRvIG1hdGNoIHRoZSBzdGFydCBvciBlbmQgb2YgdGhlIGNsYXNzIG5hbWUu
IElmIGFuIGVudW1lcmF0aW9uIGlzIG5hbWVkIFRyYWNrVHlwZSBvcgorICAgICMgVGV4dFRyYWNr
VHlwZSwgYW5kIHRoZSBjbGFzcyBpcyBuYW1lZCBUZXh0VHJhY2ssIHRoZW4gd2Ugd2lsbCBnZXQg
YSBuYW1lIGxpa2UgVGV4dFRyYWNrOjpUeXBlLgorICAgIG15ICRlbnVtTGVuZ3RoID0gbGVuZ3Ro
KCRlbnVtKTsKKyAgICBteSAkbG9uZ2VzdFByZWZpeExlbmd0aCA9IDA7CisgICAgaWYgKCRlbnVt
ID1+IC9eW0EtWl0uLykgeworICAgICAgICBmb3IgKG15ICRpID0gMjsgJGkgPCAkZW51bUxlbmd0
aCAtIDE7ICRpKyspIHsKKyAgICAgICAgICAgICRsb25nZXN0UHJlZml4TGVuZ3RoID0gJGkgaWYg
UHJlZml4SXNXb3Jkc1RoYXRNYXRjaFN0YXJ0T3JFbmRXb3JkcygkY2xhc3MsICRlbnVtLCAkaSk7
CisgICAgICAgIH0KKyAgICB9CisgICAgJGVudW0gPSBzdWJzdHIoJGVudW0sICRsb25nZXN0UHJl
Zml4TGVuZ3RoKTsKKworICAgIHJldHVybiAiJHtjbGFzc306OiRlbnVtIjsKK30KKworc3ViIEdl
dEVudW1lcmF0aW9uQ2xhc3NJZGVudGlmaWVyCit7CisgICAgbXkgKCRpbnRlcmZhY2UsICRuYW1l
KSA9IEBfOworCisgICAgbXkgJGlkZW50aWZpZXIgPSBHZXRFbnVtZXJhdGlvbkNsYXNzTmFtZSgk
aW50ZXJmYWNlLCAkbmFtZSk7CisgICAgJGlkZW50aWZpZXIgPX4gcy86Oi8vOworICAgIHJldHVy
biAkaWRlbnRpZmllcjsKK30KIAogc3ViIEdldEVudW1lcmF0aW9uVmFsdWVOYW1lCiB7CiAgICAg
bXkgKCRuYW1lKSA9IEBfOworCiAgICAgcmV0dXJuICJFbXB0eVN0cmluZyIgaWYgJG5hbWUgZXEg
IiI7CiAgICAgJG5hbWUgPSBqb2luKCIiLCBtYXAgeyAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJz
dCgkXykgfSBzcGxpdCgiLSIsICRuYW1lKSk7CiAgICAgJG5hbWUgPSAiXyRuYW1lIiBpZiAkbmFt
ZSA9fiAvXlxkLzsKICAgICByZXR1cm4gJG5hbWU7Ci19OworfQogCi1zdWIgR2V0RW51bWVyYXRp
b25JbXBsZW1lbnRhdGlvbkNvbnRlbnQKK3N1YiBHZW5lcmF0ZUVudW1lcmF0aW9uSW1wbGVtZW50
YXRpb25Db250ZW50CiB7Ci0gICAgbXkgKCRlbnVtZXJhdGlvbnMpID0gQF87CisgICAgbXkgKCRp
bnRlcmZhY2UsICRlbnVtZXJhdGlvbnMpID0gQF87CiAKLSAgICAjIEZJWE1FOiBDb3VsZCBvcHRp
bWl6ZSB0aGlzIHRvIG9ubHkgZ2VuZXJhdGUgdGhpbmdzIHRoYXQgYXJlIHVzZWQsIHdoaWNoIHdv
dWxkIHJlcXVpcmUKLSAgICAjIGl0ZXJhdGluZyBvdmVyIGV2ZXJ5dGhpbmcgaW4gdGhlIGludGVy
ZmFjZS4KKyAgICAjIEZJWE1FOiBDb3VsZCBvcHRpbWl6ZSB0aGlzIHRvIG9ubHkgZ2VuZXJhdGUg
dGhlIHBhcnRzIG9mIGVhY2ggZW51bWVyYXRpb24gdGhhdCBhcmUgYWN0dWFsbHkKKyAgICAjIHVz
ZWQsIHdoaWNoIHdvdWxkIHJlcXVpcmUgaXRlcmF0aW5nIG92ZXIgZXZlcnl0aGluZyBpbiB0aGUg
aW50ZXJmYWNlLgogCiAgICAgbXkgJHJlc3VsdCA9ICIiOwogICAgIGZvcmVhY2ggbXkgJGVudW1l
cmF0aW9uIChAJGVudW1lcmF0aW9ucykgewogICAgICAgICBteSAkbmFtZSA9ICRlbnVtZXJhdGlv
bi0+bmFtZTsKIAotICAgICAgICBteSAkY2xhc3NOYW1lID0gR2V0RW51bWVyYXRpb25DbGFzc05h
bWUoJG5hbWUpOworICAgICAgICBteSAkY2xhc3NOYW1lID0gR2V0RW51bWVyYXRpb25DbGFzc05h
bWUoJGludGVyZmFjZSwgJG5hbWUpOworICAgICAgICBteSAkY2xhc3NJZGVudGlmaWVyID0gR2V0
RW51bWVyYXRpb25DbGFzc0lkZW50aWZpZXIoJGludGVyZmFjZSwgJG5hbWUpOwogCiAgICAgICAg
ICMgRklYTUU6IEEgbGl0dGxlIHVnbHkgdG8gaGF2ZSB0aGlzIGJlIGEgc2lkZSBlZmZlY3QgaW5z
dGVhZCBvZiBhIHJldHVybiB2YWx1ZS4KICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIjxydW50
aW1lL0pTU3RyaW5nLmg+Iik7CkBAIC04NTAsOCArODg1LDggQEAgc3ViIEdldEVudW1lcmF0aW9u
SW1wbGVtZW50YXRpb25Db250ZW50CiAgICAgICAgICMgRGVjbGFyZSB0aGVzZSBpbnN0ZWFkIG9m
IHVzaW5nICJzdGF0aWMiIGJlY2F1c2UgdGhlc2UgbWF5IGJlIHVudXNlZCBhbmQgd2UgZG9uJ3QK
ICAgICAgICAgIyB3YW50IHRvIGdldCB3YXJuaW5ncyBhYm91dCB0aGVtLgogICAgICAgICAkcmVz
dWx0IC49ICJKU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiwgJGNsYXNzTmFt
ZSk7XG4iOwotICAgICAgICAkcmVzdWx0IC49ICJPcHRpb25hbDwkY2xhc3NOYW1lPiBwYXJzZSRj
bGFzc05hbWUoRXhlY1N0YXRlJiwgSlNWYWx1ZSk7XG4iOwotICAgICAgICAkcmVzdWx0IC49ICJl
eHRlcm4gY29uc3QgY2hhciBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzJHtjbGFzc05hbWV9W107
XG5cbiI7CisgICAgICAgICRyZXN1bHQgLj0gIk9wdGlvbmFsPCRjbGFzc05hbWU+IHBhcnNlJGNs
YXNzSWRlbnRpZmllcihFeGVjU3RhdGUmLCBKU1ZhbHVlKTtcbiI7CisgICAgICAgICRyZXN1bHQg
Lj0gImV4dGVybiBjb25zdCBjaGFyIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXMke2NsYXNzSWRl
bnRpZmllcn1bXTtcblxuIjsKIAogICAgICAgICAjIFRha2UgYW4gRXhlY1N0YXRlKiBpbnN0ZWFk
IG9mIGFuIEV4ZWNTdGF0ZSYgdG8gbWF0Y2ggdGhlIGpzU3RyaW5nV2l0aENhY2hlIGZyb20gSlNT
dHJpbmcuaC4KICAgICAgICAgIyBGSVhNRTogQ2hhbmdlIHRvIHRha2UgVk0mIGluc3RlYWQgb2Yg
RXhlY1N0YXRlKi4KQEAgLTg4NSw3ICs5MjAsNyBAQCBzdWIgR2V0RW51bWVyYXRpb25JbXBsZW1l
bnRhdGlvbkNvbnRlbnQKICAgICAgICAgIyBGSVhNRTogQ2hhbmdlIHRvIHRha2UgVk0mIGluc3Rl
YWQgb2YgRXhlY1N0YXRlJi4KICAgICAgICAgIyBGSVhNRTogQ29uc2lkZXIgdXNpbmcgdG9TdHJp
bmdPck51bGwgdG8gbWFrZSBleGNlcHRpb24gY2hlY2tpbmcgZmFzdGVyLgogICAgICAgICAjIEZJ
WE1FOiBDb25zaWRlciBmaW5kaW5nIGEgbW9yZSBlZmZpY2llbnQgd2F5IHRvIG1hdGNoIGFnYWlu
c3QgYWxsIHRoZSBzdHJpbmdzIHF1aWNrbHkuCi0gICAgICAgICRyZXN1bHQgLj0gIk9wdGlvbmFs
PCRjbGFzc05hbWU+IHBhcnNlJGNsYXNzTmFtZShFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZh
bHVlKVxuIjsKKyAgICAgICAgJHJlc3VsdCAuPSAiT3B0aW9uYWw8JGNsYXNzTmFtZT4gcGFyc2Uk
Y2xhc3NJZGVudGlmaWVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpXG4iOwogICAg
ICAgICAkcmVzdWx0IC49ICJ7XG4iOwogICAgICAgICAkcmVzdWx0IC49ICIgICAgYXV0byBzdHJp
bmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7XG4iOwogICAgICAgICBmb3JlYWNo
IG15ICR2YWx1ZSAoQHskZW51bWVyYXRpb24tPnZhbHVlc30pIHsKQEAgLTkwMCw3ICs5MzUsNyBA
QCBzdWIgR2V0RW51bWVyYXRpb25JbXBsZW1lbnRhdGlvbkNvbnRlbnQKICAgICAgICAgJHJlc3Vs
dCAuPSAiICAgIHJldHVybiBOdWxsb3B0O1xuIjsKICAgICAgICAgJHJlc3VsdCAuPSAifVxuXG4i
OwogCi0gICAgICAgICRyZXN1bHQgLj0gImNvbnN0IGNoYXIgZXhwZWN0ZWRFbnVtZXJhdGlvblZh
bHVlcyR7Y2xhc3NOYW1lfVtdID0gXCJcXFwiIiAuIGpvaW4gKCJcXFwiLCBcXFwiIiwgQHskZW51
bWVyYXRpb24tPnZhbHVlc30pIC4gIlxcXCJcIjtcblxuIjsKKyAgICAgICAgJHJlc3VsdCAuPSAi
Y29uc3QgY2hhciBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzJHtjbGFzc0lkZW50aWZpZXJ9W10g
PSBcIlxcXCIiIC4gam9pbiAoIlxcXCIsIFxcXCIiLCBAeyRlbnVtZXJhdGlvbi0+dmFsdWVzfSkg
LiAiXFxcIlwiO1xuXG4iOwogCiAgICAgICAgICRyZXN1bHQgLj0gIiNlbmRpZlxuXG4iIGlmICRj
b25kaXRpb25hbFN0cmluZzsKICAgICB9CkBAIC0xMzQ4LDEwICsxMzgzLDcgQEAgc3ViIEdlbmVy
YXRlSGVhZGVyCiAKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4iKTsKIAotICAgICMgQWRk
IHByb3RvdHlwZSBkZWNsYXJhdGlvbi4KLSAgICBpZiAoSGVhZGVyTmVlZHNQcm90b3R5cGVEZWNs
YXJhdGlvbigkaW50ZXJmYWNlKSkgewotICAgICAgICBHZW5lcmF0ZVByb3RvdHlwZURlY2xhcmF0
aW9uKFxAaGVhZGVyQ29udGVudCwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSwgJGludGVyZmFjZU5h
bWUpOwotICAgIH0KKyAgICBHZW5lcmF0ZVByb3RvdHlwZURlY2xhcmF0aW9uKFxAaGVhZGVyQ29u
dGVudCwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSkgaWYgSGVhZGVyTmVlZHNQcm90b3R5cGVEZWNs
YXJhdGlvbigkaW50ZXJmYWNlKTsKIAogICAgIGlmICgkaGFzRm9yd2FyZERlY2xhcmluZ0Z1bmN0
aW9ucykgewogICAgICAgICBteSAkaW5BcHBsZUNvcHlyaWdodCA9IDA7CkBAIC0xMzg5LDEwICsx
NDIxLDEwIEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgICAgICAgICBteSAkY29uZGl0aW9u
YWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0
cmlidXRlLT5zaWduYXR1cmUpOwogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNp
ZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAgICAg
ICAgICAgbXkgJGdldHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZU5hbWUs
ICRjbGFzc05hbWUsICRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOworICAgICAgICAgICAgbXkgJGdl
dHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0
dHJpYnV0ZSk7CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiSlNDOjpFbmNvZGVk
SlNWYWx1ZSAke2dldHRlcn0oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7XG4iKTsKICAgICAgICAgICAgIGlmICghSXNSZWFkb25seSgkYXR0
cmlidXRlKSkgewotICAgICAgICAgICAgICAgIG15ICRzZXR0ZXIgPSBHZXRBdHRyaWJ1dGVTZXR0
ZXJOYW1lKCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlLCAkYXR0cmlidXRl
KTsKKyAgICAgICAgICAgICAgICBteSAkc2V0dGVyID0gR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgk
aW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKICAgICAgICAgICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiYm9vbCAke3NldHRlcn0oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTtcbiIpOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNvbmRpdGlv
bmFsU3RyaW5nOwpAQCAtMTQ1OCwxMyArMTQ5MCwxMyBAQCBzdWIgR2VuZXJhdGVQcm9wZXJ0aWVz
SGFzaFRhYmxlCiAgICAgICAgIG15ICRzcGVjaWFsID0gR2V0SlNDQXR0cmlidXRlc0ZvckF0dHJp
YnV0ZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKICAgICAgICAgcHVzaChAJGhhc2hTcGVjaWFs
cywgJHNwZWNpYWwpOwogCi0gICAgICAgIG15ICRnZXR0ZXIgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJO
YW1lKCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsK
KyAgICAgICAgbXkgJGdldHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZSwg
JGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgIHB1c2goQCRoYXNoVmFsdWUxLCAkZ2V0
dGVyKTsKIAogICAgICAgICBpZiAoSXNSZWFkb25seSgkYXR0cmlidXRlKSkgewogICAgICAgICAg
ICAgcHVzaChAJGhhc2hWYWx1ZTIsICIwIik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBteSAkc2V0dGVyID0gR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNlTmFtZSwgJGNs
YXNzTmFtZSwgJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICBteSAkc2V0dGVy
ID0gR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmli
dXRlKTsKICAgICAgICAgICAgIHB1c2goQCRoYXNoVmFsdWUyLCAkc2V0dGVyKTsKICAgICAgICAg
fQogCkBAIC0xNjQxLDkgKzE2NzMsNyBAQCBzdWIgTGVuZ3RoT2ZMb25nZXN0RnVuY3Rpb25QYXJh
bWV0ZXJMaXN0CiAKIHN1YiBHZW5lcmF0ZU92ZXJsb2FkZWRGdW5jdGlvbgogewotICAgIG15ICRm
dW5jdGlvbiA9IHNoaWZ0OwotICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKLSAgICBteSAkaW50
ZXJmYWNlTmFtZSA9IHNoaWZ0OworICAgIG15ICgkZnVuY3Rpb24sICRpbnRlcmZhY2UpID0gQF87
CiAKICAgICAjIEdlbmVyYXRlIGNvZGUgZm9yIGNob29zaW5nIHRoZSBjb3JyZWN0IG92ZXJsb2Fk
IHRvIGNhbGwuIE92ZXJsb2FkcyBhcmUKICAgICAjIGNob3NlbiBiYXNlZCBvbiB0aGUgdG90YWwg
bnVtYmVyIG9mIGFyZ3VtZW50cyBwYXNzZWQgYW5kIHRoZSB0eXBlIG9mCkBAIC0xNjUyLDYgKzE2
ODIsNyBAQCBzdWIgR2VuZXJhdGVPdmVybG9hZGVkRnVuY3Rpb24KICAgICAjIGRlY2xhcmF0aW9u
IGluIHRoZSBJREwuCiAKICAgICBteSAka2luZCA9ICRmdW5jdGlvbi0+aXNTdGF0aWMgPyAiQ29u
c3RydWN0b3IiIDogKE9wZXJhdGlvblNob3VsZEJlT25JbnN0YW5jZSgkaW50ZXJmYWNlLCAkZnVu
Y3Rpb24pID8gIkluc3RhbmNlIiA6ICJQcm90b3R5cGUiKTsKKyAgICBteSAkaW50ZXJmYWNlTmFt
ZSA9ICRpbnRlcmZhY2UtPm5hbWU7CiAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9ICJqcyR7aW50ZXJm
YWNlTmFtZX0ke2tpbmR9RnVuY3Rpb24iIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUpOwogCiAgICAgIyBGSVhNRTogSW1wbGVtZW50IHN1cHBv
cnQgZm9yIG92ZXJsb2FkZWQgZnVuY3Rpb25zIHdpdGggdmFyaWFkaWMgYXJndW1lbnRzLgpAQCAt
MTkwMSw3ICsxOTMyLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIlxudXNpbmcgbmFtZXNwYWNlIEpTQztcblxuIik7CiAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJuYW1lc3BhY2UgV2ViQ29yZSB7XG5cbiIpOwogCi0gICAgcHVzaChAaW1wbENv
bnRlbnQsIEdldEVudW1lcmF0aW9uSW1wbGVtZW50YXRpb25Db250ZW50KCRlbnVtZXJhdGlvbnMp
KTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgR2VuZXJhdGVFbnVtZXJhdGlvbkltcGxlbWVudGF0
aW9uQ29udGVudCgkaW50ZXJmYWNlLCAkZW51bWVyYXRpb25zKSk7CiAKICAgICBteSBAZnVuY3Rp
b25zID0gQHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9OwogICAgIHB1c2goQGZ1bmN0aW9ucywgQHsk
aW50ZXJmYWNlLT5pdGVyYWJsZS0+ZnVuY3Rpb25zfSkgaWYgJGludGVyZmFjZS0+aXRlcmFibGU7
CkBAIC0xOTQ5LDEwICsxOTgwLDEwIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAg
ICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0
ZUNvbmRpdGlvbmFsU3RyaW5nKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSk7CiAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRp
dGlvbmFsU3RyaW5nOwotICAgICAgICAgICAgbXkgJGdldHRlciA9IEdldEF0dHJpYnV0ZUdldHRl
ck5hbWUoJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRpbnRlcmZhY2UsICRhdHRyaWJ1dGUp
OworICAgICAgICAgICAgbXkgJGdldHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVy
ZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIkpTQzo6RW5jb2RlZEpTVmFsdWUgJHtnZXR0ZXJ9KEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpO1xuIik7CiAgICAgICAgICAgICBp
ZiAoIUlzUmVhZG9ubHkoJGF0dHJpYnV0ZSkpIHsKLSAgICAgICAgICAgICAgICBteSAkc2V0dGVy
ID0gR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJGlu
dGVyZmFjZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICAgICAgbXkgJHNldHRlciA9IEdldEF0
dHJpYnV0ZVNldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CiAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJib29sICR7c2V0dGVyfShKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpO1xuIik7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxu
IikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwpAQCAtMTk2OSwxNiArMjAwMCw5IEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4iKTsKICAg
ICB9CiAKLSAgICAjIEFkZCBwcm90b3R5cGUgZGVjbGFyYXRpb24uCi0gICAgaWYgKCFIZWFkZXJO
ZWVkc1Byb3RvdHlwZURlY2xhcmF0aW9uKCRpbnRlcmZhY2UpKSB7Ci0gICAgICAgIEdlbmVyYXRl
UHJvdG90eXBlRGVjbGFyYXRpb24oXEBpbXBsQ29udGVudCwgJGNsYXNzTmFtZSwgJGludGVyZmFj
ZSwgJGludGVyZmFjZU5hbWUpOwotICAgIH0KLQotICAgICMgQWRkIGNvbnN0cnVjdG9yIGRlY2xh
cmF0aW9uCi0gICAgaWYgKE5lZWRzQ29uc3RydWN0b3JQcm9wZXJ0eSgkaW50ZXJmYWNlKSkgewot
ICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24oXEBpbXBsQ29udGVudCwgJGNs
YXNzTmFtZSwgJGludGVyZmFjZSwgJGludGVyZmFjZU5hbWUpOwotICAgIH0KKyAgICBHZW5lcmF0
ZVByb3RvdHlwZURlY2xhcmF0aW9uKFxAaW1wbENvbnRlbnQsICRjbGFzc05hbWUsICRpbnRlcmZh
Y2UpIGlmICFIZWFkZXJOZWVkc1Byb3RvdHlwZURlY2xhcmF0aW9uKCRpbnRlcmZhY2UpOwogCisg
ICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uKFxAaW1wbENvbnRlbnQsICRjbGFzc05h
bWUsICRpbnRlcmZhY2UpIGlmIE5lZWRzQ29uc3RydWN0b3JQcm9wZXJ0eSgkaW50ZXJmYWNlKTsK
IAogICAgIG15IEBoYXNoS2V5cyA9ICgpOwogICAgIG15IEBoYXNoVmFsdWUxID0gKCk7CkBAIC0y
MDQzLDEzICsyMDY3LDEzIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAg
ICBteSAkc3BlY2lhbCA9IChAc3BlY2lhbHMgPiAwKSA/IGpvaW4oIiB8ICIsIEBzcGVjaWFscykg
OiAiMCI7CiAgICAgICAgICAgICBwdXNoKEBoYXNoU3BlY2lhbHMsICRzcGVjaWFsKTsKIAotICAg
ICAgICAgICAgbXkgJGdldHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZU5h
bWUsICRjbGFzc05hbWUsICRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOworICAgICAgICAgICAgbXkg
JGdldHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwg
JGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICBwdXNoKEBoYXNoVmFsdWUxLCAkZ2V0dGVyKTsKIAog
ICAgICAgICAgICAgaWYgKElzUmVhZG9ubHkoJGF0dHJpYnV0ZSkpIHsKICAgICAgICAgICAgICAg
ICBwdXNoKEBoYXNoVmFsdWUyLCAiMCIpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICBteSAkc2V0dGVyID0gR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNlTmFt
ZSwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICAgICAg
bXkgJHNldHRlciA9IEdldEF0dHJpYnV0ZVNldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFt
ZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICAgICAgcHVzaChAaGFzaFZhbHVlMiwgJHNldHRl
cik7CiAgICAgICAgICAgICB9CiAKQEAgLTIwOTEsOSArMjExNSw5IEBAIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkY29kZUdlbmVyYXRvci0+
R2VuZXJhdGVDb21waWxlVGltZUNoZWNrRm9yRW51bXNJZk5lZWRlZCgkaW50ZXJmYWNlKSk7CiAK
ICAgICAgICAgbXkgJHByb3RvQ2xhc3NOYW1lID0gIiR7Y2xhc3NOYW1lfVByb3RvdHlwZSI7Ci0g
ICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9ucyhcQGltcGxDb250ZW50LCAkY2xh
c3NOYW1lLCAkcHJvdG9DbGFzc05hbWUsICRpbnRlcmZhY2VOYW1lLCAkdmlzaWJsZUludGVyZmFj
ZU5hbWUsICRpbnRlcmZhY2UpOworICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlv
bnMoXEBpbXBsQ29udGVudCwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1lLCAkdmlzaWJsZUlu
dGVyZmFjZU5hbWUsICRpbnRlcmZhY2UpOwogICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Ik5hbWVkQ29uc3RydWN0b3IifSkgewotICAgICAgICAgICAgR2VuZXJh
dGVDb25zdHJ1Y3RvckRlZmluaXRpb25zKFxAaW1wbENvbnRlbnQsICRjbGFzc05hbWUsICRwcm90
b0NsYXNzTmFtZSwgJGludGVyZmFjZU5hbWUsICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJOYW1lZENvbnN0cnVjdG9yIn0sICRpbnRlcmZhY2UsICJHZW5lcmF0aW5nTmFtZWRDb25z
dHJ1Y3RvciIpOworICAgICAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb25zKFxA
aW1wbENvbnRlbnQsICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJGludGVyZmFjZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57Ik5hbWVkQ29uc3RydWN0b3IifSwgJGludGVyZmFjZSwgIkdlbmVy
YXRpbmdOYW1lZENvbnN0cnVjdG9yIik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTIyODAsOCAr
MjMwNCw4IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBteSAkZW5h
YmxlX2Z1bmN0aW9uID0gR2V0UnVudGltZUVuYWJsZUZ1bmN0aW9uTmFtZSgkYXR0cmlidXRlLT5z
aWduYXR1cmUpOwogICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZU5hbWUgPSAkYXR0cmlidXRlLT5z
aWduYXR1cmUtPm5hbWU7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAo
JHtlbmFibGVfZnVuY3Rpb259KCkpIHtcbiIpOwotICAgICAgICAgICAgbXkgJGdldHRlciA9IEdl
dEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRpbnRlcmZh
Y2UsICRhdHRyaWJ1dGUpOwotICAgICAgICAgICAgbXkgJHNldHRlciA9IElzUmVhZG9ubHkoJGF0
dHJpYnV0ZSkgPyAibnVsbHB0ciIgOiBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2VO
YW1lLCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKKyAgICAgICAgICAgIG15
ICRnZXR0ZXIgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUs
ICRhdHRyaWJ1dGUpOworICAgICAgICAgICAgbXkgJHNldHRlciA9IElzUmVhZG9ubHkoJGF0dHJp
YnV0ZSkgPyAibnVsbHB0ciIgOiBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRj
bGFzc05hbWUsICRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgICAgIGF1dG8qIGN1c3RvbUdldHRlclNldHRlciA9IEN1c3RvbUdldHRlclNldHRlcjo6Y3Jl
YXRlKHZtLCAkZ2V0dGVyLCAkc2V0dGVyKTtcbiIpOwogICAgICAgICAgICAgbXkgJGpzY0F0dHJp
YnV0ZXMgPSBHZXRKU0NBdHRyaWJ1dGVzRm9yQXR0cmlidXRlKCRpbnRlcmZhY2UsICRhdHRyaWJ1
dGUpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHB1dERpcmVjdEN1
c3RvbUFjY2Vzc29yKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT4kYXR0cmlidXRlTmFtZSwgY3VzdG9t
R2V0dGVyU2V0dGVyLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKCRqc2NBdHRyaWJ1dGVzKSk7XG4i
KTsKQEAgLTIzNDAsNyArMjM2NCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDwke2NsYXNzTmFtZX0qPihv
YmplY3QpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7XG4iKTsKLSAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZUdldE93blByb3BlcnR5U2xvdEJvZHkoJGludGVy
ZmFjZSwgJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRudW1JbnN0YW5jZVByb3BlcnRpZXMg
PiAwLCAwKSk7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgR2VuZXJhdGVHZXRPd25Q
cm9wZXJ0eVNsb3RCb2R5KCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRudW1JbnN0YW5jZVByb3Bl
cnRpZXMgPiAwLCAwKSk7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7
CiAgICAgICAgIH0KIApAQCAtMjQxNSw3ICsyNDM5LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb24KICAgICAgICAgICAgIG15ICRuYW1lID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1l
OwogICAgICAgICAgICAgbXkgJHR5cGUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGU7CiAg
ICAgICAgICAgICAkY29kZUdlbmVyYXRvci0+QXNzZXJ0Tm90U2VxdWVuY2VUeXBlKCR0eXBlKTsK
LSAgICAgICAgICAgIG15ICRnZXRGdW5jdGlvbk5hbWUgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1l
KCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKKyAg
ICAgICAgICAgIG15ICRnZXRGdW5jdGlvbk5hbWUgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRp
bnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgbXkgJGltcGxH
ZXR0ZXJGdW5jdGlvbk5hbWUgPSAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkYXR0cmlidXRl
LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEFzIn0gfHwgJG5h
bWUpOwogICAgICAgICAgICAgbXkgJGdldHRlckV4Y2VwdGlvbnNXaXRoTWVzc2FnZSA9ICRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkdldHRlclJhaXNlc0V4Y2Vw
dGlvbldpdGhNZXNzYWdlIn07CiAgICAgICAgICAgICBteSAkZ2V0dGVyRXhjZXB0aW9ucyA9ICRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkdldHRlclJhaXNlc0V4
Y2VwdGlvbiJ9IHx8ICRnZXR0ZXJFeGNlcHRpb25zV2l0aE1lc3NhZ2U7CkBAIC0yNzIwLDcgKzI3
NDQsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgICAgICAgICBteSAkbmFt
ZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZTsKICAgICAgICAgICAgIG15ICR0eXBlID0g
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlOwotICAgICAgICAgICAgbXkgJHB1dEZ1bmN0aW9u
TmFtZSA9IEdldEF0dHJpYnV0ZVNldHRlck5hbWUoJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUs
ICRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOworICAgICAgICAgICAgbXkgJHB1dEZ1bmN0aW9uTmFt
ZSA9IEdldEF0dHJpYnV0ZVNldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJp
YnV0ZSk7CiAgICAgICAgICAgICBteSAkaW1wbFNldHRlckZ1bmN0aW9uTmFtZSA9ICRjb2RlR2Vu
ZXJhdG9yLT5XS191Y2ZpcnN0KCRuYW1lKTsKICAgICAgICAgICAgIG15ICRzZXR0ZXJSYWlzZXNF
eGNlcHRpb25XaXRoTWVzc2FnZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IlNldHRlclJhaXNlc0V4Y2VwdGlvbldpdGhNZXNzYWdlIn07CiAgICAgICAgICAg
ICBteSAkc2V0dGVyUmFpc2VzRXhjZXB0aW9uID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiU2V0dGVyUmFpc2VzRXhjZXB0aW9uIn0gfHwgJHNldHRlclJhaXNl
c0V4Y2VwdGlvbldpdGhNZXNzYWdlOwpAQCAtMjg0MCw3ICsyODY0LDcgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgfTtcbiIpOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICIgLiBHZXROYXRpdmVUeXBlRnJvbVNpZ25hdHVyZSgkYXR0cmlidXRl
LT5zaWduYXR1cmUpIC4gIiBuYXRpdmVWYWx1ZSA9ICIgLiBKU1ZhbHVlVG9OYXRpdmUoJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLCAidmFsdWUiLCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJDb25kaXRpb25hbCJ9KSAuICI7XG4iKTsKKyAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAiIC4gR2V0TmF0aXZlVHlwZUZyb21TaWduYXR1cmUoJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlKSAuICIgbmF0aXZlVmFsdWUgPSAiIC4gSlNWYWx1ZVRvTmF0aXZl
KCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgInZhbHVlIiwgJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uZGl0aW9uYWwifSkgLiAiO1xuIik7
CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpXG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAgICAgcmV0dXJuIGZhbHNlO1xuIik7CiAKQEAgLTMwNDgsMTEgKzMwNzIsMTEg
QEAgRU5ECiAgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgICBteSAk
bnVtUGFyYW1ldGVycyA9IEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfTsKLSAgICAgICAgICAgICAg
ICAgICAgbXkgKCRmdW5jdGlvblN0cmluZywgJGR1bW15KSA9IEdlbmVyYXRlUGFyYW1ldGVyc0No
ZWNrKFxAaW1wbENvbnRlbnQsICRmdW5jdGlvbiwgJGludGVyZmFjZSwgJG51bVBhcmFtZXRlcnMs
ICRpbnRlcmZhY2VOYW1lLCAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUsICRzdmdQcm9wZXJ0
eVR5cGUsICRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSwgJHN2Z0xpc3RQcm9wZXJ0eVR5
cGUpOworICAgICAgICAgICAgICAgICAgICBteSAoJGZ1bmN0aW9uU3RyaW5nLCAkZHVtbXkpID0g
R2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2soXEBpbXBsQ29udGVudCwgJGZ1bmN0aW9uLCAkaW50ZXJm
YWNlLCAkbnVtUGFyYW1ldGVycywgJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lLCAkc3ZnUHJv
cGVydHlUeXBlLCAkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUsICRzdmdMaXN0UHJvcGVy
dHlUeXBlKTsKICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0
aW9uQ2FsbCgkZnVuY3Rpb24sICRmdW5jdGlvblN0cmluZywgIiAgICAiLCAkc3ZnUHJvcGVydHlU
eXBlLCAkaW50ZXJmYWNlTmFtZSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICBHZW5lcmF0ZUZ1bmN0aW9uQ2FzdGVkVGhpcygkaW50ZXJm
YWNlLCAkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKTsKKyAgICAgICAgICAg
ICAgICBHZW5lcmF0ZUZ1bmN0aW9uQ2FzdGVkVGhpcygkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAk
ZnVuY3Rpb24pOwogCiAgICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJDaGVja1NlY3VyaXR5In0gYW5kCiAgICAgICAgICAgICAgICAgICAgICEkZnVu
Y3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRvTm90Q2hlY2tTZWN1cml0
eSJ9KSB7CkBAIC0zMTAyLDcgKzMxMjYsNyBAQCBFTkQKICAgICAgICAgICAgICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgICAgICAgICAgICAgbXkgJG51bVBhcmFtZXRlcnMgPSBAeyRmdW5j
dGlvbi0+cGFyYW1ldGVyc307Ci0gICAgICAgICAgICAgICAgICAgICAgICBteSAoJGZ1bmN0aW9u
U3RyaW5nLCAkZHVtbXkpID0gR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2soXEBpbXBsQ29udGVudCwg
JGZ1bmN0aW9uLCAkaW50ZXJmYWNlLCAkbnVtUGFyYW1ldGVycywgJGludGVyZmFjZU5hbWUsICRm
dW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSwgJHN2Z1Byb3BlcnR5VHlwZSwgJHN2Z1Byb3BlcnR5
T3JMaXN0UHJvcGVydHlUeXBlLCAkc3ZnTGlzdFByb3BlcnR5VHlwZSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBteSAoJGZ1bmN0aW9uU3RyaW5nLCAkZHVtbXkpID0gR2VuZXJhdGVQYXJhbWV0
ZXJzQ2hlY2soXEBpbXBsQ29udGVudCwgJGZ1bmN0aW9uLCAkaW50ZXJmYWNlLCAkbnVtUGFyYW1l
dGVycywgJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lLCAkc3ZnUHJvcGVydHlUeXBlLCAkc3Zn
UHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUsICRzdmdMaXN0UHJvcGVydHlUeXBlKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlSW1wbGVtZW50YXRpb25GdW5jdGlvbkNhbGwoJGZ1
bmN0aW9uLCAkZnVuY3Rpb25TdHJpbmcsICIgICAgIiwgJHN2Z1Byb3BlcnR5VHlwZSwgJGludGVy
ZmFjZU5hbWUpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQpAQCAt
MzExMSwxMSArMzEzNSw4IEBAIEVORAogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9
XG5cbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcblxuIikgaWYg
JGNvbmRpdGlvbmFsOwogCi0gICAgICAgICAgICBpZiAoISRpc0N1c3RvbSAmJiAkaXNPdmVybG9h
ZGVkICYmICRmdW5jdGlvbi0+e292ZXJsb2FkSW5kZXh9ID09IEB7JGZ1bmN0aW9uLT57b3Zlcmxv
YWRzfX0pIHsKLSAgICAgICAgICAgICAgICAjIEdlbmVyYXRlIGEgZnVuY3Rpb24gZGlzcGF0Y2hp
bmcgY2FsbCB0byB0aGUgcmVzdCBvZiB0aGUgb3ZlcmxvYWRzLgotICAgICAgICAgICAgICAgIEdl
bmVyYXRlT3ZlcmxvYWRlZEZ1bmN0aW9uKCRmdW5jdGlvbiwgJGludGVyZmFjZSwgJGludGVyZmFj
ZU5hbWUpOwotICAgICAgICAgICAgfQotCisgICAgICAgICAgICAjIEdlbmVyYXRlIGEgZnVuY3Rp
b24gZGlzcGF0Y2hpbmcgY2FsbCB0byB0aGUgcmVzdCBvZiB0aGUgb3ZlcmxvYWRzLgorICAgICAg
ICAgICAgR2VuZXJhdGVPdmVybG9hZGVkRnVuY3Rpb24oJGZ1bmN0aW9uLCAkaW50ZXJmYWNlKSBp
ZiAhJGlzQ3VzdG9tICYmICRpc092ZXJsb2FkZWQgJiYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRl
eH0gPT0gQHskZnVuY3Rpb24tPntvdmVybG9hZHN9fTsKICAgICAgICAgfQogCiAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAkZW5kQXBwbGVDb3B5cmlnaHQpIGlmICRpbkFwcGxlQ29weXJpZ2h0
OwpAQCAtMzM2MSwxMCArMzM4Miw4IEBAIEVORAogCiBzdWIgR2VuZXJhdGVGdW5jdGlvbkNhc3Rl
ZFRoaXMKIHsKLSAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7Ci0gICAgbXkgJGludGVyZmFjZU5h
bWUgPSBzaGlmdDsKLSAgICBteSAkY2xhc3NOYW1lID0gc2hpZnQ7Ci0gICAgbXkgJGZ1bmN0aW9u
ID0gc2hpZnQ7CisgICAgbXkgKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRmdW5jdGlvbikgPSBA
XzsKKwogICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tUHJv
eHlUb0pTT2JqZWN0In0pIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGNsYXNz
TmFtZSogY2FzdGVkVGhpcyA9IHRvJHtjbGFzc05hbWV9KHN0YXRlLT50aGlzVmFsdWUoKS50b1Ro
aXMoc3RhdGUsIE5vdFN0cmljdE1vZGUpKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKVxuIik7CkBAIC0zMzcyLDYgKzMzOTEs
NyBAQCBzdWIgR2VuZXJhdGVGdW5jdGlvbkNhc3RlZFRoaXMKICAgICB9IGVsc2UgewogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlz
VmFsdWUoKTtcbiIpOwogICAgICAgICBteSAkY2FzdGluZ0hlbHBlciA9IEdldENhc3RpbmdIZWxw
ZXJGb3JUaGlzT2JqZWN0KCRpbnRlcmZhY2UpOworICAgICAgICBteSAkaW50ZXJmYWNlTmFtZSA9
ICRpbnRlcmZhY2UtPm5hbWU7CiAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRXZlbnRU
YXJnZXQiKSB7CiAgICAgICAgICAgICAjIFdlIGFsbG93IGNhbGxpbmcgdGhlIEV2ZW50VGFyZ2V0
IEFQSSB3aXRob3V0IGFuIGV4cGxpY2l0ICd0aGlzJyB2YWx1ZSBhbmQgZmFsbCBiYWNrIHRvIHVz
aW5nIHRoZSBnbG9iYWwgb2JqZWN0IGluc3RlYWQuCiAgICAgICAgICAgICAjIEFzIG9mIGVhcmx5
IDIwMTYsIHRoaXMgbWF0Y2hlcyBGaXJlZm94IGFuZCBDaHJvbWUncyBiZWhhdmlvci4KQEAgLTMz
ODQsNyArMzQwNCw3IEBAIHN1YiBHZW5lcmF0ZUZ1bmN0aW9uQ2FzdGVkVGhpcwogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsIFwiJGludGVyZmFjZU5hbWVcIiwgXCIkZG9tRnVuY3Rpb25OYW1lXCIpO1xuIik7CiAgICAg
fQogCi0gICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCAke2NsYXNzTmFtZX06OmluZm8oKSk7XG4iKSB1bmxlc3MgJGludGVyZmFj
ZU5hbWUgZXEgIkV2ZW50VGFyZ2V0IjsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICR7Y2xhc3NOYW1lfTo6aW5mbygpKTtc
biIpIHVubGVzcyAkaW50ZXJmYWNlLT5uYW1lIGVxICJFdmVudFRhcmdldCI7CiB9CiAKIHN1YiBH
ZW5lcmF0ZUNhbGxXaXRoCkBAIC0zNDkzLDIwICszNTEzLDkgQEAgc3ViIFdpbGxDb252ZXJ0VW5k
ZWZpbmVkVG9EZWZhdWx0UGFyYW1ldGVyVmFsdWUKIAogc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0No
ZWNrCiB7Ci0gICAgbXkgJG91dHB1dEFycmF5ID0gc2hpZnQ7Ci0gICAgbXkgJGZ1bmN0aW9uID0g
c2hpZnQ7Ci0gICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OwotICAgIG15ICRudW1QYXJhbWV0ZXJz
ID0gc2hpZnQ7Ci0gICAgbXkgJGludGVyZmFjZU5hbWUgPSBzaGlmdDsKLSAgICBteSAkZnVuY3Rp
b25JbXBsZW1lbnRhdGlvbk5hbWUgPSBzaGlmdDsKLSAgICBteSAkc3ZnUHJvcGVydHlUeXBlID0g
c2hpZnQ7Ci0gICAgbXkgJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlID0gc2hpZnQ7Ci0g
ICAgbXkgJHN2Z0xpc3RQcm9wZXJ0eVR5cGUgPSBzaGlmdDsKLQotICAgIG15ICRhcmdzSW5kZXgg
PSAwOwotICAgIG15ICRoYXNPcHRpb25hbEFyZ3VtZW50cyA9IDA7CisgICAgbXkgKCRvdXRwdXRB
cnJheSwgJGZ1bmN0aW9uLCAkaW50ZXJmYWNlLCAkbnVtUGFyYW1ldGVycywgJGZ1bmN0aW9uSW1w
bGVtZW50YXRpb25OYW1lLCAkc3ZnUHJvcGVydHlUeXBlLCAkc3ZnUHJvcGVydHlPckxpc3RQcm9w
ZXJ0eVR5cGUsICRzdmdMaXN0UHJvcGVydHlUeXBlKSA9IEBfOwogCi0gICAgbXkgJGNsYXNzTmFt
ZSA9ICRpbnRlcmZhY2UtPm5hbWU7CisgICAgbXkgJGludGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNl
LT5uYW1lOwogICAgIG15IEBhcmd1bWVudHM7CiAgICAgbXkgJGZ1bmN0aW9uTmFtZTsKICAgICBt
eSAkaW1wbGVtZW50ZWRCeSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9OwpAQCAtMzUzMyw2ICszNTQyLDggQEAgc3ViIEdlbmVyYXRl
UGFyYW1ldGVyc0NoZWNrCiAKICAgICAkaW1wbEluY2x1ZGVzeyJFeGNlcHRpb25Db2RlLmgifSA9
IDE7CiAgICAgJGltcGxJbmNsdWRlc3siSlNET01CaW5kaW5nLmgifSA9IDE7CisKKyAgICBteSAk
YXJnc0luZGV4ID0gMDsKICAgICBmb3JlYWNoIG15ICRwYXJhbWV0ZXIgKEB7JGZ1bmN0aW9uLT5w
YXJhbWV0ZXJzfSkgewogICAgICAgICBteSAkYXJnVHlwZSA9ICRwYXJhbWV0ZXItPnR5cGU7CiAg
ICAgICAgIG15ICRvcHRpb25hbCA9ICRwYXJhbWV0ZXItPmlzT3B0aW9uYWw7CkBAIC0zNjI1LDcg
KzM2MzYsOSBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7XG4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNpZiAoJGNvZGVHZW5l
cmF0b3ItPklzRW51bVR5cGUoJGFyZ1R5cGUpKSB7Ci0gICAgICAgICAgICBteSAkY2xhc3NOYW1l
ID0gR2V0RW51bWVyYXRpb25DbGFzc05hbWUoJGFyZ1R5cGUpOworICAgICAgICAgICAgbXkgJGNs
YXNzTmFtZSA9IEdldEVudW1lcmF0aW9uQ2xhc3NOYW1lKCRpbnRlcmZhY2UsICRhcmdUeXBlKTsK
KyAgICAgICAgICAgIG15ICRjbGFzc0lkZW50aWZpZXIgPSBHZXRFbnVtZXJhdGlvbkNsYXNzSWRl
bnRpZmllcigkaW50ZXJmYWNlLCAkYXJnVHlwZSk7CisKICAgICAgICAgICAgICRpbXBsSW5jbHVk
ZXN7IjxydW50aW1lL0Vycm9yLmg+In0gPSAxOwogCiAgICAgICAgICAgICBteSAkbmF0aXZlVHlw
ZSA9ICRjbGFzc05hbWU7CkBAIC0zNjUyLDExICszNjY1LDExIEBAIHN1YiBHZW5lcmF0ZVBhcmFt
ZXRlcnNDaGVjawogICAgICAgICAgICAgICAgICRpbmRlbnQgPSAiICAgICI7CiAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiRpbmRlbnQgICAgJGRlZmlu
ZU9wdGlvbmFsVmFsdWUgPSBwYXJzZSRjbGFzc05hbWUoKnN0YXRlLCAke25hbWV9VmFsdWUpO1xu
Iik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIkaW5kZW50ICAgICRkZWZpbmVP
cHRpb25hbFZhbHVlID0gcGFyc2UkY2xhc3NJZGVudGlmaWVyKCpzdGF0ZSwgJHtuYW1lfVZhbHVl
KTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiJGluZGVudCAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSlcbiIpOwogICAgICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiJGluZGVudCAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiJGluZGVu
dCAgICBpZiAoVU5MSUtFTFkoISRvcHRpb25hbFZhbHVlKSlcbiIpOwotICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiJGluZGVudCAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0
QmVFbnVtRXJyb3IoKnN0YXRlLCAkYXJnc0luZGV4LCBcIiRuYW1lXCIsIFwiJGludGVyZmFjZU5h
bWVcIiwgJHF1b3RlZEZ1bmN0aW9uTmFtZSwgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlcyRjbGFz
c05hbWUpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIkaW5kZW50ICAg
ICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJvcigqc3RhdGUsICRhcmdzSW5k
ZXgsIFwiJG5hbWVcIiwgXCIkaW50ZXJmYWNlTmFtZVwiLCAkcXVvdGVkRnVuY3Rpb25OYW1lLCBl
eHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzJGNsYXNzSWRlbnRpZmllcik7XG4iKTsKICAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiRpbmRlbnQgICAgJG5hbWUgPSBvcHRpb25hbFZhbHVl
LnZhbHVlKCk7XG4iKSBpZiAkb3B0aW9uYWxWYWx1ZSBuZSAkbmFtZTsKIAogICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1cbiIpIGlmICRpbmRlbnQgbmUgIiI7CkBAIC0zNzE5
LDcgKzM3MzIsNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgICAg
ICAgICAgJG91dGVyID0gIiI7CiAgICAgICAgICAgICAgICAgICAgICRpbm5lciA9ICJzdGF0ZS0+
YXJndW1lbnQoJGFyZ3NJbmRleCkiOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgJG5hdGl2ZVR5cGUgJG5hbWUgPSAkb3V0ZXIiIC4g
SlNWYWx1ZVRvTmF0aXZlKCRwYXJhbWV0ZXIsICRpbm5lciwgJGZ1bmN0aW9uLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25kaXRpb25hbCJ9KSAuICI7XG4iKTsKKyAgICAgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgJG5hdGl2ZVR5cGUgJG5hbWUgPSAkb3V0
ZXIiIC4gSlNWYWx1ZVRvTmF0aXZlKCRpbnRlcmZhY2UsICRwYXJhbWV0ZXIsICRpbm5lciwgJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25kaXRpb25hbCJ9KSAu
ICI7XG4iKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgIyBDaGVjayBpZiB0aGUgdHlw
ZSBjb252ZXJzaW9uIHN1Y2NlZWRlZC4KQEAgLTM4NjIsNyArMzg3NSw3IEBAIHN1YiBHZW5lcmF0
ZUNhbGxiYWNrSW1wbGVtZW50YXRpb24KICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxudXNpbmcg
bmFtZXNwYWNlIEpTQztcblxuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJuYW1lc3BhY2Ug
V2ViQ29yZSB7XG5cbiIpOwogCi0gICAgcHVzaChAaW1wbENvbnRlbnQsIEdldEVudW1lcmF0aW9u
SW1wbGVtZW50YXRpb25Db250ZW50KCRlbnVtZXJhdGlvbnMpKTsKKyAgICBwdXNoKEBpbXBsQ29u
dGVudCwgR2VuZXJhdGVFbnVtZXJhdGlvbkltcGxlbWVudGF0aW9uQ29udGVudCgkaW50ZXJmYWNl
LCAkZW51bWVyYXRpb25zKSk7CiAKICAgICAjIENvbnN0cnVjdG9yCiAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIke2NsYXNzTmFtZX06OiR7Y2xhc3NOYW1lfShKU09iamVjdCogY2FsbGJhY2ssIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG4iKTsKQEAgLTM5MzksNyArMzk1Miw3IEBA
IHN1YiBHZW5lcmF0ZUNhbGxiYWNrSW1wbGVtZW50YXRpb24KIAogICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb21waWxlVGltZUNoZWNrRm9yRW51bXNJ
Zk5lZWRlZCgkaW50ZXJmYWNlKSk7CiAKLSAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5p
dGlvbnMoXEBpbXBsQ29udGVudCwgJGNsYXNzTmFtZSwgIiIsICRpbnRlcmZhY2VOYW1lLCAkdmlz
aWJsZUludGVyZmFjZU5hbWUsICRpbnRlcmZhY2UpOworICAgICAgIEdlbmVyYXRlQ29uc3RydWN0
b3JEZWZpbml0aW9ucyhcQGltcGxDb250ZW50LCAkY2xhc3NOYW1lLCAiIiwgJHZpc2libGVJbnRl
cmZhY2VOYW1lLCAkaW50ZXJmYWNlKTsKIAogICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNW
YWx1ZSAke2NsYXNzTmFtZX06OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdClcbntcbiIpOwogICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3Rvcjwke2NsYXNzTmFtZX1Db25zdHJ1Y3Rvcj4odm0s
ICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTtcbiIpOwpA
QCAtNDMxNyw5ICs0MzMwLDcgQEAgbXkgJWludGVnZXJDb252ZXJzaW9uRnVuY3Rpb24gPSAoCiAK
IHN1YiBKU1ZhbHVlVG9OYXRpdmUKIHsKLSAgICBteSAkc2lnbmF0dXJlID0gc2hpZnQ7Ci0gICAg
bXkgJHZhbHVlID0gc2hpZnQ7Ci0gICAgbXkgJGNvbmRpdGlvbmFsID0gc2hpZnQ7CisgICAgbXkg
KCRpbnRlcmZhY2UsICRzaWduYXR1cmUsICR2YWx1ZSwgJGNvbmRpdGlvbmFsKSA9IEBfOwogCiAg
ICAgbXkgJHR5cGUgPSAkc2lnbmF0dXJlLT50eXBlOwogCkBAIC00MzY4LDcgKzQzNzksNyBAQCBz
dWIgSlNWYWx1ZVRvTmF0aXZlCiAgICAgcmV0dXJuICJ2YWx1ZVRvRGF0ZShzdGF0ZSwgJHZhbHVl
KSIgaWYgJHR5cGUgZXEgIkRhdGUiOwogCiAgICAgcmV0dXJuICJ0byR0eXBlKCR2YWx1ZSkiIGlm
ICRjb2RlR2VuZXJhdG9yLT5Jc1R5cGVkQXJyYXlUeXBlKCR0eXBlKTsKLSAgICByZXR1cm4gInBh
cnNlIiAuIEdldEVudW1lcmF0aW9uQ2xhc3NOYW1lKCR0eXBlKSAuICIoKnN0YXRlLCAkdmFsdWUp
IiBpZiAkY29kZUdlbmVyYXRvci0+SXNFbnVtVHlwZSgkdHlwZSk7CisgICAgcmV0dXJuICJwYXJz
ZSIgLiBHZXRFbnVtZXJhdGlvbkNsYXNzSWRlbnRpZmllcigkaW50ZXJmYWNlLCAkdHlwZSkgLiAi
KCpzdGF0ZSwgJHZhbHVlKSIgaWYgJGNvZGVHZW5lcmF0b3ItPklzRW51bVR5cGUoJHR5cGUpOwog
CiAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTJHR5cGUuaCIsICRjb25kaXRpb25hbCk7CiAKQEAg
LTQ3NDcsMTAgKzQ3NTgsNyBAQCBzdWIgV3JpdGVEYXRhCiAKIHN1YiBHZW5lcmF0ZVByb3RvdHlw
ZURlY2xhcmF0aW9uCiB7Ci0gICAgbXkgJG91dHB1dEFycmF5ID0gc2hpZnQ7Ci0gICAgbXkgJGNs
YXNzTmFtZSA9IHNoaWZ0OwotICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKLSAgICBteSAkaW50
ZXJmYWNlTmFtZSA9IHNoaWZ0OworICAgIG15ICgkb3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRp
bnRlcmZhY2UpID0gQF87CiAKICAgICBteSAkcHJvdG90eXBlQ2xhc3NOYW1lID0gIiR7Y2xhc3NO
YW1lfVByb3RvdHlwZSI7CiAKQEAgLTQ4MjYsMTEgKzQ4MzQsOSBAQCBzdWIgR2V0Q29uc3RydWN0
b3JUZW1wbGF0ZUNsYXNzTmFtZQogCiBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9u
CiB7Ci0gICAgbXkgJG91dHB1dEFycmF5ID0gc2hpZnQ7Ci0gICAgbXkgJGNsYXNzTmFtZSA9IHNo
aWZ0OwotICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKLSAgICBteSAkaW50ZXJmYWNlTmFtZSA9
IHNoaWZ0OworICAgIG15ICgkb3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRpbnRlcmZhY2UpID0g
QF87CiAKKyAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRpbnRlcmZhY2UtPm5hbWU7CiAgICAgbXkg
JGNvbnN0cnVjdG9yQ2xhc3NOYW1lID0gIiR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yIjsKICAgICBt
eSAkdGVtcGxhdGVDbGFzc05hbWUgPSBHZXRDb25zdHJ1Y3RvclRlbXBsYXRlQ2xhc3NOYW1lKCRp
bnRlcmZhY2UpOwogCkBAIC00ODQzLDI5ICs0ODQ5LDIzIEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVj
dG9yRGVjbGFyYXRpb24KIAogc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9ucwogewot
ICAgIG15ICRvdXRwdXRBcnJheSA9IHNoaWZ0OwotICAgIG15ICRjbGFzc05hbWUgPSBzaGlmdDsK
LSAgICBteSAkcHJvdG9DbGFzc05hbWUgPSBzaGlmdDsKLSAgICBteSAkaW50ZXJmYWNlTmFtZSA9
IHNoaWZ0OwotICAgIG15ICR2aXNpYmxlSW50ZXJmYWNlTmFtZSA9IHNoaWZ0OwotICAgIG15ICRp
bnRlcmZhY2UgPSBzaGlmdDsKLSAgICBteSAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IgPSBz
aGlmdDsKKyAgICBteSAoJG91dHB1dEFycmF5LCAkY2xhc3NOYW1lLCAkcHJvdG9DbGFzc05hbWUs
ICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZSwgJGdlbmVyYXRpbmdOYW1lZENvbnN0
cnVjdG9yKSA9IEBfOwogCiAgICAgaWYgKElzQ29uc3RydWN0YWJsZSgkaW50ZXJmYWNlKSkgewog
ICAgICAgICBteSBAY29uc3RydWN0b3JzID0gQHskaW50ZXJmYWNlLT5jb25zdHJ1Y3RvcnN9Owog
ICAgICAgICBpZiAoQGNvbnN0cnVjdG9ycyA+IDEpIHsKICAgICAgICAgICAgIGZvcmVhY2ggbXkg
JGNvbnN0cnVjdG9yIChAY29uc3RydWN0b3JzKSB7Ci0gICAgICAgICAgICAgICAgR2VuZXJhdGVD
b25zdHJ1Y3RvckRlZmluaXRpb24oJG91dHB1dEFycmF5LCAkY2xhc3NOYW1lLCAkcHJvdG9DbGFz
c05hbWUsICRpbnRlcmZhY2VOYW1lLCAkdmlzaWJsZUludGVyZmFjZU5hbWUsICRpbnRlcmZhY2Us
ICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciwgJGNvbnN0cnVjdG9yKTsKKyAgICAgICAgICAg
ICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbigkb3V0cHV0QXJyYXksICRjbGFzc05h
bWUsICRwcm90b0NsYXNzTmFtZSwgJHZpc2libGVJbnRlcmZhY2VOYW1lLCAkaW50ZXJmYWNlLCAk
Z2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IsICRjb25zdHJ1Y3Rvcik7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBHZW5lcmF0ZU92ZXJsb2FkZWRDb25zdHJ1Y3RvckRlZmluaXRpb24oJG91
dHB1dEFycmF5LCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlKTsKICAgICAgICAgfSBlbHNpZiAoQGNv
bnN0cnVjdG9ycyA9PSAxKSB7Ci0gICAgICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5p
dGlvbigkb3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJGludGVyZmFj
ZU5hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZSwgJGdlbmVyYXRpbmdOYW1l
ZENvbnN0cnVjdG9yLCAkY29uc3RydWN0b3JzWzBdKTsKKyAgICAgICAgICAgIEdlbmVyYXRlQ29u
c3RydWN0b3JEZWZpbml0aW9uKCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NO
YW1lLCAkdmlzaWJsZUludGVyZmFjZU5hbWUsICRpbnRlcmZhY2UsICRnZW5lcmF0aW5nTmFtZWRD
b25zdHJ1Y3RvciwgJGNvbnN0cnVjdG9yc1swXSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbigkb3V0cHV0QXJyYXksICRjbGFzc05h
bWUsICRwcm90b0NsYXNzTmFtZSwgJGludGVyZmFjZU5hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFt
ZSwgJGludGVyZmFjZSwgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yKTsKKyAgICAgICAgICAg
IEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwg
JHByb3RvQ2xhc3NOYW1lLCAkdmlzaWJsZUludGVyZmFjZU5hbWUsICRpbnRlcmZhY2UsICRnZW5l
cmF0aW5nTmFtZWRDb25zdHJ1Y3Rvcik7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBHZW5lcmF0
ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcygkb3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRwcm90
b0NsYXNzTmFtZSwgJGludGVyZmFjZU5hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGludGVy
ZmFjZSwgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yKTsKKyAgICBHZW5lcmF0ZUNvbnN0cnVj
dG9ySGVscGVyTWV0aG9kcygkb3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFt
ZSwgJHZpc2libGVJbnRlcmZhY2VOYW1lLCAkaW50ZXJmYWNlLCAkZ2VuZXJhdGluZ05hbWVkQ29u
c3RydWN0b3IpOwogfQogCiBzdWIgR2VuZXJhdGVPdmVybG9hZGVkQ29uc3RydWN0b3JEZWZpbml0
aW9uCkBAIC00OTE1LDE5ICs0OTE1LDExIEBAIEVORAogCiBzdWIgR2VuZXJhdGVDb25zdHJ1Y3Rv
ckRlZmluaXRpb24KIHsKLSAgICBteSAkb3V0cHV0QXJyYXkgPSBzaGlmdDsKLSAgICBteSAkY2xh
c3NOYW1lID0gc2hpZnQ7Ci0gICAgbXkgJHByb3RvQ2xhc3NOYW1lID0gc2hpZnQ7Ci0gICAgbXkg
JGludGVyZmFjZU5hbWUgPSBzaGlmdDsKLSAgICBteSAkdmlzaWJsZUludGVyZmFjZU5hbWUgPSBz
aGlmdDsKLSAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7Ci0gICAgbXkgJGdlbmVyYXRpbmdOYW1l
ZENvbnN0cnVjdG9yID0gc2hpZnQ7Ci0gICAgbXkgJGZ1bmN0aW9uID0gc2hpZnQ7CisgICAgbXkg
KCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1lLCAkdmlzaWJsZUludGVy
ZmFjZU5hbWUsICRpbnRlcmZhY2UsICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciwgJGZ1bmN0
aW9uKSA9IEBfOwogCi0gICAgaWYgKElzSlNCdWlsdGluQ29uc3RydWN0b3IoJGludGVyZmFjZSkp
IHsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICByZXR1cm4gaWYgSXNKU0J1aWx0aW5Db25z
dHJ1Y3RvcigkaW50ZXJmYWNlKTsKIAorICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGludGVyZmFj
ZS0+bmFtZTsKICAgICBteSAkY29uc3RydWN0b3JDbGFzc05hbWUgPSAkZ2VuZXJhdGluZ05hbWVk
Q29uc3RydWN0b3IgPyAiJHtjbGFzc05hbWV9TmFtZWRDb25zdHJ1Y3RvciIgOiAiJHtjbGFzc05h
bWV9Q29uc3RydWN0b3IiOwogCiAgICAgaWYgKElzQ29uc3RydWN0YWJsZSgkaW50ZXJmYWNlKSkg
ewpAQCAtNTA0MCw3ICs1MDMyLDcgQEAgRU5ECiAgICAgICAgICAgICAjIEZJWE1FOiBGb3Igbm93
LCB3ZSBkbyBub3Qgc3VwcG9ydCBTVkcgY29uc3RydWN0b3JzLgogICAgICAgICAgICAgIyBGSVhN
RTogQ3VycmVudGx5IFtDb25zdHJ1Y3RvciguLi4pXSBkb2VzIG5vdCB5ZXQgc3VwcG9ydCBvcHRp
b25hbCBhcmd1bWVudHMgd2l0aG91dCBbRGVmYXVsdD0uLi5dCiAgICAgICAgICAgICBteSAkbnVt
UGFyYW1ldGVycyA9IEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfTsKLSAgICAgICAgICAgIG15ICgk
ZHVtbXksICRwYXJhbUluZGV4KSA9IEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrKCRvdXRwdXRBcnJh
eSwgJGZ1bmN0aW9uLCAkaW50ZXJmYWNlLCAkbnVtUGFyYW1ldGVycywgJGludGVyZmFjZU5hbWUs
ICJjb25zdHJ1Y3RvckNhbGxiYWNrIiwgdW5kZWYsIHVuZGVmLCB1bmRlZik7CisgICAgICAgICAg
ICBteSAoJGR1bW15LCAkcGFyYW1JbmRleCkgPSBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjaygkb3V0
cHV0QXJyYXksICRmdW5jdGlvbiwgJGludGVyZmFjZSwgJG51bVBhcmFtZXRlcnMsICJjb25zdHJ1
Y3RvckNhbGxiYWNrIiwgdW5kZWYsIHVuZGVmLCB1bmRlZik7CiAKICAgICAgICAgICAgIGlmICgk
Y29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygkaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3JDYWxsV2l0aCJ9LCAiU2NyaXB0U3RhdGUiKSkg
ewogICAgICAgICAgICAgICAgIHB1c2goQGNvbnN0cnVjdG9yQXJnTGlzdCwgIipzdGF0ZSIpOwpA
QCAtNTEyNiwxMyArNTExOCw3IEBAIHN1YiBDb25zdHJ1Y3Rvckhhc1Byb3BlcnRpZXMKIAogc3Vi
IEdlbmVyYXRlQ29uc3RydWN0b3JIZWxwZXJNZXRob2RzCiB7Ci0gICAgbXkgJG91dHB1dEFycmF5
ID0gc2hpZnQ7Ci0gICAgbXkgJGNsYXNzTmFtZSA9IHNoaWZ0OwotICAgIG15ICRwcm90b0NsYXNz
TmFtZSA9IHNoaWZ0OwotICAgIG15ICRpbnRlcmZhY2VOYW1lID0gc2hpZnQ7Ci0gICAgbXkgJHZp
c2libGVJbnRlcmZhY2VOYW1lID0gc2hpZnQ7Ci0gICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0Owot
ICAgIG15ICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciA9IHNoaWZ0OworICAgIG15ICgkb3V0
cHV0QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJHZpc2libGVJbnRlcmZhY2VO
YW1lLCAkaW50ZXJmYWNlLCAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IpID0gQF87CiAKICAg
ICBteSAkY29uc3RydWN0b3JDbGFzc05hbWUgPSAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3Ig
PyAiJHtjbGFzc05hbWV9TmFtZWRDb25zdHJ1Y3RvciIgOiAiJHtjbGFzc05hbWV9Q29uc3RydWN0
b3IiOwogICAgIG15ICRsZWFzdENvbnN0cnVjdG9yTGVuZ3RoID0gMDsKQEAgLTUxODMsMTQgKzUx
NjksOCBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMKICAgICB9CiAKICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcoJnZtLCBTdHJpbmcoQVNDSUlMaXRlcmFsKFwiJHZp
c2libGVJbnRlcmZhY2VOYW1lXCIpKSksIFJlYWRPbmx5IHwgRG9udEVudW0pO1xuIik7Ci0KLSAg
ICBpZiAoZGVmaW5lZCAkbGVhc3RDb25zdHJ1Y3Rvckxlbmd0aCkgewotICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgs
IGpzTnVtYmVyKCR7bGVhc3RDb25zdHJ1Y3Rvckxlbmd0aH0pLCBSZWFkT25seSB8IERvbnRFbnVt
KTtcbiIpOwotICAgIH0KLQotICAgIGlmIChDb25zdHJ1Y3Rvckhhc1Byb3BlcnRpZXMoJGludGVy
ZmFjZSkpIHsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJlaWZ5U3RhdGljUHJv
cGVydGllcyh2bSwgJHtjbGFzc05hbWV9Q29uc3RydWN0b3JUYWJsZVZhbHVlcywgKnRoaXMpO1xu
Iik7Ci0gICAgfQorICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoJHtsZWFzdENvbnN0cnVjdG9yTGVuZ3Ro
fSksIFJlYWRPbmx5IHwgRG9udEVudW0pO1xuIikgaWYgZGVmaW5lZCAkbGVhc3RDb25zdHJ1Y3Rv
ckxlbmd0aDsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmVpZnlTdGF0aWNQcm9wZXJ0
aWVzKHZtLCAke2NsYXNzTmFtZX1Db25zdHJ1Y3RvclRhYmxlVmFsdWVzLCAqdGhpcyk7XG4iKSBp
ZiBDb25zdHJ1Y3Rvckhhc1Byb3BlcnRpZXMoJGludGVyZmFjZSk7CiAKICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICJ9XG5cbiIpOwogCkBAIC01MjEyLDcgKzUxOTIsNyBAQCBzdWIgR2VuZXJhdGVD
b25zdHJ1Y3RvckhlbHBlck1ldGhvZHMKICAgICBpZiAoSXNKU0J1aWx0aW5Db25zdHJ1Y3Rvcigk
aW50ZXJmYWNlKSkgewogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ0ZW1wbGF0ZTw+IEZ1
bmN0aW9uRXhlY3V0YWJsZSogJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OmluaXRpYWxpemVFeGVj
dXRhYmxlKFZNJiB2bSlcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsK
LSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiAiIC4gR2V0SlNCdWlsdGlu
RnVuY3Rpb25OYW1lRnJvbVN0cmluZygkaW50ZXJmYWNlTmFtZSwgImluaXRpYWxpemUiIC4gJGlu
dGVyZmFjZU5hbWUpIC4gIih2bSk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgIHJldHVybiAiIC4gR2V0SlNCdWlsdGluRnVuY3Rpb25OYW1lRnJvbVN0cmluZygkaW50ZXJm
YWNlLT5uYW1lLCAiaW5pdGlhbGl6ZSIgLiAkaW50ZXJmYWNlLT5uYW1lKSAuICIodm0pO1xuIik7
CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn1cbiIpOwogICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICJcbiIpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggY2NkMTNiYTZiODVmOGZhZmE0
YTM0YzUzYjgyYTk5NTFjZjhlNjQ2Zi4uYjhlMTM1MGJjMTY2MzAyYjhjZDcxNWMwNWFlMDllN2Vh
YjAyMjEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTg3LDExICs4NywxMSBAQCB1c2luZyBuYW1lc3BhY2Ug
SlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUpTU3RyaW5nKiBqc1N0cmluZ1dpdGhDYWNo
ZShFeGVjU3RhdGUqLCBUZXN0RW51bVR5cGUpOwotT3B0aW9uYWw8VGVzdEVudW1UeXBlPiBwYXJz
ZVRlc3RFbnVtVHlwZShFeGVjU3RhdGUmLCBKU1ZhbHVlKTsKLWV4dGVybiBjb25zdCBjaGFyIGV4
cGVjdGVkRW51bWVyYXRpb25WYWx1ZXNUZXN0RW51bVR5cGVbXTsKK0pTU3RyaW5nKiBqc1N0cmlu
Z1dpdGhDYWNoZShFeGVjU3RhdGUqLCBUZXN0T2JqOjpFbnVtVHlwZSk7CitPcHRpb25hbDxUZXN0
T2JqOjpFbnVtVHlwZT4gcGFyc2VUZXN0T2JqRW51bVR5cGUoRXhlY1N0YXRlJiwgSlNWYWx1ZSk7
CitleHRlcm4gY29uc3QgY2hhciBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzVGVzdE9iakVudW1U
eXBlW107CiAKLUpTU3RyaW5nKiBqc1N0cmluZ1dpdGhDYWNoZShFeGVjU3RhdGUqIHN0YXRlLCBU
ZXN0RW51bVR5cGUgZW51bWVyYXRpb25WYWx1ZSkKK0pTU3RyaW5nKiBqc1N0cmluZ1dpdGhDYWNo
ZShFeGVjU3RhdGUqIHN0YXRlLCBUZXN0T2JqOjpFbnVtVHlwZSBlbnVtZXJhdGlvblZhbHVlKQog
ewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IHZhbHVlc1tdID0gewog
ICAgICAgICBlbXB0eVN0cmluZygpLApAQCAtOTksMzkgKzk5LDM5IEBAIEpTU3RyaW5nKiBqc1N0
cmluZ1dpdGhDYWNoZShFeGVjU3RhdGUqIHN0YXRlLCBUZXN0RW51bVR5cGUgZW51bWVyYXRpb25W
YWx1ZSkKICAgICAgICAgQVNDSUlMaXRlcmFsKCJFbnVtVmFsdWUyIiksCiAgICAgICAgIEFTQ0lJ
TGl0ZXJhbCgiRW51bVZhbHVlMyIpLAogICAgIH07Ci0gICAgc3RhdGljX2Fzc2VydChzdGF0aWNf
Y2FzdDxzaXplX3Q+KFRlc3RFbnVtVHlwZTo6RW1wdHlTdHJpbmcpID09IDAsICJUZXN0RW51bVR5
cGU6OkVtcHR5U3RyaW5nIGlzIG5vdCAwIGFzIGV4cGVjdGVkIik7Ci0gICAgc3RhdGljX2Fzc2Vy
dChzdGF0aWNfY2FzdDxzaXplX3Q+KFRlc3RFbnVtVHlwZTo6RW51bVZhbHVlMSkgPT0gMSwgIlRl
c3RFbnVtVHlwZTo6RW51bVZhbHVlMSBpcyBub3QgMSBhcyBleHBlY3RlZCIpOwotICAgIHN0YXRp
Y19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihUZXN0RW51bVR5cGU6OkVudW1WYWx1ZTIpID09
IDIsICJUZXN0RW51bVR5cGU6OkVudW1WYWx1ZTIgaXMgbm90IDIgYXMgZXhwZWN0ZWQiKTsKLSAg
ICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oVGVzdEVudW1UeXBlOjpFbnVtVmFs
dWUzKSA9PSAzLCAiVGVzdEVudW1UeXBlOjpFbnVtVmFsdWUzIGlzIG5vdCAzIGFzIGV4cGVjdGVk
Iik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFRlc3RPYmo6OkVudW1U
eXBlOjpFbXB0eVN0cmluZykgPT0gMCwgIlRlc3RPYmo6OkVudW1UeXBlOjpFbXB0eVN0cmluZyBp
cyBub3QgMCBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6
ZV90PihUZXN0T2JqOjpFbnVtVHlwZTo6RW51bVZhbHVlMSkgPT0gMSwgIlRlc3RPYmo6OkVudW1U
eXBlOjpFbnVtVmFsdWUxIGlzIG5vdCAxIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2Vy
dChzdGF0aWNfY2FzdDxzaXplX3Q+KFRlc3RPYmo6OkVudW1UeXBlOjpFbnVtVmFsdWUyKSA9PSAy
LCAiVGVzdE9iajo6RW51bVR5cGU6OkVudW1WYWx1ZTIgaXMgbm90IDIgYXMgZXhwZWN0ZWQiKTsK
KyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oVGVzdE9iajo6RW51bVR5cGU6
OkVudW1WYWx1ZTMpID09IDMsICJUZXN0T2JqOjpFbnVtVHlwZTo6RW51bVZhbHVlMyBpcyBub3Qg
MyBhcyBleHBlY3RlZCIpOwogICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0
aW9uVmFsdWUpIDwgV1RGX0FSUkFZX0xFTkdUSCh2YWx1ZXMpKTsKICAgICByZXR1cm4ganNTdHJp
bmdXaXRoQ2FjaGUoc3RhdGUsIHZhbHVlc1tzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9u
VmFsdWUpXSk7CiB9CiAKLXRlbXBsYXRlPD4gc3RydWN0IEpTVmFsdWVUcmFpdHM8VGVzdEVudW1U
eXBlPiB7Ci0gICAgc3RhdGljIEpTU3RyaW5nKiBhcnJheUpTVmFsdWUoRXhlY1N0YXRlKiBzdGF0
ZSwgSlNET01HbG9iYWxPYmplY3QqLCBUZXN0RW51bVR5cGUgdmFsdWUpIHsgcmV0dXJuIGpzU3Ry
aW5nV2l0aENhY2hlKHN0YXRlLCB2YWx1ZSk7IH0KK3RlbXBsYXRlPD4gc3RydWN0IEpTVmFsdWVU
cmFpdHM8VGVzdE9iajo6RW51bVR5cGU+IHsKKyAgICBzdGF0aWMgSlNTdHJpbmcqIGFycmF5SlNW
YWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCosIFRlc3RPYmo6OkVudW1U
eXBlIHZhbHVlKSB7IHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgdmFsdWUpOyB9CiB9
OwogCi1PcHRpb25hbDxUZXN0RW51bVR5cGU+IHBhcnNlVGVzdEVudW1UeXBlKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVmFsdWUgdmFsdWUpCitPcHRpb25hbDxUZXN0T2JqOjpFbnVtVHlwZT4gcGFyc2VU
ZXN0T2JqRW51bVR5cGUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBh
dXRvIHN0cmluZ1ZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoJnN0YXRlKTsKICAgICBpZiAoc3Ry
aW5nVmFsdWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gVGVzdEVudW1UeXBlOjpFbXB0eVN0
cmluZzsKKyAgICAgICAgcmV0dXJuIFRlc3RPYmo6OkVudW1UeXBlOjpFbXB0eVN0cmluZzsKICAg
ICBpZiAoc3RyaW5nVmFsdWUgPT0gIkVudW1WYWx1ZTEiKQotICAgICAgICByZXR1cm4gVGVzdEVu
dW1UeXBlOjpFbnVtVmFsdWUxOworICAgICAgICByZXR1cm4gVGVzdE9iajo6RW51bVR5cGU6OkVu
dW1WYWx1ZTE7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJFbnVtVmFsdWUyIikKLSAgICAgICAg
cmV0dXJuIFRlc3RFbnVtVHlwZTo6RW51bVZhbHVlMjsKKyAgICAgICAgcmV0dXJuIFRlc3RPYmo6
OkVudW1UeXBlOjpFbnVtVmFsdWUyOwogICAgIGlmIChzdHJpbmdWYWx1ZSA9PSAiRW51bVZhbHVl
MyIpCi0gICAgICAgIHJldHVybiBUZXN0RW51bVR5cGU6OkVudW1WYWx1ZTM7CisgICAgICAgIHJl
dHVybiBUZXN0T2JqOjpFbnVtVHlwZTo6RW51bVZhbHVlMzsKICAgICByZXR1cm4gTnVsbG9wdDsK
IH0KIAotY29uc3QgY2hhciBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzVGVzdEVudW1UeXBlW10g
PSAiXCJcIiwgXCJFbnVtVmFsdWUxXCIsIFwiRW51bVZhbHVlMlwiLCBcIkVudW1WYWx1ZTNcIiI7
Citjb25zdCBjaGFyIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXNUZXN0T2JqRW51bVR5cGVbXSA9
ICJcIlwiLCBcIkVudW1WYWx1ZTFcIiwgXCJFbnVtVmFsdWUyXCIsIFwiRW51bVZhbHVlM1wiIjsK
IAotSlNTdHJpbmcqIGpzU3RyaW5nV2l0aENhY2hlKEV4ZWNTdGF0ZSosIE9wdGlvbmFsKTsKLU9w
dGlvbmFsPE9wdGlvbmFsPiBwYXJzZU9wdGlvbmFsKEV4ZWNTdGF0ZSYsIEpTVmFsdWUpOwotZXh0
ZXJuIGNvbnN0IGNoYXIgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlc09wdGlvbmFsW107CitKU1N0
cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiwgVGVzdE9iajo6T3B0aW9uYWwpOwor
T3B0aW9uYWw8VGVzdE9iajo6T3B0aW9uYWw+IHBhcnNlVGVzdE9iak9wdGlvbmFsKEV4ZWNTdGF0
ZSYsIEpTVmFsdWUpOworZXh0ZXJuIGNvbnN0IGNoYXIgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVl
c1Rlc3RPYmpPcHRpb25hbFtdOwogCi1KU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0
YXRlKiBzdGF0ZSwgT3B0aW9uYWwgZW51bWVyYXRpb25WYWx1ZSkKK0pTU3RyaW5nKiBqc1N0cmlu
Z1dpdGhDYWNoZShFeGVjU3RhdGUqIHN0YXRlLCBUZXN0T2JqOjpPcHRpb25hbCBlbnVtZXJhdGlv
blZhbHVlKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IHZhbHVl
c1tdID0gewogICAgICAgICBlbXB0eVN0cmluZygpLApAQCAtMTM5LDEzMCArMTM5LDIyNiBAQCBK
U1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiBzdGF0ZSwgT3B0aW9uYWwgZW51
bWVyYXRpb25WYWx1ZSkKICAgICAgICAgQVNDSUlMaXRlcmFsKCJPcHRpb25hbFZhbHVlMiIpLAog
ICAgICAgICBBU0NJSUxpdGVyYWwoIk9wdGlvbmFsVmFsdWUzIiksCiAgICAgfTsKLSAgICBzdGF0
aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oT3B0aW9uYWw6OkVtcHR5U3RyaW5nKSA9PSAw
LCAiT3B0aW9uYWw6OkVtcHR5U3RyaW5nIGlzIG5vdCAwIGFzIGV4cGVjdGVkIik7Ci0gICAgc3Rh
dGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KE9wdGlvbmFsOjpPcHRpb25hbFZhbHVlMSkg
PT0gMSwgIk9wdGlvbmFsOjpPcHRpb25hbFZhbHVlMSBpcyBub3QgMSBhcyBleHBlY3RlZCIpOwot
ICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihPcHRpb25hbDo6T3B0aW9uYWxW
YWx1ZTIpID09IDIsICJPcHRpb25hbDo6T3B0aW9uYWxWYWx1ZTIgaXMgbm90IDIgYXMgZXhwZWN0
ZWQiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oT3B0aW9uYWw6Ok9w
dGlvbmFsVmFsdWUzKSA9PSAzLCAiT3B0aW9uYWw6Ok9wdGlvbmFsVmFsdWUzIGlzIG5vdCAzIGFz
IGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFRlc3RP
Ymo6Ok9wdGlvbmFsOjpFbXB0eVN0cmluZykgPT0gMCwgIlRlc3RPYmo6Ok9wdGlvbmFsOjpFbXB0
eVN0cmluZyBpcyBub3QgMCBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGlj
X2Nhc3Q8c2l6ZV90PihUZXN0T2JqOjpPcHRpb25hbDo6T3B0aW9uYWxWYWx1ZTEpID09IDEsICJU
ZXN0T2JqOjpPcHRpb25hbDo6T3B0aW9uYWxWYWx1ZTEgaXMgbm90IDEgYXMgZXhwZWN0ZWQiKTsK
KyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oVGVzdE9iajo6T3B0aW9uYWw6
Ok9wdGlvbmFsVmFsdWUyKSA9PSAyLCAiVGVzdE9iajo6T3B0aW9uYWw6Ok9wdGlvbmFsVmFsdWUy
IGlzIG5vdCAyIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxz
aXplX3Q+KFRlc3RPYmo6Ok9wdGlvbmFsOjpPcHRpb25hbFZhbHVlMykgPT0gMywgIlRlc3RPYmo6
Ok9wdGlvbmFsOjpPcHRpb25hbFZhbHVlMyBpcyBub3QgMyBhcyBleHBlY3RlZCIpOwogICAgIEFT
U0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpIDwgV1RGX0FSUkFZX0xF
TkdUSCh2YWx1ZXMpKTsKICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIHZhbHVl
c1tzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpXSk7CiB9CiAKLXRlbXBsYXRl
PD4gc3RydWN0IEpTVmFsdWVUcmFpdHM8T3B0aW9uYWw+IHsKLSAgICBzdGF0aWMgSlNTdHJpbmcq
IGFycmF5SlNWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCosIE9wdGlv
bmFsIHZhbHVlKSB7IHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgdmFsdWUpOyB9Cit0
ZW1wbGF0ZTw+IHN0cnVjdCBKU1ZhbHVlVHJhaXRzPFRlc3RPYmo6Ok9wdGlvbmFsPiB7CisgICAg
c3RhdGljIEpTU3RyaW5nKiBhcnJheUpTVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9i
YWxPYmplY3QqLCBUZXN0T2JqOjpPcHRpb25hbCB2YWx1ZSkgeyByZXR1cm4ganNTdHJpbmdXaXRo
Q2FjaGUoc3RhdGUsIHZhbHVlKTsgfQogfTsKIAotT3B0aW9uYWw8T3B0aW9uYWw+IHBhcnNlT3B0
aW9uYWwoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKK09wdGlvbmFsPFRlc3RPYmo6
Ok9wdGlvbmFsPiBwYXJzZVRlc3RPYmpPcHRpb25hbChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVl
IHZhbHVlKQogewogICAgIGF1dG8gc3RyaW5nVmFsdWUgPSB2YWx1ZS50b1dURlN0cmluZygmc3Rh
dGUpOwogICAgIGlmIChzdHJpbmdWYWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBPcHRp
b25hbDo6RW1wdHlTdHJpbmc7CisgICAgICAgIHJldHVybiBUZXN0T2JqOjpPcHRpb25hbDo6RW1w
dHlTdHJpbmc7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJPcHRpb25hbFZhbHVlMSIpCi0gICAg
ICAgIHJldHVybiBPcHRpb25hbDo6T3B0aW9uYWxWYWx1ZTE7CisgICAgICAgIHJldHVybiBUZXN0
T2JqOjpPcHRpb25hbDo6T3B0aW9uYWxWYWx1ZTE7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJP
cHRpb25hbFZhbHVlMiIpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDo6T3B0aW9uYWxWYWx1ZTI7
CisgICAgICAgIHJldHVybiBUZXN0T2JqOjpPcHRpb25hbDo6T3B0aW9uYWxWYWx1ZTI7CiAgICAg
aWYgKHN0cmluZ1ZhbHVlID09ICJPcHRpb25hbFZhbHVlMyIpCi0gICAgICAgIHJldHVybiBPcHRp
b25hbDo6T3B0aW9uYWxWYWx1ZTM7CisgICAgICAgIHJldHVybiBUZXN0T2JqOjpPcHRpb25hbDo6
T3B0aW9uYWxWYWx1ZTM7CiAgICAgcmV0dXJuIE51bGxvcHQ7CiB9CiAKLWNvbnN0IGNoYXIgZXhw
ZWN0ZWRFbnVtZXJhdGlvblZhbHVlc09wdGlvbmFsW10gPSAiXCJcIiwgXCJPcHRpb25hbFZhbHVl
MVwiLCBcIk9wdGlvbmFsVmFsdWUyXCIsIFwiT3B0aW9uYWxWYWx1ZTNcIiI7Citjb25zdCBjaGFy
IGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXNUZXN0T2JqT3B0aW9uYWxbXSA9ICJcIlwiLCBcIk9w
dGlvbmFsVmFsdWUxXCIsIFwiT3B0aW9uYWxWYWx1ZTJcIiwgXCJPcHRpb25hbFZhbHVlM1wiIjsK
IAogI2lmIEVOQUJMRShDb25kaXRpb24xKQogCi1KU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUo
RXhlY1N0YXRlKiwgVGVzdEVudW1BKTsKLU9wdGlvbmFsPFRlc3RFbnVtQT4gcGFyc2VUZXN0RW51
bUEoRXhlY1N0YXRlJiwgSlNWYWx1ZSk7Ci1leHRlcm4gY29uc3QgY2hhciBleHBlY3RlZEVudW1l
cmF0aW9uVmFsdWVzVGVzdEVudW1BW107CitKU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhl
Y1N0YXRlKiwgVGVzdE9iajo6RW51bUEpOworT3B0aW9uYWw8VGVzdE9iajo6RW51bUE+IHBhcnNl
VGVzdE9iakVudW1BKEV4ZWNTdGF0ZSYsIEpTVmFsdWUpOworZXh0ZXJuIGNvbnN0IGNoYXIgZXhw
ZWN0ZWRFbnVtZXJhdGlvblZhbHVlc1Rlc3RPYmpFbnVtQVtdOwogCi1KU1N0cmluZyoganNTdHJp
bmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiBzdGF0ZSwgVGVzdEVudW1BIGVudW1lcmF0aW9uVmFsdWUp
CitKU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiBzdGF0ZSwgVGVzdE9iajo6
RW51bUEgZW51bWVyYXRpb25WYWx1ZSkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgU3RyaW5nPiB2YWx1ZXNbXSA9IHsKICAgICAgICAgQVNDSUlMaXRlcmFsKCJBIiksCiAgICAg
fTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oVGVzdEVudW1BOjpBKSA9
PSAwLCAiVGVzdEVudW1BOjpBIGlzIG5vdCAwIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fz
c2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFRlc3RPYmo6OkVudW1BOjpBKSA9PSAwLCAiVGVzdE9i
ajo6RW51bUE6OkEgaXMgbm90IDAgYXMgZXhwZWN0ZWQiKTsKICAgICBBU1NFUlQoc3RhdGljX2Nh
c3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKSA8IFdURl9BUlJBWV9MRU5HVEgodmFsdWVzKSk7
CiAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCB2YWx1ZXNbc3RhdGljX2Nhc3Q8
c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKV0pOwogfQogCi10ZW1wbGF0ZTw+IHN0cnVjdCBKU1Zh
bHVlVHJhaXRzPFRlc3RFbnVtQT4gewotICAgIHN0YXRpYyBKU1N0cmluZyogYXJyYXlKU1ZhbHVl
KEV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdEVudW1BIHZhbHVlKSB7
IHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgdmFsdWUpOyB9Cit0ZW1wbGF0ZTw+IHN0
cnVjdCBKU1ZhbHVlVHJhaXRzPFRlc3RPYmo6OkVudW1BPiB7CisgICAgc3RhdGljIEpTU3RyaW5n
KiBhcnJheUpTVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqLCBUZXN0
T2JqOjpFbnVtQSB2YWx1ZSkgeyByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIHZhbHVl
KTsgfQogfTsKIAotT3B0aW9uYWw8VGVzdEVudW1BPiBwYXJzZVRlc3RFbnVtQShFeGVjU3RhdGUm
IHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQorT3B0aW9uYWw8VGVzdE9iajo6RW51bUE+IHBhcnNlVGVz
dE9iakVudW1BKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0byBz
dHJpbmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAgaWYgKHN0cmluZ1Zh
bHVlID09ICJBIikKLSAgICAgICAgcmV0dXJuIFRlc3RFbnVtQTo6QTsKKyAgICAgICAgcmV0dXJu
IFRlc3RPYmo6OkVudW1BOjpBOwogICAgIHJldHVybiBOdWxsb3B0OwogfQogCi1jb25zdCBjaGFy
IGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXNUZXN0RW51bUFbXSA9ICJcIkFcIiI7Citjb25zdCBj
aGFyIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXNUZXN0T2JqRW51bUFbXSA9ICJcIkFcIiI7CiAK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpICYmIEVOQUJMRShDb25kaXRpb24yKQog
Ci1KU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiwgVGVzdEVudW1CKTsKLU9w
dGlvbmFsPFRlc3RFbnVtQj4gcGFyc2VUZXN0RW51bUIoRXhlY1N0YXRlJiwgSlNWYWx1ZSk7Ci1l
eHRlcm4gY29uc3QgY2hhciBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzVGVzdEVudW1CW107CitK
U1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiwgVGVzdE9iajo6RW51bUIpOwor
T3B0aW9uYWw8VGVzdE9iajo6RW51bUI+IHBhcnNlVGVzdE9iakVudW1CKEV4ZWNTdGF0ZSYsIEpT
VmFsdWUpOworZXh0ZXJuIGNvbnN0IGNoYXIgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlc1Rlc3RP
YmpFbnVtQltdOwogCi1KU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiBzdGF0
ZSwgVGVzdEVudW1CIGVudW1lcmF0aW9uVmFsdWUpCitKU1N0cmluZyoganNTdHJpbmdXaXRoQ2Fj
aGUoRXhlY1N0YXRlKiBzdGF0ZSwgVGVzdE9iajo6RW51bUIgZW51bWVyYXRpb25WYWx1ZSkKIHsK
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiB2YWx1ZXNbXSA9IHsKICAg
ICAgICAgQVNDSUlMaXRlcmFsKCJCIiksCiAgICAgfTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0YXRp
Y19jYXN0PHNpemVfdD4oVGVzdEVudW1COjpCKSA9PSAwLCAiVGVzdEVudW1COjpCIGlzIG5vdCAw
IGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFRl
c3RPYmo6OkVudW1COjpCKSA9PSAwLCAiVGVzdE9iajo6RW51bUI6OkIgaXMgbm90IDAgYXMgZXhw
ZWN0ZWQiKTsKICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVl
KSA8IFdURl9BUlJBWV9MRU5HVEgodmFsdWVzKSk7CiAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENh
Y2hlKHN0YXRlLCB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKV0p
OwogfQogCi10ZW1wbGF0ZTw+IHN0cnVjdCBKU1ZhbHVlVHJhaXRzPFRlc3RFbnVtQj4gewotICAg
IHN0YXRpYyBKU1N0cmluZyogYXJyYXlKU1ZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xv
YmFsT2JqZWN0KiwgVGVzdEVudW1CIHZhbHVlKSB7IHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShz
dGF0ZSwgdmFsdWUpOyB9Cit0ZW1wbGF0ZTw+IHN0cnVjdCBKU1ZhbHVlVHJhaXRzPFRlc3RPYmo6
OkVudW1CPiB7CisgICAgc3RhdGljIEpTU3RyaW5nKiBhcnJheUpTVmFsdWUoRXhlY1N0YXRlKiBz
dGF0ZSwgSlNET01HbG9iYWxPYmplY3QqLCBUZXN0T2JqOjpFbnVtQiB2YWx1ZSkgeyByZXR1cm4g
anNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIHZhbHVlKTsgfQogfTsKIAotT3B0aW9uYWw8VGVzdEVu
dW1CPiBwYXJzZVRlc3RFbnVtQihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQorT3B0
aW9uYWw8VGVzdE9iajo6RW51bUI+IHBhcnNlVGVzdE9iakVudW1CKEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0byBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3Ry
aW5nKCZzdGF0ZSk7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJCIikKLSAgICAgICAgcmV0dXJu
IFRlc3RFbnVtQjo6QjsKKyAgICAgICAgcmV0dXJuIFRlc3RPYmo6OkVudW1COjpCOwogICAgIHJl
dHVybiBOdWxsb3B0OwogfQogCi1jb25zdCBjaGFyIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXNU
ZXN0RW51bUJbXSA9ICJcIkJcIiI7Citjb25zdCBjaGFyIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1
ZXNUZXN0T2JqRW51bUJbXSA9ICJcIkJcIiI7CiAKICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRp
dGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQogCi1KU1N0cmluZyoganNTdHJpbmdXaXRoQ2Fj
aGUoRXhlY1N0YXRlKiwgVGVzdEVudW1DKTsKLU9wdGlvbmFsPFRlc3RFbnVtQz4gcGFyc2VUZXN0
RW51bUMoRXhlY1N0YXRlJiwgSlNWYWx1ZSk7Ci1leHRlcm4gY29uc3QgY2hhciBleHBlY3RlZEVu
dW1lcmF0aW9uVmFsdWVzVGVzdEVudW1DW107CitKU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUo
RXhlY1N0YXRlKiwgVGVzdE9iajo6RW51bUMpOworT3B0aW9uYWw8VGVzdE9iajo6RW51bUM+IHBh
cnNlVGVzdE9iakVudW1DKEV4ZWNTdGF0ZSYsIEpTVmFsdWUpOworZXh0ZXJuIGNvbnN0IGNoYXIg
ZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlc1Rlc3RPYmpFbnVtQ1tdOwogCi1KU1N0cmluZyoganNT
dHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiBzdGF0ZSwgVGVzdEVudW1DIGVudW1lcmF0aW9uVmFs
dWUpCitKU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiBzdGF0ZSwgVGVzdE9i
ajo6RW51bUMgZW51bWVyYXRpb25WYWx1ZSkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgU3RyaW5nPiB2YWx1ZXNbXSA9IHsKICAgICAgICAgQVNDSUlMaXRlcmFsKCJDIiksCiAg
ICAgfTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oVGVzdEVudW1DOjpD
KSA9PSAwLCAiVGVzdEVudW1DOjpDIGlzIG5vdCAwIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGlj
X2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFRlc3RPYmo6OkVudW1DOjpDKSA9PSAwLCAiVGVz
dE9iajo6RW51bUM6OkMgaXMgbm90IDAgYXMgZXhwZWN0ZWQiKTsKICAgICBBU1NFUlQoc3RhdGlj
X2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKSA8IFdURl9BUlJBWV9MRU5HVEgodmFsdWVz
KSk7CiAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCB2YWx1ZXNbc3RhdGljX2Nh
c3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKV0pOwogfQogCi10ZW1wbGF0ZTw+IHN0cnVjdCBK
U1ZhbHVlVHJhaXRzPFRlc3RFbnVtQz4gewotICAgIHN0YXRpYyBKU1N0cmluZyogYXJyYXlKU1Zh
bHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdEVudW1DIHZhbHVl
KSB7IHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgdmFsdWUpOyB9Cit0ZW1wbGF0ZTw+
IHN0cnVjdCBKU1ZhbHVlVHJhaXRzPFRlc3RPYmo6OkVudW1DPiB7CisgICAgc3RhdGljIEpTU3Ry
aW5nKiBhcnJheUpTVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqLCBU
ZXN0T2JqOjpFbnVtQyB2YWx1ZSkgeyByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIHZh
bHVlKTsgfQogfTsKIAotT3B0aW9uYWw8VGVzdEVudW1DPiBwYXJzZVRlc3RFbnVtQyhFeGVjU3Rh
dGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQorT3B0aW9uYWw8VGVzdE9iajo6RW51bUM+IHBhcnNl
VGVzdE9iakVudW1DKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0
byBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAgaWYgKHN0cmlu
Z1ZhbHVlID09ICJDIikKLSAgICAgICAgcmV0dXJuIFRlc3RFbnVtQzo6QzsKKyAgICAgICAgcmV0
dXJuIFRlc3RPYmo6OkVudW1DOjpDOwogICAgIHJldHVybiBOdWxsb3B0OwogfQogCi1jb25zdCBj
aGFyIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXNUZXN0RW51bUNbXSA9ICJcIkNcIiI7Citjb25z
dCBjaGFyIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXNUZXN0T2JqRW51bUNbXSA9ICJcIkNcIiI7
CiAKICNlbmRpZgogCitKU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiwgVGVz
dE9iajo6S2luZCk7CitPcHRpb25hbDxUZXN0T2JqOjpLaW5kPiBwYXJzZVRlc3RPYmpLaW5kKEV4
ZWNTdGF0ZSYsIEpTVmFsdWUpOworZXh0ZXJuIGNvbnN0IGNoYXIgZXhwZWN0ZWRFbnVtZXJhdGlv
blZhbHVlc1Rlc3RPYmpLaW5kW107CisKK0pTU3RyaW5nKiBqc1N0cmluZ1dpdGhDYWNoZShFeGVj
U3RhdGUqIHN0YXRlLCBUZXN0T2JqOjpLaW5kIGVudW1lcmF0aW9uVmFsdWUpCit7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gdmFsdWVzW10gPSB7CisgICAgICAgIEFT
Q0lJTGl0ZXJhbCgicXVpY2siKSwKKyAgICAgICAgQVNDSUlMaXRlcmFsKCJkZWFkIiksCisgICAg
fTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oVGVzdE9iajo6S2luZDo6
UXVpY2spID09IDAsICJUZXN0T2JqOjpLaW5kOjpRdWljayBpcyBub3QgMCBhcyBleHBlY3RlZCIp
OworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihUZXN0T2JqOjpLaW5kOjpE
ZWFkKSA9PSAxLCAiVGVzdE9iajo6S2luZDo6RGVhZCBpcyBub3QgMSBhcyBleHBlY3RlZCIpOwor
ICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpIDwgV1RGX0FS
UkFZX0xFTkdUSCh2YWx1ZXMpKTsKKyAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUs
IHZhbHVlc1tzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpXSk7Cit9CisKK3Rl
bXBsYXRlPD4gc3RydWN0IEpTVmFsdWVUcmFpdHM8VGVzdE9iajo6S2luZD4geworICAgIHN0YXRp
YyBKU1N0cmluZyogYXJyYXlKU1ZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiwgVGVzdE9iajo6S2luZCB2YWx1ZSkgeyByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoc3Rh
dGUsIHZhbHVlKTsgfQorfTsKKworT3B0aW9uYWw8VGVzdE9iajo6S2luZD4gcGFyc2VUZXN0T2Jq
S2luZChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGF1dG8gc3RyaW5n
VmFsdWUgPSB2YWx1ZS50b1dURlN0cmluZygmc3RhdGUpOworICAgIGlmIChzdHJpbmdWYWx1ZSA9
PSAicXVpY2siKQorICAgICAgICByZXR1cm4gVGVzdE9iajo6S2luZDo6UXVpY2s7CisgICAgaWYg
KHN0cmluZ1ZhbHVlID09ICJkZWFkIikKKyAgICAgICAgcmV0dXJuIFRlc3RPYmo6OktpbmQ6OkRl
YWQ7CisgICAgcmV0dXJuIE51bGxvcHQ7Cit9CisKK2NvbnN0IGNoYXIgZXhwZWN0ZWRFbnVtZXJh
dGlvblZhbHVlc1Rlc3RPYmpLaW5kW10gPSAiXCJxdWlja1wiLCBcImRlYWRcIiI7CisKK0pTU3Ry
aW5nKiBqc1N0cmluZ1dpdGhDYWNoZShFeGVjU3RhdGUqLCBUZXN0T2JqOjpTaXplKTsKK09wdGlv
bmFsPFRlc3RPYmo6OlNpemU+IHBhcnNlVGVzdE9ialNpemUoRXhlY1N0YXRlJiwgSlNWYWx1ZSk7
CitleHRlcm4gY29uc3QgY2hhciBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzVGVzdE9ialNpemVb
XTsKKworSlNTdHJpbmcqIGpzU3RyaW5nV2l0aENhY2hlKEV4ZWNTdGF0ZSogc3RhdGUsIFRlc3RP
Ymo6OlNpemUgZW51bWVyYXRpb25WYWx1ZSkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgU3RyaW5nPiB2YWx1ZXNbXSA9IHsKKyAgICAgICAgQVNDSUlMaXRlcmFsKCJzbWFsbCIp
LAorICAgICAgICBBU0NJSUxpdGVyYWwoIm11Y2gtbXVjaC1sYXJnZXIiKSwKKyAgICB9OworICAg
IHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihUZXN0T2JqOjpTaXplOjpTbWFsbCkg
PT0gMCwgIlRlc3RPYmo6OlNpemU6OlNtYWxsIGlzIG5vdCAwIGFzIGV4cGVjdGVkIik7CisgICAg
c3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFRlc3RPYmo6OlNpemU6Ok11Y2hNdWNo
TGFyZ2VyKSA9PSAxLCAiVGVzdE9iajo6U2l6ZTo6TXVjaE11Y2hMYXJnZXIgaXMgbm90IDEgYXMg
ZXhwZWN0ZWQiKTsKKyAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZh
bHVlKSA8IFdURl9BUlJBWV9MRU5HVEgodmFsdWVzKSk7CisgICAgcmV0dXJuIGpzU3RyaW5nV2l0
aENhY2hlKHN0YXRlLCB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVl
KV0pOworfQorCit0ZW1wbGF0ZTw+IHN0cnVjdCBKU1ZhbHVlVHJhaXRzPFRlc3RPYmo6OlNpemU+
IHsKKyAgICBzdGF0aWMgSlNTdHJpbmcqIGFycmF5SlNWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBK
U0RPTUdsb2JhbE9iamVjdCosIFRlc3RPYmo6OlNpemUgdmFsdWUpIHsgcmV0dXJuIGpzU3RyaW5n
V2l0aENhY2hlKHN0YXRlLCB2YWx1ZSk7IH0KK307CisKK09wdGlvbmFsPFRlc3RPYmo6OlNpemU+
IHBhcnNlVGVzdE9ialNpemUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAg
ICBhdXRvIHN0cmluZ1ZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoJnN0YXRlKTsKKyAgICBpZiAo
c3RyaW5nVmFsdWUgPT0gInNtYWxsIikKKyAgICAgICAgcmV0dXJuIFRlc3RPYmo6OlNpemU6OlNt
YWxsOworICAgIGlmIChzdHJpbmdWYWx1ZSA9PSAibXVjaC1tdWNoLWxhcmdlciIpCisgICAgICAg
IHJldHVybiBUZXN0T2JqOjpTaXplOjpNdWNoTXVjaExhcmdlcjsKKyAgICByZXR1cm4gTnVsbG9w
dDsKK30KKworY29uc3QgY2hhciBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzVGVzdE9ialNpemVb
XSA9ICJcInNtYWxsXCIsIFwibXVjaC1tdWNoLWxhcmdlclwiIjsKKworSlNTdHJpbmcqIGpzU3Ry
aW5nV2l0aENhY2hlKEV4ZWNTdGF0ZSosIFRlc3RPYmo6OkNvbmZpZGVuY2UpOworT3B0aW9uYWw8
VGVzdE9iajo6Q29uZmlkZW5jZT4gcGFyc2VUZXN0T2JqQ29uZmlkZW5jZShFeGVjU3RhdGUmLCBK
U1ZhbHVlKTsKK2V4dGVybiBjb25zdCBjaGFyIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXNUZXN0
T2JqQ29uZmlkZW5jZVtdOworCitKU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRl
KiBzdGF0ZSwgVGVzdE9iajo6Q29uZmlkZW5jZSBlbnVtZXJhdGlvblZhbHVlKQoreworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IHZhbHVlc1tdID0geworICAgICAgICBB
U0NJSUxpdGVyYWwoImhpZ2giKSwKKyAgICAgICAgQVNDSUlMaXRlcmFsKCJraW5kYS1sb3ciKSwK
KyAgICB9OworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihUZXN0T2JqOjpD
b25maWRlbmNlOjpIaWdoKSA9PSAwLCAiVGVzdE9iajo6Q29uZmlkZW5jZTo6SGlnaCBpcyBub3Qg
MCBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihU
ZXN0T2JqOjpDb25maWRlbmNlOjpLaW5kYUxvdykgPT0gMSwgIlRlc3RPYmo6OkNvbmZpZGVuY2U6
OktpbmRhTG93IGlzIG5vdCAxIGFzIGV4cGVjdGVkIik7CisgICAgQVNTRVJUKHN0YXRpY19jYXN0
PHNpemVfdD4oZW51bWVyYXRpb25WYWx1ZSkgPCBXVEZfQVJSQVlfTEVOR1RIKHZhbHVlcykpOwor
ICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgdmFsdWVzW3N0YXRpY19jYXN0PHNp
emVfdD4oZW51bWVyYXRpb25WYWx1ZSldKTsKK30KKwordGVtcGxhdGU8PiBzdHJ1Y3QgSlNWYWx1
ZVRyYWl0czxUZXN0T2JqOjpDb25maWRlbmNlPiB7CisgICAgc3RhdGljIEpTU3RyaW5nKiBhcnJh
eUpTVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqLCBUZXN0T2JqOjpD
b25maWRlbmNlIHZhbHVlKSB7IHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgdmFsdWUp
OyB9Cit9OworCitPcHRpb25hbDxUZXN0T2JqOjpDb25maWRlbmNlPiBwYXJzZVRlc3RPYmpDb25m
aWRlbmNlKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgYXV0byBzdHJp
bmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CisgICAgaWYgKHN0cmluZ1ZhbHVl
ID09ICJoaWdoIikKKyAgICAgICAgcmV0dXJuIFRlc3RPYmo6OkNvbmZpZGVuY2U6OkhpZ2g7Cisg
ICAgaWYgKHN0cmluZ1ZhbHVlID09ICJraW5kYS1sb3ciKQorICAgICAgICByZXR1cm4gVGVzdE9i
ajo6Q29uZmlkZW5jZTo6S2luZGFMb3c7CisgICAgcmV0dXJuIE51bGxvcHQ7Cit9CisKK2NvbnN0
IGNoYXIgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlc1Rlc3RPYmpDb25maWRlbmNlW10gPSAiXCJo
aWdoXCIsIFwia2luZGEtbG93XCIiOworCiAvLyBGdW5jdGlvbnMKIAogI2lmIEVOQUJMRShURVNU
X0ZFQVRVUkUpCkBAIC0yMzk4LDcgKzI0OTQsNyBAQCBib29sIHNldEpTVGVzdE9iakVudW1BdHRy
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVgog
ICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJl
bnVtQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwotICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBwYXJzZVRlc3RFbnVtVHlwZSgqc3RhdGUsIHZhbHVl
KTsKKyAgICBhdXRvIG5hdGl2ZVZhbHVlID0gcGFyc2VUZXN0T2JqRW51bVR5cGUoKnN0YXRlLCB2
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkKQEAgLTM1MzAs
NyArMzYyNiw3IEBAIGJvb2wgc2V0SlNUZXN0T2JqQXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5
cGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUKICAgICAgICAgcmV0dXJuIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYXR0cmlidXRlV2l0aFJlc2VydmVk
RW51bVR5cGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKLSAgICBhdXRvIG5hdGl2ZVZhbHVlID0gcGFyc2VPcHRpb25hbCgqc3RhdGUsIHZhbHVlKTsK
KyAgICBhdXRvIG5hdGl2ZVZhbHVlID0gcGFyc2VUZXN0T2JqT3B0aW9uYWwoKnN0YXRlLCB2YWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkKQEAgLTM5NDQsMTIg
KzQwNDAsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhFbnVtQXJnKEV4ZWNTdGEKICAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0
YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gZW51
bUFyZ1ZhbHVlID0gc3RhdGUtPmFyZ3VtZW50KDApOwotICAgIFRlc3RFbnVtVHlwZSBlbnVtQXJn
OwotICAgIGF1dG8gb3B0aW9uYWxWYWx1ZSA9IHBhcnNlVGVzdEVudW1UeXBlKCpzdGF0ZSwgZW51
bUFyZ1ZhbHVlKTsKKyAgICBUZXN0T2JqOjpFbnVtVHlwZSBlbnVtQXJnOworICAgIGF1dG8gb3B0
aW9uYWxWYWx1ZSA9IHBhcnNlVGVzdE9iakVudW1UeXBlKCpzdGF0ZSwgZW51bUFyZ1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpZiAoVU5MSUtFTFkoIW9wdGlv
bmFsVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJvcigq
c3RhdGUsIDAsICJlbnVtQXJnIiwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aEVudW1BcmciLCBleHBl
Y3RlZEVudW1lcmF0aW9uVmFsdWVzVGVzdEVudW1UeXBlKTsKKyAgICAgICAgcmV0dXJuIHRocm93
QXJndW1lbnRNdXN0QmVFbnVtRXJyb3IoKnN0YXRlLCAwLCAiZW51bUFyZyIsICJUZXN0T2JqIiwg
Im1ldGhvZFdpdGhFbnVtQXJnIiwgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlc1Rlc3RPYmpFbnVt
VHlwZSk7CiAgICAgZW51bUFyZyA9IG9wdGlvbmFsVmFsdWUudmFsdWUoKTsKICAgICBpbXBsLm1l
dGhvZFdpdGhFbnVtQXJnKGVudW1BcmcpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CkBAIC0zOTY0LDE1ICs0MDYwLDE1IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxFbnVt
QXJnCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6
OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBh
dXRvIGVudW1BcmdWYWx1ZSA9IHN0YXRlLT5hcmd1bWVudCgwKTsKLSAgICBUZXN0RW51bVR5cGUg
ZW51bUFyZzsKKyAgICBUZXN0T2JqOjpFbnVtVHlwZSBlbnVtQXJnOwogICAgIGlmIChlbnVtQXJn
VmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICBlbnVtQXJnID0gVGVzdEVudW1UeXBlOjpF
bnVtVmFsdWUxOworICAgICAgICBlbnVtQXJnID0gVGVzdE9iajo6RW51bVR5cGU6OkVudW1WYWx1
ZTE7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgYXV0byBvcHRpb25hbFZhbHVlID0gcGFyc2VUZXN0
RW51bVR5cGUoKnN0YXRlLCBlbnVtQXJnVmFsdWUpOworICAgICAgICBhdXRvIG9wdGlvbmFsVmFs
dWUgPSBwYXJzZVRlc3RPYmpFbnVtVHlwZSgqc3RhdGUsIGVudW1BcmdWYWx1ZSk7CiAgICAgICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCFv
cHRpb25hbFZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRW51
bUVycm9yKCpzdGF0ZSwgMCwgImVudW1BcmciLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoT3B0aW9u
YWxFbnVtQXJnQW5kRGVmYXVsdFZhbHVlIiwgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlc1Rlc3RF
bnVtVHlwZSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJv
cigqc3RhdGUsIDAsICJlbnVtQXJnIiwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE9wdGlvbmFsRW51
bUFyZ0FuZERlZmF1bHRWYWx1ZSIsIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXNUZXN0T2JqRW51
bVR5cGUpOwogICAgICAgICBlbnVtQXJnID0gb3B0aW9uYWxWYWx1ZS52YWx1ZSgpOwogICAgIH0K
ICAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdBbmREZWZhdWx0VmFsdWUoZW51bUFy
Zyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dE9iai5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5p
ZGwKaW5kZXggZmUxM2NlNzllN2QwZjUzZGMyOWQ0NDcwZmUzNTU2ZjU3MDU2YTNhMC4uNzc0M2Vl
ZDM1ZjQ1ZTE3YTcwYjBhOTAwNDRiYWQ1YmExMjc2OTA4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbApAQCAtMzksNiArMzksMTAgQEAg
ZW51bSBfb3B0aW9uYWwgeyAiIiwgIk9wdGlvbmFsVmFsdWUxIiwgIk9wdGlvbmFsVmFsdWUyIiwg
Ik9wdGlvbmFsVmFsdWUzIiB9OwogW0NvbmRpdGlvbmFsPUNvbmRpdGlvbjEmQ29uZGl0aW9uMl0g
ZW51bSBUZXN0RW51bUIgeyAiQiIgfTsKIFtDb25kaXRpb25hbD1Db25kaXRpb24xfENvbmRpdGlv
bjJdIGVudW0gVGVzdEVudW1DIHsgIkMiIH07CiAKK2VudW0gVGVzdE9iaktpbmQgeyAicXVpY2si
LCAiZGVhZCIgfTsKK2VudW0gT2JqU2l6ZSB7ICJzbWFsbCIsICJtdWNoLW11Y2gtbGFyZ2VyIiB9
OworZW51bSBUZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwgImtpbmRhLWxvdyIgfTsKKwogWwogICAg
IENvbnN0cnVjdG9yKFRlc3RDYWxsYmFjayB0ZXN0Q2FsbGJhY2ssIFRlc3RDYWxsYmFja0Z1bmN0
aW9uIHRlc3RDYWxsYmFja0Z1bmN0aW9uKSwKICAgICBJbnRlcmZhY2VOYW1lPVRlc3RPYmplY3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXkuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleS5jcHAKaW5kZXggZGY2N2MyOTJmNDU2MTQxYmE5YzAw
MWE2YTYyZTA5M2U3ZDAwNDEyOS4uZDgyN2Y3Y2NlMjQ4MDJlYjFjNTlmYWRiZGNjZDFhYmFlOGVj
NzU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DcnlwdG9LZXk6OkNyeXB0b0tleShDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyIGFsZ29yaXRobSwgQ3J5cHRvS2V5VHlwZSB0eXBlLCBib29sIGV4dHJh
Y3RhYmxlLCBDcnlwdG9LZXlVc2FnZSB1c2FnZXMpCitDcnlwdG9LZXk6OkNyeXB0b0tleShDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobSwgVHlwZSB0eXBlLCBib29sIGV4dHJhY3Rh
YmxlLCBDcnlwdG9LZXlVc2FnZSB1c2FnZXMpCiAgICAgOiBtX2FsZ29yaXRobShhbGdvcml0aG0p
CiAgICAgLCBtX3R5cGUodHlwZSkKICAgICAsIG1fZXh0cmFjdGFibGUoZXh0cmFjdGFibGUpCkBA
IC01MywyNiArNTMsMjYgQEAgdm9pZCBDcnlwdG9LZXk6OmJ1aWxkQWxnb3JpdGhtRGVzY3JpcHRp
b24oQ3J5cHRvQWxnb3JpdGhtRGVzY3JpcHRpb25CdWlsZGVyJiBidWkKICAgICAvLyBTdWJjbGFz
c2VzIHdpbGwgYWRkIG90aGVyIGtleXMuCiB9CiAKLVZlY3RvcjxLZXlVc2FnZT4gQ3J5cHRvS2V5
Ojp1c2FnZXMoKSBjb25zdAorYXV0byBDcnlwdG9LZXk6OnVzYWdlcygpIGNvbnN0IC0+IFZlY3Rv
cjxVc2FnZT4KIHsKICAgICAvLyBUaGUgcmVzdWx0IGlzIG9yZGVyZWQgYWxwaGFiZXRpY2FsbHku
Ci0gICAgVmVjdG9yPEtleVVzYWdlPiByZXN1bHQ7CisgICAgVmVjdG9yPFVzYWdlPiByZXN1bHQ7
CiAgICAgaWYgKG1fdXNhZ2VzICYgQ3J5cHRvS2V5VXNhZ2VEZWNyeXB0KQotICAgICAgICByZXN1
bHQuYXBwZW5kKEtleVVzYWdlOjpEZWNyeXB0KTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChVc2Fn
ZTo6RGVjcnlwdCk7CiAgICAgaWYgKG1fdXNhZ2VzICYgQ3J5cHRvS2V5VXNhZ2VEZXJpdmVCaXRz
KQotICAgICAgICByZXN1bHQuYXBwZW5kKEtleVVzYWdlOjpEZXJpdmVCaXRzKTsKKyAgICAgICAg
cmVzdWx0LmFwcGVuZChVc2FnZTo6RGVyaXZlQml0cyk7CiAgICAgaWYgKG1fdXNhZ2VzICYgQ3J5
cHRvS2V5VXNhZ2VEZXJpdmVLZXkpCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoS2V5VXNhZ2U6OkRl
cml2ZUtleSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoVXNhZ2U6OkRlcml2ZUtleSk7CiAgICAg
aWYgKG1fdXNhZ2VzICYgQ3J5cHRvS2V5VXNhZ2VFbmNyeXB0KQotICAgICAgICByZXN1bHQuYXBw
ZW5kKEtleVVzYWdlOjpFbmNyeXB0KTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChVc2FnZTo6RW5j
cnlwdCk7CiAgICAgaWYgKG1fdXNhZ2VzICYgQ3J5cHRvS2V5VXNhZ2VTaWduKQotICAgICAgICBy
ZXN1bHQuYXBwZW5kKEtleVVzYWdlOjpTaWduKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChVc2Fn
ZTo6U2lnbik7CiAgICAgaWYgKG1fdXNhZ2VzICYgQ3J5cHRvS2V5VXNhZ2VVbndyYXBLZXkpCi0g
ICAgICAgIHJlc3VsdC5hcHBlbmQoS2V5VXNhZ2U6OlVud3JhcEtleSk7CisgICAgICAgIHJlc3Vs
dC5hcHBlbmQoVXNhZ2U6OlVud3JhcEtleSk7CiAgICAgaWYgKG1fdXNhZ2VzICYgQ3J5cHRvS2V5
VXNhZ2VWZXJpZnkpCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoS2V5VXNhZ2U6OlZlcmlmeSk7Cisg
ICAgICAgIHJlc3VsdC5hcHBlbmQoVXNhZ2U6OlZlcmlmeSk7CiAgICAgaWYgKG1fdXNhZ2VzICYg
Q3J5cHRvS2V5VXNhZ2VXcmFwS2V5KQotICAgICAgICByZXN1bHQuYXBwZW5kKEtleVVzYWdlOjpX
cmFwS2V5KTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChVc2FnZTo6V3JhcEtleSk7CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIApAQCAtODQsNiArODQsNyBAQCBWZWN0b3I8dWludDhfdD4gQ3J5cHRv
S2V5OjpyYW5kb21EYXRhKHNpemVfdCBzaXplKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAjZW5k
aWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNVQlRMRV9D
UllQVE8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5LmggYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5LmgKaW5kZXggMDdmYjdkOWQ0NjdmYzhjYTZk
ODg5Njk1N2VlNDRjNjQyMmNlZmNlYS4uZWI2YjcwMTZkNzUxYTk3MjFhMDlhYjVhMGQzMzMyOGIy
ZGYxZGRkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXkuaApAQCAtNDcsMjEgKzQ3LDIzIEBA
IGVudW0gY2xhc3MgQ3J5cHRvS2V5Q2xhc3MgewogICAgIFJTQQogfTsKIAotZW51bSBjbGFzcyBL
ZXlVc2FnZSB7IEVuY3J5cHQsIERlY3J5cHQsIFNpZ24sIFZlcmlmeSwgRGVyaXZlS2V5LCBEZXJp
dmVCaXRzLCBXcmFwS2V5LCBVbndyYXBLZXkgfTsKLQotdXNpbmcgS2V5VHlwZSA9IENyeXB0b0tl
eVR5cGU7Ci0KIGNsYXNzIENyeXB0b0tleSA6IHB1YmxpYyBSZWZDb3VudGVkPENyeXB0b0tleT4g
ewogcHVibGljOgotICAgIENyeXB0b0tleShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBDcnlw
dG9LZXlUeXBlLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSk7CisgICAgdXNpbmcg
VHlwZSA9IENyeXB0b0tleVR5cGU7CisgICAgQ3J5cHRvS2V5KENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXIsIFR5cGUsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlKTsKICAgICB2aXJ0
dWFsIH5DcnlwdG9LZXkoKTsKIAogICAgIHZpcnR1YWwgQ3J5cHRvS2V5Q2xhc3Mga2V5Q2xhc3Mo
KSBjb25zdCA9IDA7CiAKLSAgICBDcnlwdG9LZXlUeXBlIHR5cGUoKSBjb25zdDsKKyAgICBUeXBl
IHR5cGUoKSBjb25zdDsKICAgICBib29sIGV4dHJhY3RhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9l
eHRyYWN0YWJsZTsgfQogICAgIHZpcnR1YWwgdm9pZCBidWlsZEFsZ29yaXRobURlc2NyaXB0aW9u
KENyeXB0b0FsZ29yaXRobURlc2NyaXB0aW9uQnVpbGRlciYpIGNvbnN0OwotICAgIFZlY3RvcjxL
ZXlVc2FnZT4gdXNhZ2VzKCkgY29uc3Q7CisKKyAgICAvLyBGSVhNRTogQ29uZnVzaW5nIHRvIGhh
dmUgQ3J5cHRvS2V5VXNhZ2UgYW5kIENyeXB0b0tleTo6VXNhZ2UgbmFtZWQgYWxtb3N0IHRoZSBz
YW1lLCBidXQgYmUgc2xpZ2h0bHkgZGlmZmVyZW50LgorICAgIC8vIENyeXB0b0tleVVzYWdlIHZh
bHVlcyBhcmUgYml0IG1hc2tzIHNvIHRoZXkgY2FuIGJlIGNvbWJpbmVkIHdpdGggIm9yIiwgd2hp
bGUgdGhpcyBpcyBhIG5vcm1hbCBlbnVtIHRoYXQgbXVzdAorICAgIC8vIG1hdGNoIHdoYXQgaXMg
ZGVmaW5lZCBpbiB0aGUgSURMLiBNYXliZSB3ZSBjYW4gcmVuYW1lIENyeXB0b0tleVVzYWdlIHRv
IENyeXB0b0tleTo6VXNhZ2VzQml0bWFwPworICAgIGVudW0gY2xhc3MgVXNhZ2UgeyBFbmNyeXB0
LCBEZWNyeXB0LCBTaWduLCBWZXJpZnksIERlcml2ZUtleSwgRGVyaXZlQml0cywgV3JhcEtleSwg
VW53cmFwS2V5IH07CisgICAgVmVjdG9yPFVzYWdlPiB1c2FnZXMoKSBjb25zdDsKIAogICAgIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIgYWxnb3JpdGhtSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1fYWxnb3JpdGhtOyB9CiAgICAgQ3J5cHRvS2V5VXNhZ2UgdXNhZ2VzQml0bWFwKCkgY29u
c3QgeyByZXR1cm4gbV91c2FnZXM7IH0KQEAgLTczLDEyICs3NSwxMiBAQCBwdWJsaWM6CiAKIHBy
aXZhdGU6CiAgICAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBtX2FsZ29yaXRobTsKLSAgICBD
cnlwdG9LZXlUeXBlIG1fdHlwZTsKKyAgICBUeXBlIG1fdHlwZTsKICAgICBib29sIG1fZXh0cmFj
dGFibGU7CiAgICAgQ3J5cHRvS2V5VXNhZ2UgbV91c2FnZXM7CiB9OwogCi1pbmxpbmUgQ3J5cHRv
S2V5VHlwZSBDcnlwdG9LZXk6OnR5cGUoKSBjb25zdAoraW5saW5lIGF1dG8gQ3J5cHRvS2V5Ojp0
eXBlKCkgY29uc3QgLT4gVHlwZQogewogICAgIHJldHVybiBtX3R5cGU7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0Zv
bnRGYWNlLmNwcAppbmRleCAxNzNhNTgyYjE2OTRmM2QyYzBhYzgxMTY4OGUyNDIwOTVjYmJjYTA3
Li5jYThmOTg1NWVlMzYzOThiODk0OGI3MzgyOWM0MzBlYmQ0OWU0OTVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9G
b250RmFjZS5jcHAKQEAgLTMxNywyMiArMzE3LDIyIEBAIFN0cmluZyBGb250RmFjZTo6ZmVhdHVy
ZVNldHRpbmdzKCkgY29uc3QKICAgICByZXR1cm4gbGlzdC0+Y3NzVGV4dCgpOwogfQogCi1Gb250
RmFjZUxvYWRTdGF0dXMgRm9udEZhY2U6OnN0YXR1cygpIGNvbnN0CithdXRvIEZvbnRGYWNlOjpz
dGF0dXMoKSBjb25zdCAtPiBMb2FkU3RhdHVzCiB7CiAgICAgc3dpdGNoIChtX2JhY2tpbmctPnN0
YXR1cygpKSB7CiAgICAgY2FzZSBDU1NGb250RmFjZTo6U3RhdHVzOjpQZW5kaW5nOgotICAgICAg
ICByZXR1cm4gRm9udEZhY2VMb2FkU3RhdHVzOjpVbmxvYWRlZDsKKyAgICAgICAgcmV0dXJuIExv
YWRTdGF0dXM6OlVubG9hZGVkOwogICAgIGNhc2UgQ1NTRm9udEZhY2U6OlN0YXR1czo6TG9hZGlu
ZzoKLSAgICAgICAgcmV0dXJuIEZvbnRGYWNlTG9hZFN0YXR1czo6TG9hZGluZzsKKyAgICAgICAg
cmV0dXJuIExvYWRTdGF0dXM6OkxvYWRpbmc7CiAgICAgY2FzZSBDU1NGb250RmFjZTo6U3RhdHVz
OjpUaW1lZE91dDoKLSAgICAgICAgcmV0dXJuIEZvbnRGYWNlTG9hZFN0YXR1czo6RXJyb3I7Cisg
ICAgICAgIHJldHVybiBMb2FkU3RhdHVzOjpFcnJvcjsKICAgICBjYXNlIENTU0ZvbnRGYWNlOjpT
dGF0dXM6OlN1Y2Nlc3M6Ci0gICAgICAgIHJldHVybiBGb250RmFjZUxvYWRTdGF0dXM6OkxvYWRl
ZDsKKyAgICAgICAgcmV0dXJuIExvYWRTdGF0dXM6OkxvYWRlZDsKICAgICBjYXNlIENTU0ZvbnRG
YWNlOjpTdGF0dXM6OkZhaWx1cmU6Ci0gICAgICAgIHJldHVybiBGb250RmFjZUxvYWRTdGF0dXM6
OkVycm9yOworICAgICAgICByZXR1cm4gTG9hZFN0YXR1czo6RXJyb3I7CiAgICAgfQogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBGb250RmFjZUxvYWRTdGF0dXM6OkVycm9y
OworICAgIHJldHVybiBMb2FkU3RhdHVzOjpFcnJvcjsKIH0KIAogdm9pZCBGb250RmFjZTo6Zm9u
dFN0YXRlQ2hhbmdlZChDU1NGb250RmFjZSYgZmFjZSwgQ1NTRm9udEZhY2U6OlN0YXR1cywgQ1NT
Rm9udEZhY2U6OlN0YXR1cyBuZXdTdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9Gb250RmFjZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmgKaW5kZXggMmIyYTk0
YmJjOTljMjIwNTkwYzhlNzVmZWE2ZDA3Yjk0OGYzMDAwMC4uZjRiNDM3YTViNzRmM2ZhOGM3NmUx
MDdiMDBkYmI2NzkzZWE2ZmQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRG
YWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmgKQEAgLTQyLDggKzQyLDYg
QEAgY2xhc3MgQ1NTRm9udEZhY2U7CiBjbGFzcyBDU1NWYWx1ZTsKIGNsYXNzIERpY3Rpb25hcnk7
CiAKLWVudW0gY2xhc3MgRm9udEZhY2VMb2FkU3RhdHVzIHsgVW5sb2FkZWQsIExvYWRpbmcsIExv
YWRlZCwgRXJyb3IgfTsKLQogY2xhc3MgRm9udEZhY2UgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRl
ZDxGb250RmFjZT4sIHB1YmxpYyBDU1NGb250RmFjZTo6Q2xpZW50IHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmUHRyPEZvbnRGYWNlPiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUmLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJiBmYW1pbHksIEpTQzo6SlNWYWx1ZSBzb3VyY2Us
IGNvbnN0IERpY3Rpb25hcnkmIGRlc2NyaXB0b3JzLCBFeGNlcHRpb25Db2RlJik7CkBAIC02NSw3
ICs2Myw5IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgdW5pY29kZVJhbmdlKCkgY29uc3Q7CiAgICAg
U3RyaW5nIHZhcmlhbnQoKSBjb25zdDsKICAgICBTdHJpbmcgZmVhdHVyZVNldHRpbmdzKCkgY29u
c3Q7Ci0gICAgRm9udEZhY2VMb2FkU3RhdHVzIHN0YXR1cygpIGNvbnN0OworCisgICAgZW51bSBj
bGFzcyBMb2FkU3RhdHVzIHsgVW5sb2FkZWQsIExvYWRpbmcsIExvYWRlZCwgRXJyb3IgfTsKKyAg
ICBMb2FkU3RhdHVzIHN0YXR1cygpIGNvbnN0OwogCiAgICAgdHlwZWRlZiBET01Qcm9taXNlPEZv
bnRGYWNlJiwgRE9NQ29yZUV4Y2VwdGlvbiY+IFByb21pc2U7CiAgICAgUHJvbWlzZSYgcHJvbWlz
ZSgpIHsgcmV0dXJuIG1fcHJvbWlzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0ZvbnRGYWNlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5jcHAKaW5k
ZXggMDA1MDk5MzZkNjM1OWYzNmFjNjI0N2VkZmIyMTVjNWNiNTBmNzlhMi4uNDU2MjJjYTRkMmE0
MDE4MDNhMjRkM2NhYTYxMDY1ZDY2YmY2NjZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0ZvbnRGYWNlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQu
Y3BwCkBAIC0xODIsMTYgKzE4MiwxNiBAQCBhdXRvIEZvbnRGYWNlU2V0Ojpwcm9taXNlKEpTQzo6
RXhlY1N0YXRlJiBleGVjU3RhdGUpIC0+IFByb21pc2UmCiAgICAgcmV0dXJuIG1fcHJvbWlzZS52
YWx1ZSgpOwogfQogICAgIAotRm9udEZhY2VTZXRMb2FkU3RhdHVzIEZvbnRGYWNlU2V0OjpzdGF0
dXMoKSBjb25zdAorYXV0byBGb250RmFjZVNldDo6c3RhdHVzKCkgY29uc3QgLT4gTG9hZFN0YXR1
cwogewogICAgIHN3aXRjaCAobV9iYWNraW5nLT5zdGF0dXMoKSkgewogICAgIGNhc2UgQ1NTRm9u
dEZhY2VTZXQ6OlN0YXR1czo6TG9hZGluZzoKLSAgICAgICAgcmV0dXJuIEZvbnRGYWNlU2V0TG9h
ZFN0YXR1czo6TG9hZGluZzsKKyAgICAgICAgcmV0dXJuIExvYWRTdGF0dXM6OkxvYWRpbmc7CiAg
ICAgY2FzZSBDU1NGb250RmFjZVNldDo6U3RhdHVzOjpMb2FkZWQ6Ci0gICAgICAgIHJldHVybiBG
b250RmFjZVNldExvYWRTdGF0dXM6OkxvYWRlZDsKKyAgICAgICAgcmV0dXJuIExvYWRTdGF0dXM6
OkxvYWRlZDsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEZv
bnRGYWNlU2V0TG9hZFN0YXR1czo6TG9hZGVkOworICAgIHJldHVybiBMb2FkU3RhdHVzOjpMb2Fk
ZWQ7CiB9CiAKIGJvb2wgRm9udEZhY2VTZXQ6OmNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNp
b24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaAppbmRleCAyOTUzYTlhOGE1MDlmNTBh
ODY0NTk3NTZjM2ZkYzM5NGUxZDcwODlkLi5iMTc1ODM2MzhlYjFlN2RjNTkxNTcyNDY5ZDQ0MTg3
NmVjNTdiYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaApAQCAtMzUsOCArMzUsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERPTUNvcmVFeGNlcHRpb247CiAKLWVudW0gY2xh
c3MgRm9udEZhY2VTZXRMb2FkU3RhdHVzIHsgTG9hZGluZywgTG9hZGVkIH07Ci0KIGNsYXNzIEZv
bnRGYWNlU2V0IGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8Rm9udEZhY2VTZXQ+LCBwcml2YXRl
IENTU0ZvbnRGYWNlU2V0Q2xpZW50LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwg
cHJpdmF0ZSBBY3RpdmVET01PYmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8Rm9udEZh
Y2VTZXQ+IGNyZWF0ZShEb2N1bWVudCYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Rm9udEZhY2U+PiYg
aW5pdGlhbEZhY2VzKTsKQEAgLTUyLDcgKzUwLDggQEAgcHVibGljOgogICAgIHZvaWQgbG9hZChK
U0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IFN0cmluZyYgZm9udCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBE
ZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlLCBFeGNlcHRpb25Db2RlJik7CiAgICAgYm9vbCBjaGVj
ayhjb25zdCBTdHJpbmcmIGZvbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYp
OwogCi0gICAgRm9udEZhY2VTZXRMb2FkU3RhdHVzIHN0YXR1cygpIGNvbnN0OworICAgIGVudW0g
Y2xhc3MgTG9hZFN0YXR1cyB7IExvYWRpbmcsIExvYWRlZCB9OworICAgIExvYWRTdGF0dXMgc3Rh
dHVzKCkgY29uc3Q7CiAKICAgICB0eXBlZGVmIERPTVByb21pc2U8Rm9udEZhY2VTZXQmLCBET01D
b3JlRXhjZXB0aW9uJj4gUHJvbWlzZTsKICAgICBQcm9taXNlJiBwcm9taXNlKEpTQzo6RXhlY1N0
YXRlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAwNTQ1ZWZjMWQ5MDkzYzRhMWQ0YjYw
YWY2YzQ2MzY3NjA1ODc1NzU2Li5mYTdmNmQwMzJkY2ZiNmMyYzNiNmQxN2Y5OGIwNzJjMzQwMmE4
NjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTUyMSw3ICs1MjEsNyBAQCBEb2N1bWVu
dDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCwgdW5zaWduZWQgZG9jdW1l
bnRDbGFzc2VzLCB1bnNpZwogI2VuZGlmCiAgICAgLCBtX2xvYWRFdmVudERlbGF5Q291bnQoMCkK
ICAgICAsIG1fbG9hZEV2ZW50RGVsYXlUaW1lcigqdGhpcywgJkRvY3VtZW50Ojpsb2FkRXZlbnRE
ZWxheVRpbWVyRmlyZWQpCi0gICAgLCBtX3JlZmVycmVyUG9saWN5KFJlZmVycmVySGVhZGVyUG9s
aWN5OjpEZWZhdWx0KQorICAgICwgbV9yZWZlcnJlclBvbGljeShSZWZlcnJlclBvbGljeTo6RGVm
YXVsdCkKICAgICAsIG1fd3JpdGVSZWN1cnNpb25Jc1Rvb0RlZXAoZmFsc2UpCiAgICAgLCBtX3dy
aXRlUmVjdXJzaW9uRGVwdGgoMCkKICAgICAsIG1fbGFzdEhhbmRsZWRVc2VyR2VzdHVyZVRpbWVz
dGFtcCgwKQpAQCAtMzM2MCwxNiArMzM2MCwxNiBAQCB2b2lkIERvY3VtZW50Ojpwcm9jZXNzUmVm
ZXJyZXJQb2xpY3koY29uc3QgU3RyaW5nJiBwb2xpY3kpCiAgICAgLy8gTm90ZSB0aGF0IHdlJ3Jl
IHN1cHBvcnRpbmcgYm90aCB0aGUgc3RhbmRhcmQgYW5kIGxlZ2FjeSBrZXl3b3JkcyBmb3IgcmVm
ZXJyZXIKICAgICAvLyBwb2xpY2llcywgYXMgZGVmaW5lZCBieSBodHRwOi8vd3d3LnczLm9yZy9U
Ui9yZWZlcnJlci1wb2xpY3kvI3JlZmVycmVyLXBvbGljeS1kZWxpdmVyeS1tZXRhCiAgICAgaWYg
KGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHBvbGljeSwgIm5vLXJlZmVycmVyIikgfHwg
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocG9saWN5LCAibmV2ZXIiKSkKLSAgICAgICAg
c2V0UmVmZXJyZXJQb2xpY3koUmVmZXJyZXJIZWFkZXJQb2xpY3k6Ok5ldmVyKTsKKyAgICAgICAg
c2V0UmVmZXJyZXJQb2xpY3koUmVmZXJyZXJQb2xpY3k6Ok5ldmVyKTsKICAgICBlbHNlIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwb2xpY3ksICJ1bnNhZmUtdXJsIikgfHwgZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocG9saWN5LCAiYWx3YXlzIikpCi0gICAgICAgIHNl
dFJlZmVycmVyUG9saWN5KFJlZmVycmVySGVhZGVyUG9saWN5OjpBbHdheXMpOworICAgICAgICBz
ZXRSZWZlcnJlclBvbGljeShSZWZlcnJlclBvbGljeTo6QWx3YXlzKTsKICAgICBlbHNlIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwb2xpY3ksICJvcmlnaW4iKSkKLSAgICAgICAg
c2V0UmVmZXJyZXJQb2xpY3koUmVmZXJyZXJIZWFkZXJQb2xpY3k6Ok9yaWdpbik7CisgICAgICAg
IHNldFJlZmVycmVyUG9saWN5KFJlZmVycmVyUG9saWN5OjpPcmlnaW4pOwogICAgIGVsc2UgaWYg
KGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHBvbGljeSwgIm5vLXJlZmVycmVyLXdoZW4t
ZG93bmdyYWRlIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocG9saWN5LCAiZGVm
YXVsdCIpKQotICAgICAgICBzZXRSZWZlcnJlclBvbGljeShSZWZlcnJlckhlYWRlclBvbGljeTo6
RGVmYXVsdCk7CisgICAgICAgIHNldFJlZmVycmVyUG9saWN5KFJlZmVycmVyUG9saWN5OjpEZWZh
dWx0KTsKICAgICBlbHNlIHsKICAgICAgICAgYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZTo6UmVuZGVyaW5nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiRmFpbGVkIHRvIHNldCByZWZlcnJl
ciBwb2xpY3k6IFRoZSB2YWx1ZSAnIiArIHBvbGljeSArICInIGlzIG5vdCBvbmUgb2YgJ25vLXJl
ZmVycmVyJywgJ29yaWdpbicsICduby1yZWZlcnJlci13aGVuLWRvd25ncmFkZScsIG9yICd1bnNh
ZmUtdXJsJy4gRGVmYXVsdGluZyB0byAnbm8tcmVmZXJyZXInLiIpOwotICAgICAgICBzZXRSZWZl
cnJlclBvbGljeShSZWZlcnJlckhlYWRlclBvbGljeTo6TmV2ZXIpOworICAgICAgICBzZXRSZWZl
cnJlclBvbGljeShSZWZlcnJlclBvbGljeTo6TmV2ZXIpOwogICAgIH0KIH0KIApAQCAtNjkzNyw3
ICs2OTM3LDcgQEAgdm9pZCBEb2N1bWVudDo6YXBwbHlDb250ZW50RGlzcG9zaXRpb25BdHRhY2ht
ZW50U2FuZGJveCgpCiB7CiAgICAgQVNTRVJUKHNob3VsZEVuZm9yY2VDb250ZW50RGlzcG9zaXRp
b25BdHRhY2htZW50U2FuZGJveCgpKTsKIAotICAgIHNldFJlZmVycmVyUG9saWN5KFJlZmVycmVy
SGVhZGVyUG9saWN5OjpOZXZlcik7CisgICAgc2V0UmVmZXJyZXJQb2xpY3koUmVmZXJyZXJQb2xp
Y3k6Ok5ldmVyKTsKICAgICBpZiAoIWlzTWVkaWFEb2N1bWVudCgpKQogICAgICAgICBlbmZvcmNl
U2FuZGJveEZsYWdzKFNhbmRib3hBbGwpOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5k
ZXggMTY2MjFlYmE3MTcwYjkxNmViYTg2NmUxMGE4OGVlY2E1ODQ5N2M3Mi4uMWJjYjQ4YmUyNWVi
YWJkOWFjNjhlY2NkNTAxZTY2NTE5MTUxN2UzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTM2
MSw4ICszNjEsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBkaWREaXNwYXRjaFZpZXdwb3J0UHJvcGVy
dGllc0NoYW5nZWQoKSBjb25zdCB7IHJldHVybiBtX2RpZERpc3BhdGNoVmlld3BvcnRQcm9wZXJ0
aWVzQ2hhbmdlZDsgfQogI2VuZGlmCiAKLSAgICB2b2lkIHNldFJlZmVycmVyUG9saWN5KFJlZmVy
cmVySGVhZGVyUG9saWN5IHJlZmVycmVyUG9saWN5KSB7IG1fcmVmZXJyZXJQb2xpY3kgPSByZWZl
cnJlclBvbGljeTsgfQotICAgIFJlZmVycmVySGVhZGVyUG9saWN5IHJlZmVycmVyUG9saWN5KCkg
Y29uc3QgeyByZXR1cm4gbV9yZWZlcnJlclBvbGljeTsgfQorICAgIHZvaWQgc2V0UmVmZXJyZXJQ
b2xpY3koUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3kpIHsgbV9yZWZlcnJlclBvbGljeSA9
IHJlZmVycmVyUG9saWN5OyB9CisgICAgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3koKSBj
b25zdCB7IHJldHVybiBtX3JlZmVycmVyUG9saWN5OyB9CiAKICAgICBEb2N1bWVudFR5cGUqIGRv
Y3R5cGUoKSBjb25zdDsKIApAQCAtMTY0MCw3ICsxNjQwLDcgQEAgcHJpdmF0ZToKIAogICAgIFZp
ZXdwb3J0QXJndW1lbnRzIG1fdmlld3BvcnRBcmd1bWVudHM7CiAKLSAgICBSZWZlcnJlckhlYWRl
clBvbGljeSBtX3JlZmVycmVyUG9saWN5OworICAgIFJlZmVycmVyUG9saWN5IG1fcmVmZXJyZXJQ
b2xpY3k7CiAKICNpZiBFTkFCTEUoV0VCX1RJTUlORykKICAgICBEb2N1bWVudFRpbWluZyBtX2Rv
Y3VtZW50VGltaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5k
ZXggYTgzZWJiNzg2YjJkNTQwZTY4MGRlYWZhNTYyYmM1MTFmZjYzYzFiMS4uYjE4ZTI5NzEzYmEy
ZDZlYmMxYzgyYmVmNzEyMjZkYjU1ZGM2OWMyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCkBAIC0xMTc0LDcgKzExNzQsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OmxvYWRJbnRlcm5hbCgpCiAgICAgICAgIGlmIChtX3RleHRUcmFja3MpIHsKICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3RleHRUcmFja3MtPmxlbmd0aCgpOyArK2kp
IHsKICAgICAgICAgICAgICAgICBUZXh0VHJhY2sqIHRyYWNrID0gbV90ZXh0VHJhY2tzLT5pdGVt
KGkpOwotICAgICAgICAgICAgICAgIGlmICh0cmFjay0+bW9kZSgpICE9IFRleHRUcmFja01vZGU6
OkRpc2FibGVkKQorICAgICAgICAgICAgICAgIGlmICh0cmFjay0+bW9kZSgpICE9IFRleHRUcmFj
azo6TW9kZTo6RGlzYWJsZWQpCiAgICAgICAgICAgICAgICAgICAgIG1fdGV4dFRyYWNrc1doZW5S
ZXNvdXJjZVNlbGVjdGlvbkJlZ2FuLmFwcGVuZCh0cmFjayk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KQEAgLTE3MzEsNyArMTczMSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRy
YWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrKiB0cmFjaykKICAgICAvLyBNYXJrIHRoaXMgdHJhY2sg
YXMgImNvbmZpZ3VyZWQiIHNvIGNvbmZpZ3VyZVRleHRUcmFja3Mgd29uJ3QgY2hhbmdlIHRoZSBt
b2RlIGFnYWluLgogICAgIHRyYWNrLT5zZXRIYXNCZWVuQ29uZmlndXJlZCh0cnVlKTsKICAgICAK
LSAgICBpZiAodHJhY2stPm1vZGUoKSAhPSBUZXh0VHJhY2tNb2RlOjpEaXNhYmxlZCAmJiB0cmFj
a0lzTG9hZGVkKQorICAgIGlmICh0cmFjay0+bW9kZSgpICE9IFRleHRUcmFjazo6TW9kZTo6RGlz
YWJsZWQgJiYgdHJhY2tJc0xvYWRlZCkKICAgICAgICAgdGV4dFRyYWNrQWRkQ3Vlcyh0cmFjaywg
dHJhY2stPmN1ZXMoKSk7CiAKICAgICBjb25maWd1cmVUZXh0VHJhY2tEaXNwbGF5KEFzc3VtZVRl
eHRUcmFja1Zpc2liaWxpdHlDaGFuZ2VkKTsKQEAgLTE3NTUsOCArMTc1NSw4IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6dmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZChWaWRlb1RyYWNrKiB0cmFj
aykKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tLaW5kQ2hhbmdlZChUZXh0VHJh
Y2sqIHRyYWNrKQogewotICAgIGlmICh0cmFjay0+a2luZCgpICE9IFRleHRUcmFja0tpbmQ6OkNh
cHRpb25zICYmIHRyYWNrLT5raW5kKCkgIT0gVGV4dFRyYWNrS2luZDo6U3VidGl0bGVzICYmIHRy
YWNrLT5tb2RlKCkgPT0gVGV4dFRyYWNrTW9kZTo6U2hvd2luZykKLSAgICAgICAgdHJhY2stPnNl
dE1vZGUoVGV4dFRyYWNrTW9kZTo6SGlkZGVuKTsKKyAgICBpZiAodHJhY2stPmtpbmQoKSAhPSBU
ZXh0VHJhY2s6OktpbmQ6OkNhcHRpb25zICYmIHRyYWNrLT5raW5kKCkgIT0gVGV4dFRyYWNrOjpL
aW5kOjpTdWJ0aXRsZXMgJiYgdHJhY2stPm1vZGUoKSA9PSBUZXh0VHJhY2s6Ok1vZGU6OlNob3dp
bmcpCisgICAgICAgIHRyYWNrLT5zZXRNb2RlKFRleHRUcmFjazo6TW9kZTo6SGlkZGVuKTsKIH0K
IAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpiZWdpbklnbm9yaW5nVHJhY2tEaXNwbGF5VXBkYXRl
UmVxdWVzdHMoKQpAQCAtMTc3NCw3ICsxNzc0LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpl
bmRJZ25vcmluZ1RyYWNrRGlzcGxheVVwZGF0ZVJlcXVlc3RzKCkKIAogdm9pZCBIVE1MTWVkaWFF
bGVtZW50Ojp0ZXh0VHJhY2tBZGRDdWVzKFRleHRUcmFjayogdHJhY2ssIGNvbnN0IFRleHRUcmFj
a0N1ZUxpc3QqIGN1ZXMpIAogewotICAgIGlmICh0cmFjay0+bW9kZSgpID09IFRleHRUcmFja01v
ZGU6OkRpc2FibGVkKQorICAgIGlmICh0cmFjay0+bW9kZSgpID09IFRleHRUcmFjazo6TW9kZTo6
RGlzYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIFRyYWNrRGlzcGxheVVwZGF0ZVNjb3Bl
IHNjb3BlKHRoaXMpOwpAQCAtMTc5MSw3ICsxNzkxLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
Ojp0ZXh0VHJhY2tSZW1vdmVDdWVzKFRleHRUcmFjayosIGNvbnN0IFRleHRUcmFja0N1ZUxpc3Qq
IGMKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tBZGRDdWUoVGV4dFRyYWNrKiB0
cmFjaywgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+IHBycEN1ZSkKIHsKLSAgICBpZiAodHJhY2st
Pm1vZGUoKSA9PSBUZXh0VHJhY2tNb2RlOjpEaXNhYmxlZCkKKyAgICBpZiAodHJhY2stPm1vZGUo
KSA9PSBUZXh0VHJhY2s6Ok1vZGU6OkRpc2FibGVkKQogICAgICAgICByZXR1cm47CiAKICAgICBS
ZWZQdHI8VGV4dFRyYWNrQ3VlPiBjdWUgPSBwcnBDdWU7CkBAIC0zNjY0LDcgKzM2NjQsNyBAQCBQ
YXNzUmVmUHRyPFRleHRUcmFjaz4gSFRNTE1lZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKGNvbnN0
IFN0cmluZyYga2luZCwgY29uc3QgUwogICAgIHRleHRUcmFjay0+c2V0UmVhZGluZXNzU3RhdGUo
VGV4dFRyYWNrOjpMb2FkZWQpOwogCiAgICAgLy8gLi4uIGl0cyB0ZXh0IHRyYWNrIG1vZGUgdG8g
dGhlIHRleHQgdHJhY2sgaGlkZGVuIG1vZGUsIGFuZCBpdHMgdGV4dCB0cmFjayBsaXN0IG9mIGN1
ZXMgdG8gYW4gZW1wdHkgbGlzdCAuLi4KLSAgICB0ZXh0VHJhY2stPnNldE1vZGUoVGV4dFRyYWNr
TW9kZTo6SGlkZGVuKTsKKyAgICB0ZXh0VHJhY2stPnNldE1vZGUoVGV4dFRyYWNrOjpNb2RlOjpI
aWRkZW4pOwogCiAgICAgcmV0dXJuIHRleHRUcmFjay5yZWxlYXNlKCk7CiB9CkBAIC0zNzkyLDcg
KzM3OTIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNvbmZpZ3VyZVRleHRUcmFja0dyb3Vw
KGNvbnN0IFRyYWNrR3JvdXAmIGdyb3VwKQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZ3Jv
dXAudHJhY2tzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFJlZlB0cjxUZXh0VHJhY2s+IHRleHRU
cmFjayA9IGdyb3VwLnRyYWNrc1tpXTsKIAotICAgICAgICBpZiAobV9wcm9jZXNzaW5nUHJlZmVy
ZW5jZUNoYW5nZSAmJiB0ZXh0VHJhY2stPm1vZGUoKSA9PSBUZXh0VHJhY2tNb2RlOjpTaG93aW5n
KQorICAgICAgICBpZiAobV9wcm9jZXNzaW5nUHJlZmVyZW5jZUNoYW5nZSAmJiB0ZXh0VHJhY2st
Pm1vZGUoKSA9PSBUZXh0VHJhY2s6Ok1vZGU6OlNob3dpbmcpCiAgICAgICAgICAgICBjdXJyZW50
bHlFbmFibGVkVHJhY2tzLmFwcGVuZCh0ZXh0VHJhY2spOwogCiAgICAgICAgIGludCB0cmFja1Nj
b3JlID0gY2FwdGlvblByZWZlcmVuY2VzID8gY2FwdGlvblByZWZlcmVuY2VzLT50ZXh0VHJhY2tT
ZWxlY3Rpb25TY29yZSh0ZXh0VHJhY2suZ2V0KCksIHRoaXMpIDogMDsKQEAgLTM4NjEsMTIgKzM4
NjEsMTIgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpjb25maWd1cmVUZXh0VHJhY2tHcm91cChj
b25zdCBUcmFja0dyb3VwJiBncm91cCkKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBj
dXJyZW50bHlFbmFibGVkVHJhY2tzLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBSZWZQdHI8
VGV4dFRyYWNrPiB0ZXh0VHJhY2sgPSBjdXJyZW50bHlFbmFibGVkVHJhY2tzW2ldOwogICAgICAg
ICAgICAgaWYgKHRleHRUcmFjayAhPSB0cmFja1RvRW5hYmxlKQotICAgICAgICAgICAgICAgIHRl
eHRUcmFjay0+c2V0TW9kZShUZXh0VHJhY2tNb2RlOjpEaXNhYmxlZCk7CisgICAgICAgICAgICAg
ICAgdGV4dFRyYWNrLT5zZXRNb2RlKFRleHRUcmFjazo6TW9kZTo6RGlzYWJsZWQpOwogICAgICAg
ICB9CiAgICAgfQogCiAgICAgaWYgKHRyYWNrVG9FbmFibGUpIHsKLSAgICAgICAgdHJhY2tUb0Vu
YWJsZS0+c2V0TW9kZShUZXh0VHJhY2tNb2RlOjpTaG93aW5nKTsKKyAgICAgICAgdHJhY2tUb0Vu
YWJsZS0+c2V0TW9kZShUZXh0VHJhY2s6Ok1vZGU6OlNob3dpbmcpOwogCiAgICAgICAgIC8vIElm
IHVzZXIgcHJlZmVyZW5jZXMgaW5kaWNhdGUgd2Ugc2hvdWxkIGFsd2F5cyBkaXNwbGF5IGNhcHRp
b25zLCBtYWtlIHN1cmUgd2UgcmVmbGVjdCB0aGUKICAgICAgICAgLy8gcHJvcGVyIHN0YXR1cyB2
aWEgdGhlIHdlYmtpdENsb3NlZENhcHRpb25zVmlzaWJsZSBBUEkgY2FsbDoKQEAgLTM5OTYsMTMg
KzM5OTYsMTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRTZWxlY3RlZFRleHRUcmFjayhU
ZXh0VHJhY2sqIHRyYWNrVG9TZWxlY3QpCiAgICAgICAgIGZvciAoaW50IGkgPSAwLCBsZW5ndGgg
PSB0cmFja0xpc3QtPmxlbmd0aCgpOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIFRl
eHRUcmFjayogdHJhY2sgPSB0cmFja0xpc3QtPml0ZW0oaSk7CiAgICAgICAgICAgICBpZiAoIXRy
YWNrVG9TZWxlY3QgfHwgdHJhY2sgIT0gdHJhY2tUb1NlbGVjdCkKLSAgICAgICAgICAgICAgICB0
cmFjay0+c2V0TW9kZShUZXh0VHJhY2tNb2RlOjpEaXNhYmxlZCk7CisgICAgICAgICAgICAgICAg
dHJhY2stPnNldE1vZGUoVGV4dFRyYWNrOjpNb2RlOjpEaXNhYmxlZCk7CiAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgdHJhY2stPnNldE1vZGUoVGV4dFRyYWNrTW9kZTo6U2hvd2lu
Zyk7CisgICAgICAgICAgICAgICAgdHJhY2stPnNldE1vZGUoVGV4dFRyYWNrOjpNb2RlOjpTaG93
aW5nKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAodHJhY2tUb1NlbGVjdCA9PSBUZXh0VHJh
Y2s6OmNhcHRpb25NZW51T2ZmSXRlbSgpKSB7CiAgICAgICAgIGZvciAoaW50IGkgPSAwLCBsZW5n
dGggPSB0cmFja0xpc3QtPmxlbmd0aCgpOyBpIDwgbGVuZ3RoOyArK2kpCi0gICAgICAgICAgICB0
cmFja0xpc3QtPml0ZW0oaSktPnNldE1vZGUoVGV4dFRyYWNrTW9kZTo6RGlzYWJsZWQpOworICAg
ICAgICAgICAgdHJhY2tMaXN0LT5pdGVtKGkpLT5zZXRNb2RlKFRleHRUcmFjazo6TW9kZTo6RGlz
YWJsZWQpOwogICAgIH0KIAogICAgIGlmICghZG9jdW1lbnQoKS5wYWdlKCkpCkBAIC00MDQxLDE4
ICs0MDQxLDE4IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y29uZmlndXJlVGV4dFRyYWNrcygp
CiAKICAgICAgICAgYXV0byBraW5kID0gdGV4dFRyYWNrLT5raW5kKCk7CiAgICAgICAgIFRyYWNr
R3JvdXAqIGN1cnJlbnRHcm91cDsKLSAgICAgICAgaWYgKGtpbmQgPT0gVGV4dFRyYWNrS2luZDo6
U3VidGl0bGVzIHx8IGtpbmQgPT0gVGV4dFRyYWNrS2luZDo6Q2FwdGlvbnMgfHwga2luZCA9PSBU
ZXh0VHJhY2tLaW5kOjpGb3JjZWQpCisgICAgICAgIGlmIChraW5kID09IFRleHRUcmFjazo6S2lu
ZDo6U3VidGl0bGVzIHx8IGtpbmQgPT0gVGV4dFRyYWNrOjpLaW5kOjpDYXB0aW9ucyB8fCBraW5k
ID09IFRleHRUcmFjazo6S2luZDo6Rm9yY2VkKQogICAgICAgICAgICAgY3VycmVudEdyb3VwID0g
JmNhcHRpb25BbmRTdWJ0aXRsZVRyYWNrczsKLSAgICAgICAgZWxzZSBpZiAoa2luZCA9PSBUZXh0
VHJhY2tLaW5kOjpEZXNjcmlwdGlvbnMpCisgICAgICAgIGVsc2UgaWYgKGtpbmQgPT0gVGV4dFRy
YWNrOjpLaW5kOjpEZXNjcmlwdGlvbnMpCiAgICAgICAgICAgICBjdXJyZW50R3JvdXAgPSAmZGVz
Y3JpcHRpb25UcmFja3M7Ci0gICAgICAgIGVsc2UgaWYgKGtpbmQgPT0gVGV4dFRyYWNrS2luZDo6
Q2hhcHRlcnMpCisgICAgICAgIGVsc2UgaWYgKGtpbmQgPT0gVGV4dFRyYWNrOjpLaW5kOjpDaGFw
dGVycykKICAgICAgICAgICAgIGN1cnJlbnRHcm91cCA9ICZjaGFwdGVyVHJhY2tzOwotICAgICAg
ICBlbHNlIGlmIChraW5kID09IFRleHRUcmFja0tpbmQ6Ok1ldGFkYXRhKQorICAgICAgICBlbHNl
IGlmIChraW5kID09IFRleHRUcmFjazo6S2luZDo6TWV0YWRhdGEpCiAgICAgICAgICAgICBjdXJy
ZW50R3JvdXAgPSAmbWV0YWRhdGFUcmFja3M7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGN1
cnJlbnRHcm91cCA9ICZvdGhlclRyYWNrczsKIAotICAgICAgICBpZiAoIWN1cnJlbnRHcm91cC0+
dmlzaWJsZVRyYWNrICYmIHRleHRUcmFjay0+bW9kZSgpID09IFRleHRUcmFja01vZGU6OlNob3dp
bmcpCisgICAgICAgIGlmICghY3VycmVudEdyb3VwLT52aXNpYmxlVHJhY2sgJiYgdGV4dFRyYWNr
LT5tb2RlKCkgPT0gVGV4dFRyYWNrOjpNb2RlOjpTaG93aW5nKQogICAgICAgICAgICAgY3VycmVu
dEdyb3VwLT52aXNpYmxlVHJhY2sgPSB0ZXh0VHJhY2s7CiAgICAgICAgIGlmICghY3VycmVudEdy
b3VwLT5kZWZhdWx0VHJhY2sgJiYgdGV4dFRyYWNrLT5pc0RlZmF1bHQoKSkKICAgICAgICAgICAg
IGN1cnJlbnRHcm91cC0+ZGVmYXVsdFRyYWNrID0gdGV4dFRyYWNrOwpAQCAtNTQ5MSw3ICs1NDkx
LDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpoYXNDbG9zZWRDYXB0aW9ucygpIGNvbnN0CiAg
ICAgICAgIGF1dG8mIHRyYWNrID0gKm1fdGV4dFRyYWNrcy0+aXRlbShpKTsKICAgICAgICAgaWYg
KHRyYWNrLnJlYWRpbmVzc1N0YXRlKCkgPT0gVGV4dFRyYWNrOjpGYWlsZWRUb0xvYWQpCiAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKHRyYWNrLmtpbmQoKSA9PSBUZXh0VHJhY2tL
aW5kOjpDYXB0aW9ucyB8fCB0cmFjay5raW5kKCkgPT0gVGV4dFRyYWNrS2luZDo6U3VidGl0bGVz
KQorICAgICAgICBpZiAodHJhY2sua2luZCgpID09IFRleHRUcmFjazo6S2luZDo6Q2FwdGlvbnMg
fHwgdHJhY2sua2luZCgpID09IFRleHRUcmFjazo6S2luZDo6U3VidGl0bGVzKQogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogI2VuZGlmCkBAIC01NzU4LDcgKzU3NTgsNyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OmNvbmZpZ3VyZVRleHRUcmFja0Rpc3BsYXkoVGV4dFRyYWNrVmlz
aWJpbGl0eUNoZWNrVHlwZSBjaAogCiAgICAgYm9vbCBoYXZlVmlzaWJsZVRleHRUcmFjayA9IGZh
bHNlOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3RleHRUcmFja3MtPmxlbmd0aCgp
OyArK2kpIHsKLSAgICAgICAgaWYgKG1fdGV4dFRyYWNrcy0+aXRlbShpKS0+bW9kZSgpID09IFRl
eHRUcmFja01vZGU6OlNob3dpbmcpIHsKKyAgICAgICAgaWYgKG1fdGV4dFRyYWNrcy0+aXRlbShp
KS0+bW9kZSgpID09IFRleHRUcmFjazo6TW9kZTo6U2hvd2luZykgewogICAgICAgICAgICAgaGF2
ZVZpc2libGVUZXh0VHJhY2sgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
QEAgLTU4MzQsNyArNTgzNCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWFya0NhcHRpb25B
bmRTdWJ0aXRsZVRyYWNrc0FzVW5jb25maWd1cmVkKFJlY29uZmlndXJlTW9kCiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fdGV4dFRyYWNrcy0+bGVuZ3RoKCk7ICsraSkgewogICAgICAg
ICBhdXRvJiB0cmFjayA9ICptX3RleHRUcmFja3MtPml0ZW0oaSk7CiAgICAgICAgIGF1dG8ga2lu
ZCA9IHRyYWNrLmtpbmQoKTsKLSAgICAgICAgaWYgKGtpbmQgPT0gVGV4dFRyYWNrS2luZDo6U3Vi
dGl0bGVzIHx8IGtpbmQgPT0gVGV4dFRyYWNrS2luZDo6Q2FwdGlvbnMpCisgICAgICAgIGlmIChr
aW5kID09IFRleHRUcmFjazo6S2luZDo6U3VidGl0bGVzIHx8IGtpbmQgPT0gVGV4dFRyYWNrOjpL
aW5kOjpDYXB0aW9ucykKICAgICAgICAgICAgIHRyYWNrLnNldEhhc0JlZW5Db25maWd1cmVkKGZh
bHNlKTsKICAgICB9CiAKQEAgLTYwODAsMzQgKzYwODAsMzQgQEAgU3RyaW5nIEhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVyVXNlckFnZW50KCkgY29uc3QKIAogI2lmIEVOQUJMRShBVkZfQ0FQ
VElPTlMpCiAKLXN0YXRpYyBpbmxpbmUgUGxhdGZvcm1UZXh0VHJhY2s6OlRyYWNrS2luZCB0b1Bs
YXRmb3JtKFRleHRUcmFja0tpbmQga2luZCkKK3N0YXRpYyBpbmxpbmUgUGxhdGZvcm1UZXh0VHJh
Y2s6OlRyYWNrS2luZCB0b1BsYXRmb3JtKFRleHRUcmFjazo6S2luZCBraW5kKQogewogICAgIHN3
aXRjaCAoa2luZCkgewotICAgIGNhc2UgVGV4dFRyYWNrS2luZDo6Q2FwdGlvbnM6CisgICAgY2Fz
ZSBUZXh0VHJhY2s6OktpbmQ6OkNhcHRpb25zOgogICAgICAgICByZXR1cm4gUGxhdGZvcm1UZXh0
VHJhY2s6OkNhcHRpb247Ci0gICAgY2FzZSBUZXh0VHJhY2tLaW5kOjpDaGFwdGVyczoKKyAgICBj
YXNlIFRleHRUcmFjazo6S2luZDo6Q2hhcHRlcnM6CiAgICAgICAgIHJldHVybiBQbGF0Zm9ybVRl
eHRUcmFjazo6Q2hhcHRlcjsKLSAgICBjYXNlIFRleHRUcmFja0tpbmQ6OkRlc2NyaXB0aW9uczoK
KyAgICBjYXNlIFRleHRUcmFjazo6S2luZDo6RGVzY3JpcHRpb25zOgogICAgICAgICByZXR1cm4g
UGxhdGZvcm1UZXh0VHJhY2s6OkRlc2NyaXB0aW9uOwotICAgIGNhc2UgVGV4dFRyYWNrS2luZDo6
Rm9yY2VkOgorICAgIGNhc2UgVGV4dFRyYWNrOjpLaW5kOjpGb3JjZWQ6CiAgICAgICAgIHJldHVy
biBQbGF0Zm9ybVRleHRUcmFjazo6Rm9yY2VkOwotICAgIGNhc2UgVGV4dFRyYWNrS2luZDo6TWV0
YWRhdGE6CisgICAgY2FzZSBUZXh0VHJhY2s6OktpbmQ6Ok1ldGFkYXRhOgogICAgICAgICByZXR1
cm4gUGxhdGZvcm1UZXh0VHJhY2s6Ok1ldGFEYXRhOwotICAgIGNhc2UgVGV4dFRyYWNrS2luZDo6
U3VidGl0bGVzOgorICAgIGNhc2UgVGV4dFRyYWNrOjpLaW5kOjpTdWJ0aXRsZXM6CiAgICAgICAg
IHJldHVybiBQbGF0Zm9ybVRleHRUcmFjazo6U3VidGl0bGU7CiAgICAgfQogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBQbGF0Zm9ybVRleHRUcmFjazo6Q2FwdGlvbjsKIH0K
IAotc3RhdGljIGlubGluZSBQbGF0Zm9ybVRleHRUcmFjazo6VHJhY2tNb2RlIHRvUGxhdGZvcm0o
VGV4dFRyYWNrTW9kZSBtb2RlKQorc3RhdGljIGlubGluZSBQbGF0Zm9ybVRleHRUcmFjazo6VHJh
Y2tNb2RlIHRvUGxhdGZvcm0oVGV4dFRyYWNrOjpNb2RlIG1vZGUpCiB7CiAgICAgc3dpdGNoICht
b2RlKSB7Ci0gICAgY2FzZSBUZXh0VHJhY2tNb2RlOjpEaXNhYmxlZDoKKyAgICBjYXNlIFRleHRU
cmFjazo6TW9kZTo6RGlzYWJsZWQ6CiAgICAgICAgIHJldHVybiBQbGF0Zm9ybVRleHRUcmFjazo6
RGlzYWJsZWQ7Ci0gICAgY2FzZSBUZXh0VHJhY2tNb2RlOjpIaWRkZW46CisgICAgY2FzZSBUZXh0
VHJhY2s6Ok1vZGU6OkhpZGRlbjoKICAgICAgICAgcmV0dXJuIFBsYXRmb3JtVGV4dFRyYWNrOjpI
aWRkZW47Ci0gICAgY2FzZSBUZXh0VHJhY2tNb2RlOjpTaG93aW5nOgorICAgIGNhc2UgVGV4dFRy
YWNrOjpNb2RlOjpTaG93aW5nOgogICAgICAgICByZXR1cm4gUGxhdGZvcm1UZXh0VHJhY2s6OlNo
b3dpbmc7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNjEzMSwxMyArNjEz
MSwxMyBAQCBWZWN0b3I8UmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrPj4gSFRNTE1lZGlhRWxlbWVu
dDo6b3V0T2ZCYW5kVHJhY2tTb3VyY2VzKCkKICAgICAgICAgLy8gRklYTUU6IFRoZSBzd2l0Y2gg
c3RhdGVtZW50IGJlbG93IHByZXNlcnZlcyBleGlzdGluZyBiZWhhdmlvciB3aGVyZSB3ZSBpZ25v
cmUgY2hhcHRlcnMgYW5kIG1ldGFkYXRhIHRyYWNrcy4KICAgICAgICAgLy8gSWYgd2UgY29uZmly
bSB0aGlzIGJlaGF2aW9yIGlzIHZhbHVhYmxlLCB3ZSBzaG91bGQgcmVtb3ZlIHRoaXMgY29tbWVu
dC4gT3RoZXJ3aXNlLCByZW1vdmUgYm90aCBjb21tZW50IGFuZCBzd2l0Y2guCiAgICAgICAgIHN3
aXRjaCAoa2luZCkgewotICAgICAgICBjYXNlIFRleHRUcmFja0tpbmQ6OkNhcHRpb25zOgotICAg
ICAgICBjYXNlIFRleHRUcmFja0tpbmQ6OkRlc2NyaXB0aW9uczoKLSAgICAgICAgY2FzZSBUZXh0
VHJhY2tLaW5kOjpGb3JjZWQ6Ci0gICAgICAgIGNhc2UgVGV4dFRyYWNrS2luZDo6U3VidGl0bGVz
OgorICAgICAgICBjYXNlIFRleHRUcmFjazo6S2luZDo6Q2FwdGlvbnM6CisgICAgICAgIGNhc2Ug
VGV4dFRyYWNrOjpLaW5kOjpEZXNjcmlwdGlvbnM6CisgICAgICAgIGNhc2UgVGV4dFRyYWNrOjpL
aW5kOjpGb3JjZWQ6CisgICAgICAgIGNhc2UgVGV4dFRyYWNrOjpLaW5kOjpTdWJ0aXRsZXM6CiAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBUZXh0VHJhY2tLaW5kOjpDaGFwdGVyczoK
LSAgICAgICAgY2FzZSBUZXh0VHJhY2tLaW5kOjpNZXRhZGF0YToKKyAgICAgICAgY2FzZSBUZXh0
VHJhY2s6OktpbmQ6OkNoYXB0ZXJzOgorICAgICAgICBjYXNlIFRleHRUcmFjazo6S2luZDo6TWV0
YWRhdGE6CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcAppbmRleCA0NTRiYzI2NGQ5MzhlMDUxNjliODQ0ZTIw
NGVhZTU2YTAzMTQ1ZTMwLi5jMjAxYWJlM2JjODQ3MjYzMDQ3YWIyYzVjZTZjOWI2ZDFhMGI5ZDY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKQEAgLTE3NCw3ICsx
NzQsNyBAQCB2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnNjaGVkdWxlTG9hZCgpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIC8vIDIuIElmIHRoZSB0ZXh0IHRyYWNrJ3MgdGV4dCB0cmFjayBtb2RlIGlz
IG5vdCBzZXQgdG8gb25lIG9mIGhpZGRlbiBvciBzaG93aW5nLCBhYm9ydCB0aGVzZSBzdGVwcy4K
LSAgICBpZiAoZW5zdXJlVHJhY2soKS5tb2RlKCkgIT0gVGV4dFRyYWNrTW9kZTo6SGlkZGVuICYm
IGVuc3VyZVRyYWNrKCkubW9kZSgpICE9IFRleHRUcmFja01vZGU6OlNob3dpbmcpCisgICAgaWYg
KGVuc3VyZVRyYWNrKCkubW9kZSgpICE9IFRleHRUcmFjazo6TW9kZTo6SGlkZGVuICYmIGVuc3Vy
ZVRyYWNrKCkubW9kZSgpICE9IFRleHRUcmFjazo6TW9kZTo6U2hvd2luZykKICAgICAgICAgcmV0
dXJuOwogCiAgICAgLy8gMy4gSWYgdGhlIHRleHQgdHJhY2sncyB0cmFjayBlbGVtZW50IGRvZXMg
bm90IGhhdmUgYSBtZWRpYSBlbGVtZW50IGFzIGEgcGFyZW50LCBhYm9ydCB0aGVzZSBzdGVwcy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4IDE4ZTBiNmQ3MzQ1
YjZkOTJmZjE1Mzg1NjIzMzNiNWYyNDM5YzU5ODIuLmU0YTliYzEwZjg1MDc1ODhlZTMwY2UxYmVm
ZDBlMGEyOTIyMjkxZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVv
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNw
cApAQCAtNDAxLDE0ICs0MDEsMTQgQEAgYm9vbCBIVE1MVmlkZW9FbGVtZW50Ojp3ZWJraXRTdXBw
b3J0c1ByZXNlbnRhdGlvbk1vZGUoVmlkZW9QcmVzZW50YXRpb25Nb2RlIG1vZGUKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRl
b0Z1bGxzY3JlZW5Nb2RlIHRvRnVsbHNjcmVlbk1vZGUoVmlkZW9QcmVzZW50YXRpb25Nb2RlIG1v
ZGUpCitzdGF0aWMgaW5saW5lIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVu
TW9kZSB0b0Z1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnQ6OlZpZGVvUHJlc2VudGF0aW9u
TW9kZSBtb2RlKQogewogICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNhc2UgVmlkZW9QcmVzZW50
YXRpb25Nb2RlOjpGdWxsc2NyZWVuOgorICAgIGNhc2UgSFRNTE1lZGlhRWxlbWVudDo6VmlkZW9Q
cmVzZW50YXRpb25Nb2RlOjpGdWxsc2NyZWVuOgogICAgICAgICByZXR1cm4gSFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQ7Ci0gICAgY2FzZSBWaWRlb1By
ZXNlbnRhdGlvbk1vZGU6OlBpY3R1cmVJblBpY3R1cmU6CisgICAgY2FzZSBIVE1MTWVkaWFFbGVt
ZW50OjpWaWRlb1ByZXNlbnRhdGlvbk1vZGU6OlBpY3R1cmVJblBpY3R1cmU6CiAgICAgICAgIHJl
dHVybiBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5Q
aWN0dXJlOwotICAgIGNhc2UgVmlkZW9QcmVzZW50YXRpb25Nb2RlOjpJbmxpbmU6CisgICAgY2Fz
ZSBIVE1MTWVkaWFFbGVtZW50OjpWaWRlb1ByZXNlbnRhdGlvbk1vZGU6OklubGluZToKICAgICAg
ICAgcmV0dXJuIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmU7
CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNDMzLDE5ICs0MzMsMTkgQEAg
dm9pZCBIVE1MVmlkZW9FbGVtZW50OjpzZXRGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50
RW51bXM6OlZpZGVvRnVsbHNjcmVlbk0KICAgICBlbnRlckZ1bGxzY3JlZW4obW9kZSk7CiB9CiAK
LXN0YXRpYyBWaWRlb1ByZXNlbnRhdGlvbk1vZGUgdG9QcmVzZW50YXRpb25Nb2RlKEhUTUxNZWRp
YUVsZW1lbnQ6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKK3N0YXRpYyBIVE1MTWVkaWFFbGVt
ZW50OjpWaWRlb1ByZXNlbnRhdGlvbk1vZGUgdG9QcmVzZW50YXRpb25Nb2RlKEhUTUxNZWRpYUVs
ZW1lbnQ6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKIHsKICAgICBpZiAobW9kZSA9PSBIVE1M
TWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCkKLSAgICAgICAg
cmV0dXJuIFZpZGVvUHJlc2VudGF0aW9uTW9kZTo6RnVsbHNjcmVlbjsKKyAgICAgICAgcmV0dXJu
IEhUTUxNZWRpYUVsZW1lbnQ6OlZpZGVvUHJlc2VudGF0aW9uTW9kZTo6RnVsbHNjcmVlbjsKIAog
ICAgIGlmIChtb2RlICYgSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2Rl
UGljdHVyZUluUGljdHVyZSkKLSAgICAgICAgcmV0dXJuIFZpZGVvUHJlc2VudGF0aW9uTW9kZTo6
UGljdHVyZUluUGljdHVyZTsKKyAgICAgICAgcmV0dXJuIEhUTUxNZWRpYUVsZW1lbnQ6OlZpZGVv
UHJlc2VudGF0aW9uTW9kZTo6UGljdHVyZUluUGljdHVyZTsKIAogICAgIGlmIChtb2RlID09IEhU
TUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpCi0gICAgICAgIHJl
dHVybiBWaWRlb1ByZXNlbnRhdGlvbk1vZGU6OklubGluZTsKKyAgICAgICAgcmV0dXJuIEhUTUxN
ZWRpYUVsZW1lbnQ6OlZpZGVvUHJlc2VudGF0aW9uTW9kZTo6SW5saW5lOwogCiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFZpZGVvUHJlc2VudGF0aW9uTW9kZTo6SW5saW5l
OworICAgIHJldHVybiBIVE1MTWVkaWFFbGVtZW50OjpWaWRlb1ByZXNlbnRhdGlvbk1vZGU6Oklu
bGluZTsKIH0KIAogVmlkZW9QcmVzZW50YXRpb25Nb2RlIEhUTUxWaWRlb0VsZW1lbnQ6OndlYmtp
dFByZXNlbnRhdGlvbk1vZGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1l
bnQuaAppbmRleCBmNDkzMTM3ZWE3MzFjMjdjNTAxYWZiYzdkMmQ3OTc1YTQwYjY1OThhLi45YTFk
ZjdiYWJhNDUyNDZkMmM4ZjA3ZWY4NTU2N2FlNWNmZWRlNWRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtMzQsOCArMzQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEhUTUxJbWFnZUxvYWRlcjsKIAotZW51bSBjbGFzcyBWaWRlb1ByZXNlbnRhdGlv
bk1vZGUgeyBGdWxsc2NyZWVuLCBQaWN0dXJlSW5QaWN0dXJlLCBJbmxpbmUgfTsKLQogY2xhc3Mg
SFRNTFZpZGVvRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MTWVkaWFFbGVtZW50IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmPEhUTUxWaWRlb0VsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQmLCBib29sKTsKQEAgLTQzLDcgKzQxLDYgQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIHZpZGVvV2lkdGgoKSBjb25zdDsKICAgICBXRUJDT1JF
X0VYUE9SVCB1bnNpZ25lZCB2aWRlb0hlaWdodCgpIGNvbnN0OwogCi0gICAgLy8gRnVsbHNjcmVl
bgogICAgIHZvaWQgd2Via2l0RW50ZXJGdWxsc2NyZWVuKEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2
b2lkIHdlYmtpdEV4aXRGdWxsc2NyZWVuKCk7CiAgICAgYm9vbCB3ZWJraXRTdXBwb3J0c0Z1bGxz
Y3JlZW4oKTsKQEAgLTYyLDcgKzU5LDYgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUo
TUVESUFfU1RBVElTVElDUykKLSAgICAvLyBTdGF0aXN0aWNzCiAgICAgdW5zaWduZWQgd2Via2l0
RGVjb2RlZEZyYW1lQ291bnQoKSBjb25zdDsKICAgICB1bnNpZ25lZCB3ZWJraXREcm9wcGVkRnJh
bWVDb3VudCgpIGNvbnN0OwogI2VuZGlmCkBAIC04Miw2ICs3OCw3IEBAIHB1YmxpYzoKICAgICBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxl
JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogCiAjaWYgRU5BQkxFKFZJ
REVPX1BSRVNFTlRBVElPTl9NT0RFKQorICAgIGVudW0gY2xhc3MgVmlkZW9QcmVzZW50YXRpb25N
b2RlIHsgRnVsbHNjcmVlbiwgUGljdHVyZUluUGljdHVyZSwgSW5saW5lIH07CiAgICAgYm9vbCB3
ZWJraXRTdXBwb3J0c1ByZXNlbnRhdGlvbk1vZGUoVmlkZW9QcmVzZW50YXRpb25Nb2RlKSBjb25z
dDsKICAgICB2b2lkIHdlYmtpdFNldFByZXNlbnRhdGlvbk1vZGUoVmlkZW9QcmVzZW50YXRpb25N
b2RlKTsKICAgICBWaWRlb1ByZXNlbnRhdGlvbk1vZGUgd2Via2l0UHJlc2VudGF0aW9uTW9kZSgp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5pZGwKaW5kZXggYzNj
N2UxNzRlOWFlMDAyYmY0NWNmMTJlNjU2ODk0M2FhZTEzN2ZiOC4uYjgyODU1ZTRjY2UxZGUyZWVk
YWEwZDk0YTgwMzRkMzgwMzAwNTdlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVmlkZW9FbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0Vs
ZW1lbnQuaWRsCkBAIC0yMyw5ICsyMyw2IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0vLyBG
SVhNRTogVGhpcyBzaG91bGQgYmUgQ29uZGl0aW9uYWw9VklERU9fUFJFU0VOVEFUSU9OX01PREUu
Ci1lbnVtIFZpZGVvUHJlc2VudGF0aW9uTW9kZSB7ICJmdWxsc2NyZWVuIiwgInBpY3R1cmUtaW4t
cGljdHVyZSIsICJpbmxpbmUiIH07Ci0KIFsKICAgICBDb25kaXRpb25hbD1WSURFTywKICAgICBK
U0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCkBAIC02MywzICs2MCw1IEBAIGVudW0gVmlkZW9QcmVz
ZW50YXRpb25Nb2RlIHsgImZ1bGxzY3JlZW4iLCAicGljdHVyZS1pbi1waWN0dXJlIiwgImlubGlu
ZSIgfTsKICAgICBbQ29uZGl0aW9uYWw9VklERU9fUFJFU0VOVEFUSU9OX01PREVdIHZvaWQgd2Vi
a2l0U2V0UHJlc2VudGF0aW9uTW9kZShWaWRlb1ByZXNlbnRhdGlvbk1vZGUgbW9kZSk7CiAjZW5k
aWYKIH07CisKK1tDb25kaXRpb25hbD1WSURFT19QUkVTRU5UQVRJT05fTU9ERV0gZW51bSBWaWRl
b1ByZXNlbnRhdGlvbk1vZGUgeyAiZnVsbHNjcmVlbiIsICJwaWN0dXJlLWluLXBpY3R1cmUiLCAi
aW5saW5lIiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggN2VhN2U0NTQwMzgzYTFhOTQ1NWEwNjY4Yjhi
OGFiMDAxZmZkNTM5Ni4uZjJhZTBhMWYzMmRjNTQ3Zjg0NGFjM2Q1NmFlODA4MTI4YjEzZGFmZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuY3BwCkBAIC03Niw5ICs3Niw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVz
aW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKICNpZiBVU0UoQ0cpCi1jb25zdCBJbWFnZVNtb290
aGluZ1F1YWxpdHkgZGVmYXVsdFNtb290aGluZ1F1YWxpdHkgPSBJbWFnZVNtb290aGluZ1F1YWxp
dHk6OkxvdzsKK2NvbnN0IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6SW1hZ2VTbW9vdGhpbmdR
dWFsaXR5IGRlZmF1bHRTbW9vdGhpbmdRdWFsaXR5ID0gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpJbWFnZVNtb290aGluZ1F1YWxpdHk6OkxvdzsKICNlbHNlCi1jb25zdCBJbWFnZVNtb290aGlu
Z1F1YWxpdHkgZGVmYXVsdFNtb290aGluZ1F1YWxpdHkgPSBJbWFnZVNtb290aGluZ1F1YWxpdHk6
Ok1lZGl1bTsKK2NvbnN0IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6SW1hZ2VTbW9vdGhpbmdR
dWFsaXR5IGRlZmF1bHRTbW9vdGhpbmdRdWFsaXR5ID0gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
OjpJbWFnZVNtb290aGluZ1F1YWxpdHk6Ok1lZGl1bTsKICNlbmRpZgogCiBzdGF0aWMgY29uc3Qg
aW50IGRlZmF1bHRGb250U2l6ZSA9IDEwOwpAQCAtOTMwLDEyICs5MzAsMTIgQEAgc3RhdGljIGJv
b2wgaXNGdWxsQ2FudmFzQ29tcG9zaXRlTW9kZShDb21wb3NpdGVPcGVyYXRvciBvcCkKICAgICBy
ZXR1cm4gb3AgPT0gQ29tcG9zaXRlU291cmNlSW4gfHwgb3AgPT0gQ29tcG9zaXRlU291cmNlT3V0
IHx8IG9wID09IENvbXBvc2l0ZURlc3RpbmF0aW9uSW4gfHwgb3AgPT0gQ29tcG9zaXRlRGVzdGlu
YXRpb25BdG9wOwogfQogCi1zdGF0aWMgV2luZFJ1bGUgdG9XaW5kUnVsZShDYW52YXNXaW5kaW5n
UnVsZSBydWxlKQorc3RhdGljIFdpbmRSdWxlIHRvV2luZFJ1bGUoQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpXaW5kaW5nUnVsZSBydWxlKQogewotICAgIHJldHVybiBydWxlID09IENhbnZhc1dp
bmRpbmdSdWxlOjpOb256ZXJvID8gUlVMRV9OT05aRVJPIDogUlVMRV9FVkVOT0REOworICAgIHJl
dHVybiBydWxlID09IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6V2luZGluZ1J1bGU6Ok5vbnpl
cm8gPyBSVUxFX05PTlpFUk8gOiBSVUxFX0VWRU5PREQ7CiB9CiAKLXZvaWQgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpmaWxsKENhbnZhc1dpbmRpbmdSdWxlIHdpbmRpbmdSdWxlKQordm9pZCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGwoV2luZGluZ1J1bGUgd2luZGluZ1J1bGUpCiB7
CiAgICAgZmlsbEludGVybmFsKG1fcGF0aCwgd2luZGluZ1J1bGUpOwogCkBAIC05NTMsNyArOTUz
LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnN0cm9rZSgpCiAjZW5kaWYKIH0K
IAotdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsaXAoQ2FudmFzV2luZGluZ1J1bGUg
d2luZGluZ1J1bGUpCit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y2xpcChXaW5kaW5n
UnVsZSB3aW5kaW5nUnVsZSkKIHsKICAgICBjbGlwSW50ZXJuYWwobV9wYXRoLCB3aW5kaW5nUnVs
ZSk7CiAKQEAgLTk2Miw3ICs5NjIsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
Y2xpcChDYW52YXNXaW5kaW5nUnVsZSB3aW5kaW5nUnVsZSkKICNlbmRpZgogfQogCi12b2lkIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbChET01QYXRoJiBwYXRoLCBDYW52YXNXaW5kaW5n
UnVsZSB3aW5kaW5nUnVsZSkKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmaWxsKERP
TVBhdGgmIHBhdGgsIFdpbmRpbmdSdWxlIHdpbmRpbmdSdWxlKQogewogICAgIGZpbGxJbnRlcm5h
bChwYXRoLnBhdGgoKSwgd2luZGluZ1J1bGUpOwogfQpAQCAtOTcyLDEyICs5NzIsMTIgQEAgdm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnN0cm9rZShET01QYXRoJiBwYXRoKQogICAgIHN0
cm9rZUludGVybmFsKHBhdGgucGF0aCgpKTsKIH0KIAotdm9pZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OmNsaXAoRE9NUGF0aCYgcGF0aCwgQ2FudmFzV2luZGluZ1J1bGUgd2luZGluZ1J1bGUp
Cit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y2xpcChET01QYXRoJiBwYXRoLCBXaW5k
aW5nUnVsZSB3aW5kaW5nUnVsZSkKIHsKICAgICBjbGlwSW50ZXJuYWwocGF0aC5wYXRoKCksIHdp
bmRpbmdSdWxlKTsKIH0KIAotdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGxJbnRl
cm5hbChjb25zdCBQYXRoJiBwYXRoLCBDYW52YXNXaW5kaW5nUnVsZSB3aW5kaW5nUnVsZSkKK3Zv
aWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmaWxsSW50ZXJuYWwoY29uc3QgUGF0aCYgcGF0
aCwgV2luZGluZ1J1bGUgd2luZGluZ1J1bGUpCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBjID0g
ZHJhd2luZ0NvbnRleHQoKTsKICAgICBpZiAoIWMpCkBAIC0xMDQ0LDcgKzEwNDQsNyBAQCB2b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c3Ryb2tlSW50ZXJuYWwoY29uc3QgUGF0aCYgcGF0
aCkKICAgICB9CiB9CiAKLXZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjbGlwSW50ZXJu
YWwoY29uc3QgUGF0aCYgcGF0aCwgQ2FudmFzV2luZGluZ1J1bGUgd2luZGluZ1J1bGUpCit2b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y2xpcEludGVybmFsKGNvbnN0IFBhdGgmIHBhdGgs
IFdpbmRpbmdSdWxlIHdpbmRpbmdSdWxlKQogewogICAgIEdyYXBoaWNzQ29udGV4dCogYyA9IGRy
YXdpbmdDb250ZXh0KCk7CiAgICAgaWYgKCFjKQpAQCAtMTA3MCw3ICsxMDcwLDcgQEAgaW5saW5l
IHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjplbmRDb21wb3NpdGVMYXllcigpCiAjZW5k
aWYKIH0KIAotYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmlzUG9pbnRJblBhdGgoZmxv
YXQgeCwgZmxvYXQgeSwgQ2FudmFzV2luZGluZ1J1bGUgd2luZGluZ1J1bGUpCitib29sIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6aXNQb2ludEluUGF0aChmbG9hdCB4LCBmbG9hdCB5LCBXaW5k
aW5nUnVsZSB3aW5kaW5nUnVsZSkKIHsKICAgICByZXR1cm4gaXNQb2ludEluUGF0aEludGVybmFs
KG1fcGF0aCwgeCwgeSwgd2luZGluZ1J1bGUpOwogfQpAQCAtMTA4MCw3ICsxMDgwLDcgQEAgYm9v
bCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmlzUG9pbnRJblN0cm9rZShmbG9hdCB4LCBmbG9h
dCB5KQogICAgIHJldHVybiBpc1BvaW50SW5TdHJva2VJbnRlcm5hbChtX3BhdGgsIHgsIHkpOwog
fQogCi1ib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6aXNQb2ludEluUGF0aChET01QYXRo
JiBwYXRoLCBmbG9hdCB4LCBmbG9hdCB5LCBDYW52YXNXaW5kaW5nUnVsZSB3aW5kaW5nUnVsZSkK
K2Jvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjppc1BvaW50SW5QYXRoKERPTVBhdGgmIHBh
dGgsIGZsb2F0IHgsIGZsb2F0IHksIFdpbmRpbmdSdWxlIHdpbmRpbmdSdWxlKQogewogICAgIHJl
dHVybiBpc1BvaW50SW5QYXRoSW50ZXJuYWwocGF0aC5wYXRoKCksIHgsIHksIHdpbmRpbmdSdWxl
KTsKIH0KQEAgLTEwOTAsNyArMTA5MCw3IEBAIGJvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
Ojppc1BvaW50SW5TdHJva2UoRE9NUGF0aCYgcGF0aCwgZmxvYXQgeCwgZmxvYXQgeSkKICAgICBy
ZXR1cm4gaXNQb2ludEluU3Ryb2tlSW50ZXJuYWwocGF0aC5wYXRoKCksIHgsIHkpOwogfQogCi1i
b29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6aXNQb2ludEluUGF0aEludGVybmFsKGNvbnN0
IFBhdGgmIHBhdGgsIGZsb2F0IHgsIGZsb2F0IHksIENhbnZhc1dpbmRpbmdSdWxlIHdpbmRpbmdS
dWxlKQorYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmlzUG9pbnRJblBhdGhJbnRlcm5h
bChjb25zdCBQYXRoJiBwYXRoLCBmbG9hdCB4LCBmbG9hdCB5LCBXaW5kaW5nUnVsZSB3aW5kaW5n
UnVsZSkKIHsKICAgICBHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpOwogICAg
IGlmICghYykKQEAgLTI1MzcsMTQgKzI1MzcsMTQgQEAgUGxhdGZvcm1MYXllciogQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKIH0KICNlbmRpZgogCi1zdGF0
aWMgSW50ZXJwb2xhdGlvblF1YWxpdHkgc21vb3RoaW5nVG9JbnRlcnBvbGF0aW9uUXVhbGl0eShJ
bWFnZVNtb290aGluZ1F1YWxpdHkgcXVhbGl0eSkKK3N0YXRpYyBJbnRlcnBvbGF0aW9uUXVhbGl0
eSBzbW9vdGhpbmdUb0ludGVycG9sYXRpb25RdWFsaXR5KENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6SW1hZ2VTbW9vdGhpbmdRdWFsaXR5IHF1YWxpdHkpCiB7CiAgICAgc3dpdGNoIChxdWFsaXR5
KSB7Ci0gICAgY2FzZSBJbWFnZVNtb290aGluZ1F1YWxpdHk6OkxvdzoKKyAgICBjYXNlIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6SW1hZ2VTbW9vdGhpbmdRdWFsaXR5OjpMb3c6CiAgICAgICAg
IHJldHVybiBJbnRlcnBvbGF0aW9uTG93OwotICAgIGNhc2UgSW1hZ2VTbW9vdGhpbmdRdWFsaXR5
OjpNZWRpdW06CisgICAgY2FzZSBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OkltYWdlU21vb3Ro
aW5nUXVhbGl0eTo6TWVkaXVtOgogICAgICAgICByZXR1cm4gSW50ZXJwb2xhdGlvbk1lZGl1bTsK
LSAgICBjYXNlIEltYWdlU21vb3RoaW5nUXVhbGl0eTo6SGlnaDoKKyAgICBjYXNlIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6SW1hZ2VTbW9vdGhpbmdRdWFsaXR5OjpIaWdoOgogICAgICAgICBy
ZXR1cm4gSW50ZXJwb2xhdGlvbkhpZ2g7CiAgICAgfQogCkBAIC0yNTUyLDcgKzI1NTIsNyBAQCBz
dGF0aWMgSW50ZXJwb2xhdGlvblF1YWxpdHkgc21vb3RoaW5nVG9JbnRlcnBvbGF0aW9uUXVhbGl0
eShJbWFnZVNtb290aGluZ1F1YWxpdAogICAgIHJldHVybiBJbnRlcnBvbGF0aW9uTG93OwogfTsK
IAotSW1hZ2VTbW9vdGhpbmdRdWFsaXR5IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6aW1hZ2VT
bW9vdGhpbmdRdWFsaXR5KCkgY29uc3QKK2F1dG8gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpp
bWFnZVNtb290aGluZ1F1YWxpdHkoKSBjb25zdCAtPiBJbWFnZVNtb290aGluZ1F1YWxpdHkKIHsK
ICAgICByZXR1cm4gc3RhdGUoKS5pbWFnZVNtb290aGluZ1F1YWxpdHk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCmlu
ZGV4IGJjMDYyYWVlZWQyMzYyMDg4ODVmMGQ5OWZiYWVkYjkzMzg4MmE5OTUuLjkxYmQ4NTY5ZTMy
MjIzNjFjYzYyZGQxNDVhM2VkMjM2ZDQyODQ0NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCkBAIC01Nyw5ICs1Nyw2
IEBAIGNsYXNzIFRleHRNZXRyaWNzOwogCiB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCi1l
bnVtIGNsYXNzIENhbnZhc1dpbmRpbmdSdWxlIHsgTm9uemVybywgRXZlbm9kZCB9OwotZW51bSBj
bGFzcyBJbWFnZVNtb290aGluZ1F1YWxpdHkgeyBMb3csIE1lZGl1bSwgSGlnaCB9OwotCiBjbGFz
cyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgZmluYWwgOiBwdWJsaWMgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dCwgcHVibGljIENhbnZhc1BhdGhNZXRob2RzIHsKIHB1YmxpYzoKICAgICBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQoSFRNTENhbnZhc0VsZW1lbnQqLCBib29sIHVzZXNDU1NDb21wYXRp
YmlsaXR5UGFyc2VNb2RlLCBib29sIHVzZXNEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZSk7CkBA
IC0xMzEsMTggKzEyOCwyMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGJlZ2luUGF0aCgpOwogCi0g
ICAgdm9pZCBmaWxsKENhbnZhc1dpbmRpbmdSdWxlID0gQ2FudmFzV2luZGluZ1J1bGU6Ok5vbnpl
cm8pOworICAgIGVudW0gY2xhc3MgV2luZGluZ1J1bGUgeyBOb256ZXJvLCBFdmVub2RkIH07CisK
KyAgICB2b2lkIGZpbGwoV2luZGluZ1J1bGUgPSBXaW5kaW5nUnVsZTo6Tm9uemVybyk7CiAgICAg
dm9pZCBzdHJva2UoKTsKLSAgICB2b2lkIGNsaXAoQ2FudmFzV2luZGluZ1J1bGUgPSBDYW52YXNX
aW5kaW5nUnVsZTo6Tm9uemVybyk7CisgICAgdm9pZCBjbGlwKFdpbmRpbmdSdWxlID0gV2luZGlu
Z1J1bGU6Ok5vbnplcm8pOwogCi0gICAgdm9pZCBmaWxsKERPTVBhdGgmLCBDYW52YXNXaW5kaW5n
UnVsZSA9IENhbnZhc1dpbmRpbmdSdWxlOjpOb256ZXJvKTsKKyAgICB2b2lkIGZpbGwoRE9NUGF0
aCYsIFdpbmRpbmdSdWxlID0gV2luZGluZ1J1bGU6Ok5vbnplcm8pOwogICAgIHZvaWQgc3Ryb2tl
KERPTVBhdGgmKTsKLSAgICB2b2lkIGNsaXAoRE9NUGF0aCYsIENhbnZhc1dpbmRpbmdSdWxlID0g
Q2FudmFzV2luZGluZ1J1bGU6Ok5vbnplcm8pOworICAgIHZvaWQgY2xpcChET01QYXRoJiwgV2lu
ZGluZ1J1bGUgPSBXaW5kaW5nUnVsZTo6Tm9uemVybyk7CiAKLSAgICBib29sIGlzUG9pbnRJblBh
dGgoZmxvYXQgeCwgZmxvYXQgeSwgQ2FudmFzV2luZGluZ1J1bGUgPSBDYW52YXNXaW5kaW5nUnVs
ZTo6Tm9uemVybyk7CisgICAgYm9vbCBpc1BvaW50SW5QYXRoKGZsb2F0IHgsIGZsb2F0IHksIFdp
bmRpbmdSdWxlID0gV2luZGluZ1J1bGU6Ok5vbnplcm8pOwogICAgIGJvb2wgaXNQb2ludEluU3Ry
b2tlKGZsb2F0IHgsIGZsb2F0IHkpOwogCi0gICAgYm9vbCBpc1BvaW50SW5QYXRoKERPTVBhdGgm
LCBmbG9hdCB4LCBmbG9hdCB5LCBDYW52YXNXaW5kaW5nUnVsZSA9IENhbnZhc1dpbmRpbmdSdWxl
OjpOb256ZXJvKTsKKyAgICBib29sIGlzUG9pbnRJblBhdGgoRE9NUGF0aCYsIGZsb2F0IHgsIGZs
b2F0IHksIFdpbmRpbmdSdWxlID0gV2luZGluZ1J1bGU6Ok5vbnplcm8pOwogICAgIGJvb2wgaXNQ
b2ludEluU3Ryb2tlKERPTVBhdGgmLCBmbG9hdCB4LCBmbG9hdCB5KTsKIAogICAgIHZvaWQgY2xl
YXJSZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpOwpAQCAt
MjIyLDYgKzIyMSw3IEBAIHB1YmxpYzoKICAgICBib29sIGltYWdlU21vb3RoaW5nRW5hYmxlZCgp
IGNvbnN0OwogICAgIHZvaWQgc2V0SW1hZ2VTbW9vdGhpbmdFbmFibGVkKGJvb2wpOwogCisgICAg
ZW51bSBjbGFzcyBJbWFnZVNtb290aGluZ1F1YWxpdHkgeyBMb3csIE1lZGl1bSwgSGlnaCB9Owog
ICAgIEltYWdlU21vb3RoaW5nUXVhbGl0eSBpbWFnZVNtb290aGluZ1F1YWxpdHkoKSBjb25zdDsK
ICAgICB2b2lkIHNldEltYWdlU21vb3RoaW5nUXVhbGl0eShJbWFnZVNtb290aGluZ1F1YWxpdHkp
OwogCkBAIC0zNDUsMTEgKzM0NSwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgYmVnaW5Db21wb3Np
dGVMYXllcigpOwogICAgIHZvaWQgZW5kQ29tcG9zaXRlTGF5ZXIoKTsKIAotICAgIHZvaWQgZmls
bEludGVybmFsKGNvbnN0IFBhdGgmLCBDYW52YXNXaW5kaW5nUnVsZSk7CisgICAgdm9pZCBmaWxs
SW50ZXJuYWwoY29uc3QgUGF0aCYsIFdpbmRpbmdSdWxlKTsKICAgICB2b2lkIHN0cm9rZUludGVy
bmFsKGNvbnN0IFBhdGgmKTsKLSAgICB2b2lkIGNsaXBJbnRlcm5hbChjb25zdCBQYXRoJiwgQ2Fu
dmFzV2luZGluZ1J1bGUpOworICAgIHZvaWQgY2xpcEludGVybmFsKGNvbnN0IFBhdGgmLCBXaW5k
aW5nUnVsZSk7CiAKLSAgICBib29sIGlzUG9pbnRJblBhdGhJbnRlcm5hbChjb25zdCBQYXRoJiwg
ZmxvYXQgeCwgZmxvYXQgeSwgQ2FudmFzV2luZGluZ1J1bGUpOworICAgIGJvb2wgaXNQb2ludElu
UGF0aEludGVybmFsKGNvbnN0IFBhdGgmLCBmbG9hdCB4LCBmbG9hdCB5LCBXaW5kaW5nUnVsZSk7
CiAgICAgYm9vbCBpc1BvaW50SW5TdHJva2VJbnRlcm5hbChjb25zdCBQYXRoJiwgZmxvYXQgeCwg
ZmxvYXQgeSk7CiAKICAgICB2b2lkIGRyYXdGb2N1c0lmTmVlZGVkSW50ZXJuYWwoY29uc3QgUGF0
aCYsIEVsZW1lbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbEVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlh
Q29udHJvbEVsZW1lbnRzLmNwcAppbmRleCBkOWMxZjlkY2UxYzE4NzQ0ZGJiZGYzYzhjZjk3NTZh
YjMxN2FlZTA0Li5kYzQzZTJjNDMwOWU5MjI4ZjQ3OWQ5YWI1MTcxMWI0NjIxNTI4YzE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMu
Y3BwCkBAIC03NjUsNyArNzY1LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1Ry
YWNrTGlzdEVsZW1lbnQ6OnVwZGF0ZURpc3BsYXkoKQogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIH0KIAotICAgICAgICBpZiAoZGlzcGxheU1vZGUgIT0gQ2FwdGlvblVzZXJQcmVmZXJl
bmNlczo6QXV0b21hdGljICYmIHRleHRUcmFjay0+bW9kZSgpID09IFRleHRUcmFja01vZGU6OlNo
b3dpbmcpIHsKKyAgICAgICAgaWYgKGRpc3BsYXlNb2RlICE9IENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXM6OkF1dG9tYXRpYyAmJiB0ZXh0VHJhY2stPm1vZGUoKSA9PSBUZXh0VHJhY2s6Ok1vZGU6OlNo
b3dpbmcpIHsKICAgICAgICAgICAgIHRyYWNrTWVudUl0ZW1TZWxlY3RlZCA9IHRydWU7CiAgICAg
ICAgICAgICB0cmFja0l0ZW0tPmNsYXNzTGlzdCgpLmFkZChzZWxlY3RlZENsYXNzVmFsdWUsIEFT
U0VSVF9OT19FWENFUFRJT04pOwogICAgICAgICB9IGVsc2UKQEAgLTExNzMsNyArMTE3Myw3IEBA
IHZvaWQgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6dXBkYXRlRGlzcGxh
eSgpCiAgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVs
ZW1lbnQ6OnVwZGF0ZURpc3BsYXkoJXApIC0gYWRkaW5nIGFuZCBwb3NpdGlvbmluZyBjdWUgIyV6
dTogXCIlc1wiLCBzdGFydD0lLjJmLCBlbmQ9JS4yZiwgbGluZT0lLjJmIiwgdGhpcywgaSwgY3Vl
LT50ZXh0KCkudXRmOCgpLmRhdGEoKSwgY3VlLT5zdGFydFRpbWUoKSwgY3VlLT5lbmRUaW1lKCks
IGN1ZS0+bGluZSgpKTsKIAogICAgICAgICBSZWZQdHI8VlRUQ3VlQm94PiBkaXNwbGF5Qm94ID0g
Y3VlLT5nZXREaXNwbGF5VHJlZShtX3ZpZGVvRGlzcGxheVNpemUuc2l6ZSgpLCBtX2ZvbnRTaXpl
KTsKLSAgICAgICAgaWYgKGN1ZS0+dHJhY2soKS0+bW9kZSgpID09IFRleHRUcmFja01vZGU6OkRp
c2FibGVkKQorICAgICAgICBpZiAoY3VlLT50cmFjaygpLT5tb2RlKCkgPT0gVGV4dFRyYWNrOjpN
b2RlOjpEaXNhYmxlZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIFZUVFJlZ2lv
biogcmVnaW9uID0gY3VlLT50cmFjaygpLT5yZWdpb25zKCktPmdldFJlZ2lvbkJ5SWQoY3VlLT5y
ZWdpb25JZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5k
VGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNr
LmNwcAppbmRleCAzYzEwYTQ0ZGQ3MjQ0ZTQ4ZTdmY2ZmM2IwMzM5ZTk1ZDZlMmI2ODExLi5mMDYy
ODYyYjQ1Y2Q5NDA2ODkwZmU3ZDUwMTRlZjIzN2RmZjEzODUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwCkBAIC04OSwyNyArODksMjcgQEAgdm9p
ZCBJbmJhbmRUZXh0VHJhY2s6OnNldFByaXZhdGUoUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlPiB0cmFja1ByaXZhdGUKICAgICB1cGRhdGVLaW5kRnJvbVByaXZhdGUoKTsKIH0KIAot
dm9pZCBJbmJhbmRUZXh0VHJhY2s6OnNldE1vZGUoVGV4dFRyYWNrTW9kZSBtb2RlKQordm9pZCBJ
bmJhbmRUZXh0VHJhY2s6OnNldE1vZGUoTW9kZSBtb2RlKQogewogICAgIFRleHRUcmFjazo6c2V0
TW9kZShtb2RlKTsKICAgICBzZXRNb2RlSW50ZXJuYWwobW9kZSk7CiB9CiAKLXN0YXRpYyBpbmxp
bmUgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6TW9kZSB0b1ByaXZhdGUoVGV4dFRyYWNrTW9kZSBt
b2RlKQorc3RhdGljIGlubGluZSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpNb2RlIHRvUHJpdmF0
ZShUZXh0VHJhY2s6Ok1vZGUgbW9kZSkKIHsKICAgICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNl
IFRleHRUcmFja01vZGU6OkRpc2FibGVkOgorICAgIGNhc2UgVGV4dFRyYWNrOjpNb2RlOjpEaXNh
YmxlZDoKICAgICAgICAgcmV0dXJuIEluYmFuZFRleHRUcmFja1ByaXZhdGU6OkRpc2FibGVkOwot
ICAgIGNhc2UgVGV4dFRyYWNrTW9kZTo6SGlkZGVuOgorICAgIGNhc2UgVGV4dFRyYWNrOjpNb2Rl
OjpIaWRkZW46CiAgICAgICAgIHJldHVybiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpIaWRkZW47
Ci0gICAgY2FzZSBUZXh0VHJhY2tNb2RlOjpTaG93aW5nOgorICAgIGNhc2UgVGV4dFRyYWNrOjpN
b2RlOjpTaG93aW5nOgogICAgICAgICByZXR1cm4gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6U2hv
d2luZzsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEluYmFu
ZFRleHRUcmFja1ByaXZhdGU6OkRpc2FibGVkOwogfQogCi12b2lkIEluYmFuZFRleHRUcmFjazo6
c2V0TW9kZUludGVybmFsKFRleHRUcmFja01vZGUgbW9kZSkKK3ZvaWQgSW5iYW5kVGV4dFRyYWNr
OjpzZXRNb2RlSW50ZXJuYWwoTW9kZSBtb2RlKQogewogICAgIG1fcHJpdmF0ZS0+c2V0TW9kZSh0
b1ByaXZhdGUobW9kZSkpOwogfQpAQCAtMTk2LDIyICsxOTYsMjIgQEAgdm9pZCBJbmJhbmRUZXh0
VHJhY2s6OnVwZGF0ZUtpbmRGcm9tUHJpdmF0ZSgpCiB7CiAgICAgc3dpdGNoIChtX3ByaXZhdGUt
PmtpbmQoKSkgewogICAgIGNhc2UgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6U3VidGl0bGVzOgot
ICAgICAgICBzZXRLaW5kKFRleHRUcmFja0tpbmQ6OlN1YnRpdGxlcyk7CisgICAgICAgIHNldEtp
bmQoS2luZDo6U3VidGl0bGVzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbmJhbmRUZXh0
VHJhY2tQcml2YXRlOjpDYXB0aW9uczoKLSAgICAgICAgc2V0S2luZChUZXh0VHJhY2tLaW5kOjpD
YXB0aW9ucyk7CisgICAgICAgIHNldEtpbmQoS2luZDo6Q2FwdGlvbnMpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEluYmFuZFRleHRUcmFja1ByaXZhdGU6OkRlc2NyaXB0aW9uczoKLSAgICAg
ICAgc2V0S2luZChUZXh0VHJhY2tLaW5kOjpEZXNjcmlwdGlvbnMpOworICAgICAgICBzZXRLaW5k
KEtpbmQ6OkRlc2NyaXB0aW9ucyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZTo6Q2hhcHRlcnM6Ci0gICAgICAgIHNldEtpbmQoVGV4dFRyYWNrS2luZDo6
Q2hhcHRlcnMpOworICAgICAgICBzZXRLaW5kKEtpbmQ6OkNoYXB0ZXJzKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpNZXRhZGF0YToKLSAgICAgICAg
c2V0S2luZChUZXh0VHJhY2tLaW5kOjpNZXRhZGF0YSk7CisgICAgICAgIHNldEtpbmQoS2luZDo6
TWV0YWRhdGEpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEluYmFuZFRleHRUcmFja1ByaXZh
dGU6OkZvcmNlZDoKLSAgICAgICAgc2V0S2luZChUZXh0VHJhY2tLaW5kOjpGb3JjZWQpOworICAg
ICAgICBzZXRLaW5kKEtpbmQ6OkZvcmNlZCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZTo6Tm9uZToKICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmgKaW5kZXggYTNhYTAxMDE2MTViNjY4OWM3OTU1
ZGI2YjU4Yzc2NDMxNWU2YjYyYi4uZTVmOGQyYjZkMWJmZDg1NjNhYWYzNjNmOWZhZWMxZWU4ODM5
Nzk4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJh
Y2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5oCkBA
IC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGNvbnRhaW5zT25seUZvcmNlZFN1YnRp
dGxlcygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNNYWluUHJvZ3JhbUNvbnRlbnQoKSBj
b25zdCBvdmVycmlkZTsKICAgICBib29sIGlzRWFzeVRvUmVhZCgpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIHZvaWQgc2V0TW9kZShUZXh0VHJhY2tNb2RlKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldE1v
ZGUoTW9kZSkgb3ZlcnJpZGU7CiAgICAgc2l6ZV90IGluYmFuZFRyYWNrSW5kZXgoKTsKIAogICAg
IEF0b21pY1N0cmluZyBpbkJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlKCkgY29uc3Qgb3Zl
cnJpZGU7CkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBJbmJhbmRU
ZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFRleHRUcmFja0NsaWVudCosIFBhc3NS
ZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4pOwogCi0gICAgdm9pZCBzZXRNb2RlSW50ZXJu
YWwoVGV4dFRyYWNrTW9kZSk7CisgICAgdm9pZCBzZXRNb2RlSW50ZXJuYWwoTW9kZSk7CiAgICAg
dm9pZCB1cGRhdGVLaW5kRnJvbVByaXZhdGUoKTsKIAogICAgIFJlZlB0cjxJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlPiBtX3ByaXZhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5j
cHAKaW5kZXggYTdkODFiZTcxN2RjMTVmYmZhODk2YmU2NTYzYWFiYmY0NzYwNjA5ZC4uMzE4ODc4
MWRiZjVmNDk1MDIxNzQ0YTA0MzhiYzdhN2IyMzkzMGNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVGV4dFRyYWNrLmNwcApAQCAtMTA0LDE1ICsxMDQsMTUgQEAgVGV4dFRyYWNrOjpUZXh0
VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVGV4dFRyYWNrQ2xpZW50KiBj
bGllbnQsIGMKICAgICAsIG1fcmVuZGVyZWRUcmFja0luZGV4KGludmFsaWRUcmFja0luZGV4KQog
ewogICAgIGlmIChraW5kID09IGNhcHRpb25zS2V5d29yZCgpKQotICAgICAgICBtX2tpbmQgPSBU
ZXh0VHJhY2tLaW5kOjpDYXB0aW9uczsKKyAgICAgICAgbV9raW5kID0gS2luZDo6Q2FwdGlvbnM7
CiAgICAgZWxzZSBpZiAoa2luZCA9PSBjaGFwdGVyc0tleXdvcmQoKSkKLSAgICAgICAgbV9raW5k
ID0gVGV4dFRyYWNrS2luZDo6Q2hhcHRlcnM7CisgICAgICAgIG1fa2luZCA9IEtpbmQ6OkNoYXB0
ZXJzOwogICAgIGVsc2UgaWYgKGtpbmQgPT0gZGVzY3JpcHRpb25zS2V5d29yZCgpKQotICAgICAg
ICBtX2tpbmQgPSBUZXh0VHJhY2tLaW5kOjpEZXNjcmlwdGlvbnM7CisgICAgICAgIG1fa2luZCA9
IEtpbmQ6OkRlc2NyaXB0aW9uczsKICAgICBlbHNlIGlmIChraW5kID09IGZvcmNlZEtleXdvcmQo
KSkKLSAgICAgICAgbV9raW5kID0gVGV4dFRyYWNrS2luZDo6Rm9yY2VkOworICAgICAgICBtX2tp
bmQgPSBLaW5kOjpGb3JjZWQ7CiAgICAgZWxzZSBpZiAoa2luZCA9PSBtZXRhZGF0YUtleXdvcmQo
KSkKLSAgICAgICAgbV9raW5kID0gVGV4dFRyYWNrS2luZDo6TWV0YWRhdGE7CisgICAgICAgIG1f
a2luZCA9IEtpbmQ6Ok1ldGFkYXRhOwogfQogCiBUZXh0VHJhY2s6On5UZXh0VHJhY2soKQpAQCAt
MTMyLDcgKzEzMiw3IEBAIFRleHRUcmFjazo6flRleHRUcmFjaygpCiAKIGJvb2wgVGV4dFRyYWNr
OjplbmFibGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9tb2RlICE9IFRleHRUcmFja01vZGU6
OkRpc2FibGVkOworICAgIHJldHVybiBtX21vZGUgIT0gTW9kZTo6RGlzYWJsZWQ7CiB9CiAKIGJv
b2wgVGV4dFRyYWNrOjppc1ZhbGlkS2luZEtleXdvcmQoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1
ZSkKQEAgLTE1NiwyNCArMTU2LDI0IEBAIGJvb2wgVGV4dFRyYWNrOjppc1ZhbGlkS2luZEtleXdv
cmQoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIGNvbnN0IEF0b21pY1N0cmluZyYgVGV4dFRy
YWNrOjpraW5kS2V5d29yZCgpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChtX2tpbmQpIHsKLSAgICBj
YXNlIFRleHRUcmFja0tpbmQ6OkNhcHRpb25zOgorICAgIGNhc2UgS2luZDo6Q2FwdGlvbnM6CiAg
ICAgICAgIHJldHVybiBjYXB0aW9uc0tleXdvcmQoKTsKLSAgICBjYXNlIFRleHRUcmFja0tpbmQ6
OkNoYXB0ZXJzOgorICAgIGNhc2UgS2luZDo6Q2hhcHRlcnM6CiAgICAgICAgIHJldHVybiBjaGFw
dGVyc0tleXdvcmQoKTsKLSAgICBjYXNlIFRleHRUcmFja0tpbmQ6OkRlc2NyaXB0aW9uczoKKyAg
ICBjYXNlIEtpbmQ6OkRlc2NyaXB0aW9uczoKICAgICAgICAgcmV0dXJuIGRlc2NyaXB0aW9uc0tl
eXdvcmQoKTsKLSAgICBjYXNlIFRleHRUcmFja0tpbmQ6OkZvcmNlZDoKKyAgICBjYXNlIEtpbmQ6
OkZvcmNlZDoKICAgICAgICAgcmV0dXJuIGZvcmNlZEtleXdvcmQoKTsKLSAgICBjYXNlIFRleHRU
cmFja0tpbmQ6Ok1ldGFkYXRhOgorICAgIGNhc2UgS2luZDo6TWV0YWRhdGE6CiAgICAgICAgIHJl
dHVybiBtZXRhZGF0YUtleXdvcmQoKTsKLSAgICBjYXNlIFRleHRUcmFja0tpbmQ6OlN1YnRpdGxl
czoKKyAgICBjYXNlIEtpbmQ6OlN1YnRpdGxlczoKICAgICAgICAgcmV0dXJuIHN1YnRpdGxlc0tl
eXdvcmQoKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIHN1
YnRpdGxlc0tleXdvcmQoKTsKIH0KIAotdm9pZCBUZXh0VHJhY2s6OnNldEtpbmQoVGV4dFRyYWNr
S2luZCBuZXdLaW5kKQordm9pZCBUZXh0VHJhY2s6OnNldEtpbmQoS2luZCBuZXdLaW5kKQogewog
ICAgIGF1dG8gb2xkS2luZCA9IG1fa2luZDsKIApAQCAtMjAzLDI4ICsyMDMsMjggQEAgdm9pZCBU
ZXh0VHJhY2s6OnNldEtpbmQoVGV4dFRyYWNrS2luZCBuZXdLaW5kKQogdm9pZCBUZXh0VHJhY2s6
OnNldEtpbmRLZXl3b3JkSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyBrZXl3b3JkKQogewog
ICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShrZXl3b3JkLCAiY2FwdGlvbnMi
KSkKLSAgICAgICAgc2V0S2luZChUZXh0VHJhY2tLaW5kOjpDYXB0aW9ucyk7CisgICAgICAgIHNl
dEtpbmQoS2luZDo6Q2FwdGlvbnMpOwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKGtleXdvcmQsICJjaGFwdGVycyIpKQotICAgICAgICBzZXRLaW5kKFRleHRUcmFj
a0tpbmQ6OkNoYXB0ZXJzKTsKKyAgICAgICAgc2V0S2luZChLaW5kOjpDaGFwdGVycyk7CiAgICAg
ZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoa2V5d29yZCwgImRlc2NyaXB0
aW9ucyIpKQotICAgICAgICBzZXRLaW5kKFRleHRUcmFja0tpbmQ6OkRlc2NyaXB0aW9ucyk7Cisg
ICAgICAgIHNldEtpbmQoS2luZDo6RGVzY3JpcHRpb25zKTsKICAgICBlbHNlIGlmIChlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShrZXl3b3JkLCAiZm9yY2VkIikpCi0gICAgICAgIHNldEtp
bmQoVGV4dFRyYWNrS2luZDo6Rm9yY2VkKTsKKyAgICAgICAgc2V0S2luZChLaW5kOjpGb3JjZWQp
OwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGtleXdvcmQsICJt
ZXRhZGF0YSIpKQotICAgICAgICBzZXRLaW5kKFRleHRUcmFja0tpbmQ6Ok1ldGFkYXRhKTsKKyAg
ICAgICAgc2V0S2luZChLaW5kOjpNZXRhZGF0YSk7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2Uoa2V5d29yZCwgInN1YnRpdGxlcyIpKQotICAgICAgICBzZXRLaW5k
KFRleHRUcmFja0tpbmQ6OlN1YnRpdGxlcyk7CisgICAgICAgIHNldEtpbmQoS2luZDo6U3VidGl0
bGVzKTsKICNpZiAhRU5BQkxFKE1FRElBX1NPVVJDRSkKICAgICAvLyBGSVhNRTogVGhpcyBwcmVz
ZXJ2ZXMgdGhlIGJlaGF2aW9yIG9mIGFuIG9sZGVyIHZlcnNpb24gb2YgdGhpcyBjb2RlIGJlZm9y
ZSByZWZhY3RvcmluZy4KICAgICAvLyAhRU5BQkxFKE1FRElBX1NPVVJDRSk6IHVua25vd24ga2V5
d29yZHMgYWxsIGdldCB0dXJuZWQgaW50byBTdWJ0aXRsZXMuCiAgICAgLy8gRU5BQkxFKE1FRElB
X1NPVVJDRSk6IHVua25vd24ga2V5d29yZHMgbGVhdmUgdGhlIG9sZCB2YWx1ZSBmb3Iga2luZCB1
bnRvdWNoZWQuCiAgICAgLy8gSSBhbSBub3Qgc3VyZSB0aGF0IGVpdGhlciBvZiB0aG9zZSBpcyB0
aGUgY29ycmVjdCBiZWhhdmlvcjsgc2hvdWxkIHRlc3QgYW5kIGZpeC4KICAgICBlbHNlCi0gICAg
ICAgIHNldEtpbmQoVGV4dFRyYWNrS2luZDo6U3VidGl0bGVzKTsKKyAgICAgICAgc2V0S2luZChL
aW5kOjpTdWJ0aXRsZXMpOwogI2VuZGlmCiB9CiAKLXZvaWQgVGV4dFRyYWNrOjpzZXRNb2RlKFRl
eHRUcmFja01vZGUgbW9kZSkKK3ZvaWQgVGV4dFRyYWNrOjpzZXRNb2RlKE1vZGUgbW9kZSkKIHsK
ICAgICAvLyBPbiBzZXR0aW5nLCBpZiB0aGUgbmV3IHZhbHVlIGlzbid0IGVxdWFsIHRvIHdoYXQg
dGhlIGF0dHJpYnV0ZSB3b3VsZCBjdXJyZW50bHkKICAgICAvLyByZXR1cm4sIHRoZSBuZXcgdmFs
dWUgbXVzdCBiZSBwcm9jZXNzZWQgYXMgZm9sbG93cyAuLi4KQEAgLTIzMywxMCArMjMzLDEwIEBA
IHZvaWQgVGV4dFRyYWNrOjpzZXRNb2RlKFRleHRUcmFja01vZGUgbW9kZSkKIAogICAgIC8vIElm
IG1vZGUgY2hhbmdlcyB0byBkaXNhYmxlZCwgcmVtb3ZlIHRoaXMgdHJhY2sncyBjdWVzIGZyb20g
dGhlIGNsaWVudAogICAgIC8vIGJlY2F1c2UgdGhleSB3aWxsIG5vIGxvbmdlciBiZSBhY2Nlc3Np
YmxlIGZyb20gdGhlIGN1ZXMoKSBmdW5jdGlvbi4KLSAgICBpZiAobW9kZSA9PSBUZXh0VHJhY2tN
b2RlOjpEaXNhYmxlZCAmJiBtX2NsaWVudCAmJiBtX2N1ZXMpCisgICAgaWYgKG1vZGUgPT0gTW9k
ZTo6RGlzYWJsZWQgJiYgbV9jbGllbnQgJiYgbV9jdWVzKQogICAgICAgICBtX2NsaWVudC0+dGV4
dFRyYWNrUmVtb3ZlQ3Vlcyh0aGlzLCBtX2N1ZXMuZ2V0KCkpOwogCi0gICAgaWYgKG1vZGUgIT0g
VGV4dFRyYWNrTW9kZTo6U2hvd2luZyAmJiBtX2N1ZXMpIHsKKyAgICBpZiAobW9kZSAhPSBNb2Rl
OjpTaG93aW5nICYmIG1fY3VlcykgewogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1f
Y3Vlcy0+bGVuZ3RoKCk7ICsraSkgewogICAgICAgICAgICAgVGV4dFRyYWNrQ3VlKiBjdWUgPSBt
X2N1ZXMtPml0ZW0oaSk7CiAgICAgICAgICAgICBpZiAoY3VlLT5pc1JlbmRlcmFibGUoKSkKQEAg
LTI1Nyw3ICsyNTcsNyBAQCBUZXh0VHJhY2tDdWVMaXN0KiBUZXh0VHJhY2s6OmN1ZXMoKQogICAg
IC8vIE90aGVyd2lzZSwgaXQgbXVzdCByZXR1cm4gbnVsbC4gV2hlbiBhbiBvYmplY3QgaXMgcmV0
dXJuZWQsIHRoZQogICAgIC8vIHNhbWUgb2JqZWN0IG11c3QgYmUgcmV0dXJuZWQgZWFjaCB0aW1l
LgogICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdv
cmsvI2RvbS10ZXh0dHJhY2stY3VlcwotICAgIGlmIChtX21vZGUgPT0gVGV4dFRyYWNrTW9kZTo6
RGlzYWJsZWQpCisgICAgaWYgKG1fbW9kZSA9PSBNb2RlOjpEaXNhYmxlZCkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuICZlbnN1cmVUZXh0VHJhY2tDdWVMaXN0KCk7CiB9CkBA
IC0yODQsNyArMjg0LDcgQEAgVGV4dFRyYWNrQ3VlTGlzdCogVGV4dFRyYWNrOjphY3RpdmVDdWVz
KCkgY29uc3QKICAgICAvLyBvcmRlci4gT3RoZXJ3aXNlLCBpdCBtdXN0IHJldHVybiBudWxsLiBX
aGVuIGFuIG9iamVjdCBpcyByZXR1cm5lZCwgdGhlCiAgICAgLy8gc2FtZSBvYmplY3QgbXVzdCBi
ZSByZXR1cm5lZCBlYWNoIHRpbWUuCiAgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNz
L3dlYi1hcHBzL2N1cnJlbnQtd29yay8jZG9tLXRleHR0cmFjay1hY3RpdmVjdWVzCi0gICAgaWYg
KCFtX2N1ZXMgfHwgbV9tb2RlID09IFRleHRUcmFja01vZGU6OkRpc2FibGVkKQorICAgIGlmICgh
bV9jdWVzIHx8IG1fbW9kZSA9PSBNb2RlOjpEaXNhYmxlZCkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgcmV0dXJuIG1fY3Vlcy0+YWN0aXZlQ3VlcygpOwogfQpAQCAtMzAyLDcgKzMwMiw3
IEBAIHZvaWQgVGV4dFRyYWNrOjphZGRDdWUoUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+IHBycEN1
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgLy8gSWYgYSBEYXRhQ3VlIGlzIGFkZGVkIHRvIGEg
VGV4dFRyYWNrIHZpYSB0aGUgYWRkQ3VlKCkgbWV0aG9kIGJ1dCB0aGUgdGV4dCB0cmFjayBkb2Vz
IG5vdCBoYXZlIGl0cyB0ZXh0CiAgICAgLy8gdHJhY2sga2luZCBzZXQgdG8gbWV0YWRhdGEsIHRo
cm93IGEgSW52YWxpZE5vZGVUeXBlRXJyb3IgZXhjZXB0aW9uIGFuZCBkb24ndCBhZGQgdGhlIGN1
ZSB0byB0aGUgVGV4dFRyYWNrTGlzdAogICAgIC8vIG9mIHRoZSBUZXh0VHJhY2suCi0gICAgaWYg
KGN1ZS0+Y3VlVHlwZSgpID09IFRleHRUcmFja0N1ZTo6RGF0YSAmJiBtX2tpbmQgIT0gVGV4dFRy
YWNrS2luZDo6TWV0YWRhdGEpIHsKKyAgICBpZiAoY3VlLT5jdWVUeXBlKCkgPT0gVGV4dFRyYWNr
Q3VlOjpEYXRhICYmIG1fa2luZCAhPSBLaW5kOjpNZXRhZGF0YSkgewogICAgICAgICBlYyA9IElO
VkFMSURfTk9ERV9UWVBFX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTM3Miw3ICsz
NzIsNyBAQCBWVFRSZWdpb25MaXN0KiBUZXh0VHJhY2s6OnJlZ2lvbnMoKQogICAgIC8vIHRoZSB0
ZXh0IHRyYWNrIGxpc3Qgb2YgcmVnaW9ucyBvZiB0aGUgdGV4dCB0cmFjay4gT3RoZXJ3aXNlLCBp
dCBtdXN0CiAgICAgLy8gcmV0dXJuIG51bGwuIFdoZW4gYW4gb2JqZWN0IGlzIHJldHVybmVkLCB0
aGUgc2FtZSBvYmplY3QgbXVzdCBiZSByZXR1cm5lZAogICAgIC8vIGVhY2ggdGltZS4KLSAgICBp
ZiAobV9tb2RlID09IFRleHRUcmFja01vZGU6OkRpc2FibGVkKQorICAgIGlmIChtX21vZGUgPT0g
TW9kZTo6RGlzYWJsZWQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiAmZW5z
dXJlVlRUUmVnaW9uTGlzdCgpOwogfQpAQCAtNDY3LDggKzQ2Nyw4IEBAIHZvaWQgVGV4dFRyYWNr
OjppbnZhbGlkYXRlVHJhY2tJbmRleCgpCiAKIGJvb2wgVGV4dFRyYWNrOjppc1JlbmRlcmVkKCkK
IHsKLSAgICByZXR1cm4gKG1fa2luZCA9PSBUZXh0VHJhY2tLaW5kOjpDYXB0aW9ucyB8fCBtX2tp
bmQgPT0gVGV4dFRyYWNrS2luZDo6U3VidGl0bGVzIHx8IG1fa2luZCA9PSBUZXh0VHJhY2tLaW5k
OjpGb3JjZWQpCi0gICAgICAgICYmIG1fbW9kZSA9PSBUZXh0VHJhY2tNb2RlOjpTaG93aW5nOwor
ICAgIHJldHVybiAobV9raW5kID09IEtpbmQ6OkNhcHRpb25zIHx8IG1fa2luZCA9PSBLaW5kOjpT
dWJ0aXRsZXMgfHwgbV9raW5kID09IEtpbmQ6OkZvcmNlZCkKKyAgICAgICAgJiYgbV9tb2RlID09
IE1vZGU6OlNob3dpbmc7CiB9CiAKIFRleHRUcmFja0N1ZUxpc3QmIFRleHRUcmFjazo6ZW5zdXJl
VGV4dFRyYWNrQ3VlTGlzdCgpCkBAIC01NTMsMTIgKzU1MywxMiBAQCBib29sIFRleHRUcmFjazo6
aXNNYWluUHJvZ3JhbUNvbnRlbnQoKSBjb25zdAogICAgIC8vIGRpcmVjdG9ycyBjb21tZW50YXJ5
IGlzIG5vdCAibWFpbiBwcm9ncmFtIiBiZWNhdXNlIGl0IGlzIG5vdCBlc3NlbnRpYWwgZm9yIHRo
ZSBwcmVzZW50YXRpb24uIEhUTUw1IGRvZXNuJ3QgaGF2ZQogICAgIC8vIGEgd2F5IHRvIGV4cHJl
c3MgdGhpcyBpbiBhIG1hY2hpbmUtcmVhYmxlIGZvcm0sIGl0IGlzIHR5cGljYWxseSBkb25lIHdp
dGggdGhlIHRyYWNrIGxhYmVsLCBzbyB3ZSBhc3N1bWUgdGhhdCBjYXB0aW9uCiAgICAgLy8gdHJh
Y2tzIGFyZSBtYWluIGNvbnRlbnQgYW5kIGFsbCBvdGhlciB0cmFjayB0eXBlcyBhcmUgbm90Lgot
ICAgIHJldHVybiBtX2tpbmQgPT0gVGV4dFRyYWNrS2luZDo6Q2FwdGlvbnM7CisgICAgcmV0dXJu
IG1fa2luZCA9PSBLaW5kOjpDYXB0aW9uczsKIH0KIAogYm9vbCBUZXh0VHJhY2s6OmNvbnRhaW5z
T25seUZvcmNlZFN1YnRpdGxlcygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fa2luZCA9PSBUZXh0
VHJhY2tLaW5kOjpGb3JjZWQ7CisgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpGb3JjZWQ7CiB9
CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRy
YWNrLmgKaW5kZXggNWNiMjQ5MDUwZjhlMWI2Mzk1ODM5NzAwNGYxNTY0MTcxMGRmZDZjMC4uNzgx
OGQyMjQ3YWFkMTZhNTUzM2MzMzM2MzQwYmRkOGZhZWViZTg1YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1RleHRUcmFjay5oCkBAIC00Miw5ICs0Miw2IEBAIGNsYXNzIFRleHRUcmFja0N1ZUxp
c3Q7CiBjbGFzcyBWVFRSZWdpb247CiBjbGFzcyBWVFRSZWdpb25MaXN0OwogCi1lbnVtIGNsYXNz
IFRleHRUcmFja0tpbmQgeyBTdWJ0aXRsZXMsIENhcHRpb25zLCBEZXNjcmlwdGlvbnMsIENoYXB0
ZXJzLCBNZXRhZGF0YSwgRm9yY2VkIH07Ci1lbnVtIGNsYXNzIFRleHRUcmFja01vZGUgeyBEaXNh
YmxlZCwgSGlkZGVuLCBTaG93aW5nIH07Ci0KIGNsYXNzIFRleHRUcmFja0NsaWVudCB7CiBwdWJs
aWM6CiAgICAgdmlydHVhbCB+VGV4dFRyYWNrQ2xpZW50KCkgeyB9CkBAIC03NywxOSArNzQsMjEg
QEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGhpZGRlbktleXdvcmQo
KTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzaG93aW5nS2V5d29yZCgpOwogCi0g
ICAgVGV4dFRyYWNrS2luZCBraW5kKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRLaW5kKFRleHRUcmFj
a0tpbmQpOworICAgIGVudW0gY2xhc3MgS2luZCB7IFN1YnRpdGxlcywgQ2FwdGlvbnMsIERlc2Ny
aXB0aW9ucywgQ2hhcHRlcnMsIE1ldGFkYXRhLCBGb3JjZWQgfTsKKyAgICBLaW5kIGtpbmQoKSBj
b25zdDsKKyAgICB2b2lkIHNldEtpbmQoS2luZCk7CiAKLSAgICBUZXh0VHJhY2tLaW5kIGtpbmRG
b3JCaW5kaW5ncygpIGNvbnN0OwotICAgIHZvaWQgc2V0S2luZEZvckJpbmRpbmdzKFRleHRUcmFj
a0tpbmQpOworICAgIEtpbmQga2luZEZvckJpbmRpbmdzKCkgY29uc3Q7CisgICAgdm9pZCBzZXRL
aW5kRm9yQmluZGluZ3MoS2luZCk7CiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGtpbmRLZXl3
b3JkKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRLaW5kS2V5d29yZElnbm9yaW5nQVNDSUlDYXNlKFN0
cmluZ1ZpZXcpOwogCiAgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgaW5CYW5kTWV0YWRhdGFUcmFj
a0Rpc3BhdGNoVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KIAotICAgIFRl
eHRUcmFja01vZGUgbW9kZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBzZXRNb2RlKFRleHRU
cmFja01vZGUpOworICAgIGVudW0gY2xhc3MgTW9kZSB7IERpc2FibGVkLCBIaWRkZW4sIFNob3dp
bmcgfTsKKyAgICBNb2RlIG1vZGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TW9kZShN
b2RlKTsKIAogICAgIGVudW0gUmVhZGluZXNzU3RhdGUgeyBOb3RMb2FkZWQgPSAwLCBMb2FkaW5n
ID0gMSwgTG9hZGVkID0gMiwgRmFpbGVkVG9Mb2FkID0gMyB9OwogICAgIFJlYWRpbmVzc1N0YXRl
IHJlYWRpbmVzc1N0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9yZWFkaW5lc3NTdGF0ZTsgfQpAQCAt
MTY0LDggKzE2Myw4IEBAIHByaXZhdGU6CiAgICAgVGV4dFRyYWNrQ3VlTGlzdCYgZW5zdXJlVGV4
dFRyYWNrQ3VlTGlzdCgpOwogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0OwotICAgIFRleHRUcmFja01vZGUgbV9tb2RlIHsgVGV4dFRyYWNrTW9k
ZTo6RGlzYWJsZWQgfTsKLSAgICBUZXh0VHJhY2tLaW5kIG1fa2luZCB7IFRleHRUcmFja0tpbmQ6
OlN1YnRpdGxlcyB9OworICAgIE1vZGUgbV9tb2RlIHsgTW9kZTo6RGlzYWJsZWQgfTsKKyAgICBL
aW5kIG1fa2luZCB7IEtpbmQ6OlN1YnRpdGxlcyB9OwogICAgIFRleHRUcmFja0NsaWVudCogbV9j
bGllbnQ7CiAgICAgVGV4dFRyYWNrVHlwZSBtX3RyYWNrVHlwZTsKICAgICBSZWFkaW5lc3NTdGF0
ZSBtX3JlYWRpbmVzc1N0YXRlIHsgTm90TG9hZGVkIH07CkBAIC0xODAsMjQgKzE3OSwyNCBAQCBp
bmxpbmUgVGV4dFRyYWNrKiB0b1RleHRUcmFjayhUcmFja0Jhc2UqIHRyYWNrKQogICAgIHJldHVy
biBzdGF0aWNfY2FzdDxUZXh0VHJhY2sqPih0cmFjayk7CiB9CiAKLWlubGluZSBUZXh0VHJhY2tN
b2RlIFRleHRUcmFjazo6bW9kZSgpIGNvbnN0CitpbmxpbmUgYXV0byBUZXh0VHJhY2s6Om1vZGUo
KSBjb25zdCAtPiBNb2RlCiB7CiAgICAgcmV0dXJuIG1fbW9kZTsKIH0KIAotaW5saW5lIFRleHRU
cmFja0tpbmQgVGV4dFRyYWNrOjpraW5kKCkgY29uc3QKK2lubGluZSBhdXRvIFRleHRUcmFjazo6
a2luZCgpIGNvbnN0IC0+IEtpbmQKIHsKICAgICByZXR1cm4gbV9raW5kOwogfQogCi1pbmxpbmUg
VGV4dFRyYWNrS2luZCBUZXh0VHJhY2s6OmtpbmRGb3JCaW5kaW5ncygpIGNvbnN0CitpbmxpbmUg
YXV0byBUZXh0VHJhY2s6OmtpbmRGb3JCaW5kaW5ncygpIGNvbnN0IC0+IEtpbmQKIHsKICAgICBy
ZXR1cm4ga2luZCgpOwogfQogCiAjaWYgIUVOQUJMRShNRURJQV9TT1VSQ0UpCiAKLWlubGluZSB2
b2lkIFRleHRUcmFjazo6c2V0S2luZEZvckJpbmRpbmdzKFRleHRUcmFja0tpbmQpCitpbmxpbmUg
dm9pZCBUZXh0VHJhY2s6OnNldEtpbmRGb3JCaW5kaW5ncyhLaW5kKQogewogICAgIC8vIEZJWE1F
OiBXZSBhcmUgdXNpbmcga2luZEZvckJpbmRpbmdzIG9ubHkgdG8gaW1wbGVtZW50IHRoaXMgZW1w
dHkgZnVuY3Rpb24sIHByZXNlcnZpbmcgdGhlCiAgICAgLy8gYmVoYXZpb3Igb2YgZG9pbmcgbm90
aGluZyB3aGVuIHRyeWluZyB0byBzZXQgdGhlIGtpbmQsIG9yaWdpbmFsbHkgaW1wbGVtZW50ZWQg
aW4gYSBjdXN0b20gc2V0dGVyLgpAQCAtMjA2LDcgKzIwNSw3IEBAIGlubGluZSB2b2lkIFRleHRU
cmFjazo6c2V0S2luZEZvckJpbmRpbmdzKFRleHRUcmFja0tpbmQpCiAKICNlbHNlCiAKLWlubGlu
ZSB2b2lkIFRleHRUcmFjazo6c2V0S2luZEZvckJpbmRpbmdzKFRleHRUcmFja0tpbmQga2luZCkK
K2lubGluZSB2b2lkIFRleHRUcmFjazo6c2V0S2luZEZvckJpbmRpbmdzKEtpbmQga2luZCkKIHsK
ICAgICBzZXRLaW5kKGtpbmQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UZXh0VHJhY2tDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2tDdWUuY3BwCmluZGV4IDQyNzM2ZmIzYjllNGQyZTMzOTA2M2NmN2Q2OTcyNzZjMGYzMzE3ZDku
LmI3ZWUyMjVmNWYxOGQ2NmY1NjliZmFjYTgxYWExNmVkZjgwOThhZDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lk
IFRleHRUcmFja0N1ZTo6aW52YWxpZGF0ZUN1ZUluZGV4KCkKIGJvb2wgVGV4dFRyYWNrQ3VlOjpk
aXNwYXRjaEV2ZW50KEV2ZW50JiBldmVudCkKIHsKICAgICAvLyBXaGVuIGEgVGV4dFRyYWNrJ3Mg
bW9kZSBpcyBkaXNhYmxlZDogbm8gY3VlcyBhcmUgYWN0aXZlLCBubyBldmVudHMgZmlyZWQuCi0g
ICAgaWYgKCF0cmFjaygpIHx8IHRyYWNrKCktPm1vZGUoKSA9PSBUZXh0VHJhY2tNb2RlOjpEaXNh
YmxlZCkKKyAgICBpZiAoIXRyYWNrKCkgfHwgdHJhY2soKS0+bW9kZSgpID09IFRleHRUcmFjazo6
TW9kZTo6RGlzYWJsZWQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiBFdmVu
dFRhcmdldDo6ZGlzcGF0Y2hFdmVudChldmVudCk7CkBAIC0yMDEsNyArMjAxLDcgQEAgYm9vbCBU
ZXh0VHJhY2tDdWU6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQogCiBib29sIFRleHRUcmFj
a0N1ZTo6aXNBY3RpdmUoKQogewotICAgIHJldHVybiBtX2lzQWN0aXZlICYmIHRyYWNrKCkgJiYg
dHJhY2soKS0+bW9kZSgpICE9IFRleHRUcmFja01vZGU6OkRpc2FibGVkOworICAgIHJldHVybiBt
X2lzQWN0aXZlICYmIHRyYWNrKCkgJiYgdHJhY2soKS0+bW9kZSgpICE9IFRleHRUcmFjazo6TW9k
ZTo6RGlzYWJsZWQ7CiB9CiAKIHZvaWQgVGV4dFRyYWNrQ3VlOjpzZXRJc0FjdGl2ZShib29sIGFj
dGl2ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZU5ldHdvcmtpbmdD
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVOZXR3b3JraW5nQ29udGV4dC5o
CmluZGV4IGZmNTFiM2JjZGI1YjJjODAzODIxYjc4OTY2MTY0MjI1NDU5ZDIwOGMuLmQ4N2NmOWUx
ZmNjZTEwYzQyYzJkOWFmNTIzM2ZjNTdlZmIwNWU4ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTmV0d29ya2luZ0NvbnRleHQuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6
CiAgICAgICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAg
ICAgIHJldHVybiBtX2ZyYW1lLT5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpID09IFJlZmVy
cmVySGVhZGVyUG9saWN5OjpEZWZhdWx0OworICAgICAgICByZXR1cm4gbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+cmVmZXJyZXJQb2xpY3koKSA9PSBSZWZlcnJlclBvbGljeTo6RGVmYXVsdDsKICAgICB9
CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVy
ZW5jZXMuY3BwCmluZGV4IDFkMDZjMmRkOTE1MjlmZWM5MGZkMzA5MzIwNTBiOTJiMmQ2NmMyYTEu
LjkzNWMxZmIwYTU2MDE0MzExZjIzNGY3OGNkYWI3MDRmYjkyNjNmOGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmNwcApAQCAtMjE3LDcgKzIxNyw3
IEBAIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPj4gQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c29y
dGVkVHJhY2tMaXN0Rm9yTWVudShUZXh0VHJhCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgbGVu
Z3RoID0gdHJhY2tMaXN0LT5sZW5ndGgoKTsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAgIFRl
eHRUcmFjayogdHJhY2sgPSB0cmFja0xpc3QtPml0ZW0oaSk7CiAgICAgICAgIGF1dG8ga2luZCA9
IHRyYWNrLT5raW5kKCk7Ci0gICAgICAgIGlmIChraW5kID09IFRleHRUcmFja0tpbmQ6OkNhcHRp
b25zIHx8IGtpbmQgPT0gVGV4dFRyYWNrS2luZDo6RGVzY3JpcHRpb25zIHx8IGtpbmQgPT0gVGV4
dFRyYWNrS2luZDo6U3VidGl0bGVzKQorICAgICAgICBpZiAoa2luZCA9PSBUZXh0VHJhY2s6Oktp
bmQ6OkNhcHRpb25zIHx8IGtpbmQgPT0gVGV4dFRyYWNrOjpLaW5kOjpEZXNjcmlwdGlvbnMgfHwg
a2luZCA9PSBUZXh0VHJhY2s6OktpbmQ6OlN1YnRpdGxlcykKICAgICAgICAgICAgIHRyYWNrc0Zv
ck1lbnUuYXBwZW5kKHRyYWNrKTsKICAgICB9CiAKQEAgLTI2NSw3ICsyNjUsNyBAQCBWZWN0b3I8
UmVmUHRyPEF1ZGlvVHJhY2s+PiBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpzb3J0ZWRUcmFja0xp
c3RGb3JNZW51KEF1ZGlvVAogCiBpbnQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6dGV4dFRyYWNr
U2VsZWN0aW9uU2NvcmUoVGV4dFRyYWNrKiB0cmFjaywgSFRNTE1lZGlhRWxlbWVudCopIGNvbnN0
CiB7Ci0gICAgaWYgKHRyYWNrLT5raW5kKCkgIT0gVGV4dFRyYWNrS2luZDo6Q2FwdGlvbnMgJiYg
dHJhY2stPmtpbmQoKSAhPSBUZXh0VHJhY2tLaW5kOjpTdWJ0aXRsZXMpCisgICAgaWYgKHRyYWNr
LT5raW5kKCkgIT0gVGV4dFRyYWNrOjpLaW5kOjpDYXB0aW9ucyAmJiB0cmFjay0+a2luZCgpICE9
IFRleHRUcmFjazo6S2luZDo6U3VidGl0bGVzKQogICAgICAgICByZXR1cm4gMDsKICAgICAKICAg
ICBpZiAoIXVzZXJQcmVmZXJzU3VidGl0bGVzKCkgJiYgIXVzZXJQcmVmZXJzQ2FwdGlvbnMoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01l
ZGlhQUYuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVk
aWFBRi5jcHAKaW5kZXggM2QxMTZmOWJjYWIyMmE3MTlkMmViYTY1YzI2MTRhZWMxOTAxZWRjNy4u
OGJjMDI5ZGU3ZTM5Yjg5YzM1ODY3MmU2Y2M2MTIyZTNhNGFlNWNjNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKQEAg
LTcxMCw3ICs3MTAsNyBAQCBpbnQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OnRleHRU
cmFja1NlbGVjdGlvblNjb3JlKFRleHRUcmFjayogdHJhY2ssIEhUTQogICAgIGJvb2wgbGVnYWN5
T3ZlcnJpZGUgPSBtZWRpYUVsZW1lbnQtPndlYmtpdENsb3NlZENhcHRpb25zVmlzaWJsZSgpOwog
ICAgIGlmIChkaXNwbGF5TW9kZSA9PSBBbHdheXNPbiAmJiAoIXVzZXJQcmVmZXJzU3VidGl0bGVz
KCkgJiYgIXVzZXJQcmVmZXJzQ2FwdGlvbnMoKSAmJiAhbGVnYWN5T3ZlcnJpZGUpKQogICAgICAg
ICByZXR1cm4gMDsKLSAgICBpZiAodHJhY2stPmtpbmQoKSAhPSBUZXh0VHJhY2tLaW5kOjpDYXB0
aW9ucyAmJiB0cmFjay0+a2luZCgpICE9IFRleHRUcmFja0tpbmQ6OlN1YnRpdGxlcyAmJiB0cmFj
ay0+a2luZCgpICE9IFRleHRUcmFja0tpbmQ6OkZvcmNlZCkKKyAgICBpZiAodHJhY2stPmtpbmQo
KSAhPSBUZXh0VHJhY2s6OktpbmQ6OkNhcHRpb25zICYmIHRyYWNrLT5raW5kKCkgIT0gVGV4dFRy
YWNrOjpLaW5kOjpTdWJ0aXRsZXMgJiYgdHJhY2stPmtpbmQoKSAhPSBUZXh0VHJhY2s6OktpbmQ6
OkZvcmNlZCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKCF0cmFjay0+aXNNYWluUHJvZ3Jh
bUNvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC03NzEsNyArNzcxLDcgQEAgaW50IENh
cHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjp0ZXh0VHJhY2tTZWxlY3Rpb25TY29yZShUZXh0
VHJhY2sqIHRyYWNrLCBIVE0KIAogICAgIGlmICh1c2VyUHJlZmVyc0NhcHRpb25zKCkpIHsKICAg
ICAgICAgLy8gV2hlbiB0aGUgdXNlciBwcmVmZXJzIGFjY2Vzc2liaWxpdHkgdHJhY2tzLCByYW5r
IGlzIFNESCwgdGhlbiBDQywgdGhlbiBzdWJ0aXRsZXMuCi0gICAgICAgIGlmICh0cmFjay0+a2lu
ZCgpID09IFRleHRUcmFja0tpbmQ6OlN1YnRpdGxlcykKKyAgICAgICAgaWYgKHRyYWNrLT5raW5k
KCkgPT0gVGV4dFRyYWNrOjpLaW5kOjpTdWJ0aXRsZXMpCiAgICAgICAgICAgICB0cmFja1Njb3Jl
ID0gMTsKICAgICAgICAgZWxzZSBpZiAodHJhY2stPmlzQ2xvc2VkQ2FwdGlvbnMoKSkKICAgICAg
ICAgICAgIHRyYWNrU2NvcmUgPSAyOwpAQCAtNzc5LDcgKzc3OSw3IEBAIGludCBDYXB0aW9uVXNl
clByZWZlcmVuY2VzTWVkaWFBRjo6dGV4dFRyYWNrU2VsZWN0aW9uU2NvcmUoVGV4dFRyYWNrKiB0
cmFjaywgSFRNCiAgICAgICAgICAgICB0cmFja1Njb3JlID0gMzsKICAgICB9IGVsc2UgewogICAg
ICAgICAvLyBXaGVuIHRoZSB1c2VyIHByZWZlcnMgdHJhbnNsYXRpb24gdHJhY2tzLCByYW5rIGlz
IHN1YnRpdGxlcywgdGhlbiBTREgsIHRoZW4gQ0MgdHJhY2tzLgotICAgICAgICBpZiAodHJhY2st
PmtpbmQoKSA9PSBUZXh0VHJhY2tLaW5kOjpTdWJ0aXRsZXMpCisgICAgICAgIGlmICh0cmFjay0+
a2luZCgpID09IFRleHRUcmFjazo6S2luZDo6U3VidGl0bGVzKQogICAgICAgICAgICAgdHJhY2tT
Y29yZSA9IDM7CiAgICAgICAgIGVsc2UgaWYgKCF0cmFjay0+aXNDbG9zZWRDYXB0aW9ucygpKQog
ICAgICAgICAgICAgdHJhY2tTY29yZSA9IDI7CkBAIC04NjUsNyArODY1LDcgQEAgVmVjdG9yPFJl
ZlB0cjxUZXh0VHJhY2s+PiBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6c29ydGVkVHJh
Y2tMaXN0Rm9yTWVudSgKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8ga2luZCA9IHRyYWNrLT5r
aW5kKCk7Ci0gICAgICAgIGlmIChraW5kICE9IFRleHRUcmFja0tpbmQ6OkNhcHRpb25zICYmIGtp
bmQgIT0gVGV4dFRyYWNrS2luZDo6RGVzY3JpcHRpb25zICYmIGtpbmQgIT0gVGV4dFRyYWNrS2lu
ZDo6U3VidGl0bGVzKQorICAgICAgICBpZiAoa2luZCAhPSBUZXh0VHJhY2s6OktpbmQ6OkNhcHRp
b25zICYmIGtpbmQgIT0gVGV4dFRyYWNrOjpLaW5kOjpEZXNjcmlwdGlvbnMgJiYga2luZCAhPSBU
ZXh0VHJhY2s6OktpbmQ6OlN1YnRpdGxlcykKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAg
ICAgIGlmICh0cmFjay0+Y29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVzKCkpIHsKQEAgLTg4MSw3
ICs4ODEsNyBAQCBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4+IENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNZWRpYUFGOjpzb3J0ZWRUcmFja0xpc3RGb3JNZW51KAogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIH0KIAotICAgICAgICBpZiAodHJhY2stPm1vZGUoKSA9PSBUZXh0VHJhY2tNb2Rl
OjpTaG93aW5nKSB7CisgICAgICAgIGlmICh0cmFjay0+bW9kZSgpID09IFRleHRUcmFjazo6TW9k
ZTo6U2hvd2luZykgewogICAgICAgICAgICAgTE9HKE1lZGlhLCAiQ2FwdGlvblVzZXJQcmVmZXJl
bmNlc01lZGlhQUY6OnNvcnRlZFRyYWNrTGlzdEZvck1lbnUgLSBhZGRpbmcgJyVzJyB0cmFjayB3
aXRoIGxhbmd1YWdlICclcycgYmVjYXVzZSBpdCBpcyBhbHJlYWR5IHZpc2libGUiLCB0cmFjay0+
a2luZEtleXdvcmQoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBsYW5ndWFnZS51dGY4KCkuZGF0
YSgpKTsKICAgICAgICAgICAgIGlmICghbGFuZ3VhZ2UuaXNFbXB0eSgpKQogICAgICAgICAgICAg
ICAgIGxhbmd1YWdlc0luY2x1ZGVkLmFkZChsYW5ndWFnZSk7CkBAIC04OTAsNyArODkwLDcgQEAg
VmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+PiBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6
c29ydGVkVHJhY2tMaXN0Rm9yTWVudSgKICAgICAgICAgfQogCiAgICAgICAgIGlmICghbGFuZ3Vh
Z2UuaXNFbXB0eSgpICYmIHRyYWNrLT5pc01haW5Qcm9ncmFtQ29udGVudCgpKSB7Ci0gICAgICAg
ICAgICBib29sIGlzQWNjZXNzaWJpbGl0eVRyYWNrID0gdHJhY2stPmtpbmQoKSA9PSBUZXh0VHJh
Y2tLaW5kOjpDYXB0aW9uczsKKyAgICAgICAgICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5VHJhY2sg
PSB0cmFjay0+a2luZCgpID09IFRleHRUcmFjazo6S2luZDo6Q2FwdGlvbnM7CiAgICAgICAgICAg
ICBpZiAocHJlZmVyc0FjY2Vzc2liaWxpdHlUcmFja3MpIHsKICAgICAgICAgICAgICAgICAvLyBJ
biB0aGUgZmlyc3QgcGFzcywgaW5jbHVkZSBvbmx5IGNhcHRpb24gdHJhY2tzIGlmIHRoZSB1c2Vy
IHByZWZlcnMgYWNjZXNzaWJpbGl0eSB0cmFja3MuCiAgICAgICAgICAgICAgICAgaWYgKCFpc0Fj
Y2Vzc2liaWxpdHlUcmFjayAmJiBmaWx0ZXJUcmFja0xpc3QpIHsKQEAgLTkyNiw3ICs5MjYsNyBA
QCBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4+IENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFG
Ojpzb3J0ZWRUcmFja0xpc3RGb3JNZW51KAogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAg
ICAgYXV0byBraW5kID0gdHJhY2stPmtpbmQoKTsKLSAgICAgICAgaWYgKGtpbmQgIT0gVGV4dFRy
YWNrS2luZDo6Q2FwdGlvbnMgJiYga2luZCAhPSBUZXh0VHJhY2tLaW5kOjpEZXNjcmlwdGlvbnMg
JiYga2luZCAhPSBUZXh0VHJhY2tLaW5kOjpTdWJ0aXRsZXMpCisgICAgICAgIGlmIChraW5kICE9
IFRleHRUcmFjazo6S2luZDo6Q2FwdGlvbnMgJiYga2luZCAhPSBUZXh0VHJhY2s6OktpbmQ6OkRl
c2NyaXB0aW9ucyAmJiBraW5kICE9IFRleHRUcmFjazo6S2luZDo6U3VidGl0bGVzKQogICAgICAg
ICAgICAgY29udGludWU7CiAKICAgICAgICAgLy8gQWxsIGNhbmRpZGF0ZXMgd2l0aCBubyBsYW5n
dWdlIHdlcmUgYWRkZWQgdGhlIGZpcnN0IHRpbWUgdGhyb3VnaC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eVBvbGljeS5jcHAKaW5kZXggMjNkY2YxMWNiZWM3ZWFjM2U2NWQ3NjNiNDEyNWRiYTEy
OTUxZDVmOC4uNWRiMjczZDJkYmUwNzEwYTg2MTE4ZTdjZWI0Mzg5YjUzNGZmYjZhZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgYm9vbCBT
ZWN1cml0eVBvbGljeTo6c2hvdWxkSGlkZVJlZmVycmVyKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHJlZmVycmVyKQogICAgIHJldHVybiAhVVJMSXNTZWN1cmVVUkw7CiB9CiAKLVN0cmlu
ZyBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihSZWZlcnJlckhlYWRlclBv
bGljeSByZWZlcnJlclBvbGljeSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJy
ZXIpCitTdHJpbmcgU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIoUmVmZXJy
ZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3ksIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJl
ZmVycmVyKQogewogICAgIGlmIChyZWZlcnJlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBT
dHJpbmcoKTsKQEAgLTc1LDExICs3NSwxMSBAQCBTdHJpbmcgU2VjdXJpdHlQb2xpY3k6OmdlbmVy
YXRlUmVmZXJyZXJIZWFkZXIoUmVmZXJyZXJIZWFkZXJQb2xpY3kgcmVmZXJyZXJQb2xpYwogICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBzd2l0Y2ggKHJlZmVycmVyUG9saWN5KSB7Ci0g
ICAgY2FzZSBSZWZlcnJlckhlYWRlclBvbGljeTo6TmV2ZXI6CisgICAgY2FzZSBSZWZlcnJlclBv
bGljeTo6TmV2ZXI6CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBjYXNlIFJlZmVycmVy
SGVhZGVyUG9saWN5OjpBbHdheXM6CisgICAgY2FzZSBSZWZlcnJlclBvbGljeTo6QWx3YXlzOgog
ICAgICAgICByZXR1cm4gcmVmZXJyZXI7Ci0gICAgY2FzZSBSZWZlcnJlckhlYWRlclBvbGljeTo6
T3JpZ2luOiB7CisgICAgY2FzZSBSZWZlcnJlclBvbGljeTo6T3JpZ2luOiB7CiAgICAgICAgIFN0
cmluZyBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhyZWZlcnJlcikt
PnRvU3RyaW5nKCk7CiAgICAgICAgIGlmIChvcmlnaW4gPT0gIm51bGwiKQogICAgICAgICAgICAg
cmV0dXJuIFN0cmluZygpOwpAQCAtODcsNyArODcsNyBAQCBTdHJpbmcgU2VjdXJpdHlQb2xpY3k6
OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIoUmVmZXJyZXJIZWFkZXJQb2xpY3kgcmVmZXJyZXJQb2xp
YwogICAgICAgICAvLyB0byB0dXJuIGl0IGludG8gYSBjYW5vbmljYWwgVVJMIHdlIGNhbiB1c2Ug
YXMgcmVmZXJyZXIuCiAgICAgICAgIHJldHVybiBvcmlnaW4gKyAiLyI7CiAgICAgfQotICAgIGNh
c2UgUmVmZXJyZXJIZWFkZXJQb2xpY3k6OkRlZmF1bHQ6CisgICAgY2FzZSBSZWZlcnJlclBvbGlj
eTo6RGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3Vy
aXR5UG9saWN5LmgKaW5kZXggYWI2ZTY4ZjBjNTg3NzE5M2YyMDVlYzQ5NDdhMzcxMDQzZmIwMTY4
NS4uNmM4MThmZDYyMGJhNTUxOTgwY2EwZTVkYmM1NjVmYmM1ODkwNDFmNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2VjdXJpdHlQb2xpY3kuaApAQCAtMzgsMTQgKzM4LDE0IEBAIGNsYXNzIFVSTDsKIAog
Y2xhc3MgU2VjdXJpdHlQb2xpY3kgewogcHVibGljOgotICAgIC8vIFRydWUgaWYgdGhlIHJlZmVy
cmVyIHNob3VsZCBiZSBvbWl0dGVkIGFjY29yZGluZyB0byBSZWZlcnJlckhlYWRlclBvbGljeTo6
RGVmYXVsdC4KKyAgICAvLyBUcnVlIGlmIHRoZSByZWZlcnJlciBzaG91bGQgYmUgb21pdHRlZCBh
Y2NvcmRpbmcgdG8gUmVmZXJyZXJQb2xpY3k6OkRlZmF1bHQuCiAgICAgLy8gSWYgeW91IGludGVu
ZCB0byBzZW5kIGEgcmVmZXJyZXIgaGVhZGVyLCB5b3Ugc2hvdWxkIHVzZSBnZW5lcmF0ZVJlZmVy
cmVySGVhZGVyIGluc3RlYWQuCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgc2hvdWxk
SGlkZVJlZmVycmVyKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpOwogCiAgICAg
Ly8gUmV0dXJucyB0aGUgcmVmZXJyZXIgbW9kaWZpZWQgYWNjb3JkaW5nIHRvIHRoZSByZWZlcnJl
ciBwb2xpY3kgZm9yIGEKICAgICAvLyBuYXZpZ2F0aW9uIHRvIGEgZ2l2ZW4gVVJMLiBJZiB0aGUg
cmVmZXJyZXIgcmV0dXJuZWQgaXMgZW1wdHksIHRoZQogICAgIC8vIHJlZmVycmVyIGhlYWRlciBz
aG91bGQgYmUgb21pdHRlZC4KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIGdlbmVy
YXRlUmVmZXJyZXJIZWFkZXIoUmVmZXJyZXJIZWFkZXJQb2xpY3ksIGNvbnN0IFVSTCYsIGNvbnN0
IFN0cmluZyYgcmVmZXJyZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgZ2Vu
ZXJhdGVSZWZlcnJlckhlYWRlcihSZWZlcnJlclBvbGljeSwgY29uc3QgVVJMJiwgY29uc3QgU3Ry
aW5nJiByZWZlcnJlcik7CiAKICAgICBlbnVtIExvY2FsTG9hZFBvbGljeSB7CiAgICAgICAgIEFs
bG93TG9jYWxMb2Fkc0ZvckFsbCwgLy8gTm8gcmVzdHJpY3Rpb24gb24gbG9jYWwgbG9hZHMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWZlcnJlclBvbGljeS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVmZXJyZXJQb2xpY3kuaAppbmRleCBlNTFjNTgwNDdiNjIx
ZDRmZjdjMDdiMTFkNDA2ODkyY2I0ZWY1YjIwLi44NzBjMTY5ODdjMzI2ZGFlMDc4NThmZDliZWI5
NzRiNGY0N2JlODE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWZlcnJl
clBvbGljeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlZmVycmVyUG9saWN5LmgK
QEAgLTM3LDkgKzM3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gRklYTUU6IE1vdmUgdGhp
cyB3b3JrYXJvdW5kIHRvIGEgZ2xvYmFsIGxvY2F0aW9uLCBwZXJoYXBzIGNvbmZpZy5oOyBtYXli
ZSBhIEdUSy1zcGVjaWZpYyBsb2NhdGlvbi4KICN1bmRlZiBBbHdheXMKIAotLy8gRklYTUU6IE1l
cmdlIHRoaXMgd2l0aCB0aGUgUmVmZXJyZXJQb2xpY3kgZGVmaW5lZCBpbiB0aGUgRmV0Y2ggc3Bl
Y2lmaWNhdGlvbi4KLS8vIEZJWE1FOiBSZW5hbWUgYmFjayB0byBSZWZlcnJlclBvbGljeSBldmVu
IGJlZm9yZSB0aGF0LCBpZiB3ZSBmaW5kIGEgd2F5LgotZW51bSBjbGFzcyBSZWZlcnJlckhlYWRl
clBvbGljeSB7CisvLyBGSVhNRTogTWVyZ2UgdGhpcyB3aXRoIEZldGNoT3B0aW9uczo6UmVmZXJy
ZXJQb2xpY3ksIHdoaWNoIGlzIHRoZSBvbmUgZGVmaW5lZCBpbiB0aGUgRmV0Y2ggc3BlY2lmaWNh
dGlvbi4KK2VudW0gY2xhc3MgUmVmZXJyZXJQb2xpY3kgewogICAgIEFsd2F5cywKICAgICBEZWZh
dWx0LAogICAgIE5ldmVyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbQpp
bmRleCA3NTRlYjFlM2Q3NDA1Mjg2NjcwNDIzN2EwMjhkNjY2NjVhZTEzMWE5Li4wMjk5ZTdhMzIy
OWEzZDFiZjA3NzkyN2M2YzI1MTJkMDQ3MjZjZmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2Rl
bE1lZGlhRWxlbWVudC5tbQpAQCAtMTU4LDkgKzE1OCw5IEBAIHZvaWQgV2ViUGxheWJhY2tTZXNz
aW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUZvckV2ZW50TmFtZShjb25zdCBXVEY6OkF0b21p
Y1N0CiAKICAgICAgICAgaWYgKG1fbWVkaWFFbGVtZW50LT5tZWRpYUNvbnRyb2xzSG9zdCgpKSB7
CiAgICAgICAgICAgICBhdXRvIHR5cGUgPSBtX21lZGlhRWxlbWVudC0+bWVkaWFDb250cm9sc0hv
c3QoKS0+ZXh0ZXJuYWxEZXZpY2VUeXBlKCk7Ci0gICAgICAgICAgICBpZiAodHlwZSA9PSBEZXZp
Y2VUeXBlOjpBaXJwbGF5KQorICAgICAgICAgICAgaWYgKHR5cGUgPT0gTWVkaWFDb250cm9sc0hv
c3Q6OkRldmljZVR5cGU6OkFpcnBsYXkpCiAgICAgICAgICAgICAgICAgdGFyZ2V0VHlwZSA9IFdl
YlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTo6VGFyZ2V0VHlwZUFpclBsYXk7Ci0gICAgICAgICAg
ICBlbHNlIGlmICh0eXBlID09IERldmljZVR5cGU6OlR2b3V0KQorICAgICAgICAgICAgZWxzZSBp
ZiAodHlwZSA9PSBNZWRpYUNvbnRyb2xzSG9zdDo6RGV2aWNlVHlwZTo6VHZvdXQpCiAgICAgICAg
ICAgICAgICAgdGFyZ2V0VHlwZSA9IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTo6VGFyZ2V0
VHlwZVRWT3V0OwogICAgICAgICAgICAgbG9jYWxpemVkRGV2aWNlTmFtZSA9IG1fbWVkaWFFbGVt
ZW50LT5tZWRpYUNvbnRyb2xzSG9zdCgpLT5leHRlcm5hbERldmljZURpc3BsYXlOYW1lKCk7CiAg
ICAgICAgIH0KQEAgLTMwMyw3ICszMDMsNyBAQCB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
TWVkaWFFbGVtZW50Ojp1cGRhdGVMZWdpYmxlT3B0aW9ucygpCiAgICAgICAgICAgICB0cmFja01l
bnVJdGVtU2VsZWN0ZWQgPSB0cnVlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGRpc3BsYXlN
b2RlICE9IE1lZGlhQ29udHJvbHNIb3N0OjphdXRvbWF0aWNLZXl3b3JkKCkgJiYgdHJhY2stPm1v
ZGUoKSA9PSBUZXh0VHJhY2tNb2RlOjpTaG93aW5nKSB7CisgICAgICAgIGlmIChkaXNwbGF5TW9k
ZSAhPSBNZWRpYUNvbnRyb2xzSG9zdDo6YXV0b21hdGljS2V5d29yZCgpICYmIHRyYWNrLT5tb2Rl
KCkgPT0gVGV4dFRyYWNrOjpNb2RlOjpTaG93aW5nKSB7CiAgICAgICAgICAgICBzZWxlY3RlZElu
ZGV4ID0gaW5kZXg7CiAgICAgICAgICAgICB0cmFja01lbnVJdGVtU2VsZWN0ZWQgPSB0cnVlOwog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggODBmNTk0Y2I0
NjhhNjhiYTIyM2Y0ZmUwOWViZDgyNzJiMTYyMjMzNC4uNTZmZGE2OTQzMDc0YTQyZmIwODM1NjIy
OWQ5NmUxNTYwZDI2ZWYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAt
NTYzLDIzICs1NjMsMjMgQEAgYm9vbCBJbnRlcm5hbHM6OmlzU3R5bGVTaGVldExvYWRpbmdTdWJy
ZXNvdXJjZXMoSFRNTExpbmtFbGVtZW50JiBsaW5rKQogICAgIHJldHVybiBsaW5rLnNoZWV0KCkg
JiYgbGluay5zaGVldCgpLT5jb250ZW50cygpLmlzTG9hZGluZ1N1YnJlc291cmNlcygpOwogfQog
Ci1zdGF0aWMgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgdG9SZXNvdXJjZVJlcXVlc3RDYWNo
ZVBvbGljeShJbnRlcm5hbHNDYWNoZVBvbGljeSBwb2xpY3kpCitzdGF0aWMgUmVzb3VyY2VSZXF1
ZXN0Q2FjaGVQb2xpY3kgdG9SZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeShJbnRlcm5hbHM6OkNh
Y2hlUG9saWN5IHBvbGljeSkKIHsKICAgICBzd2l0Y2ggKHBvbGljeSkgewotICAgIGNhc2UgSW50
ZXJuYWxzQ2FjaGVQb2xpY3k6OlVzZVByb3RvY29sQ2FjaGVQb2xpY3k6CisgICAgY2FzZSBJbnRl
cm5hbHM6OkNhY2hlUG9saWN5OjpVc2VQcm90b2NvbENhY2hlUG9saWN5OgogICAgICAgICByZXR1
cm4gVXNlUHJvdG9jb2xDYWNoZVBvbGljeTsKLSAgICBjYXNlIEludGVybmFsc0NhY2hlUG9saWN5
OjpSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YToKKyAgICBjYXNlIEludGVybmFsczo6Q2FjaGVQb2xp
Y3k6OlJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhOgogICAgICAgICByZXR1cm4gUmVsb2FkSWdub3Jp
bmdDYWNoZURhdGE7Ci0gICAgY2FzZSBJbnRlcm5hbHNDYWNoZVBvbGljeTo6UmV0dXJuQ2FjaGVE
YXRhRWxzZUxvYWQ6CisgICAgY2FzZSBJbnRlcm5hbHM6OkNhY2hlUG9saWN5OjpSZXR1cm5DYWNo
ZURhdGFFbHNlTG9hZDoKICAgICAgICAgcmV0dXJuIFJldHVybkNhY2hlRGF0YUVsc2VMb2FkOwot
ICAgIGNhc2UgSW50ZXJuYWxzQ2FjaGVQb2xpY3k6OlJldHVybkNhY2hlRGF0YURvbnRMb2FkOgor
ICAgIGNhc2UgSW50ZXJuYWxzOjpDYWNoZVBvbGljeTo6UmV0dXJuQ2FjaGVEYXRhRG9udExvYWQ6
CiAgICAgICAgIHJldHVybiBSZXR1cm5DYWNoZURhdGFEb250TG9hZDsKICAgICB9CiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIFVzZVByb3RvY29sQ2FjaGVQb2xpY3k7CiB9
CiAKLXZvaWQgSW50ZXJuYWxzOjpzZXRPdmVycmlkZUNhY2hlUG9saWN5KEludGVybmFsc0NhY2hl
UG9saWN5IHBvbGljeSkKK3ZvaWQgSW50ZXJuYWxzOjpzZXRPdmVycmlkZUNhY2hlUG9saWN5KENh
Y2hlUG9saWN5IHBvbGljeSkKIHsKICAgICBmcmFtZSgpLT5sb2FkZXIoKS5zZXRPdmVycmlkZUNh
Y2hlUG9saWN5Rm9yVGVzdGluZyh0b1Jlc291cmNlUmVxdWVzdENhY2hlUG9saWN5KHBvbGljeSkp
OwogfQpAQCAtNTk0LDI1ICs1OTQsMjUgQEAgdm9pZCBJbnRlcm5hbHM6OnNldENhblNob3dNb2Rh
bERpYWxvZ092ZXJyaWRlKGJvb2wgYWxsb3csIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIGNvbnRl
eHREb2N1bWVudCgpLT5kb21XaW5kb3coKS0+c2V0Q2FuU2hvd01vZGFsRGlhbG9nT3ZlcnJpZGUo
YWxsb3cpOwogfQogCi1zdGF0aWMgUmVzb3VyY2VMb2FkUHJpb3JpdHkgdG9SZXNvdXJjZUxvYWRQ
cmlvcml0eShJbnRlcm5hbHNSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSkKK3N0YXRpYyBS
ZXNvdXJjZUxvYWRQcmlvcml0eSB0b1Jlc291cmNlTG9hZFByaW9yaXR5KEludGVybmFsczo6UmVz
b3VyY2VMb2FkUHJpb3JpdHkgcHJpb3JpdHkpCiB7CiAgICAgc3dpdGNoIChwcmlvcml0eSkgewot
ICAgIGNhc2UgSW50ZXJuYWxzUmVzb3VyY2VMb2FkUHJpb3JpdHk6OlJlc291cmNlTG9hZFByaW9y
aXR5VmVyeUxvdzoKKyAgICBjYXNlIEludGVybmFsczo6UmVzb3VyY2VMb2FkUHJpb3JpdHk6OlJl
c291cmNlTG9hZFByaW9yaXR5VmVyeUxvdzoKICAgICAgICAgcmV0dXJuIFJlc291cmNlTG9hZFBy
aW9yaXR5OjpWZXJ5TG93OwotICAgIGNhc2UgSW50ZXJuYWxzUmVzb3VyY2VMb2FkUHJpb3JpdHk6
OlJlc291cmNlTG9hZFByaW9yaXR5TG93OgorICAgIGNhc2UgSW50ZXJuYWxzOjpSZXNvdXJjZUxv
YWRQcmlvcml0eTo6UmVzb3VyY2VMb2FkUHJpb3JpdHlMb3c6CiAgICAgICAgIHJldHVybiBSZXNv
dXJjZUxvYWRQcmlvcml0eTo6TG93OwotICAgIGNhc2UgSW50ZXJuYWxzUmVzb3VyY2VMb2FkUHJp
b3JpdHk6OlJlc291cmNlTG9hZFByaW9yaXR5TWVkaXVtOgorICAgIGNhc2UgSW50ZXJuYWxzOjpS
ZXNvdXJjZUxvYWRQcmlvcml0eTo6UmVzb3VyY2VMb2FkUHJpb3JpdHlNZWRpdW06CiAgICAgICAg
IHJldHVybiBSZXNvdXJjZUxvYWRQcmlvcml0eTo6TWVkaXVtOwotICAgIGNhc2UgSW50ZXJuYWxz
UmVzb3VyY2VMb2FkUHJpb3JpdHk6OlJlc291cmNlTG9hZFByaW9yaXR5SGlnaDoKKyAgICBjYXNl
IEludGVybmFsczo6UmVzb3VyY2VMb2FkUHJpb3JpdHk6OlJlc291cmNlTG9hZFByaW9yaXR5SGln
aDoKICAgICAgICAgcmV0dXJuIFJlc291cmNlTG9hZFByaW9yaXR5OjpIaWdoOwotICAgIGNhc2Ug
SW50ZXJuYWxzUmVzb3VyY2VMb2FkUHJpb3JpdHk6OlJlc291cmNlTG9hZFByaW9yaXR5VmVyeUhp
Z2g6CisgICAgY2FzZSBJbnRlcm5hbHM6OlJlc291cmNlTG9hZFByaW9yaXR5OjpSZXNvdXJjZUxv
YWRQcmlvcml0eVZlcnlIaWdoOgogICAgICAgICByZXR1cm4gUmVzb3VyY2VMb2FkUHJpb3JpdHk6
OlZlcnlIaWdoOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4g
UmVzb3VyY2VMb2FkUHJpb3JpdHk6OkxvdzsKIH0KIAotdm9pZCBJbnRlcm5hbHM6OnNldE92ZXJy
aWRlUmVzb3VyY2VMb2FkUHJpb3JpdHkoSW50ZXJuYWxzUmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJp
b3JpdHkpCit2b2lkIEludGVybmFsczo6c2V0T3ZlcnJpZGVSZXNvdXJjZUxvYWRQcmlvcml0eShS
ZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSkKIHsKICAgICBmcmFtZSgpLT5sb2FkZXIoKS5z
ZXRPdmVycmlkZVJlc291cmNlTG9hZFByaW9yaXR5Rm9yVGVzdGluZyh0b1Jlc291cmNlTG9hZFBy
aW9yaXR5KHByaW9yaXR5KSk7CiB9CkBAIC0xMjE4LDIxICsxMjE4LDIxIEBAIHZvaWQgSW50ZXJu
YWxzOjpzZXRBdXRvZmlsbGVkKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQsIGJvb2wgZW5hYmxl
ZCkKICAgICBlbGVtZW50LnNldEF1dG9GaWxsZWQoZW5hYmxlZCk7CiB9CiAKLXN0YXRpYyBBdXRv
RmlsbEJ1dHRvblR5cGUgdG9BdXRvRmlsbEJ1dHRvblR5cGUoSW50ZXJuYWxzQXV0b0ZpbGxCdXR0
b25UeXBlIHR5cGUpCitzdGF0aWMgQXV0b0ZpbGxCdXR0b25UeXBlIHRvQXV0b0ZpbGxCdXR0b25U
eXBlKEludGVybmFsczo6QXV0b0ZpbGxCdXR0b25UeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0
eXBlKSB7Ci0gICAgY2FzZSBJbnRlcm5hbHNBdXRvRmlsbEJ1dHRvblR5cGU6OkF1dG9GaWxsQnV0
dG9uVHlwZU5vbmU6CisgICAgY2FzZSBJbnRlcm5hbHM6OkF1dG9GaWxsQnV0dG9uVHlwZTo6QXV0
b0ZpbGxCdXR0b25UeXBlTm9uZToKICAgICAgICAgcmV0dXJuIEF1dG9GaWxsQnV0dG9uVHlwZTo6
Tm9uZTsKLSAgICBjYXNlIEludGVybmFsc0F1dG9GaWxsQnV0dG9uVHlwZTo6QXV0b0ZpbGxCdXR0
b25UeXBlQ3JlZGVudGlhbHM6CisgICAgY2FzZSBJbnRlcm5hbHM6OkF1dG9GaWxsQnV0dG9uVHlw
ZTo6QXV0b0ZpbGxCdXR0b25UeXBlQ3JlZGVudGlhbHM6CiAgICAgICAgIHJldHVybiBBdXRvRmls
bEJ1dHRvblR5cGU6OkNyZWRlbnRpYWxzOwotICAgIGNhc2UgSW50ZXJuYWxzQXV0b0ZpbGxCdXR0
b25UeXBlOjpBdXRvRmlsbEJ1dHRvblR5cGVDb250YWN0czoKKyAgICBjYXNlIEludGVybmFsczo6
QXV0b0ZpbGxCdXR0b25UeXBlOjpBdXRvRmlsbEJ1dHRvblR5cGVDb250YWN0czoKICAgICAgICAg
cmV0dXJuIEF1dG9GaWxsQnV0dG9uVHlwZTo6Q29udGFjdHM7CiAgICAgfQogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBBdXRvRmlsbEJ1dHRvblR5cGU6Ok5vbmU7CiB9CiAK
LXZvaWQgSW50ZXJuYWxzOjpzZXRTaG93QXV0b0ZpbGxCdXR0b24oSFRNTElucHV0RWxlbWVudCYg
ZWxlbWVudCwgSW50ZXJuYWxzQXV0b0ZpbGxCdXR0b25UeXBlIHR5cGUpCit2b2lkIEludGVybmFs
czo6c2V0U2hvd0F1dG9GaWxsQnV0dG9uKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQsIEF1dG9G
aWxsQnV0dG9uVHlwZSB0eXBlKQogewogICAgIGVsZW1lbnQuc2V0U2hvd0F1dG9GaWxsQnV0dG9u
KHRvQXV0b0ZpbGxCdXR0b25UeXBlKHR5cGUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5oCmluZGV4IDM5MDY3ZWYyNDU2NTE3ODc2YjdhMGU4ZDczMTljOTYzMDc4YjUwOGIuLjExZjhj
ODhiZDliZTUzOTMyNmNjNzVkZGE4ODgyYTFmMjdlZDIxZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaApAQCAtNzAsMTIgKzcwLDYgQEAgY2xhc3MgWE1MSHR0cFJlcXVlc3Q7CiAKIHR5
cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKLWVudW0gY2xhc3MgSW50ZXJuYWxzQXV0b0ZpbGxC
dXR0b25UeXBlIHsgQXV0b0ZpbGxCdXR0b25UeXBlTm9uZSwgQXV0b0ZpbGxCdXR0b25UeXBlQ29u
dGFjdHMsIEF1dG9GaWxsQnV0dG9uVHlwZUNyZWRlbnRpYWxzIH07Ci1lbnVtIGNsYXNzIEludGVy
bmFsc0NhY2hlUG9saWN5IHsgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSwgUmVsb2FkSWdub3JpbmdD
YWNoZURhdGEsIFJldHVybkNhY2hlRGF0YUVsc2VMb2FkLCBSZXR1cm5DYWNoZURhdGFEb250TG9h
ZCB9OwotZW51bSBjbGFzcyBJbnRlcm5hbHNSZXNvdXJjZUxvYWRQcmlvcml0eSB7IFJlc291cmNl
TG9hZFByaW9yaXR5VmVyeUxvdywgUmVzb3VyY2VMb2FkUHJpb3JpdHlMb3csIFJlc291cmNlTG9h
ZFByaW9yaXR5TWVkaXVtLCBSZXNvdXJjZUxvYWRQcmlvcml0eUhpZ2gsIFJlc291cmNlTG9hZFBy
aW9yaXR5VmVyeUhpZ2ggfTsKLWVudW0gY2xhc3MgTWVkaWFDb250cm9sRXZlbnQgeyBQbGF5UGF1
c2UsIE5leHRUcmFjaywgUHJldmlvdXNUcmFjayB9OwotZW51bSBjbGFzcyBQYWdlT3ZlcmxheVR5
cGUgeyBWaWV3LCBEb2N1bWVudCB9OwotCiBjbGFzcyBJbnRlcm5hbHMgZmluYWwgOiBwdWJsaWMg
UmVmQ291bnRlZDxJbnRlcm5hbHM+LCBwcml2YXRlIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVy
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEludGVybmFscz4gY3JlYXRlKERvY3VtZW50Jik7
CkBAIC05Niw5ICs5MCwxMSBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHhoclJlc3BvbnNlU291cmNl
KFhNTEh0dHBSZXF1ZXN0Jik7CiAgICAgYm9vbCBpc1NoYXJpbmdTdHlsZVNoZWV0Q29udGVudHMo
SFRNTExpbmtFbGVtZW50JiwgSFRNTExpbmtFbGVtZW50Jik7CiAgICAgYm9vbCBpc1N0eWxlU2hl
ZXRMb2FkaW5nU3VicmVzb3VyY2VzKEhUTUxMaW5rRWxlbWVudCYpOwotICAgIHZvaWQgc2V0T3Zl
cnJpZGVDYWNoZVBvbGljeShJbnRlcm5hbHNDYWNoZVBvbGljeSk7CisgICAgZW51bSBjbGFzcyBD
YWNoZVBvbGljeSB7IFVzZVByb3RvY29sQ2FjaGVQb2xpY3ksIFJlbG9hZElnbm9yaW5nQ2FjaGVE
YXRhLCBSZXR1cm5DYWNoZURhdGFFbHNlTG9hZCwgUmV0dXJuQ2FjaGVEYXRhRG9udExvYWQgfTsK
KyAgICB2b2lkIHNldE92ZXJyaWRlQ2FjaGVQb2xpY3koQ2FjaGVQb2xpY3kpOwogICAgIHZvaWQg
c2V0Q2FuU2hvd01vZGFsRGlhbG9nT3ZlcnJpZGUoYm9vbCBhbGxvdywgRXhjZXB0aW9uQ29kZSYp
OwotICAgIHZvaWQgc2V0T3ZlcnJpZGVSZXNvdXJjZUxvYWRQcmlvcml0eShJbnRlcm5hbHNSZXNv
dXJjZUxvYWRQcmlvcml0eSk7CisgICAgZW51bSBjbGFzcyBSZXNvdXJjZUxvYWRQcmlvcml0eSB7
IFJlc291cmNlTG9hZFByaW9yaXR5VmVyeUxvdywgUmVzb3VyY2VMb2FkUHJpb3JpdHlMb3csIFJl
c291cmNlTG9hZFByaW9yaXR5TWVkaXVtLCBSZXNvdXJjZUxvYWRQcmlvcml0eUhpZ2gsIFJlc291
cmNlTG9hZFByaW9yaXR5VmVyeUhpZ2ggfTsKKyAgICB2b2lkIHNldE92ZXJyaWRlUmVzb3VyY2VM
b2FkUHJpb3JpdHkoUmVzb3VyY2VMb2FkUHJpb3JpdHkpOwogICAgIHZvaWQgc2V0U3RyaWN0UmF3
UmVzb3VyY2VWYWxpZGF0aW9uUG9saWN5RGlzYWJsZWQoYm9vbCk7CiAKICAgICB2b2lkIGNsZWFy
TWVtb3J5Q2FjaGUoKTsKQEAgLTE3NSw3ICsxNzEsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBlbGVt
ZW50U2hvdWxkQXV0b0NvbXBsZXRlKEhUTUxJbnB1dEVsZW1lbnQmKTsKICAgICB2b2lkIHNldEVk
aXRpbmdWYWx1ZShIVE1MSW5wdXRFbGVtZW50JiwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBz
ZXRBdXRvZmlsbGVkKEhUTUxJbnB1dEVsZW1lbnQmLCBib29sIGVuYWJsZWQpOwotICAgIHZvaWQg
c2V0U2hvd0F1dG9GaWxsQnV0dG9uKEhUTUxJbnB1dEVsZW1lbnQmLCBJbnRlcm5hbHNBdXRvRmls
bEJ1dHRvblR5cGUpOworICAgIGVudW0gY2xhc3MgQXV0b0ZpbGxCdXR0b25UeXBlIHsgQXV0b0Zp
bGxCdXR0b25UeXBlTm9uZSwgQXV0b0ZpbGxCdXR0b25UeXBlQ29udGFjdHMsIEF1dG9GaWxsQnV0
dG9uVHlwZUNyZWRlbnRpYWxzIH07CisgICAgdm9pZCBzZXRTaG93QXV0b0ZpbGxCdXR0b24oSFRN
TElucHV0RWxlbWVudCYsIEF1dG9GaWxsQnV0dG9uVHlwZSk7CiAgICAgdm9pZCBzY3JvbGxFbGVt
ZW50VG9SZWN0KEVsZW1lbnQmLCBpbnQgeCwgaW50IHksIGludCB3LCBpbnQgaCwgRXhjZXB0aW9u
Q29kZSYpOwogCiAgICAgU3RyaW5nIGF1dG9maWxsRmllbGROYW1lKEVsZW1lbnQmLCBFeGNlcHRp
b25Db2RlJik7CkBAIC00MjAsNiArNDE3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2VuZE1lZGlh
U2Vzc2lvbkVuZE9mSW50ZXJydXB0aW9uTm90aWZpY2F0aW9uKE1lZGlhU2Vzc2lvbkludGVycnVw
dGluZ0NhdGVnb3J5KTsKICAgICBTdHJpbmcgbWVkaWFTZXNzaW9uQ3VycmVudFN0YXRlKE1lZGlh
U2Vzc2lvbiYpIGNvbnN0OwogICAgIGRvdWJsZSBtZWRpYUVsZW1lbnRQbGF5ZXJWb2x1bWUoSFRN
TE1lZGlhRWxlbWVudCYpIGNvbnN0OworICAgIGVudW0gY2xhc3MgTWVkaWFDb250cm9sRXZlbnQg
eyBQbGF5UGF1c2UsIE5leHRUcmFjaywgUHJldmlvdXNUcmFjayB9OwogICAgIHZvaWQgc2VuZE1l
ZGlhQ29udHJvbEV2ZW50KE1lZGlhQ29udHJvbEV2ZW50KTsKICNlbmRpZgogCkBAIC00MzUsNiAr
NDMzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2ltdWxhdGVTeXN0ZW1TbGVlcCgpIGNvbnN0Owog
ICAgIHZvaWQgc2ltdWxhdGVTeXN0ZW1XYWtlKCkgY29uc3Q7CiAKKyAgICBlbnVtIGNsYXNzIFBh
Z2VPdmVybGF5VHlwZSB7IFZpZXcsIERvY3VtZW50IH07CiAgICAgUmVmUHRyPE1vY2tQYWdlT3Zl
cmxheT4gaW5zdGFsbE1vY2tQYWdlT3ZlcmxheShQYWdlT3ZlcmxheVR5cGUsIEV4Y2VwdGlvbkNv
ZGUmKTsKICAgICBTdHJpbmcgcGFnZU92ZXJsYXlMYXllclRyZWVBc1RleHQoRXhjZXB0aW9uQ29k
ZSYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggMWNhMGZl
NmY5ZDE2MjY0OTlhODY0N2IxMGE5MmMzYTE4NDhhOGY3Ni4uYjM0ODk3Yzk2ZDRlMGE5MDk1MGUx
MTllNDZkMDY5ODI3MjAzNGVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApA
QCAtMzAsNyArMzAsNyBAQCBlbnVtIFBhZ2VPdmVybGF5VHlwZSB7CiB9OwogCiAvLyBUaGVzZSBt
YXAgdG8gUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kuCi1lbnVtIEludGVybmFsc0NhY2hlUG9s
aWN5IHsKK2VudW0gQ2FjaGVQb2xpY3kgewogICAgICJVc2VQcm90b2NvbENhY2hlUG9saWN5IiwK
ICAgICAiUmVsb2FkSWdub3JpbmdDYWNoZURhdGEiLAogICAgICJSZXR1cm5DYWNoZURhdGFFbHNl
TG9hZCIsCkBAIC0zOCw3ICszOCw3IEBAIGVudW0gSW50ZXJuYWxzQ2FjaGVQb2xpY3kgewogfTsK
IAogLy8gRklYTUU6IFN0cmluZ3MgaW4gYW4gZW51bSBzaG91bGQgbm90IGhhdmUgdGhlIG5hbWUg
b2YgdGhlIGVudW0gYXMgYSBwcmVmaXguCi1lbnVtIEludGVybmFsc1Jlc291cmNlTG9hZFByaW9y
aXR5IHsKK2VudW0gUmVzb3VyY2VMb2FkUHJpb3JpdHkgewogICAgICJSZXNvdXJjZUxvYWRQcmlv
cml0eVZlcnlMb3ciLAogICAgICJSZXNvdXJjZUxvYWRQcmlvcml0eUxvdyIsCiAgICAgIlJlc291
cmNlTG9hZFByaW9yaXR5TWVkaXVtIiwKQEAgLTU5LDcgKzU5LDcgQEAgZW51bSBJbnRlcm5hbHNS
ZXNvdXJjZUxvYWRQcmlvcml0eSB7CiB9OwogCiAvLyBGSVhNRTogU3RyaW5ncyBpbiBhbiBlbnVt
IHNob3VsZCBub3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgZW51bSBhcyBhIHByZWZpeC4KLWVudW0g
SW50ZXJuYWxzQXV0b0ZpbGxCdXR0b25UeXBlIHsKK2VudW0gQXV0b0ZpbGxCdXR0b25UeXBlIHsK
ICAgICAiQXV0b0ZpbGxCdXR0b25UeXBlTm9uZSIsCiAgICAgIkF1dG9GaWxsQnV0dG9uVHlwZUNv
bnRhY3RzIiwKICAgICAiQXV0b0ZpbGxCdXR0b25UeXBlQ3JlZGVudGlhbHMiCkBAIC04Niw4ICs4
Niw4IEBAIGVudW0gSW50ZXJuYWxzQXV0b0ZpbGxCdXR0b25UeXBlIHsKICAgICB2b2lkIGNsZWFy
TWVtb3J5Q2FjaGUoKTsKICAgICB2b2lkIHBydW5lTWVtb3J5Q2FjaGVUb1NpemUobG9uZyBzaXpl
KTsKICAgICBsb25nIG1lbW9yeUNhY2hlU2l6ZSgpOwotICAgIHZvaWQgc2V0T3ZlcnJpZGVDYWNo
ZVBvbGljeShJbnRlcm5hbHNDYWNoZVBvbGljeSBwb2xpY3kpOwotICAgIHZvaWQgc2V0T3ZlcnJp
ZGVSZXNvdXJjZUxvYWRQcmlvcml0eShJbnRlcm5hbHNSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlv
cml0eSk7CisgICAgdm9pZCBzZXRPdmVycmlkZUNhY2hlUG9saWN5KENhY2hlUG9saWN5IHBvbGlj
eSk7CisgICAgdm9pZCBzZXRPdmVycmlkZVJlc291cmNlTG9hZFByaW9yaXR5KFJlc291cmNlTG9h
ZFByaW9yaXR5IHByaW9yaXR5KTsKICAgICB2b2lkIHNldFN0cmljdFJhd1Jlc291cmNlVmFsaWRh
dGlvblBvbGljeURpc2FibGVkKGJvb2xlYW4gZGlzYWJsZWQpOwogCiAgICAgdm9pZCBjbGVhclBh
Z2VDYWNoZSgpOwpAQCAtMTU5LDcgKzE1OSw3IEBAIGVudW0gSW50ZXJuYWxzQXV0b0ZpbGxCdXR0
b25UeXBlIHsKICAgICBib29sZWFuIGVsZW1lbnRTaG91bGRBdXRvQ29tcGxldGUoSFRNTElucHV0
RWxlbWVudCBpbnB1dEVsZW1lbnQpOwogICAgIHZvaWQgc2V0RWRpdGluZ1ZhbHVlKEhUTUxJbnB1
dEVsZW1lbnQgaW5wdXRFbGVtZW50LCBET01TdHJpbmcgdmFsdWUpOwogICAgIHZvaWQgc2V0QXV0
b2ZpbGxlZChIVE1MSW5wdXRFbGVtZW50IGlucHV0RWxlbWVudCwgYm9vbGVhbiBlbmFibGVkKTsK
LSAgICB2b2lkIHNldFNob3dBdXRvRmlsbEJ1dHRvbihIVE1MSW5wdXRFbGVtZW50IGlucHV0RWxl
bWVudCwgSW50ZXJuYWxzQXV0b0ZpbGxCdXR0b25UeXBlIGF1dG9GaWxsQnV0dG9uVHlwZSk7Cisg
ICAgdm9pZCBzZXRTaG93QXV0b0ZpbGxCdXR0b24oSFRNTElucHV0RWxlbWVudCBpbnB1dEVsZW1l
bnQsIEF1dG9GaWxsQnV0dG9uVHlwZSBhdXRvRmlsbEJ1dHRvblR5cGUpOwogICAgIFtSYWlzZXNF
eGNlcHRpb25dIHVuc2lnbmVkIGxvbmcgY291bnRNYXRjaGVzRm9yVGV4dChET01TdHJpbmcgdGV4
dCwgdW5zaWduZWQgbG9uZyBmaW5kT3B0aW9ucywgRE9NU3RyaW5nIG1hcmtNYXRjaGVzKTsKIAog
ICAgIFtSYWlzZXNFeGNlcHRpb25dIERPTVN0cmluZyBhdXRvZmlsbEZpZWxkTmFtZShFbGVtZW50
IGZvcm1Db250cm9sRWxlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApp
bmRleCAyMjRiODY1NjgzMDI5NmRhNzc0ODhmNGQxNjVhYjE1ZjY4ODY1MjY5Li42YWIzMTU5N2E1
NDc0ZGYxOGVhOWU4NTgyNGI1ZmQwNmE2ZWVjYjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAKQEAgLTE2Myw3ICsxNjMsNyBAQCBYTUxIdHRwUmVxdWVzdDo6U3RhdGUgWE1M
SHR0cFJlcXVlc3Q6OnJlYWR5U3RhdGUoKSBjb25zdAogCiBTdHJpbmcgWE1MSHR0cFJlcXVlc3Q6
OnJlc3BvbnNlVGV4dChFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBpZiAobV9yZXNwb25zZVR5
cGUgIT0gWE1MSHR0cFJlcXVlc3RSZXNwb25zZVR5cGU6OkVtcHR5U3RyaW5nICYmIG1fcmVzcG9u
c2VUeXBlICE9IFhNTEh0dHBSZXF1ZXN0UmVzcG9uc2VUeXBlOjpUZXh0KSB7CisgICAgaWYgKG1f
cmVzcG9uc2VUeXBlICE9IFJlc3BvbnNlVHlwZTo6RW1wdHlTdHJpbmcgJiYgbV9yZXNwb25zZVR5
cGUgIT0gUmVzcG9uc2VUeXBlOjpUZXh0KSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9F
UlI7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQpAQCAtMTcyLDcgKzE3Miw3IEBAIFN0cmlu
ZyBYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VUZXh0KEV4Y2VwdGlvbkNvZGUmIGVjKQogCiB2b2lk
IFhNTEh0dHBSZXF1ZXN0OjpkaWRDYWNoZVJlc3BvbnNlSlNPTigpCiB7Ci0gICAgQVNTRVJUKG1f
cmVzcG9uc2VUeXBlID09IFhNTEh0dHBSZXF1ZXN0UmVzcG9uc2VUeXBlOjpKc29uKTsKKyAgICBB
U1NFUlQobV9yZXNwb25zZVR5cGUgPT0gUmVzcG9uc2VUeXBlOjpKc29uKTsKICAgICBBU1NFUlQo
ZG9uZVdpdGhvdXRFcnJvcnMoKSk7CiAgICAgbV9yZXNwb25zZUNhY2hlSXNWYWxpZCA9IHRydWU7
CiAgICAgbV9yZXNwb25zZUJ1aWxkZXIuY2xlYXIoKTsKQEAgLTE4MCw3ICsxODAsNyBAQCB2b2lk
IFhNTEh0dHBSZXF1ZXN0OjpkaWRDYWNoZVJlc3BvbnNlSlNPTigpCiAKIERvY3VtZW50KiBYTUxI
dHRwUmVxdWVzdDo6cmVzcG9uc2VYTUwoRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYgKG1f
cmVzcG9uc2VUeXBlICE9IFhNTEh0dHBSZXF1ZXN0UmVzcG9uc2VUeXBlOjpFbXB0eVN0cmluZyAm
JiBtX3Jlc3BvbnNlVHlwZSAhPSBYTUxIdHRwUmVxdWVzdFJlc3BvbnNlVHlwZTo6RG9jdW1lbnQp
IHsKKyAgICBpZiAobV9yZXNwb25zZVR5cGUgIT0gUmVzcG9uc2VUeXBlOjpFbXB0eVN0cmluZyAm
JiBtX3Jlc3BvbnNlVHlwZSAhPSBSZXNwb25zZVR5cGU6OkRvY3VtZW50KSB7CiAgICAgICAgIGVj
ID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAg
LTE5NSw3ICsxOTUsNyBAQCBEb2N1bWVudCogWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlWE1MKEV4
Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICAvLyBUaGUgVzNDIHNwZWMgcmVxdWlyZXMgdGhlIGZp
bmFsIE1JTUUgdHlwZSB0byBiZSBzb21lIHZhbGlkIFhNTCB0eXBlLCBvciB0ZXh0L2h0bWwuCiAg
ICAgICAgIC8vIElmIGl0IGlzIHRleHQvaHRtbCwgdGhlbiB0aGUgcmVzcG9uc2VUeXBlIG9mICJk
b2N1bWVudCIgbXVzdCBoYXZlIGJlZW4gc3VwcGxpZWQgZXhwbGljaXRseS4KICAgICAgICAgaWYg
KChtX3Jlc3BvbnNlLmlzSFRUUCgpICYmICFyZXNwb25zZUlzWE1MKCkgJiYgIWlzSFRNTCkKLSAg
ICAgICAgICAgIHx8IChpc0hUTUwgJiYgbV9yZXNwb25zZVR5cGUgPT0gWE1MSHR0cFJlcXVlc3RS
ZXNwb25zZVR5cGU6OkVtcHR5U3RyaW5nKQorICAgICAgICAgICAgfHwgKGlzSFRNTCAmJiBtX3Jl
c3BvbnNlVHlwZSA9PSBSZXNwb25zZVR5cGU6OkVtcHR5U3RyaW5nKQogICAgICAgICAgICAgfHwg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1dvcmtlckdsb2JhbFNjb3BlKCkpIHsKICAgICAg
ICAgICAgIG1fcmVzcG9uc2VEb2N1bWVudCA9IG51bGxwdHI7CiAgICAgICAgIH0gZWxzZSB7CkBA
IC0yMTksNyArMjE5LDcgQEAgRG9jdW1lbnQqIFhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZVhNTChF
eGNlcHRpb25Db2RlJiBlYykKIAogQmxvYiogWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlQmxvYigp
CiB7Ci0gICAgQVNTRVJUKG1fcmVzcG9uc2VUeXBlID09IFhNTEh0dHBSZXF1ZXN0UmVzcG9uc2VU
eXBlOjpCbG9iKTsKKyAgICBBU1NFUlQobV9yZXNwb25zZVR5cGUgPT0gUmVzcG9uc2VUeXBlOjpC
bG9iKTsKICAgICBBU1NFUlQoZG9uZVdpdGhvdXRFcnJvcnMoKSk7CiAKICAgICBpZiAoIW1fcmVz
cG9uc2VCbG9iKSB7CkBAIC0yNDEsNyArMjQxLDcgQEAgQmxvYiogWE1MSHR0cFJlcXVlc3Q6OnJl
c3BvbnNlQmxvYigpCiAKIEFycmF5QnVmZmVyKiBYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VBcnJh
eUJ1ZmZlcigpCiB7Ci0gICAgQVNTRVJUKG1fcmVzcG9uc2VUeXBlID09IFhNTEh0dHBSZXF1ZXN0
UmVzcG9uc2VUeXBlOjpBcnJheWJ1ZmZlcik7CisgICAgQVNTRVJUKG1fcmVzcG9uc2VUeXBlID09
IFJlc3BvbnNlVHlwZTo6QXJyYXlidWZmZXIpOwogICAgIEFTU0VSVChkb25lV2l0aG91dEVycm9y
cygpKTsKIAogICAgIGlmICghbV9yZXNwb25zZUFycmF5QnVmZmVyKSB7CkBAIC0yNzMsNyArMjcz
LDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6c2V0VGltZW91dCh1bnNpZ25lZCB0aW1lb3V0LCBF
eGNlcHRpb25Db2RlJiBlYykKICAgICBtX3RpbWVvdXRUaW1lci5zdGFydE9uZVNob3Qoc3RkOjpt
YXgoMC4wLCBpbnRlcnZhbC5jb3VudCgpKSk7CiB9CiAKLXZvaWQgWE1MSHR0cFJlcXVlc3Q6OnNl
dFJlc3BvbnNlVHlwZShYTUxIdHRwUmVxdWVzdFJlc3BvbnNlVHlwZSB0eXBlLCBFeGNlcHRpb25D
b2RlJiBlYykKK3ZvaWQgWE1MSHR0cFJlcXVlc3Q6OnNldFJlc3BvbnNlVHlwZShSZXNwb25zZVR5
cGUgdHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKG1fc3RhdGUgPj0gTE9BRElO
RykgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwpAQCAtNDYzLDcgKzQ2Myw3IEBA
IHZvaWQgWE1MSHR0cFJlcXVlc3Q6Om9wZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IFVS
TCYgdXJsLCBib29sIGFzeW5jLCBFeGNlCiAgICAgICAgIC8vIGF0dGVtcHQgdG8gZGlzY291cmFn
ZSBzeW5jaHJvbm91cyBYSFIgdXNlLiByZXNwb25zZVR5cGUgaXMgb25lIHN1Y2ggcGllY2Ugb2Yg
ZnVuY3Rpb25hbGl0eS4KICAgICAgICAgLy8gV2UnbGwgb25seSBkaXNhYmxlIHRoaXMgZnVuY3Rp
b25hbGl0eSBmb3IgSFRUUChTKSByZXF1ZXN0cyBzaW5jZSBzeW5jIHJlcXVlc3RzIGZvciBsb2Nh
bCBwcm90b2NvbHMKICAgICAgICAgLy8gc3VjaCBhcyBmaWxlOiBhbmQgZGF0YTogc3RpbGwgbWFr
ZSBzZW5zZSB0byBhbGxvdy4KLSAgICAgICAgaWYgKHVybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5
KCkgJiYgbV9yZXNwb25zZVR5cGUgIT0gWE1MSHR0cFJlcXVlc3RSZXNwb25zZVR5cGU6OkVtcHR5
U3RyaW5nKSB7CisgICAgICAgIGlmICh1cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpICYmIG1f
cmVzcG9uc2VUeXBlICE9IFJlc3BvbnNlVHlwZTo6RW1wdHlTdHJpbmcpIHsKICAgICAgICAgICAg
IGxvZ0NvbnNvbGVFcnJvcihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICJTeW5jaHJvbm91cyBI
VFRQKFMpIHJlcXVlc3RzIG1hZGUgZnJvbSB0aGUgd2luZG93IGNvbnRleHQgY2Fubm90IGhhdmUg
WE1MSHR0cFJlcXVlc3QucmVzcG9uc2VUeXBlIHNldC4iKTsKICAgICAgICAgICAgIGVjID0gSU5W
QUxJRF9BQ0NFU1NfRVJSOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTA5NSwxNiArMTA5NSwx
NiBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZQogICAgICAgICBtX3Jlc3BvbnNlLnNldEhUVFBI
ZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIG1fbWltZVR5cGVPdmVycmlk
ZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGREZWNvZGVSZXNwb25zZShYTUxIdHRw
UmVxdWVzdFJlc3BvbnNlVHlwZSB0eXBlKQorc3RhdGljIGlubGluZSBib29sIHNob3VsZERlY29k
ZVJlc3BvbnNlKFhNTEh0dHBSZXF1ZXN0OjpSZXNwb25zZVR5cGUgdHlwZSkKIHsKICAgICBzd2l0
Y2ggKHR5cGUpIHsKLSAgICBjYXNlIFhNTEh0dHBSZXF1ZXN0UmVzcG9uc2VUeXBlOjpFbXB0eVN0
cmluZzoKLSAgICBjYXNlIFhNTEh0dHBSZXF1ZXN0UmVzcG9uc2VUeXBlOjpEb2N1bWVudDoKLSAg
ICBjYXNlIFhNTEh0dHBSZXF1ZXN0UmVzcG9uc2VUeXBlOjpKc29uOgotICAgIGNhc2UgWE1MSHR0
cFJlcXVlc3RSZXNwb25zZVR5cGU6OlRleHQ6CisgICAgY2FzZSBYTUxIdHRwUmVxdWVzdDo6UmVz
cG9uc2VUeXBlOjpFbXB0eVN0cmluZzoKKyAgICBjYXNlIFhNTEh0dHBSZXF1ZXN0OjpSZXNwb25z
ZVR5cGU6OkRvY3VtZW50OgorICAgIGNhc2UgWE1MSHR0cFJlcXVlc3Q6OlJlc3BvbnNlVHlwZTo6
SnNvbjoKKyAgICBjYXNlIFhNTEh0dHBSZXF1ZXN0OjpSZXNwb25zZVR5cGU6OlRleHQ6CiAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgIGNhc2UgWE1MSHR0cFJlcXVlc3RSZXNwb25zZVR5cGU6OkFy
cmF5YnVmZmVyOgotICAgIGNhc2UgWE1MSHR0cFJlcXVlc3RSZXNwb25zZVR5cGU6OkJsb2I6Cisg
ICAgY2FzZSBYTUxIdHRwUmVxdWVzdDo6UmVzcG9uc2VUeXBlOjpBcnJheWJ1ZmZlcjoKKyAgICBj
YXNlIFhNTEh0dHBSZXF1ZXN0OjpSZXNwb25zZVR5cGU6OkJsb2I6CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdC5oCmluZGV4IDFlOGQwOWI2NzVjOGE2MTMwOGMzNzU3YTRhN2Y2NTM5OTAxNDgw
OTIuLmI4ODA4NzJjMmNjMThiNmE1YjQ2N2U0ZjYwYjMyYTUzNmM2YTE1ODQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5oCkBAIC00NCw4ICs0NCw2IEBAIGNsYXNzIFNoYXJlZEJ1ZmZl
cjsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7CiBjbGFzcyBUaHJlYWRhYmxlTG9hZGVyOwog
Ci1lbnVtIGNsYXNzIFhNTEh0dHBSZXF1ZXN0UmVzcG9uc2VUeXBlIHsgRW1wdHlTdHJpbmcsIEFy
cmF5YnVmZmVyLCBCbG9iLCBEb2N1bWVudCwgSnNvbiwgVGV4dCB9OwotCiBjbGFzcyBYTUxIdHRw
UmVxdWVzdCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFhNTEh0dHBSZXF1ZXN0PiwgcHVibGlj
IFhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQsIHByaXZhdGUgVGhyZWFkYWJsZUxvYWRlckNsaWVu
dCwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CkBAIC0xMDYsOCArMTA0LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcg
dXBwZXJjYXNlS25vd25IVFRQTWV0aG9kKGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBib29s
IGlzQWxsb3dlZEhUVFBIZWFkZXIoY29uc3QgU3RyaW5nJik7CiAKLSAgICB2b2lkIHNldFJlc3Bv
bnNlVHlwZShYTUxIdHRwUmVxdWVzdFJlc3BvbnNlVHlwZSwgRXhjZXB0aW9uQ29kZSYpOwotICAg
IFhNTEh0dHBSZXF1ZXN0UmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSgpIGNvbnN0OworICAgIGVu
dW0gY2xhc3MgUmVzcG9uc2VUeXBlIHsgRW1wdHlTdHJpbmcsIEFycmF5YnVmZmVyLCBCbG9iLCBE
b2N1bWVudCwgSnNvbiwgVGV4dCB9OworICAgIHZvaWQgc2V0UmVzcG9uc2VUeXBlKFJlc3BvbnNl
VHlwZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJlc3BvbnNlVHlwZSByZXNwb25zZVR5cGUoKSBj
b25zdDsKIAogICAgIFN0cmluZyByZXNwb25zZVVSTCgpIGNvbnN0OwogCkBAIC0yMjUsNyArMjI0
LDcgQEAgcHJpdmF0ZToKIAogICAgIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxl
IG1fcHJvZ3Jlc3NFdmVudFRocm90dGxlOwogCi0gICAgWE1MSHR0cFJlcXVlc3RSZXNwb25zZVR5
cGUgbV9yZXNwb25zZVR5cGUgeyBYTUxIdHRwUmVxdWVzdFJlc3BvbnNlVHlwZTo6RW1wdHlTdHJp
bmcgfTsKKyAgICBSZXNwb25zZVR5cGUgbV9yZXNwb25zZVR5cGUgeyBSZXNwb25zZVR5cGU6OkVt
cHR5U3RyaW5nIH07CiAgICAgYm9vbCBtX3Jlc3BvbnNlQ2FjaGVJc1ZhbGlkIHsgZmFsc2UgfTsK
IAogICAgIFRpbWVyIG1fcmVzdW1lVGltZXI7CkBAIC0yMzksNyArMjM4LDcgQEAgcHJpdmF0ZToK
ICAgICBUaW1lciBtX3RpbWVvdXRUaW1lcjsKIH07CiAKLWlubGluZSBYTUxIdHRwUmVxdWVzdFJl
c3BvbnNlVHlwZSBYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VUeXBlKCkgY29uc3QKK2lubGluZSBh
dXRvIFhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZVR5cGUoKSBjb25zdCAtPiBSZXNwb25zZVR5cGUK
IHsKICAgICByZXR1cm4gbV9yZXNwb25zZVR5cGU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCAxODA5
NmMyYzVmMmEyY2NiNmI3MzQ0OWQ2N2I0NDBjZTgxMDc4ZWYxLi5lM2Q0YTQ4MzdkN2FlMDgzYTRl
Mzg5NzY5OGQxMzNmMmRiMThhMjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTc1LDcgKzc1LDcgQEAg
UmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNl
KEZyYW1lKiBmcmFtZSwgQ2FjaGVkUmUKIHsKICAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+
IGxvYWRlciA9IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUoZnJhbWUsIHJlc291cmNlLCByZXF1
ZXN0LCBvcHRpb25zKTsKICAgICBpZiAobG9hZGVyKQotICAgICAgICBzY2hlZHVsZUxvYWQobG9h
ZGVyLmdldCgpLCByZXNvdXJjZSwgZnJhbWUtPmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCkg
PT0gUmVmZXJyZXJIZWFkZXJQb2xpY3k6OkRlZmF1bHQpOworICAgICAgICBzY2hlZHVsZUxvYWQo
bG9hZGVyLmdldCgpLCByZXNvdXJjZSwgZnJhbWUtPmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5
KCkgPT0gUmVmZXJyZXJQb2xpY3k6OkRlZmF1bHQpOwogICAgIHJldHVybiBsb2FkZXI7CiB9CiAK
QEAgLTgzLDcgKzgzLDcgQEAgUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBXZWJM
b2FkZXJTdHJhdGVneTo6c2NoZWR1bGVQbHVnaW5TdHJlYW1Mb2FkKEYKIHsKICAgICBSZWZQdHI8
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IGxvYWRlciA9IE5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyOjpjcmVhdGUoZnJhbWUsIGNsaWVudCwgcmVxdWVzdCk7CiAgICAgaWYgKGxvYWRlcikK
LSAgICAgICAgc2NoZWR1bGVMb2FkKGxvYWRlci5nZXQoKSwgMCwgZnJhbWUtPmRvY3VtZW50KCkt
PnJlZmVycmVyUG9saWN5KCkgPT0gUmVmZXJyZXJIZWFkZXJQb2xpY3k6OkRlZmF1bHQpOworICAg
ICAgICBzY2hlZHVsZUxvYWQobG9hZGVyLmdldCgpLCAwLCBmcmFtZS0+ZG9jdW1lbnQoKS0+cmVm
ZXJyZXJQb2xpY3koKSA9PSBSZWZlcnJlclBvbGljeTo6RGVmYXVsdCk7CiAgICAgcmV0dXJuIGxv
YWRlcjsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277909</attachid>
            <date>2016-05-02 09:00:59 -0700</date>
            <delta_ts>2016-05-02 22:20:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157257-20160502090136.patch</filename>
            <type>text/plain</type>
            <size>191422</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwMzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWIzMDA4Y2RjMWM3MWMy
YjQwYWE2YTYxNGU4ODNiMmQwYTg2N2QyNC4uMDIzZTNiYTc1ODg2NTA5YjkzZjFjNTA3ZGQ3ODQz
MzNjNTkyMGYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1NyBAQAorMjAxNi0wNS0wMiAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIElETCBlbnVtZXJh
dGlvbnMgdG8gYmUgbmVzdGVkIGluIHRoZWlyIEMrKyBjbGFzcyBpbnN0ZWFkIG9mIGF0IFdlYkNv
cmUgbmFtZXNwYWNlIGxldmVsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTcyNTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBDaHJpcyBhbmQgQWxleCByZXF1ZXN0ZWQgdGhpcyBhbHRlcm5hdGUgc3R5bGUs
IHdoZXJlIHRoZSBlbnVtIGNsYXNzIGZvciBlYWNoIGVudW1lcmF0aW9uCisgICAgICAgIGdvZXMg
aW5zaWRlIHRoZSBjbGFzcyBmb3IgdGhlIGludGVyZmFjZSB0aGUgZW51bWVyYXRpb24gaXMgdXNl
ZCBpbi4gQWxzbyBtYWRlIGEgcnVsZSB0aGF0CisgICAgICAgIGtlZXBzIHRoZSBuYW1lcyBzaG9y
dCBhbmQgbm90IHJlZHVuZGFudCB3aXRoIHRoZSBjbGFzcyBuYW1lIHRoZXkgYXJlIG5lc3RlZCBp
bi4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hPcHRpb25zLmg6IE1vdmVkIGFsbCB0
aGUgZW51bSBjbGFzcyB0eXBlcyBpbnRvIHRoZSBzdHJ1Y3QuCisKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRSZWZlcnJlclBv
bGljeSk6IFVwZGF0ZWQuCisgICAgICAgIChXZWJDb3JlOjpzZXRNb2RlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpzZXRDcmVkZW50aWFscyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
c2V0Q2FjaGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnNldFJlZGlyZWN0KTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpidWlsZE9wdGlvbnMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OmJ1aWxkSGVhZGVycyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXF1ZXN0
OjpjcmVhdGUpOiBEaXR0by4KKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5o
OiBVc2VkICJ1c2luZyIgdG8gcmVwZWF0IHRoZSB0eXBlcyBmcm9tIEZldGNoT3B0aW9ucworICAg
ICAgICBoZXJlIGluIEZldGNoUmVxdWVzdC4gVGhhdCB3YXkgdGhlIGdlbmVyYXRlZCBiaW5kaW5n
cyBjYW4gZmluZCB0aGUgdHlwZXMsIGFuZCB3ZSBkb24ndAorICAgICAgICBuZWVkIHRvIGRvIGFu
eSB0cmljayBsaWtlIFtJbXBsZW1lbnRlZEFzXSBpbiB0aGQgSURMIHRvIG1ha2UgaXQgd29yay4K
KworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjplcnJvcik6IFVwZGF0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaFJlc3BvbnNlOjpyZWRpcmVjdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hSZXNwb25zZTo6RmV0Y2hSZXNwb25zZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RmV0
Y2hSZXNwb25zZTo6c3RhcnRGZXRjaGluZyk6IERpdHRvLgorICAgICAgICAqIE1vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5oOiBNb3ZlZCBlbnVtIGNsYXNzIGludG8gdGhlIGNsYXNzLgorCisg
ICAgICAgICogTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNIb3N0OjpleHRlcm5hbERldmljZVR5cGUpOiBV
cGRhdGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9z
dC5oOiBNb3ZlZCBlbnVtIGNsYXNzcyBpbnRvIHRoZSBjbGFzcy4KKworICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNlc3Npb246Ok1lZGlhU2Vzc2lvbik6IFVwZGF0ZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRp
YXNlc3Npb24vTWVkaWFTZXNzaW9uLmg6IE1vdmVkIGVudW0gY2xhc3NzIGludG8gdGhlIGNsYXNz
LgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6YWRkU291cmNlQnVmZmVyKTogVXBkYXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpyZW1vdmVTb3VyY2VCdWZmZXIpOiBEaXR0by4K
KworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaDogTW92ZWQgZW51
bSBjbGFzcyBpbnRvIHRoZSBjbGFzcy4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2Uv
U291cmNlQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6c291cmNl
QnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVSZW5kZXJpbmdFcnJvcik6IFVwZGF0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OmFwcGVuZEVycm9yKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlU2FtcGxl
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnRleHRUcmFja01vZGVD
aGFuZ2VkKTogRGl0dG8uCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1
ZmZlci5oOiBSZW1vdmVkIGluY29ycmVjdCBmb3J3YXJkIGRlY2xhcmF0aW9uCisgICAgICAgIG9m
IEVuZE9mU3RyZWFtRXJyb3IgdGhhdCBhbHNvIG5vdyBzZWVtcyB0byBiZSB1bm5lZWRlZC4gTW92
ZWQgZW51bSBjbGFzcyBpbnRvCisgICAgICAgIHRoZSBjbGFzcy4KKworICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhRGV2aWNlSW5mbzo6TWVkaWFEZXZpY2VJbmZvKTogVXBkYXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhRGV2aWNlSW5mbzo6Y3JlYXRlKTogRGl0dG8uCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYURldmljZUluZm8uaDogTW92ZWQgZW51bSBjbGFzcyBpbnRvIHRoZSBj
bGFzcy4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZXNSZXF1ZXN0OjpkaWRDb21wbGV0
ZVRyYWNrU291cmNlSW5mb1JlcXVlc3QpOiBVcGRhdGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0
cmVhbVRyYWNrOjpyZWFkeVN0YXRlKTogVXBkYXRlZC4KKworICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oOiBNb3ZlZCBlbnVtIGNsYXNzIGludG8gdGhlIGNs
YXNzLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENDb25maWd1cmF0aW9uLmg6
IE1vdmVkIGVudW0gY2xhc3NlcyBpbnRvIHRoZSBjbGFzcy4KKworICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0Lmg6IE1vdmVkIGVudW0gY2xhc3MgaW50byB0aGUgY2xhc3Mu
CisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnByb2Nlc3NvclR5cGUpOiBVcGRhdGVkLgorICAgICAgICAoV2ViQ29yZTo6
V2F2ZVNoYXBlck5vZGU6Om92ZXJzYW1wbGUpOiBEaXR0by4KKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmg6IE1vdmVkIGVudW0gY2xhc3MgaW50byB0aGUgY2xhc3Mu
CisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlKTogVXBkYXRlZC4KKwor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAo
R2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RCb2R5KTogUmVtb3ZlZCB1bm5lZWRlZCAkaW50ZXJm
YWNlTmFtZSBhcmd1bWVudC4KKyAgICAgICAgKEdldEF0dHJpYnV0ZUdldHRlck5hbWUpOiBEaXR0
by4KKyAgICAgICAgKEdldEF0dHJpYnV0ZVNldHRlck5hbWUpOiBEaXR0by4KKyAgICAgICAgKEdl
dEZ1bmN0aW9uTmFtZSk6IFR3ZWFrZWQgc3R5bGUuCisgICAgICAgIChBdHRyaWJ1dGVTaG91bGRC
ZU9uSW5zdGFuY2VGb3JDb21wYXRpYmlsaXR5KTogRGVsZXRlZC4gV2FzIGEgZnVuY3Rpb24gdGhh
dAorICAgICAgICBhbHdheXMgcmV0dXJuZWQgMC4KKyAgICAgICAgKEF0dHJpYnV0ZVNob3VsZEJl
T25JbnN0YW5jZSk6IFJlbW92ZWQgdGhlIGNhbGwgdG8gdGhlIGZ1bmN0aW9uIGFib3ZlLgorICAg
ICAgICAoSXNDbGFzc05hbWVXb3JkQm91bmRhcnkpOiBBZGRlZC4gSGVscGVyIGZvciBmdW5jdGlv
biBiZWxvdy4KKyAgICAgICAgKFByZWZpeElzV29yZHNUaGF0TWF0Y2hTdGFydE9yRW5kV29yZHMp
OiBEaXR0by4KKyAgICAgICAgKEdldEVudW1lcmF0aW9uQ2xhc3NOYW1lKTogQWRkZWQgYW4gJGlu
dGVyZmFjZSBhcmd1bWVudCBhbmQgY2hhbmdlZCB0aGlzCisgICAgICAgIHNvIGl0IGNyZWF0ZXMg
YSBuZXN0ZWQgbmFtZSBpbnNpZGUgdGhlIGNsYXNzIHJhdGhlciB0aGFuIGEgdG9wIGxldmVsIG5h
bWUKKyAgICAgICAgZm9yIHVzZSBhdCB0aGUgV2ViQ29yZSBuYW1lc3BhY2UgbGV2ZWwuCisgICAg
ICAgIChHZXRFbnVtZXJhdGlvbkNsYXNzSWRlbnRpZmllcik6IEFkZGVkLiBDYWxscyBHZXRFbnVt
ZXJhdGlvbkNsYXNzTmFtZSBhbmQKKyAgICAgICAgbWFrZXMgYSBmbGF0dGVuZWQgbmFtZSB3aXRo
b3V0ICI6OiIgdGhhdCBjYW4gYmUgdXNlZCBpbiBhbiBpZGVudGlmaWVyLgorICAgICAgICAoR2Vu
ZXJhdGVFbnVtZXJhdGlvbkltcGxlbWVudGF0aW9uQ29udGVudCk6IFJlbmFtZWQgZnJvbSBHZXRY
WFguIEFkZGVkIGFuCisgICAgICAgICRpbnRlcmZhY2UgYXJndW1lbnQsIHNvIGl0IGNhbiBwYXNz
IHRoYXQgYWxvbmcgdG8gdGhlIGZ1bmN0aW9ucyBhYm92ZS4KKyAgICAgICAgKEdlbmVyYXRlSGVh
ZGVyKTogVXBkYXRlZCB0byBub3QgcGFzcyAkaW50ZXJmYWNlTmFtZS4KKyAgICAgICAgKEdlbmVy
YXRlUHJvcGVydGllc0hhc2hUYWJsZSk6IERpdHRvLgorICAgICAgICAoR2VuZXJhdGVPdmVybG9h
ZGVkRnVuY3Rpb24pOiBSZW1vdmVkIHVubmVlZGVkICRpbnRlcmZhY2VOYW1lIGFyZ3VtZW50Lgor
ICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6IFVwZGF0ZWQgZm9yIGNoYW5nZXMgYWJv
dmUuIFR3ZWFrZWQgZm9ybWF0dGluZy4KKyAgICAgICAgKEdlbmVyYXRlRnVuY3Rpb25DYXN0ZWRU
aGlzKTogUmVtb3ZlZCB1bm5lZWRlZCAkaW50ZXJmYWNlTmFtZSBhcmd1bWVudC4KKyAgICAgICAg
KEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrKTogRGl0dG8uIEFsc28gc3RyZWFtbGluZWQgaW1wbGVt
ZW50YXRpb24gYSBiaXQKKyAgICAgICAgYW5kIG1hZGUgdGhlIElzRW51bVR5cGUgc2VjdGlvbiBj
YWxsIHRoZSBuZXcgZnVuY3Rpb25zLgorICAgICAgICAoR2VuZXJhdGVDYWxsYmFja0ltcGxlbWVu
dGF0aW9uKTogRGl0dG8uCisgICAgICAgIChKU1ZhbHVlVG9OYXRpdmUpOiBBZGRlZCBhbiAkaW50
ZXJmYWNlIGFyZ3VtZW50IGFuZCBwYXNzIGl0IGFsb25nIHdoZW4KKyAgICAgICAgZGVhbGluZyB3
aXRoIGVudW1lcmF0aW9ucy4KKyAgICAgICAgKEdlbmVyYXRlUHJvdG90eXBlRGVjbGFyYXRpb24p
OiBSZW1vdmVkIHVubmVlZGVkICRpbnRlcmZhY2VOYW1lIGFyZ3VtZW50LgorICAgICAgICAoR2Vu
ZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uKTogRGl0dG8uCisgICAgICAgIChHZW5lcmF0ZUNv
bnN0cnVjdG9yRGVmaW5pdGlvbnMpOiBEaXR0by4KKyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0
b3JEZWZpbml0aW9uKTogRGl0dG8uCisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVy
TWV0aG9kcyk6IERpdHRvLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE9iai5jcHA6IFJlZ2VuZXJhdGVkLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Rlc3RPYmouaWRsOiBBZGRlZCBzb21lIG5ldyBlbnVtcyB0aGF0IHRlc3Qgc29tZQorICAg
ICAgICBvZiB0aGUgbG9naWMgYWJvdmUuCisKKyAgICAgICAgKiBjcnlwdG8vQ3J5cHRvS2V5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleTo6Q3J5cHRvS2V5KTogVXBkYXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleTo6dXNhZ2VzKTogRGl0dG8uCisgICAgICAgICogY3J5
cHRvL0NyeXB0b0tleS5oOiBNb3ZlZCBlbnVtIGNsYXNzIHR5cGVzIGluc2lkZSB0aGUgQ3J5cHRv
S2V5IGNsYXNzLgorICAgICAgICBBZGRlZCBjb21tZW50cyBhYm91dCB0aGUgdHdvIHNpbWlsYXIg
YnV0IGRpc3RpbmN0IHR5cGVzIG5hbWVkCisgICAgICAgIENyeXB0b0tleVVzYWdlIGFuZCBDcnlw
dG9LZXk6OlVzYWdlLgorCisgICAgICAgICogY3NzL0ZvbnRGYWNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRGYWNlOjpzdGF0dXMpOiBVcGRhdGVkLgorICAgICAgICAqIGNzcy9Gb250RmFj
ZS5oOiBNb3ZlZCBlbnVtIGNsYXNzIGludG8gdGhlIGNsYXNzLgorCisgICAgICAgICogY3NzL0Zv
bnRGYWNlU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlU2V0OjpzdGF0dXMpOiBV
cGRhdGVkLgorICAgICAgICAqIGNzcy9Gb250RmFjZVNldC5oOiBNb3ZlZCBlbnVtIGNsYXNzIGlu
dG8gdGhlIGNsYXNzLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpEb2N1bWVudCk6IFVwZGF0ZWQgZm9yIHRoZSBuYW1lIGNoYW5nZSBi
YWNrIGZyb20KKyAgICAgICAgUmVmZXJyZXJIZWFkZXJQb2xpY3kgdG8gUmVmZXJyZXJQb2xpY3ku
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cHJvY2Vzc1JlZmVycmVyUG9saWN5KTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YXBwbHlDb250ZW50RGlzcG9zaXRpb25B
dHRhY2htZW50U2FuZGJveCk6IERpdHRvLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOiBNb3Jl
IG9mIHRoZSBzYW1lLgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRJbnRlcm5hbCk6IFVwZGF0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdl
ZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNr
S2luZENoYW5nZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OnRleHRUcmFja0FkZEN1ZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnRleHRUcmFja0FkZEN1ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50Ojpjb25maWd1cmVUZXh0VHJhY2tHcm91cCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0U2VsZWN0ZWRUZXh0VHJhY2spOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNvbmZpZ3VyZVRleHRUcmFja3Mp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Omhhc0Nsb3NlZENh
cHRpb25zKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpjb25m
aWd1cmVUZXh0VHJhY2tEaXNwbGF5KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjptYXJrQ2FwdGlvbkFuZFN1YnRpdGxlVHJhY2tzQXNVbmNvbmZpZ3VyZWQpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnRvUGxhdGZvcm0pOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om91dE9mQmFuZFRyYWNrU291cmNlcyk6IERpdHRvLgor
ICAgICAgICAqIGh0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVHJhY2tFbGVtZW50OjpzY2hlZHVsZUxvYWQpOiBEaXR0by4KKworICAgICAgICAqIGh0bWwv
SFRNTFZpZGVvRWxlbWVudC5oOiBNb3ZlZCBlbnVtIGNsYXNzIGludG8gY2xhc3MuCisKKyAgICAg
ICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuaWRsOiBBZGRlZCB0aGUgbWlzc2luZyBjb25kaXRp
b25hbCBvbgorICAgICAgICBWaWRlb1ByZXNlbnRhdGlvbk1vZGUsIGFuZCBhbHNvIG1vdmVkIGl0
IHRvIHRoZSBib3R0b20gb2YgdGhlIGZpbGUKKyAgICAgICAgdG8gd29yayBhcm91bmQgd2hhdCBp
cyBhcHBhcmVudGx5IGEgYnVnIGluIHRoZSBJREwgcGFyc2VyLgorCisgICAgICAgICogaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRv
V2luZFJ1bGUpOiBVcGRhdGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpmaWxsKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OmNsaXApOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6ZmlsbEludGVybmFsKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsaXBJbnRlcm5hbCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjppc1BvaW50SW5QYXRoKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmlzUG9pbnRJblBhdGhJ
bnRlcm5hbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6c21vb3RoaW5nVG9JbnRlcnBvbGF0
aW9uUXVhbGl0eSk6IERpdHRvLgorCisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmg6IE1vdmVkIGVudW0gY2xhc3MgdHlwZXMgaW50byB0aGUgY2xhc3MuCisK
KyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OnVw
ZGF0ZURpc3BsYXkpOiBVcGRhdGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGV4
dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6dXBkYXRlRGlzcGxheSk6IERpdHRvLgorCisgICAgICAg
ICogaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5i
YW5kVGV4dFRyYWNrOjpzZXRNb2RlKTogVXBkYXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRvUHJp
dmF0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrOjpzZXRNb2Rl
SW50ZXJuYWwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFjazo6dXBk
YXRlS2luZEZyb21Qcml2YXRlKTogRGl0dG8uCisgICAgICAgICogaHRtbC90cmFjay9JbmJhbmRU
ZXh0VHJhY2suaDogRGl0dG8uCisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2suY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpUZXh0VHJhY2spOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OlRleHRUcmFjazo6ZW5hYmxlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFRyYWNrOjpraW5kS2V5d29yZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRy
YWNrOjpzZXRLaW5kKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnNldEtp
bmRLZXl3b3JkSWdub3JpbmdBU0NJSUNhc2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRUcmFjazo6c2V0TW9kZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpj
dWVzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmFjdGl2ZUN1ZXMpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6YWRkQ3VlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnJlZ2lvbnMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlRleHRUcmFjazo6aXNSZW5kZXJlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VGV4
dFRyYWNrOjppc01haW5Qcm9ncmFtQ29udGVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFRyYWNrOjpjb250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMpOiBEaXR0by4KKworICAgICAg
ICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrLmg6IE1vdmVkIGVudW0gY2xhc3MgdHlwZXMgaW50byB0
aGUgY2xhc3MuCisKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmRpc3BhdGNoRXZlbnQpOiBVcGRhdGVkLgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjppc0FjdGl2ZSk6IERpdHRvLgorICAgICAgICAq
IGxvYWRlci9GcmFtZU5ldHdvcmtpbmdDb250ZXh0Lmg6IERpdHRvLgorICAgICAgICAqIHBhZ2Uv
Q2FwdGlvblVzZXJQcmVmZXJlbmNlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNl
clByZWZlcmVuY2VzOjpzb3J0ZWRUcmFja0xpc3RGb3JNZW51KTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp0ZXh0VHJhY2tTZWxlY3Rpb25TY29yZSk6
IERpdHRvLgorICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OnRleHRU
cmFja1NlbGVjdGlvblNjb3JlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNl
clByZWZlcmVuY2VzTWVkaWFBRjo6c29ydGVkVHJhY2tMaXN0Rm9yTWVudSk6IERpdHRvLgorCisg
ICAgICAgICogcGFnZS9TZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1
cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcik6IFVwZGF0ZWQgc2luY2Ugd2UKKyAg
ICAgICAgY2hhbmdlZCBSZWZlcnJlckhlYWRlclBvbGljeSBiYWNrIHRvIFJlZmVycmVyUG9saWN5
LgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlQb2xpY3kuaDogRGl0dG8uCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9SZWZlcnJlclBvbGljeS5oOiBDaGFuZ2VkIFJlZmVycmVySGVhZGVyUG9saWN5IG5h
bWUgYmFjaworICAgICAgICB0byBSZWZlcnJlclBvbGljeSBub3cgdGhhdCBuZXN0aW5nIGluc2lk
ZSBhIGNsYXNzIGVsaW1pbmF0ZWQgdGhlIGNvbmZsaWN0OworICAgICAgICBzdGlsbCBzaG91bGQg
bWVyZ2UgdGhlbSBhbmQgdGhhdCBGSVhNRSByZW1haW5zLgorCisgICAgICAgICogcGxhdGZvcm0v
Y29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW06CisgICAgICAgIChX
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6dXBkYXRlRm9yRXZlbnROYW1lKTog
VXBkYXRlZC4KKyAgICAgICAgKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Ojp1
cGRhdGVMZWdpYmxlT3B0aW9ucyk6IERpdHRvLgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5h
bHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9SZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSk6
IFVwZGF0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldE92ZXJyaWRlQ2FjaGVQ
b2xpY3kpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnRvUmVzb3VyY2VMb2FkUHJpb3JpdHkp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0T3ZlcnJpZGVSZXNvdXJj
ZUxvYWRQcmlvcml0eSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6dG9BdXRvRmlsbEJ1dHRv
blR5cGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0U2hvd0F1dG9G
aWxsQnV0dG9uKTogRGl0dG8uCisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOiBNb3Zl
ZCBlbnVtIGNsYXNzIHR5cGVzIGludG8gY2xhc3MuCisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVy
bmFscy5pZGw6IFJlbW92ZWQgdGhlICJJbnRlcm5hbHMiIHByZWZpeGVzIHdlIGFkZGVkCisgICAg
ICAgIHRvIHJlc29sdmUgYW1iaWd1aXR5IGJlZm9yZS4gTmVzdGluZyB0aGVzZSBpbiB0aGUgY2xh
c3Mgbm93IHRha2VzIGNhcmUKKyAgICAgICAgb2YgdGhlIGFtYmlndWl0eSBpbnN0ZWFkLgorCisg
ICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0
dHBSZXF1ZXN0OjpyZXNwb25zZVRleHQpOiBVcGRhdGVkLgorICAgICAgICAoV2ViQ29yZTo6WE1M
SHR0cFJlcXVlc3Q6OmRpZENhY2hlUmVzcG9uc2VKU09OKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VYTUwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZUJsb2IpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZUFycmF5QnVmZmVyKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6c2V0UmVzcG9uc2VUeXBlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6b3Blbik6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6c2hvdWxkRGVjb2RlUmVzcG9uc2UpOiBEaXR0by4KKworICAgICAgICAqIHhtbC9YTUxI
dHRwUmVxdWVzdC5oOiBNb3ZlZCB0aGUgZW51bSBjbGFzcyBpbnRvIHRoZSBjbGFzcy4KKwogMjAx
Ni0wNS0wMiAgWW9hdiBXZWlzcyAgPHlvYXZAeW9hdi53cz4KIAogICAgICAgICBNb3ZlIFJlc291
cmNlVGltaW5nIGJlaGluZCBhIHJ1bnRpbWUgZmxhZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDU0MTI4ZTQ0NTFj
YzI0ODcwMDJmMDVhYTk4NDQyOTU5ZDU2ZWE3NjUuLjRhNmMxZTQwYThjMzNjM2I2MDE4MmE1Njhj
OTc3YTJmYzFkN2E4MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNi0wNS0wMiAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIElETCBlbnVt
ZXJhdGlvbnMgdG8gYmUgbmVzdGVkIGluIHRoZWlyIEMrKyBjbGFzcyBpbnN0ZWFkIG9mIGF0IFdl
YkNvcmUgbmFtZXNwYWNlIGxldmVsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTcyNTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2UpOiBVcGRh
dGVkIHNpbmNlIHdlIGNoYW5nZWQKKyAgICAgICAgUmVmZXJyZXJIZWFkZXJQb2xpY3kgYmFjayB0
byBSZWZlcnJlclBvbGljeS4KKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnNj
aGVkdWxlUGx1Z2luU3RyZWFtTG9hZCk6IERpdHRvLgorCiAyMDE2LTA1LTAxICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgRmV0Y2ggdG8gdXNlIGVudW0g
Y2xhc3MgaW5zdGVhZCBvZiBzdHJpbmcgZm9yIGVudW1lcmF0aW9ucwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaE9wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hPcHRpb25zLmgKaW5kZXggODFmMDdkMTlhZTAwNTJiYmJmZTJl
ZTZjMzFiNGIwYTEzZGQ2ZTJmOS4uOTkzZDcwOGE4MDM2YjhiZTVlOTRjODdhZjEzNDk2MTk3MDg5
MTVmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaE9wdGlv
bnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoT3B0aW9ucy5oCkBA
IC0zMiwyMSArMzIsMjYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIFJl
ZmVycmVyUG9saWN5IHsgRW1wdHlTdHJpbmcsIE5vUmVmZXJyZXIsIE5vUmVmZXJyZXJXaGVuRG93
bmdyYWRlLCBPcmlnaW5Pbmx5LCBPcmlnaW5XaGVuQ3Jvc3NPcmlnaW4sIFVuc2FmZVVybCB9Owot
ZW51bSBjbGFzcyBSZXF1ZXN0Q2FjaGUgeyBEZWZhdWx0LCBOb1N0b3JlLCBSZWxvYWQsIE5vQ2Fj
aGUsIEZvcmNlQ2FjaGUgfTsKLWVudW0gY2xhc3MgUmVxdWVzdENyZWRlbnRpYWxzIHsgT21pdCwg
U2FtZU9yaWdpbiwgSW5jbHVkZSB9OwotZW51bSBjbGFzcyBSZXF1ZXN0RGVzdGluYXRpb24geyBF
bXB0eVN0cmluZywgRG9jdW1lbnQsIFNoYXJlZHdvcmtlciwgU3VicmVzb3VyY2UsIFVua25vd24s
IFdvcmtlciB9OwotZW51bSBjbGFzcyBSZXF1ZXN0TW9kZSB7IE5hdmlnYXRlLCBTYW1lT3JpZ2lu
LCBOb0NvcnMsIENvcnMgfTsKLWVudW0gY2xhc3MgUmVxdWVzdFJlZGlyZWN0IHsgRm9sbG93LCBF
cnJvciwgTWFudWFsIH07Ci1lbnVtIGNsYXNzIFJlcXVlc3RUeXBlIHsgRW1wdHlTdHJpbmcsIEF1
ZGlvLCBGb250LCBJbWFnZSwgU2NyaXB0LCBTdHlsZSwgVHJhY2ssIFZpZGVvIH07Ci0KIHN0cnVj
dCBGZXRjaE9wdGlvbnMgewotICAgIFJlcXVlc3RUeXBlIHR5cGUgeyBSZXF1ZXN0VHlwZTo6RW1w
dHlTdHJpbmcgfTsKLSAgICBSZXF1ZXN0RGVzdGluYXRpb24gZGVzdGluYXRpb24geyBSZXF1ZXN0
RGVzdGluYXRpb246OkVtcHR5U3RyaW5nIH07Ci0gICAgUmVxdWVzdE1vZGUgbW9kZSB7IFJlcXVl
c3RNb2RlOjpOb0NvcnMgfTsKLSAgICBSZXF1ZXN0Q3JlZGVudGlhbHMgY3JlZGVudGlhbHMgeyBS
ZXF1ZXN0Q3JlZGVudGlhbHM6Ok9taXQgfTsKLSAgICBSZXF1ZXN0Q2FjaGUgY2FjaGUgeyBSZXF1
ZXN0Q2FjaGU6OkRlZmF1bHQgfTsKLSAgICBSZXF1ZXN0UmVkaXJlY3QgcmVkaXJlY3QgeyBSZXF1
ZXN0UmVkaXJlY3Q6OkZvbGxvdyB9OworICAgIGVudW0gY2xhc3MgVHlwZSB7IEVtcHR5U3RyaW5n
LCBBdWRpbywgRm9udCwgSW1hZ2UsIFNjcmlwdCwgU3R5bGUsIFRyYWNrLCBWaWRlbyB9OworICAg
IFR5cGUgdHlwZSB7IFR5cGU6OkVtcHR5U3RyaW5nIH07CisKKyAgICBlbnVtIGNsYXNzIERlc3Rp
bmF0aW9uIHsgRW1wdHlTdHJpbmcsIERvY3VtZW50LCBTaGFyZWR3b3JrZXIsIFN1YnJlc291cmNl
LCBVbmtub3duLCBXb3JrZXIgfTsKKyAgICBEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbiB7IERlc3Rp
bmF0aW9uOjpFbXB0eVN0cmluZyB9OworCisgICAgZW51bSBjbGFzcyBNb2RlIHsgTmF2aWdhdGUs
IFNhbWVPcmlnaW4sIE5vQ29ycywgQ29ycyB9OworICAgIE1vZGUgbW9kZSB7IE1vZGU6Ok5vQ29y
cyB9OworCisgICAgZW51bSBjbGFzcyBDcmVkZW50aWFscyB7IE9taXQsIFNhbWVPcmlnaW4sIElu
Y2x1ZGUgfTsKKyAgICBDcmVkZW50aWFscyBjcmVkZW50aWFscyB7IENyZWRlbnRpYWxzOjpPbWl0
IH07CisKKyAgICBlbnVtIGNsYXNzIENhY2hlIHsgRGVmYXVsdCwgTm9TdG9yZSwgUmVsb2FkLCBO
b0NhY2hlLCBGb3JjZUNhY2hlIH07CisgICAgQ2FjaGUgY2FjaGUgeyBDYWNoZTo6RGVmYXVsdCB9
OworCisgICAgZW51bSBjbGFzcyBSZWRpcmVjdCB7IEZvbGxvdywgRXJyb3IsIE1hbnVhbCB9Owor
ICAgIFJlZGlyZWN0IHJlZGlyZWN0IHsgUmVkaXJlY3Q6OkZvbGxvdyB9OworCisgICAgZW51bSBj
bGFzcyBSZWZlcnJlclBvbGljeSB7IEVtcHR5U3RyaW5nLCBOb1JlZmVycmVyLCBOb1JlZmVycmVy
V2hlbkRvd25ncmFkZSwgT3JpZ2luT25seSwgT3JpZ2luV2hlbkNyb3NzT3JpZ2luLCBVbnNhZmVV
cmwgfTsKICAgICBSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSB7IFJlZmVycmVyUG9saWN5
OjpFbXB0eVN0cmluZyB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlcXVlc3QuY3BwCmluZGV4IDEwZjdjNWNhZjZmN2ViOTJhNmQwMzQyZGI2NjA1MTBhOGI5
M2Q4ZmEuLjMwM2E4MTFlZjJjYmVkMWNiNmJiNTU2MDUyYjVkMGI3ZGUzNjUyMWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAKQEAgLTQyLDE3ICs0
MiwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgYm9vbCBzZXRSZWZlcnJlclBvbGlj
eShGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXJQb2xpY3kpCiB7
CiAgICAgaWYgKHJlZmVycmVyUG9saWN5LmlzRW1wdHkoKSkKLSAgICAgICAgb3B0aW9ucy5yZWZl
cnJlclBvbGljeSA9IFJlZmVycmVyUG9saWN5OjpFbXB0eVN0cmluZzsKKyAgICAgICAgb3B0aW9u
cy5yZWZlcnJlclBvbGljeSA9IEZldGNoT3B0aW9uczo6UmVmZXJyZXJQb2xpY3k6OkVtcHR5U3Ry
aW5nOwogICAgIGVsc2UgaWYgKHJlZmVycmVyUG9saWN5ID09ICJuby1yZWZlcnJlciIpCi0gICAg
ICAgIG9wdGlvbnMucmVmZXJyZXJQb2xpY3kgPSBSZWZlcnJlclBvbGljeTo6Tm9SZWZlcnJlcjsK
KyAgICAgICAgb3B0aW9ucy5yZWZlcnJlclBvbGljeSA9IEZldGNoT3B0aW9uczo6UmVmZXJyZXJQ
b2xpY3k6Ok5vUmVmZXJyZXI7CiAgICAgZWxzZSBpZiAocmVmZXJyZXJQb2xpY3kgPT0gIm5vLXJl
ZmVycmVyLXdoZW4tZG93bmdyYWRlIikKLSAgICAgICAgb3B0aW9ucy5yZWZlcnJlclBvbGljeSA9
IFJlZmVycmVyUG9saWN5OjpOb1JlZmVycmVyV2hlbkRvd25ncmFkZTsKKyAgICAgICAgb3B0aW9u
cy5yZWZlcnJlclBvbGljeSA9IEZldGNoT3B0aW9uczo6UmVmZXJyZXJQb2xpY3k6Ok5vUmVmZXJy
ZXJXaGVuRG93bmdyYWRlOwogICAgIGVsc2UgaWYgKHJlZmVycmVyUG9saWN5ID09ICJvcmlnaW4t
b25seSIpCi0gICAgICAgIG9wdGlvbnMucmVmZXJyZXJQb2xpY3kgPSBSZWZlcnJlclBvbGljeTo6
T3JpZ2luT25seTsKKyAgICAgICAgb3B0aW9ucy5yZWZlcnJlclBvbGljeSA9IEZldGNoT3B0aW9u
czo6UmVmZXJyZXJQb2xpY3k6Ok9yaWdpbk9ubHk7CiAgICAgZWxzZSBpZiAocmVmZXJyZXJQb2xp
Y3kgPT0gIm9yaWdpbi13aGVuLWNyb3NzLW9yaWdpbiIpCi0gICAgICAgIG9wdGlvbnMucmVmZXJy
ZXJQb2xpY3kgPSBSZWZlcnJlclBvbGljeTo6T3JpZ2luV2hlbkNyb3NzT3JpZ2luOworICAgICAg
ICBvcHRpb25zLnJlZmVycmVyUG9saWN5ID0gRmV0Y2hPcHRpb25zOjpSZWZlcnJlclBvbGljeTo6
T3JpZ2luV2hlbkNyb3NzT3JpZ2luOwogICAgIGVsc2UgaWYgKHJlZmVycmVyUG9saWN5ID09ICJ1
bnNhZmUtdXJsIikKLSAgICAgICAgb3B0aW9ucy5yZWZlcnJlclBvbGljeSA9IFJlZmVycmVyUG9s
aWN5OjpVbnNhZmVVcmw7CisgICAgICAgIG9wdGlvbnMucmVmZXJyZXJQb2xpY3kgPSBGZXRjaE9w
dGlvbnM6OlJlZmVycmVyUG9saWN5OjpVbnNhZmVVcmw7CiAgICAgZWxzZQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CkBAIC02MSwxMyArNjEsMTMgQEAgc3RhdGljIGJv
b2wgc2V0UmVmZXJyZXJQb2xpY3koRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcm
IHJlZmVycmVyUG9saWMKIHN0YXRpYyBib29sIHNldE1vZGUoRmV0Y2hPcHRpb25zJiBvcHRpb25z
LCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgaWYgKG1vZGUgPT0gIm5hdmlnYXRlIikKLSAg
ICAgICAgb3B0aW9ucy5tb2RlID0gUmVxdWVzdE1vZGU6Ok5hdmlnYXRlOworICAgICAgICBvcHRp
b25zLm1vZGUgPSBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5hdmlnYXRlOwogICAgIGVsc2UgaWYgKG1v
ZGUgPT0gInNhbWUtb3JpZ2luIikKLSAgICAgICAgb3B0aW9ucy5tb2RlID0gUmVxdWVzdE1vZGU6
OlNhbWVPcmlnaW47CisgICAgICAgIG9wdGlvbnMubW9kZSA9IEZldGNoT3B0aW9uczo6TW9kZTo6
U2FtZU9yaWdpbjsKICAgICBlbHNlIGlmIChtb2RlID09ICJuby1jb3JzIikKLSAgICAgICAgb3B0
aW9ucy5tb2RlID0gUmVxdWVzdE1vZGU6Ok5vQ29yczsKKyAgICAgICAgb3B0aW9ucy5tb2RlID0g
RmV0Y2hPcHRpb25zOjpNb2RlOjpOb0NvcnM7CiAgICAgZWxzZSBpZiAobW9kZSA9PSAiY29ycyIp
Ci0gICAgICAgIG9wdGlvbnMubW9kZSA9IFJlcXVlc3RNb2RlOjpDb3JzOworICAgICAgICBvcHRp
b25zLm1vZGUgPSBGZXRjaE9wdGlvbnM6Ok1vZGU6OkNvcnM7CiAgICAgZWxzZQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CkBAIC03NiwxMSArNzYsMTEgQEAgc3RhdGlj
IGJvb2wgc2V0TW9kZShGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgbW9kZSkK
IHN0YXRpYyBib29sIHNldENyZWRlbnRpYWxzKEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3Qg
U3RyaW5nJiBjcmVkZW50aWFscykKIHsKICAgICBpZiAoY3JlZGVudGlhbHMgPT0gIm9taXQiKQot
ICAgICAgICBvcHRpb25zLmNyZWRlbnRpYWxzID0gUmVxdWVzdENyZWRlbnRpYWxzOjpPbWl0Owor
ICAgICAgICBvcHRpb25zLmNyZWRlbnRpYWxzID0gRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6
T21pdDsKICAgICBlbHNlIGlmIChjcmVkZW50aWFscyA9PSAic2FtZS1vcmlnaW4iKQotICAgICAg
ICBvcHRpb25zLmNyZWRlbnRpYWxzID0gUmVxdWVzdENyZWRlbnRpYWxzOjpTYW1lT3JpZ2luOwor
ICAgICAgICBvcHRpb25zLmNyZWRlbnRpYWxzID0gRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6
U2FtZU9yaWdpbjsKICAgICBlbHNlIGlmIChjcmVkZW50aWFscyA9PSAiaW5jbHVkZSIpCi0gICAg
ICAgIG9wdGlvbnMuY3JlZGVudGlhbHMgPSBSZXF1ZXN0Q3JlZGVudGlhbHM6OkluY2x1ZGU7Cisg
ICAgICAgIG9wdGlvbnMuY3JlZGVudGlhbHMgPSBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpJ
bmNsdWRlOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVl
OwpAQCAtODksMTUgKzg5LDE1IEBAIHN0YXRpYyBib29sIHNldENyZWRlbnRpYWxzKEZldGNoT3B0
aW9ucyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiBjcmVkZW50aWFscykKIHN0YXRpYyBib29sIHNl
dENhY2hlKEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiBjYWNoZSkKIHsKICAg
ICBpZiAoY2FjaGUgPT0gImRlZmF1bHQiKQotICAgICAgICBvcHRpb25zLmNhY2hlID0gUmVxdWVz
dENhY2hlOjpEZWZhdWx0OworICAgICAgICBvcHRpb25zLmNhY2hlID0gRmV0Y2hPcHRpb25zOjpD
YWNoZTo6RGVmYXVsdDsKICAgICBlbHNlIGlmIChjYWNoZSA9PSAibm8tc3RvcmUiKQotICAgICAg
ICBvcHRpb25zLmNhY2hlID0gUmVxdWVzdENhY2hlOjpOb1N0b3JlOworICAgICAgICBvcHRpb25z
LmNhY2hlID0gRmV0Y2hPcHRpb25zOjpDYWNoZTo6Tm9TdG9yZTsKICAgICBlbHNlIGlmIChjYWNo
ZSA9PSAicmVsb2FkIikKLSAgICAgICAgb3B0aW9ucy5jYWNoZSA9IFJlcXVlc3RDYWNoZTo6UmVs
b2FkOworICAgICAgICBvcHRpb25zLmNhY2hlID0gRmV0Y2hPcHRpb25zOjpDYWNoZTo6UmVsb2Fk
OwogICAgIGVsc2UgaWYgKGNhY2hlID09ICJuby1jYWNoZSIpCi0gICAgICAgIG9wdGlvbnMuY2Fj
aGUgPSBSZXF1ZXN0Q2FjaGU6Ok5vQ2FjaGU7CisgICAgICAgIG9wdGlvbnMuY2FjaGUgPSBGZXRj
aE9wdGlvbnM6OkNhY2hlOjpOb0NhY2hlOwogICAgIGVsc2UgaWYgKGNhY2hlID09ICJmb3JjZS1j
YWNoZSIpCi0gICAgICAgIG9wdGlvbnMuY2FjaGUgPSBSZXF1ZXN0Q2FjaGU6OkZvcmNlQ2FjaGU7
CisgICAgICAgIG9wdGlvbnMuY2FjaGUgPSBGZXRjaE9wdGlvbnM6OkNhY2hlOjpGb3JjZUNhY2hl
OwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwpAQCAt
MTA2LDExICsxMDYsMTEgQEAgc3RhdGljIGJvb2wgc2V0Q2FjaGUoRmV0Y2hPcHRpb25zJiBvcHRp
b25zLCBjb25zdCBTdHJpbmcmIGNhY2hlKQogc3RhdGljIGJvb2wgc2V0UmVkaXJlY3QoRmV0Y2hP
cHRpb25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIHJlZGlyZWN0KQogewogICAgIGlmIChyZWRp
cmVjdCA9PSAiZm9sbG93IikKLSAgICAgICAgb3B0aW9ucy5yZWRpcmVjdCA9IFJlcXVlc3RSZWRp
cmVjdDo6Rm9sbG93OworICAgICAgICBvcHRpb25zLnJlZGlyZWN0ID0gRmV0Y2hPcHRpb25zOjpS
ZWRpcmVjdDo6Rm9sbG93OwogICAgIGVsc2UgaWYgKHJlZGlyZWN0ID09ICJlcnJvciIpCi0gICAg
ICAgIG9wdGlvbnMucmVkaXJlY3QgPSBSZXF1ZXN0UmVkaXJlY3Q6OkVycm9yOworICAgICAgICBv
cHRpb25zLnJlZGlyZWN0ID0gRmV0Y2hPcHRpb25zOjpSZWRpcmVjdDo6RXJyb3I7CiAgICAgZWxz
ZSBpZiAocmVkaXJlY3QgPT0gIm1hbnVhbCIpCi0gICAgICAgIG9wdGlvbnMucmVkaXJlY3QgPSBS
ZXF1ZXN0UmVkaXJlY3Q6Ok1hbnVhbDsKKyAgICAgICAgb3B0aW9ucy5yZWRpcmVjdCA9IEZldGNo
T3B0aW9uczo6UmVkaXJlY3Q6Ok1hbnVhbDsKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE3Myw3ICsxNzMsNyBAQCBzdGF0aWMgYm9vbCBidWls
ZE9wdGlvbnMoRmV0Y2hSZXF1ZXN0OjpJbnRlcm5hbFJlcXVlc3QmIHJlcXVlc3QsIFNjcmlwdEV4
ZWN1dGlvbgogCiAgICAgaWYgKGluaXQuZ2V0KCJtb2RlIiwgdmFsdWUpICYmICFzZXRNb2RlKHJl
cXVlc3Qub3B0aW9ucywgdmFsdWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKHJl
cXVlc3Qub3B0aW9ucy5tb2RlID09IFJlcXVlc3RNb2RlOjpOYXZpZ2F0ZSkKKyAgICBpZiAocmVx
dWVzdC5vcHRpb25zLm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpOYXZpZ2F0ZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGluaXQuZ2V0KCJjcmVkZW50aWFscyIsIHZhbHVl
KSAmJiAhc2V0Q3JlZGVudGlhbHMocmVxdWVzdC5vcHRpb25zLCB2YWx1ZSkpCkBAIC0xOTYsNyAr
MTk2LDcgQEAgc3RhdGljIGJvb2wgYnVpbGRPcHRpb25zKEZldGNoUmVxdWVzdDo6SW50ZXJuYWxS
ZXF1ZXN0JiByZXF1ZXN0LCBTY3JpcHRFeGVjdXRpb24KIHN0YXRpYyBSZWZQdHI8RmV0Y2hIZWFk
ZXJzPiBidWlsZEhlYWRlcnMoY29uc3QgRGljdGlvbmFyeSYgaW5pdCwgY29uc3QgRmV0Y2hSZXF1
ZXN0OjpJbnRlcm5hbFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEZldGNoSGVhZGVycyogaW5wdXRI
ZWFkZXJzID0gbnVsbHB0cikKIHsKICAgICBGZXRjaEhlYWRlcnM6Okd1YXJkIGd1YXJkID0gRmV0
Y2hIZWFkZXJzOjpHdWFyZDo6UmVxdWVzdDsKLSAgICBpZiAocmVxdWVzdC5vcHRpb25zLm1vZGUg
PT0gUmVxdWVzdE1vZGU6Ok5vQ29ycykgeworICAgIGlmIChyZXF1ZXN0Lm9wdGlvbnMubW9kZSA9
PSBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5vQ29ycykgewogICAgICAgICBjb25zdCBTdHJpbmcmIG1l
dGhvZCA9IHJlcXVlc3QucmVxdWVzdC5odHRwTWV0aG9kKCk7CiAgICAgICAgIGlmIChtZXRob2Qg
IT0gIkdFVCIgJiYgbWV0aG9kICE9ICJQT1NUIiAmJiBtZXRob2QgIT0gIkhFQUQiKQogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNDQsOCArMjQ0LDggQEAgUmVmUHRyPEZldGNoUmVx
dWVzdD4gRmV0Y2hSZXF1ZXN0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgY29uc3QKICAgICB9CiAKICAgICBGZXRjaFJlcXVlc3Q6OkludGVybmFsUmVxdWVzdCBpbnRl
cm5hbFJlcXVlc3Q7Ci0gICAgaW50ZXJuYWxSZXF1ZXN0Lm9wdGlvbnMubW9kZSA9IFJlcXVlc3RN
b2RlOjpDb3JzOwotICAgIGludGVybmFsUmVxdWVzdC5vcHRpb25zLmNyZWRlbnRpYWxzID0gUmVx
dWVzdENyZWRlbnRpYWxzOjpPbWl0OworICAgIGludGVybmFsUmVxdWVzdC5vcHRpb25zLm1vZGUg
PSBNb2RlOjpDb3JzOworICAgIGludGVybmFsUmVxdWVzdC5vcHRpb25zLmNyZWRlbnRpYWxzID0g
Q3JlZGVudGlhbHM6Ok9taXQ7CiAgICAgaW50ZXJuYWxSZXF1ZXN0LnJlZmVycmVyID0gQVNDSUlM
aXRlcmFsKCJjbGllbnQiKTsKICAgICBpbnRlcm5hbFJlcXVlc3QucmVxdWVzdC5zZXRVUkwocmVx
dWVzdFVSTCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5o
CmluZGV4IDVmNTQ4MDY5ZGE1MjFiZDBkZjRhMzc0YmNhNTk2MTA5NzJkZjg2MDIuLmRiNGQyMjBj
MjdhMmRiM2MyMmI2YjlmODg2Njg2YzNjYmNjNzMzMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuaApAQCAtNTIsMTQgKzUyLDI5IEBAIHB1YmxpYzoKICAg
ICBjb25zdCBTdHJpbmcmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuYWxSZXF1ZXN0LnJl
cXVlc3QudXJsKCkuc3RyaW5nKCk7IH0KICAgICBGZXRjaEhlYWRlcnMmIGhlYWRlcnMoKSB7IHJl
dHVybiBtX2hlYWRlcnMuZ2V0KCk7IH0KIAotICAgIFJlcXVlc3RUeXBlIHR5cGUoKSBjb25zdDsK
LSAgICBSZXF1ZXN0RGVzdGluYXRpb24gZGVzdGluYXRpb24oKSBjb25zdDsKKyAgICB1c2luZyBU
eXBlID0gRmV0Y2hPcHRpb25zOjpUeXBlOworICAgIFR5cGUgdHlwZSgpIGNvbnN0OworCisgICAg
dXNpbmcgRGVzdGluYXRpb24gPSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOworICAgIERlc3Rp
bmF0aW9uIGRlc3RpbmF0aW9uKCkgY29uc3Q7CisKICAgICBTdHJpbmcgcmVmZXJyZXIoKSBjb25z
dDsKKworICAgIHVzaW5nIFJlZmVycmVyUG9saWN5ID0gRmV0Y2hPcHRpb25zOjpSZWZlcnJlclBv
bGljeTsKICAgICBSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSgpIGNvbnN0OwotICAgIFJl
cXVlc3RNb2RlIG1vZGUoKSBjb25zdDsKLSAgICBSZXF1ZXN0Q3JlZGVudGlhbHMgY3JlZGVudGlh
bHMoKSBjb25zdDsKLSAgICBSZXF1ZXN0Q2FjaGUgY2FjaGUoKSBjb25zdDsKLSAgICBSZXF1ZXN0
UmVkaXJlY3QgcmVkaXJlY3QoKSBjb25zdDsKKworICAgIHVzaW5nIE1vZGUgPSBGZXRjaE9wdGlv
bnM6Ok1vZGU7CisgICAgTW9kZSBtb2RlKCkgY29uc3Q7CisKKyAgICB1c2luZyBDcmVkZW50aWFs
cyA9IEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM7CisgICAgQ3JlZGVudGlhbHMgY3JlZGVudGlh
bHMoKSBjb25zdDsKKworICAgIHVzaW5nIENhY2hlID0gRmV0Y2hPcHRpb25zOjpDYWNoZTsKKyAg
ICBDYWNoZSBjYWNoZSgpIGNvbnN0OworCisgICAgdXNpbmcgUmVkaXJlY3QgPSBGZXRjaE9wdGlv
bnM6OlJlZGlyZWN0OworICAgIFJlZGlyZWN0IHJlZGlyZWN0KCkgY29uc3Q7CisKICAgICBjb25z
dCBTdHJpbmcmIGludGVncml0eSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJuYWxSZXF1ZXN0Lmlu
dGVncml0eTsgfQogCiAgICAgUmVmUHRyPEZldGNoUmVxdWVzdD4gY2xvbmUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTkyLDM3ICsxMDcsMzcgQEAgaW5saW5l
IEZldGNoUmVxdWVzdDo6RmV0Y2hSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIEZldGNoQm9keSYmIGIKIHsKIH0KIAotaW5saW5lIFJlcXVlc3RDYWNoZSBGZXRjaFJlcXVl
c3Q6OmNhY2hlKCkgY29uc3QKK2lubGluZSBhdXRvIEZldGNoUmVxdWVzdDo6Y2FjaGUoKSBjb25z
dCAtPiBDYWNoZQogewogICAgIHJldHVybiBtX2ludGVybmFsUmVxdWVzdC5vcHRpb25zLmNhY2hl
OwogfQogCi1pbmxpbmUgUmVxdWVzdENyZWRlbnRpYWxzIEZldGNoUmVxdWVzdDo6Y3JlZGVudGlh
bHMoKSBjb25zdAoraW5saW5lIGF1dG8gRmV0Y2hSZXF1ZXN0OjpjcmVkZW50aWFscygpIGNvbnN0
IC0+IENyZWRlbnRpYWxzCiB7CiAgICAgcmV0dXJuIG1faW50ZXJuYWxSZXF1ZXN0Lm9wdGlvbnMu
Y3JlZGVudGlhbHM7CiB9CiAKLWlubGluZSBSZXF1ZXN0RGVzdGluYXRpb24gRmV0Y2hSZXF1ZXN0
OjpkZXN0aW5hdGlvbigpIGNvbnN0CitpbmxpbmUgYXV0byBGZXRjaFJlcXVlc3Q6OmRlc3RpbmF0
aW9uKCkgY29uc3QgLT4gRGVzdGluYXRpb24KIHsKICAgICByZXR1cm4gbV9pbnRlcm5hbFJlcXVl
c3Qub3B0aW9ucy5kZXN0aW5hdGlvbjsKIH0KIAotaW5saW5lIFJlcXVlc3RNb2RlIEZldGNoUmVx
dWVzdDo6bW9kZSgpIGNvbnN0CitpbmxpbmUgYXV0byBGZXRjaFJlcXVlc3Q6Om1vZGUoKSBjb25z
dCAtPiBNb2RlCiB7CiAgICAgcmV0dXJuIG1faW50ZXJuYWxSZXF1ZXN0Lm9wdGlvbnMubW9kZTsK
IH0KIAotaW5saW5lIFJlcXVlc3RSZWRpcmVjdCBGZXRjaFJlcXVlc3Q6OnJlZGlyZWN0KCkgY29u
c3QKK2lubGluZSBhdXRvIEZldGNoUmVxdWVzdDo6cmVkaXJlY3QoKSBjb25zdCAtPiBSZWRpcmVj
dAogewogICAgIHJldHVybiBtX2ludGVybmFsUmVxdWVzdC5vcHRpb25zLnJlZGlyZWN0OwogfQog
Ci1pbmxpbmUgUmVmZXJyZXJQb2xpY3kgRmV0Y2hSZXF1ZXN0OjpyZWZlcnJlclBvbGljeSgpIGNv
bnN0CitpbmxpbmUgYXV0byBGZXRjaFJlcXVlc3Q6OnJlZmVycmVyUG9saWN5KCkgY29uc3QgLT4g
UmVmZXJyZXJQb2xpY3kKIHsKICAgICByZXR1cm4gbV9pbnRlcm5hbFJlcXVlc3Qub3B0aW9ucy5y
ZWZlcnJlclBvbGljeTsKIH0KIAotaW5saW5lIFJlcXVlc3RUeXBlIEZldGNoUmVxdWVzdDo6dHlw
ZSgpIGNvbnN0CitpbmxpbmUgYXV0byBGZXRjaFJlcXVlc3Q6OnR5cGUoKSBjb25zdCAtPiBUeXBl
CiB7CiAgICAgcmV0dXJuIG1faW50ZXJuYWxSZXF1ZXN0Lm9wdGlvbnMudHlwZTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IDIxYTg0
MWZjNDZiM2M1MjUwNTM2NjIyZjA5MDlmMjdmZWMwOGU5OTQuLjM1YmUyNDM5NGZlNGFjMjVlMDE3
ZDAyNTVmZWI0NWNkODYzOGE4NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtNTEsNyArNTEsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wg
aXNOdWxsQm9keVN0YXR1cyhpbnQgc3RhdHVzKQogCiBSZWY8RmV0Y2hSZXNwb25zZT4gRmV0Y2hS
ZXNwb25zZTo6ZXJyb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBGZXRjaFJlc3BvbnNlKGNvbnRleHQsIFJlc3BvbnNlVHlwZTo6
RXJyb3IsIHsgfSwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUoRmV0Y2hIZWFkZXJzOjpHdWFyZDo6SW1t
dXRhYmxlKSwgeyB9KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXNwb25zZShj
b250ZXh0LCBUeXBlOjpFcnJvciwgeyB9LCBGZXRjaEhlYWRlcnM6OmNyZWF0ZShGZXRjaEhlYWRl
cnM6Okd1YXJkOjpJbW11dGFibGUpLCB7IH0pKTsKIH0KIAogUmVmUHRyPEZldGNoUmVzcG9uc2U+
IEZldGNoUmVzcG9uc2U6OnJlZGlyZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgc3RhdHVzLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTY2
LDcgKzY2LDcgQEAgUmVmUHRyPEZldGNoUmVzcG9uc2U+IEZldGNoUmVzcG9uc2U6OnJlZGlyZWN0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGMKICAgICAgICAgZWMgPSBUeXBlRXJy
b3I7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBhdXRvIHJlZGlyZWN0UmVz
cG9uc2UgPSBhZG9wdFJlZigqbmV3IEZldGNoUmVzcG9uc2UoY29udGV4dCwgUmVzcG9uc2VUeXBl
OjpEZWZhdWx0LCB7IH0sIEZldGNoSGVhZGVyczo6Y3JlYXRlKEZldGNoSGVhZGVyczo6R3VhcmQ6
OkltbXV0YWJsZSksIHsgfSkpOworICAgIGF1dG8gcmVkaXJlY3RSZXNwb25zZSA9IGFkb3B0UmVm
KCpuZXcgRmV0Y2hSZXNwb25zZShjb250ZXh0LCBUeXBlOjpEZWZhdWx0LCB7IH0sIEZldGNoSGVh
ZGVyczo6Y3JlYXRlKEZldGNoSGVhZGVyczo6R3VhcmQ6OkltbXV0YWJsZSksIHsgfSkpOwogICAg
IHJlZGlyZWN0UmVzcG9uc2UtPm1fcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoc3RhdHVzKTsK
ICAgICByZWRpcmVjdFJlc3BvbnNlLT5tX2hlYWRlcnMtPmZhc3RTZXQoSFRUUEhlYWRlck5hbWU6
OkxvY2F0aW9uLCByZXF1ZXN0VVJMLnN0cmluZygpKTsKICAgICByZXR1cm4gV1RGTW92ZShyZWRp
cmVjdFJlc3BvbnNlKTsKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6Omlu
aXRpYWxpemVXaXRoKGNvbnN0IERpY3Rpb25hcnkmIGluaXQsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ICAgIH0KIH0KIAotRmV0Y2hSZXNwb25zZTo6RmV0Y2hSZXNwb25zZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBSZXNwb25zZVR5cGUgdHlwZSwgRmV0Y2hCb2R5JiYgYm9keSwgUmVm
PEZldGNoSGVhZGVycz4mJiBoZWFkZXJzLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UpCitG
ZXRjaFJlc3BvbnNlOjpGZXRjaFJlc3BvbnNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIFR5cGUgdHlwZSwgRmV0Y2hCb2R5JiYgYm9keSwgUmVmPEZldGNoSGVhZGVycz4mJiBoZWFk
ZXJzLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UpCiAgICAgOiBGZXRjaEJvZHlPd25lcihj
b250ZXh0LCBXVEZNb3ZlKGJvZHkpKQogICAgICwgbV90eXBlKHR5cGUpCiAgICAgLCBtX3Jlc3Bv
bnNlKFdURk1vdmUocmVzcG9uc2UpKQpAQCAtMTMwLDcgKzEzMCw3IEBAIFJlZlB0cjxGZXRjaFJl
c3BvbnNlPiBGZXRjaFJlc3BvbnNlOjpjbG9uZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBFeGNlCiAKIHZvaWQgRmV0Y2hSZXNwb25zZTo6c3RhcnRGZXRjaGluZyhTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBGZXRjaFJlcXVlc3QmIHJlcXVlc3QsIEZldGNo
UHJvbWlzZSYmIHByb21pc2UpCiB7Ci0gICAgYXV0byByZXNwb25zZSA9IGFkb3B0UmVmKCpuZXcg
RmV0Y2hSZXNwb25zZShjb250ZXh0LCBSZXNwb25zZVR5cGU6OkJhc2ljLCBGZXRjaEJvZHk6Omxv
YWRpbmdCb2R5KCksIEZldGNoSGVhZGVyczo6Y3JlYXRlKEZldGNoSGVhZGVyczo6R3VhcmQ6Oklt
bXV0YWJsZSksIFJlc291cmNlUmVzcG9uc2UoKSkpOworICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9w
dFJlZigqbmV3IEZldGNoUmVzcG9uc2UoY29udGV4dCwgVHlwZTo6QmFzaWMsIEZldGNoQm9keTo6
bG9hZGluZ0JvZHkoKSwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUoRmV0Y2hIZWFkZXJzOjpHdWFyZDo6
SW1tdXRhYmxlKSwgUmVzb3VyY2VSZXNwb25zZSgpKSk7CiAKICAgICAvLyBTZXR0aW5nIHBlbmRp
bmcgYWN0aXZpdHkgdW50aWwgQm9keUxvYWRlciBkaWRGYWlsIG9yIGRpZFN1Y2NlZWQgY2FsbGJh
Y2sgaXMgY2FsbGVkLgogICAgIHJlc3BvbnNlLT5zZXRQZW5kaW5nQWN0aXZpdHkocmVzcG9uc2Uu
cHRyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApp
bmRleCBkOWVmMzhkMjExYTEyZGJkYjk5NWZjZTU5NDI2MjMyZWE0NzM2YjRlLi43ZTQ4YjAzYjA0
MzU5YzdjZjAwNDYwODc4Zjc0ZDliOTZiNjRmMzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApAQCAtNDYsMTEgKzQ2LDExIEBAIGNsYXNzIFJlYWRh
YmxlU3RyZWFtU291cmNlOwogCiB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCi1lbnVtIGNs
YXNzIFJlc3BvbnNlVHlwZSB7IEJhc2ljLCBDb3JzLCBEZWZhdWx0LCBFcnJvciwgT3BhcXVlLCBP
cGFxdWVyZWRpcmVjdCB9OwotCiBjbGFzcyBGZXRjaFJlc3BvbnNlIGZpbmFsIDogcHVibGljIEZl
dGNoQm9keU93bmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZldGNoUmVzcG9uc2U+IGNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IEZldGNoUmVzcG9uc2UoY29udGV4dCwgUmVzcG9uc2VUeXBlOjpEZWZhdWx0LCB7IH0sIEZl
dGNoSGVhZGVyczo6Y3JlYXRlKEZldGNoSGVhZGVyczo6R3VhcmQ6OlJlc3BvbnNlKSwgUmVzb3Vy
Y2VSZXNwb25zZSgpKSk7IH0KKyAgICBlbnVtIGNsYXNzIFR5cGUgeyBCYXNpYywgQ29ycywgRGVm
YXVsdCwgRXJyb3IsIE9wYXF1ZSwgT3BhcXVlcmVkaXJlY3QgfTsKKworICAgIHN0YXRpYyBSZWY8
RmV0Y2hSZXNwb25zZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXNwb25zZShjb250ZXh0LCBUeXBlOjpEZWZhdWx0
LCB7IH0sIEZldGNoSGVhZGVyczo6Y3JlYXRlKEZldGNoSGVhZGVyczo6R3VhcmQ6OlJlc3BvbnNl
KSwgUmVzb3VyY2VSZXNwb25zZSgpKSk7IH0KICAgICBzdGF0aWMgUmVmPEZldGNoUmVzcG9uc2U+
IGVycm9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKICAgICBzdGF0aWMgUmVmUHRyPEZldGNo
UmVzcG9uc2U+IHJlZGlyZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcm
LCBpbnQsIEV4Y2VwdGlvbkNvZGUmKTsKIApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGluaXRpYWxpemVXaXRoKGNvbnN0IERpY3Rpb25hcnkmLCBFeGNlcHRpb25Db2RlJik7
CiAKLSAgICBSZXNwb25zZVR5cGUgdHlwZSgpIGNvbnN0OworICAgIFR5cGUgdHlwZSgpIGNvbnN0
OwogICAgIGNvbnN0IFN0cmluZyYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZS51cmwo
KS5zdHJpbmcoKTsgfQogICAgIGJvb2wgcmVkaXJlY3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNS
ZWRpcmVjdGVkOyB9CiAgICAgaW50IHN0YXR1cygpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2Uu
aHR0cFN0YXR1c0NvZGUoKTsgfQpAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAog
cHJpdmF0ZToKLSAgICBGZXRjaFJlc3BvbnNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZXNw
b25zZVR5cGUsIEZldGNoQm9keSYmLCBSZWY8RmV0Y2hIZWFkZXJzPiYmLCBSZXNvdXJjZVJlc3Bv
bnNlJiYpOworICAgIEZldGNoUmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFR5cGUs
IEZldGNoQm9keSYmLCBSZWY8RmV0Y2hIZWFkZXJzPiYmLCBSZXNvdXJjZVJlc3BvbnNlJiYpOwog
CiAgICAgc3RhdGljIHZvaWQgc3RhcnRGZXRjaGluZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
Y29uc3QgRmV0Y2hSZXF1ZXN0JiwgRmV0Y2hQcm9taXNlJiYpOwogCkBAIC0xMDksMTQgKzEwOSwx
NCBAQCBwcml2YXRlOgogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RmV0Y2hMb2FkZXI+IG1fbG9h
ZGVyOwogICAgIH07CiAKLSAgICBSZXNwb25zZVR5cGUgbV90eXBlOworICAgIFR5cGUgbV90eXBl
OwogICAgIFJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKICAgICBSZWY8RmV0Y2hIZWFkZXJz
PiBtX2hlYWRlcnM7CiAgICAgYm9vbCBtX2lzUmVkaXJlY3RlZCA9IGZhbHNlOwogICAgIE9wdGlv
bmFsPEJvZHlMb2FkZXI+IG1fYm9keUxvYWRlcjsKIH07CiAKLWlubGluZSBSZXNwb25zZVR5cGUg
RmV0Y2hSZXNwb25zZTo6dHlwZSgpIGNvbnN0CitpbmxpbmUgYXV0byBGZXRjaFJlc3BvbnNlOjp0
eXBlKCkgY29uc3QgLT4gVHlwZQogewogICAgIHJldHVybiBtX3R5cGU7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNI
b3N0LmNwcAppbmRleCA2NmM1ZjE5MThlZDdlM2Y4MzQwOGQwMmI4NzY3MzI1YmQxZWFmYjdlLi45
MTEyMjMwNjRiOTc4MGQzYTRiMTJmMTdiMDI4MGIxOTlhMzk4ZDkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9z
dC5jcHAKQEAgLTIzMyw3ICsyMzMsNyBAQCBTdHJpbmcgTWVkaWFDb250cm9sc0hvc3Q6OmV4dGVy
bmFsRGV2aWNlRGlzcGxheU5hbWUoKSBjb25zdAogI2VuZGlmCiB9CiAKLURldmljZVR5cGUgTWVk
aWFDb250cm9sc0hvc3Q6OmV4dGVybmFsRGV2aWNlVHlwZSgpIGNvbnN0CithdXRvIE1lZGlhQ29u
dHJvbHNIb3N0OjpleHRlcm5hbERldmljZVR5cGUoKSBjb25zdCAtPiBEZXZpY2VUeXBlCiB7CiAj
aWYgIUVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgcmV0dXJuIERldmljZVR5
cGU6Ok5vbmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJv
bHMvTWVkaWFDb250cm9sc0hvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250
cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5oCmluZGV4IGMwYTc4Mjk4ZjQ0ZjM4ZWJmMjNhNTkyYWI4
YzliMWJjZDJkZjZkMzQuLjRiYTNjYTM5Y2E5NjNiZWEzMjE2ZWNhMDMwNjRkMmMwNmUyMDA2N2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNv
bnRyb2xzSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9N
ZWRpYUNvbnRyb2xzSG9zdC5oCkBAIC00Miw4ICs0Miw2IEBAIGNsYXNzIE1lZGlhQ29udHJvbFRl
eHRUcmFja0NvbnRhaW5lckVsZW1lbnQ7CiBjbGFzcyBUZXh0VHJhY2s7CiBjbGFzcyBUZXh0VHJh
Y2tMaXN0OwogCi1lbnVtIGNsYXNzIERldmljZVR5cGUgeyBOb25lLCBBaXJwbGF5LCBUdm91dCB9
OwotCiBjbGFzcyBNZWRpYUNvbnRyb2xzSG9zdCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhQ29u
dHJvbHNIb3N0PiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxNZWRpYUNvbnRyb2xzSG9zdD4g
Y3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqKTsKQEAgLTczLDYgKzcxLDggQEAgcHVibGljOgogICAg
IHZvaWQgZXhpdGVkRnVsbHNjcmVlbigpOwogCiAgICAgU3RyaW5nIGV4dGVybmFsRGV2aWNlRGlz
cGxheU5hbWUoKSBjb25zdDsKKworICAgIGVudW0gY2xhc3MgRGV2aWNlVHlwZSB7IE5vbmUsIEFp
cnBsYXksIFR2b3V0IH07CiAgICAgRGV2aWNlVHlwZSBleHRlcm5hbERldmljZVR5cGUoKSBjb25z
dDsKIAogICAgIGJvb2wgY29udHJvbHNEZXBlbmRPblBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNz
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lv
bi5jcHAKaW5kZXggNzgwYmQwOTAzMDA5MWJjZTYyOGQzYTZkMzRhZjFhZGM1NzNhY2RmNC4uM2E4
MjE2NmYxMDE1OTQzNWI3NmU5Zjg1Y2RmZTQ4YzUxYjliNGVjNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uY3BwCkBAIC0zNyw3
ICszNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTWVkaWFTZXNzaW9uOjpNZWRpYVNl
c3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgTWVkaWFTZXNzaW9uS2luZCBr
aW5kKQorTWVkaWFTZXNzaW9uOjpNZWRpYVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgS2luZCBraW5kKQogICAgIDogbV9kb2N1bWVudChkb3duY2FzdDxEb2N1bWVudD4o
Y29udGV4dCkpCiAgICAgLCBtX2tpbmQoa2luZCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmgKaW5kZXggNjdkZDM5MzdkMDAyNzAw
NjAxOGI1N2UxYjRhZWQyZDYxMzkyOTc5MS4uNTExMDE5MWRlYmFkMzY0N2NkMDI2OTkwNGFmOGE2
OTMxZDEwYzRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFTZXNzaW9uLmgKQEAgLTM2LDIwICszNiwxOSBAQCBjbGFzcyBEaWN0aW9uYXJ5Owog
Y2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBIVE1MTWVkaWFFbGVtZW50OwogCi1lbnVtIGNsYXNzIE1l
ZGlhU2Vzc2lvbktpbmQgeyBDb250ZW50LCBUcmFuc2llbnQsIFRyYW5zaWVudFNvbG8sIEFtYmll
bnQgfTsKLQogY2xhc3MgTWVkaWFTZXNzaW9uIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8TWVk
aWFTZXNzaW9uPiB7CiBwdWJsaWM6CisgICAgZW51bSBjbGFzcyBLaW5kIHsgQ29udGVudCwgVHJh
bnNpZW50LCBUcmFuc2llbnRTb2xvLCBBbWJpZW50IH07CiAgICAgZW51bSBjbGFzcyBTdGF0ZSB7
IElkbGUsIEFjdGl2ZSwgSW50ZXJydXB0ZWQgfTsKIAotICAgIHN0YXRpYyBSZWY8TWVkaWFTZXNz
aW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgTWVkaWFTZXNzaW9u
S2luZCBraW5kKQorICAgIHN0YXRpYyBSZWY8TWVkaWFTZXNzaW9uPiBjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgS2luZCBraW5kKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgTWVkaWFTZXNzaW9uKGNvbnRleHQsIGtpbmQpKTsKICAgICB9CiAKICAg
ICB+TWVkaWFTZXNzaW9uKCk7CiAKLSAgICBNZWRpYVNlc3Npb25LaW5kIGtpbmQoKSBjb25zdCB7
IHJldHVybiBtX2tpbmQ7IH0KKyAgICBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7
IH0KICAgICBNZWRpYVJlbW90ZUNvbnRyb2xzKiBjb250cm9scygpOwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgU3RhdGUgY3VycmVudFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50U3RhdGU7
IH0KQEAgLTk1LDcgKzk0LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PEhUTUxNZWRpYUVsZW1l
bnQqPiogbV9pdGVyYXRlZEFjdGl2ZVBhcnRpY2lwYXRpbmdFbGVtZW50cyB7IG51bGxwdHIgfTsK
IAogICAgIERvY3VtZW50JiBtX2RvY3VtZW50OwotICAgIGNvbnN0IE1lZGlhU2Vzc2lvbktpbmQg
bV9raW5kOworICAgIGNvbnN0IEtpbmQgbV9raW5kOwogICAgIFJlZlB0cjxNZWRpYVJlbW90ZUNv
bnRyb2xzPiBtX2NvbnRyb2xzOwogICAgIE1lZGlhU2Vzc2lvbk1ldGFkYXRhIG1fbWV0YWRhdGE7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRp
YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291
cmNlLmNwcAppbmRleCAxYTA5YzNlZmZmZGY2OTI0MDdkOTE0YWI1MGY4NjdmYmM4NGQyYTE0Li40
MTQyODc5YzVjM2QxODA2YTQ3NGI2YWE3ZWM4YTM5NjEwYmVlZTY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcApAQCAtNTQ1LDcg
KzU0NSw3IEBAIFNvdXJjZUJ1ZmZlciogTWVkaWFTb3VyY2U6OmFkZFNvdXJjZUJ1ZmZlcihjb25z
dCBTdHJpbmcmIHR5cGUsIEV4Y2VwdGlvbkNvZGUmIGVjCiAgICAgLy8g4oazIFNldCB0aGUgbW9k
ZSBhdHRyaWJ1dGUgb24gdGhlIG5ldyBvYmplY3QgdG8gInNlcXVlbmNlIi4KICAgICAvLyBPdGhl
cndpc2U6CiAgICAgLy8g4oazIFNldCB0aGUgbW9kZSBhdHRyaWJ1dGUgb24gdGhlIG5ldyBvYmpl
Y3QgdG8gInNlZ21lbnRzIi4KLSAgICBidWZmZXItPnNldE1vZGUoc2hvdWxkR2VuZXJhdGVUaW1l
c3RhbXBzID8gQXBwZW5kTW9kZTo6U2VxdWVuY2UgOiBBcHBlbmRNb2RlOjpTZWdtZW50cywgSUdO
T1JFX0VYQ0VQVElPTik7CisgICAgYnVmZmVyLT5zZXRNb2RlKHNob3VsZEdlbmVyYXRlVGltZXN0
YW1wcyA/IFNvdXJjZUJ1ZmZlcjo6QXBwZW5kTW9kZTo6U2VxdWVuY2UgOiBTb3VyY2VCdWZmZXI6
OkFwcGVuZE1vZGU6OlNlZ21lbnRzLCBJR05PUkVfRVhDRVBUSU9OKTsKIAogICAgIFNvdXJjZUJ1
ZmZlciogcmVzdWx0ID0gYnVmZmVyLnB0cigpOwogCkBAIC02NzEsNyArNjcxLDcgQEAgdm9pZCBN
ZWRpYVNvdXJjZTo6cmVtb3ZlU291cmNlQnVmZmVyKFNvdXJjZUJ1ZmZlciYgYnVmZmVyLCBFeGNl
cHRpb25Db2RlJiBlYykKIAogICAgICAgICAgICAgLy8gOS4zLjIgSWYgdGhlIG1vZGUgYXR0cmli
dXRlIG9uIHRoZSBUZXh0VHJhY2sgb2JqZWN0IGlzIHNldCB0byAic2hvd2luZyIgb3IgImhpZGRl
biIsIHRoZW4KICAgICAgICAgICAgIC8vIHNldCB0aGUgcmVtb3ZlZCBlbmFibGVkIHRleHQgdHJh
Y2sgZmxhZyB0byB0cnVlLgotICAgICAgICAgICAgaWYgKHRyYWNrLT5tb2RlKCkgPT0gVGV4dFRy
YWNrTW9kZTo6U2hvd2luZyB8fCB0cmFjay0+bW9kZSgpID09IFRleHRUcmFja01vZGU6OkhpZGRl
bikKKyAgICAgICAgICAgIGlmICh0cmFjay0+bW9kZSgpID09IFRleHRUcmFjazo6TW9kZTo6U2hv
d2luZyB8fCB0cmFjay0+bW9kZSgpID09IFRleHRUcmFjazo6TW9kZTo6SGlkZGVuKQogICAgICAg
ICAgICAgICAgIHJlbW92ZWRFbmFibGVkVGV4dFRyYWNrID0gdHJ1ZTsKIAogICAgICAgICAgICAg
Ly8gOS4zLjMgUmVtb3ZlIHRoZSBUZXh0VHJhY2sgb2JqZWN0IGZyb20gdGhlIEhUTUxNZWRpYUVs
ZW1lbnQgdGV4dFRyYWNrcyBsaXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9NZWRpYVNvdXJjZS5oCmluZGV4IDU5NzFjODZlNmY0NjBlYzBmMWE3MzhiM2QwNjNh
MWJjYjBhMjFjMDAuLjE5YmExYTRlOGM0NDE5MTRjNWMyZTAzY2M2OGM0NjFjZDQzZmJhOGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmgK
QEAgLTQ4LDggKzQ4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHZW5lcmljRXZl
bnRRdWV1ZTsKIAotZW51bSBjbGFzcyBFbmRPZlN0cmVhbUVycm9yIHsgTmV0d29yaywgRGVjb2Rl
IH07Ci0KIGNsYXNzIE1lZGlhU291cmNlIDogcHVibGljIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVu
dCwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURh
dGEsIHB1YmxpYyBVUkxSZWdpc3RyYWJsZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgc2V0
UmVnaXN0cnkoVVJMUmVnaXN0cnkqKTsKQEAgLTY5LDYgKzY3LDggQEAgcHVibGljOgogICAgIGJv
b2wgaXNDbG9zZWQoKSBjb25zdDsKICAgICBib29sIGlzRW5kZWQoKSBjb25zdDsKICAgICB2b2lk
IHNvdXJjZUJ1ZmZlckRpZENoYW5nZUFjdGl2ZVN0YXRlKFNvdXJjZUJ1ZmZlciYsIGJvb2wpOwor
CisgICAgZW51bSBjbGFzcyBFbmRPZlN0cmVhbUVycm9yIHsgTmV0d29yaywgRGVjb2RlIH07CiAg
ICAgdm9pZCBzdHJlYW1FbmRlZFdpdGhFcnJvcihPcHRpb25hbDxFbmRPZlN0cmVhbUVycm9yPik7
CiAKICAgICAvLyBNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAppbmRleCBiYzQ5MjJiY2Q2
MWU2ZmYwNTQ1NWQwNDAxM2I5MTUzOTdjNjg4OGYwLi5jYzJkM2I4ZGJjZDdmNmUxMGM2OTE0MjYy
ODQ3NGQyNDFjNmVjMjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCkBAIC02NDMsNyArNjQzLDcgQEAgdm9pZCBTb3VyY2VC
dWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlUmVuZGVyaW5nRXJyb3IoU291cmNl
QnVmZmVyUHJpdmEKICAgICBMT0coTWVkaWFTb3VyY2UsICJTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1
ZmZlclByaXZhdGVEaWRSZWNlaXZlUmVuZGVyaW5nRXJyb3IoJXApIC0gcmVzdWx0ID0gJWkiLCB0
aGlzLCBlcnJvcik7CiAKICAgICBpZiAoIWlzUmVtb3ZlZCgpKQotICAgICAgICBtX3NvdXJjZS0+
c3RyZWFtRW5kZWRXaXRoRXJyb3IoRW5kT2ZTdHJlYW1FcnJvcjo6RGVjb2RlKTsKKyAgICAgICAg
bV9zb3VyY2UtPnN0cmVhbUVuZGVkV2l0aEVycm9yKE1lZGlhU291cmNlOjpFbmRPZlN0cmVhbUVy
cm9yOjpEZWNvZGUpOwogfQogCiBzdGF0aWMgYm9vbCBkZWNvZGVUaW1lQ29tcGFyYXRvcihjb25z
dCBQcmVzZW50YXRpb25PcmRlclNhbXBsZU1hcDo6TWFwVHlwZTo6dmFsdWVfdHlwZSYgYSwgY29u
c3QgUHJlc2VudGF0aW9uT3JkZXJTYW1wbGVNYXA6Ok1hcFR5cGU6OnZhbHVlX3R5cGUmIGIpCkBA
IC0xMjcwLDcgKzEyNzAsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6YXBwZW5kRXJyb3IoYm9vbCBk
ZWNvZGVFcnJvclBhcmFtKQogCiAgICAgLy8gNS4gSWYgZGVjb2RlIGVycm9yIGlzIHRydWUsIHRo
ZW4gcnVuIHRoZSBlbmQgb2Ygc3RyZWFtIGFsZ29yaXRobSB3aXRoIHRoZSBlcnJvciBwYXJhbWV0
ZXIgc2V0IHRvICJkZWNvZGUiLgogICAgIGlmIChkZWNvZGVFcnJvclBhcmFtKQotICAgICAgICBt
X3NvdXJjZS0+c3RyZWFtRW5kZWRXaXRoRXJyb3IoRW5kT2ZTdHJlYW1FcnJvcjo6RGVjb2RlKTsK
KyAgICAgICAgbV9zb3VyY2UtPnN0cmVhbUVuZGVkV2l0aEVycm9yKE1lZGlhU291cmNlOjpFbmRP
ZlN0cmVhbUVycm9yOjpEZWNvZGUpOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVm
ZmVyUHJpdmF0ZURpZFJlY2VpdmVTYW1wbGUoU291cmNlQnVmZmVyUHJpdmF0ZSosIFBhc3NSZWZQ
dHI8TWVkaWFTYW1wbGU+IHBycFNhbXBsZSkKQEAgLTE0MjEsNyArMTQyMSw3IEBAIHZvaWQgU291
cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZVNhbXBsZShTb3VyY2VCdWZm
ZXJQcml2YXRlKiwgUGFzCiAgICAgICAgIE1lZGlhVGltZSBwcmVzZW50YXRpb25TdGFydFRpbWUg
PSBNZWRpYVRpbWU6Onplcm9UaW1lKCk7CiAgICAgICAgIGlmIChwcmVzZW50YXRpb25UaW1lc3Rh
bXAgPCBwcmVzZW50YXRpb25TdGFydFRpbWUpIHsKICAgICAgICAgICAgIExPRyhNZWRpYVNvdXJj
ZSwgIlNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVTYW1wbGUoJXAp
IC0gZmFpbGluZyBiZWNhdXNlIHByZXNlbnRhdGlvblRpbWVzdGFtcCA8IHByZXNlbnRhdGlvblN0
YXJ0VGltZSIsIHRoaXMpOwotICAgICAgICAgICAgbV9zb3VyY2UtPnN0cmVhbUVuZGVkV2l0aEVy
cm9yKEVuZE9mU3RyZWFtRXJyb3I6OkRlY29kZSk7CisgICAgICAgICAgICBtX3NvdXJjZS0+c3Ry
ZWFtRW5kZWRXaXRoRXJyb3IoTWVkaWFTb3VyY2U6OkVuZE9mU3RyZWFtRXJyb3I6OkRlY29kZSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTY3NCw3ICsxNjc0LDcgQEAg
dm9pZCBTb3VyY2VCdWZmZXI6OnRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRUcmFjayogdHJhY2sp
CiAgICAgLy8gMi40LjUgQ2hhbmdlcyB0byBzZWxlY3RlZC9lbmFibGVkIHRyYWNrIHN0YXRlCiAg
ICAgLy8gSWYgYSB0ZXh0IHRyYWNrIG1vZGUgYmVjb21lcyAiZGlzYWJsZWQiIGFuZCB0aGUgU291
cmNlQnVmZmVyIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRyYWNrIGlzIG5vdAogICAgIC8vIGFzc29j
aWF0ZWQgd2l0aCBhbnkgb3RoZXIgZW5hYmxlZCBvciBzZWxlY3RlZCB0cmFjaywgdGhlbiBydW4g
dGhlIGZvbGxvd2luZyBzdGVwczoKLSAgICBpZiAodHJhY2stPm1vZGUoKSA9PSBUZXh0VHJhY2tN
b2RlOjpEaXNhYmxlZAorICAgIGlmICh0cmFjay0+bW9kZSgpID09IFRleHRUcmFjazo6TW9kZTo6
RGlzYWJsZWQKICAgICAgICAgJiYgKCFtX3ZpZGVvVHJhY2tzIHx8ICFtX3ZpZGVvVHJhY2tzLT5p
c0FueVRyYWNrRW5hYmxlZCgpKQogICAgICAgICAmJiAoIW1fYXVkaW9UcmFja3MgfHwgIW1fYXVk
aW9UcmFja3MtPmlzQW55VHJhY2tFbmFibGVkKCkpCiAgICAgICAgICYmICghbV90ZXh0VHJhY2tz
IHx8ICFtX3RleHRUcmFja3MtPmlzQW55VHJhY2tFbmFibGVkKCkpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaAppbmRleCA0ODdkZmM4
ZWQxMmQ2NDJiYzJjZDBkOTE1NWNkZDZiNmZjNTY2OTU2Li5jYjBkYzhmN2FiMmU5ZTJkYmEwODc0
NTAwNzI5ODgyMDM5MGJjMDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzb3VyY2UvU291cmNlQnVmZmVyLmgKQEAgLTU4LDEwICs1OCw2IEBAIGNsYXNzIFRleHRUcmFj
a0xpc3Q7CiBjbGFzcyBUaW1lUmFuZ2VzOwogY2xhc3MgVmlkZW9UcmFja0xpc3Q7CiAKLWVudW0g
Y2xhc3MgRW5kT2ZTdHJlYW1FcnJvcjsKLQotZW51bSBjbGFzcyBBcHBlbmRNb2RlIHsgU2VnbWVu
dHMsIFNlcXVlbmNlIH07Ci0KIGNsYXNzIFNvdXJjZUJ1ZmZlciBmaW5hbCA6IHB1YmxpYyBSZWZD
b3VudGVkPFNvdXJjZUJ1ZmZlcj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVu
dFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudCwg
cHVibGljIEF1ZGlvVHJhY2tDbGllbnQsIHB1YmxpYyBWaWRlb1RyYWNrQ2xpZW50LCBwdWJsaWMg
VGV4dFRyYWNrQ2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFNvdXJjZUJ1ZmZlcj4g
Y3JlYXRlKFJlZjxTb3VyY2VCdWZmZXJQcml2YXRlPiYmLCBNZWRpYVNvdXJjZSopOwpAQCAtMTE3
LDYgKzExMyw3IEBAIHB1YmxpYzoKIAogICAgIERvY3VtZW50JiBkb2N1bWVudCgpIGNvbnN0Owog
CisgICAgZW51bSBjbGFzcyBBcHBlbmRNb2RlIHsgU2VnbWVudHMsIFNlcXVlbmNlIH07CiAgICAg
QXBwZW5kTW9kZSBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CiAgICAgdm9pZCBzZXRN
b2RlKEFwcGVuZE1vZGUsIEV4Y2VwdGlvbkNvZGUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZUluZm8uY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZUluZm8uY3BwCmluZGV4IDRiODI3
OGUxMTdkODY0YTEyZGRhY2YzMmY0YzRiYWRkMjJiMWQyMTcuLmZlNzYwZDkxN2YyZTNkMTBmYTU3
MjU0YmYxMmZiYzA5M2Q5ZGNkNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUgTWVkaWFEZXZpY2VJbmZvOjpNZWRpYURldmlj
ZUluZm8oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBsYWJl
bCwgY29uc3QgU3RyaW5nJiBkZXZpY2VJZCwgY29uc3QgU3RyaW5nJiBncm91cElkLCBNZWRpYURl
dmljZUtpbmQga2luZCkKK2lubGluZSBNZWRpYURldmljZUluZm86Ok1lZGlhRGV2aWNlSW5mbyhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25z
dCBTdHJpbmcmIGRldmljZUlkLCBjb25zdCBTdHJpbmcmIGdyb3VwSWQsIEtpbmQga2luZCkKICAg
ICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKGNvbnRleHQpCiAgICAgLCBtX2xhYmVsKGxh
YmVsKQogICAgICwgbV9kZXZpY2VJZChkZXZpY2VJZCkKQEAgLTM5LDcgKzM5LDcgQEAgaW5saW5l
IE1lZGlhRGV2aWNlSW5mbzo6TWVkaWFEZXZpY2VJbmZvKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IFMKIHsKIH0KIAotUmVmPE1lZGlhRGV2aWNlSW5mbz4gTWVkaWFEZXZp
Y2VJbmZvOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3Ry
aW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBkZXZpY2VJZCwgY29uc3QgU3RyaW5nJiBncm91cElk
LCBNZWRpYURldmljZUtpbmQga2luZCkKK1JlZjxNZWRpYURldmljZUluZm8+IE1lZGlhRGV2aWNl
SW5mbzo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmlu
ZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgZGV2aWNlSWQsIGNvbnN0IFN0cmluZyYgZ3JvdXBJZCwg
S2luZCBraW5kKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhRGV2aWNlSW5mbyhj
b250ZXh0LCBsYWJlbCwgZGV2aWNlSWQsIGdyb3VwSWQsIGtpbmQpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5oCmluZGV4
IGM2NTlmNTJmYTA3OGE0YmI3MDQ3OWY3NDE2OTkzMzU4Zjc5OTFjM2YuLmZjNjg5MDQzMzMwOWQ0
NGU1N2QyYmNjNzk2YmRlZGRhNWY0YTNkYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZUluZm8uaApAQCAtMzMsMjQgKzMzLDI0IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBjbGFzcyBNZWRpYURldmljZUtpbmQgeyBB
dWRpb2lucHV0LCBBdWRpb291dHB1dCwgVmlkZW9pbnB1dCB9OwotCiBjbGFzcyBNZWRpYURldmlj
ZUluZm8gOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYURldmljZUluZm8+LCBwdWJsaWMgU2NyaXB0
V3JhcHBhYmxlLCBwcml2YXRlIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPE1lZGlhRGV2aWNlSW5mbz4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBNZWRp
YURldmljZUtpbmQpOworICAgIGVudW0gY2xhc3MgS2luZCB7IEF1ZGlvaW5wdXQsIEF1ZGlvb3V0
cHV0LCBWaWRlb2lucHV0IH07CisKKyAgICBzdGF0aWMgUmVmPE1lZGlhRGV2aWNlSW5mbz4gY3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmLCBLaW5kKTsKIAogICAgIGNvbnN0IFN0cmluZyYgbGFiZWwoKSBjb25z
dCB7IHJldHVybiBtX2xhYmVsOyB9CiAgICAgY29uc3QgU3RyaW5nJiBkZXZpY2VJZCgpIGNvbnN0
IHsgcmV0dXJuIG1fZGV2aWNlSWQ7IH0KICAgICBjb25zdCBTdHJpbmcmIGdyb3VwSWQoKSBjb25z
dCB7IHJldHVybiBtX2dyb3VwSWQ7IH0KLSAgICBNZWRpYURldmljZUtpbmQga2luZCgpIGNvbnN0
IHsgcmV0dXJuIG1fa2luZDsgfQorICAgIEtpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2lu
ZDsgfQogCiBwcml2YXRlOgotICAgIE1lZGlhRGV2aWNlSW5mbyhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTWVkaWFE
ZXZpY2VLaW5kKTsKKyAgICBNZWRpYURldmljZUluZm8oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIEtpbmQpOwogCiAg
ICAgY29uc3QgU3RyaW5nIG1fbGFiZWw7CiAgICAgY29uc3QgU3RyaW5nIG1fZGV2aWNlSWQ7CiAg
ICAgY29uc3QgU3RyaW5nIG1fZ3JvdXBJZDsKLSAgICBjb25zdCBNZWRpYURldmljZUtpbmQgbV9r
aW5kOworICAgIGNvbnN0IEtpbmQgbV9raW5kOwogfTsKIAogdHlwZWRlZiBWZWN0b3I8UmVmUHRy
PE1lZGlhRGV2aWNlSW5mbz4+IE1lZGlhRGV2aWNlSW5mb1ZlY3RvcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVlc3Qu
Y3BwCmluZGV4IDg0OGVjODBjYTRjNTFhZmNiOTVkNmE3NGYyY2FhYTcwZmZhNTMzZTkuLjE4MDJj
YzViOWU3NDU1ZjRhZmJkODQ4MjE5YTNkYTIyOThjYjA3MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNSZXF1ZXN0LmNw
cApAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgTWVkaWFEZXZpY2VzUmVxdWVzdDo6ZGlkQ29tcGxl
dGVUcmFja1NvdXJjZUluZm9SZXF1ZXN0KGNvbnN0IFRyYWNrU291cmNlSW5mCiAKICAgICAgICAg
U3RyaW5nIGdyb3VwSWQgPSBoYXNoSUQoZGV2aWNlSW5mby0+Z3JvdXBJZCgpKTsKIAotICAgICAg
ICBhdXRvIGRldmljZVR5cGUgPSBkZXZpY2VJbmZvLT5raW5kKCkgPT0gVHJhY2tTb3VyY2VJbmZv
OjpTb3VyY2VLaW5kOjpBdWRpbyA/IE1lZGlhRGV2aWNlS2luZDo6QXVkaW9pbnB1dCA6IE1lZGlh
RGV2aWNlS2luZDo6VmlkZW9pbnB1dDsKKyAgICAgICAgYXV0byBkZXZpY2VUeXBlID0gZGV2aWNl
SW5mby0+a2luZCgpID09IFRyYWNrU291cmNlSW5mbzo6U291cmNlS2luZDo6QXVkaW8gPyBNZWRp
YURldmljZUluZm86OktpbmQ6OkF1ZGlvaW5wdXQgOiBNZWRpYURldmljZUluZm86OktpbmQ6OlZp
ZGVvaW5wdXQ7CiAKICAgICAgICAgZGV2aWNlcy5hcHBlbmQoTWVkaWFEZXZpY2VJbmZvOjpjcmVh
dGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBsYWJlbCwgaWQsIGdyb3VwSWQsIGRldmljZVR5
cGUpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcAppbmRleCAxNWZjOThlMmFlMjVkOGUyYmVkODdiZDY4
NGVkNDBiNGVkMGU4OTVhLi4zYjM5MmRhYjRiZDBiNjg5YmRiY2RjYWExNzIyMDEwMGQyNGI1NjNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtVHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFjay5jcHAKQEAgLTExMSw5ICsxMTEsOSBAQCBib29sIE1lZGlhU3RyZWFtVHJh
Y2s6OnJlbW90ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+cmVtb3RlKCk7CiB9CiAK
LU1lZGlhU3RyZWFtVHJhY2tTdGF0ZSBNZWRpYVN0cmVhbVRyYWNrOjpyZWFkeVN0YXRlKCkgY29u
c3QKK2F1dG8gTWVkaWFTdHJlYW1UcmFjazo6cmVhZHlTdGF0ZSgpIGNvbnN0IC0+IFN0YXRlCiB7
Ci0gICAgcmV0dXJuIGVuZGVkKCkgPyBNZWRpYVN0cmVhbVRyYWNrU3RhdGU6OkVuZGVkIDogTWVk
aWFTdHJlYW1UcmFja1N0YXRlOjpMaXZlOworICAgIHJldHVybiBlbmRlZCgpID8gU3RhdGU6OkVu
ZGVkIDogU3RhdGU6OkxpdmU7CiB9CiAKIGJvb2wgTWVkaWFTdHJlYW1UcmFjazo6ZW5kZWQoKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtVHJhY2suaAppbmRleCBjOGRmYWU0OGM4MmUyMjcwZDNjYTdjMWUyNDI4MDQyY2M2ZjFk
NDEyLi5jOTlmNGNlMzQyNGMzNWQzODhmOTM2ZGJjNzhhODE0MjM1ZWM2ZjA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2su
aApAQCAtNDYsOCArNDYsNiBAQCBjbGFzcyBNZWRpYUNvbnN0cmFpbnRzSW1wbDsKIGNsYXNzIE1l
ZGlhU291cmNlU2V0dGluZ3M7CiBjbGFzcyBNZWRpYVRyYWNrQ29uc3RyYWludHM7CiAKLWVudW0g
Y2xhc3MgTWVkaWFTdHJlYW1UcmFja1N0YXRlIHsgTmV3LCBMaXZlLCBFbmRlZCB9OwotCiBjbGFz
cyBNZWRpYVN0cmVhbVRyYWNrIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW1U
cmFjaz4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxp
bmVEYXRhLCBwcml2YXRlIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpPYnNlcnZlciB7CiBwdWJs
aWM6CiAgICAgY2xhc3MgT2JzZXJ2ZXIgewpAQCAtNzAsNyArNjgsOCBAQCBwdWJsaWM6CiAgICAg
Ym9vbCByZWFkb25seSgpIGNvbnN0OwogICAgIGJvb2wgcmVtb3RlKCkgY29uc3Q7CiAKLSAgICBN
ZWRpYVN0cmVhbVRyYWNrU3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0OworICAgIGVudW0gY2xhc3Mg
U3RhdGUgeyBOZXcsIExpdmUsIEVuZGVkIH07CisgICAgU3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0
OwogCiAgICAgYm9vbCBlbmRlZCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0NvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDQ29uZmlndXJhdGlvbi5oCmluZGV4IDE0MDJmZWQzNGEz
YjJiYjVmZDk5ZWNlZjk2NTNhNDFhMjcxNDM2NjAuLmM5ZjY0YzBhYWUyYmNkYTRhN2E4NTI4NTg3
NGRlNGU1ZGY3ZTc0YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDQ29uZmlndXJhdGlvbi5oCkBAIC00NSwxNiArNDUsMTcgQEAgY2xhc3MgRGlj
dGlvbmFyeTsKIAogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAotZW51bSBjbGFzcyBSVENC
dW5kbGVQb2xpY3kgeyBCYWxhbmNlZCwgTWF4Q29tcGF0LCBNYXhCdW5kbGUgfTsKLWVudW0gY2xh
c3MgUlRDSWNlVHJhbnNwb3J0UG9saWN5IHsgUHVibGljLCBSZWxheSwgQWxsIH07Ci0KIGNsYXNz
IFJUQ0NvbmZpZ3VyYXRpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxSVENDb25maWd1cmF0aW9uPiB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxSVENDb25maWd1cmF0aW9uPiBjcmVhdGUoY29u
c3QgRGljdGlvbmFyeSYgY29uZmlndXJhdGlvbiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1
YWwgflJUQ0NvbmZpZ3VyYXRpb24oKSB7IH0KIAorICAgIGVudW0gY2xhc3MgUlRDSWNlVHJhbnNw
b3J0UG9saWN5IHsgUHVibGljLCBSZWxheSwgQWxsIH07CiAgICAgUlRDSWNlVHJhbnNwb3J0UG9s
aWN5IGljZVRyYW5zcG9ydFBvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1faWNlVHJhbnNwb3J0UG9s
aWN5OyB9CisKKyAgICBlbnVtIGNsYXNzIFJUQ0J1bmRsZVBvbGljeSB7IEJhbGFuY2VkLCBNYXhD
b21wYXQsIE1heEJ1bmRsZSB9OwogICAgIFJUQ0J1bmRsZVBvbGljeSBidW5kbGVQb2xpY3koKSBj
b25zdCB7IHJldHVybiBtX2J1bmRsZVBvbGljeTsgfQorCiAgICAgVmVjdG9yPFJlZlB0cjxSVENJ
Y2VTZXJ2ZXI+PiBpY2VTZXJ2ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9pY2VTZXJ2ZXJzOyB9CiAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRl
eHQuaAppbmRleCBiMDlkYTE2NDhiY2U2ZWIyN2ZiZDdiNjc4ZjQ3MTdhZWU4OTlkYmJkLi44NThm
NjQ3YWZmNzdkYmIyNTM4NjZmZTA5MjJhNTVkNGRiYWZjNWU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKQEAgLTcxLDggKzcxLDYgQEAgY2xh
c3MgUGVyaW9kaWNXYXZlOwogY2xhc3MgU2NyaXB0UHJvY2Vzc29yTm9kZTsKIGNsYXNzIFdhdmVT
aGFwZXJOb2RlOwogCi1lbnVtIGNsYXNzIEF1ZGlvQ29udGV4dFN0YXRlIHsgU3VzcGVuZGVkLCBS
dW5uaW5nLCBJbnRlcnJ1cHRlZCwgQ2xvc2VkIH07Ci0KIC8vIEF1ZGlvQ29udGV4dCBpcyB0aGUg
Y29ybmVyc3RvbmUgb2YgdGhlIHdlYiBhdWRpbyBBUEkgYW5kIGFsbCBBdWRpb05vZGVzIGFyZSBj
cmVhdGVkIGZyb20gaXQuCiAvLyBGb3IgdGhyZWFkIHNhZmV0eSBiZXR3ZWVuIHRoZSBhdWRpbyB0
aHJlYWQgYW5kIHRoZSBtYWluIHRocmVhZCwgaXQgaGFzIGEgcmVuZGVyaW5nIGdyYXBoIGxvY2tp
bmcgbWVjaGFuaXNtLiAKIApAQCAtMTE3LDcgKzExNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJl
c3VtZShQcm9taXNlJiYpOwogICAgIHZvaWQgY2xvc2UoUHJvbWlzZSYmKTsKIAotICAgIHVzaW5n
IFN0YXRlID0gQXVkaW9Db250ZXh0U3RhdGU7CisgICAgZW51bSBjbGFzcyBTdGF0ZSB7IFN1c3Bl
bmRlZCwgUnVubmluZywgSW50ZXJydXB0ZWQsIENsb3NlZCB9OwogICAgIFN0YXRlIHN0YXRlKCkg
Y29uc3Q7CiAKICAgICAvLyBUaGUgQXVkaW9Ob2RlIGNyZWF0ZSBtZXRob2RzIGFyZSBjYWxsZWQg
b24gdGhlIG1haW4gdGhyZWFkIChmcm9tIEphdmFTY3JpcHQpLgpAQCAtNDA1LDcgKzQwMyw3IEBA
IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgQXVkaW9Db250ZXh0JiBsaHMsIGNvbnN0IEF1
ZGlvQ29udGV4dCYgcmhzKQogICAgIHJldHVybiAmbGhzICE9ICZyaHM7CiB9CiAKLWlubGluZSBB
dWRpb0NvbnRleHRTdGF0ZSBBdWRpb0NvbnRleHQ6OnN0YXRlKCkgY29uc3QKK2lubGluZSBBdWRp
b0NvbnRleHQ6OlN0YXRlIEF1ZGlvQ29udGV4dDo6c3RhdGUoKSBjb25zdAogewogICAgIHJldHVy
biBtX3N0YXRlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9XYXZlU2hhcGVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dh
dmVTaGFwZXJOb2RlLmNwcAppbmRleCBlY2QzZjQ3MzJhNTk1NmE5MGM1MjhmMWJmNTRhOTQ4ZjI3
MGZlZDVhLi41ZWQ2YmEyOWMzOGEwODJiYmI4YTJjNzEzOWM4ZDU4Y2NmZWZlZTVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcApA
QCAtNTQsMTQgKzU0LDE0IEBAIEZsb2F0MzJBcnJheSogV2F2ZVNoYXBlck5vZGU6OmN1cnZlKCkK
ICAgICByZXR1cm4gd2F2ZVNoYXBlclByb2Nlc3NvcigpLT5jdXJ2ZSgpOwogfQogCi1zdGF0aWMg
aW5saW5lIFdhdmVTaGFwZXJQcm9jZXNzb3I6Ok92ZXJTYW1wbGVUeXBlIHByb2Nlc3NvclR5cGUo
T3ZlclNhbXBsZVR5cGUgdHlwZSkKK3N0YXRpYyBpbmxpbmUgV2F2ZVNoYXBlclByb2Nlc3Nvcjo6
T3ZlclNhbXBsZVR5cGUgcHJvY2Vzc29yVHlwZShXYXZlU2hhcGVyTm9kZTo6T3ZlclNhbXBsZVR5
cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIE92ZXJTYW1wbGVUeXBl
OjpOb25lOgorICAgIGNhc2UgV2F2ZVNoYXBlck5vZGU6Ok92ZXJTYW1wbGVUeXBlOjpOb25lOgog
ICAgICAgICByZXR1cm4gV2F2ZVNoYXBlclByb2Nlc3Nvcjo6T3ZlclNhbXBsZU5vbmU7Ci0gICAg
Y2FzZSBPdmVyU2FtcGxlVHlwZTo6XzJ4OgorICAgIGNhc2UgV2F2ZVNoYXBlck5vZGU6Ok92ZXJT
YW1wbGVUeXBlOjpfMng6CiAgICAgICAgIHJldHVybiBXYXZlU2hhcGVyUHJvY2Vzc29yOjpPdmVy
U2FtcGxlMng7Ci0gICAgY2FzZSBPdmVyU2FtcGxlVHlwZTo6XzR4OgorICAgIGNhc2UgV2F2ZVNo
YXBlck5vZGU6Ok92ZXJTYW1wbGVUeXBlOjpfNHg6CiAgICAgICAgIHJldHVybiBXYXZlU2hhcGVy
UHJvY2Vzc29yOjpPdmVyU2FtcGxlNHg7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpAQCAtNzcsNyArNzcsNyBAQCB2b2lkIFdhdmVTaGFwZXJOb2RlOjpzZXRPdmVyc2FtcGxlKE92
ZXJTYW1wbGVUeXBlIHR5cGUpCiAgICAgd2F2ZVNoYXBlclByb2Nlc3NvcigpLT5zZXRPdmVyc2Ft
cGxlKHByb2Nlc3NvclR5cGUodHlwZSkpOwogfQogCi1PdmVyU2FtcGxlVHlwZSBXYXZlU2hhcGVy
Tm9kZTo6b3ZlcnNhbXBsZSgpIGNvbnN0CithdXRvIFdhdmVTaGFwZXJOb2RlOjpvdmVyc2FtcGxl
KCkgY29uc3QgLT4gT3ZlclNhbXBsZVR5cGUKIHsKICAgICBzd2l0Y2ggKGNvbnN0X2Nhc3Q8V2F2
ZVNoYXBlck5vZGUqPih0aGlzKS0+d2F2ZVNoYXBlclByb2Nlc3NvcigpLT5vdmVyc2FtcGxlKCkp
IHsKICAgICBjYXNlIFdhdmVTaGFwZXJQcm9jZXNzb3I6Ok92ZXJTYW1wbGVOb25lOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5oCmluZGV4IDk0
ZjI1OTY4NTRiMGQ5OGEyNWNjMTU1YTgzMzdlOGMzZDcwYzZlNzMuLmM5MDgzNzMwY2Q5ZTVmY2M5
ZjkwMDYzZTdjOGYwMTk3MjI2YzY2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmgKQEAgLTMwLDggKzMwLDYgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIE92ZXJTYW1wbGVUeXBlIHsgTm9uZSwgXzJ4LCBfNHgg
fTsKLQogY2xhc3MgV2F2ZVNoYXBlck5vZGUgZmluYWwgOiBwdWJsaWMgQXVkaW9CYXNpY1Byb2Nl
c3Nvck5vZGUgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2F2ZVNoYXBlck5vZGU+IGNyZWF0
ZShBdWRpb0NvbnRleHQmIGNvbnRleHQpCkBAIC00Myw2ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldEN1cnZlKEZsb2F0MzJBcnJheSopOwogICAgIEZsb2F0MzJBcnJheSogY3VydmUoKTsK
IAorICAgIGVudW0gY2xhc3MgT3ZlclNhbXBsZVR5cGUgeyBOb25lLCBfMngsIF80eCB9OwogICAg
IHZvaWQgc2V0T3ZlcnNhbXBsZShPdmVyU2FtcGxlVHlwZSk7CiAgICAgT3ZlclNhbXBsZVR5cGUg
b3ZlcnNhbXBsZSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCmluZGV4IDRiMzRmODdhMDhlZmI5OGFlZGI2
YmNkM2IyNmFlOTQyNjg3ZDgzYzguLjc0Y2NiOTYzZGJlNGU1ZmVkM2FjM2NmMWVkOTc4Yzk3NWFm
MjEyZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJl
cXVlc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0
cFJlcXVlc3RDdXN0b20uY3BwCkBAIC0xODksOCArMTg5LDggQEAgSlNWYWx1ZSBKU1hNTEh0dHBS
ZXF1ZXN0OjpyZXNwb25zZShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogICAgIGF1dG8gdHlwZSA9
IHdyYXBwZWQoKS5yZXNwb25zZVR5cGUoKTsKIAogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNh
c2UgWE1MSHR0cFJlcXVlc3RSZXNwb25zZVR5cGU6OkVtcHR5U3RyaW5nOgotICAgIGNhc2UgWE1M
SHR0cFJlcXVlc3RSZXNwb25zZVR5cGU6OlRleHQ6CisgICAgY2FzZSBYTUxIdHRwUmVxdWVzdDo6
UmVzcG9uc2VUeXBlOjpFbXB0eVN0cmluZzoKKyAgICBjYXNlIFhNTEh0dHBSZXF1ZXN0OjpSZXNw
b25zZVR5cGU6OlRleHQ6CiAgICAgICAgIHJldHVybiByZXNwb25zZVRleHQoc3RhdGUpOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtMjAwLDEyICsyMDAsMTIgQEAgSlNWYWx1ZSBK
U1hNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogICAgICAg
ICByZXR1cm4ganNOdWxsKCk7CiAKICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIFhNTEh0
dHBSZXF1ZXN0UmVzcG9uc2VUeXBlOjpFbXB0eVN0cmluZzoKLSAgICBjYXNlIFhNTEh0dHBSZXF1
ZXN0UmVzcG9uc2VUeXBlOjpUZXh0OgorICAgIGNhc2UgWE1MSHR0cFJlcXVlc3Q6OlJlc3BvbnNl
VHlwZTo6RW1wdHlTdHJpbmc6CisgICAgY2FzZSBYTUxIdHRwUmVxdWVzdDo6UmVzcG9uc2VUeXBl
OjpUZXh0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAK
LSAgICBjYXNlIFhNTEh0dHBSZXF1ZXN0UmVzcG9uc2VUeXBlOjpKc29uOgorICAgIGNhc2UgWE1M
SHR0cFJlcXVlc3Q6OlJlc3BvbnNlVHlwZTo6SnNvbjoKICAgICAgICAgewogICAgICAgICAgICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTT05QYXJzZSgmc3RhdGUsIHdyYXBwZWQoKS5yZXNwb25zZVRleHRJ
Z25vcmluZ1Jlc3BvbnNlVHlwZSgpKTsKICAgICAgICAgICAgIGlmICghdmFsdWUpCkBAIC0yMTUs
NyArMjE1LDcgQEAgSlNWYWx1ZSBKU1hNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZShFeGVjU3RhdGUm
IHN0YXRlKSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgICAgICB9CiAKLSAg
ICBjYXNlIFhNTEh0dHBSZXF1ZXN0UmVzcG9uc2VUeXBlOjpEb2N1bWVudDoKKyAgICBjYXNlIFhN
TEh0dHBSZXF1ZXN0OjpSZXNwb25zZVR5cGU6OkRvY3VtZW50OgogICAgICAgICB7CiAgICAgICAg
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICAgICAgICAgIERvY3VtZW50KiBkb2N1bWVu
dCA9IHdyYXBwZWQoKS5yZXNwb25zZVhNTChlYyk7CkBAIC0yMjYsMTAgKzIyNiwxMCBAQCBKU1Zh
bHVlIEpTWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlKEV4ZWNTdGF0ZSYgc3RhdGUpIGNvbnN0CiAg
ICAgICAgICAgICByZXR1cm4gdG9KUygmc3RhdGUsIGdsb2JhbE9iamVjdCgpLCBkb2N1bWVudCk7
CiAgICAgICAgIH0KIAotICAgIGNhc2UgWE1MSHR0cFJlcXVlc3RSZXNwb25zZVR5cGU6OkJsb2I6
CisgICAgY2FzZSBYTUxIdHRwUmVxdWVzdDo6UmVzcG9uc2VUeXBlOjpCbG9iOgogICAgICAgICBy
ZXR1cm4gdG9KUygmc3RhdGUsIGdsb2JhbE9iamVjdCgpLCB3cmFwcGVkKCkucmVzcG9uc2VCbG9i
KCkpOwogCi0gICAgY2FzZSBYTUxIdHRwUmVxdWVzdFJlc3BvbnNlVHlwZTo6QXJyYXlidWZmZXI6
CisgICAgY2FzZSBYTUxIdHRwUmVxdWVzdDo6UmVzcG9uc2VUeXBlOjpBcnJheWJ1ZmZlcjoKICAg
ICAgICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgd3JhcHBlZCgpLnJlc3Bv
bnNlQXJyYXlCdWZmZXIoKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDMzYTM4ZDA4ZjljNTM1ODU0Mzgz
OGFhYmQwNzMzNjQyMDAwOTExYWYuLmI2OTMwZjIzMDg5ZmRjNGU1YjBhZjE5NTA1ODQ3M2M3ZTVk
MmU1NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCkBAIC0zMjEsNyArMzIxLDcgQEAgc3ViIElzRE9NR2xvYmFsT2JqZWN0CiAK
IHN1YiBHZW5lcmF0ZUdldE93blByb3BlcnR5U2xvdEJvZHkKIHsKLSAgICBteSAoJGludGVyZmFj
ZSwgJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRoYXNJbnN0YW5jZVByb3BlcnRpZXMsICRp
bmxpbmVkKSA9IEBfOworICAgIG15ICgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkaGFzSW5zdGFu
Y2VQcm9wZXJ0aWVzLCAkaW5saW5lZCkgPSBAXzsKIAogICAgIG15ICRuYW1lc3BhY2VNYXliZSA9
ICgkaW5saW5lZCA/ICJKU0M6OiIgOiAiIik7CiAgICAgbXkgJG5hbWVkR2V0dGVyRnVuY3Rpb24g
PSBHZXROYW1lZEdldHRlckZ1bmN0aW9uKCRpbnRlcmZhY2UpOwpAQCAtNTExLDM1ICs1MTEsMjcg
QEAgc3ViIFNob3VsZEdlbmVyYXRlVG9KU0ltcGxlbWVudGF0aW9uCiAKIHN1YiBHZXRBdHRyaWJ1
dGVHZXR0ZXJOYW1lCiB7Ci0gICAgbXkgKCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkaW50
ZXJmYWNlLCAkYXR0cmlidXRlKSA9IEBfOwotICAgIGlmICgkYXR0cmlidXRlLT5pc1N0YXRpYykg
ewotICAgICAgICByZXR1cm4gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGNsYXNzTmFtZSkg
LiAiQ29uc3RydWN0b3IiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5uYW1lKTsKLSAgICB9Ci0gICAgaWYgKElzSlNCdWlsdGluKCRpbnRlcmZhY2Us
ICRhdHRyaWJ1dGUpKSB7Ci0gICAgICAgIHJldHVybiBHZXRKU0J1aWx0aW5GdW5jdGlvbk5hbWUo
JGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7Ci0gICAgfQotICAgIHJldHVybiAianMiIC4gJGludGVy
ZmFjZU5hbWUgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1
cmUtPm5hbWUpIC4gKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29uc3RydWN0b3Ik
LyA/ICJDb25zdHJ1Y3RvciIgOiAiIik7CisgICAgbXkgKCRpbnRlcmZhY2UsICRjbGFzc05hbWUs
ICRhdHRyaWJ1dGUpID0gQF87CisKKyAgICByZXR1cm4gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmly
c3QoJGNsYXNzTmFtZSkgLiAiQ29uc3RydWN0b3IiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmly
c3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKSBpZiAkYXR0cmlidXRlLT5pc1N0YXRpYzsK
KyAgICByZXR1cm4gR2V0SlNCdWlsdGluRnVuY3Rpb25OYW1lKCRjbGFzc05hbWUsICRhdHRyaWJ1
dGUpIGlmIElzSlNCdWlsdGluKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOworICAgIHJldHVybiAi
anMiIC4gJGludGVyZmFjZS0+bmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSkgLiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+
IC9Db25zdHJ1Y3RvciQvID8gIkNvbnN0cnVjdG9yIiA6ICIiKTsKIH0KIAogc3ViIEdldEF0dHJp
YnV0ZVNldHRlck5hbWUKIHsKLSAgICBteSAoJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRp
bnRlcmZhY2UsICRhdHRyaWJ1dGUpID0gQF87Ci0gICAgaWYgKCRhdHRyaWJ1dGUtPmlzU3RhdGlj
KSB7Ci0gICAgICAgIHJldHVybiAic2V0IiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRj
bGFzc05hbWUpIC4gIkNvbnN0cnVjdG9yIiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSk7Ci0gICAgfQotICAgIGlmIChJc0pTQnVpbHRpbigk
aW50ZXJmYWNlLCAkYXR0cmlidXRlKSkgewotICAgICAgICByZXR1cm4gInNldCIgLiAkY29kZUdl
bmVyYXRvci0+V0tfdWNmaXJzdChHZXRKU0J1aWx0aW5GdW5jdGlvbk5hbWUoJGNsYXNzTmFtZSwg
JGF0dHJpYnV0ZSkpOwotICAgIH0KLSAgICByZXR1cm4gInNldEpTIiAuICRpbnRlcmZhY2VOYW1l
IC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1l
KSAuICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8gPyAiQ29u
c3RydWN0b3IiIDogIiIpOworICAgIG15ICgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmli
dXRlKSA9IEBfOworCisgICAgcmV0dXJuICJzZXQiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmly
c3QoJGNsYXNzTmFtZSkgLiAiQ29uc3RydWN0b3IiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmly
c3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKSBpZiAkYXR0cmlidXRlLT5pc1N0YXRpYzsK
KyAgICByZXR1cm4gInNldCIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdChHZXRKU0J1aWx0
aW5GdW5jdGlvbk5hbWUoJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSkpIGlmIElzSlNCdWlsdGluKCRp
bnRlcmZhY2UsICRhdHRyaWJ1dGUpOworICAgIHJldHVybiAic2V0SlMiIC4gJGludGVyZmFjZS0+
bmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+
bmFtZSkgLiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+IC9Db25zdHJ1Y3RvciQvID8g
IkNvbnN0cnVjdG9yIiA6ICIiKTsKIH0KIAogc3ViIEdldEZ1bmN0aW9uTmFtZQogewogICAgIG15
ICgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkZnVuY3Rpb24pID0gQF87CiAKLSAgICBpZiAoSXNK
U0J1aWx0aW4oJGludGVyZmFjZSwgJGZ1bmN0aW9uKSkgewotICAgICAgICByZXR1cm4gR2V0SlNC
dWlsdGluRnVuY3Rpb25OYW1lKCRjbGFzc05hbWUsICRmdW5jdGlvbik7Ci0gICAgfQorICAgIHJl
dHVybiBHZXRKU0J1aWx0aW5GdW5jdGlvbk5hbWUoJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKSBpZiBJ
c0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkZnVuY3Rpb24pOwogCiAgICAgbXkgJGZ1bmN0aW9uTmFt
ZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOwogICAgICRmdW5jdGlvbk5hbWUgPSAiU3lt
Ym9sSXRlcmF0b3IiIGlmICRmdW5jdGlvbk5hbWUgZXEgIltTeW1ib2wuSXRlcmF0b3JdIjsKQEAg
LTYxOSwxNCArNjExLDYgQEAgc3ViIEludGVyZmFjZVJlcXVpcmVzQXR0cmlidXRlc09uSW5zdGFu
Y2UKICAgICByZXR1cm4gMDsKIH0KIAotc3ViIEF0dHJpYnV0ZVNob3VsZEJlT25JbnN0YW5jZUZv
ckNvbXBhdGliaWxpdHkKLXsKLSAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7Ci0gICAgbXkgJGF0
dHJpYnV0ZSA9IHNoaWZ0OwotICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGludGVyZmFjZS0+bmFt
ZTsKLSAgICByZXR1cm4gMDsKLX0KLQogc3ViIEF0dHJpYnV0ZVNob3VsZEJlT25JbnN0YW5jZQog
ewogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKQEAgLTY0Miw4ICs2MjYsNiBAQCBzdWIgQXR0
cmlidXRlU2hvdWxkQmVPbkluc3RhbmNlCiAgICAgIyBodHRwczovL2hleWNhbS5naXRodWIuaW8v
d2ViaWRsLyNVbmZvcmdlYWJsZQogICAgIHJldHVybiAxIGlmIElzVW5mb3JnZWFibGUoJGludGVy
ZmFjZSwgJGF0dHJpYnV0ZSk7CiAKLSAgICByZXR1cm4gMSBpZiBBdHRyaWJ1dGVTaG91bGRCZU9u
SW5zdGFuY2VGb3JDb21wYXRpYmlsaXR5KCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwotCiAgICAg
aWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDaGVja1NlY3VyaXR5In0pIHsK
ICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkRvTm90Q2hlY2tTZWN1cml0eSJ9IG9yCiAgICAgICAgICAgICAkYXR0cmlidXRlLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEb05vdENoZWNrU2VjdXJpdHlPbkdldHRlciJ9KSB7
CkBAIC04MTMsMzMgKzc5NSw4NiBAQCBzdWIgR2V0SW1wbENsYXNzTmFtZQogICAgIHJldHVybiAk
bmFtZTsKIH0KIAorc3ViIElzQ2xhc3NOYW1lV29yZEJvdW5kYXJ5Cit7CisgICAgbXkgKCRuYW1l
LCAkaSkgPSBAXzsKKworICAgICMgSW50ZXJwcmV0IG5lZ2F0aXZlIG51bWJlcnMgYXMgZGlzdGFu
Y2UgZnJvbSBlbmQgb2Ygc3RyaW5nLCBqdXN0IGFzIHRoZSBzdWJzdHIgZnVuY3Rpb24gZG9lcy4K
KyAgICAkaSArPSBsZW5ndGgoJG5hbWUpIGlmICRpIDwgMDsKKworICAgIHJldHVybiAwIGlmICRp
IDwgMDsKKyAgICByZXR1cm4gMSBpZiAkaSA9PSAwOworICAgIHJldHVybiAxIGlmICRpID09IGxl
bmd0aCgkbmFtZSk7CisgICAgcmV0dXJuIDAgaWYgJGkgPiBsZW5ndGgoJG5hbWUpOworCisgICAg
IyBGb3Igbm93LCB3b3JkIGJvdW5kYXJpZXMgYXJlIHdoZXJlIHRoZSBwcmV2aW91cyBsZXR0ZXIg
d2FzIG5vdCB1cHBlcmNhc2UgYnV0IHRoZSBuZXh0IGxldHRlciBpcyB1cHBlcmNhc2UuCisgICAg
IyBDb3VsZCBtYWtlIGEgZmFuY2llciBydWxlIHRoYXQgdW5kZXJzdGFuZHMgdGhhdCB0aGUgYm91
bmRhcnkgYmV0d2VlbiBVUkwgYW5kIExlbmd0aCBpbiBVUkxMZW5ndGggaXMgb25lIHRvby4KKyAg
ICByZXR1cm4gc3Vic3RyKCRuYW1lLCAkaSAtIDEsIDIpID1+IC9bXkEtWl1bQS1aXS87Cit9CisK
K3N1YiBQcmVmaXhJc1dvcmRzVGhhdE1hdGNoU3RhcnRPckVuZFdvcmRzCit7CisgICAgbXkgKCRj
bGFzcywgJG5hbWUsICRpKSA9IEBfOworCisgICAgcmV0dXJuIElzQ2xhc3NOYW1lV29yZEJvdW5k
YXJ5KCRuYW1lLCAkaSkKKyAgICAgICAgJiYgKElzQ2xhc3NOYW1lV29yZEJvdW5kYXJ5KCRjbGFz
cywgJGkpICYmIHN1YnN0cigkY2xhc3MsIDAsICRpKSBlcSBzdWJzdHIoJG5hbWUsIDAsICRpKQor
ICAgICAgICAgICAgfHwgSXNDbGFzc05hbWVXb3JkQm91bmRhcnkoJGNsYXNzLCAtJGkpICYmIHN1
YnN0cigkY2xhc3MsIC0kaSkgZXEgc3Vic3RyKCRuYW1lLCAwLCAkaSkpOworfQorCiBzdWIgR2V0
RW51bWVyYXRpb25DbGFzc05hbWUKIHsKLSAgICBteSAoJG5hbWUpID0gQF87Ci0gICAgcmV0dXJu
ICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRuYW1lKTsKLX07CisgICAgbXkgKCRpbnRlcmZh
Y2UsICRuYW1lKSA9IEBfOworCisgICAgbXkgJGNsYXNzID0gR2V0SW1wbENsYXNzTmFtZSgkaW50
ZXJmYWNlLT5uYW1lKTsKKyAgICBteSAkZW51bSA9ICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0
KCRuYW1lKTsKKworICAgICMgU2luY2UgdGhlIGVudW1lcmF0aW9uIG5hbWUgd2lsbCBiZSBuZXN0
ZWQgaW4gdGhlIGNsYXNzIG5hbWUncyBuYW1lc3BhY2UsIHJlbW92ZSBhbnkgd29yZHMKKyAgICAj
IHRoYXQgaGFwcGVuIHRvIG1hdGNoIHRoZSBzdGFydCBvciBlbmQgb2YgdGhlIGNsYXNzIG5hbWUu
IElmIGFuIGVudW1lcmF0aW9uIGlzIG5hbWVkIFRyYWNrVHlwZSBvcgorICAgICMgVGV4dFRyYWNr
VHlwZSwgYW5kIHRoZSBjbGFzcyBpcyBuYW1lZCBUZXh0VHJhY2ssIHRoZW4gd2Ugd2lsbCBnZXQg
YSBuYW1lIGxpa2UgVGV4dFRyYWNrOjpUeXBlLgorICAgIG15ICRlbnVtTGVuZ3RoID0gbGVuZ3Ro
KCRlbnVtKTsKKyAgICBteSAkbG9uZ2VzdFByZWZpeExlbmd0aCA9IDA7CisgICAgaWYgKCRlbnVt
ID1+IC9eW0EtWl0uLykgeworICAgICAgICBmb3IgKG15ICRpID0gMjsgJGkgPCAkZW51bUxlbmd0
aCAtIDE7ICRpKyspIHsKKyAgICAgICAgICAgICRsb25nZXN0UHJlZml4TGVuZ3RoID0gJGkgaWYg
UHJlZml4SXNXb3Jkc1RoYXRNYXRjaFN0YXJ0T3JFbmRXb3JkcygkY2xhc3MsICRlbnVtLCAkaSk7
CisgICAgICAgIH0KKyAgICB9CisgICAgJGVudW0gPSBzdWJzdHIoJGVudW0sICRsb25nZXN0UHJl
Zml4TGVuZ3RoKTsKKworICAgIHJldHVybiAiJHtjbGFzc306OiRlbnVtIjsKK30KKworc3ViIEdl
dEVudW1lcmF0aW9uQ2xhc3NJZGVudGlmaWVyCit7CisgICAgbXkgKCRpbnRlcmZhY2UsICRuYW1l
KSA9IEBfOworCisgICAgbXkgJGlkZW50aWZpZXIgPSBHZXRFbnVtZXJhdGlvbkNsYXNzTmFtZSgk
aW50ZXJmYWNlLCAkbmFtZSk7CisgICAgJGlkZW50aWZpZXIgPX4gcy86Oi8vOworICAgIHJldHVy
biAkaWRlbnRpZmllcjsKK30KIAogc3ViIEdldEVudW1lcmF0aW9uVmFsdWVOYW1lCiB7CiAgICAg
bXkgKCRuYW1lKSA9IEBfOworCiAgICAgcmV0dXJuICJFbXB0eVN0cmluZyIgaWYgJG5hbWUgZXEg
IiI7CiAgICAgJG5hbWUgPSBqb2luKCIiLCBtYXAgeyAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJz
dCgkXykgfSBzcGxpdCgiLSIsICRuYW1lKSk7CiAgICAgJG5hbWUgPSAiXyRuYW1lIiBpZiAkbmFt
ZSA9fiAvXlxkLzsKICAgICByZXR1cm4gJG5hbWU7Ci19OworfQogCi1zdWIgR2V0RW51bWVyYXRp
b25JbXBsZW1lbnRhdGlvbkNvbnRlbnQKK3N1YiBHZW5lcmF0ZUVudW1lcmF0aW9uSW1wbGVtZW50
YXRpb25Db250ZW50CiB7Ci0gICAgbXkgKCRlbnVtZXJhdGlvbnMpID0gQF87CisgICAgbXkgKCRp
bnRlcmZhY2UsICRlbnVtZXJhdGlvbnMpID0gQF87CiAKLSAgICAjIEZJWE1FOiBDb3VsZCBvcHRp
bWl6ZSB0aGlzIHRvIG9ubHkgZ2VuZXJhdGUgdGhpbmdzIHRoYXQgYXJlIHVzZWQsIHdoaWNoIHdv
dWxkIHJlcXVpcmUKLSAgICAjIGl0ZXJhdGluZyBvdmVyIGV2ZXJ5dGhpbmcgaW4gdGhlIGludGVy
ZmFjZS4KKyAgICAjIEZJWE1FOiBDb3VsZCBvcHRpbWl6ZSB0aGlzIHRvIG9ubHkgZ2VuZXJhdGUg
dGhlIHBhcnRzIG9mIGVhY2ggZW51bWVyYXRpb24gdGhhdCBhcmUgYWN0dWFsbHkKKyAgICAjIHVz
ZWQsIHdoaWNoIHdvdWxkIHJlcXVpcmUgaXRlcmF0aW5nIG92ZXIgZXZlcnl0aGluZyBpbiB0aGUg
aW50ZXJmYWNlLgogCiAgICAgbXkgJHJlc3VsdCA9ICIiOwogICAgIGZvcmVhY2ggbXkgJGVudW1l
cmF0aW9uIChAJGVudW1lcmF0aW9ucykgewogICAgICAgICBteSAkbmFtZSA9ICRlbnVtZXJhdGlv
bi0+bmFtZTsKIAotICAgICAgICBteSAkY2xhc3NOYW1lID0gR2V0RW51bWVyYXRpb25DbGFzc05h
bWUoJG5hbWUpOworICAgICAgICBteSAkY2xhc3NOYW1lID0gR2V0RW51bWVyYXRpb25DbGFzc05h
bWUoJGludGVyZmFjZSwgJG5hbWUpOworICAgICAgICBteSAkY2xhc3NJZGVudGlmaWVyID0gR2V0
RW51bWVyYXRpb25DbGFzc0lkZW50aWZpZXIoJGludGVyZmFjZSwgJG5hbWUpOwogCiAgICAgICAg
ICMgRklYTUU6IEEgbGl0dGxlIHVnbHkgdG8gaGF2ZSB0aGlzIGJlIGEgc2lkZSBlZmZlY3QgaW5z
dGVhZCBvZiBhIHJldHVybiB2YWx1ZS4KICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIjxydW50
aW1lL0pTU3RyaW5nLmg+Iik7CkBAIC04NTAsOCArODg1LDggQEAgc3ViIEdldEVudW1lcmF0aW9u
SW1wbGVtZW50YXRpb25Db250ZW50CiAgICAgICAgICMgRGVjbGFyZSB0aGVzZSBpbnN0ZWFkIG9m
IHVzaW5nICJzdGF0aWMiIGJlY2F1c2UgdGhlc2UgbWF5IGJlIHVudXNlZCBhbmQgd2UgZG9uJ3QK
ICAgICAgICAgIyB3YW50IHRvIGdldCB3YXJuaW5ncyBhYm91dCB0aGVtLgogICAgICAgICAkcmVz
dWx0IC49ICJKU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiwgJGNsYXNzTmFt
ZSk7XG4iOwotICAgICAgICAkcmVzdWx0IC49ICJPcHRpb25hbDwkY2xhc3NOYW1lPiBwYXJzZSRj
bGFzc05hbWUoRXhlY1N0YXRlJiwgSlNWYWx1ZSk7XG4iOwotICAgICAgICAkcmVzdWx0IC49ICJl
eHRlcm4gY29uc3QgY2hhciBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzJHtjbGFzc05hbWV9W107
XG5cbiI7CisgICAgICAgICRyZXN1bHQgLj0gIk9wdGlvbmFsPCRjbGFzc05hbWU+IHBhcnNlJGNs
YXNzSWRlbnRpZmllcihFeGVjU3RhdGUmLCBKU1ZhbHVlKTtcbiI7CisgICAgICAgICRyZXN1bHQg
Lj0gImV4dGVybiBjb25zdCBjaGFyIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXMke2NsYXNzSWRl
bnRpZmllcn1bXTtcblxuIjsKIAogICAgICAgICAjIFRha2UgYW4gRXhlY1N0YXRlKiBpbnN0ZWFk
IG9mIGFuIEV4ZWNTdGF0ZSYgdG8gbWF0Y2ggdGhlIGpzU3RyaW5nV2l0aENhY2hlIGZyb20gSlNT
dHJpbmcuaC4KICAgICAgICAgIyBGSVhNRTogQ2hhbmdlIHRvIHRha2UgVk0mIGluc3RlYWQgb2Yg
RXhlY1N0YXRlKi4KQEAgLTg4NSw3ICs5MjAsNyBAQCBzdWIgR2V0RW51bWVyYXRpb25JbXBsZW1l
bnRhdGlvbkNvbnRlbnQKICAgICAgICAgIyBGSVhNRTogQ2hhbmdlIHRvIHRha2UgVk0mIGluc3Rl
YWQgb2YgRXhlY1N0YXRlJi4KICAgICAgICAgIyBGSVhNRTogQ29uc2lkZXIgdXNpbmcgdG9TdHJp
bmdPck51bGwgdG8gbWFrZSBleGNlcHRpb24gY2hlY2tpbmcgZmFzdGVyLgogICAgICAgICAjIEZJ
WE1FOiBDb25zaWRlciBmaW5kaW5nIGEgbW9yZSBlZmZpY2llbnQgd2F5IHRvIG1hdGNoIGFnYWlu
c3QgYWxsIHRoZSBzdHJpbmdzIHF1aWNrbHkuCi0gICAgICAgICRyZXN1bHQgLj0gIk9wdGlvbmFs
PCRjbGFzc05hbWU+IHBhcnNlJGNsYXNzTmFtZShFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZh
bHVlKVxuIjsKKyAgICAgICAgJHJlc3VsdCAuPSAiT3B0aW9uYWw8JGNsYXNzTmFtZT4gcGFyc2Uk
Y2xhc3NJZGVudGlmaWVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpXG4iOwogICAg
ICAgICAkcmVzdWx0IC49ICJ7XG4iOwogICAgICAgICAkcmVzdWx0IC49ICIgICAgYXV0byBzdHJp
bmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7XG4iOwogICAgICAgICBmb3JlYWNo
IG15ICR2YWx1ZSAoQHskZW51bWVyYXRpb24tPnZhbHVlc30pIHsKQEAgLTkwMCw3ICs5MzUsNyBA
QCBzdWIgR2V0RW51bWVyYXRpb25JbXBsZW1lbnRhdGlvbkNvbnRlbnQKICAgICAgICAgJHJlc3Vs
dCAuPSAiICAgIHJldHVybiBOdWxsb3B0O1xuIjsKICAgICAgICAgJHJlc3VsdCAuPSAifVxuXG4i
OwogCi0gICAgICAgICRyZXN1bHQgLj0gImNvbnN0IGNoYXIgZXhwZWN0ZWRFbnVtZXJhdGlvblZh
bHVlcyR7Y2xhc3NOYW1lfVtdID0gXCJcXFwiIiAuIGpvaW4gKCJcXFwiLCBcXFwiIiwgQHskZW51
bWVyYXRpb24tPnZhbHVlc30pIC4gIlxcXCJcIjtcblxuIjsKKyAgICAgICAgJHJlc3VsdCAuPSAi
Y29uc3QgY2hhciBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzJHtjbGFzc0lkZW50aWZpZXJ9W10g
PSBcIlxcXCIiIC4gam9pbiAoIlxcXCIsIFxcXCIiLCBAeyRlbnVtZXJhdGlvbi0+dmFsdWVzfSkg
LiAiXFxcIlwiO1xuXG4iOwogCiAgICAgICAgICRyZXN1bHQgLj0gIiNlbmRpZlxuXG4iIGlmICRj
b25kaXRpb25hbFN0cmluZzsKICAgICB9CkBAIC0xMzQ4LDEwICsxMzgzLDcgQEAgc3ViIEdlbmVy
YXRlSGVhZGVyCiAKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4iKTsKIAotICAgICMgQWRk
IHByb3RvdHlwZSBkZWNsYXJhdGlvbi4KLSAgICBpZiAoSGVhZGVyTmVlZHNQcm90b3R5cGVEZWNs
YXJhdGlvbigkaW50ZXJmYWNlKSkgewotICAgICAgICBHZW5lcmF0ZVByb3RvdHlwZURlY2xhcmF0
aW9uKFxAaGVhZGVyQ29udGVudCwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSwgJGludGVyZmFjZU5h
bWUpOwotICAgIH0KKyAgICBHZW5lcmF0ZVByb3RvdHlwZURlY2xhcmF0aW9uKFxAaGVhZGVyQ29u
dGVudCwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSkgaWYgSGVhZGVyTmVlZHNQcm90b3R5cGVEZWNs
YXJhdGlvbigkaW50ZXJmYWNlKTsKIAogICAgIGlmICgkaGFzRm9yd2FyZERlY2xhcmluZ0Z1bmN0
aW9ucykgewogICAgICAgICBteSAkaW5BcHBsZUNvcHlyaWdodCA9IDA7CkBAIC0xMzg5LDEwICsx
NDIxLDEwIEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgICAgICAgICBteSAkY29uZGl0aW9u
YWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0
cmlidXRlLT5zaWduYXR1cmUpOwogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNp
ZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAgICAg
ICAgICAgbXkgJGdldHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZU5hbWUs
ICRjbGFzc05hbWUsICRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOworICAgICAgICAgICAgbXkgJGdl
dHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0
dHJpYnV0ZSk7CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiSlNDOjpFbmNvZGVk
SlNWYWx1ZSAke2dldHRlcn0oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7XG4iKTsKICAgICAgICAgICAgIGlmICghSXNSZWFkb25seSgkYXR0
cmlidXRlKSkgewotICAgICAgICAgICAgICAgIG15ICRzZXR0ZXIgPSBHZXRBdHRyaWJ1dGVTZXR0
ZXJOYW1lKCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlLCAkYXR0cmlidXRl
KTsKKyAgICAgICAgICAgICAgICBteSAkc2V0dGVyID0gR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgk
aW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKICAgICAgICAgICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiYm9vbCAke3NldHRlcn0oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTtcbiIpOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNvbmRpdGlv
bmFsU3RyaW5nOwpAQCAtMTQ1OCwxMyArMTQ5MCwxMyBAQCBzdWIgR2VuZXJhdGVQcm9wZXJ0aWVz
SGFzaFRhYmxlCiAgICAgICAgIG15ICRzcGVjaWFsID0gR2V0SlNDQXR0cmlidXRlc0ZvckF0dHJp
YnV0ZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKICAgICAgICAgcHVzaChAJGhhc2hTcGVjaWFs
cywgJHNwZWNpYWwpOwogCi0gICAgICAgIG15ICRnZXR0ZXIgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJO
YW1lKCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsK
KyAgICAgICAgbXkgJGdldHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZSwg
JGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgIHB1c2goQCRoYXNoVmFsdWUxLCAkZ2V0
dGVyKTsKIAogICAgICAgICBpZiAoSXNSZWFkb25seSgkYXR0cmlidXRlKSkgewogICAgICAgICAg
ICAgcHVzaChAJGhhc2hWYWx1ZTIsICIwIik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBteSAkc2V0dGVyID0gR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNlTmFtZSwgJGNs
YXNzTmFtZSwgJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICBteSAkc2V0dGVy
ID0gR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmli
dXRlKTsKICAgICAgICAgICAgIHB1c2goQCRoYXNoVmFsdWUyLCAkc2V0dGVyKTsKICAgICAgICAg
fQogCkBAIC0xNjQxLDkgKzE2NzMsNyBAQCBzdWIgTGVuZ3RoT2ZMb25nZXN0RnVuY3Rpb25QYXJh
bWV0ZXJMaXN0CiAKIHN1YiBHZW5lcmF0ZU92ZXJsb2FkZWRGdW5jdGlvbgogewotICAgIG15ICRm
dW5jdGlvbiA9IHNoaWZ0OwotICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKLSAgICBteSAkaW50
ZXJmYWNlTmFtZSA9IHNoaWZ0OworICAgIG15ICgkZnVuY3Rpb24sICRpbnRlcmZhY2UpID0gQF87
CiAKICAgICAjIEdlbmVyYXRlIGNvZGUgZm9yIGNob29zaW5nIHRoZSBjb3JyZWN0IG92ZXJsb2Fk
IHRvIGNhbGwuIE92ZXJsb2FkcyBhcmUKICAgICAjIGNob3NlbiBiYXNlZCBvbiB0aGUgdG90YWwg
bnVtYmVyIG9mIGFyZ3VtZW50cyBwYXNzZWQgYW5kIHRoZSB0eXBlIG9mCkBAIC0xNjUyLDYgKzE2
ODIsNyBAQCBzdWIgR2VuZXJhdGVPdmVybG9hZGVkRnVuY3Rpb24KICAgICAjIGRlY2xhcmF0aW9u
IGluIHRoZSBJREwuCiAKICAgICBteSAka2luZCA9ICRmdW5jdGlvbi0+aXNTdGF0aWMgPyAiQ29u
c3RydWN0b3IiIDogKE9wZXJhdGlvblNob3VsZEJlT25JbnN0YW5jZSgkaW50ZXJmYWNlLCAkZnVu
Y3Rpb24pID8gIkluc3RhbmNlIiA6ICJQcm90b3R5cGUiKTsKKyAgICBteSAkaW50ZXJmYWNlTmFt
ZSA9ICRpbnRlcmZhY2UtPm5hbWU7CiAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9ICJqcyR7aW50ZXJm
YWNlTmFtZX0ke2tpbmR9RnVuY3Rpb24iIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUpOwogCiAgICAgIyBGSVhNRTogSW1wbGVtZW50IHN1cHBv
cnQgZm9yIG92ZXJsb2FkZWQgZnVuY3Rpb25zIHdpdGggdmFyaWFkaWMgYXJndW1lbnRzLgpAQCAt
MTkwMSw3ICsxOTMyLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIlxudXNpbmcgbmFtZXNwYWNlIEpTQztcblxuIik7CiAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJuYW1lc3BhY2UgV2ViQ29yZSB7XG5cbiIpOwogCi0gICAgcHVzaChAaW1wbENv
bnRlbnQsIEdldEVudW1lcmF0aW9uSW1wbGVtZW50YXRpb25Db250ZW50KCRlbnVtZXJhdGlvbnMp
KTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgR2VuZXJhdGVFbnVtZXJhdGlvbkltcGxlbWVudGF0
aW9uQ29udGVudCgkaW50ZXJmYWNlLCAkZW51bWVyYXRpb25zKSk7CiAKICAgICBteSBAZnVuY3Rp
b25zID0gQHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9OwogICAgIHB1c2goQGZ1bmN0aW9ucywgQHsk
aW50ZXJmYWNlLT5pdGVyYWJsZS0+ZnVuY3Rpb25zfSkgaWYgJGludGVyZmFjZS0+aXRlcmFibGU7
CkBAIC0xOTQ5LDEwICsxOTgwLDEwIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAg
ICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0
ZUNvbmRpdGlvbmFsU3RyaW5nKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSk7CiAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRp
dGlvbmFsU3RyaW5nOwotICAgICAgICAgICAgbXkgJGdldHRlciA9IEdldEF0dHJpYnV0ZUdldHRl
ck5hbWUoJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRpbnRlcmZhY2UsICRhdHRyaWJ1dGUp
OworICAgICAgICAgICAgbXkgJGdldHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVy
ZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIkpTQzo6RW5jb2RlZEpTVmFsdWUgJHtnZXR0ZXJ9KEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpO1xuIik7CiAgICAgICAgICAgICBp
ZiAoIUlzUmVhZG9ubHkoJGF0dHJpYnV0ZSkpIHsKLSAgICAgICAgICAgICAgICBteSAkc2V0dGVy
ID0gR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJGlu
dGVyZmFjZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICAgICAgbXkgJHNldHRlciA9IEdldEF0
dHJpYnV0ZVNldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CiAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJib29sICR7c2V0dGVyfShKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpO1xuIik7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxu
IikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwpAQCAtMTk2OSwxNiArMjAwMCw5IEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4iKTsKICAg
ICB9CiAKLSAgICAjIEFkZCBwcm90b3R5cGUgZGVjbGFyYXRpb24uCi0gICAgaWYgKCFIZWFkZXJO
ZWVkc1Byb3RvdHlwZURlY2xhcmF0aW9uKCRpbnRlcmZhY2UpKSB7Ci0gICAgICAgIEdlbmVyYXRl
UHJvdG90eXBlRGVjbGFyYXRpb24oXEBpbXBsQ29udGVudCwgJGNsYXNzTmFtZSwgJGludGVyZmFj
ZSwgJGludGVyZmFjZU5hbWUpOwotICAgIH0KLQotICAgICMgQWRkIGNvbnN0cnVjdG9yIGRlY2xh
cmF0aW9uCi0gICAgaWYgKE5lZWRzQ29uc3RydWN0b3JQcm9wZXJ0eSgkaW50ZXJmYWNlKSkgewot
ICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24oXEBpbXBsQ29udGVudCwgJGNs
YXNzTmFtZSwgJGludGVyZmFjZSwgJGludGVyZmFjZU5hbWUpOwotICAgIH0KKyAgICBHZW5lcmF0
ZVByb3RvdHlwZURlY2xhcmF0aW9uKFxAaW1wbENvbnRlbnQsICRjbGFzc05hbWUsICRpbnRlcmZh
Y2UpIGlmICFIZWFkZXJOZWVkc1Byb3RvdHlwZURlY2xhcmF0aW9uKCRpbnRlcmZhY2UpOwogCisg
ICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uKFxAaW1wbENvbnRlbnQsICRjbGFzc05h
bWUsICRpbnRlcmZhY2UpIGlmIE5lZWRzQ29uc3RydWN0b3JQcm9wZXJ0eSgkaW50ZXJmYWNlKTsK
IAogICAgIG15IEBoYXNoS2V5cyA9ICgpOwogICAgIG15IEBoYXNoVmFsdWUxID0gKCk7CkBAIC0y
MDQzLDEzICsyMDY3LDEzIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAg
ICBteSAkc3BlY2lhbCA9IChAc3BlY2lhbHMgPiAwKSA/IGpvaW4oIiB8ICIsIEBzcGVjaWFscykg
OiAiMCI7CiAgICAgICAgICAgICBwdXNoKEBoYXNoU3BlY2lhbHMsICRzcGVjaWFsKTsKIAotICAg
ICAgICAgICAgbXkgJGdldHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZU5h
bWUsICRjbGFzc05hbWUsICRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOworICAgICAgICAgICAgbXkg
JGdldHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwg
JGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICBwdXNoKEBoYXNoVmFsdWUxLCAkZ2V0dGVyKTsKIAog
ICAgICAgICAgICAgaWYgKElzUmVhZG9ubHkoJGF0dHJpYnV0ZSkpIHsKICAgICAgICAgICAgICAg
ICBwdXNoKEBoYXNoVmFsdWUyLCAiMCIpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICBteSAkc2V0dGVyID0gR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNlTmFt
ZSwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICAgICAg
bXkgJHNldHRlciA9IEdldEF0dHJpYnV0ZVNldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFt
ZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICAgICAgcHVzaChAaGFzaFZhbHVlMiwgJHNldHRl
cik7CiAgICAgICAgICAgICB9CiAKQEAgLTIwOTEsOSArMjExNSw5IEBAIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkY29kZUdlbmVyYXRvci0+
R2VuZXJhdGVDb21waWxlVGltZUNoZWNrRm9yRW51bXNJZk5lZWRlZCgkaW50ZXJmYWNlKSk7CiAK
ICAgICAgICAgbXkgJHByb3RvQ2xhc3NOYW1lID0gIiR7Y2xhc3NOYW1lfVByb3RvdHlwZSI7Ci0g
ICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9ucyhcQGltcGxDb250ZW50LCAkY2xh
c3NOYW1lLCAkcHJvdG9DbGFzc05hbWUsICRpbnRlcmZhY2VOYW1lLCAkdmlzaWJsZUludGVyZmFj
ZU5hbWUsICRpbnRlcmZhY2UpOworICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlv
bnMoXEBpbXBsQ29udGVudCwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1lLCAkdmlzaWJsZUlu
dGVyZmFjZU5hbWUsICRpbnRlcmZhY2UpOwogICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Ik5hbWVkQ29uc3RydWN0b3IifSkgewotICAgICAgICAgICAgR2VuZXJh
dGVDb25zdHJ1Y3RvckRlZmluaXRpb25zKFxAaW1wbENvbnRlbnQsICRjbGFzc05hbWUsICRwcm90
b0NsYXNzTmFtZSwgJGludGVyZmFjZU5hbWUsICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJOYW1lZENvbnN0cnVjdG9yIn0sICRpbnRlcmZhY2UsICJHZW5lcmF0aW5nTmFtZWRDb25z
dHJ1Y3RvciIpOworICAgICAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb25zKFxA
aW1wbENvbnRlbnQsICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJGludGVyZmFjZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57Ik5hbWVkQ29uc3RydWN0b3IifSwgJGludGVyZmFjZSwgIkdlbmVy
YXRpbmdOYW1lZENvbnN0cnVjdG9yIik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTIyODAsOCAr
MjMwNCw4IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBteSAkZW5h
YmxlX2Z1bmN0aW9uID0gR2V0UnVudGltZUVuYWJsZUZ1bmN0aW9uTmFtZSgkYXR0cmlidXRlLT5z
aWduYXR1cmUpOwogICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZU5hbWUgPSAkYXR0cmlidXRlLT5z
aWduYXR1cmUtPm5hbWU7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAo
JHtlbmFibGVfZnVuY3Rpb259KCkpIHtcbiIpOwotICAgICAgICAgICAgbXkgJGdldHRlciA9IEdl
dEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRpbnRlcmZh
Y2UsICRhdHRyaWJ1dGUpOwotICAgICAgICAgICAgbXkgJHNldHRlciA9IElzUmVhZG9ubHkoJGF0
dHJpYnV0ZSkgPyAibnVsbHB0ciIgOiBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2VO
YW1lLCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKKyAgICAgICAgICAgIG15
ICRnZXR0ZXIgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUs
ICRhdHRyaWJ1dGUpOworICAgICAgICAgICAgbXkgJHNldHRlciA9IElzUmVhZG9ubHkoJGF0dHJp
YnV0ZSkgPyAibnVsbHB0ciIgOiBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRj
bGFzc05hbWUsICRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgICAgIGF1dG8qIGN1c3RvbUdldHRlclNldHRlciA9IEN1c3RvbUdldHRlclNldHRlcjo6Y3Jl
YXRlKHZtLCAkZ2V0dGVyLCAkc2V0dGVyKTtcbiIpOwogICAgICAgICAgICAgbXkgJGpzY0F0dHJp
YnV0ZXMgPSBHZXRKU0NBdHRyaWJ1dGVzRm9yQXR0cmlidXRlKCRpbnRlcmZhY2UsICRhdHRyaWJ1
dGUpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHB1dERpcmVjdEN1
c3RvbUFjY2Vzc29yKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT4kYXR0cmlidXRlTmFtZSwgY3VzdG9t
R2V0dGVyU2V0dGVyLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKCRqc2NBdHRyaWJ1dGVzKSk7XG4i
KTsKQEAgLTIzNDAsNyArMjM2NCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDwke2NsYXNzTmFtZX0qPihv
YmplY3QpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7XG4iKTsKLSAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZUdldE93blByb3BlcnR5U2xvdEJvZHkoJGludGVy
ZmFjZSwgJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRudW1JbnN0YW5jZVByb3BlcnRpZXMg
PiAwLCAwKSk7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgR2VuZXJhdGVHZXRPd25Q
cm9wZXJ0eVNsb3RCb2R5KCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRudW1JbnN0YW5jZVByb3Bl
cnRpZXMgPiAwLCAwKSk7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7
CiAgICAgICAgIH0KIApAQCAtMjQxNSw3ICsyNDM5LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb24KICAgICAgICAgICAgIG15ICRuYW1lID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1l
OwogICAgICAgICAgICAgbXkgJHR5cGUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGU7CiAg
ICAgICAgICAgICAkY29kZUdlbmVyYXRvci0+QXNzZXJ0Tm90U2VxdWVuY2VUeXBlKCR0eXBlKTsK
LSAgICAgICAgICAgIG15ICRnZXRGdW5jdGlvbk5hbWUgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1l
KCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKKyAg
ICAgICAgICAgIG15ICRnZXRGdW5jdGlvbk5hbWUgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRp
bnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgbXkgJGltcGxH
ZXR0ZXJGdW5jdGlvbk5hbWUgPSAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkYXR0cmlidXRl
LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEFzIn0gfHwgJG5h
bWUpOwogICAgICAgICAgICAgbXkgJGdldHRlckV4Y2VwdGlvbnNXaXRoTWVzc2FnZSA9ICRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkdldHRlclJhaXNlc0V4Y2Vw
dGlvbldpdGhNZXNzYWdlIn07CiAgICAgICAgICAgICBteSAkZ2V0dGVyRXhjZXB0aW9ucyA9ICRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkdldHRlclJhaXNlc0V4
Y2VwdGlvbiJ9IHx8ICRnZXR0ZXJFeGNlcHRpb25zV2l0aE1lc3NhZ2U7CkBAIC0yNzIwLDcgKzI3
NDQsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgICAgICAgICBteSAkbmFt
ZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZTsKICAgICAgICAgICAgIG15ICR0eXBlID0g
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlOwotICAgICAgICAgICAgbXkgJHB1dEZ1bmN0aW9u
TmFtZSA9IEdldEF0dHJpYnV0ZVNldHRlck5hbWUoJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUs
ICRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOworICAgICAgICAgICAgbXkgJHB1dEZ1bmN0aW9uTmFt
ZSA9IEdldEF0dHJpYnV0ZVNldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJp
YnV0ZSk7CiAgICAgICAgICAgICBteSAkaW1wbFNldHRlckZ1bmN0aW9uTmFtZSA9ICRjb2RlR2Vu
ZXJhdG9yLT5XS191Y2ZpcnN0KCRuYW1lKTsKICAgICAgICAgICAgIG15ICRzZXR0ZXJSYWlzZXNF
eGNlcHRpb25XaXRoTWVzc2FnZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IlNldHRlclJhaXNlc0V4Y2VwdGlvbldpdGhNZXNzYWdlIn07CiAgICAgICAgICAg
ICBteSAkc2V0dGVyUmFpc2VzRXhjZXB0aW9uID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiU2V0dGVyUmFpc2VzRXhjZXB0aW9uIn0gfHwgJHNldHRlclJhaXNl
c0V4Y2VwdGlvbldpdGhNZXNzYWdlOwpAQCAtMjg0MCw3ICsyODY0LDcgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgfTtcbiIpOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICIgLiBHZXROYXRpdmVUeXBlRnJvbVNpZ25hdHVyZSgkYXR0cmlidXRl
LT5zaWduYXR1cmUpIC4gIiBuYXRpdmVWYWx1ZSA9ICIgLiBKU1ZhbHVlVG9OYXRpdmUoJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLCAidmFsdWUiLCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJDb25kaXRpb25hbCJ9KSAuICI7XG4iKTsKKyAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAiIC4gR2V0TmF0aXZlVHlwZUZyb21TaWduYXR1cmUoJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlKSAuICIgbmF0aXZlVmFsdWUgPSAiIC4gSlNWYWx1ZVRvTmF0aXZl
KCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgInZhbHVlIiwgJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uZGl0aW9uYWwifSkgLiAiO1xuIik7
CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpXG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAgICAgcmV0dXJuIGZhbHNlO1xuIik7CiAKQEAgLTMwNDgsMTEgKzMwNzIsMTEg
QEAgRU5ECiAgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgICBteSAk
bnVtUGFyYW1ldGVycyA9IEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfTsKLSAgICAgICAgICAgICAg
ICAgICAgbXkgKCRmdW5jdGlvblN0cmluZywgJGR1bW15KSA9IEdlbmVyYXRlUGFyYW1ldGVyc0No
ZWNrKFxAaW1wbENvbnRlbnQsICRmdW5jdGlvbiwgJGludGVyZmFjZSwgJG51bVBhcmFtZXRlcnMs
ICRpbnRlcmZhY2VOYW1lLCAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUsICRzdmdQcm9wZXJ0
eVR5cGUsICRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSwgJHN2Z0xpc3RQcm9wZXJ0eVR5
cGUpOworICAgICAgICAgICAgICAgICAgICBteSAoJGZ1bmN0aW9uU3RyaW5nLCAkZHVtbXkpID0g
R2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2soXEBpbXBsQ29udGVudCwgJGZ1bmN0aW9uLCAkaW50ZXJm
YWNlLCAkbnVtUGFyYW1ldGVycywgJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lLCAkc3ZnUHJv
cGVydHlUeXBlLCAkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUsICRzdmdMaXN0UHJvcGVy
dHlUeXBlKTsKICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0
aW9uQ2FsbCgkZnVuY3Rpb24sICRmdW5jdGlvblN0cmluZywgIiAgICAiLCAkc3ZnUHJvcGVydHlU
eXBlLCAkaW50ZXJmYWNlTmFtZSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICBHZW5lcmF0ZUZ1bmN0aW9uQ2FzdGVkVGhpcygkaW50ZXJm
YWNlLCAkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKTsKKyAgICAgICAgICAg
ICAgICBHZW5lcmF0ZUZ1bmN0aW9uQ2FzdGVkVGhpcygkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAk
ZnVuY3Rpb24pOwogCiAgICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJDaGVja1NlY3VyaXR5In0gYW5kCiAgICAgICAgICAgICAgICAgICAgICEkZnVu
Y3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRvTm90Q2hlY2tTZWN1cml0
eSJ9KSB7CkBAIC0zMTAyLDcgKzMxMjYsNyBAQCBFTkQKICAgICAgICAgICAgICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgICAgICAgICAgICAgbXkgJG51bVBhcmFtZXRlcnMgPSBAeyRmdW5j
dGlvbi0+cGFyYW1ldGVyc307Ci0gICAgICAgICAgICAgICAgICAgICAgICBteSAoJGZ1bmN0aW9u
U3RyaW5nLCAkZHVtbXkpID0gR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2soXEBpbXBsQ29udGVudCwg
JGZ1bmN0aW9uLCAkaW50ZXJmYWNlLCAkbnVtUGFyYW1ldGVycywgJGludGVyZmFjZU5hbWUsICRm
dW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSwgJHN2Z1Byb3BlcnR5VHlwZSwgJHN2Z1Byb3BlcnR5
T3JMaXN0UHJvcGVydHlUeXBlLCAkc3ZnTGlzdFByb3BlcnR5VHlwZSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBteSAoJGZ1bmN0aW9uU3RyaW5nLCAkZHVtbXkpID0gR2VuZXJhdGVQYXJhbWV0
ZXJzQ2hlY2soXEBpbXBsQ29udGVudCwgJGZ1bmN0aW9uLCAkaW50ZXJmYWNlLCAkbnVtUGFyYW1l
dGVycywgJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lLCAkc3ZnUHJvcGVydHlUeXBlLCAkc3Zn
UHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUsICRzdmdMaXN0UHJvcGVydHlUeXBlKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlSW1wbGVtZW50YXRpb25GdW5jdGlvbkNhbGwoJGZ1
bmN0aW9uLCAkZnVuY3Rpb25TdHJpbmcsICIgICAgIiwgJHN2Z1Byb3BlcnR5VHlwZSwgJGludGVy
ZmFjZU5hbWUpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQpAQCAt
MzExMSwxMSArMzEzNSw4IEBAIEVORAogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9
XG5cbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcblxuIikgaWYg
JGNvbmRpdGlvbmFsOwogCi0gICAgICAgICAgICBpZiAoISRpc0N1c3RvbSAmJiAkaXNPdmVybG9h
ZGVkICYmICRmdW5jdGlvbi0+e292ZXJsb2FkSW5kZXh9ID09IEB7JGZ1bmN0aW9uLT57b3Zlcmxv
YWRzfX0pIHsKLSAgICAgICAgICAgICAgICAjIEdlbmVyYXRlIGEgZnVuY3Rpb24gZGlzcGF0Y2hp
bmcgY2FsbCB0byB0aGUgcmVzdCBvZiB0aGUgb3ZlcmxvYWRzLgotICAgICAgICAgICAgICAgIEdl
bmVyYXRlT3ZlcmxvYWRlZEZ1bmN0aW9uKCRmdW5jdGlvbiwgJGludGVyZmFjZSwgJGludGVyZmFj
ZU5hbWUpOwotICAgICAgICAgICAgfQotCisgICAgICAgICAgICAjIEdlbmVyYXRlIGEgZnVuY3Rp
b24gZGlzcGF0Y2hpbmcgY2FsbCB0byB0aGUgcmVzdCBvZiB0aGUgb3ZlcmxvYWRzLgorICAgICAg
ICAgICAgR2VuZXJhdGVPdmVybG9hZGVkRnVuY3Rpb24oJGZ1bmN0aW9uLCAkaW50ZXJmYWNlKSBp
ZiAhJGlzQ3VzdG9tICYmICRpc092ZXJsb2FkZWQgJiYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRl
eH0gPT0gQHskZnVuY3Rpb24tPntvdmVybG9hZHN9fTsKICAgICAgICAgfQogCiAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAkZW5kQXBwbGVDb3B5cmlnaHQpIGlmICRpbkFwcGxlQ29weXJpZ2h0
OwpAQCAtMzM2MSwxMCArMzM4Miw4IEBAIEVORAogCiBzdWIgR2VuZXJhdGVGdW5jdGlvbkNhc3Rl
ZFRoaXMKIHsKLSAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7Ci0gICAgbXkgJGludGVyZmFjZU5h
bWUgPSBzaGlmdDsKLSAgICBteSAkY2xhc3NOYW1lID0gc2hpZnQ7Ci0gICAgbXkgJGZ1bmN0aW9u
ID0gc2hpZnQ7CisgICAgbXkgKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRmdW5jdGlvbikgPSBA
XzsKKwogICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tUHJv
eHlUb0pTT2JqZWN0In0pIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGNsYXNz
TmFtZSogY2FzdGVkVGhpcyA9IHRvJHtjbGFzc05hbWV9KHN0YXRlLT50aGlzVmFsdWUoKS50b1Ro
aXMoc3RhdGUsIE5vdFN0cmljdE1vZGUpKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKVxuIik7CkBAIC0zMzcyLDYgKzMzOTEs
NyBAQCBzdWIgR2VuZXJhdGVGdW5jdGlvbkNhc3RlZFRoaXMKICAgICB9IGVsc2UgewogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlz
VmFsdWUoKTtcbiIpOwogICAgICAgICBteSAkY2FzdGluZ0hlbHBlciA9IEdldENhc3RpbmdIZWxw
ZXJGb3JUaGlzT2JqZWN0KCRpbnRlcmZhY2UpOworICAgICAgICBteSAkaW50ZXJmYWNlTmFtZSA9
ICRpbnRlcmZhY2UtPm5hbWU7CiAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRXZlbnRU
YXJnZXQiKSB7CiAgICAgICAgICAgICAjIFdlIGFsbG93IGNhbGxpbmcgdGhlIEV2ZW50VGFyZ2V0
IEFQSSB3aXRob3V0IGFuIGV4cGxpY2l0ICd0aGlzJyB2YWx1ZSBhbmQgZmFsbCBiYWNrIHRvIHVz
aW5nIHRoZSBnbG9iYWwgb2JqZWN0IGluc3RlYWQuCiAgICAgICAgICAgICAjIEFzIG9mIGVhcmx5
IDIwMTYsIHRoaXMgbWF0Y2hlcyBGaXJlZm94IGFuZCBDaHJvbWUncyBiZWhhdmlvci4KQEAgLTMz
ODQsNyArMzQwNCw3IEBAIHN1YiBHZW5lcmF0ZUZ1bmN0aW9uQ2FzdGVkVGhpcwogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3Rh
dGUsIFwiJGludGVyZmFjZU5hbWVcIiwgXCIkZG9tRnVuY3Rpb25OYW1lXCIpO1xuIik7CiAgICAg
fQogCi0gICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCAke2NsYXNzTmFtZX06OmluZm8oKSk7XG4iKSB1bmxlc3MgJGludGVyZmFj
ZU5hbWUgZXEgIkV2ZW50VGFyZ2V0IjsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICR7Y2xhc3NOYW1lfTo6aW5mbygpKTtc
biIpIHVubGVzcyAkaW50ZXJmYWNlLT5uYW1lIGVxICJFdmVudFRhcmdldCI7CiB9CiAKIHN1YiBH
ZW5lcmF0ZUNhbGxXaXRoCkBAIC0zNDkzLDIwICszNTEzLDkgQEAgc3ViIFdpbGxDb252ZXJ0VW5k
ZWZpbmVkVG9EZWZhdWx0UGFyYW1ldGVyVmFsdWUKIAogc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0No
ZWNrCiB7Ci0gICAgbXkgJG91dHB1dEFycmF5ID0gc2hpZnQ7Ci0gICAgbXkgJGZ1bmN0aW9uID0g
c2hpZnQ7Ci0gICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OwotICAgIG15ICRudW1QYXJhbWV0ZXJz
ID0gc2hpZnQ7Ci0gICAgbXkgJGludGVyZmFjZU5hbWUgPSBzaGlmdDsKLSAgICBteSAkZnVuY3Rp
b25JbXBsZW1lbnRhdGlvbk5hbWUgPSBzaGlmdDsKLSAgICBteSAkc3ZnUHJvcGVydHlUeXBlID0g
c2hpZnQ7Ci0gICAgbXkgJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlID0gc2hpZnQ7Ci0g
ICAgbXkgJHN2Z0xpc3RQcm9wZXJ0eVR5cGUgPSBzaGlmdDsKLQotICAgIG15ICRhcmdzSW5kZXgg
PSAwOwotICAgIG15ICRoYXNPcHRpb25hbEFyZ3VtZW50cyA9IDA7CisgICAgbXkgKCRvdXRwdXRB
cnJheSwgJGZ1bmN0aW9uLCAkaW50ZXJmYWNlLCAkbnVtUGFyYW1ldGVycywgJGZ1bmN0aW9uSW1w
bGVtZW50YXRpb25OYW1lLCAkc3ZnUHJvcGVydHlUeXBlLCAkc3ZnUHJvcGVydHlPckxpc3RQcm9w
ZXJ0eVR5cGUsICRzdmdMaXN0UHJvcGVydHlUeXBlKSA9IEBfOwogCi0gICAgbXkgJGNsYXNzTmFt
ZSA9ICRpbnRlcmZhY2UtPm5hbWU7CisgICAgbXkgJGludGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNl
LT5uYW1lOwogICAgIG15IEBhcmd1bWVudHM7CiAgICAgbXkgJGZ1bmN0aW9uTmFtZTsKICAgICBt
eSAkaW1wbGVtZW50ZWRCeSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9OwpAQCAtMzUzMyw2ICszNTQyLDggQEAgc3ViIEdlbmVyYXRl
UGFyYW1ldGVyc0NoZWNrCiAKICAgICAkaW1wbEluY2x1ZGVzeyJFeGNlcHRpb25Db2RlLmgifSA9
IDE7CiAgICAgJGltcGxJbmNsdWRlc3siSlNET01CaW5kaW5nLmgifSA9IDE7CisKKyAgICBteSAk
YXJnc0luZGV4ID0gMDsKICAgICBmb3JlYWNoIG15ICRwYXJhbWV0ZXIgKEB7JGZ1bmN0aW9uLT5w
YXJhbWV0ZXJzfSkgewogICAgICAgICBteSAkYXJnVHlwZSA9ICRwYXJhbWV0ZXItPnR5cGU7CiAg
ICAgICAgIG15ICRvcHRpb25hbCA9ICRwYXJhbWV0ZXItPmlzT3B0aW9uYWw7CkBAIC0zNjI1LDcg
KzM2MzYsOSBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7XG4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNpZiAoJGNvZGVHZW5l
cmF0b3ItPklzRW51bVR5cGUoJGFyZ1R5cGUpKSB7Ci0gICAgICAgICAgICBteSAkY2xhc3NOYW1l
ID0gR2V0RW51bWVyYXRpb25DbGFzc05hbWUoJGFyZ1R5cGUpOworICAgICAgICAgICAgbXkgJGNs
YXNzTmFtZSA9IEdldEVudW1lcmF0aW9uQ2xhc3NOYW1lKCRpbnRlcmZhY2UsICRhcmdUeXBlKTsK
KyAgICAgICAgICAgIG15ICRjbGFzc0lkZW50aWZpZXIgPSBHZXRFbnVtZXJhdGlvbkNsYXNzSWRl
bnRpZmllcigkaW50ZXJmYWNlLCAkYXJnVHlwZSk7CisKICAgICAgICAgICAgICRpbXBsSW5jbHVk
ZXN7IjxydW50aW1lL0Vycm9yLmg+In0gPSAxOwogCiAgICAgICAgICAgICBteSAkbmF0aXZlVHlw
ZSA9ICRjbGFzc05hbWU7CkBAIC0zNjUyLDExICszNjY1LDExIEBAIHN1YiBHZW5lcmF0ZVBhcmFt
ZXRlcnNDaGVjawogICAgICAgICAgICAgICAgICRpbmRlbnQgPSAiICAgICI7CiAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiRpbmRlbnQgICAgJGRlZmlu
ZU9wdGlvbmFsVmFsdWUgPSBwYXJzZSRjbGFzc05hbWUoKnN0YXRlLCAke25hbWV9VmFsdWUpO1xu
Iik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIkaW5kZW50ICAgICRkZWZpbmVP
cHRpb25hbFZhbHVlID0gcGFyc2UkY2xhc3NJZGVudGlmaWVyKCpzdGF0ZSwgJHtuYW1lfVZhbHVl
KTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiJGluZGVudCAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSlcbiIpOwogICAgICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiJGluZGVudCAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiJGluZGVu
dCAgICBpZiAoVU5MSUtFTFkoISRvcHRpb25hbFZhbHVlKSlcbiIpOwotICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiJGluZGVudCAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0
QmVFbnVtRXJyb3IoKnN0YXRlLCAkYXJnc0luZGV4LCBcIiRuYW1lXCIsIFwiJGludGVyZmFjZU5h
bWVcIiwgJHF1b3RlZEZ1bmN0aW9uTmFtZSwgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlcyRjbGFz
c05hbWUpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIkaW5kZW50ICAg
ICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJvcigqc3RhdGUsICRhcmdzSW5k
ZXgsIFwiJG5hbWVcIiwgXCIkaW50ZXJmYWNlTmFtZVwiLCAkcXVvdGVkRnVuY3Rpb25OYW1lLCBl
eHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzJGNsYXNzSWRlbnRpZmllcik7XG4iKTsKICAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiRpbmRlbnQgICAgJG5hbWUgPSBvcHRpb25hbFZhbHVl
LnZhbHVlKCk7XG4iKSBpZiAkb3B0aW9uYWxWYWx1ZSBuZSAkbmFtZTsKIAogICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1cbiIpIGlmICRpbmRlbnQgbmUgIiI7CkBAIC0zNzE5
LDcgKzM3MzIsNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgICAg
ICAgICAgJG91dGVyID0gIiI7CiAgICAgICAgICAgICAgICAgICAgICRpbm5lciA9ICJzdGF0ZS0+
YXJndW1lbnQoJGFyZ3NJbmRleCkiOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgJG5hdGl2ZVR5cGUgJG5hbWUgPSAkb3V0ZXIiIC4g
SlNWYWx1ZVRvTmF0aXZlKCRwYXJhbWV0ZXIsICRpbm5lciwgJGZ1bmN0aW9uLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25kaXRpb25hbCJ9KSAuICI7XG4iKTsKKyAgICAgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgJG5hdGl2ZVR5cGUgJG5hbWUgPSAkb3V0
ZXIiIC4gSlNWYWx1ZVRvTmF0aXZlKCRpbnRlcmZhY2UsICRwYXJhbWV0ZXIsICRpbm5lciwgJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25kaXRpb25hbCJ9KSAu
ICI7XG4iKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgIyBDaGVjayBpZiB0aGUgdHlw
ZSBjb252ZXJzaW9uIHN1Y2NlZWRlZC4KQEAgLTM4NjIsNyArMzg3NSw3IEBAIHN1YiBHZW5lcmF0
ZUNhbGxiYWNrSW1wbGVtZW50YXRpb24KICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxudXNpbmcg
bmFtZXNwYWNlIEpTQztcblxuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJuYW1lc3BhY2Ug
V2ViQ29yZSB7XG5cbiIpOwogCi0gICAgcHVzaChAaW1wbENvbnRlbnQsIEdldEVudW1lcmF0aW9u
SW1wbGVtZW50YXRpb25Db250ZW50KCRlbnVtZXJhdGlvbnMpKTsKKyAgICBwdXNoKEBpbXBsQ29u
dGVudCwgR2VuZXJhdGVFbnVtZXJhdGlvbkltcGxlbWVudGF0aW9uQ29udGVudCgkaW50ZXJmYWNl
LCAkZW51bWVyYXRpb25zKSk7CiAKICAgICAjIENvbnN0cnVjdG9yCiAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIke2NsYXNzTmFtZX06OiR7Y2xhc3NOYW1lfShKU09iamVjdCogY2FsbGJhY2ssIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG4iKTsKQEAgLTM5MzksNyArMzk1Miw3IEBA
IHN1YiBHZW5lcmF0ZUNhbGxiYWNrSW1wbGVtZW50YXRpb24KIAogICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb21waWxlVGltZUNoZWNrRm9yRW51bXNJ
Zk5lZWRlZCgkaW50ZXJmYWNlKSk7CiAKLSAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5p
dGlvbnMoXEBpbXBsQ29udGVudCwgJGNsYXNzTmFtZSwgIiIsICRpbnRlcmZhY2VOYW1lLCAkdmlz
aWJsZUludGVyZmFjZU5hbWUsICRpbnRlcmZhY2UpOworICAgICAgIEdlbmVyYXRlQ29uc3RydWN0
b3JEZWZpbml0aW9ucyhcQGltcGxDb250ZW50LCAkY2xhc3NOYW1lLCAiIiwgJHZpc2libGVJbnRl
cmZhY2VOYW1lLCAkaW50ZXJmYWNlKTsKIAogICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNW
YWx1ZSAke2NsYXNzTmFtZX06OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdClcbntcbiIpOwogICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3Rvcjwke2NsYXNzTmFtZX1Db25zdHJ1Y3Rvcj4odm0s
ICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTtcbiIpOwpA
QCAtNDMxNyw5ICs0MzMwLDcgQEAgbXkgJWludGVnZXJDb252ZXJzaW9uRnVuY3Rpb24gPSAoCiAK
IHN1YiBKU1ZhbHVlVG9OYXRpdmUKIHsKLSAgICBteSAkc2lnbmF0dXJlID0gc2hpZnQ7Ci0gICAg
bXkgJHZhbHVlID0gc2hpZnQ7Ci0gICAgbXkgJGNvbmRpdGlvbmFsID0gc2hpZnQ7CisgICAgbXkg
KCRpbnRlcmZhY2UsICRzaWduYXR1cmUsICR2YWx1ZSwgJGNvbmRpdGlvbmFsKSA9IEBfOwogCiAg
ICAgbXkgJHR5cGUgPSAkc2lnbmF0dXJlLT50eXBlOwogCkBAIC00MzY4LDcgKzQzNzksNyBAQCBz
dWIgSlNWYWx1ZVRvTmF0aXZlCiAgICAgcmV0dXJuICJ2YWx1ZVRvRGF0ZShzdGF0ZSwgJHZhbHVl
KSIgaWYgJHR5cGUgZXEgIkRhdGUiOwogCiAgICAgcmV0dXJuICJ0byR0eXBlKCR2YWx1ZSkiIGlm
ICRjb2RlR2VuZXJhdG9yLT5Jc1R5cGVkQXJyYXlUeXBlKCR0eXBlKTsKLSAgICByZXR1cm4gInBh
cnNlIiAuIEdldEVudW1lcmF0aW9uQ2xhc3NOYW1lKCR0eXBlKSAuICIoKnN0YXRlLCAkdmFsdWUp
IiBpZiAkY29kZUdlbmVyYXRvci0+SXNFbnVtVHlwZSgkdHlwZSk7CisgICAgcmV0dXJuICJwYXJz
ZSIgLiBHZXRFbnVtZXJhdGlvbkNsYXNzSWRlbnRpZmllcigkaW50ZXJmYWNlLCAkdHlwZSkgLiAi
KCpzdGF0ZSwgJHZhbHVlKSIgaWYgJGNvZGVHZW5lcmF0b3ItPklzRW51bVR5cGUoJHR5cGUpOwog
CiAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTJHR5cGUuaCIsICRjb25kaXRpb25hbCk7CiAKQEAg
LTQ3NDcsMTAgKzQ3NTgsNyBAQCBzdWIgV3JpdGVEYXRhCiAKIHN1YiBHZW5lcmF0ZVByb3RvdHlw
ZURlY2xhcmF0aW9uCiB7Ci0gICAgbXkgJG91dHB1dEFycmF5ID0gc2hpZnQ7Ci0gICAgbXkgJGNs
YXNzTmFtZSA9IHNoaWZ0OwotICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKLSAgICBteSAkaW50
ZXJmYWNlTmFtZSA9IHNoaWZ0OworICAgIG15ICgkb3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRp
bnRlcmZhY2UpID0gQF87CiAKICAgICBteSAkcHJvdG90eXBlQ2xhc3NOYW1lID0gIiR7Y2xhc3NO
YW1lfVByb3RvdHlwZSI7CiAKQEAgLTQ4MjYsMTEgKzQ4MzQsOSBAQCBzdWIgR2V0Q29uc3RydWN0
b3JUZW1wbGF0ZUNsYXNzTmFtZQogCiBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9u
CiB7Ci0gICAgbXkgJG91dHB1dEFycmF5ID0gc2hpZnQ7Ci0gICAgbXkgJGNsYXNzTmFtZSA9IHNo
aWZ0OwotICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKLSAgICBteSAkaW50ZXJmYWNlTmFtZSA9
IHNoaWZ0OworICAgIG15ICgkb3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRpbnRlcmZhY2UpID0g
QF87CiAKKyAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRpbnRlcmZhY2UtPm5hbWU7CiAgICAgbXkg
JGNvbnN0cnVjdG9yQ2xhc3NOYW1lID0gIiR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yIjsKICAgICBt
eSAkdGVtcGxhdGVDbGFzc05hbWUgPSBHZXRDb25zdHJ1Y3RvclRlbXBsYXRlQ2xhc3NOYW1lKCRp
bnRlcmZhY2UpOwogCkBAIC00ODQzLDI5ICs0ODQ5LDIzIEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVj
dG9yRGVjbGFyYXRpb24KIAogc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9ucwogewot
ICAgIG15ICRvdXRwdXRBcnJheSA9IHNoaWZ0OwotICAgIG15ICRjbGFzc05hbWUgPSBzaGlmdDsK
LSAgICBteSAkcHJvdG9DbGFzc05hbWUgPSBzaGlmdDsKLSAgICBteSAkaW50ZXJmYWNlTmFtZSA9
IHNoaWZ0OwotICAgIG15ICR2aXNpYmxlSW50ZXJmYWNlTmFtZSA9IHNoaWZ0OwotICAgIG15ICRp
bnRlcmZhY2UgPSBzaGlmdDsKLSAgICBteSAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IgPSBz
aGlmdDsKKyAgICBteSAoJG91dHB1dEFycmF5LCAkY2xhc3NOYW1lLCAkcHJvdG9DbGFzc05hbWUs
ICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZSwgJGdlbmVyYXRpbmdOYW1lZENvbnN0
cnVjdG9yKSA9IEBfOwogCiAgICAgaWYgKElzQ29uc3RydWN0YWJsZSgkaW50ZXJmYWNlKSkgewog
ICAgICAgICBteSBAY29uc3RydWN0b3JzID0gQHskaW50ZXJmYWNlLT5jb25zdHJ1Y3RvcnN9Owog
ICAgICAgICBpZiAoQGNvbnN0cnVjdG9ycyA+IDEpIHsKICAgICAgICAgICAgIGZvcmVhY2ggbXkg
JGNvbnN0cnVjdG9yIChAY29uc3RydWN0b3JzKSB7Ci0gICAgICAgICAgICAgICAgR2VuZXJhdGVD
b25zdHJ1Y3RvckRlZmluaXRpb24oJG91dHB1dEFycmF5LCAkY2xhc3NOYW1lLCAkcHJvdG9DbGFz
c05hbWUsICRpbnRlcmZhY2VOYW1lLCAkdmlzaWJsZUludGVyZmFjZU5hbWUsICRpbnRlcmZhY2Us
ICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciwgJGNvbnN0cnVjdG9yKTsKKyAgICAgICAgICAg
ICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbigkb3V0cHV0QXJyYXksICRjbGFzc05h
bWUsICRwcm90b0NsYXNzTmFtZSwgJHZpc2libGVJbnRlcmZhY2VOYW1lLCAkaW50ZXJmYWNlLCAk
Z2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IsICRjb25zdHJ1Y3Rvcik7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBHZW5lcmF0ZU92ZXJsb2FkZWRDb25zdHJ1Y3RvckRlZmluaXRpb24oJG91
dHB1dEFycmF5LCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlKTsKICAgICAgICAgfSBlbHNpZiAoQGNv
bnN0cnVjdG9ycyA9PSAxKSB7Ci0gICAgICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5p
dGlvbigkb3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJGludGVyZmFj
ZU5hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZSwgJGdlbmVyYXRpbmdOYW1l
ZENvbnN0cnVjdG9yLCAkY29uc3RydWN0b3JzWzBdKTsKKyAgICAgICAgICAgIEdlbmVyYXRlQ29u
c3RydWN0b3JEZWZpbml0aW9uKCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NO
YW1lLCAkdmlzaWJsZUludGVyZmFjZU5hbWUsICRpbnRlcmZhY2UsICRnZW5lcmF0aW5nTmFtZWRD
b25zdHJ1Y3RvciwgJGNvbnN0cnVjdG9yc1swXSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbigkb3V0cHV0QXJyYXksICRjbGFzc05h
bWUsICRwcm90b0NsYXNzTmFtZSwgJGludGVyZmFjZU5hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFt
ZSwgJGludGVyZmFjZSwgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yKTsKKyAgICAgICAgICAg
IEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwg
JHByb3RvQ2xhc3NOYW1lLCAkdmlzaWJsZUludGVyZmFjZU5hbWUsICRpbnRlcmZhY2UsICRnZW5l
cmF0aW5nTmFtZWRDb25zdHJ1Y3Rvcik7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBHZW5lcmF0
ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcygkb3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRwcm90
b0NsYXNzTmFtZSwgJGludGVyZmFjZU5hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGludGVy
ZmFjZSwgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yKTsKKyAgICBHZW5lcmF0ZUNvbnN0cnVj
dG9ySGVscGVyTWV0aG9kcygkb3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFt
ZSwgJHZpc2libGVJbnRlcmZhY2VOYW1lLCAkaW50ZXJmYWNlLCAkZ2VuZXJhdGluZ05hbWVkQ29u
c3RydWN0b3IpOwogfQogCiBzdWIgR2VuZXJhdGVPdmVybG9hZGVkQ29uc3RydWN0b3JEZWZpbml0
aW9uCkBAIC00OTE1LDE5ICs0OTE1LDExIEBAIEVORAogCiBzdWIgR2VuZXJhdGVDb25zdHJ1Y3Rv
ckRlZmluaXRpb24KIHsKLSAgICBteSAkb3V0cHV0QXJyYXkgPSBzaGlmdDsKLSAgICBteSAkY2xh
c3NOYW1lID0gc2hpZnQ7Ci0gICAgbXkgJHByb3RvQ2xhc3NOYW1lID0gc2hpZnQ7Ci0gICAgbXkg
JGludGVyZmFjZU5hbWUgPSBzaGlmdDsKLSAgICBteSAkdmlzaWJsZUludGVyZmFjZU5hbWUgPSBz
aGlmdDsKLSAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7Ci0gICAgbXkgJGdlbmVyYXRpbmdOYW1l
ZENvbnN0cnVjdG9yID0gc2hpZnQ7Ci0gICAgbXkgJGZ1bmN0aW9uID0gc2hpZnQ7CisgICAgbXkg
KCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1lLCAkdmlzaWJsZUludGVy
ZmFjZU5hbWUsICRpbnRlcmZhY2UsICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciwgJGZ1bmN0
aW9uKSA9IEBfOwogCi0gICAgaWYgKElzSlNCdWlsdGluQ29uc3RydWN0b3IoJGludGVyZmFjZSkp
IHsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICByZXR1cm4gaWYgSXNKU0J1aWx0aW5Db25z
dHJ1Y3RvcigkaW50ZXJmYWNlKTsKIAorICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGludGVyZmFj
ZS0+bmFtZTsKICAgICBteSAkY29uc3RydWN0b3JDbGFzc05hbWUgPSAkZ2VuZXJhdGluZ05hbWVk
Q29uc3RydWN0b3IgPyAiJHtjbGFzc05hbWV9TmFtZWRDb25zdHJ1Y3RvciIgOiAiJHtjbGFzc05h
bWV9Q29uc3RydWN0b3IiOwogCiAgICAgaWYgKElzQ29uc3RydWN0YWJsZSgkaW50ZXJmYWNlKSkg
ewpAQCAtNTA0MCw3ICs1MDMyLDcgQEAgRU5ECiAgICAgICAgICAgICAjIEZJWE1FOiBGb3Igbm93
LCB3ZSBkbyBub3Qgc3VwcG9ydCBTVkcgY29uc3RydWN0b3JzLgogICAgICAgICAgICAgIyBGSVhN
RTogQ3VycmVudGx5IFtDb25zdHJ1Y3RvciguLi4pXSBkb2VzIG5vdCB5ZXQgc3VwcG9ydCBvcHRp
b25hbCBhcmd1bWVudHMgd2l0aG91dCBbRGVmYXVsdD0uLi5dCiAgICAgICAgICAgICBteSAkbnVt
UGFyYW1ldGVycyA9IEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfTsKLSAgICAgICAgICAgIG15ICgk
ZHVtbXksICRwYXJhbUluZGV4KSA9IEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrKCRvdXRwdXRBcnJh
eSwgJGZ1bmN0aW9uLCAkaW50ZXJmYWNlLCAkbnVtUGFyYW1ldGVycywgJGludGVyZmFjZU5hbWUs
ICJjb25zdHJ1Y3RvckNhbGxiYWNrIiwgdW5kZWYsIHVuZGVmLCB1bmRlZik7CisgICAgICAgICAg
ICBteSAoJGR1bW15LCAkcGFyYW1JbmRleCkgPSBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjaygkb3V0
cHV0QXJyYXksICRmdW5jdGlvbiwgJGludGVyZmFjZSwgJG51bVBhcmFtZXRlcnMsICJjb25zdHJ1
Y3RvckNhbGxiYWNrIiwgdW5kZWYsIHVuZGVmLCB1bmRlZik7CiAKICAgICAgICAgICAgIGlmICgk
Y29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygkaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3JDYWxsV2l0aCJ9LCAiU2NyaXB0U3RhdGUiKSkg
ewogICAgICAgICAgICAgICAgIHB1c2goQGNvbnN0cnVjdG9yQXJnTGlzdCwgIipzdGF0ZSIpOwpA
QCAtNTEyNiwxMyArNTExOCw3IEBAIHN1YiBDb25zdHJ1Y3Rvckhhc1Byb3BlcnRpZXMKIAogc3Vi
IEdlbmVyYXRlQ29uc3RydWN0b3JIZWxwZXJNZXRob2RzCiB7Ci0gICAgbXkgJG91dHB1dEFycmF5
ID0gc2hpZnQ7Ci0gICAgbXkgJGNsYXNzTmFtZSA9IHNoaWZ0OwotICAgIG15ICRwcm90b0NsYXNz
TmFtZSA9IHNoaWZ0OwotICAgIG15ICRpbnRlcmZhY2VOYW1lID0gc2hpZnQ7Ci0gICAgbXkgJHZp
c2libGVJbnRlcmZhY2VOYW1lID0gc2hpZnQ7Ci0gICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0Owot
ICAgIG15ICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciA9IHNoaWZ0OworICAgIG15ICgkb3V0
cHV0QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJHZpc2libGVJbnRlcmZhY2VO
YW1lLCAkaW50ZXJmYWNlLCAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IpID0gQF87CiAKICAg
ICBteSAkY29uc3RydWN0b3JDbGFzc05hbWUgPSAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3Ig
PyAiJHtjbGFzc05hbWV9TmFtZWRDb25zdHJ1Y3RvciIgOiAiJHtjbGFzc05hbWV9Q29uc3RydWN0
b3IiOwogICAgIG15ICRsZWFzdENvbnN0cnVjdG9yTGVuZ3RoID0gMDsKQEAgLTUxODMsMTQgKzUx
NjksOCBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMKICAgICB9CiAKICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcoJnZtLCBTdHJpbmcoQVNDSUlMaXRlcmFsKFwiJHZp
c2libGVJbnRlcmZhY2VOYW1lXCIpKSksIFJlYWRPbmx5IHwgRG9udEVudW0pO1xuIik7Ci0KLSAg
ICBpZiAoZGVmaW5lZCAkbGVhc3RDb25zdHJ1Y3Rvckxlbmd0aCkgewotICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgs
IGpzTnVtYmVyKCR7bGVhc3RDb25zdHJ1Y3Rvckxlbmd0aH0pLCBSZWFkT25seSB8IERvbnRFbnVt
KTtcbiIpOwotICAgIH0KLQotICAgIGlmIChDb25zdHJ1Y3Rvckhhc1Byb3BlcnRpZXMoJGludGVy
ZmFjZSkpIHsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJlaWZ5U3RhdGljUHJv
cGVydGllcyh2bSwgJHtjbGFzc05hbWV9Q29uc3RydWN0b3JUYWJsZVZhbHVlcywgKnRoaXMpO1xu
Iik7Ci0gICAgfQorICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoJHtsZWFzdENvbnN0cnVjdG9yTGVuZ3Ro
fSksIFJlYWRPbmx5IHwgRG9udEVudW0pO1xuIikgaWYgZGVmaW5lZCAkbGVhc3RDb25zdHJ1Y3Rv
ckxlbmd0aDsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmVpZnlTdGF0aWNQcm9wZXJ0
aWVzKHZtLCAke2NsYXNzTmFtZX1Db25zdHJ1Y3RvclRhYmxlVmFsdWVzLCAqdGhpcyk7XG4iKSBp
ZiBDb25zdHJ1Y3Rvckhhc1Byb3BlcnRpZXMoJGludGVyZmFjZSk7CiAKICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICJ9XG5cbiIpOwogCkBAIC01MjEyLDcgKzUxOTIsNyBAQCBzdWIgR2VuZXJhdGVD
b25zdHJ1Y3RvckhlbHBlck1ldGhvZHMKICAgICBpZiAoSXNKU0J1aWx0aW5Db25zdHJ1Y3Rvcigk
aW50ZXJmYWNlKSkgewogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ0ZW1wbGF0ZTw+IEZ1
bmN0aW9uRXhlY3V0YWJsZSogJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OmluaXRpYWxpemVFeGVj
dXRhYmxlKFZNJiB2bSlcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsK
LSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiAiIC4gR2V0SlNCdWlsdGlu
RnVuY3Rpb25OYW1lRnJvbVN0cmluZygkaW50ZXJmYWNlTmFtZSwgImluaXRpYWxpemUiIC4gJGlu
dGVyZmFjZU5hbWUpIC4gIih2bSk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgIHJldHVybiAiIC4gR2V0SlNCdWlsdGluRnVuY3Rpb25OYW1lRnJvbVN0cmluZygkaW50ZXJm
YWNlLT5uYW1lLCAiaW5pdGlhbGl6ZSIgLiAkaW50ZXJmYWNlLT5uYW1lKSAuICIodm0pO1xuIik7
CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn1cbiIpOwogICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICJcbiIpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggY2NkMTNiYTZiODVmOGZhZmE0
YTM0YzUzYjgyYTk5NTFjZjhlNjQ2Zi4uYjhlMTM1MGJjMTY2MzAyYjhjZDcxNWMwNWFlMDllN2Vh
YjAyMjEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTg3LDExICs4NywxMSBAQCB1c2luZyBuYW1lc3BhY2Ug
SlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUpTU3RyaW5nKiBqc1N0cmluZ1dpdGhDYWNo
ZShFeGVjU3RhdGUqLCBUZXN0RW51bVR5cGUpOwotT3B0aW9uYWw8VGVzdEVudW1UeXBlPiBwYXJz
ZVRlc3RFbnVtVHlwZShFeGVjU3RhdGUmLCBKU1ZhbHVlKTsKLWV4dGVybiBjb25zdCBjaGFyIGV4
cGVjdGVkRW51bWVyYXRpb25WYWx1ZXNUZXN0RW51bVR5cGVbXTsKK0pTU3RyaW5nKiBqc1N0cmlu
Z1dpdGhDYWNoZShFeGVjU3RhdGUqLCBUZXN0T2JqOjpFbnVtVHlwZSk7CitPcHRpb25hbDxUZXN0
T2JqOjpFbnVtVHlwZT4gcGFyc2VUZXN0T2JqRW51bVR5cGUoRXhlY1N0YXRlJiwgSlNWYWx1ZSk7
CitleHRlcm4gY29uc3QgY2hhciBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzVGVzdE9iakVudW1U
eXBlW107CiAKLUpTU3RyaW5nKiBqc1N0cmluZ1dpdGhDYWNoZShFeGVjU3RhdGUqIHN0YXRlLCBU
ZXN0RW51bVR5cGUgZW51bWVyYXRpb25WYWx1ZSkKK0pTU3RyaW5nKiBqc1N0cmluZ1dpdGhDYWNo
ZShFeGVjU3RhdGUqIHN0YXRlLCBUZXN0T2JqOjpFbnVtVHlwZSBlbnVtZXJhdGlvblZhbHVlKQog
ewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IHZhbHVlc1tdID0gewog
ICAgICAgICBlbXB0eVN0cmluZygpLApAQCAtOTksMzkgKzk5LDM5IEBAIEpTU3RyaW5nKiBqc1N0
cmluZ1dpdGhDYWNoZShFeGVjU3RhdGUqIHN0YXRlLCBUZXN0RW51bVR5cGUgZW51bWVyYXRpb25W
YWx1ZSkKICAgICAgICAgQVNDSUlMaXRlcmFsKCJFbnVtVmFsdWUyIiksCiAgICAgICAgIEFTQ0lJ
TGl0ZXJhbCgiRW51bVZhbHVlMyIpLAogICAgIH07Ci0gICAgc3RhdGljX2Fzc2VydChzdGF0aWNf
Y2FzdDxzaXplX3Q+KFRlc3RFbnVtVHlwZTo6RW1wdHlTdHJpbmcpID09IDAsICJUZXN0RW51bVR5
cGU6OkVtcHR5U3RyaW5nIGlzIG5vdCAwIGFzIGV4cGVjdGVkIik7Ci0gICAgc3RhdGljX2Fzc2Vy
dChzdGF0aWNfY2FzdDxzaXplX3Q+KFRlc3RFbnVtVHlwZTo6RW51bVZhbHVlMSkgPT0gMSwgIlRl
c3RFbnVtVHlwZTo6RW51bVZhbHVlMSBpcyBub3QgMSBhcyBleHBlY3RlZCIpOwotICAgIHN0YXRp
Y19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihUZXN0RW51bVR5cGU6OkVudW1WYWx1ZTIpID09
IDIsICJUZXN0RW51bVR5cGU6OkVudW1WYWx1ZTIgaXMgbm90IDIgYXMgZXhwZWN0ZWQiKTsKLSAg
ICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oVGVzdEVudW1UeXBlOjpFbnVtVmFs
dWUzKSA9PSAzLCAiVGVzdEVudW1UeXBlOjpFbnVtVmFsdWUzIGlzIG5vdCAzIGFzIGV4cGVjdGVk
Iik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFRlc3RPYmo6OkVudW1U
eXBlOjpFbXB0eVN0cmluZykgPT0gMCwgIlRlc3RPYmo6OkVudW1UeXBlOjpFbXB0eVN0cmluZyBp
cyBub3QgMCBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6
ZV90PihUZXN0T2JqOjpFbnVtVHlwZTo6RW51bVZhbHVlMSkgPT0gMSwgIlRlc3RPYmo6OkVudW1U
eXBlOjpFbnVtVmFsdWUxIGlzIG5vdCAxIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2Vy
dChzdGF0aWNfY2FzdDxzaXplX3Q+KFRlc3RPYmo6OkVudW1UeXBlOjpFbnVtVmFsdWUyKSA9PSAy
LCAiVGVzdE9iajo6RW51bVR5cGU6OkVudW1WYWx1ZTIgaXMgbm90IDIgYXMgZXhwZWN0ZWQiKTsK
KyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oVGVzdE9iajo6RW51bVR5cGU6
OkVudW1WYWx1ZTMpID09IDMsICJUZXN0T2JqOjpFbnVtVHlwZTo6RW51bVZhbHVlMyBpcyBub3Qg
MyBhcyBleHBlY3RlZCIpOwogICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0
aW9uVmFsdWUpIDwgV1RGX0FSUkFZX0xFTkdUSCh2YWx1ZXMpKTsKICAgICByZXR1cm4ganNTdHJp
bmdXaXRoQ2FjaGUoc3RhdGUsIHZhbHVlc1tzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9u
VmFsdWUpXSk7CiB9CiAKLXRlbXBsYXRlPD4gc3RydWN0IEpTVmFsdWVUcmFpdHM8VGVzdEVudW1U
eXBlPiB7Ci0gICAgc3RhdGljIEpTU3RyaW5nKiBhcnJheUpTVmFsdWUoRXhlY1N0YXRlKiBzdGF0
ZSwgSlNET01HbG9iYWxPYmplY3QqLCBUZXN0RW51bVR5cGUgdmFsdWUpIHsgcmV0dXJuIGpzU3Ry
aW5nV2l0aENhY2hlKHN0YXRlLCB2YWx1ZSk7IH0KK3RlbXBsYXRlPD4gc3RydWN0IEpTVmFsdWVU
cmFpdHM8VGVzdE9iajo6RW51bVR5cGU+IHsKKyAgICBzdGF0aWMgSlNTdHJpbmcqIGFycmF5SlNW
YWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCosIFRlc3RPYmo6OkVudW1U
eXBlIHZhbHVlKSB7IHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgdmFsdWUpOyB9CiB9
OwogCi1PcHRpb25hbDxUZXN0RW51bVR5cGU+IHBhcnNlVGVzdEVudW1UeXBlKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVmFsdWUgdmFsdWUpCitPcHRpb25hbDxUZXN0T2JqOjpFbnVtVHlwZT4gcGFyc2VU
ZXN0T2JqRW51bVR5cGUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBh
dXRvIHN0cmluZ1ZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoJnN0YXRlKTsKICAgICBpZiAoc3Ry
aW5nVmFsdWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gVGVzdEVudW1UeXBlOjpFbXB0eVN0
cmluZzsKKyAgICAgICAgcmV0dXJuIFRlc3RPYmo6OkVudW1UeXBlOjpFbXB0eVN0cmluZzsKICAg
ICBpZiAoc3RyaW5nVmFsdWUgPT0gIkVudW1WYWx1ZTEiKQotICAgICAgICByZXR1cm4gVGVzdEVu
dW1UeXBlOjpFbnVtVmFsdWUxOworICAgICAgICByZXR1cm4gVGVzdE9iajo6RW51bVR5cGU6OkVu
dW1WYWx1ZTE7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJFbnVtVmFsdWUyIikKLSAgICAgICAg
cmV0dXJuIFRlc3RFbnVtVHlwZTo6RW51bVZhbHVlMjsKKyAgICAgICAgcmV0dXJuIFRlc3RPYmo6
OkVudW1UeXBlOjpFbnVtVmFsdWUyOwogICAgIGlmIChzdHJpbmdWYWx1ZSA9PSAiRW51bVZhbHVl
MyIpCi0gICAgICAgIHJldHVybiBUZXN0RW51bVR5cGU6OkVudW1WYWx1ZTM7CisgICAgICAgIHJl
dHVybiBUZXN0T2JqOjpFbnVtVHlwZTo6RW51bVZhbHVlMzsKICAgICByZXR1cm4gTnVsbG9wdDsK
IH0KIAotY29uc3QgY2hhciBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzVGVzdEVudW1UeXBlW10g
PSAiXCJcIiwgXCJFbnVtVmFsdWUxXCIsIFwiRW51bVZhbHVlMlwiLCBcIkVudW1WYWx1ZTNcIiI7
Citjb25zdCBjaGFyIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXNUZXN0T2JqRW51bVR5cGVbXSA9
ICJcIlwiLCBcIkVudW1WYWx1ZTFcIiwgXCJFbnVtVmFsdWUyXCIsIFwiRW51bVZhbHVlM1wiIjsK
IAotSlNTdHJpbmcqIGpzU3RyaW5nV2l0aENhY2hlKEV4ZWNTdGF0ZSosIE9wdGlvbmFsKTsKLU9w
dGlvbmFsPE9wdGlvbmFsPiBwYXJzZU9wdGlvbmFsKEV4ZWNTdGF0ZSYsIEpTVmFsdWUpOwotZXh0
ZXJuIGNvbnN0IGNoYXIgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlc09wdGlvbmFsW107CitKU1N0
cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiwgVGVzdE9iajo6T3B0aW9uYWwpOwor
T3B0aW9uYWw8VGVzdE9iajo6T3B0aW9uYWw+IHBhcnNlVGVzdE9iak9wdGlvbmFsKEV4ZWNTdGF0
ZSYsIEpTVmFsdWUpOworZXh0ZXJuIGNvbnN0IGNoYXIgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVl
c1Rlc3RPYmpPcHRpb25hbFtdOwogCi1KU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0
YXRlKiBzdGF0ZSwgT3B0aW9uYWwgZW51bWVyYXRpb25WYWx1ZSkKK0pTU3RyaW5nKiBqc1N0cmlu
Z1dpdGhDYWNoZShFeGVjU3RhdGUqIHN0YXRlLCBUZXN0T2JqOjpPcHRpb25hbCBlbnVtZXJhdGlv
blZhbHVlKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IHZhbHVl
c1tdID0gewogICAgICAgICBlbXB0eVN0cmluZygpLApAQCAtMTM5LDEzMCArMTM5LDIyNiBAQCBK
U1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiBzdGF0ZSwgT3B0aW9uYWwgZW51
bWVyYXRpb25WYWx1ZSkKICAgICAgICAgQVNDSUlMaXRlcmFsKCJPcHRpb25hbFZhbHVlMiIpLAog
ICAgICAgICBBU0NJSUxpdGVyYWwoIk9wdGlvbmFsVmFsdWUzIiksCiAgICAgfTsKLSAgICBzdGF0
aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oT3B0aW9uYWw6OkVtcHR5U3RyaW5nKSA9PSAw
LCAiT3B0aW9uYWw6OkVtcHR5U3RyaW5nIGlzIG5vdCAwIGFzIGV4cGVjdGVkIik7Ci0gICAgc3Rh
dGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KE9wdGlvbmFsOjpPcHRpb25hbFZhbHVlMSkg
PT0gMSwgIk9wdGlvbmFsOjpPcHRpb25hbFZhbHVlMSBpcyBub3QgMSBhcyBleHBlY3RlZCIpOwot
ICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihPcHRpb25hbDo6T3B0aW9uYWxW
YWx1ZTIpID09IDIsICJPcHRpb25hbDo6T3B0aW9uYWxWYWx1ZTIgaXMgbm90IDIgYXMgZXhwZWN0
ZWQiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oT3B0aW9uYWw6Ok9w
dGlvbmFsVmFsdWUzKSA9PSAzLCAiT3B0aW9uYWw6Ok9wdGlvbmFsVmFsdWUzIGlzIG5vdCAzIGFz
IGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFRlc3RP
Ymo6Ok9wdGlvbmFsOjpFbXB0eVN0cmluZykgPT0gMCwgIlRlc3RPYmo6Ok9wdGlvbmFsOjpFbXB0
eVN0cmluZyBpcyBub3QgMCBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGlj
X2Nhc3Q8c2l6ZV90PihUZXN0T2JqOjpPcHRpb25hbDo6T3B0aW9uYWxWYWx1ZTEpID09IDEsICJU
ZXN0T2JqOjpPcHRpb25hbDo6T3B0aW9uYWxWYWx1ZTEgaXMgbm90IDEgYXMgZXhwZWN0ZWQiKTsK
KyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oVGVzdE9iajo6T3B0aW9uYWw6
Ok9wdGlvbmFsVmFsdWUyKSA9PSAyLCAiVGVzdE9iajo6T3B0aW9uYWw6Ok9wdGlvbmFsVmFsdWUy
IGlzIG5vdCAyIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxz
aXplX3Q+KFRlc3RPYmo6Ok9wdGlvbmFsOjpPcHRpb25hbFZhbHVlMykgPT0gMywgIlRlc3RPYmo6
Ok9wdGlvbmFsOjpPcHRpb25hbFZhbHVlMyBpcyBub3QgMyBhcyBleHBlY3RlZCIpOwogICAgIEFT
U0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpIDwgV1RGX0FSUkFZX0xF
TkdUSCh2YWx1ZXMpKTsKICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIHZhbHVl
c1tzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpXSk7CiB9CiAKLXRlbXBsYXRl
PD4gc3RydWN0IEpTVmFsdWVUcmFpdHM8T3B0aW9uYWw+IHsKLSAgICBzdGF0aWMgSlNTdHJpbmcq
IGFycmF5SlNWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCosIE9wdGlv
bmFsIHZhbHVlKSB7IHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgdmFsdWUpOyB9Cit0
ZW1wbGF0ZTw+IHN0cnVjdCBKU1ZhbHVlVHJhaXRzPFRlc3RPYmo6Ok9wdGlvbmFsPiB7CisgICAg
c3RhdGljIEpTU3RyaW5nKiBhcnJheUpTVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9i
YWxPYmplY3QqLCBUZXN0T2JqOjpPcHRpb25hbCB2YWx1ZSkgeyByZXR1cm4ganNTdHJpbmdXaXRo
Q2FjaGUoc3RhdGUsIHZhbHVlKTsgfQogfTsKIAotT3B0aW9uYWw8T3B0aW9uYWw+IHBhcnNlT3B0
aW9uYWwoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKK09wdGlvbmFsPFRlc3RPYmo6
Ok9wdGlvbmFsPiBwYXJzZVRlc3RPYmpPcHRpb25hbChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVl
IHZhbHVlKQogewogICAgIGF1dG8gc3RyaW5nVmFsdWUgPSB2YWx1ZS50b1dURlN0cmluZygmc3Rh
dGUpOwogICAgIGlmIChzdHJpbmdWYWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBPcHRp
b25hbDo6RW1wdHlTdHJpbmc7CisgICAgICAgIHJldHVybiBUZXN0T2JqOjpPcHRpb25hbDo6RW1w
dHlTdHJpbmc7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJPcHRpb25hbFZhbHVlMSIpCi0gICAg
ICAgIHJldHVybiBPcHRpb25hbDo6T3B0aW9uYWxWYWx1ZTE7CisgICAgICAgIHJldHVybiBUZXN0
T2JqOjpPcHRpb25hbDo6T3B0aW9uYWxWYWx1ZTE7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJP
cHRpb25hbFZhbHVlMiIpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDo6T3B0aW9uYWxWYWx1ZTI7
CisgICAgICAgIHJldHVybiBUZXN0T2JqOjpPcHRpb25hbDo6T3B0aW9uYWxWYWx1ZTI7CiAgICAg
aWYgKHN0cmluZ1ZhbHVlID09ICJPcHRpb25hbFZhbHVlMyIpCi0gICAgICAgIHJldHVybiBPcHRp
b25hbDo6T3B0aW9uYWxWYWx1ZTM7CisgICAgICAgIHJldHVybiBUZXN0T2JqOjpPcHRpb25hbDo6
T3B0aW9uYWxWYWx1ZTM7CiAgICAgcmV0dXJuIE51bGxvcHQ7CiB9CiAKLWNvbnN0IGNoYXIgZXhw
ZWN0ZWRFbnVtZXJhdGlvblZhbHVlc09wdGlvbmFsW10gPSAiXCJcIiwgXCJPcHRpb25hbFZhbHVl
MVwiLCBcIk9wdGlvbmFsVmFsdWUyXCIsIFwiT3B0aW9uYWxWYWx1ZTNcIiI7Citjb25zdCBjaGFy
IGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXNUZXN0T2JqT3B0aW9uYWxbXSA9ICJcIlwiLCBcIk9w
dGlvbmFsVmFsdWUxXCIsIFwiT3B0aW9uYWxWYWx1ZTJcIiwgXCJPcHRpb25hbFZhbHVlM1wiIjsK
IAogI2lmIEVOQUJMRShDb25kaXRpb24xKQogCi1KU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUo
RXhlY1N0YXRlKiwgVGVzdEVudW1BKTsKLU9wdGlvbmFsPFRlc3RFbnVtQT4gcGFyc2VUZXN0RW51
bUEoRXhlY1N0YXRlJiwgSlNWYWx1ZSk7Ci1leHRlcm4gY29uc3QgY2hhciBleHBlY3RlZEVudW1l
cmF0aW9uVmFsdWVzVGVzdEVudW1BW107CitKU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhl
Y1N0YXRlKiwgVGVzdE9iajo6RW51bUEpOworT3B0aW9uYWw8VGVzdE9iajo6RW51bUE+IHBhcnNl
VGVzdE9iakVudW1BKEV4ZWNTdGF0ZSYsIEpTVmFsdWUpOworZXh0ZXJuIGNvbnN0IGNoYXIgZXhw
ZWN0ZWRFbnVtZXJhdGlvblZhbHVlc1Rlc3RPYmpFbnVtQVtdOwogCi1KU1N0cmluZyoganNTdHJp
bmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiBzdGF0ZSwgVGVzdEVudW1BIGVudW1lcmF0aW9uVmFsdWUp
CitKU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiBzdGF0ZSwgVGVzdE9iajo6
RW51bUEgZW51bWVyYXRpb25WYWx1ZSkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgU3RyaW5nPiB2YWx1ZXNbXSA9IHsKICAgICAgICAgQVNDSUlMaXRlcmFsKCJBIiksCiAgICAg
fTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oVGVzdEVudW1BOjpBKSA9
PSAwLCAiVGVzdEVudW1BOjpBIGlzIG5vdCAwIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fz
c2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFRlc3RPYmo6OkVudW1BOjpBKSA9PSAwLCAiVGVzdE9i
ajo6RW51bUE6OkEgaXMgbm90IDAgYXMgZXhwZWN0ZWQiKTsKICAgICBBU1NFUlQoc3RhdGljX2Nh
c3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKSA8IFdURl9BUlJBWV9MRU5HVEgodmFsdWVzKSk7
CiAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCB2YWx1ZXNbc3RhdGljX2Nhc3Q8
c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKV0pOwogfQogCi10ZW1wbGF0ZTw+IHN0cnVjdCBKU1Zh
bHVlVHJhaXRzPFRlc3RFbnVtQT4gewotICAgIHN0YXRpYyBKU1N0cmluZyogYXJyYXlKU1ZhbHVl
KEV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdEVudW1BIHZhbHVlKSB7
IHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgdmFsdWUpOyB9Cit0ZW1wbGF0ZTw+IHN0
cnVjdCBKU1ZhbHVlVHJhaXRzPFRlc3RPYmo6OkVudW1BPiB7CisgICAgc3RhdGljIEpTU3RyaW5n
KiBhcnJheUpTVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqLCBUZXN0
T2JqOjpFbnVtQSB2YWx1ZSkgeyByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIHZhbHVl
KTsgfQogfTsKIAotT3B0aW9uYWw8VGVzdEVudW1BPiBwYXJzZVRlc3RFbnVtQShFeGVjU3RhdGUm
IHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQorT3B0aW9uYWw8VGVzdE9iajo6RW51bUE+IHBhcnNlVGVz
dE9iakVudW1BKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0byBz
dHJpbmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAgaWYgKHN0cmluZ1Zh
bHVlID09ICJBIikKLSAgICAgICAgcmV0dXJuIFRlc3RFbnVtQTo6QTsKKyAgICAgICAgcmV0dXJu
IFRlc3RPYmo6OkVudW1BOjpBOwogICAgIHJldHVybiBOdWxsb3B0OwogfQogCi1jb25zdCBjaGFy
IGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXNUZXN0RW51bUFbXSA9ICJcIkFcIiI7Citjb25zdCBj
aGFyIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXNUZXN0T2JqRW51bUFbXSA9ICJcIkFcIiI7CiAK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpICYmIEVOQUJMRShDb25kaXRpb24yKQog
Ci1KU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiwgVGVzdEVudW1CKTsKLU9w
dGlvbmFsPFRlc3RFbnVtQj4gcGFyc2VUZXN0RW51bUIoRXhlY1N0YXRlJiwgSlNWYWx1ZSk7Ci1l
eHRlcm4gY29uc3QgY2hhciBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzVGVzdEVudW1CW107CitK
U1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiwgVGVzdE9iajo6RW51bUIpOwor
T3B0aW9uYWw8VGVzdE9iajo6RW51bUI+IHBhcnNlVGVzdE9iakVudW1CKEV4ZWNTdGF0ZSYsIEpT
VmFsdWUpOworZXh0ZXJuIGNvbnN0IGNoYXIgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlc1Rlc3RP
YmpFbnVtQltdOwogCi1KU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiBzdGF0
ZSwgVGVzdEVudW1CIGVudW1lcmF0aW9uVmFsdWUpCitKU1N0cmluZyoganNTdHJpbmdXaXRoQ2Fj
aGUoRXhlY1N0YXRlKiBzdGF0ZSwgVGVzdE9iajo6RW51bUIgZW51bWVyYXRpb25WYWx1ZSkKIHsK
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiB2YWx1ZXNbXSA9IHsKICAg
ICAgICAgQVNDSUlMaXRlcmFsKCJCIiksCiAgICAgfTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0YXRp
Y19jYXN0PHNpemVfdD4oVGVzdEVudW1COjpCKSA9PSAwLCAiVGVzdEVudW1COjpCIGlzIG5vdCAw
IGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFRl
c3RPYmo6OkVudW1COjpCKSA9PSAwLCAiVGVzdE9iajo6RW51bUI6OkIgaXMgbm90IDAgYXMgZXhw
ZWN0ZWQiKTsKICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVl
KSA8IFdURl9BUlJBWV9MRU5HVEgodmFsdWVzKSk7CiAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENh
Y2hlKHN0YXRlLCB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKV0p
OwogfQogCi10ZW1wbGF0ZTw+IHN0cnVjdCBKU1ZhbHVlVHJhaXRzPFRlc3RFbnVtQj4gewotICAg
IHN0YXRpYyBKU1N0cmluZyogYXJyYXlKU1ZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xv
YmFsT2JqZWN0KiwgVGVzdEVudW1CIHZhbHVlKSB7IHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShz
dGF0ZSwgdmFsdWUpOyB9Cit0ZW1wbGF0ZTw+IHN0cnVjdCBKU1ZhbHVlVHJhaXRzPFRlc3RPYmo6
OkVudW1CPiB7CisgICAgc3RhdGljIEpTU3RyaW5nKiBhcnJheUpTVmFsdWUoRXhlY1N0YXRlKiBz
dGF0ZSwgSlNET01HbG9iYWxPYmplY3QqLCBUZXN0T2JqOjpFbnVtQiB2YWx1ZSkgeyByZXR1cm4g
anNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIHZhbHVlKTsgfQogfTsKIAotT3B0aW9uYWw8VGVzdEVu
dW1CPiBwYXJzZVRlc3RFbnVtQihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQorT3B0
aW9uYWw8VGVzdE9iajo6RW51bUI+IHBhcnNlVGVzdE9iakVudW1CKEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0byBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3Ry
aW5nKCZzdGF0ZSk7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJCIikKLSAgICAgICAgcmV0dXJu
IFRlc3RFbnVtQjo6QjsKKyAgICAgICAgcmV0dXJuIFRlc3RPYmo6OkVudW1COjpCOwogICAgIHJl
dHVybiBOdWxsb3B0OwogfQogCi1jb25zdCBjaGFyIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXNU
ZXN0RW51bUJbXSA9ICJcIkJcIiI7Citjb25zdCBjaGFyIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1
ZXNUZXN0T2JqRW51bUJbXSA9ICJcIkJcIiI7CiAKICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRp
dGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQogCi1KU1N0cmluZyoganNTdHJpbmdXaXRoQ2Fj
aGUoRXhlY1N0YXRlKiwgVGVzdEVudW1DKTsKLU9wdGlvbmFsPFRlc3RFbnVtQz4gcGFyc2VUZXN0
RW51bUMoRXhlY1N0YXRlJiwgSlNWYWx1ZSk7Ci1leHRlcm4gY29uc3QgY2hhciBleHBlY3RlZEVu
dW1lcmF0aW9uVmFsdWVzVGVzdEVudW1DW107CitKU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUo
RXhlY1N0YXRlKiwgVGVzdE9iajo6RW51bUMpOworT3B0aW9uYWw8VGVzdE9iajo6RW51bUM+IHBh
cnNlVGVzdE9iakVudW1DKEV4ZWNTdGF0ZSYsIEpTVmFsdWUpOworZXh0ZXJuIGNvbnN0IGNoYXIg
ZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlc1Rlc3RPYmpFbnVtQ1tdOwogCi1KU1N0cmluZyoganNT
dHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiBzdGF0ZSwgVGVzdEVudW1DIGVudW1lcmF0aW9uVmFs
dWUpCitKU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiBzdGF0ZSwgVGVzdE9i
ajo6RW51bUMgZW51bWVyYXRpb25WYWx1ZSkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgU3RyaW5nPiB2YWx1ZXNbXSA9IHsKICAgICAgICAgQVNDSUlMaXRlcmFsKCJDIiksCiAg
ICAgfTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oVGVzdEVudW1DOjpD
KSA9PSAwLCAiVGVzdEVudW1DOjpDIGlzIG5vdCAwIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGlj
X2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFRlc3RPYmo6OkVudW1DOjpDKSA9PSAwLCAiVGVz
dE9iajo6RW51bUM6OkMgaXMgbm90IDAgYXMgZXhwZWN0ZWQiKTsKICAgICBBU1NFUlQoc3RhdGlj
X2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKSA8IFdURl9BUlJBWV9MRU5HVEgodmFsdWVz
KSk7CiAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCB2YWx1ZXNbc3RhdGljX2Nh
c3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKV0pOwogfQogCi10ZW1wbGF0ZTw+IHN0cnVjdCBK
U1ZhbHVlVHJhaXRzPFRlc3RFbnVtQz4gewotICAgIHN0YXRpYyBKU1N0cmluZyogYXJyYXlKU1Zh
bHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdEVudW1DIHZhbHVl
KSB7IHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgdmFsdWUpOyB9Cit0ZW1wbGF0ZTw+
IHN0cnVjdCBKU1ZhbHVlVHJhaXRzPFRlc3RPYmo6OkVudW1DPiB7CisgICAgc3RhdGljIEpTU3Ry
aW5nKiBhcnJheUpTVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqLCBU
ZXN0T2JqOjpFbnVtQyB2YWx1ZSkgeyByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIHZh
bHVlKTsgfQogfTsKIAotT3B0aW9uYWw8VGVzdEVudW1DPiBwYXJzZVRlc3RFbnVtQyhFeGVjU3Rh
dGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQorT3B0aW9uYWw8VGVzdE9iajo6RW51bUM+IHBhcnNl
VGVzdE9iakVudW1DKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0
byBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAgaWYgKHN0cmlu
Z1ZhbHVlID09ICJDIikKLSAgICAgICAgcmV0dXJuIFRlc3RFbnVtQzo6QzsKKyAgICAgICAgcmV0
dXJuIFRlc3RPYmo6OkVudW1DOjpDOwogICAgIHJldHVybiBOdWxsb3B0OwogfQogCi1jb25zdCBj
aGFyIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXNUZXN0RW51bUNbXSA9ICJcIkNcIiI7Citjb25z
dCBjaGFyIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXNUZXN0T2JqRW51bUNbXSA9ICJcIkNcIiI7
CiAKICNlbmRpZgogCitKU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiwgVGVz
dE9iajo6S2luZCk7CitPcHRpb25hbDxUZXN0T2JqOjpLaW5kPiBwYXJzZVRlc3RPYmpLaW5kKEV4
ZWNTdGF0ZSYsIEpTVmFsdWUpOworZXh0ZXJuIGNvbnN0IGNoYXIgZXhwZWN0ZWRFbnVtZXJhdGlv
blZhbHVlc1Rlc3RPYmpLaW5kW107CisKK0pTU3RyaW5nKiBqc1N0cmluZ1dpdGhDYWNoZShFeGVj
U3RhdGUqIHN0YXRlLCBUZXN0T2JqOjpLaW5kIGVudW1lcmF0aW9uVmFsdWUpCit7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gdmFsdWVzW10gPSB7CisgICAgICAgIEFT
Q0lJTGl0ZXJhbCgicXVpY2siKSwKKyAgICAgICAgQVNDSUlMaXRlcmFsKCJkZWFkIiksCisgICAg
fTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oVGVzdE9iajo6S2luZDo6
UXVpY2spID09IDAsICJUZXN0T2JqOjpLaW5kOjpRdWljayBpcyBub3QgMCBhcyBleHBlY3RlZCIp
OworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihUZXN0T2JqOjpLaW5kOjpE
ZWFkKSA9PSAxLCAiVGVzdE9iajo6S2luZDo6RGVhZCBpcyBub3QgMSBhcyBleHBlY3RlZCIpOwor
ICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpIDwgV1RGX0FS
UkFZX0xFTkdUSCh2YWx1ZXMpKTsKKyAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUs
IHZhbHVlc1tzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpXSk7Cit9CisKK3Rl
bXBsYXRlPD4gc3RydWN0IEpTVmFsdWVUcmFpdHM8VGVzdE9iajo6S2luZD4geworICAgIHN0YXRp
YyBKU1N0cmluZyogYXJyYXlKU1ZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiwgVGVzdE9iajo6S2luZCB2YWx1ZSkgeyByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoc3Rh
dGUsIHZhbHVlKTsgfQorfTsKKworT3B0aW9uYWw8VGVzdE9iajo6S2luZD4gcGFyc2VUZXN0T2Jq
S2luZChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGF1dG8gc3RyaW5n
VmFsdWUgPSB2YWx1ZS50b1dURlN0cmluZygmc3RhdGUpOworICAgIGlmIChzdHJpbmdWYWx1ZSA9
PSAicXVpY2siKQorICAgICAgICByZXR1cm4gVGVzdE9iajo6S2luZDo6UXVpY2s7CisgICAgaWYg
KHN0cmluZ1ZhbHVlID09ICJkZWFkIikKKyAgICAgICAgcmV0dXJuIFRlc3RPYmo6OktpbmQ6OkRl
YWQ7CisgICAgcmV0dXJuIE51bGxvcHQ7Cit9CisKK2NvbnN0IGNoYXIgZXhwZWN0ZWRFbnVtZXJh
dGlvblZhbHVlc1Rlc3RPYmpLaW5kW10gPSAiXCJxdWlja1wiLCBcImRlYWRcIiI7CisKK0pTU3Ry
aW5nKiBqc1N0cmluZ1dpdGhDYWNoZShFeGVjU3RhdGUqLCBUZXN0T2JqOjpTaXplKTsKK09wdGlv
bmFsPFRlc3RPYmo6OlNpemU+IHBhcnNlVGVzdE9ialNpemUoRXhlY1N0YXRlJiwgSlNWYWx1ZSk7
CitleHRlcm4gY29uc3QgY2hhciBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzVGVzdE9ialNpemVb
XTsKKworSlNTdHJpbmcqIGpzU3RyaW5nV2l0aENhY2hlKEV4ZWNTdGF0ZSogc3RhdGUsIFRlc3RP
Ymo6OlNpemUgZW51bWVyYXRpb25WYWx1ZSkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
Y29uc3QgU3RyaW5nPiB2YWx1ZXNbXSA9IHsKKyAgICAgICAgQVNDSUlMaXRlcmFsKCJzbWFsbCIp
LAorICAgICAgICBBU0NJSUxpdGVyYWwoIm11Y2gtbXVjaC1sYXJnZXIiKSwKKyAgICB9OworICAg
IHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihUZXN0T2JqOjpTaXplOjpTbWFsbCkg
PT0gMCwgIlRlc3RPYmo6OlNpemU6OlNtYWxsIGlzIG5vdCAwIGFzIGV4cGVjdGVkIik7CisgICAg
c3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFRlc3RPYmo6OlNpemU6Ok11Y2hNdWNo
TGFyZ2VyKSA9PSAxLCAiVGVzdE9iajo6U2l6ZTo6TXVjaE11Y2hMYXJnZXIgaXMgbm90IDEgYXMg
ZXhwZWN0ZWQiKTsKKyAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZh
bHVlKSA8IFdURl9BUlJBWV9MRU5HVEgodmFsdWVzKSk7CisgICAgcmV0dXJuIGpzU3RyaW5nV2l0
aENhY2hlKHN0YXRlLCB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVl
KV0pOworfQorCit0ZW1wbGF0ZTw+IHN0cnVjdCBKU1ZhbHVlVHJhaXRzPFRlc3RPYmo6OlNpemU+
IHsKKyAgICBzdGF0aWMgSlNTdHJpbmcqIGFycmF5SlNWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBK
U0RPTUdsb2JhbE9iamVjdCosIFRlc3RPYmo6OlNpemUgdmFsdWUpIHsgcmV0dXJuIGpzU3RyaW5n
V2l0aENhY2hlKHN0YXRlLCB2YWx1ZSk7IH0KK307CisKK09wdGlvbmFsPFRlc3RPYmo6OlNpemU+
IHBhcnNlVGVzdE9ialNpemUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAg
ICBhdXRvIHN0cmluZ1ZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoJnN0YXRlKTsKKyAgICBpZiAo
c3RyaW5nVmFsdWUgPT0gInNtYWxsIikKKyAgICAgICAgcmV0dXJuIFRlc3RPYmo6OlNpemU6OlNt
YWxsOworICAgIGlmIChzdHJpbmdWYWx1ZSA9PSAibXVjaC1tdWNoLWxhcmdlciIpCisgICAgICAg
IHJldHVybiBUZXN0T2JqOjpTaXplOjpNdWNoTXVjaExhcmdlcjsKKyAgICByZXR1cm4gTnVsbG9w
dDsKK30KKworY29uc3QgY2hhciBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzVGVzdE9ialNpemVb
XSA9ICJcInNtYWxsXCIsIFwibXVjaC1tdWNoLWxhcmdlclwiIjsKKworSlNTdHJpbmcqIGpzU3Ry
aW5nV2l0aENhY2hlKEV4ZWNTdGF0ZSosIFRlc3RPYmo6OkNvbmZpZGVuY2UpOworT3B0aW9uYWw8
VGVzdE9iajo6Q29uZmlkZW5jZT4gcGFyc2VUZXN0T2JqQ29uZmlkZW5jZShFeGVjU3RhdGUmLCBK
U1ZhbHVlKTsKK2V4dGVybiBjb25zdCBjaGFyIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXNUZXN0
T2JqQ29uZmlkZW5jZVtdOworCitKU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRl
KiBzdGF0ZSwgVGVzdE9iajo6Q29uZmlkZW5jZSBlbnVtZXJhdGlvblZhbHVlKQoreworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IHZhbHVlc1tdID0geworICAgICAgICBB
U0NJSUxpdGVyYWwoImhpZ2giKSwKKyAgICAgICAgQVNDSUlMaXRlcmFsKCJraW5kYS1sb3ciKSwK
KyAgICB9OworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihUZXN0T2JqOjpD
b25maWRlbmNlOjpIaWdoKSA9PSAwLCAiVGVzdE9iajo6Q29uZmlkZW5jZTo6SGlnaCBpcyBub3Qg
MCBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihU
ZXN0T2JqOjpDb25maWRlbmNlOjpLaW5kYUxvdykgPT0gMSwgIlRlc3RPYmo6OkNvbmZpZGVuY2U6
OktpbmRhTG93IGlzIG5vdCAxIGFzIGV4cGVjdGVkIik7CisgICAgQVNTRVJUKHN0YXRpY19jYXN0
PHNpemVfdD4oZW51bWVyYXRpb25WYWx1ZSkgPCBXVEZfQVJSQVlfTEVOR1RIKHZhbHVlcykpOwor
ICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgdmFsdWVzW3N0YXRpY19jYXN0PHNp
emVfdD4oZW51bWVyYXRpb25WYWx1ZSldKTsKK30KKwordGVtcGxhdGU8PiBzdHJ1Y3QgSlNWYWx1
ZVRyYWl0czxUZXN0T2JqOjpDb25maWRlbmNlPiB7CisgICAgc3RhdGljIEpTU3RyaW5nKiBhcnJh
eUpTVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqLCBUZXN0T2JqOjpD
b25maWRlbmNlIHZhbHVlKSB7IHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgdmFsdWUp
OyB9Cit9OworCitPcHRpb25hbDxUZXN0T2JqOjpDb25maWRlbmNlPiBwYXJzZVRlc3RPYmpDb25m
aWRlbmNlKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgYXV0byBzdHJp
bmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CisgICAgaWYgKHN0cmluZ1ZhbHVl
ID09ICJoaWdoIikKKyAgICAgICAgcmV0dXJuIFRlc3RPYmo6OkNvbmZpZGVuY2U6OkhpZ2g7Cisg
ICAgaWYgKHN0cmluZ1ZhbHVlID09ICJraW5kYS1sb3ciKQorICAgICAgICByZXR1cm4gVGVzdE9i
ajo6Q29uZmlkZW5jZTo6S2luZGFMb3c7CisgICAgcmV0dXJuIE51bGxvcHQ7Cit9CisKK2NvbnN0
IGNoYXIgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlc1Rlc3RPYmpDb25maWRlbmNlW10gPSAiXCJo
aWdoXCIsIFwia2luZGEtbG93XCIiOworCiAvLyBGdW5jdGlvbnMKIAogI2lmIEVOQUJMRShURVNU
X0ZFQVRVUkUpCkBAIC0yMzk4LDcgKzI0OTQsNyBAQCBib29sIHNldEpTVGVzdE9iakVudW1BdHRy
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVgog
ICAgICAgICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJl
bnVtQXR0ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgp
OwotICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBwYXJzZVRlc3RFbnVtVHlwZSgqc3RhdGUsIHZhbHVl
KTsKKyAgICBhdXRvIG5hdGl2ZVZhbHVlID0gcGFyc2VUZXN0T2JqRW51bVR5cGUoKnN0YXRlLCB2
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkKQEAgLTM1MzAs
NyArMzYyNiw3IEBAIGJvb2wgc2V0SlNUZXN0T2JqQXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5
cGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUKICAgICAgICAgcmV0dXJuIHRocm93
U2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYXR0cmlidXRlV2l0aFJlc2VydmVk
RW51bVR5cGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQo
KTsKLSAgICBhdXRvIG5hdGl2ZVZhbHVlID0gcGFyc2VPcHRpb25hbCgqc3RhdGUsIHZhbHVlKTsK
KyAgICBhdXRvIG5hdGl2ZVZhbHVlID0gcGFyc2VUZXN0T2JqT3B0aW9uYWwoKnN0YXRlLCB2YWx1
ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkKQEAgLTM5NDQsMTIg
KzQwNDAsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhFbnVtQXJnKEV4ZWNTdGEKICAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0
YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gZW51
bUFyZ1ZhbHVlID0gc3RhdGUtPmFyZ3VtZW50KDApOwotICAgIFRlc3RFbnVtVHlwZSBlbnVtQXJn
OwotICAgIGF1dG8gb3B0aW9uYWxWYWx1ZSA9IHBhcnNlVGVzdEVudW1UeXBlKCpzdGF0ZSwgZW51
bUFyZ1ZhbHVlKTsKKyAgICBUZXN0T2JqOjpFbnVtVHlwZSBlbnVtQXJnOworICAgIGF1dG8gb3B0
aW9uYWxWYWx1ZSA9IHBhcnNlVGVzdE9iakVudW1UeXBlKCpzdGF0ZSwgZW51bUFyZ1ZhbHVlKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpZiAoVU5MSUtFTFkoIW9wdGlv
bmFsVmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJvcigq
c3RhdGUsIDAsICJlbnVtQXJnIiwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aEVudW1BcmciLCBleHBl
Y3RlZEVudW1lcmF0aW9uVmFsdWVzVGVzdEVudW1UeXBlKTsKKyAgICAgICAgcmV0dXJuIHRocm93
QXJndW1lbnRNdXN0QmVFbnVtRXJyb3IoKnN0YXRlLCAwLCAiZW51bUFyZyIsICJUZXN0T2JqIiwg
Im1ldGhvZFdpdGhFbnVtQXJnIiwgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlc1Rlc3RPYmpFbnVt
VHlwZSk7CiAgICAgZW51bUFyZyA9IG9wdGlvbmFsVmFsdWUudmFsdWUoKTsKICAgICBpbXBsLm1l
dGhvZFdpdGhFbnVtQXJnKGVudW1BcmcpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CkBAIC0zOTY0LDE1ICs0MDYwLDE1IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxFbnVt
QXJnCiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6
OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBh
dXRvIGVudW1BcmdWYWx1ZSA9IHN0YXRlLT5hcmd1bWVudCgwKTsKLSAgICBUZXN0RW51bVR5cGUg
ZW51bUFyZzsKKyAgICBUZXN0T2JqOjpFbnVtVHlwZSBlbnVtQXJnOwogICAgIGlmIChlbnVtQXJn
VmFsdWUuaXNVbmRlZmluZWQoKSkgewotICAgICAgICBlbnVtQXJnID0gVGVzdEVudW1UeXBlOjpF
bnVtVmFsdWUxOworICAgICAgICBlbnVtQXJnID0gVGVzdE9iajo6RW51bVR5cGU6OkVudW1WYWx1
ZTE7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgYXV0byBvcHRpb25hbFZhbHVlID0gcGFyc2VUZXN0
RW51bVR5cGUoKnN0YXRlLCBlbnVtQXJnVmFsdWUpOworICAgICAgICBhdXRvIG9wdGlvbmFsVmFs
dWUgPSBwYXJzZVRlc3RPYmpFbnVtVHlwZSgqc3RhdGUsIGVudW1BcmdWYWx1ZSk7CiAgICAgICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCFv
cHRpb25hbFZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRW51
bUVycm9yKCpzdGF0ZSwgMCwgImVudW1BcmciLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoT3B0aW9u
YWxFbnVtQXJnQW5kRGVmYXVsdFZhbHVlIiwgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlc1Rlc3RF
bnVtVHlwZSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJv
cigqc3RhdGUsIDAsICJlbnVtQXJnIiwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE9wdGlvbmFsRW51
bUFyZ0FuZERlZmF1bHRWYWx1ZSIsIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXNUZXN0T2JqRW51
bVR5cGUpOwogICAgICAgICBlbnVtQXJnID0gb3B0aW9uYWxWYWx1ZS52YWx1ZSgpOwogICAgIH0K
ICAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdBbmREZWZhdWx0VmFsdWUoZW51bUFy
Zyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dE9iai5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5p
ZGwKaW5kZXggZmUxM2NlNzllN2QwZjUzZGMyOWQ0NDcwZmUzNTU2ZjU3MDU2YTNhMC4uNzc0M2Vl
ZDM1ZjQ1ZTE3YTcwYjBhOTAwNDRiYWQ1YmExMjc2OTA4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbApAQCAtMzksNiArMzksMTAgQEAg
ZW51bSBfb3B0aW9uYWwgeyAiIiwgIk9wdGlvbmFsVmFsdWUxIiwgIk9wdGlvbmFsVmFsdWUyIiwg
Ik9wdGlvbmFsVmFsdWUzIiB9OwogW0NvbmRpdGlvbmFsPUNvbmRpdGlvbjEmQ29uZGl0aW9uMl0g
ZW51bSBUZXN0RW51bUIgeyAiQiIgfTsKIFtDb25kaXRpb25hbD1Db25kaXRpb24xfENvbmRpdGlv
bjJdIGVudW0gVGVzdEVudW1DIHsgIkMiIH07CiAKK2VudW0gVGVzdE9iaktpbmQgeyAicXVpY2si
LCAiZGVhZCIgfTsKK2VudW0gT2JqU2l6ZSB7ICJzbWFsbCIsICJtdWNoLW11Y2gtbGFyZ2VyIiB9
OworZW51bSBUZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwgImtpbmRhLWxvdyIgfTsKKwogWwogICAg
IENvbnN0cnVjdG9yKFRlc3RDYWxsYmFjayB0ZXN0Q2FsbGJhY2ssIFRlc3RDYWxsYmFja0Z1bmN0
aW9uIHRlc3RDYWxsYmFja0Z1bmN0aW9uKSwKICAgICBJbnRlcmZhY2VOYW1lPVRlc3RPYmplY3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXkuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleS5jcHAKaW5kZXggZGY2N2MyOTJmNDU2MTQxYmE5YzAw
MWE2YTYyZTA5M2U3ZDAwNDEyOS4uZDgyN2Y3Y2NlMjQ4MDJlYjFjNTlmYWRiZGNjZDFhYmFlOGVj
NzU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DcnlwdG9LZXk6OkNyeXB0b0tleShDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyIGFsZ29yaXRobSwgQ3J5cHRvS2V5VHlwZSB0eXBlLCBib29sIGV4dHJh
Y3RhYmxlLCBDcnlwdG9LZXlVc2FnZSB1c2FnZXMpCitDcnlwdG9LZXk6OkNyeXB0b0tleShDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobSwgVHlwZSB0eXBlLCBib29sIGV4dHJhY3Rh
YmxlLCBDcnlwdG9LZXlVc2FnZSB1c2FnZXMpCiAgICAgOiBtX2FsZ29yaXRobShhbGdvcml0aG0p
CiAgICAgLCBtX3R5cGUodHlwZSkKICAgICAsIG1fZXh0cmFjdGFibGUoZXh0cmFjdGFibGUpCkBA
IC01MywyNiArNTMsMjYgQEAgdm9pZCBDcnlwdG9LZXk6OmJ1aWxkQWxnb3JpdGhtRGVzY3JpcHRp
b24oQ3J5cHRvQWxnb3JpdGhtRGVzY3JpcHRpb25CdWlsZGVyJiBidWkKICAgICAvLyBTdWJjbGFz
c2VzIHdpbGwgYWRkIG90aGVyIGtleXMuCiB9CiAKLVZlY3RvcjxLZXlVc2FnZT4gQ3J5cHRvS2V5
Ojp1c2FnZXMoKSBjb25zdAorYXV0byBDcnlwdG9LZXk6OnVzYWdlcygpIGNvbnN0IC0+IFZlY3Rv
cjxVc2FnZT4KIHsKICAgICAvLyBUaGUgcmVzdWx0IGlzIG9yZGVyZWQgYWxwaGFiZXRpY2FsbHku
Ci0gICAgVmVjdG9yPEtleVVzYWdlPiByZXN1bHQ7CisgICAgVmVjdG9yPFVzYWdlPiByZXN1bHQ7
CiAgICAgaWYgKG1fdXNhZ2VzICYgQ3J5cHRvS2V5VXNhZ2VEZWNyeXB0KQotICAgICAgICByZXN1
bHQuYXBwZW5kKEtleVVzYWdlOjpEZWNyeXB0KTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChVc2Fn
ZTo6RGVjcnlwdCk7CiAgICAgaWYgKG1fdXNhZ2VzICYgQ3J5cHRvS2V5VXNhZ2VEZXJpdmVCaXRz
KQotICAgICAgICByZXN1bHQuYXBwZW5kKEtleVVzYWdlOjpEZXJpdmVCaXRzKTsKKyAgICAgICAg
cmVzdWx0LmFwcGVuZChVc2FnZTo6RGVyaXZlQml0cyk7CiAgICAgaWYgKG1fdXNhZ2VzICYgQ3J5
cHRvS2V5VXNhZ2VEZXJpdmVLZXkpCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoS2V5VXNhZ2U6OkRl
cml2ZUtleSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoVXNhZ2U6OkRlcml2ZUtleSk7CiAgICAg
aWYgKG1fdXNhZ2VzICYgQ3J5cHRvS2V5VXNhZ2VFbmNyeXB0KQotICAgICAgICByZXN1bHQuYXBw
ZW5kKEtleVVzYWdlOjpFbmNyeXB0KTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChVc2FnZTo6RW5j
cnlwdCk7CiAgICAgaWYgKG1fdXNhZ2VzICYgQ3J5cHRvS2V5VXNhZ2VTaWduKQotICAgICAgICBy
ZXN1bHQuYXBwZW5kKEtleVVzYWdlOjpTaWduKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChVc2Fn
ZTo6U2lnbik7CiAgICAgaWYgKG1fdXNhZ2VzICYgQ3J5cHRvS2V5VXNhZ2VVbndyYXBLZXkpCi0g
ICAgICAgIHJlc3VsdC5hcHBlbmQoS2V5VXNhZ2U6OlVud3JhcEtleSk7CisgICAgICAgIHJlc3Vs
dC5hcHBlbmQoVXNhZ2U6OlVud3JhcEtleSk7CiAgICAgaWYgKG1fdXNhZ2VzICYgQ3J5cHRvS2V5
VXNhZ2VWZXJpZnkpCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoS2V5VXNhZ2U6OlZlcmlmeSk7Cisg
ICAgICAgIHJlc3VsdC5hcHBlbmQoVXNhZ2U6OlZlcmlmeSk7CiAgICAgaWYgKG1fdXNhZ2VzICYg
Q3J5cHRvS2V5VXNhZ2VXcmFwS2V5KQotICAgICAgICByZXN1bHQuYXBwZW5kKEtleVVzYWdlOjpX
cmFwS2V5KTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChVc2FnZTo6V3JhcEtleSk7CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIApAQCAtODQsNiArODQsNyBAQCBWZWN0b3I8dWludDhfdD4gQ3J5cHRv
S2V5OjpyYW5kb21EYXRhKHNpemVfdCBzaXplKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAjZW5k
aWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNVQlRMRV9D
UllQVE8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5LmggYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5LmgKaW5kZXggMDdmYjdkOWQ0NjdmYzhjYTZk
ODg5Njk1N2VlNDRjNjQyMmNlZmNlYS4uZWI2YjcwMTZkNzUxYTk3MjFhMDlhYjVhMGQzMzMyOGIy
ZGYxZGRkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXkuaApAQCAtNDcsMjEgKzQ3LDIzIEBA
IGVudW0gY2xhc3MgQ3J5cHRvS2V5Q2xhc3MgewogICAgIFJTQQogfTsKIAotZW51bSBjbGFzcyBL
ZXlVc2FnZSB7IEVuY3J5cHQsIERlY3J5cHQsIFNpZ24sIFZlcmlmeSwgRGVyaXZlS2V5LCBEZXJp
dmVCaXRzLCBXcmFwS2V5LCBVbndyYXBLZXkgfTsKLQotdXNpbmcgS2V5VHlwZSA9IENyeXB0b0tl
eVR5cGU7Ci0KIGNsYXNzIENyeXB0b0tleSA6IHB1YmxpYyBSZWZDb3VudGVkPENyeXB0b0tleT4g
ewogcHVibGljOgotICAgIENyeXB0b0tleShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBDcnlw
dG9LZXlUeXBlLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSk7CisgICAgdXNpbmcg
VHlwZSA9IENyeXB0b0tleVR5cGU7CisgICAgQ3J5cHRvS2V5KENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXIsIFR5cGUsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlKTsKICAgICB2aXJ0
dWFsIH5DcnlwdG9LZXkoKTsKIAogICAgIHZpcnR1YWwgQ3J5cHRvS2V5Q2xhc3Mga2V5Q2xhc3Mo
KSBjb25zdCA9IDA7CiAKLSAgICBDcnlwdG9LZXlUeXBlIHR5cGUoKSBjb25zdDsKKyAgICBUeXBl
IHR5cGUoKSBjb25zdDsKICAgICBib29sIGV4dHJhY3RhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9l
eHRyYWN0YWJsZTsgfQogICAgIHZpcnR1YWwgdm9pZCBidWlsZEFsZ29yaXRobURlc2NyaXB0aW9u
KENyeXB0b0FsZ29yaXRobURlc2NyaXB0aW9uQnVpbGRlciYpIGNvbnN0OwotICAgIFZlY3RvcjxL
ZXlVc2FnZT4gdXNhZ2VzKCkgY29uc3Q7CisKKyAgICAvLyBGSVhNRTogQ29uZnVzaW5nIHRvIGhh
dmUgQ3J5cHRvS2V5VXNhZ2UgYW5kIENyeXB0b0tleTo6VXNhZ2UgbmFtZWQgYWxtb3N0IHRoZSBz
YW1lLCBidXQgYmUgc2xpZ2h0bHkgZGlmZmVyZW50LgorICAgIC8vIENyeXB0b0tleVVzYWdlIHZh
bHVlcyBhcmUgYml0IG1hc2tzIHNvIHRoZXkgY2FuIGJlIGNvbWJpbmVkIHdpdGggIm9yIiwgd2hp
bGUgdGhpcyBpcyBhIG5vcm1hbCBlbnVtIHRoYXQgbXVzdAorICAgIC8vIG1hdGNoIHdoYXQgaXMg
ZGVmaW5lZCBpbiB0aGUgSURMLiBNYXliZSB3ZSBjYW4gcmVuYW1lIENyeXB0b0tleVVzYWdlIHRv
IENyeXB0b0tleTo6VXNhZ2VzQml0bWFwPworICAgIGVudW0gY2xhc3MgVXNhZ2UgeyBFbmNyeXB0
LCBEZWNyeXB0LCBTaWduLCBWZXJpZnksIERlcml2ZUtleSwgRGVyaXZlQml0cywgV3JhcEtleSwg
VW53cmFwS2V5IH07CisgICAgVmVjdG9yPFVzYWdlPiB1c2FnZXMoKSBjb25zdDsKIAogICAgIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIgYWxnb3JpdGhtSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1fYWxnb3JpdGhtOyB9CiAgICAgQ3J5cHRvS2V5VXNhZ2UgdXNhZ2VzQml0bWFwKCkgY29u
c3QgeyByZXR1cm4gbV91c2FnZXM7IH0KQEAgLTczLDEyICs3NSwxMiBAQCBwdWJsaWM6CiAKIHBy
aXZhdGU6CiAgICAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBtX2FsZ29yaXRobTsKLSAgICBD
cnlwdG9LZXlUeXBlIG1fdHlwZTsKKyAgICBUeXBlIG1fdHlwZTsKICAgICBib29sIG1fZXh0cmFj
dGFibGU7CiAgICAgQ3J5cHRvS2V5VXNhZ2UgbV91c2FnZXM7CiB9OwogCi1pbmxpbmUgQ3J5cHRv
S2V5VHlwZSBDcnlwdG9LZXk6OnR5cGUoKSBjb25zdAoraW5saW5lIGF1dG8gQ3J5cHRvS2V5Ojp0
eXBlKCkgY29uc3QgLT4gVHlwZQogewogICAgIHJldHVybiBtX3R5cGU7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0Zv
bnRGYWNlLmNwcAppbmRleCAxNzNhNTgyYjE2OTRmM2QyYzBhYzgxMTY4OGUyNDIwOTVjYmJjYTA3
Li5jYThmOTg1NWVlMzYzOThiODk0OGI3MzgyOWM0MzBlYmQ0OWU0OTVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9G
b250RmFjZS5jcHAKQEAgLTMxNywyMiArMzE3LDIyIEBAIFN0cmluZyBGb250RmFjZTo6ZmVhdHVy
ZVNldHRpbmdzKCkgY29uc3QKICAgICByZXR1cm4gbGlzdC0+Y3NzVGV4dCgpOwogfQogCi1Gb250
RmFjZUxvYWRTdGF0dXMgRm9udEZhY2U6OnN0YXR1cygpIGNvbnN0CithdXRvIEZvbnRGYWNlOjpz
dGF0dXMoKSBjb25zdCAtPiBMb2FkU3RhdHVzCiB7CiAgICAgc3dpdGNoIChtX2JhY2tpbmctPnN0
YXR1cygpKSB7CiAgICAgY2FzZSBDU1NGb250RmFjZTo6U3RhdHVzOjpQZW5kaW5nOgotICAgICAg
ICByZXR1cm4gRm9udEZhY2VMb2FkU3RhdHVzOjpVbmxvYWRlZDsKKyAgICAgICAgcmV0dXJuIExv
YWRTdGF0dXM6OlVubG9hZGVkOwogICAgIGNhc2UgQ1NTRm9udEZhY2U6OlN0YXR1czo6TG9hZGlu
ZzoKLSAgICAgICAgcmV0dXJuIEZvbnRGYWNlTG9hZFN0YXR1czo6TG9hZGluZzsKKyAgICAgICAg
cmV0dXJuIExvYWRTdGF0dXM6OkxvYWRpbmc7CiAgICAgY2FzZSBDU1NGb250RmFjZTo6U3RhdHVz
OjpUaW1lZE91dDoKLSAgICAgICAgcmV0dXJuIEZvbnRGYWNlTG9hZFN0YXR1czo6RXJyb3I7Cisg
ICAgICAgIHJldHVybiBMb2FkU3RhdHVzOjpFcnJvcjsKICAgICBjYXNlIENTU0ZvbnRGYWNlOjpT
dGF0dXM6OlN1Y2Nlc3M6Ci0gICAgICAgIHJldHVybiBGb250RmFjZUxvYWRTdGF0dXM6OkxvYWRl
ZDsKKyAgICAgICAgcmV0dXJuIExvYWRTdGF0dXM6OkxvYWRlZDsKICAgICBjYXNlIENTU0ZvbnRG
YWNlOjpTdGF0dXM6OkZhaWx1cmU6Ci0gICAgICAgIHJldHVybiBGb250RmFjZUxvYWRTdGF0dXM6
OkVycm9yOworICAgICAgICByZXR1cm4gTG9hZFN0YXR1czo6RXJyb3I7CiAgICAgfQogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBGb250RmFjZUxvYWRTdGF0dXM6OkVycm9y
OworICAgIHJldHVybiBMb2FkU3RhdHVzOjpFcnJvcjsKIH0KIAogdm9pZCBGb250RmFjZTo6Zm9u
dFN0YXRlQ2hhbmdlZChDU1NGb250RmFjZSYgZmFjZSwgQ1NTRm9udEZhY2U6OlN0YXR1cywgQ1NT
Rm9udEZhY2U6OlN0YXR1cyBuZXdTdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9Gb250RmFjZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmgKaW5kZXggMmIyYTk0
YmJjOTljMjIwNTkwYzhlNzVmZWE2ZDA3Yjk0OGYzMDAwMC4uZjRiNDM3YTViNzRmM2ZhOGM3NmUx
MDdiMDBkYmI2NzkzZWE2ZmQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRG
YWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmgKQEAgLTQyLDggKzQyLDYg
QEAgY2xhc3MgQ1NTRm9udEZhY2U7CiBjbGFzcyBDU1NWYWx1ZTsKIGNsYXNzIERpY3Rpb25hcnk7
CiAKLWVudW0gY2xhc3MgRm9udEZhY2VMb2FkU3RhdHVzIHsgVW5sb2FkZWQsIExvYWRpbmcsIExv
YWRlZCwgRXJyb3IgfTsKLQogY2xhc3MgRm9udEZhY2UgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRl
ZDxGb250RmFjZT4sIHB1YmxpYyBDU1NGb250RmFjZTo6Q2xpZW50IHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmUHRyPEZvbnRGYWNlPiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUmLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJiBmYW1pbHksIEpTQzo6SlNWYWx1ZSBzb3VyY2Us
IGNvbnN0IERpY3Rpb25hcnkmIGRlc2NyaXB0b3JzLCBFeGNlcHRpb25Db2RlJik7CkBAIC02NSw3
ICs2Myw5IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgdW5pY29kZVJhbmdlKCkgY29uc3Q7CiAgICAg
U3RyaW5nIHZhcmlhbnQoKSBjb25zdDsKICAgICBTdHJpbmcgZmVhdHVyZVNldHRpbmdzKCkgY29u
c3Q7Ci0gICAgRm9udEZhY2VMb2FkU3RhdHVzIHN0YXR1cygpIGNvbnN0OworCisgICAgZW51bSBj
bGFzcyBMb2FkU3RhdHVzIHsgVW5sb2FkZWQsIExvYWRpbmcsIExvYWRlZCwgRXJyb3IgfTsKKyAg
ICBMb2FkU3RhdHVzIHN0YXR1cygpIGNvbnN0OwogCiAgICAgdHlwZWRlZiBET01Qcm9taXNlPEZv
bnRGYWNlJiwgRE9NQ29yZUV4Y2VwdGlvbiY+IFByb21pc2U7CiAgICAgUHJvbWlzZSYgcHJvbWlz
ZSgpIHsgcmV0dXJuIG1fcHJvbWlzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0ZvbnRGYWNlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5jcHAKaW5k
ZXggMDA1MDk5MzZkNjM1OWYzNmFjNjI0N2VkZmIyMTVjNWNiNTBmNzlhMi4uNDU2MjJjYTRkMmE0
MDE4MDNhMjRkM2NhYTYxMDY1ZDY2YmY2NjZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0ZvbnRGYWNlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQu
Y3BwCkBAIC0xODIsMTYgKzE4MiwxNiBAQCBhdXRvIEZvbnRGYWNlU2V0Ojpwcm9taXNlKEpTQzo6
RXhlY1N0YXRlJiBleGVjU3RhdGUpIC0+IFByb21pc2UmCiAgICAgcmV0dXJuIG1fcHJvbWlzZS52
YWx1ZSgpOwogfQogICAgIAotRm9udEZhY2VTZXRMb2FkU3RhdHVzIEZvbnRGYWNlU2V0OjpzdGF0
dXMoKSBjb25zdAorYXV0byBGb250RmFjZVNldDo6c3RhdHVzKCkgY29uc3QgLT4gTG9hZFN0YXR1
cwogewogICAgIHN3aXRjaCAobV9iYWNraW5nLT5zdGF0dXMoKSkgewogICAgIGNhc2UgQ1NTRm9u
dEZhY2VTZXQ6OlN0YXR1czo6TG9hZGluZzoKLSAgICAgICAgcmV0dXJuIEZvbnRGYWNlU2V0TG9h
ZFN0YXR1czo6TG9hZGluZzsKKyAgICAgICAgcmV0dXJuIExvYWRTdGF0dXM6OkxvYWRpbmc7CiAg
ICAgY2FzZSBDU1NGb250RmFjZVNldDo6U3RhdHVzOjpMb2FkZWQ6Ci0gICAgICAgIHJldHVybiBG
b250RmFjZVNldExvYWRTdGF0dXM6OkxvYWRlZDsKKyAgICAgICAgcmV0dXJuIExvYWRTdGF0dXM6
OkxvYWRlZDsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEZv
bnRGYWNlU2V0TG9hZFN0YXR1czo6TG9hZGVkOworICAgIHJldHVybiBMb2FkU3RhdHVzOjpMb2Fk
ZWQ7CiB9CiAKIGJvb2wgRm9udEZhY2VTZXQ6OmNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNp
b24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaAppbmRleCAyOTUzYTlhOGE1MDlmNTBh
ODY0NTk3NTZjM2ZkYzM5NGUxZDcwODlkLi5iMTc1ODM2MzhlYjFlN2RjNTkxNTcyNDY5ZDQ0MTg3
NmVjNTdiYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaApAQCAtMzUsOCArMzUsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERPTUNvcmVFeGNlcHRpb247CiAKLWVudW0gY2xh
c3MgRm9udEZhY2VTZXRMb2FkU3RhdHVzIHsgTG9hZGluZywgTG9hZGVkIH07Ci0KIGNsYXNzIEZv
bnRGYWNlU2V0IGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8Rm9udEZhY2VTZXQ+LCBwcml2YXRl
IENTU0ZvbnRGYWNlU2V0Q2xpZW50LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwg
cHJpdmF0ZSBBY3RpdmVET01PYmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8Rm9udEZh
Y2VTZXQ+IGNyZWF0ZShEb2N1bWVudCYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Rm9udEZhY2U+PiYg
aW5pdGlhbEZhY2VzKTsKQEAgLTUyLDcgKzUwLDggQEAgcHVibGljOgogICAgIHZvaWQgbG9hZChK
U0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IFN0cmluZyYgZm9udCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBE
ZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlLCBFeGNlcHRpb25Db2RlJik7CiAgICAgYm9vbCBjaGVj
ayhjb25zdCBTdHJpbmcmIGZvbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYp
OwogCi0gICAgRm9udEZhY2VTZXRMb2FkU3RhdHVzIHN0YXR1cygpIGNvbnN0OworICAgIGVudW0g
Y2xhc3MgTG9hZFN0YXR1cyB7IExvYWRpbmcsIExvYWRlZCB9OworICAgIExvYWRTdGF0dXMgc3Rh
dHVzKCkgY29uc3Q7CiAKICAgICB0eXBlZGVmIERPTVByb21pc2U8Rm9udEZhY2VTZXQmLCBET01D
b3JlRXhjZXB0aW9uJj4gUHJvbWlzZTsKICAgICBQcm9taXNlJiBwcm9taXNlKEpTQzo6RXhlY1N0
YXRlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAwNTQ1ZWZjMWQ5MDkzYzRhMWQ0YjYw
YWY2YzQ2MzY3NjA1ODc1NzU2Li5mYTdmNmQwMzJkY2ZiNmMyYzNiNmQxN2Y5OGIwNzJjMzQwMmE4
NjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTUyMSw3ICs1MjEsNyBAQCBEb2N1bWVu
dDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCwgdW5zaWduZWQgZG9jdW1l
bnRDbGFzc2VzLCB1bnNpZwogI2VuZGlmCiAgICAgLCBtX2xvYWRFdmVudERlbGF5Q291bnQoMCkK
ICAgICAsIG1fbG9hZEV2ZW50RGVsYXlUaW1lcigqdGhpcywgJkRvY3VtZW50Ojpsb2FkRXZlbnRE
ZWxheVRpbWVyRmlyZWQpCi0gICAgLCBtX3JlZmVycmVyUG9saWN5KFJlZmVycmVySGVhZGVyUG9s
aWN5OjpEZWZhdWx0KQorICAgICwgbV9yZWZlcnJlclBvbGljeShSZWZlcnJlclBvbGljeTo6RGVm
YXVsdCkKICAgICAsIG1fd3JpdGVSZWN1cnNpb25Jc1Rvb0RlZXAoZmFsc2UpCiAgICAgLCBtX3dy
aXRlUmVjdXJzaW9uRGVwdGgoMCkKICAgICAsIG1fbGFzdEhhbmRsZWRVc2VyR2VzdHVyZVRpbWVz
dGFtcCgwKQpAQCAtMzM2MCwxNiArMzM2MCwxNiBAQCB2b2lkIERvY3VtZW50Ojpwcm9jZXNzUmVm
ZXJyZXJQb2xpY3koY29uc3QgU3RyaW5nJiBwb2xpY3kpCiAgICAgLy8gTm90ZSB0aGF0IHdlJ3Jl
IHN1cHBvcnRpbmcgYm90aCB0aGUgc3RhbmRhcmQgYW5kIGxlZ2FjeSBrZXl3b3JkcyBmb3IgcmVm
ZXJyZXIKICAgICAvLyBwb2xpY2llcywgYXMgZGVmaW5lZCBieSBodHRwOi8vd3d3LnczLm9yZy9U
Ui9yZWZlcnJlci1wb2xpY3kvI3JlZmVycmVyLXBvbGljeS1kZWxpdmVyeS1tZXRhCiAgICAgaWYg
KGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHBvbGljeSwgIm5vLXJlZmVycmVyIikgfHwg
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocG9saWN5LCAibmV2ZXIiKSkKLSAgICAgICAg
c2V0UmVmZXJyZXJQb2xpY3koUmVmZXJyZXJIZWFkZXJQb2xpY3k6Ok5ldmVyKTsKKyAgICAgICAg
c2V0UmVmZXJyZXJQb2xpY3koUmVmZXJyZXJQb2xpY3k6Ok5ldmVyKTsKICAgICBlbHNlIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwb2xpY3ksICJ1bnNhZmUtdXJsIikgfHwgZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocG9saWN5LCAiYWx3YXlzIikpCi0gICAgICAgIHNl
dFJlZmVycmVyUG9saWN5KFJlZmVycmVySGVhZGVyUG9saWN5OjpBbHdheXMpOworICAgICAgICBz
ZXRSZWZlcnJlclBvbGljeShSZWZlcnJlclBvbGljeTo6QWx3YXlzKTsKICAgICBlbHNlIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwb2xpY3ksICJvcmlnaW4iKSkKLSAgICAgICAg
c2V0UmVmZXJyZXJQb2xpY3koUmVmZXJyZXJIZWFkZXJQb2xpY3k6Ok9yaWdpbik7CisgICAgICAg
IHNldFJlZmVycmVyUG9saWN5KFJlZmVycmVyUG9saWN5OjpPcmlnaW4pOwogICAgIGVsc2UgaWYg
KGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHBvbGljeSwgIm5vLXJlZmVycmVyLXdoZW4t
ZG93bmdyYWRlIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocG9saWN5LCAiZGVm
YXVsdCIpKQotICAgICAgICBzZXRSZWZlcnJlclBvbGljeShSZWZlcnJlckhlYWRlclBvbGljeTo6
RGVmYXVsdCk7CisgICAgICAgIHNldFJlZmVycmVyUG9saWN5KFJlZmVycmVyUG9saWN5OjpEZWZh
dWx0KTsKICAgICBlbHNlIHsKICAgICAgICAgYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZTo6UmVuZGVyaW5nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiRmFpbGVkIHRvIHNldCByZWZlcnJl
ciBwb2xpY3k6IFRoZSB2YWx1ZSAnIiArIHBvbGljeSArICInIGlzIG5vdCBvbmUgb2YgJ25vLXJl
ZmVycmVyJywgJ29yaWdpbicsICduby1yZWZlcnJlci13aGVuLWRvd25ncmFkZScsIG9yICd1bnNh
ZmUtdXJsJy4gRGVmYXVsdGluZyB0byAnbm8tcmVmZXJyZXInLiIpOwotICAgICAgICBzZXRSZWZl
cnJlclBvbGljeShSZWZlcnJlckhlYWRlclBvbGljeTo6TmV2ZXIpOworICAgICAgICBzZXRSZWZl
cnJlclBvbGljeShSZWZlcnJlclBvbGljeTo6TmV2ZXIpOwogICAgIH0KIH0KIApAQCAtNjkzNyw3
ICs2OTM3LDcgQEAgdm9pZCBEb2N1bWVudDo6YXBwbHlDb250ZW50RGlzcG9zaXRpb25BdHRhY2ht
ZW50U2FuZGJveCgpCiB7CiAgICAgQVNTRVJUKHNob3VsZEVuZm9yY2VDb250ZW50RGlzcG9zaXRp
b25BdHRhY2htZW50U2FuZGJveCgpKTsKIAotICAgIHNldFJlZmVycmVyUG9saWN5KFJlZmVycmVy
SGVhZGVyUG9saWN5OjpOZXZlcik7CisgICAgc2V0UmVmZXJyZXJQb2xpY3koUmVmZXJyZXJQb2xp
Y3k6Ok5ldmVyKTsKICAgICBpZiAoIWlzTWVkaWFEb2N1bWVudCgpKQogICAgICAgICBlbmZvcmNl
U2FuZGJveEZsYWdzKFNhbmRib3hBbGwpOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5k
ZXggMTY2MjFlYmE3MTcwYjkxNmViYTg2NmUxMGE4OGVlY2E1ODQ5N2M3Mi4uMWJjYjQ4YmUyNWVi
YWJkOWFjNjhlY2NkNTAxZTY2NTE5MTUxN2UzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTM2
MSw4ICszNjEsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBkaWREaXNwYXRjaFZpZXdwb3J0UHJvcGVy
dGllc0NoYW5nZWQoKSBjb25zdCB7IHJldHVybiBtX2RpZERpc3BhdGNoVmlld3BvcnRQcm9wZXJ0
aWVzQ2hhbmdlZDsgfQogI2VuZGlmCiAKLSAgICB2b2lkIHNldFJlZmVycmVyUG9saWN5KFJlZmVy
cmVySGVhZGVyUG9saWN5IHJlZmVycmVyUG9saWN5KSB7IG1fcmVmZXJyZXJQb2xpY3kgPSByZWZl
cnJlclBvbGljeTsgfQotICAgIFJlZmVycmVySGVhZGVyUG9saWN5IHJlZmVycmVyUG9saWN5KCkg
Y29uc3QgeyByZXR1cm4gbV9yZWZlcnJlclBvbGljeTsgfQorICAgIHZvaWQgc2V0UmVmZXJyZXJQ
b2xpY3koUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3kpIHsgbV9yZWZlcnJlclBvbGljeSA9
IHJlZmVycmVyUG9saWN5OyB9CisgICAgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3koKSBj
b25zdCB7IHJldHVybiBtX3JlZmVycmVyUG9saWN5OyB9CiAKICAgICBEb2N1bWVudFR5cGUqIGRv
Y3R5cGUoKSBjb25zdDsKIApAQCAtMTY0MCw3ICsxNjQwLDcgQEAgcHJpdmF0ZToKIAogICAgIFZp
ZXdwb3J0QXJndW1lbnRzIG1fdmlld3BvcnRBcmd1bWVudHM7CiAKLSAgICBSZWZlcnJlckhlYWRl
clBvbGljeSBtX3JlZmVycmVyUG9saWN5OworICAgIFJlZmVycmVyUG9saWN5IG1fcmVmZXJyZXJQ
b2xpY3k7CiAKICNpZiBFTkFCTEUoV0VCX1RJTUlORykKICAgICBEb2N1bWVudFRpbWluZyBtX2Rv
Y3VtZW50VGltaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5k
ZXggYTgzZWJiNzg2YjJkNTQwZTY4MGRlYWZhNTYyYmM1MTFmZjYzYzFiMS4uYjE4ZTI5NzEzYmEy
ZDZlYmMxYzgyYmVmNzEyMjZkYjU1ZGM2OWMyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCkBAIC0xMTc0LDcgKzExNzQsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OmxvYWRJbnRlcm5hbCgpCiAgICAgICAgIGlmIChtX3RleHRUcmFja3MpIHsKICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3RleHRUcmFja3MtPmxlbmd0aCgpOyArK2kp
IHsKICAgICAgICAgICAgICAgICBUZXh0VHJhY2sqIHRyYWNrID0gbV90ZXh0VHJhY2tzLT5pdGVt
KGkpOwotICAgICAgICAgICAgICAgIGlmICh0cmFjay0+bW9kZSgpICE9IFRleHRUcmFja01vZGU6
OkRpc2FibGVkKQorICAgICAgICAgICAgICAgIGlmICh0cmFjay0+bW9kZSgpICE9IFRleHRUcmFj
azo6TW9kZTo6RGlzYWJsZWQpCiAgICAgICAgICAgICAgICAgICAgIG1fdGV4dFRyYWNrc1doZW5S
ZXNvdXJjZVNlbGVjdGlvbkJlZ2FuLmFwcGVuZCh0cmFjayk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KQEAgLTE3MzEsNyArMTczMSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRy
YWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrKiB0cmFjaykKICAgICAvLyBNYXJrIHRoaXMgdHJhY2sg
YXMgImNvbmZpZ3VyZWQiIHNvIGNvbmZpZ3VyZVRleHRUcmFja3Mgd29uJ3QgY2hhbmdlIHRoZSBt
b2RlIGFnYWluLgogICAgIHRyYWNrLT5zZXRIYXNCZWVuQ29uZmlndXJlZCh0cnVlKTsKICAgICAK
LSAgICBpZiAodHJhY2stPm1vZGUoKSAhPSBUZXh0VHJhY2tNb2RlOjpEaXNhYmxlZCAmJiB0cmFj
a0lzTG9hZGVkKQorICAgIGlmICh0cmFjay0+bW9kZSgpICE9IFRleHRUcmFjazo6TW9kZTo6RGlz
YWJsZWQgJiYgdHJhY2tJc0xvYWRlZCkKICAgICAgICAgdGV4dFRyYWNrQWRkQ3Vlcyh0cmFjaywg
dHJhY2stPmN1ZXMoKSk7CiAKICAgICBjb25maWd1cmVUZXh0VHJhY2tEaXNwbGF5KEFzc3VtZVRl
eHRUcmFja1Zpc2liaWxpdHlDaGFuZ2VkKTsKQEAgLTE3NTUsOCArMTc1NSw4IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6dmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZChWaWRlb1RyYWNrKiB0cmFj
aykKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tLaW5kQ2hhbmdlZChUZXh0VHJh
Y2sqIHRyYWNrKQogewotICAgIGlmICh0cmFjay0+a2luZCgpICE9IFRleHRUcmFja0tpbmQ6OkNh
cHRpb25zICYmIHRyYWNrLT5raW5kKCkgIT0gVGV4dFRyYWNrS2luZDo6U3VidGl0bGVzICYmIHRy
YWNrLT5tb2RlKCkgPT0gVGV4dFRyYWNrTW9kZTo6U2hvd2luZykKLSAgICAgICAgdHJhY2stPnNl
dE1vZGUoVGV4dFRyYWNrTW9kZTo6SGlkZGVuKTsKKyAgICBpZiAodHJhY2stPmtpbmQoKSAhPSBU
ZXh0VHJhY2s6OktpbmQ6OkNhcHRpb25zICYmIHRyYWNrLT5raW5kKCkgIT0gVGV4dFRyYWNrOjpL
aW5kOjpTdWJ0aXRsZXMgJiYgdHJhY2stPm1vZGUoKSA9PSBUZXh0VHJhY2s6Ok1vZGU6OlNob3dp
bmcpCisgICAgICAgIHRyYWNrLT5zZXRNb2RlKFRleHRUcmFjazo6TW9kZTo6SGlkZGVuKTsKIH0K
IAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpiZWdpbklnbm9yaW5nVHJhY2tEaXNwbGF5VXBkYXRl
UmVxdWVzdHMoKQpAQCAtMTc3NCw3ICsxNzc0LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpl
bmRJZ25vcmluZ1RyYWNrRGlzcGxheVVwZGF0ZVJlcXVlc3RzKCkKIAogdm9pZCBIVE1MTWVkaWFF
bGVtZW50Ojp0ZXh0VHJhY2tBZGRDdWVzKFRleHRUcmFjayogdHJhY2ssIGNvbnN0IFRleHRUcmFj
a0N1ZUxpc3QqIGN1ZXMpIAogewotICAgIGlmICh0cmFjay0+bW9kZSgpID09IFRleHRUcmFja01v
ZGU6OkRpc2FibGVkKQorICAgIGlmICh0cmFjay0+bW9kZSgpID09IFRleHRUcmFjazo6TW9kZTo6
RGlzYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIFRyYWNrRGlzcGxheVVwZGF0ZVNjb3Bl
IHNjb3BlKHRoaXMpOwpAQCAtMTc5MSw3ICsxNzkxLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
Ojp0ZXh0VHJhY2tSZW1vdmVDdWVzKFRleHRUcmFjayosIGNvbnN0IFRleHRUcmFja0N1ZUxpc3Qq
IGMKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tBZGRDdWUoVGV4dFRyYWNrKiB0
cmFjaywgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+IHBycEN1ZSkKIHsKLSAgICBpZiAodHJhY2st
Pm1vZGUoKSA9PSBUZXh0VHJhY2tNb2RlOjpEaXNhYmxlZCkKKyAgICBpZiAodHJhY2stPm1vZGUo
KSA9PSBUZXh0VHJhY2s6Ok1vZGU6OkRpc2FibGVkKQogICAgICAgICByZXR1cm47CiAKICAgICBS
ZWZQdHI8VGV4dFRyYWNrQ3VlPiBjdWUgPSBwcnBDdWU7CkBAIC0zNjY0LDcgKzM2NjQsNyBAQCBQ
YXNzUmVmUHRyPFRleHRUcmFjaz4gSFRNTE1lZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKGNvbnN0
IFN0cmluZyYga2luZCwgY29uc3QgUwogICAgIHRleHRUcmFjay0+c2V0UmVhZGluZXNzU3RhdGUo
VGV4dFRyYWNrOjpMb2FkZWQpOwogCiAgICAgLy8gLi4uIGl0cyB0ZXh0IHRyYWNrIG1vZGUgdG8g
dGhlIHRleHQgdHJhY2sgaGlkZGVuIG1vZGUsIGFuZCBpdHMgdGV4dCB0cmFjayBsaXN0IG9mIGN1
ZXMgdG8gYW4gZW1wdHkgbGlzdCAuLi4KLSAgICB0ZXh0VHJhY2stPnNldE1vZGUoVGV4dFRyYWNr
TW9kZTo6SGlkZGVuKTsKKyAgICB0ZXh0VHJhY2stPnNldE1vZGUoVGV4dFRyYWNrOjpNb2RlOjpI
aWRkZW4pOwogCiAgICAgcmV0dXJuIHRleHRUcmFjay5yZWxlYXNlKCk7CiB9CkBAIC0zNzkyLDcg
KzM3OTIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNvbmZpZ3VyZVRleHRUcmFja0dyb3Vw
KGNvbnN0IFRyYWNrR3JvdXAmIGdyb3VwKQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZ3Jv
dXAudHJhY2tzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFJlZlB0cjxUZXh0VHJhY2s+IHRleHRU
cmFjayA9IGdyb3VwLnRyYWNrc1tpXTsKIAotICAgICAgICBpZiAobV9wcm9jZXNzaW5nUHJlZmVy
ZW5jZUNoYW5nZSAmJiB0ZXh0VHJhY2stPm1vZGUoKSA9PSBUZXh0VHJhY2tNb2RlOjpTaG93aW5n
KQorICAgICAgICBpZiAobV9wcm9jZXNzaW5nUHJlZmVyZW5jZUNoYW5nZSAmJiB0ZXh0VHJhY2st
Pm1vZGUoKSA9PSBUZXh0VHJhY2s6Ok1vZGU6OlNob3dpbmcpCiAgICAgICAgICAgICBjdXJyZW50
bHlFbmFibGVkVHJhY2tzLmFwcGVuZCh0ZXh0VHJhY2spOwogCiAgICAgICAgIGludCB0cmFja1Nj
b3JlID0gY2FwdGlvblByZWZlcmVuY2VzID8gY2FwdGlvblByZWZlcmVuY2VzLT50ZXh0VHJhY2tT
ZWxlY3Rpb25TY29yZSh0ZXh0VHJhY2suZ2V0KCksIHRoaXMpIDogMDsKQEAgLTM4NjEsMTIgKzM4
NjEsMTIgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpjb25maWd1cmVUZXh0VHJhY2tHcm91cChj
b25zdCBUcmFja0dyb3VwJiBncm91cCkKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBj
dXJyZW50bHlFbmFibGVkVHJhY2tzLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBSZWZQdHI8
VGV4dFRyYWNrPiB0ZXh0VHJhY2sgPSBjdXJyZW50bHlFbmFibGVkVHJhY2tzW2ldOwogICAgICAg
ICAgICAgaWYgKHRleHRUcmFjayAhPSB0cmFja1RvRW5hYmxlKQotICAgICAgICAgICAgICAgIHRl
eHRUcmFjay0+c2V0TW9kZShUZXh0VHJhY2tNb2RlOjpEaXNhYmxlZCk7CisgICAgICAgICAgICAg
ICAgdGV4dFRyYWNrLT5zZXRNb2RlKFRleHRUcmFjazo6TW9kZTo6RGlzYWJsZWQpOwogICAgICAg
ICB9CiAgICAgfQogCiAgICAgaWYgKHRyYWNrVG9FbmFibGUpIHsKLSAgICAgICAgdHJhY2tUb0Vu
YWJsZS0+c2V0TW9kZShUZXh0VHJhY2tNb2RlOjpTaG93aW5nKTsKKyAgICAgICAgdHJhY2tUb0Vu
YWJsZS0+c2V0TW9kZShUZXh0VHJhY2s6Ok1vZGU6OlNob3dpbmcpOwogCiAgICAgICAgIC8vIElm
IHVzZXIgcHJlZmVyZW5jZXMgaW5kaWNhdGUgd2Ugc2hvdWxkIGFsd2F5cyBkaXNwbGF5IGNhcHRp
b25zLCBtYWtlIHN1cmUgd2UgcmVmbGVjdCB0aGUKICAgICAgICAgLy8gcHJvcGVyIHN0YXR1cyB2
aWEgdGhlIHdlYmtpdENsb3NlZENhcHRpb25zVmlzaWJsZSBBUEkgY2FsbDoKQEAgLTM5OTYsMTMg
KzM5OTYsMTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRTZWxlY3RlZFRleHRUcmFjayhU
ZXh0VHJhY2sqIHRyYWNrVG9TZWxlY3QpCiAgICAgICAgIGZvciAoaW50IGkgPSAwLCBsZW5ndGgg
PSB0cmFja0xpc3QtPmxlbmd0aCgpOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIFRl
eHRUcmFjayogdHJhY2sgPSB0cmFja0xpc3QtPml0ZW0oaSk7CiAgICAgICAgICAgICBpZiAoIXRy
YWNrVG9TZWxlY3QgfHwgdHJhY2sgIT0gdHJhY2tUb1NlbGVjdCkKLSAgICAgICAgICAgICAgICB0
cmFjay0+c2V0TW9kZShUZXh0VHJhY2tNb2RlOjpEaXNhYmxlZCk7CisgICAgICAgICAgICAgICAg
dHJhY2stPnNldE1vZGUoVGV4dFRyYWNrOjpNb2RlOjpEaXNhYmxlZCk7CiAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgdHJhY2stPnNldE1vZGUoVGV4dFRyYWNrTW9kZTo6U2hvd2lu
Zyk7CisgICAgICAgICAgICAgICAgdHJhY2stPnNldE1vZGUoVGV4dFRyYWNrOjpNb2RlOjpTaG93
aW5nKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAodHJhY2tUb1NlbGVjdCA9PSBUZXh0VHJh
Y2s6OmNhcHRpb25NZW51T2ZmSXRlbSgpKSB7CiAgICAgICAgIGZvciAoaW50IGkgPSAwLCBsZW5n
dGggPSB0cmFja0xpc3QtPmxlbmd0aCgpOyBpIDwgbGVuZ3RoOyArK2kpCi0gICAgICAgICAgICB0
cmFja0xpc3QtPml0ZW0oaSktPnNldE1vZGUoVGV4dFRyYWNrTW9kZTo6RGlzYWJsZWQpOworICAg
ICAgICAgICAgdHJhY2tMaXN0LT5pdGVtKGkpLT5zZXRNb2RlKFRleHRUcmFjazo6TW9kZTo6RGlz
YWJsZWQpOwogICAgIH0KIAogICAgIGlmICghZG9jdW1lbnQoKS5wYWdlKCkpCkBAIC00MDQxLDE4
ICs0MDQxLDE4IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y29uZmlndXJlVGV4dFRyYWNrcygp
CiAKICAgICAgICAgYXV0byBraW5kID0gdGV4dFRyYWNrLT5raW5kKCk7CiAgICAgICAgIFRyYWNr
R3JvdXAqIGN1cnJlbnRHcm91cDsKLSAgICAgICAgaWYgKGtpbmQgPT0gVGV4dFRyYWNrS2luZDo6
U3VidGl0bGVzIHx8IGtpbmQgPT0gVGV4dFRyYWNrS2luZDo6Q2FwdGlvbnMgfHwga2luZCA9PSBU
ZXh0VHJhY2tLaW5kOjpGb3JjZWQpCisgICAgICAgIGlmIChraW5kID09IFRleHRUcmFjazo6S2lu
ZDo6U3VidGl0bGVzIHx8IGtpbmQgPT0gVGV4dFRyYWNrOjpLaW5kOjpDYXB0aW9ucyB8fCBraW5k
ID09IFRleHRUcmFjazo6S2luZDo6Rm9yY2VkKQogICAgICAgICAgICAgY3VycmVudEdyb3VwID0g
JmNhcHRpb25BbmRTdWJ0aXRsZVRyYWNrczsKLSAgICAgICAgZWxzZSBpZiAoa2luZCA9PSBUZXh0
VHJhY2tLaW5kOjpEZXNjcmlwdGlvbnMpCisgICAgICAgIGVsc2UgaWYgKGtpbmQgPT0gVGV4dFRy
YWNrOjpLaW5kOjpEZXNjcmlwdGlvbnMpCiAgICAgICAgICAgICBjdXJyZW50R3JvdXAgPSAmZGVz
Y3JpcHRpb25UcmFja3M7Ci0gICAgICAgIGVsc2UgaWYgKGtpbmQgPT0gVGV4dFRyYWNrS2luZDo6
Q2hhcHRlcnMpCisgICAgICAgIGVsc2UgaWYgKGtpbmQgPT0gVGV4dFRyYWNrOjpLaW5kOjpDaGFw
dGVycykKICAgICAgICAgICAgIGN1cnJlbnRHcm91cCA9ICZjaGFwdGVyVHJhY2tzOwotICAgICAg
ICBlbHNlIGlmIChraW5kID09IFRleHRUcmFja0tpbmQ6Ok1ldGFkYXRhKQorICAgICAgICBlbHNl
IGlmIChraW5kID09IFRleHRUcmFjazo6S2luZDo6TWV0YWRhdGEpCiAgICAgICAgICAgICBjdXJy
ZW50R3JvdXAgPSAmbWV0YWRhdGFUcmFja3M7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGN1
cnJlbnRHcm91cCA9ICZvdGhlclRyYWNrczsKIAotICAgICAgICBpZiAoIWN1cnJlbnRHcm91cC0+
dmlzaWJsZVRyYWNrICYmIHRleHRUcmFjay0+bW9kZSgpID09IFRleHRUcmFja01vZGU6OlNob3dp
bmcpCisgICAgICAgIGlmICghY3VycmVudEdyb3VwLT52aXNpYmxlVHJhY2sgJiYgdGV4dFRyYWNr
LT5tb2RlKCkgPT0gVGV4dFRyYWNrOjpNb2RlOjpTaG93aW5nKQogICAgICAgICAgICAgY3VycmVu
dEdyb3VwLT52aXNpYmxlVHJhY2sgPSB0ZXh0VHJhY2s7CiAgICAgICAgIGlmICghY3VycmVudEdy
b3VwLT5kZWZhdWx0VHJhY2sgJiYgdGV4dFRyYWNrLT5pc0RlZmF1bHQoKSkKICAgICAgICAgICAg
IGN1cnJlbnRHcm91cC0+ZGVmYXVsdFRyYWNrID0gdGV4dFRyYWNrOwpAQCAtNTQ5MSw3ICs1NDkx
LDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpoYXNDbG9zZWRDYXB0aW9ucygpIGNvbnN0CiAg
ICAgICAgIGF1dG8mIHRyYWNrID0gKm1fdGV4dFRyYWNrcy0+aXRlbShpKTsKICAgICAgICAgaWYg
KHRyYWNrLnJlYWRpbmVzc1N0YXRlKCkgPT0gVGV4dFRyYWNrOjpGYWlsZWRUb0xvYWQpCiAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKHRyYWNrLmtpbmQoKSA9PSBUZXh0VHJhY2tL
aW5kOjpDYXB0aW9ucyB8fCB0cmFjay5raW5kKCkgPT0gVGV4dFRyYWNrS2luZDo6U3VidGl0bGVz
KQorICAgICAgICBpZiAodHJhY2sua2luZCgpID09IFRleHRUcmFjazo6S2luZDo6Q2FwdGlvbnMg
fHwgdHJhY2sua2luZCgpID09IFRleHRUcmFjazo6S2luZDo6U3VidGl0bGVzKQogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogI2VuZGlmCkBAIC01NzU4LDcgKzU3NTgsNyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OmNvbmZpZ3VyZVRleHRUcmFja0Rpc3BsYXkoVGV4dFRyYWNrVmlz
aWJpbGl0eUNoZWNrVHlwZSBjaAogCiAgICAgYm9vbCBoYXZlVmlzaWJsZVRleHRUcmFjayA9IGZh
bHNlOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3RleHRUcmFja3MtPmxlbmd0aCgp
OyArK2kpIHsKLSAgICAgICAgaWYgKG1fdGV4dFRyYWNrcy0+aXRlbShpKS0+bW9kZSgpID09IFRl
eHRUcmFja01vZGU6OlNob3dpbmcpIHsKKyAgICAgICAgaWYgKG1fdGV4dFRyYWNrcy0+aXRlbShp
KS0+bW9kZSgpID09IFRleHRUcmFjazo6TW9kZTo6U2hvd2luZykgewogICAgICAgICAgICAgaGF2
ZVZpc2libGVUZXh0VHJhY2sgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
QEAgLTU4MzQsNyArNTgzNCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWFya0NhcHRpb25B
bmRTdWJ0aXRsZVRyYWNrc0FzVW5jb25maWd1cmVkKFJlY29uZmlndXJlTW9kCiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fdGV4dFRyYWNrcy0+bGVuZ3RoKCk7ICsraSkgewogICAgICAg
ICBhdXRvJiB0cmFjayA9ICptX3RleHRUcmFja3MtPml0ZW0oaSk7CiAgICAgICAgIGF1dG8ga2lu
ZCA9IHRyYWNrLmtpbmQoKTsKLSAgICAgICAgaWYgKGtpbmQgPT0gVGV4dFRyYWNrS2luZDo6U3Vi
dGl0bGVzIHx8IGtpbmQgPT0gVGV4dFRyYWNrS2luZDo6Q2FwdGlvbnMpCisgICAgICAgIGlmIChr
aW5kID09IFRleHRUcmFjazo6S2luZDo6U3VidGl0bGVzIHx8IGtpbmQgPT0gVGV4dFRyYWNrOjpL
aW5kOjpDYXB0aW9ucykKICAgICAgICAgICAgIHRyYWNrLnNldEhhc0JlZW5Db25maWd1cmVkKGZh
bHNlKTsKICAgICB9CiAKQEAgLTYwODAsMzQgKzYwODAsMzQgQEAgU3RyaW5nIEhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVyVXNlckFnZW50KCkgY29uc3QKIAogI2lmIEVOQUJMRShBVkZfQ0FQ
VElPTlMpCiAKLXN0YXRpYyBpbmxpbmUgUGxhdGZvcm1UZXh0VHJhY2s6OlRyYWNrS2luZCB0b1Bs
YXRmb3JtKFRleHRUcmFja0tpbmQga2luZCkKK3N0YXRpYyBpbmxpbmUgUGxhdGZvcm1UZXh0VHJh
Y2s6OlRyYWNrS2luZCB0b1BsYXRmb3JtKFRleHRUcmFjazo6S2luZCBraW5kKQogewogICAgIHN3
aXRjaCAoa2luZCkgewotICAgIGNhc2UgVGV4dFRyYWNrS2luZDo6Q2FwdGlvbnM6CisgICAgY2Fz
ZSBUZXh0VHJhY2s6OktpbmQ6OkNhcHRpb25zOgogICAgICAgICByZXR1cm4gUGxhdGZvcm1UZXh0
VHJhY2s6OkNhcHRpb247Ci0gICAgY2FzZSBUZXh0VHJhY2tLaW5kOjpDaGFwdGVyczoKKyAgICBj
YXNlIFRleHRUcmFjazo6S2luZDo6Q2hhcHRlcnM6CiAgICAgICAgIHJldHVybiBQbGF0Zm9ybVRl
eHRUcmFjazo6Q2hhcHRlcjsKLSAgICBjYXNlIFRleHRUcmFja0tpbmQ6OkRlc2NyaXB0aW9uczoK
KyAgICBjYXNlIFRleHRUcmFjazo6S2luZDo6RGVzY3JpcHRpb25zOgogICAgICAgICByZXR1cm4g
UGxhdGZvcm1UZXh0VHJhY2s6OkRlc2NyaXB0aW9uOwotICAgIGNhc2UgVGV4dFRyYWNrS2luZDo6
Rm9yY2VkOgorICAgIGNhc2UgVGV4dFRyYWNrOjpLaW5kOjpGb3JjZWQ6CiAgICAgICAgIHJldHVy
biBQbGF0Zm9ybVRleHRUcmFjazo6Rm9yY2VkOwotICAgIGNhc2UgVGV4dFRyYWNrS2luZDo6TWV0
YWRhdGE6CisgICAgY2FzZSBUZXh0VHJhY2s6OktpbmQ6Ok1ldGFkYXRhOgogICAgICAgICByZXR1
cm4gUGxhdGZvcm1UZXh0VHJhY2s6Ok1ldGFEYXRhOwotICAgIGNhc2UgVGV4dFRyYWNrS2luZDo6
U3VidGl0bGVzOgorICAgIGNhc2UgVGV4dFRyYWNrOjpLaW5kOjpTdWJ0aXRsZXM6CiAgICAgICAg
IHJldHVybiBQbGF0Zm9ybVRleHRUcmFjazo6U3VidGl0bGU7CiAgICAgfQogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBQbGF0Zm9ybVRleHRUcmFjazo6Q2FwdGlvbjsKIH0K
IAotc3RhdGljIGlubGluZSBQbGF0Zm9ybVRleHRUcmFjazo6VHJhY2tNb2RlIHRvUGxhdGZvcm0o
VGV4dFRyYWNrTW9kZSBtb2RlKQorc3RhdGljIGlubGluZSBQbGF0Zm9ybVRleHRUcmFjazo6VHJh
Y2tNb2RlIHRvUGxhdGZvcm0oVGV4dFRyYWNrOjpNb2RlIG1vZGUpCiB7CiAgICAgc3dpdGNoICht
b2RlKSB7Ci0gICAgY2FzZSBUZXh0VHJhY2tNb2RlOjpEaXNhYmxlZDoKKyAgICBjYXNlIFRleHRU
cmFjazo6TW9kZTo6RGlzYWJsZWQ6CiAgICAgICAgIHJldHVybiBQbGF0Zm9ybVRleHRUcmFjazo6
RGlzYWJsZWQ7Ci0gICAgY2FzZSBUZXh0VHJhY2tNb2RlOjpIaWRkZW46CisgICAgY2FzZSBUZXh0
VHJhY2s6Ok1vZGU6OkhpZGRlbjoKICAgICAgICAgcmV0dXJuIFBsYXRmb3JtVGV4dFRyYWNrOjpI
aWRkZW47Ci0gICAgY2FzZSBUZXh0VHJhY2tNb2RlOjpTaG93aW5nOgorICAgIGNhc2UgVGV4dFRy
YWNrOjpNb2RlOjpTaG93aW5nOgogICAgICAgICByZXR1cm4gUGxhdGZvcm1UZXh0VHJhY2s6OlNo
b3dpbmc7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNjEzMSwxMyArNjEz
MSwxMyBAQCBWZWN0b3I8UmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrPj4gSFRNTE1lZGlhRWxlbWVu
dDo6b3V0T2ZCYW5kVHJhY2tTb3VyY2VzKCkKICAgICAgICAgLy8gRklYTUU6IFRoZSBzd2l0Y2gg
c3RhdGVtZW50IGJlbG93IHByZXNlcnZlcyBleGlzdGluZyBiZWhhdmlvciB3aGVyZSB3ZSBpZ25v
cmUgY2hhcHRlcnMgYW5kIG1ldGFkYXRhIHRyYWNrcy4KICAgICAgICAgLy8gSWYgd2UgY29uZmly
bSB0aGlzIGJlaGF2aW9yIGlzIHZhbHVhYmxlLCB3ZSBzaG91bGQgcmVtb3ZlIHRoaXMgY29tbWVu
dC4gT3RoZXJ3aXNlLCByZW1vdmUgYm90aCBjb21tZW50IGFuZCBzd2l0Y2guCiAgICAgICAgIHN3
aXRjaCAoa2luZCkgewotICAgICAgICBjYXNlIFRleHRUcmFja0tpbmQ6OkNhcHRpb25zOgotICAg
ICAgICBjYXNlIFRleHRUcmFja0tpbmQ6OkRlc2NyaXB0aW9uczoKLSAgICAgICAgY2FzZSBUZXh0
VHJhY2tLaW5kOjpGb3JjZWQ6Ci0gICAgICAgIGNhc2UgVGV4dFRyYWNrS2luZDo6U3VidGl0bGVz
OgorICAgICAgICBjYXNlIFRleHRUcmFjazo6S2luZDo6Q2FwdGlvbnM6CisgICAgICAgIGNhc2Ug
VGV4dFRyYWNrOjpLaW5kOjpEZXNjcmlwdGlvbnM6CisgICAgICAgIGNhc2UgVGV4dFRyYWNrOjpL
aW5kOjpGb3JjZWQ6CisgICAgICAgIGNhc2UgVGV4dFRyYWNrOjpLaW5kOjpTdWJ0aXRsZXM6CiAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBUZXh0VHJhY2tLaW5kOjpDaGFwdGVyczoK
LSAgICAgICAgY2FzZSBUZXh0VHJhY2tLaW5kOjpNZXRhZGF0YToKKyAgICAgICAgY2FzZSBUZXh0
VHJhY2s6OktpbmQ6OkNoYXB0ZXJzOgorICAgICAgICBjYXNlIFRleHRUcmFjazo6S2luZDo6TWV0
YWRhdGE6CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcAppbmRleCA0NTRiYzI2NGQ5MzhlMDUxNjliODQ0ZTIw
NGVhZTU2YTAzMTQ1ZTMwLi5jMjAxYWJlM2JjODQ3MjYzMDQ3YWIyYzVjZTZjOWI2ZDFhMGI5ZDY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKQEAgLTE3NCw3ICsx
NzQsNyBAQCB2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnNjaGVkdWxlTG9hZCgpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIC8vIDIuIElmIHRoZSB0ZXh0IHRyYWNrJ3MgdGV4dCB0cmFjayBtb2RlIGlz
IG5vdCBzZXQgdG8gb25lIG9mIGhpZGRlbiBvciBzaG93aW5nLCBhYm9ydCB0aGVzZSBzdGVwcy4K
LSAgICBpZiAoZW5zdXJlVHJhY2soKS5tb2RlKCkgIT0gVGV4dFRyYWNrTW9kZTo6SGlkZGVuICYm
IGVuc3VyZVRyYWNrKCkubW9kZSgpICE9IFRleHRUcmFja01vZGU6OlNob3dpbmcpCisgICAgaWYg
KGVuc3VyZVRyYWNrKCkubW9kZSgpICE9IFRleHRUcmFjazo6TW9kZTo6SGlkZGVuICYmIGVuc3Vy
ZVRyYWNrKCkubW9kZSgpICE9IFRleHRUcmFjazo6TW9kZTo6U2hvd2luZykKICAgICAgICAgcmV0
dXJuOwogCiAgICAgLy8gMy4gSWYgdGhlIHRleHQgdHJhY2sncyB0cmFjayBlbGVtZW50IGRvZXMg
bm90IGhhdmUgYSBtZWRpYSBlbGVtZW50IGFzIGEgcGFyZW50LCBhYm9ydCB0aGVzZSBzdGVwcy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4IDE4ZTBiNmQ3MzQ1
YjZkOTJmZjE1Mzg1NjIzMzNiNWYyNDM5YzU5ODIuLmFmZjI5M2M1N2IxMDI4MzY3MTJhZGM0MTEz
ODdlMmM3NGNlYTlhMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVv
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNw
cApAQCAtNDAxLDE0ICs0MDEsMTQgQEAgYm9vbCBIVE1MVmlkZW9FbGVtZW50Ojp3ZWJraXRTdXBw
b3J0c1ByZXNlbnRhdGlvbk1vZGUoVmlkZW9QcmVzZW50YXRpb25Nb2RlIG1vZGUKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRl
b0Z1bGxzY3JlZW5Nb2RlIHRvRnVsbHNjcmVlbk1vZGUoVmlkZW9QcmVzZW50YXRpb25Nb2RlIG1v
ZGUpCitzdGF0aWMgaW5saW5lIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVu
TW9kZSB0b0Z1bGxzY3JlZW5Nb2RlKEhUTUxWaWRlb0VsZW1lbnQ6OlZpZGVvUHJlc2VudGF0aW9u
TW9kZSBtb2RlKQogewogICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNhc2UgVmlkZW9QcmVzZW50
YXRpb25Nb2RlOjpGdWxsc2NyZWVuOgorICAgIGNhc2UgSFRNTFZpZGVvRWxlbWVudDo6VmlkZW9Q
cmVzZW50YXRpb25Nb2RlOjpGdWxsc2NyZWVuOgogICAgICAgICByZXR1cm4gSFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQ7Ci0gICAgY2FzZSBWaWRlb1By
ZXNlbnRhdGlvbk1vZGU6OlBpY3R1cmVJblBpY3R1cmU6CisgICAgY2FzZSBIVE1MVmlkZW9FbGVt
ZW50OjpWaWRlb1ByZXNlbnRhdGlvbk1vZGU6OlBpY3R1cmVJblBpY3R1cmU6CiAgICAgICAgIHJl
dHVybiBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5Q
aWN0dXJlOwotICAgIGNhc2UgVmlkZW9QcmVzZW50YXRpb25Nb2RlOjpJbmxpbmU6CisgICAgY2Fz
ZSBIVE1MVmlkZW9FbGVtZW50OjpWaWRlb1ByZXNlbnRhdGlvbk1vZGU6OklubGluZToKICAgICAg
ICAgcmV0dXJuIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmU7
CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNDMzLDE5ICs0MzMsMTkgQEAg
dm9pZCBIVE1MVmlkZW9FbGVtZW50OjpzZXRGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50
RW51bXM6OlZpZGVvRnVsbHNjcmVlbk0KICAgICBlbnRlckZ1bGxzY3JlZW4obW9kZSk7CiB9CiAK
LXN0YXRpYyBWaWRlb1ByZXNlbnRhdGlvbk1vZGUgdG9QcmVzZW50YXRpb25Nb2RlKEhUTUxNZWRp
YUVsZW1lbnQ6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKK3N0YXRpYyBIVE1MVmlkZW9FbGVt
ZW50OjpWaWRlb1ByZXNlbnRhdGlvbk1vZGUgdG9QcmVzZW50YXRpb25Nb2RlKEhUTUxNZWRpYUVs
ZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQogewogICAgIGlmIChtb2RlID09
IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKQotICAg
ICAgICByZXR1cm4gVmlkZW9QcmVzZW50YXRpb25Nb2RlOjpGdWxsc2NyZWVuOworICAgICAgICBy
ZXR1cm4gSFRNTFZpZGVvRWxlbWVudDo6VmlkZW9QcmVzZW50YXRpb25Nb2RlOjpGdWxsc2NyZWVu
OwogCiAgICAgaWYgKG1vZGUgJiBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVl
bk1vZGVQaWN0dXJlSW5QaWN0dXJlKQotICAgICAgICByZXR1cm4gVmlkZW9QcmVzZW50YXRpb25N
b2RlOjpQaWN0dXJlSW5QaWN0dXJlOworICAgICAgICByZXR1cm4gSFRNTFZpZGVvRWxlbWVudDo6
VmlkZW9QcmVzZW50YXRpb25Nb2RlOjpQaWN0dXJlSW5QaWN0dXJlOwogCiAgICAgaWYgKG1vZGUg
PT0gSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSkKLSAgICAg
ICAgcmV0dXJuIFZpZGVvUHJlc2VudGF0aW9uTW9kZTo6SW5saW5lOworICAgICAgICByZXR1cm4g
SFRNTFZpZGVvRWxlbWVudDo6VmlkZW9QcmVzZW50YXRpb25Nb2RlOjpJbmxpbmU7CiAKICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gVmlkZW9QcmVzZW50YXRpb25Nb2RlOjpJ
bmxpbmU7CisgICAgcmV0dXJuIEhUTUxWaWRlb0VsZW1lbnQ6OlZpZGVvUHJlc2VudGF0aW9uTW9k
ZTo6SW5saW5lOwogfQogCiBWaWRlb1ByZXNlbnRhdGlvbk1vZGUgSFRNTFZpZGVvRWxlbWVudDo6
d2Via2l0UHJlc2VudGF0aW9uTW9kZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVv
RWxlbWVudC5oCmluZGV4IGY0OTMxMzdlYTczMWMyN2M1MDFhZmJjN2QyZDc5NzVhNDBiNjU5OGEu
LjlhMWRmN2JhYmE0NTI0NmQyYzhmMDdlZjg1NTY3YWU1Y2ZlZGU1ZGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCkBAIC0zNCw4ICszNCw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgSFRNTEltYWdlTG9hZGVyOwogCi1lbnVtIGNsYXNzIFZpZGVvUHJlc2Vu
dGF0aW9uTW9kZSB7IEZ1bGxzY3JlZW4sIFBpY3R1cmVJblBpY3R1cmUsIElubGluZSB9OwotCiBj
bGFzcyBIVE1MVmlkZW9FbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxNZWRpYUVsZW1lbnQgewog
cHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRNTFZpZGVvRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIGJvb2wpOwpAQCAtNDMsNyArNDEsNiBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgdmlkZW9XaWR0aCgpIGNvbnN0OwogICAgIFdF
QkNPUkVfRVhQT1JUIHVuc2lnbmVkIHZpZGVvSGVpZ2h0KCkgY29uc3Q7CiAKLSAgICAvLyBGdWxs
c2NyZWVuCiAgICAgdm9pZCB3ZWJraXRFbnRlckZ1bGxzY3JlZW4oRXhjZXB0aW9uQ29kZSYpOwog
ICAgIHZvaWQgd2Via2l0RXhpdEZ1bGxzY3JlZW4oKTsKICAgICBib29sIHdlYmtpdFN1cHBvcnRz
RnVsbHNjcmVlbigpOwpAQCAtNjIsNyArNTksNiBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShNRURJQV9TVEFUSVNUSUNTKQotICAgIC8vIFN0YXRpc3RpY3MKICAgICB1bnNpZ25lZCB3
ZWJraXREZWNvZGVkRnJhbWVDb3VudCgpIGNvbnN0OwogICAgIHVuc2lnbmVkIHdlYmtpdERyb3Bw
ZWRGcmFtZUNvdW50KCkgY29uc3Q7CiAjZW5kaWYKQEAgLTgyLDYgKzc4LDcgQEAgcHVibGljOgog
ICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVy
U3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAKICNpZiBFTkFC
TEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCisgICAgZW51bSBjbGFzcyBWaWRlb1ByZXNlbnRh
dGlvbk1vZGUgeyBGdWxsc2NyZWVuLCBQaWN0dXJlSW5QaWN0dXJlLCBJbmxpbmUgfTsKICAgICBi
b29sIHdlYmtpdFN1cHBvcnRzUHJlc2VudGF0aW9uTW9kZShWaWRlb1ByZXNlbnRhdGlvbk1vZGUp
IGNvbnN0OwogICAgIHZvaWQgd2Via2l0U2V0UHJlc2VudGF0aW9uTW9kZShWaWRlb1ByZXNlbnRh
dGlvbk1vZGUpOwogICAgIFZpZGVvUHJlc2VudGF0aW9uTW9kZSB3ZWJraXRQcmVzZW50YXRpb25N
b2RlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0Vs
ZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmlkbAppbmRl
eCBjM2M3ZTE3NGU5YWUwMDJiZjQ1Y2YxMmU2NTY4OTQzYWFlMTM3ZmI4Li5iODI4NTVlNGNjZTFk
ZTJlZWRhYTBkOTRhODAzNGQzODAzMDA1N2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxWaWRlb0VsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZp
ZGVvRWxlbWVudC5pZGwKQEAgLTIzLDkgKzIzLDYgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAK
LS8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBDb25kaXRpb25hbD1WSURFT19QUkVTRU5UQVRJT05f
TU9ERS4KLWVudW0gVmlkZW9QcmVzZW50YXRpb25Nb2RlIHsgImZ1bGxzY3JlZW4iLCAicGljdHVy
ZS1pbi1waWN0dXJlIiwgImlubGluZSIgfTsKLQogWwogICAgIENvbmRpdGlvbmFsPVZJREVPLAog
ICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCwKQEAgLTYzLDMgKzYwLDUgQEAgZW51bSBWaWRl
b1ByZXNlbnRhdGlvbk1vZGUgeyAiZnVsbHNjcmVlbiIsICJwaWN0dXJlLWluLXBpY3R1cmUiLCAi
aW5saW5lIiB9OwogICAgIFtDb25kaXRpb25hbD1WSURFT19QUkVTRU5UQVRJT05fTU9ERV0gdm9p
ZCB3ZWJraXRTZXRQcmVzZW50YXRpb25Nb2RlKFZpZGVvUHJlc2VudGF0aW9uTW9kZSBtb2RlKTsK
ICNlbmRpZgogfTsKKworW0NvbmRpdGlvbmFsPVZJREVPX1BSRVNFTlRBVElPTl9NT0RFXSBlbnVt
IFZpZGVvUHJlc2VudGF0aW9uTW9kZSB7ICJmdWxsc2NyZWVuIiwgInBpY3R1cmUtaW4tcGljdHVy
ZSIsICJpbmxpbmUiIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCA3ZWE3ZTQ1NDAzODNhMWE5NDU1YTA2
NjhiOGI4YWIwMDFmZmQ1Mzk2Li5mMmFlMGExZjMyZGM1NDdmODQ0YWMzZDU2YWU4MDgxMjhiMTNk
YWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTc2LDkgKzc2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogI2lmIFVTRShDRykKLWNvbnN0IEltYWdl
U21vb3RoaW5nUXVhbGl0eSBkZWZhdWx0U21vb3RoaW5nUXVhbGl0eSA9IEltYWdlU21vb3RoaW5n
UXVhbGl0eTo6TG93OworY29uc3QgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpJbWFnZVNtb290
aGluZ1F1YWxpdHkgZGVmYXVsdFNtb290aGluZ1F1YWxpdHkgPSBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OkltYWdlU21vb3RoaW5nUXVhbGl0eTo6TG93OwogI2Vsc2UKLWNvbnN0IEltYWdlU21v
b3RoaW5nUXVhbGl0eSBkZWZhdWx0U21vb3RoaW5nUXVhbGl0eSA9IEltYWdlU21vb3RoaW5nUXVh
bGl0eTo6TWVkaXVtOworY29uc3QgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpJbWFnZVNtb290
aGluZ1F1YWxpdHkgZGVmYXVsdFNtb290aGluZ1F1YWxpdHkgPSBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OkltYWdlU21vb3RoaW5nUXVhbGl0eTo6TWVkaXVtOwogI2VuZGlmCiAKIHN0YXRpYyBj
b25zdCBpbnQgZGVmYXVsdEZvbnRTaXplID0gMTA7CkBAIC05MzAsMTIgKzkzMCwxMiBAQCBzdGF0
aWMgYm9vbCBpc0Z1bGxDYW52YXNDb21wb3NpdGVNb2RlKENvbXBvc2l0ZU9wZXJhdG9yIG9wKQog
ICAgIHJldHVybiBvcCA9PSBDb21wb3NpdGVTb3VyY2VJbiB8fCBvcCA9PSBDb21wb3NpdGVTb3Vy
Y2VPdXQgfHwgb3AgPT0gQ29tcG9zaXRlRGVzdGluYXRpb25JbiB8fCBvcCA9PSBDb21wb3NpdGVE
ZXN0aW5hdGlvbkF0b3A7CiB9CiAKLXN0YXRpYyBXaW5kUnVsZSB0b1dpbmRSdWxlKENhbnZhc1dp
bmRpbmdSdWxlIHJ1bGUpCitzdGF0aWMgV2luZFJ1bGUgdG9XaW5kUnVsZShDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OldpbmRpbmdSdWxlIHJ1bGUpCiB7Ci0gICAgcmV0dXJuIHJ1bGUgPT0gQ2Fu
dmFzV2luZGluZ1J1bGU6Ok5vbnplcm8gPyBSVUxFX05PTlpFUk8gOiBSVUxFX0VWRU5PREQ7Cisg
ICAgcmV0dXJuIHJ1bGUgPT0gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpXaW5kaW5nUnVsZTo6
Tm9uemVybyA/IFJVTEVfTk9OWkVSTyA6IFJVTEVfRVZFTk9ERDsKIH0KIAotdm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGwoQ2FudmFzV2luZGluZ1J1bGUgd2luZGluZ1J1bGUpCit2
b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbChXaW5kaW5nUnVsZSB3aW5kaW5nUnVs
ZSkKIHsKICAgICBmaWxsSW50ZXJuYWwobV9wYXRoLCB3aW5kaW5nUnVsZSk7CiAKQEAgLTk1Myw3
ICs5NTMsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c3Ryb2tlKCkKICNlbmRp
ZgogfQogCi12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y2xpcChDYW52YXNXaW5kaW5n
UnVsZSB3aW5kaW5nUnVsZSkKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjbGlwKFdp
bmRpbmdSdWxlIHdpbmRpbmdSdWxlKQogewogICAgIGNsaXBJbnRlcm5hbChtX3BhdGgsIHdpbmRp
bmdSdWxlKTsKIApAQCAtOTYyLDcgKzk2Miw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpjbGlwKENhbnZhc1dpbmRpbmdSdWxlIHdpbmRpbmdSdWxlKQogI2VuZGlmCiB9CiAKLXZv
aWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmaWxsKERPTVBhdGgmIHBhdGgsIENhbnZhc1dp
bmRpbmdSdWxlIHdpbmRpbmdSdWxlKQordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZp
bGwoRE9NUGF0aCYgcGF0aCwgV2luZGluZ1J1bGUgd2luZGluZ1J1bGUpCiB7CiAgICAgZmlsbElu
dGVybmFsKHBhdGgucGF0aCgpLCB3aW5kaW5nUnVsZSk7CiB9CkBAIC05NzIsMTIgKzk3MiwxMiBA
QCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c3Ryb2tlKERPTVBhdGgmIHBhdGgpCiAg
ICAgc3Ryb2tlSW50ZXJuYWwocGF0aC5wYXRoKCkpOwogfQogCi12b2lkIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6Y2xpcChET01QYXRoJiBwYXRoLCBDYW52YXNXaW5kaW5nUnVsZSB3aW5kaW5n
UnVsZSkKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjbGlwKERPTVBhdGgmIHBhdGgs
IFdpbmRpbmdSdWxlIHdpbmRpbmdSdWxlKQogewogICAgIGNsaXBJbnRlcm5hbChwYXRoLnBhdGgo
KSwgd2luZGluZ1J1bGUpOwogfQogCi12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Zmls
bEludGVybmFsKGNvbnN0IFBhdGgmIHBhdGgsIENhbnZhc1dpbmRpbmdSdWxlIHdpbmRpbmdSdWxl
KQordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGxJbnRlcm5hbChjb25zdCBQYXRo
JiBwYXRoLCBXaW5kaW5nUnVsZSB3aW5kaW5nUnVsZSkKIHsKICAgICBHcmFwaGljc0NvbnRleHQq
IGMgPSBkcmF3aW5nQ29udGV4dCgpOwogICAgIGlmICghYykKQEAgLTEwNDQsNyArMTA0NCw3IEBA
IHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzdHJva2VJbnRlcm5hbChjb25zdCBQYXRo
JiBwYXRoKQogICAgIH0KIH0KIAotdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsaXBJ
bnRlcm5hbChjb25zdCBQYXRoJiBwYXRoLCBDYW52YXNXaW5kaW5nUnVsZSB3aW5kaW5nUnVsZSkK
K3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjbGlwSW50ZXJuYWwoY29uc3QgUGF0aCYg
cGF0aCwgV2luZGluZ1J1bGUgd2luZGluZ1J1bGUpCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBj
ID0gZHJhd2luZ0NvbnRleHQoKTsKICAgICBpZiAoIWMpCkBAIC0xMDcwLDcgKzEwNzAsNyBAQCBp
bmxpbmUgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmVuZENvbXBvc2l0ZUxheWVyKCkK
ICNlbmRpZgogfQogCi1ib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6aXNQb2ludEluUGF0
aChmbG9hdCB4LCBmbG9hdCB5LCBDYW52YXNXaW5kaW5nUnVsZSB3aW5kaW5nUnVsZSkKK2Jvb2wg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjppc1BvaW50SW5QYXRoKGZsb2F0IHgsIGZsb2F0IHks
IFdpbmRpbmdSdWxlIHdpbmRpbmdSdWxlKQogewogICAgIHJldHVybiBpc1BvaW50SW5QYXRoSW50
ZXJuYWwobV9wYXRoLCB4LCB5LCB3aW5kaW5nUnVsZSk7CiB9CkBAIC0xMDgwLDcgKzEwODAsNyBA
QCBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6aXNQb2ludEluU3Ryb2tlKGZsb2F0IHgs
IGZsb2F0IHkpCiAgICAgcmV0dXJuIGlzUG9pbnRJblN0cm9rZUludGVybmFsKG1fcGF0aCwgeCwg
eSk7CiB9CiAKLWJvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjppc1BvaW50SW5QYXRoKERP
TVBhdGgmIHBhdGgsIGZsb2F0IHgsIGZsb2F0IHksIENhbnZhc1dpbmRpbmdSdWxlIHdpbmRpbmdS
dWxlKQorYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmlzUG9pbnRJblBhdGgoRE9NUGF0
aCYgcGF0aCwgZmxvYXQgeCwgZmxvYXQgeSwgV2luZGluZ1J1bGUgd2luZGluZ1J1bGUpCiB7CiAg
ICAgcmV0dXJuIGlzUG9pbnRJblBhdGhJbnRlcm5hbChwYXRoLnBhdGgoKSwgeCwgeSwgd2luZGlu
Z1J1bGUpOwogfQpAQCAtMTA5MCw3ICsxMDkwLDcgQEAgYm9vbCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OmlzUG9pbnRJblN0cm9rZShET01QYXRoJiBwYXRoLCBmbG9hdCB4LCBmbG9hdCB5KQog
ICAgIHJldHVybiBpc1BvaW50SW5TdHJva2VJbnRlcm5hbChwYXRoLnBhdGgoKSwgeCwgeSk7CiB9
CiAKLWJvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjppc1BvaW50SW5QYXRoSW50ZXJuYWwo
Y29uc3QgUGF0aCYgcGF0aCwgZmxvYXQgeCwgZmxvYXQgeSwgQ2FudmFzV2luZGluZ1J1bGUgd2lu
ZGluZ1J1bGUpCitib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6aXNQb2ludEluUGF0aElu
dGVybmFsKGNvbnN0IFBhdGgmIHBhdGgsIGZsb2F0IHgsIGZsb2F0IHksIFdpbmRpbmdSdWxlIHdp
bmRpbmdSdWxlKQogewogICAgIEdyYXBoaWNzQ29udGV4dCogYyA9IGRyYXdpbmdDb250ZXh0KCk7
CiAgICAgaWYgKCFjKQpAQCAtMjUzNywxNCArMjUzNywxNCBAQCBQbGF0Zm9ybUxheWVyKiBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogfQogI2VuZGlmCiAK
LXN0YXRpYyBJbnRlcnBvbGF0aW9uUXVhbGl0eSBzbW9vdGhpbmdUb0ludGVycG9sYXRpb25RdWFs
aXR5KEltYWdlU21vb3RoaW5nUXVhbGl0eSBxdWFsaXR5KQorc3RhdGljIEludGVycG9sYXRpb25R
dWFsaXR5IHNtb290aGluZ1RvSW50ZXJwb2xhdGlvblF1YWxpdHkoQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpJbWFnZVNtb290aGluZ1F1YWxpdHkgcXVhbGl0eSkKIHsKICAgICBzd2l0Y2ggKHF1
YWxpdHkpIHsKLSAgICBjYXNlIEltYWdlU21vb3RoaW5nUXVhbGl0eTo6TG93OgorICAgIGNhc2Ug
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpJbWFnZVNtb290aGluZ1F1YWxpdHk6OkxvdzoKICAg
ICAgICAgcmV0dXJuIEludGVycG9sYXRpb25Mb3c7Ci0gICAgY2FzZSBJbWFnZVNtb290aGluZ1F1
YWxpdHk6Ok1lZGl1bToKKyAgICBjYXNlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6SW1hZ2VT
bW9vdGhpbmdRdWFsaXR5OjpNZWRpdW06CiAgICAgICAgIHJldHVybiBJbnRlcnBvbGF0aW9uTWVk
aXVtOwotICAgIGNhc2UgSW1hZ2VTbW9vdGhpbmdRdWFsaXR5OjpIaWdoOgorICAgIGNhc2UgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpJbWFnZVNtb290aGluZ1F1YWxpdHk6OkhpZ2g6CiAgICAg
ICAgIHJldHVybiBJbnRlcnBvbGF0aW9uSGlnaDsKICAgICB9CiAKQEAgLTI1NTIsNyArMjU1Miw3
IEBAIHN0YXRpYyBJbnRlcnBvbGF0aW9uUXVhbGl0eSBzbW9vdGhpbmdUb0ludGVycG9sYXRpb25R
dWFsaXR5KEltYWdlU21vb3RoaW5nUXVhbGl0CiAgICAgcmV0dXJuIEludGVycG9sYXRpb25Mb3c7
CiB9OwogCi1JbWFnZVNtb290aGluZ1F1YWxpdHkgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpp
bWFnZVNtb290aGluZ1F1YWxpdHkoKSBjb25zdAorYXV0byBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OmltYWdlU21vb3RoaW5nUXVhbGl0eSgpIGNvbnN0IC0+IEltYWdlU21vb3RoaW5nUXVhbGl0
eQogewogICAgIHJldHVybiBzdGF0ZSgpLmltYWdlU21vb3RoaW5nUXVhbGl0eTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmgKaW5kZXggYmMwNjJhZWVlZDIzNjIwODg4NWYwZDk5ZmJhZWRiOTMzODgyYTk5NS4uOTFiZDg1
NjllMzIyMjM2MWNjNjJkZDE0NWEzZWQyMzZkNDI4NDQ2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKQEAgLTU3LDkg
KzU3LDYgQEAgY2xhc3MgVGV4dE1ldHJpY3M7CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7
CiAKLWVudW0gY2xhc3MgQ2FudmFzV2luZGluZ1J1bGUgeyBOb256ZXJvLCBFdmVub2RkIH07Ci1l
bnVtIGNsYXNzIEltYWdlU21vb3RoaW5nUXVhbGl0eSB7IExvdywgTWVkaXVtLCBIaWdoIH07Ci0K
IGNsYXNzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCBmaW5hbCA6IHB1YmxpYyBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0LCBwdWJsaWMgQ2FudmFzUGF0aE1ldGhvZHMgewogcHVibGljOgogICAgIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRChIVE1MQ2FudmFzRWxlbWVudCosIGJvb2wgdXNlc0NTU0Nv
bXBhdGliaWxpdHlQYXJzZU1vZGUsIGJvb2wgdXNlc0Rhc2hib2FyZENvbXBhdGliaWxpdHlNb2Rl
KTsKQEAgLTEzMSwxOCArMTI4LDIwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYmVnaW5QYXRoKCk7
CiAKLSAgICB2b2lkIGZpbGwoQ2FudmFzV2luZGluZ1J1bGUgPSBDYW52YXNXaW5kaW5nUnVsZTo6
Tm9uemVybyk7CisgICAgZW51bSBjbGFzcyBXaW5kaW5nUnVsZSB7IE5vbnplcm8sIEV2ZW5vZGQg
fTsKKworICAgIHZvaWQgZmlsbChXaW5kaW5nUnVsZSA9IFdpbmRpbmdSdWxlOjpOb256ZXJvKTsK
ICAgICB2b2lkIHN0cm9rZSgpOwotICAgIHZvaWQgY2xpcChDYW52YXNXaW5kaW5nUnVsZSA9IENh
bnZhc1dpbmRpbmdSdWxlOjpOb256ZXJvKTsKKyAgICB2b2lkIGNsaXAoV2luZGluZ1J1bGUgPSBX
aW5kaW5nUnVsZTo6Tm9uemVybyk7CiAKLSAgICB2b2lkIGZpbGwoRE9NUGF0aCYsIENhbnZhc1dp
bmRpbmdSdWxlID0gQ2FudmFzV2luZGluZ1J1bGU6Ok5vbnplcm8pOworICAgIHZvaWQgZmlsbChE
T01QYXRoJiwgV2luZGluZ1J1bGUgPSBXaW5kaW5nUnVsZTo6Tm9uemVybyk7CiAgICAgdm9pZCBz
dHJva2UoRE9NUGF0aCYpOwotICAgIHZvaWQgY2xpcChET01QYXRoJiwgQ2FudmFzV2luZGluZ1J1
bGUgPSBDYW52YXNXaW5kaW5nUnVsZTo6Tm9uemVybyk7CisgICAgdm9pZCBjbGlwKERPTVBhdGgm
LCBXaW5kaW5nUnVsZSA9IFdpbmRpbmdSdWxlOjpOb256ZXJvKTsKIAotICAgIGJvb2wgaXNQb2lu
dEluUGF0aChmbG9hdCB4LCBmbG9hdCB5LCBDYW52YXNXaW5kaW5nUnVsZSA9IENhbnZhc1dpbmRp
bmdSdWxlOjpOb256ZXJvKTsKKyAgICBib29sIGlzUG9pbnRJblBhdGgoZmxvYXQgeCwgZmxvYXQg
eSwgV2luZGluZ1J1bGUgPSBXaW5kaW5nUnVsZTo6Tm9uemVybyk7CiAgICAgYm9vbCBpc1BvaW50
SW5TdHJva2UoZmxvYXQgeCwgZmxvYXQgeSk7CiAKLSAgICBib29sIGlzUG9pbnRJblBhdGgoRE9N
UGF0aCYsIGZsb2F0IHgsIGZsb2F0IHksIENhbnZhc1dpbmRpbmdSdWxlID0gQ2FudmFzV2luZGlu
Z1J1bGU6Ok5vbnplcm8pOworICAgIGJvb2wgaXNQb2ludEluUGF0aChET01QYXRoJiwgZmxvYXQg
eCwgZmxvYXQgeSwgV2luZGluZ1J1bGUgPSBXaW5kaW5nUnVsZTo6Tm9uemVybyk7CiAgICAgYm9v
bCBpc1BvaW50SW5TdHJva2UoRE9NUGF0aCYsIGZsb2F0IHgsIGZsb2F0IHkpOwogCiAgICAgdm9p
ZCBjbGVhclJlY3QoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCk7
CkBAIC0yMjIsNiArMjIxLDcgQEAgcHVibGljOgogICAgIGJvb2wgaW1hZ2VTbW9vdGhpbmdFbmFi
bGVkKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRJbWFnZVNtb290aGluZ0VuYWJsZWQoYm9vbCk7CiAK
KyAgICBlbnVtIGNsYXNzIEltYWdlU21vb3RoaW5nUXVhbGl0eSB7IExvdywgTWVkaXVtLCBIaWdo
IH07CiAgICAgSW1hZ2VTbW9vdGhpbmdRdWFsaXR5IGltYWdlU21vb3RoaW5nUXVhbGl0eSgpIGNv
bnN0OwogICAgIHZvaWQgc2V0SW1hZ2VTbW9vdGhpbmdRdWFsaXR5KEltYWdlU21vb3RoaW5nUXVh
bGl0eSk7CiAKQEAgLTM0NSwxMSArMzQ1LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBiZWdpbkNv
bXBvc2l0ZUxheWVyKCk7CiAgICAgdm9pZCBlbmRDb21wb3NpdGVMYXllcigpOwogCi0gICAgdm9p
ZCBmaWxsSW50ZXJuYWwoY29uc3QgUGF0aCYsIENhbnZhc1dpbmRpbmdSdWxlKTsKKyAgICB2b2lk
IGZpbGxJbnRlcm5hbChjb25zdCBQYXRoJiwgV2luZGluZ1J1bGUpOwogICAgIHZvaWQgc3Ryb2tl
SW50ZXJuYWwoY29uc3QgUGF0aCYpOwotICAgIHZvaWQgY2xpcEludGVybmFsKGNvbnN0IFBhdGgm
LCBDYW52YXNXaW5kaW5nUnVsZSk7CisgICAgdm9pZCBjbGlwSW50ZXJuYWwoY29uc3QgUGF0aCYs
IFdpbmRpbmdSdWxlKTsKIAotICAgIGJvb2wgaXNQb2ludEluUGF0aEludGVybmFsKGNvbnN0IFBh
dGgmLCBmbG9hdCB4LCBmbG9hdCB5LCBDYW52YXNXaW5kaW5nUnVsZSk7CisgICAgYm9vbCBpc1Bv
aW50SW5QYXRoSW50ZXJuYWwoY29uc3QgUGF0aCYsIGZsb2F0IHgsIGZsb2F0IHksIFdpbmRpbmdS
dWxlKTsKICAgICBib29sIGlzUG9pbnRJblN0cm9rZUludGVybmFsKGNvbnN0IFBhdGgmLCBmbG9h
dCB4LCBmbG9hdCB5KTsKIAogICAgIHZvaWQgZHJhd0ZvY3VzSWZOZWVkZWRJbnRlcm5hbChjb25z
dCBQYXRoJiwgRWxlbWVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sRWxlbWVudHMuY3BwCmluZGV4IGQ5YzFmOWRjZTFjMTg3NDRkYmJkZjNjOGNm
OTc1NmFiMzE3YWVlMDQuLmRjNDNlMmM0MzA5ZTkyMjhmNDc5ZDlhYjUxNzExYjQ2MjE1MjhjMTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1l
bnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVt
ZW50cy5jcHAKQEAgLTc2NSw3ICs3NjUsNyBAQCB2b2lkIE1lZGlhQ29udHJvbENsb3NlZENhcHRp
b25zVHJhY2tMaXN0RWxlbWVudDo6dXBkYXRlRGlzcGxheSgpCiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChkaXNwbGF5TW9kZSAhPSBDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzOjpBdXRvbWF0aWMgJiYgdGV4dFRyYWNrLT5tb2RlKCkgPT0gVGV4dFRyYWNrTW9k
ZTo6U2hvd2luZykgeworICAgICAgICBpZiAoZGlzcGxheU1vZGUgIT0gQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlczo6QXV0b21hdGljICYmIHRleHRUcmFjay0+bW9kZSgpID09IFRleHRUcmFjazo6TW9k
ZTo6U2hvd2luZykgewogICAgICAgICAgICAgdHJhY2tNZW51SXRlbVNlbGVjdGVkID0gdHJ1ZTsK
ICAgICAgICAgICAgIHRyYWNrSXRlbS0+Y2xhc3NMaXN0KCkuYWRkKHNlbGVjdGVkQ2xhc3NWYWx1
ZSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgICAgIH0gZWxzZQpAQCAtMTE3Myw3ICsxMTcz
LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50Ojp1cGRhdGVE
aXNwbGF5KCkKICAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFp
bmVyRWxlbWVudDo6dXBkYXRlRGlzcGxheSglcCkgLSBhZGRpbmcgYW5kIHBvc2l0aW9uaW5nIGN1
ZSAjJXp1OiBcIiVzXCIsIHN0YXJ0PSUuMmYsIGVuZD0lLjJmLCBsaW5lPSUuMmYiLCB0aGlzLCBp
LCBjdWUtPnRleHQoKS51dGY4KCkuZGF0YSgpLCBjdWUtPnN0YXJ0VGltZSgpLCBjdWUtPmVuZFRp
bWUoKSwgY3VlLT5saW5lKCkpOwogCiAgICAgICAgIFJlZlB0cjxWVFRDdWVCb3g+IGRpc3BsYXlC
b3ggPSBjdWUtPmdldERpc3BsYXlUcmVlKG1fdmlkZW9EaXNwbGF5U2l6ZS5zaXplKCksIG1fZm9u
dFNpemUpOwotICAgICAgICBpZiAoY3VlLT50cmFjaygpLT5tb2RlKCkgPT0gVGV4dFRyYWNrTW9k
ZTo6RGlzYWJsZWQpCisgICAgICAgIGlmIChjdWUtPnRyYWNrKCktPm1vZGUoKSA9PSBUZXh0VHJh
Y2s6Ok1vZGU6OkRpc2FibGVkKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgVlRU
UmVnaW9uKiByZWdpb24gPSBjdWUtPnRyYWNrKCktPnJlZ2lvbnMoKS0+Z2V0UmVnaW9uQnlJZChj
dWUtPnJlZ2lvbklkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9J
bmJhbmRUZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0
VHJhY2suY3BwCmluZGV4IDNjMTBhNDRkZDcyNDRlNDhlN2ZjZmYzYjAzMzllOTVkNmUyYjY4MTEu
LmYwNjI4NjJiNDVjZDk0MDY4OTBmZTdkNTAxNGVmMjM3ZGZmMTM4NTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5jcHAKQEAgLTg5LDI3ICs4OSwyNyBA
QCB2b2lkIEluYmFuZFRleHRUcmFjazo6c2V0UHJpdmF0ZShQYXNzUmVmUHRyPEluYmFuZFRleHRU
cmFja1ByaXZhdGU+IHRyYWNrUHJpdmF0ZQogICAgIHVwZGF0ZUtpbmRGcm9tUHJpdmF0ZSgpOwog
fQogCi12b2lkIEluYmFuZFRleHRUcmFjazo6c2V0TW9kZShUZXh0VHJhY2tNb2RlIG1vZGUpCit2
b2lkIEluYmFuZFRleHRUcmFjazo6c2V0TW9kZShNb2RlIG1vZGUpCiB7CiAgICAgVGV4dFRyYWNr
OjpzZXRNb2RlKG1vZGUpOwogICAgIHNldE1vZGVJbnRlcm5hbChtb2RlKTsKIH0KIAotc3RhdGlj
IGlubGluZSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpNb2RlIHRvUHJpdmF0ZShUZXh0VHJhY2tN
b2RlIG1vZGUpCitzdGF0aWMgaW5saW5lIEluYmFuZFRleHRUcmFja1ByaXZhdGU6Ok1vZGUgdG9Q
cml2YXRlKFRleHRUcmFjazo6TW9kZSBtb2RlKQogewogICAgIHN3aXRjaCAobW9kZSkgewotICAg
IGNhc2UgVGV4dFRyYWNrTW9kZTo6RGlzYWJsZWQ6CisgICAgY2FzZSBUZXh0VHJhY2s6Ok1vZGU6
OkRpc2FibGVkOgogICAgICAgICByZXR1cm4gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6RGlzYWJs
ZWQ7Ci0gICAgY2FzZSBUZXh0VHJhY2tNb2RlOjpIaWRkZW46CisgICAgY2FzZSBUZXh0VHJhY2s6
Ok1vZGU6OkhpZGRlbjoKICAgICAgICAgcmV0dXJuIEluYmFuZFRleHRUcmFja1ByaXZhdGU6Okhp
ZGRlbjsKLSAgICBjYXNlIFRleHRUcmFja01vZGU6OlNob3dpbmc6CisgICAgY2FzZSBUZXh0VHJh
Y2s6Ok1vZGU6OlNob3dpbmc6CiAgICAgICAgIHJldHVybiBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
OjpTaG93aW5nOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4g
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6RGlzYWJsZWQ7CiB9CiAKLXZvaWQgSW5iYW5kVGV4dFRy
YWNrOjpzZXRNb2RlSW50ZXJuYWwoVGV4dFRyYWNrTW9kZSBtb2RlKQordm9pZCBJbmJhbmRUZXh0
VHJhY2s6OnNldE1vZGVJbnRlcm5hbChNb2RlIG1vZGUpCiB7CiAgICAgbV9wcml2YXRlLT5zZXRN
b2RlKHRvUHJpdmF0ZShtb2RlKSk7CiB9CkBAIC0xOTYsMjIgKzE5NiwyMiBAQCB2b2lkIEluYmFu
ZFRleHRUcmFjazo6dXBkYXRlS2luZEZyb21Qcml2YXRlKCkKIHsKICAgICBzd2l0Y2ggKG1fcHJp
dmF0ZS0+a2luZCgpKSB7CiAgICAgY2FzZSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpTdWJ0aXRs
ZXM6Ci0gICAgICAgIHNldEtpbmQoVGV4dFRyYWNrS2luZDo6U3VidGl0bGVzKTsKKyAgICAgICAg
c2V0S2luZChLaW5kOjpTdWJ0aXRsZXMpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEluYmFu
ZFRleHRUcmFja1ByaXZhdGU6OkNhcHRpb25zOgotICAgICAgICBzZXRLaW5kKFRleHRUcmFja0tp
bmQ6OkNhcHRpb25zKTsKKyAgICAgICAgc2V0S2luZChLaW5kOjpDYXB0aW9ucyk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6RGVzY3JpcHRpb25zOgot
ICAgICAgICBzZXRLaW5kKFRleHRUcmFja0tpbmQ6OkRlc2NyaXB0aW9ucyk7CisgICAgICAgIHNl
dEtpbmQoS2luZDo6RGVzY3JpcHRpb25zKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbmJh
bmRUZXh0VHJhY2tQcml2YXRlOjpDaGFwdGVyczoKLSAgICAgICAgc2V0S2luZChUZXh0VHJhY2tL
aW5kOjpDaGFwdGVycyk7CisgICAgICAgIHNldEtpbmQoS2luZDo6Q2hhcHRlcnMpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEluYmFuZFRleHRUcmFja1ByaXZhdGU6Ok1ldGFkYXRhOgotICAg
ICAgICBzZXRLaW5kKFRleHRUcmFja0tpbmQ6Ok1ldGFkYXRhKTsKKyAgICAgICAgc2V0S2luZChL
aW5kOjpNZXRhZGF0YSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZTo6Rm9yY2VkOgotICAgICAgICBzZXRLaW5kKFRleHRUcmFja0tpbmQ6OkZvcmNlZCk7
CisgICAgICAgIHNldEtpbmQoS2luZDo6Rm9yY2VkKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpOb25lOgogICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaAppbmRleCBhM2FhMDEwMTYxNWI2Njg5
Yzc5NTVkYjZiNThjNzY0MzE1ZTZiNjJiLi5lNWY4ZDJiNmQxYmZkODU2M2FhZjM2M2Y5ZmFlYzFl
ZTg4Mzk3OTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRl
eHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNr
LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIGJvb2wgY29udGFpbnNPbmx5Rm9yY2Vk
U3VidGl0bGVzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc01haW5Qcm9ncmFtQ29udGVu
dCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNFYXN5VG9SZWFkKCkgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBzZXRNb2RlKFRleHRUcmFja01vZGUpIG92ZXJyaWRlOworICAgIHZvaWQg
c2V0TW9kZShNb2RlKSBvdmVycmlkZTsKICAgICBzaXplX3QgaW5iYW5kVHJhY2tJbmRleCgpOwog
CiAgICAgQXRvbWljU3RyaW5nIGluQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5cGUoKSBjb25z
dCBvdmVycmlkZTsKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIElu
YmFuZFRleHRUcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVGV4dFRyYWNrQ2xpZW50Kiwg
UGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPik7CiAKLSAgICB2b2lkIHNldE1vZGVJ
bnRlcm5hbChUZXh0VHJhY2tNb2RlKTsKKyAgICB2b2lkIHNldE1vZGVJbnRlcm5hbChNb2RlKTsK
ICAgICB2b2lkIHVwZGF0ZUtpbmRGcm9tUHJpdmF0ZSgpOwogCiAgICAgUmVmUHRyPEluYmFuZFRl
eHRUcmFja1ByaXZhdGU+IG1fcHJpdmF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRy
YWNrLmNwcAppbmRleCBhN2Q4MWJlNzE3ZGMxNWZiZmE4OTZiZTY1NjNhYWJiZjQ3NjA2MDlkLi4z
MTg4NzgxZGJmNWY0OTUwMjE3NDRhMDQzOGJjN2E3YjIzOTMwY2E5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2suY3BwCkBAIC0xMDQsMTUgKzEwNCwxNSBAQCBUZXh0VHJhY2s6
OlRleHRUcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBUZXh0VHJhY2tDbGll
bnQqIGNsaWVudCwgYwogICAgICwgbV9yZW5kZXJlZFRyYWNrSW5kZXgoaW52YWxpZFRyYWNrSW5k
ZXgpCiB7CiAgICAgaWYgKGtpbmQgPT0gY2FwdGlvbnNLZXl3b3JkKCkpCi0gICAgICAgIG1fa2lu
ZCA9IFRleHRUcmFja0tpbmQ6OkNhcHRpb25zOworICAgICAgICBtX2tpbmQgPSBLaW5kOjpDYXB0
aW9uczsKICAgICBlbHNlIGlmIChraW5kID09IGNoYXB0ZXJzS2V5d29yZCgpKQotICAgICAgICBt
X2tpbmQgPSBUZXh0VHJhY2tLaW5kOjpDaGFwdGVyczsKKyAgICAgICAgbV9raW5kID0gS2luZDo6
Q2hhcHRlcnM7CiAgICAgZWxzZSBpZiAoa2luZCA9PSBkZXNjcmlwdGlvbnNLZXl3b3JkKCkpCi0g
ICAgICAgIG1fa2luZCA9IFRleHRUcmFja0tpbmQ6OkRlc2NyaXB0aW9uczsKKyAgICAgICAgbV9r
aW5kID0gS2luZDo6RGVzY3JpcHRpb25zOwogICAgIGVsc2UgaWYgKGtpbmQgPT0gZm9yY2VkS2V5
d29yZCgpKQotICAgICAgICBtX2tpbmQgPSBUZXh0VHJhY2tLaW5kOjpGb3JjZWQ7CisgICAgICAg
IG1fa2luZCA9IEtpbmQ6OkZvcmNlZDsKICAgICBlbHNlIGlmIChraW5kID09IG1ldGFkYXRhS2V5
d29yZCgpKQotICAgICAgICBtX2tpbmQgPSBUZXh0VHJhY2tLaW5kOjpNZXRhZGF0YTsKKyAgICAg
ICAgbV9raW5kID0gS2luZDo6TWV0YWRhdGE7CiB9CiAKIFRleHRUcmFjazo6flRleHRUcmFjaygp
CkBAIC0xMzIsNyArMTMyLDcgQEAgVGV4dFRyYWNrOjp+VGV4dFRyYWNrKCkKIAogYm9vbCBUZXh0
VHJhY2s6OmVuYWJsZWQoKSBjb25zdAogewotICAgIHJldHVybiBtX21vZGUgIT0gVGV4dFRyYWNr
TW9kZTo6RGlzYWJsZWQ7CisgICAgcmV0dXJuIG1fbW9kZSAhPSBNb2RlOjpEaXNhYmxlZDsKIH0K
IAogYm9vbCBUZXh0VHJhY2s6OmlzVmFsaWRLaW5kS2V5d29yZChjb25zdCBBdG9taWNTdHJpbmcm
IHZhbHVlKQpAQCAtMTU2LDI0ICsxNTYsMjQgQEAgYm9vbCBUZXh0VHJhY2s6OmlzVmFsaWRLaW5k
S2V5d29yZChjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogY29uc3QgQXRvbWljU3RyaW5nJiBU
ZXh0VHJhY2s6OmtpbmRLZXl3b3JkKCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKG1fa2luZCkgewot
ICAgIGNhc2UgVGV4dFRyYWNrS2luZDo6Q2FwdGlvbnM6CisgICAgY2FzZSBLaW5kOjpDYXB0aW9u
czoKICAgICAgICAgcmV0dXJuIGNhcHRpb25zS2V5d29yZCgpOwotICAgIGNhc2UgVGV4dFRyYWNr
S2luZDo6Q2hhcHRlcnM6CisgICAgY2FzZSBLaW5kOjpDaGFwdGVyczoKICAgICAgICAgcmV0dXJu
IGNoYXB0ZXJzS2V5d29yZCgpOwotICAgIGNhc2UgVGV4dFRyYWNrS2luZDo6RGVzY3JpcHRpb25z
OgorICAgIGNhc2UgS2luZDo6RGVzY3JpcHRpb25zOgogICAgICAgICByZXR1cm4gZGVzY3JpcHRp
b25zS2V5d29yZCgpOwotICAgIGNhc2UgVGV4dFRyYWNrS2luZDo6Rm9yY2VkOgorICAgIGNhc2Ug
S2luZDo6Rm9yY2VkOgogICAgICAgICByZXR1cm4gZm9yY2VkS2V5d29yZCgpOwotICAgIGNhc2Ug
VGV4dFRyYWNrS2luZDo6TWV0YWRhdGE6CisgICAgY2FzZSBLaW5kOjpNZXRhZGF0YToKICAgICAg
ICAgcmV0dXJuIG1ldGFkYXRhS2V5d29yZCgpOwotICAgIGNhc2UgVGV4dFRyYWNrS2luZDo6U3Vi
dGl0bGVzOgorICAgIGNhc2UgS2luZDo6U3VidGl0bGVzOgogICAgICAgICByZXR1cm4gc3VidGl0
bGVzS2V5d29yZCgpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1
cm4gc3VidGl0bGVzS2V5d29yZCgpOwogfQogCi12b2lkIFRleHRUcmFjazo6c2V0S2luZChUZXh0
VHJhY2tLaW5kIG5ld0tpbmQpCit2b2lkIFRleHRUcmFjazo6c2V0S2luZChLaW5kIG5ld0tpbmQp
CiB7CiAgICAgYXV0byBvbGRLaW5kID0gbV9raW5kOwogCkBAIC0yMDMsMjggKzIwMywyOCBAQCB2
b2lkIFRleHRUcmFjazo6c2V0S2luZChUZXh0VHJhY2tLaW5kIG5ld0tpbmQpCiB2b2lkIFRleHRU
cmFjazo6c2V0S2luZEtleXdvcmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IGtleXdvcmQp
CiB7CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGtleXdvcmQsICJjYXB0
aW9ucyIpKQotICAgICAgICBzZXRLaW5kKFRleHRUcmFja0tpbmQ6OkNhcHRpb25zKTsKKyAgICAg
ICAgc2V0S2luZChLaW5kOjpDYXB0aW9ucyk7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2Uoa2V5d29yZCwgImNoYXB0ZXJzIikpCi0gICAgICAgIHNldEtpbmQoVGV4
dFRyYWNrS2luZDo6Q2hhcHRlcnMpOworICAgICAgICBzZXRLaW5kKEtpbmQ6OkNoYXB0ZXJzKTsK
ICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShrZXl3b3JkLCAiZGVz
Y3JpcHRpb25zIikpCi0gICAgICAgIHNldEtpbmQoVGV4dFRyYWNrS2luZDo6RGVzY3JpcHRpb25z
KTsKKyAgICAgICAgc2V0S2luZChLaW5kOjpEZXNjcmlwdGlvbnMpOwogICAgIGVsc2UgaWYgKGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGtleXdvcmQsICJmb3JjZWQiKSkKLSAgICAgICAg
c2V0S2luZChUZXh0VHJhY2tLaW5kOjpGb3JjZWQpOworICAgICAgICBzZXRLaW5kKEtpbmQ6OkZv
cmNlZCk7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoa2V5d29y
ZCwgIm1ldGFkYXRhIikpCi0gICAgICAgIHNldEtpbmQoVGV4dFRyYWNrS2luZDo6TWV0YWRhdGEp
OworICAgICAgICBzZXRLaW5kKEtpbmQ6Ok1ldGFkYXRhKTsKICAgICBlbHNlIGlmIChlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShrZXl3b3JkLCAic3VidGl0bGVzIikpCi0gICAgICAgIHNl
dEtpbmQoVGV4dFRyYWNrS2luZDo6U3VidGl0bGVzKTsKKyAgICAgICAgc2V0S2luZChLaW5kOjpT
dWJ0aXRsZXMpOwogI2lmICFFTkFCTEUoTUVESUFfU09VUkNFKQogICAgIC8vIEZJWE1FOiBUaGlz
IHByZXNlcnZlcyB0aGUgYmVoYXZpb3Igb2YgYW4gb2xkZXIgdmVyc2lvbiBvZiB0aGlzIGNvZGUg
YmVmb3JlIHJlZmFjdG9yaW5nLgogICAgIC8vICFFTkFCTEUoTUVESUFfU09VUkNFKTogdW5rbm93
biBrZXl3b3JkcyBhbGwgZ2V0IHR1cm5lZCBpbnRvIFN1YnRpdGxlcy4KICAgICAvLyBFTkFCTEUo
TUVESUFfU09VUkNFKTogdW5rbm93biBrZXl3b3JkcyBsZWF2ZSB0aGUgb2xkIHZhbHVlIGZvciBr
aW5kIHVudG91Y2hlZC4KICAgICAvLyBJIGFtIG5vdCBzdXJlIHRoYXQgZWl0aGVyIG9mIHRob3Nl
IGlzIHRoZSBjb3JyZWN0IGJlaGF2aW9yOyBzaG91bGQgdGVzdCBhbmQgZml4LgogICAgIGVsc2UK
LSAgICAgICAgc2V0S2luZChUZXh0VHJhY2tLaW5kOjpTdWJ0aXRsZXMpOworICAgICAgICBzZXRL
aW5kKEtpbmQ6OlN1YnRpdGxlcyk7CiAjZW5kaWYKIH0KIAotdm9pZCBUZXh0VHJhY2s6OnNldE1v
ZGUoVGV4dFRyYWNrTW9kZSBtb2RlKQordm9pZCBUZXh0VHJhY2s6OnNldE1vZGUoTW9kZSBtb2Rl
KQogewogICAgIC8vIE9uIHNldHRpbmcsIGlmIHRoZSBuZXcgdmFsdWUgaXNuJ3QgZXF1YWwgdG8g
d2hhdCB0aGUgYXR0cmlidXRlIHdvdWxkIGN1cnJlbnRseQogICAgIC8vIHJldHVybiwgdGhlIG5l
dyB2YWx1ZSBtdXN0IGJlIHByb2Nlc3NlZCBhcyBmb2xsb3dzIC4uLgpAQCAtMjMzLDEwICsyMzMs
MTAgQEAgdm9pZCBUZXh0VHJhY2s6OnNldE1vZGUoVGV4dFRyYWNrTW9kZSBtb2RlKQogCiAgICAg
Ly8gSWYgbW9kZSBjaGFuZ2VzIHRvIGRpc2FibGVkLCByZW1vdmUgdGhpcyB0cmFjaydzIGN1ZXMg
ZnJvbSB0aGUgY2xpZW50CiAgICAgLy8gYmVjYXVzZSB0aGV5IHdpbGwgbm8gbG9uZ2VyIGJlIGFj
Y2Vzc2libGUgZnJvbSB0aGUgY3VlcygpIGZ1bmN0aW9uLgotICAgIGlmIChtb2RlID09IFRleHRU
cmFja01vZGU6OkRpc2FibGVkICYmIG1fY2xpZW50ICYmIG1fY3VlcykKKyAgICBpZiAobW9kZSA9
PSBNb2RlOjpEaXNhYmxlZCAmJiBtX2NsaWVudCAmJiBtX2N1ZXMpCiAgICAgICAgIG1fY2xpZW50
LT50ZXh0VHJhY2tSZW1vdmVDdWVzKHRoaXMsIG1fY3Vlcy5nZXQoKSk7CiAKLSAgICBpZiAobW9k
ZSAhPSBUZXh0VHJhY2tNb2RlOjpTaG93aW5nICYmIG1fY3VlcykgeworICAgIGlmIChtb2RlICE9
IE1vZGU6OlNob3dpbmcgJiYgbV9jdWVzKSB7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9jdWVzLT5sZW5ndGgoKTsgKytpKSB7CiAgICAgICAgICAgICBUZXh0VHJhY2tDdWUqIGN1
ZSA9IG1fY3Vlcy0+aXRlbShpKTsKICAgICAgICAgICAgIGlmIChjdWUtPmlzUmVuZGVyYWJsZSgp
KQpAQCAtMjU3LDcgKzI1Nyw3IEBAIFRleHRUcmFja0N1ZUxpc3QqIFRleHRUcmFjazo6Y3Vlcygp
CiAgICAgLy8gT3RoZXJ3aXNlLCBpdCBtdXN0IHJldHVybiBudWxsLiBXaGVuIGFuIG9iamVjdCBp
cyByZXR1cm5lZCwgdGhlCiAgICAgLy8gc2FtZSBvYmplY3QgbXVzdCBiZSByZXR1cm5lZCBlYWNo
IHRpbWUuCiAgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJl
bnQtd29yay8jZG9tLXRleHR0cmFjay1jdWVzCi0gICAgaWYgKG1fbW9kZSA9PSBUZXh0VHJhY2tN
b2RlOjpEaXNhYmxlZCkKKyAgICBpZiAobV9tb2RlID09IE1vZGU6OkRpc2FibGVkKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gJmVuc3VyZVRleHRUcmFja0N1ZUxpc3QoKTsK
IH0KQEAgLTI4NCw3ICsyODQsNyBAQCBUZXh0VHJhY2tDdWVMaXN0KiBUZXh0VHJhY2s6OmFjdGl2
ZUN1ZXMoKSBjb25zdAogICAgIC8vIG9yZGVyLiBPdGhlcndpc2UsIGl0IG11c3QgcmV0dXJuIG51
bGwuIFdoZW4gYW4gb2JqZWN0IGlzIHJldHVybmVkLCB0aGUKICAgICAvLyBzYW1lIG9iamVjdCBt
dXN0IGJlIHJldHVybmVkIGVhY2ggdGltZS4KICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcv
c3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNkb20tdGV4dHRyYWNrLWFjdGl2ZWN1ZXMKLSAg
ICBpZiAoIW1fY3VlcyB8fCBtX21vZGUgPT0gVGV4dFRyYWNrTW9kZTo6RGlzYWJsZWQpCisgICAg
aWYgKCFtX2N1ZXMgfHwgbV9tb2RlID09IE1vZGU6OkRpc2FibGVkKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICByZXR1cm4gbV9jdWVzLT5hY3RpdmVDdWVzKCk7CiB9CkBAIC0zMDIsNyAr
MzAyLDcgQEAgdm9pZCBUZXh0VHJhY2s6OmFkZEN1ZShQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4g
cHJwQ3VlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAvLyBJZiBhIERhdGFDdWUgaXMgYWRkZWQg
dG8gYSBUZXh0VHJhY2sgdmlhIHRoZSBhZGRDdWUoKSBtZXRob2QgYnV0IHRoZSB0ZXh0IHRyYWNr
IGRvZXMgbm90IGhhdmUgaXRzIHRleHQKICAgICAvLyB0cmFjayBraW5kIHNldCB0byBtZXRhZGF0
YSwgdGhyb3cgYSBJbnZhbGlkTm9kZVR5cGVFcnJvciBleGNlcHRpb24gYW5kIGRvbid0IGFkZCB0
aGUgY3VlIHRvIHRoZSBUZXh0VHJhY2tMaXN0CiAgICAgLy8gb2YgdGhlIFRleHRUcmFjay4KLSAg
ICBpZiAoY3VlLT5jdWVUeXBlKCkgPT0gVGV4dFRyYWNrQ3VlOjpEYXRhICYmIG1fa2luZCAhPSBU
ZXh0VHJhY2tLaW5kOjpNZXRhZGF0YSkgeworICAgIGlmIChjdWUtPmN1ZVR5cGUoKSA9PSBUZXh0
VHJhY2tDdWU6OkRhdGEgJiYgbV9raW5kICE9IEtpbmQ6Ok1ldGFkYXRhKSB7CiAgICAgICAgIGVj
ID0gSU5WQUxJRF9OT0RFX1RZUEVfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzcy
LDcgKzM3Miw3IEBAIFZUVFJlZ2lvbkxpc3QqIFRleHRUcmFjazo6cmVnaW9ucygpCiAgICAgLy8g
dGhlIHRleHQgdHJhY2sgbGlzdCBvZiByZWdpb25zIG9mIHRoZSB0ZXh0IHRyYWNrLiBPdGhlcndp
c2UsIGl0IG11c3QKICAgICAvLyByZXR1cm4gbnVsbC4gV2hlbiBhbiBvYmplY3QgaXMgcmV0dXJu
ZWQsIHRoZSBzYW1lIG9iamVjdCBtdXN0IGJlIHJldHVybmVkCiAgICAgLy8gZWFjaCB0aW1lLgot
ICAgIGlmIChtX21vZGUgPT0gVGV4dFRyYWNrTW9kZTo6RGlzYWJsZWQpCisgICAgaWYgKG1fbW9k
ZSA9PSBNb2RlOjpEaXNhYmxlZCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJu
ICZlbnN1cmVWVFRSZWdpb25MaXN0KCk7CiB9CkBAIC00NjcsOCArNDY3LDggQEAgdm9pZCBUZXh0
VHJhY2s6OmludmFsaWRhdGVUcmFja0luZGV4KCkKIAogYm9vbCBUZXh0VHJhY2s6OmlzUmVuZGVy
ZWQoKQogewotICAgIHJldHVybiAobV9raW5kID09IFRleHRUcmFja0tpbmQ6OkNhcHRpb25zIHx8
IG1fa2luZCA9PSBUZXh0VHJhY2tLaW5kOjpTdWJ0aXRsZXMgfHwgbV9raW5kID09IFRleHRUcmFj
a0tpbmQ6OkZvcmNlZCkKLSAgICAgICAgJiYgbV9tb2RlID09IFRleHRUcmFja01vZGU6OlNob3dp
bmc7CisgICAgcmV0dXJuIChtX2tpbmQgPT0gS2luZDo6Q2FwdGlvbnMgfHwgbV9raW5kID09IEtp
bmQ6OlN1YnRpdGxlcyB8fCBtX2tpbmQgPT0gS2luZDo6Rm9yY2VkKQorICAgICAgICAmJiBtX21v
ZGUgPT0gTW9kZTo6U2hvd2luZzsKIH0KIAogVGV4dFRyYWNrQ3VlTGlzdCYgVGV4dFRyYWNrOjpl
bnN1cmVUZXh0VHJhY2tDdWVMaXN0KCkKQEAgLTU1MywxMiArNTUzLDEyIEBAIGJvb2wgVGV4dFRy
YWNrOjppc01haW5Qcm9ncmFtQ29udGVudCgpIGNvbnN0CiAgICAgLy8gZGlyZWN0b3JzIGNvbW1l
bnRhcnkgaXMgbm90ICJtYWluIHByb2dyYW0iIGJlY2F1c2UgaXQgaXMgbm90IGVzc2VudGlhbCBm
b3IgdGhlIHByZXNlbnRhdGlvbi4gSFRNTDUgZG9lc24ndCBoYXZlCiAgICAgLy8gYSB3YXkgdG8g
ZXhwcmVzcyB0aGlzIGluIGEgbWFjaGluZS1yZWFibGUgZm9ybSwgaXQgaXMgdHlwaWNhbGx5IGRv
bmUgd2l0aCB0aGUgdHJhY2sgbGFiZWwsIHNvIHdlIGFzc3VtZSB0aGF0IGNhcHRpb24KICAgICAv
LyB0cmFja3MgYXJlIG1haW4gY29udGVudCBhbmQgYWxsIG90aGVyIHRyYWNrIHR5cGVzIGFyZSBu
b3QuCi0gICAgcmV0dXJuIG1fa2luZCA9PSBUZXh0VHJhY2tLaW5kOjpDYXB0aW9uczsKKyAgICBy
ZXR1cm4gbV9raW5kID09IEtpbmQ6OkNhcHRpb25zOwogfQogCiBib29sIFRleHRUcmFjazo6Y29u
dGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9raW5kID09
IFRleHRUcmFja0tpbmQ6OkZvcmNlZDsKKyAgICByZXR1cm4gbV9raW5kID09IEtpbmQ6OkZvcmNl
ZDsKIH0KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2suaAppbmRleCA1Y2IyNDkwNTBmOGUxYjYzOTU4Mzk3MDA0ZjE1NjQxNzEwZGZkNmMw
Li43ODE4ZDIyNDdhYWQxNmE1NTMzYzMzMzYzNDBiZGQ4ZmFlZWJlODVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrLmgKQEAgLTQyLDkgKzQyLDYgQEAgY2xhc3MgVGV4dFRyYWNr
Q3VlTGlzdDsKIGNsYXNzIFZUVFJlZ2lvbjsKIGNsYXNzIFZUVFJlZ2lvbkxpc3Q7CiAKLWVudW0g
Y2xhc3MgVGV4dFRyYWNrS2luZCB7IFN1YnRpdGxlcywgQ2FwdGlvbnMsIERlc2NyaXB0aW9ucywg
Q2hhcHRlcnMsIE1ldGFkYXRhLCBGb3JjZWQgfTsKLWVudW0gY2xhc3MgVGV4dFRyYWNrTW9kZSB7
IERpc2FibGVkLCBIaWRkZW4sIFNob3dpbmcgfTsKLQogY2xhc3MgVGV4dFRyYWNrQ2xpZW50IHsK
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5UZXh0VHJhY2tDbGllbnQoKSB7IH0KQEAgLTc3LDE5ICs3
NCwyMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgaGlkZGVuS2V5
d29yZCgpOwogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHNob3dpbmdLZXl3b3JkKCk7
CiAKLSAgICBUZXh0VHJhY2tLaW5kIGtpbmQoKSBjb25zdDsKLSAgICB2b2lkIHNldEtpbmQoVGV4
dFRyYWNrS2luZCk7CisgICAgZW51bSBjbGFzcyBLaW5kIHsgU3VidGl0bGVzLCBDYXB0aW9ucywg
RGVzY3JpcHRpb25zLCBDaGFwdGVycywgTWV0YWRhdGEsIEZvcmNlZCB9OworICAgIEtpbmQga2lu
ZCgpIGNvbnN0OworICAgIHZvaWQgc2V0S2luZChLaW5kKTsKIAotICAgIFRleHRUcmFja0tpbmQg
a2luZEZvckJpbmRpbmdzKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRLaW5kRm9yQmluZGluZ3MoVGV4
dFRyYWNrS2luZCk7CisgICAgS2luZCBraW5kRm9yQmluZGluZ3MoKSBjb25zdDsKKyAgICB2b2lk
IHNldEtpbmRGb3JCaW5kaW5ncyhLaW5kKTsKIAogICAgIGNvbnN0IEF0b21pY1N0cmluZyYga2lu
ZEtleXdvcmQoKSBjb25zdDsKICAgICB2b2lkIHNldEtpbmRLZXl3b3JkSWdub3JpbmdBU0NJSUNh
c2UoU3RyaW5nVmlldyk7CiAKICAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBpbkJhbmRNZXRhZGF0
YVRyYWNrRGlzcGF0Y2hUeXBlKCkgY29uc3QgeyByZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQogCi0g
ICAgVGV4dFRyYWNrTW9kZSBtb2RlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHNldE1vZGUo
VGV4dFRyYWNrTW9kZSk7CisgICAgZW51bSBjbGFzcyBNb2RlIHsgRGlzYWJsZWQsIEhpZGRlbiwg
U2hvd2luZyB9OworICAgIE1vZGUgbW9kZSgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRN
b2RlKE1vZGUpOwogCiAgICAgZW51bSBSZWFkaW5lc3NTdGF0ZSB7IE5vdExvYWRlZCA9IDAsIExv
YWRpbmcgPSAxLCBMb2FkZWQgPSAyLCBGYWlsZWRUb0xvYWQgPSAzIH07CiAgICAgUmVhZGluZXNz
U3RhdGUgcmVhZGluZXNzU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3JlYWRpbmVzc1N0YXRlOyB9
CkBAIC0xNjQsOCArMTYzLDggQEAgcHJpdmF0ZToKICAgICBUZXh0VHJhY2tDdWVMaXN0JiBlbnN1
cmVUZXh0VHJhY2tDdWVMaXN0KCk7CiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ7Ci0gICAgVGV4dFRyYWNrTW9kZSBtX21vZGUgeyBUZXh0VHJh
Y2tNb2RlOjpEaXNhYmxlZCB9OwotICAgIFRleHRUcmFja0tpbmQgbV9raW5kIHsgVGV4dFRyYWNr
S2luZDo6U3VidGl0bGVzIH07CisgICAgTW9kZSBtX21vZGUgeyBNb2RlOjpEaXNhYmxlZCB9Owor
ICAgIEtpbmQgbV9raW5kIHsgS2luZDo6U3VidGl0bGVzIH07CiAgICAgVGV4dFRyYWNrQ2xpZW50
KiBtX2NsaWVudDsKICAgICBUZXh0VHJhY2tUeXBlIG1fdHJhY2tUeXBlOwogICAgIFJlYWRpbmVz
c1N0YXRlIG1fcmVhZGluZXNzU3RhdGUgeyBOb3RMb2FkZWQgfTsKQEAgLTE4MCwyNCArMTc5LDI0
IEBAIGlubGluZSBUZXh0VHJhY2sqIHRvVGV4dFRyYWNrKFRyYWNrQmFzZSogdHJhY2spCiAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PFRleHRUcmFjayo+KHRyYWNrKTsKIH0KIAotaW5saW5lIFRleHRU
cmFja01vZGUgVGV4dFRyYWNrOjptb2RlKCkgY29uc3QKK2lubGluZSBhdXRvIFRleHRUcmFjazo6
bW9kZSgpIGNvbnN0IC0+IE1vZGUKIHsKICAgICByZXR1cm4gbV9tb2RlOwogfQogCi1pbmxpbmUg
VGV4dFRyYWNrS2luZCBUZXh0VHJhY2s6OmtpbmQoKSBjb25zdAoraW5saW5lIGF1dG8gVGV4dFRy
YWNrOjpraW5kKCkgY29uc3QgLT4gS2luZAogewogICAgIHJldHVybiBtX2tpbmQ7CiB9CiAKLWlu
bGluZSBUZXh0VHJhY2tLaW5kIFRleHRUcmFjazo6a2luZEZvckJpbmRpbmdzKCkgY29uc3QKK2lu
bGluZSBhdXRvIFRleHRUcmFjazo6a2luZEZvckJpbmRpbmdzKCkgY29uc3QgLT4gS2luZAogewog
ICAgIHJldHVybiBraW5kKCk7CiB9CiAKICNpZiAhRU5BQkxFKE1FRElBX1NPVVJDRSkKIAotaW5s
aW5lIHZvaWQgVGV4dFRyYWNrOjpzZXRLaW5kRm9yQmluZGluZ3MoVGV4dFRyYWNrS2luZCkKK2lu
bGluZSB2b2lkIFRleHRUcmFjazo6c2V0S2luZEZvckJpbmRpbmdzKEtpbmQpCiB7CiAgICAgLy8g
RklYTUU6IFdlIGFyZSB1c2luZyBraW5kRm9yQmluZGluZ3Mgb25seSB0byBpbXBsZW1lbnQgdGhp
cyBlbXB0eSBmdW5jdGlvbiwgcHJlc2VydmluZyB0aGUKICAgICAvLyBiZWhhdmlvciBvZiBkb2lu
ZyBub3RoaW5nIHdoZW4gdHJ5aW5nIHRvIHNldCB0aGUga2luZCwgb3JpZ2luYWxseSBpbXBsZW1l
bnRlZCBpbiBhIGN1c3RvbSBzZXR0ZXIuCkBAIC0yMDYsNyArMjA1LDcgQEAgaW5saW5lIHZvaWQg
VGV4dFRyYWNrOjpzZXRLaW5kRm9yQmluZGluZ3MoVGV4dFRyYWNrS2luZCkKIAogI2Vsc2UKIAot
aW5saW5lIHZvaWQgVGV4dFRyYWNrOjpzZXRLaW5kRm9yQmluZGluZ3MoVGV4dFRyYWNrS2luZCBr
aW5kKQoraW5saW5lIHZvaWQgVGV4dFRyYWNrOjpzZXRLaW5kRm9yQmluZGluZ3MoS2luZCBraW5k
KQogewogICAgIHNldEtpbmQoa2luZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFja0N1ZS5jcHAKaW5kZXggNDI3MzZmYjNiOWU0ZDJlMzM5MDYzY2Y3ZDY5NzI3NmMwZjMz
MTdkOS4uYjdlZTIyNWY1ZjE4ZDY2ZjU2OWJmYWNhODFhYTE2ZWRmODA5OGFkMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcApAQCAtMTkzLDcgKzE5Myw3IEBA
IHZvaWQgVGV4dFRyYWNrQ3VlOjppbnZhbGlkYXRlQ3VlSW5kZXgoKQogYm9vbCBUZXh0VHJhY2tD
dWU6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQogewogICAgIC8vIFdoZW4gYSBUZXh0VHJh
Y2sncyBtb2RlIGlzIGRpc2FibGVkOiBubyBjdWVzIGFyZSBhY3RpdmUsIG5vIGV2ZW50cyBmaXJl
ZC4KLSAgICBpZiAoIXRyYWNrKCkgfHwgdHJhY2soKS0+bW9kZSgpID09IFRleHRUcmFja01vZGU6
OkRpc2FibGVkKQorICAgIGlmICghdHJhY2soKSB8fCB0cmFjaygpLT5tb2RlKCkgPT0gVGV4dFRy
YWNrOjpNb2RlOjpEaXNhYmxlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJu
IEV2ZW50VGFyZ2V0OjpkaXNwYXRjaEV2ZW50KGV2ZW50KTsKQEAgLTIwMSw3ICsyMDEsNyBAQCBi
b29sIFRleHRUcmFja0N1ZTo6ZGlzcGF0Y2hFdmVudChFdmVudCYgZXZlbnQpCiAKIGJvb2wgVGV4
dFRyYWNrQ3VlOjppc0FjdGl2ZSgpCiB7Ci0gICAgcmV0dXJuIG1faXNBY3RpdmUgJiYgdHJhY2so
KSAmJiB0cmFjaygpLT5tb2RlKCkgIT0gVGV4dFRyYWNrTW9kZTo6RGlzYWJsZWQ7CisgICAgcmV0
dXJuIG1faXNBY3RpdmUgJiYgdHJhY2soKSAmJiB0cmFjaygpLT5tb2RlKCkgIT0gVGV4dFRyYWNr
OjpNb2RlOjpEaXNhYmxlZDsKIH0KIAogdm9pZCBUZXh0VHJhY2tDdWU6OnNldElzQWN0aXZlKGJv
b2wgYWN0aXZlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTmV0d29y
a2luZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZU5ldHdvcmtpbmdDb250
ZXh0LmgKaW5kZXggZmY1MWIzYmNkYjViMmM4MDM4MjFiNzg5NjYxNjQyMjU0NTlkMjA4Yy4uZDg3
Y2Y5ZTFmY2NlMTBjNDJjMmQ5YWY1MjMzZmM1N2VmYjA1ZThmOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCkBAIC0zOSw3ICszOSw3IEBAIHB1
YmxpYzoKICAgICAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAK
LSAgICAgICAgcmV0dXJuIG1fZnJhbWUtPmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCkgPT0g
UmVmZXJyZXJIZWFkZXJQb2xpY3k6OkRlZmF1bHQ7CisgICAgICAgIHJldHVybiBtX2ZyYW1lLT5k
b2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpID09IFJlZmVycmVyUG9saWN5OjpEZWZhdWx0Owog
ICAgIH0KIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0
aW9uVXNlclByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQ
cmVmZXJlbmNlcy5jcHAKaW5kZXggMWQwNmMyZGQ5MTUyOWZlYzkwZmQzMDkzMjA1MGI5MmIyZDY2
YzJhMS4uOTM1YzFmYjBhNTYwMTQzMTFmMjM0Zjc4Y2RhYjcwNGZiOTI2M2Y4ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3BwCkBAIC0yMTcsNyAr
MjE3LDcgQEAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+PiBDYXB0aW9uVXNlclByZWZlcmVuY2Vz
Ojpzb3J0ZWRUcmFja0xpc3RGb3JNZW51KFRleHRUcmEKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
LCBsZW5ndGggPSB0cmFja0xpc3QtPmxlbmd0aCgpOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAg
ICAgVGV4dFRyYWNrKiB0cmFjayA9IHRyYWNrTGlzdC0+aXRlbShpKTsKICAgICAgICAgYXV0byBr
aW5kID0gdHJhY2stPmtpbmQoKTsKLSAgICAgICAgaWYgKGtpbmQgPT0gVGV4dFRyYWNrS2luZDo6
Q2FwdGlvbnMgfHwga2luZCA9PSBUZXh0VHJhY2tLaW5kOjpEZXNjcmlwdGlvbnMgfHwga2luZCA9
PSBUZXh0VHJhY2tLaW5kOjpTdWJ0aXRsZXMpCisgICAgICAgIGlmIChraW5kID09IFRleHRUcmFj
azo6S2luZDo6Q2FwdGlvbnMgfHwga2luZCA9PSBUZXh0VHJhY2s6OktpbmQ6OkRlc2NyaXB0aW9u
cyB8fCBraW5kID09IFRleHRUcmFjazo6S2luZDo6U3VidGl0bGVzKQogICAgICAgICAgICAgdHJh
Y2tzRm9yTWVudS5hcHBlbmQodHJhY2spOwogICAgIH0KIApAQCAtMjY1LDcgKzI2NSw3IEBAIFZl
Y3RvcjxSZWZQdHI8QXVkaW9UcmFjaz4+IENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNvcnRlZFRy
YWNrTGlzdEZvck1lbnUoQXVkaW9UCiAKIGludCBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp0ZXh0
VHJhY2tTZWxlY3Rpb25TY29yZShUZXh0VHJhY2sqIHRyYWNrLCBIVE1MTWVkaWFFbGVtZW50Kikg
Y29uc3QKIHsKLSAgICBpZiAodHJhY2stPmtpbmQoKSAhPSBUZXh0VHJhY2tLaW5kOjpDYXB0aW9u
cyAmJiB0cmFjay0+a2luZCgpICE9IFRleHRUcmFja0tpbmQ6OlN1YnRpdGxlcykKKyAgICBpZiAo
dHJhY2stPmtpbmQoKSAhPSBUZXh0VHJhY2s6OktpbmQ6OkNhcHRpb25zICYmIHRyYWNrLT5raW5k
KCkgIT0gVGV4dFRyYWNrOjpLaW5kOjpTdWJ0aXRsZXMpCiAgICAgICAgIHJldHVybiAwOwogICAg
IAogICAgIGlmICghdXNlclByZWZlcnNTdWJ0aXRsZXMoKSAmJiAhdXNlclByZWZlcnNDYXB0aW9u
cygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWVkaWFBRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNZWRpYUFGLmNwcAppbmRleCAzZDExNmY5YmNhYjIyYTcxOWQyZWJhNjVjMjYxNGFlYzE5MDFl
ZGM3Li44YmMwMjlkZTdlMzliODljMzU4NjcyZTZjYzYxMjJlM2E0YWU1Y2M2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNw
cApAQCAtNzEwLDcgKzcxMCw3IEBAIGludCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6
dGV4dFRyYWNrU2VsZWN0aW9uU2NvcmUoVGV4dFRyYWNrKiB0cmFjaywgSFRNCiAgICAgYm9vbCBs
ZWdhY3lPdmVycmlkZSA9IG1lZGlhRWxlbWVudC0+d2Via2l0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxl
KCk7CiAgICAgaWYgKGRpc3BsYXlNb2RlID09IEFsd2F5c09uICYmICghdXNlclByZWZlcnNTdWJ0
aXRsZXMoKSAmJiAhdXNlclByZWZlcnNDYXB0aW9ucygpICYmICFsZWdhY3lPdmVycmlkZSkpCiAg
ICAgICAgIHJldHVybiAwOwotICAgIGlmICh0cmFjay0+a2luZCgpICE9IFRleHRUcmFja0tpbmQ6
OkNhcHRpb25zICYmIHRyYWNrLT5raW5kKCkgIT0gVGV4dFRyYWNrS2luZDo6U3VidGl0bGVzICYm
IHRyYWNrLT5raW5kKCkgIT0gVGV4dFRyYWNrS2luZDo6Rm9yY2VkKQorICAgIGlmICh0cmFjay0+
a2luZCgpICE9IFRleHRUcmFjazo6S2luZDo6Q2FwdGlvbnMgJiYgdHJhY2stPmtpbmQoKSAhPSBU
ZXh0VHJhY2s6OktpbmQ6OlN1YnRpdGxlcyAmJiB0cmFjay0+a2luZCgpICE9IFRleHRUcmFjazo6
S2luZDo6Rm9yY2VkKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoIXRyYWNrLT5pc01haW5Q
cm9ncmFtQ29udGVudCgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTc3MSw3ICs3NzEsNyBAQCBp
bnQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OnRleHRUcmFja1NlbGVjdGlvblNjb3Jl
KFRleHRUcmFjayogdHJhY2ssIEhUTQogCiAgICAgaWYgKHVzZXJQcmVmZXJzQ2FwdGlvbnMoKSkg
ewogICAgICAgICAvLyBXaGVuIHRoZSB1c2VyIHByZWZlcnMgYWNjZXNzaWJpbGl0eSB0cmFja3Ms
IHJhbmsgaXMgU0RILCB0aGVuIENDLCB0aGVuIHN1YnRpdGxlcy4KLSAgICAgICAgaWYgKHRyYWNr
LT5raW5kKCkgPT0gVGV4dFRyYWNrS2luZDo6U3VidGl0bGVzKQorICAgICAgICBpZiAodHJhY2st
PmtpbmQoKSA9PSBUZXh0VHJhY2s6OktpbmQ6OlN1YnRpdGxlcykKICAgICAgICAgICAgIHRyYWNr
U2NvcmUgPSAxOwogICAgICAgICBlbHNlIGlmICh0cmFjay0+aXNDbG9zZWRDYXB0aW9ucygpKQog
ICAgICAgICAgICAgdHJhY2tTY29yZSA9IDI7CkBAIC03NzksNyArNzc5LDcgQEAgaW50IENhcHRp
b25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjp0ZXh0VHJhY2tTZWxlY3Rpb25TY29yZShUZXh0VHJh
Y2sqIHRyYWNrLCBIVE0KICAgICAgICAgICAgIHRyYWNrU2NvcmUgPSAzOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIC8vIFdoZW4gdGhlIHVzZXIgcHJlZmVycyB0cmFuc2xhdGlvbiB0cmFja3MsIHJh
bmsgaXMgc3VidGl0bGVzLCB0aGVuIFNESCwgdGhlbiBDQyB0cmFja3MuCi0gICAgICAgIGlmICh0
cmFjay0+a2luZCgpID09IFRleHRUcmFja0tpbmQ6OlN1YnRpdGxlcykKKyAgICAgICAgaWYgKHRy
YWNrLT5raW5kKCkgPT0gVGV4dFRyYWNrOjpLaW5kOjpTdWJ0aXRsZXMpCiAgICAgICAgICAgICB0
cmFja1Njb3JlID0gMzsKICAgICAgICAgZWxzZSBpZiAoIXRyYWNrLT5pc0Nsb3NlZENhcHRpb25z
KCkpCiAgICAgICAgICAgICB0cmFja1Njb3JlID0gMjsKQEAgLTg2NSw3ICs4NjUsNyBAQCBWZWN0
b3I8UmVmUHRyPFRleHRUcmFjaz4+IENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpzb3J0
ZWRUcmFja0xpc3RGb3JNZW51KAogICAgICAgICB9CiAKICAgICAgICAgYXV0byBraW5kID0gdHJh
Y2stPmtpbmQoKTsKLSAgICAgICAgaWYgKGtpbmQgIT0gVGV4dFRyYWNrS2luZDo6Q2FwdGlvbnMg
JiYga2luZCAhPSBUZXh0VHJhY2tLaW5kOjpEZXNjcmlwdGlvbnMgJiYga2luZCAhPSBUZXh0VHJh
Y2tLaW5kOjpTdWJ0aXRsZXMpCisgICAgICAgIGlmIChraW5kICE9IFRleHRUcmFjazo6S2luZDo6
Q2FwdGlvbnMgJiYga2luZCAhPSBUZXh0VHJhY2s6OktpbmQ6OkRlc2NyaXB0aW9ucyAmJiBraW5k
ICE9IFRleHRUcmFjazo6S2luZDo6U3VidGl0bGVzKQogICAgICAgICAgICAgY29udGludWU7CiAK
ICAgICAgICAgaWYgKHRyYWNrLT5jb250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMoKSkgewpAQCAt
ODgxLDcgKzg4MSw3IEBAIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPj4gQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlc01lZGlhQUY6OnNvcnRlZFRyYWNrTGlzdEZvck1lbnUoCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICh0cmFjay0+bW9kZSgpID09IFRleHRUcmFj
a01vZGU6OlNob3dpbmcpIHsKKyAgICAgICAgaWYgKHRyYWNrLT5tb2RlKCkgPT0gVGV4dFRyYWNr
OjpNb2RlOjpTaG93aW5nKSB7CiAgICAgICAgICAgICBMT0coTWVkaWEsICJDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWVkaWFBRjo6c29ydGVkVHJhY2tMaXN0Rm9yTWVudSAtIGFkZGluZyAnJXMnIHRy
YWNrIHdpdGggbGFuZ3VhZ2UgJyVzJyBiZWNhdXNlIGl0IGlzIGFscmVhZHkgdmlzaWJsZSIsIHRy
YWNrLT5raW5kS2V5d29yZCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGxhbmd1YWdlLnV0Zjgo
KS5kYXRhKCkpOwogICAgICAgICAgICAgaWYgKCFsYW5ndWFnZS5pc0VtcHR5KCkpCiAgICAgICAg
ICAgICAgICAgbGFuZ3VhZ2VzSW5jbHVkZWQuYWRkKGxhbmd1YWdlKTsKQEAgLTg5MCw3ICs4OTAs
NyBAQCBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4+IENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRp
YUFGOjpzb3J0ZWRUcmFja0xpc3RGb3JNZW51KAogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFs
YW5ndWFnZS5pc0VtcHR5KCkgJiYgdHJhY2stPmlzTWFpblByb2dyYW1Db250ZW50KCkpIHsKLSAg
ICAgICAgICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5VHJhY2sgPSB0cmFjay0+a2luZCgpID09IFRl
eHRUcmFja0tpbmQ6OkNhcHRpb25zOworICAgICAgICAgICAgYm9vbCBpc0FjY2Vzc2liaWxpdHlU
cmFjayA9IHRyYWNrLT5raW5kKCkgPT0gVGV4dFRyYWNrOjpLaW5kOjpDYXB0aW9uczsKICAgICAg
ICAgICAgIGlmIChwcmVmZXJzQWNjZXNzaWJpbGl0eVRyYWNrcykgewogICAgICAgICAgICAgICAg
IC8vIEluIHRoZSBmaXJzdCBwYXNzLCBpbmNsdWRlIG9ubHkgY2FwdGlvbiB0cmFja3MgaWYgdGhl
IHVzZXIgcHJlZmVycyBhY2Nlc3NpYmlsaXR5IHRyYWNrcy4KICAgICAgICAgICAgICAgICBpZiAo
IWlzQWNjZXNzaWJpbGl0eVRyYWNrICYmIGZpbHRlclRyYWNrTGlzdCkgewpAQCAtOTI2LDcgKzky
Niw3IEBAIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPj4gQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01l
ZGlhQUY6OnNvcnRlZFRyYWNrTGlzdEZvck1lbnUoCiAgICAgICAgICAgICBjb250aW51ZTsKIAog
ICAgICAgICBhdXRvIGtpbmQgPSB0cmFjay0+a2luZCgpOwotICAgICAgICBpZiAoa2luZCAhPSBU
ZXh0VHJhY2tLaW5kOjpDYXB0aW9ucyAmJiBraW5kICE9IFRleHRUcmFja0tpbmQ6OkRlc2NyaXB0
aW9ucyAmJiBraW5kICE9IFRleHRUcmFja0tpbmQ6OlN1YnRpdGxlcykKKyAgICAgICAgaWYgKGtp
bmQgIT0gVGV4dFRyYWNrOjpLaW5kOjpDYXB0aW9ucyAmJiBraW5kICE9IFRleHRUcmFjazo6S2lu
ZDo6RGVzY3JpcHRpb25zICYmIGtpbmQgIT0gVGV4dFRyYWNrOjpLaW5kOjpTdWJ0aXRsZXMpCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAvLyBBbGwgY2FuZGlkYXRlcyB3aXRoIG5v
IGxhbmd1Z2Ugd2VyZSBhZGRlZCB0aGUgZmlyc3QgdGltZSB0aHJvdWdoLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NlY3VyaXR5UG9saWN5LmNwcAppbmRleCAyM2RjZjExY2JlYzdlYWMzZTY1ZDc2M2I0MTI1
ZGJhMTI5NTFkNWY4Li41ZGIyNzNkMmRiZTA3MTBhODYxMThlN2NlYjQzODliNTM0ZmZiNmFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcApAQCAtNjYsNyArNjYsNyBAQCBi
b29sIFNlY3VyaXR5UG9saWN5OjpzaG91bGRIaWRlUmVmZXJyZXIoY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgcmVmZXJyZXIpCiAgICAgcmV0dXJuICFVUkxJc1NlY3VyZVVSTDsKIH0KIAot
U3RyaW5nIFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKFJlZmVycmVySGVh
ZGVyUG9saWN5IHJlZmVycmVyUG9saWN5LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlcikKK1N0cmluZyBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihS
ZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgcmVmZXJyZXIpCiB7CiAgICAgaWYgKHJlZmVycmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwpAQCAtNzUsMTEgKzc1LDExIEBAIFN0cmluZyBTZWN1cml0eVBvbGljeTo6
Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihSZWZlcnJlckhlYWRlclBvbGljeSByZWZlcnJlclBvbGlj
CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIHN3aXRjaCAocmVmZXJyZXJQb2xpY3kp
IHsKLSAgICBjYXNlIFJlZmVycmVySGVhZGVyUG9saWN5OjpOZXZlcjoKKyAgICBjYXNlIFJlZmVy
cmVyUG9saWN5OjpOZXZlcjoKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIGNhc2UgUmVm
ZXJyZXJIZWFkZXJQb2xpY3k6OkFsd2F5czoKKyAgICBjYXNlIFJlZmVycmVyUG9saWN5OjpBbHdh
eXM6CiAgICAgICAgIHJldHVybiByZWZlcnJlcjsKLSAgICBjYXNlIFJlZmVycmVySGVhZGVyUG9s
aWN5OjpPcmlnaW46IHsKKyAgICBjYXNlIFJlZmVycmVyUG9saWN5OjpPcmlnaW46IHsKICAgICAg
ICAgU3RyaW5nIG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHJlZmVy
cmVyKS0+dG9TdHJpbmcoKTsKICAgICAgICAgaWYgKG9yaWdpbiA9PSAibnVsbCIpCiAgICAgICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CkBAIC04Nyw3ICs4Nyw3IEBAIFN0cmluZyBTZWN1cml0eVBv
bGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihSZWZlcnJlckhlYWRlclBvbGljeSByZWZlcnJl
clBvbGljCiAgICAgICAgIC8vIHRvIHR1cm4gaXQgaW50byBhIGNhbm9uaWNhbCBVUkwgd2UgY2Fu
IHVzZSBhcyByZWZlcnJlci4KICAgICAgICAgcmV0dXJuIG9yaWdpbiArICIvIjsKICAgICB9Ci0g
ICAgY2FzZSBSZWZlcnJlckhlYWRlclBvbGljeTo6RGVmYXVsdDoKKyAgICBjYXNlIFJlZmVycmVy
UG9saWN5OjpEZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlQb2xpY3kuaAppbmRleCBhYjZlNjhmMGM1ODc3MTkzZjIwNWVjNDk0N2EzNzEwNDNm
YjAxNjg1Li42YzgxOGZkNjIwYmE1NTE5ODBjYTBlNWRiYzU2NWZiYzU4OTA0MWY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5oCkBAIC0zOCwxNCArMzgsMTQgQEAgY2xhc3MgVVJM
OwogCiBjbGFzcyBTZWN1cml0eVBvbGljeSB7CiBwdWJsaWM6Ci0gICAgLy8gVHJ1ZSBpZiB0aGUg
cmVmZXJyZXIgc2hvdWxkIGJlIG9taXR0ZWQgYWNjb3JkaW5nIHRvIFJlZmVycmVySGVhZGVyUG9s
aWN5OjpEZWZhdWx0LgorICAgIC8vIFRydWUgaWYgdGhlIHJlZmVycmVyIHNob3VsZCBiZSBvbWl0
dGVkIGFjY29yZGluZyB0byBSZWZlcnJlclBvbGljeTo6RGVmYXVsdC4KICAgICAvLyBJZiB5b3Ug
aW50ZW5kIHRvIHNlbmQgYSByZWZlcnJlciBoZWFkZXIsIHlvdSBzaG91bGQgdXNlIGdlbmVyYXRl
UmVmZXJyZXJIZWFkZXIgaW5zdGVhZC4KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBz
aG91bGRIaWRlUmVmZXJyZXIoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlcik7CiAK
ICAgICAvLyBSZXR1cm5zIHRoZSByZWZlcnJlciBtb2RpZmllZCBhY2NvcmRpbmcgdG8gdGhlIHJl
ZmVycmVyIHBvbGljeSBmb3IgYQogICAgIC8vIG5hdmlnYXRpb24gdG8gYSBnaXZlbiBVUkwuIElm
IHRoZSByZWZlcnJlciByZXR1cm5lZCBpcyBlbXB0eSwgdGhlCiAgICAgLy8gcmVmZXJyZXIgaGVh
ZGVyIHNob3VsZCBiZSBvbWl0dGVkLgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcg
Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihSZWZlcnJlckhlYWRlclBvbGljeSwgY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiByZWZlcnJlcik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmlu
ZyBnZW5lcmF0ZVJlZmVycmVySGVhZGVyKFJlZmVycmVyUG9saWN5LCBjb25zdCBVUkwmLCBjb25z
dCBTdHJpbmcmIHJlZmVycmVyKTsKIAogICAgIGVudW0gTG9jYWxMb2FkUG9saWN5IHsKICAgICAg
ICAgQWxsb3dMb2NhbExvYWRzRm9yQWxsLCAvLyBObyByZXN0cmljdGlvbiBvbiBsb2NhbCBsb2Fk
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlZmVycmVyUG9saWN5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWZlcnJlclBvbGljeS5oCmluZGV4IGU1MWM1ODA0
N2I2MjFkNGZmN2MwN2IxMWQ0MDY4OTJjYjRlZjViMjAuLjg3MGMxNjk4N2MzMjZkYWUwNzg1OGZk
OWJlYjk3NGI0ZjQ3YmU4MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Jl
ZmVycmVyUG9saWN5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVmZXJyZXJQb2xp
Y3kuaApAQCAtMzcsOSArMzcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBGSVhNRTogTW92
ZSB0aGlzIHdvcmthcm91bmQgdG8gYSBnbG9iYWwgbG9jYXRpb24sIHBlcmhhcHMgY29uZmlnLmg7
IG1heWJlIGEgR1RLLXNwZWNpZmljIGxvY2F0aW9uLgogI3VuZGVmIEFsd2F5cwogCi0vLyBGSVhN
RTogTWVyZ2UgdGhpcyB3aXRoIHRoZSBSZWZlcnJlclBvbGljeSBkZWZpbmVkIGluIHRoZSBGZXRj
aCBzcGVjaWZpY2F0aW9uLgotLy8gRklYTUU6IFJlbmFtZSBiYWNrIHRvIFJlZmVycmVyUG9saWN5
IGV2ZW4gYmVmb3JlIHRoYXQsIGlmIHdlIGZpbmQgYSB3YXkuCi1lbnVtIGNsYXNzIFJlZmVycmVy
SGVhZGVyUG9saWN5IHsKKy8vIEZJWE1FOiBNZXJnZSB0aGlzIHdpdGggRmV0Y2hPcHRpb25zOjpS
ZWZlcnJlclBvbGljeSwgd2hpY2ggaXMgdGhlIG9uZSBkZWZpbmVkIGluIHRoZSBGZXRjaCBzcGVj
aWZpY2F0aW9uLgorZW51bSBjbGFzcyBSZWZlcnJlclBvbGljeSB7CiAgICAgQWx3YXlzLAogICAg
IERlZmF1bHQsCiAgICAgTmV2ZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50
Lm1tCmluZGV4IDc1NGViMWUzZDc0MDUyODY2NzA0MjM3YTAyOGQ2NjY2NWFlMTMxYTkuLjAyOTll
N2EzMjI5YTNkMWJmMDc3OTI3YzZjMjUxMmQwNDcyNmNmZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsTWVkaWFFbGVtZW50Lm1tCkBAIC0xNTgsOSArMTU4LDkgQEAgdm9pZCBXZWJQbGF5YmFj
a1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6dXBkYXRlRm9yRXZlbnROYW1lKGNvbnN0IFdURjo6
QXRvbWljU3QKIAogICAgICAgICBpZiAobV9tZWRpYUVsZW1lbnQtPm1lZGlhQ29udHJvbHNIb3N0
KCkpIHsKICAgICAgICAgICAgIGF1dG8gdHlwZSA9IG1fbWVkaWFFbGVtZW50LT5tZWRpYUNvbnRy
b2xzSG9zdCgpLT5leHRlcm5hbERldmljZVR5cGUoKTsKLSAgICAgICAgICAgIGlmICh0eXBlID09
IERldmljZVR5cGU6OkFpcnBsYXkpCisgICAgICAgICAgICBpZiAodHlwZSA9PSBNZWRpYUNvbnRy
b2xzSG9zdDo6RGV2aWNlVHlwZTo6QWlycGxheSkKICAgICAgICAgICAgICAgICB0YXJnZXRUeXBl
ID0gV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOjpUYXJnZXRUeXBlQWlyUGxheTsKLSAgICAg
ICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gRGV2aWNlVHlwZTo6VHZvdXQpCisgICAgICAgICAgICBl
bHNlIGlmICh0eXBlID09IE1lZGlhQ29udHJvbHNIb3N0OjpEZXZpY2VUeXBlOjpUdm91dCkKICAg
ICAgICAgICAgICAgICB0YXJnZXRUeXBlID0gV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOjpU
YXJnZXRUeXBlVFZPdXQ7CiAgICAgICAgICAgICBsb2NhbGl6ZWREZXZpY2VOYW1lID0gbV9tZWRp
YUVsZW1lbnQtPm1lZGlhQ29udHJvbHNIb3N0KCktPmV4dGVybmFsRGV2aWNlRGlzcGxheU5hbWUo
KTsKICAgICAgICAgfQpAQCAtMzAzLDcgKzMwMyw3IEBAIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9u
TW9kZWxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUxlZ2libGVPcHRpb25zKCkKICAgICAgICAgICAgIHRy
YWNrTWVudUl0ZW1TZWxlY3RlZCA9IHRydWU7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoZGlz
cGxheU1vZGUgIT0gTWVkaWFDb250cm9sc0hvc3Q6OmF1dG9tYXRpY0tleXdvcmQoKSAmJiB0cmFj
ay0+bW9kZSgpID09IFRleHRUcmFja01vZGU6OlNob3dpbmcpIHsKKyAgICAgICAgaWYgKGRpc3Bs
YXlNb2RlICE9IE1lZGlhQ29udHJvbHNIb3N0OjphdXRvbWF0aWNLZXl3b3JkKCkgJiYgdHJhY2st
Pm1vZGUoKSA9PSBUZXh0VHJhY2s6Ok1vZGU6OlNob3dpbmcpIHsKICAgICAgICAgICAgIHNlbGVj
dGVkSW5kZXggPSBpbmRleDsKICAgICAgICAgICAgIHRyYWNrTWVudUl0ZW1TZWxlY3RlZCA9IHRy
dWU7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA4MGY1
OTRjYjQ2OGE2OGJhMjIzZjRmZTA5ZWJkODI3MmIxNjIyMzM0Li41NmZkYTY5NDMwNzRhNDJmYjA4
MzU2MjI5ZDk2ZTE1NjBkMjZlZjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CkBAIC01NjMsMjMgKzU2MywyMyBAQCBib29sIEludGVybmFsczo6aXNTdHlsZVNoZWV0TG9hZGlu
Z1N1YnJlc291cmNlcyhIVE1MTGlua0VsZW1lbnQmIGxpbmspCiAgICAgcmV0dXJuIGxpbmsuc2hl
ZXQoKSAmJiBsaW5rLnNoZWV0KCktPmNvbnRlbnRzKCkuaXNMb2FkaW5nU3VicmVzb3VyY2VzKCk7
CiB9CiAKLXN0YXRpYyBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSB0b1Jlc291cmNlUmVxdWVz
dENhY2hlUG9saWN5KEludGVybmFsc0NhY2hlUG9saWN5IHBvbGljeSkKK3N0YXRpYyBSZXNvdXJj
ZVJlcXVlc3RDYWNoZVBvbGljeSB0b1Jlc291cmNlUmVxdWVzdENhY2hlUG9saWN5KEludGVybmFs
czo6Q2FjaGVQb2xpY3kgcG9saWN5KQogewogICAgIHN3aXRjaCAocG9saWN5KSB7Ci0gICAgY2Fz
ZSBJbnRlcm5hbHNDYWNoZVBvbGljeTo6VXNlUHJvdG9jb2xDYWNoZVBvbGljeToKKyAgICBjYXNl
IEludGVybmFsczo6Q2FjaGVQb2xpY3k6OlVzZVByb3RvY29sQ2FjaGVQb2xpY3k6CiAgICAgICAg
IHJldHVybiBVc2VQcm90b2NvbENhY2hlUG9saWN5OwotICAgIGNhc2UgSW50ZXJuYWxzQ2FjaGVQ
b2xpY3k6OlJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhOgorICAgIGNhc2UgSW50ZXJuYWxzOjpDYWNo
ZVBvbGljeTo6UmVsb2FkSWdub3JpbmdDYWNoZURhdGE6CiAgICAgICAgIHJldHVybiBSZWxvYWRJ
Z25vcmluZ0NhY2hlRGF0YTsKLSAgICBjYXNlIEludGVybmFsc0NhY2hlUG9saWN5OjpSZXR1cm5D
YWNoZURhdGFFbHNlTG9hZDoKKyAgICBjYXNlIEludGVybmFsczo6Q2FjaGVQb2xpY3k6OlJldHVy
bkNhY2hlRGF0YUVsc2VMb2FkOgogICAgICAgICByZXR1cm4gUmV0dXJuQ2FjaGVEYXRhRWxzZUxv
YWQ7Ci0gICAgY2FzZSBJbnRlcm5hbHNDYWNoZVBvbGljeTo6UmV0dXJuQ2FjaGVEYXRhRG9udExv
YWQ6CisgICAgY2FzZSBJbnRlcm5hbHM6OkNhY2hlUG9saWN5OjpSZXR1cm5DYWNoZURhdGFEb250
TG9hZDoKICAgICAgICAgcmV0dXJuIFJldHVybkNhY2hlRGF0YURvbnRMb2FkOwogICAgIH0KICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gVXNlUHJvdG9jb2xDYWNoZVBvbGlj
eTsKIH0KIAotdm9pZCBJbnRlcm5hbHM6OnNldE92ZXJyaWRlQ2FjaGVQb2xpY3koSW50ZXJuYWxz
Q2FjaGVQb2xpY3kgcG9saWN5KQordm9pZCBJbnRlcm5hbHM6OnNldE92ZXJyaWRlQ2FjaGVQb2xp
Y3koQ2FjaGVQb2xpY3kgcG9saWN5KQogewogICAgIGZyYW1lKCktPmxvYWRlcigpLnNldE92ZXJy
aWRlQ2FjaGVQb2xpY3lGb3JUZXN0aW5nKHRvUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kocG9s
aWN5KSk7CiB9CkBAIC01OTQsMjUgKzU5NCwyNSBAQCB2b2lkIEludGVybmFsczo6c2V0Q2FuU2hv
d01vZGFsRGlhbG9nT3ZlcnJpZGUoYm9vbCBhbGxvdywgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAg
Y29udGV4dERvY3VtZW50KCktPmRvbVdpbmRvdygpLT5zZXRDYW5TaG93TW9kYWxEaWFsb2dPdmVy
cmlkZShhbGxvdyk7CiB9CiAKLXN0YXRpYyBSZXNvdXJjZUxvYWRQcmlvcml0eSB0b1Jlc291cmNl
TG9hZFByaW9yaXR5KEludGVybmFsc1Jlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5KQorc3Rh
dGljIFJlc291cmNlTG9hZFByaW9yaXR5IHRvUmVzb3VyY2VMb2FkUHJpb3JpdHkoSW50ZXJuYWxz
OjpSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSkKIHsKICAgICBzd2l0Y2ggKHByaW9yaXR5
KSB7Ci0gICAgY2FzZSBJbnRlcm5hbHNSZXNvdXJjZUxvYWRQcmlvcml0eTo6UmVzb3VyY2VMb2Fk
UHJpb3JpdHlWZXJ5TG93OgorICAgIGNhc2UgSW50ZXJuYWxzOjpSZXNvdXJjZUxvYWRQcmlvcml0
eTo6UmVzb3VyY2VMb2FkUHJpb3JpdHlWZXJ5TG93OgogICAgICAgICByZXR1cm4gUmVzb3VyY2VM
b2FkUHJpb3JpdHk6OlZlcnlMb3c7Ci0gICAgY2FzZSBJbnRlcm5hbHNSZXNvdXJjZUxvYWRQcmlv
cml0eTo6UmVzb3VyY2VMb2FkUHJpb3JpdHlMb3c6CisgICAgY2FzZSBJbnRlcm5hbHM6OlJlc291
cmNlTG9hZFByaW9yaXR5OjpSZXNvdXJjZUxvYWRQcmlvcml0eUxvdzoKICAgICAgICAgcmV0dXJu
IFJlc291cmNlTG9hZFByaW9yaXR5OjpMb3c7Ci0gICAgY2FzZSBJbnRlcm5hbHNSZXNvdXJjZUxv
YWRQcmlvcml0eTo6UmVzb3VyY2VMb2FkUHJpb3JpdHlNZWRpdW06CisgICAgY2FzZSBJbnRlcm5h
bHM6OlJlc291cmNlTG9hZFByaW9yaXR5OjpSZXNvdXJjZUxvYWRQcmlvcml0eU1lZGl1bToKICAg
ICAgICAgcmV0dXJuIFJlc291cmNlTG9hZFByaW9yaXR5OjpNZWRpdW07Ci0gICAgY2FzZSBJbnRl
cm5hbHNSZXNvdXJjZUxvYWRQcmlvcml0eTo6UmVzb3VyY2VMb2FkUHJpb3JpdHlIaWdoOgorICAg
IGNhc2UgSW50ZXJuYWxzOjpSZXNvdXJjZUxvYWRQcmlvcml0eTo6UmVzb3VyY2VMb2FkUHJpb3Jp
dHlIaWdoOgogICAgICAgICByZXR1cm4gUmVzb3VyY2VMb2FkUHJpb3JpdHk6OkhpZ2g7Ci0gICAg
Y2FzZSBJbnRlcm5hbHNSZXNvdXJjZUxvYWRQcmlvcml0eTo6UmVzb3VyY2VMb2FkUHJpb3JpdHlW
ZXJ5SGlnaDoKKyAgICBjYXNlIEludGVybmFsczo6UmVzb3VyY2VMb2FkUHJpb3JpdHk6OlJlc291
cmNlTG9hZFByaW9yaXR5VmVyeUhpZ2g6CiAgICAgICAgIHJldHVybiBSZXNvdXJjZUxvYWRQcmlv
cml0eTo6VmVyeUhpZ2g7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJl
dHVybiBSZXNvdXJjZUxvYWRQcmlvcml0eTo6TG93OwogfQogCi12b2lkIEludGVybmFsczo6c2V0
T3ZlcnJpZGVSZXNvdXJjZUxvYWRQcmlvcml0eShJbnRlcm5hbHNSZXNvdXJjZUxvYWRQcmlvcml0
eSBwcmlvcml0eSkKK3ZvaWQgSW50ZXJuYWxzOjpzZXRPdmVycmlkZVJlc291cmNlTG9hZFByaW9y
aXR5KFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5KQogewogICAgIGZyYW1lKCktPmxvYWRl
cigpLnNldE92ZXJyaWRlUmVzb3VyY2VMb2FkUHJpb3JpdHlGb3JUZXN0aW5nKHRvUmVzb3VyY2VM
b2FkUHJpb3JpdHkocHJpb3JpdHkpKTsKIH0KQEAgLTEyMTgsMjEgKzEyMTgsMjEgQEAgdm9pZCBJ
bnRlcm5hbHM6OnNldEF1dG9maWxsZWQoSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCwgYm9vbCBl
bmFibGVkKQogICAgIGVsZW1lbnQuc2V0QXV0b0ZpbGxlZChlbmFibGVkKTsKIH0KIAotc3RhdGlj
IEF1dG9GaWxsQnV0dG9uVHlwZSB0b0F1dG9GaWxsQnV0dG9uVHlwZShJbnRlcm5hbHNBdXRvRmls
bEJ1dHRvblR5cGUgdHlwZSkKK3N0YXRpYyBBdXRvRmlsbEJ1dHRvblR5cGUgdG9BdXRvRmlsbEJ1
dHRvblR5cGUoSW50ZXJuYWxzOjpBdXRvRmlsbEJ1dHRvblR5cGUgdHlwZSkKIHsKICAgICBzd2l0
Y2ggKHR5cGUpIHsKLSAgICBjYXNlIEludGVybmFsc0F1dG9GaWxsQnV0dG9uVHlwZTo6QXV0b0Zp
bGxCdXR0b25UeXBlTm9uZToKKyAgICBjYXNlIEludGVybmFsczo6QXV0b0ZpbGxCdXR0b25UeXBl
OjpBdXRvRmlsbEJ1dHRvblR5cGVOb25lOgogICAgICAgICByZXR1cm4gQXV0b0ZpbGxCdXR0b25U
eXBlOjpOb25lOwotICAgIGNhc2UgSW50ZXJuYWxzQXV0b0ZpbGxCdXR0b25UeXBlOjpBdXRvRmls
bEJ1dHRvblR5cGVDcmVkZW50aWFsczoKKyAgICBjYXNlIEludGVybmFsczo6QXV0b0ZpbGxCdXR0
b25UeXBlOjpBdXRvRmlsbEJ1dHRvblR5cGVDcmVkZW50aWFsczoKICAgICAgICAgcmV0dXJuIEF1
dG9GaWxsQnV0dG9uVHlwZTo6Q3JlZGVudGlhbHM7Ci0gICAgY2FzZSBJbnRlcm5hbHNBdXRvRmls
bEJ1dHRvblR5cGU6OkF1dG9GaWxsQnV0dG9uVHlwZUNvbnRhY3RzOgorICAgIGNhc2UgSW50ZXJu
YWxzOjpBdXRvRmlsbEJ1dHRvblR5cGU6OkF1dG9GaWxsQnV0dG9uVHlwZUNvbnRhY3RzOgogICAg
ICAgICByZXR1cm4gQXV0b0ZpbGxCdXR0b25UeXBlOjpDb250YWN0czsKICAgICB9CiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIEF1dG9GaWxsQnV0dG9uVHlwZTo6Tm9uZTsK
IH0KIAotdm9pZCBJbnRlcm5hbHM6OnNldFNob3dBdXRvRmlsbEJ1dHRvbihIVE1MSW5wdXRFbGVt
ZW50JiBlbGVtZW50LCBJbnRlcm5hbHNBdXRvRmlsbEJ1dHRvblR5cGUgdHlwZSkKK3ZvaWQgSW50
ZXJuYWxzOjpzZXRTaG93QXV0b0ZpbGxCdXR0b24oSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCwg
QXV0b0ZpbGxCdXR0b25UeXBlIHR5cGUpCiB7CiAgICAgZWxlbWVudC5zZXRTaG93QXV0b0ZpbGxC
dXR0b24odG9BdXRvRmlsbEJ1dHRvblR5cGUodHlwZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgKaW5kZXggMzkwNjdlZjI0NTY1MTc4NzZiN2EwZThkNzMxOWM5NjMwNzhiNTA4Yi4u
MTFmOGM4OGJkOWJlNTM5MzI2Y2M3NWRkYTg4ODJhMWYyN2VkMjFkMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oCkBAIC03MCwxMiArNzAsNiBAQCBjbGFzcyBYTUxIdHRwUmVxdWVzdDsK
IAogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAotZW51bSBjbGFzcyBJbnRlcm5hbHNBdXRv
RmlsbEJ1dHRvblR5cGUgeyBBdXRvRmlsbEJ1dHRvblR5cGVOb25lLCBBdXRvRmlsbEJ1dHRvblR5
cGVDb250YWN0cywgQXV0b0ZpbGxCdXR0b25UeXBlQ3JlZGVudGlhbHMgfTsKLWVudW0gY2xhc3Mg
SW50ZXJuYWxzQ2FjaGVQb2xpY3kgeyBVc2VQcm90b2NvbENhY2hlUG9saWN5LCBSZWxvYWRJZ25v
cmluZ0NhY2hlRGF0YSwgUmV0dXJuQ2FjaGVEYXRhRWxzZUxvYWQsIFJldHVybkNhY2hlRGF0YURv
bnRMb2FkIH07Ci1lbnVtIGNsYXNzIEludGVybmFsc1Jlc291cmNlTG9hZFByaW9yaXR5IHsgUmVz
b3VyY2VMb2FkUHJpb3JpdHlWZXJ5TG93LCBSZXNvdXJjZUxvYWRQcmlvcml0eUxvdywgUmVzb3Vy
Y2VMb2FkUHJpb3JpdHlNZWRpdW0sIFJlc291cmNlTG9hZFByaW9yaXR5SGlnaCwgUmVzb3VyY2VM
b2FkUHJpb3JpdHlWZXJ5SGlnaCB9OwotZW51bSBjbGFzcyBNZWRpYUNvbnRyb2xFdmVudCB7IFBs
YXlQYXVzZSwgTmV4dFRyYWNrLCBQcmV2aW91c1RyYWNrIH07Ci1lbnVtIGNsYXNzIFBhZ2VPdmVy
bGF5VHlwZSB7IFZpZXcsIERvY3VtZW50IH07Ci0KIGNsYXNzIEludGVybmFscyBmaW5hbCA6IHB1
YmxpYyBSZWZDb3VudGVkPEludGVybmFscz4sIHByaXZhdGUgQ29udGV4dERlc3RydWN0aW9uT2Jz
ZXJ2ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SW50ZXJuYWxzPiBjcmVhdGUoRG9jdW1l
bnQmKTsKQEAgLTk2LDkgKzkwLDExIEBAIHB1YmxpYzoKICAgICBTdHJpbmcgeGhyUmVzcG9uc2VT
b3VyY2UoWE1MSHR0cFJlcXVlc3QmKTsKICAgICBib29sIGlzU2hhcmluZ1N0eWxlU2hlZXRDb250
ZW50cyhIVE1MTGlua0VsZW1lbnQmLCBIVE1MTGlua0VsZW1lbnQmKTsKICAgICBib29sIGlzU3R5
bGVTaGVldExvYWRpbmdTdWJyZXNvdXJjZXMoSFRNTExpbmtFbGVtZW50Jik7Ci0gICAgdm9pZCBz
ZXRPdmVycmlkZUNhY2hlUG9saWN5KEludGVybmFsc0NhY2hlUG9saWN5KTsKKyAgICBlbnVtIGNs
YXNzIENhY2hlUG9saWN5IHsgVXNlUHJvdG9jb2xDYWNoZVBvbGljeSwgUmVsb2FkSWdub3JpbmdD
YWNoZURhdGEsIFJldHVybkNhY2hlRGF0YUVsc2VMb2FkLCBSZXR1cm5DYWNoZURhdGFEb250TG9h
ZCB9OworICAgIHZvaWQgc2V0T3ZlcnJpZGVDYWNoZVBvbGljeShDYWNoZVBvbGljeSk7CiAgICAg
dm9pZCBzZXRDYW5TaG93TW9kYWxEaWFsb2dPdmVycmlkZShib29sIGFsbG93LCBFeGNlcHRpb25D
b2RlJik7Ci0gICAgdm9pZCBzZXRPdmVycmlkZVJlc291cmNlTG9hZFByaW9yaXR5KEludGVybmFs
c1Jlc291cmNlTG9hZFByaW9yaXR5KTsKKyAgICBlbnVtIGNsYXNzIFJlc291cmNlTG9hZFByaW9y
aXR5IHsgUmVzb3VyY2VMb2FkUHJpb3JpdHlWZXJ5TG93LCBSZXNvdXJjZUxvYWRQcmlvcml0eUxv
dywgUmVzb3VyY2VMb2FkUHJpb3JpdHlNZWRpdW0sIFJlc291cmNlTG9hZFByaW9yaXR5SGlnaCwg
UmVzb3VyY2VMb2FkUHJpb3JpdHlWZXJ5SGlnaCB9OworICAgIHZvaWQgc2V0T3ZlcnJpZGVSZXNv
dXJjZUxvYWRQcmlvcml0eShSZXNvdXJjZUxvYWRQcmlvcml0eSk7CiAgICAgdm9pZCBzZXRTdHJp
Y3RSYXdSZXNvdXJjZVZhbGlkYXRpb25Qb2xpY3lEaXNhYmxlZChib29sKTsKIAogICAgIHZvaWQg
Y2xlYXJNZW1vcnlDYWNoZSgpOwpAQCAtMTc1LDcgKzE3MSw4IEBAIHB1YmxpYzoKICAgICBib29s
IGVsZW1lbnRTaG91bGRBdXRvQ29tcGxldGUoSFRNTElucHV0RWxlbWVudCYpOwogICAgIHZvaWQg
c2V0RWRpdGluZ1ZhbHVlKEhUTUxJbnB1dEVsZW1lbnQmLCBjb25zdCBTdHJpbmcmKTsKICAgICB2
b2lkIHNldEF1dG9maWxsZWQoSFRNTElucHV0RWxlbWVudCYsIGJvb2wgZW5hYmxlZCk7Ci0gICAg
dm9pZCBzZXRTaG93QXV0b0ZpbGxCdXR0b24oSFRNTElucHV0RWxlbWVudCYsIEludGVybmFsc0F1
dG9GaWxsQnV0dG9uVHlwZSk7CisgICAgZW51bSBjbGFzcyBBdXRvRmlsbEJ1dHRvblR5cGUgeyBB
dXRvRmlsbEJ1dHRvblR5cGVOb25lLCBBdXRvRmlsbEJ1dHRvblR5cGVDb250YWN0cywgQXV0b0Zp
bGxCdXR0b25UeXBlQ3JlZGVudGlhbHMgfTsKKyAgICB2b2lkIHNldFNob3dBdXRvRmlsbEJ1dHRv
bihIVE1MSW5wdXRFbGVtZW50JiwgQXV0b0ZpbGxCdXR0b25UeXBlKTsKICAgICB2b2lkIHNjcm9s
bEVsZW1lbnRUb1JlY3QoRWxlbWVudCYsIGludCB4LCBpbnQgeSwgaW50IHcsIGludCBoLCBFeGNl
cHRpb25Db2RlJik7CiAKICAgICBTdHJpbmcgYXV0b2ZpbGxGaWVsZE5hbWUoRWxlbWVudCYsIEV4
Y2VwdGlvbkNvZGUmKTsKQEAgLTQyMCw2ICs0MTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZW5k
TWVkaWFTZXNzaW9uRW5kT2ZJbnRlcnJ1cHRpb25Ob3RpZmljYXRpb24oTWVkaWFTZXNzaW9uSW50
ZXJydXB0aW5nQ2F0ZWdvcnkpOwogICAgIFN0cmluZyBtZWRpYVNlc3Npb25DdXJyZW50U3RhdGUo
TWVkaWFTZXNzaW9uJikgY29uc3Q7CiAgICAgZG91YmxlIG1lZGlhRWxlbWVudFBsYXllclZvbHVt
ZShIVE1MTWVkaWFFbGVtZW50JikgY29uc3Q7CisgICAgZW51bSBjbGFzcyBNZWRpYUNvbnRyb2xF
dmVudCB7IFBsYXlQYXVzZSwgTmV4dFRyYWNrLCBQcmV2aW91c1RyYWNrIH07CiAgICAgdm9pZCBz
ZW5kTWVkaWFDb250cm9sRXZlbnQoTWVkaWFDb250cm9sRXZlbnQpOwogI2VuZGlmCiAKQEAgLTQz
NSw2ICs0MzMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaW11bGF0ZVN5c3RlbVNsZWVwKCkgY29u
c3Q7CiAgICAgdm9pZCBzaW11bGF0ZVN5c3RlbVdha2UoKSBjb25zdDsKIAorICAgIGVudW0gY2xh
c3MgUGFnZU92ZXJsYXlUeXBlIHsgVmlldywgRG9jdW1lbnQgfTsKICAgICBSZWZQdHI8TW9ja1Bh
Z2VPdmVybGF5PiBpbnN0YWxsTW9ja1BhZ2VPdmVybGF5KFBhZ2VPdmVybGF5VHlwZSwgRXhjZXB0
aW9uQ29kZSYpOwogICAgIFN0cmluZyBwYWdlT3ZlcmxheUxheWVyVHJlZUFzVGV4dChFeGNlcHRp
b25Db2RlJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCAx
Y2EwZmU2ZjlkMTYyNjQ5OWE4NjQ3YjEwYTkyYzNhMTg0OGE4Zjc2Li5iMzQ4OTdjOTZkNGUwYTkw
OTUwZTExOWU0NmQwNjk4MjcyMDM0ZWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aWRsCkBAIC0zMCw3ICszMCw3IEBAIGVudW0gUGFnZU92ZXJsYXlUeXBlIHsKIH07CiAKIC8vIFRo
ZXNlIG1hcCB0byBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeS4KLWVudW0gSW50ZXJuYWxzQ2Fj
aGVQb2xpY3kgeworZW51bSBDYWNoZVBvbGljeSB7CiAgICAgIlVzZVByb3RvY29sQ2FjaGVQb2xp
Y3kiLAogICAgICJSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YSIsCiAgICAgIlJldHVybkNhY2hlRGF0
YUVsc2VMb2FkIiwKQEAgLTM4LDcgKzM4LDcgQEAgZW51bSBJbnRlcm5hbHNDYWNoZVBvbGljeSB7
CiB9OwogCiAvLyBGSVhNRTogU3RyaW5ncyBpbiBhbiBlbnVtIHNob3VsZCBub3QgaGF2ZSB0aGUg
bmFtZSBvZiB0aGUgZW51bSBhcyBhIHByZWZpeC4KLWVudW0gSW50ZXJuYWxzUmVzb3VyY2VMb2Fk
UHJpb3JpdHkgeworZW51bSBSZXNvdXJjZUxvYWRQcmlvcml0eSB7CiAgICAgIlJlc291cmNlTG9h
ZFByaW9yaXR5VmVyeUxvdyIsCiAgICAgIlJlc291cmNlTG9hZFByaW9yaXR5TG93IiwKICAgICAi
UmVzb3VyY2VMb2FkUHJpb3JpdHlNZWRpdW0iLApAQCAtNTksNyArNTksNyBAQCBlbnVtIEludGVy
bmFsc1Jlc291cmNlTG9hZFByaW9yaXR5IHsKIH07CiAKIC8vIEZJWE1FOiBTdHJpbmdzIGluIGFu
IGVudW0gc2hvdWxkIG5vdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBlbnVtIGFzIGEgcHJlZml4Lgot
ZW51bSBJbnRlcm5hbHNBdXRvRmlsbEJ1dHRvblR5cGUgeworZW51bSBBdXRvRmlsbEJ1dHRvblR5
cGUgewogICAgICJBdXRvRmlsbEJ1dHRvblR5cGVOb25lIiwKICAgICAiQXV0b0ZpbGxCdXR0b25U
eXBlQ29udGFjdHMiLAogICAgICJBdXRvRmlsbEJ1dHRvblR5cGVDcmVkZW50aWFscyIKQEAgLTg2
LDggKzg2LDggQEAgZW51bSBJbnRlcm5hbHNBdXRvRmlsbEJ1dHRvblR5cGUgewogICAgIHZvaWQg
Y2xlYXJNZW1vcnlDYWNoZSgpOwogICAgIHZvaWQgcHJ1bmVNZW1vcnlDYWNoZVRvU2l6ZShsb25n
IHNpemUpOwogICAgIGxvbmcgbWVtb3J5Q2FjaGVTaXplKCk7Ci0gICAgdm9pZCBzZXRPdmVycmlk
ZUNhY2hlUG9saWN5KEludGVybmFsc0NhY2hlUG9saWN5IHBvbGljeSk7Ci0gICAgdm9pZCBzZXRP
dmVycmlkZVJlc291cmNlTG9hZFByaW9yaXR5KEludGVybmFsc1Jlc291cmNlTG9hZFByaW9yaXR5
IHByaW9yaXR5KTsKKyAgICB2b2lkIHNldE92ZXJyaWRlQ2FjaGVQb2xpY3koQ2FjaGVQb2xpY3kg
cG9saWN5KTsKKyAgICB2b2lkIHNldE92ZXJyaWRlUmVzb3VyY2VMb2FkUHJpb3JpdHkoUmVzb3Vy
Y2VMb2FkUHJpb3JpdHkgcHJpb3JpdHkpOwogICAgIHZvaWQgc2V0U3RyaWN0UmF3UmVzb3VyY2VW
YWxpZGF0aW9uUG9saWN5RGlzYWJsZWQoYm9vbGVhbiBkaXNhYmxlZCk7CiAKICAgICB2b2lkIGNs
ZWFyUGFnZUNhY2hlKCk7CkBAIC0xNTksNyArMTU5LDcgQEAgZW51bSBJbnRlcm5hbHNBdXRvRmls
bEJ1dHRvblR5cGUgewogICAgIGJvb2xlYW4gZWxlbWVudFNob3VsZEF1dG9Db21wbGV0ZShIVE1M
SW5wdXRFbGVtZW50IGlucHV0RWxlbWVudCk7CiAgICAgdm9pZCBzZXRFZGl0aW5nVmFsdWUoSFRN
TElucHV0RWxlbWVudCBpbnB1dEVsZW1lbnQsIERPTVN0cmluZyB2YWx1ZSk7CiAgICAgdm9pZCBz
ZXRBdXRvZmlsbGVkKEhUTUxJbnB1dEVsZW1lbnQgaW5wdXRFbGVtZW50LCBib29sZWFuIGVuYWJs
ZWQpOwotICAgIHZvaWQgc2V0U2hvd0F1dG9GaWxsQnV0dG9uKEhUTUxJbnB1dEVsZW1lbnQgaW5w
dXRFbGVtZW50LCBJbnRlcm5hbHNBdXRvRmlsbEJ1dHRvblR5cGUgYXV0b0ZpbGxCdXR0b25UeXBl
KTsKKyAgICB2b2lkIHNldFNob3dBdXRvRmlsbEJ1dHRvbihIVE1MSW5wdXRFbGVtZW50IGlucHV0
RWxlbWVudCwgQXV0b0ZpbGxCdXR0b25UeXBlIGF1dG9GaWxsQnV0dG9uVHlwZSk7CiAgICAgW1Jh
aXNlc0V4Y2VwdGlvbl0gdW5zaWduZWQgbG9uZyBjb3VudE1hdGNoZXNGb3JUZXh0KERPTVN0cmlu
ZyB0ZXh0LCB1bnNpZ25lZCBsb25nIGZpbmRPcHRpb25zLCBET01TdHJpbmcgbWFya01hdGNoZXMp
OwogCiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gRE9NU3RyaW5nIGF1dG9maWxsRmllbGROYW1lKEVs
ZW1lbnQgZm9ybUNvbnRyb2xFbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
Y3BwCmluZGV4IDIyNGI4NjU2ODMwMjk2ZGE3NzQ4OGY0ZDE2NWFiMTVmNjg4NjUyNjkuLjZhYjMx
NTk3YTU0NzRkZjE4ZWE5ZTg1ODI0YjVmZDA2YTZlZWNiNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcApAQCAtMTYzLDcgKzE2Myw3IEBAIFhNTEh0dHBSZXF1ZXN0OjpTdGF0
ZSBYTUxIdHRwUmVxdWVzdDo6cmVhZHlTdGF0ZSgpIGNvbnN0CiAKIFN0cmluZyBYTUxIdHRwUmVx
dWVzdDo6cmVzcG9uc2VUZXh0KEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmIChtX3Jlc3Bv
bnNlVHlwZSAhPSBYTUxIdHRwUmVxdWVzdFJlc3BvbnNlVHlwZTo6RW1wdHlTdHJpbmcgJiYgbV9y
ZXNwb25zZVR5cGUgIT0gWE1MSHR0cFJlcXVlc3RSZXNwb25zZVR5cGU6OlRleHQpIHsKKyAgICBp
ZiAobV9yZXNwb25zZVR5cGUgIT0gUmVzcG9uc2VUeXBlOjpFbXB0eVN0cmluZyAmJiBtX3Jlc3Bv
bnNlVHlwZSAhPSBSZXNwb25zZVR5cGU6OlRleHQpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NU
QVRFX0VSUjsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CkBAIC0xNzIsNyArMTcyLDcgQEAg
U3RyaW5nIFhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZVRleHQoRXhjZXB0aW9uQ29kZSYgZWMpCiAK
IHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZENhY2hlUmVzcG9uc2VKU09OKCkKIHsKLSAgICBBU1NF
UlQobV9yZXNwb25zZVR5cGUgPT0gWE1MSHR0cFJlcXVlc3RSZXNwb25zZVR5cGU6Okpzb24pOwor
ICAgIEFTU0VSVChtX3Jlc3BvbnNlVHlwZSA9PSBSZXNwb25zZVR5cGU6Okpzb24pOwogICAgIEFT
U0VSVChkb25lV2l0aG91dEVycm9ycygpKTsKICAgICBtX3Jlc3BvbnNlQ2FjaGVJc1ZhbGlkID0g
dHJ1ZTsKICAgICBtX3Jlc3BvbnNlQnVpbGRlci5jbGVhcigpOwpAQCAtMTgwLDcgKzE4MCw3IEBA
IHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZENhY2hlUmVzcG9uc2VKU09OKCkKIAogRG9jdW1lbnQq
IFhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZVhNTChFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBp
ZiAobV9yZXNwb25zZVR5cGUgIT0gWE1MSHR0cFJlcXVlc3RSZXNwb25zZVR5cGU6OkVtcHR5U3Ry
aW5nICYmIG1fcmVzcG9uc2VUeXBlICE9IFhNTEh0dHBSZXF1ZXN0UmVzcG9uc2VUeXBlOjpEb2N1
bWVudCkgeworICAgIGlmIChtX3Jlc3BvbnNlVHlwZSAhPSBSZXNwb25zZVR5cGU6OkVtcHR5U3Ry
aW5nICYmIG1fcmVzcG9uc2VUeXBlICE9IFJlc3BvbnNlVHlwZTo6RG9jdW1lbnQpIHsKICAgICAg
ICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQpAQCAtMTk1LDcgKzE5NSw3IEBAIERvY3VtZW50KiBYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VY
TUwoRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIC8vIFRoZSBXM0Mgc3BlYyByZXF1aXJlcyB0
aGUgZmluYWwgTUlNRSB0eXBlIHRvIGJlIHNvbWUgdmFsaWQgWE1MIHR5cGUsIG9yIHRleHQvaHRt
bC4KICAgICAgICAgLy8gSWYgaXQgaXMgdGV4dC9odG1sLCB0aGVuIHRoZSByZXNwb25zZVR5cGUg
b2YgImRvY3VtZW50IiBtdXN0IGhhdmUgYmVlbiBzdXBwbGllZCBleHBsaWNpdGx5LgogICAgICAg
ICBpZiAoKG1fcmVzcG9uc2UuaXNIVFRQKCkgJiYgIXJlc3BvbnNlSXNYTUwoKSAmJiAhaXNIVE1M
KQotICAgICAgICAgICAgfHwgKGlzSFRNTCAmJiBtX3Jlc3BvbnNlVHlwZSA9PSBYTUxIdHRwUmVx
dWVzdFJlc3BvbnNlVHlwZTo6RW1wdHlTdHJpbmcpCisgICAgICAgICAgICB8fCAoaXNIVE1MICYm
IG1fcmVzcG9uc2VUeXBlID09IFJlc3BvbnNlVHlwZTo6RW1wdHlTdHJpbmcpCiAgICAgICAgICAg
ICB8fCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzV29ya2VyR2xvYmFsU2NvcGUoKSkgewog
ICAgICAgICAgICAgbV9yZXNwb25zZURvY3VtZW50ID0gbnVsbHB0cjsKICAgICAgICAgfSBlbHNl
IHsKQEAgLTIxOSw3ICsyMTksNyBAQCBEb2N1bWVudCogWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNl
WE1MKEV4Y2VwdGlvbkNvZGUmIGVjKQogCiBCbG9iKiBYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VC
bG9iKCkKIHsKLSAgICBBU1NFUlQobV9yZXNwb25zZVR5cGUgPT0gWE1MSHR0cFJlcXVlc3RSZXNw
b25zZVR5cGU6OkJsb2IpOworICAgIEFTU0VSVChtX3Jlc3BvbnNlVHlwZSA9PSBSZXNwb25zZVR5
cGU6OkJsb2IpOwogICAgIEFTU0VSVChkb25lV2l0aG91dEVycm9ycygpKTsKIAogICAgIGlmICgh
bV9yZXNwb25zZUJsb2IpIHsKQEAgLTI0MSw3ICsyNDEsNyBAQCBCbG9iKiBYTUxIdHRwUmVxdWVz
dDo6cmVzcG9uc2VCbG9iKCkKIAogQXJyYXlCdWZmZXIqIFhNTEh0dHBSZXF1ZXN0OjpyZXNwb25z
ZUFycmF5QnVmZmVyKCkKIHsKLSAgICBBU1NFUlQobV9yZXNwb25zZVR5cGUgPT0gWE1MSHR0cFJl
cXVlc3RSZXNwb25zZVR5cGU6OkFycmF5YnVmZmVyKTsKKyAgICBBU1NFUlQobV9yZXNwb25zZVR5
cGUgPT0gUmVzcG9uc2VUeXBlOjpBcnJheWJ1ZmZlcik7CiAgICAgQVNTRVJUKGRvbmVXaXRob3V0
RXJyb3JzKCkpOwogCiAgICAgaWYgKCFtX3Jlc3BvbnNlQXJyYXlCdWZmZXIpIHsKQEAgLTI3Myw3
ICsyNzMsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpzZXRUaW1lb3V0KHVuc2lnbmVkIHRpbWVv
dXQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIG1fdGltZW91dFRpbWVyLnN0YXJ0T25lU2hvdChz
dGQ6Om1heCgwLjAsIGludGVydmFsLmNvdW50KCkpKTsKIH0KIAotdm9pZCBYTUxIdHRwUmVxdWVz
dDo6c2V0UmVzcG9uc2VUeXBlKFhNTEh0dHBSZXF1ZXN0UmVzcG9uc2VUeXBlIHR5cGUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQordm9pZCBYTUxIdHRwUmVxdWVzdDo6c2V0UmVzcG9uc2VUeXBlKFJlc3Bv
bnNlVHlwZSB0eXBlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAobV9zdGF0ZSA+PSBM
T0FESU5HKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CkBAIC00NjMsNyArNDYz
LDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6b3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29u
c3QgVVJMJiB1cmwsIGJvb2wgYXN5bmMsIEV4Y2UKICAgICAgICAgLy8gYXR0ZW1wdCB0byBkaXNj
b3VyYWdlIHN5bmNocm9ub3VzIFhIUiB1c2UuIHJlc3BvbnNlVHlwZSBpcyBvbmUgc3VjaCBwaWVj
ZSBvZiBmdW5jdGlvbmFsaXR5LgogICAgICAgICAvLyBXZSdsbCBvbmx5IGRpc2FibGUgdGhpcyBm
dW5jdGlvbmFsaXR5IGZvciBIVFRQKFMpIHJlcXVlc3RzIHNpbmNlIHN5bmMgcmVxdWVzdHMgZm9y
IGxvY2FsIHByb3RvY29scwogICAgICAgICAvLyBzdWNoIGFzIGZpbGU6IGFuZCBkYXRhOiBzdGls
bCBtYWtlIHNlbnNlIHRvIGFsbG93LgotICAgICAgICBpZiAodXJsLnByb3RvY29sSXNJbkhUVFBG
YW1pbHkoKSAmJiBtX3Jlc3BvbnNlVHlwZSAhPSBYTUxIdHRwUmVxdWVzdFJlc3BvbnNlVHlwZTo6
RW1wdHlTdHJpbmcpIHsKKyAgICAgICAgaWYgKHVybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkg
JiYgbV9yZXNwb25zZVR5cGUgIT0gUmVzcG9uc2VUeXBlOjpFbXB0eVN0cmluZykgewogICAgICAg
ICAgICAgbG9nQ29uc29sZUVycm9yKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgIlN5bmNocm9u
b3VzIEhUVFAoUykgcmVxdWVzdHMgbWFkZSBmcm9tIHRoZSB3aW5kb3cgY29udGV4dCBjYW5ub3Qg
aGF2ZSBYTUxIdHRwUmVxdWVzdC5yZXNwb25zZVR5cGUgc2V0LiIpOwogICAgICAgICAgICAgZWMg
PSBJTlZBTElEX0FDQ0VTU19FUlI7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMDk1LDE2ICsx
MDk1LDE2IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlCiAgICAgICAgIG1fcmVzcG9uc2Uuc2V0
SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50VHlwZSwgbV9taW1lVHlwZU92
ZXJyaWRlKTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIHNob3VsZERlY29kZVJlc3BvbnNlKFhN
TEh0dHBSZXF1ZXN0UmVzcG9uc2VUeXBlIHR5cGUpCitzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxk
RGVjb2RlUmVzcG9uc2UoWE1MSHR0cFJlcXVlc3Q6OlJlc3BvbnNlVHlwZSB0eXBlKQogewogICAg
IHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgWE1MSHR0cFJlcXVlc3RSZXNwb25zZVR5cGU6OkVt
cHR5U3RyaW5nOgotICAgIGNhc2UgWE1MSHR0cFJlcXVlc3RSZXNwb25zZVR5cGU6OkRvY3VtZW50
OgotICAgIGNhc2UgWE1MSHR0cFJlcXVlc3RSZXNwb25zZVR5cGU6Okpzb246Ci0gICAgY2FzZSBY
TUxIdHRwUmVxdWVzdFJlc3BvbnNlVHlwZTo6VGV4dDoKKyAgICBjYXNlIFhNTEh0dHBSZXF1ZXN0
OjpSZXNwb25zZVR5cGU6OkVtcHR5U3RyaW5nOgorICAgIGNhc2UgWE1MSHR0cFJlcXVlc3Q6OlJl
c3BvbnNlVHlwZTo6RG9jdW1lbnQ6CisgICAgY2FzZSBYTUxIdHRwUmVxdWVzdDo6UmVzcG9uc2VU
eXBlOjpKc29uOgorICAgIGNhc2UgWE1MSHR0cFJlcXVlc3Q6OlJlc3BvbnNlVHlwZTo6VGV4dDoK
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgY2FzZSBYTUxIdHRwUmVxdWVzdFJlc3BvbnNlVHlw
ZTo6QXJyYXlidWZmZXI6Ci0gICAgY2FzZSBYTUxIdHRwUmVxdWVzdFJlc3BvbnNlVHlwZTo6Qmxv
YjoKKyAgICBjYXNlIFhNTEh0dHBSZXF1ZXN0OjpSZXNwb25zZVR5cGU6OkFycmF5YnVmZmVyOgor
ICAgIGNhc2UgWE1MSHR0cFJlcXVlc3Q6OlJlc3BvbnNlVHlwZTo6QmxvYjoKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggMWU4ZDA5YjY3NWM4YTYxMzA4YzM3NTdhNGE3ZjY1Mzk5
MDE0ODA5Mi4uYjg4MDg3MmMyY2MxOGI2YTViNDY3ZTRmNjBiMzJhNTM2YzZhMTU4NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTQ0LDggKzQ0LDYgQEAgY2xhc3MgU2hhcmVk
QnVmZmVyOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIGNsYXNzIFRocmVhZGFibGVMb2Fk
ZXI7CiAKLWVudW0gY2xhc3MgWE1MSHR0cFJlcXVlc3RSZXNwb25zZVR5cGUgeyBFbXB0eVN0cmlu
ZywgQXJyYXlidWZmZXIsIEJsb2IsIERvY3VtZW50LCBKc29uLCBUZXh0IH07Ci0KIGNsYXNzIFhN
TEh0dHBSZXF1ZXN0IGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8WE1MSHR0cFJlcXVlc3Q+LCBw
dWJsaWMgWE1MSHR0cFJlcXVlc3RFdmVudFRhcmdldCwgcHJpdmF0ZSBUaHJlYWRhYmxlTG9hZGVy
Q2xpZW50LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKQEAgLTEwNiw4ICsxMDQsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0
cmluZyB1cHBlcmNhc2VLbm93bkhUVFBNZXRob2QoY29uc3QgU3RyaW5nJik7CiAgICAgc3RhdGlj
IGJvb2wgaXNBbGxvd2VkSFRUUEhlYWRlcihjb25zdCBTdHJpbmcmKTsKIAotICAgIHZvaWQgc2V0
UmVzcG9uc2VUeXBlKFhNTEh0dHBSZXF1ZXN0UmVzcG9uc2VUeXBlLCBFeGNlcHRpb25Db2RlJik7
Ci0gICAgWE1MSHR0cFJlcXVlc3RSZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlKCkgY29uc3Q7Cisg
ICAgZW51bSBjbGFzcyBSZXNwb25zZVR5cGUgeyBFbXB0eVN0cmluZywgQXJyYXlidWZmZXIsIEJs
b2IsIERvY3VtZW50LCBKc29uLCBUZXh0IH07CisgICAgdm9pZCBzZXRSZXNwb25zZVR5cGUoUmVz
cG9uc2VUeXBlLCBFeGNlcHRpb25Db2RlJik7CisgICAgUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlw
ZSgpIGNvbnN0OwogCiAgICAgU3RyaW5nIHJlc3BvbnNlVVJMKCkgY29uc3Q7CiAKQEAgLTIyNSw3
ICsyMjQsNyBAQCBwcml2YXRlOgogCiAgICAgWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50VGhy
b3R0bGUgbV9wcm9ncmVzc0V2ZW50VGhyb3R0bGU7CiAKLSAgICBYTUxIdHRwUmVxdWVzdFJlc3Bv
bnNlVHlwZSBtX3Jlc3BvbnNlVHlwZSB7IFhNTEh0dHBSZXF1ZXN0UmVzcG9uc2VUeXBlOjpFbXB0
eVN0cmluZyB9OworICAgIFJlc3BvbnNlVHlwZSBtX3Jlc3BvbnNlVHlwZSB7IFJlc3BvbnNlVHlw
ZTo6RW1wdHlTdHJpbmcgfTsKICAgICBib29sIG1fcmVzcG9uc2VDYWNoZUlzVmFsaWQgeyBmYWxz
ZSB9OwogCiAgICAgVGltZXIgbV9yZXN1bWVUaW1lcjsKQEAgLTIzOSw3ICsyMzgsNyBAQCBwcml2
YXRlOgogICAgIFRpbWVyIG1fdGltZW91dFRpbWVyOwogfTsKIAotaW5saW5lIFhNTEh0dHBSZXF1
ZXN0UmVzcG9uc2VUeXBlIFhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZVR5cGUoKSBjb25zdAoraW5s
aW5lIGF1dG8gWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlVHlwZSgpIGNvbnN0IC0+IFJlc3BvbnNl
VHlwZQogewogICAgIHJldHVybiBtX3Jlc3BvbnNlVHlwZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4
IDE4MDk2YzJjNWYyYTJjY2I2YjczNDQ5ZDY3YjQ0MGNlODEwNzhlZjEuLmUzZDRhNDgzN2Q3YWUw
ODNhNGUzODk3Njk4ZDEzM2YyZGIxOGEyNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApAQCAtNzUsNyArNzUs
NyBAQCBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFdlYkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVz
b3VyY2UoRnJhbWUqIGZyYW1lLCBDYWNoZWRSZQogewogICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxv
YWRlcj4gbG9hZGVyID0gU3VicmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShmcmFtZSwgcmVzb3VyY2Us
IHJlcXVlc3QsIG9wdGlvbnMpOwogICAgIGlmIChsb2FkZXIpCi0gICAgICAgIHNjaGVkdWxlTG9h
ZChsb2FkZXIuZ2V0KCksIHJlc291cmNlLCBmcmFtZS0+ZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xp
Y3koKSA9PSBSZWZlcnJlckhlYWRlclBvbGljeTo6RGVmYXVsdCk7CisgICAgICAgIHNjaGVkdWxl
TG9hZChsb2FkZXIuZ2V0KCksIHJlc291cmNlLCBmcmFtZS0+ZG9jdW1lbnQoKS0+cmVmZXJyZXJQ
b2xpY3koKSA9PSBSZWZlcnJlclBvbGljeTo6RGVmYXVsdCk7CiAgICAgcmV0dXJuIGxvYWRlcjsK
IH0KIApAQCAtODMsNyArODMsNyBAQCBSZWZQdHI8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+
IFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZVBsdWdpblN0cmVhbUxvYWQoRgogewogICAgIFJl
ZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gbG9hZGVyID0gTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXI6OmNyZWF0ZShmcmFtZSwgY2xpZW50LCByZXF1ZXN0KTsKICAgICBpZiAobG9h
ZGVyKQotICAgICAgICBzY2hlZHVsZUxvYWQobG9hZGVyLmdldCgpLCAwLCBmcmFtZS0+ZG9jdW1l
bnQoKS0+cmVmZXJyZXJQb2xpY3koKSA9PSBSZWZlcnJlckhlYWRlclBvbGljeTo6RGVmYXVsdCk7
CisgICAgICAgIHNjaGVkdWxlTG9hZChsb2FkZXIuZ2V0KCksIDAsIGZyYW1lLT5kb2N1bWVudCgp
LT5yZWZlcnJlclBvbGljeSgpID09IFJlZmVycmVyUG9saWN5OjpEZWZhdWx0KTsKICAgICByZXR1
cm4gbG9hZGVyOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277982</attachid>
            <date>2016-05-02 22:20:40 -0700</date>
            <delta_ts>2016-05-02 22:20:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157257-20160502222117.patch</filename>
            <type>text/plain</type>
            <size>193775</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwMzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2M5NDhiYTJiMGFjYTUz
Y2FhZGViMDlmZDE5NjkxOGNiMTg1NjA0Zi4uNmI2MGUwODlkMDhiMmY1YjUxYjg0MWY5ZDJlZGUx
ODEzOGJhYzRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1NyBAQAorMjAxNi0wNS0wMiAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIElETCBlbnVtZXJh
dGlvbnMgdG8gYmUgbmVzdGVkIGluIHRoZWlyIEMrKyBjbGFzcyBpbnN0ZWFkIG9mIGF0IFdlYkNv
cmUgbmFtZXNwYWNlIGxldmVsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTcyNTcKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKwor
ICAgICAgICBDaHJpcyBhbmQgQWxleCByZXF1ZXN0ZWQgdGhpcyBhbHRlcm5hdGUgc3R5bGUsIHdo
ZXJlIHRoZSBlbnVtIGNsYXNzIGZvciBlYWNoIGVudW1lcmF0aW9uCisgICAgICAgIGdvZXMgaW5z
aWRlIHRoZSBjbGFzcyBmb3IgdGhlIGludGVyZmFjZSB0aGUgZW51bWVyYXRpb24gaXMgdXNlZCBp
bi4gQWxzbyBtYWRlIGEgcnVsZSB0aGF0CisgICAgICAgIGtlZXBzIHRoZSBuYW1lcyBzaG9ydCBh
bmQgbm90IHJlZHVuZGFudCB3aXRoIHRoZSBjbGFzcyBuYW1lIHRoZXkgYXJlIG5lc3RlZCBpbi4K
KworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hPcHRpb25zLmg6IE1vdmVkIGFsbCB0aGUg
ZW51bSBjbGFzcyB0eXBlcyBpbnRvIHRoZSBzdHJ1Y3QuCisKKyAgICAgICAgKiBNb2R1bGVzL2Zl
dGNoL0ZldGNoUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRSZWZlcnJlclBvbGlj
eSk6IFVwZGF0ZWQuCisgICAgICAgIChXZWJDb3JlOjpzZXRNb2RlKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpzZXRDcmVkZW50aWFscyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6c2V0
Q2FjaGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnNldFJlZGlyZWN0KTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpidWlsZE9wdGlvbnMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OmJ1aWxkSGVhZGVycyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXF1ZXN0Ojpj
cmVhdGUpOiBEaXR0by4KKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5oOiBV
c2VkICJ1c2luZyIgdG8gcmVwZWF0IHRoZSB0eXBlcyBmcm9tIEZldGNoT3B0aW9ucworICAgICAg
ICBoZXJlIGluIEZldGNoUmVxdWVzdC4gVGhhdCB3YXkgdGhlIGdlbmVyYXRlZCBiaW5kaW5ncyBj
YW4gZmluZCB0aGUgdHlwZXMsIGFuZCB3ZSBkb24ndAorICAgICAgICBuZWVkIHRvIGRvIGFueSB0
cmljayBsaWtlIFtJbXBsZW1lbnRlZEFzXSBpbiB0aGQgSURMIHRvIG1ha2UgaXQgd29yay4KKwor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaFJlc3BvbnNlOjplcnJvcik6IFVwZGF0ZWQuCisgICAgICAgIChXZWJDb3JlOjpG
ZXRjaFJlc3BvbnNlOjpyZWRpcmVjdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hS
ZXNwb25zZTo6RmV0Y2hSZXNwb25zZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hS
ZXNwb25zZTo6c3RhcnRGZXRjaGluZyk6IERpdHRvLgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5oOiBNb3ZlZCBlbnVtIGNsYXNzIGludG8gdGhlIGNsYXNzLgorCisgICAg
ICAgICogTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNIb3N0OjpleHRlcm5hbERldmljZVR5cGUpOiBVcGRh
dGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNvbnRyb2xzSG9zdC5o
OiBNb3ZlZCBlbnVtIGNsYXNzcyBpbnRvIHRoZSBjbGFzcy4KKworICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNl
c3Npb246Ok1lZGlhU2Vzc2lvbik6IFVwZGF0ZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNl
c3Npb24vTWVkaWFTZXNzaW9uLmg6IE1vdmVkIGVudW0gY2xhc3NzIGludG8gdGhlIGNsYXNzLgor
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6YWRkU291cmNlQnVmZmVyKTogVXBkYXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpyZW1vdmVTb3VyY2VCdWZmZXIpOiBEaXR0by4KKwor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaDogTW92ZWQgZW51bSBj
bGFzcyBpbnRvIHRoZSBjbGFzcy4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291
cmNlQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6c291cmNlQnVm
ZmVyUHJpdmF0ZURpZFJlY2VpdmVSZW5kZXJpbmdFcnJvcik6IFVwZGF0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXI6OmFwcGVuZEVycm9yKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlU2FtcGxlKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnRleHRUcmFja01vZGVDaGFu
Z2VkKTogRGl0dG8uCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZl
ci5oOiBSZW1vdmVkIGluY29ycmVjdCBmb3J3YXJkIGRlY2xhcmF0aW9uCisgICAgICAgIG9mIEVu
ZE9mU3RyZWFtRXJyb3IgdGhhdCBhbHNvIG5vdyBzZWVtcyB0byBiZSB1bm5lZWRlZC4gTW92ZWQg
ZW51bSBjbGFzcyBpbnRvCisgICAgICAgIHRoZSBjbGFzcy4KKworICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
RGV2aWNlSW5mbzo6TWVkaWFEZXZpY2VJbmZvKTogVXBkYXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhRGV2aWNlSW5mbzo6Y3JlYXRlKTogRGl0dG8uCisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYURldmljZUluZm8uaDogTW92ZWQgZW51bSBjbGFzcyBpbnRvIHRoZSBjbGFz
cy4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYURldmljZXNSZXF1ZXN0OjpkaWRDb21wbGV0ZVRy
YWNrU291cmNlSW5mb1JlcXVlc3QpOiBVcGRhdGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVh
bVRyYWNrOjpyZWFkeVN0YXRlKTogVXBkYXRlZC4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oOiBNb3ZlZCBlbnVtIGNsYXNzIGludG8gdGhlIGNsYXNz
LgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENDb25maWd1cmF0aW9uLmg6IE1v
dmVkIGVudW0gY2xhc3NlcyBpbnRvIHRoZSBjbGFzcy4KKworICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0Lmg6IE1vdmVkIGVudW0gY2xhc3MgaW50byB0aGUgY2xhc3MuCisK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnByb2Nlc3NvclR5cGUpOiBVcGRhdGVkLgorICAgICAgICAoV2ViQ29yZTo6V2F2
ZVNoYXBlck5vZGU6Om92ZXJzYW1wbGUpOiBEaXR0by4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
ZGlvL1dhdmVTaGFwZXJOb2RlLmg6IE1vdmVkIGVudW0gY2xhc3MgaW50byB0aGUgY2xhc3MuCisK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlKTogVXBkYXRlZC4KKworICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2Vu
ZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RCb2R5KTogUmVtb3ZlZCB1bm5lZWRlZCAkaW50ZXJmYWNl
TmFtZSBhcmd1bWVudC4KKyAgICAgICAgKEdldEF0dHJpYnV0ZUdldHRlck5hbWUpOiBEaXR0by4K
KyAgICAgICAgKEdldEF0dHJpYnV0ZVNldHRlck5hbWUpOiBEaXR0by4KKyAgICAgICAgKEdldEZ1
bmN0aW9uTmFtZSk6IFR3ZWFrZWQgc3R5bGUuCisgICAgICAgIChBdHRyaWJ1dGVTaG91bGRCZU9u
SW5zdGFuY2VGb3JDb21wYXRpYmlsaXR5KTogRGVsZXRlZC4gV2FzIGEgZnVuY3Rpb24gdGhhdAor
ICAgICAgICBhbHdheXMgcmV0dXJuZWQgMC4KKyAgICAgICAgKEF0dHJpYnV0ZVNob3VsZEJlT25J
bnN0YW5jZSk6IFJlbW92ZWQgdGhlIGNhbGwgdG8gdGhlIGZ1bmN0aW9uIGFib3ZlLgorICAgICAg
ICAoSXNDbGFzc05hbWVXb3JkQm91bmRhcnkpOiBBZGRlZC4gSGVscGVyIGZvciBmdW5jdGlvbiBi
ZWxvdy4KKyAgICAgICAgKElzUHJlZml4UmVtb3ZhYmxlKTogRGl0dG8uCisgICAgICAgIChHZXRF
bnVtZXJhdGlvbkNsYXNzTmFtZSk6IEFkZGVkIGFuICRpbnRlcmZhY2UgYXJndW1lbnQgYW5kIGNo
YW5nZWQgdGhpcworICAgICAgICBzbyBpdCBjcmVhdGVzIGEgbmVzdGVkIG5hbWUgaW5zaWRlIHRo
ZSBjbGFzcyByYXRoZXIgdGhhbiBhIHRvcCBsZXZlbCBuYW1lCisgICAgICAgIGZvciB1c2UgYXQg
dGhlIFdlYkNvcmUgbmFtZXNwYWNlIGxldmVsLgorICAgICAgICAoR2V0RW51bWVyYXRpb25DbGFz
c0lkZW50aWZpZXIpOiBBZGRlZC4gQ2FsbHMgR2V0RW51bWVyYXRpb25DbGFzc05hbWUgYW5kCisg
ICAgICAgIG1ha2VzIGEgZmxhdHRlbmVkIG5hbWUgd2l0aG91dCAiOjoiIHRoYXQgY2FuIGJlIHVz
ZWQgaW4gYW4gaWRlbnRpZmllci4KKyAgICAgICAgKEdlbmVyYXRlRW51bWVyYXRpb25JbXBsZW1l
bnRhdGlvbkNvbnRlbnQpOiBSZW5hbWVkIGZyb20gR2V0WFhYLiBBZGRlZCBhbgorICAgICAgICAk
aW50ZXJmYWNlIGFyZ3VtZW50LCBzbyBpdCBjYW4gcGFzcyB0aGF0IGFsb25nIHRvIHRoZSBmdW5j
dGlvbnMgYWJvdmUuCisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6IFVwZGF0ZWQgdG8gbm90IHBh
c3MgJGludGVyZmFjZU5hbWUuCisgICAgICAgIChHZW5lcmF0ZVByb3BlcnRpZXNIYXNoVGFibGUp
OiBEaXR0by4KKyAgICAgICAgKEdlbmVyYXRlT3ZlcmxvYWRlZEZ1bmN0aW9uKTogUmVtb3ZlZCB1
bm5lZWRlZCAkaW50ZXJmYWNlTmFtZSBhcmd1bWVudC4KKyAgICAgICAgKEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24pOiBVcGRhdGVkIGZvciBjaGFuZ2VzIGFib3ZlLiBUd2Vha2VkIGZvcm1hdHRpbmcu
CisgICAgICAgIChHZW5lcmF0ZUZ1bmN0aW9uQ2FzdGVkVGhpcyk6IFJlbW92ZWQgdW5uZWVkZWQg
JGludGVyZmFjZU5hbWUgYXJndW1lbnQuCisgICAgICAgIChHZW5lcmF0ZVBhcmFtZXRlcnNDaGVj
ayk6IERpdHRvLiBBbHNvIHN0cmVhbWxpbmVkIGltcGxlbWVudGF0aW9uIGEgYml0CisgICAgICAg
IGFuZCBtYWRlIHRoZSBJc0VudW1UeXBlIHNlY3Rpb24gY2FsbCB0aGUgbmV3IGZ1bmN0aW9ucy4K
KyAgICAgICAgKEdlbmVyYXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlvbik6IERpdHRvLgorICAgICAg
ICAoSlNWYWx1ZVRvTmF0aXZlKTogQWRkZWQgYW4gJGludGVyZmFjZSBhcmd1bWVudCBhbmQgcGFz
cyBpdCBhbG9uZyB3aGVuCisgICAgICAgIGRlYWxpbmcgd2l0aCBlbnVtZXJhdGlvbnMuCisgICAg
ICAgIChHZW5lcmF0ZVByb3RvdHlwZURlY2xhcmF0aW9uKTogUmVtb3ZlZCB1bm5lZWRlZCAkaW50
ZXJmYWNlTmFtZSBhcmd1bWVudC4KKyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0b3JEZWNsYXJh
dGlvbik6IERpdHRvLgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb25zKTog
RGl0dG8uCisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbik6IERpdHRvLgor
ICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMpOiBEaXR0by4KKworICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOiBSZWdlbmVyYXRl
ZC4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbDogQWRkZWQg
c29tZSBuZXcgZW51bXMgdGhhdCB0ZXN0IHNvbWUKKyAgICAgICAgb2YgdGhlIGxvZ2ljIGFib3Zl
LgorCisgICAgICAgICogY3J5cHRvL0NyeXB0b0tleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
cnlwdG9LZXk6OkNyeXB0b0tleSk6IFVwZGF0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9L
ZXk6OnVzYWdlcyk6IERpdHRvLgorICAgICAgICAqIGNyeXB0by9DcnlwdG9LZXkuaDogTW92ZWQg
ZW51bSBjbGFzcyB0eXBlcyBpbnNpZGUgdGhlIENyeXB0b0tleSBjbGFzcy4KKyAgICAgICAgQWRk
ZWQgY29tbWVudHMgYWJvdXQgdGhlIHR3byBzaW1pbGFyIGJ1dCBkaXN0aW5jdCB0eXBlcyBuYW1l
ZAorICAgICAgICBDcnlwdG9LZXlVc2FnZSBhbmQgQ3J5cHRvS2V5OjpVc2FnZS4KKworICAgICAg
ICAqIGNzcy9Gb250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6c3RhdHVz
KTogVXBkYXRlZC4KKyAgICAgICAgKiBjc3MvRm9udEZhY2UuaDogTW92ZWQgZW51bSBjbGFzcyBp
bnRvIHRoZSBjbGFzcy4KKworICAgICAgICAqIGNzcy9Gb250RmFjZVNldC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb250RmFjZVNldDo6c3RhdHVzKTogVXBkYXRlZC4KKyAgICAgICAgKiBjc3Mv
Rm9udEZhY2VTZXQuaDogTW92ZWQgZW51bSBjbGFzcyBpbnRvIHRoZSBjbGFzcy4KKworICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1l
bnQpOiBVcGRhdGVkIGZvciB0aGUgbmFtZSBjaGFuZ2UgYmFjayBmcm9tCisgICAgICAgIFJlZmVy
cmVySGVhZGVyUG9saWN5IHRvIFJlZmVycmVyUG9saWN5LgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OnByb2Nlc3NSZWZlcnJlclBvbGljeSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OmFwcGx5Q29udGVudERpc3Bvc2l0aW9uQXR0YWNobWVudFNhbmRib3gpOiBEaXR0
by4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDogTW9yZSBvZiB0aGUgc2FtZS4KKworICAgICAg
ICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50Ojpsb2FkSW50ZXJuYWwpOiBVcGRhdGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrTW9kZUNoYW5nZWQpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja0tpbmRDaGFuZ2VkKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tBZGRDdWVzKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tBZGRDdWUp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFj
ayk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y29uZmlndXJl
VGV4dFRyYWNrR3JvdXApOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6OnNldFNlbGVjdGVkVGV4dFRyYWNrKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50Ojpjb25maWd1cmVUZXh0VHJhY2tzKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjpoYXNDbG9zZWRDYXB0aW9ucyk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y29uZmlndXJlVGV4dFRyYWNrRGlzcGxheSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWFya0NhcHRpb25B
bmRTdWJ0aXRsZVRyYWNrc0FzVW5jb25maWd1cmVkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
Ojp0b1BsYXRmb3JtKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjpvdXRPZkJhbmRUcmFja1NvdXJjZXMpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxUcmFj
a0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyYWNrRWxlbWVudDo6c2NoZWR1
bGVMb2FkKTogRGl0dG8uCisKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuaDogTW92
ZWQgZW51bSBjbGFzcyBpbnRvIGNsYXNzLgorCisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVt
ZW50LmlkbDogQWRkZWQgdGhlIG1pc3NpbmcgY29uZGl0aW9uYWwgb24KKyAgICAgICAgVmlkZW9Q
cmVzZW50YXRpb25Nb2RlLCBhbmQgYWxzbyBtb3ZlZCBpdCB0byB0aGUgYm90dG9tIG9mIHRoZSBm
aWxlCisgICAgICAgIHRvIHdvcmsgYXJvdW5kIHdoYXQgaXMgYXBwYXJlbnRseSBhIGJ1ZyBpbiB0
aGUgSURMIHBhcnNlci4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1dpbmRSdWxlKTogVXBkYXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjbGlwKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGxJbnRlcm5h
bCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpj
bGlwSW50ZXJuYWwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6aXNQb2ludEluUGF0aCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjppc1BvaW50SW5QYXRoSW50ZXJuYWwpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OnNtb290aGluZ1RvSW50ZXJwb2xhdGlvblF1YWxpdHkpOiBEaXR0by4KKwor
ICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oOiBNb3ZlZCBl
bnVtIGNsYXNzIHR5cGVzIGludG8gdGhlIGNsYXNzLgorCisgICAgICAgICogaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9s
Q2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50Ojp1cGRhdGVEaXNwbGF5KTogVXBkYXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6
OnVwZGF0ZURpc3BsYXkpOiBEaXR0by4KKworICAgICAgICAqIGh0bWwvdHJhY2svSW5iYW5kVGV4
dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFjazo6c2V0TW9kZSk6
IFVwZGF0ZWQuCisgICAgICAgIChXZWJDb3JlOjp0b1ByaXZhdGUpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkluYmFuZFRleHRUcmFjazo6c2V0TW9kZUludGVybmFsKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2s6OnVwZGF0ZUtpbmRGcm9tUHJpdmF0ZSk6IERp
dHRvLgorICAgICAgICAqIGh0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmg6IERpdHRvLgorICAg
ICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRU
cmFjazo6VGV4dFRyYWNrKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmVu
YWJsZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6a2luZEtleXdvcmQp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6c2V0S2luZCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpzZXRLaW5kS2V5d29yZElnbm9yaW5nQVNDSUlD
YXNlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnNldE1vZGUpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6Y3Vlcyk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6VGV4dFRyYWNrOjphY3RpdmVDdWVzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpUZXh0VHJhY2s6OmFkZEN1ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNr
OjpyZWdpb25zKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmlzUmVuZGVy
ZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6aXNNYWluUHJvZ3JhbUNv
bnRlbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6Y29udGFpbnNPbmx5
Rm9yY2VkU3VidGl0bGVzKTogRGl0dG8uCisKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFj
ay5oOiBNb3ZlZCBlbnVtIGNsYXNzIHR5cGVzIGludG8gdGhlIGNsYXNzLgorCisgICAgICAgICog
aHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNr
Q3VlOjpkaXNwYXRjaEV2ZW50KTogVXBkYXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFj
a0N1ZTo6aXNBY3RpdmUpOiBEaXR0by4KKyAgICAgICAgKiBsb2FkZXIvRnJhbWVOZXR3b3JraW5n
Q29udGV4dC5oOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c29ydGVkVHJh
Y2tMaXN0Rm9yTWVudSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVm
ZXJlbmNlczo6dGV4dFRyYWNrU2VsZWN0aW9uU2NvcmUpOiBEaXR0by4KKyAgICAgICAgKiBwYWdl
L0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
cHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjp0ZXh0VHJhY2tTZWxlY3Rpb25TY29yZSk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OnNv
cnRlZFRyYWNrTGlzdEZvck1lbnUpOiBEaXR0by4KKworICAgICAgICAqIHBhZ2UvU2VjdXJpdHlQ
b2xpY3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVm
ZXJyZXJIZWFkZXIpOiBVcGRhdGVkIHNpbmNlIHdlCisgICAgICAgIGNoYW5nZWQgUmVmZXJyZXJI
ZWFkZXJQb2xpY3kgYmFjayB0byBSZWZlcnJlclBvbGljeS4KKyAgICAgICAgKiBwYWdlL1NlY3Vy
aXR5UG9saWN5Lmg6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vUmVmZXJyZXJQb2xpY3ku
aDogQ2hhbmdlZCBSZWZlcnJlckhlYWRlclBvbGljeSBuYW1lIGJhY2sKKyAgICAgICAgdG8gUmVm
ZXJyZXJQb2xpY3kgbm93IHRoYXQgbmVzdGluZyBpbnNpZGUgYSBjbGFzcyBlbGltaW5hdGVkIHRo
ZSBjb25mbGljdDsKKyAgICAgICAgc3RpbGwgc2hvdWxkIG1lcmdlIHRoZW0gYW5kIHRoYXQgRklY
TUUgcmVtYWlucy4KKworICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsTWVkaWFFbGVtZW50Lm1tOgorICAgICAgICAoV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxN
ZWRpYUVsZW1lbnQ6OnVwZGF0ZUZvckV2ZW50TmFtZSk6IFVwZGF0ZWQuCisgICAgICAgIChXZWJQ
bGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6dXBkYXRlTGVnaWJsZU9wdGlvbnMpOiBE
aXR0by4KKworICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnRvUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kpOiBVcGRhdGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SW50ZXJuYWxzOjpzZXRPdmVycmlkZUNhY2hlUG9saWN5KTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjp0b1Jlc291cmNlTG9hZFByaW9yaXR5KTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpJbnRlcm5hbHM6OnNldE92ZXJyaWRlUmVzb3VyY2VMb2FkUHJpb3JpdHkpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OnRvQXV0b0ZpbGxCdXR0b25UeXBlKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldFNob3dBdXRvRmlsbEJ1dHRvbik6IERpdHRvLgorCisg
ICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDogTW92ZWQgZW51bSBjbGFzcyB0eXBlcyBpbnRv
IGNsYXNzLgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOiBSZW1vdmVkIHRoZSAi
SW50ZXJuYWxzIiBwcmVmaXhlcyB3ZSBhZGRlZAorICAgICAgICB0byByZXNvbHZlIGFtYmlndWl0
eSBiZWZvcmUuIE5lc3RpbmcgdGhlc2UgaW4gdGhlIGNsYXNzIG5vdyB0YWtlcyBjYXJlCisgICAg
ICAgIG9mIHRoZSBhbWJpZ3VpdHkgaW5zdGVhZC4KKworICAgICAgICAqIHhtbC9YTUxIdHRwUmVx
dWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VUZXh0
KTogVXBkYXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRDYWNoZVJl
c3BvbnNlSlNPTik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OnJl
c3BvbnNlWE1MKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6cmVz
cG9uc2VCbG9iKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6cmVz
cG9uc2VBcnJheUJ1ZmZlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVl
c3Q6OnNldFJlc3BvbnNlVHlwZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJl
cXVlc3Q6Om9wZW4pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZERlY29kZVJlc3Bv
bnNlKTogRGl0dG8uCisKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuaDogTW92ZWQgdGhl
IGVudW0gY2xhc3MgaW50byB0aGUgY2xhc3MuCisKIDIwMTYtMDUtMDIgIFNpbW9uIEZyYXNlciAg
PHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgRG9uJ3QgcnVuIHRyYW5zaXRpb25z
IHRvL2Zyb20gJ2F1dG8nIHZhbHVlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDY5M2FkNjM3ZWU2MTVkNDQxYjM3
MzI4YzA2MjdiYTE3MWJhNjZmNjYuLjUzNjIwZTllNzU2YzkzZTg1YjIwNDk1MjEyNjk0ZmY1YjNl
MGE5YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNi0wNS0wMiAgRGFyaW4gQWRs
ZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIElETCBlbnVtZXJhdGlvbnMg
dG8gYmUgbmVzdGVkIGluIHRoZWlyIEMrKyBjbGFzcyBpbnN0ZWFkIG9mIGF0IFdlYkNvcmUgbmFt
ZXNwYWNlIGxldmVsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTcyNTcKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2UpOiBVcGRhdGVkIHNpbmNlIHdl
IGNoYW5nZWQKKyAgICAgICAgUmVmZXJyZXJIZWFkZXJQb2xpY3kgYmFjayB0byBSZWZlcnJlclBv
bGljeS4KKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlUGx1Z2lu
U3RyZWFtTG9hZCk6IERpdHRvLgorCiAyMDE2LTA1LTAyICBCcmFkeSBFaWRzb24gIDxiZWlkc29u
QGFwcGxlLmNvbT4KIAogICAgICAgICBDb25zdC1pZnkgc29tZSBJREIgY29kZS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hPcHRpb25zLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoT3B0aW9ucy5oCmluZGV4IDgxZjA3ZDE5YWUwMDUy
YmJiZmUyZWU2YzMxYjRiMGExM2RkNmUyZjkuLjk5M2Q3MDhhODAzNmI4YmU1ZTk0Yzg3YWYxMzQ5
NjE5NzA4OTE1ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaE9wdGlv
bnMuaApAQCAtMzIsMjEgKzMyLDI2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBj
bGFzcyBSZWZlcnJlclBvbGljeSB7IEVtcHR5U3RyaW5nLCBOb1JlZmVycmVyLCBOb1JlZmVycmVy
V2hlbkRvd25ncmFkZSwgT3JpZ2luT25seSwgT3JpZ2luV2hlbkNyb3NzT3JpZ2luLCBVbnNhZmVV
cmwgfTsKLWVudW0gY2xhc3MgUmVxdWVzdENhY2hlIHsgRGVmYXVsdCwgTm9TdG9yZSwgUmVsb2Fk
LCBOb0NhY2hlLCBGb3JjZUNhY2hlIH07Ci1lbnVtIGNsYXNzIFJlcXVlc3RDcmVkZW50aWFscyB7
IE9taXQsIFNhbWVPcmlnaW4sIEluY2x1ZGUgfTsKLWVudW0gY2xhc3MgUmVxdWVzdERlc3RpbmF0
aW9uIHsgRW1wdHlTdHJpbmcsIERvY3VtZW50LCBTaGFyZWR3b3JrZXIsIFN1YnJlc291cmNlLCBV
bmtub3duLCBXb3JrZXIgfTsKLWVudW0gY2xhc3MgUmVxdWVzdE1vZGUgeyBOYXZpZ2F0ZSwgU2Ft
ZU9yaWdpbiwgTm9Db3JzLCBDb3JzIH07Ci1lbnVtIGNsYXNzIFJlcXVlc3RSZWRpcmVjdCB7IEZv
bGxvdywgRXJyb3IsIE1hbnVhbCB9OwotZW51bSBjbGFzcyBSZXF1ZXN0VHlwZSB7IEVtcHR5U3Ry
aW5nLCBBdWRpbywgRm9udCwgSW1hZ2UsIFNjcmlwdCwgU3R5bGUsIFRyYWNrLCBWaWRlbyB9Owot
CiBzdHJ1Y3QgRmV0Y2hPcHRpb25zIHsKLSAgICBSZXF1ZXN0VHlwZSB0eXBlIHsgUmVxdWVzdFR5
cGU6OkVtcHR5U3RyaW5nIH07Ci0gICAgUmVxdWVzdERlc3RpbmF0aW9uIGRlc3RpbmF0aW9uIHsg
UmVxdWVzdERlc3RpbmF0aW9uOjpFbXB0eVN0cmluZyB9OwotICAgIFJlcXVlc3RNb2RlIG1vZGUg
eyBSZXF1ZXN0TW9kZTo6Tm9Db3JzIH07Ci0gICAgUmVxdWVzdENyZWRlbnRpYWxzIGNyZWRlbnRp
YWxzIHsgUmVxdWVzdENyZWRlbnRpYWxzOjpPbWl0IH07Ci0gICAgUmVxdWVzdENhY2hlIGNhY2hl
IHsgUmVxdWVzdENhY2hlOjpEZWZhdWx0IH07Ci0gICAgUmVxdWVzdFJlZGlyZWN0IHJlZGlyZWN0
IHsgUmVxdWVzdFJlZGlyZWN0OjpGb2xsb3cgfTsKKyAgICBlbnVtIGNsYXNzIFR5cGUgeyBFbXB0
eVN0cmluZywgQXVkaW8sIEZvbnQsIEltYWdlLCBTY3JpcHQsIFN0eWxlLCBUcmFjaywgVmlkZW8g
fTsKKyAgICBUeXBlIHR5cGUgeyBUeXBlOjpFbXB0eVN0cmluZyB9OworCisgICAgZW51bSBjbGFz
cyBEZXN0aW5hdGlvbiB7IEVtcHR5U3RyaW5nLCBEb2N1bWVudCwgU2hhcmVkd29ya2VyLCBTdWJy
ZXNvdXJjZSwgVW5rbm93biwgV29ya2VyIH07CisgICAgRGVzdGluYXRpb24gZGVzdGluYXRpb24g
eyBEZXN0aW5hdGlvbjo6RW1wdHlTdHJpbmcgfTsKKworICAgIGVudW0gY2xhc3MgTW9kZSB7IE5h
dmlnYXRlLCBTYW1lT3JpZ2luLCBOb0NvcnMsIENvcnMgfTsKKyAgICBNb2RlIG1vZGUgeyBNb2Rl
OjpOb0NvcnMgfTsKKworICAgIGVudW0gY2xhc3MgQ3JlZGVudGlhbHMgeyBPbWl0LCBTYW1lT3Jp
Z2luLCBJbmNsdWRlIH07CisgICAgQ3JlZGVudGlhbHMgY3JlZGVudGlhbHMgeyBDcmVkZW50aWFs
czo6T21pdCB9OworCisgICAgZW51bSBjbGFzcyBDYWNoZSB7IERlZmF1bHQsIE5vU3RvcmUsIFJl
bG9hZCwgTm9DYWNoZSwgRm9yY2VDYWNoZSB9OworICAgIENhY2hlIGNhY2hlIHsgQ2FjaGU6OkRl
ZmF1bHQgfTsKKworICAgIGVudW0gY2xhc3MgUmVkaXJlY3QgeyBGb2xsb3csIEVycm9yLCBNYW51
YWwgfTsKKyAgICBSZWRpcmVjdCByZWRpcmVjdCB7IFJlZGlyZWN0OjpGb2xsb3cgfTsKKworICAg
IGVudW0gY2xhc3MgUmVmZXJyZXJQb2xpY3kgeyBFbXB0eVN0cmluZywgTm9SZWZlcnJlciwgTm9S
ZWZlcnJlcldoZW5Eb3duZ3JhZGUsIE9yaWdpbk9ubHksIE9yaWdpbldoZW5Dcm9zc09yaWdpbiwg
VW5zYWZlVXJsIH07CiAgICAgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3kgeyBSZWZlcnJl
clBvbGljeTo6RW1wdHlTdHJpbmcgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcAppbmRleCAxMGY3YzVjYWY2ZjdlYjkyYTZkMDM0MmRiNjYw
NTEwYThiOTNkOGZhLi4zMDNhODExZWYyY2JlZDFjYjZiYjU1NjA1MmI1ZDBiN2RlMzY1MjFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwCkBAIC00
MiwxNyArNDIsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIGJvb2wgc2V0UmVmZXJy
ZXJQb2xpY3koRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyUG9s
aWN5KQogewogICAgIGlmIChyZWZlcnJlclBvbGljeS5pc0VtcHR5KCkpCi0gICAgICAgIG9wdGlv
bnMucmVmZXJyZXJQb2xpY3kgPSBSZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmc7CisgICAgICAg
IG9wdGlvbnMucmVmZXJyZXJQb2xpY3kgPSBGZXRjaE9wdGlvbnM6OlJlZmVycmVyUG9saWN5OjpF
bXB0eVN0cmluZzsKICAgICBlbHNlIGlmIChyZWZlcnJlclBvbGljeSA9PSAibm8tcmVmZXJyZXIi
KQotICAgICAgICBvcHRpb25zLnJlZmVycmVyUG9saWN5ID0gUmVmZXJyZXJQb2xpY3k6Ok5vUmVm
ZXJyZXI7CisgICAgICAgIG9wdGlvbnMucmVmZXJyZXJQb2xpY3kgPSBGZXRjaE9wdGlvbnM6OlJl
ZmVycmVyUG9saWN5OjpOb1JlZmVycmVyOwogICAgIGVsc2UgaWYgKHJlZmVycmVyUG9saWN5ID09
ICJuby1yZWZlcnJlci13aGVuLWRvd25ncmFkZSIpCi0gICAgICAgIG9wdGlvbnMucmVmZXJyZXJQ
b2xpY3kgPSBSZWZlcnJlclBvbGljeTo6Tm9SZWZlcnJlcldoZW5Eb3duZ3JhZGU7CisgICAgICAg
IG9wdGlvbnMucmVmZXJyZXJQb2xpY3kgPSBGZXRjaE9wdGlvbnM6OlJlZmVycmVyUG9saWN5OjpO
b1JlZmVycmVyV2hlbkRvd25ncmFkZTsKICAgICBlbHNlIGlmIChyZWZlcnJlclBvbGljeSA9PSAi
b3JpZ2luLW9ubHkiKQotICAgICAgICBvcHRpb25zLnJlZmVycmVyUG9saWN5ID0gUmVmZXJyZXJQ
b2xpY3k6Ok9yaWdpbk9ubHk7CisgICAgICAgIG9wdGlvbnMucmVmZXJyZXJQb2xpY3kgPSBGZXRj
aE9wdGlvbnM6OlJlZmVycmVyUG9saWN5OjpPcmlnaW5Pbmx5OwogICAgIGVsc2UgaWYgKHJlZmVy
cmVyUG9saWN5ID09ICJvcmlnaW4td2hlbi1jcm9zcy1vcmlnaW4iKQotICAgICAgICBvcHRpb25z
LnJlZmVycmVyUG9saWN5ID0gUmVmZXJyZXJQb2xpY3k6Ok9yaWdpbldoZW5Dcm9zc09yaWdpbjsK
KyAgICAgICAgb3B0aW9ucy5yZWZlcnJlclBvbGljeSA9IEZldGNoT3B0aW9uczo6UmVmZXJyZXJQ
b2xpY3k6Ok9yaWdpbldoZW5Dcm9zc09yaWdpbjsKICAgICBlbHNlIGlmIChyZWZlcnJlclBvbGlj
eSA9PSAidW5zYWZlLXVybCIpCi0gICAgICAgIG9wdGlvbnMucmVmZXJyZXJQb2xpY3kgPSBSZWZl
cnJlclBvbGljeTo6VW5zYWZlVXJsOworICAgICAgICBvcHRpb25zLnJlZmVycmVyUG9saWN5ID0g
RmV0Y2hPcHRpb25zOjpSZWZlcnJlclBvbGljeTo6VW5zYWZlVXJsOwogICAgIGVsc2UKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwpAQCAtNjEsMTMgKzYxLDEzIEBAIHN0
YXRpYyBib29sIHNldFJlZmVycmVyUG9saWN5KEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3Qg
U3RyaW5nJiByZWZlcnJlclBvbGljCiBzdGF0aWMgYm9vbCBzZXRNb2RlKEZldGNoT3B0aW9ucyYg
b3B0aW9ucywgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIGlmIChtb2RlID09ICJuYXZpZ2F0
ZSIpCi0gICAgICAgIG9wdGlvbnMubW9kZSA9IFJlcXVlc3RNb2RlOjpOYXZpZ2F0ZTsKKyAgICAg
ICAgb3B0aW9ucy5tb2RlID0gRmV0Y2hPcHRpb25zOjpNb2RlOjpOYXZpZ2F0ZTsKICAgICBlbHNl
IGlmIChtb2RlID09ICJzYW1lLW9yaWdpbiIpCi0gICAgICAgIG9wdGlvbnMubW9kZSA9IFJlcXVl
c3RNb2RlOjpTYW1lT3JpZ2luOworICAgICAgICBvcHRpb25zLm1vZGUgPSBGZXRjaE9wdGlvbnM6
Ok1vZGU6OlNhbWVPcmlnaW47CiAgICAgZWxzZSBpZiAobW9kZSA9PSAibm8tY29ycyIpCi0gICAg
ICAgIG9wdGlvbnMubW9kZSA9IFJlcXVlc3RNb2RlOjpOb0NvcnM7CisgICAgICAgIG9wdGlvbnMu
bW9kZSA9IEZldGNoT3B0aW9uczo6TW9kZTo6Tm9Db3JzOwogICAgIGVsc2UgaWYgKG1vZGUgPT0g
ImNvcnMiKQotICAgICAgICBvcHRpb25zLm1vZGUgPSBSZXF1ZXN0TW9kZTo6Q29yczsKKyAgICAg
ICAgb3B0aW9ucy5tb2RlID0gRmV0Y2hPcHRpb25zOjpNb2RlOjpDb3JzOwogICAgIGVsc2UKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwpAQCAtNzYsMTEgKzc2LDExIEBA
IHN0YXRpYyBib29sIHNldE1vZGUoRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcm
IG1vZGUpCiBzdGF0aWMgYm9vbCBzZXRDcmVkZW50aWFscyhGZXRjaE9wdGlvbnMmIG9wdGlvbnMs
IGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbHMpCiB7CiAgICAgaWYgKGNyZWRlbnRpYWxzID09ICJv
bWl0IikKLSAgICAgICAgb3B0aW9ucy5jcmVkZW50aWFscyA9IFJlcXVlc3RDcmVkZW50aWFsczo6
T21pdDsKKyAgICAgICAgb3B0aW9ucy5jcmVkZW50aWFscyA9IEZldGNoT3B0aW9uczo6Q3JlZGVu
dGlhbHM6Ok9taXQ7CiAgICAgZWxzZSBpZiAoY3JlZGVudGlhbHMgPT0gInNhbWUtb3JpZ2luIikK
LSAgICAgICAgb3B0aW9ucy5jcmVkZW50aWFscyA9IFJlcXVlc3RDcmVkZW50aWFsczo6U2FtZU9y
aWdpbjsKKyAgICAgICAgb3B0aW9ucy5jcmVkZW50aWFscyA9IEZldGNoT3B0aW9uczo6Q3JlZGVu
dGlhbHM6OlNhbWVPcmlnaW47CiAgICAgZWxzZSBpZiAoY3JlZGVudGlhbHMgPT0gImluY2x1ZGUi
KQotICAgICAgICBvcHRpb25zLmNyZWRlbnRpYWxzID0gUmVxdWVzdENyZWRlbnRpYWxzOjpJbmNs
dWRlOworICAgICAgICBvcHRpb25zLmNyZWRlbnRpYWxzID0gRmV0Y2hPcHRpb25zOjpDcmVkZW50
aWFsczo6SW5jbHVkZTsKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTg5LDE1ICs4OSwxNSBAQCBzdGF0aWMgYm9vbCBzZXRDcmVkZW50aWFscyhG
ZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgY3JlZGVudGlhbHMpCiBzdGF0aWMg
Ym9vbCBzZXRDYWNoZShGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgY2FjaGUp
CiB7CiAgICAgaWYgKGNhY2hlID09ICJkZWZhdWx0IikKLSAgICAgICAgb3B0aW9ucy5jYWNoZSA9
IFJlcXVlc3RDYWNoZTo6RGVmYXVsdDsKKyAgICAgICAgb3B0aW9ucy5jYWNoZSA9IEZldGNoT3B0
aW9uczo6Q2FjaGU6OkRlZmF1bHQ7CiAgICAgZWxzZSBpZiAoY2FjaGUgPT0gIm5vLXN0b3JlIikK
LSAgICAgICAgb3B0aW9ucy5jYWNoZSA9IFJlcXVlc3RDYWNoZTo6Tm9TdG9yZTsKKyAgICAgICAg
b3B0aW9ucy5jYWNoZSA9IEZldGNoT3B0aW9uczo6Q2FjaGU6Ok5vU3RvcmU7CiAgICAgZWxzZSBp
ZiAoY2FjaGUgPT0gInJlbG9hZCIpCi0gICAgICAgIG9wdGlvbnMuY2FjaGUgPSBSZXF1ZXN0Q2Fj
aGU6OlJlbG9hZDsKKyAgICAgICAgb3B0aW9ucy5jYWNoZSA9IEZldGNoT3B0aW9uczo6Q2FjaGU6
OlJlbG9hZDsKICAgICBlbHNlIGlmIChjYWNoZSA9PSAibm8tY2FjaGUiKQotICAgICAgICBvcHRp
b25zLmNhY2hlID0gUmVxdWVzdENhY2hlOjpOb0NhY2hlOworICAgICAgICBvcHRpb25zLmNhY2hl
ID0gRmV0Y2hPcHRpb25zOjpDYWNoZTo6Tm9DYWNoZTsKICAgICBlbHNlIGlmIChjYWNoZSA9PSAi
Zm9yY2UtY2FjaGUiKQotICAgICAgICBvcHRpb25zLmNhY2hlID0gUmVxdWVzdENhY2hlOjpGb3Jj
ZUNhY2hlOworICAgICAgICBvcHRpb25zLmNhY2hlID0gRmV0Y2hPcHRpb25zOjpDYWNoZTo6Rm9y
Y2VDYWNoZTsKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTEwNiwxMSArMTA2LDExIEBAIHN0YXRpYyBib29sIHNldENhY2hlKEZldGNoT3B0aW9u
cyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiBjYWNoZSkKIHN0YXRpYyBib29sIHNldFJlZGlyZWN0
KEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgU3RyaW5nJiByZWRpcmVjdCkKIHsKICAgICBp
ZiAocmVkaXJlY3QgPT0gImZvbGxvdyIpCi0gICAgICAgIG9wdGlvbnMucmVkaXJlY3QgPSBSZXF1
ZXN0UmVkaXJlY3Q6OkZvbGxvdzsKKyAgICAgICAgb3B0aW9ucy5yZWRpcmVjdCA9IEZldGNoT3B0
aW9uczo6UmVkaXJlY3Q6OkZvbGxvdzsKICAgICBlbHNlIGlmIChyZWRpcmVjdCA9PSAiZXJyb3Ii
KQotICAgICAgICBvcHRpb25zLnJlZGlyZWN0ID0gUmVxdWVzdFJlZGlyZWN0OjpFcnJvcjsKKyAg
ICAgICAgb3B0aW9ucy5yZWRpcmVjdCA9IEZldGNoT3B0aW9uczo6UmVkaXJlY3Q6OkVycm9yOwog
ICAgIGVsc2UgaWYgKHJlZGlyZWN0ID09ICJtYW51YWwiKQotICAgICAgICBvcHRpb25zLnJlZGly
ZWN0ID0gUmVxdWVzdFJlZGlyZWN0OjpNYW51YWw7CisgICAgICAgIG9wdGlvbnMucmVkaXJlY3Qg
PSBGZXRjaE9wdGlvbnM6OlJlZGlyZWN0OjpNYW51YWw7CiAgICAgZWxzZQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xNzMsNyArMTczLDcgQEAgc3RhdGljIGJv
b2wgYnVpbGRPcHRpb25zKEZldGNoUmVxdWVzdDo6SW50ZXJuYWxSZXF1ZXN0JiByZXF1ZXN0LCBT
Y3JpcHRFeGVjdXRpb24KIAogICAgIGlmIChpbml0LmdldCgibW9kZSIsIHZhbHVlKSAmJiAhc2V0
TW9kZShyZXF1ZXN0Lm9wdGlvbnMsIHZhbHVlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGlmIChyZXF1ZXN0Lm9wdGlvbnMubW9kZSA9PSBSZXF1ZXN0TW9kZTo6TmF2aWdhdGUpCisgICAg
aWYgKHJlcXVlc3Qub3B0aW9ucy5tb2RlID09IEZldGNoT3B0aW9uczo6TW9kZTo6TmF2aWdhdGUp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChpbml0LmdldCgiY3JlZGVudGlhbHMi
LCB2YWx1ZSkgJiYgIXNldENyZWRlbnRpYWxzKHJlcXVlc3Qub3B0aW9ucywgdmFsdWUpKQpAQCAt
MTk2LDcgKzE5Niw3IEBAIHN0YXRpYyBib29sIGJ1aWxkT3B0aW9ucyhGZXRjaFJlcXVlc3Q6Oklu
dGVybmFsUmVxdWVzdCYgcmVxdWVzdCwgU2NyaXB0RXhlY3V0aW9uCiBzdGF0aWMgUmVmUHRyPEZl
dGNoSGVhZGVycz4gYnVpbGRIZWFkZXJzKGNvbnN0IERpY3Rpb25hcnkmIGluaXQsIGNvbnN0IEZl
dGNoUmVxdWVzdDo6SW50ZXJuYWxSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBGZXRjaEhlYWRlcnMq
IGlucHV0SGVhZGVycyA9IG51bGxwdHIpCiB7CiAgICAgRmV0Y2hIZWFkZXJzOjpHdWFyZCBndWFy
ZCA9IEZldGNoSGVhZGVyczo6R3VhcmQ6OlJlcXVlc3Q7Ci0gICAgaWYgKHJlcXVlc3Qub3B0aW9u
cy5tb2RlID09IFJlcXVlc3RNb2RlOjpOb0NvcnMpIHsKKyAgICBpZiAocmVxdWVzdC5vcHRpb25z
Lm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpOb0NvcnMpIHsKICAgICAgICAgY29uc3QgU3Ry
aW5nJiBtZXRob2QgPSByZXF1ZXN0LnJlcXVlc3QuaHR0cE1ldGhvZCgpOwogICAgICAgICBpZiAo
bWV0aG9kICE9ICJHRVQiICYmIG1ldGhvZCAhPSAiUE9TVCIgJiYgbWV0aG9kICE9ICJIRUFEIikK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjQ0LDggKzI0NCw4IEBAIFJlZlB0cjxG
ZXRjaFJlcXVlc3Q+IEZldGNoUmVxdWVzdDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIGNvbnN0CiAgICAgfQogCiAgICAgRmV0Y2hSZXF1ZXN0OjpJbnRlcm5hbFJlcXVl
c3QgaW50ZXJuYWxSZXF1ZXN0OwotICAgIGludGVybmFsUmVxdWVzdC5vcHRpb25zLm1vZGUgPSBS
ZXF1ZXN0TW9kZTo6Q29yczsKLSAgICBpbnRlcm5hbFJlcXVlc3Qub3B0aW9ucy5jcmVkZW50aWFs
cyA9IFJlcXVlc3RDcmVkZW50aWFsczo6T21pdDsKKyAgICBpbnRlcm5hbFJlcXVlc3Qub3B0aW9u
cy5tb2RlID0gTW9kZTo6Q29yczsKKyAgICBpbnRlcm5hbFJlcXVlc3Qub3B0aW9ucy5jcmVkZW50
aWFscyA9IENyZWRlbnRpYWxzOjpPbWl0OwogICAgIGludGVybmFsUmVxdWVzdC5yZWZlcnJlciA9
IEFTQ0lJTGl0ZXJhbCgiY2xpZW50Iik7CiAgICAgaW50ZXJuYWxSZXF1ZXN0LnJlcXVlc3Quc2V0
VVJMKHJlcXVlc3RVUkwpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJl
cXVlc3QuaAppbmRleCA1ZjU0ODA2OWRhNTIxYmQwZGY0YTM3NGJjYTU5NjEwOTcyZGY4NjAyLi5k
YjRkMjIwYzI3YTJkYjNjMjJiNmI5Zjg4NjY4NmMzY2JjYzczMzJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmgKQEAgLTUyLDE0ICs1MiwyOSBAQCBwdWJs
aWM6CiAgICAgY29uc3QgU3RyaW5nJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsUmVx
dWVzdC5yZXF1ZXN0LnVybCgpLnN0cmluZygpOyB9CiAgICAgRmV0Y2hIZWFkZXJzJiBoZWFkZXJz
KCkgeyByZXR1cm4gbV9oZWFkZXJzLmdldCgpOyB9CiAKLSAgICBSZXF1ZXN0VHlwZSB0eXBlKCkg
Y29uc3Q7Ci0gICAgUmVxdWVzdERlc3RpbmF0aW9uIGRlc3RpbmF0aW9uKCkgY29uc3Q7CisgICAg
dXNpbmcgVHlwZSA9IEZldGNoT3B0aW9uczo6VHlwZTsKKyAgICBUeXBlIHR5cGUoKSBjb25zdDsK
KworICAgIHVzaW5nIERlc3RpbmF0aW9uID0gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjsKKyAg
ICBEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbigpIGNvbnN0OworCiAgICAgU3RyaW5nIHJlZmVycmVy
KCkgY29uc3Q7CisKKyAgICB1c2luZyBSZWZlcnJlclBvbGljeSA9IEZldGNoT3B0aW9uczo6UmVm
ZXJyZXJQb2xpY3k7CiAgICAgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3koKSBjb25zdDsK
LSAgICBSZXF1ZXN0TW9kZSBtb2RlKCkgY29uc3Q7Ci0gICAgUmVxdWVzdENyZWRlbnRpYWxzIGNy
ZWRlbnRpYWxzKCkgY29uc3Q7Ci0gICAgUmVxdWVzdENhY2hlIGNhY2hlKCkgY29uc3Q7Ci0gICAg
UmVxdWVzdFJlZGlyZWN0IHJlZGlyZWN0KCkgY29uc3Q7CisKKyAgICB1c2luZyBNb2RlID0gRmV0
Y2hPcHRpb25zOjpNb2RlOworICAgIE1vZGUgbW9kZSgpIGNvbnN0OworCisgICAgdXNpbmcgQ3Jl
ZGVudGlhbHMgPSBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOworICAgIENyZWRlbnRpYWxzIGNy
ZWRlbnRpYWxzKCkgY29uc3Q7CisKKyAgICB1c2luZyBDYWNoZSA9IEZldGNoT3B0aW9uczo6Q2Fj
aGU7CisgICAgQ2FjaGUgY2FjaGUoKSBjb25zdDsKKworICAgIHVzaW5nIFJlZGlyZWN0ID0gRmV0
Y2hPcHRpb25zOjpSZWRpcmVjdDsKKyAgICBSZWRpcmVjdCByZWRpcmVjdCgpIGNvbnN0OworCiAg
ICAgY29uc3QgU3RyaW5nJiBpbnRlZ3JpdHkoKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsUmVx
dWVzdC5pbnRlZ3JpdHk7IH0KIAogICAgIFJlZlB0cjxGZXRjaFJlcXVlc3Q+IGNsb25lKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBFeGNlcHRpb25Db2RlJik7CkBAIC05MiwzNyArMTA3LDM3IEBA
IGlubGluZSBGZXRjaFJlcXVlc3Q6OkZldGNoUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBGZXRjaEJvZHkmJiBiCiB7CiB9CiAKLWlubGluZSBSZXF1ZXN0Q2FjaGUgRmV0
Y2hSZXF1ZXN0OjpjYWNoZSgpIGNvbnN0CitpbmxpbmUgYXV0byBGZXRjaFJlcXVlc3Q6OmNhY2hl
KCkgY29uc3QgLT4gQ2FjaGUKIHsKICAgICByZXR1cm4gbV9pbnRlcm5hbFJlcXVlc3Qub3B0aW9u
cy5jYWNoZTsKIH0KIAotaW5saW5lIFJlcXVlc3RDcmVkZW50aWFscyBGZXRjaFJlcXVlc3Q6OmNy
ZWRlbnRpYWxzKCkgY29uc3QKK2lubGluZSBhdXRvIEZldGNoUmVxdWVzdDo6Y3JlZGVudGlhbHMo
KSBjb25zdCAtPiBDcmVkZW50aWFscwogewogICAgIHJldHVybiBtX2ludGVybmFsUmVxdWVzdC5v
cHRpb25zLmNyZWRlbnRpYWxzOwogfQogCi1pbmxpbmUgUmVxdWVzdERlc3RpbmF0aW9uIEZldGNo
UmVxdWVzdDo6ZGVzdGluYXRpb24oKSBjb25zdAoraW5saW5lIGF1dG8gRmV0Y2hSZXF1ZXN0Ojpk
ZXN0aW5hdGlvbigpIGNvbnN0IC0+IERlc3RpbmF0aW9uCiB7CiAgICAgcmV0dXJuIG1faW50ZXJu
YWxSZXF1ZXN0Lm9wdGlvbnMuZGVzdGluYXRpb247CiB9CiAKLWlubGluZSBSZXF1ZXN0TW9kZSBG
ZXRjaFJlcXVlc3Q6Om1vZGUoKSBjb25zdAoraW5saW5lIGF1dG8gRmV0Y2hSZXF1ZXN0Ojptb2Rl
KCkgY29uc3QgLT4gTW9kZQogewogICAgIHJldHVybiBtX2ludGVybmFsUmVxdWVzdC5vcHRpb25z
Lm1vZGU7CiB9CiAKLWlubGluZSBSZXF1ZXN0UmVkaXJlY3QgRmV0Y2hSZXF1ZXN0OjpyZWRpcmVj
dCgpIGNvbnN0CitpbmxpbmUgYXV0byBGZXRjaFJlcXVlc3Q6OnJlZGlyZWN0KCkgY29uc3QgLT4g
UmVkaXJlY3QKIHsKICAgICByZXR1cm4gbV9pbnRlcm5hbFJlcXVlc3Qub3B0aW9ucy5yZWRpcmVj
dDsKIH0KIAotaW5saW5lIFJlZmVycmVyUG9saWN5IEZldGNoUmVxdWVzdDo6cmVmZXJyZXJQb2xp
Y3koKSBjb25zdAoraW5saW5lIGF1dG8gRmV0Y2hSZXF1ZXN0OjpyZWZlcnJlclBvbGljeSgpIGNv
bnN0IC0+IFJlZmVycmVyUG9saWN5CiB7CiAgICAgcmV0dXJuIG1faW50ZXJuYWxSZXF1ZXN0Lm9w
dGlvbnMucmVmZXJyZXJQb2xpY3k7CiB9CiAKLWlubGluZSBSZXF1ZXN0VHlwZSBGZXRjaFJlcXVl
c3Q6OnR5cGUoKSBjb25zdAoraW5saW5lIGF1dG8gRmV0Y2hSZXF1ZXN0Ojp0eXBlKCkgY29uc3Qg
LT4gVHlwZQogewogICAgIHJldHVybiBtX2ludGVybmFsUmVxdWVzdC5vcHRpb25zLnR5cGU7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAppbmRl
eCAyMWE4NDFmYzQ2YjNjNTI1MDUzNjYyMmYwOTA5ZjI3ZmVjMDhlOTk0Li4zNWJlMjQzOTRmZTRh
YzI1ZTAxN2QwMjU1ZmViNDVjZDg2MzhhODQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgc3RhdGljIGlubGlu
ZSBib29sIGlzTnVsbEJvZHlTdGF0dXMoaW50IHN0YXR1cykKIAogUmVmPEZldGNoUmVzcG9uc2U+
IEZldGNoUmVzcG9uc2U6OmVycm9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmV0Y2hSZXNwb25zZShjb250ZXh0LCBSZXNwb25z
ZVR5cGU6OkVycm9yLCB7IH0sIEZldGNoSGVhZGVyczo6Y3JlYXRlKEZldGNoSGVhZGVyczo6R3Vh
cmQ6OkltbXV0YWJsZSksIHsgfSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZldGNoUmVz
cG9uc2UoY29udGV4dCwgVHlwZTo6RXJyb3IsIHsgfSwgRmV0Y2hIZWFkZXJzOjpjcmVhdGUoRmV0
Y2hIZWFkZXJzOjpHdWFyZDo6SW1tdXRhYmxlKSwgeyB9KSk7CiB9CiAKIFJlZlB0cjxGZXRjaFJl
c3BvbnNlPiBGZXRjaFJlc3BvbnNlOjpyZWRpcmVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBjb25zdCBTdHJpbmcmIHVybCwgaW50IHN0YXR1cywgRXhjZXB0aW9uQ29kZSYgZWMp
CkBAIC02Niw3ICs2Niw3IEBAIFJlZlB0cjxGZXRjaFJlc3BvbnNlPiBGZXRjaFJlc3BvbnNlOjpy
ZWRpcmVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjCiAgICAgICAgIGVjID0g
VHlwZUVycm9yOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgYXV0byByZWRp
cmVjdFJlc3BvbnNlID0gYWRvcHRSZWYoKm5ldyBGZXRjaFJlc3BvbnNlKGNvbnRleHQsIFJlc3Bv
bnNlVHlwZTo6RGVmYXVsdCwgeyB9LCBGZXRjaEhlYWRlcnM6OmNyZWF0ZShGZXRjaEhlYWRlcnM6
Okd1YXJkOjpJbW11dGFibGUpLCB7IH0pKTsKKyAgICBhdXRvIHJlZGlyZWN0UmVzcG9uc2UgPSBh
ZG9wdFJlZigqbmV3IEZldGNoUmVzcG9uc2UoY29udGV4dCwgVHlwZTo6RGVmYXVsdCwgeyB9LCBG
ZXRjaEhlYWRlcnM6OmNyZWF0ZShGZXRjaEhlYWRlcnM6Okd1YXJkOjpJbW11dGFibGUpLCB7IH0p
KTsKICAgICByZWRpcmVjdFJlc3BvbnNlLT5tX3Jlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2RlKHN0
YXR1cyk7CiAgICAgcmVkaXJlY3RSZXNwb25zZS0+bV9oZWFkZXJzLT5mYXN0U2V0KEhUVFBIZWFk
ZXJOYW1lOjpMb2NhdGlvbiwgcmVxdWVzdFVSTC5zdHJpbmcoKSk7CiAgICAgcmV0dXJuIFdURk1v
dmUocmVkaXJlY3RSZXNwb25zZSk7CkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBGZXRjaFJlc3Bv
bnNlOjppbml0aWFsaXplV2l0aChjb25zdCBEaWN0aW9uYXJ5JiBpbml0LCBFeGNlcHRpb25Db2Rl
JiBlYykKICAgICB9CiB9CiAKLUZldGNoUmVzcG9uc2U6OkZldGNoUmVzcG9uc2UoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVzcG9uc2VUeXBlIHR5cGUsIEZldGNoQm9keSYmIGJv
ZHksIFJlZjxGZXRjaEhlYWRlcnM+JiYgaGVhZGVycywgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3Bv
bnNlKQorRmV0Y2hSZXNwb25zZTo6RmV0Y2hSZXNwb25zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBUeXBlIHR5cGUsIEZldGNoQm9keSYmIGJvZHksIFJlZjxGZXRjaEhlYWRlcnM+
JiYgaGVhZGVycywgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKQogICAgIDogRmV0Y2hCb2R5
T3duZXIoY29udGV4dCwgV1RGTW92ZShib2R5KSkKICAgICAsIG1fdHlwZSh0eXBlKQogICAgICwg
bV9yZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSkKQEAgLTEzMCw3ICsxMzAsNyBAQCBSZWZQdHI8
RmV0Y2hSZXNwb25zZT4gRmV0Y2hSZXNwb25zZTo6Y2xvbmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgRXhjZQogCiB2b2lkIEZldGNoUmVzcG9uc2U6OnN0YXJ0RmV0Y2hpbmcoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmV0Y2hSZXF1ZXN0JiByZXF1ZXN0
LCBGZXRjaFByb21pc2UmJiBwcm9taXNlKQogewotICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9wdFJl
ZigqbmV3IEZldGNoUmVzcG9uc2UoY29udGV4dCwgUmVzcG9uc2VUeXBlOjpCYXNpYywgRmV0Y2hC
b2R5Ojpsb2FkaW5nQm9keSgpLCBGZXRjaEhlYWRlcnM6OmNyZWF0ZShGZXRjaEhlYWRlcnM6Okd1
YXJkOjpJbW11dGFibGUpLCBSZXNvdXJjZVJlc3BvbnNlKCkpKTsKKyAgICBhdXRvIHJlc3BvbnNl
ID0gYWRvcHRSZWYoKm5ldyBGZXRjaFJlc3BvbnNlKGNvbnRleHQsIFR5cGU6OkJhc2ljLCBGZXRj
aEJvZHk6OmxvYWRpbmdCb2R5KCksIEZldGNoSGVhZGVyczo6Y3JlYXRlKEZldGNoSGVhZGVyczo6
R3VhcmQ6OkltbXV0YWJsZSksIFJlc291cmNlUmVzcG9uc2UoKSkpOwogCiAgICAgLy8gU2V0dGlu
ZyBwZW5kaW5nIGFjdGl2aXR5IHVudGlsIEJvZHlMb2FkZXIgZGlkRmFpbCBvciBkaWRTdWNjZWVk
IGNhbGxiYWNrIGlzIGNhbGxlZC4KICAgICByZXNwb25zZS0+c2V0UGVuZGluZ0FjdGl2aXR5KHJl
c3BvbnNlLnB0cigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmgKaW5kZXggZDllZjM4ZDIxMWExMmRiZGI5OTVmY2U1OTQyNjIzMmVhNDczNmI0ZS4uN2U0
OGIwM2IwNDM1OWM3Y2YwMDQ2MDg3OGY3NGQ5Yjk2YjY0ZjM4NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgKQEAgLTQ2LDExICs0NiwxMSBAQCBjbGFz
cyBSZWFkYWJsZVN0cmVhbVNvdXJjZTsKIAogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAot
ZW51bSBjbGFzcyBSZXNwb25zZVR5cGUgeyBCYXNpYywgQ29ycywgRGVmYXVsdCwgRXJyb3IsIE9w
YXF1ZSwgT3BhcXVlcmVkaXJlY3QgfTsKLQogY2xhc3MgRmV0Y2hSZXNwb25zZSBmaW5hbCA6IHB1
YmxpYyBGZXRjaEJvZHlPd25lciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxGZXRjaFJlc3Bv
bnNlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBGZXRjaFJlc3BvbnNlKGNvbnRleHQsIFJlc3BvbnNlVHlwZTo6RGVmYXVsdCwg
eyB9LCBGZXRjaEhlYWRlcnM6OmNyZWF0ZShGZXRjaEhlYWRlcnM6Okd1YXJkOjpSZXNwb25zZSks
IFJlc291cmNlUmVzcG9uc2UoKSkpOyB9CisgICAgZW51bSBjbGFzcyBUeXBlIHsgQmFzaWMsIENv
cnMsIERlZmF1bHQsIEVycm9yLCBPcGFxdWUsIE9wYXF1ZXJlZGlyZWN0IH07CisKKyAgICBzdGF0
aWMgUmVmPEZldGNoUmVzcG9uc2U+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEZldGNoUmVzcG9uc2UoY29udGV4dCwgVHlwZTo6
RGVmYXVsdCwgeyB9LCBGZXRjaEhlYWRlcnM6OmNyZWF0ZShGZXRjaEhlYWRlcnM6Okd1YXJkOjpS
ZXNwb25zZSksIFJlc291cmNlUmVzcG9uc2UoKSkpOyB9CiAgICAgc3RhdGljIFJlZjxGZXRjaFJl
c3BvbnNlPiBlcnJvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAgICAgc3RhdGljIFJlZlB0
cjxGZXRjaFJlc3BvbnNlPiByZWRpcmVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3Qg
U3RyaW5nJiwgaW50LCBFeGNlcHRpb25Db2RlJik7CiAKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBpbml0aWFsaXplV2l0aChjb25zdCBEaWN0aW9uYXJ5JiwgRXhjZXB0aW9u
Q29kZSYpOwogCi0gICAgUmVzcG9uc2VUeXBlIHR5cGUoKSBjb25zdDsKKyAgICBUeXBlIHR5cGUo
KSBjb25zdDsKICAgICBjb25zdCBTdHJpbmcmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9u
c2UudXJsKCkuc3RyaW5nKCk7IH0KICAgICBib29sIHJlZGlyZWN0ZWQoKSBjb25zdCB7IHJldHVy
biBtX2lzUmVkaXJlY3RlZDsgfQogICAgIGludCBzdGF0dXMoKSBjb25zdCB7IHJldHVybiBtX3Jl
c3BvbnNlLmh0dHBTdGF0dXNDb2RlKCk7IH0KQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogI2Vu
ZGlmCiAKIHByaXZhdGU6Ci0gICAgRmV0Y2hSZXNwb25zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgUmVzcG9uc2VUeXBlLCBGZXRjaEJvZHkmJiwgUmVmPEZldGNoSGVhZGVycz4mJiwgUmVzb3Vy
Y2VSZXNwb25zZSYmKTsKKyAgICBGZXRjaFJlc3BvbnNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBUeXBlLCBGZXRjaEJvZHkmJiwgUmVmPEZldGNoSGVhZGVycz4mJiwgUmVzb3VyY2VSZXNwb25z
ZSYmKTsKIAogICAgIHN0YXRpYyB2b2lkIHN0YXJ0RmV0Y2hpbmcoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIGNvbnN0IEZldGNoUmVxdWVzdCYsIEZldGNoUHJvbWlzZSYmKTsKIApAQCAtMTA5LDE0
ICsxMDksMTQgQEAgcHJpdmF0ZToKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEZldGNoTG9hZGVy
PiBtX2xvYWRlcjsKICAgICB9OwogCi0gICAgUmVzcG9uc2VUeXBlIG1fdHlwZTsKKyAgICBUeXBl
IG1fdHlwZTsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAgICAgUmVmPEZldGNo
SGVhZGVycz4gbV9oZWFkZXJzOwogICAgIGJvb2wgbV9pc1JlZGlyZWN0ZWQgPSBmYWxzZTsKICAg
ICBPcHRpb25hbDxCb2R5TG9hZGVyPiBtX2JvZHlMb2FkZXI7CiB9OwogCi1pbmxpbmUgUmVzcG9u
c2VUeXBlIEZldGNoUmVzcG9uc2U6OnR5cGUoKSBjb25zdAoraW5saW5lIGF1dG8gRmV0Y2hSZXNw
b25zZTo6dHlwZSgpIGNvbnN0IC0+IFR5cGUKIHsKICAgICByZXR1cm4gbV90eXBlOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJv
bHNIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250cm9scy9NZWRpYUNv
bnRyb2xzSG9zdC5jcHAKaW5kZXggNjZjNWYxOTE4ZWQ3ZTNmODM0MDhkMDJiODc2NzMyNWJkMWVh
ZmI3ZS4uOTExMjIzMDY0Yjk3ODBkM2E0YjEyZjE3YjAyODBiMTk5YTM5OGQ5MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvTWVkaWFDb250
cm9sc0hvc3QuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgU3RyaW5nIE1lZGlhQ29udHJvbHNIb3N0
OjpleHRlcm5hbERldmljZURpc3BsYXlOYW1lKCkgY29uc3QKICNlbmRpZgogfQogCi1EZXZpY2VU
eXBlIE1lZGlhQ29udHJvbHNIb3N0OjpleHRlcm5hbERldmljZVR5cGUoKSBjb25zdAorYXV0byBN
ZWRpYUNvbnRyb2xzSG9zdDo6ZXh0ZXJuYWxEZXZpY2VUeXBlKCkgY29uc3QgLT4gRGV2aWNlVHlw
ZQogewogI2lmICFFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIHJldHVybiBE
ZXZpY2VUeXBlOjpOb25lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YWNvbnRyb2xzL01lZGlhQ29udHJvbHNIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhY29udHJvbHMvTWVkaWFDb250cm9sc0hvc3QuaAppbmRleCBjMGE3ODI5OGY0NGYzOGViZjIz
YTU5MmFiOGM5YjFiY2QyZGY2ZDM0Li40YmEzY2EzOWNhOTYzYmVhMzIxNmVjYTAzMDY0ZDJjMDZl
MjAwNjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMv
TWVkaWFDb250cm9sc0hvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29u
dHJvbHMvTWVkaWFDb250cm9sc0hvc3QuaApAQCAtNDIsOCArNDIsNiBAQCBjbGFzcyBNZWRpYUNv
bnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OwogY2xhc3MgVGV4dFRyYWNrOwogY2xhc3Mg
VGV4dFRyYWNrTGlzdDsKIAotZW51bSBjbGFzcyBEZXZpY2VUeXBlIHsgTm9uZSwgQWlycGxheSwg
VHZvdXQgfTsKLQogY2xhc3MgTWVkaWFDb250cm9sc0hvc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxN
ZWRpYUNvbnRyb2xzSG9zdD4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TWVkaWFDb250cm9s
c0hvc3Q+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50Kik7CkBAIC03Myw2ICs3MSw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGV4aXRlZEZ1bGxzY3JlZW4oKTsKIAogICAgIFN0cmluZyBleHRlcm5hbERl
dmljZURpc3BsYXlOYW1lKCkgY29uc3Q7CisKKyAgICBlbnVtIGNsYXNzIERldmljZVR5cGUgeyBO
b25lLCBBaXJwbGF5LCBUdm91dCB9OwogICAgIERldmljZVR5cGUgZXh0ZXJuYWxEZXZpY2VUeXBl
KCkgY29uc3Q7CiAKICAgICBib29sIGNvbnRyb2xzRGVwZW5kT25QYWdlU2NhbGVGYWN0b3IoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01l
ZGlhU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRp
YVNlc3Npb24uY3BwCmluZGV4IDc4MGJkMDkwMzAwOTFiY2U2MjhkM2E2ZDM0YWYxYWRjNTczYWNk
ZjQuLjNhODIxNjZmMTAxNTk0MzViNzZlOWY4NWNkZmU0OGM1MWI5YjRlYzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFTZXNzaW9uLmNwcApA
QCAtMzcsNyArMzcsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU1lZGlhU2Vzc2lvbjo6
TWVkaWFTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIE1lZGlhU2Vzc2lv
bktpbmQga2luZCkKK01lZGlhU2Vzc2lvbjo6TWVkaWFTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIEtpbmQga2luZCkKICAgICA6IG1fZG9jdW1lbnQoZG93bmNhc3Q8RG9j
dW1lbnQ+KGNvbnRleHQpKQogICAgICwgbV9raW5kKGtpbmQpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVNlc3Npb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oCmluZGV4IDY3ZGQzOTM3
ZDAwMjcwMDYwMThiNTdlMWI0YWVkMmQ2MTM5Mjk3OTEuLjUxMTAxOTFkZWJhZDM2NDdjZDAyNjk5
MDRhZjhhNjkzMWQxMGM0YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzZXNzaW9uL01lZGlhU2Vzc2lvbi5oCkBAIC0zNiwyMCArMzYsMTkgQEAgY2xhc3MgRGljdGlv
bmFyeTsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKIAotZW51bSBj
bGFzcyBNZWRpYVNlc3Npb25LaW5kIHsgQ29udGVudCwgVHJhbnNpZW50LCBUcmFuc2llbnRTb2xv
LCBBbWJpZW50IH07Ci0KIGNsYXNzIE1lZGlhU2Vzc2lvbiBmaW5hbCA6IHB1YmxpYyBSZWZDb3Vu
dGVkPE1lZGlhU2Vzc2lvbj4gewogcHVibGljOgorICAgIGVudW0gY2xhc3MgS2luZCB7IENvbnRl
bnQsIFRyYW5zaWVudCwgVHJhbnNpZW50U29sbywgQW1iaWVudCB9OwogICAgIGVudW0gY2xhc3Mg
U3RhdGUgeyBJZGxlLCBBY3RpdmUsIEludGVycnVwdGVkIH07CiAKLSAgICBzdGF0aWMgUmVmPE1l
ZGlhU2Vzc2lvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIE1lZGlh
U2Vzc2lvbktpbmQga2luZCkKKyAgICBzdGF0aWMgUmVmPE1lZGlhU2Vzc2lvbj4gY3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEtpbmQga2luZCkKICAgICB7CiAgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU2Vzc2lvbihjb250ZXh0LCBraW5kKSk7CiAgICAg
fQogCiAgICAgfk1lZGlhU2Vzc2lvbigpOwogCi0gICAgTWVkaWFTZXNzaW9uS2luZCBraW5kKCkg
Y29uc3QgeyByZXR1cm4gbV9raW5kOyB9CisgICAgS2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4g
bV9raW5kOyB9CiAgICAgTWVkaWFSZW1vdGVDb250cm9scyogY29udHJvbHMoKTsKIAogICAgIFdF
QkNPUkVfRVhQT1JUIFN0YXRlIGN1cnJlbnRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVu
dFN0YXRlOyB9CkBAIC05NSw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxIVE1MTWVk
aWFFbGVtZW50Kj4qIG1faXRlcmF0ZWRBY3RpdmVQYXJ0aWNpcGF0aW5nRWxlbWVudHMgeyBudWxs
cHRyIH07CiAKICAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsKLSAgICBjb25zdCBNZWRpYVNlc3Np
b25LaW5kIG1fa2luZDsKKyAgICBjb25zdCBLaW5kIG1fa2luZDsKICAgICBSZWZQdHI8TWVkaWFS
ZW1vdGVDb250cm9scz4gbV9jb250cm9sczsKICAgICBNZWRpYVNlc3Npb25NZXRhZGF0YSBtX21l
dGFkYXRhOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9N
ZWRpYVNvdXJjZS5jcHAKaW5kZXggMWEwOWMzZWZmZmRmNjkyNDA3ZDkxNGFiNTBmODY3ZmJjODRk
MmExNC4uNDE0Mjg3OWM1YzNkMTgwNmE0NzRiNmFhN2VjOGEzOTYxMGJlZWU2OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKQEAg
LTU0NSw3ICs1NDUsNyBAQCBTb3VyY2VCdWZmZXIqIE1lZGlhU291cmNlOjphZGRTb3VyY2VCdWZm
ZXIoY29uc3QgU3RyaW5nJiB0eXBlLCBFeGNlcHRpb25Db2RlJiBlYwogICAgIC8vIOKGsyBTZXQg
dGhlIG1vZGUgYXR0cmlidXRlIG9uIHRoZSBuZXcgb2JqZWN0IHRvICJzZXF1ZW5jZSIuCiAgICAg
Ly8gT3RoZXJ3aXNlOgogICAgIC8vIOKGsyBTZXQgdGhlIG1vZGUgYXR0cmlidXRlIG9uIHRoZSBu
ZXcgb2JqZWN0IHRvICJzZWdtZW50cyIuCi0gICAgYnVmZmVyLT5zZXRNb2RlKHNob3VsZEdlbmVy
YXRlVGltZXN0YW1wcyA/IEFwcGVuZE1vZGU6OlNlcXVlbmNlIDogQXBwZW5kTW9kZTo6U2VnbWVu
dHMsIElHTk9SRV9FWENFUFRJT04pOworICAgIGJ1ZmZlci0+c2V0TW9kZShzaG91bGRHZW5lcmF0
ZVRpbWVzdGFtcHMgPyBTb3VyY2VCdWZmZXI6OkFwcGVuZE1vZGU6OlNlcXVlbmNlIDogU291cmNl
QnVmZmVyOjpBcHBlbmRNb2RlOjpTZWdtZW50cywgSUdOT1JFX0VYQ0VQVElPTik7CiAKICAgICBT
b3VyY2VCdWZmZXIqIHJlc3VsdCA9IGJ1ZmZlci5wdHIoKTsKIApAQCAtNjcxLDcgKzY3MSw3IEBA
IHZvaWQgTWVkaWFTb3VyY2U6OnJlbW92ZVNvdXJjZUJ1ZmZlcihTb3VyY2VCdWZmZXImIGJ1ZmZl
ciwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKICAgICAgICAgICAgIC8vIDkuMy4yIElmIHRoZSBtb2Rl
IGF0dHJpYnV0ZSBvbiB0aGUgVGV4dFRyYWNrIG9iamVjdCBpcyBzZXQgdG8gInNob3dpbmciIG9y
ICJoaWRkZW4iLCB0aGVuCiAgICAgICAgICAgICAvLyBzZXQgdGhlIHJlbW92ZWQgZW5hYmxlZCB0
ZXh0IHRyYWNrIGZsYWcgdG8gdHJ1ZS4KLSAgICAgICAgICAgIGlmICh0cmFjay0+bW9kZSgpID09
IFRleHRUcmFja01vZGU6OlNob3dpbmcgfHwgdHJhY2stPm1vZGUoKSA9PSBUZXh0VHJhY2tNb2Rl
OjpIaWRkZW4pCisgICAgICAgICAgICBpZiAodHJhY2stPm1vZGUoKSA9PSBUZXh0VHJhY2s6Ok1v
ZGU6OlNob3dpbmcgfHwgdHJhY2stPm1vZGUoKSA9PSBUZXh0VHJhY2s6Ok1vZGU6OkhpZGRlbikK
ICAgICAgICAgICAgICAgICByZW1vdmVkRW5hYmxlZFRleHRUcmFjayA9IHRydWU7CiAKICAgICAg
ICAgICAgIC8vIDkuMy4zIFJlbW92ZSB0aGUgVGV4dFRyYWNrIG9iamVjdCBmcm9tIHRoZSBIVE1M
TWVkaWFFbGVtZW50IHRleHRUcmFja3MgbGlzdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaAppbmRleCA1OTcxYzg2ZTZmNDYwZWMwZjFhNzM4
YjNkMDYzYTFiY2IwYTIxYzAwLi4xOWJhMWE0ZThjNDQxOTE0YzVjMmUwM2NjNjhjNDYxY2Q0M2Zi
YThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlh
U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNv
dXJjZS5oCkBAIC00OCw4ICs0OCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR2Vu
ZXJpY0V2ZW50UXVldWU7CiAKLWVudW0gY2xhc3MgRW5kT2ZTdHJlYW1FcnJvciB7IE5ldHdvcmss
IERlY29kZSB9OwotCiBjbGFzcyBNZWRpYVNvdXJjZSA6IHB1YmxpYyBNZWRpYVNvdXJjZVByaXZh
dGVDbGllbnQsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJ
bmxpbmVEYXRhLCBwdWJsaWMgVVJMUmVnaXN0cmFibGUgewogcHVibGljOgogICAgIHN0YXRpYyB2
b2lkIHNldFJlZ2lzdHJ5KFVSTFJlZ2lzdHJ5Kik7CkBAIC02OSw2ICs2Nyw4IEBAIHB1YmxpYzoK
ICAgICBib29sIGlzQ2xvc2VkKCkgY29uc3Q7CiAgICAgYm9vbCBpc0VuZGVkKCkgY29uc3Q7CiAg
ICAgdm9pZCBzb3VyY2VCdWZmZXJEaWRDaGFuZ2VBY3RpdmVTdGF0ZShTb3VyY2VCdWZmZXImLCBi
b29sKTsKKworICAgIGVudW0gY2xhc3MgRW5kT2ZTdHJlYW1FcnJvciB7IE5ldHdvcmssIERlY29k
ZSB9OwogICAgIHZvaWQgc3RyZWFtRW5kZWRXaXRoRXJyb3IoT3B0aW9uYWw8RW5kT2ZTdHJlYW1F
cnJvcj4pOwogCiAgICAgLy8gTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKaW5kZXggYmM0
OTIyYmNkNjFlNmZmMDU0NTVkMDQwMTNiOTE1Mzk3YzY4ODhmMC4uY2MyZDNiOGRiY2Q3ZjZlMTBj
NjkxNDI2Mjg0NzRkMjQxYzZlYzI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcApAQCAtNjQzLDcgKzY0Myw3IEBAIHZvaWQg
U291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZVJlbmRlcmluZ0Vycm9y
KFNvdXJjZUJ1ZmZlclByaXZhCiAgICAgTE9HKE1lZGlhU291cmNlLCAiU291cmNlQnVmZmVyOjpz
b3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZVJlbmRlcmluZ0Vycm9yKCVwKSAtIHJlc3VsdCA9
ICVpIiwgdGhpcywgZXJyb3IpOwogCiAgICAgaWYgKCFpc1JlbW92ZWQoKSkKLSAgICAgICAgbV9z
b3VyY2UtPnN0cmVhbUVuZGVkV2l0aEVycm9yKEVuZE9mU3RyZWFtRXJyb3I6OkRlY29kZSk7Cisg
ICAgICAgIG1fc291cmNlLT5zdHJlYW1FbmRlZFdpdGhFcnJvcihNZWRpYVNvdXJjZTo6RW5kT2ZT
dHJlYW1FcnJvcjo6RGVjb2RlKTsKIH0KIAogc3RhdGljIGJvb2wgZGVjb2RlVGltZUNvbXBhcmF0
b3IoY29uc3QgUHJlc2VudGF0aW9uT3JkZXJTYW1wbGVNYXA6Ok1hcFR5cGU6OnZhbHVlX3R5cGUm
IGEsIGNvbnN0IFByZXNlbnRhdGlvbk9yZGVyU2FtcGxlTWFwOjpNYXBUeXBlOjp2YWx1ZV90eXBl
JiBiKQpAQCAtMTI3MCw3ICsxMjcwLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OmFwcGVuZEVycm9y
KGJvb2wgZGVjb2RlRXJyb3JQYXJhbSkKIAogICAgIC8vIDUuIElmIGRlY29kZSBlcnJvciBpcyB0
cnVlLCB0aGVuIHJ1biB0aGUgZW5kIG9mIHN0cmVhbSBhbGdvcml0aG0gd2l0aCB0aGUgZXJyb3Ig
cGFyYW1ldGVyIHNldCB0byAiZGVjb2RlIi4KICAgICBpZiAoZGVjb2RlRXJyb3JQYXJhbSkKLSAg
ICAgICAgbV9zb3VyY2UtPnN0cmVhbUVuZGVkV2l0aEVycm9yKEVuZE9mU3RyZWFtRXJyb3I6OkRl
Y29kZSk7CisgICAgICAgIG1fc291cmNlLT5zdHJlYW1FbmRlZFdpdGhFcnJvcihNZWRpYVNvdXJj
ZTo6RW5kT2ZTdHJlYW1FcnJvcjo6RGVjb2RlKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXI6OnNv
dXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlU2FtcGxlKFNvdXJjZUJ1ZmZlclByaXZhdGUqLCBQ
YXNzUmVmUHRyPE1lZGlhU2FtcGxlPiBwcnBTYW1wbGUpCkBAIC0xNDIxLDcgKzE0MjEsNyBAQCB2
b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVTYW1wbGUoU291
cmNlQnVmZmVyUHJpdmF0ZSosIFBhcwogICAgICAgICBNZWRpYVRpbWUgcHJlc2VudGF0aW9uU3Rh
cnRUaW1lID0gTWVkaWFUaW1lOjp6ZXJvVGltZSgpOwogICAgICAgICBpZiAocHJlc2VudGF0aW9u
VGltZXN0YW1wIDwgcHJlc2VudGF0aW9uU3RhcnRUaW1lKSB7CiAgICAgICAgICAgICBMT0coTWVk
aWFTb3VyY2UsICJTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlU2Ft
cGxlKCVwKSAtIGZhaWxpbmcgYmVjYXVzZSBwcmVzZW50YXRpb25UaW1lc3RhbXAgPCBwcmVzZW50
YXRpb25TdGFydFRpbWUiLCB0aGlzKTsKLSAgICAgICAgICAgIG1fc291cmNlLT5zdHJlYW1FbmRl
ZFdpdGhFcnJvcihFbmRPZlN0cmVhbUVycm9yOjpEZWNvZGUpOworICAgICAgICAgICAgbV9zb3Vy
Y2UtPnN0cmVhbUVuZGVkV2l0aEVycm9yKE1lZGlhU291cmNlOjpFbmRPZlN0cmVhbUVycm9yOjpE
ZWNvZGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTE2NzQsNyArMTY3
NCw3IEBAIHZvaWQgU291cmNlQnVmZmVyOjp0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2sq
IHRyYWNrKQogICAgIC8vIDIuNC41IENoYW5nZXMgdG8gc2VsZWN0ZWQvZW5hYmxlZCB0cmFjayBz
dGF0ZQogICAgIC8vIElmIGEgdGV4dCB0cmFjayBtb2RlIGJlY29tZXMgImRpc2FibGVkIiBhbmQg
dGhlIFNvdXJjZUJ1ZmZlciBhc3NvY2lhdGVkIHdpdGggdGhpcyB0cmFjayBpcyBub3QKICAgICAv
LyBhc3NvY2lhdGVkIHdpdGggYW55IG90aGVyIGVuYWJsZWQgb3Igc2VsZWN0ZWQgdHJhY2ssIHRo
ZW4gcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6Ci0gICAgaWYgKHRyYWNrLT5tb2RlKCkgPT0gVGV4
dFRyYWNrTW9kZTo6RGlzYWJsZWQKKyAgICBpZiAodHJhY2stPm1vZGUoKSA9PSBUZXh0VHJhY2s6
Ok1vZGU6OkRpc2FibGVkCiAgICAgICAgICYmICghbV92aWRlb1RyYWNrcyB8fCAhbV92aWRlb1Ry
YWNrcy0+aXNBbnlUcmFja0VuYWJsZWQoKSkKICAgICAgICAgJiYgKCFtX2F1ZGlvVHJhY2tzIHx8
ICFtX2F1ZGlvVHJhY2tzLT5pc0FueVRyYWNrRW5hYmxlZCgpKQogICAgICAgICAmJiAoIW1fdGV4
dFRyYWNrcyB8fCAhbV90ZXh0VHJhY2tzLT5pc0FueVRyYWNrRW5hYmxlZCgpKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKaW5kZXgg
NDg3ZGZjOGVkMTJkNjQyYmMyY2QwZDkxNTVjZGQ2YjZmYzU2Njk1Ni4uY2IwZGM4ZjdhYjJlOWUy
ZGJhMDg3NDUwMDcyOTg4MjAzOTBiYzAyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCkBAIC01OCwxMCArNTgsNiBAQCBjbGFzcyBU
ZXh0VHJhY2tMaXN0OwogY2xhc3MgVGltZVJhbmdlczsKIGNsYXNzIFZpZGVvVHJhY2tMaXN0Owog
Ci1lbnVtIGNsYXNzIEVuZE9mU3RyZWFtRXJyb3I7Ci0KLWVudW0gY2xhc3MgQXBwZW5kTW9kZSB7
IFNlZ21lbnRzLCBTZXF1ZW5jZSB9OwotCiBjbGFzcyBTb3VyY2VCdWZmZXIgZmluYWwgOiBwdWJs
aWMgUmVmQ291bnRlZDxTb3VyY2VCdWZmZXI+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJs
aWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIFNvdXJjZUJ1ZmZlclByaXZhdGVD
bGllbnQsIHB1YmxpYyBBdWRpb1RyYWNrQ2xpZW50LCBwdWJsaWMgVmlkZW9UcmFja0NsaWVudCwg
cHVibGljIFRleHRUcmFja0NsaWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTb3VyY2VC
dWZmZXI+IGNyZWF0ZShSZWY8U291cmNlQnVmZmVyUHJpdmF0ZT4mJiwgTWVkaWFTb3VyY2UqKTsK
QEAgLTExNyw2ICsxMTMsNyBAQCBwdWJsaWM6CiAKICAgICBEb2N1bWVudCYgZG9jdW1lbnQoKSBj
b25zdDsKIAorICAgIGVudW0gY2xhc3MgQXBwZW5kTW9kZSB7IFNlZ21lbnRzLCBTZXF1ZW5jZSB9
OwogICAgIEFwcGVuZE1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQogICAgIHZv
aWQgc2V0TW9kZShBcHBlbmRNb2RlLCBFeGNlcHRpb25Db2RlJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmNwcAppbmRl
eCA0YjgyNzhlMTE3ZDg2NGExMmRkYWNmMzJmNGM0YmFkZDIyYjFkMjE3Li5mZTc2MGQ5MTdmMmUz
ZDEwZmE1NzI1NGJmMTJmYmMwOTNkOWRjZDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZUluZm8uY3BwCkBAIC0zMCw3ICszMCw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotaW5saW5lIE1lZGlhRGV2aWNlSW5mbzo6TWVk
aWFEZXZpY2VJbmZvKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmlu
ZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgZGV2aWNlSWQsIGNvbnN0IFN0cmluZyYgZ3JvdXBJZCwg
TWVkaWFEZXZpY2VLaW5kIGtpbmQpCitpbmxpbmUgTWVkaWFEZXZpY2VJbmZvOjpNZWRpYURldmlj
ZUluZm8oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBsYWJl
bCwgY29uc3QgU3RyaW5nJiBkZXZpY2VJZCwgY29uc3QgU3RyaW5nJiBncm91cElkLCBLaW5kIGtp
bmQpCiAgICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcihjb250ZXh0KQogICAgICwgbV9s
YWJlbChsYWJlbCkKICAgICAsIG1fZGV2aWNlSWQoZGV2aWNlSWQpCkBAIC0zOSw3ICszOSw3IEBA
IGlubGluZSBNZWRpYURldmljZUluZm86Ok1lZGlhRGV2aWNlSW5mbyhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBjb25zdCBTCiB7CiB9CiAKLVJlZjxNZWRpYURldmljZUluZm8+IE1l
ZGlhRGV2aWNlSW5mbzo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgZGV2aWNlSWQsIGNvbnN0IFN0cmluZyYg
Z3JvdXBJZCwgTWVkaWFEZXZpY2VLaW5kIGtpbmQpCitSZWY8TWVkaWFEZXZpY2VJbmZvPiBNZWRp
YURldmljZUluZm86OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25z
dCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGRldmljZUlkLCBjb25zdCBTdHJpbmcmIGdy
b3VwSWQsIEtpbmQga2luZCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYURldmlj
ZUluZm8oY29udGV4dCwgbGFiZWwsIGRldmljZUlkLCBncm91cElkLCBraW5kKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5m
by5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZUluZm8u
aAppbmRleCBjNjU5ZjUyZmEwNzhhNGJiNzA0NzlmNzQxNjk5MzM1OGY3OTkxYzNmLi5mYzY4OTA0
MzMzMDlkNDRlNTdkMmJjYzc5NmJkZWRkYTVmNGEzZGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlSW5mby5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VJbmZvLmgKQEAgLTMzLDI0ICsz
MywyNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gY2xhc3MgTWVkaWFEZXZpY2VL
aW5kIHsgQXVkaW9pbnB1dCwgQXVkaW9vdXRwdXQsIFZpZGVvaW5wdXQgfTsKLQogY2xhc3MgTWVk
aWFEZXZpY2VJbmZvIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFEZXZpY2VJbmZvPiwgcHVibGlj
IFNjcmlwdFdyYXBwYWJsZSwgcHJpdmF0ZSBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxNZWRpYURldmljZUluZm8+IGNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiwgTWVkaWFEZXZpY2VLaW5kKTsKKyAgICBlbnVtIGNsYXNzIEtpbmQgeyBBdWRpb2lucHV0LCBB
dWRpb291dHB1dCwgVmlkZW9pbnB1dCB9OworCisgICAgc3RhdGljIFJlZjxNZWRpYURldmljZUlu
Zm8+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgS2luZCk7CiAKICAgICBjb25zdCBTdHJpbmcmIGxhYmVs
KCkgY29uc3QgeyByZXR1cm4gbV9sYWJlbDsgfQogICAgIGNvbnN0IFN0cmluZyYgZGV2aWNlSWQo
KSBjb25zdCB7IHJldHVybiBtX2RldmljZUlkOyB9CiAgICAgY29uc3QgU3RyaW5nJiBncm91cElk
KCkgY29uc3QgeyByZXR1cm4gbV9ncm91cElkOyB9Ci0gICAgTWVkaWFEZXZpY2VLaW5kIGtpbmQo
KSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KKyAgICBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVy
biBtX2tpbmQ7IH0KIAogcHJpdmF0ZToKLSAgICBNZWRpYURldmljZUluZm8oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYs
IE1lZGlhRGV2aWNlS2luZCk7CisgICAgTWVkaWFEZXZpY2VJbmZvKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBLaW5k
KTsKIAogICAgIGNvbnN0IFN0cmluZyBtX2xhYmVsOwogICAgIGNvbnN0IFN0cmluZyBtX2Rldmlj
ZUlkOwogICAgIGNvbnN0IFN0cmluZyBtX2dyb3VwSWQ7Ci0gICAgY29uc3QgTWVkaWFEZXZpY2VL
aW5kIG1fa2luZDsKKyAgICBjb25zdCBLaW5kIG1fa2luZDsKIH07CiAKIHR5cGVkZWYgVmVjdG9y
PFJlZlB0cjxNZWRpYURldmljZUluZm8+PiBNZWRpYURldmljZUluZm9WZWN0b3I7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVl
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNS
ZXF1ZXN0LmNwcAppbmRleCA4NDhlYzgwY2E0YzUxYWZjYjk1ZDZhNzRmMmNhYWE3MGZmYTUzM2U5
Li4xODAyY2M1YjllNzQ1NWY0YWZiZDg0ODIxOWEzZGEyMjk4Y2IwNzI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVx
dWVzdC5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIE1lZGlhRGV2aWNlc1JlcXVlc3Q6OmRp
ZENvbXBsZXRlVHJhY2tTb3VyY2VJbmZvUmVxdWVzdChjb25zdCBUcmFja1NvdXJjZUluZgogCiAg
ICAgICAgIFN0cmluZyBncm91cElkID0gaGFzaElEKGRldmljZUluZm8tPmdyb3VwSWQoKSk7CiAK
LSAgICAgICAgYXV0byBkZXZpY2VUeXBlID0gZGV2aWNlSW5mby0+a2luZCgpID09IFRyYWNrU291
cmNlSW5mbzo6U291cmNlS2luZDo6QXVkaW8gPyBNZWRpYURldmljZUtpbmQ6OkF1ZGlvaW5wdXQg
OiBNZWRpYURldmljZUtpbmQ6OlZpZGVvaW5wdXQ7CisgICAgICAgIGF1dG8gZGV2aWNlVHlwZSA9
IGRldmljZUluZm8tPmtpbmQoKSA9PSBUcmFja1NvdXJjZUluZm86OlNvdXJjZUtpbmQ6OkF1ZGlv
ID8gTWVkaWFEZXZpY2VJbmZvOjpLaW5kOjpBdWRpb2lucHV0IDogTWVkaWFEZXZpY2VJbmZvOjpL
aW5kOjpWaWRlb2lucHV0OwogCiAgICAgICAgIGRldmljZXMuYXBwZW5kKE1lZGlhRGV2aWNlSW5m
bzo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbGFiZWwsIGlkLCBncm91cElkLCBk
ZXZpY2VUeXBlKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKaW5kZXggMTVmYzk4ZTJhZTI1ZDhlMmJl
ZDg3YmQ2ODRlZDQwYjRlZDBlODk1YS4uM2IzOTJkYWI0YmQwYjY4OWJkYmNkY2FhMTcyMjAxMDBk
MjRiNTYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCkBAIC0xMTEsOSArMTExLDkgQEAgYm9vbCBNZWRpYVN0
cmVhbVRyYWNrOjpyZW1vdGUoKSBjb25zdAogICAgIHJldHVybiBtX3ByaXZhdGUtPnJlbW90ZSgp
OwogfQogCi1NZWRpYVN0cmVhbVRyYWNrU3RhdGUgTWVkaWFTdHJlYW1UcmFjazo6cmVhZHlTdGF0
ZSgpIGNvbnN0CithdXRvIE1lZGlhU3RyZWFtVHJhY2s6OnJlYWR5U3RhdGUoKSBjb25zdCAtPiBT
dGF0ZQogewotICAgIHJldHVybiBlbmRlZCgpID8gTWVkaWFTdHJlYW1UcmFja1N0YXRlOjpFbmRl
ZCA6IE1lZGlhU3RyZWFtVHJhY2tTdGF0ZTo6TGl2ZTsKKyAgICByZXR1cm4gZW5kZWQoKSA/IFN0
YXRlOjpFbmRlZCA6IFN0YXRlOjpMaXZlOwogfQogCiBib29sIE1lZGlhU3RyZWFtVHJhY2s6OmVu
ZGVkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1UcmFjay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrLmgKaW5kZXggYzhkZmFlNDhjODJlMjI3MGQzY2E3YzFlMjQyODA0
MmNjNmYxZDQxMi4uYzk5ZjRjZTM0MjRjMzVkMzg4ZjkzNmRiYzc4YTgxNDIzNWVjNmYwNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRy
YWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bVRyYWNrLmgKQEAgLTQ2LDggKzQ2LDYgQEAgY2xhc3MgTWVkaWFDb25zdHJhaW50c0ltcGw7CiBj
bGFzcyBNZWRpYVNvdXJjZVNldHRpbmdzOwogY2xhc3MgTWVkaWFUcmFja0NvbnN0cmFpbnRzOwog
Ci1lbnVtIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2tTdGF0ZSB7IE5ldywgTGl2ZSwgRW5kZWQgfTsK
LQogY2xhc3MgTWVkaWFTdHJlYW1UcmFjayBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlh
U3RyZWFtVHJhY2s+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZlbnRUYXJnZXRX
aXRoSW5saW5lRGF0YSwgcHJpdmF0ZSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIg
ewogcHVibGljOgogICAgIGNsYXNzIE9ic2VydmVyIHsKQEAgLTcwLDcgKzY4LDggQEAgcHVibGlj
OgogICAgIGJvb2wgcmVhZG9ubHkoKSBjb25zdDsKICAgICBib29sIHJlbW90ZSgpIGNvbnN0Owog
Ci0gICAgTWVkaWFTdHJlYW1UcmFja1N0YXRlIHJlYWR5U3RhdGUoKSBjb25zdDsKKyAgICBlbnVt
IGNsYXNzIFN0YXRlIHsgTmV3LCBMaXZlLCBFbmRlZCB9OworICAgIFN0YXRlIHJlYWR5U3RhdGUo
KSBjb25zdDsKIAogICAgIGJvb2wgZW5kZWQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDQ29uZmlndXJhdGlvbi5jcHAKaW5kZXgg
YzljOTg4YjY2MDI1NDM4ZmY1MjJmZWUyMjIwYTY0OTBlZDU3ZGVlNC4uYjlmYTQ4Zjc5YmJhYWU5
NWEwZWY4MzUzMzhhMTRlNmU1YjA0NGUxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENDb25maWd1cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0NvbmZpZ3VyYXRpb24uY3BwCkBAIC0xNDIsMTEgKzE0
MiwxMSBAQCB2b2lkIFJUQ0NvbmZpZ3VyYXRpb246OmluaXRpYWxpemUoY29uc3QgRGljdGlvbmFy
eSYgY29uZmlndXJhdGlvbiwgRXhjZXB0aW9uQ29kZQogICAgIFN0cmluZyBpY2VUcmFuc3BvcnRQ
b2xpY3k7CiAgICAgaWYgKGNvbmZpZ3VyYXRpb24uZ2V0KCJpY2VUcmFuc3BvcnRQb2xpY3kiLCBp
Y2VUcmFuc3BvcnRQb2xpY3kpKSB7CiAgICAgICAgIGlmIChpY2VUcmFuc3BvcnRQb2xpY3kgPT0g
InB1YmxpYyIpCi0gICAgICAgICAgICBtX2ljZVRyYW5zcG9ydFBvbGljeSA9IFJUQ0ljZVRyYW5z
cG9ydFBvbGljeTo6UHVibGljOworICAgICAgICAgICAgbV9pY2VUcmFuc3BvcnRQb2xpY3kgPSBJ
Y2VUcmFuc3BvcnRQb2xpY3k6OlB1YmxpYzsKICAgICAgICAgZWxzZSBpZiAoaWNlVHJhbnNwb3J0
UG9saWN5ID09ICJyZWxheSIpCi0gICAgICAgICAgICBtX2ljZVRyYW5zcG9ydFBvbGljeSA9IFJU
Q0ljZVRyYW5zcG9ydFBvbGljeTo6UmVsYXk7CisgICAgICAgICAgICBtX2ljZVRyYW5zcG9ydFBv
bGljeSA9IEljZVRyYW5zcG9ydFBvbGljeTo6UmVsYXk7CiAgICAgICAgIGVsc2UgaWYgKGljZVRy
YW5zcG9ydFBvbGljeSA9PSAiYWxsIikKLSAgICAgICAgICAgIG1faWNlVHJhbnNwb3J0UG9saWN5
ID0gUlRDSWNlVHJhbnNwb3J0UG9saWN5OjpBbGw7CisgICAgICAgICAgICBtX2ljZVRyYW5zcG9y
dFBvbGljeSA9IEljZVRyYW5zcG9ydFBvbGljeTo6QWxsOwogICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgIGVjID0gVHlwZUVycm9yOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTU2LDExICsx
NTYsMTEgQEAgdm9pZCBSVENDb25maWd1cmF0aW9uOjppbml0aWFsaXplKGNvbnN0IERpY3Rpb25h
cnkmIGNvbmZpZ3VyYXRpb24sIEV4Y2VwdGlvbkNvZGUKICAgICBTdHJpbmcgYnVuZGxlUG9saWN5
OwogICAgIGlmIChjb25maWd1cmF0aW9uLmdldCgiYnVuZGxlUG9saWN5IiwgYnVuZGxlUG9saWN5
KSkgewogICAgICAgICBpZiAoYnVuZGxlUG9saWN5ID09ICJiYWxhbmNlZCIpCi0gICAgICAgICAg
ICBtX2J1bmRsZVBvbGljeSA9IFJUQ0J1bmRsZVBvbGljeTo6QmFsYW5jZWQ7CisgICAgICAgICAg
ICBtX2J1bmRsZVBvbGljeSA9IEJ1bmRsZVBvbGljeTo6QmFsYW5jZWQ7CiAgICAgICAgIGVsc2Ug
aWYgKGJ1bmRsZVBvbGljeSA9PSAibWF4LWNvbXBhdCIpCi0gICAgICAgICAgICBtX2J1bmRsZVBv
bGljeSA9IFJUQ0J1bmRsZVBvbGljeTo6TWF4Q29tcGF0OworICAgICAgICAgICAgbV9idW5kbGVQ
b2xpY3kgPSBCdW5kbGVQb2xpY3k6Ok1heENvbXBhdDsKICAgICAgICAgZWxzZSBpZiAoYnVuZGxl
UG9saWN5ID09ICJtYXgtYnVuZGxlIikKLSAgICAgICAgICAgIG1fYnVuZGxlUG9saWN5ID0gUlRD
QnVuZGxlUG9saWN5OjpNYXhCdW5kbGU7CisgICAgICAgICAgICBtX2J1bmRsZVBvbGljeSA9IEJ1
bmRsZVBvbGljeTo6TWF4QnVuZGxlOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBlYyA9IFR5
cGVFcnJvcjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0NvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDQ29uZmlndXJhdGlvbi5oCmluZGV4IDE0MDJmZWQzNGEzYjJiYjVmZDk5ZWNlZjk2
NTNhNDFhMjcxNDM2NjAuLmU1YjQ0M2I4OTA0NmQ1MTFhZmU0ZGY3ZDNiY2JiNzJjMWZjNGYwY2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDQ29uZmln
dXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDQ29u
ZmlndXJhdGlvbi5oCkBAIC00NSwxNiArNDUsMTcgQEAgY2xhc3MgRGljdGlvbmFyeTsKIAogdHlw
ZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAotZW51bSBjbGFzcyBSVENCdW5kbGVQb2xpY3kgeyBC
YWxhbmNlZCwgTWF4Q29tcGF0LCBNYXhCdW5kbGUgfTsKLWVudW0gY2xhc3MgUlRDSWNlVHJhbnNw
b3J0UG9saWN5IHsgUHVibGljLCBSZWxheSwgQWxsIH07Ci0KIGNsYXNzIFJUQ0NvbmZpZ3VyYXRp
b24gOiBwdWJsaWMgUmVmQ291bnRlZDxSVENDb25maWd1cmF0aW9uPiB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFJlZlB0cjxSVENDb25maWd1cmF0aW9uPiBjcmVhdGUoY29uc3QgRGljdGlvbmFyeSYg
Y29uZmlndXJhdGlvbiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgflJUQ0NvbmZpZ3Vy
YXRpb24oKSB7IH0KIAotICAgIFJUQ0ljZVRyYW5zcG9ydFBvbGljeSBpY2VUcmFuc3BvcnRQb2xp
Y3koKSBjb25zdCB7IHJldHVybiBtX2ljZVRyYW5zcG9ydFBvbGljeTsgfQotICAgIFJUQ0J1bmRs
ZVBvbGljeSBidW5kbGVQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX2J1bmRsZVBvbGljeTsgfQor
ICAgIGVudW0gY2xhc3MgSWNlVHJhbnNwb3J0UG9saWN5IHsgUHVibGljLCBSZWxheSwgQWxsIH07
CisgICAgSWNlVHJhbnNwb3J0UG9saWN5IGljZVRyYW5zcG9ydFBvbGljeSgpIGNvbnN0IHsgcmV0
dXJuIG1faWNlVHJhbnNwb3J0UG9saWN5OyB9CisKKyAgICBlbnVtIGNsYXNzIEJ1bmRsZVBvbGlj
eSB7IEJhbGFuY2VkLCBNYXhDb21wYXQsIE1heEJ1bmRsZSB9OworICAgIEJ1bmRsZVBvbGljeSBi
dW5kbGVQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX2J1bmRsZVBvbGljeTsgfQorCiAgICAgVmVj
dG9yPFJlZlB0cjxSVENJY2VTZXJ2ZXI+PiBpY2VTZXJ2ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9p
Y2VTZXJ2ZXJzOyB9CiAKIHByaXZhdGU6CkBAIC02Myw4ICs2NCw4IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBpbml0aWFsaXplKGNvbnN0IERpY3Rpb25hcnkmIGNvbmZpZ3VyYXRpb24sIEV4Y2VwdGlv
bkNvZGUmKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8UlRDSWNlU2VydmVyPj4gbV9pY2VTZXJ2ZXJz
OwotICAgIFJUQ0ljZVRyYW5zcG9ydFBvbGljeSBtX2ljZVRyYW5zcG9ydFBvbGljeSB7IFJUQ0lj
ZVRyYW5zcG9ydFBvbGljeTo6QWxsIH07Ci0gICAgUlRDQnVuZGxlUG9saWN5IG1fYnVuZGxlUG9s
aWN5IHsgUlRDQnVuZGxlUG9saWN5OjpCYWxhbmNlZCB9OworICAgIEljZVRyYW5zcG9ydFBvbGlj
eSBtX2ljZVRyYW5zcG9ydFBvbGljeSB7IEljZVRyYW5zcG9ydFBvbGljeTo6QWxsIH07CisgICAg
QnVuZGxlUG9saWN5IG1fYnVuZGxlUG9saWN5IHsgQnVuZGxlUG9saWN5OjpCYWxhbmNlZCB9Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKaW5kZXggYjA5ZGExNjQ4YmNlNmViMjdmYmQ3YjY3OGY0
NzE3YWVlODk5ZGJiZC4uODU4ZjY0N2FmZjc3ZGJiMjUzODY2ZmUwOTIyYTU1ZDRkYmFmYzVlNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCkBA
IC03MSw4ICs3MSw2IEBAIGNsYXNzIFBlcmlvZGljV2F2ZTsKIGNsYXNzIFNjcmlwdFByb2Nlc3Nv
ck5vZGU7CiBjbGFzcyBXYXZlU2hhcGVyTm9kZTsKIAotZW51bSBjbGFzcyBBdWRpb0NvbnRleHRT
dGF0ZSB7IFN1c3BlbmRlZCwgUnVubmluZywgSW50ZXJydXB0ZWQsIENsb3NlZCB9OwotCiAvLyBB
dWRpb0NvbnRleHQgaXMgdGhlIGNvcm5lcnN0b25lIG9mIHRoZSB3ZWIgYXVkaW8gQVBJIGFuZCBh
bGwgQXVkaW9Ob2RlcyBhcmUgY3JlYXRlZCBmcm9tIGl0LgogLy8gRm9yIHRocmVhZCBzYWZldHkg
YmV0d2VlbiB0aGUgYXVkaW8gdGhyZWFkIGFuZCB0aGUgbWFpbiB0aHJlYWQsIGl0IGhhcyBhIHJl
bmRlcmluZyBncmFwaCBsb2NraW5nIG1lY2hhbmlzbS4gCiAKQEAgLTExNyw3ICsxMTUsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZXN1bWUoUHJvbWlzZSYmKTsKICAgICB2b2lkIGNsb3NlKFByb21p
c2UmJik7CiAKLSAgICB1c2luZyBTdGF0ZSA9IEF1ZGlvQ29udGV4dFN0YXRlOworICAgIGVudW0g
Y2xhc3MgU3RhdGUgeyBTdXNwZW5kZWQsIFJ1bm5pbmcsIEludGVycnVwdGVkLCBDbG9zZWQgfTsK
ICAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0OwogCiAgICAgLy8gVGhlIEF1ZGlvTm9kZSBjcmVhdGUg
bWV0aG9kcyBhcmUgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZCAoZnJvbSBKYXZhU2NyaXB0KS4K
QEAgLTQwNSw3ICs0MDMsNyBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEF1ZGlvQ29u
dGV4dCYgbGhzLCBjb25zdCBBdWRpb0NvbnRleHQmIHJocykKICAgICByZXR1cm4gJmxocyAhPSAm
cmhzOwogfQogCi1pbmxpbmUgQXVkaW9Db250ZXh0U3RhdGUgQXVkaW9Db250ZXh0OjpzdGF0ZSgp
IGNvbnN0CitpbmxpbmUgQXVkaW9Db250ZXh0OjpTdGF0ZSBBdWRpb0NvbnRleHQ6OnN0YXRlKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbV9zdGF0ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAKaW5kZXggZWNkM2Y0NzMyYTU5NTZh
OTBjNTI4ZjFiZjU0YTk0OGYyNzBmZWQ1YS4uNWVkNmJhMjljMzhhMDgyYmJiOGEyYzcxMzljOGQ1
OGNjZmVmZWU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9X
YXZlU2hhcGVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9X
YXZlU2hhcGVyTm9kZS5jcHAKQEAgLTU0LDE0ICs1NCwxNCBAQCBGbG9hdDMyQXJyYXkqIFdhdmVT
aGFwZXJOb2RlOjpjdXJ2ZSgpCiAgICAgcmV0dXJuIHdhdmVTaGFwZXJQcm9jZXNzb3IoKS0+Y3Vy
dmUoKTsKIH0KIAotc3RhdGljIGlubGluZSBXYXZlU2hhcGVyUHJvY2Vzc29yOjpPdmVyU2FtcGxl
VHlwZSBwcm9jZXNzb3JUeXBlKE92ZXJTYW1wbGVUeXBlIHR5cGUpCitzdGF0aWMgaW5saW5lIFdh
dmVTaGFwZXJQcm9jZXNzb3I6Ok92ZXJTYW1wbGVUeXBlIHByb2Nlc3NvclR5cGUoV2F2ZVNoYXBl
ck5vZGU6Ok92ZXJTYW1wbGVUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAg
Y2FzZSBPdmVyU2FtcGxlVHlwZTo6Tm9uZToKKyAgICBjYXNlIFdhdmVTaGFwZXJOb2RlOjpPdmVy
U2FtcGxlVHlwZTo6Tm9uZToKICAgICAgICAgcmV0dXJuIFdhdmVTaGFwZXJQcm9jZXNzb3I6Ok92
ZXJTYW1wbGVOb25lOwotICAgIGNhc2UgT3ZlclNhbXBsZVR5cGU6Ol8yeDoKKyAgICBjYXNlIFdh
dmVTaGFwZXJOb2RlOjpPdmVyU2FtcGxlVHlwZTo6XzJ4OgogICAgICAgICByZXR1cm4gV2F2ZVNo
YXBlclByb2Nlc3Nvcjo6T3ZlclNhbXBsZTJ4OwotICAgIGNhc2UgT3ZlclNhbXBsZVR5cGU6Ol80
eDoKKyAgICBjYXNlIFdhdmVTaGFwZXJOb2RlOjpPdmVyU2FtcGxlVHlwZTo6XzR4OgogICAgICAg
ICByZXR1cm4gV2F2ZVNoYXBlclByb2Nlc3Nvcjo6T3ZlclNhbXBsZTR4OwogICAgIH0KICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBXYXZlU2hhcGVyTm9k
ZTo6c2V0T3ZlcnNhbXBsZShPdmVyU2FtcGxlVHlwZSB0eXBlKQogICAgIHdhdmVTaGFwZXJQcm9j
ZXNzb3IoKS0+c2V0T3ZlcnNhbXBsZShwcm9jZXNzb3JUeXBlKHR5cGUpKTsKIH0KIAotT3ZlclNh
bXBsZVR5cGUgV2F2ZVNoYXBlck5vZGU6Om92ZXJzYW1wbGUoKSBjb25zdAorYXV0byBXYXZlU2hh
cGVyTm9kZTo6b3ZlcnNhbXBsZSgpIGNvbnN0IC0+IE92ZXJTYW1wbGVUeXBlCiB7CiAgICAgc3dp
dGNoIChjb25zdF9jYXN0PFdhdmVTaGFwZXJOb2RlKj4odGhpcyktPndhdmVTaGFwZXJQcm9jZXNz
b3IoKS0+b3ZlcnNhbXBsZSgpKSB7CiAgICAgY2FzZSBXYXZlU2hhcGVyUHJvY2Vzc29yOjpPdmVy
U2FtcGxlTm9uZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
V2F2ZVNoYXBlck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNo
YXBlck5vZGUuaAppbmRleCA5NGYyNTk2ODU0YjBkOThhMjVjYzE1NWE4MzM3ZThjM2Q3MGM2ZTcz
Li5jOTA4MzczMGNkOWU1ZmNjOWY5MDA2M2U3YzhmMDE5NzIyNmM2NjZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5oCkBAIC0zMCw4ICsz
MCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBjbGFzcyBPdmVyU2FtcGxlVHlw
ZSB7IE5vbmUsIF8yeCwgXzR4IH07Ci0KIGNsYXNzIFdhdmVTaGFwZXJOb2RlIGZpbmFsIDogcHVi
bGljIEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFdh
dmVTaGFwZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0KQpAQCAtNDMsNiArNDEs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDdXJ2ZShGbG9hdDMyQXJyYXkqKTsKICAgICBGbG9h
dDMyQXJyYXkqIGN1cnZlKCk7CiAKKyAgICBlbnVtIGNsYXNzIE92ZXJTYW1wbGVUeXBlIHsgTm9u
ZSwgXzJ4LCBfNHggfTsKICAgICB2b2lkIHNldE92ZXJzYW1wbGUoT3ZlclNhbXBsZVR5cGUpOwog
ICAgIE92ZXJTYW1wbGVUeXBlIG92ZXJzYW1wbGUoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAppbmRleCA0
YjM0Zjg3YTA4ZWZiOThhZWRiNmJjZDNiMjZhZTk0MjY4N2Q4M2M4Li43NGNjYjk2M2RiZTRlNWZl
ZDNhYzNjZjFlZDk3OGM5NzVhZjIxMmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcApAQCAtMTg5LDggKzE4OSw4IEBA
IEpTVmFsdWUgSlNYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2UoRXhlY1N0YXRlJiBzdGF0ZSkgY29u
c3QKICAgICBhdXRvIHR5cGUgPSB3cmFwcGVkKCkucmVzcG9uc2VUeXBlKCk7CiAKICAgICBzd2l0
Y2ggKHR5cGUpIHsKLSAgICBjYXNlIFhNTEh0dHBSZXF1ZXN0UmVzcG9uc2VUeXBlOjpFbXB0eVN0
cmluZzoKLSAgICBjYXNlIFhNTEh0dHBSZXF1ZXN0UmVzcG9uc2VUeXBlOjpUZXh0OgorICAgIGNh
c2UgWE1MSHR0cFJlcXVlc3Q6OlJlc3BvbnNlVHlwZTo6RW1wdHlTdHJpbmc6CisgICAgY2FzZSBY
TUxIdHRwUmVxdWVzdDo6UmVzcG9uc2VUeXBlOjpUZXh0OgogICAgICAgICByZXR1cm4gcmVzcG9u
c2VUZXh0KHN0YXRlKTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKQEAgLTIwMCwxMiAr
MjAwLDEyIEBAIEpTVmFsdWUgSlNYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2UoRXhlY1N0YXRlJiBz
dGF0ZSkgY29uc3QKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogCiAgICAgc3dpdGNoICh0eXBl
KSB7Ci0gICAgY2FzZSBYTUxIdHRwUmVxdWVzdFJlc3BvbnNlVHlwZTo6RW1wdHlTdHJpbmc6Ci0g
ICAgY2FzZSBYTUxIdHRwUmVxdWVzdFJlc3BvbnNlVHlwZTo6VGV4dDoKKyAgICBjYXNlIFhNTEh0
dHBSZXF1ZXN0OjpSZXNwb25zZVR5cGU6OkVtcHR5U3RyaW5nOgorICAgIGNhc2UgWE1MSHR0cFJl
cXVlc3Q6OlJlc3BvbnNlVHlwZTo6VGV4dDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBYTUxIdHRwUmVxdWVzdFJlc3BvbnNlVHlwZTo6
SnNvbjoKKyAgICBjYXNlIFhNTEh0dHBSZXF1ZXN0OjpSZXNwb25zZVR5cGU6Okpzb246CiAgICAg
ICAgIHsKICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBKU09OUGFyc2UoJnN0YXRlLCB3cmFw
cGVkKCkucmVzcG9uc2VUZXh0SWdub3JpbmdSZXNwb25zZVR5cGUoKSk7CiAgICAgICAgICAgICBp
ZiAoIXZhbHVlKQpAQCAtMjE1LDcgKzIxNSw3IEBAIEpTVmFsdWUgSlNYTUxIdHRwUmVxdWVzdDo6
cmVzcG9uc2UoRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKICAgICAgICAgICAgIHJldHVybiB2YWx1
ZTsKICAgICAgICAgfQogCi0gICAgY2FzZSBYTUxIdHRwUmVxdWVzdFJlc3BvbnNlVHlwZTo6RG9j
dW1lbnQ6CisgICAgY2FzZSBYTUxIdHRwUmVxdWVzdDo6UmVzcG9uc2VUeXBlOjpEb2N1bWVudDoK
ICAgICAgICAgewogICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgICAgICAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSB3cmFwcGVkKCkucmVzcG9uc2VYTUwoZWMpOwpAQCAtMjI2
LDEwICsyMjYsMTAgQEAgSlNWYWx1ZSBKU1hNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZShFeGVjU3Rh
dGUmIHN0YXRlKSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBnbG9iYWxP
YmplY3QoKSwgZG9jdW1lbnQpOwogICAgICAgICB9CiAKLSAgICBjYXNlIFhNTEh0dHBSZXF1ZXN0
UmVzcG9uc2VUeXBlOjpCbG9iOgorICAgIGNhc2UgWE1MSHR0cFJlcXVlc3Q6OlJlc3BvbnNlVHlw
ZTo6QmxvYjoKICAgICAgICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgd3Jh
cHBlZCgpLnJlc3BvbnNlQmxvYigpKTsKIAotICAgIGNhc2UgWE1MSHR0cFJlcXVlc3RSZXNwb25z
ZVR5cGU6OkFycmF5YnVmZmVyOgorICAgIGNhc2UgWE1MSHR0cFJlcXVlc3Q6OlJlc3BvbnNlVHlw
ZTo6QXJyYXlidWZmZXI6CiAgICAgICAgIHJldHVybiB0b0pTKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0
KCksIHdyYXBwZWQoKS5yZXNwb25zZUFycmF5QnVmZmVyKCkpOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCAz
M2EzOGQwOGY5YzUzNTg1NDM4MzhhYWJkMDczMzY0MjAwMDkxMWFmLi4xZTZjZDJiNjEzYzkyZTI3
ZjgxNjBmOWZhZGQ5M2FkZTk2YzEzNzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMzIxLDcgKzMyMSw3IEBAIHN1YiBJ
c0RPTUdsb2JhbE9iamVjdAogCiBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RCb2R5CiB7
Ci0gICAgbXkgKCRpbnRlcmZhY2UsICRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkaGFzSW5z
dGFuY2VQcm9wZXJ0aWVzLCAkaW5saW5lZCkgPSBAXzsKKyAgICBteSAoJGludGVyZmFjZSwgJGNs
YXNzTmFtZSwgJGhhc0luc3RhbmNlUHJvcGVydGllcywgJGlubGluZWQpID0gQF87CiAKICAgICBt
eSAkbmFtZXNwYWNlTWF5YmUgPSAoJGlubGluZWQgPyAiSlNDOjoiIDogIiIpOwogICAgIG15ICRu
YW1lZEdldHRlckZ1bmN0aW9uID0gR2V0TmFtZWRHZXR0ZXJGdW5jdGlvbigkaW50ZXJmYWNlKTsK
QEAgLTUxMSwzNSArNTExLDI3IEBAIHN1YiBTaG91bGRHZW5lcmF0ZVRvSlNJbXBsZW1lbnRhdGlv
bgogCiBzdWIgR2V0QXR0cmlidXRlR2V0dGVyTmFtZQogewotICAgIG15ICgkaW50ZXJmYWNlTmFt
ZSwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSwgJGF0dHJpYnV0ZSkgPSBAXzsKLSAgICBpZiAoJGF0
dHJpYnV0ZS0+aXNTdGF0aWMpIHsKLSAgICAgICAgcmV0dXJuICRjb2RlR2VuZXJhdG9yLT5XS19s
Y2ZpcnN0KCRjbGFzc05hbWUpIC4gIkNvbnN0cnVjdG9yIiAuICRjb2RlR2VuZXJhdG9yLT5XS191
Y2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSk7Ci0gICAgfQotICAgIGlmIChJc0pT
QnVpbHRpbigkaW50ZXJmYWNlLCAkYXR0cmlidXRlKSkgewotICAgICAgICByZXR1cm4gR2V0SlNC
dWlsdGluRnVuY3Rpb25OYW1lKCRjbGFzc05hbWUsICRhdHRyaWJ1dGUpOwotICAgIH0KLSAgICBy
ZXR1cm4gImpzIiAuICRpbnRlcmZhY2VOYW1lIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3Qo
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKSAuICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5
cGUgPX4gL0NvbnN0cnVjdG9yJC8gPyAiQ29uc3RydWN0b3IiIDogIiIpOworICAgIG15ICgkaW50
ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKSA9IEBfOworCisgICAgcmV0dXJuICRjb2Rl
R2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRjbGFzc05hbWUpIC4gIkNvbnN0cnVjdG9yIiAuICRjb2Rl
R2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSkgaWYgJGF0
dHJpYnV0ZS0+aXNTdGF0aWM7CisgICAgcmV0dXJuIEdldEpTQnVpbHRpbkZ1bmN0aW9uTmFtZSgk
Y2xhc3NOYW1lLCAkYXR0cmlidXRlKSBpZiBJc0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkYXR0cmli
dXRlKTsKKyAgICByZXR1cm4gImpzIiAuICRpbnRlcmZhY2UtPm5hbWUgLiAkY29kZUdlbmVyYXRv
ci0+V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUpIC4gKCRhdHRyaWJ1dGUt
PnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29uc3RydWN0b3IkLyA/ICJDb25zdHJ1Y3RvciIgOiAiIik7
CiB9CiAKIHN1YiBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lCiB7Ci0gICAgbXkgKCRpbnRlcmZhY2VO
YW1lLCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlLCAkYXR0cmlidXRlKSA9IEBfOwotICAgIGlmICgk
YXR0cmlidXRlLT5pc1N0YXRpYykgewotICAgICAgICByZXR1cm4gInNldCIgLiAkY29kZUdlbmVy
YXRvci0+V0tfdWNmaXJzdCgkY2xhc3NOYW1lKSAuICJDb25zdHJ1Y3RvciIgLiAkY29kZUdlbmVy
YXRvci0+V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUpOwotICAgIH0KLSAg
ICBpZiAoSXNKU0J1aWx0aW4oJGludGVyZmFjZSwgJGF0dHJpYnV0ZSkpIHsKLSAgICAgICAgcmV0
dXJuICJzZXQiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoR2V0SlNCdWlsdGluRnVuY3Rp
b25OYW1lKCRjbGFzc05hbWUsICRhdHRyaWJ1dGUpKTsKLSAgICB9Ci0gICAgcmV0dXJuICJzZXRK
UyIgLiAkaW50ZXJmYWNlTmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1
dGUtPnNpZ25hdHVyZS0+bmFtZSkgLiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+IC9D
b25zdHJ1Y3RvciQvID8gIkNvbnN0cnVjdG9yIiA6ICIiKTsKKyAgICBteSAoJGludGVyZmFjZSwg
JGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSkgPSBAXzsKKworICAgIHJldHVybiAic2V0IiAuICRjb2Rl
R2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRjbGFzc05hbWUpIC4gIkNvbnN0cnVjdG9yIiAuICRjb2Rl
R2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSkgaWYgJGF0
dHJpYnV0ZS0+aXNTdGF0aWM7CisgICAgcmV0dXJuICJzZXQiIC4gJGNvZGVHZW5lcmF0b3ItPldL
X3VjZmlyc3QoR2V0SlNCdWlsdGluRnVuY3Rpb25OYW1lKCRjbGFzc05hbWUsICRhdHRyaWJ1dGUp
KSBpZiBJc0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKKyAgICByZXR1cm4gInNl
dEpTIiAuICRpbnRlcmZhY2UtPm5hbWUgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0
cmlidXRlLT5zaWduYXR1cmUtPm5hbWUpIC4gKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSA9
fiAvQ29uc3RydWN0b3IkLyA/ICJDb25zdHJ1Y3RvciIgOiAiIik7CiB9CiAKIHN1YiBHZXRGdW5j
dGlvbk5hbWUKIHsKICAgICBteSAoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKSA9
IEBfOwogCi0gICAgaWYgKElzSlNCdWlsdGluKCRpbnRlcmZhY2UsICRmdW5jdGlvbikpIHsKLSAg
ICAgICAgcmV0dXJuIEdldEpTQnVpbHRpbkZ1bmN0aW9uTmFtZSgkY2xhc3NOYW1lLCAkZnVuY3Rp
b24pOwotICAgIH0KKyAgICByZXR1cm4gR2V0SlNCdWlsdGluRnVuY3Rpb25OYW1lKCRjbGFzc05h
bWUsICRmdW5jdGlvbikgaWYgSXNKU0J1aWx0aW4oJGludGVyZmFjZSwgJGZ1bmN0aW9uKTsKIAog
ICAgIG15ICRmdW5jdGlvbk5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKICAgICAk
ZnVuY3Rpb25OYW1lID0gIlN5bWJvbEl0ZXJhdG9yIiBpZiAkZnVuY3Rpb25OYW1lIGVxICJbU3lt
Ym9sLkl0ZXJhdG9yXSI7CkBAIC02MTksMTQgKzYxMSw2IEBAIHN1YiBJbnRlcmZhY2VSZXF1aXJl
c0F0dHJpYnV0ZXNPbkluc3RhbmNlCiAgICAgcmV0dXJuIDA7CiB9CiAKLXN1YiBBdHRyaWJ1dGVT
aG91bGRCZU9uSW5zdGFuY2VGb3JDb21wYXRpYmlsaXR5Ci17Ci0gICAgbXkgJGludGVyZmFjZSA9
IHNoaWZ0OwotICAgIG15ICRhdHRyaWJ1dGUgPSBzaGlmdDsKLSAgICBteSAkaW50ZXJmYWNlTmFt
ZSA9ICRpbnRlcmZhY2UtPm5hbWU7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIHN1YiBBdHRyaWJ1dGVT
aG91bGRCZU9uSW5zdGFuY2UKIHsKICAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7CkBAIC02NDIs
OCArNjI2LDYgQEAgc3ViIEF0dHJpYnV0ZVNob3VsZEJlT25JbnN0YW5jZQogICAgICMgaHR0cHM6
Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jVW5mb3JnZWFibGUKICAgICByZXR1cm4gMSBpZiBJ
c1VuZm9yZ2VhYmxlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwogCi0gICAgcmV0dXJuIDEgaWYg
QXR0cmlidXRlU2hvdWxkQmVPbkluc3RhbmNlRm9yQ29tcGF0aWJpbGl0eSgkaW50ZXJmYWNlLCAk
YXR0cmlidXRlKTsKLQogICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
Q2hlY2tTZWN1cml0eSJ9KSB7CiAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJEb05vdENoZWNrU2VjdXJpdHkifSBvcgogICAgICAgICAgICAg
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRG9Ob3RDaGVja1Nl
Y3VyaXR5T25HZXR0ZXIifSkgewpAQCAtODEzLDMzICs3OTUsODUgQEAgc3ViIEdldEltcGxDbGFz
c05hbWUKICAgICByZXR1cm4gJG5hbWU7CiB9CiAKK3N1YiBJc0NsYXNzTmFtZVdvcmRCb3VuZGFy
eQoreworICAgIG15ICgkbmFtZSwgJGkpID0gQF87CisKKyAgICAjIEludGVycHJldCBuZWdhdGl2
ZSBudW1iZXJzIGFzIGRpc3RhbmNlIGZyb20gZW5kIG9mIHN0cmluZywganVzdCBhcyB0aGUgc3Vi
c3RyIGZ1bmN0aW9uIGRvZXMuCisgICAgJGkgKz0gbGVuZ3RoKCRuYW1lKSBpZiAkaSA8IDA7CisK
KyAgICByZXR1cm4gMCBpZiAkaSA8IDA7CisgICAgcmV0dXJuIDEgaWYgJGkgPT0gMDsKKyAgICBy
ZXR1cm4gMSBpZiAkaSA9PSBsZW5ndGgoJG5hbWUpOworICAgIHJldHVybiAwIGlmICRpID4gbGVu
Z3RoKCRuYW1lKTsKKworICAgIG15ICRjaGVja1N0cmluZyA9IHN1YnN0cigkbmFtZSwgJGkgLSAx
KTsKKyAgICByZXR1cm4gJGNoZWNrU3RyaW5nID1+IC9eW15BLVpdW0EtWl0vIHx8ICRjaGVja1N0
cmluZyA9fiAvXltBLVpdW0EtWl1bXkEtWl0vOworfQorCitzdWIgSXNQcmVmaXhSZW1vdmFibGUK
K3sKKyAgICBteSAoJGNsYXNzLCAkbmFtZSwgJGkpID0gQF87CisKKyAgICByZXR1cm4gSXNDbGFz
c05hbWVXb3JkQm91bmRhcnkoJG5hbWUsICRpKQorICAgICAgICAmJiAoSXNDbGFzc05hbWVXb3Jk
Qm91bmRhcnkoJGNsYXNzLCAkaSkgJiYgc3Vic3RyKCRjbGFzcywgMCwgJGkpIGVxIHN1YnN0cigk
bmFtZSwgMCwgJGkpCisgICAgICAgICAgICB8fCBJc0NsYXNzTmFtZVdvcmRCb3VuZGFyeSgkY2xh
c3MsIC0kaSkgJiYgc3Vic3RyKCRjbGFzcywgLSRpKSBlcSBzdWJzdHIoJG5hbWUsIDAsICRpKSk7
Cit9CisKIHN1YiBHZXRFbnVtZXJhdGlvbkNsYXNzTmFtZQogewotICAgIG15ICgkbmFtZSkgPSBA
XzsKLSAgICByZXR1cm4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJG5hbWUpOwotfTsKKyAg
ICBteSAoJGludGVyZmFjZSwgJG5hbWUpID0gQF87CisKKyAgICBteSAkY2xhc3MgPSBHZXRJbXBs
Q2xhc3NOYW1lKCRpbnRlcmZhY2UtPm5hbWUpOworICAgIG15ICRlbnVtID0gJGNvZGVHZW5lcmF0
b3ItPldLX3VjZmlyc3QoJG5hbWUpOworCisgICAgIyBTaW5jZSB0aGUgZW51bWVyYXRpb24gbmFt
ZSB3aWxsIGJlIG5lc3RlZCBpbiB0aGUgY2xhc3MgbmFtZSdzIG5hbWVzcGFjZSwgcmVtb3ZlIGFu
eSB3b3JkcworICAgICMgdGhhdCBoYXBwZW4gdG8gbWF0Y2ggdGhlIHN0YXJ0IG9yIGVuZCBvZiB0
aGUgY2xhc3MgbmFtZS4gSWYgYW4gZW51bWVyYXRpb24gaXMgbmFtZWQgVHJhY2tUeXBlIG9yCisg
ICAgIyBUZXh0VHJhY2tUeXBlLCBhbmQgdGhlIGNsYXNzIGlzIG5hbWVkIFRleHRUcmFjaywgdGhl
biB3ZSB3aWxsIGdldCBhIG5hbWUgbGlrZSBUZXh0VHJhY2s6OlR5cGUuCisgICAgbXkgJGVudW1M
ZW5ndGggPSBsZW5ndGgoJGVudW0pOworICAgIG15ICRsb25nZXN0UHJlZml4TGVuZ3RoID0gMDsK
KyAgICBpZiAoJGVudW0gPX4gL15bQS1aXS4vKSB7CisgICAgICAgIGZvciAobXkgJGkgPSAyOyAk
aSA8ICRlbnVtTGVuZ3RoIC0gMTsgJGkrKykgeworICAgICAgICAgICAgJGxvbmdlc3RQcmVmaXhM
ZW5ndGggPSAkaSBpZiBJc1ByZWZpeFJlbW92YWJsZSgkY2xhc3MsICRlbnVtLCAkaSk7CisgICAg
ICAgIH0KKyAgICB9CisgICAgJGVudW0gPSBzdWJzdHIoJGVudW0sICRsb25nZXN0UHJlZml4TGVu
Z3RoKTsKKworICAgIHJldHVybiAiJHtjbGFzc306OiRlbnVtIjsKK30KKworc3ViIEdldEVudW1l
cmF0aW9uQ2xhc3NJZGVudGlmaWVyCit7CisgICAgbXkgKCRpbnRlcmZhY2UsICRuYW1lKSA9IEBf
OworCisgICAgbXkgJGlkZW50aWZpZXIgPSBHZXRFbnVtZXJhdGlvbkNsYXNzTmFtZSgkaW50ZXJm
YWNlLCAkbmFtZSk7CisgICAgJGlkZW50aWZpZXIgPX4gcy86Oi8vOworICAgIHJldHVybiAkaWRl
bnRpZmllcjsKK30KIAogc3ViIEdldEVudW1lcmF0aW9uVmFsdWVOYW1lCiB7CiAgICAgbXkgKCRu
YW1lKSA9IEBfOworCiAgICAgcmV0dXJuICJFbXB0eVN0cmluZyIgaWYgJG5hbWUgZXEgIiI7CiAg
ICAgJG5hbWUgPSBqb2luKCIiLCBtYXAgeyAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkXykg
fSBzcGxpdCgiLSIsICRuYW1lKSk7CiAgICAgJG5hbWUgPSAiXyRuYW1lIiBpZiAkbmFtZSA9fiAv
XlxkLzsKICAgICByZXR1cm4gJG5hbWU7Ci19OworfQogCi1zdWIgR2V0RW51bWVyYXRpb25JbXBs
ZW1lbnRhdGlvbkNvbnRlbnQKK3N1YiBHZW5lcmF0ZUVudW1lcmF0aW9uSW1wbGVtZW50YXRpb25D
b250ZW50CiB7Ci0gICAgbXkgKCRlbnVtZXJhdGlvbnMpID0gQF87CisgICAgbXkgKCRpbnRlcmZh
Y2UsICRlbnVtZXJhdGlvbnMpID0gQF87CiAKLSAgICAjIEZJWE1FOiBDb3VsZCBvcHRpbWl6ZSB0
aGlzIHRvIG9ubHkgZ2VuZXJhdGUgdGhpbmdzIHRoYXQgYXJlIHVzZWQsIHdoaWNoIHdvdWxkIHJl
cXVpcmUKLSAgICAjIGl0ZXJhdGluZyBvdmVyIGV2ZXJ5dGhpbmcgaW4gdGhlIGludGVyZmFjZS4K
KyAgICAjIEZJWE1FOiBDb3VsZCBvcHRpbWl6ZSB0aGlzIHRvIG9ubHkgZ2VuZXJhdGUgdGhlIHBh
cnRzIG9mIGVhY2ggZW51bWVyYXRpb24gdGhhdCBhcmUgYWN0dWFsbHkKKyAgICAjIHVzZWQsIHdo
aWNoIHdvdWxkIHJlcXVpcmUgaXRlcmF0aW5nIG92ZXIgZXZlcnl0aGluZyBpbiB0aGUgaW50ZXJm
YWNlLgogCiAgICAgbXkgJHJlc3VsdCA9ICIiOwogICAgIGZvcmVhY2ggbXkgJGVudW1lcmF0aW9u
IChAJGVudW1lcmF0aW9ucykgewogICAgICAgICBteSAkbmFtZSA9ICRlbnVtZXJhdGlvbi0+bmFt
ZTsKIAotICAgICAgICBteSAkY2xhc3NOYW1lID0gR2V0RW51bWVyYXRpb25DbGFzc05hbWUoJG5h
bWUpOworICAgICAgICBteSAkY2xhc3NOYW1lID0gR2V0RW51bWVyYXRpb25DbGFzc05hbWUoJGlu
dGVyZmFjZSwgJG5hbWUpOworICAgICAgICBteSAkY2xhc3NJZGVudGlmaWVyID0gR2V0RW51bWVy
YXRpb25DbGFzc0lkZW50aWZpZXIoJGludGVyZmFjZSwgJG5hbWUpOwogCiAgICAgICAgICMgRklY
TUU6IEEgbGl0dGxlIHVnbHkgdG8gaGF2ZSB0aGlzIGJlIGEgc2lkZSBlZmZlY3QgaW5zdGVhZCBv
ZiBhIHJldHVybiB2YWx1ZS4KICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIjxydW50aW1lL0pT
U3RyaW5nLmg+Iik7CkBAIC04NTAsOCArODg0LDggQEAgc3ViIEdldEVudW1lcmF0aW9uSW1wbGVt
ZW50YXRpb25Db250ZW50CiAgICAgICAgICMgRGVjbGFyZSB0aGVzZSBpbnN0ZWFkIG9mIHVzaW5n
ICJzdGF0aWMiIGJlY2F1c2UgdGhlc2UgbWF5IGJlIHVudXNlZCBhbmQgd2UgZG9uJ3QKICAgICAg
ICAgIyB3YW50IHRvIGdldCB3YXJuaW5ncyBhYm91dCB0aGVtLgogICAgICAgICAkcmVzdWx0IC49
ICJKU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiwgJGNsYXNzTmFtZSk7XG4i
OwotICAgICAgICAkcmVzdWx0IC49ICJPcHRpb25hbDwkY2xhc3NOYW1lPiBwYXJzZSRjbGFzc05h
bWUoRXhlY1N0YXRlJiwgSlNWYWx1ZSk7XG4iOwotICAgICAgICAkcmVzdWx0IC49ICJleHRlcm4g
Y29uc3QgY2hhciBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzJHtjbGFzc05hbWV9W107XG5cbiI7
CisgICAgICAgICRyZXN1bHQgLj0gIk9wdGlvbmFsPCRjbGFzc05hbWU+IHBhcnNlJGNsYXNzSWRl
bnRpZmllcihFeGVjU3RhdGUmLCBKU1ZhbHVlKTtcbiI7CisgICAgICAgICRyZXN1bHQgLj0gImV4
dGVybiBjb25zdCBjaGFyIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXMke2NsYXNzSWRlbnRpZmll
cn1bXTtcblxuIjsKIAogICAgICAgICAjIFRha2UgYW4gRXhlY1N0YXRlKiBpbnN0ZWFkIG9mIGFu
IEV4ZWNTdGF0ZSYgdG8gbWF0Y2ggdGhlIGpzU3RyaW5nV2l0aENhY2hlIGZyb20gSlNTdHJpbmcu
aC4KICAgICAgICAgIyBGSVhNRTogQ2hhbmdlIHRvIHRha2UgVk0mIGluc3RlYWQgb2YgRXhlY1N0
YXRlKi4KQEAgLTg4NSw3ICs5MTksNyBAQCBzdWIgR2V0RW51bWVyYXRpb25JbXBsZW1lbnRhdGlv
bkNvbnRlbnQKICAgICAgICAgIyBGSVhNRTogQ2hhbmdlIHRvIHRha2UgVk0mIGluc3RlYWQgb2Yg
RXhlY1N0YXRlJi4KICAgICAgICAgIyBGSVhNRTogQ29uc2lkZXIgdXNpbmcgdG9TdHJpbmdPck51
bGwgdG8gbWFrZSBleGNlcHRpb24gY2hlY2tpbmcgZmFzdGVyLgogICAgICAgICAjIEZJWE1FOiBD
b25zaWRlciBmaW5kaW5nIGEgbW9yZSBlZmZpY2llbnQgd2F5IHRvIG1hdGNoIGFnYWluc3QgYWxs
IHRoZSBzdHJpbmdzIHF1aWNrbHkuCi0gICAgICAgICRyZXN1bHQgLj0gIk9wdGlvbmFsPCRjbGFz
c05hbWU+IHBhcnNlJGNsYXNzTmFtZShFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKVxu
IjsKKyAgICAgICAgJHJlc3VsdCAuPSAiT3B0aW9uYWw8JGNsYXNzTmFtZT4gcGFyc2UkY2xhc3NJ
ZGVudGlmaWVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpXG4iOwogICAgICAgICAk
cmVzdWx0IC49ICJ7XG4iOwogICAgICAgICAkcmVzdWx0IC49ICIgICAgYXV0byBzdHJpbmdWYWx1
ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7XG4iOwogICAgICAgICBmb3JlYWNoIG15ICR2
YWx1ZSAoQHskZW51bWVyYXRpb24tPnZhbHVlc30pIHsKQEAgLTkwMCw3ICs5MzQsNyBAQCBzdWIg
R2V0RW51bWVyYXRpb25JbXBsZW1lbnRhdGlvbkNvbnRlbnQKICAgICAgICAgJHJlc3VsdCAuPSAi
ICAgIHJldHVybiBOdWxsb3B0O1xuIjsKICAgICAgICAgJHJlc3VsdCAuPSAifVxuXG4iOwogCi0g
ICAgICAgICRyZXN1bHQgLj0gImNvbnN0IGNoYXIgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlcyR7
Y2xhc3NOYW1lfVtdID0gXCJcXFwiIiAuIGpvaW4gKCJcXFwiLCBcXFwiIiwgQHskZW51bWVyYXRp
b24tPnZhbHVlc30pIC4gIlxcXCJcIjtcblxuIjsKKyAgICAgICAgJHJlc3VsdCAuPSAiY29uc3Qg
Y2hhciBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzJHtjbGFzc0lkZW50aWZpZXJ9W10gPSBcIlxc
XCIiIC4gam9pbiAoIlxcXCIsIFxcXCIiLCBAeyRlbnVtZXJhdGlvbi0+dmFsdWVzfSkgLiAiXFxc
IlwiO1xuXG4iOwogCiAgICAgICAgICRyZXN1bHQgLj0gIiNlbmRpZlxuXG4iIGlmICRjb25kaXRp
b25hbFN0cmluZzsKICAgICB9CkBAIC0xMzQ4LDEwICsxMzgyLDcgQEAgc3ViIEdlbmVyYXRlSGVh
ZGVyCiAKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4iKTsKIAotICAgICMgQWRkIHByb3Rv
dHlwZSBkZWNsYXJhdGlvbi4KLSAgICBpZiAoSGVhZGVyTmVlZHNQcm90b3R5cGVEZWNsYXJhdGlv
bigkaW50ZXJmYWNlKSkgewotICAgICAgICBHZW5lcmF0ZVByb3RvdHlwZURlY2xhcmF0aW9uKFxA
aGVhZGVyQ29udGVudCwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSwgJGludGVyZmFjZU5hbWUpOwot
ICAgIH0KKyAgICBHZW5lcmF0ZVByb3RvdHlwZURlY2xhcmF0aW9uKFxAaGVhZGVyQ29udGVudCwg
JGNsYXNzTmFtZSwgJGludGVyZmFjZSkgaWYgSGVhZGVyTmVlZHNQcm90b3R5cGVEZWNsYXJhdGlv
bigkaW50ZXJmYWNlKTsKIAogICAgIGlmICgkaGFzRm9yd2FyZERlY2xhcmluZ0Z1bmN0aW9ucykg
ewogICAgICAgICBteSAkaW5BcHBsZUNvcHlyaWdodCA9IDA7CkBAIC0xMzg5LDEwICsxNDIwLDEw
IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJp
bmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0cmlidXRl
LT5zaWduYXR1cmUpOwogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNpZiAke2Nv
bmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAgICAgICAgICAg
bXkgJGdldHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZU5hbWUsICRjbGFz
c05hbWUsICRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOworICAgICAgICAgICAgbXkgJGdldHRlciA9
IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0
ZSk7CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiSlNDOjpFbmNvZGVkSlNWYWx1
ZSAke2dldHRlcn0oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlBy
b3BlcnR5TmFtZSk7XG4iKTsKICAgICAgICAgICAgIGlmICghSXNSZWFkb25seSgkYXR0cmlidXRl
KSkgewotICAgICAgICAgICAgICAgIG15ICRzZXR0ZXIgPSBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1l
KCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKKyAg
ICAgICAgICAgICAgICBteSAkc2V0dGVyID0gR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJm
YWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKICAgICAgICAgICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiYm9vbCAke3NldHRlcn0oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTtcbiIpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNvbmRpdGlvbmFsU3Ry
aW5nOwpAQCAtMTQ1OCwxMyArMTQ4OSwxMyBAQCBzdWIgR2VuZXJhdGVQcm9wZXJ0aWVzSGFzaFRh
YmxlCiAgICAgICAgIG15ICRzcGVjaWFsID0gR2V0SlNDQXR0cmlidXRlc0ZvckF0dHJpYnV0ZSgk
aW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKICAgICAgICAgcHVzaChAJGhhc2hTcGVjaWFscywgJHNw
ZWNpYWwpOwogCi0gICAgICAgIG15ICRnZXR0ZXIgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRp
bnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKKyAgICAg
ICAgbXkgJGdldHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNz
TmFtZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgIHB1c2goQCRoYXNoVmFsdWUxLCAkZ2V0dGVyKTsK
IAogICAgICAgICBpZiAoSXNSZWFkb25seSgkYXR0cmlidXRlKSkgewogICAgICAgICAgICAgcHVz
aChAJGhhc2hWYWx1ZTIsICIwIik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBteSAk
c2V0dGVyID0gR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFt
ZSwgJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICBteSAkc2V0dGVyID0gR2V0
QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsK
ICAgICAgICAgICAgIHB1c2goQCRoYXNoVmFsdWUyLCAkc2V0dGVyKTsKICAgICAgICAgfQogCkBA
IC0xNjQxLDkgKzE2NzIsNyBAQCBzdWIgTGVuZ3RoT2ZMb25nZXN0RnVuY3Rpb25QYXJhbWV0ZXJM
aXN0CiAKIHN1YiBHZW5lcmF0ZU92ZXJsb2FkZWRGdW5jdGlvbgogewotICAgIG15ICRmdW5jdGlv
biA9IHNoaWZ0OwotICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKLSAgICBteSAkaW50ZXJmYWNl
TmFtZSA9IHNoaWZ0OworICAgIG15ICgkZnVuY3Rpb24sICRpbnRlcmZhY2UpID0gQF87CiAKICAg
ICAjIEdlbmVyYXRlIGNvZGUgZm9yIGNob29zaW5nIHRoZSBjb3JyZWN0IG92ZXJsb2FkIHRvIGNh
bGwuIE92ZXJsb2FkcyBhcmUKICAgICAjIGNob3NlbiBiYXNlZCBvbiB0aGUgdG90YWwgbnVtYmVy
IG9mIGFyZ3VtZW50cyBwYXNzZWQgYW5kIHRoZSB0eXBlIG9mCkBAIC0xNjUyLDYgKzE2ODEsNyBA
QCBzdWIgR2VuZXJhdGVPdmVybG9hZGVkRnVuY3Rpb24KICAgICAjIGRlY2xhcmF0aW9uIGluIHRo
ZSBJREwuCiAKICAgICBteSAka2luZCA9ICRmdW5jdGlvbi0+aXNTdGF0aWMgPyAiQ29uc3RydWN0
b3IiIDogKE9wZXJhdGlvblNob3VsZEJlT25JbnN0YW5jZSgkaW50ZXJmYWNlLCAkZnVuY3Rpb24p
ID8gIkluc3RhbmNlIiA6ICJQcm90b3R5cGUiKTsKKyAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRp
bnRlcmZhY2UtPm5hbWU7CiAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9ICJqcyR7aW50ZXJmYWNlTmFt
ZX0ke2tpbmR9RnVuY3Rpb24iIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGZ1bmN0aW9u
LT5zaWduYXR1cmUtPm5hbWUpOwogCiAgICAgIyBGSVhNRTogSW1wbGVtZW50IHN1cHBvcnQgZm9y
IG92ZXJsb2FkZWQgZnVuY3Rpb25zIHdpdGggdmFyaWFkaWMgYXJndW1lbnRzLgpAQCAtMTkwMSw3
ICsxOTMxLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIlxudXNpbmcgbmFtZXNwYWNlIEpTQztcblxuIik7CiAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJuYW1lc3BhY2UgV2ViQ29yZSB7XG5cbiIpOwogCi0gICAgcHVzaChAaW1wbENvbnRlbnQs
IEdldEVudW1lcmF0aW9uSW1wbGVtZW50YXRpb25Db250ZW50KCRlbnVtZXJhdGlvbnMpKTsKKyAg
ICBwdXNoKEBpbXBsQ29udGVudCwgR2VuZXJhdGVFbnVtZXJhdGlvbkltcGxlbWVudGF0aW9uQ29u
dGVudCgkaW50ZXJmYWNlLCAkZW51bWVyYXRpb25zKSk7CiAKICAgICBteSBAZnVuY3Rpb25zID0g
QHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9OwogICAgIHB1c2goQGZ1bmN0aW9ucywgQHskaW50ZXJm
YWNlLT5pdGVyYWJsZS0+ZnVuY3Rpb25zfSkgaWYgJGludGVyZmFjZS0+aXRlcmFibGU7CkBAIC0x
OTQ5LDEwICsxOTc5LDEwIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAg
ICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRp
dGlvbmFsU3RyaW5nKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSk7CiAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFs
U3RyaW5nOwotICAgICAgICAgICAgbXkgJGdldHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUo
JGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOworICAg
ICAgICAgICAgbXkgJGdldHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZSwg
JGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IkpTQzo6RW5jb2RlZEpTVmFsdWUgJHtnZXR0ZXJ9KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpO1xuIik7CiAgICAgICAgICAgICBpZiAoIUlz
UmVhZG9ubHkoJGF0dHJpYnV0ZSkpIHsKLSAgICAgICAgICAgICAgICBteSAkc2V0dGVyID0gR2V0
QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJGludGVyZmFj
ZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICAgICAgbXkgJHNldHRlciA9IEdldEF0dHJpYnV0
ZVNldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJib29sICR7c2V0dGVyfShKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpO1xuIik7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIikgaWYg
JGNvbmRpdGlvbmFsU3RyaW5nOwpAQCAtMTk2OSwxNiArMTk5OSw5IEBAIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4iKTsKICAgICB9CiAK
LSAgICAjIEFkZCBwcm90b3R5cGUgZGVjbGFyYXRpb24uCi0gICAgaWYgKCFIZWFkZXJOZWVkc1By
b3RvdHlwZURlY2xhcmF0aW9uKCRpbnRlcmZhY2UpKSB7Ci0gICAgICAgIEdlbmVyYXRlUHJvdG90
eXBlRGVjbGFyYXRpb24oXEBpbXBsQ29udGVudCwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSwgJGlu
dGVyZmFjZU5hbWUpOwotICAgIH0KLQotICAgICMgQWRkIGNvbnN0cnVjdG9yIGRlY2xhcmF0aW9u
Ci0gICAgaWYgKE5lZWRzQ29uc3RydWN0b3JQcm9wZXJ0eSgkaW50ZXJmYWNlKSkgewotICAgICAg
ICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24oXEBpbXBsQ29udGVudCwgJGNsYXNzTmFt
ZSwgJGludGVyZmFjZSwgJGludGVyZmFjZU5hbWUpOwotICAgIH0KKyAgICBHZW5lcmF0ZVByb3Rv
dHlwZURlY2xhcmF0aW9uKFxAaW1wbENvbnRlbnQsICRjbGFzc05hbWUsICRpbnRlcmZhY2UpIGlm
ICFIZWFkZXJOZWVkc1Byb3RvdHlwZURlY2xhcmF0aW9uKCRpbnRlcmZhY2UpOwogCisgICAgR2Vu
ZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uKFxAaW1wbENvbnRlbnQsICRjbGFzc05hbWUsICRp
bnRlcmZhY2UpIGlmIE5lZWRzQ29uc3RydWN0b3JQcm9wZXJ0eSgkaW50ZXJmYWNlKTsKIAogICAg
IG15IEBoYXNoS2V5cyA9ICgpOwogICAgIG15IEBoYXNoVmFsdWUxID0gKCk7CkBAIC0yMDQzLDEz
ICsyMDY2LDEzIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBteSAk
c3BlY2lhbCA9IChAc3BlY2lhbHMgPiAwKSA/IGpvaW4oIiB8ICIsIEBzcGVjaWFscykgOiAiMCI7
CiAgICAgICAgICAgICBwdXNoKEBoYXNoU3BlY2lhbHMsICRzcGVjaWFsKTsKIAotICAgICAgICAg
ICAgbXkgJGdldHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZU5hbWUsICRj
bGFzc05hbWUsICRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOworICAgICAgICAgICAgbXkgJGdldHRl
ciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJp
YnV0ZSk7CiAgICAgICAgICAgICBwdXNoKEBoYXNoVmFsdWUxLCAkZ2V0dGVyKTsKIAogICAgICAg
ICAgICAgaWYgKElzUmVhZG9ubHkoJGF0dHJpYnV0ZSkpIHsKICAgICAgICAgICAgICAgICBwdXNo
KEBoYXNoVmFsdWUyLCAiMCIpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBteSAkc2V0dGVyID0gR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNlTmFtZSwgJGNs
YXNzTmFtZSwgJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICAgICAgbXkgJHNl
dHRlciA9IEdldEF0dHJpYnV0ZVNldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0
dHJpYnV0ZSk7CiAgICAgICAgICAgICAgICAgcHVzaChAaGFzaFZhbHVlMiwgJHNldHRlcik7CiAg
ICAgICAgICAgICB9CiAKQEAgLTIwOTEsOSArMjExNCw5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkY29kZUdlbmVyYXRvci0+R2VuZXJh
dGVDb21waWxlVGltZUNoZWNrRm9yRW51bXNJZk5lZWRlZCgkaW50ZXJmYWNlKSk7CiAKICAgICAg
ICAgbXkgJHByb3RvQ2xhc3NOYW1lID0gIiR7Y2xhc3NOYW1lfVByb3RvdHlwZSI7Ci0gICAgICAg
IEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9ucyhcQGltcGxDb250ZW50LCAkY2xhc3NOYW1l
LCAkcHJvdG9DbGFzc05hbWUsICRpbnRlcmZhY2VOYW1lLCAkdmlzaWJsZUludGVyZmFjZU5hbWUs
ICRpbnRlcmZhY2UpOworICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbnMoXEBp
bXBsQ29udGVudCwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1lLCAkdmlzaWJsZUludGVyZmFj
ZU5hbWUsICRpbnRlcmZhY2UpOwogICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Ik5hbWVkQ29uc3RydWN0b3IifSkgewotICAgICAgICAgICAgR2VuZXJhdGVDb25z
dHJ1Y3RvckRlZmluaXRpb25zKFxAaW1wbENvbnRlbnQsICRjbGFzc05hbWUsICRwcm90b0NsYXNz
TmFtZSwgJGludGVyZmFjZU5hbWUsICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJO
YW1lZENvbnN0cnVjdG9yIn0sICRpbnRlcmZhY2UsICJHZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3Rv
ciIpOworICAgICAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb25zKFxAaW1wbENv
bnRlbnQsICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Ik5hbWVkQ29uc3RydWN0b3IifSwgJGludGVyZmFjZSwgIkdlbmVyYXRpbmdO
YW1lZENvbnN0cnVjdG9yIik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTIyODAsOCArMjMwMyw4
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBteSAkZW5hYmxlX2Z1
bmN0aW9uID0gR2V0UnVudGltZUVuYWJsZUZ1bmN0aW9uTmFtZSgkYXR0cmlidXRlLT5zaWduYXR1
cmUpOwogICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZU5hbWUgPSAkYXR0cmlidXRlLT5zaWduYXR1
cmUtPm5hbWU7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoJHtlbmFi
bGVfZnVuY3Rpb259KCkpIHtcbiIpOwotICAgICAgICAgICAgbXkgJGdldHRlciA9IEdldEF0dHJp
YnV0ZUdldHRlck5hbWUoJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRpbnRlcmZhY2UsICRh
dHRyaWJ1dGUpOwotICAgICAgICAgICAgbXkgJHNldHRlciA9IElzUmVhZG9ubHkoJGF0dHJpYnV0
ZSkgPyAibnVsbHB0ciIgOiBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2VOYW1lLCAk
Y2xhc3NOYW1lLCAkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKKyAgICAgICAgICAgIG15ICRnZXR0
ZXIgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRy
aWJ1dGUpOworICAgICAgICAgICAgbXkgJHNldHRlciA9IElzUmVhZG9ubHkoJGF0dHJpYnV0ZSkg
PyAibnVsbHB0ciIgOiBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRjbGFzc05h
bWUsICRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAg
IGF1dG8qIGN1c3RvbUdldHRlclNldHRlciA9IEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZt
LCAkZ2V0dGVyLCAkc2V0dGVyKTtcbiIpOwogICAgICAgICAgICAgbXkgJGpzY0F0dHJpYnV0ZXMg
PSBHZXRKU0NBdHRyaWJ1dGVzRm9yQXR0cmlidXRlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwog
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHB1dERpcmVjdEN1c3RvbUFj
Y2Vzc29yKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT4kYXR0cmlidXRlTmFtZSwgY3VzdG9tR2V0dGVy
U2V0dGVyLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKCRqc2NBdHRyaWJ1dGVzKSk7XG4iKTsKQEAg
LTIzNDAsNyArMjM2Myw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDwke2NsYXNzTmFtZX0qPihvYmplY3Qp
O1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7XG4iKTsKLSAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCBHZW5lcmF0ZUdldE93blByb3BlcnR5U2xvdEJvZHkoJGludGVyZmFjZSwg
JGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRudW1JbnN0YW5jZVByb3BlcnRpZXMgPiAwLCAw
KSk7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0
eVNsb3RCb2R5KCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRudW1JbnN0YW5jZVByb3BlcnRpZXMg
PiAwLCAwKSk7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAg
ICAgIH0KIApAQCAtMjQxNSw3ICsyNDM4LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24K
ICAgICAgICAgICAgIG15ICRuYW1lID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lOwogICAg
ICAgICAgICAgbXkgJHR5cGUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGU7CiAgICAgICAg
ICAgICAkY29kZUdlbmVyYXRvci0+QXNzZXJ0Tm90U2VxdWVuY2VUeXBlKCR0eXBlKTsKLSAgICAg
ICAgICAgIG15ICRnZXRGdW5jdGlvbk5hbWUgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRl
cmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKKyAgICAgICAg
ICAgIG15ICRnZXRGdW5jdGlvbk5hbWUgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZh
Y2UsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgbXkgJGltcGxHZXR0ZXJG
dW5jdGlvbk5hbWUgPSAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEFzIn0gfHwgJG5hbWUpOwog
ICAgICAgICAgICAgbXkgJGdldHRlckV4Y2VwdGlvbnNXaXRoTWVzc2FnZSA9ICRhdHRyaWJ1dGUt
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkdldHRlclJhaXNlc0V4Y2VwdGlvbldp
dGhNZXNzYWdlIn07CiAgICAgICAgICAgICBteSAkZ2V0dGVyRXhjZXB0aW9ucyA9ICRhdHRyaWJ1
dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkdldHRlclJhaXNlc0V4Y2VwdGlv
biJ9IHx8ICRnZXR0ZXJFeGNlcHRpb25zV2l0aE1lc3NhZ2U7CkBAIC0yNzIwLDcgKzI3NDMsNyBA
QCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgICAgICAgICBteSAkbmFtZSA9ICRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZTsKICAgICAgICAgICAgIG15ICR0eXBlID0gJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLT50eXBlOwotICAgICAgICAgICAgbXkgJHB1dEZ1bmN0aW9uTmFtZSA9
IEdldEF0dHJpYnV0ZVNldHRlck5hbWUoJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRpbnRl
cmZhY2UsICRhdHRyaWJ1dGUpOworICAgICAgICAgICAgbXkgJHB1dEZ1bmN0aW9uTmFtZSA9IEdl
dEF0dHJpYnV0ZVNldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7
CiAgICAgICAgICAgICBteSAkaW1wbFNldHRlckZ1bmN0aW9uTmFtZSA9ICRjb2RlR2VuZXJhdG9y
LT5XS191Y2ZpcnN0KCRuYW1lKTsKICAgICAgICAgICAgIG15ICRzZXR0ZXJSYWlzZXNFeGNlcHRp
b25XaXRoTWVzc2FnZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IlNldHRlclJhaXNlc0V4Y2VwdGlvbldpdGhNZXNzYWdlIn07CiAgICAgICAgICAgICBteSAk
c2V0dGVyUmFpc2VzRXhjZXB0aW9uID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiU2V0dGVyUmFpc2VzRXhjZXB0aW9uIn0gfHwgJHNldHRlclJhaXNlc0V4Y2Vw
dGlvbldpdGhNZXNzYWdlOwpAQCAtMjg0MCw3ICsyODYzLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfTtc
biIpOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICIgLiBHZXROYXRpdmVUeXBlRnJvbVNpZ25hdHVyZSgkYXR0cmlidXRlLT5zaWdu
YXR1cmUpIC4gIiBuYXRpdmVWYWx1ZSA9ICIgLiBKU1ZhbHVlVG9OYXRpdmUoJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLCAidmFsdWUiLCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJDb25kaXRpb25hbCJ9KSAuICI7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAiIC4gR2V0TmF0aXZlVHlwZUZyb21TaWduYXR1cmUoJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlKSAuICIgbmF0aXZlVmFsdWUgPSAiIC4gSlNWYWx1ZVRvTmF0aXZlKCRpbnRl
cmZhY2UsICRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgInZhbHVlIiwgJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uZGl0aW9uYWwifSkgLiAiO1xuIik7CiAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5o
YWRFeGNlcHRpb24oKSkpXG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAgICAgcmV0dXJuIGZhbHNlO1xuIik7CiAKQEAgLTMwNDgsMTEgKzMwNzEsMTEgQEAgRU5E
CiAgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgICBteSAkbnVtUGFy
YW1ldGVycyA9IEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfTsKLSAgICAgICAgICAgICAgICAgICAg
bXkgKCRmdW5jdGlvblN0cmluZywgJGR1bW15KSA9IEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrKFxA
aW1wbENvbnRlbnQsICRmdW5jdGlvbiwgJGludGVyZmFjZSwgJG51bVBhcmFtZXRlcnMsICRpbnRl
cmZhY2VOYW1lLCAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUsICRzdmdQcm9wZXJ0eVR5cGUs
ICRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSwgJHN2Z0xpc3RQcm9wZXJ0eVR5cGUpOwor
ICAgICAgICAgICAgICAgICAgICBteSAoJGZ1bmN0aW9uU3RyaW5nLCAkZHVtbXkpID0gR2VuZXJh
dGVQYXJhbWV0ZXJzQ2hlY2soXEBpbXBsQ29udGVudCwgJGZ1bmN0aW9uLCAkaW50ZXJmYWNlLCAk
bnVtUGFyYW1ldGVycywgJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lLCAkc3ZnUHJvcGVydHlU
eXBlLCAkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUsICRzdmdMaXN0UHJvcGVydHlUeXBl
KTsKICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uQ2Fs
bCgkZnVuY3Rpb24sICRmdW5jdGlvblN0cmluZywgIiAgICAiLCAkc3ZnUHJvcGVydHlUeXBlLCAk
aW50ZXJmYWNlTmFtZSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICBHZW5lcmF0ZUZ1bmN0aW9uQ2FzdGVkVGhpcygkaW50ZXJmYWNlLCAk
aW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKTsKKyAgICAgICAgICAgICAgICBH
ZW5lcmF0ZUZ1bmN0aW9uQ2FzdGVkVGhpcygkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkZnVuY3Rp
b24pOwogCiAgICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJDaGVja1NlY3VyaXR5In0gYW5kCiAgICAgICAgICAgICAgICAgICAgICEkZnVuY3Rpb24t
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRvTm90Q2hlY2tTZWN1cml0eSJ9KSB7
CkBAIC0zMTAyLDcgKzMxMjUsNyBAQCBFTkQKICAgICAgICAgICAgICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgICAgICAgICAgICAgbXkgJG51bVBhcmFtZXRlcnMgPSBAeyRmdW5jdGlvbi0+
cGFyYW1ldGVyc307Ci0gICAgICAgICAgICAgICAgICAgICAgICBteSAoJGZ1bmN0aW9uU3RyaW5n
LCAkZHVtbXkpID0gR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2soXEBpbXBsQ29udGVudCwgJGZ1bmN0
aW9uLCAkaW50ZXJmYWNlLCAkbnVtUGFyYW1ldGVycywgJGludGVyZmFjZU5hbWUsICRmdW5jdGlv
bkltcGxlbWVudGF0aW9uTmFtZSwgJHN2Z1Byb3BlcnR5VHlwZSwgJHN2Z1Byb3BlcnR5T3JMaXN0
UHJvcGVydHlUeXBlLCAkc3ZnTGlzdFByb3BlcnR5VHlwZSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBteSAoJGZ1bmN0aW9uU3RyaW5nLCAkZHVtbXkpID0gR2VuZXJhdGVQYXJhbWV0ZXJzQ2hl
Y2soXEBpbXBsQ29udGVudCwgJGZ1bmN0aW9uLCAkaW50ZXJmYWNlLCAkbnVtUGFyYW1ldGVycywg
JGZ1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lLCAkc3ZnUHJvcGVydHlUeXBlLCAkc3ZnUHJvcGVy
dHlPckxpc3RQcm9wZXJ0eVR5cGUsICRzdmdMaXN0UHJvcGVydHlUeXBlKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIEdlbmVyYXRlSW1wbGVtZW50YXRpb25GdW5jdGlvbkNhbGwoJGZ1bmN0aW9u
LCAkZnVuY3Rpb25TdHJpbmcsICIgICAgIiwgJHN2Z1Byb3BlcnR5VHlwZSwgJGludGVyZmFjZU5h
bWUpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtMzExMSwx
MSArMzEzNCw4IEBAIEVORAogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIp
OwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcblxuIikgaWYgJGNvbmRp
dGlvbmFsOwogCi0gICAgICAgICAgICBpZiAoISRpc0N1c3RvbSAmJiAkaXNPdmVybG9hZGVkICYm
ICRmdW5jdGlvbi0+e292ZXJsb2FkSW5kZXh9ID09IEB7JGZ1bmN0aW9uLT57b3ZlcmxvYWRzfX0p
IHsKLSAgICAgICAgICAgICAgICAjIEdlbmVyYXRlIGEgZnVuY3Rpb24gZGlzcGF0Y2hpbmcgY2Fs
bCB0byB0aGUgcmVzdCBvZiB0aGUgb3ZlcmxvYWRzLgotICAgICAgICAgICAgICAgIEdlbmVyYXRl
T3ZlcmxvYWRlZEZ1bmN0aW9uKCRmdW5jdGlvbiwgJGludGVyZmFjZSwgJGludGVyZmFjZU5hbWUp
OwotICAgICAgICAgICAgfQotCisgICAgICAgICAgICAjIEdlbmVyYXRlIGEgZnVuY3Rpb24gZGlz
cGF0Y2hpbmcgY2FsbCB0byB0aGUgcmVzdCBvZiB0aGUgb3ZlcmxvYWRzLgorICAgICAgICAgICAg
R2VuZXJhdGVPdmVybG9hZGVkRnVuY3Rpb24oJGZ1bmN0aW9uLCAkaW50ZXJmYWNlKSBpZiAhJGlz
Q3VzdG9tICYmICRpc092ZXJsb2FkZWQgJiYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRleH0gPT0g
QHskZnVuY3Rpb24tPntvdmVybG9hZHN9fTsKICAgICAgICAgfQogCiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAkZW5kQXBwbGVDb3B5cmlnaHQpIGlmICRpbkFwcGxlQ29weXJpZ2h0OwpAQCAt
MzM2MSwxMCArMzM4MSw4IEBAIEVORAogCiBzdWIgR2VuZXJhdGVGdW5jdGlvbkNhc3RlZFRoaXMK
IHsKLSAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7Ci0gICAgbXkgJGludGVyZmFjZU5hbWUgPSBz
aGlmdDsKLSAgICBteSAkY2xhc3NOYW1lID0gc2hpZnQ7Ci0gICAgbXkgJGZ1bmN0aW9uID0gc2hp
ZnQ7CisgICAgbXkgKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRmdW5jdGlvbikgPSBAXzsKKwog
ICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tUHJveHlUb0pT
T2JqZWN0In0pIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGNsYXNzTmFtZSog
Y2FzdGVkVGhpcyA9IHRvJHtjbGFzc05hbWV9KHN0YXRlLT50aGlzVmFsdWUoKS50b1RoaXMoc3Rh
dGUsIE5vdFN0cmljdE1vZGUpKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKVxuIik7CkBAIC0zMzcyLDYgKzMzOTAsNyBAQCBz
dWIgR2VuZXJhdGVGdW5jdGlvbkNhc3RlZFRoaXMKICAgICB9IGVsc2UgewogICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUo
KTtcbiIpOwogICAgICAgICBteSAkY2FzdGluZ0hlbHBlciA9IEdldENhc3RpbmdIZWxwZXJGb3JU
aGlzT2JqZWN0KCRpbnRlcmZhY2UpOworICAgICAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRpbnRl
cmZhY2UtPm5hbWU7CiAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRXZlbnRUYXJnZXQi
KSB7CiAgICAgICAgICAgICAjIFdlIGFsbG93IGNhbGxpbmcgdGhlIEV2ZW50VGFyZ2V0IEFQSSB3
aXRob3V0IGFuIGV4cGxpY2l0ICd0aGlzJyB2YWx1ZSBhbmQgZmFsbCBiYWNrIHRvIHVzaW5nIHRo
ZSBnbG9iYWwgb2JqZWN0IGluc3RlYWQuCiAgICAgICAgICAgICAjIEFzIG9mIGVhcmx5IDIwMTYs
IHRoaXMgbWF0Y2hlcyBGaXJlZm94IGFuZCBDaHJvbWUncyBiZWhhdmlvci4KQEAgLTMzODQsNyAr
MzQwMyw3IEBAIHN1YiBHZW5lcmF0ZUZ1bmN0aW9uQ2FzdGVkVGhpcwogICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIFwi
JGludGVyZmFjZU5hbWVcIiwgXCIkZG9tRnVuY3Rpb25OYW1lXCIpO1xuIik7CiAgICAgfQogCi0g
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCAke2NsYXNzTmFtZX06OmluZm8oKSk7XG4iKSB1bmxlc3MgJGludGVyZmFjZU5hbWUg
ZXEgIkV2ZW50VGFyZ2V0IjsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICR7Y2xhc3NOYW1lfTo6aW5mbygpKTtcbiIpIHVu
bGVzcyAkaW50ZXJmYWNlLT5uYW1lIGVxICJFdmVudFRhcmdldCI7CiB9CiAKIHN1YiBHZW5lcmF0
ZUNhbGxXaXRoCkBAIC0zNDkzLDIwICszNTEyLDkgQEAgc3ViIFdpbGxDb252ZXJ0VW5kZWZpbmVk
VG9EZWZhdWx0UGFyYW1ldGVyVmFsdWUKIAogc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiB7
Ci0gICAgbXkgJG91dHB1dEFycmF5ID0gc2hpZnQ7Ci0gICAgbXkgJGZ1bmN0aW9uID0gc2hpZnQ7
Ci0gICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OwotICAgIG15ICRudW1QYXJhbWV0ZXJzID0gc2hp
ZnQ7Ci0gICAgbXkgJGludGVyZmFjZU5hbWUgPSBzaGlmdDsKLSAgICBteSAkZnVuY3Rpb25JbXBs
ZW1lbnRhdGlvbk5hbWUgPSBzaGlmdDsKLSAgICBteSAkc3ZnUHJvcGVydHlUeXBlID0gc2hpZnQ7
Ci0gICAgbXkgJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlID0gc2hpZnQ7Ci0gICAgbXkg
JHN2Z0xpc3RQcm9wZXJ0eVR5cGUgPSBzaGlmdDsKLQotICAgIG15ICRhcmdzSW5kZXggPSAwOwot
ICAgIG15ICRoYXNPcHRpb25hbEFyZ3VtZW50cyA9IDA7CisgICAgbXkgKCRvdXRwdXRBcnJheSwg
JGZ1bmN0aW9uLCAkaW50ZXJmYWNlLCAkbnVtUGFyYW1ldGVycywgJGZ1bmN0aW9uSW1wbGVtZW50
YXRpb25OYW1lLCAkc3ZnUHJvcGVydHlUeXBlLCAkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5
cGUsICRzdmdMaXN0UHJvcGVydHlUeXBlKSA9IEBfOwogCi0gICAgbXkgJGNsYXNzTmFtZSA9ICRp
bnRlcmZhY2UtPm5hbWU7CisgICAgbXkgJGludGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT5uYW1l
OwogICAgIG15IEBhcmd1bWVudHM7CiAgICAgbXkgJGZ1bmN0aW9uTmFtZTsKICAgICBteSAkaW1w
bGVtZW50ZWRCeSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
SW1wbGVtZW50ZWRCeSJ9OwpAQCAtMzUzMyw2ICszNTQxLDggQEAgc3ViIEdlbmVyYXRlUGFyYW1l
dGVyc0NoZWNrCiAKICAgICAkaW1wbEluY2x1ZGVzeyJFeGNlcHRpb25Db2RlLmgifSA9IDE7CiAg
ICAgJGltcGxJbmNsdWRlc3siSlNET01CaW5kaW5nLmgifSA9IDE7CisKKyAgICBteSAkYXJnc0lu
ZGV4ID0gMDsKICAgICBmb3JlYWNoIG15ICRwYXJhbWV0ZXIgKEB7JGZ1bmN0aW9uLT5wYXJhbWV0
ZXJzfSkgewogICAgICAgICBteSAkYXJnVHlwZSA9ICRwYXJhbWV0ZXItPnR5cGU7CiAgICAgICAg
IG15ICRvcHRpb25hbCA9ICRwYXJhbWV0ZXItPmlzT3B0aW9uYWw7CkBAIC0zNjI1LDcgKzM2MzUs
OSBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7XG4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3It
PklzRW51bVR5cGUoJGFyZ1R5cGUpKSB7Ci0gICAgICAgICAgICBteSAkY2xhc3NOYW1lID0gR2V0
RW51bWVyYXRpb25DbGFzc05hbWUoJGFyZ1R5cGUpOworICAgICAgICAgICAgbXkgJGNsYXNzTmFt
ZSA9IEdldEVudW1lcmF0aW9uQ2xhc3NOYW1lKCRpbnRlcmZhY2UsICRhcmdUeXBlKTsKKyAgICAg
ICAgICAgIG15ICRjbGFzc0lkZW50aWZpZXIgPSBHZXRFbnVtZXJhdGlvbkNsYXNzSWRlbnRpZmll
cigkaW50ZXJmYWNlLCAkYXJnVHlwZSk7CisKICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7Ijxy
dW50aW1lL0Vycm9yLmg+In0gPSAxOwogCiAgICAgICAgICAgICBteSAkbmF0aXZlVHlwZSA9ICRj
bGFzc05hbWU7CkBAIC0zNjUyLDExICszNjY0LDExIEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnND
aGVjawogICAgICAgICAgICAgICAgICRpbmRlbnQgPSAiICAgICI7CiAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiRpbmRlbnQgICAgJGRlZmluZU9wdGlv
bmFsVmFsdWUgPSBwYXJzZSRjbGFzc05hbWUoKnN0YXRlLCAke25hbWV9VmFsdWUpO1xuIik7Cisg
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIkaW5kZW50ICAgICRkZWZpbmVPcHRpb25h
bFZhbHVlID0gcGFyc2UkY2xhc3NJZGVudGlmaWVyKCpzdGF0ZSwgJHtuYW1lfVZhbHVlKTtcbiIp
OwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiJGluZGVudCAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSlcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiJGluZGVudCAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiJGluZGVudCAgICBp
ZiAoVU5MSUtFTFkoISRvcHRpb25hbFZhbHVlKSlcbiIpOwotICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiJGluZGVudCAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVFbnVt
RXJyb3IoKnN0YXRlLCAkYXJnc0luZGV4LCBcIiRuYW1lXCIsIFwiJGludGVyZmFjZU5hbWVcIiwg
JHF1b3RlZEZ1bmN0aW9uTmFtZSwgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlcyRjbGFzc05hbWUp
O1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIkaW5kZW50ICAgICAgICBy
ZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJvcigqc3RhdGUsICRhcmdzSW5kZXgsIFwi
JG5hbWVcIiwgXCIkaW50ZXJmYWNlTmFtZVwiLCAkcXVvdGVkRnVuY3Rpb25OYW1lLCBleHBlY3Rl
ZEVudW1lcmF0aW9uVmFsdWVzJGNsYXNzSWRlbnRpZmllcik7XG4iKTsKICAgICAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiRpbmRlbnQgICAgJG5hbWUgPSBvcHRpb25hbFZhbHVlLnZhbHVl
KCk7XG4iKSBpZiAkb3B0aW9uYWxWYWx1ZSBuZSAkbmFtZTsKIAogICAgICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgIH1cbiIpIGlmICRpbmRlbnQgbmUgIiI7CkBAIC0zNzE5LDcgKzM3
MzEsNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgICAgICAgICAg
JG91dGVyID0gIiI7CiAgICAgICAgICAgICAgICAgICAgICRpbm5lciA9ICJzdGF0ZS0+YXJndW1l
bnQoJGFyZ3NJbmRleCkiOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgJG5hdGl2ZVR5cGUgJG5hbWUgPSAkb3V0ZXIiIC4gSlNWYWx1
ZVRvTmF0aXZlKCRwYXJhbWV0ZXIsICRpbm5lciwgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJDb25kaXRpb25hbCJ9KSAuICI7XG4iKTsKKyAgICAgICAgICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgJG5hdGl2ZVR5cGUgJG5hbWUgPSAkb3V0ZXIiIC4g
SlNWYWx1ZVRvTmF0aXZlKCRpbnRlcmZhY2UsICRwYXJhbWV0ZXIsICRpbm5lciwgJGZ1bmN0aW9u
LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25kaXRpb25hbCJ9KSAuICI7XG4i
KTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgIyBDaGVjayBpZiB0aGUgdHlwZSBjb252
ZXJzaW9uIHN1Y2NlZWRlZC4KQEAgLTM4NjIsNyArMzg3NCw3IEBAIHN1YiBHZW5lcmF0ZUNhbGxi
YWNrSW1wbGVtZW50YXRpb24KICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxudXNpbmcgbmFtZXNw
YWNlIEpTQztcblxuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJuYW1lc3BhY2UgV2ViQ29y
ZSB7XG5cbiIpOwogCi0gICAgcHVzaChAaW1wbENvbnRlbnQsIEdldEVudW1lcmF0aW9uSW1wbGVt
ZW50YXRpb25Db250ZW50KCRlbnVtZXJhdGlvbnMpKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwg
R2VuZXJhdGVFbnVtZXJhdGlvbkltcGxlbWVudGF0aW9uQ29udGVudCgkaW50ZXJmYWNlLCAkZW51
bWVyYXRpb25zKSk7CiAKICAgICAjIENvbnN0cnVjdG9yCiAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIke2NsYXNzTmFtZX06OiR7Y2xhc3NOYW1lfShKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG4iKTsKQEAgLTM5MzksNyArMzk1MSw3IEBAIHN1YiBH
ZW5lcmF0ZUNhbGxiYWNrSW1wbGVtZW50YXRpb24KIAogICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb21waWxlVGltZUNoZWNrRm9yRW51bXNJZk5lZWRl
ZCgkaW50ZXJmYWNlKSk7CiAKLSAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbnMo
XEBpbXBsQ29udGVudCwgJGNsYXNzTmFtZSwgIiIsICRpbnRlcmZhY2VOYW1lLCAkdmlzaWJsZUlu
dGVyZmFjZU5hbWUsICRpbnRlcmZhY2UpOworICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZp
bml0aW9ucyhcQGltcGxDb250ZW50LCAkY2xhc3NOYW1lLCAiIiwgJHZpc2libGVJbnRlcmZhY2VO
YW1lLCAkaW50ZXJmYWNlKTsKIAogICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNWYWx1ZSAk
e2NsYXNzTmFtZX06OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdClcbntcbiIpOwogICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJl
dHVybiBnZXRET01Db25zdHJ1Y3Rvcjwke2NsYXNzTmFtZX1Db25zdHJ1Y3Rvcj4odm0sICpqc0Nh
c3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTtcbiIpOwpAQCAtNDMx
Nyw5ICs0MzI5LDcgQEAgbXkgJWludGVnZXJDb252ZXJzaW9uRnVuY3Rpb24gPSAoCiAKIHN1YiBK
U1ZhbHVlVG9OYXRpdmUKIHsKLSAgICBteSAkc2lnbmF0dXJlID0gc2hpZnQ7Ci0gICAgbXkgJHZh
bHVlID0gc2hpZnQ7Ci0gICAgbXkgJGNvbmRpdGlvbmFsID0gc2hpZnQ7CisgICAgbXkgKCRpbnRl
cmZhY2UsICRzaWduYXR1cmUsICR2YWx1ZSwgJGNvbmRpdGlvbmFsKSA9IEBfOwogCiAgICAgbXkg
JHR5cGUgPSAkc2lnbmF0dXJlLT50eXBlOwogCkBAIC00MzY4LDcgKzQzNzgsNyBAQCBzdWIgSlNW
YWx1ZVRvTmF0aXZlCiAgICAgcmV0dXJuICJ2YWx1ZVRvRGF0ZShzdGF0ZSwgJHZhbHVlKSIgaWYg
JHR5cGUgZXEgIkRhdGUiOwogCiAgICAgcmV0dXJuICJ0byR0eXBlKCR2YWx1ZSkiIGlmICRjb2Rl
R2VuZXJhdG9yLT5Jc1R5cGVkQXJyYXlUeXBlKCR0eXBlKTsKLSAgICByZXR1cm4gInBhcnNlIiAu
IEdldEVudW1lcmF0aW9uQ2xhc3NOYW1lKCR0eXBlKSAuICIoKnN0YXRlLCAkdmFsdWUpIiBpZiAk
Y29kZUdlbmVyYXRvci0+SXNFbnVtVHlwZSgkdHlwZSk7CisgICAgcmV0dXJuICJwYXJzZSIgLiBH
ZXRFbnVtZXJhdGlvbkNsYXNzSWRlbnRpZmllcigkaW50ZXJmYWNlLCAkdHlwZSkgLiAiKCpzdGF0
ZSwgJHZhbHVlKSIgaWYgJGNvZGVHZW5lcmF0b3ItPklzRW51bVR5cGUoJHR5cGUpOwogCiAgICAg
QWRkVG9JbXBsSW5jbHVkZXMoIkpTJHR5cGUuaCIsICRjb25kaXRpb25hbCk7CiAKQEAgLTQ3NDcs
MTAgKzQ3NTcsNyBAQCBzdWIgV3JpdGVEYXRhCiAKIHN1YiBHZW5lcmF0ZVByb3RvdHlwZURlY2xh
cmF0aW9uCiB7Ci0gICAgbXkgJG91dHB1dEFycmF5ID0gc2hpZnQ7Ci0gICAgbXkgJGNsYXNzTmFt
ZSA9IHNoaWZ0OwotICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKLSAgICBteSAkaW50ZXJmYWNl
TmFtZSA9IHNoaWZ0OworICAgIG15ICgkb3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRpbnRlcmZh
Y2UpID0gQF87CiAKICAgICBteSAkcHJvdG90eXBlQ2xhc3NOYW1lID0gIiR7Y2xhc3NOYW1lfVBy
b3RvdHlwZSI7CiAKQEAgLTQ4MjYsMTEgKzQ4MzMsOSBAQCBzdWIgR2V0Q29uc3RydWN0b3JUZW1w
bGF0ZUNsYXNzTmFtZQogCiBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uCiB7Ci0g
ICAgbXkgJG91dHB1dEFycmF5ID0gc2hpZnQ7Ci0gICAgbXkgJGNsYXNzTmFtZSA9IHNoaWZ0Owot
ICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKLSAgICBteSAkaW50ZXJmYWNlTmFtZSA9IHNoaWZ0
OworICAgIG15ICgkb3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRpbnRlcmZhY2UpID0gQF87CiAK
KyAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRpbnRlcmZhY2UtPm5hbWU7CiAgICAgbXkgJGNvbnN0
cnVjdG9yQ2xhc3NOYW1lID0gIiR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yIjsKICAgICBteSAkdGVt
cGxhdGVDbGFzc05hbWUgPSBHZXRDb25zdHJ1Y3RvclRlbXBsYXRlQ2xhc3NOYW1lKCRpbnRlcmZh
Y2UpOwogCkBAIC00ODQzLDI5ICs0ODQ4LDIzIEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVj
bGFyYXRpb24KIAogc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9ucwogewotICAgIG15
ICRvdXRwdXRBcnJheSA9IHNoaWZ0OwotICAgIG15ICRjbGFzc05hbWUgPSBzaGlmdDsKLSAgICBt
eSAkcHJvdG9DbGFzc05hbWUgPSBzaGlmdDsKLSAgICBteSAkaW50ZXJmYWNlTmFtZSA9IHNoaWZ0
OwotICAgIG15ICR2aXNpYmxlSW50ZXJmYWNlTmFtZSA9IHNoaWZ0OwotICAgIG15ICRpbnRlcmZh
Y2UgPSBzaGlmdDsKLSAgICBteSAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IgPSBzaGlmdDsK
KyAgICBteSAoJG91dHB1dEFycmF5LCAkY2xhc3NOYW1lLCAkcHJvdG9DbGFzc05hbWUsICR2aXNp
YmxlSW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZSwgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9y
KSA9IEBfOwogCiAgICAgaWYgKElzQ29uc3RydWN0YWJsZSgkaW50ZXJmYWNlKSkgewogICAgICAg
ICBteSBAY29uc3RydWN0b3JzID0gQHskaW50ZXJmYWNlLT5jb25zdHJ1Y3RvcnN9OwogICAgICAg
ICBpZiAoQGNvbnN0cnVjdG9ycyA+IDEpIHsKICAgICAgICAgICAgIGZvcmVhY2ggbXkgJGNvbnN0
cnVjdG9yIChAY29uc3RydWN0b3JzKSB7Ci0gICAgICAgICAgICAgICAgR2VuZXJhdGVDb25zdHJ1
Y3RvckRlZmluaXRpb24oJG91dHB1dEFycmF5LCAkY2xhc3NOYW1lLCAkcHJvdG9DbGFzc05hbWUs
ICRpbnRlcmZhY2VOYW1lLCAkdmlzaWJsZUludGVyZmFjZU5hbWUsICRpbnRlcmZhY2UsICRnZW5l
cmF0aW5nTmFtZWRDb25zdHJ1Y3RvciwgJGNvbnN0cnVjdG9yKTsKKyAgICAgICAgICAgICAgICBH
ZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbigkb3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRw
cm90b0NsYXNzTmFtZSwgJHZpc2libGVJbnRlcmZhY2VOYW1lLCAkaW50ZXJmYWNlLCAkZ2VuZXJh
dGluZ05hbWVkQ29uc3RydWN0b3IsICRjb25zdHJ1Y3Rvcik7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBHZW5lcmF0ZU92ZXJsb2FkZWRDb25zdHJ1Y3RvckRlZmluaXRpb24oJG91dHB1dEFy
cmF5LCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlKTsKICAgICAgICAgfSBlbHNpZiAoQGNvbnN0cnVj
dG9ycyA9PSAxKSB7Ci0gICAgICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbigk
b3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJGludGVyZmFjZU5hbWUs
ICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZSwgJGdlbmVyYXRpbmdOYW1lZENvbnN0
cnVjdG9yLCAkY29uc3RydWN0b3JzWzBdKTsKKyAgICAgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0
b3JEZWZpbml0aW9uKCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1lLCAk
dmlzaWJsZUludGVyZmFjZU5hbWUsICRpbnRlcmZhY2UsICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1
Y3RvciwgJGNvbnN0cnVjdG9yc1swXSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBH
ZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbigkb3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRw
cm90b0NsYXNzTmFtZSwgJGludGVyZmFjZU5hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGlu
dGVyZmFjZSwgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yKTsKKyAgICAgICAgICAgIEdlbmVy
YXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwgJHByb3Rv
Q2xhc3NOYW1lLCAkdmlzaWJsZUludGVyZmFjZU5hbWUsICRpbnRlcmZhY2UsICRnZW5lcmF0aW5n
TmFtZWRDb25zdHJ1Y3Rvcik7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBHZW5lcmF0ZUNvbnN0
cnVjdG9ySGVscGVyTWV0aG9kcygkb3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNz
TmFtZSwgJGludGVyZmFjZU5hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZSwg
JGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yKTsKKyAgICBHZW5lcmF0ZUNvbnN0cnVjdG9ySGVs
cGVyTWV0aG9kcygkb3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJHZp
c2libGVJbnRlcmZhY2VOYW1lLCAkaW50ZXJmYWNlLCAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0
b3IpOwogfQogCiBzdWIgR2VuZXJhdGVPdmVybG9hZGVkQ29uc3RydWN0b3JEZWZpbml0aW9uCkBA
IC00OTE1LDE5ICs0OTE0LDExIEBAIEVORAogCiBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmlu
aXRpb24KIHsKLSAgICBteSAkb3V0cHV0QXJyYXkgPSBzaGlmdDsKLSAgICBteSAkY2xhc3NOYW1l
ID0gc2hpZnQ7Ci0gICAgbXkgJHByb3RvQ2xhc3NOYW1lID0gc2hpZnQ7Ci0gICAgbXkgJGludGVy
ZmFjZU5hbWUgPSBzaGlmdDsKLSAgICBteSAkdmlzaWJsZUludGVyZmFjZU5hbWUgPSBzaGlmdDsK
LSAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7Ci0gICAgbXkgJGdlbmVyYXRpbmdOYW1lZENvbnN0
cnVjdG9yID0gc2hpZnQ7Ci0gICAgbXkgJGZ1bmN0aW9uID0gc2hpZnQ7CisgICAgbXkgKCRvdXRw
dXRBcnJheSwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1lLCAkdmlzaWJsZUludGVyZmFjZU5h
bWUsICRpbnRlcmZhY2UsICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciwgJGZ1bmN0aW9uKSA9
IEBfOwogCi0gICAgaWYgKElzSlNCdWlsdGluQ29uc3RydWN0b3IoJGludGVyZmFjZSkpIHsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KKyAgICByZXR1cm4gaWYgSXNKU0J1aWx0aW5Db25zdHJ1Y3Rv
cigkaW50ZXJmYWNlKTsKIAorICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGludGVyZmFjZS0+bmFt
ZTsKICAgICBteSAkY29uc3RydWN0b3JDbGFzc05hbWUgPSAkZ2VuZXJhdGluZ05hbWVkQ29uc3Ry
dWN0b3IgPyAiJHtjbGFzc05hbWV9TmFtZWRDb25zdHJ1Y3RvciIgOiAiJHtjbGFzc05hbWV9Q29u
c3RydWN0b3IiOwogCiAgICAgaWYgKElzQ29uc3RydWN0YWJsZSgkaW50ZXJmYWNlKSkgewpAQCAt
NTA0MCw3ICs1MDMxLDcgQEAgRU5ECiAgICAgICAgICAgICAjIEZJWE1FOiBGb3Igbm93LCB3ZSBk
byBub3Qgc3VwcG9ydCBTVkcgY29uc3RydWN0b3JzLgogICAgICAgICAgICAgIyBGSVhNRTogQ3Vy
cmVudGx5IFtDb25zdHJ1Y3RvciguLi4pXSBkb2VzIG5vdCB5ZXQgc3VwcG9ydCBvcHRpb25hbCBh
cmd1bWVudHMgd2l0aG91dCBbRGVmYXVsdD0uLi5dCiAgICAgICAgICAgICBteSAkbnVtUGFyYW1l
dGVycyA9IEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfTsKLSAgICAgICAgICAgIG15ICgkZHVtbXks
ICRwYXJhbUluZGV4KSA9IEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrKCRvdXRwdXRBcnJheSwgJGZ1
bmN0aW9uLCAkaW50ZXJmYWNlLCAkbnVtUGFyYW1ldGVycywgJGludGVyZmFjZU5hbWUsICJjb25z
dHJ1Y3RvckNhbGxiYWNrIiwgdW5kZWYsIHVuZGVmLCB1bmRlZik7CisgICAgICAgICAgICBteSAo
JGR1bW15LCAkcGFyYW1JbmRleCkgPSBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjaygkb3V0cHV0QXJy
YXksICRmdW5jdGlvbiwgJGludGVyZmFjZSwgJG51bVBhcmFtZXRlcnMsICJjb25zdHJ1Y3RvckNh
bGxiYWNrIiwgdW5kZWYsIHVuZGVmLCB1bmRlZik7CiAKICAgICAgICAgICAgIGlmICgkY29kZUdl
bmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygkaW50ZXJmYWNlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3JDYWxsV2l0aCJ9LCAiU2NyaXB0U3RhdGUiKSkgewogICAg
ICAgICAgICAgICAgIHB1c2goQGNvbnN0cnVjdG9yQXJnTGlzdCwgIipzdGF0ZSIpOwpAQCAtNTEy
NiwxMyArNTExNyw3IEBAIHN1YiBDb25zdHJ1Y3Rvckhhc1Byb3BlcnRpZXMKIAogc3ViIEdlbmVy
YXRlQ29uc3RydWN0b3JIZWxwZXJNZXRob2RzCiB7Ci0gICAgbXkgJG91dHB1dEFycmF5ID0gc2hp
ZnQ7Ci0gICAgbXkgJGNsYXNzTmFtZSA9IHNoaWZ0OwotICAgIG15ICRwcm90b0NsYXNzTmFtZSA9
IHNoaWZ0OwotICAgIG15ICRpbnRlcmZhY2VOYW1lID0gc2hpZnQ7Ci0gICAgbXkgJHZpc2libGVJ
bnRlcmZhY2VOYW1lID0gc2hpZnQ7Ci0gICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OwotICAgIG15
ICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciA9IHNoaWZ0OworICAgIG15ICgkb3V0cHV0QXJy
YXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJHZpc2libGVJbnRlcmZhY2VOYW1lLCAk
aW50ZXJmYWNlLCAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IpID0gQF87CiAKICAgICBteSAk
Y29uc3RydWN0b3JDbGFzc05hbWUgPSAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IgPyAiJHtj
bGFzc05hbWV9TmFtZWRDb25zdHJ1Y3RvciIgOiAiJHtjbGFzc05hbWV9Q29uc3RydWN0b3IiOwog
ICAgIG15ICRsZWFzdENvbnN0cnVjdG9yTGVuZ3RoID0gMDsKQEAgLTUxODMsMTQgKzUxNjgsOCBA
QCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMKICAgICB9CiAKICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1l
LCBqc05vbnRyaXZpYWxTdHJpbmcoJnZtLCBTdHJpbmcoQVNDSUlMaXRlcmFsKFwiJHZpc2libGVJ
bnRlcmZhY2VOYW1lXCIpKSksIFJlYWRPbmx5IHwgRG9udEVudW0pO1xuIik7Ci0KLSAgICBpZiAo
ZGVmaW5lZCAkbGVhc3RDb25zdHJ1Y3Rvckxlbmd0aCkgewotICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVt
YmVyKCR7bGVhc3RDb25zdHJ1Y3Rvckxlbmd0aH0pLCBSZWFkT25seSB8IERvbnRFbnVtKTtcbiIp
OwotICAgIH0KLQotICAgIGlmIChDb25zdHJ1Y3Rvckhhc1Byb3BlcnRpZXMoJGludGVyZmFjZSkp
IHsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJlaWZ5U3RhdGljUHJvcGVydGll
cyh2bSwgJHtjbGFzc05hbWV9Q29uc3RydWN0b3JUYWJsZVZhbHVlcywgKnRoaXMpO1xuIik7Ci0g
ICAgfQorICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoJHtsZWFzdENvbnN0cnVjdG9yTGVuZ3RofSksIFJl
YWRPbmx5IHwgRG9udEVudW0pO1xuIikgaWYgZGVmaW5lZCAkbGVhc3RDb25zdHJ1Y3Rvckxlbmd0
aDsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZt
LCAke2NsYXNzTmFtZX1Db25zdHJ1Y3RvclRhYmxlVmFsdWVzLCAqdGhpcyk7XG4iKSBpZiBDb25z
dHJ1Y3Rvckhhc1Byb3BlcnRpZXMoJGludGVyZmFjZSk7CiAKICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICJ9XG5cbiIpOwogCkBAIC01MjEyLDcgKzUxOTEsNyBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1
Y3RvckhlbHBlck1ldGhvZHMKICAgICBpZiAoSXNKU0J1aWx0aW5Db25zdHJ1Y3RvcigkaW50ZXJm
YWNlKSkgewogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ0ZW1wbGF0ZTw+IEZ1bmN0aW9u
RXhlY3V0YWJsZSogJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OmluaXRpYWxpemVFeGVjdXRhYmxl
KFZNJiB2bSlcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKLSAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiAiIC4gR2V0SlNCdWlsdGluRnVuY3Rp
b25OYW1lRnJvbVN0cmluZygkaW50ZXJmYWNlTmFtZSwgImluaXRpYWxpemUiIC4gJGludGVyZmFj
ZU5hbWUpIC4gIih2bSk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJl
dHVybiAiIC4gR2V0SlNCdWlsdGluRnVuY3Rpb25OYW1lRnJvbVN0cmluZygkaW50ZXJmYWNlLT5u
YW1lLCAiaW5pdGlhbGl6ZSIgLiAkaW50ZXJmYWNlLT5uYW1lKSAuICIodm0pO1xuIik7CiAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn1cbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICJcbiIpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggY2NkMTNiYTZiODVmOGZhZmE0YTM0YzUz
YjgyYTk5NTFjZjhlNjQ2Zi4uYjhlMTM1MGJjMTY2MzAyYjhjZDcxNWMwNWFlMDllN2VhYjAyMjEy
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5jcHAKQEAgLTg3LDExICs4NywxMSBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUpTU3RyaW5nKiBqc1N0cmluZ1dpdGhDYWNoZShFeGVj
U3RhdGUqLCBUZXN0RW51bVR5cGUpOwotT3B0aW9uYWw8VGVzdEVudW1UeXBlPiBwYXJzZVRlc3RF
bnVtVHlwZShFeGVjU3RhdGUmLCBKU1ZhbHVlKTsKLWV4dGVybiBjb25zdCBjaGFyIGV4cGVjdGVk
RW51bWVyYXRpb25WYWx1ZXNUZXN0RW51bVR5cGVbXTsKK0pTU3RyaW5nKiBqc1N0cmluZ1dpdGhD
YWNoZShFeGVjU3RhdGUqLCBUZXN0T2JqOjpFbnVtVHlwZSk7CitPcHRpb25hbDxUZXN0T2JqOjpF
bnVtVHlwZT4gcGFyc2VUZXN0T2JqRW51bVR5cGUoRXhlY1N0YXRlJiwgSlNWYWx1ZSk7CitleHRl
cm4gY29uc3QgY2hhciBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzVGVzdE9iakVudW1UeXBlW107
CiAKLUpTU3RyaW5nKiBqc1N0cmluZ1dpdGhDYWNoZShFeGVjU3RhdGUqIHN0YXRlLCBUZXN0RW51
bVR5cGUgZW51bWVyYXRpb25WYWx1ZSkKK0pTU3RyaW5nKiBqc1N0cmluZ1dpdGhDYWNoZShFeGVj
U3RhdGUqIHN0YXRlLCBUZXN0T2JqOjpFbnVtVHlwZSBlbnVtZXJhdGlvblZhbHVlKQogewogICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IHZhbHVlc1tdID0gewogICAgICAg
ICBlbXB0eVN0cmluZygpLApAQCAtOTksMzkgKzk5LDM5IEBAIEpTU3RyaW5nKiBqc1N0cmluZ1dp
dGhDYWNoZShFeGVjU3RhdGUqIHN0YXRlLCBUZXN0RW51bVR5cGUgZW51bWVyYXRpb25WYWx1ZSkK
ICAgICAgICAgQVNDSUlMaXRlcmFsKCJFbnVtVmFsdWUyIiksCiAgICAgICAgIEFTQ0lJTGl0ZXJh
bCgiRW51bVZhbHVlMyIpLAogICAgIH07Ci0gICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxz
aXplX3Q+KFRlc3RFbnVtVHlwZTo6RW1wdHlTdHJpbmcpID09IDAsICJUZXN0RW51bVR5cGU6OkVt
cHR5U3RyaW5nIGlzIG5vdCAwIGFzIGV4cGVjdGVkIik7Ci0gICAgc3RhdGljX2Fzc2VydChzdGF0
aWNfY2FzdDxzaXplX3Q+KFRlc3RFbnVtVHlwZTo6RW51bVZhbHVlMSkgPT0gMSwgIlRlc3RFbnVt
VHlwZTo6RW51bVZhbHVlMSBpcyBub3QgMSBhcyBleHBlY3RlZCIpOwotICAgIHN0YXRpY19hc3Nl
cnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihUZXN0RW51bVR5cGU6OkVudW1WYWx1ZTIpID09IDIsICJU
ZXN0RW51bVR5cGU6OkVudW1WYWx1ZTIgaXMgbm90IDIgYXMgZXhwZWN0ZWQiKTsKLSAgICBzdGF0
aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oVGVzdEVudW1UeXBlOjpFbnVtVmFsdWUzKSA9
PSAzLCAiVGVzdEVudW1UeXBlOjpFbnVtVmFsdWUzIGlzIG5vdCAzIGFzIGV4cGVjdGVkIik7Cisg
ICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFRlc3RPYmo6OkVudW1UeXBlOjpF
bXB0eVN0cmluZykgPT0gMCwgIlRlc3RPYmo6OkVudW1UeXBlOjpFbXB0eVN0cmluZyBpcyBub3Qg
MCBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihU
ZXN0T2JqOjpFbnVtVHlwZTo6RW51bVZhbHVlMSkgPT0gMSwgIlRlc3RPYmo6OkVudW1UeXBlOjpF
bnVtVmFsdWUxIGlzIG5vdCAxIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0
aWNfY2FzdDxzaXplX3Q+KFRlc3RPYmo6OkVudW1UeXBlOjpFbnVtVmFsdWUyKSA9PSAyLCAiVGVz
dE9iajo6RW51bVR5cGU6OkVudW1WYWx1ZTIgaXMgbm90IDIgYXMgZXhwZWN0ZWQiKTsKKyAgICBz
dGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oVGVzdE9iajo6RW51bVR5cGU6OkVudW1W
YWx1ZTMpID09IDMsICJUZXN0T2JqOjpFbnVtVHlwZTo6RW51bVZhbHVlMyBpcyBub3QgMyBhcyBl
eHBlY3RlZCIpOwogICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFs
dWUpIDwgV1RGX0FSUkFZX0xFTkdUSCh2YWx1ZXMpKTsKICAgICByZXR1cm4ganNTdHJpbmdXaXRo
Q2FjaGUoc3RhdGUsIHZhbHVlc1tzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUp
XSk7CiB9CiAKLXRlbXBsYXRlPD4gc3RydWN0IEpTVmFsdWVUcmFpdHM8VGVzdEVudW1UeXBlPiB7
Ci0gICAgc3RhdGljIEpTU3RyaW5nKiBhcnJheUpTVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNE
T01HbG9iYWxPYmplY3QqLCBUZXN0RW51bVR5cGUgdmFsdWUpIHsgcmV0dXJuIGpzU3RyaW5nV2l0
aENhY2hlKHN0YXRlLCB2YWx1ZSk7IH0KK3RlbXBsYXRlPD4gc3RydWN0IEpTVmFsdWVUcmFpdHM8
VGVzdE9iajo6RW51bVR5cGU+IHsKKyAgICBzdGF0aWMgSlNTdHJpbmcqIGFycmF5SlNWYWx1ZShF
eGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCosIFRlc3RPYmo6OkVudW1UeXBlIHZh
bHVlKSB7IHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgdmFsdWUpOyB9CiB9OwogCi1P
cHRpb25hbDxUZXN0RW51bVR5cGU+IHBhcnNlVGVzdEVudW1UeXBlKEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTVmFsdWUgdmFsdWUpCitPcHRpb25hbDxUZXN0T2JqOjpFbnVtVHlwZT4gcGFyc2VUZXN0T2Jq
RW51bVR5cGUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBhdXRvIHN0
cmluZ1ZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoJnN0YXRlKTsKICAgICBpZiAoc3RyaW5nVmFs
dWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gVGVzdEVudW1UeXBlOjpFbXB0eVN0cmluZzsK
KyAgICAgICAgcmV0dXJuIFRlc3RPYmo6OkVudW1UeXBlOjpFbXB0eVN0cmluZzsKICAgICBpZiAo
c3RyaW5nVmFsdWUgPT0gIkVudW1WYWx1ZTEiKQotICAgICAgICByZXR1cm4gVGVzdEVudW1UeXBl
OjpFbnVtVmFsdWUxOworICAgICAgICByZXR1cm4gVGVzdE9iajo6RW51bVR5cGU6OkVudW1WYWx1
ZTE7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJFbnVtVmFsdWUyIikKLSAgICAgICAgcmV0dXJu
IFRlc3RFbnVtVHlwZTo6RW51bVZhbHVlMjsKKyAgICAgICAgcmV0dXJuIFRlc3RPYmo6OkVudW1U
eXBlOjpFbnVtVmFsdWUyOwogICAgIGlmIChzdHJpbmdWYWx1ZSA9PSAiRW51bVZhbHVlMyIpCi0g
ICAgICAgIHJldHVybiBUZXN0RW51bVR5cGU6OkVudW1WYWx1ZTM7CisgICAgICAgIHJldHVybiBU
ZXN0T2JqOjpFbnVtVHlwZTo6RW51bVZhbHVlMzsKICAgICByZXR1cm4gTnVsbG9wdDsKIH0KIAot
Y29uc3QgY2hhciBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzVGVzdEVudW1UeXBlW10gPSAiXCJc
IiwgXCJFbnVtVmFsdWUxXCIsIFwiRW51bVZhbHVlMlwiLCBcIkVudW1WYWx1ZTNcIiI7Citjb25z
dCBjaGFyIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXNUZXN0T2JqRW51bVR5cGVbXSA9ICJcIlwi
LCBcIkVudW1WYWx1ZTFcIiwgXCJFbnVtVmFsdWUyXCIsIFwiRW51bVZhbHVlM1wiIjsKIAotSlNT
dHJpbmcqIGpzU3RyaW5nV2l0aENhY2hlKEV4ZWNTdGF0ZSosIE9wdGlvbmFsKTsKLU9wdGlvbmFs
PE9wdGlvbmFsPiBwYXJzZU9wdGlvbmFsKEV4ZWNTdGF0ZSYsIEpTVmFsdWUpOwotZXh0ZXJuIGNv
bnN0IGNoYXIgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlc09wdGlvbmFsW107CitKU1N0cmluZyog
anNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiwgVGVzdE9iajo6T3B0aW9uYWwpOworT3B0aW9u
YWw8VGVzdE9iajo6T3B0aW9uYWw+IHBhcnNlVGVzdE9iak9wdGlvbmFsKEV4ZWNTdGF0ZSYsIEpT
VmFsdWUpOworZXh0ZXJuIGNvbnN0IGNoYXIgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlc1Rlc3RP
YmpPcHRpb25hbFtdOwogCi1KU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiBz
dGF0ZSwgT3B0aW9uYWwgZW51bWVyYXRpb25WYWx1ZSkKK0pTU3RyaW5nKiBqc1N0cmluZ1dpdGhD
YWNoZShFeGVjU3RhdGUqIHN0YXRlLCBUZXN0T2JqOjpPcHRpb25hbCBlbnVtZXJhdGlvblZhbHVl
KQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IHZhbHVlc1tdID0g
ewogICAgICAgICBlbXB0eVN0cmluZygpLApAQCAtMTM5LDEzMCArMTM5LDIyNiBAQCBKU1N0cmlu
ZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiBzdGF0ZSwgT3B0aW9uYWwgZW51bWVyYXRp
b25WYWx1ZSkKICAgICAgICAgQVNDSUlMaXRlcmFsKCJPcHRpb25hbFZhbHVlMiIpLAogICAgICAg
ICBBU0NJSUxpdGVyYWwoIk9wdGlvbmFsVmFsdWUzIiksCiAgICAgfTsKLSAgICBzdGF0aWNfYXNz
ZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oT3B0aW9uYWw6OkVtcHR5U3RyaW5nKSA9PSAwLCAiT3B0
aW9uYWw6OkVtcHR5U3RyaW5nIGlzIG5vdCAwIGFzIGV4cGVjdGVkIik7Ci0gICAgc3RhdGljX2Fz
c2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KE9wdGlvbmFsOjpPcHRpb25hbFZhbHVlMSkgPT0gMSwg
Ik9wdGlvbmFsOjpPcHRpb25hbFZhbHVlMSBpcyBub3QgMSBhcyBleHBlY3RlZCIpOwotICAgIHN0
YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihPcHRpb25hbDo6T3B0aW9uYWxWYWx1ZTIp
ID09IDIsICJPcHRpb25hbDo6T3B0aW9uYWxWYWx1ZTIgaXMgbm90IDIgYXMgZXhwZWN0ZWQiKTsK
LSAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oT3B0aW9uYWw6Ok9wdGlvbmFs
VmFsdWUzKSA9PSAzLCAiT3B0aW9uYWw6Ok9wdGlvbmFsVmFsdWUzIGlzIG5vdCAzIGFzIGV4cGVj
dGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFRlc3RPYmo6Ok9w
dGlvbmFsOjpFbXB0eVN0cmluZykgPT0gMCwgIlRlc3RPYmo6Ok9wdGlvbmFsOjpFbXB0eVN0cmlu
ZyBpcyBub3QgMCBhcyBleHBlY3RlZCIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8
c2l6ZV90PihUZXN0T2JqOjpPcHRpb25hbDo6T3B0aW9uYWxWYWx1ZTEpID09IDEsICJUZXN0T2Jq
OjpPcHRpb25hbDo6T3B0aW9uYWxWYWx1ZTEgaXMgbm90IDEgYXMgZXhwZWN0ZWQiKTsKKyAgICBz
dGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oVGVzdE9iajo6T3B0aW9uYWw6Ok9wdGlv
bmFsVmFsdWUyKSA9PSAyLCAiVGVzdE9iajo6T3B0aW9uYWw6Ok9wdGlvbmFsVmFsdWUyIGlzIG5v
dCAyIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+
KFRlc3RPYmo6Ok9wdGlvbmFsOjpPcHRpb25hbFZhbHVlMykgPT0gMywgIlRlc3RPYmo6Ok9wdGlv
bmFsOjpPcHRpb25hbFZhbHVlMyBpcyBub3QgMyBhcyBleHBlY3RlZCIpOwogICAgIEFTU0VSVChz
dGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpIDwgV1RGX0FSUkFZX0xFTkdUSCh2
YWx1ZXMpKTsKICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIHZhbHVlc1tzdGF0
aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpXSk7CiB9CiAKLXRlbXBsYXRlPD4gc3Ry
dWN0IEpTVmFsdWVUcmFpdHM8T3B0aW9uYWw+IHsKLSAgICBzdGF0aWMgSlNTdHJpbmcqIGFycmF5
SlNWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCosIE9wdGlvbmFsIHZh
bHVlKSB7IHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgdmFsdWUpOyB9Cit0ZW1wbGF0
ZTw+IHN0cnVjdCBKU1ZhbHVlVHJhaXRzPFRlc3RPYmo6Ok9wdGlvbmFsPiB7CisgICAgc3RhdGlj
IEpTU3RyaW5nKiBhcnJheUpTVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmpl
Y3QqLCBUZXN0T2JqOjpPcHRpb25hbCB2YWx1ZSkgeyByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUo
c3RhdGUsIHZhbHVlKTsgfQogfTsKIAotT3B0aW9uYWw8T3B0aW9uYWw+IHBhcnNlT3B0aW9uYWwo
RXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKK09wdGlvbmFsPFRlc3RPYmo6Ok9wdGlv
bmFsPiBwYXJzZVRlc3RPYmpPcHRpb25hbChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVl
KQogewogICAgIGF1dG8gc3RyaW5nVmFsdWUgPSB2YWx1ZS50b1dURlN0cmluZygmc3RhdGUpOwog
ICAgIGlmIChzdHJpbmdWYWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDo6
RW1wdHlTdHJpbmc7CisgICAgICAgIHJldHVybiBUZXN0T2JqOjpPcHRpb25hbDo6RW1wdHlTdHJp
bmc7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJPcHRpb25hbFZhbHVlMSIpCi0gICAgICAgIHJl
dHVybiBPcHRpb25hbDo6T3B0aW9uYWxWYWx1ZTE7CisgICAgICAgIHJldHVybiBUZXN0T2JqOjpP
cHRpb25hbDo6T3B0aW9uYWxWYWx1ZTE7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJPcHRpb25h
bFZhbHVlMiIpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDo6T3B0aW9uYWxWYWx1ZTI7CisgICAg
ICAgIHJldHVybiBUZXN0T2JqOjpPcHRpb25hbDo6T3B0aW9uYWxWYWx1ZTI7CiAgICAgaWYgKHN0
cmluZ1ZhbHVlID09ICJPcHRpb25hbFZhbHVlMyIpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDo6
T3B0aW9uYWxWYWx1ZTM7CisgICAgICAgIHJldHVybiBUZXN0T2JqOjpPcHRpb25hbDo6T3B0aW9u
YWxWYWx1ZTM7CiAgICAgcmV0dXJuIE51bGxvcHQ7CiB9CiAKLWNvbnN0IGNoYXIgZXhwZWN0ZWRF
bnVtZXJhdGlvblZhbHVlc09wdGlvbmFsW10gPSAiXCJcIiwgXCJPcHRpb25hbFZhbHVlMVwiLCBc
Ik9wdGlvbmFsVmFsdWUyXCIsIFwiT3B0aW9uYWxWYWx1ZTNcIiI7Citjb25zdCBjaGFyIGV4cGVj
dGVkRW51bWVyYXRpb25WYWx1ZXNUZXN0T2JqT3B0aW9uYWxbXSA9ICJcIlwiLCBcIk9wdGlvbmFs
VmFsdWUxXCIsIFwiT3B0aW9uYWxWYWx1ZTJcIiwgXCJPcHRpb25hbFZhbHVlM1wiIjsKIAogI2lm
IEVOQUJMRShDb25kaXRpb24xKQogCi1KU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0
YXRlKiwgVGVzdEVudW1BKTsKLU9wdGlvbmFsPFRlc3RFbnVtQT4gcGFyc2VUZXN0RW51bUEoRXhl
Y1N0YXRlJiwgSlNWYWx1ZSk7Ci1leHRlcm4gY29uc3QgY2hhciBleHBlY3RlZEVudW1lcmF0aW9u
VmFsdWVzVGVzdEVudW1BW107CitKU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRl
KiwgVGVzdE9iajo6RW51bUEpOworT3B0aW9uYWw8VGVzdE9iajo6RW51bUE+IHBhcnNlVGVzdE9i
akVudW1BKEV4ZWNTdGF0ZSYsIEpTVmFsdWUpOworZXh0ZXJuIGNvbnN0IGNoYXIgZXhwZWN0ZWRF
bnVtZXJhdGlvblZhbHVlc1Rlc3RPYmpFbnVtQVtdOwogCi1KU1N0cmluZyoganNTdHJpbmdXaXRo
Q2FjaGUoRXhlY1N0YXRlKiBzdGF0ZSwgVGVzdEVudW1BIGVudW1lcmF0aW9uVmFsdWUpCitKU1N0
cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiBzdGF0ZSwgVGVzdE9iajo6RW51bUEg
ZW51bWVyYXRpb25WYWx1ZSkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3Ry
aW5nPiB2YWx1ZXNbXSA9IHsKICAgICAgICAgQVNDSUlMaXRlcmFsKCJBIiksCiAgICAgfTsKLSAg
ICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oVGVzdEVudW1BOjpBKSA9PSAwLCAi
VGVzdEVudW1BOjpBIGlzIG5vdCAwIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChz
dGF0aWNfY2FzdDxzaXplX3Q+KFRlc3RPYmo6OkVudW1BOjpBKSA9PSAwLCAiVGVzdE9iajo6RW51
bUE6OkEgaXMgbm90IDAgYXMgZXhwZWN0ZWQiKTsKICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6
ZV90PihlbnVtZXJhdGlvblZhbHVlKSA8IFdURl9BUlJBWV9MRU5HVEgodmFsdWVzKSk7CiAgICAg
cmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90
PihlbnVtZXJhdGlvblZhbHVlKV0pOwogfQogCi10ZW1wbGF0ZTw+IHN0cnVjdCBKU1ZhbHVlVHJh
aXRzPFRlc3RFbnVtQT4gewotICAgIHN0YXRpYyBKU1N0cmluZyogYXJyYXlKU1ZhbHVlKEV4ZWNT
dGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdEVudW1BIHZhbHVlKSB7IHJldHVy
biBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgdmFsdWUpOyB9Cit0ZW1wbGF0ZTw+IHN0cnVjdCBK
U1ZhbHVlVHJhaXRzPFRlc3RPYmo6OkVudW1BPiB7CisgICAgc3RhdGljIEpTU3RyaW5nKiBhcnJh
eUpTVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqLCBUZXN0T2JqOjpF
bnVtQSB2YWx1ZSkgeyByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIHZhbHVlKTsgfQog
fTsKIAotT3B0aW9uYWw8VGVzdEVudW1BPiBwYXJzZVRlc3RFbnVtQShFeGVjU3RhdGUmIHN0YXRl
LCBKU1ZhbHVlIHZhbHVlKQorT3B0aW9uYWw8VGVzdE9iajo6RW51bUE+IHBhcnNlVGVzdE9iakVu
dW1BKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0byBzdHJpbmdW
YWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09
ICJBIikKLSAgICAgICAgcmV0dXJuIFRlc3RFbnVtQTo6QTsKKyAgICAgICAgcmV0dXJuIFRlc3RP
Ymo6OkVudW1BOjpBOwogICAgIHJldHVybiBOdWxsb3B0OwogfQogCi1jb25zdCBjaGFyIGV4cGVj
dGVkRW51bWVyYXRpb25WYWx1ZXNUZXN0RW51bUFbXSA9ICJcIkFcIiI7Citjb25zdCBjaGFyIGV4
cGVjdGVkRW51bWVyYXRpb25WYWx1ZXNUZXN0T2JqRW51bUFbXSA9ICJcIkFcIiI7CiAKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpICYmIEVOQUJMRShDb25kaXRpb24yKQogCi1KU1N0
cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiwgVGVzdEVudW1CKTsKLU9wdGlvbmFs
PFRlc3RFbnVtQj4gcGFyc2VUZXN0RW51bUIoRXhlY1N0YXRlJiwgSlNWYWx1ZSk7Ci1leHRlcm4g
Y29uc3QgY2hhciBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzVGVzdEVudW1CW107CitKU1N0cmlu
ZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiwgVGVzdE9iajo6RW51bUIpOworT3B0aW9u
YWw8VGVzdE9iajo6RW51bUI+IHBhcnNlVGVzdE9iakVudW1CKEV4ZWNTdGF0ZSYsIEpTVmFsdWUp
OworZXh0ZXJuIGNvbnN0IGNoYXIgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlc1Rlc3RPYmpFbnVt
QltdOwogCi1KU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiBzdGF0ZSwgVGVz
dEVudW1CIGVudW1lcmF0aW9uVmFsdWUpCitKU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhl
Y1N0YXRlKiBzdGF0ZSwgVGVzdE9iajo6RW51bUIgZW51bWVyYXRpb25WYWx1ZSkKIHsKICAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiB2YWx1ZXNbXSA9IHsKICAgICAgICAg
QVNDSUlMaXRlcmFsKCJCIiksCiAgICAgfTsKLSAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0
PHNpemVfdD4oVGVzdEVudW1COjpCKSA9PSAwLCAiVGVzdEVudW1COjpCIGlzIG5vdCAwIGFzIGV4
cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFRlc3RPYmo6
OkVudW1COjpCKSA9PSAwLCAiVGVzdE9iajo6RW51bUI6OkIgaXMgbm90IDAgYXMgZXhwZWN0ZWQi
KTsKICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKSA8IFdU
Rl9BUlJBWV9MRU5HVEgodmFsdWVzKSk7CiAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKHN0
YXRlLCB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKV0pOwogfQog
Ci10ZW1wbGF0ZTw+IHN0cnVjdCBKU1ZhbHVlVHJhaXRzPFRlc3RFbnVtQj4gewotICAgIHN0YXRp
YyBKU1N0cmluZyogYXJyYXlKU1ZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiwgVGVzdEVudW1CIHZhbHVlKSB7IHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwg
dmFsdWUpOyB9Cit0ZW1wbGF0ZTw+IHN0cnVjdCBKU1ZhbHVlVHJhaXRzPFRlc3RPYmo6OkVudW1C
PiB7CisgICAgc3RhdGljIEpTU3RyaW5nKiBhcnJheUpTVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwg
SlNET01HbG9iYWxPYmplY3QqLCBUZXN0T2JqOjpFbnVtQiB2YWx1ZSkgeyByZXR1cm4ganNTdHJp
bmdXaXRoQ2FjaGUoc3RhdGUsIHZhbHVlKTsgfQogfTsKIAotT3B0aW9uYWw8VGVzdEVudW1CPiBw
YXJzZVRlc3RFbnVtQihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQorT3B0aW9uYWw8
VGVzdE9iajo6RW51bUI+IHBhcnNlVGVzdE9iakVudW1CKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFs
dWUgdmFsdWUpCiB7CiAgICAgYXV0byBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKCZz
dGF0ZSk7CiAgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJCIikKLSAgICAgICAgcmV0dXJuIFRlc3RF
bnVtQjo6QjsKKyAgICAgICAgcmV0dXJuIFRlc3RPYmo6OkVudW1COjpCOwogICAgIHJldHVybiBO
dWxsb3B0OwogfQogCi1jb25zdCBjaGFyIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXNUZXN0RW51
bUJbXSA9ICJcIkJcIiI7Citjb25zdCBjaGFyIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXNUZXN0
T2JqRW51bUJbXSA9ICJcIkJcIiI7CiAKICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEp
IHx8IEVOQUJMRShDb25kaXRpb24yKQogCi1KU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhl
Y1N0YXRlKiwgVGVzdEVudW1DKTsKLU9wdGlvbmFsPFRlc3RFbnVtQz4gcGFyc2VUZXN0RW51bUMo
RXhlY1N0YXRlJiwgSlNWYWx1ZSk7Ci1leHRlcm4gY29uc3QgY2hhciBleHBlY3RlZEVudW1lcmF0
aW9uVmFsdWVzVGVzdEVudW1DW107CitKU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0
YXRlKiwgVGVzdE9iajo6RW51bUMpOworT3B0aW9uYWw8VGVzdE9iajo6RW51bUM+IHBhcnNlVGVz
dE9iakVudW1DKEV4ZWNTdGF0ZSYsIEpTVmFsdWUpOworZXh0ZXJuIGNvbnN0IGNoYXIgZXhwZWN0
ZWRFbnVtZXJhdGlvblZhbHVlc1Rlc3RPYmpFbnVtQ1tdOwogCi1KU1N0cmluZyoganNTdHJpbmdX
aXRoQ2FjaGUoRXhlY1N0YXRlKiBzdGF0ZSwgVGVzdEVudW1DIGVudW1lcmF0aW9uVmFsdWUpCitK
U1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiBzdGF0ZSwgVGVzdE9iajo6RW51
bUMgZW51bWVyYXRpb25WYWx1ZSkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
U3RyaW5nPiB2YWx1ZXNbXSA9IHsKICAgICAgICAgQVNDSUlMaXRlcmFsKCJDIiksCiAgICAgfTsK
LSAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oVGVzdEVudW1DOjpDKSA9PSAw
LCAiVGVzdEVudW1DOjpDIGlzIG5vdCAwIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGljX2Fzc2Vy
dChzdGF0aWNfY2FzdDxzaXplX3Q+KFRlc3RPYmo6OkVudW1DOjpDKSA9PSAwLCAiVGVzdE9iajo6
RW51bUM6OkMgaXMgbm90IDAgYXMgZXhwZWN0ZWQiKTsKICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8
c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKSA8IFdURl9BUlJBWV9MRU5HVEgodmFsdWVzKSk7CiAg
ICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKHN0YXRlLCB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6
ZV90PihlbnVtZXJhdGlvblZhbHVlKV0pOwogfQogCi10ZW1wbGF0ZTw+IHN0cnVjdCBKU1ZhbHVl
VHJhaXRzPFRlc3RFbnVtQz4gewotICAgIHN0YXRpYyBKU1N0cmluZyogYXJyYXlKU1ZhbHVlKEV4
ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiwgVGVzdEVudW1DIHZhbHVlKSB7IHJl
dHVybiBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgdmFsdWUpOyB9Cit0ZW1wbGF0ZTw+IHN0cnVj
dCBKU1ZhbHVlVHJhaXRzPFRlc3RPYmo6OkVudW1DPiB7CisgICAgc3RhdGljIEpTU3RyaW5nKiBh
cnJheUpTVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqLCBUZXN0T2Jq
OjpFbnVtQyB2YWx1ZSkgeyByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIHZhbHVlKTsg
fQogfTsKIAotT3B0aW9uYWw8VGVzdEVudW1DPiBwYXJzZVRlc3RFbnVtQyhFeGVjU3RhdGUmIHN0
YXRlLCBKU1ZhbHVlIHZhbHVlKQorT3B0aW9uYWw8VGVzdE9iajo6RW51bUM+IHBhcnNlVGVzdE9i
akVudW1DKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgYXV0byBzdHJp
bmdWYWx1ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAgaWYgKHN0cmluZ1ZhbHVl
ID09ICJDIikKLSAgICAgICAgcmV0dXJuIFRlc3RFbnVtQzo6QzsKKyAgICAgICAgcmV0dXJuIFRl
c3RPYmo6OkVudW1DOjpDOwogICAgIHJldHVybiBOdWxsb3B0OwogfQogCi1jb25zdCBjaGFyIGV4
cGVjdGVkRW51bWVyYXRpb25WYWx1ZXNUZXN0RW51bUNbXSA9ICJcIkNcIiI7Citjb25zdCBjaGFy
IGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXNUZXN0T2JqRW51bUNbXSA9ICJcIkNcIiI7CiAKICNl
bmRpZgogCitKU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiwgVGVzdE9iajo6
S2luZCk7CitPcHRpb25hbDxUZXN0T2JqOjpLaW5kPiBwYXJzZVRlc3RPYmpLaW5kKEV4ZWNTdGF0
ZSYsIEpTVmFsdWUpOworZXh0ZXJuIGNvbnN0IGNoYXIgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVl
c1Rlc3RPYmpLaW5kW107CisKK0pTU3RyaW5nKiBqc1N0cmluZ1dpdGhDYWNoZShFeGVjU3RhdGUq
IHN0YXRlLCBUZXN0T2JqOjpLaW5kIGVudW1lcmF0aW9uVmFsdWUpCit7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gdmFsdWVzW10gPSB7CisgICAgICAgIEFTQ0lJTGl0
ZXJhbCgicXVpY2siKSwKKyAgICAgICAgQVNDSUlMaXRlcmFsKCJkZWFkIiksCisgICAgfTsKKyAg
ICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHNpemVfdD4oVGVzdE9iajo6S2luZDo6UXVpY2sp
ID09IDAsICJUZXN0T2JqOjpLaW5kOjpRdWljayBpcyBub3QgMCBhcyBleHBlY3RlZCIpOworICAg
IHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihUZXN0T2JqOjpLaW5kOjpEZWFkKSA9
PSAxLCAiVGVzdE9iajo6S2luZDo6RGVhZCBpcyBub3QgMSBhcyBleHBlY3RlZCIpOworICAgIEFT
U0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpIDwgV1RGX0FSUkFZX0xF
TkdUSCh2YWx1ZXMpKTsKKyAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIHZhbHVl
c1tzdGF0aWNfY2FzdDxzaXplX3Q+KGVudW1lcmF0aW9uVmFsdWUpXSk7Cit9CisKK3RlbXBsYXRl
PD4gc3RydWN0IEpTVmFsdWVUcmFpdHM8VGVzdE9iajo6S2luZD4geworICAgIHN0YXRpYyBKU1N0
cmluZyogYXJyYXlKU1ZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0Kiwg
VGVzdE9iajo6S2luZCB2YWx1ZSkgeyByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUoc3RhdGUsIHZh
bHVlKTsgfQorfTsKKworT3B0aW9uYWw8VGVzdE9iajo6S2luZD4gcGFyc2VUZXN0T2JqS2luZChF
eGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQoreworICAgIGF1dG8gc3RyaW5nVmFsdWUg
PSB2YWx1ZS50b1dURlN0cmluZygmc3RhdGUpOworICAgIGlmIChzdHJpbmdWYWx1ZSA9PSAicXVp
Y2siKQorICAgICAgICByZXR1cm4gVGVzdE9iajo6S2luZDo6UXVpY2s7CisgICAgaWYgKHN0cmlu
Z1ZhbHVlID09ICJkZWFkIikKKyAgICAgICAgcmV0dXJuIFRlc3RPYmo6OktpbmQ6OkRlYWQ7Cisg
ICAgcmV0dXJuIE51bGxvcHQ7Cit9CisKK2NvbnN0IGNoYXIgZXhwZWN0ZWRFbnVtZXJhdGlvblZh
bHVlc1Rlc3RPYmpLaW5kW10gPSAiXCJxdWlja1wiLCBcImRlYWRcIiI7CisKK0pTU3RyaW5nKiBq
c1N0cmluZ1dpdGhDYWNoZShFeGVjU3RhdGUqLCBUZXN0T2JqOjpTaXplKTsKK09wdGlvbmFsPFRl
c3RPYmo6OlNpemU+IHBhcnNlVGVzdE9ialNpemUoRXhlY1N0YXRlJiwgSlNWYWx1ZSk7CitleHRl
cm4gY29uc3QgY2hhciBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzVGVzdE9ialNpemVbXTsKKwor
SlNTdHJpbmcqIGpzU3RyaW5nV2l0aENhY2hlKEV4ZWNTdGF0ZSogc3RhdGUsIFRlc3RPYmo6OlNp
emUgZW51bWVyYXRpb25WYWx1ZSkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3Qg
U3RyaW5nPiB2YWx1ZXNbXSA9IHsKKyAgICAgICAgQVNDSUlMaXRlcmFsKCJzbWFsbCIpLAorICAg
ICAgICBBU0NJSUxpdGVyYWwoIm11Y2gtbXVjaC1sYXJnZXIiKSwKKyAgICB9OworICAgIHN0YXRp
Y19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihUZXN0T2JqOjpTaXplOjpTbWFsbCkgPT0gMCwg
IlRlc3RPYmo6OlNpemU6OlNtYWxsIGlzIG5vdCAwIGFzIGV4cGVjdGVkIik7CisgICAgc3RhdGlj
X2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFRlc3RPYmo6OlNpemU6Ok11Y2hNdWNoTGFyZ2Vy
KSA9PSAxLCAiVGVzdE9iajo6U2l6ZTo6TXVjaE11Y2hMYXJnZXIgaXMgbm90IDEgYXMgZXhwZWN0
ZWQiKTsKKyAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKSA8
IFdURl9BUlJBWV9MRU5HVEgodmFsdWVzKSk7CisgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hl
KHN0YXRlLCB2YWx1ZXNbc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnVtZXJhdGlvblZhbHVlKV0pOwor
fQorCit0ZW1wbGF0ZTw+IHN0cnVjdCBKU1ZhbHVlVHJhaXRzPFRlc3RPYmo6OlNpemU+IHsKKyAg
ICBzdGF0aWMgSlNTdHJpbmcqIGFycmF5SlNWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBKU0RPTUds
b2JhbE9iamVjdCosIFRlc3RPYmo6OlNpemUgdmFsdWUpIHsgcmV0dXJuIGpzU3RyaW5nV2l0aENh
Y2hlKHN0YXRlLCB2YWx1ZSk7IH0KK307CisKK09wdGlvbmFsPFRlc3RPYmo6OlNpemU+IHBhcnNl
VGVzdE9ialNpemUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBhdXRv
IHN0cmluZ1ZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoJnN0YXRlKTsKKyAgICBpZiAoc3RyaW5n
VmFsdWUgPT0gInNtYWxsIikKKyAgICAgICAgcmV0dXJuIFRlc3RPYmo6OlNpemU6OlNtYWxsOwor
ICAgIGlmIChzdHJpbmdWYWx1ZSA9PSAibXVjaC1tdWNoLWxhcmdlciIpCisgICAgICAgIHJldHVy
biBUZXN0T2JqOjpTaXplOjpNdWNoTXVjaExhcmdlcjsKKyAgICByZXR1cm4gTnVsbG9wdDsKK30K
KworY29uc3QgY2hhciBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzVGVzdE9ialNpemVbXSA9ICJc
InNtYWxsXCIsIFwibXVjaC1tdWNoLWxhcmdlclwiIjsKKworSlNTdHJpbmcqIGpzU3RyaW5nV2l0
aENhY2hlKEV4ZWNTdGF0ZSosIFRlc3RPYmo6OkNvbmZpZGVuY2UpOworT3B0aW9uYWw8VGVzdE9i
ajo6Q29uZmlkZW5jZT4gcGFyc2VUZXN0T2JqQ29uZmlkZW5jZShFeGVjU3RhdGUmLCBKU1ZhbHVl
KTsKK2V4dGVybiBjb25zdCBjaGFyIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXNUZXN0T2JqQ29u
ZmlkZW5jZVtdOworCitKU1N0cmluZyoganNTdHJpbmdXaXRoQ2FjaGUoRXhlY1N0YXRlKiBzdGF0
ZSwgVGVzdE9iajo6Q29uZmlkZW5jZSBlbnVtZXJhdGlvblZhbHVlKQoreworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+IHZhbHVlc1tdID0geworICAgICAgICBBU0NJSUxp
dGVyYWwoImhpZ2giKSwKKyAgICAgICAgQVNDSUlMaXRlcmFsKCJraW5kYS1sb3ciKSwKKyAgICB9
OworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihUZXN0T2JqOjpDb25maWRl
bmNlOjpIaWdoKSA9PSAwLCAiVGVzdE9iajo6Q29uZmlkZW5jZTo6SGlnaCBpcyBub3QgMCBhcyBl
eHBlY3RlZCIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihUZXN0T2Jq
OjpDb25maWRlbmNlOjpLaW5kYUxvdykgPT0gMSwgIlRlc3RPYmo6OkNvbmZpZGVuY2U6OktpbmRh
TG93IGlzIG5vdCAxIGFzIGV4cGVjdGVkIik7CisgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVf
dD4oZW51bWVyYXRpb25WYWx1ZSkgPCBXVEZfQVJSQVlfTEVOR1RIKHZhbHVlcykpOworICAgIHJl
dHVybiBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgdmFsdWVzW3N0YXRpY19jYXN0PHNpemVfdD4o
ZW51bWVyYXRpb25WYWx1ZSldKTsKK30KKwordGVtcGxhdGU8PiBzdHJ1Y3QgSlNWYWx1ZVRyYWl0
czxUZXN0T2JqOjpDb25maWRlbmNlPiB7CisgICAgc3RhdGljIEpTU3RyaW5nKiBhcnJheUpTVmFs
dWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqLCBUZXN0T2JqOjpDb25maWRl
bmNlIHZhbHVlKSB7IHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShzdGF0ZSwgdmFsdWUpOyB9Cit9
OworCitPcHRpb25hbDxUZXN0T2JqOjpDb25maWRlbmNlPiBwYXJzZVRlc3RPYmpDb25maWRlbmNl
KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgYXV0byBzdHJpbmdWYWx1
ZSA9IHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CisgICAgaWYgKHN0cmluZ1ZhbHVlID09ICJo
aWdoIikKKyAgICAgICAgcmV0dXJuIFRlc3RPYmo6OkNvbmZpZGVuY2U6OkhpZ2g7CisgICAgaWYg
KHN0cmluZ1ZhbHVlID09ICJraW5kYS1sb3ciKQorICAgICAgICByZXR1cm4gVGVzdE9iajo6Q29u
ZmlkZW5jZTo6S2luZGFMb3c7CisgICAgcmV0dXJuIE51bGxvcHQ7Cit9CisKK2NvbnN0IGNoYXIg
ZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlc1Rlc3RPYmpDb25maWRlbmNlW10gPSAiXCJoaWdoXCIs
IFwia2luZGEtbG93XCIiOworCiAvLyBGdW5jdGlvbnMKIAogI2lmIEVOQUJMRShURVNUX0ZFQVRV
UkUpCkBAIC0yMzk4LDcgKzI0OTQsNyBAQCBib29sIHNldEpTVGVzdE9iakVudW1BdHRyKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVgogICAgICAg
ICByZXR1cm4gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJlbnVtQXR0
ciIpOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBwYXJzZVRlc3RFbnVtVHlwZSgqc3RhdGUsIHZhbHVlKTsKKyAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gcGFyc2VUZXN0T2JqRW51bVR5cGUoKnN0YXRlLCB2YWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkKQEAgLTM1MzAsNyArMzYy
Niw3IEBAIGJvb2wgc2V0SlNUZXN0T2JqQXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUKICAgICAgICAgcmV0dXJuIHRocm93U2V0dGVy
VHlwZUVycm9yKCpzdGF0ZSwgIlRlc3RPYmoiLCAiYXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5
cGUiKTsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAg
ICBhdXRvIG5hdGl2ZVZhbHVlID0gcGFyc2VPcHRpb25hbCgqc3RhdGUsIHZhbHVlKTsKKyAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gcGFyc2VUZXN0T2JqT3B0aW9uYWwoKnN0YXRlLCB2YWx1ZSk7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBpZiAoVU5MSUtFTFkoIW5hdGl2ZVZhbHVlKSkKQEAgLTM5NDQsMTIgKzQwNDAs
MTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhFbnVtQXJnKEV4ZWNTdGEKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFy
Z3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIGF1dG8gZW51bUFyZ1Zh
bHVlID0gc3RhdGUtPmFyZ3VtZW50KDApOwotICAgIFRlc3RFbnVtVHlwZSBlbnVtQXJnOwotICAg
IGF1dG8gb3B0aW9uYWxWYWx1ZSA9IHBhcnNlVGVzdEVudW1UeXBlKCpzdGF0ZSwgZW51bUFyZ1Zh
bHVlKTsKKyAgICBUZXN0T2JqOjpFbnVtVHlwZSBlbnVtQXJnOworICAgIGF1dG8gb3B0aW9uYWxW
YWx1ZSA9IHBhcnNlVGVzdE9iakVudW1UeXBlKCpzdGF0ZSwgZW51bUFyZ1ZhbHVlKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpZiAoVU5MSUtFTFkoIW9wdGlvbmFsVmFs
dWUpKQotICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJvcigqc3RhdGUs
IDAsICJlbnVtQXJnIiwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aEVudW1BcmciLCBleHBlY3RlZEVu
dW1lcmF0aW9uVmFsdWVzVGVzdEVudW1UeXBlKTsKKyAgICAgICAgcmV0dXJuIHRocm93QXJndW1l
bnRNdXN0QmVFbnVtRXJyb3IoKnN0YXRlLCAwLCAiZW51bUFyZyIsICJUZXN0T2JqIiwgIm1ldGhv
ZFdpdGhFbnVtQXJnIiwgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlc1Rlc3RPYmpFbnVtVHlwZSk7
CiAgICAgZW51bUFyZyA9IG9wdGlvbmFsVmFsdWUudmFsdWUoKTsKICAgICBpbXBsLm1ldGhvZFdp
dGhFbnVtQXJnKGVudW1BcmcpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CkBAIC0zOTY0LDE1ICs0MDYwLDE1IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnCiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8o
KSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBhdXRvIGVu
dW1BcmdWYWx1ZSA9IHN0YXRlLT5hcmd1bWVudCgwKTsKLSAgICBUZXN0RW51bVR5cGUgZW51bUFy
ZzsKKyAgICBUZXN0T2JqOjpFbnVtVHlwZSBlbnVtQXJnOwogICAgIGlmIChlbnVtQXJnVmFsdWUu
aXNVbmRlZmluZWQoKSkgewotICAgICAgICBlbnVtQXJnID0gVGVzdEVudW1UeXBlOjpFbnVtVmFs
dWUxOworICAgICAgICBlbnVtQXJnID0gVGVzdE9iajo6RW51bVR5cGU6OkVudW1WYWx1ZTE7CiAg
ICAgfSBlbHNlIHsKLSAgICAgICAgYXV0byBvcHRpb25hbFZhbHVlID0gcGFyc2VUZXN0RW51bVR5
cGUoKnN0YXRlLCBlbnVtQXJnVmFsdWUpOworICAgICAgICBhdXRvIG9wdGlvbmFsVmFsdWUgPSBw
YXJzZVRlc3RPYmpFbnVtVHlwZSgqc3RhdGUsIGVudW1BcmdWYWx1ZSk7CiAgICAgICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgaWYgKFVOTElLRUxZKCFvcHRpb25h
bFZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9y
KCpzdGF0ZSwgMCwgImVudW1BcmciLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoT3B0aW9uYWxFbnVt
QXJnQW5kRGVmYXVsdFZhbHVlIiwgZXhwZWN0ZWRFbnVtZXJhdGlvblZhbHVlc1Rlc3RFbnVtVHlw
ZSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUVudW1FcnJvcigqc3Rh
dGUsIDAsICJlbnVtQXJnIiwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZ0Fu
ZERlZmF1bHRWYWx1ZSIsIGV4cGVjdGVkRW51bWVyYXRpb25WYWx1ZXNUZXN0T2JqRW51bVR5cGUp
OwogICAgICAgICBlbnVtQXJnID0gb3B0aW9uYWxWYWx1ZS52YWx1ZSgpOwogICAgIH0KICAgICBp
bXBsLm1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdBbmREZWZhdWx0VmFsdWUoZW51bUFyZyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKaW5k
ZXggZmUxM2NlNzllN2QwZjUzZGMyOWQ0NDcwZmUzNTU2ZjU3MDU2YTNhMC4uNzc0M2VlZDM1ZjQ1
ZTE3YTcwYjBhOTAwNDRiYWQ1YmExMjc2OTA4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbApAQCAtMzksNiArMzksMTAgQEAgZW51bSBf
b3B0aW9uYWwgeyAiIiwgIk9wdGlvbmFsVmFsdWUxIiwgIk9wdGlvbmFsVmFsdWUyIiwgIk9wdGlv
bmFsVmFsdWUzIiB9OwogW0NvbmRpdGlvbmFsPUNvbmRpdGlvbjEmQ29uZGl0aW9uMl0gZW51bSBU
ZXN0RW51bUIgeyAiQiIgfTsKIFtDb25kaXRpb25hbD1Db25kaXRpb24xfENvbmRpdGlvbjJdIGVu
dW0gVGVzdEVudW1DIHsgIkMiIH07CiAKK2VudW0gVGVzdE9iaktpbmQgeyAicXVpY2siLCAiZGVh
ZCIgfTsKK2VudW0gT2JqU2l6ZSB7ICJzbWFsbCIsICJtdWNoLW11Y2gtbGFyZ2VyIiB9OworZW51
bSBUZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwgImtpbmRhLWxvdyIgfTsKKwogWwogICAgIENvbnN0
cnVjdG9yKFRlc3RDYWxsYmFjayB0ZXN0Q2FsbGJhY2ssIFRlc3RDYWxsYmFja0Z1bmN0aW9uIHRl
c3RDYWxsYmFja0Z1bmN0aW9uKSwKICAgICBJbnRlcmZhY2VOYW1lPVRlc3RPYmplY3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXkuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL0NyeXB0b0tleS5jcHAKaW5kZXggZGY2N2MyOTJmNDU2MTQxYmE5YzAwMWE2YTYy
ZTA5M2U3ZDAwNDEyOS4uZDgyN2Y3Y2NlMjQ4MDJlYjFjNTlmYWRiZGNjZDFhYmFlOGVjNzU4MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1DcnlwdG9LZXk6OkNyeXB0b0tleShDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyIGFsZ29yaXRobSwgQ3J5cHRvS2V5VHlwZSB0eXBlLCBib29sIGV4dHJhY3RhYmxl
LCBDcnlwdG9LZXlVc2FnZSB1c2FnZXMpCitDcnlwdG9LZXk6OkNyeXB0b0tleShDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyIGFsZ29yaXRobSwgVHlwZSB0eXBlLCBib29sIGV4dHJhY3RhYmxlLCBD
cnlwdG9LZXlVc2FnZSB1c2FnZXMpCiAgICAgOiBtX2FsZ29yaXRobShhbGdvcml0aG0pCiAgICAg
LCBtX3R5cGUodHlwZSkKICAgICAsIG1fZXh0cmFjdGFibGUoZXh0cmFjdGFibGUpCkBAIC01Mywy
NiArNTMsMjYgQEAgdm9pZCBDcnlwdG9LZXk6OmJ1aWxkQWxnb3JpdGhtRGVzY3JpcHRpb24oQ3J5
cHRvQWxnb3JpdGhtRGVzY3JpcHRpb25CdWlsZGVyJiBidWkKICAgICAvLyBTdWJjbGFzc2VzIHdp
bGwgYWRkIG90aGVyIGtleXMuCiB9CiAKLVZlY3RvcjxLZXlVc2FnZT4gQ3J5cHRvS2V5Ojp1c2Fn
ZXMoKSBjb25zdAorYXV0byBDcnlwdG9LZXk6OnVzYWdlcygpIGNvbnN0IC0+IFZlY3RvcjxVc2Fn
ZT4KIHsKICAgICAvLyBUaGUgcmVzdWx0IGlzIG9yZGVyZWQgYWxwaGFiZXRpY2FsbHkuCi0gICAg
VmVjdG9yPEtleVVzYWdlPiByZXN1bHQ7CisgICAgVmVjdG9yPFVzYWdlPiByZXN1bHQ7CiAgICAg
aWYgKG1fdXNhZ2VzICYgQ3J5cHRvS2V5VXNhZ2VEZWNyeXB0KQotICAgICAgICByZXN1bHQuYXBw
ZW5kKEtleVVzYWdlOjpEZWNyeXB0KTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChVc2FnZTo6RGVj
cnlwdCk7CiAgICAgaWYgKG1fdXNhZ2VzICYgQ3J5cHRvS2V5VXNhZ2VEZXJpdmVCaXRzKQotICAg
ICAgICByZXN1bHQuYXBwZW5kKEtleVVzYWdlOjpEZXJpdmVCaXRzKTsKKyAgICAgICAgcmVzdWx0
LmFwcGVuZChVc2FnZTo6RGVyaXZlQml0cyk7CiAgICAgaWYgKG1fdXNhZ2VzICYgQ3J5cHRvS2V5
VXNhZ2VEZXJpdmVLZXkpCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoS2V5VXNhZ2U6OkRlcml2ZUtl
eSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoVXNhZ2U6OkRlcml2ZUtleSk7CiAgICAgaWYgKG1f
dXNhZ2VzICYgQ3J5cHRvS2V5VXNhZ2VFbmNyeXB0KQotICAgICAgICByZXN1bHQuYXBwZW5kKEtl
eVVzYWdlOjpFbmNyeXB0KTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChVc2FnZTo6RW5jcnlwdCk7
CiAgICAgaWYgKG1fdXNhZ2VzICYgQ3J5cHRvS2V5VXNhZ2VTaWduKQotICAgICAgICByZXN1bHQu
YXBwZW5kKEtleVVzYWdlOjpTaWduKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChVc2FnZTo6U2ln
bik7CiAgICAgaWYgKG1fdXNhZ2VzICYgQ3J5cHRvS2V5VXNhZ2VVbndyYXBLZXkpCi0gICAgICAg
IHJlc3VsdC5hcHBlbmQoS2V5VXNhZ2U6OlVud3JhcEtleSk7CisgICAgICAgIHJlc3VsdC5hcHBl
bmQoVXNhZ2U6OlVud3JhcEtleSk7CiAgICAgaWYgKG1fdXNhZ2VzICYgQ3J5cHRvS2V5VXNhZ2VW
ZXJpZnkpCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoS2V5VXNhZ2U6OlZlcmlmeSk7CisgICAgICAg
IHJlc3VsdC5hcHBlbmQoVXNhZ2U6OlZlcmlmeSk7CiAgICAgaWYgKG1fdXNhZ2VzICYgQ3J5cHRv
S2V5VXNhZ2VXcmFwS2V5KQotICAgICAgICByZXN1bHQuYXBwZW5kKEtleVVzYWdlOjpXcmFwS2V5
KTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChVc2FnZTo6V3JhcEtleSk7CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIApAQCAtODQsNiArODQsNyBAQCBWZWN0b3I8dWludDhfdD4gQ3J5cHRvS2V5Ojpy
YW5kb21EYXRhKHNpemVfdCBzaXplKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAjZW5kaWYKKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNVQlRMRV9DUllQVE8p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vQ3J5cHRvS2V5LmgKaW5kZXggMDdmYjdkOWQ0NjdmYzhjYTZkODg5Njk1
N2VlNDRjNjQyMmNlZmNlYS4uZWI2YjcwMTZkNzUxYTk3MjFhMDlhYjVhMGQzMzMyOGIyZGYxZGRk
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXkuaApAQCAtNDcsMjEgKzQ3LDIzIEBAIGVudW0g
Y2xhc3MgQ3J5cHRvS2V5Q2xhc3MgewogICAgIFJTQQogfTsKIAotZW51bSBjbGFzcyBLZXlVc2Fn
ZSB7IEVuY3J5cHQsIERlY3J5cHQsIFNpZ24sIFZlcmlmeSwgRGVyaXZlS2V5LCBEZXJpdmVCaXRz
LCBXcmFwS2V5LCBVbndyYXBLZXkgfTsKLQotdXNpbmcgS2V5VHlwZSA9IENyeXB0b0tleVR5cGU7
Ci0KIGNsYXNzIENyeXB0b0tleSA6IHB1YmxpYyBSZWZDb3VudGVkPENyeXB0b0tleT4gewogcHVi
bGljOgotICAgIENyeXB0b0tleShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBDcnlwdG9LZXlU
eXBlLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSk7CisgICAgdXNpbmcgVHlwZSA9
IENyeXB0b0tleVR5cGU7CisgICAgQ3J5cHRvS2V5KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIs
IFR5cGUsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlKTsKICAgICB2aXJ0dWFsIH5D
cnlwdG9LZXkoKTsKIAogICAgIHZpcnR1YWwgQ3J5cHRvS2V5Q2xhc3Mga2V5Q2xhc3MoKSBjb25z
dCA9IDA7CiAKLSAgICBDcnlwdG9LZXlUeXBlIHR5cGUoKSBjb25zdDsKKyAgICBUeXBlIHR5cGUo
KSBjb25zdDsKICAgICBib29sIGV4dHJhY3RhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9leHRyYWN0
YWJsZTsgfQogICAgIHZpcnR1YWwgdm9pZCBidWlsZEFsZ29yaXRobURlc2NyaXB0aW9uKENyeXB0
b0FsZ29yaXRobURlc2NyaXB0aW9uQnVpbGRlciYpIGNvbnN0OwotICAgIFZlY3RvcjxLZXlVc2Fn
ZT4gdXNhZ2VzKCkgY29uc3Q7CisKKyAgICAvLyBGSVhNRTogQ29uZnVzaW5nIHRvIGhhdmUgQ3J5
cHRvS2V5VXNhZ2UgYW5kIENyeXB0b0tleTo6VXNhZ2UgbmFtZWQgYWxtb3N0IHRoZSBzYW1lLCBi
dXQgYmUgc2xpZ2h0bHkgZGlmZmVyZW50LgorICAgIC8vIENyeXB0b0tleVVzYWdlIHZhbHVlcyBh
cmUgYml0IG1hc2tzIHNvIHRoZXkgY2FuIGJlIGNvbWJpbmVkIHdpdGggIm9yIiwgd2hpbGUgdGhp
cyBpcyBhIG5vcm1hbCBlbnVtIHRoYXQgbXVzdAorICAgIC8vIG1hdGNoIHdoYXQgaXMgZGVmaW5l
ZCBpbiB0aGUgSURMLiBNYXliZSB3ZSBjYW4gcmVuYW1lIENyeXB0b0tleVVzYWdlIHRvIENyeXB0
b0tleTo6VXNhZ2VzQml0bWFwPworICAgIGVudW0gY2xhc3MgVXNhZ2UgeyBFbmNyeXB0LCBEZWNy
eXB0LCBTaWduLCBWZXJpZnksIERlcml2ZUtleSwgRGVyaXZlQml0cywgV3JhcEtleSwgVW53cmFw
S2V5IH07CisgICAgVmVjdG9yPFVzYWdlPiB1c2FnZXMoKSBjb25zdDsKIAogICAgIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXIgYWxnb3JpdGhtSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1f
YWxnb3JpdGhtOyB9CiAgICAgQ3J5cHRvS2V5VXNhZ2UgdXNhZ2VzQml0bWFwKCkgY29uc3QgeyBy
ZXR1cm4gbV91c2FnZXM7IH0KQEAgLTczLDEyICs3NSwxMiBAQCBwdWJsaWM6CiAKIHByaXZhdGU6
CiAgICAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBtX2FsZ29yaXRobTsKLSAgICBDcnlwdG9L
ZXlUeXBlIG1fdHlwZTsKKyAgICBUeXBlIG1fdHlwZTsKICAgICBib29sIG1fZXh0cmFjdGFibGU7
CiAgICAgQ3J5cHRvS2V5VXNhZ2UgbV91c2FnZXM7CiB9OwogCi1pbmxpbmUgQ3J5cHRvS2V5VHlw
ZSBDcnlwdG9LZXk6OnR5cGUoKSBjb25zdAoraW5saW5lIGF1dG8gQ3J5cHRvS2V5Ojp0eXBlKCkg
Y29uc3QgLT4gVHlwZQogewogICAgIHJldHVybiBtX3R5cGU7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNl
LmNwcAppbmRleCAxNzNhNTgyYjE2OTRmM2QyYzBhYzgxMTY4OGUyNDIwOTVjYmJjYTA3Li5jYThm
OTg1NWVlMzYzOThiODk0OGI3MzgyOWM0MzBlYmQ0OWU0OTVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFj
ZS5jcHAKQEAgLTMxNywyMiArMzE3LDIyIEBAIFN0cmluZyBGb250RmFjZTo6ZmVhdHVyZVNldHRp
bmdzKCkgY29uc3QKICAgICByZXR1cm4gbGlzdC0+Y3NzVGV4dCgpOwogfQogCi1Gb250RmFjZUxv
YWRTdGF0dXMgRm9udEZhY2U6OnN0YXR1cygpIGNvbnN0CithdXRvIEZvbnRGYWNlOjpzdGF0dXMo
KSBjb25zdCAtPiBMb2FkU3RhdHVzCiB7CiAgICAgc3dpdGNoIChtX2JhY2tpbmctPnN0YXR1cygp
KSB7CiAgICAgY2FzZSBDU1NGb250RmFjZTo6U3RhdHVzOjpQZW5kaW5nOgotICAgICAgICByZXR1
cm4gRm9udEZhY2VMb2FkU3RhdHVzOjpVbmxvYWRlZDsKKyAgICAgICAgcmV0dXJuIExvYWRTdGF0
dXM6OlVubG9hZGVkOwogICAgIGNhc2UgQ1NTRm9udEZhY2U6OlN0YXR1czo6TG9hZGluZzoKLSAg
ICAgICAgcmV0dXJuIEZvbnRGYWNlTG9hZFN0YXR1czo6TG9hZGluZzsKKyAgICAgICAgcmV0dXJu
IExvYWRTdGF0dXM6OkxvYWRpbmc7CiAgICAgY2FzZSBDU1NGb250RmFjZTo6U3RhdHVzOjpUaW1l
ZE91dDoKLSAgICAgICAgcmV0dXJuIEZvbnRGYWNlTG9hZFN0YXR1czo6RXJyb3I7CisgICAgICAg
IHJldHVybiBMb2FkU3RhdHVzOjpFcnJvcjsKICAgICBjYXNlIENTU0ZvbnRGYWNlOjpTdGF0dXM6
OlN1Y2Nlc3M6Ci0gICAgICAgIHJldHVybiBGb250RmFjZUxvYWRTdGF0dXM6OkxvYWRlZDsKKyAg
ICAgICAgcmV0dXJuIExvYWRTdGF0dXM6OkxvYWRlZDsKICAgICBjYXNlIENTU0ZvbnRGYWNlOjpT
dGF0dXM6OkZhaWx1cmU6Ci0gICAgICAgIHJldHVybiBGb250RmFjZUxvYWRTdGF0dXM6OkVycm9y
OworICAgICAgICByZXR1cm4gTG9hZFN0YXR1czo6RXJyb3I7CiAgICAgfQogICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBGb250RmFjZUxvYWRTdGF0dXM6OkVycm9yOworICAg
IHJldHVybiBMb2FkU3RhdHVzOjpFcnJvcjsKIH0KIAogdm9pZCBGb250RmFjZTo6Zm9udFN0YXRl
Q2hhbmdlZChDU1NGb250RmFjZSYgZmFjZSwgQ1NTRm9udEZhY2U6OlN0YXR1cywgQ1NTRm9udEZh
Y2U6OlN0YXR1cyBuZXdTdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250
RmFjZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmgKaW5kZXggMmIyYTk0YmJjOTlj
MjIwNTkwYzhlNzVmZWE2ZDA3Yjk0OGYzMDAwMC4uZjRiNDM3YTViNzRmM2ZhOGM3NmUxMDdiMDBk
YmI2NzkzZWE2ZmQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmgKQEAgLTQyLDggKzQyLDYgQEAgY2xh
c3MgQ1NTRm9udEZhY2U7CiBjbGFzcyBDU1NWYWx1ZTsKIGNsYXNzIERpY3Rpb25hcnk7CiAKLWVu
dW0gY2xhc3MgRm9udEZhY2VMb2FkU3RhdHVzIHsgVW5sb2FkZWQsIExvYWRpbmcsIExvYWRlZCwg
RXJyb3IgfTsKLQogY2xhc3MgRm9udEZhY2UgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxGb250
RmFjZT4sIHB1YmxpYyBDU1NGb250RmFjZTo6Q2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UmVmUHRyPEZvbnRGYWNlPiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUmLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiwgY29uc3QgU3RyaW5nJiBmYW1pbHksIEpTQzo6SlNWYWx1ZSBzb3VyY2UsIGNvbnN0
IERpY3Rpb25hcnkmIGRlc2NyaXB0b3JzLCBFeGNlcHRpb25Db2RlJik7CkBAIC02NSw3ICs2Myw5
IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgdW5pY29kZVJhbmdlKCkgY29uc3Q7CiAgICAgU3RyaW5n
IHZhcmlhbnQoKSBjb25zdDsKICAgICBTdHJpbmcgZmVhdHVyZVNldHRpbmdzKCkgY29uc3Q7Ci0g
ICAgRm9udEZhY2VMb2FkU3RhdHVzIHN0YXR1cygpIGNvbnN0OworCisgICAgZW51bSBjbGFzcyBM
b2FkU3RhdHVzIHsgVW5sb2FkZWQsIExvYWRpbmcsIExvYWRlZCwgRXJyb3IgfTsKKyAgICBMb2Fk
U3RhdHVzIHN0YXR1cygpIGNvbnN0OwogCiAgICAgdHlwZWRlZiBET01Qcm9taXNlPEZvbnRGYWNl
JiwgRE9NQ29yZUV4Y2VwdGlvbiY+IFByb21pc2U7CiAgICAgUHJvbWlzZSYgcHJvbWlzZSgpIHsg
cmV0dXJuIG1fcHJvbWlzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRG
YWNlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5jcHAKaW5kZXggMDA1
MDk5MzZkNjM1OWYzNmFjNjI0N2VkZmIyMTVjNWNiNTBmNzlhMi4uNDU2MjJjYTRkMmE0MDE4MDNh
MjRkM2NhYTYxMDY1ZDY2YmY2NjZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0Zv
bnRGYWNlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuY3BwCkBA
IC0xODIsMTYgKzE4MiwxNiBAQCBhdXRvIEZvbnRGYWNlU2V0Ojpwcm9taXNlKEpTQzo6RXhlY1N0
YXRlJiBleGVjU3RhdGUpIC0+IFByb21pc2UmCiAgICAgcmV0dXJuIG1fcHJvbWlzZS52YWx1ZSgp
OwogfQogICAgIAotRm9udEZhY2VTZXRMb2FkU3RhdHVzIEZvbnRGYWNlU2V0OjpzdGF0dXMoKSBj
b25zdAorYXV0byBGb250RmFjZVNldDo6c3RhdHVzKCkgY29uc3QgLT4gTG9hZFN0YXR1cwogewog
ICAgIHN3aXRjaCAobV9iYWNraW5nLT5zdGF0dXMoKSkgewogICAgIGNhc2UgQ1NTRm9udEZhY2VT
ZXQ6OlN0YXR1czo6TG9hZGluZzoKLSAgICAgICAgcmV0dXJuIEZvbnRGYWNlU2V0TG9hZFN0YXR1
czo6TG9hZGluZzsKKyAgICAgICAgcmV0dXJuIExvYWRTdGF0dXM6OkxvYWRpbmc7CiAgICAgY2Fz
ZSBDU1NGb250RmFjZVNldDo6U3RhdHVzOjpMb2FkZWQ6Ci0gICAgICAgIHJldHVybiBGb250RmFj
ZVNldExvYWRTdGF0dXM6OkxvYWRlZDsKKyAgICAgICAgcmV0dXJuIExvYWRTdGF0dXM6OkxvYWRl
ZDsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEZvbnRGYWNl
U2V0TG9hZFN0YXR1czo6TG9hZGVkOworICAgIHJldHVybiBMb2FkU3RhdHVzOjpMb2FkZWQ7CiB9
CiAKIGJvb2wgRm9udEZhY2VTZXQ6OmNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaAppbmRleCAyOTUzYTlhOGE1MDlmNTBhODY0NTk3
NTZjM2ZkYzM5NGUxZDcwODlkLi5iMTc1ODM2MzhlYjFlN2RjNTkxNTcyNDY5ZDQ0MTg3NmVjNTdi
YzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaApAQCAtMzUsOCArMzUsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIERPTUNvcmVFeGNlcHRpb247CiAKLWVudW0gY2xhc3MgRm9u
dEZhY2VTZXRMb2FkU3RhdHVzIHsgTG9hZGluZywgTG9hZGVkIH07Ci0KIGNsYXNzIEZvbnRGYWNl
U2V0IGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8Rm9udEZhY2VTZXQ+LCBwcml2YXRlIENTU0Zv
bnRGYWNlU2V0Q2xpZW50LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHJpdmF0
ZSBBY3RpdmVET01PYmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8Rm9udEZhY2VTZXQ+
IGNyZWF0ZShEb2N1bWVudCYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Rm9udEZhY2U+PiYgaW5pdGlh
bEZhY2VzKTsKQEAgLTUyLDcgKzUwLDggQEAgcHVibGljOgogICAgIHZvaWQgbG9hZChKU0M6OkV4
ZWNTdGF0ZSYsIGNvbnN0IFN0cmluZyYgZm9udCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBEZWZlcnJl
ZFdyYXBwZXImJiBwcm9taXNlLCBFeGNlcHRpb25Db2RlJik7CiAgICAgYm9vbCBjaGVjayhjb25z
dCBTdHJpbmcmIGZvbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYpOwogCi0g
ICAgRm9udEZhY2VTZXRMb2FkU3RhdHVzIHN0YXR1cygpIGNvbnN0OworICAgIGVudW0gY2xhc3Mg
TG9hZFN0YXR1cyB7IExvYWRpbmcsIExvYWRlZCB9OworICAgIExvYWRTdGF0dXMgc3RhdHVzKCkg
Y29uc3Q7CiAKICAgICB0eXBlZGVmIERPTVByb21pc2U8Rm9udEZhY2VTZXQmLCBET01Db3JlRXhj
ZXB0aW9uJj4gUHJvbWlzZTsKICAgICBQcm9taXNlJiBwcm9taXNlKEpTQzo6RXhlY1N0YXRlJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAwNTQ1ZWZjMWQ5MDkzYzRhMWQ0YjYwYWY2YzQ2
MzY3NjA1ODc1NzU2Li5mYTdmNmQwMzJkY2ZiNmMyYzNiNmQxN2Y5OGIwNzJjMzQwMmE4NjQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTUyMSw3ICs1MjEsNyBAQCBEb2N1bWVudDo6RG9j
dW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCwgdW5zaWduZWQgZG9jdW1lbnRDbGFz
c2VzLCB1bnNpZwogI2VuZGlmCiAgICAgLCBtX2xvYWRFdmVudERlbGF5Q291bnQoMCkKICAgICAs
IG1fbG9hZEV2ZW50RGVsYXlUaW1lcigqdGhpcywgJkRvY3VtZW50Ojpsb2FkRXZlbnREZWxheVRp
bWVyRmlyZWQpCi0gICAgLCBtX3JlZmVycmVyUG9saWN5KFJlZmVycmVySGVhZGVyUG9saWN5OjpE
ZWZhdWx0KQorICAgICwgbV9yZWZlcnJlclBvbGljeShSZWZlcnJlclBvbGljeTo6RGVmYXVsdCkK
ICAgICAsIG1fd3JpdGVSZWN1cnNpb25Jc1Rvb0RlZXAoZmFsc2UpCiAgICAgLCBtX3dyaXRlUmVj
dXJzaW9uRGVwdGgoMCkKICAgICAsIG1fbGFzdEhhbmRsZWRVc2VyR2VzdHVyZVRpbWVzdGFtcCgw
KQpAQCAtMzM2MCwxNiArMzM2MCwxNiBAQCB2b2lkIERvY3VtZW50Ojpwcm9jZXNzUmVmZXJyZXJQ
b2xpY3koY29uc3QgU3RyaW5nJiBwb2xpY3kpCiAgICAgLy8gTm90ZSB0aGF0IHdlJ3JlIHN1cHBv
cnRpbmcgYm90aCB0aGUgc3RhbmRhcmQgYW5kIGxlZ2FjeSBrZXl3b3JkcyBmb3IgcmVmZXJyZXIK
ICAgICAvLyBwb2xpY2llcywgYXMgZGVmaW5lZCBieSBodHRwOi8vd3d3LnczLm9yZy9UUi9yZWZl
cnJlci1wb2xpY3kvI3JlZmVycmVyLXBvbGljeS1kZWxpdmVyeS1tZXRhCiAgICAgaWYgKGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHBvbGljeSwgIm5vLXJlZmVycmVyIikgfHwgZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocG9saWN5LCAibmV2ZXIiKSkKLSAgICAgICAgc2V0UmVm
ZXJyZXJQb2xpY3koUmVmZXJyZXJIZWFkZXJQb2xpY3k6Ok5ldmVyKTsKKyAgICAgICAgc2V0UmVm
ZXJyZXJQb2xpY3koUmVmZXJyZXJQb2xpY3k6Ok5ldmVyKTsKICAgICBlbHNlIGlmIChlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwb2xpY3ksICJ1bnNhZmUtdXJsIikgfHwgZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UocG9saWN5LCAiYWx3YXlzIikpCi0gICAgICAgIHNldFJlZmVy
cmVyUG9saWN5KFJlZmVycmVySGVhZGVyUG9saWN5OjpBbHdheXMpOworICAgICAgICBzZXRSZWZl
cnJlclBvbGljeShSZWZlcnJlclBvbGljeTo6QWx3YXlzKTsKICAgICBlbHNlIGlmIChlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShwb2xpY3ksICJvcmlnaW4iKSkKLSAgICAgICAgc2V0UmVm
ZXJyZXJQb2xpY3koUmVmZXJyZXJIZWFkZXJQb2xpY3k6Ok9yaWdpbik7CisgICAgICAgIHNldFJl
ZmVycmVyUG9saWN5KFJlZmVycmVyUG9saWN5OjpPcmlnaW4pOwogICAgIGVsc2UgaWYgKGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHBvbGljeSwgIm5vLXJlZmVycmVyLXdoZW4tZG93bmdy
YWRlIikgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UocG9saWN5LCAiZGVmYXVsdCIp
KQotICAgICAgICBzZXRSZWZlcnJlclBvbGljeShSZWZlcnJlckhlYWRlclBvbGljeTo6RGVmYXVs
dCk7CisgICAgICAgIHNldFJlZmVycmVyUG9saWN5KFJlZmVycmVyUG9saWN5OjpEZWZhdWx0KTsK
ICAgICBlbHNlIHsKICAgICAgICAgYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6UmVu
ZGVyaW5nLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiRmFpbGVkIHRvIHNldCByZWZlcnJlciBwb2xp
Y3k6IFRoZSB2YWx1ZSAnIiArIHBvbGljeSArICInIGlzIG5vdCBvbmUgb2YgJ25vLXJlZmVycmVy
JywgJ29yaWdpbicsICduby1yZWZlcnJlci13aGVuLWRvd25ncmFkZScsIG9yICd1bnNhZmUtdXJs
Jy4gRGVmYXVsdGluZyB0byAnbm8tcmVmZXJyZXInLiIpOwotICAgICAgICBzZXRSZWZlcnJlclBv
bGljeShSZWZlcnJlckhlYWRlclBvbGljeTo6TmV2ZXIpOworICAgICAgICBzZXRSZWZlcnJlclBv
bGljeShSZWZlcnJlclBvbGljeTo6TmV2ZXIpOwogICAgIH0KIH0KIApAQCAtNjkzNyw3ICs2OTM3
LDcgQEAgdm9pZCBEb2N1bWVudDo6YXBwbHlDb250ZW50RGlzcG9zaXRpb25BdHRhY2htZW50U2Fu
ZGJveCgpCiB7CiAgICAgQVNTRVJUKHNob3VsZEVuZm9yY2VDb250ZW50RGlzcG9zaXRpb25BdHRh
Y2htZW50U2FuZGJveCgpKTsKIAotICAgIHNldFJlZmVycmVyUG9saWN5KFJlZmVycmVySGVhZGVy
UG9saWN5OjpOZXZlcik7CisgICAgc2V0UmVmZXJyZXJQb2xpY3koUmVmZXJyZXJQb2xpY3k6Ok5l
dmVyKTsKICAgICBpZiAoIWlzTWVkaWFEb2N1bWVudCgpKQogICAgICAgICBlbmZvcmNlU2FuZGJv
eEZsYWdzKFNhbmRib3hBbGwpOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggMTY2
MjFlYmE3MTcwYjkxNmViYTg2NmUxMGE4OGVlY2E1ODQ5N2M3Mi4uMWJjYjQ4YmUyNWViYWJkOWFj
NjhlY2NkNTAxZTY2NTE5MTUxN2UzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTM2MSw4ICsz
NjEsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBkaWREaXNwYXRjaFZpZXdwb3J0UHJvcGVydGllc0No
YW5nZWQoKSBjb25zdCB7IHJldHVybiBtX2RpZERpc3BhdGNoVmlld3BvcnRQcm9wZXJ0aWVzQ2hh
bmdlZDsgfQogI2VuZGlmCiAKLSAgICB2b2lkIHNldFJlZmVycmVyUG9saWN5KFJlZmVycmVySGVh
ZGVyUG9saWN5IHJlZmVycmVyUG9saWN5KSB7IG1fcmVmZXJyZXJQb2xpY3kgPSByZWZlcnJlclBv
bGljeTsgfQotICAgIFJlZmVycmVySGVhZGVyUG9saWN5IHJlZmVycmVyUG9saWN5KCkgY29uc3Qg
eyByZXR1cm4gbV9yZWZlcnJlclBvbGljeTsgfQorICAgIHZvaWQgc2V0UmVmZXJyZXJQb2xpY3ko
UmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3kpIHsgbV9yZWZlcnJlclBvbGljeSA9IHJlZmVy
cmVyUG9saWN5OyB9CisgICAgUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3koKSBjb25zdCB7
IHJldHVybiBtX3JlZmVycmVyUG9saWN5OyB9CiAKICAgICBEb2N1bWVudFR5cGUqIGRvY3R5cGUo
KSBjb25zdDsKIApAQCAtMTY0MCw3ICsxNjQwLDcgQEAgcHJpdmF0ZToKIAogICAgIFZpZXdwb3J0
QXJndW1lbnRzIG1fdmlld3BvcnRBcmd1bWVudHM7CiAKLSAgICBSZWZlcnJlckhlYWRlclBvbGlj
eSBtX3JlZmVycmVyUG9saWN5OworICAgIFJlZmVycmVyUG9saWN5IG1fcmVmZXJyZXJQb2xpY3k7
CiAKICNpZiBFTkFCTEUoV0VCX1RJTUlORykKICAgICBEb2N1bWVudFRpbWluZyBtX2RvY3VtZW50
VGltaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggYTgz
ZWJiNzg2YjJkNTQwZTY4MGRlYWZhNTYyYmM1MTFmZjYzYzFiMS4uYjE4ZTI5NzEzYmEyZDZlYmMx
YzgyYmVmNzEyMjZkYjU1ZGM2OWMyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCkBAIC0xMTc0LDcgKzExNzQsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Omxv
YWRJbnRlcm5hbCgpCiAgICAgICAgIGlmIChtX3RleHRUcmFja3MpIHsKICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3RleHRUcmFja3MtPmxlbmd0aCgpOyArK2kpIHsKICAg
ICAgICAgICAgICAgICBUZXh0VHJhY2sqIHRyYWNrID0gbV90ZXh0VHJhY2tzLT5pdGVtKGkpOwot
ICAgICAgICAgICAgICAgIGlmICh0cmFjay0+bW9kZSgpICE9IFRleHRUcmFja01vZGU6OkRpc2Fi
bGVkKQorICAgICAgICAgICAgICAgIGlmICh0cmFjay0+bW9kZSgpICE9IFRleHRUcmFjazo6TW9k
ZTo6RGlzYWJsZWQpCiAgICAgICAgICAgICAgICAgICAgIG1fdGV4dFRyYWNrc1doZW5SZXNvdXJj
ZVNlbGVjdGlvbkJlZ2FuLmFwcGVuZCh0cmFjayk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
QEAgLTE3MzEsNyArMTczMSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrTW9k
ZUNoYW5nZWQoVGV4dFRyYWNrKiB0cmFjaykKICAgICAvLyBNYXJrIHRoaXMgdHJhY2sgYXMgImNv
bmZpZ3VyZWQiIHNvIGNvbmZpZ3VyZVRleHRUcmFja3Mgd29uJ3QgY2hhbmdlIHRoZSBtb2RlIGFn
YWluLgogICAgIHRyYWNrLT5zZXRIYXNCZWVuQ29uZmlndXJlZCh0cnVlKTsKICAgICAKLSAgICBp
ZiAodHJhY2stPm1vZGUoKSAhPSBUZXh0VHJhY2tNb2RlOjpEaXNhYmxlZCAmJiB0cmFja0lzTG9h
ZGVkKQorICAgIGlmICh0cmFjay0+bW9kZSgpICE9IFRleHRUcmFjazo6TW9kZTo6RGlzYWJsZWQg
JiYgdHJhY2tJc0xvYWRlZCkKICAgICAgICAgdGV4dFRyYWNrQWRkQ3Vlcyh0cmFjaywgdHJhY2st
PmN1ZXMoKSk7CiAKICAgICBjb25maWd1cmVUZXh0VHJhY2tEaXNwbGF5KEFzc3VtZVRleHRUcmFj
a1Zpc2liaWxpdHlDaGFuZ2VkKTsKQEAgLTE3NTUsOCArMTc1NSw4IEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6dmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZChWaWRlb1RyYWNrKiB0cmFjaykKIAog
dm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tLaW5kQ2hhbmdlZChUZXh0VHJhY2sqIHRy
YWNrKQogewotICAgIGlmICh0cmFjay0+a2luZCgpICE9IFRleHRUcmFja0tpbmQ6OkNhcHRpb25z
ICYmIHRyYWNrLT5raW5kKCkgIT0gVGV4dFRyYWNrS2luZDo6U3VidGl0bGVzICYmIHRyYWNrLT5t
b2RlKCkgPT0gVGV4dFRyYWNrTW9kZTo6U2hvd2luZykKLSAgICAgICAgdHJhY2stPnNldE1vZGUo
VGV4dFRyYWNrTW9kZTo6SGlkZGVuKTsKKyAgICBpZiAodHJhY2stPmtpbmQoKSAhPSBUZXh0VHJh
Y2s6OktpbmQ6OkNhcHRpb25zICYmIHRyYWNrLT5raW5kKCkgIT0gVGV4dFRyYWNrOjpLaW5kOjpT
dWJ0aXRsZXMgJiYgdHJhY2stPm1vZGUoKSA9PSBUZXh0VHJhY2s6Ok1vZGU6OlNob3dpbmcpCisg
ICAgICAgIHRyYWNrLT5zZXRNb2RlKFRleHRUcmFjazo6TW9kZTo6SGlkZGVuKTsKIH0KIAogdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpiZWdpbklnbm9yaW5nVHJhY2tEaXNwbGF5VXBkYXRlUmVxdWVz
dHMoKQpAQCAtMTc3NCw3ICsxNzc0LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjplbmRJZ25v
cmluZ1RyYWNrRGlzcGxheVVwZGF0ZVJlcXVlc3RzKCkKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50
Ojp0ZXh0VHJhY2tBZGRDdWVzKFRleHRUcmFjayogdHJhY2ssIGNvbnN0IFRleHRUcmFja0N1ZUxp
c3QqIGN1ZXMpIAogewotICAgIGlmICh0cmFjay0+bW9kZSgpID09IFRleHRUcmFja01vZGU6OkRp
c2FibGVkKQorICAgIGlmICh0cmFjay0+bW9kZSgpID09IFRleHRUcmFjazo6TW9kZTo6RGlzYWJs
ZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIFRyYWNrRGlzcGxheVVwZGF0ZVNjb3BlIHNjb3Bl
KHRoaXMpOwpAQCAtMTc5MSw3ICsxNzkxLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0
VHJhY2tSZW1vdmVDdWVzKFRleHRUcmFjayosIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QqIGMKIAog
dm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tBZGRDdWUoVGV4dFRyYWNrKiB0cmFjaywg
UGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+IHBycEN1ZSkKIHsKLSAgICBpZiAodHJhY2stPm1vZGUo
KSA9PSBUZXh0VHJhY2tNb2RlOjpEaXNhYmxlZCkKKyAgICBpZiAodHJhY2stPm1vZGUoKSA9PSBU
ZXh0VHJhY2s6Ok1vZGU6OkRpc2FibGVkKQogICAgICAgICByZXR1cm47CiAKICAgICBSZWZQdHI8
VGV4dFRyYWNrQ3VlPiBjdWUgPSBwcnBDdWU7CkBAIC0zNjY0LDcgKzM2NjQsNyBAQCBQYXNzUmVm
UHRyPFRleHRUcmFjaz4gSFRNTE1lZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKGNvbnN0IFN0cmlu
ZyYga2luZCwgY29uc3QgUwogICAgIHRleHRUcmFjay0+c2V0UmVhZGluZXNzU3RhdGUoVGV4dFRy
YWNrOjpMb2FkZWQpOwogCiAgICAgLy8gLi4uIGl0cyB0ZXh0IHRyYWNrIG1vZGUgdG8gdGhlIHRl
eHQgdHJhY2sgaGlkZGVuIG1vZGUsIGFuZCBpdHMgdGV4dCB0cmFjayBsaXN0IG9mIGN1ZXMgdG8g
YW4gZW1wdHkgbGlzdCAuLi4KLSAgICB0ZXh0VHJhY2stPnNldE1vZGUoVGV4dFRyYWNrTW9kZTo6
SGlkZGVuKTsKKyAgICB0ZXh0VHJhY2stPnNldE1vZGUoVGV4dFRyYWNrOjpNb2RlOjpIaWRkZW4p
OwogCiAgICAgcmV0dXJuIHRleHRUcmFjay5yZWxlYXNlKCk7CiB9CkBAIC0zNzkyLDcgKzM3OTIs
NyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNvbmZpZ3VyZVRleHRUcmFja0dyb3VwKGNvbnN0
IFRyYWNrR3JvdXAmIGdyb3VwKQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZ3JvdXAudHJh
Y2tzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFJlZlB0cjxUZXh0VHJhY2s+IHRleHRUcmFjayA9
IGdyb3VwLnRyYWNrc1tpXTsKIAotICAgICAgICBpZiAobV9wcm9jZXNzaW5nUHJlZmVyZW5jZUNo
YW5nZSAmJiB0ZXh0VHJhY2stPm1vZGUoKSA9PSBUZXh0VHJhY2tNb2RlOjpTaG93aW5nKQorICAg
ICAgICBpZiAobV9wcm9jZXNzaW5nUHJlZmVyZW5jZUNoYW5nZSAmJiB0ZXh0VHJhY2stPm1vZGUo
KSA9PSBUZXh0VHJhY2s6Ok1vZGU6OlNob3dpbmcpCiAgICAgICAgICAgICBjdXJyZW50bHlFbmFi
bGVkVHJhY2tzLmFwcGVuZCh0ZXh0VHJhY2spOwogCiAgICAgICAgIGludCB0cmFja1Njb3JlID0g
Y2FwdGlvblByZWZlcmVuY2VzID8gY2FwdGlvblByZWZlcmVuY2VzLT50ZXh0VHJhY2tTZWxlY3Rp
b25TY29yZSh0ZXh0VHJhY2suZ2V0KCksIHRoaXMpIDogMDsKQEAgLTM4NjEsMTIgKzM4NjEsMTIg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpjb25maWd1cmVUZXh0VHJhY2tHcm91cChjb25zdCBU
cmFja0dyb3VwJiBncm91cCkKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjdXJyZW50
bHlFbmFibGVkVHJhY2tzLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBSZWZQdHI8VGV4dFRy
YWNrPiB0ZXh0VHJhY2sgPSBjdXJyZW50bHlFbmFibGVkVHJhY2tzW2ldOwogICAgICAgICAgICAg
aWYgKHRleHRUcmFjayAhPSB0cmFja1RvRW5hYmxlKQotICAgICAgICAgICAgICAgIHRleHRUcmFj
ay0+c2V0TW9kZShUZXh0VHJhY2tNb2RlOjpEaXNhYmxlZCk7CisgICAgICAgICAgICAgICAgdGV4
dFRyYWNrLT5zZXRNb2RlKFRleHRUcmFjazo6TW9kZTo6RGlzYWJsZWQpOwogICAgICAgICB9CiAg
ICAgfQogCiAgICAgaWYgKHRyYWNrVG9FbmFibGUpIHsKLSAgICAgICAgdHJhY2tUb0VuYWJsZS0+
c2V0TW9kZShUZXh0VHJhY2tNb2RlOjpTaG93aW5nKTsKKyAgICAgICAgdHJhY2tUb0VuYWJsZS0+
c2V0TW9kZShUZXh0VHJhY2s6Ok1vZGU6OlNob3dpbmcpOwogCiAgICAgICAgIC8vIElmIHVzZXIg
cHJlZmVyZW5jZXMgaW5kaWNhdGUgd2Ugc2hvdWxkIGFsd2F5cyBkaXNwbGF5IGNhcHRpb25zLCBt
YWtlIHN1cmUgd2UgcmVmbGVjdCB0aGUKICAgICAgICAgLy8gcHJvcGVyIHN0YXR1cyB2aWEgdGhl
IHdlYmtpdENsb3NlZENhcHRpb25zVmlzaWJsZSBBUEkgY2FsbDoKQEAgLTM5OTYsMTMgKzM5OTYs
MTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRTZWxlY3RlZFRleHRUcmFjayhUZXh0VHJh
Y2sqIHRyYWNrVG9TZWxlY3QpCiAgICAgICAgIGZvciAoaW50IGkgPSAwLCBsZW5ndGggPSB0cmFj
a0xpc3QtPmxlbmd0aCgpOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIFRleHRUcmFj
ayogdHJhY2sgPSB0cmFja0xpc3QtPml0ZW0oaSk7CiAgICAgICAgICAgICBpZiAoIXRyYWNrVG9T
ZWxlY3QgfHwgdHJhY2sgIT0gdHJhY2tUb1NlbGVjdCkKLSAgICAgICAgICAgICAgICB0cmFjay0+
c2V0TW9kZShUZXh0VHJhY2tNb2RlOjpEaXNhYmxlZCk7CisgICAgICAgICAgICAgICAgdHJhY2st
PnNldE1vZGUoVGV4dFRyYWNrOjpNb2RlOjpEaXNhYmxlZCk7CiAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgdHJhY2stPnNldE1vZGUoVGV4dFRyYWNrTW9kZTo6U2hvd2luZyk7Cisg
ICAgICAgICAgICAgICAgdHJhY2stPnNldE1vZGUoVGV4dFRyYWNrOjpNb2RlOjpTaG93aW5nKTsK
ICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAodHJhY2tUb1NlbGVjdCA9PSBUZXh0VHJhY2s6OmNh
cHRpb25NZW51T2ZmSXRlbSgpKSB7CiAgICAgICAgIGZvciAoaW50IGkgPSAwLCBsZW5ndGggPSB0
cmFja0xpc3QtPmxlbmd0aCgpOyBpIDwgbGVuZ3RoOyArK2kpCi0gICAgICAgICAgICB0cmFja0xp
c3QtPml0ZW0oaSktPnNldE1vZGUoVGV4dFRyYWNrTW9kZTo6RGlzYWJsZWQpOworICAgICAgICAg
ICAgdHJhY2tMaXN0LT5pdGVtKGkpLT5zZXRNb2RlKFRleHRUcmFjazo6TW9kZTo6RGlzYWJsZWQp
OwogICAgIH0KIAogICAgIGlmICghZG9jdW1lbnQoKS5wYWdlKCkpCkBAIC00MDQxLDE4ICs0MDQx
LDE4IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y29uZmlndXJlVGV4dFRyYWNrcygpCiAKICAg
ICAgICAgYXV0byBraW5kID0gdGV4dFRyYWNrLT5raW5kKCk7CiAgICAgICAgIFRyYWNrR3JvdXAq
IGN1cnJlbnRHcm91cDsKLSAgICAgICAgaWYgKGtpbmQgPT0gVGV4dFRyYWNrS2luZDo6U3VidGl0
bGVzIHx8IGtpbmQgPT0gVGV4dFRyYWNrS2luZDo6Q2FwdGlvbnMgfHwga2luZCA9PSBUZXh0VHJh
Y2tLaW5kOjpGb3JjZWQpCisgICAgICAgIGlmIChraW5kID09IFRleHRUcmFjazo6S2luZDo6U3Vi
dGl0bGVzIHx8IGtpbmQgPT0gVGV4dFRyYWNrOjpLaW5kOjpDYXB0aW9ucyB8fCBraW5kID09IFRl
eHRUcmFjazo6S2luZDo6Rm9yY2VkKQogICAgICAgICAgICAgY3VycmVudEdyb3VwID0gJmNhcHRp
b25BbmRTdWJ0aXRsZVRyYWNrczsKLSAgICAgICAgZWxzZSBpZiAoa2luZCA9PSBUZXh0VHJhY2tL
aW5kOjpEZXNjcmlwdGlvbnMpCisgICAgICAgIGVsc2UgaWYgKGtpbmQgPT0gVGV4dFRyYWNrOjpL
aW5kOjpEZXNjcmlwdGlvbnMpCiAgICAgICAgICAgICBjdXJyZW50R3JvdXAgPSAmZGVzY3JpcHRp
b25UcmFja3M7Ci0gICAgICAgIGVsc2UgaWYgKGtpbmQgPT0gVGV4dFRyYWNrS2luZDo6Q2hhcHRl
cnMpCisgICAgICAgIGVsc2UgaWYgKGtpbmQgPT0gVGV4dFRyYWNrOjpLaW5kOjpDaGFwdGVycykK
ICAgICAgICAgICAgIGN1cnJlbnRHcm91cCA9ICZjaGFwdGVyVHJhY2tzOwotICAgICAgICBlbHNl
IGlmIChraW5kID09IFRleHRUcmFja0tpbmQ6Ok1ldGFkYXRhKQorICAgICAgICBlbHNlIGlmIChr
aW5kID09IFRleHRUcmFjazo6S2luZDo6TWV0YWRhdGEpCiAgICAgICAgICAgICBjdXJyZW50R3Jv
dXAgPSAmbWV0YWRhdGFUcmFja3M7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGN1cnJlbnRH
cm91cCA9ICZvdGhlclRyYWNrczsKIAotICAgICAgICBpZiAoIWN1cnJlbnRHcm91cC0+dmlzaWJs
ZVRyYWNrICYmIHRleHRUcmFjay0+bW9kZSgpID09IFRleHRUcmFja01vZGU6OlNob3dpbmcpCisg
ICAgICAgIGlmICghY3VycmVudEdyb3VwLT52aXNpYmxlVHJhY2sgJiYgdGV4dFRyYWNrLT5tb2Rl
KCkgPT0gVGV4dFRyYWNrOjpNb2RlOjpTaG93aW5nKQogICAgICAgICAgICAgY3VycmVudEdyb3Vw
LT52aXNpYmxlVHJhY2sgPSB0ZXh0VHJhY2s7CiAgICAgICAgIGlmICghY3VycmVudEdyb3VwLT5k
ZWZhdWx0VHJhY2sgJiYgdGV4dFRyYWNrLT5pc0RlZmF1bHQoKSkKICAgICAgICAgICAgIGN1cnJl
bnRHcm91cC0+ZGVmYXVsdFRyYWNrID0gdGV4dFRyYWNrOwpAQCAtNTQ5MSw3ICs1NDkxLDcgQEAg
Ym9vbCBIVE1MTWVkaWFFbGVtZW50OjpoYXNDbG9zZWRDYXB0aW9ucygpIGNvbnN0CiAgICAgICAg
IGF1dG8mIHRyYWNrID0gKm1fdGV4dFRyYWNrcy0+aXRlbShpKTsKICAgICAgICAgaWYgKHRyYWNr
LnJlYWRpbmVzc1N0YXRlKCkgPT0gVGV4dFRyYWNrOjpGYWlsZWRUb0xvYWQpCiAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgaWYgKHRyYWNrLmtpbmQoKSA9PSBUZXh0VHJhY2tLaW5kOjpD
YXB0aW9ucyB8fCB0cmFjay5raW5kKCkgPT0gVGV4dFRyYWNrS2luZDo6U3VidGl0bGVzKQorICAg
ICAgICBpZiAodHJhY2sua2luZCgpID09IFRleHRUcmFjazo6S2luZDo6Q2FwdGlvbnMgfHwgdHJh
Y2sua2luZCgpID09IFRleHRUcmFjazo6S2luZDo6U3VidGl0bGVzKQogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQogI2VuZGlmCkBAIC01NzU4LDcgKzU3NTgsNyBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OmNvbmZpZ3VyZVRleHRUcmFja0Rpc3BsYXkoVGV4dFRyYWNrVmlzaWJpbGl0
eUNoZWNrVHlwZSBjaAogCiAgICAgYm9vbCBoYXZlVmlzaWJsZVRleHRUcmFjayA9IGZhbHNlOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3RleHRUcmFja3MtPmxlbmd0aCgpOyArK2kp
IHsKLSAgICAgICAgaWYgKG1fdGV4dFRyYWNrcy0+aXRlbShpKS0+bW9kZSgpID09IFRleHRUcmFj
a01vZGU6OlNob3dpbmcpIHsKKyAgICAgICAgaWYgKG1fdGV4dFRyYWNrcy0+aXRlbShpKS0+bW9k
ZSgpID09IFRleHRUcmFjazo6TW9kZTo6U2hvd2luZykgewogICAgICAgICAgICAgaGF2ZVZpc2li
bGVUZXh0VHJhY2sgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTU4
MzQsNyArNTgzNCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWFya0NhcHRpb25BbmRTdWJ0
aXRsZVRyYWNrc0FzVW5jb25maWd1cmVkKFJlY29uZmlndXJlTW9kCiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fdGV4dFRyYWNrcy0+bGVuZ3RoKCk7ICsraSkgewogICAgICAgICBhdXRv
JiB0cmFjayA9ICptX3RleHRUcmFja3MtPml0ZW0oaSk7CiAgICAgICAgIGF1dG8ga2luZCA9IHRy
YWNrLmtpbmQoKTsKLSAgICAgICAgaWYgKGtpbmQgPT0gVGV4dFRyYWNrS2luZDo6U3VidGl0bGVz
IHx8IGtpbmQgPT0gVGV4dFRyYWNrS2luZDo6Q2FwdGlvbnMpCisgICAgICAgIGlmIChraW5kID09
IFRleHRUcmFjazo6S2luZDo6U3VidGl0bGVzIHx8IGtpbmQgPT0gVGV4dFRyYWNrOjpLaW5kOjpD
YXB0aW9ucykKICAgICAgICAgICAgIHRyYWNrLnNldEhhc0JlZW5Db25maWd1cmVkKGZhbHNlKTsK
ICAgICB9CiAKQEAgLTYwODAsMzQgKzYwODAsMzQgQEAgU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6
Om1lZGlhUGxheWVyVXNlckFnZW50KCkgY29uc3QKIAogI2lmIEVOQUJMRShBVkZfQ0FQVElPTlMp
CiAKLXN0YXRpYyBpbmxpbmUgUGxhdGZvcm1UZXh0VHJhY2s6OlRyYWNrS2luZCB0b1BsYXRmb3Jt
KFRleHRUcmFja0tpbmQga2luZCkKK3N0YXRpYyBpbmxpbmUgUGxhdGZvcm1UZXh0VHJhY2s6OlRy
YWNrS2luZCB0b1BsYXRmb3JtKFRleHRUcmFjazo6S2luZCBraW5kKQogewogICAgIHN3aXRjaCAo
a2luZCkgewotICAgIGNhc2UgVGV4dFRyYWNrS2luZDo6Q2FwdGlvbnM6CisgICAgY2FzZSBUZXh0
VHJhY2s6OktpbmQ6OkNhcHRpb25zOgogICAgICAgICByZXR1cm4gUGxhdGZvcm1UZXh0VHJhY2s6
OkNhcHRpb247Ci0gICAgY2FzZSBUZXh0VHJhY2tLaW5kOjpDaGFwdGVyczoKKyAgICBjYXNlIFRl
eHRUcmFjazo6S2luZDo6Q2hhcHRlcnM6CiAgICAgICAgIHJldHVybiBQbGF0Zm9ybVRleHRUcmFj
azo6Q2hhcHRlcjsKLSAgICBjYXNlIFRleHRUcmFja0tpbmQ6OkRlc2NyaXB0aW9uczoKKyAgICBj
YXNlIFRleHRUcmFjazo6S2luZDo6RGVzY3JpcHRpb25zOgogICAgICAgICByZXR1cm4gUGxhdGZv
cm1UZXh0VHJhY2s6OkRlc2NyaXB0aW9uOwotICAgIGNhc2UgVGV4dFRyYWNrS2luZDo6Rm9yY2Vk
OgorICAgIGNhc2UgVGV4dFRyYWNrOjpLaW5kOjpGb3JjZWQ6CiAgICAgICAgIHJldHVybiBQbGF0
Zm9ybVRleHRUcmFjazo6Rm9yY2VkOwotICAgIGNhc2UgVGV4dFRyYWNrS2luZDo6TWV0YWRhdGE6
CisgICAgY2FzZSBUZXh0VHJhY2s6OktpbmQ6Ok1ldGFkYXRhOgogICAgICAgICByZXR1cm4gUGxh
dGZvcm1UZXh0VHJhY2s6Ok1ldGFEYXRhOwotICAgIGNhc2UgVGV4dFRyYWNrS2luZDo6U3VidGl0
bGVzOgorICAgIGNhc2UgVGV4dFRyYWNrOjpLaW5kOjpTdWJ0aXRsZXM6CiAgICAgICAgIHJldHVy
biBQbGF0Zm9ybVRleHRUcmFjazo6U3VidGl0bGU7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIHJldHVybiBQbGF0Zm9ybVRleHRUcmFjazo6Q2FwdGlvbjsKIH0KIAotc3Rh
dGljIGlubGluZSBQbGF0Zm9ybVRleHRUcmFjazo6VHJhY2tNb2RlIHRvUGxhdGZvcm0oVGV4dFRy
YWNrTW9kZSBtb2RlKQorc3RhdGljIGlubGluZSBQbGF0Zm9ybVRleHRUcmFjazo6VHJhY2tNb2Rl
IHRvUGxhdGZvcm0oVGV4dFRyYWNrOjpNb2RlIG1vZGUpCiB7CiAgICAgc3dpdGNoIChtb2RlKSB7
Ci0gICAgY2FzZSBUZXh0VHJhY2tNb2RlOjpEaXNhYmxlZDoKKyAgICBjYXNlIFRleHRUcmFjazo6
TW9kZTo6RGlzYWJsZWQ6CiAgICAgICAgIHJldHVybiBQbGF0Zm9ybVRleHRUcmFjazo6RGlzYWJs
ZWQ7Ci0gICAgY2FzZSBUZXh0VHJhY2tNb2RlOjpIaWRkZW46CisgICAgY2FzZSBUZXh0VHJhY2s6
Ok1vZGU6OkhpZGRlbjoKICAgICAgICAgcmV0dXJuIFBsYXRmb3JtVGV4dFRyYWNrOjpIaWRkZW47
Ci0gICAgY2FzZSBUZXh0VHJhY2tNb2RlOjpTaG93aW5nOgorICAgIGNhc2UgVGV4dFRyYWNrOjpN
b2RlOjpTaG93aW5nOgogICAgICAgICByZXR1cm4gUGxhdGZvcm1UZXh0VHJhY2s6OlNob3dpbmc7
CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNjEzMSwxMyArNjEzMSwxMyBA
QCBWZWN0b3I8UmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrPj4gSFRNTE1lZGlhRWxlbWVudDo6b3V0
T2ZCYW5kVHJhY2tTb3VyY2VzKCkKICAgICAgICAgLy8gRklYTUU6IFRoZSBzd2l0Y2ggc3RhdGVt
ZW50IGJlbG93IHByZXNlcnZlcyBleGlzdGluZyBiZWhhdmlvciB3aGVyZSB3ZSBpZ25vcmUgY2hh
cHRlcnMgYW5kIG1ldGFkYXRhIHRyYWNrcy4KICAgICAgICAgLy8gSWYgd2UgY29uZmlybSB0aGlz
IGJlaGF2aW9yIGlzIHZhbHVhYmxlLCB3ZSBzaG91bGQgcmVtb3ZlIHRoaXMgY29tbWVudC4gT3Ro
ZXJ3aXNlLCByZW1vdmUgYm90aCBjb21tZW50IGFuZCBzd2l0Y2guCiAgICAgICAgIHN3aXRjaCAo
a2luZCkgewotICAgICAgICBjYXNlIFRleHRUcmFja0tpbmQ6OkNhcHRpb25zOgotICAgICAgICBj
YXNlIFRleHRUcmFja0tpbmQ6OkRlc2NyaXB0aW9uczoKLSAgICAgICAgY2FzZSBUZXh0VHJhY2tL
aW5kOjpGb3JjZWQ6Ci0gICAgICAgIGNhc2UgVGV4dFRyYWNrS2luZDo6U3VidGl0bGVzOgorICAg
ICAgICBjYXNlIFRleHRUcmFjazo6S2luZDo6Q2FwdGlvbnM6CisgICAgICAgIGNhc2UgVGV4dFRy
YWNrOjpLaW5kOjpEZXNjcmlwdGlvbnM6CisgICAgICAgIGNhc2UgVGV4dFRyYWNrOjpLaW5kOjpG
b3JjZWQ6CisgICAgICAgIGNhc2UgVGV4dFRyYWNrOjpLaW5kOjpTdWJ0aXRsZXM6CiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBUZXh0VHJhY2tLaW5kOjpDaGFwdGVyczoKLSAgICAg
ICAgY2FzZSBUZXh0VHJhY2tLaW5kOjpNZXRhZGF0YToKKyAgICAgICAgY2FzZSBUZXh0VHJhY2s6
OktpbmQ6OkNoYXB0ZXJzOgorICAgICAgICBjYXNlIFRleHRUcmFjazo6S2luZDo6TWV0YWRhdGE6
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVHJhY2tFbGVtZW50LmNwcAppbmRleCA0NTRiYzI2NGQ5MzhlMDUxNjliODQ0ZTIwNGVhZTU2
YTAzMTQ1ZTMwLi5jMjAxYWJlM2JjODQ3MjYzMDQ3YWIyYzVjZTZjOWI2ZDFhMGI5ZDY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKQEAgLTE3NCw3ICsxNzQsNyBA
QCB2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnNjaGVkdWxlTG9hZCgpCiAgICAgICAgIHJldHVybjsK
IAogICAgIC8vIDIuIElmIHRoZSB0ZXh0IHRyYWNrJ3MgdGV4dCB0cmFjayBtb2RlIGlzIG5vdCBz
ZXQgdG8gb25lIG9mIGhpZGRlbiBvciBzaG93aW5nLCBhYm9ydCB0aGVzZSBzdGVwcy4KLSAgICBp
ZiAoZW5zdXJlVHJhY2soKS5tb2RlKCkgIT0gVGV4dFRyYWNrTW9kZTo6SGlkZGVuICYmIGVuc3Vy
ZVRyYWNrKCkubW9kZSgpICE9IFRleHRUcmFja01vZGU6OlNob3dpbmcpCisgICAgaWYgKGVuc3Vy
ZVRyYWNrKCkubW9kZSgpICE9IFRleHRUcmFjazo6TW9kZTo6SGlkZGVuICYmIGVuc3VyZVRyYWNr
KCkubW9kZSgpICE9IFRleHRUcmFjazo6TW9kZTo6U2hvd2luZykKICAgICAgICAgcmV0dXJuOwog
CiAgICAgLy8gMy4gSWYgdGhlIHRleHQgdHJhY2sncyB0cmFjayBlbGVtZW50IGRvZXMgbm90IGhh
dmUgYSBtZWRpYSBlbGVtZW50IGFzIGEgcGFyZW50LCBhYm9ydCB0aGVzZSBzdGVwcy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4IDE4ZTBiNmQ3MzQ1YjZkOTJm
ZjE1Mzg1NjIzMzNiNWYyNDM5YzU5ODIuLjEwMjU3MzYwY2ZmZjMzNDk2ZTI1NWUzMmJlYjgyOWRl
MGUxZDJkNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcApAQCAt
NDAxLDE0ICs0MDEsMTQgQEAgYm9vbCBIVE1MVmlkZW9FbGVtZW50Ojp3ZWJraXRTdXBwb3J0c1By
ZXNlbnRhdGlvbk1vZGUoVmlkZW9QcmVzZW50YXRpb25Nb2RlIG1vZGUKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlIHRvRnVsbHNjcmVlbk1vZGUoVmlkZW9QcmVzZW50YXRpb25Nb2RlIG1vZGUpCitz
dGF0aWMgaW5saW5lIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSB0
b0Z1bGxzY3JlZW5Nb2RlKEhUTUxWaWRlb0VsZW1lbnQ6OlZpZGVvUHJlc2VudGF0aW9uTW9kZSBt
b2RlKQogewogICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNhc2UgVmlkZW9QcmVzZW50YXRpb25N
b2RlOjpGdWxsc2NyZWVuOgorICAgIGNhc2UgSFRNTFZpZGVvRWxlbWVudDo6VmlkZW9QcmVzZW50
YXRpb25Nb2RlOjpGdWxsc2NyZWVuOgogICAgICAgICByZXR1cm4gSFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQ7Ci0gICAgY2FzZSBWaWRlb1ByZXNlbnRh
dGlvbk1vZGU6OlBpY3R1cmVJblBpY3R1cmU6CisgICAgY2FzZSBIVE1MVmlkZW9FbGVtZW50OjpW
aWRlb1ByZXNlbnRhdGlvbk1vZGU6OlBpY3R1cmVJblBpY3R1cmU6CiAgICAgICAgIHJldHVybiBI
VE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJl
OwotICAgIGNhc2UgVmlkZW9QcmVzZW50YXRpb25Nb2RlOjpJbmxpbmU6CisgICAgY2FzZSBIVE1M
VmlkZW9FbGVtZW50OjpWaWRlb1ByZXNlbnRhdGlvbk1vZGU6OklubGluZToKICAgICAgICAgcmV0
dXJuIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmU7CiAgICAg
fQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNDMzLDIyICs0MzMsMjIgQEAgdm9pZCBI
VE1MVmlkZW9FbGVtZW50OjpzZXRGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6
OlZpZGVvRnVsbHNjcmVlbk0KICAgICBlbnRlckZ1bGxzY3JlZW4obW9kZSk7CiB9CiAKLXN0YXRp
YyBWaWRlb1ByZXNlbnRhdGlvbk1vZGUgdG9QcmVzZW50YXRpb25Nb2RlKEhUTUxNZWRpYUVsZW1l
bnQ6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKK3N0YXRpYyBIVE1MVmlkZW9FbGVtZW50OjpW
aWRlb1ByZXNlbnRhdGlvbk1vZGUgdG9QcmVzZW50YXRpb25Nb2RlKEhUTUxNZWRpYUVsZW1lbnRF
bnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQogewogICAgIGlmIChtb2RlID09IEhUTUxN
ZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKQotICAgICAgICBy
ZXR1cm4gVmlkZW9QcmVzZW50YXRpb25Nb2RlOjpGdWxsc2NyZWVuOworICAgICAgICByZXR1cm4g
SFRNTFZpZGVvRWxlbWVudDo6VmlkZW9QcmVzZW50YXRpb25Nb2RlOjpGdWxsc2NyZWVuOwogCiAg
ICAgaWYgKG1vZGUgJiBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQ
aWN0dXJlSW5QaWN0dXJlKQotICAgICAgICByZXR1cm4gVmlkZW9QcmVzZW50YXRpb25Nb2RlOjpQ
aWN0dXJlSW5QaWN0dXJlOworICAgICAgICByZXR1cm4gSFRNTFZpZGVvRWxlbWVudDo6VmlkZW9Q
cmVzZW50YXRpb25Nb2RlOjpQaWN0dXJlSW5QaWN0dXJlOwogCiAgICAgaWYgKG1vZGUgPT0gSFRN
TE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSkKLSAgICAgICAgcmV0
dXJuIFZpZGVvUHJlc2VudGF0aW9uTW9kZTo6SW5saW5lOworICAgICAgICByZXR1cm4gSFRNTFZp
ZGVvRWxlbWVudDo6VmlkZW9QcmVzZW50YXRpb25Nb2RlOjpJbmxpbmU7CiAKICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gVmlkZW9QcmVzZW50YXRpb25Nb2RlOjpJbmxpbmU7
CisgICAgcmV0dXJuIEhUTUxWaWRlb0VsZW1lbnQ6OlZpZGVvUHJlc2VudGF0aW9uTW9kZTo6SW5s
aW5lOwogfQogCi1WaWRlb1ByZXNlbnRhdGlvbk1vZGUgSFRNTFZpZGVvRWxlbWVudDo6d2Via2l0
UHJlc2VudGF0aW9uTW9kZSgpIGNvbnN0CithdXRvIEhUTUxWaWRlb0VsZW1lbnQ6OndlYmtpdFBy
ZXNlbnRhdGlvbk1vZGUoKSBjb25zdCAtPiBWaWRlb1ByZXNlbnRhdGlvbk1vZGUKIHsKICAgICBy
ZXR1cm4gdG9QcmVzZW50YXRpb25Nb2RlKGZ1bGxzY3JlZW5Nb2RlKCkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAppbmRleCBmNDkzMTM3ZWE3MzFjMjdjNTAxYWZiYzdk
MmQ3OTc1YTQwYjY1OThhLi45YTFkZjdiYWJhNDUyNDZkMmM4ZjA3ZWY4NTU2N2FlNWNmZWRlNWRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtMzQsOCArMzQsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxJbWFnZUxvYWRlcjsKIAotZW51bSBj
bGFzcyBWaWRlb1ByZXNlbnRhdGlvbk1vZGUgeyBGdWxsc2NyZWVuLCBQaWN0dXJlSW5QaWN0dXJl
LCBJbmxpbmUgfTsKLQogY2xhc3MgSFRNTFZpZGVvRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1M
TWVkaWFFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEhUTUxWaWRlb0VsZW1lbnQ+
IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBib29sKTsKQEAgLTQzLDcg
KzQxLDYgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIHZpZGVvV2lkdGgo
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCB2aWRlb0hlaWdodCgpIGNvbnN0
OwogCi0gICAgLy8gRnVsbHNjcmVlbgogICAgIHZvaWQgd2Via2l0RW50ZXJGdWxsc2NyZWVuKEV4
Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHdlYmtpdEV4aXRGdWxsc2NyZWVuKCk7CiAgICAgYm9v
bCB3ZWJraXRTdXBwb3J0c0Z1bGxzY3JlZW4oKTsKQEAgLTYyLDcgKzU5LDYgQEAgcHVibGljOgog
I2VuZGlmCiAKICNpZiBFTkFCTEUoTUVESUFfU1RBVElTVElDUykKLSAgICAvLyBTdGF0aXN0aWNz
CiAgICAgdW5zaWduZWQgd2Via2l0RGVjb2RlZEZyYW1lQ291bnQoKSBjb25zdDsKICAgICB1bnNp
Z25lZCB3ZWJraXREcm9wcGVkRnJhbWVDb3VudCgpIGNvbnN0OwogI2VuZGlmCkBAIC04Miw2ICs3
OCw3IEBAIHB1YmxpYzoKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJy
aWRlOwogCiAjaWYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQorICAgIGVudW0gY2xh
c3MgVmlkZW9QcmVzZW50YXRpb25Nb2RlIHsgRnVsbHNjcmVlbiwgUGljdHVyZUluUGljdHVyZSwg
SW5saW5lIH07CiAgICAgYm9vbCB3ZWJraXRTdXBwb3J0c1ByZXNlbnRhdGlvbk1vZGUoVmlkZW9Q
cmVzZW50YXRpb25Nb2RlKSBjb25zdDsKICAgICB2b2lkIHdlYmtpdFNldFByZXNlbnRhdGlvbk1v
ZGUoVmlkZW9QcmVzZW50YXRpb25Nb2RlKTsKICAgICBWaWRlb1ByZXNlbnRhdGlvbk1vZGUgd2Vi
a2l0UHJlc2VudGF0aW9uTW9kZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVv
RWxlbWVudC5pZGwKaW5kZXggYzNjN2UxNzRlOWFlMDAyYmY0NWNmMTJlNjU2ODk0M2FhZTEzN2Zi
OC4uYjgyODU1ZTRjY2UxZGUyZWVkYWEwZDk0YTgwMzRkMzgwMzAwNTdlOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaWRsCkBAIC0yMyw5ICsyMyw2IEBACiAgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKICAqLwogCi0vLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgQ29uZGl0aW9uYWw9VklE
RU9fUFJFU0VOVEFUSU9OX01PREUuCi1lbnVtIFZpZGVvUHJlc2VudGF0aW9uTW9kZSB7ICJmdWxs
c2NyZWVuIiwgInBpY3R1cmUtaW4tcGljdHVyZSIsICJpbmxpbmUiIH07Ci0KIFsKICAgICBDb25k
aXRpb25hbD1WSURFTywKICAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCkBAIC02MywzICs2
MCw1IEBAIGVudW0gVmlkZW9QcmVzZW50YXRpb25Nb2RlIHsgImZ1bGxzY3JlZW4iLCAicGljdHVy
ZS1pbi1waWN0dXJlIiwgImlubGluZSIgfTsKICAgICBbQ29uZGl0aW9uYWw9VklERU9fUFJFU0VO
VEFUSU9OX01PREVdIHZvaWQgd2Via2l0U2V0UHJlc2VudGF0aW9uTW9kZShWaWRlb1ByZXNlbnRh
dGlvbk1vZGUgbW9kZSk7CiAjZW5kaWYKIH07CisKK1tDb25kaXRpb25hbD1WSURFT19QUkVTRU5U
QVRJT05fTU9ERV0gZW51bSBWaWRlb1ByZXNlbnRhdGlvbk1vZGUgeyAiZnVsbHNjcmVlbiIsICJw
aWN0dXJlLWluLXBpY3R1cmUiLCAiaW5saW5lIiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggN2VhN2U0
NTQwMzgzYTFhOTQ1NWEwNjY4YjhiOGFiMDAxZmZkNTM5Ni4uZjJhZTBhMWYzMmRjNTQ3Zjg0NGFj
M2Q1NmFlODA4MTI4YjEzZGFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC03Niw5ICs3Niw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKICNpZiBVU0Uo
Q0cpCi1jb25zdCBJbWFnZVNtb290aGluZ1F1YWxpdHkgZGVmYXVsdFNtb290aGluZ1F1YWxpdHkg
PSBJbWFnZVNtb290aGluZ1F1YWxpdHk6OkxvdzsKK2NvbnN0IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6SW1hZ2VTbW9vdGhpbmdRdWFsaXR5IGRlZmF1bHRTbW9vdGhpbmdRdWFsaXR5ID0gQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpJbWFnZVNtb290aGluZ1F1YWxpdHk6OkxvdzsKICNlbHNl
Ci1jb25zdCBJbWFnZVNtb290aGluZ1F1YWxpdHkgZGVmYXVsdFNtb290aGluZ1F1YWxpdHkgPSBJ
bWFnZVNtb290aGluZ1F1YWxpdHk6Ok1lZGl1bTsKK2NvbnN0IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6SW1hZ2VTbW9vdGhpbmdRdWFsaXR5IGRlZmF1bHRTbW9vdGhpbmdRdWFsaXR5ID0gQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpJbWFnZVNtb290aGluZ1F1YWxpdHk6Ok1lZGl1bTsKICNl
bmRpZgogCiBzdGF0aWMgY29uc3QgaW50IGRlZmF1bHRGb250U2l6ZSA9IDEwOwpAQCAtOTMwLDEy
ICs5MzAsMTIgQEAgc3RhdGljIGJvb2wgaXNGdWxsQ2FudmFzQ29tcG9zaXRlTW9kZShDb21wb3Np
dGVPcGVyYXRvciBvcCkKICAgICByZXR1cm4gb3AgPT0gQ29tcG9zaXRlU291cmNlSW4gfHwgb3Ag
PT0gQ29tcG9zaXRlU291cmNlT3V0IHx8IG9wID09IENvbXBvc2l0ZURlc3RpbmF0aW9uSW4gfHwg
b3AgPT0gQ29tcG9zaXRlRGVzdGluYXRpb25BdG9wOwogfQogCi1zdGF0aWMgV2luZFJ1bGUgdG9X
aW5kUnVsZShDYW52YXNXaW5kaW5nUnVsZSBydWxlKQorc3RhdGljIFdpbmRSdWxlIHRvV2luZFJ1
bGUoQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpXaW5kaW5nUnVsZSBydWxlKQogewotICAgIHJl
dHVybiBydWxlID09IENhbnZhc1dpbmRpbmdSdWxlOjpOb256ZXJvID8gUlVMRV9OT05aRVJPIDog
UlVMRV9FVkVOT0REOworICAgIHJldHVybiBydWxlID09IENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6V2luZGluZ1J1bGU6Ok5vbnplcm8gPyBSVUxFX05PTlpFUk8gOiBSVUxFX0VWRU5PREQ7CiB9
CiAKLXZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmaWxsKENhbnZhc1dpbmRpbmdSdWxl
IHdpbmRpbmdSdWxlKQordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGwoV2luZGlu
Z1J1bGUgd2luZGluZ1J1bGUpCiB7CiAgICAgZmlsbEludGVybmFsKG1fcGF0aCwgd2luZGluZ1J1
bGUpOwogCkBAIC05NTMsNyArOTUzLDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OnN0cm9rZSgpCiAjZW5kaWYKIH0KIAotdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNs
aXAoQ2FudmFzV2luZGluZ1J1bGUgd2luZGluZ1J1bGUpCit2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6Y2xpcChXaW5kaW5nUnVsZSB3aW5kaW5nUnVsZSkKIHsKICAgICBjbGlwSW50ZXJu
YWwobV9wYXRoLCB3aW5kaW5nUnVsZSk7CiAKQEAgLTk2Miw3ICs5NjIsNyBAQCB2b2lkIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6Y2xpcChDYW52YXNXaW5kaW5nUnVsZSB3aW5kaW5nUnVsZSkK
ICNlbmRpZgogfQogCi12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZmlsbChET01QYXRo
JiBwYXRoLCBDYW52YXNXaW5kaW5nUnVsZSB3aW5kaW5nUnVsZSkKK3ZvaWQgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpmaWxsKERPTVBhdGgmIHBhdGgsIFdpbmRpbmdSdWxlIHdpbmRpbmdSdWxl
KQogewogICAgIGZpbGxJbnRlcm5hbChwYXRoLnBhdGgoKSwgd2luZGluZ1J1bGUpOwogfQpAQCAt
OTcyLDEyICs5NzIsMTIgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnN0cm9rZShE
T01QYXRoJiBwYXRoKQogICAgIHN0cm9rZUludGVybmFsKHBhdGgucGF0aCgpKTsKIH0KIAotdm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsaXAoRE9NUGF0aCYgcGF0aCwgQ2FudmFzV2lu
ZGluZ1J1bGUgd2luZGluZ1J1bGUpCit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y2xp
cChET01QYXRoJiBwYXRoLCBXaW5kaW5nUnVsZSB3aW5kaW5nUnVsZSkKIHsKICAgICBjbGlwSW50
ZXJuYWwocGF0aC5wYXRoKCksIHdpbmRpbmdSdWxlKTsKIH0KIAotdm9pZCBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OmZpbGxJbnRlcm5hbChjb25zdCBQYXRoJiBwYXRoLCBDYW52YXNXaW5kaW5n
UnVsZSB3aW5kaW5nUnVsZSkKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmaWxsSW50
ZXJuYWwoY29uc3QgUGF0aCYgcGF0aCwgV2luZGluZ1J1bGUgd2luZGluZ1J1bGUpCiB7CiAgICAg
R3JhcGhpY3NDb250ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQoKTsKICAgICBpZiAoIWMpCkBAIC0x
MDQ0LDcgKzEwNDQsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c3Ryb2tlSW50
ZXJuYWwoY29uc3QgUGF0aCYgcGF0aCkKICAgICB9CiB9CiAKLXZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpjbGlwSW50ZXJuYWwoY29uc3QgUGF0aCYgcGF0aCwgQ2FudmFzV2luZGluZ1J1
bGUgd2luZGluZ1J1bGUpCit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y2xpcEludGVy
bmFsKGNvbnN0IFBhdGgmIHBhdGgsIFdpbmRpbmdSdWxlIHdpbmRpbmdSdWxlKQogewogICAgIEdy
YXBoaWNzQ29udGV4dCogYyA9IGRyYXdpbmdDb250ZXh0KCk7CiAgICAgaWYgKCFjKQpAQCAtMTA3
MCw3ICsxMDcwLDcgQEAgaW5saW5lIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjplbmRD
b21wb3NpdGVMYXllcigpCiAjZW5kaWYKIH0KIAotYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OmlzUG9pbnRJblBhdGgoZmxvYXQgeCwgZmxvYXQgeSwgQ2FudmFzV2luZGluZ1J1bGUgd2lu
ZGluZ1J1bGUpCitib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6aXNQb2ludEluUGF0aChm
bG9hdCB4LCBmbG9hdCB5LCBXaW5kaW5nUnVsZSB3aW5kaW5nUnVsZSkKIHsKICAgICByZXR1cm4g
aXNQb2ludEluUGF0aEludGVybmFsKG1fcGF0aCwgeCwgeSwgd2luZGluZ1J1bGUpOwogfQpAQCAt
MTA4MCw3ICsxMDgwLDcgQEAgYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmlzUG9pbnRJ
blN0cm9rZShmbG9hdCB4LCBmbG9hdCB5KQogICAgIHJldHVybiBpc1BvaW50SW5TdHJva2VJbnRl
cm5hbChtX3BhdGgsIHgsIHkpOwogfQogCi1ib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
aXNQb2ludEluUGF0aChET01QYXRoJiBwYXRoLCBmbG9hdCB4LCBmbG9hdCB5LCBDYW52YXNXaW5k
aW5nUnVsZSB3aW5kaW5nUnVsZSkKK2Jvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjppc1Bv
aW50SW5QYXRoKERPTVBhdGgmIHBhdGgsIGZsb2F0IHgsIGZsb2F0IHksIFdpbmRpbmdSdWxlIHdp
bmRpbmdSdWxlKQogewogICAgIHJldHVybiBpc1BvaW50SW5QYXRoSW50ZXJuYWwocGF0aC5wYXRo
KCksIHgsIHksIHdpbmRpbmdSdWxlKTsKIH0KQEAgLTEwOTAsNyArMTA5MCw3IEBAIGJvb2wgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjppc1BvaW50SW5TdHJva2UoRE9NUGF0aCYgcGF0aCwgZmxv
YXQgeCwgZmxvYXQgeSkKICAgICByZXR1cm4gaXNQb2ludEluU3Ryb2tlSW50ZXJuYWwocGF0aC5w
YXRoKCksIHgsIHkpOwogfQogCi1ib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6aXNQb2lu
dEluUGF0aEludGVybmFsKGNvbnN0IFBhdGgmIHBhdGgsIGZsb2F0IHgsIGZsb2F0IHksIENhbnZh
c1dpbmRpbmdSdWxlIHdpbmRpbmdSdWxlKQorYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OmlzUG9pbnRJblBhdGhJbnRlcm5hbChjb25zdCBQYXRoJiBwYXRoLCBmbG9hdCB4LCBmbG9hdCB5
LCBXaW5kaW5nUnVsZSB3aW5kaW5nUnVsZSkKIHsKICAgICBHcmFwaGljc0NvbnRleHQqIGMgPSBk
cmF3aW5nQ29udGV4dCgpOwogICAgIGlmICghYykKQEAgLTI1MzcsMTQgKzI1MzcsMTQgQEAgUGxh
dGZvcm1MYXllciogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpwbGF0Zm9ybUxheWVyKCkgY29u
c3QKIH0KICNlbmRpZgogCi1zdGF0aWMgSW50ZXJwb2xhdGlvblF1YWxpdHkgc21vb3RoaW5nVG9J
bnRlcnBvbGF0aW9uUXVhbGl0eShJbWFnZVNtb290aGluZ1F1YWxpdHkgcXVhbGl0eSkKK3N0YXRp
YyBJbnRlcnBvbGF0aW9uUXVhbGl0eSBzbW9vdGhpbmdUb0ludGVycG9sYXRpb25RdWFsaXR5KENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6SW1hZ2VTbW9vdGhpbmdRdWFsaXR5IHF1YWxpdHkpCiB7
CiAgICAgc3dpdGNoIChxdWFsaXR5KSB7Ci0gICAgY2FzZSBJbWFnZVNtb290aGluZ1F1YWxpdHk6
OkxvdzoKKyAgICBjYXNlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6SW1hZ2VTbW9vdGhpbmdR
dWFsaXR5OjpMb3c6CiAgICAgICAgIHJldHVybiBJbnRlcnBvbGF0aW9uTG93OwotICAgIGNhc2Ug
SW1hZ2VTbW9vdGhpbmdRdWFsaXR5OjpNZWRpdW06CisgICAgY2FzZSBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OkltYWdlU21vb3RoaW5nUXVhbGl0eTo6TWVkaXVtOgogICAgICAgICByZXR1cm4g
SW50ZXJwb2xhdGlvbk1lZGl1bTsKLSAgICBjYXNlIEltYWdlU21vb3RoaW5nUXVhbGl0eTo6SGln
aDoKKyAgICBjYXNlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6SW1hZ2VTbW9vdGhpbmdRdWFs
aXR5OjpIaWdoOgogICAgICAgICByZXR1cm4gSW50ZXJwb2xhdGlvbkhpZ2g7CiAgICAgfQogCkBA
IC0yNTUyLDcgKzI1NTIsNyBAQCBzdGF0aWMgSW50ZXJwb2xhdGlvblF1YWxpdHkgc21vb3RoaW5n
VG9JbnRlcnBvbGF0aW9uUXVhbGl0eShJbWFnZVNtb290aGluZ1F1YWxpdAogICAgIHJldHVybiBJ
bnRlcnBvbGF0aW9uTG93OwogfTsKIAotSW1hZ2VTbW9vdGhpbmdRdWFsaXR5IENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6aW1hZ2VTbW9vdGhpbmdRdWFsaXR5KCkgY29uc3QKK2F1dG8gQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjppbWFnZVNtb290aGluZ1F1YWxpdHkoKSBjb25zdCAtPiBJbWFn
ZVNtb290aGluZ1F1YWxpdHkKIHsKICAgICByZXR1cm4gc3RhdGUoKS5pbWFnZVNtb290aGluZ1F1
YWxpdHk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5oCmluZGV4IGJjMDYyYWVlZWQyMzYyMDg4ODVmMGQ5OWZiYWVkYjkz
Mzg4MmE5OTUuLjkxYmQ4NTY5ZTMyMjIzNjFjYzYyZGQxNDVhM2VkMjM2ZDQyODQ0NjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5oCkBAIC01Nyw5ICs1Nyw2IEBAIGNsYXNzIFRleHRNZXRyaWNzOwogCiB0eXBlZGVmIGlu
dCBFeGNlcHRpb25Db2RlOwogCi1lbnVtIGNsYXNzIENhbnZhc1dpbmRpbmdSdWxlIHsgTm9uemVy
bywgRXZlbm9kZCB9OwotZW51bSBjbGFzcyBJbWFnZVNtb290aGluZ1F1YWxpdHkgeyBMb3csIE1l
ZGl1bSwgSGlnaCB9OwotCiBjbGFzcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgZmluYWwgOiBw
dWJsaWMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCwgcHVibGljIENhbnZhc1BhdGhNZXRob2RzIHsK
IHB1YmxpYzoKICAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQoSFRNTENhbnZhc0VsZW1lbnQq
LCBib29sIHVzZXNDU1NDb21wYXRpYmlsaXR5UGFyc2VNb2RlLCBib29sIHVzZXNEYXNoYm9hcmRD
b21wYXRpYmlsaXR5TW9kZSk7CkBAIC0xMzEsMTggKzEyOCwyMCBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGJlZ2luUGF0aCgpOwogCi0gICAgdm9pZCBmaWxsKENhbnZhc1dpbmRpbmdSdWxlID0gQ2Fu
dmFzV2luZGluZ1J1bGU6Ok5vbnplcm8pOworICAgIGVudW0gY2xhc3MgV2luZGluZ1J1bGUgeyBO
b256ZXJvLCBFdmVub2RkIH07CisKKyAgICB2b2lkIGZpbGwoV2luZGluZ1J1bGUgPSBXaW5kaW5n
UnVsZTo6Tm9uemVybyk7CiAgICAgdm9pZCBzdHJva2UoKTsKLSAgICB2b2lkIGNsaXAoQ2FudmFz
V2luZGluZ1J1bGUgPSBDYW52YXNXaW5kaW5nUnVsZTo6Tm9uemVybyk7CisgICAgdm9pZCBjbGlw
KFdpbmRpbmdSdWxlID0gV2luZGluZ1J1bGU6Ok5vbnplcm8pOwogCi0gICAgdm9pZCBmaWxsKERP
TVBhdGgmLCBDYW52YXNXaW5kaW5nUnVsZSA9IENhbnZhc1dpbmRpbmdSdWxlOjpOb256ZXJvKTsK
KyAgICB2b2lkIGZpbGwoRE9NUGF0aCYsIFdpbmRpbmdSdWxlID0gV2luZGluZ1J1bGU6Ok5vbnpl
cm8pOwogICAgIHZvaWQgc3Ryb2tlKERPTVBhdGgmKTsKLSAgICB2b2lkIGNsaXAoRE9NUGF0aCYs
IENhbnZhc1dpbmRpbmdSdWxlID0gQ2FudmFzV2luZGluZ1J1bGU6Ok5vbnplcm8pOworICAgIHZv
aWQgY2xpcChET01QYXRoJiwgV2luZGluZ1J1bGUgPSBXaW5kaW5nUnVsZTo6Tm9uemVybyk7CiAK
LSAgICBib29sIGlzUG9pbnRJblBhdGgoZmxvYXQgeCwgZmxvYXQgeSwgQ2FudmFzV2luZGluZ1J1
bGUgPSBDYW52YXNXaW5kaW5nUnVsZTo6Tm9uemVybyk7CisgICAgYm9vbCBpc1BvaW50SW5QYXRo
KGZsb2F0IHgsIGZsb2F0IHksIFdpbmRpbmdSdWxlID0gV2luZGluZ1J1bGU6Ok5vbnplcm8pOwog
ICAgIGJvb2wgaXNQb2ludEluU3Ryb2tlKGZsb2F0IHgsIGZsb2F0IHkpOwogCi0gICAgYm9vbCBp
c1BvaW50SW5QYXRoKERPTVBhdGgmLCBmbG9hdCB4LCBmbG9hdCB5LCBDYW52YXNXaW5kaW5nUnVs
ZSA9IENhbnZhc1dpbmRpbmdSdWxlOjpOb256ZXJvKTsKKyAgICBib29sIGlzUG9pbnRJblBhdGgo
RE9NUGF0aCYsIGZsb2F0IHgsIGZsb2F0IHksIFdpbmRpbmdSdWxlID0gV2luZGluZ1J1bGU6Ok5v
bnplcm8pOwogICAgIGJvb2wgaXNQb2ludEluU3Ryb2tlKERPTVBhdGgmLCBmbG9hdCB4LCBmbG9h
dCB5KTsKIAogICAgIHZvaWQgY2xlYXJSZWN0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHdpZHRo
LCBmbG9hdCBoZWlnaHQpOwpAQCAtMjIyLDYgKzIyMSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlt
YWdlU21vb3RoaW5nRW5hYmxlZCgpIGNvbnN0OwogICAgIHZvaWQgc2V0SW1hZ2VTbW9vdGhpbmdF
bmFibGVkKGJvb2wpOwogCisgICAgZW51bSBjbGFzcyBJbWFnZVNtb290aGluZ1F1YWxpdHkgeyBM
b3csIE1lZGl1bSwgSGlnaCB9OwogICAgIEltYWdlU21vb3RoaW5nUXVhbGl0eSBpbWFnZVNtb290
aGluZ1F1YWxpdHkoKSBjb25zdDsKICAgICB2b2lkIHNldEltYWdlU21vb3RoaW5nUXVhbGl0eShJ
bWFnZVNtb290aGluZ1F1YWxpdHkpOwogCkBAIC0zNDUsMTEgKzM0NSwxMSBAQCBwcml2YXRlOgog
ICAgIHZvaWQgYmVnaW5Db21wb3NpdGVMYXllcigpOwogICAgIHZvaWQgZW5kQ29tcG9zaXRlTGF5
ZXIoKTsKIAotICAgIHZvaWQgZmlsbEludGVybmFsKGNvbnN0IFBhdGgmLCBDYW52YXNXaW5kaW5n
UnVsZSk7CisgICAgdm9pZCBmaWxsSW50ZXJuYWwoY29uc3QgUGF0aCYsIFdpbmRpbmdSdWxlKTsK
ICAgICB2b2lkIHN0cm9rZUludGVybmFsKGNvbnN0IFBhdGgmKTsKLSAgICB2b2lkIGNsaXBJbnRl
cm5hbChjb25zdCBQYXRoJiwgQ2FudmFzV2luZGluZ1J1bGUpOworICAgIHZvaWQgY2xpcEludGVy
bmFsKGNvbnN0IFBhdGgmLCBXaW5kaW5nUnVsZSk7CiAKLSAgICBib29sIGlzUG9pbnRJblBhdGhJ
bnRlcm5hbChjb25zdCBQYXRoJiwgZmxvYXQgeCwgZmxvYXQgeSwgQ2FudmFzV2luZGluZ1J1bGUp
OworICAgIGJvb2wgaXNQb2ludEluUGF0aEludGVybmFsKGNvbnN0IFBhdGgmLCBmbG9hdCB4LCBm
bG9hdCB5LCBXaW5kaW5nUnVsZSk7CiAgICAgYm9vbCBpc1BvaW50SW5TdHJva2VJbnRlcm5hbChj
b25zdCBQYXRoJiwgZmxvYXQgeCwgZmxvYXQgeSk7CiAKICAgICB2b2lkIGRyYXdGb2N1c0lmTmVl
ZGVkSW50ZXJuYWwoY29uc3QgUGF0aCYsIEVsZW1lbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAppbmRleCBkOWMxZjlkY2Ux
YzE4NzQ0ZGJiZGYzYzhjZjk3NTZhYjMxN2FlZTA0Li5kYzQzZTJjNDMwOWU5MjI4ZjQ3OWQ5YWI1
MTcxMWI0NjIxNTI4YzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sRWxlbWVudHMuY3BwCkBAIC03NjUsNyArNzY1LDcgQEAgdm9pZCBNZWRpYUNv
bnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OnVwZGF0ZURpc3BsYXkoKQogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoZGlzcGxheU1vZGUg
IT0gQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6QXV0b21hdGljICYmIHRleHRUcmFjay0+bW9kZSgp
ID09IFRleHRUcmFja01vZGU6OlNob3dpbmcpIHsKKyAgICAgICAgaWYgKGRpc3BsYXlNb2RlICE9
IENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkF1dG9tYXRpYyAmJiB0ZXh0VHJhY2stPm1vZGUoKSA9
PSBUZXh0VHJhY2s6Ok1vZGU6OlNob3dpbmcpIHsKICAgICAgICAgICAgIHRyYWNrTWVudUl0ZW1T
ZWxlY3RlZCA9IHRydWU7CiAgICAgICAgICAgICB0cmFja0l0ZW0tPmNsYXNzTGlzdCgpLmFkZChz
ZWxlY3RlZENsYXNzVmFsdWUsIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgICAgICB9IGVsc2UK
QEAgLTExNzMsNyArMTE3Myw3IEBAIHZvaWQgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVy
RWxlbWVudDo6dXBkYXRlRGlzcGxheSgpCiAgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhQ29udHJv
bFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZURpc3BsYXkoJXApIC0gYWRkaW5nIGFu
ZCBwb3NpdGlvbmluZyBjdWUgIyV6dTogXCIlc1wiLCBzdGFydD0lLjJmLCBlbmQ9JS4yZiwgbGlu
ZT0lLjJmIiwgdGhpcywgaSwgY3VlLT50ZXh0KCkudXRmOCgpLmRhdGEoKSwgY3VlLT5zdGFydFRp
bWUoKSwgY3VlLT5lbmRUaW1lKCksIGN1ZS0+bGluZSgpKTsKIAogICAgICAgICBSZWZQdHI8VlRU
Q3VlQm94PiBkaXNwbGF5Qm94ID0gY3VlLT5nZXREaXNwbGF5VHJlZShtX3ZpZGVvRGlzcGxheVNp
emUuc2l6ZSgpLCBtX2ZvbnRTaXplKTsKLSAgICAgICAgaWYgKGN1ZS0+dHJhY2soKS0+bW9kZSgp
ID09IFRleHRUcmFja01vZGU6OkRpc2FibGVkKQorICAgICAgICBpZiAoY3VlLT50cmFjaygpLT5t
b2RlKCkgPT0gVGV4dFRyYWNrOjpNb2RlOjpEaXNhYmxlZCkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCiAgICAgICAgIFZUVFJlZ2lvbiogcmVnaW9uID0gY3VlLT50cmFjaygpLT5yZWdpb25zKCkt
PmdldFJlZ2lvbkJ5SWQoY3VlLT5yZWdpb25JZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svSW5iYW5kVGV4dFRyYWNrLmNwcAppbmRleCAzYzEwYTQ0ZGQ3MjQ0ZTQ4ZTdmY2ZmM2Iw
MzM5ZTk1ZDZlMmI2ODExLi5mMDYyODYyYjQ1Y2Q5NDA2ODkwZmU3ZDUwMTRlZjIzN2RmZjEzODUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suY3BwCkBA
IC04OSwyNyArODksMjcgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2s6OnNldFByaXZhdGUoUGFzc1Jl
ZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPiB0cmFja1ByaXZhdGUKICAgICB1cGRhdGVLaW5k
RnJvbVByaXZhdGUoKTsKIH0KIAotdm9pZCBJbmJhbmRUZXh0VHJhY2s6OnNldE1vZGUoVGV4dFRy
YWNrTW9kZSBtb2RlKQordm9pZCBJbmJhbmRUZXh0VHJhY2s6OnNldE1vZGUoTW9kZSBtb2RlKQog
ewogICAgIFRleHRUcmFjazo6c2V0TW9kZShtb2RlKTsKICAgICBzZXRNb2RlSW50ZXJuYWwobW9k
ZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6TW9kZSB0b1By
aXZhdGUoVGV4dFRyYWNrTW9kZSBtb2RlKQorc3RhdGljIGlubGluZSBJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlOjpNb2RlIHRvUHJpdmF0ZShUZXh0VHJhY2s6Ok1vZGUgbW9kZSkKIHsKICAgICBzd2l0
Y2ggKG1vZGUpIHsKLSAgICBjYXNlIFRleHRUcmFja01vZGU6OkRpc2FibGVkOgorICAgIGNhc2Ug
VGV4dFRyYWNrOjpNb2RlOjpEaXNhYmxlZDoKICAgICAgICAgcmV0dXJuIEluYmFuZFRleHRUcmFj
a1ByaXZhdGU6OkRpc2FibGVkOwotICAgIGNhc2UgVGV4dFRyYWNrTW9kZTo6SGlkZGVuOgorICAg
IGNhc2UgVGV4dFRyYWNrOjpNb2RlOjpIaWRkZW46CiAgICAgICAgIHJldHVybiBJbmJhbmRUZXh0
VHJhY2tQcml2YXRlOjpIaWRkZW47Ci0gICAgY2FzZSBUZXh0VHJhY2tNb2RlOjpTaG93aW5nOgor
ICAgIGNhc2UgVGV4dFRyYWNrOjpNb2RlOjpTaG93aW5nOgogICAgICAgICByZXR1cm4gSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZTo6U2hvd2luZzsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgcmV0dXJuIEluYmFuZFRleHRUcmFja1ByaXZhdGU6OkRpc2FibGVkOwogfQogCi12
b2lkIEluYmFuZFRleHRUcmFjazo6c2V0TW9kZUludGVybmFsKFRleHRUcmFja01vZGUgbW9kZSkK
K3ZvaWQgSW5iYW5kVGV4dFRyYWNrOjpzZXRNb2RlSW50ZXJuYWwoTW9kZSBtb2RlKQogewogICAg
IG1fcHJpdmF0ZS0+c2V0TW9kZSh0b1ByaXZhdGUobW9kZSkpOwogfQpAQCAtMTk2LDIyICsxOTYs
MjIgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2s6OnVwZGF0ZUtpbmRGcm9tUHJpdmF0ZSgpCiB7CiAg
ICAgc3dpdGNoIChtX3ByaXZhdGUtPmtpbmQoKSkgewogICAgIGNhc2UgSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZTo6U3VidGl0bGVzOgotICAgICAgICBzZXRLaW5kKFRleHRUcmFja0tpbmQ6OlN1YnRp
dGxlcyk7CisgICAgICAgIHNldEtpbmQoS2luZDo6U3VidGl0bGVzKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpDYXB0aW9uczoKLSAgICAgICAgc2V0
S2luZChUZXh0VHJhY2tLaW5kOjpDYXB0aW9ucyk7CisgICAgICAgIHNldEtpbmQoS2luZDo6Q2Fw
dGlvbnMpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEluYmFuZFRleHRUcmFja1ByaXZhdGU6
OkRlc2NyaXB0aW9uczoKLSAgICAgICAgc2V0S2luZChUZXh0VHJhY2tLaW5kOjpEZXNjcmlwdGlv
bnMpOworICAgICAgICBzZXRLaW5kKEtpbmQ6OkRlc2NyaXB0aW9ucyk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6Q2hhcHRlcnM6Ci0gICAgICAgIHNl
dEtpbmQoVGV4dFRyYWNrS2luZDo6Q2hhcHRlcnMpOworICAgICAgICBzZXRLaW5kKEtpbmQ6OkNo
YXB0ZXJzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
OjpNZXRhZGF0YToKLSAgICAgICAgc2V0S2luZChUZXh0VHJhY2tLaW5kOjpNZXRhZGF0YSk7Cisg
ICAgICAgIHNldEtpbmQoS2luZDo6TWV0YWRhdGEpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEluYmFuZFRleHRUcmFja1ByaXZhdGU6OkZvcmNlZDoKLSAgICAgICAgc2V0S2luZChUZXh0VHJh
Y2tLaW5kOjpGb3JjZWQpOworICAgICAgICBzZXRLaW5kKEtpbmQ6OkZvcmNlZCk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6Tm9uZToKICAgICBkZWZh
dWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJh
Y2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmgKaW5kZXgg
YTNhYTAxMDE2MTViNjY4OWM3OTU1ZGI2YjU4Yzc2NDMxNWU2YjYyYi4uZTVmOGQyYjZkMWJmZDg1
NjNhYWYzNjNmOWZhZWMxZWU4ODM5Nzk4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9JbmJhbmRUZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L0luYmFuZFRleHRUcmFjay5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGNv
bnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNN
YWluUHJvZ3JhbUNvbnRlbnQoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzRWFzeVRvUmVh
ZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgc2V0TW9kZShUZXh0VHJhY2tNb2RlKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHNldE1vZGUoTW9kZSkgb3ZlcnJpZGU7CiAgICAgc2l6ZV90IGluYmFu
ZFRyYWNrSW5kZXgoKTsKIAogICAgIEF0b21pY1N0cmluZyBpbkJhbmRNZXRhZGF0YVRyYWNrRGlz
cGF0Y2hUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKIHBy
b3RlY3RlZDoKICAgICBJbmJhbmRUZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFRl
eHRUcmFja0NsaWVudCosIFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4pOwogCi0g
ICAgdm9pZCBzZXRNb2RlSW50ZXJuYWwoVGV4dFRyYWNrTW9kZSk7CisgICAgdm9pZCBzZXRNb2Rl
SW50ZXJuYWwoTW9kZSk7CiAgICAgdm9pZCB1cGRhdGVLaW5kRnJvbVByaXZhdGUoKTsKIAogICAg
IFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPiBtX3ByaXZhdGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RleHRUcmFjay5jcHAKaW5kZXggYTdkODFiZTcxN2RjMTVmYmZhODk2YmU2NTYz
YWFiYmY0NzYwNjA5ZC4uMzE4ODc4MWRiZjVmNDk1MDIxNzQ0YTA0MzhiYzdhN2IyMzkzMGNhOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcApAQCAtMTA0LDE1ICsxMDQs
MTUgQEAgVGV4dFRyYWNrOjpUZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgVGV4dFRyYWNrQ2xpZW50KiBjbGllbnQsIGMKICAgICAsIG1fcmVuZGVyZWRUcmFja0luZGV4
KGludmFsaWRUcmFja0luZGV4KQogewogICAgIGlmIChraW5kID09IGNhcHRpb25zS2V5d29yZCgp
KQotICAgICAgICBtX2tpbmQgPSBUZXh0VHJhY2tLaW5kOjpDYXB0aW9uczsKKyAgICAgICAgbV9r
aW5kID0gS2luZDo6Q2FwdGlvbnM7CiAgICAgZWxzZSBpZiAoa2luZCA9PSBjaGFwdGVyc0tleXdv
cmQoKSkKLSAgICAgICAgbV9raW5kID0gVGV4dFRyYWNrS2luZDo6Q2hhcHRlcnM7CisgICAgICAg
IG1fa2luZCA9IEtpbmQ6OkNoYXB0ZXJzOwogICAgIGVsc2UgaWYgKGtpbmQgPT0gZGVzY3JpcHRp
b25zS2V5d29yZCgpKQotICAgICAgICBtX2tpbmQgPSBUZXh0VHJhY2tLaW5kOjpEZXNjcmlwdGlv
bnM7CisgICAgICAgIG1fa2luZCA9IEtpbmQ6OkRlc2NyaXB0aW9uczsKICAgICBlbHNlIGlmIChr
aW5kID09IGZvcmNlZEtleXdvcmQoKSkKLSAgICAgICAgbV9raW5kID0gVGV4dFRyYWNrS2luZDo6
Rm9yY2VkOworICAgICAgICBtX2tpbmQgPSBLaW5kOjpGb3JjZWQ7CiAgICAgZWxzZSBpZiAoa2lu
ZCA9PSBtZXRhZGF0YUtleXdvcmQoKSkKLSAgICAgICAgbV9raW5kID0gVGV4dFRyYWNrS2luZDo6
TWV0YWRhdGE7CisgICAgICAgIG1fa2luZCA9IEtpbmQ6Ok1ldGFkYXRhOwogfQogCiBUZXh0VHJh
Y2s6On5UZXh0VHJhY2soKQpAQCAtMTMyLDcgKzEzMiw3IEBAIFRleHRUcmFjazo6flRleHRUcmFj
aygpCiAKIGJvb2wgVGV4dFRyYWNrOjplbmFibGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9t
b2RlICE9IFRleHRUcmFja01vZGU6OkRpc2FibGVkOworICAgIHJldHVybiBtX21vZGUgIT0gTW9k
ZTo6RGlzYWJsZWQ7CiB9CiAKIGJvb2wgVGV4dFRyYWNrOjppc1ZhbGlkS2luZEtleXdvcmQoY29u
c3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKQEAgLTE1NiwyNCArMTU2LDI0IEBAIGJvb2wgVGV4dFRy
YWNrOjppc1ZhbGlkS2luZEtleXdvcmQoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIGNvbnN0
IEF0b21pY1N0cmluZyYgVGV4dFRyYWNrOjpraW5kS2V5d29yZCgpIGNvbnN0CiB7CiAgICAgc3dp
dGNoIChtX2tpbmQpIHsKLSAgICBjYXNlIFRleHRUcmFja0tpbmQ6OkNhcHRpb25zOgorICAgIGNh
c2UgS2luZDo6Q2FwdGlvbnM6CiAgICAgICAgIHJldHVybiBjYXB0aW9uc0tleXdvcmQoKTsKLSAg
ICBjYXNlIFRleHRUcmFja0tpbmQ6OkNoYXB0ZXJzOgorICAgIGNhc2UgS2luZDo6Q2hhcHRlcnM6
CiAgICAgICAgIHJldHVybiBjaGFwdGVyc0tleXdvcmQoKTsKLSAgICBjYXNlIFRleHRUcmFja0tp
bmQ6OkRlc2NyaXB0aW9uczoKKyAgICBjYXNlIEtpbmQ6OkRlc2NyaXB0aW9uczoKICAgICAgICAg
cmV0dXJuIGRlc2NyaXB0aW9uc0tleXdvcmQoKTsKLSAgICBjYXNlIFRleHRUcmFja0tpbmQ6OkZv
cmNlZDoKKyAgICBjYXNlIEtpbmQ6OkZvcmNlZDoKICAgICAgICAgcmV0dXJuIGZvcmNlZEtleXdv
cmQoKTsKLSAgICBjYXNlIFRleHRUcmFja0tpbmQ6Ok1ldGFkYXRhOgorICAgIGNhc2UgS2luZDo6
TWV0YWRhdGE6CiAgICAgICAgIHJldHVybiBtZXRhZGF0YUtleXdvcmQoKTsKLSAgICBjYXNlIFRl
eHRUcmFja0tpbmQ6OlN1YnRpdGxlczoKKyAgICBjYXNlIEtpbmQ6OlN1YnRpdGxlczoKICAgICAg
ICAgcmV0dXJuIHN1YnRpdGxlc0tleXdvcmQoKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgcmV0dXJuIHN1YnRpdGxlc0tleXdvcmQoKTsKIH0KIAotdm9pZCBUZXh0VHJh
Y2s6OnNldEtpbmQoVGV4dFRyYWNrS2luZCBuZXdLaW5kKQordm9pZCBUZXh0VHJhY2s6OnNldEtp
bmQoS2luZCBuZXdLaW5kKQogewogICAgIGF1dG8gb2xkS2luZCA9IG1fa2luZDsKIApAQCAtMjAz
LDI4ICsyMDMsMjggQEAgdm9pZCBUZXh0VHJhY2s6OnNldEtpbmQoVGV4dFRyYWNrS2luZCBuZXdL
aW5kKQogdm9pZCBUZXh0VHJhY2s6OnNldEtpbmRLZXl3b3JkSWdub3JpbmdBU0NJSUNhc2UoU3Ry
aW5nVmlldyBrZXl3b3JkKQogewogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShrZXl3b3JkLCAiY2FwdGlvbnMiKSkKLSAgICAgICAgc2V0S2luZChUZXh0VHJhY2tLaW5kOjpD
YXB0aW9ucyk7CisgICAgICAgIHNldEtpbmQoS2luZDo6Q2FwdGlvbnMpOwogICAgIGVsc2UgaWYg
KGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGtleXdvcmQsICJjaGFwdGVycyIpKQotICAg
ICAgICBzZXRLaW5kKFRleHRUcmFja0tpbmQ6OkNoYXB0ZXJzKTsKKyAgICAgICAgc2V0S2luZChL
aW5kOjpDaGFwdGVycyk7CiAgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2Uoa2V5d29yZCwgImRlc2NyaXB0aW9ucyIpKQotICAgICAgICBzZXRLaW5kKFRleHRUcmFja0tp
bmQ6OkRlc2NyaXB0aW9ucyk7CisgICAgICAgIHNldEtpbmQoS2luZDo6RGVzY3JpcHRpb25zKTsK
ICAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShrZXl3b3JkLCAiZm9y
Y2VkIikpCi0gICAgICAgIHNldEtpbmQoVGV4dFRyYWNrS2luZDo6Rm9yY2VkKTsKKyAgICAgICAg
c2V0S2luZChLaW5kOjpGb3JjZWQpOwogICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKGtleXdvcmQsICJtZXRhZGF0YSIpKQotICAgICAgICBzZXRLaW5kKFRleHRUcmFj
a0tpbmQ6Ok1ldGFkYXRhKTsKKyAgICAgICAgc2V0S2luZChLaW5kOjpNZXRhZGF0YSk7CiAgICAg
ZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoa2V5d29yZCwgInN1YnRpdGxl
cyIpKQotICAgICAgICBzZXRLaW5kKFRleHRUcmFja0tpbmQ6OlN1YnRpdGxlcyk7CisgICAgICAg
IHNldEtpbmQoS2luZDo6U3VidGl0bGVzKTsKICNpZiAhRU5BQkxFKE1FRElBX1NPVVJDRSkKICAg
ICAvLyBGSVhNRTogVGhpcyBwcmVzZXJ2ZXMgdGhlIGJlaGF2aW9yIG9mIGFuIG9sZGVyIHZlcnNp
b24gb2YgdGhpcyBjb2RlIGJlZm9yZSByZWZhY3RvcmluZy4KICAgICAvLyAhRU5BQkxFKE1FRElB
X1NPVVJDRSk6IHVua25vd24ga2V5d29yZHMgYWxsIGdldCB0dXJuZWQgaW50byBTdWJ0aXRsZXMu
CiAgICAgLy8gRU5BQkxFKE1FRElBX1NPVVJDRSk6IHVua25vd24ga2V5d29yZHMgbGVhdmUgdGhl
IG9sZCB2YWx1ZSBmb3Iga2luZCB1bnRvdWNoZWQuCiAgICAgLy8gSSBhbSBub3Qgc3VyZSB0aGF0
IGVpdGhlciBvZiB0aG9zZSBpcyB0aGUgY29ycmVjdCBiZWhhdmlvcjsgc2hvdWxkIHRlc3QgYW5k
IGZpeC4KICAgICBlbHNlCi0gICAgICAgIHNldEtpbmQoVGV4dFRyYWNrS2luZDo6U3VidGl0bGVz
KTsKKyAgICAgICAgc2V0S2luZChLaW5kOjpTdWJ0aXRsZXMpOwogI2VuZGlmCiB9CiAKLXZvaWQg
VGV4dFRyYWNrOjpzZXRNb2RlKFRleHRUcmFja01vZGUgbW9kZSkKK3ZvaWQgVGV4dFRyYWNrOjpz
ZXRNb2RlKE1vZGUgbW9kZSkKIHsKICAgICAvLyBPbiBzZXR0aW5nLCBpZiB0aGUgbmV3IHZhbHVl
IGlzbid0IGVxdWFsIHRvIHdoYXQgdGhlIGF0dHJpYnV0ZSB3b3VsZCBjdXJyZW50bHkKICAgICAv
LyByZXR1cm4sIHRoZSBuZXcgdmFsdWUgbXVzdCBiZSBwcm9jZXNzZWQgYXMgZm9sbG93cyAuLi4K
QEAgLTIzMywxMCArMjMzLDEwIEBAIHZvaWQgVGV4dFRyYWNrOjpzZXRNb2RlKFRleHRUcmFja01v
ZGUgbW9kZSkKIAogICAgIC8vIElmIG1vZGUgY2hhbmdlcyB0byBkaXNhYmxlZCwgcmVtb3ZlIHRo
aXMgdHJhY2sncyBjdWVzIGZyb20gdGhlIGNsaWVudAogICAgIC8vIGJlY2F1c2UgdGhleSB3aWxs
IG5vIGxvbmdlciBiZSBhY2Nlc3NpYmxlIGZyb20gdGhlIGN1ZXMoKSBmdW5jdGlvbi4KLSAgICBp
ZiAobW9kZSA9PSBUZXh0VHJhY2tNb2RlOjpEaXNhYmxlZCAmJiBtX2NsaWVudCAmJiBtX2N1ZXMp
CisgICAgaWYgKG1vZGUgPT0gTW9kZTo6RGlzYWJsZWQgJiYgbV9jbGllbnQgJiYgbV9jdWVzKQog
ICAgICAgICBtX2NsaWVudC0+dGV4dFRyYWNrUmVtb3ZlQ3Vlcyh0aGlzLCBtX2N1ZXMuZ2V0KCkp
OwogCi0gICAgaWYgKG1vZGUgIT0gVGV4dFRyYWNrTW9kZTo6U2hvd2luZyAmJiBtX2N1ZXMpIHsK
KyAgICBpZiAobW9kZSAhPSBNb2RlOjpTaG93aW5nICYmIG1fY3VlcykgewogICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fY3Vlcy0+bGVuZ3RoKCk7ICsraSkgewogICAgICAgICAgICAg
VGV4dFRyYWNrQ3VlKiBjdWUgPSBtX2N1ZXMtPml0ZW0oaSk7CiAgICAgICAgICAgICBpZiAoY3Vl
LT5pc1JlbmRlcmFibGUoKSkKQEAgLTI1Nyw3ICsyNTcsNyBAQCBUZXh0VHJhY2tDdWVMaXN0KiBU
ZXh0VHJhY2s6OmN1ZXMoKQogICAgIC8vIE90aGVyd2lzZSwgaXQgbXVzdCByZXR1cm4gbnVsbC4g
V2hlbiBhbiBvYmplY3QgaXMgcmV0dXJuZWQsIHRoZQogICAgIC8vIHNhbWUgb2JqZWN0IG11c3Qg
YmUgcmV0dXJuZWQgZWFjaCB0aW1lLgogICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVj
cy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI2RvbS10ZXh0dHJhY2stY3VlcwotICAgIGlmIChtX21v
ZGUgPT0gVGV4dFRyYWNrTW9kZTo6RGlzYWJsZWQpCisgICAgaWYgKG1fbW9kZSA9PSBNb2RlOjpE
aXNhYmxlZCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuICZlbnN1cmVUZXh0
VHJhY2tDdWVMaXN0KCk7CiB9CkBAIC0yODQsNyArMjg0LDcgQEAgVGV4dFRyYWNrQ3VlTGlzdCog
VGV4dFRyYWNrOjphY3RpdmVDdWVzKCkgY29uc3QKICAgICAvLyBvcmRlci4gT3RoZXJ3aXNlLCBp
dCBtdXN0IHJldHVybiBudWxsLiBXaGVuIGFuIG9iamVjdCBpcyByZXR1cm5lZCwgdGhlCiAgICAg
Ly8gc2FtZSBvYmplY3QgbXVzdCBiZSByZXR1cm5lZCBlYWNoIHRpbWUuCiAgICAgLy8gaHR0cDov
L3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jZG9tLXRleHR0cmFj
ay1hY3RpdmVjdWVzCi0gICAgaWYgKCFtX2N1ZXMgfHwgbV9tb2RlID09IFRleHRUcmFja01vZGU6
OkRpc2FibGVkKQorICAgIGlmICghbV9jdWVzIHx8IG1fbW9kZSA9PSBNb2RlOjpEaXNhYmxlZCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIG1fY3Vlcy0+YWN0aXZlQ3Vlcygp
OwogfQpAQCAtMzAyLDcgKzMwMiw3IEBAIHZvaWQgVGV4dFRyYWNrOjphZGRDdWUoUGFzc1JlZlB0
cjxUZXh0VHJhY2tDdWU+IHBycEN1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgLy8gSWYgYSBE
YXRhQ3VlIGlzIGFkZGVkIHRvIGEgVGV4dFRyYWNrIHZpYSB0aGUgYWRkQ3VlKCkgbWV0aG9kIGJ1
dCB0aGUgdGV4dCB0cmFjayBkb2VzIG5vdCBoYXZlIGl0cyB0ZXh0CiAgICAgLy8gdHJhY2sga2lu
ZCBzZXQgdG8gbWV0YWRhdGEsIHRocm93IGEgSW52YWxpZE5vZGVUeXBlRXJyb3IgZXhjZXB0aW9u
IGFuZCBkb24ndCBhZGQgdGhlIGN1ZSB0byB0aGUgVGV4dFRyYWNrTGlzdAogICAgIC8vIG9mIHRo
ZSBUZXh0VHJhY2suCi0gICAgaWYgKGN1ZS0+Y3VlVHlwZSgpID09IFRleHRUcmFja0N1ZTo6RGF0
YSAmJiBtX2tpbmQgIT0gVGV4dFRyYWNrS2luZDo6TWV0YWRhdGEpIHsKKyAgICBpZiAoY3VlLT5j
dWVUeXBlKCkgPT0gVGV4dFRyYWNrQ3VlOjpEYXRhICYmIG1fa2luZCAhPSBLaW5kOjpNZXRhZGF0
YSkgewogICAgICAgICBlYyA9IElOVkFMSURfTk9ERV9UWVBFX0VSUjsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTM3Miw3ICszNzIsNyBAQCBWVFRSZWdpb25MaXN0KiBUZXh0VHJhY2s6OnJl
Z2lvbnMoKQogICAgIC8vIHRoZSB0ZXh0IHRyYWNrIGxpc3Qgb2YgcmVnaW9ucyBvZiB0aGUgdGV4
dCB0cmFjay4gT3RoZXJ3aXNlLCBpdCBtdXN0CiAgICAgLy8gcmV0dXJuIG51bGwuIFdoZW4gYW4g
b2JqZWN0IGlzIHJldHVybmVkLCB0aGUgc2FtZSBvYmplY3QgbXVzdCBiZSByZXR1cm5lZAogICAg
IC8vIGVhY2ggdGltZS4KLSAgICBpZiAobV9tb2RlID09IFRleHRUcmFja01vZGU6OkRpc2FibGVk
KQorICAgIGlmIChtX21vZGUgPT0gTW9kZTo6RGlzYWJsZWQpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIHJldHVybiAmZW5zdXJlVlRUUmVnaW9uTGlzdCgpOwogfQpAQCAtNDY3LDggKzQ2
Nyw4IEBAIHZvaWQgVGV4dFRyYWNrOjppbnZhbGlkYXRlVHJhY2tJbmRleCgpCiAKIGJvb2wgVGV4
dFRyYWNrOjppc1JlbmRlcmVkKCkKIHsKLSAgICByZXR1cm4gKG1fa2luZCA9PSBUZXh0VHJhY2tL
aW5kOjpDYXB0aW9ucyB8fCBtX2tpbmQgPT0gVGV4dFRyYWNrS2luZDo6U3VidGl0bGVzIHx8IG1f
a2luZCA9PSBUZXh0VHJhY2tLaW5kOjpGb3JjZWQpCi0gICAgICAgICYmIG1fbW9kZSA9PSBUZXh0
VHJhY2tNb2RlOjpTaG93aW5nOworICAgIHJldHVybiAobV9raW5kID09IEtpbmQ6OkNhcHRpb25z
IHx8IG1fa2luZCA9PSBLaW5kOjpTdWJ0aXRsZXMgfHwgbV9raW5kID09IEtpbmQ6OkZvcmNlZCkK
KyAgICAgICAgJiYgbV9tb2RlID09IE1vZGU6OlNob3dpbmc7CiB9CiAKIFRleHRUcmFja0N1ZUxp
c3QmIFRleHRUcmFjazo6ZW5zdXJlVGV4dFRyYWNrQ3VlTGlzdCgpCkBAIC01NTMsMTIgKzU1Mywx
MiBAQCBib29sIFRleHRUcmFjazo6aXNNYWluUHJvZ3JhbUNvbnRlbnQoKSBjb25zdAogICAgIC8v
IGRpcmVjdG9ycyBjb21tZW50YXJ5IGlzIG5vdCAibWFpbiBwcm9ncmFtIiBiZWNhdXNlIGl0IGlz
IG5vdCBlc3NlbnRpYWwgZm9yIHRoZSBwcmVzZW50YXRpb24uIEhUTUw1IGRvZXNuJ3QgaGF2ZQog
ICAgIC8vIGEgd2F5IHRvIGV4cHJlc3MgdGhpcyBpbiBhIG1hY2hpbmUtcmVhYmxlIGZvcm0sIGl0
IGlzIHR5cGljYWxseSBkb25lIHdpdGggdGhlIHRyYWNrIGxhYmVsLCBzbyB3ZSBhc3N1bWUgdGhh
dCBjYXB0aW9uCiAgICAgLy8gdHJhY2tzIGFyZSBtYWluIGNvbnRlbnQgYW5kIGFsbCBvdGhlciB0
cmFjayB0eXBlcyBhcmUgbm90LgotICAgIHJldHVybiBtX2tpbmQgPT0gVGV4dFRyYWNrS2luZDo6
Q2FwdGlvbnM7CisgICAgcmV0dXJuIG1fa2luZCA9PSBLaW5kOjpDYXB0aW9uczsKIH0KIAogYm9v
bCBUZXh0VHJhY2s6OmNvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcygpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fa2luZCA9PSBUZXh0VHJhY2tLaW5kOjpGb3JjZWQ7CisgICAgcmV0dXJuIG1fa2lu
ZCA9PSBLaW5kOjpGb3JjZWQ7CiB9CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmgKaW5kZXggNWNiMjQ5MDUwZjhlMWI2Mzk1ODM5NzAw
NGYxNTY0MTcxMGRmZDZjMC4uNzgxOGQyMjQ3YWFkMTZhNTUzM2MzMzM2MzQwYmRkOGZhZWViZTg1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oCkBAIC00Miw5ICs0Miw2IEBA
IGNsYXNzIFRleHRUcmFja0N1ZUxpc3Q7CiBjbGFzcyBWVFRSZWdpb247CiBjbGFzcyBWVFRSZWdp
b25MaXN0OwogCi1lbnVtIGNsYXNzIFRleHRUcmFja0tpbmQgeyBTdWJ0aXRsZXMsIENhcHRpb25z
LCBEZXNjcmlwdGlvbnMsIENoYXB0ZXJzLCBNZXRhZGF0YSwgRm9yY2VkIH07Ci1lbnVtIGNsYXNz
IFRleHRUcmFja01vZGUgeyBEaXNhYmxlZCwgSGlkZGVuLCBTaG93aW5nIH07Ci0KIGNsYXNzIFRl
eHRUcmFja0NsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+VGV4dFRyYWNrQ2xpZW50KCkg
eyB9CkBAIC03NywxOSArNzQsMjEgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBBdG9taWNT
dHJpbmcmIGhpZGRlbktleXdvcmQoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBz
aG93aW5nS2V5d29yZCgpOwogCi0gICAgVGV4dFRyYWNrS2luZCBraW5kKCkgY29uc3Q7Ci0gICAg
dm9pZCBzZXRLaW5kKFRleHRUcmFja0tpbmQpOworICAgIGVudW0gY2xhc3MgS2luZCB7IFN1YnRp
dGxlcywgQ2FwdGlvbnMsIERlc2NyaXB0aW9ucywgQ2hhcHRlcnMsIE1ldGFkYXRhLCBGb3JjZWQg
fTsKKyAgICBLaW5kIGtpbmQoKSBjb25zdDsKKyAgICB2b2lkIHNldEtpbmQoS2luZCk7CiAKLSAg
ICBUZXh0VHJhY2tLaW5kIGtpbmRGb3JCaW5kaW5ncygpIGNvbnN0OwotICAgIHZvaWQgc2V0S2lu
ZEZvckJpbmRpbmdzKFRleHRUcmFja0tpbmQpOworICAgIEtpbmQga2luZEZvckJpbmRpbmdzKCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRLaW5kRm9yQmluZGluZ3MoS2luZCk7CiAKICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIGtpbmRLZXl3b3JkKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRLaW5kS2V5d29y
ZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcpOwogCiAgICAgdmlydHVhbCBBdG9taWNTdHJp
bmcgaW5CYW5kTWV0YWRhdGFUcmFja0Rpc3BhdGNoVHlwZSgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7IH0KIAotICAgIFRleHRUcmFja01vZGUgbW9kZSgpIGNvbnN0OwotICAgIHZpcnR1
YWwgdm9pZCBzZXRNb2RlKFRleHRUcmFja01vZGUpOworICAgIGVudW0gY2xhc3MgTW9kZSB7IERp
c2FibGVkLCBIaWRkZW4sIFNob3dpbmcgfTsKKyAgICBNb2RlIG1vZGUoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0TW9kZShNb2RlKTsKIAogICAgIGVudW0gUmVhZGluZXNzU3RhdGUgeyBO
b3RMb2FkZWQgPSAwLCBMb2FkaW5nID0gMSwgTG9hZGVkID0gMiwgRmFpbGVkVG9Mb2FkID0gMyB9
OwogICAgIFJlYWRpbmVzc1N0YXRlIHJlYWRpbmVzc1N0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9y
ZWFkaW5lc3NTdGF0ZTsgfQpAQCAtMTY0LDggKzE2Myw4IEBAIHByaXZhdGU6CiAgICAgVGV4dFRy
YWNrQ3VlTGlzdCYgZW5zdXJlVGV4dFRyYWNrQ3VlTGlzdCgpOwogCiAgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwotICAgIFRleHRUcmFja01vZGUg
bV9tb2RlIHsgVGV4dFRyYWNrTW9kZTo6RGlzYWJsZWQgfTsKLSAgICBUZXh0VHJhY2tLaW5kIG1f
a2luZCB7IFRleHRUcmFja0tpbmQ6OlN1YnRpdGxlcyB9OworICAgIE1vZGUgbV9tb2RlIHsgTW9k
ZTo6RGlzYWJsZWQgfTsKKyAgICBLaW5kIG1fa2luZCB7IEtpbmQ6OlN1YnRpdGxlcyB9OwogICAg
IFRleHRUcmFja0NsaWVudCogbV9jbGllbnQ7CiAgICAgVGV4dFRyYWNrVHlwZSBtX3RyYWNrVHlw
ZTsKICAgICBSZWFkaW5lc3NTdGF0ZSBtX3JlYWRpbmVzc1N0YXRlIHsgTm90TG9hZGVkIH07CkBA
IC0xODAsMjQgKzE3OSwyNCBAQCBpbmxpbmUgVGV4dFRyYWNrKiB0b1RleHRUcmFjayhUcmFja0Jh
c2UqIHRyYWNrKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxUZXh0VHJhY2sqPih0cmFjayk7CiB9
CiAKLWlubGluZSBUZXh0VHJhY2tNb2RlIFRleHRUcmFjazo6bW9kZSgpIGNvbnN0CitpbmxpbmUg
YXV0byBUZXh0VHJhY2s6Om1vZGUoKSBjb25zdCAtPiBNb2RlCiB7CiAgICAgcmV0dXJuIG1fbW9k
ZTsKIH0KIAotaW5saW5lIFRleHRUcmFja0tpbmQgVGV4dFRyYWNrOjpraW5kKCkgY29uc3QKK2lu
bGluZSBhdXRvIFRleHRUcmFjazo6a2luZCgpIGNvbnN0IC0+IEtpbmQKIHsKICAgICByZXR1cm4g
bV9raW5kOwogfQogCi1pbmxpbmUgVGV4dFRyYWNrS2luZCBUZXh0VHJhY2s6OmtpbmRGb3JCaW5k
aW5ncygpIGNvbnN0CitpbmxpbmUgYXV0byBUZXh0VHJhY2s6OmtpbmRGb3JCaW5kaW5ncygpIGNv
bnN0IC0+IEtpbmQKIHsKICAgICByZXR1cm4ga2luZCgpOwogfQogCiAjaWYgIUVOQUJMRShNRURJ
QV9TT1VSQ0UpCiAKLWlubGluZSB2b2lkIFRleHRUcmFjazo6c2V0S2luZEZvckJpbmRpbmdzKFRl
eHRUcmFja0tpbmQpCitpbmxpbmUgdm9pZCBUZXh0VHJhY2s6OnNldEtpbmRGb3JCaW5kaW5ncyhL
aW5kKQogewogICAgIC8vIEZJWE1FOiBXZSBhcmUgdXNpbmcga2luZEZvckJpbmRpbmdzIG9ubHkg
dG8gaW1wbGVtZW50IHRoaXMgZW1wdHkgZnVuY3Rpb24sIHByZXNlcnZpbmcgdGhlCiAgICAgLy8g
YmVoYXZpb3Igb2YgZG9pbmcgbm90aGluZyB3aGVuIHRyeWluZyB0byBzZXQgdGhlIGtpbmQsIG9y
aWdpbmFsbHkgaW1wbGVtZW50ZWQgaW4gYSBjdXN0b20gc2V0dGVyLgpAQCAtMjA2LDcgKzIwNSw3
IEBAIGlubGluZSB2b2lkIFRleHRUcmFjazo6c2V0S2luZEZvckJpbmRpbmdzKFRleHRUcmFja0tp
bmQpCiAKICNlbHNlCiAKLWlubGluZSB2b2lkIFRleHRUcmFjazo6c2V0S2luZEZvckJpbmRpbmdz
KFRleHRUcmFja0tpbmQga2luZCkKK2lubGluZSB2b2lkIFRleHRUcmFjazo6c2V0S2luZEZvckJp
bmRpbmdzKEtpbmQga2luZCkKIHsKICAgICBzZXRLaW5kKGtpbmQpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCmluZGV4IDQyNzM2ZmIzYjllNGQyZTMzOTA2
M2NmN2Q2OTcyNzZjMGYzMzE3ZDkuLmI3ZWUyMjVmNWYxOGQ2NmY1NjliZmFjYTgxYWExNmVkZjgw
OThhZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3Vl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKQEAg
LTE5Myw3ICsxOTMsNyBAQCB2b2lkIFRleHRUcmFja0N1ZTo6aW52YWxpZGF0ZUN1ZUluZGV4KCkK
IGJvb2wgVGV4dFRyYWNrQ3VlOjpkaXNwYXRjaEV2ZW50KEV2ZW50JiBldmVudCkKIHsKICAgICAv
LyBXaGVuIGEgVGV4dFRyYWNrJ3MgbW9kZSBpcyBkaXNhYmxlZDogbm8gY3VlcyBhcmUgYWN0aXZl
LCBubyBldmVudHMgZmlyZWQuCi0gICAgaWYgKCF0cmFjaygpIHx8IHRyYWNrKCktPm1vZGUoKSA9
PSBUZXh0VHJhY2tNb2RlOjpEaXNhYmxlZCkKKyAgICBpZiAoIXRyYWNrKCkgfHwgdHJhY2soKS0+
bW9kZSgpID09IFRleHRUcmFjazo6TW9kZTo6RGlzYWJsZWQpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIHJldHVybiBFdmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVudChldmVudCk7CkBAIC0y
MDEsNyArMjAxLDcgQEAgYm9vbCBUZXh0VHJhY2tDdWU6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2
ZW50KQogCiBib29sIFRleHRUcmFja0N1ZTo6aXNBY3RpdmUoKQogewotICAgIHJldHVybiBtX2lz
QWN0aXZlICYmIHRyYWNrKCkgJiYgdHJhY2soKS0+bW9kZSgpICE9IFRleHRUcmFja01vZGU6OkRp
c2FibGVkOworICAgIHJldHVybiBtX2lzQWN0aXZlICYmIHRyYWNrKCkgJiYgdHJhY2soKS0+bW9k
ZSgpICE9IFRleHRUcmFjazo6TW9kZTo6RGlzYWJsZWQ7CiB9CiAKIHZvaWQgVGV4dFRyYWNrQ3Vl
OjpzZXRJc0FjdGl2ZShib29sIGFjdGl2ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5oCmluZGV4IGZmNTFiM2JjZGI1YjJjODAzODIxYjc4OTY2MTY0
MjI1NDU5ZDIwOGMuLmQ4N2NmOWUxZmNjZTEwYzQyYzJkOWFmNTIzM2ZjNTdlZmIwNWU4ZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTmV0d29ya2luZ0NvbnRleHQuaApAQCAt
MzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogCi0gICAgICAgIHJldHVybiBtX2ZyYW1lLT5kb2N1bWVudCgpLT5yZWZl
cnJlclBvbGljeSgpID09IFJlZmVycmVySGVhZGVyUG9saWN5OjpEZWZhdWx0OworICAgICAgICBy
ZXR1cm4gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSA9PSBSZWZlcnJlclBv
bGljeTo6RGVmYXVsdDsKICAgICB9CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3BwCmluZGV4IDFkMDZjMmRkOTE1MjlmZWM5MGZk
MzA5MzIwNTBiOTJiMmQ2NmMyYTEuLjkzNWMxZmIwYTU2MDE0MzExZjIzNGY3OGNkYWI3MDRmYjky
NjNmOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJl
bmNlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2Vz
LmNwcApAQCAtMjE3LDcgKzIxNyw3IEBAIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPj4gQ2FwdGlv
blVzZXJQcmVmZXJlbmNlczo6c29ydGVkVHJhY2tMaXN0Rm9yTWVudShUZXh0VHJhCiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMCwgbGVuZ3RoID0gdHJhY2tMaXN0LT5sZW5ndGgoKTsgaSA8IGxlbmd0
aDsgKytpKSB7CiAgICAgICAgIFRleHRUcmFjayogdHJhY2sgPSB0cmFja0xpc3QtPml0ZW0oaSk7
CiAgICAgICAgIGF1dG8ga2luZCA9IHRyYWNrLT5raW5kKCk7Ci0gICAgICAgIGlmIChraW5kID09
IFRleHRUcmFja0tpbmQ6OkNhcHRpb25zIHx8IGtpbmQgPT0gVGV4dFRyYWNrS2luZDo6RGVzY3Jp
cHRpb25zIHx8IGtpbmQgPT0gVGV4dFRyYWNrS2luZDo6U3VidGl0bGVzKQorICAgICAgICBpZiAo
a2luZCA9PSBUZXh0VHJhY2s6OktpbmQ6OkNhcHRpb25zIHx8IGtpbmQgPT0gVGV4dFRyYWNrOjpL
aW5kOjpEZXNjcmlwdGlvbnMgfHwga2luZCA9PSBUZXh0VHJhY2s6OktpbmQ6OlN1YnRpdGxlcykK
ICAgICAgICAgICAgIHRyYWNrc0Zvck1lbnUuYXBwZW5kKHRyYWNrKTsKICAgICB9CiAKQEAgLTI2
NSw3ICsyNjUsNyBAQCBWZWN0b3I8UmVmUHRyPEF1ZGlvVHJhY2s+PiBDYXB0aW9uVXNlclByZWZl
cmVuY2VzOjpzb3J0ZWRUcmFja0xpc3RGb3JNZW51KEF1ZGlvVAogCiBpbnQgQ2FwdGlvblVzZXJQ
cmVmZXJlbmNlczo6dGV4dFRyYWNrU2VsZWN0aW9uU2NvcmUoVGV4dFRyYWNrKiB0cmFjaywgSFRN
TE1lZGlhRWxlbWVudCopIGNvbnN0CiB7Ci0gICAgaWYgKHRyYWNrLT5raW5kKCkgIT0gVGV4dFRy
YWNrS2luZDo6Q2FwdGlvbnMgJiYgdHJhY2stPmtpbmQoKSAhPSBUZXh0VHJhY2tLaW5kOjpTdWJ0
aXRsZXMpCisgICAgaWYgKHRyYWNrLT5raW5kKCkgIT0gVGV4dFRyYWNrOjpLaW5kOjpDYXB0aW9u
cyAmJiB0cmFjay0+a2luZCgpICE9IFRleHRUcmFjazo6S2luZDo6U3VidGl0bGVzKQogICAgICAg
ICByZXR1cm4gMDsKICAgICAKICAgICBpZiAoIXVzZXJQcmVmZXJzU3VidGl0bGVzKCkgJiYgIXVz
ZXJQcmVmZXJzQ2FwdGlvbnMoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2Fw
dGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0
aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5jcHAKaW5kZXggM2QxMTZmOWJjYWIyMmE3MTlkMmVi
YTY1YzI2MTRhZWMxOTAxZWRjNy4uOGJjMDI5ZGU3ZTM5Yjg5YzM1ODY3MmU2Y2M2MTIyZTNhNGFl
NWNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWVkaWFBRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZl
cmVuY2VzTWVkaWFBRi5jcHAKQEAgLTcxMCw3ICs3MTAsNyBAQCBpbnQgQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlc01lZGlhQUY6OnRleHRUcmFja1NlbGVjdGlvblNjb3JlKFRleHRUcmFjayogdHJhY2ss
IEhUTQogICAgIGJvb2wgbGVnYWN5T3ZlcnJpZGUgPSBtZWRpYUVsZW1lbnQtPndlYmtpdENsb3Nl
ZENhcHRpb25zVmlzaWJsZSgpOwogICAgIGlmIChkaXNwbGF5TW9kZSA9PSBBbHdheXNPbiAmJiAo
IXVzZXJQcmVmZXJzU3VidGl0bGVzKCkgJiYgIXVzZXJQcmVmZXJzQ2FwdGlvbnMoKSAmJiAhbGVn
YWN5T3ZlcnJpZGUpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAodHJhY2stPmtpbmQoKSAh
PSBUZXh0VHJhY2tLaW5kOjpDYXB0aW9ucyAmJiB0cmFjay0+a2luZCgpICE9IFRleHRUcmFja0tp
bmQ6OlN1YnRpdGxlcyAmJiB0cmFjay0+a2luZCgpICE9IFRleHRUcmFja0tpbmQ6OkZvcmNlZCkK
KyAgICBpZiAodHJhY2stPmtpbmQoKSAhPSBUZXh0VHJhY2s6OktpbmQ6OkNhcHRpb25zICYmIHRy
YWNrLT5raW5kKCkgIT0gVGV4dFRyYWNrOjpLaW5kOjpTdWJ0aXRsZXMgJiYgdHJhY2stPmtpbmQo
KSAhPSBUZXh0VHJhY2s6OktpbmQ6OkZvcmNlZCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYg
KCF0cmFjay0+aXNNYWluUHJvZ3JhbUNvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC03
NzEsNyArNzcxLDcgQEAgaW50IENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjp0ZXh0VHJh
Y2tTZWxlY3Rpb25TY29yZShUZXh0VHJhY2sqIHRyYWNrLCBIVE0KIAogICAgIGlmICh1c2VyUHJl
ZmVyc0NhcHRpb25zKCkpIHsKICAgICAgICAgLy8gV2hlbiB0aGUgdXNlciBwcmVmZXJzIGFjY2Vz
c2liaWxpdHkgdHJhY2tzLCByYW5rIGlzIFNESCwgdGhlbiBDQywgdGhlbiBzdWJ0aXRsZXMuCi0g
ICAgICAgIGlmICh0cmFjay0+a2luZCgpID09IFRleHRUcmFja0tpbmQ6OlN1YnRpdGxlcykKKyAg
ICAgICAgaWYgKHRyYWNrLT5raW5kKCkgPT0gVGV4dFRyYWNrOjpLaW5kOjpTdWJ0aXRsZXMpCiAg
ICAgICAgICAgICB0cmFja1Njb3JlID0gMTsKICAgICAgICAgZWxzZSBpZiAodHJhY2stPmlzQ2xv
c2VkQ2FwdGlvbnMoKSkKICAgICAgICAgICAgIHRyYWNrU2NvcmUgPSAyOwpAQCAtNzc5LDcgKzc3
OSw3IEBAIGludCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRjo6dGV4dFRyYWNrU2VsZWN0
aW9uU2NvcmUoVGV4dFRyYWNrKiB0cmFjaywgSFRNCiAgICAgICAgICAgICB0cmFja1Njb3JlID0g
MzsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBXaGVuIHRoZSB1c2VyIHByZWZlcnMgdHJhbnNs
YXRpb24gdHJhY2tzLCByYW5rIGlzIHN1YnRpdGxlcywgdGhlbiBTREgsIHRoZW4gQ0MgdHJhY2tz
LgotICAgICAgICBpZiAodHJhY2stPmtpbmQoKSA9PSBUZXh0VHJhY2tLaW5kOjpTdWJ0aXRsZXMp
CisgICAgICAgIGlmICh0cmFjay0+a2luZCgpID09IFRleHRUcmFjazo6S2luZDo6U3VidGl0bGVz
KQogICAgICAgICAgICAgdHJhY2tTY29yZSA9IDM7CiAgICAgICAgIGVsc2UgaWYgKCF0cmFjay0+
aXNDbG9zZWRDYXB0aW9ucygpKQogICAgICAgICAgICAgdHJhY2tTY29yZSA9IDI7CkBAIC04NjUs
NyArODY1LDcgQEAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+PiBDYXB0aW9uVXNlclByZWZlcmVu
Y2VzTWVkaWFBRjo6c29ydGVkVHJhY2tMaXN0Rm9yTWVudSgKICAgICAgICAgfQogCiAgICAgICAg
IGF1dG8ga2luZCA9IHRyYWNrLT5raW5kKCk7Ci0gICAgICAgIGlmIChraW5kICE9IFRleHRUcmFj
a0tpbmQ6OkNhcHRpb25zICYmIGtpbmQgIT0gVGV4dFRyYWNrS2luZDo6RGVzY3JpcHRpb25zICYm
IGtpbmQgIT0gVGV4dFRyYWNrS2luZDo6U3VidGl0bGVzKQorICAgICAgICBpZiAoa2luZCAhPSBU
ZXh0VHJhY2s6OktpbmQ6OkNhcHRpb25zICYmIGtpbmQgIT0gVGV4dFRyYWNrOjpLaW5kOjpEZXNj
cmlwdGlvbnMgJiYga2luZCAhPSBUZXh0VHJhY2s6OktpbmQ6OlN1YnRpdGxlcykKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmICh0cmFjay0+Y29udGFpbnNPbmx5Rm9yY2VkU3Vi
dGl0bGVzKCkpIHsKQEAgLTg4MSw3ICs4ODEsNyBAQCBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4+
IENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpzb3J0ZWRUcmFja0xpc3RGb3JNZW51KAog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAodHJhY2stPm1v
ZGUoKSA9PSBUZXh0VHJhY2tNb2RlOjpTaG93aW5nKSB7CisgICAgICAgIGlmICh0cmFjay0+bW9k
ZSgpID09IFRleHRUcmFjazo6TW9kZTo6U2hvd2luZykgewogICAgICAgICAgICAgTE9HKE1lZGlh
LCAiQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUY6OnNvcnRlZFRyYWNrTGlzdEZvck1lbnUg
LSBhZGRpbmcgJyVzJyB0cmFjayB3aXRoIGxhbmd1YWdlICclcycgYmVjYXVzZSBpdCBpcyBhbHJl
YWR5IHZpc2libGUiLCB0cmFjay0+a2luZEtleXdvcmQoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
LCBsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIGlmICghbGFuZ3VhZ2UuaXNF
bXB0eSgpKQogICAgICAgICAgICAgICAgIGxhbmd1YWdlc0luY2x1ZGVkLmFkZChsYW5ndWFnZSk7
CkBAIC04OTAsNyArODkwLDcgQEAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+PiBDYXB0aW9uVXNl
clByZWZlcmVuY2VzTWVkaWFBRjo6c29ydGVkVHJhY2tMaXN0Rm9yTWVudSgKICAgICAgICAgfQog
CiAgICAgICAgIGlmICghbGFuZ3VhZ2UuaXNFbXB0eSgpICYmIHRyYWNrLT5pc01haW5Qcm9ncmFt
Q29udGVudCgpKSB7Ci0gICAgICAgICAgICBib29sIGlzQWNjZXNzaWJpbGl0eVRyYWNrID0gdHJh
Y2stPmtpbmQoKSA9PSBUZXh0VHJhY2tLaW5kOjpDYXB0aW9uczsKKyAgICAgICAgICAgIGJvb2wg
aXNBY2Nlc3NpYmlsaXR5VHJhY2sgPSB0cmFjay0+a2luZCgpID09IFRleHRUcmFjazo6S2luZDo6
Q2FwdGlvbnM7CiAgICAgICAgICAgICBpZiAocHJlZmVyc0FjY2Vzc2liaWxpdHlUcmFja3MpIHsK
ICAgICAgICAgICAgICAgICAvLyBJbiB0aGUgZmlyc3QgcGFzcywgaW5jbHVkZSBvbmx5IGNhcHRp
b24gdHJhY2tzIGlmIHRoZSB1c2VyIHByZWZlcnMgYWNjZXNzaWJpbGl0eSB0cmFja3MuCiAgICAg
ICAgICAgICAgICAgaWYgKCFpc0FjY2Vzc2liaWxpdHlUcmFjayAmJiBmaWx0ZXJUcmFja0xpc3Qp
IHsKQEAgLTkyNiw3ICs5MjYsNyBAQCBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4+IENhcHRpb25V
c2VyUHJlZmVyZW5jZXNNZWRpYUFGOjpzb3J0ZWRUcmFja0xpc3RGb3JNZW51KAogICAgICAgICAg
ICAgY29udGludWU7CiAKICAgICAgICAgYXV0byBraW5kID0gdHJhY2stPmtpbmQoKTsKLSAgICAg
ICAgaWYgKGtpbmQgIT0gVGV4dFRyYWNrS2luZDo6Q2FwdGlvbnMgJiYga2luZCAhPSBUZXh0VHJh
Y2tLaW5kOjpEZXNjcmlwdGlvbnMgJiYga2luZCAhPSBUZXh0VHJhY2tLaW5kOjpTdWJ0aXRsZXMp
CisgICAgICAgIGlmIChraW5kICE9IFRleHRUcmFjazo6S2luZDo6Q2FwdGlvbnMgJiYga2luZCAh
PSBUZXh0VHJhY2s6OktpbmQ6OkRlc2NyaXB0aW9ucyAmJiBraW5kICE9IFRleHRUcmFjazo6S2lu
ZDo6U3VidGl0bGVzKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgLy8gQWxsIGNh
bmRpZGF0ZXMgd2l0aCBubyBsYW5ndWdlIHdlcmUgYWRkZWQgdGhlIGZpcnN0IHRpbWUgdGhyb3Vn
aC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKaW5kZXggMjNkY2YxMWNiZWM3
ZWFjM2U2NWQ3NjNiNDEyNWRiYTEyOTUxZDVmOC4uNWRiMjczZDJkYmUwNzEwYTg2MTE4ZTdjZWI0
Mzg5YjUzNGZmYjZhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBv
bGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKQEAg
LTY2LDcgKzY2LDcgQEAgYm9vbCBTZWN1cml0eVBvbGljeTo6c2hvdWxkSGlkZVJlZmVycmVyKGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQogICAgIHJldHVybiAhVVJMSXNT
ZWN1cmVVUkw7CiB9CiAKLVN0cmluZyBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhl
YWRlcihSZWZlcnJlckhlYWRlclBvbGljeSByZWZlcnJlclBvbGljeSwgY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpCitTdHJpbmcgU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRl
UmVmZXJyZXJIZWFkZXIoUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3ksIGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQogewogICAgIGlmIChyZWZlcnJlci5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTc1LDExICs3NSwxMSBAQCBTdHJpbmcg
U2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIoUmVmZXJyZXJIZWFkZXJQb2xp
Y3kgcmVmZXJyZXJQb2xpYwogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBzd2l0Y2gg
KHJlZmVycmVyUG9saWN5KSB7Ci0gICAgY2FzZSBSZWZlcnJlckhlYWRlclBvbGljeTo6TmV2ZXI6
CisgICAgY2FzZSBSZWZlcnJlclBvbGljeTo6TmV2ZXI6CiAgICAgICAgIHJldHVybiBTdHJpbmco
KTsKLSAgICBjYXNlIFJlZmVycmVySGVhZGVyUG9saWN5OjpBbHdheXM6CisgICAgY2FzZSBSZWZl
cnJlclBvbGljeTo6QWx3YXlzOgogICAgICAgICByZXR1cm4gcmVmZXJyZXI7Ci0gICAgY2FzZSBS
ZWZlcnJlckhlYWRlclBvbGljeTo6T3JpZ2luOiB7CisgICAgY2FzZSBSZWZlcnJlclBvbGljeTo6
T3JpZ2luOiB7CiAgICAgICAgIFN0cmluZyBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
RnJvbVN0cmluZyhyZWZlcnJlciktPnRvU3RyaW5nKCk7CiAgICAgICAgIGlmIChvcmlnaW4gPT0g
Im51bGwiKQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAtODcsNyArODcsNyBAQCBT
dHJpbmcgU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIoUmVmZXJyZXJIZWFk
ZXJQb2xpY3kgcmVmZXJyZXJQb2xpYwogICAgICAgICAvLyB0byB0dXJuIGl0IGludG8gYSBjYW5v
bmljYWwgVVJMIHdlIGNhbiB1c2UgYXMgcmVmZXJyZXIuCiAgICAgICAgIHJldHVybiBvcmlnaW4g
KyAiLyI7CiAgICAgfQotICAgIGNhc2UgUmVmZXJyZXJIZWFkZXJQb2xpY3k6OkRlZmF1bHQ6Cisg
ICAgY2FzZSBSZWZlcnJlclBvbGljeTo6RGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmgKaW5kZXggYWI2ZTY4ZjBjNTg3NzE5M2Yy
MDVlYzQ5NDdhMzcxMDQzZmIwMTY4NS4uNmM4MThmZDYyMGJhNTUxOTgwY2EwZTVkYmM1NjVmYmM1
ODkwNDFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuaApAQCAtMzgsMTQgKzM4
LDE0IEBAIGNsYXNzIFVSTDsKIAogY2xhc3MgU2VjdXJpdHlQb2xpY3kgewogcHVibGljOgotICAg
IC8vIFRydWUgaWYgdGhlIHJlZmVycmVyIHNob3VsZCBiZSBvbWl0dGVkIGFjY29yZGluZyB0byBS
ZWZlcnJlckhlYWRlclBvbGljeTo6RGVmYXVsdC4KKyAgICAvLyBUcnVlIGlmIHRoZSByZWZlcnJl
ciBzaG91bGQgYmUgb21pdHRlZCBhY2NvcmRpbmcgdG8gUmVmZXJyZXJQb2xpY3k6OkRlZmF1bHQu
CiAgICAgLy8gSWYgeW91IGludGVuZCB0byBzZW5kIGEgcmVmZXJyZXIgaGVhZGVyLCB5b3Ugc2hv
dWxkIHVzZSBnZW5lcmF0ZVJlZmVycmVySGVhZGVyIGluc3RlYWQuCiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIGJvb2wgc2hvdWxkSGlkZVJlZmVycmVyKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYgcmVmZXJyZXIpOwogCiAgICAgLy8gUmV0dXJucyB0aGUgcmVmZXJyZXIgbW9kaWZpZWQgYWNj
b3JkaW5nIHRvIHRoZSByZWZlcnJlciBwb2xpY3kgZm9yIGEKICAgICAvLyBuYXZpZ2F0aW9uIHRv
IGEgZ2l2ZW4gVVJMLiBJZiB0aGUgcmVmZXJyZXIgcmV0dXJuZWQgaXMgZW1wdHksIHRoZQogICAg
IC8vIHJlZmVycmVyIGhlYWRlciBzaG91bGQgYmUgb21pdHRlZC4KLSAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgU3RyaW5nIGdlbmVyYXRlUmVmZXJyZXJIZWFkZXIoUmVmZXJyZXJIZWFkZXJQb2xp
Y3ksIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBTdHJpbmcgZ2VuZXJhdGVSZWZlcnJlckhlYWRlcihSZWZlcnJlclBvbGljeSwg
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlcik7CiAKICAgICBlbnVtIExvY2FsTG9h
ZFBvbGljeSB7CiAgICAgICAgIEFsbG93TG9jYWxMb2Fkc0ZvckFsbCwgLy8gTm8gcmVzdHJpY3Rp
b24gb24gbG9jYWwgbG9hZHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9S
ZWZlcnJlclBvbGljeS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVmZXJyZXJQb2xpY3ku
aAppbmRleCBlNTFjNTgwNDdiNjIxZDRmZjdjMDdiMTFkNDA2ODkyY2I0ZWY1YjIwLi44NzBjMTY5
ODdjMzI2ZGFlMDc4NThmZDliZWI5NzRiNGY0N2JlODE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9SZWZlcnJlclBvbGljeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1JlZmVycmVyUG9saWN5LmgKQEAgLTM3LDkgKzM3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogLy8gRklYTUU6IE1vdmUgdGhpcyB3b3JrYXJvdW5kIHRvIGEgZ2xvYmFsIGxvY2F0aW9uLCBw
ZXJoYXBzIGNvbmZpZy5oOyBtYXliZSBhIEdUSy1zcGVjaWZpYyBsb2NhdGlvbi4KICN1bmRlZiBB
bHdheXMKIAotLy8gRklYTUU6IE1lcmdlIHRoaXMgd2l0aCB0aGUgUmVmZXJyZXJQb2xpY3kgZGVm
aW5lZCBpbiB0aGUgRmV0Y2ggc3BlY2lmaWNhdGlvbi4KLS8vIEZJWE1FOiBSZW5hbWUgYmFjayB0
byBSZWZlcnJlclBvbGljeSBldmVuIGJlZm9yZSB0aGF0LCBpZiB3ZSBmaW5kIGEgd2F5LgotZW51
bSBjbGFzcyBSZWZlcnJlckhlYWRlclBvbGljeSB7CisvLyBGSVhNRTogTWVyZ2UgdGhpcyB3aXRo
IEZldGNoT3B0aW9uczo6UmVmZXJyZXJQb2xpY3ksIHdoaWNoIGlzIHRoZSBvbmUgZGVmaW5lZCBp
biB0aGUgRmV0Y2ggc3BlY2lmaWNhdGlvbi4KK2VudW0gY2xhc3MgUmVmZXJyZXJQb2xpY3kgewog
ICAgIEFsd2F5cywKICAgICBEZWZhdWx0LAogICAgIE5ldmVyLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1l
bnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25N
b2RlbE1lZGlhRWxlbWVudC5tbQppbmRleCA3NTRlYjFlM2Q3NDA1Mjg2NjcwNDIzN2EwMjhkNjY2
NjVhZTEzMWE5Li4wMjk5ZTdhMzIyOWEzZDFiZjA3NzkyN2M2YzI1MTJkMDQ3MjZjZmY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25N
b2RlbE1lZGlhRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9X
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbQpAQCAtMTU4LDkgKzE1OCw5IEBA
IHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUZvckV2ZW50
TmFtZShjb25zdCBXVEY6OkF0b21pY1N0CiAKICAgICAgICAgaWYgKG1fbWVkaWFFbGVtZW50LT5t
ZWRpYUNvbnRyb2xzSG9zdCgpKSB7CiAgICAgICAgICAgICBhdXRvIHR5cGUgPSBtX21lZGlhRWxl
bWVudC0+bWVkaWFDb250cm9sc0hvc3QoKS0+ZXh0ZXJuYWxEZXZpY2VUeXBlKCk7Ci0gICAgICAg
ICAgICBpZiAodHlwZSA9PSBEZXZpY2VUeXBlOjpBaXJwbGF5KQorICAgICAgICAgICAgaWYgKHR5
cGUgPT0gTWVkaWFDb250cm9sc0hvc3Q6OkRldmljZVR5cGU6OkFpcnBsYXkpCiAgICAgICAgICAg
ICAgICAgdGFyZ2V0VHlwZSA9IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTo6VGFyZ2V0VHlw
ZUFpclBsYXk7Ci0gICAgICAgICAgICBlbHNlIGlmICh0eXBlID09IERldmljZVR5cGU6OlR2b3V0
KQorICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBNZWRpYUNvbnRyb2xzSG9zdDo6RGV2aWNl
VHlwZTo6VHZvdXQpCiAgICAgICAgICAgICAgICAgdGFyZ2V0VHlwZSA9IFdlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZTo6VGFyZ2V0VHlwZVRWT3V0OwogICAgICAgICAgICAgbG9jYWxpemVkRGV2
aWNlTmFtZSA9IG1fbWVkaWFFbGVtZW50LT5tZWRpYUNvbnRyb2xzSG9zdCgpLT5leHRlcm5hbERl
dmljZURpc3BsYXlOYW1lKCk7CiAgICAgICAgIH0KQEAgLTMwMyw3ICszMDMsNyBAQCB2b2lkIFdl
YlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Ojp1cGRhdGVMZWdpYmxlT3B0aW9ucygp
CiAgICAgICAgICAgICB0cmFja01lbnVJdGVtU2VsZWN0ZWQgPSB0cnVlOwogICAgICAgICB9CiAK
LSAgICAgICAgaWYgKGRpc3BsYXlNb2RlICE9IE1lZGlhQ29udHJvbHNIb3N0OjphdXRvbWF0aWNL
ZXl3b3JkKCkgJiYgdHJhY2stPm1vZGUoKSA9PSBUZXh0VHJhY2tNb2RlOjpTaG93aW5nKSB7Cisg
ICAgICAgIGlmIChkaXNwbGF5TW9kZSAhPSBNZWRpYUNvbnRyb2xzSG9zdDo6YXV0b21hdGljS2V5
d29yZCgpICYmIHRyYWNrLT5tb2RlKCkgPT0gVGV4dFRyYWNrOjpNb2RlOjpTaG93aW5nKSB7CiAg
ICAgICAgICAgICBzZWxlY3RlZEluZGV4ID0gaW5kZXg7CiAgICAgICAgICAgICB0cmFja01lbnVJ
dGVtU2VsZWN0ZWQgPSB0cnVlOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKaW5kZXggODBmNTk0Y2I0NjhhNjhiYTIyM2Y0ZmUwOWViZDgyNzJiMTYyMjMzNC4uNTZm
ZGE2OTQzMDc0YTQyZmIwODM1NjIyOWQ5NmUxNTYwZDI2ZWYwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcApAQCAtNTYzLDIzICs1NjMsMjMgQEAgYm9vbCBJbnRlcm5hbHM6Omlz
U3R5bGVTaGVldExvYWRpbmdTdWJyZXNvdXJjZXMoSFRNTExpbmtFbGVtZW50JiBsaW5rKQogICAg
IHJldHVybiBsaW5rLnNoZWV0KCkgJiYgbGluay5zaGVldCgpLT5jb250ZW50cygpLmlzTG9hZGlu
Z1N1YnJlc291cmNlcygpOwogfQogCi1zdGF0aWMgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kg
dG9SZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeShJbnRlcm5hbHNDYWNoZVBvbGljeSBwb2xpY3kp
CitzdGF0aWMgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgdG9SZXNvdXJjZVJlcXVlc3RDYWNo
ZVBvbGljeShJbnRlcm5hbHM6OkNhY2hlUG9saWN5IHBvbGljeSkKIHsKICAgICBzd2l0Y2ggKHBv
bGljeSkgewotICAgIGNhc2UgSW50ZXJuYWxzQ2FjaGVQb2xpY3k6OlVzZVByb3RvY29sQ2FjaGVQ
b2xpY3k6CisgICAgY2FzZSBJbnRlcm5hbHM6OkNhY2hlUG9saWN5OjpVc2VQcm90b2NvbENhY2hl
UG9saWN5OgogICAgICAgICByZXR1cm4gVXNlUHJvdG9jb2xDYWNoZVBvbGljeTsKLSAgICBjYXNl
IEludGVybmFsc0NhY2hlUG9saWN5OjpSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YToKKyAgICBjYXNl
IEludGVybmFsczo6Q2FjaGVQb2xpY3k6OlJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhOgogICAgICAg
ICByZXR1cm4gUmVsb2FkSWdub3JpbmdDYWNoZURhdGE7Ci0gICAgY2FzZSBJbnRlcm5hbHNDYWNo
ZVBvbGljeTo6UmV0dXJuQ2FjaGVEYXRhRWxzZUxvYWQ6CisgICAgY2FzZSBJbnRlcm5hbHM6OkNh
Y2hlUG9saWN5OjpSZXR1cm5DYWNoZURhdGFFbHNlTG9hZDoKICAgICAgICAgcmV0dXJuIFJldHVy
bkNhY2hlRGF0YUVsc2VMb2FkOwotICAgIGNhc2UgSW50ZXJuYWxzQ2FjaGVQb2xpY3k6OlJldHVy
bkNhY2hlRGF0YURvbnRMb2FkOgorICAgIGNhc2UgSW50ZXJuYWxzOjpDYWNoZVBvbGljeTo6UmV0
dXJuQ2FjaGVEYXRhRG9udExvYWQ6CiAgICAgICAgIHJldHVybiBSZXR1cm5DYWNoZURhdGFEb250
TG9hZDsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIFVzZVBy
b3RvY29sQ2FjaGVQb2xpY3k7CiB9CiAKLXZvaWQgSW50ZXJuYWxzOjpzZXRPdmVycmlkZUNhY2hl
UG9saWN5KEludGVybmFsc0NhY2hlUG9saWN5IHBvbGljeSkKK3ZvaWQgSW50ZXJuYWxzOjpzZXRP
dmVycmlkZUNhY2hlUG9saWN5KENhY2hlUG9saWN5IHBvbGljeSkKIHsKICAgICBmcmFtZSgpLT5s
b2FkZXIoKS5zZXRPdmVycmlkZUNhY2hlUG9saWN5Rm9yVGVzdGluZyh0b1Jlc291cmNlUmVxdWVz
dENhY2hlUG9saWN5KHBvbGljeSkpOwogfQpAQCAtNTk0LDI1ICs1OTQsMjUgQEAgdm9pZCBJbnRl
cm5hbHM6OnNldENhblNob3dNb2RhbERpYWxvZ092ZXJyaWRlKGJvb2wgYWxsb3csIEV4Y2VwdGlv
bkNvZGUmIGVjKQogICAgIGNvbnRleHREb2N1bWVudCgpLT5kb21XaW5kb3coKS0+c2V0Q2FuU2hv
d01vZGFsRGlhbG9nT3ZlcnJpZGUoYWxsb3cpOwogfQogCi1zdGF0aWMgUmVzb3VyY2VMb2FkUHJp
b3JpdHkgdG9SZXNvdXJjZUxvYWRQcmlvcml0eShJbnRlcm5hbHNSZXNvdXJjZUxvYWRQcmlvcml0
eSBwcmlvcml0eSkKK3N0YXRpYyBSZXNvdXJjZUxvYWRQcmlvcml0eSB0b1Jlc291cmNlTG9hZFBy
aW9yaXR5KEludGVybmFsczo6UmVzb3VyY2VMb2FkUHJpb3JpdHkgcHJpb3JpdHkpCiB7CiAgICAg
c3dpdGNoIChwcmlvcml0eSkgewotICAgIGNhc2UgSW50ZXJuYWxzUmVzb3VyY2VMb2FkUHJpb3Jp
dHk6OlJlc291cmNlTG9hZFByaW9yaXR5VmVyeUxvdzoKKyAgICBjYXNlIEludGVybmFsczo6UmVz
b3VyY2VMb2FkUHJpb3JpdHk6OlJlc291cmNlTG9hZFByaW9yaXR5VmVyeUxvdzoKICAgICAgICAg
cmV0dXJuIFJlc291cmNlTG9hZFByaW9yaXR5OjpWZXJ5TG93OwotICAgIGNhc2UgSW50ZXJuYWxz
UmVzb3VyY2VMb2FkUHJpb3JpdHk6OlJlc291cmNlTG9hZFByaW9yaXR5TG93OgorICAgIGNhc2Ug
SW50ZXJuYWxzOjpSZXNvdXJjZUxvYWRQcmlvcml0eTo6UmVzb3VyY2VMb2FkUHJpb3JpdHlMb3c6
CiAgICAgICAgIHJldHVybiBSZXNvdXJjZUxvYWRQcmlvcml0eTo6TG93OwotICAgIGNhc2UgSW50
ZXJuYWxzUmVzb3VyY2VMb2FkUHJpb3JpdHk6OlJlc291cmNlTG9hZFByaW9yaXR5TWVkaXVtOgor
ICAgIGNhc2UgSW50ZXJuYWxzOjpSZXNvdXJjZUxvYWRQcmlvcml0eTo6UmVzb3VyY2VMb2FkUHJp
b3JpdHlNZWRpdW06CiAgICAgICAgIHJldHVybiBSZXNvdXJjZUxvYWRQcmlvcml0eTo6TWVkaXVt
OwotICAgIGNhc2UgSW50ZXJuYWxzUmVzb3VyY2VMb2FkUHJpb3JpdHk6OlJlc291cmNlTG9hZFBy
aW9yaXR5SGlnaDoKKyAgICBjYXNlIEludGVybmFsczo6UmVzb3VyY2VMb2FkUHJpb3JpdHk6OlJl
c291cmNlTG9hZFByaW9yaXR5SGlnaDoKICAgICAgICAgcmV0dXJuIFJlc291cmNlTG9hZFByaW9y
aXR5OjpIaWdoOwotICAgIGNhc2UgSW50ZXJuYWxzUmVzb3VyY2VMb2FkUHJpb3JpdHk6OlJlc291
cmNlTG9hZFByaW9yaXR5VmVyeUhpZ2g6CisgICAgY2FzZSBJbnRlcm5hbHM6OlJlc291cmNlTG9h
ZFByaW9yaXR5OjpSZXNvdXJjZUxvYWRQcmlvcml0eVZlcnlIaWdoOgogICAgICAgICByZXR1cm4g
UmVzb3VyY2VMb2FkUHJpb3JpdHk6OlZlcnlIaWdoOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICByZXR1cm4gUmVzb3VyY2VMb2FkUHJpb3JpdHk6OkxvdzsKIH0KIAotdm9p
ZCBJbnRlcm5hbHM6OnNldE92ZXJyaWRlUmVzb3VyY2VMb2FkUHJpb3JpdHkoSW50ZXJuYWxzUmVz
b3VyY2VMb2FkUHJpb3JpdHkgcHJpb3JpdHkpCit2b2lkIEludGVybmFsczo6c2V0T3ZlcnJpZGVS
ZXNvdXJjZUxvYWRQcmlvcml0eShSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSkKIHsKICAg
ICBmcmFtZSgpLT5sb2FkZXIoKS5zZXRPdmVycmlkZVJlc291cmNlTG9hZFByaW9yaXR5Rm9yVGVz
dGluZyh0b1Jlc291cmNlTG9hZFByaW9yaXR5KHByaW9yaXR5KSk7CiB9CkBAIC0xMjE4LDIxICsx
MjE4LDIxIEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRBdXRvZmlsbGVkKEhUTUxJbnB1dEVsZW1lbnQm
IGVsZW1lbnQsIGJvb2wgZW5hYmxlZCkKICAgICBlbGVtZW50LnNldEF1dG9GaWxsZWQoZW5hYmxl
ZCk7CiB9CiAKLXN0YXRpYyBBdXRvRmlsbEJ1dHRvblR5cGUgdG9BdXRvRmlsbEJ1dHRvblR5cGUo
SW50ZXJuYWxzQXV0b0ZpbGxCdXR0b25UeXBlIHR5cGUpCitzdGF0aWMgQXV0b0ZpbGxCdXR0b25U
eXBlIHRvQXV0b0ZpbGxCdXR0b25UeXBlKEludGVybmFsczo6QXV0b0ZpbGxCdXR0b25UeXBlIHR5
cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBJbnRlcm5hbHNBdXRvRmlsbEJ1
dHRvblR5cGU6OkF1dG9GaWxsQnV0dG9uVHlwZU5vbmU6CisgICAgY2FzZSBJbnRlcm5hbHM6OkF1
dG9GaWxsQnV0dG9uVHlwZTo6QXV0b0ZpbGxCdXR0b25UeXBlTm9uZToKICAgICAgICAgcmV0dXJu
IEF1dG9GaWxsQnV0dG9uVHlwZTo6Tm9uZTsKLSAgICBjYXNlIEludGVybmFsc0F1dG9GaWxsQnV0
dG9uVHlwZTo6QXV0b0ZpbGxCdXR0b25UeXBlQ3JlZGVudGlhbHM6CisgICAgY2FzZSBJbnRlcm5h
bHM6OkF1dG9GaWxsQnV0dG9uVHlwZTo6QXV0b0ZpbGxCdXR0b25UeXBlQ3JlZGVudGlhbHM6CiAg
ICAgICAgIHJldHVybiBBdXRvRmlsbEJ1dHRvblR5cGU6OkNyZWRlbnRpYWxzOwotICAgIGNhc2Ug
SW50ZXJuYWxzQXV0b0ZpbGxCdXR0b25UeXBlOjpBdXRvRmlsbEJ1dHRvblR5cGVDb250YWN0czoK
KyAgICBjYXNlIEludGVybmFsczo6QXV0b0ZpbGxCdXR0b25UeXBlOjpBdXRvRmlsbEJ1dHRvblR5
cGVDb250YWN0czoKICAgICAgICAgcmV0dXJuIEF1dG9GaWxsQnV0dG9uVHlwZTo6Q29udGFjdHM7
CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBBdXRvRmlsbEJ1
dHRvblR5cGU6Ok5vbmU7CiB9CiAKLXZvaWQgSW50ZXJuYWxzOjpzZXRTaG93QXV0b0ZpbGxCdXR0
b24oSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCwgSW50ZXJuYWxzQXV0b0ZpbGxCdXR0b25UeXBl
IHR5cGUpCit2b2lkIEludGVybmFsczo6c2V0U2hvd0F1dG9GaWxsQnV0dG9uKEhUTUxJbnB1dEVs
ZW1lbnQmIGVsZW1lbnQsIEF1dG9GaWxsQnV0dG9uVHlwZSB0eXBlKQogewogICAgIGVsZW1lbnQu
c2V0U2hvd0F1dG9GaWxsQnV0dG9uKHRvQXV0b0ZpbGxCdXR0b25UeXBlKHR5cGUpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDM5MDY3ZWYyNDU2NTE3ODc2YjdhMGU4ZDcz
MTljOTYzMDc4YjUwOGIuLjExZjhjODhiZDliZTUzOTMyNmNjNzVkZGE4ODgyYTFmMjdlZDIxZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtNzAsMTIgKzcwLDYgQEAgY2xhc3Mg
WE1MSHR0cFJlcXVlc3Q7CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKLWVudW0gY2xh
c3MgSW50ZXJuYWxzQXV0b0ZpbGxCdXR0b25UeXBlIHsgQXV0b0ZpbGxCdXR0b25UeXBlTm9uZSwg
QXV0b0ZpbGxCdXR0b25UeXBlQ29udGFjdHMsIEF1dG9GaWxsQnV0dG9uVHlwZUNyZWRlbnRpYWxz
IH07Ci1lbnVtIGNsYXNzIEludGVybmFsc0NhY2hlUG9saWN5IHsgVXNlUHJvdG9jb2xDYWNoZVBv
bGljeSwgUmVsb2FkSWdub3JpbmdDYWNoZURhdGEsIFJldHVybkNhY2hlRGF0YUVsc2VMb2FkLCBS
ZXR1cm5DYWNoZURhdGFEb250TG9hZCB9OwotZW51bSBjbGFzcyBJbnRlcm5hbHNSZXNvdXJjZUxv
YWRQcmlvcml0eSB7IFJlc291cmNlTG9hZFByaW9yaXR5VmVyeUxvdywgUmVzb3VyY2VMb2FkUHJp
b3JpdHlMb3csIFJlc291cmNlTG9hZFByaW9yaXR5TWVkaXVtLCBSZXNvdXJjZUxvYWRQcmlvcml0
eUhpZ2gsIFJlc291cmNlTG9hZFByaW9yaXR5VmVyeUhpZ2ggfTsKLWVudW0gY2xhc3MgTWVkaWFD
b250cm9sRXZlbnQgeyBQbGF5UGF1c2UsIE5leHRUcmFjaywgUHJldmlvdXNUcmFjayB9OwotZW51
bSBjbGFzcyBQYWdlT3ZlcmxheVR5cGUgeyBWaWV3LCBEb2N1bWVudCB9OwotCiBjbGFzcyBJbnRl
cm5hbHMgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxJbnRlcm5hbHM+LCBwcml2YXRlIENvbnRl
eHREZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEludGVybmFs
cz4gY3JlYXRlKERvY3VtZW50Jik7CkBAIC05Niw5ICs5MCwxMSBAQCBwdWJsaWM6CiAgICAgU3Ry
aW5nIHhoclJlc3BvbnNlU291cmNlKFhNTEh0dHBSZXF1ZXN0Jik7CiAgICAgYm9vbCBpc1NoYXJp
bmdTdHlsZVNoZWV0Q29udGVudHMoSFRNTExpbmtFbGVtZW50JiwgSFRNTExpbmtFbGVtZW50Jik7
CiAgICAgYm9vbCBpc1N0eWxlU2hlZXRMb2FkaW5nU3VicmVzb3VyY2VzKEhUTUxMaW5rRWxlbWVu
dCYpOwotICAgIHZvaWQgc2V0T3ZlcnJpZGVDYWNoZVBvbGljeShJbnRlcm5hbHNDYWNoZVBvbGlj
eSk7CisgICAgZW51bSBjbGFzcyBDYWNoZVBvbGljeSB7IFVzZVByb3RvY29sQ2FjaGVQb2xpY3ks
IFJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhLCBSZXR1cm5DYWNoZURhdGFFbHNlTG9hZCwgUmV0dXJu
Q2FjaGVEYXRhRG9udExvYWQgfTsKKyAgICB2b2lkIHNldE92ZXJyaWRlQ2FjaGVQb2xpY3koQ2Fj
aGVQb2xpY3kpOwogICAgIHZvaWQgc2V0Q2FuU2hvd01vZGFsRGlhbG9nT3ZlcnJpZGUoYm9vbCBh
bGxvdywgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgc2V0T3ZlcnJpZGVSZXNvdXJjZUxvYWRQ
cmlvcml0eShJbnRlcm5hbHNSZXNvdXJjZUxvYWRQcmlvcml0eSk7CisgICAgZW51bSBjbGFzcyBS
ZXNvdXJjZUxvYWRQcmlvcml0eSB7IFJlc291cmNlTG9hZFByaW9yaXR5VmVyeUxvdywgUmVzb3Vy
Y2VMb2FkUHJpb3JpdHlMb3csIFJlc291cmNlTG9hZFByaW9yaXR5TWVkaXVtLCBSZXNvdXJjZUxv
YWRQcmlvcml0eUhpZ2gsIFJlc291cmNlTG9hZFByaW9yaXR5VmVyeUhpZ2ggfTsKKyAgICB2b2lk
IHNldE92ZXJyaWRlUmVzb3VyY2VMb2FkUHJpb3JpdHkoUmVzb3VyY2VMb2FkUHJpb3JpdHkpOwog
ICAgIHZvaWQgc2V0U3RyaWN0UmF3UmVzb3VyY2VWYWxpZGF0aW9uUG9saWN5RGlzYWJsZWQoYm9v
bCk7CiAKICAgICB2b2lkIGNsZWFyTWVtb3J5Q2FjaGUoKTsKQEAgLTE3NSw3ICsxNzEsOCBAQCBw
dWJsaWM6CiAgICAgYm9vbCBlbGVtZW50U2hvdWxkQXV0b0NvbXBsZXRlKEhUTUxJbnB1dEVsZW1l
bnQmKTsKICAgICB2b2lkIHNldEVkaXRpbmdWYWx1ZShIVE1MSW5wdXRFbGVtZW50JiwgY29uc3Qg
U3RyaW5nJik7CiAgICAgdm9pZCBzZXRBdXRvZmlsbGVkKEhUTUxJbnB1dEVsZW1lbnQmLCBib29s
IGVuYWJsZWQpOwotICAgIHZvaWQgc2V0U2hvd0F1dG9GaWxsQnV0dG9uKEhUTUxJbnB1dEVsZW1l
bnQmLCBJbnRlcm5hbHNBdXRvRmlsbEJ1dHRvblR5cGUpOworICAgIGVudW0gY2xhc3MgQXV0b0Zp
bGxCdXR0b25UeXBlIHsgQXV0b0ZpbGxCdXR0b25UeXBlTm9uZSwgQXV0b0ZpbGxCdXR0b25UeXBl
Q29udGFjdHMsIEF1dG9GaWxsQnV0dG9uVHlwZUNyZWRlbnRpYWxzIH07CisgICAgdm9pZCBzZXRT
aG93QXV0b0ZpbGxCdXR0b24oSFRNTElucHV0RWxlbWVudCYsIEF1dG9GaWxsQnV0dG9uVHlwZSk7
CiAgICAgdm9pZCBzY3JvbGxFbGVtZW50VG9SZWN0KEVsZW1lbnQmLCBpbnQgeCwgaW50IHksIGlu
dCB3LCBpbnQgaCwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgU3RyaW5nIGF1dG9maWxsRmllbGRO
YW1lKEVsZW1lbnQmLCBFeGNlcHRpb25Db2RlJik7CkBAIC00MjAsNiArNDE3LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2VuZE1lZGlhU2Vzc2lvbkVuZE9mSW50ZXJydXB0aW9uTm90aWZpY2F0aW9u
KE1lZGlhU2Vzc2lvbkludGVycnVwdGluZ0NhdGVnb3J5KTsKICAgICBTdHJpbmcgbWVkaWFTZXNz
aW9uQ3VycmVudFN0YXRlKE1lZGlhU2Vzc2lvbiYpIGNvbnN0OwogICAgIGRvdWJsZSBtZWRpYUVs
ZW1lbnRQbGF5ZXJWb2x1bWUoSFRNTE1lZGlhRWxlbWVudCYpIGNvbnN0OworICAgIGVudW0gY2xh
c3MgTWVkaWFDb250cm9sRXZlbnQgeyBQbGF5UGF1c2UsIE5leHRUcmFjaywgUHJldmlvdXNUcmFj
ayB9OwogICAgIHZvaWQgc2VuZE1lZGlhQ29udHJvbEV2ZW50KE1lZGlhQ29udHJvbEV2ZW50KTsK
ICNlbmRpZgogCkBAIC00MzUsNiArNDMzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2ltdWxhdGVT
eXN0ZW1TbGVlcCgpIGNvbnN0OwogICAgIHZvaWQgc2ltdWxhdGVTeXN0ZW1XYWtlKCkgY29uc3Q7
CiAKKyAgICBlbnVtIGNsYXNzIFBhZ2VPdmVybGF5VHlwZSB7IFZpZXcsIERvY3VtZW50IH07CiAg
ICAgUmVmUHRyPE1vY2tQYWdlT3ZlcmxheT4gaW5zdGFsbE1vY2tQYWdlT3ZlcmxheShQYWdlT3Zl
cmxheVR5cGUsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBTdHJpbmcgcGFnZU92ZXJsYXlMYXllclRy
ZWVBc1RleHQoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5pZGwKaW5kZXggMWNhMGZlNmY5ZDE2MjY0OTlhODY0N2IxMGE5MmMzYTE4NDhhOGY3Ni4u
YjM0ODk3Yzk2ZDRlMGE5MDk1MGUxMTllNDZkMDY5ODI3MjAzNGVjMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtMzAsNyArMzAsNyBAQCBlbnVtIFBhZ2VPdmVybGF5VHlw
ZSB7CiB9OwogCiAvLyBUaGVzZSBtYXAgdG8gUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kuCi1l
bnVtIEludGVybmFsc0NhY2hlUG9saWN5IHsKK2VudW0gQ2FjaGVQb2xpY3kgewogICAgICJVc2VQ
cm90b2NvbENhY2hlUG9saWN5IiwKICAgICAiUmVsb2FkSWdub3JpbmdDYWNoZURhdGEiLAogICAg
ICJSZXR1cm5DYWNoZURhdGFFbHNlTG9hZCIsCkBAIC0zOCw3ICszOCw3IEBAIGVudW0gSW50ZXJu
YWxzQ2FjaGVQb2xpY3kgewogfTsKIAogLy8gRklYTUU6IFN0cmluZ3MgaW4gYW4gZW51bSBzaG91
bGQgbm90IGhhdmUgdGhlIG5hbWUgb2YgdGhlIGVudW0gYXMgYSBwcmVmaXguCi1lbnVtIEludGVy
bmFsc1Jlc291cmNlTG9hZFByaW9yaXR5IHsKK2VudW0gUmVzb3VyY2VMb2FkUHJpb3JpdHkgewog
ICAgICJSZXNvdXJjZUxvYWRQcmlvcml0eVZlcnlMb3ciLAogICAgICJSZXNvdXJjZUxvYWRQcmlv
cml0eUxvdyIsCiAgICAgIlJlc291cmNlTG9hZFByaW9yaXR5TWVkaXVtIiwKQEAgLTU5LDcgKzU5
LDcgQEAgZW51bSBJbnRlcm5hbHNSZXNvdXJjZUxvYWRQcmlvcml0eSB7CiB9OwogCiAvLyBGSVhN
RTogU3RyaW5ncyBpbiBhbiBlbnVtIHNob3VsZCBub3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgZW51
bSBhcyBhIHByZWZpeC4KLWVudW0gSW50ZXJuYWxzQXV0b0ZpbGxCdXR0b25UeXBlIHsKK2VudW0g
QXV0b0ZpbGxCdXR0b25UeXBlIHsKICAgICAiQXV0b0ZpbGxCdXR0b25UeXBlTm9uZSIsCiAgICAg
IkF1dG9GaWxsQnV0dG9uVHlwZUNvbnRhY3RzIiwKICAgICAiQXV0b0ZpbGxCdXR0b25UeXBlQ3Jl
ZGVudGlhbHMiCkBAIC04Niw4ICs4Niw4IEBAIGVudW0gSW50ZXJuYWxzQXV0b0ZpbGxCdXR0b25U
eXBlIHsKICAgICB2b2lkIGNsZWFyTWVtb3J5Q2FjaGUoKTsKICAgICB2b2lkIHBydW5lTWVtb3J5
Q2FjaGVUb1NpemUobG9uZyBzaXplKTsKICAgICBsb25nIG1lbW9yeUNhY2hlU2l6ZSgpOwotICAg
IHZvaWQgc2V0T3ZlcnJpZGVDYWNoZVBvbGljeShJbnRlcm5hbHNDYWNoZVBvbGljeSBwb2xpY3kp
OwotICAgIHZvaWQgc2V0T3ZlcnJpZGVSZXNvdXJjZUxvYWRQcmlvcml0eShJbnRlcm5hbHNSZXNv
dXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eSk7CisgICAgdm9pZCBzZXRPdmVycmlkZUNhY2hlUG9s
aWN5KENhY2hlUG9saWN5IHBvbGljeSk7CisgICAgdm9pZCBzZXRPdmVycmlkZVJlc291cmNlTG9h
ZFByaW9yaXR5KFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5KTsKICAgICB2b2lkIHNldFN0
cmljdFJhd1Jlc291cmNlVmFsaWRhdGlvblBvbGljeURpc2FibGVkKGJvb2xlYW4gZGlzYWJsZWQp
OwogCiAgICAgdm9pZCBjbGVhclBhZ2VDYWNoZSgpOwpAQCAtMTU5LDcgKzE1OSw3IEBAIGVudW0g
SW50ZXJuYWxzQXV0b0ZpbGxCdXR0b25UeXBlIHsKICAgICBib29sZWFuIGVsZW1lbnRTaG91bGRB
dXRvQ29tcGxldGUoSFRNTElucHV0RWxlbWVudCBpbnB1dEVsZW1lbnQpOwogICAgIHZvaWQgc2V0
RWRpdGluZ1ZhbHVlKEhUTUxJbnB1dEVsZW1lbnQgaW5wdXRFbGVtZW50LCBET01TdHJpbmcgdmFs
dWUpOwogICAgIHZvaWQgc2V0QXV0b2ZpbGxlZChIVE1MSW5wdXRFbGVtZW50IGlucHV0RWxlbWVu
dCwgYm9vbGVhbiBlbmFibGVkKTsKLSAgICB2b2lkIHNldFNob3dBdXRvRmlsbEJ1dHRvbihIVE1M
SW5wdXRFbGVtZW50IGlucHV0RWxlbWVudCwgSW50ZXJuYWxzQXV0b0ZpbGxCdXR0b25UeXBlIGF1
dG9GaWxsQnV0dG9uVHlwZSk7CisgICAgdm9pZCBzZXRTaG93QXV0b0ZpbGxCdXR0b24oSFRNTElu
cHV0RWxlbWVudCBpbnB1dEVsZW1lbnQsIEF1dG9GaWxsQnV0dG9uVHlwZSBhdXRvRmlsbEJ1dHRv
blR5cGUpOwogICAgIFtSYWlzZXNFeGNlcHRpb25dIHVuc2lnbmVkIGxvbmcgY291bnRNYXRjaGVz
Rm9yVGV4dChET01TdHJpbmcgdGV4dCwgdW5zaWduZWQgbG9uZyBmaW5kT3B0aW9ucywgRE9NU3Ry
aW5nIG1hcmtNYXRjaGVzKTsKIAogICAgIFtSYWlzZXNFeGNlcHRpb25dIERPTVN0cmluZyBhdXRv
ZmlsbEZpZWxkTmFtZShFbGVtZW50IGZvcm1Db250cm9sRWxlbWVudCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCAyMjRiODY1NjgzMDI5NmRhNzc0ODhmNGQxNjVhYjE1
ZjY4ODY1MjY5Li42YWIzMTU5N2E1NDc0ZGYxOGVhOWU4NTgyNGI1ZmQwNmE2ZWVjYjU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTE2Myw3ICsxNjMsNyBAQCBYTUxI
dHRwUmVxdWVzdDo6U3RhdGUgWE1MSHR0cFJlcXVlc3Q6OnJlYWR5U3RhdGUoKSBjb25zdAogCiBT
dHJpbmcgWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlVGV4dChFeGNlcHRpb25Db2RlJiBlYykKIHsK
LSAgICBpZiAobV9yZXNwb25zZVR5cGUgIT0gWE1MSHR0cFJlcXVlc3RSZXNwb25zZVR5cGU6OkVt
cHR5U3RyaW5nICYmIG1fcmVzcG9uc2VUeXBlICE9IFhNTEh0dHBSZXF1ZXN0UmVzcG9uc2VUeXBl
OjpUZXh0KSB7CisgICAgaWYgKG1fcmVzcG9uc2VUeXBlICE9IFJlc3BvbnNlVHlwZTo6RW1wdHlT
dHJpbmcgJiYgbV9yZXNwb25zZVR5cGUgIT0gUmVzcG9uc2VUeXBlOjpUZXh0KSB7CiAgICAgICAg
IGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQpAQCAt
MTcyLDcgKzE3Miw3IEBAIFN0cmluZyBYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VUZXh0KEV4Y2Vw
dGlvbkNvZGUmIGVjKQogCiB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRDYWNoZVJlc3BvbnNlSlNP
TigpCiB7Ci0gICAgQVNTRVJUKG1fcmVzcG9uc2VUeXBlID09IFhNTEh0dHBSZXF1ZXN0UmVzcG9u
c2VUeXBlOjpKc29uKTsKKyAgICBBU1NFUlQobV9yZXNwb25zZVR5cGUgPT0gUmVzcG9uc2VUeXBl
OjpKc29uKTsKICAgICBBU1NFUlQoZG9uZVdpdGhvdXRFcnJvcnMoKSk7CiAgICAgbV9yZXNwb25z
ZUNhY2hlSXNWYWxpZCA9IHRydWU7CiAgICAgbV9yZXNwb25zZUJ1aWxkZXIuY2xlYXIoKTsKQEAg
LTE4MCw3ICsxODAsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRDYWNoZVJlc3BvbnNlSlNP
TigpCiAKIERvY3VtZW50KiBYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VYTUwoRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7Ci0gICAgaWYgKG1fcmVzcG9uc2VUeXBlICE9IFhNTEh0dHBSZXF1ZXN0UmVzcG9u
c2VUeXBlOjpFbXB0eVN0cmluZyAmJiBtX3Jlc3BvbnNlVHlwZSAhPSBYTUxIdHRwUmVxdWVzdFJl
c3BvbnNlVHlwZTo6RG9jdW1lbnQpIHsKKyAgICBpZiAobV9yZXNwb25zZVR5cGUgIT0gUmVzcG9u
c2VUeXBlOjpFbXB0eVN0cmluZyAmJiBtX3Jlc3BvbnNlVHlwZSAhPSBSZXNwb25zZVR5cGU6OkRv
Y3VtZW50KSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KQEAgLTE5NSw3ICsxOTUsNyBAQCBEb2N1bWVudCogWE1MSHR0cFJl
cXVlc3Q6OnJlc3BvbnNlWE1MKEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICAvLyBUaGUgVzND
IHNwZWMgcmVxdWlyZXMgdGhlIGZpbmFsIE1JTUUgdHlwZSB0byBiZSBzb21lIHZhbGlkIFhNTCB0
eXBlLCBvciB0ZXh0L2h0bWwuCiAgICAgICAgIC8vIElmIGl0IGlzIHRleHQvaHRtbCwgdGhlbiB0
aGUgcmVzcG9uc2VUeXBlIG9mICJkb2N1bWVudCIgbXVzdCBoYXZlIGJlZW4gc3VwcGxpZWQgZXhw
bGljaXRseS4KICAgICAgICAgaWYgKChtX3Jlc3BvbnNlLmlzSFRUUCgpICYmICFyZXNwb25zZUlz
WE1MKCkgJiYgIWlzSFRNTCkKLSAgICAgICAgICAgIHx8IChpc0hUTUwgJiYgbV9yZXNwb25zZVR5
cGUgPT0gWE1MSHR0cFJlcXVlc3RSZXNwb25zZVR5cGU6OkVtcHR5U3RyaW5nKQorICAgICAgICAg
ICAgfHwgKGlzSFRNTCAmJiBtX3Jlc3BvbnNlVHlwZSA9PSBSZXNwb25zZVR5cGU6OkVtcHR5U3Ry
aW5nKQogICAgICAgICAgICAgfHwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1dvcmtlckds
b2JhbFNjb3BlKCkpIHsKICAgICAgICAgICAgIG1fcmVzcG9uc2VEb2N1bWVudCA9IG51bGxwdHI7
CiAgICAgICAgIH0gZWxzZSB7CkBAIC0yMTksNyArMjE5LDcgQEAgRG9jdW1lbnQqIFhNTEh0dHBS
ZXF1ZXN0OjpyZXNwb25zZVhNTChFeGNlcHRpb25Db2RlJiBlYykKIAogQmxvYiogWE1MSHR0cFJl
cXVlc3Q6OnJlc3BvbnNlQmxvYigpCiB7Ci0gICAgQVNTRVJUKG1fcmVzcG9uc2VUeXBlID09IFhN
TEh0dHBSZXF1ZXN0UmVzcG9uc2VUeXBlOjpCbG9iKTsKKyAgICBBU1NFUlQobV9yZXNwb25zZVR5
cGUgPT0gUmVzcG9uc2VUeXBlOjpCbG9iKTsKICAgICBBU1NFUlQoZG9uZVdpdGhvdXRFcnJvcnMo
KSk7CiAKICAgICBpZiAoIW1fcmVzcG9uc2VCbG9iKSB7CkBAIC0yNDEsNyArMjQxLDcgQEAgQmxv
YiogWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlQmxvYigpCiAKIEFycmF5QnVmZmVyKiBYTUxIdHRw
UmVxdWVzdDo6cmVzcG9uc2VBcnJheUJ1ZmZlcigpCiB7Ci0gICAgQVNTRVJUKG1fcmVzcG9uc2VU
eXBlID09IFhNTEh0dHBSZXF1ZXN0UmVzcG9uc2VUeXBlOjpBcnJheWJ1ZmZlcik7CisgICAgQVNT
RVJUKG1fcmVzcG9uc2VUeXBlID09IFJlc3BvbnNlVHlwZTo6QXJyYXlidWZmZXIpOwogICAgIEFT
U0VSVChkb25lV2l0aG91dEVycm9ycygpKTsKIAogICAgIGlmICghbV9yZXNwb25zZUFycmF5QnVm
ZmVyKSB7CkBAIC0yNzMsNyArMjczLDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6c2V0VGltZW91
dCh1bnNpZ25lZCB0aW1lb3V0LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBtX3RpbWVvdXRUaW1l
ci5zdGFydE9uZVNob3Qoc3RkOjptYXgoMC4wLCBpbnRlcnZhbC5jb3VudCgpKSk7CiB9CiAKLXZv
aWQgWE1MSHR0cFJlcXVlc3Q6OnNldFJlc3BvbnNlVHlwZShYTUxIdHRwUmVxdWVzdFJlc3BvbnNl
VHlwZSB0eXBlLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgWE1MSHR0cFJlcXVlc3Q6OnNldFJl
c3BvbnNlVHlwZShSZXNwb25zZVR5cGUgdHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAg
aWYgKG1fc3RhdGUgPj0gTE9BRElORykgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJS
OwpAQCAtNDYzLDcgKzQ2Myw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6Om9wZW4oY29uc3QgU3Ry
aW5nJiBtZXRob2QsIGNvbnN0IFVSTCYgdXJsLCBib29sIGFzeW5jLCBFeGNlCiAgICAgICAgIC8v
IGF0dGVtcHQgdG8gZGlzY291cmFnZSBzeW5jaHJvbm91cyBYSFIgdXNlLiByZXNwb25zZVR5cGUg
aXMgb25lIHN1Y2ggcGllY2Ugb2YgZnVuY3Rpb25hbGl0eS4KICAgICAgICAgLy8gV2UnbGwgb25s
eSBkaXNhYmxlIHRoaXMgZnVuY3Rpb25hbGl0eSBmb3IgSFRUUChTKSByZXF1ZXN0cyBzaW5jZSBz
eW5jIHJlcXVlc3RzIGZvciBsb2NhbCBwcm90b2NvbHMKICAgICAgICAgLy8gc3VjaCBhcyBmaWxl
OiBhbmQgZGF0YTogc3RpbGwgbWFrZSBzZW5zZSB0byBhbGxvdy4KLSAgICAgICAgaWYgKHVybC5w
cm90b2NvbElzSW5IVFRQRmFtaWx5KCkgJiYgbV9yZXNwb25zZVR5cGUgIT0gWE1MSHR0cFJlcXVl
c3RSZXNwb25zZVR5cGU6OkVtcHR5U3RyaW5nKSB7CisgICAgICAgIGlmICh1cmwucHJvdG9jb2xJ
c0luSFRUUEZhbWlseSgpICYmIG1fcmVzcG9uc2VUeXBlICE9IFJlc3BvbnNlVHlwZTo6RW1wdHlT
dHJpbmcpIHsKICAgICAgICAgICAgIGxvZ0NvbnNvbGVFcnJvcihzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksICJTeW5jaHJvbm91cyBIVFRQKFMpIHJlcXVlc3RzIG1hZGUgZnJvbSB0aGUgd2luZG93
IGNvbnRleHQgY2Fubm90IGhhdmUgWE1MSHR0cFJlcXVlc3QucmVzcG9uc2VUeXBlIHNldC4iKTsK
ICAgICAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtMTA5NSwxNiArMTA5NSwxNiBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZl
UmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZQogICAgICAg
ICBtX3Jlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5
cGUsIG1fbWltZVR5cGVPdmVycmlkZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRE
ZWNvZGVSZXNwb25zZShYTUxIdHRwUmVxdWVzdFJlc3BvbnNlVHlwZSB0eXBlKQorc3RhdGljIGlu
bGluZSBib29sIHNob3VsZERlY29kZVJlc3BvbnNlKFhNTEh0dHBSZXF1ZXN0OjpSZXNwb25zZVR5
cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIFhNTEh0dHBSZXF1ZXN0
UmVzcG9uc2VUeXBlOjpFbXB0eVN0cmluZzoKLSAgICBjYXNlIFhNTEh0dHBSZXF1ZXN0UmVzcG9u
c2VUeXBlOjpEb2N1bWVudDoKLSAgICBjYXNlIFhNTEh0dHBSZXF1ZXN0UmVzcG9uc2VUeXBlOjpK
c29uOgotICAgIGNhc2UgWE1MSHR0cFJlcXVlc3RSZXNwb25zZVR5cGU6OlRleHQ6CisgICAgY2Fz
ZSBYTUxIdHRwUmVxdWVzdDo6UmVzcG9uc2VUeXBlOjpFbXB0eVN0cmluZzoKKyAgICBjYXNlIFhN
TEh0dHBSZXF1ZXN0OjpSZXNwb25zZVR5cGU6OkRvY3VtZW50OgorICAgIGNhc2UgWE1MSHR0cFJl
cXVlc3Q6OlJlc3BvbnNlVHlwZTo6SnNvbjoKKyAgICBjYXNlIFhNTEh0dHBSZXF1ZXN0OjpSZXNw
b25zZVR5cGU6OlRleHQ6CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGNhc2UgWE1MSHR0cFJl
cXVlc3RSZXNwb25zZVR5cGU6OkFycmF5YnVmZmVyOgotICAgIGNhc2UgWE1MSHR0cFJlcXVlc3RS
ZXNwb25zZVR5cGU6OkJsb2I6CisgICAgY2FzZSBYTUxIdHRwUmVxdWVzdDo6UmVzcG9uc2VUeXBl
OjpBcnJheWJ1ZmZlcjoKKyAgICBjYXNlIFhNTEh0dHBSZXF1ZXN0OjpSZXNwb25zZVR5cGU6OkJs
b2I6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4IDFlOGQwOWI2NzVjOGE2MTMw
OGMzNzU3YTRhN2Y2NTM5OTAxNDgwOTIuLmI4ODA4NzJjMmNjMThiNmE1YjQ2N2U0ZjYwYjMyYTUz
NmM2YTE1ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCkBAIC00NCw4ICs0NCw2
IEBAIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7CiBjbGFz
cyBUaHJlYWRhYmxlTG9hZGVyOwogCi1lbnVtIGNsYXNzIFhNTEh0dHBSZXF1ZXN0UmVzcG9uc2VU
eXBlIHsgRW1wdHlTdHJpbmcsIEFycmF5YnVmZmVyLCBCbG9iLCBEb2N1bWVudCwgSnNvbiwgVGV4
dCB9OwotCiBjbGFzcyBYTUxIdHRwUmVxdWVzdCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFhN
TEh0dHBSZXF1ZXN0PiwgcHVibGljIFhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQsIHByaXZhdGUg
VGhyZWFkYWJsZUxvYWRlckNsaWVudCwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC0xMDYsOCArMTA0LDkgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBTdHJpbmcgdXBwZXJjYXNlS25vd25IVFRQTWV0aG9kKGNvbnN0IFN0cmlu
ZyYpOwogICAgIHN0YXRpYyBib29sIGlzQWxsb3dlZEhUVFBIZWFkZXIoY29uc3QgU3RyaW5nJik7
CiAKLSAgICB2b2lkIHNldFJlc3BvbnNlVHlwZShYTUxIdHRwUmVxdWVzdFJlc3BvbnNlVHlwZSwg
RXhjZXB0aW9uQ29kZSYpOwotICAgIFhNTEh0dHBSZXF1ZXN0UmVzcG9uc2VUeXBlIHJlc3BvbnNl
VHlwZSgpIGNvbnN0OworICAgIGVudW0gY2xhc3MgUmVzcG9uc2VUeXBlIHsgRW1wdHlTdHJpbmcs
IEFycmF5YnVmZmVyLCBCbG9iLCBEb2N1bWVudCwgSnNvbiwgVGV4dCB9OworICAgIHZvaWQgc2V0
UmVzcG9uc2VUeXBlKFJlc3BvbnNlVHlwZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJlc3BvbnNl
VHlwZSByZXNwb25zZVR5cGUoKSBjb25zdDsKIAogICAgIFN0cmluZyByZXNwb25zZVVSTCgpIGNv
bnN0OwogCkBAIC0yMjUsNyArMjI0LDcgQEAgcHJpdmF0ZToKIAogICAgIFhNTEh0dHBSZXF1ZXN0
UHJvZ3Jlc3NFdmVudFRocm90dGxlIG1fcHJvZ3Jlc3NFdmVudFRocm90dGxlOwogCi0gICAgWE1M
SHR0cFJlcXVlc3RSZXNwb25zZVR5cGUgbV9yZXNwb25zZVR5cGUgeyBYTUxIdHRwUmVxdWVzdFJl
c3BvbnNlVHlwZTo6RW1wdHlTdHJpbmcgfTsKKyAgICBSZXNwb25zZVR5cGUgbV9yZXNwb25zZVR5
cGUgeyBSZXNwb25zZVR5cGU6OkVtcHR5U3RyaW5nIH07CiAgICAgYm9vbCBtX3Jlc3BvbnNlQ2Fj
aGVJc1ZhbGlkIHsgZmFsc2UgfTsKIAogICAgIFRpbWVyIG1fcmVzdW1lVGltZXI7CkBAIC0yMzks
NyArMjM4LDcgQEAgcHJpdmF0ZToKICAgICBUaW1lciBtX3RpbWVvdXRUaW1lcjsKIH07CiAKLWlu
bGluZSBYTUxIdHRwUmVxdWVzdFJlc3BvbnNlVHlwZSBYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VU
eXBlKCkgY29uc3QKK2lubGluZSBhdXRvIFhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZVR5cGUoKSBj
b25zdCAtPiBSZXNwb25zZVR5cGUKIHsKICAgICByZXR1cm4gbV9yZXNwb25zZVR5cGU7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3Ry
YXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0
cmF0ZWd5LmNwcAppbmRleCAxODA5NmMyYzVmMmEyY2NiNmI3MzQ0OWQ2N2I0NDBjZTgxMDc4ZWYx
Li5lM2Q0YTQ4MzdkN2FlMDgzYTRlMzg5NzY5OGQxMzNmMmRiMThhMjUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5j
cHAKQEAgLTc1LDcgKzc1LDcgQEAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBXZWJMb2FkZXJT
dHJhdGVneTo6bG9hZFJlc291cmNlKEZyYW1lKiBmcmFtZSwgQ2FjaGVkUmUKIHsKICAgICBSZWZQ
dHI8U3VicmVzb3VyY2VMb2FkZXI+IGxvYWRlciA9IFN1YnJlc291cmNlTG9hZGVyOjpjcmVhdGUo
ZnJhbWUsIHJlc291cmNlLCByZXF1ZXN0LCBvcHRpb25zKTsKICAgICBpZiAobG9hZGVyKQotICAg
ICAgICBzY2hlZHVsZUxvYWQobG9hZGVyLmdldCgpLCByZXNvdXJjZSwgZnJhbWUtPmRvY3VtZW50
KCktPnJlZmVycmVyUG9saWN5KCkgPT0gUmVmZXJyZXJIZWFkZXJQb2xpY3k6OkRlZmF1bHQpOwor
ICAgICAgICBzY2hlZHVsZUxvYWQobG9hZGVyLmdldCgpLCByZXNvdXJjZSwgZnJhbWUtPmRvY3Vt
ZW50KCktPnJlZmVycmVyUG9saWN5KCkgPT0gUmVmZXJyZXJQb2xpY3k6OkRlZmF1bHQpOwogICAg
IHJldHVybiBsb2FkZXI7CiB9CiAKQEAgLTgzLDcgKzgzLDcgQEAgUmVmUHRyPE5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyPiBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVQbHVnaW5TdHJlYW1M
b2FkKEYKIHsKICAgICBSZWZQdHI8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IGxvYWRlciA9
IE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpjcmVhdGUoZnJhbWUsIGNsaWVudCwgcmVxdWVz
dCk7CiAgICAgaWYgKGxvYWRlcikKLSAgICAgICAgc2NoZWR1bGVMb2FkKGxvYWRlci5nZXQoKSwg
MCwgZnJhbWUtPmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCkgPT0gUmVmZXJyZXJIZWFkZXJQ
b2xpY3k6OkRlZmF1bHQpOworICAgICAgICBzY2hlZHVsZUxvYWQobG9hZGVyLmdldCgpLCAwLCBm
cmFtZS0+ZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSA9PSBSZWZlcnJlclBvbGljeTo6RGVm
YXVsdCk7CiAgICAgcmV0dXJuIGxvYWRlcjsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>