<?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>97386</bug_id>
          
          <creation_ts>2012-09-21 22:16:15 -0700</creation_ts>
          <short_desc>Fix Geolocation error reporting in the test support</short_desc>
          <delta_ts>2012-09-25 07:18:27 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jamesr</cc>
    
    <cc>mifenton</cc>
    
    <cc>peter+ews</cc>
    
    <cc>rakuco</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>sam</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>726043</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-09-21 22:16:15 -0700</bug_when>
    <thetext>The method setMockGeolocationError() does not make much sense for testing because 2 of the 3 code are supposed to be internal.

This is Part 1, fix the upper layer. There may be a Part 2 if GeolocationController can also be cleaned without breaking any port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726044</commentid>
    <comment_count>1</comment_count>
      <attachid>165244</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-09-21 22:18:12 -0700</bug_when>
    <thetext>Created attachment 165244
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726045</commentid>
    <comment_count>2</comment_count>
      <attachid>165244</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-21 22:23:44 -0700</bug_when>
    <thetext>Comment on attachment 165244
Patch

Attachment 165244 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13950910</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726046</commentid>
    <comment_count>3</comment_count>
      <attachid>165244</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-09-21 22:25:26 -0700</bug_when>
    <thetext>Comment on attachment 165244
Patch

Attachment 165244 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/13981378</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726047</commentid>
    <comment_count>4</comment_count>
      <attachid>165244</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-09-21 22:27:56 -0700</bug_when>
    <thetext>Comment on attachment 165244
Patch

Attachment 165244 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13954888</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726049</commentid>
    <comment_count>5</comment_count>
      <attachid>165244</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-09-21 22:31:43 -0700</bug_when>
    <thetext>Comment on attachment 165244
Patch

Attachment 165244 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/13948953</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726052</commentid>
    <comment_count>6</comment_count>
      <attachid>165246</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-09-21 23:15:44 -0700</bug_when>
    <thetext>Created attachment 165246
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726053</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-21 23:17:46 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726054</commentid>
    <comment_count>8</comment_count>
      <attachid>165246</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-21 23:20:35 -0700</bug_when>
    <thetext>Comment on attachment 165246
Patch

Attachment 165246 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13935864</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726055</commentid>
    <comment_count>9</comment_count>
      <attachid>165246</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-21 23:22:55 -0700</bug_when>
    <thetext>Comment on attachment 165246
Patch

Attachment 165246 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13916919</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726056</commentid>
    <comment_count>10</comment_count>
      <attachid>165246</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-09-21 23:27:47 -0700</bug_when>
    <thetext>Comment on attachment 165246
Patch

Attachment 165246 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/13975667</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726058</commentid>
    <comment_count>11</comment_count>
      <attachid>165247</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-09-21 23:35:03 -0700</bug_when>
    <thetext>Created attachment 165247
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726061</commentid>
    <comment_count>12</comment_count>
      <attachid>165247</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-21 23:41:08 -0700</bug_when>
    <thetext>Comment on attachment 165247
Patch

Attachment 165247 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13948974</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726064</commentid>
    <comment_count>13</comment_count>
      <attachid>165247</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-09-21 23:46:17 -0700</bug_when>
    <thetext>Comment on attachment 165247
Patch

Attachment 165247 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/13954902</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726065</commentid>
    <comment_count>14</comment_count>
      <attachid>165249</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-09-21 23:49:04 -0700</bug_when>
    <thetext>Created attachment 165249
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726066</commentid>
    <comment_count>15</comment_count>
      <attachid>165249</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-21 23:55:57 -0700</bug_when>
    <thetext>Comment on attachment 165249
Patch

Attachment 165249 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13956933</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726069</commentid>
    <comment_count>16</comment_count>
      <attachid>165250</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-09-21 23:59:53 -0700</bug_when>
    <thetext>Created attachment 165250
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726074</commentid>
    <comment_count>17</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-09-22 00:15:15 -0700</bug_when>
    <thetext>Chromium is a PITA here because there is no clear API, everything is exposed :(

Next I&apos;ll get rid of GeolocationController::errorOccurred(), Geolocation::setError() and GeolocationError. I may have to #ifdef everything for Chromium.

Adam, this patch modifies WebKit/Chromium/public. Is that Okay?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726097</commentid>
    <comment_count>18</comment_count>
      <attachid>165250</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-22 01:49:01 -0700</bug_when>
    <thetext>Comment on attachment 165250
Patch

Attachment 165250 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13958905

New failing tests:
fast/dom/Geolocation/reentrant-error.html
fast/dom/Geolocation/error.html
fast/dom/Geolocation/error-clear-watch.html
fast/dom/Geolocation/watch.html
WebFilterOperationsTest.saveAndRestore
fast/dom/Geolocation/maximum-age.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726831</commentid>
    <comment_count>19</comment_count>
      <attachid>165250</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-24 10:46:27 -0700</bug_when>
    <thetext>Comment on attachment 165250
Patch

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

&gt; Source/WebKit/chromium/public/WebGeolocationClientMock.h:52
&gt; -    WEBKIT_EXPORT void setError(int errorCode, const WebString&amp; message);
&gt; +    WEBKIT_EXPORT void setMockGeolocationPositionUnavailableError(const WebString&amp; message);

API change LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726911</commentid>
    <comment_count>20</comment_count>
      <attachid>165427</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-09-24 12:21:23 -0700</bug_when>
    <thetext>Created attachment 165427
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726928</commentid>
    <comment_count>21</comment_count>
      <attachid>165427</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-24 12:47:23 -0700</bug_when>
    <thetext>Comment on attachment 165427
Patch

Attachment 165427 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14006205</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726970</commentid>
    <comment_count>22</comment_count>
      <attachid>165440</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-09-24 13:48:49 -0700</bug_when>
    <thetext>Created attachment 165440
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727035</commentid>
    <comment_count>23</comment_count>
      <attachid>165440</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-09-24 15:07:43 -0700</bug_when>
    <thetext>Comment on attachment 165440
Patch

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

r=me

&gt; Source/WebKit/chromium/public/WebGeolocationClientMock.h:52
&gt; -    WEBKIT_EXPORT void setError(int errorCode, const WebString&amp; message);
&gt; +    WEBKIT_EXPORT void setPositionUnavailableError(const WebString&amp; message);

I am not sure if you are supposed to change this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727065</commentid>
    <comment_count>24</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-24 16:19:43 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 165440 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=165440&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebGeolocationClientMock.h:52
&gt; &gt; -    WEBKIT_EXPORT void setError(int errorCode, const WebString&amp; message);
&gt; &gt; +    WEBKIT_EXPORT void setPositionUnavailableError(const WebString&amp; message);
&gt; 
&gt; I am not sure if you are supposed to change this.

See https://bugs.webkit.org/show_bug.cgi?id=97386#c19</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727206</commentid>
    <comment_count>25</comment_count>
      <attachid>165440</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-09-24 19:29:34 -0700</bug_when>
    <thetext>Comment on attachment 165440
Patch

Clearing flags on attachment: 165440

Committed r129444: &lt;http://trac.webkit.org/changeset/129444&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727207</commentid>
    <comment_count>26</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-09-24 19:29:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165244</attachid>
            <date>2012-09-21 22:18:12 -0700</date>
            <delta_ts>2012-09-21 23:15:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97386-20120921221735.patch</filename>
            <type>text/plain</type>
            <size>61178</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5Mjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzE3ZDU1MjQ4MjEwOWI0
ZWJhM2ZhZTdiNGRkZjk0MWM2MTFkYWM0ZS4uY2QzZDNlODZmYzFiOWFmMjZmYjA2MzYxMjQyZTJj
Yzc4ZjkxYWJkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTA5LTIxICBCZW5q
YW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBGaXggR2VvbG9j
YXRpb24gZXJyb3IgcmVwb3J0aW5nIGluIHRoZSB0ZXN0IHN1cHBvcnQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3Mzg2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBv
ZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxlYXNlIGFkZCBwZXIt
ZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9H
ZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25D
bGllbnRNb2NrOjpHZW9sb2NhdGlvbkNsaWVudE1vY2spOgorICAgICAgICAoV2ViQ29yZTo6R2Vv
bG9jYXRpb25DbGllbnRNb2NrOjpzZXRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHZW9s
b2NhdGlvbkNsaWVudE1vY2s6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVF
cnJvcik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnJlc2V0KToK
KyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xpZW50TW9jazo6Y29udHJvbGxlclRpbWVy
RmlyZWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlv
bkNsaWVudE1vY2s6OmNsZWFyRXJyb3IpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svR2VvbG9j
YXRpb25DbGllbnRNb2NrLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEdlb2xvY2F0
aW9uQ2xpZW50TW9jayk6CisKIDIwMTItMDktMjEgIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29v
Z2xlLmNvbT4KIAogICAgICAgICBCaXF1YWRGaWx0ZXJOb2RlIG11c3QgdGFrZSBhdWRpby1yYXRl
IHBhcmFtZXRlciBjaGFuZ2VzIGludG8gYWNjb3VudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VM
b2cKaW5kZXggZWQ1Njg3ODQzOWIyOWMxZjQ4MGFhYTZmYTlhYTdmYzEwNDU3NjljMy4uY2UwZDMw
ZjZmYjY3NTg5MGY3MzE3NTYxMzA0ZTUyNzk3ZDRkNDI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDktMjEgIEJlbmphbWluIFBvdWxhaW4g
IDxiZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIEZpeCBHZW9sb2NhdGlvbiBlcnJvciBy
ZXBvcnRpbmcgaW4gdGhlIHRlc3Qgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTczODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ug
c3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNj
cmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdFN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydDo6c2V0
TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKToKKyAgICAgICAgKiBXZWJL
aXRTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5oOgorICAgICAgICAoRHVtcFJlbmRlclRy
ZWVTdXBwb3J0KToKKwogMjAxMi0wOS0yMSAgTGlhbmdodWkgQ2hlbiAgPGxpYWNoZW5AcmltLmNv
bT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gUmVhbGx5IGZpeCBidWcgOTU0ODggdGhhdCB1c2Vy
IGNhbiBnZXQgdGhlIGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZSBkaWFsb2cgd2hpbGUgdGhlIG90
aGVyIHRhYiBoYXMgZm9jdXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggYzFhZmE1M2VkYzliNTBiNTIx
ZjlkMzBkYTI3YWZhYmY4OTQ0YTYyZi4uNTk1NmY3OTUzM2E3NTQ4MTI3MTRlY2VjZjFmNzIyNTFj
NGM0NTVmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA5LTIxICBC
ZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBGaXggR2Vv
bG9jYXRpb24gZXJyb3IgcmVwb3J0aW5nIGluIHRoZSB0ZXN0IHN1cHBvcnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3Mzg2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBpbmZvcm1hdGlv
biBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxlYXNlIGFkZCBw
ZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwOgorICAgICAgICAoRHVtcFJl
bmRlclRyZWVTdXBwb3J0R3RrOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxl
RXJyb3IpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0
ay5oOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrKToKKwogMjAxMi0wOS0xOSAg
RGFuaWxvIENlc2FyIExlbWVzIGRlIFBhdWxhICA8ZGFuaWxvLmNlc2FyQGNvbGxhYm9yYS5jby51
az4KIAogICAgICAgICBbZ3RrXSBhZGQgZW5hYmxlLW1lZGlhLXN0cmVhbSB0byB3ZWJzZXR0aW5n
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCmluZGV4IDFhMWZjMTU5MTYxODg4NGViNTI5YWM5MTE0OWE5Nzk0OGY5
OTBiNDUuLmY3OThjMjdhNWE2MDI3Mzk1N2IwYzI5MzNmNmMzMWU5MTI1MjM5ZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wOS0yMSAgQmVuamFtaW4gUG91bGFpbiAg
PGJlbmphbWluQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRml4IEdlb2xvY2F0aW9uIGVycm9yIHJl
cG9ydGluZyBpbiB0aGUgdGVzdCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NzM4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2YgdGhlIGNoYW5nZSBz
dWNoIGFzIGFwcHJvYWNoLCByYXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1bmN0aW9uIGRlc2Ny
aXB0aW9ucyBiZWxvdyAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgor
ICAgICAgICAoLVtXZWJWaWV3IF9nZW9sb2NhdGlvbkRpZEZhaWxUb0ZpbmRQb3NpdGlvbldpdGhN
ZXNzYWdlOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld1ByaXZhdGUuaDoKKwogMjAxMi0w
OS0yMSAgQ2hyaXMgUm9nZXJzICA8Y3JvZ2Vyc0Bnb29nbGUuY29tPgogCiAgICAgICAgIEFkZCBX
ZWIgQXVkaW8gc3VwcG9ydCBmb3IgZGVwcmVjYXRlZC9sZWdhY3kgQVBJcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpp
bmRleCA1YWE2MmYxNzkxNDAwZTcyN2NmOGFiMDQwZmEwMDc5ZGI4MjhiZTNmLi5hMmQwYzYxNzU1
N2U0NGIzZTIxMzA1YmE4MjA0ZmQzYmNhZWRlZjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDEyLTA5LTIxICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBGaXggR2VvbG9jYXRpb24gZXJyb3IgcmVwb3J0aW5nIGluIHRoZSB0ZXN0
IHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk3Mzg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJh
dGlvbmFsZS4gUGxlYXNlIGFkZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5j
cHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0TW9ja0dlb2xvY2F0aW9u
UG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdC5oOgorCiAyMDEyLTA5LTIwICBDc2FiYSBPc3p0cm9nb27DoWMg
IDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBFbmFibGUgQ1NTIHJlZ2lvbnMgYnkg
ZGVmYXVsdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBkZmY4MzBkNTAzODQ5MmZkMmRlNDEwY2Yy
NWY4MzI5MzcyMjAxMDM4Li44MTUzMDM5Zjk1Yzk5ZGM3ZDgyMDMyYzlkNmVhYzZlNmMzMTAyMGRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMjE5MSw3ICsyMTkxLDYgQEAgX19aTjdXZWJDb3Jl
MTFHZW9sb2NhdGlvbjEyc2V0SXNBbGxvd2VkRWIKIF9fWk43V2ViQ29yZTExR2VvbG9jYXRpb25E
MUV2CiBfX1pOSzdXZWJDb3JlMTFHZW9sb2NhdGlvbjVmcmFtZUV2CiBfX1pON1dlYkNvcmUyMHBy
b3ZpZGVHZW9sb2NhdGlvblRvRVBOU180UGFnZUVQTlNfMTdHZW9sb2NhdGlvbkNsaWVudEUKLV9f
Wk43V2ViQ29yZTIxR2VvbG9jYXRpb25DbGllbnRNb2NrMTNzZXRQZXJtaXNzaW9uRWIKIF9fWk43
V2ViQ29yZTIxR2VvbG9jYXRpb25Db250cm9sbGVyMTNlcnJvck9jY3VycmVkRVBOU18xNkdlb2xv
Y2F0aW9uRXJyb3JFCiBfX1pON1dlYkNvcmUyMUdlb2xvY2F0aW9uQ29udHJvbGxlcjE0c3VwcGxl
bWVudE5hbWVFdgogX19aTjdXZWJDb3JlMjFHZW9sb2NhdGlvbkNvbnRyb2xsZXIxNXBvc2l0aW9u
Q2hhbmdlZEVQTlNfMTlHZW9sb2NhdGlvblBvc2l0aW9uRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDdhMjVlYWE4ODE0YWQ0ODU3
MzMxYTZjNTNhNzY2MzY2Y2QzYzIyZGMuLmQ5NTQxZThiNWQ4NjI1Yzk4Mjk4ODI0YzFiNjZjNTFk
ZDM4OTc4NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTc2LDggKzc2LDYgQEAKIAkJMDMzQTZBN0UxNDdFMDdFNzAwNTA5QjM2
IC8qIEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMzNBNkE3RDE0N0UwN0U3MDA1MDlCMzYgLyogSFRNTFBy
b3BlcnRpZXNDb2xsZWN0aW9uLmNwcCAqLzsgfTsKIAkJMDMzQTZBODExNDdFMDg4NjAwNTA5QjM2
IC8qIEpTSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAzM0E2QTgwMTQ3RTA4ODYwMDUwOUIzNiAvKiBKU0hU
TUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5jcHAgKi87IH07CiAJCTAzM0E2QTgzMTQ3RTA4QTYwMDUw
OUIzNiAvKiBKU0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDMzQTZBODIxNDdFMDhBNjAwNTA5QjM2IC8qIEpT
SFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmggKi87IH07Ci0JCTA1MkJGQ0U5MTI4QUJGMTUwMEZE
MzM4RCAvKiBHZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDUyQkZDRTgxMjhBQkYxNTAwRkQzMzhEIC8qIEdlb2xv
Y2F0aW9uQ2xpZW50TW9jay5jcHAgKi87IH07Ci0JCTA1MkJGQ0VCMTI4QUJGMjEwMEZEMzM4RCAv
KiBHZW9sb2NhdGlvbkNsaWVudE1vY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA1MkJGQ0VBMTI4QUJGMjEwMEZEMzM4RCAvKiBHZW9sb2NhdGlvbkNs
aWVudE1vY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwNTYyRjk0NjE1NzNFQ0VCMDAzMUNBMTYgLyogV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNTYy
Rjk0NDE1NzNFQ0VCMDAzMUNBMTYgLyogV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5jcHAgKi87
IH07CiAJCTA1NjJGOTQ3MTU3M0VDRUIwMDMxQ0ExNiAvKiBXZWJLaXRDU1NTVkdEb2N1bWVudFZh
bHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNTYy
Rjk0NTE1NzNFQ0VCMDAzMUNBMTYgLyogV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5oICovOyB9
OwogCQkwNTYyRjk2MTE1NzNGODhGMDAzMUNBMTYgLyogUGxhdGZvcm1MYXllci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDU2MkY5NjAxNTczRjg4RjAw
MzFDQTE2IC8qIFBsYXRmb3JtTGF5ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtNzA4OCw4ICs3MDg2LDYgQEAKIAkJMDMzQTZBN0YxNDdFMDdG
OTAwNTA5QjM2IC8qIEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDMzQTZBODAxNDdFMDg4NjAwNTA5QjM2IC8qIEpTSFRNTFByb3BlcnRpZXND
b2xsZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRN
TFByb3BlcnRpZXNDb2xsZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDMzQTZBODIxNDdFMDhBNjAwNTA5QjM2IC8qIEpTSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSFRNTFByb3BlcnRpZXNDb2xsZWN0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA1MkJGQ0U4MTI4QUJGMTUwMEZE
MzM4RCAvKiBHZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcDsgcGF0aCA9IG1vY2svR2Vv
bG9jYXRpb25DbGllbnRNb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDUy
QkZDRUExMjhBQkYyMTAwRkQzMzhEIC8qIEdlb2xvY2F0aW9uQ2xpZW50TW9jay5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBHZW9sb2NhdGlvbkNsaWVudE1vY2suaDsgcGF0aCA9
IG1vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA1NjJGOTQ0MTU3M0VDRUIwMDMxQ0ExNiAvKiBXZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYktpdENTU1NWR0Rv
Y3VtZW50VmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNTYyRjk0NTE1
NzNFQ0VCMDAzMUNBMTYgLyogV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA1NjJGOTYwMTU3M0Y4OEYwMDMxQ0ExNiAvKiBQbGF0
Zm9ybUxheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtTGF5
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NDYxLDggKzE1NDU3LDYgQEAK
IAkJCWNoaWxkcmVuID0gKAogCQkJCTU5MzA5QTEwMTFGNEFFNTgwMDI1MDYwMyAvKiBEZXZpY2VP
cmllbnRhdGlvbkNsaWVudE1vY2suY3BwICovLAogCQkJCTU5MzA5QTEyMTFGNEFFNkEwMDI1MDYw
MyAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCAqLywKLQkJCQkwNTJCRkNFODEyOEFC
RjE1MDBGRDMzOEQgLyogR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcCAqLywKLQkJCQkwNTJCRkNF
QTEyOEFCRjIxMDBGRDMzOEQgLyogR2VvbG9jYXRpb25DbGllbnRNb2NrLmggKi8sCiAJCQkJMEZF
NzE0MDMxNDIxNzBCODAwREIzM0JBIC8qIFNjcm9sbGJhclRoZW1lTW9jay5jcHAgKi8sCiAJCQkJ
MEZFNzE0MDQxNDIxNzBCODAwREIzM0JBIC8qIFNjcm9sbGJhclRoZW1lTW9jay5oICovLAogCQkJ
KTsKQEAgLTIzNTIxLDcgKzIzNTE1LDYgQEAKIAkJCQkwNzIwQjBBMTE0RDMzMjM1MDA2NDI5NTUg
LyogR2VuZXJpY0V2ZW50UXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NDZBRjI0MTRGNERE
RTYwMDNFN0E3MCAvKiBHZW9sb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1NkNCMjMx
MEQ1QUM4MDAwQTc3QzY0IC8qIEdlb2xvY2F0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLywKLQkJ
CQkwNTJCRkNFQjEyOEFCRjIxMDBGRDMzOEQgLyogR2VvbG9jYXRpb25DbGllbnRNb2NrLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5NzQ2QUYyNzE0RjREREU2MDAzRTdBNzAgLyogR2VvbG9jYXRpb25D
b250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzQ2QUYyODE0RjREREU2MDAzRTdBNzAg
LyogR2VvbG9jYXRpb25FcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0NkFGMjkxNEY0RERF
NjAwM0U3QTcwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjY3
NTMsNyArMjY3NDYsNiBAQAogCQkJCTJENDgxRjAzMTQ2QjVDNjUwMEFBNzgzNCAvKiBHZW5lcmF0
b3JHZW5lcmF0ZWRJbWFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzIwQjBBMDE0RDMzMjM1
MDA2NDI5NTUgLyogR2VuZXJpY0V2ZW50UXVldWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc0
NkFGMjMxNEY0RERFNjAwM0U3QTcwIC8qIEdlb2xvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCTA1MkJGQ0U5MTI4QUJGMTUwMEZEMzM4RCAvKiBHZW9sb2NhdGlvbkNsaWVudE1vY2suY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTc0NkFGMjYxNEY0RERFNjAwM0U3QTcwIC8qIEdlb2xvY2F0
aW9uQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzIwQjBBMDE0RDMzMjM1MDA2
NDI5NTYgLyogR2VzdHVyZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyQzNEQTZEMEQw
MDZDRDYwMEVGNkYyNiAvKiBHbHlwaFBhZ2VUcmVlTm9kZS5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRN
b2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRN
b2NrLmNwcAppbmRleCAyNzZiNGEzNDMwOWM5Mjk4YThmODViZDhkNjY5ZGIxMTlkYzkxNDE4Li4z
ODNiZjk4ZTMxYzI4NTNlMzcwOGI2YjYxNmNjYWE0MWJlNmRjZDUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwCkBA
IC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTQx
LDYgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBHZW9sb2NhdGlvbkNsaWVudE1vY2s6
Okdlb2xvY2F0aW9uQ2xpZW50TW9jaygpCiAgICAgOiBtX2NvbnRyb2xsZXIoMCkKKyAgICAsIG1f
aGFzRXJyb3IoZmFsc2UpCiAgICAgLCBtX2NvbnRyb2xsZXJUaW1lcih0aGlzLCAmR2VvbG9jYXRp
b25DbGllbnRNb2NrOjpjb250cm9sbGVyVGltZXJGaXJlZCkKICAgICAsIG1fcGVybWlzc2lvblRp
bWVyKHRoaXMsICZHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnBlcm1pc3Npb25UaW1lckZpcmVkKQog
ICAgICwgbV9pc0FjdGl2ZShmYWxzZSkKQEAgLTYyLDE0ICs2NCwxNSBAQCB2b2lkIEdlb2xvY2F0
aW9uQ2xpZW50TW9jazo6c2V0Q29udHJvbGxlcihHZW9sb2NhdGlvbkNvbnRyb2xsZXIgKmNvbnRy
b2xsZXIpCiB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0UG9zaXRpb24oUGFzc1JlZlB0
cjxHZW9sb2NhdGlvblBvc2l0aW9uPiBwb3NpdGlvbikKIHsKICAgICBtX2xhc3RQb3NpdGlvbiA9
IHBvc2l0aW9uOwotICAgIG1fbGFzdEVycm9yID0gMDsKKyAgICBjbGVhckVycm9yKCk7CiAgICAg
YXN5bmNVcGRhdGVDb250cm9sbGVyKCk7CiB9CiAKLXZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2Nr
OjpzZXRFcnJvcihQYXNzUmVmUHRyPEdlb2xvY2F0aW9uRXJyb3I+IGVycm9yKQordm9pZCBHZW9s
b2NhdGlvbkNsaWVudE1vY2s6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVF
cnJvcihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKLSAgICBtX2xhc3RFcnJvciA9IGVy
cm9yOwotICAgIG1fbGFzdFBvc2l0aW9uID0gMDsKKyAgICBtX2hhc0Vycm9yID0gdHJ1ZTsKKyAg
ICBtX2Vycm9yTWVzc2FnZSA9IGVycm9yTWVzc2FnZTsKKyAgICBtX2xhc3RQb3NpdGlvbiA9IG51
bGxwdHI7CiAgICAgYXN5bmNVcGRhdGVDb250cm9sbGVyKCk7CiB9CiAKQEAgLTEyNSw3ICsxMjgs
NyBAQCB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6cGVybWlzc2lvblRpbWVyRmlyZWQoV2Vi
Q29yZTo6VGltZXI8R2VvbG9jYXRpb25DbGllbgogdm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6
OnJlc2V0KCkKIHsKICAgICBtX2xhc3RQb3NpdGlvbiA9IDA7Ci0gICAgbV9sYXN0RXJyb3IgPSAw
OworICAgIGNsZWFyRXJyb3IoKTsKICAgICBtX3Blcm1pc3Npb25TdGF0ZSA9IFBlcm1pc3Npb25T
dGF0ZVVuc2V0OwogfQogCkBAIC0xNzEsMTAgKzE3NCwxOSBAQCB2b2lkIEdlb2xvY2F0aW9uQ2xp
ZW50TW9jazo6Y29udHJvbGxlclRpbWVyRmlyZWQoVGltZXI8R2VvbG9jYXRpb25DbGllbnRNb2Nr
PiogdAogICAgIEFTU0VSVF9VTlVTRUQodGltZXIsIHRpbWVyID09ICZtX2NvbnRyb2xsZXJUaW1l
cik7CiAgICAgQVNTRVJUKG1fY29udHJvbGxlcik7CiAKLSAgICBpZiAobV9sYXN0UG9zaXRpb24u
Z2V0KCkpCisgICAgaWYgKG1fbGFzdFBvc2l0aW9uLmdldCgpKSB7CisgICAgICAgIEFTU0VSVCgh
bV9oYXNFcnJvcik7CiAgICAgICAgIG1fY29udHJvbGxlci0+cG9zaXRpb25DaGFuZ2VkKG1fbGFz
dFBvc2l0aW9uLmdldCgpKTsKLSAgICBlbHNlIGlmIChtX2xhc3RFcnJvci5nZXQoKSkKLSAgICAg
ICAgbV9jb250cm9sbGVyLT5lcnJvck9jY3VycmVkKG1fbGFzdEVycm9yLmdldCgpKTsKKyAgICB9
IGVsc2UgaWYgKG1faGFzRXJyb3IpIHsKKyAgICAgICAgUmVmUHRyPEdlb2xvY2F0aW9uRXJyb3I+
IGdlb2xvY2F0aW9FcnJvciA9IEdlb2xvY2F0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvbkVy
cm9yOjpQb3NpdGlvblVuYXZhaWxhYmxlLCBtX2Vycm9yTWVzc2FnZSk7CisgICAgICAgIG1fY29u
dHJvbGxlci0+ZXJyb3JPY2N1cnJlZChnZW9sb2NhdGlvRXJyb3IuZ2V0KCkpOworICAgIH0KK30K
Kwordm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6OmNsZWFyRXJyb3IoKQoreworICAgIG1faGFz
RXJyb3IgPSBmYWxzZTsKKyAgICBtX2Vycm9yTWVzc2FnZSA9IFN0cmluZygpOwogfQogCiB9IC8v
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9j
YXRpb25DbGllbnRNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0
aW9uQ2xpZW50TW9jay5oCmluZGV4IDhhYmQ1ZTk3MGU4YzA4OTMwZmExYTVhMzM3MjRmMzlhZDgw
ZjA1OGUuLjc5MjAxMzIwM2E1Yjk3MTRkZTEwOGRlNjE3ZGNhYWJiMDYxYjAwNzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2su
aApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBA
IC00Miw5ICs0Myw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR2VvbG9jYXRpb25D
b250cm9sbGVyOwogY2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlvbjsKLWNsYXNzIEdlb2xvY2F0aW9u
RXJyb3I7CiAKLS8vIFByb3ZpZGVzIGEgbW9jayBvYmplY3QgZm9yIHRoZSBnZW9sb2NhdGlvbiBj
bGllbnQKKy8vIEZJWE1FOiB0aGlzIHNob3VsZCBub3QgYmUgaW4gV2ViQ29yZS4gSXQgc2hvdWxk
IGJlIG1vdmVkIHRvIFdlYktpdC4KKy8vIFByb3ZpZGVzIGEgbW9jayBvYmplY3QgZm9yIHRoZSBn
ZW9sb2NhdGlvbiBjbGllbnQuCiBjbGFzcyBHZW9sb2NhdGlvbkNsaWVudE1vY2sgOiBwdWJsaWMg
R2VvbG9jYXRpb25DbGllbnQgewogcHVibGljOgogICAgIEdlb2xvY2F0aW9uQ2xpZW50TW9jaygp
OwpAQCAtNTMsOCArNTQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldCgpOwogICAgIHZvaWQg
c2V0Q29udHJvbGxlcihHZW9sb2NhdGlvbkNvbnRyb2xsZXIqKTsKIAotICAgIHZvaWQgc2V0RXJy
b3IoUGFzc1JlZlB0cjxHZW9sb2NhdGlvbkVycm9yPik7CiAgICAgdm9pZCBzZXRQb3NpdGlvbihQ
YXNzUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+KTsKKyAgICB2b2lkIHNldE1vY2tHZW9sb2Nh
dGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7
CiAgICAgdm9pZCBzZXRQZXJtaXNzaW9uKGJvb2wgYWxsb3dlZCk7CiAgICAgaW50IG51bWJlck9m
UGVuZGluZ1Blcm1pc3Npb25SZXF1ZXN0cygpIGNvbnN0OwogCkBAIC03NCw5ICs3NSwxMiBAQCBw
cml2YXRlOgogICAgIHZvaWQgYXN5bmNVcGRhdGVQZXJtaXNzaW9uKCk7CiAgICAgdm9pZCBwZXJt
aXNzaW9uVGltZXJGaXJlZChUaW1lcjxHZW9sb2NhdGlvbkNsaWVudE1vY2s+Kik7CiAKKyAgICB2
b2lkIGNsZWFyRXJyb3IoKTsKKwogICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlciogbV9jb250cm9s
bGVyOwogICAgIFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiBtX2xhc3RQb3NpdGlvbjsKLSAg
ICBSZWZQdHI8R2VvbG9jYXRpb25FcnJvcj4gbV9sYXN0RXJyb3I7CisgICAgYm9vbCBtX2hhc0Vy
cm9yOworICAgIFN0cmluZyBtX2Vycm9yTWVzc2FnZTsKICAgICBUaW1lcjxHZW9sb2NhdGlvbkNs
aWVudE1vY2s+IG1fY29udHJvbGxlclRpbWVyOwogICAgIFRpbWVyPEdlb2xvY2F0aW9uQ2xpZW50
TW9jaz4gbV9wZXJtaXNzaW9uVGltZXI7CiAgICAgYm9vbCBtX2lzQWN0aXZlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydC5jcHAKaW5kZXggZTRlNGVmMGMwN2Q2ZWEwYWMzNTVjZDkyNmQyYWY1
NDg3N2YxYzAzMy4uYTI2ZjAzZDQxY2Q3MmEzMWUxZDIxYmE1YTgwZThlOWZmMTU1N2EzNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtOTUsMjAgKzk2LDEwIEBAIHZvaWQgRHVtcFJl
bmRlclRyZWVTdXBwb3J0OjpyZXNldEdlb2xvY2F0aW9uTW9jayhXZWJQYWdlKiB3ZWJQYWdlKQog
ICAgIG1vY2tDbGllbnQtPnJlc2V0KCk7CiB9CiAKLXZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0
OjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihXZWJQYWdlKiB3ZWJQYWdlLCBpbnQgZXJyb3JDb2Rl
LCBjb25zdCBTdHJpbmcgbWVzc2FnZSkKK3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0OjpzZXRN
b2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoV2ViUGFnZSogd2ViUGFnZSwg
Y29uc3QgU3RyaW5nIG1lc3NhZ2UpCiB7Ci0gICAgR2VvbG9jYXRpb25FcnJvcjo6RXJyb3JDb2Rl
IGNvZGUgPSBHZW9sb2NhdGlvbkVycm9yOjpQb3NpdGlvblVuYXZhaWxhYmxlOwotICAgIHN3aXRj
aCAoZXJyb3JDb2RlKSB7Ci0gICAgY2FzZSBQb3NpdGlvbkVycm9yOjpQRVJNSVNTSU9OX0RFTklF
RDoKLSAgICAgICAgY29kZSA9IEdlb2xvY2F0aW9uRXJyb3I6OlBlcm1pc3Npb25EZW5pZWQ7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgUG9zaXRpb25FcnJvcjo6UE9TSVRJT05fVU5BVkFJTEFC
TEU6Ci0gICAgICAgIGNvZGUgPSBHZW9sb2NhdGlvbkVycm9yOjpQb3NpdGlvblVuYXZhaWxhYmxl
OwotICAgICAgICBicmVhazsKLSAgICB9Ci0KICAgICBHZW9sb2NhdGlvbkNsaWVudE1vY2sqIG1v
Y2tDbGllbnQgPSBzdGF0aWNfY2FzdDxHZW9sb2NhdGlvbkNsaWVudE1vY2sqPihHZW9sb2NhdGlv
bkNvbnRyb2xsZXI6OmZyb20oY29yZVBhZ2Uod2ViUGFnZSkpLT5jbGllbnQoKSk7Ci0gICAgbW9j
a0NsaWVudC0+c2V0RXJyb3IoR2VvbG9jYXRpb25FcnJvcjo6Y3JlYXRlKGNvZGUsIG1lc3NhZ2Up
KTsKKyAgICBtb2NrQ2xpZW50LT5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxl
RXJyb3IobWVzc2FnZSk7CiB9CiAKIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0OjpzZXRNb2Nr
R2VvbG9jYXRpb25QZXJtaXNzaW9uKFdlYlBhZ2UqIHdlYlBhZ2UsIGJvb2wgYWxsb3dlZCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydC5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0LmgKaW5kZXggNThmYzFiNTNlZGI1ZDhhYWMwZDM4MjYwNTY1
YWM0NzAyMWVhMjVlNi4uMDFmZTRmODNhN2YyZWFiMGUxMjk4NzBhOWRkY2YxODhlODgyMTg4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0LmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC01Miw3ICs1Myw3IEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyBpbnQgbnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMo
QmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlKik7CiAgICAgc3RhdGljIHZvaWQgcmVzZXRHZW9s
b2NhdGlvbk1vY2soQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlKik7Ci0gICAgc3RhdGljIHZv
aWQgc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlKiwg
aW50IGVycm9yQ29kZSwgY29uc3QgV1RGOjpTdHJpbmcgbWVzc2FnZSk7CisgICAgc3RhdGljIHZv
aWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKEJsYWNrQmVycnk6
OldlYktpdDo6V2ViUGFnZSosIGNvbnN0IFdURjo6U3RyaW5nIG1lc3NhZ2UpOwogICAgIHN0YXRp
YyB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBlcm1pc3Npb24oQmxhY2tCZXJyeTo6V2ViS2l0OjpX
ZWJQYWdlKiwgYm9vbCBhbGxvd2VkKTsKICAgICBzdGF0aWMgdm9pZCBzZXRNb2NrR2VvbG9jYXRp
b25Qb3NpdGlvbihCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2UqLCBkb3VibGUgbGF0aXR1ZGUs
IGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSk7CiAgICAgc3RhdGljIHZvaWQgc2Nh
bGVQYWdlQnkoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlKiwgZmxvYXQsIGZsb2F0LCBmbG9h
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAppbmRleCBlNWQ2OTg5ZDFkOTU3NTM3MjY2NDM4
NjI4NzAzMWJlMTgyYjkxOThkLi5kZTdmZDM5ZTc1ZWU1MGFmNGQyNzk3ZTk2YzFkOWQ3MGFkOTVk
OTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKQEAgLTMsNiArMyw3IEBACiAgKiAgQ29w
eXJpZ2h0IChDKSAyMDEwIEpvb25lIEh1ciA8am9vbmVAa2xkcC5vcmc+CiAgKiAgQ29weXJpZ2h0
IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0
IChDKSAyMDExIElnYWxpYSBTLkwuCisgKiAgQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTY1OCwyMyArNjU5
LDExIEBAIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRNb2NrR2VvbG9jYXRpb25Q
b3NpdGlvbihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3CiAjZW5kaWYKIH0KIAotdm9pZCBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRHdGs6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcsIGludCBlcnJvckNvZGUsIGNvbnN0IGdjaGFyKiBlcnJvck1lc3NhZ2UpCit2b2lk
IER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2
YWlsYWJsZUVycm9yKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyKiBlcnJvck1l
c3NhZ2UpCiB7CiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQogICAgIEdlb2xvY2F0aW9uQ2xpZW50
TW9jayogbW9jayA9IHN0YXRpY19jYXN0PEdlb2xvY2F0aW9uQ2xpZW50TW9jayo+KEdlb2xvY2F0
aW9uQ29udHJvbGxlcjo6ZnJvbShjb3JlKHdlYlZpZXcpKS0+Y2xpZW50KCkpOwotCi0gICAgR2Vv
bG9jYXRpb25FcnJvcjo6RXJyb3JDb2RlIGNvZGU7Ci0gICAgc3dpdGNoIChlcnJvckNvZGUpIHsK
LSAgICBjYXNlIFBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJT05fREVOSUVEOgotICAgICAgICBjb2Rl
ID0gR2VvbG9jYXRpb25FcnJvcjo6UGVybWlzc2lvbkRlbmllZDsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBQb3NpdGlvbkVycm9yOjpQT1NJVElPTl9VTkFWQUlMQUJMRToKLSAgICBkZWZhdWx0
OgotICAgICAgICBjb2RlID0gR2VvbG9jYXRpb25FcnJvcjo6UG9zaXRpb25VbmF2YWlsYWJsZTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgbW9jay0+c2V0RXJyb3IoR2VvbG9jYXRpb25F
cnJvcjo6Y3JlYXRlKGNvZGUsIGVycm9yTWVzc2FnZSkpOworICAgIG1vY2stPnNldE1vY2tHZW9s
b2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihlcnJvck1lc3NhZ2UpOwogI2VuZGlmCiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydEd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0R3RrLmgKaW5kZXggMzc1MDIwZDdiOTQxYTE3YWU0ODVhZTczNmVm
Njg0ODYwYzg5ODI0ZC4uODAxZGM1YjVhZWIwOWRiNDE5YzE2ZjY5NTA4NjQ3NzFlMTYyYjY3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0R3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0R3RrLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogIENvcHlyaWdo
dCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMTExLDcgKzExMiw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgdm9pZCByZXNldEdlb2xvY2F0aW9uQ2xpZW50TW9jayhXZWJLaXRXZWJWaWV3Kik7CiAg
ICAgc3RhdGljIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUGVybWlzc2lvbihXZWJLaXRXZWJWaWV3
KiwgYm9vbCBhbGxvd2VkKTsKICAgICBzdGF0aWMgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3Np
dGlvbihXZWJLaXRXZWJWaWV3KiwgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBk
b3VibGUgYWNjdXJhY3kpOwotICAgIHN0YXRpYyB2b2lkIHNldE1vY2tHZW9sb2NhdGlvbkVycm9y
KFdlYktpdFdlYlZpZXcqLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBnY2hhciogZXJyb3JNZXNzYWdl
KTsKKyAgICBzdGF0aWMgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxl
RXJyb3IoV2ViS2l0V2ViVmlldyosIGNvbnN0IGdjaGFyKiBlcnJvck1lc3NhZ2UpOwogICAgIHN0
YXRpYyBpbnQgbnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMoV2Vi
S2l0V2ViVmlldyopOwogCiAgICAgc3RhdGljIHZvaWQgc2V0UGFnZUNhY2hlU3VwcG9ydHNQbHVn
aW5zKFdlYktpdFdlYlZpZXcqLCBib29sIGVuYWJsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tCmluZGV4IGMxZjBhMmQ4OWQ0MmVkYjliZTg5ODMyYjMzNGNkYjk0MDQwYWE4NmIu
LjI1Yzc4MTI3ZGFjOWJlMWM5ZmI0ZDRiZmFmM2U3ODlhNTIwZTRjMjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTY1MTEsMTEgKzY1MTEsMTEgQEAgc3RhdGljIHZvaWQg
Z2xpYkNvbnRleHRJdGVyYXRpb25DYWxsYmFjayhDRlJ1bkxvb3BPYnNlcnZlclJlZiwgQ0ZSdW5M
b29wQWN0aXZpdHkKICNlbmRpZiAvLyBFTkFCTEUoR0VPTE9DQVRJT04pCiB9CiAKLS0gKHZvaWQp
X2dlb2xvY2F0aW9uRGlkRmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCistICh2b2lkKV9n
ZW9sb2NhdGlvbkRpZEZhaWxUb0ZpbmRQb3NpdGlvbldpdGhNZXNzYWdlOihOU1N0cmluZyAqKWVy
cm9yTWVzc2FnZQogewogI2lmIEVOQUJMRShHRU9MT0NBVElPTikKICAgICBpZiAoX3ByaXZhdGUg
JiYgX3ByaXZhdGUtPnBhZ2UpIHsKLSAgICAgICAgUmVmUHRyPEdlb2xvY2F0aW9uRXJyb3I+IGdl
b2xvY2F0aW9FcnJvciA9IEdlb2xvY2F0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvbkVycm9y
OjpQb3NpdGlvblVuYXZhaWxhYmxlLCBbZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25dKTsKKyAg
ICAgICAgUmVmUHRyPEdlb2xvY2F0aW9uRXJyb3I+IGdlb2xvY2F0aW9FcnJvciA9IEdlb2xvY2F0
aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvbkVycm9yOjpQb3NpdGlvblVuYXZhaWxhYmxlLCBl
cnJvck1lc3NhZ2UpOwogICAgICAgICBXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZy
b20oX3ByaXZhdGUtPnBhZ2UpLT5lcnJvck9jY3VycmVkKGdlb2xvY2F0aW9FcnJvci5nZXQoKSk7
CiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShHRU9MT0NBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAppbmRleCA4MjY0NzRlNDFiMzRjMjJiZmY1NDU2MGY2
YTBiMThmNzIzZjkwN2UzLi41MWU2YjJiNjc4OTNkYzliM2ViODVhODkxMzg0MjEzNWE0NWFlYjFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCkBAIC03Mjgs
NyArNzI4LDcgQEAgQ291bGQgYmUgd29ydGggYWRkaW5nIHRvIHRoZSBBUEkuCiAtIChpZDxXZWJH
ZW9sb2NhdGlvblByb3ZpZGVyPilfZ2VvbG9jYXRpb25Qcm92aWRlcjsKIAogLSAodm9pZClfZ2Vv
bG9jYXRpb25EaWRDaGFuZ2VQb3NpdGlvbjooV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiAqKXBvc2l0
aW9uOwotLSAodm9pZClfZ2VvbG9jYXRpb25EaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJy
b3I7CistICh2b2lkKV9nZW9sb2NhdGlvbkRpZEZhaWxUb0ZpbmRQb3NpdGlvbldpdGhNZXNzYWdl
OihOU1N0cmluZyAqKWVycm9yTWVzc2FnZTsKIEBlbmQKIAogQGludGVyZmFjZSBXZWJWaWV3IChX
ZWJWaWV3Tm90aWZpY2F0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAppbmRleCBkYzgyMzE2NWM3
MzFlYzA1MmU5ZTMyYTIyZTI4MTY4NzNkZjBlMmFjLi5mYTRhODljZGMxNDVlYjcyOTdlNWM1ZWVk
ZDAwZmY1YWIwZWJhOTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcApAQCAtMiw3ICsyLDcgQEAK
ICAgICBDb3B5cmlnaHQgKEMpIDIwMTAgUm9iZXJ0IEhvZ2FuIDxyb2JlcnRAcm9iZXJ0aG9nYW4u
bmV0PgogICAgIENvcHlyaWdodCAoQykgMjAwOCwyMDA5LDIwMTAgTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgICAgQ29weXJpZ2h0IChDKSAyMDA3IFN0YWlr
b3MgQ29tcHV0aW5nIFNlcnZpY2VzIEluYy4KLSAgICBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUg
SW5jLgorICAgIENvcHlyaWdodCAoQykgMjAwNywgMjAxMiBBcHBsZSBJbmMuCiAKICAgICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTc1MywyMyArNzUzLDExIEBAIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQ6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKFFXZWJQYWdlKiBwYWdlLCBkb3VibGUKICNl
bmRpZgogfQogCi12b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRNb2NrR2VvbG9jYXRp
b25FcnJvcihRV2ViUGFnZSogcGFnZSwgaW50IGVycm9yQ29kZSwgY29uc3QgUVN0cmluZyYgbWVz
c2FnZSkKK3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldE1vY2tHZW9sb2NhdGlvblBv
c2l0aW9uVW5hdmFpbGFibGVFcnJvcihRV2ViUGFnZSogcGFnZSwgY29uc3QgUVN0cmluZyYgbWVz
c2FnZSkKIHsKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCi0gICAgUGFnZSogY29yZVBhZ2UgPSBR
V2ViUGFnZVByaXZhdGU6OmNvcmUocGFnZSk7Ci0KLSAgICBHZW9sb2NhdGlvbkVycm9yOjpFcnJv
ckNvZGUgY29kZSA9IEdlb2xvY2F0aW9uRXJyb3I6OlBvc2l0aW9uVW5hdmFpbGFibGU7Ci0gICAg
c3dpdGNoIChlcnJvckNvZGUpIHsKLSAgICBjYXNlIFBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJT05f
REVOSUVEOgotICAgICAgICBjb2RlID0gR2VvbG9jYXRpb25FcnJvcjo6UGVybWlzc2lvbkRlbmll
ZDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQb3NpdGlvbkVycm9yOjpQT1NJVElPTl9VTkFW
QUlMQUJMRToKLSAgICAgICAgY29kZSA9IEdlb2xvY2F0aW9uRXJyb3I6OlBvc2l0aW9uVW5hdmFp
bGFibGU7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQogICAgIEdlb2xvY2F0aW9uQ2xpZW50TW9j
ayogbW9ja0NsaWVudCA9IHN0YXRpY19jYXN0PEdlb2xvY2F0aW9uQ2xpZW50TW9jayo+KEdlb2xv
Y2F0aW9uQ29udHJvbGxlcjo6ZnJvbShjb3JlUGFnZSktPmNsaWVudCgpKTsKLSAgICBtb2NrQ2xp
ZW50LT5zZXRFcnJvcihHZW9sb2NhdGlvbkVycm9yOjpjcmVhdGUoY29kZSwgbWVzc2FnZSkpOwor
ICAgIG1vY2tDbGllbnQtPnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJv
cihtZXNzYWdlKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmggYi9Tb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgKaW5kZXggODYyMjEzNjU3
OThmMTBhMzA2Y2RjZTg3ZTIyNDczMDExZTdmOWRlZi4uY2VmYjlkMWM4NzQ1NjVjN2ZmMDBkYjJl
ZWEwMzQyMzNmYjYxZGYxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaApAQCAtMiw3ICsyLDcgQEAKICAg
ICBDb3B5cmlnaHQgKEMpIDIwMTAgUm9iZXJ0IEhvZ2FuIDxyb2JlcnRAcm9iZXJ0aG9nYW4ubmV0
PgogICAgIENvcHlyaWdodCAoQykgMjAwOCwyMDA5LDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgICAgQ29weXJpZ2h0IChDKSAyMDA3IFN0YWlrb3Mg
Q29tcHV0aW5nIFNlcnZpY2VzIEluYy4KLSAgICBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5j
LgorICAgIENvcHlyaWdodCAoQykgMjAwNywgMjAxMiBBcHBsZSBJbmMuCiAKICAgICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
ICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKQEAgLTE0MSw3ICsxNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgcmVzZXRH
ZW9sb2NhdGlvbk1vY2soUVdlYlBhZ2UqKTsKICAgICBzdGF0aWMgdm9pZCBzZXRNb2NrR2VvbG9j
YXRpb25QZXJtaXNzaW9uKFFXZWJQYWdlKiwgYm9vbCBhbGxvd2VkKTsKICAgICBzdGF0aWMgdm9p
ZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihRV2ViUGFnZSosIGRvdWJsZSBsYXRpdHVkZSwg
ZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KTsKLSAgICBzdGF0aWMgdm9pZCBzZXRN
b2NrR2VvbG9jYXRpb25FcnJvcihRV2ViUGFnZSosIGludCBlcnJvckNvZGUsIGNvbnN0IFFTdHJp
bmcmIG1lc3NhZ2UpOworICAgIHN0YXRpYyB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9u
VW5hdmFpbGFibGVFcnJvcihRV2ViUGFnZSosIGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2UpOwogICAg
IHN0YXRpYyBpbnQgbnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMo
UVdlYlBhZ2UqKTsKIAogICAgIHN0YXRpYyBpbnQgd29ya2VyVGhyZWFkQ291bnQoKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhMDMyMWI1Y2Iw
M2E3MGU3OGY5ZjQ5OWI0MjU1ZTA2Yzk2YTFkMmJhLi40NjZhNWM2ZjM0MmM4MDA4NzgzZmRkODhm
MGE5YjJiMGNhOTQ2OTBmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTItMDktMjEgIEJlbmphbWluIFBvdWxhaW4g
IDxiZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIEZpeCBHZW9sb2NhdGlvbiBlcnJvciBy
ZXBvcnRpbmcgaW4gdGhlIHRlc3Qgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTczODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ug
c3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNj
cmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3RS
dW5uZXIuY3BwOgorICAgICAgICAoc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJs
ZUVycm9yQ2FsbGJhY2spOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c3RhdGljRnVuY3Rpb25zKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmg6CisgICAgICAgIChUZXN0UnVu
bmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1Rlc3RSdW5uZXJCbGFj
a0JlcnJ5LmNwcDoKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0
aW9uVW5hdmFpbGFibGVFcnJvcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
RFJUVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChEUlRUZXN0UnVubmVyOjpEUlRUZXN0UnVubmVy
KToKKyAgICAgICAgKERSVFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5h
dmFpbGFibGVFcnJvcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVz
dFJ1bm5lci5oOgorICAgICAgICAoRFJUVGVzdFJ1bm5lcik6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwuY3BwOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0TW9j
a0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHA6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRN
b2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IpOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL21hYy9Nb2NrR2VvbG9jYXRpb25Qcm92aWRlci5oOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL21hYy9Nb2NrR2VvbG9jYXRpb25Qcm92aWRlci5tbToKKyAgICAgICAgKC1bTW9j
a0dlb2xvY2F0aW9uUHJvdmlkZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtNb2NrR2VvbG9jYXRp
b25Qcm92aWRlciByZXNldEVycm9yXSk6CisgICAgICAgICgtW01vY2tHZW9sb2NhdGlvblByb3Zp
ZGVyIHNldFBvc2l0aW9uOl0pOgorICAgICAgICAoLVtNb2NrR2VvbG9jYXRpb25Qcm92aWRlciBz
ZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3JXaXRoTWVzc2FnZTpdKToK
KyAgICAgICAgKC1bTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIgbGFzdFBvc2l0aW9uXSk6CisgICAg
ICAgICgtW01vY2tHZW9sb2NhdGlvblByb3ZpZGVyIHRpbWVyRmlyZWRdKToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbToKKyAgICAgICAgKFRlc3RSdW5uZXI6
OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcik6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmNwcDoKKyAgICAgICAgKFRlc3RSdW5uZXI6
OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcik6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0Lmg6CisgICAgICAgIChUZXN0UnVubmVyKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHA6CisgICAgICAg
IChUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3Ip
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3d4L1Rlc3RSdW5uZXJXeC5jcHA6CisgICAgICAg
IChUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3Ip
OgorCiAyMDEyLTA5LTIxICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIHdlYmtpdHB5OiBkcm9wIHN1cHBvcnQgZm9yIG9sZCBUZXN0RXhwZWN0YXRpb25zIHN5
bnRheApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAppbmRleCAxZDAwYzUwYTM1YTM3ZWMw
ZmFkYzE4YWQ4NGUzMGRiNzE4YzhhMGQ0Li45ZjdhN2MxYmVjYTBhYmE4NDM2OWU5N2ZlZTkxZWVj
MmRjMjZjZDU3IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNw
cAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5
LCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAxMCBKb29uZSBIdXIgPGpvb25lQGtsZHAub3JnPgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApA
QCAtMTA5NSwxNyArMTA5NSwxNiBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRNb2NrR2VvbG9jYXRp
b25Qb3NpdGlvbkNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iagogICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAotc3RhdGljIEpTVmFsdWVSZWYg
c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3JDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNP
YmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVu
dENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRp
b24pCitzdGF0aWMgSlNWYWx1ZVJlZiBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxh
YmxlRXJyb3JDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rp
b24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBK
U1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7Ci0gICAgaWYg
KGFyZ3VtZW50Q291bnQgPCAyKQorICAgIGlmIChhcmd1bWVudENvdW50ICE9IDEpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIAotICAgIGludCBjb2RlID0g
SlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgTlVMTCk7Ci0gICAgSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IG1lc3NhZ2UoQWRvcHQsIEpTVmFsdWVUb1N0cmluZ0NvcHkoY29u
dGV4dCwgYXJndW1lbnRzWzFdLCBleGNlcHRpb24pKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gbWVzc2FnZShBZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBhcmd1bWVu
dHNbMF0sIGV4Y2VwdGlvbikpOwogICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7CiAKICAgICBUZXN0
UnVubmVyKiBjb250cm9sbGVyID0gcmVpbnRlcnByZXRfY2FzdDxUZXN0UnVubmVyKj4oSlNPYmpl
Y3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKLSAgICBjb250cm9sbGVyLT5zZXRNb2NrR2VvbG9j
YXRpb25FcnJvcihjb2RlLCBtZXNzYWdlLmdldCgpKTsKKyAgICBjb250cm9sbGVyLT5zZXRNb2Nr
R2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IobWVzc2FnZS5nZXQoKSk7CiAKICAg
ICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CkBAIC0yMjY2LDcgKzIy
NjUsNyBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBUZXN0UnVubmVyOjpzdGF0aWNGdW5jdGlvbnMoKQog
ICAgICAgICB7ICJzZXRNYWluRnJhbWVJc0ZpcnN0UmVzcG9uZGVyIiwgc2V0TWFpbkZyYW1lSXNG
aXJzdFJlc3BvbmRlckNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldE1pbmltdW1UaW1l
ckludGVydmFsIiwgc2V0TWluaW11bVRpbWVySW50ZXJ2YWxDYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAg
ICAgICB7ICJzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24iLCBzZXRNb2NrRGV2aWNlT3JpZW50YXRp
b25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAotICAgICAgICB7ICJzZXRNb2NrR2VvbG9jYXRpb25FcnJvciIs
IHNldE1vY2tHZW9sb2NhdGlvbkVycm9yQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAic2V0
TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yIiwgc2V0TW9ja0dlb2xvY2F0
aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAi
c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24iLCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbkNh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdCIsIGFk
ZE1vY2tTcGVlY2hJbnB1dFJlc3VsdENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldE1v
Y2tTcGVlY2hJbnB1dER1bXBSZWN0Iiwgc2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3RDYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5o
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oCmluZGV4IDliY2M5NWJjOTJkMzI5
NjFlNTFjNGEzMzc5YjM3ODM5NDIyN2YyNTkuLmVkZDBkZmRhNzViNjMxOTZhYTljMDJiZDFiYmQ3
ZGIxYTQ0NWI0MjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIu
aAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTEwMCw4ICsxMDAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBdXRvbWF0aWNM
aW5rRGV0ZWN0aW9uRW5hYmxlZChib29sIGZsYWcpOwogICAgIHZvaWQgc2V0TWFpbkZyYW1lSXNG
aXJzdFJlc3BvbmRlcihib29sIGZsYWcpOwogICAgIHZvaWQgc2V0TW9ja0RldmljZU9yaWVudGF0
aW9uKGJvb2wgY2FuUHJvdmlkZUFscGhhLCBkb3VibGUgYWxwaGEsIGJvb2wgY2FuUHJvdmlkZUJl
dGEsIGRvdWJsZSBiZXRhLCBib29sIGNhblByb3ZpZGVHYW1tYSwgZG91YmxlIGdhbW1hKTsKLSAg
ICB2b2lkIHNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGludCBjb2RlLCBKU1N0cmluZ1JlZiBtZXNz
YWdlKTsKICAgICB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVk
ZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KTsKKyAgICB2b2lkIHNldE1vY2tH
ZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihKU1N0cmluZ1JlZiBtZXNzYWdlKTsK
ICAgICB2b2lkIGFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1bHQsIGRv
dWJsZSBjb25maWRlbmNlLCBKU1N0cmluZ1JlZiBsYW5ndWFnZSk7CiAgICAgdm9pZCBzZXRNb2Nr
U3BlZWNoSW5wdXREdW1wUmVjdChib29sIGZsYWcpOwogICAgIHZvaWQgc2V0UGVyc2lzdGVudFVz
ZXJTdHlsZVNoZWV0TG9jYXRpb24oSlNTdHJpbmdSZWYgcGF0aCk7CmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1Rlc3RSdW5uZXJCbGFja0JlcnJ5LmNwcCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvVGVzdFJ1bm5lckJsYWNrQmVycnkuY3BwCmlu
ZGV4IDg5ODY5MDBjNmIzZTUzMjFlYjRjNmQwMzljYjQwZmRlODJjMzVkZWMuLjYyYmU1ZmUxODYx
YzI0YTY5ZTdkNTViOTU4N2RkNTVlMjBmNTk3ODcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2JsYWNrYmVycnkvVGVzdFJ1bm5lckJsYWNrQmVycnkuY3BwCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvVGVzdFJ1bm5lckJsYWNrQmVycnkuY3BwCkBAIC0xLDUg
KzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCwgMjAxMiBSZXNlYXJjaCBJ
biBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpA
QCAtNDQ5LDEwICs0NTAsMTAgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Q
b3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGQKICAgICBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnQ6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKEJsYWNrQmVycnk6Oldl
YktpdDo6RHVtcFJlbmRlclRyZWU6OmN1cnJlbnRJbnN0YW5jZSgpLT5wYWdlKCksIGxhdGl0dWRl
LCBsb25naXR1ZGUsIGFjY3VyYWN5KTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrR2Vv
bG9jYXRpb25FcnJvcihpbnQgY29kZSwgSlNTdHJpbmdSZWYgbWVzc2FnZSkKK3ZvaWQgVGVzdFJ1
bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKEpTU3RyaW5n
UmVmIG1lc3NhZ2UpCiB7CiAgICAgU3RyaW5nIG1lc3NhZ2VTdHIgPSBqc1N0cmluZ1JlZlRvV2Vi
Q29yZVN0cmluZyhtZXNzYWdlKTsKLSAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnQ6OnNldE1vY2tH
ZW9sb2NhdGlvbkVycm9yKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJlbmRlclRyZWU6OmN1cnJl
bnRJbnN0YW5jZSgpLT5wYWdlKCksIGNvZGUsIG1lc3NhZ2VTdHIpOworICAgIER1bXBSZW5kZXJU
cmVlU3VwcG9ydDo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKEJs
YWNrQmVycnk6OldlYktpdDo6RHVtcFJlbmRlclRyZWU6OmN1cnJlbnRJbnN0YW5jZSgpLT5wYWdl
KCksIG1lc3NhZ2VTdHIpOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNob3dXZWJJbnNwZWN0b3Io
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5l
ci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmNwcApp
bmRleCAwZTVhOGIzMWJlN2JmYzg1YzcwYTM5MDkzYjZlMGYzMTdkZTM1ZDc5Li4wZDQwNTE3ZjU4
MjczODkwM2JkZDkzMjVjY2RhMWNiYzBkZjEyYWU1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmNwcApAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENv
cHlyaWdodCAoQykgMjAxMCBQYXdlbCBIYWpkYW4gKHBoYWpkYW4uanJAY2hyb21pdW0ub3JnKQor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTIwNiw3ICsyMDcsNyBAQCBEUlRU
ZXN0UnVubmVyOjpEUlRUZXN0UnVubmVyKFRlc3RTaGVsbCogc2hlbGwpCiAgICAgYmluZE1ldGhv
ZCgic2V0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZCIsICZEUlRUZXN0UnVubmVyOjpzZXRK
YXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKTsKICAgICBiaW5kTWV0aG9kKCJzZXRNaW5pbXVt
VGltZXJJbnRlcnZhbCIsICZEUlRUZXN0UnVubmVyOjpzZXRNaW5pbXVtVGltZXJJbnRlcnZhbCk7
CiAgICAgYmluZE1ldGhvZCgic2V0TW9ja0RldmljZU9yaWVudGF0aW9uIiwgJkRSVFRlc3RSdW5u
ZXI6OnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbik7Ci0gICAgYmluZE1ldGhvZCgic2V0TW9ja0dl
b2xvY2F0aW9uRXJyb3IiLCAmRFJUVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3Ip
OworICAgIGJpbmRNZXRob2QoInNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVF
cnJvciIsICZEUlRUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxh
YmxlRXJyb3IpOwogICAgIGJpbmRNZXRob2QoInNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uIiwg
JkRSVFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKTsKICAgICBiaW5kTWV0
aG9kKCJzZXRQYWdlVmlzaWJpbGl0eSIsICZEUlRUZXN0UnVubmVyOjpzZXRQYWdlVmlzaWJpbGl0
eSk7CiAgICAgYmluZE1ldGhvZCgic2V0UGx1Z2luc0VuYWJsZWQiLCAmRFJUVGVzdFJ1bm5lcjo6
c2V0UGx1Z2luc0VuYWJsZWQpOwpAQCAtMTgxNiwxNCArMTgxNywxNSBAQCB2b2lkIERSVFRlc3RS
dW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYg
YXJndW1lbnRzLAogICAgICAgICB3aW5kb3dMaXN0W2ldLT5nZW9sb2NhdGlvbkNsaWVudE1vY2so
KS0+c2V0UG9zaXRpb24oYXJndW1lbnRzWzBdLnRvRG91YmxlKCksIGFyZ3VtZW50c1sxXS50b0Rv
dWJsZSgpLCBhcmd1bWVudHNbMl0udG9Eb3VibGUoKSk7CiB9CiAKLXZvaWQgRFJUVGVzdFJ1bm5l
cjo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVu
dHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3ZvaWQgRFJUVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xv
Y2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJn
dW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgcmVzdWx0LT5zZXROdWxsKCk7Ci0g
ICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPCAyIHx8ICFhcmd1bWVudHNbMF0uaXNOdW1iZXIoKSB8
fCAhYXJndW1lbnRzWzFdLmlzU3RyaW5nKCkpCisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgIT0g
MSB8fCAhYXJndW1lbnRzWzFdLmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybjsKICAgICBWZWN0
b3I8V2ViVmlld0hvc3QqPiB3aW5kb3dMaXN0ID0gbV9zaGVsbC0+d2luZG93TGlzdCgpOworICAg
IC8vIEZJWE1FOiBCZW5qYW1pbgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2luZG93TGlz
dC5zaXplKCk7IGkrKykKLSAgICAgICAgd2luZG93TGlzdFtpXS0+Z2VvbG9jYXRpb25DbGllbnRN
b2NrKCktPnNldEVycm9yKGFyZ3VtZW50c1swXS50b0ludDMyKCksIGNwcFZhcmlhbnRUb1dlYlN0
cmluZyhhcmd1bWVudHNbMV0pKTsKKyAgICAgICAgd2luZG93TGlzdFtpXS0+Z2VvbG9jYXRpb25D
bGllbnRNb2NrKCktPnNldEVycm9yKGNwcFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVudHNbMF0p
KTsKIH0KIAogdm9pZCBEUlRUZXN0UnVubmVyOjphYm9ydE1vZGFsKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmggYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmgKaW5kZXggYjZjOTA3ZTYyNzE4Y2QyMjc1ODQ3
ZDM5ZGMzZjhlOGQ0ODQzNjdjMy4uNTU5NDBhY2QxZjQ3YmIyNmFmMjlkZDViYjZkNTMwZDJhZWUw
NjZkMiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1
bm5lci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIu
aApAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBQYXdlbCBIYWpkYW4g
KHBoYWpkYW4uanJAY2hyb21pdW0ub3JnKQorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKQEAgLTMzNyw3ICszMzgsNyBAQCBwdWJsaWM6CiAgICAgLy8gR2VvbG9jYXRpb24gcmVsYXRl
ZCBmdW5jdGlvbnMuCiAgICAgdm9pZCBzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9u
UG9zaXRpb24oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwotICAgIHZvaWQg
c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFu
dCopOworICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9y
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAogICAgIC8vIEVtcHR5IHN0
dWIgbWV0aG9kIHRvIGtlZXAgcGFyaXR5IHdpdGggb2JqZWN0IG1vZGVsIGV4cG9zZWQgYnkgZ2xv
YmFsIERSVFRlc3RSdW5uZXIuCiAgICAgdm9pZCBhYm9ydE1vZGFsKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYsIENwcFZhcmlhbnQqKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Vm
bC9UZXN0UnVubmVyRWZsLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9UZXN0UnVubmVy
RWZsLmNwcAppbmRleCAyZTM4MGM1NjkzMWViOGZmZGNmY2VjM2EyNjA4MDlhZjE0YTBjYmZmLi45
Nzk3YTMxNTJlODk0MDVlZWE2NGNiNzkzYjk0MzBkNjY2ZTA5MjY5IDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHAKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDcsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDA3IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDggTnVhbnRpIEx0ZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSBKYW4gTWlj
aGFlbCBBbG9uem8gPGptYWxvbnpvQGdtYWlsLmNvbT4KQEAgLTM3OSw3ICszNzksNyBAQCB2b2lk
IFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSwgZG91YmxlLCBk
b3VibGUpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRN
b2NrR2VvbG9jYXRpb25FcnJvcihpbnQsIEpTU3RyaW5nUmVmKQordm9pZCBUZXN0UnVubmVyOjpz
ZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoSlNTdHJpbmdSZWYpCiB7
CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgR2VvbG9jYXRpb24gbGF5b3V0IHRlc3RzLgog
ICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjgyNjQu
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHAg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHAKaW5kZXggMDkyOWNh
ZGY2MjE3M2E5Y2U5YzljOTMxZWI0NzI2ZDhjMGRmMWFhNi4uZGI5NjI4OTI3MGI3NzQ4MTI4MzVj
MGY4MDQ5YjE0NjkzNGZiYzAyZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3Rr
L1Rlc3RSdW5uZXJHdGsuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9UZXN0UnVu
bmVyR3RrLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNyBF
cmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA4IE51YW50
aSBMdGQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSmFuIE1pY2hhZWwgQWxvbnpvIDxqbWFsb256
b0BnbWFpbC5jb20+CkBAIC00NDcsNyArNDQ3LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRNb2Nr
R2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGQK
ICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9u
KHZpZXcsIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5KTsKIH0KIAotdm9pZCBUZXN0UnVu
bmVyOjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihpbnQgY29kZSwgSlNTdHJpbmdSZWYgbWVzc2Fn
ZSkKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJs
ZUVycm9yKEpTU3RyaW5nUmVmIG1lc3NhZ2UpCiB7CiAgICAgV2ViS2l0V2ViVmlldyogdmlldyA9
IFdFQktJVF9XRUJfVklFVyhnX3NsaXN0X250aF9kYXRhKHdlYlZpZXdMaXN0LCAwKSk7CiAgICAg
aWYgKCF2aWV3KQpAQCAtNDU1LDcgKzQ1NSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0dl
b2xvY2F0aW9uRXJyb3IoaW50IGNvZGUsIEpTU3RyaW5nUmVmIG1lc3NhZ2UpCiAgICAgQVNTRVJU
KHZpZXcpOwogCiAgICAgR093blB0cjxnY2hhcj4gY01lc3NhZ2UoSlNTdHJpbmdDb3B5VVRGOENT
dHJpbmcobWVzc2FnZSkpOwotICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0TW9ja0dl
b2xvY2F0aW9uRXJyb3IodmlldywgY29kZSwgY01lc3NhZ2UuZ2V0KCkpOworICAgIER1bXBSZW5k
ZXJUcmVlU3VwcG9ydEd0azo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVy
cm9yKHZpZXcsIGNNZXNzYWdlLmdldCgpKTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpzZXRHZW9s
b2NhdGlvblBlcm1pc3Npb24oYm9vbCBhbGxvdykKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9Nb2NrR2VvbG9jYXRpb25Qcm92aWRlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL01vY2tHZW9sb2NhdGlvblByb3ZpZGVyLmgKaW5kZXggMzExZDFlOTE4NGIzNmIzODJl
NTEzYjc4YWQ4YjMzNjFkMWQ1OTA1Ny4uZDdhYzg5MWRiNWZiOTAxZGIyYmNiZTgzYWY4YTg5Yzc5
OGU1ZjE2MiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL01vY2tHZW9sb2Nh
dGlvblByb3ZpZGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL01vY2tHZW9sb2Nh
dGlvblByb3ZpZGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwg
MjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI4LDEwICsyOCwxMiBAQAogCiAjaW1wb3J0IDxXZWJLaXQvV2ViVmll
d1ByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9IYXNoU2V0Lmg+CisjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CiAKIEBpbnRlcmZhY2UgTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIgOiBOU09iamVjdDxX
ZWJHZW9sb2NhdGlvblByb3ZpZGVyPiB7Ci0gICAgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiAqX2xh
c3RQb3NpdGlvbjsKLSAgICBOU0Vycm9yICpfZXJyb3I7CisgICAgUmV0YWluUHRyPFdlYkdlb2xv
Y2F0aW9uUG9zaXRpb24+IF9sYXN0UG9zaXRpb247CisgICAgQk9PTCBfaGFzRXJyb3I7CisgICAg
UmV0YWluUHRyPE5TU3RyaW5nPiBfZXJyb3JNZXNzYWdlOwogICAgIE5TVGltZXIgKl90aW1lcjsK
ICAgICBIYXNoU2V0PFdlYlZpZXcgKj4gX3JlZ2lzdGVyZWRWaWV3czsKIH0KQEAgLTM5LDcgKzQx
LDcgQEAKICsgKE1vY2tHZW9sb2NhdGlvblByb3ZpZGVyICopc2hhcmVkOwogCiAtICh2b2lkKXNl
dFBvc2l0aW9uOihXZWJHZW9sb2NhdGlvblBvc2l0aW9uICopcG9zaXRpb247Ci0tICh2b2lkKXNl
dEVycm9yOihOU0Vycm9yICopZXJyb3I7CistICh2b2lkKXNldE1vY2tHZW9sb2NhdGlvblBvc2l0
aW9uVW5hdmFpbGFibGVFcnJvcldpdGhNZXNzYWdlOihOU1N0cmluZyAqKWVycm9yTWVzc2FnZTsK
IAogLSAodm9pZClzdG9wVGltZXI7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9Nb2NrR2VvbG9jYXRpb25Qcm92aWRlci5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9Nb2NrR2VvbG9jYXRpb25Qcm92aWRlci5tbQppbmRleCBlMDNjYWUyNGE1ZDM1N2VlNTkzMGRh
NjE1NDQzN2VjOWFlZjlmNWZiLi5mYWMwYWFjZmVlZWVkMWE0MzU3MTk2OWIxZDVjNDNiZTM5ODY0
MjJmIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTW9ja0dlb2xvY2F0aW9u
UHJvdmlkZXIubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL01vY2tHZW9sb2NhdGlv
blByb3ZpZGVyLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIw
MTIgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zOCwzNCArMzgsMzMgQEAKIHsKICAgICBBU1NFUlQoX3JlZ2lzdGVyZWRW
aWV3cy5pc0VtcHR5KCkpOwogCi0gICAgW19sYXN0UG9zaXRpb24gcmVsZWFzZV07Ci0gICAgW19l
cnJvciByZWxlYXNlXTsKKyAgICBfbGFzdFBvc2l0aW9uLmNsZWFyKCk7CisgICAgX2Vycm9yTWVz
c2FnZS5jbGVhcigpOwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAorLSAodm9pZClyZXNldEVy
cm9yCit7CisgICAgX2hhc0Vycm9yID0gTk87CisgICAgX2Vycm9yTWVzc2FnZS5jbGVhcigpOwor
fQorCiAtICh2b2lkKXNldFBvc2l0aW9uOihXZWJHZW9sb2NhdGlvblBvc2l0aW9uICopcG9zaXRp
b24KIHsKLSAgICBpZiAoX2xhc3RQb3NpdGlvbiAhPSBwb3NpdGlvbikgewotICAgICAgICBbX2xh
c3RQb3NpdGlvbiByZWxlYXNlXTsKLSAgICAgICAgX2xhc3RQb3NpdGlvbiA9IFtwb3NpdGlvbiBy
ZXRhaW5dOwotICAgIH0KKyAgICBfbGFzdFBvc2l0aW9uID0gcG9zaXRpb247CiAgICAgCi0gICAg
W19lcnJvciByZWxlYXNlXTsKLSAgICBfZXJyb3IgPSAwOworICAgIFtzZWxmIHJlc2V0RXJyb3Jd
OwogCiAgICAgaWYgKCFfdGltZXIpCiAgICAgICAgIF90aW1lciA9IFtOU1RpbWVyIHNjaGVkdWxl
ZFRpbWVyV2l0aFRpbWVJbnRlcnZhbDowIHRhcmdldDpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcih0
aW1lckZpcmVkKSB1c2VySW5mbzowIHJlcGVhdHM6Tk9dOwogfQogCi0tICh2b2lkKXNldEVycm9y
OihOU0Vycm9yICopZXJyb3IKKy0gKHZvaWQpc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2
YWlsYWJsZUVycm9yV2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopZXJyb3JNZXNzYWdlCiB7Ci0gICAg
aWYgKF9lcnJvciAhPSBlcnJvcikgewotICAgICAgICBbX2Vycm9yIHJlbGVhc2VdOwotICAgICAg
ICBfZXJyb3IgPSBbZXJyb3IgcmV0YWluXTsKLSAgICB9Ci0gICAgCi0gICAgW19sYXN0UG9zaXRp
b24gcmVsZWFzZV07Ci0gICAgX2xhc3RQb3NpdGlvbiA9IDA7CisgICAgX2hhc0Vycm9yID0gWUVT
OworICAgIF9lcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2U7CisKKyAgICBfbGFzdFBvc2l0aW9u
LmNsZWFyKCk7CiAKICAgICBpZiAoIV90aW1lcikKICAgICAgICAgX3RpbWVyID0gW05TVGltZXIg
c2NoZWR1bGVkVGltZXJXaXRoVGltZUludGVydmFsOjAgdGFyZ2V0OnNlbGYgc2VsZWN0b3I6QHNl
bGVjdG9yKHRpbWVyRmlyZWQpIHVzZXJJbmZvOjAgcmVwZWF0czpOT107CkBAIC04Niw3ICs4NSw3
IEBACiAKIC0gKFdlYkdlb2xvY2F0aW9uUG9zaXRpb24gKilsYXN0UG9zaXRpb24KIHsKLSAgICBy
ZXR1cm4gX2xhc3RQb3NpdGlvbjsKKyAgICByZXR1cm4gX2xhc3RQb3NpdGlvbi5nZXQoKTsKIH0K
IAogLSAodm9pZClzdG9wVGltZXIKQEAgLTEwMiwxMCArMTAxLDEwIEBACiAgICAgLy8gRXhwZWN0
IHRoYXQgdmlld3Mgd29uJ3QgYmUgKHVuKXJlZ2lzdGVyZWQgd2hpbGUgaXRlcmF0aW5nLgogICAg
IEhhc2hTZXQ8V2ViVmlldyo+IHZpZXdzID0gX3JlZ2lzdGVyZWRWaWV3czsKICAgICBmb3IgKEhh
c2hTZXQ8V2ViVmlldyo+OjppdGVyYXRvciBpdGVyID0gdmlld3MuYmVnaW4oKTsgaXRlciAhPSB2
aWV3cy5lbmQoKTsgKytpdGVyKSB7Ci0gICAgICAgIGlmIChfZXJyb3IpCi0gICAgICAgICAgICBb
Kml0ZXIgX2dlb2xvY2F0aW9uRGlkRmFpbFdpdGhFcnJvcjpfZXJyb3JdOworICAgICAgICBpZiAo
X2hhc0Vycm9yKQorICAgICAgICAgICAgWyppdGVyIF9nZW9sb2NhdGlvbkRpZEZhaWxUb0ZpbmRQ
b3NpdGlvbldpdGhNZXNzYWdlOl9lcnJvck1lc3NhZ2UuZ2V0KCldOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBbKml0ZXIgX2dlb2xvY2F0aW9uRGlkQ2hhbmdlUG9zaXRpb246X2xhc3RQb3Np
dGlvbl07CisgICAgICAgICAgICBbKml0ZXIgX2dlb2xvY2F0aW9uRGlkQ2hhbmdlUG9zaXRpb246
X2xhc3RQb3NpdGlvbi5nZXQoKV07CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9UZXN0UnVubmVyTWFjLm1tCmluZGV4IGEyMWVkODBhYzExYmU2MzcxMzFkZmNkNDZlZmY2NGM2
ZDUyOTAzZjUuLjY4Y2FmYjZmMTRlY2Q3ZTcwZjkzZDdkNTI2NmYxOTYyNDc3YWZiMGYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC00NzksMTIgKzQ3OSwxMSBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2Nh
dGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZAogICAgIFtw
b3NpdGlvbiByZWxlYXNlXTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRp
b25FcnJvcihpbnQgY29kZSwgSlNTdHJpbmdSZWYgbWVzc2FnZSkKK3ZvaWQgVGVzdFJ1bm5lcjo6
c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKEpTU3RyaW5nUmVmIG1l
c3NhZ2UpCiB7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBtZXNzYWdlQ0YoQWRvcHRDRiwg
SlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbWVzc2FnZSkpOwogICAg
IE5TU3RyaW5nICptZXNzYWdlTlMgPSAoTlNTdHJpbmcgKiltZXNzYWdlQ0YuZ2V0KCk7Ci0gICAg
TlNFcnJvciAqZXJyb3IgPSBbTlNFcnJvciBlcnJvcldpdGhEb21haW46V2ViS2l0RXJyb3JEb21h
aW4gY29kZTpjb2RlIHVzZXJJbmZvOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6
bWVzc2FnZU5TIGZvcktleTpOU0xvY2FsaXplZERlc2NyaXB0aW9uS2V5XV07Ci0gICAgW1tNb2Nr
R2VvbG9jYXRpb25Qcm92aWRlciBzaGFyZWRdIHNldEVycm9yOmVycm9yXTsKKyAgICBbW01vY2tH
ZW9sb2NhdGlvblByb3ZpZGVyIHNoYXJlZF0gc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2
YWlsYWJsZUVycm9yV2l0aE1lc3NhZ2U6bWVzc2FnZU5TXTsKIH0KIAogdm9pZCBUZXN0UnVubmVy
OjpzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCBhbGxvdykKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9xdC9UZXN0UnVubmVyUXQuY3BwCmluZGV4IGQzNTAzYmQxZTc1MDk4N2U1MjJkYjdkNGJlM2Q4
ZmFjOGJhYzZjMGYuLjlhOTIwMTNlZGQwZWVhNzMzMWZjN2YwMDE0OWM4NTM0YzBhZDAxODkgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5jcHAKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmNwcApAQCAtODM0LDExICs4MzQs
MTEgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRHZW9sb2NhdGlvblBlcm1pc3Npb25Db21tb24oYm9v
bCBhbGxvdykKICAgICAgbV9nZW9sb2NhdGlvblBlcm1pc3Npb24gPSBhbGxvdzsKIH0KIAotdm9p
ZCBUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihpbnQgY29kZSwgY29uc3QgUVN0
cmluZyYgbWVzc2FnZSkKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRp
b25VbmF2YWlsYWJsZUVycm9yKGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgUUxpc3Q8
V2ViQ29yZTo6V2ViUGFnZSo+IHBhZ2VzID0gbV9kcnQtPmdldEFsbFBhZ2VzKCk7CiAgICAgZm9y
ZWFjaCAoV2ViQ29yZTo6V2ViUGFnZSogcGFnZSwgcGFnZXMpCi0gICAgICAgIER1bXBSZW5kZXJU
cmVlU3VwcG9ydFF0OjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihwYWdlLCBjb2RlLCBtZXNzYWdl
KTsKKyAgICAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldE1vY2tHZW9sb2NhdGlvblBv
c2l0aW9uVW5hdmFpbGFibGVFcnJvcihwYWdlLCBtZXNzYWdlKTsKIH0KIAogdm9pZCBUZXN0UnVu
bmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBs
b25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL3F0L1Rlc3RSdW5uZXJRdC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5l
clF0LmgKaW5kZXggODhhOWM2YTk0NGU2NGUzODU4NTQ2MDY0OGJkODI2NzhhOTM1NmMyZi4uMzEx
YmNkOWRlNWNkN2YyYTlkNmYyMmU4OWNhOTAwNWVkNDYxZjcyMyAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvcXQvVGVzdFJ1bm5lclF0LmgKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICog
Q29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIGh0dHA6Ly93d3cudG9yY2htb2Jp
bGUuY29tLworICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjI0LDcgKzIyNSw3IEBA
IHB1YmxpYyBRX1NMT1RTOgogCiAgICAgdm9pZCBzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oYm9v
bCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91
YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpOwogCi0gICAgdm9p
ZCBzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihpbnQgY29kZSwgY29uc3QgUVN0cmluZyYgbWVzc2Fn
ZSk7CisgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3Io
Y29uc3QgUVN0cmluZyYgbWVzc2FnZSk7CiAgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3Np
dGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSk7
CiAgICAgdm9pZCBzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCBhbGxvdyk7CiAgICAgaW50
IG51bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzKCk7CmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAKaW5kZXggZDMzNjUxYjdhZjZlNDVj
MmI5ZTU2MWI0YTcxNzFiNDZjOWU2MzdmMS4uYzQ0MDBmZGNiMWViYmVmNGY3N2JjODA0MGNlMTZh
MmI2M2VmMzc0MCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5u
ZXJXaW4uY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNw
cApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgs
IDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIwLDcg
KzQyMCw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91
YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODI2NC4KIH0KIAotdm9pZCBUZXN0UnVubmVy
OjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihpbnQgY29kZSwgSlNTdHJpbmdSZWYgbWVzc2FnZSkK
K3ZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVy
cm9yKEpTU3RyaW5nUmVmIG1lc3NhZ2UpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3Ig
R2VvbG9jYXRpb24gbGF5b3V0IHRlc3RzLgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjgyNjQuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS93eC9UZXN0UnVubmVyV3guY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvVGVzdFJ1
bm5lcld4LmNwcAppbmRleCBkN2E1MjUyYzQwNGJmMjE5ZGY3ZWExZmE1N2NiM2Q5ZTFkZGQzMzgz
Li5lNzgwY2ZlNTJiM2IwMTY5NGU2MmM3N2IzOGRmOWQwZTBiMTA5YmFhIDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS93eC9UZXN0UnVubmVyV3guY3BwCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3d4L1Rlc3RSdW5uZXJXeC5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDA4IEtldmluIE9sbGl2aWVyIDxrZXZpbm9AdGhlb2xsaXZpZXJzLmNvbT4K
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzOCw3ICszMzksNyBAQCB2b2lkIFRl
c3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91
YmxlIGxvbmdpdHVkZSwgZAogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjgyNjQuCiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0
aW9uRXJyb3IoaW50IGNvZGUsIEpTU3RyaW5nUmVmIG1lc3NhZ2UpCit2b2lkIFRlc3RSdW5uZXI6
OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihKU1N0cmluZ1JlZikK
IHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBHZW9sb2NhdGlvbiBsYXlvdXQgdGVzdHMu
CiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODI2
NC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCBlZmIzYTBlYzM5OGE4MDExMzg0NzE1ZGUxMjRjM2I4ZTdkZjA2MTMzLi5kODNm
MzZlYTk1NmM3Y2UwODg1MGE1OWI3Y2FlYWQyYjk0MzQ4MzBkIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYg
QEAKKzIwMTItMDktMjEgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQub3JnPgor
CisgICAgICAgIEZpeCBHZW9sb2NhdGlvbiBlcnJvciByZXBvcnRpbmcgaW4gdGhlIHRlc3Qgc3Vw
cG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTcz
ODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRp
dGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0aW9u
YWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4K
KworICAgICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9uL2Vycm9yLWNsZWFyLXdhdGNoLmh0bWw6
CisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vZXJyb3ItZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9uL21heGltdW0tYWdlLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9yZWVudHJhbnQtZXJyb3ItZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9lcnJvci5qczoK
KyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvbWF4aW11bS1hZ2Uu
anM6CisgICAgICAgIChjaGVja0Vycm9yKToKKyAgICAgICAgKHRlc3ROb25aZXJvTWF4aW11bUFn
ZSk6CisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3Blcm1pc3Np
b24tZGVuaWVkLWFscmVhZHktZXJyb3IuanM6CisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRp
b24vc2NyaXB0LXRlc3RzL3JlZW50cmFudC1lcnJvci5qczoKKyAgICAgICAgKiBmYXN0L2RvbS9H
ZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvd2F0Y2guanM6CisgICAgICAgIChjaGVja0Vycm9yKToK
KyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi93YXRjaC1leHBlY3RlZC50eHQ6CisKIDIw
MTItMDktMjEgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgZmFzdC9kb20vR2VvbG9jYXRpb24vZGlzY29ubmVjdGVkLWZyYW1lLmh0bWwgdGVzdCBhc3Nl
cnRzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9lcnJvci1j
bGVhci13YXRjaC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vZXJyb3It
Y2xlYXItd2F0Y2guaHRtbAppbmRleCAzMjIwNmRmM2ZjMzkwNzYyN2Y0MTVkYTYxMmVjZDdkNDcw
YmU4ZjE1Li42YzYxOTc4M2ViOWM3ODRlNGFiYWMyOTcxMTJiNWQ3YzgwMTljYTYxIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9lcnJvci1jbGVhci13YXRjaC5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2Vycm9yLWNsZWFyLXdh
dGNoLmh0bWwKQEAgLTcsMTIgKzcsMTEgQEAKIDxzY3JpcHQ+CiBkZXNjcmlwdGlvbigiVGhpcyB0
ZXN0cyByZW1vdmluZyB0aGUgd2F0Y2hlciBmcm9tIGFuIGVycm9yIGNhbGxiYWNrIGRvZXMgbm90
IGNhdXNlcyBhc3NlcnRpb25zLiIpOwogCi12YXIgbW9ja0NvZGUgPSAyOwogdmFyIG1vY2tNZXNz
YWdlID0gImRlYnVnIjsKIAogaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgdGVzdFJ1bm5l
ci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24odHJ1ZSk7Ci0gICAgdGVzdFJ1bm5lci5zZXRNb2Nr
R2VvbG9jYXRpb25FcnJvcihtb2NrQ29kZSwgbW9ja01lc3NhZ2UpOworICAgIHRlc3RSdW5uZXIu
c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKG1vY2tNZXNzYWdlKTsK
IH0gZWxzZQogICAgIGRlYnVnKCdUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4gd2l0aG91dCB0aGUg
TGF5b3V0VGVzdENvbnRyb2xsZXInKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vR2VvbG9jYXRpb24vZXJyb3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
R2VvbG9jYXRpb24vZXJyb3ItZXhwZWN0ZWQudHh0CmluZGV4IDk1ODIwNTk1ZmRiYjQ3NmY3MDlk
MWI3OWNmZWQzNTJlY2IzMGYyMmQuLjEzM2UzOWEzMmFlZGIzZWZkYTIyNDliYjgzMGVlMDUyZWQ5
MzU5ZWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2Vycm9y
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9lcnJv
ci1leHBlY3RlZC50eHQKQEAgLTMsNyArMyw3IEBAIFRlc3RzIEdlb2xvY2F0aW9uIGVycm9yIGNh
bGxiYWNrIHVzaW5nIHRoZSBtb2NrIHNlcnZpY2UuCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CiAKIAotUEFTUyBlcnJvci5jb2RlIGlzIG1vY2tDb2RlCitQQVNTIGVycm9yLmNvZGUgaXMgZXJy
b3IuUE9TSVRJT05fVU5BVkFJTEFCTEUKIFBBU1MgZXJyb3IubWVzc2FnZSBpcyBtb2NrTWVzc2Fn
ZQogUEFTUyBlcnJvci5VTktOT1dOX0VSUk9SIGlzIHVuZGVmaW5lZAogUEFTUyBlcnJvci5QRVJN
SVNTSU9OX0RFTklFRCBpcyAxCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9s
b2NhdGlvbi9tYXhpbXVtLWFnZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9H
ZW9sb2NhdGlvbi9tYXhpbXVtLWFnZS1leHBlY3RlZC50eHQKaW5kZXggMzQ0YmQ0NWI4MjE0ZDRi
ZWQ2YTlmOTAzZjMyMmIxN2JkMDMwNmE4OS4uMzg4OTQ2Njk3YjM4NTkxNzRjNGUyZmUzY2FjNTA0
MThmMWNlYTUzNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24v
bWF4aW11bS1hZ2UtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xv
Y2F0aW9uL21heGltdW0tYWdlLWV4cGVjdGVkLnR4dApAQCAtMTYsNyArMTYsNyBAQCBQQVNTIHBv
c2l0aW9uLmNvb3Jkcy5sYXRpdHVkZSBpcyBtb2NrTGF0aXR1ZGUKIFBBU1MgcG9zaXRpb24uY29v
cmRzLmxvbmdpdHVkZSBpcyBtb2NrTG9uZ2l0dWRlCiBQQVNTIHBvc2l0aW9uLmNvb3Jkcy5hY2N1
cmFjeSBpcyBtb2NrQWNjdXJhY3kKIAotUEFTUyBlcnJvci5jb2RlIGlzIG1vY2tDb2RlCitQQVNT
IGVycm9yLmNvZGUgaXMgZXJyb3IuUE9TSVRJT05fVU5BVkFJTEFCTEUKIFBBU1MgZXJyb3IubWVz
c2FnZSBpcyBtb2NrTWVzc2FnZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9yZWVudHJhbnQtZXJy
b3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vcmVlbnRy
YW50LWVycm9yLWV4cGVjdGVkLnR4dAppbmRleCA5OTNiZWFjMjE3ZTY3MDk5OGQ4MjBkMTVjZTI4
Nzk0ZDRhZDQwNGZlLi40YzRlYjFmMGJiOThiNTY3ZDJiZjIxOGZmOTczM2YxZjgzNTE3ZTc5IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9yZWVudHJhbnQtZXJy
b3ItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3Jl
ZW50cmFudC1lcnJvci1leHBlY3RlZC50eHQKQEAgLTMsMTAgKzMsMTAgQEAgVGVzdHMgdGhhdCBy
ZWVudHJhbnQgY2FsbHMgdG8gR2VvbG9jYXRpb24gbWV0aG9kcyBmcm9tIHRoZSBlcnJvciBjYWxs
YmFjayBhcmUgT0sKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIGVycm9yLmNv
ZGUgaXMgbW9ja0NvZGUKK1BBU1MgZXJyb3IuY29kZSBpcyBlcnJvci5QT1NJVElPTl9VTkFWQUlM
QUJMRQogUEFTUyBlcnJvci5tZXNzYWdlIGlzIG1vY2tNZXNzYWdlCiAKLVBBU1MgZXJyb3IuY29k
ZSBpcyBtb2NrQ29kZQorUEFTUyBlcnJvci5jb2RlIGlzIGVycm9yLlBPU0lUSU9OX1VOQVZBSUxB
QkxFCiBQQVNTIGVycm9yLm1lc3NhZ2UgaXMgbW9ja01lc3NhZ2UKIFBBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9j
YXRpb24vc2NyaXB0LXRlc3RzL2Vycm9yLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9j
YXRpb24vc2NyaXB0LXRlc3RzL2Vycm9yLmpzCmluZGV4IDJkMTNmM2Y0NmM4MzAxMDc2YzhkY2Ji
OWQxOTg5MTBmNzdmY2M4MWIuLjhlNDRiYzZmNzFlZmQ4ZWI3NzNlOWU3OTU3NTQ3ZDBkM2Y3MWU4
MDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10
ZXN0cy9lcnJvci5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3Jp
cHQtdGVzdHMvZXJyb3IuanMKQEAgLTEsMTEgKzEsMTAgQEAKIGRlc2NyaXB0aW9uKCJUZXN0cyBH
ZW9sb2NhdGlvbiBlcnJvciBjYWxsYmFjayB1c2luZyB0aGUgbW9jayBzZXJ2aWNlLiIpOwogCi12
YXIgbW9ja0NvZGUgPSAyOwogdmFyIG1vY2tNZXNzYWdlID0gImRlYnVnIjsKIAogaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CiAgICAgdGVzdFJ1bm5lci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24o
dHJ1ZSk7Ci0gICAgdGVzdFJ1bm5lci5zZXRNb2NrR2VvbG9jYXRpb25FcnJvcihtb2NrQ29kZSwg
bW9ja01lc3NhZ2UpOworICAgIHRlc3RSdW5uZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25V
bmF2YWlsYWJsZUVycm9yKG1vY2tNZXNzYWdlKTsKIH0gZWxzZQogICAgIGRlYnVnKCdUaGlzIHRl
c3QgY2FuIG5vdCBiZSBydW4gd2l0aG91dCB0aGUgdGVzdFJ1bm5lcicpOwogCkBAIC0xNSw3ICsx
NCw3IEBAIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZnVuY3Rpb24o
cCkgewogICAgIGZpbmlzaEpTVGVzdCgpOwogfSwgZnVuY3Rpb24oZSkgewogICAgIGVycm9yID0g
ZTsKLSAgICBzaG91bGRCZSgnZXJyb3IuY29kZScsICdtb2NrQ29kZScpOworICAgIHNob3VsZEJl
KCdlcnJvci5jb2RlJywgJ2Vycm9yLlBPU0lUSU9OX1VOQVZBSUxBQkxFJyk7CiAgICAgc2hvdWxk
QmUoJ2Vycm9yLm1lc3NhZ2UnLCAnbW9ja01lc3NhZ2UnKTsKICAgICBzaG91bGRCZSgnZXJyb3Iu
VU5LTk9XTl9FUlJPUicsICd1bmRlZmluZWQnKTsKICAgICBzaG91bGRCZSgnZXJyb3IuUEVSTUlT
U0lPTl9ERU5JRUQnLCAnMScpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2Vv
bG9jYXRpb24vc2NyaXB0LXRlc3RzL21heGltdW0tYWdlLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL21heGltdW0tYWdlLmpzCmluZGV4IDZjOGY4NjAw
OWZiODQ2NTMxMWQwYWQ5ZTllODRmYTU3MzFhNWQxNmQuLjQ3NTk2Y2E0NjQ2Y2MzNjk3YWYyODk4
OTg1ZDY1MzQ0NGE2MmNiMjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xv
Y2F0aW9uL3NjcmlwdC10ZXN0cy9tYXhpbXVtLWFnZS5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvbWF4aW11bS1hZ2UuanMKQEAgLTQsNyArNCw2
IEBAIHZhciBtb2NrTGF0aXR1ZGUgPSA1MS40Nzg7CiB2YXIgbW9ja0xvbmdpdHVkZSA9IC0wLjE2
NjsKIHZhciBtb2NrQWNjdXJhY3kgPSAxMDAuMDsKIAotdmFyIG1vY2tDb2RlID0gMjsKIHZhciBt
b2NrTWVzc2FnZSA9ICd0ZXN0JzsKIAogdmFyIHBvc2l0aW9uOwpAQCAtMjEsNyArMjAsNyBAQCBm
dW5jdGlvbiBjaGVja1Bvc2l0aW9uKHApIHsKIGZ1bmN0aW9uIGNoZWNrRXJyb3IoZSkgewogICAg
IGRlYnVnKCcnKTsKICAgICBlcnJvciA9IGU7Ci0gICAgc2hvdWxkQmUoJ2Vycm9yLmNvZGUnLCAn
bW9ja0NvZGUnKTsKKyAgICBzaG91bGRCZSgnZXJyb3IuY29kZScsICdlcnJvci5QT1NJVElPTl9V
TkFWQUlMQUJMRScpOwogICAgIHNob3VsZEJlKCdlcnJvci5tZXNzYWdlJywgJ21vY2tNZXNzYWdl
Jyk7CiB9CiAKQEAgLTU3LDcgKzU2LDcgQEAgZnVuY3Rpb24gdGVzdFplcm9NYXhpbXVtQWdlKCkg
ewogZnVuY3Rpb24gdGVzdE5vblplcm9NYXhpbXVtQWdlKCkgewogICAgIC8vIFVwZGF0ZSB0aGUg
bW9jayBzZXJ2aWNlIHRvIHJlcG9ydCBhbiBlcnJvci4KICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgICAgIHRlc3RSdW5uZXIuc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IobW9ja0NvZGUs
IG1vY2tNZXNzYWdlKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRNb2NrR2VvbG9jYXRpb25Qb3Np
dGlvblVuYXZhaWxhYmxlRXJyb3IobW9ja01lc3NhZ2UpOwogICAgIC8vIFRoZSBtYXhpbXVtQWdl
IGlzIG5vbi16ZXJvLCBzbyB3ZSBleHBlY3QgdGhlIGNhY2hlZCBwb3NpdGlvbiwgbm90IHRoZSBl
cnJvciBmcm9tIHRoZSBzZXJ2aWNlLgogICAgIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJy
ZW50UG9zaXRpb24oZnVuY3Rpb24ocCkgewogICAgICAgICBjaGVja1Bvc2l0aW9uKHApOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3Bl
cm1pc3Npb24tZGVuaWVkLWFscmVhZHktZXJyb3IuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9H
ZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcGVybWlzc2lvbi1kZW5pZWQtYWxyZWFkeS1lcnJvci5q
cwppbmRleCBiNWUzZDhmMmM4YTMyOGQyNzM5YjQ4NWM4Y2RhNGQzODdiMzI2ODM4Li40OGI1Y2Y4
MWM1NDk4YTNkMzRmMTQxNzI0Njc5MWRmN2M4YzdjMTRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcGVybWlzc2lvbi1kZW5pZWQtYWxy
ZWFkeS1lcnJvci5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3Jp
cHQtdGVzdHMvcGVybWlzc2lvbi1kZW5pZWQtYWxyZWFkeS1lcnJvci5qcwpAQCAtMjMsNyArMjMs
NyBAQCBmdW5jdGlvbiBjb250aW51ZVRlc3QoKQogewogICAgIC8vIE1ha2UgYW5vdGhlciByZXF1
ZXN0LCB3aXRoIHBlcm1pc3Npb24gYWxyZWFkeSBkZW5pZWQuCiAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgICB0ZXN0UnVubmVyLnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKDIsICd0
ZXN0Jyk7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2
YWlsYWJsZUVycm9yKCd0ZXN0Jyk7CiAKICAgICBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3Vy
cmVudFBvc2l0aW9uKGZ1bmN0aW9uKHApIHsKICAgICAgICAgdGVzdEZhaWxlZCgnU3VjY2VzcyBj
YWxsYmFjayBpbnZva2VkIHVuZXhwZWN0ZWRseScpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3JlZW50cmFudC1lcnJvci5qcyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9yZWVudHJhbnQtZXJy
b3IuanMKaW5kZXggNTQzOWUyOTIyYzRjOTg4ZWQyMWE4YmM3MzE4MzNmMGMyYjcxNDk5Yi4uNWE2
YzA5ZDFiYTgyODZiMGFiNDFhN2NiYjY3MGQ3OWFiMWI3M2VlNSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3JlZW50cmFudC1lcnJvci5q
cworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcmVl
bnRyYW50LWVycm9yLmpzCkBAIC0xLDExICsxLDEwIEBACiBkZXNjcmlwdGlvbigiVGVzdHMgdGhh
dCByZWVudHJhbnQgY2FsbHMgdG8gR2VvbG9jYXRpb24gbWV0aG9kcyBmcm9tIHRoZSBlcnJvciBj
YWxsYmFjayBhcmUgT0suIik7CiAKLXZhciBtb2NrQ29kZSA9IDI7CiB2YXIgbW9ja01lc3NhZ2Ug
PSAndGVzdCc7CiAKIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgIHRlc3RSdW5uZXIuc2V0
R2VvbG9jYXRpb25QZXJtaXNzaW9uKHRydWUpOwotICAgIHRlc3RSdW5uZXIuc2V0TW9ja0dlb2xv
Y2F0aW9uRXJyb3IobW9ja0NvZGUsIG1vY2tNZXNzYWdlKTsKKyAgICB0ZXN0UnVubmVyLnNldE1v
Y2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihtb2NrTWVzc2FnZSk7CiB9IGVs
c2UKICAgICBkZWJ1ZygnVGhpcyB0ZXN0IGNhbiBub3QgYmUgcnVuIHdpdGhvdXQgdGhlIHRlc3RS
dW5uZXInKTsKIApAQCAtMjIsNyArMjEsNyBAQCBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3Vy
cmVudFBvc2l0aW9uKGZ1bmN0aW9uKHApIHsKICAgICBlcnJvckNhbGxiYWNrSW52b2tlZCA9IHRy
dWU7CiAKICAgICBlcnJvciA9IGU7Ci0gICAgc2hvdWxkQmUoJ2Vycm9yLmNvZGUnLCAnbW9ja0Nv
ZGUnKTsKKyAgICBzaG91bGRCZSgnZXJyb3IuY29kZScsICdlcnJvci5QT1NJVElPTl9VTkFWQUlM
QUJMRScpOwogICAgIHNob3VsZEJlKCdlcnJvci5tZXNzYWdlJywgJ21vY2tNZXNzYWdlJyk7CiAg
ICAgZGVidWcoJycpOwogICAgIGNvbnRpbnVlVGVzdCgpOwpAQCAtMzIsMTQgKzMxLDE0IEBAIGZ1
bmN0aW9uIGNvbnRpbnVlVGVzdCgpIHsKICAgICBtb2NrTWVzc2FnZSArPSAnIHJlcGVhdCc7CiAK
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIuc2V0TW9ja0dl
b2xvY2F0aW9uRXJyb3IobW9ja0NvZGUsIG1vY2tNZXNzYWdlKTsKKyAgICAgICAgdGVzdFJ1bm5l
ci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IobW9ja01lc3NhZ2Up
OwogCiAgICAgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihmdW5jdGlv
bihwKSB7CiAgICAgICAgIHRlc3RGYWlsZWQoJ1N1Y2Nlc3MgY2FsbGJhY2sgaW52b2tlZCB1bmV4
cGVjdGVkbHknKTsKICAgICAgICAgZmluaXNoSlNUZXN0KCk7CiAgICAgfSwgZnVuY3Rpb24oZSkg
ewogICAgICAgICBlcnJvciA9IGU7Ci0gICAgICAgIHNob3VsZEJlKCdlcnJvci5jb2RlJywgJ21v
Y2tDb2RlJyk7CisgICAgICAgIHNob3VsZEJlKCdlcnJvci5jb2RlJywgJ2Vycm9yLlBPU0lUSU9O
X1VOQVZBSUxBQkxFJyk7CiAgICAgICAgIHNob3VsZEJlKCdlcnJvci5tZXNzYWdlJywgJ21vY2tN
ZXNzYWdlJyk7CiAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3dhdGNoLmpzIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3dhdGNoLmpzCmlu
ZGV4IDZmMWZlMGNkZjI0MGM0ODIxOWVlYjE4ZDM2ZmJjNjBkYzgxYzg5YTIuLjBlYTFjYWY0OGQ5
OGI0N2ZiOWEzMzRlMzk0MzFlZTc4YWJlZDg0NjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy93YXRjaC5qcworKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvd2F0Y2guanMKQEAgLTQsNyArNCw2
IEBAIHZhciBtb2NrTGF0aXR1ZGUgPSA1MS40Nzg7CiB2YXIgbW9ja0xvbmdpdHVkZSA9IC0wLjE2
NjsKIHZhciBtb2NrQWNjdXJhY3kgPSAxMDAuMDsKIAotdmFyIG1vY2tDb2RlID0gMjsKIHZhciBt
b2NrTWVzc2FnZSA9ICd0ZXN0JzsKIAogdmFyIHBvc2l0aW9uOwpAQCAtMjAsNyArMTksNyBAQCBm
dW5jdGlvbiBjaGVja1Bvc2l0aW9uKHApIHsKIAogZnVuY3Rpb24gY2hlY2tFcnJvcihlKSB7CiAg
ICAgZXJyb3IgPSBlOwotICAgIHNob3VsZEJlKCdlcnJvci5jb2RlJywgJ21vY2tDb2RlJyk7Cisg
ICAgc2hvdWxkQmUoJ2Vycm9yLmNvZGUnLCAnZXJyb3IuUE9TSVRJT05fVU5BVkFJTEFCTEUnKTsK
ICAgICBzaG91bGRCZSgnZXJyb3IubWVzc2FnZScsICdtb2NrTWVzc2FnZScpOwogICAgIGRlYnVn
KCcnKTsKIH0KQEAgLTQyLDcgKzQxLDcgQEAgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLndhdGNoUG9z
aXRpb24oZnVuY3Rpb24ocCkgewogICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICBjaGVja1Bv
c2l0aW9uKHApOwogICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAg
ICAgICAgIHRlc3RSdW5uZXIuc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IobW9ja0NvZGUsIG1vY2tN
ZXNzYWdlKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldE1vY2tHZW9sb2NhdGlvblBv
c2l0aW9uVW5hdmFpbGFibGVFcnJvcihtb2NrTWVzc2FnZSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgY2hlY2tQb3NpdGlvbihwKTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3dhdGNoLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3dhdGNoLWV4cGVjdGVkLnR4dAppbmRl
eCBhMDQzNDU1NmYyYmYwNTVhOTNkYzczNWIzYmEzYWU2ODhkNWUxN2Y4Li40Yzc1ZjA4ZTUzNzNl
ZGNiOWU1YTEwMjMwZjY2NzcwZGE2ODY2MzUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9HZW9sb2NhdGlvbi93YXRjaC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vR2VvbG9jYXRpb24vd2F0Y2gtZXhwZWN0ZWQudHh0CkBAIC0xMSw3ICsxMSw3IEBAIFBB
U1MgcG9zaXRpb24uY29vcmRzLmxhdGl0dWRlIGlzIG1vY2tMYXRpdHVkZQogUEFTUyBwb3NpdGlv
bi5jb29yZHMubG9uZ2l0dWRlIGlzIG1vY2tMb25naXR1ZGUKIFBBU1MgcG9zaXRpb24uY29vcmRz
LmFjY3VyYWN5IGlzIG1vY2tBY2N1cmFjeQogCi1QQVNTIGVycm9yLmNvZGUgaXMgbW9ja0NvZGUK
K1BBU1MgZXJyb3IuY29kZSBpcyBlcnJvci5QT1NJVElPTl9VTkFWQUlMQUJMRQogUEFTUyBlcnJv
ci5tZXNzYWdlIGlzIG1vY2tNZXNzYWdlCiAKIFBBU1MgcG9zaXRpb24uY29vcmRzLmxhdGl0dWRl
IGlzIG1vY2tMYXRpdHVkZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165246</attachid>
            <date>2012-09-21 23:15:44 -0700</date>
            <delta_ts>2012-09-21 23:35:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97386-20120921231508.patch</filename>
            <type>text/plain</type>
            <size>63580</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5Mjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzE3ZDU1MjQ4MjEwOWI0
ZWJhM2ZhZTdiNGRkZjk0MWM2MTFkYWM0ZS4uY2QzZDNlODZmYzFiOWFmMjZmYjA2MzYxMjQyZTJj
Yzc4ZjkxYWJkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTA5LTIxICBCZW5q
YW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBGaXggR2VvbG9j
YXRpb24gZXJyb3IgcmVwb3J0aW5nIGluIHRoZSB0ZXN0IHN1cHBvcnQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3Mzg2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBv
ZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxlYXNlIGFkZCBwZXIt
ZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9H
ZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25D
bGllbnRNb2NrOjpHZW9sb2NhdGlvbkNsaWVudE1vY2spOgorICAgICAgICAoV2ViQ29yZTo6R2Vv
bG9jYXRpb25DbGllbnRNb2NrOjpzZXRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHZW9s
b2NhdGlvbkNsaWVudE1vY2s6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVF
cnJvcik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnJlc2V0KToK
KyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xpZW50TW9jazo6Y29udHJvbGxlclRpbWVy
RmlyZWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlv
bkNsaWVudE1vY2s6OmNsZWFyRXJyb3IpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svR2VvbG9j
YXRpb25DbGllbnRNb2NrLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEdlb2xvY2F0
aW9uQ2xpZW50TW9jayk6CisKIDIwMTItMDktMjEgIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29v
Z2xlLmNvbT4KIAogICAgICAgICBCaXF1YWRGaWx0ZXJOb2RlIG11c3QgdGFrZSBhdWRpby1yYXRl
IHBhcmFtZXRlciBjaGFuZ2VzIGludG8gYWNjb3VudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VM
b2cKaW5kZXggZWQ1Njg3ODQzOWIyOWMxZjQ4MGFhYTZmYTlhYTdmYzEwNDU3NjljMy4uY2UwZDMw
ZjZmYjY3NTg5MGY3MzE3NTYxMzA0ZTUyNzk3ZDRkNDI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDktMjEgIEJlbmphbWluIFBvdWxhaW4g
IDxiZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIEZpeCBHZW9sb2NhdGlvbiBlcnJvciBy
ZXBvcnRpbmcgaW4gdGhlIHRlc3Qgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTczODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ug
c3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNj
cmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdFN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydDo6c2V0
TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKToKKyAgICAgICAgKiBXZWJL
aXRTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5oOgorICAgICAgICAoRHVtcFJlbmRlclRy
ZWVTdXBwb3J0KToKKwogMjAxMi0wOS0yMSAgTGlhbmdodWkgQ2hlbiAgPGxpYWNoZW5AcmltLmNv
bT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gUmVhbGx5IGZpeCBidWcgOTU0ODggdGhhdCB1c2Vy
IGNhbiBnZXQgdGhlIGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZSBkaWFsb2cgd2hpbGUgdGhlIG90
aGVyIHRhYiBoYXMgZm9jdXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggYzFhZmE1M2VkYzliNTBiNTIx
ZjlkMzBkYTI3YWZhYmY4OTQ0YTYyZi4uNTk1NmY3OTUzM2E3NTQ4MTI3MTRlY2VjZjFmNzIyNTFj
NGM0NTVmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA5LTIxICBC
ZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBGaXggR2Vv
bG9jYXRpb24gZXJyb3IgcmVwb3J0aW5nIGluIHRoZSB0ZXN0IHN1cHBvcnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3Mzg2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBpbmZvcm1hdGlv
biBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxlYXNlIGFkZCBw
ZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwOgorICAgICAgICAoRHVtcFJl
bmRlclRyZWVTdXBwb3J0R3RrOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxl
RXJyb3IpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0
ay5oOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrKToKKwogMjAxMi0wOS0xOSAg
RGFuaWxvIENlc2FyIExlbWVzIGRlIFBhdWxhICA8ZGFuaWxvLmNlc2FyQGNvbGxhYm9yYS5jby51
az4KIAogICAgICAgICBbZ3RrXSBhZGQgZW5hYmxlLW1lZGlhLXN0cmVhbSB0byB3ZWJzZXR0aW5n
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCmluZGV4IDFhMWZjMTU5MTYxODg4NGViNTI5YWM5MTE0OWE5Nzk0OGY5
OTBiNDUuLmY3OThjMjdhNWE2MDI3Mzk1N2IwYzI5MzNmNmMzMWU5MTI1MjM5ZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wOS0yMSAgQmVuamFtaW4gUG91bGFpbiAg
PGJlbmphbWluQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRml4IEdlb2xvY2F0aW9uIGVycm9yIHJl
cG9ydGluZyBpbiB0aGUgdGVzdCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NzM4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2YgdGhlIGNoYW5nZSBz
dWNoIGFzIGFwcHJvYWNoLCByYXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1bmN0aW9uIGRlc2Ny
aXB0aW9ucyBiZWxvdyAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgor
ICAgICAgICAoLVtXZWJWaWV3IF9nZW9sb2NhdGlvbkRpZEZhaWxUb0ZpbmRQb3NpdGlvbldpdGhN
ZXNzYWdlOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld1ByaXZhdGUuaDoKKwogMjAxMi0w
OS0yMSAgQ2hyaXMgUm9nZXJzICA8Y3JvZ2Vyc0Bnb29nbGUuY29tPgogCiAgICAgICAgIEFkZCBX
ZWIgQXVkaW8gc3VwcG9ydCBmb3IgZGVwcmVjYXRlZC9sZWdhY3kgQVBJcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpp
bmRleCA1YWE2MmYxNzkxNDAwZTcyN2NmOGFiMDQwZmEwMDc5ZGI4MjhiZTNmLi5hMmQwYzYxNzU1
N2U0NGIzZTIxMzA1YmE4MjA0ZmQzYmNhZWRlZjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDEyLTA5LTIxICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBGaXggR2VvbG9jYXRpb24gZXJyb3IgcmVwb3J0aW5nIGluIHRoZSB0ZXN0
IHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk3Mzg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJh
dGlvbmFsZS4gUGxlYXNlIGFkZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5j
cHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0TW9ja0dlb2xvY2F0aW9u
UG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdC5oOgorCiAyMDEyLTA5LTIwICBDc2FiYSBPc3p0cm9nb27DoWMg
IDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBFbmFibGUgQ1NTIHJlZ2lvbnMgYnkg
ZGVmYXVsdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBkZmY4MzBkNTAzODQ5MmZkMmRlNDEwY2Yy
NWY4MzI5MzcyMjAxMDM4Li44MTUzMDM5Zjk1Yzk5ZGM3ZDgyMDMyYzlkNmVhYzZlNmMzMTAyMGRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMjE5MSw3ICsyMTkxLDYgQEAgX19aTjdXZWJDb3Jl
MTFHZW9sb2NhdGlvbjEyc2V0SXNBbGxvd2VkRWIKIF9fWk43V2ViQ29yZTExR2VvbG9jYXRpb25E
MUV2CiBfX1pOSzdXZWJDb3JlMTFHZW9sb2NhdGlvbjVmcmFtZUV2CiBfX1pON1dlYkNvcmUyMHBy
b3ZpZGVHZW9sb2NhdGlvblRvRVBOU180UGFnZUVQTlNfMTdHZW9sb2NhdGlvbkNsaWVudEUKLV9f
Wk43V2ViQ29yZTIxR2VvbG9jYXRpb25DbGllbnRNb2NrMTNzZXRQZXJtaXNzaW9uRWIKIF9fWk43
V2ViQ29yZTIxR2VvbG9jYXRpb25Db250cm9sbGVyMTNlcnJvck9jY3VycmVkRVBOU18xNkdlb2xv
Y2F0aW9uRXJyb3JFCiBfX1pON1dlYkNvcmUyMUdlb2xvY2F0aW9uQ29udHJvbGxlcjE0c3VwcGxl
bWVudE5hbWVFdgogX19aTjdXZWJDb3JlMjFHZW9sb2NhdGlvbkNvbnRyb2xsZXIxNXBvc2l0aW9u
Q2hhbmdlZEVQTlNfMTlHZW9sb2NhdGlvblBvc2l0aW9uRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDdhMjVlYWE4ODE0YWQ0ODU3
MzMxYTZjNTNhNzY2MzY2Y2QzYzIyZGMuLmQ5NTQxZThiNWQ4NjI1Yzk4Mjk4ODI0YzFiNjZjNTFk
ZDM4OTc4NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTc2LDggKzc2LDYgQEAKIAkJMDMzQTZBN0UxNDdFMDdFNzAwNTA5QjM2
IC8qIEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMzNBNkE3RDE0N0UwN0U3MDA1MDlCMzYgLyogSFRNTFBy
b3BlcnRpZXNDb2xsZWN0aW9uLmNwcCAqLzsgfTsKIAkJMDMzQTZBODExNDdFMDg4NjAwNTA5QjM2
IC8qIEpTSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAzM0E2QTgwMTQ3RTA4ODYwMDUwOUIzNiAvKiBKU0hU
TUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5jcHAgKi87IH07CiAJCTAzM0E2QTgzMTQ3RTA4QTYwMDUw
OUIzNiAvKiBKU0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDMzQTZBODIxNDdFMDhBNjAwNTA5QjM2IC8qIEpT
SFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmggKi87IH07Ci0JCTA1MkJGQ0U5MTI4QUJGMTUwMEZE
MzM4RCAvKiBHZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDUyQkZDRTgxMjhBQkYxNTAwRkQzMzhEIC8qIEdlb2xv
Y2F0aW9uQ2xpZW50TW9jay5jcHAgKi87IH07Ci0JCTA1MkJGQ0VCMTI4QUJGMjEwMEZEMzM4RCAv
KiBHZW9sb2NhdGlvbkNsaWVudE1vY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA1MkJGQ0VBMTI4QUJGMjEwMEZEMzM4RCAvKiBHZW9sb2NhdGlvbkNs
aWVudE1vY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwNTYyRjk0NjE1NzNFQ0VCMDAzMUNBMTYgLyogV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNTYy
Rjk0NDE1NzNFQ0VCMDAzMUNBMTYgLyogV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5jcHAgKi87
IH07CiAJCTA1NjJGOTQ3MTU3M0VDRUIwMDMxQ0ExNiAvKiBXZWJLaXRDU1NTVkdEb2N1bWVudFZh
bHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNTYy
Rjk0NTE1NzNFQ0VCMDAzMUNBMTYgLyogV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5oICovOyB9
OwogCQkwNTYyRjk2MTE1NzNGODhGMDAzMUNBMTYgLyogUGxhdGZvcm1MYXllci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDU2MkY5NjAxNTczRjg4RjAw
MzFDQTE2IC8qIFBsYXRmb3JtTGF5ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtNzA4OCw4ICs3MDg2LDYgQEAKIAkJMDMzQTZBN0YxNDdFMDdG
OTAwNTA5QjM2IC8qIEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDMzQTZBODAxNDdFMDg4NjAwNTA5QjM2IC8qIEpTSFRNTFByb3BlcnRpZXND
b2xsZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRN
TFByb3BlcnRpZXNDb2xsZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDMzQTZBODIxNDdFMDhBNjAwNTA5QjM2IC8qIEpTSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSFRNTFByb3BlcnRpZXNDb2xsZWN0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA1MkJGQ0U4MTI4QUJGMTUwMEZE
MzM4RCAvKiBHZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcDsgcGF0aCA9IG1vY2svR2Vv
bG9jYXRpb25DbGllbnRNb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDUy
QkZDRUExMjhBQkYyMTAwRkQzMzhEIC8qIEdlb2xvY2F0aW9uQ2xpZW50TW9jay5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBHZW9sb2NhdGlvbkNsaWVudE1vY2suaDsgcGF0aCA9
IG1vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA1NjJGOTQ0MTU3M0VDRUIwMDMxQ0ExNiAvKiBXZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYktpdENTU1NWR0Rv
Y3VtZW50VmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNTYyRjk0NTE1
NzNFQ0VCMDAzMUNBMTYgLyogV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA1NjJGOTYwMTU3M0Y4OEYwMDMxQ0ExNiAvKiBQbGF0
Zm9ybUxheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtTGF5
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NDYxLDggKzE1NDU3LDYgQEAK
IAkJCWNoaWxkcmVuID0gKAogCQkJCTU5MzA5QTEwMTFGNEFFNTgwMDI1MDYwMyAvKiBEZXZpY2VP
cmllbnRhdGlvbkNsaWVudE1vY2suY3BwICovLAogCQkJCTU5MzA5QTEyMTFGNEFFNkEwMDI1MDYw
MyAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCAqLywKLQkJCQkwNTJCRkNFODEyOEFC
RjE1MDBGRDMzOEQgLyogR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcCAqLywKLQkJCQkwNTJCRkNF
QTEyOEFCRjIxMDBGRDMzOEQgLyogR2VvbG9jYXRpb25DbGllbnRNb2NrLmggKi8sCiAJCQkJMEZF
NzE0MDMxNDIxNzBCODAwREIzM0JBIC8qIFNjcm9sbGJhclRoZW1lTW9jay5jcHAgKi8sCiAJCQkJ
MEZFNzE0MDQxNDIxNzBCODAwREIzM0JBIC8qIFNjcm9sbGJhclRoZW1lTW9jay5oICovLAogCQkJ
KTsKQEAgLTIzNTIxLDcgKzIzNTE1LDYgQEAKIAkJCQkwNzIwQjBBMTE0RDMzMjM1MDA2NDI5NTUg
LyogR2VuZXJpY0V2ZW50UXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NDZBRjI0MTRGNERE
RTYwMDNFN0E3MCAvKiBHZW9sb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1NkNCMjMx
MEQ1QUM4MDAwQTc3QzY0IC8qIEdlb2xvY2F0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLywKLQkJ
CQkwNTJCRkNFQjEyOEFCRjIxMDBGRDMzOEQgLyogR2VvbG9jYXRpb25DbGllbnRNb2NrLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5NzQ2QUYyNzE0RjREREU2MDAzRTdBNzAgLyogR2VvbG9jYXRpb25D
b250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzQ2QUYyODE0RjREREU2MDAzRTdBNzAg
LyogR2VvbG9jYXRpb25FcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0NkFGMjkxNEY0RERF
NjAwM0U3QTcwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjY3
NTMsNyArMjY3NDYsNiBAQAogCQkJCTJENDgxRjAzMTQ2QjVDNjUwMEFBNzgzNCAvKiBHZW5lcmF0
b3JHZW5lcmF0ZWRJbWFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzIwQjBBMDE0RDMzMjM1
MDA2NDI5NTUgLyogR2VuZXJpY0V2ZW50UXVldWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc0
NkFGMjMxNEY0RERFNjAwM0U3QTcwIC8qIEdlb2xvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCTA1MkJGQ0U5MTI4QUJGMTUwMEZEMzM4RCAvKiBHZW9sb2NhdGlvbkNsaWVudE1vY2suY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTc0NkFGMjYxNEY0RERFNjAwM0U3QTcwIC8qIEdlb2xvY2F0
aW9uQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzIwQjBBMDE0RDMzMjM1MDA2
NDI5NTYgLyogR2VzdHVyZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyQzNEQTZEMEQw
MDZDRDYwMEVGNkYyNiAvKiBHbHlwaFBhZ2VUcmVlTm9kZS5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRN
b2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRN
b2NrLmNwcAppbmRleCAyNzZiNGEzNDMwOWM5Mjk4YThmODViZDhkNjY5ZGIxMTlkYzkxNDE4Li4z
ODNiZjk4ZTMxYzI4NTNlMzcwOGI2YjYxNmNjYWE0MWJlNmRjZDUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwCkBA
IC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTQx
LDYgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBHZW9sb2NhdGlvbkNsaWVudE1vY2s6
Okdlb2xvY2F0aW9uQ2xpZW50TW9jaygpCiAgICAgOiBtX2NvbnRyb2xsZXIoMCkKKyAgICAsIG1f
aGFzRXJyb3IoZmFsc2UpCiAgICAgLCBtX2NvbnRyb2xsZXJUaW1lcih0aGlzLCAmR2VvbG9jYXRp
b25DbGllbnRNb2NrOjpjb250cm9sbGVyVGltZXJGaXJlZCkKICAgICAsIG1fcGVybWlzc2lvblRp
bWVyKHRoaXMsICZHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnBlcm1pc3Npb25UaW1lckZpcmVkKQog
ICAgICwgbV9pc0FjdGl2ZShmYWxzZSkKQEAgLTYyLDE0ICs2NCwxNSBAQCB2b2lkIEdlb2xvY2F0
aW9uQ2xpZW50TW9jazo6c2V0Q29udHJvbGxlcihHZW9sb2NhdGlvbkNvbnRyb2xsZXIgKmNvbnRy
b2xsZXIpCiB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0UG9zaXRpb24oUGFzc1JlZlB0
cjxHZW9sb2NhdGlvblBvc2l0aW9uPiBwb3NpdGlvbikKIHsKICAgICBtX2xhc3RQb3NpdGlvbiA9
IHBvc2l0aW9uOwotICAgIG1fbGFzdEVycm9yID0gMDsKKyAgICBjbGVhckVycm9yKCk7CiAgICAg
YXN5bmNVcGRhdGVDb250cm9sbGVyKCk7CiB9CiAKLXZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2Nr
OjpzZXRFcnJvcihQYXNzUmVmUHRyPEdlb2xvY2F0aW9uRXJyb3I+IGVycm9yKQordm9pZCBHZW9s
b2NhdGlvbkNsaWVudE1vY2s6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVF
cnJvcihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKLSAgICBtX2xhc3RFcnJvciA9IGVy
cm9yOwotICAgIG1fbGFzdFBvc2l0aW9uID0gMDsKKyAgICBtX2hhc0Vycm9yID0gdHJ1ZTsKKyAg
ICBtX2Vycm9yTWVzc2FnZSA9IGVycm9yTWVzc2FnZTsKKyAgICBtX2xhc3RQb3NpdGlvbiA9IG51
bGxwdHI7CiAgICAgYXN5bmNVcGRhdGVDb250cm9sbGVyKCk7CiB9CiAKQEAgLTEyNSw3ICsxMjgs
NyBAQCB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6cGVybWlzc2lvblRpbWVyRmlyZWQoV2Vi
Q29yZTo6VGltZXI8R2VvbG9jYXRpb25DbGllbgogdm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6
OnJlc2V0KCkKIHsKICAgICBtX2xhc3RQb3NpdGlvbiA9IDA7Ci0gICAgbV9sYXN0RXJyb3IgPSAw
OworICAgIGNsZWFyRXJyb3IoKTsKICAgICBtX3Blcm1pc3Npb25TdGF0ZSA9IFBlcm1pc3Npb25T
dGF0ZVVuc2V0OwogfQogCkBAIC0xNzEsMTAgKzE3NCwxOSBAQCB2b2lkIEdlb2xvY2F0aW9uQ2xp
ZW50TW9jazo6Y29udHJvbGxlclRpbWVyRmlyZWQoVGltZXI8R2VvbG9jYXRpb25DbGllbnRNb2Nr
PiogdAogICAgIEFTU0VSVF9VTlVTRUQodGltZXIsIHRpbWVyID09ICZtX2NvbnRyb2xsZXJUaW1l
cik7CiAgICAgQVNTRVJUKG1fY29udHJvbGxlcik7CiAKLSAgICBpZiAobV9sYXN0UG9zaXRpb24u
Z2V0KCkpCisgICAgaWYgKG1fbGFzdFBvc2l0aW9uLmdldCgpKSB7CisgICAgICAgIEFTU0VSVCgh
bV9oYXNFcnJvcik7CiAgICAgICAgIG1fY29udHJvbGxlci0+cG9zaXRpb25DaGFuZ2VkKG1fbGFz
dFBvc2l0aW9uLmdldCgpKTsKLSAgICBlbHNlIGlmIChtX2xhc3RFcnJvci5nZXQoKSkKLSAgICAg
ICAgbV9jb250cm9sbGVyLT5lcnJvck9jY3VycmVkKG1fbGFzdEVycm9yLmdldCgpKTsKKyAgICB9
IGVsc2UgaWYgKG1faGFzRXJyb3IpIHsKKyAgICAgICAgUmVmUHRyPEdlb2xvY2F0aW9uRXJyb3I+
IGdlb2xvY2F0aW9FcnJvciA9IEdlb2xvY2F0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvbkVy
cm9yOjpQb3NpdGlvblVuYXZhaWxhYmxlLCBtX2Vycm9yTWVzc2FnZSk7CisgICAgICAgIG1fY29u
dHJvbGxlci0+ZXJyb3JPY2N1cnJlZChnZW9sb2NhdGlvRXJyb3IuZ2V0KCkpOworICAgIH0KK30K
Kwordm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6OmNsZWFyRXJyb3IoKQoreworICAgIG1faGFz
RXJyb3IgPSBmYWxzZTsKKyAgICBtX2Vycm9yTWVzc2FnZSA9IFN0cmluZygpOwogfQogCiB9IC8v
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9j
YXRpb25DbGllbnRNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0
aW9uQ2xpZW50TW9jay5oCmluZGV4IDhhYmQ1ZTk3MGU4YzA4OTMwZmExYTVhMzM3MjRmMzlhZDgw
ZjA1OGUuLjc5MjAxMzIwM2E1Yjk3MTRkZTEwOGRlNjE3ZGNhYWJiMDYxYjAwNzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2su
aApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBA
IC00Miw5ICs0Myw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR2VvbG9jYXRpb25D
b250cm9sbGVyOwogY2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlvbjsKLWNsYXNzIEdlb2xvY2F0aW9u
RXJyb3I7CiAKLS8vIFByb3ZpZGVzIGEgbW9jayBvYmplY3QgZm9yIHRoZSBnZW9sb2NhdGlvbiBj
bGllbnQKKy8vIEZJWE1FOiB0aGlzIHNob3VsZCBub3QgYmUgaW4gV2ViQ29yZS4gSXQgc2hvdWxk
IGJlIG1vdmVkIHRvIFdlYktpdC4KKy8vIFByb3ZpZGVzIGEgbW9jayBvYmplY3QgZm9yIHRoZSBn
ZW9sb2NhdGlvbiBjbGllbnQuCiBjbGFzcyBHZW9sb2NhdGlvbkNsaWVudE1vY2sgOiBwdWJsaWMg
R2VvbG9jYXRpb25DbGllbnQgewogcHVibGljOgogICAgIEdlb2xvY2F0aW9uQ2xpZW50TW9jaygp
OwpAQCAtNTMsOCArNTQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldCgpOwogICAgIHZvaWQg
c2V0Q29udHJvbGxlcihHZW9sb2NhdGlvbkNvbnRyb2xsZXIqKTsKIAotICAgIHZvaWQgc2V0RXJy
b3IoUGFzc1JlZlB0cjxHZW9sb2NhdGlvbkVycm9yPik7CiAgICAgdm9pZCBzZXRQb3NpdGlvbihQ
YXNzUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+KTsKKyAgICB2b2lkIHNldE1vY2tHZW9sb2Nh
dGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7
CiAgICAgdm9pZCBzZXRQZXJtaXNzaW9uKGJvb2wgYWxsb3dlZCk7CiAgICAgaW50IG51bWJlck9m
UGVuZGluZ1Blcm1pc3Npb25SZXF1ZXN0cygpIGNvbnN0OwogCkBAIC03NCw5ICs3NSwxMiBAQCBw
cml2YXRlOgogICAgIHZvaWQgYXN5bmNVcGRhdGVQZXJtaXNzaW9uKCk7CiAgICAgdm9pZCBwZXJt
aXNzaW9uVGltZXJGaXJlZChUaW1lcjxHZW9sb2NhdGlvbkNsaWVudE1vY2s+Kik7CiAKKyAgICB2
b2lkIGNsZWFyRXJyb3IoKTsKKwogICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlciogbV9jb250cm9s
bGVyOwogICAgIFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiBtX2xhc3RQb3NpdGlvbjsKLSAg
ICBSZWZQdHI8R2VvbG9jYXRpb25FcnJvcj4gbV9sYXN0RXJyb3I7CisgICAgYm9vbCBtX2hhc0Vy
cm9yOworICAgIFN0cmluZyBtX2Vycm9yTWVzc2FnZTsKICAgICBUaW1lcjxHZW9sb2NhdGlvbkNs
aWVudE1vY2s+IG1fY29udHJvbGxlclRpbWVyOwogICAgIFRpbWVyPEdlb2xvY2F0aW9uQ2xpZW50
TW9jaz4gbV9wZXJtaXNzaW9uVGltZXI7CiAgICAgYm9vbCBtX2lzQWN0aXZlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydC5jcHAKaW5kZXggZTRlNGVmMGMwN2Q2ZWEwYWMzNTVjZDkyNmQyYWY1
NDg3N2YxYzAzMy4uYTI2ZjAzZDQxY2Q3MmEzMWUxZDIxYmE1YTgwZThlOWZmMTU1N2EzNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtOTUsMjAgKzk2LDEwIEBAIHZvaWQgRHVtcFJl
bmRlclRyZWVTdXBwb3J0OjpyZXNldEdlb2xvY2F0aW9uTW9jayhXZWJQYWdlKiB3ZWJQYWdlKQog
ICAgIG1vY2tDbGllbnQtPnJlc2V0KCk7CiB9CiAKLXZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0
OjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihXZWJQYWdlKiB3ZWJQYWdlLCBpbnQgZXJyb3JDb2Rl
LCBjb25zdCBTdHJpbmcgbWVzc2FnZSkKK3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0OjpzZXRN
b2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoV2ViUGFnZSogd2ViUGFnZSwg
Y29uc3QgU3RyaW5nIG1lc3NhZ2UpCiB7Ci0gICAgR2VvbG9jYXRpb25FcnJvcjo6RXJyb3JDb2Rl
IGNvZGUgPSBHZW9sb2NhdGlvbkVycm9yOjpQb3NpdGlvblVuYXZhaWxhYmxlOwotICAgIHN3aXRj
aCAoZXJyb3JDb2RlKSB7Ci0gICAgY2FzZSBQb3NpdGlvbkVycm9yOjpQRVJNSVNTSU9OX0RFTklF
RDoKLSAgICAgICAgY29kZSA9IEdlb2xvY2F0aW9uRXJyb3I6OlBlcm1pc3Npb25EZW5pZWQ7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgUG9zaXRpb25FcnJvcjo6UE9TSVRJT05fVU5BVkFJTEFC
TEU6Ci0gICAgICAgIGNvZGUgPSBHZW9sb2NhdGlvbkVycm9yOjpQb3NpdGlvblVuYXZhaWxhYmxl
OwotICAgICAgICBicmVhazsKLSAgICB9Ci0KICAgICBHZW9sb2NhdGlvbkNsaWVudE1vY2sqIG1v
Y2tDbGllbnQgPSBzdGF0aWNfY2FzdDxHZW9sb2NhdGlvbkNsaWVudE1vY2sqPihHZW9sb2NhdGlv
bkNvbnRyb2xsZXI6OmZyb20oY29yZVBhZ2Uod2ViUGFnZSkpLT5jbGllbnQoKSk7Ci0gICAgbW9j
a0NsaWVudC0+c2V0RXJyb3IoR2VvbG9jYXRpb25FcnJvcjo6Y3JlYXRlKGNvZGUsIG1lc3NhZ2Up
KTsKKyAgICBtb2NrQ2xpZW50LT5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxl
RXJyb3IobWVzc2FnZSk7CiB9CiAKIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0OjpzZXRNb2Nr
R2VvbG9jYXRpb25QZXJtaXNzaW9uKFdlYlBhZ2UqIHdlYlBhZ2UsIGJvb2wgYWxsb3dlZCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydC5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0LmgKaW5kZXggNThmYzFiNTNlZGI1ZDhhYWMwZDM4MjYwNTY1
YWM0NzAyMWVhMjVlNi4uMDFmZTRmODNhN2YyZWFiMGUxMjk4NzBhOWRkY2YxODhlODgyMTg4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0LmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC01Miw3ICs1Myw3IEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyBpbnQgbnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMo
QmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlKik7CiAgICAgc3RhdGljIHZvaWQgcmVzZXRHZW9s
b2NhdGlvbk1vY2soQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlKik7Ci0gICAgc3RhdGljIHZv
aWQgc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlKiwg
aW50IGVycm9yQ29kZSwgY29uc3QgV1RGOjpTdHJpbmcgbWVzc2FnZSk7CisgICAgc3RhdGljIHZv
aWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKEJsYWNrQmVycnk6
OldlYktpdDo6V2ViUGFnZSosIGNvbnN0IFdURjo6U3RyaW5nIG1lc3NhZ2UpOwogICAgIHN0YXRp
YyB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBlcm1pc3Npb24oQmxhY2tCZXJyeTo6V2ViS2l0OjpX
ZWJQYWdlKiwgYm9vbCBhbGxvd2VkKTsKICAgICBzdGF0aWMgdm9pZCBzZXRNb2NrR2VvbG9jYXRp
b25Qb3NpdGlvbihCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2UqLCBkb3VibGUgbGF0aXR1ZGUs
IGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSk7CiAgICAgc3RhdGljIHZvaWQgc2Nh
bGVQYWdlQnkoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlKiwgZmxvYXQsIGZsb2F0LCBmbG9h
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHZW9sb2Nh
dGlvbkNsaWVudE1vY2suaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xv
Y2F0aW9uQ2xpZW50TW9jay5oCmluZGV4IDA1MmE1NDZhZGNjMmQxZWJiZDIyNGI2ZDc3NDU0NmY3
N2FjYzU1YWUuLjdlZmYyYmEwZGMzZGNjNWVlNjJmN2Q4MDE5YTIwODU5MTgzZDVmMTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0aW9uQ2xpZW50
TW9jay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0aW9u
Q2xpZW50TW9jay5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB+V2ViR2VvbG9jYXRp
b25DbGllbnRNb2NrKCkgeyByZXNldCgpOyB9CiAKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0
UG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJh
Y3kpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRFcnJvcihpbnQgZXJyb3JDb2RlLCBjb25z
dCBXZWJTdHJpbmcmIG1lc3NhZ2UpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRNb2NrR2Vv
bG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdl
KTsKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UGVybWlzc2lvbihib29sKTsKICAgICBXRUJL
SVRfRVhQT1JUIGludCBudW1iZXJPZlBlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdHMoKSBjb25zdDsK
ICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXRNb2NrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcAppbmRleCAz
ZDk2MzA3MDdmZWI1YjYzZjAzZTNlMjQxOWIyZTMwNWFmOGQwMjEyLi4zNzNmMjkyNjkzMGMxNDEz
OTkyZjQxYTcwNjkxNWNjNzI5MzAyMTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJHZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkdlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKQEAgLTU4LDIzICs1OCwx
MCBAQCB2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0UG9zaXRpb24oZG91YmxlIGxh
dGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkbwogICAgIG1fY2xpZW50TW9jay0+c2V0UG9zaXRp
b24od2ViUG9zaXRpb24pOwogfQogCi12b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0
RXJyb3IoaW50IGVycm9yQ29kZSwgY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlKQordm9pZCBXZWJH
ZW9sb2NhdGlvbkNsaWVudE1vY2s6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFi
bGVFcnJvcihjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgV2ViR2VvbG9jYXRpb25F
cnJvcjo6RXJyb3IgY29kZTsKLSAgICBzd2l0Y2ggKGVycm9yQ29kZSkgewotICAgIGNhc2UgUG9z
aXRpb25FcnJvcjo6UEVSTUlTU0lPTl9ERU5JRUQ6Ci0gICAgICAgIGNvZGUgPSBXZWJHZW9sb2Nh
dGlvbkVycm9yOjpFcnJvclBlcm1pc3Npb25EZW5pZWQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgUG9zaXRpb25FcnJvcjo6UE9TSVRJT05fVU5BVkFJTEFCTEU6Ci0gICAgICAgIGNvZGUgPSBX
ZWJHZW9sb2NhdGlvbkVycm9yOjpFcnJvclBvc2l0aW9uVW5hdmFpbGFibGU7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCiAgICAgV2ViR2VvbG9jYXRpb25FcnJvciB3ZWJFcnJvcihjb2Rl
LCBtZXNzYWdlKTsKLSAgICBtX2NsaWVudE1vY2stPnNldEVycm9yKHdlYkVycm9yKTsKKyAgICBt
X2NsaWVudE1vY2stPnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcih3
ZWJFcnJvcik7CiB9CiAKIHZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpzZXRQZXJtaXNz
aW9uKGJvb2wgYWxsb3dlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCmluZGV4IGU1ZDY5ODlk
MWQ5NTc1MzcyNjY0Mzg2Mjg3MDMxYmUxODJiOTE5OGQuLmRlN2ZkMzllNzVlZTUwYWY0ZDI3OTdl
OTZjMWQ5ZDcwYWQ5NWQ5OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcApAQCAtMyw2ICsz
LDcgQEAKICAqICBDb3B5cmlnaHQgKEMpIDIwMTAgSm9vbmUgSHVyIDxqb29uZUBrbGRwLm9yZz4K
ICAqICBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqICBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqICBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpA
QCAtNjU4LDIzICs2NTksMTEgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldE1v
Y2tHZW9sb2NhdGlvblBvc2l0aW9uKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcKICNlbmRpZgogfQog
Ci12b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3Io
V2ViS2l0V2ViVmlldyogd2ViVmlldywgaW50IGVycm9yQ29kZSwgY29uc3QgZ2NoYXIqIGVycm9y
TWVzc2FnZSkKK3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRNb2NrR2VvbG9jYXRp
b25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3Qg
Z2NoYXIqIGVycm9yTWVzc2FnZSkKIHsKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCiAgICAgR2Vv
bG9jYXRpb25DbGllbnRNb2NrKiBtb2NrID0gc3RhdGljX2Nhc3Q8R2VvbG9jYXRpb25DbGllbnRN
b2NrKj4oR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKGNvcmUod2ViVmlldykpLT5jbGllbnQo
KSk7Ci0KLSAgICBHZW9sb2NhdGlvbkVycm9yOjpFcnJvckNvZGUgY29kZTsKLSAgICBzd2l0Y2gg
KGVycm9yQ29kZSkgewotICAgIGNhc2UgUG9zaXRpb25FcnJvcjo6UEVSTUlTU0lPTl9ERU5JRUQ6
Ci0gICAgICAgIGNvZGUgPSBHZW9sb2NhdGlvbkVycm9yOjpQZXJtaXNzaW9uRGVuaWVkOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFBvc2l0aW9uRXJyb3I6OlBPU0lUSU9OX1VOQVZBSUxBQkxF
OgotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGNvZGUgPSBHZW9sb2NhdGlvbkVycm9yOjpQb3NpdGlv
blVuYXZhaWxhYmxlOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBtb2NrLT5zZXRFcnJv
cihHZW9sb2NhdGlvbkVycm9yOjpjcmVhdGUoY29kZSwgZXJyb3JNZXNzYWdlKSk7CisgICAgbW9j
ay0+c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKGVycm9yTWVzc2Fn
ZSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaAppbmRleCAzNzUwMjBkN2I5NDFh
MTdhZTQ4NWFlNzM2ZWY2ODQ4NjBjODk4MjRkLi44MDFkYzViNWFlYjA5ZGI0MTljMTZmNjk1MDg2
NDc3MWUxNjJiNjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaApAQCAtMSw1ICsxLDYgQEAKIC8q
CiAgKiAgQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0xMTEsNyArMTEyLDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyB2b2lkIHJlc2V0R2VvbG9jYXRpb25DbGllbnRNb2NrKFdlYktp
dFdlYlZpZXcqKTsKICAgICBzdGF0aWMgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25QZXJtaXNzaW9u
KFdlYktpdFdlYlZpZXcqLCBib29sIGFsbG93ZWQpOwogICAgIHN0YXRpYyB2b2lkIHNldE1vY2tH
ZW9sb2NhdGlvblBvc2l0aW9uKFdlYktpdFdlYlZpZXcqLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJs
ZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSk7Ci0gICAgc3RhdGljIHZvaWQgc2V0TW9ja0dl
b2xvY2F0aW9uRXJyb3IoV2ViS2l0V2ViVmlldyosIGludCBlcnJvckNvZGUsIGNvbnN0IGdjaGFy
KiBlcnJvck1lc3NhZ2UpOworICAgIHN0YXRpYyB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0
aW9uVW5hdmFpbGFibGVFcnJvcihXZWJLaXRXZWJWaWV3KiwgY29uc3QgZ2NoYXIqIGVycm9yTWVz
c2FnZSk7CiAgICAgc3RhdGljIGludCBudW1iZXJPZlBlbmRpbmdHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0cyhXZWJLaXRXZWJWaWV3Kik7CiAKICAgICBzdGF0aWMgdm9pZCBzZXRQYWdlQ2Fj
aGVTdXBwb3J0c1BsdWdpbnMoV2ViS2l0V2ViVmlldyosIGJvb2wgZW5hYmxlZCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggYzFmMGEyZDg5ZDQyZWRiOWJlODk4MzJiMzM0
Y2RiOTQwNDBhYTg2Yi4uODBkNTQxNzRjZDEyZGNmMTNlNjRiYjgyNmFmZDFmZWNmZmM1MmQyYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtNjUxMSwxMSArNjUxMSwxMSBA
QCBzdGF0aWMgdm9pZCBnbGliQ29udGV4dEl0ZXJhdGlvbkNhbGxiYWNrKENGUnVuTG9vcE9ic2Vy
dmVyUmVmLCBDRlJ1bkxvb3BBY3Rpdml0eQogI2VuZGlmIC8vIEVOQUJMRShHRU9MT0NBVElPTikK
IH0KIAotLSAodm9pZClfZ2VvbG9jYXRpb25EaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJy
b3IKKy0gKHZvaWQpX2dlb2xvY2F0aW9uRGlkRmFpbFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKWVy
cm9yTWVzc2FnZQogewogI2lmIEVOQUJMRShHRU9MT0NBVElPTikKICAgICBpZiAoX3ByaXZhdGUg
JiYgX3ByaXZhdGUtPnBhZ2UpIHsKLSAgICAgICAgUmVmUHRyPEdlb2xvY2F0aW9uRXJyb3I+IGdl
b2xvY2F0aW9FcnJvciA9IEdlb2xvY2F0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvbkVycm9y
OjpQb3NpdGlvblVuYXZhaWxhYmxlLCBbZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25dKTsKKyAg
ICAgICAgUmVmUHRyPEdlb2xvY2F0aW9uRXJyb3I+IGdlb2xvY2F0aW9FcnJvciA9IEdlb2xvY2F0
aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvbkVycm9yOjpQb3NpdGlvblVuYXZhaWxhYmxlLCBl
cnJvck1lc3NhZ2UpOwogICAgICAgICBXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZy
b20oX3ByaXZhdGUtPnBhZ2UpLT5lcnJvck9jY3VycmVkKGdlb2xvY2F0aW9FcnJvci5nZXQoKSk7
CiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShHRU9MT0NBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAppbmRleCA4MjY0NzRlNDFiMzRjMjJiZmY1NDU2MGY2
YTBiMThmNzIzZjkwN2UzLi5jNDZkMzVlMTIzMjU2NjlkNjFhZDhlMmFmN2QyOTQ1ZDNhYjFjNGVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCkBAIC03Mjgs
NyArNzI4LDcgQEAgQ291bGQgYmUgd29ydGggYWRkaW5nIHRvIHRoZSBBUEkuCiAtIChpZDxXZWJH
ZW9sb2NhdGlvblByb3ZpZGVyPilfZ2VvbG9jYXRpb25Qcm92aWRlcjsKIAogLSAodm9pZClfZ2Vv
bG9jYXRpb25EaWRDaGFuZ2VQb3NpdGlvbjooV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiAqKXBvc2l0
aW9uOwotLSAodm9pZClfZ2VvbG9jYXRpb25EaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJy
b3I7CistICh2b2lkKV9nZW9sb2NhdGlvbkRpZEZhaWxXaXRoTWVzc2FnZTooTlNTdHJpbmcgKill
cnJvck1lc3NhZ2U7CiBAZW5kCiAKIEBpbnRlcmZhY2UgV2ViVmlldyAoV2ViVmlld05vdGlmaWNh
dGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAKaW5kZXggZGM4MjMxNjVjNzMxZWMwNTJlOWUzMmEy
MmUyODE2ODczZGYwZTJhYy4uMTkyYmFiNDM3NTE3MDhlMDIwYzZiMzg5MDQ1MjhmYzg3NWExYjgz
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAKQEAgLTIsNyArMiw3IEBACiAgICAgQ29weXJpZ2h0
IChDKSAyMDEwIFJvYmVydCBIb2dhbiA8cm9iZXJ0QHJvYmVydGhvZ2FuLm5ldD4KICAgICBDb3B5
cmlnaHQgKEMpIDIwMDgsMjAwOSwyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKQogICAgIENvcHlyaWdodCAoQykgMjAwNyBTdGFpa29zIENvbXB1dGluZyBT
ZXJ2aWNlcyBJbmMuCi0gICAgQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4KKyAgICBDb3B5
cmlnaHQgKEMpIDIwMDcsIDIwMTIgQXBwbGUgSW5jLgogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC03
NTMsMjMgKzc1MywxMiBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRNb2NrR2Vv
bG9jYXRpb25Qb3NpdGlvbihRV2ViUGFnZSogcGFnZSwgZG91YmxlCiAjZW5kaWYKIH0KIAotdm9p
ZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoUVdlYlBh
Z2UqIHBhZ2UsIGludCBlcnJvckNvZGUsIGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2UpCit2b2lkIER1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxh
YmxlRXJyb3IoUVdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2UpCiB7CiAjaWYg
RU5BQkxFKEdFT0xPQ0FUSU9OKQogICAgIFBhZ2UqIGNvcmVQYWdlID0gUVdlYlBhZ2VQcml2YXRl
Ojpjb3JlKHBhZ2UpOwotCi0gICAgR2VvbG9jYXRpb25FcnJvcjo6RXJyb3JDb2RlIGNvZGUgPSBH
ZW9sb2NhdGlvbkVycm9yOjpQb3NpdGlvblVuYXZhaWxhYmxlOwotICAgIHN3aXRjaCAoZXJyb3JD
b2RlKSB7Ci0gICAgY2FzZSBQb3NpdGlvbkVycm9yOjpQRVJNSVNTSU9OX0RFTklFRDoKLSAgICAg
ICAgY29kZSA9IEdlb2xvY2F0aW9uRXJyb3I6OlBlcm1pc3Npb25EZW5pZWQ7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgUG9zaXRpb25FcnJvcjo6UE9TSVRJT05fVU5BVkFJTEFCTEU6Ci0gICAg
ICAgIGNvZGUgPSBHZW9sb2NhdGlvbkVycm9yOjpQb3NpdGlvblVuYXZhaWxhYmxlOwotICAgICAg
ICBicmVhazsKLSAgICB9Ci0KICAgICBHZW9sb2NhdGlvbkNsaWVudE1vY2sqIG1vY2tDbGllbnQg
PSBzdGF0aWNfY2FzdDxHZW9sb2NhdGlvbkNsaWVudE1vY2sqPihHZW9sb2NhdGlvbkNvbnRyb2xs
ZXI6OmZyb20oY29yZVBhZ2UpLT5jbGllbnQoKSk7Ci0gICAgbW9ja0NsaWVudC0+c2V0RXJyb3Io
R2VvbG9jYXRpb25FcnJvcjo6Y3JlYXRlKGNvZGUsIG1lc3NhZ2UpKTsKKyAgICBtb2NrQ2xpZW50
LT5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IobWVzc2FnZSk7CiAj
ZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oCmluZGV4IDg2MjIxMzY1Nzk4ZjEwYTMwNmNkY2U4
N2UyMjQ3MzAxMWU3ZjlkZWYuLmNlZmI5ZDFjODc0NTY1YzdmZjAwZGIyZWVhMDM0MjMzZmI2MWRm
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgKQEAgLTIsNyArMiw3IEBACiAgICAgQ29weXJpZ2h0IChD
KSAyMDEwIFJvYmVydCBIb2dhbiA8cm9iZXJ0QHJvYmVydGhvZ2FuLm5ldD4KICAgICBDb3B5cmln
aHQgKEMpIDIwMDgsMjAwOSwyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKQogICAgIENvcHlyaWdodCAoQykgMjAwNyBTdGFpa29zIENvbXB1dGluZyBTZXJ2
aWNlcyBJbmMuCi0gICAgQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4KKyAgICBDb3B5cmln
aHQgKEMpIDIwMDcsIDIwMTIgQXBwbGUgSW5jLgogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xNDEs
NyArMTQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHJlc2V0R2VvbG9jYXRpb25Nb2Nr
KFFXZWJQYWdlKik7CiAgICAgc3RhdGljIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUGVybWlzc2lv
bihRV2ViUGFnZSosIGJvb2wgYWxsb3dlZCk7CiAgICAgc3RhdGljIHZvaWQgc2V0TW9ja0dlb2xv
Y2F0aW9uUG9zaXRpb24oUVdlYlBhZ2UqLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1
ZGUsIGRvdWJsZSBhY2N1cmFjeSk7Ci0gICAgc3RhdGljIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9u
RXJyb3IoUVdlYlBhZ2UqLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBRU3RyaW5nJiBtZXNzYWdlKTsK
KyAgICBzdGF0aWMgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJy
b3IoUVdlYlBhZ2UqLCBjb25zdCBRU3RyaW5nJiBtZXNzYWdlKTsKICAgICBzdGF0aWMgaW50IG51
bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzKFFXZWJQYWdlKik7CiAK
ICAgICBzdGF0aWMgaW50IHdvcmtlclRocmVhZENvdW50KCk7CmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTAzMjFiNWNiMDNhNzBlNzhmOWY0OTli
NDI1NWUwNmM5NmExZDJiYS4uNmFjYmI3OTM2YTVjMjg5NzA0MTQ1OWQzMjNkNWM5YzdmN2Y0Yzdk
MyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQ3IEBACisyMDEyLTA5LTIxICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Vi
a2l0Lm9yZz4KKworICAgICAgICBGaXggR2VvbG9jYXRpb24gZXJyb3IgcmVwb3J0aW5nIGluIHRo
ZSB0ZXN0IHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk3Mzg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9h
Y2gsIHJhdGlvbmFsZS4gUGxlYXNlIGFkZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93
IChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcDoKKyAg
ICAgICAgKHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3JDYWxsYmFjayk6CisgICAgICAg
IChUZXN0UnVubmVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKFRlc3RSdW5uZXIpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2JsYWNrYmVycnkvVGVzdFJ1bm5lckJsYWNrQmVycnkuY3BwOgorICAgICAgICAoVGVz
dFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25FcnJvcik6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChEUlRUZXN0
UnVubmVyOjpEUlRUZXN0UnVubmVyKToKKyAgICAgICAgKERSVFRlc3RSdW5uZXI6OnNldE1vY2tH
ZW9sb2NhdGlvblBvc2l0aW9uRXJyb3IpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL0RSVFRlc3RSdW5uZXIuaDoKKyAgICAgICAgKERSVFRlc3RSdW5uZXIpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZsLmNwcDoKKyAgICAgICAgKFRlc3RSdW5u
ZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3IpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2d0ay9UZXN0UnVubmVyR3RrLmNwcDoKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldE1v
Y2tHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3IpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21h
Yy9Nb2NrR2VvbG9jYXRpb25Qcm92aWRlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21h
Yy9Nb2NrR2VvbG9jYXRpb25Qcm92aWRlci5tbToKKyAgICAgICAgKC1bTW9ja0dlb2xvY2F0aW9u
UHJvdmlkZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtNb2NrR2VvbG9jYXRpb25Qcm92aWRlciBy
ZXNldEVycm9yXSk6CisgICAgICAgICgtW01vY2tHZW9sb2NhdGlvblByb3ZpZGVyIHNldFBvc2l0
aW9uOl0pOgorICAgICAgICAoLVtNb2NrR2VvbG9jYXRpb25Qcm92aWRlciBzZXRNb2NrR2VvbG9j
YXRpb25Qb3NpdGlvbkVycm9yV2l0aE1lc3NhZ2U6XSk6CisgICAgICAgICgtW01vY2tHZW9sb2Nh
dGlvblByb3ZpZGVyIGxhc3RQb3NpdGlvbl0pOgorICAgICAgICAoLVtNb2NrR2VvbG9jYXRpb25Q
cm92aWRlciB0aW1lckZpcmVkXSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RS
dW5uZXJNYWMubW06CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3Np
dGlvbkVycm9yKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuY3Bw
OgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25FcnJvcik6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0Lmg6CisgICAgICAgIChU
ZXN0UnVubmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5j
cHA6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbkVycm9y
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93eC9UZXN0UnVubmVyV3guY3BwOgorICAgICAg
ICAoVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25FcnJvcik6CisKIDIwMTIt
MDktMjEgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgd2Vi
a2l0cHk6IGRyb3Agc3VwcG9ydCBmb3Igb2xkIFRlc3RFeHBlY3RhdGlvbnMgc3ludGF4CmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDFkMDBjNTBhMzVhMzdlYzBmYWRjMThhZDg0
ZTMwZGI3MThjOGEwZDQuLjlmN2E3YzFiZWNhMGFiYTg0MzY5ZTk3ZmVlOTFlZWMyZGMyNmNkNTcg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTEsIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEw
IEpvb25lIEh1ciA8am9vbmVAa2xkcC5vcmc+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0xMDk1LDE3
ICsxMDk1LDE2IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9u
Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqCiAgICAgcmV0dXJuIEpTVmFsdWVN
YWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCi1zdGF0aWMgSlNWYWx1ZVJlZiBzZXRNb2NrR2Vv
bG9jYXRpb25FcnJvckNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBm
dW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNv
bnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3N0YXRp
YyBKU1ZhbHVlUmVmIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvckNh
bGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmpl
Y3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYg
YXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKLSAgICBpZiAoYXJndW1lbnRD
b3VudCA8IDIpCisgICAgaWYgKGFyZ3VtZW50Q291bnQgIT0gMSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogCi0gICAgaW50IGNvZGUgPSBKU1ZhbHVlVG9O
dW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzBdLCBOVUxMKTsKLSAgICBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gbWVzc2FnZShBZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBhcmd1
bWVudHNbMV0sIGV4Y2VwdGlvbikpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBtZXNz
YWdlKEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhj
ZXB0aW9uKSk7CiAgICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKIAogICAgIFRlc3RSdW5uZXIqIGNv
bnRyb2xsZXIgPSByZWludGVycHJldF9jYXN0PFRlc3RSdW5uZXIqPihKU09iamVjdEdldFByaXZh
dGUodGhpc09iamVjdCkpOwotICAgIGNvbnRyb2xsZXItPnNldE1vY2tHZW9sb2NhdGlvbkVycm9y
KGNvZGUsIG1lc3NhZ2UuZ2V0KCkpOworICAgIGNvbnRyb2xsZXItPnNldE1vY2tHZW9sb2NhdGlv
blBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihtZXNzYWdlLmdldCgpKTsKIAogICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KQEAgLTIyNjYsNyArMjI2NSw3IEBAIEpT
U3RhdGljRnVuY3Rpb24qIFRlc3RSdW5uZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAgICAgIHsg
InNldE1haW5GcmFtZUlzRmlyc3RSZXNwb25kZXIiLCBzZXRNYWluRnJhbWVJc0ZpcnN0UmVzcG9u
ZGVyQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0TWluaW11bVRpbWVySW50ZXJ2YWwi
LCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNl
dE1vY2tEZXZpY2VPcmllbnRhdGlvbiIsIHNldE1vY2tEZXZpY2VPcmllbnRhdGlvbkNhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCi0gICAgICAgIHsgInNldE1vY2tHZW9sb2NhdGlvbkVycm9yIiwgc2V0TW9ja0dl
b2xvY2F0aW9uRXJyb3JDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJzZXRNb2NrR2VvbG9j
YXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IiLCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlv
blVuYXZhaWxhYmxlRXJyb3JDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRNb2NrR2Vv
bG9jYXRpb25Qb3NpdGlvbiIsIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uQ2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKICAgICAgICAgeyAiYWRkTW9ja1NwZWVjaElucHV0UmVzdWx0IiwgYWRkTW9ja1NwZWVj
aElucHV0UmVzdWx0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0TW9ja1NwZWVjaElu
cHV0RHVtcFJlY3QiLCBzZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdENhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmggYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmgKaW5kZXggOWJjYzk1YmM5MmQzMjk2MWU1MWM0YTMz
NzliMzc4Mzk0MjI3ZjI1OS4uZWRkMGRmZGE3NWI2MzE5NmFhOWMwMmJkMWJiZDdkYjFhNDQ1YjQy
MCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MTAwLDggKzEwMCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEF1dG9tYXRpY0xpbmtEZXRlY3Rp
b25FbmFibGVkKGJvb2wgZmxhZyk7CiAgICAgdm9pZCBzZXRNYWluRnJhbWVJc0ZpcnN0UmVzcG9u
ZGVyKGJvb2wgZmxhZyk7CiAgICAgdm9pZCBzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oYm9vbCBj
YW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91Ymxl
IGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpOwotICAgIHZvaWQgc2V0
TW9ja0dlb2xvY2F0aW9uRXJyb3IoaW50IGNvZGUsIEpTU3RyaW5nUmVmIG1lc3NhZ2UpOwogICAg
IHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUg
bG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kpOworICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9u
UG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKEpTU3RyaW5nUmVmIG1lc3NhZ2UpOwogICAgIHZvaWQg
YWRkTW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCwgZG91YmxlIGNvbmZp
ZGVuY2UsIEpTU3RyaW5nUmVmIGxhbmd1YWdlKTsKICAgICB2b2lkIHNldE1vY2tTcGVlY2hJbnB1
dER1bXBSZWN0KGJvb2wgZmxhZyk7CiAgICAgdm9pZCBzZXRQZXJzaXN0ZW50VXNlclN0eWxlU2hl
ZXRMb2NhdGlvbihKU1N0cmluZ1JlZiBwYXRoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2JsYWNrYmVycnkvVGVzdFJ1bm5lckJsYWNrQmVycnkuY3BwIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvYmxhY2tiZXJyeS9UZXN0UnVubmVyQmxhY2tCZXJyeS5jcHAKaW5kZXggODk4Njkw
MGM2YjNlNTMyMWViNGM2ZDAzOWNiNDBmZGU4MmMzNWRlYy4uODBkNWQ0MzIwMWM0MjU1ZmFjZGIz
OGYwYzMyOGE0Yzc0N2M2MjIzNCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxh
Y2tiZXJyeS9UZXN0UnVubmVyQmxhY2tCZXJyeS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvYmxhY2tiZXJyeS9UZXN0UnVubmVyQmxhY2tCZXJyeS5jcHAKQEAgLTEsNSArMSw2IEBACiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBM
aW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC00NDksMTAg
KzQ1MCwxMCBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRv
dWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZAogICAgIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydDo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1w
UmVuZGVyVHJlZTo6Y3VycmVudEluc3RhbmNlKCktPnBhZ2UoKSwgbGF0aXR1ZGUsIGxvbmdpdHVk
ZSwgYWNjdXJhY3kpOwogfQogCi12b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvbkVy
cm9yKGludCBjb2RlLCBKU1N0cmluZ1JlZiBtZXNzYWdlKQordm9pZCBUZXN0UnVubmVyOjpzZXRN
b2NrR2VvbG9jYXRpb25Qb3NpdGlvbkVycm9yKEpTU3RyaW5nUmVmIG1lc3NhZ2UpCiB7CiAgICAg
U3RyaW5nIG1lc3NhZ2VTdHIgPSBqc1N0cmluZ1JlZlRvV2ViQ29yZVN0cmluZyhtZXNzYWdlKTsK
LSAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnQ6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKEJsYWNr
QmVycnk6OldlYktpdDo6RHVtcFJlbmRlclRyZWU6OmN1cnJlbnRJbnN0YW5jZSgpLT5wYWdlKCks
IGNvZGUsIG1lc3NhZ2VTdHIpOworICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydDo6c2V0TW9ja0dl
b2xvY2F0aW9uUG9zaXRpb25FcnJvcihCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJUcmVl
OjpjdXJyZW50SW5zdGFuY2UoKS0+cGFnZSgpLCBtZXNzYWdlU3RyKTsKIH0KIAogdm9pZCBUZXN0
UnVubmVyOjpzaG93V2ViSW5zcGVjdG9yKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vRFJUVGVzdFJ1bm5lci5jcHAKaW5kZXggMGU1YThiMzFiZTdiZmM4NWM3MGEzOTA5M2I2
ZTBmMzE3ZGUzNWQ3OS4uMTAzZjYzNWJkMWFhNzg2ZmRhYjY0YTBiYzhhMzJlMzU4MTk1MDIzZSAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5j
cHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5jcHAK
QEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgUGF3ZWwgSGFqZGFuIChw
aGFqZGFuLmpyQGNocm9taXVtLm9yZykKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CkBAIC0yMDYsNyArMjA3LDcgQEAgRFJUVGVzdFJ1bm5lcjo6RFJUVGVzdFJ1bm5lcihUZXN0U2hl
bGwqIHNoZWxsKQogICAgIGJpbmRNZXRob2QoInNldEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9h
cmQiLCAmRFJUVGVzdFJ1bm5lcjo6c2V0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZCk7CiAg
ICAgYmluZE1ldGhvZCgic2V0TWluaW11bVRpbWVySW50ZXJ2YWwiLCAmRFJUVGVzdFJ1bm5lcjo6
c2V0TWluaW11bVRpbWVySW50ZXJ2YWwpOwogICAgIGJpbmRNZXRob2QoInNldE1vY2tEZXZpY2VP
cmllbnRhdGlvbiIsICZEUlRUZXN0UnVubmVyOjpzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24pOwot
ICAgIGJpbmRNZXRob2QoInNldE1vY2tHZW9sb2NhdGlvbkVycm9yIiwgJkRSVFRlc3RSdW5uZXI6
OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKTsKKyAgICBiaW5kTWV0aG9kKCJzZXRNb2NrR2VvbG9j
YXRpb25Qb3NpdGlvbkVycm9yIiwgJkRSVFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBv
c2l0aW9uRXJyb3IpOwogICAgIGJpbmRNZXRob2QoInNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9u
IiwgJkRSVFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKTsKICAgICBiaW5k
TWV0aG9kKCJzZXRQYWdlVmlzaWJpbGl0eSIsICZEUlRUZXN0UnVubmVyOjpzZXRQYWdlVmlzaWJp
bGl0eSk7CiAgICAgYmluZE1ldGhvZCgic2V0UGx1Z2luc0VuYWJsZWQiLCAmRFJUVGVzdFJ1bm5l
cjo6c2V0UGx1Z2luc0VuYWJsZWQpOwpAQCAtMTgxNiwxNCArMTgxNywxNSBAQCB2b2lkIERSVFRl
c3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYgYXJndW1lbnRzLAogICAgICAgICB3aW5kb3dMaXN0W2ldLT5nZW9sb2NhdGlvbkNsaWVudE1v
Y2soKS0+c2V0UG9zaXRpb24oYXJndW1lbnRzWzBdLnRvRG91YmxlKCksIGFyZ3VtZW50c1sxXS50
b0RvdWJsZSgpLCBhcmd1bWVudHNbMl0udG9Eb3VibGUoKSk7CiB9CiAKLXZvaWQgRFJUVGVzdFJ1
bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1
bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3ZvaWQgRFJUVGVzdFJ1bm5lcjo6c2V0TW9ja0dl
b2xvY2F0aW9uUG9zaXRpb25FcnJvcihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywg
Q3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwotICAgIGlmIChh
cmd1bWVudHMuc2l6ZSgpIDwgMiB8fCAhYXJndW1lbnRzWzBdLmlzTnVtYmVyKCkgfHwgIWFyZ3Vt
ZW50c1sxXS5pc1N0cmluZygpKQorICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpICE9IDEgfHwgIWFy
Z3VtZW50c1sxXS5pc1N0cmluZygpKQogICAgICAgICByZXR1cm47CiAgICAgVmVjdG9yPFdlYlZp
ZXdIb3N0Kj4gd2luZG93TGlzdCA9IG1fc2hlbGwtPndpbmRvd0xpc3QoKTsKKyAgICAvLyBGSVhN
RTogQmVuamFtaW4KICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdpbmRvd0xpc3Quc2l6ZSgp
OyBpKyspCi0gICAgICAgIHdpbmRvd0xpc3RbaV0tPmdlb2xvY2F0aW9uQ2xpZW50TW9jaygpLT5z
ZXRFcnJvcihhcmd1bWVudHNbMF0udG9JbnQzMigpLCBjcHBWYXJpYW50VG9XZWJTdHJpbmcoYXJn
dW1lbnRzWzFdKSk7CisgICAgICAgIHdpbmRvd0xpc3RbaV0tPmdlb2xvY2F0aW9uQ2xpZW50TW9j
aygpLT5zZXRFcnJvcihjcHBWYXJpYW50VG9XZWJTdHJpbmcoYXJndW1lbnRzWzBdKSk7CiB9CiAK
IHZvaWQgRFJUVGVzdFJ1bm5lcjo6YWJvcnRNb2RhbChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFy
Z3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vRFJUVGVzdFJ1bm5lci5oCmluZGV4IGI2YzkwN2U2MjcxOGNkMjI3NTg0N2QzOWRjM2Y4
ZThkNDg0MzY3YzMuLmYxZTE3ZWMxMTNjYmU5YjhhNWU1MTRkNDM3N2FhNmNlMWJmMmJiODkgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuaAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmgKQEAgLTEs
NiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgUGF3ZWwgSGFqZGFuIChwaGFqZGFu
LmpyQGNocm9taXVtLm9yZykKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0z
MzcsNyArMzM4LDcgQEAgcHVibGljOgogICAgIC8vIEdlb2xvY2F0aW9uIHJlbGF0ZWQgZnVuY3Rp
b25zLgogICAgIHZvaWQgc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9u
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKLSAgICB2b2lkIHNldE1vY2tH
ZW9sb2NhdGlvbkVycm9yKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAg
ICB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3IoY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiwgQ3BwVmFyaWFudCopOwogCiAgICAgLy8gRW1wdHkgc3R1YiBtZXRob2QgdG8ga2VlcCBw
YXJpdHkgd2l0aCBvYmplY3QgbW9kZWwgZXhwb3NlZCBieSBnbG9iYWwgRFJUVGVzdFJ1bm5lci4K
ICAgICB2b2lkIGFib3J0TW9kYWwoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCop
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vYW5kcm9pZF9mYWxs
YmFja19mb250cy54bWwgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9hbmRyb2lkX2Zh
bGxiYWNrX2ZvbnRzLnhtbAppbmRleCA1YWI2YzJkNTk3YjcxZmUzMmU0YzI5NWFhMDQ4MzVkZjcz
YjA0MjkwLi4xMjMxNmMzNmIxYzA5NzkzNjY0MjFmNmY3MjY5YmYyYjlhNDY3NTQ4IDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9hbmRyb2lkX2ZhbGxiYWNrX2ZvbnRz
LnhtbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9hbmRyb2lkX2ZhbGxiYWNr
X2ZvbnRzLnhtbApAQCAtMTAsNCArMTAsNCBAQAogICAgICAgICAgICAgPGZpbGU+RHJvaWRTYW5z
RmFsbGJhY2sudHRmPC9maWxlPgogICAgICAgICA8L2ZpbGVzZXQ+CiAgICAgPC9mYW1pbHk+Ci08
L2ZhbWlseXNldD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L2ZhbWlseXNldD4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZsLmNwcCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZsLmNwcAppbmRleCAyZTM4MGM1Njkz
MWViOGZmZGNmY2VjM2EyNjA4MDlhZjE0YTBjYmZmLi42NjhiMTZlZmZkNmI2MDkzMzYwN2MwMmJm
MDVkODZkODg1MTM3ZDE1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvVGVz
dFJ1bm5lckVmbC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJF
ZmwuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA3IEVyaWMg
U2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTnVhbnRpIEx0
ZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSBKYW4gTWljaGFlbCBBbG9uem8gPGptYWxvbnpvQGdt
YWlsLmNvbT4KQEAgLTM3OSw3ICszNzksNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tHZW9s
b2NhdGlvblBvc2l0aW9uKGRvdWJsZSwgZG91YmxlLCBkb3VibGUpCiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihpbnQs
IEpTU3RyaW5nUmVmKQordm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlv
bkVycm9yKEpTU3RyaW5nUmVmKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIEdlb2xv
Y2F0aW9uIGxheW91dCB0ZXN0cy4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTI4MjY0LgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Z3RrL1Rlc3RSdW5uZXJHdGsuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL1Rlc3RSdW5u
ZXJHdGsuY3BwCmluZGV4IDA5MjljYWRmNjIxNzNhOWNlOWM5YzkzMWViNDcyNmQ4YzBkZjFhYTYu
LmRiOTYyODkyNzBiNzc0ODEyODM1YzBmODA0OWIxNDY5MzRmYmMwMmUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9UZXN0UnVubmVyR3RrLmNwcAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwNywgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KICAqIENv
cHlyaWdodCAoQykgMjAwOCBOdWFudGkgTHRkLgogICogQ29weXJpZ2h0IChDKSAyMDA5IEphbiBN
aWNoYWVsIEFsb256byA8am1hbG9uem9AZ21haWwuY29tPgpAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHZv
aWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRl
LCBkb3VibGUgbG9uZ2l0dWRlLCBkCiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRN
b2NrR2VvbG9jYXRpb25Qb3NpdGlvbih2aWV3LCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFj
eSk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoaW50IGNv
ZGUsIEpTU3RyaW5nUmVmIG1lc3NhZ2UpCit2b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2Nh
dGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihKU1N0cmluZ1JlZiBtZXNzYWdlKQogewogICAg
IFdlYktpdFdlYlZpZXcqIHZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcoZ19zbGlzdF9udGhfZGF0YSh3
ZWJWaWV3TGlzdCwgMCkpOwogICAgIGlmICghdmlldykKQEAgLTQ1NSw3ICs0NTUsNyBAQCB2b2lk
IFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGludCBjb2RlLCBKU1N0cmluZ1Jl
ZiBtZXNzYWdlKQogICAgIEFTU0VSVCh2aWV3KTsKIAogICAgIEdPd25QdHI8Z2NoYXI+IGNNZXNz
YWdlKEpTU3RyaW5nQ29weVVURjhDU3RyaW5nKG1lc3NhZ2UpKTsKLSAgICBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRHdGs6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKHZpZXcsIGNvZGUsIGNNZXNzYWdl
LmdldCgpKTsKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldE1vY2tHZW9sb2NhdGlv
blBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcih2aWV3LCBjTWVzc2FnZS5nZXQoKSk7CiB9CiAKIHZv
aWQgVGVzdFJ1bm5lcjo6c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGJvb2wgYWxsb3cpCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIu
aCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9Nb2NrR2VvbG9jYXRpb25Qcm92aWRlci5oCmlu
ZGV4IDMxMWQxZTkxODRiMzZiMzgyZTUxM2I3OGFkOGIzMzYxZDFkNTkwNTcuLmQ3YWM4OTFkYjVm
YjkwMWRiMmJjYmU4M2FmOGE4OWM3OThlNWYxNjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9Nb2NrR2VvbG9jYXRpb25Qcm92aWRlci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9Nb2NrR2VvbG9jYXRpb25Qcm92aWRlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTIgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCwxMCArMjgsMTIgQEAKIAog
I2ltcG9ydCA8V2ViS2l0L1dlYlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvSGFzaFNldC5o
PgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBAaW50ZXJmYWNlIE1vY2tHZW9sb2NhdGlv
blByb3ZpZGVyIDogTlNPYmplY3Q8V2ViR2VvbG9jYXRpb25Qcm92aWRlcj4gewotICAgIFdlYkdl
b2xvY2F0aW9uUG9zaXRpb24gKl9sYXN0UG9zaXRpb247Ci0gICAgTlNFcnJvciAqX2Vycm9yOwor
ICAgIFJldGFpblB0cjxXZWJHZW9sb2NhdGlvblBvc2l0aW9uPiBfbGFzdFBvc2l0aW9uOworICAg
IEJPT0wgX2hhc0Vycm9yOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gX2Vycm9yTWVzc2FnZTsK
ICAgICBOU1RpbWVyICpfdGltZXI7CiAgICAgSGFzaFNldDxXZWJWaWV3ICo+IF9yZWdpc3RlcmVk
Vmlld3M7CiB9CkBAIC0zOSw3ICs0MSw3IEBACiArIChNb2NrR2VvbG9jYXRpb25Qcm92aWRlciAq
KXNoYXJlZDsKIAogLSAodm9pZClzZXRQb3NpdGlvbjooV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiAq
KXBvc2l0aW9uOwotLSAodm9pZClzZXRFcnJvcjooTlNFcnJvciAqKWVycm9yOworLSAodm9pZClz
ZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3JXaXRoTWVzc2FnZTooTlNT
dHJpbmcgKillcnJvck1lc3NhZ2U7CiAKIC0gKHZvaWQpc3RvcFRpbWVyOwogCmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIubW0gYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIubW0KaW5kZXgg
ZTAzY2FlMjRhNWQzNTdlZTU5MzBkYTYxNTQ0MzdlYzlhZWY5ZjVmYi4uM2YyZTEwOTc5Y2RjZWJk
ZDRlNzJmYzU3YzI2OTM5MGFiZmU1MTA1ZiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL01vY2tHZW9sb2NhdGlvblByb3ZpZGVyLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9Nb2NrR2VvbG9jYXRpb25Qcm92aWRlci5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEwLCAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsMzQgKzM4LDMzIEBACiB7CiAg
ICAgQVNTRVJUKF9yZWdpc3RlcmVkVmlld3MuaXNFbXB0eSgpKTsKIAotICAgIFtfbGFzdFBvc2l0
aW9uIHJlbGVhc2VdOwotICAgIFtfZXJyb3IgcmVsZWFzZV07CisgICAgX2xhc3RQb3NpdGlvbi5j
bGVhcigpOworICAgIF9lcnJvck1lc3NhZ2UuY2xlYXIoKTsKICAgICBbc3VwZXIgZGVhbGxvY107
CiB9CiAKKy0gKHZvaWQpcmVzZXRFcnJvcgoreworICAgIF9oYXNFcnJvciA9IE5POworICAgIF9l
cnJvck1lc3NhZ2UuY2xlYXIoKTsKK30KKwogLSAodm9pZClzZXRQb3NpdGlvbjooV2ViR2VvbG9j
YXRpb25Qb3NpdGlvbiAqKXBvc2l0aW9uCiB7Ci0gICAgaWYgKF9sYXN0UG9zaXRpb24gIT0gcG9z
aXRpb24pIHsKLSAgICAgICAgW19sYXN0UG9zaXRpb24gcmVsZWFzZV07Ci0gICAgICAgIF9sYXN0
UG9zaXRpb24gPSBbcG9zaXRpb24gcmV0YWluXTsKLSAgICB9CisgICAgX2xhc3RQb3NpdGlvbiA9
IHBvc2l0aW9uOwogICAgIAotICAgIFtfZXJyb3IgcmVsZWFzZV07Ci0gICAgX2Vycm9yID0gMDsK
KyAgICBbc2VsZiByZXNldEVycm9yXTsKIAogICAgIGlmICghX3RpbWVyKQogICAgICAgICBfdGlt
ZXIgPSBbTlNUaW1lciBzY2hlZHVsZWRUaW1lcldpdGhUaW1lSW50ZXJ2YWw6MCB0YXJnZXQ6c2Vs
ZiBzZWxlY3RvcjpAc2VsZWN0b3IodGltZXJGaXJlZCkgdXNlckluZm86MCByZXBlYXRzOk5PXTsK
IH0KIAotLSAodm9pZClzZXRFcnJvcjooTlNFcnJvciAqKWVycm9yCistICh2b2lkKXNldE1vY2tH
ZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcldpdGhNZXNzYWdlOihOU1N0cmluZyAq
KWVycm9yTWVzc2FnZQogewotICAgIGlmIChfZXJyb3IgIT0gZXJyb3IpIHsKLSAgICAgICAgW19l
cnJvciByZWxlYXNlXTsKLSAgICAgICAgX2Vycm9yID0gW2Vycm9yIHJldGFpbl07Ci0gICAgfQot
ICAgIAotICAgIFtfbGFzdFBvc2l0aW9uIHJlbGVhc2VdOwotICAgIF9sYXN0UG9zaXRpb24gPSAw
OworICAgIF9oYXNFcnJvciA9IFlFUzsKKyAgICBfZXJyb3JNZXNzYWdlID0gZXJyb3JNZXNzYWdl
OworCisgICAgX2xhc3RQb3NpdGlvbi5jbGVhcigpOwogCiAgICAgaWYgKCFfdGltZXIpCiAgICAg
ICAgIF90aW1lciA9IFtOU1RpbWVyIHNjaGVkdWxlZFRpbWVyV2l0aFRpbWVJbnRlcnZhbDowIHRh
cmdldDpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcih0aW1lckZpcmVkKSB1c2VySW5mbzowIHJlcGVh
dHM6Tk9dOwpAQCAtODYsNyArODUsNyBAQAogCiAtIChXZWJHZW9sb2NhdGlvblBvc2l0aW9uICop
bGFzdFBvc2l0aW9uCiB7Ci0gICAgcmV0dXJuIF9sYXN0UG9zaXRpb247CisgICAgcmV0dXJuIF9s
YXN0UG9zaXRpb24uZ2V0KCk7CiB9CiAKIC0gKHZvaWQpc3RvcFRpbWVyCkBAIC0xMDIsMTAgKzEw
MSwxMCBAQAogICAgIC8vIEV4cGVjdCB0aGF0IHZpZXdzIHdvbid0IGJlICh1bilyZWdpc3RlcmVk
IHdoaWxlIGl0ZXJhdGluZy4KICAgICBIYXNoU2V0PFdlYlZpZXcqPiB2aWV3cyA9IF9yZWdpc3Rl
cmVkVmlld3M7CiAgICAgZm9yIChIYXNoU2V0PFdlYlZpZXcqPjo6aXRlcmF0b3IgaXRlciA9IHZp
ZXdzLmJlZ2luKCk7IGl0ZXIgIT0gdmlld3MuZW5kKCk7ICsraXRlcikgewotICAgICAgICBpZiAo
X2Vycm9yKQotICAgICAgICAgICAgWyppdGVyIF9nZW9sb2NhdGlvbkRpZEZhaWxXaXRoRXJyb3I6
X2Vycm9yXTsKKyAgICAgICAgaWYgKF9oYXNFcnJvcikKKyAgICAgICAgICAgIFsqaXRlciBfZ2Vv
bG9jYXRpb25EaWRGYWlsV2l0aE1lc3NhZ2U6X2Vycm9yTWVzc2FnZS5nZXQoKV07CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIFsqaXRlciBfZ2VvbG9jYXRpb25EaWRDaGFuZ2VQb3NpdGlvbjpf
bGFzdFBvc2l0aW9uXTsKKyAgICAgICAgICAgIFsqaXRlciBfZ2VvbG9jYXRpb25EaWRDaGFuZ2VQ
b3NpdGlvbjpfbGFzdFBvc2l0aW9uLmdldCgpXTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KaW5kZXggYTIxZWQ4MGFjMTFiZTYzNzEzMWRmY2Q0
NmVmZjY0YzZkNTI5MDNmNS4uNjhjYWZiNmYxNGVjZDdlNzBmOTNkN2Q1MjY2ZjE5NjI0NzdhZmIw
ZiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0K
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTQ3OSwxMiArNDc5LDExIEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9j
a0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBk
CiAgICAgW3Bvc2l0aW9uIHJlbGVhc2VdOwogfQogCi12b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tH
ZW9sb2NhdGlvbkVycm9yKGludCBjb2RlLCBKU1N0cmluZ1JlZiBtZXNzYWdlKQordm9pZCBUZXN0
UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoSlNTdHJp
bmdSZWYgbWVzc2FnZSkKIHsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG1lc3NhZ2VDRihB
ZG9wdENGLCBKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtZXNzYWdl
KSk7CiAgICAgTlNTdHJpbmcgKm1lc3NhZ2VOUyA9IChOU1N0cmluZyAqKW1lc3NhZ2VDRi5nZXQo
KTsKLSAgICBOU0Vycm9yICplcnJvciA9IFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXZWJLaXRF
cnJvckRvbWFpbiBjb2RlOmNvZGUgdXNlckluZm86W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0
aE9iamVjdDptZXNzYWdlTlMgZm9yS2V5Ok5TTG9jYWxpemVkRGVzY3JpcHRpb25LZXldXTsKLSAg
ICBbW01vY2tHZW9sb2NhdGlvblByb3ZpZGVyIHNoYXJlZF0gc2V0RXJyb3I6ZXJyb3JdOworICAg
IFtbTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIgc2hhcmVkXSBzZXRNb2NrR2VvbG9jYXRpb25Qb3Np
dGlvblVuYXZhaWxhYmxlRXJyb3JXaXRoTWVzc2FnZTptZXNzYWdlTlNdOwogfQogCiB2b2lkIFRl
c3RSdW5uZXI6OnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihib29sIGFsbG93KQpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmNwcCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5jcHAKaW5kZXggZDM1MDNiZDFlNzUwOTg3ZTUyMmRi
N2Q0YmUzZDhmYWM4YmFjNmMwZi4uOWE5MjAxM2VkZDBlZWE3MzMxZmM3ZjAwMTQ5Yzg1MzRjMGFk
MDE4OSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmNw
cAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuY3BwCkBAIC04MzQs
MTEgKzgzNCwxMSBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbkNv
bW1vbihib29sIGFsbG93KQogICAgICBtX2dlb2xvY2F0aW9uUGVybWlzc2lvbiA9IGFsbG93Owog
fQogCi12b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGludCBjb2RlLCBj
b25zdCBRU3RyaW5nJiBtZXNzYWdlKQordm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRp
b25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoY29uc3QgUVN0cmluZyYgbWVzc2FnZSkKIHsKICAg
ICBRTGlzdDxXZWJDb3JlOjpXZWJQYWdlKj4gcGFnZXMgPSBtX2RydC0+Z2V0QWxsUGFnZXMoKTsK
ICAgICBmb3JlYWNoIChXZWJDb3JlOjpXZWJQYWdlKiBwYWdlLCBwYWdlcykKLSAgICAgICAgRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKHBhZ2UsIGNvZGUs
IG1lc3NhZ2UpOworICAgICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0TW9ja0dlb2xv
Y2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKHBhZ2UsIG1lc3NhZ2UpOwogfQogCiB2b2lk
IFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwg
ZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9U
ZXN0UnVubmVyUXQuaAppbmRleCA4OGE5YzZhOTQ0ZTY0ZTM4NTg1NDYwNjQ4YmQ4MjY3OGE5MzU2
YzJmLi4zMTFiY2Q5ZGU1Y2Q3ZjJhOWQ2ZjIyZTg5Y2E5MDA1ZWQ0NjFmNzIzIDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuaAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuaApAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gaHR0cDovL3d3dy50
b3JjaG1vYmlsZS5jb20vCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMjQsNyAr
MjI1LDcgQEAgcHVibGljIFFfU0xPVFM6CiAKICAgICB2b2lkIHNldE1vY2tEZXZpY2VPcmllbnRh
dGlvbihib29sIGNhblByb3ZpZGVBbHBoYSwgZG91YmxlIGFscGhhLCBib29sIGNhblByb3ZpZGVC
ZXRhLCBkb3VibGUgYmV0YSwgYm9vbCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJsZSBnYW1tYSk7CiAK
LSAgICB2b2lkIHNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGludCBjb2RlLCBjb25zdCBRU3RyaW5n
JiBtZXNzYWdlKTsKKyAgICB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFi
bGVFcnJvcihjb25zdCBRU3RyaW5nJiBtZXNzYWdlKTsKICAgICB2b2lkIHNldE1vY2tHZW9sb2Nh
dGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFj
Y3VyYWN5KTsKICAgICB2b2lkIHNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihib29sIGFsbG93KTsK
ICAgICBpbnQgbnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMoKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcAppbmRleCBkMzM2NTFi
N2FmNmU0NWMyYjllNTYxYjRhNzE3MWI0NmM5ZTYzN2YxLi5jNDQwMGZkY2IxZWJiZWY0Zjc3YmM4
MDQwY2UxNmEyYjYzZWYzNzQwIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4v
VGVzdFJ1bm5lcldpbi5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5u
ZXJXaW4uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAw
NywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00MjAsNyArNDIwLDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3Np
dGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGQKICAgICAvLyBTZWUgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MjY0LgogfQogCi12b2lkIFRl
c3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGludCBjb2RlLCBKU1N0cmluZ1JlZiBt
ZXNzYWdlKQordm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZh
aWxhYmxlRXJyb3IoSlNTdHJpbmdSZWYgbWVzc2FnZSkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IGZvciBHZW9sb2NhdGlvbiBsYXlvdXQgdGVzdHMuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODI2NC4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3d4L1Rlc3RSdW5uZXJXeC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93
eC9UZXN0UnVubmVyV3guY3BwCmluZGV4IGQ3YTUyNTJjNDA0YmYyMTlkZjdlYTFmYTU3Y2IzZDll
MWRkZDMzODMuLmU3ODBjZmU1MmIzYjAxNjk0ZTYyYzc3YjM4ZGY5ZDBlMGIxMDliYWEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L1Rlc3RSdW5uZXJXeC5jcHAKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd3gvVGVzdFJ1bm5lcld4LmNwcApAQCAtMSw1ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggS2V2aW4gT2xsaXZpZXIgPGtldmlub0B0aGVvbGxpdmll
cnMuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzM4LDcgKzMzOSw3IEBA
IHZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0
dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yODI2NC4KIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRNb2Nr
R2VvbG9jYXRpb25FcnJvcihpbnQgY29kZSwgSlNTdHJpbmdSZWYgbWVzc2FnZSkKK3ZvaWQgVGVz
dFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKEpTU3Ry
aW5nUmVmKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIEdlb2xvY2F0aW9uIGxheW91
dCB0ZXN0cy4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTI4MjY0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IGVmYjNhMGVjMzk4YTgwMTEzODQ3MTVkZTEyNGMzYjhlN2RmMDYx
MzMuLmQ4M2YzNmVhOTU2YzdjZTA4ODUwYTU5YjdjYWVhZDJiOTQzNDgzMGQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNiBAQAorMjAxMi0wOS0yMSAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgRml4IEdlb2xvY2F0aW9uIGVycm9yIHJlcG9ydGluZyBpbiB0aGUg
dGVzdCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05NzM4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2YgdGhlIGNoYW5nZSBzdWNoIGFzIGFwcHJvYWNo
LCByYXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1bmN0aW9uIGRlc2NyaXB0aW9ucyBiZWxvdyAo
T09QUyEpLgorCisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vZXJyb3ItY2xlYXItd2F0
Y2guaHRtbDoKKyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9lcnJvci1leHBlY3RlZC50
eHQ6CisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vbWF4aW11bS1hZ2UtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9uL3JlZW50cmFudC1lcnJvci1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL2Vy
cm9yLmpzOgorICAgICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9tYXhp
bXVtLWFnZS5qczoKKyAgICAgICAgKGNoZWNrRXJyb3IpOgorICAgICAgICAodGVzdE5vblplcm9N
YXhpbXVtQWdlKToKKyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMv
cGVybWlzc2lvbi1kZW5pZWQtYWxyZWFkeS1lcnJvci5qczoKKyAgICAgICAgKiBmYXN0L2RvbS9H
ZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcmVlbnRyYW50LWVycm9yLmpzOgorICAgICAgICAqIGZh
c3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy93YXRjaC5qczoKKyAgICAgICAgKGNoZWNr
RXJyb3IpOgorICAgICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9uL3dhdGNoLWV4cGVjdGVkLnR4
dDoKKwogMjAxMi0wOS0yMSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4K
IAogICAgICAgICBmYXN0L2RvbS9HZW9sb2NhdGlvbi9kaXNjb25uZWN0ZWQtZnJhbWUuaHRtbCB0
ZXN0IGFzc2VydHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9u
L2Vycm9yLWNsZWFyLXdhdGNoLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlv
bi9lcnJvci1jbGVhci13YXRjaC5odG1sCmluZGV4IDMyMjA2ZGYzZmMzOTA3NjI3ZjQxNWRhNjEy
ZWNkN2Q0NzBiZThmMTUuLjZjNjE5NzgzZWI5Yzc4NGU0YWJhYzI5NzExMmI1ZDdjODAxOWNhNjEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2Vycm9yLWNsZWFy
LXdhdGNoLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vZXJyb3It
Y2xlYXItd2F0Y2guaHRtbApAQCAtNywxMiArNywxMSBAQAogPHNjcmlwdD4KIGRlc2NyaXB0aW9u
KCJUaGlzIHRlc3RzIHJlbW92aW5nIHRoZSB3YXRjaGVyIGZyb20gYW4gZXJyb3IgY2FsbGJhY2sg
ZG9lcyBub3QgY2F1c2VzIGFzc2VydGlvbnMuIik7CiAKLXZhciBtb2NrQ29kZSA9IDI7CiB2YXIg
bW9ja01lc3NhZ2UgPSAiZGVidWciOwogCiBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICB0
ZXN0UnVubmVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbih0cnVlKTsKLSAgICB0ZXN0UnVubmVy
LnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKG1vY2tDb2RlLCBtb2NrTWVzc2FnZSk7CisgICAgdGVz
dFJ1bm5lci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IobW9ja01l
c3NhZ2UpOwogfSBlbHNlCiAgICAgZGVidWcoJ1RoaXMgdGVzdCBjYW4gbm90IGJlIHJ1biB3aXRo
b3V0IHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlcicpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9lcnJvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9HZW9sb2NhdGlvbi9lcnJvci1leHBlY3RlZC50eHQKaW5kZXggOTU4MjA1OTVmZGJi
NDc2ZjcwOWQxYjc5Y2ZlZDM1MmVjYjMwZjIyZC4uMTMzZTM5YTMyYWVkYjNlZmRhMjI0OWJiODMw
ZWUwNTJlZDkzNTllYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRp
b24vZXJyb3ItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0
aW9uL2Vycm9yLWV4cGVjdGVkLnR4dApAQCAtMyw3ICszLDcgQEAgVGVzdHMgR2VvbG9jYXRpb24g
ZXJyb3IgY2FsbGJhY2sgdXNpbmcgdGhlIG1vY2sgc2VydmljZS4KIE9uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KIAogCi1QQVNTIGVycm9yLmNvZGUgaXMgbW9ja0NvZGUKK1BBU1MgZXJyb3IuY29k
ZSBpcyBlcnJvci5QT1NJVElPTl9VTkFWQUlMQUJMRQogUEFTUyBlcnJvci5tZXNzYWdlIGlzIG1v
Y2tNZXNzYWdlCiBQQVNTIGVycm9yLlVOS05PV05fRVJST1IgaXMgdW5kZWZpbmVkCiBQQVNTIGVy
cm9yLlBFUk1JU1NJT05fREVOSUVEIGlzIDEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL0dlb2xvY2F0aW9uL21heGltdW0tYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL0dlb2xvY2F0aW9uL21heGltdW0tYWdlLWV4cGVjdGVkLnR4dAppbmRleCAzNDRiZDQ1
YjgyMTRkNGJlZDZhOWY5MDNmMzIyYjE3YmQwMzA2YTg5Li4zODg5NDY2OTdiMzg1OTE3NGM0ZTJm
ZTNjYWM1MDQxOGYxY2VhNTM1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9s
b2NhdGlvbi9tYXhpbXVtLWFnZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vR2VvbG9jYXRpb24vbWF4aW11bS1hZ2UtZXhwZWN0ZWQudHh0CkBAIC0xNiw3ICsxNiw3IEBA
IFBBU1MgcG9zaXRpb24uY29vcmRzLmxhdGl0dWRlIGlzIG1vY2tMYXRpdHVkZQogUEFTUyBwb3Np
dGlvbi5jb29yZHMubG9uZ2l0dWRlIGlzIG1vY2tMb25naXR1ZGUKIFBBU1MgcG9zaXRpb24uY29v
cmRzLmFjY3VyYWN5IGlzIG1vY2tBY2N1cmFjeQogCi1QQVNTIGVycm9yLmNvZGUgaXMgbW9ja0Nv
ZGUKK1BBU1MgZXJyb3IuY29kZSBpcyBlcnJvci5QT1NJVElPTl9VTkFWQUlMQUJMRQogUEFTUyBl
cnJvci5tZXNzYWdlIGlzIG1vY2tNZXNzYWdlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3JlZW50
cmFudC1lcnJvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlv
bi9yZWVudHJhbnQtZXJyb3ItZXhwZWN0ZWQudHh0CmluZGV4IDk5M2JlYWMyMTdlNjcwOTk4ZDgy
MGQxNWNlMjg3OTRkNGFkNDA0ZmUuLjRjNGViMWYwYmI5OGI1NjdkMmJmMjE4ZmY5NzMzZjFmODM1
MTdlNzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3JlZW50
cmFudC1lcnJvci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9j
YXRpb24vcmVlbnRyYW50LWVycm9yLWV4cGVjdGVkLnR4dApAQCAtMywxMCArMywxMCBAQCBUZXN0
cyB0aGF0IHJlZW50cmFudCBjYWxscyB0byBHZW9sb2NhdGlvbiBtZXRob2RzIGZyb20gdGhlIGVy
cm9yIGNhbGxiYWNrIGFyZSBPSwogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1Mg
ZXJyb3IuY29kZSBpcyBtb2NrQ29kZQorUEFTUyBlcnJvci5jb2RlIGlzIGVycm9yLlBPU0lUSU9O
X1VOQVZBSUxBQkxFCiBQQVNTIGVycm9yLm1lc3NhZ2UgaXMgbW9ja01lc3NhZ2UKIAotUEFTUyBl
cnJvci5jb2RlIGlzIG1vY2tDb2RlCitQQVNTIGVycm9yLmNvZGUgaXMgZXJyb3IuUE9TSVRJT05f
VU5BVkFJTEFCTEUKIFBBU1MgZXJyb3IubWVzc2FnZSBpcyBtb2NrTWVzc2FnZQogUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvZXJyb3IuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvZXJyb3IuanMKaW5kZXggMmQxM2YzZjQ2YzgzMDEw
NzZjOGRjYmI5ZDE5ODkxMGY3N2ZjYzgxYi4uOGU0NGJjNmY3MWVmZDhlYjc3M2U5ZTc5NTc1NDdk
MGQzZjcxZTgwOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24v
c2NyaXB0LXRlc3RzL2Vycm9yLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0
aW9uL3NjcmlwdC10ZXN0cy9lcnJvci5qcwpAQCAtMSwxMSArMSwxMCBAQAogZGVzY3JpcHRpb24o
IlRlc3RzIEdlb2xvY2F0aW9uIGVycm9yIGNhbGxiYWNrIHVzaW5nIHRoZSBtb2NrIHNlcnZpY2Uu
Iik7CiAKLXZhciBtb2NrQ29kZSA9IDI7CiB2YXIgbW9ja01lc3NhZ2UgPSAiZGVidWciOwogCiBp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICB0ZXN0UnVubmVyLnNldEdlb2xvY2F0aW9uUGVy
bWlzc2lvbih0cnVlKTsKLSAgICB0ZXN0UnVubmVyLnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKG1v
Y2tDb2RlLCBtb2NrTWVzc2FnZSk7CisgICAgdGVzdFJ1bm5lci5zZXRNb2NrR2VvbG9jYXRpb25Q
b3NpdGlvblVuYXZhaWxhYmxlRXJyb3IobW9ja01lc3NhZ2UpOwogfSBlbHNlCiAgICAgZGVidWco
J1RoaXMgdGVzdCBjYW4gbm90IGJlIHJ1biB3aXRob3V0IHRoZSB0ZXN0UnVubmVyJyk7CiAKQEAg
LTE1LDcgKzE0LDcgQEAgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihm
dW5jdGlvbihwKSB7CiAgICAgZmluaXNoSlNUZXN0KCk7CiB9LCBmdW5jdGlvbihlKSB7CiAgICAg
ZXJyb3IgPSBlOwotICAgIHNob3VsZEJlKCdlcnJvci5jb2RlJywgJ21vY2tDb2RlJyk7CisgICAg
c2hvdWxkQmUoJ2Vycm9yLmNvZGUnLCAnZXJyb3IuUE9TSVRJT05fVU5BVkFJTEFCTEUnKTsKICAg
ICBzaG91bGRCZSgnZXJyb3IubWVzc2FnZScsICdtb2NrTWVzc2FnZScpOwogICAgIHNob3VsZEJl
KCdlcnJvci5VTktOT1dOX0VSUk9SJywgJ3VuZGVmaW5lZCcpOwogICAgIHNob3VsZEJlKCdlcnJv
ci5QRVJNSVNTSU9OX0RFTklFRCcsICcxJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvbWF4aW11bS1hZ2UuanMgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvbWF4aW11bS1hZ2UuanMKaW5kZXgg
NmM4Zjg2MDA5ZmI4NDY1MzExZDBhZDllOWU4NGZhNTczMWE1ZDE2ZC4uNDc1OTZjYTQ2NDZjYzM2
OTdhZjI4OTg5ODVkNjUzNDQ0YTYyY2IyMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL21heGltdW0tYWdlLmpzCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9tYXhpbXVtLWFnZS5qcwpAQCAt
NCw3ICs0LDYgQEAgdmFyIG1vY2tMYXRpdHVkZSA9IDUxLjQ3ODsKIHZhciBtb2NrTG9uZ2l0dWRl
ID0gLTAuMTY2OwogdmFyIG1vY2tBY2N1cmFjeSA9IDEwMC4wOwogCi12YXIgbW9ja0NvZGUgPSAy
OwogdmFyIG1vY2tNZXNzYWdlID0gJ3Rlc3QnOwogCiB2YXIgcG9zaXRpb247CkBAIC0yMSw3ICsy
MCw3IEBAIGZ1bmN0aW9uIGNoZWNrUG9zaXRpb24ocCkgewogZnVuY3Rpb24gY2hlY2tFcnJvcihl
KSB7CiAgICAgZGVidWcoJycpOwogICAgIGVycm9yID0gZTsKLSAgICBzaG91bGRCZSgnZXJyb3Iu
Y29kZScsICdtb2NrQ29kZScpOworICAgIHNob3VsZEJlKCdlcnJvci5jb2RlJywgJ2Vycm9yLlBP
U0lUSU9OX1VOQVZBSUxBQkxFJyk7CiAgICAgc2hvdWxkQmUoJ2Vycm9yLm1lc3NhZ2UnLCAnbW9j
a01lc3NhZ2UnKTsKIH0KIApAQCAtNTcsNyArNTYsNyBAQCBmdW5jdGlvbiB0ZXN0WmVyb01heGlt
dW1BZ2UoKSB7CiBmdW5jdGlvbiB0ZXN0Tm9uWmVyb01heGltdW1BZ2UoKSB7CiAgICAgLy8gVXBk
YXRlIHRoZSBtb2NrIHNlcnZpY2UgdG8gcmVwb3J0IGFuIGVycm9yLgogICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRNb2NrR2VvbG9jYXRpb25FcnJvciht
b2NrQ29kZSwgbW9ja01lc3NhZ2UpOworICAgICAgICB0ZXN0UnVubmVyLnNldE1vY2tHZW9sb2Nh
dGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihtb2NrTWVzc2FnZSk7CiAgICAgLy8gVGhlIG1h
eGltdW1BZ2UgaXMgbm9uLXplcm8sIHNvIHdlIGV4cGVjdCB0aGUgY2FjaGVkIHBvc2l0aW9uLCBu
b3QgdGhlIGVycm9yIGZyb20gdGhlIHNlcnZpY2UuCiAgICAgbmF2aWdhdG9yLmdlb2xvY2F0aW9u
LmdldEN1cnJlbnRQb3NpdGlvbihmdW5jdGlvbihwKSB7CiAgICAgICAgIGNoZWNrUG9zaXRpb24o
cCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQt
dGVzdHMvcGVybWlzc2lvbi1kZW5pZWQtYWxyZWFkeS1lcnJvci5qcyBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9wZXJtaXNzaW9uLWRlbmllZC1hbHJlYWR5
LWVycm9yLmpzCmluZGV4IGI1ZTNkOGYyYzhhMzI4ZDI3MzliNDg1YzhjZGE0ZDM4N2IzMjY4Mzgu
LjQ4YjVjZjgxYzU0OThhM2QzNGYxNDE3MjQ2NzkxZGY3YzhjN2MxNGYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9wZXJtaXNzaW9uLWRl
bmllZC1hbHJlYWR5LWVycm9yLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0
aW9uL3NjcmlwdC10ZXN0cy9wZXJtaXNzaW9uLWRlbmllZC1hbHJlYWR5LWVycm9yLmpzCkBAIC0y
Myw3ICsyMyw3IEBAIGZ1bmN0aW9uIGNvbnRpbnVlVGVzdCgpCiB7CiAgICAgLy8gTWFrZSBhbm90
aGVyIHJlcXVlc3QsIHdpdGggcGVybWlzc2lvbiBhbHJlYWR5IGRlbmllZC4KICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIuc2V0TW9ja0dlb2xvY2F0aW9uRXJy
b3IoMiwgJ3Rlc3QnKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRNb2NrR2VvbG9jYXRpb25Qb3Np
dGlvblVuYXZhaWxhYmxlRXJyb3IoJ3Rlc3QnKTsKIAogICAgIG5hdmlnYXRvci5nZW9sb2NhdGlv
bi5nZXRDdXJyZW50UG9zaXRpb24oZnVuY3Rpb24ocCkgewogICAgICAgICB0ZXN0RmFpbGVkKCdT
dWNjZXNzIGNhbGxiYWNrIGludm9rZWQgdW5leHBlY3RlZGx5Jyk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcmVlbnRyYW50LWVycm9y
LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3JlZW50
cmFudC1lcnJvci5qcwppbmRleCA1NDM5ZTI5MjJjNGM5ODhlZDIxYThiYzczMTgzM2YwYzJiNzE0
OTliLi41YTZjMDlkMWJhODI4NmIwYWI0MWE3Y2JiNjcwZDc5YWIxYjczZWU1IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcmVlbnRyYW50
LWVycm9yLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10
ZXN0cy9yZWVudHJhbnQtZXJyb3IuanMKQEAgLTEsMTEgKzEsMTAgQEAKIGRlc2NyaXB0aW9uKCJU
ZXN0cyB0aGF0IHJlZW50cmFudCBjYWxscyB0byBHZW9sb2NhdGlvbiBtZXRob2RzIGZyb20gdGhl
IGVycm9yIGNhbGxiYWNrIGFyZSBPSy4iKTsKIAotdmFyIG1vY2tDb2RlID0gMjsKIHZhciBtb2Nr
TWVzc2FnZSA9ICd0ZXN0JzsKIAogaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgdGVzdFJ1
bm5lci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24odHJ1ZSk7Ci0gICAgdGVzdFJ1bm5lci5zZXRN
b2NrR2VvbG9jYXRpb25FcnJvcihtb2NrQ29kZSwgbW9ja01lc3NhZ2UpOworICAgIHRlc3RSdW5u
ZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKG1vY2tNZXNzYWdl
KTsKIH0gZWxzZQogICAgIGRlYnVnKCdUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4gd2l0aG91dCB0
aGUgdGVzdFJ1bm5lcicpOwogCkBAIC0yMiw3ICsyMSw3IEBAIG5hdmlnYXRvci5nZW9sb2NhdGlv
bi5nZXRDdXJyZW50UG9zaXRpb24oZnVuY3Rpb24ocCkgewogICAgIGVycm9yQ2FsbGJhY2tJbnZv
a2VkID0gdHJ1ZTsKIAogICAgIGVycm9yID0gZTsKLSAgICBzaG91bGRCZSgnZXJyb3IuY29kZScs
ICdtb2NrQ29kZScpOworICAgIHNob3VsZEJlKCdlcnJvci5jb2RlJywgJ2Vycm9yLlBPU0lUSU9O
X1VOQVZBSUxBQkxFJyk7CiAgICAgc2hvdWxkQmUoJ2Vycm9yLm1lc3NhZ2UnLCAnbW9ja01lc3Nh
Z2UnKTsKICAgICBkZWJ1ZygnJyk7CiAgICAgY29udGludWVUZXN0KCk7CkBAIC0zMiwxNCArMzEs
MTQgQEAgZnVuY3Rpb24gY29udGludWVUZXN0KCkgewogICAgIG1vY2tNZXNzYWdlICs9ICcgcmVw
ZWF0JzsKIAogICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5z
ZXRNb2NrR2VvbG9jYXRpb25FcnJvcihtb2NrQ29kZSwgbW9ja01lc3NhZ2UpOworICAgICAgICB0
ZXN0UnVubmVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihtb2Nr
TWVzc2FnZSk7CiAKICAgICBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9u
KGZ1bmN0aW9uKHApIHsKICAgICAgICAgdGVzdEZhaWxlZCgnU3VjY2VzcyBjYWxsYmFjayBpbnZv
a2VkIHVuZXhwZWN0ZWRseScpOwogICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKICAgICB9LCBmdW5j
dGlvbihlKSB7CiAgICAgICAgIGVycm9yID0gZTsKLSAgICAgICAgc2hvdWxkQmUoJ2Vycm9yLmNv
ZGUnLCAnbW9ja0NvZGUnKTsKKyAgICAgICAgc2hvdWxkQmUoJ2Vycm9yLmNvZGUnLCAnZXJyb3Iu
UE9TSVRJT05fVU5BVkFJTEFCTEUnKTsKICAgICAgICAgc2hvdWxkQmUoJ2Vycm9yLm1lc3NhZ2Un
LCAnbW9ja01lc3NhZ2UnKTsKICAgICAgICAgZmluaXNoSlNUZXN0KCk7CiAgICAgfSk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvd2F0
Y2guanMgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvd2F0
Y2guanMKaW5kZXggNmYxZmUwY2RmMjQwYzQ4MjE5ZWViMThkMzZmYmM2MGRjODFjODlhMi4uMGVh
MWNhZjQ4ZDk4YjQ3ZmI5YTMzNGUzOTQzMWVlNzhhYmVkODQ2MiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3dhdGNoLmpzCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy93YXRjaC5qcwpAQCAt
NCw3ICs0LDYgQEAgdmFyIG1vY2tMYXRpdHVkZSA9IDUxLjQ3ODsKIHZhciBtb2NrTG9uZ2l0dWRl
ID0gLTAuMTY2OwogdmFyIG1vY2tBY2N1cmFjeSA9IDEwMC4wOwogCi12YXIgbW9ja0NvZGUgPSAy
OwogdmFyIG1vY2tNZXNzYWdlID0gJ3Rlc3QnOwogCiB2YXIgcG9zaXRpb247CkBAIC0yMCw3ICsx
OSw3IEBAIGZ1bmN0aW9uIGNoZWNrUG9zaXRpb24ocCkgewogCiBmdW5jdGlvbiBjaGVja0Vycm9y
KGUpIHsKICAgICBlcnJvciA9IGU7Ci0gICAgc2hvdWxkQmUoJ2Vycm9yLmNvZGUnLCAnbW9ja0Nv
ZGUnKTsKKyAgICBzaG91bGRCZSgnZXJyb3IuY29kZScsICdlcnJvci5QT1NJVElPTl9VTkFWQUlM
QUJMRScpOwogICAgIHNob3VsZEJlKCdlcnJvci5tZXNzYWdlJywgJ21vY2tNZXNzYWdlJyk7CiAg
ICAgZGVidWcoJycpOwogfQpAQCAtNDIsNyArNDEsNyBAQCBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24u
d2F0Y2hQb3NpdGlvbihmdW5jdGlvbihwKSB7CiAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAg
IGNoZWNrUG9zaXRpb24ocCk7CiAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0g
ICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRNb2NrR2VvbG9jYXRpb25FcnJvcihtb2NrQ29k
ZSwgbW9ja01lc3NhZ2UpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0TW9ja0dlb2xv
Y2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKG1vY2tNZXNzYWdlKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICBjaGVja1Bvc2l0aW9uKHApOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vd2F0Y2gtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vd2F0Y2gtZXhwZWN0ZWQu
dHh0CmluZGV4IGEwNDM0NTU2ZjJiZjA1NWE5M2RjNzM1YjNiYTNhZTY4OGQ1ZTE3ZjguLjRjNzVm
MDhlNTM3M2VkY2I5ZTVhMTAyMzBmNjY3NzBkYTY4NjYzNTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3dhdGNoLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi93YXRjaC1leHBlY3RlZC50eHQKQEAgLTExLDcgKzEx
LDcgQEAgUEFTUyBwb3NpdGlvbi5jb29yZHMubGF0aXR1ZGUgaXMgbW9ja0xhdGl0dWRlCiBQQVNT
IHBvc2l0aW9uLmNvb3Jkcy5sb25naXR1ZGUgaXMgbW9ja0xvbmdpdHVkZQogUEFTUyBwb3NpdGlv
bi5jb29yZHMuYWNjdXJhY3kgaXMgbW9ja0FjY3VyYWN5CiAKLVBBU1MgZXJyb3IuY29kZSBpcyBt
b2NrQ29kZQorUEFTUyBlcnJvci5jb2RlIGlzIGVycm9yLlBPU0lUSU9OX1VOQVZBSUxBQkxFCiBQ
QVNTIGVycm9yLm1lc3NhZ2UgaXMgbW9ja01lc3NhZ2UKIAogUEFTUyBwb3NpdGlvbi5jb29yZHMu
bGF0aXR1ZGUgaXMgbW9ja0xhdGl0dWRlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165247</attachid>
            <date>2012-09-21 23:35:03 -0700</date>
            <delta_ts>2012-09-21 23:49:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97386-20120921233427.patch</filename>
            <type>text/plain</type>
            <size>63655</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5Mjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzE3ZDU1MjQ4MjEwOWI0
ZWJhM2ZhZTdiNGRkZjk0MWM2MTFkYWM0ZS4uY2QzZDNlODZmYzFiOWFmMjZmYjA2MzYxMjQyZTJj
Yzc4ZjkxYWJkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTA5LTIxICBCZW5q
YW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBGaXggR2VvbG9j
YXRpb24gZXJyb3IgcmVwb3J0aW5nIGluIHRoZSB0ZXN0IHN1cHBvcnQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3Mzg2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBv
ZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxlYXNlIGFkZCBwZXIt
ZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9H
ZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25D
bGllbnRNb2NrOjpHZW9sb2NhdGlvbkNsaWVudE1vY2spOgorICAgICAgICAoV2ViQ29yZTo6R2Vv
bG9jYXRpb25DbGllbnRNb2NrOjpzZXRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHZW9s
b2NhdGlvbkNsaWVudE1vY2s6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVF
cnJvcik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnJlc2V0KToK
KyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xpZW50TW9jazo6Y29udHJvbGxlclRpbWVy
RmlyZWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlv
bkNsaWVudE1vY2s6OmNsZWFyRXJyb3IpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svR2VvbG9j
YXRpb25DbGllbnRNb2NrLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEdlb2xvY2F0
aW9uQ2xpZW50TW9jayk6CisKIDIwMTItMDktMjEgIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29v
Z2xlLmNvbT4KIAogICAgICAgICBCaXF1YWRGaWx0ZXJOb2RlIG11c3QgdGFrZSBhdWRpby1yYXRl
IHBhcmFtZXRlciBjaGFuZ2VzIGludG8gYWNjb3VudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VM
b2cKaW5kZXggZWQ1Njg3ODQzOWIyOWMxZjQ4MGFhYTZmYTlhYTdmYzEwNDU3NjljMy4uY2UwZDMw
ZjZmYjY3NTg5MGY3MzE3NTYxMzA0ZTUyNzk3ZDRkNDI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDktMjEgIEJlbmphbWluIFBvdWxhaW4g
IDxiZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIEZpeCBHZW9sb2NhdGlvbiBlcnJvciBy
ZXBvcnRpbmcgaW4gdGhlIHRlc3Qgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTczODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ug
c3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNj
cmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdFN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydDo6c2V0
TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKToKKyAgICAgICAgKiBXZWJL
aXRTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5oOgorICAgICAgICAoRHVtcFJlbmRlclRy
ZWVTdXBwb3J0KToKKwogMjAxMi0wOS0yMSAgTGlhbmdodWkgQ2hlbiAgPGxpYWNoZW5AcmltLmNv
bT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gUmVhbGx5IGZpeCBidWcgOTU0ODggdGhhdCB1c2Vy
IGNhbiBnZXQgdGhlIGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZSBkaWFsb2cgd2hpbGUgdGhlIG90
aGVyIHRhYiBoYXMgZm9jdXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggYzFhZmE1M2VkYzliNTBiNTIx
ZjlkMzBkYTI3YWZhYmY4OTQ0YTYyZi4uNTk1NmY3OTUzM2E3NTQ4MTI3MTRlY2VjZjFmNzIyNTFj
NGM0NTVmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA5LTIxICBC
ZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBGaXggR2Vv
bG9jYXRpb24gZXJyb3IgcmVwb3J0aW5nIGluIHRoZSB0ZXN0IHN1cHBvcnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3Mzg2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBpbmZvcm1hdGlv
biBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxlYXNlIGFkZCBw
ZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwOgorICAgICAgICAoRHVtcFJl
bmRlclRyZWVTdXBwb3J0R3RrOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxl
RXJyb3IpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0
ay5oOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrKToKKwogMjAxMi0wOS0xOSAg
RGFuaWxvIENlc2FyIExlbWVzIGRlIFBhdWxhICA8ZGFuaWxvLmNlc2FyQGNvbGxhYm9yYS5jby51
az4KIAogICAgICAgICBbZ3RrXSBhZGQgZW5hYmxlLW1lZGlhLXN0cmVhbSB0byB3ZWJzZXR0aW5n
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCmluZGV4IDFhMWZjMTU5MTYxODg4NGViNTI5YWM5MTE0OWE5Nzk0OGY5
OTBiNDUuLmY3OThjMjdhNWE2MDI3Mzk1N2IwYzI5MzNmNmMzMWU5MTI1MjM5ZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wOS0yMSAgQmVuamFtaW4gUG91bGFpbiAg
PGJlbmphbWluQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRml4IEdlb2xvY2F0aW9uIGVycm9yIHJl
cG9ydGluZyBpbiB0aGUgdGVzdCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NzM4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2YgdGhlIGNoYW5nZSBz
dWNoIGFzIGFwcHJvYWNoLCByYXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1bmN0aW9uIGRlc2Ny
aXB0aW9ucyBiZWxvdyAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgor
ICAgICAgICAoLVtXZWJWaWV3IF9nZW9sb2NhdGlvbkRpZEZhaWxUb0ZpbmRQb3NpdGlvbldpdGhN
ZXNzYWdlOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld1ByaXZhdGUuaDoKKwogMjAxMi0w
OS0yMSAgQ2hyaXMgUm9nZXJzICA8Y3JvZ2Vyc0Bnb29nbGUuY29tPgogCiAgICAgICAgIEFkZCBX
ZWIgQXVkaW8gc3VwcG9ydCBmb3IgZGVwcmVjYXRlZC9sZWdhY3kgQVBJcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpp
bmRleCA1YWE2MmYxNzkxNDAwZTcyN2NmOGFiMDQwZmEwMDc5ZGI4MjhiZTNmLi5hMmQwYzYxNzU1
N2U0NGIzZTIxMzA1YmE4MjA0ZmQzYmNhZWRlZjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDEyLTA5LTIxICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBGaXggR2VvbG9jYXRpb24gZXJyb3IgcmVwb3J0aW5nIGluIHRoZSB0ZXN0
IHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk3Mzg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJh
dGlvbmFsZS4gUGxlYXNlIGFkZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5j
cHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0TW9ja0dlb2xvY2F0aW9u
UG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdC5oOgorCiAyMDEyLTA5LTIwICBDc2FiYSBPc3p0cm9nb27DoWMg
IDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBFbmFibGUgQ1NTIHJlZ2lvbnMgYnkg
ZGVmYXVsdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBkZmY4MzBkNTAzODQ5MmZkMmRlNDEwY2Yy
NWY4MzI5MzcyMjAxMDM4Li44MTUzMDM5Zjk1Yzk5ZGM3ZDgyMDMyYzlkNmVhYzZlNmMzMTAyMGRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMjE5MSw3ICsyMTkxLDYgQEAgX19aTjdXZWJDb3Jl
MTFHZW9sb2NhdGlvbjEyc2V0SXNBbGxvd2VkRWIKIF9fWk43V2ViQ29yZTExR2VvbG9jYXRpb25E
MUV2CiBfX1pOSzdXZWJDb3JlMTFHZW9sb2NhdGlvbjVmcmFtZUV2CiBfX1pON1dlYkNvcmUyMHBy
b3ZpZGVHZW9sb2NhdGlvblRvRVBOU180UGFnZUVQTlNfMTdHZW9sb2NhdGlvbkNsaWVudEUKLV9f
Wk43V2ViQ29yZTIxR2VvbG9jYXRpb25DbGllbnRNb2NrMTNzZXRQZXJtaXNzaW9uRWIKIF9fWk43
V2ViQ29yZTIxR2VvbG9jYXRpb25Db250cm9sbGVyMTNlcnJvck9jY3VycmVkRVBOU18xNkdlb2xv
Y2F0aW9uRXJyb3JFCiBfX1pON1dlYkNvcmUyMUdlb2xvY2F0aW9uQ29udHJvbGxlcjE0c3VwcGxl
bWVudE5hbWVFdgogX19aTjdXZWJDb3JlMjFHZW9sb2NhdGlvbkNvbnRyb2xsZXIxNXBvc2l0aW9u
Q2hhbmdlZEVQTlNfMTlHZW9sb2NhdGlvblBvc2l0aW9uRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDdhMjVlYWE4ODE0YWQ0ODU3
MzMxYTZjNTNhNzY2MzY2Y2QzYzIyZGMuLmQ5NTQxZThiNWQ4NjI1Yzk4Mjk4ODI0YzFiNjZjNTFk
ZDM4OTc4NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTc2LDggKzc2LDYgQEAKIAkJMDMzQTZBN0UxNDdFMDdFNzAwNTA5QjM2
IC8qIEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMzNBNkE3RDE0N0UwN0U3MDA1MDlCMzYgLyogSFRNTFBy
b3BlcnRpZXNDb2xsZWN0aW9uLmNwcCAqLzsgfTsKIAkJMDMzQTZBODExNDdFMDg4NjAwNTA5QjM2
IC8qIEpTSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAzM0E2QTgwMTQ3RTA4ODYwMDUwOUIzNiAvKiBKU0hU
TUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5jcHAgKi87IH07CiAJCTAzM0E2QTgzMTQ3RTA4QTYwMDUw
OUIzNiAvKiBKU0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDMzQTZBODIxNDdFMDhBNjAwNTA5QjM2IC8qIEpT
SFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmggKi87IH07Ci0JCTA1MkJGQ0U5MTI4QUJGMTUwMEZE
MzM4RCAvKiBHZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDUyQkZDRTgxMjhBQkYxNTAwRkQzMzhEIC8qIEdlb2xv
Y2F0aW9uQ2xpZW50TW9jay5jcHAgKi87IH07Ci0JCTA1MkJGQ0VCMTI4QUJGMjEwMEZEMzM4RCAv
KiBHZW9sb2NhdGlvbkNsaWVudE1vY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA1MkJGQ0VBMTI4QUJGMjEwMEZEMzM4RCAvKiBHZW9sb2NhdGlvbkNs
aWVudE1vY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwNTYyRjk0NjE1NzNFQ0VCMDAzMUNBMTYgLyogV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNTYy
Rjk0NDE1NzNFQ0VCMDAzMUNBMTYgLyogV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5jcHAgKi87
IH07CiAJCTA1NjJGOTQ3MTU3M0VDRUIwMDMxQ0ExNiAvKiBXZWJLaXRDU1NTVkdEb2N1bWVudFZh
bHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNTYy
Rjk0NTE1NzNFQ0VCMDAzMUNBMTYgLyogV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5oICovOyB9
OwogCQkwNTYyRjk2MTE1NzNGODhGMDAzMUNBMTYgLyogUGxhdGZvcm1MYXllci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDU2MkY5NjAxNTczRjg4RjAw
MzFDQTE2IC8qIFBsYXRmb3JtTGF5ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtNzA4OCw4ICs3MDg2LDYgQEAKIAkJMDMzQTZBN0YxNDdFMDdG
OTAwNTA5QjM2IC8qIEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDMzQTZBODAxNDdFMDg4NjAwNTA5QjM2IC8qIEpTSFRNTFByb3BlcnRpZXND
b2xsZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRN
TFByb3BlcnRpZXNDb2xsZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDMzQTZBODIxNDdFMDhBNjAwNTA5QjM2IC8qIEpTSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSFRNTFByb3BlcnRpZXNDb2xsZWN0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA1MkJGQ0U4MTI4QUJGMTUwMEZE
MzM4RCAvKiBHZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcDsgcGF0aCA9IG1vY2svR2Vv
bG9jYXRpb25DbGllbnRNb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDUy
QkZDRUExMjhBQkYyMTAwRkQzMzhEIC8qIEdlb2xvY2F0aW9uQ2xpZW50TW9jay5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBHZW9sb2NhdGlvbkNsaWVudE1vY2suaDsgcGF0aCA9
IG1vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA1NjJGOTQ0MTU3M0VDRUIwMDMxQ0ExNiAvKiBXZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYktpdENTU1NWR0Rv
Y3VtZW50VmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNTYyRjk0NTE1
NzNFQ0VCMDAzMUNBMTYgLyogV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA1NjJGOTYwMTU3M0Y4OEYwMDMxQ0ExNiAvKiBQbGF0
Zm9ybUxheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtTGF5
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NDYxLDggKzE1NDU3LDYgQEAK
IAkJCWNoaWxkcmVuID0gKAogCQkJCTU5MzA5QTEwMTFGNEFFNTgwMDI1MDYwMyAvKiBEZXZpY2VP
cmllbnRhdGlvbkNsaWVudE1vY2suY3BwICovLAogCQkJCTU5MzA5QTEyMTFGNEFFNkEwMDI1MDYw
MyAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCAqLywKLQkJCQkwNTJCRkNFODEyOEFC
RjE1MDBGRDMzOEQgLyogR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcCAqLywKLQkJCQkwNTJCRkNF
QTEyOEFCRjIxMDBGRDMzOEQgLyogR2VvbG9jYXRpb25DbGllbnRNb2NrLmggKi8sCiAJCQkJMEZF
NzE0MDMxNDIxNzBCODAwREIzM0JBIC8qIFNjcm9sbGJhclRoZW1lTW9jay5jcHAgKi8sCiAJCQkJ
MEZFNzE0MDQxNDIxNzBCODAwREIzM0JBIC8qIFNjcm9sbGJhclRoZW1lTW9jay5oICovLAogCQkJ
KTsKQEAgLTIzNTIxLDcgKzIzNTE1LDYgQEAKIAkJCQkwNzIwQjBBMTE0RDMzMjM1MDA2NDI5NTUg
LyogR2VuZXJpY0V2ZW50UXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NDZBRjI0MTRGNERE
RTYwMDNFN0E3MCAvKiBHZW9sb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1NkNCMjMx
MEQ1QUM4MDAwQTc3QzY0IC8qIEdlb2xvY2F0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLywKLQkJ
CQkwNTJCRkNFQjEyOEFCRjIxMDBGRDMzOEQgLyogR2VvbG9jYXRpb25DbGllbnRNb2NrLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5NzQ2QUYyNzE0RjREREU2MDAzRTdBNzAgLyogR2VvbG9jYXRpb25D
b250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzQ2QUYyODE0RjREREU2MDAzRTdBNzAg
LyogR2VvbG9jYXRpb25FcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0NkFGMjkxNEY0RERF
NjAwM0U3QTcwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjY3
NTMsNyArMjY3NDYsNiBAQAogCQkJCTJENDgxRjAzMTQ2QjVDNjUwMEFBNzgzNCAvKiBHZW5lcmF0
b3JHZW5lcmF0ZWRJbWFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzIwQjBBMDE0RDMzMjM1
MDA2NDI5NTUgLyogR2VuZXJpY0V2ZW50UXVldWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc0
NkFGMjMxNEY0RERFNjAwM0U3QTcwIC8qIEdlb2xvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCTA1MkJGQ0U5MTI4QUJGMTUwMEZEMzM4RCAvKiBHZW9sb2NhdGlvbkNsaWVudE1vY2suY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTc0NkFGMjYxNEY0RERFNjAwM0U3QTcwIC8qIEdlb2xvY2F0
aW9uQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzIwQjBBMDE0RDMzMjM1MDA2
NDI5NTYgLyogR2VzdHVyZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyQzNEQTZEMEQw
MDZDRDYwMEVGNkYyNiAvKiBHbHlwaFBhZ2VUcmVlTm9kZS5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRN
b2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRN
b2NrLmNwcAppbmRleCAyNzZiNGEzNDMwOWM5Mjk4YThmODViZDhkNjY5ZGIxMTlkYzkxNDE4Li4z
ODNiZjk4ZTMxYzI4NTNlMzcwOGI2YjYxNmNjYWE0MWJlNmRjZDUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwCkBA
IC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTQx
LDYgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBHZW9sb2NhdGlvbkNsaWVudE1vY2s6
Okdlb2xvY2F0aW9uQ2xpZW50TW9jaygpCiAgICAgOiBtX2NvbnRyb2xsZXIoMCkKKyAgICAsIG1f
aGFzRXJyb3IoZmFsc2UpCiAgICAgLCBtX2NvbnRyb2xsZXJUaW1lcih0aGlzLCAmR2VvbG9jYXRp
b25DbGllbnRNb2NrOjpjb250cm9sbGVyVGltZXJGaXJlZCkKICAgICAsIG1fcGVybWlzc2lvblRp
bWVyKHRoaXMsICZHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnBlcm1pc3Npb25UaW1lckZpcmVkKQog
ICAgICwgbV9pc0FjdGl2ZShmYWxzZSkKQEAgLTYyLDE0ICs2NCwxNSBAQCB2b2lkIEdlb2xvY2F0
aW9uQ2xpZW50TW9jazo6c2V0Q29udHJvbGxlcihHZW9sb2NhdGlvbkNvbnRyb2xsZXIgKmNvbnRy
b2xsZXIpCiB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0UG9zaXRpb24oUGFzc1JlZlB0
cjxHZW9sb2NhdGlvblBvc2l0aW9uPiBwb3NpdGlvbikKIHsKICAgICBtX2xhc3RQb3NpdGlvbiA9
IHBvc2l0aW9uOwotICAgIG1fbGFzdEVycm9yID0gMDsKKyAgICBjbGVhckVycm9yKCk7CiAgICAg
YXN5bmNVcGRhdGVDb250cm9sbGVyKCk7CiB9CiAKLXZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2Nr
OjpzZXRFcnJvcihQYXNzUmVmUHRyPEdlb2xvY2F0aW9uRXJyb3I+IGVycm9yKQordm9pZCBHZW9s
b2NhdGlvbkNsaWVudE1vY2s6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVF
cnJvcihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKLSAgICBtX2xhc3RFcnJvciA9IGVy
cm9yOwotICAgIG1fbGFzdFBvc2l0aW9uID0gMDsKKyAgICBtX2hhc0Vycm9yID0gdHJ1ZTsKKyAg
ICBtX2Vycm9yTWVzc2FnZSA9IGVycm9yTWVzc2FnZTsKKyAgICBtX2xhc3RQb3NpdGlvbiA9IG51
bGxwdHI7CiAgICAgYXN5bmNVcGRhdGVDb250cm9sbGVyKCk7CiB9CiAKQEAgLTEyNSw3ICsxMjgs
NyBAQCB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6cGVybWlzc2lvblRpbWVyRmlyZWQoV2Vi
Q29yZTo6VGltZXI8R2VvbG9jYXRpb25DbGllbgogdm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6
OnJlc2V0KCkKIHsKICAgICBtX2xhc3RQb3NpdGlvbiA9IDA7Ci0gICAgbV9sYXN0RXJyb3IgPSAw
OworICAgIGNsZWFyRXJyb3IoKTsKICAgICBtX3Blcm1pc3Npb25TdGF0ZSA9IFBlcm1pc3Npb25T
dGF0ZVVuc2V0OwogfQogCkBAIC0xNzEsMTAgKzE3NCwxOSBAQCB2b2lkIEdlb2xvY2F0aW9uQ2xp
ZW50TW9jazo6Y29udHJvbGxlclRpbWVyRmlyZWQoVGltZXI8R2VvbG9jYXRpb25DbGllbnRNb2Nr
PiogdAogICAgIEFTU0VSVF9VTlVTRUQodGltZXIsIHRpbWVyID09ICZtX2NvbnRyb2xsZXJUaW1l
cik7CiAgICAgQVNTRVJUKG1fY29udHJvbGxlcik7CiAKLSAgICBpZiAobV9sYXN0UG9zaXRpb24u
Z2V0KCkpCisgICAgaWYgKG1fbGFzdFBvc2l0aW9uLmdldCgpKSB7CisgICAgICAgIEFTU0VSVCgh
bV9oYXNFcnJvcik7CiAgICAgICAgIG1fY29udHJvbGxlci0+cG9zaXRpb25DaGFuZ2VkKG1fbGFz
dFBvc2l0aW9uLmdldCgpKTsKLSAgICBlbHNlIGlmIChtX2xhc3RFcnJvci5nZXQoKSkKLSAgICAg
ICAgbV9jb250cm9sbGVyLT5lcnJvck9jY3VycmVkKG1fbGFzdEVycm9yLmdldCgpKTsKKyAgICB9
IGVsc2UgaWYgKG1faGFzRXJyb3IpIHsKKyAgICAgICAgUmVmUHRyPEdlb2xvY2F0aW9uRXJyb3I+
IGdlb2xvY2F0aW9FcnJvciA9IEdlb2xvY2F0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvbkVy
cm9yOjpQb3NpdGlvblVuYXZhaWxhYmxlLCBtX2Vycm9yTWVzc2FnZSk7CisgICAgICAgIG1fY29u
dHJvbGxlci0+ZXJyb3JPY2N1cnJlZChnZW9sb2NhdGlvRXJyb3IuZ2V0KCkpOworICAgIH0KK30K
Kwordm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6OmNsZWFyRXJyb3IoKQoreworICAgIG1faGFz
RXJyb3IgPSBmYWxzZTsKKyAgICBtX2Vycm9yTWVzc2FnZSA9IFN0cmluZygpOwogfQogCiB9IC8v
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9j
YXRpb25DbGllbnRNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0
aW9uQ2xpZW50TW9jay5oCmluZGV4IDhhYmQ1ZTk3MGU4YzA4OTMwZmExYTVhMzM3MjRmMzlhZDgw
ZjA1OGUuLjc5MjAxMzIwM2E1Yjk3MTRkZTEwOGRlNjE3ZGNhYWJiMDYxYjAwNzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2su
aApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBA
IC00Miw5ICs0Myw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR2VvbG9jYXRpb25D
b250cm9sbGVyOwogY2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlvbjsKLWNsYXNzIEdlb2xvY2F0aW9u
RXJyb3I7CiAKLS8vIFByb3ZpZGVzIGEgbW9jayBvYmplY3QgZm9yIHRoZSBnZW9sb2NhdGlvbiBj
bGllbnQKKy8vIEZJWE1FOiB0aGlzIHNob3VsZCBub3QgYmUgaW4gV2ViQ29yZS4gSXQgc2hvdWxk
IGJlIG1vdmVkIHRvIFdlYktpdC4KKy8vIFByb3ZpZGVzIGEgbW9jayBvYmplY3QgZm9yIHRoZSBn
ZW9sb2NhdGlvbiBjbGllbnQuCiBjbGFzcyBHZW9sb2NhdGlvbkNsaWVudE1vY2sgOiBwdWJsaWMg
R2VvbG9jYXRpb25DbGllbnQgewogcHVibGljOgogICAgIEdlb2xvY2F0aW9uQ2xpZW50TW9jaygp
OwpAQCAtNTMsOCArNTQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldCgpOwogICAgIHZvaWQg
c2V0Q29udHJvbGxlcihHZW9sb2NhdGlvbkNvbnRyb2xsZXIqKTsKIAotICAgIHZvaWQgc2V0RXJy
b3IoUGFzc1JlZlB0cjxHZW9sb2NhdGlvbkVycm9yPik7CiAgICAgdm9pZCBzZXRQb3NpdGlvbihQ
YXNzUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+KTsKKyAgICB2b2lkIHNldE1vY2tHZW9sb2Nh
dGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7
CiAgICAgdm9pZCBzZXRQZXJtaXNzaW9uKGJvb2wgYWxsb3dlZCk7CiAgICAgaW50IG51bWJlck9m
UGVuZGluZ1Blcm1pc3Npb25SZXF1ZXN0cygpIGNvbnN0OwogCkBAIC03NCw5ICs3NSwxMiBAQCBw
cml2YXRlOgogICAgIHZvaWQgYXN5bmNVcGRhdGVQZXJtaXNzaW9uKCk7CiAgICAgdm9pZCBwZXJt
aXNzaW9uVGltZXJGaXJlZChUaW1lcjxHZW9sb2NhdGlvbkNsaWVudE1vY2s+Kik7CiAKKyAgICB2
b2lkIGNsZWFyRXJyb3IoKTsKKwogICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlciogbV9jb250cm9s
bGVyOwogICAgIFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiBtX2xhc3RQb3NpdGlvbjsKLSAg
ICBSZWZQdHI8R2VvbG9jYXRpb25FcnJvcj4gbV9sYXN0RXJyb3I7CisgICAgYm9vbCBtX2hhc0Vy
cm9yOworICAgIFN0cmluZyBtX2Vycm9yTWVzc2FnZTsKICAgICBUaW1lcjxHZW9sb2NhdGlvbkNs
aWVudE1vY2s+IG1fY29udHJvbGxlclRpbWVyOwogICAgIFRpbWVyPEdlb2xvY2F0aW9uQ2xpZW50
TW9jaz4gbV9wZXJtaXNzaW9uVGltZXI7CiAgICAgYm9vbCBtX2lzQWN0aXZlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydC5jcHAKaW5kZXggZTRlNGVmMGMwN2Q2ZWEwYWMzNTVjZDkyNmQyYWY1
NDg3N2YxYzAzMy4uYTI2ZjAzZDQxY2Q3MmEzMWUxZDIxYmE1YTgwZThlOWZmMTU1N2EzNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtOTUsMjAgKzk2LDEwIEBAIHZvaWQgRHVtcFJl
bmRlclRyZWVTdXBwb3J0OjpyZXNldEdlb2xvY2F0aW9uTW9jayhXZWJQYWdlKiB3ZWJQYWdlKQog
ICAgIG1vY2tDbGllbnQtPnJlc2V0KCk7CiB9CiAKLXZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0
OjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihXZWJQYWdlKiB3ZWJQYWdlLCBpbnQgZXJyb3JDb2Rl
LCBjb25zdCBTdHJpbmcgbWVzc2FnZSkKK3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0OjpzZXRN
b2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoV2ViUGFnZSogd2ViUGFnZSwg
Y29uc3QgU3RyaW5nIG1lc3NhZ2UpCiB7Ci0gICAgR2VvbG9jYXRpb25FcnJvcjo6RXJyb3JDb2Rl
IGNvZGUgPSBHZW9sb2NhdGlvbkVycm9yOjpQb3NpdGlvblVuYXZhaWxhYmxlOwotICAgIHN3aXRj
aCAoZXJyb3JDb2RlKSB7Ci0gICAgY2FzZSBQb3NpdGlvbkVycm9yOjpQRVJNSVNTSU9OX0RFTklF
RDoKLSAgICAgICAgY29kZSA9IEdlb2xvY2F0aW9uRXJyb3I6OlBlcm1pc3Npb25EZW5pZWQ7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgUG9zaXRpb25FcnJvcjo6UE9TSVRJT05fVU5BVkFJTEFC
TEU6Ci0gICAgICAgIGNvZGUgPSBHZW9sb2NhdGlvbkVycm9yOjpQb3NpdGlvblVuYXZhaWxhYmxl
OwotICAgICAgICBicmVhazsKLSAgICB9Ci0KICAgICBHZW9sb2NhdGlvbkNsaWVudE1vY2sqIG1v
Y2tDbGllbnQgPSBzdGF0aWNfY2FzdDxHZW9sb2NhdGlvbkNsaWVudE1vY2sqPihHZW9sb2NhdGlv
bkNvbnRyb2xsZXI6OmZyb20oY29yZVBhZ2Uod2ViUGFnZSkpLT5jbGllbnQoKSk7Ci0gICAgbW9j
a0NsaWVudC0+c2V0RXJyb3IoR2VvbG9jYXRpb25FcnJvcjo6Y3JlYXRlKGNvZGUsIG1lc3NhZ2Up
KTsKKyAgICBtb2NrQ2xpZW50LT5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxl
RXJyb3IobWVzc2FnZSk7CiB9CiAKIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0OjpzZXRNb2Nr
R2VvbG9jYXRpb25QZXJtaXNzaW9uKFdlYlBhZ2UqIHdlYlBhZ2UsIGJvb2wgYWxsb3dlZCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydC5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0LmgKaW5kZXggNThmYzFiNTNlZGI1ZDhhYWMwZDM4MjYwNTY1
YWM0NzAyMWVhMjVlNi4uMDFmZTRmODNhN2YyZWFiMGUxMjk4NzBhOWRkY2YxODhlODgyMTg4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0LmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC01Miw3ICs1Myw3IEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyBpbnQgbnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMo
QmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlKik7CiAgICAgc3RhdGljIHZvaWQgcmVzZXRHZW9s
b2NhdGlvbk1vY2soQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlKik7Ci0gICAgc3RhdGljIHZv
aWQgc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlKiwg
aW50IGVycm9yQ29kZSwgY29uc3QgV1RGOjpTdHJpbmcgbWVzc2FnZSk7CisgICAgc3RhdGljIHZv
aWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKEJsYWNrQmVycnk6
OldlYktpdDo6V2ViUGFnZSosIGNvbnN0IFdURjo6U3RyaW5nIG1lc3NhZ2UpOwogICAgIHN0YXRp
YyB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBlcm1pc3Npb24oQmxhY2tCZXJyeTo6V2ViS2l0OjpX
ZWJQYWdlKiwgYm9vbCBhbGxvd2VkKTsKICAgICBzdGF0aWMgdm9pZCBzZXRNb2NrR2VvbG9jYXRp
b25Qb3NpdGlvbihCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2UqLCBkb3VibGUgbGF0aXR1ZGUs
IGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSk7CiAgICAgc3RhdGljIHZvaWQgc2Nh
bGVQYWdlQnkoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlKiwgZmxvYXQsIGZsb2F0LCBmbG9h
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHZW9sb2Nh
dGlvbkNsaWVudE1vY2suaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xv
Y2F0aW9uQ2xpZW50TW9jay5oCmluZGV4IDA1MmE1NDZhZGNjMmQxZWJiZDIyNGI2ZDc3NDU0NmY3
N2FjYzU1YWUuLjdlZmYyYmEwZGMzZGNjNWVlNjJmN2Q4MDE5YTIwODU5MTgzZDVmMTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0aW9uQ2xpZW50
TW9jay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0aW9u
Q2xpZW50TW9jay5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB+V2ViR2VvbG9jYXRp
b25DbGllbnRNb2NrKCkgeyByZXNldCgpOyB9CiAKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0
UG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJh
Y3kpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRFcnJvcihpbnQgZXJyb3JDb2RlLCBjb25z
dCBXZWJTdHJpbmcmIG1lc3NhZ2UpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRNb2NrR2Vv
bG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdl
KTsKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UGVybWlzc2lvbihib29sKTsKICAgICBXRUJL
SVRfRVhQT1JUIGludCBudW1iZXJPZlBlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdHMoKSBjb25zdDsK
ICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXRNb2NrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcAppbmRleCAz
ZDk2MzA3MDdmZWI1YjYzZjAzZTNlMjQxOWIyZTMwNWFmOGQwMjEyLi5hZDk2ZDAzMzllNjRlMjYx
OWJhY2NkMDhkZjRjMDM5YzliNGU1Y2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJHZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkdlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKQEAgLTU4LDIzICs1OCw5
IEBAIHZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpzZXRQb3NpdGlvbihkb3VibGUgbGF0
aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvCiAgICAgbV9jbGllbnRNb2NrLT5zZXRQb3NpdGlv
bih3ZWJQb3NpdGlvbik7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpzZXRF
cnJvcihpbnQgZXJyb3JDb2RlLCBjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UpCit2b2lkIFdlYkdl
b2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJs
ZUVycm9yKGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBXZWJHZW9sb2NhdGlvbkVy
cm9yOjpFcnJvciBjb2RlOwotICAgIHN3aXRjaCAoZXJyb3JDb2RlKSB7Ci0gICAgY2FzZSBQb3Np
dGlvbkVycm9yOjpQRVJNSVNTSU9OX0RFTklFRDoKLSAgICAgICAgY29kZSA9IFdlYkdlb2xvY2F0
aW9uRXJyb3I6OkVycm9yUGVybWlzc2lvbkRlbmllZDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBQb3NpdGlvbkVycm9yOjpQT1NJVElPTl9VTkFWQUlMQUJMRToKLSAgICAgICAgY29kZSA9IFdl
Ykdlb2xvY2F0aW9uRXJyb3I6OkVycm9yUG9zaXRpb25VbmF2YWlsYWJsZTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBXZWJHZW9sb2NhdGlvbkVycm9yIHdlYkVycm9yKGNvZGUs
IG1lc3NhZ2UpOwotICAgIG1fY2xpZW50TW9jay0+c2V0RXJyb3Iod2ViRXJyb3IpOworICAgIG1f
Y2xpZW50TW9jay0+c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKG1l
c3NhZ2UpOwogfQogCiB2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0UGVybWlzc2lv
bihib29sIGFsbG93ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAppbmRleCBlNWQ2OTg5ZDFk
OTU3NTM3MjY2NDM4NjI4NzAzMWJlMTgyYjkxOThkLi5kZTdmZDM5ZTc1ZWU1MGFmNGQyNzk3ZTk2
YzFkOWQ3MGFkOTVkOTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKQEAgLTMsNiArMyw3
IEBACiAgKiAgQ29weXJpZ2h0IChDKSAyMDEwIEpvb25lIEh1ciA8am9vbmVAa2xkcC5vcmc+CiAg
KiAgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiAgQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisgKiAgQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAg
LTY1OCwyMyArNjU5LDExIEBAIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRNb2Nr
R2VvbG9jYXRpb25Qb3NpdGlvbihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3CiAjZW5kaWYKIH0KIAot
dm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcsIGludCBlcnJvckNvZGUsIGNvbnN0IGdjaGFyKiBlcnJvck1l
c3NhZ2UpCit2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0TW9ja0dlb2xvY2F0aW9u
UG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdj
aGFyKiBlcnJvck1lc3NhZ2UpCiB7CiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQogICAgIEdlb2xv
Y2F0aW9uQ2xpZW50TW9jayogbW9jayA9IHN0YXRpY19jYXN0PEdlb2xvY2F0aW9uQ2xpZW50TW9j
ayo+KEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShjb3JlKHdlYlZpZXcpKS0+Y2xpZW50KCkp
OwotCi0gICAgR2VvbG9jYXRpb25FcnJvcjo6RXJyb3JDb2RlIGNvZGU7Ci0gICAgc3dpdGNoIChl
cnJvckNvZGUpIHsKLSAgICBjYXNlIFBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJT05fREVOSUVEOgot
ICAgICAgICBjb2RlID0gR2VvbG9jYXRpb25FcnJvcjo6UGVybWlzc2lvbkRlbmllZDsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBQb3NpdGlvbkVycm9yOjpQT1NJVElPTl9VTkFWQUlMQUJMRToK
LSAgICBkZWZhdWx0OgotICAgICAgICBjb2RlID0gR2VvbG9jYXRpb25FcnJvcjo6UG9zaXRpb25V
bmF2YWlsYWJsZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgbW9jay0+c2V0RXJyb3Io
R2VvbG9jYXRpb25FcnJvcjo6Y3JlYXRlKGNvZGUsIGVycm9yTWVzc2FnZSkpOworICAgIG1vY2st
PnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihlcnJvck1lc3NhZ2Up
OwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmgKaW5kZXggMzc1MDIwZDdiOTQxYTE3
YWU0ODVhZTczNmVmNjg0ODYwYzg5ODI0ZC4uODAxZGM1YjVhZWIwOWRiNDE5YzE2ZjY5NTA4NjQ3
NzFlMTYyYjY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmgKQEAgLTEsNSArMSw2IEBACiAvKgog
ICogIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMTExLDcgKzExMiw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgdm9pZCByZXNldEdlb2xvY2F0aW9uQ2xpZW50TW9jayhXZWJLaXRX
ZWJWaWV3Kik7CiAgICAgc3RhdGljIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUGVybWlzc2lvbihX
ZWJLaXRXZWJWaWV3KiwgYm9vbCBhbGxvd2VkKTsKICAgICBzdGF0aWMgdm9pZCBzZXRNb2NrR2Vv
bG9jYXRpb25Qb3NpdGlvbihXZWJLaXRXZWJWaWV3KiwgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUg
bG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kpOwotICAgIHN0YXRpYyB2b2lkIHNldE1vY2tHZW9s
b2NhdGlvbkVycm9yKFdlYktpdFdlYlZpZXcqLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBnY2hhciog
ZXJyb3JNZXNzYWdlKTsKKyAgICBzdGF0aWMgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlv
blVuYXZhaWxhYmxlRXJyb3IoV2ViS2l0V2ViVmlldyosIGNvbnN0IGdjaGFyKiBlcnJvck1lc3Nh
Z2UpOwogICAgIHN0YXRpYyBpbnQgbnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdHMoV2ViS2l0V2ViVmlldyopOwogCiAgICAgc3RhdGljIHZvaWQgc2V0UGFnZUNhY2hl
U3VwcG9ydHNQbHVnaW5zKFdlYktpdFdlYlZpZXcqLCBib29sIGVuYWJsZWQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGMxZjBhMmQ4OWQ0MmVkYjliZTg5ODMyYjMzNGNk
Yjk0MDQwYWE4NmIuLjgwZDU0MTc0Y2QxMmRjZjEzZTY0YmI4MjZhZmQxZmVjZmZjNTJkMmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTY1MTEsMTEgKzY1MTEsMTEgQEAg
c3RhdGljIHZvaWQgZ2xpYkNvbnRleHRJdGVyYXRpb25DYWxsYmFjayhDRlJ1bkxvb3BPYnNlcnZl
clJlZiwgQ0ZSdW5Mb29wQWN0aXZpdHkKICNlbmRpZiAvLyBFTkFCTEUoR0VPTE9DQVRJT04pCiB9
CiAKLS0gKHZvaWQpX2dlb2xvY2F0aW9uRGlkRmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9y
CistICh2b2lkKV9nZW9sb2NhdGlvbkRpZEZhaWxXaXRoTWVzc2FnZTooTlNTdHJpbmcgKillcnJv
ck1lc3NhZ2UKIHsKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCiAgICAgaWYgKF9wcml2YXRlICYm
IF9wcml2YXRlLT5wYWdlKSB7Ci0gICAgICAgIFJlZlB0cjxHZW9sb2NhdGlvbkVycm9yPiBnZW9s
b2NhdGlvRXJyb3IgPSBHZW9sb2NhdGlvbkVycm9yOjpjcmVhdGUoR2VvbG9jYXRpb25FcnJvcjo6
UG9zaXRpb25VbmF2YWlsYWJsZSwgW2Vycm9yIGxvY2FsaXplZERlc2NyaXB0aW9uXSk7CisgICAg
ICAgIFJlZlB0cjxHZW9sb2NhdGlvbkVycm9yPiBnZW9sb2NhdGlvRXJyb3IgPSBHZW9sb2NhdGlv
bkVycm9yOjpjcmVhdGUoR2VvbG9jYXRpb25FcnJvcjo6UG9zaXRpb25VbmF2YWlsYWJsZSwgZXJy
b3JNZXNzYWdlKTsKICAgICAgICAgV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9t
KF9wcml2YXRlLT5wYWdlKS0+ZXJyb3JPY2N1cnJlZChnZW9sb2NhdGlvRXJyb3IuZ2V0KCkpOwog
ICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoR0VPTE9DQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKaW5kZXggODI2NDc0ZTQxYjM0YzIyYmZmNTQ1NjBmNmEw
YjE4ZjcyM2Y5MDdlMy4uYzQ2ZDM1ZTEyMzI1NjY5ZDYxYWQ4ZTJhZjdkMjk0NWQzYWIxYzRlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaApAQCAtNzI4LDcg
KzcyOCw3IEBAIENvdWxkIGJlIHdvcnRoIGFkZGluZyB0byB0aGUgQVBJLgogLSAoaWQ8V2ViR2Vv
bG9jYXRpb25Qcm92aWRlcj4pX2dlb2xvY2F0aW9uUHJvdmlkZXI7CiAKIC0gKHZvaWQpX2dlb2xv
Y2F0aW9uRGlkQ2hhbmdlUG9zaXRpb246KFdlYkdlb2xvY2F0aW9uUG9zaXRpb24gKilwb3NpdGlv
bjsKLS0gKHZvaWQpX2dlb2xvY2F0aW9uRGlkRmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9y
OworLSAodm9pZClfZ2VvbG9jYXRpb25EaWRGYWlsV2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopZXJy
b3JNZXNzYWdlOwogQGVuZAogCiBAaW50ZXJmYWNlIFdlYlZpZXcgKFdlYlZpZXdOb3RpZmljYXRp
b24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCmluZGV4IGRjODIzMTY1YzczMWVjMDUyZTllMzJhMjJl
MjgxNjg3M2RmMGUyYWMuLjE5MmJhYjQzNzUxNzA4ZTAyMGM2YjM4OTA0NTI4ZmM4NzVhMWI4MzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCkBAIC0yLDcgKzIsNyBAQAogICAgIENvcHlyaWdodCAo
QykgMjAxMCBSb2JlcnQgSG9nYW4gPHJvYmVydEByb2JlcnRob2dhbi5uZXQ+CiAgICAgQ29weXJp
Z2h0IChDKSAyMDA4LDIwMDksMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNp
ZGlhcnkoLWllcykKICAgICBDb3B5cmlnaHQgKEMpIDIwMDcgU3RhaWtvcyBDb21wdXRpbmcgU2Vy
dmljZXMgSW5jLgotICAgIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuCisgICAgQ29weXJp
Z2h0IChDKSAyMDA3LCAyMDEyIEFwcGxlIEluYy4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNzUz
LDIzICs3NTMsMTIgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0TW9ja0dlb2xv
Y2F0aW9uUG9zaXRpb24oUVdlYlBhZ2UqIHBhZ2UsIGRvdWJsZQogI2VuZGlmCiB9CiAKLXZvaWQg
RHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKFFXZWJQYWdl
KiBwYWdlLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBRU3RyaW5nJiBtZXNzYWdlKQordm9pZCBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJs
ZUVycm9yKFFXZWJQYWdlKiBwYWdlLCBjb25zdCBRU3RyaW5nJiBtZXNzYWdlKQogewogI2lmIEVO
QUJMRShHRU9MT0NBVElPTikKICAgICBQYWdlKiBjb3JlUGFnZSA9IFFXZWJQYWdlUHJpdmF0ZTo6
Y29yZShwYWdlKTsKLQotICAgIEdlb2xvY2F0aW9uRXJyb3I6OkVycm9yQ29kZSBjb2RlID0gR2Vv
bG9jYXRpb25FcnJvcjo6UG9zaXRpb25VbmF2YWlsYWJsZTsKLSAgICBzd2l0Y2ggKGVycm9yQ29k
ZSkgewotICAgIGNhc2UgUG9zaXRpb25FcnJvcjo6UEVSTUlTU0lPTl9ERU5JRUQ6Ci0gICAgICAg
IGNvZGUgPSBHZW9sb2NhdGlvbkVycm9yOjpQZXJtaXNzaW9uRGVuaWVkOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIFBvc2l0aW9uRXJyb3I6OlBPU0lUSU9OX1VOQVZBSUxBQkxFOgotICAgICAg
ICBjb2RlID0gR2VvbG9jYXRpb25FcnJvcjo6UG9zaXRpb25VbmF2YWlsYWJsZTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgfQotCiAgICAgR2VvbG9jYXRpb25DbGllbnRNb2NrKiBtb2NrQ2xpZW50ID0g
c3RhdGljX2Nhc3Q8R2VvbG9jYXRpb25DbGllbnRNb2NrKj4oR2VvbG9jYXRpb25Db250cm9sbGVy
Ojpmcm9tKGNvcmVQYWdlKS0+Y2xpZW50KCkpOwotICAgIG1vY2tDbGllbnQtPnNldEVycm9yKEdl
b2xvY2F0aW9uRXJyb3I6OmNyZWF0ZShjb2RlLCBtZXNzYWdlKSk7CisgICAgbW9ja0NsaWVudC0+
c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKG1lc3NhZ2UpOwogI2Vu
ZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQuaCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaAppbmRleCA4NjIyMTM2NTc5OGYxMGEzMDZjZGNlODdl
MjI0NzMwMTFlN2Y5ZGVmLi5jZWZiOWQxYzg3NDU2NWM3ZmYwMGRiMmVlYTAzNDIzM2ZiNjFkZjFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydFF0LmgKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdC5oCkBAIC0yLDcgKzIsNyBAQAogICAgIENvcHlyaWdodCAoQykg
MjAxMCBSb2JlcnQgSG9nYW4gPHJvYmVydEByb2JlcnRob2dhbi5uZXQ+CiAgICAgQ29weXJpZ2h0
IChDKSAyMDA4LDIwMDksMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykKICAgICBDb3B5cmlnaHQgKEMpIDIwMDcgU3RhaWtvcyBDb21wdXRpbmcgU2Vydmlj
ZXMgSW5jLgotICAgIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuCisgICAgQ29weXJpZ2h0
IChDKSAyMDA3LCAyMDEyIEFwcGxlIEluYy4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTQxLDcg
KzE0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCByZXNldEdlb2xvY2F0aW9uTW9jayhR
V2ViUGFnZSopOwogICAgIHN0YXRpYyB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBlcm1pc3Npb24o
UVdlYlBhZ2UqLCBib29sIGFsbG93ZWQpOwogICAgIHN0YXRpYyB2b2lkIHNldE1vY2tHZW9sb2Nh
dGlvblBvc2l0aW9uKFFXZWJQYWdlKiwgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRl
LCBkb3VibGUgYWNjdXJhY3kpOwotICAgIHN0YXRpYyB2b2lkIHNldE1vY2tHZW9sb2NhdGlvbkVy
cm9yKFFXZWJQYWdlKiwgaW50IGVycm9yQ29kZSwgY29uc3QgUVN0cmluZyYgbWVzc2FnZSk7Cisg
ICAgc3RhdGljIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9y
KFFXZWJQYWdlKiwgY29uc3QgUVN0cmluZyYgbWVzc2FnZSk7CiAgICAgc3RhdGljIGludCBudW1i
ZXJPZlBlbmRpbmdHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0cyhRV2ViUGFnZSopOwogCiAg
ICAgc3RhdGljIGludCB3b3JrZXJUaHJlYWRDb3VudCgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGEwMzIxYjVjYjAzYTcwZTc4ZjlmNDk5YjQy
NTVlMDZjOTZhMWQyYmEuLjZhY2JiNzkzNmE1YzI4OTcwNDE0NTlkMzIzZDVjOWM3ZjdmNGM3ZDMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NyBAQAorMjAxMi0wOS0yMSAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgRml4IEdlb2xvY2F0aW9uIGVycm9yIHJlcG9ydGluZyBpbiB0aGUg
dGVzdCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05NzM4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2YgdGhlIGNoYW5nZSBzdWNoIGFzIGFwcHJvYWNo
LCByYXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1bmN0aW9uIGRlc2NyaXB0aW9ucyBiZWxvdyAo
T09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHA6CisgICAg
ICAgIChzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbkVycm9yQ2FsbGJhY2spOgorICAgICAgICAo
VGVzdFJ1bm5lcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9U
ZXN0UnVubmVyLmg6CisgICAgICAgIChUZXN0UnVubmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9ibGFja2JlcnJ5L1Rlc3RSdW5uZXJCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKFRlc3RS
dW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3IpOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwOgorICAgICAgICAoRFJUVGVzdFJ1
bm5lcjo6RFJUVGVzdFJ1bm5lcik6CisgICAgICAgIChEUlRUZXN0UnVubmVyOjpzZXRNb2NrR2Vv
bG9jYXRpb25Qb3NpdGlvbkVycm9yKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9EUlRUZXN0UnVubmVyLmg6CisgICAgICAgIChEUlRUZXN0UnVubmVyKToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHA6CisgICAgICAgIChUZXN0UnVubmVy
OjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbkVycm9yKToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHA6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRNb2Nr
R2VvbG9jYXRpb25Qb3NpdGlvbkVycm9yKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMv
TW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMv
TW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIubW06CisgICAgICAgICgtW01vY2tHZW9sb2NhdGlvblBy
b3ZpZGVyIGRlYWxsb2NdKToKKyAgICAgICAgKC1bTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIgcmVz
ZXRFcnJvcl0pOgorICAgICAgICAoLVtNb2NrR2VvbG9jYXRpb25Qcm92aWRlciBzZXRQb3NpdGlv
bjpdKToKKyAgICAgICAgKC1bTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIgc2V0TW9ja0dlb2xvY2F0
aW9uUG9zaXRpb25FcnJvcldpdGhNZXNzYWdlOl0pOgorICAgICAgICAoLVtNb2NrR2VvbG9jYXRp
b25Qcm92aWRlciBsYXN0UG9zaXRpb25dKToKKyAgICAgICAgKC1bTW9ja0dlb2xvY2F0aW9uUHJv
dmlkZXIgdGltZXJGaXJlZF0pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVu
bmVyTWFjLm1tOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRp
b25FcnJvcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmNwcDoK
KyAgICAgICAgKFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3IpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5oOgorICAgICAgICAoVGVz
dFJ1bm5lcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3Bw
OgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25FcnJvcik6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd3gvVGVzdFJ1bm5lcld4LmNwcDoKKyAgICAgICAg
KFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3IpOgorCiAyMDEyLTA5
LTIxICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIHdlYmtp
dHB5OiBkcm9wIHN1cHBvcnQgZm9yIG9sZCBUZXN0RXhwZWN0YXRpb25zIHN5bnRheApkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9UZXN0UnVubmVyLmNwcAppbmRleCAxZDAwYzUwYTM1YTM3ZWMwZmFkYzE4YWQ4NGUz
MGRiNzE4YzhhMGQ0Li45ZjdhN2MxYmVjYTBhYmE4NDM2OWU5N2ZlZTkxZWVjMmRjMjZjZDU3IDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAyMDExLCAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBK
b29uZSBIdXIgPGpvb25lQGtsZHAub3JnPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMTA5NSwxNyAr
MTA5NSwxNiBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbkNh
bGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iagogICAgIHJldHVybiBKU1ZhbHVlTWFr
ZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAotc3RhdGljIEpTVmFsdWVSZWYgc2V0TW9ja0dlb2xv
Y2F0aW9uRXJyb3JDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVu
Y3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25z
dCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCitzdGF0aWMg
SlNWYWx1ZVJlZiBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3JDYWxs
YmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0
UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFy
Z3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7Ci0gICAgaWYgKGFyZ3VtZW50Q291
bnQgPCAyKQorICAgIGlmIChhcmd1bWVudENvdW50ICE9IDEpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIAotICAgIGludCBjb2RlID0gSlNWYWx1ZVRvTnVt
YmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgTlVMTCk7Ci0gICAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IG1lc3NhZ2UoQWRvcHQsIEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1l
bnRzWzFdLCBleGNlcHRpb24pKTsKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gbWVzc2Fn
ZShBZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2Vw
dGlvbikpOwogICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7CiAKICAgICBUZXN0UnVubmVyKiBjb250
cm9sbGVyID0gcmVpbnRlcnByZXRfY2FzdDxUZXN0UnVubmVyKj4oSlNPYmplY3RHZXRQcml2YXRl
KHRoaXNPYmplY3QpKTsKLSAgICBjb250cm9sbGVyLT5zZXRNb2NrR2VvbG9jYXRpb25FcnJvcihj
b2RlLCBtZXNzYWdlLmdldCgpKTsKKyAgICBjb250cm9sbGVyLT5zZXRNb2NrR2VvbG9jYXRpb25Q
b3NpdGlvblVuYXZhaWxhYmxlRXJyb3IobWVzc2FnZS5nZXQoKSk7CiAKICAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CkBAIC0yMjY2LDcgKzIyNjUsNyBAQCBKU1N0
YXRpY0Z1bmN0aW9uKiBUZXN0UnVubmVyOjpzdGF0aWNGdW5jdGlvbnMoKQogICAgICAgICB7ICJz
ZXRNYWluRnJhbWVJc0ZpcnN0UmVzcG9uZGVyIiwgc2V0TWFpbkZyYW1lSXNGaXJzdFJlc3BvbmRl
ckNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldE1pbmltdW1UaW1lckludGVydmFsIiwg
c2V0TWluaW11bVRpbWVySW50ZXJ2YWxDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRN
b2NrRGV2aWNlT3JpZW50YXRpb24iLCBzZXRNb2NrRGV2aWNlT3JpZW50YXRpb25DYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LAotICAgICAgICB7ICJzZXRNb2NrR2VvbG9jYXRpb25FcnJvciIsIHNldE1vY2tHZW9s
b2NhdGlvbkVycm9yQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAic2V0TW9ja0dlb2xvY2F0
aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yIiwgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25V
bmF2YWlsYWJsZUVycm9yQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0TW9ja0dlb2xv
Y2F0aW9uUG9zaXRpb24iLCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbkNhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCiAgICAgICAgIHsgImFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdCIsIGFkZE1vY2tTcGVlY2hJ
bnB1dFJlc3VsdENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldE1vY2tTcGVlY2hJbnB1
dER1bXBSZWN0Iiwgc2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3RDYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oCmluZGV4IDliY2M5NWJjOTJkMzI5NjFlNTFjNGEzMzc5
YjM3ODM5NDIyN2YyNTkuLmVkZDBkZmRhNzViNjMxOTZhYTljMDJiZDFiYmQ3ZGIxYTQ0NWI0MjAg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEw
MCw4ICsxMDAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBdXRvbWF0aWNMaW5rRGV0ZWN0aW9u
RW5hYmxlZChib29sIGZsYWcpOwogICAgIHZvaWQgc2V0TWFpbkZyYW1lSXNGaXJzdFJlc3BvbmRl
cihib29sIGZsYWcpOwogICAgIHZvaWQgc2V0TW9ja0RldmljZU9yaWVudGF0aW9uKGJvb2wgY2Fu
UHJvdmlkZUFscGhhLCBkb3VibGUgYWxwaGEsIGJvb2wgY2FuUHJvdmlkZUJldGEsIGRvdWJsZSBi
ZXRhLCBib29sIGNhblByb3ZpZGVHYW1tYSwgZG91YmxlIGdhbW1hKTsKLSAgICB2b2lkIHNldE1v
Y2tHZW9sb2NhdGlvbkVycm9yKGludCBjb2RlLCBKU1N0cmluZ1JlZiBtZXNzYWdlKTsKICAgICB2
b2lkIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxv
bmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KTsKKyAgICB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBv
c2l0aW9uVW5hdmFpbGFibGVFcnJvcihKU1N0cmluZ1JlZiBtZXNzYWdlKTsKICAgICB2b2lkIGFk
ZE1vY2tTcGVlY2hJbnB1dFJlc3VsdChKU1N0cmluZ1JlZiByZXN1bHQsIGRvdWJsZSBjb25maWRl
bmNlLCBKU1N0cmluZ1JlZiBsYW5ndWFnZSk7CiAgICAgdm9pZCBzZXRNb2NrU3BlZWNoSW5wdXRE
dW1wUmVjdChib29sIGZsYWcpOwogICAgIHZvaWQgc2V0UGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0
TG9jYXRpb24oSlNTdHJpbmdSZWYgcGF0aCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9ibGFja2JlcnJ5L1Rlc3RSdW5uZXJCbGFja0JlcnJ5LmNwcCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2JsYWNrYmVycnkvVGVzdFJ1bm5lckJsYWNrQmVycnkuY3BwCmluZGV4IDg5ODY5MDBj
NmIzZTUzMjFlYjRjNmQwMzljYjQwZmRlODJjMzVkZWMuLjYyYmU1ZmUxODYxYzI0YTY5ZTdkNTVi
OTU4N2RkNTVlMjBmNTk3ODcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNr
YmVycnkvVGVzdFJ1bm5lckJsYWNrQmVycnkuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2JsYWNrYmVycnkvVGVzdFJ1bm5lckJsYWNrQmVycnkuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCwgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGlt
aXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNDQ5LDEwICs0
NTAsMTAgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3Vi
bGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGQKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBv
cnQ6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJl
bmRlclRyZWU6OmN1cnJlbnRJbnN0YW5jZSgpLT5wYWdlKCksIGxhdGl0dWRlLCBsb25naXR1ZGUs
IGFjY3VyYWN5KTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25FcnJv
cihpbnQgY29kZSwgSlNTdHJpbmdSZWYgbWVzc2FnZSkKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9j
a0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKEpTU3RyaW5nUmVmIG1lc3NhZ2Up
CiB7CiAgICAgU3RyaW5nIG1lc3NhZ2VTdHIgPSBqc1N0cmluZ1JlZlRvV2ViQ29yZVN0cmluZyht
ZXNzYWdlKTsKLSAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnQ6OnNldE1vY2tHZW9sb2NhdGlvbkVy
cm9yKEJsYWNrQmVycnk6OldlYktpdDo6RHVtcFJlbmRlclRyZWU6OmN1cnJlbnRJbnN0YW5jZSgp
LT5wYWdlKCksIGNvZGUsIG1lc3NhZ2VTdHIpOworICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydDo6
c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKEJsYWNrQmVycnk6Oldl
YktpdDo6RHVtcFJlbmRlclRyZWU6OmN1cnJlbnRJbnN0YW5jZSgpLT5wYWdlKCksIG1lc3NhZ2VT
dHIpOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNob3dXZWJJbnNwZWN0b3IoKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5jcHAgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmNwcAppbmRleCAwZTVhOGIz
MWJlN2JmYzg1YzcwYTM5MDkzYjZlMGYzMTdkZTM1ZDc5Li4wZDQwNTE3ZjU4MjczODkwM2JkZDkz
MjVjY2RhMWNiYzBkZjEyYWU1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9EUlRUZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9EUlRUZXN0UnVubmVyLmNwcApAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykg
MjAxMCBQYXdlbCBIYWpkYW4gKHBoYWpkYW4uanJAY2hyb21pdW0ub3JnKQorICogQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTIwNiw3ICsyMDcsNyBAQCBEUlRUZXN0UnVubmVyOjpE
UlRUZXN0UnVubmVyKFRlc3RTaGVsbCogc2hlbGwpCiAgICAgYmluZE1ldGhvZCgic2V0SmF2YVNj
cmlwdENhbkFjY2Vzc0NsaXBib2FyZCIsICZEUlRUZXN0UnVubmVyOjpzZXRKYXZhU2NyaXB0Q2Fu
QWNjZXNzQ2xpcGJvYXJkKTsKICAgICBiaW5kTWV0aG9kKCJzZXRNaW5pbXVtVGltZXJJbnRlcnZh
bCIsICZEUlRUZXN0UnVubmVyOjpzZXRNaW5pbXVtVGltZXJJbnRlcnZhbCk7CiAgICAgYmluZE1l
dGhvZCgic2V0TW9ja0RldmljZU9yaWVudGF0aW9uIiwgJkRSVFRlc3RSdW5uZXI6OnNldE1vY2tE
ZXZpY2VPcmllbnRhdGlvbik7Ci0gICAgYmluZE1ldGhvZCgic2V0TW9ja0dlb2xvY2F0aW9uRXJy
b3IiLCAmRFJUVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IpOworICAgIGJpbmRN
ZXRob2QoInNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvciIsICZEUlRU
ZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IpOwog
ICAgIGJpbmRNZXRob2QoInNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uIiwgJkRSVFRlc3RSdW5u
ZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKTsKICAgICBiaW5kTWV0aG9kKCJzZXRQYWdl
VmlzaWJpbGl0eSIsICZEUlRUZXN0UnVubmVyOjpzZXRQYWdlVmlzaWJpbGl0eSk7CiAgICAgYmlu
ZE1ldGhvZCgic2V0UGx1Z2luc0VuYWJsZWQiLCAmRFJUVGVzdFJ1bm5lcjo6c2V0UGx1Z2luc0Vu
YWJsZWQpOwpAQCAtMTgxNiwxNCArMTgxNywxNSBAQCB2b2lkIERSVFRlc3RSdW5uZXI6OnNldE1v
Y2tHZW9sb2NhdGlvblBvc2l0aW9uKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLAog
ICAgICAgICB3aW5kb3dMaXN0W2ldLT5nZW9sb2NhdGlvbkNsaWVudE1vY2soKS0+c2V0UG9zaXRp
b24oYXJndW1lbnRzWzBdLnRvRG91YmxlKCksIGFyZ3VtZW50c1sxXS50b0RvdWJsZSgpLCBhcmd1
bWVudHNbMl0udG9Eb3VibGUoKSk7CiB9CiAKLXZvaWQgRFJUVGVzdFJ1bm5lcjo6c2V0TW9ja0dl
b2xvY2F0aW9uRXJyb3IoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlh
bnQqIHJlc3VsdCkKK3ZvaWQgRFJUVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRp
b25VbmF2YWlsYWJsZUVycm9yKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBW
YXJpYW50KiByZXN1bHQpCiB7CiAgICAgcmVzdWx0LT5zZXROdWxsKCk7Ci0gICAgaWYgKGFyZ3Vt
ZW50cy5zaXplKCkgPCAyIHx8ICFhcmd1bWVudHNbMF0uaXNOdW1iZXIoKSB8fCAhYXJndW1lbnRz
WzFdLmlzU3RyaW5nKCkpCisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgIT0gMSB8fCAhYXJndW1l
bnRzWzFdLmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybjsKICAgICBWZWN0b3I8V2ViVmlld0hv
c3QqPiB3aW5kb3dMaXN0ID0gbV9zaGVsbC0+d2luZG93TGlzdCgpOworICAgIC8vIEZJWE1FOiBC
ZW5qYW1pbgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2luZG93TGlzdC5zaXplKCk7IGkr
KykKLSAgICAgICAgd2luZG93TGlzdFtpXS0+Z2VvbG9jYXRpb25DbGllbnRNb2NrKCktPnNldEVy
cm9yKGFyZ3VtZW50c1swXS50b0ludDMyKCksIGNwcFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVu
dHNbMV0pKTsKKyAgICAgICAgd2luZG93TGlzdFtpXS0+Z2VvbG9jYXRpb25DbGllbnRNb2NrKCkt
PnNldEVycm9yKGNwcFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVudHNbMF0pKTsKIH0KIAogdm9p
ZCBEUlRUZXN0UnVubmVyOjphYm9ydE1vZGFsKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1l
bnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9EUlRUZXN0UnVubmVyLmgKaW5kZXggYjZjOTA3ZTYyNzE4Y2QyMjc1ODQ3ZDM5ZGMzZjhlOGQ0
ODQzNjdjMy4uNTU5NDBhY2QxZjQ3YmIyNmFmMjlkZDViYjZkNTMwZDJhZWUwNjZkMiAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5oCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuaApAQCAtMSw2ICsx
LDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBQYXdlbCBIYWpkYW4gKHBoYWpkYW4uanJA
Y2hyb21pdW0ub3JnKQorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTMzNyw3
ICszMzgsNyBAQCBwdWJsaWM6CiAgICAgLy8gR2VvbG9jYXRpb24gcmVsYXRlZCBmdW5jdGlvbnMu
CiAgICAgdm9pZCBzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oY29u
c3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwotICAgIHZvaWQgc2V0TW9ja0dlb2xv
Y2F0aW9uRXJyb3IoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZv
aWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAogICAgIC8vIEVtcHR5IHN0dWIgbWV0aG9kIHRv
IGtlZXAgcGFyaXR5IHdpdGggb2JqZWN0IG1vZGVsIGV4cG9zZWQgYnkgZ2xvYmFsIERSVFRlc3RS
dW5uZXIuCiAgICAgdm9pZCBhYm9ydE1vZGFsKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZh
cmlhbnQqKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL2FuZHJv
aWRfZmFsbGJhY2tfZm9udHMueG1sIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vYW5k
cm9pZF9mYWxsYmFja19mb250cy54bWwKaW5kZXggNWFiNmMyZDU5N2I3MWZlMzJlNGMyOTVhYTA0
ODM1ZGY3M2IwNDI5MC4uMTIzMTZjMzZiMWMwOTc5MzY2NDIxZjZmNzI2OWJmMmI5YTQ2NzU0OCAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vYW5kcm9pZF9mYWxsYmFj
a19mb250cy54bWwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vYW5kcm9pZF9m
YWxsYmFja19mb250cy54bWwKQEAgLTEwLDQgKzEwLDQgQEAKICAgICAgICAgICAgIDxmaWxlPkRy
b2lkU2Fuc0ZhbGxiYWNrLnR0ZjwvZmlsZT4KICAgICAgICAgPC9maWxlc2V0PgogICAgIDwvZmFt
aWx5PgotPC9mYW1pbHlzZXQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9mYW1pbHlz
ZXQ+CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5j
cHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHAKaW5kZXggMmUz
ODBjNTY5MzFlYjhmZmRjZmNlYzNhMjYwODA5YWYxNGEwY2JmZi4uOTc5N2EzMTUyZTg5NDA1ZWVh
NjRjYjc5M2I5NDMwZDY2NmUwOTI2OSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
ZWZsL1Rlc3RSdW5uZXJFZmwuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9UZXN0
UnVubmVyRWZsLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAw
NyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA4IE51
YW50aSBMdGQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSmFuIE1pY2hhZWwgQWxvbnpvIDxqbWFs
b256b0BnbWFpbC5jb20+CkBAIC0zNzksNyArMzc5LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRN
b2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUsIGRvdWJsZSwgZG91YmxlKQogICAgIG5vdElt
cGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uRXJy
b3IoaW50LCBKU1N0cmluZ1JlZikKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9u
UG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKEpTU3RyaW5nUmVmKQogewogICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgZm9yIEdlb2xvY2F0aW9uIGxheW91dCB0ZXN0cy4KICAgICAvLyBTZWUgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MjY0LgpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwCmluZGV4IDA5MjljYWRmNjIxNzNhOWNlOWM5Yzkz
MWViNDcyNmQ4YzBkZjFhYTYuLmRiOTYyODkyNzBiNzc0ODEyODM1YzBmODA0OWIxNDY5MzRmYmMw
MmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9UZXN0UnVubmVyR3RrLmNw
cAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHAKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwgPGVyaWNA
d2Via2l0Lm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwOCBOdWFudGkgTHRkLgogICogQ29weXJp
Z2h0IChDKSAyMDA5IEphbiBNaWNoYWVsIEFsb256byA8am1hbG9uem9AZ21haWwuY29tPgpAQCAt
NDQ3LDcgKzQ0Nyw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRp
b24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkCiAgICAgRHVtcFJlbmRlclRy
ZWVTdXBwb3J0R3RrOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbih2aWV3LCBsYXRpdHVkZSwg
bG9uZ2l0dWRlLCBhY2N1cmFjeSk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xv
Y2F0aW9uRXJyb3IoaW50IGNvZGUsIEpTU3RyaW5nUmVmIG1lc3NhZ2UpCit2b2lkIFRlc3RSdW5u
ZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihKU1N0cmluZ1Jl
ZiBtZXNzYWdlKQogewogICAgIFdlYktpdFdlYlZpZXcqIHZpZXcgPSBXRUJLSVRfV0VCX1ZJRVco
Z19zbGlzdF9udGhfZGF0YSh3ZWJWaWV3TGlzdCwgMCkpOwogICAgIGlmICghdmlldykKQEAgLTQ1
NSw3ICs0NTUsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGlu
dCBjb2RlLCBKU1N0cmluZ1JlZiBtZXNzYWdlKQogICAgIEFTU0VSVCh2aWV3KTsKIAogICAgIEdP
d25QdHI8Z2NoYXI+IGNNZXNzYWdlKEpTU3RyaW5nQ29weVVURjhDU3RyaW5nKG1lc3NhZ2UpKTsK
LSAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKHZp
ZXcsIGNvZGUsIGNNZXNzYWdlLmdldCgpKTsKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6
OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcih2aWV3LCBjTWVzc2Fn
ZS5nZXQoKSk7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9u
KGJvb2wgYWxsb3cpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTW9ja0dl
b2xvY2F0aW9uUHJvdmlkZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9Nb2NrR2VvbG9j
YXRpb25Qcm92aWRlci5oCmluZGV4IDMxMWQxZTkxODRiMzZiMzgyZTUxM2I3OGFkOGIzMzYxZDFk
NTkwNTcuLmQ3YWM4OTFkYjVmYjkwMWRiMmJjYmU4M2FmOGE4OWM3OThlNWYxNjIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9Nb2NrR2VvbG9jYXRpb25Qcm92aWRlci5oCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9Nb2NrR2VvbG9jYXRpb25Qcm92aWRlci5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTIgQXBwbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
OCwxMCArMjgsMTIgQEAKIAogI2ltcG9ydCA8V2ViS2l0L1dlYlZpZXdQcml2YXRlLmg+CiAjaW1w
b3J0IDx3dGYvSGFzaFNldC5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBAaW50ZXJm
YWNlIE1vY2tHZW9sb2NhdGlvblByb3ZpZGVyIDogTlNPYmplY3Q8V2ViR2VvbG9jYXRpb25Qcm92
aWRlcj4gewotICAgIFdlYkdlb2xvY2F0aW9uUG9zaXRpb24gKl9sYXN0UG9zaXRpb247Ci0gICAg
TlNFcnJvciAqX2Vycm9yOworICAgIFJldGFpblB0cjxXZWJHZW9sb2NhdGlvblBvc2l0aW9uPiBf
bGFzdFBvc2l0aW9uOworICAgIEJPT0wgX2hhc0Vycm9yOworICAgIFJldGFpblB0cjxOU1N0cmlu
Zz4gX2Vycm9yTWVzc2FnZTsKICAgICBOU1RpbWVyICpfdGltZXI7CiAgICAgSGFzaFNldDxXZWJW
aWV3ICo+IF9yZWdpc3RlcmVkVmlld3M7CiB9CkBAIC0zOSw3ICs0MSw3IEBACiArIChNb2NrR2Vv
bG9jYXRpb25Qcm92aWRlciAqKXNoYXJlZDsKIAogLSAodm9pZClzZXRQb3NpdGlvbjooV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbiAqKXBvc2l0aW9uOwotLSAodm9pZClzZXRFcnJvcjooTlNFcnJvciAq
KWVycm9yOworLSAodm9pZClzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJy
b3JXaXRoTWVzc2FnZTooTlNTdHJpbmcgKillcnJvck1lc3NhZ2U7CiAKIC0gKHZvaWQpc3RvcFRp
bWVyOwogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTW9ja0dlb2xvY2F0
aW9uUHJvdmlkZXIubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTW9ja0dlb2xvY2F0aW9u
UHJvdmlkZXIubW0KaW5kZXggZTAzY2FlMjRhNWQzNTdlZTU5MzBkYTYxNTQ0MzdlYzlhZWY5ZjVm
Yi4uM2YyZTEwOTc5Y2RjZWJkZDRlNzJmYzU3YzI2OTM5MGFiZmU1MTA1ZiAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL01vY2tHZW9sb2NhdGlvblByb3ZpZGVyLm1tCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9Nb2NrR2VvbG9jYXRpb25Qcm92aWRlci5tbQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEyIEFwcGxlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgs
MzQgKzM4LDMzIEBACiB7CiAgICAgQVNTRVJUKF9yZWdpc3RlcmVkVmlld3MuaXNFbXB0eSgpKTsK
IAotICAgIFtfbGFzdFBvc2l0aW9uIHJlbGVhc2VdOwotICAgIFtfZXJyb3IgcmVsZWFzZV07Cisg
ICAgX2xhc3RQb3NpdGlvbi5jbGVhcigpOworICAgIF9lcnJvck1lc3NhZ2UuY2xlYXIoKTsKICAg
ICBbc3VwZXIgZGVhbGxvY107CiB9CiAKKy0gKHZvaWQpcmVzZXRFcnJvcgoreworICAgIF9oYXNF
cnJvciA9IE5POworICAgIF9lcnJvck1lc3NhZ2UuY2xlYXIoKTsKK30KKwogLSAodm9pZClzZXRQ
b3NpdGlvbjooV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiAqKXBvc2l0aW9uCiB7Ci0gICAgaWYgKF9s
YXN0UG9zaXRpb24gIT0gcG9zaXRpb24pIHsKLSAgICAgICAgW19sYXN0UG9zaXRpb24gcmVsZWFz
ZV07Ci0gICAgICAgIF9sYXN0UG9zaXRpb24gPSBbcG9zaXRpb24gcmV0YWluXTsKLSAgICB9Cisg
ICAgX2xhc3RQb3NpdGlvbiA9IHBvc2l0aW9uOwogICAgIAotICAgIFtfZXJyb3IgcmVsZWFzZV07
Ci0gICAgX2Vycm9yID0gMDsKKyAgICBbc2VsZiByZXNldEVycm9yXTsKIAogICAgIGlmICghX3Rp
bWVyKQogICAgICAgICBfdGltZXIgPSBbTlNUaW1lciBzY2hlZHVsZWRUaW1lcldpdGhUaW1lSW50
ZXJ2YWw6MCB0YXJnZXQ6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IodGltZXJGaXJlZCkgdXNlcklu
Zm86MCByZXBlYXRzOk5PXTsKIH0KIAotLSAodm9pZClzZXRFcnJvcjooTlNFcnJvciAqKWVycm9y
CistICh2b2lkKXNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcldpdGhN
ZXNzYWdlOihOU1N0cmluZyAqKWVycm9yTWVzc2FnZQogewotICAgIGlmIChfZXJyb3IgIT0gZXJy
b3IpIHsKLSAgICAgICAgW19lcnJvciByZWxlYXNlXTsKLSAgICAgICAgX2Vycm9yID0gW2Vycm9y
IHJldGFpbl07Ci0gICAgfQotICAgIAotICAgIFtfbGFzdFBvc2l0aW9uIHJlbGVhc2VdOwotICAg
IF9sYXN0UG9zaXRpb24gPSAwOworICAgIF9oYXNFcnJvciA9IFlFUzsKKyAgICBfZXJyb3JNZXNz
YWdlID0gZXJyb3JNZXNzYWdlOworCisgICAgX2xhc3RQb3NpdGlvbi5jbGVhcigpOwogCiAgICAg
aWYgKCFfdGltZXIpCiAgICAgICAgIF90aW1lciA9IFtOU1RpbWVyIHNjaGVkdWxlZFRpbWVyV2l0
aFRpbWVJbnRlcnZhbDowIHRhcmdldDpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcih0aW1lckZpcmVk
KSB1c2VySW5mbzowIHJlcGVhdHM6Tk9dOwpAQCAtODYsNyArODUsNyBAQAogCiAtIChXZWJHZW9s
b2NhdGlvblBvc2l0aW9uICopbGFzdFBvc2l0aW9uCiB7Ci0gICAgcmV0dXJuIF9sYXN0UG9zaXRp
b247CisgICAgcmV0dXJuIF9sYXN0UG9zaXRpb24uZ2V0KCk7CiB9CiAKIC0gKHZvaWQpc3RvcFRp
bWVyCkBAIC0xMDIsMTAgKzEwMSwxMCBAQAogICAgIC8vIEV4cGVjdCB0aGF0IHZpZXdzIHdvbid0
IGJlICh1bilyZWdpc3RlcmVkIHdoaWxlIGl0ZXJhdGluZy4KICAgICBIYXNoU2V0PFdlYlZpZXcq
PiB2aWV3cyA9IF9yZWdpc3RlcmVkVmlld3M7CiAgICAgZm9yIChIYXNoU2V0PFdlYlZpZXcqPjo6
aXRlcmF0b3IgaXRlciA9IHZpZXdzLmJlZ2luKCk7IGl0ZXIgIT0gdmlld3MuZW5kKCk7ICsraXRl
cikgewotICAgICAgICBpZiAoX2Vycm9yKQotICAgICAgICAgICAgWyppdGVyIF9nZW9sb2NhdGlv
bkRpZEZhaWxXaXRoRXJyb3I6X2Vycm9yXTsKKyAgICAgICAgaWYgKF9oYXNFcnJvcikKKyAgICAg
ICAgICAgIFsqaXRlciBfZ2VvbG9jYXRpb25EaWRGYWlsV2l0aE1lc3NhZ2U6X2Vycm9yTWVzc2Fn
ZS5nZXQoKV07CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIFsqaXRlciBfZ2VvbG9jYXRpb25E
aWRDaGFuZ2VQb3NpdGlvbjpfbGFzdFBvc2l0aW9uXTsKKyAgICAgICAgICAgIFsqaXRlciBfZ2Vv
bG9jYXRpb25EaWRDaGFuZ2VQb3NpdGlvbjpfbGFzdFBvc2l0aW9uLmdldCgpXTsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1t
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KaW5kZXggYTIxZWQ4
MGFjMTFiZTYzNzEzMWRmY2Q0NmVmZjY0YzZkNTI5MDNmNS4uNjhjYWZiNmYxNGVjZDdlNzBmOTNk
N2Q1MjY2ZjE5NjI0NzdhZmIwZiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L1Rlc3RSdW5uZXJNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5u
ZXJNYWMubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4
LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwNywgMjAwOCwgMjAwOSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ3OSwxMiArNDc5LDExIEBAIHZvaWQg
VGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBk
b3VibGUgbG9uZ2l0dWRlLCBkCiAgICAgW3Bvc2l0aW9uIHJlbGVhc2VdOwogfQogCi12b2lkIFRl
c3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGludCBjb2RlLCBKU1N0cmluZ1JlZiBt
ZXNzYWdlKQordm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZh
aWxhYmxlRXJyb3IoSlNTdHJpbmdSZWYgbWVzc2FnZSkKIHsKICAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IG1lc3NhZ2VDRihBZG9wdENGLCBKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBtZXNzYWdlKSk7CiAgICAgTlNTdHJpbmcgKm1lc3NhZ2VOUyA9IChOU1N0cmlu
ZyAqKW1lc3NhZ2VDRi5nZXQoKTsKLSAgICBOU0Vycm9yICplcnJvciA9IFtOU0Vycm9yIGVycm9y
V2l0aERvbWFpbjpXZWJLaXRFcnJvckRvbWFpbiBjb2RlOmNvZGUgdXNlckluZm86W05TRGljdGlv
bmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDptZXNzYWdlTlMgZm9yS2V5Ok5TTG9jYWxpemVkRGVz
Y3JpcHRpb25LZXldXTsKLSAgICBbW01vY2tHZW9sb2NhdGlvblByb3ZpZGVyIHNoYXJlZF0gc2V0
RXJyb3I6ZXJyb3JdOworICAgIFtbTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIgc2hhcmVkXSBzZXRN
b2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3JXaXRoTWVzc2FnZTptZXNzYWdl
TlNdOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihib29s
IGFsbG93KQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0
LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5jcHAKaW5kZXggZDM1
MDNiZDFlNzUwOTg3ZTUyMmRiN2Q0YmUzZDhmYWM4YmFjNmMwZi4uOWE5MjAxM2VkZDBlZWE3MzMx
ZmM3ZjAwMTQ5Yzg1MzRjMGFkMDE4OSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
cXQvVGVzdFJ1bm5lclF0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVu
bmVyUXQuY3BwCkBAIC04MzQsMTEgKzgzNCwxMSBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldEdlb2xv
Y2F0aW9uUGVybWlzc2lvbkNvbW1vbihib29sIGFsbG93KQogICAgICBtX2dlb2xvY2F0aW9uUGVy
bWlzc2lvbiA9IGFsbG93OwogfQogCi12b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlv
bkVycm9yKGludCBjb2RlLCBjb25zdCBRU3RyaW5nJiBtZXNzYWdlKQordm9pZCBUZXN0UnVubmVy
OjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoY29uc3QgUVN0cmlu
ZyYgbWVzc2FnZSkKIHsKICAgICBRTGlzdDxXZWJDb3JlOjpXZWJQYWdlKj4gcGFnZXMgPSBtX2Ry
dC0+Z2V0QWxsUGFnZXMoKTsKICAgICBmb3JlYWNoIChXZWJDb3JlOjpXZWJQYWdlKiBwYWdlLCBw
YWdlcykKLSAgICAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldE1vY2tHZW9sb2NhdGlv
bkVycm9yKHBhZ2UsIGNvZGUsIG1lc3NhZ2UpOworICAgICAgICBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdDo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKHBhZ2UsIG1l
c3NhZ2UpOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9u
KGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KQpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmggYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuaAppbmRleCA4OGE5YzZhOTQ0ZTY0ZTM4NTg1
NDYwNjQ4YmQ4MjY3OGE5MzU2YzJmLi4zMTFiY2Q5ZGU1Y2Q3ZjJhOWQ2ZjIyZTg5Y2E5MDA1ZWQ0
NjFmNzIzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQu
aAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuaApAQCAtMSw2ICsx
LDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29y
IGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxl
IEluYy4gaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yMjQsNyArMjI1LDcgQEAgcHVibGljIFFfU0xPVFM6CiAKICAgICB2b2lkIHNl
dE1vY2tEZXZpY2VPcmllbnRhdGlvbihib29sIGNhblByb3ZpZGVBbHBoYSwgZG91YmxlIGFscGhh
LCBib29sIGNhblByb3ZpZGVCZXRhLCBkb3VibGUgYmV0YSwgYm9vbCBjYW5Qcm92aWRlR2FtbWEs
IGRvdWJsZSBnYW1tYSk7CiAKLSAgICB2b2lkIHNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGludCBj
b2RlLCBjb25zdCBRU3RyaW5nJiBtZXNzYWdlKTsKKyAgICB2b2lkIHNldE1vY2tHZW9sb2NhdGlv
blBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihjb25zdCBRU3RyaW5nJiBtZXNzYWdlKTsKICAgICB2
b2lkIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxv
bmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KTsKICAgICB2b2lkIHNldEdlb2xvY2F0aW9uUGVybWlz
c2lvbihib29sIGFsbG93KTsKICAgICBpbnQgbnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdHMoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9U
ZXN0UnVubmVyV2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2lu
LmNwcAppbmRleCBkMzM2NTFiN2FmNmU0NWMyYjllNTYxYjRhNzE3MWI0NmM5ZTYzN2YxLi5jNDQw
MGZkY2IxZWJiZWY0Zjc3YmM4MDQwY2UxNmEyYjYzZWYzNzQwIDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIw
MTAsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC00MjAsNyArNDIwLDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRN
b2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUs
IGQKICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4
MjY0LgogfQogCi12b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGludCBj
b2RlLCBKU1N0cmluZ1JlZiBtZXNzYWdlKQordm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9j
YXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoSlNTdHJpbmdSZWYgbWVzc2FnZSkKIHsKICAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBHZW9sb2NhdGlvbiBsYXlvdXQgdGVzdHMuCiAgICAg
Ly8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODI2NC4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L1Rlc3RSdW5uZXJXeC5jcHAgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS93eC9UZXN0UnVubmVyV3guY3BwCmluZGV4IGQ3YTUyNTJjNDA0YmYy
MTlkZjdlYTFmYTU3Y2IzZDllMWRkZDMzODMuLmU3ODBjZmU1MmIzYjAxNjk0ZTYyYzc3YjM4ZGY5
ZDBlMGIxMDliYWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L1Rlc3RSdW5u
ZXJXeC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvVGVzdFJ1bm5lcld4LmNwcApA
QCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggS2V2aW4gT2xsaXZpZXIg
PGtldmlub0B0aGVvbGxpdmllcnMuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzM4LDcgKzMzOSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9z
aXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkCiAgICAgLy8gU2VlIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODI2NC4KIH0KIAotdm9pZCBU
ZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihpbnQgY29kZSwgSlNTdHJpbmdSZWYg
bWVzc2FnZSkKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2
YWlsYWJsZUVycm9yKEpTU3RyaW5nUmVmKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9y
IEdlb2xvY2F0aW9uIGxheW91dCB0ZXN0cy4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MjY0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGVmYjNhMGVjMzk4YTgwMTEzODQ3
MTVkZTEyNGMzYjhlN2RmMDYxMzMuLmQ4M2YzNmVhOTU2YzdjZTA4ODUwYTU5YjdjYWVhZDJiOTQz
NDgzMGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMi0wOS0yMSAgQmVuamFtaW4gUG91bGFp
biAgPGJlbmphbWluQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRml4IEdlb2xvY2F0aW9uIGVycm9y
IHJlcG9ydGluZyBpbiB0aGUgdGVzdCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzM4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2YgdGhlIGNoYW5n
ZSBzdWNoIGFzIGFwcHJvYWNoLCByYXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1bmN0aW9uIGRl
c2NyaXB0aW9ucyBiZWxvdyAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRp
b24vZXJyb3ItY2xlYXItd2F0Y2guaHRtbDoKKyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlv
bi9lcnJvci1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vbWF4
aW11bS1hZ2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9uL3Jl
ZW50cmFudC1lcnJvci1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRp
b24vc2NyaXB0LXRlc3RzL2Vycm9yLmpzOgorICAgICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9u
L3NjcmlwdC10ZXN0cy9tYXhpbXVtLWFnZS5qczoKKyAgICAgICAgKGNoZWNrRXJyb3IpOgorICAg
ICAgICAodGVzdE5vblplcm9NYXhpbXVtQWdlKToKKyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2Nh
dGlvbi9zY3JpcHQtdGVzdHMvcGVybWlzc2lvbi1kZW5pZWQtYWxyZWFkeS1lcnJvci5qczoKKyAg
ICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcmVlbnRyYW50LWVycm9y
LmpzOgorICAgICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy93YXRjaC5q
czoKKyAgICAgICAgKGNoZWNrRXJyb3IpOgorICAgICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9u
L3dhdGNoLWV4cGVjdGVkLnR4dDoKKwogMjAxMi0wOS0yMSAgQmVuamFtaW4gUG91bGFpbiAgPGJw
b3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBmYXN0L2RvbS9HZW9sb2NhdGlvbi9kaXNjb25u
ZWN0ZWQtZnJhbWUuaHRtbCB0ZXN0IGFzc2VydHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL0dlb2xvY2F0aW9uL2Vycm9yLWNsZWFyLXdhdGNoLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9HZW9sb2NhdGlvbi9lcnJvci1jbGVhci13YXRjaC5odG1sCmluZGV4IDMyMjA2ZGYz
ZmMzOTA3NjI3ZjQxNWRhNjEyZWNkN2Q0NzBiZThmMTUuLjZjNjE5NzgzZWI5Yzc4NGU0YWJhYzI5
NzExMmI1ZDdjODAxOWNhNjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xv
Y2F0aW9uL2Vycm9yLWNsZWFyLXdhdGNoLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
R2VvbG9jYXRpb24vZXJyb3ItY2xlYXItd2F0Y2guaHRtbApAQCAtNywxMiArNywxMSBAQAogPHNj
cmlwdD4KIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHJlbW92aW5nIHRoZSB3YXRjaGVyIGZyb20g
YW4gZXJyb3IgY2FsbGJhY2sgZG9lcyBub3QgY2F1c2VzIGFzc2VydGlvbnMuIik7CiAKLXZhciBt
b2NrQ29kZSA9IDI7CiB2YXIgbW9ja01lc3NhZ2UgPSAiZGVidWciOwogCiBpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKICAgICB0ZXN0UnVubmVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbih0cnVl
KTsKLSAgICB0ZXN0UnVubmVyLnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKG1vY2tDb2RlLCBtb2Nr
TWVzc2FnZSk7CisgICAgdGVzdFJ1bm5lci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZh
aWxhYmxlRXJyb3IobW9ja01lc3NhZ2UpOwogfSBlbHNlCiAgICAgZGVidWcoJ1RoaXMgdGVzdCBj
YW4gbm90IGJlIHJ1biB3aXRob3V0IHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlcicpOwogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9lcnJvci1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9lcnJvci1leHBlY3RlZC50eHQK
aW5kZXggOTU4MjA1OTVmZGJiNDc2ZjcwOWQxYjc5Y2ZlZDM1MmVjYjMwZjIyZC4uMTMzZTM5YTMy
YWVkYjNlZmRhMjI0OWJiODMwZWUwNTJlZDkzNTllYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vR2VvbG9jYXRpb24vZXJyb3ItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2Vycm9yLWV4cGVjdGVkLnR4dApAQCAtMyw3ICszLDcgQEAg
VGVzdHMgR2VvbG9jYXRpb24gZXJyb3IgY2FsbGJhY2sgdXNpbmcgdGhlIG1vY2sgc2VydmljZS4K
IE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIGVycm9yLmNvZGUgaXMgbW9ja0Nv
ZGUKK1BBU1MgZXJyb3IuY29kZSBpcyBlcnJvci5QT1NJVElPTl9VTkFWQUlMQUJMRQogUEFTUyBl
cnJvci5tZXNzYWdlIGlzIG1vY2tNZXNzYWdlCiBQQVNTIGVycm9yLlVOS05PV05fRVJST1IgaXMg
dW5kZWZpbmVkCiBQQVNTIGVycm9yLlBFUk1JU1NJT05fREVOSUVEIGlzIDEKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL21heGltdW0tYWdlLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL21heGltdW0tYWdlLWV4cGVjdGVk
LnR4dAppbmRleCAzNDRiZDQ1YjgyMTRkNGJlZDZhOWY5MDNmMzIyYjE3YmQwMzA2YTg5Li4zODg5
NDY2OTdiMzg1OTE3NGM0ZTJmZTNjYWM1MDQxOGYxY2VhNTM1IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9tYXhpbXVtLWFnZS1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vbWF4aW11bS1hZ2UtZXhwZWN0ZWQudHh0
CkBAIC0xNiw3ICsxNiw3IEBAIFBBU1MgcG9zaXRpb24uY29vcmRzLmxhdGl0dWRlIGlzIG1vY2tM
YXRpdHVkZQogUEFTUyBwb3NpdGlvbi5jb29yZHMubG9uZ2l0dWRlIGlzIG1vY2tMb25naXR1ZGUK
IFBBU1MgcG9zaXRpb24uY29vcmRzLmFjY3VyYWN5IGlzIG1vY2tBY2N1cmFjeQogCi1QQVNTIGVy
cm9yLmNvZGUgaXMgbW9ja0NvZGUKK1BBU1MgZXJyb3IuY29kZSBpcyBlcnJvci5QT1NJVElPTl9V
TkFWQUlMQUJMRQogUEFTUyBlcnJvci5tZXNzYWdlIGlzIG1vY2tNZXNzYWdlCiBQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L0dlb2xvY2F0aW9uL3JlZW50cmFudC1lcnJvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9HZW9sb2NhdGlvbi9yZWVudHJhbnQtZXJyb3ItZXhwZWN0ZWQudHh0CmluZGV4IDk5
M2JlYWMyMTdlNjcwOTk4ZDgyMGQxNWNlMjg3OTRkNGFkNDA0ZmUuLjRjNGViMWYwYmI5OGI1Njdk
MmJmMjE4ZmY5NzMzZjFmODM1MTdlNzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L0dlb2xvY2F0aW9uL3JlZW50cmFudC1lcnJvci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vR2VvbG9jYXRpb24vcmVlbnRyYW50LWVycm9yLWV4cGVjdGVkLnR4dApAQCAt
MywxMCArMywxMCBAQCBUZXN0cyB0aGF0IHJlZW50cmFudCBjYWxscyB0byBHZW9sb2NhdGlvbiBt
ZXRob2RzIGZyb20gdGhlIGVycm9yIGNhbGxiYWNrIGFyZSBPSwogT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgogCiAKLVBBU1MgZXJyb3IuY29kZSBpcyBtb2NrQ29kZQorUEFTUyBlcnJvci5jb2Rl
IGlzIGVycm9yLlBPU0lUSU9OX1VOQVZBSUxBQkxFCiBQQVNTIGVycm9yLm1lc3NhZ2UgaXMgbW9j
a01lc3NhZ2UKIAotUEFTUyBlcnJvci5jb2RlIGlzIG1vY2tDb2RlCitQQVNTIGVycm9yLmNvZGUg
aXMgZXJyb3IuUE9TSVRJT05fVU5BVkFJTEFCTEUKIFBBU1MgZXJyb3IubWVzc2FnZSBpcyBtb2Nr
TWVzc2FnZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvZXJyb3IuanMgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvZXJyb3IuanMKaW5k
ZXggMmQxM2YzZjQ2YzgzMDEwNzZjOGRjYmI5ZDE5ODkxMGY3N2ZjYzgxYi4uOGU0NGJjNmY3MWVm
ZDhlYjc3M2U5ZTc5NTc1NDdkMGQzZjcxZTgwOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL2Vycm9yLmpzCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9lcnJvci5qcwpAQCAtMSwxMSArMSwx
MCBAQAogZGVzY3JpcHRpb24oIlRlc3RzIEdlb2xvY2F0aW9uIGVycm9yIGNhbGxiYWNrIHVzaW5n
IHRoZSBtb2NrIHNlcnZpY2UuIik7CiAKLXZhciBtb2NrQ29kZSA9IDI7CiB2YXIgbW9ja01lc3Nh
Z2UgPSAiZGVidWciOwogCiBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICB0ZXN0UnVubmVy
LnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbih0cnVlKTsKLSAgICB0ZXN0UnVubmVyLnNldE1vY2tH
ZW9sb2NhdGlvbkVycm9yKG1vY2tDb2RlLCBtb2NrTWVzc2FnZSk7CisgICAgdGVzdFJ1bm5lci5z
ZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IobW9ja01lc3NhZ2UpOwog
fSBlbHNlCiAgICAgZGVidWcoJ1RoaXMgdGVzdCBjYW4gbm90IGJlIHJ1biB3aXRob3V0IHRoZSB0
ZXN0UnVubmVyJyk7CiAKQEAgLTE1LDcgKzE0LDcgQEAgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdl
dEN1cnJlbnRQb3NpdGlvbihmdW5jdGlvbihwKSB7CiAgICAgZmluaXNoSlNUZXN0KCk7CiB9LCBm
dW5jdGlvbihlKSB7CiAgICAgZXJyb3IgPSBlOwotICAgIHNob3VsZEJlKCdlcnJvci5jb2RlJywg
J21vY2tDb2RlJyk7CisgICAgc2hvdWxkQmUoJ2Vycm9yLmNvZGUnLCAnZXJyb3IuUE9TSVRJT05f
VU5BVkFJTEFCTEUnKTsKICAgICBzaG91bGRCZSgnZXJyb3IubWVzc2FnZScsICdtb2NrTWVzc2Fn
ZScpOwogICAgIHNob3VsZEJlKCdlcnJvci5VTktOT1dOX0VSUk9SJywgJ3VuZGVmaW5lZCcpOwog
ICAgIHNob3VsZEJlKCdlcnJvci5QRVJNSVNTSU9OX0RFTklFRCcsICcxJyk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvbWF4aW11bS1h
Z2UuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvbWF4
aW11bS1hZ2UuanMKaW5kZXggNmM4Zjg2MDA5ZmI4NDY1MzExZDBhZDllOWU4NGZhNTczMWE1ZDE2
ZC4uNDc1OTZjYTQ2NDZjYzM2OTdhZjI4OTg5ODVkNjUzNDQ0YTYyY2IyMiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL21heGltdW0tYWdl
LmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9t
YXhpbXVtLWFnZS5qcwpAQCAtNCw3ICs0LDYgQEAgdmFyIG1vY2tMYXRpdHVkZSA9IDUxLjQ3ODsK
IHZhciBtb2NrTG9uZ2l0dWRlID0gLTAuMTY2OwogdmFyIG1vY2tBY2N1cmFjeSA9IDEwMC4wOwog
Ci12YXIgbW9ja0NvZGUgPSAyOwogdmFyIG1vY2tNZXNzYWdlID0gJ3Rlc3QnOwogCiB2YXIgcG9z
aXRpb247CkBAIC0yMSw3ICsyMCw3IEBAIGZ1bmN0aW9uIGNoZWNrUG9zaXRpb24ocCkgewogZnVu
Y3Rpb24gY2hlY2tFcnJvcihlKSB7CiAgICAgZGVidWcoJycpOwogICAgIGVycm9yID0gZTsKLSAg
ICBzaG91bGRCZSgnZXJyb3IuY29kZScsICdtb2NrQ29kZScpOworICAgIHNob3VsZEJlKCdlcnJv
ci5jb2RlJywgJ2Vycm9yLlBPU0lUSU9OX1VOQVZBSUxBQkxFJyk7CiAgICAgc2hvdWxkQmUoJ2Vy
cm9yLm1lc3NhZ2UnLCAnbW9ja01lc3NhZ2UnKTsKIH0KIApAQCAtNTcsNyArNTYsNyBAQCBmdW5j
dGlvbiB0ZXN0WmVyb01heGltdW1BZ2UoKSB7CiBmdW5jdGlvbiB0ZXN0Tm9uWmVyb01heGltdW1B
Z2UoKSB7CiAgICAgLy8gVXBkYXRlIHRoZSBtb2NrIHNlcnZpY2UgdG8gcmVwb3J0IGFuIGVycm9y
LgogICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRNb2Nr
R2VvbG9jYXRpb25FcnJvcihtb2NrQ29kZSwgbW9ja01lc3NhZ2UpOworICAgICAgICB0ZXN0UnVu
bmVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihtb2NrTWVzc2Fn
ZSk7CiAgICAgLy8gVGhlIG1heGltdW1BZ2UgaXMgbm9uLXplcm8sIHNvIHdlIGV4cGVjdCB0aGUg
Y2FjaGVkIHBvc2l0aW9uLCBub3QgdGhlIGVycm9yIGZyb20gdGhlIHNlcnZpY2UuCiAgICAgbmF2
aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihmdW5jdGlvbihwKSB7CiAgICAg
ICAgIGNoZWNrUG9zaXRpb24ocCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9H
ZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcGVybWlzc2lvbi1kZW5pZWQtYWxyZWFkeS1lcnJvci5q
cyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9wZXJtaXNz
aW9uLWRlbmllZC1hbHJlYWR5LWVycm9yLmpzCmluZGV4IGI1ZTNkOGYyYzhhMzI4ZDI3MzliNDg1
YzhjZGE0ZDM4N2IzMjY4MzguLjQ4YjVjZjgxYzU0OThhM2QzNGYxNDE3MjQ2NzkxZGY3YzhjN2Mx
NGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10
ZXN0cy9wZXJtaXNzaW9uLWRlbmllZC1hbHJlYWR5LWVycm9yLmpzCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9wZXJtaXNzaW9uLWRlbmllZC1hbHJl
YWR5LWVycm9yLmpzCkBAIC0yMyw3ICsyMyw3IEBAIGZ1bmN0aW9uIGNvbnRpbnVlVGVzdCgpCiB7
CiAgICAgLy8gTWFrZSBhbm90aGVyIHJlcXVlc3QsIHdpdGggcGVybWlzc2lvbiBhbHJlYWR5IGRl
bmllZC4KICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIuc2V0
TW9ja0dlb2xvY2F0aW9uRXJyb3IoMiwgJ3Rlc3QnKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRN
b2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoJ3Rlc3QnKTsKIAogICAgIG5h
dmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZnVuY3Rpb24ocCkgewogICAg
ICAgICB0ZXN0RmFpbGVkKCdTdWNjZXNzIGNhbGxiYWNrIGludm9rZWQgdW5leHBlY3RlZGx5Jyk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVz
dHMvcmVlbnRyYW50LWVycm9yLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24v
c2NyaXB0LXRlc3RzL3JlZW50cmFudC1lcnJvci5qcwppbmRleCA1NDM5ZTI5MjJjNGM5ODhlZDIx
YThiYzczMTgzM2YwYzJiNzE0OTliLi41YTZjMDlkMWJhODI4NmIwYWI0MWE3Y2JiNjcwZDc5YWIx
YjczZWU1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3Jp
cHQtdGVzdHMvcmVlbnRyYW50LWVycm9yLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dl
b2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9yZWVudHJhbnQtZXJyb3IuanMKQEAgLTEsMTEgKzEsMTAg
QEAKIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHJlZW50cmFudCBjYWxscyB0byBHZW9sb2NhdGlv
biBtZXRob2RzIGZyb20gdGhlIGVycm9yIGNhbGxiYWNrIGFyZSBPSy4iKTsKIAotdmFyIG1vY2tD
b2RlID0gMjsKIHZhciBtb2NrTWVzc2FnZSA9ICd0ZXN0JzsKIAogaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CiAgICAgdGVzdFJ1bm5lci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24odHJ1ZSk7Ci0g
ICAgdGVzdFJ1bm5lci5zZXRNb2NrR2VvbG9jYXRpb25FcnJvcihtb2NrQ29kZSwgbW9ja01lc3Nh
Z2UpOworICAgIHRlc3RSdW5uZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJs
ZUVycm9yKG1vY2tNZXNzYWdlKTsKIH0gZWxzZQogICAgIGRlYnVnKCdUaGlzIHRlc3QgY2FuIG5v
dCBiZSBydW4gd2l0aG91dCB0aGUgdGVzdFJ1bm5lcicpOwogCkBAIC0yMiw3ICsyMSw3IEBAIG5h
dmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZnVuY3Rpb24ocCkgewogICAg
IGVycm9yQ2FsbGJhY2tJbnZva2VkID0gdHJ1ZTsKIAogICAgIGVycm9yID0gZTsKLSAgICBzaG91
bGRCZSgnZXJyb3IuY29kZScsICdtb2NrQ29kZScpOworICAgIHNob3VsZEJlKCdlcnJvci5jb2Rl
JywgJ2Vycm9yLlBPU0lUSU9OX1VOQVZBSUxBQkxFJyk7CiAgICAgc2hvdWxkQmUoJ2Vycm9yLm1l
c3NhZ2UnLCAnbW9ja01lc3NhZ2UnKTsKICAgICBkZWJ1ZygnJyk7CiAgICAgY29udGludWVUZXN0
KCk7CkBAIC0zMiwxNCArMzEsMTQgQEAgZnVuY3Rpb24gY29udGludWVUZXN0KCkgewogICAgIG1v
Y2tNZXNzYWdlICs9ICcgcmVwZWF0JzsKIAogICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAg
ICAgICAgdGVzdFJ1bm5lci5zZXRNb2NrR2VvbG9jYXRpb25FcnJvcihtb2NrQ29kZSwgbW9ja01l
c3NhZ2UpOworICAgICAgICB0ZXN0UnVubmVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5h
dmFpbGFibGVFcnJvcihtb2NrTWVzc2FnZSk7CiAKICAgICBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24u
Z2V0Q3VycmVudFBvc2l0aW9uKGZ1bmN0aW9uKHApIHsKICAgICAgICAgdGVzdEZhaWxlZCgnU3Vj
Y2VzcyBjYWxsYmFjayBpbnZva2VkIHVuZXhwZWN0ZWRseScpOwogICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKICAgICB9LCBmdW5jdGlvbihlKSB7CiAgICAgICAgIGVycm9yID0gZTsKLSAgICAgICAg
c2hvdWxkQmUoJ2Vycm9yLmNvZGUnLCAnbW9ja0NvZGUnKTsKKyAgICAgICAgc2hvdWxkQmUoJ2Vy
cm9yLmNvZGUnLCAnZXJyb3IuUE9TSVRJT05fVU5BVkFJTEFCTEUnKTsKICAgICAgICAgc2hvdWxk
QmUoJ2Vycm9yLm1lc3NhZ2UnLCAnbW9ja01lc3NhZ2UnKTsKICAgICAgICAgZmluaXNoSlNUZXN0
KCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlv
bi9zY3JpcHQtdGVzdHMvd2F0Y2guanMgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlv
bi9zY3JpcHQtdGVzdHMvd2F0Y2guanMKaW5kZXggNmYxZmUwY2RmMjQwYzQ4MjE5ZWViMThkMzZm
YmM2MGRjODFjODlhMi4uMGVhMWNhZjQ4ZDk4YjQ3ZmI5YTMzNGUzOTQzMWVlNzhhYmVkODQ2MiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3Rz
L3dhdGNoLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10
ZXN0cy93YXRjaC5qcwpAQCAtNCw3ICs0LDYgQEAgdmFyIG1vY2tMYXRpdHVkZSA9IDUxLjQ3ODsK
IHZhciBtb2NrTG9uZ2l0dWRlID0gLTAuMTY2OwogdmFyIG1vY2tBY2N1cmFjeSA9IDEwMC4wOwog
Ci12YXIgbW9ja0NvZGUgPSAyOwogdmFyIG1vY2tNZXNzYWdlID0gJ3Rlc3QnOwogCiB2YXIgcG9z
aXRpb247CkBAIC0yMCw3ICsxOSw3IEBAIGZ1bmN0aW9uIGNoZWNrUG9zaXRpb24ocCkgewogCiBm
dW5jdGlvbiBjaGVja0Vycm9yKGUpIHsKICAgICBlcnJvciA9IGU7Ci0gICAgc2hvdWxkQmUoJ2Vy
cm9yLmNvZGUnLCAnbW9ja0NvZGUnKTsKKyAgICBzaG91bGRCZSgnZXJyb3IuY29kZScsICdlcnJv
ci5QT1NJVElPTl9VTkFWQUlMQUJMRScpOwogICAgIHNob3VsZEJlKCdlcnJvci5tZXNzYWdlJywg
J21vY2tNZXNzYWdlJyk7CiAgICAgZGVidWcoJycpOwogfQpAQCAtNDIsNyArNDEsNyBAQCBuYXZp
Z2F0b3IuZ2VvbG9jYXRpb24ud2F0Y2hQb3NpdGlvbihmdW5jdGlvbihwKSB7CiAgICAgICAgIGNh
c2UgMToKICAgICAgICAgICAgIGNoZWNrUG9zaXRpb24ocCk7CiAgICAgICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRNb2NrR2VvbG9j
YXRpb25FcnJvcihtb2NrQ29kZSwgbW9ja01lc3NhZ2UpOworICAgICAgICAgICAgICAgIHRlc3RS
dW5uZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKG1vY2tNZXNz
YWdlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICBj
aGVja1Bvc2l0aW9uKHApOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9j
YXRpb24vd2F0Y2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRp
b24vd2F0Y2gtZXhwZWN0ZWQudHh0CmluZGV4IGEwNDM0NTU2ZjJiZjA1NWE5M2RjNzM1YjNiYTNh
ZTY4OGQ1ZTE3ZjguLjRjNzVmMDhlNTM3M2VkY2I5ZTVhMTAyMzBmNjY3NzBkYTY4NjYzNTIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3dhdGNoLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi93YXRjaC1leHBlY3Rl
ZC50eHQKQEAgLTExLDcgKzExLDcgQEAgUEFTUyBwb3NpdGlvbi5jb29yZHMubGF0aXR1ZGUgaXMg
bW9ja0xhdGl0dWRlCiBQQVNTIHBvc2l0aW9uLmNvb3Jkcy5sb25naXR1ZGUgaXMgbW9ja0xvbmdp
dHVkZQogUEFTUyBwb3NpdGlvbi5jb29yZHMuYWNjdXJhY3kgaXMgbW9ja0FjY3VyYWN5CiAKLVBB
U1MgZXJyb3IuY29kZSBpcyBtb2NrQ29kZQorUEFTUyBlcnJvci5jb2RlIGlzIGVycm9yLlBPU0lU
SU9OX1VOQVZBSUxBQkxFCiBQQVNTIGVycm9yLm1lc3NhZ2UgaXMgbW9ja01lc3NhZ2UKIAogUEFT
UyBwb3NpdGlvbi5jb29yZHMubGF0aXR1ZGUgaXMgbW9ja0xhdGl0dWRlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165249</attachid>
            <date>2012-09-21 23:49:04 -0700</date>
            <delta_ts>2012-09-21 23:59:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97386-20120921234827.patch</filename>
            <type>text/plain</type>
            <size>65458</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5Mjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzE3ZDU1MjQ4MjEwOWI0
ZWJhM2ZhZTdiNGRkZjk0MWM2MTFkYWM0ZS4uMDc4ZWY2YmJmMmRkYWViZmM4MTQwOGI2YWM0ODQw
YzYzYWQ4MWY5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTA5LTIxICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCBHZW9sb2Nh
dGlvbiBlcnJvciByZXBvcnRpbmcgaW4gdGhlIHRlc3Qgc3VwcG9ydAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTczODYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHZW9sb2NhdGlvbkNvbnRyb2xsZXIgY3Vy
cmVudGx5IGV4cG9zZSBHZW9sb2NhdGlvbkVycm9yIHdoaWNoIGNhbiBiZSBlaXRoZXIKKyAgICAg
ICAgUGVybWlzc2lvbkRlbmllZCBvciBQb3NpdGlvblVuYXZhaWxhYmxlLgorCisgICAgICAgIElu
IHByYWN0aWNlLCBvbmx5IFBvc2l0aW9uVW5hdmFpbGFibGUgaXMgc3VwcG9ydGVkIGFuZCB0ZXN0
ZWQsIG9ubHkgQ2hyb21lCisgICAgICAgIHNvbWV3aGF0IGV4cG9zZSBQZXJtaXNzaW9uRGVuaWVk
LgorICAgICAgICBUaGUgY29ycmVjdCB3YXkgdG8gZGVueSB0aGUgcGVybWlzc2lvbiBpcyB0aHJv
dWdoIEdlb2xvY2F0aW9uOjpzZXRJc0FsbG93ZWQoKS4KKworICAgICAgICBUaGlzIHBhdGNoIGRv
ZXMgc29tZSBvZiB0aGUgaW5pdGlhbCBjbGVhbnVwIHRvd2FyZCB0aGF0IGdvYWwsIHJlZHVjaW5n
IGhvdworICAgICAgICBmYXIgR2VvbG9jYXRpb25FcnJvciBpcyBzcHJlYWQuCisKKyAgICAgICAg
KiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgIE1hYyBkb2VzIG5vdCB1c2UgR2VvbG9jYXRpb25DbGllbnRNb2NrLCBp
dCBzaG91bGQgbm90IGJlIGNvbXBpbGVkIGluIFdlYkNvcmUuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW9s
b2NhdGlvbkNsaWVudE1vY2s6Okdlb2xvY2F0aW9uQ2xpZW50TW9jayk6CisgICAgICAgIChXZWJD
b3JlOjpHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnNldFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6Okdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2
YWlsYWJsZUVycm9yKToKKyAgICAgICAgVGhpcyBtZXRob2QgcmVwbGFjZSBzZXRFcnJvcigpLiBJ
dCBpcyBsaW1pdGVkIHRvIFBvc2l0aW9uVW5hdmFpbGFibGUgZXJyb3JzLgorCisgICAgICAgIChX
ZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6
Okdlb2xvY2F0aW9uQ2xpZW50TW9jazo6Y29udHJvbGxlclRpbWVyRmlyZWQpOgorICAgICAgICAo
V2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnRNb2NrOjpjbGVhckVycm9yKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oOgorICAgICAgICAoR2VvbG9jYXRp
b25DbGllbnRNb2NrKToKKwogMjAxMi0wOS0yMSAgQ2hyaXMgUm9nZXJzICA8Y3JvZ2Vyc0Bnb29n
bGUuY29tPgogCiAgICAgICAgIEJpcXVhZEZpbHRlck5vZGUgbXVzdCB0YWtlIGF1ZGlvLXJhdGUg
cGFyYW1ldGVyIGNoYW5nZXMgaW50byBhY2NvdW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxv
ZwppbmRleCBlZDU2ODc4NDM5YjI5YzFmNDgwYWFhNmZhOWFhN2ZjMTA0NTc2OWMzLi5mMjU1NTMw
Njg3OTYyYTY4Nzg3YjhjZTE2Y2QwZDExYjc4N2Y5MTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wOS0yMSAgQmVuamFtaW4gUG91bGFpbiAg
PGJwb3VsYWluQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggR2VvbG9jYXRpb24gZXJyb3IgcmVw
b3J0aW5nIGluIHRoZSB0ZXN0IHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk3Mzg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1
Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxlYXNlIGFkZCBwZXItZnVuY3Rpb24gZGVzY3Jp
cHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnQ6OnNldE1v
Y2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcik6CisgICAgICAgICogV2ViS2l0
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuaDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVl
U3VwcG9ydCk6CisKIDIwMTItMDktMjEgIExpYW5naHVpIENoZW4gIDxsaWFjaGVuQHJpbS5jb20+
CiAKICAgICAgICAgW0JsYWNrQmVycnldIFJlYWxseSBmaXggYnVnIDk1NDg4IHRoYXQgdXNlciBj
YW4gZ2V0IHRoZSBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2UgZGlhbG9nIHdoaWxlIHRoZSBvdGhl
ciB0YWIgaGFzIGZvY3VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA3NzFmMTQ3ZGZj
YzI1NzY1ZTRhOGY4ZDlhNWVlNzE5OWQzZjBiMGI1Li43ZDgwNDM0MTM3YjY5Mzk4NDM4NjhmMmI5
MTg5OTc5N2U3N2VjNmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3
IEBACisyMDEyLTA5LTIxICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgor
CisgICAgICAgIEZpeCBHZW9sb2NhdGlvbiBlcnJvciByZXBvcnRpbmcgaW4gdGhlIHRlc3Qgc3Vw
cG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTcz
ODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRp
dGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0aW9u
YWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4K
KworICAgICAgICAqIHB1YmxpYy9XZWJHZW9sb2NhdGlvbkNsaWVudE1vY2suaDoKKyAgICAgICAg
KFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9jayk6CisgICAgICAgICogc3JjL1dlYkdlb2xvY2F0aW9u
Q2xpZW50TW9jay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9j
azo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKToKKwogMjAxMi0w
OS0yMSAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
W0Nocm9taXVtXSBVc2UgT3BlblR5cGVWZXJ0aWNhbERhdGEgb24gTGludXgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZwppbmRleCBjMWFmYTUzZWRjOWI1MGI1MjFmOWQzMGRhMjdhZmFiZjg5NDRhNjJmLi5kZjFjZGZj
ZDBlNTJjMzkyN2JiMjNiZjI2MTEzYzNkM2Y2OTgwZmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTcgQEAKKzIwMTItMDktMjEgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgRml4IEdlb2xvY2F0aW9uIGVycm9yIHJlcG9ydGluZyBpbiB0aGUg
dGVzdCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05NzM4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2YgdGhlIGNoYW5nZSBzdWNoIGFzIGFwcHJvYWNo
LCByYXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1bmN0aW9uIGRlc2NyaXB0aW9ucyBiZWxvdyAo
T09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
R3RrLmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0TW9ja0dlb2xv
Y2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3Vw
cG9ydEd0ayk6CisKIDIwMTItMDktMTkgIERhbmlsbyBDZXNhciBMZW1lcyBkZSBQYXVsYSAgPGRh
bmlsby5jZXNhckBjb2xsYWJvcmEuY28udWs+CiAKICAgICAgICAgW2d0a10gYWRkIGVuYWJsZS1t
ZWRpYS1zdHJlYW0gdG8gd2Vic2V0dGluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAxYTFmYzE1OTE2
MTg4ODRlYjUyOWFjOTExNDlhOTc5NDhmOTkwYjQ1Li41NmYzODJiYTRiYjc0NTAyZWU1NWYzMGNh
NGQwNmI3MDM4Mzg0OGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTIt
MDktMjEgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
Rml4IEdlb2xvY2F0aW9uIGVycm9yIHJlcG9ydGluZyBpbiB0aGUgdGVzdCBzdXBwb3J0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzM4NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGl0aW9uYWwgaW5m
b3JtYXRpb24gb2YgdGhlIGNoYW5nZSBzdWNoIGFzIGFwcHJvYWNoLCByYXRpb25hbGUuIFBsZWFz
ZSBhZGQgcGVyLWZ1bmN0aW9uIGRlc2NyaXB0aW9ucyBiZWxvdyAoT09QUyEpLgorCisgICAgICAg
ICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9nZW9sb2NhdGlvbkRp
ZEZhaWxXaXRoTWVzc2FnZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdQcml2YXRlLmg6
CisKIDIwMTItMDktMjEgIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xlLmNvbT4KIAogICAg
ICAgICBBZGQgV2ViIEF1ZGlvIHN1cHBvcnQgZm9yIGRlcHJlY2F0ZWQvbGVnYWN5IEFQSXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9D
aGFuZ2VMb2cKaW5kZXggNWFhNjJmMTc5MTQwMGU3MjdjZjhhYjA0MGZhMDA3OWRiODI4YmUzZi4u
ZjA4Njk2YjY1MzBmYTE4NDc2ZTRlOTJkZmJjYzkyODlmYWM2OTk0NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNiBAQAorMjAxMi0wOS0yMSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWlu
QGFwcGxlLmNvbT4KKworICAgICAgICBGaXggR2VvbG9jYXRpb24gZXJyb3IgcmVwb3J0aW5nIGlu
IHRoZSB0ZXN0IHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk3Mzg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBw
cm9hY2gsIHJhdGlvbmFsZS4gUGxlYXNlIGFkZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJl
bG93IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0TW9ja0dl
b2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oOgorCiAyMDEyLTA5LTIwICBDc2FiYSBPc3p0
cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBFbmFibGUgQ1NTIHJl
Z2lvbnMgYnkgZGVmYXVsdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBkZmY4MzBkNTAzODQ5MmZk
MmRlNDEwY2YyNWY4MzI5MzcyMjAxMDM4Li44MTUzMDM5Zjk1Yzk5ZGM3ZDgyMDMyYzlkNmVhYzZl
NmMzMTAyMGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMjE5MSw3ICsyMTkxLDYgQEAgX19a
TjdXZWJDb3JlMTFHZW9sb2NhdGlvbjEyc2V0SXNBbGxvd2VkRWIKIF9fWk43V2ViQ29yZTExR2Vv
bG9jYXRpb25EMUV2CiBfX1pOSzdXZWJDb3JlMTFHZW9sb2NhdGlvbjVmcmFtZUV2CiBfX1pON1dl
YkNvcmUyMHByb3ZpZGVHZW9sb2NhdGlvblRvRVBOU180UGFnZUVQTlNfMTdHZW9sb2NhdGlvbkNs
aWVudEUKLV9fWk43V2ViQ29yZTIxR2VvbG9jYXRpb25DbGllbnRNb2NrMTNzZXRQZXJtaXNzaW9u
RWIKIF9fWk43V2ViQ29yZTIxR2VvbG9jYXRpb25Db250cm9sbGVyMTNlcnJvck9jY3VycmVkRVBO
U18xNkdlb2xvY2F0aW9uRXJyb3JFCiBfX1pON1dlYkNvcmUyMUdlb2xvY2F0aW9uQ29udHJvbGxl
cjE0c3VwcGxlbWVudE5hbWVFdgogX19aTjdXZWJDb3JlMjFHZW9sb2NhdGlvbkNvbnRyb2xsZXIx
NXBvc2l0aW9uQ2hhbmdlZEVQTlNfMTlHZW9sb2NhdGlvblBvc2l0aW9uRQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDdhMjVlYWE4
ODE0YWQ0ODU3MzMxYTZjNTNhNzY2MzY2Y2QzYzIyZGMuLmQ5NTQxZThiNWQ4NjI1Yzk4Mjk4ODI0
YzFiNjZjNTFkZDM4OTc4NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTc2LDggKzc2LDYgQEAKIAkJMDMzQTZBN0UxNDdFMDdF
NzAwNTA5QjM2IC8qIEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMzNBNkE3RDE0N0UwN0U3MDA1MDlCMzYg
LyogSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmNwcCAqLzsgfTsKIAkJMDMzQTZBODExNDdFMDg4
NjAwNTA5QjM2IC8qIEpTSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAzM0E2QTgwMTQ3RTA4ODYwMDUwOUIz
NiAvKiBKU0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5jcHAgKi87IH07CiAJCTAzM0E2QTgzMTQ3
RTA4QTYwMDUwOUIzNiAvKiBKU0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDMzQTZBODIxNDdFMDhBNjAwNTA5
QjM2IC8qIEpTSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmggKi87IH07Ci0JCTA1MkJGQ0U5MTI4
QUJGMTUwMEZEMzM4RCAvKiBHZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDUyQkZDRTgxMjhBQkYxNTAwRkQzMzhE
IC8qIEdlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAgKi87IH07Ci0JCTA1MkJGQ0VCMTI4QUJGMjEw
MEZEMzM4RCAvKiBHZW9sb2NhdGlvbkNsaWVudE1vY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA1MkJGQ0VBMTI4QUJGMjEwMEZEMzM4RCAvKiBHZW9s
b2NhdGlvbkNsaWVudE1vY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwNTYyRjk0NjE1NzNFQ0VCMDAzMUNBMTYgLyogV2ViS2l0Q1NTU1ZHRG9j
dW1lbnRWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwNTYyRjk0NDE1NzNFQ0VCMDAzMUNBMTYgLyogV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1
ZS5jcHAgKi87IH07CiAJCTA1NjJGOTQ3MTU3M0VDRUIwMDMxQ0ExNiAvKiBXZWJLaXRDU1NTVkdE
b2N1bWVudFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwNTYyRjk0NTE1NzNFQ0VCMDAzMUNBMTYgLyogV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1
ZS5oICovOyB9OwogCQkwNTYyRjk2MTE1NzNGODhGMDAzMUNBMTYgLyogUGxhdGZvcm1MYXllci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDU2MkY5NjAx
NTczRjg4RjAwMzFDQTE2IC8qIFBsYXRmb3JtTGF5ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzA4OCw4ICs3MDg2LDYgQEAKIAkJMDMzQTZB
N0YxNDdFMDdGOTAwNTA5QjM2IC8qIEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDMzQTZBODAxNDdFMDg4NjAwNTA5QjM2IC8qIEpTSFRNTFBy
b3BlcnRpZXNDb2xsZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDMzQTZBODIxNDdFMDhBNjAwNTA5QjM2IC8qIEpTSFRNTFByb3BlcnRpZXNDb2xs
ZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSFRNTFByb3BlcnRp
ZXNDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA1MkJGQ0U4MTI4
QUJGMTUwMEZEMzM4RCAvKiBHZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcDsgcGF0aCA9
IG1vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMDUyQkZDRUExMjhBQkYyMTAwRkQzMzhEIC8qIEdlb2xvY2F0aW9uQ2xpZW50TW9jay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBHZW9sb2NhdGlvbkNsaWVudE1vY2su
aDsgcGF0aCA9IG1vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTA1NjJGOTQ0MTU3M0VDRUIwMDMxQ0ExNiAvKiBXZWJLaXRDU1NTVkdEb2N1
bWVudFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYktp
dENTU1NWR0RvY3VtZW50VmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
NTYyRjk0NTE1NzNFQ0VCMDAzMUNBMTYgLyogV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA1NjJGOTYwMTU3M0Y4OEYwMDMxQ0Ex
NiAvKiBQbGF0Zm9ybUxheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBs
YXRmb3JtTGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NDYxLDggKzE1
NDU3LDYgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTU5MzA5QTEwMTFGNEFFNTgwMDI1MDYwMyAv
KiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwICovLAogCQkJCTU5MzA5QTEyMTFGNEFF
NkEwMDI1MDYwMyAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCAqLywKLQkJCQkwNTJC
RkNFODEyOEFCRjE1MDBGRDMzOEQgLyogR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcCAqLywKLQkJ
CQkwNTJCRkNFQTEyOEFCRjIxMDBGRDMzOEQgLyogR2VvbG9jYXRpb25DbGllbnRNb2NrLmggKi8s
CiAJCQkJMEZFNzE0MDMxNDIxNzBCODAwREIzM0JBIC8qIFNjcm9sbGJhclRoZW1lTW9jay5jcHAg
Ki8sCiAJCQkJMEZFNzE0MDQxNDIxNzBCODAwREIzM0JBIC8qIFNjcm9sbGJhclRoZW1lTW9jay5o
ICovLAogCQkJKTsKQEAgLTIzNTIxLDcgKzIzNTE1LDYgQEAKIAkJCQkwNzIwQjBBMTE0RDMzMjM1
MDA2NDI5NTUgLyogR2VuZXJpY0V2ZW50UXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NDZB
RjI0MTRGNERERTYwMDNFN0E3MCAvKiBHZW9sb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkM1NkNCMjMxMEQ1QUM4MDAwQTc3QzY0IC8qIEdlb2xvY2F0aW9uQ2xpZW50LmggaW4gSGVhZGVy
cyAqLywKLQkJCQkwNTJCRkNFQjEyOEFCRjIxMDBGRDMzOEQgLyogR2VvbG9jYXRpb25DbGllbnRN
b2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzQ2QUYyNzE0RjREREU2MDAzRTdBNzAgLyogR2Vv
bG9jYXRpb25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzQ2QUYyODE0RjREREU2
MDAzRTdBNzAgLyogR2VvbG9jYXRpb25FcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0NkFG
MjkxNEY0RERFNjAwM0U3QTcwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb24uaCBpbiBIZWFkZXJzICov
LApAQCAtMjY3NTMsNyArMjY3NDYsNiBAQAogCQkJCTJENDgxRjAzMTQ2QjVDNjUwMEFBNzgzNCAv
KiBHZW5lcmF0b3JHZW5lcmF0ZWRJbWFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzIwQjBB
MDE0RDMzMjM1MDA2NDI5NTUgLyogR2VuZXJpY0V2ZW50UXVldWUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOTc0NkFGMjMxNEY0RERFNjAwM0U3QTcwIC8qIEdlb2xvY2F0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAotCQkJCTA1MkJGQ0U5MTI4QUJGMTUwMEZEMzM4RCAvKiBHZW9sb2NhdGlvbkNsaWVu
dE1vY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc0NkFGMjYxNEY0RERFNjAwM0U3QTcwIC8q
IEdlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzIwQjBBMDE0
RDMzMjM1MDA2NDI5NTYgLyogR2VzdHVyZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIy
QzNEQTZEMEQwMDZDRDYwMEVGNkYyNiAvKiBHbHlwaFBhZ2VUcmVlTm9kZS5jcHAgaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRp
b25DbGllbnRNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRp
b25DbGllbnRNb2NrLmNwcAppbmRleCAyNzZiNGEzNDMwOWM5Mjk4YThmODViZDhkNjY5ZGIxMTlk
YzkxNDE4Li4zODNiZjk4ZTMxYzI4NTNlMzcwOGI2YjYxNmNjYWE0MWJlNmRjZDUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1v
Y2suY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKQEAgLTQxLDYgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBHZW9sb2NhdGlvbkNs
aWVudE1vY2s6Okdlb2xvY2F0aW9uQ2xpZW50TW9jaygpCiAgICAgOiBtX2NvbnRyb2xsZXIoMCkK
KyAgICAsIG1faGFzRXJyb3IoZmFsc2UpCiAgICAgLCBtX2NvbnRyb2xsZXJUaW1lcih0aGlzLCAm
R2VvbG9jYXRpb25DbGllbnRNb2NrOjpjb250cm9sbGVyVGltZXJGaXJlZCkKICAgICAsIG1fcGVy
bWlzc2lvblRpbWVyKHRoaXMsICZHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnBlcm1pc3Npb25UaW1l
ckZpcmVkKQogICAgICwgbV9pc0FjdGl2ZShmYWxzZSkKQEAgLTYyLDE0ICs2NCwxNSBAQCB2b2lk
IEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0Q29udHJvbGxlcihHZW9sb2NhdGlvbkNvbnRyb2xs
ZXIgKmNvbnRyb2xsZXIpCiB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0UG9zaXRpb24o
UGFzc1JlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiBwb3NpdGlvbikKIHsKICAgICBtX2xhc3RQ
b3NpdGlvbiA9IHBvc2l0aW9uOwotICAgIG1fbGFzdEVycm9yID0gMDsKKyAgICBjbGVhckVycm9y
KCk7CiAgICAgYXN5bmNVcGRhdGVDb250cm9sbGVyKCk7CiB9CiAKLXZvaWQgR2VvbG9jYXRpb25D
bGllbnRNb2NrOjpzZXRFcnJvcihQYXNzUmVmUHRyPEdlb2xvY2F0aW9uRXJyb3I+IGVycm9yKQor
dm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5h
dmFpbGFibGVFcnJvcihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKLSAgICBtX2xhc3RF
cnJvciA9IGVycm9yOwotICAgIG1fbGFzdFBvc2l0aW9uID0gMDsKKyAgICBtX2hhc0Vycm9yID0g
dHJ1ZTsKKyAgICBtX2Vycm9yTWVzc2FnZSA9IGVycm9yTWVzc2FnZTsKKyAgICBtX2xhc3RQb3Np
dGlvbiA9IG51bGxwdHI7CiAgICAgYXN5bmNVcGRhdGVDb250cm9sbGVyKCk7CiB9CiAKQEAgLTEy
NSw3ICsxMjgsNyBAQCB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6cGVybWlzc2lvblRpbWVy
RmlyZWQoV2ViQ29yZTo6VGltZXI8R2VvbG9jYXRpb25DbGllbgogdm9pZCBHZW9sb2NhdGlvbkNs
aWVudE1vY2s6OnJlc2V0KCkKIHsKICAgICBtX2xhc3RQb3NpdGlvbiA9IDA7Ci0gICAgbV9sYXN0
RXJyb3IgPSAwOworICAgIGNsZWFyRXJyb3IoKTsKICAgICBtX3Blcm1pc3Npb25TdGF0ZSA9IFBl
cm1pc3Npb25TdGF0ZVVuc2V0OwogfQogCkBAIC0xNzEsMTAgKzE3NCwxOSBAQCB2b2lkIEdlb2xv
Y2F0aW9uQ2xpZW50TW9jazo6Y29udHJvbGxlclRpbWVyRmlyZWQoVGltZXI8R2VvbG9jYXRpb25D
bGllbnRNb2NrPiogdAogICAgIEFTU0VSVF9VTlVTRUQodGltZXIsIHRpbWVyID09ICZtX2NvbnRy
b2xsZXJUaW1lcik7CiAgICAgQVNTRVJUKG1fY29udHJvbGxlcik7CiAKLSAgICBpZiAobV9sYXN0
UG9zaXRpb24uZ2V0KCkpCisgICAgaWYgKG1fbGFzdFBvc2l0aW9uLmdldCgpKSB7CisgICAgICAg
IEFTU0VSVCghbV9oYXNFcnJvcik7CiAgICAgICAgIG1fY29udHJvbGxlci0+cG9zaXRpb25DaGFu
Z2VkKG1fbGFzdFBvc2l0aW9uLmdldCgpKTsKLSAgICBlbHNlIGlmIChtX2xhc3RFcnJvci5nZXQo
KSkKLSAgICAgICAgbV9jb250cm9sbGVyLT5lcnJvck9jY3VycmVkKG1fbGFzdEVycm9yLmdldCgp
KTsKKyAgICB9IGVsc2UgaWYgKG1faGFzRXJyb3IpIHsKKyAgICAgICAgUmVmUHRyPEdlb2xvY2F0
aW9uRXJyb3I+IGdlb2xvY2F0aW9FcnJvciA9IEdlb2xvY2F0aW9uRXJyb3I6OmNyZWF0ZShHZW9s
b2NhdGlvbkVycm9yOjpQb3NpdGlvblVuYXZhaWxhYmxlLCBtX2Vycm9yTWVzc2FnZSk7CisgICAg
ICAgIG1fY29udHJvbGxlci0+ZXJyb3JPY2N1cnJlZChnZW9sb2NhdGlvRXJyb3IuZ2V0KCkpOwor
ICAgIH0KK30KKwordm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6OmNsZWFyRXJyb3IoKQorewor
ICAgIG1faGFzRXJyb3IgPSBmYWxzZTsKKyAgICBtX2Vycm9yTWVzc2FnZSA9IFN0cmluZygpOwog
fQogCiB9IC8vIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oCmluZGV4IDhhYmQ1ZTk3MGU4YzA4OTMwZmExYTVhMzM3
MjRmMzlhZDgwZjA1OGUuLjc5MjAxMzIwM2E1Yjk3MTRkZTEwOGRlNjE3ZGNhYWJiMDYxYjAwNzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGll
bnRNb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNs
aWVudE1vY2suaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCkBAIC00Miw5ICs0Myw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR2Vv
bG9jYXRpb25Db250cm9sbGVyOwogY2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlvbjsKLWNsYXNzIEdl
b2xvY2F0aW9uRXJyb3I7CiAKLS8vIFByb3ZpZGVzIGEgbW9jayBvYmplY3QgZm9yIHRoZSBnZW9s
b2NhdGlvbiBjbGllbnQKKy8vIEZJWE1FOiB0aGlzIHNob3VsZCBub3QgYmUgaW4gV2ViQ29yZS4g
SXQgc2hvdWxkIGJlIG1vdmVkIHRvIFdlYktpdC4KKy8vIFByb3ZpZGVzIGEgbW9jayBvYmplY3Qg
Zm9yIHRoZSBnZW9sb2NhdGlvbiBjbGllbnQuCiBjbGFzcyBHZW9sb2NhdGlvbkNsaWVudE1vY2sg
OiBwdWJsaWMgR2VvbG9jYXRpb25DbGllbnQgewogcHVibGljOgogICAgIEdlb2xvY2F0aW9uQ2xp
ZW50TW9jaygpOwpAQCAtNTMsOCArNTQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldCgpOwog
ICAgIHZvaWQgc2V0Q29udHJvbGxlcihHZW9sb2NhdGlvbkNvbnRyb2xsZXIqKTsKIAotICAgIHZv
aWQgc2V0RXJyb3IoUGFzc1JlZlB0cjxHZW9sb2NhdGlvbkVycm9yPik7CiAgICAgdm9pZCBzZXRQ
b3NpdGlvbihQYXNzUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+KTsKKyAgICB2b2lkIHNldE1v
Y2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSk7CiAgICAgdm9pZCBzZXRQZXJtaXNzaW9uKGJvb2wgYWxsb3dlZCk7CiAgICAgaW50
IG51bWJlck9mUGVuZGluZ1Blcm1pc3Npb25SZXF1ZXN0cygpIGNvbnN0OwogCkBAIC03NCw5ICs3
NSwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgYXN5bmNVcGRhdGVQZXJtaXNzaW9uKCk7CiAgICAg
dm9pZCBwZXJtaXNzaW9uVGltZXJGaXJlZChUaW1lcjxHZW9sb2NhdGlvbkNsaWVudE1vY2s+Kik7
CiAKKyAgICB2b2lkIGNsZWFyRXJyb3IoKTsKKwogICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlciog
bV9jb250cm9sbGVyOwogICAgIFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiBtX2xhc3RQb3Np
dGlvbjsKLSAgICBSZWZQdHI8R2VvbG9jYXRpb25FcnJvcj4gbV9sYXN0RXJyb3I7CisgICAgYm9v
bCBtX2hhc0Vycm9yOworICAgIFN0cmluZyBtX2Vycm9yTWVzc2FnZTsKICAgICBUaW1lcjxHZW9s
b2NhdGlvbkNsaWVudE1vY2s+IG1fY29udHJvbGxlclRpbWVyOwogICAgIFRpbWVyPEdlb2xvY2F0
aW9uQ2xpZW50TW9jaz4gbV9wZXJtaXNzaW9uVGltZXI7CiAgICAgYm9vbCBtX2lzQWN0aXZlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5jcHAKaW5kZXggZTRlNGVmMGMwN2Q2ZWEwYWMzNTVj
ZDkyNmQyYWY1NDg3N2YxYzAzMy4uYTI2ZjAzZDQxY2Q3MmEzMWUxZDIxYmE1YTgwZThlOWZmMTU1
N2EzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
V2ViS2l0U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuY3BwCkBAIC0xLDUgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtOTUsMjAgKzk2LDEwIEBAIHZv
aWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0OjpyZXNldEdlb2xvY2F0aW9uTW9jayhXZWJQYWdlKiB3
ZWJQYWdlKQogICAgIG1vY2tDbGllbnQtPnJlc2V0KCk7CiB9CiAKLXZvaWQgRHVtcFJlbmRlclRy
ZWVTdXBwb3J0OjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihXZWJQYWdlKiB3ZWJQYWdlLCBpbnQg
ZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcgbWVzc2FnZSkKK3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBw
b3J0OjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoV2ViUGFnZSog
d2ViUGFnZSwgY29uc3QgU3RyaW5nIG1lc3NhZ2UpCiB7Ci0gICAgR2VvbG9jYXRpb25FcnJvcjo6
RXJyb3JDb2RlIGNvZGUgPSBHZW9sb2NhdGlvbkVycm9yOjpQb3NpdGlvblVuYXZhaWxhYmxlOwot
ICAgIHN3aXRjaCAoZXJyb3JDb2RlKSB7Ci0gICAgY2FzZSBQb3NpdGlvbkVycm9yOjpQRVJNSVNT
SU9OX0RFTklFRDoKLSAgICAgICAgY29kZSA9IEdlb2xvY2F0aW9uRXJyb3I6OlBlcm1pc3Npb25E
ZW5pZWQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUG9zaXRpb25FcnJvcjo6UE9TSVRJT05f
VU5BVkFJTEFCTEU6Ci0gICAgICAgIGNvZGUgPSBHZW9sb2NhdGlvbkVycm9yOjpQb3NpdGlvblVu
YXZhaWxhYmxlOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KICAgICBHZW9sb2NhdGlvbkNsaWVu
dE1vY2sqIG1vY2tDbGllbnQgPSBzdGF0aWNfY2FzdDxHZW9sb2NhdGlvbkNsaWVudE1vY2sqPihH
ZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20oY29yZVBhZ2Uod2ViUGFnZSkpLT5jbGllbnQoKSk7
Ci0gICAgbW9ja0NsaWVudC0+c2V0RXJyb3IoR2VvbG9jYXRpb25FcnJvcjo6Y3JlYXRlKGNvZGUs
IG1lc3NhZ2UpKTsKKyAgICBtb2NrQ2xpZW50LT5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVu
YXZhaWxhYmxlRXJyb3IobWVzc2FnZSk7CiB9CiAKIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0
OjpzZXRNb2NrR2VvbG9jYXRpb25QZXJtaXNzaW9uKFdlYlBhZ2UqIHdlYlBhZ2UsIGJvb2wgYWxs
b3dlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktp
dFN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmgKaW5kZXggNThmYzFiNTNlZGI1ZDhhYWMw
ZDM4MjYwNTY1YWM0NzAyMWVhMjVlNi4uMDFmZTRmODNhN2YyZWFiMGUxMjk4NzBhOWRkY2YxODhl
ODgyMTg4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBv
cnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L1dlYktpdFN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmgKQEAgLTEsNSArMSw2IEBACiAv
KgogICogQ29weXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC01Miw3ICs1Myw3IEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyBpbnQgbnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdHMoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlKik7CiAgICAgc3RhdGljIHZvaWQg
cmVzZXRHZW9sb2NhdGlvbk1vY2soQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlKik7Ci0gICAg
c3RhdGljIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoQmxhY2tCZXJyeTo6V2ViS2l0OjpX
ZWJQYWdlKiwgaW50IGVycm9yQ29kZSwgY29uc3QgV1RGOjpTdHJpbmcgbWVzc2FnZSk7CisgICAg
c3RhdGljIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKEJs
YWNrQmVycnk6OldlYktpdDo6V2ViUGFnZSosIGNvbnN0IFdURjo6U3RyaW5nIG1lc3NhZ2UpOwog
ICAgIHN0YXRpYyB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBlcm1pc3Npb24oQmxhY2tCZXJyeTo6
V2ViS2l0OjpXZWJQYWdlKiwgYm9vbCBhbGxvd2VkKTsKICAgICBzdGF0aWMgdm9pZCBzZXRNb2Nr
R2VvbG9jYXRpb25Qb3NpdGlvbihCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2UqLCBkb3VibGUg
bGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSk7CiAgICAgc3RhdGlj
IHZvaWQgc2NhbGVQYWdlQnkoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlKiwgZmxvYXQsIGZs
b2F0LCBmbG9hdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJHZW9sb2NhdGlvbkNsaWVudE1vY2suaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkdlb2xvY2F0aW9uQ2xpZW50TW9jay5oCmluZGV4IDA1MmE1NDZhZGNjMmQxZWJiZDIyNGI2
ZDc3NDU0NmY3N2FjYzU1YWUuLjdlZmYyYmEwZGMzZGNjNWVlNjJmN2Q4MDE5YTIwODU5MTgzZDVm
MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0
aW9uQ2xpZW50TW9jay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdl
b2xvY2F0aW9uQ2xpZW50TW9jay5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB+V2Vi
R2VvbG9jYXRpb25DbGllbnRNb2NrKCkgeyByZXNldCgpOyB9CiAKICAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgc2V0UG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3Vi
bGUgYWNjdXJhY3kpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRFcnJvcihpbnQgZXJyb3JD
b2RlLCBjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBz
ZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoY29uc3QgV2ViU3RyaW5n
JiBtZXNzYWdlKTsKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UGVybWlzc2lvbihib29sKTsK
ICAgICBXRUJLSVRfRVhQT1JUIGludCBudW1iZXJPZlBlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdHMo
KSBjb25zdDsKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXRNb2NrKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHZW9sb2NhdGlvbkNsaWVudE1vY2suY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrLmNw
cAppbmRleCAzZDk2MzA3MDdmZWI1YjYzZjAzZTNlMjQxOWIyZTMwNWFmOGQwMjEyLi5kYTRhMmZj
YzYyNTFlZTA0YTA5MzYzOTQzZDQzYTk4YjRmNjkxMjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJHZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKQEAgLTQx
LDYgKzQxLDcgQEAKICNpbmNsdWRlICJXZWJHZW9sb2NhdGlvbkVycm9yLmgiCiAjaW5jbHVkZSAi
V2ViR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIgogI2luY2x1ZGUgIldlYkdlb2xvY2F0
aW9uUG9zaXRpb24uaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTU4LDIzICs1OSw5IEBAIHZvaWQgV2ViR2VvbG9jYXRp
b25DbGllbnRNb2NrOjpzZXRQb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1
ZGUsIGRvCiAgICAgbV9jbGllbnRNb2NrLT5zZXRQb3NpdGlvbih3ZWJQb3NpdGlvbik7CiB9CiAK
LXZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpzZXRFcnJvcihpbnQgZXJyb3JDb2RlLCBj
b25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UpCit2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6
c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKGNvbnN0IFdlYlN0cmlu
ZyYgbWVzc2FnZSkKIHsKLSAgICBXZWJHZW9sb2NhdGlvbkVycm9yOjpFcnJvciBjb2RlOwotICAg
IHN3aXRjaCAoZXJyb3JDb2RlKSB7Ci0gICAgY2FzZSBQb3NpdGlvbkVycm9yOjpQRVJNSVNTSU9O
X0RFTklFRDoKLSAgICAgICAgY29kZSA9IFdlYkdlb2xvY2F0aW9uRXJyb3I6OkVycm9yUGVybWlz
c2lvbkRlbmllZDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQb3NpdGlvbkVycm9yOjpQT1NJ
VElPTl9VTkFWQUlMQUJMRToKLSAgICAgICAgY29kZSA9IFdlYkdlb2xvY2F0aW9uRXJyb3I6OkVy
cm9yUG9zaXRpb25VbmF2YWlsYWJsZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBXZWJHZW9sb2NhdGlvbkVycm9yIHdlYkVycm9yKGNvZGUsIG1lc3NhZ2UpOwotICAgIG1fY2xp
ZW50TW9jay0+c2V0RXJyb3Iod2ViRXJyb3IpOworICAgIG1fY2xpZW50TW9jay0+c2V0TW9ja0dl
b2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKG1lc3NhZ2UpOwogfQogCiB2b2lkIFdl
Ykdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0UGVybWlzc2lvbihib29sIGFsbG93ZWQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0R3RrLmNwcAppbmRleCBlNWQ2OTg5ZDFkOTU3NTM3MjY2NDM4NjI4NzAzMWJl
MTgyYjkxOThkLi5kZTdmZDM5ZTc1ZWU1MGFmNGQyNzk3ZTk2YzFkOWQ3MGFkOTVkOTk2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKQEAgLTMsNiArMyw3IEBACiAgKiAgQ29weXJpZ2h0IChD
KSAyMDEwIEpvb25lIEh1ciA8am9vbmVAa2xkcC5vcmc+CiAgKiAgQ29weXJpZ2h0IChDKSAyMDA5
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDEx
IElnYWxpYSBTLkwuCisgKiAgQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTY1OCwyMyArNjU5LDExIEBAIHZv
aWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3CiAjZW5kaWYKIH0KIAotdm9pZCBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRHdGs6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcs
IGludCBlcnJvckNvZGUsIGNvbnN0IGdjaGFyKiBlcnJvck1lc3NhZ2UpCit2b2lkIER1bXBSZW5k
ZXJUcmVlU3VwcG9ydEd0azo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVy
cm9yKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyKiBlcnJvck1lc3NhZ2UpCiB7
CiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQogICAgIEdlb2xvY2F0aW9uQ2xpZW50TW9jayogbW9j
ayA9IHN0YXRpY19jYXN0PEdlb2xvY2F0aW9uQ2xpZW50TW9jayo+KEdlb2xvY2F0aW9uQ29udHJv
bGxlcjo6ZnJvbShjb3JlKHdlYlZpZXcpKS0+Y2xpZW50KCkpOwotCi0gICAgR2VvbG9jYXRpb25F
cnJvcjo6RXJyb3JDb2RlIGNvZGU7Ci0gICAgc3dpdGNoIChlcnJvckNvZGUpIHsKLSAgICBjYXNl
IFBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJT05fREVOSUVEOgotICAgICAgICBjb2RlID0gR2VvbG9j
YXRpb25FcnJvcjo6UGVybWlzc2lvbkRlbmllZDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQ
b3NpdGlvbkVycm9yOjpQT1NJVElPTl9VTkFWQUlMQUJMRToKLSAgICBkZWZhdWx0OgotICAgICAg
ICBjb2RlID0gR2VvbG9jYXRpb25FcnJvcjo6UG9zaXRpb25VbmF2YWlsYWJsZTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgfQotCi0gICAgbW9jay0+c2V0RXJyb3IoR2VvbG9jYXRpb25FcnJvcjo6Y3Jl
YXRlKGNvZGUsIGVycm9yTWVzc2FnZSkpOworICAgIG1vY2stPnNldE1vY2tHZW9sb2NhdGlvblBv
c2l0aW9uVW5hdmFpbGFibGVFcnJvcihlcnJvck1lc3NhZ2UpOwogI2VuZGlmCiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydEd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0R3RrLmgKaW5kZXggMzc1MDIwZDdiOTQxYTE3YWU0ODVhZTczNmVmNjg0ODYwYzg5
ODI0ZC4uODAxZGM1YjVhZWIwOWRiNDE5YzE2ZjY5NTA4NjQ3NzFlMTYyYjY3OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
R3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0R3RrLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAq
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYwpAQCAtMTExLDcgKzExMiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9p
ZCByZXNldEdlb2xvY2F0aW9uQ2xpZW50TW9jayhXZWJLaXRXZWJWaWV3Kik7CiAgICAgc3RhdGlj
IHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUGVybWlzc2lvbihXZWJLaXRXZWJWaWV3KiwgYm9vbCBh
bGxvd2VkKTsKICAgICBzdGF0aWMgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihXZWJL
aXRXZWJWaWV3KiwgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNj
dXJhY3kpOwotICAgIHN0YXRpYyB2b2lkIHNldE1vY2tHZW9sb2NhdGlvbkVycm9yKFdlYktpdFdl
YlZpZXcqLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBnY2hhciogZXJyb3JNZXNzYWdlKTsKKyAgICBz
dGF0aWMgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoV2Vi
S2l0V2ViVmlldyosIGNvbnN0IGdjaGFyKiBlcnJvck1lc3NhZ2UpOwogICAgIHN0YXRpYyBpbnQg
bnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMoV2ViS2l0V2ViVmll
dyopOwogCiAgICAgc3RhdGljIHZvaWQgc2V0UGFnZUNhY2hlU3VwcG9ydHNQbHVnaW5zKFdlYktp
dFdlYlZpZXcqLCBib29sIGVuYWJsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CmluZGV4IGMxZjBhMmQ4OWQ0MmVkYjliZTg5ODMyYjMzNGNkYjk0MDQwYWE4NmIuLjgwZDU0MTc0
Y2QxMmRjZjEzZTY0YmI4MjZhZmQxZmVjZmZjNTJkMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KQEAgLTY1MTEsMTEgKzY1MTEsMTEgQEAgc3RhdGljIHZvaWQgZ2xpYkNvbnRl
eHRJdGVyYXRpb25DYWxsYmFjayhDRlJ1bkxvb3BPYnNlcnZlclJlZiwgQ0ZSdW5Mb29wQWN0aXZp
dHkKICNlbmRpZiAvLyBFTkFCTEUoR0VPTE9DQVRJT04pCiB9CiAKLS0gKHZvaWQpX2dlb2xvY2F0
aW9uRGlkRmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCistICh2b2lkKV9nZW9sb2NhdGlv
bkRpZEZhaWxXaXRoTWVzc2FnZTooTlNTdHJpbmcgKillcnJvck1lc3NhZ2UKIHsKICNpZiBFTkFC
TEUoR0VPTE9DQVRJT04pCiAgICAgaWYgKF9wcml2YXRlICYmIF9wcml2YXRlLT5wYWdlKSB7Ci0g
ICAgICAgIFJlZlB0cjxHZW9sb2NhdGlvbkVycm9yPiBnZW9sb2NhdGlvRXJyb3IgPSBHZW9sb2Nh
dGlvbkVycm9yOjpjcmVhdGUoR2VvbG9jYXRpb25FcnJvcjo6UG9zaXRpb25VbmF2YWlsYWJsZSwg
W2Vycm9yIGxvY2FsaXplZERlc2NyaXB0aW9uXSk7CisgICAgICAgIFJlZlB0cjxHZW9sb2NhdGlv
bkVycm9yPiBnZW9sb2NhdGlvRXJyb3IgPSBHZW9sb2NhdGlvbkVycm9yOjpjcmVhdGUoR2VvbG9j
YXRpb25FcnJvcjo6UG9zaXRpb25VbmF2YWlsYWJsZSwgZXJyb3JNZXNzYWdlKTsKICAgICAgICAg
V2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKF9wcml2YXRlLT5wYWdlKS0+ZXJy
b3JPY2N1cnJlZChnZW9sb2NhdGlvRXJyb3IuZ2V0KCkpOwogICAgIH0KICNlbmRpZiAvLyBFTkFC
TEUoR0VPTE9DQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRl
LmgKaW5kZXggODI2NDc0ZTQxYjM0YzIyYmZmNTQ1NjBmNmEwYjE4ZjcyM2Y5MDdlMy4uYzQ2ZDM1
ZTEyMzI1NjY5ZDYxYWQ4ZTJhZjdkMjk0NWQzYWIxYzRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaApAQCAtNzI4LDcgKzcyOCw3IEBAIENvdWxkIGJlIHdv
cnRoIGFkZGluZyB0byB0aGUgQVBJLgogLSAoaWQ8V2ViR2VvbG9jYXRpb25Qcm92aWRlcj4pX2dl
b2xvY2F0aW9uUHJvdmlkZXI7CiAKIC0gKHZvaWQpX2dlb2xvY2F0aW9uRGlkQ2hhbmdlUG9zaXRp
b246KFdlYkdlb2xvY2F0aW9uUG9zaXRpb24gKilwb3NpdGlvbjsKLS0gKHZvaWQpX2dlb2xvY2F0
aW9uRGlkRmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yOworLSAodm9pZClfZ2VvbG9jYXRp
b25EaWRGYWlsV2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopZXJyb3JNZXNzYWdlOwogQGVuZAogCiBA
aW50ZXJmYWNlIFdlYlZpZXcgKFdlYlZpZXdOb3RpZmljYXRpb24pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQu
Y3BwCmluZGV4IGRjODIzMTY1YzczMWVjMDUyZTllMzJhMjJlMjgxNjg3M2RmMGUyYWMuLjE5MmJh
YjQzNzUxNzA4ZTAyMGM2YjM4OTA0NTI4ZmM4NzVhMWI4MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQu
Y3BwCkBAIC0yLDcgKzIsNyBAQAogICAgIENvcHlyaWdodCAoQykgMjAxMCBSb2JlcnQgSG9nYW4g
PHJvYmVydEByb2JlcnRob2dhbi5uZXQ+CiAgICAgQ29weXJpZ2h0IChDKSAyMDA4LDIwMDksMjAx
MCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAgICBDb3B5
cmlnaHQgKEMpIDIwMDcgU3RhaWtvcyBDb21wdXRpbmcgU2VydmljZXMgSW5jLgotICAgIENvcHly
aWdodCAoQykgMjAwNyBBcHBsZSBJbmMuCisgICAgQ29weXJpZ2h0IChDKSAyMDA3LCAyMDEyIEFw
cGxlIEluYy4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNzUzLDIzICs3NTMsMTIgQEAgdm9pZCBE
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oUVdlYlBh
Z2UqIHBhZ2UsIGRvdWJsZQogI2VuZGlmCiB9CiAKLXZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQ6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKFFXZWJQYWdlKiBwYWdlLCBpbnQgZXJyb3JDb2Rl
LCBjb25zdCBRU3RyaW5nJiBtZXNzYWdlKQordm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6
c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKFFXZWJQYWdlKiBwYWdl
LCBjb25zdCBRU3RyaW5nJiBtZXNzYWdlKQogewogI2lmIEVOQUJMRShHRU9MT0NBVElPTikKICAg
ICBQYWdlKiBjb3JlUGFnZSA9IFFXZWJQYWdlUHJpdmF0ZTo6Y29yZShwYWdlKTsKLQotICAgIEdl
b2xvY2F0aW9uRXJyb3I6OkVycm9yQ29kZSBjb2RlID0gR2VvbG9jYXRpb25FcnJvcjo6UG9zaXRp
b25VbmF2YWlsYWJsZTsKLSAgICBzd2l0Y2ggKGVycm9yQ29kZSkgewotICAgIGNhc2UgUG9zaXRp
b25FcnJvcjo6UEVSTUlTU0lPTl9ERU5JRUQ6Ci0gICAgICAgIGNvZGUgPSBHZW9sb2NhdGlvbkVy
cm9yOjpQZXJtaXNzaW9uRGVuaWVkOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBvc2l0aW9u
RXJyb3I6OlBPU0lUSU9OX1VOQVZBSUxBQkxFOgotICAgICAgICBjb2RlID0gR2VvbG9jYXRpb25F
cnJvcjo6UG9zaXRpb25VbmF2YWlsYWJsZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCiAgICAg
R2VvbG9jYXRpb25DbGllbnRNb2NrKiBtb2NrQ2xpZW50ID0gc3RhdGljX2Nhc3Q8R2VvbG9jYXRp
b25DbGllbnRNb2NrKj4oR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKGNvcmVQYWdlKS0+Y2xp
ZW50KCkpOwotICAgIG1vY2tDbGllbnQtPnNldEVycm9yKEdlb2xvY2F0aW9uRXJyb3I6OmNyZWF0
ZShjb2RlLCBtZXNzYWdlKSk7CisgICAgbW9ja0NsaWVudC0+c2V0TW9ja0dlb2xvY2F0aW9uUG9z
aXRpb25VbmF2YWlsYWJsZUVycm9yKG1lc3NhZ2UpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQu
aCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQuaAppbmRleCA4NjIyMTM2NTc5OGYxMGEzMDZjZGNlODdlMjI0NzMwMTFlN2Y5ZGVmLi5jZWZi
OWQxYzg3NDU2NWM3ZmYwMGRiMmVlYTAzNDIzM2ZiNjFkZjFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgKKysrIGIv
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5o
CkBAIC0yLDcgKzIsNyBAQAogICAgIENvcHlyaWdodCAoQykgMjAxMCBSb2JlcnQgSG9nYW4gPHJv
YmVydEByb2JlcnRob2dhbi5uZXQ+CiAgICAgQ29weXJpZ2h0IChDKSAyMDA4LDIwMDksMjAxMCBO
b2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAgICBDb3B5cmln
aHQgKEMpIDIwMDcgU3RhaWtvcyBDb21wdXRpbmcgU2VydmljZXMgSW5jLgotICAgIENvcHlyaWdo
dCAoQykgMjAwNyBBcHBsZSBJbmMuCisgICAgQ29weXJpZ2h0IChDKSAyMDA3LCAyMDEyIEFwcGxl
IEluYy4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTQxLDcgKzE0MSw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgdm9pZCByZXNldEdlb2xvY2F0aW9uTW9jayhRV2ViUGFnZSopOwogICAgIHN0YXRp
YyB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBlcm1pc3Npb24oUVdlYlBhZ2UqLCBib29sIGFsbG93
ZWQpOwogICAgIHN0YXRpYyB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKFFXZWJQYWdl
KiwgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kpOwot
ICAgIHN0YXRpYyB2b2lkIHNldE1vY2tHZW9sb2NhdGlvbkVycm9yKFFXZWJQYWdlKiwgaW50IGVy
cm9yQ29kZSwgY29uc3QgUVN0cmluZyYgbWVzc2FnZSk7CisgICAgc3RhdGljIHZvaWQgc2V0TW9j
a0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKFFXZWJQYWdlKiwgY29uc3QgUVN0
cmluZyYgbWVzc2FnZSk7CiAgICAgc3RhdGljIGludCBudW1iZXJPZlBlbmRpbmdHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0cyhRV2ViUGFnZSopOwogCiAgICAgc3RhdGljIGludCB3b3JrZXJU
aHJlYWRDb3VudCgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IGEwMzIxYjVjYjAzYTcwZTc4ZjlmNDk5YjQyNTVlMDZjOTZhMWQyYmEuLjYyMjQ1
NDM2NzczMWE4NTU2YWUyODQ0YzRlN2M5NzM5MzkxNGM0Y2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAxMi0wOS0y
MSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KKworICAgICAgICBGaXgg
R2VvbG9jYXRpb24gZXJyb3IgcmVwb3J0aW5nIGluIHRoZSB0ZXN0IHN1cHBvcnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3Mzg2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBpbmZvcm1h
dGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxlYXNlIGFk
ZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKHNldE1vY2tHZW9sb2NhdGlv
blBvc2l0aW9uVW5hdmFpbGFibGVFcnJvckNhbGxiYWNrKToKKyAgICAgICAgKFRlc3RSdW5uZXI6
OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5o
OgorICAgICAgICAoVGVzdFJ1bm5lcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvYmxhY2ti
ZXJyeS9UZXN0UnVubmVyQmxhY2tCZXJyeS5jcHA6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRN
b2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IpOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwOgorICAgICAgICAoRFJUVGVzdFJ1
bm5lcjo6RFJUVGVzdFJ1bm5lcik6CisgICAgICAgIChEUlRUZXN0UnVubmVyOjpzZXRNb2NrR2Vv
bG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuaDoKKyAgICAgICAgKERSVFRlc3RSdW5uZXIpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL2FuZHJvaWRfZmFsbGJhY2tfZm9udHMu
eG1sOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZsLmNwcDoKKyAg
ICAgICAgKFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVF
cnJvcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwOgor
ICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJs
ZUVycm9yKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTW9ja0dlb2xvY2F0aW9uUHJv
dmlkZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTW9ja0dlb2xvY2F0aW9uUHJv
dmlkZXIubW06CisgICAgICAgICgtW01vY2tHZW9sb2NhdGlvblByb3ZpZGVyIGRlYWxsb2NdKToK
KyAgICAgICAgKC1bTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIgcmVzZXRFcnJvcl0pOgorICAgICAg
ICAoLVtNb2NrR2VvbG9jYXRpb25Qcm92aWRlciBzZXRQb3NpdGlvbjpdKToKKyAgICAgICAgKC1b
TW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWls
YWJsZUVycm9yV2l0aE1lc3NhZ2U6XSk6CisgICAgICAgICgtW01vY2tHZW9sb2NhdGlvblByb3Zp
ZGVyIGxhc3RQb3NpdGlvbl0pOgorICAgICAgICAoLVtNb2NrR2VvbG9jYXRpb25Qcm92aWRlciB0
aW1lckZpcmVkXSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMu
bW06CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZh
aWxhYmxlRXJyb3IpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5j
cHA6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZh
aWxhYmxlRXJyb3IpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5o
OgorICAgICAgICAoVGVzdFJ1bm5lcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL1Rl
c3RSdW5uZXJXaW4uY3BwOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9u
UG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93eC9U
ZXN0UnVubmVyV3guY3BwOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9u
UG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKToKKwogMjAxMi0wOS0yMSAgRGlyayBQcmFua2UgIDxk
cHJhbmtlQGNocm9taXVtLm9yZz4KIAogICAgICAgICB3ZWJraXRweTogZHJvcCBzdXBwb3J0IGZv
ciBvbGQgVGVzdEV4cGVjdGF0aW9ucyBzeW50YXgKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5j
cHAKaW5kZXggMWQwMGM1MGEzNWEzN2VjMGZhZGMxOGFkODRlMzBkYjcxOGM4YTBkNC4uOWY3YTdj
MWJlY2EwYWJhODQzNjllOTdmZWU5MWVlYzJkYzI2Y2Q1NyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVz
dFJ1bm5lci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAy
MDA4LCAyMDA5LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgSm9vbmUgSHVyIDxqb29uZUBrbGRw
Lm9yZz4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTEwOTUsMTcgKzEwOTUsMTYgQEAgc3RhdGljIEpT
VmFsdWVSZWYgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25DYWxsYmFjayhKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNPYmoKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7
CiB9CiAKLXN0YXRpYyBKU1ZhbHVlUmVmIHNldE1vY2tHZW9sb2NhdGlvbkVycm9yQ2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0
aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVu
dHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQorc3RhdGljIEpTVmFsdWVSZWYgc2V0TW9ja0dl
b2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNv
bnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXpl
X3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKQogewotICAgIGlmIChhcmd1bWVudENvdW50IDwgMikKKyAgICBpZiAoYXJn
dW1lbnRDb3VudCAhPSAxKQogICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29u
dGV4dCk7CiAKLSAgICBpbnQgY29kZSA9IEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVu
dHNbMF0sIE5VTEwpOwotICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBtZXNzYWdlKEFkb3B0
LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1sxXSwgZXhjZXB0aW9uKSk7
CisgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IG1lc3NhZ2UoQWRvcHQsIEpTVmFsdWVUb1N0
cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsKICAgICBBU1NFUlQo
ISpleGNlcHRpb24pOwogCiAgICAgVGVzdFJ1bm5lciogY29udHJvbGxlciA9IHJlaW50ZXJwcmV0
X2Nhc3Q8VGVzdFJ1bm5lcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7Ci0gICAg
Y29udHJvbGxlci0+c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoY29kZSwgbWVzc2FnZS5nZXQoKSk7
CisgICAgY29udHJvbGxlci0+c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVy
cm9yKG1lc3NhZ2UuZ2V0KCkpOwogCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNv
bnRleHQpOwogfQpAQCAtMjI2Niw3ICsyMjY1LDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogVGVzdFJ1
bm5lcjo6c3RhdGljRnVuY3Rpb25zKCkKICAgICAgICAgeyAic2V0TWFpbkZyYW1lSXNGaXJzdFJl
c3BvbmRlciIsIHNldE1haW5GcmFtZUlzRmlyc3RSZXNwb25kZXJDYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAog
ICAgICAgICB7ICJzZXRNaW5pbXVtVGltZXJJbnRlcnZhbCIsIHNldE1pbmltdW1UaW1lckludGVy
dmFsQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0TW9ja0RldmljZU9yaWVudGF0aW9u
Iiwgc2V0TW9ja0RldmljZU9yaWVudGF0aW9uQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKLSAgICAgICAgeyAi
c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IiLCBzZXRNb2NrR2VvbG9jYXRpb25FcnJvckNhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCisgICAgICAgIHsgInNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFi
bGVFcnJvciIsIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvckNhbGxi
YWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uIiwgc2V0
TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJhZGRN
b2NrU3BlZWNoSW5wdXRSZXN1bHQiLCBhZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHRDYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LAogICAgICAgICB7ICJzZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdCIsIHNldE1vY2tT
cGVlY2hJbnB1dER1bXBSZWN0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5u
ZXIuaAppbmRleCA5YmNjOTViYzkyZDMyOTYxZTUxYzRhMzM3OWIzNzgzOTQyMjdmMjU5Li5lZGQw
ZGZkYTc1YjYzMTk2YWE5YzAyYmQxYmJkN2RiMWE0NDViNDIwIDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVz
dFJ1bm5lci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAw
OCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDcsIDIwMDgsIDIwMDksIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDAsOCArMTAwLDggQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0QXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQoYm9vbCBmbGFnKTsK
ICAgICB2b2lkIHNldE1haW5GcmFtZUlzRmlyc3RSZXNwb25kZXIoYm9vbCBmbGFnKTsKICAgICB2
b2lkIHNldE1vY2tEZXZpY2VPcmllbnRhdGlvbihib29sIGNhblByb3ZpZGVBbHBoYSwgZG91Ymxl
IGFscGhhLCBib29sIGNhblByb3ZpZGVCZXRhLCBkb3VibGUgYmV0YSwgYm9vbCBjYW5Qcm92aWRl
R2FtbWEsIGRvdWJsZSBnYW1tYSk7Ci0gICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihp
bnQgY29kZSwgSlNTdHJpbmdSZWYgbWVzc2FnZSk7CiAgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRp
b25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1
cmFjeSk7CisgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJy
b3IoSlNTdHJpbmdSZWYgbWVzc2FnZSk7CiAgICAgdm9pZCBhZGRNb2NrU3BlZWNoSW5wdXRSZXN1
bHQoSlNTdHJpbmdSZWYgcmVzdWx0LCBkb3VibGUgY29uZmlkZW5jZSwgSlNTdHJpbmdSZWYgbGFu
Z3VhZ2UpOwogICAgIHZvaWQgc2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3QoYm9vbCBmbGFnKTsK
ICAgICB2b2lkIHNldFBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldExvY2F0aW9uKEpTU3RyaW5nUmVm
IHBhdGgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9UZXN0
UnVubmVyQmxhY2tCZXJyeS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1Rl
c3RSdW5uZXJCbGFja0JlcnJ5LmNwcAppbmRleCA4OTg2OTAwYzZiM2U1MzIxZWI0YzZkMDM5Y2I0
MGZkZTgyYzM1ZGVjLi42MmJlNWZlMTg2MWMyNGE2OWU3ZDU1Yjk1ODdkZDU1ZTIwZjU5Nzg3IDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1Rlc3RSdW5uZXJCbGFj
a0JlcnJ5LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1Rlc3RSdW5u
ZXJCbGFja0JlcnJ5LmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDksIDIwMTAsIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTQ0OSwxMCArNDUwLDEwIEBAIHZvaWQgVGVzdFJ1
bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUg
bG9uZ2l0dWRlLCBkCiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0OjpzZXRNb2NrR2VvbG9jYXRp
b25Qb3NpdGlvbihCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJUcmVlOjpjdXJyZW50SW5z
dGFuY2UoKS0+cGFnZSgpLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSk7CiB9CiAKLXZv
aWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoaW50IGNvZGUsIEpTU3RyaW5n
UmVmIG1lc3NhZ2UpCit2b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9u
VW5hdmFpbGFibGVFcnJvcihKU1N0cmluZ1JlZiBtZXNzYWdlKQogewogICAgIFN0cmluZyBtZXNz
YWdlU3RyID0ganNTdHJpbmdSZWZUb1dlYkNvcmVTdHJpbmcobWVzc2FnZSk7Ci0gICAgRHVtcFJl
bmRlclRyZWVTdXBwb3J0OjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihCbGFja0JlcnJ5OjpXZWJL
aXQ6OkR1bXBSZW5kZXJUcmVlOjpjdXJyZW50SW5zdGFuY2UoKS0+cGFnZSgpLCBjb2RlLCBtZXNz
YWdlU3RyKTsKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnQ6OnNldE1vY2tHZW9sb2NhdGlvblBv
c2l0aW9uVW5hdmFpbGFibGVFcnJvcihCbGFja0JlcnJ5OjpXZWJLaXQ6OkR1bXBSZW5kZXJUcmVl
OjpjdXJyZW50SW5zdGFuY2UoKS0+cGFnZSgpLCBtZXNzYWdlU3RyKTsKIH0KIAogdm9pZCBUZXN0
UnVubmVyOjpzaG93V2ViSW5zcGVjdG9yKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vRFJUVGVzdFJ1bm5lci5jcHAKaW5kZXggMGU1YThiMzFiZTdiZmM4NWM3MGEzOTA5M2I2
ZTBmMzE3ZGUzNWQ3OS4uMGQ0MDUxN2Y1ODI3Mzg5MDNiZGQ5MzI1Y2NkYTFjYmMwZGYxMmFlNSAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5j
cHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5jcHAK
QEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgUGF3ZWwgSGFqZGFuIChw
aGFqZGFuLmpyQGNocm9taXVtLm9yZykKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CkBAIC0yMDYsNyArMjA3LDcgQEAgRFJUVGVzdFJ1bm5lcjo6RFJUVGVzdFJ1bm5lcihUZXN0U2hl
bGwqIHNoZWxsKQogICAgIGJpbmRNZXRob2QoInNldEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9h
cmQiLCAmRFJUVGVzdFJ1bm5lcjo6c2V0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZCk7CiAg
ICAgYmluZE1ldGhvZCgic2V0TWluaW11bVRpbWVySW50ZXJ2YWwiLCAmRFJUVGVzdFJ1bm5lcjo6
c2V0TWluaW11bVRpbWVySW50ZXJ2YWwpOwogICAgIGJpbmRNZXRob2QoInNldE1vY2tEZXZpY2VP
cmllbnRhdGlvbiIsICZEUlRUZXN0UnVubmVyOjpzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24pOwot
ICAgIGJpbmRNZXRob2QoInNldE1vY2tHZW9sb2NhdGlvbkVycm9yIiwgJkRSVFRlc3RSdW5uZXI6
OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKTsKKyAgICBiaW5kTWV0aG9kKCJzZXRNb2NrR2VvbG9j
YXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IiLCAmRFJUVGVzdFJ1bm5lcjo6c2V0TW9ja0dl
b2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKTsKICAgICBiaW5kTWV0aG9kKCJzZXRN
b2NrR2VvbG9jYXRpb25Qb3NpdGlvbiIsICZEUlRUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRp
b25Qb3NpdGlvbik7CiAgICAgYmluZE1ldGhvZCgic2V0UGFnZVZpc2liaWxpdHkiLCAmRFJUVGVz
dFJ1bm5lcjo6c2V0UGFnZVZpc2liaWxpdHkpOwogICAgIGJpbmRNZXRob2QoInNldFBsdWdpbnNF
bmFibGVkIiwgJkRSVFRlc3RSdW5uZXI6OnNldFBsdWdpbnNFbmFibGVkKTsKQEAgLTE4MTYsMTQg
KzE4MTcsMTUgQEAgdm9pZCBEUlRUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlv
bihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywKICAgICAgICAgd2luZG93TGlzdFtp
XS0+Z2VvbG9jYXRpb25DbGllbnRNb2NrKCktPnNldFBvc2l0aW9uKGFyZ3VtZW50c1swXS50b0Rv
dWJsZSgpLCBhcmd1bWVudHNbMV0udG9Eb3VibGUoKSwgYXJndW1lbnRzWzJdLnRvRG91YmxlKCkp
OwogfQogCi12b2lkIERSVFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit2b2lkIERS
VFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihj
b25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewog
ICAgIHJlc3VsdC0+c2V0TnVsbCgpOwotICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpIDwgMiB8fCAh
YXJndW1lbnRzWzBdLmlzTnVtYmVyKCkgfHwgIWFyZ3VtZW50c1sxXS5pc1N0cmluZygpKQorICAg
IGlmIChhcmd1bWVudHMuc2l6ZSgpICE9IDEgfHwgIWFyZ3VtZW50c1sxXS5pc1N0cmluZygpKQog
ICAgICAgICByZXR1cm47CiAgICAgVmVjdG9yPFdlYlZpZXdIb3N0Kj4gd2luZG93TGlzdCA9IG1f
c2hlbGwtPndpbmRvd0xpc3QoKTsKKyAgICAvLyBGSVhNRTogQmVuamFtaW4KICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHdpbmRvd0xpc3Quc2l6ZSgpOyBpKyspCi0gICAgICAgIHdpbmRvd0xp
c3RbaV0tPmdlb2xvY2F0aW9uQ2xpZW50TW9jaygpLT5zZXRFcnJvcihhcmd1bWVudHNbMF0udG9J
bnQzMigpLCBjcHBWYXJpYW50VG9XZWJTdHJpbmcoYXJndW1lbnRzWzFdKSk7CisgICAgICAgIHdp
bmRvd0xpc3RbaV0tPmdlb2xvY2F0aW9uQ2xpZW50TW9jaygpLT5zZXRFcnJvcihjcHBWYXJpYW50
VG9XZWJTdHJpbmcoYXJndW1lbnRzWzBdKSk7CiB9CiAKIHZvaWQgRFJUVGVzdFJ1bm5lcjo6YWJv
cnRNb2RhbChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVz
dWx0KQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1
bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5oCmlu
ZGV4IGI2YzkwN2U2MjcxOGNkMjI3NTg0N2QzOWRjM2Y4ZThkNDg0MzY3YzMuLjU1OTQwYWNkMWY0
N2JiMjZhZjI5ZGQ1YmI2ZDUzMGQyYWVlMDY2ZDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmgKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTAgUGF3ZWwgSGFqZGFuIChwaGFqZGFuLmpyQGNocm9taXVtLm9yZykKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zMzcsNyArMzM4LDcgQEAgcHVibGljOgog
ICAgIC8vIEdlb2xvY2F0aW9uIHJlbGF0ZWQgZnVuY3Rpb25zLgogICAgIHZvaWQgc2V0R2VvbG9j
YXRpb25QZXJtaXNzaW9uKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAg
ICB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYs
IENwcFZhcmlhbnQqKTsKLSAgICB2b2lkIHNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIHNldE1vY2tHZW9sb2NhdGlv
blBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJp
YW50Kik7CiAKICAgICAvLyBFbXB0eSBzdHViIG1ldGhvZCB0byBrZWVwIHBhcml0eSB3aXRoIG9i
amVjdCBtb2RlbCBleHBvc2VkIGJ5IGdsb2JhbCBEUlRUZXN0UnVubmVyLgogICAgIHZvaWQgYWJv
cnRNb2RhbChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9hbmRyb2lkX2ZhbGxiYWNrX2ZvbnRzLnht
bCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL2FuZHJvaWRfZmFsbGJhY2tfZm9udHMu
eG1sCmluZGV4IDVhYjZjMmQ1OTdiNzFmZTMyZTRjMjk1YWEwNDgzNWRmNzNiMDQyOTAuLjEyMzE2
YzM2YjFjMDk3OTM2NjQyMWY2ZjcyNjliZjJiOWE0Njc1NDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL2FuZHJvaWRfZmFsbGJhY2tfZm9udHMueG1sCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL2FuZHJvaWRfZmFsbGJhY2tfZm9udHMueG1sCkBA
IC0xMCw0ICsxMCw0IEBACiAgICAgICAgICAgICA8ZmlsZT5Ecm9pZFNhbnNGYWxsYmFjay50dGY8
L2ZpbGU+CiAgICAgICAgIDwvZmlsZXNldD4KICAgICA8L2ZhbWlseT4KLTwvZmFtaWx5c2V0Pgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvZmFtaWx5c2V0PgpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwuY3BwIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwuY3BwCmluZGV4IDJlMzgwYzU2OTMxZWI4ZmZkY2ZjZWMz
YTI2MDgwOWFmMTRhMGNiZmYuLjk3OTdhMzE1MmU4OTQwNWVlYTY0Y2I3OTNiOTQzMGQ2NjZlMDky
NjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZsLmNw
cAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHAKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwgPGVyaWNA
d2Via2l0Lm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwOCBOdWFudGkgTHRkLgogICogQ29weXJp
Z2h0IChDKSAyMDA5IEphbiBNaWNoYWVsIEFsb256byA8am1hbG9uem9AZ21haWwuY29tPgpAQCAt
Mzc5LDcgKzM3OSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRp
b24oZG91YmxlLCBkb3VibGUsIGRvdWJsZSkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12
b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGludCwgSlNTdHJpbmdSZWYp
Cit2b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVF
cnJvcihKU1N0cmluZ1JlZikKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBHZW9sb2Nh
dGlvbiBsYXlvdXQgdGVzdHMuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yODI2NC4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0
ay9UZXN0UnVubmVyR3RrLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9UZXN0UnVubmVy
R3RrLmNwcAppbmRleCAwOTI5Y2FkZjYyMTczYTljZTljOWM5MzFlYjQ3MjZkOGMwZGYxYWE2Li5k
Yjk2Mjg5MjcwYjc3NDgxMjgzNWMwZjgwNDliMTQ2OTM0ZmJjMDJlIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHAKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDcsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDA3IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDggTnVhbnRpIEx0ZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSBKYW4gTWlj
aGFlbCBBbG9uem8gPGptYWxvbnpvQGdtYWlsLmNvbT4KQEAgLTQ0Nyw3ICs0NDcsNyBAQCB2b2lk
IFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwg
ZG91YmxlIGxvbmdpdHVkZSwgZAogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0TW9j
a0dlb2xvY2F0aW9uUG9zaXRpb24odmlldywgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3kp
OwogfQogCi12b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGludCBjb2Rl
LCBKU1N0cmluZ1JlZiBtZXNzYWdlKQordm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRp
b25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoSlNTdHJpbmdSZWYgbWVzc2FnZSkKIHsKICAgICBX
ZWJLaXRXZWJWaWV3KiB2aWV3ID0gV0VCS0lUX1dFQl9WSUVXKGdfc2xpc3RfbnRoX2RhdGEod2Vi
Vmlld0xpc3QsIDApKTsKICAgICBpZiAoIXZpZXcpCkBAIC00NTUsNyArNDU1LDcgQEAgdm9pZCBU
ZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihpbnQgY29kZSwgSlNTdHJpbmdSZWYg
bWVzc2FnZSkKICAgICBBU1NFUlQodmlldyk7CiAKICAgICBHT3duUHRyPGdjaGFyPiBjTWVzc2Fn
ZShKU1N0cmluZ0NvcHlVVEY4Q1N0cmluZyhtZXNzYWdlKSk7Ci0gICAgRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrOjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcih2aWV3LCBjb2RlLCBjTWVzc2FnZS5n
ZXQoKSk7CisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRNb2NrR2VvbG9jYXRpb25Q
b3NpdGlvblVuYXZhaWxhYmxlRXJyb3IodmlldywgY01lc3NhZ2UuZ2V0KCkpOwogfQogCiB2b2lk
IFRlc3RSdW5uZXI6OnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihib29sIGFsbG93KQpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL01vY2tHZW9sb2NhdGlvblByb3ZpZGVyLmgg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIuaAppbmRl
eCAzMTFkMWU5MTg0YjM2YjM4MmU1MTNiNzhhZDhiMzM2MWQxZDU5MDU3Li5kN2FjODkxZGI1ZmI5
MDFkYjJiY2JlODNhZjhhODljNzk4ZTVmMTYyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEwLCAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMTAgKzI4LDEyIEBACiAKICNp
bXBvcnQgPFdlYktpdC9XZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0hhc2hTZXQuaD4K
KyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogQGludGVyZmFjZSBNb2NrR2VvbG9jYXRpb25Q
cm92aWRlciA6IE5TT2JqZWN0PFdlYkdlb2xvY2F0aW9uUHJvdmlkZXI+IHsKLSAgICBXZWJHZW9s
b2NhdGlvblBvc2l0aW9uICpfbGFzdFBvc2l0aW9uOwotICAgIE5TRXJyb3IgKl9lcnJvcjsKKyAg
ICBSZXRhaW5QdHI8V2ViR2VvbG9jYXRpb25Qb3NpdGlvbj4gX2xhc3RQb3NpdGlvbjsKKyAgICBC
T09MIF9oYXNFcnJvcjsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9lcnJvck1lc3NhZ2U7CiAg
ICAgTlNUaW1lciAqX3RpbWVyOwogICAgIEhhc2hTZXQ8V2ViVmlldyAqPiBfcmVnaXN0ZXJlZFZp
ZXdzOwogfQpAQCAtMzksNyArNDEsNyBAQAogKyAoTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIgKilz
aGFyZWQ7CiAKIC0gKHZvaWQpc2V0UG9zaXRpb246KFdlYkdlb2xvY2F0aW9uUG9zaXRpb24gKilw
b3NpdGlvbjsKLS0gKHZvaWQpc2V0RXJyb3I6KE5TRXJyb3IgKillcnJvcjsKKy0gKHZvaWQpc2V0
TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yV2l0aE1lc3NhZ2U6KE5TU3Ry
aW5nICopZXJyb3JNZXNzYWdlOwogCiAtICh2b2lkKXN0b3BUaW1lcjsKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL01vY2tHZW9sb2NhdGlvblByb3ZpZGVyLm1tIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL01vY2tHZW9sb2NhdGlvblByb3ZpZGVyLm1tCmluZGV4IGUw
M2NhZTI0YTVkMzU3ZWU1OTMwZGE2MTU0NDM3ZWM5YWVmOWY1ZmIuLjNmMmUxMDk3OWNkY2ViZGQ0
ZTcyZmM1N2MyNjkzOTBhYmZlNTEwNWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9Nb2NrR2VvbG9jYXRpb25Qcm92aWRlci5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMCwgMjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDM0ICszOCwzMyBAQAogewogICAg
IEFTU0VSVChfcmVnaXN0ZXJlZFZpZXdzLmlzRW1wdHkoKSk7CiAKLSAgICBbX2xhc3RQb3NpdGlv
biByZWxlYXNlXTsKLSAgICBbX2Vycm9yIHJlbGVhc2VdOworICAgIF9sYXN0UG9zaXRpb24uY2xl
YXIoKTsKKyAgICBfZXJyb3JNZXNzYWdlLmNsZWFyKCk7CiAgICAgW3N1cGVyIGRlYWxsb2NdOwog
fQogCistICh2b2lkKXJlc2V0RXJyb3IKK3sKKyAgICBfaGFzRXJyb3IgPSBOTzsKKyAgICBfZXJy
b3JNZXNzYWdlLmNsZWFyKCk7Cit9CisKIC0gKHZvaWQpc2V0UG9zaXRpb246KFdlYkdlb2xvY2F0
aW9uUG9zaXRpb24gKilwb3NpdGlvbgogewotICAgIGlmIChfbGFzdFBvc2l0aW9uICE9IHBvc2l0
aW9uKSB7Ci0gICAgICAgIFtfbGFzdFBvc2l0aW9uIHJlbGVhc2VdOwotICAgICAgICBfbGFzdFBv
c2l0aW9uID0gW3Bvc2l0aW9uIHJldGFpbl07Ci0gICAgfQorICAgIF9sYXN0UG9zaXRpb24gPSBw
b3NpdGlvbjsKICAgICAKLSAgICBbX2Vycm9yIHJlbGVhc2VdOwotICAgIF9lcnJvciA9IDA7Cisg
ICAgW3NlbGYgcmVzZXRFcnJvcl07CiAKICAgICBpZiAoIV90aW1lcikKICAgICAgICAgX3RpbWVy
ID0gW05TVGltZXIgc2NoZWR1bGVkVGltZXJXaXRoVGltZUludGVydmFsOjAgdGFyZ2V0OnNlbGYg
c2VsZWN0b3I6QHNlbGVjdG9yKHRpbWVyRmlyZWQpIHVzZXJJbmZvOjAgcmVwZWF0czpOT107CiB9
CiAKLS0gKHZvaWQpc2V0RXJyb3I6KE5TRXJyb3IgKillcnJvcgorLSAodm9pZClzZXRNb2NrR2Vv
bG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3JXaXRoTWVzc2FnZTooTlNTdHJpbmcgKill
cnJvck1lc3NhZ2UKIHsKLSAgICBpZiAoX2Vycm9yICE9IGVycm9yKSB7Ci0gICAgICAgIFtfZXJy
b3IgcmVsZWFzZV07Ci0gICAgICAgIF9lcnJvciA9IFtlcnJvciByZXRhaW5dOwotICAgIH0KLSAg
ICAKLSAgICBbX2xhc3RQb3NpdGlvbiByZWxlYXNlXTsKLSAgICBfbGFzdFBvc2l0aW9uID0gMDsK
KyAgICBfaGFzRXJyb3IgPSBZRVM7CisgICAgX2Vycm9yTWVzc2FnZSA9IGVycm9yTWVzc2FnZTsK
KworICAgIF9sYXN0UG9zaXRpb24uY2xlYXIoKTsKIAogICAgIGlmICghX3RpbWVyKQogICAgICAg
ICBfdGltZXIgPSBbTlNUaW1lciBzY2hlZHVsZWRUaW1lcldpdGhUaW1lSW50ZXJ2YWw6MCB0YXJn
ZXQ6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IodGltZXJGaXJlZCkgdXNlckluZm86MCByZXBlYXRz
Ok5PXTsKQEAgLTg2LDcgKzg1LDcgQEAKIAogLSAoV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiAqKWxh
c3RQb3NpdGlvbgogewotICAgIHJldHVybiBfbGFzdFBvc2l0aW9uOworICAgIHJldHVybiBfbGFz
dFBvc2l0aW9uLmdldCgpOwogfQogCiAtICh2b2lkKXN0b3BUaW1lcgpAQCAtMTAyLDEwICsxMDEs
MTAgQEAKICAgICAvLyBFeHBlY3QgdGhhdCB2aWV3cyB3b24ndCBiZSAodW4pcmVnaXN0ZXJlZCB3
aGlsZSBpdGVyYXRpbmcuCiAgICAgSGFzaFNldDxXZWJWaWV3Kj4gdmlld3MgPSBfcmVnaXN0ZXJl
ZFZpZXdzOwogICAgIGZvciAoSGFzaFNldDxXZWJWaWV3Kj46Oml0ZXJhdG9yIGl0ZXIgPSB2aWV3
cy5iZWdpbigpOyBpdGVyICE9IHZpZXdzLmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgaWYgKF9l
cnJvcikKLSAgICAgICAgICAgIFsqaXRlciBfZ2VvbG9jYXRpb25EaWRGYWlsV2l0aEVycm9yOl9l
cnJvcl07CisgICAgICAgIGlmIChfaGFzRXJyb3IpCisgICAgICAgICAgICBbKml0ZXIgX2dlb2xv
Y2F0aW9uRGlkRmFpbFdpdGhNZXNzYWdlOl9lcnJvck1lc3NhZ2UuZ2V0KCldOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBbKml0ZXIgX2dlb2xvY2F0aW9uRGlkQ2hhbmdlUG9zaXRpb246X2xh
c3RQb3NpdGlvbl07CisgICAgICAgICAgICBbKml0ZXIgX2dlb2xvY2F0aW9uRGlkQ2hhbmdlUG9z
aXRpb246X2xhc3RQb3NpdGlvbi5nZXQoKV07CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCmluZGV4IGEyMWVkODBhYzExYmU2MzcxMzFkZmNkNDZl
ZmY2NGM2ZDUyOTAzZjUuLjY4Y2FmYjZmMTRlY2Q3ZTcwZjkzZDdkNTI2NmYxOTYyNDc3YWZiMGYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC00NzksMTIgKzQ3OSwxMSBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tH
ZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZAog
ICAgIFtwb3NpdGlvbiByZWxlYXNlXTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrR2Vv
bG9jYXRpb25FcnJvcihpbnQgY29kZSwgSlNTdHJpbmdSZWYgbWVzc2FnZSkKK3ZvaWQgVGVzdFJ1
bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKEpTU3RyaW5n
UmVmIG1lc3NhZ2UpCiB7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBtZXNzYWdlQ0YoQWRv
cHRDRiwgSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbWVzc2FnZSkp
OwogICAgIE5TU3RyaW5nICptZXNzYWdlTlMgPSAoTlNTdHJpbmcgKiltZXNzYWdlQ0YuZ2V0KCk7
Ci0gICAgTlNFcnJvciAqZXJyb3IgPSBbTlNFcnJvciBlcnJvcldpdGhEb21haW46V2ViS2l0RXJy
b3JEb21haW4gY29kZTpjb2RlIHVzZXJJbmZvOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhP
YmplY3Q6bWVzc2FnZU5TIGZvcktleTpOU0xvY2FsaXplZERlc2NyaXB0aW9uS2V5XV07Ci0gICAg
W1tNb2NrR2VvbG9jYXRpb25Qcm92aWRlciBzaGFyZWRdIHNldEVycm9yOmVycm9yXTsKKyAgICBb
W01vY2tHZW9sb2NhdGlvblByb3ZpZGVyIHNoYXJlZF0gc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRp
b25VbmF2YWlsYWJsZUVycm9yV2l0aE1lc3NhZ2U6bWVzc2FnZU5TXTsKIH0KIAogdm9pZCBUZXN0
UnVubmVyOjpzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCBhbGxvdykKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5jcHAgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuY3BwCmluZGV4IGQzNTAzYmQxZTc1MDk4N2U1MjJkYjdk
NGJlM2Q4ZmFjOGJhYzZjMGYuLjlhOTIwMTNlZGQwZWVhNzMzMWZjN2YwMDE0OWM4NTM0YzBhZDAx
ODkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5jcHAK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmNwcApAQCAtODM0LDEx
ICs4MzQsMTEgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRHZW9sb2NhdGlvblBlcm1pc3Npb25Db21t
b24oYm9vbCBhbGxvdykKICAgICAgbV9nZW9sb2NhdGlvblBlcm1pc3Npb24gPSBhbGxvdzsKIH0K
IAotdm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihpbnQgY29kZSwgY29u
c3QgUVN0cmluZyYgbWVzc2FnZSkKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9u
UG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAg
UUxpc3Q8V2ViQ29yZTo6V2ViUGFnZSo+IHBhZ2VzID0gbV9kcnQtPmdldEFsbFBhZ2VzKCk7CiAg
ICAgZm9yZWFjaCAoV2ViQ29yZTo6V2ViUGFnZSogcGFnZSwgcGFnZXMpCi0gICAgICAgIER1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihwYWdlLCBjb2RlLCBt
ZXNzYWdlKTsKKyAgICAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldE1vY2tHZW9sb2Nh
dGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihwYWdlLCBtZXNzYWdlKTsKIH0KIAogdm9pZCBU
ZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRv
dWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVz
dFJ1bm5lclF0LmgKaW5kZXggODhhOWM2YTk0NGU2NGUzODU4NTQ2MDY0OGJkODI2NzhhOTM1NmMy
Zi4uMzExYmNkOWRlNWNkN2YyYTlkNmYyMmU4OWNhOTAwNWVkNDYxZjcyMyAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmgKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmgKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVz
KQogICogQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIGh0dHA6Ly93d3cudG9y
Y2htb2JpbGUuY29tLworICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjI0LDcgKzIy
NSw3IEBAIHB1YmxpYyBRX1NMT1RTOgogCiAgICAgdm9pZCBzZXRNb2NrRGV2aWNlT3JpZW50YXRp
b24oYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0
YSwgZG91YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpOwogCi0g
ICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihpbnQgY29kZSwgY29uc3QgUVN0cmluZyYg
bWVzc2FnZSk7CisgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxl
RXJyb3IoY29uc3QgUVN0cmluZyYgbWVzc2FnZSk7CiAgICAgdm9pZCBzZXRNb2NrR2VvbG9jYXRp
b25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1
cmFjeSk7CiAgICAgdm9pZCBzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCBhbGxvdyk7CiAg
ICAgaW50IG51bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzKCk7CmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAKaW5kZXggZDMzNjUxYjdh
ZjZlNDVjMmI5ZTU2MWI0YTcxNzFiNDZjOWU2MzdmMS4uYzQ0MDBmZGNiMWViYmVmNGY3N2JjODA0
MGNlMTZhMmI2M2VmMzc0MCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Rl
c3RSdW5uZXJXaW4uY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVy
V2luLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcs
IDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NDIwLDcgKzQyMCw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRp
b24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkCiAgICAgLy8gU2VlIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODI2NC4KIH0KIAotdm9pZCBUZXN0
UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihpbnQgY29kZSwgSlNTdHJpbmdSZWYgbWVz
c2FnZSkKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWls
YWJsZUVycm9yKEpTU3RyaW5nUmVmIG1lc3NhZ2UpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVu
dCBmb3IgR2VvbG9jYXRpb24gbGF5b3V0IHRlc3RzLgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjgyNjQuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS93eC9UZXN0UnVubmVyV3guY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gv
VGVzdFJ1bm5lcld4LmNwcAppbmRleCBkN2E1MjUyYzQwNGJmMjE5ZGY3ZWExZmE1N2NiM2Q5ZTFk
ZGQzMzgzLi5lNzgwY2ZlNTJiM2IwMTY5NGU2MmM3N2IzOGRmOWQwZTBiMTA5YmFhIDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9UZXN0UnVubmVyV3guY3BwCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3d4L1Rlc3RSdW5uZXJXeC5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDA4IEtldmluIE9sbGl2aWVyIDxrZXZpbm9AdGhlb2xsaXZpZXJz
LmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzOCw3ICszMzksNyBAQCB2
b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVk
ZSwgZG91YmxlIGxvbmdpdHVkZSwgZAogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjgyNjQuCiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0dl
b2xvY2F0aW9uRXJyb3IoaW50IGNvZGUsIEpTU3RyaW5nUmVmIG1lc3NhZ2UpCit2b2lkIFRlc3RS
dW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihKU1N0cmlu
Z1JlZikKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBHZW9sb2NhdGlvbiBsYXlvdXQg
dGVzdHMuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yODI2NC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCBlZmIzYTBlYzM5OGE4MDExMzg0NzE1ZGUxMjRjM2I4ZTdkZjA2MTMz
Li40MGNhOWZhNzI1OTZmMzk0ZTk1YmJiMTk0ZjA3NzdhYTE3YzkxZmEyIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUg
KzEsMjggQEAKIDIwMTItMDktMjEgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5j
b20+CiAKKyAgICAgICAgRml4IEdlb2xvY2F0aW9uIGVycm9yIHJlcG9ydGluZyBpbiB0aGUgdGVz
dCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05NzM4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2YgdGhlIGNoYW5nZSBzdWNoIGFzIGFwcHJvYWNoLCBy
YXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1bmN0aW9uIGRlc2NyaXB0aW9ucyBiZWxvdyAoT09Q
UyEpLgorCisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vZXJyb3ItY2xlYXItd2F0Y2gu
aHRtbDoKKyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9lcnJvci1leHBlY3RlZC50eHQ6
CisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vbWF4aW11bS1hZ2UtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9uL3JlZW50cmFudC1lcnJvci1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL2Vycm9y
LmpzOgorICAgICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9tYXhpbXVt
LWFnZS5qczoKKyAgICAgICAgKGNoZWNrRXJyb3IpOgorICAgICAgICAodGVzdE5vblplcm9NYXhp
bXVtQWdlKToKKyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcGVy
bWlzc2lvbi1kZW5pZWQtYWxyZWFkeS1lcnJvci5qczoKKyAgICAgICAgKiBmYXN0L2RvbS9HZW9s
b2NhdGlvbi9zY3JpcHQtdGVzdHMvcmVlbnRyYW50LWVycm9yLmpzOgorICAgICAgICAqIGZhc3Qv
ZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy93YXRjaC5qczoKKyAgICAgICAgKGNoZWNrRXJy
b3IpOgorICAgICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9uL3dhdGNoLWV4cGVjdGVkLnR4dDoK
KworMjAxMi0wOS0yMSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KKwog
ICAgICAgICBmYXN0L2RvbS9HZW9sb2NhdGlvbi9kaXNjb25uZWN0ZWQtZnJhbWUuaHRtbCB0ZXN0
IGFzc2VydHMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk3Mzc2CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2Vy
cm9yLWNsZWFyLXdhdGNoLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9l
cnJvci1jbGVhci13YXRjaC5odG1sCmluZGV4IDMyMjA2ZGYzZmMzOTA3NjI3ZjQxNWRhNjEyZWNk
N2Q0NzBiZThmMTUuLjZjNjE5NzgzZWI5Yzc4NGU0YWJhYzI5NzExMmI1ZDdjODAxOWNhNjEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2Vycm9yLWNsZWFyLXdh
dGNoLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vZXJyb3ItY2xl
YXItd2F0Y2guaHRtbApAQCAtNywxMiArNywxMSBAQAogPHNjcmlwdD4KIGRlc2NyaXB0aW9uKCJU
aGlzIHRlc3RzIHJlbW92aW5nIHRoZSB3YXRjaGVyIGZyb20gYW4gZXJyb3IgY2FsbGJhY2sgZG9l
cyBub3QgY2F1c2VzIGFzc2VydGlvbnMuIik7CiAKLXZhciBtb2NrQ29kZSA9IDI7CiB2YXIgbW9j
a01lc3NhZ2UgPSAiZGVidWciOwogCiBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICB0ZXN0
UnVubmVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbih0cnVlKTsKLSAgICB0ZXN0UnVubmVyLnNl
dE1vY2tHZW9sb2NhdGlvbkVycm9yKG1vY2tDb2RlLCBtb2NrTWVzc2FnZSk7CisgICAgdGVzdFJ1
bm5lci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IobW9ja01lc3Nh
Z2UpOwogfSBlbHNlCiAgICAgZGVidWcoJ1RoaXMgdGVzdCBjYW4gbm90IGJlIHJ1biB3aXRob3V0
IHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlcicpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9HZW9sb2NhdGlvbi9lcnJvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9HZW9sb2NhdGlvbi9lcnJvci1leHBlY3RlZC50eHQKaW5kZXggOTU4MjA1OTVmZGJiNDc2
ZjcwOWQxYjc5Y2ZlZDM1MmVjYjMwZjIyZC4uMTMzZTM5YTMyYWVkYjNlZmRhMjI0OWJiODMwZWUw
NTJlZDkzNTllYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24v
ZXJyb3ItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9u
L2Vycm9yLWV4cGVjdGVkLnR4dApAQCAtMyw3ICszLDcgQEAgVGVzdHMgR2VvbG9jYXRpb24gZXJy
b3IgY2FsbGJhY2sgdXNpbmcgdGhlIG1vY2sgc2VydmljZS4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KIAogCi1QQVNTIGVycm9yLmNvZGUgaXMgbW9ja0NvZGUKK1BBU1MgZXJyb3IuY29kZSBp
cyBlcnJvci5QT1NJVElPTl9VTkFWQUlMQUJMRQogUEFTUyBlcnJvci5tZXNzYWdlIGlzIG1vY2tN
ZXNzYWdlCiBQQVNTIGVycm9yLlVOS05PV05fRVJST1IgaXMgdW5kZWZpbmVkCiBQQVNTIGVycm9y
LlBFUk1JU1NJT05fREVOSUVEIGlzIDEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L0dlb2xvY2F0aW9uL21heGltdW0tYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL0dlb2xvY2F0aW9uL21heGltdW0tYWdlLWV4cGVjdGVkLnR4dAppbmRleCAzNDRiZDQ1Yjgy
MTRkNGJlZDZhOWY5MDNmMzIyYjE3YmQwMzA2YTg5Li4zODg5NDY2OTdiMzg1OTE3NGM0ZTJmZTNj
YWM1MDQxOGYxY2VhNTM1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2Nh
dGlvbi9tYXhpbXVtLWFnZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
R2VvbG9jYXRpb24vbWF4aW11bS1hZ2UtZXhwZWN0ZWQudHh0CkBAIC0xNiw3ICsxNiw3IEBAIFBB
U1MgcG9zaXRpb24uY29vcmRzLmxhdGl0dWRlIGlzIG1vY2tMYXRpdHVkZQogUEFTUyBwb3NpdGlv
bi5jb29yZHMubG9uZ2l0dWRlIGlzIG1vY2tMb25naXR1ZGUKIFBBU1MgcG9zaXRpb24uY29vcmRz
LmFjY3VyYWN5IGlzIG1vY2tBY2N1cmFjeQogCi1QQVNTIGVycm9yLmNvZGUgaXMgbW9ja0NvZGUK
K1BBU1MgZXJyb3IuY29kZSBpcyBlcnJvci5QT1NJVElPTl9VTkFWQUlMQUJMRQogUEFTUyBlcnJv
ci5tZXNzYWdlIGlzIG1vY2tNZXNzYWdlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3JlZW50cmFu
dC1lcnJvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9y
ZWVudHJhbnQtZXJyb3ItZXhwZWN0ZWQudHh0CmluZGV4IDk5M2JlYWMyMTdlNjcwOTk4ZDgyMGQx
NWNlMjg3OTRkNGFkNDA0ZmUuLjRjNGViMWYwYmI5OGI1NjdkMmJmMjE4ZmY5NzMzZjFmODM1MTdl
NzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3JlZW50cmFu
dC1lcnJvci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRp
b24vcmVlbnRyYW50LWVycm9yLWV4cGVjdGVkLnR4dApAQCAtMywxMCArMywxMCBAQCBUZXN0cyB0
aGF0IHJlZW50cmFudCBjYWxscyB0byBHZW9sb2NhdGlvbiBtZXRob2RzIGZyb20gdGhlIGVycm9y
IGNhbGxiYWNrIGFyZSBPSwogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1MgZXJy
b3IuY29kZSBpcyBtb2NrQ29kZQorUEFTUyBlcnJvci5jb2RlIGlzIGVycm9yLlBPU0lUSU9OX1VO
QVZBSUxBQkxFCiBQQVNTIGVycm9yLm1lc3NhZ2UgaXMgbW9ja01lc3NhZ2UKIAotUEFTUyBlcnJv
ci5jb2RlIGlzIG1vY2tDb2RlCitQQVNTIGVycm9yLmNvZGUgaXMgZXJyb3IuUE9TSVRJT05fVU5B
VkFJTEFCTEUKIFBBU1MgZXJyb3IubWVzc2FnZSBpcyBtb2NrTWVzc2FnZQogUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9H
ZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvZXJyb3IuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9H
ZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvZXJyb3IuanMKaW5kZXggMmQxM2YzZjQ2YzgzMDEwNzZj
OGRjYmI5ZDE5ODkxMGY3N2ZjYzgxYi4uOGU0NGJjNmY3MWVmZDhlYjc3M2U5ZTc5NTc1NDdkMGQz
ZjcxZTgwOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2Ny
aXB0LXRlc3RzL2Vycm9yLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9u
L3NjcmlwdC10ZXN0cy9lcnJvci5qcwpAQCAtMSwxMSArMSwxMCBAQAogZGVzY3JpcHRpb24oIlRl
c3RzIEdlb2xvY2F0aW9uIGVycm9yIGNhbGxiYWNrIHVzaW5nIHRoZSBtb2NrIHNlcnZpY2UuIik7
CiAKLXZhciBtb2NrQ29kZSA9IDI7CiB2YXIgbW9ja01lc3NhZ2UgPSAiZGVidWciOwogCiBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKICAgICB0ZXN0UnVubmVyLnNldEdlb2xvY2F0aW9uUGVybWlz
c2lvbih0cnVlKTsKLSAgICB0ZXN0UnVubmVyLnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKG1vY2tD
b2RlLCBtb2NrTWVzc2FnZSk7CisgICAgdGVzdFJ1bm5lci5zZXRNb2NrR2VvbG9jYXRpb25Qb3Np
dGlvblVuYXZhaWxhYmxlRXJyb3IobW9ja01lc3NhZ2UpOwogfSBlbHNlCiAgICAgZGVidWcoJ1Ro
aXMgdGVzdCBjYW4gbm90IGJlIHJ1biB3aXRob3V0IHRoZSB0ZXN0UnVubmVyJyk7CiAKQEAgLTE1
LDcgKzE0LDcgQEAgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihmdW5j
dGlvbihwKSB7CiAgICAgZmluaXNoSlNUZXN0KCk7CiB9LCBmdW5jdGlvbihlKSB7CiAgICAgZXJy
b3IgPSBlOwotICAgIHNob3VsZEJlKCdlcnJvci5jb2RlJywgJ21vY2tDb2RlJyk7CisgICAgc2hv
dWxkQmUoJ2Vycm9yLmNvZGUnLCAnZXJyb3IuUE9TSVRJT05fVU5BVkFJTEFCTEUnKTsKICAgICBz
aG91bGRCZSgnZXJyb3IubWVzc2FnZScsICdtb2NrTWVzc2FnZScpOwogICAgIHNob3VsZEJlKCdl
cnJvci5VTktOT1dOX0VSUk9SJywgJ3VuZGVmaW5lZCcpOwogICAgIHNob3VsZEJlKCdlcnJvci5Q
RVJNSVNTSU9OX0RFTklFRCcsICcxJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvbWF4aW11bS1hZ2UuanMgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvbWF4aW11bS1hZ2UuanMKaW5kZXggNmM4
Zjg2MDA5ZmI4NDY1MzExZDBhZDllOWU4NGZhNTczMWE1ZDE2ZC4uNDc1OTZjYTQ2NDZjYzM2OTdh
ZjI4OTg5ODVkNjUzNDQ0YTYyY2IyMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
R2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL21heGltdW0tYWdlLmpzCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9tYXhpbXVtLWFnZS5qcwpAQCAtNCw3
ICs0LDYgQEAgdmFyIG1vY2tMYXRpdHVkZSA9IDUxLjQ3ODsKIHZhciBtb2NrTG9uZ2l0dWRlID0g
LTAuMTY2OwogdmFyIG1vY2tBY2N1cmFjeSA9IDEwMC4wOwogCi12YXIgbW9ja0NvZGUgPSAyOwog
dmFyIG1vY2tNZXNzYWdlID0gJ3Rlc3QnOwogCiB2YXIgcG9zaXRpb247CkBAIC0yMSw3ICsyMCw3
IEBAIGZ1bmN0aW9uIGNoZWNrUG9zaXRpb24ocCkgewogZnVuY3Rpb24gY2hlY2tFcnJvcihlKSB7
CiAgICAgZGVidWcoJycpOwogICAgIGVycm9yID0gZTsKLSAgICBzaG91bGRCZSgnZXJyb3IuY29k
ZScsICdtb2NrQ29kZScpOworICAgIHNob3VsZEJlKCdlcnJvci5jb2RlJywgJ2Vycm9yLlBPU0lU
SU9OX1VOQVZBSUxBQkxFJyk7CiAgICAgc2hvdWxkQmUoJ2Vycm9yLm1lc3NhZ2UnLCAnbW9ja01l
c3NhZ2UnKTsKIH0KIApAQCAtNTcsNyArNTYsNyBAQCBmdW5jdGlvbiB0ZXN0WmVyb01heGltdW1B
Z2UoKSB7CiBmdW5jdGlvbiB0ZXN0Tm9uWmVyb01heGltdW1BZ2UoKSB7CiAgICAgLy8gVXBkYXRl
IHRoZSBtb2NrIHNlcnZpY2UgdG8gcmVwb3J0IGFuIGVycm9yLgogICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRNb2NrR2VvbG9jYXRpb25FcnJvcihtb2Nr
Q29kZSwgbW9ja01lc3NhZ2UpOworICAgICAgICB0ZXN0UnVubmVyLnNldE1vY2tHZW9sb2NhdGlv
blBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihtb2NrTWVzc2FnZSk7CiAgICAgLy8gVGhlIG1heGlt
dW1BZ2UgaXMgbm9uLXplcm8sIHNvIHdlIGV4cGVjdCB0aGUgY2FjaGVkIHBvc2l0aW9uLCBub3Qg
dGhlIGVycm9yIGZyb20gdGhlIHNlcnZpY2UuCiAgICAgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdl
dEN1cnJlbnRQb3NpdGlvbihmdW5jdGlvbihwKSB7CiAgICAgICAgIGNoZWNrUG9zaXRpb24ocCk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVz
dHMvcGVybWlzc2lvbi1kZW5pZWQtYWxyZWFkeS1lcnJvci5qcyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9wZXJtaXNzaW9uLWRlbmllZC1hbHJlYWR5LWVy
cm9yLmpzCmluZGV4IGI1ZTNkOGYyYzhhMzI4ZDI3MzliNDg1YzhjZGE0ZDM4N2IzMjY4MzguLjQ4
YjVjZjgxYzU0OThhM2QzNGYxNDE3MjQ2NzkxZGY3YzhjN2MxNGYgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9wZXJtaXNzaW9uLWRlbmll
ZC1hbHJlYWR5LWVycm9yLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9u
L3NjcmlwdC10ZXN0cy9wZXJtaXNzaW9uLWRlbmllZC1hbHJlYWR5LWVycm9yLmpzCkBAIC0yMyw3
ICsyMyw3IEBAIGZ1bmN0aW9uIGNvbnRpbnVlVGVzdCgpCiB7CiAgICAgLy8gTWFrZSBhbm90aGVy
IHJlcXVlc3QsIHdpdGggcGVybWlzc2lvbiBhbHJlYWR5IGRlbmllZC4KICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIuc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3Io
MiwgJ3Rlc3QnKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlv
blVuYXZhaWxhYmxlRXJyb3IoJ3Rlc3QnKTsKIAogICAgIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5n
ZXRDdXJyZW50UG9zaXRpb24oZnVuY3Rpb24ocCkgewogICAgICAgICB0ZXN0RmFpbGVkKCdTdWNj
ZXNzIGNhbGxiYWNrIGludm9rZWQgdW5leHBlY3RlZGx5Jyk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcmVlbnRyYW50LWVycm9yLmpz
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3JlZW50cmFu
dC1lcnJvci5qcwppbmRleCA1NDM5ZTI5MjJjNGM5ODhlZDIxYThiYzczMTgzM2YwYzJiNzE0OTli
Li41YTZjMDlkMWJhODI4NmIwYWI0MWE3Y2JiNjcwZDc5YWIxYjczZWU1IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcmVlbnRyYW50LWVy
cm9yLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0
cy9yZWVudHJhbnQtZXJyb3IuanMKQEAgLTEsMTEgKzEsMTAgQEAKIGRlc2NyaXB0aW9uKCJUZXN0
cyB0aGF0IHJlZW50cmFudCBjYWxscyB0byBHZW9sb2NhdGlvbiBtZXRob2RzIGZyb20gdGhlIGVy
cm9yIGNhbGxiYWNrIGFyZSBPSy4iKTsKIAotdmFyIG1vY2tDb2RlID0gMjsKIHZhciBtb2NrTWVz
c2FnZSA9ICd0ZXN0JzsKIAogaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgdGVzdFJ1bm5l
ci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24odHJ1ZSk7Ci0gICAgdGVzdFJ1bm5lci5zZXRNb2Nr
R2VvbG9jYXRpb25FcnJvcihtb2NrQ29kZSwgbW9ja01lc3NhZ2UpOworICAgIHRlc3RSdW5uZXIu
c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKG1vY2tNZXNzYWdlKTsK
IH0gZWxzZQogICAgIGRlYnVnKCdUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4gd2l0aG91dCB0aGUg
dGVzdFJ1bm5lcicpOwogCkBAIC0yMiw3ICsyMSw3IEBAIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5n
ZXRDdXJyZW50UG9zaXRpb24oZnVuY3Rpb24ocCkgewogICAgIGVycm9yQ2FsbGJhY2tJbnZva2Vk
ID0gdHJ1ZTsKIAogICAgIGVycm9yID0gZTsKLSAgICBzaG91bGRCZSgnZXJyb3IuY29kZScsICdt
b2NrQ29kZScpOworICAgIHNob3VsZEJlKCdlcnJvci5jb2RlJywgJ2Vycm9yLlBPU0lUSU9OX1VO
QVZBSUxBQkxFJyk7CiAgICAgc2hvdWxkQmUoJ2Vycm9yLm1lc3NhZ2UnLCAnbW9ja01lc3NhZ2Un
KTsKICAgICBkZWJ1ZygnJyk7CiAgICAgY29udGludWVUZXN0KCk7CkBAIC0zMiwxNCArMzEsMTQg
QEAgZnVuY3Rpb24gY29udGludWVUZXN0KCkgewogICAgIG1vY2tNZXNzYWdlICs9ICcgcmVwZWF0
JzsKIAogICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRN
b2NrR2VvbG9jYXRpb25FcnJvcihtb2NrQ29kZSwgbW9ja01lc3NhZ2UpOworICAgICAgICB0ZXN0
UnVubmVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihtb2NrTWVz
c2FnZSk7CiAKICAgICBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGZ1
bmN0aW9uKHApIHsKICAgICAgICAgdGVzdEZhaWxlZCgnU3VjY2VzcyBjYWxsYmFjayBpbnZva2Vk
IHVuZXhwZWN0ZWRseScpOwogICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKICAgICB9LCBmdW5jdGlv
bihlKSB7CiAgICAgICAgIGVycm9yID0gZTsKLSAgICAgICAgc2hvdWxkQmUoJ2Vycm9yLmNvZGUn
LCAnbW9ja0NvZGUnKTsKKyAgICAgICAgc2hvdWxkQmUoJ2Vycm9yLmNvZGUnLCAnZXJyb3IuUE9T
SVRJT05fVU5BVkFJTEFCTEUnKTsKICAgICAgICAgc2hvdWxkQmUoJ2Vycm9yLm1lc3NhZ2UnLCAn
bW9ja01lc3NhZ2UnKTsKICAgICAgICAgZmluaXNoSlNUZXN0KCk7CiAgICAgfSk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvd2F0Y2gu
anMgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvd2F0Y2gu
anMKaW5kZXggNmYxZmUwY2RmMjQwYzQ4MjE5ZWViMThkMzZmYmM2MGRjODFjODlhMi4uMGVhMWNh
ZjQ4ZDk4YjQ3ZmI5YTMzNGUzOTQzMWVlNzhhYmVkODQ2MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3dhdGNoLmpzCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy93YXRjaC5qcwpAQCAtNCw3
ICs0LDYgQEAgdmFyIG1vY2tMYXRpdHVkZSA9IDUxLjQ3ODsKIHZhciBtb2NrTG9uZ2l0dWRlID0g
LTAuMTY2OwogdmFyIG1vY2tBY2N1cmFjeSA9IDEwMC4wOwogCi12YXIgbW9ja0NvZGUgPSAyOwog
dmFyIG1vY2tNZXNzYWdlID0gJ3Rlc3QnOwogCiB2YXIgcG9zaXRpb247CkBAIC0yMCw3ICsxOSw3
IEBAIGZ1bmN0aW9uIGNoZWNrUG9zaXRpb24ocCkgewogCiBmdW5jdGlvbiBjaGVja0Vycm9yKGUp
IHsKICAgICBlcnJvciA9IGU7Ci0gICAgc2hvdWxkQmUoJ2Vycm9yLmNvZGUnLCAnbW9ja0NvZGUn
KTsKKyAgICBzaG91bGRCZSgnZXJyb3IuY29kZScsICdlcnJvci5QT1NJVElPTl9VTkFWQUlMQUJM
RScpOwogICAgIHNob3VsZEJlKCdlcnJvci5tZXNzYWdlJywgJ21vY2tNZXNzYWdlJyk7CiAgICAg
ZGVidWcoJycpOwogfQpAQCAtNDIsNyArNDEsNyBAQCBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24ud2F0
Y2hQb3NpdGlvbihmdW5jdGlvbihwKSB7CiAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgIGNo
ZWNrUG9zaXRpb24ocCk7CiAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAg
ICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRNb2NrR2VvbG9jYXRpb25FcnJvcihtb2NrQ29kZSwg
bW9ja01lc3NhZ2UpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0TW9ja0dlb2xvY2F0
aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKG1vY2tNZXNzYWdlKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICBjaGVja1Bvc2l0aW9uKHApOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vd2F0Y2gtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vd2F0Y2gtZXhwZWN0ZWQudHh0
CmluZGV4IGEwNDM0NTU2ZjJiZjA1NWE5M2RjNzM1YjNiYTNhZTY4OGQ1ZTE3ZjguLjRjNzVmMDhl
NTM3M2VkY2I5ZTVhMTAyMzBmNjY3NzBkYTY4NjYzNTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3dhdGNoLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi93YXRjaC1leHBlY3RlZC50eHQKQEAgLTExLDcgKzExLDcg
QEAgUEFTUyBwb3NpdGlvbi5jb29yZHMubGF0aXR1ZGUgaXMgbW9ja0xhdGl0dWRlCiBQQVNTIHBv
c2l0aW9uLmNvb3Jkcy5sb25naXR1ZGUgaXMgbW9ja0xvbmdpdHVkZQogUEFTUyBwb3NpdGlvbi5j
b29yZHMuYWNjdXJhY3kgaXMgbW9ja0FjY3VyYWN5CiAKLVBBU1MgZXJyb3IuY29kZSBpcyBtb2Nr
Q29kZQorUEFTUyBlcnJvci5jb2RlIGlzIGVycm9yLlBPU0lUSU9OX1VOQVZBSUxBQkxFCiBQQVNT
IGVycm9yLm1lc3NhZ2UgaXMgbW9ja01lc3NhZ2UKIAogUEFTUyBwb3NpdGlvbi5jb29yZHMubGF0
aXR1ZGUgaXMgbW9ja0xhdGl0dWRlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165250</attachid>
            <date>2012-09-21 23:59:53 -0700</date>
            <delta_ts>2012-09-24 12:21:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97386-20120921235917.patch</filename>
            <type>text/plain</type>
            <size>65338</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5Mjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzE3ZDU1MjQ4MjEwOWI0
ZWJhM2ZhZTdiNGRkZjk0MWM2MTFkYWM0ZS4uMDc4ZWY2YmJmMmRkYWViZmM4MTQwOGI2YWM0ODQw
YzYzYWQ4MWY5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTA5LTIxICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCBHZW9sb2Nh
dGlvbiBlcnJvciByZXBvcnRpbmcgaW4gdGhlIHRlc3Qgc3VwcG9ydAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTczODYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHZW9sb2NhdGlvbkNvbnRyb2xsZXIgY3Vy
cmVudGx5IGV4cG9zZSBHZW9sb2NhdGlvbkVycm9yIHdoaWNoIGNhbiBiZSBlaXRoZXIKKyAgICAg
ICAgUGVybWlzc2lvbkRlbmllZCBvciBQb3NpdGlvblVuYXZhaWxhYmxlLgorCisgICAgICAgIElu
IHByYWN0aWNlLCBvbmx5IFBvc2l0aW9uVW5hdmFpbGFibGUgaXMgc3VwcG9ydGVkIGFuZCB0ZXN0
ZWQsIG9ubHkgQ2hyb21lCisgICAgICAgIHNvbWV3aGF0IGV4cG9zZSBQZXJtaXNzaW9uRGVuaWVk
LgorICAgICAgICBUaGUgY29ycmVjdCB3YXkgdG8gZGVueSB0aGUgcGVybWlzc2lvbiBpcyB0aHJv
dWdoIEdlb2xvY2F0aW9uOjpzZXRJc0FsbG93ZWQoKS4KKworICAgICAgICBUaGlzIHBhdGNoIGRv
ZXMgc29tZSBvZiB0aGUgaW5pdGlhbCBjbGVhbnVwIHRvd2FyZCB0aGF0IGdvYWwsIHJlZHVjaW5n
IGhvdworICAgICAgICBmYXIgR2VvbG9jYXRpb25FcnJvciBpcyBzcHJlYWQuCisKKyAgICAgICAg
KiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgIE1hYyBkb2VzIG5vdCB1c2UgR2VvbG9jYXRpb25DbGllbnRNb2NrLCBp
dCBzaG91bGQgbm90IGJlIGNvbXBpbGVkIGluIFdlYkNvcmUuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW9s
b2NhdGlvbkNsaWVudE1vY2s6Okdlb2xvY2F0aW9uQ2xpZW50TW9jayk6CisgICAgICAgIChXZWJD
b3JlOjpHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnNldFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6Okdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2
YWlsYWJsZUVycm9yKToKKyAgICAgICAgVGhpcyBtZXRob2QgcmVwbGFjZSBzZXRFcnJvcigpLiBJ
dCBpcyBsaW1pdGVkIHRvIFBvc2l0aW9uVW5hdmFpbGFibGUgZXJyb3JzLgorCisgICAgICAgIChX
ZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6
Okdlb2xvY2F0aW9uQ2xpZW50TW9jazo6Y29udHJvbGxlclRpbWVyRmlyZWQpOgorICAgICAgICAo
V2ViQ29yZTo6R2VvbG9jYXRpb25DbGllbnRNb2NrOjpjbGVhckVycm9yKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5oOgorICAgICAgICAoR2VvbG9jYXRp
b25DbGllbnRNb2NrKToKKwogMjAxMi0wOS0yMSAgQ2hyaXMgUm9nZXJzICA8Y3JvZ2Vyc0Bnb29n
bGUuY29tPgogCiAgICAgICAgIEJpcXVhZEZpbHRlck5vZGUgbXVzdCB0YWtlIGF1ZGlvLXJhdGUg
cGFyYW1ldGVyIGNoYW5nZXMgaW50byBhY2NvdW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxv
ZwppbmRleCBlZDU2ODc4NDM5YjI5YzFmNDgwYWFhNmZhOWFhN2ZjMTA0NTc2OWMzLi5kNzc2NWE3
NGY4MjU1OTRjYzBmNjYzYjE1ZDEwYjE3ZDg2OGE2OWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wOS0yMSAgQmVuamFtaW4gUG91bGFpbiAg
PGJwb3VsYWluQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggR2VvbG9jYXRpb24gZXJyb3IgcmVw
b3J0aW5nIGluIHRoZSB0ZXN0IHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk3Mzg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5j
cHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnQ6OnNldE1vY2tHZW9sb2NhdGlvblBv
c2l0aW9uVW5hdmFpbGFibGVFcnJvcik6CisgICAgICAgICogV2ViS2l0U3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnQuaDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydCk6CisKIDIw
MTItMDktMjEgIExpYW5naHVpIENoZW4gIDxsaWFjaGVuQHJpbS5jb20+CiAKICAgICAgICAgW0Js
YWNrQmVycnldIFJlYWxseSBmaXggYnVnIDk1NDg4IHRoYXQgdXNlciBjYW4gZ2V0IHRoZSBhdXRo
ZW50aWNhdGlvbiBjaGFsbGVuZ2UgZGlhbG9nIHdoaWxlIHRoZSBvdGhlciB0YWIgaGFzIGZvY3Vz
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA3NzFmMTQ3ZGZjYzI1NzY1ZTRhOGY4ZDlh
NWVlNzE5OWQzZjBiMGI1Li5kNmQzNWZkM2U1YzViNjI4YjQyZjcxZmU3NTliMzE2OTg3YmEyMjQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA5LTIx
ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCBH
ZW9sb2NhdGlvbiBlcnJvciByZXBvcnRpbmcgaW4gdGhlIHRlc3Qgc3VwcG9ydAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTczODYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHB1YmxpYy9XZWJHZW9sb2Nh
dGlvbkNsaWVudE1vY2suaDoKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9jayk6Cisg
ICAgICAgICogc3JjL1dlYkdlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25V
bmF2YWlsYWJsZUVycm9yKToKKwogMjAxMi0wOS0yMSAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNo
aUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBVc2UgT3BlblR5cGVWZXJ0aWNh
bERhdGEgb24gTGludXgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCBjMWFmYTUzZWRjOWI1MGI1MjFmOWQz
MGRhMjdhZmFiZjg5NDRhNjJmLi5hZTc5Mzg2NzEzNTFkYmRjZDNmNTJmYmI4Y2Y2NGQ4Y2ZiMDkz
MTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDktMjEgIEJlbmph
bWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IEdlb2xvY2F0
aW9uIGVycm9yIHJlcG9ydGluZyBpbiB0aGUgdGVzdCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzM4NgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0R3RrLmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6
c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaDoKKyAgICAgICAgKER1bXBS
ZW5kZXJUcmVlU3VwcG9ydEd0ayk6CisKIDIwMTItMDktMTkgIERhbmlsbyBDZXNhciBMZW1lcyBk
ZSBQYXVsYSAgPGRhbmlsby5jZXNhckBjb2xsYWJvcmEuY28udWs+CiAKICAgICAgICAgW2d0a10g
YWRkIGVuYWJsZS1tZWRpYS1zdHJlYW0gdG8gd2Vic2V0dGluZ3MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRl
eCAxYTFmYzE1OTE2MTg4ODRlYjUyOWFjOTExNDlhOTc5NDhmOTkwYjQ1Li4wOGQ5YjUxNWEzYTZh
ZGYxOGZiYTRmMDJjN2U5MmFiMDY5ZWJlYjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMTItMDktMjEgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+
CisKKyAgICAgICAgRml4IEdlb2xvY2F0aW9uIGVycm9yIHJlcG9ydGluZyBpbiB0aGUgdGVzdCBz
dXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
NzM4NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9nZW9sb2NhdGlvbkRpZEZh
aWxXaXRoTWVzc2FnZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdQcml2YXRlLmg6CisK
IDIwMTItMDktMjEgIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xlLmNvbT4KIAogICAgICAg
ICBBZGQgV2ViIEF1ZGlvIHN1cHBvcnQgZm9yIGRlcHJlY2F0ZWQvbGVnYWN5IEFQSXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFu
Z2VMb2cKaW5kZXggNWFhNjJmMTc5MTQwMGU3MjdjZjhhYjA0MGZhMDA3OWRiODI4YmUzZi4uMTI4
NmMwZjkwMjBkMGJiMTY3NmJmYjExYzhkOWNkMDg5YTA4NDAyYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNCBAQAorMjAxMi0wOS0yMSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFw
cGxlLmNvbT4KKworICAgICAgICBGaXggR2VvbG9jYXRpb24gZXJyb3IgcmVwb3J0aW5nIGluIHRo
ZSB0ZXN0IHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk3Mzg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAg
ICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25V
bmF2YWlsYWJsZUVycm9yKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnRRdC5oOgorCiAyMDEyLTA5LTIwICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdl
YmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBFbmFibGUgQ1NTIHJlZ2lvbnMgYnkgZGVmYXVsdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgppbmRleCBkZmY4MzBkNTAzODQ5MmZkMmRlNDEwY2YyNWY4MzI5Mzcy
MjAxMDM4Li44MTUzMDM5Zjk1Yzk5ZGM3ZDgyMDMyYzlkNmVhYzZlNmMzMTAyMGRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgpAQCAtMjE5MSw3ICsyMTkxLDYgQEAgX19aTjdXZWJDb3JlMTFHZW9sb2Nh
dGlvbjEyc2V0SXNBbGxvd2VkRWIKIF9fWk43V2ViQ29yZTExR2VvbG9jYXRpb25EMUV2CiBfX1pO
SzdXZWJDb3JlMTFHZW9sb2NhdGlvbjVmcmFtZUV2CiBfX1pON1dlYkNvcmUyMHByb3ZpZGVHZW9s
b2NhdGlvblRvRVBOU180UGFnZUVQTlNfMTdHZW9sb2NhdGlvbkNsaWVudEUKLV9fWk43V2ViQ29y
ZTIxR2VvbG9jYXRpb25DbGllbnRNb2NrMTNzZXRQZXJtaXNzaW9uRWIKIF9fWk43V2ViQ29yZTIx
R2VvbG9jYXRpb25Db250cm9sbGVyMTNlcnJvck9jY3VycmVkRVBOU18xNkdlb2xvY2F0aW9uRXJy
b3JFCiBfX1pON1dlYkNvcmUyMUdlb2xvY2F0aW9uQ29udHJvbGxlcjE0c3VwcGxlbWVudE5hbWVF
dgogX19aTjdXZWJDb3JlMjFHZW9sb2NhdGlvbkNvbnRyb2xsZXIxNXBvc2l0aW9uQ2hhbmdlZEVQ
TlNfMTlHZW9sb2NhdGlvblBvc2l0aW9uRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDdhMjVlYWE4ODE0YWQ0ODU3MzMxYTZjNTNh
NzY2MzY2Y2QzYzIyZGMuLmQ5NTQxZThiNWQ4NjI1Yzk4Mjk4ODI0YzFiNjZjNTFkZDM4OTc4NTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTc2LDggKzc2LDYgQEAKIAkJMDMzQTZBN0UxNDdFMDdFNzAwNTA5QjM2IC8qIEhUTUxQ
cm9wZXJ0aWVzQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwMzNBNkE3RDE0N0UwN0U3MDA1MDlCMzYgLyogSFRNTFByb3BlcnRpZXND
b2xsZWN0aW9uLmNwcCAqLzsgfTsKIAkJMDMzQTZBODExNDdFMDg4NjAwNTA5QjM2IC8qIEpTSFRN
TFByb3BlcnRpZXNDb2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDAzM0E2QTgwMTQ3RTA4ODYwMDUwOUIzNiAvKiBKU0hUTUxQcm9wZXJ0
aWVzQ29sbGVjdGlvbi5jcHAgKi87IH07CiAJCTAzM0E2QTgzMTQ3RTA4QTYwMDUwOUIzNiAvKiBK
U0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDMzQTZBODIxNDdFMDhBNjAwNTA5QjM2IC8qIEpTSFRNTFByb3Bl
cnRpZXNDb2xsZWN0aW9uLmggKi87IH07Ci0JCTA1MkJGQ0U5MTI4QUJGMTUwMEZEMzM4RCAvKiBH
ZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDUyQkZDRTgxMjhBQkYxNTAwRkQzMzhEIC8qIEdlb2xvY2F0aW9uQ2xp
ZW50TW9jay5jcHAgKi87IH07Ci0JCTA1MkJGQ0VCMTI4QUJGMjEwMEZEMzM4RCAvKiBHZW9sb2Nh
dGlvbkNsaWVudE1vY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA1MkJGQ0VBMTI4QUJGMjEwMEZEMzM4RCAvKiBHZW9sb2NhdGlvbkNsaWVudE1vY2su
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwNTYy
Rjk0NjE1NzNFQ0VCMDAzMUNBMTYgLyogV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNTYyRjk0NDE1NzNF
Q0VCMDAzMUNBMTYgLyogV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5jcHAgKi87IH07CiAJCTA1
NjJGOTQ3MTU3M0VDRUIwMDMxQ0ExNiAvKiBXZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNTYyRjk0NTE1NzNF
Q0VCMDAzMUNBMTYgLyogV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5oICovOyB9OwogCQkwNTYy
Rjk2MTE1NzNGODhGMDAzMUNBMTYgLyogUGxhdGZvcm1MYXllci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDU2MkY5NjAxNTczRjg4RjAwMzFDQTE2IC8q
IFBsYXRmb3JtTGF5ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtNzA4OCw4ICs3MDg2LDYgQEAKIAkJMDMzQTZBN0YxNDdFMDdGOTAwNTA5QjM2
IC8qIEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
SFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDMzQTZBODAxNDdFMDg4NjAwNTA5QjM2IC8qIEpTSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9u
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTFByb3BlcnRp
ZXNDb2xsZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDMzQTZBODIx
NDdFMDhBNjAwNTA5QjM2IC8qIEpTSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA1MkJGQ0U4MTI4QUJGMTUwMEZEMzM4RCAvKiBH
ZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcDsgcGF0aCA9IG1vY2svR2VvbG9jYXRpb25D
bGllbnRNb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDUyQkZDRUExMjhB
QkYyMTAwRkQzMzhEIC8qIEdlb2xvY2F0aW9uQ2xpZW50TW9jay5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBHZW9sb2NhdGlvbkNsaWVudE1vY2suaDsgcGF0aCA9IG1vY2svR2Vv
bG9jYXRpb25DbGllbnRNb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA1NjJG
OTQ0MTU3M0VDRUIwMDMxQ0ExNiAvKiBXZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYktpdENTU1NWR0RvY3VtZW50VmFs
dWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNTYyRjk0NTE1NzNFQ0VCMDAz
MUNBMTYgLyogV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA1NjJGOTYwMTU3M0Y4OEYwMDMxQ0ExNiAvKiBQbGF0Zm9ybUxheWVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtTGF5ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NDYxLDggKzE1NDU3LDYgQEAKIAkJCWNoaWxk
cmVuID0gKAogCQkJCTU5MzA5QTEwMTFGNEFFNTgwMDI1MDYwMyAvKiBEZXZpY2VPcmllbnRhdGlv
bkNsaWVudE1vY2suY3BwICovLAogCQkJCTU5MzA5QTEyMTFGNEFFNkEwMDI1MDYwMyAvKiBEZXZp
Y2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCAqLywKLQkJCQkwNTJCRkNFODEyOEFCRjE1MDBGRDMz
OEQgLyogR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcCAqLywKLQkJCQkwNTJCRkNFQTEyOEFCRjIx
MDBGRDMzOEQgLyogR2VvbG9jYXRpb25DbGllbnRNb2NrLmggKi8sCiAJCQkJMEZFNzE0MDMxNDIx
NzBCODAwREIzM0JBIC8qIFNjcm9sbGJhclRoZW1lTW9jay5jcHAgKi8sCiAJCQkJMEZFNzE0MDQx
NDIxNzBCODAwREIzM0JBIC8qIFNjcm9sbGJhclRoZW1lTW9jay5oICovLAogCQkJKTsKQEAgLTIz
NTIxLDcgKzIzNTE1LDYgQEAKIAkJCQkwNzIwQjBBMTE0RDMzMjM1MDA2NDI5NTUgLyogR2VuZXJp
Y0V2ZW50UXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NDZBRjI0MTRGNERERTYwMDNFN0E3
MCAvKiBHZW9sb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1NkNCMjMxMEQ1QUM4MDAw
QTc3QzY0IC8qIEdlb2xvY2F0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQkwNTJCRkNF
QjEyOEFCRjIxMDBGRDMzOEQgLyogR2VvbG9jYXRpb25DbGllbnRNb2NrLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5NzQ2QUYyNzE0RjREREU2MDAzRTdBNzAgLyogR2VvbG9jYXRpb25Db250cm9sbGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzQ2QUYyODE0RjREREU2MDAzRTdBNzAgLyogR2VvbG9j
YXRpb25FcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0NkFGMjkxNEY0RERFNjAwM0U3QTcw
IC8qIEdlb2xvY2F0aW9uUG9zaXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjY3NTMsNyArMjY3
NDYsNiBAQAogCQkJCTJENDgxRjAzMTQ2QjVDNjUwMEFBNzgzNCAvKiBHZW5lcmF0b3JHZW5lcmF0
ZWRJbWFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzIwQjBBMDE0RDMzMjM1MDA2NDI5NTUg
LyogR2VuZXJpY0V2ZW50UXVldWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc0NkFGMjMxNEY0
RERFNjAwM0U3QTcwIC8qIEdlb2xvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTA1MkJG
Q0U5MTI4QUJGMTUwMEZEMzM4RCAvKiBHZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTc0NkFGMjYxNEY0RERFNjAwM0U3QTcwIC8qIEdlb2xvY2F0aW9uQ29udHJv
bGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzIwQjBBMDE0RDMzMjM1MDA2NDI5NTYgLyog
R2VzdHVyZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyQzNEQTZEMEQwMDZDRDYwMEVG
NkYyNiAvKiBHbHlwaFBhZ2VUcmVlTm9kZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcApp
bmRleCAyNzZiNGEzNDMwOWM5Mjk4YThmODViZDhkNjY5ZGIxMTlkYzkxNDE4Li4zODNiZjk4ZTMx
YzI4NTNlMzcwOGI2YjYxNmNjYWE0MWJlNmRjZDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwCkBAIC0xLDUgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTQxLDYgKzQyLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBHZW9sb2NhdGlvbkNsaWVudE1vY2s6Okdlb2xvY2F0
aW9uQ2xpZW50TW9jaygpCiAgICAgOiBtX2NvbnRyb2xsZXIoMCkKKyAgICAsIG1faGFzRXJyb3Io
ZmFsc2UpCiAgICAgLCBtX2NvbnRyb2xsZXJUaW1lcih0aGlzLCAmR2VvbG9jYXRpb25DbGllbnRN
b2NrOjpjb250cm9sbGVyVGltZXJGaXJlZCkKICAgICAsIG1fcGVybWlzc2lvblRpbWVyKHRoaXMs
ICZHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnBlcm1pc3Npb25UaW1lckZpcmVkKQogICAgICwgbV9p
c0FjdGl2ZShmYWxzZSkKQEAgLTYyLDE0ICs2NCwxNSBAQCB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50
TW9jazo6c2V0Q29udHJvbGxlcihHZW9sb2NhdGlvbkNvbnRyb2xsZXIgKmNvbnRyb2xsZXIpCiB2
b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0UG9zaXRpb24oUGFzc1JlZlB0cjxHZW9sb2Nh
dGlvblBvc2l0aW9uPiBwb3NpdGlvbikKIHsKICAgICBtX2xhc3RQb3NpdGlvbiA9IHBvc2l0aW9u
OwotICAgIG1fbGFzdEVycm9yID0gMDsKKyAgICBjbGVhckVycm9yKCk7CiAgICAgYXN5bmNVcGRh
dGVDb250cm9sbGVyKCk7CiB9CiAKLXZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjpzZXRFcnJv
cihQYXNzUmVmUHRyPEdlb2xvY2F0aW9uRXJyb3I+IGVycm9yKQordm9pZCBHZW9sb2NhdGlvbkNs
aWVudE1vY2s6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKLSAgICBtX2xhc3RFcnJvciA9IGVycm9yOwotICAg
IG1fbGFzdFBvc2l0aW9uID0gMDsKKyAgICBtX2hhc0Vycm9yID0gdHJ1ZTsKKyAgICBtX2Vycm9y
TWVzc2FnZSA9IGVycm9yTWVzc2FnZTsKKyAgICBtX2xhc3RQb3NpdGlvbiA9IG51bGxwdHI7CiAg
ICAgYXN5bmNVcGRhdGVDb250cm9sbGVyKCk7CiB9CiAKQEAgLTEyNSw3ICsxMjgsNyBAQCB2b2lk
IEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6cGVybWlzc2lvblRpbWVyRmlyZWQoV2ViQ29yZTo6VGlt
ZXI8R2VvbG9jYXRpb25DbGllbgogdm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnJlc2V0KCkK
IHsKICAgICBtX2xhc3RQb3NpdGlvbiA9IDA7Ci0gICAgbV9sYXN0RXJyb3IgPSAwOworICAgIGNs
ZWFyRXJyb3IoKTsKICAgICBtX3Blcm1pc3Npb25TdGF0ZSA9IFBlcm1pc3Npb25TdGF0ZVVuc2V0
OwogfQogCkBAIC0xNzEsMTAgKzE3NCwxOSBAQCB2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6
Y29udHJvbGxlclRpbWVyRmlyZWQoVGltZXI8R2VvbG9jYXRpb25DbGllbnRNb2NrPiogdAogICAg
IEFTU0VSVF9VTlVTRUQodGltZXIsIHRpbWVyID09ICZtX2NvbnRyb2xsZXJUaW1lcik7CiAgICAg
QVNTRVJUKG1fY29udHJvbGxlcik7CiAKLSAgICBpZiAobV9sYXN0UG9zaXRpb24uZ2V0KCkpCisg
ICAgaWYgKG1fbGFzdFBvc2l0aW9uLmdldCgpKSB7CisgICAgICAgIEFTU0VSVCghbV9oYXNFcnJv
cik7CiAgICAgICAgIG1fY29udHJvbGxlci0+cG9zaXRpb25DaGFuZ2VkKG1fbGFzdFBvc2l0aW9u
LmdldCgpKTsKLSAgICBlbHNlIGlmIChtX2xhc3RFcnJvci5nZXQoKSkKLSAgICAgICAgbV9jb250
cm9sbGVyLT5lcnJvck9jY3VycmVkKG1fbGFzdEVycm9yLmdldCgpKTsKKyAgICB9IGVsc2UgaWYg
KG1faGFzRXJyb3IpIHsKKyAgICAgICAgUmVmUHRyPEdlb2xvY2F0aW9uRXJyb3I+IGdlb2xvY2F0
aW9FcnJvciA9IEdlb2xvY2F0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvbkVycm9yOjpQb3Np
dGlvblVuYXZhaWxhYmxlLCBtX2Vycm9yTWVzc2FnZSk7CisgICAgICAgIG1fY29udHJvbGxlci0+
ZXJyb3JPY2N1cnJlZChnZW9sb2NhdGlvRXJyb3IuZ2V0KCkpOworICAgIH0KK30KKwordm9pZCBH
ZW9sb2NhdGlvbkNsaWVudE1vY2s6OmNsZWFyRXJyb3IoKQoreworICAgIG1faGFzRXJyb3IgPSBm
YWxzZTsKKyAgICBtX2Vycm9yTWVzc2FnZSA9IFN0cmluZygpOwogfQogCiB9IC8vIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGll
bnRNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50
TW9jay5oCmluZGV4IDhhYmQ1ZTk3MGU4YzA4OTMwZmExYTVhMzM3MjRmMzlhZDgwZjA1OGUuLjc5
MjAxMzIwM2E1Yjk3MTRkZTEwOGRlNjE3ZGNhYWJiMDYxYjAwNzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaApAQCAtMSw1
ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC00Miw5ICs0
Myw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR2VvbG9jYXRpb25Db250cm9sbGVy
OwogY2xhc3MgR2VvbG9jYXRpb25Qb3NpdGlvbjsKLWNsYXNzIEdlb2xvY2F0aW9uRXJyb3I7CiAK
LS8vIFByb3ZpZGVzIGEgbW9jayBvYmplY3QgZm9yIHRoZSBnZW9sb2NhdGlvbiBjbGllbnQKKy8v
IEZJWE1FOiB0aGlzIHNob3VsZCBub3QgYmUgaW4gV2ViQ29yZS4gSXQgc2hvdWxkIGJlIG1vdmVk
IHRvIFdlYktpdC4KKy8vIFByb3ZpZGVzIGEgbW9jayBvYmplY3QgZm9yIHRoZSBnZW9sb2NhdGlv
biBjbGllbnQuCiBjbGFzcyBHZW9sb2NhdGlvbkNsaWVudE1vY2sgOiBwdWJsaWMgR2VvbG9jYXRp
b25DbGllbnQgewogcHVibGljOgogICAgIEdlb2xvY2F0aW9uQ2xpZW50TW9jaygpOwpAQCAtNTMs
OCArNTQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldCgpOwogICAgIHZvaWQgc2V0Q29udHJv
bGxlcihHZW9sb2NhdGlvbkNvbnRyb2xsZXIqKTsKIAotICAgIHZvaWQgc2V0RXJyb3IoUGFzc1Jl
ZlB0cjxHZW9sb2NhdGlvbkVycm9yPik7CiAgICAgdm9pZCBzZXRQb3NpdGlvbihQYXNzUmVmUHRy
PEdlb2xvY2F0aW9uUG9zaXRpb24+KTsKKyAgICB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0
aW9uVW5hdmFpbGFibGVFcnJvcihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CiAgICAgdm9p
ZCBzZXRQZXJtaXNzaW9uKGJvb2wgYWxsb3dlZCk7CiAgICAgaW50IG51bWJlck9mUGVuZGluZ1Bl
cm1pc3Npb25SZXF1ZXN0cygpIGNvbnN0OwogCkBAIC03NCw5ICs3NSwxMiBAQCBwcml2YXRlOgog
ICAgIHZvaWQgYXN5bmNVcGRhdGVQZXJtaXNzaW9uKCk7CiAgICAgdm9pZCBwZXJtaXNzaW9uVGlt
ZXJGaXJlZChUaW1lcjxHZW9sb2NhdGlvbkNsaWVudE1vY2s+Kik7CiAKKyAgICB2b2lkIGNsZWFy
RXJyb3IoKTsKKwogICAgIEdlb2xvY2F0aW9uQ29udHJvbGxlciogbV9jb250cm9sbGVyOwogICAg
IFJlZlB0cjxHZW9sb2NhdGlvblBvc2l0aW9uPiBtX2xhc3RQb3NpdGlvbjsKLSAgICBSZWZQdHI8
R2VvbG9jYXRpb25FcnJvcj4gbV9sYXN0RXJyb3I7CisgICAgYm9vbCBtX2hhc0Vycm9yOworICAg
IFN0cmluZyBtX2Vycm9yTWVzc2FnZTsKICAgICBUaW1lcjxHZW9sb2NhdGlvbkNsaWVudE1vY2s+
IG1fY29udHJvbGxlclRpbWVyOwogICAgIFRpbWVyPEdlb2xvY2F0aW9uQ2xpZW50TW9jaz4gbV9w
ZXJtaXNzaW9uVGltZXI7CiAgICAgYm9vbCBtX2lzQWN0aXZlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydC5jcHAKaW5kZXggZTRlNGVmMGMwN2Q2ZWEwYWMzNTVjZDkyNmQyYWY1NDg3N2YxYzAz
My4uYTI2ZjAzZDQxY2Q3MmEzMWUxZDIxYmE1YTgwZThlOWZmMTU1N2EzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBw
b3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnQuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAg
KgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYwpAQCAtOTUsMjAgKzk2LDEwIEBAIHZvaWQgRHVtcFJlbmRlclRyZWVT
dXBwb3J0OjpyZXNldEdlb2xvY2F0aW9uTW9jayhXZWJQYWdlKiB3ZWJQYWdlKQogICAgIG1vY2tD
bGllbnQtPnJlc2V0KCk7CiB9CiAKLXZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0OjpzZXRNb2Nr
R2VvbG9jYXRpb25FcnJvcihXZWJQYWdlKiB3ZWJQYWdlLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBT
dHJpbmcgbWVzc2FnZSkKK3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0OjpzZXRNb2NrR2VvbG9j
YXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoV2ViUGFnZSogd2ViUGFnZSwgY29uc3QgU3Ry
aW5nIG1lc3NhZ2UpCiB7Ci0gICAgR2VvbG9jYXRpb25FcnJvcjo6RXJyb3JDb2RlIGNvZGUgPSBH
ZW9sb2NhdGlvbkVycm9yOjpQb3NpdGlvblVuYXZhaWxhYmxlOwotICAgIHN3aXRjaCAoZXJyb3JD
b2RlKSB7Ci0gICAgY2FzZSBQb3NpdGlvbkVycm9yOjpQRVJNSVNTSU9OX0RFTklFRDoKLSAgICAg
ICAgY29kZSA9IEdlb2xvY2F0aW9uRXJyb3I6OlBlcm1pc3Npb25EZW5pZWQ7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgUG9zaXRpb25FcnJvcjo6UE9TSVRJT05fVU5BVkFJTEFCTEU6Ci0gICAg
ICAgIGNvZGUgPSBHZW9sb2NhdGlvbkVycm9yOjpQb3NpdGlvblVuYXZhaWxhYmxlOwotICAgICAg
ICBicmVhazsKLSAgICB9Ci0KICAgICBHZW9sb2NhdGlvbkNsaWVudE1vY2sqIG1vY2tDbGllbnQg
PSBzdGF0aWNfY2FzdDxHZW9sb2NhdGlvbkNsaWVudE1vY2sqPihHZW9sb2NhdGlvbkNvbnRyb2xs
ZXI6OmZyb20oY29yZVBhZ2Uod2ViUGFnZSkpLT5jbGllbnQoKSk7Ci0gICAgbW9ja0NsaWVudC0+
c2V0RXJyb3IoR2VvbG9jYXRpb25FcnJvcjo6Y3JlYXRlKGNvZGUsIG1lc3NhZ2UpKTsKKyAgICBt
b2NrQ2xpZW50LT5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IobWVz
c2FnZSk7CiB9CiAKIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0OjpzZXRNb2NrR2VvbG9jYXRp
b25QZXJtaXNzaW9uKFdlYlBhZ2UqIHdlYlBhZ2UsIGJvb2wgYWxsb3dlZCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydC5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0LmgKaW5kZXggNThmYzFiNTNlZGI1ZDhhYWMwZDM4MjYwNTY1YWM0NzAyMWVh
MjVlNi4uMDFmZTRmODNhN2YyZWFiMGUxMjk4NzBhOWRkY2YxODhlODgyMTg4OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0LmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0LmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAq
CiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljCkBAIC01Miw3ICs1Myw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBp
bnQgbnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMoQmxhY2tCZXJy
eTo6V2ViS2l0OjpXZWJQYWdlKik7CiAgICAgc3RhdGljIHZvaWQgcmVzZXRHZW9sb2NhdGlvbk1v
Y2soQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlKik7Ci0gICAgc3RhdGljIHZvaWQgc2V0TW9j
a0dlb2xvY2F0aW9uRXJyb3IoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlKiwgaW50IGVycm9y
Q29kZSwgY29uc3QgV1RGOjpTdHJpbmcgbWVzc2FnZSk7CisgICAgc3RhdGljIHZvaWQgc2V0TW9j
a0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKEJsYWNrQmVycnk6OldlYktpdDo6
V2ViUGFnZSosIGNvbnN0IFdURjo6U3RyaW5nIG1lc3NhZ2UpOwogICAgIHN0YXRpYyB2b2lkIHNl
dE1vY2tHZW9sb2NhdGlvblBlcm1pc3Npb24oQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlKiwg
Ym9vbCBhbGxvd2VkKTsKICAgICBzdGF0aWMgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlv
bihCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2UqLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBs
b25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSk7CiAgICAgc3RhdGljIHZvaWQgc2NhbGVQYWdlQnko
QmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlKiwgZmxvYXQsIGZsb2F0LCBmbG9hdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHZW9sb2NhdGlvbkNsaWVu
dE1vY2suaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0aW9uQ2xp
ZW50TW9jay5oCmluZGV4IDA1MmE1NDZhZGNjMmQxZWJiZDIyNGI2ZDc3NDU0NmY3N2FjYzU1YWUu
LjdlZmYyYmEwZGMzZGNjNWVlNjJmN2Q4MDE5YTIwODU5MTgzZDVmMTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0aW9uQ2xpZW50TW9jay5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0aW9uQ2xpZW50TW9j
ay5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB+V2ViR2VvbG9jYXRpb25DbGllbnRN
b2NrKCkgeyByZXNldCgpOyB9CiAKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UG9zaXRpb24o
ZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kpOwotICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBzZXRFcnJvcihpbnQgZXJyb3JDb2RlLCBjb25zdCBXZWJTdHJp
bmcmIG1lc3NhZ2UpOworICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Q
b3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlKTsKICAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgc2V0UGVybWlzc2lvbihib29sKTsKICAgICBXRUJLSVRfRVhQT1JU
IGludCBudW1iZXJPZlBlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdHMoKSBjb25zdDsKICAgICBXRUJL
SVRfRVhQT1JUIHZvaWQgcmVzZXRNb2NrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJHZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcAppbmRleCAzZDk2MzA3MDdm
ZWI1YjYzZjAzZTNlMjQxOWIyZTMwNWFmOGQwMjEyLi5kYTRhMmZjYzYyNTFlZTA0YTA5MzYzOTQz
ZDQzYTk4YjRmNjkxMjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJHZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkdlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNs
dWRlICJXZWJHZW9sb2NhdGlvbkVycm9yLmgiCiAjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdC5oIgogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uUG9zaXRpb24uaCIKKyNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKQEAgLTU4LDIzICs1OSw5IEBAIHZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpzZXRQ
b3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvCiAgICAgbV9jbGll
bnRNb2NrLT5zZXRQb3NpdGlvbih3ZWJQb3NpdGlvbik7CiB9CiAKLXZvaWQgV2ViR2VvbG9jYXRp
b25DbGllbnRNb2NrOjpzZXRFcnJvcihpbnQgZXJyb3JDb2RlLCBjb25zdCBXZWJTdHJpbmcmIG1l
c3NhZ2UpCit2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0TW9ja0dlb2xvY2F0aW9u
UG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSkKIHsKLSAg
ICBXZWJHZW9sb2NhdGlvbkVycm9yOjpFcnJvciBjb2RlOwotICAgIHN3aXRjaCAoZXJyb3JDb2Rl
KSB7Ci0gICAgY2FzZSBQb3NpdGlvbkVycm9yOjpQRVJNSVNTSU9OX0RFTklFRDoKLSAgICAgICAg
Y29kZSA9IFdlYkdlb2xvY2F0aW9uRXJyb3I6OkVycm9yUGVybWlzc2lvbkRlbmllZDsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBQb3NpdGlvbkVycm9yOjpQT1NJVElPTl9VTkFWQUlMQUJMRToK
LSAgICAgICAgY29kZSA9IFdlYkdlb2xvY2F0aW9uRXJyb3I6OkVycm9yUG9zaXRpb25VbmF2YWls
YWJsZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBXZWJHZW9sb2NhdGlvbkVy
cm9yIHdlYkVycm9yKGNvZGUsIG1lc3NhZ2UpOwotICAgIG1fY2xpZW50TW9jay0+c2V0RXJyb3Io
d2ViRXJyb3IpOworICAgIG1fY2xpZW50TW9jay0+c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25V
bmF2YWlsYWJsZUVycm9yKG1lc3NhZ2UpOwogfQogCiB2b2lkIFdlYkdlb2xvY2F0aW9uQ2xpZW50
TW9jazo6c2V0UGVybWlzc2lvbihib29sIGFsbG93ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwIGIvU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNw
cAppbmRleCBlNWQ2OTg5ZDFkOTU3NTM3MjY2NDM4NjI4NzAzMWJlMTgyYjkxOThkLi5kZTdmZDM5
ZTc1ZWU1MGFmNGQyNzk3ZTk2YzFkOWQ3MGFkOTVkOTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0
ay5jcHAKQEAgLTMsNiArMyw3IEBACiAgKiAgQ29weXJpZ2h0IChDKSAyMDEwIEpvb25lIEh1ciA8
am9vbmVAa2xkcC5vcmc+CiAgKiAgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisgKiAg
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAg
KiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKQEAgLTY1OCwyMyArNjU5LDExIEBAIHZvaWQgRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3CiAjZW5kaWYKIH0KIAotdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldE1vY2tH
ZW9sb2NhdGlvbkVycm9yKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGludCBlcnJvckNvZGUsIGNv
bnN0IGdjaGFyKiBlcnJvck1lc3NhZ2UpCit2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6
c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcsIGNvbnN0IGdjaGFyKiBlcnJvck1lc3NhZ2UpCiB7CiAjaWYgRU5BQkxFKEdFT0xP
Q0FUSU9OKQogICAgIEdlb2xvY2F0aW9uQ2xpZW50TW9jayogbW9jayA9IHN0YXRpY19jYXN0PEdl
b2xvY2F0aW9uQ2xpZW50TW9jayo+KEdlb2xvY2F0aW9uQ29udHJvbGxlcjo6ZnJvbShjb3JlKHdl
YlZpZXcpKS0+Y2xpZW50KCkpOwotCi0gICAgR2VvbG9jYXRpb25FcnJvcjo6RXJyb3JDb2RlIGNv
ZGU7Ci0gICAgc3dpdGNoIChlcnJvckNvZGUpIHsKLSAgICBjYXNlIFBvc2l0aW9uRXJyb3I6OlBF
Uk1JU1NJT05fREVOSUVEOgotICAgICAgICBjb2RlID0gR2VvbG9jYXRpb25FcnJvcjo6UGVybWlz
c2lvbkRlbmllZDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQb3NpdGlvbkVycm9yOjpQT1NJ
VElPTl9VTkFWQUlMQUJMRToKLSAgICBkZWZhdWx0OgotICAgICAgICBjb2RlID0gR2VvbG9jYXRp
b25FcnJvcjo6UG9zaXRpb25VbmF2YWlsYWJsZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0g
ICAgbW9jay0+c2V0RXJyb3IoR2VvbG9jYXRpb25FcnJvcjo6Y3JlYXRlKGNvZGUsIGVycm9yTWVz
c2FnZSkpOworICAgIG1vY2stPnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVF
cnJvcihlcnJvck1lc3NhZ2UpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oIGIvU291cmNl
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmgKaW5k
ZXggMzc1MDIwZDdiOTQxYTE3YWU0ODVhZTczNmVmNjg0ODYwYzg5ODI0ZC4uODAxZGM1YjVhZWIw
OWRiNDE5YzE2ZjY5NTA4NjQ3NzFlMTYyYjY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmgKKysrIGIvU291cmNl
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmgKQEAg
LTEsNSArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExp
bWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAt
MTExLDcgKzExMiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCByZXNldEdlb2xvY2F0aW9u
Q2xpZW50TW9jayhXZWJLaXRXZWJWaWV3Kik7CiAgICAgc3RhdGljIHZvaWQgc2V0TW9ja0dlb2xv
Y2F0aW9uUGVybWlzc2lvbihXZWJLaXRXZWJWaWV3KiwgYm9vbCBhbGxvd2VkKTsKICAgICBzdGF0
aWMgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihXZWJLaXRXZWJWaWV3KiwgZG91Ymxl
IGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kpOwotICAgIHN0YXRp
YyB2b2lkIHNldE1vY2tHZW9sb2NhdGlvbkVycm9yKFdlYktpdFdlYlZpZXcqLCBpbnQgZXJyb3JD
b2RlLCBjb25zdCBnY2hhciogZXJyb3JNZXNzYWdlKTsKKyAgICBzdGF0aWMgdm9pZCBzZXRNb2Nr
R2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoV2ViS2l0V2ViVmlldyosIGNvbnN0
IGdjaGFyKiBlcnJvck1lc3NhZ2UpOwogICAgIHN0YXRpYyBpbnQgbnVtYmVyT2ZQZW5kaW5nR2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMoV2ViS2l0V2ViVmlldyopOwogCiAgICAgc3RhdGlj
IHZvaWQgc2V0UGFnZUNhY2hlU3VwcG9ydHNQbHVnaW5zKFdlYktpdFdlYlZpZXcqLCBib29sIGVu
YWJsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGMxZjBhMmQ4OWQ0
MmVkYjliZTg5ODMyYjMzNGNkYjk0MDQwYWE4NmIuLjgwZDU0MTc0Y2QxMmRjZjEzZTY0YmI4MjZh
ZmQxZmVjZmZjNTJkMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTY1
MTEsMTEgKzY1MTEsMTEgQEAgc3RhdGljIHZvaWQgZ2xpYkNvbnRleHRJdGVyYXRpb25DYWxsYmFj
ayhDRlJ1bkxvb3BPYnNlcnZlclJlZiwgQ0ZSdW5Mb29wQWN0aXZpdHkKICNlbmRpZiAvLyBFTkFC
TEUoR0VPTE9DQVRJT04pCiB9CiAKLS0gKHZvaWQpX2dlb2xvY2F0aW9uRGlkRmFpbFdpdGhFcnJv
cjooTlNFcnJvciAqKWVycm9yCistICh2b2lkKV9nZW9sb2NhdGlvbkRpZEZhaWxXaXRoTWVzc2Fn
ZTooTlNTdHJpbmcgKillcnJvck1lc3NhZ2UKIHsKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCiAg
ICAgaWYgKF9wcml2YXRlICYmIF9wcml2YXRlLT5wYWdlKSB7Ci0gICAgICAgIFJlZlB0cjxHZW9s
b2NhdGlvbkVycm9yPiBnZW9sb2NhdGlvRXJyb3IgPSBHZW9sb2NhdGlvbkVycm9yOjpjcmVhdGUo
R2VvbG9jYXRpb25FcnJvcjo6UG9zaXRpb25VbmF2YWlsYWJsZSwgW2Vycm9yIGxvY2FsaXplZERl
c2NyaXB0aW9uXSk7CisgICAgICAgIFJlZlB0cjxHZW9sb2NhdGlvbkVycm9yPiBnZW9sb2NhdGlv
RXJyb3IgPSBHZW9sb2NhdGlvbkVycm9yOjpjcmVhdGUoR2VvbG9jYXRpb25FcnJvcjo6UG9zaXRp
b25VbmF2YWlsYWJsZSwgZXJyb3JNZXNzYWdlKTsKICAgICAgICAgV2ViQ29yZTo6R2VvbG9jYXRp
b25Db250cm9sbGVyOjpmcm9tKF9wcml2YXRlLT5wYWdlKS0+ZXJyb3JPY2N1cnJlZChnZW9sb2Nh
dGlvRXJyb3IuZ2V0KCkpOwogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoR0VPTE9DQVRJT04pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKaW5kZXggODI2NDc0ZTQx
YjM0YzIyYmZmNTQ1NjBmNmEwYjE4ZjcyM2Y5MDdlMy4uYzQ2ZDM1ZTEyMzI1NjY5ZDYxYWQ4ZTJh
ZjdkMjk0NWQzYWIxYzRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1By
aXZhdGUuaApAQCAtNzI4LDcgKzcyOCw3IEBAIENvdWxkIGJlIHdvcnRoIGFkZGluZyB0byB0aGUg
QVBJLgogLSAoaWQ8V2ViR2VvbG9jYXRpb25Qcm92aWRlcj4pX2dlb2xvY2F0aW9uUHJvdmlkZXI7
CiAKIC0gKHZvaWQpX2dlb2xvY2F0aW9uRGlkQ2hhbmdlUG9zaXRpb246KFdlYkdlb2xvY2F0aW9u
UG9zaXRpb24gKilwb3NpdGlvbjsKLS0gKHZvaWQpX2dlb2xvY2F0aW9uRGlkRmFpbFdpdGhFcnJv
cjooTlNFcnJvciAqKWVycm9yOworLSAodm9pZClfZ2VvbG9jYXRpb25EaWRGYWlsV2l0aE1lc3Nh
Z2U6KE5TU3RyaW5nICopZXJyb3JNZXNzYWdlOwogQGVuZAogCiBAaW50ZXJmYWNlIFdlYlZpZXcg
KFdlYlZpZXdOb3RpZmljYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCmluZGV4IGRjODIzMTY1
YzczMWVjMDUyZTllMzJhMjJlMjgxNjg3M2RmMGUyYWMuLjE5MmJhYjQzNzUxNzA4ZTAyMGM2YjM4
OTA0NTI4ZmM4NzVhMWI4MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCkBAIC0yLDcgKzIsNyBA
QAogICAgIENvcHlyaWdodCAoQykgMjAxMCBSb2JlcnQgSG9nYW4gPHJvYmVydEByb2JlcnRob2dh
bi5uZXQ+CiAgICAgQ29weXJpZ2h0IChDKSAyMDA4LDIwMDksMjAxMCBOb2tpYSBDb3Jwb3JhdGlv
biBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAgICBDb3B5cmlnaHQgKEMpIDIwMDcgU3Rh
aWtvcyBDb21wdXRpbmcgU2VydmljZXMgSW5jLgotICAgIENvcHlyaWdodCAoQykgMjAwNyBBcHBs
ZSBJbmMuCisgICAgQ29weXJpZ2h0IChDKSAyMDA3LCAyMDEyIEFwcGxlIEluYy4KIAogICAgIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKICAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYwpAQCAtNzUzLDIzICs3NTMsMTIgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdDo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oUVdlYlBhZ2UqIHBhZ2UsIGRvdWJsZQog
I2VuZGlmCiB9CiAKLXZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldE1vY2tHZW9sb2Nh
dGlvbkVycm9yKFFXZWJQYWdlKiBwYWdlLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBRU3RyaW5nJiBt
ZXNzYWdlKQordm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0TW9ja0dlb2xvY2F0aW9u
UG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKFFXZWJQYWdlKiBwYWdlLCBjb25zdCBRU3RyaW5nJiBt
ZXNzYWdlKQogewogI2lmIEVOQUJMRShHRU9MT0NBVElPTikKICAgICBQYWdlKiBjb3JlUGFnZSA9
IFFXZWJQYWdlUHJpdmF0ZTo6Y29yZShwYWdlKTsKLQotICAgIEdlb2xvY2F0aW9uRXJyb3I6OkVy
cm9yQ29kZSBjb2RlID0gR2VvbG9jYXRpb25FcnJvcjo6UG9zaXRpb25VbmF2YWlsYWJsZTsKLSAg
ICBzd2l0Y2ggKGVycm9yQ29kZSkgewotICAgIGNhc2UgUG9zaXRpb25FcnJvcjo6UEVSTUlTU0lP
Tl9ERU5JRUQ6Ci0gICAgICAgIGNvZGUgPSBHZW9sb2NhdGlvbkVycm9yOjpQZXJtaXNzaW9uRGVu
aWVkOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBvc2l0aW9uRXJyb3I6OlBPU0lUSU9OX1VO
QVZBSUxBQkxFOgotICAgICAgICBjb2RlID0gR2VvbG9jYXRpb25FcnJvcjo6UG9zaXRpb25VbmF2
YWlsYWJsZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCiAgICAgR2VvbG9jYXRpb25DbGllbnRN
b2NrKiBtb2NrQ2xpZW50ID0gc3RhdGljX2Nhc3Q8R2VvbG9jYXRpb25DbGllbnRNb2NrKj4oR2Vv
bG9jYXRpb25Db250cm9sbGVyOjpmcm9tKGNvcmVQYWdlKS0+Y2xpZW50KCkpOwotICAgIG1vY2tD
bGllbnQtPnNldEVycm9yKEdlb2xvY2F0aW9uRXJyb3I6OmNyZWF0ZShjb2RlLCBtZXNzYWdlKSk7
CisgICAgbW9ja0NsaWVudC0+c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVy
cm9yKG1lc3NhZ2UpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaCBiL1NvdXJjZS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaAppbmRleCA4NjIyMTM2
NTc5OGYxMGEzMDZjZGNlODdlMjI0NzMwMTFlN2Y5ZGVmLi5jZWZiOWQxYzg3NDU2NWM3ZmYwMGRi
MmVlYTAzNDIzM2ZiNjFkZjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgKKysrIGIvU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oCkBAIC0yLDcgKzIsNyBAQAog
ICAgIENvcHlyaWdodCAoQykgMjAxMCBSb2JlcnQgSG9nYW4gPHJvYmVydEByb2JlcnRob2dhbi5u
ZXQ+CiAgICAgQ29weXJpZ2h0IChDKSAyMDA4LDIwMDksMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAgICBDb3B5cmlnaHQgKEMpIDIwMDcgU3RhaWtv
cyBDb21wdXRpbmcgU2VydmljZXMgSW5jLgotICAgIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJ
bmMuCisgICAgQ29weXJpZ2h0IChDKSAyMDA3LCAyMDEyIEFwcGxlIEluYy4KIAogICAgIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwpAQCAtMTQxLDcgKzE0MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCByZXNl
dEdlb2xvY2F0aW9uTW9jayhRV2ViUGFnZSopOwogICAgIHN0YXRpYyB2b2lkIHNldE1vY2tHZW9s
b2NhdGlvblBlcm1pc3Npb24oUVdlYlBhZ2UqLCBib29sIGFsbG93ZWQpOwogICAgIHN0YXRpYyB2
b2lkIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKFFXZWJQYWdlKiwgZG91YmxlIGxhdGl0dWRl
LCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kpOwotICAgIHN0YXRpYyB2b2lkIHNl
dE1vY2tHZW9sb2NhdGlvbkVycm9yKFFXZWJQYWdlKiwgaW50IGVycm9yQ29kZSwgY29uc3QgUVN0
cmluZyYgbWVzc2FnZSk7CisgICAgc3RhdGljIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRp
b25VbmF2YWlsYWJsZUVycm9yKFFXZWJQYWdlKiwgY29uc3QgUVN0cmluZyYgbWVzc2FnZSk7CiAg
ICAgc3RhdGljIGludCBudW1iZXJPZlBlbmRpbmdHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
cyhRV2ViUGFnZSopOwogCiAgICAgc3RhdGljIGludCB3b3JrZXJUaHJlYWRDb3VudCgpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGEwMzIxYjVj
YjAzYTcwZTc4ZjlmNDk5YjQyNTVlMDZjOTZhMWQyYmEuLjVkNmIxMGViY2M1ZTdjZmQ1YzIwZWE0
ZDA1NTAzNDAxNDk5YzQ1ZTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NiBAQAorMjAxMi0wOS0yMSAgQmVuamFtaW4gUG91bGFp
biAgPGJwb3VsYWluQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggR2VvbG9jYXRpb24gZXJyb3Ig
cmVwb3J0aW5nIGluIHRoZSB0ZXN0IHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk3Mzg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhlIFRlc3RSdW5uZXIgd2FzIGV4cG9zaW5nIGludGVybmFs
IGltcGxlbWVudGF0aW9uIGRldGFpbHMgb2YKKyAgICAgICAgdGhlIEdlb2xvY2F0aW9uIG9iamVj
dCB0aHJvdWdoIHNldE1vY2tHZW9sb2NhdGlvbkVycm9yKCkuCisKKyAgICAgICAgSW4gcHJhY3Rp
Y2UsIG9ubHkgdGhlIGVycm9yIGNvZGUgUG9zaXRpb25VbmF2YWlsYWJsZSBpcyBzdXBwb3J0ZWQK
KyAgICAgICAgb3IgZXZlbiBpbXBsZW1lbnRlZC4KKworICAgICAgICBFeHBvc2luZyBzZXRNb2Nr
R2VvbG9jYXRpb25FcnJvcigpIGRvZXMgbm90IG1ha2Ugc2Vuc2UgZm9yIFdlYktpdDIgYXMKKyAg
ICAgICAgcGFzc2luZyBnZW5lcmljIGVycm9ycyBmcm9tIHRoZSBVSVByb2Nlc3MgaXMgYSBiYWQg
aWRlYS4gVGhpcyBpcyB0aGUKKyAgICAgICAgb3Bwb3J0dW5pdHkgdG8gY2xlYW4gVGVzdFJ1bm5l
ciBhbmQgcHJlcGFyZSBhbmQgaW50ZXJmYWNlIHN1aXRhYmxlIGZvciBXZWJLaXQyLgorCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChzZXRNb2NrR2Vv
bG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3JDYWxsYmFjayk6CisgICAgICAgIChUZXN0
UnVubmVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3RS
dW5uZXIuaDoKKyAgICAgICAgKFRlc3RSdW5uZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L2JsYWNrYmVycnkvVGVzdFJ1bm5lckJsYWNrQmVycnkuY3BwOgorICAgICAgICAoVGVzdFJ1bm5l
cjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKERS
VFRlc3RSdW5uZXI6OkRSVFRlc3RSdW5uZXIpOgorICAgICAgICAoRFJUVGVzdFJ1bm5lcjo6c2V0
TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmg6CisgICAgICAgIChEUlRUZXN0UnVu
bmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9hbmRyb2lkX2ZhbGxiYWNr
X2ZvbnRzLnhtbDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5j
cHA6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZh
aWxhYmxlRXJyb3IpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9UZXN0UnVubmVyR3Rr
LmNwcDoKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5h
dmFpbGFibGVFcnJvcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL01vY2tHZW9sb2Nh
dGlvblByb3ZpZGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL01vY2tHZW9sb2Nh
dGlvblByb3ZpZGVyLm1tOgorICAgICAgICAoLVtNb2NrR2VvbG9jYXRpb25Qcm92aWRlciBkZWFs
bG9jXSk6CisgICAgICAgICgtW01vY2tHZW9sb2NhdGlvblByb3ZpZGVyIHJlc2V0RXJyb3JdKToK
KyAgICAgICAgKC1bTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIgc2V0UG9zaXRpb246XSk6CisgICAg
ICAgICgtW01vY2tHZW9sb2NhdGlvblByb3ZpZGVyIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9u
VW5hdmFpbGFibGVFcnJvcldpdGhNZXNzYWdlOl0pOgorICAgICAgICAoLVtNb2NrR2VvbG9jYXRp
b25Qcm92aWRlciBsYXN0UG9zaXRpb25dKToKKyAgICAgICAgKC1bTW9ja0dlb2xvY2F0aW9uUHJv
dmlkZXIgdGltZXJGaXJlZF0pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVu
bmVyTWFjLm1tOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRp
b25VbmF2YWlsYWJsZUVycm9yKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVu
bmVyUXQuY3BwOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRp
b25VbmF2YWlsYWJsZUVycm9yKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVu
bmVyUXQuaDoKKyAgICAgICAgKFRlc3RSdW5uZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L3dpbi9UZXN0UnVubmVyV2luLmNwcDoKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldE1vY2tHZW9s
b2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcik6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvd3gvVGVzdFJ1bm5lcld4LmNwcDoKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldE1vY2tHZW9s
b2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcik6CisKIDIwMTItMDktMjEgIERpcmsgUHJh
bmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgd2Via2l0cHk6IGRyb3Agc3Vw
cG9ydCBmb3Igb2xkIFRlc3RFeHBlY3RhdGlvbnMgc3ludGF4CmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RS
dW5uZXIuY3BwCmluZGV4IDFkMDBjNTBhMzVhMzdlYzBmYWRjMThhZDg0ZTMwZGI3MThjOGEwZDQu
LjlmN2E3YzFiZWNhMGFiYTg0MzY5ZTk3ZmVlOTFlZWMyZGMyNmNkNTcgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL1Rlc3RSdW5uZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNywgMjAwOCwgMjAwOSwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIEpvb25lIEh1ciA8am9v
bmVAa2xkcC5vcmc+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0xMDk1LDE3ICsxMDk1LDE2IEBAIHN0
YXRpYyBKU1ZhbHVlUmVmIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uQ2FsbGJhY2soSlNDb250
ZXh0UmVmIGNvbnRleHQsIEpTT2JqCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNv
bnRleHQpOwogfQogCi1zdGF0aWMgSlNWYWx1ZVJlZiBzZXRNb2NrR2VvbG9jYXRpb25FcnJvckNh
bGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmpl
Y3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYg
YXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3N0YXRpYyBKU1ZhbHVlUmVmIHNl
dE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvckNhbGxiYWNrKEpTQ29udGV4
dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVj
dCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpT
VmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKLSAgICBpZiAoYXJndW1lbnRDb3VudCA8IDIpCisgICAg
aWYgKGFyZ3VtZW50Q291bnQgIT0gMSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZp
bmVkKGNvbnRleHQpOwogCi0gICAgaW50IGNvZGUgPSBKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwg
YXJndW1lbnRzWzBdLCBOVUxMKTsKLSAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gbWVzc2Fn
ZShBZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBhcmd1bWVudHNbMV0sIGV4Y2Vw
dGlvbikpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBtZXNzYWdlKEFkb3B0LCBKU1Zh
bHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7CiAgICAg
QVNTRVJUKCEqZXhjZXB0aW9uKTsKIAogICAgIFRlc3RSdW5uZXIqIGNvbnRyb2xsZXIgPSByZWlu
dGVycHJldF9jYXN0PFRlc3RSdW5uZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkp
OwotICAgIGNvbnRyb2xsZXItPnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGNvZGUsIG1lc3NhZ2Uu
Z2V0KCkpOworICAgIGNvbnRyb2xsZXItPnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFp
bGFibGVFcnJvcihtZXNzYWdlLmdldCgpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVm
aW5lZChjb250ZXh0KTsKIH0KQEAgLTIyNjYsNyArMjI2NSw3IEBAIEpTU3RhdGljRnVuY3Rpb24q
IFRlc3RSdW5uZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAgICAgIHsgInNldE1haW5GcmFtZUlz
Rmlyc3RSZXNwb25kZXIiLCBzZXRNYWluRnJhbWVJc0ZpcnN0UmVzcG9uZGVyQ2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKICAgICAgICAgeyAic2V0TWluaW11bVRpbWVySW50ZXJ2YWwiLCBzZXRNaW5pbXVtVGlt
ZXJJbnRlcnZhbENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldE1vY2tEZXZpY2VPcmll
bnRhdGlvbiIsIHNldE1vY2tEZXZpY2VPcmllbnRhdGlvbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCi0gICAg
ICAgIHsgInNldE1vY2tHZW9sb2NhdGlvbkVycm9yIiwgc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3JD
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVu
YXZhaWxhYmxlRXJyb3IiLCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJy
b3JDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlv
biIsIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAg
eyAiYWRkTW9ja1NwZWVjaElucHV0UmVzdWx0IiwgYWRkTW9ja1NwZWVjaElucHV0UmVzdWx0Q2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3QiLCBz
ZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9U
ZXN0UnVubmVyLmgKaW5kZXggOWJjYzk1YmM5MmQzMjk2MWU1MWM0YTMzNzliMzc4Mzk0MjI3ZjI1
OS4uZWRkMGRmZGE3NWI2MzE5NmFhOWMwMmJkMWJiZDdkYjFhNDQ1YjQyMCAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL1Rlc3RSdW5uZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTAwLDggKzEwMCw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldEF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKGJvb2wg
ZmxhZyk7CiAgICAgdm9pZCBzZXRNYWluRnJhbWVJc0ZpcnN0UmVzcG9uZGVyKGJvb2wgZmxhZyk7
CiAgICAgdm9pZCBzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oYm9vbCBjYW5Qcm92aWRlQWxwaGEs
IGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wgY2Fu
UHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpOwotICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9u
RXJyb3IoaW50IGNvZGUsIEpTU3RyaW5nUmVmIG1lc3NhZ2UpOwogICAgIHZvaWQgc2V0TW9ja0dl
b2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3Vi
bGUgYWNjdXJhY3kpOworICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWls
YWJsZUVycm9yKEpTU3RyaW5nUmVmIG1lc3NhZ2UpOwogICAgIHZvaWQgYWRkTW9ja1NwZWVjaElu
cHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCwgZG91YmxlIGNvbmZpZGVuY2UsIEpTU3RyaW5n
UmVmIGxhbmd1YWdlKTsKICAgICB2b2lkIHNldE1vY2tTcGVlY2hJbnB1dER1bXBSZWN0KGJvb2wg
ZmxhZyk7CiAgICAgdm9pZCBzZXRQZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRMb2NhdGlvbihKU1N0
cmluZ1JlZiBwYXRoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVy
cnkvVGVzdFJ1bm5lckJsYWNrQmVycnkuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2ti
ZXJyeS9UZXN0UnVubmVyQmxhY2tCZXJyeS5jcHAKaW5kZXggODk4NjkwMGM2YjNlNTMyMWViNGM2
ZDAzOWNiNDBmZGU4MmMzNWRlYy4uNjJiZTVmZTE4NjFjMjRhNjllN2Q1NWI5NTg3ZGQ1NWUyMGY1
OTc4NyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9UZXN0UnVu
bmVyQmxhY2tCZXJyeS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9U
ZXN0UnVubmVyQmxhY2tCZXJyeS5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDA5LCAyMDEwLCAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC00NDksMTAgKzQ1MCwxMCBAQCB2b2lk
IFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwg
ZG91YmxlIGxvbmdpdHVkZSwgZAogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydDo6c2V0TW9ja0dl
b2xvY2F0aW9uUG9zaXRpb24oQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1wUmVuZGVyVHJlZTo6Y3Vy
cmVudEluc3RhbmNlKCktPnBhZ2UoKSwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3kpOwog
fQogCi12b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGludCBjb2RlLCBK
U1N0cmluZ1JlZiBtZXNzYWdlKQordm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Q
b3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoSlNTdHJpbmdSZWYgbWVzc2FnZSkKIHsKICAgICBTdHJp
bmcgbWVzc2FnZVN0ciA9IGpzU3RyaW5nUmVmVG9XZWJDb3JlU3RyaW5nKG1lc3NhZ2UpOwotICAg
IER1bXBSZW5kZXJUcmVlU3VwcG9ydDo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoQmxhY2tCZXJy
eTo6V2ViS2l0OjpEdW1wUmVuZGVyVHJlZTo6Y3VycmVudEluc3RhbmNlKCktPnBhZ2UoKSwgY29k
ZSwgbWVzc2FnZVN0cik7CisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0OjpzZXRNb2NrR2VvbG9j
YXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1wUmVu
ZGVyVHJlZTo6Y3VycmVudEluc3RhbmNlKCktPnBhZ2UoKSwgbWVzc2FnZVN0cik7CiB9CiAKIHZv
aWQgVGVzdFJ1bm5lcjo6c2hvd1dlYkluc3BlY3RvcigpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwCmluZGV4IDBlNWE4YjMxYmU3YmZjODVjNzBh
MzkwOTNiNmUwZjMxN2RlMzVkNzkuLmQ2Yzg0ZjU4ZGViNDBiMjgzNzAwZjg5ODEyYzM5NzU3MTU3
ZDRhYTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RS
dW5uZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5u
ZXIuY3BwCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIFBhd2VsIEhh
amRhbiAocGhhamRhbi5qckBjaHJvbWl1bS5vcmcpCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQpAQCAtMjA2LDcgKzIwNyw3IEBAIERSVFRlc3RSdW5uZXI6OkRSVFRlc3RSdW5uZXIo
VGVzdFNoZWxsKiBzaGVsbCkKICAgICBiaW5kTWV0aG9kKCJzZXRKYXZhU2NyaXB0Q2FuQWNjZXNz
Q2xpcGJvYXJkIiwgJkRSVFRlc3RSdW5uZXI6OnNldEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9h
cmQpOwogICAgIGJpbmRNZXRob2QoInNldE1pbmltdW1UaW1lckludGVydmFsIiwgJkRSVFRlc3RS
dW5uZXI6OnNldE1pbmltdW1UaW1lckludGVydmFsKTsKICAgICBiaW5kTWV0aG9kKCJzZXRNb2Nr
RGV2aWNlT3JpZW50YXRpb24iLCAmRFJUVGVzdFJ1bm5lcjo6c2V0TW9ja0RldmljZU9yaWVudGF0
aW9uKTsKLSAgICBiaW5kTWV0aG9kKCJzZXRNb2NrR2VvbG9jYXRpb25FcnJvciIsICZEUlRUZXN0
UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcik7CisgICAgYmluZE1ldGhvZCgic2V0TW9j
a0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yIiwgJkRSVFRlc3RSdW5uZXI6OnNl
dE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcik7CiAgICAgYmluZE1ldGhv
ZCgic2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24iLCAmRFJUVGVzdFJ1bm5lcjo6c2V0TW9ja0dl
b2xvY2F0aW9uUG9zaXRpb24pOwogICAgIGJpbmRNZXRob2QoInNldFBhZ2VWaXNpYmlsaXR5Iiwg
JkRSVFRlc3RSdW5uZXI6OnNldFBhZ2VWaXNpYmlsaXR5KTsKICAgICBiaW5kTWV0aG9kKCJzZXRQ
bHVnaW5zRW5hYmxlZCIsICZEUlRUZXN0UnVubmVyOjpzZXRQbHVnaW5zRW5hYmxlZCk7CkBAIC0x
ODE2LDE0ICsxODE3LDE1IEBAIHZvaWQgRFJUVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9u
UG9zaXRpb24oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsCiAgICAgICAgIHdpbmRv
d0xpc3RbaV0tPmdlb2xvY2F0aW9uQ2xpZW50TW9jaygpLT5zZXRQb3NpdGlvbihhcmd1bWVudHNb
MF0udG9Eb3VibGUoKSwgYXJndW1lbnRzWzFdLnRvRG91YmxlKCksIGFyZ3VtZW50c1syXS50b0Rv
dWJsZSgpKTsKIH0KIAotdm9pZCBEUlRUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25FcnJv
cihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQor
dm9pZCBEUlRUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxl
RXJyb3IoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3Vs
dCkKIHsKICAgICByZXN1bHQtPnNldE51bGwoKTsKLSAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA8
IDIgfHwgIWFyZ3VtZW50c1swXS5pc051bWJlcigpIHx8ICFhcmd1bWVudHNbMV0uaXNTdHJpbmco
KSkKKyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSAhPSAxIHx8ICFhcmd1bWVudHNbMV0uaXNTdHJp
bmcoKSkKICAgICAgICAgcmV0dXJuOwogICAgIFZlY3RvcjxXZWJWaWV3SG9zdCo+IHdpbmRvd0xp
c3QgPSBtX3NoZWxsLT53aW5kb3dMaXN0KCk7CisgICAgLy8gRklYTUU6IEJlbmphbWluCiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCB3aW5kb3dMaXN0LnNpemUoKTsgaSsrKQotICAgICAgICB3
aW5kb3dMaXN0W2ldLT5nZW9sb2NhdGlvbkNsaWVudE1vY2soKS0+c2V0RXJyb3IoYXJndW1lbnRz
WzBdLnRvSW50MzIoKSwgY3BwVmFyaWFudFRvV2ViU3RyaW5nKGFyZ3VtZW50c1sxXSkpOworICAg
ICAgICB3aW5kb3dMaXN0W2ldLT5nZW9sb2NhdGlvbkNsaWVudE1vY2soKS0+c2V0TW9ja0dlb2xv
Y2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKGNwcFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1
bWVudHNbMF0pKTsKIH0KIAogdm9pZCBEUlRUZXN0UnVubmVyOjphYm9ydE1vZGFsKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmggYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmgKaW5kZXggYjZjOTA3ZTYyNzE4
Y2QyMjc1ODQ3ZDM5ZGMzZjhlOGQ0ODQzNjdjMy4uNTU5NDBhY2QxZjQ3YmIyNmFmMjlkZDViYjZk
NTMwZDJhZWUwNjZkMiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
RFJUVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRl
c3RSdW5uZXIuaApAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBQYXdl
bCBIYWpkYW4gKHBoYWpkYW4uanJAY2hyb21pdW0ub3JnKQorICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKQEAgLTMzNyw3ICszMzgsNyBAQCBwdWJsaWM6CiAgICAgLy8gR2VvbG9jYXRp
b24gcmVsYXRlZCBmdW5jdGlvbnMuCiAgICAgdm9pZCBzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24o
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgc2V0TW9ja0dl
b2xvY2F0aW9uUG9zaXRpb24oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwot
ICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoY29uc3QgQ3BwQXJndW1lbnRMaXN0Jiwg
Q3BwVmFyaWFudCopOworICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWls
YWJsZUVycm9yKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAogICAgIC8v
IEVtcHR5IHN0dWIgbWV0aG9kIHRvIGtlZXAgcGFyaXR5IHdpdGggb2JqZWN0IG1vZGVsIGV4cG9z
ZWQgYnkgZ2xvYmFsIERSVFRlc3RSdW5uZXIuCiAgICAgdm9pZCBhYm9ydE1vZGFsKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL2FuZHJvaWRfZmFsbGJhY2tfZm9udHMueG1sIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vYW5kcm9pZF9mYWxsYmFja19mb250cy54bWwKaW5kZXggNWFiNmMy
ZDU5N2I3MWZlMzJlNGMyOTVhYTA0ODM1ZGY3M2IwNDI5MC4uMTIzMTZjMzZiMWMwOTc5MzY2NDIx
ZjZmNzI2OWJmMmI5YTQ2NzU0OCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vYW5kcm9pZF9mYWxsYmFja19mb250cy54bWwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vYW5kcm9pZF9mYWxsYmFja19mb250cy54bWwKQEAgLTEwLDQgKzEwLDQgQEAK
ICAgICAgICAgICAgIDxmaWxlPkRyb2lkU2Fuc0ZhbGxiYWNrLnR0ZjwvZmlsZT4KICAgICAgICAg
PC9maWxlc2V0PgogICAgIDwvZmFtaWx5PgotPC9mYW1pbHlzZXQ+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQorPC9mYW1pbHlzZXQ+CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvVGVzdFJ1
bm5lckVmbC5jcHAKaW5kZXggMmUzODBjNTY5MzFlYjhmZmRjZmNlYzNhMjYwODA5YWYxNGEwY2Jm
Zi4uOTc5N2EzMTUyZTg5NDA1ZWVhNjRjYjc5M2I5NDMwZDY2NmUwOTI2OSAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwuY3BwCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZsLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA3LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgogICog
Q29weXJpZ2h0IChDKSAyMDA4IE51YW50aSBMdGQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSmFu
IE1pY2hhZWwgQWxvbnpvIDxqbWFsb256b0BnbWFpbC5jb20+CkBAIC0zNzksNyArMzc5LDcgQEAg
dm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUsIGRvdWJs
ZSwgZG91YmxlKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6
c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoaW50LCBKU1N0cmluZ1JlZikKK3ZvaWQgVGVzdFJ1bm5l
cjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKEpTU3RyaW5nUmVm
KQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIEdlb2xvY2F0aW9uIGxheW91dCB0ZXN0
cy4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4
MjY0LgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL1Rlc3RSdW5uZXJHdGsu
Y3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwCmluZGV4IDA5
MjljYWRmNjIxNzNhOWNlOWM5YzkzMWViNDcyNmQ4YzBkZjFhYTYuLmRiOTYyODkyNzBiNzc0ODEy
ODM1YzBmODA0OWIxNDY5MzRmYmMwMmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2d0ay9UZXN0UnVubmVyR3RrLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvVGVz
dFJ1bm5lckd0ay5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDcgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwOCBO
dWFudGkgTHRkLgogICogQ29weXJpZ2h0IChDKSAyMDA5IEphbiBNaWNoYWVsIEFsb256byA8am1h
bG9uem9AZ21haWwuY29tPgpAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0
TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRl
LCBkCiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3Np
dGlvbih2aWV3LCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSk7CiB9CiAKLXZvaWQgVGVz
dFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoaW50IGNvZGUsIEpTU3RyaW5nUmVmIG1l
c3NhZ2UpCit2b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFp
bGFibGVFcnJvcihKU1N0cmluZ1JlZiBtZXNzYWdlKQogewogICAgIFdlYktpdFdlYlZpZXcqIHZp
ZXcgPSBXRUJLSVRfV0VCX1ZJRVcoZ19zbGlzdF9udGhfZGF0YSh3ZWJWaWV3TGlzdCwgMCkpOwog
ICAgIGlmICghdmlldykKQEAgLTQ1NSw3ICs0NTUsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldE1v
Y2tHZW9sb2NhdGlvbkVycm9yKGludCBjb2RlLCBKU1N0cmluZ1JlZiBtZXNzYWdlKQogICAgIEFT
U0VSVCh2aWV3KTsKIAogICAgIEdPd25QdHI8Z2NoYXI+IGNNZXNzYWdlKEpTU3RyaW5nQ29weVVU
RjhDU3RyaW5nKG1lc3NhZ2UpKTsKLSAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldE1v
Y2tHZW9sb2NhdGlvbkVycm9yKHZpZXcsIGNvZGUsIGNNZXNzYWdlLmdldCgpKTsKKyAgICBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFi
bGVFcnJvcih2aWV3LCBjTWVzc2FnZS5nZXQoKSk7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0
R2VvbG9jYXRpb25QZXJtaXNzaW9uKGJvb2wgYWxsb3cpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIuaCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9Nb2NrR2VvbG9jYXRpb25Qcm92aWRlci5oCmluZGV4IDMxMWQxZTkxODRiMzZi
MzgyZTUxM2I3OGFkOGIzMzYxZDFkNTkwNTcuLmQ3YWM4OTFkYjVmYjkwMWRiMmJjYmU4M2FmOGE4
OWM3OThlNWYxNjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9Nb2NrR2Vv
bG9jYXRpb25Qcm92aWRlci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9Nb2NrR2Vv
bG9jYXRpb25Qcm92aWRlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAsIDIwMTIgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yOCwxMCArMjgsMTIgQEAKIAogI2ltcG9ydCA8V2ViS2l0L1dl
YlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvSGFzaFNldC5oPgorI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgogCiBAaW50ZXJmYWNlIE1vY2tHZW9sb2NhdGlvblByb3ZpZGVyIDogTlNPYmpl
Y3Q8V2ViR2VvbG9jYXRpb25Qcm92aWRlcj4gewotICAgIFdlYkdlb2xvY2F0aW9uUG9zaXRpb24g
Kl9sYXN0UG9zaXRpb247Ci0gICAgTlNFcnJvciAqX2Vycm9yOworICAgIFJldGFpblB0cjxXZWJH
ZW9sb2NhdGlvblBvc2l0aW9uPiBfbGFzdFBvc2l0aW9uOworICAgIEJPT0wgX2hhc0Vycm9yOwor
ICAgIFJldGFpblB0cjxOU1N0cmluZz4gX2Vycm9yTWVzc2FnZTsKICAgICBOU1RpbWVyICpfdGlt
ZXI7CiAgICAgSGFzaFNldDxXZWJWaWV3ICo+IF9yZWdpc3RlcmVkVmlld3M7CiB9CkBAIC0zOSw3
ICs0MSw3IEBACiArIChNb2NrR2VvbG9jYXRpb25Qcm92aWRlciAqKXNoYXJlZDsKIAogLSAodm9p
ZClzZXRQb3NpdGlvbjooV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiAqKXBvc2l0aW9uOwotLSAodm9p
ZClzZXRFcnJvcjooTlNFcnJvciAqKWVycm9yOworLSAodm9pZClzZXRNb2NrR2VvbG9jYXRpb25Q
b3NpdGlvblVuYXZhaWxhYmxlRXJyb3JXaXRoTWVzc2FnZTooTlNTdHJpbmcgKillcnJvck1lc3Nh
Z2U7CiAKIC0gKHZvaWQpc3RvcFRpbWVyOwogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIubW0KaW5kZXggZTAzY2FlMjRhNWQzNTdlZTU5
MzBkYTYxNTQ0MzdlYzlhZWY5ZjVmYi4uM2YyZTEwOTc5Y2RjZWJkZDRlNzJmYzU3YzI2OTM5MGFi
ZmU1MTA1ZiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL01vY2tHZW9sb2Nh
dGlvblByb3ZpZGVyLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9Nb2NrR2VvbG9j
YXRpb25Qcm92aWRlci5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEw
LCAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzgsMzQgKzM4LDMzIEBACiB7CiAgICAgQVNTRVJUKF9yZWdpc3Rl
cmVkVmlld3MuaXNFbXB0eSgpKTsKIAotICAgIFtfbGFzdFBvc2l0aW9uIHJlbGVhc2VdOwotICAg
IFtfZXJyb3IgcmVsZWFzZV07CisgICAgX2xhc3RQb3NpdGlvbi5jbGVhcigpOworICAgIF9lcnJv
ck1lc3NhZ2UuY2xlYXIoKTsKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKKy0gKHZvaWQpcmVz
ZXRFcnJvcgoreworICAgIF9oYXNFcnJvciA9IE5POworICAgIF9lcnJvck1lc3NhZ2UuY2xlYXIo
KTsKK30KKwogLSAodm9pZClzZXRQb3NpdGlvbjooV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiAqKXBv
c2l0aW9uCiB7Ci0gICAgaWYgKF9sYXN0UG9zaXRpb24gIT0gcG9zaXRpb24pIHsKLSAgICAgICAg
W19sYXN0UG9zaXRpb24gcmVsZWFzZV07Ci0gICAgICAgIF9sYXN0UG9zaXRpb24gPSBbcG9zaXRp
b24gcmV0YWluXTsKLSAgICB9CisgICAgX2xhc3RQb3NpdGlvbiA9IHBvc2l0aW9uOwogICAgIAot
ICAgIFtfZXJyb3IgcmVsZWFzZV07Ci0gICAgX2Vycm9yID0gMDsKKyAgICBbc2VsZiByZXNldEVy
cm9yXTsKIAogICAgIGlmICghX3RpbWVyKQogICAgICAgICBfdGltZXIgPSBbTlNUaW1lciBzY2hl
ZHVsZWRUaW1lcldpdGhUaW1lSW50ZXJ2YWw6MCB0YXJnZXQ6c2VsZiBzZWxlY3RvcjpAc2VsZWN0
b3IodGltZXJGaXJlZCkgdXNlckluZm86MCByZXBlYXRzOk5PXTsKIH0KIAotLSAodm9pZClzZXRF
cnJvcjooTlNFcnJvciAqKWVycm9yCistICh2b2lkKXNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9u
VW5hdmFpbGFibGVFcnJvcldpdGhNZXNzYWdlOihOU1N0cmluZyAqKWVycm9yTWVzc2FnZQogewot
ICAgIGlmIChfZXJyb3IgIT0gZXJyb3IpIHsKLSAgICAgICAgW19lcnJvciByZWxlYXNlXTsKLSAg
ICAgICAgX2Vycm9yID0gW2Vycm9yIHJldGFpbl07Ci0gICAgfQotICAgIAotICAgIFtfbGFzdFBv
c2l0aW9uIHJlbGVhc2VdOwotICAgIF9sYXN0UG9zaXRpb24gPSAwOworICAgIF9oYXNFcnJvciA9
IFlFUzsKKyAgICBfZXJyb3JNZXNzYWdlID0gZXJyb3JNZXNzYWdlOworCisgICAgX2xhc3RQb3Np
dGlvbi5jbGVhcigpOwogCiAgICAgaWYgKCFfdGltZXIpCiAgICAgICAgIF90aW1lciA9IFtOU1Rp
bWVyIHNjaGVkdWxlZFRpbWVyV2l0aFRpbWVJbnRlcnZhbDowIHRhcmdldDpzZWxmIHNlbGVjdG9y
OkBzZWxlY3Rvcih0aW1lckZpcmVkKSB1c2VySW5mbzowIHJlcGVhdHM6Tk9dOwpAQCAtODYsNyAr
ODUsNyBAQAogCiAtIChXZWJHZW9sb2NhdGlvblBvc2l0aW9uICopbGFzdFBvc2l0aW9uCiB7Ci0g
ICAgcmV0dXJuIF9sYXN0UG9zaXRpb247CisgICAgcmV0dXJuIF9sYXN0UG9zaXRpb24uZ2V0KCk7
CiB9CiAKIC0gKHZvaWQpc3RvcFRpbWVyCkBAIC0xMDIsMTAgKzEwMSwxMCBAQAogICAgIC8vIEV4
cGVjdCB0aGF0IHZpZXdzIHdvbid0IGJlICh1bilyZWdpc3RlcmVkIHdoaWxlIGl0ZXJhdGluZy4K
ICAgICBIYXNoU2V0PFdlYlZpZXcqPiB2aWV3cyA9IF9yZWdpc3RlcmVkVmlld3M7CiAgICAgZm9y
IChIYXNoU2V0PFdlYlZpZXcqPjo6aXRlcmF0b3IgaXRlciA9IHZpZXdzLmJlZ2luKCk7IGl0ZXIg
IT0gdmlld3MuZW5kKCk7ICsraXRlcikgewotICAgICAgICBpZiAoX2Vycm9yKQotICAgICAgICAg
ICAgWyppdGVyIF9nZW9sb2NhdGlvbkRpZEZhaWxXaXRoRXJyb3I6X2Vycm9yXTsKKyAgICAgICAg
aWYgKF9oYXNFcnJvcikKKyAgICAgICAgICAgIFsqaXRlciBfZ2VvbG9jYXRpb25EaWRGYWlsV2l0
aE1lc3NhZ2U6X2Vycm9yTWVzc2FnZS5nZXQoKV07CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IFsqaXRlciBfZ2VvbG9jYXRpb25EaWRDaGFuZ2VQb3NpdGlvbjpfbGFzdFBvc2l0aW9uXTsKKyAg
ICAgICAgICAgIFsqaXRlciBfZ2VvbG9jYXRpb25EaWRDaGFuZ2VQb3NpdGlvbjpfbGFzdFBvc2l0
aW9uLmdldCgpXTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9UZXN0UnVubmVyTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5u
ZXJNYWMubW0KaW5kZXggYTIxZWQ4MGFjMTFiZTYzNzEzMWRmY2Q0NmVmZjY0YzZkNTI5MDNmNS4u
NjhjYWZiNmYxNGVjZDdlNzBmOTNkN2Q1MjY2ZjE5NjI0NzdhZmIwZiAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ3
OSwxMiArNDc5LDExIEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRp
b24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkCiAgICAgW3Bvc2l0aW9uIHJl
bGVhc2VdOwogfQogCi12b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGlu
dCBjb2RlLCBKU1N0cmluZ1JlZiBtZXNzYWdlKQordm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrR2Vv
bG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoSlNTdHJpbmdSZWYgbWVzc2FnZSkKIHsK
ICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG1lc3NhZ2VDRihBZG9wdENGLCBKU1N0cmluZ0Nv
cHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtZXNzYWdlKSk7CiAgICAgTlNTdHJpbmcg
Km1lc3NhZ2VOUyA9IChOU1N0cmluZyAqKW1lc3NhZ2VDRi5nZXQoKTsKLSAgICBOU0Vycm9yICpl
cnJvciA9IFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXZWJLaXRFcnJvckRvbWFpbiBjb2RlOmNv
ZGUgdXNlckluZm86W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDptZXNzYWdlTlMg
Zm9yS2V5Ok5TTG9jYWxpemVkRGVzY3JpcHRpb25LZXldXTsKLSAgICBbW01vY2tHZW9sb2NhdGlv
blByb3ZpZGVyIHNoYXJlZF0gc2V0RXJyb3I6ZXJyb3JdOworICAgIFtbTW9ja0dlb2xvY2F0aW9u
UHJvdmlkZXIgc2hhcmVkXSBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJy
b3JXaXRoTWVzc2FnZTptZXNzYWdlTlNdOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldEdlb2xv
Y2F0aW9uUGVybWlzc2lvbihib29sIGFsbG93KQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvcXQvVGVzdFJ1bm5lclF0LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RS
dW5uZXJRdC5jcHAKaW5kZXggZDM1MDNiZDFlNzUwOTg3ZTUyMmRiN2Q0YmUzZDhmYWM4YmFjNmMw
Zi4uOWE5MjAxM2VkZDBlZWE3MzMxZmM3ZjAwMTQ5Yzg1MzRjMGFkMDE4OSAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmNwcAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuY3BwCkBAIC04MzQsMTEgKzgzNCwxMSBAQCB2b2lk
IFRlc3RSdW5uZXI6OnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbkNvbW1vbihib29sIGFsbG93KQog
ICAgICBtX2dlb2xvY2F0aW9uUGVybWlzc2lvbiA9IGFsbG93OwogfQogCi12b2lkIFRlc3RSdW5u
ZXI6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGludCBjb2RlLCBjb25zdCBRU3RyaW5nJiBtZXNz
YWdlKQordm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxh
YmxlRXJyb3IoY29uc3QgUVN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBRTGlzdDxXZWJDb3JlOjpX
ZWJQYWdlKj4gcGFnZXMgPSBtX2RydC0+Z2V0QWxsUGFnZXMoKTsKICAgICBmb3JlYWNoIChXZWJD
b3JlOjpXZWJQYWdlKiBwYWdlLCBwYWdlcykKLSAgICAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQ6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKHBhZ2UsIGNvZGUsIG1lc3NhZ2UpOworICAgICAg
ICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2
YWlsYWJsZUVycm9yKHBhZ2UsIG1lc3NhZ2UpOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNldE1v
Y2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwg
ZG91YmxlIGFjY3VyYWN5KQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVz
dFJ1bm5lclF0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuaAppbmRl
eCA4OGE5YzZhOTQ0ZTY0ZTM4NTg1NDYwNjQ4YmQ4MjY3OGE5MzU2YzJmLi4zMTFiY2Q5ZGU1Y2Q3
ZjJhOWQ2ZjIyZTg5Y2E5MDA1ZWQ0NjFmNzIzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9xdC9UZXN0UnVubmVyUXQuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0
UnVubmVyUXQuaApAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9r
aWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMjQsNyArMjI1LDcgQEAgcHVibGljIFFf
U0xPVFM6CiAKICAgICB2b2lkIHNldE1vY2tEZXZpY2VPcmllbnRhdGlvbihib29sIGNhblByb3Zp
ZGVBbHBoYSwgZG91YmxlIGFscGhhLCBib29sIGNhblByb3ZpZGVCZXRhLCBkb3VibGUgYmV0YSwg
Ym9vbCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJsZSBnYW1tYSk7CiAKLSAgICB2b2lkIHNldE1vY2tH
ZW9sb2NhdGlvbkVycm9yKGludCBjb2RlLCBjb25zdCBRU3RyaW5nJiBtZXNzYWdlKTsKKyAgICB2
b2lkIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihjb25zdCBRU3Ry
aW5nJiBtZXNzYWdlKTsKICAgICB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJs
ZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KTsKICAgICB2b2lk
IHNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihib29sIGFsbG93KTsKICAgICBpbnQgbnVtYmVyT2ZQ
ZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMoKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcAppbmRleCBkMzM2NTFiN2FmNmU0NWMyYjllNTYxYjRh
NzE3MWI0NmM5ZTYzN2YxLi5jNDQwMGZkY2IxZWJiZWY0Zjc3YmM4MDQwY2UxNmEyYjYzZWYzNzQw
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYs
IDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MjAsNyArNDIwLDcgQEAg
dm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1
ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGQKICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI4MjY0LgogfQogCi12b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tH
ZW9sb2NhdGlvbkVycm9yKGludCBjb2RlLCBKU1N0cmluZ1JlZiBtZXNzYWdlKQordm9pZCBUZXN0
UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoSlNTdHJp
bmdSZWYgbWVzc2FnZSkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBHZW9sb2NhdGlv
biBsYXlvdXQgdGVzdHMuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yODI2NC4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L1Rl
c3RSdW5uZXJXeC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9UZXN0UnVubmVyV3guY3Bw
CmluZGV4IGQ3YTUyNTJjNDA0YmYyMTlkZjdlYTFmYTU3Y2IzZDllMWRkZDMzODMuLmU3ODBjZmU1
MmIzYjAxNjk0ZTYyYzc3YjM4ZGY5ZDBlMGIxMDliYWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3d4L1Rlc3RSdW5uZXJXeC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
d3gvVGVzdFJ1bm5lcld4LmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDggS2V2aW4gT2xsaXZpZXIgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzM4LDcgKzMzOSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6
c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0
dWRlLCBkCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yODI2NC4KIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihp
bnQgY29kZSwgSlNTdHJpbmdSZWYgbWVzc2FnZSkKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0dl
b2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKEpTU3RyaW5nUmVmKQogewogICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnQgZm9yIEdlb2xvY2F0aW9uIGxheW91dCB0ZXN0cy4KICAgICAvLyBT
ZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MjY0LgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGVmYjNhMGVjMzk4YTgwMTEzODQ3MTVkZTEyNGMzYjhlN2RmMDYxMzMuLjg5ZmFhMzgzNDcxYzQx
YzNjZjQ4Mzc5YjcxYjcwMjVkMTZjY2RkOGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwzMiBAQAogMjAxMi0w
OS0yMSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAorICAgICAgICBG
aXggR2VvbG9jYXRpb24gZXJyb3IgcmVwb3J0aW5nIGluIHRoZSB0ZXN0IHN1cHBvcnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3Mzg2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHRoZSB0ZXN0
cyB0byB1c2Ugc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKCkgaW5z
dGVhZAorICAgICAgICBvZiBzZXRNb2NrR2VvbG9jYXRpb25FcnJvcigpLgorCisgICAgICAgIE9u
bHkgUG9zaXRpb25FcnJvci5QT1NJVElPTl9VTkFWQUlMQUJMRSB3YXMgc3VwcG9ydGVkLCBzbyB0
aGlzIG5vdCBjaGFuZ2UKKyAgICAgICAgYW55dGhpbmcgZm9yIHRoZSB0ZXN0IGNvdmVyYWdlLgor
CisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vZXJyb3ItY2xlYXItd2F0Y2guaHRtbDoK
KyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9lcnJvci1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vbWF4aW11bS1hZ2UtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9uL3JlZW50cmFudC1lcnJvci1leHBlY3RlZC50eHQ6
CisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL2Vycm9yLmpzOgor
ICAgICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9tYXhpbXVtLWFnZS5q
czoKKyAgICAgICAgKGNoZWNrRXJyb3IpOgorICAgICAgICAodGVzdE5vblplcm9NYXhpbXVtQWdl
KToKKyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcGVybWlzc2lv
bi1kZW5pZWQtYWxyZWFkeS1lcnJvci5qczoKKyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlv
bi9zY3JpcHQtdGVzdHMvcmVlbnRyYW50LWVycm9yLmpzOgorICAgICAgICAqIGZhc3QvZG9tL0dl
b2xvY2F0aW9uL3NjcmlwdC10ZXN0cy93YXRjaC5qczoKKyAgICAgICAgKGNoZWNrRXJyb3IpOgor
ICAgICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9uL3dhdGNoLWV4cGVjdGVkLnR4dDoKKworMjAx
Mi0wOS0yMSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KKwogICAgICAg
ICBmYXN0L2RvbS9HZW9sb2NhdGlvbi9kaXNjb25uZWN0ZWQtZnJhbWUuaHRtbCB0ZXN0IGFzc2Vy
dHMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3Mzc2
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2Vycm9yLWNs
ZWFyLXdhdGNoLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9lcnJvci1j
bGVhci13YXRjaC5odG1sCmluZGV4IDMyMjA2ZGYzZmMzOTA3NjI3ZjQxNWRhNjEyZWNkN2Q0NzBi
ZThmMTUuLjZjNjE5NzgzZWI5Yzc4NGU0YWJhYzI5NzExMmI1ZDdjODAxOWNhNjEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2Vycm9yLWNsZWFyLXdhdGNoLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vZXJyb3ItY2xlYXItd2F0
Y2guaHRtbApAQCAtNywxMiArNywxMSBAQAogPHNjcmlwdD4KIGRlc2NyaXB0aW9uKCJUaGlzIHRl
c3RzIHJlbW92aW5nIHRoZSB3YXRjaGVyIGZyb20gYW4gZXJyb3IgY2FsbGJhY2sgZG9lcyBub3Qg
Y2F1c2VzIGFzc2VydGlvbnMuIik7CiAKLXZhciBtb2NrQ29kZSA9IDI7CiB2YXIgbW9ja01lc3Nh
Z2UgPSAiZGVidWciOwogCiBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICB0ZXN0UnVubmVy
LnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbih0cnVlKTsKLSAgICB0ZXN0UnVubmVyLnNldE1vY2tH
ZW9sb2NhdGlvbkVycm9yKG1vY2tDb2RlLCBtb2NrTWVzc2FnZSk7CisgICAgdGVzdFJ1bm5lci5z
ZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IobW9ja01lc3NhZ2UpOwog
fSBlbHNlCiAgICAgZGVidWcoJ1RoaXMgdGVzdCBjYW4gbm90IGJlIHJ1biB3aXRob3V0IHRoZSBM
YXlvdXRUZXN0Q29udHJvbGxlcicpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9HZW9sb2NhdGlvbi9lcnJvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9H
ZW9sb2NhdGlvbi9lcnJvci1leHBlY3RlZC50eHQKaW5kZXggOTU4MjA1OTVmZGJiNDc2ZjcwOWQx
Yjc5Y2ZlZDM1MmVjYjMwZjIyZC4uMTMzZTM5YTMyYWVkYjNlZmRhMjI0OWJiODMwZWUwNTJlZDkz
NTllYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vZXJyb3It
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2Vycm9y
LWV4cGVjdGVkLnR4dApAQCAtMyw3ICszLDcgQEAgVGVzdHMgR2VvbG9jYXRpb24gZXJyb3IgY2Fs
bGJhY2sgdXNpbmcgdGhlIG1vY2sgc2VydmljZS4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
IAogCi1QQVNTIGVycm9yLmNvZGUgaXMgbW9ja0NvZGUKK1BBU1MgZXJyb3IuY29kZSBpcyBlcnJv
ci5QT1NJVElPTl9VTkFWQUlMQUJMRQogUEFTUyBlcnJvci5tZXNzYWdlIGlzIG1vY2tNZXNzYWdl
CiBQQVNTIGVycm9yLlVOS05PV05fRVJST1IgaXMgdW5kZWZpbmVkCiBQQVNTIGVycm9yLlBFUk1J
U1NJT05fREVOSUVEIGlzIDEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xv
Y2F0aW9uL21heGltdW0tYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dl
b2xvY2F0aW9uL21heGltdW0tYWdlLWV4cGVjdGVkLnR4dAppbmRleCAzNDRiZDQ1YjgyMTRkNGJl
ZDZhOWY5MDNmMzIyYjE3YmQwMzA2YTg5Li4zODg5NDY2OTdiMzg1OTE3NGM0ZTJmZTNjYWM1MDQx
OGYxY2VhNTM1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9t
YXhpbXVtLWFnZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9j
YXRpb24vbWF4aW11bS1hZ2UtZXhwZWN0ZWQudHh0CkBAIC0xNiw3ICsxNiw3IEBAIFBBU1MgcG9z
aXRpb24uY29vcmRzLmxhdGl0dWRlIGlzIG1vY2tMYXRpdHVkZQogUEFTUyBwb3NpdGlvbi5jb29y
ZHMubG9uZ2l0dWRlIGlzIG1vY2tMb25naXR1ZGUKIFBBU1MgcG9zaXRpb24uY29vcmRzLmFjY3Vy
YWN5IGlzIG1vY2tBY2N1cmFjeQogCi1QQVNTIGVycm9yLmNvZGUgaXMgbW9ja0NvZGUKK1BBU1Mg
ZXJyb3IuY29kZSBpcyBlcnJvci5QT1NJVElPTl9VTkFWQUlMQUJMRQogUEFTUyBlcnJvci5tZXNz
YWdlIGlzIG1vY2tNZXNzYWdlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3JlZW50cmFudC1lcnJv
ci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9yZWVudHJh
bnQtZXJyb3ItZXhwZWN0ZWQudHh0CmluZGV4IDk5M2JlYWMyMTdlNjcwOTk4ZDgyMGQxNWNlMjg3
OTRkNGFkNDA0ZmUuLjRjNGViMWYwYmI5OGI1NjdkMmJmMjE4ZmY5NzMzZjFmODM1MTdlNzkgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3JlZW50cmFudC1lcnJv
ci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vcmVl
bnRyYW50LWVycm9yLWV4cGVjdGVkLnR4dApAQCAtMywxMCArMywxMCBAQCBUZXN0cyB0aGF0IHJl
ZW50cmFudCBjYWxscyB0byBHZW9sb2NhdGlvbiBtZXRob2RzIGZyb20gdGhlIGVycm9yIGNhbGxi
YWNrIGFyZSBPSwogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1MgZXJyb3IuY29k
ZSBpcyBtb2NrQ29kZQorUEFTUyBlcnJvci5jb2RlIGlzIGVycm9yLlBPU0lUSU9OX1VOQVZBSUxB
QkxFCiBQQVNTIGVycm9yLm1lc3NhZ2UgaXMgbW9ja01lc3NhZ2UKIAotUEFTUyBlcnJvci5jb2Rl
IGlzIG1vY2tDb2RlCitQQVNTIGVycm9yLmNvZGUgaXMgZXJyb3IuUE9TSVRJT05fVU5BVkFJTEFC
TEUKIFBBU1MgZXJyb3IubWVzc2FnZSBpcyBtb2NrTWVzc2FnZQogUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2Nh
dGlvbi9zY3JpcHQtdGVzdHMvZXJyb3IuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2Nh
dGlvbi9zY3JpcHQtdGVzdHMvZXJyb3IuanMKaW5kZXggMmQxM2YzZjQ2YzgzMDEwNzZjOGRjYmI5
ZDE5ODkxMGY3N2ZjYzgxYi4uOGU0NGJjNmY3MWVmZDhlYjc3M2U5ZTc5NTc1NDdkMGQzZjcxZTgw
OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRl
c3RzL2Vycm9yLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3Njcmlw
dC10ZXN0cy9lcnJvci5qcwpAQCAtMSwxMSArMSwxMCBAQAogZGVzY3JpcHRpb24oIlRlc3RzIEdl
b2xvY2F0aW9uIGVycm9yIGNhbGxiYWNrIHVzaW5nIHRoZSBtb2NrIHNlcnZpY2UuIik7CiAKLXZh
ciBtb2NrQ29kZSA9IDI7CiB2YXIgbW9ja01lc3NhZ2UgPSAiZGVidWciOwogCiBpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKICAgICB0ZXN0UnVubmVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbih0
cnVlKTsKLSAgICB0ZXN0UnVubmVyLnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKG1vY2tDb2RlLCBt
b2NrTWVzc2FnZSk7CisgICAgdGVzdFJ1bm5lci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVu
YXZhaWxhYmxlRXJyb3IobW9ja01lc3NhZ2UpOwogfSBlbHNlCiAgICAgZGVidWcoJ1RoaXMgdGVz
dCBjYW4gbm90IGJlIHJ1biB3aXRob3V0IHRoZSB0ZXN0UnVubmVyJyk7CiAKQEAgLTE1LDcgKzE0
LDcgQEAgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihmdW5jdGlvbihw
KSB7CiAgICAgZmluaXNoSlNUZXN0KCk7CiB9LCBmdW5jdGlvbihlKSB7CiAgICAgZXJyb3IgPSBl
OwotICAgIHNob3VsZEJlKCdlcnJvci5jb2RlJywgJ21vY2tDb2RlJyk7CisgICAgc2hvdWxkQmUo
J2Vycm9yLmNvZGUnLCAnZXJyb3IuUE9TSVRJT05fVU5BVkFJTEFCTEUnKTsKICAgICBzaG91bGRC
ZSgnZXJyb3IubWVzc2FnZScsICdtb2NrTWVzc2FnZScpOwogICAgIHNob3VsZEJlKCdlcnJvci5V
TktOT1dOX0VSUk9SJywgJ3VuZGVmaW5lZCcpOwogICAgIHNob3VsZEJlKCdlcnJvci5QRVJNSVNT
SU9OX0RFTklFRCcsICcxJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9s
b2NhdGlvbi9zY3JpcHQtdGVzdHMvbWF4aW11bS1hZ2UuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvbWF4aW11bS1hZ2UuanMKaW5kZXggNmM4Zjg2MDA5
ZmI4NDY1MzExZDBhZDllOWU4NGZhNTczMWE1ZDE2ZC4uNDc1OTZjYTQ2NDZjYzM2OTdhZjI4OTg5
ODVkNjUzNDQ0YTYyY2IyMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9j
YXRpb24vc2NyaXB0LXRlc3RzL21heGltdW0tYWdlLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9tYXhpbXVtLWFnZS5qcwpAQCAtNCw3ICs0LDYg
QEAgdmFyIG1vY2tMYXRpdHVkZSA9IDUxLjQ3ODsKIHZhciBtb2NrTG9uZ2l0dWRlID0gLTAuMTY2
OwogdmFyIG1vY2tBY2N1cmFjeSA9IDEwMC4wOwogCi12YXIgbW9ja0NvZGUgPSAyOwogdmFyIG1v
Y2tNZXNzYWdlID0gJ3Rlc3QnOwogCiB2YXIgcG9zaXRpb247CkBAIC0yMSw3ICsyMCw3IEBAIGZ1
bmN0aW9uIGNoZWNrUG9zaXRpb24ocCkgewogZnVuY3Rpb24gY2hlY2tFcnJvcihlKSB7CiAgICAg
ZGVidWcoJycpOwogICAgIGVycm9yID0gZTsKLSAgICBzaG91bGRCZSgnZXJyb3IuY29kZScsICdt
b2NrQ29kZScpOworICAgIHNob3VsZEJlKCdlcnJvci5jb2RlJywgJ2Vycm9yLlBPU0lUSU9OX1VO
QVZBSUxBQkxFJyk7CiAgICAgc2hvdWxkQmUoJ2Vycm9yLm1lc3NhZ2UnLCAnbW9ja01lc3NhZ2Un
KTsKIH0KIApAQCAtNTcsNyArNTYsNyBAQCBmdW5jdGlvbiB0ZXN0WmVyb01heGltdW1BZ2UoKSB7
CiBmdW5jdGlvbiB0ZXN0Tm9uWmVyb01heGltdW1BZ2UoKSB7CiAgICAgLy8gVXBkYXRlIHRoZSBt
b2NrIHNlcnZpY2UgdG8gcmVwb3J0IGFuIGVycm9yLgogICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRNb2NrR2VvbG9jYXRpb25FcnJvcihtb2NrQ29kZSwg
bW9ja01lc3NhZ2UpOworICAgICAgICB0ZXN0UnVubmVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0
aW9uVW5hdmFpbGFibGVFcnJvcihtb2NrTWVzc2FnZSk7CiAgICAgLy8gVGhlIG1heGltdW1BZ2Ug
aXMgbm9uLXplcm8sIHNvIHdlIGV4cGVjdCB0aGUgY2FjaGVkIHBvc2l0aW9uLCBub3QgdGhlIGVy
cm9yIGZyb20gdGhlIHNlcnZpY2UuCiAgICAgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJl
bnRQb3NpdGlvbihmdW5jdGlvbihwKSB7CiAgICAgICAgIGNoZWNrUG9zaXRpb24ocCk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcGVy
bWlzc2lvbi1kZW5pZWQtYWxyZWFkeS1lcnJvci5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dl
b2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9wZXJtaXNzaW9uLWRlbmllZC1hbHJlYWR5LWVycm9yLmpz
CmluZGV4IGI1ZTNkOGYyYzhhMzI4ZDI3MzliNDg1YzhjZGE0ZDM4N2IzMjY4MzguLjQ4YjVjZjgx
YzU0OThhM2QzNGYxNDE3MjQ2NzkxZGY3YzhjN2MxNGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9wZXJtaXNzaW9uLWRlbmllZC1hbHJl
YWR5LWVycm9yLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3Njcmlw
dC10ZXN0cy9wZXJtaXNzaW9uLWRlbmllZC1hbHJlYWR5LWVycm9yLmpzCkBAIC0yMyw3ICsyMyw3
IEBAIGZ1bmN0aW9uIGNvbnRpbnVlVGVzdCgpCiB7CiAgICAgLy8gTWFrZSBhbm90aGVyIHJlcXVl
c3QsIHdpdGggcGVybWlzc2lvbiBhbHJlYWR5IGRlbmllZC4KICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIuc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoMiwgJ3Rl
c3QnKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZh
aWxhYmxlRXJyb3IoJ3Rlc3QnKTsKIAogICAgIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJy
ZW50UG9zaXRpb24oZnVuY3Rpb24ocCkgewogICAgICAgICB0ZXN0RmFpbGVkKCdTdWNjZXNzIGNh
bGxiYWNrIGludm9rZWQgdW5leHBlY3RlZGx5Jyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcmVlbnRyYW50LWVycm9yLmpzIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3JlZW50cmFudC1lcnJv
ci5qcwppbmRleCA1NDM5ZTI5MjJjNGM5ODhlZDIxYThiYzczMTgzM2YwYzJiNzE0OTliLi41YTZj
MDlkMWJhODI4NmIwYWI0MWE3Y2JiNjcwZDc5YWIxYjczZWU1IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcmVlbnRyYW50LWVycm9yLmpz
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9yZWVu
dHJhbnQtZXJyb3IuanMKQEAgLTEsMTEgKzEsMTAgQEAKIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0
IHJlZW50cmFudCBjYWxscyB0byBHZW9sb2NhdGlvbiBtZXRob2RzIGZyb20gdGhlIGVycm9yIGNh
bGxiYWNrIGFyZSBPSy4iKTsKIAotdmFyIG1vY2tDb2RlID0gMjsKIHZhciBtb2NrTWVzc2FnZSA9
ICd0ZXN0JzsKIAogaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgdGVzdFJ1bm5lci5zZXRH
ZW9sb2NhdGlvblBlcm1pc3Npb24odHJ1ZSk7Ci0gICAgdGVzdFJ1bm5lci5zZXRNb2NrR2VvbG9j
YXRpb25FcnJvcihtb2NrQ29kZSwgbW9ja01lc3NhZ2UpOworICAgIHRlc3RSdW5uZXIuc2V0TW9j
a0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKG1vY2tNZXNzYWdlKTsKIH0gZWxz
ZQogICAgIGRlYnVnKCdUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4gd2l0aG91dCB0aGUgdGVzdFJ1
bm5lcicpOwogCkBAIC0yMiw3ICsyMSw3IEBAIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJy
ZW50UG9zaXRpb24oZnVuY3Rpb24ocCkgewogICAgIGVycm9yQ2FsbGJhY2tJbnZva2VkID0gdHJ1
ZTsKIAogICAgIGVycm9yID0gZTsKLSAgICBzaG91bGRCZSgnZXJyb3IuY29kZScsICdtb2NrQ29k
ZScpOworICAgIHNob3VsZEJlKCdlcnJvci5jb2RlJywgJ2Vycm9yLlBPU0lUSU9OX1VOQVZBSUxB
QkxFJyk7CiAgICAgc2hvdWxkQmUoJ2Vycm9yLm1lc3NhZ2UnLCAnbW9ja01lc3NhZ2UnKTsKICAg
ICBkZWJ1ZygnJyk7CiAgICAgY29udGludWVUZXN0KCk7CkBAIC0zMiwxNCArMzEsMTQgQEAgZnVu
Y3Rpb24gY29udGludWVUZXN0KCkgewogICAgIG1vY2tNZXNzYWdlICs9ICcgcmVwZWF0JzsKIAog
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRNb2NrR2Vv
bG9jYXRpb25FcnJvcihtb2NrQ29kZSwgbW9ja01lc3NhZ2UpOworICAgICAgICB0ZXN0UnVubmVy
LnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihtb2NrTWVzc2FnZSk7
CiAKICAgICBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGZ1bmN0aW9u
KHApIHsKICAgICAgICAgdGVzdEZhaWxlZCgnU3VjY2VzcyBjYWxsYmFjayBpbnZva2VkIHVuZXhw
ZWN0ZWRseScpOwogICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKICAgICB9LCBmdW5jdGlvbihlKSB7
CiAgICAgICAgIGVycm9yID0gZTsKLSAgICAgICAgc2hvdWxkQmUoJ2Vycm9yLmNvZGUnLCAnbW9j
a0NvZGUnKTsKKyAgICAgICAgc2hvdWxkQmUoJ2Vycm9yLmNvZGUnLCAnZXJyb3IuUE9TSVRJT05f
VU5BVkFJTEFCTEUnKTsKICAgICAgICAgc2hvdWxkQmUoJ2Vycm9yLm1lc3NhZ2UnLCAnbW9ja01l
c3NhZ2UnKTsKICAgICAgICAgZmluaXNoSlNUZXN0KCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvd2F0Y2guanMgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvd2F0Y2guanMKaW5k
ZXggNmYxZmUwY2RmMjQwYzQ4MjE5ZWViMThkMzZmYmM2MGRjODFjODlhMi4uMGVhMWNhZjQ4ZDk4
YjQ3ZmI5YTMzNGUzOTQzMWVlNzhhYmVkODQ2MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3dhdGNoLmpzCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy93YXRjaC5qcwpAQCAtNCw3ICs0LDYg
QEAgdmFyIG1vY2tMYXRpdHVkZSA9IDUxLjQ3ODsKIHZhciBtb2NrTG9uZ2l0dWRlID0gLTAuMTY2
OwogdmFyIG1vY2tBY2N1cmFjeSA9IDEwMC4wOwogCi12YXIgbW9ja0NvZGUgPSAyOwogdmFyIG1v
Y2tNZXNzYWdlID0gJ3Rlc3QnOwogCiB2YXIgcG9zaXRpb247CkBAIC0yMCw3ICsxOSw3IEBAIGZ1
bmN0aW9uIGNoZWNrUG9zaXRpb24ocCkgewogCiBmdW5jdGlvbiBjaGVja0Vycm9yKGUpIHsKICAg
ICBlcnJvciA9IGU7Ci0gICAgc2hvdWxkQmUoJ2Vycm9yLmNvZGUnLCAnbW9ja0NvZGUnKTsKKyAg
ICBzaG91bGRCZSgnZXJyb3IuY29kZScsICdlcnJvci5QT1NJVElPTl9VTkFWQUlMQUJMRScpOwog
ICAgIHNob3VsZEJlKCdlcnJvci5tZXNzYWdlJywgJ21vY2tNZXNzYWdlJyk7CiAgICAgZGVidWco
JycpOwogfQpAQCAtNDIsNyArNDEsNyBAQCBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24ud2F0Y2hQb3Np
dGlvbihmdW5jdGlvbihwKSB7CiAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgIGNoZWNrUG9z
aXRpb24ocCk7CiAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAg
ICAgICAgdGVzdFJ1bm5lci5zZXRNb2NrR2VvbG9jYXRpb25FcnJvcihtb2NrQ29kZSwgbW9ja01l
c3NhZ2UpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9z
aXRpb25VbmF2YWlsYWJsZUVycm9yKG1vY2tNZXNzYWdlKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICBjaGVja1Bvc2l0aW9uKHApOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vd2F0Y2gtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vd2F0Y2gtZXhwZWN0ZWQudHh0CmluZGV4
IGEwNDM0NTU2ZjJiZjA1NWE5M2RjNzM1YjNiYTNhZTY4OGQ1ZTE3ZjguLjRjNzVmMDhlNTM3M2Vk
Y2I5ZTVhMTAyMzBmNjY3NzBkYTY4NjYzNTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL0dlb2xvY2F0aW9uL3dhdGNoLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9HZW9sb2NhdGlvbi93YXRjaC1leHBlY3RlZC50eHQKQEAgLTExLDcgKzExLDcgQEAgUEFT
UyBwb3NpdGlvbi5jb29yZHMubGF0aXR1ZGUgaXMgbW9ja0xhdGl0dWRlCiBQQVNTIHBvc2l0aW9u
LmNvb3Jkcy5sb25naXR1ZGUgaXMgbW9ja0xvbmdpdHVkZQogUEFTUyBwb3NpdGlvbi5jb29yZHMu
YWNjdXJhY3kgaXMgbW9ja0FjY3VyYWN5CiAKLVBBU1MgZXJyb3IuY29kZSBpcyBtb2NrQ29kZQor
UEFTUyBlcnJvci5jb2RlIGlzIGVycm9yLlBPU0lUSU9OX1VOQVZBSUxBQkxFCiBQQVNTIGVycm9y
Lm1lc3NhZ2UgaXMgbW9ja01lc3NhZ2UKIAogUEFTUyBwb3NpdGlvbi5jb29yZHMubGF0aXR1ZGUg
aXMgbW9ja0xhdGl0dWRlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165427</attachid>
            <date>2012-09-24 12:21:23 -0700</date>
            <delta_ts>2012-09-24 13:48:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97386-20120924122044.patch</filename>
            <type>text/plain</type>
            <size>64534</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzUyZWQ2YzllNzg1YjYz
ZWExYzFhYzViOTNjZDA1ODI3MzhmZDkwZi4uMmNmYTBkYzcxZDM2YWI1YmMzM2ViYjQyZGVlZmNi
ZDVhNmJhN2U0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTA5LTI0ICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCBHZW9sb2Nh
dGlvbiBlcnJvciByZXBvcnRpbmcgaW4gdGhlIHRlc3Qgc3VwcG9ydAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTczODYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHZW9sb2NhdGlvbkNvbnRyb2xsZXIgY3Vy
cmVudGx5IGV4cG9zZSBHZW9sb2NhdGlvbkVycm9yIHdoaWNoIGNhbiBiZSBlaXRoZXIKKyAgICAg
ICAgUGVybWlzc2lvbkRlbmllZCBvciBQb3NpdGlvblVuYXZhaWxhYmxlLgorCisgICAgICAgIElu
IHByYWN0aWNlLCBvbmx5IFBvc2l0aW9uVW5hdmFpbGFibGUgaXMgc3VwcG9ydGVkIGFuZCB0ZXN0
ZWQsIG9ubHkgQ2hyb21lCisgICAgICAgIHNvbWV3aGF0IGV4cG9zZSBQZXJtaXNzaW9uRGVuaWVk
LgorICAgICAgICBUaGUgY29ycmVjdCB3YXkgdG8gZGVueSB0aGUgcGVybWlzc2lvbiBpcyB0aHJv
dWdoIEdlb2xvY2F0aW9uOjpzZXRJc0FsbG93ZWQoKS4KKworICAgICAgICBUaGlzIHBhdGNoIGRv
ZXMgc29tZSBvZiB0aGUgaW5pdGlhbCBjbGVhbnVwIHRvd2FyZCB0aGF0IGdvYWwsIHJlZHVjaW5n
IGhvdworICAgICAgICBmYXIgR2VvbG9jYXRpb25FcnJvciBpcyBzcHJlYWQuCisKKyAgICAgICAg
KiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgIE1hYyBkb2VzIG5vdCB1c2UgR2VvbG9jYXRpb25DbGllbnRNb2NrLCBp
dCBzaG91bGQgbm90IGJlIGNvbXBpbGVkIGluIFdlYkNvcmUuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW9s
b2NhdGlvbkNsaWVudE1vY2s6Okdlb2xvY2F0aW9uQ2xpZW50TW9jayk6CisgICAgICAgIChXZWJD
b3JlOjpHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnNldFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6Okdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0UG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKToK
KyAgICAgICAgVGhpcyBtZXRob2QgcmVwbGFjZSBzZXRFcnJvcigpLiBJdCBpcyBsaW1pdGVkIHRv
IFBvc2l0aW9uVW5hdmFpbGFibGUgZXJyb3JzLgorCisgICAgICAgIChXZWJDb3JlOjpHZW9sb2Nh
dGlvbkNsaWVudE1vY2s6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xp
ZW50TW9jazo6Y29udHJvbGxlclRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudE1vY2s6OmNsZWFyRXJyb3IpOgorICAgICAg
ICAqIHBsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmg6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKEdlb2xvY2F0aW9uQ2xpZW50TW9jayk6CisKIDIwMTItMDktMjQgIFNl
YW4gV2FuZyAgPFh1ZXdlbi5XYW5nQHRvcmNobW9iaWxlLmNvbS5jbj4KIAogICAgICAgICBbQmxh
Y2tCZXJyeV0gQmFzaWMgYXV0aGVudGljYXRpb24gY2hhbGxlbmdlIGNyZWRlbnRpYWxzIGZvciBz
dG9yZWQgY3JlZGVudGlhbHMgYWdhaW4gYWZ0ZXIgcmVzdGFydGluZyBicm93c2VyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L0NoYW5nZUxvZwppbmRleCBiOGMwMmE5MTljNzIxNGEwMmY3YWE0ODE2ZjdmMmFm
ZjRjOTEzMTAwLi5iNGYxYzk2ZTNlZGRjZjM1MzhkZGNjYWUyOGM4OGJkODZiNTlmNDczIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wOS0yNCAg
QmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggR2Vv
bG9jYXRpb24gZXJyb3IgcmVwb3J0aW5nIGluIHRoZSB0ZXN0IHN1cHBvcnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3Mzg2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnQ6OnNl
dE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcik6CisgICAgICAgICogV2Vi
S2l0U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuaDoKKyAgICAgICAgKER1bXBSZW5kZXJU
cmVlU3VwcG9ydCk6CisKIDIwMTItMDktMjQgIEFydmlkIE5pbHNzb24gIDxhbmlsc3NvbkByaW0u
Y29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBBZGQgY29va2llIGRhdGFiYXNlIEFQSQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBkYjY1YzVjZGU5YTA1NzJjMmQ4ZDFjZTZkYTQ2YjA0
MDFmMTMxMDg0Li5lZjEzMDBiNmJhY2ZiNGYyMTI0ZWZhNDNhNjgwZWExYzMxN2M4NmI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA5LTI0ICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCBHZW9sb2Nh
dGlvbiBlcnJvciByZXBvcnRpbmcgaW4gdGhlIHRlc3Qgc3VwcG9ydAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTczODYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHB1YmxpYy9XZWJHZW9sb2NhdGlvbkNs
aWVudE1vY2suaDoKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9jayk6CisgICAgICAg
ICogc3JjL1dlYkdlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWls
YWJsZUVycm9yKToKKwogMjAxMi0wOS0yNCAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEFkZCBzZXR0ZXJzIHRvIFdlYkZpbHRlck9wZXJh
dGlvbiBmb3IgSVBDIHBpY2tsaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggZmQyNTQ2ZjE1NGJhZDJk
MDRiN2MxNjY4NWY2MThjMTBkNDA5MDAyYS4uMjIxNWFkMmZjNDllMDAyYTI0ZmFlZmQ4Njk0NmI0
YzEwM2ZjMzI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA5LTI0
ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCBH
ZW9sb2NhdGlvbiBlcnJvciByZXBvcnRpbmcgaW4gdGhlIHRlc3Qgc3VwcG9ydAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTczODYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBv
cnRHdGs6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcik6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmg6CisgICAgICAg
IChEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGspOgorCiAyMDEyLTA5LTI0ICBaYW4gRG9iZXJzZWsg
IDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CiAKICAgICAgICAgW0d0a10gVW5za2lwIHRoZSBTaGFk
b3cgRE9NIGxheW91dCB0ZXN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDFhMWZjMTU5MTYxODg4NGVi
NTI5YWM5MTE0OWE5Nzk0OGY5OTBiNDUuLjNlYjlkN2NjOTQ0MTc1NDIwMTY4NzJiYWZhMDIwZTEw
MzNiZGE4MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wOS0yNCAg
QmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggR2Vv
bG9jYXRpb24gZXJyb3IgcmVwb3J0aW5nIGluIHRoZSB0ZXN0IHN1cHBvcnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3Mzg2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06
CisgICAgICAgICgtW1dlYlZpZXcgX2dlb2xvY2F0aW9uRGlkRmFpbFdpdGhNZXNzYWdlOl0pOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViVmlld1ByaXZhdGUuaDoKKwogMjAxMi0wOS0yMSAgQ2hyaXMg
Um9nZXJzICA8Y3JvZ2Vyc0Bnb29nbGUuY29tPgogCiAgICAgICAgIEFkZCBXZWIgQXVkaW8gc3Vw
cG9ydCBmb3IgZGVwcmVjYXRlZC9sZWdhY3kgQVBJcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCA1YWE2MmYx
NzkxNDAwZTcyN2NmOGFiMDQwZmEwMDc5ZGI4MjhiZTNmLi4wZjU4ZmQ2ZTUzN2NkZTYzYTU2MGM5
ZDU4M2ZjMmU3MjQ3MzE5NzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEy
LTA5LTI0ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAg
IEZpeCBHZW9sb2NhdGlvbiBlcnJvciByZXBvcnRpbmcgaW4gdGhlIHRlc3Qgc3VwcG9ydAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTczODYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0OjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Lmg6CisKIDIw
MTItMDktMjAgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBbUXRdIEVuYWJsZSBDU1MgcmVnaW9ucyBieSBkZWZhdWx0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmlu
ZGV4IDM3OTI0NGUwMzA0ZjJhZWY4ZDhlMTEyMGU2ZjAwMDJkOGY5MGU4MmIuLmU1MzEwY2YyN2Iz
NDEyNzhiZTU2ZDdmMTMzOGQwODE1YmJkMzVlNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0y
MTkyLDcgKzIxOTIsNiBAQCBfX1pON1dlYkNvcmUxMUdlb2xvY2F0aW9uMTJzZXRJc0FsbG93ZWRF
YgogX19aTjdXZWJDb3JlMTFHZW9sb2NhdGlvbkQxRXYKIF9fWk5LN1dlYkNvcmUxMUdlb2xvY2F0
aW9uNWZyYW1lRXYKIF9fWk43V2ViQ29yZTIwcHJvdmlkZUdlb2xvY2F0aW9uVG9FUE5TXzRQYWdl
RVBOU18xN0dlb2xvY2F0aW9uQ2xpZW50RQotX19aTjdXZWJDb3JlMjFHZW9sb2NhdGlvbkNsaWVu
dE1vY2sxM3NldFBlcm1pc3Npb25FYgogX19aTjdXZWJDb3JlMjFHZW9sb2NhdGlvbkNvbnRyb2xs
ZXIxM2Vycm9yT2NjdXJyZWRFUE5TXzE2R2VvbG9jYXRpb25FcnJvckUKIF9fWk43V2ViQ29yZTIx
R2VvbG9jYXRpb25Db250cm9sbGVyMTRzdXBwbGVtZW50TmFtZUV2CiBfX1pON1dlYkNvcmUyMUdl
b2xvY2F0aW9uQ29udHJvbGxlcjE1cG9zaXRpb25DaGFuZ2VkRVBOU18xOUdlb2xvY2F0aW9uUG9z
aXRpb25FCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggN2EyNWVhYTg4MTRhZDQ4NTczMzFhNmM1M2E3NjYzNjZjZDNjMjJkYy4uZDk1
NDFlOGI1ZDg2MjVjOTgyOTg4MjRjMWI2NmM1MWRkMzg5Nzg1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzYsOCArNzYsNiBA
QAogCQkwMzNBNkE3RTE0N0UwN0U3MDA1MDlCMzYgLyogSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9u
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAzM0E2
QTdEMTQ3RTA3RTcwMDUwOUIzNiAvKiBIVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uY3BwICovOyB9
OwogCQkwMzNBNkE4MTE0N0UwODg2MDA1MDlCMzYgLyogSlNIVE1MUHJvcGVydGllc0NvbGxlY3Rp
b24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDMz
QTZBODAxNDdFMDg4NjAwNTA5QjM2IC8qIEpTSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmNwcCAq
LzsgfTsKIAkJMDMzQTZBODMxNDdFMDhBNjAwNTA5QjM2IC8qIEpTSFRNTFByb3BlcnRpZXNDb2xs
ZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
MzNBNkE4MjE0N0UwOEE2MDA1MDlCMzYgLyogSlNIVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uaCAq
LzsgfTsKLQkJMDUyQkZDRTkxMjhBQkYxNTAwRkQzMzhEIC8qIEdlb2xvY2F0aW9uQ2xpZW50TW9j
ay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNTJC
RkNFODEyOEFCRjE1MDBGRDMzOEQgLyogR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcCAqLzsgfTsK
LQkJMDUyQkZDRUIxMjhBQkYyMTAwRkQzMzhEIC8qIEdlb2xvY2F0aW9uQ2xpZW50TW9jay5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDUyQkZDRUExMjhB
QkYyMTAwRkQzMzhEIC8qIEdlb2xvY2F0aW9uQ2xpZW50TW9jay5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA1NjJGOTQ2MTU3M0VDRUIwMDMxQ0Ex
NiAvKiBXZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA1NjJGOTQ0MTU3M0VDRUIwMDMxQ0ExNiAvKiBXZWJL
aXRDU1NTVkdEb2N1bWVudFZhbHVlLmNwcCAqLzsgfTsKIAkJMDU2MkY5NDcxNTczRUNFQjAwMzFD
QTE2IC8qIFdlYktpdENTU1NWR0RvY3VtZW50VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA1NjJGOTQ1MTU3M0VDRUIwMDMxQ0ExNiAvKiBXZWJL
aXRDU1NTVkdEb2N1bWVudFZhbHVlLmggKi87IH07CiAJCTA1NjJGOTYxMTU3M0Y4OEYwMDMxQ0Ex
NiAvKiBQbGF0Zm9ybUxheWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNTYyRjk2MDE1NzNGODhGMDAzMUNBMTYgLyogUGxhdGZvcm1MYXllci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03MDg4LDgg
KzcwODYsNiBAQAogCQkwMzNBNkE3RjE0N0UwN0Y5MDA1MDlCMzYgLyogSFRNTFByb3BlcnRpZXND
b2xsZWN0aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1MUHJvcGVydGllc0NvbGxl
Y3Rpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwMzNBNkE4MDE0N0UwODg2
MDA1MDlCMzYgLyogSlNIVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwMzNBNkE4MjE0N0UwOEE2MDA1MDlCMzYgLyog
SlNIVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNIVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMDUyQkZDRTgxMjhBQkYxNTAwRkQzMzhEIC8qIEdlb2xvY2F0aW9uQ2xpZW50TW9j
ay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBHZW9sb2NhdGlvbkNs
aWVudE1vY2suY3BwOyBwYXRoID0gbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwNTJCRkNFQTEyOEFCRjIxMDBGRDMzOEQgLyogR2Vv
bG9jYXRpb25DbGllbnRNb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEdl
b2xvY2F0aW9uQ2xpZW50TW9jay5oOyBwYXRoID0gbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2su
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDU2MkY5NDQxNTczRUNFQjAwMzFDQTE2
IC8qIFdlYktpdENTU1NWR0RvY3VtZW50VmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTA1NjJGOTQ1MTU3M0VDRUIwMDMxQ0ExNiAvKiBXZWJLaXRDU1NT
VkdEb2N1bWVudFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktp
dENTU1NWR0RvY3VtZW50VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDU2
MkY5NjAxNTczRjg4RjAwMzFDQTE2IC8qIFBsYXRmb3JtTGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1MYXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTU0NjEsOCArMTU0NTcsNiBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNTkzMDlB
MTAxMUY0QUU1ODAwMjUwNjAzIC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAgKi8s
CiAJCQkJNTkzMDlBMTIxMUY0QUU2QTAwMjUwNjAzIC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50
TW9jay5oICovLAotCQkJCTA1MkJGQ0U4MTI4QUJGMTUwMEZEMzM4RCAvKiBHZW9sb2NhdGlvbkNs
aWVudE1vY2suY3BwICovLAotCQkJCTA1MkJGQ0VBMTI4QUJGMjEwMEZEMzM4RCAvKiBHZW9sb2Nh
dGlvbkNsaWVudE1vY2suaCAqLywKIAkJCQkwRkU3MTQwMzE0MjE3MEI4MDBEQjMzQkEgLyogU2Ny
b2xsYmFyVGhlbWVNb2NrLmNwcCAqLywKIAkJCQkwRkU3MTQwNDE0MjE3MEI4MDBEQjMzQkEgLyog
U2Nyb2xsYmFyVGhlbWVNb2NrLmggKi8sCiAJCQkpOwpAQCAtMjM1MjEsNyArMjM1MTUsNiBAQAog
CQkJCTA3MjBCMEExMTREMzMyMzUwMDY0Mjk1NSAvKiBHZW5lcmljRXZlbnRRdWV1ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTc0NkFGMjQxNEY0RERFNjAwM0U3QTcwIC8qIEdlb2xvY2F0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzU2Q0IyMzEwRDVBQzgwMDBBNzdDNjQgLyogR2VvbG9jYXRp
b25DbGllbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTA1MkJGQ0VCMTI4QUJGMjEwMEZEMzM4RCAv
KiBHZW9sb2NhdGlvbkNsaWVudE1vY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NDZBRjI3MTRG
NERERTYwMDNFN0E3MCAvKiBHZW9sb2NhdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTk3NDZBRjI4MTRGNERERTYwMDNFN0E3MCAvKiBHZW9sb2NhdGlvbkVycm9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5NzQ2QUYyOTE0RjREREU2MDAzRTdBNzAgLyogR2VvbG9jYXRpb25Qb3Np
dGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjc1Myw3ICsyNjc0Niw2IEBACiAJCQkJMkQ0ODFG
MDMxNDZCNUM2NTAwQUE3ODM0IC8qIEdlbmVyYXRvckdlbmVyYXRlZEltYWdlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTA3MjBCMEEwMTREMzMyMzUwMDY0Mjk1NSAvKiBHZW5lcmljRXZlbnRRdWV1
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzQ2QUYyMzE0RjREREU2MDAzRTdBNzAgLyogR2Vv
bG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMDUyQkZDRTkxMjhBQkYxNTAwRkQzMzhE
IC8qIEdlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzQ2QUYy
NjE0RjREREU2MDAzRTdBNzAgLyogR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTA3MjBCMEEwMTREMzMyMzUwMDY0Mjk1NiAvKiBHZXN0dXJlRXZlbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQjJDM0RBNkQwRDAwNkNENjAwRUY2RjI2IC8qIEdseXBoUGFnZVRy
ZWVOb2RlLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwCmluZGV4IDI3NmI0YTM0MzA5Yzky
OThhOGY4NWJkOGQ2NjlkYjExOWRjOTE0MTguLjk5MDFiNjZhYTdhOWRiMmJjYzkwNDU5MTViZTE0
MWUyN2I4YTVkZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2Vv
bG9jYXRpb25DbGllbnRNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L0dlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtNDEsNiArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6R2VvbG9jYXRpb25DbGllbnRNb2NrKCkKICAg
ICA6IG1fY29udHJvbGxlcigwKQorICAgICwgbV9oYXNFcnJvcihmYWxzZSkKICAgICAsIG1fY29u
dHJvbGxlclRpbWVyKHRoaXMsICZHZW9sb2NhdGlvbkNsaWVudE1vY2s6OmNvbnRyb2xsZXJUaW1l
ckZpcmVkKQogICAgICwgbV9wZXJtaXNzaW9uVGltZXIodGhpcywgJkdlb2xvY2F0aW9uQ2xpZW50
TW9jazo6cGVybWlzc2lvblRpbWVyRmlyZWQpCiAgICAgLCBtX2lzQWN0aXZlKGZhbHNlKQpAQCAt
NjIsMTQgKzY0LDE1IEBAIHZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjpzZXRDb250cm9sbGVy
KEdlb2xvY2F0aW9uQ29udHJvbGxlciAqY29udHJvbGxlcikKIHZvaWQgR2VvbG9jYXRpb25DbGll
bnRNb2NrOjpzZXRQb3NpdGlvbihQYXNzUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+IHBvc2l0
aW9uKQogewogICAgIG1fbGFzdFBvc2l0aW9uID0gcG9zaXRpb247Ci0gICAgbV9sYXN0RXJyb3Ig
PSAwOworICAgIGNsZWFyRXJyb3IoKTsKICAgICBhc3luY1VwZGF0ZUNvbnRyb2xsZXIoKTsKIH0K
IAotdm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnNldEVycm9yKFBhc3NSZWZQdHI8R2VvbG9j
YXRpb25FcnJvcj4gZXJyb3IpCit2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0UG9zaXRp
b25VbmF2YWlsYWJsZUVycm9yKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQogewotICAgIG1f
bGFzdEVycm9yID0gZXJyb3I7Ci0gICAgbV9sYXN0UG9zaXRpb24gPSAwOworICAgIG1faGFzRXJy
b3IgPSB0cnVlOworICAgIG1fZXJyb3JNZXNzYWdlID0gZXJyb3JNZXNzYWdlOworICAgIG1fbGFz
dFBvc2l0aW9uID0gbnVsbHB0cjsKICAgICBhc3luY1VwZGF0ZUNvbnRyb2xsZXIoKTsKIH0KIApA
QCAtMTI1LDcgKzEyOCw3IEBAIHZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjpwZXJtaXNzaW9u
VGltZXJGaXJlZChXZWJDb3JlOjpUaW1lcjxHZW9sb2NhdGlvbkNsaWVuCiB2b2lkIEdlb2xvY2F0
aW9uQ2xpZW50TW9jazo6cmVzZXQoKQogewogICAgIG1fbGFzdFBvc2l0aW9uID0gMDsKLSAgICBt
X2xhc3RFcnJvciA9IDA7CisgICAgY2xlYXJFcnJvcigpOwogICAgIG1fcGVybWlzc2lvblN0YXRl
ID0gUGVybWlzc2lvblN0YXRlVW5zZXQ7CiB9CiAKQEAgLTE3MSwxMCArMTc0LDE5IEBAIHZvaWQg
R2VvbG9jYXRpb25DbGllbnRNb2NrOjpjb250cm9sbGVyVGltZXJGaXJlZChUaW1lcjxHZW9sb2Nh
dGlvbkNsaWVudE1vY2s+KiB0CiAgICAgQVNTRVJUX1VOVVNFRCh0aW1lciwgdGltZXIgPT0gJm1f
Y29udHJvbGxlclRpbWVyKTsKICAgICBBU1NFUlQobV9jb250cm9sbGVyKTsKIAotICAgIGlmICht
X2xhc3RQb3NpdGlvbi5nZXQoKSkKKyAgICBpZiAobV9sYXN0UG9zaXRpb24uZ2V0KCkpIHsKKyAg
ICAgICAgQVNTRVJUKCFtX2hhc0Vycm9yKTsKICAgICAgICAgbV9jb250cm9sbGVyLT5wb3NpdGlv
bkNoYW5nZWQobV9sYXN0UG9zaXRpb24uZ2V0KCkpOwotICAgIGVsc2UgaWYgKG1fbGFzdEVycm9y
LmdldCgpKQotICAgICAgICBtX2NvbnRyb2xsZXItPmVycm9yT2NjdXJyZWQobV9sYXN0RXJyb3Iu
Z2V0KCkpOworICAgIH0gZWxzZSBpZiAobV9oYXNFcnJvcikgeworICAgICAgICBSZWZQdHI8R2Vv
bG9jYXRpb25FcnJvcj4gZ2VvbG9jYXRpb0Vycm9yID0gR2VvbG9jYXRpb25FcnJvcjo6Y3JlYXRl
KEdlb2xvY2F0aW9uRXJyb3I6OlBvc2l0aW9uVW5hdmFpbGFibGUsIG1fZXJyb3JNZXNzYWdlKTsK
KyAgICAgICAgbV9jb250cm9sbGVyLT5lcnJvck9jY3VycmVkKGdlb2xvY2F0aW9FcnJvci5nZXQo
KSk7CisgICAgfQorfQorCit2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6Y2xlYXJFcnJvcigp
Cit7CisgICAgbV9oYXNFcnJvciA9IGZhbHNlOworICAgIG1fZXJyb3JNZXNzYWdlID0gU3RyaW5n
KCk7CiB9CiAKIH0gLy8gV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmgKaW5kZXggOGFiZDVlOTcwZThjMDg5MzBmYTFh
NWEzMzcyNGYzOWFkODBmMDU4ZS4uZjM4MGMxNDQzNDc5NzNkYjUxMmMwZmUyNDU4MGRiZmFlZGZm
YzUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlv
bkNsaWVudE1vY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0
aW9uQ2xpZW50TW9jay5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKQEAgLTQyLDkgKzQzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBHZW9sb2NhdGlvbkNvbnRyb2xsZXI7CiBjbGFzcyBHZW9sb2NhdGlvblBvc2l0aW9uOwotY2xh
c3MgR2VvbG9jYXRpb25FcnJvcjsKIAotLy8gUHJvdmlkZXMgYSBtb2NrIG9iamVjdCBmb3IgdGhl
IGdlb2xvY2F0aW9uIGNsaWVudAorLy8gRklYTUU6IHRoaXMgc2hvdWxkIG5vdCBiZSBpbiBXZWJD
b3JlLiBJdCBzaG91bGQgYmUgbW92ZWQgdG8gV2ViS2l0LgorLy8gUHJvdmlkZXMgYSBtb2NrIG9i
amVjdCBmb3IgdGhlIGdlb2xvY2F0aW9uIGNsaWVudC4KIGNsYXNzIEdlb2xvY2F0aW9uQ2xpZW50
TW9jayA6IHB1YmxpYyBHZW9sb2NhdGlvbkNsaWVudCB7CiBwdWJsaWM6CiAgICAgR2VvbG9jYXRp
b25DbGllbnRNb2NrKCk7CkBAIC01Myw4ICs1NCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0
KCk7CiAgICAgdm9pZCBzZXRDb250cm9sbGVyKEdlb2xvY2F0aW9uQ29udHJvbGxlciopOwogCi0g
ICAgdm9pZCBzZXRFcnJvcihQYXNzUmVmUHRyPEdlb2xvY2F0aW9uRXJyb3I+KTsKICAgICB2b2lk
IHNldFBvc2l0aW9uKFBhc3NSZWZQdHI8R2VvbG9jYXRpb25Qb3NpdGlvbj4pOworICAgIHZvaWQg
c2V0UG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsK
ICAgICB2b2lkIHNldFBlcm1pc3Npb24oYm9vbCBhbGxvd2VkKTsKICAgICBpbnQgbnVtYmVyT2ZQ
ZW5kaW5nUGVybWlzc2lvblJlcXVlc3RzKCkgY29uc3Q7CiAKQEAgLTc0LDkgKzc1LDEyIEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBhc3luY1VwZGF0ZVBlcm1pc3Npb24oKTsKICAgICB2b2lkIHBlcm1p
c3Npb25UaW1lckZpcmVkKFRpbWVyPEdlb2xvY2F0aW9uQ2xpZW50TW9jaz4qKTsKIAorICAgIHZv
aWQgY2xlYXJFcnJvcigpOworCiAgICAgR2VvbG9jYXRpb25Db250cm9sbGVyKiBtX2NvbnRyb2xs
ZXI7CiAgICAgUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+IG1fbGFzdFBvc2l0aW9uOwotICAg
IFJlZlB0cjxHZW9sb2NhdGlvbkVycm9yPiBtX2xhc3RFcnJvcjsKKyAgICBib29sIG1faGFzRXJy
b3I7CisgICAgU3RyaW5nIG1fZXJyb3JNZXNzYWdlOwogICAgIFRpbWVyPEdlb2xvY2F0aW9uQ2xp
ZW50TW9jaz4gbV9jb250cm9sbGVyVGltZXI7CiAgICAgVGltZXI8R2VvbG9jYXRpb25DbGllbnRN
b2NrPiBtX3Blcm1pc3Npb25UaW1lcjsKICAgICBib29sIG1faXNBY3RpdmU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnQuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0LmNwcAppbmRleCBlNGU0ZWYwYzA3ZDZlYTBhYzM1NWNkOTI2ZDJhZjU0
ODc3ZjFjMDMzLi5lYTRhYzU2MDE5ODE5ODIyNzAyN2Q2YmNhNzRiNTNlYzYzM2JiOGJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC05NSwyMCArOTYsMTAgQEAgdm9pZCBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnQ6OnJlc2V0R2VvbG9jYXRpb25Nb2NrKFdlYlBhZ2UqIHdlYlBhZ2UpCiAg
ICAgbW9ja0NsaWVudC0+cmVzZXQoKTsKIH0KIAotdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnQ6
OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKFdlYlBhZ2UqIHdlYlBhZ2UsIGludCBlcnJvckNvZGUs
IGNvbnN0IFN0cmluZyBtZXNzYWdlKQordm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnQ6OnNldE1v
Y2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihXZWJQYWdlKiB3ZWJQYWdlLCBj
b25zdCBTdHJpbmcgbWVzc2FnZSkKIHsKLSAgICBHZW9sb2NhdGlvbkVycm9yOjpFcnJvckNvZGUg
Y29kZSA9IEdlb2xvY2F0aW9uRXJyb3I6OlBvc2l0aW9uVW5hdmFpbGFibGU7Ci0gICAgc3dpdGNo
IChlcnJvckNvZGUpIHsKLSAgICBjYXNlIFBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJT05fREVOSUVE
OgotICAgICAgICBjb2RlID0gR2VvbG9jYXRpb25FcnJvcjo6UGVybWlzc2lvbkRlbmllZDsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQb3NpdGlvbkVycm9yOjpQT1NJVElPTl9VTkFWQUlMQUJM
RToKLSAgICAgICAgY29kZSA9IEdlb2xvY2F0aW9uRXJyb3I6OlBvc2l0aW9uVW5hdmFpbGFibGU7
Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQogICAgIEdlb2xvY2F0aW9uQ2xpZW50TW9jayogbW9j
a0NsaWVudCA9IHN0YXRpY19jYXN0PEdlb2xvY2F0aW9uQ2xpZW50TW9jayo+KEdlb2xvY2F0aW9u
Q29udHJvbGxlcjo6ZnJvbShjb3JlUGFnZSh3ZWJQYWdlKSktPmNsaWVudCgpKTsKLSAgICBtb2Nr
Q2xpZW50LT5zZXRFcnJvcihHZW9sb2NhdGlvbkVycm9yOjpjcmVhdGUoY29kZSwgbWVzc2FnZSkp
OworICAgIG1vY2tDbGllbnQtPnNldFBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihtZXNzYWdlKTsK
IH0KIAogdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnQ6OnNldE1vY2tHZW9sb2NhdGlvblBlcm1p
c3Npb24oV2ViUGFnZSogd2ViUGFnZSwgYm9vbCBhbGxvd2VkKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0Lmgg
Yi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnQuaAppbmRleCA1OGZjMWI1M2VkYjVkOGFhYzBkMzgyNjA1NjVhYzQ3MDIxZWEyNWU2Li4w
MWZlNGY4M2E3ZjJlYWIwZTEyOTg3MGE5ZGRjZjE4OGU4ODIxODg5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnQuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
UmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKQEAgLTUyLDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGludCBudW1i
ZXJPZlBlbmRpbmdHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0cyhCbGFja0JlcnJ5OjpXZWJL
aXQ6OldlYlBhZ2UqKTsKICAgICBzdGF0aWMgdm9pZCByZXNldEdlb2xvY2F0aW9uTW9jayhCbGFj
a0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2UqKTsKLSAgICBzdGF0aWMgdm9pZCBzZXRNb2NrR2VvbG9j
YXRpb25FcnJvcihCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2UqLCBpbnQgZXJyb3JDb2RlLCBj
b25zdCBXVEY6OlN0cmluZyBtZXNzYWdlKTsKKyAgICBzdGF0aWMgdm9pZCBzZXRNb2NrR2VvbG9j
YXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdl
KiwgY29uc3QgV1RGOjpTdHJpbmcgbWVzc2FnZSk7CiAgICAgc3RhdGljIHZvaWQgc2V0TW9ja0dl
b2xvY2F0aW9uUGVybWlzc2lvbihCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2UqLCBib29sIGFs
bG93ZWQpOwogICAgIHN0YXRpYyB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKEJsYWNr
QmVycnk6OldlYktpdDo6V2ViUGFnZSosIGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVk
ZSwgZG91YmxlIGFjY3VyYWN5KTsKICAgICBzdGF0aWMgdm9pZCBzY2FsZVBhZ2VCeShCbGFja0Jl
cnJ5OjpXZWJLaXQ6OldlYlBhZ2UqLCBmbG9hdCwgZmxvYXQsIGZsb2F0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0aW9uQ2xpZW50TW9jay5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR2VvbG9jYXRpb25DbGllbnRNb2Nr
LmgKaW5kZXggMDUyYTU0NmFkY2MyZDFlYmJkMjI0YjZkNzc0NTQ2Zjc3YWNjNTVhZS4uN2VmZjJi
YTBkYzNkY2M1ZWU2MmY3ZDgwMTlhMjA4NTkxODNkNWYxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrLmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrLmgKQEAg
LTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIH5XZWJHZW9sb2NhdGlvbkNsaWVudE1vY2soKSB7
IHJlc2V0KCk7IH0KIAogICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRQb3NpdGlvbihkb3VibGUg
bGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSk7Ci0gICAgV0VCS0lU
X0VYUE9SVCB2b2lkIHNldEVycm9yKGludCBlcnJvckNvZGUsIGNvbnN0IFdlYlN0cmluZyYgbWVz
c2FnZSk7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9u
VW5hdmFpbGFibGVFcnJvcihjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UpOwogICAgIFdFQktJVF9F
WFBPUlQgdm9pZCBzZXRQZXJtaXNzaW9uKGJvb2wpOwogICAgIFdFQktJVF9FWFBPUlQgaW50IG51
bWJlck9mUGVuZGluZ1Blcm1pc3Npb25SZXF1ZXN0cygpIGNvbnN0OwogICAgIFdFQktJVF9FWFBP
UlQgdm9pZCByZXNldE1vY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkdlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJHZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwCmluZGV4IDNkOTYzMDcwN2ZlYjViNjNm
MDNlM2UyNDE5YjJlMzA1YWY4ZDAyMTIuLjFkZTUxMGM2MzI3ODQ1ZDQ5ZGQzODJiZWFmODI5MDMw
YmNmMGQxYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdlb2xv
Y2F0aW9uQ2xpZW50TW9jay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
R2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIldl
Ykdlb2xvY2F0aW9uRXJyb3IuaCIKICNpbmNsdWRlICJXZWJHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgorI2luY2x1ZGUg
InBsYXRmb3JtL1dlYlN0cmluZy5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAt
NTgsMjMgKzU5LDkgQEAgdm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnNldFBvc2l0aW9u
KGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG8KICAgICBtX2NsaWVudE1vY2st
PnNldFBvc2l0aW9uKHdlYlBvc2l0aW9uKTsKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVu
dE1vY2s6OnNldEVycm9yKGludCBlcnJvckNvZGUsIGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSkK
K3ZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlv
blVuYXZhaWxhYmxlRXJyb3IoY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlKQogewotICAgIFdlYkdl
b2xvY2F0aW9uRXJyb3I6OkVycm9yIGNvZGU7Ci0gICAgc3dpdGNoIChlcnJvckNvZGUpIHsKLSAg
ICBjYXNlIFBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJT05fREVOSUVEOgotICAgICAgICBjb2RlID0g
V2ViR2VvbG9jYXRpb25FcnJvcjo6RXJyb3JQZXJtaXNzaW9uRGVuaWVkOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIFBvc2l0aW9uRXJyb3I6OlBPU0lUSU9OX1VOQVZBSUxBQkxFOgotICAgICAg
ICBjb2RlID0gV2ViR2VvbG9jYXRpb25FcnJvcjo6RXJyb3JQb3NpdGlvblVuYXZhaWxhYmxlOwot
ICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFdlYkdlb2xvY2F0aW9uRXJyb3Igd2Vi
RXJyb3IoY29kZSwgbWVzc2FnZSk7Ci0gICAgbV9jbGllbnRNb2NrLT5zZXRFcnJvcih3ZWJFcnJv
cik7CisgICAgbV9jbGllbnRNb2NrLT5zZXRQb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IobWVzc2Fn
ZSk7CiB9CiAKIHZvaWQgV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrOjpzZXRQZXJtaXNzaW9uKGJv
b2wgYWxsb3dlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCmluZGV4IDQ2ZTE4ZWVlNWViYmEx
N2M4OGUxOWFlNTQ2ODM1ODJkZTYyMzIyY2IuLmIzOWQ1YWU3NWQ3ZmJkNTM4NmFhY2NiMzM1Mzkx
ODFhYjFiNDFkNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcApAQCAtMyw2ICszLDcgQEAK
ICAqICBDb3B5cmlnaHQgKEMpIDIwMTAgSm9vbmUgSHVyIDxqb29uZUBrbGRwLm9yZz4KICAqICBD
b3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBD
b3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNjU5
LDIzICs2NjAsMTEgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldE1vY2tHZW9s
b2NhdGlvblBvc2l0aW9uKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcKICNlbmRpZgogfQogCi12b2lk
IER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoV2ViS2l0
V2ViVmlldyogd2ViVmlldywgaW50IGVycm9yQ29kZSwgY29uc3QgZ2NoYXIqIGVycm9yTWVzc2Fn
ZSkKK3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3Np
dGlvblVuYXZhaWxhYmxlRXJyb3IoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgZ2NoYXIq
IGVycm9yTWVzc2FnZSkKIHsKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCiAgICAgR2VvbG9jYXRp
b25DbGllbnRNb2NrKiBtb2NrID0gc3RhdGljX2Nhc3Q8R2VvbG9jYXRpb25DbGllbnRNb2NrKj4o
R2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKGNvcmUod2ViVmlldykpLT5jbGllbnQoKSk7Ci0K
LSAgICBHZW9sb2NhdGlvbkVycm9yOjpFcnJvckNvZGUgY29kZTsKLSAgICBzd2l0Y2ggKGVycm9y
Q29kZSkgewotICAgIGNhc2UgUG9zaXRpb25FcnJvcjo6UEVSTUlTU0lPTl9ERU5JRUQ6Ci0gICAg
ICAgIGNvZGUgPSBHZW9sb2NhdGlvbkVycm9yOjpQZXJtaXNzaW9uRGVuaWVkOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFBvc2l0aW9uRXJyb3I6OlBPU0lUSU9OX1VOQVZBSUxBQkxFOgotICAg
IGRlZmF1bHQ6Ci0gICAgICAgIGNvZGUgPSBHZW9sb2NhdGlvbkVycm9yOjpQb3NpdGlvblVuYXZh
aWxhYmxlOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBtb2NrLT5zZXRFcnJvcihHZW9s
b2NhdGlvbkVycm9yOjpjcmVhdGUoY29kZSwgZXJyb3JNZXNzYWdlKSk7CisgICAgbW9jay0+c2V0
UG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKGVycm9yTWVzc2FnZSk7CiAjZW5kaWYKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnRHdGsuaAppbmRleCA3ZTE1MDU3ZWRkNGM1NTYwYTExOGJkZThhZmZjYmJlYmI0
ZjlhMWM3Li40NGFjNzgzMjlhZDE2NjM5YjFjMmEzODhmMWE1NDQ3OGQzMWI4ZThjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnRHdGsuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSBS
ZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
IENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgog
ICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljCkBAIC0xMTEsNyArMTEyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2
b2lkIHJlc2V0R2VvbG9jYXRpb25DbGllbnRNb2NrKFdlYktpdFdlYlZpZXcqKTsKICAgICBzdGF0
aWMgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25QZXJtaXNzaW9uKFdlYktpdFdlYlZpZXcqLCBib29s
IGFsbG93ZWQpOwogICAgIHN0YXRpYyB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKFdl
YktpdFdlYlZpZXcqLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBh
Y2N1cmFjeSk7Ci0gICAgc3RhdGljIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoV2ViS2l0
V2ViVmlldyosIGludCBlcnJvckNvZGUsIGNvbnN0IGdjaGFyKiBlcnJvck1lc3NhZ2UpOworICAg
IHN0YXRpYyB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihX
ZWJLaXRXZWJWaWV3KiwgY29uc3QgZ2NoYXIqIGVycm9yTWVzc2FnZSk7CiAgICAgc3RhdGljIGlu
dCBudW1iZXJPZlBlbmRpbmdHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0cyhXZWJLaXRXZWJW
aWV3Kik7CiAKICAgICBzdGF0aWMgdm9pZCBzZXRQYWdlQ2FjaGVTdXBwb3J0c1BsdWdpbnMoV2Vi
S2l0V2ViVmlldyosIGJvb2wgZW5hYmxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KaW5kZXggYzFmMGEyZDg5ZDQyZWRiOWJlODk4MzJiMzM0Y2RiOTQwNDBhYTg2Yi4uODBkNTQx
NzRjZDEyZGNmMTNlNjRiYjgyNmFmZDFmZWNmZmM1MmQyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQpAQCAtNjUxMSwxMSArNjUxMSwxMSBAQCBzdGF0aWMgdm9pZCBnbGliQ29u
dGV4dEl0ZXJhdGlvbkNhbGxiYWNrKENGUnVuTG9vcE9ic2VydmVyUmVmLCBDRlJ1bkxvb3BBY3Rp
dml0eQogI2VuZGlmIC8vIEVOQUJMRShHRU9MT0NBVElPTikKIH0KIAotLSAodm9pZClfZ2VvbG9j
YXRpb25EaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKKy0gKHZvaWQpX2dlb2xvY2F0
aW9uRGlkRmFpbFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKWVycm9yTWVzc2FnZQogewogI2lmIEVO
QUJMRShHRU9MT0NBVElPTikKICAgICBpZiAoX3ByaXZhdGUgJiYgX3ByaXZhdGUtPnBhZ2UpIHsK
LSAgICAgICAgUmVmUHRyPEdlb2xvY2F0aW9uRXJyb3I+IGdlb2xvY2F0aW9FcnJvciA9IEdlb2xv
Y2F0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvbkVycm9yOjpQb3NpdGlvblVuYXZhaWxhYmxl
LCBbZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25dKTsKKyAgICAgICAgUmVmUHRyPEdlb2xvY2F0
aW9uRXJyb3I+IGdlb2xvY2F0aW9FcnJvciA9IEdlb2xvY2F0aW9uRXJyb3I6OmNyZWF0ZShHZW9s
b2NhdGlvbkVycm9yOjpQb3NpdGlvblVuYXZhaWxhYmxlLCBlcnJvck1lc3NhZ2UpOwogICAgICAg
ICBXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20oX3ByaXZhdGUtPnBhZ2UpLT5l
cnJvck9jY3VycmVkKGdlb2xvY2F0aW9FcnJvci5nZXQoKSk7CiAgICAgfQogI2VuZGlmIC8vIEVO
QUJMRShHRU9MT0NBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZh
dGUuaAppbmRleCA4MjY0NzRlNDFiMzRjMjJiZmY1NDU2MGY2YTBiMThmNzIzZjkwN2UzLi5jNDZk
MzVlMTIzMjU2NjlkNjFhZDhlMmFmN2QyOTQ1ZDNhYjFjNGVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCkBAIC03MjgsNyArNzI4LDcgQEAgQ291bGQgYmUg
d29ydGggYWRkaW5nIHRvIHRoZSBBUEkuCiAtIChpZDxXZWJHZW9sb2NhdGlvblByb3ZpZGVyPilf
Z2VvbG9jYXRpb25Qcm92aWRlcjsKIAogLSAodm9pZClfZ2VvbG9jYXRpb25EaWRDaGFuZ2VQb3Np
dGlvbjooV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiAqKXBvc2l0aW9uOwotLSAodm9pZClfZ2VvbG9j
YXRpb25EaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3I7CistICh2b2lkKV9nZW9sb2Nh
dGlvbkRpZEZhaWxXaXRoTWVzc2FnZTooTlNTdHJpbmcgKillcnJvck1lc3NhZ2U7CiBAZW5kCiAK
IEBpbnRlcmZhY2UgV2ViVmlldyAoV2ViVmlld05vdGlmaWNhdGlvbikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3Bw
IGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dC5jcHAKaW5kZXggZGM4MjMxNjVjNzMxZWMwNTJlOWUzMmEyMmUyODE2ODczZGYwZTJhYy4uMWVj
MzY0NGUwNzcwM2JmYmNjMjA0Y2NjM2Q1Nzk2N2FkNDc4NzM5YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dC5jcHAKQEAgLTIsNyArMiw3IEBACiAgICAgQ29weXJpZ2h0IChDKSAyMDEwIFJvYmVydCBIb2dh
biA8cm9iZXJ0QHJvYmVydGhvZ2FuLm5ldD4KICAgICBDb3B5cmlnaHQgKEMpIDIwMDgsMjAwOSwy
MDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICAgIENv
cHlyaWdodCAoQykgMjAwNyBTdGFpa29zIENvbXB1dGluZyBTZXJ2aWNlcyBJbmMuCi0gICAgQ29w
eXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTIg
QXBwbGUgSW5jLgogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC03NTMsMjMgKzc1MywxMiBAQCB2b2lk
IER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihRV2Vi
UGFnZSogcGFnZSwgZG91YmxlCiAjZW5kaWYKIH0KIAotdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdDo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoUVdlYlBhZ2UqIHBhZ2UsIGludCBlcnJvckNv
ZGUsIGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2UpCit2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0
OjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoUVdlYlBhZ2UqIHBh
Z2UsIGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2UpCiB7CiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQog
ICAgIFBhZ2UqIGNvcmVQYWdlID0gUVdlYlBhZ2VQcml2YXRlOjpjb3JlKHBhZ2UpOwotCi0gICAg
R2VvbG9jYXRpb25FcnJvcjo6RXJyb3JDb2RlIGNvZGUgPSBHZW9sb2NhdGlvbkVycm9yOjpQb3Np
dGlvblVuYXZhaWxhYmxlOwotICAgIHN3aXRjaCAoZXJyb3JDb2RlKSB7Ci0gICAgY2FzZSBQb3Np
dGlvbkVycm9yOjpQRVJNSVNTSU9OX0RFTklFRDoKLSAgICAgICAgY29kZSA9IEdlb2xvY2F0aW9u
RXJyb3I6OlBlcm1pc3Npb25EZW5pZWQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUG9zaXRp
b25FcnJvcjo6UE9TSVRJT05fVU5BVkFJTEFCTEU6Ci0gICAgICAgIGNvZGUgPSBHZW9sb2NhdGlv
bkVycm9yOjpQb3NpdGlvblVuYXZhaWxhYmxlOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KICAg
ICBHZW9sb2NhdGlvbkNsaWVudE1vY2sqIG1vY2tDbGllbnQgPSBzdGF0aWNfY2FzdDxHZW9sb2Nh
dGlvbkNsaWVudE1vY2sqPihHZW9sb2NhdGlvbkNvbnRyb2xsZXI6OmZyb20oY29yZVBhZ2UpLT5j
bGllbnQoKSk7Ci0gICAgbW9ja0NsaWVudC0+c2V0RXJyb3IoR2VvbG9jYXRpb25FcnJvcjo6Y3Jl
YXRlKGNvZGUsIG1lc3NhZ2UpKTsKKyAgICBtb2NrQ2xpZW50LT5zZXRQb3NpdGlvblVuYXZhaWxh
YmxlRXJyb3IobWVzc2FnZSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oIGIvU291cmNlL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oCmluZGV4IDg2
MjIxMzY1Nzk4ZjEwYTMwNmNkY2U4N2UyMjQ3MzAxMWU3ZjlkZWYuLmNlZmI5ZDFjODc0NTY1Yzdm
ZjAwZGIyZWVhMDM0MjMzZmI2MWRmMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgKQEAgLTIsNyArMiw3
IEBACiAgICAgQ29weXJpZ2h0IChDKSAyMDEwIFJvYmVydCBIb2dhbiA8cm9iZXJ0QHJvYmVydGhv
Z2FuLm5ldD4KICAgICBDb3B5cmlnaHQgKEMpIDIwMDgsMjAwOSwyMDEwIE5va2lhIENvcnBvcmF0
aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICAgIENvcHlyaWdodCAoQykgMjAwNyBT
dGFpa29zIENvbXB1dGluZyBTZXJ2aWNlcyBJbmMuCi0gICAgQ29weXJpZ2h0IChDKSAyMDA3IEFw
cGxlIEluYy4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTIgQXBwbGUgSW5jLgogCiAgICAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCkBAIC0xNDEsNyArMTQxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lk
IHJlc2V0R2VvbG9jYXRpb25Nb2NrKFFXZWJQYWdlKik7CiAgICAgc3RhdGljIHZvaWQgc2V0TW9j
a0dlb2xvY2F0aW9uUGVybWlzc2lvbihRV2ViUGFnZSosIGJvb2wgYWxsb3dlZCk7CiAgICAgc3Rh
dGljIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oUVdlYlBhZ2UqLCBkb3VibGUgbGF0
aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSk7Ci0gICAgc3RhdGljIHZv
aWQgc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoUVdlYlBhZ2UqLCBpbnQgZXJyb3JDb2RlLCBjb25z
dCBRU3RyaW5nJiBtZXNzYWdlKTsKKyAgICBzdGF0aWMgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Q
b3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoUVdlYlBhZ2UqLCBjb25zdCBRU3RyaW5nJiBtZXNzYWdl
KTsKICAgICBzdGF0aWMgaW50IG51bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RzKFFXZWJQYWdlKik7CiAKICAgICBzdGF0aWMgaW50IHdvcmtlclRocmVhZENvdW50KCk7
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTdk
MWZmMzExZDllYmIwOGQ0YjA1ODk5OWU0NGEwYTdiYzk0ZmU0Ny4uNzQwZDk4OWEyZjhiZjU5NzMz
NzYyNGM2ODM3YjQxNmI4MWFiNGE3NSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTA5LTI0ICBCZW5qYW1pbiBQ
b3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCBHZW9sb2NhdGlvbiBl
cnJvciByZXBvcnRpbmcgaW4gdGhlIHRlc3Qgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTczODYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKyAgICAgICAgVGhlIFRlc3RSdW5uZXIgd2FzIGV4cG9zaW5nIGludGVy
bmFsIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb2YKKyAgICAgICAgdGhlIEdlb2xvY2F0aW9uIG9i
amVjdCB0aHJvdWdoIHNldE1vY2tHZW9sb2NhdGlvbkVycm9yKCkuCisKKyAgICAgICAgSW4gcHJh
Y3RpY2UsIG9ubHkgdGhlIGVycm9yIGNvZGUgUG9zaXRpb25VbmF2YWlsYWJsZSBpcyBzdXBwb3J0
ZWQKKyAgICAgICAgb3IgZXZlbiBpbXBsZW1lbnRlZC4KKworICAgICAgICBFeHBvc2luZyBzZXRN
b2NrR2VvbG9jYXRpb25FcnJvcigpIGRvZXMgbm90IG1ha2Ugc2Vuc2UgZm9yIFdlYktpdDIgYXMK
KyAgICAgICAgcGFzc2luZyBnZW5lcmljIGVycm9ycyBmcm9tIHRoZSBVSVByb2Nlc3MgaXMgYSBi
YWQgaWRlYS4gVGhpcyBpcyB0aGUKKyAgICAgICAgb3Bwb3J0dW5pdHkgdG8gY2xlYW4gVGVzdFJ1
bm5lciBhbmQgcHJlcGFyZSBhbmQgaW50ZXJmYWNlIHN1aXRhYmxlIGZvciBXZWJLaXQyLgorCisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChzZXRNb2Nr
R2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3JDYWxsYmFjayk6CisgICAgICAgIChU
ZXN0UnVubmVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rl
c3RSdW5uZXIuaDoKKyAgICAgICAgKFRlc3RSdW5uZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2JsYWNrYmVycnkvVGVzdFJ1bm5lckJsYWNrQmVycnkuY3BwOgorICAgICAgICAoVGVzdFJ1
bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmNwcDoKKyAgICAgICAg
KERSVFRlc3RSdW5uZXI6OkRSVFRlc3RSdW5uZXIpOgorICAgICAgICAoRFJUVGVzdFJ1bm5lcjo6
c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmg6CisgICAgICAgIChEUlRUZXN0
UnVubmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHA6
CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxh
YmxlRXJyb3IpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9UZXN0UnVubmVyR3RrLmNw
cDoKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFp
bGFibGVFcnJvcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL01vY2tHZW9sb2NhdGlv
blByb3ZpZGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL01vY2tHZW9sb2NhdGlv
blByb3ZpZGVyLm1tOgorICAgICAgICAoLVtNb2NrR2VvbG9jYXRpb25Qcm92aWRlciBkZWFsbG9j
XSk6CisgICAgICAgICgtW01vY2tHZW9sb2NhdGlvblByb3ZpZGVyIHJlc2V0RXJyb3JdKToKKyAg
ICAgICAgKC1bTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIgc2V0UG9zaXRpb246XSk6CisgICAgICAg
ICgtW01vY2tHZW9sb2NhdGlvblByb3ZpZGVyIHNldFBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcldp
dGhNZXNzYWdlOl0pOgorICAgICAgICAoLVtNb2NrR2VvbG9jYXRpb25Qcm92aWRlciBsYXN0UG9z
aXRpb25dKToKKyAgICAgICAgKC1bTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIgdGltZXJGaXJlZF0p
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tOgorICAgICAg
ICAoVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9y
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuY3BwOgorICAgICAg
ICAoVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9y
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuaDoKKyAgICAgICAg
KFRlc3RSdW5uZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2lu
LmNwcDoKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5h
dmFpbGFibGVFcnJvcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd3gvVGVzdFJ1bm5lcld4
LmNwcDoKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5h
dmFpbGFibGVFcnJvcik6CisKIDIwMTItMDktMjQgIFphbiBEb2JlcnNlayAgPHphbmRvYmVyc2Vr
QGdtYWlsLmNvbT4KIAogICAgICAgICBbR3RrXSBVbnNraXAgdGhlIFNoYWRvdyBET00gbGF5b3V0
IHRlc3RzCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDFkMDBjNTBhMzVhMzdl
YzBmYWRjMThhZDg0ZTMwZGI3MThjOGEwZDQuLjlmN2E3YzFiZWNhMGFiYTg0MzY5ZTk3ZmVlOTFl
ZWMyZGMyNmNkNTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIu
Y3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIw
MDksIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDEwIEpvb25lIEh1ciA8am9vbmVAa2xkcC5vcmc+CiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CkBAIC0xMDk1LDE3ICsxMDk1LDE2IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldE1vY2tHZW9sb2Nh
dGlvblBvc2l0aW9uQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqCiAgICAgcmV0
dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCi1zdGF0aWMgSlNWYWx1ZVJl
ZiBzZXRNb2NrR2VvbG9jYXRpb25FcnJvckNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3Vt
ZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbikKK3N0YXRpYyBKU1ZhbHVlUmVmIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFp
bGFibGVFcnJvckNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5j
dGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0
IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKLSAgICBp
ZiAoYXJndW1lbnRDb3VudCA8IDIpCisgICAgaWYgKGFyZ3VtZW50Q291bnQgIT0gMSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogCi0gICAgaW50IGNvZGUg
PSBKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzBdLCBOVUxMKTsKLSAgICBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gbWVzc2FnZShBZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29weShj
b250ZXh0LCBhcmd1bWVudHNbMV0sIGV4Y2VwdGlvbikpOworICAgIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBtZXNzYWdlKEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3Vt
ZW50c1swXSwgZXhjZXB0aW9uKSk7CiAgICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKIAogICAgIFRl
c3RSdW5uZXIqIGNvbnRyb2xsZXIgPSByZWludGVycHJldF9jYXN0PFRlc3RSdW5uZXIqPihKU09i
amVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwotICAgIGNvbnRyb2xsZXItPnNldE1vY2tHZW9s
b2NhdGlvbkVycm9yKGNvZGUsIG1lc3NhZ2UuZ2V0KCkpOworICAgIGNvbnRyb2xsZXItPnNldE1v
Y2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihtZXNzYWdlLmdldCgpKTsKIAog
ICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KQEAgLTIyNjYsNyAr
MjI2NSw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIFRlc3RSdW5uZXI6OnN0YXRpY0Z1bmN0aW9ucygp
CiAgICAgICAgIHsgInNldE1haW5GcmFtZUlzRmlyc3RSZXNwb25kZXIiLCBzZXRNYWluRnJhbWVJ
c0ZpcnN0UmVzcG9uZGVyQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0TWluaW11bVRp
bWVySW50ZXJ2YWwiLCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbENhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAg
ICAgICAgIHsgInNldE1vY2tEZXZpY2VPcmllbnRhdGlvbiIsIHNldE1vY2tEZXZpY2VPcmllbnRh
dGlvbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCi0gICAgICAgIHsgInNldE1vY2tHZW9sb2NhdGlvbkVycm9y
Iiwgc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3JDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJz
ZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IiLCBzZXRNb2NrR2VvbG9j
YXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3JDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7
ICJzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbiIsIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9u
Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiYWRkTW9ja1NwZWVjaElucHV0UmVzdWx0Iiwg
YWRkTW9ja1NwZWVjaElucHV0UmVzdWx0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0
TW9ja1NwZWVjaElucHV0RHVtcFJlY3QiLCBzZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdENhbGxi
YWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVy
LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmgKaW5kZXggOWJjYzk1YmM5MmQz
Mjk2MWU1MWM0YTMzNzliMzc4Mzk0MjI3ZjI1OS4uZWRkMGRmZGE3NWI2MzE5NmFhOWMwMmJkMWJi
ZDdkYjFhNDQ1YjQyMCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5l
ci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMTAwLDggKzEwMCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEF1dG9tYXRp
Y0xpbmtEZXRlY3Rpb25FbmFibGVkKGJvb2wgZmxhZyk7CiAgICAgdm9pZCBzZXRNYWluRnJhbWVJ
c0ZpcnN0UmVzcG9uZGVyKGJvb2wgZmxhZyk7CiAgICAgdm9pZCBzZXRNb2NrRGV2aWNlT3JpZW50
YXRpb24oYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRl
QmV0YSwgZG91YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpOwot
ICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoaW50IGNvZGUsIEpTU3RyaW5nUmVmIG1l
c3NhZ2UpOwogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0
dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kpOworICAgIHZvaWQgc2V0TW9j
a0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKEpTU3RyaW5nUmVmIG1lc3NhZ2Up
OwogICAgIHZvaWQgYWRkTW9ja1NwZWVjaElucHV0UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCwg
ZG91YmxlIGNvbmZpZGVuY2UsIEpTU3RyaW5nUmVmIGxhbmd1YWdlKTsKICAgICB2b2lkIHNldE1v
Y2tTcGVlY2hJbnB1dER1bXBSZWN0KGJvb2wgZmxhZyk7CiAgICAgdm9pZCBzZXRQZXJzaXN0ZW50
VXNlclN0eWxlU2hlZXRMb2NhdGlvbihKU1N0cmluZ1JlZiBwYXRoKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvVGVzdFJ1bm5lckJsYWNrQmVycnkuY3BwIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9UZXN0UnVubmVyQmxhY2tCZXJyeS5jcHAK
aW5kZXggODk4NjkwMGM2YjNlNTMyMWViNGM2ZDAzOWNiNDBmZGU4MmMzNWRlYy4uNjJiZTVmZTE4
NjFjMjRhNjllN2Q1NWI5NTg3ZGQ1NWUyMGY1OTc4NyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvYmxhY2tiZXJyeS9UZXN0UnVubmVyQmxhY2tCZXJyeS5jcHAKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9UZXN0UnVubmVyQmxhY2tCZXJyeS5jcHAKQEAgLTEs
NSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAyMDEyIFJlc2VhcmNo
IEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CkBAIC00NDksMTAgKzQ1MCwxMCBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlv
blBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZAogICAgIER1bXBS
ZW5kZXJUcmVlU3VwcG9ydDo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oQmxhY2tCZXJyeTo6
V2ViS2l0OjpEdW1wUmVuZGVyVHJlZTo6Y3VycmVudEluc3RhbmNlKCktPnBhZ2UoKSwgbGF0aXR1
ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3kpOwogfQogCi12b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tH
ZW9sb2NhdGlvbkVycm9yKGludCBjb2RlLCBKU1N0cmluZ1JlZiBtZXNzYWdlKQordm9pZCBUZXN0
UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoSlNTdHJp
bmdSZWYgbWVzc2FnZSkKIHsKICAgICBTdHJpbmcgbWVzc2FnZVN0ciA9IGpzU3RyaW5nUmVmVG9X
ZWJDb3JlU3RyaW5nKG1lc3NhZ2UpOwotICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydDo6c2V0TW9j
a0dlb2xvY2F0aW9uRXJyb3IoQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1wUmVuZGVyVHJlZTo6Y3Vy
cmVudEluc3RhbmNlKCktPnBhZ2UoKSwgY29kZSwgbWVzc2FnZVN0cik7CisgICAgRHVtcFJlbmRl
clRyZWVTdXBwb3J0OjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3Io
QmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1wUmVuZGVyVHJlZTo6Y3VycmVudEluc3RhbmNlKCktPnBh
Z2UoKSwgbWVzc2FnZVN0cik7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2hvd1dlYkluc3BlY3Rv
cigpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVu
bmVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3Bw
CmluZGV4IDBlNWE4YjMxYmU3YmZjODVjNzBhMzkwOTNiNmUwZjMxN2RlMzVkNzkuLmY0ZjNhZWQy
MjhhN2EyOTc1NzgyYmQ5YzJjNjQ0MmU3OGU3MWIyODkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwCkBAIC0xLDYgKzEsNyBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDEwIFBhd2VsIEhhamRhbiAocGhhamRhbi5qckBjaHJvbWl1bS5vcmcp
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjA2LDcgKzIwNyw3IEBAIERS
VFRlc3RSdW5uZXI6OkRSVFRlc3RSdW5uZXIoVGVzdFNoZWxsKiBzaGVsbCkKICAgICBiaW5kTWV0
aG9kKCJzZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkIiwgJkRSVFRlc3RSdW5uZXI6OnNl
dEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQpOwogICAgIGJpbmRNZXRob2QoInNldE1pbmlt
dW1UaW1lckludGVydmFsIiwgJkRSVFRlc3RSdW5uZXI6OnNldE1pbmltdW1UaW1lckludGVydmFs
KTsKICAgICBiaW5kTWV0aG9kKCJzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24iLCAmRFJUVGVzdFJ1
bm5lcjo6c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKTsKLSAgICBiaW5kTWV0aG9kKCJzZXRNb2Nr
R2VvbG9jYXRpb25FcnJvciIsICZEUlRUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25FcnJv
cik7CisgICAgYmluZE1ldGhvZCgic2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJs
ZUVycm9yIiwgJkRSVFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFp
bGFibGVFcnJvcik7CiAgICAgYmluZE1ldGhvZCgic2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24i
LCAmRFJUVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24pOwogICAgIGJpbmRN
ZXRob2QoInNldFBhZ2VWaXNpYmlsaXR5IiwgJkRSVFRlc3RSdW5uZXI6OnNldFBhZ2VWaXNpYmls
aXR5KTsKICAgICBiaW5kTWV0aG9kKCJzZXRQbHVnaW5zRW5hYmxlZCIsICZEUlRUZXN0UnVubmVy
OjpzZXRQbHVnaW5zRW5hYmxlZCk7CkBAIC0xODE2LDE0ICsxODE3LDE1IEBAIHZvaWQgRFJUVGVz
dFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiBhcmd1bWVudHMsCiAgICAgICAgIHdpbmRvd0xpc3RbaV0tPmdlb2xvY2F0aW9uQ2xpZW50TW9j
aygpLT5zZXRQb3NpdGlvbihhcmd1bWVudHNbMF0udG9Eb3VibGUoKSwgYXJndW1lbnRzWzFdLnRv
RG91YmxlKCksIGFyZ3VtZW50c1syXS50b0RvdWJsZSgpKTsKIH0KIAotdm9pZCBEUlRUZXN0UnVu
bmVyOjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3Vt
ZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQordm9pZCBEUlRUZXN0UnVubmVyOjpzZXRNb2NrR2Vv
bG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBh
cmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICByZXN1bHQtPnNldE51bGwoKTsK
LSAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA8IDIgfHwgIWFyZ3VtZW50c1swXS5pc051bWJlcigp
IHx8ICFhcmd1bWVudHNbMV0uaXNTdHJpbmcoKSkKKyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSAh
PSAxIHx8ICFhcmd1bWVudHNbMF0uaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuOwogICAgIFZl
Y3RvcjxXZWJWaWV3SG9zdCo+IHdpbmRvd0xpc3QgPSBtX3NoZWxsLT53aW5kb3dMaXN0KCk7Cisg
ICAgLy8gRklYTUU6IEJlbmphbWluCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3aW5kb3dM
aXN0LnNpemUoKTsgaSsrKQotICAgICAgICB3aW5kb3dMaXN0W2ldLT5nZW9sb2NhdGlvbkNsaWVu
dE1vY2soKS0+c2V0RXJyb3IoYXJndW1lbnRzWzBdLnRvSW50MzIoKSwgY3BwVmFyaWFudFRvV2Vi
U3RyaW5nKGFyZ3VtZW50c1sxXSkpOworICAgICAgICB3aW5kb3dMaXN0W2ldLT5nZW9sb2NhdGlv
bkNsaWVudE1vY2soKS0+c2V0UG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKGNwcFZhcmlhbnRUb1dl
YlN0cmluZyhhcmd1bWVudHNbMF0pKTsKIH0KIAogdm9pZCBEUlRUZXN0UnVubmVyOjphYm9ydE1v
ZGFsKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQp
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVy
LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmgKaW5kZXgg
YjZjOTA3ZTYyNzE4Y2QyMjc1ODQ3ZDM5ZGMzZjhlOGQ0ODQzNjdjMy4uNTU5NDBhY2QxZjQ3YmIy
NmFmMjlkZDViYjZkNTMwZDJhZWUwNjZkMiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0RSVFRlc3RSdW5uZXIuaApAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAxMCBQYXdlbCBIYWpkYW4gKHBoYWpkYW4uanJAY2hyb21pdW0ub3JnKQorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTMzNyw3ICszMzgsNyBAQCBwdWJsaWM6CiAgICAg
Ly8gR2VvbG9jYXRpb24gcmVsYXRlZCBmdW5jdGlvbnMuCiAgICAgdm9pZCBzZXRHZW9sb2NhdGlv
blBlcm1pc3Npb24oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZv
aWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3Bw
VmFyaWFudCopOwotICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9z
aXRpb25VbmF2YWlsYWJsZUVycm9yKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQq
KTsKIAogICAgIC8vIEVtcHR5IHN0dWIgbWV0aG9kIHRvIGtlZXAgcGFyaXR5IHdpdGggb2JqZWN0
IG1vZGVsIGV4cG9zZWQgYnkgZ2xvYmFsIERSVFRlc3RSdW5uZXIuCiAgICAgdm9pZCBhYm9ydE1v
ZGFsKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZsLmNwcCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZsLmNwcAppbmRleCAyZTM4MGM1NjkzMWViOGZmZGNmY2Vj
M2EyNjA4MDlhZjE0YTBjYmZmLi45Nzk3YTMxNTJlODk0MDVlZWE2NGNiNzkzYjk0MzBkNjY2ZTA5
MjY5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5j
cHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwuY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA3IEVyaWMgU2VpZGVsIDxlcmlj
QHdlYmtpdC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTnVhbnRpIEx0ZC4KICAqIENvcHly
aWdodCAoQykgMjAwOSBKYW4gTWljaGFlbCBBbG9uem8gPGptYWxvbnpvQGdtYWlsLmNvbT4KQEAg
LTM3OSw3ICszNzksNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0
aW9uKGRvdWJsZSwgZG91YmxlLCBkb3VibGUpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAot
dm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihpbnQsIEpTU3RyaW5nUmVm
KQordm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxl
RXJyb3IoSlNTdHJpbmdSZWYpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgR2VvbG9j
YXRpb24gbGF5b3V0IHRlc3RzLgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjgyNjQuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9n
dGsvVGVzdFJ1bm5lckd0ay5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvVGVzdFJ1bm5l
ckd0ay5jcHAKaW5kZXggMDkyOWNhZGY2MjE3M2E5Y2U5YzljOTMxZWI0NzI2ZDhjMGRmMWFhNi4u
ZGI5NjI4OTI3MGI3NzQ4MTI4MzVjMGY4MDQ5YjE0NjkzNGZiYzAyZSAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2d0ay9UZXN0UnVubmVyR3RrLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA3LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgogICogQ29w
eXJpZ2h0IChDKSAyMDA4IE51YW50aSBMdGQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSmFuIE1p
Y2hhZWwgQWxvbnpvIDxqbWFsb256b0BnbWFpbC5jb20+CkBAIC00NDcsNyArNDQ3LDcgQEAgdm9p
ZCBUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUs
IGRvdWJsZSBsb25naXR1ZGUsIGQKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldE1v
Y2tHZW9sb2NhdGlvblBvc2l0aW9uKHZpZXcsIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5
KTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihpbnQgY29k
ZSwgSlNTdHJpbmdSZWYgbWVzc2FnZSkKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0
aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKEpTU3RyaW5nUmVmIG1lc3NhZ2UpCiB7CiAgICAg
V2ViS2l0V2ViVmlldyogdmlldyA9IFdFQktJVF9XRUJfVklFVyhnX3NsaXN0X250aF9kYXRhKHdl
YlZpZXdMaXN0LCAwKSk7CiAgICAgaWYgKCF2aWV3KQpAQCAtNDU1LDcgKzQ1NSw3IEBAIHZvaWQg
VGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoaW50IGNvZGUsIEpTU3RyaW5nUmVm
IG1lc3NhZ2UpCiAgICAgQVNTRVJUKHZpZXcpOwogCiAgICAgR093blB0cjxnY2hhcj4gY01lc3Nh
Z2UoSlNTdHJpbmdDb3B5VVRGOENTdHJpbmcobWVzc2FnZSkpOwotICAgIER1bXBSZW5kZXJUcmVl
U3VwcG9ydEd0azo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IodmlldywgY29kZSwgY01lc3NhZ2Uu
Z2V0KCkpOworICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0TW9ja0dlb2xvY2F0aW9u
UG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKHZpZXcsIGNNZXNzYWdlLmdldCgpKTsKIH0KIAogdm9p
ZCBUZXN0UnVubmVyOjpzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oYm9vbCBhbGxvdykKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9Nb2NrR2VvbG9jYXRpb25Qcm92aWRlci5o
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL01vY2tHZW9sb2NhdGlvblByb3ZpZGVyLmgKaW5k
ZXggMzExZDFlOTE4NGIzNmIzODJlNTEzYjc4YWQ4YjMzNjFkMWQ1OTA1Ny4uYmEzYTg0MmE5ODEw
ZDQwZjI0NDU3NDE1MmI3MzU5OWUxOTJjMjZkZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL01vY2tHZW9sb2NhdGlvblByb3ZpZGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL01vY2tHZW9sb2NhdGlvblByb3ZpZGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMCwgMjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDEwICsyOCwxMiBAQAogCiAj
aW1wb3J0IDxXZWJLaXQvV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9IYXNoU2V0Lmg+
CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIEBpbnRlcmZhY2UgTW9ja0dlb2xvY2F0aW9u
UHJvdmlkZXIgOiBOU09iamVjdDxXZWJHZW9sb2NhdGlvblByb3ZpZGVyPiB7Ci0gICAgV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbiAqX2xhc3RQb3NpdGlvbjsKLSAgICBOU0Vycm9yICpfZXJyb3I7Cisg
ICAgUmV0YWluUHRyPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IF9sYXN0UG9zaXRpb247CisgICAg
Qk9PTCBfaGFzRXJyb3I7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfZXJyb3JNZXNzYWdlOwog
ICAgIE5TVGltZXIgKl90aW1lcjsKICAgICBIYXNoU2V0PFdlYlZpZXcgKj4gX3JlZ2lzdGVyZWRW
aWV3czsKIH0KQEAgLTM5LDcgKzQxLDcgQEAKICsgKE1vY2tHZW9sb2NhdGlvblByb3ZpZGVyICop
c2hhcmVkOwogCiAtICh2b2lkKXNldFBvc2l0aW9uOihXZWJHZW9sb2NhdGlvblBvc2l0aW9uICop
cG9zaXRpb247Ci0tICh2b2lkKXNldEVycm9yOihOU0Vycm9yICopZXJyb3I7CistICh2b2lkKXNl
dFBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcldpdGhNZXNzYWdlOihOU1N0cmluZyAqKWVycm9yTWVz
c2FnZTsKIAogLSAodm9pZClzdG9wVGltZXI7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9Nb2NrR2VvbG9jYXRpb25Qcm92aWRlci5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9Nb2NrR2VvbG9jYXRpb25Qcm92aWRlci5tbQppbmRleCBlMDNjYWUyNGE1ZDM1N2Vl
NTkzMGRhNjE1NDQzN2VjOWFlZjlmNWZiLi41MTU2ZDUxODZlNjY5ZjRhMWVjMTVhNDFmMjQ2MzE4
MDk0YTE2ZTdlIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTW9ja0dlb2xv
Y2F0aW9uUHJvdmlkZXIubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL01vY2tHZW9s
b2NhdGlvblByb3ZpZGVyLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAsIDIwMTIgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0zOCwzNCArMzgsMzMgQEAKIHsKICAgICBBU1NFUlQoX3JlZ2lz
dGVyZWRWaWV3cy5pc0VtcHR5KCkpOwogCi0gICAgW19sYXN0UG9zaXRpb24gcmVsZWFzZV07Ci0g
ICAgW19lcnJvciByZWxlYXNlXTsKKyAgICBfbGFzdFBvc2l0aW9uLmNsZWFyKCk7CisgICAgX2Vy
cm9yTWVzc2FnZS5jbGVhcigpOwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAorLSAodm9pZCly
ZXNldEVycm9yCit7CisgICAgX2hhc0Vycm9yID0gTk87CisgICAgX2Vycm9yTWVzc2FnZS5jbGVh
cigpOworfQorCiAtICh2b2lkKXNldFBvc2l0aW9uOihXZWJHZW9sb2NhdGlvblBvc2l0aW9uICop
cG9zaXRpb24KIHsKLSAgICBpZiAoX2xhc3RQb3NpdGlvbiAhPSBwb3NpdGlvbikgewotICAgICAg
ICBbX2xhc3RQb3NpdGlvbiByZWxlYXNlXTsKLSAgICAgICAgX2xhc3RQb3NpdGlvbiA9IFtwb3Np
dGlvbiByZXRhaW5dOwotICAgIH0KKyAgICBfbGFzdFBvc2l0aW9uID0gcG9zaXRpb247CiAgICAg
Ci0gICAgW19lcnJvciByZWxlYXNlXTsKLSAgICBfZXJyb3IgPSAwOworICAgIFtzZWxmIHJlc2V0
RXJyb3JdOwogCiAgICAgaWYgKCFfdGltZXIpCiAgICAgICAgIF90aW1lciA9IFtOU1RpbWVyIHNj
aGVkdWxlZFRpbWVyV2l0aFRpbWVJbnRlcnZhbDowIHRhcmdldDpzZWxmIHNlbGVjdG9yOkBzZWxl
Y3Rvcih0aW1lckZpcmVkKSB1c2VySW5mbzowIHJlcGVhdHM6Tk9dOwogfQogCi0tICh2b2lkKXNl
dEVycm9yOihOU0Vycm9yICopZXJyb3IKKy0gKHZvaWQpc2V0UG9zaXRpb25VbmF2YWlsYWJsZUVy
cm9yV2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopZXJyb3JNZXNzYWdlCiB7Ci0gICAgaWYgKF9lcnJv
ciAhPSBlcnJvcikgewotICAgICAgICBbX2Vycm9yIHJlbGVhc2VdOwotICAgICAgICBfZXJyb3Ig
PSBbZXJyb3IgcmV0YWluXTsKLSAgICB9Ci0gICAgCi0gICAgW19sYXN0UG9zaXRpb24gcmVsZWFz
ZV07Ci0gICAgX2xhc3RQb3NpdGlvbiA9IDA7CisgICAgX2hhc0Vycm9yID0gWUVTOworICAgIF9l
cnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2U7CisKKyAgICBfbGFzdFBvc2l0aW9uLmNsZWFyKCk7
CiAKICAgICBpZiAoIV90aW1lcikKICAgICAgICAgX3RpbWVyID0gW05TVGltZXIgc2NoZWR1bGVk
VGltZXJXaXRoVGltZUludGVydmFsOjAgdGFyZ2V0OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKHRp
bWVyRmlyZWQpIHVzZXJJbmZvOjAgcmVwZWF0czpOT107CkBAIC04Niw3ICs4NSw3IEBACiAKIC0g
KFdlYkdlb2xvY2F0aW9uUG9zaXRpb24gKilsYXN0UG9zaXRpb24KIHsKLSAgICByZXR1cm4gX2xh
c3RQb3NpdGlvbjsKKyAgICByZXR1cm4gX2xhc3RQb3NpdGlvbi5nZXQoKTsKIH0KIAogLSAodm9p
ZClzdG9wVGltZXIKQEAgLTEwMiwxMCArMTAxLDEwIEBACiAgICAgLy8gRXhwZWN0IHRoYXQgdmll
d3Mgd29uJ3QgYmUgKHVuKXJlZ2lzdGVyZWQgd2hpbGUgaXRlcmF0aW5nLgogICAgIEhhc2hTZXQ8
V2ViVmlldyo+IHZpZXdzID0gX3JlZ2lzdGVyZWRWaWV3czsKICAgICBmb3IgKEhhc2hTZXQ8V2Vi
Vmlldyo+OjppdGVyYXRvciBpdGVyID0gdmlld3MuYmVnaW4oKTsgaXRlciAhPSB2aWV3cy5lbmQo
KTsgKytpdGVyKSB7Ci0gICAgICAgIGlmIChfZXJyb3IpCi0gICAgICAgICAgICBbKml0ZXIgX2dl
b2xvY2F0aW9uRGlkRmFpbFdpdGhFcnJvcjpfZXJyb3JdOworICAgICAgICBpZiAoX2hhc0Vycm9y
KQorICAgICAgICAgICAgWyppdGVyIF9nZW9sb2NhdGlvbkRpZEZhaWxXaXRoTWVzc2FnZTpfZXJy
b3JNZXNzYWdlLmdldCgpXTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgWyppdGVyIF9nZW9s
b2NhdGlvbkRpZENoYW5nZVBvc2l0aW9uOl9sYXN0UG9zaXRpb25dOworICAgICAgICAgICAgWypp
dGVyIF9nZW9sb2NhdGlvbkRpZENoYW5nZVBvc2l0aW9uOl9sYXN0UG9zaXRpb24uZ2V0KCldOwog
ICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5u
ZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQppbmRl
eCBhMjFlZDgwYWMxMWJlNjM3MTMxZGZjZDQ2ZWZmNjRjNmQ1MjkwM2Y1Li4xYTBhMDRkYzc1NjNh
NWYyYjhjYjM1ODBmMTc3NTEzZTI1ZWU4MGNmIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
VGVzdFJ1bm5lck1hYy5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDc5LDEyICs0NzksMTEg
QEAgdm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0
aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGQKICAgICBbcG9zaXRpb24gcmVsZWFzZV07CiB9CiAK
LXZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoaW50IGNvZGUsIEpTU3Ry
aW5nUmVmIG1lc3NhZ2UpCit2b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0
aW9uVW5hdmFpbGFibGVFcnJvcihKU1N0cmluZ1JlZiBtZXNzYWdlKQogewogICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gbWVzc2FnZUNGKEFkb3B0Q0YsIEpTU3RyaW5nQ29weUNGU3RyaW5nKGtD
RkFsbG9jYXRvckRlZmF1bHQsIG1lc3NhZ2UpKTsKICAgICBOU1N0cmluZyAqbWVzc2FnZU5TID0g
KE5TU3RyaW5nICopbWVzc2FnZUNGLmdldCgpOwotICAgIE5TRXJyb3IgKmVycm9yID0gW05TRXJy
b3IgZXJyb3JXaXRoRG9tYWluOldlYktpdEVycm9yRG9tYWluIGNvZGU6Y29kZSB1c2VySW5mbzpb
TlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0Om1lc3NhZ2VOUyBmb3JLZXk6TlNMb2Nh
bGl6ZWREZXNjcmlwdGlvbktleV1dOwotICAgIFtbTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIgc2hh
cmVkXSBzZXRFcnJvcjplcnJvcl07CisgICAgW1tNb2NrR2VvbG9jYXRpb25Qcm92aWRlciBzaGFy
ZWRdIHNldFBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcldpdGhNZXNzYWdlOm1lc3NhZ2VOU107CiB9
CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGJvb2wgYWxsb3cp
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuY3BwIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmNwcAppbmRleCBkMzUwM2JkMWU3
NTA5ODdlNTIyZGI3ZDRiZTNkOGZhYzhiYWM2YzBmLi45YTkyMDEzZWRkMGVlYTczMzFmYzdmMDAx
NDljODUzNGMwYWQwMTg5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0
UnVubmVyUXQuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5j
cHAKQEAgLTgzNCwxMSArODM0LDExIEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0R2VvbG9jYXRpb25Q
ZXJtaXNzaW9uQ29tbW9uKGJvb2wgYWxsb3cpCiAgICAgIG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9u
ID0gYWxsb3c7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3Io
aW50IGNvZGUsIGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2UpCit2b2lkIFRlc3RSdW5uZXI6OnNldE1v
Y2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihjb25zdCBRU3RyaW5nJiBtZXNz
YWdlKQogewogICAgIFFMaXN0PFdlYkNvcmU6OldlYlBhZ2UqPiBwYWdlcyA9IG1fZHJ0LT5nZXRB
bGxQYWdlcygpOwogICAgIGZvcmVhY2ggKFdlYkNvcmU6OldlYlBhZ2UqIHBhZ2UsIHBhZ2VzKQot
ICAgICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3Io
cGFnZSwgY29kZSwgbWVzc2FnZSk7CisgICAgICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojpz
ZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IocGFnZSwgbWVzc2FnZSk7
CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91Ymxl
IGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kpCmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuaCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5oCmluZGV4IDg4YTljNmE5NDRlNjRlMzg1ODU0NjA2NDhi
ZDgyNjc4YTkzNTZjMmYuLjMxMWJjZDlkZTVjZDdmMmE5ZDZmMjJlODljYTkwMDVlZDQ2MWY3MjMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5oCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5oCkBAIC0xLDYgKzEsNyBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1
YnNpZGlhcnkoLWllcykKICAqIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBo
dHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8KKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTIyNCw3ICsyMjUsNyBAQCBwdWJsaWMgUV9TTE9UUzoKIAogICAgIHZvaWQgc2V0TW9ja0Rl
dmljZU9yaWVudGF0aW9uKGJvb2wgY2FuUHJvdmlkZUFscGhhLCBkb3VibGUgYWxwaGEsIGJvb2wg
Y2FuUHJvdmlkZUJldGEsIGRvdWJsZSBiZXRhLCBib29sIGNhblByb3ZpZGVHYW1tYSwgZG91Ymxl
IGdhbW1hKTsKIAotICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoaW50IGNvZGUsIGNv
bnN0IFFTdHJpbmcmIG1lc3NhZ2UpOworICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRp
b25VbmF2YWlsYWJsZUVycm9yKGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2UpOwogICAgIHZvaWQgc2V0
TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRl
LCBkb3VibGUgYWNjdXJhY3kpOwogICAgIHZvaWQgc2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGJv
b2wgYWxsb3cpOwogICAgIGludCBudW1iZXJPZlBlbmRpbmdHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0cygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5u
ZXJXaW4uY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwCmlu
ZGV4IGQzMzY1MWI3YWY2ZTQ1YzJiOWU1NjFiNGE3MTcxYjQ2YzllNjM3ZjEuLmM0NDAwZmRjYjFl
YmJlZjRmNzdiYzgwNDBjZTE2YTJiNjNlZjM3NDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93
aW4vVGVzdFJ1bm5lcldpbi5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTQyMCw3ICs0MjAsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tHZW9s
b2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZAogICAg
IC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjgyNjQuCiB9
CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoaW50IGNvZGUsIEpT
U3RyaW5nUmVmIG1lc3NhZ2UpCit2b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBv
c2l0aW9uVW5hdmFpbGFibGVFcnJvcihKU1N0cmluZ1JlZiBtZXNzYWdlKQogewogICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgZm9yIEdlb2xvY2F0aW9uIGxheW91dCB0ZXN0cy4KICAgICAvLyBTZWUg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MjY0LgpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvVGVzdFJ1bm5lcld4LmNwcCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3d4L1Rlc3RSdW5uZXJXeC5jcHAKaW5kZXggZDdhNTI1MmM0MDRiZjIxOWRmN2Vh
MWZhNTdjYjNkOWUxZGRkMzM4My4uZTc4MGNmZTUyYjNiMDE2OTRlNjJjNzdiMzhkZjlkMGUwYjEw
OWJhYSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvVGVzdFJ1bm5lcld4LmNw
cAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9UZXN0UnVubmVyV3guY3BwCkBAIC0xLDUg
KzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOCBLZXZpbiBPbGxpdmllciA8a2V2aW5v
QHRoZW9sbGl2aWVycy5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMzgs
NyArMzM5LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihk
b3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGQKICAgICAvLyBTZWUgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4MjY0LgogfQogCi12b2lkIFRlc3RSdW5u
ZXI6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGludCBjb2RlLCBKU1N0cmluZ1JlZiBtZXNzYWdl
KQordm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxl
RXJyb3IoSlNTdHJpbmdSZWYpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgR2VvbG9j
YXRpb24gbGF5b3V0IHRlc3RzLgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjgyNjQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZGM1NmViYzczMjAwNzAxODNlMWI3ZDI5NmM1
NTYxMTI4YzFkNzM1My4uYzc5M2Q4NjQ5M2VhZDM0MzA5OGViZDhmMmVlNTg5OWQ0OWYzMGYzMSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA5LTI0ICBCZW5qYW1pbiBQb3VsYWluICA8YnBv
dWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCBHZW9sb2NhdGlvbiBlcnJvciByZXBvcnRp
bmcgaW4gdGhlIHRlc3Qgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTczODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBVcGRhdGUgdGhlIHRlc3RzIHRvIHVzZSBzZXRNb2NrR2VvbG9jYXRpb25Q
b3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoKSBpbnN0ZWFkCisgICAgICAgIG9mIHNldE1vY2tHZW9s
b2NhdGlvbkVycm9yKCkuCisKKyAgICAgICAgT25seSBQb3NpdGlvbkVycm9yLlBPU0lUSU9OX1VO
QVZBSUxBQkxFIHdhcyBzdXBwb3J0ZWQsIHNvIHRoaXMgbm90IGNoYW5nZQorICAgICAgICBhbnl0
aGluZyBmb3IgdGhlIHRlc3QgY292ZXJhZ2UuCisKKyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2Nh
dGlvbi9lcnJvci1jbGVhci13YXRjaC5odG1sOgorICAgICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0
aW9uL2Vycm9yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9t
YXhpbXVtLWFnZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24v
cmVlbnRyYW50LWVycm9yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2Nh
dGlvbi9zY3JpcHQtdGVzdHMvZXJyb3IuanM6CisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRp
b24vc2NyaXB0LXRlc3RzL21heGltdW0tYWdlLmpzOgorICAgICAgICAoY2hlY2tFcnJvcik6Cisg
ICAgICAgICh0ZXN0Tm9uWmVyb01heGltdW1BZ2UpOgorICAgICAgICAqIGZhc3QvZG9tL0dlb2xv
Y2F0aW9uL3NjcmlwdC10ZXN0cy9wZXJtaXNzaW9uLWRlbmllZC1hbHJlYWR5LWVycm9yLmpzOgor
ICAgICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9yZWVudHJhbnQtZXJy
b3IuanM6CisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3dhdGNo
LmpzOgorICAgICAgICAoY2hlY2tFcnJvcik6CisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRp
b24vd2F0Y2gtZXhwZWN0ZWQudHh0OgorCiAyMDEyLTA5LTI0ICBSb2dlciBGb25nICA8cm9nZXJf
Zm9uZ0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gW1dpbl0gRmFpbGluZyB0ZXN0
IGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay14aHItcmVwbGF5Lmh0bWwKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2Vycm9yLWNsZWFyLXdh
dGNoLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9lcnJvci1jbGVhci13
YXRjaC5odG1sCmluZGV4IDMyMjA2ZGYzZmMzOTA3NjI3ZjQxNWRhNjEyZWNkN2Q0NzBiZThmMTUu
LjZjNjE5NzgzZWI5Yzc4NGU0YWJhYzI5NzExMmI1ZDdjODAxOWNhNjEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2Vycm9yLWNsZWFyLXdhdGNoLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vZXJyb3ItY2xlYXItd2F0Y2guaHRt
bApAQCAtNywxMiArNywxMSBAQAogPHNjcmlwdD4KIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHJl
bW92aW5nIHRoZSB3YXRjaGVyIGZyb20gYW4gZXJyb3IgY2FsbGJhY2sgZG9lcyBub3QgY2F1c2Vz
IGFzc2VydGlvbnMuIik7CiAKLXZhciBtb2NrQ29kZSA9IDI7CiB2YXIgbW9ja01lc3NhZ2UgPSAi
ZGVidWciOwogCiBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICB0ZXN0UnVubmVyLnNldEdl
b2xvY2F0aW9uUGVybWlzc2lvbih0cnVlKTsKLSAgICB0ZXN0UnVubmVyLnNldE1vY2tHZW9sb2Nh
dGlvbkVycm9yKG1vY2tDb2RlLCBtb2NrTWVzc2FnZSk7CisgICAgdGVzdFJ1bm5lci5zZXRNb2Nr
R2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IobW9ja01lc3NhZ2UpOwogfSBlbHNl
CiAgICAgZGVidWcoJ1RoaXMgdGVzdCBjYW4gbm90IGJlIHJ1biB3aXRob3V0IHRoZSBMYXlvdXRU
ZXN0Q29udHJvbGxlcicpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9s
b2NhdGlvbi9lcnJvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2Nh
dGlvbi9lcnJvci1leHBlY3RlZC50eHQKaW5kZXggOTU4MjA1OTVmZGJiNDc2ZjcwOWQxYjc5Y2Zl
ZDM1MmVjYjMwZjIyZC4uMTMzZTM5YTMyYWVkYjNlZmRhMjI0OWJiODMwZWUwNTJlZDkzNTllYSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vZXJyb3ItZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2Vycm9yLWV4cGVj
dGVkLnR4dApAQCAtMyw3ICszLDcgQEAgVGVzdHMgR2VvbG9jYXRpb24gZXJyb3IgY2FsbGJhY2sg
dXNpbmcgdGhlIG1vY2sgc2VydmljZS4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1Q
QVNTIGVycm9yLmNvZGUgaXMgbW9ja0NvZGUKK1BBU1MgZXJyb3IuY29kZSBpcyBlcnJvci5QT1NJ
VElPTl9VTkFWQUlMQUJMRQogUEFTUyBlcnJvci5tZXNzYWdlIGlzIG1vY2tNZXNzYWdlCiBQQVNT
IGVycm9yLlVOS05PV05fRVJST1IgaXMgdW5kZWZpbmVkCiBQQVNTIGVycm9yLlBFUk1JU1NJT05f
REVOSUVEIGlzIDEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9u
L21heGltdW0tYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0
aW9uL21heGltdW0tYWdlLWV4cGVjdGVkLnR4dAppbmRleCAzNDRiZDQ1YjgyMTRkNGJlZDZhOWY5
MDNmMzIyYjE3YmQwMzA2YTg5Li4zODg5NDY2OTdiMzg1OTE3NGM0ZTJmZTNjYWM1MDQxOGYxY2Vh
NTM1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9tYXhpbXVt
LWFnZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24v
bWF4aW11bS1hZ2UtZXhwZWN0ZWQudHh0CkBAIC0xNiw3ICsxNiw3IEBAIFBBU1MgcG9zaXRpb24u
Y29vcmRzLmxhdGl0dWRlIGlzIG1vY2tMYXRpdHVkZQogUEFTUyBwb3NpdGlvbi5jb29yZHMubG9u
Z2l0dWRlIGlzIG1vY2tMb25naXR1ZGUKIFBBU1MgcG9zaXRpb24uY29vcmRzLmFjY3VyYWN5IGlz
IG1vY2tBY2N1cmFjeQogCi1QQVNTIGVycm9yLmNvZGUgaXMgbW9ja0NvZGUKK1BBU1MgZXJyb3Iu
Y29kZSBpcyBlcnJvci5QT1NJVElPTl9VTkFWQUlMQUJMRQogUEFTUyBlcnJvci5tZXNzYWdlIGlz
IG1vY2tNZXNzYWdlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3JlZW50cmFudC1lcnJvci1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9yZWVudHJhbnQtZXJy
b3ItZXhwZWN0ZWQudHh0CmluZGV4IDk5M2JlYWMyMTdlNjcwOTk4ZDgyMGQxNWNlMjg3OTRkNGFk
NDA0ZmUuLjRjNGViMWYwYmI5OGI1NjdkMmJmMjE4ZmY5NzMzZjFmODM1MTdlNzkgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3JlZW50cmFudC1lcnJvci1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vcmVlbnRyYW50
LWVycm9yLWV4cGVjdGVkLnR4dApAQCAtMywxMCArMywxMCBAQCBUZXN0cyB0aGF0IHJlZW50cmFu
dCBjYWxscyB0byBHZW9sb2NhdGlvbiBtZXRob2RzIGZyb20gdGhlIGVycm9yIGNhbGxiYWNrIGFy
ZSBPSwogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1MgZXJyb3IuY29kZSBpcyBt
b2NrQ29kZQorUEFTUyBlcnJvci5jb2RlIGlzIGVycm9yLlBPU0lUSU9OX1VOQVZBSUxBQkxFCiBQ
QVNTIGVycm9yLm1lc3NhZ2UgaXMgbW9ja01lc3NhZ2UKIAotUEFTUyBlcnJvci5jb2RlIGlzIG1v
Y2tDb2RlCitQQVNTIGVycm9yLmNvZGUgaXMgZXJyb3IuUE9TSVRJT05fVU5BVkFJTEFCTEUKIFBB
U1MgZXJyb3IubWVzc2FnZSBpcyBtb2NrTWVzc2FnZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9z
Y3JpcHQtdGVzdHMvZXJyb3IuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9z
Y3JpcHQtdGVzdHMvZXJyb3IuanMKaW5kZXggMmQxM2YzZjQ2YzgzMDEwNzZjOGRjYmI5ZDE5ODkx
MGY3N2ZjYzgxYi4uOGU0NGJjNmY3MWVmZDhlYjc3M2U5ZTc5NTc1NDdkMGQzZjcxZTgwOCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL2Vy
cm9yLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0
cy9lcnJvci5qcwpAQCAtMSwxMSArMSwxMCBAQAogZGVzY3JpcHRpb24oIlRlc3RzIEdlb2xvY2F0
aW9uIGVycm9yIGNhbGxiYWNrIHVzaW5nIHRoZSBtb2NrIHNlcnZpY2UuIik7CiAKLXZhciBtb2Nr
Q29kZSA9IDI7CiB2YXIgbW9ja01lc3NhZ2UgPSAiZGVidWciOwogCiBpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKICAgICB0ZXN0UnVubmVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbih0cnVlKTsK
LSAgICB0ZXN0UnVubmVyLnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKG1vY2tDb2RlLCBtb2NrTWVz
c2FnZSk7CisgICAgdGVzdFJ1bm5lci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxh
YmxlRXJyb3IobW9ja01lc3NhZ2UpOwogfSBlbHNlCiAgICAgZGVidWcoJ1RoaXMgdGVzdCBjYW4g
bm90IGJlIHJ1biB3aXRob3V0IHRoZSB0ZXN0UnVubmVyJyk7CiAKQEAgLTE1LDcgKzE0LDcgQEAg
bmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihmdW5jdGlvbihwKSB7CiAg
ICAgZmluaXNoSlNUZXN0KCk7CiB9LCBmdW5jdGlvbihlKSB7CiAgICAgZXJyb3IgPSBlOwotICAg
IHNob3VsZEJlKCdlcnJvci5jb2RlJywgJ21vY2tDb2RlJyk7CisgICAgc2hvdWxkQmUoJ2Vycm9y
LmNvZGUnLCAnZXJyb3IuUE9TSVRJT05fVU5BVkFJTEFCTEUnKTsKICAgICBzaG91bGRCZSgnZXJy
b3IubWVzc2FnZScsICdtb2NrTWVzc2FnZScpOwogICAgIHNob3VsZEJlKCdlcnJvci5VTktOT1dO
X0VSUk9SJywgJ3VuZGVmaW5lZCcpOwogICAgIHNob3VsZEJlKCdlcnJvci5QRVJNSVNTSU9OX0RF
TklFRCcsICcxJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlv
bi9zY3JpcHQtdGVzdHMvbWF4aW11bS1hZ2UuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9s
b2NhdGlvbi9zY3JpcHQtdGVzdHMvbWF4aW11bS1hZ2UuanMKaW5kZXggNmM4Zjg2MDA5ZmI4NDY1
MzExZDBhZDllOWU4NGZhNTczMWE1ZDE2ZC4uNDc1OTZjYTQ2NDZjYzM2OTdhZjI4OTg5ODVkNjUz
NDQ0YTYyY2IyMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24v
c2NyaXB0LXRlc3RzL21heGltdW0tYWdlLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dl
b2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9tYXhpbXVtLWFnZS5qcwpAQCAtNCw3ICs0LDYgQEAgdmFy
IG1vY2tMYXRpdHVkZSA9IDUxLjQ3ODsKIHZhciBtb2NrTG9uZ2l0dWRlID0gLTAuMTY2OwogdmFy
IG1vY2tBY2N1cmFjeSA9IDEwMC4wOwogCi12YXIgbW9ja0NvZGUgPSAyOwogdmFyIG1vY2tNZXNz
YWdlID0gJ3Rlc3QnOwogCiB2YXIgcG9zaXRpb247CkBAIC0yMSw3ICsyMCw3IEBAIGZ1bmN0aW9u
IGNoZWNrUG9zaXRpb24ocCkgewogZnVuY3Rpb24gY2hlY2tFcnJvcihlKSB7CiAgICAgZGVidWco
JycpOwogICAgIGVycm9yID0gZTsKLSAgICBzaG91bGRCZSgnZXJyb3IuY29kZScsICdtb2NrQ29k
ZScpOworICAgIHNob3VsZEJlKCdlcnJvci5jb2RlJywgJ2Vycm9yLlBPU0lUSU9OX1VOQVZBSUxB
QkxFJyk7CiAgICAgc2hvdWxkQmUoJ2Vycm9yLm1lc3NhZ2UnLCAnbW9ja01lc3NhZ2UnKTsKIH0K
IApAQCAtNTcsNyArNTYsNyBAQCBmdW5jdGlvbiB0ZXN0WmVyb01heGltdW1BZ2UoKSB7CiBmdW5j
dGlvbiB0ZXN0Tm9uWmVyb01heGltdW1BZ2UoKSB7CiAgICAgLy8gVXBkYXRlIHRoZSBtb2NrIHNl
cnZpY2UgdG8gcmVwb3J0IGFuIGVycm9yLgogICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAg
ICAgICAgdGVzdFJ1bm5lci5zZXRNb2NrR2VvbG9jYXRpb25FcnJvcihtb2NrQ29kZSwgbW9ja01l
c3NhZ2UpOworICAgICAgICB0ZXN0UnVubmVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5h
dmFpbGFibGVFcnJvcihtb2NrTWVzc2FnZSk7CiAgICAgLy8gVGhlIG1heGltdW1BZ2UgaXMgbm9u
LXplcm8sIHNvIHdlIGV4cGVjdCB0aGUgY2FjaGVkIHBvc2l0aW9uLCBub3QgdGhlIGVycm9yIGZy
b20gdGhlIHNlcnZpY2UuCiAgICAgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3Np
dGlvbihmdW5jdGlvbihwKSB7CiAgICAgICAgIGNoZWNrUG9zaXRpb24ocCk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcGVybWlzc2lv
bi1kZW5pZWQtYWxyZWFkeS1lcnJvci5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0
aW9uL3NjcmlwdC10ZXN0cy9wZXJtaXNzaW9uLWRlbmllZC1hbHJlYWR5LWVycm9yLmpzCmluZGV4
IGI1ZTNkOGYyYzhhMzI4ZDI3MzliNDg1YzhjZGE0ZDM4N2IzMjY4MzguLjQ4YjVjZjgxYzU0OThh
M2QzNGYxNDE3MjQ2NzkxZGY3YzhjN2MxNGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9wZXJtaXNzaW9uLWRlbmllZC1hbHJlYWR5LWVy
cm9yLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0
cy9wZXJtaXNzaW9uLWRlbmllZC1hbHJlYWR5LWVycm9yLmpzCkBAIC0yMyw3ICsyMyw3IEBAIGZ1
bmN0aW9uIGNvbnRpbnVlVGVzdCgpCiB7CiAgICAgLy8gTWFrZSBhbm90aGVyIHJlcXVlc3QsIHdp
dGggcGVybWlzc2lvbiBhbHJlYWR5IGRlbmllZC4KICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICAgIHRlc3RSdW5uZXIuc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoMiwgJ3Rlc3QnKTsK
KyAgICAgICAgdGVzdFJ1bm5lci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxl
RXJyb3IoJ3Rlc3QnKTsKIAogICAgIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9z
aXRpb24oZnVuY3Rpb24ocCkgewogICAgICAgICB0ZXN0RmFpbGVkKCdTdWNjZXNzIGNhbGxiYWNr
IGludm9rZWQgdW5leHBlY3RlZGx5Jyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcmVlbnRyYW50LWVycm9yLmpzIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3JlZW50cmFudC1lcnJvci5qcwpp
bmRleCA1NDM5ZTI5MjJjNGM5ODhlZDIxYThiYzczMTgzM2YwYzJiNzE0OTliLi41YTZjMDlkMWJh
ODI4NmIwYWI0MWE3Y2JiNjcwZDc5YWIxYjczZWU1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcmVlbnRyYW50LWVycm9yLmpzCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9yZWVudHJhbnQt
ZXJyb3IuanMKQEAgLTEsMTEgKzEsMTAgQEAKIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHJlZW50
cmFudCBjYWxscyB0byBHZW9sb2NhdGlvbiBtZXRob2RzIGZyb20gdGhlIGVycm9yIGNhbGxiYWNr
IGFyZSBPSy4iKTsKIAotdmFyIG1vY2tDb2RlID0gMjsKIHZhciBtb2NrTWVzc2FnZSA9ICd0ZXN0
JzsKIAogaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgdGVzdFJ1bm5lci5zZXRHZW9sb2Nh
dGlvblBlcm1pc3Npb24odHJ1ZSk7Ci0gICAgdGVzdFJ1bm5lci5zZXRNb2NrR2VvbG9jYXRpb25F
cnJvcihtb2NrQ29kZSwgbW9ja01lc3NhZ2UpOworICAgIHRlc3RSdW5uZXIuc2V0TW9ja0dlb2xv
Y2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKG1vY2tNZXNzYWdlKTsKIH0gZWxzZQogICAg
IGRlYnVnKCdUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4gd2l0aG91dCB0aGUgdGVzdFJ1bm5lcicp
OwogCkBAIC0yMiw3ICsyMSw3IEBAIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9z
aXRpb24oZnVuY3Rpb24ocCkgewogICAgIGVycm9yQ2FsbGJhY2tJbnZva2VkID0gdHJ1ZTsKIAog
ICAgIGVycm9yID0gZTsKLSAgICBzaG91bGRCZSgnZXJyb3IuY29kZScsICdtb2NrQ29kZScpOwor
ICAgIHNob3VsZEJlKCdlcnJvci5jb2RlJywgJ2Vycm9yLlBPU0lUSU9OX1VOQVZBSUxBQkxFJyk7
CiAgICAgc2hvdWxkQmUoJ2Vycm9yLm1lc3NhZ2UnLCAnbW9ja01lc3NhZ2UnKTsKICAgICBkZWJ1
ZygnJyk7CiAgICAgY29udGludWVUZXN0KCk7CkBAIC0zMiwxNCArMzEsMTQgQEAgZnVuY3Rpb24g
Y29udGludWVUZXN0KCkgewogICAgIG1vY2tNZXNzYWdlICs9ICcgcmVwZWF0JzsKIAogICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRNb2NrR2VvbG9jYXRp
b25FcnJvcihtb2NrQ29kZSwgbW9ja01lc3NhZ2UpOworICAgICAgICB0ZXN0UnVubmVyLnNldE1v
Y2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihtb2NrTWVzc2FnZSk7CiAKICAg
ICBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGZ1bmN0aW9uKHApIHsK
ICAgICAgICAgdGVzdEZhaWxlZCgnU3VjY2VzcyBjYWxsYmFjayBpbnZva2VkIHVuZXhwZWN0ZWRs
eScpOwogICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKICAgICB9LCBmdW5jdGlvbihlKSB7CiAgICAg
ICAgIGVycm9yID0gZTsKLSAgICAgICAgc2hvdWxkQmUoJ2Vycm9yLmNvZGUnLCAnbW9ja0NvZGUn
KTsKKyAgICAgICAgc2hvdWxkQmUoJ2Vycm9yLmNvZGUnLCAnZXJyb3IuUE9TSVRJT05fVU5BVkFJ
TEFCTEUnKTsKICAgICAgICAgc2hvdWxkQmUoJ2Vycm9yLm1lc3NhZ2UnLCAnbW9ja01lc3NhZ2Un
KTsKICAgICAgICAgZmluaXNoSlNUZXN0KCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvd2F0Y2guanMgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvd2F0Y2guanMKaW5kZXggNmYx
ZmUwY2RmMjQwYzQ4MjE5ZWViMThkMzZmYmM2MGRjODFjODlhMi4uMGVhMWNhZjQ4ZDk4YjQ3ZmI5
YTMzNGUzOTQzMWVlNzhhYmVkODQ2MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
R2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3dhdGNoLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy93YXRjaC5qcwpAQCAtNCw3ICs0LDYgQEAgdmFy
IG1vY2tMYXRpdHVkZSA9IDUxLjQ3ODsKIHZhciBtb2NrTG9uZ2l0dWRlID0gLTAuMTY2OwogdmFy
IG1vY2tBY2N1cmFjeSA9IDEwMC4wOwogCi12YXIgbW9ja0NvZGUgPSAyOwogdmFyIG1vY2tNZXNz
YWdlID0gJ3Rlc3QnOwogCiB2YXIgcG9zaXRpb247CkBAIC0yMCw3ICsxOSw3IEBAIGZ1bmN0aW9u
IGNoZWNrUG9zaXRpb24ocCkgewogCiBmdW5jdGlvbiBjaGVja0Vycm9yKGUpIHsKICAgICBlcnJv
ciA9IGU7Ci0gICAgc2hvdWxkQmUoJ2Vycm9yLmNvZGUnLCAnbW9ja0NvZGUnKTsKKyAgICBzaG91
bGRCZSgnZXJyb3IuY29kZScsICdlcnJvci5QT1NJVElPTl9VTkFWQUlMQUJMRScpOwogICAgIHNo
b3VsZEJlKCdlcnJvci5tZXNzYWdlJywgJ21vY2tNZXNzYWdlJyk7CiAgICAgZGVidWcoJycpOwog
fQpAQCAtNDIsNyArNDEsNyBAQCBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24ud2F0Y2hQb3NpdGlvbihm
dW5jdGlvbihwKSB7CiAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgIGNoZWNrUG9zaXRpb24o
cCk7CiAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICAgICAg
dGVzdFJ1bm5lci5zZXRNb2NrR2VvbG9jYXRpb25FcnJvcihtb2NrQ29kZSwgbW9ja01lc3NhZ2Up
OworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25V
bmF2YWlsYWJsZUVycm9yKG1vY2tNZXNzYWdlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIDM6CiAgICAgICAgICAgICBjaGVja1Bvc2l0aW9uKHApOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vd2F0Y2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vd2F0Y2gtZXhwZWN0ZWQudHh0CmluZGV4IGEwNDM0
NTU2ZjJiZjA1NWE5M2RjNzM1YjNiYTNhZTY4OGQ1ZTE3ZjguLjRjNzVmMDhlNTM3M2VkY2I5ZTVh
MTAyMzBmNjY3NzBkYTY4NjYzNTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dl
b2xvY2F0aW9uL3dhdGNoLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9H
ZW9sb2NhdGlvbi93YXRjaC1leHBlY3RlZC50eHQKQEAgLTExLDcgKzExLDcgQEAgUEFTUyBwb3Np
dGlvbi5jb29yZHMubGF0aXR1ZGUgaXMgbW9ja0xhdGl0dWRlCiBQQVNTIHBvc2l0aW9uLmNvb3Jk
cy5sb25naXR1ZGUgaXMgbW9ja0xvbmdpdHVkZQogUEFTUyBwb3NpdGlvbi5jb29yZHMuYWNjdXJh
Y3kgaXMgbW9ja0FjY3VyYWN5CiAKLVBBU1MgZXJyb3IuY29kZSBpcyBtb2NrQ29kZQorUEFTUyBl
cnJvci5jb2RlIGlzIGVycm9yLlBPU0lUSU9OX1VOQVZBSUxBQkxFCiBQQVNTIGVycm9yLm1lc3Nh
Z2UgaXMgbW9ja01lc3NhZ2UKIAogUEFTUyBwb3NpdGlvbi5jb29yZHMubGF0aXR1ZGUgaXMgbW9j
a0xhdGl0dWRlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165440</attachid>
            <date>2012-09-24 13:48:49 -0700</date>
            <delta_ts>2012-09-24 19:29:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97386-20120924134810.patch</filename>
            <type>text/plain</type>
            <size>64504</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzUyZWQ2YzllNzg1YjYz
ZWExYzFhYzViOTNjZDA1ODI3MzhmZDkwZi4uMmNmYTBkYzcxZDM2YWI1YmMzM2ViYjQyZGVlZmNi
ZDVhNmJhN2U0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTA5LTI0ICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCBHZW9sb2Nh
dGlvbiBlcnJvciByZXBvcnRpbmcgaW4gdGhlIHRlc3Qgc3VwcG9ydAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTczODYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHZW9sb2NhdGlvbkNvbnRyb2xsZXIgY3Vy
cmVudGx5IGV4cG9zZSBHZW9sb2NhdGlvbkVycm9yIHdoaWNoIGNhbiBiZSBlaXRoZXIKKyAgICAg
ICAgUGVybWlzc2lvbkRlbmllZCBvciBQb3NpdGlvblVuYXZhaWxhYmxlLgorCisgICAgICAgIElu
IHByYWN0aWNlLCBvbmx5IFBvc2l0aW9uVW5hdmFpbGFibGUgaXMgc3VwcG9ydGVkIGFuZCB0ZXN0
ZWQsIG9ubHkgQ2hyb21lCisgICAgICAgIHNvbWV3aGF0IGV4cG9zZSBQZXJtaXNzaW9uRGVuaWVk
LgorICAgICAgICBUaGUgY29ycmVjdCB3YXkgdG8gZGVueSB0aGUgcGVybWlzc2lvbiBpcyB0aHJv
dWdoIEdlb2xvY2F0aW9uOjpzZXRJc0FsbG93ZWQoKS4KKworICAgICAgICBUaGlzIHBhdGNoIGRv
ZXMgc29tZSBvZiB0aGUgaW5pdGlhbCBjbGVhbnVwIHRvd2FyZCB0aGF0IGdvYWwsIHJlZHVjaW5n
IGhvdworICAgICAgICBmYXIgR2VvbG9jYXRpb25FcnJvciBpcyBzcHJlYWQuCisKKyAgICAgICAg
KiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgIE1hYyBkb2VzIG5vdCB1c2UgR2VvbG9jYXRpb25DbGllbnRNb2NrLCBp
dCBzaG91bGQgbm90IGJlIGNvbXBpbGVkIGluIFdlYkNvcmUuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW9s
b2NhdGlvbkNsaWVudE1vY2s6Okdlb2xvY2F0aW9uQ2xpZW50TW9jayk6CisgICAgICAgIChXZWJD
b3JlOjpHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnNldFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6Okdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0UG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKToK
KyAgICAgICAgVGhpcyBtZXRob2QgcmVwbGFjZSBzZXRFcnJvcigpLiBJdCBpcyBsaW1pdGVkIHRv
IFBvc2l0aW9uVW5hdmFpbGFibGUgZXJyb3JzLgorCisgICAgICAgIChXZWJDb3JlOjpHZW9sb2Nh
dGlvbkNsaWVudE1vY2s6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uQ2xp
ZW50TW9jazo6Y29udHJvbGxlclRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbkNsaWVudE1vY2s6OmNsZWFyRXJyb3IpOgorICAgICAg
ICAqIHBsYXRmb3JtL21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmg6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKEdlb2xvY2F0aW9uQ2xpZW50TW9jayk6CisKIDIwMTItMDktMjQgIFNl
YW4gV2FuZyAgPFh1ZXdlbi5XYW5nQHRvcmNobW9iaWxlLmNvbS5jbj4KIAogICAgICAgICBbQmxh
Y2tCZXJyeV0gQmFzaWMgYXV0aGVudGljYXRpb24gY2hhbGxlbmdlIGNyZWRlbnRpYWxzIGZvciBz
dG9yZWQgY3JlZGVudGlhbHMgYWdhaW4gYWZ0ZXIgcmVzdGFydGluZyBicm93c2VyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L0NoYW5nZUxvZwppbmRleCBiOGMwMmE5MTljNzIxNGEwMmY3YWE0ODE2ZjdmMmFm
ZjRjOTEzMTAwLi5iNGYxYzk2ZTNlZGRjZjM1MzhkZGNjYWUyOGM4OGJkODZiNTlmNDczIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wOS0yNCAg
QmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggR2Vv
bG9jYXRpb24gZXJyb3IgcmVwb3J0aW5nIGluIHRoZSB0ZXN0IHN1cHBvcnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3Mzg2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnQ6OnNl
dE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcik6CisgICAgICAgICogV2Vi
S2l0U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuaDoKKyAgICAgICAgKER1bXBSZW5kZXJU
cmVlU3VwcG9ydCk6CisKIDIwMTItMDktMjQgIEFydmlkIE5pbHNzb24gIDxhbmlsc3NvbkByaW0u
Y29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBBZGQgY29va2llIGRhdGFiYXNlIEFQSQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBkYjY1YzVjZGU5YTA1NzJjMmQ4ZDFjZTZkYTQ2YjA0
MDFmMTMxMDg0Li5lZjEzMDBiNmJhY2ZiNGYyMTI0ZWZhNDNhNjgwZWExYzMxN2M4NmI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA5LTI0ICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCBHZW9sb2Nh
dGlvbiBlcnJvciByZXBvcnRpbmcgaW4gdGhlIHRlc3Qgc3VwcG9ydAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTczODYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHB1YmxpYy9XZWJHZW9sb2NhdGlvbkNs
aWVudE1vY2suaDoKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uQ2xpZW50TW9jayk6CisgICAgICAg
ICogc3JjL1dlYkdlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWls
YWJsZUVycm9yKToKKwogMjAxMi0wOS0yNCAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEFkZCBzZXR0ZXJzIHRvIFdlYkZpbHRlck9wZXJh
dGlvbiBmb3IgSVBDIHBpY2tsaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggZmQyNTQ2ZjE1NGJhZDJk
MDRiN2MxNjY4NWY2MThjMTBkNDA5MDAyYS4uMjIxNWFkMmZjNDllMDAyYTI0ZmFlZmQ4Njk0NmI0
YzEwM2ZjMzI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA5LTI0
ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCBH
ZW9sb2NhdGlvbiBlcnJvciByZXBvcnRpbmcgaW4gdGhlIHRlc3Qgc3VwcG9ydAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTczODYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBv
cnRHdGs6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcik6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmg6CisgICAgICAg
IChEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGspOgorCiAyMDEyLTA5LTI0ICBaYW4gRG9iZXJzZWsg
IDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CiAKICAgICAgICAgW0d0a10gVW5za2lwIHRoZSBTaGFk
b3cgRE9NIGxheW91dCB0ZXN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDFhMWZjMTU5MTYxODg4NGVi
NTI5YWM5MTE0OWE5Nzk0OGY5OTBiNDUuLjNlYjlkN2NjOTQ0MTc1NDIwMTY4NzJiYWZhMDIwZTEw
MzNiZGE4MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wOS0yNCAg
QmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggR2Vv
bG9jYXRpb24gZXJyb3IgcmVwb3J0aW5nIGluIHRoZSB0ZXN0IHN1cHBvcnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3Mzg2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06
CisgICAgICAgICgtW1dlYlZpZXcgX2dlb2xvY2F0aW9uRGlkRmFpbFdpdGhNZXNzYWdlOl0pOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViVmlld1ByaXZhdGUuaDoKKwogMjAxMi0wOS0yMSAgQ2hyaXMg
Um9nZXJzICA8Y3JvZ2Vyc0Bnb29nbGUuY29tPgogCiAgICAgICAgIEFkZCBXZWIgQXVkaW8gc3Vw
cG9ydCBmb3IgZGVwcmVjYXRlZC9sZWdhY3kgQVBJcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCA1YWE2MmYx
NzkxNDAwZTcyN2NmOGFiMDQwZmEwMDc5ZGI4MjhiZTNmLi4wZjU4ZmQ2ZTUzN2NkZTYzYTU2MGM5
ZDU4M2ZjMmU3MjQ3MzE5NzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEy
LTA5LTI0ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAg
IEZpeCBHZW9sb2NhdGlvbiBlcnJvciByZXBvcnRpbmcgaW4gdGhlIHRlc3Qgc3VwcG9ydAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTczODYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0OjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Lmg6CisKIDIw
MTItMDktMjAgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBbUXRdIEVuYWJsZSBDU1MgcmVnaW9ucyBieSBkZWZhdWx0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmlu
ZGV4IDM3OTI0NGUwMzA0ZjJhZWY4ZDhlMTEyMGU2ZjAwMDJkOGY5MGU4MmIuLmU1MzEwY2YyN2Iz
NDEyNzhiZTU2ZDdmMTMzOGQwODE1YmJkMzVlNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0y
MTkyLDcgKzIxOTIsNiBAQCBfX1pON1dlYkNvcmUxMUdlb2xvY2F0aW9uMTJzZXRJc0FsbG93ZWRF
YgogX19aTjdXZWJDb3JlMTFHZW9sb2NhdGlvbkQxRXYKIF9fWk5LN1dlYkNvcmUxMUdlb2xvY2F0
aW9uNWZyYW1lRXYKIF9fWk43V2ViQ29yZTIwcHJvdmlkZUdlb2xvY2F0aW9uVG9FUE5TXzRQYWdl
RVBOU18xN0dlb2xvY2F0aW9uQ2xpZW50RQotX19aTjdXZWJDb3JlMjFHZW9sb2NhdGlvbkNsaWVu
dE1vY2sxM3NldFBlcm1pc3Npb25FYgogX19aTjdXZWJDb3JlMjFHZW9sb2NhdGlvbkNvbnRyb2xs
ZXIxM2Vycm9yT2NjdXJyZWRFUE5TXzE2R2VvbG9jYXRpb25FcnJvckUKIF9fWk43V2ViQ29yZTIx
R2VvbG9jYXRpb25Db250cm9sbGVyMTRzdXBwbGVtZW50TmFtZUV2CiBfX1pON1dlYkNvcmUyMUdl
b2xvY2F0aW9uQ29udHJvbGxlcjE1cG9zaXRpb25DaGFuZ2VkRVBOU18xOUdlb2xvY2F0aW9uUG9z
aXRpb25FCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggN2EyNWVhYTg4MTRhZDQ4NTczMzFhNmM1M2E3NjYzNjZjZDNjMjJkYy4uZDk1
NDFlOGI1ZDg2MjVjOTgyOTg4MjRjMWI2NmM1MWRkMzg5Nzg1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzYsOCArNzYsNiBA
QAogCQkwMzNBNkE3RTE0N0UwN0U3MDA1MDlCMzYgLyogSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9u
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAzM0E2
QTdEMTQ3RTA3RTcwMDUwOUIzNiAvKiBIVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uY3BwICovOyB9
OwogCQkwMzNBNkE4MTE0N0UwODg2MDA1MDlCMzYgLyogSlNIVE1MUHJvcGVydGllc0NvbGxlY3Rp
b24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDMz
QTZBODAxNDdFMDg4NjAwNTA5QjM2IC8qIEpTSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmNwcCAq
LzsgfTsKIAkJMDMzQTZBODMxNDdFMDhBNjAwNTA5QjM2IC8qIEpTSFRNTFByb3BlcnRpZXNDb2xs
ZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
MzNBNkE4MjE0N0UwOEE2MDA1MDlCMzYgLyogSlNIVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uaCAq
LzsgfTsKLQkJMDUyQkZDRTkxMjhBQkYxNTAwRkQzMzhEIC8qIEdlb2xvY2F0aW9uQ2xpZW50TW9j
ay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNTJC
RkNFODEyOEFCRjE1MDBGRDMzOEQgLyogR2VvbG9jYXRpb25DbGllbnRNb2NrLmNwcCAqLzsgfTsK
LQkJMDUyQkZDRUIxMjhBQkYyMTAwRkQzMzhEIC8qIEdlb2xvY2F0aW9uQ2xpZW50TW9jay5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDUyQkZDRUExMjhB
QkYyMTAwRkQzMzhEIC8qIEdlb2xvY2F0aW9uQ2xpZW50TW9jay5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA1NjJGOTQ2MTU3M0VDRUIwMDMxQ0Ex
NiAvKiBXZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA1NjJGOTQ0MTU3M0VDRUIwMDMxQ0ExNiAvKiBXZWJL
aXRDU1NTVkdEb2N1bWVudFZhbHVlLmNwcCAqLzsgfTsKIAkJMDU2MkY5NDcxNTczRUNFQjAwMzFD
QTE2IC8qIFdlYktpdENTU1NWR0RvY3VtZW50VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA1NjJGOTQ1MTU3M0VDRUIwMDMxQ0ExNiAvKiBXZWJL
aXRDU1NTVkdEb2N1bWVudFZhbHVlLmggKi87IH07CiAJCTA1NjJGOTYxMTU3M0Y4OEYwMDMxQ0Ex
NiAvKiBQbGF0Zm9ybUxheWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNTYyRjk2MDE1NzNGODhGMDAzMUNBMTYgLyogUGxhdGZvcm1MYXllci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03MDg4LDgg
KzcwODYsNiBAQAogCQkwMzNBNkE3RjE0N0UwN0Y5MDA1MDlCMzYgLyogSFRNTFByb3BlcnRpZXND
b2xsZWN0aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1MUHJvcGVydGllc0NvbGxl
Y3Rpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwMzNBNkE4MDE0N0UwODg2
MDA1MDlCMzYgLyogSlNIVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwMzNBNkE4MjE0N0UwOEE2MDA1MDlCMzYgLyog
SlNIVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNIVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMDUyQkZDRTgxMjhBQkYxNTAwRkQzMzhEIC8qIEdlb2xvY2F0aW9uQ2xpZW50TW9j
ay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBHZW9sb2NhdGlvbkNs
aWVudE1vY2suY3BwOyBwYXRoID0gbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwNTJCRkNFQTEyOEFCRjIxMDBGRDMzOEQgLyogR2Vv
bG9jYXRpb25DbGllbnRNb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEdl
b2xvY2F0aW9uQ2xpZW50TW9jay5oOyBwYXRoID0gbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2su
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDU2MkY5NDQxNTczRUNFQjAwMzFDQTE2
IC8qIFdlYktpdENTU1NWR0RvY3VtZW50VmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTA1NjJGOTQ1MTU3M0VDRUIwMDMxQ0ExNiAvKiBXZWJLaXRDU1NT
VkdEb2N1bWVudFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktp
dENTU1NWR0RvY3VtZW50VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDU2
MkY5NjAxNTczRjg4RjAwMzFDQTE2IC8qIFBsYXRmb3JtTGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1MYXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTU0NjEsOCArMTU0NTcsNiBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNTkzMDlB
MTAxMUY0QUU1ODAwMjUwNjAzIC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAgKi8s
CiAJCQkJNTkzMDlBMTIxMUY0QUU2QTAwMjUwNjAzIC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50
TW9jay5oICovLAotCQkJCTA1MkJGQ0U4MTI4QUJGMTUwMEZEMzM4RCAvKiBHZW9sb2NhdGlvbkNs
aWVudE1vY2suY3BwICovLAotCQkJCTA1MkJGQ0VBMTI4QUJGMjEwMEZEMzM4RCAvKiBHZW9sb2Nh
dGlvbkNsaWVudE1vY2suaCAqLywKIAkJCQkwRkU3MTQwMzE0MjE3MEI4MDBEQjMzQkEgLyogU2Ny
b2xsYmFyVGhlbWVNb2NrLmNwcCAqLywKIAkJCQkwRkU3MTQwNDE0MjE3MEI4MDBEQjMzQkEgLyog
U2Nyb2xsYmFyVGhlbWVNb2NrLmggKi8sCiAJCQkpOwpAQCAtMjM1MjEsNyArMjM1MTUsNiBAQAog
CQkJCTA3MjBCMEExMTREMzMyMzUwMDY0Mjk1NSAvKiBHZW5lcmljRXZlbnRRdWV1ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTc0NkFGMjQxNEY0RERFNjAwM0U3QTcwIC8qIEdlb2xvY2F0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzU2Q0IyMzEwRDVBQzgwMDBBNzdDNjQgLyogR2VvbG9jYXRp
b25DbGllbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTA1MkJGQ0VCMTI4QUJGMjEwMEZEMzM4RCAv
KiBHZW9sb2NhdGlvbkNsaWVudE1vY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NDZBRjI3MTRG
NERERTYwMDNFN0E3MCAvKiBHZW9sb2NhdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTk3NDZBRjI4MTRGNERERTYwMDNFN0E3MCAvKiBHZW9sb2NhdGlvbkVycm9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5NzQ2QUYyOTE0RjREREU2MDAzRTdBNzAgLyogR2VvbG9jYXRpb25Qb3Np
dGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjc1Myw3ICsyNjc0Niw2IEBACiAJCQkJMkQ0ODFG
MDMxNDZCNUM2NTAwQUE3ODM0IC8qIEdlbmVyYXRvckdlbmVyYXRlZEltYWdlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTA3MjBCMEEwMTREMzMyMzUwMDY0Mjk1NSAvKiBHZW5lcmljRXZlbnRRdWV1
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzQ2QUYyMzE0RjREREU2MDAzRTdBNzAgLyogR2Vv
bG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMDUyQkZDRTkxMjhBQkYxNTAwRkQzMzhE
IC8qIEdlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzQ2QUYy
NjE0RjREREU2MDAzRTdBNzAgLyogR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTA3MjBCMEEwMTREMzMyMzUwMDY0Mjk1NiAvKiBHZXN0dXJlRXZlbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQjJDM0RBNkQwRDAwNkNENjAwRUY2RjI2IC8qIEdseXBoUGFnZVRy
ZWVOb2RlLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suY3BwCmluZGV4IDI3NmI0YTM0MzA5Yzky
OThhOGY4NWJkOGQ2NjlkYjExOWRjOTE0MTguLjk5MDFiNjZhYTdhOWRiMmJjYzkwNDU5MTViZTE0
MWUyN2I4YTVkZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svR2Vv
bG9jYXRpb25DbGllbnRNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L0dlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtNDEsNiArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6R2VvbG9jYXRpb25DbGllbnRNb2NrKCkKICAg
ICA6IG1fY29udHJvbGxlcigwKQorICAgICwgbV9oYXNFcnJvcihmYWxzZSkKICAgICAsIG1fY29u
dHJvbGxlclRpbWVyKHRoaXMsICZHZW9sb2NhdGlvbkNsaWVudE1vY2s6OmNvbnRyb2xsZXJUaW1l
ckZpcmVkKQogICAgICwgbV9wZXJtaXNzaW9uVGltZXIodGhpcywgJkdlb2xvY2F0aW9uQ2xpZW50
TW9jazo6cGVybWlzc2lvblRpbWVyRmlyZWQpCiAgICAgLCBtX2lzQWN0aXZlKGZhbHNlKQpAQCAt
NjIsMTQgKzY0LDE1IEBAIHZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjpzZXRDb250cm9sbGVy
KEdlb2xvY2F0aW9uQ29udHJvbGxlciAqY29udHJvbGxlcikKIHZvaWQgR2VvbG9jYXRpb25DbGll
bnRNb2NrOjpzZXRQb3NpdGlvbihQYXNzUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+IHBvc2l0
aW9uKQogewogICAgIG1fbGFzdFBvc2l0aW9uID0gcG9zaXRpb247Ci0gICAgbV9sYXN0RXJyb3Ig
PSAwOworICAgIGNsZWFyRXJyb3IoKTsKICAgICBhc3luY1VwZGF0ZUNvbnRyb2xsZXIoKTsKIH0K
IAotdm9pZCBHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnNldEVycm9yKFBhc3NSZWZQdHI8R2VvbG9j
YXRpb25FcnJvcj4gZXJyb3IpCit2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6c2V0UG9zaXRp
b25VbmF2YWlsYWJsZUVycm9yKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQogewotICAgIG1f
bGFzdEVycm9yID0gZXJyb3I7Ci0gICAgbV9sYXN0UG9zaXRpb24gPSAwOworICAgIG1faGFzRXJy
b3IgPSB0cnVlOworICAgIG1fZXJyb3JNZXNzYWdlID0gZXJyb3JNZXNzYWdlOworICAgIG1fbGFz
dFBvc2l0aW9uID0gbnVsbHB0cjsKICAgICBhc3luY1VwZGF0ZUNvbnRyb2xsZXIoKTsKIH0KIApA
QCAtMTI1LDcgKzEyOCw3IEBAIHZvaWQgR2VvbG9jYXRpb25DbGllbnRNb2NrOjpwZXJtaXNzaW9u
VGltZXJGaXJlZChXZWJDb3JlOjpUaW1lcjxHZW9sb2NhdGlvbkNsaWVuCiB2b2lkIEdlb2xvY2F0
aW9uQ2xpZW50TW9jazo6cmVzZXQoKQogewogICAgIG1fbGFzdFBvc2l0aW9uID0gMDsKLSAgICBt
X2xhc3RFcnJvciA9IDA7CisgICAgY2xlYXJFcnJvcigpOwogICAgIG1fcGVybWlzc2lvblN0YXRl
ID0gUGVybWlzc2lvblN0YXRlVW5zZXQ7CiB9CiAKQEAgLTE3MSwxMCArMTc0LDE5IEBAIHZvaWQg
R2VvbG9jYXRpb25DbGllbnRNb2NrOjpjb250cm9sbGVyVGltZXJGaXJlZChUaW1lcjxHZW9sb2Nh
dGlvbkNsaWVudE1vY2s+KiB0CiAgICAgQVNTRVJUX1VOVVNFRCh0aW1lciwgdGltZXIgPT0gJm1f
Y29udHJvbGxlclRpbWVyKTsKICAgICBBU1NFUlQobV9jb250cm9sbGVyKTsKIAotICAgIGlmICht
X2xhc3RQb3NpdGlvbi5nZXQoKSkKKyAgICBpZiAobV9sYXN0UG9zaXRpb24uZ2V0KCkpIHsKKyAg
ICAgICAgQVNTRVJUKCFtX2hhc0Vycm9yKTsKICAgICAgICAgbV9jb250cm9sbGVyLT5wb3NpdGlv
bkNoYW5nZWQobV9sYXN0UG9zaXRpb24uZ2V0KCkpOwotICAgIGVsc2UgaWYgKG1fbGFzdEVycm9y
LmdldCgpKQotICAgICAgICBtX2NvbnRyb2xsZXItPmVycm9yT2NjdXJyZWQobV9sYXN0RXJyb3Iu
Z2V0KCkpOworICAgIH0gZWxzZSBpZiAobV9oYXNFcnJvcikgeworICAgICAgICBSZWZQdHI8R2Vv
bG9jYXRpb25FcnJvcj4gZ2VvbG9jYXRpb0Vycm9yID0gR2VvbG9jYXRpb25FcnJvcjo6Y3JlYXRl
KEdlb2xvY2F0aW9uRXJyb3I6OlBvc2l0aW9uVW5hdmFpbGFibGUsIG1fZXJyb3JNZXNzYWdlKTsK
KyAgICAgICAgbV9jb250cm9sbGVyLT5lcnJvck9jY3VycmVkKGdlb2xvY2F0aW9FcnJvci5nZXQo
KSk7CisgICAgfQorfQorCit2b2lkIEdlb2xvY2F0aW9uQ2xpZW50TW9jazo6Y2xlYXJFcnJvcigp
Cit7CisgICAgbV9oYXNFcnJvciA9IGZhbHNlOworICAgIG1fZXJyb3JNZXNzYWdlID0gU3RyaW5n
KCk7CiB9CiAKIH0gLy8gV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svR2VvbG9jYXRpb25DbGllbnRNb2NrLmgKaW5kZXggOGFiZDVlOTcwZThjMDg5MzBmYTFh
NWEzMzcyNGYzOWFkODBmMDU4ZS4uZjM4MGMxNDQzNDc5NzNkYjUxMmMwZmUyNDU4MGRiZmFlZGZm
YzUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9HZW9sb2NhdGlv
bkNsaWVudE1vY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0
aW9uQ2xpZW50TW9jay5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKQEAgLTQyLDkgKzQzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBHZW9sb2NhdGlvbkNvbnRyb2xsZXI7CiBjbGFzcyBHZW9sb2NhdGlvblBvc2l0aW9uOwotY2xh
c3MgR2VvbG9jYXRpb25FcnJvcjsKIAotLy8gUHJvdmlkZXMgYSBtb2NrIG9iamVjdCBmb3IgdGhl
IGdlb2xvY2F0aW9uIGNsaWVudAorLy8gRklYTUU6IHRoaXMgc2hvdWxkIG5vdCBiZSBpbiBXZWJD
b3JlLiBJdCBzaG91bGQgYmUgbW92ZWQgdG8gV2ViS2l0LgorLy8gUHJvdmlkZXMgYSBtb2NrIG9i
amVjdCBmb3IgdGhlIGdlb2xvY2F0aW9uIGNsaWVudC4KIGNsYXNzIEdlb2xvY2F0aW9uQ2xpZW50
TW9jayA6IHB1YmxpYyBHZW9sb2NhdGlvbkNsaWVudCB7CiBwdWJsaWM6CiAgICAgR2VvbG9jYXRp
b25DbGllbnRNb2NrKCk7CkBAIC01Myw4ICs1NCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0
KCk7CiAgICAgdm9pZCBzZXRDb250cm9sbGVyKEdlb2xvY2F0aW9uQ29udHJvbGxlciopOwogCi0g
ICAgdm9pZCBzZXRFcnJvcihQYXNzUmVmUHRyPEdlb2xvY2F0aW9uRXJyb3I+KTsKICAgICB2b2lk
IHNldFBvc2l0aW9uKFBhc3NSZWZQdHI8R2VvbG9jYXRpb25Qb3NpdGlvbj4pOworICAgIHZvaWQg
c2V0UG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsK
ICAgICB2b2lkIHNldFBlcm1pc3Npb24oYm9vbCBhbGxvd2VkKTsKICAgICBpbnQgbnVtYmVyT2ZQ
ZW5kaW5nUGVybWlzc2lvblJlcXVlc3RzKCkgY29uc3Q7CiAKQEAgLTc0LDkgKzc1LDEyIEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBhc3luY1VwZGF0ZVBlcm1pc3Npb24oKTsKICAgICB2b2lkIHBlcm1p
c3Npb25UaW1lckZpcmVkKFRpbWVyPEdlb2xvY2F0aW9uQ2xpZW50TW9jaz4qKTsKIAorICAgIHZv
aWQgY2xlYXJFcnJvcigpOworCiAgICAgR2VvbG9jYXRpb25Db250cm9sbGVyKiBtX2NvbnRyb2xs
ZXI7CiAgICAgUmVmUHRyPEdlb2xvY2F0aW9uUG9zaXRpb24+IG1fbGFzdFBvc2l0aW9uOwotICAg
IFJlZlB0cjxHZW9sb2NhdGlvbkVycm9yPiBtX2xhc3RFcnJvcjsKKyAgICBib29sIG1faGFzRXJy
b3I7CisgICAgU3RyaW5nIG1fZXJyb3JNZXNzYWdlOwogICAgIFRpbWVyPEdlb2xvY2F0aW9uQ2xp
ZW50TW9jaz4gbV9jb250cm9sbGVyVGltZXI7CiAgICAgVGltZXI8R2VvbG9jYXRpb25DbGllbnRN
b2NrPiBtX3Blcm1pc3Npb25UaW1lcjsKICAgICBib29sIG1faXNBY3RpdmU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnQuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0LmNwcAppbmRleCBlNGU0ZWYwYzA3ZDZlYTBhYzM1NWNkOTI2ZDJhZjU0
ODc3ZjFjMDMzLi5lYTRhYzU2MDE5ODE5ODIyNzAyN2Q2YmNhNzRiNTNlYzYzM2JiOGJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC05NSwyMCArOTYsMTAgQEAgdm9pZCBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnQ6OnJlc2V0R2VvbG9jYXRpb25Nb2NrKFdlYlBhZ2UqIHdlYlBhZ2UpCiAg
ICAgbW9ja0NsaWVudC0+cmVzZXQoKTsKIH0KIAotdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnQ6
OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKFdlYlBhZ2UqIHdlYlBhZ2UsIGludCBlcnJvckNvZGUs
IGNvbnN0IFN0cmluZyBtZXNzYWdlKQordm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnQ6OnNldE1v
Y2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihXZWJQYWdlKiB3ZWJQYWdlLCBj
b25zdCBTdHJpbmcgbWVzc2FnZSkKIHsKLSAgICBHZW9sb2NhdGlvbkVycm9yOjpFcnJvckNvZGUg
Y29kZSA9IEdlb2xvY2F0aW9uRXJyb3I6OlBvc2l0aW9uVW5hdmFpbGFibGU7Ci0gICAgc3dpdGNo
IChlcnJvckNvZGUpIHsKLSAgICBjYXNlIFBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJT05fREVOSUVE
OgotICAgICAgICBjb2RlID0gR2VvbG9jYXRpb25FcnJvcjo6UGVybWlzc2lvbkRlbmllZDsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQb3NpdGlvbkVycm9yOjpQT1NJVElPTl9VTkFWQUlMQUJM
RToKLSAgICAgICAgY29kZSA9IEdlb2xvY2F0aW9uRXJyb3I6OlBvc2l0aW9uVW5hdmFpbGFibGU7
Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQogICAgIEdlb2xvY2F0aW9uQ2xpZW50TW9jayogbW9j
a0NsaWVudCA9IHN0YXRpY19jYXN0PEdlb2xvY2F0aW9uQ2xpZW50TW9jayo+KEdlb2xvY2F0aW9u
Q29udHJvbGxlcjo6ZnJvbShjb3JlUGFnZSh3ZWJQYWdlKSktPmNsaWVudCgpKTsKLSAgICBtb2Nr
Q2xpZW50LT5zZXRFcnJvcihHZW9sb2NhdGlvbkVycm9yOjpjcmVhdGUoY29kZSwgbWVzc2FnZSkp
OworICAgIG1vY2tDbGllbnQtPnNldFBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihtZXNzYWdlKTsK
IH0KIAogdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnQ6OnNldE1vY2tHZW9sb2NhdGlvblBlcm1p
c3Npb24oV2ViUGFnZSogd2ViUGFnZSwgYm9vbCBhbGxvd2VkKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0Lmgg
Yi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnQuaAppbmRleCA1OGZjMWI1M2VkYjVkOGFhYzBkMzgyNjA1NjVhYzQ3MDIxZWEyNWU2Li4w
MWZlNGY4M2E3ZjJlYWIwZTEyOTg3MGE5ZGRjZjE4OGU4ODIxODg5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnQuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
UmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKQEAgLTUyLDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGludCBudW1i
ZXJPZlBlbmRpbmdHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0cyhCbGFja0JlcnJ5OjpXZWJL
aXQ6OldlYlBhZ2UqKTsKICAgICBzdGF0aWMgdm9pZCByZXNldEdlb2xvY2F0aW9uTW9jayhCbGFj
a0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2UqKTsKLSAgICBzdGF0aWMgdm9pZCBzZXRNb2NrR2VvbG9j
YXRpb25FcnJvcihCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2UqLCBpbnQgZXJyb3JDb2RlLCBj
b25zdCBXVEY6OlN0cmluZyBtZXNzYWdlKTsKKyAgICBzdGF0aWMgdm9pZCBzZXRNb2NrR2VvbG9j
YXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdl
KiwgY29uc3QgV1RGOjpTdHJpbmcgbWVzc2FnZSk7CiAgICAgc3RhdGljIHZvaWQgc2V0TW9ja0dl
b2xvY2F0aW9uUGVybWlzc2lvbihCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2UqLCBib29sIGFs
bG93ZWQpOwogICAgIHN0YXRpYyB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKEJsYWNr
QmVycnk6OldlYktpdDo6V2ViUGFnZSosIGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVk
ZSwgZG91YmxlIGFjY3VyYWN5KTsKICAgICBzdGF0aWMgdm9pZCBzY2FsZVBhZ2VCeShCbGFja0Jl
cnJ5OjpXZWJLaXQ6OldlYlBhZ2UqLCBmbG9hdCwgZmxvYXQsIGZsb2F0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0aW9uQ2xpZW50TW9jay5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR2VvbG9jYXRpb25DbGllbnRNb2Nr
LmgKaW5kZXggMDUyYTU0NmFkY2MyZDFlYmJkMjI0YjZkNzc0NTQ2Zjc3YWNjNTVhZS4uYTA0ZDFk
ZGRlMmUxOGFmOTQyNzM4OThlNmRmMGMwYWQ3NjVjMzRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrLmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR2VvbG9jYXRpb25DbGllbnRNb2NrLmgKQEAg
LTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIH5XZWJHZW9sb2NhdGlvbkNsaWVudE1vY2soKSB7
IHJlc2V0KCk7IH0KIAogICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRQb3NpdGlvbihkb3VibGUg
bGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSk7Ci0gICAgV0VCS0lU
X0VYUE9SVCB2b2lkIHNldEVycm9yKGludCBlcnJvckNvZGUsIGNvbnN0IFdlYlN0cmluZyYgbWVz
c2FnZSk7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFBvc2l0aW9uVW5hdmFpbGFibGVFcnJv
cihjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UpOwogICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRQ
ZXJtaXNzaW9uKGJvb2wpOwogICAgIFdFQktJVF9FWFBPUlQgaW50IG51bWJlck9mUGVuZGluZ1Bl
cm1pc3Npb25SZXF1ZXN0cygpIGNvbnN0OwogICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldE1v
Y2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdlb2xvY2F0
aW9uQ2xpZW50TW9jay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHZW9sb2Nh
dGlvbkNsaWVudE1vY2suY3BwCmluZGV4IDNkOTYzMDcwN2ZlYjViNjNmMDNlM2UyNDE5YjJlMzA1
YWY4ZDAyMTIuLmE3OTQ4YTc4ZWY2ZjFjMzBkYWEwNmU4ZjJkODIwNThhZDdlZTk5ZTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdlb2xvY2F0aW9uQ2xpZW50TW9j
ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViR2VvbG9jYXRpb25DbGll
bnRNb2NrLmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uRXJy
b3IuaCIKICNpbmNsdWRlICJXZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmgiCiAjaW5j
bHVkZSAiV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0
cmluZy5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNTgsMjMgKzU5LDkgQEAg
dm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnNldFBvc2l0aW9uKGRvdWJsZSBsYXRpdHVk
ZSwgZG91YmxlIGxvbmdpdHVkZSwgZG8KICAgICBtX2NsaWVudE1vY2stPnNldFBvc2l0aW9uKHdl
YlBvc2l0aW9uKTsKIH0KIAotdm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2s6OnNldEVycm9y
KGludCBlcnJvckNvZGUsIGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSkKK3ZvaWQgV2ViR2VvbG9j
YXRpb25DbGllbnRNb2NrOjpzZXRQb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoY29uc3QgV2ViU3Ry
aW5nJiBtZXNzYWdlKQogewotICAgIFdlYkdlb2xvY2F0aW9uRXJyb3I6OkVycm9yIGNvZGU7Ci0g
ICAgc3dpdGNoIChlcnJvckNvZGUpIHsKLSAgICBjYXNlIFBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJ
T05fREVOSUVEOgotICAgICAgICBjb2RlID0gV2ViR2VvbG9jYXRpb25FcnJvcjo6RXJyb3JQZXJt
aXNzaW9uRGVuaWVkOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBvc2l0aW9uRXJyb3I6OlBP
U0lUSU9OX1VOQVZBSUxBQkxFOgotICAgICAgICBjb2RlID0gV2ViR2VvbG9jYXRpb25FcnJvcjo6
RXJyb3JQb3NpdGlvblVuYXZhaWxhYmxlOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0Ogot
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIFdlYkdlb2xvY2F0aW9uRXJyb3Igd2ViRXJyb3IoY29kZSwgbWVzc2FnZSk7Ci0gICAgbV9j
bGllbnRNb2NrLT5zZXRFcnJvcih3ZWJFcnJvcik7CisgICAgbV9jbGllbnRNb2NrLT5zZXRQb3Np
dGlvblVuYXZhaWxhYmxlRXJyb3IobWVzc2FnZSk7CiB9CiAKIHZvaWQgV2ViR2VvbG9jYXRpb25D
bGllbnRNb2NrOjpzZXRQZXJtaXNzaW9uKGJvb2wgYWxsb3dlZCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRH
dGsuY3BwCmluZGV4IDQ2ZTE4ZWVlNWViYmExN2M4OGUxOWFlNTQ2ODM1ODJkZTYyMzIyY2IuLmIz
OWQ1YWU3NWQ3ZmJkNTM4NmFhY2NiMzM1MzkxODFhYjFiNDFkNWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBw
b3J0R3RrLmNwcApAQCAtMyw2ICszLDcgQEAKICAqICBDb3B5cmlnaHQgKEMpIDIwMTAgSm9vbmUg
SHVyIDxqb29uZUBrbGRwLm9yZz4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4K
KyAqICBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgog
ICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNjU5LDIzICs2NjAsMTEgQEAgdm9pZCBEdW1wUmVuZGVy
VHJlZVN1cHBvcnRHdGs6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcKICNlbmRpZgogfQogCi12b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0
TW9ja0dlb2xvY2F0aW9uRXJyb3IoV2ViS2l0V2ViVmlldyogd2ViVmlldywgaW50IGVycm9yQ29k
ZSwgY29uc3QgZ2NoYXIqIGVycm9yTWVzc2FnZSkKK3ZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0
R3RrOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoV2ViS2l0V2Vi
Vmlldyogd2ViVmlldywgY29uc3QgZ2NoYXIqIGVycm9yTWVzc2FnZSkKIHsKICNpZiBFTkFCTEUo
R0VPTE9DQVRJT04pCiAgICAgR2VvbG9jYXRpb25DbGllbnRNb2NrKiBtb2NrID0gc3RhdGljX2Nh
c3Q8R2VvbG9jYXRpb25DbGllbnRNb2NrKj4oR2VvbG9jYXRpb25Db250cm9sbGVyOjpmcm9tKGNv
cmUod2ViVmlldykpLT5jbGllbnQoKSk7Ci0KLSAgICBHZW9sb2NhdGlvbkVycm9yOjpFcnJvckNv
ZGUgY29kZTsKLSAgICBzd2l0Y2ggKGVycm9yQ29kZSkgewotICAgIGNhc2UgUG9zaXRpb25FcnJv
cjo6UEVSTUlTU0lPTl9ERU5JRUQ6Ci0gICAgICAgIGNvZGUgPSBHZW9sb2NhdGlvbkVycm9yOjpQ
ZXJtaXNzaW9uRGVuaWVkOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBvc2l0aW9uRXJyb3I6
OlBPU0lUSU9OX1VOQVZBSUxBQkxFOgotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGNvZGUgPSBHZW9s
b2NhdGlvbkVycm9yOjpQb3NpdGlvblVuYXZhaWxhYmxlOwotICAgICAgICBicmVhazsKLSAgICB9
Ci0KLSAgICBtb2NrLT5zZXRFcnJvcihHZW9sb2NhdGlvbkVycm9yOjpjcmVhdGUoY29kZSwgZXJy
b3JNZXNzYWdlKSk7CisgICAgbW9jay0+c2V0UG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKGVycm9y
TWVzc2FnZSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmggYi9Tb3VyY2UvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaAppbmRleCA3ZTE1MDU3
ZWRkNGM1NTYwYTExOGJkZThhZmZjYmJlYmI0ZjlhMWM3Li40NGFjNzgzMjlhZDE2NjM5YjFjMmEz
ODhmMWE1NDQ3OGQzMWI4ZThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaApAQCAtMSw1ICsxLDYg
QEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEw
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0xMTEsNyArMTEy
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHJlc2V0R2VvbG9jYXRpb25DbGllbnRNb2Nr
KFdlYktpdFdlYlZpZXcqKTsKICAgICBzdGF0aWMgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25QZXJt
aXNzaW9uKFdlYktpdFdlYlZpZXcqLCBib29sIGFsbG93ZWQpOwogICAgIHN0YXRpYyB2b2lkIHNl
dE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKFdlYktpdFdlYlZpZXcqLCBkb3VibGUgbGF0aXR1ZGUs
IGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSk7Ci0gICAgc3RhdGljIHZvaWQgc2V0
TW9ja0dlb2xvY2F0aW9uRXJyb3IoV2ViS2l0V2ViVmlldyosIGludCBlcnJvckNvZGUsIGNvbnN0
IGdjaGFyKiBlcnJvck1lc3NhZ2UpOworICAgIHN0YXRpYyB2b2lkIHNldE1vY2tHZW9sb2NhdGlv
blBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihXZWJLaXRXZWJWaWV3KiwgY29uc3QgZ2NoYXIqIGVy
cm9yTWVzc2FnZSk7CiAgICAgc3RhdGljIGludCBudW1iZXJPZlBlbmRpbmdHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0cyhXZWJLaXRXZWJWaWV3Kik7CiAKICAgICBzdGF0aWMgdm9pZCBzZXRQ
YWdlQ2FjaGVTdXBwb3J0c1BsdWdpbnMoV2ViS2l0V2ViVmlldyosIGJvb2wgZW5hYmxlZCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggYzFmMGEyZDg5ZDQyZWRiOWJlODk4
MzJiMzM0Y2RiOTQwNDBhYTg2Yi4uODBkNTQxNzRjZDEyZGNmMTNlNjRiYjgyNmFmZDFmZWNmZmM1
MmQyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtNjUxMSwxMSArNjUx
MSwxMSBAQCBzdGF0aWMgdm9pZCBnbGliQ29udGV4dEl0ZXJhdGlvbkNhbGxiYWNrKENGUnVuTG9v
cE9ic2VydmVyUmVmLCBDRlJ1bkxvb3BBY3Rpdml0eQogI2VuZGlmIC8vIEVOQUJMRShHRU9MT0NB
VElPTikKIH0KIAotLSAodm9pZClfZ2VvbG9jYXRpb25EaWRGYWlsV2l0aEVycm9yOihOU0Vycm9y
ICopZXJyb3IKKy0gKHZvaWQpX2dlb2xvY2F0aW9uRGlkRmFpbFdpdGhNZXNzYWdlOihOU1N0cmlu
ZyAqKWVycm9yTWVzc2FnZQogewogI2lmIEVOQUJMRShHRU9MT0NBVElPTikKICAgICBpZiAoX3By
aXZhdGUgJiYgX3ByaXZhdGUtPnBhZ2UpIHsKLSAgICAgICAgUmVmUHRyPEdlb2xvY2F0aW9uRXJy
b3I+IGdlb2xvY2F0aW9FcnJvciA9IEdlb2xvY2F0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlv
bkVycm9yOjpQb3NpdGlvblVuYXZhaWxhYmxlLCBbZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25d
KTsKKyAgICAgICAgUmVmUHRyPEdlb2xvY2F0aW9uRXJyb3I+IGdlb2xvY2F0aW9FcnJvciA9IEdl
b2xvY2F0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvbkVycm9yOjpQb3NpdGlvblVuYXZhaWxh
YmxlLCBlcnJvck1lc3NhZ2UpOwogICAgICAgICBXZWJDb3JlOjpHZW9sb2NhdGlvbkNvbnRyb2xs
ZXI6OmZyb20oX3ByaXZhdGUtPnBhZ2UpLT5lcnJvck9jY3VycmVkKGdlb2xvY2F0aW9FcnJvci5n
ZXQoKSk7CiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShHRU9MT0NBVElPTikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAppbmRleCA4MjY0NzRlNDFiMzRjMjJiZmY1
NDU2MGY2YTBiMThmNzIzZjkwN2UzLi5jNDZkMzVlMTIzMjU2NjlkNjFhZDhlMmFmN2QyOTQ1ZDNh
YjFjNGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCkBA
IC03MjgsNyArNzI4LDcgQEAgQ291bGQgYmUgd29ydGggYWRkaW5nIHRvIHRoZSBBUEkuCiAtIChp
ZDxXZWJHZW9sb2NhdGlvblByb3ZpZGVyPilfZ2VvbG9jYXRpb25Qcm92aWRlcjsKIAogLSAodm9p
ZClfZ2VvbG9jYXRpb25EaWRDaGFuZ2VQb3NpdGlvbjooV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiAq
KXBvc2l0aW9uOwotLSAodm9pZClfZ2VvbG9jYXRpb25EaWRGYWlsV2l0aEVycm9yOihOU0Vycm9y
ICopZXJyb3I7CistICh2b2lkKV9nZW9sb2NhdGlvbkRpZEZhaWxXaXRoTWVzc2FnZTooTlNTdHJp
bmcgKillcnJvck1lc3NhZ2U7CiBAZW5kCiAKIEBpbnRlcmZhY2UgV2ViVmlldyAoV2ViVmlld05v
dGlmaWNhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAKaW5kZXggZGM4MjMxNjVjNzMxZWMwNTJl
OWUzMmEyMmUyODE2ODczZGYwZTJhYy4uMWVjMzY0NGUwNzcwM2JmYmNjMjA0Y2NjM2Q1Nzk2N2Fk
NDc4NzM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAKQEAgLTIsNyArMiw3IEBACiAgICAgQ29w
eXJpZ2h0IChDKSAyMDEwIFJvYmVydCBIb2dhbiA8cm9iZXJ0QHJvYmVydGhvZ2FuLm5ldD4KICAg
ICBDb3B5cmlnaHQgKEMpIDIwMDgsMjAwOSwyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBp
dHMgc3Vic2lkaWFyeSgtaWVzKQogICAgIENvcHlyaWdodCAoQykgMjAwNyBTdGFpa29zIENvbXB1
dGluZyBTZXJ2aWNlcyBJbmMuCi0gICAgQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4KKyAg
ICBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTIgQXBwbGUgSW5jLgogCiAgICAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CkBAIC03NTMsMjMgKzc1MywxMiBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRN
b2NrR2VvbG9jYXRpb25Qb3NpdGlvbihRV2ViUGFnZSogcGFnZSwgZG91YmxlCiAjZW5kaWYKIH0K
IAotdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3Io
UVdlYlBhZ2UqIHBhZ2UsIGludCBlcnJvckNvZGUsIGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2UpCit2
b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVu
YXZhaWxhYmxlRXJyb3IoUVdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2UpCiB7
CiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQogICAgIFBhZ2UqIGNvcmVQYWdlID0gUVdlYlBhZ2VQ
cml2YXRlOjpjb3JlKHBhZ2UpOwotCi0gICAgR2VvbG9jYXRpb25FcnJvcjo6RXJyb3JDb2RlIGNv
ZGUgPSBHZW9sb2NhdGlvbkVycm9yOjpQb3NpdGlvblVuYXZhaWxhYmxlOwotICAgIHN3aXRjaCAo
ZXJyb3JDb2RlKSB7Ci0gICAgY2FzZSBQb3NpdGlvbkVycm9yOjpQRVJNSVNTSU9OX0RFTklFRDoK
LSAgICAgICAgY29kZSA9IEdlb2xvY2F0aW9uRXJyb3I6OlBlcm1pc3Npb25EZW5pZWQ7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgUG9zaXRpb25FcnJvcjo6UE9TSVRJT05fVU5BVkFJTEFCTEU6
Ci0gICAgICAgIGNvZGUgPSBHZW9sb2NhdGlvbkVycm9yOjpQb3NpdGlvblVuYXZhaWxhYmxlOwot
ICAgICAgICBicmVhazsKLSAgICB9Ci0KICAgICBHZW9sb2NhdGlvbkNsaWVudE1vY2sqIG1vY2tD
bGllbnQgPSBzdGF0aWNfY2FzdDxHZW9sb2NhdGlvbkNsaWVudE1vY2sqPihHZW9sb2NhdGlvbkNv
bnRyb2xsZXI6OmZyb20oY29yZVBhZ2UpLT5jbGllbnQoKSk7Ci0gICAgbW9ja0NsaWVudC0+c2V0
RXJyb3IoR2VvbG9jYXRpb25FcnJvcjo6Y3JlYXRlKGNvZGUsIG1lc3NhZ2UpKTsKKyAgICBtb2Nr
Q2xpZW50LT5zZXRQb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IobWVzc2FnZSk7CiAjZW5kaWYKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnRRdC5oIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdC5oCmluZGV4IDg2MjIxMzY1Nzk4ZjEwYTMwNmNkY2U4N2UyMjQ3MzAx
MWU3ZjlkZWYuLmNlZmI5ZDFjODc0NTY1YzdmZjAwZGIyZWVhMDM0MjMzZmI2MWRmMWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBw
b3J0UXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydFF0LmgKQEAgLTIsNyArMiw3IEBACiAgICAgQ29weXJpZ2h0IChDKSAyMDEwIFJv
YmVydCBIb2dhbiA8cm9iZXJ0QHJvYmVydGhvZ2FuLm5ldD4KICAgICBDb3B5cmlnaHQgKEMpIDIw
MDgsMjAwOSwyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVz
KQogICAgIENvcHlyaWdodCAoQykgMjAwNyBTdGFpa29zIENvbXB1dGluZyBTZXJ2aWNlcyBJbmMu
Ci0gICAgQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4KKyAgICBDb3B5cmlnaHQgKEMpIDIw
MDcsIDIwMTIgQXBwbGUgSW5jLgogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xNDEsNyArMTQxLDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHJlc2V0R2VvbG9jYXRpb25Nb2NrKFFXZWJQYWdl
Kik7CiAgICAgc3RhdGljIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUGVybWlzc2lvbihRV2ViUGFn
ZSosIGJvb2wgYWxsb3dlZCk7CiAgICAgc3RhdGljIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9z
aXRpb24oUVdlYlBhZ2UqLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJs
ZSBhY2N1cmFjeSk7Ci0gICAgc3RhdGljIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoUVdl
YlBhZ2UqLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBRU3RyaW5nJiBtZXNzYWdlKTsKKyAgICBzdGF0
aWMgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoUVdlYlBh
Z2UqLCBjb25zdCBRU3RyaW5nJiBtZXNzYWdlKTsKICAgICBzdGF0aWMgaW50IG51bWJlck9mUGVu
ZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzKFFXZWJQYWdlKik7CiAKICAgICBzdGF0
aWMgaW50IHdvcmtlclRocmVhZENvdW50KCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTdkMWZmMzExZDllYmIwOGQ0YjA1ODk5OWU0NGEwYTdi
Yzk0ZmU0Ny4uNzQwZDk4OWEyZjhiZjU5NzMzNzYyNGM2ODM3YjQxNmI4MWFiNGE3NSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0
IEBACisyMDEyLTA5LTI0ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgor
CisgICAgICAgIEZpeCBHZW9sb2NhdGlvbiBlcnJvciByZXBvcnRpbmcgaW4gdGhlIHRlc3Qgc3Vw
cG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTcz
ODYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgVGhlIFRl
c3RSdW5uZXIgd2FzIGV4cG9zaW5nIGludGVybmFsIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb2YK
KyAgICAgICAgdGhlIEdlb2xvY2F0aW9uIG9iamVjdCB0aHJvdWdoIHNldE1vY2tHZW9sb2NhdGlv
bkVycm9yKCkuCisKKyAgICAgICAgSW4gcHJhY3RpY2UsIG9ubHkgdGhlIGVycm9yIGNvZGUgUG9z
aXRpb25VbmF2YWlsYWJsZSBpcyBzdXBwb3J0ZWQKKyAgICAgICAgb3IgZXZlbiBpbXBsZW1lbnRl
ZC4KKworICAgICAgICBFeHBvc2luZyBzZXRNb2NrR2VvbG9jYXRpb25FcnJvcigpIGRvZXMgbm90
IG1ha2Ugc2Vuc2UgZm9yIFdlYktpdDIgYXMKKyAgICAgICAgcGFzc2luZyBnZW5lcmljIGVycm9y
cyBmcm9tIHRoZSBVSVByb2Nlc3MgaXMgYSBiYWQgaWRlYS4gVGhpcyBpcyB0aGUKKyAgICAgICAg
b3Bwb3J0dW5pdHkgdG8gY2xlYW4gVGVzdFJ1bm5lciBhbmQgcHJlcGFyZSBhbmQgaW50ZXJmYWNl
IHN1aXRhYmxlIGZvciBXZWJLaXQyLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdFJ1
bm5lci5jcHA6CisgICAgICAgIChzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxl
RXJyb3JDYWxsYmFjayk6CisgICAgICAgIChUZXN0UnVubmVyOjpzdGF0aWNGdW5jdGlvbnMpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKFRlc3RSdW5u
ZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvVGVzdFJ1bm5lckJsYWNr
QmVycnkuY3BwOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRp
b25VbmF2YWlsYWJsZUVycm9yKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9E
UlRUZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKERSVFRlc3RSdW5uZXI6OkRSVFRlc3RSdW5uZXIp
OgorICAgICAgICAoRFJUVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2
YWlsYWJsZUVycm9yKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0
UnVubmVyLmg6CisgICAgICAgIChEUlRUZXN0UnVubmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHA6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRNb2Nr
R2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2d0ay9UZXN0UnVubmVyR3RrLmNwcDoKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldE1v
Y2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcik6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvbWFjL01vY2tHZW9sb2NhdGlvblByb3ZpZGVyLmg6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvbWFjL01vY2tHZW9sb2NhdGlvblByb3ZpZGVyLm1tOgorICAgICAgICAoLVtNb2Nr
R2VvbG9jYXRpb25Qcm92aWRlciBkZWFsbG9jXSk6CisgICAgICAgICgtW01vY2tHZW9sb2NhdGlv
blByb3ZpZGVyIHJlc2V0RXJyb3JdKToKKyAgICAgICAgKC1bTW9ja0dlb2xvY2F0aW9uUHJvdmlk
ZXIgc2V0UG9zaXRpb246XSk6CisgICAgICAgICgtW01vY2tHZW9sb2NhdGlvblByb3ZpZGVyIHNl
dFBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcldpdGhNZXNzYWdlOl0pOgorICAgICAgICAoLVtNb2Nr
R2VvbG9jYXRpb25Qcm92aWRlciBsYXN0UG9zaXRpb25dKToKKyAgICAgICAgKC1bTW9ja0dlb2xv
Y2F0aW9uUHJvdmlkZXIgdGltZXJGaXJlZF0pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21h
Yy9UZXN0UnVubmVyTWFjLm1tOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0
aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9x
dC9UZXN0UnVubmVyUXQuY3BwOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0
aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9x
dC9UZXN0UnVubmVyUXQuaDoKKyAgICAgICAgKFRlc3RSdW5uZXIpOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcDoKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNl
dE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcik6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvd3gvVGVzdFJ1bm5lcld4LmNwcDoKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNl
dE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcik6CisKIDIwMTItMDktMjQg
IFphbiBEb2JlcnNlayAgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KIAogICAgICAgICBbR3RrXSBV
bnNraXAgdGhlIFNoYWRvdyBET00gbGF5b3V0IHRlc3RzCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5u
ZXIuY3BwCmluZGV4IDFkMDBjNTBhMzVhMzdlYzBmYWRjMThhZDg0ZTMwZGI3MThjOGEwZDQuLjlm
N2E3YzFiZWNhMGFiYTg0MzY5ZTk3ZmVlOTFlZWMyZGMyNmNkNTcgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L1Rlc3RSdW5uZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
NywgMjAwOCwgMjAwOSwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIEpvb25lIEh1ciA8am9vbmVA
a2xkcC5vcmc+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0xMDk1LDE3ICsxMDk1LDE2IEBAIHN0YXRp
YyBKU1ZhbHVlUmVmIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uQ2FsbGJhY2soSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTT2JqCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRl
eHQpOwogfQogCi1zdGF0aWMgSlNWYWx1ZVJlZiBzZXRNb2NrR2VvbG9jYXRpb25FcnJvckNhbGxi
YWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RS
ZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJn
dW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3N0YXRpYyBKU1ZhbHVlUmVmIHNldE1v
Y2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvckNhbGxiYWNrKEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwg
c2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbikKIHsKLSAgICBpZiAoYXJndW1lbnRDb3VudCA8IDIpCisgICAgaWYg
KGFyZ3VtZW50Q291bnQgIT0gMSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGNvbnRleHQpOwogCi0gICAgaW50IGNvZGUgPSBKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJn
dW1lbnRzWzBdLCBOVUxMKTsKLSAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gbWVzc2FnZShB
ZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBhcmd1bWVudHNbMV0sIGV4Y2VwdGlv
bikpOworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBtZXNzYWdlKEFkb3B0LCBKU1ZhbHVl
VG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7CiAgICAgQVNT
RVJUKCEqZXhjZXB0aW9uKTsKIAogICAgIFRlc3RSdW5uZXIqIGNvbnRyb2xsZXIgPSByZWludGVy
cHJldF9jYXN0PFRlc3RSdW5uZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwot
ICAgIGNvbnRyb2xsZXItPnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGNvZGUsIG1lc3NhZ2UuZ2V0
KCkpOworICAgIGNvbnRyb2xsZXItPnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFi
bGVFcnJvcihtZXNzYWdlLmdldCgpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5l
ZChjb250ZXh0KTsKIH0KQEAgLTIyNjYsNyArMjI2NSw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIFRl
c3RSdW5uZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAgICAgIHsgInNldE1haW5GcmFtZUlzRmly
c3RSZXNwb25kZXIiLCBzZXRNYWluRnJhbWVJc0ZpcnN0UmVzcG9uZGVyQ2FsbGJhY2ssIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwKICAgICAgICAgeyAic2V0TWluaW11bVRpbWVySW50ZXJ2YWwiLCBzZXRNaW5pbXVtVGltZXJJ
bnRlcnZhbENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldE1vY2tEZXZpY2VPcmllbnRh
dGlvbiIsIHNldE1vY2tEZXZpY2VPcmllbnRhdGlvbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCi0gICAgICAg
IHsgInNldE1vY2tHZW9sb2NhdGlvbkVycm9yIiwgc2V0TW9ja0dlb2xvY2F0aW9uRXJyb3JDYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LAorICAgICAgICB7ICJzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZh
aWxhYmxlRXJyb3IiLCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3JD
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbiIs
IHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAi
YWRkTW9ja1NwZWVjaElucHV0UmVzdWx0IiwgYWRkTW9ja1NwZWVjaElucHV0UmVzdWx0Q2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKICAgICAgICAgeyAic2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3QiLCBzZXRN
b2NrU3BlZWNoSW5wdXREdW1wUmVjdENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0
UnVubmVyLmgKaW5kZXggOWJjYzk1YmM5MmQzMjk2MWU1MWM0YTMzNzliMzc4Mzk0MjI3ZjI1OS4u
ZWRkMGRmZGE3NWI2MzE5NmFhOWMwMmJkMWJiZDdkYjFhNDQ1YjQyMCAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L1Rlc3RSdW5uZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcs
IDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTAwLDggKzEwMCw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldEF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKGJvb2wgZmxh
Zyk7CiAgICAgdm9pZCBzZXRNYWluRnJhbWVJc0ZpcnN0UmVzcG9uZGVyKGJvb2wgZmxhZyk7CiAg
ICAgdm9pZCBzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRv
dWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wgY2FuUHJv
dmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpOwotICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uRXJy
b3IoaW50IGNvZGUsIEpTU3RyaW5nUmVmIG1lc3NhZ2UpOwogICAgIHZvaWQgc2V0TW9ja0dlb2xv
Y2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUg
YWNjdXJhY3kpOworICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJs
ZUVycm9yKEpTU3RyaW5nUmVmIG1lc3NhZ2UpOwogICAgIHZvaWQgYWRkTW9ja1NwZWVjaElucHV0
UmVzdWx0KEpTU3RyaW5nUmVmIHJlc3VsdCwgZG91YmxlIGNvbmZpZGVuY2UsIEpTU3RyaW5nUmVm
IGxhbmd1YWdlKTsKICAgICB2b2lkIHNldE1vY2tTcGVlY2hJbnB1dER1bXBSZWN0KGJvb2wgZmxh
Zyk7CiAgICAgdm9pZCBzZXRQZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRMb2NhdGlvbihKU1N0cmlu
Z1JlZiBwYXRoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkv
VGVzdFJ1bm5lckJsYWNrQmVycnkuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJy
eS9UZXN0UnVubmVyQmxhY2tCZXJyeS5jcHAKaW5kZXggODk4NjkwMGM2YjNlNTMyMWViNGM2ZDAz
OWNiNDBmZGU4MmMzNWRlYy4uNjJiZTVmZTE4NjFjMjRhNjllN2Q1NWI5NTg3ZGQ1NWUyMGY1OTc4
NyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9UZXN0UnVubmVy
QmxhY2tCZXJyeS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9UZXN0
UnVubmVyQmxhY2tCZXJyeS5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDA5LCAyMDEwLCAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC00NDksMTAgKzQ1MCwxMCBAQCB2b2lkIFRl
c3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91
YmxlIGxvbmdpdHVkZSwgZAogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydDo6c2V0TW9ja0dlb2xv
Y2F0aW9uUG9zaXRpb24oQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1wUmVuZGVyVHJlZTo6Y3VycmVu
dEluc3RhbmNlKCktPnBhZ2UoKSwgbGF0aXR1ZGUsIGxvbmdpdHVkZSwgYWNjdXJhY3kpOwogfQog
Ci12b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGludCBjb2RlLCBKU1N0
cmluZ1JlZiBtZXNzYWdlKQordm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3Np
dGlvblVuYXZhaWxhYmxlRXJyb3IoSlNTdHJpbmdSZWYgbWVzc2FnZSkKIHsKICAgICBTdHJpbmcg
bWVzc2FnZVN0ciA9IGpzU3RyaW5nUmVmVG9XZWJDb3JlU3RyaW5nKG1lc3NhZ2UpOwotICAgIER1
bXBSZW5kZXJUcmVlU3VwcG9ydDo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoQmxhY2tCZXJyeTo6
V2ViS2l0OjpEdW1wUmVuZGVyVHJlZTo6Y3VycmVudEluc3RhbmNlKCktPnBhZ2UoKSwgY29kZSwg
bWVzc2FnZVN0cik7CisgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0OjpzZXRNb2NrR2VvbG9jYXRp
b25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1wUmVuZGVy
VHJlZTo6Y3VycmVudEluc3RhbmNlKCktPnBhZ2UoKSwgbWVzc2FnZVN0cik7CiB9CiAKIHZvaWQg
VGVzdFJ1bm5lcjo6c2hvd1dlYkluc3BlY3RvcigpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwCmluZGV4IDBlNWE4YjMxYmU3YmZjODVjNzBhMzkw
OTNiNmUwZjMxN2RlMzVkNzkuLmY0ZjNhZWQyMjhhN2EyOTc1NzgyYmQ5YzJjNjQ0MmU3OGU3MWIy
ODkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5u
ZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIu
Y3BwCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIFBhd2VsIEhhamRh
biAocGhhamRhbi5qckBjaHJvbWl1bS5vcmcpCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQpAQCAtMjA2LDcgKzIwNyw3IEBAIERSVFRlc3RSdW5uZXI6OkRSVFRlc3RSdW5uZXIoVGVz
dFNoZWxsKiBzaGVsbCkKICAgICBiaW5kTWV0aG9kKCJzZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xp
cGJvYXJkIiwgJkRSVFRlc3RSdW5uZXI6OnNldEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQp
OwogICAgIGJpbmRNZXRob2QoInNldE1pbmltdW1UaW1lckludGVydmFsIiwgJkRSVFRlc3RSdW5u
ZXI6OnNldE1pbmltdW1UaW1lckludGVydmFsKTsKICAgICBiaW5kTWV0aG9kKCJzZXRNb2NrRGV2
aWNlT3JpZW50YXRpb24iLCAmRFJUVGVzdFJ1bm5lcjo6c2V0TW9ja0RldmljZU9yaWVudGF0aW9u
KTsKLSAgICBiaW5kTWV0aG9kKCJzZXRNb2NrR2VvbG9jYXRpb25FcnJvciIsICZEUlRUZXN0UnVu
bmVyOjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcik7CisgICAgYmluZE1ldGhvZCgic2V0TW9ja0dl
b2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yIiwgJkRSVFRlc3RSdW5uZXI6OnNldE1v
Y2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcik7CiAgICAgYmluZE1ldGhvZCgi
c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24iLCAmRFJUVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xv
Y2F0aW9uUG9zaXRpb24pOwogICAgIGJpbmRNZXRob2QoInNldFBhZ2VWaXNpYmlsaXR5IiwgJkRS
VFRlc3RSdW5uZXI6OnNldFBhZ2VWaXNpYmlsaXR5KTsKICAgICBiaW5kTWV0aG9kKCJzZXRQbHVn
aW5zRW5hYmxlZCIsICZEUlRUZXN0UnVubmVyOjpzZXRQbHVnaW5zRW5hYmxlZCk7CkBAIC0xODE2
LDE0ICsxODE3LDE1IEBAIHZvaWQgRFJUVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9z
aXRpb24oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsCiAgICAgICAgIHdpbmRvd0xp
c3RbaV0tPmdlb2xvY2F0aW9uQ2xpZW50TW9jaygpLT5zZXRQb3NpdGlvbihhcmd1bWVudHNbMF0u
dG9Eb3VibGUoKSwgYXJndW1lbnRzWzFdLnRvRG91YmxlKCksIGFyZ3VtZW50c1syXS50b0RvdWJs
ZSgpKTsKIH0KIAotdm9pZCBEUlRUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcihj
b25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQordm9p
ZCBEUlRUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJy
b3IoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkK
IHsKICAgICByZXN1bHQtPnNldE51bGwoKTsKLSAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA8IDIg
fHwgIWFyZ3VtZW50c1swXS5pc051bWJlcigpIHx8ICFhcmd1bWVudHNbMV0uaXNTdHJpbmcoKSkK
KyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSAhPSAxIHx8ICFhcmd1bWVudHNbMF0uaXNTdHJpbmco
KSkKICAgICAgICAgcmV0dXJuOwogICAgIFZlY3RvcjxXZWJWaWV3SG9zdCo+IHdpbmRvd0xpc3Qg
PSBtX3NoZWxsLT53aW5kb3dMaXN0KCk7CisgICAgLy8gRklYTUU6IEJlbmphbWluCiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCB3aW5kb3dMaXN0LnNpemUoKTsgaSsrKQotICAgICAgICB3aW5k
b3dMaXN0W2ldLT5nZW9sb2NhdGlvbkNsaWVudE1vY2soKS0+c2V0RXJyb3IoYXJndW1lbnRzWzBd
LnRvSW50MzIoKSwgY3BwVmFyaWFudFRvV2ViU3RyaW5nKGFyZ3VtZW50c1sxXSkpOworICAgICAg
ICB3aW5kb3dMaXN0W2ldLT5nZW9sb2NhdGlvbkNsaWVudE1vY2soKS0+c2V0UG9zaXRpb25VbmF2
YWlsYWJsZUVycm9yKGNwcFZhcmlhbnRUb1dlYlN0cmluZyhhcmd1bWVudHNbMF0pKTsKIH0KIAog
dm9pZCBEUlRUZXN0UnVubmVyOjphYm9ydE1vZGFsKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJn
dW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9EUlRUZXN0UnVubmVyLmgKaW5kZXggYjZjOTA3ZTYyNzE4Y2QyMjc1ODQ3ZDM5ZGMzZjhl
OGQ0ODQzNjdjMy4uNTU5NDBhY2QxZjQ3YmIyNmFmMjlkZDViYjZkNTMwZDJhZWUwNjZkMiAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5oCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuaApAQCAtMSw2
ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBQYXdlbCBIYWpkYW4gKHBoYWpkYW4u
anJAY2hyb21pdW0ub3JnKQorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTMz
Nyw3ICszMzgsNyBAQCBwdWJsaWM6CiAgICAgLy8gR2VvbG9jYXRpb24gcmVsYXRlZCBmdW5jdGlv
bnMuCiAgICAgdm9pZCBzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24oY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24o
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwotICAgIHZvaWQgc2V0TW9ja0dl
b2xvY2F0aW9uRXJyb3IoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAg
IHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAogICAgIC8vIEVtcHR5IHN0dWIgbWV0aG9k
IHRvIGtlZXAgcGFyaXR5IHdpdGggb2JqZWN0IG1vZGVsIGV4cG9zZWQgYnkgZ2xvYmFsIERSVFRl
c3RSdW5uZXIuCiAgICAgdm9pZCBhYm9ydE1vZGFsKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENw
cFZhcmlhbnQqKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9UZXN0UnVu
bmVyRWZsLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZsLmNwcApp
bmRleCAyZTM4MGM1NjkzMWViOGZmZGNmY2VjM2EyNjA4MDlhZjE0YTBjYmZmLi45Nzk3YTMxNTJl
ODk0MDVlZWE2NGNiNzkzYjk0MzBkNjY2ZTA5MjY5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
ZWZsL1Rlc3RSdW5uZXJFZmwuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDcsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0
IChDKSAyMDA3IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDggTnVhbnRpIEx0ZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSBKYW4gTWljaGFlbCBBbG9u
em8gPGptYWxvbnpvQGdtYWlsLmNvbT4KQEAgLTM3OSw3ICszNzksNyBAQCB2b2lkIFRlc3RSdW5u
ZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSwgZG91YmxlLCBkb3VibGUpCiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9j
YXRpb25FcnJvcihpbnQsIEpTU3RyaW5nUmVmKQordm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrR2Vv
bG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoSlNTdHJpbmdSZWYpCiB7CiAgICAgLy8g
RklYTUU6IEltcGxlbWVudCBmb3IgR2VvbG9jYXRpb24gbGF5b3V0IHRlc3RzLgogICAgIC8vIFNl
ZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjgyNjQuCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHAgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHAKaW5kZXggMDkyOWNhZGY2MjE3M2E5
Y2U5YzljOTMxZWI0NzI2ZDhjMGRmMWFhNi4uZGI5NjI4OTI3MGI3NzQ4MTI4MzVjMGY4MDQ5YjE0
NjkzNGZiYzAyZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL1Rlc3RSdW5u
ZXJHdGsuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9UZXN0UnVubmVyR3RrLmNw
cApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNyBFcmljIFNlaWRl
bCA8ZXJpY0B3ZWJraXQub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA4IE51YW50aSBMdGQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgSmFuIE1pY2hhZWwgQWxvbnpvIDxqbWFsb256b0BnbWFpbC5j
b20+CkBAIC00NDcsNyArNDQ3LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRp
b25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGQKICAgICBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKHZpZXcsIGxh
dGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5KTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRN
b2NrR2VvbG9jYXRpb25FcnJvcihpbnQgY29kZSwgSlNTdHJpbmdSZWYgbWVzc2FnZSkKK3ZvaWQg
VGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKEpT
U3RyaW5nUmVmIG1lc3NhZ2UpCiB7CiAgICAgV2ViS2l0V2ViVmlldyogdmlldyA9IFdFQktJVF9X
RUJfVklFVyhnX3NsaXN0X250aF9kYXRhKHdlYlZpZXdMaXN0LCAwKSk7CiAgICAgaWYgKCF2aWV3
KQpAQCAtNDU1LDcgKzQ1NSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9u
RXJyb3IoaW50IGNvZGUsIEpTU3RyaW5nUmVmIG1lc3NhZ2UpCiAgICAgQVNTRVJUKHZpZXcpOwog
CiAgICAgR093blB0cjxnY2hhcj4gY01lc3NhZ2UoSlNTdHJpbmdDb3B5VVRGOENTdHJpbmcobWVz
c2FnZSkpOwotICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0TW9ja0dlb2xvY2F0aW9u
RXJyb3IodmlldywgY29kZSwgY01lc3NhZ2UuZ2V0KCkpOworICAgIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydEd0azo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKHZpZXcs
IGNNZXNzYWdlLmdldCgpKTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpzZXRHZW9sb2NhdGlvblBl
cm1pc3Npb24oYm9vbCBhbGxvdykKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9Nb2NrR2VvbG9jYXRpb25Qcm92aWRlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL01v
Y2tHZW9sb2NhdGlvblByb3ZpZGVyLmgKaW5kZXggMzExZDFlOTE4NGIzNmIzODJlNTEzYjc4YWQ4
YjMzNjFkMWQ1OTA1Ny4uYmEzYTg0MmE5ODEwZDQwZjI0NDU3NDE1MmI3MzU5OWUxOTJjMjZkZSAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL01vY2tHZW9sb2NhdGlvblByb3Zp
ZGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL01vY2tHZW9sb2NhdGlvblByb3Zp
ZGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMiBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI4LDEwICsyOCwxMiBAQAogCiAjaW1wb3J0IDxXZWJLaXQvV2ViVmlld1ByaXZhdGUu
aD4KICNpbXBvcnQgPHd0Zi9IYXNoU2V0Lmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAK
IEBpbnRlcmZhY2UgTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIgOiBOU09iamVjdDxXZWJHZW9sb2Nh
dGlvblByb3ZpZGVyPiB7Ci0gICAgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiAqX2xhc3RQb3NpdGlv
bjsKLSAgICBOU0Vycm9yICpfZXJyb3I7CisgICAgUmV0YWluUHRyPFdlYkdlb2xvY2F0aW9uUG9z
aXRpb24+IF9sYXN0UG9zaXRpb247CisgICAgQk9PTCBfaGFzRXJyb3I7CisgICAgUmV0YWluUHRy
PE5TU3RyaW5nPiBfZXJyb3JNZXNzYWdlOwogICAgIE5TVGltZXIgKl90aW1lcjsKICAgICBIYXNo
U2V0PFdlYlZpZXcgKj4gX3JlZ2lzdGVyZWRWaWV3czsKIH0KQEAgLTM5LDcgKzQxLDcgQEAKICsg
KE1vY2tHZW9sb2NhdGlvblByb3ZpZGVyICopc2hhcmVkOwogCiAtICh2b2lkKXNldFBvc2l0aW9u
OihXZWJHZW9sb2NhdGlvblBvc2l0aW9uICopcG9zaXRpb247Ci0tICh2b2lkKXNldEVycm9yOihO
U0Vycm9yICopZXJyb3I7CistICh2b2lkKXNldFBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcldpdGhN
ZXNzYWdlOihOU1N0cmluZyAqKWVycm9yTWVzc2FnZTsKIAogLSAodm9pZClzdG9wVGltZXI7CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9Nb2NrR2VvbG9jYXRpb25Qcm92
aWRlci5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9Nb2NrR2VvbG9jYXRpb25Qcm92aWRl
ci5tbQppbmRleCBlMDNjYWUyNGE1ZDM1N2VlNTkzMGRhNjE1NDQzN2VjOWFlZjlmNWZiLi41MTU2
ZDUxODZlNjY5ZjRhMWVjMTVhNDFmMjQ2MzE4MDk0YTE2ZTdlIDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvTW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIubW0KKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL01vY2tHZW9sb2NhdGlvblByb3ZpZGVyLm1tCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTIgQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCwzNCArMzgs
MzMgQEAKIHsKICAgICBBU1NFUlQoX3JlZ2lzdGVyZWRWaWV3cy5pc0VtcHR5KCkpOwogCi0gICAg
W19sYXN0UG9zaXRpb24gcmVsZWFzZV07Ci0gICAgW19lcnJvciByZWxlYXNlXTsKKyAgICBfbGFz
dFBvc2l0aW9uLmNsZWFyKCk7CisgICAgX2Vycm9yTWVzc2FnZS5jbGVhcigpOwogICAgIFtzdXBl
ciBkZWFsbG9jXTsKIH0KIAorLSAodm9pZClyZXNldEVycm9yCit7CisgICAgX2hhc0Vycm9yID0g
Tk87CisgICAgX2Vycm9yTWVzc2FnZS5jbGVhcigpOworfQorCiAtICh2b2lkKXNldFBvc2l0aW9u
OihXZWJHZW9sb2NhdGlvblBvc2l0aW9uICopcG9zaXRpb24KIHsKLSAgICBpZiAoX2xhc3RQb3Np
dGlvbiAhPSBwb3NpdGlvbikgewotICAgICAgICBbX2xhc3RQb3NpdGlvbiByZWxlYXNlXTsKLSAg
ICAgICAgX2xhc3RQb3NpdGlvbiA9IFtwb3NpdGlvbiByZXRhaW5dOwotICAgIH0KKyAgICBfbGFz
dFBvc2l0aW9uID0gcG9zaXRpb247CiAgICAgCi0gICAgW19lcnJvciByZWxlYXNlXTsKLSAgICBf
ZXJyb3IgPSAwOworICAgIFtzZWxmIHJlc2V0RXJyb3JdOwogCiAgICAgaWYgKCFfdGltZXIpCiAg
ICAgICAgIF90aW1lciA9IFtOU1RpbWVyIHNjaGVkdWxlZFRpbWVyV2l0aFRpbWVJbnRlcnZhbDow
IHRhcmdldDpzZWxmIHNlbGVjdG9yOkBzZWxlY3Rvcih0aW1lckZpcmVkKSB1c2VySW5mbzowIHJl
cGVhdHM6Tk9dOwogfQogCi0tICh2b2lkKXNldEVycm9yOihOU0Vycm9yICopZXJyb3IKKy0gKHZv
aWQpc2V0UG9zaXRpb25VbmF2YWlsYWJsZUVycm9yV2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopZXJy
b3JNZXNzYWdlCiB7Ci0gICAgaWYgKF9lcnJvciAhPSBlcnJvcikgewotICAgICAgICBbX2Vycm9y
IHJlbGVhc2VdOwotICAgICAgICBfZXJyb3IgPSBbZXJyb3IgcmV0YWluXTsKLSAgICB9Ci0gICAg
Ci0gICAgW19sYXN0UG9zaXRpb24gcmVsZWFzZV07Ci0gICAgX2xhc3RQb3NpdGlvbiA9IDA7Cisg
ICAgX2hhc0Vycm9yID0gWUVTOworICAgIF9lcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2U7CisK
KyAgICBfbGFzdFBvc2l0aW9uLmNsZWFyKCk7CiAKICAgICBpZiAoIV90aW1lcikKICAgICAgICAg
X3RpbWVyID0gW05TVGltZXIgc2NoZWR1bGVkVGltZXJXaXRoVGltZUludGVydmFsOjAgdGFyZ2V0
OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKHRpbWVyRmlyZWQpIHVzZXJJbmZvOjAgcmVwZWF0czpO
T107CkBAIC04Niw3ICs4NSw3IEBACiAKIC0gKFdlYkdlb2xvY2F0aW9uUG9zaXRpb24gKilsYXN0
UG9zaXRpb24KIHsKLSAgICByZXR1cm4gX2xhc3RQb3NpdGlvbjsKKyAgICByZXR1cm4gX2xhc3RQ
b3NpdGlvbi5nZXQoKTsKIH0KIAogLSAodm9pZClzdG9wVGltZXIKQEAgLTEwMiwxMCArMTAxLDEw
IEBACiAgICAgLy8gRXhwZWN0IHRoYXQgdmlld3Mgd29uJ3QgYmUgKHVuKXJlZ2lzdGVyZWQgd2hp
bGUgaXRlcmF0aW5nLgogICAgIEhhc2hTZXQ8V2ViVmlldyo+IHZpZXdzID0gX3JlZ2lzdGVyZWRW
aWV3czsKICAgICBmb3IgKEhhc2hTZXQ8V2ViVmlldyo+OjppdGVyYXRvciBpdGVyID0gdmlld3Mu
YmVnaW4oKTsgaXRlciAhPSB2aWV3cy5lbmQoKTsgKytpdGVyKSB7Ci0gICAgICAgIGlmIChfZXJy
b3IpCi0gICAgICAgICAgICBbKml0ZXIgX2dlb2xvY2F0aW9uRGlkRmFpbFdpdGhFcnJvcjpfZXJy
b3JdOworICAgICAgICBpZiAoX2hhc0Vycm9yKQorICAgICAgICAgICAgWyppdGVyIF9nZW9sb2Nh
dGlvbkRpZEZhaWxXaXRoTWVzc2FnZTpfZXJyb3JNZXNzYWdlLmdldCgpXTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgWyppdGVyIF9nZW9sb2NhdGlvbkRpZENoYW5nZVBvc2l0aW9uOl9sYXN0
UG9zaXRpb25dOworICAgICAgICAgICAgWyppdGVyIF9nZW9sb2NhdGlvbkRpZENoYW5nZVBvc2l0
aW9uOl9sYXN0UG9zaXRpb24uZ2V0KCldOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQppbmRleCBhMjFlZDgwYWMxMWJlNjM3MTMxZGZjZDQ2ZWZm
NjRjNmQ1MjkwM2Y1Li4xYTBhMDRkYzc1NjNhNWYyYjhjYjM1ODBmMTc3NTEzZTI1ZWU4MGNmIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNDc5LDEyICs0NzksMTEgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrR2Vv
bG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGQKICAg
ICBbcG9zaXRpb24gcmVsZWFzZV07CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xv
Y2F0aW9uRXJyb3IoaW50IGNvZGUsIEpTU3RyaW5nUmVmIG1lc3NhZ2UpCit2b2lkIFRlc3RSdW5u
ZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihKU1N0cmluZ1Jl
ZiBtZXNzYWdlKQogewogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbWVzc2FnZUNGKEFkb3B0
Q0YsIEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1lc3NhZ2UpKTsK
ICAgICBOU1N0cmluZyAqbWVzc2FnZU5TID0gKE5TU3RyaW5nICopbWVzc2FnZUNGLmdldCgpOwot
ICAgIE5TRXJyb3IgKmVycm9yID0gW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldlYktpdEVycm9y
RG9tYWluIGNvZGU6Y29kZSB1c2VySW5mbzpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2Jq
ZWN0Om1lc3NhZ2VOUyBmb3JLZXk6TlNMb2NhbGl6ZWREZXNjcmlwdGlvbktleV1dOwotICAgIFtb
TW9ja0dlb2xvY2F0aW9uUHJvdmlkZXIgc2hhcmVkXSBzZXRFcnJvcjplcnJvcl07CisgICAgW1tN
b2NrR2VvbG9jYXRpb25Qcm92aWRlciBzaGFyZWRdIHNldFBvc2l0aW9uVW5hdmFpbGFibGVFcnJv
cldpdGhNZXNzYWdlOm1lc3NhZ2VOU107CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0R2VvbG9j
YXRpb25QZXJtaXNzaW9uKGJvb2wgYWxsb3cpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9xdC9UZXN0UnVubmVyUXQuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1
bm5lclF0LmNwcAppbmRleCBkMzUwM2JkMWU3NTA5ODdlNTIyZGI3ZDRiZTNkOGZhYzhiYWM2YzBm
Li45YTkyMDEzZWRkMGVlYTczMzFmYzdmMDAxNDljODUzNGMwYWQwMTg5IDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuY3BwCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5jcHAKQEAgLTgzNCwxMSArODM0LDExIEBAIHZvaWQg
VGVzdFJ1bm5lcjo6c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uQ29tbW9uKGJvb2wgYWxsb3cpCiAg
ICAgIG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9uID0gYWxsb3c7CiB9CiAKLXZvaWQgVGVzdFJ1bm5l
cjo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IoaW50IGNvZGUsIGNvbnN0IFFTdHJpbmcmIG1lc3Nh
Z2UpCit2b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFi
bGVFcnJvcihjb25zdCBRU3RyaW5nJiBtZXNzYWdlKQogewogICAgIFFMaXN0PFdlYkNvcmU6Oldl
YlBhZ2UqPiBwYWdlcyA9IG1fZHJ0LT5nZXRBbGxQYWdlcygpOwogICAgIGZvcmVhY2ggKFdlYkNv
cmU6OldlYlBhZ2UqIHBhZ2UsIHBhZ2VzKQotICAgICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dDo6c2V0TW9ja0dlb2xvY2F0aW9uRXJyb3IocGFnZSwgY29kZSwgbWVzc2FnZSk7CisgICAgICAg
IER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZh
aWxhYmxlRXJyb3IocGFnZSwgbWVzc2FnZSk7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9j
a0dlb2xvY2F0aW9uUG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBk
b3VibGUgYWNjdXJhY3kpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0
UnVubmVyUXQuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5oCmluZGV4
IDg4YTljNmE5NDRlNjRlMzg1ODU0NjA2NDhiZDgyNjc4YTkzNTZjMmYuLjMxMWJjZDlkZTVjZDdm
MmE5ZDZmMjJlODljYTkwMDVlZDQ2MWY3MjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL3F0L1Rlc3RSdW5uZXJRdC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RS
dW5uZXJRdC5oCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOCBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAqIENvcHlyaWdodCAo
QykgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8KKyAq
IENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIyNCw3ICsyMjUsNyBAQCBwdWJsaWMgUV9T
TE9UUzoKIAogICAgIHZvaWQgc2V0TW9ja0RldmljZU9yaWVudGF0aW9uKGJvb2wgY2FuUHJvdmlk
ZUFscGhhLCBkb3VibGUgYWxwaGEsIGJvb2wgY2FuUHJvdmlkZUJldGEsIGRvdWJsZSBiZXRhLCBi
b29sIGNhblByb3ZpZGVHYW1tYSwgZG91YmxlIGdhbW1hKTsKIAotICAgIHZvaWQgc2V0TW9ja0dl
b2xvY2F0aW9uRXJyb3IoaW50IGNvZGUsIGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2UpOworICAgIHZv
aWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKGNvbnN0IFFTdHJp
bmcmIG1lc3NhZ2UpOwogICAgIHZvaWQgc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24oZG91Ymxl
IGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWNjdXJhY3kpOwogICAgIHZvaWQg
c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGJvb2wgYWxsb3cpOwogICAgIGludCBudW1iZXJPZlBl
bmRpbmdHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0cygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwCmluZGV4IGQzMzY1MWI3YWY2ZTQ1YzJiOWU1NjFiNGE3
MTcxYjQ2YzllNjM3ZjEuLmM0NDAwZmRjYjFlYmJlZjRmNzdiYzgwNDBjZTE2YTJiNjNlZjM3NDAg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwg
MjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyMCw3ICs0MjAsNyBAQCB2
b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVk
ZSwgZG91YmxlIGxvbmdpdHVkZSwgZAogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjgyNjQuCiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja0dl
b2xvY2F0aW9uRXJyb3IoaW50IGNvZGUsIEpTU3RyaW5nUmVmIG1lc3NhZ2UpCit2b2lkIFRlc3RS
dW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihKU1N0cmlu
Z1JlZiBtZXNzYWdlKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIEdlb2xvY2F0aW9u
IGxheW91dCB0ZXN0cy4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI4MjY0LgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvVGVz
dFJ1bm5lcld4LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L1Rlc3RSdW5uZXJXeC5jcHAK
aW5kZXggZDdhNTI1MmM0MDRiZjIxOWRmN2VhMWZhNTdjYjNkOWUxZGRkMzM4My4uZTc4MGNmZTUy
YjNiMDE2OTRlNjJjNzdiMzhkZjlkMGUwYjEwOWJhYSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvd3gvVGVzdFJ1bm5lcld4LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93
eC9UZXN0UnVubmVyV3guY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAwOCBLZXZpbiBPbGxpdmllciA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zMzgsNyArMzM5LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpz
ZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1
ZGUsIGQKICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI4MjY0LgogfQogCi12b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKGlu
dCBjb2RlLCBKU1N0cmluZ1JlZiBtZXNzYWdlKQordm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrR2Vv
bG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoSlNTdHJpbmdSZWYpCiB7CiAgICAgLy8g
RklYTUU6IEltcGxlbWVudCBmb3IgR2VvbG9jYXRpb24gbGF5b3V0IHRlc3RzLgogICAgIC8vIFNl
ZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjgyNjQuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
ZGM1NmViYzczMjAwNzAxODNlMWI3ZDI5NmM1NTYxMTI4YzFkNzM1My4uYzc5M2Q4NjQ5M2VhZDM0
MzA5OGViZDhmMmVlNTg5OWQ0OWYzMGYzMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA5
LTI0ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIEZp
eCBHZW9sb2NhdGlvbiBlcnJvciByZXBvcnRpbmcgaW4gdGhlIHRlc3Qgc3VwcG9ydAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTczODYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgdGhlIHRlc3Rz
IHRvIHVzZSBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoKSBpbnN0
ZWFkCisgICAgICAgIG9mIHNldE1vY2tHZW9sb2NhdGlvbkVycm9yKCkuCisKKyAgICAgICAgT25s
eSBQb3NpdGlvbkVycm9yLlBPU0lUSU9OX1VOQVZBSUxBQkxFIHdhcyBzdXBwb3J0ZWQsIHNvIHRo
aXMgbm90IGNoYW5nZQorICAgICAgICBhbnl0aGluZyBmb3IgdGhlIHRlc3QgY292ZXJhZ2UuCisK
KyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9lcnJvci1jbGVhci13YXRjaC5odG1sOgor
ICAgICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9uL2Vycm9yLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9tYXhpbXVtLWFnZS1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vcmVlbnRyYW50LWVycm9yLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvZXJyb3IuanM6Cisg
ICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL21heGltdW0tYWdlLmpz
OgorICAgICAgICAoY2hlY2tFcnJvcik6CisgICAgICAgICh0ZXN0Tm9uWmVyb01heGltdW1BZ2Up
OgorICAgICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9wZXJtaXNzaW9u
LWRlbmllZC1hbHJlYWR5LWVycm9yLmpzOgorICAgICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9u
L3NjcmlwdC10ZXN0cy9yZWVudHJhbnQtZXJyb3IuanM6CisgICAgICAgICogZmFzdC9kb20vR2Vv
bG9jYXRpb24vc2NyaXB0LXRlc3RzL3dhdGNoLmpzOgorICAgICAgICAoY2hlY2tFcnJvcik6Cisg
ICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vd2F0Y2gtZXhwZWN0ZWQudHh0OgorCiAyMDEy
LTA5LTI0ICBSb2dlciBGb25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5y
ZXZpZXdlZC4gW1dpbl0gRmFpbGluZyB0ZXN0IGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
bmV0d29yay14aHItcmVwbGF5Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L0dlb2xvY2F0aW9uL2Vycm9yLWNsZWFyLXdhdGNoLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9HZW9sb2NhdGlvbi9lcnJvci1jbGVhci13YXRjaC5odG1sCmluZGV4IDMyMjA2ZGYzZmMzOTA3
NjI3ZjQxNWRhNjEyZWNkN2Q0NzBiZThmMTUuLjZjNjE5NzgzZWI5Yzc4NGU0YWJhYzI5NzExMmI1
ZDdjODAxOWNhNjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9u
L2Vycm9yLWNsZWFyLXdhdGNoLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9j
YXRpb24vZXJyb3ItY2xlYXItd2F0Y2guaHRtbApAQCAtNywxMiArNywxMSBAQAogPHNjcmlwdD4K
IGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHJlbW92aW5nIHRoZSB3YXRjaGVyIGZyb20gYW4gZXJy
b3IgY2FsbGJhY2sgZG9lcyBub3QgY2F1c2VzIGFzc2VydGlvbnMuIik7CiAKLXZhciBtb2NrQ29k
ZSA9IDI7CiB2YXIgbW9ja01lc3NhZ2UgPSAiZGVidWciOwogCiBpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKICAgICB0ZXN0UnVubmVyLnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbih0cnVlKTsKLSAg
ICB0ZXN0UnVubmVyLnNldE1vY2tHZW9sb2NhdGlvbkVycm9yKG1vY2tDb2RlLCBtb2NrTWVzc2Fn
ZSk7CisgICAgdGVzdFJ1bm5lci5zZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxl
RXJyb3IobW9ja01lc3NhZ2UpOwogfSBlbHNlCiAgICAgZGVidWcoJ1RoaXMgdGVzdCBjYW4gbm90
IGJlIHJ1biB3aXRob3V0IHRoZSBMYXlvdXRUZXN0Q29udHJvbGxlcicpOwogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9lcnJvci1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9lcnJvci1leHBlY3RlZC50eHQKaW5kZXgg
OTU4MjA1OTVmZGJiNDc2ZjcwOWQxYjc5Y2ZlZDM1MmVjYjMwZjIyZC4uMTMzZTM5YTMyYWVkYjNl
ZmRhMjI0OWJiODMwZWUwNTJlZDkzNTllYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vR2VvbG9jYXRpb24vZXJyb3ItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL0dlb2xvY2F0aW9uL2Vycm9yLWV4cGVjdGVkLnR4dApAQCAtMyw3ICszLDcgQEAgVGVzdHMg
R2VvbG9jYXRpb24gZXJyb3IgY2FsbGJhY2sgdXNpbmcgdGhlIG1vY2sgc2VydmljZS4KIE9uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIGVycm9yLmNvZGUgaXMgbW9ja0NvZGUKK1BB
U1MgZXJyb3IuY29kZSBpcyBlcnJvci5QT1NJVElPTl9VTkFWQUlMQUJMRQogUEFTUyBlcnJvci5t
ZXNzYWdlIGlzIG1vY2tNZXNzYWdlCiBQQVNTIGVycm9yLlVOS05PV05fRVJST1IgaXMgdW5kZWZp
bmVkCiBQQVNTIGVycm9yLlBFUk1JU1NJT05fREVOSUVEIGlzIDEKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL21heGltdW0tYWdlLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL21heGltdW0tYWdlLWV4cGVjdGVkLnR4dApp
bmRleCAzNDRiZDQ1YjgyMTRkNGJlZDZhOWY5MDNmMzIyYjE3YmQwMzA2YTg5Li4zODg5NDY2OTdi
Mzg1OTE3NGM0ZTJmZTNjYWM1MDQxOGYxY2VhNTM1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9HZW9sb2NhdGlvbi9tYXhpbXVtLWFnZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vbWF4aW11bS1hZ2UtZXhwZWN0ZWQudHh0CkBAIC0x
Niw3ICsxNiw3IEBAIFBBU1MgcG9zaXRpb24uY29vcmRzLmxhdGl0dWRlIGlzIG1vY2tMYXRpdHVk
ZQogUEFTUyBwb3NpdGlvbi5jb29yZHMubG9uZ2l0dWRlIGlzIG1vY2tMb25naXR1ZGUKIFBBU1Mg
cG9zaXRpb24uY29vcmRzLmFjY3VyYWN5IGlzIG1vY2tBY2N1cmFjeQogCi1QQVNTIGVycm9yLmNv
ZGUgaXMgbW9ja0NvZGUKK1BBU1MgZXJyb3IuY29kZSBpcyBlcnJvci5QT1NJVElPTl9VTkFWQUlM
QUJMRQogUEFTUyBlcnJvci5tZXNzYWdlIGlzIG1vY2tNZXNzYWdlCiBQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xv
Y2F0aW9uL3JlZW50cmFudC1lcnJvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9HZW9sb2NhdGlvbi9yZWVudHJhbnQtZXJyb3ItZXhwZWN0ZWQudHh0CmluZGV4IDk5M2JlYWMy
MTdlNjcwOTk4ZDgyMGQxNWNlMjg3OTRkNGFkNDA0ZmUuLjRjNGViMWYwYmI5OGI1NjdkMmJmMjE4
ZmY5NzMzZjFmODM1MTdlNzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xv
Y2F0aW9uL3JlZW50cmFudC1lcnJvci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vR2VvbG9jYXRpb24vcmVlbnRyYW50LWVycm9yLWV4cGVjdGVkLnR4dApAQCAtMywxMCAr
MywxMCBAQCBUZXN0cyB0aGF0IHJlZW50cmFudCBjYWxscyB0byBHZW9sb2NhdGlvbiBtZXRob2Rz
IGZyb20gdGhlIGVycm9yIGNhbGxiYWNrIGFyZSBPSwogT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgogCiAKLVBBU1MgZXJyb3IuY29kZSBpcyBtb2NrQ29kZQorUEFTUyBlcnJvci5jb2RlIGlzIGVy
cm9yLlBPU0lUSU9OX1VOQVZBSUxBQkxFCiBQQVNTIGVycm9yLm1lc3NhZ2UgaXMgbW9ja01lc3Nh
Z2UKIAotUEFTUyBlcnJvci5jb2RlIGlzIG1vY2tDb2RlCitQQVNTIGVycm9yLmNvZGUgaXMgZXJy
b3IuUE9TSVRJT05fVU5BVkFJTEFCTEUKIFBBU1MgZXJyb3IubWVzc2FnZSBpcyBtb2NrTWVzc2Fn
ZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvZXJyb3IuanMgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvZXJyb3IuanMKaW5kZXggMmQx
M2YzZjQ2YzgzMDEwNzZjOGRjYmI5ZDE5ODkxMGY3N2ZjYzgxYi4uOGU0NGJjNmY3MWVmZDhlYjc3
M2U5ZTc5NTc1NDdkMGQzZjcxZTgwOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
R2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL2Vycm9yLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9lcnJvci5qcwpAQCAtMSwxMSArMSwxMCBAQAog
ZGVzY3JpcHRpb24oIlRlc3RzIEdlb2xvY2F0aW9uIGVycm9yIGNhbGxiYWNrIHVzaW5nIHRoZSBt
b2NrIHNlcnZpY2UuIik7CiAKLXZhciBtb2NrQ29kZSA9IDI7CiB2YXIgbW9ja01lc3NhZ2UgPSAi
ZGVidWciOwogCiBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICB0ZXN0UnVubmVyLnNldEdl
b2xvY2F0aW9uUGVybWlzc2lvbih0cnVlKTsKLSAgICB0ZXN0UnVubmVyLnNldE1vY2tHZW9sb2Nh
dGlvbkVycm9yKG1vY2tDb2RlLCBtb2NrTWVzc2FnZSk7CisgICAgdGVzdFJ1bm5lci5zZXRNb2Nr
R2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IobW9ja01lc3NhZ2UpOwogfSBlbHNl
CiAgICAgZGVidWcoJ1RoaXMgdGVzdCBjYW4gbm90IGJlIHJ1biB3aXRob3V0IHRoZSB0ZXN0UnVu
bmVyJyk7CiAKQEAgLTE1LDcgKzE0LDcgQEAgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJl
bnRQb3NpdGlvbihmdW5jdGlvbihwKSB7CiAgICAgZmluaXNoSlNUZXN0KCk7CiB9LCBmdW5jdGlv
bihlKSB7CiAgICAgZXJyb3IgPSBlOwotICAgIHNob3VsZEJlKCdlcnJvci5jb2RlJywgJ21vY2tD
b2RlJyk7CisgICAgc2hvdWxkQmUoJ2Vycm9yLmNvZGUnLCAnZXJyb3IuUE9TSVRJT05fVU5BVkFJ
TEFCTEUnKTsKICAgICBzaG91bGRCZSgnZXJyb3IubWVzc2FnZScsICdtb2NrTWVzc2FnZScpOwog
ICAgIHNob3VsZEJlKCdlcnJvci5VTktOT1dOX0VSUk9SJywgJ3VuZGVmaW5lZCcpOwogICAgIHNo
b3VsZEJlKCdlcnJvci5QRVJNSVNTSU9OX0RFTklFRCcsICcxJyk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvbWF4aW11bS1hZ2UuanMg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvbWF4aW11bS1h
Z2UuanMKaW5kZXggNmM4Zjg2MDA5ZmI4NDY1MzExZDBhZDllOWU4NGZhNTczMWE1ZDE2ZC4uNDc1
OTZjYTQ2NDZjYzM2OTdhZjI4OTg5ODVkNjUzNDQ0YTYyY2IyMiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL21heGltdW0tYWdlLmpzCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9tYXhpbXVt
LWFnZS5qcwpAQCAtNCw3ICs0LDYgQEAgdmFyIG1vY2tMYXRpdHVkZSA9IDUxLjQ3ODsKIHZhciBt
b2NrTG9uZ2l0dWRlID0gLTAuMTY2OwogdmFyIG1vY2tBY2N1cmFjeSA9IDEwMC4wOwogCi12YXIg
bW9ja0NvZGUgPSAyOwogdmFyIG1vY2tNZXNzYWdlID0gJ3Rlc3QnOwogCiB2YXIgcG9zaXRpb247
CkBAIC0yMSw3ICsyMCw3IEBAIGZ1bmN0aW9uIGNoZWNrUG9zaXRpb24ocCkgewogZnVuY3Rpb24g
Y2hlY2tFcnJvcihlKSB7CiAgICAgZGVidWcoJycpOwogICAgIGVycm9yID0gZTsKLSAgICBzaG91
bGRCZSgnZXJyb3IuY29kZScsICdtb2NrQ29kZScpOworICAgIHNob3VsZEJlKCdlcnJvci5jb2Rl
JywgJ2Vycm9yLlBPU0lUSU9OX1VOQVZBSUxBQkxFJyk7CiAgICAgc2hvdWxkQmUoJ2Vycm9yLm1l
c3NhZ2UnLCAnbW9ja01lc3NhZ2UnKTsKIH0KIApAQCAtNTcsNyArNTYsNyBAQCBmdW5jdGlvbiB0
ZXN0WmVyb01heGltdW1BZ2UoKSB7CiBmdW5jdGlvbiB0ZXN0Tm9uWmVyb01heGltdW1BZ2UoKSB7
CiAgICAgLy8gVXBkYXRlIHRoZSBtb2NrIHNlcnZpY2UgdG8gcmVwb3J0IGFuIGVycm9yLgogICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRNb2NrR2VvbG9j
YXRpb25FcnJvcihtb2NrQ29kZSwgbW9ja01lc3NhZ2UpOworICAgICAgICB0ZXN0UnVubmVyLnNl
dE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFibGVFcnJvcihtb2NrTWVzc2FnZSk7CiAg
ICAgLy8gVGhlIG1heGltdW1BZ2UgaXMgbm9uLXplcm8sIHNvIHdlIGV4cGVjdCB0aGUgY2FjaGVk
IHBvc2l0aW9uLCBub3QgdGhlIGVycm9yIGZyb20gdGhlIHNlcnZpY2UuCiAgICAgbmF2aWdhdG9y
Lmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihmdW5jdGlvbihwKSB7CiAgICAgICAgIGNo
ZWNrUG9zaXRpb24ocCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2Nh
dGlvbi9zY3JpcHQtdGVzdHMvcGVybWlzc2lvbi1kZW5pZWQtYWxyZWFkeS1lcnJvci5qcyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9wZXJtaXNzaW9uLWRl
bmllZC1hbHJlYWR5LWVycm9yLmpzCmluZGV4IGI1ZTNkOGYyYzhhMzI4ZDI3MzliNDg1YzhjZGE0
ZDM4N2IzMjY4MzguLjQ4YjVjZjgxYzU0OThhM2QzNGYxNDE3MjQ2NzkxZGY3YzhjN2MxNGYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9w
ZXJtaXNzaW9uLWRlbmllZC1hbHJlYWR5LWVycm9yLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy9wZXJtaXNzaW9uLWRlbmllZC1hbHJlYWR5LWVy
cm9yLmpzCkBAIC0yMyw3ICsyMyw3IEBAIGZ1bmN0aW9uIGNvbnRpbnVlVGVzdCgpCiB7CiAgICAg
Ly8gTWFrZSBhbm90aGVyIHJlcXVlc3QsIHdpdGggcGVybWlzc2lvbiBhbHJlYWR5IGRlbmllZC4K
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIuc2V0TW9ja0dl
b2xvY2F0aW9uRXJyb3IoMiwgJ3Rlc3QnKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRNb2NrR2Vv
bG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoJ3Rlc3QnKTsKIAogICAgIG5hdmlnYXRv
ci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZnVuY3Rpb24ocCkgewogICAgICAgICB0
ZXN0RmFpbGVkKCdTdWNjZXNzIGNhbGxiYWNrIGludm9rZWQgdW5leHBlY3RlZGx5Jyk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVzdHMvcmVl
bnRyYW50LWVycm9yLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0
LXRlc3RzL3JlZW50cmFudC1lcnJvci5qcwppbmRleCA1NDM5ZTI5MjJjNGM5ODhlZDIxYThiYzcz
MTgzM2YwYzJiNzE0OTliLi41YTZjMDlkMWJhODI4NmIwYWI0MWE3Y2JiNjcwZDc5YWIxYjczZWU1
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3JpcHQtdGVz
dHMvcmVlbnRyYW50LWVycm9yLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0
aW9uL3NjcmlwdC10ZXN0cy9yZWVudHJhbnQtZXJyb3IuanMKQEAgLTEsMTEgKzEsMTAgQEAKIGRl
c2NyaXB0aW9uKCJUZXN0cyB0aGF0IHJlZW50cmFudCBjYWxscyB0byBHZW9sb2NhdGlvbiBtZXRo
b2RzIGZyb20gdGhlIGVycm9yIGNhbGxiYWNrIGFyZSBPSy4iKTsKIAotdmFyIG1vY2tDb2RlID0g
MjsKIHZhciBtb2NrTWVzc2FnZSA9ICd0ZXN0JzsKIAogaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
CiAgICAgdGVzdFJ1bm5lci5zZXRHZW9sb2NhdGlvblBlcm1pc3Npb24odHJ1ZSk7Ci0gICAgdGVz
dFJ1bm5lci5zZXRNb2NrR2VvbG9jYXRpb25FcnJvcihtb2NrQ29kZSwgbW9ja01lc3NhZ2UpOwor
ICAgIHRlc3RSdW5uZXIuc2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9y
KG1vY2tNZXNzYWdlKTsKIH0gZWxzZQogICAgIGRlYnVnKCdUaGlzIHRlc3QgY2FuIG5vdCBiZSBy
dW4gd2l0aG91dCB0aGUgdGVzdFJ1bm5lcicpOwogCkBAIC0yMiw3ICsyMSw3IEBAIG5hdmlnYXRv
ci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZnVuY3Rpb24ocCkgewogICAgIGVycm9y
Q2FsbGJhY2tJbnZva2VkID0gdHJ1ZTsKIAogICAgIGVycm9yID0gZTsKLSAgICBzaG91bGRCZSgn
ZXJyb3IuY29kZScsICdtb2NrQ29kZScpOworICAgIHNob3VsZEJlKCdlcnJvci5jb2RlJywgJ2Vy
cm9yLlBPU0lUSU9OX1VOQVZBSUxBQkxFJyk7CiAgICAgc2hvdWxkQmUoJ2Vycm9yLm1lc3NhZ2Un
LCAnbW9ja01lc3NhZ2UnKTsKICAgICBkZWJ1ZygnJyk7CiAgICAgY29udGludWVUZXN0KCk7CkBA
IC0zMiwxNCArMzEsMTQgQEAgZnVuY3Rpb24gY29udGludWVUZXN0KCkgewogICAgIG1vY2tNZXNz
YWdlICs9ICcgcmVwZWF0JzsKIAogICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAg
dGVzdFJ1bm5lci5zZXRNb2NrR2VvbG9jYXRpb25FcnJvcihtb2NrQ29kZSwgbW9ja01lc3NhZ2Up
OworICAgICAgICB0ZXN0UnVubmVyLnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5hdmFpbGFi
bGVFcnJvcihtb2NrTWVzc2FnZSk7CiAKICAgICBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3Vy
cmVudFBvc2l0aW9uKGZ1bmN0aW9uKHApIHsKICAgICAgICAgdGVzdEZhaWxlZCgnU3VjY2VzcyBj
YWxsYmFjayBpbnZva2VkIHVuZXhwZWN0ZWRseScpOwogICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
ICAgICB9LCBmdW5jdGlvbihlKSB7CiAgICAgICAgIGVycm9yID0gZTsKLSAgICAgICAgc2hvdWxk
QmUoJ2Vycm9yLmNvZGUnLCAnbW9ja0NvZGUnKTsKKyAgICAgICAgc2hvdWxkQmUoJ2Vycm9yLmNv
ZGUnLCAnZXJyb3IuUE9TSVRJT05fVU5BVkFJTEFCTEUnKTsKICAgICAgICAgc2hvdWxkQmUoJ2Vy
cm9yLm1lc3NhZ2UnLCAnbW9ja01lc3NhZ2UnKTsKICAgICAgICAgZmluaXNoSlNUZXN0KCk7CiAg
ICAgfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3Jp
cHQtdGVzdHMvd2F0Y2guanMgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9zY3Jp
cHQtdGVzdHMvd2F0Y2guanMKaW5kZXggNmYxZmUwY2RmMjQwYzQ4MjE5ZWViMThkMzZmYmM2MGRj
ODFjODlhMi4uMGVhMWNhZjQ4ZDk4YjQ3ZmI5YTMzNGUzOTQzMWVlNzhhYmVkODQ2MiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vc2NyaXB0LXRlc3RzL3dhdGNo
LmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3NjcmlwdC10ZXN0cy93
YXRjaC5qcwpAQCAtNCw3ICs0LDYgQEAgdmFyIG1vY2tMYXRpdHVkZSA9IDUxLjQ3ODsKIHZhciBt
b2NrTG9uZ2l0dWRlID0gLTAuMTY2OwogdmFyIG1vY2tBY2N1cmFjeSA9IDEwMC4wOwogCi12YXIg
bW9ja0NvZGUgPSAyOwogdmFyIG1vY2tNZXNzYWdlID0gJ3Rlc3QnOwogCiB2YXIgcG9zaXRpb247
CkBAIC0yMCw3ICsxOSw3IEBAIGZ1bmN0aW9uIGNoZWNrUG9zaXRpb24ocCkgewogCiBmdW5jdGlv
biBjaGVja0Vycm9yKGUpIHsKICAgICBlcnJvciA9IGU7Ci0gICAgc2hvdWxkQmUoJ2Vycm9yLmNv
ZGUnLCAnbW9ja0NvZGUnKTsKKyAgICBzaG91bGRCZSgnZXJyb3IuY29kZScsICdlcnJvci5QT1NJ
VElPTl9VTkFWQUlMQUJMRScpOwogICAgIHNob3VsZEJlKCdlcnJvci5tZXNzYWdlJywgJ21vY2tN
ZXNzYWdlJyk7CiAgICAgZGVidWcoJycpOwogfQpAQCAtNDIsNyArNDEsNyBAQCBuYXZpZ2F0b3Iu
Z2VvbG9jYXRpb24ud2F0Y2hQb3NpdGlvbihmdW5jdGlvbihwKSB7CiAgICAgICAgIGNhc2UgMToK
ICAgICAgICAgICAgIGNoZWNrUG9zaXRpb24ocCk7CiAgICAgICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCi0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRNb2NrR2VvbG9jYXRpb25F
cnJvcihtb2NrQ29kZSwgbW9ja01lc3NhZ2UpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIu
c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKG1vY2tNZXNzYWdlKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICBjaGVja1Bv
c2l0aW9uKHApOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24v
d2F0Y2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vd2F0
Y2gtZXhwZWN0ZWQudHh0CmluZGV4IGEwNDM0NTU2ZjJiZjA1NWE5M2RjNzM1YjNiYTNhZTY4OGQ1
ZTE3ZjguLjRjNzVmMDhlNTM3M2VkY2I5ZTVhMTAyMzBmNjY3NzBkYTY4NjYzNTIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3dhdGNoLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi93YXRjaC1leHBlY3RlZC50eHQK
QEAgLTExLDcgKzExLDcgQEAgUEFTUyBwb3NpdGlvbi5jb29yZHMubGF0aXR1ZGUgaXMgbW9ja0xh
dGl0dWRlCiBQQVNTIHBvc2l0aW9uLmNvb3Jkcy5sb25naXR1ZGUgaXMgbW9ja0xvbmdpdHVkZQog
UEFTUyBwb3NpdGlvbi5jb29yZHMuYWNjdXJhY3kgaXMgbW9ja0FjY3VyYWN5CiAKLVBBU1MgZXJy
b3IuY29kZSBpcyBtb2NrQ29kZQorUEFTUyBlcnJvci5jb2RlIGlzIGVycm9yLlBPU0lUSU9OX1VO
QVZBSUxBQkxFCiBQQVNTIGVycm9yLm1lc3NhZ2UgaXMgbW9ja01lc3NhZ2UKIAogUEFTUyBwb3Np
dGlvbi5jb29yZHMubGF0aXR1ZGUgaXMgbW9ja0xhdGl0dWRlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>