<?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>211647</bug_id>
          
          <creation_ts>2020-05-08 15:05:41 -0700</creation_ts>
          <short_desc>Fail navigations to non app-bound domains after use of app-bound APIs</short_desc>
          <delta_ts>2020-05-11 16:59:47 -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>WebKit Misc.</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kate Cheney">katherine_cheney</reporter>
          <assigned_to name="Kate Cheney">katherine_cheney</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1650791</commentid>
    <comment_count>0</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-05-08 15:05:41 -0700</bug_when>
    <thetext>Navigations to non app-bound domains should not be able to occur after using certain APIs covered by In-App Browser Privacy protections.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650792</commentid>
    <comment_count>1</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-05-08 15:06:30 -0700</bug_when>
    <thetext>&lt;rdar://problem/62978159&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650815</commentid>
    <comment_count>2</comment_count>
      <attachid>398902</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-05-08 16:02:01 -0700</bug_when>
    <thetext>Created attachment 398902
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651399</commentid>
    <comment_count>3</comment_count>
      <attachid>399046</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-05-11 13:12:14 -0700</bug_when>
    <thetext>Created attachment 399046
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651400</commentid>
    <comment_count>4</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-05-11 13:12:37 -0700</bug_when>
    <thetext>(In reply to katherine_cheney from comment #3)
&gt; Created attachment 399046 [details]
&gt; Patch

Hoping this fixes EWS test bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651408</commentid>
    <comment_count>5</comment_count>
      <attachid>399049</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-05-11 13:32:26 -0700</bug_when>
    <thetext>Created attachment 399049
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651452</commentid>
    <comment_count>6</comment_count>
      <attachid>399049</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-05-11 14:23:25 -0700</bug_when>
    <thetext>Comment on attachment 399049
Patch

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

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:3132
&gt; +                return false;

Do we need to set any values here, rather than just returning false? E.g., should we make sure the WebViewCategory be set to &apos;AppBound&apos; here?

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:7106
&gt; +        m_navigationHasOccured = true;

Since we always set this if it&apos;s false, and we always set it to true (no matter what), it&apos;s probably better to just set it to true here (without the test first)

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:7116
&gt; +        send(Messages::WebPageProxy::SetHasExecutedAppBoundBehaviorBeforeNavigation());

This method name sounds like we are asking the page if we should enable In-App Browser Privacy. But we also always send a message to the UIProcess indicating we did something app-bound. I worry that could be confusing to someone reading the code who doesn&apos;t expect this side-effect.

Should the message send be done as a separate step?

What does it mean if the answer to &apos;should allow&apos; is NO. Don&apos;t we avoid doing the app-bound thing? So does it make sense to tell the UIProcess that we did some kind of app-bound behavior?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651479</commentid>
    <comment_count>7</comment_count>
      <attachid>399049</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-05-11 15:18:30 -0700</bug_when>
    <thetext>Comment on attachment 399049
Patch

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

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:3132
&gt;&gt; +                return false;
&gt; 
&gt; Do we need to set any values here, rather than just returning false? E.g., should we make sure the WebViewCategory be set to &apos;AppBound&apos; here?

Since reaching this code means m_limitsNavigationsToAppBoundDomains was not set, I don&apos;t think we should set this to be app-bound. The flag should still probably have to be set to trigger app-bound privileges.

&gt;&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:7106
&gt;&gt; +        m_navigationHasOccured = true;
&gt; 
&gt; Since we always set this if it&apos;s false, and we always set it to true (no matter what), it&apos;s probably better to just set it to true here (without the test first)

Yes, will change!

&gt;&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:7116
&gt;&gt; +        send(Messages::WebPageProxy::SetHasExecutedAppBoundBehaviorBeforeNavigation());
&gt; 
&gt; This method name sounds like we are asking the page if we should enable In-App Browser Privacy. But we also always send a message to the UIProcess indicating we did something app-bound. I worry that could be confusing to someone reading the code who doesn&apos;t expect this side-effect.
&gt; 
&gt; Should the message send be done as a separate step?
&gt; 
&gt; What does it mean if the answer to &apos;should allow&apos; is NO. Don&apos;t we avoid doing the app-bound thing? So does it make sense to tell the UIProcess that we did some kind of app-bound behavior?

I see what you are saying. Do you mean a separate function that is called at each site in addition to shouldEnableInAppBrowserPrivacyProtections(), or do you mean a separate function within this function?

Yes, you&apos;re right. If shouldEnable is true, we definitely shouldn&apos;t send the message because it means the behavior was not allowed. Good catch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651481</commentid>
    <comment_count>8</comment_count>
      <attachid>399049</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-05-11 15:23:56 -0700</bug_when>
    <thetext>Comment on attachment 399049
Patch

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

&gt;&gt;&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:7116
&gt;&gt;&gt; +        send(Messages::WebPageProxy::SetHasExecutedAppBoundBehaviorBeforeNavigation());
&gt;&gt; 
&gt;&gt; This method name sounds like we are asking the page if we should enable In-App Browser Privacy. But we also always send a message to the UIProcess indicating we did something app-bound. I worry that could be confusing to someone reading the code who doesn&apos;t expect this side-effect.
&gt;&gt; 
&gt;&gt; Should the message send be done as a separate step?
&gt;&gt; 
&gt;&gt; What does it mean if the answer to &apos;should allow&apos; is NO. Don&apos;t we avoid doing the app-bound thing? So does it make sense to tell the UIProcess that we did some kind of app-bound behavior?
&gt; 
&gt; I see what you are saying. Do you mean a separate function that is called at each site in addition to shouldEnableInAppBrowserPrivacyProtections(), or do you mean a separate function within this function?
&gt; 
&gt; Yes, you&apos;re right. If shouldEnable is true, we definitely shouldn&apos;t send the message because it means the behavior was not allowed. Good catch!

I think it would be clearer if we only sent the message when we were actually doing something app-bound. So I propose we have a second method that just does the message send (if needed), and call it when we use one of the app-bound powers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651500</commentid>
    <comment_count>9</comment_count>
      <attachid>399062</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-05-11 16:03:23 -0700</bug_when>
    <thetext>Created attachment 399062
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651502</commentid>
    <comment_count>10</comment_count>
      <attachid>399062</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-05-11 16:05:31 -0700</bug_when>
    <thetext>Comment on attachment 399062
Patch

Looks good! r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651507</commentid>
    <comment_count>11</comment_count>
      <attachid>399062</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-05-11 16:11:42 -0700</bug_when>
    <thetext>Comment on attachment 399062
Patch

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

&gt; Source/WebCore/loader/FrameLoaderClient.h:382
&gt; +    virtual bool shouldEnableInAppBrowserPrivacyProtections() { return false; }

can this be const?

&gt; Source/WebKit/Shared/LoadParameters.h:73
&gt; +    Optional&lt;NavigatingToAppBoundDomain&gt; isNavigatingToAppBoundDomain { WTF::nullopt };

{ WTF::nullopt } is unnecessary.

&gt; Source/WebKit/UIProcess/WebPageProxy.h:2815
&gt; +    Optional&lt;NavigatingToAppBoundDomain&gt; m_isNavigatingToAppBoundDomain { WTF::nullopt };

{ WTF::nullopt } is unnecessary.

&gt; Source/WebKit/WebProcess/WebPage/WebPage.h:2106
&gt; +    Optional&lt;NavigatingToAppBoundDomain&gt; m_isNavigatingToAppBoundDomain { WTF::nullopt };

{ WTF::nullopt } is unnecessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651516</commentid>
    <comment_count>12</comment_count>
      <attachid>399068</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-05-11 16:29:55 -0700</bug_when>
    <thetext>Created attachment 399068
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651518</commentid>
    <comment_count>13</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-05-11 16:31:02 -0700</bug_when>
    <thetext>Thanks Chris and Brent!

(In reply to Chris Dumez from comment #11)
&gt; Comment on attachment 399062 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=399062&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/FrameLoaderClient.h:382
&gt; &gt; +    virtual bool shouldEnableInAppBrowserPrivacyProtections() { return false; }
&gt; 
&gt; can this be const?
&gt; 

Yes, patch for landing has this change.

&gt; &gt; Source/WebKit/Shared/LoadParameters.h:73
&gt; &gt; +    Optional&lt;NavigatingToAppBoundDomain&gt; isNavigatingToAppBoundDomain { WTF::nullopt };
&gt; 
&gt; { WTF::nullopt } is unnecessary.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebPageProxy.h:2815
&gt; &gt; +    Optional&lt;NavigatingToAppBoundDomain&gt; m_isNavigatingToAppBoundDomain { WTF::nullopt };
&gt; 
&gt; { WTF::nullopt } is unnecessary.
&gt; 
&gt; &gt; Source/WebKit/WebProcess/WebPage/WebPage.h:2106
&gt; &gt; +    Optional&lt;NavigatingToAppBoundDomain&gt; m_isNavigatingToAppBoundDomain { WTF::nullopt };
&gt; 
&gt; { WTF::nullopt } is unnecessary.

Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651527</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-11 16:59:46 -0700</bug_when>
    <thetext>Committed r261506: &lt;https://trac.webkit.org/changeset/261506&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 399068.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398902</attachid>
            <date>2020-05-08 16:02:01 -0700</date>
            <delta_ts>2020-05-11 13:12:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211647-20200508160200.patch</filename>
            <type>text/plain</type>
            <size>78707</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMjQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmMxMTEyNzhhODIzZDU3
MDdmNjExMjFjOWEwYTRhNGU3ODZmMzI5ZC4uMzJmMjYxMTQzNzQ4Yjc2ZGFlNmM2OTQ0NjljMzE3
MGVmNWQ5YjZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIwLTA1LTA4ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEZhaWwgbmF2
aWdhdGlvbnMgdG8gbm9uIGFwcC1ib3VuZCBkb21haW5zIGFmdGVyIHVzZSBvZiBhcHAtYm91bmQg
QVBJcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEx
NjQ3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82Mjk3ODE1OT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW1wbGlmaWVkIGluLWFwcCBicm93c2Vy
IHByaXZhY3kgcHJvdGVjdGlvbnMgY2hlY2sgaW50byBvbmUsIGJldHRlcgorICAgICAgICBuYW1l
ZCBmdW5jdGlvbi4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29y
bGQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIHBh
Z2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmluamVjdFVzZXJTY3JpcHRJ
bW1lZGlhdGVseSk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2U6OmluamVjdFVzZXJTdHlsZVNoZWV0KToKKyAgICAgICAgKiBwYWdlL1dlYktpdE5hbWVz
cGFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXROYW1lc3BhY2U6Om1lc3NhZ2VIYW5k
bGVycyk6CisgICAgICAgICogc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlOjpTY29wZVJ1bGVTZXRzOjppbml0aWFsaXplVXNlclN0eWxlKToKKyAg
ICAgICAgUmVhcnJhbmdlZCBvcmRlcmluZyBzbyB0aGUgbWVzc2FnZSB0byBXZWJQYWdlUHJveHkg
b25seSBnZXRzIHNlbnQgdG8KKyAgICAgICAgaW5kaWNhdGUgYXBwLWJvdW5kIGJlaGF2aW9yIGlm
IHVzZXIgc3R5bGUgc2hlZXRzIGFjdHVhbGx5IGV4aXN0LgorCiAyMDIwLTA1LTA2ICBUaW0gSG9y
dG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIy
NjA3NTMpOiBGcmVxdWVudCBjcmFzaGVzIHVuZGVyIFRleHRJbmRpY2F0b3IncyBlc3RpbWF0ZWRU
ZXh0Q29sb3JzRm9yUmFuZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNDU0MzExMmQ0NjMwODAwYjBiODVkMmUwZTU3
MjlmZWE4MWRiZDhlOC4uN2Y5NDQ1ZTE5ZGVhMzZkZmNlZjdkNTQ2YTgyY2RmZGQ2M2ZkYmJlMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw5OSBAQAorMjAyMC0wNS0wOCAgS2F0ZSBDaGVuZXkgIDxrYXRo
ZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBGYWlsIG5hdmlnYXRpb25zIHRvIG5v
biBhcHAtYm91bmQgZG9tYWlucyBhZnRlciB1c2Ugb2YgYXBwLWJvdW5kIEFQSXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTY0NworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNjI5NzgxNTk+CisKKyAgICAgICAgQSBsb3Qgb2YgdGhpcyBwYXRjaCBp
cyBkZWxldGluZyB0aGUgdW5uZWNlc3NhcnkgdmFyaWFibGUvZnVuY3Rpb24KKyAgICAgICAgaGFz
TmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbiBub3cgdGhhdCBuYXZpZ2F0aW5nIGF3YXkg
ZnJvbSBhbgorICAgICAgICBhcHAtYm91bmQgZG9tYWluIGlzIG5vdCBwb3NzaWJsZS4KKyAgICAg
ICAgCisgICAgICAgIFRvIGFkZHJlc3MgdGhlIGJ1ZywgdGhpcyBzZXRzIHRoZSBkZWZhdWx0IGlz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4KKyAgICAgICAgdmFsdWUgdG8gYmUgV1RGOjpudWxs
b3B0LiBUaGlzIHdpbGwgYWxsb3cgYXBwLWJvdW5kIGJlaGF2aW9ycyB1bnRpbAorICAgICAgICBh
IG5hdmlnYXRpb24gaGFzIGJlZW4gYXR0ZW1wdGVkLCBpbiB3aGljaCBjYXNlIGl0IHdpbGwgZmFp
bCBvciB3aWxsCisgICAgICAgIHVwZGF0ZSBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIHRv
IHRoZSBjb3JyZWN0IHZhbHVlLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TG9hZFBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkxvYWRQ
YXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9Mb2FkUGFyYW1ldGVycy5oOgor
ICAgICAgICAqIFNoYXJlZC9Qb2xpY3lEZWNpc2lvbi5oOgorICAgICAgICAoV2ViS2l0OjpQb2xp
Y3lEZWNpc2lvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UG9saWN5RGVjaXNp
b246OmRlY29kZSk6CisgICAgICAgICogVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWREYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KToKKyAgICAg
ICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb25TeW5jKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHku
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNTaGFyZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omhhc05hdmlnYXRlZEF3YXlGcm9tQXBw
Qm91bmREb21haW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICBSZW1vdmUgaGFzTmF2aWdhdGVk
QXdheUZyb21BcHBCb3VuZERvbWFpbi4KKworICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW5BbmRDaGVja0lmUGVybWl0dGVkKToKKyAg
ICAgICAgQ2hlY2sgZm9yIG5ldyBtX2hhc0V4ZWN1dGVkQXBwQm91bmRCZWhhdmlvckJlZm9yZU5h
dmlnYXRpb24gcGFyYW1ldGVyCisgICAgICAgIGFuZCBmYWlsIHRoZSBuYXZpZ2F0aW9uIGlmIGEg
V2ViVmlldyBoYXMgdXNlZCBhcHAtYm91bmQgYmVoYXZpb3IgdGhlbgorICAgICAgICB0cmllcyB0
byBuYXZpZ2F0ZSB0byBhIG5vbiBhcHAtYm91bmQgZG9tYWluLgorCisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAg
IFVwZGF0ZSBlcnJvciBtZXNzYWdlIHRvIGJlIG1vcmUgZ2VuZXJhbCBub3cgdGhhdCBtb3JlIHRo
YW4gb25lIGVycm9yCisgICAgICAgIGNhbiBvY2N1ci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRIYXNFeGVj
dXRlZEFwcEJvdW5kQmVoYXZpb3JCZWZvcmVOYXZpZ2F0aW9uKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICBOZXcgcGFyYW1ldGVyIHRvIGlu
ZGljYXRlIGEgV2ViVmlldyBoYXMgdXNlZCBhcHAtYm91bmQgQVBJcyBiZWZvcmUKKyAgICAgICAg
bmF2aWdhdGluZy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkRW5hYmxl
SW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJh
bWVMb2FkZXJDbGllbnQ6Omhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6bmVlZHNJbkFwcEJy
b3dzZXJQcml2YWN5UXVpcmtzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIENvbWJpbmVk
IHR3byBmdW5jdGlvbnMgaW50byBhIHNpbXBsZXIgZnVuY3Rpb246CisgICAgICAgIHNob3VsZEVu
YWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjptX2xpbWl0c05hdmln
YXRpb25zVG9BcHBCb3VuZERvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRh
dGVQcmVmZXJlbmNlcyk6CisgICAgICAgIFN0b3JlIHRoZSBzcGVjaWFsIGFwcC1ib3VuZCBkb21h
aW4gZmxhZyB0byBnYXRlIHRoZSBzZXJ2aWNlIHdvcmtlcgorICAgICAgICBBUEkuIFRoaXMgc2hv
dWxkIGJlIHN0b3JlZCBzZXBhcmF0ZWx5IGZyb20KKyAgICAgICAgbV9pc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluLCBiZWNhdXNlIGluIHRoZSBXZWJQYWdlIGNvbnN0cnVjdG9yIHdlCisgICAg
ICAgIGRvbid0IHlldCBrbm93IHdoZXRoZXIgdGhlIFdLQXBwQm91bmREb21haW5zIGtleSBleGlz
dHMuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpsb2FkRGF0YUltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
Ojpsb2FkRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRBbHRlcm5hdGVIVE1M
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKToK
KyAgICAgICAgUmVtb3ZlIGhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4uCisKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cnVuSmF2YVNjcmlwdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpzaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMp
OgorICAgICAgICBJZiBtX25lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcyBhcmUgb24gZm9y
IHRlc3RpbmcsIGRvbid0IGVuYWJsZQorICAgICAgICBwcm90ZWN0aW9ucy4gT25seSBub3RpZnkg
dGhlIFdlYlBhZ2VQcm94eSBvZiBhcHAtYm91bmQgYmVoYXZpb3IgaWYKKyAgICAgICAgYSBuYXZp
Z2F0aW9uIGhhcyBub3Qgb2NjdXJlZCBhbmQgd2Uga25vdyB0aGUgd2ViVmlldyBpcyBub3QgYXBw
LWJvdW5kCisgICAgICAgIChpbiBvcmRlciB0byBsaW1pdCBJUEMpLgorCisgICAgICAgIChXZWJL
aXQ6Om1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik6IERlbGV0ZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpoYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SGFzTmF2aWdhdGVk
QXdheUZyb21BcHBCb3VuZERvbWFpbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6Om5lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcyBjb25zdCk6IERlbGV0ZWQuCisKIDIw
MjAtMDUtMDYgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBw
b2ludGVybW92ZSBldmVudCBzb21ldGltZXMgaGFzIGluY29ycmVjdCBwb2ludGVyVHlwZSBvZiAn
bW91c2UnIG9uIHRvdWNoIGludGVyYWN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCBhZTI4ODVjMDMzYmU0YWM4ZGMwMmM4MTIy
NDc4YWM3Yzc0MzkwYzBiLi5jZTU1MWQzMTExNzA2MjAwMjZiZmJkZGYwMWY4N2ViNTljNmNhNzUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNw
cApAQCAtNTc5LDcgKzU3OSw3IEBAIEpTQzo6SlNWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVj
dXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKERPTVdyYXBwZXJXCiAKIFZhbHVlT3JF
eGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBl
cldvcmxkJiB3b3JsZCwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewot
ICAgIGlmIChtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmhhc05hdmlnYXRlZEF3YXlGcm9tQXBw
Qm91bmREb21haW4oKSAmJiAhbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5uZWVkc0luQXBwQnJv
d3NlclByaXZhY3lRdWlya3MoKSkgeworICAgIGlmIChtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgp
LnNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7CiAgICAgICAg
IGlmIChhdXRvKiBkb2N1bWVudCA9IG1fZnJhbWUuZG9jdW1lbnQoKSkKICAgICAgICAgICAgIGRv
Y3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2Fn
ZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24t
YXBwIGJvdW5kIGRvbWFpbi4iKTsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dF
RChMb2FkaW5nLCAiZXhlY3V0ZVNjcmlwdEluV29ybGQ6IElnbm9yaW5nIHVzZXIgc2NyaXB0IGlu
amVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMWU1NDI1ZTk0Nzc4NWYxOGJlOGI1OTk0OGU4OTRh
OGRmODMyYzllNy4uMDA3MGUzYmY0NmI1YzNkYjRjZGIyZmFkOTAwZDUzMDQ5NDg1MDg0OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTM3OSw4ICszNzks
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIEFsbG93c0NvbnRlbnRKYXZhU2NyaXB0IGFsbG93
c0NvbnRlbnRKYXZhU2NyaXB0RnJvbU1vc3RSZWNlbnROYXZpZ2F0aW9uKCkgY29uc3QgeyByZXR1
cm4gQWxsb3dzQ29udGVudEphdmFTY3JpcHQ6OlllczsgfQogCi0gICAgdmlydHVhbCBib29sIGhh
c05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4oKSB7IHJldHVybiBmYWxzZTsgfQotICAg
IHZpcnR1YWwgYm9vbCBuZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3MoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQ
cml2YWN5UHJvdGVjdGlvbnMoKSB7IHJldHVybiBmYWxzZTsgfQogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCAzOWRlYTRkNWUyNWE3YzYzZDliZmRi
MDNhYTVlNzU1NTRiYjFiYzY1Li42YTY3YzVlNjNjMDI3YTg1YTE4OGJmMjcyYTJhYTc0MGVhNDA5
ODc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtNjUxLDcgKzY1MSw3IEBAIHZvaWQgRnJhbWU6
OmluamVjdFVzZXJTY3JpcHRzKFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUp
CiAKIHZvaWQgRnJhbWU6OmluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseShET01XcmFwcGVyV29y
bGQmIHdvcmxkLCBjb25zdCBVc2VyU2NyaXB0JiBzY3JpcHQpCiB7Ci0gICAgaWYgKGxvYWRlcigp
LmNsaWVudCgpLmhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4oKSAmJiAhbG9hZGVy
KCkuY2xpZW50KCkubmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzKCkpIHsKKyAgICBpZiAo
bG9hZGVyKCkuY2xpZW50KCkuc2hvdWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rp
b25zKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKSkK
ICAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpT
ZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5q
ZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iX3MpOwogICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUl9JRl9BTExPV0VEKExvYWRpbmcsICJpbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHk6
IElnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4i
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGY1YzRkMDllYTdmYjlhMWRmY2E5MGM5MTZiM2U2NmYx
OTdlYTc1M2YuLjhkMWM4NzkwN2E3YzU4ZDczNTk3N2Y4MWE1ODIxMDI2ODY1MjFiZWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcApAQCAtMzE2NCw3ICszMTY0LDcgQEAgdm9pZCBQYWdlOjpyZXZlYWxDdXJy
ZW50U2VsZWN0aW9uKCkKIAogdm9pZCBQYWdlOjppbmplY3RVc2VyU3R5bGVTaGVldChVc2VyU3R5
bGVTaGVldCYgdXNlclN0eWxlU2hlZXQpCiB7Ci0gICAgaWYgKG1fbWFpbkZyYW1lLT5sb2FkZXIo
KS5jbGllbnQoKS5oYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluKCkpIHsKKyAgICBp
ZiAobV9tYWluRnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnNob3VsZEVuYWJsZUluQXBwQnJvd3Nl
clByaXZhY3lQcm90ZWN0aW9ucygpKSB7CiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IG1f
bWFpbkZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJ
Z25vcmluZyB1c2VyIHN0eWxlIHNoZWV0IGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iX3MpOwog
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dlYktpdE5h
bWVzcGFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dlYktpdE5hbWVzcGFjZS5jcHAKaW5k
ZXggYWMxMjQ3YzYxNGUxNmVlMGY1NTJjNzQzMDJmMjYzYjEzMjgxZjQzMC4uNWIwYjc0MjgwNmJi
MDY3NmY2M2I0NDYzYTlkMzVlZjIzMDJhNTg2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9XZWJLaXROYW1lc3BhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2ViS2l0
TmFtZXNwYWNlLmNwcApAQCAtNTAsNyArNTAsNyBAQCBXZWJLaXROYW1lc3BhY2U6On5XZWJLaXRO
YW1lc3BhY2UoKSA9IGRlZmF1bHQ7CiAKIFVzZXJNZXNzYWdlSGFuZGxlcnNOYW1lc3BhY2UqIFdl
YktpdE5hbWVzcGFjZTo6bWVzc2FnZUhhbmRsZXJzKCkKIHsKLSAgICBpZiAoZnJhbWUoKSAmJiBm
cmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5oYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9t
YWluKCkpIHsKKyAgICBpZiAoZnJhbWUoKSAmJiBmcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5z
aG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKSkgewogICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKExvYWRpbmcsICJJZ25vcmluZyBtZXNzYWdlSGFu
ZGxlcnMoKSByZXF1ZXN0IGZvciBub24gYXBwLWJvdW5kIGRvbWFpbiIpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZVNjb3BlUnVsZVNldHMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVT
ZXRzLmNwcAppbmRleCAyOTVkZjQwNDEwN2FkYzBiM2Y3YmZkOWUzOWIwM2QwNGI5YzA0ZTY0Li5k
MjRiMzMzMGZmMGE1MmMyMTI1YjdlM2YwNmNkMTY0YzJjMThlODA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBT
Y29wZVJ1bGVTZXRzOjppbml0aWFsaXplVXNlclN0eWxlKCkKICAgICBpZiAoQ1NTU3R5bGVTaGVl
dCogcGFnZVVzZXJTaGVldCA9IGV4dGVuc2lvblN0eWxlU2hlZXRzLnBhZ2VVc2VyU2hlZXQoKSkK
ICAgICAgICAgdGVtcFVzZXJTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQocGFnZVVzZXJTaGVldC0+
Y29udGVudHMoKSwgbnVsbHB0ciwgbWVkaWFRdWVyeUV2YWx1YXRvciwgbV9zdHlsZVJlc29sdmVy
KTsKICAgICBhdXRvKiBwYWdlID0gbV9zdHlsZVJlc29sdmVyLmRvY3VtZW50KCkucGFnZSgpOwot
ICAgIGlmIChwYWdlICYmIHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmNsaWVudCgpLmhhc05h
dmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4oKSAmJiAhZXh0ZW5zaW9uU3R5bGVTaGVldHMu
aW5qZWN0ZWRVc2VyU3R5bGVTaGVldHMoKS5pc0VtcHR5KCkpCisgICAgaWYgKCFleHRlbnNpb25T
dHlsZVNoZWV0cy5pbmplY3RlZFVzZXJTdHlsZVNoZWV0cygpLmlzRW1wdHkoKSAmJiBwYWdlICYm
IHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmNsaWVudCgpLnNob3VsZEVuYWJsZUluQXBwQnJv
d3NlclByaXZhY3lQcm90ZWN0aW9ucygpKQogICAgICAgICBtX3N0eWxlUmVzb2x2ZXIuZG9jdW1l
bnQoKS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxl
dmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzdHlsZSBzaGVldCBmb3Igbm9uLWFwcCBib3Vu
ZCBkb21haW4uIl9zKTsKICAgICBlbHNlCiAgICAgICAgIGNvbGxlY3RSdWxlc0Zyb21Vc2VyU3R5
bGVTaGVldHMoZXh0ZW5zaW9uU3R5bGVTaGVldHMuaW5qZWN0ZWRVc2VyU3R5bGVTaGVldHMoKSwg
dGVtcFVzZXJTdHlsZS5nZXQoKSwgbWVkaWFRdWVyeUV2YWx1YXRvcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Mb2FkUGFyYW1ldGVycy5jcHAKaW5kZXggNmU1Njk5YTZmMGE3OGRkOGI4YzA4MTM2MjY0
YWUyMTNjMjg3ZjhmMS4uMjg5NjhlZGNhNmNhOTI5YWUxZGJlYzMwNjFjMmU0YzU5NDMyNDBlOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmNwcApAQCAtNTcsNyArNTcsNiBA
QCB2b2lkIExvYWRQYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogICAgIGVuY29kZXIuZW5jb2RlRW51bShsb2NrQmFja0ZvcndhcmRMaXN0KTsKICAgICBlbmNv
ZGVyIDw8IGNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeTsKICAgICBlbmNvZGVyIDw8IGlz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47Ci0gICAgZW5jb2RlciA8PCBoYXNOYXZpZ2F0ZWRB
d2F5RnJvbUFwcEJvdW5kRG9tYWluOwogCiAgICAgcGxhdGZvcm1FbmNvZGUoZW5jb2Rlcik7CiB9
CkBAIC0xMzgsOSArMTM3LDYgQEAgYm9vbCBMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVj
b2RlciYgZGVjb2RlciwgTG9hZFBhcmFtZXRlcnMmIGRhdGEpCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShkYXRhLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLmhhc05hdmlnYXRlZEF3
YXlGcm9tQXBwQm91bmREb21haW4pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCiAgICAg
aWYgKCFwbGF0Zm9ybURlY29kZShkZWNvZGVyLCBkYXRhKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuaAppbmRleCBhN2E0OWQwZWFkMzEw
NmVkODE2MjJlMTNiMjJmYjE2YzI2Yjg5MjdiLi4wYzExZjljOTIzMzExYTg4ZDkzM2FhYWI2OGI1
OTllNDQ2MTVhZDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1l
dGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmgKQEAgLTcw
LDggKzcwLDcgQEAgc3RydWN0IExvYWRQYXJhbWV0ZXJzIHsKICAgICBXZWJDb3JlOjpMb2NrSGlz
dG9yeSBsb2NrSGlzdG9yeSB7IFdlYkNvcmU6OkxvY2tIaXN0b3J5OjpObyB9OwogICAgIFdlYkNv
cmU6OkxvY2tCYWNrRm9yd2FyZExpc3QgbG9ja0JhY2tGb3J3YXJkTGlzdCB7IFdlYkNvcmU6Okxv
Y2tCYWNrRm9yd2FyZExpc3Q6Ok5vIH07CiAgICAgU3RyaW5nIGNsaWVudFJlZGlyZWN0U291cmNl
Rm9ySGlzdG9yeTsKLSAgICBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiB7IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpO
byB9OwotICAgIE5hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4gaGFzTmF2aWdhdGVkQXdh
eUZyb21BcHBCb3VuZERvbWFpbiB7IE5hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW46Ok5v
IH07CisgICAgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4geyBXVEY6Om51bGxvcHQgfTsKIAogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IGRhdGFEZXRlY3Rpb25Db250ZXh0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUG9saWN5RGVjaXNpb24uaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1BvbGljeURlY2lzaW9uLmgKaW5kZXggNDQ1ZTMyYjViOWVhYjMyYjQ3MTQ1
MTA3N2VlMWQzODQxOTA4NjEzYS4uODI5MTFiNjcxYTNmMjU1MzdiMGMyZmEyODVmZjYzNGQ4MmEw
NzBiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUG9saWN5RGVjaXNpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Qb2xpY3lEZWNpc2lvbi5oCkBAIC0zMywxMiArMzMs
OSBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotZW51bSBjbGFzcyBOYXZpZ2F0ZWRBd2F5RnJv
bUFwcEJvdW5kRG9tYWluIDogYm9vbCB7IFllcywgTm99OwotCiBzdHJ1Y3QgUG9saWN5RGVjaXNp
b24gewogICAgIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyIHsgfTsK
LSAgICBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbiB7IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObyB9OwotICAgIE5h
dmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4gaGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3Vu
ZERvbWFpbiB7IE5hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW46Ok5vIH07CisgICAgT3B0
aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4geyBXVEY6Om51bGxvcHQgfTsKICAgICBXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5
QWN0aW9uIHsgV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpJZ25vcmUgfTsKICAgICB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQgeyAwIH07CiAgICAgRG93bmxvYWRJRCBkb3dubG9hZElEIHsgMCB9OwpAQCAt
NTAsNyArNDcsNiBAQCBzdHJ1Y3QgUG9saWN5RGVjaXNpb24gewogICAgIHsKICAgICAgICAgZW5j
b2RlciA8PCBpZGVudGlmaWVyOwogICAgICAgICBlbmNvZGVyIDw8IGlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW47Ci0gICAgICAgIGVuY29kZXIgPDwgaGFzTmF2aWdhdGVkQXdheUZyb21BcHBC
b3VuZERvbWFpbjsKICAgICAgICAgZW5jb2RlciA8PCBwb2xpY3lBY3Rpb247CiAgICAgICAgIGVu
Y29kZXIgPDwgbmF2aWdhdGlvbklEOwogICAgICAgICBlbmNvZGVyIDw8IGRvd25sb2FkSUQ7CkBA
IC03MCwxMSArNjYsNiBAQCBzdHJ1Y3QgUG9saWN5RGVjaXNpb24gewogICAgICAgICBkZWNvZGVy
ID4+IGRlY29kZWRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOwogICAgICAgICBpZiAoIWRl
Y29kZWRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKQogICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKLSAgICAgICAgCi0gICAgICAgIE9wdGlvbmFsPE5hdmlnYXRlZEF3YXlGcm9t
QXBwQm91bmREb21haW4+IGRlY29kZWRIYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWlu
OwotICAgICAgICBkZWNvZGVyID4+IGRlY29kZWRIYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5k
RG9tYWluOwotICAgICAgICBpZiAoIWRlY29kZWRIYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5k
RG9tYWluKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgICAgICBPcHRp
b25hbDxXZWJDb3JlOjpQb2xpY3lBY3Rpb24+IGRlY29kZWRQb2xpY3lBY3Rpb247CiAgICAgICAg
IGRlY29kZXIgPj4gZGVjb2RlZFBvbGljeUFjdGlvbjsKQEAgLTEwMSw3ICs5Miw3IEBAIHN0cnVj
dCBQb2xpY3lEZWNpc2lvbiB7CiAgICAgICAgIGlmICghc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkK
ICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICAgICAgcmV0dXJuIHt7IFdU
Rk1vdmUoKmRlY29kZWRJZGVudGlmaWVyKSwgV1RGTW92ZSgqZGVjb2RlZElzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4pLCBXVEZNb3ZlKCpkZWNvZGVkSGFzTmF2aWdhdGVkQXdheUZyb21BcHBC
b3VuZERvbWFpbiksIFdURk1vdmUoKmRlY29kZWRQb2xpY3lBY3Rpb24pLCBXVEZNb3ZlKCpkZWNv
ZGVkTmF2aWdhdGlvbklEKSwgV1RGTW92ZSgqZGVjb2RlZERvd25sb2FkSUQpLCBXVEZNb3ZlKCpk
ZWNvZGVkV2Vic2l0ZVBvbGljaWVzRGF0YSksIFdURk1vdmUoKnNhbmRib3hFeHRlbnNpb25IYW5k
bGUpfX07CisgICAgICAgIHJldHVybiB7eyBXVEZNb3ZlKCpkZWNvZGVkSWRlbnRpZmllciksIFdU
Rk1vdmUoKmRlY29kZWRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSwgV1RGTW92ZSgqZGVj
b2RlZFBvbGljeUFjdGlvbiksIFdURk1vdmUoKmRlY29kZWROYXZpZ2F0aW9uSUQpLCBXVEZNb3Zl
KCpkZWNvZGVkRG93bmxvYWRJRCksIFdURk1vdmUoKmRlY29kZWRXZWJzaXRlUG9saWNpZXNEYXRh
KSwgV1RGTW92ZSgqc2FuZGJveEV4dGVuc2lvbkhhbmRsZSl9fTsKICAgICB9CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKaW5kZXgg
MzExOGUzZDIyYTMxNjNmNDI4ZWI2MWNhZjJjZGUwMDQxYzgyZTNmYi4uYzU0OTFiYThlYjgyZGY1
NTllMjA5MmQxZDVmOWE1ODhhNjFjYzkwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcApAQCAtMTU2LDE0ICsxNTYsMTQgQEAgdm9pZCBQ
cm92aXNpb25hbFBhZ2VQcm94eTo6aW5pdGlhbGl6ZVdlYlBhZ2UoUmVmUHRyPEFQSTo6V2Vic2l0
ZVBvbGljaWVzPiYmIHdlYnMKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RnJlZXpl
TGF5ZXJUcmVlRHVlVG9Td2lwZUFuaW1hdGlvbigpKTsKIH0KIAotdm9pZCBQcm92aXNpb25hbFBh
Z2VQcm94eTo6bG9hZERhdGEoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmlu
ZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRh
LCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbiwgTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbiBoYXNOYXZpZ2F0ZWRB
d2F5RnJvbUFwcEJvdW5kRG9tYWluLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdl
YnNpdGVQb2xpY2llcykKK3ZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWREYXRhKEFQSTo6
TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBj
b25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJp
bmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgT3B0aW9uYWw8TmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIE9wdGlvbmFsPFdl
YnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQogewogICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAibG9hZERhdGE6IHBhZ2VQcm94eUlEPSUiIFBS
SXU2NCAiIHdlYlBhZ2VJRD0lIiBQUkl1NjQsIG1fcGFnZS5pZGVudGlmaWVyKCkudG9VSW50NjQo
KSwgbV93ZWJQYWdlSUQudG9VSW50NjQoKSk7CiAKLSAgICBtX3BhZ2UubG9hZERhdGFXaXRoTmF2
aWdhdGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgbmF2aWdhdGlv
biwgZGF0YSwgTUlNRVR5cGUsIGVuY29kaW5nLCBiYXNlVVJMLCB1c2VyRGF0YSwgV2ViQ29yZTo6
U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXMsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4sIGhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4sIFdURk1vdmUod2Vic2l0
ZVBvbGljaWVzKSwgbmF2aWdhdGlvbi5sYXN0TmF2aWdhdGlvbkFjdGlvbigpLnNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3kpOworICAgIG1fcGFnZS5sb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hh
cmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9uLCBkYXRhLCBN
SU1FVHlwZSwgZW5jb2RpbmcsIGJhc2VVUkwsIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVh
dEFzQ29udGludWluZ0xvYWQ6OlllcywgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgV1RG
TW92ZSh3ZWJzaXRlUG9saWNpZXMpLCBuYXZpZ2F0aW9uLmxhc3ROYXZpZ2F0aW9uQWN0aW9uKCku
c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CiB9CiAKLXZvaWQgUHJvdmlzaW9uYWxQYWdl
UHJveHk6OmxvYWRSZXF1ZXN0KEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBPcHRpb25h
bDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
biwgTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbiBoYXNOYXZpZ2F0ZWRBd2F5RnJvbUFw
cEJvdW5kRG9tYWluLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xp
Y2llcykKK3ZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KEFQSTo6TmF2aWdh
dGlvbiYgbmF2aWdhdGlvbiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQVBJ
OjpPYmplY3QqIHVzZXJEYXRhLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4g
aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0
YT4mJiB3ZWJzaXRlUG9saWNpZXMpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9j
ZXNzU3dhcHBpbmcsICJsb2FkUmVxdWVzdDogcGFnZVByb3h5SUQ9JSIgUFJJdTY0ICIgd2ViUGFn
ZUlEPSUiIFBSSXU2NCwgbV9wYWdlLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJ
RC50b1VJbnQ2NCgpKTsKIApAQCAtMTczLDcgKzE3Myw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdl
UHJveHk6OmxvYWRSZXF1ZXN0KEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgV2ViQ29yZTo6
UmVzCiAgICAgaWYgKG5hdmlnYXRpb24uZnJvbUl0ZW0oKSAmJiBuYXZpZ2F0aW9uLmxvY2tCYWNr
Rm9yd2FyZExpc3QoKSA9PSBXZWJDb3JlOjpMb2NrQmFja0ZvcndhcmRMaXN0OjpZZXMpCiAgICAg
ICAgIG5hdmlnYXRpb24uZnJvbUl0ZW0oKS0+c2V0TGFzdFByb2Nlc3NJZGVudGlmaWVyKG1fcHJv
Y2Vzcy0+Y29yZVByb2Nlc3NJZGVudGlmaWVyKCkpOwogCi0gICAgbV9wYWdlLmxvYWRSZXF1ZXN0
V2l0aE5hdmlnYXRpb25TaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIG5h
dmlnYXRpb24sIFdURk1vdmUocmVxdWVzdCksIG5hdmlnYXRpb24ubGFzdE5hdmlnYXRpb25BY3Rp
b24oKS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCB1c2VyRGF0YSwgV2ViQ29yZTo6U2hv
dWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXMsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4sIGhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4sIFdURk1vdmUod2Vic2l0ZVBv
bGljaWVzKSk7CisgICAgbV9wYWdlLmxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQobV9w
cm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIG5hdmlnYXRpb24sIFdURk1vdmUocmVxdWVz
dCksIG5hdmlnYXRpb24ubGFzdE5hdmlnYXRpb25BY3Rpb24oKS5zaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5LCB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2Fk
OjpZZXMsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFdURk1vdmUod2Vic2l0ZVBvbGlj
aWVzKSk7CiB9CiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0
ZW0oQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBp
dGVtLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgd2Vic2l0ZVBvbGljaWVzKQpAQCAt
MzU3LDcgKzM1Nyw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb25TeW5jKEZyYW1lSWRlbnRpZmllciBmCiAgICAgY29uc3QgVXNlckRh
dGEmIHVzZXJEYXRhLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgaWYgKCFpc01h
aW5GcmFtZSB8fCAobV9tYWluRnJhbWUgJiYgbV9tYWluRnJhbWUtPmZyYW1lSUQoKSAhPSBmcmFt
ZUlEKSB8fCBuYXZpZ2F0aW9uSUQgIT0gbV9uYXZpZ2F0aW9uSUQpIHsKLSAgICAgICAgcmVwbHko
UG9saWN5RGVjaXNpb24geyBpZGVudGlmaWVyLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6
Tm8sIE5hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW46Ok5vLCBXZWJDb3JlOjpQb2xpY3lB
Y3Rpb246Oklnbm9yZSwgbmF2aWdhdGlvbklELCBEb3dubG9hZElEKCksIFdURjo6bnVsbG9wdCB9
KTsKKyAgICAgICAgcmVwbHkoUG9saWN5RGVjaXNpb24geyBpZGVudGlmaWVyLCBXVEY6Om51bGxv
cHQsIFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6SWdub3JlLCBuYXZpZ2F0aW9uSUQsIERvd25sb2Fk
SUQoKSwgV1RGOjpudWxsb3B0IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAppbmRleCA0NGJmY2Ji
ZGMyYmEzMTBkMDRmNTRlYTQwYzY0NzJkODNlZTBkMGMyLi45ZDcyMTMxMzg3OGEwYjQ2ZDNkMDQ0
OTVkNGJhNzE4ZWU4NTgwM2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
cm92aXNpb25hbFBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zp
c2lvbmFsUGFnZVByb3h5LmgKQEAgLTkyLDggKzkyLDggQEAgcHVibGljOgogICAgIExheWVySG9z
dGluZ0NvbnRleHRJRCBjb250ZXh0SURGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24oKSBjb25zdCB7
IHJldHVybiBtX2NvbnRleHRJREZvclZpc2liaWxpdHlQcm9wYWdhdGlvbjsgfQogI2VuZGlmCiAK
LSAgICB2b2lkIGxvYWREYXRhKEFQSTo6TmF2aWdhdGlvbiYsIGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNv
bnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBPcHRpb25hbDxOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIE5hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4s
IE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBXVEY6Om51bGxvcHQpOwotICAgIHZv
aWQgbG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4+LCBOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluLCBPcHRpb25hbDxXZWJzaXRl
UG9saWNpZXNEYXRhPiYmID0gV1RGOjpudWxsb3B0KTsKKyAgICB2b2lkIGxvYWREYXRhKEFQSTo6
TmF2aWdhdGlvbiYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgTUlN
RVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJ
OjpPYmplY3QqIHVzZXJEYXRhLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4s
IE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBXVEY6Om51bGxvcHQpOworICAgIHZv
aWQgbG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4+LCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmID0gV1RGOjpudWxsb3B0KTsK
ICAgICB2b2lkIGdvVG9CYWNrRm9yd2FyZEl0ZW0oQVBJOjpOYXZpZ2F0aW9uJiwgV2ViQmFja0Zv
cndhcmRMaXN0SXRlbSYsIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJik7CiAgICAgdm9p
ZCBjYW5jZWwoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5k
ZXggNTJkYTFmNzZiNGE3MzYxMmJiODE1MDZhMzkwZmE3NjY5YjY5NDViNS4uYmVmNjkwYzEwOGY1
NzU2YmJiYjA1MjJjYWM0MzI1MjhhZTBjZWMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCkBAIC0xMzA1LDExICsxMzA1LDExIEBAIFJlZlB0cjxBUEk6Ok5hdmln
YXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgU2hvCiAgICAgaWYgKHNob3VsZEZvcmNlRm9yZWdyb3VuZFByaW9yaXR5Rm9yQ2xpZW50TmF2
aWdhdGlvbigpKQogICAgICAgICBuYXZpZ2F0aW9uLT5zZXRDbGllbnROYXZpZ2F0aW9uQWN0aXZp
dHkocHJvY2VzcygpLnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eSgiQ2xpZW50IG5hdmln
YXRpb24iX3MpKTsKIAotICAgIGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQobV9wcm9j
ZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIG5hdmlnYXRpb24uZ2V0KCksIFdURk1vdmUocmVx
dWVzdCksIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHVzZXJEYXRhLCBTaG91bGRUcmVh
dEFzQ29udGludWluZ0xvYWQ6Ok5vLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIGhh
c05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4oKSk7CisgICAgbG9hZFJlcXVlc3RXaXRo
TmF2aWdhdGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgbmF2aWdh
dGlvbi5nZXQoKSwgV1RGTW92ZShyZXF1ZXN0KSwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSwgdXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8sIGlzTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4oKSk7CiAgICAgcmV0dXJuIG5hdmlnYXRpb247CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYgcHJvY2VzcywgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBB
UEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwg
QVBJOjpPYmplY3QqIHVzZXJEYXRhLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxk
VHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgTmF2aWdhdGVkQXdheUZyb21BcHBCb3Vu
ZERvbWFpbiBoYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluLCBPcHRpb25hbDxXZWJz
aXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKK3ZvaWQgV2ViUGFnZVByb3h5Ojps
b2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJv
Y2VzcywgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBBUEk6Ok5hdmlnYXRpb24m
IG5hdmlnYXRpb24sIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVz
ZXJEYXRhLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0NvbnRpbnVp
bmdMb2FkLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRl
UG9saWNpZXMpCiB7CiAgICAgQVNTRVJUKCFtX2lzQ2xvc2VkKTsKIApAQCAtMTMzMiw3ICsxMzMy
LDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQo
UmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKICAgICBsb2FkUGFyYW1ldGVycy5sb2NrQmFj
a0ZvcndhcmRMaXN0ID0gbmF2aWdhdGlvbi5sb2NrQmFja0ZvcndhcmRMaXN0KCk7CiAgICAgbG9h
ZFBhcmFtZXRlcnMuY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5ID0gbmF2aWdhdGlvbi5j
bGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkoKTsKICAgICBsb2FkUGFyYW1ldGVycy5pc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsK
LSAgICBsb2FkUGFyYW1ldGVycy5oYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluID0g
aGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbjsKICAgICBtYXliZUluaXRpYWxpemVT
YW5kYm94RXh0ZW5zaW9uSGFuZGxlKHByb2Nlc3MsIHVybCwgbV9wYWdlTG9hZFN0YXRlLnJlc291
cmNlRGlyZWN0b3J5VVJMKCksIGxvYWRQYXJhbWV0ZXJzLnNhbmRib3hFeHRlbnNpb25IYW5kbGUp
OwogCiAgICAgYWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1ldGVycyk7CkBAIC0x
NDI5LDExICsxNDI4LDExIEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6
bG9hZERhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjCiAgICAgaWYgKHNob3Vs
ZEZvcmNlRm9yZWdyb3VuZFByaW9yaXR5Rm9yQ2xpZW50TmF2aWdhdGlvbigpKQogICAgICAgICBu
YXZpZ2F0aW9uLT5zZXRDbGllbnROYXZpZ2F0aW9uQWN0aXZpdHkocHJvY2VzcygpLnRocm90dGxl
cigpLmZvcmVncm91bmRBY3Rpdml0eSgiQ2xpZW50IG5hdmlnYXRpb24iX3MpKTsKIAotICAgIGxv
YWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdl
SUQsIG5hdmlnYXRpb24sIGRhdGEsIE1JTUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdXNlckRh
dGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8sIGlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4oKSwgaGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbigpLCBXVEY6Om51
bGxvcHQsIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOworICAgIGxvYWREYXRhV2l0aE5h
dmlnYXRpb25TaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIG5hdmlnYXRp
b24sIGRhdGEsIE1JTUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdXNlckRhdGEsIFNob3VsZFRy
ZWF0QXNDb250aW51aW5nTG9hZDo6Tm8sIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwg
V1RGOjpudWxsb3B0LCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsKICAgICByZXR1cm4g
bmF2aWdhdGlvbjsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0aE5hdmlnYXRp
b25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciB3ZWJQYWdlSUQsIEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJp
bmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0
YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9h
ZCwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4sIE5hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4gaGFzTmF2aWdhdGVk
QXdheUZyb21BcHBCb3VuZERvbWFpbiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3
ZWJzaXRlUG9saWNpZXMsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkRGF0YVdpdGhOYXZpZ2F0
aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgd2ViUGFnZUlELCBBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3Ry
aW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRh
dGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xv
YWQsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xp
Y2llcywgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5KQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWREYXRh
V2l0aE5hdmlnYXRpb24iKTsKIApAQCAtMTQ1NCw3ICsxNDUzLDYgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBw
cm9jZXNzLAogICAgIGxvYWRQYXJhbWV0ZXJzLndlYnNpdGVQb2xpY2llcyA9IFdURk1vdmUod2Vi
c2l0ZVBvbGljaWVzKTsKICAgICBsb2FkUGFyYW1ldGVycy5zaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5ID0gc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTsKICAgICBsb2FkUGFyYW1ldGVy
cy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbjsKLSAgICBsb2FkUGFyYW1ldGVycy5oYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9t
YWluID0gaGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbjsKICAgICBhZGRQbGF0Zm9y
bUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKIAogICAgIHByb2Nlc3MtPmFzc3VtZVJl
YWRBY2Nlc3NUb0Jhc2VVUkwoKnRoaXMsIGJhc2VVUkwpOwpAQCAtMzE1Niw5ICszMTU0LDEwIEBA
IGJvb2wgV2ViUGFnZVByb3h5OjpzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluQW5kQ2hl
Y2tJZlBlcm1pdHRlZChib29sIGlzTWFpCiAgICAgICAgICAgICBtX2NvbmZpZ3VyYXRpb24tPnNl
dFdlYlZpZXdDYXRlZ29yeShXZWJWaWV3Q2F0ZWdvcnk6OkFwcEJvdW5kRG9tYWluKTsKICAgICAg
ICAgICAgIG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluOjpZZXM7CiAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAobV9oYXNF
eGVjdXRlZEFwcEJvdW5kQmVoYXZpb3JCZWZvcmVOYXZpZ2F0aW9uKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIG1fY29uZmlndXJhdGlvbi0+c2V0V2ViVmlld0Nh
dGVnb3J5KFdlYlZpZXdDYXRlZ29yeTo6SW5BcHBCcm93c2VyKTsKICAgICAgICAgICAgIG1faXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpO
bzsKLSAgICAgICAgICAgIG1faGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbiA9IE5h
dmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW46OlllczsKICAgICAgICAgfQogICAgIH0KICNl
bHNlCkBAIC0zMzAwLDcgKzMyOTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZp
Z2F0aW9uUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQQogdm9pZCBX
ZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwg
QVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+
JiYgd2Vic2l0ZVBvbGljaWVzLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYgc2VuZGVyLCBP
cHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IHNhbmRib3hFeHRlbnNpb25IYW5kbGUs
IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3Mgd2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2Vz
cykKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAgc2VuZGVyLT5z
ZW5kKFBvbGljeURlY2lzaW9uIHsgc2VuZGVyLT5pZGVudGlmaWVyKCksIGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4oKSwgaGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbigpLCBQ
b2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgRG93bmxvYWRJRCgpLCBXVEY6Om51bGxvcHQgfSk7Cisg
ICAgICAgIHNlbmRlci0+c2VuZChQb2xpY3lEZWNpc2lvbiB7IHNlbmRlci0+aWRlbnRpZmllcigp
LCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIFBvbGljeUFjdGlvbjo6SWdub3JlLCAw
LCBEb3dubG9hZElEKCksIFdURjo6bnVsbG9wdCB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtMzMyNyw3ICszMzI2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5
RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKgogICAgIGlmICh3
ZWJzaXRlUG9saWNpZXMpCiAgICAgICAgIHdlYnNpdGVQb2xpY2llc0RhdGEgPSB3ZWJzaXRlUG9s
aWNpZXMtPmRhdGEoKTsKIAotICAgIHNlbmRlci0+c2VuZChQb2xpY3lEZWNpc2lvbiB7IHNlbmRl
ci0+aWRlbnRpZmllcigpLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIGhhc05hdmln
YXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4oKSwgYWN0aW9uLCBuYXZpZ2F0aW9uID8gbmF2aWdh
dGlvbi0+bmF2aWdhdGlvbklEKCkgOiAwLCBkb3dubG9hZElELCBXVEZNb3ZlKHdlYnNpdGVQb2xp
Y2llc0RhdGEpLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpIH0pOworICAgIHNlbmRl
ci0+c2VuZChQb2xpY3lEZWNpc2lvbiB7IHNlbmRlci0+aWRlbnRpZmllcigpLCBpc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluKCksIGFjdGlvbiwgbmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5h
dmlnYXRpb25JRCgpIDogMCwgZG93bmxvYWRJRCwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXNEYXRh
KSwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSB9KTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OmNvbW1pdFByb3Zpc2lvbmFsUGFnZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJh
bWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3Vz
dG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3Jl
OjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCB1c2VkTGVnYWN5VExTLCBi
b29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJl
Q29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYgdXNlckRh
dGEpCkBAIC0zNDA4LDkgKzM0MDcsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZp
Z2F0aW9uSW5OZXdQcm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgcwogICAgICAg
ICAvLyBGSVhNRTogV29yayBvdXQgdGltaW5nIG9mIHJlc3BvbmRpbmcgd2l0aCB0aGUgbGFzdCBw
b2xpY3kgZGVsZWdhdGUsIGV0YwogICAgICAgICBBU1NFUlQoIW5hdmlnYXRpb24tPmN1cnJlbnRS
ZXF1ZXN0KCkuaXNFbXB0eSgpKTsKICAgICAgICAgaWYgKGF1dG8mIHN1YnN0aXR1dGVEYXRhID0g
bmF2aWdhdGlvbi0+c3Vic3RpdHV0ZURhdGEoKSkKLSAgICAgICAgICAgIG1fcHJvdmlzaW9uYWxQ
YWdlLT5sb2FkRGF0YShuYXZpZ2F0aW9uLCB7IHN1YnN0aXR1dGVEYXRhLT5jb250ZW50LmRhdGEo
KSwgc3Vic3RpdHV0ZURhdGEtPmNvbnRlbnQuc2l6ZSgpIH0sIHN1YnN0aXR1dGVEYXRhLT5NSU1F
VHlwZSwgc3Vic3RpdHV0ZURhdGEtPmVuY29kaW5nLCBzdWJzdGl0dXRlRGF0YS0+YmFzZVVSTCwg
c3Vic3RpdHV0ZURhdGEtPnVzZXJEYXRhLmdldCgpLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluKCksIGhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4oKSwgV1RGTW92ZSh3ZWJz
aXRlUG9saWNpZXNEYXRhKSk7CisgICAgICAgICAgICBtX3Byb3Zpc2lvbmFsUGFnZS0+bG9hZERh
dGEobmF2aWdhdGlvbiwgeyBzdWJzdGl0dXRlRGF0YS0+Y29udGVudC5kYXRhKCksIHN1YnN0aXR1
dGVEYXRhLT5jb250ZW50LnNpemUoKSB9LCBzdWJzdGl0dXRlRGF0YS0+TUlNRVR5cGUsIHN1YnN0
aXR1dGVEYXRhLT5lbmNvZGluZywgc3Vic3RpdHV0ZURhdGEtPmJhc2VVUkwsIHN1YnN0aXR1dGVE
YXRhLT51c2VyRGF0YS5nZXQoKSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBXVEZN
b3ZlKHdlYnNpdGVQb2xpY2llc0RhdGEpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9w
cm92aXNpb25hbFBhZ2UtPmxvYWRSZXF1ZXN0KG5hdmlnYXRpb24sIFJlc291cmNlUmVxdWVzdCB7
IG5hdmlnYXRpb24tPmN1cnJlbnRSZXF1ZXN0KCkgfSwgbnVsbHB0ciwgaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbigpLCBoYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluKCksIFdU
Rk1vdmUod2Vic2l0ZVBvbGljaWVzRGF0YSkpOworICAgICAgICAgICAgbV9wcm92aXNpb25hbFBh
Z2UtPmxvYWRSZXF1ZXN0KG5hdmlnYXRpb24sIFJlc291cmNlUmVxdWVzdCB7IG5hdmlnYXRpb24t
PmN1cnJlbnRSZXF1ZXN0KCkgfSwgbnVsbHB0ciwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bigpLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llc0RhdGEpKTsKICAgICB9OwogICAgIGlmIChtX2lu
c3BlY3RvckNvbnRyb2xsZXItPnNob3VsZFBhdXNlTG9hZGluZygqbV9wcm92aXNpb25hbFBhZ2Up
KQogICAgICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPnNldENvbnRpbnVlTG9hZGluZ0NhbGxi
YWNrKCptX3Byb3Zpc2lvbmFsUGFnZSwgV1RGTW92ZShjb250aW51YXRpb24pKTsKQEAgLTUxMjQs
NyArNTEyMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAKICAgICBpZiAoIWNoZWNrVVJM
UmVjZWl2ZWRGcm9tQ3VycmVudE9yUHJldmlvdXNXZWJQcm9jZXNzKHByb2Nlc3MsIHJlcXVlc3Qu
dXJsKCkpKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vzcywg
Iklnbm9yaW5nIHJlcXVlc3QgdG8gbG9hZCB0aGlzIG1haW4gcmVzb3VyY2UgYmVjYXVzZSBpdCBp
cyBvdXRzaWRlIHRoZSBzYW5kYm94Iik7Ci0gICAgICAgIHNlbmRlci0+c2VuZChQb2xpY3lEZWNp
c2lvbiB7IHNlbmRlci0+aWRlbnRpZmllcigpLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
KCksIGhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4oKSwgUG9saWN5QWN0aW9uOjpJ
Z25vcmUsIDAsIERvd25sb2FkSUQoKSwgV1RGOjpudWxsb3B0IH0pOworICAgICAgICBzZW5kZXIt
PnNlbmQoUG9saWN5RGVjaXNpb24geyBzZW5kZXItPmlkZW50aWZpZXIoKSwgaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbigpLCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgRG93bmxvYWRJRCgp
LCBXVEY6Om51bGxvcHQgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTUxOTgsOSAr
NTE5Nyw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAgICAgICAgIAogICAgICAgICBpZiAo
cG9saWN5QWN0aW9uICE9IFBvbGljeUFjdGlvbjo6SWdub3JlKSB7CiAgICAgICAgICAgICBpZiAo
IXNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW5BbmRDaGVja0lmUGVybWl0dGVkKGZyYW1l
LT5pc01haW5GcmFtZSgpLCBuYXZpZ2F0aW9uLT5jdXJyZW50UmVxdWVzdCgpLnVybCgpLCBpc0Fw
cEJvdW5kRG9tYWluKSkgewotICAgICAgICAgICAgICAgIGF1dG8gZXJyb3IgPSBSZXNvdXJjZUVy
cm9yIHsgU3RyaW5nIHsgfSwgMCwgbmF2aWdhdGlvbi0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSwg
IkF0dGVtcHRlZCBuYXZpZ2F0aW9uIGF3YXkgZnJvbSBhcHAtYm91bmQgZG9tYWluIl9zIH07Cisg
ICAgICAgICAgICAgICAgYXV0byBlcnJvciA9IFJlc291cmNlRXJyb3IgeyBTdHJpbmcgeyB9LCAw
LCBuYXZpZ2F0aW9uLT5jdXJyZW50UmVxdWVzdCgpLnVybCgpLCAiQXBwLWJvdW5kIGRvbWFpbiBm
YWlsdXJlIl9zIH07CiAgICAgICAgICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRGYWls
UHJvdmlzaW9uYWxOYXZpZ2F0aW9uV2l0aEVycm9yKCp0aGlzLCBGcmFtZUluZm9EYXRhIHsgZnJh
bWVJbmZvIH0sIG5hdmlnYXRpb24uZ2V0KCksIGVycm9yLCB1c2VyRGF0YU9iamVjdCk7Ci0gICAg
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChMb2FkaW5nLCAiSWdub3Jp
bmcgcmVxdWVzdCB0byBsb2FkIHRoaXMgbWFpbiByZXNvdXJjZSBiZWNhdXNlIGl0IGlzIGF0dGVt
cHRpbmcgdG8gbmF2aWdhdGUgYXdheSBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4iKTsKKyAgICAg
ICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKExvYWRpbmcsICJJZ25vcmlu
ZyByZXF1ZXN0IHRvIGxvYWQgdGhpcyBtYWluIHJlc291cmNlIGJlY2F1c2UgaXQgaXMgYXR0ZW1w
dGluZyB0byBuYXZpZ2F0ZSBhd2F5IGZyb20gYW4gYXBwLWJvdW5kIGRvbWFpbiBvciBuYXZpZ2F0
ZSBhZnRlciB1c2luZyByZXN0cmljdGVkIEFQSXMiKTsKICAgICAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQpAQCAtNTM2NSw3ICs1MzY0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNz
UHJveHkKICAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdURk1vdmUocHJvY2Vz
cyksICpmcmFtZSwgV1RGTW92ZShmcmFtZUluZm8pLCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUobmF2
aWdhdGlvbkFjdGlvbkRhdGEpLCBXVEZNb3ZlKG9yaWdpbmF0aW5nRnJhbWVJbmZvKSwgb3JpZ2lu
YXRpbmdQYWdlSUQsIG9yaWdpbmFsUmVxdWVzdCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShy
ZXF1ZXN0Qm9keSksIFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSksIHVzZXJEYXRhLCBzZW5kZXIu
Y29weVJlZigpKTsKIAogICAgIC8vIElmIHRoZSBjbGllbnQgZGlkIG5vdCByZXNwb25kIHN5bmNo
cm9ub3VzbHksIHByb2NlZWQgd2l0aCB0aGUgbG9hZC4KLSAgICBzZW5kZXItPnNlbmQoUG9saWN5
RGVjaXNpb24geyBzZW5kZXItPmlkZW50aWZpZXIoKSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbigpLCBoYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluKCksIFBvbGljeUFjdGlv
bjo6VXNlLCBuYXZpZ2F0aW9uSUQsIERvd25sb2FkSUQoKSwgV1RGOjpudWxsb3B0IH0pOworICAg
IHNlbmRlci0+c2VuZChQb2xpY3lEZWNpc2lvbiB7IHNlbmRlci0+aWRlbnRpZmllcigpLCBpc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIFBvbGljeUFjdGlvbjo6VXNlLCBuYXZpZ2F0aW9u
SUQsIERvd25sb2FkSUQoKSwgV1RGOjpudWxsb3B0IH0pOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRp
ZmllciwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIHVpbnQ2NF90IGxp
c3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKaW5kZXggOTY1MjNmMmZkZWE3YjVlYWRhOWEzYzBkY2VjMTFhMWI3Mzcw
NGNjMS4uNTdmNzlkOTRmMjQwNzM0MzU3YmRiYmE3MGU5ZjM3OGM5NzE1YzhiMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE2NDksOCArMTY0OSw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZChS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRl
bnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBG
cmFtZUluZm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFtZUluZm8sIE9wdGlvbmFsPFdlYlBhZ2VQcm94
eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6
Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgdWludDY0X3QgbGlzdGVuZXJJ
RCk7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0
IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVz
ZXJEYXRhJik7CiAgICAgdm9pZCBzdGFydFVSTFNjaGVtZVRhc2tTaGFyZWQoUmVmPFdlYlByb2Nl
c3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFVSTFNjaGVtZVRhc2tQYXJhbWV0
ZXJzJiYpOwotICAgIHZvaWQgbG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQVBJOjpOYXZpZ2F0aW9uJiwg
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3Qg
U3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNl
ckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8TmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWlu
LCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmID0gV1RGOjpudWxsb3B0LCBXZWJDb3Jl
OjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cpOwotICAgIHZvaWQgbG9hZFJlcXVlc3RXaXRo
TmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgQVBJOjpOYXZpZ2F0aW9uJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdl
YkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIEFQSTo6T2JqZWN0KiB1c2VyRGF0
YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRpb25hbDxOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbj4sIE5hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4sIE9w
dGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBXVEY6Om51bGxvcHQpOworICAgIHZvaWQg
bG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgQVBJOjpOYXZpZ2F0aW9uJiwgY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywg
Y29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNo
b3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4+LCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmID0gV1RGOjpudWxsb3B0LCBX
ZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gV2ViQ29yZTo6U2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cpOworICAgIHZvaWQgbG9hZFJlcXVl
c3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgQVBJOjpOYXZpZ2F0aW9uJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIEFQSTo6T2JqZWN0KiB1
c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRpb25hbDxO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+
JiYgPSBXVEY6Om51bGxvcHQpOwogICAgIHZvaWQgYmFja0ZvcndhcmRHb1RvSXRlbVNoYXJlZChS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVu
dGlmaWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJCYWNrRm9yd2FyZExpc3RD
b3VudHMmKT4mJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3lu
Y1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IGJvb2wgaXNNYWluRnJhbWUsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJ
ZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYs
IEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5mbywgT3B0aW9uYWw8V2ViUGFnZVBy
b3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBD
OjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luY0RlbGF5ZWRSZXBseSYm
KTsKICNpZiBVU0UoUVVJQ0tfTE9PSykKQEAgLTE3NjIsNiArMTc2Miw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlbW92ZU1lZGlhVXNhZ2VNYW5hZ2VyU2Vzc2lvbihXZWJDb3JlOjpNZWRpYVNlc3Np
b25JZGVudGlmaWVyKTsKICNlbmRpZgogCisgICAgdm9pZCBzZXRIYXNFeGVjdXRlZEFwcEJvdW5k
QmVoYXZpb3JCZWZvcmVOYXZpZ2F0aW9uKCkgeyBtX2hhc0V4ZWN1dGVkQXBwQm91bmRCZWhhdmlv
ckJlZm9yZU5hdmlnYXRpb24gPSB0cnVlOyB9CisgICAgICAgIAogcHJpdmF0ZToKICAgICBXZWJQ
YWdlUHJveHkoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIFJlZjxBUEk6OlBhZ2VDb25m
aWd1cmF0aW9uPiYmKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwpAQCAtMjMxOSw3
ICsyMzIxLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIG1ha2VTdG9yYWdlU3BhY2VSZXF1ZXN0KFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdWlu
dDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2UsIHVpbnQ2NF90
IGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJik7CiAgICAgICAgIAogICAgIGJvb2wgc2V0SXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbkFuZENoZWNrSWZQZXJtaXR0ZWQoYm9vbCBpc01haW5GcmFt
ZSwgY29uc3QgVVJMJiwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+KTsKLSAg
ICBOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluIGhhc05hdmlnYXRlZEF3YXlGcm9tQXBw
Qm91bmREb21haW4oKSBjb25zdCB7IHJldHVybiBtX2hhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91
bmREb21haW47IH0KICAgICAgICAgCiAgICAgY29uc3QgSWRlbnRpZmllciBtX2lkZW50aWZpZXI7
CiAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV93ZWJQYWdlSUQ7CkBAIC0yODE1LDExICsy
ODE2LDExIEBAIHByaXZhdGU6CiAgICAgTW9ub3RvbmljVGltZSBtX2RpZEZpbmlzaERvY3VtZW50
TG9hZEZvck1haW5GcmFtZVRpbWVzdGFtcDsKICNlbmRpZgogICAgICAgICAKLSAgICBPcHRpb25h
bDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluIHsgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vIH07Ci0gICAgTmF2aWdhdGVkQXdh
eUZyb21BcHBCb3VuZERvbWFpbiBtX2hhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4g
eyBOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluOjpObyB9OworICAgIE9wdGlvbmFsPE5h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4g
eyBXVEY6Om51bGxvcHQgfTsKICAgICBib29sIG1faWdub3Jlc0FwcEJvdW5kRG9tYWlucyB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX3VzZXJTY3JpcHRzTm90aWZpZWQgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zIHsgZmFsc2UgfTsKKyAgICBi
b29sIG1faGFzRXhlY3V0ZWRBcHBCb3VuZEJlaGF2aW9yQmVmb3JlTmF2aWdhdGlvbiB7IGZhbHNl
IH07CiAKICNpZiBFTkFCTEUoUk9VVElOR19BUkJJVFJBVElPTikKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8QXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0b3JQcm94eT4gbV9yb3V0aW5nQXJiaXRyYXRv
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bgppbmRleCA4ZjgwYmE0MDgxZGRlYmQ1ZmQyOGNkOTljNDIzYTNhNjA2NzU2MWVjLi5hMDNhNWE3
NTY2MjdkZGYwYmZkOTRiNDkyNmM5OTMxOGZkOWRlYWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC01OTcsNCArNTk3LDUgQEAg
bWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBSZW1vdmVNZWRpYVVzYWdlTWFuYWdlclNl
c3Npb24oV2ViQ29yZTo6TWVkaWFTZXNzaW9uSWRlbnRpZmllciBpZGVudGlmaWVyKTsKICNlbmRp
ZgogCisgICAgU2V0SGFzRXhlY3V0ZWRBcHBCb3VuZEJlaGF2aW9yQmVmb3JlTmF2aWdhdGlvbigp
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA0OGVhNDY4MmMwOTQ1YTQw
OTA4MWFiMDE4MTQxZTg2NTNlZWRiZGE3Li5hYWVlOGYyNjc1ZmQxNjhiMzQ5ZTEyZDc1NDdhMjRj
MGZjNjk0OGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTgzMCw3ICs4
MzAsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZv
clJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9ucwogICAgIHVpbnQ2NF90IGxpc3RlbmVySUQg
PSBtX2ZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyKGlkZW50aWZpZXIsIFdURk1vdmUoZnVuY3Rp
b24pLCBXZWJGcmFtZTo6Rm9yTmF2aWdhdGlvbkFjdGlvbjo6Tm8pOwogICAgIGlmICghd2ViUGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JSZXNwb25zZSht
X2ZyYW1lLT5mcmFtZUlEKCksIG1fZnJhbWUtPmluZm8oKSwgaWRlbnRpZmllciwgbmF2aWdhdGlv
bklELCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd1Jlc3BvbnNlLCBkb3dubG9hZEF0dHJpYnV0
ZSwgbGlzdGVuZXJJRCwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3Jt
T2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSkpIHsKICAgICAgICAgV0VC
RlJBTUVMT0FERVJDTElFTlRfUkVMRUFTRV9MT0coTmV0d29yaywgImRpc3BhdGNoRGVjaWRlUG9s
aWN5Rm9yUmVzcG9uc2U6IGlnbm9yaW5nIGJlY2F1c2UgV2ViUGFnZVByb3h5OjpEZWNpZGVQb2xp
Y3lGb3JSZXNwb25zZSBmYWlsZWQiKTsKLSAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGlj
eURlY2lzaW9uKGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9uIHsgaWRlbnRpZmllciwgTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW46Ok5vLCBOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWlu
OjpObywgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSwgeyB9IH0pOworICAgICAgICBtX2Zy
YW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24g
eyBpZGVudGlmaWVyLCBXVEY6Om51bGxvcHQsIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCB7IH0s
IHsgfSB9KTsKICAgICB9CiB9CiAKQEAgLTk5MiwxNyArOTkyLDE3IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25z
dCBOYXZpZ2F0CiAgICAgICAgIFBvbGljeURlY2lzaW9uIHBvbGljeURlY2lzaW9uOwogCiAgICAg
ICAgIGlmICghd2ViUGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMobV9mcmFtZS0+ZnJhbWVJRCgpLCBtX2ZyYW1l
LT5pc01haW5GcmFtZSgpLCBtX2ZyYW1lLT5pbmZvKCksIHJlcXVlc3RJZGVudGlmaWVyLCBkb2N1
bWVudExvYWRlci0+bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBvcmlnaW5h
dGluZ0ZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlELCBuYXZpZ2F0aW9uQWN0aW9uLnJl
c291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHsgcmVxdWVz
dC5odHRwQm9keSgpIH0sIHJlZGlyZWN0UmVzcG9uc2UsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgp
KSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b25TeW5jOjpSZXBseShwb2xpY3lEZWNpc2lvbikpKSB7Ci0gICAgICAgICAgICBtX2ZyYW1lLT5k
aWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24geyByZXF1
ZXN0SWRlbnRpZmllciwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vLCBOYXZpZ2F0ZWRB
d2F5RnJvbUFwcEJvdW5kRG9tYWluOjpObywgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSwg
eyB9IH0pOworICAgICAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxp
c3RlbmVySUQsIFBvbGljeURlY2lzaW9uIHsgcmVxdWVzdElkZW50aWZpZXIsIFdURjo6bnVsbG9w
dCwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSwgeyB9IH0pOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lz
aW9uKGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9uIHsgcG9saWN5RGVjaXNpb24uaWRlbnRpZmll
ciwgcG9saWN5RGVjaXNpb24uaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgcG9saWN5RGVj
aXNpb24uaGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbiwgcG9saWN5RGVjaXNpb24u
cG9saWN5QWN0aW9uLCAwLCBwb2xpY3lEZWNpc2lvbi5kb3dubG9hZElELCB7IH19KTsKKyAgICAg
ICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFBvbGljeURl
Y2lzaW9uIHsgcG9saWN5RGVjaXNpb24uaWRlbnRpZmllciwgcG9saWN5RGVjaXNpb24uaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgcG9saWN5RGVjaXNpb24ucG9saWN5QWN0aW9uLCAwLCBw
b2xpY3lEZWNpc2lvbi5kb3dubG9hZElELCB7IH19KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIEFTU0VSVChwb2xpY3lEZWNpc2lvbk1vZGUgPT0gUG9saWN5RGVjaXNpb25Nb2RlOjpB
c3luY2hyb25vdXMpOwogICAgIGlmICghd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmMobV9mcmFtZS0+ZnJhbWVJ
RCgpLCBtX2ZyYW1lLT5pbmZvKCksIHJlcXVlc3RJZGVudGlmaWVyLCBkb2N1bWVudExvYWRlci0+
bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBvcmlnaW5hdGluZ0ZyYW1lSW5m
b0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlELCBuYXZpZ2F0aW9uQWN0aW9uLnJlc291cmNlUmVxdWVz
dCgpLCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHsgcmVxdWVzdC5odHRwQm9keSgp
IH0sIHJlZGlyZWN0UmVzcG9uc2UsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRy
YW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSwgbGlzdGVuZXJJ
RCkpKQotICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJ
RCwgUG9saWN5RGVjaXNpb24geyByZXF1ZXN0SWRlbnRpZmllciwgTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW46Ok5vLCBOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluOjpObywgUG9saWN5
QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSwgeyB9IH0pOworICAgICAgICBtX2ZyYW1lLT5kaWRSZWNl
aXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24geyByZXF1ZXN0SWRl
bnRpZmllciwgV1RGOjpudWxsb3B0LCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgeyB9LCB7IH0g
fSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNhbmNlbFBvbGljeUNoZWNrKCkK
QEAgLTE5MjAsNyArMTkyMCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVk
TG9hZGluZ0FwcGxpY2F0aW9uTWFuaWZlc3QodWludDY0X3QgY2FsbGJhY2tJCiB9CiAjZW5kaWYg
Ly8gRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQogCi1ib29sIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpoYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluKCkKK2Jvb2wgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OnNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygp
CiB7CiAgICAgaWYgKCFtX2ZyYW1lLT5pc01haW5GcmFtZSgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0xOTI4LDIwICsxOTI4LDEwIEBAIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6Omhh
c05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4oKQogICAgIGF1dG8qIHdlYlBhZ2UgPSBt
X2ZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgCi0gICAgcmV0dXJuIHdlYlBhZ2UtPmhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmRE
b21haW4oKSA9PSBOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluOjpZZXM7Ci19CiAKLWJv
b2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6Om5lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcygp
IGNvbnN0Ci17Ci0gICAgYXV0byogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKLSAgICBpZiAo
IXdlYlBhZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICByZXR1cm4gd2ViUGFn
ZS0+bmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzKCk7CisgICAgcmV0dXJuIHdlYlBhZ2Ut
PnNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpOwogfQogCi0KIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgUFJFRklYX1BBUkFNRVRFUlMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMGY4ZWIwOTNmZjc2ZTU3NzM0MDU2ZTYzY2UzNzY3YjJl
ZjY3MDllMC4uZmE0YzBiODhjOTFhNmI2ZjI3MDdjNDBhZTc1MjVhYTgwMTYxNGZkNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTI4OCw4ICsyODgsNyBAQCBwcml2YXRlOgogICAg
IE9wdGlvbmFsPEZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRpZmllcj4gbV9mcmFtZVNw
ZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXI7CiAjZW5kaWYKIAotICAgIGJvb2wgaGFzTmF2
aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbigpIGZpbmFsOwotICAgIGJvb2wgbmVlZHNJbkFw
cEJyb3dzZXJQcml2YWN5UXVpcmtzKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBzaG91bGRFbmFi
bGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKSBmaW5hbDsKIH07CiAKIC8vIEFzIGxv
bmcgYXMgRW1wdHlGcmFtZUxvYWRlckNsaWVudCBleGlzdHMgaW4gV2ViQ29yZSwgdGhpcyBjYW4g
cmV0dXJuIDAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CmluZGV4IDNhMWU0ZmYzNzNlZDFmZTJmNTZjODg2NDUwZDc1NzcyYzQwYjgwODguLjc5ODljODJh
ZTU3ZThhNWZhYWIxMGVkNjZkYzMyZDY0ZDA3MWJlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC00NzUsNyArNDc1LDcgQEAgV2ViUGFnZTo6
V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMm
JiBwYXJhbWV0ZXJzKQogI2VuZGlmCiAgICAgLCBtX292ZXJyaWRkZW5NZWRpYVR5cGUocGFyYW1l
dGVycy5vdmVycmlkZGVuTWVkaWFUeXBlKQogICAgICwgbV9wcm9jZXNzRGlzcGxheU5hbWUocGFy
YW1ldGVycy5wcm9jZXNzRGlzcGxheU5hbWUpCi0gICAgLCBtX2lzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4ocGFyYW1ldGVycy5saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zID8g
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46OlllcyA6IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluOjpObykKKyAgICAsIG1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyhwYXJh
bWV0ZXJzLmxpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMpCiB7CiAgICAgQVNTRVJU
KG1faWRlbnRpZmllcik7CiAKQEAgLTE1MjcsNyArMTUyNyw2IEBAIHZvaWQgV2ViUGFnZTo6cGxh
dGZvcm1EaWRSZWNlaXZlTG9hZFBhcmFtZXRlcnMoY29uc3QgTG9hZFBhcmFtZXRlcnMmIGxvYWRQ
YXJhbWV0CiB2b2lkIFdlYlBhZ2U6OmxvYWRSZXF1ZXN0KExvYWRQYXJhbWV0ZXJzJiYgbG9hZFBh
cmFtZXRlcnMpCiB7CiAgICAgc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihsb2FkUGFy
YW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKLSAgICBzZXRIYXNOYXZpZ2F0
ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluKGxvYWRQYXJhbWV0ZXJzLmhhc05hdmlnYXRlZEF3YXlG
cm9tQXBwQm91bmREb21haW4pOwogCiAgICAgU2VuZFN0b3BSZXNwb25zaXZlbmVzc1RpbWVyIHN0
b3BwZXI7CiAKQEAgLTE1NjMsMTAgKzE1NjIsOSBAQCBOT19SRVRVUk4gdm9pZCBXZWJQYWdlOjps
b2FkUmVxdWVzdFdhaXRpbmdGb3JQcm9jZXNzTGF1bmNoKExvYWRQYXJhbWV0ZXJzJiYsIFVSTAog
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6bG9h
ZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgYm9vbCBzaG91bGRUcmVhdEFzQ29udGlu
dWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVz
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIHNoYXJlZEJ1ZmZlciwgY29uc3QgU3RyaW5nJiBNSU1FVHlw
ZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3Qg
VVJMJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBPcHRpb25hbDxO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwg
TmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbiBoYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJv
dW5kRG9tYWluLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3kpCit2b2lkIFdlYlBhZ2U6OmxvYWREYXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIGJvb2wgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRpb25hbDxXZWJzaXRl
UG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcywgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBzaGFy
ZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdO
YW1lLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIGNvbnN0
IFVzZXJEYXRhJiB1c2VyRGF0YSwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+
IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkKIHsKICAgICBzZXRJc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluKGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOwotICAgIHNldEhh
c05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4oaGFzTmF2aWdhdGVkQXdheUZyb21BcHBC
b3VuZERvbWFpbik7CiAKICAgICBTZW5kU3RvcFJlc3BvbnNpdmVuZXNzVGltZXIgc3RvcHBlcjsK
IApAQCAtMTU5NSw3ICsxNTkzLDcgQEAgdm9pZCBXZWJQYWdlOjpsb2FkRGF0YShMb2FkUGFyYW1l
dGVycyYmIGxvYWRQYXJhbWV0ZXJzKQogCiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihsb2FkUGFyYW1ldGVy
cy5kYXRhLmRhdGEoKSksIGxvYWRQYXJhbWV0ZXJzLmRhdGEuc2l6ZSgpKTsKICAgICBVUkwgYmFz
ZVVSTCA9IGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gYWJvdXRCbGFu
a1VSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nKTsKLSAgICBs
b2FkRGF0YUltcGwobG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklELCBsb2FkUGFyYW1ldGVycy5z
aG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIFdURk1vdmUobG9hZFBhcmFtZXRlcnMud2Vic2l0
ZVBvbGljaWVzKSwgV1RGTW92ZShzaGFyZWRCdWZmZXIpLCBsb2FkUGFyYW1ldGVycy5NSU1FVHlw
ZSwgbG9hZFBhcmFtZXRlcnMuZW5jb2RpbmdOYW1lLCBiYXNlVVJMLCBVUkwoKSwgbG9hZFBhcmFt
ZXRlcnMudXNlckRhdGEsIGxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4sIGxvYWRQYXJhbWV0ZXJzLmhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4sIGxv
YWRQYXJhbWV0ZXJzLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOworICAgIGxvYWREYXRh
SW1wbChsb2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQsIGxvYWRQYXJhbWV0ZXJzLnNob3VsZFRy
ZWF0QXNDb250aW51aW5nTG9hZCwgV1RGTW92ZShsb2FkUGFyYW1ldGVycy53ZWJzaXRlUG9saWNp
ZXMpLCBXVEZNb3ZlKHNoYXJlZEJ1ZmZlciksIGxvYWRQYXJhbWV0ZXJzLk1JTUVUeXBlLCBsb2Fk
UGFyYW1ldGVycy5lbmNvZGluZ05hbWUsIGJhc2VVUkwsIFVSTCgpLCBsb2FkUGFyYW1ldGVycy51
c2VyRGF0YSwgbG9hZFBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgbG9h
ZFBhcmFtZXRlcnMuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CiB9CiAKIHZvaWQgV2Vi
UGFnZTo6bG9hZEFsdGVybmF0ZUhUTUwoTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykK
QEAgLTE2MDcsNyArMTYwNSw3IEBAIHZvaWQgV2ViUGFnZTo6bG9hZEFsdGVybmF0ZUhUTUwoTG9h
ZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKICAgICBVUkwgcHJvdmlzaW9uYWxMb2FkRXJy
b3JVUkwgPSBsb2FkUGFyYW1ldGVycy5wcm92aXNpb25hbExvYWRFcnJvclVSTFN0cmluZy5pc0Vt
cHR5KCkgPyBVUkwoKSA6IFVSTChVUkwoKSwgbG9hZFBhcmFtZXRlcnMucHJvdmlzaW9uYWxMb2Fk
RXJyb3JVUkxTdHJpbmcpOwogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obG9hZFBhcmFtZXRlcnMuZGF0YS5k
YXRhKCkpLCBsb2FkUGFyYW1ldGVycy5kYXRhLnNpemUoKSk7CiAgICAgbV9tYWluRnJhbWUtPmNv
cmVGcmFtZSgpLT5sb2FkZXIoKS5zZXRQcm92aXNpb25hbExvYWRFcnJvckJlaW5nSGFuZGxlZFVS
TChwcm92aXNpb25hbExvYWRFcnJvclVSTCk7ICAgIAotICAgIGxvYWREYXRhSW1wbChsb2FkUGFy
YW1ldGVycy5uYXZpZ2F0aW9uSUQsIGxvYWRQYXJhbWV0ZXJzLnNob3VsZFRyZWF0QXNDb250aW51
aW5nTG9hZCwgV1RGTW92ZShsb2FkUGFyYW1ldGVycy53ZWJzaXRlUG9saWNpZXMpLCBXVEZNb3Zl
KHNoYXJlZEJ1ZmZlciksIGxvYWRQYXJhbWV0ZXJzLk1JTUVUeXBlLCBsb2FkUGFyYW1ldGVycy5l
bmNvZGluZ05hbWUsIGJhc2VVUkwsIHVucmVhY2hhYmxlVVJMLCBsb2FkUGFyYW1ldGVycy51c2Vy
RGF0YSwgbG9hZFBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgbG9hZFBh
cmFtZXRlcnMuaGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbik7CisgICAgbG9hZERh
dGFJbXBsKGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRCwgbG9hZFBhcmFtZXRlcnMuc2hvdWxk
VHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzLndlYnNpdGVQb2xp
Y2llcyksIFdURk1vdmUoc2hhcmVkQnVmZmVyKSwgbG9hZFBhcmFtZXRlcnMuTUlNRVR5cGUsIGxv
YWRQYXJhbWV0ZXJzLmVuY29kaW5nTmFtZSwgYmFzZVVSTCwgdW5yZWFjaGFibGVVUkwsIGxvYWRQ
YXJhbWV0ZXJzLnVzZXJEYXRhLCBsb2FkUGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluKTsKICAgICBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLnNldFByb3Zp
c2lvbmFsTG9hZEVycm9yQmVpbmdIYW5kbGVkVVJMKHsgfSk7CiB9CiAKQEAgLTMyNTMsNyArMzI1
MSw2IEBAIHZvaWQgV2ViUGFnZTo6c2V0TGF5ZXJIb3N0aW5nTW9kZShMYXllckhvc3RpbmdNb2Rl
IGxheWVySG9zdGluZ01vZGUpCiB2b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lv
bihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgUG9saWN5RGVj
aXNpb24mJiBwb2xpY3lEZWNpc2lvbikKIHsKICAgICBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluKHBvbGljeURlY2lzaW9uLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOwotICAg
IHNldEhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4ocG9saWN5RGVjaXNpb24uaGFz
TmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbik7CiAKICAgICBXZWJGcmFtZSogZnJhbWUg
PSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBpZiAoIWZy
YW1lKQpAQCAtMzQyNCw4ICszNDIxLDcgQEAgdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdl
YkZyYW1lKiBmcmFtZSwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXIKIAogICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soZGF0
YVJlZmVyZW5jZSwgZGV0YWlscywgY2FsbGJhY2tJRCkpOwogICAgIH07Ci0gICAgCi0gICAgaWYg
KGhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4oKSA9PSBOYXZpZ2F0ZWRBd2F5RnJv
bUFwcEJvdW5kRG9tYWluOjpZZXMgJiYgIW1fbmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtz
KSB7CisgICAgaWYgKHNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygp
KSB7CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVDYWxs
YmFjayh7IH0sIEV4Y2VwdGlvbkRldGFpbHMgeyAiVW5hYmxlIHRvIGV4ZWN1dGUgSmF2YVNjcmlw
dCJfcyB9LCBjYWxsYmFja0lEKSk7CiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IG1fcGFn
ZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkKICAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5n
LCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFp
bi4iKTsKQEAgLTM2ODEsOCArMzY3Nyw4IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5j
ZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAgICAgICAgIGRpc2FibGVTZXJ2
aWNlV29ya2VyRW50aXRsZW1lbnQoKTsKIAogICAgIGlmIChzdG9yZS5nZXRCb29sVmFsdWVGb3JL
ZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnNlcnZpY2VXb3JrZXJzRW5hYmxlZEtleSgpKSkgewotICAg
ICAgICBBU1NFUlQocGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpIHx8
IG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik7Ci0gICAgICAgIGlmICghcGFyZW50UHJv
Y2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpICYmICFtX2lzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4pCisgICAgICAgIEFTU0VSVChwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtl
ckVudGl0bGVtZW50KCkgfHwgbV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKTsK
KyAgICAgICAgaWYgKCFwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkg
JiYgIW1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucykKICAgICAgICAgICAgIFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0U2VydmljZVdvcmtlckVu
YWJsZWQoZmFsc2UpOwogICAgIH0KICNlbmRpZgpAQCAtNzA5Miw2ICs3MDg4LDI2IEBAIHZvaWQg
V2ViUGFnZTo6cmVtb3ZlTWVkaWFVc2FnZU1hbmFnZXJTZXNzaW9uKE1lZGlhU2Vzc2lvbklkZW50
aWZpZXIgaWRlbnRpZmllcikKIH0KICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfVVNBR0UpCiAKK3Zv
aWQgV2ViUGFnZTo6c2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihPcHRpb25hbDxOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKK3sK
KyAgICBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBpc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluOworICAgIAorICAgIGlmICghbV9uYXZpZ2F0aW9uSGFzT2NjdXJlZCkKKyAgICAg
ICAgbV9uYXZpZ2F0aW9uSGFzT2NjdXJlZCA9IHRydWU7Cit9CisKK2Jvb2wgV2ViUGFnZTo6c2hv
dWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkKK3sKKyAgICBpZiAobV9u
ZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3MpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGF1dG8gc2hvdWxkRW5hYmxlID0gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpICYm
IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSA9PSBOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbjo6Tm87CisgICAgaWYgKCFtX25hdmlnYXRpb25IYXNPY2N1cmVkICYmICFtX2xpbWl0c05h
dmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMpCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6U2V0SGFzRXhlY3V0ZWRBcHBCb3VuZEJlaGF2aW9yQmVmb3JlTmF2aWdhdGlvbigp
KTsKKworICAgIHJldHVybiBzaG91bGRFbmFibGU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAogCiAjdW5kZWYgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDdmNjg5MmQ4OGQ5M2Y0MjllN2EwMjU0ZTc5NzA3
NjgxMTNjZTRhNzYuLmQzNjgzMmI0NjIxMWZkNjI5Y2JmMjk4OWNkNjhiYjM5ODk1OTZkNGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTEzMTAsMTEg
KzEzMTAsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdldEFsbEZyYW1lcyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEZyYW1lVHJlZU5vZGVEYXRhJiYpPiYmKTsKIAotICAgIHZvaWQgc2V0SXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbihPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikgeyBtX2lzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4gPSBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOyB9CisgICAgYm9vbCBzaG91
bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKTsKKyAgICB2b2lkIHNldElz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4+KTsKICAgICBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1faXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbjsgfQotICAgIE5hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4gaGFz
TmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1faGFzTmF2
aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbjsgfQotICAgIHZvaWQgc2V0SGFzTmF2aWdhdGVk
QXdheUZyb21BcHBCb3VuZERvbWFpbihOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluIG5h
dmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4pIHsgbV9oYXNOYXZpZ2F0ZWRBd2F5RnJvbUFw
cEJvdW5kRG9tYWluID0gbmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbjsgfQotICAgIGJv
b2wgbmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzKCkgY29uc3QgeyByZXR1cm4gbV9uZWVk
c0luQXBwQnJvd3NlclByaXZhY3lRdWlya3M7IH0KICAgICAKICAgICBib29sIHNob3VsZFVzZVJl
bW90ZVJlbmRlcmluZ0ZvcihXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlKTsKIApAQCAtMTQxNSw3
ICsxNDEzLDcgQEAgcHJpdmF0ZToKIAogICAgIFN0cmluZyBzb3VyY2VGb3JGcmFtZShXZWJGcmFt
ZSopOwogCi0gICAgdm9pZCBsb2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklELCBib29s
IHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0
YT4mJiwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBNSU1FVHlw
ZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3Qg
VVJMJiBmYWlsaW5nVVJMLCBjb25zdCBVc2VyRGF0YSYsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluPiwgTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbiwgV2ViQ29yZTo6
U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsKKyAgICB2b2lkIGxvYWREYXRhSW1wbCh1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRp
b25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
LCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29u
c3QgVVJMJiBiYXNlVVJMLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFVzZXJEYXRhJiwg
T3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBXZWJDb3JlOjpTaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5ID0gV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eTo6U2hvdWxkTm90QWxsb3cpOwogCiAgICAgLy8gQWN0aW9ucwogICAgIHZvaWQgdHJ5Q2xvc2Uo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CkBAIC0yMDk5LDggKzIwOTcsOSBAQCBw
cml2YXRlOgogICAgIFN0cmluZyBtX3RoZW1lTmFtZTsKICNlbmRpZgogICAgIAotICAgIE9wdGlv
bmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4geyBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm8gfTsKLSAgICBOYXZpZ2F0ZWRB
d2F5RnJvbUFwcEJvdW5kRG9tYWluIG1faGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFp
biB7IE5hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW46Ok5vIH07CisgICAgT3B0aW9uYWw8
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
biB7IFdURjo6bnVsbG9wdCB9OworICAgIGJvb2wgbV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91
bmREb21haW5zIHsgZmFsc2UgfTsKKyAgICBib29sIG1fbmF2aWdhdGlvbkhhc09jY3VyZWQgeyBm
YWxzZSB9OwogfTsKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDY5Y2FlMmM2NDFhNmI2YjNkMzRi
MTdkMWMxNjY5MWMzOTZmYTE0YTIuLjhjMGIyY2I5MzUyYjIwNjhlMjRmMjZlOTI2OTZkMmExNTU4
NDUwMzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyOSBAQAorMjAyMC0wNS0wOCAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hl
bmV5QGFwcGxlLmNvbT4KKworICAgICAgICBGYWlsIG5hdmlnYXRpb25zIHRvIG5vbiBhcHAtYm91
bmQgZG9tYWlucyBhZnRlciB1c2Ugb2YgYXBwLWJvdW5kIEFQSXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTY0NworICAgICAgICA8cmRhcjovL3By
b2JsZW0vNjI5NzgxNTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkZWQgYSBuZXcgdGVzdCB0byBjb25maXJtIGEgbm9uLWFwcCBib3VuZCBuYXZp
Z2F0aW9uIGZhaWxzIGFmdGVyCisgICAgICAgIHVzaW5nIHNjcmlwdCBpbmplY3Rpb24uCisKKyAg
ICAgICAgVGhpcyBmaXggYWxzbyByZXF1aXJlZCBjaGFuZ2luZyBhbnkgdGVzdCB3aGljaCB1c2Vz
IGEgcmVzdHJpY3RlZCBBUEkKKyAgICAgICAgdG8gY29uZmlybSBiZWhhdmlvciBvZiBhbm90aGVy
IHJlc3RyaWN0ZWQgQVBJLiBUZXN0cyBjYW4gc2V0CisgICAgICAgIF9zZXROZWVkc0luQXBwQnJv
d3NlclByaXZhY3lRdWlya3MgaW4gdGhlIGNvbmZpZ3VyYXRpb24gdG8gaW5kaWNhdGUKKyAgICAg
ICAgQVBJcyBzaG91bGQgbm90IGJlIGJsb2NrZWQsIHRoZW4gdG9nZ2xlIGl0IHRvIHRlc3QgYWN0
dWFsIGJlaGF2aW9yLgorCisgICAgICAgIEFsc28sIHdlIGNhbiByZW1vdmUgYW55IGNhbGxzIHRv
IF9zZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZAorICAgICAgICBub3cgdGhhdCB0aGlzIGlz
IGp1c3QgYW4gaW50ZXJuYWwgdGVzdCBmbGFnLiAKKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbToKKyAgICAgICAgKC1bQXBw
Qm91bmREb21haW5EZWxlZ2F0ZSB3ZWJWaWV3OmRpZEZpbmlzaE5hdmlnYXRpb246XSk6CisgICAg
ICAgICgtW0FwcEJvdW5kRG9tYWluRGVsZWdhdGUgd2ViVmlldzpkaWRGYWlsUHJvdmlzaW9uYWxO
YXZpZ2F0aW9uOndpdGhFcnJvcjpdKToKKyAgICAgICAgKC1bQXBwQm91bmREb21haW5EZWxlZ2F0
ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl0pOgorICAgICAgICAoLVtBcHBCb3VuZERvbWFp
bkRlbGVnYXRlIHdhaXRGb3JEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uRXJyb3JdKToKKyAg
ICAgICAgKFRFU1QpOgorCiAyMDIwLTA1LTA2ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBw
bGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyNjAyNzgpOiBUZXN0V2ViS2l0QVBJLkZ1
bGxzY3JlZW4uRGVsZWdhdGUgaXMgdGltaW5nIG91dCBvbiBtYWNPUyBib3RzCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZh
Y3kubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3Nl
clByaXZhY3kubW0KaW5kZXggMWY0YjYwNzRkMWJmMDUxZmY1Y2Q0MGM5NmNiNDkxMzFlMWY3MGI4
NC4uM2RkNTAzMGQ0YTNkMmQ4Y2Y3YWZlOTQ2Y2YwOTVkODc5MTUwNzFiYyAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93
c2VyUHJpdmFjeS5tbQpAQCAtNDgsNiArNDgsNDAgQEAKIAogc3RhdGljIGJvb2wgaXNEb25lOwog
CitAaW50ZXJmYWNlIEFwcEJvdW5kRG9tYWluRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0
aW9uRGVsZWdhdGU+CistICh2b2lkKXdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uOworLSAoTlNF
cnJvciAqKXdhaXRGb3JEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uRXJyb3I7CitAZW5kCisK
K0BpbXBsZW1lbnRhdGlvbiBBcHBCb3VuZERvbWFpbkRlbGVnYXRlIHsKKyAgICBib29sIF9uYXZp
Z2F0aW9uRmluaXNoZWQ7CisgICAgUmV0YWluUHRyPE5TRXJyb3I+IF9wcm92aXNpb25hbE5hdmln
YXRpb25GYWlsZWRFcnJvcjsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3IGRpZEZpbmlzaE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24KK3sKKyAg
ICBfbmF2aWdhdGlvbkZpbmlzaGVkID0gdHJ1ZTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb246KG51bGxfdW5zcGVj
aWZpZWQgV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbiB3aXRoRXJyb3I6KE5TRXJyb3IgKillcnJv
cgoreworICAgIF9wcm92aXNpb25hbE5hdmlnYXRpb25GYWlsZWRFcnJvciA9IGVycm9yOworfQor
CistICh2b2lkKXdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uCit7CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZfbmF2aWdhdGlvbkZpbmlzaGVkKTsKK30KKworLSAoTlNFcnJvciAqKXdh
aXRGb3JEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uRXJyb3IKK3sKKyAgICB3aGlsZSAoIV9w
cm92aXNpb25hbE5hdmlnYXRpb25GYWlsZWRFcnJvcikKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6c3BpblJ1bkxvb3AoKTsKKyAgICByZXR1cm4gX3Byb3Zpc2lvbmFsTmF2aWdhdGlvbkZh
aWxlZEVycm9yLmF1dG9yZWxlYXNlKCk7Cit9CisKK0BlbmQKKwogc3RhdGljIE5TU3RyaW5nICog
Y29uc3QgdXNlclNjcmlwdFNvdXJjZSA9IEAid2luZG93LndrVXNlclNjcmlwdEluamVjdGVkID0g
dHJ1ZSI7CiAKIEBpbnRlcmZhY2UgSW5BcHBCcm93c2VyU2NoZW1lSGFuZGxlciA6IE5TT2JqZWN0
IDxXS1VSTFNjaGVtZUhhbmRsZXI+CkBAIC0xMDMsOCArMTM3LDYgQEAgVEVTVChJbkFwcEJyb3dz
ZXJQcml2YWN5LCBOb25BcHBCb3VuZERvbWFpbkZhaWxlZFVzZXJTY3JpcHRBdFN0YXJ0KQogICAg
IGF1dG8gc2NoZW1lSGFuZGxlciA9IGFkb3B0TlMoW1tJbkFwcEJyb3dzZXJTY2hlbWVIYW5kbGVy
IGFsbG9jXSBpbml0XSk7CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpz
Y2hlbWVIYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAImluLWFwcC1icm93c2VyIl07CiAgICAg
W2NvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFVzZXJTY3JpcHQ6dXNlclNj
cmlwdC5nZXQoKV07Ci0gICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0TmVlZHNJ
bkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzOk5PXTsKLSAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVy
ZW5jZXNdIF9zZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZDpZRVNdOwogCiAgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dS
ZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKICAgICBOU1VSTFJlcXVlc3Qg
KnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOkAiaW4tYXBwLWJyb3dzZXI6Ly8vaW4tYXBwLWJyb3dzZXItcHJpdmFjeS10ZXN0LXVzZXIt
c2NyaXB0Il1dOwpAQCAtMTIxLDggKzE1Myw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwg
Tm9uQXBwQm91bmREb21haW5GYWlsZWRVc2VyU2NyaXB0QXRTdGFydCkKICAgICBpc0RvbmUgPSBm
YWxzZTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAKLSAgICAvLyBU
dXJuIGJhY2sgb24gSW4tQXBwIEJyb3dzZXIgUHJpdmFjeSBxdWlya3MgdG8gY2hlY2sgdGhhdCBv
cmlnaW5hbCBhdHRlbXB0IHRvIHNldCB0aGlzIHZhcmlhYmxlIHdhcyByZWplY3RlZC4KLSAgICBp
c0RvbmUgPSBmYWxzZTsKKyAgICAvLyBEaXNhYmxlIHNjcmlwdCBpbmplY3Rpb24gYmxvY2tpbmcg
dG8gY2hlY2sgdGhhdCBvcmlnaW5hbCBhdHRlbXB0IHRvIHNldCB0aGlzIHZhcmlhYmxlIHdhcyBy
ZWplY3RlZC4KICAgICBbW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dIHByZWZlcmVuY2VzXSBfc2V0
TmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzOllFU107CiAgICAgW3dlYlZpZXcgZXZhbHVh
dGVKYXZhU2NyaXB0OkAid2luZG93LndrVXNlclNjcmlwdEluamVjdGVkIiBjb21wbGV0aW9uSGFu
ZGxlcjpeKGlkIF9OdWxsYWJsZSByZXN1bHQsIE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpIHsK
ICAgICAgICAgRVhQRUNUX0VRKE5PLCBbcmVzdWx0IGJvb2xWYWx1ZV0pOwpAQCAtMTQ1LDggKzE3
Niw2IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmREb21haW5GYWlsZWRV
c2VyU2NyaXB0QXRFbmQpCiAgICAgYXV0byBzY2hlbWVIYW5kbGVyID0gYWRvcHROUyhbW0luQXBw
QnJvd3NlclNjaGVtZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBbY29uZmlndXJhdGlvbiBz
ZXRVUkxTY2hlbWVIYW5kbGVyOnNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiaW4t
YXBwLWJyb3dzZXIiXTsKICAgICBbY29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIg
YWRkVXNlclNjcmlwdDp1c2VyU2NyaXB0LmdldCgpXTsKLSAgICBbW2NvbmZpZ3VyYXRpb24gcHJl
ZmVyZW5jZXNdIF9zZXROZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3M6Tk9dOwotICAgIFtb
Y29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVk
OllFU107CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0p
OwogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhV
Ukw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJpbi1hcHAtYnJvd3NlcjovLy9pbi1hcHAtYnJvd3Nl
ci1wcml2YWN5LXRlc3QtdXNlci1zY3JpcHQiXV07CkBAIC0xNjMsOCArMTkyLDcgQEAgVEVTVChJ
bkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZERvbWFpbkZhaWxlZFVzZXJTY3JpcHRBdEVu
ZCkKICAgICBpc0RvbmUgPSBmYWxzZTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlz
RG9uZSk7CiAKLSAgICAvLyBUdXJuIGJhY2sgb24gSW4tQXBwIEJyb3dzZXIgUHJpdmFjeSBxdWly
a3MgdG8gY2hlY2sgdGhhdCBvcmlnaW5hbCBhdHRlbXB0IHRvIHNldCB0aGlzIHZhcmlhYmxlIHdh
cyByZWplY3RlZC4KLSAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICAvLyBEaXNhYmxlIHNjcmlwdCBp
bmplY3Rpb24gYmxvY2tpbmcgdG8gY2hlY2sgdGhhdCBvcmlnaW5hbCBhdHRlbXB0IHRvIHNldCB0
aGlzIHZhcmlhYmxlIHdhcyByZWplY3RlZC4KICAgICBbW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25d
IHByZWZlcmVuY2VzXSBfc2V0TmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzOllFU107CiAg
ICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAid2luZG93LndrVXNlclNjcmlwdEluamVj
dGVkIiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIF9OdWxsYWJsZSByZXN1bHQsIE5TRXJyb3IgKiBf
TnVsbGFibGUgZXJyb3IpIHsKICAgICAgICAgRVhQRUNUX0VRKE5PLCBbcmVzdWx0IGJvb2xWYWx1
ZV0pOwpAQCAtMTc5LDkgKzIwNywxMSBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIE5vbkFw
cEJvdW5kRG9tYWluRmFpbGVkVXNlclNjcmlwdEF0RW5kKQogCiBURVNUKEluQXBwQnJvd3NlclBy
aXZhY3ksIE5vbkFwcEJvdW5kRG9tYWluRmFpbGVkVXNlckFnZW50U2NyaXB0cykKIHsKKyAgICBp
bml0aWFsaXplSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOworCiAgICAgV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9u
IF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQ
bHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CisgICAgLy8g
RGlzYWJsZSBibG9ja2luZyBvZiByZXN0cmljdGVkIEFQSXMgZm9yIHRlc3Qgc2V0dXAuCiAgICAg
W1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0TmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5
UXVpcmtzOllFU107Ci0gICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0SW5BcHBC
cm93c2VyUHJpdmFjeUVuYWJsZWQ6Tk9dOwogCiAgICAgYXV0byBzY2hlbWVIYW5kbGVyID0gYWRv
cHROUyhbW0luQXBwQnJvd3NlclNjaGVtZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBbY29u
ZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOnNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9yVVJM
U2NoZW1lOkAiaW4tYXBwLWJyb3dzZXIiXTsKQEAgLTE5OCwxMyArMjI4LDExIEBAIFRFU1QoSW5B
cHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmREb21haW5GYWlsZWRVc2VyQWdlbnRTY3JpcHRz
KQogCiAgICAgaXNEb25lID0gZmFsc2U7CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZp
c0RvbmUpOwotCi0gICAgaW5pdGlhbGl6ZUluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3Mo
KTsKKyAgICAKKyAgICAvLyBFbmFibGUgYmxvY2tpbmcgb2YgcmVzdHJpY3RlZCBBUElzLgogICAg
IFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldE5lZWRzSW5BcHBCcm93c2VyUHJpdmFj
eVF1aXJrczpOT107Ci0gICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0SW5BcHBC
cm93c2VyUHJpdmFjeUVuYWJsZWQ6WUVTXTsKIAogICAgIGF1dG8gd2ViVmlldzIgPSBhZG9wdE5T
KFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbl0pOwotCiAgICAgaXNEb25lID0gZmFsc2U7CiAgICAgW3dlYlZp
ZXcyIGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwogICAgIFt3ZWJWaWV3MiBfdGVzdF93YWl0Rm9yRGlk
RmluaXNoTmF2aWdhdGlvbl07CkBAIC0yNDQsNyArMjcyLDYgQEAgVEVTVChJbkFwcEJyb3dzZXJQ
cml2YWN5LCBMb2NhbEZpbGVzQXJlQXBwQm91bmQpCiB7CiAgICAgaW5pdGlhbGl6ZUluQXBwQnJv
d3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFtbY29uZmln
dXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkOllFU107
CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0TGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlu
czpZRVNdOwogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24u
Z2V0KCldKTsKQEAgLTI2NSw3ICsyOTIsNiBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIERh
dGFGaWxlc0FyZUFwcEJvdW5kKQogewogICAgIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5
VGVzdFNldHRpbmdzKCk7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBbW2NvbmZpZ3VyYXRpb24gcHJl
ZmVyZW5jZXNdIF9zZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZDpZRVNdOwogICAgIFtjb25m
aWd1cmF0aW9uIHNldExpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnM6WUVTXTsKIAog
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CkBA
IC0yODUsNyArMzExLDYgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBYm91dEZpbGVzQXJl
QXBwQm91bmQpCiB7CiAgICAgaW5pdGlhbGl6ZUluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGlu
Z3MoKTsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10g
X3NldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkOllFU107CiAgICAgW2NvbmZpZ3VyYXRpb24g
c2V0TGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWluczpZRVNdOwogCiAgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dS
ZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKQEAgLTMwMyw3ICsz
MjgsNiBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFib3V0RmlsZXNBcmVBcHBCb3VuZCkK
IAogc3RhdGljIE5TU3RyaW5nICpzdHlsZVNoZWV0U291cmNlID0gQCJib2R5IHsgYmFja2dyb3Vu
ZC1jb2xvcjogZ3JlZW4gIWltcG9ydGFudDsgfSI7CiBzdGF0aWMgTlNTdHJpbmcgKmJhY2tncm91
bmRDb2xvclNjcmlwdCA9IEAid2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSwg
bnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpIjsKLXN0YXRpYyBOU1N0
cmluZyAqZnJhbWVCYWNrZ3JvdW5kQ29sb3JTY3JpcHQgPSBAIndpbmRvdy5nZXRDb21wdXRlZFN0
eWxlKGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpZnJhbWUnKVswXS5jb250ZW50RG9j
dW1lbnQuYm9keSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpIjsK
IHN0YXRpYyBjb25zdCBjaGFyKiByZWRJblJHQiA9ICJyZ2IoMjU1LCAwLCAwKSI7CiBzdGF0aWMg
Y29uc3QgY2hhciogYmxhY2tJblJHQiA9ICJyZ2JhKDAsIDAsIDAsIDApIjsKIApAQCAtMzI5LDE5
ICszNTMsMTkgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZFVzZXJTdHls
ZVNoZWV0Rm9yU3BlY2lmaWNXZWJWaWV3RmFpbHMpCiAKICAgICBhdXRvIHNjaGVtZUhhbmRsZXIg
PSBhZG9wdE5TKFtbSW5BcHBCcm93c2VyU2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAg
IFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6c2NoZW1lSGFuZGxlci5nZXQoKSBm
b3JVUkxTY2hlbWU6QCJpbi1hcHAtYnJvd3NlciJdOwotICAgIFtbY29uZmlndXJhdGlvbiBwcmVm
ZXJlbmNlc10gX3NldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkOllFU107Ci0gICAgW1tjb25m
aWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0TmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtz
OllFU107CisgICAgUmV0YWluUHRyPF9XS1VzZXJDb250ZW50V29ybGQ+IHdvcmxkID0gW19XS1Vz
ZXJDb250ZW50V29ybGQgd29ybGRXaXRoTmFtZTpAIlRlc3RXb3JsZCJdOwogCiAgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dS
ZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBOU1VSTFJl
cXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxX
aXRoU3RyaW5nOkAiaW4tYXBwLWJyb3dzZXI6Ly8vaW4tYXBwLWJyb3dzZXItcHJpdmFjeS10ZXN0
LXVzZXItc3R5bGUtc2hlZXRzIl1dOwotICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3Rd
OwotICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKLQotICAg
IFJldGFpblB0cjxfV0tVc2VyQ29udGVudFdvcmxkPiB3b3JsZCA9IFtfV0tVc2VyQ29udGVudFdv
cmxkIHdvcmxkV2l0aE5hbWU6QCJUZXN0V29ybGQiXTsKICAgICBSZXRhaW5QdHI8X1dLVXNlclN0
eWxlU2hlZXQ+IHN0eWxlU2hlZXQgPSBhZG9wdE5TKFtbX1dLVXNlclN0eWxlU2hlZXQgYWxsb2Nd
IGluaXRXaXRoU291cmNlOnN0eWxlU2hlZXRTb3VyY2UgZm9yV0tXZWJWaWV3OndlYlZpZXcuZ2V0
KCkgZm9yTWFpbkZyYW1lT25seTpZRVMgbGV2ZWw6X1dLVXNlclN0eWxlVXNlckxldmVsIHVzZXJD
b250ZW50V29ybGQ6d29ybGQuZ2V0KCldKTsKICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRl
bnRDb250cm9sbGVyXSBfYWRkVXNlclN0eWxlU2hlZXQ6c3R5bGVTaGVldC5nZXQoKV07CiAKLSAg
ICBleHBlY3RTY3JpcHRFdmFsdWF0ZXNUb0NvbG9yKHdlYlZpZXcuZ2V0KCksIGJhY2tncm91bmRD
b2xvclNjcmlwdCwgcmVkSW5SR0IpOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtBcHBC
b3VuZERvbWFpbkRlbGVnYXRlIG5ld10pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxl
Z2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNV
UkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaW4tYXBwLWJy
b3dzZXI6Ly8vaW4tYXBwLWJyb3dzZXItcHJpdmFjeS10ZXN0LXVzZXItc3R5bGUtc2hlZXRzIl1d
OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworICAgIE5TRXJyb3IgKmVycm9y
ID0gW2RlbGVnYXRlIHdhaXRGb3JEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uRXJyb3JdOwor
ICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbiwgQCJBcHAtYm91
bmQgZG9tYWluIGZhaWx1cmUiKTsKICAgICBjbGVhblVwSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RT
ZXR0aW5ncygpOwogfQogCkBAIC0zNTMsMTggKzM3NywxOCBAQCBURVNUKEluQXBwQnJvd3NlclBy
aXZhY3ksIE5vbkFwcEJvdW5kVXNlclN0eWxlU2hlZXRGb3JBbGxXZWJWaWV3c0ZhaWxzKQogCiAg
ICAgYXV0byBzY2hlbWVIYW5kbGVyID0gYWRvcHROUyhbW0luQXBwQnJvd3NlclNjaGVtZUhhbmRs
ZXIgYWxsb2NdIGluaXRdKTsKICAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVy
OnNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiaW4tYXBwLWJyb3dzZXIiXTsKLSAg
ICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5h
YmxlZDpZRVNdOwotICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldE5lZWRzSW5B
cHBCcm93c2VyUHJpdmFjeVF1aXJrczpZRVNdOwotCi0gICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1
cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3Qg
PSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaW4t
YXBwLWJyb3dzZXI6Ly8vaW4tYXBwLWJyb3dzZXItcHJpdmFjeS10ZXN0LXVzZXItc3R5bGUtc2hl
ZXRzIl1dOwotICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwotICAgIFt3ZWJWaWV3
IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKLQorICAgIAogICAgIFJldGFpblB0
cjxfV0tVc2VyU3R5bGVTaGVldD4gc3R5bGVTaGVldCA9IGFkb3B0TlMoW1tfV0tVc2VyU3R5bGVT
aGVldCBhbGxvY10gaW5pdFdpdGhTb3VyY2U6c3R5bGVTaGVldFNvdXJjZSBmb3JNYWluRnJhbWVP
bmx5OllFU10pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIF9h
ZGRVc2VyU3R5bGVTaGVldDpzdHlsZVNoZWV0LmdldCgpXTsKKyAgICAKKyAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3Ra
ZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8gZGVsZWdh
dGUgPSBhZG9wdE5TKFtBcHBCb3VuZERvbWFpbkRlbGVnYXRlIG5ld10pOworICAgIFt3ZWJWaWV3
IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKLSAgICBleHBlY3RTY3Jp
cHRFdmFsdWF0ZXNUb0NvbG9yKHdlYlZpZXcuZ2V0KCksIGJhY2tncm91bmRDb2xvclNjcmlwdCwg
cmVkSW5SR0IpOworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJpbi1hcHAtYnJvd3NlcjovLy9pbi1h
cHAtYnJvd3Nlci1wcml2YWN5LXRlc3QtdXNlci1zdHlsZS1zaGVldHMiXV07CisgICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisgICAgTlNFcnJvciAqZXJyb3IgPSBbZGVsZWdhdGUg
d2FpdEZvckRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25FcnJvcl07CisgICAgRVhQRUNUX1dL
X1NUUkVRKGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uLCBAIkFwcC1ib3VuZCBkb21haW4gZmFp
bHVyZSIpOwogICAgIGNsZWFuVXBJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7CiB9
CiAKQEAgLTM3NiwyMiArNDAwLDE3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBw
Qm91bmRVc2VyU3R5bGVTaGVldEFmZmVjdGluZ0FsbEZyYW1lc0ZhaWxzKQogCiAgICAgYXV0byBz
Y2hlbWVIYW5kbGVyID0gYWRvcHROUyhbW0luQXBwQnJvd3NlclNjaGVtZUhhbmRsZXIgYWxsb2Nd
IGluaXRdKTsKICAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOnNjaGVtZUhh
bmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiaW4tYXBwLWJyb3dzZXIiXTsKLSAgICBbW2NvbmZp
Z3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZDpZRVNd
OwotICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldE5lZWRzSW5BcHBCcm93c2Vy
UHJpdmFjeVF1aXJrczpZRVNdOwotCi0gICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxS
ZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaW4tYXBwLWJyb3dz
ZXI6Ly8vaW4tYXBwLWJyb3dzZXItcHJpdmFjeS10ZXN0LXVzZXItc3R5bGUtc2hlZXRzLWlmcmFt
ZSJdXTsKLSAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKLSAgICBbd2ViVmlldyBf
dGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07Ci0KICAgICBSZXRhaW5QdHI8X1dLVXNl
clN0eWxlU2hlZXQ+IHN0eWxlU2hlZXQgPSBhZG9wdE5TKFtbX1dLVXNlclN0eWxlU2hlZXQgYWxs
b2NdIGluaXRXaXRoU291cmNlOnN0eWxlU2hlZXRTb3VyY2UgZm9yTWFpbkZyYW1lT25seTpOT10p
OwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIF9hZGRVc2VyU3R5
bGVTaGVldDpzdHlsZVNoZWV0LmdldCgpXTsKIAotICAgIC8vIFRoZSBtYWluIGZyYW1lIHNob3Vs
ZCBiZSBhZmZlY3RlZC4KLSAgICBleHBlY3RTY3JpcHRFdmFsdWF0ZXNUb0NvbG9yKHdlYlZpZXcu
Z2V0KCksIGJhY2tncm91bmRDb2xvclNjcmlwdCwgcmVkSW5SR0IpOworICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFpl
cm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byBkZWxlZ2F0
ZSA9IGFkb3B0TlMoW0FwcEJvdW5kRG9tYWluRGVsZWdhdGUgbmV3XSk7CisgICAgW3dlYlZpZXcg
c2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAotICAgIC8vIFRoZSBzdWJm
cmFtZSBzaG91bGQgYWxzbyBiZSBhZmZlY3RlZC4KLSAgICBleHBlY3RTY3JpcHRFdmFsdWF0ZXNU
b0NvbG9yKHdlYlZpZXcuZ2V0KCksIGZyYW1lQmFja2dyb3VuZENvbG9yU2NyaXB0LCByZWRJblJH
Qik7CisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0
aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImluLWFwcC1icm93c2VyOi8vL2luLWFwcC1icm93
c2VyLXByaXZhY3ktdGVzdC11c2VyLXN0eWxlLXNoZWV0cy1pZnJhbWUiXV07CisgICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisgICAgTlNFcnJvciAqZXJyb3IgPSBbZGVsZWdhdGUg
d2FpdEZvckRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25FcnJvcl07CisgICAgRVhQRUNUX1dL
X1NUUkVRKGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uLCBAIkFwcC1ib3VuZCBkb21haW4gZmFp
bHVyZSIpOwogICAgIGNsZWFuVXBJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7CiB9
CiAKQEAgLTQwNCw4ICs0MjMsNiBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIE5vbkFwcEJv
dW5kRG9tYWluQ2Fubm90QWNjZXNzTWVzc2FnZUhhbmRsZXJzKQogCiAgICAgYXV0byBzY2hlbWVI
YW5kbGVyID0gYWRvcHROUyhbW0luQXBwQnJvd3NlclNjaGVtZUhhbmRsZXIgYWxsb2NdIGluaXRd
KTsKICAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOnNjaGVtZUhhbmRsZXIu
Z2V0KCkgZm9yVVJMU2NoZW1lOkAiaW4tYXBwLWJyb3dzZXIiXTsKLSAgICBbW2NvbmZpZ3VyYXRp
b24gcHJlZmVyZW5jZXNdIF9zZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZDpZRVNdOwotICAg
IFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldE5lZWRzSW5BcHBCcm93c2VyUHJpdmFj
eVF1aXJrczpZRVNdOwogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3Vy
YXRpb24uZ2V0KCldKTsKIApAQCAtNDE2LDYgKzQzMywxMCBAQCBURVNUKEluQXBwQnJvd3NlclBy
aXZhY3ksIE5vbkFwcEJvdW5kRG9tYWluQ2Fubm90QWNjZXNzTWVzc2FnZUhhbmRsZXJzKQogICAg
IE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05T
VVJMIFVSTFdpdGhTdHJpbmc6QCJpbi1hcHAtYnJvd3NlcjovLy9pbi1hcHAtYnJvd3Nlci1wcml2
YWN5LXRlc3QtbWVzc2FnZS1oYW5kbGVyIl1dOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJl
cXVlc3RdOwogICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsK
KyAgICAKKyAgICAvLyBEaXNhYmxlIHNjcmlwdCBpbmplY3Rpb24gYmxvY2tpbmcgdG8gY2hlY2sg
dGhhdCB0aGUgcmVxdWVzdCBmb3IgbWVzc2FnZQorICAgIC8vIGhhbmRsZXJzIHJldHVybmVkIG51
bGwuCisgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0TmVlZHNJbkFwcEJyb3dz
ZXJQcml2YWN5UXVpcmtzOllFU107CiAKICAgICAvLyBTZXQgdGhlIGJhY2tncm91bmQgY29sb3Ig
dG8gcmVkIGlmIG1lc3NhZ2UgaGFuZGxlcnMgcmV0dXJuZWQgbnVsbCBzbyB3ZSBjYW4KICAgICAv
LyBjaGVjayB3aXRob3V0IG5lZWRpbmcgYSBtZXNzYWdlIGhhbmRsZXIuCkBAIC00MzIsNyArNDUz
LDYgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZERvbWFpbkNhbkFjY2Vzc01l
c3NhZ2VIYW5kbGVycykKIAogICAgIGF1dG8gc2NoZW1lSGFuZGxlciA9IGFkb3B0TlMoW1tJbkFw
cEJyb3dzZXJTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0XSk7CiAgICAgW2NvbmZpZ3VyYXRpb24g
c2V0VVJMU2NoZW1lSGFuZGxlcjpzY2hlbWVIYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAImlu
LWFwcC1icm93c2VyIl07Ci0gICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0SW5B
cHBCcm93c2VyUHJpdmFjeUVuYWJsZWQ6WUVTXTsKICAgICBbY29uZmlndXJhdGlvbiBzZXRMaW1p
dHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zOllFU107CiAKICAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJv
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwpAQCAtODMzLDQwICs4NTMsNiBA
QCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIE5vbkFwcEJvdW5kRG9tYWluRG9lc05vdEFsbG93
U2VydmljZVdvcmtlcnMpCiAgICAgaXNEb25lID0gZmFsc2U7CiB9CiAKLUBpbnRlcmZhY2UgQXBw
Qm91bmREb21haW5EZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4KLS0g
KHZvaWQpd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb247Ci0tIChOU0Vycm9yICopd2FpdEZvckRp
ZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25FcnJvcjsKLUBlbmQKLQotQGltcGxlbWVudGF0aW9u
IEFwcEJvdW5kRG9tYWluRGVsZWdhdGUgewotICAgIGJvb2wgX25hdmlnYXRpb25GaW5pc2hlZDsK
LSAgICBSZXRhaW5QdHI8TlNFcnJvcj4gX3Byb3Zpc2lvbmFsTmF2aWdhdGlvbkZhaWxlZEVycm9y
OwotfQotCi0tICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmluaXNoTmF2
aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbgotewotICAgIF9uYXZpZ2F0aW9uRmlu
aXNoZWQgPSB0cnVlOwotfQotCi0tICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
ZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbjoobnVsbF91bnNwZWNpZmllZCBXS05hdmlnYXRp
b24gKiluYXZpZ2F0aW9uIHdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCi17Ci0gICAgX3Byb3Zp
c2lvbmFsTmF2aWdhdGlvbkZhaWxlZEVycm9yID0gZXJyb3I7Ci19Ci0KLS0gKHZvaWQpd2FpdEZv
ckRpZEZpbmlzaE5hdmlnYXRpb24KLXsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJl9u
YXZpZ2F0aW9uRmluaXNoZWQpOwotfQotCi0tIChOU0Vycm9yICopd2FpdEZvckRpZEZhaWxQcm92
aXNpb25hbE5hdmlnYXRpb25FcnJvcgotewotICAgIHdoaWxlICghX3Byb3Zpc2lvbmFsTmF2aWdh
dGlvbkZhaWxlZEVycm9yKQotICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVuTG9v
cCgpOwotICAgIHJldHVybiBfcHJvdmlzaW9uYWxOYXZpZ2F0aW9uRmFpbGVkRXJyb3IuYXV0b3Jl
bGVhc2UoKTsKLX0KLQotQGVuZAotCiBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5k
RmxhZ0Zvck5vbkFwcEJvdW5kRG9tYWluRmFpbHMpCiB7CiAgICAgaW5pdGlhbGl6ZUluQXBwQnJv
d3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKQEAgLTg4NSw3ICs4NzEsNyBAQCBURVNUKEluQXBw
QnJvd3NlclByaXZhY3ksIEFwcEJvdW5kRmxhZ0Zvck5vbkFwcEJvdW5kRG9tYWluRmFpbHMpCiAg
ICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpb
TlNVUkwgVVJMV2l0aFN0cmluZzpAImluLWFwcC1icm93c2VyOi8vL2luLWFwcC1icm93c2VyLXBy
aXZhY3ktdGVzdC11c2VyLXN0eWxlLXNoZWV0cyJdXTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVz
dDpyZXF1ZXN0XTsKICAgICBOU0Vycm9yICplcnJvciA9IFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmFp
bFByb3Zpc2lvbmFsTmF2aWdhdGlvbkVycm9yXTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3Iu
bG9jYWxpemVkRGVzY3JpcHRpb24sIEAiQXR0ZW1wdGVkIG5hdmlnYXRpb24gYXdheSBmcm9tIGFw
cC1ib3VuZCBkb21haW4iKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IubG9jYWxpemVkRGVz
Y3JpcHRpb24sIEAiQXBwLWJvdW5kIGRvbWFpbiBmYWlsdXJlIik7CiAKICAgICAvLyBNYWtlIHN1
cmUgdGhlIGxvYWQgZGlkbid0IGNvbXBsZXRlIGJ5IGNoZWNraW5nIHRoZSBiYWNrZ3JvdW5kIGNv
bG9yLgogICAgIC8vIFJlZCB3b3VsZCBpbmRpY2F0ZSBpdCBmaW5pc2hlZCBsb2FkaW5nLgpAQCAt
OTE2LDcgKzkwMiw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTmF2aWdhdGVBd2F5RnJv
bUFwcEJvdW5kRG9tYWluV2l0aEFwcEJvdW5kRmxhZ0ZhaWxzKQogICAgIHJlcXVlc3QgPSBbTlNV
UkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaW4tYXBwLWJy
b3dzZXI6Ly8vaW4tYXBwLWJyb3dzZXItcHJpdmFjeS10ZXN0LXVzZXItc3R5bGUtc2hlZXRzIl1d
OwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwogICAgIE5TRXJyb3IgKmVycm9y
ID0gW2RlbGVnYXRlIHdhaXRGb3JEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uRXJyb3JdOwot
ICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbiwgQCJBdHRlbXB0
ZWQgbmF2aWdhdGlvbiBhd2F5IGZyb20gYXBwLWJvdW5kIGRvbWFpbiIpOworICAgIEVYUEVDVF9X
S19TVFJFUShlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbiwgQCJBcHAtYm91bmQgZG9tYWluIGZh
aWx1cmUiKTsKIAogICAgIC8vIE1ha2Ugc3VyZSB0aGUgbG9hZCBkaWRuJ3QgY29tcGxldGUgYnkg
Y2hlY2tpbmcgdGhlIGJhY2tncm91bmQgY29sb3IuCiAgICAgLy8gUmVkIHdvdWxkIGluZGljYXRl
IGl0IGZpbmlzaGVkIGxvYWRpbmcuCkBAIC05OTEsMTEgKzk3NywxNCBAQCBURVNUKEluQXBwQnJv
d3NlclByaXZhY3ksIFdlYlZpZXdXaXRob3V0QXBwQm91bmRGbGFnQ2FuRnJlZWx5TmF2aWdhdGUp
CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCiAgICAgLy8gTmF2aWdh
dGlvbiBzaG91bGQgYmUgc3VjY2Vzc2Z1bCwgYnV0IHRoaXMgV2ViVmlldyBzaG91bGQgbm90IGdl
dCBhcHAtYm91bmQgZG9tYWluCi0gICAgLy8gcHJpdmlsZWdlcyBsaWtlIHVzZXIgc3R5bGUgc2hl
ZXRzLiBTZXQgcXVpcmtzIHRvIHRydWUgc28gd2UgY2FuIGV2YWx1YXRlIHNjcmlwdAotICAgIC8v
IHRvIGNoZWNrLgotICAgIFtbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0gcHJlZmVyZW5jZXNdIF9z
ZXROZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3M6WUVTXTsKLSAgICBleHBlY3RTY3JpcHRF
dmFsdWF0ZXNUb0NvbG9yKHdlYlZpZXcuZ2V0KCksIGJhY2tncm91bmRDb2xvclNjcmlwdCwgYmxh
Y2tJblJHQik7Ci0gICAgY2xlYW5VcEluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsK
KyAgICAvLyBwcml2aWxlZ2VzIGxpa2Ugc2NyaXB0IGluamVjdGlvbi4KKyAgICBpc0RvbmUgPSBm
YWxzZTsKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJ3aW5kb3cud2tVc2VyU2Ny
aXB0SW5qZWN0ZWQiIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgX051bGxhYmxlIHJlc3VsdCwgTlNF
cnJvciAqIF9OdWxsYWJsZSBlcnJvcikgeworICAgICAgICBFWFBFQ1RfVFJVRSghIWVycm9yKTsK
KyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmaXNEb25lKTsKIH0KIAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBXZWJWaWV3
Q2Fubm90VXBkYXRlQXBwQm91bmRGbGFnT25jZVNldCkKQEAgLTEwMjksMTEgKzEwMTgsNDIgQEAg
VEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBXZWJWaWV3Q2Fubm90VXBkYXRlQXBwQm91bmRGbGFn
T25jZVNldCkKICAgICByZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNV
UkwgVVJMV2l0aFN0cmluZzpAImluLWFwcC1icm93c2VyOi8vL2luLWFwcC1icm93c2VyLXByaXZh
Y3ktdGVzdC11c2VyLXN0eWxlLXNoZWV0cyJdXTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpy
ZXF1ZXN0XTsKICAgICBOU0Vycm9yICplcnJvciA9IFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmFpbFBy
b3Zpc2lvbmFsTmF2aWdhdGlvbkVycm9yXTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IubG9j
YWxpemVkRGVzY3JpcHRpb24sIEAiQXR0ZW1wdGVkIG5hdmlnYXRpb24gYXdheSBmcm9tIGFwcC1i
b3VuZCBkb21haW4iKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IubG9jYWxpemVkRGVzY3Jp
cHRpb24sIEAiQXBwLWJvdW5kIGRvbWFpbiBmYWlsdXJlIik7CiAKICAgICBjbGVhblVwSW5BcHBC
cm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOwogfQogCitURVNUKEluQXBwQnJvd3NlclByaXZh
Y3ksIEluamVjdFNjcmlwdFRoZW5OYXZpZ2F0ZVRvTm9uQXBwQm91bmREb21haW5GYWlscykKK3sK
KyAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICBpbml0aWFsaXplSW5BcHBCcm93c2VyUHJpdmFjeVRl
c3RTZXR0aW5ncygpOworICAgIGF1dG8gdXNlclNjcmlwdCA9IGFkb3B0TlMoW1tXS1VzZXJTY3Jp
cHQgYWxsb2NdIGluaXRXaXRoU291cmNlOnVzZXJTY3JpcHRTb3VyY2UgaW5qZWN0aW9uVGltZTpX
S1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1bWVudFN0YXJ0IGZvck1haW5GcmFtZU9ubHk6
WUVTXSk7CisKKyAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xh
c3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRl
c3Rpbmc6WUVTXTsKKyAgICBhdXRvIHNjaGVtZUhhbmRsZXIgPSBhZG9wdE5TKFtbSW5BcHBCcm93
c2VyU2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldFVS
TFNjaGVtZUhhbmRsZXI6c2NoZW1lSGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJpbi1hcHAt
YnJvd3NlciJdOworICAgIFtjb25maWd1cmF0aW9uLnVzZXJDb250ZW50Q29udHJvbGxlciBhZGRV
c2VyU2NyaXB0OnVzZXJTY3JpcHQuZ2V0KCldOworICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJl
bmNlc10gX3NldE5lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrczpOT107CisKKyAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpD
R1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gZGVsZWdh
dGUgPSBhZG9wdE5TKFtBcHBCb3VuZERvbWFpbkRlbGVnYXRlIG5ld10pOworICAgIFt3ZWJWaWV3
IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBpc0RvbmUgPSBm
YWxzZTsKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJ3aW5kb3cud2tVc2VyU2Ny
aXB0SW5qZWN0ZWQiIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgX051bGxhYmxlIHJlc3VsdCwgTlNF
cnJvciAqIF9OdWxsYWJsZSBlcnJvcikgeworICAgICAgICBFWFBFQ1RfRkFMU0UoISFlcnJvcik7
CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmlzRG9uZSk7CisgICAgCisgICAgLy8gTG9hZCBhIG5vbi1hcHAgYm91bmQgZG9t
YWluLgorICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdp
dGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJpbi1hcHAtYnJvd3NlcjovLy9pbi1hcHAtYnJv
d3Nlci1wcml2YWN5LXRlc3QtdXNlci1hZ2VudC1zY3JpcHQiXV07CisgICAgW3dlYlZpZXcgbG9h
ZFJlcXVlc3Q6cmVxdWVzdF07CisgICAgTlNFcnJvciAqZXJyb3IgPSBbZGVsZWdhdGUgd2FpdEZv
ckRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25FcnJvcl07CisgICAgRVhQRUNUX1dLX1NUUkVR
KGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uLCBAIkFwcC1ib3VuZCBkb21haW4gZmFpbHVyZSIp
OworfQorCiBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIFdlYlZpZXdDYXRlZ29yeSkKIHsKICAg
ICBpbml0aWFsaXplSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399046</attachid>
            <date>2020-05-11 13:12:14 -0700</date>
            <delta_ts>2020-05-11 13:32:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211647-20200511131213.patch</filename>
            <type>text/plain</type>
            <size>80024</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNDgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjU4MDJjZTUzNDMxMjc2
YjVhNGQyZTlmNzYxYTUwZjE0ZDY1ODY3NC4uMThlODQ1MGQ3NWE1MmEyMTk5YjJkNzE0Njg4ODNm
ODM2NmJmNjBhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIwLTA1LTExICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEZhaWwgbmF2
aWdhdGlvbnMgdG8gbm9uIGFwcC1ib3VuZCBkb21haW5zIGFmdGVyIHVzZSBvZiBhcHAtYm91bmQg
QVBJcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEx
NjQ3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82Mjk3ODE1OT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW1wbGlmaWVkIGluLWFwcCBicm93c2Vy
IHByaXZhY3kgcHJvdGVjdGlvbnMgY2hlY2sgaW50byBvbmUsIGJldHRlcgorICAgICAgICBuYW1l
ZCBmdW5jdGlvbi4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29y
bGQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIHBh
Z2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmluamVjdFVzZXJTY3JpcHRJ
bW1lZGlhdGVseSk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2U6OmluamVjdFVzZXJTdHlsZVNoZWV0KToKKyAgICAgICAgKiBwYWdlL1dlYktpdE5hbWVz
cGFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXROYW1lc3BhY2U6Om1lc3NhZ2VIYW5k
bGVycyk6CisgICAgICAgICogc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlOjpTY29wZVJ1bGVTZXRzOjppbml0aWFsaXplVXNlclN0eWxlKToKKyAg
ICAgICAgUmVhcnJhbmdlZCBvcmRlcmluZyBzbyB0aGUgbWVzc2FnZSB0byBXZWJQYWdlUHJveHkg
b25seSBnZXRzIHNlbnQgdG8KKyAgICAgICAgaW5kaWNhdGUgYXBwLWJvdW5kIGJlaGF2aW9yIGlm
IHVzZXIgc3R5bGUgc2hlZXRzIGFjdHVhbGx5IGV4aXN0LgorCiAyMDIwLTA1LTExICBBbmRyZXMg
R29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgbWVjaGFuaXNt
IHRvIHR1cm4gb24gYWNjZXNzaWJpbGl0eSBpc29sYXRlZCB0cmVlIG1vZGUgZnJvbSBXZWJLaXRU
ZXN0UnVubmVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCBkNTdlYmQ5YzdiOWFlMGJjYWU5ZjlmOGJjNWU3M2Y4NmYw
MWFhNWU2Li43NzViOGU2MWVkYzE4NGI4MjI4YjI3OTI1MmFjODQ4MjQzNTRiOGRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDk5IEBACisyMDIwLTA1LTExICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9j
aGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEZhaWwgbmF2aWdhdGlvbnMgdG8gbm9uIGFwcC1i
b3VuZCBkb21haW5zIGFmdGVyIHVzZSBvZiBhcHAtYm91bmQgQVBJcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExNjQ3CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS82Mjk3ODE1OT4KKworICAgICAgICBBIGxvdCBvZiB0aGlzIHBhdGNoIGlzIGRlbGV0
aW5nIHRoZSB1bm5lY2Vzc2FyeSB2YXJpYWJsZS9mdW5jdGlvbgorICAgICAgICBoYXNOYXZpZ2F0
ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluIG5vdyB0aGF0IG5hdmlnYXRpbmcgYXdheSBmcm9tIGFu
CisgICAgICAgIGFwcC1ib3VuZCBkb21haW4gaXMgbm90IHBvc3NpYmxlLgorICAgICAgICAKKyAg
ICAgICAgVG8gYWRkcmVzcyB0aGUgYnVnLCB0aGlzIHNldHMgdGhlIGRlZmF1bHQgaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbgorICAgICAgICB2YWx1ZSB0byBiZSBXVEY6Om51bGxvcHQuIFRo
aXMgd2lsbCBhbGxvdyBhcHAtYm91bmQgYmVoYXZpb3JzIHVudGlsCisgICAgICAgIGEgbmF2aWdh
dGlvbiBoYXMgYmVlbiBhdHRlbXB0ZWQsIGluIHdoaWNoIGNhc2UgaXQgd2lsbCBmYWlsIG9yIHdp
bGwKKyAgICAgICAgdXBkYXRlIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gdG8gdGhlIGNv
cnJlY3QgdmFsdWUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBTaGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpMb2Fk
UGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TG9hZFBhcmFtZXRl
cnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmg6CisgICAgICAg
ICogU2hhcmVkL1BvbGljeURlY2lzaW9uLmg6CisgICAgICAgIChXZWJLaXQ6OlBvbGljeURlY2lz
aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQb2xpY3lEZWNpc2lvbjo6ZGVj
b2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZERhdGEpOgorICAgICAgICAo
V2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAoV2Vi
S2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
blN5bmMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojps
b2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5Ojpsb2FkRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZERh
dGFXaXRoTmF2aWdhdGlvblNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luY1NoYXJlZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERv
bWFpbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIFJlbW92ZSBoYXNOYXZpZ2F0ZWRBd2F5RnJv
bUFwcEJvdW5kRG9tYWluLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0SXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbkFuZENoZWNrSWZQZXJtaXR0ZWQpOgorICAgICAgICBD
aGVjayBmb3IgbmV3IG1faGFzRXhlY3V0ZWRBcHBCb3VuZEJlaGF2aW9yQmVmb3JlTmF2aWdhdGlv
biBwYXJhbWV0ZXIKKyAgICAgICAgYW5kIGZhaWwgdGhlIG5hdmlnYXRpb24gaWYgYSBXZWJWaWV3
IGhhcyB1c2VkIGFwcC1ib3VuZCBiZWhhdmlvciB0aGVuCisgICAgICAgIHRyaWVzIHRvIG5hdmln
YXRlIHRvIGEgbm9uIGFwcC1ib3VuZCBkb21haW4uCisKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgVXBkYXRl
IGVycm9yIG1lc3NhZ2UgdG8gYmUgbW9yZSBnZW5lcmFsIG5vdyB0aGF0IG1vcmUgdGhhbiBvbmUg
ZXJyb3IKKyAgICAgICAgY2FuIG9jY3VyLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEhhc0V4ZWN1dGVkQXBw
Qm91bmRCZWhhdmlvckJlZm9yZU5hdmlnYXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgIE5ldyBwYXJhbWV0ZXIgdG8gaW5kaWNhdGUg
YSBXZWJWaWV3IGhhcyB1c2VkIGFwcC1ib3VuZCBBUElzIGJlZm9yZQorICAgICAgICBuYXZpZ2F0
aW5nLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRFbmFibGVJbkFwcEJy
b3dzZXJQcml2YWN5UHJvdGVjdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRl
ckNsaWVudDo6aGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpuZWVkc0luQXBwQnJvd3NlclBy
aXZhY3lRdWlya3MgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgQ29tYmluZWQgdHdvIGZ1
bmN0aW9ucyBpbnRvIGEgc2ltcGxlciBmdW5jdGlvbjoKKyAgICAgICAgc2hvdWxkRW5hYmxlSW5B
cHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fbGltaXRzTmF2aWdhdGlvbnNU
b0FwcEJvdW5kRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZl
cmVuY2VzKToKKyAgICAgICAgU3RvcmUgdGhlIHNwZWNpYWwgYXBwLWJvdW5kIGRvbWFpbiBmbGFn
IHRvIGdhdGUgdGhlIHNlcnZpY2Ugd29ya2VyCisgICAgICAgIEFQSS4gVGhpcyBzaG91bGQgYmUg
c3RvcmVkIHNlcGFyYXRlbHkgZnJvbQorICAgICAgICBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4sIGJlY2F1c2UgaW4gdGhlIFdlYlBhZ2UgY29uc3RydWN0b3Igd2UKKyAgICAgICAgZG9u
J3QgeWV0IGtub3cgd2hldGhlciB0aGUgV0tBcHBCb3VuZERvbWFpbnMga2V5IGV4aXN0cy4KKwor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmxvYWREYXRhSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRE
YXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZEFsdGVybmF0ZUhUTUwpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24pOgorICAgICAg
ICBSZW1vdmUgaGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbi4KKworICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpydW5KYXZhU2NyaXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6c2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucyk6CisgICAg
ICAgIElmIG1fbmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzIGFyZSBvbiBmb3IgdGVzdGlu
ZywgZG9uJ3QgZW5hYmxlCisgICAgICAgIHByb3RlY3Rpb25zLiBPbmx5IG5vdGlmeSB0aGUgV2Vi
UGFnZVByb3h5IG9mIGFwcC1ib3VuZCBiZWhhdmlvciBpZgorICAgICAgICBhIG5hdmlnYXRpb24g
aGFzIG5vdCBvY2N1cmVkIGFuZCB3ZSBrbm93IHRoZSB3ZWJWaWV3IGlzIG5vdCBhcHAtYm91bmQK
KyAgICAgICAgKGluIG9yZGVyIHRvIGxpbWl0IElQQykuCisKKyAgICAgICAgKFdlYktpdDo6bV9p
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
c2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6Omhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4gY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRIYXNOYXZpZ2F0ZWRBd2F5RnJv
bUFwcEJvdW5kRG9tYWluKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bmVl
ZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzIGNvbnN0KTogRGVsZXRlZC4KKwogMjAyMC0wNS0x
MSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdS
RVNTSU9OIChyMjUzMjY3KTogaXNzdWVzIG9uIHRvdWNoc3RhcnQvdG91Y2hlbmQvdG91Y2htb3Zl
IChwb2ludGVyZG93bi9wb2ludGVydXAvcG9pbnRlcm1vdmUpIGV2ZW50cwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCBhZTI4ODVjMDMz
YmU0YWM4ZGMwMmM4MTIyNDc4YWM3Yzc0MzkwYzBiLi5jZTU1MWQzMTExNzA2MjAwMjZiZmJkZGYw
MWY4N2ViNTljNmNhNzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRDb250cm9sbGVyLmNwcApAQCAtNTc5LDcgKzU3OSw3IEBAIEpTQzo6SlNWYWx1ZSBTY3JpcHRD
b250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKERPTVdyYXBw
ZXJXCiAKIFZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdElu
V29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzKQogewotICAgIGlmIChtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmhhc05hdmln
YXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4oKSAmJiAhbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQo
KS5uZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3MoKSkgeworICAgIGlmIChtX2ZyYW1lLmxv
YWRlcigpLmNsaWVudCgpLnNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9u
cygpKSB7CiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IG1fZnJhbWUuZG9jdW1lbnQoKSkK
ICAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpT
ZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5q
ZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iKTsKICAgICAgICAgUkVMRUFTRV9MT0df
RVJST1JfSUZfQUxMT1dFRChMb2FkaW5nLCAiZXhlY3V0ZVNjcmlwdEluV29ybGQ6IElnbm9yaW5n
IHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMWU1NDI1ZTk0Nzc4NWYx
OGJlOGI1OTk0OGU4OTRhOGRmODMyYzllNy4uMDA3MGUzYmY0NmI1YzNkYjRjZGIyZmFkOTAwZDUz
MDQ5NDg1MDg0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgK
QEAgLTM3OSw4ICszNzksNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIEFsbG93c0NvbnRlbnRK
YXZhU2NyaXB0IGFsbG93c0NvbnRlbnRKYXZhU2NyaXB0RnJvbU1vc3RSZWNlbnROYXZpZ2F0aW9u
KCkgY29uc3QgeyByZXR1cm4gQWxsb3dzQ29udGVudEphdmFTY3JpcHQ6OlllczsgfQogCi0gICAg
dmlydHVhbCBib29sIGhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4oKSB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBuZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWly
a3MoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRFbmFi
bGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKSB7IHJldHVybiBmYWxzZTsgfQogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCA3NjA2NmY1
MmE4YTIxODcwYjY1Nzk3YzQ4ZjUzODk5YmQyYzNiMWZjLi5jZWUzZWZhZjNhZjgxZTk0MDkyMTBm
YzI4NTJmNjM0OTkwNDZiYzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtNjUxLDcgKzY1MSw3
IEBAIHZvaWQgRnJhbWU6OmluamVjdFVzZXJTY3JpcHRzKFVzZXJTY3JpcHRJbmplY3Rpb25UaW1l
IGluamVjdGlvblRpbWUpCiAKIHZvaWQgRnJhbWU6OmluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVs
eShET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBVc2VyU2NyaXB0JiBzY3JpcHQpCiB7Ci0g
ICAgaWYgKGxvYWRlcigpLmNsaWVudCgpLmhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21h
aW4oKSAmJiAhbG9hZGVyKCkuY2xpZW50KCkubmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtz
KCkpIHsKKyAgICBpZiAobG9hZGVyKCkuY2xpZW50KCkuc2hvdWxkRW5hYmxlSW5BcHBCcm93c2Vy
UHJpdmFjeVByb3RlY3Rpb25zKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gdGhp
cy0+ZG9jdW1lbnQoKSkKICAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShN
ZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3Jpbmcg
dXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iX3MpOwogICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKExvYWRpbmcsICJpbmplY3RVc2VyU2Ny
aXB0SW1tZWRpYXRlbHk6IElnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uIGFw
cC1ib3VuZCBkb21haW4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDA2ODE4YzgyNTZhN2E0ZDY5
MDU2YzkzMTBjMWMxZDRmZmY2NWQ3YmQuLmYxODMxMGQwNDNmYTEwMDFkMTNlZDMyY2NhMGIzZDM1
MGNhMzJlOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMzE2Miw3ICszMTYyLDcgQEAgdm9pZCBQ
YWdlOjpyZXZlYWxDdXJyZW50U2VsZWN0aW9uKCkKIAogdm9pZCBQYWdlOjppbmplY3RVc2VyU3R5
bGVTaGVldChVc2VyU3R5bGVTaGVldCYgdXNlclN0eWxlU2hlZXQpCiB7Ci0gICAgaWYgKG1fbWFp
bkZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5oYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9t
YWluKCkpIHsKKyAgICBpZiAobV9tYWluRnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnNob3VsZEVu
YWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7CiAgICAgICAgIGlmIChhdXRv
KiBkb2N1bWVudCA9IG1fbWFpbkZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICAgICAgZG9jdW1l
bnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2
ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHN0eWxlIHNoZWV0IGZvciBub24tYXBwIGJvdW5k
IGRvbWFpbi4iX3MpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1dlYktpdE5hbWVzcGFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dlYktpdE5h
bWVzcGFjZS5jcHAKaW5kZXggYWMxMjQ3YzYxNGUxNmVlMGY1NTJjNzQzMDJmMjYzYjEzMjgxZjQz
MC4uNWIwYjc0MjgwNmJiMDY3NmY2M2I0NDYzYTlkMzVlZjIzMDJhNTg2YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9XZWJLaXROYW1lc3BhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvV2ViS2l0TmFtZXNwYWNlLmNwcApAQCAtNTAsNyArNTAsNyBAQCBXZWJLaXROYW1l
c3BhY2U6On5XZWJLaXROYW1lc3BhY2UoKSA9IGRlZmF1bHQ7CiAKIFVzZXJNZXNzYWdlSGFuZGxl
cnNOYW1lc3BhY2UqIFdlYktpdE5hbWVzcGFjZTo6bWVzc2FnZUhhbmRsZXJzKCkKIHsKLSAgICBp
ZiAoZnJhbWUoKSAmJiBmcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5oYXNOYXZpZ2F0ZWRBd2F5
RnJvbUFwcEJvdW5kRG9tYWluKCkpIHsKKyAgICBpZiAoZnJhbWUoKSAmJiBmcmFtZSgpLT5sb2Fk
ZXIoKS5jbGllbnQoKS5zaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMo
KSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKExvYWRpbmcsICJJZ25v
cmluZyBtZXNzYWdlSGFuZGxlcnMoKSByZXF1ZXN0IGZvciBub24gYXBwLWJvdW5kIGRvbWFpbiIp
OwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVTY29wZVJ1bGVTZXRzLmNwcAppbmRleCAyOTVkZjQwNDEwN2FkYzBiM2Y3YmZkOWUzOWIw
M2QwNGI5YzA0ZTY0Li5kMjRiMzMzMGZmMGE1MmMyMTI1YjdlM2YwNmNkMTY0YzJjMThlODA4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5jcHAKQEAgLTkyLDcg
KzkyLDcgQEAgdm9pZCBTY29wZVJ1bGVTZXRzOjppbml0aWFsaXplVXNlclN0eWxlKCkKICAgICBp
ZiAoQ1NTU3R5bGVTaGVldCogcGFnZVVzZXJTaGVldCA9IGV4dGVuc2lvblN0eWxlU2hlZXRzLnBh
Z2VVc2VyU2hlZXQoKSkKICAgICAgICAgdGVtcFVzZXJTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQo
cGFnZVVzZXJTaGVldC0+Y29udGVudHMoKSwgbnVsbHB0ciwgbWVkaWFRdWVyeUV2YWx1YXRvciwg
bV9zdHlsZVJlc29sdmVyKTsKICAgICBhdXRvKiBwYWdlID0gbV9zdHlsZVJlc29sdmVyLmRvY3Vt
ZW50KCkucGFnZSgpOwotICAgIGlmIChwYWdlICYmIHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigp
LmNsaWVudCgpLmhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4oKSAmJiAhZXh0ZW5z
aW9uU3R5bGVTaGVldHMuaW5qZWN0ZWRVc2VyU3R5bGVTaGVldHMoKS5pc0VtcHR5KCkpCisgICAg
aWYgKCFleHRlbnNpb25TdHlsZVNoZWV0cy5pbmplY3RlZFVzZXJTdHlsZVNoZWV0cygpLmlzRW1w
dHkoKSAmJiBwYWdlICYmIHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmNsaWVudCgpLnNob3Vs
ZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpKQogICAgICAgICBtX3N0eWxl
UmVzb2x2ZXIuZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1
cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzdHlsZSBzaGVldCBm
b3Igbm9uLWFwcCBib3VuZCBkb21haW4uIl9zKTsKICAgICBlbHNlCiAgICAgICAgIGNvbGxlY3RS
dWxlc0Zyb21Vc2VyU3R5bGVTaGVldHMoZXh0ZW5zaW9uU3R5bGVTaGVldHMuaW5qZWN0ZWRVc2Vy
U3R5bGVTaGVldHMoKSwgdGVtcFVzZXJTdHlsZS5nZXQoKSwgbWVkaWFRdWVyeUV2YWx1YXRvcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtT
ZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtTZXNzaW9uQ29jb2EubW0KaW5kZXggNjFmMTBjYzgxMjY0ZTI0YTZmNzZlNTE5NDExOWZkNTY3
ZjM3ZjlmOS4uZDZkOTA4MWQ4NGJjZTk0MWEwMTFlZWRkMWY0YTczYmJjZThiNDU3MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nl
c3Npb25Db2NvYS5tbQpAQCAtNjIsNiArNjIsNyBAQAogI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25z
L05ldHdvcmtTZXNzaW9uQ29jb2FBZGRpdGlvbnMuaD4KICNlbHNlCiAjZGVmaW5lIE5FVFdPUktf
U0VTU0lPTl9DT0NPQV9BRERJVElPTlNfMQorI2RlZmluZSBORVRXT1JLX1NFU1NJT05fQ09DT0Ff
QURESVRJT05TXzIKICNlbmRpZgogCiAjaW1wb3J0ICJEZXZpY2VNYW5hZ2VtZW50U29mdExpbmsu
aCIKQEAgLTEyNjAsNiArMTI2MSw4IEBAIHZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6aW5pdGlh
bGl6ZUVwaGVtZXJhbFN0YXRlbGVzc1Nlc3Npb24oTmF2aWdhdGluZ1RvQXBwQm91CiBTZXNzaW9u
V3JhcHBlciYgTmV0d29ya1Nlc3Npb25Db2NvYTo6c2Vzc2lvbldyYXBwZXJGb3JUYXNrKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIE9wdGlvbmFsPE5hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKQogewogICAgIGF1
dG8gc2hvdWxkQmVDb25zaWRlcmVkQXBwQm91bmQgPSBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluID8gKmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gOiBOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbjo6WWVzOworICAgIGlmIChORVRXT1JLX1NFU1NJT05fQ09DT0FfQURESVRJT05TXzIp
CisgICAgICAgIHNob3VsZEJlQ29uc2lkZXJlZEFwcEJvdW5kID0gTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW46Ok5vOwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAg
aWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkpIHsKICAg
ICAgICAgYXV0byBmaXJzdFBhcnR5ID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4ocmVxdWVz
dC5maXJzdFBhcnR5Rm9yQ29va2llcygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0xvYWRQYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0
ZXJzLmNwcAppbmRleCA2ZTU2OTlhNmYwYTc4ZGQ4YjhjMDgxMzYyNjRhZTIxM2MyODdmOGYxLi4y
ODk2OGVkY2E2Y2E5MjlhZTFkYmVjMzA2MWMyZTRjNTk0MzI0MGU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwCkBAIC01Nyw3ICs1Nyw2IEBAIHZvaWQgTG9hZFBhcmFt
ZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2Rlci5l
bmNvZGVFbnVtKGxvY2tCYWNrRm9yd2FyZExpc3QpOwogICAgIGVuY29kZXIgPDwgY2xpZW50UmVk
aXJlY3RTb3VyY2VGb3JIaXN0b3J5OwogICAgIGVuY29kZXIgPDwgaXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbjsKLSAgICBlbmNvZGVyIDw8IGhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmRE
b21haW47CiAKICAgICBwbGF0Zm9ybUVuY29kZShlbmNvZGVyKTsKIH0KQEAgLTEzOCw5ICsxMzcs
NiBAQCBib29sIExvYWRQYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBM
b2FkUGFyYW1ldGVycyYgZGF0YSkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuaGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERv
bWFpbikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKICAgICBpZiAoIXBsYXRmb3JtRGVj
b2RlKGRlY29kZXIsIGRhdGEpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Mb2FkUGFyYW1ldGVycy5oCmluZGV4IGE3YTQ5ZDBlYWQzMTA2ZWQ4MTYyMmUxM2IyMmZi
MTZjMjZiODkyN2IuLjBjMTFmOWM5MjMzMTFhODhkOTMzYWFhYjY4YjU5OWU0NDYxNWFkM2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmgKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuaApAQCAtNzAsOCArNzAsNyBAQCBzdHJ1
Y3QgTG9hZFBhcmFtZXRlcnMgewogICAgIFdlYkNvcmU6OkxvY2tIaXN0b3J5IGxvY2tIaXN0b3J5
IHsgV2ViQ29yZTo6TG9ja0hpc3Rvcnk6Ok5vIH07CiAgICAgV2ViQ29yZTo6TG9ja0JhY2tGb3J3
YXJkTGlzdCBsb2NrQmFja0ZvcndhcmRMaXN0IHsgV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlz
dDo6Tm8gfTsKICAgICBTdHJpbmcgY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5OwotICAg
IE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluIHsgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vIH07Ci0gICAgTmF2aWdh
dGVkQXdheUZyb21BcHBCb3VuZERvbWFpbiBoYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9t
YWluIHsgTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbjo6Tm8gfTsKKyAgICBPcHRpb25h
bDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
biB7IFdURjo6bnVsbG9wdCB9OwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRy
PE5TRGljdGlvbmFyeT4gZGF0YURldGVjdGlvbkNvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Qb2xpY3lEZWNpc2lvbi5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUG9s
aWN5RGVjaXNpb24uaAppbmRleCA0NDVlMzJiNWI5ZWFiMzJiNDcxNDUxMDc3ZWUxZDM4NDE5MDg2
MTNhLi44MjkxMWI2NzFhM2YyNTUzN2IwYzJmYTI4NWZmNjM0ZDgyYTA3MGJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Qb2xpY3lEZWNpc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1BvbGljeURlY2lzaW9uLmgKQEAgLTMzLDEyICszMyw5IEBACiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi1lbnVtIGNsYXNzIE5hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4g
OiBib29sIHsgWWVzLCBOb307Ci0KIHN0cnVjdCBQb2xpY3lEZWNpc2lvbiB7CiAgICAgV2ViQ29y
ZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIgeyB9OwotICAgIE9wdGlvbmFsPE5h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIHsg
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vIH07Ci0gICAgTmF2aWdhdGVkQXdheUZyb21B
cHBCb3VuZERvbWFpbiBoYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluIHsgTmF2aWdh
dGVkQXdheUZyb21BcHBCb3VuZERvbWFpbjo6Tm8gfTsKKyAgICBPcHRpb25hbDxOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiB7IFdURjo6bnVs
bG9wdCB9OwogICAgIFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24geyBXZWJDb3Jl
OjpQb2xpY3lBY3Rpb246Oklnbm9yZSB9OwogICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCB7IDAg
fTsKICAgICBEb3dubG9hZElEIGRvd25sb2FkSUQgeyAwIH07CkBAIC01MCw3ICs0Nyw2IEBAIHN0
cnVjdCBQb2xpY3lEZWNpc2lvbiB7CiAgICAgewogICAgICAgICBlbmNvZGVyIDw8IGlkZW50aWZp
ZXI7CiAgICAgICAgIGVuY29kZXIgPDwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKLSAg
ICAgICAgZW5jb2RlciA8PCBoYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluOwogICAg
ICAgICBlbmNvZGVyIDw8IHBvbGljeUFjdGlvbjsKICAgICAgICAgZW5jb2RlciA8PCBuYXZpZ2F0
aW9uSUQ7CiAgICAgICAgIGVuY29kZXIgPDwgZG93bmxvYWRJRDsKQEAgLTcwLDExICs2Niw2IEBA
IHN0cnVjdCBQb2xpY3lEZWNpc2lvbiB7CiAgICAgICAgIGRlY29kZXIgPj4gZGVjb2RlZElzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW47CiAgICAgICAgIGlmICghZGVjb2RlZElzTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4pCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAg
ICAgICAKLSAgICAgICAgT3B0aW9uYWw8TmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbj4g
ZGVjb2RlZEhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW47Ci0gICAgICAgIGRlY29k
ZXIgPj4gZGVjb2RlZEhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW47Ci0gICAgICAg
IGlmICghZGVjb2RlZEhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4pCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBv
bGljeUFjdGlvbj4gZGVjb2RlZFBvbGljeUFjdGlvbjsKICAgICAgICAgZGVjb2RlciA+PiBkZWNv
ZGVkUG9saWN5QWN0aW9uOwpAQCAtMTAxLDcgKzkyLDcgQEAgc3RydWN0IFBvbGljeURlY2lzaW9u
IHsKICAgICAgICAgaWYgKCFzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQogICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKIAotICAgICAgICByZXR1cm4ge3sgV1RGTW92ZSgqZGVjb2RlZElk
ZW50aWZpZXIpLCBXVEZNb3ZlKCpkZWNvZGVkSXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiks
IFdURk1vdmUoKmRlY29kZWRIYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluKSwgV1RG
TW92ZSgqZGVjb2RlZFBvbGljeUFjdGlvbiksIFdURk1vdmUoKmRlY29kZWROYXZpZ2F0aW9uSUQp
LCBXVEZNb3ZlKCpkZWNvZGVkRG93bmxvYWRJRCksIFdURk1vdmUoKmRlY29kZWRXZWJzaXRlUG9s
aWNpZXNEYXRhKSwgV1RGTW92ZSgqc2FuZGJveEV4dGVuc2lvbkhhbmRsZSl9fTsKKyAgICAgICAg
cmV0dXJuIHt7IFdURk1vdmUoKmRlY29kZWRJZGVudGlmaWVyKSwgV1RGTW92ZSgqZGVjb2RlZElz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pLCBXVEZNb3ZlKCpkZWNvZGVkUG9saWN5QWN0aW9u
KSwgV1RGTW92ZSgqZGVjb2RlZE5hdmlnYXRpb25JRCksIFdURk1vdmUoKmRlY29kZWREb3dubG9h
ZElEKSwgV1RGTW92ZSgqZGVjb2RlZFdlYnNpdGVQb2xpY2llc0RhdGEpLCBXVEZNb3ZlKCpzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlKX19OwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAppbmRleCAzZWY3MjdhYmU0ZDZiZDBm
MjFjNWM5NWMxZTIwNDU3ZTk5MzY2NTg4Li5hZDQ4YmNkNjk5NDZjMzc0N2EwMjRkMmQzOTA1ZjQ3
OWUzMTc4ZGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25h
bFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQ
YWdlUHJveHkuY3BwCkBAIC0xNTYsMTQgKzE1NiwxNCBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVBy
b3h5Ojppbml0aWFsaXplV2ViUGFnZShSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgd2Vi
cwogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGcmVlemVMYXllclRyZWVEdWVUb1N3
aXBlQW5pbWF0aW9uKCkpOwogfQogCi12b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkRGF0
YShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYg
ZGF0YSwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29u
c3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIE9wdGlvbmFsPE5hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBOYXZp
Z2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluIGhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmRE
b21haW4sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQor
dm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZERhdGEoQVBJOjpOYXZpZ2F0aW9uJiBuYXZp
Z2F0aW9uLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlN
RVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJ
OjpPYmplY3QqIHVzZXJEYXRhLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4g
aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0
YT4mJiB3ZWJzaXRlUG9saWNpZXMpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9j
ZXNzU3dhcHBpbmcsICJsb2FkRGF0YTogcGFnZVByb3h5SUQ9JSIgUFJJdTY0ICIgd2ViUGFnZUlE
PSUiIFBSSXU2NCwgbV9wYWdlLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50
b1VJbnQ2NCgpKTsKIAotICAgIG1fcGFnZS5sb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1f
cHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9uLCBkYXRhLCBNSU1FVHlw
ZSwgZW5jb2RpbmcsIGJhc2VVUkwsIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29u
dGludWluZ0xvYWQ6OlllcywgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgaGFzTmF2aWdh
dGVkQXdheUZyb21BcHBCb3VuZERvbWFpbiwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpLCBuYXZp
Z2F0aW9uLmxhc3ROYXZpZ2F0aW9uQWN0aW9uKCkuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSk7CisgICAgbV9wYWdlLmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQobV9wcm9jZXNzLmNv
cHlSZWYoKSwgbV93ZWJQYWdlSUQsIG5hdmlnYXRpb24sIGRhdGEsIE1JTUVUeXBlLCBlbmNvZGlu
ZywgYmFzZVVSTCwgdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9h
ZDo6WWVzLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBXVEZNb3ZlKHdlYnNpdGVQb2xp
Y2llcyksIG5hdmlnYXRpb24ubGFzdE5hdmlnYXRpb25BY3Rpb24oKS5zaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5KTsKIH0KIAotdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVl
c3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBOYXZpZ2F0ZWRBd2F5
RnJvbUFwcEJvdW5kRG9tYWluIGhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4sIE9w
dGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQordm9pZCBQcm92
aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9u
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBBUEk6Ok9iamVjdCogdXNlckRh
dGEsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xp
Y2llcykKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImxv
YWRSZXF1ZXN0OiBwYWdlUHJveHlJRD0lIiBQUkl1NjQgIiB3ZWJQYWdlSUQ9JSIgUFJJdTY0LCBt
X3BhZ2UuaWRlbnRpZmllcigpLnRvVUludDY0KCksIG1fd2ViUGFnZUlELnRvVUludDY0KCkpOwog
CkBAIC0xNzMsNyArMTczLDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVl
c3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJDb3JlOjpSZXMKICAgICBpZiAobmF2
aWdhdGlvbi5mcm9tSXRlbSgpICYmIG5hdmlnYXRpb24ubG9ja0JhY2tGb3J3YXJkTGlzdCgpID09
IFdlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExpc3Q6OlllcykKICAgICAgICAgbmF2aWdhdGlvbi5m
cm9tSXRlbSgpLT5zZXRMYXN0UHJvY2Vzc0lkZW50aWZpZXIobV9wcm9jZXNzLT5jb3JlUHJvY2Vz
c0lkZW50aWZpZXIoKSk7CiAKLSAgICBtX3BhZ2UubG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNo
YXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgbmF2aWdhdGlvbiwgV1RGTW92
ZShyZXF1ZXN0KSwgbmF2aWdhdGlvbi5sYXN0TmF2aWdhdGlvbkFjdGlvbigpLnNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3ksIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGlu
dWluZ0xvYWQ6OlllcywgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgaGFzTmF2aWdhdGVk
QXdheUZyb21BcHBCb3VuZERvbWFpbiwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsKKyAgICBt
X3BhZ2UubG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigp
LCBtX3dlYlBhZ2VJRCwgbmF2aWdhdGlvbiwgV1RGTW92ZShyZXF1ZXN0KSwgbmF2aWdhdGlvbi5s
YXN0TmF2aWdhdGlvbkFjdGlvbigpLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHVzZXJE
YXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6OlllcywgaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbiwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsKIH0KIAogdm9p
ZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShBUEk6Ok5hdmlnYXRp
b24mIG5hdmlnYXRpb24sIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0sIFJlZlB0cjxBUEk6
OldlYnNpdGVQb2xpY2llcz4mJiB3ZWJzaXRlUG9saWNpZXMpCkBAIC0zNTcsNyArMzU3LDcgQEAg
dm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
blN5bmMoRnJhbWVJZGVudGlmaWVyIGYKICAgICBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5j
OjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBpZiAoIWlzTWFpbkZyYW1lIHx8IChtX21h
aW5GcmFtZSAmJiBtX21haW5GcmFtZS0+ZnJhbWVJRCgpICE9IGZyYW1lSUQpIHx8IG5hdmlnYXRp
b25JRCAhPSBtX25hdmlnYXRpb25JRCkgewotICAgICAgICByZXBseShQb2xpY3lEZWNpc2lvbiB7
IGlkZW50aWZpZXIsIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObywgTmF2aWdhdGVkQXdh
eUZyb21BcHBCb3VuZERvbWFpbjo6Tm8sIFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6SWdub3JlLCBu
YXZpZ2F0aW9uSUQsIERvd25sb2FkSUQoKSwgV1RGOjpudWxsb3B0IH0pOworICAgICAgICByZXBs
eShQb2xpY3lEZWNpc2lvbiB7IGlkZW50aWZpZXIsIFdURjo6bnVsbG9wdCwgV2ViQ29yZTo6UG9s
aWN5QWN0aW9uOjpJZ25vcmUsIG5hdmlnYXRpb25JRCwgRG93bmxvYWRJRCgpLCBXVEY6Om51bGxv
cHQgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCmluZGV4IDQ0YmZjYmJkYzJiYTMxMGQwNGY1NGVh
NDBjNjQ3MmQ4M2VlMGQwYzIuLjlkNzIxMzEzODc4YTBiNDZkM2QwNDQ5NWQ0YmE3MThlZTg1ODAz
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHku
aApAQCAtOTIsOCArOTIsOCBAQCBwdWJsaWM6CiAgICAgTGF5ZXJIb3N0aW5nQ29udGV4dElEIGNv
bnRleHRJREZvclZpc2liaWxpdHlQcm9wYWdhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4
dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uOyB9CiAjZW5kaWYKIAotICAgIHZvaWQgbG9hZERh
dGEoQVBJOjpOYXZpZ2F0aW9uJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3Ry
aW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNl
VVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluPiwgTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbiwgT3B0aW9uYWw8V2Vic2l0
ZVBvbGljaWVzRGF0YT4mJiA9IFdURjo6bnVsbG9wdCk7Ci0gICAgdm9pZCBsb2FkUmVxdWVzdChB
UEk6Ok5hdmlnYXRpb24mLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIE5hdmlnYXRl
ZEF3YXlGcm9tQXBwQm91bmREb21haW4sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYg
PSBXVEY6Om51bGxvcHQpOworICAgIHZvaWQgbG9hZERhdGEoQVBJOjpOYXZpZ2F0aW9uJiwgY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3Ry
aW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRh
dGEsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgT3B0aW9uYWw8V2Vic2l0
ZVBvbGljaWVzRGF0YT4mJiA9IFdURjo6bnVsbG9wdCk7CisgICAgdm9pZCBsb2FkUmVxdWVzdChB
UEk6Ok5hdmlnYXRpb24mLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIE9wdGlvbmFs
PFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBXVEY6Om51bGxvcHQpOwogICAgIHZvaWQgZ29Ub0Jh
Y2tGb3J3YXJkSXRlbShBUEk6Ok5hdmlnYXRpb24mLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiwg
UmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmKTsKICAgICB2b2lkIGNhbmNlbCgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA0MDk0OGMyMWUzOWMw
ODk0OGYyODlhNTQ5NjJmMTUxZWUxYmE2OWQxLi45NzBiZmVlYThlOWI4YWFiNDM5ZGQwZDlhNGY1
MzY2NDQxZWRmOGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
QEAgLTEyODAsMTEgKzEyODAsMTEgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVBy
b3h5Ojpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTaG8KICAgICBpZiAo
c2hvdWxkRm9yY2VGb3JlZ3JvdW5kUHJpb3JpdHlGb3JDbGllbnROYXZpZ2F0aW9uKCkpCiAgICAg
ICAgIG5hdmlnYXRpb24tPnNldENsaWVudE5hdmlnYXRpb25BY3Rpdml0eShwcm9jZXNzKCkudGhy
b3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5KCJDbGllbnQgbmF2aWdhdGlvbiJfcykpOwogCi0g
ICAgbG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBt
X3dlYlBhZ2VJRCwgbmF2aWdhdGlvbi5nZXQoKSwgV1RGTW92ZShyZXF1ZXN0KSwgc2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSwgdXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9h
ZDo6Tm8sIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgaGFzTmF2aWdhdGVkQXdheUZy
b21BcHBCb3VuZERvbWFpbigpKTsKKyAgICBsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVk
KG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9uLmdldCgpLCBXVEZN
b3ZlKHJlcXVlc3QpLCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCB1c2VyRGF0YSwgU2hv
dWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObywgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bigpKTsKICAgICByZXR1cm4gbmF2aWdhdGlvbjsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6Omxv
YWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9j
ZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIEFQSTo6TmF2aWdhdGlvbiYg
bmF2aWdhdGlvbiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNl
ckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWlu
Z0xvYWQsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluLCBOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluIGhhc05hdmln
YXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+
JiYgd2Vic2l0ZVBvbGljaWVzKQordm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0V2l0aE5h
dmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFNob3VsZFRy
ZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFs
PE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
LCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsKICAg
ICBBU1NFUlQoIW1faXNDbG9zZWQpOwogCkBAIC0xMzA3LDcgKzEzMDcsNiBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmIHByb2NlcwogICAgIGxvYWRQYXJhbWV0ZXJzLmxvY2tCYWNrRm9yd2FyZExpc3QgPSBu
YXZpZ2F0aW9uLmxvY2tCYWNrRm9yd2FyZExpc3QoKTsKICAgICBsb2FkUGFyYW1ldGVycy5jbGll
bnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkgPSBuYXZpZ2F0aW9uLmNsaWVudFJlZGlyZWN0U291
cmNlRm9ySGlzdG9yeSgpOwogICAgIGxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4gPSBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOwotICAgIGxvYWRQYXJhbWV0
ZXJzLmhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4gPSBoYXNOYXZpZ2F0ZWRBd2F5
RnJvbUFwcEJvdW5kRG9tYWluOwogICAgIG1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25I
YW5kbGUocHJvY2VzcywgdXJsLCBtX3BhZ2VMb2FkU3RhdGUucmVzb3VyY2VEaXJlY3RvcnlVUkwo
KSwgbG9hZFBhcmFtZXRlcnMuc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CiAKICAgICBhZGRQbGF0
Zm9ybUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKQEAgLTE0MDQsMTEgKzE0MDMsMTEg
QEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGMKICAgICBpZiAoc2hvdWxkRm9yY2VGb3JlZ3JvdW5k
UHJpb3JpdHlGb3JDbGllbnROYXZpZ2F0aW9uKCkpCiAgICAgICAgIG5hdmlnYXRpb24tPnNldENs
aWVudE5hdmlnYXRpb25BY3Rpdml0eShwcm9jZXNzKCkudGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFj
dGl2aXR5KCJDbGllbnQgbmF2aWdhdGlvbiJfcykpOwogCi0gICAgbG9hZERhdGFXaXRoTmF2aWdh
dGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgbmF2aWdhdGlvbiwg
ZGF0YSwgTUlNRVR5cGUsIGVuY29kaW5nLCBiYXNlVVJMLCB1c2VyRGF0YSwgU2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkOjpObywgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBoYXNO
YXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluKCksIFdURjo6bnVsbG9wdCwgc2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSk7CisgICAgbG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZCht
X3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgbmF2aWdhdGlvbiwgZGF0YSwgTUlNRVR5
cGUsIGVuY29kaW5nLCBiYXNlVVJMLCB1c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdM
b2FkOjpObywgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBXVEY6Om51bGxvcHQsIHNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwogICAgIHJldHVybiBuYXZpZ2F0aW9uOwogfQog
Ci12b2lkIFdlYlBhZ2VQcm94eTo6bG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJ
RCwgQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
IGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNv
bnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBTaG91bGRUcmVhdEFz
Q29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRpb25hbDxOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgTmF2
aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbiBoYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5k
RG9tYWluLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcywg
U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
KQordm9pZCBXZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdl
YlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdl
SUQsIEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBj
b25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgU2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8TmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIE9w
dGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzLCBTaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpCiB7CiAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZERhdGFXaXRoTmF2aWdhdGlvbiIp
OwogCkBAIC0xNDI5LDcgKzE0MjgsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZERhdGFXaXRo
TmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsCiAgICAgbG9h
ZFBhcmFtZXRlcnMud2Vic2l0ZVBvbGljaWVzID0gV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpOwog
ICAgIGxvYWRQYXJhbWV0ZXJzLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBzaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5OwogICAgIGxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4gPSBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOwotICAgIGxvYWRQ
YXJhbWV0ZXJzLmhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4gPSBoYXNOYXZpZ2F0
ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluOwogICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMo
bG9hZFBhcmFtZXRlcnMpOwogCiAgICAgcHJvY2Vzcy0+YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVS
TCgqdGhpcywgYmFzZVVSTCk7CkBAIC0zMTMwLDkgKzMxMjgsMTAgQEAgYm9vbCBXZWJQYWdlUHJv
eHk6OnNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW5BbmRDaGVja0lmUGVybWl0dGVkKGJv
b2wgaXNNYWkKICAgICAgICAgICAgIG1fY29uZmlndXJhdGlvbi0+c2V0V2ViVmlld0NhdGVnb3J5
KFdlYlZpZXdDYXRlZ29yeTo6QXBwQm91bmREb21haW4pOwogICAgICAgICAgICAgbV9pc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluID0gTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46OlllczsK
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChtX2hhc0V4ZWN1dGVkQXBwQm91bmRC
ZWhhdmlvckJlZm9yZU5hdmlnYXRpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAgICAgbV9jb25maWd1cmF0aW9uLT5zZXRXZWJWaWV3Q2F0ZWdvcnkoV2ViVmlld0Nh
dGVnb3J5OjpJbkFwcEJyb3dzZXIpOwogICAgICAgICAgICAgbV9pc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluID0gTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vOwotICAgICAgICAgICAg
bV9oYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluID0gTmF2aWdhdGVkQXdheUZyb21B
cHBCb3VuZERvbWFpbjo6WWVzOwogICAgICAgICB9CiAgICAgfQogI2Vsc2UKQEAgLTMyNzQsNyAr
MzI3Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNp
c2lvbihQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVj
ZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24q
IG5hdmlnYXRpb24sIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiB3ZWJzaXRlUG9saWNp
ZXMsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJiBzZW5kZXIsIE9wdGlvbmFsPFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZT4gc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgV2lsbENvbnRpbnVlTG9h
ZEluTmV3UHJvY2VzcyB3aWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzKQogewogICAgIGlmICgh
aGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBzZW5kZXItPnNlbmQoUG9saWN5RGVjaXNp
b24geyBzZW5kZXItPmlkZW50aWZpZXIoKSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigp
LCBoYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluKCksIFBvbGljeUFjdGlvbjo6SWdu
b3JlLCAwLCBEb3dubG9hZElEKCksIFdURjo6bnVsbG9wdCB9KTsKKyAgICAgICAgc2VuZGVyLT5z
ZW5kKFBvbGljeURlY2lzaW9uIHsgc2VuZGVyLT5pZGVudGlmaWVyKCksIGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4oKSwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIERvd25sb2FkSUQoKSwg
V1RGOjpudWxsb3B0IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zMzAxLDcgKzMz
MDAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lB
Y3Rpb24gYWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qCiAgICAgaWYgKHdlYnNpdGVQb2xpY2llcykK
ICAgICAgICAgd2Vic2l0ZVBvbGljaWVzRGF0YSA9IHdlYnNpdGVQb2xpY2llcy0+ZGF0YSgpOwog
Ci0gICAgc2VuZGVyLT5zZW5kKFBvbGljeURlY2lzaW9uIHsgc2VuZGVyLT5pZGVudGlmaWVyKCks
IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgaGFzTmF2aWdhdGVkQXdheUZyb21BcHBC
b3VuZERvbWFpbigpLCBhY3Rpb24sIG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9u
SUQoKSA6IDAsIGRvd25sb2FkSUQsIFdURk1vdmUod2Vic2l0ZVBvbGljaWVzRGF0YSksIFdURk1v
dmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkgfSk7CisgICAgc2VuZGVyLT5zZW5kKFBvbGljeURl
Y2lzaW9uIHsgc2VuZGVyLT5pZGVudGlmaWVyKCksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4oKSwgYWN0aW9uLCBuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkgOiAw
LCBkb3dubG9hZElELCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llc0RhdGEpLCBXVEZNb3ZlKHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpIH0pOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJv
dmlzaW9uYWxQYWdlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYgZnJh
bWVJbmZvLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlk
ZXIsIHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5m
byYgY2VydGlmaWNhdGVJbmZvLCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wgY29udGFpbnNQbHVn
aW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRI
YXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKQEAgLTMzODIsOSAr
MzM4MSw5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nl
c3MoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBzCiAgICAgICAgIC8vIEZJWE1FOiBXb3Jr
IG91dCB0aW1pbmcgb2YgcmVzcG9uZGluZyB3aXRoIHRoZSBsYXN0IHBvbGljeSBkZWxlZ2F0ZSwg
ZXRjCiAgICAgICAgIEFTU0VSVCghbmF2aWdhdGlvbi0+Y3VycmVudFJlcXVlc3QoKS5pc0VtcHR5
KCkpOwogICAgICAgICBpZiAoYXV0byYgc3Vic3RpdHV0ZURhdGEgPSBuYXZpZ2F0aW9uLT5zdWJz
dGl0dXRlRGF0YSgpKQotICAgICAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPmxvYWREYXRhKG5h
dmlnYXRpb24sIHsgc3Vic3RpdHV0ZURhdGEtPmNvbnRlbnQuZGF0YSgpLCBzdWJzdGl0dXRlRGF0
YS0+Y29udGVudC5zaXplKCkgfSwgc3Vic3RpdHV0ZURhdGEtPk1JTUVUeXBlLCBzdWJzdGl0dXRl
RGF0YS0+ZW5jb2RpbmcsIHN1YnN0aXR1dGVEYXRhLT5iYXNlVVJMLCBzdWJzdGl0dXRlRGF0YS0+
dXNlckRhdGEuZ2V0KCksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgaGFzTmF2aWdh
dGVkQXdheUZyb21BcHBCb3VuZERvbWFpbigpLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llc0RhdGEp
KTsKKyAgICAgICAgICAgIG1fcHJvdmlzaW9uYWxQYWdlLT5sb2FkRGF0YShuYXZpZ2F0aW9uLCB7
IHN1YnN0aXR1dGVEYXRhLT5jb250ZW50LmRhdGEoKSwgc3Vic3RpdHV0ZURhdGEtPmNvbnRlbnQu
c2l6ZSgpIH0sIHN1YnN0aXR1dGVEYXRhLT5NSU1FVHlwZSwgc3Vic3RpdHV0ZURhdGEtPmVuY29k
aW5nLCBzdWJzdGl0dXRlRGF0YS0+YmFzZVVSTCwgc3Vic3RpdHV0ZURhdGEtPnVzZXJEYXRhLmdl
dCgpLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIFdURk1vdmUod2Vic2l0ZVBvbGlj
aWVzRGF0YSkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Byb3Zpc2lvbmFsUGFnZS0+
bG9hZFJlcXVlc3QobmF2aWdhdGlvbiwgUmVzb3VyY2VSZXF1ZXN0IHsgbmF2aWdhdGlvbi0+Y3Vy
cmVudFJlcXVlc3QoKSB9LCBudWxscHRyLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCks
IGhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4oKSwgV1RGTW92ZSh3ZWJzaXRlUG9s
aWNpZXNEYXRhKSk7CisgICAgICAgICAgICBtX3Byb3Zpc2lvbmFsUGFnZS0+bG9hZFJlcXVlc3Qo
bmF2aWdhdGlvbiwgUmVzb3VyY2VSZXF1ZXN0IHsgbmF2aWdhdGlvbi0+Y3VycmVudFJlcXVlc3Qo
KSB9LCBudWxscHRyLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIFdURk1vdmUod2Vi
c2l0ZVBvbGljaWVzRGF0YSkpOwogICAgIH07CiAgICAgaWYgKG1faW5zcGVjdG9yQ29udHJvbGxl
ci0+c2hvdWxkUGF1c2VMb2FkaW5nKCptX3Byb3Zpc2lvbmFsUGFnZSkpCiAgICAgICAgIG1faW5z
cGVjdG9yQ29udHJvbGxlci0+c2V0Q29udGludWVMb2FkaW5nQ2FsbGJhY2soKm1fcHJvdmlzaW9u
YWxQYWdlLCBXVEZNb3ZlKGNvbnRpbnVhdGlvbikpOwpAQCAtNTA5OCw3ICs1MDk3LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiBwcm9jZXMKIAogICAgIGlmICghY2hlY2tVUkxSZWNlaXZlZEZyb21DdXJy
ZW50T3JQcmV2aW91c1dlYlByb2Nlc3MocHJvY2VzcywgcmVxdWVzdC51cmwoKSkpIHsKICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNzLCAiSWdub3JpbmcgcmVxdWVz
dCB0byBsb2FkIHRoaXMgbWFpbiByZXNvdXJjZSBiZWNhdXNlIGl0IGlzIG91dHNpZGUgdGhlIHNh
bmRib3giKTsKLSAgICAgICAgc2VuZGVyLT5zZW5kKFBvbGljeURlY2lzaW9uIHsgc2VuZGVyLT5p
ZGVudGlmaWVyKCksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgaGFzTmF2aWdhdGVk
QXdheUZyb21BcHBCb3VuZERvbWFpbigpLCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgRG93bmxv
YWRJRCgpLCBXVEY6Om51bGxvcHQgfSk7CisgICAgICAgIHNlbmRlci0+c2VuZChQb2xpY3lEZWNp
c2lvbiB7IHNlbmRlci0+aWRlbnRpZmllcigpLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
KCksIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCBEb3dubG9hZElEKCksIFdURjo6bnVsbG9wdCB9
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTE3Miw5ICs1MTcxLDkgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nl
c3NQcm94eT4mJiBwcm9jZXMKICAgICAgICAgCiAgICAgICAgIGlmIChwb2xpY3lBY3Rpb24gIT0g
UG9saWN5QWN0aW9uOjpJZ25vcmUpIHsKICAgICAgICAgICAgIGlmICghc2V0SXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbkFuZENoZWNrSWZQZXJtaXR0ZWQoZnJhbWUtPmlzTWFpbkZyYW1lKCks
IG5hdmlnYXRpb24tPmN1cnJlbnRSZXF1ZXN0KCkudXJsKCksIGlzQXBwQm91bmREb21haW4pKSB7
Ci0gICAgICAgICAgICAgICAgYXV0byBlcnJvciA9IFJlc291cmNlRXJyb3IgeyBTdHJpbmcgeyB9
LCAwLCBuYXZpZ2F0aW9uLT5jdXJyZW50UmVxdWVzdCgpLnVybCgpLCAiQXR0ZW1wdGVkIG5hdmln
YXRpb24gYXdheSBmcm9tIGFwcC1ib3VuZCBkb21haW4iX3MgfTsKKyAgICAgICAgICAgICAgICBh
dXRvIGVycm9yID0gUmVzb3VyY2VFcnJvciB7IFN0cmluZyB7IH0sIDAsIG5hdmlnYXRpb24tPmN1
cnJlbnRSZXF1ZXN0KCkudXJsKCksICJBcHAtYm91bmQgZG9tYWluIGZhaWx1cmUiX3MgfTsKICAg
ICAgICAgICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRpZEZhaWxQcm92aXNpb25hbE5hdmln
YXRpb25XaXRoRXJyb3IoKnRoaXMsIEZyYW1lSW5mb0RhdGEgeyBmcmFtZUluZm8gfSwgbmF2aWdh
dGlvbi5nZXQoKSwgZXJyb3IsIHVzZXJEYXRhT2JqZWN0KTsKLSAgICAgICAgICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKExvYWRpbmcsICJJZ25vcmluZyByZXF1ZXN0IHRvIGxv
YWQgdGhpcyBtYWluIHJlc291cmNlIGJlY2F1c2UgaXQgaXMgYXR0ZW1wdGluZyB0byBuYXZpZ2F0
ZSBhd2F5IGZyb20gYW4gYXBwLWJvdW5kIGRvbWFpbiIpOworICAgICAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoTG9hZGluZywgIklnbm9yaW5nIHJlcXVlc3QgdG8gbG9h
ZCB0aGlzIG1haW4gcmVzb3VyY2UgYmVjYXVzZSBpdCBpcyBhdHRlbXB0aW5nIHRvIG5hdmlnYXRl
IGF3YXkgZnJvbSBhbiBhcHAtYm91bmQgZG9tYWluIG9yIG5hdmlnYXRlIGFmdGVyIHVzaW5nIHJl
c3RyaWN0ZWQgQVBJcyIpOwogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGlj
eUFjdGlvbjo6SWdub3JlKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
CkBAIC01MzQ2LDcgKzUzNDUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvblN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eQogICAgIGRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV1RGTW92ZShwcm9jZXNzKSwgKmZyYW1lLCBXVEZN
b3ZlKGZyYW1lSW5mbyksIG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0
YSksIFdURk1vdmUob3JpZ2luYXRpbmdGcmFtZUluZm8pLCBvcmlnaW5hdGluZ1BhZ2VJRCwgb3Jp
Z2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlcXVlc3RCb2R5KSwgV1RG
TW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgdXNlckRhdGEsIHNlbmRlci5jb3B5UmVmKCkpOwogCiAg
ICAgLy8gSWYgdGhlIGNsaWVudCBkaWQgbm90IHJlc3BvbmQgc3luY2hyb25vdXNseSwgcHJvY2Vl
ZCB3aXRoIHRoZSBsb2FkLgotICAgIHNlbmRlci0+c2VuZChQb2xpY3lEZWNpc2lvbiB7IHNlbmRl
ci0+aWRlbnRpZmllcigpLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIGhhc05hdmln
YXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4oKSwgUG9saWN5QWN0aW9uOjpVc2UsIG5hdmlnYXRp
b25JRCwgRG93bmxvYWRJRCgpLCBXVEY6Om51bGxvcHQgfSk7CisgICAgc2VuZGVyLT5zZW5kKFBv
bGljeURlY2lzaW9uIHsgc2VuZGVyLT5pZGVudGlmaWVyKCksIGlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4oKSwgUG9saWN5QWN0aW9uOjpVc2UsIG5hdmlnYXRpb25JRCwgRG93bmxvYWRJRCgp
LCBXVEY6Om51bGxvcHQgfSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lG
b3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEm
JiBmcmFtZUluZm8sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCBOYXZpZ2F0aW9u
QWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3Qg
VXNlckRhdGEmIHVzZXJEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApp
bmRleCAwMTc4NzgxZTc3NjZjODRhYzhiNTYwN2Q2YzQzZTRjN2E2NTI5MDZhLi43Njk4ZTZhMDM3
ODNiMjcxYjNhMzg1MDljOGNjMGYxNDg1ZTQ5OTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaApAQCAtMTY1MCw4ICsxNjUwLDggQEAgcHVibGljOgogICAgIHZvaWQgZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIEZyYW1lSW5mb0RhdGEmJiBv
cmlnaW5hdGluZ0ZyYW1lSW5mbywgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3Jp
Z2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxS
ZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5j
ZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNw
b25zZSwgY29uc3QgVXNlckRhdGEmLCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKICAgICB2b2lkIGRl
Y2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0Rh
dGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBkb3dubG9h
ZEF0dHJpYnV0ZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2
b2lkIHN0YXJ0VVJMU2NoZW1lVGFza1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMmJik7Ci0gICAgdm9p
ZCBsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBBUEk6Ok5hdmlnYXRpb24mLCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5n
LCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6
U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbj4sIE5hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4sIE9wdGlvbmFsPFdlYnNp
dGVQb2xpY2llc0RhdGE+JiYgPSBXVEY6Om51bGxvcHQsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpT
aG91bGROb3RBbGxvdyk7Ci0gICAgdm9pZCBsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVk
KFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBBUEk6Ok5h
dmlnYXRpb24mLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6U2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91
bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluPiwgTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbiwgT3B0aW9uYWw8V2Vic2l0ZVBv
bGljaWVzRGF0YT4mJiA9IFdURjo6bnVsbG9wdCk7CisgICAgdm9pZCBsb2FkRGF0YVdpdGhOYXZp
Z2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBBUEk6Ok5hdmlnYXRpb24mLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBT
dHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJh
c2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRp
bnVpbmdMb2FkLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIE9wdGlvbmFs
PFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBXVEY6Om51bGxvcHQsIFdlYkNvcmU6OlNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5OjpTaG91bGROb3RBbGxvdyk7CisgICAgdm9pZCBsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9u
U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBB
UEk6Ok5hdmlnYXRpb24mLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6U2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3Jl
OjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluPiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdURjo6bnVsbG9w
dCk7CiAgICAgdm9pZCBiYWNrRm9yd2FyZEdvVG9JdGVtU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYsIGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cyYpPiYmKTsKICAg
ICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jU2hhcmVkKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgYm9vbCBpc01haW5GcmFt
ZSwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYm
IG9yaWdpbmF0aW5nRnJhbWVJbmZvLCBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBv
cmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5h
bFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJl
bmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJl
c3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jRGVsYXllZFJlcGx5JiYpOwogI2lmIFVTRShRVUlD
S19MT09LKQpAQCAtMTc2Myw2ICsxNzYzLDggQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlTWVk
aWFVc2FnZU1hbmFnZXJTZXNzaW9uKFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbklkZW50aWZpZXIpOwog
I2VuZGlmCiAKKyAgICB2b2lkIHNldEhhc0V4ZWN1dGVkQXBwQm91bmRCZWhhdmlvckJlZm9yZU5h
dmlnYXRpb24oKSB7IG1faGFzRXhlY3V0ZWRBcHBCb3VuZEJlaGF2aW9yQmVmb3JlTmF2aWdhdGlv
biA9IHRydWU7IH0KKyAgICAgICAgCiBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xp
ZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwog
ICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CkBAIC0yMzE3LDcgKzIzMTksNiBAQCBwcml2
YXRlOgogICAgIHZvaWQgbWFrZVN0b3JhZ2VTcGFjZVJlcXVlc3QoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGF0
YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1aW50NjRfdCBjdXJyZW50UXVv
dGEsIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSwgdWludDY0X3QgY3VycmVudERhdGFiYXNl
VXNhZ2UsIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWlu
dDY0X3QpPiYmKTsKICAgICAgICAgCiAgICAgYm9vbCBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluQW5kQ2hlY2tJZlBlcm1pdHRlZChib29sIGlzTWFpbkZyYW1lLCBjb25zdCBVUkwmLCBP
cHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4pOwotICAgIE5hdmlnYXRlZEF3YXlG
cm9tQXBwQm91bmREb21haW4gaGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbigpIGNv
bnN0IHsgcmV0dXJuIG1faGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbjsgfQogICAg
ICAgICAKICAgICBjb25zdCBJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBtX3dlYlBhZ2VJRDsKQEAgLTI4MTEsMTEgKzI4MTIsMTEgQEAgcHJpdmF0
ZToKICAgICBNb25vdG9uaWNUaW1lIG1fZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yTWFpbkZyYW1l
VGltZXN0YW1wOwogI2VuZGlmCiAgICAgICAgIAotICAgIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluPiBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4geyBOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbjo6Tm8gfTsKLSAgICBOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9t
YWluIG1faGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbiB7IE5hdmlnYXRlZEF3YXlG
cm9tQXBwQm91bmREb21haW46Ok5vIH07CisgICAgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4+IG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiB7IFdURjo6bnVsbG9wdCB9
OwogICAgIGJvb2wgbV9pZ25vcmVzQXBwQm91bmREb21haW5zIHsgZmFsc2UgfTsKICAgICBib29s
IG1fdXNlclNjcmlwdHNOb3RpZmllZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2xpbWl0c05hdmln
YXRpb25zVG9BcHBCb3VuZERvbWFpbnMgeyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXNFeGVjdXRl
ZEFwcEJvdW5kQmVoYXZpb3JCZWZvcmVOYXZpZ2F0aW9uIHsgZmFsc2UgfTsKIAogI2lmIEVOQUJM
RShST1VUSU5HX0FSQklUUkFUSU9OKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb1Nlc3Npb25S
b3V0aW5nQXJiaXRyYXRvclByb3h5PiBtX3JvdXRpbmdBcmJpdHJhdG9yOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGQxMjAyMTE1
MjFmMDYxMTkxOTVkOWRjNzhjOGY0N2VkZDY4ZGRjZGUuLjczZjkzMjE2YjRhNDFlY2ZiYWI3YmUy
NTQxMjljODVjNzcyOGYxNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTU5OSw0ICs1OTksNSBAQCBtZXNzYWdlcyAtPiBXZWJQ
YWdlUHJveHkgewogICAgIFJlbW92ZU1lZGlhVXNhZ2VNYW5hZ2VyU2Vzc2lvbihXZWJDb3JlOjpN
ZWRpYVNlc3Npb25JZGVudGlmaWVyIGlkZW50aWZpZXIpOwogI2VuZGlmCiAKKyAgICBTZXRIYXNF
eGVjdXRlZEFwcEJvdW5kQmVoYXZpb3JCZWZvcmVOYXZpZ2F0aW9uKCkKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IGU0NmRhMGUwYTU4MDc5MTBmNGU0ZDJmNmZjNGU5MzE4
NTA1NjdhZmEuLmU0N2FlMzAyNTIwZDZlZjEwNmJlMTQ4Yjg0ZjYxY2Y2MDcxMjk0MTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtODMwLDcgKzgzMCw3IEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zCiAgICAgdWludDY0X3QgbGlzdGVuZXJJRCA9IG1fZnJhbWUtPnNldFVw
UG9saWN5TGlzdGVuZXIoaWRlbnRpZmllciwgV1RGTW92ZShmdW5jdGlvbiksIFdlYkZyYW1lOjpG
b3JOYXZpZ2F0aW9uQWN0aW9uOjpObyk7CiAgICAgaWYgKCF3ZWJQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvclJlc3BvbnNlKG1fZnJhbWUtPmZyYW1lSUQo
KSwgbV9mcmFtZS0+aW5mbygpLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIHJlc3BvbnNlLCBy
ZXF1ZXN0LCBjYW5TaG93UmVzcG9uc2UsIGRvd25sb2FkQXR0cmlidXRlLCBsaXN0ZW5lcklELCBV
c2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVz
KHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKSkgewogICAgICAgICBXRUJGUkFNRUxPQURFUkNMSUVO
VF9SRUxFQVNFX0xPRyhOZXR3b3JrLCAiZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZTog
aWdub3JpbmcgYmVjYXVzZSBXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvclJlc3BvbnNlIGZh
aWxlZCIpOwotICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVu
ZXJJRCwgUG9saWN5RGVjaXNpb24geyBpZGVudGlmaWVyLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbjo6Tm8sIE5hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW46Ok5vLCBQb2xpY3lBY3Rp
b246Oklnbm9yZSwgMCwgeyB9LCB7IH0gfSk7CisgICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQ
b2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBQb2xpY3lEZWNpc2lvbiB7IGlkZW50aWZpZXIsIFdU
Rjo6bnVsbG9wdCwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSwgeyB9IH0pOwogICAgIH0K
IH0KIApAQCAtOTkyLDE3ICs5OTIsMTcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXQKICAgICAg
ICAgUG9saWN5RGVjaXNpb24gcG9saWN5RGVjaXNpb247CiAKICAgICAgICAgaWYgKCF3ZWJQYWdl
LT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uU3luYyhtX2ZyYW1lLT5mcmFtZUlEKCksIG1fZnJhbWUtPmlzTWFpbkZyYW1lKCks
IG1fZnJhbWUtPmluZm8oKSwgcmVxdWVzdElkZW50aWZpZXIsIGRvY3VtZW50TG9hZGVyLT5uYXZp
Z2F0aW9uSUQoKSwgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0
YSwgb3JpZ2luYXRpbmdQYWdlSUQsIG5hdmlnYXRpb25BY3Rpb24ucmVzb3VyY2VSZXF1ZXN0KCks
IHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgeyByZXF1ZXN0Lmh0dHBCb2R5KCkgfSwg
cmVkaXJlY3RSZXNwb25zZSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNm
b3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSwgTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OlJlcGx5KHBv
bGljeURlY2lzaW9uKSkpIHsKLSAgICAgICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lE
ZWNpc2lvbihsaXN0ZW5lcklELCBQb2xpY3lEZWNpc2lvbiB7IHJlcXVlc3RJZGVudGlmaWVyLCBO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm8sIE5hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmRE
b21haW46Ok5vLCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgeyB9LCB7IH0gfSk7CisgICAgICAg
ICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5
RGVjaXNpb24geyByZXF1ZXN0SWRlbnRpZmllciwgV1RGOjpudWxsb3B0LCBQb2xpY3lBY3Rpb246
Oklnbm9yZSwgMCwgeyB9LCB7IH0gfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAotICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwg
UG9saWN5RGVjaXNpb24geyBwb2xpY3lEZWNpc2lvbi5pZGVudGlmaWVyLCBwb2xpY3lEZWNpc2lv
bi5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBwb2xpY3lEZWNpc2lvbi5oYXNOYXZpZ2F0
ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluLCBwb2xpY3lEZWNpc2lvbi5wb2xpY3lBY3Rpb24sIDAs
IHBvbGljeURlY2lzaW9uLmRvd25sb2FkSUQsIHsgfX0pOworICAgICAgICBtX2ZyYW1lLT5kaWRS
ZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24geyBwb2xpY3lE
ZWNpc2lvbi5pZGVudGlmaWVyLCBwb2xpY3lEZWNpc2lvbi5pc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluLCBwb2xpY3lEZWNpc2lvbi5wb2xpY3lBY3Rpb24sIDAsIHBvbGljeURlY2lzaW9uLmRv
d25sb2FkSUQsIHsgfX0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgQVNTRVJUKHBv
bGljeURlY2lzaW9uTW9kZSA9PSBQb2xpY3lEZWNpc2lvbk1vZGU6OkFzeW5jaHJvbm91cyk7CiAg
ICAgaWYgKCF3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyhtX2ZyYW1lLT5mcmFtZUlEKCksIG1fZnJhbWUtPmlu
Zm8oKSwgcmVxdWVzdElkZW50aWZpZXIsIGRvY3VtZW50TG9hZGVyLT5uYXZpZ2F0aW9uSUQoKSwg
bmF2aWdhdGlvbkFjdGlvbkRhdGEsIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgb3JpZ2luYXRp
bmdQYWdlSUQsIG5hdmlnYXRpb25BY3Rpb24ucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QsIElQ
Qzo6Rm9ybURhdGFSZWZlcmVuY2UgeyByZXF1ZXN0Lmh0dHBCb2R5KCkgfSwgcmVkaXJlY3RSZXNw
b25zZSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1Rv
SGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpLCBsaXN0ZW5lcklEKSkpCi0gICAgICAgIG1f
ZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBQb2xpY3lEZWNpc2lv
biB7IHJlcXVlc3RJZGVudGlmaWVyLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm8sIE5h
dmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW46Ok5vLCBQb2xpY3lBY3Rpb246Oklnbm9yZSwg
MCwgeyB9LCB7IH0gfSk7CisgICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lv
bihsaXN0ZW5lcklELCBQb2xpY3lEZWNpc2lvbiB7IHJlcXVlc3RJZGVudGlmaWVyLCBXVEY6Om51
bGxvcHQsIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCB7IH0sIHsgfSB9KTsKIH0KIAogdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6Y2FuY2VsUG9saWN5Q2hlY2soKQpAQCAtMTkyMSw3ICsxOTIx
LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nQXBwbGljYXRp
b25NYW5pZmVzdCh1aW50NjRfdCBjYWxsYmFja0kKIH0KICNlbmRpZiAvLyBFTkFCTEUoQVBQTElD
QVRJT05fTUFOSUZFU1QpCiAKLWJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6Omhhc05hdmlnYXRl
ZEF3YXlGcm9tQXBwQm91bmREb21haW4oKQorYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hv
dWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkKIHsKICAgICBpZiAoIW1f
ZnJhbWUtPmlzTWFpbkZyYW1lKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE5MjksMjAg
KzE5MjksMTAgQEAgYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6aGFzTmF2aWdhdGVkQXdheUZy
b21BcHBCb3VuZERvbWFpbigpCiAgICAgYXV0byogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsK
ICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICByZXR1
cm4gd2ViUGFnZS0+aGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbigpID09IE5hdmln
YXRlZEF3YXlGcm9tQXBwQm91bmREb21haW46OlllczsKLX0KIAotYm9vbCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6bmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzKCkgY29uc3QKLXsKLSAgICBh
dXRvKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwotICAgIGlmICghd2ViUGFnZSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIHJldHVybiB3ZWJQYWdlLT5uZWVkc0luQXBwQnJv
d3NlclByaXZhY3lRdWlya3MoKTsKKyAgICByZXR1cm4gd2ViUGFnZS0+c2hvdWxkRW5hYmxlSW5B
cHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCk7CiB9CiAKLQogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CiAKICN1bmRlZiBQUkVGSVhfUEFSQU1FVEVSUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aAppbmRleCAwZjhlYjA5M2ZmNzZlNTc3MzQwNTZlNjNjZTM3NjdiMmVmNjcwOWUwLi5mYTRjMGI4
OGM5MWE2YjZmMjcwN2M0MGFlNzUyNWFhODAxNjE0ZmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaApAQCAtMjg4LDggKzI4OCw3IEBAIHByaXZhdGU6CiAgICAgT3B0aW9uYWw8RnJhbWVT
cGVjaWZpY1N0b3JhZ2VBY2Nlc3NJZGVudGlmaWVyPiBtX2ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNj
ZXNzSWRlbnRpZmllcjsKICNlbmRpZgogCi0gICAgYm9vbCBoYXNOYXZpZ2F0ZWRBd2F5RnJvbUFw
cEJvdW5kRG9tYWluKCkgZmluYWw7Ci0gICAgYm9vbCBuZWVkc0luQXBwQnJvd3NlclByaXZhY3lR
dWlya3MoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHNob3VsZEVuYWJsZUluQXBwQnJvd3NlclBy
aXZhY3lQcm90ZWN0aW9ucygpIGZpbmFsOwogfTsKIAogLy8gQXMgbG9uZyBhcyBFbXB0eUZyYW1l
TG9hZGVyQ2xpZW50IGV4aXN0cyBpbiBXZWJDb3JlLCB0aGlzIGNhbiByZXR1cm4gMC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMTdlYWM0MTdl
MmNjY2Y1NTE2ZWY1MTVjNGMyOTE4MWJiMjlhODEzOS4uZWU4MTg2MzhiYjIxNjBiZmZkZWMzN2M3
NDVmNTA1M2Y4M2QwZWJhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKQEAgLTQ3NSw3ICs0NzUsNyBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAj
ZW5kaWYKICAgICAsIG1fb3ZlcnJpZGRlbk1lZGlhVHlwZShwYXJhbWV0ZXJzLm92ZXJyaWRkZW5N
ZWRpYVR5cGUpCiAgICAgLCBtX3Byb2Nlc3NEaXNwbGF5TmFtZShwYXJhbWV0ZXJzLnByb2Nlc3NE
aXNwbGF5TmFtZSkKLSAgICAsIG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihwYXJhbWV0
ZXJzLmxpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMgPyBOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbjo6WWVzIDogTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vKQorICAgICwg
bV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKHBhcmFtZXRlcnMubGltaXRzTmF2
aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucykKIHsKICAgICBBU1NFUlQobV9pZGVudGlmaWVyKTsK
IApAQCAtMTUyNyw3ICsxNTI3LDYgQEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybURpZFJlY2VpdmVM
b2FkUGFyYW1ldGVycyhjb25zdCBMb2FkUGFyYW1ldGVycyYgbG9hZFBhcmFtZXQKIHZvaWQgV2Vi
UGFnZTo6bG9hZFJlcXVlc3QoTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKIHsKICAg
ICBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKGxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4pOwotICAgIHNldEhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91
bmREb21haW4obG9hZFBhcmFtZXRlcnMuaGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFp
bik7CiAKICAgICBTZW5kU3RvcFJlc3BvbnNpdmVuZXNzVGltZXIgc3RvcHBlcjsKIApAQCAtMTU2
MywxMCArMTU2Miw5IEBAIE5PX1JFVFVSTiB2b2lkIFdlYlBhZ2U6OmxvYWRSZXF1ZXN0V2FpdGlu
Z0ZvclByb2Nlc3NMYXVuY2goTG9hZFBhcmFtZXRlcnMmJiwgVVJMCiAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpsb2FkRGF0YUltcGwodWludDY0
X3QgbmF2aWdhdGlvbklELCBib29sIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9u
YWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgc2hhcmVkQnVmZmVyLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcm
IGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBVUkwmIHVucmVhY2hhYmxl
VVJMLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBOYXZpZ2F0ZWRBd2F5RnJv
bUFwcEJvdW5kRG9tYWluIGhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4sIFNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkKK3Zv
aWQgV2ViUGFnZTo6bG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgYm9vbCBzaG91
bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYg
d2Vic2l0ZVBvbGljaWVzLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHNoYXJlZEJ1ZmZlciwgY29uc3Qg
U3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVSTCYg
YmFzZVVSTCwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmIHVzZXJE
YXRhLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbiwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5KQogewogICAgIHNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4o
aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik7Ci0gICAgc2V0SGFzTmF2aWdhdGVkQXdheUZy
b21BcHBCb3VuZERvbWFpbihoYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluKTsKIAog
ICAgIFNlbmRTdG9wUmVzcG9uc2l2ZW5lc3NUaW1lciBzdG9wcGVyOwogCkBAIC0xNTk1LDcgKzE1
OTMsNyBAQCB2b2lkIFdlYlBhZ2U6OmxvYWREYXRhKExvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFt
ZXRlcnMpCiAKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGxvYWRQYXJhbWV0ZXJzLmRhdGEuZGF0YSgpKSwg
bG9hZFBhcmFtZXRlcnMuZGF0YS5zaXplKCkpOwogICAgIFVSTCBiYXNlVVJMID0gbG9hZFBhcmFt
ZXRlcnMuYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBhYm91dEJsYW5rVVJMKCkgOiBVUkwoVVJM
KCksIGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcpOwotICAgIGxvYWREYXRhSW1wbChsb2Fk
UGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQsIGxvYWRQYXJhbWV0ZXJzLnNob3VsZFRyZWF0QXNDb250
aW51aW5nTG9hZCwgV1RGTW92ZShsb2FkUGFyYW1ldGVycy53ZWJzaXRlUG9saWNpZXMpLCBXVEZN
b3ZlKHNoYXJlZEJ1ZmZlciksIGxvYWRQYXJhbWV0ZXJzLk1JTUVUeXBlLCBsb2FkUGFyYW1ldGVy
cy5lbmNvZGluZ05hbWUsIGJhc2VVUkwsIFVSTCgpLCBsb2FkUGFyYW1ldGVycy51c2VyRGF0YSwg
bG9hZFBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgbG9hZFBhcmFtZXRl
cnMuaGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbiwgbG9hZFBhcmFtZXRlcnMuc2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CisgICAgbG9hZERhdGFJbXBsKGxvYWRQYXJhbWV0
ZXJzLm5hdmlnYXRpb25JRCwgbG9hZFBhcmFtZXRlcnMuc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdM
b2FkLCBXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzLndlYnNpdGVQb2xpY2llcyksIFdURk1vdmUoc2hh
cmVkQnVmZmVyKSwgbG9hZFBhcmFtZXRlcnMuTUlNRVR5cGUsIGxvYWRQYXJhbWV0ZXJzLmVuY29k
aW5nTmFtZSwgYmFzZVVSTCwgVVJMKCksIGxvYWRQYXJhbWV0ZXJzLnVzZXJEYXRhLCBsb2FkUGFy
YW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBsb2FkUGFyYW1ldGVycy5zaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsKIH0KIAogdm9pZCBXZWJQYWdlOjpsb2FkQWx0ZXJu
YXRlSFRNTChMb2FkUGFyYW1ldGVycyYmIGxvYWRQYXJhbWV0ZXJzKQpAQCAtMTYwNyw3ICsxNjA1
LDcgQEAgdm9pZCBXZWJQYWdlOjpsb2FkQWx0ZXJuYXRlSFRNTChMb2FkUGFyYW1ldGVycyYmIGxv
YWRQYXJhbWV0ZXJzKQogICAgIFVSTCBwcm92aXNpb25hbExvYWRFcnJvclVSTCA9IGxvYWRQYXJh
bWV0ZXJzLnByb3Zpc2lvbmFsTG9hZEVycm9yVVJMU3RyaW5nLmlzRW1wdHkoKSA/IFVSTCgpIDog
VVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5wcm92aXNpb25hbExvYWRFcnJvclVSTFN0cmluZyk7
CiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPihsb2FkUGFyYW1ldGVycy5kYXRhLmRhdGEoKSksIGxvYWRQYXJh
bWV0ZXJzLmRhdGEuc2l6ZSgpKTsKICAgICBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRl
cigpLnNldFByb3Zpc2lvbmFsTG9hZEVycm9yQmVpbmdIYW5kbGVkVVJMKHByb3Zpc2lvbmFsTG9h
ZEVycm9yVVJMKTsgICAgCi0gICAgbG9hZERhdGFJbXBsKGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRp
b25JRCwgbG9hZFBhcmFtZXRlcnMuc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBXVEZNb3Zl
KGxvYWRQYXJhbWV0ZXJzLndlYnNpdGVQb2xpY2llcyksIFdURk1vdmUoc2hhcmVkQnVmZmVyKSwg
bG9hZFBhcmFtZXRlcnMuTUlNRVR5cGUsIGxvYWRQYXJhbWV0ZXJzLmVuY29kaW5nTmFtZSwgYmFz
ZVVSTCwgdW5yZWFjaGFibGVVUkwsIGxvYWRQYXJhbWV0ZXJzLnVzZXJEYXRhLCBsb2FkUGFyYW1l
dGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBsb2FkUGFyYW1ldGVycy5oYXNOYXZp
Z2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluKTsKKyAgICBsb2FkRGF0YUltcGwobG9hZFBhcmFt
ZXRlcnMubmF2aWdhdGlvbklELCBsb2FkUGFyYW1ldGVycy5zaG91bGRUcmVhdEFzQ29udGludWlu
Z0xvYWQsIFdURk1vdmUobG9hZFBhcmFtZXRlcnMud2Vic2l0ZVBvbGljaWVzKSwgV1RGTW92ZShz
aGFyZWRCdWZmZXIpLCBsb2FkUGFyYW1ldGVycy5NSU1FVHlwZSwgbG9hZFBhcmFtZXRlcnMuZW5j
b2RpbmdOYW1lLCBiYXNlVVJMLCB1bnJlYWNoYWJsZVVSTCwgbG9hZFBhcmFtZXRlcnMudXNlckRh
dGEsIGxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOwogICAgIG1f
bWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkuc2V0UHJvdmlzaW9uYWxMb2FkRXJyb3JC
ZWluZ0hhbmRsZWRVUkwoeyB9KTsKIH0KIApAQCAtMzI1Myw3ICszMjUxLDYgQEAgdm9pZCBXZWJQ
YWdlOjpzZXRMYXllckhvc3RpbmdNb2RlKExheWVySG9zdGluZ01vZGUgbGF5ZXJIb3N0aW5nTW9k
ZSkKIHZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKEZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCBQb2xpY3lEZWNpc2lvbiYmIHBvbGljeURl
Y2lzaW9uKQogewogICAgIHNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4ocG9saWN5RGVj
aXNpb24uaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik7Ci0gICAgc2V0SGFzTmF2aWdhdGVk
QXdheUZyb21BcHBCb3VuZERvbWFpbihwb2xpY3lEZWNpc2lvbi5oYXNOYXZpZ2F0ZWRBd2F5RnJv
bUFwcEJvdW5kRG9tYWluKTsKIAogICAgIFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpOwogICAgIGlmICghZnJhbWUpCkBAIC0zNDI2LDgg
KzM0MjMsNyBAQCB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBS
dW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcgogCiAgICAgICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVDYWxsYmFjayhkYXRhUmVmZXJlbmNlLCBkZXRh
aWxzLCBjYWxsYmFja0lEKSk7CiAgICAgfTsKLSAgICAKLSAgICBpZiAoaGFzTmF2aWdhdGVkQXdh
eUZyb21BcHBCb3VuZERvbWFpbigpID09IE5hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW46
OlllcyAmJiAhbV9uZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3MpIHsKKyAgICBpZiAoc2hv
dWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkpIHsKICAgICAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTY3JpcHRWYWx1ZUNhbGxiYWNrKHsgfSwgRXhjZXB0
aW9uRGV0YWlscyB7ICJVbmFibGUgdG8gZXhlY3V0ZSBKYXZhU2NyaXB0Il9zIH0sIGNhbGxiYWNr
SUQpKTsKICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gbV9wYWdlLT5tYWluRnJhbWUoKS5k
b2N1bWVudCgpKQogICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2Vy
IHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiIpOwpAQCAtMzY4Myw4
ICszNjc5LDggQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVm
ZXJlbmNlc1N0b3JlJiBzdG9yZSkKICAgICAgICAgZGlzYWJsZVNlcnZpY2VXb3JrZXJFbnRpdGxl
bWVudCgpOwogCiAgICAgaWYgKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNl
c0tleTo6c2VydmljZVdvcmtlcnNFbmFibGVkS2V5KCkpKSB7Ci0gICAgICAgIEFTU0VSVChwYXJl
bnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkgfHwgbV9pc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluKTsKLSAgICAgICAgaWYgKCFwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdv
cmtlckVudGl0bGVtZW50KCkgJiYgIW1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKKyAg
ICAgICAgQVNTRVJUKHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSB8
fCBtX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMpOworICAgICAgICBpZiAoIXBh
cmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSAmJiAhbV9saW1pdHNOYXZp
Z2F0aW9uc1RvQXBwQm91bmREb21haW5zKQogICAgICAgICAgICAgUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRTZXJ2aWNlV29ya2VyRW5hYmxlZChmYWxzZSk7CiAg
ICAgfQogI2VuZGlmCkBAIC03MTAyLDYgKzcwOTgsMjYgQEAgdm9pZCBXZWJQYWdlOjphbmltYXRp
b25EaWRGaW5pc2hGb3JFbGVtZW50KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnQmKQogCiAjZW5kaWYK
IAordm9pZCBXZWJQYWdlOjpzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKE9wdGlvbmFs
PE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
KQoreworICAgIG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW47CisgICAgCisgICAgaWYgKCFtX25hdmlnYXRpb25IYXNPY2N1cmVkKQor
ICAgICAgICBtX25hdmlnYXRpb25IYXNPY2N1cmVkID0gdHJ1ZTsKK30KKworYm9vbCBXZWJQYWdl
OjpzaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKQoreworICAgIGlm
IChtX25lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcykKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgYXV0byBzaG91bGRFbmFibGUgPSBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
KCkgJiYgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpID09IE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluOjpObzsKKyAgICBpZiAoIW1fbmF2aWdhdGlvbkhhc09jY3VyZWQgJiYgIW1fbGlt
aXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucykKKyAgICAgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpTZXRIYXNFeGVjdXRlZEFwcEJvdW5kQmVoYXZpb3JCZWZvcmVOYXZpZ2F0
aW9uKCkpOworCisgICAgcmV0dXJuIHNob3VsZEVuYWJsZTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKICN1bmRlZiBSRUxFQVNFX0xPR19JRl9BTExPV0VECmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggM2RkYWI5YTYyYmRlZjY2MTFmNjI0NWQ5
OGM5ZmExZTc0MDRiOTcxZC4uMzg1OTUyN2VmOTAxMDhjZDg2ZmRjMWI3M2U3ZGI1Y2QxZDJjNTBm
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTMx
NSwxMSArMTMxNSw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0QWxsRnJhbWVzKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoRnJhbWVUcmVlTm9kZURhdGEmJik+JiYpOwogCi0gICAgdm9pZCBzZXRJ
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSB7IG1faXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbiA9IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47IH0KKyAgICBib29s
IHNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpOworICAgIHZvaWQg
c2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbj4pOwogICAgIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBp
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9pc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluOyB9Ci0gICAgTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFp
biBoYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9o
YXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluOyB9Ci0gICAgdm9pZCBzZXRIYXNOYXZp
Z2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluKE5hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21h
aW4gbmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbikgeyBtX2hhc05hdmlnYXRlZEF3YXlG
cm9tQXBwQm91bmREb21haW4gPSBuYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluOyB9Ci0g
ICAgYm9vbCBuZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3MoKSBjb25zdCB7IHJldHVybiBt
X25lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrczsgfQogICAgIAogICAgIGJvb2wgc2hvdWxk
VXNlUmVtb3RlUmVuZGVyaW5nRm9yKFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2UpOwogCkBAIC0x
NDE5LDcgKzE0MTcsNyBAQCBwcml2YXRlOgogCiAgICAgU3RyaW5nIHNvdXJjZUZvckZyYW1lKFdl
YkZyYW1lKik7CiAKLSAgICB2b2lkIGxvYWREYXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IGJvb2wgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRpb25hbDxXZWJzaXRlUG9saWNp
ZXNEYXRhPiYmLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIE1J
TUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiBiYXNlVVJMLCBj
b25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFVzZXJEYXRhJiwgT3B0aW9uYWw8TmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4+LCBOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluLCBXZWJD
b3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gV2ViQ29yZTo6U2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cpOworICAgIHZvaWQgbG9hZERhdGFJbXBs
KHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgYm9vbCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQs
IE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1l
LCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgVXNlckRh
dGEmLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIFdlYkNvcmU6OlNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5OjpTaG91bGROb3RBbGxvdyk7CiAKICAgICAvLyBBY3Rpb25zCiAgICAgdm9pZCB0cnlD
bG9zZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKQEAgLTIxMDQsOCArMjEwMiw5
IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fdGhlbWVOYW1lOwogI2VuZGlmCiAgICAgCi0gICAg
T3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IG1faXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbiB7IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObyB9OwotICAgIE5hdmln
YXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4gbV9oYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5k
RG9tYWluIHsgTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbjo6Tm8gfTsKKyAgICBPcHRp
b25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluIHsgV1RGOjpudWxsb3B0IH07CisgICAgYm9vbCBtX2xpbWl0c05hdmlnYXRpb25zVG9B
cHBCb3VuZERvbWFpbnMgeyBmYWxzZSB9OworICAgIGJvb2wgbV9uYXZpZ2F0aW9uSGFzT2NjdXJl
ZCB7IGZhbHNlIH07CiB9OwogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjRjOWUyOWM1MWM2YzU4
ZDk4Nzg2ZTZkYzQ4Njk1MGRhNDE5MWQ3MC4uZTA5NzY0MzdhNzBmOTUwN2I4YTBlODQzYjA2NGNj
NmI4YjViOTU0ZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIwLTA1LTExICBLYXRlIENoZW5leSAgPGthdGhlcmlu
ZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEZhaWwgbmF2aWdhdGlvbnMgdG8gbm9uIGFw
cC1ib3VuZCBkb21haW5zIGFmdGVyIHVzZSBvZiBhcHAtYm91bmQgQVBJcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExNjQ3CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS82Mjk3ODE1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRlZCBhIG5ldyB0ZXN0IHRvIGNvbmZpcm0gYSBub24tYXBwIGJvdW5k
IG5hdmlnYXRpb24gZmFpbHMgYWZ0ZXIKKyAgICAgICAgdXNpbmcgc2NyaXB0IGluamVjdGlvbi4K
KworICAgICAgICBUaGlzIGZpeCBhbHNvIHJlcXVpcmVkIGNoYW5naW5nIGFueSB0ZXN0IHdoaWNo
IHVzZXMgYSByZXN0cmljdGVkIEFQSQorICAgICAgICB0byBjb25maXJtIGJlaGF2aW9yIG9mIGFu
b3RoZXIgcmVzdHJpY3RlZCBBUEkuIFRlc3RzIGNhbiBzZXQKKyAgICAgICAgX3NldE5lZWRzSW5B
cHBCcm93c2VyUHJpdmFjeVF1aXJrcyBpbiB0aGUgY29uZmlndXJhdGlvbiB0byBpbmRpY2F0ZQor
ICAgICAgICBBUElzIHNob3VsZCBub3QgYmUgYmxvY2tlZCwgdGhlbiB0b2dnbGUgaXQgdG8gdGVz
dCBhY3R1YWwgYmVoYXZpb3IuCisKKyAgICAgICAgQWxzbywgd2UgY2FuIHJlbW92ZSBhbnkgY2Fs
bHMgdG8gX3NldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkCisgICAgICAgIG5vdyB0aGF0IHRo
aXMgaXMganVzdCBhbiBpbnRlcm5hbCB0ZXN0IGZsYWcuIAorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tOgorICAgICAgICAo
LVtBcHBCb3VuZERvbWFpbkRlbGVnYXRlIHdlYlZpZXc6ZGlkRmluaXNoTmF2aWdhdGlvbjpdKToK
KyAgICAgICAgKC1bQXBwQm91bmREb21haW5EZWxlZ2F0ZSB3ZWJWaWV3OmRpZEZhaWxQcm92aXNp
b25hbE5hdmlnYXRpb246d2l0aEVycm9yOl0pOgorICAgICAgICAoLVtBcHBCb3VuZERvbWFpbkRl
bGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXSk6CisgICAgICAgICgtW0FwcEJvdW5k
RG9tYWluRGVsZWdhdGUgd2FpdEZvckRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25FcnJvcl0p
OgorICAgICAgICAoVEVTVCk6CisKIDIwMjAtMDUtMTEgIEFuZHJlcyBHb256YWxleiAgPGFuZHJl
c2dfMjJAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBtZWNoYW5pc20gdG8gdHVybiBvbiBhY2Nl
c3NpYmlsaXR5IGlzb2xhdGVkIHRyZWUgbW9kZSBmcm9tIFdlYktpdFRlc3RSdW5uZXIuCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3Nl
clByaXZhY3kubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBw
QnJvd3NlclByaXZhY3kubW0KaW5kZXggMWY0YjYwNzRkMWJmMDUxZmY1Y2Q0MGM5NmNiNDkxMzFl
MWY3MGI4NC4uM2RkNTAzMGQ0YTNkMmQ4Y2Y3YWZlOTQ2Y2YwOTVkODc5MTUwNzFiYyAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQ
cml2YWN5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5B
cHBCcm93c2VyUHJpdmFjeS5tbQpAQCAtNDgsNiArNDgsNDAgQEAKIAogc3RhdGljIGJvb2wgaXNE
b25lOwogCitAaW50ZXJmYWNlIEFwcEJvdW5kRG9tYWluRGVsZWdhdGUgOiBOU09iamVjdCA8V0tO
YXZpZ2F0aW9uRGVsZWdhdGU+CistICh2b2lkKXdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uOwor
LSAoTlNFcnJvciAqKXdhaXRGb3JEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uRXJyb3I7CitA
ZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBBcHBCb3VuZERvbWFpbkRlbGVnYXRlIHsKKyAgICBib29s
IF9uYXZpZ2F0aW9uRmluaXNoZWQ7CisgICAgUmV0YWluUHRyPE5TRXJyb3I+IF9wcm92aXNpb25h
bE5hdmlnYXRpb25GYWlsZWRFcnJvcjsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IGRpZEZpbmlzaE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24K
K3sKKyAgICBfbmF2aWdhdGlvbkZpbmlzaGVkID0gdHJ1ZTsKK30KKworLSAodm9pZCl3ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb246KG51bGxf
dW5zcGVjaWZpZWQgV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbiB3aXRoRXJyb3I6KE5TRXJyb3Ig
KillcnJvcgoreworICAgIF9wcm92aXNpb25hbE5hdmlnYXRpb25GYWlsZWRFcnJvciA9IGVycm9y
OworfQorCistICh2b2lkKXdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uCit7CisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZfbmF2aWdhdGlvbkZpbmlzaGVkKTsKK30KKworLSAoTlNFcnJv
ciAqKXdhaXRGb3JEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uRXJyb3IKK3sKKyAgICB3aGls
ZSAoIV9wcm92aXNpb25hbE5hdmlnYXRpb25GYWlsZWRFcnJvcikKKyAgICAgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6c3BpblJ1bkxvb3AoKTsKKyAgICByZXR1cm4gX3Byb3Zpc2lvbmFsTmF2aWdh
dGlvbkZhaWxlZEVycm9yLmF1dG9yZWxlYXNlKCk7Cit9CisKK0BlbmQKKwogc3RhdGljIE5TU3Ry
aW5nICogY29uc3QgdXNlclNjcmlwdFNvdXJjZSA9IEAid2luZG93LndrVXNlclNjcmlwdEluamVj
dGVkID0gdHJ1ZSI7CiAKIEBpbnRlcmZhY2UgSW5BcHBCcm93c2VyU2NoZW1lSGFuZGxlciA6IE5T
T2JqZWN0IDxXS1VSTFNjaGVtZUhhbmRsZXI+CkBAIC0xMDMsOCArMTM3LDYgQEAgVEVTVChJbkFw
cEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZERvbWFpbkZhaWxlZFVzZXJTY3JpcHRBdFN0YXJ0
KQogICAgIGF1dG8gc2NoZW1lSGFuZGxlciA9IGFkb3B0TlMoW1tJbkFwcEJyb3dzZXJTY2hlbWVI
YW5kbGVyIGFsbG9jXSBpbml0XSk7CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFu
ZGxlcjpzY2hlbWVIYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAImluLWFwcC1icm93c2VyIl07
CiAgICAgW2NvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFVzZXJTY3JpcHQ6
dXNlclNjcmlwdC5nZXQoKV07Ci0gICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0
TmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzOk5PXTsKLSAgICBbW2NvbmZpZ3VyYXRpb24g
cHJlZmVyZW5jZXNdIF9zZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZDpZRVNdOwogCiAgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKICAgICBOU1VSTFJl
cXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxX
aXRoU3RyaW5nOkAiaW4tYXBwLWJyb3dzZXI6Ly8vaW4tYXBwLWJyb3dzZXItcHJpdmFjeS10ZXN0
LXVzZXItc2NyaXB0Il1dOwpAQCAtMTIxLDggKzE1Myw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJp
dmFjeSwgTm9uQXBwQm91bmREb21haW5GYWlsZWRVc2VyU2NyaXB0QXRTdGFydCkKICAgICBpc0Rv
bmUgPSBmYWxzZTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAKLSAg
ICAvLyBUdXJuIGJhY2sgb24gSW4tQXBwIEJyb3dzZXIgUHJpdmFjeSBxdWlya3MgdG8gY2hlY2sg
dGhhdCBvcmlnaW5hbCBhdHRlbXB0IHRvIHNldCB0aGlzIHZhcmlhYmxlIHdhcyByZWplY3RlZC4K
LSAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICAvLyBEaXNhYmxlIHNjcmlwdCBpbmplY3Rpb24gYmxv
Y2tpbmcgdG8gY2hlY2sgdGhhdCBvcmlnaW5hbCBhdHRlbXB0IHRvIHNldCB0aGlzIHZhcmlhYmxl
IHdhcyByZWplY3RlZC4KICAgICBbW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dIHByZWZlcmVuY2Vz
XSBfc2V0TmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzOllFU107CiAgICAgW3dlYlZpZXcg
ZXZhbHVhdGVKYXZhU2NyaXB0OkAid2luZG93LndrVXNlclNjcmlwdEluamVjdGVkIiBjb21wbGV0
aW9uSGFuZGxlcjpeKGlkIF9OdWxsYWJsZSByZXN1bHQsIE5TRXJyb3IgKiBfTnVsbGFibGUgZXJy
b3IpIHsKICAgICAgICAgRVhQRUNUX0VRKE5PLCBbcmVzdWx0IGJvb2xWYWx1ZV0pOwpAQCAtMTQ1
LDggKzE3Niw2IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmREb21haW5G
YWlsZWRVc2VyU2NyaXB0QXRFbmQpCiAgICAgYXV0byBzY2hlbWVIYW5kbGVyID0gYWRvcHROUyhb
W0luQXBwQnJvd3NlclNjaGVtZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBbY29uZmlndXJh
dGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOnNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1l
OkAiaW4tYXBwLWJyb3dzZXIiXTsKICAgICBbY29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRy
b2xsZXIgYWRkVXNlclNjcmlwdDp1c2VyU2NyaXB0LmdldCgpXTsKLSAgICBbW2NvbmZpZ3VyYXRp
b24gcHJlZmVyZW5jZXNdIF9zZXROZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3M6Tk9dOwot
ICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEluQXBwQnJvd3NlclByaXZhY3lF
bmFibGVkOllFU107CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbl0pOwogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVz
dFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJpbi1hcHAtYnJvd3NlcjovLy9pbi1hcHAt
YnJvd3Nlci1wcml2YWN5LXRlc3QtdXNlci1zY3JpcHQiXV07CkBAIC0xNjMsOCArMTkyLDcgQEAg
VEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZERvbWFpbkZhaWxlZFVzZXJTY3Jp
cHRBdEVuZCkKICAgICBpc0RvbmUgPSBmYWxzZTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmlzRG9uZSk7CiAKLSAgICAvLyBUdXJuIGJhY2sgb24gSW4tQXBwIEJyb3dzZXIgUHJpdmFj
eSBxdWlya3MgdG8gY2hlY2sgdGhhdCBvcmlnaW5hbCBhdHRlbXB0IHRvIHNldCB0aGlzIHZhcmlh
YmxlIHdhcyByZWplY3RlZC4KLSAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICAvLyBEaXNhYmxlIHNj
cmlwdCBpbmplY3Rpb24gYmxvY2tpbmcgdG8gY2hlY2sgdGhhdCBvcmlnaW5hbCBhdHRlbXB0IHRv
IHNldCB0aGlzIHZhcmlhYmxlIHdhcyByZWplY3RlZC4KICAgICBbW1t3ZWJWaWV3IGNvbmZpZ3Vy
YXRpb25dIHByZWZlcmVuY2VzXSBfc2V0TmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzOllF
U107CiAgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAid2luZG93LndrVXNlclNjcmlw
dEluamVjdGVkIiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIF9OdWxsYWJsZSByZXN1bHQsIE5TRXJy
b3IgKiBfTnVsbGFibGUgZXJyb3IpIHsKICAgICAgICAgRVhQRUNUX0VRKE5PLCBbcmVzdWx0IGJv
b2xWYWx1ZV0pOwpAQCAtMTc5LDkgKzIwNywxMSBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ks
IE5vbkFwcEJvdW5kRG9tYWluRmFpbGVkVXNlclNjcmlwdEF0RW5kKQogCiBURVNUKEluQXBwQnJv
d3NlclByaXZhY3ksIE5vbkFwcEJvdW5kRG9tYWluRmFpbGVkVXNlckFnZW50U2NyaXB0cykKIHsK
KyAgICBpbml0aWFsaXplSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOworCiAgICAg
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1
cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlBy
b2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107Cisg
ICAgLy8gRGlzYWJsZSBibG9ja2luZyBvZiByZXN0cmljdGVkIEFQSXMgZm9yIHRlc3Qgc2V0dXAu
CiAgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0TmVlZHNJbkFwcEJyb3dzZXJQ
cml2YWN5UXVpcmtzOllFU107Ci0gICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0
SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQ6Tk9dOwogCiAgICAgYXV0byBzY2hlbWVIYW5kbGVy
ID0gYWRvcHROUyhbW0luQXBwQnJvd3NlclNjaGVtZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAg
ICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOnNjaGVtZUhhbmRsZXIuZ2V0KCkg
Zm9yVVJMU2NoZW1lOkAiaW4tYXBwLWJyb3dzZXIiXTsKQEAgLTE5OCwxMyArMjI4LDExIEBAIFRF
U1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmREb21haW5GYWlsZWRVc2VyQWdlbnRT
Y3JpcHRzKQogCiAgICAgaXNEb25lID0gZmFsc2U7CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZpc0RvbmUpOwotCi0gICAgaW5pdGlhbGl6ZUluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0
dGluZ3MoKTsKKyAgICAKKyAgICAvLyBFbmFibGUgYmxvY2tpbmcgb2YgcmVzdHJpY3RlZCBBUElz
LgogICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldE5lZWRzSW5BcHBCcm93c2Vy
UHJpdmFjeVF1aXJrczpOT107Ci0gICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0
SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQ6WUVTXTsKIAogICAgIGF1dG8gd2ViVmlldzIgPSBh
ZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOwotCiAgICAgaXNEb25lID0gZmFsc2U7CiAgICAg
W3dlYlZpZXcyIGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwogICAgIFt3ZWJWaWV3MiBfdGVzdF93YWl0
Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CkBAIC0yNDQsNyArMjcyLDYgQEAgVEVTVChJbkFwcEJy
b3dzZXJQcml2YWN5LCBMb2NhbEZpbGVzQXJlQXBwQm91bmQpCiB7CiAgICAgaW5pdGlhbGl6ZUlu
QXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFtb
Y29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVk
OllFU107CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0TGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5k
RG9tYWluczpZRVNdOwogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3Vy
YXRpb24uZ2V0KCldKTsKQEAgLTI2NSw3ICsyOTIsNiBAQCBURVNUKEluQXBwQnJvd3NlclByaXZh
Y3ksIERhdGFGaWxlc0FyZUFwcEJvdW5kKQogewogICAgIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQ
cml2YWN5VGVzdFNldHRpbmdzKCk7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBbW2NvbmZpZ3VyYXRp
b24gcHJlZmVyZW5jZXNdIF9zZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZDpZRVNdOwogICAg
IFtjb25maWd1cmF0aW9uIHNldExpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnM6WUVT
XTsKIAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgp
XSk7CkBAIC0yODUsNyArMzExLDYgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBYm91dEZp
bGVzQXJlQXBwQm91bmQpCiB7CiAgICAgaW5pdGlhbGl6ZUluQXBwQnJvd3NlclByaXZhY3lUZXN0
U2V0dGluZ3MoKTsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJl
bmNlc10gX3NldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkOllFU107CiAgICAgW2NvbmZpZ3Vy
YXRpb24gc2V0TGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWluczpZRVNdOwogCiAgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKQEAgLTMw
Myw3ICszMjgsNiBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFib3V0RmlsZXNBcmVBcHBC
b3VuZCkKIAogc3RhdGljIE5TU3RyaW5nICpzdHlsZVNoZWV0U291cmNlID0gQCJib2R5IHsgYmFj
a2dyb3VuZC1jb2xvcjogZ3JlZW4gIWltcG9ydGFudDsgfSI7CiBzdGF0aWMgTlNTdHJpbmcgKmJh
Y2tncm91bmRDb2xvclNjcmlwdCA9IEAid2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQu
Ym9keSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpIjsKLXN0YXRp
YyBOU1N0cmluZyAqZnJhbWVCYWNrZ3JvdW5kQ29sb3JTY3JpcHQgPSBAIndpbmRvdy5nZXRDb21w
dXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpZnJhbWUnKVswXS5jb250
ZW50RG9jdW1lbnQuYm9keSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xv
cicpIjsKIHN0YXRpYyBjb25zdCBjaGFyKiByZWRJblJHQiA9ICJyZ2IoMjU1LCAwLCAwKSI7CiBz
dGF0aWMgY29uc3QgY2hhciogYmxhY2tJblJHQiA9ICJyZ2JhKDAsIDAsIDAsIDApIjsKIApAQCAt
MzI5LDE5ICszNTMsMTkgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZFVz
ZXJTdHlsZVNoZWV0Rm9yU3BlY2lmaWNXZWJWaWV3RmFpbHMpCiAKICAgICBhdXRvIHNjaGVtZUhh
bmRsZXIgPSBhZG9wdE5TKFtbSW5BcHBCcm93c2VyU2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0p
OwogICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6c2NoZW1lSGFuZGxlci5n
ZXQoKSBmb3JVUkxTY2hlbWU6QCJpbi1hcHAtYnJvd3NlciJdOwotICAgIFtbY29uZmlndXJhdGlv
biBwcmVmZXJlbmNlc10gX3NldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkOllFU107Ci0gICAg
W1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0TmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5
UXVpcmtzOllFU107CisgICAgUmV0YWluUHRyPF9XS1VzZXJDb250ZW50V29ybGQ+IHdvcmxkID0g
W19XS1VzZXJDb250ZW50V29ybGQgd29ybGRXaXRoTmFtZTpAIlRlc3RXb3JsZCJdOwogCiAgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBO
U1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VS
TCBVUkxXaXRoU3RyaW5nOkAiaW4tYXBwLWJyb3dzZXI6Ly8vaW4tYXBwLWJyb3dzZXItcHJpdmFj
eS10ZXN0LXVzZXItc3R5bGUtc2hlZXRzIl1dOwotICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJl
cXVlc3RdOwotICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsK
LQotICAgIFJldGFpblB0cjxfV0tVc2VyQ29udGVudFdvcmxkPiB3b3JsZCA9IFtfV0tVc2VyQ29u
dGVudFdvcmxkIHdvcmxkV2l0aE5hbWU6QCJUZXN0V29ybGQiXTsKICAgICBSZXRhaW5QdHI8X1dL
VXNlclN0eWxlU2hlZXQ+IHN0eWxlU2hlZXQgPSBhZG9wdE5TKFtbX1dLVXNlclN0eWxlU2hlZXQg
YWxsb2NdIGluaXRXaXRoU291cmNlOnN0eWxlU2hlZXRTb3VyY2UgZm9yV0tXZWJWaWV3OndlYlZp
ZXcuZ2V0KCkgZm9yTWFpbkZyYW1lT25seTpZRVMgbGV2ZWw6X1dLVXNlclN0eWxlVXNlckxldmVs
IHVzZXJDb250ZW50V29ybGQ6d29ybGQuZ2V0KCldKTsKICAgICBbW2NvbmZpZ3VyYXRpb24gdXNl
ckNvbnRlbnRDb250cm9sbGVyXSBfYWRkVXNlclN0eWxlU2hlZXQ6c3R5bGVTaGVldC5nZXQoKV07
CiAKLSAgICBleHBlY3RTY3JpcHRFdmFsdWF0ZXNUb0NvbG9yKHdlYlZpZXcuZ2V0KCksIGJhY2tn
cm91bmRDb2xvclNjcmlwdCwgcmVkSW5SR0IpOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5T
KFtBcHBCb3VuZERvbWFpbkRlbGVnYXRlIG5ld10pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRp
b25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3Qg
PSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaW4t
YXBwLWJyb3dzZXI6Ly8vaW4tYXBwLWJyb3dzZXItcHJpdmFjeS10ZXN0LXVzZXItc3R5bGUtc2hl
ZXRzIl1dOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworICAgIE5TRXJyb3Ig
KmVycm9yID0gW2RlbGVnYXRlIHdhaXRGb3JEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uRXJy
b3JdOworICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbiwgQCJB
cHAtYm91bmQgZG9tYWluIGZhaWx1cmUiKTsKICAgICBjbGVhblVwSW5BcHBCcm93c2VyUHJpdmFj
eVRlc3RTZXR0aW5ncygpOwogfQogCkBAIC0zNTMsMTggKzM3NywxOCBAQCBURVNUKEluQXBwQnJv
d3NlclByaXZhY3ksIE5vbkFwcEJvdW5kVXNlclN0eWxlU2hlZXRGb3JBbGxXZWJWaWV3c0ZhaWxz
KQogCiAgICAgYXV0byBzY2hlbWVIYW5kbGVyID0gYWRvcHROUyhbW0luQXBwQnJvd3NlclNjaGVt
ZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVI
YW5kbGVyOnNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiaW4tYXBwLWJyb3dzZXIi
XTsKLSAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRJbkFwcEJyb3dzZXJQcml2
YWN5RW5hYmxlZDpZRVNdOwotICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldE5l
ZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrczpZRVNdOwotCi0gICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBOU1VSTFJlcXVlc3QgKnJl
cXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5n
OkAiaW4tYXBwLWJyb3dzZXI6Ly8vaW4tYXBwLWJyb3dzZXItcHJpdmFjeS10ZXN0LXVzZXItc3R5
bGUtc2hlZXRzIl1dOwotICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwotICAgIFt3
ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKLQorICAgIAogICAgIFJl
dGFpblB0cjxfV0tVc2VyU3R5bGVTaGVldD4gc3R5bGVTaGVldCA9IGFkb3B0TlMoW1tfV0tVc2Vy
U3R5bGVTaGVldCBhbGxvY10gaW5pdFdpdGhTb3VyY2U6c3R5bGVTaGVldFNvdXJjZSBmb3JNYWlu
RnJhbWVPbmx5OllFU10pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xs
ZXJdIF9hZGRVc2VyU3R5bGVTaGVldDpzdHlsZVNoZWV0LmdldCgpXTsKKyAgICAKKyAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpD
R1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8g
ZGVsZWdhdGUgPSBhZG9wdE5TKFtBcHBCb3VuZERvbWFpbkRlbGVnYXRlIG5ld10pOworICAgIFt3
ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKLSAgICBleHBl
Y3RTY3JpcHRFdmFsdWF0ZXNUb0NvbG9yKHdlYlZpZXcuZ2V0KCksIGJhY2tncm91bmRDb2xvclNj
cmlwdCwgcmVkSW5SR0IpOworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJpbi1hcHAtYnJvd3Nlcjov
Ly9pbi1hcHAtYnJvd3Nlci1wcml2YWN5LXRlc3QtdXNlci1zdHlsZS1zaGVldHMiXV07CisgICAg
W3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisgICAgTlNFcnJvciAqZXJyb3IgPSBbZGVs
ZWdhdGUgd2FpdEZvckRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25FcnJvcl07CisgICAgRVhQ
RUNUX1dLX1NUUkVRKGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uLCBAIkFwcC1ib3VuZCBkb21h
aW4gZmFpbHVyZSIpOwogICAgIGNsZWFuVXBJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdz
KCk7CiB9CiAKQEAgLTM3NiwyMiArNDAwLDE3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwg
Tm9uQXBwQm91bmRVc2VyU3R5bGVTaGVldEFmZmVjdGluZ0FsbEZyYW1lc0ZhaWxzKQogCiAgICAg
YXV0byBzY2hlbWVIYW5kbGVyID0gYWRvcHROUyhbW0luQXBwQnJvd3NlclNjaGVtZUhhbmRsZXIg
YWxsb2NdIGluaXRdKTsKICAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOnNj
aGVtZUhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiaW4tYXBwLWJyb3dzZXIiXTsKLSAgICBb
W2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxl
ZDpZRVNdOwotICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldE5lZWRzSW5BcHBC
cm93c2VyUHJpdmFjeVF1aXJrczpZRVNdOwotCi0gICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBb
TlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaW4tYXBw
LWJyb3dzZXI6Ly8vaW4tYXBwLWJyb3dzZXItcHJpdmFjeS10ZXN0LXVzZXItc3R5bGUtc2hlZXRz
LWlmcmFtZSJdXTsKLSAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKLSAgICBbd2Vi
VmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07Ci0KICAgICBSZXRhaW5QdHI8
X1dLVXNlclN0eWxlU2hlZXQ+IHN0eWxlU2hlZXQgPSBhZG9wdE5TKFtbX1dLVXNlclN0eWxlU2hl
ZXQgYWxsb2NdIGluaXRXaXRoU291cmNlOnN0eWxlU2hlZXRTb3VyY2UgZm9yTWFpbkZyYW1lT25s
eTpOT10pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIF9hZGRV
c2VyU3R5bGVTaGVldDpzdHlsZVNoZWV0LmdldCgpXTsKIAotICAgIC8vIFRoZSBtYWluIGZyYW1l
IHNob3VsZCBiZSBhZmZlY3RlZC4KLSAgICBleHBlY3RTY3JpcHRFdmFsdWF0ZXNUb0NvbG9yKHdl
YlZpZXcuZ2V0KCksIGJhY2tncm91bmRDb2xvclNjcmlwdCwgcmVkSW5SR0IpOworICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNH
UmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byBk
ZWxlZ2F0ZSA9IGFkb3B0TlMoW0FwcEJvdW5kRG9tYWluRGVsZWdhdGUgbmV3XSk7CisgICAgW3dl
YlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAotICAgIC8vIFRo
ZSBzdWJmcmFtZSBzaG91bGQgYWxzbyBiZSBhZmZlY3RlZC4KLSAgICBleHBlY3RTY3JpcHRFdmFs
dWF0ZXNUb0NvbG9yKHdlYlZpZXcuZ2V0KCksIGZyYW1lQmFja2dyb3VuZENvbG9yU2NyaXB0LCBy
ZWRJblJHQik7CisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1
ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImluLWFwcC1icm93c2VyOi8vL2luLWFw
cC1icm93c2VyLXByaXZhY3ktdGVzdC11c2VyLXN0eWxlLXNoZWV0cy1pZnJhbWUiXV07CisgICAg
W3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisgICAgTlNFcnJvciAqZXJyb3IgPSBbZGVs
ZWdhdGUgd2FpdEZvckRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25FcnJvcl07CisgICAgRVhQ
RUNUX1dLX1NUUkVRKGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uLCBAIkFwcC1ib3VuZCBkb21h
aW4gZmFpbHVyZSIpOwogICAgIGNsZWFuVXBJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdz
KCk7CiB9CiAKQEAgLTQwNCw4ICs0MjMsNiBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIE5v
bkFwcEJvdW5kRG9tYWluQ2Fubm90QWNjZXNzTWVzc2FnZUhhbmRsZXJzKQogCiAgICAgYXV0byBz
Y2hlbWVIYW5kbGVyID0gYWRvcHROUyhbW0luQXBwQnJvd3NlclNjaGVtZUhhbmRsZXIgYWxsb2Nd
IGluaXRdKTsKICAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOnNjaGVtZUhh
bmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiaW4tYXBwLWJyb3dzZXIiXTsKLSAgICBbW2NvbmZp
Z3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZDpZRVNd
OwotICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldE5lZWRzSW5BcHBCcm93c2Vy
UHJpdmFjeVF1aXJrczpZRVNdOwogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKIApAQCAtNDE2LDYgKzQzMywxMCBAQCBURVNUKEluQXBwQnJv
d3NlclByaXZhY3ksIE5vbkFwcEJvdW5kRG9tYWluQ2Fubm90QWNjZXNzTWVzc2FnZUhhbmRsZXJz
KQogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhV
Ukw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJpbi1hcHAtYnJvd3NlcjovLy9pbi1hcHAtYnJvd3Nl
ci1wcml2YWN5LXRlc3QtbWVzc2FnZS1oYW5kbGVyIl1dOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0OnJlcXVlc3RdOwogICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0
aW9uXTsKKyAgICAKKyAgICAvLyBEaXNhYmxlIHNjcmlwdCBpbmplY3Rpb24gYmxvY2tpbmcgdG8g
Y2hlY2sgdGhhdCB0aGUgcmVxdWVzdCBmb3IgbWVzc2FnZQorICAgIC8vIGhhbmRsZXJzIHJldHVy
bmVkIG51bGwuCisgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0TmVlZHNJbkFw
cEJyb3dzZXJQcml2YWN5UXVpcmtzOllFU107CiAKICAgICAvLyBTZXQgdGhlIGJhY2tncm91bmQg
Y29sb3IgdG8gcmVkIGlmIG1lc3NhZ2UgaGFuZGxlcnMgcmV0dXJuZWQgbnVsbCBzbyB3ZSBjYW4K
ICAgICAvLyBjaGVjayB3aXRob3V0IG5lZWRpbmcgYSBtZXNzYWdlIGhhbmRsZXIuCkBAIC00MzIs
NyArNDUzLDYgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZERvbWFpbkNhbkFj
Y2Vzc01lc3NhZ2VIYW5kbGVycykKIAogICAgIGF1dG8gc2NoZW1lSGFuZGxlciA9IGFkb3B0TlMo
W1tJbkFwcEJyb3dzZXJTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0XSk7CiAgICAgW2NvbmZpZ3Vy
YXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpzY2hlbWVIYW5kbGVyLmdldCgpIGZvclVSTFNjaGVt
ZTpAImluLWFwcC1icm93c2VyIl07Ci0gICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBf
c2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQ6WUVTXTsKICAgICBbY29uZmlndXJhdGlvbiBz
ZXRMaW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zOllFU107CiAKICAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1Jl
Y3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwpAQCAtODMzLDQwICs4
NTMsNiBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIE5vbkFwcEJvdW5kRG9tYWluRG9lc05v
dEFsbG93U2VydmljZVdvcmtlcnMpCiAgICAgaXNEb25lID0gZmFsc2U7CiB9CiAKLUBpbnRlcmZh
Y2UgQXBwQm91bmREb21haW5EZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0
ZT4KLS0gKHZvaWQpd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb247Ci0tIChOU0Vycm9yICopd2Fp
dEZvckRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25FcnJvcjsKLUBlbmQKLQotQGltcGxlbWVu
dGF0aW9uIEFwcEJvdW5kRG9tYWluRGVsZWdhdGUgewotICAgIGJvb2wgX25hdmlnYXRpb25GaW5p
c2hlZDsKLSAgICBSZXRhaW5QdHI8TlNFcnJvcj4gX3Byb3Zpc2lvbmFsTmF2aWdhdGlvbkZhaWxl
ZEVycm9yOwotfQotCi0tICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmlu
aXNoTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbgotewotICAgIF9uYXZpZ2F0
aW9uRmluaXNoZWQgPSB0cnVlOwotfQotCi0tICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbjoobnVsbF91bnNwZWNpZmllZCBXS05h
dmlnYXRpb24gKiluYXZpZ2F0aW9uIHdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCi17Ci0gICAg
X3Byb3Zpc2lvbmFsTmF2aWdhdGlvbkZhaWxlZEVycm9yID0gZXJyb3I7Ci19Ci0KLS0gKHZvaWQp
d2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb24KLXsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJl9uYXZpZ2F0aW9uRmluaXNoZWQpOwotfQotCi0tIChOU0Vycm9yICopd2FpdEZvckRpZEZh
aWxQcm92aXNpb25hbE5hdmlnYXRpb25FcnJvcgotewotICAgIHdoaWxlICghX3Byb3Zpc2lvbmFs
TmF2aWdhdGlvbkZhaWxlZEVycm9yKQotICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzcGlu
UnVuTG9vcCgpOwotICAgIHJldHVybiBfcHJvdmlzaW9uYWxOYXZpZ2F0aW9uRmFpbGVkRXJyb3Iu
YXV0b3JlbGVhc2UoKTsKLX0KLQotQGVuZAotCiBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFw
cEJvdW5kRmxhZ0Zvck5vbkFwcEJvdW5kRG9tYWluRmFpbHMpCiB7CiAgICAgaW5pdGlhbGl6ZUlu
QXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKQEAgLTg4NSw3ICs4NzEsNyBAQCBURVNU
KEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kRmxhZ0Zvck5vbkFwcEJvdW5kRG9tYWluRmFp
bHMpCiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0
aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImluLWFwcC1icm93c2VyOi8vL2luLWFwcC1icm93
c2VyLXByaXZhY3ktdGVzdC11c2VyLXN0eWxlLXNoZWV0cyJdXTsKICAgICBbd2ViVmlldyBsb2Fk
UmVxdWVzdDpyZXF1ZXN0XTsKICAgICBOU0Vycm9yICplcnJvciA9IFtkZWxlZ2F0ZSB3YWl0Rm9y
RGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbkVycm9yXTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEo
ZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24sIEAiQXR0ZW1wdGVkIG5hdmlnYXRpb24gYXdheSBm
cm9tIGFwcC1ib3VuZCBkb21haW4iKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IubG9jYWxp
emVkRGVzY3JpcHRpb24sIEAiQXBwLWJvdW5kIGRvbWFpbiBmYWlsdXJlIik7CiAKICAgICAvLyBN
YWtlIHN1cmUgdGhlIGxvYWQgZGlkbid0IGNvbXBsZXRlIGJ5IGNoZWNraW5nIHRoZSBiYWNrZ3Jv
dW5kIGNvbG9yLgogICAgIC8vIFJlZCB3b3VsZCBpbmRpY2F0ZSBpdCBmaW5pc2hlZCBsb2FkaW5n
LgpAQCAtOTE2LDcgKzkwMiw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTmF2aWdhdGVB
d2F5RnJvbUFwcEJvdW5kRG9tYWluV2l0aEFwcEJvdW5kRmxhZ0ZhaWxzKQogICAgIHJlcXVlc3Qg
PSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaW4t
YXBwLWJyb3dzZXI6Ly8vaW4tYXBwLWJyb3dzZXItcHJpdmFjeS10ZXN0LXVzZXItc3R5bGUtc2hl
ZXRzIl1dOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwogICAgIE5TRXJyb3Ig
KmVycm9yID0gW2RlbGVnYXRlIHdhaXRGb3JEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uRXJy
b3JdOwotICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbiwgQCJB
dHRlbXB0ZWQgbmF2aWdhdGlvbiBhd2F5IGZyb20gYXBwLWJvdW5kIGRvbWFpbiIpOworICAgIEVY
UEVDVF9XS19TVFJFUShlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbiwgQCJBcHAtYm91bmQgZG9t
YWluIGZhaWx1cmUiKTsKIAogICAgIC8vIE1ha2Ugc3VyZSB0aGUgbG9hZCBkaWRuJ3QgY29tcGxl
dGUgYnkgY2hlY2tpbmcgdGhlIGJhY2tncm91bmQgY29sb3IuCiAgICAgLy8gUmVkIHdvdWxkIGlu
ZGljYXRlIGl0IGZpbmlzaGVkIGxvYWRpbmcuCkBAIC05OTEsMTEgKzk3NywxNCBAQCBURVNUKElu
QXBwQnJvd3NlclByaXZhY3ksIFdlYlZpZXdXaXRob3V0QXBwQm91bmRGbGFnQ2FuRnJlZWx5TmF2
aWdhdGUpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCiAgICAgLy8g
TmF2aWdhdGlvbiBzaG91bGQgYmUgc3VjY2Vzc2Z1bCwgYnV0IHRoaXMgV2ViVmlldyBzaG91bGQg
bm90IGdldCBhcHAtYm91bmQgZG9tYWluCi0gICAgLy8gcHJpdmlsZWdlcyBsaWtlIHVzZXIgc3R5
bGUgc2hlZXRzLiBTZXQgcXVpcmtzIHRvIHRydWUgc28gd2UgY2FuIGV2YWx1YXRlIHNjcmlwdAot
ICAgIC8vIHRvIGNoZWNrLgotICAgIFtbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0gcHJlZmVyZW5j
ZXNdIF9zZXROZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3M6WUVTXTsKLSAgICBleHBlY3RT
Y3JpcHRFdmFsdWF0ZXNUb0NvbG9yKHdlYlZpZXcuZ2V0KCksIGJhY2tncm91bmRDb2xvclNjcmlw
dCwgYmxhY2tJblJHQik7Ci0gICAgY2xlYW5VcEluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGlu
Z3MoKTsKKyAgICAvLyBwcml2aWxlZ2VzIGxpa2Ugc2NyaXB0IGluamVjdGlvbi4KKyAgICBpc0Rv
bmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJ3aW5kb3cud2tV
c2VyU2NyaXB0SW5qZWN0ZWQiIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgX051bGxhYmxlIHJlc3Vs
dCwgTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvcikgeworICAgICAgICBFWFBFQ1RfVFJVRSghIWVy
cm9yKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIH0KIAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBX
ZWJWaWV3Q2Fubm90VXBkYXRlQXBwQm91bmRGbGFnT25jZVNldCkKQEAgLTEwMjksMTEgKzEwMTgs
NDIgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBXZWJWaWV3Q2Fubm90VXBkYXRlQXBwQm91
bmRGbGFnT25jZVNldCkKICAgICByZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVS
TDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImluLWFwcC1icm93c2VyOi8vL2luLWFwcC1icm93c2Vy
LXByaXZhY3ktdGVzdC11c2VyLXN0eWxlLXNoZWV0cyJdXTsKICAgICBbd2ViVmlldyBsb2FkUmVx
dWVzdDpyZXF1ZXN0XTsKICAgICBOU0Vycm9yICplcnJvciA9IFtkZWxlZ2F0ZSB3YWl0Rm9yRGlk
RmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbkVycm9yXTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoZXJy
b3IubG9jYWxpemVkRGVzY3JpcHRpb24sIEAiQXR0ZW1wdGVkIG5hdmlnYXRpb24gYXdheSBmcm9t
IGFwcC1ib3VuZCBkb21haW4iKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IubG9jYWxpemVk
RGVzY3JpcHRpb24sIEAiQXBwLWJvdW5kIGRvbWFpbiBmYWlsdXJlIik7CiAKICAgICBjbGVhblVw
SW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOwogfQogCitURVNUKEluQXBwQnJvd3Nl
clByaXZhY3ksIEluamVjdFNjcmlwdFRoZW5OYXZpZ2F0ZVRvTm9uQXBwQm91bmREb21haW5GYWls
cykKK3sKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICBpbml0aWFsaXplSW5BcHBCcm93c2VyUHJp
dmFjeVRlc3RTZXR0aW5ncygpOworICAgIGF1dG8gdXNlclNjcmlwdCA9IGFkb3B0TlMoW1tXS1Vz
ZXJTY3JpcHQgYWxsb2NdIGluaXRXaXRoU291cmNlOnVzZXJTY3JpcHRTb3VyY2UgaW5qZWN0aW9u
VGltZTpXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1bWVudFN0YXJ0IGZvck1haW5GcmFt
ZU9ubHk6WUVTXSk7CisKKyAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9u
ID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1
Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpT
Q0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBhdXRvIHNjaGVtZUhhbmRsZXIgPSBhZG9wdE5TKFtbSW5B
cHBCcm93c2VyU2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9u
IHNldFVSTFNjaGVtZUhhbmRsZXI6c2NoZW1lSGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJp
bi1hcHAtYnJvd3NlciJdOworICAgIFtjb25maWd1cmF0aW9uLnVzZXJDb250ZW50Q29udHJvbGxl
ciBhZGRVc2VyU2NyaXB0OnVzZXJTY3JpcHQuZ2V0KCldOworICAgIFtbY29uZmlndXJhdGlvbiBw
cmVmZXJlbmNlc10gX3NldE5lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrczpOT107CisKKyAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8g
ZGVsZWdhdGUgPSBhZG9wdE5TKFtBcHBCb3VuZERvbWFpbkRlbGVnYXRlIG5ld10pOworICAgIFt3
ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBpc0Rv
bmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJ3aW5kb3cud2tV
c2VyU2NyaXB0SW5qZWN0ZWQiIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgX051bGxhYmxlIHJlc3Vs
dCwgTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvcikgeworICAgICAgICBFWFBFQ1RfRkFMU0UoISFl
cnJvcik7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisgICAgCisgICAgLy8gTG9hZCBhIG5vbi1hcHAgYm91
bmQgZG9tYWluLgorICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJpbi1hcHAtYnJvd3NlcjovLy9pbi1h
cHAtYnJvd3Nlci1wcml2YWN5LXRlc3QtdXNlci1hZ2VudC1zY3JpcHQiXV07CisgICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisgICAgTlNFcnJvciAqZXJyb3IgPSBbZGVsZWdhdGUg
d2FpdEZvckRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25FcnJvcl07CisgICAgRVhQRUNUX1dL
X1NUUkVRKGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uLCBAIkFwcC1ib3VuZCBkb21haW4gZmFp
bHVyZSIpOworfQorCiBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIFdlYlZpZXdDYXRlZ29yeSkK
IHsKICAgICBpbml0aWFsaXplSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399049</attachid>
            <date>2020-05-11 13:32:26 -0700</date>
            <delta_ts>2020-05-11 16:03:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211647-20200511133225.patch</filename>
            <type>text/plain</type>
            <size>80029</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNDgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjU4MDJjZTUzNDMxMjc2
YjVhNGQyZTlmNzYxYTUwZjE0ZDY1ODY3NC4uMThlODQ1MGQ3NWE1MmEyMTk5YjJkNzE0Njg4ODNm
ODM2NmJmNjBhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIwLTA1LTExICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEZhaWwgbmF2
aWdhdGlvbnMgdG8gbm9uIGFwcC1ib3VuZCBkb21haW5zIGFmdGVyIHVzZSBvZiBhcHAtYm91bmQg
QVBJcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEx
NjQ3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82Mjk3ODE1OT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW1wbGlmaWVkIGluLWFwcCBicm93c2Vy
IHByaXZhY3kgcHJvdGVjdGlvbnMgY2hlY2sgaW50byBvbmUsIGJldHRlcgorICAgICAgICBuYW1l
ZCBmdW5jdGlvbi4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29y
bGQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIHBh
Z2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmluamVjdFVzZXJTY3JpcHRJ
bW1lZGlhdGVseSk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2U6OmluamVjdFVzZXJTdHlsZVNoZWV0KToKKyAgICAgICAgKiBwYWdlL1dlYktpdE5hbWVz
cGFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXROYW1lc3BhY2U6Om1lc3NhZ2VIYW5k
bGVycyk6CisgICAgICAgICogc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlOjpTY29wZVJ1bGVTZXRzOjppbml0aWFsaXplVXNlclN0eWxlKToKKyAg
ICAgICAgUmVhcnJhbmdlZCBvcmRlcmluZyBzbyB0aGUgbWVzc2FnZSB0byBXZWJQYWdlUHJveHkg
b25seSBnZXRzIHNlbnQgdG8KKyAgICAgICAgaW5kaWNhdGUgYXBwLWJvdW5kIGJlaGF2aW9yIGlm
IHVzZXIgc3R5bGUgc2hlZXRzIGFjdHVhbGx5IGV4aXN0LgorCiAyMDIwLTA1LTExICBBbmRyZXMg
R29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgbWVjaGFuaXNt
IHRvIHR1cm4gb24gYWNjZXNzaWJpbGl0eSBpc29sYXRlZCB0cmVlIG1vZGUgZnJvbSBXZWJLaXRU
ZXN0UnVubmVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCBkNTdlYmQ5YzdiOWFlMGJjYWU5ZjlmOGJjNWU3M2Y4NmYw
MWFhNWU2Li43NzViOGU2MWVkYzE4NGI4MjI4YjI3OTI1MmFjODQ4MjQzNTRiOGRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDk5IEBACisyMDIwLTA1LTExICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9j
aGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEZhaWwgbmF2aWdhdGlvbnMgdG8gbm9uIGFwcC1i
b3VuZCBkb21haW5zIGFmdGVyIHVzZSBvZiBhcHAtYm91bmQgQVBJcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExNjQ3CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS82Mjk3ODE1OT4KKworICAgICAgICBBIGxvdCBvZiB0aGlzIHBhdGNoIGlzIGRlbGV0
aW5nIHRoZSB1bm5lY2Vzc2FyeSB2YXJpYWJsZS9mdW5jdGlvbgorICAgICAgICBoYXNOYXZpZ2F0
ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluIG5vdyB0aGF0IG5hdmlnYXRpbmcgYXdheSBmcm9tIGFu
CisgICAgICAgIGFwcC1ib3VuZCBkb21haW4gaXMgbm90IHBvc3NpYmxlLgorICAgICAgICAKKyAg
ICAgICAgVG8gYWRkcmVzcyB0aGUgYnVnLCB0aGlzIHNldHMgdGhlIGRlZmF1bHQgaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbgorICAgICAgICB2YWx1ZSB0byBiZSBXVEY6Om51bGxvcHQuIFRo
aXMgd2lsbCBhbGxvdyBhcHAtYm91bmQgYmVoYXZpb3JzIHVudGlsCisgICAgICAgIGEgbmF2aWdh
dGlvbiBoYXMgYmVlbiBhdHRlbXB0ZWQsIGluIHdoaWNoIGNhc2UgaXQgd2lsbCBmYWlsIG9yIHdp
bGwKKyAgICAgICAgdXBkYXRlIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gdG8gdGhlIGNv
cnJlY3QgdmFsdWUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBTaGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpMb2Fk
UGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TG9hZFBhcmFtZXRl
cnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmg6CisgICAgICAg
ICogU2hhcmVkL1BvbGljeURlY2lzaW9uLmg6CisgICAgICAgIChXZWJLaXQ6OlBvbGljeURlY2lz
aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQb2xpY3lEZWNpc2lvbjo6ZGVj
b2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZERhdGEpOgorICAgICAgICAo
V2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAoV2Vi
S2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
blN5bmMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojps
b2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5Ojpsb2FkRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZERh
dGFXaXRoTmF2aWdhdGlvblNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luY1NoYXJlZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERv
bWFpbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIFJlbW92ZSBoYXNOYXZpZ2F0ZWRBd2F5RnJv
bUFwcEJvdW5kRG9tYWluLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0SXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbkFuZENoZWNrSWZQZXJtaXR0ZWQpOgorICAgICAgICBD
aGVjayBmb3IgbmV3IG1faGFzRXhlY3V0ZWRBcHBCb3VuZEJlaGF2aW9yQmVmb3JlTmF2aWdhdGlv
biBwYXJhbWV0ZXIKKyAgICAgICAgYW5kIGZhaWwgdGhlIG5hdmlnYXRpb24gaWYgYSBXZWJWaWV3
IGhhcyB1c2VkIGFwcC1ib3VuZCBiZWhhdmlvciB0aGVuCisgICAgICAgIHRyaWVzIHRvIG5hdmln
YXRlIHRvIGEgbm9uIGFwcC1ib3VuZCBkb21haW4uCisKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgVXBkYXRl
IGVycm9yIG1lc3NhZ2UgdG8gYmUgbW9yZSBnZW5lcmFsIG5vdyB0aGF0IG1vcmUgdGhhbiBvbmUg
ZXJyb3IKKyAgICAgICAgY2FuIG9jY3VyLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEhhc0V4ZWN1dGVkQXBw
Qm91bmRCZWhhdmlvckJlZm9yZU5hdmlnYXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgIE5ldyBwYXJhbWV0ZXIgdG8gaW5kaWNhdGUg
YSBXZWJWaWV3IGhhcyB1c2VkIGFwcC1ib3VuZCBBUElzIGJlZm9yZQorICAgICAgICBuYXZpZ2F0
aW5nLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRFbmFibGVJbkFwcEJy
b3dzZXJQcml2YWN5UHJvdGVjdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRl
ckNsaWVudDo6aGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpuZWVkc0luQXBwQnJvd3NlclBy
aXZhY3lRdWlya3MgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgQ29tYmluZWQgdHdvIGZ1
bmN0aW9ucyBpbnRvIGEgc2ltcGxlciBmdW5jdGlvbjoKKyAgICAgICAgc2hvdWxkRW5hYmxlSW5B
cHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fbGltaXRzTmF2aWdhdGlvbnNU
b0FwcEJvdW5kRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZl
cmVuY2VzKToKKyAgICAgICAgU3RvcmUgdGhlIHNwZWNpYWwgYXBwLWJvdW5kIGRvbWFpbiBmbGFn
IHRvIGdhdGUgdGhlIHNlcnZpY2Ugd29ya2VyCisgICAgICAgIEFQSS4gVGhpcyBzaG91bGQgYmUg
c3RvcmVkIHNlcGFyYXRlbHkgZnJvbQorICAgICAgICBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4sIGJlY2F1c2UgaW4gdGhlIFdlYlBhZ2UgY29uc3RydWN0b3Igd2UKKyAgICAgICAgZG9u
J3QgeWV0IGtub3cgd2hldGhlciB0aGUgV0tBcHBCb3VuZERvbWFpbnMga2V5IGV4aXN0cy4KKwor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmxvYWREYXRhSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRE
YXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZEFsdGVybmF0ZUhUTUwpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24pOgorICAgICAg
ICBSZW1vdmUgaGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbi4KKworICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpydW5KYXZhU2NyaXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6c2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucyk6CisgICAg
ICAgIElmIG1fbmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzIGFyZSBvbiBmb3IgdGVzdGlu
ZywgZG9uJ3QgZW5hYmxlCisgICAgICAgIHByb3RlY3Rpb25zLiBPbmx5IG5vdGlmeSB0aGUgV2Vi
UGFnZVByb3h5IG9mIGFwcC1ib3VuZCBiZWhhdmlvciBpZgorICAgICAgICBhIG5hdmlnYXRpb24g
aGFzIG5vdCBvY2N1cmVkIGFuZCB3ZSBrbm93IHRoZSB3ZWJWaWV3IGlzIG5vdCBhcHAtYm91bmQK
KyAgICAgICAgKGluIG9yZGVyIHRvIGxpbWl0IElQQykuCisKKyAgICAgICAgKFdlYktpdDo6bV9p
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
c2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6Omhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4gY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRIYXNOYXZpZ2F0ZWRBd2F5RnJv
bUFwcEJvdW5kRG9tYWluKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bmVl
ZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzIGNvbnN0KTogRGVsZXRlZC4KKwogMjAyMC0wNS0x
MSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdS
RVNTSU9OIChyMjUzMjY3KTogaXNzdWVzIG9uIHRvdWNoc3RhcnQvdG91Y2hlbmQvdG91Y2htb3Zl
IChwb2ludGVyZG93bi9wb2ludGVydXAvcG9pbnRlcm1vdmUpIGV2ZW50cwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCBhZTI4ODVjMDMz
YmU0YWM4ZGMwMmM4MTIyNDc4YWM3Yzc0MzkwYzBiLi5jZTU1MWQzMTExNzA2MjAwMjZiZmJkZGYw
MWY4N2ViNTljNmNhNzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRDb250cm9sbGVyLmNwcApAQCAtNTc5LDcgKzU3OSw3IEBAIEpTQzo6SlNWYWx1ZSBTY3JpcHRD
b250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKERPTVdyYXBw
ZXJXCiAKIFZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdElu
V29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzKQogewotICAgIGlmIChtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmhhc05hdmln
YXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4oKSAmJiAhbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQo
KS5uZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3MoKSkgeworICAgIGlmIChtX2ZyYW1lLmxv
YWRlcigpLmNsaWVudCgpLnNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9u
cygpKSB7CiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IG1fZnJhbWUuZG9jdW1lbnQoKSkK
ICAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpT
ZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5q
ZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iKTsKICAgICAgICAgUkVMRUFTRV9MT0df
RVJST1JfSUZfQUxMT1dFRChMb2FkaW5nLCAiZXhlY3V0ZVNjcmlwdEluV29ybGQ6IElnbm9yaW5n
IHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMWU1NDI1ZTk0Nzc4NWYx
OGJlOGI1OTk0OGU4OTRhOGRmODMyYzllNy4uMDA3MGUzYmY0NmI1YzNkYjRjZGIyZmFkOTAwZDUz
MDQ5NDg1MDg0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgK
QEAgLTM3OSw4ICszNzksNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIEFsbG93c0NvbnRlbnRK
YXZhU2NyaXB0IGFsbG93c0NvbnRlbnRKYXZhU2NyaXB0RnJvbU1vc3RSZWNlbnROYXZpZ2F0aW9u
KCkgY29uc3QgeyByZXR1cm4gQWxsb3dzQ29udGVudEphdmFTY3JpcHQ6OlllczsgfQogCi0gICAg
dmlydHVhbCBib29sIGhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4oKSB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBuZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWly
a3MoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRFbmFi
bGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKSB7IHJldHVybiBmYWxzZTsgfQogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCA3NjA2NmY1
MmE4YTIxODcwYjY1Nzk3YzQ4ZjUzODk5YmQyYzNiMWZjLi5jZWUzZWZhZjNhZjgxZTk0MDkyMTBm
YzI4NTJmNjM0OTkwNDZiYzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtNjUxLDcgKzY1MSw3
IEBAIHZvaWQgRnJhbWU6OmluamVjdFVzZXJTY3JpcHRzKFVzZXJTY3JpcHRJbmplY3Rpb25UaW1l
IGluamVjdGlvblRpbWUpCiAKIHZvaWQgRnJhbWU6OmluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVs
eShET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBVc2VyU2NyaXB0JiBzY3JpcHQpCiB7Ci0g
ICAgaWYgKGxvYWRlcigpLmNsaWVudCgpLmhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21h
aW4oKSAmJiAhbG9hZGVyKCkuY2xpZW50KCkubmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtz
KCkpIHsKKyAgICBpZiAobG9hZGVyKCkuY2xpZW50KCkuc2hvdWxkRW5hYmxlSW5BcHBCcm93c2Vy
UHJpdmFjeVByb3RlY3Rpb25zKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gdGhp
cy0+ZG9jdW1lbnQoKSkKICAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShN
ZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3Jpbmcg
dXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iX3MpOwogICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKExvYWRpbmcsICJpbmplY3RVc2VyU2Ny
aXB0SW1tZWRpYXRlbHk6IElnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uIGFw
cC1ib3VuZCBkb21haW4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDA2ODE4YzgyNTZhN2E0ZDY5
MDU2YzkzMTBjMWMxZDRmZmY2NWQ3YmQuLmYxODMxMGQwNDNmYTEwMDFkMTNlZDMyY2NhMGIzZDM1
MGNhMzJlOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMzE2Miw3ICszMTYyLDcgQEAgdm9pZCBQ
YWdlOjpyZXZlYWxDdXJyZW50U2VsZWN0aW9uKCkKIAogdm9pZCBQYWdlOjppbmplY3RVc2VyU3R5
bGVTaGVldChVc2VyU3R5bGVTaGVldCYgdXNlclN0eWxlU2hlZXQpCiB7Ci0gICAgaWYgKG1fbWFp
bkZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5oYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9t
YWluKCkpIHsKKyAgICBpZiAobV9tYWluRnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnNob3VsZEVu
YWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7CiAgICAgICAgIGlmIChhdXRv
KiBkb2N1bWVudCA9IG1fbWFpbkZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICAgICAgZG9jdW1l
bnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2
ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHN0eWxlIHNoZWV0IGZvciBub24tYXBwIGJvdW5k
IGRvbWFpbi4iX3MpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1dlYktpdE5hbWVzcGFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dlYktpdE5h
bWVzcGFjZS5jcHAKaW5kZXggYWMxMjQ3YzYxNGUxNmVlMGY1NTJjNzQzMDJmMjYzYjEzMjgxZjQz
MC4uNWIwYjc0MjgwNmJiMDY3NmY2M2I0NDYzYTlkMzVlZjIzMDJhNTg2YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9XZWJLaXROYW1lc3BhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvV2ViS2l0TmFtZXNwYWNlLmNwcApAQCAtNTAsNyArNTAsNyBAQCBXZWJLaXROYW1l
c3BhY2U6On5XZWJLaXROYW1lc3BhY2UoKSA9IGRlZmF1bHQ7CiAKIFVzZXJNZXNzYWdlSGFuZGxl
cnNOYW1lc3BhY2UqIFdlYktpdE5hbWVzcGFjZTo6bWVzc2FnZUhhbmRsZXJzKCkKIHsKLSAgICBp
ZiAoZnJhbWUoKSAmJiBmcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5oYXNOYXZpZ2F0ZWRBd2F5
RnJvbUFwcEJvdW5kRG9tYWluKCkpIHsKKyAgICBpZiAoZnJhbWUoKSAmJiBmcmFtZSgpLT5sb2Fk
ZXIoKS5jbGllbnQoKS5zaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMo
KSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKExvYWRpbmcsICJJZ25v
cmluZyBtZXNzYWdlSGFuZGxlcnMoKSByZXF1ZXN0IGZvciBub24gYXBwLWJvdW5kIGRvbWFpbiIp
OwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVTY29wZVJ1bGVTZXRzLmNwcAppbmRleCAyOTVkZjQwNDEwN2FkYzBiM2Y3YmZkOWUzOWIw
M2QwNGI5YzA0ZTY0Li5kMjRiMzMzMGZmMGE1MmMyMTI1YjdlM2YwNmNkMTY0YzJjMThlODA4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5jcHAKQEAgLTkyLDcg
KzkyLDcgQEAgdm9pZCBTY29wZVJ1bGVTZXRzOjppbml0aWFsaXplVXNlclN0eWxlKCkKICAgICBp
ZiAoQ1NTU3R5bGVTaGVldCogcGFnZVVzZXJTaGVldCA9IGV4dGVuc2lvblN0eWxlU2hlZXRzLnBh
Z2VVc2VyU2hlZXQoKSkKICAgICAgICAgdGVtcFVzZXJTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQo
cGFnZVVzZXJTaGVldC0+Y29udGVudHMoKSwgbnVsbHB0ciwgbWVkaWFRdWVyeUV2YWx1YXRvciwg
bV9zdHlsZVJlc29sdmVyKTsKICAgICBhdXRvKiBwYWdlID0gbV9zdHlsZVJlc29sdmVyLmRvY3Vt
ZW50KCkucGFnZSgpOwotICAgIGlmIChwYWdlICYmIHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigp
LmNsaWVudCgpLmhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4oKSAmJiAhZXh0ZW5z
aW9uU3R5bGVTaGVldHMuaW5qZWN0ZWRVc2VyU3R5bGVTaGVldHMoKS5pc0VtcHR5KCkpCisgICAg
aWYgKCFleHRlbnNpb25TdHlsZVNoZWV0cy5pbmplY3RlZFVzZXJTdHlsZVNoZWV0cygpLmlzRW1w
dHkoKSAmJiBwYWdlICYmIHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmNsaWVudCgpLnNob3Vs
ZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpKQogICAgICAgICBtX3N0eWxl
UmVzb2x2ZXIuZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1
cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzdHlsZSBzaGVldCBm
b3Igbm9uLWFwcCBib3VuZCBkb21haW4uIl9zKTsKICAgICBlbHNlCiAgICAgICAgIGNvbGxlY3RS
dWxlc0Zyb21Vc2VyU3R5bGVTaGVldHMoZXh0ZW5zaW9uU3R5bGVTaGVldHMuaW5qZWN0ZWRVc2Vy
U3R5bGVTaGVldHMoKSwgdGVtcFVzZXJTdHlsZS5nZXQoKSwgbWVkaWFRdWVyeUV2YWx1YXRvcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtT
ZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtTZXNzaW9uQ29jb2EubW0KaW5kZXggNjFmMTBjYzgxMjY0ZTI0YTZmNzZlNTE5NDExOWZkNTY3
ZjM3ZjlmOS4uMGViYWMwNTRkNWQzMzJjNjQwNzNkZjI0MmMwZWQ2NzUyZjhmN2Q3NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nl
c3Npb25Db2NvYS5tbQpAQCAtNjIsNiArNjIsNyBAQAogI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25z
L05ldHdvcmtTZXNzaW9uQ29jb2FBZGRpdGlvbnMuaD4KICNlbHNlCiAjZGVmaW5lIE5FVFdPUktf
U0VTU0lPTl9DT0NPQV9BRERJVElPTlNfMQorI2RlZmluZSBORVRXT1JLX1NFU1NJT05fQ09DT0Ff
QURESVRJT05TXzIgdHJ1ZQogI2VuZGlmCiAKICNpbXBvcnQgIkRldmljZU1hbmFnZW1lbnRTb2Z0
TGluay5oIgpAQCAtMTI2MCw2ICsxMjYxLDggQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpp
bml0aWFsaXplRXBoZW1lcmFsU3RhdGVsZXNzU2Vzc2lvbihOYXZpZ2F0aW5nVG9BcHBCb3UKIFNl
c3Npb25XcmFwcGVyJiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXNzaW9uV3JhcHBlckZvclRhc2so
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWJDb3JlOjpTdG9yZWRD
cmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgT3B0aW9uYWw8TmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCiB7CiAg
ICAgYXV0byBzaG91bGRCZUNvbnNpZGVyZWRBcHBCb3VuZCA9IGlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4gPyAqaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA6IE5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluOjpZZXM7CisgICAgaWYgKE5FVFdPUktfU0VTU0lPTl9DT0NPQV9BRERJVElP
TlNfMikKKyAgICAgICAgc2hvdWxkQmVDb25zaWRlcmVkQXBwQm91bmQgPSBOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbjo6Tm87CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
ICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBuZXR3b3JrU3RvcmFnZVNlc3Npb24oKSkg
ewogICAgICAgICBhdXRvIGZpcnN0UGFydHkgPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbihy
ZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBh
cmFtZXRlcnMuY3BwCmluZGV4IDZlNTY5OWE2ZjBhNzhkZDhiOGMwODEzNjI2NGFlMjEzYzI4N2Y4
ZjEuLjI4OTY4ZWRjYTZjYTkyOWFlMWRiZWMzMDYxYzJlNGM1OTQzMjQwZTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5jcHAKQEAgLTU3LDcgKzU3LDYgQEAgdm9pZCBMb2Fk
UGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNv
ZGVyLmVuY29kZUVudW0obG9ja0JhY2tGb3J3YXJkTGlzdCk7CiAgICAgZW5jb2RlciA8PCBjbGll
bnRSZWRpcmVjdFNvdXJjZUZvckhpc3Rvcnk7CiAgICAgZW5jb2RlciA8PCBpc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluOwotICAgIGVuY29kZXIgPDwgaGFzTmF2aWdhdGVkQXdheUZyb21BcHBC
b3VuZERvbWFpbjsKIAogICAgIHBsYXRmb3JtRW5jb2RlKGVuY29kZXIpOwogfQpAQCAtMTM4LDkg
KzEzNyw2IEBAIGJvb2wgTG9hZFBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29k
ZXIsIExvYWRQYXJhbWV0ZXJzJiBkYXRhKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5p
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IAotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5oYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJv
dW5kRG9tYWluKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAogICAgIGlmICghcGxhdGZv
cm1EZWNvZGUoZGVjb2RlciwgZGF0YSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmgKaW5kZXggYTdhNDlkMGVhZDMxMDZlZDgxNjIyZTEz
YjIyZmIxNmMyNmI4OTI3Yi4uMGMxMWY5YzkyMzMxMWE4OGQ5MzNhYWFiNjhiNTk5ZTQ0NjE1YWQz
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5oCkBAIC03MCw4ICs3MCw3IEBA
IHN0cnVjdCBMb2FkUGFyYW1ldGVycyB7CiAgICAgV2ViQ29yZTo6TG9ja0hpc3RvcnkgbG9ja0hp
c3RvcnkgeyBXZWJDb3JlOjpMb2NrSGlzdG9yeTo6Tm8gfTsKICAgICBXZWJDb3JlOjpMb2NrQmFj
a0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9yd2FyZExpc3QgeyBXZWJDb3JlOjpMb2NrQmFja0Zvcndh
cmRMaXN0OjpObyB9OwogICAgIFN0cmluZyBjbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3Rvcnk7
Ci0gICAgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4geyBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm8gfTsKLSAgICBO
YXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluIGhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91
bmREb21haW4geyBOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluOjpObyB9OworICAgIE9w
dGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluIHsgV1RGOjpudWxsb3B0IH07CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRh
aW5QdHI8TlNEaWN0aW9uYXJ5PiBkYXRhRGV0ZWN0aW9uQ29udGV4dDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1BvbGljeURlY2lzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Qb2xpY3lEZWNpc2lvbi5oCmluZGV4IDQ0NWUzMmI1YjllYWIzMmI0NzE0NTEwNzdlZTFkMzg0
MTkwODYxM2EuLjgyOTExYjY3MWEzZjI1NTM3YjBjMmZhMjg1ZmY2MzRkODJhMDcwYmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BvbGljeURlY2lzaW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvUG9saWN5RGVjaXNpb24uaApAQCAtMzMsMTIgKzMzLDkgQEAKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLWVudW0gY2xhc3MgTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERv
bWFpbiA6IGJvb2wgeyBZZXMsIE5vfTsKLQogc3RydWN0IFBvbGljeURlY2lzaW9uIHsKICAgICBX
ZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciB7IH07Ci0gICAgT3B0aW9u
YWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4geyBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm8gfTsKLSAgICBOYXZpZ2F0ZWRBd2F5
RnJvbUFwcEJvdW5kRG9tYWluIGhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4geyBO
YXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluOjpObyB9OworICAgIE9wdGlvbmFsPE5hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIHsgV1RG
OjpudWxsb3B0IH07CiAgICAgV2ViQ29yZTo6UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiB7IFdl
YkNvcmU6OlBvbGljeUFjdGlvbjo6SWdub3JlIH07CiAgICAgdWludDY0X3QgbmF2aWdhdGlvbklE
IHsgMCB9OwogICAgIERvd25sb2FkSUQgZG93bmxvYWRJRCB7IDAgfTsKQEAgLTUwLDcgKzQ3LDYg
QEAgc3RydWN0IFBvbGljeURlY2lzaW9uIHsKICAgICB7CiAgICAgICAgIGVuY29kZXIgPDwgaWRl
bnRpZmllcjsKICAgICAgICAgZW5jb2RlciA8PCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
OwotICAgICAgICBlbmNvZGVyIDw8IGhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW47
CiAgICAgICAgIGVuY29kZXIgPDwgcG9saWN5QWN0aW9uOwogICAgICAgICBlbmNvZGVyIDw8IG5h
dmlnYXRpb25JRDsKICAgICAgICAgZW5jb2RlciA8PCBkb3dubG9hZElEOwpAQCAtNzAsMTEgKzY2
LDYgQEAgc3RydWN0IFBvbGljeURlY2lzaW9uIHsKICAgICAgICAgZGVjb2RlciA+PiBkZWNvZGVk
SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKICAgICAgICAgaWYgKCFkZWNvZGVkSXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbikKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Ci0gICAgICAgIAotICAgICAgICBPcHRpb25hbDxOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9t
YWluPiBkZWNvZGVkSGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbjsKLSAgICAgICAg
ZGVjb2RlciA+PiBkZWNvZGVkSGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbjsKLSAg
ICAgICAgaWYgKCFkZWNvZGVkSGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbikKLSAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8V2ViQ29y
ZTo6UG9saWN5QWN0aW9uPiBkZWNvZGVkUG9saWN5QWN0aW9uOwogICAgICAgICBkZWNvZGVyID4+
IGRlY29kZWRQb2xpY3lBY3Rpb247CkBAIC0xMDEsNyArOTIsNyBAQCBzdHJ1Y3QgUG9saWN5RGVj
aXNpb24gewogICAgICAgICBpZiAoIXNhbmRib3hFeHRlbnNpb25IYW5kbGUpCiAgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgICAgIHJldHVybiB7eyBXVEZNb3ZlKCpkZWNv
ZGVkSWRlbnRpZmllciksIFdURk1vdmUoKmRlY29kZWRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluKSwgV1RGTW92ZSgqZGVjb2RlZEhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4p
LCBXVEZNb3ZlKCpkZWNvZGVkUG9saWN5QWN0aW9uKSwgV1RGTW92ZSgqZGVjb2RlZE5hdmlnYXRp
b25JRCksIFdURk1vdmUoKmRlY29kZWREb3dubG9hZElEKSwgV1RGTW92ZSgqZGVjb2RlZFdlYnNp
dGVQb2xpY2llc0RhdGEpLCBXVEZNb3ZlKCpzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKX19OworICAg
ICAgICByZXR1cm4ge3sgV1RGTW92ZSgqZGVjb2RlZElkZW50aWZpZXIpLCBXVEZNb3ZlKCpkZWNv
ZGVkSXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiksIFdURk1vdmUoKmRlY29kZWRQb2xpY3lB
Y3Rpb24pLCBXVEZNb3ZlKCpkZWNvZGVkTmF2aWdhdGlvbklEKSwgV1RGTW92ZSgqZGVjb2RlZERv
d25sb2FkSUQpLCBXVEZNb3ZlKCpkZWNvZGVkV2Vic2l0ZVBvbGljaWVzRGF0YSksIFdURk1vdmUo
KnNhbmRib3hFeHRlbnNpb25IYW5kbGUpfX07CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IDNlZjcyN2FiZTRk
NmJkMGYyMWM1Yzk1YzFlMjA0NTdlOTkzNjY1ODguLmFkNDhiY2Q2OTk0NmMzNzQ3YTAyNGQyZDM5
MDVmNDc5ZTMxNzhkZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zp
c2lvbmFsUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNp
b25hbFBhZ2VQcm94eS5jcHAKQEAgLTE1NiwxNCArMTU2LDE0IEBAIHZvaWQgUHJvdmlzaW9uYWxQ
YWdlUHJveHk6OmluaXRpYWxpemVXZWJQYWdlKFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4m
JiB3ZWJzCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZyZWV6ZUxheWVyVHJlZUR1
ZVRvU3dpcGVBbmltYXRpb24oKSk7CiB9CiAKLXZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6Omxv
YWREYXRhKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5n
LCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgT3B0aW9uYWw8
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4s
IE5hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4gaGFzTmF2aWdhdGVkQXdheUZyb21BcHBC
b3VuZERvbWFpbiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNp
ZXMpCit2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkRGF0YShBUEk6Ok5hdmlnYXRpb24m
IG5hdmlnYXRpb24sIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5n
JiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJM
LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBPcHRpb25hbDxXZWJzaXRlUG9saWNp
ZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KFByb2Nlc3NTd2FwcGluZywgImxvYWREYXRhOiBwYWdlUHJveHlJRD0lIiBQUkl1NjQgIiB3ZWJQ
YWdlSUQ9JSIgUFJJdTY0LCBtX3BhZ2UuaWRlbnRpZmllcigpLnRvVUludDY0KCksIG1fd2ViUGFn
ZUlELnRvVUludDY0KCkpOwogCi0gICAgbV9wYWdlLmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFy
ZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIG5hdmlnYXRpb24sIGRhdGEsIE1J
TUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0
QXNDb250aW51aW5nTG9hZDo6WWVzLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBoYXNO
YXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcyks
IG5hdmlnYXRpb24ubGFzdE5hdmlnYXRpb25BY3Rpb24oKS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5KTsKKyAgICBtX3BhZ2UubG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChtX3Byb2Nl
c3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgbmF2aWdhdGlvbiwgZGF0YSwgTUlNRVR5cGUsIGVu
Y29kaW5nLCBiYXNlVVJMLCB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVp
bmdMb2FkOjpZZXMsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFdURk1vdmUod2Vic2l0
ZVBvbGljaWVzKSwgbmF2aWdhdGlvbi5sYXN0TmF2aWdhdGlvbkFjdGlvbigpLnNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3kpOwogfQogCi12b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2Fk
UmVxdWVzdChBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgT3B0aW9uYWw8TmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIE5hdmlnYXRl
ZEF3YXlGcm9tQXBwQm91bmREb21haW4gaGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFp
biwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMpCit2b2lk
IFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChBUEk6Ok5hdmlnYXRpb24mIG5hdmln
YXRpb24sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEFQSTo6T2JqZWN0KiB1
c2VyRGF0YSwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0
ZVBvbGljaWVzKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5n
LCAibG9hZFJlcXVlc3Q6IHBhZ2VQcm94eUlEPSUiIFBSSXU2NCAiIHdlYlBhZ2VJRD0lIiBQUkl1
NjQsIG1fcGFnZS5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgbV93ZWJQYWdlSUQudG9VSW50NjQo
KSk7CiAKQEAgLTE3Myw3ICsxNzMsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2Fk
UmVxdWVzdChBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkNvcmU6OlJlcwogICAgIGlm
IChuYXZpZ2F0aW9uLmZyb21JdGVtKCkgJiYgbmF2aWdhdGlvbi5sb2NrQmFja0ZvcndhcmRMaXN0
KCkgPT0gV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzKQogICAgICAgICBuYXZpZ2F0
aW9uLmZyb21JdGVtKCktPnNldExhc3RQcm9jZXNzSWRlbnRpZmllcihtX3Byb2Nlc3MtPmNvcmVQ
cm9jZXNzSWRlbnRpZmllcigpKTsKIAotICAgIG1fcGFnZS5sb2FkUmVxdWVzdFdpdGhOYXZpZ2F0
aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9uLCBX
VEZNb3ZlKHJlcXVlc3QpLCBuYXZpZ2F0aW9uLmxhc3ROYXZpZ2F0aW9uQWN0aW9uKCkuc2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSwgdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXND
b250aW51aW5nTG9hZDo6WWVzLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBoYXNOYXZp
Z2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOwor
ICAgIG1fcGFnZS5sb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5
UmVmKCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9uLCBXVEZNb3ZlKHJlcXVlc3QpLCBuYXZpZ2F0
aW9uLmxhc3ROYXZpZ2F0aW9uQWN0aW9uKCkuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwg
dXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzLCBpc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOwogfQog
CiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVtKEFQSTo6TmF2
aWdhdGlvbiYgbmF2aWdhdGlvbiwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSwgUmVmUHRy
PEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmIHdlYnNpdGVQb2xpY2llcykKQEAgLTM1Nyw3ICszNTcs
NyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uU3luYyhGcmFtZUlkZW50aWZpZXIgZgogICAgIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0
YSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
blN5bmM6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIGlmICghaXNNYWluRnJhbWUgfHwg
KG1fbWFpbkZyYW1lICYmIG1fbWFpbkZyYW1lLT5mcmFtZUlEKCkgIT0gZnJhbWVJRCkgfHwgbmF2
aWdhdGlvbklEICE9IG1fbmF2aWdhdGlvbklEKSB7Ci0gICAgICAgIHJlcGx5KFBvbGljeURlY2lz
aW9uIHsgaWRlbnRpZmllciwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vLCBOYXZpZ2F0
ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluOjpObywgV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpJZ25v
cmUsIG5hdmlnYXRpb25JRCwgRG93bmxvYWRJRCgpLCBXVEY6Om51bGxvcHQgfSk7CisgICAgICAg
IHJlcGx5KFBvbGljeURlY2lzaW9uIHsgaWRlbnRpZmllciwgV1RGOjpudWxsb3B0LCBXZWJDb3Jl
OjpQb2xpY3lBY3Rpb246Oklnbm9yZSwgbmF2aWdhdGlvbklELCBEb3dubG9hZElEKCksIFdURjo6
bnVsbG9wdCB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKaW5kZXggNDRiZmNiYmRjMmJhMzEwZDA0
ZjU0ZWE0MGM2NDcyZDgzZWUwZDBjMi4uOWQ3MjEzMTM4NzhhMGI0NmQzZDA0NDk1ZDRiYTcxOGVl
ODU4MDNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQ
YWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQ
cm94eS5oCkBAIC05Miw4ICs5Miw4IEBAIHB1YmxpYzoKICAgICBMYXllckhvc3RpbmdDb250ZXh0
SUQgY29udGV4dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9j
b250ZXh0SURGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb247IH0KICNlbmRpZgogCi0gICAgdm9pZCBs
b2FkRGF0YShBUEk6Ok5hdmlnYXRpb24mLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25z
dCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcm
IGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4+LCBOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluLCBPcHRpb25hbDxX
ZWJzaXRlUG9saWNpZXNEYXRhPiYmID0gV1RGOjpudWxsb3B0KTsKLSAgICB2b2lkIGxvYWRSZXF1
ZXN0KEFQSTo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBBUEk6Ok9i
amVjdCogdXNlckRhdGEsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgTmF2
aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0
YT4mJiA9IFdURjo6bnVsbG9wdCk7CisgICAgdm9pZCBsb2FkRGF0YShBUEk6Ok5hdmlnYXRpb24m
LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25z
dCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1
c2VyRGF0YSwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBPcHRpb25hbDxX
ZWJzaXRlUG9saWNpZXNEYXRhPiYmID0gV1RGOjpudWxsb3B0KTsKKyAgICB2b2lkIGxvYWRSZXF1
ZXN0KEFQSTo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBBUEk6Ok9i
amVjdCogdXNlckRhdGEsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgT3B0
aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdURjo6bnVsbG9wdCk7CiAgICAgdm9pZCBn
b1RvQmFja0ZvcndhcmRJdGVtKEFQSTo6TmF2aWdhdGlvbiYsIFdlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0mLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYpOwogICAgIHZvaWQgY2FuY2VsKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDQwOTQ4YzIx
ZTM5YzA4OTQ4ZjI4OWE1NDk2MmYxNTFlZTFiYTY5ZDEuLjk3MGJmZWVhOGU5YjhhYWI0MzlkZDBk
OWE0ZjUzNjY0NDFlZGY4ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcApAQCAtMTI4MCwxMSArMTI4MCwxMSBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQ
YWdlUHJveHk6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNobwogICAg
IGlmIChzaG91bGRGb3JjZUZvcmVncm91bmRQcmlvcml0eUZvckNsaWVudE5hdmlnYXRpb24oKSkK
ICAgICAgICAgbmF2aWdhdGlvbi0+c2V0Q2xpZW50TmF2aWdhdGlvbkFjdGl2aXR5KHByb2Nlc3Mo
KS50aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHkoIkNsaWVudCBuYXZpZ2F0aW9uIl9zKSk7
CiAKLSAgICBsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVm
KCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9uLmdldCgpLCBXVEZNb3ZlKHJlcXVlc3QpLCBzaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCB1c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVp
bmdMb2FkOjpObywgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBoYXNOYXZpZ2F0ZWRB
d2F5RnJvbUFwcEJvdW5kRG9tYWluKCkpOworICAgIGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25T
aGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIG5hdmlnYXRpb24uZ2V0KCks
IFdURk1vdmUocmVxdWVzdCksIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHVzZXJEYXRh
LCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluKCkpOwogICAgIHJldHVybiBuYXZpZ2F0aW9uOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYm
IHByb2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgQVBJOjpOYXZpZ2F0
aW9uJiBuYXZpZ2F0aW9uLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIEFQSTo6T2JqZWN0
KiB1c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250
aW51aW5nTG9hZCwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4sIE5hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4gaGFz
TmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVz
RGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMpCit2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RX
aXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9u
LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgU2hv
dWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0
aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQog
ewogICAgIEFTU0VSVCghbV9pc0Nsb3NlZCk7CiAKQEAgLTEzMDcsNyArMTMwNyw2IEBAIHZvaWQg
V2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYgcHJvY2VzCiAgICAgbG9hZFBhcmFtZXRlcnMubG9ja0JhY2tGb3J3YXJkTGlz
dCA9IG5hdmlnYXRpb24ubG9ja0JhY2tGb3J3YXJkTGlzdCgpOwogICAgIGxvYWRQYXJhbWV0ZXJz
LmNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSA9IG5hdmlnYXRpb24uY2xpZW50UmVkaXJl
Y3RTb3VyY2VGb3JIaXN0b3J5KCk7CiAgICAgbG9hZFBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbiA9IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47Ci0gICAgbG9hZFBh
cmFtZXRlcnMuaGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbiA9IGhhc05hdmlnYXRl
ZEF3YXlGcm9tQXBwQm91bmREb21haW47CiAgICAgbWF5YmVJbml0aWFsaXplU2FuZGJveEV4dGVu
c2lvbkhhbmRsZShwcm9jZXNzLCB1cmwsIG1fcGFnZUxvYWRTdGF0ZS5yZXNvdXJjZURpcmVjdG9y
eVVSTCgpLCBsb2FkUGFyYW1ldGVycy5zYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKIAogICAgIGFk
ZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRlcnMpOwpAQCAtMTQwNCwxMSArMTQw
MywxMSBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWREYXRhKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgYwogICAgIGlmIChzaG91bGRGb3JjZUZvcmVn
cm91bmRQcmlvcml0eUZvckNsaWVudE5hdmlnYXRpb24oKSkKICAgICAgICAgbmF2aWdhdGlvbi0+
c2V0Q2xpZW50TmF2aWdhdGlvbkFjdGl2aXR5KHByb2Nlc3MoKS50aHJvdHRsZXIoKS5mb3JlZ3Jv
dW5kQWN0aXZpdHkoIkNsaWVudCBuYXZpZ2F0aW9uIl9zKSk7CiAKLSAgICBsb2FkRGF0YVdpdGhO
YXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0
aW9uLCBkYXRhLCBNSU1FVHlwZSwgZW5jb2RpbmcsIGJhc2VVUkwsIHVzZXJEYXRhLCBTaG91bGRU
cmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCks
IGhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4oKSwgV1RGOjpudWxsb3B0LCBzaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsKKyAgICBsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hh
cmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9uLCBkYXRhLCBN
SU1FVHlwZSwgZW5jb2RpbmcsIGJhc2VVUkwsIHVzZXJEYXRhLCBTaG91bGRUcmVhdEFzQ29udGlu
dWluZ0xvYWQ6Ok5vLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIFdURjo6bnVsbG9w
dCwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CiAgICAgcmV0dXJuIG5hdmlnYXRpb247
CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJl
ZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2Vi
UGFnZUlELCBBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGlu
ZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFNob3VsZFRy
ZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFs
PE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
LCBOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluIGhhc05hdmlnYXRlZEF3YXlGcm9tQXBw
Qm91bmREb21haW4sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGlj
aWVzLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kpCit2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdl
YlBhZ2VJRCwgQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2Rp
bmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBTaG91bGRU
cmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRpb25h
bDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
biwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMsIFNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkKIHsK
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRGF0YVdpdGhOYXZpZ2F0
aW9uIik7CiAKQEAgLTE0MjksNyArMTQyOCw2IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkRGF0
YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywKICAg
ICBsb2FkUGFyYW1ldGVycy53ZWJzaXRlUG9saWNpZXMgPSBXVEZNb3ZlKHdlYnNpdGVQb2xpY2ll
cyk7CiAgICAgbG9hZFBhcmFtZXRlcnMuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IHNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k7CiAgICAgbG9hZFBhcmFtZXRlcnMuaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbiA9IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47Ci0gICAg
bG9hZFBhcmFtZXRlcnMuaGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbiA9IGhhc05h
dmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW47CiAgICAgYWRkUGxhdGZvcm1Mb2FkUGFyYW1l
dGVycyhsb2FkUGFyYW1ldGVycyk7CiAKICAgICBwcm9jZXNzLT5hc3N1bWVSZWFkQWNjZXNzVG9C
YXNlVVJMKCp0aGlzLCBiYXNlVVJMKTsKQEAgLTMxMzAsOSArMzEyOCwxMCBAQCBib29sIFdlYlBh
Z2VQcm94eTo6c2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbkFuZENoZWNrSWZQZXJtaXR0
ZWQoYm9vbCBpc01haQogICAgICAgICAgICAgbV9jb25maWd1cmF0aW9uLT5zZXRXZWJWaWV3Q2F0
ZWdvcnkoV2ViVmlld0NhdGVnb3J5OjpBcHBCb3VuZERvbWFpbik7CiAgICAgICAgICAgICBtX2lz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6
WWVzOwogICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKG1faGFzRXhlY3V0ZWRBcHBC
b3VuZEJlaGF2aW9yQmVmb3JlTmF2aWdhdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgICAgICBtX2NvbmZpZ3VyYXRpb24tPnNldFdlYlZpZXdDYXRlZ29yeShXZWJW
aWV3Q2F0ZWdvcnk6OkluQXBwQnJvd3Nlcik7CiAgICAgICAgICAgICBtX2lzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4gPSBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm87Ci0gICAgICAg
ICAgICBtX2hhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4gPSBOYXZpZ2F0ZWRBd2F5
RnJvbUFwcEJvdW5kRG9tYWluOjpZZXM7CiAgICAgICAgIH0KICAgICB9CiAjZWxzZQpAQCAtMzI3
NCw3ICszMjczLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbGlj
eURlY2lzaW9uKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEEKIHZvaWQgV2ViUGFnZVByb3h5
OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIEFQSTo6TmF2aWdh
dGlvbiogbmF2aWdhdGlvbiwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmIHdlYnNpdGVQ
b2xpY2llcywgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlciwgT3B0aW9uYWw8U2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBXaWxsQ29udGlu
dWVMb2FkSW5OZXdQcm9jZXNzIHdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3MpCiB7CiAgICAg
aWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7Ci0gICAgICAgIHNlbmRlci0+c2VuZChQb2xpY3lE
ZWNpc2lvbiB7IHNlbmRlci0+aWRlbnRpZmllcigpLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluKCksIGhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4oKSwgUG9saWN5QWN0aW9u
OjpJZ25vcmUsIDAsIERvd25sb2FkSUQoKSwgV1RGOjpudWxsb3B0IH0pOworICAgICAgICBzZW5k
ZXItPnNlbmQoUG9saWN5RGVjaXNpb24geyBzZW5kZXItPmlkZW50aWZpZXIoKSwgaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbigpLCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgRG93bmxvYWRJ
RCgpLCBXVEY6Om51bGxvcHQgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTMzMDEs
NyArMzMwMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKFBv
bGljeUFjdGlvbiBhY3Rpb24sIEFQSTo6TmF2aWdhdGlvbioKICAgICBpZiAod2Vic2l0ZVBvbGlj
aWVzKQogICAgICAgICB3ZWJzaXRlUG9saWNpZXNEYXRhID0gd2Vic2l0ZVBvbGljaWVzLT5kYXRh
KCk7CiAKLSAgICBzZW5kZXItPnNlbmQoUG9saWN5RGVjaXNpb24geyBzZW5kZXItPmlkZW50aWZp
ZXIoKSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBoYXNOYXZpZ2F0ZWRBd2F5RnJv
bUFwcEJvdW5kRG9tYWluKCksIGFjdGlvbiwgbmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5hdmln
YXRpb25JRCgpIDogMCwgZG93bmxvYWRJRCwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXNEYXRhKSwg
V1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSB9KTsKKyAgICBzZW5kZXItPnNlbmQoUG9s
aWN5RGVjaXNpb24geyBzZW5kZXItPmlkZW50aWZpZXIoKSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbigpLCBhY3Rpb24sIG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQo
KSA6IDAsIGRvd25sb2FkSUQsIFdURk1vdmUod2Vic2l0ZVBvbGljaWVzRGF0YSksIFdURk1vdmUo
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSkgfSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb21t
aXRQcm92aXNpb25hbFBhZ2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEm
JiBmcmFtZUluZm8sIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQ
cm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNh
dGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250YWlu
c1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZv
cmNlZEhhc0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQpAQCAtMzM4
Miw5ICszMzgxLDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3
UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIHMKICAgICAgICAgLy8gRklYTUU6
IFdvcmsgb3V0IHRpbWluZyBvZiByZXNwb25kaW5nIHdpdGggdGhlIGxhc3QgcG9saWN5IGRlbGVn
YXRlLCBldGMKICAgICAgICAgQVNTRVJUKCFuYXZpZ2F0aW9uLT5jdXJyZW50UmVxdWVzdCgpLmlz
RW1wdHkoKSk7CiAgICAgICAgIGlmIChhdXRvJiBzdWJzdGl0dXRlRGF0YSA9IG5hdmlnYXRpb24t
PnN1YnN0aXR1dGVEYXRhKCkpCi0gICAgICAgICAgICBtX3Byb3Zpc2lvbmFsUGFnZS0+bG9hZERh
dGEobmF2aWdhdGlvbiwgeyBzdWJzdGl0dXRlRGF0YS0+Y29udGVudC5kYXRhKCksIHN1YnN0aXR1
dGVEYXRhLT5jb250ZW50LnNpemUoKSB9LCBzdWJzdGl0dXRlRGF0YS0+TUlNRVR5cGUsIHN1YnN0
aXR1dGVEYXRhLT5lbmNvZGluZywgc3Vic3RpdHV0ZURhdGEtPmJhc2VVUkwsIHN1YnN0aXR1dGVE
YXRhLT51c2VyRGF0YS5nZXQoKSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBoYXNO
YXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluKCksIFdURk1vdmUod2Vic2l0ZVBvbGljaWVz
RGF0YSkpOworICAgICAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPmxvYWREYXRhKG5hdmlnYXRp
b24sIHsgc3Vic3RpdHV0ZURhdGEtPmNvbnRlbnQuZGF0YSgpLCBzdWJzdGl0dXRlRGF0YS0+Y29u
dGVudC5zaXplKCkgfSwgc3Vic3RpdHV0ZURhdGEtPk1JTUVUeXBlLCBzdWJzdGl0dXRlRGF0YS0+
ZW5jb2RpbmcsIHN1YnN0aXR1dGVEYXRhLT5iYXNlVVJMLCBzdWJzdGl0dXRlRGF0YS0+dXNlckRh
dGEuZ2V0KCksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgV1RGTW92ZSh3ZWJzaXRl
UG9saWNpZXNEYXRhKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcHJvdmlzaW9uYWxQ
YWdlLT5sb2FkUmVxdWVzdChuYXZpZ2F0aW9uLCBSZXNvdXJjZVJlcXVlc3QgeyBuYXZpZ2F0aW9u
LT5jdXJyZW50UmVxdWVzdCgpIH0sIG51bGxwdHIsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4oKSwgaGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbigpLCBXVEZNb3ZlKHdlYnNp
dGVQb2xpY2llc0RhdGEpKTsKKyAgICAgICAgICAgIG1fcHJvdmlzaW9uYWxQYWdlLT5sb2FkUmVx
dWVzdChuYXZpZ2F0aW9uLCBSZXNvdXJjZVJlcXVlc3QgeyBuYXZpZ2F0aW9uLT5jdXJyZW50UmVx
dWVzdCgpIH0sIG51bGxwdHIsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgV1RGTW92
ZSh3ZWJzaXRlUG9saWNpZXNEYXRhKSk7CiAgICAgfTsKICAgICBpZiAobV9pbnNwZWN0b3JDb250
cm9sbGVyLT5zaG91bGRQYXVzZUxvYWRpbmcoKm1fcHJvdmlzaW9uYWxQYWdlKSkKICAgICAgICAg
bV9pbnNwZWN0b3JDb250cm9sbGVyLT5zZXRDb250aW51ZUxvYWRpbmdDYWxsYmFjaygqbV9wcm92
aXNpb25hbFBhZ2UsIFdURk1vdmUoY29udGludWF0aW9uKSk7CkBAIC01MDk4LDcgKzUwOTcsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogCiAgICAgaWYgKCFjaGVja1VSTFJlY2VpdmVkRnJv
bUN1cnJlbnRPclByZXZpb3VzV2ViUHJvY2Vzcyhwcm9jZXNzLCByZXF1ZXN0LnVybCgpKSkgewog
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3MsICJJZ25vcmluZyBy
ZXF1ZXN0IHRvIGxvYWQgdGhpcyBtYWluIHJlc291cmNlIGJlY2F1c2UgaXQgaXMgb3V0c2lkZSB0
aGUgc2FuZGJveCIpOwotICAgICAgICBzZW5kZXItPnNlbmQoUG9saWN5RGVjaXNpb24geyBzZW5k
ZXItPmlkZW50aWZpZXIoKSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBoYXNOYXZp
Z2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluKCksIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCBE
b3dubG9hZElEKCksIFdURjo6bnVsbG9wdCB9KTsKKyAgICAgICAgc2VuZGVyLT5zZW5kKFBvbGlj
eURlY2lzaW9uIHsgc2VuZGVyLT5pZGVudGlmaWVyKCksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4oKSwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIERvd25sb2FkSUQoKSwgV1RGOjpudWxs
b3B0IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01MTcyLDkgKzUxNzEsOSBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogICAgICAgICAKICAgICAgICAgaWYgKHBvbGljeUFjdGlv
biAhPSBQb2xpY3lBY3Rpb246Oklnbm9yZSkgewogICAgICAgICAgICAgaWYgKCFzZXRJc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluQW5kQ2hlY2tJZlBlcm1pdHRlZChmcmFtZS0+aXNNYWluRnJh
bWUoKSwgbmF2aWdhdGlvbi0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgaXNBcHBCb3VuZERvbWFp
bikpIHsKLSAgICAgICAgICAgICAgICBhdXRvIGVycm9yID0gUmVzb3VyY2VFcnJvciB7IFN0cmlu
ZyB7IH0sIDAsIG5hdmlnYXRpb24tPmN1cnJlbnRSZXF1ZXN0KCkudXJsKCksICJBdHRlbXB0ZWQg
bmF2aWdhdGlvbiBhd2F5IGZyb20gYXBwLWJvdW5kIGRvbWFpbiJfcyB9OworICAgICAgICAgICAg
ICAgIGF1dG8gZXJyb3IgPSBSZXNvdXJjZUVycm9yIHsgU3RyaW5nIHsgfSwgMCwgbmF2aWdhdGlv
bi0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgIkFwcC1ib3VuZCBkb21haW4gZmFpbHVyZSJfcyB9
OwogICAgICAgICAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkRmFpbFByb3Zpc2lvbmFs
TmF2aWdhdGlvbldpdGhFcnJvcigqdGhpcywgRnJhbWVJbmZvRGF0YSB7IGZyYW1lSW5mbyB9LCBu
YXZpZ2F0aW9uLmdldCgpLCBlcnJvciwgdXNlckRhdGFPYmplY3QpOwotICAgICAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoTG9hZGluZywgIklnbm9yaW5nIHJlcXVlc3Qg
dG8gbG9hZCB0aGlzIG1haW4gcmVzb3VyY2UgYmVjYXVzZSBpdCBpcyBhdHRlbXB0aW5nIHRvIG5h
dmlnYXRlIGF3YXkgZnJvbSBhbiBhcHAtYm91bmQgZG9tYWluIik7CisgICAgICAgICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChMb2FkaW5nLCAiSWdub3JpbmcgcmVxdWVzdCB0
byBsb2FkIHRoaXMgbWFpbiByZXNvdXJjZSBiZWNhdXNlIGl0IGlzIGF0dGVtcHRpbmcgdG8gbmF2
aWdhdGUgYXdheSBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4gb3IgbmF2aWdhdGUgYWZ0ZXIgdXNp
bmcgcmVzdHJpY3RlZCBBUElzIik7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
UG9saWN5QWN0aW9uOjpJZ25vcmUpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIH0KQEAgLTUzNDYsNyArNTM0NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luY1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5CiAgICAg
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXVEZNb3ZlKHByb2Nlc3MpLCAqZnJhbWUs
IFdURk1vdmUoZnJhbWVJbmZvKSwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rp
b25EYXRhKSwgV1RGTW92ZShvcmlnaW5hdGluZ0ZyYW1lSW5mbyksIG9yaWdpbmF0aW5nUGFnZUlE
LCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVxdWVzdEJvZHkp
LCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCB1c2VyRGF0YSwgc2VuZGVyLmNvcHlSZWYoKSk7
CiAKICAgICAvLyBJZiB0aGUgY2xpZW50IGRpZCBub3QgcmVzcG9uZCBzeW5jaHJvbm91c2x5LCBw
cm9jZWVkIHdpdGggdGhlIGxvYWQuCi0gICAgc2VuZGVyLT5zZW5kKFBvbGljeURlY2lzaW9uIHsg
c2VuZGVyLT5pZGVudGlmaWVyKCksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgaGFz
TmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbigpLCBQb2xpY3lBY3Rpb246OlVzZSwgbmF2
aWdhdGlvbklELCBEb3dubG9hZElEKCksIFdURjo6bnVsbG9wdCB9KTsKKyAgICBzZW5kZXItPnNl
bmQoUG9saWN5RGVjaXNpb24geyBzZW5kZXItPmlkZW50aWZpZXIoKSwgaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbigpLCBQb2xpY3lBY3Rpb246OlVzZSwgbmF2aWdhdGlvbklELCBEb3dubG9h
ZElEKCksIFdURjo6bnVsbG9wdCB9KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBv
bGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZv
RGF0YSYmIGZyYW1lSW5mbywgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIE5hdmln
YXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBj
b25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCmluZGV4IDAxNzg3ODFlNzc2NmM4NGFjOGI1NjA3ZDZjNDNlNGM3YTY1MjkwNmEuLjc2OThl
NmEwMzc4M2IyNzFiM2EzODUwOWM4Y2MwZjE0ODVlNDk5OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xNjUwLDggKzE2NTAsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQoUmVmPFdlYlByb2Nl
c3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0
YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvLCBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVy
PiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmln
aW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVm
ZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVj
dFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIHVpbnQ2NF90IGxpc3RlbmVySUQpOwogICAgIHZv
aWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJ
bmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRv
d25sb2FkQXR0cmlidXRlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwog
ICAgIHZvaWQgc3RhcnRVUkxTY2hlbWVUYXNrU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBVUkxTY2hlbWVUYXNrUGFyYW1ldGVycyYmKTsKLSAg
ICB2b2lkIGxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4m
JiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYsIGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5j
b2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJD
b3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluPiwgTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbiwgT3B0aW9uYWw8
V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdURjo6bnVsbG9wdCwgV2ViQ29yZTo6U2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSA9IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3k6OlNob3VsZE5vdEFsbG93KTsKLSAgICB2b2lkIGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25T
aGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEFQ
STo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6
OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4+LCBOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluLCBPcHRpb25hbDxXZWJz
aXRlUG9saWNpZXNEYXRhPiYmID0gV1RGOjpudWxsb3B0KTsKKyAgICB2b2lkIGxvYWREYXRhV2l0
aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNv
bnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmlu
ZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFz
Q29udGludWluZ0xvYWQsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgT3B0
aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdURjo6bnVsbG9wdCwgV2ViQ29yZTo6U2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsKKyAgICB2b2lkIGxvYWRSZXF1ZXN0V2l0aE5hdmln
YXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIEFQSTo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3Jl
OjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdl
YkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8TmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4+LCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmID0gV1RGOjpu
dWxsb3B0KTsKICAgICB2b2lkIGJhY2tGb3J3YXJkR29Ub0l0ZW1TaGFyZWQoUmVmPFdlYlByb2Nl
c3NQcm94eT4mJiwgY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzJik+JiYp
OwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNTaGFyZWQoUmVm
PFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBib29sIGlzTWFp
bkZyYW1lLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9E
YXRhJiYgb3JpZ2luYXRpbmdGcmFtZUluZm8sIE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9y
aWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFS
ZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGly
ZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNEZWxheWVkUmVwbHkmJik7CiAjaWYgVVNF
KFFVSUNLX0xPT0spCkBAIC0xNzYzLDYgKzE3NjMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1v
dmVNZWRpYVVzYWdlTWFuYWdlclNlc3Npb24oV2ViQ29yZTo6TWVkaWFTZXNzaW9uSWRlbnRpZmll
cik7CiAjZW5kaWYKIAorICAgIHZvaWQgc2V0SGFzRXhlY3V0ZWRBcHBCb3VuZEJlaGF2aW9yQmVm
b3JlTmF2aWdhdGlvbigpIHsgbV9oYXNFeGVjdXRlZEFwcEJvdW5kQmVoYXZpb3JCZWZvcmVOYXZp
Z2F0aW9uID0gdHJ1ZTsgfQorICAgICAgICAKIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KFBh
Z2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4m
Jik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKQEAgLTIzMTcsNyArMjMxOSw2IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBtYWtlU3RvcmFnZVNwYWNlUmVxdWVzdChXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVpbnQ2NF90IGN1cnJl
bnRRdW90YSwgdWludDY0X3QgY3VycmVudE9yaWdpblVzYWdlLCB1aW50NjRfdCBjdXJyZW50RGF0
YWJhc2VVc2FnZSwgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCh1aW50NjRfdCk+JiYpOwogICAgICAgICAKICAgICBib29sIHNldElzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW5BbmRDaGVja0lmUGVybWl0dGVkKGJvb2wgaXNNYWluRnJhbWUsIGNvbnN0IFVS
TCYsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPik7Ci0gICAgTmF2aWdhdGVk
QXdheUZyb21BcHBCb3VuZERvbWFpbiBoYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWlu
KCkgY29uc3QgeyByZXR1cm4gbV9oYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluOyB9
CiAgICAgICAgIAogICAgIGNvbnN0IElkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIG1fd2ViUGFnZUlEOwpAQCAtMjgxMSwxMSArMjgxMiwxMSBAQCBw
cml2YXRlOgogICAgIE1vbm90b25pY1RpbWUgbV9kaWRGaW5pc2hEb2N1bWVudExvYWRGb3JNYWlu
RnJhbWVUaW1lc3RhbXA7CiAjZW5kaWYKICAgICAgICAgCi0gICAgT3B0aW9uYWw8TmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4+IG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiB7IE5hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObyB9OwotICAgIE5hdmlnYXRlZEF3YXlGcm9tQXBwQm91
bmREb21haW4gbV9oYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluIHsgTmF2aWdhdGVk
QXdheUZyb21BcHBCb3VuZERvbWFpbjo6Tm8gfTsKKyAgICBPcHRpb25hbDxOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbj4gbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIHsgV1RGOjpudWxs
b3B0IH07CiAgICAgYm9vbCBtX2lnbm9yZXNBcHBCb3VuZERvbWFpbnMgeyBmYWxzZSB9OwogICAg
IGJvb2wgbV91c2VyU2NyaXB0c05vdGlmaWVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fbGltaXRz
TmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc0V4
ZWN1dGVkQXBwQm91bmRCZWhhdmlvckJlZm9yZU5hdmlnYXRpb24geyBmYWxzZSB9OwogCiAjaWYg
RU5BQkxFKFJPVVRJTkdfQVJCSVRSQVRJT04pCiAgICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvU2Vz
c2lvblJvdXRpbmdBcmJpdHJhdG9yUHJveHk+IG1fcm91dGluZ0FyYml0cmF0b3I7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZDEy
MDIxMTUyMWYwNjExOTE5NWQ5ZGM3OGM4ZjQ3ZWRkNjhkZGNkZS4uNzNmOTMyMTZiNGE0MWVjZmJh
YjdiZTI1NDEyOWM4NWM3NzI4ZjE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtNTk5LDQgKzU5OSw1IEBAIG1lc3NhZ2VzIC0+
IFdlYlBhZ2VQcm94eSB7CiAgICAgUmVtb3ZlTWVkaWFVc2FnZU1hbmFnZXJTZXNzaW9uKFdlYkNv
cmU6Ok1lZGlhU2Vzc2lvbklkZW50aWZpZXIgaWRlbnRpZmllcik7CiAjZW5kaWYKIAorICAgIFNl
dEhhc0V4ZWN1dGVkQXBwQm91bmRCZWhhdmlvckJlZm9yZU5hdmlnYXRpb24oKQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggZTQ2ZGEwZTBhNTgwNzkxMGY0ZTRkMmY2ZmM0
ZTkzMTg1MDU2N2FmYS4uZTQ3YWUzMDI1MjBkNmVmMTA2YmUxNDhiODRmNjFjZjYwNzEyOTQxMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC04MzAsNyArODMwLDcgQEAgdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlc3BvbnMKICAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFtZS0+
c2V0VXBQb2xpY3lMaXN0ZW5lcihpZGVudGlmaWVyLCBXVEZNb3ZlKGZ1bmN0aW9uKSwgV2ViRnJh
bWU6OkZvck5hdmlnYXRpb25BY3Rpb246Ok5vKTsKICAgICBpZiAoIXdlYlBhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UobV9mcmFtZS0+ZnJh
bWVJRCgpLCBtX2ZyYW1lLT5pbmZvKCksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgcmVzcG9u
c2UsIHJlcXVlc3QsIGNhblNob3dSZXNwb25zZSwgZG93bmxvYWRBdHRyaWJ1dGUsIGxpc3RlbmVy
SUQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hh
bmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpKSB7CiAgICAgICAgIFdFQkZSQU1FTE9BREVS
Q0xJRU5UX1JFTEVBU0VfTE9HKE5ldHdvcmssICJkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3Bv
bnNlOiBpZ25vcmluZyBiZWNhdXNlIFdlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UgZmFpbGVkIik7Ci0gICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihs
aXN0ZW5lcklELCBQb2xpY3lEZWNpc2lvbiB7IGlkZW50aWZpZXIsIE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluOjpObywgTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbjo6Tm8sIFBvbGlj
eUFjdGlvbjo6SWdub3JlLCAwLCB7IH0sIHsgfSB9KTsKKyAgICAgICAgbV9mcmFtZS0+ZGlkUmVj
ZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9uIHsgaWRlbnRpZmll
ciwgV1RGOjpudWxsb3B0LCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgeyB9LCB7IH0gfSk7CiAg
ICAgfQogfQogCkBAIC05OTIsMTcgKzk5MiwxNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdAog
ICAgICAgICBQb2xpY3lEZWNpc2lvbiBwb2xpY3lEZWNpc2lvbjsKIAogICAgICAgICBpZiAoIXdl
YlBhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb25TeW5jKG1fZnJhbWUtPmZyYW1lSUQoKSwgbV9mcmFtZS0+aXNNYWluRnJh
bWUoKSwgbV9mcmFtZS0+aW5mbygpLCByZXF1ZXN0SWRlbnRpZmllciwgZG9jdW1lbnRMb2FkZXIt
Pm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgb3JpZ2luYXRpbmdGcmFtZUlu
Zm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCwgbmF2aWdhdGlvbkFjdGlvbi5yZXNvdXJjZVJlcXVl
c3QoKSwgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSB7IHJlcXVlc3QuaHR0cEJvZHko
KSB9LCByZWRpcmVjdFJlc3BvbnNlLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50
cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpLCBNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6UmVw
bHkocG9saWN5RGVjaXNpb24pKSkgewotICAgICAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBv
bGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9uIHsgcmVxdWVzdElkZW50aWZp
ZXIsIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObywgTmF2aWdhdGVkQXdheUZyb21BcHBC
b3VuZERvbWFpbjo6Tm8sIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCB7IH0sIHsgfSB9KTsKKyAg
ICAgICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBQ
b2xpY3lEZWNpc2lvbiB7IHJlcXVlc3RJZGVudGlmaWVyLCBXVEY6Om51bGxvcHQsIFBvbGljeUFj
dGlvbjo6SWdub3JlLCAwLCB7IH0sIHsgfSB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0gICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5l
cklELCBQb2xpY3lEZWNpc2lvbiB7IHBvbGljeURlY2lzaW9uLmlkZW50aWZpZXIsIHBvbGljeURl
Y2lzaW9uLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIHBvbGljeURlY2lzaW9uLmhhc05h
dmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4sIHBvbGljeURlY2lzaW9uLnBvbGljeUFjdGlv
biwgMCwgcG9saWN5RGVjaXNpb24uZG93bmxvYWRJRCwgeyB9fSk7CisgICAgICAgIG1fZnJhbWUt
PmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBQb2xpY3lEZWNpc2lvbiB7IHBv
bGljeURlY2lzaW9uLmlkZW50aWZpZXIsIHBvbGljeURlY2lzaW9uLmlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4sIHBvbGljeURlY2lzaW9uLnBvbGljeUFjdGlvbiwgMCwgcG9saWN5RGVjaXNp
b24uZG93bmxvYWRJRCwgeyB9fSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBBU1NF
UlQocG9saWN5RGVjaXNpb25Nb2RlID09IFBvbGljeURlY2lzaW9uTW9kZTo6QXN5bmNocm9ub3Vz
KTsKICAgICBpZiAoIXdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKG1fZnJhbWUtPmZyYW1lSUQoKSwgbV9mcmFt
ZS0+aW5mbygpLCByZXF1ZXN0SWRlbnRpZmllciwgZG9jdW1lbnRMb2FkZXItPm5hdmlnYXRpb25J
RCgpLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBvcmln
aW5hdGluZ1BhZ2VJRCwgbmF2aWdhdGlvbkFjdGlvbi5yZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVz
dCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSB7IHJlcXVlc3QuaHR0cEJvZHkoKSB9LCByZWRpcmVj
dFJlc3BvbnNlLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmpl
Y3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSksIGxpc3RlbmVySUQpKSkKLSAgICAg
ICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFBvbGljeURl
Y2lzaW9uIHsgcmVxdWVzdElkZW50aWZpZXIsIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpO
bywgTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbjo6Tm8sIFBvbGljeUFjdGlvbjo6SWdu
b3JlLCAwLCB7IH0sIHsgfSB9KTsKKyAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURl
Y2lzaW9uKGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9uIHsgcmVxdWVzdElkZW50aWZpZXIsIFdU
Rjo6bnVsbG9wdCwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSwgeyB9IH0pOwogfQogCiB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5jZWxQb2xpY3lDaGVjaygpCkBAIC0xOTIxLDcg
KzE5MjEsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmdBcHBs
aWNhdGlvbk1hbmlmZXN0KHVpbnQ2NF90IGNhbGxiYWNrSQogfQogI2VuZGlmIC8vIEVOQUJMRShB
UFBMSUNBVElPTl9NQU5JRkVTVCkKIAotYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6aGFzTmF2
aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbigpCitib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpzaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKQogewogICAgIGlm
ICghbV9mcmFtZS0+aXNNYWluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTky
OSwyMCArMTkyOSwxMCBAQCBib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpoYXNOYXZpZ2F0ZWRB
d2F5RnJvbUFwcEJvdW5kRG9tYWluKCkKICAgICBhdXRvKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFn
ZSgpOwogICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAg
IHJldHVybiB3ZWJQYWdlLT5oYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluKCkgPT0g
TmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbjo6WWVzOwotfQogCi1ib29sIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpuZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3MoKSBjb25zdAotewot
ICAgIGF1dG8qIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7Ci0gICAgaWYgKCF3ZWJQYWdlKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgcmV0dXJuIHdlYlBhZ2UtPm5lZWRzSW5B
cHBCcm93c2VyUHJpdmFjeVF1aXJrcygpOworICAgIHJldHVybiB3ZWJQYWdlLT5zaG91bGRFbmFi
bGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKTsKIH0KIAotCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIAogI3VuZGVmIFBSRUZJWF9QQVJBTUVURVJTCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oCmluZGV4IDBmOGViMDkzZmY3NmU1NzczNDA1NmU2M2NlMzc2N2IyZWY2NzA5ZTAuLmZh
NGMwYjg4YzkxYTZiNmYyNzA3YzQwYWU3NTI1YWE4MDE2MTRmZDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oCkBAIC0yODgsOCArMjg4LDcgQEAgcHJpdmF0ZToKICAgICBPcHRpb25hbDxG
cmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXI+IG1fZnJhbWVTcGVjaWZpY1N0b3Jh
Z2VBY2Nlc3NJZGVudGlmaWVyOwogI2VuZGlmCiAKLSAgICBib29sIGhhc05hdmlnYXRlZEF3YXlG
cm9tQXBwQm91bmREb21haW4oKSBmaW5hbDsKLSAgICBib29sIG5lZWRzSW5BcHBCcm93c2VyUHJp
dmFjeVF1aXJrcygpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgc2hvdWxkRW5hYmxlSW5BcHBCcm93
c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkgZmluYWw7CiB9OwogCiAvLyBBcyBsb25nIGFzIEVtcHR5
RnJhbWVMb2FkZXJDbGllbnQgZXhpc3RzIGluIFdlYkNvcmUsIHRoaXMgY2FuIHJldHVybiAwLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAxN2Vh
YzQxN2UyY2NjZjU1MTZlZjUxNWM0YzI5MTgxYmIyOWE4MTM5Li5lZTgxODYzOGJiMjE2MGJmZmRl
YzM3Yzc0NWY1MDUzZjgzZDBlYmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcApAQCAtNDc1LDcgKzQ3NSw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFn
ZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVy
cykKICNlbmRpZgogICAgICwgbV9vdmVycmlkZGVuTWVkaWFUeXBlKHBhcmFtZXRlcnMub3ZlcnJp
ZGRlbk1lZGlhVHlwZSkKICAgICAsIG1fcHJvY2Vzc0Rpc3BsYXlOYW1lKHBhcmFtZXRlcnMucHJv
Y2Vzc0Rpc3BsYXlOYW1lKQotICAgICwgbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKHBh
cmFtZXRlcnMubGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyA/IE5hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluOjpZZXMgOiBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm8pCisg
ICAgLCBtX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMocGFyYW1ldGVycy5saW1p
dHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKQogewogICAgIEFTU0VSVChtX2lkZW50aWZp
ZXIpOwogCkBAIC0xNTI3LDcgKzE1MjcsNiBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRGlkUmVj
ZWl2ZUxvYWRQYXJhbWV0ZXJzKGNvbnN0IExvYWRQYXJhbWV0ZXJzJiBsb2FkUGFyYW1ldAogdm9p
ZCBXZWJQYWdlOjpsb2FkUmVxdWVzdChMb2FkUGFyYW1ldGVycyYmIGxvYWRQYXJhbWV0ZXJzKQog
ewogICAgIHNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4obG9hZFBhcmFtZXRlcnMuaXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik7Ci0gICAgc2V0SGFzTmF2aWdhdGVkQXdheUZyb21B
cHBCb3VuZERvbWFpbihsb2FkUGFyYW1ldGVycy5oYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5k
RG9tYWluKTsKIAogICAgIFNlbmRTdG9wUmVzcG9uc2l2ZW5lc3NUaW1lciBzdG9wcGVyOwogCkBA
IC0xNTYzLDEwICsxNTYyLDkgQEAgTk9fUkVUVVJOIHZvaWQgV2ViUGFnZTo6bG9hZFJlcXVlc3RX
YWl0aW5nRm9yUHJvY2Vzc0xhdW5jaChMb2FkUGFyYW1ldGVycyYmLCBVUkwKICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFdlYlBhZ2U6OmxvYWREYXRhSW1wbCh1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBP
cHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcywgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0
cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFVSTCYgdW5yZWFj
aGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgT3B0aW9uYWw8TmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIE5hdmlnYXRlZEF3
YXlGcm9tQXBwQm91bmREb21haW4gaGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbiwg
U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
KQordm9pZCBXZWJQYWdlOjpsb2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklELCBib29s
IHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0
YT4mJiB3ZWJzaXRlUG9saWNpZXMsIFJlZjxTaGFyZWRCdWZmZXI+JiYgc2hhcmVkQnVmZmVyLCBj
b25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3Qg
VVJMJiBiYXNlVVJMLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYg
dXNlckRhdGEsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3kpCiB7CiAgICAgc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbihpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKLSAgICBzZXRIYXNOYXZpZ2F0ZWRB
d2F5RnJvbUFwcEJvdW5kRG9tYWluKGhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4p
OwogCiAgICAgU2VuZFN0b3BSZXNwb25zaXZlbmVzc1RpbWVyIHN0b3BwZXI7CiAKQEAgLTE1OTUs
NyArMTU5Myw3IEBAIHZvaWQgV2ViUGFnZTo6bG9hZERhdGEoTG9hZFBhcmFtZXRlcnMmJiBsb2Fk
UGFyYW1ldGVycykKIAogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obG9hZFBhcmFtZXRlcnMuZGF0YS5kYXRh
KCkpLCBsb2FkUGFyYW1ldGVycy5kYXRhLnNpemUoKSk7CiAgICAgVVJMIGJhc2VVUkwgPSBsb2Fk
UGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nLmlzRW1wdHkoKSA/IGFib3V0QmxhbmtVUkwoKSA6IFVS
TChVUkwoKSwgbG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0cmluZyk7Ci0gICAgbG9hZERhdGFJbXBs
KGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRCwgbG9hZFBhcmFtZXRlcnMuc2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkLCBXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzLndlYnNpdGVQb2xpY2llcyks
IFdURk1vdmUoc2hhcmVkQnVmZmVyKSwgbG9hZFBhcmFtZXRlcnMuTUlNRVR5cGUsIGxvYWRQYXJh
bWV0ZXJzLmVuY29kaW5nTmFtZSwgYmFzZVVSTCwgVVJMKCksIGxvYWRQYXJhbWV0ZXJzLnVzZXJE
YXRhLCBsb2FkUGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBsb2FkUGFy
YW1ldGVycy5oYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluLCBsb2FkUGFyYW1ldGVy
cy5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsKKyAgICBsb2FkRGF0YUltcGwobG9hZFBh
cmFtZXRlcnMubmF2aWdhdGlvbklELCBsb2FkUGFyYW1ldGVycy5zaG91bGRUcmVhdEFzQ29udGlu
dWluZ0xvYWQsIFdURk1vdmUobG9hZFBhcmFtZXRlcnMud2Vic2l0ZVBvbGljaWVzKSwgV1RGTW92
ZShzaGFyZWRCdWZmZXIpLCBsb2FkUGFyYW1ldGVycy5NSU1FVHlwZSwgbG9hZFBhcmFtZXRlcnMu
ZW5jb2RpbmdOYW1lLCBiYXNlVVJMLCBVUkwoKSwgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEsIGxv
YWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIGxvYWRQYXJhbWV0ZXJz
LnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmxvYWRB
bHRlcm5hdGVIVE1MKExvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMpCkBAIC0xNjA3LDcg
KzE2MDUsNyBAQCB2b2lkIFdlYlBhZ2U6OmxvYWRBbHRlcm5hdGVIVE1MKExvYWRQYXJhbWV0ZXJz
JiYgbG9hZFBhcmFtZXRlcnMpCiAgICAgVVJMIHByb3Zpc2lvbmFsTG9hZEVycm9yVVJMID0gbG9h
ZFBhcmFtZXRlcnMucHJvdmlzaW9uYWxMb2FkRXJyb3JVUkxTdHJpbmcuaXNFbXB0eSgpID8gVVJM
KCkgOiBVUkwoVVJMKCksIGxvYWRQYXJhbWV0ZXJzLnByb3Zpc2lvbmFsTG9hZEVycm9yVVJMU3Ry
aW5nKTsKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGxvYWRQYXJhbWV0ZXJzLmRhdGEuZGF0YSgpKSwgbG9h
ZFBhcmFtZXRlcnMuZGF0YS5zaXplKCkpOwogICAgIG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+
bG9hZGVyKCkuc2V0UHJvdmlzaW9uYWxMb2FkRXJyb3JCZWluZ0hhbmRsZWRVUkwocHJvdmlzaW9u
YWxMb2FkRXJyb3JVUkwpOyAgICAKLSAgICBsb2FkRGF0YUltcGwobG9hZFBhcmFtZXRlcnMubmF2
aWdhdGlvbklELCBsb2FkUGFyYW1ldGVycy5zaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIFdU
Rk1vdmUobG9hZFBhcmFtZXRlcnMud2Vic2l0ZVBvbGljaWVzKSwgV1RGTW92ZShzaGFyZWRCdWZm
ZXIpLCBsb2FkUGFyYW1ldGVycy5NSU1FVHlwZSwgbG9hZFBhcmFtZXRlcnMuZW5jb2RpbmdOYW1l
LCBiYXNlVVJMLCB1bnJlYWNoYWJsZVVSTCwgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEsIGxvYWRQ
YXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIGxvYWRQYXJhbWV0ZXJzLmhh
c05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4pOworICAgIGxvYWREYXRhSW1wbChsb2Fk
UGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQsIGxvYWRQYXJhbWV0ZXJzLnNob3VsZFRyZWF0QXNDb250
aW51aW5nTG9hZCwgV1RGTW92ZShsb2FkUGFyYW1ldGVycy53ZWJzaXRlUG9saWNpZXMpLCBXVEZN
b3ZlKHNoYXJlZEJ1ZmZlciksIGxvYWRQYXJhbWV0ZXJzLk1JTUVUeXBlLCBsb2FkUGFyYW1ldGVy
cy5lbmNvZGluZ05hbWUsIGJhc2VVUkwsIHVucmVhY2hhYmxlVVJMLCBsb2FkUGFyYW1ldGVycy51
c2VyRGF0YSwgbG9hZFBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik7CiAg
ICAgbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5zZXRQcm92aXNpb25hbExvYWRF
cnJvckJlaW5nSGFuZGxlZFVSTCh7IH0pOwogfQogCkBAIC0zMjUzLDcgKzMyNTEsNiBAQCB2b2lk
IFdlYlBhZ2U6OnNldExheWVySG9zdGluZ01vZGUoTGF5ZXJIb3N0aW5nTW9kZSBsYXllckhvc3Rp
bmdNb2RlKQogdm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9uJiYgcG9s
aWN5RGVjaXNpb24pCiB7CiAgICAgc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihwb2xp
Y3lEZWNpc2lvbi5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKLSAgICBzZXRIYXNOYXZp
Z2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluKHBvbGljeURlY2lzaW9uLmhhc05hdmlnYXRlZEF3
YXlGcm9tQXBwQm91bmREb21haW4pOwogCiAgICAgV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgaWYgKCFmcmFtZSkKQEAgLTM0
MjYsOCArMzQyMyw3IEBAIHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdChXZWJGcmFtZSogZnJh
bWUsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVyCiAKICAgICAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTY3JpcHRWYWx1ZUNhbGxiYWNrKGRhdGFSZWZlcmVuY2Us
IGRldGFpbHMsIGNhbGxiYWNrSUQpKTsKICAgICB9OwotICAgIAotICAgIGlmIChoYXNOYXZpZ2F0
ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluKCkgPT0gTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERv
bWFpbjo6WWVzICYmICFtX25lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcykgeworICAgIGlm
IChzaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKSkgewogICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soeyB9LCBF
eGNlcHRpb25EZXRhaWxzIHsgIlVuYWJsZSB0byBleGVjdXRlIEphdmFTY3JpcHQiX3MgfSwgY2Fs
bGJhY2tJRCkpOwogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBtX3BhZ2UtPm1haW5GcmFt
ZSgpLmRvY3VtZW50KCkpCiAgICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5n
IHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIik7CkBAIC0z
NjgzLDggKzM2NzksOCBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdl
YlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogICAgICAgICBkaXNhYmxlU2VydmljZVdvcmtlckVu
dGl0bGVtZW50KCk7CiAKICAgICBpZiAoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZl
cmVuY2VzS2V5OjpzZXJ2aWNlV29ya2Vyc0VuYWJsZWRLZXkoKSkpIHsKLSAgICAgICAgQVNTRVJU
KHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoKSB8fCBtX2lzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4pOwotICAgICAgICBpZiAoIXBhcmVudFByb2Nlc3NIYXNTZXJ2
aWNlV29ya2VyRW50aXRsZW1lbnQoKSAmJiAhbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
KQorICAgICAgICBBU1NFUlQocGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVu
dCgpIHx8IG1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyk7CisgICAgICAgIGlm
ICghcGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpICYmICFtX2xpbWl0
c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMpCiAgICAgICAgICAgICBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldFNlcnZpY2VXb3JrZXJFbmFibGVkKGZhbHNl
KTsKICAgICB9CiAjZW5kaWYKQEAgLTcxMDIsNiArNzA5OCwyNiBAQCB2b2lkIFdlYlBhZ2U6OmFu
aW1hdGlvbkRpZEZpbmlzaEZvckVsZW1lbnQoY29uc3QgV2ViQ29yZTo6RWxlbWVudCYpCiAKICNl
bmRpZgogCit2b2lkIFdlYlBhZ2U6OnNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oT3B0
aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4pCit7CisgICAgbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0gaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbjsKKyAgICAKKyAgICBpZiAoIW1fbmF2aWdhdGlvbkhhc09jY3Vy
ZWQpCisgICAgICAgIG1fbmF2aWdhdGlvbkhhc09jY3VyZWQgPSB0cnVlOworfQorCitib29sIFdl
YlBhZ2U6OnNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpCit7Cisg
ICAgaWYgKG1fbmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBhdXRvIHNob3VsZEVuYWJsZSA9IGlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4oKSAmJiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCkgPT0gTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW46Ok5vOworICAgIGlmICghbV9uYXZpZ2F0aW9uSGFzT2NjdXJlZCAmJiAh
bV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKQorICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlNldEhhc0V4ZWN1dGVkQXBwQm91bmRCZWhhdmlvckJlZm9yZU5h
dmlnYXRpb24oKSk7CisKKyAgICByZXR1cm4gc2hvdWxkRW5hYmxlOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAogI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAzZGRhYjlhNjJiZGVmNjYxMWY2
MjQ1ZDk4YzlmYTFlNzQwNGI5NzFkLi4zODU5NTI3ZWY5MDEwOGNkODZmZGMxYjczZTdkYjVjZDFk
MmM1MGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBA
IC0xMzE1LDExICsxMzE1LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBnZXRBbGxGcmFtZXMoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChGcmFtZVRyZWVOb2RlRGF0YSYmKT4mJik7CiAKLSAgICB2b2lk
IHNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pIHsgbV9pc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluID0gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsgfQorICAg
IGJvb2wgc2hvdWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCk7CisgICAg
dm9pZCBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKE9wdGlvbmFsPE5hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluPik7CiAgICAgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSBjb25zdCB7IHJldHVybiBtX2lzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW47IH0KLSAgICBOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5k
RG9tYWluIGhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4oKSBjb25zdCB7IHJldHVy
biBtX2hhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW47IH0KLSAgICB2b2lkIHNldEhh
c05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4oTmF2aWdhdGVkQXdheUZyb21BcHBCb3Vu
ZERvbWFpbiBuYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluKSB7IG1faGFzTmF2aWdhdGVk
QXdheUZyb21BcHBCb3VuZERvbWFpbiA9IG5hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW47
IH0KLSAgICBib29sIG5lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcygpIGNvbnN0IHsgcmV0
dXJuIG1fbmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzOyB9CiAgICAgCiAgICAgYm9vbCBz
aG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3IoV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZSk7CiAK
QEAgLTE0MTksNyArMTQxNyw3IEBAIHByaXZhdGU6CiAKICAgICBTdHJpbmcgc291cmNlRm9yRnJh
bWUoV2ViRnJhbWUqKTsKIAotICAgIHZvaWQgbG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgYm9vbCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVQ
b2xpY2llc0RhdGE+JiYsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmlu
ZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIGJhc2VV
UkwsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgVXNlckRhdGEmLCBPcHRpb25hbDxOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIE5hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4s
IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7CisgICAgdm9pZCBsb2FkRGF0
YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklELCBib29sIHNob3VsZFRyZWF0QXNDb250aW51aW5n
TG9hZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiwgUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGlu
Z05hbWUsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBV
c2VyRGF0YSYsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgV2ViQ29yZTo6
U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsKIAogICAgIC8vIEFjdGlvbnMKICAgICB2b2lk
IHRyeUNsb3NlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwpAQCAtMjEwNCw4ICsy
MTAyLDkgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV90aGVtZU5hbWU7CiAjZW5kaWYKICAgICAK
LSAgICBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gbV9pc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluIHsgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vIH07Ci0gICAg
TmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbiBtX2hhc05hdmlnYXRlZEF3YXlGcm9tQXBw
Qm91bmREb21haW4geyBOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluOjpObyB9OworICAg
IE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBtX2lzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4geyBXVEY6Om51bGxvcHQgfTsKKyAgICBib29sIG1fbGltaXRzTmF2aWdhdGlv
bnNUb0FwcEJvdW5kRG9tYWlucyB7IGZhbHNlIH07CisgICAgYm9vbCBtX25hdmlnYXRpb25IYXNP
Y2N1cmVkIHsgZmFsc2UgfTsKIH07CiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmNGM5ZTI5YzUx
YzZjNThkOTg3ODZlNmRjNDg2OTUwZGE0MTkxZDcwLi5lMDk3NjQzN2E3MGY5NTA3YjhhMGU4NDNi
MDY0Y2M2YjhiNWI5NTRkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjAtMDUtMTEgIEthdGUgQ2hlbmV5ICA8a2F0
aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgRmFpbCBuYXZpZ2F0aW9ucyB0byBu
b24gYXBwLWJvdW5kIGRvbWFpbnMgYWZ0ZXIgdXNlIG9mIGFwcC1ib3VuZCBBUElzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTE2NDcKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzYyOTc4MTU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgbmV3IHRlc3QgdG8gY29uZmlybSBhIG5vbi1hcHAg
Ym91bmQgbmF2aWdhdGlvbiBmYWlscyBhZnRlcgorICAgICAgICB1c2luZyBzY3JpcHQgaW5qZWN0
aW9uLgorCisgICAgICAgIFRoaXMgZml4IGFsc28gcmVxdWlyZWQgY2hhbmdpbmcgYW55IHRlc3Qg
d2hpY2ggdXNlcyBhIHJlc3RyaWN0ZWQgQVBJCisgICAgICAgIHRvIGNvbmZpcm0gYmVoYXZpb3Ig
b2YgYW5vdGhlciByZXN0cmljdGVkIEFQSS4gVGVzdHMgY2FuIHNldAorICAgICAgICBfc2V0TmVl
ZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzIGluIHRoZSBjb25maWd1cmF0aW9uIHRvIGluZGlj
YXRlCisgICAgICAgIEFQSXMgc2hvdWxkIG5vdCBiZSBibG9ja2VkLCB0aGVuIHRvZ2dsZSBpdCB0
byB0ZXN0IGFjdHVhbCBiZWhhdmlvci4KKworICAgICAgICBBbHNvLCB3ZSBjYW4gcmVtb3ZlIGFu
eSBjYWxscyB0byBfc2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQKKyAgICAgICAgbm93IHRo
YXQgdGhpcyBpcyBqdXN0IGFuIGludGVybmFsIHRlc3QgZmxhZy4gCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW06CisgICAg
ICAgICgtW0FwcEJvdW5kRG9tYWluRGVsZWdhdGUgd2ViVmlldzpkaWRGaW5pc2hOYXZpZ2F0aW9u
Ol0pOgorICAgICAgICAoLVtBcHBCb3VuZERvbWFpbkRlbGVnYXRlIHdlYlZpZXc6ZGlkRmFpbFBy
b3Zpc2lvbmFsTmF2aWdhdGlvbjp3aXRoRXJyb3I6XSk6CisgICAgICAgICgtW0FwcEJvdW5kRG9t
YWluRGVsZWdhdGUgd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dKToKKyAgICAgICAgKC1bQXBw
Qm91bmREb21haW5EZWxlZ2F0ZSB3YWl0Rm9yRGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbkVy
cm9yXSk6CisgICAgICAgIChURVNUKToKKwogMjAyMC0wNS0xMSAgQW5kcmVzIEdvbnphbGV6ICA8
YW5kcmVzZ18yMkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIG1lY2hhbmlzbSB0byB0dXJuIG9u
IGFjY2Vzc2liaWxpdHkgaXNvbGF0ZWQgdHJlZSBtb2RlIGZyb20gV2ViS2l0VGVzdFJ1bm5lci4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBC
cm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
SW5BcHBCcm93c2VyUHJpdmFjeS5tbQppbmRleCAxZjRiNjA3NGQxYmYwNTFmZjVjZDQwYzk2Y2I0
OTEzMWUxZjcwYjg0Li4zZGQ1MDMwZDRhM2QyZDhjZjdhZmU5NDZjZjA5NWQ4NzkxNTA3MWJjIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJv
d3NlclByaXZhY3kubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCkBAIC00OCw2ICs0OCw0MCBAQAogCiBzdGF0aWMgYm9v
bCBpc0RvbmU7CiAKK0BpbnRlcmZhY2UgQXBwQm91bmREb21haW5EZWxlZ2F0ZSA6IE5TT2JqZWN0
IDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4KKy0gKHZvaWQpd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRp
b247CistIChOU0Vycm9yICopd2FpdEZvckRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25FcnJv
cjsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIEFwcEJvdW5kRG9tYWluRGVsZWdhdGUgeworICAg
IGJvb2wgX25hdmlnYXRpb25GaW5pc2hlZDsKKyAgICBSZXRhaW5QdHI8TlNFcnJvcj4gX3Byb3Zp
c2lvbmFsTmF2aWdhdGlvbkZhaWxlZEVycm9yOworfQorCistICh2b2lkKXdlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgZGlkRmluaXNoTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdh
dGlvbgoreworICAgIF9uYXZpZ2F0aW9uRmluaXNoZWQgPSB0cnVlOworfQorCistICh2b2lkKXdl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbjoo
bnVsbF91bnNwZWNpZmllZCBXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9uIHdpdGhFcnJvcjooTlNF
cnJvciAqKWVycm9yCit7CisgICAgX3Byb3Zpc2lvbmFsTmF2aWdhdGlvbkZhaWxlZEVycm9yID0g
ZXJyb3I7Cit9CisKKy0gKHZvaWQpd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb24KK3sKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJl9uYXZpZ2F0aW9uRmluaXNoZWQpOworfQorCistIChO
U0Vycm9yICopd2FpdEZvckRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25FcnJvcgoreworICAg
IHdoaWxlICghX3Byb3Zpc2lvbmFsTmF2aWdhdGlvbkZhaWxlZEVycm9yKQorICAgICAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVuTG9vcCgpOworICAgIHJldHVybiBfcHJvdmlzaW9uYWxO
YXZpZ2F0aW9uRmFpbGVkRXJyb3IuYXV0b3JlbGVhc2UoKTsKK30KKworQGVuZAorCiBzdGF0aWMg
TlNTdHJpbmcgKiBjb25zdCB1c2VyU2NyaXB0U291cmNlID0gQCJ3aW5kb3cud2tVc2VyU2NyaXB0
SW5qZWN0ZWQgPSB0cnVlIjsKIAogQGludGVyZmFjZSBJbkFwcEJyb3dzZXJTY2hlbWVIYW5kbGVy
IDogTlNPYmplY3QgPFdLVVJMU2NoZW1lSGFuZGxlcj4KQEAgLTEwMyw4ICsxMzcsNiBAQCBURVNU
KEluQXBwQnJvd3NlclByaXZhY3ksIE5vbkFwcEJvdW5kRG9tYWluRmFpbGVkVXNlclNjcmlwdEF0
U3RhcnQpCiAgICAgYXV0byBzY2hlbWVIYW5kbGVyID0gYWRvcHROUyhbW0luQXBwQnJvd3NlclNj
aGVtZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hl
bWVIYW5kbGVyOnNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiaW4tYXBwLWJyb3dz
ZXIiXTsKICAgICBbY29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgYWRkVXNlclNj
cmlwdDp1c2VyU2NyaXB0LmdldCgpXTsKLSAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNd
IF9zZXROZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3M6Tk9dOwotICAgIFtbY29uZmlndXJh
dGlvbiBwcmVmZXJlbmNlc10gX3NldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkOllFU107CiAK
ICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOwogICAgIE5T
VVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJM
IFVSTFdpdGhTdHJpbmc6QCJpbi1hcHAtYnJvd3NlcjovLy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5
LXRlc3QtdXNlci1zY3JpcHQiXV07CkBAIC0xMjEsOCArMTUzLDcgQEAgVEVTVChJbkFwcEJyb3dz
ZXJQcml2YWN5LCBOb25BcHBCb3VuZERvbWFpbkZhaWxlZFVzZXJTY3JpcHRBdFN0YXJ0KQogICAg
IGlzRG9uZSA9IGZhbHNlOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsK
IAotICAgIC8vIFR1cm4gYmFjayBvbiBJbi1BcHAgQnJvd3NlciBQcml2YWN5IHF1aXJrcyB0byBj
aGVjayB0aGF0IG9yaWdpbmFsIGF0dGVtcHQgdG8gc2V0IHRoaXMgdmFyaWFibGUgd2FzIHJlamVj
dGVkLgotICAgIGlzRG9uZSA9IGZhbHNlOworICAgIC8vIERpc2FibGUgc2NyaXB0IGluamVjdGlv
biBibG9ja2luZyB0byBjaGVjayB0aGF0IG9yaWdpbmFsIGF0dGVtcHQgdG8gc2V0IHRoaXMgdmFy
aWFibGUgd2FzIHJlamVjdGVkLgogICAgIFtbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0gcHJlZmVy
ZW5jZXNdIF9zZXROZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3M6WUVTXTsKICAgICBbd2Vi
VmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJ3aW5kb3cud2tVc2VyU2NyaXB0SW5qZWN0ZWQiIGNv
bXBsZXRpb25IYW5kbGVyOl4oaWQgX051bGxhYmxlIHJlc3VsdCwgTlNFcnJvciAqIF9OdWxsYWJs
ZSBlcnJvcikgewogICAgICAgICBFWFBFQ1RfRVEoTk8sIFtyZXN1bHQgYm9vbFZhbHVlXSk7CkBA
IC0xNDUsOCArMTc2LDYgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZERv
bWFpbkZhaWxlZFVzZXJTY3JpcHRBdEVuZCkKICAgICBhdXRvIHNjaGVtZUhhbmRsZXIgPSBhZG9w
dE5TKFtbSW5BcHBCcm93c2VyU2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFtjb25m
aWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6c2NoZW1lSGFuZGxlci5nZXQoKSBmb3JVUkxT
Y2hlbWU6QCJpbi1hcHAtYnJvd3NlciJdOwogICAgIFtjb25maWd1cmF0aW9uLnVzZXJDb250ZW50
Q29udHJvbGxlciBhZGRVc2VyU2NyaXB0OnVzZXJTY3JpcHQuZ2V0KCldOwotICAgIFtbY29uZmln
dXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldE5lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrczpO
T107Ci0gICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0SW5BcHBCcm93c2VyUHJp
dmFjeUVuYWJsZWQ6WUVTXTsKIAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uXSk7CiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCBy
ZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImluLWFwcC1icm93c2VyOi8vL2lu
LWFwcC1icm93c2VyLXByaXZhY3ktdGVzdC11c2VyLXNjcmlwdCJdXTsKQEAgLTE2Myw4ICsxOTIs
NyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIE5vbkFwcEJvdW5kRG9tYWluRmFpbGVkVXNl
clNjcmlwdEF0RW5kKQogICAgIGlzRG9uZSA9IGZhbHNlOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmaXNEb25lKTsKIAotICAgIC8vIFR1cm4gYmFjayBvbiBJbi1BcHAgQnJvd3NlciBQ
cml2YWN5IHF1aXJrcyB0byBjaGVjayB0aGF0IG9yaWdpbmFsIGF0dGVtcHQgdG8gc2V0IHRoaXMg
dmFyaWFibGUgd2FzIHJlamVjdGVkLgotICAgIGlzRG9uZSA9IGZhbHNlOworICAgIC8vIERpc2Fi
bGUgc2NyaXB0IGluamVjdGlvbiBibG9ja2luZyB0byBjaGVjayB0aGF0IG9yaWdpbmFsIGF0dGVt
cHQgdG8gc2V0IHRoaXMgdmFyaWFibGUgd2FzIHJlamVjdGVkLgogICAgIFtbW3dlYlZpZXcgY29u
ZmlndXJhdGlvbl0gcHJlZmVyZW5jZXNdIF9zZXROZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWly
a3M6WUVTXTsKICAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJ3aW5kb3cud2tVc2Vy
U2NyaXB0SW5qZWN0ZWQiIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgX051bGxhYmxlIHJlc3VsdCwg
TlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvcikgewogICAgICAgICBFWFBFQ1RfRVEoTk8sIFtyZXN1
bHQgYm9vbFZhbHVlXSk7CkBAIC0xNzksOSArMjA3LDExIEBAIFRFU1QoSW5BcHBCcm93c2VyUHJp
dmFjeSwgTm9uQXBwQm91bmREb21haW5GYWlsZWRVc2VyU2NyaXB0QXRFbmQpCiAKIFRFU1QoSW5B
cHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmREb21haW5GYWlsZWRVc2VyQWdlbnRTY3JpcHRz
KQogeworICAgIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7CisK
ICAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAi
V2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVT
XTsKKyAgICAvLyBEaXNhYmxlIGJsb2NraW5nIG9mIHJlc3RyaWN0ZWQgQVBJcyBmb3IgdGVzdCBz
ZXR1cC4KICAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXROZWVkc0luQXBwQnJv
d3NlclByaXZhY3lRdWlya3M6WUVTXTsKLSAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNd
IF9zZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZDpOT107CiAKICAgICBhdXRvIHNjaGVtZUhh
bmRsZXIgPSBhZG9wdE5TKFtbSW5BcHBCcm93c2VyU2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0p
OwogICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6c2NoZW1lSGFuZGxlci5n
ZXQoKSBmb3JVUkxTY2hlbWU6QCJpbi1hcHAtYnJvd3NlciJdOwpAQCAtMTk4LDEzICsyMjgsMTEg
QEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZERvbWFpbkZhaWxlZFVzZXJB
Z2VudFNjcmlwdHMpCiAKICAgICBpc0RvbmUgPSBmYWxzZTsKICAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmlzRG9uZSk7Ci0KLSAgICBpbml0aWFsaXplSW5BcHBCcm93c2VyUHJpdmFjeVRl
c3RTZXR0aW5ncygpOworICAgIAorICAgIC8vIEVuYWJsZSBibG9ja2luZyBvZiByZXN0cmljdGVk
IEFQSXMuCiAgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0TmVlZHNJbkFwcEJy
b3dzZXJQcml2YWN5UXVpcmtzOk5PXTsKLSAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNd
IF9zZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZDpZRVNdOwogCiAgICAgYXV0byB3ZWJWaWV3
MiA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFpl
cm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7Ci0KICAgICBpc0RvbmUgPSBmYWxzZTsK
ICAgICBbd2ViVmlldzIgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CiAgICAgW3dlYlZpZXcyIF90ZXN0
X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKQEAgLTI0NCw3ICsyNzIsNiBAQCBURVNUKElu
QXBwQnJvd3NlclByaXZhY3ksIExvY2FsRmlsZXNBcmVBcHBCb3VuZCkKIHsKICAgICBpbml0aWFs
aXplSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOwogICAgIGF1dG8gY29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0g
ICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0SW5BcHBCcm93c2VyUHJpdmFjeUVu
YWJsZWQ6WUVTXTsKICAgICBbY29uZmlndXJhdGlvbiBzZXRMaW1pdHNOYXZpZ2F0aW9uc1RvQXBw
Qm91bmREb21haW5zOllFU107CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbi5nZXQoKV0pOwpAQCAtMjY1LDcgKzI5Miw2IEBAIFRFU1QoSW5BcHBCcm93c2Vy
UHJpdmFjeSwgRGF0YUZpbGVzQXJlQXBwQm91bmQpCiB7CiAgICAgaW5pdGlhbGl6ZUluQXBwQnJv
d3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFtbY29uZmln
dXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkOllFU107
CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0TGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlu
czpZRVNdOwogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24u
Z2V0KCldKTsKQEAgLTI4NSw3ICszMTEsNiBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFi
b3V0RmlsZXNBcmVBcHBCb3VuZCkKIHsKICAgICBpbml0aWFsaXplSW5BcHBCcm93c2VyUHJpdmFj
eVRlc3RTZXR0aW5ncygpOwogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dl
YlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgW1tjb25maWd1cmF0aW9uIHBy
ZWZlcmVuY2VzXSBfc2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQ6WUVTXTsKICAgICBbY29u
ZmlndXJhdGlvbiBzZXRMaW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zOllFU107CiAK
ICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwpA
QCAtMzAzLDcgKzMyOCw2IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQWJvdXRGaWxlc0Fy
ZUFwcEJvdW5kKQogCiBzdGF0aWMgTlNTdHJpbmcgKnN0eWxlU2hlZXRTb3VyY2UgPSBAImJvZHkg
eyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbiAhaW1wb3J0YW50OyB9IjsKIHN0YXRpYyBOU1N0cmlu
ZyAqYmFja2dyb3VuZENvbG9yU2NyaXB0ID0gQCJ3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1
bWVudC5ib2R5LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5kLWNvbG9yJykiOwot
c3RhdGljIE5TU3RyaW5nICpmcmFtZUJhY2tncm91bmRDb2xvclNjcmlwdCA9IEAid2luZG93Lmdl
dENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lmcmFtZScpWzBd
LmNvbnRlbnREb2N1bWVudC5ib2R5LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5k
LWNvbG9yJykiOwogc3RhdGljIGNvbnN0IGNoYXIqIHJlZEluUkdCID0gInJnYigyNTUsIDAsIDAp
IjsKIHN0YXRpYyBjb25zdCBjaGFyKiBibGFja0luUkdCID0gInJnYmEoMCwgMCwgMCwgMCkiOwog
CkBAIC0zMjksMTkgKzM1MywxOSBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIE5vbkFwcEJv
dW5kVXNlclN0eWxlU2hlZXRGb3JTcGVjaWZpY1dlYlZpZXdGYWlscykKIAogICAgIGF1dG8gc2No
ZW1lSGFuZGxlciA9IGFkb3B0TlMoW1tJbkFwcEJyb3dzZXJTY2hlbWVIYW5kbGVyIGFsbG9jXSBp
bml0XSk7CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpzY2hlbWVIYW5k
bGVyLmdldCgpIGZvclVSTFNjaGVtZTpAImluLWFwcC1icm93c2VyIl07Ci0gICAgW1tjb25maWd1
cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQ6WUVTXTsK
LSAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXROZWVkc0luQXBwQnJvd3NlclBy
aXZhY3lRdWlya3M6WUVTXTsKKyAgICBSZXRhaW5QdHI8X1dLVXNlckNvbnRlbnRXb3JsZD4gd29y
bGQgPSBbX1dLVXNlckNvbnRlbnRXb3JsZCB3b3JsZFdpdGhOYW1lOkAiVGVzdFdvcmxkIl07CiAK
ICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwot
ICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6
W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJpbi1hcHAtYnJvd3NlcjovLy9pbi1hcHAtYnJvd3Nlci1w
cml2YWN5LXRlc3QtdXNlci1zdHlsZS1zaGVldHMiXV07Ci0gICAgW3dlYlZpZXcgbG9hZFJlcXVl
c3Q6cmVxdWVzdF07Ci0gICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRp
b25dOwotCi0gICAgUmV0YWluUHRyPF9XS1VzZXJDb250ZW50V29ybGQ+IHdvcmxkID0gW19XS1Vz
ZXJDb250ZW50V29ybGQgd29ybGRXaXRoTmFtZTpAIlRlc3RXb3JsZCJdOwogICAgIFJldGFpblB0
cjxfV0tVc2VyU3R5bGVTaGVldD4gc3R5bGVTaGVldCA9IGFkb3B0TlMoW1tfV0tVc2VyU3R5bGVT
aGVldCBhbGxvY10gaW5pdFdpdGhTb3VyY2U6c3R5bGVTaGVldFNvdXJjZSBmb3JXS1dlYlZpZXc6
d2ViVmlldy5nZXQoKSBmb3JNYWluRnJhbWVPbmx5OllFUyBsZXZlbDpfV0tVc2VyU3R5bGVVc2Vy
TGV2ZWwgdXNlckNvbnRlbnRXb3JsZDp3b3JsZC5nZXQoKV0pOwogICAgIFtbY29uZmlndXJhdGlv
biB1c2VyQ29udGVudENvbnRyb2xsZXJdIF9hZGRVc2VyU3R5bGVTaGVldDpzdHlsZVNoZWV0Lmdl
dCgpXTsKIAotICAgIGV4cGVjdFNjcmlwdEV2YWx1YXRlc1RvQ29sb3Iod2ViVmlldy5nZXQoKSwg
YmFja2dyb3VuZENvbG9yU2NyaXB0LCByZWRJblJHQik7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFk
b3B0TlMoW0FwcEJvdW5kRG9tYWluRGVsZWdhdGUgbmV3XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2
aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIE5TVVJMUmVxdWVzdCAqcmVx
dWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6
QCJpbi1hcHAtYnJvd3NlcjovLy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5LXRlc3QtdXNlci1zdHls
ZS1zaGVldHMiXV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisgICAgTlNF
cnJvciAqZXJyb3IgPSBbZGVsZWdhdGUgd2FpdEZvckRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRp
b25FcnJvcl07CisgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9u
LCBAIkFwcC1ib3VuZCBkb21haW4gZmFpbHVyZSIpOwogICAgIGNsZWFuVXBJbkFwcEJyb3dzZXJQ
cml2YWN5VGVzdFNldHRpbmdzKCk7CiB9CiAKQEAgLTM1MywxOCArMzc3LDE4IEBAIFRFU1QoSW5B
cHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmRVc2VyU3R5bGVTaGVldEZvckFsbFdlYlZpZXdz
RmFpbHMpCiAKICAgICBhdXRvIHNjaGVtZUhhbmRsZXIgPSBhZG9wdE5TKFtbSW5BcHBCcm93c2Vy
U2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNj
aGVtZUhhbmRsZXI6c2NoZW1lSGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJpbi1hcHAtYnJv
d3NlciJdOwotICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEluQXBwQnJvd3Nl
clByaXZhY3lFbmFibGVkOllFU107Ci0gICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBf
c2V0TmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzOllFU107Ci0KLSAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3Ra
ZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIE5TVVJMUmVxdWVz
dCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhT
dHJpbmc6QCJpbi1hcHAtYnJvd3NlcjovLy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5LXRlc3QtdXNl
ci1zdHlsZS1zaGVldHMiXV07Ci0gICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07Ci0g
ICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwotCisgICAgCiAg
ICAgUmV0YWluUHRyPF9XS1VzZXJTdHlsZVNoZWV0PiBzdHlsZVNoZWV0ID0gYWRvcHROUyhbW19X
S1VzZXJTdHlsZVNoZWV0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpzdHlsZVNoZWV0U291cmNlIGZv
ck1haW5GcmFtZU9ubHk6WUVTXSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29u
dHJvbGxlcl0gX2FkZFVzZXJTdHlsZVNoZWV0OnN0eWxlU2hlZXQuZ2V0KCldOworICAgIAorICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAg
YXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW0FwcEJvdW5kRG9tYWluRGVsZWdhdGUgbmV3XSk7Cisg
ICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAotICAg
IGV4cGVjdFNjcmlwdEV2YWx1YXRlc1RvQ29sb3Iod2ViVmlldy5nZXQoKSwgYmFja2dyb3VuZENv
bG9yU2NyaXB0LCByZWRJblJHQik7CisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImluLWFwcC1icm93
c2VyOi8vL2luLWFwcC1icm93c2VyLXByaXZhY3ktdGVzdC11c2VyLXN0eWxlLXNoZWV0cyJdXTsK
KyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKyAgICBOU0Vycm9yICplcnJvciA9
IFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbkVycm9yXTsKKyAg
ICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24sIEAiQXBwLWJvdW5k
IGRvbWFpbiBmYWlsdXJlIik7CiAgICAgY2xlYW5VcEluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0
dGluZ3MoKTsKIH0KIApAQCAtMzc2LDIyICs0MDAsMTcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2
YWN5LCBOb25BcHBCb3VuZFVzZXJTdHlsZVNoZWV0QWZmZWN0aW5nQWxsRnJhbWVzRmFpbHMpCiAK
ICAgICBhdXRvIHNjaGVtZUhhbmRsZXIgPSBhZG9wdE5TKFtbSW5BcHBCcm93c2VyU2NoZW1lSGFu
ZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRs
ZXI6c2NoZW1lSGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJpbi1hcHAtYnJvd3NlciJdOwot
ICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEluQXBwQnJvd3NlclByaXZhY3lF
bmFibGVkOllFU107Ci0gICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0TmVlZHNJ
bkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzOllFU107Ci0KLSAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVz
dCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJp
bi1hcHAtYnJvd3NlcjovLy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5LXRlc3QtdXNlci1zdHlsZS1z
aGVldHMtaWZyYW1lIl1dOwotICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwotICAg
IFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKLQogICAgIFJldGFp
blB0cjxfV0tVc2VyU3R5bGVTaGVldD4gc3R5bGVTaGVldCA9IGFkb3B0TlMoW1tfV0tVc2VyU3R5
bGVTaGVldCBhbGxvY10gaW5pdFdpdGhTb3VyY2U6c3R5bGVTaGVldFNvdXJjZSBmb3JNYWluRnJh
bWVPbmx5Ok5PXSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0g
X2FkZFVzZXJTdHlsZVNoZWV0OnN0eWxlU2hlZXQuZ2V0KCldOwogCi0gICAgLy8gVGhlIG1haW4g
ZnJhbWUgc2hvdWxkIGJlIGFmZmVjdGVkLgotICAgIGV4cGVjdFNjcmlwdEV2YWx1YXRlc1RvQ29s
b3Iod2ViVmlldy5nZXQoKSwgYmFja2dyb3VuZENvbG9yU2NyaXB0LCByZWRJblJHQik7CisgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBh
dXRvIGRlbGVnYXRlID0gYWRvcHROUyhbQXBwQm91bmREb21haW5EZWxlZ2F0ZSBuZXddKTsKKyAg
ICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCi0gICAg
Ly8gVGhlIHN1YmZyYW1lIHNob3VsZCBhbHNvIGJlIGFmZmVjdGVkLgotICAgIGV4cGVjdFNjcmlw
dEV2YWx1YXRlc1RvQ29sb3Iod2ViVmlldy5nZXQoKSwgZnJhbWVCYWNrZ3JvdW5kQ29sb3JTY3Jp
cHQsIHJlZEluUkdCKTsKKyAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0
IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaW4tYXBwLWJyb3dzZXI6Ly8v
aW4tYXBwLWJyb3dzZXItcHJpdmFjeS10ZXN0LXVzZXItc3R5bGUtc2hlZXRzLWlmcmFtZSJdXTsK
KyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKyAgICBOU0Vycm9yICplcnJvciA9
IFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbkVycm9yXTsKKyAg
ICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24sIEAiQXBwLWJvdW5k
IGRvbWFpbiBmYWlsdXJlIik7CiAgICAgY2xlYW5VcEluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0
dGluZ3MoKTsKIH0KIApAQCAtNDA0LDggKzQyMyw2IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFj
eSwgTm9uQXBwQm91bmREb21haW5DYW5ub3RBY2Nlc3NNZXNzYWdlSGFuZGxlcnMpCiAKICAgICBh
dXRvIHNjaGVtZUhhbmRsZXIgPSBhZG9wdE5TKFtbSW5BcHBCcm93c2VyU2NoZW1lSGFuZGxlciBh
bGxvY10gaW5pdF0pOwogICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6c2No
ZW1lSGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJpbi1hcHAtYnJvd3NlciJdOwotICAgIFtb
Y29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVk
OllFU107Ci0gICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0TmVlZHNJbkFwcEJy
b3dzZXJQcml2YWN5UXVpcmtzOllFU107CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
VGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCkBAIC00MTYsNiArNDMzLDEwIEBAIFRFU1QoSW5B
cHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmREb21haW5DYW5ub3RBY2Nlc3NNZXNzYWdlSGFu
ZGxlcnMpCiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImluLWFwcC1icm93c2VyOi8vL2luLWFwcC1i
cm93c2VyLXByaXZhY3ktdGVzdC1tZXNzYWdlLWhhbmRsZXIiXV07CiAgICAgW3dlYlZpZXcgbG9h
ZFJlcXVlc3Q6cmVxdWVzdF07CiAgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5h
dmlnYXRpb25dOworICAgIAorICAgIC8vIERpc2FibGUgc2NyaXB0IGluamVjdGlvbiBibG9ja2lu
ZyB0byBjaGVjayB0aGF0IHRoZSByZXF1ZXN0IGZvciBtZXNzYWdlCisgICAgLy8gaGFuZGxlcnMg
cmV0dXJuZWQgbnVsbC4KKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXROZWVk
c0luQXBwQnJvd3NlclByaXZhY3lRdWlya3M6WUVTXTsKIAogICAgIC8vIFNldCB0aGUgYmFja2dy
b3VuZCBjb2xvciB0byByZWQgaWYgbWVzc2FnZSBoYW5kbGVycyByZXR1cm5lZCBudWxsIHNvIHdl
IGNhbgogICAgIC8vIGNoZWNrIHdpdGhvdXQgbmVlZGluZyBhIG1lc3NhZ2UgaGFuZGxlci4KQEAg
LTQzMiw3ICs0NTMsNiBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kRG9tYWlu
Q2FuQWNjZXNzTWVzc2FnZUhhbmRsZXJzKQogCiAgICAgYXV0byBzY2hlbWVIYW5kbGVyID0gYWRv
cHROUyhbW0luQXBwQnJvd3NlclNjaGVtZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBbY29u
ZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOnNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9yVVJM
U2NoZW1lOkAiaW4tYXBwLWJyb3dzZXIiXTsKLSAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5j
ZXNdIF9zZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZDpZRVNdOwogICAgIFtjb25maWd1cmF0
aW9uIHNldExpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnM6WUVTXTsKIAogICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
OkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CkBAIC04MzMs
NDAgKzg1Myw2IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmREb21haW5E
b2VzTm90QWxsb3dTZXJ2aWNlV29ya2VycykKICAgICBpc0RvbmUgPSBmYWxzZTsKIH0KIAotQGlu
dGVyZmFjZSBBcHBCb3VuZERvbWFpbkRlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRl
bGVnYXRlPgotLSAodm9pZCl3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbjsKLS0gKE5TRXJyb3Ig
Kil3YWl0Rm9yRGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbkVycm9yOwotQGVuZAotCi1AaW1w
bGVtZW50YXRpb24gQXBwQm91bmREb21haW5EZWxlZ2F0ZSB7Ci0gICAgYm9vbCBfbmF2aWdhdGlv
bkZpbmlzaGVkOwotICAgIFJldGFpblB0cjxOU0Vycm9yPiBfcHJvdmlzaW9uYWxOYXZpZ2F0aW9u
RmFpbGVkRXJyb3I7Ci19Ci0KLS0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBk
aWRGaW5pc2hOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9uCi17Ci0gICAgX25h
dmlnYXRpb25GaW5pc2hlZCA9IHRydWU7Ci19Ci0KLS0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uOihudWxsX3Vuc3BlY2lmaWVk
IFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24gd2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKLXsK
LSAgICBfcHJvdmlzaW9uYWxOYXZpZ2F0aW9uRmFpbGVkRXJyb3IgPSBlcnJvcjsKLX0KLQotLSAo
dm9pZCl3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbgotewotICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmX25hdmlnYXRpb25GaW5pc2hlZCk7Ci19Ci0KLS0gKE5TRXJyb3IgKil3YWl0Rm9y
RGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbkVycm9yCi17Ci0gICAgd2hpbGUgKCFfcHJvdmlz
aW9uYWxOYXZpZ2F0aW9uRmFpbGVkRXJyb3IpCi0gICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnNwaW5SdW5Mb29wKCk7Ci0gICAgcmV0dXJuIF9wcm92aXNpb25hbE5hdmlnYXRpb25GYWlsZWRF
cnJvci5hdXRvcmVsZWFzZSgpOwotfQotCi1AZW5kCi0KIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFj
eSwgQXBwQm91bmRGbGFnRm9yTm9uQXBwQm91bmREb21haW5GYWlscykKIHsKICAgICBpbml0aWFs
aXplSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOwpAQCAtODg1LDcgKzg3MSw3IEBA
IFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmRGbGFnRm9yTm9uQXBwQm91bmREb21h
aW5GYWlscykKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVl
c3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaW4tYXBwLWJyb3dzZXI6Ly8vaW4tYXBw
LWJyb3dzZXItcHJpdmFjeS10ZXN0LXVzZXItc3R5bGUtc2hlZXRzIl1dOwogICAgIFt3ZWJWaWV3
IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwogICAgIE5TRXJyb3IgKmVycm9yID0gW2RlbGVnYXRlIHdh
aXRGb3JEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uRXJyb3JdOwotICAgIEVYUEVDVF9XS19T
VFJFUShlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbiwgQCJBdHRlbXB0ZWQgbmF2aWdhdGlvbiBh
d2F5IGZyb20gYXBwLWJvdW5kIGRvbWFpbiIpOworICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5s
b2NhbGl6ZWREZXNjcmlwdGlvbiwgQCJBcHAtYm91bmQgZG9tYWluIGZhaWx1cmUiKTsKIAogICAg
IC8vIE1ha2Ugc3VyZSB0aGUgbG9hZCBkaWRuJ3QgY29tcGxldGUgYnkgY2hlY2tpbmcgdGhlIGJh
Y2tncm91bmQgY29sb3IuCiAgICAgLy8gUmVkIHdvdWxkIGluZGljYXRlIGl0IGZpbmlzaGVkIGxv
YWRpbmcuCkBAIC05MTYsNyArOTAyLDcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOYXZp
Z2F0ZUF3YXlGcm9tQXBwQm91bmREb21haW5XaXRoQXBwQm91bmRGbGFnRmFpbHMpCiAgICAgcmVx
dWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6
QCJpbi1hcHAtYnJvd3NlcjovLy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5LXRlc3QtdXNlci1zdHls
ZS1zaGVldHMiXV07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CiAgICAgTlNF
cnJvciAqZXJyb3IgPSBbZGVsZWdhdGUgd2FpdEZvckRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRp
b25FcnJvcl07Ci0gICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9u
LCBAIkF0dGVtcHRlZCBuYXZpZ2F0aW9uIGF3YXkgZnJvbSBhcHAtYm91bmQgZG9tYWluIik7Cisg
ICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uLCBAIkFwcC1ib3Vu
ZCBkb21haW4gZmFpbHVyZSIpOwogCiAgICAgLy8gTWFrZSBzdXJlIHRoZSBsb2FkIGRpZG4ndCBj
b21wbGV0ZSBieSBjaGVja2luZyB0aGUgYmFja2dyb3VuZCBjb2xvci4KICAgICAvLyBSZWQgd291
bGQgaW5kaWNhdGUgaXQgZmluaXNoZWQgbG9hZGluZy4KQEAgLTk5MSwxMSArOTc3LDE0IEBAIFRF
U1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgV2ViVmlld1dpdGhvdXRBcHBCb3VuZEZsYWdDYW5GcmVl
bHlOYXZpZ2F0ZSkKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAKICAg
ICAvLyBOYXZpZ2F0aW9uIHNob3VsZCBiZSBzdWNjZXNzZnVsLCBidXQgdGhpcyBXZWJWaWV3IHNo
b3VsZCBub3QgZ2V0IGFwcC1ib3VuZCBkb21haW4KLSAgICAvLyBwcml2aWxlZ2VzIGxpa2UgdXNl
ciBzdHlsZSBzaGVldHMuIFNldCBxdWlya3MgdG8gdHJ1ZSBzbyB3ZSBjYW4gZXZhbHVhdGUgc2Ny
aXB0Ci0gICAgLy8gdG8gY2hlY2suCi0gICAgW1tbd2ViVmlldyBjb25maWd1cmF0aW9uXSBwcmVm
ZXJlbmNlc10gX3NldE5lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrczpZRVNdOwotICAgIGV4
cGVjdFNjcmlwdEV2YWx1YXRlc1RvQ29sb3Iod2ViVmlldy5nZXQoKSwgYmFja2dyb3VuZENvbG9y
U2NyaXB0LCBibGFja0luUkdCKTsKLSAgICBjbGVhblVwSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RT
ZXR0aW5ncygpOworICAgIC8vIHByaXZpbGVnZXMgbGlrZSBzY3JpcHQgaW5qZWN0aW9uLgorICAg
IGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAIndpbmRv
dy53a1VzZXJTY3JpcHRJbmplY3RlZCIgY29tcGxldGlvbkhhbmRsZXI6XihpZCBfTnVsbGFibGUg
cmVzdWx0LCBOU0Vycm9yICogX051bGxhYmxlIGVycm9yKSB7CisgICAgICAgIEVYUEVDVF9UUlVF
KCEhZXJyb3IpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogfQogCiBURVNUKEluQXBwQnJvd3NlclByaXZh
Y3ksIFdlYlZpZXdDYW5ub3RVcGRhdGVBcHBCb3VuZEZsYWdPbmNlU2V0KQpAQCAtMTAyOSwxMSAr
MTAxOCw0MiBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIFdlYlZpZXdDYW5ub3RVcGRhdGVB
cHBCb3VuZEZsYWdPbmNlU2V0KQogICAgIHJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RX
aXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaW4tYXBwLWJyb3dzZXI6Ly8vaW4tYXBwLWJy
b3dzZXItcHJpdmFjeS10ZXN0LXVzZXItc3R5bGUtc2hlZXRzIl1dOwogICAgIFt3ZWJWaWV3IGxv
YWRSZXF1ZXN0OnJlcXVlc3RdOwogICAgIE5TRXJyb3IgKmVycm9yID0gW2RlbGVnYXRlIHdhaXRG
b3JEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uRXJyb3JdOwotICAgIEVYUEVDVF9XS19TVFJF
UShlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbiwgQCJBdHRlbXB0ZWQgbmF2aWdhdGlvbiBhd2F5
IGZyb20gYXBwLWJvdW5kIGRvbWFpbiIpOworICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5sb2Nh
bGl6ZWREZXNjcmlwdGlvbiwgQCJBcHAtYm91bmQgZG9tYWluIGZhaWx1cmUiKTsKIAogICAgIGNs
ZWFuVXBJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7CiB9CiAKK1RFU1QoSW5BcHBC
cm93c2VyUHJpdmFjeSwgSW5qZWN0U2NyaXB0VGhlbk5hdmlnYXRlVG9Ob25BcHBCb3VuZERvbWFp
bkZhaWxzKQoreworICAgIGlzRG9uZSA9IGZhbHNlOworICAgIGluaXRpYWxpemVJbkFwcEJyb3dz
ZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7CisgICAgYXV0byB1c2VyU2NyaXB0ID0gYWRvcHROUyhb
W1dLVXNlclNjcmlwdCBhbGxvY10gaW5pdFdpdGhTb3VyY2U6dXNlclNjcmlwdFNvdXJjZSBpbmpl
Y3Rpb25UaW1lOldLVXNlclNjcmlwdEluamVjdGlvblRpbWVBdERvY3VtZW50U3RhcnQgZm9yTWFp
bkZyYW1lT25seTpZRVNdKTsKKworICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3Vy
YXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRl
c3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmln
dXJlSlNDRm9yVGVzdGluZzpZRVNdOworICAgIGF1dG8gc2NoZW1lSGFuZGxlciA9IGFkb3B0TlMo
W1tJbkFwcEJyb3dzZXJTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZpZ3Vy
YXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpzY2hlbWVIYW5kbGVyLmdldCgpIGZvclVSTFNjaGVt
ZTpAImluLWFwcC1icm93c2VyIl07CisgICAgW2NvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRDb250
cm9sbGVyIGFkZFVzZXJTY3JpcHQ6dXNlclNjcmlwdC5nZXQoKV07CisgICAgW1tjb25maWd1cmF0
aW9uIHByZWZlcmVuY2VzXSBfc2V0TmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzOk5PXTsK
KworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAg
YXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW0FwcEJvdW5kRG9tYWluRGVsZWdhdGUgbmV3XSk7Cisg
ICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAg
IGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAIndpbmRv
dy53a1VzZXJTY3JpcHRJbmplY3RlZCIgY29tcGxldGlvbkhhbmRsZXI6XihpZCBfTnVsbGFibGUg
cmVzdWx0LCBOU0Vycm9yICogX051bGxhYmxlIGVycm9yKSB7CisgICAgICAgIEVYUEVDVF9GQUxT
RSghIWVycm9yKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKyAgICAKKyAgICAvLyBMb2FkIGEgbm9uLWFw
cCBib3VuZCBkb21haW4uCisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVz
dCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImluLWFwcC1icm93c2VyOi8v
L2luLWFwcC1icm93c2VyLXByaXZhY3ktdGVzdC11c2VyLWFnZW50LXNjcmlwdCJdXTsKKyAgICBb
d2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKyAgICBOU0Vycm9yICplcnJvciA9IFtkZWxl
Z2F0ZSB3YWl0Rm9yRGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbkVycm9yXTsKKyAgICBFWFBF
Q1RfV0tfU1RSRVEoZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24sIEAiQXBwLWJvdW5kIGRvbWFp
biBmYWlsdXJlIik7Cit9CisKIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgV2ViVmlld0NhdGVn
b3J5KQogewogICAgIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399062</attachid>
            <date>2020-05-11 16:03:23 -0700</date>
            <delta_ts>2020-05-11 16:29:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211647-20200511160322.patch</filename>
            <type>text/plain</type>
            <size>81819</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNDgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjU4MDJjZTUzNDMxMjc2
YjVhNGQyZTlmNzYxYTUwZjE0ZDY1ODY3NC4uMThlODQ1MGQ3NWE1MmEyMTk5YjJkNzE0Njg4ODNm
ODM2NmJmNjBhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIwLTA1LTExICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEZhaWwgbmF2
aWdhdGlvbnMgdG8gbm9uIGFwcC1ib3VuZCBkb21haW5zIGFmdGVyIHVzZSBvZiBhcHAtYm91bmQg
QVBJcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEx
NjQ3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82Mjk3ODE1OT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW1wbGlmaWVkIGluLWFwcCBicm93c2Vy
IHByaXZhY3kgcHJvdGVjdGlvbnMgY2hlY2sgaW50byBvbmUsIGJldHRlcgorICAgICAgICBuYW1l
ZCBmdW5jdGlvbi4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29y
bGQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIHBh
Z2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmluamVjdFVzZXJTY3JpcHRJ
bW1lZGlhdGVseSk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2U6OmluamVjdFVzZXJTdHlsZVNoZWV0KToKKyAgICAgICAgKiBwYWdlL1dlYktpdE5hbWVz
cGFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXROYW1lc3BhY2U6Om1lc3NhZ2VIYW5k
bGVycyk6CisgICAgICAgICogc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlOjpTY29wZVJ1bGVTZXRzOjppbml0aWFsaXplVXNlclN0eWxlKToKKyAg
ICAgICAgUmVhcnJhbmdlZCBvcmRlcmluZyBzbyB0aGUgbWVzc2FnZSB0byBXZWJQYWdlUHJveHkg
b25seSBnZXRzIHNlbnQgdG8KKyAgICAgICAgaW5kaWNhdGUgYXBwLWJvdW5kIGJlaGF2aW9yIGlm
IHVzZXIgc3R5bGUgc2hlZXRzIGFjdHVhbGx5IGV4aXN0LgorCiAyMDIwLTA1LTExICBBbmRyZXMg
R29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgbWVjaGFuaXNt
IHRvIHR1cm4gb24gYWNjZXNzaWJpbGl0eSBpc29sYXRlZCB0cmVlIG1vZGUgZnJvbSBXZWJLaXRU
ZXN0UnVubmVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCBkNTdlYmQ5YzdiOWFlMGJjYWU5ZjlmOGJjNWU3M2Y4NmYw
MWFhNWU2Li43NzViOGU2MWVkYzE4NGI4MjI4YjI3OTI1MmFjODQ4MjQzNTRiOGRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDk5IEBACisyMDIwLTA1LTExICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9j
aGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEZhaWwgbmF2aWdhdGlvbnMgdG8gbm9uIGFwcC1i
b3VuZCBkb21haW5zIGFmdGVyIHVzZSBvZiBhcHAtYm91bmQgQVBJcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExNjQ3CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS82Mjk3ODE1OT4KKworICAgICAgICBBIGxvdCBvZiB0aGlzIHBhdGNoIGlzIGRlbGV0
aW5nIHRoZSB1bm5lY2Vzc2FyeSB2YXJpYWJsZS9mdW5jdGlvbgorICAgICAgICBoYXNOYXZpZ2F0
ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluIG5vdyB0aGF0IG5hdmlnYXRpbmcgYXdheSBmcm9tIGFu
CisgICAgICAgIGFwcC1ib3VuZCBkb21haW4gaXMgbm90IHBvc3NpYmxlLgorICAgICAgICAKKyAg
ICAgICAgVG8gYWRkcmVzcyB0aGUgYnVnLCB0aGlzIHNldHMgdGhlIGRlZmF1bHQgaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbgorICAgICAgICB2YWx1ZSB0byBiZSBXVEY6Om51bGxvcHQuIFRo
aXMgd2lsbCBhbGxvdyBhcHAtYm91bmQgYmVoYXZpb3JzIHVudGlsCisgICAgICAgIGEgbmF2aWdh
dGlvbiBoYXMgYmVlbiBhdHRlbXB0ZWQsIGluIHdoaWNoIGNhc2UgaXQgd2lsbCBmYWlsIG9yIHdp
bGwKKyAgICAgICAgdXBkYXRlIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gdG8gdGhlIGNv
cnJlY3QgdmFsdWUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBTaGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpMb2Fk
UGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TG9hZFBhcmFtZXRl
cnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmg6CisgICAgICAg
ICogU2hhcmVkL1BvbGljeURlY2lzaW9uLmg6CisgICAgICAgIChXZWJLaXQ6OlBvbGljeURlY2lz
aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQb2xpY3lEZWNpc2lvbjo6ZGVj
b2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZERhdGEpOgorICAgICAgICAo
V2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAoV2Vi
S2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
blN5bmMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojps
b2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5Ojpsb2FkRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZERh
dGFXaXRoTmF2aWdhdGlvblNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luY1NoYXJlZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERv
bWFpbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIFJlbW92ZSBoYXNOYXZpZ2F0ZWRBd2F5RnJv
bUFwcEJvdW5kRG9tYWluLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0SXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbkFuZENoZWNrSWZQZXJtaXR0ZWQpOgorICAgICAgICBD
aGVjayBmb3IgbmV3IG1faGFzRXhlY3V0ZWRBcHBCb3VuZEJlaGF2aW9yQmVmb3JlTmF2aWdhdGlv
biBwYXJhbWV0ZXIKKyAgICAgICAgYW5kIGZhaWwgdGhlIG5hdmlnYXRpb24gaWYgYSBXZWJWaWV3
IGhhcyB1c2VkIGFwcC1ib3VuZCBiZWhhdmlvciB0aGVuCisgICAgICAgIHRyaWVzIHRvIG5hdmln
YXRlIHRvIGEgbm9uIGFwcC1ib3VuZCBkb21haW4uCisKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgVXBkYXRl
IGVycm9yIG1lc3NhZ2UgdG8gYmUgbW9yZSBnZW5lcmFsIG5vdyB0aGF0IG1vcmUgdGhhbiBvbmUg
ZXJyb3IKKyAgICAgICAgY2FuIG9jY3VyLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEhhc0V4ZWN1dGVkQXBw
Qm91bmRCZWhhdmlvckJlZm9yZU5hdmlnYXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgIE5ldyBwYXJhbWV0ZXIgdG8gaW5kaWNhdGUg
YSBXZWJWaWV3IGhhcyB1c2VkIGFwcC1ib3VuZCBBUElzIGJlZm9yZQorICAgICAgICBuYXZpZ2F0
aW5nLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRFbmFibGVJbkFwcEJy
b3dzZXJQcml2YWN5UHJvdGVjdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRl
ckNsaWVudDo6aGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpuZWVkc0luQXBwQnJvd3NlclBy
aXZhY3lRdWlya3MgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgQ29tYmluZWQgdHdvIGZ1
bmN0aW9ucyBpbnRvIGEgc2ltcGxlciBmdW5jdGlvbjoKKyAgICAgICAgc2hvdWxkRW5hYmxlSW5B
cHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fbGltaXRzTmF2aWdhdGlvbnNU
b0FwcEJvdW5kRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZl
cmVuY2VzKToKKyAgICAgICAgU3RvcmUgdGhlIHNwZWNpYWwgYXBwLWJvdW5kIGRvbWFpbiBmbGFn
IHRvIGdhdGUgdGhlIHNlcnZpY2Ugd29ya2VyCisgICAgICAgIEFQSS4gVGhpcyBzaG91bGQgYmUg
c3RvcmVkIHNlcGFyYXRlbHkgZnJvbQorICAgICAgICBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4sIGJlY2F1c2UgaW4gdGhlIFdlYlBhZ2UgY29uc3RydWN0b3Igd2UKKyAgICAgICAgZG9u
J3QgeWV0IGtub3cgd2hldGhlciB0aGUgV0tBcHBCb3VuZERvbWFpbnMga2V5IGV4aXN0cy4KKwor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmxvYWREYXRhSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRE
YXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZEFsdGVybmF0ZUhUTUwpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24pOgorICAgICAg
ICBSZW1vdmUgaGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbi4KKworICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpydW5KYXZhU2NyaXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6c2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucyk6CisgICAg
ICAgIElmIG1fbmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzIGFyZSBvbiBmb3IgdGVzdGlu
ZywgZG9uJ3QgZW5hYmxlCisgICAgICAgIHByb3RlY3Rpb25zLiBPbmx5IG5vdGlmeSB0aGUgV2Vi
UGFnZVByb3h5IG9mIGFwcC1ib3VuZCBiZWhhdmlvciBpZgorICAgICAgICBhIG5hdmlnYXRpb24g
aGFzIG5vdCBvY2N1cmVkIGFuZCB3ZSBrbm93IHRoZSB3ZWJWaWV3IGlzIG5vdCBhcHAtYm91bmQK
KyAgICAgICAgKGluIG9yZGVyIHRvIGxpbWl0IElQQykuCisKKyAgICAgICAgKFdlYktpdDo6bV9p
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
c2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6Omhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4gY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRIYXNOYXZpZ2F0ZWRBd2F5RnJv
bUFwcEJvdW5kRG9tYWluKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bmVl
ZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzIGNvbnN0KTogRGVsZXRlZC4KKwogMjAyMC0wNS0x
MSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdS
RVNTSU9OIChyMjUzMjY3KTogaXNzdWVzIG9uIHRvdWNoc3RhcnQvdG91Y2hlbmQvdG91Y2htb3Zl
IChwb2ludGVyZG93bi9wb2ludGVydXAvcG9pbnRlcm1vdmUpIGV2ZW50cwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCBhZTI4ODVjMDMz
YmU0YWM4ZGMwMmM4MTIyNDc4YWM3Yzc0MzkwYzBiLi4zNzJmYmJjYzVlODVlMmQ2NzlkOTBiM2Nh
OTIwZDU3NGQwYTM5YmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRDb250cm9sbGVyLmNwcApAQCAtNTc5LDEyICs1NzksMTMgQEAgSlNDOjpKU1ZhbHVlIFNjcmlw
dENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkSWdub3JpbmdFeGNlcHRpb24oRE9NV3Jh
cHBlclcKIAogVmFsdWVPckV4Y2VwdGlvbiBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0
SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYm
IHBhcmFtZXRlcnMpCiB7Ci0gICAgaWYgKG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuaGFzTmF2
aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbigpICYmICFtX2ZyYW1lLmxvYWRlcigpLmNsaWVu
dCgpLm5lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcygpKSB7CisgICAgaWYgKG1fZnJhbWUu
bG9hZGVyKCkuY2xpZW50KCkuc2hvdWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rp
b25zKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gbV9mcmFtZS5kb2N1bWVudCgp
KQogICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6
OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHNjcmlwdCBp
bmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiIpOwogICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUl9JRl9BTExPV0VEKExvYWRpbmcsICJleGVjdXRlU2NyaXB0SW5Xb3JsZDogSWdub3Jp
bmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24gYXBwLWJvdW5kIGRvbWFpbiIpOwogICAg
ICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7ICJJZ25vcmluZyB1
c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluIl9zIH0pOwogICAg
IH0KKyAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLm5vdGlmeVBhZ2VPZkFwcEJvdW5kQmVo
YXZpb3IoKTsKIAogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IocGFy
YW1ldGVycy5mb3JjZVVzZXJHZXN0dXJlID09IEZvcmNlVXNlckdlc3R1cmU6OlllcyA/IE9wdGlv
bmFsPFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlPihQcm9jZXNzaW5nVXNlckdlc3R1cmUpIDog
V1RGOjpudWxsb3B0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQu
aAppbmRleCAxZTU0MjVlOTQ3Nzg1ZjE4YmU4YjU5OTQ4ZTg5NGE4ZGY4MzJjOWU3Li5iMzhjY2Qz
ZDE1NjJiN2EyYjA5M2FlNjVjZjJmZTRkZDU4NmI1MzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMzc5LDggKzM3OSw4IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgQWxsb3dzQ29udGVudEphdmFTY3JpcHQgYWxsb3dzQ29udGVudEphdmFTY3JpcHRG
cm9tTW9zdFJlY2VudE5hdmlnYXRpb24oKSBjb25zdCB7IHJldHVybiBBbGxvd3NDb250ZW50SmF2
YVNjcmlwdDo6WWVzOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgaGFzTmF2aWdhdGVkQXdheUZyb21B
cHBCb3VuZERvbWFpbigpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIG5lZWRz
SW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCBib29sIHNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygp
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeVBhZ2VPZkFwcEJvdW5k
QmVoYXZpb3IoKSB7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZS5jcHAKaW5kZXggNzYwNjZmNTJhOGEyMTg3MGI2NTc5N2M0OGY1Mzg5OWJkMmMzYjFmYy4uNTQw
ZjQ1NmVlODIxOTliYmZmNzFlNjY4OGJjMGU4MWZhNTI1ZGRhOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5j
cHAKQEAgLTY1MSwxMiArNjUxLDEzIEBAIHZvaWQgRnJhbWU6OmluamVjdFVzZXJTY3JpcHRzKFVz
ZXJTY3JpcHRJbmplY3Rpb25UaW1lIGluamVjdGlvblRpbWUpCiAKIHZvaWQgRnJhbWU6OmluamVj
dFVzZXJTY3JpcHRJbW1lZGlhdGVseShET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBVc2Vy
U2NyaXB0JiBzY3JpcHQpCiB7Ci0gICAgaWYgKGxvYWRlcigpLmNsaWVudCgpLmhhc05hdmlnYXRl
ZEF3YXlGcm9tQXBwQm91bmREb21haW4oKSAmJiAhbG9hZGVyKCkuY2xpZW50KCkubmVlZHNJbkFw
cEJyb3dzZXJQcml2YWN5UXVpcmtzKCkpIHsKKyAgICBpZiAobG9hZGVyKCkuY2xpZW50KCkuc2hv
dWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkpIHsKICAgICAgICAgaWYg
KGF1dG8qIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKSkKICAgICAgICAgICAgIGRvY3VtZW50
LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVs
OjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJv
dW5kIGRvbWFpbi4iX3MpOwogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKExv
YWRpbmcsICJpbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHk6IElnbm9yaW5nIHVzZXIgc2NyaXB0
IGluamVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KKyAgICBsb2FkZXIoKS5jbGllbnQoKS5ub3RpZnlQYWdlT2ZBcHBCb3VuZEJlaGF2aW9y
KCk7CiAKICAgICBhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7CiAgICAgaWYgKCFk
b2N1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDA2ODE4YzgyNTZhN2E0ZDY5MDU2YzkzMTBj
MWMxZDRmZmY2NWQ3YmQuLmVjMjRkMDdkMGNhNDdjZmY2NTU1NjRmZTkzZjM2ZGQ1Y2QyZTUwOGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMzE2MiwxMSArMzE2MiwxMiBAQCB2b2lkIFBhZ2U6OnJl
dmVhbEN1cnJlbnRTZWxlY3Rpb24oKQogCiB2b2lkIFBhZ2U6OmluamVjdFVzZXJTdHlsZVNoZWV0
KFVzZXJTdHlsZVNoZWV0JiB1c2VyU3R5bGVTaGVldCkKIHsKLSAgICBpZiAobV9tYWluRnJhbWUt
PmxvYWRlcigpLmNsaWVudCgpLmhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4oKSkg
eworICAgIGlmIChtX21haW5GcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuc2hvdWxkRW5hYmxlSW5B
cHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIGRvY3Vt
ZW50ID0gbV9tYWluRnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgICAgICBkb2N1bWVudC0+YWRk
Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2Fy
bmluZywgIklnbm9yaW5nIHVzZXIgc3R5bGUgc2hlZXQgZm9yIG5vbi1hcHAgYm91bmQgZG9tYWlu
LiJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgbV9tYWluRnJhbWUtPmxvYWRlcigp
LmNsaWVudCgpLm5vdGlmeVBhZ2VPZkFwcEJvdW5kQmVoYXZpb3IoKTsKIAogICAgIC8vIFdlIG5l
ZWQgdG8gd2FpdCB1bnRpbCB3ZSdyZSBubyBsb25nZXIgZGlzcGxheWluZyB0aGUgaW5pdGlhbCBl
bXB0eSBkb2N1bWVudCBiZWZvcmUgd2UgY2FuIGluamVjdCB0aGUgc3R5bGVzaGVldHMuCiAgICAg
aWYgKG1fbWFpbkZyYW1lLT5sb2FkZXIoKS5zdGF0ZU1hY2hpbmUoKS5pc0Rpc3BsYXlpbmdJbml0
aWFsRW1wdHlEb2N1bWVudCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dl
YktpdE5hbWVzcGFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1dlYktpdE5hbWVzcGFjZS5j
cHAKaW5kZXggYWMxMjQ3YzYxNGUxNmVlMGY1NTJjNzQzMDJmMjYzYjEzMjgxZjQzMC4uMDE4ZGM2
NTdhMzE5N2ZjY2RhOTRjNjc4ZmZlZDA3ZjIwZGNlY2Y0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9XZWJLaXROYW1lc3BhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
V2ViS2l0TmFtZXNwYWNlLmNwcApAQCAtNTAsOSArNTAsMTIgQEAgV2ViS2l0TmFtZXNwYWNlOjp+
V2ViS2l0TmFtZXNwYWNlKCkgPSBkZWZhdWx0OwogCiBVc2VyTWVzc2FnZUhhbmRsZXJzTmFtZXNw
YWNlKiBXZWJLaXROYW1lc3BhY2U6Om1lc3NhZ2VIYW5kbGVycygpCiB7Ci0gICAgaWYgKGZyYW1l
KCkgJiYgZnJhbWUoKS0+bG9hZGVyKCkuY2xpZW50KCkuaGFzTmF2aWdhdGVkQXdheUZyb21BcHBC
b3VuZERvbWFpbigpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoTG9h
ZGluZywgIklnbm9yaW5nIG1lc3NhZ2VIYW5kbGVycygpIHJlcXVlc3QgZm9yIG5vbiBhcHAtYm91
bmQgZG9tYWluIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmIChmcmFtZSgpKSB7
CisgICAgICAgIGlmIChmcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5zaG91bGRFbmFibGVJbkFw
cEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0df
RVJST1JfSUZfQUxMT1dFRChMb2FkaW5nLCAiSWdub3JpbmcgbWVzc2FnZUhhbmRsZXJzKCkgcmVx
dWVzdCBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKKyAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgICAgICB9CisgICAgICAgIGZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgpLm5vdGlm
eVBhZ2VPZkFwcEJvdW5kQmVoYXZpb3IoKTsKICAgICB9CiAKICAgICByZXR1cm4gJm1fbWVzc2Fn
ZUhhbmRsZXJOYW1lc3BhY2UuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZVNjb3BlUnVsZVNldHMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29w
ZVJ1bGVTZXRzLmNwcAppbmRleCAyOTVkZjQwNDEwN2FkYzBiM2Y3YmZkOWUzOWIwM2QwNGI5YzA0
ZTY0Li4wNmVjN2U5ZDY3OWQxOWE2OTBkMjkyYmQ5M2Q3NjEzNWVhNmQ4YjBhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5jcHAKQEAgLTkyLDEwICs5MiwxMyBA
QCB2b2lkIFNjb3BlUnVsZVNldHM6OmluaXRpYWxpemVVc2VyU3R5bGUoKQogICAgIGlmIChDU1NT
dHlsZVNoZWV0KiBwYWdlVXNlclNoZWV0ID0gZXh0ZW5zaW9uU3R5bGVTaGVldHMucGFnZVVzZXJT
aGVldCgpKQogICAgICAgICB0ZW1wVXNlclN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChwYWdlVXNl
clNoZWV0LT5jb250ZW50cygpLCBudWxscHRyLCBtZWRpYVF1ZXJ5RXZhbHVhdG9yLCBtX3N0eWxl
UmVzb2x2ZXIpOwogICAgIGF1dG8qIHBhZ2UgPSBtX3N0eWxlUmVzb2x2ZXIuZG9jdW1lbnQoKS5w
YWdlKCk7Ci0gICAgaWYgKHBhZ2UgJiYgcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuY2xpZW50
KCkuaGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbigpICYmICFleHRlbnNpb25TdHls
ZVNoZWV0cy5pbmplY3RlZFVzZXJTdHlsZVNoZWV0cygpLmlzRW1wdHkoKSkKKyAgICBpZiAoIWV4
dGVuc2lvblN0eWxlU2hlZXRzLmluamVjdGVkVXNlclN0eWxlU2hlZXRzKCkuaXNFbXB0eSgpICYm
IHBhZ2UgJiYgcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuY2xpZW50KCkuc2hvdWxkRW5hYmxl
SW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkpCiAgICAgICAgIG1fc3R5bGVSZXNvbHZl
ci5kb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBN
ZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHN0eWxlIHNoZWV0IGZvciBub24t
YXBwIGJvdW5kIGRvbWFpbi4iX3MpOwotICAgIGVsc2UKKyAgICBlbHNlIHsKICAgICAgICAgY29s
bGVjdFJ1bGVzRnJvbVVzZXJTdHlsZVNoZWV0cyhleHRlbnNpb25TdHlsZVNoZWV0cy5pbmplY3Rl
ZFVzZXJTdHlsZVNoZWV0cygpLCB0ZW1wVXNlclN0eWxlLmdldCgpLCBtZWRpYVF1ZXJ5RXZhbHVh
dG9yKTsKKyAgICAgICAgaWYgKHBhZ2UgJiYgIWV4dGVuc2lvblN0eWxlU2hlZXRzLmluamVjdGVk
VXNlclN0eWxlU2hlZXRzKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgcGFnZS0+bWFpbkZyYW1l
KCkubG9hZGVyKCkuY2xpZW50KCkubm90aWZ5UGFnZU9mQXBwQm91bmRCZWhhdmlvcigpOworICAg
IH0KICAgICBjb2xsZWN0UnVsZXNGcm9tVXNlclN0eWxlU2hlZXRzKGV4dGVuc2lvblN0eWxlU2hl
ZXRzLmRvY3VtZW50VXNlclN0eWxlU2hlZXRzKCksIHRlbXBVc2VyU3R5bGUuZ2V0KCksIG1lZGlh
UXVlcnlFdmFsdWF0b3IpOwogICAgIGlmICh0ZW1wVXNlclN0eWxlLT5ydWxlQ291bnQoKSA+IDAg
fHwgdGVtcFVzZXJTdHlsZS0+cGFnZVJ1bGVzKCkuc2l6ZSgpID4gMCkKICAgICAgICAgbV91c2Vy
U3R5bGUgPSBXVEZNb3ZlKHRlbXBVc2VyU3R5bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IDYx
ZjEwY2M4MTI2NGUyNGE2Zjc2ZTUxOTQxMTlmZDU2N2YzN2Y5ZjkuLjBlYmFjMDU0ZDVkMzMyYzY0
MDczZGYyNDJjMGVkNjc1MmY4ZjdkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTYyLDYgKzYy
LDcgQEAKICNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9OZXR3b3JrU2Vzc2lvbkNvY29hQWRkaXRp
b25zLmg+CiAjZWxzZQogI2RlZmluZSBORVRXT1JLX1NFU1NJT05fQ09DT0FfQURESVRJT05TXzEK
KyNkZWZpbmUgTkVUV09SS19TRVNTSU9OX0NPQ09BX0FERElUSU9OU18yIHRydWUKICNlbmRpZgog
CiAjaW1wb3J0ICJEZXZpY2VNYW5hZ2VtZW50U29mdExpbmsuaCIKQEAgLTEyNjAsNiArMTI2MSw4
IEBAIHZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6aW5pdGlhbGl6ZUVwaGVtZXJhbFN0YXRlbGVz
c1Nlc3Npb24oTmF2aWdhdGluZ1RvQXBwQm91CiBTZXNzaW9uV3JhcHBlciYgTmV0d29ya1Nlc3Np
b25Db2NvYTo6c2Vzc2lvbldyYXBwZXJGb3JUYXNrKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3ksIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKQogewogICAgIGF1dG8gc2hvdWxkQmVDb25zaWRlcmVk
QXBwQm91bmQgPSBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID8gKmlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4gOiBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6WWVzOworICAgIGlm
IChORVRXT1JLX1NFU1NJT05fQ09DT0FfQURESVRJT05TXzIpCisgICAgICAgIHNob3VsZEJlQ29u
c2lkZXJlZEFwcEJvdW5kID0gTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vOwogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNz
aW9uID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkpIHsKICAgICAgICAgYXV0byBmaXJzdFBhcnR5
ID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4ocmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2ll
cygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmNwcAppbmRleCA2ZTU2OTlh
NmYwYTc4ZGQ4YjhjMDgxMzYyNjRhZTIxM2MyODdmOGYxLi4yODk2OGVkY2E2Y2E5MjlhZTFkYmVj
MzA2MWMyZTRjNTk0MzI0MGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2Fk
UGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMu
Y3BwCkBAIC01Nyw3ICs1Nyw2IEBAIHZvaWQgTG9hZFBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKGxvY2tCYWNrRm9y
d2FyZExpc3QpOwogICAgIGVuY29kZXIgPDwgY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5
OwogICAgIGVuY29kZXIgPDwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKLSAgICBlbmNv
ZGVyIDw8IGhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW47CiAKICAgICBwbGF0Zm9y
bUVuY29kZShlbmNvZGVyKTsKIH0KQEAgLTEzOCw5ICsxMzcsNiBAQCBib29sIExvYWRQYXJhbWV0
ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBMb2FkUGFyYW1ldGVycyYgZGF0YSkK
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGRhdGEuaGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbikpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAKICAgICBpZiAoIXBsYXRmb3JtRGVjb2RlKGRlY29kZXIsIGRhdGEpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0xvYWRQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5o
CmluZGV4IGE3YTQ5ZDBlYWQzMTA2ZWQ4MTYyMmUxM2IyMmZiMTZjMjZiODkyN2IuLjBjMTFmOWM5
MjMzMTFhODhkOTMzYWFhYjY4YjU5OWU0NDYxNWFkM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTG9h
ZFBhcmFtZXRlcnMuaApAQCAtNzAsOCArNzAsNyBAQCBzdHJ1Y3QgTG9hZFBhcmFtZXRlcnMgewog
ICAgIFdlYkNvcmU6OkxvY2tIaXN0b3J5IGxvY2tIaXN0b3J5IHsgV2ViQ29yZTo6TG9ja0hpc3Rv
cnk6Ok5vIH07CiAgICAgV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlzdCBsb2NrQmFja0Zvcndh
cmRMaXN0IHsgV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8gfTsKICAgICBTdHJpbmcg
Y2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5OwotICAgIE9wdGlvbmFsPE5hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIHsgTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW46Ok5vIH07Ci0gICAgTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERv
bWFpbiBoYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluIHsgTmF2aWdhdGVkQXdheUZy
b21BcHBCb3VuZERvbWFpbjo6Tm8gfTsKKyAgICBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiB7IFdURjo6bnVsbG9wdCB9Owog
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gZGF0YURl
dGVjdGlvbkNvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Qb2xpY3lE
ZWNpc2lvbi5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUG9saWN5RGVjaXNpb24uaAppbmRleCA0
NDVlMzJiNWI5ZWFiMzJiNDcxNDUxMDc3ZWUxZDM4NDE5MDg2MTNhLi44MjkxMWI2NzFhM2YyNTUz
N2IwYzJmYTI4NWZmNjM0ZDgyYTA3MGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Qb2xpY3lEZWNpc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BvbGljeURlY2lz
aW9uLmgKQEAgLTMzLDEyICszMyw5IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1lbnVtIGNs
YXNzIE5hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4gOiBib29sIHsgWWVzLCBOb307Ci0K
IHN0cnVjdCBQb2xpY3lEZWNpc2lvbiB7CiAgICAgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlm
aWVyIGlkZW50aWZpZXIgeyB9OwotICAgIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIHsgTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW46Ok5vIH07Ci0gICAgTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbiBoYXNOYXZp
Z2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluIHsgTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERv
bWFpbjo6Tm8gfTsKKyAgICBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiB7IFdURjo6bnVsbG9wdCB9OwogICAgIFdlYkNvcmU6
OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24geyBXZWJDb3JlOjpQb2xpY3lBY3Rpb246Oklnbm9y
ZSB9OwogICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCB7IDAgfTsKICAgICBEb3dubG9hZElEIGRv
d25sb2FkSUQgeyAwIH07CkBAIC01MCw3ICs0Nyw2IEBAIHN0cnVjdCBQb2xpY3lEZWNpc2lvbiB7
CiAgICAgewogICAgICAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXI7CiAgICAgICAgIGVuY29kZXIg
PDwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKLSAgICAgICAgZW5jb2RlciA8PCBoYXNO
YXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluOwogICAgICAgICBlbmNvZGVyIDw8IHBvbGlj
eUFjdGlvbjsKICAgICAgICAgZW5jb2RlciA8PCBuYXZpZ2F0aW9uSUQ7CiAgICAgICAgIGVuY29k
ZXIgPDwgZG93bmxvYWRJRDsKQEAgLTcwLDExICs2Niw2IEBAIHN0cnVjdCBQb2xpY3lEZWNpc2lv
biB7CiAgICAgICAgIGRlY29kZXIgPj4gZGVjb2RlZElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW47CiAgICAgICAgIGlmICghZGVjb2RlZElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCiAg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgICAgICAKLSAgICAgICAgT3B0aW9u
YWw8TmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbj4gZGVjb2RlZEhhc05hdmlnYXRlZEF3
YXlGcm9tQXBwQm91bmREb21haW47Ci0gICAgICAgIGRlY29kZXIgPj4gZGVjb2RlZEhhc05hdmln
YXRlZEF3YXlGcm9tQXBwQm91bmREb21haW47Ci0gICAgICAgIGlmICghZGVjb2RlZEhhc05hdmln
YXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4pCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogCiAgICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBvbGljeUFjdGlvbj4gZGVjb2RlZFBv
bGljeUFjdGlvbjsKICAgICAgICAgZGVjb2RlciA+PiBkZWNvZGVkUG9saWN5QWN0aW9uOwpAQCAt
MTAxLDcgKzkyLDcgQEAgc3RydWN0IFBvbGljeURlY2lzaW9uIHsKICAgICAgICAgaWYgKCFzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAot
ICAgICAgICByZXR1cm4ge3sgV1RGTW92ZSgqZGVjb2RlZElkZW50aWZpZXIpLCBXVEZNb3ZlKCpk
ZWNvZGVkSXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiksIFdURk1vdmUoKmRlY29kZWRIYXNO
YXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluKSwgV1RGTW92ZSgqZGVjb2RlZFBvbGljeUFj
dGlvbiksIFdURk1vdmUoKmRlY29kZWROYXZpZ2F0aW9uSUQpLCBXVEZNb3ZlKCpkZWNvZGVkRG93
bmxvYWRJRCksIFdURk1vdmUoKmRlY29kZWRXZWJzaXRlUG9saWNpZXNEYXRhKSwgV1RGTW92ZSgq
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSl9fTsKKyAgICAgICAgcmV0dXJuIHt7IFdURk1vdmUoKmRl
Y29kZWRJZGVudGlmaWVyKSwgV1RGTW92ZSgqZGVjb2RlZElzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4pLCBXVEZNb3ZlKCpkZWNvZGVkUG9saWN5QWN0aW9uKSwgV1RGTW92ZSgqZGVjb2RlZE5h
dmlnYXRpb25JRCksIFdURk1vdmUoKmRlY29kZWREb3dubG9hZElEKSwgV1RGTW92ZSgqZGVjb2Rl
ZFdlYnNpdGVQb2xpY2llc0RhdGEpLCBXVEZNb3ZlKCpzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKX19
OwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zp
c2lvbmFsUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFs
UGFnZVByb3h5LmNwcAppbmRleCAzZWY3MjdhYmU0ZDZiZDBmMjFjNWM5NWMxZTIwNDU3ZTk5MzY2
NTg4Li5hZDQ4YmNkNjk5NDZjMzc0N2EwMjRkMmQzOTA1ZjQ3OWUzMTc4ZGY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCkBAIC0xNTYs
MTQgKzE1NiwxNCBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojppbml0aWFsaXplV2ViUGFn
ZShSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgd2VicwogICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpGcmVlemVMYXllclRyZWVEdWVUb1N3aXBlQW5pbWF0aW9uKCkpOwogfQog
Ci12b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkRGF0YShBUEk6Ok5hdmlnYXRpb24mIG5h
dmlnYXRpb24sIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBN
SU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
PiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5k
RG9tYWluIGhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4sIE9wdGlvbmFsPFdlYnNp
dGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQordm9pZCBQcm92aXNpb25hbFBhZ2VQ
cm94eTo6bG9hZERhdGEoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYg
ZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBP
cHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMp
CiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJsb2FkRGF0
YTogcGFnZVByb3h5SUQ9JSIgUFJJdTY0ICIgd2ViUGFnZUlEPSUiIFBSSXU2NCwgbV9wYWdlLmlk
ZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpKTsKIAotICAgIG1f
cGFnZS5sb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1f
d2ViUGFnZUlELCBuYXZpZ2F0aW9uLCBkYXRhLCBNSU1FVHlwZSwgZW5jb2RpbmcsIGJhc2VVUkws
IHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6OlllcywgaXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgaGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERv
bWFpbiwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpLCBuYXZpZ2F0aW9uLmxhc3ROYXZpZ2F0aW9u
QWN0aW9uKCkuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CisgICAgbV9wYWdlLmxvYWRE
YXRhV2l0aE5hdmlnYXRpb25TaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQs
IG5hdmlnYXRpb24sIGRhdGEsIE1JTUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdXNlckRhdGEs
IFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzLCBpc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcyksIG5hdmlnYXRpb24ubGFz
dE5hdmlnYXRpb25BY3Rpb24oKS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsKIH0KIAot
dm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiBu
YXZpZ2F0aW9uLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBBUEk6Ok9iamVj
dCogdXNlckRhdGEsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluLCBOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluIGhh
c05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2ll
c0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQordm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9h
ZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIE9wdGlvbmFsPE5hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBPcHRpb25h
bDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsKICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImxvYWRSZXF1ZXN0OiBwYWdlUHJveHlJ
RD0lIiBQUkl1NjQgIiB3ZWJQYWdlSUQ9JSIgUFJJdTY0LCBtX3BhZ2UuaWRlbnRpZmllcigpLnRv
VUludDY0KCksIG1fd2ViUGFnZUlELnRvVUludDY0KCkpOwogCkBAIC0xNzMsNyArMTczLDcgQEAg
dm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiBu
YXZpZ2F0aW9uLCBXZWJDb3JlOjpSZXMKICAgICBpZiAobmF2aWdhdGlvbi5mcm9tSXRlbSgpICYm
IG5hdmlnYXRpb24ubG9ja0JhY2tGb3J3YXJkTGlzdCgpID09IFdlYkNvcmU6OkxvY2tCYWNrRm9y
d2FyZExpc3Q6OlllcykKICAgICAgICAgbmF2aWdhdGlvbi5mcm9tSXRlbSgpLT5zZXRMYXN0UHJv
Y2Vzc0lkZW50aWZpZXIobV9wcm9jZXNzLT5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAKLSAg
ICBtX3BhZ2UubG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJl
ZigpLCBtX3dlYlBhZ2VJRCwgbmF2aWdhdGlvbiwgV1RGTW92ZShyZXF1ZXN0KSwgbmF2aWdhdGlv
bi5sYXN0TmF2aWdhdGlvbkFjdGlvbigpLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHVz
ZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6OlllcywgaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgaGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFp
biwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsKKyAgICBtX3BhZ2UubG9hZFJlcXVlc3RXaXRo
TmF2aWdhdGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgbmF2aWdh
dGlvbiwgV1RGTW92ZShyZXF1ZXN0KSwgbmF2aWdhdGlvbi5sYXN0TmF2aWdhdGlvbkFjdGlvbigp
LnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRU
cmVhdEFzQ29udGludWluZ0xvYWQ6OlllcywgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwg
V1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsKIH0KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94
eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0sIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiB3
ZWJzaXRlUG9saWNpZXMpCkBAIC0zNTcsNyArMzU3LDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMoRnJhbWVJZGVudGlmaWVy
IGYKICAgICBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJiByZXBs
eSkKIHsKICAgICBpZiAoIWlzTWFpbkZyYW1lIHx8IChtX21haW5GcmFtZSAmJiBtX21haW5GcmFt
ZS0+ZnJhbWVJRCgpICE9IGZyYW1lSUQpIHx8IG5hdmlnYXRpb25JRCAhPSBtX25hdmlnYXRpb25J
RCkgewotICAgICAgICByZXBseShQb2xpY3lEZWNpc2lvbiB7IGlkZW50aWZpZXIsIE5hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluOjpObywgTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbjo6
Tm8sIFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6SWdub3JlLCBuYXZpZ2F0aW9uSUQsIERvd25sb2Fk
SUQoKSwgV1RGOjpudWxsb3B0IH0pOworICAgICAgICByZXBseShQb2xpY3lEZWNpc2lvbiB7IGlk
ZW50aWZpZXIsIFdURjo6bnVsbG9wdCwgV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpJZ25vcmUsIG5h
dmlnYXRpb25JRCwgRG93bmxvYWRJRCgpLCBXVEY6Om51bGxvcHQgfSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lv
bmFsUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQ
cm94eS5oCmluZGV4IDQ0YmZjYmJkYzJiYTMxMGQwNGY1NGVhNDBjNjQ3MmQ4M2VlMGQwYzIuLjlk
NzIxMzEzODc4YTBiNDZkM2QwNDQ5NWQ0YmE3MThlZTg1ODAzY2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaApAQCAtOTIsOCArOTIsOCBAQCBw
dWJsaWM6CiAgICAgTGF5ZXJIb3N0aW5nQ29udGV4dElEIGNvbnRleHRJREZvclZpc2liaWxpdHlQ
cm9wYWdhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dElERm9yVmlzaWJpbGl0eVByb3Bh
Z2F0aW9uOyB9CiAjZW5kaWYKIAotICAgIHZvaWQgbG9hZERhdGEoQVBJOjpOYXZpZ2F0aW9uJiwg
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3Qg
U3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNl
ckRhdGEsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgTmF2aWdhdGVkQXdh
eUZyb21BcHBCb3VuZERvbWFpbiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdU
Rjo6bnVsbG9wdCk7Ci0gICAgdm9pZCBsb2FkUmVxdWVzdChBUEk6Ok5hdmlnYXRpb24mLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBPcHRpb25hbDxO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIE5hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21h
aW4sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBXVEY6Om51bGxvcHQpOworICAg
IHZvaWQgbG9hZERhdGEoQVBJOjpOYXZpZ2F0aW9uJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3Qg
U3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIE9wdGlvbmFsPE5hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluPiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdU
Rjo6bnVsbG9wdCk7CisgICAgdm9pZCBsb2FkUmVxdWVzdChBUEk6Ok5hdmlnYXRpb24mLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBPcHRpb25hbDxO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+
JiYgPSBXVEY6Om51bGxvcHQpOwogICAgIHZvaWQgZ29Ub0JhY2tGb3J3YXJkSXRlbShBUEk6Ok5h
dmlnYXRpb24mLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBv
bGljaWVzPiYmKTsKICAgICB2b2lkIGNhbmNlbCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAppbmRleCA0MDk0OGMyMWUzOWMwODk0OGYyODlhNTQ5NjJmMTUxZWUx
YmE2OWQxLi45NzBiZmVlYThlOWI4YWFiNDM5ZGQwZDlhNGY1MzY2NDQxZWRmOGUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEyODAsMTEgKzEyODAsMTEg
QEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTaG8KICAgICBpZiAoc2hvdWxkRm9yY2VGb3JlZ3JvdW5k
UHJpb3JpdHlGb3JDbGllbnROYXZpZ2F0aW9uKCkpCiAgICAgICAgIG5hdmlnYXRpb24tPnNldENs
aWVudE5hdmlnYXRpb25BY3Rpdml0eShwcm9jZXNzKCkudGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFj
dGl2aXR5KCJDbGllbnQgbmF2aWdhdGlvbiJfcykpOwogCi0gICAgbG9hZFJlcXVlc3RXaXRoTmF2
aWdhdGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgbmF2aWdhdGlv
bi5nZXQoKSwgV1RGTW92ZShyZXF1ZXN0KSwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwg
dXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8sIGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4oKSwgaGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbigpKTsK
KyAgICBsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCks
IG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9uLmdldCgpLCBXVEZNb3ZlKHJlcXVlc3QpLCBzaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5LCB1c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdM
b2FkOjpObywgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpKTsKICAgICByZXR1cm4gbmF2
aWdhdGlvbjsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRp
b25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciB3ZWJQYWdlSUQsIEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFNob3VsZFRyZWF0QXND
b250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPE5hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBOYXZp
Z2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluIGhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmRE
b21haW4sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQor
dm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdl
YlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdl
SUQsIEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBz
aG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBPcHRpb25hbDxXZWJzaXRlUG9s
aWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsKICAgICBBU1NFUlQoIW1faXNDbG9zZWQp
OwogCkBAIC0xMzA3LDcgKzEzMDcsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RX
aXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogICAgIGxv
YWRQYXJhbWV0ZXJzLmxvY2tCYWNrRm9yd2FyZExpc3QgPSBuYXZpZ2F0aW9uLmxvY2tCYWNrRm9y
d2FyZExpc3QoKTsKICAgICBsb2FkUGFyYW1ldGVycy5jbGllbnRSZWRpcmVjdFNvdXJjZUZvckhp
c3RvcnkgPSBuYXZpZ2F0aW9uLmNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSgpOwogICAg
IGxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBpc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluOwotICAgIGxvYWRQYXJhbWV0ZXJzLmhhc05hdmlnYXRlZEF3YXlG
cm9tQXBwQm91bmREb21haW4gPSBoYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluOwog
ICAgIG1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUocHJvY2VzcywgdXJsLCBt
X3BhZ2VMb2FkU3RhdGUucmVzb3VyY2VEaXJlY3RvcnlVUkwoKSwgbG9hZFBhcmFtZXRlcnMuc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSk7CiAKICAgICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKGxv
YWRQYXJhbWV0ZXJzKTsKQEAgLTE0MDQsMTEgKzE0MDMsMTEgQEAgUmVmUHRyPEFQSTo6TmF2aWdh
dGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRh
dGEsIGMKICAgICBpZiAoc2hvdWxkRm9yY2VGb3JlZ3JvdW5kUHJpb3JpdHlGb3JDbGllbnROYXZp
Z2F0aW9uKCkpCiAgICAgICAgIG5hdmlnYXRpb24tPnNldENsaWVudE5hdmlnYXRpb25BY3Rpdml0
eShwcm9jZXNzKCkudGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5KCJDbGllbnQgbmF2aWdh
dGlvbiJfcykpOwogCi0gICAgbG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChtX3Byb2Nlc3Mu
Y29weVJlZigpLCBtX3dlYlBhZ2VJRCwgbmF2aWdhdGlvbiwgZGF0YSwgTUlNRVR5cGUsIGVuY29k
aW5nLCBiYXNlVVJMLCB1c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObywg
aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBoYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJv
dW5kRG9tYWluKCksIFdURjo6bnVsbG9wdCwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7
CisgICAgbG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBt
X3dlYlBhZ2VJRCwgbmF2aWdhdGlvbiwgZGF0YSwgTUlNRVR5cGUsIGVuY29kaW5nLCBiYXNlVVJM
LCB1c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObywgaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbigpLCBXVEY6Om51bGxvcHQsIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kpOwogICAgIHJldHVybiBuYXZpZ2F0aW9uOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
bG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nl
c3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgQVBJOjpOYXZpZ2F0aW9uJiBu
YXZpZ2F0aW9uLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYg
TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwg
QVBJOjpPYmplY3QqIHVzZXJEYXRhLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxk
VHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgTmF2aWdhdGVkQXdheUZyb21BcHBCb3Vu
ZERvbWFpbiBoYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluLCBPcHRpb25hbDxXZWJz
aXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcywgU2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KQordm9pZCBXZWJQYWdlUHJveHk6
OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9j
ZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIEFQSTo6TmF2aWdhdGlvbiYg
bmF2aWdhdGlvbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcm
IE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkws
IEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3Vs
ZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2ll
c0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAibG9hZERhdGFXaXRoTmF2aWdhdGlvbiIpOwogCkBAIC0xNDI5LDcgKzE0Mjgs
NiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsCiAgICAgbG9hZFBhcmFtZXRlcnMud2Vic2l0ZVBv
bGljaWVzID0gV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpOwogICAgIGxvYWRQYXJhbWV0ZXJzLnNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
OwogICAgIGxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBpc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOwotICAgIGxvYWRQYXJhbWV0ZXJzLmhhc05hdmlnYXRl
ZEF3YXlGcm9tQXBwQm91bmREb21haW4gPSBoYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9t
YWluOwogICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRlcnMpOwogCiAg
ICAgcHJvY2Vzcy0+YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTCgqdGhpcywgYmFzZVVSTCk7CkBA
IC0zMTMwLDkgKzMxMjgsMTAgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnNldElzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW5BbmRDaGVja0lmUGVybWl0dGVkKGJvb2wgaXNNYWkKICAgICAgICAgICAg
IG1fY29uZmlndXJhdGlvbi0+c2V0V2ViVmlld0NhdGVnb3J5KFdlYlZpZXdDYXRlZ29yeTo6QXBw
Qm91bmREb21haW4pOwogICAgICAgICAgICAgbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
ID0gTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46OlllczsKICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIGlmIChtX2hhc0V4ZWN1dGVkQXBwQm91bmRCZWhhdmlvckJlZm9yZU5hdmlnYXRp
b24pCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgbV9jb25maWd1
cmF0aW9uLT5zZXRXZWJWaWV3Q2F0ZWdvcnkoV2ViVmlld0NhdGVnb3J5OjpJbkFwcEJyb3dzZXIp
OwogICAgICAgICAgICAgbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0gTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW46Ok5vOwotICAgICAgICAgICAgbV9oYXNOYXZpZ2F0ZWRBd2F5RnJv
bUFwcEJvdW5kRG9tYWluID0gTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbjo6WWVzOwog
ICAgICAgICB9CiAgICAgfQogI2Vsc2UKQEAgLTMyNzQsNyArMzI3Myw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gcG9s
aWN5QWN0aW9uLCBBCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQ
b2xpY3lBY3Rpb24gYWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIFJlZlB0cjxB
UEk6OldlYnNpdGVQb2xpY2llcz4mJiB3ZWJzaXRlUG9saWNpZXMsIFJlZjxQb2xpY3lEZWNpc2lv
blNlbmRlcj4mJiBzZW5kZXIsIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSwgV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2VzcyB3aWxsQ29u
dGludWVMb2FkSW5OZXdQcm9jZXNzKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkg
ewotICAgICAgICBzZW5kZXItPnNlbmQoUG9saWN5RGVjaXNpb24geyBzZW5kZXItPmlkZW50aWZp
ZXIoKSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBoYXNOYXZpZ2F0ZWRBd2F5RnJv
bUFwcEJvdW5kRG9tYWluKCksIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCBEb3dubG9hZElEKCks
IFdURjo6bnVsbG9wdCB9KTsKKyAgICAgICAgc2VuZGVyLT5zZW5kKFBvbGljeURlY2lzaW9uIHsg
c2VuZGVyLT5pZGVudGlmaWVyKCksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgUG9s
aWN5QWN0aW9uOjpJZ25vcmUsIDAsIERvd25sb2FkSUQoKSwgV1RGOjpudWxsb3B0IH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zMzAxLDcgKzMzMDAsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9uLCBBUEk6Ok5h
dmlnYXRpb24qCiAgICAgaWYgKHdlYnNpdGVQb2xpY2llcykKICAgICAgICAgd2Vic2l0ZVBvbGlj
aWVzRGF0YSA9IHdlYnNpdGVQb2xpY2llcy0+ZGF0YSgpOwogCi0gICAgc2VuZGVyLT5zZW5kKFBv
bGljeURlY2lzaW9uIHsgc2VuZGVyLT5pZGVudGlmaWVyKCksIGlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4oKSwgaGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbigpLCBhY3Rpb24s
IG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSA6IDAsIGRvd25sb2FkSUQs
IFdURk1vdmUod2Vic2l0ZVBvbGljaWVzRGF0YSksIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhh
bmRsZSkgfSk7CisgICAgc2VuZGVyLT5zZW5kKFBvbGljeURlY2lzaW9uIHsgc2VuZGVyLT5pZGVu
dGlmaWVyKCksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgYWN0aW9uLCBuYXZpZ2F0
aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkgOiAwLCBkb3dubG9hZElELCBXVEZNb3Zl
KHdlYnNpdGVQb2xpY2llc0RhdGEpLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpIH0p
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9h
ZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBi
b29sIHVzZWRMZWdhY3lUTFMsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8
V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNv
bnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKQEAgLTMzODIsOSArMzM4MSw5IEBAIHZvaWQgV2ViUGFn
ZVByb3h5Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiBu
YXZpZ2F0aW9uLCBzCiAgICAgICAgIC8vIEZJWE1FOiBXb3JrIG91dCB0aW1pbmcgb2YgcmVzcG9u
ZGluZyB3aXRoIHRoZSBsYXN0IHBvbGljeSBkZWxlZ2F0ZSwgZXRjCiAgICAgICAgIEFTU0VSVCgh
bmF2aWdhdGlvbi0+Y3VycmVudFJlcXVlc3QoKS5pc0VtcHR5KCkpOwogICAgICAgICBpZiAoYXV0
byYgc3Vic3RpdHV0ZURhdGEgPSBuYXZpZ2F0aW9uLT5zdWJzdGl0dXRlRGF0YSgpKQotICAgICAg
ICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPmxvYWREYXRhKG5hdmlnYXRpb24sIHsgc3Vic3RpdHV0
ZURhdGEtPmNvbnRlbnQuZGF0YSgpLCBzdWJzdGl0dXRlRGF0YS0+Y29udGVudC5zaXplKCkgfSwg
c3Vic3RpdHV0ZURhdGEtPk1JTUVUeXBlLCBzdWJzdGl0dXRlRGF0YS0+ZW5jb2RpbmcsIHN1YnN0
aXR1dGVEYXRhLT5iYXNlVVJMLCBzdWJzdGl0dXRlRGF0YS0+dXNlckRhdGEuZ2V0KCksIGlzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgaGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERv
bWFpbigpLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llc0RhdGEpKTsKKyAgICAgICAgICAgIG1fcHJv
dmlzaW9uYWxQYWdlLT5sb2FkRGF0YShuYXZpZ2F0aW9uLCB7IHN1YnN0aXR1dGVEYXRhLT5jb250
ZW50LmRhdGEoKSwgc3Vic3RpdHV0ZURhdGEtPmNvbnRlbnQuc2l6ZSgpIH0sIHN1YnN0aXR1dGVE
YXRhLT5NSU1FVHlwZSwgc3Vic3RpdHV0ZURhdGEtPmVuY29kaW5nLCBzdWJzdGl0dXRlRGF0YS0+
YmFzZVVSTCwgc3Vic3RpdHV0ZURhdGEtPnVzZXJEYXRhLmdldCgpLCBpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluKCksIFdURk1vdmUod2Vic2l0ZVBvbGljaWVzRGF0YSkpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBtX3Byb3Zpc2lvbmFsUGFnZS0+bG9hZFJlcXVlc3QobmF2aWdhdGlv
biwgUmVzb3VyY2VSZXF1ZXN0IHsgbmF2aWdhdGlvbi0+Y3VycmVudFJlcXVlc3QoKSB9LCBudWxs
cHRyLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIGhhc05hdmlnYXRlZEF3YXlGcm9t
QXBwQm91bmREb21haW4oKSwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXNEYXRhKSk7CisgICAgICAg
ICAgICBtX3Byb3Zpc2lvbmFsUGFnZS0+bG9hZFJlcXVlc3QobmF2aWdhdGlvbiwgUmVzb3VyY2VS
ZXF1ZXN0IHsgbmF2aWdhdGlvbi0+Y3VycmVudFJlcXVlc3QoKSB9LCBudWxscHRyLCBpc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIFdURk1vdmUod2Vic2l0ZVBvbGljaWVzRGF0YSkpOwog
ICAgIH07CiAgICAgaWYgKG1faW5zcGVjdG9yQ29udHJvbGxlci0+c2hvdWxkUGF1c2VMb2FkaW5n
KCptX3Byb3Zpc2lvbmFsUGFnZSkpCiAgICAgICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+c2V0
Q29udGludWVMb2FkaW5nQ2FsbGJhY2soKm1fcHJvdmlzaW9uYWxQYWdlLCBXVEZNb3ZlKGNvbnRp
bnVhdGlvbikpOwpAQCAtNTA5OCw3ICs1MDk3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMK
IAogICAgIGlmICghY2hlY2tVUkxSZWNlaXZlZEZyb21DdXJyZW50T3JQcmV2aW91c1dlYlByb2Nl
c3MocHJvY2VzcywgcmVxdWVzdC51cmwoKSkpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Jf
SUZfQUxMT1dFRChQcm9jZXNzLCAiSWdub3JpbmcgcmVxdWVzdCB0byBsb2FkIHRoaXMgbWFpbiBy
ZXNvdXJjZSBiZWNhdXNlIGl0IGlzIG91dHNpZGUgdGhlIHNhbmRib3giKTsKLSAgICAgICAgc2Vu
ZGVyLT5zZW5kKFBvbGljeURlY2lzaW9uIHsgc2VuZGVyLT5pZGVudGlmaWVyKCksIGlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4oKSwgaGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFp
bigpLCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgRG93bmxvYWRJRCgpLCBXVEY6Om51bGxvcHQg
fSk7CisgICAgICAgIHNlbmRlci0+c2VuZChQb2xpY3lEZWNpc2lvbiB7IHNlbmRlci0+aWRlbnRp
ZmllcigpLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIFBvbGljeUFjdGlvbjo6SWdu
b3JlLCAwLCBEb3dubG9hZElEKCksIFdURjo6bnVsbG9wdCB9KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtNTE3Miw5ICs1MTcxLDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKICAg
ICAgICAgCiAgICAgICAgIGlmIChwb2xpY3lBY3Rpb24gIT0gUG9saWN5QWN0aW9uOjpJZ25vcmUp
IHsKICAgICAgICAgICAgIGlmICghc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbkFuZENo
ZWNrSWZQZXJtaXR0ZWQoZnJhbWUtPmlzTWFpbkZyYW1lKCksIG5hdmlnYXRpb24tPmN1cnJlbnRS
ZXF1ZXN0KCkudXJsKCksIGlzQXBwQm91bmREb21haW4pKSB7Ci0gICAgICAgICAgICAgICAgYXV0
byBlcnJvciA9IFJlc291cmNlRXJyb3IgeyBTdHJpbmcgeyB9LCAwLCBuYXZpZ2F0aW9uLT5jdXJy
ZW50UmVxdWVzdCgpLnVybCgpLCAiQXR0ZW1wdGVkIG5hdmlnYXRpb24gYXdheSBmcm9tIGFwcC1i
b3VuZCBkb21haW4iX3MgfTsKKyAgICAgICAgICAgICAgICBhdXRvIGVycm9yID0gUmVzb3VyY2VF
cnJvciB7IFN0cmluZyB7IH0sIDAsIG5hdmlnYXRpb24tPmN1cnJlbnRSZXF1ZXN0KCkudXJsKCks
ICJBcHAtYm91bmQgZG9tYWluIGZhaWx1cmUiX3MgfTsKICAgICAgICAgICAgICAgICBtX25hdmln
YXRpb25DbGllbnQtPmRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25XaXRoRXJyb3IoKnRoaXMs
IEZyYW1lSW5mb0RhdGEgeyBmcmFtZUluZm8gfSwgbmF2aWdhdGlvbi5nZXQoKSwgZXJyb3IsIHVz
ZXJEYXRhT2JqZWN0KTsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExP
V0VEKExvYWRpbmcsICJJZ25vcmluZyByZXF1ZXN0IHRvIGxvYWQgdGhpcyBtYWluIHJlc291cmNl
IGJlY2F1c2UgaXQgaXMgYXR0ZW1wdGluZyB0byBuYXZpZ2F0ZSBhd2F5IGZyb20gYW4gYXBwLWJv
dW5kIGRvbWFpbiIpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9X
RUQoTG9hZGluZywgIklnbm9yaW5nIHJlcXVlc3QgdG8gbG9hZCB0aGlzIG1haW4gcmVzb3VyY2Ug
YmVjYXVzZSBpdCBpcyBhdHRlbXB0aW5nIHRvIG5hdmlnYXRlIGF3YXkgZnJvbSBhbiBhcHAtYm91
bmQgZG9tYWluIG9yIG5hdmlnYXRlIGFmdGVyIHVzaW5nIHJlc3RyaWN0ZWQgQVBJcyIpOwogICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6SWdub3JlKTsKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC01MzQ2LDcgKzUzNDUsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNT
aGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eQogICAgIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24oV1RGTW92ZShwcm9jZXNzKSwgKmZyYW1lLCBXVEZNb3ZlKGZyYW1lSW5mbyksIG5hdmln
YXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIFdURk1vdmUob3JpZ2luYXRp
bmdGcmFtZUluZm8pLCBvcmlnaW5hdGluZ1BhZ2VJRCwgb3JpZ2luYWxSZXF1ZXN0LCBXVEZNb3Zl
KHJlcXVlc3QpLCBXVEZNb3ZlKHJlcXVlc3RCb2R5KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNl
KSwgdXNlckRhdGEsIHNlbmRlci5jb3B5UmVmKCkpOwogCiAgICAgLy8gSWYgdGhlIGNsaWVudCBk
aWQgbm90IHJlc3BvbmQgc3luY2hyb25vdXNseSwgcHJvY2VlZCB3aXRoIHRoZSBsb2FkLgotICAg
IHNlbmRlci0+c2VuZChQb2xpY3lEZWNpc2lvbiB7IHNlbmRlci0+aWRlbnRpZmllcigpLCBpc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIGhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmRE
b21haW4oKSwgUG9saWN5QWN0aW9uOjpVc2UsIG5hdmlnYXRpb25JRCwgRG93bmxvYWRJRCgpLCBX
VEY6Om51bGxvcHQgfSk7CisgICAgc2VuZGVyLT5zZW5kKFBvbGljeURlY2lzaW9uIHsgc2VuZGVy
LT5pZGVudGlmaWVyKCksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgUG9saWN5QWN0
aW9uOjpVc2UsIG5hdmlnYXRpb25JRCwgRG93bmxvYWRJRCgpLCBXVEY6Om51bGxvcHQgfSk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFBvbGljeUNo
ZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRp
b25BY3Rpb25EYXRhLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAwMTc4NzgxZTc3NjZjODRh
YzhiNTYwN2Q2YzQzZTRjN2E2NTI5MDZhLi43Njk4ZTZhMDM3ODNiMjcxYjNhMzg1MDljOGNjMGYx
NDg1ZTQ5OTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTY1
MCw4ICsxNjUwLDggQEAgcHVibGljOgogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbkFzeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2Vi
Q29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmln
YXRpb25BY3Rpb25EYXRhJiYsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5mbywg
T3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEm
LCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNl
U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UG9saWN5
Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNh
blNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgdWludDY0X3Qg
bGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIHN0YXJ0VVJMU2NoZW1lVGFz
a1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
VVJMU2NoZW1lVGFza1BhcmFtZXRlcnMmJik7Ci0gICAgdm9pZCBsb2FkRGF0YVdpdGhOYXZpZ2F0
aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBBUEk6Ok5hdmlnYXRpb24mLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJp
bmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VV
UkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVp
bmdMb2FkLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIE5hdmlnYXRlZEF3
YXlGcm9tQXBwQm91bmREb21haW4sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBX
VEY6Om51bGxvcHQsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBXZWJD
b3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7Ci0gICAg
dm9pZCBsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBBUEk6Ok5hdmlnYXRpb24mLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwg
QVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xv
YWQsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgTmF2aWdhdGVkQXdheUZy
b21BcHBCb3VuZERvbWFpbiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdURjo6
bnVsbG9wdCk7CisgICAgdm9pZCBsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBBUEk6Ok5hdmlnYXRpb24m
LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25z
dCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1
c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRpb25hbDxO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+
JiYgPSBXVEY6Om51bGxvcHQsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kg
PSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7
CisgICAgdm9pZCBsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNz
UHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBBUEk6Ok5hdmlnYXRpb24mLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGlu
dWluZ0xvYWQsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgT3B0aW9uYWw8
V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdURjo6bnVsbG9wdCk7CiAgICAgdm9pZCBiYWNrRm9y
d2FyZEdvVG9JdGVtU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIGNvbnN0IFdlYkNvcmU6
OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cyYpPiYmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb25TeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciwgYm9vbCBpc01haW5GcmFtZSwgRnJhbWVJbmZvRGF0YSYmLCBX
ZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2
aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZv
LCBPcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0
YSYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b25TeW5jRGVsYXllZFJlcGx5JiYpOwogI2lmIFVTRShRVUlDS19MT09LKQpAQCAtMTc2Myw2ICsx
NzYzLDggQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlTWVkaWFVc2FnZU1hbmFnZXJTZXNzaW9u
KFdlYkNvcmU6Ok1lZGlhU2Vzc2lvbklkZW50aWZpZXIpOwogI2VuZGlmCiAKKyAgICB2b2lkIHNl
dEhhc0V4ZWN1dGVkQXBwQm91bmRCZWhhdmlvckJlZm9yZU5hdmlnYXRpb24oKSB7IG1faGFzRXhl
Y3V0ZWRBcHBCb3VuZEJlaGF2aW9yQmVmb3JlTmF2aWdhdGlvbiA9IHRydWU7IH0KKyAgICAgICAg
CiBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5
JiwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0
aWFsaXplKCk7CkBAIC0yMzE3LDcgKzIzMTksNiBAQCBwcml2YXRlOgogICAgIHZvaWQgbWFrZVN0
b3JhZ2VTcGFjZVJlcXVlc3QoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJp
bmcmIGRpc3BsYXlOYW1lLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRP
cmlnaW5Vc2FnZSwgdWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVpbnQ2NF90IGV4cGVj
dGVkVXNhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmKTsKICAgICAgICAg
CiAgICAgYm9vbCBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluQW5kQ2hlY2tJZlBlcm1p
dHRlZChib29sIGlzTWFpbkZyYW1lLCBjb25zdCBVUkwmLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbj4pOwotICAgIE5hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4gaGFz
TmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1faGFzTmF2
aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbjsgfQogICAgICAgICAKICAgICBjb25zdCBJZGVu
dGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3dlYlBh
Z2VJRDsKQEAgLTI4MTEsMTEgKzI4MTIsMTEgQEAgcHJpdmF0ZToKICAgICBNb25vdG9uaWNUaW1l
IG1fZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yTWFpbkZyYW1lVGltZXN0YW1wOwogI2VuZGlmCiAg
ICAgICAgIAotICAgIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBtX2lzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4geyBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm8g
fTsKLSAgICBOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluIG1faGFzTmF2aWdhdGVkQXdh
eUZyb21BcHBCb3VuZERvbWFpbiB7IE5hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW46Ok5v
IH07CisgICAgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IG1faXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbiB7IFdURjo6bnVsbG9wdCB9OwogICAgIGJvb2wgbV9pZ25vcmVz
QXBwQm91bmREb21haW5zIHsgZmFsc2UgfTsKICAgICBib29sIG1fdXNlclNjcmlwdHNOb3RpZmll
ZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFp
bnMgeyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXNFeGVjdXRlZEFwcEJvdW5kQmVoYXZpb3JCZWZv
cmVOYXZpZ2F0aW9uIHsgZmFsc2UgfTsKIAogI2lmIEVOQUJMRShST1VUSU5HX0FSQklUUkFUSU9O
KQogICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5
PiBtX3JvdXRpbmdBcmJpdHJhdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGQxMjAyMTE1MjFmMDYxMTkxOTVkOWRjNzhjOGY0
N2VkZDY4ZGRjZGUuLjczZjkzMjE2YjRhNDFlY2ZiYWI3YmUyNTQxMjljODVjNzcyOGYxNDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4K
QEAgLTU5OSw0ICs1OTksNSBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIFJlbW92
ZU1lZGlhVXNhZ2VNYW5hZ2VyU2Vzc2lvbihXZWJDb3JlOjpNZWRpYVNlc3Npb25JZGVudGlmaWVy
IGlkZW50aWZpZXIpOwogI2VuZGlmCiAKKyAgICBTZXRIYXNFeGVjdXRlZEFwcEJvdW5kQmVoYXZp
b3JCZWZvcmVOYXZpZ2F0aW9uKCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmlu
ZGV4IGU0NmRhMGUwYTU4MDc5MTBmNGU0ZDJmNmZjNGU5MzE4NTA1NjdhZmEuLjdjYTdhYzYxMTY0
N2U0MDkzOTk5ZTRhMmNlNjVlNDI4NTMwOTYwNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcApAQCAtODMwLDcgKzgzMCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zCiAgICAg
dWludDY0X3QgbGlzdGVuZXJJRCA9IG1fZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXIoaWRlbnRp
ZmllciwgV1RGTW92ZShmdW5jdGlvbiksIFdlYkZyYW1lOjpGb3JOYXZpZ2F0aW9uQWN0aW9uOjpO
byk7CiAgICAgaWYgKCF3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lk
ZVBvbGljeUZvclJlc3BvbnNlKG1fZnJhbWUtPmZyYW1lSUQoKSwgbV9mcmFtZS0+aW5mbygpLCBp
ZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93UmVzcG9u
c2UsIGRvd25sb2FkQXR0cmlidXRlLCBsaXN0ZW5lcklELCBVc2VyRGF0YShXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQo
KSkpKSkgewogICAgICAgICBXRUJGUkFNRUxPQURFUkNMSUVOVF9SRUxFQVNFX0xPRyhOZXR3b3Jr
LCAiZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZTogaWdub3JpbmcgYmVjYXVzZSBXZWJQ
YWdlUHJveHk6OkRlY2lkZVBvbGljeUZvclJlc3BvbnNlIGZhaWxlZCIpOwotICAgICAgICBtX2Zy
YW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24g
eyBpZGVudGlmaWVyLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm8sIE5hdmlnYXRlZEF3
YXlGcm9tQXBwQm91bmREb21haW46Ok5vLCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgeyB9LCB7
IH0gfSk7CisgICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5l
cklELCBQb2xpY3lEZWNpc2lvbiB7IGlkZW50aWZpZXIsIFdURjo6bnVsbG9wdCwgUG9saWN5QWN0
aW9uOjpJZ25vcmUsIDAsIHsgfSwgeyB9IH0pOwogICAgIH0KIH0KIApAQCAtOTkyLDE3ICs5OTIs
MTcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXQKICAgICAgICAgUG9saWN5RGVjaXNpb24gcG9s
aWN5RGVjaXNpb247CiAKICAgICAgICAgaWYgKCF3ZWJQYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyhtX2ZyYW1l
LT5mcmFtZUlEKCksIG1fZnJhbWUtPmlzTWFpbkZyYW1lKCksIG1fZnJhbWUtPmluZm8oKSwgcmVx
dWVzdElkZW50aWZpZXIsIGRvY3VtZW50TG9hZGVyLT5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlv
bkFjdGlvbkRhdGEsIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgb3JpZ2luYXRpbmdQYWdlSUQs
IG5hdmlnYXRpb25BY3Rpb24ucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QsIElQQzo6Rm9ybURh
dGFSZWZlcmVuY2UgeyByZXF1ZXN0Lmh0dHBCb2R5KCkgfSwgcmVkaXJlY3RSZXNwb25zZSwgVXNl
ckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1
c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OlJlcGx5KHBvbGljeURlY2lzaW9uKSkpIHsKLSAg
ICAgICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBQ
b2xpY3lEZWNpc2lvbiB7IHJlcXVlc3RJZGVudGlmaWVyLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbjo6Tm8sIE5hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW46Ok5vLCBQb2xpY3lBY3Rp
b246Oklnbm9yZSwgMCwgeyB9LCB7IH0gfSk7CisgICAgICAgICAgICBtX2ZyYW1lLT5kaWRSZWNl
aXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24geyByZXF1ZXN0SWRl
bnRpZmllciwgV1RGOjpudWxsb3B0LCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgeyB9LCB7IH0g
fSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBtX2ZyYW1lLT5k
aWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24geyBwb2xp
Y3lEZWNpc2lvbi5pZGVudGlmaWVyLCBwb2xpY3lEZWNpc2lvbi5pc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluLCBwb2xpY3lEZWNpc2lvbi5oYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9t
YWluLCBwb2xpY3lEZWNpc2lvbi5wb2xpY3lBY3Rpb24sIDAsIHBvbGljeURlY2lzaW9uLmRvd25s
b2FkSUQsIHsgfX0pOworICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24o
bGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24geyBwb2xpY3lEZWNpc2lvbi5pZGVudGlmaWVyLCBw
b2xpY3lEZWNpc2lvbi5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBwb2xpY3lEZWNpc2lv
bi5wb2xpY3lBY3Rpb24sIDAsIHBvbGljeURlY2lzaW9uLmRvd25sb2FkSUQsIHsgfX0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgQVNTRVJUKHBvbGljeURlY2lzaW9uTW9kZSA9PSBQ
b2xpY3lEZWNpc2lvbk1vZGU6OkFzeW5jaHJvbm91cyk7CiAgICAgaWYgKCF3ZWJQYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25B
c3luYyhtX2ZyYW1lLT5mcmFtZUlEKCksIG1fZnJhbWUtPmluZm8oKSwgcmVxdWVzdElkZW50aWZp
ZXIsIGRvY3VtZW50TG9hZGVyLT5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbkFjdGlvbkRhdGEs
IG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgb3JpZ2luYXRpbmdQYWdlSUQsIG5hdmlnYXRpb25B
Y3Rpb24ucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2Ug
eyByZXF1ZXN0Lmh0dHBCb2R5KCkgfSwgcmVkaXJlY3RSZXNwb25zZSwgVXNlckRhdGEoV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQo
KSkuZ2V0KCkpLCBsaXN0ZW5lcklEKSkpCi0gICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xp
Y3lEZWNpc2lvbihsaXN0ZW5lcklELCBQb2xpY3lEZWNpc2lvbiB7IHJlcXVlc3RJZGVudGlmaWVy
LCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm8sIE5hdmlnYXRlZEF3YXlGcm9tQXBwQm91
bmREb21haW46Ok5vLCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgeyB9LCB7IH0gfSk7CisgICAg
ICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBQb2xpY3lE
ZWNpc2lvbiB7IHJlcXVlc3RJZGVudGlmaWVyLCBXVEY6Om51bGxvcHQsIFBvbGljeUFjdGlvbjo6
SWdub3JlLCAwLCB7IH0sIHsgfSB9KTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
Y2FuY2VsUG9saWN5Q2hlY2soKQpAQCAtMTkyMSw3ICsxOTIxLDcgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nQXBwbGljYXRpb25NYW5pZmVzdCh1aW50NjRfdCBj
YWxsYmFja0kKIH0KICNlbmRpZiAvLyBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCiAKLWJv
b2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6Omhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21h
aW4oKQorYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkRW5hYmxlSW5BcHBCcm93c2Vy
UHJpdmFjeVByb3RlY3Rpb25zKCkKIHsKICAgICBpZiAoIW1fZnJhbWUtPmlzTWFpbkZyYW1lKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE5MjksMTkgKzE5MjksMjEgQEAgYm9vbCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6aGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbigpCiAg
ICAgYXV0byogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXdlYlBhZ2UpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICByZXR1cm4gd2ViUGFnZS0+aGFzTmF2aWdh
dGVkQXdheUZyb21BcHBCb3VuZERvbWFpbigpID09IE5hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmRE
b21haW46OlllczsKKworICAgIHJldHVybiB3ZWJQYWdlLT5zaG91bGRFbmFibGVJbkFwcEJyb3dz
ZXJQcml2YWN5UHJvdGVjdGlvbnMoKTsKIH0KIAotYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
bmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzKCkgY29uc3QKK3ZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6Om5vdGlmeVBhZ2VPZkFwcEJvdW5kQmVoYXZpb3IoKQogeworICAgIGlmICghbV9m
cmFtZS0+aXNNYWluRnJhbWUoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgYXV0byogd2ViUGFn
ZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXdlYlBhZ2UpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAKLSAgICByZXR1cm4gd2ViUGFnZS0+bmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5
UXVpcmtzKCk7Ci19CisgICAgICAgIHJldHVybjsKIAorICAgIHdlYlBhZ2UtPm5vdGlmeVBhZ2VP
ZkFwcEJvdW5kQmVoYXZpb3IoKTsKK30KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMGY4ZWIwOTNmZjc2ZTU3NzM0MDU2ZTYzY2UzNzY3
YjJlZjY3MDllMC4uNTA0MTgzZDJhY2E1ZjIyY2RkZTM4NDg0NmViYzE3NzllMGE0NDZhNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTI4OCw4ICsyODgsOCBAQCBwcml2YXRlOgog
ICAgIE9wdGlvbmFsPEZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRpZmllcj4gbV9mcmFt
ZVNwZWNpZmljU3RvcmFnZUFjY2Vzc0lkZW50aWZpZXI7CiAjZW5kaWYKIAotICAgIGJvb2wgaGFz
TmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbigpIGZpbmFsOwotICAgIGJvb2wgbmVlZHNJ
bkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBzaG91bGRF
bmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKSBmaW5hbDsKKyAgICB2b2lkIG5v
dGlmeVBhZ2VPZkFwcEJvdW5kQmVoYXZpb3IoKSBmaW5hbDsKIH07CiAKIC8vIEFzIGxvbmcgYXMg
RW1wdHlGcmFtZUxvYWRlckNsaWVudCBleGlzdHMgaW4gV2ViQ29yZSwgdGhpcyBjYW4gcmV0dXJu
IDAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4
IDE3ZWFjNDE3ZTJjY2NmNTUxNmVmNTE1YzRjMjkxODFiYjI5YTgxMzkuLmY4OWJmNjI3YTg4M2Q2
YTUwOTE0N2E0M2YzYTBjOWMzYmIwMmY5MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC00NzUsNyArNDc1LDcgQEAgV2ViUGFnZTo6V2ViUGFn
ZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJh
bWV0ZXJzKQogI2VuZGlmCiAgICAgLCBtX292ZXJyaWRkZW5NZWRpYVR5cGUocGFyYW1ldGVycy5v
dmVycmlkZGVuTWVkaWFUeXBlKQogICAgICwgbV9wcm9jZXNzRGlzcGxheU5hbWUocGFyYW1ldGVy
cy5wcm9jZXNzRGlzcGxheU5hbWUpCi0gICAgLCBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4ocGFyYW1ldGVycy5saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zID8gTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW46OlllcyA6IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpO
bykKKyAgICAsIG1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyhwYXJhbWV0ZXJz
LmxpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMpCiB7CiAgICAgQVNTRVJUKG1faWRl
bnRpZmllcik7CiAKQEAgLTE1MjcsNyArMTUyNyw2IEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1E
aWRSZWNlaXZlTG9hZFBhcmFtZXRlcnMoY29uc3QgTG9hZFBhcmFtZXRlcnMmIGxvYWRQYXJhbWV0
CiB2b2lkIFdlYlBhZ2U6OmxvYWRSZXF1ZXN0KExvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRl
cnMpCiB7CiAgICAgc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihsb2FkUGFyYW1ldGVy
cy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKLSAgICBzZXRIYXNOYXZpZ2F0ZWRBd2F5
RnJvbUFwcEJvdW5kRG9tYWluKGxvYWRQYXJhbWV0ZXJzLmhhc05hdmlnYXRlZEF3YXlGcm9tQXBw
Qm91bmREb21haW4pOwogCiAgICAgU2VuZFN0b3BSZXNwb25zaXZlbmVzc1RpbWVyIHN0b3BwZXI7
CiAKQEAgLTE1NjMsMTAgKzE1NjIsOSBAQCBOT19SRVRVUk4gdm9pZCBXZWJQYWdlOjpsb2FkUmVx
dWVzdFdhaXRpbmdGb3JQcm9jZXNzTGF1bmNoKExvYWRQYXJhbWV0ZXJzJiYsIFVSTAogICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6bG9hZERhdGFJ
bXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgYm9vbCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xv
YWQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIHNoYXJlZEJ1ZmZlciwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29u
c3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVVJMJiB1
bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBPcHRpb25hbDxOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgTmF2aWdh
dGVkQXdheUZyb21BcHBCb3VuZERvbWFpbiBoYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9t
YWluLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kpCit2b2lkIFdlYlBhZ2U6OmxvYWREYXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IGJvb2wgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRpb25hbDxXZWJzaXRlUG9saWNp
ZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcywgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBzaGFyZWRCdWZm
ZXIsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBj
b25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJE
YXRhJiB1c2VyRGF0YSwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkKIHsKICAgICBzZXRJc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluKGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOwotICAgIHNldEhhc05hdmln
YXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4oaGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERv
bWFpbik7CiAKICAgICBTZW5kU3RvcFJlc3BvbnNpdmVuZXNzVGltZXIgc3RvcHBlcjsKIApAQCAt
MTU5NSw3ICsxNTkzLDcgQEAgdm9pZCBXZWJQYWdlOjpsb2FkRGF0YShMb2FkUGFyYW1ldGVycyYm
IGxvYWRQYXJhbWV0ZXJzKQogCiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihsb2FkUGFyYW1ldGVycy5kYXRh
LmRhdGEoKSksIGxvYWRQYXJhbWV0ZXJzLmRhdGEuc2l6ZSgpKTsKICAgICBVUkwgYmFzZVVSTCA9
IGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gYWJvdXRCbGFua1VSTCgp
IDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nKTsKLSAgICBsb2FkRGF0
YUltcGwobG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklELCBsb2FkUGFyYW1ldGVycy5zaG91bGRU
cmVhdEFzQ29udGludWluZ0xvYWQsIFdURk1vdmUobG9hZFBhcmFtZXRlcnMud2Vic2l0ZVBvbGlj
aWVzKSwgV1RGTW92ZShzaGFyZWRCdWZmZXIpLCBsb2FkUGFyYW1ldGVycy5NSU1FVHlwZSwgbG9h
ZFBhcmFtZXRlcnMuZW5jb2RpbmdOYW1lLCBiYXNlVVJMLCBVUkwoKSwgbG9hZFBhcmFtZXRlcnMu
dXNlckRhdGEsIGxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIGxv
YWRQYXJhbWV0ZXJzLmhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4sIGxvYWRQYXJh
bWV0ZXJzLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOworICAgIGxvYWREYXRhSW1wbChs
b2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQsIGxvYWRQYXJhbWV0ZXJzLnNob3VsZFRyZWF0QXND
b250aW51aW5nTG9hZCwgV1RGTW92ZShsb2FkUGFyYW1ldGVycy53ZWJzaXRlUG9saWNpZXMpLCBX
VEZNb3ZlKHNoYXJlZEJ1ZmZlciksIGxvYWRQYXJhbWV0ZXJzLk1JTUVUeXBlLCBsb2FkUGFyYW1l
dGVycy5lbmNvZGluZ05hbWUsIGJhc2VVUkwsIFVSTCgpLCBsb2FkUGFyYW1ldGVycy51c2VyRGF0
YSwgbG9hZFBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgbG9hZFBhcmFt
ZXRlcnMuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6
bG9hZEFsdGVybmF0ZUhUTUwoTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKQEAgLTE2
MDcsNyArMTYwNSw3IEBAIHZvaWQgV2ViUGFnZTo6bG9hZEFsdGVybmF0ZUhUTUwoTG9hZFBhcmFt
ZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKICAgICBVUkwgcHJvdmlzaW9uYWxMb2FkRXJyb3JVUkwg
PSBsb2FkUGFyYW1ldGVycy5wcm92aXNpb25hbExvYWRFcnJvclVSTFN0cmluZy5pc0VtcHR5KCkg
PyBVUkwoKSA6IFVSTChVUkwoKSwgbG9hZFBhcmFtZXRlcnMucHJvdmlzaW9uYWxMb2FkRXJyb3JV
UkxTdHJpbmcpOwogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obG9hZFBhcmFtZXRlcnMuZGF0YS5kYXRhKCkp
LCBsb2FkUGFyYW1ldGVycy5kYXRhLnNpemUoKSk7CiAgICAgbV9tYWluRnJhbWUtPmNvcmVGcmFt
ZSgpLT5sb2FkZXIoKS5zZXRQcm92aXNpb25hbExvYWRFcnJvckJlaW5nSGFuZGxlZFVSTChwcm92
aXNpb25hbExvYWRFcnJvclVSTCk7ICAgIAotICAgIGxvYWREYXRhSW1wbChsb2FkUGFyYW1ldGVy
cy5uYXZpZ2F0aW9uSUQsIGxvYWRQYXJhbWV0ZXJzLnNob3VsZFRyZWF0QXNDb250aW51aW5nTG9h
ZCwgV1RGTW92ZShsb2FkUGFyYW1ldGVycy53ZWJzaXRlUG9saWNpZXMpLCBXVEZNb3ZlKHNoYXJl
ZEJ1ZmZlciksIGxvYWRQYXJhbWV0ZXJzLk1JTUVUeXBlLCBsb2FkUGFyYW1ldGVycy5lbmNvZGlu
Z05hbWUsIGJhc2VVUkwsIHVucmVhY2hhYmxlVVJMLCBsb2FkUGFyYW1ldGVycy51c2VyRGF0YSwg
bG9hZFBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgbG9hZFBhcmFtZXRl
cnMuaGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbik7CisgICAgbG9hZERhdGFJbXBs
KGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRCwgbG9hZFBhcmFtZXRlcnMuc2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkLCBXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzLndlYnNpdGVQb2xpY2llcyks
IFdURk1vdmUoc2hhcmVkQnVmZmVyKSwgbG9hZFBhcmFtZXRlcnMuTUlNRVR5cGUsIGxvYWRQYXJh
bWV0ZXJzLmVuY29kaW5nTmFtZSwgYmFzZVVSTCwgdW5yZWFjaGFibGVVUkwsIGxvYWRQYXJhbWV0
ZXJzLnVzZXJEYXRhLCBsb2FkUGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
KTsKICAgICBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLnNldFByb3Zpc2lvbmFs
TG9hZEVycm9yQmVpbmdIYW5kbGVkVVJMKHsgfSk7CiB9CiAKQEAgLTMyNTMsNyArMzI1MSw2IEBA
IHZvaWQgV2ViUGFnZTo6c2V0TGF5ZXJIb3N0aW5nTW9kZShMYXllckhvc3RpbmdNb2RlIGxheWVy
SG9zdGluZ01vZGUpCiB2b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24m
JiBwb2xpY3lEZWNpc2lvbikKIHsKICAgICBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
KHBvbGljeURlY2lzaW9uLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOwotICAgIHNldEhh
c05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4ocG9saWN5RGVjaXNpb24uaGFzTmF2aWdh
dGVkQXdheUZyb21BcHBCb3VuZERvbWFpbik7CiAKICAgICBXZWJGcmFtZSogZnJhbWUgPSBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBpZiAoIWZyYW1lKQpA
QCAtMzQyNiw4ICszNDIzLDcgQEAgdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdlYkZyYW1l
KiBmcmFtZSwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXIKIAogICAgICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soZGF0YVJlZmVy
ZW5jZSwgZGV0YWlscywgY2FsbGJhY2tJRCkpOwogICAgIH07Ci0gICAgCi0gICAgaWYgKGhhc05h
dmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4oKSA9PSBOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJv
dW5kRG9tYWluOjpZZXMgJiYgIW1fbmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzKSB7Cisg
ICAgaWYgKHNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7CiAg
ICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVDYWxsYmFjayh7
IH0sIEV4Y2VwdGlvbkRldGFpbHMgeyAiVW5hYmxlIHRvIGV4ZWN1dGUgSmF2YVNjcmlwdCJfcyB9
LCBjYWxsYmFja0lEKSk7CiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IG1fcGFnZS0+bWFp
bkZyYW1lKCkuZG9jdW1lbnQoKSkKICAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdu
b3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iKTsK
QEAgLTM2ODMsOCArMzY3OSw4IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMoY29u
c3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAgICAgICAgIGRpc2FibGVTZXJ2aWNlV29y
a2VyRW50aXRsZW1lbnQoKTsKIAogICAgIGlmIChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2Vi
UHJlZmVyZW5jZXNLZXk6OnNlcnZpY2VXb3JrZXJzRW5hYmxlZEtleSgpKSkgewotICAgICAgICBB
U1NFUlQocGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpIHx8IG1faXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik7Ci0gICAgICAgIGlmICghcGFyZW50UHJvY2Vzc0hh
c1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpICYmICFtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4pCisgICAgICAgIEFTU0VSVChwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0
bGVtZW50KCkgfHwgbV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKTsKKyAgICAg
ICAgaWYgKCFwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkgJiYgIW1f
bGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucykKICAgICAgICAgICAgIFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0U2VydmljZVdvcmtlckVuYWJsZWQo
ZmFsc2UpOwogICAgIH0KICNlbmRpZgpAQCAtNzEwMiw2ICs3MDk4LDI3IEBAIHZvaWQgV2ViUGFn
ZTo6YW5pbWF0aW9uRGlkRmluaXNoRm9yRWxlbWVudChjb25zdCBXZWJDb3JlOjpFbGVtZW50JikK
IAogI2VuZGlmCiAKK3ZvaWQgV2ViUGFnZTo6c2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bihPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbikKK3sKKyAgICBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBpc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOworICAgIAorICAgIG1fbmF2aWdhdGlvbkhhc09jY3Vy
ZWQgPSB0cnVlOworfQorCit2b2lkIFdlYlBhZ2U6Om5vdGlmeVBhZ2VPZkFwcEJvdW5kQmVoYXZp
b3IoKQoreworICAgIGlmICghbV9uYXZpZ2F0aW9uSGFzT2NjdXJlZCAmJiAhbV9saW1pdHNOYXZp
Z2F0aW9uc1RvQXBwQm91bmREb21haW5zKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlNldEhhc0V4ZWN1dGVkQXBwQm91bmRCZWhhdmlvckJlZm9yZU5hdmlnYXRpb24oKSk7
Cit9CisKK2Jvb2wgV2ViUGFnZTo6c2hvdWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3Rl
Y3Rpb25zKCkKK3sKKyAgICBpZiAobV9uZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3MpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluKCkgJiYgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpID09IE5hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluOjpObzsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRl
ZiBSRUxFQVNFX0xPR19JRl9BTExPV0VECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKaW5kZXggM2RkYWI5YTYyYmRlZjY2MTFmNjI0NWQ5OGM5ZmExZTc0MDRiOTcx
ZC4uZmNhY2YzNTNmMDAzYzc2NTU0ODdlOGUwNmJlZWQ1NTU5ZWM0MjdkYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTMxNSwxMSArMTMxNSwxMCBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGdldEFsbEZyYW1lcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEZyYW1lVHJlZU5vZGVEYXRhJiYpPiYmKTsKIAotICAgIHZvaWQgc2V0SXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbihPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbikgeyBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4g
PSBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOyB9CisgICAgdm9pZCBub3RpZnlQYWdlT2ZB
cHBCb3VuZEJlaGF2aW9yKCk7CisgICAgYm9vbCBzaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2
YWN5UHJvdGVjdGlvbnMoKTsKKyAgICB2b2lkIHNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4oT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+KTsKICAgICBPcHRpb25hbDxO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigp
IGNvbnN0IHsgcmV0dXJuIG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsgfQotICAgIE5h
dmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4gaGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3Vu
ZERvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1faGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERv
bWFpbjsgfQotICAgIHZvaWQgc2V0SGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbihO
YXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluIG5hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmRE
b21haW4pIHsgbV9oYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluID0gbmF2aWdhdGVk
QXdheUZyb21BcHBCb3VuZERvbWFpbjsgfQotICAgIGJvb2wgbmVlZHNJbkFwcEJyb3dzZXJQcml2
YWN5UXVpcmtzKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWly
a3M7IH0KICAgICAKICAgICBib29sIHNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcihXZWJDb3Jl
OjpSZW5kZXJpbmdQdXJwb3NlKTsKIApAQCAtMTQxOSw3ICsxNDE4LDcgQEAgcHJpdmF0ZToKIAog
ICAgIFN0cmluZyBzb3VyY2VGb3JGcmFtZShXZWJGcmFtZSopOwogCi0gICAgdm9pZCBsb2FkRGF0
YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklELCBib29sIHNob3VsZFRyZWF0QXNDb250aW51aW5n
TG9hZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiwgUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGlu
Z05hbWUsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBV
c2VyRGF0YSYsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgTmF2aWdhdGVk
QXdheUZyb21BcHBCb3VuZERvbWFpbiwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSA9IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFs
bG93KTsKKyAgICB2b2lkIGxvYWREYXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wg
c2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRh
PiYmLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBl
LCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBV
UkwmIGZhaWxpbmdVUkwsIGNvbnN0IFVzZXJEYXRhJiwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4+LCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gV2Vi
Q29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cpOwogCiAg
ICAgLy8gQWN0aW9ucwogICAgIHZvaWQgdHJ5Q2xvc2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJik7CkBAIC0yMTA0LDggKzIxMDMsOSBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX3Ro
ZW1lTmFtZTsKICNlbmRpZgogICAgIAotICAgIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluPiBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4geyBOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbjo6Tm8gfTsKLSAgICBOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluIG1f
aGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbiB7IE5hdmlnYXRlZEF3YXlGcm9tQXBw
Qm91bmREb21haW46Ok5vIH07CisgICAgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4+IG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiB7IFdURjo6bnVsbG9wdCB9OworICAg
IGJvb2wgbV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zIHsgZmFsc2UgfTsKKyAg
ICBib29sIG1fbmF2aWdhdGlvbkhhc09jY3VyZWQgeyBmYWxzZSB9OwogfTsKIAogI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IGY0YzllMjljNTFjNmM1OGQ5ODc4NmU2ZGM0ODY5NTBkYTQxOTFkNzAuLmUw
OTc2NDM3YTcwZjk1MDdiOGEwZTg0M2IwNjRjYzZiOGI1Yjk1NGQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAyMC0w
NS0xMSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAg
ICBGYWlsIG5hdmlnYXRpb25zIHRvIG5vbiBhcHAtYm91bmQgZG9tYWlucyBhZnRlciB1c2Ugb2Yg
YXBwLWJvdW5kIEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxMTY0NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjI5NzgxNTk+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSBuZXcgdGVz
dCB0byBjb25maXJtIGEgbm9uLWFwcCBib3VuZCBuYXZpZ2F0aW9uIGZhaWxzIGFmdGVyCisgICAg
ICAgIHVzaW5nIHNjcmlwdCBpbmplY3Rpb24uCisKKyAgICAgICAgVGhpcyBmaXggYWxzbyByZXF1
aXJlZCBjaGFuZ2luZyBhbnkgdGVzdCB3aGljaCB1c2VzIGEgcmVzdHJpY3RlZCBBUEkKKyAgICAg
ICAgdG8gY29uZmlybSBiZWhhdmlvciBvZiBhbm90aGVyIHJlc3RyaWN0ZWQgQVBJLiBUZXN0cyBj
YW4gc2V0CisgICAgICAgIF9zZXROZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3MgaW4gdGhl
IGNvbmZpZ3VyYXRpb24gdG8gaW5kaWNhdGUKKyAgICAgICAgQVBJcyBzaG91bGQgbm90IGJlIGJs
b2NrZWQsIHRoZW4gdG9nZ2xlIGl0IHRvIHRlc3QgYWN0dWFsIGJlaGF2aW9yLgorCisgICAgICAg
IEFsc28sIHdlIGNhbiByZW1vdmUgYW55IGNhbGxzIHRvIF9zZXRJbkFwcEJyb3dzZXJQcml2YWN5
RW5hYmxlZAorICAgICAgICBub3cgdGhhdCB0aGlzIGlzIGp1c3QgYW4gaW50ZXJuYWwgdGVzdCBm
bGFnLiAKKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBC
cm93c2VyUHJpdmFjeS5tbToKKyAgICAgICAgKC1bQXBwQm91bmREb21haW5EZWxlZ2F0ZSB3ZWJW
aWV3OmRpZEZpbmlzaE5hdmlnYXRpb246XSk6CisgICAgICAgICgtW0FwcEJvdW5kRG9tYWluRGVs
ZWdhdGUgd2ViVmlldzpkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uOndpdGhFcnJvcjpdKToK
KyAgICAgICAgKC1bQXBwQm91bmREb21haW5EZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdh
dGlvbl0pOgorICAgICAgICAoLVtBcHBCb3VuZERvbWFpbkRlbGVnYXRlIHdhaXRGb3JEaWRGYWls
UHJvdmlzaW9uYWxOYXZpZ2F0aW9uRXJyb3JdKToKKyAgICAgICAgKFRFU1QpOgorCiAyMDIwLTA1
LTExICBBbmRyZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgbWVjaGFuaXNtIHRvIHR1cm4gb24gYWNjZXNzaWJpbGl0eSBpc29sYXRlZCB0cmVlIG1vZGUg
ZnJvbSBXZWJLaXRUZXN0UnVubmVyLgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCmluZGV4IDFmNGI2
MDc0ZDFiZjA1MWZmNWNkNDBjOTZjYjQ5MTMxZTFmNzBiODQuLjNkZDUwMzBkNGEzZDJkOGNmN2Fm
ZTk0NmNmMDk1ZDg3OTE1MDcxYmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KQEAgLTQ4LDYg
KzQ4LDQwIEBACiAKIHN0YXRpYyBib29sIGlzRG9uZTsKIAorQGludGVyZmFjZSBBcHBCb3VuZERv
bWFpbkRlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgorLSAodm9pZCl3
YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbjsKKy0gKE5TRXJyb3IgKil3YWl0Rm9yRGlkRmFpbFBy
b3Zpc2lvbmFsTmF2aWdhdGlvbkVycm9yOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gQXBwQm91
bmREb21haW5EZWxlZ2F0ZSB7CisgICAgYm9vbCBfbmF2aWdhdGlvbkZpbmlzaGVkOworICAgIFJl
dGFpblB0cjxOU0Vycm9yPiBfcHJvdmlzaW9uYWxOYXZpZ2F0aW9uRmFpbGVkRXJyb3I7Cit9CisK
Ky0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9u
OihXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9uCit7CisgICAgX25hdmlnYXRpb25GaW5pc2hlZCA9
IHRydWU7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRGYWls
UHJvdmlzaW9uYWxOYXZpZ2F0aW9uOihudWxsX3Vuc3BlY2lmaWVkIFdLTmF2aWdhdGlvbiAqKW5h
dmlnYXRpb24gd2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKK3sKKyAgICBfcHJvdmlzaW9uYWxO
YXZpZ2F0aW9uRmFpbGVkRXJyb3IgPSBlcnJvcjsKK30KKworLSAodm9pZCl3YWl0Rm9yRGlkRmlu
aXNoTmF2aWdhdGlvbgoreworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmX25hdmlnYXRp
b25GaW5pc2hlZCk7Cit9CisKKy0gKE5TRXJyb3IgKil3YWl0Rm9yRGlkRmFpbFByb3Zpc2lvbmFs
TmF2aWdhdGlvbkVycm9yCit7CisgICAgd2hpbGUgKCFfcHJvdmlzaW9uYWxOYXZpZ2F0aW9uRmFp
bGVkRXJyb3IpCisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKCk7Cisg
ICAgcmV0dXJuIF9wcm92aXNpb25hbE5hdmlnYXRpb25GYWlsZWRFcnJvci5hdXRvcmVsZWFzZSgp
OworfQorCitAZW5kCisKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHVzZXJTY3JpcHRTb3VyY2Ug
PSBAIndpbmRvdy53a1VzZXJTY3JpcHRJbmplY3RlZCA9IHRydWUiOwogCiBAaW50ZXJmYWNlIElu
QXBwQnJvd3NlclNjaGVtZUhhbmRsZXIgOiBOU09iamVjdCA8V0tVUkxTY2hlbWVIYW5kbGVyPgpA
QCAtMTAzLDggKzEzNyw2IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmRE
b21haW5GYWlsZWRVc2VyU2NyaXB0QXRTdGFydCkKICAgICBhdXRvIHNjaGVtZUhhbmRsZXIgPSBh
ZG9wdE5TKFtbSW5BcHBCcm93c2VyU2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFtj
b25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6c2NoZW1lSGFuZGxlci5nZXQoKSBmb3JV
UkxTY2hlbWU6QCJpbi1hcHAtYnJvd3NlciJdOwogICAgIFtjb25maWd1cmF0aW9uLnVzZXJDb250
ZW50Q29udHJvbGxlciBhZGRVc2VyU2NyaXB0OnVzZXJTY3JpcHQuZ2V0KCldOwotICAgIFtbY29u
ZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldE5lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJr
czpOT107Ci0gICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0SW5BcHBCcm93c2Vy
UHJpdmFjeUVuYWJsZWQ6WUVTXTsKIAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uXSk7CiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVz
dCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImluLWFwcC1icm93c2VyOi8v
L2luLWFwcC1icm93c2VyLXByaXZhY3ktdGVzdC11c2VyLXNjcmlwdCJdXTsKQEAgLTEyMSw4ICsx
NTMsNyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIE5vbkFwcEJvdW5kRG9tYWluRmFpbGVk
VXNlclNjcmlwdEF0U3RhcnQpCiAgICAgaXNEb25lID0gZmFsc2U7CiAgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCi0gICAgLy8gVHVybiBiYWNrIG9uIEluLUFwcCBCcm93
c2VyIFByaXZhY3kgcXVpcmtzIHRvIGNoZWNrIHRoYXQgb3JpZ2luYWwgYXR0ZW1wdCB0byBzZXQg
dGhpcyB2YXJpYWJsZSB3YXMgcmVqZWN0ZWQuCi0gICAgaXNEb25lID0gZmFsc2U7CisgICAgLy8g
RGlzYWJsZSBzY3JpcHQgaW5qZWN0aW9uIGJsb2NraW5nIHRvIGNoZWNrIHRoYXQgb3JpZ2luYWwg
YXR0ZW1wdCB0byBzZXQgdGhpcyB2YXJpYWJsZSB3YXMgcmVqZWN0ZWQuCiAgICAgW1tbd2ViVmll
dyBjb25maWd1cmF0aW9uXSBwcmVmZXJlbmNlc10gX3NldE5lZWRzSW5BcHBCcm93c2VyUHJpdmFj
eVF1aXJrczpZRVNdOwogICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAIndpbmRvdy53
a1VzZXJTY3JpcHRJbmplY3RlZCIgY29tcGxldGlvbkhhbmRsZXI6XihpZCBfTnVsbGFibGUgcmVz
dWx0LCBOU0Vycm9yICogX051bGxhYmxlIGVycm9yKSB7CiAgICAgICAgIEVYUEVDVF9FUShOTywg
W3Jlc3VsdCBib29sVmFsdWVdKTsKQEAgLTE0NSw4ICsxNzYsNiBAQCBURVNUKEluQXBwQnJvd3Nl
clByaXZhY3ksIE5vbkFwcEJvdW5kRG9tYWluRmFpbGVkVXNlclNjcmlwdEF0RW5kKQogICAgIGF1
dG8gc2NoZW1lSGFuZGxlciA9IGFkb3B0TlMoW1tJbkFwcEJyb3dzZXJTY2hlbWVIYW5kbGVyIGFs
bG9jXSBpbml0XSk7CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpzY2hl
bWVIYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAImluLWFwcC1icm93c2VyIl07CiAgICAgW2Nv
bmZpZ3VyYXRpb24udXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFVzZXJTY3JpcHQ6dXNlclNjcmlw
dC5nZXQoKV07Ci0gICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0TmVlZHNJbkFw
cEJyb3dzZXJQcml2YWN5UXVpcmtzOk5PXTsKLSAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5j
ZXNdIF9zZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZDpZRVNdOwogCiAgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0
WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKICAgICBOU1VSTFJlcXVlc3QgKnJl
cXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5n
OkAiaW4tYXBwLWJyb3dzZXI6Ly8vaW4tYXBwLWJyb3dzZXItcHJpdmFjeS10ZXN0LXVzZXItc2Ny
aXB0Il1dOwpAQCAtMTYzLDggKzE5Miw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9u
QXBwQm91bmREb21haW5GYWlsZWRVc2VyU2NyaXB0QXRFbmQpCiAgICAgaXNEb25lID0gZmFsc2U7
CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCi0gICAgLy8gVHVybiBi
YWNrIG9uIEluLUFwcCBCcm93c2VyIFByaXZhY3kgcXVpcmtzIHRvIGNoZWNrIHRoYXQgb3JpZ2lu
YWwgYXR0ZW1wdCB0byBzZXQgdGhpcyB2YXJpYWJsZSB3YXMgcmVqZWN0ZWQuCi0gICAgaXNEb25l
ID0gZmFsc2U7CisgICAgLy8gRGlzYWJsZSBzY3JpcHQgaW5qZWN0aW9uIGJsb2NraW5nIHRvIGNo
ZWNrIHRoYXQgb3JpZ2luYWwgYXR0ZW1wdCB0byBzZXQgdGhpcyB2YXJpYWJsZSB3YXMgcmVqZWN0
ZWQuCiAgICAgW1tbd2ViVmlldyBjb25maWd1cmF0aW9uXSBwcmVmZXJlbmNlc10gX3NldE5lZWRz
SW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrczpZRVNdOwogICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2
YVNjcmlwdDpAIndpbmRvdy53a1VzZXJTY3JpcHRJbmplY3RlZCIgY29tcGxldGlvbkhhbmRsZXI6
XihpZCBfTnVsbGFibGUgcmVzdWx0LCBOU0Vycm9yICogX051bGxhYmxlIGVycm9yKSB7CiAgICAg
ICAgIEVYUEVDVF9FUShOTywgW3Jlc3VsdCBib29sVmFsdWVdKTsKQEAgLTE3OSw5ICsyMDcsMTEg
QEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZERvbWFpbkZhaWxlZFVzZXJT
Y3JpcHRBdEVuZCkKIAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZERvbWFp
bkZhaWxlZFVzZXJBZ2VudFNjcmlwdHMpCiB7CisgICAgaW5pdGlhbGl6ZUluQXBwQnJvd3NlclBy
aXZhY3lUZXN0U2V0dGluZ3MoKTsKKwogICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZp
Z3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0
aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29u
ZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOworICAgIC8vIERpc2FibGUgYmxvY2tpbmcgb2YgcmVz
dHJpY3RlZCBBUElzIGZvciB0ZXN0IHNldHVwLgogICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJl
bmNlc10gX3NldE5lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrczpZRVNdOwotICAgIFtbY29u
ZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkOk5P
XTsKIAogICAgIGF1dG8gc2NoZW1lSGFuZGxlciA9IGFkb3B0TlMoW1tJbkFwcEJyb3dzZXJTY2hl
bWVIYW5kbGVyIGFsbG9jXSBpbml0XSk7CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1l
SGFuZGxlcjpzY2hlbWVIYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAImluLWFwcC1icm93c2Vy
Il07CkBAIC0xOTgsMTMgKzIyOCwxMSBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIE5vbkFw
cEJvdW5kRG9tYWluRmFpbGVkVXNlckFnZW50U2NyaXB0cykKIAogICAgIGlzRG9uZSA9IGZhbHNl
OwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKLQotICAgIGluaXRpYWxp
emVJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7CisgICAgCisgICAgLy8gRW5hYmxl
IGJsb2NraW5nIG9mIHJlc3RyaWN0ZWQgQVBJcy4KICAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVy
ZW5jZXNdIF9zZXROZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3M6Tk9dOwotICAgIFtbY29u
ZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkOllF
U107CiAKICAgICBhdXRvIHdlYlZpZXcyID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsK
LQogICAgIGlzRG9uZSA9IGZhbHNlOwogICAgIFt3ZWJWaWV3MiBsb2FkUmVxdWVzdDpyZXF1ZXN0
XTsKICAgICBbd2ViVmlldzIgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwpAQCAt
MjQ0LDcgKzI3Miw2IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTG9jYWxGaWxlc0FyZUFw
cEJvdW5kKQogewogICAgIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdz
KCk7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9z
ZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZDpZRVNdOwogICAgIFtjb25maWd1cmF0aW9uIHNl
dExpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnM6WUVTXTsKIAogICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVj
dFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CkBAIC0yNjUsNyArMjky
LDYgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBEYXRhRmlsZXNBcmVBcHBCb3VuZCkKIHsK
ICAgICBpbml0aWFsaXplSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOwogICAgIGF1
dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSk7Ci0gICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0SW5BcHBCcm93
c2VyUHJpdmFjeUVuYWJsZWQ6WUVTXTsKICAgICBbY29uZmlndXJhdGlvbiBzZXRMaW1pdHNOYXZp
Z2F0aW9uc1RvQXBwQm91bmREb21haW5zOllFU107CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwpAQCAtMjg1LDcgKzMxMSw2IEBAIFRFU1Qo
SW5BcHBCcm93c2VyUHJpdmFjeSwgQWJvdXRGaWxlc0FyZUFwcEJvdW5kKQogewogICAgIGluaXRp
YWxpemVJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7CiAgICAgYXV0byBjb25maWd1
cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
LSAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRJbkFwcEJyb3dzZXJQcml2YWN5
RW5hYmxlZDpZRVNdOwogICAgIFtjb25maWd1cmF0aW9uIHNldExpbWl0c05hdmlnYXRpb25zVG9B
cHBCb3VuZERvbWFpbnM6WUVTXTsKIAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uLmdldCgpXSk7CkBAIC0zMDMsNyArMzI4LDYgQEAgVEVTVChJbkFwcEJyb3dz
ZXJQcml2YWN5LCBBYm91dEZpbGVzQXJlQXBwQm91bmQpCiAKIHN0YXRpYyBOU1N0cmluZyAqc3R5
bGVTaGVldFNvdXJjZSA9IEAiYm9keSB7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuICFpbXBvcnRh
bnQ7IH0iOwogc3RhdGljIE5TU3RyaW5nICpiYWNrZ3JvdW5kQ29sb3JTY3JpcHQgPSBAIndpbmRv
dy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHksIG51bGwpLmdldFByb3BlcnR5VmFsdWUo
J2JhY2tncm91bmQtY29sb3InKSI7Ci1zdGF0aWMgTlNTdHJpbmcgKmZyYW1lQmFja2dyb3VuZENv
bG9yU2NyaXB0ID0gQCJ3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgnaWZyYW1lJylbMF0uY29udGVudERvY3VtZW50LmJvZHksIG51bGwpLmdldFBy
b3BlcnR5VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKSI7CiBzdGF0aWMgY29uc3QgY2hhciogcmVk
SW5SR0IgPSAicmdiKDI1NSwgMCwgMCkiOwogc3RhdGljIGNvbnN0IGNoYXIqIGJsYWNrSW5SR0Ig
PSAicmdiYSgwLCAwLCAwLCAwKSI7CiAKQEAgLTMyOSwxOSArMzUzLDE5IEBAIFRFU1QoSW5BcHBC
cm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmRVc2VyU3R5bGVTaGVldEZvclNwZWNpZmljV2ViVmll
d0ZhaWxzKQogCiAgICAgYXV0byBzY2hlbWVIYW5kbGVyID0gYWRvcHROUyhbW0luQXBwQnJvd3Nl
clNjaGVtZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxT
Y2hlbWVIYW5kbGVyOnNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiaW4tYXBwLWJy
b3dzZXIiXTsKLSAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRJbkFwcEJyb3dz
ZXJQcml2YWN5RW5hYmxlZDpZRVNdOwotICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10g
X3NldE5lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrczpZRVNdOworICAgIFJldGFpblB0cjxf
V0tVc2VyQ29udGVudFdvcmxkPiB3b3JsZCA9IFtfV0tVc2VyQ29udGVudFdvcmxkIHdvcmxkV2l0
aE5hbWU6QCJUZXN0V29ybGQiXTsKIAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImluLWFwcC1icm93
c2VyOi8vL2luLWFwcC1icm93c2VyLXByaXZhY3ktdGVzdC11c2VyLXN0eWxlLXNoZWV0cyJdXTsK
LSAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKLSAgICBbd2ViVmlldyBfdGVzdF93
YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07Ci0KLSAgICBSZXRhaW5QdHI8X1dLVXNlckNvbnRl
bnRXb3JsZD4gd29ybGQgPSBbX1dLVXNlckNvbnRlbnRXb3JsZCB3b3JsZFdpdGhOYW1lOkAiVGVz
dFdvcmxkIl07CiAgICAgUmV0YWluUHRyPF9XS1VzZXJTdHlsZVNoZWV0PiBzdHlsZVNoZWV0ID0g
YWRvcHROUyhbW19XS1VzZXJTdHlsZVNoZWV0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpzdHlsZVNo
ZWV0U291cmNlIGZvcldLV2ViVmlldzp3ZWJWaWV3LmdldCgpIGZvck1haW5GcmFtZU9ubHk6WUVT
IGxldmVsOl9XS1VzZXJTdHlsZVVzZXJMZXZlbCB1c2VyQ29udGVudFdvcmxkOndvcmxkLmdldCgp
XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gX2FkZFVzZXJT
dHlsZVNoZWV0OnN0eWxlU2hlZXQuZ2V0KCldOwogCi0gICAgZXhwZWN0U2NyaXB0RXZhbHVhdGVz
VG9Db2xvcih3ZWJWaWV3LmdldCgpLCBiYWNrZ3JvdW5kQ29sb3JTY3JpcHQsIHJlZEluUkdCKTsK
KyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbQXBwQm91bmREb21haW5EZWxlZ2F0ZSBuZXdd
KTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwor
CisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVS
TDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImluLWFwcC1icm93c2VyOi8vL2luLWFwcC1icm93c2Vy
LXByaXZhY3ktdGVzdC11c2VyLXN0eWxlLXNoZWV0cyJdXTsKKyAgICBbd2ViVmlldyBsb2FkUmVx
dWVzdDpyZXF1ZXN0XTsKKyAgICBOU0Vycm9yICplcnJvciA9IFtkZWxlZ2F0ZSB3YWl0Rm9yRGlk
RmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbkVycm9yXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoZXJy
b3IubG9jYWxpemVkRGVzY3JpcHRpb24sIEAiQXBwLWJvdW5kIGRvbWFpbiBmYWlsdXJlIik7CiAg
ICAgY2xlYW5VcEluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKIH0KIApAQCAtMzUz
LDE4ICszNzcsMTggQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZFVzZXJT
dHlsZVNoZWV0Rm9yQWxsV2ViVmlld3NGYWlscykKIAogICAgIGF1dG8gc2NoZW1lSGFuZGxlciA9
IGFkb3B0TlMoW1tJbkFwcEJyb3dzZXJTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0XSk7CiAgICAg
W2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpzY2hlbWVIYW5kbGVyLmdldCgpIGZv
clVSTFNjaGVtZTpAImluLWFwcC1icm93c2VyIl07Ci0gICAgW1tjb25maWd1cmF0aW9uIHByZWZl
cmVuY2VzXSBfc2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQ6WUVTXTsKLSAgICBbW2NvbmZp
Z3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXROZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3M6
WUVTXTsKLQotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdl
dCgpXSk7Ci0gICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImluLWFwcC1icm93c2VyOi8vL2luLWFwcC1i
cm93c2VyLXByaXZhY3ktdGVzdC11c2VyLXN0eWxlLXNoZWV0cyJdXTsKLSAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpyZXF1ZXN0XTsKLSAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNo
TmF2aWdhdGlvbl07Ci0KKyAgICAKICAgICBSZXRhaW5QdHI8X1dLVXNlclN0eWxlU2hlZXQ+IHN0
eWxlU2hlZXQgPSBhZG9wdE5TKFtbX1dLVXNlclN0eWxlU2hlZXQgYWxsb2NdIGluaXRXaXRoU291
cmNlOnN0eWxlU2hlZXRTb3VyY2UgZm9yTWFpbkZyYW1lT25seTpZRVNdKTsKICAgICBbW2NvbmZp
Z3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBfYWRkVXNlclN0eWxlU2hlZXQ6c3R5bGVT
aGVldC5nZXQoKV07CisgICAgCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbQXBwQm91bmRE
b21haW5EZWxlZ2F0ZSBuZXddKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6
ZGVsZWdhdGUuZ2V0KCldOwogCi0gICAgZXhwZWN0U2NyaXB0RXZhbHVhdGVzVG9Db2xvcih3ZWJW
aWV3LmdldCgpLCBiYWNrZ3JvdW5kQ29sb3JTY3JpcHQsIHJlZEluUkdCKTsKKyAgICBOU1VSTFJl
cXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxX
aXRoU3RyaW5nOkAiaW4tYXBwLWJyb3dzZXI6Ly8vaW4tYXBwLWJyb3dzZXItcHJpdmFjeS10ZXN0
LXVzZXItc3R5bGUtc2hlZXRzIl1dOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3Rd
OworICAgIE5TRXJyb3IgKmVycm9yID0gW2RlbGVnYXRlIHdhaXRGb3JEaWRGYWlsUHJvdmlzaW9u
YWxOYXZpZ2F0aW9uRXJyb3JdOworICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5sb2NhbGl6ZWRE
ZXNjcmlwdGlvbiwgQCJBcHAtYm91bmQgZG9tYWluIGZhaWx1cmUiKTsKICAgICBjbGVhblVwSW5B
cHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOwogfQogCkBAIC0zNzYsMjIgKzQwMCwxNyBA
QCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIE5vbkFwcEJvdW5kVXNlclN0eWxlU2hlZXRBZmZl
Y3RpbmdBbGxGcmFtZXNGYWlscykKIAogICAgIGF1dG8gc2NoZW1lSGFuZGxlciA9IGFkb3B0TlMo
W1tJbkFwcEJyb3dzZXJTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0XSk7CiAgICAgW2NvbmZpZ3Vy
YXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpzY2hlbWVIYW5kbGVyLmdldCgpIGZvclVSTFNjaGVt
ZTpAImluLWFwcC1icm93c2VyIl07Ci0gICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBf
c2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQ6WUVTXTsKLSAgICBbW2NvbmZpZ3VyYXRpb24g
cHJlZmVyZW5jZXNdIF9zZXROZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3M6WUVTXTsKLQot
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0g
ICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpb
TlNVUkwgVVJMV2l0aFN0cmluZzpAImluLWFwcC1icm93c2VyOi8vL2luLWFwcC1icm93c2VyLXBy
aXZhY3ktdGVzdC11c2VyLXN0eWxlLXNoZWV0cy1pZnJhbWUiXV07Ci0gICAgW3dlYlZpZXcgbG9h
ZFJlcXVlc3Q6cmVxdWVzdF07Ci0gICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5h
dmlnYXRpb25dOwotCiAgICAgUmV0YWluUHRyPF9XS1VzZXJTdHlsZVNoZWV0PiBzdHlsZVNoZWV0
ID0gYWRvcHROUyhbW19XS1VzZXJTdHlsZVNoZWV0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpzdHls
ZVNoZWV0U291cmNlIGZvck1haW5GcmFtZU9ubHk6Tk9dKTsKICAgICBbW2NvbmZpZ3VyYXRpb24g
dXNlckNvbnRlbnRDb250cm9sbGVyXSBfYWRkVXNlclN0eWxlU2hlZXQ6c3R5bGVTaGVldC5nZXQo
KV07CiAKLSAgICAvLyBUaGUgbWFpbiBmcmFtZSBzaG91bGQgYmUgYWZmZWN0ZWQuCi0gICAgZXhw
ZWN0U2NyaXB0RXZhbHVhdGVzVG9Db2xvcih3ZWJWaWV3LmdldCgpLCBiYWNrZ3JvdW5kQ29sb3JT
Y3JpcHQsIHJlZEluUkdCKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmln
dXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtBcHBCb3VuZERv
bWFpbkRlbGVnYXRlIG5ld10pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpk
ZWxlZ2F0ZS5nZXQoKV07CiAKLSAgICAvLyBUaGUgc3ViZnJhbWUgc2hvdWxkIGFsc28gYmUgYWZm
ZWN0ZWQuCi0gICAgZXhwZWN0U2NyaXB0RXZhbHVhdGVzVG9Db2xvcih3ZWJWaWV3LmdldCgpLCBm
cmFtZUJhY2tncm91bmRDb2xvclNjcmlwdCwgcmVkSW5SR0IpOworICAgIE5TVVJMUmVxdWVzdCAq
cmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJp
bmc6QCJpbi1hcHAtYnJvd3NlcjovLy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5LXRlc3QtdXNlci1z
dHlsZS1zaGVldHMtaWZyYW1lIl1dOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3Rd
OworICAgIE5TRXJyb3IgKmVycm9yID0gW2RlbGVnYXRlIHdhaXRGb3JEaWRGYWlsUHJvdmlzaW9u
YWxOYXZpZ2F0aW9uRXJyb3JdOworICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5sb2NhbGl6ZWRE
ZXNjcmlwdGlvbiwgQCJBcHAtYm91bmQgZG9tYWluIGZhaWx1cmUiKTsKICAgICBjbGVhblVwSW5B
cHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOwogfQogCkBAIC00MDQsOCArNDIzLDYgQEAg
VEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZERvbWFpbkNhbm5vdEFjY2Vzc01l
c3NhZ2VIYW5kbGVycykKIAogICAgIGF1dG8gc2NoZW1lSGFuZGxlciA9IGFkb3B0TlMoW1tJbkFw
cEJyb3dzZXJTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0XSk7CiAgICAgW2NvbmZpZ3VyYXRpb24g
c2V0VVJMU2NoZW1lSGFuZGxlcjpzY2hlbWVIYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAImlu
LWFwcC1icm93c2VyIl07Ci0gICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0SW5B
cHBCcm93c2VyUHJpdmFjeUVuYWJsZWQ6WUVTXTsKLSAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVy
ZW5jZXNdIF9zZXROZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3M6WUVTXTsKIAogICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
OkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAKQEAgLTQx
Niw2ICs0MzMsMTAgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZERvbWFp
bkNhbm5vdEFjY2Vzc01lc3NhZ2VIYW5kbGVycykKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3Qg
PSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaW4t
YXBwLWJyb3dzZXI6Ly8vaW4tYXBwLWJyb3dzZXItcHJpdmFjeS10ZXN0LW1lc3NhZ2UtaGFuZGxl
ciJdXTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKICAgICBbd2ViVmlldyBf
dGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisgICAgCisgICAgLy8gRGlzYWJsZSBz
Y3JpcHQgaW5qZWN0aW9uIGJsb2NraW5nIHRvIGNoZWNrIHRoYXQgdGhlIHJlcXVlc3QgZm9yIG1l
c3NhZ2UKKyAgICAvLyBoYW5kbGVycyByZXR1cm5lZCBudWxsLgorICAgIFtbY29uZmlndXJhdGlv
biBwcmVmZXJlbmNlc10gX3NldE5lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrczpZRVNdOwog
CiAgICAgLy8gU2V0IHRoZSBiYWNrZ3JvdW5kIGNvbG9yIHRvIHJlZCBpZiBtZXNzYWdlIGhhbmRs
ZXJzIHJldHVybmVkIG51bGwgc28gd2UgY2FuCiAgICAgLy8gY2hlY2sgd2l0aG91dCBuZWVkaW5n
IGEgbWVzc2FnZSBoYW5kbGVyLgpAQCAtNDMyLDcgKzQ1Myw2IEBAIFRFU1QoSW5BcHBCcm93c2Vy
UHJpdmFjeSwgQXBwQm91bmREb21haW5DYW5BY2Nlc3NNZXNzYWdlSGFuZGxlcnMpCiAKICAgICBh
dXRvIHNjaGVtZUhhbmRsZXIgPSBhZG9wdE5TKFtbSW5BcHBCcm93c2VyU2NoZW1lSGFuZGxlciBh
bGxvY10gaW5pdF0pOwogICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6c2No
ZW1lSGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJpbi1hcHAtYnJvd3NlciJdOwotICAgIFtb
Y29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVk
OllFU107CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0TGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5k
RG9tYWluczpZRVNdOwogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3Vy
YXRpb24uZ2V0KCldKTsKQEAgLTgzMyw0MCArODUzLDYgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2
YWN5LCBOb25BcHBCb3VuZERvbWFpbkRvZXNOb3RBbGxvd1NlcnZpY2VXb3JrZXJzKQogICAgIGlz
RG9uZSA9IGZhbHNlOwogfQogCi1AaW50ZXJmYWNlIEFwcEJvdW5kRG9tYWluRGVsZWdhdGUgOiBO
U09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+Ci0tICh2b2lkKXdhaXRGb3JEaWRGaW5pc2hO
YXZpZ2F0aW9uOwotLSAoTlNFcnJvciAqKXdhaXRGb3JEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0
aW9uRXJyb3I7Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBBcHBCb3VuZERvbWFpbkRlbGVnYXRl
IHsKLSAgICBib29sIF9uYXZpZ2F0aW9uRmluaXNoZWQ7Ci0gICAgUmV0YWluUHRyPE5TRXJyb3I+
IF9wcm92aXNpb25hbE5hdmlnYXRpb25GYWlsZWRFcnJvcjsKLX0KLQotLSAodm9pZCl3ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZpbmlzaE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAq
KW5hdmlnYXRpb24KLXsKLSAgICBfbmF2aWdhdGlvbkZpbmlzaGVkID0gdHJ1ZTsKLX0KLQotLSAo
dm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZhaWxQcm92aXNpb25hbE5hdmln
YXRpb246KG51bGxfdW5zcGVjaWZpZWQgV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbiB3aXRoRXJy
b3I6KE5TRXJyb3IgKillcnJvcgotewotICAgIF9wcm92aXNpb25hbE5hdmlnYXRpb25GYWlsZWRF
cnJvciA9IGVycm9yOwotfQotCi0tICh2b2lkKXdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uCi17
Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZfbmF2aWdhdGlvbkZpbmlzaGVkKTsKLX0K
LQotLSAoTlNFcnJvciAqKXdhaXRGb3JEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uRXJyb3IK
LXsKLSAgICB3aGlsZSAoIV9wcm92aXNpb25hbE5hdmlnYXRpb25GYWlsZWRFcnJvcikKLSAgICAg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c3BpblJ1bkxvb3AoKTsKLSAgICByZXR1cm4gX3Byb3Zp
c2lvbmFsTmF2aWdhdGlvbkZhaWxlZEVycm9yLmF1dG9yZWxlYXNlKCk7Ci19Ci0KLUBlbmQKLQog
VEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZEZsYWdGb3JOb25BcHBCb3VuZERvbWFp
bkZhaWxzKQogewogICAgIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdz
KCk7CkBAIC04ODUsNyArODcxLDcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3Vu
ZEZsYWdGb3JOb25BcHBCb3VuZERvbWFpbkZhaWxzKQogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVz
dCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJp
bi1hcHAtYnJvd3NlcjovLy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5LXRlc3QtdXNlci1zdHlsZS1z
aGVldHMiXV07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CiAgICAgTlNFcnJv
ciAqZXJyb3IgPSBbZGVsZWdhdGUgd2FpdEZvckRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25F
cnJvcl07Ci0gICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uLCBA
IkF0dGVtcHRlZCBuYXZpZ2F0aW9uIGF3YXkgZnJvbSBhcHAtYm91bmQgZG9tYWluIik7CisgICAg
RVhQRUNUX1dLX1NUUkVRKGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uLCBAIkFwcC1ib3VuZCBk
b21haW4gZmFpbHVyZSIpOwogCiAgICAgLy8gTWFrZSBzdXJlIHRoZSBsb2FkIGRpZG4ndCBjb21w
bGV0ZSBieSBjaGVja2luZyB0aGUgYmFja2dyb3VuZCBjb2xvci4KICAgICAvLyBSZWQgd291bGQg
aW5kaWNhdGUgaXQgZmluaXNoZWQgbG9hZGluZy4KQEAgLTkxNiw3ICs5MDIsNyBAQCBURVNUKElu
QXBwQnJvd3NlclByaXZhY3ksIE5hdmlnYXRlQXdheUZyb21BcHBCb3VuZERvbWFpbldpdGhBcHBC
b3VuZEZsYWdGYWlscykKICAgICByZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVS
TDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImluLWFwcC1icm93c2VyOi8vL2luLWFwcC1icm93c2Vy
LXByaXZhY3ktdGVzdC11c2VyLXN0eWxlLXNoZWV0cyJdXTsKICAgICBbd2ViVmlldyBsb2FkUmVx
dWVzdDpyZXF1ZXN0XTsKICAgICBOU0Vycm9yICplcnJvciA9IFtkZWxlZ2F0ZSB3YWl0Rm9yRGlk
RmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbkVycm9yXTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoZXJy
b3IubG9jYWxpemVkRGVzY3JpcHRpb24sIEAiQXR0ZW1wdGVkIG5hdmlnYXRpb24gYXdheSBmcm9t
IGFwcC1ib3VuZCBkb21haW4iKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IubG9jYWxpemVk
RGVzY3JpcHRpb24sIEAiQXBwLWJvdW5kIGRvbWFpbiBmYWlsdXJlIik7CiAKICAgICAvLyBNYWtl
IHN1cmUgdGhlIGxvYWQgZGlkbid0IGNvbXBsZXRlIGJ5IGNoZWNraW5nIHRoZSBiYWNrZ3JvdW5k
IGNvbG9yLgogICAgIC8vIFJlZCB3b3VsZCBpbmRpY2F0ZSBpdCBmaW5pc2hlZCBsb2FkaW5nLgpA
QCAtOTkxLDExICs5NzcsMTQgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBXZWJWaWV3V2l0
aG91dEFwcEJvdW5kRmxhZ0NhbkZyZWVseU5hdmlnYXRlKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmaXNEb25lKTsKIAogICAgIC8vIE5hdmlnYXRpb24gc2hvdWxkIGJlIHN1Y2Nlc3Nm
dWwsIGJ1dCB0aGlzIFdlYlZpZXcgc2hvdWxkIG5vdCBnZXQgYXBwLWJvdW5kIGRvbWFpbgotICAg
IC8vIHByaXZpbGVnZXMgbGlrZSB1c2VyIHN0eWxlIHNoZWV0cy4gU2V0IHF1aXJrcyB0byB0cnVl
IHNvIHdlIGNhbiBldmFsdWF0ZSBzY3JpcHQKLSAgICAvLyB0byBjaGVjay4KLSAgICBbW1t3ZWJW
aWV3IGNvbmZpZ3VyYXRpb25dIHByZWZlcmVuY2VzXSBfc2V0TmVlZHNJbkFwcEJyb3dzZXJQcml2
YWN5UXVpcmtzOllFU107Ci0gICAgZXhwZWN0U2NyaXB0RXZhbHVhdGVzVG9Db2xvcih3ZWJWaWV3
LmdldCgpLCBiYWNrZ3JvdW5kQ29sb3JTY3JpcHQsIGJsYWNrSW5SR0IpOwotICAgIGNsZWFuVXBJ
bkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7CisgICAgLy8gcHJpdmlsZWdlcyBsaWtl
IHNjcmlwdCBpbmplY3Rpb24uCisgICAgaXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgZXZh
bHVhdGVKYXZhU2NyaXB0OkAid2luZG93LndrVXNlclNjcmlwdEluamVjdGVkIiBjb21wbGV0aW9u
SGFuZGxlcjpeKGlkIF9OdWxsYWJsZSByZXN1bHQsIE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3Ip
IHsKKyAgICAgICAgRVhQRUNUX1RSVUUoISFlcnJvcik7CisgICAgICAgIGlzRG9uZSA9IHRydWU7
CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiB9CiAK
IFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgV2ViVmlld0Nhbm5vdFVwZGF0ZUFwcEJvdW5kRmxh
Z09uY2VTZXQpCkBAIC0xMDI5LDExICsxMDE4LDQyIEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFj
eSwgV2ViVmlld0Nhbm5vdFVwZGF0ZUFwcEJvdW5kRmxhZ09uY2VTZXQpCiAgICAgcmVxdWVzdCA9
IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJpbi1h
cHAtYnJvd3NlcjovLy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5LXRlc3QtdXNlci1zdHlsZS1zaGVl
dHMiXV07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CiAgICAgTlNFcnJvciAq
ZXJyb3IgPSBbZGVsZWdhdGUgd2FpdEZvckRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25FcnJv
cl07Ci0gICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uLCBAIkF0
dGVtcHRlZCBuYXZpZ2F0aW9uIGF3YXkgZnJvbSBhcHAtYm91bmQgZG9tYWluIik7CisgICAgRVhQ
RUNUX1dLX1NUUkVRKGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uLCBAIkFwcC1ib3VuZCBkb21h
aW4gZmFpbHVyZSIpOwogCiAgICAgY2xlYW5VcEluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGlu
Z3MoKTsKIH0KIAorVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBJbmplY3RTY3JpcHRUaGVuTmF2
aWdhdGVUb05vbkFwcEJvdW5kRG9tYWluRmFpbHMpCit7CisgICAgaXNEb25lID0gZmFsc2U7Cisg
ICAgaW5pdGlhbGl6ZUluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKKyAgICBhdXRv
IHVzZXJTY3JpcHQgPSBhZG9wdE5TKFtbV0tVc2VyU2NyaXB0IGFsbG9jXSBpbml0V2l0aFNvdXJj
ZTp1c2VyU2NyaXB0U291cmNlIGluamVjdGlvblRpbWU6V0tVc2VyU2NyaXB0SW5qZWN0aW9uVGlt
ZUF0RG9jdW1lbnRTdGFydCBmb3JNYWluRnJhbWVPbmx5OllFU10pOworCisgICAgV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90
ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVn
SW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CisgICAgYXV0byBz
Y2hlbWVIYW5kbGVyID0gYWRvcHROUyhbW0luQXBwQnJvd3NlclNjaGVtZUhhbmRsZXIgYWxsb2Nd
IGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOnNjaGVtZUhh
bmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiaW4tYXBwLWJyb3dzZXIiXTsKKyAgICBbY29uZmln
dXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgYWRkVXNlclNjcmlwdDp1c2VyU2NyaXB0Lmdl
dCgpXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXROZWVkc0luQXBwQnJv
d3NlclByaXZhY3lRdWlya3M6Tk9dOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rl
c3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbQXBwQm91bmRE
b21haW5EZWxlZ2F0ZSBuZXddKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6
ZGVsZWdhdGUuZ2V0KCldOworCisgICAgaXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgZXZh
bHVhdGVKYXZhU2NyaXB0OkAid2luZG93LndrVXNlclNjcmlwdEluamVjdGVkIiBjb21wbGV0aW9u
SGFuZGxlcjpeKGlkIF9OdWxsYWJsZSByZXN1bHQsIE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3Ip
IHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKCEhZXJyb3IpOworICAgICAgICBpc0RvbmUgPSB0cnVl
OworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworICAg
IAorICAgIC8vIExvYWQgYSBub24tYXBwIGJvdW5kIGRvbWFpbi4KKyAgICBOU1VSTFJlcXVlc3Qg
KnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOkAiaW4tYXBwLWJyb3dzZXI6Ly8vaW4tYXBwLWJyb3dzZXItcHJpdmFjeS10ZXN0LXVzZXIt
YWdlbnQtc2NyaXB0Il1dOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworICAg
IE5TRXJyb3IgKmVycm9yID0gW2RlbGVnYXRlIHdhaXRGb3JEaWRGYWlsUHJvdmlzaW9uYWxOYXZp
Z2F0aW9uRXJyb3JdOworICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5sb2NhbGl6ZWREZXNjcmlw
dGlvbiwgQCJBcHAtYm91bmQgZG9tYWluIGZhaWx1cmUiKTsKK30KKwogVEVTVChJbkFwcEJyb3dz
ZXJQcml2YWN5LCBXZWJWaWV3Q2F0ZWdvcnkpCiB7CiAgICAgaW5pdGlhbGl6ZUluQXBwQnJvd3Nl
clByaXZhY3lUZXN0U2V0dGluZ3MoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399068</attachid>
            <date>2020-05-11 16:29:55 -0700</date>
            <delta_ts>2020-05-11 16:59:46 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-211647-20200511162954.patch</filename>
            <type>text/plain</type>
            <size>81786</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNDgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjU4MDJjZTUzNDMxMjc2
YjVhNGQyZTlmNzYxYTUwZjE0ZDY1ODY3NC4uZmU3YmZiNGU1NmM4YmZhYzc4NjNmMmZlMjljZTc3
YzRlZTUzOWEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIwLTA1LTExICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEZhaWwgbmF2
aWdhdGlvbnMgdG8gbm9uIGFwcC1ib3VuZCBkb21haW5zIGFmdGVyIHVzZSBvZiBhcHAtYm91bmQg
QVBJcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEx
NjQ3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82Mjk3ODE1OT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBCcmVudCBGdWxnaGFtLgorCisgICAgICAgIFNpbXBsaWZpZWQgaW4tYXBwIGJyb3dzZXIg
cHJpdmFjeSBwcm90ZWN0aW9ucyBjaGVjayBpbnRvIG9uZSwgYmV0dGVyCisgICAgICAgIG5hbWVk
IGZ1bmN0aW9uLgorCisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3Js
ZCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogcGFn
ZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6aW5qZWN0VXNlclNjcmlwdElt
bWVkaWF0ZWx5KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZTo6aW5qZWN0VXNlclN0eWxlU2hlZXQpOgorICAgICAgICAqIHBhZ2UvV2ViS2l0TmFtZXNw
YWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdE5hbWVzcGFjZTo6bWVzc2FnZUhhbmRs
ZXJzKToKKyAgICAgICAgKiBzdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OlNjb3BlUnVsZVNldHM6OmluaXRpYWxpemVVc2VyU3R5bGUpOgorICAg
ICAgICBSZWFycmFuZ2VkIG9yZGVyaW5nIHNvIHRoZSBtZXNzYWdlIHRvIFdlYlBhZ2VQcm94eSBv
bmx5IGdldHMgc2VudCB0bworICAgICAgICBpbmRpY2F0ZSBhcHAtYm91bmQgYmVoYXZpb3IgaWYg
dXNlciBzdHlsZSBzaGVldHMgYWN0dWFsbHkgZXhpc3QuCisKIDIwMjAtMDUtMTEgIEFuZHJlcyBH
b256YWxleiAgPGFuZHJlc2dfMjJAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBtZWNoYW5pc20g
dG8gdHVybiBvbiBhY2Nlc3NpYmlsaXR5IGlzb2xhdGVkIHRyZWUgbW9kZSBmcm9tIFdlYktpdFRl
c3RSdW5uZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQ1N2ViZDljN2I5YWUwYmNhZTlmOWY4YmM1ZTczZjg2ZjAx
YWE1ZTYuLmU3ODYxYjczNzZmMjlmMDcwN2RiOGUxODUxNTg0MGQ0NjM4N2NhMGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTAwIEBACisyMDIwLTA1LTExICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9j
aGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEZhaWwgbmF2aWdhdGlvbnMgdG8gbm9uIGFwcC1i
b3VuZCBkb21haW5zIGFmdGVyIHVzZSBvZiBhcHAtYm91bmQgQVBJcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExNjQ3CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS82Mjk3ODE1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLgor
CisgICAgICAgIEEgbG90IG9mIHRoaXMgcGF0Y2ggaXMgZGVsZXRpbmcgdGhlIHVubmVjZXNzYXJ5
IHZhcmlhYmxlL2Z1bmN0aW9uCisgICAgICAgIGhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmRE
b21haW4gbm93IHRoYXQgbmF2aWdhdGluZyBhd2F5IGZyb20gYW4KKyAgICAgICAgYXBwLWJvdW5k
IGRvbWFpbiBpcyBub3QgcG9zc2libGUuCisgICAgICAgIAorICAgICAgICBUbyBhZGRyZXNzIHRo
ZSBidWcsIHRoaXMgc2V0cyB0aGUgZGVmYXVsdCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
CisgICAgICAgIHZhbHVlIHRvIGJlIFdURjo6bnVsbG9wdC4gVGhpcyB3aWxsIGFsbG93IGFwcC1i
b3VuZCBiZWhhdmlvcnMgdW50aWwKKyAgICAgICAgYSBuYXZpZ2F0aW9uIGhhcyBiZWVuIGF0dGVt
cHRlZCwgaW4gd2hpY2ggY2FzZSBpdCB3aWxsIGZhaWwgb3Igd2lsbAorICAgICAgICB1cGRhdGUg
aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiB0byB0aGUgY29ycmVjdCB2YWx1ZS4KKworCisg
ICAgICAgICogU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TG9h
ZFBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkxvYWRQYXJhbWV0
ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9Mb2FkUGFyYW1ldGVycy5oOgorICAgICAg
ICAqIFNoYXJlZC9Qb2xpY3lEZWNpc2lvbi5oOgorICAgICAgICAoV2ViS2l0OjpQb2xpY3lEZWNp
c2lvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UG9saWN5RGVjaXNpb246OmRl
Y29kZSk6CisgICAgICAgICogVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWREYXRhKToKKyAgICAgICAg
KFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b25TeW5jKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5Ojpsb2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRE
YXRhV2l0aE5hdmlnYXRpb25TaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnJlY2VpdmVkUG9saWN5RGVjaXNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNTaGFyZWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmRE
b21haW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICBSZW1vdmUgaGFzTmF2aWdhdGVkQXdheUZy
b21BcHBCb3VuZERvbWFpbi4KKworICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldElz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW5BbmRDaGVja0lmUGVybWl0dGVkKToKKyAgICAgICAg
Q2hlY2sgZm9yIG5ldyBtX2hhc0V4ZWN1dGVkQXBwQm91bmRCZWhhdmlvckJlZm9yZU5hdmlnYXRp
b24gcGFyYW1ldGVyCisgICAgICAgIGFuZCBmYWlsIHRoZSBuYXZpZ2F0aW9uIGlmIGEgV2ViVmll
dyBoYXMgdXNlZCBhcHAtYm91bmQgYmVoYXZpb3IgdGhlbgorICAgICAgICB0cmllcyB0byBuYXZp
Z2F0ZSB0byBhIG5vbiBhcHAtYm91bmQgZG9tYWluLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIFVwZGF0
ZSBlcnJvciBtZXNzYWdlIHRvIGJlIG1vcmUgZ2VuZXJhbCBub3cgdGhhdCBtb3JlIHRoYW4gb25l
IGVycm9yCisgICAgICAgIGNhbiBvY2N1ci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRIYXNFeGVjdXRlZEFw
cEJvdW5kQmVoYXZpb3JCZWZvcmVOYXZpZ2F0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICBOZXcgcGFyYW1ldGVyIHRvIGluZGljYXRl
IGEgV2ViVmlldyBoYXMgdXNlZCBhcHAtYm91bmQgQVBJcyBiZWZvcmUKKyAgICAgICAgbmF2aWdh
dGluZy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkRW5hYmxlSW5BcHBC
cm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6Omhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6bmVlZHNJbkFwcEJyb3dzZXJQ
cml2YWN5UXVpcmtzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIENvbWJpbmVkIHR3byBm
dW5jdGlvbnMgaW50byBhIHNpbXBsZXIgZnVuY3Rpb246CisgICAgICAgIHNob3VsZEVuYWJsZUlu
QXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjptX2xpbWl0c05hdmlnYXRpb25z
VG9BcHBCb3VuZERvbWFpbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVQcmVm
ZXJlbmNlcyk6CisgICAgICAgIFN0b3JlIHRoZSBzcGVjaWFsIGFwcC1ib3VuZCBkb21haW4gZmxh
ZyB0byBnYXRlIHRoZSBzZXJ2aWNlIHdvcmtlcgorICAgICAgICBBUEkuIFRoaXMgc2hvdWxkIGJl
IHN0b3JlZCBzZXBhcmF0ZWx5IGZyb20KKyAgICAgICAgbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluLCBiZWNhdXNlIGluIHRoZSBXZWJQYWdlIGNvbnN0cnVjdG9yIHdlCisgICAgICAgIGRv
bid0IHlldCBrbm93IHdoZXRoZXIgdGhlIFdLQXBwQm91bmREb21haW5zIGtleSBleGlzdHMuCisK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpsb2FkRGF0YUltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2Fk
RGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRBbHRlcm5hdGVIVE1MKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKToKKyAgICAg
ICAgUmVtb3ZlIGhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4uCisKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6cnVuSmF2YVNjcmlwdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OnNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpzaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMpOgorICAg
ICAgICBJZiBtX25lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcyBhcmUgb24gZm9yIHRlc3Rp
bmcsIGRvbid0IGVuYWJsZQorICAgICAgICBwcm90ZWN0aW9ucy4gT25seSBub3RpZnkgdGhlIFdl
YlBhZ2VQcm94eSBvZiBhcHAtYm91bmQgYmVoYXZpb3IgaWYKKyAgICAgICAgYSBuYXZpZ2F0aW9u
IGhhcyBub3Qgb2NjdXJlZCBhbmQgd2Uga25vdyB0aGUgd2ViVmlldyBpcyBub3QgYXBwLWJvdW5k
CisgICAgICAgIChpbiBvcmRlciB0byBsaW1pdCBJUEMpLgorCisgICAgICAgIChXZWJLaXQ6Om1f
aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpoYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SGFzTmF2aWdhdGVkQXdheUZy
b21BcHBCb3VuZERvbWFpbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Om5l
ZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcyBjb25zdCk6IERlbGV0ZWQuCisKIDIwMjAtMDUt
MTEgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgUkVH
UkVTU0lPTiAocjI1MzI2Nyk6IGlzc3VlcyBvbiB0b3VjaHN0YXJ0L3RvdWNoZW5kL3RvdWNobW92
ZSAocG9pbnRlcmRvd24vcG9pbnRlcnVwL3BvaW50ZXJtb3ZlKSBldmVudHMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggYWUyODg1YzAz
M2JlNGFjOGRjMDJjODEyMjQ3OGFjN2M3NDM5MGMwYi4uMzcyZmJiY2M1ZTg1ZTJkNjc5ZDkwYjNj
YTkyMGQ1NzRkMGEzOWJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5jcHAKQEAgLTU3OSwxMiArNTc5LDEzIEBAIEpTQzo6SlNWYWx1ZSBTY3Jp
cHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZElnbm9yaW5nRXhjZXB0aW9uKERPTVdy
YXBwZXJXCiAKIFZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlw
dEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMm
JiBwYXJhbWV0ZXJzKQogewotICAgIGlmIChtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmhhc05h
dmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4oKSAmJiAhbV9mcmFtZS5sb2FkZXIoKS5jbGll
bnQoKS5uZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3MoKSkgeworICAgIGlmIChtX2ZyYW1l
LmxvYWRlcigpLmNsaWVudCgpLnNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0
aW9ucygpKSB7CiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IG1fZnJhbWUuZG9jdW1lbnQo
KSkKICAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNl
OjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQg
aW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iKTsKICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1JfSUZfQUxMT1dFRChMb2FkaW5nLCAiZXhlY3V0ZVNjcmlwdEluV29ybGQ6IElnbm9y
aW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKICAg
ICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEV4Y2VwdGlvbkRldGFpbHMgeyAiSWdub3Jpbmcg
dXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbiJfcyB9KTsKICAg
ICB9CisgICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5ub3RpZnlQYWdlT2ZBcHBCb3VuZEJl
aGF2aW9yKCk7CiAKICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKHBh
cmFtZXRlcnMuZm9yY2VVc2VyR2VzdHVyZSA9PSBGb3JjZVVzZXJHZXN0dXJlOjpZZXMgPyBPcHRp
b25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKSA6
IFdURjo6bnVsbG9wdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50
LmgKaW5kZXggMWU1NDI1ZTk0Nzc4NWYxOGJlOGI1OTk0OGU4OTRhOGRmODMyYzllNy4uOTIzMWI0
NTM2ZDVkM2JiYmFlNTgwYjVjM2FhZTYwZDFhYWJmZTQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTM3OSw4ICszNzksOCBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIEFsbG93c0NvbnRlbnRKYXZhU2NyaXB0IGFsbG93c0NvbnRlbnRKYXZhU2NyaXB0
RnJvbU1vc3RSZWNlbnROYXZpZ2F0aW9uKCkgY29uc3QgeyByZXR1cm4gQWxsb3dzQ29udGVudEph
dmFTY3JpcHQ6OlllczsgfQogCi0gICAgdmlydHVhbCBib29sIGhhc05hdmlnYXRlZEF3YXlGcm9t
QXBwQm91bmREb21haW4oKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBuZWVk
c0luQXBwQnJvd3NlclByaXZhY3lRdWlya3MoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBub3RpZnlQYWdlT2ZB
cHBCb3VuZEJlaGF2aW9yKCkgeyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWUuY3BwCmluZGV4IDc2MDY2ZjUyYThhMjE4NzBiNjU3OTdjNDhmNTM4OTliZDJjM2Ix
ZmMuLjU0MGY0NTZlZTgyMTk5YmJmZjcxZTY2ODhiYzBlODFmYTUyNWRkYTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWUuY3BwCkBAIC02NTEsMTIgKzY1MSwxMyBAQCB2b2lkIEZyYW1lOjppbmplY3RVc2VyU2Ny
aXB0cyhVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSBpbmplY3Rpb25UaW1lKQogCiB2b2lkIEZyYW1l
OjppbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29u
c3QgVXNlclNjcmlwdCYgc2NyaXB0KQogewotICAgIGlmIChsb2FkZXIoKS5jbGllbnQoKS5oYXNO
YXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluKCkgJiYgIWxvYWRlcigpLmNsaWVudCgpLm5l
ZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrcygpKSB7CisgICAgaWYgKGxvYWRlcigpLmNsaWVu
dCgpLnNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7CiAgICAg
ICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCkpCiAgICAgICAgICAgICBk
b2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3Nh
Z2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9u
LWFwcCBib3VuZCBkb21haW4uIl9zKTsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxM
T1dFRChMb2FkaW5nLCAiaW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5OiBJZ25vcmluZyB1c2Vy
IHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbiBhcHAtYm91bmQgZG9tYWluIik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CisgICAgbG9hZGVyKCkuY2xpZW50KCkubm90aWZ5UGFnZU9mQXBwQm91bmRC
ZWhhdmlvcigpOwogCiAgICAgYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOwogICAg
IGlmICghZG9jdW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAwNjgxOGM4MjU2YTdhNGQ2OTA1
NmM5MzEwYzFjMWQ0ZmZmNjVkN2JkLi5lYzI0ZDA3ZDBjYTQ3Y2ZmNjU1NTY0ZmU5M2YzNmRkNWNk
MmU1MDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTMxNjIsMTEgKzMxNjIsMTIgQEAgdm9pZCBQ
YWdlOjpyZXZlYWxDdXJyZW50U2VsZWN0aW9uKCkKIAogdm9pZCBQYWdlOjppbmplY3RVc2VyU3R5
bGVTaGVldChVc2VyU3R5bGVTaGVldCYgdXNlclN0eWxlU2hlZXQpCiB7Ci0gICAgaWYgKG1fbWFp
bkZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5oYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9t
YWluKCkpIHsKKyAgICBpZiAobV9tYWluRnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnNob3VsZEVu
YWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7CiAgICAgICAgIGlmIChhdXRv
KiBkb2N1bWVudCA9IG1fbWFpbkZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICAgICAgZG9jdW1l
bnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2
ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHN0eWxlIHNoZWV0IGZvciBub24tYXBwIGJvdW5k
IGRvbWFpbi4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIG1fbWFpbkZyYW1lLT5s
b2FkZXIoKS5jbGllbnQoKS5ub3RpZnlQYWdlT2ZBcHBCb3VuZEJlaGF2aW9yKCk7CiAKICAgICAv
LyBXZSBuZWVkIHRvIHdhaXQgdW50aWwgd2UncmUgbm8gbG9uZ2VyIGRpc3BsYXlpbmcgdGhlIGlu
aXRpYWwgZW1wdHkgZG9jdW1lbnQgYmVmb3JlIHdlIGNhbiBpbmplY3QgdGhlIHN0eWxlc2hlZXRz
LgogICAgIGlmIChtX21haW5GcmFtZS0+bG9hZGVyKCkuc3RhdGVNYWNoaW5lKCkuaXNEaXNwbGF5
aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9XZWJLaXROYW1lc3BhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XZWJLaXROYW1l
c3BhY2UuY3BwCmluZGV4IGFjMTI0N2M2MTRlMTZlZTBmNTUyYzc0MzAyZjI2M2IxMzI4MWY0MzAu
LjAxOGRjNjU3YTMxOTdmY2NkYTk0YzY3OGZmZWQwN2YyMGRjZWNmNDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvV2ViS2l0TmFtZXNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1dlYktpdE5hbWVzcGFjZS5jcHAKQEAgLTUwLDkgKzUwLDEyIEBAIFdlYktpdE5hbWVz
cGFjZTo6fldlYktpdE5hbWVzcGFjZSgpID0gZGVmYXVsdDsKIAogVXNlck1lc3NhZ2VIYW5kbGVy
c05hbWVzcGFjZSogV2ViS2l0TmFtZXNwYWNlOjptZXNzYWdlSGFuZGxlcnMoKQogewotICAgIGlm
IChmcmFtZSgpICYmIGZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgpLmhhc05hdmlnYXRlZEF3YXlG
cm9tQXBwQm91bmREb21haW4oKSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExP
V0VEKExvYWRpbmcsICJJZ25vcmluZyBtZXNzYWdlSGFuZGxlcnMoKSByZXF1ZXN0IGZvciBub24g
YXBwLWJvdW5kIGRvbWFpbiIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoZnJh
bWUoKSkgeworICAgICAgICBpZiAoZnJhbWUoKS0+bG9hZGVyKCkuY2xpZW50KCkuc2hvdWxkRW5h
YmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkpIHsKKyAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoTG9hZGluZywgIklnbm9yaW5nIG1lc3NhZ2VIYW5kbGVy
cygpIHJlcXVlc3QgZm9yIG5vbiBhcHAtYm91bmQgZG9tYWluIik7CisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgfQorICAgICAgICBmcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQo
KS5ub3RpZnlQYWdlT2ZBcHBCb3VuZEJlaGF2aW9yKCk7CiAgICAgfQogCiAgICAgcmV0dXJuICZt
X21lc3NhZ2VIYW5kbGVyTmFtZXNwYWNlLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlU2NvcGVSdWxlU2V0cy5jcHAKaW5kZXggMjk1ZGY0MDQxMDdhZGMwYjNmN2JmZDllMzliMDNk
MDRiOWMwNGU2NC4uMDZlYzdlOWQ2NzlkMTlhNjkwZDI5MmJkOTNkNzYxMzVlYTZkOGIwYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuY3BwCkBAIC05MiwxMCAr
OTIsMTMgQEAgdm9pZCBTY29wZVJ1bGVTZXRzOjppbml0aWFsaXplVXNlclN0eWxlKCkKICAgICBp
ZiAoQ1NTU3R5bGVTaGVldCogcGFnZVVzZXJTaGVldCA9IGV4dGVuc2lvblN0eWxlU2hlZXRzLnBh
Z2VVc2VyU2hlZXQoKSkKICAgICAgICAgdGVtcFVzZXJTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQo
cGFnZVVzZXJTaGVldC0+Y29udGVudHMoKSwgbnVsbHB0ciwgbWVkaWFRdWVyeUV2YWx1YXRvciwg
bV9zdHlsZVJlc29sdmVyKTsKICAgICBhdXRvKiBwYWdlID0gbV9zdHlsZVJlc29sdmVyLmRvY3Vt
ZW50KCkucGFnZSgpOwotICAgIGlmIChwYWdlICYmIHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigp
LmNsaWVudCgpLmhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4oKSAmJiAhZXh0ZW5z
aW9uU3R5bGVTaGVldHMuaW5qZWN0ZWRVc2VyU3R5bGVTaGVldHMoKS5pc0VtcHR5KCkpCisgICAg
aWYgKCFleHRlbnNpb25TdHlsZVNoZWV0cy5pbmplY3RlZFVzZXJTdHlsZVNoZWV0cygpLmlzRW1w
dHkoKSAmJiBwYWdlICYmIHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmNsaWVudCgpLnNob3Vs
ZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpKQogICAgICAgICBtX3N0eWxl
UmVzb2x2ZXIuZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1
cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzdHlsZSBzaGVldCBm
b3Igbm9uLWFwcCBib3VuZCBkb21haW4uIl9zKTsKLSAgICBlbHNlCisgICAgZWxzZSB7CiAgICAg
ICAgIGNvbGxlY3RSdWxlc0Zyb21Vc2VyU3R5bGVTaGVldHMoZXh0ZW5zaW9uU3R5bGVTaGVldHMu
aW5qZWN0ZWRVc2VyU3R5bGVTaGVldHMoKSwgdGVtcFVzZXJTdHlsZS5nZXQoKSwgbWVkaWFRdWVy
eUV2YWx1YXRvcik7CisgICAgICAgIGlmIChwYWdlICYmICFleHRlbnNpb25TdHlsZVNoZWV0cy5p
bmplY3RlZFVzZXJTdHlsZVNoZWV0cygpLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHBhZ2UtPm1h
aW5GcmFtZSgpLmxvYWRlcigpLmNsaWVudCgpLm5vdGlmeVBhZ2VPZkFwcEJvdW5kQmVoYXZpb3Io
KTsKKyAgICB9CiAgICAgY29sbGVjdFJ1bGVzRnJvbVVzZXJTdHlsZVNoZWV0cyhleHRlbnNpb25T
dHlsZVNoZWV0cy5kb2N1bWVudFVzZXJTdHlsZVNoZWV0cygpLCB0ZW1wVXNlclN0eWxlLmdldCgp
LCBtZWRpYVF1ZXJ5RXZhbHVhdG9yKTsKICAgICBpZiAodGVtcFVzZXJTdHlsZS0+cnVsZUNvdW50
KCkgPiAwIHx8IHRlbXBVc2VyU3R5bGUtPnBhZ2VSdWxlcygpLnNpemUoKSA+IDApCiAgICAgICAg
IG1fdXNlclN0eWxlID0gV1RGTW92ZSh0ZW1wVXNlclN0eWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQpp
bmRleCA2MWYxMGNjODEyNjRlMjRhNmY3NmU1MTk0MTE5ZmQ1NjdmMzdmOWY5Li4wZWJhYzA1NGQ1
ZDMzMmM2NDA3M2RmMjQyYzBlZDY3NTJmOGY3ZDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC02
Miw2ICs2Miw3IEBACiAjaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvTmV0d29ya1Nlc3Npb25Db2Nv
YUFkZGl0aW9ucy5oPgogI2Vsc2UKICNkZWZpbmUgTkVUV09SS19TRVNTSU9OX0NPQ09BX0FERElU
SU9OU18xCisjZGVmaW5lIE5FVFdPUktfU0VTU0lPTl9DT0NPQV9BRERJVElPTlNfMiB0cnVlCiAj
ZW5kaWYKIAogI2ltcG9ydCAiRGV2aWNlTWFuYWdlbWVudFNvZnRMaW5rLmgiCkBAIC0xMjYwLDYg
KzEyNjEsOCBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmluaXRpYWxpemVFcGhlbWVyYWxT
dGF0ZWxlc3NTZXNzaW9uKE5hdmlnYXRpbmdUb0FwcEJvdQogU2Vzc2lvbldyYXBwZXImIE5ldHdv
cmtTZXNzaW9uQ29jb2E6OnNlc3Npb25XcmFwcGVyRm9yVGFzayhjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0
b3JlZENyZWRlbnRpYWxzUG9saWN5LCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKIHsKICAgICBhdXRvIHNob3VsZEJlQ29u
c2lkZXJlZEFwcEJvdW5kID0gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA/ICppc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluIDogTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46OlllczsK
KyAgICBpZiAoTkVUV09SS19TRVNTSU9OX0NPQ09BX0FERElUSU9OU18yKQorICAgICAgICBzaG91
bGRCZUNvbnNpZGVyZWRBcHBCb3VuZCA9IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObzsK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGlmIChhdXRvKiBzdG9y
YWdlU2Vzc2lvbiA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpKSB7CiAgICAgICAgIGF1dG8gZmly
c3RQYXJ0eSA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluKHJlcXVlc3QuZmlyc3RQYXJ0eUZv
ckNvb2tpZXMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1l
dGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5jcHAKaW5kZXgg
NmU1Njk5YTZmMGE3OGRkOGI4YzA4MTM2MjY0YWUyMTNjMjg3ZjhmMS4uMjg5NjhlZGNhNmNhOTI5
YWUxZGJlYzMwNjFjMmU0YzU5NDMyNDBlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvTG9hZFBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJh
bWV0ZXJzLmNwcApAQCAtNTcsNyArNTcsNiBAQCB2b2lkIExvYWRQYXJhbWV0ZXJzOjplbmNvZGUo
SVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIuZW5jb2RlRW51bShsb2Nr
QmFja0ZvcndhcmRMaXN0KTsKICAgICBlbmNvZGVyIDw8IGNsaWVudFJlZGlyZWN0U291cmNlRm9y
SGlzdG9yeTsKICAgICBlbmNvZGVyIDw8IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47Ci0g
ICAgZW5jb2RlciA8PCBoYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluOwogCiAgICAg
cGxhdGZvcm1FbmNvZGUoZW5jb2Rlcik7CiB9CkBAIC0xMzgsOSArMTM3LDYgQEAgYm9vbCBMb2Fk
UGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgTG9hZFBhcmFtZXRlcnMm
IGRhdGEpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLmlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgaWYgKCFkZWNvZGVy
LmRlY29kZShkYXRhLmhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4pKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgCiAgICAgaWYgKCFwbGF0Zm9ybURlY29kZShkZWNvZGVyLCBk
YXRhKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFt
ZXRlcnMuaAppbmRleCBhN2E0OWQwZWFkMzEwNmVkODE2MjJlMTNiMjJmYjE2YzI2Yjg5MjdiLi40
NzEwZDMyN2MwODZlNDIxOWFiMDAzY2QzNWZhM2FhNWY5NzExMGI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0xvYWRQYXJhbWV0ZXJzLmgKQEAgLTcwLDggKzcwLDcgQEAgc3RydWN0IExvYWRQYXJhbWV0
ZXJzIHsKICAgICBXZWJDb3JlOjpMb2NrSGlzdG9yeSBsb2NrSGlzdG9yeSB7IFdlYkNvcmU6Okxv
Y2tIaXN0b3J5OjpObyB9OwogICAgIFdlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExpc3QgbG9ja0Jh
Y2tGb3J3YXJkTGlzdCB7IFdlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vIH07CiAgICAg
U3RyaW5nIGNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeTsKLSAgICBPcHRpb25hbDxOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiB7IE5h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObyB9OwotICAgIE5hdmlnYXRlZEF3YXlGcm9tQXBw
Qm91bmREb21haW4gaGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbiB7IE5hdmlnYXRl
ZEF3YXlGcm9tQXBwQm91bmREb21haW46Ok5vIH07CisgICAgT3B0aW9uYWw8TmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBkYXRhRGV0ZWN0aW9uQ29u
dGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BvbGljeURlY2lzaW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Qb2xpY3lEZWNpc2lvbi5oCmluZGV4IDQ0NWUzMmI1Yjll
YWIzMmI0NzE0NTEwNzdlZTFkMzg0MTkwODYxM2EuLjgyOTExYjY3MWEzZjI1NTM3YjBjMmZhMjg1
ZmY2MzRkODJhMDcwYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BvbGljeURl
Y2lzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUG9saWN5RGVjaXNpb24uaApAQCAt
MzMsMTIgKzMzLDkgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWVudW0gY2xhc3MgTmF2aWdh
dGVkQXdheUZyb21BcHBCb3VuZERvbWFpbiA6IGJvb2wgeyBZZXMsIE5vfTsKLQogc3RydWN0IFBv
bGljeURlY2lzaW9uIHsKICAgICBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRp
ZmllciB7IH07Ci0gICAgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4geyBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm8g
fTsKLSAgICBOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluIGhhc05hdmlnYXRlZEF3YXlG
cm9tQXBwQm91bmREb21haW4geyBOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluOjpObyB9
OworICAgIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluIHsgV1RGOjpudWxsb3B0IH07CiAgICAgV2ViQ29yZTo6UG9saWN5QWN0
aW9uIHBvbGljeUFjdGlvbiB7IFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6SWdub3JlIH07CiAgICAg
dWludDY0X3QgbmF2aWdhdGlvbklEIHsgMCB9OwogICAgIERvd25sb2FkSUQgZG93bmxvYWRJRCB7
IDAgfTsKQEAgLTUwLDcgKzQ3LDYgQEAgc3RydWN0IFBvbGljeURlY2lzaW9uIHsKICAgICB7CiAg
ICAgICAgIGVuY29kZXIgPDwgaWRlbnRpZmllcjsKICAgICAgICAgZW5jb2RlciA8PCBpc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluOwotICAgICAgICBlbmNvZGVyIDw8IGhhc05hdmlnYXRlZEF3
YXlGcm9tQXBwQm91bmREb21haW47CiAgICAgICAgIGVuY29kZXIgPDwgcG9saWN5QWN0aW9uOwog
ICAgICAgICBlbmNvZGVyIDw8IG5hdmlnYXRpb25JRDsKICAgICAgICAgZW5jb2RlciA8PCBkb3du
bG9hZElEOwpAQCAtNzAsMTEgKzY2LDYgQEAgc3RydWN0IFBvbGljeURlY2lzaW9uIHsKICAgICAg
ICAgZGVjb2RlciA+PiBkZWNvZGVkSXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKICAgICAg
ICAgaWYgKCFkZWNvZGVkSXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKICAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAgIAotICAgICAgICBPcHRpb25hbDxOYXZpZ2F0
ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluPiBkZWNvZGVkSGFzTmF2aWdhdGVkQXdheUZyb21BcHBC
b3VuZERvbWFpbjsKLSAgICAgICAgZGVjb2RlciA+PiBkZWNvZGVkSGFzTmF2aWdhdGVkQXdheUZy
b21BcHBCb3VuZERvbWFpbjsKLSAgICAgICAgaWYgKCFkZWNvZGVkSGFzTmF2aWdhdGVkQXdheUZy
b21BcHBCb3VuZERvbWFpbikKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAg
ICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UG9saWN5QWN0aW9uPiBkZWNvZGVkUG9saWN5QWN0aW9u
OwogICAgICAgICBkZWNvZGVyID4+IGRlY29kZWRQb2xpY3lBY3Rpb247CkBAIC0xMDEsNyArOTIs
NyBAQCBzdHJ1Y3QgUG9saWN5RGVjaXNpb24gewogICAgICAgICBpZiAoIXNhbmRib3hFeHRlbnNp
b25IYW5kbGUpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgICAgIHJl
dHVybiB7eyBXVEZNb3ZlKCpkZWNvZGVkSWRlbnRpZmllciksIFdURk1vdmUoKmRlY29kZWRJc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSwgV1RGTW92ZSgqZGVjb2RlZEhhc05hdmlnYXRlZEF3
YXlGcm9tQXBwQm91bmREb21haW4pLCBXVEZNb3ZlKCpkZWNvZGVkUG9saWN5QWN0aW9uKSwgV1RG
TW92ZSgqZGVjb2RlZE5hdmlnYXRpb25JRCksIFdURk1vdmUoKmRlY29kZWREb3dubG9hZElEKSwg
V1RGTW92ZSgqZGVjb2RlZFdlYnNpdGVQb2xpY2llc0RhdGEpLCBXVEZNb3ZlKCpzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlKX19OworICAgICAgICByZXR1cm4ge3sgV1RGTW92ZSgqZGVjb2RlZElkZW50
aWZpZXIpLCBXVEZNb3ZlKCpkZWNvZGVkSXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiksIFdU
Rk1vdmUoKmRlY29kZWRQb2xpY3lBY3Rpb24pLCBXVEZNb3ZlKCpkZWNvZGVkTmF2aWdhdGlvbklE
KSwgV1RGTW92ZSgqZGVjb2RlZERvd25sb2FkSUQpLCBXVEZNb3ZlKCpkZWNvZGVkV2Vic2l0ZVBv
bGljaWVzRGF0YSksIFdURk1vdmUoKnNhbmRib3hFeHRlbnNpb25IYW5kbGUpfX07CiAgICAgfQog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHku
Y3BwCmluZGV4IDNlZjcyN2FiZTRkNmJkMGYyMWM1Yzk1YzFlMjA0NTdlOTkzNjY1ODguLmFkNDhi
Y2Q2OTk0NmMzNzQ3YTAyNGQyZDM5MDVmNDc5ZTMxNzhkZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKQEAgLTE1NiwxNCArMTU2LDE0
IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmluaXRpYWxpemVXZWJQYWdlKFJlZlB0cjxB
UEk6OldlYnNpdGVQb2xpY2llcz4mJiB3ZWJzCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkZyZWV6ZUxheWVyVHJlZUR1ZVRvU3dpcGVBbmltYXRpb24oKSk7CiB9CiAKLXZvaWQgUHJv
dmlzaW9uYWxQYWdlUHJveHk6OmxvYWREYXRhKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwg
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBj
b25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0
KiB1c2VyRGF0YSwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4sIE5hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4gaGFz
TmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVz
RGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMpCit2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2Fk
RGF0YShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywg
Y29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIE9wdGlvbmFsPE5h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBP
cHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsKICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImxvYWREYXRhOiBwYWdlUHJv
eHlJRD0lIiBQUkl1NjQgIiB3ZWJQYWdlSUQ9JSIgUFJJdTY0LCBtX3BhZ2UuaWRlbnRpZmllcigp
LnRvVUludDY0KCksIG1fd2ViUGFnZUlELnRvVUludDY0KCkpOwogCi0gICAgbV9wYWdlLmxvYWRE
YXRhV2l0aE5hdmlnYXRpb25TaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQs
IG5hdmlnYXRpb24sIGRhdGEsIE1JTUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdXNlckRhdGEs
IFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzLCBpc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluLCBoYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluLCBXVEZN
b3ZlKHdlYnNpdGVQb2xpY2llcyksIG5hdmlnYXRpb24ubGFzdE5hdmlnYXRpb25BY3Rpb24oKS5z
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsKKyAgICBtX3BhZ2UubG9hZERhdGFXaXRoTmF2
aWdhdGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgbmF2aWdhdGlv
biwgZGF0YSwgTUlNRVR5cGUsIGVuY29kaW5nLCBiYXNlVVJMLCB1c2VyRGF0YSwgV2ViQ29yZTo6
U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXMsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4sIFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSwgbmF2aWdhdGlvbi5sYXN0TmF2aWdhdGlv
bkFjdGlvbigpLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwogfQogCi12b2lkIFByb3Zp
c2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24s
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEFQSTo6T2JqZWN0KiB1c2VyRGF0
YSwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4sIE5hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4gaGFzTmF2aWdhdGVk
QXdheUZyb21BcHBCb3VuZERvbWFpbiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3
ZWJzaXRlUG9saWNpZXMpCit2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChB
UEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIE9wdGlvbmFsPFdlYnNpdGVQ
b2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAibG9hZFJlcXVlc3Q6IHBhZ2VQcm94eUlEPSUiIFBSSXU2
NCAiIHdlYlBhZ2VJRD0lIiBQUkl1NjQsIG1fcGFnZS5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwg
bV93ZWJQYWdlSUQudG9VSW50NjQoKSk7CiAKQEAgLTE3Myw3ICsxNzMsNyBAQCB2b2lkIFByb3Zp
c2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24s
IFdlYkNvcmU6OlJlcwogICAgIGlmIChuYXZpZ2F0aW9uLmZyb21JdGVtKCkgJiYgbmF2aWdhdGlv
bi5sb2NrQmFja0ZvcndhcmRMaXN0KCkgPT0gV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlzdDo6
WWVzKQogICAgICAgICBuYXZpZ2F0aW9uLmZyb21JdGVtKCktPnNldExhc3RQcm9jZXNzSWRlbnRp
ZmllcihtX3Byb2Nlc3MtPmNvcmVQcm9jZXNzSWRlbnRpZmllcigpKTsKIAotICAgIG1fcGFnZS5s
b2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2Vi
UGFnZUlELCBuYXZpZ2F0aW9uLCBXVEZNb3ZlKHJlcXVlc3QpLCBuYXZpZ2F0aW9uLmxhc3ROYXZp
Z2F0aW9uQWN0aW9uKCkuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgdXNlckRhdGEsIFdl
YkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzLCBpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluLCBoYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluLCBXVEZNb3Zl
KHdlYnNpdGVQb2xpY2llcykpOworICAgIG1fcGFnZS5sb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9u
U2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9uLCBXVEZN
b3ZlKHJlcXVlc3QpLCBuYXZpZ2F0aW9uLmxhc3ROYXZpZ2F0aW9uQWN0aW9uKCkuc2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSwgdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250
aW51aW5nTG9hZDo6WWVzLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBXVEZNb3ZlKHdl
YnNpdGVQb2xpY2llcykpOwogfQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpnb1RvQmFj
a0ZvcndhcmRJdGVtKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgV2ViQmFja0ZvcndhcmRM
aXN0SXRlbSYgaXRlbSwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmIHdlYnNpdGVQb2xp
Y2llcykKQEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyhGcmFtZUlkZW50aWZpZXIgZgogICAgIGNv
bnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAg
IGlmICghaXNNYWluRnJhbWUgfHwgKG1fbWFpbkZyYW1lICYmIG1fbWFpbkZyYW1lLT5mcmFtZUlE
KCkgIT0gZnJhbWVJRCkgfHwgbmF2aWdhdGlvbklEICE9IG1fbmF2aWdhdGlvbklEKSB7Ci0gICAg
ICAgIHJlcGx5KFBvbGljeURlY2lzaW9uIHsgaWRlbnRpZmllciwgTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW46Ok5vLCBOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluOjpObywgV2ViQ29y
ZTo6UG9saWN5QWN0aW9uOjpJZ25vcmUsIG5hdmlnYXRpb25JRCwgRG93bmxvYWRJRCgpLCBXVEY6
Om51bGxvcHQgfSk7CisgICAgICAgIHJlcGx5KFBvbGljeURlY2lzaW9uIHsgaWRlbnRpZmllciwg
V1RGOjpudWxsb3B0LCBXZWJDb3JlOjpQb2xpY3lBY3Rpb246Oklnbm9yZSwgbmF2aWdhdGlvbklE
LCBEb3dubG9hZElEKCksIFdURjo6bnVsbG9wdCB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKaW5k
ZXggNDRiZmNiYmRjMmJhMzEwZDA0ZjU0ZWE0MGM2NDcyZDgzZWUwZDBjMi4uOWQ3MjEzMTM4Nzhh
MGI0NmQzZDA0NDk1ZDRiYTcxOGVlODU4MDNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCkBAIC05Miw4ICs5Miw4IEBAIHB1YmxpYzoKICAg
ICBMYXllckhvc3RpbmdDb250ZXh0SUQgY29udGV4dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0SURGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb247IH0K
ICNlbmRpZgogCi0gICAgdm9pZCBsb2FkRGF0YShBUEk6Ok5hdmlnYXRpb24mLCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVu
Y29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgT3B0
aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJv
dW5kRG9tYWluLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmID0gV1RGOjpudWxsb3B0
KTsKLSAgICB2b2lkIGxvYWRSZXF1ZXN0KEFQSTo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIE9wdGlvbmFsPE5hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluPiwgTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbiwgT3B0aW9u
YWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdURjo6bnVsbG9wdCk7CisgICAgdm9pZCBsb2Fk
RGF0YShBUEk6Ok5hdmlnYXRpb24mLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBT
dHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJh
c2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4+LCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmID0gV1RGOjpudWxsb3B0
KTsKKyAgICB2b2lkIGxvYWRSZXF1ZXN0KEFQSTo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIE9wdGlvbmFsPE5hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluPiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdURjo6
bnVsbG9wdCk7CiAgICAgdm9pZCBnb1RvQmFja0ZvcndhcmRJdGVtKEFQSTo6TmF2aWdhdGlvbiYs
IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYp
OwogICAgIHZvaWQgY2FuY2VsKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCmluZGV4IDQwOTQ4YzIxZTM5YzA4OTQ4ZjI4OWE1NDk2MmYxNTFlZTFiYTY5ZDEuLjk3
MGJmZWVhOGU5YjhhYWI0MzlkZDBkOWE0ZjUzNjY0NDFlZGY4ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTI4MCwxMSArMTI4MCwxMSBAQCBSZWZQdHI8
QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIFNobwogICAgIGlmIChzaG91bGRGb3JjZUZvcmVncm91bmRQcmlvcml0eUZv
ckNsaWVudE5hdmlnYXRpb24oKSkKICAgICAgICAgbmF2aWdhdGlvbi0+c2V0Q2xpZW50TmF2aWdh
dGlvbkFjdGl2aXR5KHByb2Nlc3MoKS50aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHkoIkNs
aWVudCBuYXZpZ2F0aW9uIl9zKSk7CiAKLSAgICBsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hh
cmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9uLmdldCgpLCBX
VEZNb3ZlKHJlcXVlc3QpLCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCB1c2VyRGF0YSwg
U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObywgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbigpLCBoYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluKCkpOworICAgIGxvYWRS
ZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdl
SUQsIG5hdmlnYXRpb24uZ2V0KCksIFdURk1vdmUocmVxdWVzdCksIHNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3ksIHVzZXJEYXRhLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBp
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCkpOwogICAgIHJldHVybiBuYXZpZ2F0aW9uOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdl
YlBhZ2VJRCwgQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3ksIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdM
b2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIE5hdmlnYXRlZEF3YXlG
cm9tQXBwQm91bmREb21haW4gaGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbiwgT3B0
aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMpCit2b2lkIFdlYlBh
Z2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmIHByb2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgQVBJOjpO
YXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIEFQSTo6
T2JqZWN0KiB1c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0
QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+
JiYgd2Vic2l0ZVBvbGljaWVzKQogewogICAgIEFTU0VSVCghbV9pc0Nsb3NlZCk7CiAKQEAgLTEz
MDcsNyArMTMwNyw2IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0
aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAgICAgbG9hZFBhcmFtZXRl
cnMubG9ja0JhY2tGb3J3YXJkTGlzdCA9IG5hdmlnYXRpb24ubG9ja0JhY2tGb3J3YXJkTGlzdCgp
OwogICAgIGxvYWRQYXJhbWV0ZXJzLmNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSA9IG5h
dmlnYXRpb24uY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KCk7CiAgICAgbG9hZFBhcmFt
ZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IGlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW47Ci0gICAgbG9hZFBhcmFtZXRlcnMuaGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3Vu
ZERvbWFpbiA9IGhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW47CiAgICAgbWF5YmVJ
bml0aWFsaXplU2FuZGJveEV4dGVuc2lvbkhhbmRsZShwcm9jZXNzLCB1cmwsIG1fcGFnZUxvYWRT
dGF0ZS5yZXNvdXJjZURpcmVjdG9yeVVSTCgpLCBsb2FkUGFyYW1ldGVycy5zYW5kYm94RXh0ZW5z
aW9uSGFuZGxlKTsKIAogICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRl
cnMpOwpAQCAtMTQwNCwxMSArMTQwMywxMSBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQ
YWdlUHJveHk6OmxvYWREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgYwogICAg
IGlmIChzaG91bGRGb3JjZUZvcmVncm91bmRQcmlvcml0eUZvckNsaWVudE5hdmlnYXRpb24oKSkK
ICAgICAgICAgbmF2aWdhdGlvbi0+c2V0Q2xpZW50TmF2aWdhdGlvbkFjdGl2aXR5KHByb2Nlc3Mo
KS50aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHkoIkNsaWVudCBuYXZpZ2F0aW9uIl9zKSk7
CiAKLSAgICBsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCks
IG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9uLCBkYXRhLCBNSU1FVHlwZSwgZW5jb2RpbmcsIGJhc2VV
UkwsIHVzZXJEYXRhLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBpc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluKCksIGhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4o
KSwgV1RGOjpudWxsb3B0LCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsKKyAgICBsb2Fk
RGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlE
LCBuYXZpZ2F0aW9uLCBkYXRhLCBNSU1FVHlwZSwgZW5jb2RpbmcsIGJhc2VVUkwsIHVzZXJEYXRh
LCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluKCksIFdURjo6bnVsbG9wdCwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CiAg
ICAgcmV0dXJuIG5hdmlnYXRpb247CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkRGF0YVdp
dGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24s
IGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwg
Y29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVj
dCogdXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29u
dGludWluZ0xvYWQsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluLCBOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluIGhh
c05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2ll
c0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpCit2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZERhdGFX
aXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9u
LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUs
IGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmpl
Y3QqIHVzZXJEYXRhLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0Nv
bnRpbnVpbmdMb2FkLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3
ZWJzaXRlUG9saWNpZXMsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSkKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uIik7CiAKQEAgLTE0MjksNyArMTQyOCw2IEBAIHZvaWQg
V2ViUGFnZVByb3h5Ojpsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNz
UHJveHk+JiYgcHJvY2VzcywKICAgICBsb2FkUGFyYW1ldGVycy53ZWJzaXRlUG9saWNpZXMgPSBX
VEZNb3ZlKHdlYnNpdGVQb2xpY2llcyk7CiAgICAgbG9hZFBhcmFtZXRlcnMuc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSA9IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k7CiAgICAgbG9h
ZFBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW47Ci0gICAgbG9hZFBhcmFtZXRlcnMuaGFzTmF2aWdhdGVkQXdheUZyb21B
cHBCb3VuZERvbWFpbiA9IGhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW47CiAgICAg
YWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1ldGVycyk7CiAKICAgICBwcm9jZXNz
LT5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKCp0aGlzLCBiYXNlVVJMKTsKQEAgLTMxMzAsOSAr
MzEyOCwxMCBAQCBib29sIFdlYlBhZ2VQcm94eTo6c2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbkFuZENoZWNrSWZQZXJtaXR0ZWQoYm9vbCBpc01haQogICAgICAgICAgICAgbV9jb25maWd1
cmF0aW9uLT5zZXRXZWJWaWV3Q2F0ZWdvcnkoV2ViVmlld0NhdGVnb3J5OjpBcHBCb3VuZERvbWFp
bik7CiAgICAgICAgICAgICBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbjo6WWVzOwogICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
aWYgKG1faGFzRXhlY3V0ZWRBcHBCb3VuZEJlaGF2aW9yQmVmb3JlTmF2aWdhdGlvbikKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBtX2NvbmZpZ3VyYXRpb24tPnNl
dFdlYlZpZXdDYXRlZ29yeShXZWJWaWV3Q2F0ZWdvcnk6OkluQXBwQnJvd3Nlcik7CiAgICAgICAg
ICAgICBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbjo6Tm87Ci0gICAgICAgICAgICBtX2hhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmRE
b21haW4gPSBOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluOjpZZXM7CiAgICAgICAgIH0K
ICAgICB9CiAjZWxzZQpAQCAtMzI3NCw3ICszMjczLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJl
Y2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24s
IEEKIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlv
biBhY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgUmVmUHRyPEFQSTo6V2Vic2l0
ZVBvbGljaWVzPiYmIHdlYnNpdGVQb2xpY2llcywgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYm
IHNlbmRlciwgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlLCBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzIHdpbGxDb250aW51ZUxvYWRJ
bk5ld1Byb2Nlc3MpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7Ci0gICAgICAg
IHNlbmRlci0+c2VuZChQb2xpY3lEZWNpc2lvbiB7IHNlbmRlci0+aWRlbnRpZmllcigpLCBpc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIGhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmRE
b21haW4oKSwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIERvd25sb2FkSUQoKSwgV1RGOjpudWxs
b3B0IH0pOworICAgICAgICBzZW5kZXItPnNlbmQoUG9saWN5RGVjaXNpb24geyBzZW5kZXItPmlk
ZW50aWZpZXIoKSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBQb2xpY3lBY3Rpb246
Oklnbm9yZSwgMCwgRG93bmxvYWRJRCgpLCBXVEY6Om51bGxvcHQgfSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTMzMDEsNyArMzMwMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNl
aXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIEFQSTo6TmF2aWdhdGlvbioK
ICAgICBpZiAod2Vic2l0ZVBvbGljaWVzKQogICAgICAgICB3ZWJzaXRlUG9saWNpZXNEYXRhID0g
d2Vic2l0ZVBvbGljaWVzLT5kYXRhKCk7CiAKLSAgICBzZW5kZXItPnNlbmQoUG9saWN5RGVjaXNp
b24geyBzZW5kZXItPmlkZW50aWZpZXIoKSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigp
LCBoYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluKCksIGFjdGlvbiwgbmF2aWdhdGlv
biA/IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpIDogMCwgZG93bmxvYWRJRCwgV1RGTW92ZSh3
ZWJzaXRlUG9saWNpZXNEYXRhKSwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSB9KTsK
KyAgICBzZW5kZXItPnNlbmQoUG9saWN5RGVjaXNpb24geyBzZW5kZXItPmlkZW50aWZpZXIoKSwg
aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBhY3Rpb24sIG5hdmlnYXRpb24gPyBuYXZp
Z2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSA6IDAsIGRvd25sb2FkSUQsIFdURk1vdmUod2Vic2l0ZVBv
bGljaWVzRGF0YSksIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkgfSk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNpb25hbFBhZ2UoRnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBm
cmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29u
c3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgdXNlZExl
Z2FjeVRMUywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpI
YXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRh
dGEmIHVzZXJEYXRhKQpAQCAtMzM4Miw5ICszMzgxLDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNv
bnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24s
IHMKICAgICAgICAgLy8gRklYTUU6IFdvcmsgb3V0IHRpbWluZyBvZiByZXNwb25kaW5nIHdpdGgg
dGhlIGxhc3QgcG9saWN5IGRlbGVnYXRlLCBldGMKICAgICAgICAgQVNTRVJUKCFuYXZpZ2F0aW9u
LT5jdXJyZW50UmVxdWVzdCgpLmlzRW1wdHkoKSk7CiAgICAgICAgIGlmIChhdXRvJiBzdWJzdGl0
dXRlRGF0YSA9IG5hdmlnYXRpb24tPnN1YnN0aXR1dGVEYXRhKCkpCi0gICAgICAgICAgICBtX3By
b3Zpc2lvbmFsUGFnZS0+bG9hZERhdGEobmF2aWdhdGlvbiwgeyBzdWJzdGl0dXRlRGF0YS0+Y29u
dGVudC5kYXRhKCksIHN1YnN0aXR1dGVEYXRhLT5jb250ZW50LnNpemUoKSB9LCBzdWJzdGl0dXRl
RGF0YS0+TUlNRVR5cGUsIHN1YnN0aXR1dGVEYXRhLT5lbmNvZGluZywgc3Vic3RpdHV0ZURhdGEt
PmJhc2VVUkwsIHN1YnN0aXR1dGVEYXRhLT51c2VyRGF0YS5nZXQoKSwgaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbigpLCBoYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluKCksIFdU
Rk1vdmUod2Vic2l0ZVBvbGljaWVzRGF0YSkpOworICAgICAgICAgICAgbV9wcm92aXNpb25hbFBh
Z2UtPmxvYWREYXRhKG5hdmlnYXRpb24sIHsgc3Vic3RpdHV0ZURhdGEtPmNvbnRlbnQuZGF0YSgp
LCBzdWJzdGl0dXRlRGF0YS0+Y29udGVudC5zaXplKCkgfSwgc3Vic3RpdHV0ZURhdGEtPk1JTUVU
eXBlLCBzdWJzdGl0dXRlRGF0YS0+ZW5jb2RpbmcsIHN1YnN0aXR1dGVEYXRhLT5iYXNlVVJMLCBz
dWJzdGl0dXRlRGF0YS0+dXNlckRhdGEuZ2V0KCksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4oKSwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXNEYXRhKSk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIG1fcHJvdmlzaW9uYWxQYWdlLT5sb2FkUmVxdWVzdChuYXZpZ2F0aW9uLCBSZXNvdXJj
ZVJlcXVlc3QgeyBuYXZpZ2F0aW9uLT5jdXJyZW50UmVxdWVzdCgpIH0sIG51bGxwdHIsIGlzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgaGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERv
bWFpbigpLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llc0RhdGEpKTsKKyAgICAgICAgICAgIG1fcHJv
dmlzaW9uYWxQYWdlLT5sb2FkUmVxdWVzdChuYXZpZ2F0aW9uLCBSZXNvdXJjZVJlcXVlc3QgeyBu
YXZpZ2F0aW9uLT5jdXJyZW50UmVxdWVzdCgpIH0sIG51bGxwdHIsIGlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4oKSwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXNEYXRhKSk7CiAgICAgfTsKICAg
ICBpZiAobV9pbnNwZWN0b3JDb250cm9sbGVyLT5zaG91bGRQYXVzZUxvYWRpbmcoKm1fcHJvdmlz
aW9uYWxQYWdlKSkKICAgICAgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5zZXRDb250aW51ZUxv
YWRpbmdDYWxsYmFjaygqbV9wcm92aXNpb25hbFBhZ2UsIFdURk1vdmUoY29udGludWF0aW9uKSk7
CkBAIC01MDk4LDcgKzUwOTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogCiAgICAgaWYg
KCFjaGVja1VSTFJlY2VpdmVkRnJvbUN1cnJlbnRPclByZXZpb3VzV2ViUHJvY2Vzcyhwcm9jZXNz
LCByZXF1ZXN0LnVybCgpKSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VE
KFByb2Nlc3MsICJJZ25vcmluZyByZXF1ZXN0IHRvIGxvYWQgdGhpcyBtYWluIHJlc291cmNlIGJl
Y2F1c2UgaXQgaXMgb3V0c2lkZSB0aGUgc2FuZGJveCIpOwotICAgICAgICBzZW5kZXItPnNlbmQo
UG9saWN5RGVjaXNpb24geyBzZW5kZXItPmlkZW50aWZpZXIoKSwgaXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbigpLCBoYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluKCksIFBvbGlj
eUFjdGlvbjo6SWdub3JlLCAwLCBEb3dubG9hZElEKCksIFdURjo6bnVsbG9wdCB9KTsKKyAgICAg
ICAgc2VuZGVyLT5zZW5kKFBvbGljeURlY2lzaW9uIHsgc2VuZGVyLT5pZGVudGlmaWVyKCksIGlz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIERv
d25sb2FkSUQoKSwgV1RGOjpudWxsb3B0IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC01MTcyLDkgKzUxNzEsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogICAgICAgICAKICAg
ICAgICAgaWYgKHBvbGljeUFjdGlvbiAhPSBQb2xpY3lBY3Rpb246Oklnbm9yZSkgewogICAgICAg
ICAgICAgaWYgKCFzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluQW5kQ2hlY2tJZlBlcm1p
dHRlZChmcmFtZS0+aXNNYWluRnJhbWUoKSwgbmF2aWdhdGlvbi0+Y3VycmVudFJlcXVlc3QoKS51
cmwoKSwgaXNBcHBCb3VuZERvbWFpbikpIHsKLSAgICAgICAgICAgICAgICBhdXRvIGVycm9yID0g
UmVzb3VyY2VFcnJvciB7IFN0cmluZyB7IH0sIDAsIG5hdmlnYXRpb24tPmN1cnJlbnRSZXF1ZXN0
KCkudXJsKCksICJBdHRlbXB0ZWQgbmF2aWdhdGlvbiBhd2F5IGZyb20gYXBwLWJvdW5kIGRvbWFp
biJfcyB9OworICAgICAgICAgICAgICAgIGF1dG8gZXJyb3IgPSBSZXNvdXJjZUVycm9yIHsgU3Ry
aW5nIHsgfSwgMCwgbmF2aWdhdGlvbi0+Y3VycmVudFJlcXVlc3QoKS51cmwoKSwgIkFwcC1ib3Vu
ZCBkb21haW4gZmFpbHVyZSJfcyB9OwogICAgICAgICAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVu
dC0+ZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbldpdGhFcnJvcigqdGhpcywgRnJhbWVJbmZv
RGF0YSB7IGZyYW1lSW5mbyB9LCBuYXZpZ2F0aW9uLmdldCgpLCBlcnJvciwgdXNlckRhdGFPYmpl
Y3QpOwotICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoTG9hZGlu
ZywgIklnbm9yaW5nIHJlcXVlc3QgdG8gbG9hZCB0aGlzIG1haW4gcmVzb3VyY2UgYmVjYXVzZSBp
dCBpcyBhdHRlbXB0aW5nIHRvIG5hdmlnYXRlIGF3YXkgZnJvbSBhbiBhcHAtYm91bmQgZG9tYWlu
Iik7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChMb2FkaW5n
LCAiSWdub3JpbmcgcmVxdWVzdCB0byBsb2FkIHRoaXMgbWFpbiByZXNvdXJjZSBiZWNhdXNlIGl0
IGlzIGF0dGVtcHRpbmcgdG8gbmF2aWdhdGUgYXdheSBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4g
b3IgbmF2aWdhdGUgYWZ0ZXIgdXNpbmcgcmVzdHJpY3RlZCBBUElzIik7CiAgICAgICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUpOwogICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTUzNDYsNyArNTM0NSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luY1NoYXJlZChSZWY8
V2ViUHJvY2Vzc1Byb3h5CiAgICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXVEZN
b3ZlKHByb2Nlc3MpLCAqZnJhbWUsIFdURk1vdmUoZnJhbWVJbmZvKSwgbmF2aWdhdGlvbklELCBX
VEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgV1RGTW92ZShvcmlnaW5hdGluZ0ZyYW1lSW5m
byksIG9yaWdpbmF0aW5nUGFnZUlELCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCks
IFdURk1vdmUocmVxdWVzdEJvZHkpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCB1c2VyRGF0
YSwgc2VuZGVyLmNvcHlSZWYoKSk7CiAKICAgICAvLyBJZiB0aGUgY2xpZW50IGRpZCBub3QgcmVz
cG9uZCBzeW5jaHJvbm91c2x5LCBwcm9jZWVkIHdpdGggdGhlIGxvYWQuCi0gICAgc2VuZGVyLT5z
ZW5kKFBvbGljeURlY2lzaW9uIHsgc2VuZGVyLT5pZGVudGlmaWVyKCksIGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4oKSwgaGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbigpLCBQ
b2xpY3lBY3Rpb246OlVzZSwgbmF2aWdhdGlvbklELCBEb3dubG9hZElEKCksIFdURjo6bnVsbG9w
dCB9KTsKKyAgICBzZW5kZXItPnNlbmQoUG9saWN5RGVjaXNpb24geyBzZW5kZXItPmlkZW50aWZp
ZXIoKSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBQb2xpY3lBY3Rpb246OlVzZSwg
bmF2aWdhdGlvbklELCBEb3dubG9hZElEKCksIFdURjo6bnVsbG9wdCB9KTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgUG9saWN5Q2hlY2tJZGVudGlm
aWVyIGlkZW50aWZpZXIsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRh
dGEsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCB1
aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDAxNzg3ODFlNzc2NmM4NGFjOGI1NjA3ZDZj
NDNlNGM3YTY1MjkwNmEuLjZhOTBkMzU5OTBiYzQzNjVlMDgyMmY4YTYzZjAwMGRmNTUxYWI0OTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xNjUwLDggKzE2NTAs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5
bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xp
Y3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlv
bkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvLCBPcHRpb25hbDxX
ZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIHVpbnQ2NF90
IGxpc3RlbmVySUQpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVm
PFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50
aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVU
eXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCB1aW50NjRfdCBsaXN0ZW5lcklE
LCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgc3RhcnRVUkxTY2hlbWVUYXNrU2hhcmVkKFJl
ZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBVUkxTY2hlbWVU
YXNrUGFyYW1ldGVycyYmKTsKLSAgICB2b2lkIGxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQo
UmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEFQSTo6TmF2
aWdhdGlvbiYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgTUlNRVR5
cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpP
YmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9w
dGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgTmF2aWdhdGVkQXdheUZyb21BcHBC
b3VuZERvbWFpbiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdURjo6bnVsbG9w
dCwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IFdlYkNvcmU6OlNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsKLSAgICB2b2lkIGxvYWRS
ZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVj
dCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9u
YWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5k
RG9tYWluLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmID0gV1RGOjpudWxsb3B0KTsK
KyAgICB2b2lkIGxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94
eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYg
ZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBX
ZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPE5hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluPiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdURjo6
bnVsbG9wdCwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IFdlYkNvcmU6
OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsKKyAgICB2b2lk
IGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6
Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwg
T3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBPcHRpb25hbDxXZWJzaXRlUG9s
aWNpZXNEYXRhPiYmID0gV1RGOjpudWxsb3B0KTsKICAgICB2b2lkIGJhY2tGb3J3YXJkR29Ub0l0
ZW1TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgY29uc3QgV2ViQ29yZTo6QmFja0Zvcndh
cmRJdGVtSWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQmFja0Zv
cndhcmRMaXN0Q291bnRzJik+JiYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvblN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBib29sIGlzTWFpbkZyYW1lLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBv
bGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0
aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFtZUluZm8sIE9wdGlvbmFs
PFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNEZWxh
eWVkUmVwbHkmJik7CiAjaWYgVVNFKFFVSUNLX0xPT0spCkBAIC0xNzYzLDYgKzE3NjMsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZW1vdmVNZWRpYVVzYWdlTWFuYWdlclNlc3Npb24oV2ViQ29yZTo6
TWVkaWFTZXNzaW9uSWRlbnRpZmllcik7CiAjZW5kaWYKIAorICAgIHZvaWQgc2V0SGFzRXhlY3V0
ZWRBcHBCb3VuZEJlaGF2aW9yQmVmb3JlTmF2aWdhdGlvbigpIHsgbV9oYXNFeGVjdXRlZEFwcEJv
dW5kQmVoYXZpb3JCZWZvcmVOYXZpZ2F0aW9uID0gdHJ1ZTsgfQorICAgICAgICAKIHByaXZhdGU6
CiAgICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCBSZWY8QVBJ
OjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsK
QEAgLTIzMTcsNyArMjMxOSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBtYWtlU3RvcmFnZVNwYWNl
UmVxdWVzdChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxh
eU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudE9yaWdpblVzYWdl
LCB1aW50NjRfdCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOwogICAgICAgICAKICAgICBib29s
IHNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW5BbmRDaGVja0lmUGVybWl0dGVkKGJvb2wg
aXNNYWluRnJhbWUsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluPik7Ci0gICAgTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbiBoYXNOYXZpZ2F0ZWRB
d2F5RnJvbUFwcEJvdW5kRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9oYXNOYXZpZ2F0ZWRBd2F5
RnJvbUFwcEJvdW5kRG9tYWluOyB9CiAgICAgICAgIAogICAgIGNvbnN0IElkZW50aWZpZXIgbV9p
ZGVudGlmaWVyOwogICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fd2ViUGFnZUlEOwpAQCAt
MjgxMSwxMSArMjgxMiwxMSBAQCBwcml2YXRlOgogICAgIE1vbm90b25pY1RpbWUgbV9kaWRGaW5p
c2hEb2N1bWVudExvYWRGb3JNYWluRnJhbWVUaW1lc3RhbXA7CiAjZW5kaWYKICAgICAgICAgCi0g
ICAgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IG1faXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbiB7IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObyB9OwotICAgIE5h
dmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4gbV9oYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJv
dW5kRG9tYWluIHsgTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbjo6Tm8gfTsKKyAgICBP
cHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gbV9pc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluOwogICAgIGJvb2wgbV9pZ25vcmVzQXBwQm91bmREb21haW5zIHsgZmFsc2UgfTsK
ICAgICBib29sIG1fdXNlclNjcmlwdHNOb3RpZmllZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2xp
bWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMgeyBmYWxzZSB9OworICAgIGJvb2wgbV9o
YXNFeGVjdXRlZEFwcEJvdW5kQmVoYXZpb3JCZWZvcmVOYXZpZ2F0aW9uIHsgZmFsc2UgfTsKIAog
I2lmIEVOQUJMRShST1VUSU5HX0FSQklUUkFUSU9OKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRp
b1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRvclByb3h5PiBtX3JvdXRpbmdBcmJpdHJhdG9yOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4
IGQxMjAyMTE1MjFmMDYxMTkxOTVkOWRjNzhjOGY0N2VkZDY4ZGRjZGUuLjczZjkzMjE2YjRhNDFl
Y2ZiYWI3YmUyNTQxMjljODVjNzcyOGYxNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTU5OSw0ICs1OTksNSBAQCBtZXNzYWdl
cyAtPiBXZWJQYWdlUHJveHkgewogICAgIFJlbW92ZU1lZGlhVXNhZ2VNYW5hZ2VyU2Vzc2lvbihX
ZWJDb3JlOjpNZWRpYVNlc3Npb25JZGVudGlmaWVyIGlkZW50aWZpZXIpOwogI2VuZGlmCiAKKyAg
ICBTZXRIYXNFeGVjdXRlZEFwcEJvdW5kQmVoYXZpb3JCZWZvcmVOYXZpZ2F0aW9uKCkKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IGU0NmRhMGUwYTU4MDc5MTBmNGU0ZDJm
NmZjNGU5MzE4NTA1NjdhZmEuLjYyODU4ZTkwODNiNTUyZmQ1ZWY4NGE1YWFlZmYxMzE0NjI1MzBk
YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtODMwLDcgKzgzMCw3IEBA
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zCiAgICAgdWludDY0X3QgbGlzdGVuZXJJRCA9IG1fZnJh
bWUtPnNldFVwUG9saWN5TGlzdGVuZXIoaWRlbnRpZmllciwgV1RGTW92ZShmdW5jdGlvbiksIFdl
YkZyYW1lOjpGb3JOYXZpZ2F0aW9uQWN0aW9uOjpObyk7CiAgICAgaWYgKCF3ZWJQYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvclJlc3BvbnNlKG1fZnJhbWUt
PmZyYW1lSUQoKSwgbV9mcmFtZS0+aW5mbygpLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIHJl
c3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93UmVzcG9uc2UsIGRvd25sb2FkQXR0cmlidXRlLCBsaXN0
ZW5lcklELCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3Rz
VG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKSkgewogICAgICAgICBXRUJGUkFNRUxP
QURFUkNMSUVOVF9SRUxFQVNFX0xPRyhOZXR3b3JrLCAiZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JS
ZXNwb25zZTogaWdub3JpbmcgYmVjYXVzZSBXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvclJl
c3BvbnNlIGZhaWxlZCIpOwotICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNp
b24obGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24geyBpZGVudGlmaWVyLCBOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbjo6Tm8sIE5hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW46Ok5vLCBQ
b2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgeyB9LCB7IH0gfSk7CisgICAgICAgIG1fZnJhbWUtPmRp
ZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBQb2xpY3lEZWNpc2lvbiB7IGlkZW50
aWZpZXIsIFdURjo6bnVsbG9wdCwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSwgeyB9IH0p
OwogICAgIH0KIH0KIApAQCAtOTkyLDE3ICs5OTIsMTcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmln
YXQKICAgICAgICAgUG9saWN5RGVjaXNpb24gcG9saWN5RGVjaXNpb247CiAKICAgICAgICAgaWYg
KCF3ZWJQYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uU3luYyhtX2ZyYW1lLT5mcmFtZUlEKCksIG1fZnJhbWUtPmlzTWFp
bkZyYW1lKCksIG1fZnJhbWUtPmluZm8oKSwgcmVxdWVzdElkZW50aWZpZXIsIGRvY3VtZW50TG9h
ZGVyLT5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIG9yaWdpbmF0aW5nRnJh
bWVJbmZvRGF0YSwgb3JpZ2luYXRpbmdQYWdlSUQsIG5hdmlnYXRpb25BY3Rpb24ucmVzb3VyY2VS
ZXF1ZXN0KCksIHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgeyByZXF1ZXN0Lmh0dHBC
b2R5KCkgfSwgcmVkaXJlY3RSZXNwb25zZSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSwgTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6
OlJlcGx5KHBvbGljeURlY2lzaW9uKSkpIHsKLSAgICAgICAgICAgIG1fZnJhbWUtPmRpZFJlY2Vp
dmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBQb2xpY3lEZWNpc2lvbiB7IHJlcXVlc3RJZGVu
dGlmaWVyLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm8sIE5hdmlnYXRlZEF3YXlGcm9t
QXBwQm91bmREb21haW46Ok5vLCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgeyB9LCB7IH0gfSk7
CisgICAgICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJ
RCwgUG9saWN5RGVjaXNpb24geyByZXF1ZXN0SWRlbnRpZmllciwgV1RGOjpudWxsb3B0LCBQb2xp
Y3lBY3Rpb246Oklnbm9yZSwgMCwgeyB9LCB7IH0gfSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAotICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlz
dGVuZXJJRCwgUG9saWN5RGVjaXNpb24geyBwb2xpY3lEZWNpc2lvbi5pZGVudGlmaWVyLCBwb2xp
Y3lEZWNpc2lvbi5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBwb2xpY3lEZWNpc2lvbi5o
YXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluLCBwb2xpY3lEZWNpc2lvbi5wb2xpY3lB
Y3Rpb24sIDAsIHBvbGljeURlY2lzaW9uLmRvd25sb2FkSUQsIHsgfX0pOworICAgICAgICBtX2Zy
YW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24g
eyBwb2xpY3lEZWNpc2lvbi5pZGVudGlmaWVyLCBwb2xpY3lEZWNpc2lvbi5pc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluLCBwb2xpY3lEZWNpc2lvbi5wb2xpY3lBY3Rpb24sIDAsIHBvbGljeURl
Y2lzaW9uLmRvd25sb2FkSUQsIHsgfX0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAg
QVNTRVJUKHBvbGljeURlY2lzaW9uTW9kZSA9PSBQb2xpY3lEZWNpc2lvbk1vZGU6OkFzeW5jaHJv
bm91cyk7CiAgICAgaWYgKCF3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyhtX2ZyYW1lLT5mcmFtZUlEKCksIG1f
ZnJhbWUtPmluZm8oKSwgcmVxdWVzdElkZW50aWZpZXIsIGRvY3VtZW50TG9hZGVyLT5uYXZpZ2F0
aW9uSUQoKSwgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwg
b3JpZ2luYXRpbmdQYWdlSUQsIG5hdmlnYXRpb25BY3Rpb24ucmVzb3VyY2VSZXF1ZXN0KCksIHJl
cXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgeyByZXF1ZXN0Lmh0dHBCb2R5KCkgfSwgcmVk
aXJlY3RSZXNwb25zZSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3Jt
T2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpLCBsaXN0ZW5lcklEKSkpCi0g
ICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBQb2xp
Y3lEZWNpc2lvbiB7IHJlcXVlc3RJZGVudGlmaWVyLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bjo6Tm8sIE5hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW46Ok5vLCBQb2xpY3lBY3Rpb246
Oklnbm9yZSwgMCwgeyB9LCB7IH0gfSk7CisgICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xp
Y3lEZWNpc2lvbihsaXN0ZW5lcklELCBQb2xpY3lEZWNpc2lvbiB7IHJlcXVlc3RJZGVudGlmaWVy
LCBXVEY6Om51bGxvcHQsIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCB7IH0sIHsgfSB9KTsKIH0K
IAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2FuY2VsUG9saWN5Q2hlY2soKQpAQCAtMTky
MSw3ICsxOTIxLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5n
QXBwbGljYXRpb25NYW5pZmVzdCh1aW50NjRfdCBjYWxsYmFja0kKIH0KICNlbmRpZiAvLyBFTkFC
TEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCiAKLWJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6Omhh
c05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4oKQorYm9vbCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6c2hvdWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkgY29uc3QK
IHsKICAgICBpZiAoIW1fZnJhbWUtPmlzTWFpbkZyYW1lKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTE5MjksMTkgKzE5MjksMjEgQEAgYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6aGFz
TmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbigpCiAgICAgYXV0byogd2ViUGFnZSA9IG1f
ZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAKLSAgICByZXR1cm4gd2ViUGFnZS0+aGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERv
bWFpbigpID09IE5hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW46OlllczsKKworICAgIHJl
dHVybiB3ZWJQYWdlLT5zaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMo
KTsKIH0KIAotYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6bmVlZHNJbkFwcEJyb3dzZXJQcml2
YWN5UXVpcmtzKCkgY29uc3QKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6Om5vdGlmeVBhZ2VP
ZkFwcEJvdW5kQmVoYXZpb3IoKQogeworICAgIGlmICghbV9mcmFtZS0+aXNNYWluRnJhbWUoKSkK
KyAgICAgICAgcmV0dXJuOworCiAgICAgYXV0byogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsK
ICAgICBpZiAoIXdlYlBhZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICByZXR1
cm4gd2ViUGFnZS0+bmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzKCk7Ci19CisgICAgICAg
IHJldHVybjsKIAorICAgIHdlYlBhZ2UtPm5vdGlmeVBhZ2VPZkFwcEJvdW5kQmVoYXZpb3IoKTsK
K30KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgK
aW5kZXggMGY4ZWIwOTNmZjc2ZTU3NzM0MDU2ZTYzY2UzNzY3YjJlZjY3MDllMC4uYTBmZGE3Y2Jk
ZTYyMTg4MDk4MjgyZGVhOWY2NzQ3ZDMyYTNkNmE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgKQEAgLTI4OCw4ICsyODgsOCBAQCBwcml2YXRlOgogICAgIE9wdGlvbmFsPEZyYW1lU3Bl
Y2lmaWNTdG9yYWdlQWNjZXNzSWRlbnRpZmllcj4gbV9mcmFtZVNwZWNpZmljU3RvcmFnZUFjY2Vz
c0lkZW50aWZpZXI7CiAjZW5kaWYKIAotICAgIGJvb2wgaGFzTmF2aWdhdGVkQXdheUZyb21BcHBC
b3VuZERvbWFpbigpIGZpbmFsOwotICAgIGJvb2wgbmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVp
cmtzKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBzaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2
YWN5UHJvdGVjdGlvbnMoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIG5vdGlmeVBhZ2VPZkFwcEJv
dW5kQmVoYXZpb3IoKSBmaW5hbDsKIH07CiAKIC8vIEFzIGxvbmcgYXMgRW1wdHlGcmFtZUxvYWRl
ckNsaWVudCBleGlzdHMgaW4gV2ViQ29yZSwgdGhpcyBjYW4gcmV0dXJuIDAuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDE3ZWFjNDE3ZTJjY2Nm
NTUxNmVmNTE1YzRjMjkxODFiYjI5YTgxMzkuLmY4OWJmNjI3YTg4M2Q2YTUwOTE0N2E0M2YzYTBj
OWMzYmIwMmY5MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCkBAIC00NzUsNyArNDc1LDcgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogI2VuZGlm
CiAgICAgLCBtX292ZXJyaWRkZW5NZWRpYVR5cGUocGFyYW1ldGVycy5vdmVycmlkZGVuTWVkaWFU
eXBlKQogICAgICwgbV9wcm9jZXNzRGlzcGxheU5hbWUocGFyYW1ldGVycy5wcm9jZXNzRGlzcGxh
eU5hbWUpCi0gICAgLCBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4ocGFyYW1ldGVycy5s
aW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zID8gTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW46OlllcyA6IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObykKKyAgICAsIG1fbGlt
aXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyhwYXJhbWV0ZXJzLmxpbWl0c05hdmlnYXRp
b25zVG9BcHBCb3VuZERvbWFpbnMpCiB7CiAgICAgQVNTRVJUKG1faWRlbnRpZmllcik7CiAKQEAg
LTE1MjcsNyArMTUyNyw2IEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1EaWRSZWNlaXZlTG9hZFBh
cmFtZXRlcnMoY29uc3QgTG9hZFBhcmFtZXRlcnMmIGxvYWRQYXJhbWV0CiB2b2lkIFdlYlBhZ2U6
OmxvYWRSZXF1ZXN0KExvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMpCiB7CiAgICAgc2V0
SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihsb2FkUGFyYW1ldGVycy5pc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluKTsKLSAgICBzZXRIYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9t
YWluKGxvYWRQYXJhbWV0ZXJzLmhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4pOwog
CiAgICAgU2VuZFN0b3BSZXNwb25zaXZlbmVzc1RpbWVyIHN0b3BwZXI7CiAKQEAgLTE1NjMsMTAg
KzE1NjIsOSBAQCBOT19SRVRVUk4gdm9pZCBXZWJQYWdlOjpsb2FkUmVxdWVzdFdhaXRpbmdGb3JQ
cm9jZXNzTGF1bmNoKExvYWRQYXJhbWV0ZXJzJiYsIFVSTAogICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6bG9hZERhdGFJbXBsKHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgYm9vbCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdl
YnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IHNoYXJlZEJ1ZmZlciwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNv
ZGluZ05hbWUsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwg
Y29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgTmF2aWdhdGVkQXdheUZyb21BcHBC
b3VuZERvbWFpbiBoYXNOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluLCBTaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpCit2b2lkIFdl
YlBhZ2U6OmxvYWREYXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgc2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNp
dGVQb2xpY2llcywgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmlu
ZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIGJhc2VV
UkwsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwg
T3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4sIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSkKIHsKICAgICBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKGlzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4pOwotICAgIHNldEhhc05hdmlnYXRlZEF3YXlGcm9tQXBw
Qm91bmREb21haW4oaGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbik7CiAKICAgICBT
ZW5kU3RvcFJlc3BvbnNpdmVuZXNzVGltZXIgc3RvcHBlcjsKIApAQCAtMTU5NSw3ICsxNTkzLDcg
QEAgdm9pZCBXZWJQYWdlOjpsb2FkRGF0YShMb2FkUGFyYW1ldGVycyYmIGxvYWRQYXJhbWV0ZXJz
KQogCiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihsb2FkUGFyYW1ldGVycy5kYXRhLmRhdGEoKSksIGxvYWRQ
YXJhbWV0ZXJzLmRhdGEuc2l6ZSgpKTsKICAgICBVUkwgYmFzZVVSTCA9IGxvYWRQYXJhbWV0ZXJz
LmJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gYWJvdXRCbGFua1VSTCgpIDogVVJMKFVSTCgpLCBs
b2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nKTsKLSAgICBsb2FkRGF0YUltcGwobG9hZFBhcmFt
ZXRlcnMubmF2aWdhdGlvbklELCBsb2FkUGFyYW1ldGVycy5zaG91bGRUcmVhdEFzQ29udGludWlu
Z0xvYWQsIFdURk1vdmUobG9hZFBhcmFtZXRlcnMud2Vic2l0ZVBvbGljaWVzKSwgV1RGTW92ZShz
aGFyZWRCdWZmZXIpLCBsb2FkUGFyYW1ldGVycy5NSU1FVHlwZSwgbG9hZFBhcmFtZXRlcnMuZW5j
b2RpbmdOYW1lLCBiYXNlVVJMLCBVUkwoKSwgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEsIGxvYWRQ
YXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIGxvYWRQYXJhbWV0ZXJzLmhh
c05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4sIGxvYWRQYXJhbWV0ZXJzLnNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3kpOworICAgIGxvYWREYXRhSW1wbChsb2FkUGFyYW1ldGVycy5u
YXZpZ2F0aW9uSUQsIGxvYWRQYXJhbWV0ZXJzLnNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwg
V1RGTW92ZShsb2FkUGFyYW1ldGVycy53ZWJzaXRlUG9saWNpZXMpLCBXVEZNb3ZlKHNoYXJlZEJ1
ZmZlciksIGxvYWRQYXJhbWV0ZXJzLk1JTUVUeXBlLCBsb2FkUGFyYW1ldGVycy5lbmNvZGluZ05h
bWUsIGJhc2VVUkwsIFVSTCgpLCBsb2FkUGFyYW1ldGVycy51c2VyRGF0YSwgbG9hZFBhcmFtZXRl
cnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgbG9hZFBhcmFtZXRlcnMuc2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6bG9hZEFsdGVybmF0ZUhU
TUwoTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKQEAgLTE2MDcsNyArMTYwNSw3IEBA
IHZvaWQgV2ViUGFnZTo6bG9hZEFsdGVybmF0ZUhUTUwoTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFy
YW1ldGVycykKICAgICBVUkwgcHJvdmlzaW9uYWxMb2FkRXJyb3JVUkwgPSBsb2FkUGFyYW1ldGVy
cy5wcm92aXNpb25hbExvYWRFcnJvclVSTFN0cmluZy5pc0VtcHR5KCkgPyBVUkwoKSA6IFVSTChV
UkwoKSwgbG9hZFBhcmFtZXRlcnMucHJvdmlzaW9uYWxMb2FkRXJyb3JVUkxTdHJpbmcpOwogICAg
IGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4obG9hZFBhcmFtZXRlcnMuZGF0YS5kYXRhKCkpLCBsb2FkUGFyYW1ldGVy
cy5kYXRhLnNpemUoKSk7CiAgICAgbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5z
ZXRQcm92aXNpb25hbExvYWRFcnJvckJlaW5nSGFuZGxlZFVSTChwcm92aXNpb25hbExvYWRFcnJv
clVSTCk7ICAgIAotICAgIGxvYWREYXRhSW1wbChsb2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQs
IGxvYWRQYXJhbWV0ZXJzLnNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgV1RGTW92ZShsb2Fk
UGFyYW1ldGVycy53ZWJzaXRlUG9saWNpZXMpLCBXVEZNb3ZlKHNoYXJlZEJ1ZmZlciksIGxvYWRQ
YXJhbWV0ZXJzLk1JTUVUeXBlLCBsb2FkUGFyYW1ldGVycy5lbmNvZGluZ05hbWUsIGJhc2VVUkws
IHVucmVhY2hhYmxlVVJMLCBsb2FkUGFyYW1ldGVycy51c2VyRGF0YSwgbG9hZFBhcmFtZXRlcnMu
aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgbG9hZFBhcmFtZXRlcnMuaGFzTmF2aWdhdGVk
QXdheUZyb21BcHBCb3VuZERvbWFpbik7CisgICAgbG9hZERhdGFJbXBsKGxvYWRQYXJhbWV0ZXJz
Lm5hdmlnYXRpb25JRCwgbG9hZFBhcmFtZXRlcnMuc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2Fk
LCBXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzLndlYnNpdGVQb2xpY2llcyksIFdURk1vdmUoc2hhcmVk
QnVmZmVyKSwgbG9hZFBhcmFtZXRlcnMuTUlNRVR5cGUsIGxvYWRQYXJhbWV0ZXJzLmVuY29kaW5n
TmFtZSwgYmFzZVVSTCwgdW5yZWFjaGFibGVVUkwsIGxvYWRQYXJhbWV0ZXJzLnVzZXJEYXRhLCBs
b2FkUGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKICAgICBtX21haW5G
cmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLnNldFByb3Zpc2lvbmFsTG9hZEVycm9yQmVpbmdI
YW5kbGVkVVJMKHsgfSk7CiB9CiAKQEAgLTMyNTMsNyArMzI1MSw2IEBAIHZvaWQgV2ViUGFnZTo6
c2V0TGF5ZXJIb3N0aW5nTW9kZShMYXllckhvc3RpbmdNb2RlIGxheWVySG9zdGluZ01vZGUpCiB2
b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24mJiBwb2xpY3lEZWNpc2lv
bikKIHsKICAgICBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKHBvbGljeURlY2lzaW9u
LmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOwotICAgIHNldEhhc05hdmlnYXRlZEF3YXlG
cm9tQXBwQm91bmREb21haW4ocG9saWN5RGVjaXNpb24uaGFzTmF2aWdhdGVkQXdheUZyb21BcHBC
b3VuZERvbWFpbik7CiAKICAgICBXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBpZiAoIWZyYW1lKQpAQCAtMzQyNiw4ICszNDIz
LDcgQEAgdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiBmcmFtZSwgUnVuSmF2
YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXIKIAogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soZGF0YVJlZmVyZW5jZSwgZGV0YWlscywg
Y2FsbGJhY2tJRCkpOwogICAgIH07Ci0gICAgCi0gICAgaWYgKGhhc05hdmlnYXRlZEF3YXlGcm9t
QXBwQm91bmREb21haW4oKSA9PSBOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluOjpZZXMg
JiYgIW1fbmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzKSB7CisgICAgaWYgKHNob3VsZEVu
YWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7CiAgICAgICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVDYWxsYmFjayh7IH0sIEV4Y2VwdGlvbkRl
dGFpbHMgeyAiVW5hYmxlIHRvIGV4ZWN1dGUgSmF2YVNjcmlwdCJfcyB9LCBjYWxsYmFja0lEKSk7
CiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1l
bnQoKSkKICAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291
cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3Jp
cHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iKTsKQEAgLTM2ODMsOCArMzY3
OSw4IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5j
ZXNTdG9yZSYgc3RvcmUpCiAgICAgICAgIGRpc2FibGVTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQo
KTsKIAogICAgIGlmIChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6
OnNlcnZpY2VXb3JrZXJzRW5hYmxlZEtleSgpKSkgewotICAgICAgICBBU1NFUlQocGFyZW50UHJv
Y2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpIHx8IG1faXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbik7Ci0gICAgICAgIGlmICghcGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJF
bnRpdGxlbWVudCgpICYmICFtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCisgICAgICAg
IEFTU0VSVChwYXJlbnRQcm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkgfHwgbV9s
aW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKTsKKyAgICAgICAgaWYgKCFwYXJlbnRQ
cm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCkgJiYgIW1fbGltaXRzTmF2aWdhdGlv
bnNUb0FwcEJvdW5kRG9tYWlucykKICAgICAgICAgICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNoYXJlZEZlYXR1cmVzKCkuc2V0U2VydmljZVdvcmtlckVuYWJsZWQoZmFsc2UpOwogICAgIH0K
ICNlbmRpZgpAQCAtNzEwMiw2ICs3MDk4LDI3IEBAIHZvaWQgV2ViUGFnZTo6YW5pbWF0aW9uRGlk
RmluaXNoRm9yRWxlbWVudChjb25zdCBXZWJDb3JlOjpFbGVtZW50JikKIAogI2VuZGlmCiAKK3Zv
aWQgV2ViUGFnZTo6c2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihPcHRpb25hbDxOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKK3sK
KyAgICBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBpc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluOworICAgIAorICAgIG1fbmF2aWdhdGlvbkhhc09jY3VyZWQgPSB0cnVlOworfQor
Cit2b2lkIFdlYlBhZ2U6Om5vdGlmeVBhZ2VPZkFwcEJvdW5kQmVoYXZpb3IoKQoreworICAgIGlm
ICghbV9uYXZpZ2F0aW9uSGFzT2NjdXJlZCAmJiAhbV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91
bmREb21haW5zKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldEhhc0V4
ZWN1dGVkQXBwQm91bmRCZWhhdmlvckJlZm9yZU5hdmlnYXRpb24oKSk7Cit9CisKK2Jvb2wgV2Vi
UGFnZTo6c2hvdWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkKK3sKKyAg
ICBpZiAobV9uZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3MpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHJldHVybiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCkgJiYgaXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpID09IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
OjpObzsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBSRUxFQVNFX0xPR19J
Rl9BTExPV0VECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5k
ZXggM2RkYWI5YTYyYmRlZjY2MTFmNjI0NWQ5OGM5ZmExZTc0MDRiOTcxZC4uMTVmMjhjZjI2NzM1
YjkwMjZmODZkYzE1NTI1MzgyYjE4ZWEwYTU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTMxNSwxMSArMTMxNSwxMCBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGdldEFsbEZyYW1lcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEZyYW1lVHJlZU5vZGVE
YXRhJiYpPiYmKTsKIAotICAgIHZvaWQgc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihP
cHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbikgeyBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBpc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluOyB9CisgICAgdm9pZCBub3RpZnlQYWdlT2ZBcHBCb3VuZEJlaGF2aW9y
KCk7CisgICAgYm9vbCBzaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMo
KTsKKyAgICB2b2lkIHNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oT3B0aW9uYWw8TmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4+KTsKICAgICBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpIGNvbnN0IHsgcmV0dXJu
IG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsgfQotICAgIE5hdmlnYXRlZEF3YXlGcm9t
QXBwQm91bmREb21haW4gaGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbigpIGNvbnN0
IHsgcmV0dXJuIG1faGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbjsgfQotICAgIHZv
aWQgc2V0SGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbihOYXZpZ2F0ZWRBd2F5RnJv
bUFwcEJvdW5kRG9tYWluIG5hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4pIHsgbV9oYXNO
YXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluID0gbmF2aWdhdGVkQXdheUZyb21BcHBCb3Vu
ZERvbWFpbjsgfQotICAgIGJvb2wgbmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzKCkgY29u
c3QgeyByZXR1cm4gbV9uZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3M7IH0KICAgICAKICAg
ICBib29sIHNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcihXZWJDb3JlOjpSZW5kZXJpbmdQdXJw
b3NlKTsKIApAQCAtMTQxOSw3ICsxNDE4LDcgQEAgcHJpdmF0ZToKIAogICAgIFN0cmluZyBzb3Vy
Y2VGb3JGcmFtZShXZWJGcmFtZSopOwogCi0gICAgdm9pZCBsb2FkRGF0YUltcGwodWludDY0X3Qg
bmF2aWdhdGlvbklELCBib29sIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8
V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgY29u
c3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVS
TCYgYmFzZVVSTCwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBVc2VyRGF0YSYsIE9wdGlv
bmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgTmF2aWdhdGVkQXdheUZyb21BcHBCb3Vu
ZERvbWFpbiwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IFdlYkNvcmU6
OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsKKyAgICB2b2lk
IGxvYWREYXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgc2hvdWxkVHJlYXRBc0Nv
bnRpbnVpbmdMb2FkLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmLCBSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcm
IGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBVUkwmIGZhaWxpbmdVUkws
IGNvbnN0IFVzZXJEYXRhJiwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBX
ZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gV2ViQ29yZTo6U2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cpOwogCiAgICAgLy8gQWN0aW9ucwog
ICAgIHZvaWQgdHJ5Q2xvc2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CkBAIC0y
MTA0LDggKzIxMDMsOSBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX3RoZW1lTmFtZTsKICNlbmRp
ZgogICAgIAotICAgIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBtX2lzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4geyBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm8g
fTsKLSAgICBOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluIG1faGFzTmF2aWdhdGVkQXdh
eUZyb21BcHBCb3VuZERvbWFpbiB7IE5hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW46Ok5v
IH07CisgICAgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IG1faXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbjsKKyAgICBib29sIG1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJv
dW5kRG9tYWlucyB7IGZhbHNlIH07CisgICAgYm9vbCBtX25hdmlnYXRpb25IYXNPY2N1cmVkIHsg
ZmFsc2UgfTsKIH07CiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmNGM5ZTI5YzUxYzZjNThkOTg3
ODZlNmRjNDg2OTUwZGE0MTkxZDcwLi5hM2RhOWVjM2Q0M2FkODYzOTA1YmU4ZmFiMTBjMGQ1ODQ3
MzNlZDQyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjkgQEAKKzIwMjAtMDUtMTEgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2No
ZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgRmFpbCBuYXZpZ2F0aW9ucyB0byBub24gYXBwLWJv
dW5kIGRvbWFpbnMgYWZ0ZXIgdXNlIG9mIGFwcC1ib3VuZCBBUElzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTE2NDcKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzYyOTc4MTU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0uCisK
KyAgICAgICAgQWRkZWQgYSBuZXcgdGVzdCB0byBjb25maXJtIGEgbm9uLWFwcCBib3VuZCBuYXZp
Z2F0aW9uIGZhaWxzIGFmdGVyCisgICAgICAgIHVzaW5nIHNjcmlwdCBpbmplY3Rpb24uCisKKyAg
ICAgICAgVGhpcyBmaXggYWxzbyByZXF1aXJlZCBjaGFuZ2luZyBhbnkgdGVzdCB3aGljaCB1c2Vz
IGEgcmVzdHJpY3RlZCBBUEkKKyAgICAgICAgdG8gY29uZmlybSBiZWhhdmlvciBvZiBhbm90aGVy
IHJlc3RyaWN0ZWQgQVBJLiBUZXN0cyBjYW4gc2V0CisgICAgICAgIF9zZXROZWVkc0luQXBwQnJv
d3NlclByaXZhY3lRdWlya3MgaW4gdGhlIGNvbmZpZ3VyYXRpb24gdG8gaW5kaWNhdGUKKyAgICAg
ICAgQVBJcyBzaG91bGQgbm90IGJlIGJsb2NrZWQsIHRoZW4gdG9nZ2xlIGl0IHRvIHRlc3QgYWN0
dWFsIGJlaGF2aW9yLgorCisgICAgICAgIEFsc28sIHdlIGNhbiByZW1vdmUgYW55IGNhbGxzIHRv
IF9zZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZAorICAgICAgICBub3cgdGhhdCB0aGlzIGlz
IGp1c3QgYW4gaW50ZXJuYWwgdGVzdCBmbGFnLiAKKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbToKKyAgICAgICAgKC1bQXBw
Qm91bmREb21haW5EZWxlZ2F0ZSB3ZWJWaWV3OmRpZEZpbmlzaE5hdmlnYXRpb246XSk6CisgICAg
ICAgICgtW0FwcEJvdW5kRG9tYWluRGVsZWdhdGUgd2ViVmlldzpkaWRGYWlsUHJvdmlzaW9uYWxO
YXZpZ2F0aW9uOndpdGhFcnJvcjpdKToKKyAgICAgICAgKC1bQXBwQm91bmREb21haW5EZWxlZ2F0
ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl0pOgorICAgICAgICAoLVtBcHBCb3VuZERvbWFp
bkRlbGVnYXRlIHdhaXRGb3JEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uRXJyb3JdKToKKyAg
ICAgICAgKFRFU1QpOgorCiAyMDIwLTA1LTExICBBbmRyZXMgR29uemFsZXogIDxhbmRyZXNnXzIy
QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgbWVjaGFuaXNtIHRvIHR1cm4gb24gYWNjZXNzaWJp
bGl0eSBpc29sYXRlZCB0cmVlIG1vZGUgZnJvbSBXZWJLaXRUZXN0UnVubmVyLgpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2
YWN5Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dz
ZXJQcml2YWN5Lm1tCmluZGV4IDFmNGI2MDc0ZDFiZjA1MWZmNWNkNDBjOTZjYjQ5MTMxZTFmNzBi
ODQuLjNkZDUwMzBkNGEzZDJkOGNmN2FmZTk0NmNmMDk1ZDg3OTE1MDcxYmMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFj
eS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJv
d3NlclByaXZhY3kubW0KQEAgLTQ4LDYgKzQ4LDQwIEBACiAKIHN0YXRpYyBib29sIGlzRG9uZTsK
IAorQGludGVyZmFjZSBBcHBCb3VuZERvbWFpbkRlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdh
dGlvbkRlbGVnYXRlPgorLSAodm9pZCl3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbjsKKy0gKE5T
RXJyb3IgKil3YWl0Rm9yRGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbkVycm9yOworQGVuZAor
CitAaW1wbGVtZW50YXRpb24gQXBwQm91bmREb21haW5EZWxlZ2F0ZSB7CisgICAgYm9vbCBfbmF2
aWdhdGlvbkZpbmlzaGVkOworICAgIFJldGFpblB0cjxOU0Vycm9yPiBfcHJvdmlzaW9uYWxOYXZp
Z2F0aW9uRmFpbGVkRXJyb3I7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9uCit7Cisg
ICAgX25hdmlnYXRpb25GaW5pc2hlZCA9IHRydWU7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uOihudWxsX3Vuc3Bl
Y2lmaWVkIFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24gd2l0aEVycm9yOihOU0Vycm9yICopZXJy
b3IKK3sKKyAgICBfcHJvdmlzaW9uYWxOYXZpZ2F0aW9uRmFpbGVkRXJyb3IgPSBlcnJvcjsKK30K
KworLSAodm9pZCl3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbgoreworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmX25hdmlnYXRpb25GaW5pc2hlZCk7Cit9CisKKy0gKE5TRXJyb3IgKil3
YWl0Rm9yRGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbkVycm9yCit7CisgICAgd2hpbGUgKCFf
cHJvdmlzaW9uYWxOYXZpZ2F0aW9uRmFpbGVkRXJyb3IpCisgICAgICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnNwaW5SdW5Mb29wKCk7CisgICAgcmV0dXJuIF9wcm92aXNpb25hbE5hdmlnYXRpb25G
YWlsZWRFcnJvci5hdXRvcmVsZWFzZSgpOworfQorCitAZW5kCisKIHN0YXRpYyBOU1N0cmluZyAq
IGNvbnN0IHVzZXJTY3JpcHRTb3VyY2UgPSBAIndpbmRvdy53a1VzZXJTY3JpcHRJbmplY3RlZCA9
IHRydWUiOwogCiBAaW50ZXJmYWNlIEluQXBwQnJvd3NlclNjaGVtZUhhbmRsZXIgOiBOU09iamVj
dCA8V0tVUkxTY2hlbWVIYW5kbGVyPgpAQCAtMTAzLDggKzEzNyw2IEBAIFRFU1QoSW5BcHBCcm93
c2VyUHJpdmFjeSwgTm9uQXBwQm91bmREb21haW5GYWlsZWRVc2VyU2NyaXB0QXRTdGFydCkKICAg
ICBhdXRvIHNjaGVtZUhhbmRsZXIgPSBhZG9wdE5TKFtbSW5BcHBCcm93c2VyU2NoZW1lSGFuZGxl
ciBhbGxvY10gaW5pdF0pOwogICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6
c2NoZW1lSGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJpbi1hcHAtYnJvd3NlciJdOwogICAg
IFtjb25maWd1cmF0aW9uLnVzZXJDb250ZW50Q29udHJvbGxlciBhZGRVc2VyU2NyaXB0OnVzZXJT
Y3JpcHQuZ2V0KCldOwotICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldE5lZWRz
SW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrczpOT107Ci0gICAgW1tjb25maWd1cmF0aW9uIHByZWZl
cmVuY2VzXSBfc2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQ6WUVTXTsKIAogICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNH
UmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CiAgICAgTlNVUkxSZXF1ZXN0
ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0
cmluZzpAImluLWFwcC1icm93c2VyOi8vL2luLWFwcC1icm93c2VyLXByaXZhY3ktdGVzdC11c2Vy
LXNjcmlwdCJdXTsKQEAgLTEyMSw4ICsxNTMsNyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ks
IE5vbkFwcEJvdW5kRG9tYWluRmFpbGVkVXNlclNjcmlwdEF0U3RhcnQpCiAgICAgaXNEb25lID0g
ZmFsc2U7CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCi0gICAgLy8g
VHVybiBiYWNrIG9uIEluLUFwcCBCcm93c2VyIFByaXZhY3kgcXVpcmtzIHRvIGNoZWNrIHRoYXQg
b3JpZ2luYWwgYXR0ZW1wdCB0byBzZXQgdGhpcyB2YXJpYWJsZSB3YXMgcmVqZWN0ZWQuCi0gICAg
aXNEb25lID0gZmFsc2U7CisgICAgLy8gRGlzYWJsZSBzY3JpcHQgaW5qZWN0aW9uIGJsb2NraW5n
IHRvIGNoZWNrIHRoYXQgb3JpZ2luYWwgYXR0ZW1wdCB0byBzZXQgdGhpcyB2YXJpYWJsZSB3YXMg
cmVqZWN0ZWQuCiAgICAgW1tbd2ViVmlldyBjb25maWd1cmF0aW9uXSBwcmVmZXJlbmNlc10gX3Nl
dE5lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrczpZRVNdOwogICAgIFt3ZWJWaWV3IGV2YWx1
YXRlSmF2YVNjcmlwdDpAIndpbmRvdy53a1VzZXJTY3JpcHRJbmplY3RlZCIgY29tcGxldGlvbkhh
bmRsZXI6XihpZCBfTnVsbGFibGUgcmVzdWx0LCBOU0Vycm9yICogX051bGxhYmxlIGVycm9yKSB7
CiAgICAgICAgIEVYUEVDVF9FUShOTywgW3Jlc3VsdCBib29sVmFsdWVdKTsKQEAgLTE0NSw4ICsx
NzYsNiBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIE5vbkFwcEJvdW5kRG9tYWluRmFpbGVk
VXNlclNjcmlwdEF0RW5kKQogICAgIGF1dG8gc2NoZW1lSGFuZGxlciA9IGFkb3B0TlMoW1tJbkFw
cEJyb3dzZXJTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0XSk7CiAgICAgW2NvbmZpZ3VyYXRpb24g
c2V0VVJMU2NoZW1lSGFuZGxlcjpzY2hlbWVIYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAImlu
LWFwcC1icm93c2VyIl07CiAgICAgW2NvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRDb250cm9sbGVy
IGFkZFVzZXJTY3JpcHQ6dXNlclNjcmlwdC5nZXQoKV07Ci0gICAgW1tjb25maWd1cmF0aW9uIHBy
ZWZlcmVuY2VzXSBfc2V0TmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzOk5PXTsKLSAgICBb
W2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxl
ZDpZRVNdOwogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25d
KTsKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRo
VVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaW4tYXBwLWJyb3dzZXI6Ly8vaW4tYXBwLWJyb3dz
ZXItcHJpdmFjeS10ZXN0LXVzZXItc2NyaXB0Il1dOwpAQCAtMTYzLDggKzE5Miw3IEBAIFRFU1Qo
SW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmREb21haW5GYWlsZWRVc2VyU2NyaXB0QXRF
bmQpCiAgICAgaXNEb25lID0gZmFsc2U7CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZp
c0RvbmUpOwogCi0gICAgLy8gVHVybiBiYWNrIG9uIEluLUFwcCBCcm93c2VyIFByaXZhY3kgcXVp
cmtzIHRvIGNoZWNrIHRoYXQgb3JpZ2luYWwgYXR0ZW1wdCB0byBzZXQgdGhpcyB2YXJpYWJsZSB3
YXMgcmVqZWN0ZWQuCi0gICAgaXNEb25lID0gZmFsc2U7CisgICAgLy8gRGlzYWJsZSBzY3JpcHQg
aW5qZWN0aW9uIGJsb2NraW5nIHRvIGNoZWNrIHRoYXQgb3JpZ2luYWwgYXR0ZW1wdCB0byBzZXQg
dGhpcyB2YXJpYWJsZSB3YXMgcmVqZWN0ZWQuCiAgICAgW1tbd2ViVmlldyBjb25maWd1cmF0aW9u
XSBwcmVmZXJlbmNlc10gX3NldE5lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJrczpZRVNdOwog
ICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAIndpbmRvdy53a1VzZXJTY3JpcHRJbmpl
Y3RlZCIgY29tcGxldGlvbkhhbmRsZXI6XihpZCBfTnVsbGFibGUgcmVzdWx0LCBOU0Vycm9yICog
X051bGxhYmxlIGVycm9yKSB7CiAgICAgICAgIEVYUEVDVF9FUShOTywgW3Jlc3VsdCBib29sVmFs
dWVdKTsKQEAgLTE3OSw5ICsyMDcsMTEgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25B
cHBCb3VuZERvbWFpbkZhaWxlZFVzZXJTY3JpcHRBdEVuZCkKIAogVEVTVChJbkFwcEJyb3dzZXJQ
cml2YWN5LCBOb25BcHBCb3VuZERvbWFpbkZhaWxlZFVzZXJBZ2VudFNjcmlwdHMpCiB7CisgICAg
aW5pdGlhbGl6ZUluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKKwogICAgIFdLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNz
UGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOworICAgIC8v
IERpc2FibGUgYmxvY2tpbmcgb2YgcmVzdHJpY3RlZCBBUElzIGZvciB0ZXN0IHNldHVwLgogICAg
IFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldE5lZWRzSW5BcHBCcm93c2VyUHJpdmFj
eVF1aXJrczpZRVNdOwotICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEluQXBw
QnJvd3NlclByaXZhY3lFbmFibGVkOk5PXTsKIAogICAgIGF1dG8gc2NoZW1lSGFuZGxlciA9IGFk
b3B0TlMoW1tJbkFwcEJyb3dzZXJTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0XSk7CiAgICAgW2Nv
bmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpzY2hlbWVIYW5kbGVyLmdldCgpIGZvclVS
TFNjaGVtZTpAImluLWFwcC1icm93c2VyIl07CkBAIC0xOTgsMTMgKzIyOCwxMSBAQCBURVNUKElu
QXBwQnJvd3NlclByaXZhY3ksIE5vbkFwcEJvdW5kRG9tYWluRmFpbGVkVXNlckFnZW50U2NyaXB0
cykKIAogICAgIGlzRG9uZSA9IGZhbHNlOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
aXNEb25lKTsKLQotICAgIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdz
KCk7CisgICAgCisgICAgLy8gRW5hYmxlIGJsb2NraW5nIG9mIHJlc3RyaWN0ZWQgQVBJcy4KICAg
ICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXROZWVkc0luQXBwQnJvd3NlclByaXZh
Y3lRdWlya3M6Tk9dOwotICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEluQXBw
QnJvd3NlclByaXZhY3lFbmFibGVkOllFU107CiAKICAgICBhdXRvIHdlYlZpZXcyID0gYWRvcHRO
UyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1
cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKLQogICAgIGlzRG9uZSA9IGZhbHNlOwogICAgIFt3ZWJW
aWV3MiBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKICAgICBbd2ViVmlldzIgX3Rlc3Rfd2FpdEZvckRp
ZEZpbmlzaE5hdmlnYXRpb25dOwpAQCAtMjQ0LDcgKzI3Miw2IEBAIFRFU1QoSW5BcHBCcm93c2Vy
UHJpdmFjeSwgTG9jYWxGaWxlc0FyZUFwcEJvdW5kKQogewogICAgIGluaXRpYWxpemVJbkFwcEJy
b3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBbW2NvbmZp
Z3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZDpZRVNd
OwogICAgIFtjb25maWd1cmF0aW9uIHNldExpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFp
bnM6WUVTXTsKIAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9u
LmdldCgpXSk7CkBAIC0yNjUsNyArMjkyLDYgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBE
YXRhRmlsZXNBcmVBcHBCb3VuZCkKIHsKICAgICBpbml0aWFsaXplSW5BcHBCcm93c2VyUHJpdmFj
eVRlc3RTZXR0aW5ncygpOwogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dl
YlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgW1tjb25maWd1cmF0aW9uIHBy
ZWZlcmVuY2VzXSBfc2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQ6WUVTXTsKICAgICBbY29u
ZmlndXJhdGlvbiBzZXRMaW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zOllFU107CiAK
ICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwpA
QCAtMjg1LDcgKzMxMSw2IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQWJvdXRGaWxlc0Fy
ZUFwcEJvdW5kKQogewogICAgIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRp
bmdzKCk7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNd
IF9zZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZDpZRVNdOwogICAgIFtjb25maWd1cmF0aW9u
IHNldExpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnM6WUVTXTsKIAogICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNH
UmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CkBAIC0zMDMsNyAr
MzI4LDYgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBYm91dEZpbGVzQXJlQXBwQm91bmQp
CiAKIHN0YXRpYyBOU1N0cmluZyAqc3R5bGVTaGVldFNvdXJjZSA9IEAiYm9keSB7IGJhY2tncm91
bmQtY29sb3I6IGdyZWVuICFpbXBvcnRhbnQ7IH0iOwogc3RhdGljIE5TU3RyaW5nICpiYWNrZ3Jv
dW5kQ29sb3JTY3JpcHQgPSBAIndpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHks
IG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKSI7Ci1zdGF0aWMgTlNT
dHJpbmcgKmZyYW1lQmFja2dyb3VuZENvbG9yU2NyaXB0ID0gQCJ3aW5kb3cuZ2V0Q29tcHV0ZWRT
dHlsZShkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaWZyYW1lJylbMF0uY29udGVudERv
Y3VtZW50LmJvZHksIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKSI7
CiBzdGF0aWMgY29uc3QgY2hhciogcmVkSW5SR0IgPSAicmdiKDI1NSwgMCwgMCkiOwogc3RhdGlj
IGNvbnN0IGNoYXIqIGJsYWNrSW5SR0IgPSAicmdiYSgwLCAwLCAwLCAwKSI7CiAKQEAgLTMyOSwx
OSArMzUzLDE5IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmRVc2VyU3R5
bGVTaGVldEZvclNwZWNpZmljV2ViVmlld0ZhaWxzKQogCiAgICAgYXV0byBzY2hlbWVIYW5kbGVy
ID0gYWRvcHROUyhbW0luQXBwQnJvd3NlclNjaGVtZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAg
ICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOnNjaGVtZUhhbmRsZXIuZ2V0KCkg
Zm9yVVJMU2NoZW1lOkAiaW4tYXBwLWJyb3dzZXIiXTsKLSAgICBbW2NvbmZpZ3VyYXRpb24gcHJl
ZmVyZW5jZXNdIF9zZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZDpZRVNdOwotICAgIFtbY29u
ZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldE5lZWRzSW5BcHBCcm93c2VyUHJpdmFjeVF1aXJr
czpZRVNdOworICAgIFJldGFpblB0cjxfV0tVc2VyQ29udGVudFdvcmxkPiB3b3JsZCA9IFtfV0tV
c2VyQ29udGVudFdvcmxkIHdvcmxkV2l0aE5hbWU6QCJUZXN0V29ybGQiXTsKIAogICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNH
UmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgTlNVUkxS
ZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJM
V2l0aFN0cmluZzpAImluLWFwcC1icm93c2VyOi8vL2luLWFwcC1icm93c2VyLXByaXZhY3ktdGVz
dC11c2VyLXN0eWxlLXNoZWV0cyJdXTsKLSAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0
XTsKLSAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07Ci0KLSAg
ICBSZXRhaW5QdHI8X1dLVXNlckNvbnRlbnRXb3JsZD4gd29ybGQgPSBbX1dLVXNlckNvbnRlbnRX
b3JsZCB3b3JsZFdpdGhOYW1lOkAiVGVzdFdvcmxkIl07CiAgICAgUmV0YWluUHRyPF9XS1VzZXJT
dHlsZVNoZWV0PiBzdHlsZVNoZWV0ID0gYWRvcHROUyhbW19XS1VzZXJTdHlsZVNoZWV0IGFsbG9j
XSBpbml0V2l0aFNvdXJjZTpzdHlsZVNoZWV0U291cmNlIGZvcldLV2ViVmlldzp3ZWJWaWV3Lmdl
dCgpIGZvck1haW5GcmFtZU9ubHk6WUVTIGxldmVsOl9XS1VzZXJTdHlsZVVzZXJMZXZlbCB1c2Vy
Q29udGVudFdvcmxkOndvcmxkLmdldCgpXSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250
ZW50Q29udHJvbGxlcl0gX2FkZFVzZXJTdHlsZVNoZWV0OnN0eWxlU2hlZXQuZ2V0KCldOwogCi0g
ICAgZXhwZWN0U2NyaXB0RXZhbHVhdGVzVG9Db2xvcih3ZWJWaWV3LmdldCgpLCBiYWNrZ3JvdW5k
Q29sb3JTY3JpcHQsIHJlZEluUkdCKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbQXBw
Qm91bmREb21haW5EZWxlZ2F0ZSBuZXddKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVs
ZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05T
VVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImluLWFwcC1i
cm93c2VyOi8vL2luLWFwcC1icm93c2VyLXByaXZhY3ktdGVzdC11c2VyLXN0eWxlLXNoZWV0cyJd
XTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKyAgICBOU0Vycm9yICplcnJv
ciA9IFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbkVycm9yXTsK
KyAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24sIEAiQXBwLWJv
dW5kIGRvbWFpbiBmYWlsdXJlIik7CiAgICAgY2xlYW5VcEluQXBwQnJvd3NlclByaXZhY3lUZXN0
U2V0dGluZ3MoKTsKIH0KIApAQCAtMzUzLDE4ICszNzcsMTggQEAgVEVTVChJbkFwcEJyb3dzZXJQ
cml2YWN5LCBOb25BcHBCb3VuZFVzZXJTdHlsZVNoZWV0Rm9yQWxsV2ViVmlld3NGYWlscykKIAog
ICAgIGF1dG8gc2NoZW1lSGFuZGxlciA9IGFkb3B0TlMoW1tJbkFwcEJyb3dzZXJTY2hlbWVIYW5k
bGVyIGFsbG9jXSBpbml0XSk7CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxl
cjpzY2hlbWVIYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAImluLWFwcC1icm93c2VyIl07Ci0g
ICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0SW5BcHBCcm93c2VyUHJpdmFjeUVu
YWJsZWQ6WUVTXTsKLSAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXROZWVkc0lu
QXBwQnJvd3NlclByaXZhY3lRdWlya3M6WUVTXTsKLQotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0
ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImlu
LWFwcC1icm93c2VyOi8vL2luLWFwcC1icm93c2VyLXByaXZhY3ktdGVzdC11c2VyLXN0eWxlLXNo
ZWV0cyJdXTsKLSAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKLSAgICBbd2ViVmll
dyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07Ci0KKyAgICAKICAgICBSZXRhaW5Q
dHI8X1dLVXNlclN0eWxlU2hlZXQ+IHN0eWxlU2hlZXQgPSBhZG9wdE5TKFtbX1dLVXNlclN0eWxl
U2hlZXQgYWxsb2NdIGluaXRXaXRoU291cmNlOnN0eWxlU2hlZXRTb3VyY2UgZm9yTWFpbkZyYW1l
T25seTpZRVNdKTsKICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBf
YWRkVXNlclN0eWxlU2hlZXQ6c3R5bGVTaGVldC5nZXQoKV07CisgICAgCisgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0
WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBhdXRvIGRlbGVn
YXRlID0gYWRvcHROUyhbQXBwQm91bmREb21haW5EZWxlZ2F0ZSBuZXddKTsKKyAgICBbd2ViVmll
dyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCi0gICAgZXhwZWN0U2Ny
aXB0RXZhbHVhdGVzVG9Db2xvcih3ZWJWaWV3LmdldCgpLCBiYWNrZ3JvdW5kQ29sb3JTY3JpcHQs
IHJlZEluUkdCKTsKKyAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJl
cXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaW4tYXBwLWJyb3dzZXI6Ly8vaW4t
YXBwLWJyb3dzZXItcHJpdmFjeS10ZXN0LXVzZXItc3R5bGUtc2hlZXRzIl1dOworICAgIFt3ZWJW
aWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworICAgIE5TRXJyb3IgKmVycm9yID0gW2RlbGVnYXRl
IHdhaXRGb3JEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uRXJyb3JdOworICAgIEVYUEVDVF9X
S19TVFJFUShlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbiwgQCJBcHAtYm91bmQgZG9tYWluIGZh
aWx1cmUiKTsKICAgICBjbGVhblVwSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOwog
fQogCkBAIC0zNzYsMjIgKzQwMCwxNyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIE5vbkFw
cEJvdW5kVXNlclN0eWxlU2hlZXRBZmZlY3RpbmdBbGxGcmFtZXNGYWlscykKIAogICAgIGF1dG8g
c2NoZW1lSGFuZGxlciA9IGFkb3B0TlMoW1tJbkFwcEJyb3dzZXJTY2hlbWVIYW5kbGVyIGFsbG9j
XSBpbml0XSk7CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpzY2hlbWVI
YW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAImluLWFwcC1icm93c2VyIl07Ci0gICAgW1tjb25m
aWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQ6WUVT
XTsKLSAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXROZWVkc0luQXBwQnJvd3Nl
clByaXZhY3lRdWlya3M6WUVTXTsKLQotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImluLWFwcC1icm93
c2VyOi8vL2luLWFwcC1icm93c2VyLXByaXZhY3ktdGVzdC11c2VyLXN0eWxlLXNoZWV0cy1pZnJh
bWUiXV07Ci0gICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07Ci0gICAgW3dlYlZpZXcg
X3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwotCiAgICAgUmV0YWluUHRyPF9XS1Vz
ZXJTdHlsZVNoZWV0PiBzdHlsZVNoZWV0ID0gYWRvcHROUyhbW19XS1VzZXJTdHlsZVNoZWV0IGFs
bG9jXSBpbml0V2l0aFNvdXJjZTpzdHlsZVNoZWV0U291cmNlIGZvck1haW5GcmFtZU9ubHk6Tk9d
KTsKICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBfYWRkVXNlclN0
eWxlU2hlZXQ6c3R5bGVTaGVldC5nZXQoKV07CiAKLSAgICAvLyBUaGUgbWFpbiBmcmFtZSBzaG91
bGQgYmUgYWZmZWN0ZWQuCi0gICAgZXhwZWN0U2NyaXB0RXZhbHVhdGVzVG9Db2xvcih3ZWJWaWV3
LmdldCgpLCBiYWNrZ3JvdW5kQ29sb3JTY3JpcHQsIHJlZEluUkdCKTsKKyAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3Ra
ZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8gZGVsZWdh
dGUgPSBhZG9wdE5TKFtBcHBCb3VuZERvbWFpbkRlbGVnYXRlIG5ld10pOworICAgIFt3ZWJWaWV3
IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKLSAgICAvLyBUaGUgc3Vi
ZnJhbWUgc2hvdWxkIGFsc28gYmUgYWZmZWN0ZWQuCi0gICAgZXhwZWN0U2NyaXB0RXZhbHVhdGVz
VG9Db2xvcih3ZWJWaWV3LmdldCgpLCBmcmFtZUJhY2tncm91bmRDb2xvclNjcmlwdCwgcmVkSW5S
R0IpOworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdp
dGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJpbi1hcHAtYnJvd3NlcjovLy9pbi1hcHAtYnJv
d3Nlci1wcml2YWN5LXRlc3QtdXNlci1zdHlsZS1zaGVldHMtaWZyYW1lIl1dOworICAgIFt3ZWJW
aWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworICAgIE5TRXJyb3IgKmVycm9yID0gW2RlbGVnYXRl
IHdhaXRGb3JEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uRXJyb3JdOworICAgIEVYUEVDVF9X
S19TVFJFUShlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbiwgQCJBcHAtYm91bmQgZG9tYWluIGZh
aWx1cmUiKTsKICAgICBjbGVhblVwSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOwog
fQogCkBAIC00MDQsOCArNDIzLDYgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBC
b3VuZERvbWFpbkNhbm5vdEFjY2Vzc01lc3NhZ2VIYW5kbGVycykKIAogICAgIGF1dG8gc2NoZW1l
SGFuZGxlciA9IGFkb3B0TlMoW1tJbkFwcEJyb3dzZXJTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0
XSk7CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpzY2hlbWVIYW5kbGVy
LmdldCgpIGZvclVSTFNjaGVtZTpAImluLWFwcC1icm93c2VyIl07Ci0gICAgW1tjb25maWd1cmF0
aW9uIHByZWZlcmVuY2VzXSBfc2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQ6WUVTXTsKLSAg
ICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXROZWVkc0luQXBwQnJvd3NlclByaXZh
Y3lRdWlya3M6WUVTXTsKIAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uLmdldCgpXSk7CiAKQEAgLTQxNiw2ICs0MzMsMTAgQEAgVEVTVChJbkFwcEJyb3dzZXJQ
cml2YWN5LCBOb25BcHBCb3VuZERvbWFpbkNhbm5vdEFjY2Vzc01lc3NhZ2VIYW5kbGVycykKICAg
ICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltO
U1VSTCBVUkxXaXRoU3RyaW5nOkAiaW4tYXBwLWJyb3dzZXI6Ly8vaW4tYXBwLWJyb3dzZXItcHJp
dmFjeS10ZXN0LW1lc3NhZ2UtaGFuZGxlciJdXTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpy
ZXF1ZXN0XTsKICAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07
CisgICAgCisgICAgLy8gRGlzYWJsZSBzY3JpcHQgaW5qZWN0aW9uIGJsb2NraW5nIHRvIGNoZWNr
IHRoYXQgdGhlIHJlcXVlc3QgZm9yIG1lc3NhZ2UKKyAgICAvLyBoYW5kbGVycyByZXR1cm5lZCBu
dWxsLgorICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldE5lZWRzSW5BcHBCcm93
c2VyUHJpdmFjeVF1aXJrczpZRVNdOwogCiAgICAgLy8gU2V0IHRoZSBiYWNrZ3JvdW5kIGNvbG9y
IHRvIHJlZCBpZiBtZXNzYWdlIGhhbmRsZXJzIHJldHVybmVkIG51bGwgc28gd2UgY2FuCiAgICAg
Ly8gY2hlY2sgd2l0aG91dCBuZWVkaW5nIGEgbWVzc2FnZSBoYW5kbGVyLgpAQCAtNDMyLDcgKzQ1
Myw2IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5DYW5BY2Nlc3NN
ZXNzYWdlSGFuZGxlcnMpCiAKICAgICBhdXRvIHNjaGVtZUhhbmRsZXIgPSBhZG9wdE5TKFtbSW5B
cHBCcm93c2VyU2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFtjb25maWd1cmF0aW9u
IHNldFVSTFNjaGVtZUhhbmRsZXI6c2NoZW1lSGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJp
bi1hcHAtYnJvd3NlciJdOwotICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldElu
QXBwQnJvd3NlclByaXZhY3lFbmFibGVkOllFU107CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0TGlt
aXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWluczpZRVNdOwogCiAgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVy
byBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKQEAgLTgzMyw0MCArODUzLDYg
QEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZERvbWFpbkRvZXNOb3RBbGxv
d1NlcnZpY2VXb3JrZXJzKQogICAgIGlzRG9uZSA9IGZhbHNlOwogfQogCi1AaW50ZXJmYWNlIEFw
cEJvdW5kRG9tYWluRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+Ci0t
ICh2b2lkKXdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uOwotLSAoTlNFcnJvciAqKXdhaXRGb3JE
aWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uRXJyb3I7Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlv
biBBcHBCb3VuZERvbWFpbkRlbGVnYXRlIHsKLSAgICBib29sIF9uYXZpZ2F0aW9uRmluaXNoZWQ7
Ci0gICAgUmV0YWluUHRyPE5TRXJyb3I+IF9wcm92aXNpb25hbE5hdmlnYXRpb25GYWlsZWRFcnJv
cjsKLX0KLQotLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZpbmlzaE5h
dmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24KLXsKLSAgICBfbmF2aWdhdGlvbkZp
bmlzaGVkID0gdHJ1ZTsKLX0KLQotLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb246KG51bGxfdW5zcGVjaWZpZWQgV0tOYXZpZ2F0
aW9uICopbmF2aWdhdGlvbiB3aXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgotewotICAgIF9wcm92
aXNpb25hbE5hdmlnYXRpb25GYWlsZWRFcnJvciA9IGVycm9yOwotfQotCi0tICh2b2lkKXdhaXRG
b3JEaWRGaW5pc2hOYXZpZ2F0aW9uCi17Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZf
bmF2aWdhdGlvbkZpbmlzaGVkKTsKLX0KLQotLSAoTlNFcnJvciAqKXdhaXRGb3JEaWRGYWlsUHJv
dmlzaW9uYWxOYXZpZ2F0aW9uRXJyb3IKLXsKLSAgICB3aGlsZSAoIV9wcm92aXNpb25hbE5hdmln
YXRpb25GYWlsZWRFcnJvcikKLSAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c3BpblJ1bkxv
b3AoKTsKLSAgICByZXR1cm4gX3Byb3Zpc2lvbmFsTmF2aWdhdGlvbkZhaWxlZEVycm9yLmF1dG9y
ZWxlYXNlKCk7Ci19Ci0KLUBlbmQKLQogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3Vu
ZEZsYWdGb3JOb25BcHBCb3VuZERvbWFpbkZhaWxzKQogewogICAgIGluaXRpYWxpemVJbkFwcEJy
b3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7CkBAIC04ODUsNyArODcxLDcgQEAgVEVTVChJbkFw
cEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZEZsYWdGb3JOb25BcHBCb3VuZERvbWFpbkZhaWxzKQog
ICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6
W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJpbi1hcHAtYnJvd3NlcjovLy9pbi1hcHAtYnJvd3Nlci1w
cml2YWN5LXRlc3QtdXNlci1zdHlsZS1zaGVldHMiXV07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVl
c3Q6cmVxdWVzdF07CiAgICAgTlNFcnJvciAqZXJyb3IgPSBbZGVsZWdhdGUgd2FpdEZvckRpZEZh
aWxQcm92aXNpb25hbE5hdmlnYXRpb25FcnJvcl07Ci0gICAgRVhQRUNUX1dLX1NUUkVRKGVycm9y
LmxvY2FsaXplZERlc2NyaXB0aW9uLCBAIkF0dGVtcHRlZCBuYXZpZ2F0aW9uIGF3YXkgZnJvbSBh
cHAtYm91bmQgZG9tYWluIik7CisgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmxvY2FsaXplZERl
c2NyaXB0aW9uLCBAIkFwcC1ib3VuZCBkb21haW4gZmFpbHVyZSIpOwogCiAgICAgLy8gTWFrZSBz
dXJlIHRoZSBsb2FkIGRpZG4ndCBjb21wbGV0ZSBieSBjaGVja2luZyB0aGUgYmFja2dyb3VuZCBj
b2xvci4KICAgICAvLyBSZWQgd291bGQgaW5kaWNhdGUgaXQgZmluaXNoZWQgbG9hZGluZy4KQEAg
LTkxNiw3ICs5MDIsNyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIE5hdmlnYXRlQXdheUZy
b21BcHBCb3VuZERvbWFpbldpdGhBcHBCb3VuZEZsYWdGYWlscykKICAgICByZXF1ZXN0ID0gW05T
VVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImluLWFwcC1i
cm93c2VyOi8vL2luLWFwcC1icm93c2VyLXByaXZhY3ktdGVzdC11c2VyLXN0eWxlLXNoZWV0cyJd
XTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKICAgICBOU0Vycm9yICplcnJv
ciA9IFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbkVycm9yXTsK
LSAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24sIEAiQXR0ZW1w
dGVkIG5hdmlnYXRpb24gYXdheSBmcm9tIGFwcC1ib3VuZCBkb21haW4iKTsKKyAgICBFWFBFQ1Rf
V0tfU1RSRVEoZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24sIEAiQXBwLWJvdW5kIGRvbWFpbiBm
YWlsdXJlIik7CiAKICAgICAvLyBNYWtlIHN1cmUgdGhlIGxvYWQgZGlkbid0IGNvbXBsZXRlIGJ5
IGNoZWNraW5nIHRoZSBiYWNrZ3JvdW5kIGNvbG9yLgogICAgIC8vIFJlZCB3b3VsZCBpbmRpY2F0
ZSBpdCBmaW5pc2hlZCBsb2FkaW5nLgpAQCAtOTkxLDExICs5NzcsMTQgQEAgVEVTVChJbkFwcEJy
b3dzZXJQcml2YWN5LCBXZWJWaWV3V2l0aG91dEFwcEJvdW5kRmxhZ0NhbkZyZWVseU5hdmlnYXRl
KQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIAogICAgIC8vIE5hdmln
YXRpb24gc2hvdWxkIGJlIHN1Y2Nlc3NmdWwsIGJ1dCB0aGlzIFdlYlZpZXcgc2hvdWxkIG5vdCBn
ZXQgYXBwLWJvdW5kIGRvbWFpbgotICAgIC8vIHByaXZpbGVnZXMgbGlrZSB1c2VyIHN0eWxlIHNo
ZWV0cy4gU2V0IHF1aXJrcyB0byB0cnVlIHNvIHdlIGNhbiBldmFsdWF0ZSBzY3JpcHQKLSAgICAv
LyB0byBjaGVjay4KLSAgICBbW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dIHByZWZlcmVuY2VzXSBf
c2V0TmVlZHNJbkFwcEJyb3dzZXJQcml2YWN5UXVpcmtzOllFU107Ci0gICAgZXhwZWN0U2NyaXB0
RXZhbHVhdGVzVG9Db2xvcih3ZWJWaWV3LmdldCgpLCBiYWNrZ3JvdW5kQ29sb3JTY3JpcHQsIGJs
YWNrSW5SR0IpOwotICAgIGNsZWFuVXBJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7
CisgICAgLy8gcHJpdmlsZWdlcyBsaWtlIHNjcmlwdCBpbmplY3Rpb24uCisgICAgaXNEb25lID0g
ZmFsc2U7CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAid2luZG93LndrVXNlclNj
cmlwdEluamVjdGVkIiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIF9OdWxsYWJsZSByZXN1bHQsIE5T
RXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoISFlcnJvcik7
CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmlzRG9uZSk7CiB9CiAKIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgV2ViVmll
d0Nhbm5vdFVwZGF0ZUFwcEJvdW5kRmxhZ09uY2VTZXQpCkBAIC0xMDI5LDExICsxMDE4LDQyIEBA
IFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgV2ViVmlld0Nhbm5vdFVwZGF0ZUFwcEJvdW5kRmxh
Z09uY2VTZXQpCiAgICAgcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05T
VVJMIFVSTFdpdGhTdHJpbmc6QCJpbi1hcHAtYnJvd3NlcjovLy9pbi1hcHAtYnJvd3Nlci1wcml2
YWN5LXRlc3QtdXNlci1zdHlsZS1zaGVldHMiXV07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6
cmVxdWVzdF07CiAgICAgTlNFcnJvciAqZXJyb3IgPSBbZGVsZWdhdGUgd2FpdEZvckRpZEZhaWxQ
cm92aXNpb25hbE5hdmlnYXRpb25FcnJvcl07Ci0gICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmxv
Y2FsaXplZERlc2NyaXB0aW9uLCBAIkF0dGVtcHRlZCBuYXZpZ2F0aW9uIGF3YXkgZnJvbSBhcHAt
Ym91bmQgZG9tYWluIik7CisgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmxvY2FsaXplZERlc2Ny
aXB0aW9uLCBAIkFwcC1ib3VuZCBkb21haW4gZmFpbHVyZSIpOwogCiAgICAgY2xlYW5VcEluQXBw
QnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKIH0KIAorVEVTVChJbkFwcEJyb3dzZXJQcml2
YWN5LCBJbmplY3RTY3JpcHRUaGVuTmF2aWdhdGVUb05vbkFwcEJvdW5kRG9tYWluRmFpbHMpCit7
CisgICAgaXNEb25lID0gZmFsc2U7CisgICAgaW5pdGlhbGl6ZUluQXBwQnJvd3NlclByaXZhY3lU
ZXN0U2V0dGluZ3MoKTsKKyAgICBhdXRvIHVzZXJTY3JpcHQgPSBhZG9wdE5TKFtbV0tVc2VyU2Ny
aXB0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTp1c2VyU2NyaXB0U291cmNlIGluamVjdGlvblRpbWU6
V0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0RG9jdW1lbnRTdGFydCBmb3JNYWluRnJhbWVPbmx5
OllFU10pOworCisgICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtX
S1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNs
YXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JU
ZXN0aW5nOllFU107CisgICAgYXV0byBzY2hlbWVIYW5kbGVyID0gYWRvcHROUyhbW0luQXBwQnJv
d3NlclNjaGVtZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRV
UkxTY2hlbWVIYW5kbGVyOnNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiaW4tYXBw
LWJyb3dzZXIiXTsKKyAgICBbY29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgYWRk
VXNlclNjcmlwdDp1c2VyU2NyaXB0LmdldCgpXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVy
ZW5jZXNdIF9zZXROZWVkc0luQXBwQnJvd3NlclByaXZhY3lRdWlya3M6Tk9dOworCisgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIGRlbGVn
YXRlID0gYWRvcHROUyhbQXBwQm91bmREb21haW5EZWxlZ2F0ZSBuZXddKTsKKyAgICBbd2ViVmll
dyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAgaXNEb25lID0g
ZmFsc2U7CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAid2luZG93LndrVXNlclNj
cmlwdEluamVjdGVkIiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIF9OdWxsYWJsZSByZXN1bHQsIE5T
RXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKCEhZXJyb3Ip
OworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZpc0RvbmUpOworICAgIAorICAgIC8vIExvYWQgYSBub24tYXBwIGJvdW5kIGRv
bWFpbi4KKyAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RX
aXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaW4tYXBwLWJyb3dzZXI6Ly8vaW4tYXBwLWJy
b3dzZXItcHJpdmFjeS10ZXN0LXVzZXItYWdlbnQtc2NyaXB0Il1dOworICAgIFt3ZWJWaWV3IGxv
YWRSZXF1ZXN0OnJlcXVlc3RdOworICAgIE5TRXJyb3IgKmVycm9yID0gW2RlbGVnYXRlIHdhaXRG
b3JEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uRXJyb3JdOworICAgIEVYUEVDVF9XS19TVFJF
UShlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbiwgQCJBcHAtYm91bmQgZG9tYWluIGZhaWx1cmUi
KTsKK30KKwogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBXZWJWaWV3Q2F0ZWdvcnkpCiB7CiAg
ICAgaW5pdGlhbGl6ZUluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>