<?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>90094</bug_id>
          
          <creation_ts>2012-06-27 12:39:34 -0700</creation_ts>
          <short_desc>[chromium] use WEBKIT_IMPLEMENTATION == 1 for webkit_unit_tests</short_desc>
          <delta_ts>2012-07-11 12:59:10 -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>Layout and Rendering</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>
          <dependson>90135</dependson>
    
    <dependson>90837</dependson>
          <blocked>89926</blocked>
    
    <blocked>90528</blocked>
    
    <blocked>90582</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Shawn Singh">shawnsingh</reporter>
          <assigned_to name="Shawn Singh">shawnsingh</assigned_to>
          <cc>abarth</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>danakj</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>hclam</cc>
    
    <cc>jamesr</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>658788</commentid>
    <comment_count>0</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-06-27 12:39:34 -0700</bug_when>
    <thetext>It was originally intended that WEBKIT_IMPLEMENTATION would be defined to value 1 for webkit_unit_tests build target.   It turns out that was not the case.  At this point, adding this define will make some code migration much easier, because WEBKIT_IMPLEMENTATION == 1 will enable several WebCore-to-chromium datatype conversions in the code.

This patch adds the WEBKIT_IMPLEMENTATION preprocessor define.   It turns out that some code -- string and URL stuff -- required that WEBKIT_IMPLEMENTATION == 0, and that needed to be refactored/fixed for this patch.  For now, the solution we opted for is to err towards chromium/public/Web* and WebCore types, such as KURL instead of GURL.

Patch coming shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658932</commentid>
    <comment_count>1</comment_count>
      <attachid>149809</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-06-27 16:03:15 -0700</bug_when>
    <thetext>Created attachment 149809
Patch

The URL logic had a lot of redundancy that was just slightly different in each place --&gt; a haven for frustrating bugs. So I went ahead and refactored it and cleaned it up, along with this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658940</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-27 16:05:51 -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>658944</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-06-27 16:13:03 -0700</bug_when>
    <thetext>It may make sense to have two separate unit test targets:  1) tests that build against the implementation and 2) tests that build only against the API.

I&apos;d probably call the first target webkit_unit_tests and the second webkit_api_tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658946</commentid>
    <comment_count>4</comment_count>
      <attachid>149809</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-27 16:16:28 -0700</bug_when>
    <thetext>Comment on attachment 149809
Patch

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

Looks good to me.

Adam and I talked about having two test targets a bit yesterday - it sounds like a good idea, but it might get really confusing for someone writing a new test to figure out which sort of thing they were writing and where it should go.  Would they live in different directories?

&gt; Source/WebKit/chromium/public/WebDOMMessageEvent.h:49
&gt; +    WebDOMMessageEvent() { };

no ;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658949</commentid>
    <comment_count>5</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-06-27 16:17:48 -0700</bug_when>
    <thetext>
Darin - is it OK with you to land this for now, and we can continue discussiong the two-target need if you want?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659139</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-06-27 20:48:58 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Darin - is it OK with you to land this for now, and we can continue discussiong the two-target need if you want?

Yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659140</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-06-27 20:50:53 -0700</bug_when>
    <thetext>(In reply to comment #4)
...
&gt; Adam and I talked about having two test targets a bit yesterday - it sounds like a good idea, but it might get really confusing for someone writing a new test to figure out which sort of thing they were writing and where it should go.  Would they live in different directories?

Different directories seems like a good idea to me.  The &quot;API tests&quot; would obviously fail to build if you attempted to include WebCore headers.  Those just wouldn&apos;t be on the include path.  The &quot;unit tests&quot; would just be what we have today.  We would probably also try to make all integration tests become API tests, and try to encourage all WebCore-using tests to be small unit tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659146</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-06-27 21:18:00 -0700</bug_when>
    <thetext>Maybe having two test suites is the better approach.  We already have both the TestWebKitAPI (43 tests) and the webkit_unit_tests targets (959 tests).  However, both of them grab at symbols inside WebCore...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659149</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-06-27 21:21:31 -0700</bug_when>
    <thetext>Even if we end up with two (I guess three) targets, many of the webkit_unit_tests tests are in the &quot;can see WebCore&quot; category, and so defining WEBKIT_IMPLEMENTATION == 1 makes sense.  This patch might be creating work for us down the road if/when we create the second target, but hopefully not too much work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659180</commentid>
    <comment_count>10</comment_count>
      <attachid>149809</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-27 22:01:01 -0700</bug_when>
    <thetext>Comment on attachment 149809
Patch

Clearing flags on attachment: 149809

Committed r121405: &lt;http://trac.webkit.org/changeset/121405&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659181</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-27 22:01:11 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659184</commentid>
    <comment_count>12</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-06-27 22:04:17 -0700</bug_when>
    <thetext>Actually I forgot to address James&apos;s comment - I&apos;m really sorry about that.

I don&apos;t think there&apos;s any need to revert, I&apos;ll just re-open this bug to remind me to fix it in a quick follow-up patch tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659632</commentid>
    <comment_count>13</comment_count>
      <attachid>149974</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-06-28 11:12:11 -0700</bug_when>
    <thetext>Created attachment 149974
Patch

Sorry for the churn; I had to revert anyway because of a windows-only build error.  This patch addresses reviewer&apos;s previous comments, and fixes windows build errors on PopupMenuTest.cpp.  Otherwise it is the same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659729</commentid>
    <comment_count>14</comment_count>
      <attachid>149974</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-28 13:08:02 -0700</bug_when>
    <thetext>Comment on attachment 149974
Patch

Rejecting attachment 149974 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
e/WebKit/chromium/tests/WebFrameTest.cpp: In member function &apos;virtual void&lt;unnamed&gt;::WebFrameTest_ReloadWithOverrideURLPreservesState_Test::TestBody()&apos;:
Source/WebKit/chromium/tests/WebFrameTest.cpp:446: error: &apos;GURL&apos; was not declared in this scope
  CXX(target) out/Debug/obj.target/webkit_unit_tests/Source/WebKit/chromium/tests/WebPageSerializerTest.o
make: *** [out/Debug/obj.target/webkit_unit_tests/Source/WebKit/chromium/tests/WebFrameTest.o] Error 1
make: *** Waiting for unfinished jobs....

Full output: http://queues.webkit.org/results/13121058</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659738</commentid>
    <comment_count>15</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-06-28 13:17:23 -0700</bug_when>
    <thetext>This is just innocent bad timing, another patch landed just now that uses the old way.  I&apos;ll just land directly instead, so that this has some bake time before the 5pm outage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659759</commentid>
    <comment_count>16</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-06-28 13:35:15 -0700</bug_when>
    <thetext>Committed r121463: &lt;http://trac.webkit.org/changeset/121463&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659810</commentid>
    <comment_count>17</comment_count>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2012-06-28 14:10:35 -0700</bug_when>
    <thetext>Reverted r121463 for reason:

Broke Windows build

Committed r121469: &lt;http://trac.webkit.org/changeset/121469&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659902</commentid>
    <comment_count>18</comment_count>
      <attachid>149974</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-28 15:53:02 -0700</bug_when>
    <thetext>Comment on attachment 149974
Patch

Attachment 149974 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13110174</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661545</commentid>
    <comment_count>19</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-07-02 09:30:04 -0700</bug_when>
    <thetext>update: I intentionally waited because branch was coming this week.   I&apos;m getting a windows machine set up and I&apos;ll test this on all platforms before submitting again, probably next week after dust settles from branch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665249</commentid>
    <comment_count>20</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-07-09 15:46:14 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; update: I intentionally waited because branch was coming this week.   I&apos;m getting a windows machine set up and I&apos;ll test this on all platforms before submitting again, probably next week after dust settles from branch.

The patch (updated to tip of tree) seems to work fine for me on VS 2008.  The EWS bots didn&apos;t catch the build error, either.  So I have asked the gardener and got permission to land it, expecting that it may break the windows chromium canary bots - if it does, at least we can see the build errors again, and I will revert it.  If we&apos;re lucky, perhaps it was a fluke last time and may pass the bots this time, and the patch will stick.  I&apos;ll be trying to land it again shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666837</commentid>
    <comment_count>21</comment_count>
      <attachid>151725</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-07-11 10:13:19 -0700</bug_when>
    <thetext>Created attachment 151725
Fixed component build setup

Tested on windows debug static/shared builds, mac release/debug static/shared builds, linux release/debug static/shared builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666838</commentid>
    <comment_count>22</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-07-11 10:13:38 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; Created an attachment (id=151725) [details]
&gt; Fixed component build setup
&gt; 
&gt; Tested on windows debug static/shared builds, mac release/debug static/shared builds, linux release/debug static/shared builds.

This patch is essentially the same as the ones that jamesr and abarth already gave an r+.   But it was different enough, I felt it needs one more 5-minute review.

Hopefully the build errors are solved now... the frustration was that component build was set up differently than static build and it was not obvious when originally modifying the gyp files.  In particular, webkit_support caused cyclic dependencies with other WebCore stuff when RunAllTests was dependent on both.

The differences between this patch and the previous one:

(1) (minor) a few additional locations where GURL was added since last time the patch landed, changed those instances to toKURL again.

(2) (of interest for reviewers)  changed the WEBKIT_IMPLEMENTATION define so that it is used in webkitUnitTests.gyp for static build, and webkit.gyp for shared library build.  This way, RunAllTests.cpp can actually compile in shared build with its dependencies on webkit_support. This is more consistent with how the existing build setup was arranged.  The Changelog describes what changes are made to each gyp.

(3) added an #if guard to config.h in RunAllTests.cpp, so that it only includes that stuff when statically linking.  when dynamically linking, it doesn&apos;t need that include, anyway.

Let&apos;s see if this patch sticks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666862</commentid>
    <comment_count>23</comment_count>
      <attachid>151725</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-11 10:43:25 -0700</bug_when>
    <thetext>Comment on attachment 151725
Fixed component build setup

R=me.  Thanks for all the explanation.  Those changes all make sense to me.  Let&apos;s give this a try on the bots.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666974</commentid>
    <comment_count>24</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-07-11 12:59:10 -0700</bug_when>
    <thetext>Looks like this version has passed the webkit chromium canary bots.  It should stick and we can close this bug now.  Thanks for everyone&apos;s patience and help =)

The patch landed in two separate CLs:
http://trac.webkit.org/changeset/122344
http://trac.webkit.org/changeset/122348</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149809</attachid>
            <date>2012-06-27 16:03:15 -0700</date>
            <delta_ts>2012-06-28 11:12:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90094-20120627160315.patch</filename>
            <type>text/plain</type>
            <size>53154</size>
            <attacher name="Shawn Singh">shawnsingh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDgxN2QyYTkxOGEzY2ZhZTY5MzBiNWFjZTVjNjhhM2QwMjI5ZDg3YjcuLjg3ZWM0ODEyNjk5MmM4
NjhiMzJhMjg3MDM1MGYxNDdkZWVmNDlhNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDAgQEAKKzIwMTItMDYtMjcgIFNoYXduIFNpbmdoICA8c2hhd25zaW5naEBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBVc2UgV0VCS0lUX0lNUExFTUVOVEFUSU9O
ID09IDEgZm9yIHdlYmtpdF91bml0X3Rlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05MDA5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyB0aGUgV0VCS0lUX0lNUExFTUVOVEFU
SU9OID0gMSBkZWZpbmUgdG8KKyAgICAgICAgV2ViS2l0VW5pdFRlc3RzLmd5cC4gVG8gZ2V0IGl0
IHRvIGNvbXBpbGUgY29ycmVjdGx5LCBzb21lIHN0cmluZworICAgICAgICBhbmQgVVJMIGNvZGUg
d2FzIHJlZmFjdG9yZWQgYW5kIGZpeGVkLgorCisgICAgICAgICogV2ViS2l0Lmd5cGk6CisgICAg
ICAgICogV2ViS2l0VW5pdFRlc3RzLmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViRE9NTWVzc2Fn
ZUV2ZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkRPTU1lc3NhZ2VFdmVudDo6V2ViRE9NTWVz
c2FnZUV2ZW50KToKKyAgICAgICAgKiB0ZXN0cy9Bc3NvY2lhdGVkVVJMTG9hZGVyVGVzdC5jcHA6
CisgICAgICAgICogdGVzdHMvRXZlbnRMaXN0ZW5lclRlc3QuY3BwOgorICAgICAgICAqIHRlc3Rz
L0ZyYW1lVGVzdEhlbHBlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZVRlc3RIZWxwZXJz
Ojpsb2FkRnJhbWUpOgorICAgICAgICAqIHRlc3RzL0ZyYW1lVGVzdEhlbHBlcnMuaDoKKyAgICAg
ICAgKiB0ZXN0cy9MaXN0ZW5lckxlYWtUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGlzdGVu
ZXJMZWFrVGVzdDo6UnVuVGVzdCk6CisgICAgICAgICogdGVzdHMvUG9wdXBNZW51VGVzdC5jcHA6
CisgICAgICAgICogdGVzdHMvUnVuQWxsVGVzdHMuY3BwOgorICAgICAgICAqIHRlc3RzL1VSTFRl
c3RIZWxwZXJzLmNwcDogQWRkZWQuCisgICAgICAgIChVUkxUZXN0SGVscGVycyk6CisgICAgICAg
IChXZWJLaXQ6OlVSTFRlc3RIZWxwZXJzOjpyZWdpc3Rlck1vY2tlZFVSTEZyb21CYXNlVVJMKToK
KyAgICAgICAgKFdlYktpdDo6VVJMVGVzdEhlbHBlcnM6OnJlZ2lzdGVyTW9ja2VkVVJMTG9hZCk6
CisgICAgICAgICogdGVzdHMvVVJMVGVzdEhlbHBlcnMuaDogQ29waWVkIGZyb20gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRE9NTWVzc2FnZUV2ZW50LmguCisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoVVJMVGVzdEhlbHBlcnMpOgorICAgICAgICAoV2ViS2l0OjpVUkxUZXN0
SGVscGVyczo6dG9LVVJMKToKKyAgICAgICAgKiB0ZXN0cy9XZWJGcmFtZVRlc3QuY3BwOgorICAg
ICAgICAqIHRlc3RzL1dlYlBhZ2VOZXdTZXJpYWxpemVyVGVzdC5jcHA6CisgICAgICAgICogdGVz
dHMvV2ViUGFnZVNlcmlhbGl6ZXJUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9XZWJWaWV3VGVz
dC5jcHA6CisKIDIwMTItMDYtMjcgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBbQ2hyb21pdW1dIEluZGV4ZWREQjogRXhwb3NlIFdlYklEQlRyYW5zYWN0aW9u
Ojpjb21taXQoKSBtZXRob2QgaW4gcHVibGljIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9XZWJLaXQuZ3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5
cGkKaW5kZXggYzQxMGU2ZjRmNzU4NGZkMjBlODg4M2EwMGYxZWMwNjA3OGUyNzI2Ny4uZWJjZmE2
MGM2NWQ2ODRmZmQwYWY0ZmU1YmViOWEwODAzZTliOWU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dl
YktpdC5neXBpCkBAIC0xNDUsNiArMTQ1LDggQEAKICAgICAgICAgICAgICd0ZXN0cy9UcmVlU3lu
Y2hyb25pemVyVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1RyZWVUZXN0SGVscGVycy5j
cHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1RyZWVUZXN0SGVscGVycy5oJywKKyAgICAgICAgICAg
ICd0ZXN0cy9VUkxUZXN0SGVscGVycy5jcHAnLAorICAgICAgICAgICAgJ3Rlc3RzL1VSTFRlc3RI
ZWxwZXJzLmgnLAogICAgICAgICAgICAgJ3Rlc3RzL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJ
bXBsVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAnLAogICAg
ICAgICAgICAgJ3Rlc3RzL1dlYkxheWVyVGVzdC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9XZWJLaXRVbml0VGVzdHMuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXRVbml0VGVzdHMuZ3lwCmluZGV4IDU4YWY4Mzk4NWE0NWRhMjliOWUwNmJmYjhmNzI3
MWViYWJhZTA5NmEuLjEwODE4Mjg1NjAwMDM2MjY5ZGFmM2M1N2ExNWY3NjFkMjMyMjI1YzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0VW5pdFRlc3RzLmd5cAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdFVuaXRUZXN0cy5neXAKQEAgLTc4LDYgKzc4
LDkgQEAKICAgICAgICAgICAgICAgICAjIGFkZCB0aGUgaW5jbHVkZSBwYXRoIGRpcmVjdGx5Lgog
ICAgICAgICAgICAgICAgICcuLi8uLi9QbGF0Zm9ybS9jaHJvbWl1bScsCiAgICAgICAgICAgICBd
LAorICAgICAgICAgICAgJ2RlZmluZXMnOiBbCisgICAgICAgICAgICAgICAgJ1dFQktJVF9JTVBM
RU1FTlRBVElPTj0xJywKKyAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAnY29uZGl0aW9ucyc6
IFsKICAgICAgICAgICAgICAgICBbJ2luc2lkZV9jaHJvbWl1bV9idWlsZD09MSBhbmQgY29tcG9u
ZW50PT0ic2hhcmVkX2xpYnJhcnkiJywgewogICAgICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6
IFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRPTU1lc3Nh
Z2VFdmVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRE9NTWVzc2FnZUV2
ZW50LmgKaW5kZXggMzU1YjczNzE1YTRmOWQ2YjAzNmRmYzBlMjg5NjhjOWFiMDI0MDYyNC4uNzUz
N2YwMGE0NGE3YjA5YjdiNWFiNzBlNTEzMDMxMWY0MjczOGY5NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRE9NTWVzc2FnZUV2ZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRE9NTWVzc2FnZUV2ZW50LmgKQEAgLTQ2LDYgKzQ2
LDcgQEAgY2xhc3MgV2ViU3RyaW5nOwogCiBjbGFzcyBXZWJET01NZXNzYWdlRXZlbnQgOiBwdWJs
aWMgV2ViRE9NRXZlbnQgewogcHVibGljOgorICAgIFdlYkRPTU1lc3NhZ2VFdmVudCgpIHsgfTsK
ICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgaW5pdE1lc3NhZ2VFdmVudChjb25zdCBXZWJTdHJpbmcm
IHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGNvbnN0IFdlYlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSYgbWVzc2FnZURhdGEsIGNvbnN0IFdlYlN0cmluZyYgb3JpZ2luLCBjb25z
dCBXZWJGcmFtZSogc291cmNlRnJhbWUsIGNvbnN0IFdlYlN0cmluZyYgbGFzdEV2ZW50SWQpOwog
CiAgICAgV0VCS0lUX0VYUE9SVCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUgZGF0YSgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Bc3NvY2lhdGVkVVJM
TG9hZGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Fzc29jaWF0ZWRV
UkxMb2FkZXJUZXN0LmNwcAppbmRleCAwMzU1OWY3ZjExOWFhYWE4NjZjZjAzNzZmNWE0NGJjZjI1
OWQ3YzhjLi43MDUxYmY5ZDY3MDZlYjQ2MzExNTdkYWZhOTA1ZjYwZWRiY2E2Y2NhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Fzc29jaWF0ZWRVUkxMb2FkZXJUZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Fzc29jaWF0ZWRVUkxMb2Fk
ZXJUZXN0LmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKKyNp
bmNsdWRlICJVUkxUZXN0SGVscGVycy5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVk
ZSAiV2ViRnJhbWVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJVUkxMb2FkZXJPcHRpb25zLmgiCkBA
IC00MiwxMSArNDMsMTEgQEAKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJVUkxSZXNwb25zZS5oIgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaW5jbHVkZSA8Z29vZ2xldXJsL3Ny
Yy9ndXJsLmg+CiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQvc3Vw
cG9ydC93ZWJraXRfc3VwcG9ydC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcg
V2ViS2l0OjpVUkxUZXN0SGVscGVyczo6dG9LVVJMOwogCiBuYW1lc3BhY2UgewogCkBAIC03Niw5
ICs3Nyw5IEBAIHB1YmxpYzoKICAgICAgICAgLCAgbV9ydW5uaW5nTWVzc2FnZUxvb3AoZmFsc2Up
CiAgICAgewogICAgICAgICAvLyBSZXVzZSBvbmUgb2YgdGhlIHRlc3QgZmlsZXMgZnJvbSBXZWJG
cmFtZVRlc3QuCi0gICAgICAgIHN0ZDo6c3RyaW5nIGZpbGVQYXRoID0gd2Via2l0X3N1cHBvcnQ6
OkdldFdlYktpdFJvb3REaXIoKS51dGY4KCk7CisgICAgICAgIHN0ZDo6c3RyaW5nIGZpbGVQYXRo
ID0gc3RkOjpzdHJpbmcod2Via2l0X3N1cHBvcnQ6OkdldFdlYktpdFJvb3REaXIoKS51dGY4KCku
ZGF0YSgpKTsKICAgICAgICAgZmlsZVBhdGggKz0gIi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL2RhdGEvaWZyYW1lc190ZXN0Lmh0bWwiOwotICAgICAgICBtX2ZyYW1lRmlsZVBhdGggPSBX
ZWJTdHJpbmc6OmZyb21VVEY4KGZpbGVQYXRoKTsKKyAgICAgICAgbV9mcmFtZUZpbGVQYXRoID0g
V2ViU3RyaW5nOjpmcm9tVVRGOChmaWxlUGF0aC5jX3N0cigpKTsKICAgICB9CiAKICAgICB2b2lk
IFNldFVwKCkKQEAgLTg3LDcgKzg4LDcgQEAgcHVibGljOgogICAgICAgICBtX3dlYlZpZXctPmlu
aXRpYWxpemVNYWluRnJhbWUoJm1fd2ViRnJhbWVDbGllbnQpOwogCiAgICAgICAgIC8vIExvYWQg
dGhlIGZyYW1lIGJlZm9yZSB0cnlpbmcgdG8gbG9hZCByZXNvdXJjZXMuCi0gICAgICAgIEdVUkwg
dXJsID0gR1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbS9pZnJhbWVzX3Rlc3QuaHRtbCIpOworICAg
ICAgICBXZWJDb3JlOjpLVVJMIHVybCA9IHRvS1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbS9pZnJh
bWVzX3Rlc3QuaHRtbCIpOwogICAgICAgICBXZWJVUkxSZXNwb25zZSByZXNwb25zZTsKICAgICAg
ICAgcmVzcG9uc2UuaW5pdGlhbGl6ZSgpOwogICAgICAgICByZXNwb25zZS5zZXRNSU1FVHlwZSgi
dGV4dC9odG1sIik7CkBAIC0xODQsNyArMTg1LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
V2ViVVJMUmVxdWVzdCByZXF1ZXN0OwogICAgICAgICByZXF1ZXN0LmluaXRpYWxpemUoKTsKLSAg
ICAgICAgcmVxdWVzdC5zZXRVUkwoR1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbS9zdWNjZXNzLmh0
bWwiKSk7CisgICAgICAgIHJlcXVlc3Quc2V0VVJMKHRvS1VSTCgiaHR0cDovL3d3dy50ZXN0LmNv
bS9zdWNjZXNzLmh0bWwiKSk7CiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZChXZWJTdHJp
bmc6OmZyb21VVEY4KHVuc2FmZU1ldGhvZCkpOwogICAgICAgICBXZWJVUkxMb2FkZXJPcHRpb25z
IG9wdGlvbnM7CiAgICAgICAgIG9wdGlvbnMudW50cnVzdGVkSFRUUCA9IHRydWU7CkBAIC0yMDAs
NyArMjAxLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgV2ViVVJMUmVxdWVzdCByZXF1ZXN0
OwogICAgICAgICByZXF1ZXN0LmluaXRpYWxpemUoKTsKLSAgICAgICAgcmVxdWVzdC5zZXRVUkwo
R1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbS9zdWNjZXNzLmh0bWwiKSk7CisgICAgICAgIHJlcXVl
c3Quc2V0VVJMKHRvS1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbS9zdWNjZXNzLmh0bWwiKSk7CiAg
ICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKFdlYlN0cmluZzo6ZnJvbVVURjgoaGVh
ZGVyRmllbGQpLCBXZWJTdHJpbmc6OmZyb21VVEY4KGhlYWRlclZhbHVlKSk7CiAgICAgICAgIFdl
YlVSTExvYWRlck9wdGlvbnMgb3B0aW9uczsKICAgICAgICAgb3B0aW9ucy51bnRydXN0ZWRIVFRQ
ID0gdHJ1ZTsKQEAgLTIzMCw3ICsyMzEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBpZC5hcHBl
bmQoIi1FeHBvc2VkIik7CiAgICAgICAgIGlkLmFwcGVuZCgiLmh0bWwiKTsKIAotICAgICAgICBH
VVJMIHVybCA9IEdVUkwoaWQpOworICAgICAgICBXZWJDb3JlOjpLVVJMIHVybCA9IHRvS1VSTChp
ZCk7CiAgICAgICAgIFdlYlVSTFJlcXVlc3QgcmVxdWVzdDsKICAgICAgICAgcmVxdWVzdC5pbml0
aWFsaXplKCk7CiAgICAgICAgIHJlcXVlc3Quc2V0VVJMKHVybCk7CkBAIC0yODIsNyArMjgzLDcg
QEAgcHJvdGVjdGVkOgogLy8gVGVzdCBhIHN1Y2Nlc3NmdWwgc2FtZS1vcmlnaW4gVVJMIGxvYWQu
CiBURVNUX0YoQXNzb2NpYXRlZFVSTExvYWRlclRlc3QsIFNhbWVPcmlnaW5TdWNjZXNzKQogewot
ICAgIEdVUkwgdXJsID0gR1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbS9TYW1lT3JpZ2luU3VjY2Vz
cy5odG1sIik7CisgICAgV2ViQ29yZTo6S1VSTCB1cmwgPSB0b0tVUkwoImh0dHA6Ly93d3cudGVz
dC5jb20vU2FtZU9yaWdpblN1Y2Nlc3MuaHRtbCIpOwogICAgIFdlYlVSTFJlcXVlc3QgcmVxdWVz
dDsKICAgICByZXF1ZXN0LmluaXRpYWxpemUoKTsKICAgICByZXF1ZXN0LnNldFVSTCh1cmwpOwpA
QCAtMzA1LDcgKzMwNiw3IEBAIFRFU1RfRihBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdCwgU2FtZU9y
aWdpblN1Y2Nlc3MpCiBURVNUX0YoQXNzb2NpYXRlZFVSTExvYWRlclRlc3QsIFNhbWVPcmlnaW5S
ZXN0cmljdGlvbikKIHsKICAgICAvLyBUaGlzIGlzIGNyb3NzLW9yaWdpbiBzaW5jZSB0aGUgZnJh
bWUgd2FzIGxvYWRlZCBmcm9tIHd3dy50ZXN0LmNvbS4KLSAgICBHVVJMIHVybCA9IEdVUkwoImh0
dHA6Ly93d3cub3RoZXIuY29tL1NhbWVPcmlnaW5SZXN0cmljdGlvbi5odG1sIik7CisgICAgV2Vi
Q29yZTo6S1VSTCB1cmwgPSB0b0tVUkwoImh0dHA6Ly93d3cub3RoZXIuY29tL1NhbWVPcmlnaW5S
ZXN0cmljdGlvbi5odG1sIik7CiAgICAgV2ViVVJMUmVxdWVzdCByZXF1ZXN0OwogICAgIHJlcXVl
c3QuaW5pdGlhbGl6ZSgpOwogICAgIHJlcXVlc3Quc2V0VVJMKHVybCk7CkBAIC0zMTYsNyArMzE3
LDcgQEAgVEVTVF9GKEFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0LCBTYW1lT3JpZ2luUmVzdHJpY3Rp
b24pCiBURVNUX0YoQXNzb2NpYXRlZFVSTExvYWRlclRlc3QsIENyb3NzT3JpZ2luU3VjY2VzcykK
IHsKICAgICAvLyBUaGlzIGlzIGNyb3NzLW9yaWdpbiBzaW5jZSB0aGUgZnJhbWUgd2FzIGxvYWRl
ZCBmcm9tIHd3dy50ZXN0LmNvbS4KLSAgICBHVVJMIHVybCA9IEdVUkwoImh0dHA6Ly93d3cub3Ro
ZXIuY29tL0Nyb3NzT3JpZ2luU3VjY2Vzcy5odG1sIik7CisgICAgV2ViQ29yZTo6S1VSTCB1cmwg
PSB0b0tVUkwoImh0dHA6Ly93d3cub3RoZXIuY29tL0Nyb3NzT3JpZ2luU3VjY2Vzcy5odG1sIik7
CiAgICAgV2ViVVJMUmVxdWVzdCByZXF1ZXN0OwogICAgIHJlcXVlc3QuaW5pdGlhbGl6ZSgpOwog
ICAgIHJlcXVlc3Quc2V0VVJMKHVybCk7CkBAIC0zNDEsNyArMzQyLDcgQEAgVEVTVF9GKEFzc29j
aWF0ZWRVUkxMb2FkZXJUZXN0LCBDcm9zc09yaWdpblN1Y2Nlc3MpCiBURVNUX0YoQXNzb2NpYXRl
ZFVSTExvYWRlclRlc3QsIENyb3NzT3JpZ2luV2l0aEFjY2Vzc0NvbnRyb2xTdWNjZXNzKQogewog
ICAgIC8vIFRoaXMgaXMgY3Jvc3Mtb3JpZ2luIHNpbmNlIHRoZSBmcmFtZSB3YXMgbG9hZGVkIGZy
b20gd3d3LnRlc3QuY29tLgotICAgIEdVUkwgdXJsID0gR1VSTCgiaHR0cDovL3d3dy5vdGhlci5j
b20vQ3Jvc3NPcmlnaW5XaXRoQWNjZXNzQ29udHJvbFN1Y2Nlc3MuaHRtbCIpOworICAgIFdlYkNv
cmU6OktVUkwgdXJsID0gdG9LVVJMKCJodHRwOi8vd3d3Lm90aGVyLmNvbS9Dcm9zc09yaWdpbldp
dGhBY2Nlc3NDb250cm9sU3VjY2Vzcy5odG1sIik7CiAgICAgV2ViVVJMUmVxdWVzdCByZXF1ZXN0
OwogICAgIHJlcXVlc3QuaW5pdGlhbGl6ZSgpOwogICAgIHJlcXVlc3Quc2V0VVJMKHVybCk7CkBA
IC0zNjcsNyArMzY4LDcgQEAgVEVTVF9GKEFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0LCBDcm9zc09y
aWdpbldpdGhBY2Nlc3NDb250cm9sU3VjY2VzcykKIFRFU1RfRihBc3NvY2lhdGVkVVJMTG9hZGVy
VGVzdCwgQ3Jvc3NPcmlnaW5XaXRoQWNjZXNzQ29udHJvbEZhaWx1cmUpCiB7CiAgICAgLy8gVGhp
cyBpcyBjcm9zcy1vcmlnaW4gc2luY2UgdGhlIGZyYW1lIHdhcyBsb2FkZWQgZnJvbSB3d3cudGVz
dC5jb20uCi0gICAgR1VSTCB1cmwgPSBHVVJMKCJodHRwOi8vd3d3Lm90aGVyLmNvbS9Dcm9zc09y
aWdpbldpdGhBY2Nlc3NDb250cm9sRmFpbHVyZS5odG1sIik7CisgICAgV2ViQ29yZTo6S1VSTCB1
cmwgPSB0b0tVUkwoImh0dHA6Ly93d3cub3RoZXIuY29tL0Nyb3NzT3JpZ2luV2l0aEFjY2Vzc0Nv
bnRyb2xGYWlsdXJlLmh0bWwiKTsKICAgICBXZWJVUkxSZXF1ZXN0IHJlcXVlc3Q7CiAgICAgcmVx
dWVzdC5pbml0aWFsaXplKCk7CiAgICAgcmVxdWVzdC5zZXRVUkwodXJsKTsKQEAgLTM5OCw5ICsz
OTksOSBAQCBURVNUX0YoQXNzb2NpYXRlZFVSTExvYWRlclRlc3QsIENyb3NzT3JpZ2luV2l0aEFj
Y2Vzc0NvbnRyb2xGYWlsdXJlKQogLy8gVGVzdCBhIHNhbWUtb3JpZ2luIFVSTCByZWRpcmVjdCBh
bmQgbG9hZC4KIFRFU1RfRihBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdCwgUmVkaXJlY3RTdWNjZXNz
KQogewotICAgIEdVUkwgdXJsID0gR1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbS9SZWRpcmVjdFN1
Y2Nlc3MuaHRtbCIpOworICAgIFdlYkNvcmU6OktVUkwgdXJsID0gdG9LVVJMKCJodHRwOi8vd3d3
LnRlc3QuY29tL1JlZGlyZWN0U3VjY2Vzcy5odG1sIik7CiAgICAgY2hhciByZWRpcmVjdFtdID0g
Imh0dHA6Ly93d3cudGVzdC5jb20vUmVkaXJlY3RTdWNjZXNzMi5odG1sIjsgIC8vIFNhbWUtb3Jp
Z2luCi0gICAgR1VSTCByZWRpcmVjdFVSTCA9IEdVUkwocmVkaXJlY3QpOworICAgIFdlYkNvcmU6
OktVUkwgcmVkaXJlY3RVUkwgPSB0b0tVUkwocmVkaXJlY3QpOwogCiAgICAgV2ViVVJMUmVxdWVz
dCByZXF1ZXN0OwogICAgIHJlcXVlc3QuaW5pdGlhbGl6ZSgpOwpAQCAtNDM1LDkgKzQzNiw5IEBA
IFRFU1RfRihBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdCwgUmVkaXJlY3RTdWNjZXNzKQogLy8gVGVz
dCB0aGF0IGEgY3Jvc3Mgb3JpZ2luIHJlZGlyZWN0IHJlc3BvbnNlIHdpdGhvdXQgQ09SUyBoZWFk
ZXJzIGZhaWxzLgogVEVTVF9GKEFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0LCBSZWRpcmVjdENyb3Nz
T3JpZ2luV2l0aEFjY2Vzc0NvbnRyb2xGYWlsdXJlKQogewotICAgIEdVUkwgdXJsID0gR1VSTCgi
aHR0cDovL3d3dy50ZXN0LmNvbS9SZWRpcmVjdENyb3NzT3JpZ2luV2l0aEFjY2Vzc0NvbnRyb2xG
YWlsdXJlLmh0bWwiKTsKKyAgICBXZWJDb3JlOjpLVVJMIHVybCA9IHRvS1VSTCgiaHR0cDovL3d3
dy50ZXN0LmNvbS9SZWRpcmVjdENyb3NzT3JpZ2luV2l0aEFjY2Vzc0NvbnRyb2xGYWlsdXJlLmh0
bWwiKTsKICAgICBjaGFyIHJlZGlyZWN0W10gPSAiaHR0cDovL3d3dy5vdGhlci5jb20vUmVkaXJl
Y3RDcm9zc09yaWdpbldpdGhBY2Nlc3NDb250cm9sRmFpbHVyZS5odG1sIjsgIC8vIENyb3NzLW9y
aWdpbgotICAgIEdVUkwgcmVkaXJlY3RVUkwgPSBHVVJMKHJlZGlyZWN0KTsKKyAgICBXZWJDb3Jl
OjpLVVJMIHJlZGlyZWN0VVJMID0gdG9LVVJMKHJlZGlyZWN0KTsKIAogICAgIFdlYlVSTFJlcXVl
c3QgcmVxdWVzdDsKICAgICByZXF1ZXN0LmluaXRpYWxpemUoKTsKQEAgLTQ2Nyw5ICs0NjgsOSBA
QCBURVNUX0YoQXNzb2NpYXRlZFVSTExvYWRlclRlc3QsIFJlZGlyZWN0Q3Jvc3NPcmlnaW5XaXRo
QWNjZXNzQ29udHJvbEZhaWx1cmUpCiAvLyBUZXN0IHRoYXQgYSBjcm9zcyBvcmlnaW4gcmVkaXJl
Y3QgcmVzcG9uc2Ugd2l0aCBDT1JTIGhlYWRlcnMgdGhhdCBhbGxvdyB0aGUgcmVxdWVzdGluZyBv
cmlnaW4gc3VjY2VlZHMuCiBURVNUX0YoQXNzb2NpYXRlZFVSTExvYWRlclRlc3QsIFJlZGlyZWN0
Q3Jvc3NPcmlnaW5XaXRoQWNjZXNzQ29udHJvbFN1Y2Nlc3MpCiB7Ci0gICAgR1VSTCB1cmwgPSBH
VVJMKCJodHRwOi8vd3d3LnRlc3QuY29tL1JlZGlyZWN0Q3Jvc3NPcmlnaW5XaXRoQWNjZXNzQ29u
dHJvbFN1Y2Nlc3MuaHRtbCIpOworICAgIFdlYkNvcmU6OktVUkwgdXJsID0gdG9LVVJMKCJodHRw
Oi8vd3d3LnRlc3QuY29tL1JlZGlyZWN0Q3Jvc3NPcmlnaW5XaXRoQWNjZXNzQ29udHJvbFN1Y2Nl
c3MuaHRtbCIpOwogICAgIGNoYXIgcmVkaXJlY3RbXSA9ICJodHRwOi8vd3d3Lm90aGVyLmNvbS9S
ZWRpcmVjdENyb3NzT3JpZ2luV2l0aEFjY2Vzc0NvbnRyb2xTdWNjZXNzLmh0bWwiOyAgLy8gQ3Jv
c3Mtb3JpZ2luCi0gICAgR1VSTCByZWRpcmVjdFVSTCA9IEdVUkwocmVkaXJlY3QpOworICAgIFdl
YkNvcmU6OktVUkwgcmVkaXJlY3RVUkwgPSB0b0tVUkwocmVkaXJlY3QpOwogCiAgICAgV2ViVVJM
UmVxdWVzdCByZXF1ZXN0OwogICAgIHJlcXVlc3QuaW5pdGlhbGl6ZSgpOwpAQCAtNTkwLDcgKzU5
MSw3IEBAIFRFU1RfRihBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdCwgQ3Jvc3NPcmlnaW5IZWFkZXJB
bGxvd1Jlc3BvbnNlSGVhZGVycykKIHsKICAgICBXZWJVUkxSZXF1ZXN0IHJlcXVlc3Q7CiAgICAg
cmVxdWVzdC5pbml0aWFsaXplKCk7Ci0gICAgR1VSTCB1cmwgPSBHVVJMKCJodHRwOi8vd3d3Lm90
aGVyLmNvbS9Dcm9zc09yaWdpbkhlYWRlckFsbG93UmVzcG9uc2VIZWFkZXJzLmh0bWwiKTsKKyAg
ICBXZWJDb3JlOjpLVVJMIHVybCA9IHRvS1VSTCgiaHR0cDovL3d3dy5vdGhlci5jb20vQ3Jvc3NP
cmlnaW5IZWFkZXJBbGxvd1Jlc3BvbnNlSGVhZGVycy5odG1sIik7CiAgICAgcmVxdWVzdC5zZXRV
UkwodXJsKTsKIAogICAgIFdlYlN0cmluZyBoZWFkZXJOYW1lU3RyaW5nKFdlYlN0cmluZzo6ZnJv
bVVURjgoIm5vbi13aGl0ZWxpc3RlZCIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvRXZlbnRMaXN0ZW5lclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9FdmVudExpc3RlbmVyVGVzdC5jcHAKaW5kZXggNzk5YWM0MDA3YzVjOTFlNjA0ZmM3
M2ZkNmRkOWMwMTIwYmE0Y2QyYS4uNDI1NTQ2OTUyNTFlYmMwN2YxZWMyYmNmYjYyY2M2NTZiNmMy
OTdkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9FdmVudExpc3Rl
bmVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9FdmVudExpc3Rl
bmVyVGVzdC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2lu
Y2x1ZGUgIkZyYW1lVGVzdEhlbHBlcnMuaCIKKyNpbmNsdWRlICJVUkxUZXN0SGVscGVycy5oIgog
I2luY2x1ZGUgIldlYkRPTUV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViRE9NRXZlbnRMaXN0ZW5lci5o
IgogI2luY2x1ZGUgIldlYkRPTU11dGF0aW9uRXZlbnQuaCIKQEAgLTc4LDcgKzc5LDcgQEAgcHVi
bGljOgogICAgICAgICBzdGQ6OnN0cmluZyBiYXNlVVJMKCJodHRwOi8vd3d3LmV4YW1wbGUuY29t
LyIpOwogICAgICAgICBzdGQ6OnN0cmluZyBmaWxlTmFtZSgibGlzdGVuZXIvbXV0YXRpb25fZXZl
bnRfbGlzdGVuZXIuaHRtbCIpOwogICAgICAgICBib29sIGV4ZWN1dGVTY3JpcHQgPSB0cnVlOwot
ICAgICAgICBGcmFtZVRlc3RIZWxwZXJzOjpyZWdpc3Rlck1vY2tlZFVSTExvYWQoYmFzZVVSTCwg
ZmlsZU5hbWUpOworICAgICAgICBVUkxUZXN0SGVscGVyczo6cmVnaXN0ZXJNb2NrZWRVUkxGcm9t
QmFzZVVSTChXZWJTdHJpbmc6OmZyb21VVEY4KGJhc2VVUkwuY19zdHIoKSksIFdlYlN0cmluZzo6
ZnJvbVVURjgoZmlsZU5hbWUuY19zdHIoKSkpOwogICAgICAgICBtX3dlYlZpZXcgPSBGcmFtZVRl
c3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChiYXNlVVJMICsgZmlsZU5hbWUsIGV4ZWN1
dGVTY3JpcHQpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9GcmFtZVRlc3RIZWxwZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
RnJhbWVUZXN0SGVscGVycy5jcHAKaW5kZXggZTQwNjQxM2RkOTVlYjMyYzNlMDJhYTM3NTI2YTMz
YzU3MzNkMjY5Yi4uYTJiMTY3NWMwOWJlZWI0NjQ2ZmRkMzAzM2FkM2JjODc0ZDI1YWQ5OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GcmFtZVRlc3RIZWxwZXJzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ZyYW1lVGVzdEhlbHBlcnMuY3Bw
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRnJhbWVU
ZXN0SGVscGVycy5oIgogCisjaW5jbHVkZSAiVVJMVGVzdEhlbHBlcnMuaCIKICNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJG
cmFtZUNsaWVudC5oIgpAQCAtNDAsMzUgKzQxLDE2IEBACiAjaW5jbHVkZSAicGxhdGZvcm0vV2Vi
VVJMUmVzcG9uc2UuaCIKICNpbmNsdWRlICJXZWJWaWV3LmgiCiAjaW5jbHVkZSAiV2ViVmlld0Ns
aWVudC5oIgotI2luY2x1ZGUgPGdvb2dsZXVybC9zcmMvZ3VybC5oPgogI2luY2x1ZGUgPHdlYmtp
dC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogbmFtZXNw
YWNlIEZyYW1lVGVzdEhlbHBlcnMgewogCi12b2lkIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZChjb25z
dCBzdGQ6OnN0cmluZyYgYmFzZSwgY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVOYW1lKQotewotICAg
IHJlZ2lzdGVyTW9ja2VkVVJMTG9hZChHVVJMKGJhc2UgKyBmaWxlTmFtZSksIGZpbGVOYW1lKTsK
LX0KLQotdm9pZCByZWdpc3Rlck1vY2tlZFVSTExvYWQoR1VSTCB1cmwsIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBmaWxlTmFtZSkKLXsKLSAgICBXZWJVUkxSZXNwb25zZSByZXNwb25zZTsKLSAgICByZXNw
b25zZS5pbml0aWFsaXplKCk7Ci0gICAgcmVzcG9uc2Uuc2V0TUlNRVR5cGUoInRleHQvaHRtbCIp
OwotCi0gICAgc3RkOjpzdHJpbmcgZmlsZVBhdGggPSB3ZWJraXRfc3VwcG9ydDo6R2V0V2ViS2l0
Um9vdERpcigpLnV0ZjgoKTsKLSAgICBmaWxlUGF0aCArPSAiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvZGF0YS8iOwotICAgIGZpbGVQYXRoICs9IGZpbGVOYW1lOwotCi0gICAgd2Via2l0
X3N1cHBvcnQ6OlJlZ2lzdGVyTW9ja2VkVVJMKHVybCwgcmVzcG9uc2UsIFdlYlN0cmluZzo6ZnJv
bVVURjgoZmlsZVBhdGgpKTsKLX0KLQogdm9pZCBsb2FkRnJhbWUoV2ViRnJhbWUqIGZyYW1lLCBj
b25zdCBzdGQ6OnN0cmluZyYgdXJsKQogewogICAgIFdlYlVSTFJlcXVlc3QgdXJsUmVxdWVzdDsK
ICAgICB1cmxSZXF1ZXN0LmluaXRpYWxpemUoKTsKLSAgICB1cmxSZXF1ZXN0LnNldFVSTChHVVJM
KHVybCkpOworICAgIHVybFJlcXVlc3Quc2V0VVJMKFVSTFRlc3RIZWxwZXJzOjp0b0tVUkwodXJs
KSk7CiAgICAgZnJhbWUtPmxvYWRSZXF1ZXN0KHVybFJlcXVlc3QpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ZyYW1lVGVzdEhlbHBlcnMuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRnJhbWVUZXN0SGVscGVycy5oCmluZGV4IGZjMmZhMmQz
NjFiMDFlMGI4YWIzMTAyZDYwZTcwNDJhMzBkMGUzOGMuLmJmYjU3YjY3Y2QyOTAxMGU4NjdjZDJi
ZTg1ZjEzNGVmY2ViN2Q5NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvRnJhbWVUZXN0SGVscGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
RnJhbWVUZXN0SGVscGVycy5oCkBAIC0zMyw4ICszMyw2IEBACiAKICNpbmNsdWRlIDxzdHJpbmc+
CiAKLWNsYXNzIEdVUkw7Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJGcmFtZTsK
QEAgLTQ0LDEwICs0Miw2IEBAIGNsYXNzIFdlYlZpZXdDbGllbnQ7CiAKIG5hbWVzcGFjZSBGcmFt
ZVRlc3RIZWxwZXJzIHsKIAotdm9pZCByZWdpc3Rlck1vY2tlZFVSTExvYWQoY29uc3Qgc3RkOjpz
dHJpbmcmIGJhc2UsIGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlTmFtZSk7Ci0vLyBMaWtlIHRoZSBw
cmV2aW91cyBvdmVybG9hZCwgYnV0IGl0IGFsbG93cyBtb3JlIGZsZXhpYmlsaXR5IGluIHRoZSB1
cmwgc2luY2UgaXQgaXMgZ2l2ZW4gYnkgdGhlIGNhbGxlci4KLXZvaWQgcmVnaXN0ZXJNb2NrZWRV
UkxMb2FkKEdVUkwsIGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlTmFtZSk7Ci0KIHZvaWQgbG9hZEZy
YW1lKFdlYkZyYW1lKiwgY29uc3Qgc3RkOjpzdHJpbmcmIHVybCk7CiAKIFdlYlZpZXcqIGNyZWF0
ZVdlYlZpZXdBbmRMb2FkKGNvbnN0IHN0ZDo6c3RyaW5nJiB1cmwsIGJvb2wgZW5hYmxlSmF2YXNj
cmlwdCA9IGZhbHNlLCBXZWJGcmFtZUNsaWVudCogPSAwLCBXZWJWaWV3Q2xpZW50KiA9IDApOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MaXN0ZW5lckxlYWtUZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGlzdGVuZXJMZWFrVGVzdC5jcHAK
aW5kZXggNWUzMjFjNzBkOGE2NzgwY2IzMjFlMDgwMmUzODlmOWUxZDU3ZTc4Ny4uYjBmNzAwYTBj
YjVkMmNjN2E0NDlkYTU3MDRlMTQxMjgxMTU2ODdlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9MaXN0ZW5lckxlYWtUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0xpc3RlbmVyTGVha1Rlc3QuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJGcmFtZVRlc3RIZWxwZXJzLmgiCisjaW5j
bHVkZSAiVVJMVGVzdEhlbHBlcnMuaCIKICNpbmNsdWRlICJXZWJWaWV3LmgiCiAjaW5jbHVkZSA8
Z3Rlc3QvZ3Rlc3QuaD4KICNpbmNsdWRlIDx2OC9pbmNsdWRlL3Y4LXByb2ZpbGVyLmg+CkBAIC05
MCw3ICs5MSw3IEBAIHB1YmxpYzoKICAgICAgICAgc3RkOjpzdHJpbmcgYmFzZVVSTCgiaHR0cDov
L3d3dy5leGFtcGxlLmNvbS8iKTsKICAgICAgICAgc3RkOjpzdHJpbmcgZmlsZU5hbWUoZmlsZW5h
bWUpOwogICAgICAgICBib29sIGV4ZWN1dGVTY3JpcHQgPSB0cnVlOwotICAgICAgICBGcmFtZVRl
c3RIZWxwZXJzOjpyZWdpc3Rlck1vY2tlZFVSTExvYWQoYmFzZVVSTCwgZmlsZU5hbWUpOworICAg
ICAgICBVUkxUZXN0SGVscGVyczo6cmVnaXN0ZXJNb2NrZWRVUkxGcm9tQmFzZVVSTChXZWJTdHJp
bmc6OmZyb21VVEY4KGJhc2VVUkwuY19zdHIoKSksIFdlYlN0cmluZzo6ZnJvbVVURjgoZmlsZU5h
bWUuY19zdHIoKSkpOwogICAgICAgICBtX3dlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVh
dGVXZWJWaWV3QW5kTG9hZChiYXNlVVJMICsgZmlsZU5hbWUsIGV4ZWN1dGVTY3JpcHQpOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Qb3B1cE1lbnVU
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUG9wdXBNZW51VGVzdC5jcHAK
aW5kZXggN2FjYjMxMTQ5NTcxZTc2ZmFkYjMxNGY2YmU5OTZiMzE2OWQ3NmI0YS4uMjRmYTAwM2I0
ZmVjNmRkOGQwMzM2NTg5MjkxMTBlNjFmYjM2MWUyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9Qb3B1cE1lbnVUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1BvcHVwTWVudVRlc3QuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVk
ZSAiUG9wdXBNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiUG9wdXBNZW51Q2hyb21pdW0uaCIKICNp
bmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCisjaW5jbHVkZSAiVVJMVGVzdEhlbHBl
cnMuaCIKICNpbmNsdWRlICJXZWJEb2N1bWVudC5oIgogI2luY2x1ZGUgIldlYkVsZW1lbnQuaCIK
ICNpbmNsdWRlICJXZWJGcmFtZS5oIgpAQCAtNjMsNiArNjQsNyBAQAogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBXZWJLaXQ6OlVSTFRl
c3RIZWxwZXJzOjp0b0tVUkw7CiAKIG5hbWVzcGFjZSB7CiAKQEAgLTI0OSwxNSArMjUxLDcgQEAg
cHJvdGVjdGVkOgogCiAgICAgdm9pZCByZWdpc3Rlck1vY2tlZFVSTExvYWQoY29uc3Qgc3RkOjpz
dHJpbmcmIGZpbGVOYW1lKQogICAgIHsKLSAgICAgICAgV2ViVVJMUmVzcG9uc2UgcmVzcG9uc2U7
Ci0gICAgICAgIHJlc3BvbnNlLmluaXRpYWxpemUoKTsKLSAgICAgICAgcmVzcG9uc2Uuc2V0TUlN
RVR5cGUoInRleHQvaHRtbCIpOwotCi0gICAgICAgIHN0ZDo6c3RyaW5nIGZpbGVQYXRoID0gd2Vi
a2l0X3N1cHBvcnQ6OkdldFdlYktpdFJvb3REaXIoKS51dGY4KCk7Ci0gICAgICAgIGZpbGVQYXRo
ICs9ICIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL3BvcHVwLyI7Ci0gICAgICAg
IGZpbGVQYXRoICs9IGZpbGVOYW1lOwotCi0gICAgICAgIHdlYmtpdF9zdXBwb3J0OjpSZWdpc3Rl
ck1vY2tlZFVSTChXZWJVUkwoR1VSTChiYXNlVVJMICsgZmlsZU5hbWUpKSwgcmVzcG9uc2UsIFdl
YlN0cmluZzo6ZnJvbVVURjgoZmlsZVBhdGgpKTsKKyAgICAgICAgVVJMVGVzdEhlbHBlcnM6OnJl
Z2lzdGVyTW9ja2VkVVJMRnJvbUJhc2VVUkwodG9LVVJMKGJhc2VVUkwgKyBmaWxlTmFtZSksIFdl
YlN0cmluZzo6ZnJvbVVURjgoZmlsZU5hbWUpLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJwb3B1cC8i
KSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgidGV4dC9odG1sIikpOwogICAgIH0KIAogICAgIHZvaWQg
c2VydmVSZXF1ZXN0cygpCkBAIC0yNjksNyArMjYzLDcgQEAgcHJvdGVjdGVkOgogICAgIHsKICAg
ICAgICAgV2ViVVJMUmVxdWVzdCB1cmxSZXF1ZXN0OwogICAgICAgICB1cmxSZXF1ZXN0LmluaXRp
YWxpemUoKTsKLSAgICAgICAgdXJsUmVxdWVzdC5zZXRVUkwoV2ViVVJMKEdVUkwoYmFzZVVSTCAr
IGZpbGVOYW1lKSkpOworICAgICAgICB1cmxSZXF1ZXN0LnNldFVSTChXZWJVUkwodG9LVVJMKGJh
c2VVUkwgKyBmaWxlTmFtZSkpKTsKICAgICAgICAgZnJhbWUtPmxvYWRSZXF1ZXN0KHVybFJlcXVl
c3QpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9S
dW5BbGxUZXN0cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1J1bkFsbFRlc3Rz
LmNwcAppbmRleCBkYzA1MjgyNTcxYTdjNjg4Y2RiMjA4OTU2YzM1NGU2M2EzM2EzYzNjLi41Zjcx
YjZkOGIxYWY3NzlmODI1MzU1OTUxZmI5ZTAwOWE4OWQyZjgzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1J1bkFsbFRlc3RzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL1J1bkFsbFRlc3RzLmNwcApAQCAtMjgsNiArMjgsOCBAQAogICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCisjaW5jbHVkZSAiY29uZmlnLmgiCisKIC8vIEZJWE1FOiBBdm9pZCB0
aGlzIHNvdXJjZSBkZXBlbmRlbmN5IG9uIENocm9taXVtJ3MgYmFzZSBtb2R1bGUuCiAjaW5jbHVk
ZSA8YmFzZS90ZXN0L3Rlc3Rfc3VpdGUuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9VUkxUZXN0SGVscGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1VSTFRlc3RIZWxwZXJzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMmU2MDM5ZDFlMTFmNGQ4NmVi
MWI2Y2YyYTk1Zjg3Njg0YzI3NjJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9VUkxUZXN0SGVscGVycy5jcHAKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJVUkxUZXN0SGVscGVycy5oIgorCisjaW5jbHVkZSAicGxh
dGZvcm0vV2ViVVJMUmVzcG9uc2UuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViU3RyaW5nLmg+Cisj
aW5jbHVkZSA8cHVibGljL1dlYlVSTC5oPgorI2luY2x1ZGUgPHdlYmtpdC9zdXBwb3J0L3dlYmtp
dF9zdXBwb3J0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworbmFtZXNwYWNlIFVSTFRlc3RIZWxw
ZXJzIHsKKwordm9pZCByZWdpc3Rlck1vY2tlZFVSTEZyb21CYXNlVVJMKGNvbnN0IFdlYlN0cmlu
ZyYgYmFzZVVSTCwgY29uc3QgV2ViU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgV2ViU3RyaW5nJiBt
aW1lVHlwZSkKK3sKKyAgICAvLyBmdWxsVVJMID0gYmFzZVVSTCArIGZpbGVOYW1lLgorICAgIHN0
ZDo6c3RyaW5nIGZ1bGxTdHJpbmcgPSBzdGQ6OnN0cmluZyhiYXNlVVJMLnV0ZjgoKS5kYXRhKCkp
ICsgc3RkOjpzdHJpbmcoZmlsZU5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgcmVnaXN0ZXJNb2Nr
ZWRVUkxMb2FkKHRvS1VSTChmdWxsU3RyaW5nLmNfc3RyKCkpLCBmaWxlTmFtZSwgV2ViU3RyaW5n
Ojpmcm9tVVRGOCgiIiksIG1pbWVUeXBlKTsKK30KKwordm9pZCByZWdpc3Rlck1vY2tlZFVSTExv
YWQoY29uc3QgV2ViVVJMJiBmdWxsVVJMLCBjb25zdCBXZWJTdHJpbmcmIGZpbGVOYW1lLCBjb25z
dCBXZWJTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZChmdWxs
VVJMLCBmaWxlTmFtZSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgiIiksIG1pbWVUeXBlKTsKK30KKwor
dm9pZCByZWdpc3Rlck1vY2tlZFVSTExvYWQoY29uc3QgV2ViVVJMJiBmdWxsVVJMLCBjb25zdCBX
ZWJTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBXZWJTdHJpbmcmIHJlbGF0aXZlQmFzZURpcmVjdG9y
eSwgY29uc3QgV2ViU3RyaW5nJiBtaW1lVHlwZSkKK3sKKyAgICBXZWJVUkxSZXNwb25zZSByZXNw
b25zZTsKKyAgICByZXNwb25zZS5pbml0aWFsaXplKCk7CisgICAgcmVzcG9uc2Uuc2V0TUlNRVR5
cGUobWltZVR5cGUpOworICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2RlKDIwMCk7CisKKyAg
ICAvLyBQaHlzaWNhbCBmaWxlIHBhdGggZm9yIHRoZSBtb2NrID0gPHdlYmtpdFJvb3REaXI+ICsg
cmVsYXRpdmVCYXNlRGlyZWN0b3J5ICsgZmlsZU5hbWUuCisgICAgc3RkOjpzdHJpbmcgZmlsZVBh
dGggPSBzdGQ6OnN0cmluZyh3ZWJraXRfc3VwcG9ydDo6R2V0V2ViS2l0Um9vdERpcigpLnV0Zjgo
KS5kYXRhKCkpOworICAgIGZpbGVQYXRoLmFwcGVuZCgiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvZGF0YS8iKTsKKyAgICBmaWxlUGF0aC5hcHBlbmQoc3RkOjpzdHJpbmcocmVsYXRpdmVC
YXNlRGlyZWN0b3J5LnV0ZjgoKS5kYXRhKCkpKTsKKyAgICBmaWxlUGF0aC5hcHBlbmQoc3RkOjpz
dHJpbmcoZmlsZU5hbWUudXRmOCgpLmRhdGEoKSkpOworCisgICAgd2Via2l0X3N1cHBvcnQ6OlJl
Z2lzdGVyTW9ja2VkVVJMKGZ1bGxVUkwsIHJlc3BvbnNlLCBXZWJTdHJpbmc6OmZyb21VVEY4KGZp
bGVQYXRoLmNfc3RyKCkpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVVJMVGVzdEhlbHBlcnMKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9VUkxUZXN0SGVscGVycy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9VUkxU
ZXN0SGVscGVycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiOWZiMDBiYjJmOTRkNTRhYTc0NjFhZDg2MzI2MDI3
M2JkMzhhMDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L1VSTFRlc3RIZWxwZXJzLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVVJMVGVzdEhlbHBlcnNf
aAorI2RlZmluZSBVUkxUZXN0SGVscGVyc19oCisKKyNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVk
ZSA8cHVibGljL1dlYlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2Vi
VVJMOworCituYW1lc3BhY2UgVVJMVGVzdEhlbHBlcnMgeworCitpbmxpbmUgV2ViQ29yZTo6S1VS
TCB0b0tVUkwoY29uc3Qgc3RkOjpzdHJpbmcmIHVybCkKK3sKKyAgICBXVEY6OlN0cmluZyB3dGZT
dHJpbmcodXJsLmNfc3RyKCkpOworICAgIHJldHVybiBXZWJDb3JlOjpLVVJMKFdlYkNvcmU6OlBh
cnNlZFVSTFN0cmluZywgd3RmU3RyaW5nKTsKK30KKworLy8gSGVscGVyIGZ1bmN0aW9ucyBmb3Ig
bW9jayBVUkxzLiBUaGVzZSBmdW5jdGlvbnMgc2V0IHVwIHRoZSBkZXNpcmVkIFVSTCBhbmQgbWlt
ZVR5cGUsIHdpdGggYSAyMDAgT0sgcmV0dXJuIHN0YXR1cy4KKy8vIEZvciB0aGUgbW9jayBVUkws
IGZ1bGxVUkwgPT0gYmFzZVVSTCArIGZpbGVOYW1lLgorLy8gRm9yIHRoZSBhY3R1YWwgZmlsZSBw
YXRoOiAgPFdlYktpdCByb290IGRpcmVjdG9yeT4gKyByZWxhdGl2ZUJhc2VEaXJlY3RvcnkgKyBm
aWxlTmFtZSwKKy8vIG9yLCBpZiB0aGUgcmVsYXRpdmUgYmFzZSBkaXJlY3RvcnkgaXMgbm90IHNw
ZWNpZmllZDogIDxXZWJLaXQgcm9vdCBkaXJlY3Rvcnk+ICsgZmlsZU5hbWUuCisvLwordm9pZCBy
ZWdpc3Rlck1vY2tlZFVSTEZyb21CYXNlVVJMKGNvbnN0IFdlYlN0cmluZyYgYmFzZVVSTCwgY29u
c3QgV2ViU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgV2ViU3RyaW5nJiBtaW1lVHlwZSA9IFdlYlN0
cmluZzo6ZnJvbVVURjgoInRleHQvaHRtbCIpKTsKK3ZvaWQgcmVnaXN0ZXJNb2NrZWRVUkxMb2Fk
KGNvbnN0IFdlYlVSTCYgZnVsbFVSTCwgY29uc3QgV2ViU3RyaW5nJiBmaWxlTmFtZSwgY29uc3Qg
V2ViU3RyaW5nJiBtaW1lVHlwZSA9IFdlYlN0cmluZzo6ZnJvbVVURjgoInRleHQvaHRtbCIpKTsK
K3ZvaWQgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKGNvbnN0IFdlYlVSTCYgZnVsbFVSTCwgY29uc3Qg
V2ViU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgV2ViU3RyaW5nJiByZWxhdGl2ZUJhc2VEaXJlY3Rv
cnksIGNvbnN0IFdlYlN0cmluZyYgbWltZVR5cGUpOworCit9IC8vIG5hbWVzcGFjZSBVUkxUZXN0
SGVscGVycworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3BwCmluZGV4IDRlMmIwYzVlYTA2YjllNjEx
MTdlYjgxNzJiMmEwZDRlYjU1YzJjMjguLmVlMzg0MTdjYzViNTNkYzk4NDcwZjc4MmE4ZDVlOGFm
MzE0MWUzMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViRnJh
bWVUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVz
dC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJGcmFtZVRlc3RIZWxwZXJzLmgiCiAj
aW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgorI2luY2x1
ZGUgIlVSTFRlc3RIZWxwZXJzLmgiCiAjaW5jbHVkZSAiV2ViRGF0YVNvdXJjZS5oIgogI2luY2x1
ZGUgIldlYkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiV2ViRmluZE9wdGlvbnMuaCIKQEAgLTU1LDYg
KzU2LDcgQEAKICNpbmNsdWRlIDx3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oPgogCiB1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgV2ViS2l0OjpVUkxUZXN0SGVscGVyczo6dG9L
VVJMOwogCiBuYW1lc3BhY2UgewogCkBAIC03MywxMiArNzUsMTIgQEAgcHVibGljOgogCiAgICAg
dm9pZCByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlTmFt
ZSkKICAgICB7Ci0gICAgICAgIEZyYW1lVGVzdEhlbHBlcnM6OnJlZ2lzdGVyTW9ja2VkVVJMTG9h
ZChtX2Jhc2VVUkwsIGZpbGVOYW1lKTsKKyAgICAgICAgVVJMVGVzdEhlbHBlcnM6OnJlZ2lzdGVy
TW9ja2VkVVJMRnJvbUJhc2VVUkwoV2ViU3RyaW5nOjpmcm9tVVRGOChtX2Jhc2VVUkwuY19zdHIo
KSksIFdlYlN0cmluZzo6ZnJvbVVURjgoZmlsZU5hbWUuY19zdHIoKSkpOwogICAgIH0KIAogICAg
IHZvaWQgcmVnaXN0ZXJNb2NrZWRDaHJvbWVVUkxMb2FkKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxl
TmFtZSkKICAgICB7Ci0gICAgICAgIEZyYW1lVGVzdEhlbHBlcnM6OnJlZ2lzdGVyTW9ja2VkVVJM
TG9hZChtX2Nocm9tZVVSTCwgZmlsZU5hbWUpOworICAgICAgICBVUkxUZXN0SGVscGVyczo6cmVn
aXN0ZXJNb2NrZWRVUkxGcm9tQmFzZVVSTChXZWJTdHJpbmc6OmZyb21VVEY4KG1fY2hyb21lVVJM
LmNfc3RyKCkpLCBXZWJTdHJpbmc6OmZyb21VVEY4KGZpbGVOYW1lLmNfc3RyKCkpKTsKICAgICB9
CiAKIHByb3RlY3RlZDoKQEAgLTk2LDcgKzk4LDcgQEAgVEVTVF9GKFdlYkZyYW1lVGVzdCwgQ29u
dGVudFRleHQpCiAgICAgV2ViVmlldyogd2ViVmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0
ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJpZnJhbWVzX3Rlc3QuaHRtbCIpOwogCiAgICAg
Ly8gTm93IHJldHJpZXZlIHRoZSBmcmFtZXMgdGV4dCBhbmQgdGVzdCBpdCBvbmx5IGluY2x1ZGVz
IHZpc2libGUgZWxlbWVudHMuCi0gICAgc3RkOjpzdHJpbmcgY29udGVudCA9IHdlYlZpZXctPm1h
aW5GcmFtZSgpLT5jb250ZW50QXNUZXh0KDEwMjQpLnV0ZjgoKTsKKyAgICBzdGQ6OnN0cmluZyBj
b250ZW50ID0gc3RkOjpzdHJpbmcod2ViVmlldy0+bWFpbkZyYW1lKCktPmNvbnRlbnRBc1RleHQo
MTAyNCkudXRmOCgpLmRhdGEoKSk7CiAgICAgRVhQRUNUX05FKHN0ZDo6c3RyaW5nOjpucG9zLCBj
b250ZW50LmZpbmQoIiB2aXNpYmxlIHBhcmFncmFwaCIpKTsKICAgICBFWFBFQ1RfTkUoc3RkOjpz
dHJpbmc6Om5wb3MsIGNvbnRlbnQuZmluZCgiIHZpc2libGUgaWZyYW1lIikpOwogICAgIEVYUEVD
VF9FUShzdGQ6OnN0cmluZzo6bnBvcywgY29udGVudC5maW5kKCIgaW52aXNpYmxlIHBhcmFyYXBo
IikpOwpAQCAtMTU2LDcgKzE1OCw3IEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIENocm9tZVBhZ2VK
YXZhc2NyaXB0KQogICAgIHdlYlZpZXctPmxheW91dCgpOwogCiAgICAgLy8gTm93IHJldHJpZXZl
IHRoZSBmcmFtZSdzIHRleHQgYW5kIGVuc3VyZSBpdCB3YXMgbW9kaWZpZWQgYnkgcnVubmluZyBq
YXZhc2NyaXB0LgotICAgIHN0ZDo6c3RyaW5nIGNvbnRlbnQgPSB3ZWJWaWV3LT5tYWluRnJhbWUo
KS0+Y29udGVudEFzVGV4dCgxMDI0KS51dGY4KCk7CisgICAgc3RkOjpzdHJpbmcgY29udGVudCA9
IHN0ZDo6c3RyaW5nKHdlYlZpZXctPm1haW5GcmFtZSgpLT5jb250ZW50QXNUZXh0KDEwMjQpLnV0
ZjgoKS5kYXRhKCkpOwogICAgIEVYUEVDVF9ORShzdGQ6OnN0cmluZzo6bnBvcywgY29udGVudC5m
aW5kKCJDbG9iYmVyZWQiKSk7CiB9CiAKQEAgLTE3NSw3ICsxNzcsNyBAQCBURVNUX0YoV2ViRnJh
bWVUZXN0LCBDaHJvbWVQYWdlTm9KYXZhc2NyaXB0KQogICAgIHdlYlZpZXctPmxheW91dCgpOwog
CiAgICAgLy8gTm93IHJldHJpZXZlIHRoZSBmcmFtZSdzIHRleHQgYW5kIGVuc3VyZSBpdCB3YXNu
J3QgbW9kaWZpZWQgYnkgcnVubmluZyBqYXZhc2NyaXB0LgotICAgIHN0ZDo6c3RyaW5nIGNvbnRl
bnQgPSB3ZWJWaWV3LT5tYWluRnJhbWUoKS0+Y29udGVudEFzVGV4dCgxMDI0KS51dGY4KCk7Cisg
ICAgc3RkOjpzdHJpbmcgY29udGVudCA9IHN0ZDo6c3RyaW5nKHdlYlZpZXctPm1haW5GcmFtZSgp
LT5jb250ZW50QXNUZXh0KDEwMjQpLnV0ZjgoKS5kYXRhKCkpOwogICAgIEVYUEVDVF9FUShzdGQ6
OnN0cmluZzo6bnBvcywgY29udGVudC5maW5kKCJDbG9iYmVyZWQiKSk7CiB9CiAKQEAgLTE4Nyw3
ICsxODksNyBAQCBURVNUX0YoV2ViRnJhbWVUZXN0LCBEaXNwYXRjaE1lc3NhZ2VFdmVudFdpdGhP
cmlnaW5DaGVjaykKICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6Y3Jl
YXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJMICsgInBvc3RtZXNzYWdlX3Rlc3QuaHRtbCIsIHRy
dWUpOwogICAgIAogICAgIC8vIFNlbmQgYSBtZXNzYWdlIHdpdGggdGhlIGNvcnJlY3Qgb3JpZ2lu
LgotICAgIFdlYlNlY3VyaXR5T3JpZ2luIGNvcnJlY3RPcmlnaW4oV2ViU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZShHVVJMKG1fYmFzZVVSTCkpKTsKKyAgICBXZWJTZWN1cml0eU9yaWdpbiBjb3JyZWN0
T3JpZ2luKFdlYlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodG9LVVJMKG1fYmFzZVVSTCkpKTsKICAg
ICBXZWJET01FdmVudCBldmVudCA9IHdlYlZpZXctPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpLmNy
ZWF0ZUV2ZW50KCJNZXNzYWdlRXZlbnQiKTsKICAgICBXZWJET01NZXNzYWdlRXZlbnQgbWVzc2Fn
ZSA9IGV2ZW50LnRvPFdlYkRPTU1lc3NhZ2VFdmVudD4oKTsKICAgICBXZWJTZXJpYWxpemVkU2Ny
aXB0VmFsdWUgZGF0YShXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmZyb21TdHJpbmcoImZvbyIp
KTsKQEAgLTE5NSwxNCArMTk3LDE0IEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIERpc3BhdGNoTWVz
c2FnZUV2ZW50V2l0aE9yaWdpbkNoZWNrKQogICAgIHdlYlZpZXctPm1haW5GcmFtZSgpLT5kaXNw
YXRjaE1lc3NhZ2VFdmVudFdpdGhPcmlnaW5DaGVjayhjb3JyZWN0T3JpZ2luLCBtZXNzYWdlKTsK
IAogICAgIC8vIFNlbmQgYW5vdGhlciBtZXNzYWdlIHdpdGggaW5jb3JyZWN0IG9yaWdpbi4KLSAg
ICBXZWJTZWN1cml0eU9yaWdpbiBpbmNvcnJlY3RPcmlnaW4oV2ViU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZShHVVJMKG1fY2hyb21lVVJMKSkpOworICAgIFdlYlNlY3VyaXR5T3JpZ2luIGluY29ycmVj
dE9yaWdpbihXZWJTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHRvS1VSTChtX2Nocm9tZVVSTCkpKTsK
ICAgICB3ZWJWaWV3LT5tYWluRnJhbWUoKS0+ZGlzcGF0Y2hNZXNzYWdlRXZlbnRXaXRoT3JpZ2lu
Q2hlY2soaW5jb3JyZWN0T3JpZ2luLCBtZXNzYWdlKTsKIAogICAgIC8vIFJlcXVpcmVkIHRvIHNl
ZSBhbnkgdXBkYXRlcyBpbiBjb250ZW50QXNUZXh0LgogICAgIHdlYlZpZXctPmxheW91dCgpOwog
CiAgICAgLy8gVmVyaWZ5IHRoYXQgb25seSB0aGUgZmlyc3QgYWRkaXRpb24gaXMgaW4gdGhlIGJv
ZHkgb2YgdGhlIHBhZ2UuCi0gICAgc3RkOjpzdHJpbmcgY29udGVudCA9IHdlYlZpZXctPm1haW5G
cmFtZSgpLT5jb250ZW50QXNUZXh0KDEwMjQpLnV0ZjgoKTsKKyAgICBzdGQ6OnN0cmluZyBjb250
ZW50ID0gc3RkOjpzdHJpbmcod2ViVmlldy0+bWFpbkZyYW1lKCktPmNvbnRlbnRBc1RleHQoMTAy
NCkudXRmOCgpLmRhdGEoKSk7CiAgICAgRVhQRUNUX05FKHN0ZDo6c3RyaW5nOjpucG9zLCBjb250
ZW50LmZpbmQoIk1lc3NhZ2UgMS4iKSk7CiAgICAgRVhQRUNUX0VRKHN0ZDo6c3RyaW5nOjpucG9z
LCBjb250ZW50LmZpbmQoIk1lc3NhZ2UgMi4iKSk7CiB9CkBAIC00MzUsOCArNDM3LDggQEAgVEVT
VF9GKFdlYkZyYW1lVGVzdCwgSWZyYW1lUmVkaXJlY3QpCiAgICAgV2ViVmVjdG9yPFdlYlVSTD4g
cmVkaXJlY3RzOwogICAgIGlmcmFtZURhdGFTb3VyY2UtPnJlZGlyZWN0Q2hhaW4ocmVkaXJlY3Rz
KTsKICAgICBBU1NFUlRfRVEoMlUsIHJlZGlyZWN0cy5zaXplKCkpOwotICAgIEVYUEVDVF9FUShH
VVJMKCJhYm91dDpibGFuayIpLCBHVVJMKHJlZGlyZWN0c1swXSkpOwotICAgIEVYUEVDVF9FUShH
VVJMKCJodHRwOi8vd3d3LnRlc3QuY29tL3Zpc2libGVfaWZyYW1lLmh0bWwiKSwgR1VSTChyZWRp
cmVjdHNbMV0pKTsKKyAgICBFWFBFQ1RfRVEodG9LVVJMKCJhYm91dDpibGFuayIpLCB0b0tVUkwo
cmVkaXJlY3RzWzBdLnNwZWMoKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEodG9LVVJMKCJodHRw
Oi8vd3d3LnRlc3QuY29tL3Zpc2libGVfaWZyYW1lLmh0bWwiKSwgdG9LVVJMKHJlZGlyZWN0c1sx
XS5zcGVjKCkuZGF0YSgpKSk7CiAKICAgICB3ZWJWaWV3LT5jbG9zZSgpOwogfQpAQCAtNjk3LDE5
ICs2OTksMTkgQEAgVEVTVF9GKFdlYkZyYW1lVGVzdCwgR2V0Q29udGVudEFzUGxhaW5UZXh0KQog
CiAgICAgLy8gR2VuZXJhdGUgYSBzaW1wbGUgdGVzdCBjYXNlLgogICAgIGNvbnN0IGNoYXIgc2lt
cGxlU291cmNlW10gPSAiPGRpdj5Gb28gYmFyPC9kaXY+PGRpdj48L2Rpdj5iYXoiOwotICAgIEdV
UkwgdGVzdFVSTCgiYWJvdXQ6YmxhbmsiKTsKKyAgICBXZWJDb3JlOjpLVVJMIHRlc3RVUkwgPSB0
b0tVUkwoImFib3V0OmJsYW5rIik7CiAgICAgZnJhbWUtPmxvYWRIVE1MU3RyaW5nKHNpbXBsZVNv
dXJjZSwgdGVzdFVSTCk7CiAgICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRpbmdNZXNzYWdl
cygpOwogCiAgICAgLy8gTWFrZSBzdXJlIGl0IGNvbWVzIG91dCBPSy4KICAgICBjb25zdCBzdGQ6
OnN0cmluZyBleHBlY3RlZCgiRm9vIGJhclxuYmF6Iik7CiAgICAgV2ViU3RyaW5nIHRleHQgPSBm
cmFtZS0+Y29udGVudEFzVGV4dChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsK
LSAgICBFWFBFQ1RfRVEoZXhwZWN0ZWQsIHN0ZDo6c3RyaW5nKHRleHQudXRmOCgpKSk7CisgICAg
RVhQRUNUX0VRKGV4cGVjdGVkLCBzdGQ6OnN0cmluZyh0ZXh0LnV0ZjgoKS5kYXRhKCkpKTsKIAog
ICAgIC8vIFRyeSByZWFkaW5nIHRoZSBzYW1lIG9uZSB3aXRoIGNsaXBwaW5nIG9mIHRoZSB0ZXh0
LgogICAgIGNvbnN0IGludCBsZW5ndGggPSA1OwogICAgIHRleHQgPSBmcmFtZS0+Y29udGVudEFz
VGV4dChsZW5ndGgpOwotICAgIEVYUEVDVF9FUShleHBlY3RlZC5zdWJzdHIoMCwgbGVuZ3RoKSwg
c3RkOjpzdHJpbmcodGV4dC51dGY4KCkpKTsKKyAgICBFWFBFQ1RfRVEoZXhwZWN0ZWQuc3Vic3Ry
KDAsIGxlbmd0aCksIHN0ZDo6c3RyaW5nKHRleHQudXRmOCgpLmRhdGEoKSkpOwogCiAgICAgLy8g
Tm93IGRvIGEgbmV3IHRlc3Qgd2l0aCBhIHN1YmZyYW1lLgogICAgIGNvbnN0IGNoYXIgb3V0ZXJG
cmFtZVNvdXJjZVtdID0gIkhlbGxvPGlmcmFtZT48L2lmcmFtZT4gd29ybGQiOwpAQCAtNzIzLDEy
ICs3MjUsMTIgQEAgVEVTVF9GKFdlYkZyYW1lVGVzdCwgR2V0Q29udGVudEFzUGxhaW5UZXh0KQog
ICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5BbGxQZW5kaW5nTWVzc2FnZXMoKTsKIAogICAgIHRleHQg
PSBmcmFtZS0+Y29udGVudEFzVGV4dChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgp
KTsKLSAgICBFWFBFQ1RfRVEoIkhlbGxvIHdvcmxkXG5cbnN1YlxudGV4dCIsIHN0ZDo6c3RyaW5n
KHRleHQudXRmOCgpKSk7CisgICAgRVhQRUNUX0VRKCJIZWxsbyB3b3JsZFxuXG5zdWJcbnRleHQi
LCBzdGQ6OnN0cmluZyh0ZXh0LnV0ZjgoKS5kYXRhKCkpKTsKIAogICAgIC8vIEdldCB0aGUgZnJh
bWUgdGV4dCB3aGVyZSB0aGUgc3ViZnJhbWUgc2VwYXJhdG9yIGZhbGxzIG9uIHRoZSBib3VuZGFy
eSBvZgogICAgIC8vIHdoYXQgd2UnbGwgdGFrZS4gVGhlcmUgdXNlZCB0byBiZSBhIGNyYXNoIGlu
IHRoaXMgY2FzZS4KICAgICB0ZXh0ID0gZnJhbWUtPmNvbnRlbnRBc1RleHQoMTIpOwotICAgIEVY
UEVDVF9FUSgiSGVsbG8gd29ybGQiLCBzdGQ6OnN0cmluZyh0ZXh0LnV0ZjgoKSkpOworICAgIEVY
UEVDVF9FUSgiSGVsbG8gd29ybGQiLCBzdGQ6OnN0cmluZyh0ZXh0LnV0ZjgoKS5kYXRhKCkpKTsK
IAogICAgIHdlYlZpZXctPmNsb3NlKCk7CiB9CkBAIC03NDAsMjMgKzc0MiwyMyBAQCBURVNUX0Yo
V2ViRnJhbWVUZXN0LCBHZXRGdWxsSHRtbE9mUGFnZSkKIAogICAgIC8vIEdlbmVyYXRlIGEgc2lt
cGxlIHRlc3QgY2FzZS4KICAgICBjb25zdCBjaGFyIHNpbXBsZVNvdXJjZVtdID0gIjxwPkhlbGxv
PC9wPjxwPldvcmxkPC9wPiI7Ci0gICAgR1VSTCB0ZXN0VVJMKCJhYm91dDpibGFuayIpOworICAg
IFdlYkNvcmU6OktVUkwgdGVzdFVSTCA9IHRvS1VSTCgiYWJvdXQ6YmxhbmsiKTsKICAgICBmcmFt
ZS0+bG9hZEhUTUxTdHJpbmcoc2ltcGxlU291cmNlLCB0ZXN0VVJMKTsKICAgICB3ZWJraXRfc3Vw
cG9ydDo6UnVuQWxsUGVuZGluZ01lc3NhZ2VzKCk7CiAKICAgICBXZWJTdHJpbmcgdGV4dCA9IGZy
YW1lLT5jb250ZW50QXNUZXh0KHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOwot
ICAgIEVYUEVDVF9FUSgiSGVsbG9cblxuV29ybGQiLCBzdGQ6OnN0cmluZyh0ZXh0LnV0ZjgoKSkp
OworICAgIEVYUEVDVF9FUSgiSGVsbG9cblxuV29ybGQiLCBzdGQ6OnN0cmluZyh0ZXh0LnV0Zjgo
KS5kYXRhKCkpKTsKIAotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGh0bWwgPSBmcmFtZS0+Y29udGVu
dEFzTWFya3VwKCkudXRmOCgpOworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGh0bWwgPSBzdGQ6OnN0
cmluZyhmcmFtZS0+Y29udGVudEFzTWFya3VwKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICAvLyBM
b2FkIGFnYWluIHdpdGggdGhlIG91dHB1dCBodG1sLgotICAgIGZyYW1lLT5sb2FkSFRNTFN0cmlu
ZyhodG1sLCB0ZXN0VVJMKTsKKyAgICBmcmFtZS0+bG9hZEhUTUxTdHJpbmcoV2ViRGF0YShodG1s
LmNfc3RyKCksIGh0bWwubGVuZ3RoKCkpLCB0ZXN0VVJMKTsKICAgICB3ZWJraXRfc3VwcG9ydDo6
UnVuQWxsUGVuZGluZ01lc3NhZ2VzKCk7CiAKLSAgICBFWFBFQ1RfRVEoaHRtbCwgc3RkOjpzdHJp
bmcoZnJhbWUtPmNvbnRlbnRBc01hcmt1cCgpLnV0ZjgoKSkpOworICAgIEVYUEVDVF9FUShodG1s
LCBzdGQ6OnN0cmluZyhmcmFtZS0+Y29udGVudEFzTWFya3VwKCkudXRmOCgpLmRhdGEoKSkpOwog
CiAgICAgdGV4dCA9IGZyYW1lLT5jb250ZW50QXNUZXh0KHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6
ZV90Pjo6bWF4KCkpOwotICAgIEVYUEVDVF9FUSgiSGVsbG9cblxuV29ybGQiLCBzdGQ6OnN0cmlu
Zyh0ZXh0LnV0ZjgoKSkpOworICAgIEVYUEVDVF9FUSgiSGVsbG9cblxuV29ybGQiLCBzdGQ6OnN0
cmluZyh0ZXh0LnV0ZjgoKS5kYXRhKCkpKTsKIAogICAgIC8vIFRlc3Qgc2VsZWN0aW9uIGNoZWNr
CiAgICAgRVhQRUNUX0ZBTFNFKGZyYW1lLT5oYXNTZWxlY3Rpb24oKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlBhZ2VOZXdTZXJpYWxpemVyVGVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlBhZ2VOZXdTZXJpYWxpemVyVGVzdC5j
cHAKaW5kZXggNWMzYmE5OGEwNWI4OWU2MTFjYTE2MDk0Y2VlYjMxYjRkYTY3NTYzYi4uM2VhNGZj
ZjllYjY0NzRiMDA0MGRkY2ViOGVmZGU0ZGEyZmU3NTJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9XZWJQYWdlTmV3U2VyaWFsaXplclRlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViUGFnZU5ld1NlcmlhbGl6ZXJUZXN0LmNwcApA
QCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKKyNpbmNsdWRlICJVUkxU
ZXN0SGVscGVycy5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVD
bGllbnQuaCIKICNpbmNsdWRlICJXZWJQYWdlU2VyaWFsaXplci5oIgpAQCAtNDEsMTEgKzQyLDEy
IEBACiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViVVJMUmVzcG9uc2UuaCIKICNpbmNsdWRlICJXZWJW
aWV3LmgiCiAKLSNpbmNsdWRlIDxnb29nbGV1cmwvc3JjL2d1cmwuaD4KICNpbmNsdWRlIDxndGVz
dC9ndGVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBXZWJLaXQ6OlVSTFRlc3RIZWxwZXJzOjp0
b0tVUkw7Cit1c2luZyBXZWJLaXQ6OlVSTFRlc3RIZWxwZXJzOjpyZWdpc3Rlck1vY2tlZFVSTExv
YWQ7CiAKIG5hbWVzcGFjZSB7CiAKQEAgLTExMCw0MSArMTEyLDI5IEBAIHByb3RlY3RlZDoKICAg
ICAgICAgbV93ZWJWaWV3LT5jbG9zZSgpOwogICAgIH0KIAotICAgIHZvaWQgcmVnaXN0ZXJNb2Nr
ZWRVUkxMb2FkKGNvbnN0IFdlYlVSTCYgdXJsLCBjb25zdCBXZWJTdHJpbmcmIGZpbGVOYW1lLCBj
b25zdCBXZWJTdHJpbmcmIG1pbWVUeXBlKQotICAgIHsKLSAgICAgICAgV2ViVVJMUmVzcG9uc2Ug
cmVzcG9uc2U7Ci0gICAgICAgIHJlc3BvbnNlLmluaXRpYWxpemUoKTsKLSAgICAgICAgcmVzcG9u
c2Uuc2V0TUlNRVR5cGUobWltZVR5cGUpOwotICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVz
Q29kZSgyMDApOwotICAgICAgICBzdGQ6OnN0cmluZyBmaWxlUGF0aCA9IHdlYmtpdF9zdXBwb3J0
OjpHZXRXZWJLaXRSb290RGlyKCkudXRmOCgpOwotICAgICAgICBmaWxlUGF0aC5hcHBlbmQoIi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvcGFnZXNlcmlhbGl6ZXIvIik7Ci0gICAg
ICAgIGZpbGVQYXRoLmFwcGVuZChmaWxlTmFtZS51dGY4KCkpOwotICAgICAgICB3ZWJraXRfc3Vw
cG9ydDo6UmVnaXN0ZXJNb2NrZWRVUkwodXJsLCByZXNwb25zZSwgV2ViU3RyaW5nOjpmcm9tVVRG
OChmaWxlUGF0aCkpOwotICAgIH0KLQogICAgIFdlYlVSTCBzZXRVcENTU1Rlc3RQYWdlKCkKICAg
ICB7Ci0gICAgICAgIFdlYlVSTCB0b3BGcmFtZVVSTCA9IEdVUkwoImh0dHA6Ly93d3cudGVzdC5j
b20iKTsKLSAgICAgICAgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKHRvcEZyYW1lVVJMLCBXZWJTdHJp
bmc6OmZyb21VVEY4KCJjc3NfdGVzdF9wYWdlLmh0bWwiKSwgaHRtbE1pbWVUeXBlKCkpOwotICAg
ICAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQoR1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbS9saW5r
X3N0eWxlcy5jc3MiKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgibGlua19zdHlsZXMuY3NzIiksIGNz
c01pbWVUeXBlKCkpOwotICAgICAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQoR1VSTCgiaHR0cDov
L3d3dy50ZXN0LmNvbS9pbXBvcnRfc3R5bGVfZnJvbV9saW5rLmNzcyIpLCBXZWJTdHJpbmc6OmZy
b21VVEY4KCJpbXBvcnRfc3R5bGVfZnJvbV9saW5rLmNzcyIpLCBjc3NNaW1lVHlwZSgpKTsKLSAg
ICAgICAgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKEdVUkwoImh0dHA6Ly93d3cudGVzdC5jb20vaW1w
b3J0X3N0eWxlcy5jc3MiKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgiaW1wb3J0X3N0eWxlcy5jc3Mi
KSwgY3NzTWltZVR5cGUoKSk7Ci0gICAgICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZChHVVJMKCJo
dHRwOi8vd3d3LnRlc3QuY29tL3JlZF9iYWNrZ3JvdW5kLnBuZyIpLCBXZWJTdHJpbmc6OmZyb21V
VEY4KCJyZWRfYmFja2dyb3VuZC5wbmciKSwgcG5nTWltZVR5cGUoKSk7Ci0gICAgICAgIHJlZ2lz
dGVyTW9ja2VkVVJMTG9hZChHVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tL29yYW5nZV9iYWNrZ3Jv
dW5kLnBuZyIpLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJvcmFuZ2VfYmFja2dyb3VuZC5wbmciKSwg
cG5nTWltZVR5cGUoKSk7Ci0gICAgICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZChHVVJMKCJodHRw
Oi8vd3d3LnRlc3QuY29tL3llbGxvd19iYWNrZ3JvdW5kLnBuZyIpLCBXZWJTdHJpbmc6OmZyb21V
VEY4KCJ5ZWxsb3dfYmFja2dyb3VuZC5wbmciKSwgcG5nTWltZVR5cGUoKSk7Ci0gICAgICAgIHJl
Z2lzdGVyTW9ja2VkVVJMTG9hZChHVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tL2dyZWVuX2JhY2tn
cm91bmQucG5nIiksIFdlYlN0cmluZzo6ZnJvbVVURjgoImdyZWVuX2JhY2tncm91bmQucG5nIiks
IHBuZ01pbWVUeXBlKCkpOwotICAgICAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQoR1VSTCgiaHR0
cDovL3d3dy50ZXN0LmNvbS9ibHVlX2JhY2tncm91bmQucG5nIiksIFdlYlN0cmluZzo6ZnJvbVVU
RjgoImJsdWVfYmFja2dyb3VuZC5wbmciKSwgcG5nTWltZVR5cGUoKSk7Ci0gICAgICAgIHJlZ2lz
dGVyTW9ja2VkVVJMTG9hZChHVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tL3B1cnBsZV9iYWNrZ3Jv
dW5kLnBuZyIpLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJwdXJwbGVfYmFja2dyb3VuZC5wbmciKSwg
cG5nTWltZVR5cGUoKSk7Ci0gICAgICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZChHVVJMKCJodHRw
Oi8vd3d3LnRlc3QuY29tL3VsLWRvdC5wbmciKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgidWwtZG90
LnBuZyIpLCBwbmdNaW1lVHlwZSgpKTsKLSAgICAgICAgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKEdV
UkwoImh0dHA6Ly93d3cudGVzdC5jb20vb2wtZG90LnBuZyIpLCBXZWJTdHJpbmc6OmZyb21VVEY4
KCJvbC1kb3QucG5nIiksIHBuZ01pbWVUeXBlKCkpOworICAgICAgICBXZWJVUkwgdG9wRnJhbWVV
UkwgPSB0b0tVUkwoImh0dHA6Ly93d3cudGVzdC5jb20iKTsKKyAgICAgICAgcmVnaXN0ZXJNb2Nr
ZWRVUkxMb2FkKHRvcEZyYW1lVVJMLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJjc3NfdGVzdF9wYWdl
Lmh0bWwiKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgicGFnZXNlcmlhbGl6ZXIvIiksIGh0bWxNaW1l
VHlwZSgpKTsKKyAgICAgICAgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKHRvS1VSTCgiaHR0cDovL3d3
dy50ZXN0LmNvbS9saW5rX3N0eWxlcy5jc3MiKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgibGlua19z
dHlsZXMuY3NzIiksIFdlYlN0cmluZzo6ZnJvbVVURjgoInBhZ2VzZXJpYWxpemVyLyIpLCBjc3NN
aW1lVHlwZSgpKTsKKyAgICAgICAgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKHRvS1VSTCgiaHR0cDov
L3d3dy50ZXN0LmNvbS9pbXBvcnRfc3R5bGVfZnJvbV9saW5rLmNzcyIpLCBXZWJTdHJpbmc6OmZy
b21VVEY4KCJpbXBvcnRfc3R5bGVfZnJvbV9saW5rLmNzcyIpLCBXZWJTdHJpbmc6OmZyb21VVEY4
KCJwYWdlc2VyaWFsaXplci8iKSwgY3NzTWltZVR5cGUoKSk7CisgICAgICAgIHJlZ2lzdGVyTW9j
a2VkVVJMTG9hZCh0b0tVUkwoImh0dHA6Ly93d3cudGVzdC5jb20vaW1wb3J0X3N0eWxlcy5jc3Mi
KSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgiaW1wb3J0X3N0eWxlcy5jc3MiKSwgV2ViU3RyaW5nOjpm
cm9tVVRGOCgicGFnZXNlcmlhbGl6ZXIvIiksIGNzc01pbWVUeXBlKCkpOworICAgICAgICByZWdp
c3Rlck1vY2tlZFVSTExvYWQodG9LVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tL3JlZF9iYWNrZ3Jv
dW5kLnBuZyIpLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJyZWRfYmFja2dyb3VuZC5wbmciKSwgV2Vi
U3RyaW5nOjpmcm9tVVRGOCgicGFnZXNlcmlhbGl6ZXIvIiksIHBuZ01pbWVUeXBlKCkpOworICAg
ICAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQodG9LVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tL29y
YW5nZV9iYWNrZ3JvdW5kLnBuZyIpLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJvcmFuZ2VfYmFja2dy
b3VuZC5wbmciKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgicGFnZXNlcmlhbGl6ZXIvIiksIHBuZ01p
bWVUeXBlKCkpOworICAgICAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQodG9LVVJMKCJodHRwOi8v
d3d3LnRlc3QuY29tL3llbGxvd19iYWNrZ3JvdW5kLnBuZyIpLCBXZWJTdHJpbmc6OmZyb21VVEY4
KCJ5ZWxsb3dfYmFja2dyb3VuZC5wbmciKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgicGFnZXNlcmlh
bGl6ZXIvIiksIHBuZ01pbWVUeXBlKCkpOworICAgICAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQo
dG9LVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tL2dyZWVuX2JhY2tncm91bmQucG5nIiksIFdlYlN0
cmluZzo6ZnJvbVVURjgoImdyZWVuX2JhY2tncm91bmQucG5nIiksIFdlYlN0cmluZzo6ZnJvbVVU
RjgoInBhZ2VzZXJpYWxpemVyLyIpLCBwbmdNaW1lVHlwZSgpKTsKKyAgICAgICAgcmVnaXN0ZXJN
b2NrZWRVUkxMb2FkKHRvS1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbS9ibHVlX2JhY2tncm91bmQu
cG5nIiksIFdlYlN0cmluZzo6ZnJvbVVURjgoImJsdWVfYmFja2dyb3VuZC5wbmciKSwgV2ViU3Ry
aW5nOjpmcm9tVVRGOCgicGFnZXNlcmlhbGl6ZXIvIiksIHBuZ01pbWVUeXBlKCkpOworICAgICAg
ICByZWdpc3Rlck1vY2tlZFVSTExvYWQodG9LVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tL3B1cnBs
ZV9iYWNrZ3JvdW5kLnBuZyIpLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJwdXJwbGVfYmFja2dyb3Vu
ZC5wbmciKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgicGFnZXNlcmlhbGl6ZXIvIiksIHBuZ01pbWVU
eXBlKCkpOworICAgICAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQodG9LVVJMKCJodHRwOi8vd3d3
LnRlc3QuY29tL3VsLWRvdC5wbmciKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgidWwtZG90LnBuZyIp
LCBXZWJTdHJpbmc6OmZyb21VVEY4KCJwYWdlc2VyaWFsaXplci8iKSwgcG5nTWltZVR5cGUoKSk7
CisgICAgICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZCh0b0tVUkwoImh0dHA6Ly93d3cudGVzdC5j
b20vb2wtZG90LnBuZyIpLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJvbC1kb3QucG5nIiksIFdlYlN0
cmluZzo6ZnJvbVVURjgoInBhZ2VzZXJpYWxpemVyLyIpLCBwbmdNaW1lVHlwZSgpKTsKICAgICAg
ICAgcmV0dXJuIHRvcEZyYW1lVVJMOwogICAgIH0KIAotICAgIHZvaWQgbG9hZFVSTEluVG9wRnJh
bWUoY29uc3QgR1VSTCYgdXJsKQorICAgIHZvaWQgbG9hZFVSTEluVG9wRnJhbWUoY29uc3QgV2Vi
VVJMJiB1cmwpCiAgICAgewogICAgICAgICBXZWJVUkxSZXF1ZXN0IHVybFJlcXVlc3Q7CiAgICAg
ICAgIHVybFJlcXVlc3QuaW5pdGlhbGl6ZSgpOwotICAgICAgICB1cmxSZXF1ZXN0LnNldFVSTChX
ZWJVUkwodXJsKSk7CisgICAgICAgIHVybFJlcXVlc3Quc2V0VVJMKHVybCk7CiAgICAgICAgIG1f
d2ViVmlldy0+bWFpbkZyYW1lKCktPmxvYWRSZXF1ZXN0KHVybFJlcXVlc3QpOwogICAgICAgICAv
LyBNYWtlIHN1cmUgYW55IHBlbmRpbmcgcmVxdWVzdCBnZXQgc2VydmVkLgogICAgICAgICB3ZWJr
aXRfc3VwcG9ydDo6U2VydmVBc3luY2hyb25vdXNNb2NrZWRSZXF1ZXN0cygpOwpAQCAtMTYxLDcg
KzE1MSw3IEBAIHByb3RlY3RlZDoKIAogICAgIHN0YXRpYyBib29sIHJlc291cmNlVmVjdG9yQ29u
dGFpbnMoY29uc3QgV2ViVmVjdG9yPFdlYlBhZ2VTZXJpYWxpemVyOjpSZXNvdXJjZT4mIHJlc291
cmNlcywgY29uc3QgY2hhciogdXJsLCBjb25zdCBjaGFyKiBtaW1lVHlwZSkKICAgICB7Ci0gICAg
ICAgIFdlYlVSTCB3ZWJVUkwgPSBXZWJVUkwoR1VSTCh1cmwpKTsKKyAgICAgICAgV2ViVVJMIHdl
YlVSTCA9IFdlYlVSTCh0b0tVUkwodXJsKSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgcmVzb3VyY2VzLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBjb25zdCBXZWJQYWdlU2Vy
aWFsaXplcjo6UmVzb3VyY2UmIHJlc291cmNlID0gcmVzb3VyY2VzW2ldOwogICAgICAgICAgICAg
aWYgKHJlc291cmNlLnVybCA9PSB3ZWJVUkwgJiYgIXJlc291cmNlLmRhdGEuaXNFbXB0eSgpICYm
ICFyZXNvdXJjZS5taW1lVHlwZS5jb21wYXJlKFdlYkNTdHJpbmcobWltZVR5cGUpKSkKQEAgLTE4
NCwxMyArMTc0LDEzIEBAIHByaXZhdGU6CiBURVNUX0YoV2ViUGFnZU5ld1NlcmlhbGl6ZVRlc3Qs
IFBhZ2VXaXRoRnJhbWVzKQogewogICAgIC8vIFJlZ2lzdGVyIHRoZSBtb2NrZWQgZnJhbWVzLgot
ICAgIFdlYlVSTCB0b3BGcmFtZVVSTCA9IEdVUkwoImh0dHA6Ly93d3cudGVzdC5jb20iKTsKLSAg
ICByZWdpc3Rlck1vY2tlZFVSTExvYWQodG9wRnJhbWVVUkwsIFdlYlN0cmluZzo6ZnJvbVVURjgo
InRvcF9mcmFtZS5odG1sIiksIGh0bWxNaW1lVHlwZSgpKTsKLSAgICByZWdpc3Rlck1vY2tlZFVS
TExvYWQoR1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbS9pZnJhbWUuaHRtbCIpLCBXZWJTdHJpbmc6
OmZyb21VVEY4KCJpZnJhbWUuaHRtbCIpLCBodG1sTWltZVR5cGUoKSk7Ci0gICAgcmVnaXN0ZXJN
b2NrZWRVUkxMb2FkKEdVUkwoImh0dHA6Ly93d3cudGVzdC5jb20vaWZyYW1lMi5odG1sIiksIFdl
YlN0cmluZzo6ZnJvbVVURjgoImlmcmFtZTIuaHRtbCIpLCBodG1sTWltZVR5cGUoKSk7Ci0gICAg
cmVnaXN0ZXJNb2NrZWRVUkxMb2FkKEdVUkwoImh0dHA6Ly93d3cudGVzdC5jb20vcmVkX2JhY2tn
cm91bmQucG5nIiksIFdlYlN0cmluZzo6ZnJvbVVURjgoInJlZF9iYWNrZ3JvdW5kLnBuZyIpLCBw
bmdNaW1lVHlwZSgpKTsKLSAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQoR1VSTCgiaHR0cDovL3d3
dy50ZXN0LmNvbS9ncmVlbl9iYWNrZ3JvdW5kLnBuZyIpLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJn
cmVlbl9iYWNrZ3JvdW5kLnBuZyIpLCBwbmdNaW1lVHlwZSgpKTsKLSAgICByZWdpc3Rlck1vY2tl
ZFVSTExvYWQoR1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbS9ibHVlX2JhY2tncm91bmQucG5nIiks
IFdlYlN0cmluZzo6ZnJvbVVURjgoImJsdWVfYmFja2dyb3VuZC5wbmciKSwgcG5nTWltZVR5cGUo
KSk7CisgICAgV2ViVVJMIHRvcEZyYW1lVVJMID0gdG9LVVJMKCJodHRwOi8vd3d3LnRlc3QuY29t
Iik7CisgICAgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKHRvcEZyYW1lVVJMLCBXZWJTdHJpbmc6OmZy
b21VVEY4KCJ0b3BfZnJhbWUuaHRtbCIpLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJwYWdlc2VyaWFs
aXplci8iKSwgaHRtbE1pbWVUeXBlKCkpOworICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZCh0b0tV
UkwoImh0dHA6Ly93d3cudGVzdC5jb20vaWZyYW1lLmh0bWwiKSwgV2ViU3RyaW5nOjpmcm9tVVRG
OCgiaWZyYW1lLmh0bWwiKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgicGFnZXNlcmlhbGl6ZXIvIiks
IGh0bWxNaW1lVHlwZSgpKTsKKyAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQodG9LVVJMKCJodHRw
Oi8vd3d3LnRlc3QuY29tL2lmcmFtZTIuaHRtbCIpLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJpZnJh
bWUyLmh0bWwiKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgicGFnZXNlcmlhbGl6ZXIvIiksIGh0bWxN
aW1lVHlwZSgpKTsKKyAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQodG9LVVJMKCJodHRwOi8vd3d3
LnRlc3QuY29tL3JlZF9iYWNrZ3JvdW5kLnBuZyIpLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJyZWRf
YmFja2dyb3VuZC5wbmciKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgicGFnZXNlcmlhbGl6ZXIvIiks
IHBuZ01pbWVUeXBlKCkpOworICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZCh0b0tVUkwoImh0dHA6
Ly93d3cudGVzdC5jb20vZ3JlZW5fYmFja2dyb3VuZC5wbmciKSwgV2ViU3RyaW5nOjpmcm9tVVRG
OCgiZ3JlZW5fYmFja2dyb3VuZC5wbmciKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgicGFnZXNlcmlh
bGl6ZXIvIiksIHBuZ01pbWVUeXBlKCkpOworICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZCh0b0tV
UkwoImh0dHA6Ly93d3cudGVzdC5jb20vYmx1ZV9iYWNrZ3JvdW5kLnBuZyIpLCBXZWJTdHJpbmc6
OmZyb21VVEY4KCJibHVlX2JhY2tncm91bmQucG5nIiksIFdlYlN0cmluZzo6ZnJvbVVURjgoInBh
Z2VzZXJpYWxpemVyLyIpLCBwbmdNaW1lVHlwZSgpKTsKIAogICAgIGxvYWRVUkxJblRvcEZyYW1l
KHRvcEZyYW1lVVJMKTsKIApAQCAtMjAwLDcgKzE5MCw3IEBAIFRFU1RfRihXZWJQYWdlTmV3U2Vy
aWFsaXplVGVzdCwgUGFnZVdpdGhGcmFtZXMpCiAKICAgICAvLyBUaGUgZmlyc3QgcmVzb3VyY2Ug
c2hvdWxkIGJlIHRoZSBtYWluLWZyYW1lLgogICAgIGNvbnN0IFdlYlBhZ2VTZXJpYWxpemVyOjpS
ZXNvdXJjZSYgcmVzb3VyY2UgPSByZXNvdXJjZXNbMF07Ci0gICAgRVhQRUNUX1RSVUUocmVzb3Vy
Y2UudXJsID09IEdVUkwoImh0dHA6Ly93d3cudGVzdC5jb20iKSk7CisgICAgRVhQRUNUX1RSVUUo
cmVzb3VyY2UudXJsID09IFdlYlVSTCh0b0tVUkwoImh0dHA6Ly93d3cudGVzdC5jb20iKSkpOwog
ICAgIEVYUEVDVF9FUSgwLCByZXNvdXJjZS5taW1lVHlwZS5jb21wYXJlKFdlYkNTdHJpbmcoInRl
eHQvaHRtbCIpKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHJlc291cmNlLmRhdGEuaXNFbXB0eSgpKTsK
IApAQCAtMjI3LDcgKzIxNyw3IEBAIFRFU1RfRihXZWJQYWdlTmV3U2VyaWFsaXplVGVzdCwgRkFJ
TFNfQ1NTUmVzb3VyY2VzKQogCiAgICAgLy8gVGhlIGZpcnN0IHJlc291cmNlIHNob3VsZCBiZSB0
aGUgbWFpbi1mcmFtZS4KICAgICBjb25zdCBXZWJQYWdlU2VyaWFsaXplcjo6UmVzb3VyY2UmIHJl
c291cmNlID0gcmVzb3VyY2VzWzBdOwotICAgIEVYUEVDVF9UUlVFKHJlc291cmNlLnVybCA9PSBH
VVJMKCJodHRwOi8vd3d3LnRlc3QuY29tIikpOworICAgIEVYUEVDVF9UUlVFKHJlc291cmNlLnVy
bCA9PSBXZWJVUkwodG9LVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tIikpKTsKICAgICBFWFBFQ1Rf
RVEoMCwgcmVzb3VyY2UubWltZVR5cGUuY29tcGFyZShXZWJDU3RyaW5nKCJ0ZXh0L2h0bWwiKSkp
OwogICAgIEVYUEVDVF9GQUxTRShyZXNvdXJjZS5kYXRhLmlzRW1wdHkoKSk7CiAKQEAgLTI0OSwx
MSArMjM5LDExIEBAIFRFU1RfRihXZWJQYWdlTmV3U2VyaWFsaXplVGVzdCwgRkFJTFNfQ1NTUmVz
b3VyY2VzKQogVEVTVF9GKFdlYlBhZ2VOZXdTZXJpYWxpemVUZXN0LCBCbGFua0ZyYW1lcykKIHsK
ICAgICAvLyBSZWdpc3RlciB0aGUgbW9ja2VkIGZyYW1lIGFuZCBsb2FkIGl0LgotICAgIFdlYlVS
TCB0b3BGcmFtZVVSTCA9IEdVUkwoImh0dHA6Ly93d3cudGVzdC5jb20iKTsKLSAgICByZWdpc3Rl
ck1vY2tlZFVSTExvYWQodG9wRnJhbWVVUkwsIFdlYlN0cmluZzo6ZnJvbVVURjgoImJsYW5rX2Zy
YW1lcy5odG1sIiksIGh0bWxNaW1lVHlwZSgpKTsKLSAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQo
R1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbS9yZWRfYmFja2dyb3VuZC5wbmciKSwgV2ViU3RyaW5n
Ojpmcm9tVVRGOCgicmVkX2JhY2tncm91bmQucG5nIiksIHBuZ01pbWVUeXBlKCkpOwotICAgIHJl
Z2lzdGVyTW9ja2VkVVJMTG9hZChHVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tL29yYW5nZV9iYWNr
Z3JvdW5kLnBuZyIpLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJvcmFuZ2VfYmFja2dyb3VuZC5wbmci
KSwgcG5nTWltZVR5cGUoKSk7Ci0gICAgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKEdVUkwoImh0dHA6
Ly93d3cudGVzdC5jb20vYmx1ZV9iYWNrZ3JvdW5kLnBuZyIpLCBXZWJTdHJpbmc6OmZyb21VVEY4
KCJibHVlX2JhY2tncm91bmQucG5nIiksIHBuZ01pbWVUeXBlKCkpOworICAgIFdlYlVSTCB0b3BG
cmFtZVVSTCA9IHRvS1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbSIpOworICAgIHJlZ2lzdGVyTW9j
a2VkVVJMTG9hZCh0b3BGcmFtZVVSTCwgV2ViU3RyaW5nOjpmcm9tVVRGOCgiYmxhbmtfZnJhbWVz
Lmh0bWwiKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgicGFnZXNlcmlhbGl6ZXIvIiksIGh0bWxNaW1l
VHlwZSgpKTsKKyAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQodG9LVVJMKCJodHRwOi8vd3d3LnRl
c3QuY29tL3JlZF9iYWNrZ3JvdW5kLnBuZyIpLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJyZWRfYmFj
a2dyb3VuZC5wbmciKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgicGFnZXNlcmlhbGl6ZXIvIiksIHBu
Z01pbWVUeXBlKCkpOworICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZCh0b0tVUkwoImh0dHA6Ly93
d3cudGVzdC5jb20vb3JhbmdlX2JhY2tncm91bmQucG5nIiksIFdlYlN0cmluZzo6ZnJvbVVURjgo
Im9yYW5nZV9iYWNrZ3JvdW5kLnBuZyIpLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJwYWdlc2VyaWFs
aXplci8iKSwgcG5nTWltZVR5cGUoKSk7CisgICAgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKHRvS1VS
TCgiaHR0cDovL3d3dy50ZXN0LmNvbS9ibHVlX2JhY2tncm91bmQucG5nIiksIFdlYlN0cmluZzo6
ZnJvbVVURjgoImJsdWVfYmFja2dyb3VuZC5wbmciKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgicGFn
ZXNlcmlhbGl6ZXIvIiksIHBuZ01pbWVUeXBlKCkpOwogCiAgICAgbG9hZFVSTEluVG9wRnJhbWUo
dG9wRnJhbWVVUkwpOwogCkBAIC0yNjMsNyArMjUzLDcgQEAgVEVTVF9GKFdlYlBhZ2VOZXdTZXJp
YWxpemVUZXN0LCBCbGFua0ZyYW1lcykKIAogICAgIC8vIFRoZSBmaXJzdCByZXNvdXJjZSBzaG91
bGQgYmUgdGhlIG1haW4tZnJhbWUuCiAgICAgY29uc3QgV2ViUGFnZVNlcmlhbGl6ZXI6OlJlc291
cmNlJiByZXNvdXJjZSA9IHJlc291cmNlc1swXTsKLSAgICBFWFBFQ1RfVFJVRShyZXNvdXJjZS51
cmwgPT0gR1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbSIpKTsKKyAgICBFWFBFQ1RfVFJVRShyZXNv
dXJjZS51cmwgPT0gV2ViVVJMKHRvS1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbSIpKSk7CiAgICAg
RVhQRUNUX0VRKDAsIHJlc291cmNlLm1pbWVUeXBlLmNvbXBhcmUoV2ViQ1N0cmluZygidGV4dC9o
dG1sIikpKTsKICAgICBFWFBFQ1RfRkFMU0UocmVzb3VyY2UuZGF0YS5pc0VtcHR5KCkpOwogCkBA
IC0yNzksOCArMjY5LDggQEAgVEVTVF9GKFdlYlBhZ2VOZXdTZXJpYWxpemVUZXN0LCBCbGFua0Zy
YW1lcykKIAogVEVTVF9GKFdlYlBhZ2VOZXdTZXJpYWxpemVUZXN0LCBTZXJpYWxpemVYTUxIYXNS
aWdodERlY2xhcmF0aW9uKQogewotICAgIFdlYlVSTCB0b3BGcmFtZVVSTCA9IEdVUkwoImh0dHA6
Ly93d3cudGVzdC5jb20vc2ltcGxlLnhodG1sIik7Ci0gICAgcmVnaXN0ZXJNb2NrZWRVUkxMb2Fk
KHRvcEZyYW1lVVJMLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJzaW1wbGUueGh0bWwiKSwgeGh0bWxN
aW1lVHlwZSgpKTsKKyAgICBXZWJVUkwgdG9wRnJhbWVVUkwgPSB0b0tVUkwoImh0dHA6Ly93d3cu
dGVzdC5jb20vc2ltcGxlLnhodG1sIik7CisgICAgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKHRvcEZy
YW1lVVJMLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJzaW1wbGUueGh0bWwiKSwgV2ViU3RyaW5nOjpm
cm9tVVRGOCgicGFnZXNlcmlhbGl6ZXIvIiksIHhodG1sTWltZVR5cGUoKSk7CiAKICAgICBsb2Fk
VVJMSW5Ub3BGcmFtZSh0b3BGcmFtZVVSTCk7CiAKQEAgLTI5MCw3ICsyODAsNyBAQCBURVNUX0Yo
V2ViUGFnZU5ld1NlcmlhbGl6ZVRlc3QsIFNlcmlhbGl6ZVhNTEhhc1JpZ2h0RGVjbGFyYXRpb24p
CiAKICAgICAvLyBXZSBleHBlY3Qgb25seSBvbmUgcmVzb3VyY2UsIHRoZSBYTUwuCiAgICAgQVNT
RVJUX0VRKDFVLCByZXNvdXJjZXMuc2l6ZSgpKTsKLSAgICBzdGQ6OnN0cmluZyB4bWwgPSByZXNv
dXJjZXNbMF0uZGF0YTsKKyAgICBzdGQ6OnN0cmluZyB4bWwgPSBzdGQ6OnN0cmluZyhyZXNvdXJj
ZXNbMF0uZGF0YS5kYXRhKCkpOwogCiAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgb25lIGFuZCBvbmx5
IG9uZSBpbnN0YW5jZSBvZiB0aGUgWE1MIGRlY2xhcmF0aW9uLgogICAgIHNpemVfdCBwb3MgPSB4
bWwuZmluZCgiPD94bWwgdmVyc2lvbj0iKTsKQEAgLTMxMCw3ICszMDAsNyBAQCBURVNUX0YoV2Vi
UGFnZU5ld1NlcmlhbGl6ZVRlc3QsIEZBSUxTX1Rlc3RNSFRNTEVuY29kaW5nKQogICAgIEFTU0VS
VF9GQUxTRShtaHRtbERhdGEuaXNFbXB0eSgpKTsKIAogICAgIC8vIFJlYWQgdGhlIE1IVE1MIGRh
dGEgbGluZSBwZXIgbGluZSBhbmQgZG8gc29tZSBwc2V1ZG8tcGFyc2luZyB0byBtYWtlIHN1cmUg
dGhlIHJpZ2h0IGVuY29kaW5nIGlzIHVzZWQgZm9yIHRoZSBkaWZmZXJlbnQgc2VjdGlvbnMuCi0g
ICAgTGluZVJlYWRlciBsaW5lUmVhZGVyKG1odG1sRGF0YSk7CisgICAgTGluZVJlYWRlciBsaW5l
UmVhZGVyKHN0ZDo6c3RyaW5nKG1odG1sRGF0YS5kYXRhKCkpKTsKICAgICBpbnQgc2VjdGlvbkNo
ZWNrZWRDb3VudCA9IDA7CiAgICAgY29uc3QgY2hhciogZXhwZWN0ZWRFbmNvZGluZyA9IDA7CiAg
ICAgc3RkOjpzdHJpbmcgbGluZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvV2ViUGFnZVNlcmlhbGl6ZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvV2ViUGFnZVNlcmlhbGl6ZXJUZXN0LmNwcAppbmRleCBhYTBjNmRjMmE4NzRlYzRiNzk4
NDNlNzAyMWJjZGNlNjNiMzYxMTYzLi5mZWI1ZjdmNmYzOWNkZWI3OWZhZjU0MGEwMjc1N2ExMzFh
MGE0YjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlBhZ2VT
ZXJpYWxpemVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJQ
YWdlU2VyaWFsaXplclRlc3QuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVNlcmlhbGl6ZXIuaCIKIAorI2luY2x1ZGUgIlVSTFRlc3RI
ZWxwZXJzLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJGcmFtZUNsaWVu
dC5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgpAQCAtMzksMTEgKzQwLDExIEBA
CiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViVVJMUmVzcG9uc2UuaCIKICNpbmNsdWRlICJXZWJWaWV3
LmgiCiAKLSNpbmNsdWRlIDxnb29nbGV1cmwvc3JjL2d1cmwuaD4KICNpbmNsdWRlIDxndGVzdC9n
dGVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmg+CiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBXZWJLaXQ6OlVSTFRlc3RIZWxwZXJzOjp0b0tV
Ukw7CiAKIG5hbWVzcGFjZSB7CiAKQEAgLTczLDIyICs3NCwxNiBAQCBwcm90ZWN0ZWQ6CiAgICAg
ICAgIG1fd2ViVmlldy0+Y2xvc2UoKTsKICAgICB9CiAKLSAgICB2b2lkIHJlZ2lzdGVyTW9ja2Vk
VVJMTG9hZChjb25zdCBXZWJVUkwmIHVybCwgY29uc3QgV2ViU3RyaW5nJiBmaWxlTmFtZSkKKyAg
ICB2b2lkIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZChjb25zdCBzdGQ6OnN0cmluZyYgdXJsLCBjb25z
dCBXZWJTdHJpbmcmIGZpbGVOYW1lKQogICAgIHsKLSAgICAgICAgV2ViVVJMUmVzcG9uc2UgcmVz
cG9uc2U7Ci0gICAgICAgIHJlc3BvbnNlLmluaXRpYWxpemUoKTsKLSAgICAgICAgcmVzcG9uc2Uu
c2V0TUlNRVR5cGUoInRleHQvaHRtbCIpOwotICAgICAgICBzdGQ6OnN0cmluZyBmaWxlUGF0aCA9
IHdlYmtpdF9zdXBwb3J0OjpHZXRXZWJLaXRSb290RGlyKCkudXRmOCgpOwotICAgICAgICBmaWxl
UGF0aC5hcHBlbmQoIi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvcGFnZXNlcmlh
bGl6YXRpb24vIik7Ci0gICAgICAgIGZpbGVQYXRoLmFwcGVuZChmaWxlTmFtZS51dGY4KCkpOwot
ICAgICAgICB3ZWJraXRfc3VwcG9ydDo6UmVnaXN0ZXJNb2NrZWRVUkwodXJsLCByZXNwb25zZSwg
V2ViU3RyaW5nOjpmcm9tVVRGOChmaWxlUGF0aCkpOworICAgICAgICBVUkxUZXN0SGVscGVyczo6
cmVnaXN0ZXJNb2NrZWRVUkxMb2FkKHRvS1VSTCh1cmwpLCBmaWxlTmFtZSwgV2ViU3RyaW5nOjpm
cm9tVVRGOCgicGFnZXNlcmlhbGl6YXRpb24vIiksIFdlYlN0cmluZzo6ZnJvbVVURjgoInRleHQv
aHRtbCIpKTsKICAgICB9CiAKLSAgICB2b2lkIGxvYWRVUkxJblRvcEZyYW1lKGNvbnN0IEdVUkwm
IHVybCkKKyAgICB2b2lkIGxvYWRVUkxJblRvcEZyYW1lKGNvbnN0IFdlYlVSTCYgdXJsKQogICAg
IHsKICAgICAgICAgV2ViVVJMUmVxdWVzdCB1cmxSZXF1ZXN0OwogICAgICAgICB1cmxSZXF1ZXN0
LmluaXRpYWxpemUoKTsKLSAgICAgICAgdXJsUmVxdWVzdC5zZXRVUkwoV2ViVVJMKHVybCkpOwor
ICAgICAgICB1cmxSZXF1ZXN0LnNldFVSTCh1cmwpOwogICAgICAgICBtX3dlYlZpZXctPm1haW5G
cmFtZSgpLT5sb2FkUmVxdWVzdCh1cmxSZXF1ZXN0KTsKICAgICAgICAgLy8gTWFrZSBzdXJlIGFu
eSBwZW5kaW5nIHJlcXVlc3QgZ2V0IHNlcnZlZC4KICAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlNl
cnZlQXN5bmNocm9ub3VzTW9ja2VkUmVxdWVzdHMoKTsKQEAgLTk2LDcgKzkxLDcgQEAgcHJvdGVj
dGVkOgogCiAgICAgc3RhdGljIGJvb2wgd2ViVmVjdG9yQ29udGFpbnMoY29uc3QgV2ViVmVjdG9y
PFdlYlVSTD4mIHZlY3RvciwgY29uc3QgY2hhciogdXJsKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IHZlY3Rvci5jb250YWlucyhXZWJVUkwoR1VSTCh1cmwpKSk7CisgICAgICAgIHJldHVybiB2ZWN0
b3IuY29udGFpbnMoV2ViVVJMKHRvS1VSTChzdGQ6OnN0cmluZyh1cmwpKSkpOwogICAgIH0KIAog
ICAgIC8vIFVzZWZ1bCBmb3IgZGVidWdnaW5nLgpAQCAtMTE2LDggKzExMSw4IEBAIHByaXZhdGU6
CiBURVNUX0YoV2ViUGFnZVNlcmlhbGl6ZXJUZXN0LCBIVE1MTm9kZXMpCiB7CiAgICAgLy8gUmVn
aXN0ZXIgdGhlIG1vY2tlZCBmcmFtZSBhbmQgbG9hZCBpdC4KLSAgICBXZWJVUkwgdG9wRnJhbWVV
UkwgPSBHVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tIik7Ci0gICAgcmVnaXN0ZXJNb2NrZWRVUkxM
b2FkKHRvcEZyYW1lVVJMLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJzaW1wbGVfcGFnZS5odG1sIikp
OworICAgIFdlYlVSTCB0b3BGcmFtZVVSTCA9IHRvS1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbSIp
OworICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZCgiaHR0cDovL3d3dy50ZXN0LmNvbSIsIFdlYlN0
cmluZzo6ZnJvbVVURjgoInNpbXBsZV9wYWdlLmh0bWwiKSk7CiAgICAgbG9hZFVSTEluVG9wRnJh
bWUodG9wRnJhbWVVUkwpOwogCiAgICAgLy8gUmV0cmlldmUgYWxsIHJlc291cmNlcy4KQEAgLTE1
MCwxOCArMTQ1LDE4IEBAIFRFU1RfRihXZWJQYWdlU2VyaWFsaXplclRlc3QsIEhUTUxOb2RlcykK
IFRFU1RfRihXZWJQYWdlU2VyaWFsaXplclRlc3QsIE11bHRpcGxlRnJhbWVzKQogewogICAgIC8v
IFJlZ2lzdGVyIHRoZSBtb2NrZWQgZnJhbWVzLgotICAgIFdlYlVSTCB0b3BGcmFtZVVSTCA9IEdV
UkwoImh0dHA6Ly93d3cudGVzdC5jb20iKTsKLSAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQodG9w
RnJhbWVVUkwsIFdlYlN0cmluZzo6ZnJvbVVURjgoInRvcF9mcmFtZS5odG1sIikpOwotICAgIHJl
Z2lzdGVyTW9ja2VkVVJMTG9hZChHVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tL3NpbXBsZV9pZnJh
bWUuaHRtbCIpLAorICAgIFdlYlVSTCB0b3BGcmFtZVVSTCA9IHRvS1VSTCgiaHR0cDovL3d3dy50
ZXN0LmNvbSIpOworICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZCgiaHR0cDovL3d3dy50ZXN0LmNv
bSIsIFdlYlN0cmluZzo6ZnJvbVVURjgoInRvcF9mcmFtZS5odG1sIikpOworICAgIHJlZ2lzdGVy
TW9ja2VkVVJMTG9hZCgiaHR0cDovL3d3dy50ZXN0LmNvbS9zaW1wbGVfaWZyYW1lLmh0bWwiLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJTdHJpbmc6OmZyb21VVEY4KCJzaW1wbGVfaWZy
YW1lLmh0bWwiKSk7Ci0gICAgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKEdVUkwoImh0dHA6Ly93d3cu
dGVzdC5jb20vb2JqZWN0X2lmcmFtZS5odG1sIiksCisgICAgcmVnaXN0ZXJNb2NrZWRVUkxMb2Fk
KCJodHRwOi8vd3d3LnRlc3QuY29tL29iamVjdF9pZnJhbWUuaHRtbCIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYlN0cmluZzo6ZnJvbVVURjgoIm9iamVjdF9pZnJhbWUuaHRtbCIpKTsK
LSAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQoR1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbS9lbWJl
ZF9pZnJhbWUuaHRtbCIpLAorICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZCgiaHR0cDovL3d3dy50
ZXN0LmNvbS9lbWJlZF9pZnJhbWUuaHRtbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFdl
YlN0cmluZzo6ZnJvbVVURjgoImVtYmVkX2lmcmFtZS5odG1sIikpOwogICAgIC8vIElmIHdlIGRv
bid0IHJlZ2lzdGVyIGEgbW9ja2VkIHJlc291cmNlIGZvciBhd2Vzb21lLnBuZywgaXQgY2F1c2Vz
IHRoZQogICAgIC8vIGRvY3VtZW50IGxvYWRlciBvZiB0aGUgaWZyYW1lIHRoYXQgaGFzIGl0IGFz
IGl0cyBzcmMgdG8gYXNzZXJ0IG9uIGNsb3NlLAogICAgIC8vIG5vdCBzdXJlIHdoeS4KLSAgICBy
ZWdpc3Rlck1vY2tlZFVSTExvYWQoR1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbS9hd2Vzb21lLnBu
ZyIpLAorICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZCgiaHR0cDovL3d3dy50ZXN0LmNvbS9hd2Vz
b21lLnBuZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYlN0cmluZzo6ZnJvbVVURjgo
ImF3ZXNvbWUucG5nIikpOwogCiAgICAgbG9hZFVSTEluVG9wRnJhbWUodG9wRnJhbWVVUkwpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJWaWV3VGVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlZpZXdUZXN0LmNwcAppbmRleCBmODU4
ZmU3YjU4MWU3YjE4M2M0YjRiZDVhMzM3Mjc0YmUwNjE5YzU5Li4xMTk2OWEyODM2NWJkMDM1ZDJh
NjgyOGE3NmM2MjliMzlkZDlkZjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1dlYlZpZXdUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L1dlYlZpZXdUZXN0LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkZyYW1lVGVzdEhl
bHBlcnMuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnQu
aCIKKyNpbmNsdWRlICJVUkxUZXN0SGVscGVycy5oIgogI2luY2x1ZGUgIldlYkRvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgpAQCAt
NDIsMTEgKzQzLDExIEBACiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViU2l6ZS5oIgogI2luY2x1ZGUg
IldlYlZpZXdDbGllbnQuaCIKICNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgotI2luY2x1ZGUgPGdv
b2dsZXVybC9zcmMvZ3VybC5oPgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAjaW5jbHVkZSA8
d2Via2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKK3VzaW5nIFdlYktpdDo6VVJMVGVzdEhlbHBlcnM6OnRvS1VSTDsKIAogbmFtZXNwYWNlIHsK
IApAQCAtMTE3LDcgKzExOCw3IEBAIHByb3RlY3RlZDoKIAogVEVTVF9GKFdlYlZpZXdUZXN0LCBG
b2N1c0lzSW5hY3RpdmUpCiB7Ci0gICAgRnJhbWVUZXN0SGVscGVyczo6cmVnaXN0ZXJNb2NrZWRV
UkxMb2FkKG1fYmFzZVVSTCwgInZpc2libGVfaWZyYW1lLmh0bWwiKTsKKyAgICBVUkxUZXN0SGVs
cGVyczo6cmVnaXN0ZXJNb2NrZWRVUkxGcm9tQmFzZVVSTChXZWJTdHJpbmc6OmZyb21VVEY4KG1f
YmFzZVVSTC5jX3N0cigpKSwgInZpc2libGVfaWZyYW1lLmh0bWwiKTsKICAgICBXZWJWaWV3KiB3
ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJM
ICsgInZpc2libGVfaWZyYW1lLmh0bWwiKTsKIAogICAgIHdlYlZpZXctPnNldEZvY3VzKHRydWUp
OwpAQCAtMTQ1LDcgKzE0Niw3IEBAIFRFU1RfRihXZWJWaWV3VGVzdCwgRm9jdXNJc0luYWN0aXZl
KQogCiBURVNUX0YoV2ViVmlld1Rlc3QsIEFjdGl2ZVN0YXRlKQogewotICAgIEZyYW1lVGVzdEhl
bHBlcnM6OnJlZ2lzdGVyTW9ja2VkVVJMTG9hZChtX2Jhc2VVUkwsICJ2aXNpYmxlX2lmcmFtZS5o
dG1sIik7CisgICAgVVJMVGVzdEhlbHBlcnM6OnJlZ2lzdGVyTW9ja2VkVVJMRnJvbUJhc2VVUkwo
V2ViU3RyaW5nOjpmcm9tVVRGOChtX2Jhc2VVUkwuY19zdHIoKSksICJ2aXNpYmxlX2lmcmFtZS5o
dG1sIik7CiAgICAgV2ViVmlldyogd2ViVmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdl
YlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJ2aXNpYmxlX2lmcmFtZS5odG1sIik7CiAKICAgICBB
U1NFUlRfVFJVRSh3ZWJWaWV3KTsKQEAgLTE2OSw3ICsxNzAsNyBAQCB2b2lkIFdlYlZpZXdUZXN0
Ojp0ZXN0QXV0b1Jlc2l6ZShjb25zdCBXZWJTaXplJiBtaW5BdXRvUmVzaXplLCBjb25zdCBXZWJT
aXplJiBtYQogewogICAgIEF1dG9SZXNpemVXZWJWaWV3Q2xpZW50IGNsaWVudDsKICAgICBzdGQ6
OnN0cmluZyB1cmwgPSBtX2Jhc2VVUkwgKyAic3BlY2lmeV9zaXplLmh0bWw/IiArIHBhZ2VXaWR0
aCArICI6IiArIHBhZ2VIZWlnaHQ7Ci0gICAgRnJhbWVUZXN0SGVscGVyczo6cmVnaXN0ZXJNb2Nr
ZWRVUkxMb2FkKEdVUkwodXJsKSwgInNwZWNpZnlfc2l6ZS5odG1sIik7CisgICAgVVJMVGVzdEhl
bHBlcnM6OnJlZ2lzdGVyTW9ja2VkVVJMTG9hZCh0b0tVUkwodXJsKSwgInNwZWNpZnlfc2l6ZS5o
dG1sIik7CiAgICAgV2ViVmlldyogd2ViVmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdl
YlZpZXdBbmRMb2FkKHVybCwgdHJ1ZSwgMCwgJmNsaWVudCk7CiAgICAgY2xpZW50LnRlc3REYXRh
KCkuc2V0V2ViVmlldyh3ZWJWaWV3KTsKIApAQCAtMjY4LDcgKzI2OSw3IEBAIFRFU1RfRihXZWJW
aWV3VGVzdCwgQXV0b1Jlc2l6ZU1heFNpemUpCiAKIHZvaWQgV2ViVmlld1Rlc3Q6OnRlc3RUZXh0
SW5wdXRUeXBlKFdlYlRleHRJbnB1dFR5cGUgZXhwZWN0ZWRUeXBlLCBjb25zdCBzdGQ6OnN0cmlu
ZyYgaHRtbEZpbGUpCiB7Ci0gICAgRnJhbWVUZXN0SGVscGVyczo6cmVnaXN0ZXJNb2NrZWRVUkxM
b2FkKG1fYmFzZVVSTCwgaHRtbEZpbGUpOworICAgIFVSTFRlc3RIZWxwZXJzOjpyZWdpc3Rlck1v
Y2tlZFVSTEZyb21CYXNlVVJMKFdlYlN0cmluZzo6ZnJvbVVURjgobV9iYXNlVVJMLmNfc3RyKCkp
LCBXZWJTdHJpbmc6OmZyb21VVEY4KGh0bWxGaWxlLmNfc3RyKCkpKTsKICAgICBXZWJWaWV3KiB3
ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJM
ICsgaHRtbEZpbGUpOwogICAgIHdlYlZpZXctPnNldEluaXRpYWxGb2N1cyhmYWxzZSk7CiAgICAg
RVhQRUNUX0VRKGV4cGVjdGVkVHlwZSwgd2ViVmlldy0+dGV4dElucHV0VHlwZSgpKTsKQEAgLTMw
OCw3ICszMDksNyBAQCBURVNUX0YoV2ViVmlld1Rlc3QsIERJU0FCTEVEX1RleHRJbnB1dFR5cGUp
CiAKIFRFU1RfRihXZWJWaWV3VGVzdCwgU2V0RWRpdGFibGVTZWxlY3Rpb25PZmZzZXRzKQogewot
ICAgIEZyYW1lVGVzdEhlbHBlcnM6OnJlZ2lzdGVyTW9ja2VkVVJMTG9hZChtX2Jhc2VVUkwsICJp
bnB1dF9maWVsZF9wb3B1bGF0ZWQuaHRtbCIpOworICAgIFVSTFRlc3RIZWxwZXJzOjpyZWdpc3Rl
ck1vY2tlZFVSTEZyb21CYXNlVVJMKFdlYlN0cmluZzo6ZnJvbVVURjgobV9iYXNlVVJMLmNfc3Ry
KCkpLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJpbnB1dF9maWVsZF9wb3B1bGF0ZWQuaHRtbCIpKTsK
ICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0Fu
ZExvYWQobV9iYXNlVVJMICsgImlucHV0X2ZpZWxkX3BvcHVsYXRlZC5odG1sIik7CiAgICAgd2Vi
Vmlldy0+c2V0SW5pdGlhbEZvY3VzKGZhbHNlKTsKICAgICB3ZWJWaWV3LT5zZXRFZGl0YWJsZVNl
bGVjdGlvbk9mZnNldHMoNSwgMTMpOwpAQCAtMzE2LDcgKzMxNyw3IEBAIFRFU1RfRihXZWJWaWV3
VGVzdCwgU2V0RWRpdGFibGVTZWxlY3Rpb25PZmZzZXRzKQogICAgIEVYUEVDVF9FUSgiNTY3ODlh
YmMiLCBmcmFtZS0+c2VsZWN0aW9uQXNUZXh0KCkpOwogICAgIHdlYlZpZXctPmNsb3NlKCk7CiAK
LSAgICBGcmFtZVRlc3RIZWxwZXJzOjpyZWdpc3Rlck1vY2tlZFVSTExvYWQobV9iYXNlVVJMLCAi
Y29udGVudF9lZGl0YWJsZV9wb3B1bGF0ZWQuaHRtbCIpOworICAgIFVSTFRlc3RIZWxwZXJzOjpy
ZWdpc3Rlck1vY2tlZFVSTEZyb21CYXNlVVJMKFdlYlN0cmluZzo6ZnJvbVVURjgobV9iYXNlVVJM
LmNfc3RyKCkpLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJjb250ZW50X2VkaXRhYmxlX3BvcHVsYXRl
ZC5odG1sIikpOwogICAgIHdlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3
QW5kTG9hZChtX2Jhc2VVUkwgKyAiY29udGVudF9lZGl0YWJsZV9wb3B1bGF0ZWQuaHRtbCIpOwog
ICAgIHdlYlZpZXctPnNldEluaXRpYWxGb2N1cyhmYWxzZSk7CiAgICAgd2ViVmlldy0+c2V0RWRp
dGFibGVTZWxlY3Rpb25PZmZzZXRzKDgsIDE5KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149974</attachid>
            <date>2012-06-28 11:12:11 -0700</date>
            <delta_ts>2012-07-11 10:13:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90094-20120628111211.patch</filename>
            <type>text/plain</type>
            <size>55722</size>
            <attacher name="Shawn Singh">shawnsingh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMzc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDgxN2QyYTkxOGEzY2ZhZTY5MzBiNWFjZTVjNjhhM2QwMjI5ZDg3YjcuLjg3ZWM0ODEyNjk5MmM4
NjhiMzJhMjg3MDM1MGYxNDdkZWVmNDlhNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDAgQEAKKzIwMTItMDYtMjcgIFNoYXduIFNpbmdoICA8c2hhd25zaW5naEBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBVc2UgV0VCS0lUX0lNUExFTUVOVEFUSU9O
ID09IDEgZm9yIHdlYmtpdF91bml0X3Rlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05MDA5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyB0aGUgV0VCS0lUX0lNUExFTUVOVEFU
SU9OID0gMSBkZWZpbmUgdG8KKyAgICAgICAgV2ViS2l0VW5pdFRlc3RzLmd5cC4gVG8gZ2V0IGl0
IHRvIGNvbXBpbGUgY29ycmVjdGx5LCBzb21lIHN0cmluZworICAgICAgICBhbmQgVVJMIGNvZGUg
d2FzIHJlZmFjdG9yZWQgYW5kIGZpeGVkLgorCisgICAgICAgICogV2ViS2l0Lmd5cGk6CisgICAg
ICAgICogV2ViS2l0VW5pdFRlc3RzLmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViRE9NTWVzc2Fn
ZUV2ZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkRPTU1lc3NhZ2VFdmVudDo6V2ViRE9NTWVz
c2FnZUV2ZW50KToKKyAgICAgICAgKiB0ZXN0cy9Bc3NvY2lhdGVkVVJMTG9hZGVyVGVzdC5jcHA6
CisgICAgICAgICogdGVzdHMvRXZlbnRMaXN0ZW5lclRlc3QuY3BwOgorICAgICAgICAqIHRlc3Rz
L0ZyYW1lVGVzdEhlbHBlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZVRlc3RIZWxwZXJz
Ojpsb2FkRnJhbWUpOgorICAgICAgICAqIHRlc3RzL0ZyYW1lVGVzdEhlbHBlcnMuaDoKKyAgICAg
ICAgKiB0ZXN0cy9MaXN0ZW5lckxlYWtUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGlzdGVu
ZXJMZWFrVGVzdDo6UnVuVGVzdCk6CisgICAgICAgICogdGVzdHMvUG9wdXBNZW51VGVzdC5jcHA6
CisgICAgICAgICogdGVzdHMvUnVuQWxsVGVzdHMuY3BwOgorICAgICAgICAqIHRlc3RzL1VSTFRl
c3RIZWxwZXJzLmNwcDogQWRkZWQuCisgICAgICAgIChVUkxUZXN0SGVscGVycyk6CisgICAgICAg
IChXZWJLaXQ6OlVSTFRlc3RIZWxwZXJzOjpyZWdpc3Rlck1vY2tlZFVSTEZyb21CYXNlVVJMKToK
KyAgICAgICAgKFdlYktpdDo6VVJMVGVzdEhlbHBlcnM6OnJlZ2lzdGVyTW9ja2VkVVJMTG9hZCk6
CisgICAgICAgICogdGVzdHMvVVJMVGVzdEhlbHBlcnMuaDogQ29waWVkIGZyb20gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRE9NTWVzc2FnZUV2ZW50LmguCisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoVVJMVGVzdEhlbHBlcnMpOgorICAgICAgICAoV2ViS2l0OjpVUkxUZXN0
SGVscGVyczo6dG9LVVJMKToKKyAgICAgICAgKiB0ZXN0cy9XZWJGcmFtZVRlc3QuY3BwOgorICAg
ICAgICAqIHRlc3RzL1dlYlBhZ2VOZXdTZXJpYWxpemVyVGVzdC5jcHA6CisgICAgICAgICogdGVz
dHMvV2ViUGFnZVNlcmlhbGl6ZXJUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9XZWJWaWV3VGVz
dC5jcHA6CisKIDIwMTItMDYtMjcgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBbQ2hyb21pdW1dIEluZGV4ZWREQjogRXhwb3NlIFdlYklEQlRyYW5zYWN0aW9u
Ojpjb21taXQoKSBtZXRob2QgaW4gcHVibGljIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9XZWJLaXQuZ3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5
cGkKaW5kZXggYzQxMGU2ZjRmNzU4NGZkMjBlODg4M2EwMGYxZWMwNjA3OGUyNzI2Ny4uZWJjZmE2
MGM2NWQ2ODRmZmQwYWY0ZmU1YmViOWEwODAzZTliOWU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dl
YktpdC5neXBpCkBAIC0xNDUsNiArMTQ1LDggQEAKICAgICAgICAgICAgICd0ZXN0cy9UcmVlU3lu
Y2hyb25pemVyVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1RyZWVUZXN0SGVscGVycy5j
cHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1RyZWVUZXN0SGVscGVycy5oJywKKyAgICAgICAgICAg
ICd0ZXN0cy9VUkxUZXN0SGVscGVycy5jcHAnLAorICAgICAgICAgICAgJ3Rlc3RzL1VSTFRlc3RI
ZWxwZXJzLmgnLAogICAgICAgICAgICAgJ3Rlc3RzL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJ
bXBsVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAnLAogICAg
ICAgICAgICAgJ3Rlc3RzL1dlYkxheWVyVGVzdC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9XZWJLaXRVbml0VGVzdHMuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXRVbml0VGVzdHMuZ3lwCmluZGV4IDU4YWY4Mzk4NWE0NWRhMjliOWUwNmJmYjhmNzI3
MWViYWJhZTA5NmEuLjEwODE4Mjg1NjAwMDM2MjY5ZGFmM2M1N2ExNWY3NjFkMjMyMjI1YzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0VW5pdFRlc3RzLmd5cAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdFVuaXRUZXN0cy5neXAKQEAgLTc4LDYgKzc4
LDkgQEAKICAgICAgICAgICAgICAgICAjIGFkZCB0aGUgaW5jbHVkZSBwYXRoIGRpcmVjdGx5Lgog
ICAgICAgICAgICAgICAgICcuLi8uLi9QbGF0Zm9ybS9jaHJvbWl1bScsCiAgICAgICAgICAgICBd
LAorICAgICAgICAgICAgJ2RlZmluZXMnOiBbCisgICAgICAgICAgICAgICAgJ1dFQktJVF9JTVBM
RU1FTlRBVElPTj0xJywKKyAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAnY29uZGl0aW9ucyc6
IFsKICAgICAgICAgICAgICAgICBbJ2luc2lkZV9jaHJvbWl1bV9idWlsZD09MSBhbmQgY29tcG9u
ZW50PT0ic2hhcmVkX2xpYnJhcnkiJywgewogICAgICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6
IFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRPTU1lc3Nh
Z2VFdmVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRE9NTWVzc2FnZUV2
ZW50LmgKaW5kZXggMzU1YjczNzE1YTRmOWQ2YjAzNmRmYzBlMjg5NjhjOWFiMDI0MDYyNC4uNjYx
OWFmMjQ2OWZmZGJmN2YwY2FlMjcwZmUxZjFmMjk5OTU5OTYyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRE9NTWVzc2FnZUV2ZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRE9NTWVzc2FnZUV2ZW50LmgKQEAgLTQ2LDYgKzQ2
LDcgQEAgY2xhc3MgV2ViU3RyaW5nOwogCiBjbGFzcyBXZWJET01NZXNzYWdlRXZlbnQgOiBwdWJs
aWMgV2ViRE9NRXZlbnQgewogcHVibGljOgorICAgIFdlYkRPTU1lc3NhZ2VFdmVudCgpIHsgfQog
ICAgIFdFQktJVF9FWFBPUlQgdm9pZCBpbml0TWVzc2FnZUV2ZW50KGNvbnN0IFdlYlN0cmluZyYg
dHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgY29uc3QgV2ViU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlJiBtZXNzYWdlRGF0YSwgY29uc3QgV2ViU3RyaW5nJiBvcmlnaW4sIGNvbnN0
IFdlYkZyYW1lKiBzb3VyY2VGcmFtZSwgY29uc3QgV2ViU3RyaW5nJiBsYXN0RXZlbnRJZCk7CiAK
ICAgICBXRUJLSVRfRVhQT1JUIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBkYXRhKCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Fzc29jaWF0ZWRVUkxM
b2FkZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQXNzb2NpYXRlZFVS
TExvYWRlclRlc3QuY3BwCmluZGV4IDAzNTU5ZjdmMTE5YWFhYTg2NmNmMDM3NmY1YTQ0YmNmMjU5
ZDdjOGMuLjcwNTFiZjlkNjcwNmViNDYzMTE1N2RhZmE5MDVmNjBlZGJjYTZjY2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQXNzb2NpYXRlZFVSTExvYWRlclRlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQXNzb2NpYXRlZFVSTExvYWRl
clRlc3QuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAorI2lu
Y2x1ZGUgIlVSTFRlc3RIZWxwZXJzLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRl
ICJXZWJGcmFtZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYlVSTExvYWRlck9wdGlvbnMuaCIKQEAg
LTQyLDExICs0MywxMSBAQAogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlVSTFJlc3BvbnNlLmgiCiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNpbmNsdWRlIDxnb29nbGV1cmwvc3Jj
L2d1cmwuaD4KICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdC9zdXBw
b3J0L3dlYmtpdF9zdXBwb3J0Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBX
ZWJLaXQ6OlVSTFRlc3RIZWxwZXJzOjp0b0tVUkw7CiAKIG5hbWVzcGFjZSB7CiAKQEAgLTc2LDkg
Kzc3LDkgQEAgcHVibGljOgogICAgICAgICAsICBtX3J1bm5pbmdNZXNzYWdlTG9vcChmYWxzZSkK
ICAgICB7CiAgICAgICAgIC8vIFJldXNlIG9uZSBvZiB0aGUgdGVzdCBmaWxlcyBmcm9tIFdlYkZy
YW1lVGVzdC4KLSAgICAgICAgc3RkOjpzdHJpbmcgZmlsZVBhdGggPSB3ZWJraXRfc3VwcG9ydDo6
R2V0V2ViS2l0Um9vdERpcigpLnV0ZjgoKTsKKyAgICAgICAgc3RkOjpzdHJpbmcgZmlsZVBhdGgg
PSBzdGQ6OnN0cmluZyh3ZWJraXRfc3VwcG9ydDo6R2V0V2ViS2l0Um9vdERpcigpLnV0ZjgoKS5k
YXRhKCkpOwogICAgICAgICBmaWxlUGF0aCArPSAiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvZGF0YS9pZnJhbWVzX3Rlc3QuaHRtbCI7Ci0gICAgICAgIG1fZnJhbWVGaWxlUGF0aCA9IFdl
YlN0cmluZzo6ZnJvbVVURjgoZmlsZVBhdGgpOworICAgICAgICBtX2ZyYW1lRmlsZVBhdGggPSBX
ZWJTdHJpbmc6OmZyb21VVEY4KGZpbGVQYXRoLmNfc3RyKCkpOwogICAgIH0KIAogICAgIHZvaWQg
U2V0VXAoKQpAQCAtODcsNyArODgsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fd2ViVmlldy0+aW5p
dGlhbGl6ZU1haW5GcmFtZSgmbV93ZWJGcmFtZUNsaWVudCk7CiAKICAgICAgICAgLy8gTG9hZCB0
aGUgZnJhbWUgYmVmb3JlIHRyeWluZyB0byBsb2FkIHJlc291cmNlcy4KLSAgICAgICAgR1VSTCB1
cmwgPSBHVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tL2lmcmFtZXNfdGVzdC5odG1sIik7CisgICAg
ICAgIFdlYkNvcmU6OktVUkwgdXJsID0gdG9LVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tL2lmcmFt
ZXNfdGVzdC5odG1sIik7CiAgICAgICAgIFdlYlVSTFJlc3BvbnNlIHJlc3BvbnNlOwogICAgICAg
ICByZXNwb25zZS5pbml0aWFsaXplKCk7CiAgICAgICAgIHJlc3BvbnNlLnNldE1JTUVUeXBlKCJ0
ZXh0L2h0bWwiKTsKQEAgLTE4NCw3ICsxODUsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBX
ZWJVUkxSZXF1ZXN0IHJlcXVlc3Q7CiAgICAgICAgIHJlcXVlc3QuaW5pdGlhbGl6ZSgpOwotICAg
ICAgICByZXF1ZXN0LnNldFVSTChHVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tL3N1Y2Nlc3MuaHRt
bCIpKTsKKyAgICAgICAgcmVxdWVzdC5zZXRVUkwodG9LVVJMKCJodHRwOi8vd3d3LnRlc3QuY29t
L3N1Y2Nlc3MuaHRtbCIpKTsKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKFdlYlN0cmlu
Zzo6ZnJvbVVURjgodW5zYWZlTWV0aG9kKSk7CiAgICAgICAgIFdlYlVSTExvYWRlck9wdGlvbnMg
b3B0aW9uczsKICAgICAgICAgb3B0aW9ucy51bnRydXN0ZWRIVFRQID0gdHJ1ZTsKQEAgLTIwMCw3
ICsyMDEsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBXZWJVUkxSZXF1ZXN0IHJlcXVlc3Q7
CiAgICAgICAgIHJlcXVlc3QuaW5pdGlhbGl6ZSgpOwotICAgICAgICByZXF1ZXN0LnNldFVSTChH
VVJMKCJodHRwOi8vd3d3LnRlc3QuY29tL3N1Y2Nlc3MuaHRtbCIpKTsKKyAgICAgICAgcmVxdWVz
dC5zZXRVUkwodG9LVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tL3N1Y2Nlc3MuaHRtbCIpKTsKICAg
ICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoV2ViU3RyaW5nOjpmcm9tVVRGOChoZWFk
ZXJGaWVsZCksIFdlYlN0cmluZzo6ZnJvbVVURjgoaGVhZGVyVmFsdWUpKTsKICAgICAgICAgV2Vi
VVJMTG9hZGVyT3B0aW9ucyBvcHRpb25zOwogICAgICAgICBvcHRpb25zLnVudHJ1c3RlZEhUVFAg
PSB0cnVlOwpAQCAtMjMwLDcgKzIzMSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGlkLmFwcGVu
ZCgiLUV4cG9zZWQiKTsKICAgICAgICAgaWQuYXBwZW5kKCIuaHRtbCIpOwogCi0gICAgICAgIEdV
UkwgdXJsID0gR1VSTChpZCk7CisgICAgICAgIFdlYkNvcmU6OktVUkwgdXJsID0gdG9LVVJMKGlk
KTsKICAgICAgICAgV2ViVVJMUmVxdWVzdCByZXF1ZXN0OwogICAgICAgICByZXF1ZXN0LmluaXRp
YWxpemUoKTsKICAgICAgICAgcmVxdWVzdC5zZXRVUkwodXJsKTsKQEAgLTI4Miw3ICsyODMsNyBA
QCBwcm90ZWN0ZWQ6CiAvLyBUZXN0IGEgc3VjY2Vzc2Z1bCBzYW1lLW9yaWdpbiBVUkwgbG9hZC4K
IFRFU1RfRihBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdCwgU2FtZU9yaWdpblN1Y2Nlc3MpCiB7Ci0g
ICAgR1VSTCB1cmwgPSBHVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tL1NhbWVPcmlnaW5TdWNjZXNz
Lmh0bWwiKTsKKyAgICBXZWJDb3JlOjpLVVJMIHVybCA9IHRvS1VSTCgiaHR0cDovL3d3dy50ZXN0
LmNvbS9TYW1lT3JpZ2luU3VjY2Vzcy5odG1sIik7CiAgICAgV2ViVVJMUmVxdWVzdCByZXF1ZXN0
OwogICAgIHJlcXVlc3QuaW5pdGlhbGl6ZSgpOwogICAgIHJlcXVlc3Quc2V0VVJMKHVybCk7CkBA
IC0zMDUsNyArMzA2LDcgQEAgVEVTVF9GKEFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0LCBTYW1lT3Jp
Z2luU3VjY2VzcykKIFRFU1RfRihBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdCwgU2FtZU9yaWdpblJl
c3RyaWN0aW9uKQogewogICAgIC8vIFRoaXMgaXMgY3Jvc3Mtb3JpZ2luIHNpbmNlIHRoZSBmcmFt
ZSB3YXMgbG9hZGVkIGZyb20gd3d3LnRlc3QuY29tLgotICAgIEdVUkwgdXJsID0gR1VSTCgiaHR0
cDovL3d3dy5vdGhlci5jb20vU2FtZU9yaWdpblJlc3RyaWN0aW9uLmh0bWwiKTsKKyAgICBXZWJD
b3JlOjpLVVJMIHVybCA9IHRvS1VSTCgiaHR0cDovL3d3dy5vdGhlci5jb20vU2FtZU9yaWdpblJl
c3RyaWN0aW9uLmh0bWwiKTsKICAgICBXZWJVUkxSZXF1ZXN0IHJlcXVlc3Q7CiAgICAgcmVxdWVz
dC5pbml0aWFsaXplKCk7CiAgICAgcmVxdWVzdC5zZXRVUkwodXJsKTsKQEAgLTMxNiw3ICszMTcs
NyBAQCBURVNUX0YoQXNzb2NpYXRlZFVSTExvYWRlclRlc3QsIFNhbWVPcmlnaW5SZXN0cmljdGlv
bikKIFRFU1RfRihBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdCwgQ3Jvc3NPcmlnaW5TdWNjZXNzKQog
ewogICAgIC8vIFRoaXMgaXMgY3Jvc3Mtb3JpZ2luIHNpbmNlIHRoZSBmcmFtZSB3YXMgbG9hZGVk
IGZyb20gd3d3LnRlc3QuY29tLgotICAgIEdVUkwgdXJsID0gR1VSTCgiaHR0cDovL3d3dy5vdGhl
ci5jb20vQ3Jvc3NPcmlnaW5TdWNjZXNzLmh0bWwiKTsKKyAgICBXZWJDb3JlOjpLVVJMIHVybCA9
IHRvS1VSTCgiaHR0cDovL3d3dy5vdGhlci5jb20vQ3Jvc3NPcmlnaW5TdWNjZXNzLmh0bWwiKTsK
ICAgICBXZWJVUkxSZXF1ZXN0IHJlcXVlc3Q7CiAgICAgcmVxdWVzdC5pbml0aWFsaXplKCk7CiAg
ICAgcmVxdWVzdC5zZXRVUkwodXJsKTsKQEAgLTM0MSw3ICszNDIsNyBAQCBURVNUX0YoQXNzb2Np
YXRlZFVSTExvYWRlclRlc3QsIENyb3NzT3JpZ2luU3VjY2VzcykKIFRFU1RfRihBc3NvY2lhdGVk
VVJMTG9hZGVyVGVzdCwgQ3Jvc3NPcmlnaW5XaXRoQWNjZXNzQ29udHJvbFN1Y2Nlc3MpCiB7CiAg
ICAgLy8gVGhpcyBpcyBjcm9zcy1vcmlnaW4gc2luY2UgdGhlIGZyYW1lIHdhcyBsb2FkZWQgZnJv
bSB3d3cudGVzdC5jb20uCi0gICAgR1VSTCB1cmwgPSBHVVJMKCJodHRwOi8vd3d3Lm90aGVyLmNv
bS9Dcm9zc09yaWdpbldpdGhBY2Nlc3NDb250cm9sU3VjY2Vzcy5odG1sIik7CisgICAgV2ViQ29y
ZTo6S1VSTCB1cmwgPSB0b0tVUkwoImh0dHA6Ly93d3cub3RoZXIuY29tL0Nyb3NzT3JpZ2luV2l0
aEFjY2Vzc0NvbnRyb2xTdWNjZXNzLmh0bWwiKTsKICAgICBXZWJVUkxSZXF1ZXN0IHJlcXVlc3Q7
CiAgICAgcmVxdWVzdC5pbml0aWFsaXplKCk7CiAgICAgcmVxdWVzdC5zZXRVUkwodXJsKTsKQEAg
LTM2Nyw3ICszNjgsNyBAQCBURVNUX0YoQXNzb2NpYXRlZFVSTExvYWRlclRlc3QsIENyb3NzT3Jp
Z2luV2l0aEFjY2Vzc0NvbnRyb2xTdWNjZXNzKQogVEVTVF9GKEFzc29jaWF0ZWRVUkxMb2FkZXJU
ZXN0LCBDcm9zc09yaWdpbldpdGhBY2Nlc3NDb250cm9sRmFpbHVyZSkKIHsKICAgICAvLyBUaGlz
IGlzIGNyb3NzLW9yaWdpbiBzaW5jZSB0aGUgZnJhbWUgd2FzIGxvYWRlZCBmcm9tIHd3dy50ZXN0
LmNvbS4KLSAgICBHVVJMIHVybCA9IEdVUkwoImh0dHA6Ly93d3cub3RoZXIuY29tL0Nyb3NzT3Jp
Z2luV2l0aEFjY2Vzc0NvbnRyb2xGYWlsdXJlLmh0bWwiKTsKKyAgICBXZWJDb3JlOjpLVVJMIHVy
bCA9IHRvS1VSTCgiaHR0cDovL3d3dy5vdGhlci5jb20vQ3Jvc3NPcmlnaW5XaXRoQWNjZXNzQ29u
dHJvbEZhaWx1cmUuaHRtbCIpOwogICAgIFdlYlVSTFJlcXVlc3QgcmVxdWVzdDsKICAgICByZXF1
ZXN0LmluaXRpYWxpemUoKTsKICAgICByZXF1ZXN0LnNldFVSTCh1cmwpOwpAQCAtMzk4LDkgKzM5
OSw5IEBAIFRFU1RfRihBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdCwgQ3Jvc3NPcmlnaW5XaXRoQWNj
ZXNzQ29udHJvbEZhaWx1cmUpCiAvLyBUZXN0IGEgc2FtZS1vcmlnaW4gVVJMIHJlZGlyZWN0IGFu
ZCBsb2FkLgogVEVTVF9GKEFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0LCBSZWRpcmVjdFN1Y2Nlc3Mp
CiB7Ci0gICAgR1VSTCB1cmwgPSBHVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tL1JlZGlyZWN0U3Vj
Y2Vzcy5odG1sIik7CisgICAgV2ViQ29yZTo6S1VSTCB1cmwgPSB0b0tVUkwoImh0dHA6Ly93d3cu
dGVzdC5jb20vUmVkaXJlY3RTdWNjZXNzLmh0bWwiKTsKICAgICBjaGFyIHJlZGlyZWN0W10gPSAi
aHR0cDovL3d3dy50ZXN0LmNvbS9SZWRpcmVjdFN1Y2Nlc3MyLmh0bWwiOyAgLy8gU2FtZS1vcmln
aW4KLSAgICBHVVJMIHJlZGlyZWN0VVJMID0gR1VSTChyZWRpcmVjdCk7CisgICAgV2ViQ29yZTo6
S1VSTCByZWRpcmVjdFVSTCA9IHRvS1VSTChyZWRpcmVjdCk7CiAKICAgICBXZWJVUkxSZXF1ZXN0
IHJlcXVlc3Q7CiAgICAgcmVxdWVzdC5pbml0aWFsaXplKCk7CkBAIC00MzUsOSArNDM2LDkgQEAg
VEVTVF9GKEFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0LCBSZWRpcmVjdFN1Y2Nlc3MpCiAvLyBUZXN0
IHRoYXQgYSBjcm9zcyBvcmlnaW4gcmVkaXJlY3QgcmVzcG9uc2Ugd2l0aG91dCBDT1JTIGhlYWRl
cnMgZmFpbHMuCiBURVNUX0YoQXNzb2NpYXRlZFVSTExvYWRlclRlc3QsIFJlZGlyZWN0Q3Jvc3NP
cmlnaW5XaXRoQWNjZXNzQ29udHJvbEZhaWx1cmUpCiB7Ci0gICAgR1VSTCB1cmwgPSBHVVJMKCJo
dHRwOi8vd3d3LnRlc3QuY29tL1JlZGlyZWN0Q3Jvc3NPcmlnaW5XaXRoQWNjZXNzQ29udHJvbEZh
aWx1cmUuaHRtbCIpOworICAgIFdlYkNvcmU6OktVUkwgdXJsID0gdG9LVVJMKCJodHRwOi8vd3d3
LnRlc3QuY29tL1JlZGlyZWN0Q3Jvc3NPcmlnaW5XaXRoQWNjZXNzQ29udHJvbEZhaWx1cmUuaHRt
bCIpOwogICAgIGNoYXIgcmVkaXJlY3RbXSA9ICJodHRwOi8vd3d3Lm90aGVyLmNvbS9SZWRpcmVj
dENyb3NzT3JpZ2luV2l0aEFjY2Vzc0NvbnRyb2xGYWlsdXJlLmh0bWwiOyAgLy8gQ3Jvc3Mtb3Jp
Z2luCi0gICAgR1VSTCByZWRpcmVjdFVSTCA9IEdVUkwocmVkaXJlY3QpOworICAgIFdlYkNvcmU6
OktVUkwgcmVkaXJlY3RVUkwgPSB0b0tVUkwocmVkaXJlY3QpOwogCiAgICAgV2ViVVJMUmVxdWVz
dCByZXF1ZXN0OwogICAgIHJlcXVlc3QuaW5pdGlhbGl6ZSgpOwpAQCAtNDY3LDkgKzQ2OCw5IEBA
IFRFU1RfRihBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdCwgUmVkaXJlY3RDcm9zc09yaWdpbldpdGhB
Y2Nlc3NDb250cm9sRmFpbHVyZSkKIC8vIFRlc3QgdGhhdCBhIGNyb3NzIG9yaWdpbiByZWRpcmVj
dCByZXNwb25zZSB3aXRoIENPUlMgaGVhZGVycyB0aGF0IGFsbG93IHRoZSByZXF1ZXN0aW5nIG9y
aWdpbiBzdWNjZWVkcy4KIFRFU1RfRihBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdCwgUmVkaXJlY3RD
cm9zc09yaWdpbldpdGhBY2Nlc3NDb250cm9sU3VjY2VzcykKIHsKLSAgICBHVVJMIHVybCA9IEdV
UkwoImh0dHA6Ly93d3cudGVzdC5jb20vUmVkaXJlY3RDcm9zc09yaWdpbldpdGhBY2Nlc3NDb250
cm9sU3VjY2Vzcy5odG1sIik7CisgICAgV2ViQ29yZTo6S1VSTCB1cmwgPSB0b0tVUkwoImh0dHA6
Ly93d3cudGVzdC5jb20vUmVkaXJlY3RDcm9zc09yaWdpbldpdGhBY2Nlc3NDb250cm9sU3VjY2Vz
cy5odG1sIik7CiAgICAgY2hhciByZWRpcmVjdFtdID0gImh0dHA6Ly93d3cub3RoZXIuY29tL1Jl
ZGlyZWN0Q3Jvc3NPcmlnaW5XaXRoQWNjZXNzQ29udHJvbFN1Y2Nlc3MuaHRtbCI7ICAvLyBDcm9z
cy1vcmlnaW4KLSAgICBHVVJMIHJlZGlyZWN0VVJMID0gR1VSTChyZWRpcmVjdCk7CisgICAgV2Vi
Q29yZTo6S1VSTCByZWRpcmVjdFVSTCA9IHRvS1VSTChyZWRpcmVjdCk7CiAKICAgICBXZWJVUkxS
ZXF1ZXN0IHJlcXVlc3Q7CiAgICAgcmVxdWVzdC5pbml0aWFsaXplKCk7CkBAIC01OTAsNyArNTkx
LDcgQEAgVEVTVF9GKEFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0LCBDcm9zc09yaWdpbkhlYWRlckFs
bG93UmVzcG9uc2VIZWFkZXJzKQogewogICAgIFdlYlVSTFJlcXVlc3QgcmVxdWVzdDsKICAgICBy
ZXF1ZXN0LmluaXRpYWxpemUoKTsKLSAgICBHVVJMIHVybCA9IEdVUkwoImh0dHA6Ly93d3cub3Ro
ZXIuY29tL0Nyb3NzT3JpZ2luSGVhZGVyQWxsb3dSZXNwb25zZUhlYWRlcnMuaHRtbCIpOworICAg
IFdlYkNvcmU6OktVUkwgdXJsID0gdG9LVVJMKCJodHRwOi8vd3d3Lm90aGVyLmNvbS9Dcm9zc09y
aWdpbkhlYWRlckFsbG93UmVzcG9uc2VIZWFkZXJzLmh0bWwiKTsKICAgICByZXF1ZXN0LnNldFVS
TCh1cmwpOwogCiAgICAgV2ViU3RyaW5nIGhlYWRlck5hbWVTdHJpbmcoV2ViU3RyaW5nOjpmcm9t
VVRGOCgibm9uLXdoaXRlbGlzdGVkIikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9FdmVudExpc3RlbmVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0V2ZW50TGlzdGVuZXJUZXN0LmNwcAppbmRleCA3OTlhYzQwMDdjNWM5MWU2MDRmYzcz
ZmQ2ZGQ5YzAxMjBiYTRjZDJhLi40MjU1NDY5NTI1MWViYzA3ZjFlYzJiY2ZiNjJjYzY1NmI2YzI5
N2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0V2ZW50TGlzdGVu
ZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0V2ZW50TGlzdGVu
ZXJUZXN0LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW5j
bHVkZSAiRnJhbWVUZXN0SGVscGVycy5oIgorI2luY2x1ZGUgIlVSTFRlc3RIZWxwZXJzLmgiCiAj
aW5jbHVkZSAiV2ViRE9NRXZlbnQuaCIKICNpbmNsdWRlICJXZWJET01FdmVudExpc3RlbmVyLmgi
CiAjaW5jbHVkZSAiV2ViRE9NTXV0YXRpb25FdmVudC5oIgpAQCAtNzgsNyArNzksNyBAQCBwdWJs
aWM6CiAgICAgICAgIHN0ZDo6c3RyaW5nIGJhc2VVUkwoImh0dHA6Ly93d3cuZXhhbXBsZS5jb20v
Iik7CiAgICAgICAgIHN0ZDo6c3RyaW5nIGZpbGVOYW1lKCJsaXN0ZW5lci9tdXRhdGlvbl9ldmVu
dF9saXN0ZW5lci5odG1sIik7CiAgICAgICAgIGJvb2wgZXhlY3V0ZVNjcmlwdCA9IHRydWU7Ci0g
ICAgICAgIEZyYW1lVGVzdEhlbHBlcnM6OnJlZ2lzdGVyTW9ja2VkVVJMTG9hZChiYXNlVVJMLCBm
aWxlTmFtZSk7CisgICAgICAgIFVSTFRlc3RIZWxwZXJzOjpyZWdpc3Rlck1vY2tlZFVSTEZyb21C
YXNlVVJMKFdlYlN0cmluZzo6ZnJvbVVURjgoYmFzZVVSTC5jX3N0cigpKSwgV2ViU3RyaW5nOjpm
cm9tVVRGOChmaWxlTmFtZS5jX3N0cigpKSk7CiAgICAgICAgIG1fd2ViVmlldyA9IEZyYW1lVGVz
dEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKGJhc2VVUkwgKyBmaWxlTmFtZSwgZXhlY3V0
ZVNjcmlwdCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0ZyYW1lVGVzdEhlbHBlcnMuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9G
cmFtZVRlc3RIZWxwZXJzLmNwcAppbmRleCBlNDA2NDEzZGQ5NWViMzJjM2UwMmFhMzc1MjZhMzNj
NTczM2QyNjliLi5hMmIxNjc1YzA5YmVlYjQ2NDZmZGQzMDMzYWQzYmM4NzRkMjVhZDk4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ZyYW1lVGVzdEhlbHBlcnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRnJhbWVUZXN0SGVscGVycy5jcHAK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGcmFtZVRl
c3RIZWxwZXJzLmgiCiAKKyNpbmNsdWRlICJVUkxUZXN0SGVscGVycy5oIgogI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYkZy
YW1lQ2xpZW50LmgiCkBAIC00MCwzNSArNDEsMTYgQEAKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJV
UkxSZXNwb25zZS5oIgogI2luY2x1ZGUgIldlYlZpZXcuaCIKICNpbmNsdWRlICJXZWJWaWV3Q2xp
ZW50LmgiCi0jaW5jbHVkZSA8Z29vZ2xldXJsL3NyYy9ndXJsLmg+CiAjaW5jbHVkZSA8d2Via2l0
L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiBuYW1lc3Bh
Y2UgRnJhbWVUZXN0SGVscGVycyB7CiAKLXZvaWQgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKGNvbnN0
IHN0ZDo6c3RyaW5nJiBiYXNlLCBjb25zdCBzdGQ6OnN0cmluZyYgZmlsZU5hbWUpCi17Ci0gICAg
cmVnaXN0ZXJNb2NrZWRVUkxMb2FkKEdVUkwoYmFzZSArIGZpbGVOYW1lKSwgZmlsZU5hbWUpOwot
fQotCi12b2lkIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZChHVVJMIHVybCwgY29uc3Qgc3RkOjpzdHJp
bmcmIGZpbGVOYW1lKQotewotICAgIFdlYlVSTFJlc3BvbnNlIHJlc3BvbnNlOwotICAgIHJlc3Bv
bnNlLmluaXRpYWxpemUoKTsKLSAgICByZXNwb25zZS5zZXRNSU1FVHlwZSgidGV4dC9odG1sIik7
Ci0KLSAgICBzdGQ6OnN0cmluZyBmaWxlUGF0aCA9IHdlYmtpdF9zdXBwb3J0OjpHZXRXZWJLaXRS
b290RGlyKCkudXRmOCgpOwotICAgIGZpbGVQYXRoICs9ICIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9kYXRhLyI7Ci0gICAgZmlsZVBhdGggKz0gZmlsZU5hbWU7Ci0KLSAgICB3ZWJraXRf
c3VwcG9ydDo6UmVnaXN0ZXJNb2NrZWRVUkwodXJsLCByZXNwb25zZSwgV2ViU3RyaW5nOjpmcm9t
VVRGOChmaWxlUGF0aCkpOwotfQotCiB2b2lkIGxvYWRGcmFtZShXZWJGcmFtZSogZnJhbWUsIGNv
bnN0IHN0ZDo6c3RyaW5nJiB1cmwpCiB7CiAgICAgV2ViVVJMUmVxdWVzdCB1cmxSZXF1ZXN0Owog
ICAgIHVybFJlcXVlc3QuaW5pdGlhbGl6ZSgpOwotICAgIHVybFJlcXVlc3Quc2V0VVJMKEdVUkwo
dXJsKSk7CisgICAgdXJsUmVxdWVzdC5zZXRVUkwoVVJMVGVzdEhlbHBlcnM6OnRvS1VSTCh1cmwp
KTsKICAgICBmcmFtZS0+bG9hZFJlcXVlc3QodXJsUmVxdWVzdCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRnJhbWVUZXN0SGVscGVycy5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GcmFtZVRlc3RIZWxwZXJzLmgKaW5kZXggZmMyZmEyZDM2
MWIwMWUwYjhhYjMxMDJkNjBlNzA0MmEzMGQwZTM4Yy4uYmZiNTdiNjdjZDI5MDEwZTg2N2NkMmJl
ODVmMTM0ZWZjZWI3ZDk0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9GcmFtZVRlc3RIZWxwZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9G
cmFtZVRlc3RIZWxwZXJzLmgKQEAgLTMzLDggKzMzLDYgQEAKIAogI2luY2x1ZGUgPHN0cmluZz4K
IAotY2xhc3MgR1VSTDsKLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkZyYW1lOwpA
QCAtNDQsMTAgKzQyLDYgQEAgY2xhc3MgV2ViVmlld0NsaWVudDsKIAogbmFtZXNwYWNlIEZyYW1l
VGVzdEhlbHBlcnMgewogCi12b2lkIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZChjb25zdCBzdGQ6OnN0
cmluZyYgYmFzZSwgY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVOYW1lKTsKLS8vIExpa2UgdGhlIHBy
ZXZpb3VzIG92ZXJsb2FkLCBidXQgaXQgYWxsb3dzIG1vcmUgZmxleGliaWxpdHkgaW4gdGhlIHVy
bCBzaW5jZSBpdCBpcyBnaXZlbiBieSB0aGUgY2FsbGVyLgotdm9pZCByZWdpc3Rlck1vY2tlZFVS
TExvYWQoR1VSTCwgY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVOYW1lKTsKLQogdm9pZCBsb2FkRnJh
bWUoV2ViRnJhbWUqLCBjb25zdCBzdGQ6OnN0cmluZyYgdXJsKTsKIAogV2ViVmlldyogY3JlYXRl
V2ViVmlld0FuZExvYWQoY29uc3Qgc3RkOjpzdHJpbmcmIHVybCwgYm9vbCBlbmFibGVKYXZhc2Ny
aXB0ID0gZmFsc2UsIFdlYkZyYW1lQ2xpZW50KiA9IDAsIFdlYlZpZXdDbGllbnQqID0gMCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xpc3RlbmVyTGVha1Rlc3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MaXN0ZW5lckxlYWtUZXN0LmNwcApp
bmRleCA1ZTMyMWM3MGQ4YTY3ODBjYjMyMWUwODAyZTM4OWY5ZTFkNTdlNzg3Li5iMGY3MDBhMGNi
NWQyY2M3YTQ0OWRhNTcwNGUxNDEyODExNTY4N2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0xpc3RlbmVyTGVha1Rlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvTGlzdGVuZXJMZWFrVGVzdC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1ZGUgIkZyYW1lVGVzdEhlbHBlcnMuaCIKKyNpbmNs
dWRlICJVUkxUZXN0SGVscGVycy5oIgogI2luY2x1ZGUgIldlYlZpZXcuaCIKICNpbmNsdWRlIDxn
dGVzdC9ndGVzdC5oPgogI2luY2x1ZGUgPHY4L2luY2x1ZGUvdjgtcHJvZmlsZXIuaD4KQEAgLTkw
LDcgKzkxLDcgQEAgcHVibGljOgogICAgICAgICBzdGQ6OnN0cmluZyBiYXNlVVJMKCJodHRwOi8v
d3d3LmV4YW1wbGUuY29tLyIpOwogICAgICAgICBzdGQ6OnN0cmluZyBmaWxlTmFtZShmaWxlbmFt
ZSk7CiAgICAgICAgIGJvb2wgZXhlY3V0ZVNjcmlwdCA9IHRydWU7Ci0gICAgICAgIEZyYW1lVGVz
dEhlbHBlcnM6OnJlZ2lzdGVyTW9ja2VkVVJMTG9hZChiYXNlVVJMLCBmaWxlTmFtZSk7CisgICAg
ICAgIFVSTFRlc3RIZWxwZXJzOjpyZWdpc3Rlck1vY2tlZFVSTEZyb21CYXNlVVJMKFdlYlN0cmlu
Zzo6ZnJvbVVURjgoYmFzZVVSTC5jX3N0cigpKSwgV2ViU3RyaW5nOjpmcm9tVVRGOChmaWxlTmFt
ZS5jX3N0cigpKSk7CiAgICAgICAgIG1fd2ViVmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0
ZVdlYlZpZXdBbmRMb2FkKGJhc2VVUkwgKyBmaWxlTmFtZSwgZXhlY3V0ZVNjcmlwdCk7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1BvcHVwTWVudVRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Qb3B1cE1lbnVUZXN0LmNwcApp
bmRleCA3YWNiMzExNDk1NzFlNzZmYWRiMzE0ZjZiZTk5NmIzMTY5ZDc2YjRhLi41OWMyMzM2MzI1
ZDAxMzI5YWRlNWUxNmFhMGNhMmM3MWNhMzgzYmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL1BvcHVwTWVudVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvUG9wdXBNZW51VGVzdC5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRl
ICJQb3B1cE1lbnVDbGllbnQuaCIKICNpbmNsdWRlICJQb3B1cE1lbnVDaHJvbWl1bS5oIgogI2lu
Y2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKKyNpbmNsdWRlICJVUkxUZXN0SGVscGVy
cy5oIgogI2luY2x1ZGUgIldlYkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiV2ViRWxlbWVudC5oIgog
I2luY2x1ZGUgIldlYkZyYW1lLmgiCkBAIC02Myw2ICs2NCw3IEBACiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIFdlYktpdDo6VVJMVGVz
dEhlbHBlcnM6OnRvS1VSTDsKIAogbmFtZXNwYWNlIHsKIApAQCAtMjQ5LDE1ICsyNTEsNyBAQCBw
cm90ZWN0ZWQ6CiAKICAgICB2b2lkIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZChjb25zdCBzdGQ6OnN0
cmluZyYgZmlsZU5hbWUpCiAgICAgewotICAgICAgICBXZWJVUkxSZXNwb25zZSByZXNwb25zZTsK
LSAgICAgICAgcmVzcG9uc2UuaW5pdGlhbGl6ZSgpOwotICAgICAgICByZXNwb25zZS5zZXRNSU1F
VHlwZSgidGV4dC9odG1sIik7Ci0KLSAgICAgICAgc3RkOjpzdHJpbmcgZmlsZVBhdGggPSB3ZWJr
aXRfc3VwcG9ydDo6R2V0V2ViS2l0Um9vdERpcigpLnV0ZjgoKTsKLSAgICAgICAgZmlsZVBhdGgg
Kz0gIi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvcG9wdXAvIjsKLSAgICAgICAg
ZmlsZVBhdGggKz0gZmlsZU5hbWU7Ci0KLSAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlJlZ2lzdGVy
TW9ja2VkVVJMKFdlYlVSTChHVVJMKGJhc2VVUkwgKyBmaWxlTmFtZSkpLCByZXNwb25zZSwgV2Vi
U3RyaW5nOjpmcm9tVVRGOChmaWxlUGF0aCkpOworICAgICAgICBVUkxUZXN0SGVscGVyczo6cmVn
aXN0ZXJNb2NrZWRVUkxMb2FkKHRvS1VSTChiYXNlVVJMICsgZmlsZU5hbWUpLCBXZWJTdHJpbmc6
OmZyb21VVEY4KGZpbGVOYW1lLmNfc3RyKCkpLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJwb3B1cC8i
KSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgidGV4dC9odG1sIikpOwogICAgIH0KIAogICAgIHZvaWQg
c2VydmVSZXF1ZXN0cygpCkBAIC0yNjksNyArMjYzLDcgQEAgcHJvdGVjdGVkOgogICAgIHsKICAg
ICAgICAgV2ViVVJMUmVxdWVzdCB1cmxSZXF1ZXN0OwogICAgICAgICB1cmxSZXF1ZXN0LmluaXRp
YWxpemUoKTsKLSAgICAgICAgdXJsUmVxdWVzdC5zZXRVUkwoV2ViVVJMKEdVUkwoYmFzZVVSTCAr
IGZpbGVOYW1lKSkpOworICAgICAgICB1cmxSZXF1ZXN0LnNldFVSTChXZWJVUkwodG9LVVJMKGJh
c2VVUkwgKyBmaWxlTmFtZSkpKTsKICAgICAgICAgZnJhbWUtPmxvYWRSZXF1ZXN0KHVybFJlcXVl
c3QpOwogICAgIH0KIApAQCAtNDI3LDcgKzQyMSw3IEBAIFRFU1RfRihTZWxlY3RQb3B1cE1lbnVU
ZXN0LCBESVNBQkxFRF9TZWxlY3RJdGVtRXZlbnRGaXJlKQogCiAgICAgLy8gbW91c2Vkb3duIGV2
ZW50IGlzIGhlbGQgYnkgc2VsZWN0IG5vZGUsIGFuZCB3ZSBkb24ndCBzaW11bGF0ZSB0aGUgZXZl
bnQgZm9yIHRoZSBub2RlLgogICAgIC8vIFNvIHdlIGNhbiBvbmx5IHNlZSBtb3VzZXVwIGFuZCBj
bGljayBldmVudC4KLSAgICBFWFBFQ1RfU1RSRVEoInVwY2xpY2siLCBzdGQ6OnN0cmluZyhlbGVt
ZW50LmlubmVyVGV4dCgpLnV0ZjgoKSkuY19zdHIoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJ1cGNs
aWNrIiwgZWxlbWVudC5pbm5lclRleHQoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIC8vIERpc2Fi
bGUgdGhlIGl0ZW0gYXQgaW5kZXggMS4KICAgICBtX3BvcHVwTWVudUNsaWVudC5zZXREaXNhYmxl
ZEluZGV4KDEpOwpAQCAtNDM5LDcgKzQzMyw3IEBAIFRFU1RfRihTZWxlY3RQb3B1cE1lbnVUZXN0
LCBESVNBQkxFRF9TZWxlY3RJdGVtRXZlbnRGaXJlKQogICAgIHNpbXVsYXRlTGVmdE1vdXNlVXBF
dmVudChyb3cxUG9pbnQpOwogCiAgICAgLy8gVGhlIGl0ZW0gYXQgaW5kZXggMSBpcyBkaXNhYmxl
ZCwgc28gdGhlIHRleHQgc2hvdWxkIG5vdCBiZSBjaGFuZ2VkLgotICAgIEVYUEVDVF9TVFJFUSgi
dXBjbGljayIsIHN0ZDo6c3RyaW5nKGVsZW1lbnQuaW5uZXJUZXh0KCkudXRmOCgpKS5jX3N0cigp
KTsKKyAgICBFWFBFQ1RfU1RSRVEoInVwY2xpY2siLCBlbGVtZW50LmlubmVyVGV4dCgpLnV0Zjgo
KS5kYXRhKCkpOwogCiAgICAgc2hvd1BvcHVwKCk7CiAgICAgLy8gbWVudUl0ZW1IZWlnaHQgKiAy
LjUgbWVhbnMgdGhlIFkgcG9zaXRpb24gb24gdGhlIGl0ZW0gYXQgaW5kZXggMi4KQEAgLTQ0OCw3
ICs0NDIsNyBAQCBURVNUX0YoU2VsZWN0UG9wdXBNZW51VGVzdCwgRElTQUJMRURfU2VsZWN0SXRl
bUV2ZW50RmlyZSkKICAgICBzaW11bGF0ZUxlZnRNb3VzZVVwRXZlbnQocm93MVBvaW50KTsKIAog
ICAgIC8vIFRoZSBpdGVtIGlzIGNoYW5nZWQgdG8gdGhlIGl0ZW0gYXQgaW5kZXggMiwgZnJvbSBp
bmRleCAwLCBzbyBjaGFuZ2UgZXZlbnQgaXMgZmlyZWQuCi0gICAgRVhQRUNUX1NUUkVRKCJ1cGNs
aWNrY2hhbmdldXBjbGljayIsIHN0ZDo6c3RyaW5nKGVsZW1lbnQuaW5uZXJUZXh0KCkudXRmOCgp
KS5jX3N0cigpKTsKKyAgICBFWFBFQ1RfU1RSRVEoInVwY2xpY2tjaGFuZ2V1cGNsaWNrIiwgZWxl
bWVudC5pbm5lclRleHQoKS51dGY4KCkuZGF0YSgpKTsKIH0KIAogVEVTVF9GKFNlbGVjdFBvcHVw
TWVudVRlc3QsIEZMQUtZX1NlbGVjdEl0ZW1LZXlFdmVudCkKQEAgLTQ2OSw3ICs0NjMsNyBAQCBU
RVNUX0YoU2VsZWN0UG9wdXBNZW51VGVzdCwgRkxBS1lfU2VsZWN0SXRlbUtleUV2ZW50KQogCiAg
ICAgV2ViRWxlbWVudCBlbGVtZW50ID0gbV93ZWJWaWV3LT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQo
KS5nZXRFbGVtZW50QnlJZCgibWVzc2FnZSIpOwogICAgIC8vIFdlIG9ubHkgY2FuIHNlZSBjaGFu
Z2UgZXZlbnQgYnV0IG5vIG90aGVyIG1vdXNlIHJlbGF0ZWQgZXZlbnRzLgotICAgIEVYUEVDVF9T
VFJFUSgiY2hhbmdlIiwgc3RkOjpzdHJpbmcoZWxlbWVudC5pbm5lclRleHQoKS51dGY4KCkpLmNf
c3RyKCkpOworICAgIEVYUEVDVF9TVFJFUSgiY2hhbmdlIiwgZWxlbWVudC5pbm5lclRleHQoKS51
dGY4KCkuZGF0YSgpKTsKIH0KIAogVEVTVF9GKFNlbGVjdFBvcHVwTWVudVRlc3QsIFNlbGVjdEl0
ZW1SZW1vdmVTZWxlY3RPbkNoYW5nZSkKQEAgLTQ5MSw3ICs0ODUsNyBAQCBURVNUX0YoU2VsZWN0
UG9wdXBNZW51VGVzdCwgU2VsZWN0SXRlbVJlbW92ZVNlbGVjdE9uQ2hhbmdlKQogICAgIHNpbXVs
YXRlTGVmdE1vdXNlVXBFdmVudChyb3cxUG9pbnQpOwogCiAgICAgV2ViRWxlbWVudCBlbGVtZW50
ID0gbV93ZWJWaWV3LT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS5nZXRFbGVtZW50QnlJZCgibWVz
c2FnZSIpOwotICAgIEVYUEVDVF9TVFJFUSgiY2hhbmdlIiwgc3RkOjpzdHJpbmcoZWxlbWVudC5p
bm5lclRleHQoKS51dGY4KCkpLmNfc3RyKCkpOworICAgIEVYUEVDVF9TVFJFUSgiY2hhbmdlIiwg
ZWxlbWVudC5pbm5lclRleHQoKS51dGY4KCkuZGF0YSgpKTsKIH0KIAogVEVTVF9GKFNlbGVjdFBv
cHVwTWVudVRlc3QsIFNlbGVjdEl0ZW1SZW1vdmVTZWxlY3RPbkNsaWNrKQpAQCAtNTEzLDcgKzUw
Nyw3IEBAIFRFU1RfRihTZWxlY3RQb3B1cE1lbnVUZXN0LCBTZWxlY3RJdGVtUmVtb3ZlU2VsZWN0
T25DbGljaykKICAgICBzaW11bGF0ZUxlZnRNb3VzZVVwRXZlbnQocm93MVBvaW50KTsKIAogICAg
IFdlYkVsZW1lbnQgZWxlbWVudCA9IG1fd2ViVmlldy0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCku
Z2V0RWxlbWVudEJ5SWQoIm1lc3NhZ2UiKTsKLSAgICBFWFBFQ1RfU1RSRVEoImNsaWNrIiwgc3Rk
OjpzdHJpbmcoZWxlbWVudC5pbm5lclRleHQoKS51dGY4KCkpLmNfc3RyKCkpOworICAgIEVYUEVD
VF9TVFJFUSgiY2xpY2siLCBlbGVtZW50LmlubmVyVGV4dCgpLnV0ZjgoKS5kYXRhKCkpOwogfQog
CiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9SdW5BbGxUZXN0cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1J1bkFsbFRl
c3RzLmNwcAppbmRleCBkYzA1MjgyNTcxYTdjNjg4Y2RiMjA4OTU2YzM1NGU2M2EzM2EzYzNjLi41
ZjcxYjZkOGIxYWY3NzlmODI1MzU1OTUxZmI5ZTAwOWE4OWQyZjgzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1J1bkFsbFRlc3RzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL1J1bkFsbFRlc3RzLmNwcApAQCAtMjgsNiArMjgsOCBAQAogICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCisjaW5jbHVkZSAiY29uZmlnLmgiCisKIC8vIEZJWE1FOiBBdm9p
ZCB0aGlzIHNvdXJjZSBkZXBlbmRlbmN5IG9uIENocm9taXVtJ3MgYmFzZSBtb2R1bGUuCiAjaW5j
bHVkZSA8YmFzZS90ZXN0L3Rlc3Rfc3VpdGUuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9VUkxUZXN0SGVscGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL1VSTFRlc3RIZWxwZXJzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMmU2MDM5ZDFlMTFmNGQ4
NmViMWI2Y2YyYTk1Zjg3Njg0YzI3NjJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9VUkxUZXN0SGVscGVycy5jcHAKQEAgLTAsMCArMSw3MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJVUkxUZXN0SGVscGVycy5oIgorCisjaW5jbHVkZSAi
cGxhdGZvcm0vV2ViVVJMUmVzcG9uc2UuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViU3RyaW5nLmg+
CisjaW5jbHVkZSA8cHVibGljL1dlYlVSTC5oPgorI2luY2x1ZGUgPHdlYmtpdC9zdXBwb3J0L3dl
YmtpdF9zdXBwb3J0Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworbmFtZXNwYWNlIFVSTFRlc3RI
ZWxwZXJzIHsKKwordm9pZCByZWdpc3Rlck1vY2tlZFVSTEZyb21CYXNlVVJMKGNvbnN0IFdlYlN0
cmluZyYgYmFzZVVSTCwgY29uc3QgV2ViU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgV2ViU3RyaW5n
JiBtaW1lVHlwZSkKK3sKKyAgICAvLyBmdWxsVVJMID0gYmFzZVVSTCArIGZpbGVOYW1lLgorICAg
IHN0ZDo6c3RyaW5nIGZ1bGxTdHJpbmcgPSBzdGQ6OnN0cmluZyhiYXNlVVJMLnV0ZjgoKS5kYXRh
KCkpICsgc3RkOjpzdHJpbmcoZmlsZU5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgcmVnaXN0ZXJN
b2NrZWRVUkxMb2FkKHRvS1VSTChmdWxsU3RyaW5nLmNfc3RyKCkpLCBmaWxlTmFtZSwgV2ViU3Ry
aW5nOjpmcm9tVVRGOCgiIiksIG1pbWVUeXBlKTsKK30KKwordm9pZCByZWdpc3Rlck1vY2tlZFVS
TExvYWQoY29uc3QgV2ViVVJMJiBmdWxsVVJMLCBjb25zdCBXZWJTdHJpbmcmIGZpbGVOYW1lLCBj
b25zdCBXZWJTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZChm
dWxsVVJMLCBmaWxlTmFtZSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgiIiksIG1pbWVUeXBlKTsKK30K
Kwordm9pZCByZWdpc3Rlck1vY2tlZFVSTExvYWQoY29uc3QgV2ViVVJMJiBmdWxsVVJMLCBjb25z
dCBXZWJTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBXZWJTdHJpbmcmIHJlbGF0aXZlQmFzZURpcmVj
dG9yeSwgY29uc3QgV2ViU3RyaW5nJiBtaW1lVHlwZSkKK3sKKyAgICBXZWJVUkxSZXNwb25zZSBy
ZXNwb25zZTsKKyAgICByZXNwb25zZS5pbml0aWFsaXplKCk7CisgICAgcmVzcG9uc2Uuc2V0TUlN
RVR5cGUobWltZVR5cGUpOworICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2RlKDIwMCk7CisK
KyAgICAvLyBQaHlzaWNhbCBmaWxlIHBhdGggZm9yIHRoZSBtb2NrID0gPHdlYmtpdFJvb3REaXI+
ICsgcmVsYXRpdmVCYXNlRGlyZWN0b3J5ICsgZmlsZU5hbWUuCisgICAgc3RkOjpzdHJpbmcgZmls
ZVBhdGggPSBzdGQ6OnN0cmluZyh3ZWJraXRfc3VwcG9ydDo6R2V0V2ViS2l0Um9vdERpcigpLnV0
ZjgoKS5kYXRhKCkpOworICAgIGZpbGVQYXRoLmFwcGVuZCgiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvZGF0YS8iKTsKKyAgICBmaWxlUGF0aC5hcHBlbmQoc3RkOjpzdHJpbmcocmVsYXRp
dmVCYXNlRGlyZWN0b3J5LnV0ZjgoKS5kYXRhKCkpKTsKKyAgICBmaWxlUGF0aC5hcHBlbmQoc3Rk
OjpzdHJpbmcoZmlsZU5hbWUudXRmOCgpLmRhdGEoKSkpOworCisgICAgd2Via2l0X3N1cHBvcnQ6
OlJlZ2lzdGVyTW9ja2VkVVJMKGZ1bGxVUkwsIHJlc3BvbnNlLCBXZWJTdHJpbmc6OmZyb21VVEY4
KGZpbGVQYXRoLmNfc3RyKCkpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVVJMVGVzdEhlbHBlcnMK
K30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9VUkxUZXN0SGVscGVycy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9V
UkxUZXN0SGVscGVycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiOWZiMDBiYjJmOTRkNTRhYTc0NjFhZDg2MzI2
MDI3M2JkMzhhMDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL1VSTFRlc3RIZWxwZXJzLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVVJMVGVzdEhlbHBl
cnNfaAorI2RlZmluZSBVUkxUZXN0SGVscGVyc19oCisKKyNpbmNsdWRlICJLVVJMLmgiCisjaW5j
bHVkZSA8cHVibGljL1dlYlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
V2ViVVJMOworCituYW1lc3BhY2UgVVJMVGVzdEhlbHBlcnMgeworCitpbmxpbmUgV2ViQ29yZTo6
S1VSTCB0b0tVUkwoY29uc3Qgc3RkOjpzdHJpbmcmIHVybCkKK3sKKyAgICBXVEY6OlN0cmluZyB3
dGZTdHJpbmcodXJsLmNfc3RyKCkpOworICAgIHJldHVybiBXZWJDb3JlOjpLVVJMKFdlYkNvcmU6
OlBhcnNlZFVSTFN0cmluZywgd3RmU3RyaW5nKTsKK30KKworLy8gSGVscGVyIGZ1bmN0aW9ucyBm
b3IgbW9jayBVUkxzLiBUaGVzZSBmdW5jdGlvbnMgc2V0IHVwIHRoZSBkZXNpcmVkIFVSTCBhbmQg
bWltZVR5cGUsIHdpdGggYSAyMDAgT0sgcmV0dXJuIHN0YXR1cy4KKy8vIEZvciB0aGUgbW9jayBV
UkwsIGZ1bGxVUkwgPT0gYmFzZVVSTCArIGZpbGVOYW1lLgorLy8gRm9yIHRoZSBhY3R1YWwgZmls
ZSBwYXRoOiAgPFdlYktpdCByb290IGRpcmVjdG9yeT4gKyByZWxhdGl2ZUJhc2VEaXJlY3Rvcnkg
KyBmaWxlTmFtZSwKKy8vIG9yLCBpZiB0aGUgcmVsYXRpdmUgYmFzZSBkaXJlY3RvcnkgaXMgbm90
IHNwZWNpZmllZDogIDxXZWJLaXQgcm9vdCBkaXJlY3Rvcnk+ICsgZmlsZU5hbWUuCisvLwordm9p
ZCByZWdpc3Rlck1vY2tlZFVSTEZyb21CYXNlVVJMKGNvbnN0IFdlYlN0cmluZyYgYmFzZVVSTCwg
Y29uc3QgV2ViU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgV2ViU3RyaW5nJiBtaW1lVHlwZSA9IFdl
YlN0cmluZzo6ZnJvbVVURjgoInRleHQvaHRtbCIpKTsKK3ZvaWQgcmVnaXN0ZXJNb2NrZWRVUkxM
b2FkKGNvbnN0IFdlYlVSTCYgZnVsbFVSTCwgY29uc3QgV2ViU3RyaW5nJiBmaWxlTmFtZSwgY29u
c3QgV2ViU3RyaW5nJiBtaW1lVHlwZSA9IFdlYlN0cmluZzo6ZnJvbVVURjgoInRleHQvaHRtbCIp
KTsKK3ZvaWQgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKGNvbnN0IFdlYlVSTCYgZnVsbFVSTCwgY29u
c3QgV2ViU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgV2ViU3RyaW5nJiByZWxhdGl2ZUJhc2VEaXJl
Y3RvcnksIGNvbnN0IFdlYlN0cmluZyYgbWltZVR5cGUpOworCit9IC8vIG5hbWVzcGFjZSBVUkxU
ZXN0SGVscGVycworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3BwCmluZGV4IDRlMmIwYzVlYTA2Yjll
NjExMTdlYjgxNzJiMmEwZDRlYjU1YzJjMjguLmVlMzg0MTdjYzViNTNkYzk4NDcwZjc4MmE4ZDVl
OGFmMzE0MWUzMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2Vi
RnJhbWVUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1l
VGVzdC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJGcmFtZVRlc3RIZWxwZXJzLmgi
CiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgorI2lu
Y2x1ZGUgIlVSTFRlc3RIZWxwZXJzLmgiCiAjaW5jbHVkZSAiV2ViRGF0YVNvdXJjZS5oIgogI2lu
Y2x1ZGUgIldlYkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiV2ViRmluZE9wdGlvbnMuaCIKQEAgLTU1
LDYgKzU2LDcgQEAKICNpbmNsdWRlIDx3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oPgog
CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgV2ViS2l0OjpVUkxUZXN0SGVscGVyczo6
dG9LVVJMOwogCiBuYW1lc3BhY2UgewogCkBAIC03MywxMiArNzUsMTIgQEAgcHVibGljOgogCiAg
ICAgdm9pZCByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxl
TmFtZSkKICAgICB7Ci0gICAgICAgIEZyYW1lVGVzdEhlbHBlcnM6OnJlZ2lzdGVyTW9ja2VkVVJM
TG9hZChtX2Jhc2VVUkwsIGZpbGVOYW1lKTsKKyAgICAgICAgVVJMVGVzdEhlbHBlcnM6OnJlZ2lz
dGVyTW9ja2VkVVJMRnJvbUJhc2VVUkwoV2ViU3RyaW5nOjpmcm9tVVRGOChtX2Jhc2VVUkwuY19z
dHIoKSksIFdlYlN0cmluZzo6ZnJvbVVURjgoZmlsZU5hbWUuY19zdHIoKSkpOwogICAgIH0KIAog
ICAgIHZvaWQgcmVnaXN0ZXJNb2NrZWRDaHJvbWVVUkxMb2FkKGNvbnN0IHN0ZDo6c3RyaW5nJiBm
aWxlTmFtZSkKICAgICB7Ci0gICAgICAgIEZyYW1lVGVzdEhlbHBlcnM6OnJlZ2lzdGVyTW9ja2Vk
VVJMTG9hZChtX2Nocm9tZVVSTCwgZmlsZU5hbWUpOworICAgICAgICBVUkxUZXN0SGVscGVyczo6
cmVnaXN0ZXJNb2NrZWRVUkxGcm9tQmFzZVVSTChXZWJTdHJpbmc6OmZyb21VVEY4KG1fY2hyb21l
VVJMLmNfc3RyKCkpLCBXZWJTdHJpbmc6OmZyb21VVEY4KGZpbGVOYW1lLmNfc3RyKCkpKTsKICAg
ICB9CiAKIHByb3RlY3RlZDoKQEAgLTk2LDcgKzk4LDcgQEAgVEVTVF9GKFdlYkZyYW1lVGVzdCwg
Q29udGVudFRleHQpCiAgICAgV2ViVmlldyogd2ViVmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNy
ZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJpZnJhbWVzX3Rlc3QuaHRtbCIpOwogCiAg
ICAgLy8gTm93IHJldHJpZXZlIHRoZSBmcmFtZXMgdGV4dCBhbmQgdGVzdCBpdCBvbmx5IGluY2x1
ZGVzIHZpc2libGUgZWxlbWVudHMuCi0gICAgc3RkOjpzdHJpbmcgY29udGVudCA9IHdlYlZpZXct
Pm1haW5GcmFtZSgpLT5jb250ZW50QXNUZXh0KDEwMjQpLnV0ZjgoKTsKKyAgICBzdGQ6OnN0cmlu
ZyBjb250ZW50ID0gc3RkOjpzdHJpbmcod2ViVmlldy0+bWFpbkZyYW1lKCktPmNvbnRlbnRBc1Rl
eHQoMTAyNCkudXRmOCgpLmRhdGEoKSk7CiAgICAgRVhQRUNUX05FKHN0ZDo6c3RyaW5nOjpucG9z
LCBjb250ZW50LmZpbmQoIiB2aXNpYmxlIHBhcmFncmFwaCIpKTsKICAgICBFWFBFQ1RfTkUoc3Rk
OjpzdHJpbmc6Om5wb3MsIGNvbnRlbnQuZmluZCgiIHZpc2libGUgaWZyYW1lIikpOwogICAgIEVY
UEVDVF9FUShzdGQ6OnN0cmluZzo6bnBvcywgY29udGVudC5maW5kKCIgaW52aXNpYmxlIHBhcmFy
YXBoIikpOwpAQCAtMTU2LDcgKzE1OCw3IEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIENocm9tZVBh
Z2VKYXZhc2NyaXB0KQogICAgIHdlYlZpZXctPmxheW91dCgpOwogCiAgICAgLy8gTm93IHJldHJp
ZXZlIHRoZSBmcmFtZSdzIHRleHQgYW5kIGVuc3VyZSBpdCB3YXMgbW9kaWZpZWQgYnkgcnVubmlu
ZyBqYXZhc2NyaXB0LgotICAgIHN0ZDo6c3RyaW5nIGNvbnRlbnQgPSB3ZWJWaWV3LT5tYWluRnJh
bWUoKS0+Y29udGVudEFzVGV4dCgxMDI0KS51dGY4KCk7CisgICAgc3RkOjpzdHJpbmcgY29udGVu
dCA9IHN0ZDo6c3RyaW5nKHdlYlZpZXctPm1haW5GcmFtZSgpLT5jb250ZW50QXNUZXh0KDEwMjQp
LnV0ZjgoKS5kYXRhKCkpOwogICAgIEVYUEVDVF9ORShzdGQ6OnN0cmluZzo6bnBvcywgY29udGVu
dC5maW5kKCJDbG9iYmVyZWQiKSk7CiB9CiAKQEAgLTE3NSw3ICsxNzcsNyBAQCBURVNUX0YoV2Vi
RnJhbWVUZXN0LCBDaHJvbWVQYWdlTm9KYXZhc2NyaXB0KQogICAgIHdlYlZpZXctPmxheW91dCgp
OwogCiAgICAgLy8gTm93IHJldHJpZXZlIHRoZSBmcmFtZSdzIHRleHQgYW5kIGVuc3VyZSBpdCB3
YXNuJ3QgbW9kaWZpZWQgYnkgcnVubmluZyBqYXZhc2NyaXB0LgotICAgIHN0ZDo6c3RyaW5nIGNv
bnRlbnQgPSB3ZWJWaWV3LT5tYWluRnJhbWUoKS0+Y29udGVudEFzVGV4dCgxMDI0KS51dGY4KCk7
CisgICAgc3RkOjpzdHJpbmcgY29udGVudCA9IHN0ZDo6c3RyaW5nKHdlYlZpZXctPm1haW5GcmFt
ZSgpLT5jb250ZW50QXNUZXh0KDEwMjQpLnV0ZjgoKS5kYXRhKCkpOwogICAgIEVYUEVDVF9FUShz
dGQ6OnN0cmluZzo6bnBvcywgY29udGVudC5maW5kKCJDbG9iYmVyZWQiKSk7CiB9CiAKQEAgLTE4
Nyw3ICsxODksNyBAQCBURVNUX0YoV2ViRnJhbWVUZXN0LCBEaXNwYXRjaE1lc3NhZ2VFdmVudFdp
dGhPcmlnaW5DaGVjaykKICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6
Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJMICsgInBvc3RtZXNzYWdlX3Rlc3QuaHRtbCIs
IHRydWUpOwogICAgIAogICAgIC8vIFNlbmQgYSBtZXNzYWdlIHdpdGggdGhlIGNvcnJlY3Qgb3Jp
Z2luLgotICAgIFdlYlNlY3VyaXR5T3JpZ2luIGNvcnJlY3RPcmlnaW4oV2ViU2VjdXJpdHlPcmln
aW46OmNyZWF0ZShHVVJMKG1fYmFzZVVSTCkpKTsKKyAgICBXZWJTZWN1cml0eU9yaWdpbiBjb3Jy
ZWN0T3JpZ2luKFdlYlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodG9LVVJMKG1fYmFzZVVSTCkpKTsK
ICAgICBXZWJET01FdmVudCBldmVudCA9IHdlYlZpZXctPm1haW5GcmFtZSgpLT5kb2N1bWVudCgp
LmNyZWF0ZUV2ZW50KCJNZXNzYWdlRXZlbnQiKTsKICAgICBXZWJET01NZXNzYWdlRXZlbnQgbWVz
c2FnZSA9IGV2ZW50LnRvPFdlYkRPTU1lc3NhZ2VFdmVudD4oKTsKICAgICBXZWJTZXJpYWxpemVk
U2NyaXB0VmFsdWUgZGF0YShXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmZyb21TdHJpbmcoImZv
byIpKTsKQEAgLTE5NSwxNCArMTk3LDE0IEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIERpc3BhdGNo
TWVzc2FnZUV2ZW50V2l0aE9yaWdpbkNoZWNrKQogICAgIHdlYlZpZXctPm1haW5GcmFtZSgpLT5k
aXNwYXRjaE1lc3NhZ2VFdmVudFdpdGhPcmlnaW5DaGVjayhjb3JyZWN0T3JpZ2luLCBtZXNzYWdl
KTsKIAogICAgIC8vIFNlbmQgYW5vdGhlciBtZXNzYWdlIHdpdGggaW5jb3JyZWN0IG9yaWdpbi4K
LSAgICBXZWJTZWN1cml0eU9yaWdpbiBpbmNvcnJlY3RPcmlnaW4oV2ViU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZShHVVJMKG1fY2hyb21lVVJMKSkpOworICAgIFdlYlNlY3VyaXR5T3JpZ2luIGluY29y
cmVjdE9yaWdpbihXZWJTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHRvS1VSTChtX2Nocm9tZVVSTCkp
KTsKICAgICB3ZWJWaWV3LT5tYWluRnJhbWUoKS0+ZGlzcGF0Y2hNZXNzYWdlRXZlbnRXaXRoT3Jp
Z2luQ2hlY2soaW5jb3JyZWN0T3JpZ2luLCBtZXNzYWdlKTsKIAogICAgIC8vIFJlcXVpcmVkIHRv
IHNlZSBhbnkgdXBkYXRlcyBpbiBjb250ZW50QXNUZXh0LgogICAgIHdlYlZpZXctPmxheW91dCgp
OwogCiAgICAgLy8gVmVyaWZ5IHRoYXQgb25seSB0aGUgZmlyc3QgYWRkaXRpb24gaXMgaW4gdGhl
IGJvZHkgb2YgdGhlIHBhZ2UuCi0gICAgc3RkOjpzdHJpbmcgY29udGVudCA9IHdlYlZpZXctPm1h
aW5GcmFtZSgpLT5jb250ZW50QXNUZXh0KDEwMjQpLnV0ZjgoKTsKKyAgICBzdGQ6OnN0cmluZyBj
b250ZW50ID0gc3RkOjpzdHJpbmcod2ViVmlldy0+bWFpbkZyYW1lKCktPmNvbnRlbnRBc1RleHQo
MTAyNCkudXRmOCgpLmRhdGEoKSk7CiAgICAgRVhQRUNUX05FKHN0ZDo6c3RyaW5nOjpucG9zLCBj
b250ZW50LmZpbmQoIk1lc3NhZ2UgMS4iKSk7CiAgICAgRVhQRUNUX0VRKHN0ZDo6c3RyaW5nOjpu
cG9zLCBjb250ZW50LmZpbmQoIk1lc3NhZ2UgMi4iKSk7CiB9CkBAIC00MzUsOCArNDM3LDggQEAg
VEVTVF9GKFdlYkZyYW1lVGVzdCwgSWZyYW1lUmVkaXJlY3QpCiAgICAgV2ViVmVjdG9yPFdlYlVS
TD4gcmVkaXJlY3RzOwogICAgIGlmcmFtZURhdGFTb3VyY2UtPnJlZGlyZWN0Q2hhaW4ocmVkaXJl
Y3RzKTsKICAgICBBU1NFUlRfRVEoMlUsIHJlZGlyZWN0cy5zaXplKCkpOwotICAgIEVYUEVDVF9F
UShHVVJMKCJhYm91dDpibGFuayIpLCBHVVJMKHJlZGlyZWN0c1swXSkpOwotICAgIEVYUEVDVF9F
UShHVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tL3Zpc2libGVfaWZyYW1lLmh0bWwiKSwgR1VSTChy
ZWRpcmVjdHNbMV0pKTsKKyAgICBFWFBFQ1RfRVEodG9LVVJMKCJhYm91dDpibGFuayIpLCB0b0tV
UkwocmVkaXJlY3RzWzBdLnNwZWMoKS5kYXRhKCkpKTsKKyAgICBFWFBFQ1RfRVEodG9LVVJMKCJo
dHRwOi8vd3d3LnRlc3QuY29tL3Zpc2libGVfaWZyYW1lLmh0bWwiKSwgdG9LVVJMKHJlZGlyZWN0
c1sxXS5zcGVjKCkuZGF0YSgpKSk7CiAKICAgICB3ZWJWaWV3LT5jbG9zZSgpOwogfQpAQCAtNjk3
LDE5ICs2OTksMTkgQEAgVEVTVF9GKFdlYkZyYW1lVGVzdCwgR2V0Q29udGVudEFzUGxhaW5UZXh0
KQogCiAgICAgLy8gR2VuZXJhdGUgYSBzaW1wbGUgdGVzdCBjYXNlLgogICAgIGNvbnN0IGNoYXIg
c2ltcGxlU291cmNlW10gPSAiPGRpdj5Gb28gYmFyPC9kaXY+PGRpdj48L2Rpdj5iYXoiOwotICAg
IEdVUkwgdGVzdFVSTCgiYWJvdXQ6YmxhbmsiKTsKKyAgICBXZWJDb3JlOjpLVVJMIHRlc3RVUkwg
PSB0b0tVUkwoImFib3V0OmJsYW5rIik7CiAgICAgZnJhbWUtPmxvYWRIVE1MU3RyaW5nKHNpbXBs
ZVNvdXJjZSwgdGVzdFVSTCk7CiAgICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRpbmdNZXNz
YWdlcygpOwogCiAgICAgLy8gTWFrZSBzdXJlIGl0IGNvbWVzIG91dCBPSy4KICAgICBjb25zdCBz
dGQ6OnN0cmluZyBleHBlY3RlZCgiRm9vIGJhclxuYmF6Iik7CiAgICAgV2ViU3RyaW5nIHRleHQg
PSBmcmFtZS0+Y29udGVudEFzVGV4dChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgp
KTsKLSAgICBFWFBFQ1RfRVEoZXhwZWN0ZWQsIHN0ZDo6c3RyaW5nKHRleHQudXRmOCgpKSk7Cisg
ICAgRVhQRUNUX0VRKGV4cGVjdGVkLCBzdGQ6OnN0cmluZyh0ZXh0LnV0ZjgoKS5kYXRhKCkpKTsK
IAogICAgIC8vIFRyeSByZWFkaW5nIHRoZSBzYW1lIG9uZSB3aXRoIGNsaXBwaW5nIG9mIHRoZSB0
ZXh0LgogICAgIGNvbnN0IGludCBsZW5ndGggPSA1OwogICAgIHRleHQgPSBmcmFtZS0+Y29udGVu
dEFzVGV4dChsZW5ndGgpOwotICAgIEVYUEVDVF9FUShleHBlY3RlZC5zdWJzdHIoMCwgbGVuZ3Ro
KSwgc3RkOjpzdHJpbmcodGV4dC51dGY4KCkpKTsKKyAgICBFWFBFQ1RfRVEoZXhwZWN0ZWQuc3Vi
c3RyKDAsIGxlbmd0aCksIHN0ZDo6c3RyaW5nKHRleHQudXRmOCgpLmRhdGEoKSkpOwogCiAgICAg
Ly8gTm93IGRvIGEgbmV3IHRlc3Qgd2l0aCBhIHN1YmZyYW1lLgogICAgIGNvbnN0IGNoYXIgb3V0
ZXJGcmFtZVNvdXJjZVtdID0gIkhlbGxvPGlmcmFtZT48L2lmcmFtZT4gd29ybGQiOwpAQCAtNzIz
LDEyICs3MjUsMTIgQEAgVEVTVF9GKFdlYkZyYW1lVGVzdCwgR2V0Q29udGVudEFzUGxhaW5UZXh0
KQogICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5BbGxQZW5kaW5nTWVzc2FnZXMoKTsKIAogICAgIHRl
eHQgPSBmcmFtZS0+Y29udGVudEFzVGV4dChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1h
eCgpKTsKLSAgICBFWFBFQ1RfRVEoIkhlbGxvIHdvcmxkXG5cbnN1YlxudGV4dCIsIHN0ZDo6c3Ry
aW5nKHRleHQudXRmOCgpKSk7CisgICAgRVhQRUNUX0VRKCJIZWxsbyB3b3JsZFxuXG5zdWJcbnRl
eHQiLCBzdGQ6OnN0cmluZyh0ZXh0LnV0ZjgoKS5kYXRhKCkpKTsKIAogICAgIC8vIEdldCB0aGUg
ZnJhbWUgdGV4dCB3aGVyZSB0aGUgc3ViZnJhbWUgc2VwYXJhdG9yIGZhbGxzIG9uIHRoZSBib3Vu
ZGFyeSBvZgogICAgIC8vIHdoYXQgd2UnbGwgdGFrZS4gVGhlcmUgdXNlZCB0byBiZSBhIGNyYXNo
IGluIHRoaXMgY2FzZS4KICAgICB0ZXh0ID0gZnJhbWUtPmNvbnRlbnRBc1RleHQoMTIpOwotICAg
IEVYUEVDVF9FUSgiSGVsbG8gd29ybGQiLCBzdGQ6OnN0cmluZyh0ZXh0LnV0ZjgoKSkpOworICAg
IEVYUEVDVF9FUSgiSGVsbG8gd29ybGQiLCBzdGQ6OnN0cmluZyh0ZXh0LnV0ZjgoKS5kYXRhKCkp
KTsKIAogICAgIHdlYlZpZXctPmNsb3NlKCk7CiB9CkBAIC03NDAsMjMgKzc0MiwyMyBAQCBURVNU
X0YoV2ViRnJhbWVUZXN0LCBHZXRGdWxsSHRtbE9mUGFnZSkKIAogICAgIC8vIEdlbmVyYXRlIGEg
c2ltcGxlIHRlc3QgY2FzZS4KICAgICBjb25zdCBjaGFyIHNpbXBsZVNvdXJjZVtdID0gIjxwPkhl
bGxvPC9wPjxwPldvcmxkPC9wPiI7Ci0gICAgR1VSTCB0ZXN0VVJMKCJhYm91dDpibGFuayIpOwor
ICAgIFdlYkNvcmU6OktVUkwgdGVzdFVSTCA9IHRvS1VSTCgiYWJvdXQ6YmxhbmsiKTsKICAgICBm
cmFtZS0+bG9hZEhUTUxTdHJpbmcoc2ltcGxlU291cmNlLCB0ZXN0VVJMKTsKICAgICB3ZWJraXRf
c3VwcG9ydDo6UnVuQWxsUGVuZGluZ01lc3NhZ2VzKCk7CiAKICAgICBXZWJTdHJpbmcgdGV4dCA9
IGZyYW1lLT5jb250ZW50QXNUZXh0KHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkp
OwotICAgIEVYUEVDVF9FUSgiSGVsbG9cblxuV29ybGQiLCBzdGQ6OnN0cmluZyh0ZXh0LnV0Zjgo
KSkpOworICAgIEVYUEVDVF9FUSgiSGVsbG9cblxuV29ybGQiLCBzdGQ6OnN0cmluZyh0ZXh0LnV0
ZjgoKS5kYXRhKCkpKTsKIAotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGh0bWwgPSBmcmFtZS0+Y29u
dGVudEFzTWFya3VwKCkudXRmOCgpOworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGh0bWwgPSBzdGQ6
OnN0cmluZyhmcmFtZS0+Y29udGVudEFzTWFya3VwKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICAv
LyBMb2FkIGFnYWluIHdpdGggdGhlIG91dHB1dCBodG1sLgotICAgIGZyYW1lLT5sb2FkSFRNTFN0
cmluZyhodG1sLCB0ZXN0VVJMKTsKKyAgICBmcmFtZS0+bG9hZEhUTUxTdHJpbmcoV2ViRGF0YSho
dG1sLmNfc3RyKCksIGh0bWwubGVuZ3RoKCkpLCB0ZXN0VVJMKTsKICAgICB3ZWJraXRfc3VwcG9y
dDo6UnVuQWxsUGVuZGluZ01lc3NhZ2VzKCk7CiAKLSAgICBFWFBFQ1RfRVEoaHRtbCwgc3RkOjpz
dHJpbmcoZnJhbWUtPmNvbnRlbnRBc01hcmt1cCgpLnV0ZjgoKSkpOworICAgIEVYUEVDVF9FUSho
dG1sLCBzdGQ6OnN0cmluZyhmcmFtZS0+Y29udGVudEFzTWFya3VwKCkudXRmOCgpLmRhdGEoKSkp
OwogCiAgICAgdGV4dCA9IGZyYW1lLT5jb250ZW50QXNUZXh0KHN0ZDo6bnVtZXJpY19saW1pdHM8
c2l6ZV90Pjo6bWF4KCkpOwotICAgIEVYUEVDVF9FUSgiSGVsbG9cblxuV29ybGQiLCBzdGQ6OnN0
cmluZyh0ZXh0LnV0ZjgoKSkpOworICAgIEVYUEVDVF9FUSgiSGVsbG9cblxuV29ybGQiLCBzdGQ6
OnN0cmluZyh0ZXh0LnV0ZjgoKS5kYXRhKCkpKTsKIAogICAgIC8vIFRlc3Qgc2VsZWN0aW9uIGNo
ZWNrCiAgICAgRVhQRUNUX0ZBTFNFKGZyYW1lLT5oYXNTZWxlY3Rpb24oKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlBhZ2VOZXdTZXJpYWxpemVyVGVzdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlBhZ2VOZXdTZXJpYWxpemVyVGVz
dC5jcHAKaW5kZXggNWMzYmE5OGEwNWI4OWU2MTFjYTE2MDk0Y2VlYjMxYjRkYTY3NTYzYi4uM2Vh
NGZjZjllYjY0NzRiMDA0MGRkY2ViOGVmZGU0ZGEyZmU3NTJhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJQYWdlTmV3U2VyaWFsaXplclRlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViUGFnZU5ld1NlcmlhbGl6ZXJUZXN0LmNw
cApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKKyNpbmNsdWRlICJV
UkxUZXN0SGVscGVycy5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViRnJh
bWVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJQYWdlU2VyaWFsaXplci5oIgpAQCAtNDEsMTEgKzQy
LDEyIEBACiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViVVJMUmVzcG9uc2UuaCIKICNpbmNsdWRlICJX
ZWJWaWV3LmgiCiAKLSNpbmNsdWRlIDxnb29nbGV1cmwvc3JjL2d1cmwuaD4KICNpbmNsdWRlIDxn
dGVzdC9ndGVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBXZWJLaXQ6OlVSTFRlc3RIZWxwZXJz
Ojp0b0tVUkw7Cit1c2luZyBXZWJLaXQ6OlVSTFRlc3RIZWxwZXJzOjpyZWdpc3Rlck1vY2tlZFVS
TExvYWQ7CiAKIG5hbWVzcGFjZSB7CiAKQEAgLTExMCw0MSArMTEyLDI5IEBAIHByb3RlY3RlZDoK
ICAgICAgICAgbV93ZWJWaWV3LT5jbG9zZSgpOwogICAgIH0KIAotICAgIHZvaWQgcmVnaXN0ZXJN
b2NrZWRVUkxMb2FkKGNvbnN0IFdlYlVSTCYgdXJsLCBjb25zdCBXZWJTdHJpbmcmIGZpbGVOYW1l
LCBjb25zdCBXZWJTdHJpbmcmIG1pbWVUeXBlKQotICAgIHsKLSAgICAgICAgV2ViVVJMUmVzcG9u
c2UgcmVzcG9uc2U7Ci0gICAgICAgIHJlc3BvbnNlLmluaXRpYWxpemUoKTsKLSAgICAgICAgcmVz
cG9uc2Uuc2V0TUlNRVR5cGUobWltZVR5cGUpOwotICAgICAgICByZXNwb25zZS5zZXRIVFRQU3Rh
dHVzQ29kZSgyMDApOwotICAgICAgICBzdGQ6OnN0cmluZyBmaWxlUGF0aCA9IHdlYmtpdF9zdXBw
b3J0OjpHZXRXZWJLaXRSb290RGlyKCkudXRmOCgpOwotICAgICAgICBmaWxlUGF0aC5hcHBlbmQo
Ii9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvcGFnZXNlcmlhbGl6ZXIvIik7Ci0g
ICAgICAgIGZpbGVQYXRoLmFwcGVuZChmaWxlTmFtZS51dGY4KCkpOwotICAgICAgICB3ZWJraXRf
c3VwcG9ydDo6UmVnaXN0ZXJNb2NrZWRVUkwodXJsLCByZXNwb25zZSwgV2ViU3RyaW5nOjpmcm9t
VVRGOChmaWxlUGF0aCkpOwotICAgIH0KLQogICAgIFdlYlVSTCBzZXRVcENTU1Rlc3RQYWdlKCkK
ICAgICB7Ci0gICAgICAgIFdlYlVSTCB0b3BGcmFtZVVSTCA9IEdVUkwoImh0dHA6Ly93d3cudGVz
dC5jb20iKTsKLSAgICAgICAgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKHRvcEZyYW1lVVJMLCBXZWJT
dHJpbmc6OmZyb21VVEY4KCJjc3NfdGVzdF9wYWdlLmh0bWwiKSwgaHRtbE1pbWVUeXBlKCkpOwot
ICAgICAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQoR1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbS9s
aW5rX3N0eWxlcy5jc3MiKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgibGlua19zdHlsZXMuY3NzIiks
IGNzc01pbWVUeXBlKCkpOwotICAgICAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQoR1VSTCgiaHR0
cDovL3d3dy50ZXN0LmNvbS9pbXBvcnRfc3R5bGVfZnJvbV9saW5rLmNzcyIpLCBXZWJTdHJpbmc6
OmZyb21VVEY4KCJpbXBvcnRfc3R5bGVfZnJvbV9saW5rLmNzcyIpLCBjc3NNaW1lVHlwZSgpKTsK
LSAgICAgICAgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKEdVUkwoImh0dHA6Ly93d3cudGVzdC5jb20v
aW1wb3J0X3N0eWxlcy5jc3MiKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgiaW1wb3J0X3N0eWxlcy5j
c3MiKSwgY3NzTWltZVR5cGUoKSk7Ci0gICAgICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZChHVVJM
KCJodHRwOi8vd3d3LnRlc3QuY29tL3JlZF9iYWNrZ3JvdW5kLnBuZyIpLCBXZWJTdHJpbmc6OmZy
b21VVEY4KCJyZWRfYmFja2dyb3VuZC5wbmciKSwgcG5nTWltZVR5cGUoKSk7Ci0gICAgICAgIHJl
Z2lzdGVyTW9ja2VkVVJMTG9hZChHVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tL29yYW5nZV9iYWNr
Z3JvdW5kLnBuZyIpLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJvcmFuZ2VfYmFja2dyb3VuZC5wbmci
KSwgcG5nTWltZVR5cGUoKSk7Ci0gICAgICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZChHVVJMKCJo
dHRwOi8vd3d3LnRlc3QuY29tL3llbGxvd19iYWNrZ3JvdW5kLnBuZyIpLCBXZWJTdHJpbmc6OmZy
b21VVEY4KCJ5ZWxsb3dfYmFja2dyb3VuZC5wbmciKSwgcG5nTWltZVR5cGUoKSk7Ci0gICAgICAg
IHJlZ2lzdGVyTW9ja2VkVVJMTG9hZChHVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tL2dyZWVuX2Jh
Y2tncm91bmQucG5nIiksIFdlYlN0cmluZzo6ZnJvbVVURjgoImdyZWVuX2JhY2tncm91bmQucG5n
IiksIHBuZ01pbWVUeXBlKCkpOwotICAgICAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQoR1VSTCgi
aHR0cDovL3d3dy50ZXN0LmNvbS9ibHVlX2JhY2tncm91bmQucG5nIiksIFdlYlN0cmluZzo6ZnJv
bVVURjgoImJsdWVfYmFja2dyb3VuZC5wbmciKSwgcG5nTWltZVR5cGUoKSk7Ci0gICAgICAgIHJl
Z2lzdGVyTW9ja2VkVVJMTG9hZChHVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tL3B1cnBsZV9iYWNr
Z3JvdW5kLnBuZyIpLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJwdXJwbGVfYmFja2dyb3VuZC5wbmci
KSwgcG5nTWltZVR5cGUoKSk7Ci0gICAgICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZChHVVJMKCJo
dHRwOi8vd3d3LnRlc3QuY29tL3VsLWRvdC5wbmciKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgidWwt
ZG90LnBuZyIpLCBwbmdNaW1lVHlwZSgpKTsKLSAgICAgICAgcmVnaXN0ZXJNb2NrZWRVUkxMb2Fk
KEdVUkwoImh0dHA6Ly93d3cudGVzdC5jb20vb2wtZG90LnBuZyIpLCBXZWJTdHJpbmc6OmZyb21V
VEY4KCJvbC1kb3QucG5nIiksIHBuZ01pbWVUeXBlKCkpOworICAgICAgICBXZWJVUkwgdG9wRnJh
bWVVUkwgPSB0b0tVUkwoImh0dHA6Ly93d3cudGVzdC5jb20iKTsKKyAgICAgICAgcmVnaXN0ZXJN
b2NrZWRVUkxMb2FkKHRvcEZyYW1lVVJMLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJjc3NfdGVzdF9w
YWdlLmh0bWwiKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgicGFnZXNlcmlhbGl6ZXIvIiksIGh0bWxN
aW1lVHlwZSgpKTsKKyAgICAgICAgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKHRvS1VSTCgiaHR0cDov
L3d3dy50ZXN0LmNvbS9saW5rX3N0eWxlcy5jc3MiKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgibGlu
a19zdHlsZXMuY3NzIiksIFdlYlN0cmluZzo6ZnJvbVVURjgoInBhZ2VzZXJpYWxpemVyLyIpLCBj
c3NNaW1lVHlwZSgpKTsKKyAgICAgICAgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKHRvS1VSTCgiaHR0
cDovL3d3dy50ZXN0LmNvbS9pbXBvcnRfc3R5bGVfZnJvbV9saW5rLmNzcyIpLCBXZWJTdHJpbmc6
OmZyb21VVEY4KCJpbXBvcnRfc3R5bGVfZnJvbV9saW5rLmNzcyIpLCBXZWJTdHJpbmc6OmZyb21V
VEY4KCJwYWdlc2VyaWFsaXplci8iKSwgY3NzTWltZVR5cGUoKSk7CisgICAgICAgIHJlZ2lzdGVy
TW9ja2VkVVJMTG9hZCh0b0tVUkwoImh0dHA6Ly93d3cudGVzdC5jb20vaW1wb3J0X3N0eWxlcy5j
c3MiKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgiaW1wb3J0X3N0eWxlcy5jc3MiKSwgV2ViU3RyaW5n
Ojpmcm9tVVRGOCgicGFnZXNlcmlhbGl6ZXIvIiksIGNzc01pbWVUeXBlKCkpOworICAgICAgICBy
ZWdpc3Rlck1vY2tlZFVSTExvYWQodG9LVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tL3JlZF9iYWNr
Z3JvdW5kLnBuZyIpLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJyZWRfYmFja2dyb3VuZC5wbmciKSwg
V2ViU3RyaW5nOjpmcm9tVVRGOCgicGFnZXNlcmlhbGl6ZXIvIiksIHBuZ01pbWVUeXBlKCkpOwor
ICAgICAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQodG9LVVJMKCJodHRwOi8vd3d3LnRlc3QuY29t
L29yYW5nZV9iYWNrZ3JvdW5kLnBuZyIpLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJvcmFuZ2VfYmFj
a2dyb3VuZC5wbmciKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgicGFnZXNlcmlhbGl6ZXIvIiksIHBu
Z01pbWVUeXBlKCkpOworICAgICAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQodG9LVVJMKCJodHRw
Oi8vd3d3LnRlc3QuY29tL3llbGxvd19iYWNrZ3JvdW5kLnBuZyIpLCBXZWJTdHJpbmc6OmZyb21V
VEY4KCJ5ZWxsb3dfYmFja2dyb3VuZC5wbmciKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgicGFnZXNl
cmlhbGl6ZXIvIiksIHBuZ01pbWVUeXBlKCkpOworICAgICAgICByZWdpc3Rlck1vY2tlZFVSTExv
YWQodG9LVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tL2dyZWVuX2JhY2tncm91bmQucG5nIiksIFdl
YlN0cmluZzo6ZnJvbVVURjgoImdyZWVuX2JhY2tncm91bmQucG5nIiksIFdlYlN0cmluZzo6ZnJv
bVVURjgoInBhZ2VzZXJpYWxpemVyLyIpLCBwbmdNaW1lVHlwZSgpKTsKKyAgICAgICAgcmVnaXN0
ZXJNb2NrZWRVUkxMb2FkKHRvS1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbS9ibHVlX2JhY2tncm91
bmQucG5nIiksIFdlYlN0cmluZzo6ZnJvbVVURjgoImJsdWVfYmFja2dyb3VuZC5wbmciKSwgV2Vi
U3RyaW5nOjpmcm9tVVRGOCgicGFnZXNlcmlhbGl6ZXIvIiksIHBuZ01pbWVUeXBlKCkpOworICAg
ICAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQodG9LVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tL3B1
cnBsZV9iYWNrZ3JvdW5kLnBuZyIpLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJwdXJwbGVfYmFja2dy
b3VuZC5wbmciKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgicGFnZXNlcmlhbGl6ZXIvIiksIHBuZ01p
bWVUeXBlKCkpOworICAgICAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQodG9LVVJMKCJodHRwOi8v
d3d3LnRlc3QuY29tL3VsLWRvdC5wbmciKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgidWwtZG90LnBu
ZyIpLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJwYWdlc2VyaWFsaXplci8iKSwgcG5nTWltZVR5cGUo
KSk7CisgICAgICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZCh0b0tVUkwoImh0dHA6Ly93d3cudGVz
dC5jb20vb2wtZG90LnBuZyIpLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJvbC1kb3QucG5nIiksIFdl
YlN0cmluZzo6ZnJvbVVURjgoInBhZ2VzZXJpYWxpemVyLyIpLCBwbmdNaW1lVHlwZSgpKTsKICAg
ICAgICAgcmV0dXJuIHRvcEZyYW1lVVJMOwogICAgIH0KIAotICAgIHZvaWQgbG9hZFVSTEluVG9w
RnJhbWUoY29uc3QgR1VSTCYgdXJsKQorICAgIHZvaWQgbG9hZFVSTEluVG9wRnJhbWUoY29uc3Qg
V2ViVVJMJiB1cmwpCiAgICAgewogICAgICAgICBXZWJVUkxSZXF1ZXN0IHVybFJlcXVlc3Q7CiAg
ICAgICAgIHVybFJlcXVlc3QuaW5pdGlhbGl6ZSgpOwotICAgICAgICB1cmxSZXF1ZXN0LnNldFVS
TChXZWJVUkwodXJsKSk7CisgICAgICAgIHVybFJlcXVlc3Quc2V0VVJMKHVybCk7CiAgICAgICAg
IG1fd2ViVmlldy0+bWFpbkZyYW1lKCktPmxvYWRSZXF1ZXN0KHVybFJlcXVlc3QpOwogICAgICAg
ICAvLyBNYWtlIHN1cmUgYW55IHBlbmRpbmcgcmVxdWVzdCBnZXQgc2VydmVkLgogICAgICAgICB3
ZWJraXRfc3VwcG9ydDo6U2VydmVBc3luY2hyb25vdXNNb2NrZWRSZXF1ZXN0cygpOwpAQCAtMTYx
LDcgKzE1MSw3IEBAIHByb3RlY3RlZDoKIAogICAgIHN0YXRpYyBib29sIHJlc291cmNlVmVjdG9y
Q29udGFpbnMoY29uc3QgV2ViVmVjdG9yPFdlYlBhZ2VTZXJpYWxpemVyOjpSZXNvdXJjZT4mIHJl
c291cmNlcywgY29uc3QgY2hhciogdXJsLCBjb25zdCBjaGFyKiBtaW1lVHlwZSkKICAgICB7Ci0g
ICAgICAgIFdlYlVSTCB3ZWJVUkwgPSBXZWJVUkwoR1VSTCh1cmwpKTsKKyAgICAgICAgV2ViVVJM
IHdlYlVSTCA9IFdlYlVSTCh0b0tVUkwodXJsKSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgcmVzb3VyY2VzLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBjb25zdCBXZWJQYWdl
U2VyaWFsaXplcjo6UmVzb3VyY2UmIHJlc291cmNlID0gcmVzb3VyY2VzW2ldOwogICAgICAgICAg
ICAgaWYgKHJlc291cmNlLnVybCA9PSB3ZWJVUkwgJiYgIXJlc291cmNlLmRhdGEuaXNFbXB0eSgp
ICYmICFyZXNvdXJjZS5taW1lVHlwZS5jb21wYXJlKFdlYkNTdHJpbmcobWltZVR5cGUpKSkKQEAg
LTE4NCwxMyArMTc0LDEzIEBAIHByaXZhdGU6CiBURVNUX0YoV2ViUGFnZU5ld1NlcmlhbGl6ZVRl
c3QsIFBhZ2VXaXRoRnJhbWVzKQogewogICAgIC8vIFJlZ2lzdGVyIHRoZSBtb2NrZWQgZnJhbWVz
LgotICAgIFdlYlVSTCB0b3BGcmFtZVVSTCA9IEdVUkwoImh0dHA6Ly93d3cudGVzdC5jb20iKTsK
LSAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQodG9wRnJhbWVVUkwsIFdlYlN0cmluZzo6ZnJvbVVU
RjgoInRvcF9mcmFtZS5odG1sIiksIGh0bWxNaW1lVHlwZSgpKTsKLSAgICByZWdpc3Rlck1vY2tl
ZFVSTExvYWQoR1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbS9pZnJhbWUuaHRtbCIpLCBXZWJTdHJp
bmc6OmZyb21VVEY4KCJpZnJhbWUuaHRtbCIpLCBodG1sTWltZVR5cGUoKSk7Ci0gICAgcmVnaXN0
ZXJNb2NrZWRVUkxMb2FkKEdVUkwoImh0dHA6Ly93d3cudGVzdC5jb20vaWZyYW1lMi5odG1sIiks
IFdlYlN0cmluZzo6ZnJvbVVURjgoImlmcmFtZTIuaHRtbCIpLCBodG1sTWltZVR5cGUoKSk7Ci0g
ICAgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKEdVUkwoImh0dHA6Ly93d3cudGVzdC5jb20vcmVkX2Jh
Y2tncm91bmQucG5nIiksIFdlYlN0cmluZzo6ZnJvbVVURjgoInJlZF9iYWNrZ3JvdW5kLnBuZyIp
LCBwbmdNaW1lVHlwZSgpKTsKLSAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQoR1VSTCgiaHR0cDov
L3d3dy50ZXN0LmNvbS9ncmVlbl9iYWNrZ3JvdW5kLnBuZyIpLCBXZWJTdHJpbmc6OmZyb21VVEY4
KCJncmVlbl9iYWNrZ3JvdW5kLnBuZyIpLCBwbmdNaW1lVHlwZSgpKTsKLSAgICByZWdpc3Rlck1v
Y2tlZFVSTExvYWQoR1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbS9ibHVlX2JhY2tncm91bmQucG5n
IiksIFdlYlN0cmluZzo6ZnJvbVVURjgoImJsdWVfYmFja2dyb3VuZC5wbmciKSwgcG5nTWltZVR5
cGUoKSk7CisgICAgV2ViVVJMIHRvcEZyYW1lVVJMID0gdG9LVVJMKCJodHRwOi8vd3d3LnRlc3Qu
Y29tIik7CisgICAgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKHRvcEZyYW1lVVJMLCBXZWJTdHJpbmc6
OmZyb21VVEY4KCJ0b3BfZnJhbWUuaHRtbCIpLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJwYWdlc2Vy
aWFsaXplci8iKSwgaHRtbE1pbWVUeXBlKCkpOworICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZCh0
b0tVUkwoImh0dHA6Ly93d3cudGVzdC5jb20vaWZyYW1lLmh0bWwiKSwgV2ViU3RyaW5nOjpmcm9t
VVRGOCgiaWZyYW1lLmh0bWwiKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgicGFnZXNlcmlhbGl6ZXIv
IiksIGh0bWxNaW1lVHlwZSgpKTsKKyAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQodG9LVVJMKCJo
dHRwOi8vd3d3LnRlc3QuY29tL2lmcmFtZTIuaHRtbCIpLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJp
ZnJhbWUyLmh0bWwiKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgicGFnZXNlcmlhbGl6ZXIvIiksIGh0
bWxNaW1lVHlwZSgpKTsKKyAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQodG9LVVJMKCJodHRwOi8v
d3d3LnRlc3QuY29tL3JlZF9iYWNrZ3JvdW5kLnBuZyIpLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJy
ZWRfYmFja2dyb3VuZC5wbmciKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgicGFnZXNlcmlhbGl6ZXIv
IiksIHBuZ01pbWVUeXBlKCkpOworICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZCh0b0tVUkwoImh0
dHA6Ly93d3cudGVzdC5jb20vZ3JlZW5fYmFja2dyb3VuZC5wbmciKSwgV2ViU3RyaW5nOjpmcm9t
VVRGOCgiZ3JlZW5fYmFja2dyb3VuZC5wbmciKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgicGFnZXNl
cmlhbGl6ZXIvIiksIHBuZ01pbWVUeXBlKCkpOworICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZCh0
b0tVUkwoImh0dHA6Ly93d3cudGVzdC5jb20vYmx1ZV9iYWNrZ3JvdW5kLnBuZyIpLCBXZWJTdHJp
bmc6OmZyb21VVEY4KCJibHVlX2JhY2tncm91bmQucG5nIiksIFdlYlN0cmluZzo6ZnJvbVVURjgo
InBhZ2VzZXJpYWxpemVyLyIpLCBwbmdNaW1lVHlwZSgpKTsKIAogICAgIGxvYWRVUkxJblRvcEZy
YW1lKHRvcEZyYW1lVVJMKTsKIApAQCAtMjAwLDcgKzE5MCw3IEBAIFRFU1RfRihXZWJQYWdlTmV3
U2VyaWFsaXplVGVzdCwgUGFnZVdpdGhGcmFtZXMpCiAKICAgICAvLyBUaGUgZmlyc3QgcmVzb3Vy
Y2Ugc2hvdWxkIGJlIHRoZSBtYWluLWZyYW1lLgogICAgIGNvbnN0IFdlYlBhZ2VTZXJpYWxpemVy
OjpSZXNvdXJjZSYgcmVzb3VyY2UgPSByZXNvdXJjZXNbMF07Ci0gICAgRVhQRUNUX1RSVUUocmVz
b3VyY2UudXJsID09IEdVUkwoImh0dHA6Ly93d3cudGVzdC5jb20iKSk7CisgICAgRVhQRUNUX1RS
VUUocmVzb3VyY2UudXJsID09IFdlYlVSTCh0b0tVUkwoImh0dHA6Ly93d3cudGVzdC5jb20iKSkp
OwogICAgIEVYUEVDVF9FUSgwLCByZXNvdXJjZS5taW1lVHlwZS5jb21wYXJlKFdlYkNTdHJpbmco
InRleHQvaHRtbCIpKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHJlc291cmNlLmRhdGEuaXNFbXB0eSgp
KTsKIApAQCAtMjI3LDcgKzIxNyw3IEBAIFRFU1RfRihXZWJQYWdlTmV3U2VyaWFsaXplVGVzdCwg
RkFJTFNfQ1NTUmVzb3VyY2VzKQogCiAgICAgLy8gVGhlIGZpcnN0IHJlc291cmNlIHNob3VsZCBi
ZSB0aGUgbWFpbi1mcmFtZS4KICAgICBjb25zdCBXZWJQYWdlU2VyaWFsaXplcjo6UmVzb3VyY2Um
IHJlc291cmNlID0gcmVzb3VyY2VzWzBdOwotICAgIEVYUEVDVF9UUlVFKHJlc291cmNlLnVybCA9
PSBHVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tIikpOworICAgIEVYUEVDVF9UUlVFKHJlc291cmNl
LnVybCA9PSBXZWJVUkwodG9LVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tIikpKTsKICAgICBFWFBF
Q1RfRVEoMCwgcmVzb3VyY2UubWltZVR5cGUuY29tcGFyZShXZWJDU3RyaW5nKCJ0ZXh0L2h0bWwi
KSkpOwogICAgIEVYUEVDVF9GQUxTRShyZXNvdXJjZS5kYXRhLmlzRW1wdHkoKSk7CiAKQEAgLTI0
OSwxMSArMjM5LDExIEBAIFRFU1RfRihXZWJQYWdlTmV3U2VyaWFsaXplVGVzdCwgRkFJTFNfQ1NT
UmVzb3VyY2VzKQogVEVTVF9GKFdlYlBhZ2VOZXdTZXJpYWxpemVUZXN0LCBCbGFua0ZyYW1lcykK
IHsKICAgICAvLyBSZWdpc3RlciB0aGUgbW9ja2VkIGZyYW1lIGFuZCBsb2FkIGl0LgotICAgIFdl
YlVSTCB0b3BGcmFtZVVSTCA9IEdVUkwoImh0dHA6Ly93d3cudGVzdC5jb20iKTsKLSAgICByZWdp
c3Rlck1vY2tlZFVSTExvYWQodG9wRnJhbWVVUkwsIFdlYlN0cmluZzo6ZnJvbVVURjgoImJsYW5r
X2ZyYW1lcy5odG1sIiksIGh0bWxNaW1lVHlwZSgpKTsKLSAgICByZWdpc3Rlck1vY2tlZFVSTExv
YWQoR1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbS9yZWRfYmFja2dyb3VuZC5wbmciKSwgV2ViU3Ry
aW5nOjpmcm9tVVRGOCgicmVkX2JhY2tncm91bmQucG5nIiksIHBuZ01pbWVUeXBlKCkpOwotICAg
IHJlZ2lzdGVyTW9ja2VkVVJMTG9hZChHVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tL29yYW5nZV9i
YWNrZ3JvdW5kLnBuZyIpLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJvcmFuZ2VfYmFja2dyb3VuZC5w
bmciKSwgcG5nTWltZVR5cGUoKSk7Ci0gICAgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKEdVUkwoImh0
dHA6Ly93d3cudGVzdC5jb20vYmx1ZV9iYWNrZ3JvdW5kLnBuZyIpLCBXZWJTdHJpbmc6OmZyb21V
VEY4KCJibHVlX2JhY2tncm91bmQucG5nIiksIHBuZ01pbWVUeXBlKCkpOworICAgIFdlYlVSTCB0
b3BGcmFtZVVSTCA9IHRvS1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbSIpOworICAgIHJlZ2lzdGVy
TW9ja2VkVVJMTG9hZCh0b3BGcmFtZVVSTCwgV2ViU3RyaW5nOjpmcm9tVVRGOCgiYmxhbmtfZnJh
bWVzLmh0bWwiKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgicGFnZXNlcmlhbGl6ZXIvIiksIGh0bWxN
aW1lVHlwZSgpKTsKKyAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQodG9LVVJMKCJodHRwOi8vd3d3
LnRlc3QuY29tL3JlZF9iYWNrZ3JvdW5kLnBuZyIpLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJyZWRf
YmFja2dyb3VuZC5wbmciKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgicGFnZXNlcmlhbGl6ZXIvIiks
IHBuZ01pbWVUeXBlKCkpOworICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZCh0b0tVUkwoImh0dHA6
Ly93d3cudGVzdC5jb20vb3JhbmdlX2JhY2tncm91bmQucG5nIiksIFdlYlN0cmluZzo6ZnJvbVVU
RjgoIm9yYW5nZV9iYWNrZ3JvdW5kLnBuZyIpLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJwYWdlc2Vy
aWFsaXplci8iKSwgcG5nTWltZVR5cGUoKSk7CisgICAgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKHRv
S1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbS9ibHVlX2JhY2tncm91bmQucG5nIiksIFdlYlN0cmlu
Zzo6ZnJvbVVURjgoImJsdWVfYmFja2dyb3VuZC5wbmciKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgi
cGFnZXNlcmlhbGl6ZXIvIiksIHBuZ01pbWVUeXBlKCkpOwogCiAgICAgbG9hZFVSTEluVG9wRnJh
bWUodG9wRnJhbWVVUkwpOwogCkBAIC0yNjMsNyArMjUzLDcgQEAgVEVTVF9GKFdlYlBhZ2VOZXdT
ZXJpYWxpemVUZXN0LCBCbGFua0ZyYW1lcykKIAogICAgIC8vIFRoZSBmaXJzdCByZXNvdXJjZSBz
aG91bGQgYmUgdGhlIG1haW4tZnJhbWUuCiAgICAgY29uc3QgV2ViUGFnZVNlcmlhbGl6ZXI6OlJl
c291cmNlJiByZXNvdXJjZSA9IHJlc291cmNlc1swXTsKLSAgICBFWFBFQ1RfVFJVRShyZXNvdXJj
ZS51cmwgPT0gR1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbSIpKTsKKyAgICBFWFBFQ1RfVFJVRShy
ZXNvdXJjZS51cmwgPT0gV2ViVVJMKHRvS1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbSIpKSk7CiAg
ICAgRVhQRUNUX0VRKDAsIHJlc291cmNlLm1pbWVUeXBlLmNvbXBhcmUoV2ViQ1N0cmluZygidGV4
dC9odG1sIikpKTsKICAgICBFWFBFQ1RfRkFMU0UocmVzb3VyY2UuZGF0YS5pc0VtcHR5KCkpOwog
CkBAIC0yNzksOCArMjY5LDggQEAgVEVTVF9GKFdlYlBhZ2VOZXdTZXJpYWxpemVUZXN0LCBCbGFu
a0ZyYW1lcykKIAogVEVTVF9GKFdlYlBhZ2VOZXdTZXJpYWxpemVUZXN0LCBTZXJpYWxpemVYTUxI
YXNSaWdodERlY2xhcmF0aW9uKQogewotICAgIFdlYlVSTCB0b3BGcmFtZVVSTCA9IEdVUkwoImh0
dHA6Ly93d3cudGVzdC5jb20vc2ltcGxlLnhodG1sIik7Ci0gICAgcmVnaXN0ZXJNb2NrZWRVUkxM
b2FkKHRvcEZyYW1lVVJMLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJzaW1wbGUueGh0bWwiKSwgeGh0
bWxNaW1lVHlwZSgpKTsKKyAgICBXZWJVUkwgdG9wRnJhbWVVUkwgPSB0b0tVUkwoImh0dHA6Ly93
d3cudGVzdC5jb20vc2ltcGxlLnhodG1sIik7CisgICAgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKHRv
cEZyYW1lVVJMLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJzaW1wbGUueGh0bWwiKSwgV2ViU3RyaW5n
Ojpmcm9tVVRGOCgicGFnZXNlcmlhbGl6ZXIvIiksIHhodG1sTWltZVR5cGUoKSk7CiAKICAgICBs
b2FkVVJMSW5Ub3BGcmFtZSh0b3BGcmFtZVVSTCk7CiAKQEAgLTI5MCw3ICsyODAsNyBAQCBURVNU
X0YoV2ViUGFnZU5ld1NlcmlhbGl6ZVRlc3QsIFNlcmlhbGl6ZVhNTEhhc1JpZ2h0RGVjbGFyYXRp
b24pCiAKICAgICAvLyBXZSBleHBlY3Qgb25seSBvbmUgcmVzb3VyY2UsIHRoZSBYTUwuCiAgICAg
QVNTRVJUX0VRKDFVLCByZXNvdXJjZXMuc2l6ZSgpKTsKLSAgICBzdGQ6OnN0cmluZyB4bWwgPSBy
ZXNvdXJjZXNbMF0uZGF0YTsKKyAgICBzdGQ6OnN0cmluZyB4bWwgPSBzdGQ6OnN0cmluZyhyZXNv
dXJjZXNbMF0uZGF0YS5kYXRhKCkpOwogCiAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgb25lIGFuZCBv
bmx5IG9uZSBpbnN0YW5jZSBvZiB0aGUgWE1MIGRlY2xhcmF0aW9uLgogICAgIHNpemVfdCBwb3Mg
PSB4bWwuZmluZCgiPD94bWwgdmVyc2lvbj0iKTsKQEAgLTMxMCw3ICszMDAsNyBAQCBURVNUX0Yo
V2ViUGFnZU5ld1NlcmlhbGl6ZVRlc3QsIEZBSUxTX1Rlc3RNSFRNTEVuY29kaW5nKQogICAgIEFT
U0VSVF9GQUxTRShtaHRtbERhdGEuaXNFbXB0eSgpKTsKIAogICAgIC8vIFJlYWQgdGhlIE1IVE1M
IGRhdGEgbGluZSBwZXIgbGluZSBhbmQgZG8gc29tZSBwc2V1ZG8tcGFyc2luZyB0byBtYWtlIHN1
cmUgdGhlIHJpZ2h0IGVuY29kaW5nIGlzIHVzZWQgZm9yIHRoZSBkaWZmZXJlbnQgc2VjdGlvbnMu
Ci0gICAgTGluZVJlYWRlciBsaW5lUmVhZGVyKG1odG1sRGF0YSk7CisgICAgTGluZVJlYWRlciBs
aW5lUmVhZGVyKHN0ZDo6c3RyaW5nKG1odG1sRGF0YS5kYXRhKCkpKTsKICAgICBpbnQgc2VjdGlv
bkNoZWNrZWRDb3VudCA9IDA7CiAgICAgY29uc3QgY2hhciogZXhwZWN0ZWRFbmNvZGluZyA9IDA7
CiAgICAgc3RkOjpzdHJpbmcgbGluZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvV2ViUGFnZVNlcmlhbGl6ZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvV2ViUGFnZVNlcmlhbGl6ZXJUZXN0LmNwcAppbmRleCBhYTBjNmRjMmE4NzRlYzRi
Nzk4NDNlNzAyMWJjZGNlNjNiMzYxMTYzLi5mZWI1ZjdmNmYzOWNkZWI3OWZhZjU0MGEwMjc1N2Ex
MzFhMGE0YjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlBh
Z2VTZXJpYWxpemVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9X
ZWJQYWdlU2VyaWFsaXplclRlc3QuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVNlcmlhbGl6ZXIuaCIKIAorI2luY2x1ZGUgIlVSTFRl
c3RIZWxwZXJzLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJGcmFtZUNs
aWVudC5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgpAQCAtMzksMTEgKzQwLDEx
IEBACiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViVVJMUmVzcG9uc2UuaCIKICNpbmNsdWRlICJXZWJW
aWV3LmgiCiAKLSNpbmNsdWRlIDxnb29nbGV1cmwvc3JjL2d1cmwuaD4KICNpbmNsdWRlIDxndGVz
dC9ndGVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBXZWJLaXQ6OlVSTFRlc3RIZWxwZXJzOjp0
b0tVUkw7CiAKIG5hbWVzcGFjZSB7CiAKQEAgLTczLDIyICs3NCwxNiBAQCBwcm90ZWN0ZWQ6CiAg
ICAgICAgIG1fd2ViVmlldy0+Y2xvc2UoKTsKICAgICB9CiAKLSAgICB2b2lkIHJlZ2lzdGVyTW9j
a2VkVVJMTG9hZChjb25zdCBXZWJVUkwmIHVybCwgY29uc3QgV2ViU3RyaW5nJiBmaWxlTmFtZSkK
KyAgICB2b2lkIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZChjb25zdCBzdGQ6OnN0cmluZyYgdXJsLCBj
b25zdCBXZWJTdHJpbmcmIGZpbGVOYW1lKQogICAgIHsKLSAgICAgICAgV2ViVVJMUmVzcG9uc2Ug
cmVzcG9uc2U7Ci0gICAgICAgIHJlc3BvbnNlLmluaXRpYWxpemUoKTsKLSAgICAgICAgcmVzcG9u
c2Uuc2V0TUlNRVR5cGUoInRleHQvaHRtbCIpOwotICAgICAgICBzdGQ6OnN0cmluZyBmaWxlUGF0
aCA9IHdlYmtpdF9zdXBwb3J0OjpHZXRXZWJLaXRSb290RGlyKCkudXRmOCgpOwotICAgICAgICBm
aWxlUGF0aC5hcHBlbmQoIi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvcGFnZXNl
cmlhbGl6YXRpb24vIik7Ci0gICAgICAgIGZpbGVQYXRoLmFwcGVuZChmaWxlTmFtZS51dGY4KCkp
OwotICAgICAgICB3ZWJraXRfc3VwcG9ydDo6UmVnaXN0ZXJNb2NrZWRVUkwodXJsLCByZXNwb25z
ZSwgV2ViU3RyaW5nOjpmcm9tVVRGOChmaWxlUGF0aCkpOworICAgICAgICBVUkxUZXN0SGVscGVy
czo6cmVnaXN0ZXJNb2NrZWRVUkxMb2FkKHRvS1VSTCh1cmwpLCBmaWxlTmFtZSwgV2ViU3RyaW5n
Ojpmcm9tVVRGOCgicGFnZXNlcmlhbGl6YXRpb24vIiksIFdlYlN0cmluZzo6ZnJvbVVURjgoInRl
eHQvaHRtbCIpKTsKICAgICB9CiAKLSAgICB2b2lkIGxvYWRVUkxJblRvcEZyYW1lKGNvbnN0IEdV
UkwmIHVybCkKKyAgICB2b2lkIGxvYWRVUkxJblRvcEZyYW1lKGNvbnN0IFdlYlVSTCYgdXJsKQog
ICAgIHsKICAgICAgICAgV2ViVVJMUmVxdWVzdCB1cmxSZXF1ZXN0OwogICAgICAgICB1cmxSZXF1
ZXN0LmluaXRpYWxpemUoKTsKLSAgICAgICAgdXJsUmVxdWVzdC5zZXRVUkwoV2ViVVJMKHVybCkp
OworICAgICAgICB1cmxSZXF1ZXN0LnNldFVSTCh1cmwpOwogICAgICAgICBtX3dlYlZpZXctPm1h
aW5GcmFtZSgpLT5sb2FkUmVxdWVzdCh1cmxSZXF1ZXN0KTsKICAgICAgICAgLy8gTWFrZSBzdXJl
IGFueSBwZW5kaW5nIHJlcXVlc3QgZ2V0IHNlcnZlZC4KICAgICAgICAgd2Via2l0X3N1cHBvcnQ6
OlNlcnZlQXN5bmNocm9ub3VzTW9ja2VkUmVxdWVzdHMoKTsKQEAgLTk2LDcgKzkxLDcgQEAgcHJv
dGVjdGVkOgogCiAgICAgc3RhdGljIGJvb2wgd2ViVmVjdG9yQ29udGFpbnMoY29uc3QgV2ViVmVj
dG9yPFdlYlVSTD4mIHZlY3RvciwgY29uc3QgY2hhciogdXJsKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIHZlY3Rvci5jb250YWlucyhXZWJVUkwoR1VSTCh1cmwpKSk7CisgICAgICAgIHJldHVybiB2
ZWN0b3IuY29udGFpbnMoV2ViVVJMKHRvS1VSTChzdGQ6OnN0cmluZyh1cmwpKSkpOwogICAgIH0K
IAogICAgIC8vIFVzZWZ1bCBmb3IgZGVidWdnaW5nLgpAQCAtMTE2LDggKzExMSw4IEBAIHByaXZh
dGU6CiBURVNUX0YoV2ViUGFnZVNlcmlhbGl6ZXJUZXN0LCBIVE1MTm9kZXMpCiB7CiAgICAgLy8g
UmVnaXN0ZXIgdGhlIG1vY2tlZCBmcmFtZSBhbmQgbG9hZCBpdC4KLSAgICBXZWJVUkwgdG9wRnJh
bWVVUkwgPSBHVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tIik7Ci0gICAgcmVnaXN0ZXJNb2NrZWRV
UkxMb2FkKHRvcEZyYW1lVVJMLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJzaW1wbGVfcGFnZS5odG1s
IikpOworICAgIFdlYlVSTCB0b3BGcmFtZVVSTCA9IHRvS1VSTCgiaHR0cDovL3d3dy50ZXN0LmNv
bSIpOworICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZCgiaHR0cDovL3d3dy50ZXN0LmNvbSIsIFdl
YlN0cmluZzo6ZnJvbVVURjgoInNpbXBsZV9wYWdlLmh0bWwiKSk7CiAgICAgbG9hZFVSTEluVG9w
RnJhbWUodG9wRnJhbWVVUkwpOwogCiAgICAgLy8gUmV0cmlldmUgYWxsIHJlc291cmNlcy4KQEAg
LTE1MCwxOCArMTQ1LDE4IEBAIFRFU1RfRihXZWJQYWdlU2VyaWFsaXplclRlc3QsIEhUTUxOb2Rl
cykKIFRFU1RfRihXZWJQYWdlU2VyaWFsaXplclRlc3QsIE11bHRpcGxlRnJhbWVzKQogewogICAg
IC8vIFJlZ2lzdGVyIHRoZSBtb2NrZWQgZnJhbWVzLgotICAgIFdlYlVSTCB0b3BGcmFtZVVSTCA9
IEdVUkwoImh0dHA6Ly93d3cudGVzdC5jb20iKTsKLSAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQo
dG9wRnJhbWVVUkwsIFdlYlN0cmluZzo6ZnJvbVVURjgoInRvcF9mcmFtZS5odG1sIikpOwotICAg
IHJlZ2lzdGVyTW9ja2VkVVJMTG9hZChHVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tL3NpbXBsZV9p
ZnJhbWUuaHRtbCIpLAorICAgIFdlYlVSTCB0b3BGcmFtZVVSTCA9IHRvS1VSTCgiaHR0cDovL3d3
dy50ZXN0LmNvbSIpOworICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZCgiaHR0cDovL3d3dy50ZXN0
LmNvbSIsIFdlYlN0cmluZzo6ZnJvbVVURjgoInRvcF9mcmFtZS5odG1sIikpOworICAgIHJlZ2lz
dGVyTW9ja2VkVVJMTG9hZCgiaHR0cDovL3d3dy50ZXN0LmNvbS9zaW1wbGVfaWZyYW1lLmh0bWwi
LAogICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJTdHJpbmc6OmZyb21VVEY4KCJzaW1wbGVf
aWZyYW1lLmh0bWwiKSk7Ci0gICAgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKEdVUkwoImh0dHA6Ly93
d3cudGVzdC5jb20vb2JqZWN0X2lmcmFtZS5odG1sIiksCisgICAgcmVnaXN0ZXJNb2NrZWRVUkxM
b2FkKCJodHRwOi8vd3d3LnRlc3QuY29tL29iamVjdF9pZnJhbWUuaHRtbCIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdlYlN0cmluZzo6ZnJvbVVURjgoIm9iamVjdF9pZnJhbWUuaHRtbCIp
KTsKLSAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQoR1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbS9l
bWJlZF9pZnJhbWUuaHRtbCIpLAorICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZCgiaHR0cDovL3d3
dy50ZXN0LmNvbS9lbWJlZF9pZnJhbWUuaHRtbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IFdlYlN0cmluZzo6ZnJvbVVURjgoImVtYmVkX2lmcmFtZS5odG1sIikpOwogICAgIC8vIElmIHdl
IGRvbid0IHJlZ2lzdGVyIGEgbW9ja2VkIHJlc291cmNlIGZvciBhd2Vzb21lLnBuZywgaXQgY2F1
c2VzIHRoZQogICAgIC8vIGRvY3VtZW50IGxvYWRlciBvZiB0aGUgaWZyYW1lIHRoYXQgaGFzIGl0
IGFzIGl0cyBzcmMgdG8gYXNzZXJ0IG9uIGNsb3NlLAogICAgIC8vIG5vdCBzdXJlIHdoeS4KLSAg
ICByZWdpc3Rlck1vY2tlZFVSTExvYWQoR1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbS9hd2Vzb21l
LnBuZyIpLAorICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZCgiaHR0cDovL3d3dy50ZXN0LmNvbS9h
d2Vzb21lLnBuZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYlN0cmluZzo6ZnJvbVVU
RjgoImF3ZXNvbWUucG5nIikpOwogCiAgICAgbG9hZFVSTEluVG9wRnJhbWUodG9wRnJhbWVVUkwp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJWaWV3VGVzdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlZpZXdUZXN0LmNwcAppbmRleCBm
ODU4ZmU3YjU4MWU3YjE4M2M0YjRiZDVhMzM3Mjc0YmUwNjE5YzU5Li4xMTk2OWEyODM2NWJkMDM1
ZDJhNjgyOGE3NmM2MjliMzlkZDlkZjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL1dlYlZpZXdUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL1dlYlZpZXdUZXN0LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkZyYW1lVGVz
dEhlbHBlcnMuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MRG9jdW1l
bnQuaCIKKyNpbmNsdWRlICJVUkxUZXN0SGVscGVycy5oIgogI2luY2x1ZGUgIldlYkRvY3VtZW50
LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgpA
QCAtNDIsMTEgKzQzLDExIEBACiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViU2l6ZS5oIgogI2luY2x1
ZGUgIldlYlZpZXdDbGllbnQuaCIKICNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgotI2luY2x1ZGUg
PGdvb2dsZXVybC9zcmMvZ3VybC5oPgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAjaW5jbHVk
ZSA8d2Via2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKK3VzaW5nIFdlYktpdDo6VVJMVGVzdEhlbHBlcnM6OnRvS1VSTDsKIAogbmFtZXNwYWNl
IHsKIApAQCAtMTE3LDcgKzExOCw3IEBAIHByb3RlY3RlZDoKIAogVEVTVF9GKFdlYlZpZXdUZXN0
LCBGb2N1c0lzSW5hY3RpdmUpCiB7Ci0gICAgRnJhbWVUZXN0SGVscGVyczo6cmVnaXN0ZXJNb2Nr
ZWRVUkxMb2FkKG1fYmFzZVVSTCwgInZpc2libGVfaWZyYW1lLmh0bWwiKTsKKyAgICBVUkxUZXN0
SGVscGVyczo6cmVnaXN0ZXJNb2NrZWRVUkxGcm9tQmFzZVVSTChXZWJTdHJpbmc6OmZyb21VVEY4
KG1fYmFzZVVSTC5jX3N0cigpKSwgInZpc2libGVfaWZyYW1lLmh0bWwiKTsKICAgICBXZWJWaWV3
KiB3ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNl
VVJMICsgInZpc2libGVfaWZyYW1lLmh0bWwiKTsKIAogICAgIHdlYlZpZXctPnNldEZvY3VzKHRy
dWUpOwpAQCAtMTQ1LDcgKzE0Niw3IEBAIFRFU1RfRihXZWJWaWV3VGVzdCwgRm9jdXNJc0luYWN0
aXZlKQogCiBURVNUX0YoV2ViVmlld1Rlc3QsIEFjdGl2ZVN0YXRlKQogewotICAgIEZyYW1lVGVz
dEhlbHBlcnM6OnJlZ2lzdGVyTW9ja2VkVVJMTG9hZChtX2Jhc2VVUkwsICJ2aXNpYmxlX2lmcmFt
ZS5odG1sIik7CisgICAgVVJMVGVzdEhlbHBlcnM6OnJlZ2lzdGVyTW9ja2VkVVJMRnJvbUJhc2VV
UkwoV2ViU3RyaW5nOjpmcm9tVVRGOChtX2Jhc2VVUkwuY19zdHIoKSksICJ2aXNpYmxlX2lmcmFt
ZS5odG1sIik7CiAgICAgV2ViVmlldyogd2ViVmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0
ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJ2aXNpYmxlX2lmcmFtZS5odG1sIik7CiAKICAg
ICBBU1NFUlRfVFJVRSh3ZWJWaWV3KTsKQEAgLTE2OSw3ICsxNzAsNyBAQCB2b2lkIFdlYlZpZXdU
ZXN0Ojp0ZXN0QXV0b1Jlc2l6ZShjb25zdCBXZWJTaXplJiBtaW5BdXRvUmVzaXplLCBjb25zdCBX
ZWJTaXplJiBtYQogewogICAgIEF1dG9SZXNpemVXZWJWaWV3Q2xpZW50IGNsaWVudDsKICAgICBz
dGQ6OnN0cmluZyB1cmwgPSBtX2Jhc2VVUkwgKyAic3BlY2lmeV9zaXplLmh0bWw/IiArIHBhZ2VX
aWR0aCArICI6IiArIHBhZ2VIZWlnaHQ7Ci0gICAgRnJhbWVUZXN0SGVscGVyczo6cmVnaXN0ZXJN
b2NrZWRVUkxMb2FkKEdVUkwodXJsKSwgInNwZWNpZnlfc2l6ZS5odG1sIik7CisgICAgVVJMVGVz
dEhlbHBlcnM6OnJlZ2lzdGVyTW9ja2VkVVJMTG9hZCh0b0tVUkwodXJsKSwgInNwZWNpZnlfc2l6
ZS5odG1sIik7CiAgICAgV2ViVmlldyogd2ViVmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0
ZVdlYlZpZXdBbmRMb2FkKHVybCwgdHJ1ZSwgMCwgJmNsaWVudCk7CiAgICAgY2xpZW50LnRlc3RE
YXRhKCkuc2V0V2ViVmlldyh3ZWJWaWV3KTsKIApAQCAtMjY4LDcgKzI2OSw3IEBAIFRFU1RfRihX
ZWJWaWV3VGVzdCwgQXV0b1Jlc2l6ZU1heFNpemUpCiAKIHZvaWQgV2ViVmlld1Rlc3Q6OnRlc3RU
ZXh0SW5wdXRUeXBlKFdlYlRleHRJbnB1dFR5cGUgZXhwZWN0ZWRUeXBlLCBjb25zdCBzdGQ6OnN0
cmluZyYgaHRtbEZpbGUpCiB7Ci0gICAgRnJhbWVUZXN0SGVscGVyczo6cmVnaXN0ZXJNb2NrZWRV
UkxMb2FkKG1fYmFzZVVSTCwgaHRtbEZpbGUpOworICAgIFVSTFRlc3RIZWxwZXJzOjpyZWdpc3Rl
ck1vY2tlZFVSTEZyb21CYXNlVVJMKFdlYlN0cmluZzo6ZnJvbVVURjgobV9iYXNlVVJMLmNfc3Ry
KCkpLCBXZWJTdHJpbmc6OmZyb21VVEY4KGh0bWxGaWxlLmNfc3RyKCkpKTsKICAgICBXZWJWaWV3
KiB3ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNl
VVJMICsgaHRtbEZpbGUpOwogICAgIHdlYlZpZXctPnNldEluaXRpYWxGb2N1cyhmYWxzZSk7CiAg
ICAgRVhQRUNUX0VRKGV4cGVjdGVkVHlwZSwgd2ViVmlldy0+dGV4dElucHV0VHlwZSgpKTsKQEAg
LTMwOCw3ICszMDksNyBAQCBURVNUX0YoV2ViVmlld1Rlc3QsIERJU0FCTEVEX1RleHRJbnB1dFR5
cGUpCiAKIFRFU1RfRihXZWJWaWV3VGVzdCwgU2V0RWRpdGFibGVTZWxlY3Rpb25PZmZzZXRzKQog
ewotICAgIEZyYW1lVGVzdEhlbHBlcnM6OnJlZ2lzdGVyTW9ja2VkVVJMTG9hZChtX2Jhc2VVUkws
ICJpbnB1dF9maWVsZF9wb3B1bGF0ZWQuaHRtbCIpOworICAgIFVSTFRlc3RIZWxwZXJzOjpyZWdp
c3Rlck1vY2tlZFVSTEZyb21CYXNlVVJMKFdlYlN0cmluZzo6ZnJvbVVURjgobV9iYXNlVVJMLmNf
c3RyKCkpLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJpbnB1dF9maWVsZF9wb3B1bGF0ZWQuaHRtbCIp
KTsKICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmll
d0FuZExvYWQobV9iYXNlVVJMICsgImlucHV0X2ZpZWxkX3BvcHVsYXRlZC5odG1sIik7CiAgICAg
d2ViVmlldy0+c2V0SW5pdGlhbEZvY3VzKGZhbHNlKTsKICAgICB3ZWJWaWV3LT5zZXRFZGl0YWJs
ZVNlbGVjdGlvbk9mZnNldHMoNSwgMTMpOwpAQCAtMzE2LDcgKzMxNyw3IEBAIFRFU1RfRihXZWJW
aWV3VGVzdCwgU2V0RWRpdGFibGVTZWxlY3Rpb25PZmZzZXRzKQogICAgIEVYUEVDVF9FUSgiNTY3
ODlhYmMiLCBmcmFtZS0+c2VsZWN0aW9uQXNUZXh0KCkpOwogICAgIHdlYlZpZXctPmNsb3NlKCk7
CiAKLSAgICBGcmFtZVRlc3RIZWxwZXJzOjpyZWdpc3Rlck1vY2tlZFVSTExvYWQobV9iYXNlVVJM
LCAiY29udGVudF9lZGl0YWJsZV9wb3B1bGF0ZWQuaHRtbCIpOworICAgIFVSTFRlc3RIZWxwZXJz
OjpyZWdpc3Rlck1vY2tlZFVSTEZyb21CYXNlVVJMKFdlYlN0cmluZzo6ZnJvbVVURjgobV9iYXNl
VVJMLmNfc3RyKCkpLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJjb250ZW50X2VkaXRhYmxlX3BvcHVs
YXRlZC5odG1sIikpOwogICAgIHdlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJW
aWV3QW5kTG9hZChtX2Jhc2VVUkwgKyAiY29udGVudF9lZGl0YWJsZV9wb3B1bGF0ZWQuaHRtbCIp
OwogICAgIHdlYlZpZXctPnNldEluaXRpYWxGb2N1cyhmYWxzZSk7CiAgICAgd2ViVmlldy0+c2V0
RWRpdGFibGVTZWxlY3Rpb25PZmZzZXRzKDgsIDE5KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151725</attachid>
            <date>2012-07-11 10:13:19 -0700</date>
            <delta_ts>2012-07-11 10:43:25 -0700</delta_ts>
            <desc>Fixed component build setup</desc>
            <filename>bug-90094-20120711101319.patch</filename>
            <type>text/plain</type>
            <size>59532</size>
            <attacher name="Shawn Singh">shawnsingh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDJhMjUzZDVlYzVlYWUwODE4MjY5NjhkYWY5ZTc4ZDNhMzU3ZWU1YTguLjBjOTY1ZjZhY2RjYzg3
OTcxZDg0NTk0Y2MwZWEwZTgxOGZmZWUzOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNTAgQEAKKzIwMTItMDctMTEgIFNoYXduIFNpbmdoICA8c2hhd25zaW5naEBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBVc2UgV0VCS0lUX0lNUExFTUVOVEFUSU9O
ID09IDEgZm9yIHdlYmtpdF91bml0X3Rlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05MDA5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyB0aGUgV0VCS0lUX0lNUExFTUVOVEFU
SU9OID0gMSBkZWZpbmUgdG8KKyAgICAgICAgV2ViS2l0VW5pdFRlc3RzLmd5cC4gVG8gZ2V0IGl0
IHRvIGNvbXBpbGUgY29ycmVjdGx5LCBzb21lIHN0cmluZworICAgICAgICBhbmQgVVJMIGNvZGUg
d2FzIHJlZmFjdG9yZWQgYW5kIGZpeGVkLCBpbiBwYXJ0aWN1bGFyIEdVUkwgdXNhZ2UgaXMKKyAg
ICAgICAgcmVwbGFjZWQgd2l0aCBLVVJMIHVzYWdlLgorCisgICAgICAgICogV2ViS2l0Lmd5cDoK
KyAgICAgICAgYWRkZWQgV0VCS0lUX0lNUExFTUVOVEFUSU9OID09IDEgZm9yIHVuaXQgdGVzdCBj
b2RlIHdoZW4gaW4gc2hhcmVkIGxpYnJhcnkKKyAgICAgICAgYWRkZWQgVVJMVGVzdEhlbHBlcnMg
dG8gZXhjbHVzaW9uIGluIHNoYXJlZCBsaWJyYXJ5IGJ1aWxkLCBiZWNhdXNlIGl0IGRlcGVuZHMg
b24gd2Via2l0X3N1cHBvcnQKKworICAgICAgICAqIFdlYktpdC5neXBpOgorICAgICAgICBhZGRl
ZCBVUkxUZXN0SGVscGVycy5oIGFuZCAuY3BwIHRvIHRoZSBidWlsZCBwcm9jZXNzCisKKyAgICAg
ICAgKiBXZWJLaXRVbml0VGVzdHMuZ3lwOgorICAgICAgICBhZGRlZCBXRUJLSVRfSU1QTEVNRU5U
QVRJT04gPT0gMSBmb3IgdW5pdCB0ZXN0IGNvZGUgd2hlbiBub3QgaW4gc2hhcmVkIGxpYnJhcnku
CisgICAgICAgIG5vdGUgdGhhdCBpbiBzaGFyZWQgbGlicmFyeSBidWlsZCwgUnVuQWxsVGVzdHMu
Y3BwIGRvZXMgbm90IGhhdmUgV0VCS0lUX0lNUExFTUVOVEFUSU9OID09IDEuCisKKyAgICAgICAg
KiBwdWJsaWMvV2ViRE9NTWVzc2FnZUV2ZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkRPTU1l
c3NhZ2VFdmVudDo6V2ViRE9NTWVzc2FnZUV2ZW50KToKKyAgICAgICAgKiB0ZXN0cy9Bc3NvY2lh
dGVkVVJMTG9hZGVyVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvRXZlbnRMaXN0ZW5lclRlc3Qu
Y3BwOgorICAgICAgICAqIHRlc3RzL0ZyYW1lVGVzdEhlbHBlcnMuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpGcmFtZVRlc3RIZWxwZXJzOjpsb2FkRnJhbWUpOgorICAgICAgICAqIHRlc3RzL0ZyYW1l
VGVzdEhlbHBlcnMuaDoKKyAgICAgICAgKiB0ZXN0cy9MaXN0ZW5lckxlYWtUZXN0LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TGlzdGVuZXJMZWFrVGVzdDo6UnVuVGVzdCk6CisgICAgICAgICogdGVz
dHMvUG9wdXBNZW51VGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvUnVuQWxsVGVzdHMuY3BwOgor
ICAgICAgICAqIHRlc3RzL1VSTFRlc3RIZWxwZXJzLmNwcDogQWRkZWQuCisgICAgICAgIChVUkxU
ZXN0SGVscGVycyk6CisgICAgICAgIChXZWJLaXQ6OlVSTFRlc3RIZWxwZXJzOjpyZWdpc3Rlck1v
Y2tlZFVSTEZyb21CYXNlVVJMKToKKyAgICAgICAgKFdlYktpdDo6VVJMVGVzdEhlbHBlcnM6OnJl
Z2lzdGVyTW9ja2VkVVJMTG9hZCk6CisgICAgICAgICogdGVzdHMvVVJMVGVzdEhlbHBlcnMuaDog
Q29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRE9NTWVzc2FnZUV2
ZW50LmguCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoVVJMVGVzdEhlbHBlcnMpOgorICAg
ICAgICAoV2ViS2l0OjpVUkxUZXN0SGVscGVyczo6dG9LVVJMKToKKyAgICAgICAgKiB0ZXN0cy9X
ZWJGcmFtZVRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL1dlYlBhZ2VOZXdTZXJpYWxpemVyVGVz
dC5jcHA6CisgICAgICAgICogdGVzdHMvV2ViUGFnZVNlcmlhbGl6ZXJUZXN0LmNwcDoKKyAgICAg
ICAgKiB0ZXN0cy9XZWJWaWV3VGVzdC5jcHA6CisKIDIwMTItMDctMTAgIFBhdmVsIEZlbGRtYW4g
IDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogbWlncmF0
ZSBmcm9tIGJhY2tncm91bmQgaW1hZ2VzIHRvIENTUyBmb3Igc3RhdHVzYmFyIHJlbmRlcmluZy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCA2ZmNlNDQwNzU4NzgzYTNlMmQxOTJlOGEz
Y2U5N2IwZDI3YTBhNGI3Li5mNjg2ODIwMWM2MTAxYTliYjZkZmY1Njk5Mzg5YTdhMGM0OGRkMmVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC02ODgsNiArNjg4LDcgQEAKICAgICAg
ICAgICAgICAgICAgICAgICAgIFsnY29tcG9uZW50PT0ic2hhcmVkX2xpYnJhcnkiJywgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdkZWZpbmVzJzogWwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnV0VCS0lUX0RMTCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdXRUJLSVRfSU1QTEVNRU5UQVRJT049MScsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzogWwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLi4vLi4vV2ViQ29yZS9XZWJDb3JlLmd5cC9X
ZWJDb3JlLmd5cDp3ZWJjb3JlX2JpbmRpbmdzJywKQEAgLTczOSw2ICs3NDAsNyBAQAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMvUG9wdXBNZW51VGVzdC5jcHAnLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMvUmVuZGVyVGFibGVDZWxsVGVzdC5j
cHAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMvUmVuZGVyVGFibGVS
b3dUZXN0LmNwcCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9VUkxU
ZXN0SGVscGVycy5jcHAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMv
V2ViRnJhbWVUZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0
cy9XZWJQYWdlTmV3U2VyaWFsaXplclRlc3QuY3BwJywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ3Rlc3RzL1dlYlBhZ2VTZXJpYWxpemVyVGVzdC5jcHAnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vV2ViS2l0Lmd5cGkKaW5kZXggYjkwMWM2NTA4ZTI4NTBiZmExODlmMWRhYmM3OWJlNjJmYjg3
ZTc4ZC4uYmVkZTJiMWUzMWRjMGNiZWM5OGFkMjkyMjlmNGJkZWIwNzc3MDE5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXBpCkBAIC0xNDUsNiArMTQ1LDggQEAKICAgICAgICAgICAgICd0
ZXN0cy9UcmVlU3luY2hyb25pemVyVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1RyZWVU
ZXN0SGVscGVycy5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1RyZWVUZXN0SGVscGVycy5oJywK
KyAgICAgICAgICAgICd0ZXN0cy9VUkxUZXN0SGVscGVycy5jcHAnLAorICAgICAgICAgICAgJ3Rl
c3RzL1VSTFRlc3RIZWxwZXJzLmgnLAogICAgICAgICAgICAgJ3Rlc3RzL1dlYkFuaW1hdGlvblRl
c3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1w
bFRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9XZWJGbG9hdEFuaW1hdGlvbkN1cnZlVGVz
dC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXRVbml0VGVz
dHMuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXRVbml0VGVzdHMuZ3lwCmluZGV4
IGJmNjhmNGY0OWE2ZDQ4OTAwMGJhYjJhMWQ1NzVlNzViMmE1OWM0N2UuLjIwYzNmNmYzNmNhYjky
NzljZDRkNGQ3NTBiYzg0MzQ2ZjNkM2QwZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vV2ViS2l0VW5pdFRlc3RzLmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dl
YktpdFVuaXRUZXN0cy5neXAKQEAgLTg3LDYgKzg3LDkgQEAKICAgICAgICAgICAgICAgICAgICAg
J2RlcGVuZGVuY2llcyc6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICcuLi8uLi9XZWJDb3Jl
L1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwOndlYmNvcmUnLAogICAgICAgICAgICAgICAgICAgICBd
LAorICAgICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6IFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICdXRUJLSVRfSU1QTEVNRU5UQVRJT049MScsCisgICAgICAgICAgICAgICAgICAgIF0sCiAg
ICAgICAgICAgICAgICAgICAgICdzb3VyY2VzJzogWwogICAgICAgICAgICAgICAgICAgICAgICAg
JzxAKHdlYmtpdF91bml0dGVzdF9maWxlcyknLAogICAgICAgICAgICAgICAgICAgICBdLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRE9NTWVzc2FnZUV2ZW50
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJET01NZXNzYWdlRXZlbnQuaApp
bmRleCAzNTViNzM3MTVhNGY5ZDZiMDM2ZGZjMGUyODk2OGM5YWIwMjQwNjI0Li42NjE5YWYyNDY5
ZmZkYmY3ZjBjYWUyNzBmZTFmMWYyOTk5NTk5NjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJET01NZXNzYWdlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJET01NZXNzYWdlRXZlbnQuaApAQCAtNDYsNiArNDYsNyBAQCBj
bGFzcyBXZWJTdHJpbmc7CiAKIGNsYXNzIFdlYkRPTU1lc3NhZ2VFdmVudCA6IHB1YmxpYyBXZWJE
T01FdmVudCB7CiBwdWJsaWM6CisgICAgV2ViRE9NTWVzc2FnZUV2ZW50KCkgeyB9CiAgICAgV0VC
S0lUX0VYUE9SVCB2b2lkIGluaXRNZXNzYWdlRXZlbnQoY29uc3QgV2ViU3RyaW5nJiB0eXBlLCBi
b29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0
VmFsdWUmIG1lc3NhZ2VEYXRhLCBjb25zdCBXZWJTdHJpbmcmIG9yaWdpbiwgY29uc3QgV2ViRnJh
bWUqIHNvdXJjZUZyYW1lLCBjb25zdCBXZWJTdHJpbmcmIGxhc3RFdmVudElkKTsKIAogICAgIFdF
QktJVF9FWFBPUlQgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlIGRhdGEoKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQXNzb2NpYXRlZFVSTExvYWRlclRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Bc3NvY2lhdGVkVVJMTG9hZGVy
VGVzdC5jcHAKaW5kZXggMDM1NTlmN2YxMTlhYWFhODY2Y2YwMzc2ZjVhNDRiY2YyNTlkN2M4Yy4u
NzA1MWJmOWQ2NzA2ZWI0NjMxMTU3ZGFmYTkwNWY2MGVkYmNhNmNjYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Bc3NvY2lhdGVkVVJMTG9hZGVyVGVzdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Bc3NvY2lhdGVkVVJMTG9hZGVyVGVzdC5j
cHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCisjaW5jbHVkZSAi
VVJMVGVzdEhlbHBlcnMuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYkZy
YW1lQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViVVJMTG9hZGVyT3B0aW9ucy5oIgpAQCAtNDIsMTEg
KzQzLDExIEBACiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViVVJMUmVzcG9uc2UuaCIKICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2luY2x1ZGUgPGdvb2dsZXVybC9zcmMvZ3VybC5o
PgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3N1cHBvcnQvd2Vi
a2l0X3N1cHBvcnQuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIFdlYktpdDo6
VVJMVGVzdEhlbHBlcnM6OnRvS1VSTDsKIAogbmFtZXNwYWNlIHsKIApAQCAtNzYsOSArNzcsOSBA
QCBwdWJsaWM6CiAgICAgICAgICwgIG1fcnVubmluZ01lc3NhZ2VMb29wKGZhbHNlKQogICAgIHsK
ICAgICAgICAgLy8gUmV1c2Ugb25lIG9mIHRoZSB0ZXN0IGZpbGVzIGZyb20gV2ViRnJhbWVUZXN0
LgotICAgICAgICBzdGQ6OnN0cmluZyBmaWxlUGF0aCA9IHdlYmtpdF9zdXBwb3J0OjpHZXRXZWJL
aXRSb290RGlyKCkudXRmOCgpOworICAgICAgICBzdGQ6OnN0cmluZyBmaWxlUGF0aCA9IHN0ZDo6
c3RyaW5nKHdlYmtpdF9zdXBwb3J0OjpHZXRXZWJLaXRSb290RGlyKCkudXRmOCgpLmRhdGEoKSk7
CiAgICAgICAgIGZpbGVQYXRoICs9ICIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRh
L2lmcmFtZXNfdGVzdC5odG1sIjsKLSAgICAgICAgbV9mcmFtZUZpbGVQYXRoID0gV2ViU3RyaW5n
Ojpmcm9tVVRGOChmaWxlUGF0aCk7CisgICAgICAgIG1fZnJhbWVGaWxlUGF0aCA9IFdlYlN0cmlu
Zzo6ZnJvbVVURjgoZmlsZVBhdGguY19zdHIoKSk7CiAgICAgfQogCiAgICAgdm9pZCBTZXRVcCgp
CkBAIC04Nyw3ICs4OCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV93ZWJWaWV3LT5pbml0aWFsaXpl
TWFpbkZyYW1lKCZtX3dlYkZyYW1lQ2xpZW50KTsKIAogICAgICAgICAvLyBMb2FkIHRoZSBmcmFt
ZSBiZWZvcmUgdHJ5aW5nIHRvIGxvYWQgcmVzb3VyY2VzLgotICAgICAgICBHVVJMIHVybCA9IEdV
UkwoImh0dHA6Ly93d3cudGVzdC5jb20vaWZyYW1lc190ZXN0Lmh0bWwiKTsKKyAgICAgICAgV2Vi
Q29yZTo6S1VSTCB1cmwgPSB0b0tVUkwoImh0dHA6Ly93d3cudGVzdC5jb20vaWZyYW1lc190ZXN0
Lmh0bWwiKTsKICAgICAgICAgV2ViVVJMUmVzcG9uc2UgcmVzcG9uc2U7CiAgICAgICAgIHJlc3Bv
bnNlLmluaXRpYWxpemUoKTsKICAgICAgICAgcmVzcG9uc2Uuc2V0TUlNRVR5cGUoInRleHQvaHRt
bCIpOwpAQCAtMTg0LDcgKzE4NSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIFdlYlVSTFJl
cXVlc3QgcmVxdWVzdDsKICAgICAgICAgcmVxdWVzdC5pbml0aWFsaXplKCk7Ci0gICAgICAgIHJl
cXVlc3Quc2V0VVJMKEdVUkwoImh0dHA6Ly93d3cudGVzdC5jb20vc3VjY2Vzcy5odG1sIikpOwor
ICAgICAgICByZXF1ZXN0LnNldFVSTCh0b0tVUkwoImh0dHA6Ly93d3cudGVzdC5jb20vc3VjY2Vz
cy5odG1sIikpOwogICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoV2ViU3RyaW5nOjpmcm9t
VVRGOCh1bnNhZmVNZXRob2QpKTsKICAgICAgICAgV2ViVVJMTG9hZGVyT3B0aW9ucyBvcHRpb25z
OwogICAgICAgICBvcHRpb25zLnVudHJ1c3RlZEhUVFAgPSB0cnVlOwpAQCAtMjAwLDcgKzIwMSw3
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIFdlYlVSTFJlcXVlc3QgcmVxdWVzdDsKICAgICAg
ICAgcmVxdWVzdC5pbml0aWFsaXplKCk7Ci0gICAgICAgIHJlcXVlc3Quc2V0VVJMKEdVUkwoImh0
dHA6Ly93d3cudGVzdC5jb20vc3VjY2Vzcy5odG1sIikpOworICAgICAgICByZXF1ZXN0LnNldFVS
TCh0b0tVUkwoImh0dHA6Ly93d3cudGVzdC5jb20vc3VjY2Vzcy5odG1sIikpOwogICAgICAgICBy
ZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChXZWJTdHJpbmc6OmZyb21VVEY4KGhlYWRlckZpZWxk
KSwgV2ViU3RyaW5nOjpmcm9tVVRGOChoZWFkZXJWYWx1ZSkpOwogICAgICAgICBXZWJVUkxMb2Fk
ZXJPcHRpb25zIG9wdGlvbnM7CiAgICAgICAgIG9wdGlvbnMudW50cnVzdGVkSFRUUCA9IHRydWU7
CkBAIC0yMzAsNyArMjMxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgaWQuYXBwZW5kKCItRXhw
b3NlZCIpOwogICAgICAgICBpZC5hcHBlbmQoIi5odG1sIik7CiAKLSAgICAgICAgR1VSTCB1cmwg
PSBHVVJMKGlkKTsKKyAgICAgICAgV2ViQ29yZTo6S1VSTCB1cmwgPSB0b0tVUkwoaWQpOwogICAg
ICAgICBXZWJVUkxSZXF1ZXN0IHJlcXVlc3Q7CiAgICAgICAgIHJlcXVlc3QuaW5pdGlhbGl6ZSgp
OwogICAgICAgICByZXF1ZXN0LnNldFVSTCh1cmwpOwpAQCAtMjgyLDcgKzI4Myw3IEBAIHByb3Rl
Y3RlZDoKIC8vIFRlc3QgYSBzdWNjZXNzZnVsIHNhbWUtb3JpZ2luIFVSTCBsb2FkLgogVEVTVF9G
KEFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0LCBTYW1lT3JpZ2luU3VjY2VzcykKIHsKLSAgICBHVVJM
IHVybCA9IEdVUkwoImh0dHA6Ly93d3cudGVzdC5jb20vU2FtZU9yaWdpblN1Y2Nlc3MuaHRtbCIp
OworICAgIFdlYkNvcmU6OktVUkwgdXJsID0gdG9LVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tL1Nh
bWVPcmlnaW5TdWNjZXNzLmh0bWwiKTsKICAgICBXZWJVUkxSZXF1ZXN0IHJlcXVlc3Q7CiAgICAg
cmVxdWVzdC5pbml0aWFsaXplKCk7CiAgICAgcmVxdWVzdC5zZXRVUkwodXJsKTsKQEAgLTMwNSw3
ICszMDYsNyBAQCBURVNUX0YoQXNzb2NpYXRlZFVSTExvYWRlclRlc3QsIFNhbWVPcmlnaW5TdWNj
ZXNzKQogVEVTVF9GKEFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0LCBTYW1lT3JpZ2luUmVzdHJpY3Rp
b24pCiB7CiAgICAgLy8gVGhpcyBpcyBjcm9zcy1vcmlnaW4gc2luY2UgdGhlIGZyYW1lIHdhcyBs
b2FkZWQgZnJvbSB3d3cudGVzdC5jb20uCi0gICAgR1VSTCB1cmwgPSBHVVJMKCJodHRwOi8vd3d3
Lm90aGVyLmNvbS9TYW1lT3JpZ2luUmVzdHJpY3Rpb24uaHRtbCIpOworICAgIFdlYkNvcmU6OktV
UkwgdXJsID0gdG9LVVJMKCJodHRwOi8vd3d3Lm90aGVyLmNvbS9TYW1lT3JpZ2luUmVzdHJpY3Rp
b24uaHRtbCIpOwogICAgIFdlYlVSTFJlcXVlc3QgcmVxdWVzdDsKICAgICByZXF1ZXN0LmluaXRp
YWxpemUoKTsKICAgICByZXF1ZXN0LnNldFVSTCh1cmwpOwpAQCAtMzE2LDcgKzMxNyw3IEBAIFRF
U1RfRihBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdCwgU2FtZU9yaWdpblJlc3RyaWN0aW9uKQogVEVT
VF9GKEFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0LCBDcm9zc09yaWdpblN1Y2Nlc3MpCiB7CiAgICAg
Ly8gVGhpcyBpcyBjcm9zcy1vcmlnaW4gc2luY2UgdGhlIGZyYW1lIHdhcyBsb2FkZWQgZnJvbSB3
d3cudGVzdC5jb20uCi0gICAgR1VSTCB1cmwgPSBHVVJMKCJodHRwOi8vd3d3Lm90aGVyLmNvbS9D
cm9zc09yaWdpblN1Y2Nlc3MuaHRtbCIpOworICAgIFdlYkNvcmU6OktVUkwgdXJsID0gdG9LVVJM
KCJodHRwOi8vd3d3Lm90aGVyLmNvbS9Dcm9zc09yaWdpblN1Y2Nlc3MuaHRtbCIpOwogICAgIFdl
YlVSTFJlcXVlc3QgcmVxdWVzdDsKICAgICByZXF1ZXN0LmluaXRpYWxpemUoKTsKICAgICByZXF1
ZXN0LnNldFVSTCh1cmwpOwpAQCAtMzQxLDcgKzM0Miw3IEBAIFRFU1RfRihBc3NvY2lhdGVkVVJM
TG9hZGVyVGVzdCwgQ3Jvc3NPcmlnaW5TdWNjZXNzKQogVEVTVF9GKEFzc29jaWF0ZWRVUkxMb2Fk
ZXJUZXN0LCBDcm9zc09yaWdpbldpdGhBY2Nlc3NDb250cm9sU3VjY2VzcykKIHsKICAgICAvLyBU
aGlzIGlzIGNyb3NzLW9yaWdpbiBzaW5jZSB0aGUgZnJhbWUgd2FzIGxvYWRlZCBmcm9tIHd3dy50
ZXN0LmNvbS4KLSAgICBHVVJMIHVybCA9IEdVUkwoImh0dHA6Ly93d3cub3RoZXIuY29tL0Nyb3Nz
T3JpZ2luV2l0aEFjY2Vzc0NvbnRyb2xTdWNjZXNzLmh0bWwiKTsKKyAgICBXZWJDb3JlOjpLVVJM
IHVybCA9IHRvS1VSTCgiaHR0cDovL3d3dy5vdGhlci5jb20vQ3Jvc3NPcmlnaW5XaXRoQWNjZXNz
Q29udHJvbFN1Y2Nlc3MuaHRtbCIpOwogICAgIFdlYlVSTFJlcXVlc3QgcmVxdWVzdDsKICAgICBy
ZXF1ZXN0LmluaXRpYWxpemUoKTsKICAgICByZXF1ZXN0LnNldFVSTCh1cmwpOwpAQCAtMzY3LDcg
KzM2OCw3IEBAIFRFU1RfRihBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdCwgQ3Jvc3NPcmlnaW5XaXRo
QWNjZXNzQ29udHJvbFN1Y2Nlc3MpCiBURVNUX0YoQXNzb2NpYXRlZFVSTExvYWRlclRlc3QsIENy
b3NzT3JpZ2luV2l0aEFjY2Vzc0NvbnRyb2xGYWlsdXJlKQogewogICAgIC8vIFRoaXMgaXMgY3Jv
c3Mtb3JpZ2luIHNpbmNlIHRoZSBmcmFtZSB3YXMgbG9hZGVkIGZyb20gd3d3LnRlc3QuY29tLgot
ICAgIEdVUkwgdXJsID0gR1VSTCgiaHR0cDovL3d3dy5vdGhlci5jb20vQ3Jvc3NPcmlnaW5XaXRo
QWNjZXNzQ29udHJvbEZhaWx1cmUuaHRtbCIpOworICAgIFdlYkNvcmU6OktVUkwgdXJsID0gdG9L
VVJMKCJodHRwOi8vd3d3Lm90aGVyLmNvbS9Dcm9zc09yaWdpbldpdGhBY2Nlc3NDb250cm9sRmFp
bHVyZS5odG1sIik7CiAgICAgV2ViVVJMUmVxdWVzdCByZXF1ZXN0OwogICAgIHJlcXVlc3QuaW5p
dGlhbGl6ZSgpOwogICAgIHJlcXVlc3Quc2V0VVJMKHVybCk7CkBAIC0zOTgsOSArMzk5LDkgQEAg
VEVTVF9GKEFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0LCBDcm9zc09yaWdpbldpdGhBY2Nlc3NDb250
cm9sRmFpbHVyZSkKIC8vIFRlc3QgYSBzYW1lLW9yaWdpbiBVUkwgcmVkaXJlY3QgYW5kIGxvYWQu
CiBURVNUX0YoQXNzb2NpYXRlZFVSTExvYWRlclRlc3QsIFJlZGlyZWN0U3VjY2VzcykKIHsKLSAg
ICBHVVJMIHVybCA9IEdVUkwoImh0dHA6Ly93d3cudGVzdC5jb20vUmVkaXJlY3RTdWNjZXNzLmh0
bWwiKTsKKyAgICBXZWJDb3JlOjpLVVJMIHVybCA9IHRvS1VSTCgiaHR0cDovL3d3dy50ZXN0LmNv
bS9SZWRpcmVjdFN1Y2Nlc3MuaHRtbCIpOwogICAgIGNoYXIgcmVkaXJlY3RbXSA9ICJodHRwOi8v
d3d3LnRlc3QuY29tL1JlZGlyZWN0U3VjY2VzczIuaHRtbCI7ICAvLyBTYW1lLW9yaWdpbgotICAg
IEdVUkwgcmVkaXJlY3RVUkwgPSBHVVJMKHJlZGlyZWN0KTsKKyAgICBXZWJDb3JlOjpLVVJMIHJl
ZGlyZWN0VVJMID0gdG9LVVJMKHJlZGlyZWN0KTsKIAogICAgIFdlYlVSTFJlcXVlc3QgcmVxdWVz
dDsKICAgICByZXF1ZXN0LmluaXRpYWxpemUoKTsKQEAgLTQzNSw5ICs0MzYsOSBAQCBURVNUX0Yo
QXNzb2NpYXRlZFVSTExvYWRlclRlc3QsIFJlZGlyZWN0U3VjY2VzcykKIC8vIFRlc3QgdGhhdCBh
IGNyb3NzIG9yaWdpbiByZWRpcmVjdCByZXNwb25zZSB3aXRob3V0IENPUlMgaGVhZGVycyBmYWls
cy4KIFRFU1RfRihBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdCwgUmVkaXJlY3RDcm9zc09yaWdpbldp
dGhBY2Nlc3NDb250cm9sRmFpbHVyZSkKIHsKLSAgICBHVVJMIHVybCA9IEdVUkwoImh0dHA6Ly93
d3cudGVzdC5jb20vUmVkaXJlY3RDcm9zc09yaWdpbldpdGhBY2Nlc3NDb250cm9sRmFpbHVyZS5o
dG1sIik7CisgICAgV2ViQ29yZTo6S1VSTCB1cmwgPSB0b0tVUkwoImh0dHA6Ly93d3cudGVzdC5j
b20vUmVkaXJlY3RDcm9zc09yaWdpbldpdGhBY2Nlc3NDb250cm9sRmFpbHVyZS5odG1sIik7CiAg
ICAgY2hhciByZWRpcmVjdFtdID0gImh0dHA6Ly93d3cub3RoZXIuY29tL1JlZGlyZWN0Q3Jvc3NP
cmlnaW5XaXRoQWNjZXNzQ29udHJvbEZhaWx1cmUuaHRtbCI7ICAvLyBDcm9zcy1vcmlnaW4KLSAg
ICBHVVJMIHJlZGlyZWN0VVJMID0gR1VSTChyZWRpcmVjdCk7CisgICAgV2ViQ29yZTo6S1VSTCBy
ZWRpcmVjdFVSTCA9IHRvS1VSTChyZWRpcmVjdCk7CiAKICAgICBXZWJVUkxSZXF1ZXN0IHJlcXVl
c3Q7CiAgICAgcmVxdWVzdC5pbml0aWFsaXplKCk7CkBAIC00NjcsOSArNDY4LDkgQEAgVEVTVF9G
KEFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0LCBSZWRpcmVjdENyb3NzT3JpZ2luV2l0aEFjY2Vzc0Nv
bnRyb2xGYWlsdXJlKQogLy8gVGVzdCB0aGF0IGEgY3Jvc3Mgb3JpZ2luIHJlZGlyZWN0IHJlc3Bv
bnNlIHdpdGggQ09SUyBoZWFkZXJzIHRoYXQgYWxsb3cgdGhlIHJlcXVlc3Rpbmcgb3JpZ2luIHN1
Y2NlZWRzLgogVEVTVF9GKEFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0LCBSZWRpcmVjdENyb3NzT3Jp
Z2luV2l0aEFjY2Vzc0NvbnRyb2xTdWNjZXNzKQogewotICAgIEdVUkwgdXJsID0gR1VSTCgiaHR0
cDovL3d3dy50ZXN0LmNvbS9SZWRpcmVjdENyb3NzT3JpZ2luV2l0aEFjY2Vzc0NvbnRyb2xTdWNj
ZXNzLmh0bWwiKTsKKyAgICBXZWJDb3JlOjpLVVJMIHVybCA9IHRvS1VSTCgiaHR0cDovL3d3dy50
ZXN0LmNvbS9SZWRpcmVjdENyb3NzT3JpZ2luV2l0aEFjY2Vzc0NvbnRyb2xTdWNjZXNzLmh0bWwi
KTsKICAgICBjaGFyIHJlZGlyZWN0W10gPSAiaHR0cDovL3d3dy5vdGhlci5jb20vUmVkaXJlY3RD
cm9zc09yaWdpbldpdGhBY2Nlc3NDb250cm9sU3VjY2Vzcy5odG1sIjsgIC8vIENyb3NzLW9yaWdp
bgotICAgIEdVUkwgcmVkaXJlY3RVUkwgPSBHVVJMKHJlZGlyZWN0KTsKKyAgICBXZWJDb3JlOjpL
VVJMIHJlZGlyZWN0VVJMID0gdG9LVVJMKHJlZGlyZWN0KTsKIAogICAgIFdlYlVSTFJlcXVlc3Qg
cmVxdWVzdDsKICAgICByZXF1ZXN0LmluaXRpYWxpemUoKTsKQEAgLTU5MCw3ICs1OTEsNyBAQCBU
RVNUX0YoQXNzb2NpYXRlZFVSTExvYWRlclRlc3QsIENyb3NzT3JpZ2luSGVhZGVyQWxsb3dSZXNw
b25zZUhlYWRlcnMpCiB7CiAgICAgV2ViVVJMUmVxdWVzdCByZXF1ZXN0OwogICAgIHJlcXVlc3Qu
aW5pdGlhbGl6ZSgpOwotICAgIEdVUkwgdXJsID0gR1VSTCgiaHR0cDovL3d3dy5vdGhlci5jb20v
Q3Jvc3NPcmlnaW5IZWFkZXJBbGxvd1Jlc3BvbnNlSGVhZGVycy5odG1sIik7CisgICAgV2ViQ29y
ZTo6S1VSTCB1cmwgPSB0b0tVUkwoImh0dHA6Ly93d3cub3RoZXIuY29tL0Nyb3NzT3JpZ2luSGVh
ZGVyQWxsb3dSZXNwb25zZUhlYWRlcnMuaHRtbCIpOwogICAgIHJlcXVlc3Quc2V0VVJMKHVybCk7
CiAKICAgICBXZWJTdHJpbmcgaGVhZGVyTmFtZVN0cmluZyhXZWJTdHJpbmc6OmZyb21VVEY4KCJu
b24td2hpdGVsaXN0ZWQiKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0V2ZW50TGlzdGVuZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
RXZlbnRMaXN0ZW5lclRlc3QuY3BwCmluZGV4IDc5OWFjNDAwN2M1YzkxZTYwNGZjNzNmZDZkZDlj
MDEyMGJhNGNkMmEuLjQyNTU0Njk1MjUxZWJjMDdmMWVjMmJjZmI2MmNjNjU2YjZjMjk3ZDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRXZlbnRMaXN0ZW5lclRlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRXZlbnRMaXN0ZW5lclRlc3Qu
Y3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJG
cmFtZVRlc3RIZWxwZXJzLmgiCisjaW5jbHVkZSAiVVJMVGVzdEhlbHBlcnMuaCIKICNpbmNsdWRl
ICJXZWJET01FdmVudC5oIgogI2luY2x1ZGUgIldlYkRPTUV2ZW50TGlzdGVuZXIuaCIKICNpbmNs
dWRlICJXZWJET01NdXRhdGlvbkV2ZW50LmgiCkBAIC03OCw3ICs3OSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgc3RkOjpzdHJpbmcgYmFzZVVSTCgiaHR0cDovL3d3dy5leGFtcGxlLmNvbS8iKTsKICAg
ICAgICAgc3RkOjpzdHJpbmcgZmlsZU5hbWUoImxpc3RlbmVyL211dGF0aW9uX2V2ZW50X2xpc3Rl
bmVyLmh0bWwiKTsKICAgICAgICAgYm9vbCBleGVjdXRlU2NyaXB0ID0gdHJ1ZTsKLSAgICAgICAg
RnJhbWVUZXN0SGVscGVyczo6cmVnaXN0ZXJNb2NrZWRVUkxMb2FkKGJhc2VVUkwsIGZpbGVOYW1l
KTsKKyAgICAgICAgVVJMVGVzdEhlbHBlcnM6OnJlZ2lzdGVyTW9ja2VkVVJMRnJvbUJhc2VVUkwo
V2ViU3RyaW5nOjpmcm9tVVRGOChiYXNlVVJMLmNfc3RyKCkpLCBXZWJTdHJpbmc6OmZyb21VVEY4
KGZpbGVOYW1lLmNfc3RyKCkpKTsKICAgICAgICAgbV93ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVy
czo6Y3JlYXRlV2ViVmlld0FuZExvYWQoYmFzZVVSTCArIGZpbGVOYW1lLCBleGVjdXRlU2NyaXB0
KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRnJh
bWVUZXN0SGVscGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ZyYW1lVGVz
dEhlbHBlcnMuY3BwCmluZGV4IGU0MDY0MTNkZDk1ZWIzMmMzZTAyYWEzNzUyNmEzM2M1NzMzZDI2
OWIuLmEyYjE2NzVjMDliZWViNDY0NmZkZDMwMzNhZDNiYzg3NGQyNWFkOTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRnJhbWVUZXN0SGVscGVycy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GcmFtZVRlc3RIZWxwZXJzLmNwcApAQCAtMzEs
NiArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZyYW1lVGVzdEhlbHBl
cnMuaCIKIAorI2luY2x1ZGUgIlVSTFRlc3RIZWxwZXJzLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVDbGll
bnQuaCIKQEAgLTQwLDM1ICs0MSwxNiBAQAogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlVSTFJlc3Bv
bnNlLmgiCiAjaW5jbHVkZSAiV2ViVmlldy5oIgogI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIK
LSNpbmNsdWRlIDxnb29nbGV1cmwvc3JjL2d1cmwuaD4KICNpbmNsdWRlIDx3ZWJraXQvc3VwcG9y
dC93ZWJraXRfc3VwcG9ydC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIG5hbWVzcGFjZSBGcmFt
ZVRlc3RIZWxwZXJzIHsKIAotdm9pZCByZWdpc3Rlck1vY2tlZFVSTExvYWQoY29uc3Qgc3RkOjpz
dHJpbmcmIGJhc2UsIGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlTmFtZSkKLXsKLSAgICByZWdpc3Rl
ck1vY2tlZFVSTExvYWQoR1VSTChiYXNlICsgZmlsZU5hbWUpLCBmaWxlTmFtZSk7Ci19Ci0KLXZv
aWQgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKEdVUkwgdXJsLCBjb25zdCBzdGQ6OnN0cmluZyYgZmls
ZU5hbWUpCi17Ci0gICAgV2ViVVJMUmVzcG9uc2UgcmVzcG9uc2U7Ci0gICAgcmVzcG9uc2UuaW5p
dGlhbGl6ZSgpOwotICAgIHJlc3BvbnNlLnNldE1JTUVUeXBlKCJ0ZXh0L2h0bWwiKTsKLQotICAg
IHN0ZDo6c3RyaW5nIGZpbGVQYXRoID0gd2Via2l0X3N1cHBvcnQ6OkdldFdlYktpdFJvb3REaXIo
KS51dGY4KCk7Ci0gICAgZmlsZVBhdGggKz0gIi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L2RhdGEvIjsKLSAgICBmaWxlUGF0aCArPSBmaWxlTmFtZTsKLQotICAgIHdlYmtpdF9zdXBwb3J0
OjpSZWdpc3Rlck1vY2tlZFVSTCh1cmwsIHJlc3BvbnNlLCBXZWJTdHJpbmc6OmZyb21VVEY4KGZp
bGVQYXRoKSk7Ci19Ci0KIHZvaWQgbG9hZEZyYW1lKFdlYkZyYW1lKiBmcmFtZSwgY29uc3Qgc3Rk
OjpzdHJpbmcmIHVybCkKIHsKICAgICBXZWJVUkxSZXF1ZXN0IHVybFJlcXVlc3Q7CiAgICAgdXJs
UmVxdWVzdC5pbml0aWFsaXplKCk7Ci0gICAgdXJsUmVxdWVzdC5zZXRVUkwoR1VSTCh1cmwpKTsK
KyAgICB1cmxSZXF1ZXN0LnNldFVSTChVUkxUZXN0SGVscGVyczo6dG9LVVJMKHVybCkpOwogICAg
IGZyYW1lLT5sb2FkUmVxdWVzdCh1cmxSZXF1ZXN0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GcmFtZVRlc3RIZWxwZXJzLmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0ZyYW1lVGVzdEhlbHBlcnMuaAppbmRleCBmYzJmYTJkMzYxYjAxZTBi
OGFiMzEwMmQ2MGU3MDQyYTMwZDBlMzhjLi5iZmI1N2I2N2NkMjkwMTBlODY3Y2QyYmU4NWYxMzRl
ZmNlYjdkOTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ZyYW1l
VGVzdEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ZyYW1lVGVz
dEhlbHBlcnMuaApAQCAtMzMsOCArMzMsNiBAQAogCiAjaW5jbHVkZSA8c3RyaW5nPgogCi1jbGFz
cyBHVVJMOwotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViRnJhbWU7CkBAIC00NCwx
MCArNDIsNiBAQCBjbGFzcyBXZWJWaWV3Q2xpZW50OwogCiBuYW1lc3BhY2UgRnJhbWVUZXN0SGVs
cGVycyB7CiAKLXZvaWQgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKGNvbnN0IHN0ZDo6c3RyaW5nJiBi
YXNlLCBjb25zdCBzdGQ6OnN0cmluZyYgZmlsZU5hbWUpOwotLy8gTGlrZSB0aGUgcHJldmlvdXMg
b3ZlcmxvYWQsIGJ1dCBpdCBhbGxvd3MgbW9yZSBmbGV4aWJpbGl0eSBpbiB0aGUgdXJsIHNpbmNl
IGl0IGlzIGdpdmVuIGJ5IHRoZSBjYWxsZXIuCi12b2lkIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZChH
VVJMLCBjb25zdCBzdGQ6OnN0cmluZyYgZmlsZU5hbWUpOwotCiB2b2lkIGxvYWRGcmFtZShXZWJG
cmFtZSosIGNvbnN0IHN0ZDo6c3RyaW5nJiB1cmwpOwogCiBXZWJWaWV3KiBjcmVhdGVXZWJWaWV3
QW5kTG9hZChjb25zdCBzdGQ6OnN0cmluZyYgdXJsLCBib29sIGVuYWJsZUphdmFzY3JpcHQgPSBm
YWxzZSwgV2ViRnJhbWVDbGllbnQqID0gMCwgV2ViVmlld0NsaWVudCogPSAwKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGlzdGVuZXJMZWFrVGVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xpc3RlbmVyTGVha1Rlc3QuY3BwCmluZGV4IDVl
MzIxYzcwZDhhNjc4MGNiMzIxZTA4MDJlMzg5ZjllMWQ1N2U3ODcuLmIwZjcwMGEwY2I1ZDJjYzdh
NDQ5ZGE1NzA0ZTE0MTI4MTE1Njg3ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvTGlzdGVuZXJMZWFrVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9MaXN0ZW5lckxlYWtUZXN0LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiRnJhbWVUZXN0SGVscGVycy5oIgorI2luY2x1ZGUgIlVS
TFRlc3RIZWxwZXJzLmgiCiAjaW5jbHVkZSAiV2ViVmlldy5oIgogI2luY2x1ZGUgPGd0ZXN0L2d0
ZXN0Lmg+CiAjaW5jbHVkZSA8djgvaW5jbHVkZS92OC1wcm9maWxlci5oPgpAQCAtOTAsNyArOTEs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHN0ZDo6c3RyaW5nIGJhc2VVUkwoImh0dHA6Ly93d3cuZXhh
bXBsZS5jb20vIik7CiAgICAgICAgIHN0ZDo6c3RyaW5nIGZpbGVOYW1lKGZpbGVuYW1lKTsKICAg
ICAgICAgYm9vbCBleGVjdXRlU2NyaXB0ID0gdHJ1ZTsKLSAgICAgICAgRnJhbWVUZXN0SGVscGVy
czo6cmVnaXN0ZXJNb2NrZWRVUkxMb2FkKGJhc2VVUkwsIGZpbGVOYW1lKTsKKyAgICAgICAgVVJM
VGVzdEhlbHBlcnM6OnJlZ2lzdGVyTW9ja2VkVVJMRnJvbUJhc2VVUkwoV2ViU3RyaW5nOjpmcm9t
VVRGOChiYXNlVVJMLmNfc3RyKCkpLCBXZWJTdHJpbmc6OmZyb21VVEY4KGZpbGVOYW1lLmNfc3Ry
KCkpKTsKICAgICAgICAgbV93ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmll
d0FuZExvYWQoYmFzZVVSTCArIGZpbGVOYW1lLCBleGVjdXRlU2NyaXB0KTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUG9wdXBNZW51VGVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1BvcHVwTWVudVRlc3QuY3BwCmluZGV4IDdh
Y2IzMTE0OTU3MWU3NmZhZGIzMTRmNmJlOTk2YjMxNjlkNzZiNGEuLjU5YzIzMzYzMjVkMDEzMjlh
ZGU1ZTE2YWEwY2EyYzcxY2EzODNiZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvUG9wdXBNZW51VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9Qb3B1cE1lbnVUZXN0LmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIlBvcHVw
TWVudUNsaWVudC5oIgogI2luY2x1ZGUgIlBvcHVwTWVudUNocm9taXVtLmgiCiAjaW5jbHVkZSAi
UnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgorI2luY2x1ZGUgIlVSTFRlc3RIZWxwZXJzLmgiCiAj
aW5jbHVkZSAiV2ViRG9jdW1lbnQuaCIKICNpbmNsdWRlICJXZWJFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiV2ViRnJhbWUuaCIKQEAgLTYzLDYgKzY0LDcgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgV2ViS2l0OjpVUkxUZXN0SGVscGVy
czo6dG9LVVJMOwogCiBuYW1lc3BhY2UgewogCkBAIC0yNDksMTUgKzI1MSw3IEBAIHByb3RlY3Rl
ZDoKIAogICAgIHZvaWQgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKGNvbnN0IHN0ZDo6c3RyaW5nJiBm
aWxlTmFtZSkKICAgICB7Ci0gICAgICAgIFdlYlVSTFJlc3BvbnNlIHJlc3BvbnNlOwotICAgICAg
ICByZXNwb25zZS5pbml0aWFsaXplKCk7Ci0gICAgICAgIHJlc3BvbnNlLnNldE1JTUVUeXBlKCJ0
ZXh0L2h0bWwiKTsKLQotICAgICAgICBzdGQ6OnN0cmluZyBmaWxlUGF0aCA9IHdlYmtpdF9zdXBw
b3J0OjpHZXRXZWJLaXRSb290RGlyKCkudXRmOCgpOwotICAgICAgICBmaWxlUGF0aCArPSAiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9wb3B1cC8iOwotICAgICAgICBmaWxlUGF0
aCArPSBmaWxlTmFtZTsKLQotICAgICAgICB3ZWJraXRfc3VwcG9ydDo6UmVnaXN0ZXJNb2NrZWRV
UkwoV2ViVVJMKEdVUkwoYmFzZVVSTCArIGZpbGVOYW1lKSksIHJlc3BvbnNlLCBXZWJTdHJpbmc6
OmZyb21VVEY4KGZpbGVQYXRoKSk7CisgICAgICAgIFVSTFRlc3RIZWxwZXJzOjpyZWdpc3Rlck1v
Y2tlZFVSTExvYWQodG9LVVJMKGJhc2VVUkwgKyBmaWxlTmFtZSksIFdlYlN0cmluZzo6ZnJvbVVU
RjgoZmlsZU5hbWUuY19zdHIoKSksIFdlYlN0cmluZzo6ZnJvbVVURjgoInBvcHVwLyIpLCBXZWJT
dHJpbmc6OmZyb21VVEY4KCJ0ZXh0L2h0bWwiKSk7CiAgICAgfQogCiAgICAgdm9pZCBzZXJ2ZVJl
cXVlc3RzKCkKQEAgLTI2OSw3ICsyNjMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgewogICAgICAgICBX
ZWJVUkxSZXF1ZXN0IHVybFJlcXVlc3Q7CiAgICAgICAgIHVybFJlcXVlc3QuaW5pdGlhbGl6ZSgp
OwotICAgICAgICB1cmxSZXF1ZXN0LnNldFVSTChXZWJVUkwoR1VSTChiYXNlVVJMICsgZmlsZU5h
bWUpKSk7CisgICAgICAgIHVybFJlcXVlc3Quc2V0VVJMKFdlYlVSTCh0b0tVUkwoYmFzZVVSTCAr
IGZpbGVOYW1lKSkpOwogICAgICAgICBmcmFtZS0+bG9hZFJlcXVlc3QodXJsUmVxdWVzdCk7CiAg
ICAgfQogCkBAIC00MjcsNyArNDIxLDcgQEAgVEVTVF9GKFNlbGVjdFBvcHVwTWVudVRlc3QsIERJ
U0FCTEVEX1NlbGVjdEl0ZW1FdmVudEZpcmUpCiAKICAgICAvLyBtb3VzZWRvd24gZXZlbnQgaXMg
aGVsZCBieSBzZWxlY3Qgbm9kZSwgYW5kIHdlIGRvbid0IHNpbXVsYXRlIHRoZSBldmVudCBmb3Ig
dGhlIG5vZGUuCiAgICAgLy8gU28gd2UgY2FuIG9ubHkgc2VlIG1vdXNldXAgYW5kIGNsaWNrIGV2
ZW50LgotICAgIEVYUEVDVF9TVFJFUSgidXBjbGljayIsIHN0ZDo6c3RyaW5nKGVsZW1lbnQuaW5u
ZXJUZXh0KCkudXRmOCgpKS5jX3N0cigpKTsKKyAgICBFWFBFQ1RfU1RSRVEoInVwY2xpY2siLCBl
bGVtZW50LmlubmVyVGV4dCgpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgLy8gRGlzYWJsZSB0aGUg
aXRlbSBhdCBpbmRleCAxLgogICAgIG1fcG9wdXBNZW51Q2xpZW50LnNldERpc2FibGVkSW5kZXgo
MSk7CkBAIC00MzksNyArNDMzLDcgQEAgVEVTVF9GKFNlbGVjdFBvcHVwTWVudVRlc3QsIERJU0FC
TEVEX1NlbGVjdEl0ZW1FdmVudEZpcmUpCiAgICAgc2ltdWxhdGVMZWZ0TW91c2VVcEV2ZW50KHJv
dzFQb2ludCk7CiAKICAgICAvLyBUaGUgaXRlbSBhdCBpbmRleCAxIGlzIGRpc2FibGVkLCBzbyB0
aGUgdGV4dCBzaG91bGQgbm90IGJlIGNoYW5nZWQuCi0gICAgRVhQRUNUX1NUUkVRKCJ1cGNsaWNr
Iiwgc3RkOjpzdHJpbmcoZWxlbWVudC5pbm5lclRleHQoKS51dGY4KCkpLmNfc3RyKCkpOworICAg
IEVYUEVDVF9TVFJFUSgidXBjbGljayIsIGVsZW1lbnQuaW5uZXJUZXh0KCkudXRmOCgpLmRhdGEo
KSk7CiAKICAgICBzaG93UG9wdXAoKTsKICAgICAvLyBtZW51SXRlbUhlaWdodCAqIDIuNSBtZWFu
cyB0aGUgWSBwb3NpdGlvbiBvbiB0aGUgaXRlbSBhdCBpbmRleCAyLgpAQCAtNDQ4LDcgKzQ0Miw3
IEBAIFRFU1RfRihTZWxlY3RQb3B1cE1lbnVUZXN0LCBESVNBQkxFRF9TZWxlY3RJdGVtRXZlbnRG
aXJlKQogICAgIHNpbXVsYXRlTGVmdE1vdXNlVXBFdmVudChyb3cxUG9pbnQpOwogCiAgICAgLy8g
VGhlIGl0ZW0gaXMgY2hhbmdlZCB0byB0aGUgaXRlbSBhdCBpbmRleCAyLCBmcm9tIGluZGV4IDAs
IHNvIGNoYW5nZSBldmVudCBpcyBmaXJlZC4KLSAgICBFWFBFQ1RfU1RSRVEoInVwY2xpY2tjaGFu
Z2V1cGNsaWNrIiwgc3RkOjpzdHJpbmcoZWxlbWVudC5pbm5lclRleHQoKS51dGY4KCkpLmNfc3Ry
KCkpOworICAgIEVYUEVDVF9TVFJFUSgidXBjbGlja2NoYW5nZXVwY2xpY2siLCBlbGVtZW50Lmlu
bmVyVGV4dCgpLnV0ZjgoKS5kYXRhKCkpOwogfQogCiBURVNUX0YoU2VsZWN0UG9wdXBNZW51VGVz
dCwgRkxBS1lfU2VsZWN0SXRlbUtleUV2ZW50KQpAQCAtNDY5LDcgKzQ2Myw3IEBAIFRFU1RfRihT
ZWxlY3RQb3B1cE1lbnVUZXN0LCBGTEFLWV9TZWxlY3RJdGVtS2V5RXZlbnQpCiAKICAgICBXZWJF
bGVtZW50IGVsZW1lbnQgPSBtX3dlYlZpZXctPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpLmdldEVs
ZW1lbnRCeUlkKCJtZXNzYWdlIik7CiAgICAgLy8gV2Ugb25seSBjYW4gc2VlIGNoYW5nZSBldmVu
dCBidXQgbm8gb3RoZXIgbW91c2UgcmVsYXRlZCBldmVudHMuCi0gICAgRVhQRUNUX1NUUkVRKCJj
aGFuZ2UiLCBzdGQ6OnN0cmluZyhlbGVtZW50LmlubmVyVGV4dCgpLnV0ZjgoKSkuY19zdHIoKSk7
CisgICAgRVhQRUNUX1NUUkVRKCJjaGFuZ2UiLCBlbGVtZW50LmlubmVyVGV4dCgpLnV0ZjgoKS5k
YXRhKCkpOwogfQogCiBURVNUX0YoU2VsZWN0UG9wdXBNZW51VGVzdCwgU2VsZWN0SXRlbVJlbW92
ZVNlbGVjdE9uQ2hhbmdlKQpAQCAtNDkxLDcgKzQ4NSw3IEBAIFRFU1RfRihTZWxlY3RQb3B1cE1l
bnVUZXN0LCBTZWxlY3RJdGVtUmVtb3ZlU2VsZWN0T25DaGFuZ2UpCiAgICAgc2ltdWxhdGVMZWZ0
TW91c2VVcEV2ZW50KHJvdzFQb2ludCk7CiAKICAgICBXZWJFbGVtZW50IGVsZW1lbnQgPSBtX3dl
YlZpZXctPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpLmdldEVsZW1lbnRCeUlkKCJtZXNzYWdlIik7
Ci0gICAgRVhQRUNUX1NUUkVRKCJjaGFuZ2UiLCBzdGQ6OnN0cmluZyhlbGVtZW50LmlubmVyVGV4
dCgpLnV0ZjgoKSkuY19zdHIoKSk7CisgICAgRVhQRUNUX1NUUkVRKCJjaGFuZ2UiLCBlbGVtZW50
LmlubmVyVGV4dCgpLnV0ZjgoKS5kYXRhKCkpOwogfQogCiBURVNUX0YoU2VsZWN0UG9wdXBNZW51
VGVzdCwgU2VsZWN0SXRlbVJlbW92ZVNlbGVjdE9uQ2xpY2spCkBAIC01MTMsNyArNTA3LDcgQEAg
VEVTVF9GKFNlbGVjdFBvcHVwTWVudVRlc3QsIFNlbGVjdEl0ZW1SZW1vdmVTZWxlY3RPbkNsaWNr
KQogICAgIHNpbXVsYXRlTGVmdE1vdXNlVXBFdmVudChyb3cxUG9pbnQpOwogCiAgICAgV2ViRWxl
bWVudCBlbGVtZW50ID0gbV93ZWJWaWV3LT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS5nZXRFbGVt
ZW50QnlJZCgibWVzc2FnZSIpOwotICAgIEVYUEVDVF9TVFJFUSgiY2xpY2siLCBzdGQ6OnN0cmlu
ZyhlbGVtZW50LmlubmVyVGV4dCgpLnV0ZjgoKSkuY19zdHIoKSk7CisgICAgRVhQRUNUX1NUUkVR
KCJjbGljayIsIGVsZW1lbnQuaW5uZXJUZXh0KCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1J1bkFs
bFRlc3RzLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUnVuQWxsVGVzdHMuY3Bw
CmluZGV4IGRjMDUyODI1NzFhN2M2ODhjZGIyMDg5NTZjMzU0ZTYzYTMzYTNjM2MuLjc4ZmQ3ZGEz
ZDMxMGI1ZTJiOTU4NTE0NjdlOTQzMGUwNmQ3ZjQ1OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvUnVuQWxsVGVzdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvUnVuQWxsVGVzdHMuY3BwCkBAIC0yOCw2ICsyOCwxMCBAQAogICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisjaW5jbHVkZSAiY29uZmln
LmgiCisjZW5kaWYKKwogLy8gRklYTUU6IEF2b2lkIHRoaXMgc291cmNlIGRlcGVuZGVuY3kgb24g
Q2hyb21pdW0ncyBiYXNlIG1vZHVsZS4KICNpbmNsdWRlIDxiYXNlL3Rlc3QvdGVzdF9zdWl0ZS5o
PgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1VSTFRlc3RIZWxw
ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVVJMVGVzdEhlbHBlcnMuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmIyZTYwMzlkMWUxMWY0ZDg2ZWIxYjZjZjJhOTVmODc2ODRjMjc2MmUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1VSTFRlc3RIZWxw
ZXJzLmNwcApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlVS
TFRlc3RIZWxwZXJzLmgiCisKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJVUkxSZXNwb25zZS5oIgor
I2luY2x1ZGUgPHB1YmxpYy9XZWJTdHJpbmcuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViVVJMLmg+
CisjaW5jbHVkZSA8d2Via2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CituYW1lc3BhY2UgVVJMVGVzdEhlbHBlcnMgeworCit2b2lkIHJlZ2lzdGVyTW9j
a2VkVVJMRnJvbUJhc2VVUkwoY29uc3QgV2ViU3RyaW5nJiBiYXNlVVJMLCBjb25zdCBXZWJTdHJp
bmcmIGZpbGVOYW1lLCBjb25zdCBXZWJTdHJpbmcmIG1pbWVUeXBlKQoreworICAgIC8vIGZ1bGxV
UkwgPSBiYXNlVVJMICsgZmlsZU5hbWUuCisgICAgc3RkOjpzdHJpbmcgZnVsbFN0cmluZyA9IHN0
ZDo6c3RyaW5nKGJhc2VVUkwudXRmOCgpLmRhdGEoKSkgKyBzdGQ6OnN0cmluZyhmaWxlTmFtZS51
dGY4KCkuZGF0YSgpKTsKKyAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQodG9LVVJMKGZ1bGxTdHJp
bmcuY19zdHIoKSksIGZpbGVOYW1lLCBXZWJTdHJpbmc6OmZyb21VVEY4KCIiKSwgbWltZVR5cGUp
OworfQorCit2b2lkIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZChjb25zdCBXZWJVUkwmIGZ1bGxVUkws
IGNvbnN0IFdlYlN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFdlYlN0cmluZyYgbWltZVR5cGUpCit7
CisgICAgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKGZ1bGxVUkwsIGZpbGVOYW1lLCBXZWJTdHJpbmc6
OmZyb21VVEY4KCIiKSwgbWltZVR5cGUpOworfQorCit2b2lkIHJlZ2lzdGVyTW9ja2VkVVJMTG9h
ZChjb25zdCBXZWJVUkwmIGZ1bGxVUkwsIGNvbnN0IFdlYlN0cmluZyYgZmlsZU5hbWUsIGNvbnN0
IFdlYlN0cmluZyYgcmVsYXRpdmVCYXNlRGlyZWN0b3J5LCBjb25zdCBXZWJTdHJpbmcmIG1pbWVU
eXBlKQoreworICAgIFdlYlVSTFJlc3BvbnNlIHJlc3BvbnNlOworICAgIHJlc3BvbnNlLmluaXRp
YWxpemUoKTsKKyAgICByZXNwb25zZS5zZXRNSU1FVHlwZShtaW1lVHlwZSk7CisgICAgcmVzcG9u
c2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAwKTsKKworICAgIC8vIFBoeXNpY2FsIGZpbGUgcGF0aCBm
b3IgdGhlIG1vY2sgPSA8d2Via2l0Um9vdERpcj4gKyByZWxhdGl2ZUJhc2VEaXJlY3RvcnkgKyBm
aWxlTmFtZS4KKyAgICBzdGQ6OnN0cmluZyBmaWxlUGF0aCA9IHN0ZDo6c3RyaW5nKHdlYmtpdF9z
dXBwb3J0OjpHZXRXZWJLaXRSb290RGlyKCkudXRmOCgpLmRhdGEoKSk7CisgICAgZmlsZVBhdGgu
YXBwZW5kKCIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhLyIpOworICAgIGZpbGVQ
YXRoLmFwcGVuZChzdGQ6OnN0cmluZyhyZWxhdGl2ZUJhc2VEaXJlY3RvcnkudXRmOCgpLmRhdGEo
KSkpOworICAgIGZpbGVQYXRoLmFwcGVuZChzdGQ6OnN0cmluZyhmaWxlTmFtZS51dGY4KCkuZGF0
YSgpKSk7CisKKyAgICB3ZWJraXRfc3VwcG9ydDo6UmVnaXN0ZXJNb2NrZWRVUkwoZnVsbFVSTCwg
cmVzcG9uc2UsIFdlYlN0cmluZzo6ZnJvbVVURjgoZmlsZVBhdGguY19zdHIoKSkpOworfQorCit9
IC8vIG5hbWVzcGFjZSBVUkxUZXN0SGVscGVycworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1VSTFRlc3RIZWxwZXJzLmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1VSTFRlc3RIZWxwZXJzLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MGI5ZmIwMGJiMmY5NGQ1NGFhNzQ2MWFkODYzMjYwMjczYmQzOGEwMgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVVJMVGVzdEhlbHBlcnMuaApAQCAtMCww
ICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBVUkxUZXN0SGVscGVyc19oCisjZGVmaW5lIFVSTFRlc3RIZWxwZXJz
X2gKKworI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJVUkw7CisKK25hbWVzcGFjZSBVUkxUZXN0
SGVscGVycyB7CisKK2lubGluZSBXZWJDb3JlOjpLVVJMIHRvS1VSTChjb25zdCBzdGQ6OnN0cmlu
ZyYgdXJsKQoreworICAgIFdURjo6U3RyaW5nIHd0ZlN0cmluZyh1cmwuY19zdHIoKSk7CisgICAg
cmV0dXJuIFdlYkNvcmU6OktVUkwoV2ViQ29yZTo6UGFyc2VkVVJMU3RyaW5nLCB3dGZTdHJpbmcp
OworfQorCisvLyBIZWxwZXIgZnVuY3Rpb25zIGZvciBtb2NrIFVSTHMuIFRoZXNlIGZ1bmN0aW9u
cyBzZXQgdXAgdGhlIGRlc2lyZWQgVVJMIGFuZCBtaW1lVHlwZSwgd2l0aCBhIDIwMCBPSyByZXR1
cm4gc3RhdHVzLgorLy8gRm9yIHRoZSBtb2NrIFVSTCwgZnVsbFVSTCA9PSBiYXNlVVJMICsgZmls
ZU5hbWUuCisvLyBGb3IgdGhlIGFjdHVhbCBmaWxlIHBhdGg6ICA8V2ViS2l0IHJvb3QgZGlyZWN0
b3J5PiArIHJlbGF0aXZlQmFzZURpcmVjdG9yeSArIGZpbGVOYW1lLAorLy8gb3IsIGlmIHRoZSBy
ZWxhdGl2ZSBiYXNlIGRpcmVjdG9yeSBpcyBub3Qgc3BlY2lmaWVkOiAgPFdlYktpdCByb290IGRp
cmVjdG9yeT4gKyBmaWxlTmFtZS4KKy8vCit2b2lkIHJlZ2lzdGVyTW9ja2VkVVJMRnJvbUJhc2VV
UkwoY29uc3QgV2ViU3RyaW5nJiBiYXNlVVJMLCBjb25zdCBXZWJTdHJpbmcmIGZpbGVOYW1lLCBj
b25zdCBXZWJTdHJpbmcmIG1pbWVUeXBlID0gV2ViU3RyaW5nOjpmcm9tVVRGOCgidGV4dC9odG1s
IikpOwordm9pZCByZWdpc3Rlck1vY2tlZFVSTExvYWQoY29uc3QgV2ViVVJMJiBmdWxsVVJMLCBj
b25zdCBXZWJTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBXZWJTdHJpbmcmIG1pbWVUeXBlID0gV2Vi
U3RyaW5nOjpmcm9tVVRGOCgidGV4dC9odG1sIikpOwordm9pZCByZWdpc3Rlck1vY2tlZFVSTExv
YWQoY29uc3QgV2ViVVJMJiBmdWxsVVJMLCBjb25zdCBXZWJTdHJpbmcmIGZpbGVOYW1lLCBjb25z
dCBXZWJTdHJpbmcmIHJlbGF0aXZlQmFzZURpcmVjdG9yeSwgY29uc3QgV2ViU3RyaW5nJiBtaW1l
VHlwZSk7CisKK30gLy8gbmFtZXNwYWNlIFVSTFRlc3RIZWxwZXJzCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L1dlYkZyYW1lVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1l
VGVzdC5jcHAKaW5kZXggNmIxNGNmZjBmZDhjNTVmODYxNDEyOGE5NjkyYzcyMGRmYjRlZTcyYi4u
OWI3NDVlMDI5YTMzMmI5YTk2YmI3YmJiY2NjOGVjNGQ4NDQyM2Y0NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0LmNwcApAQCAtMzYsNiArMzYsNyBAQAog
I2luY2x1ZGUgIkZyYW1lVGVzdEhlbHBlcnMuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNp
bmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCisjaW5jbHVkZSAiVVJMVGVzdEhlbHBlcnMuaCIKICNp
bmNsdWRlICJXZWJEYXRhU291cmNlLmgiCiAjaW5jbHVkZSAiV2ViRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJXZWJGaW5kT3B0aW9ucy5oIgpAQCAtNTUsNiArNTYsNyBAQAogI2luY2x1ZGUgPHdlYmtp
dC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1
c2luZyBXZWJLaXQ6OlVSTFRlc3RIZWxwZXJzOjp0b0tVUkw7CiAKIG5hbWVzcGFjZSB7CiAKQEAg
LTczLDEyICs3NSwxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlZ2lzdGVyTW9ja2VkSHR0cFVS
TExvYWQoY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVOYW1lKQogICAgIHsKLSAgICAgICAgRnJhbWVU
ZXN0SGVscGVyczo6cmVnaXN0ZXJNb2NrZWRVUkxMb2FkKG1fYmFzZVVSTCwgZmlsZU5hbWUpOwor
ICAgICAgICBVUkxUZXN0SGVscGVyczo6cmVnaXN0ZXJNb2NrZWRVUkxGcm9tQmFzZVVSTChXZWJT
dHJpbmc6OmZyb21VVEY4KG1fYmFzZVVSTC5jX3N0cigpKSwgV2ViU3RyaW5nOjpmcm9tVVRGOChm
aWxlTmFtZS5jX3N0cigpKSk7CiAgICAgfQogCiAgICAgdm9pZCByZWdpc3Rlck1vY2tlZENocm9t
ZVVSTExvYWQoY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVOYW1lKQogICAgIHsKLSAgICAgICAgRnJh
bWVUZXN0SGVscGVyczo6cmVnaXN0ZXJNb2NrZWRVUkxMb2FkKG1fY2hyb21lVVJMLCBmaWxlTmFt
ZSk7CisgICAgICAgIFVSTFRlc3RIZWxwZXJzOjpyZWdpc3Rlck1vY2tlZFVSTEZyb21CYXNlVVJM
KFdlYlN0cmluZzo6ZnJvbVVURjgobV9jaHJvbWVVUkwuY19zdHIoKSksIFdlYlN0cmluZzo6ZnJv
bVVURjgoZmlsZU5hbWUuY19zdHIoKSkpOwogICAgIH0KIAogcHJvdGVjdGVkOgpAQCAtOTYsNyAr
OTgsNyBAQCBURVNUX0YoV2ViRnJhbWVUZXN0LCBDb250ZW50VGV4dCkKICAgICBXZWJWaWV3KiB3
ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQobV9iYXNlVVJM
ICsgImlmcmFtZXNfdGVzdC5odG1sIik7CiAKICAgICAvLyBOb3cgcmV0cmlldmUgdGhlIGZyYW1l
cyB0ZXh0IGFuZCB0ZXN0IGl0IG9ubHkgaW5jbHVkZXMgdmlzaWJsZSBlbGVtZW50cy4KLSAgICBz
dGQ6OnN0cmluZyBjb250ZW50ID0gd2ViVmlldy0+bWFpbkZyYW1lKCktPmNvbnRlbnRBc1RleHQo
MTAyNCkudXRmOCgpOworICAgIHN0ZDo6c3RyaW5nIGNvbnRlbnQgPSBzdGQ6OnN0cmluZyh3ZWJW
aWV3LT5tYWluRnJhbWUoKS0+Y29udGVudEFzVGV4dCgxMDI0KS51dGY4KCkuZGF0YSgpKTsKICAg
ICBFWFBFQ1RfTkUoc3RkOjpzdHJpbmc6Om5wb3MsIGNvbnRlbnQuZmluZCgiIHZpc2libGUgcGFy
YWdyYXBoIikpOwogICAgIEVYUEVDVF9ORShzdGQ6OnN0cmluZzo6bnBvcywgY29udGVudC5maW5k
KCIgdmlzaWJsZSBpZnJhbWUiKSk7CiAgICAgRVhQRUNUX0VRKHN0ZDo6c3RyaW5nOjpucG9zLCBj
b250ZW50LmZpbmQoIiBpbnZpc2libGUgcGFyYXJhcGgiKSk7CkBAIC0xNTYsNyArMTU4LDcgQEAg
VEVTVF9GKFdlYkZyYW1lVGVzdCwgQ2hyb21lUGFnZUphdmFzY3JpcHQpCiAgICAgd2ViVmlldy0+
bGF5b3V0KCk7CiAKICAgICAvLyBOb3cgcmV0cmlldmUgdGhlIGZyYW1lJ3MgdGV4dCBhbmQgZW5z
dXJlIGl0IHdhcyBtb2RpZmllZCBieSBydW5uaW5nIGphdmFzY3JpcHQuCi0gICAgc3RkOjpzdHJp
bmcgY29udGVudCA9IHdlYlZpZXctPm1haW5GcmFtZSgpLT5jb250ZW50QXNUZXh0KDEwMjQpLnV0
ZjgoKTsKKyAgICBzdGQ6OnN0cmluZyBjb250ZW50ID0gc3RkOjpzdHJpbmcod2ViVmlldy0+bWFp
bkZyYW1lKCktPmNvbnRlbnRBc1RleHQoMTAyNCkudXRmOCgpLmRhdGEoKSk7CiAgICAgRVhQRUNU
X05FKHN0ZDo6c3RyaW5nOjpucG9zLCBjb250ZW50LmZpbmQoIkNsb2JiZXJlZCIpKTsKIH0KIApA
QCAtMTc1LDcgKzE3Nyw3IEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIENocm9tZVBhZ2VOb0phdmFz
Y3JpcHQpCiAgICAgd2ViVmlldy0+bGF5b3V0KCk7CiAKICAgICAvLyBOb3cgcmV0cmlldmUgdGhl
IGZyYW1lJ3MgdGV4dCBhbmQgZW5zdXJlIGl0IHdhc24ndCBtb2RpZmllZCBieSBydW5uaW5nIGph
dmFzY3JpcHQuCi0gICAgc3RkOjpzdHJpbmcgY29udGVudCA9IHdlYlZpZXctPm1haW5GcmFtZSgp
LT5jb250ZW50QXNUZXh0KDEwMjQpLnV0ZjgoKTsKKyAgICBzdGQ6OnN0cmluZyBjb250ZW50ID0g
c3RkOjpzdHJpbmcod2ViVmlldy0+bWFpbkZyYW1lKCktPmNvbnRlbnRBc1RleHQoMTAyNCkudXRm
OCgpLmRhdGEoKSk7CiAgICAgRVhQRUNUX0VRKHN0ZDo6c3RyaW5nOjpucG9zLCBjb250ZW50LmZp
bmQoIkNsb2JiZXJlZCIpKTsKIH0KIApAQCAtMTg3LDcgKzE4OSw3IEBAIFRFU1RfRihXZWJGcmFt
ZVRlc3QsIERpc3BhdGNoTWVzc2FnZUV2ZW50V2l0aE9yaWdpbkNoZWNrKQogICAgIFdlYlZpZXcq
IHdlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jhc2VV
UkwgKyAicG9zdG1lc3NhZ2VfdGVzdC5odG1sIiwgdHJ1ZSk7CiAgICAgCiAgICAgLy8gU2VuZCBh
IG1lc3NhZ2Ugd2l0aCB0aGUgY29ycmVjdCBvcmlnaW4uCi0gICAgV2ViU2VjdXJpdHlPcmlnaW4g
Y29ycmVjdE9yaWdpbihXZWJTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKEdVUkwobV9iYXNlVVJMKSkp
OworICAgIFdlYlNlY3VyaXR5T3JpZ2luIGNvcnJlY3RPcmlnaW4oV2ViU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZSh0b0tVUkwobV9iYXNlVVJMKSkpOwogICAgIFdlYkRPTUV2ZW50IGV2ZW50ID0gd2Vi
Vmlldy0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCkuY3JlYXRlRXZlbnQoIk1lc3NhZ2VFdmVudCIp
OwogICAgIFdlYkRPTU1lc3NhZ2VFdmVudCBtZXNzYWdlID0gZXZlbnQudG88V2ViRE9NTWVzc2Fn
ZUV2ZW50PigpOwogICAgIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBkYXRhKFdlYlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6ZnJvbVN0cmluZygiZm9vIikpOwpAQCAtMTk1LDE0ICsxOTcsMTQgQEAg
VEVTVF9GKFdlYkZyYW1lVGVzdCwgRGlzcGF0Y2hNZXNzYWdlRXZlbnRXaXRoT3JpZ2luQ2hlY2sp
CiAgICAgd2ViVmlldy0+bWFpbkZyYW1lKCktPmRpc3BhdGNoTWVzc2FnZUV2ZW50V2l0aE9yaWdp
bkNoZWNrKGNvcnJlY3RPcmlnaW4sIG1lc3NhZ2UpOwogCiAgICAgLy8gU2VuZCBhbm90aGVyIG1l
c3NhZ2Ugd2l0aCBpbmNvcnJlY3Qgb3JpZ2luLgotICAgIFdlYlNlY3VyaXR5T3JpZ2luIGluY29y
cmVjdE9yaWdpbihXZWJTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKEdVUkwobV9jaHJvbWVVUkwpKSk7
CisgICAgV2ViU2VjdXJpdHlPcmlnaW4gaW5jb3JyZWN0T3JpZ2luKFdlYlNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGUodG9LVVJMKG1fY2hyb21lVVJMKSkpOwogICAgIHdlYlZpZXctPm1haW5GcmFtZSgp
LT5kaXNwYXRjaE1lc3NhZ2VFdmVudFdpdGhPcmlnaW5DaGVjayhpbmNvcnJlY3RPcmlnaW4sIG1l
c3NhZ2UpOwogCiAgICAgLy8gUmVxdWlyZWQgdG8gc2VlIGFueSB1cGRhdGVzIGluIGNvbnRlbnRB
c1RleHQuCiAgICAgd2ViVmlldy0+bGF5b3V0KCk7CiAKICAgICAvLyBWZXJpZnkgdGhhdCBvbmx5
IHRoZSBmaXJzdCBhZGRpdGlvbiBpcyBpbiB0aGUgYm9keSBvZiB0aGUgcGFnZS4KLSAgICBzdGQ6
OnN0cmluZyBjb250ZW50ID0gd2ViVmlldy0+bWFpbkZyYW1lKCktPmNvbnRlbnRBc1RleHQoMTAy
NCkudXRmOCgpOworICAgIHN0ZDo6c3RyaW5nIGNvbnRlbnQgPSBzdGQ6OnN0cmluZyh3ZWJWaWV3
LT5tYWluRnJhbWUoKS0+Y29udGVudEFzVGV4dCgxMDI0KS51dGY4KCkuZGF0YSgpKTsKICAgICBF
WFBFQ1RfTkUoc3RkOjpzdHJpbmc6Om5wb3MsIGNvbnRlbnQuZmluZCgiTWVzc2FnZSAxLiIpKTsK
ICAgICBFWFBFQ1RfRVEoc3RkOjpzdHJpbmc6Om5wb3MsIGNvbnRlbnQuZmluZCgiTWVzc2FnZSAy
LiIpKTsKIH0KQEAgLTQ0MSwxMyArNDQzLDEzIEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIFJlbG9h
ZFdpdGhPdmVycmlkZVVSTFByZXNlcnZlc1N0YXRlKQogICAgIGZsb2F0IHByZXZpb3VzU2NhbGUg
PSB3ZWJWaWV3SW1wbC0+cGFnZVNjYWxlRmFjdG9yKCk7CiAKICAgICAvLyBSZWxvYWQgdGhlIHBh
Z2UgdXNpbmcgdGhlIGNhY2hlLgotICAgIHdlYlZpZXdJbXBsLT5tYWluRnJhbWUoKS0+cmVsb2Fk
V2l0aE92ZXJyaWRlVVJMKEdVUkwobV9iYXNlVVJMICsgc2Vjb25kVVJMKSwgZmFsc2UpOworICAg
IHdlYlZpZXdJbXBsLT5tYWluRnJhbWUoKS0+cmVsb2FkV2l0aE92ZXJyaWRlVVJMKHRvS1VSTCht
X2Jhc2VVUkwgKyBzZWNvbmRVUkwpLCBmYWxzZSk7CiAgICAgd2Via2l0X3N1cHBvcnQ6OlNlcnZl
QXN5bmNocm9ub3VzTW9ja2VkUmVxdWVzdHMoKTsKICAgICBBU1NFUlRfRVEocHJldmlvdXNPZmZz
ZXQsIHdlYlZpZXdJbXBsLT5tYWluRnJhbWUoKS0+c2Nyb2xsT2Zmc2V0KCkpOwogICAgIEFTU0VS
VF9FUShwcmV2aW91c1NjYWxlLCB3ZWJWaWV3SW1wbC0+cGFnZVNjYWxlRmFjdG9yKCkpOwogCiAg
ICAgLy8gUmVsb2FkIHRoZSBwYWdlIHdoaWxlIGlnbm9yaW5nIHRoZSBjYWNoZS4KLSAgICB3ZWJW
aWV3SW1wbC0+bWFpbkZyYW1lKCktPnJlbG9hZFdpdGhPdmVycmlkZVVSTChHVVJMKG1fYmFzZVVS
TCArIHRoaXJkVVJMKSwgdHJ1ZSk7CisgICAgd2ViVmlld0ltcGwtPm1haW5GcmFtZSgpLT5yZWxv
YWRXaXRoT3ZlcnJpZGVVUkwodG9LVVJMKG1fYmFzZVVSTCArIHRoaXJkVVJMKSwgdHJ1ZSk7CiAg
ICAgd2Via2l0X3N1cHBvcnQ6OlNlcnZlQXN5bmNocm9ub3VzTW9ja2VkUmVxdWVzdHMoKTsKICAg
ICBBU1NFUlRfRVEocHJldmlvdXNPZmZzZXQsIHdlYlZpZXdJbXBsLT5tYWluRnJhbWUoKS0+c2Ny
b2xsT2Zmc2V0KCkpOwogICAgIEFTU0VSVF9FUShwcmV2aW91c1NjYWxlLCB3ZWJWaWV3SW1wbC0+
cGFnZVNjYWxlRmFjdG9yKCkpOwpAQCAtNDY5LDggKzQ3MSw4IEBAIFRFU1RfRihXZWJGcmFtZVRl
c3QsIElmcmFtZVJlZGlyZWN0KQogICAgIFdlYlZlY3RvcjxXZWJVUkw+IHJlZGlyZWN0czsKICAg
ICBpZnJhbWVEYXRhU291cmNlLT5yZWRpcmVjdENoYWluKHJlZGlyZWN0cyk7CiAgICAgQVNTRVJU
X0VRKDJVLCByZWRpcmVjdHMuc2l6ZSgpKTsKLSAgICBFWFBFQ1RfRVEoR1VSTCgiYWJvdXQ6Ymxh
bmsiKSwgR1VSTChyZWRpcmVjdHNbMF0pKTsKLSAgICBFWFBFQ1RfRVEoR1VSTCgiaHR0cDovL3d3
dy50ZXN0LmNvbS92aXNpYmxlX2lmcmFtZS5odG1sIiksIEdVUkwocmVkaXJlY3RzWzFdKSk7Cisg
ICAgRVhQRUNUX0VRKHRvS1VSTCgiYWJvdXQ6YmxhbmsiKSwgdG9LVVJMKHJlZGlyZWN0c1swXS5z
cGVjKCkuZGF0YSgpKSk7CisgICAgRVhQRUNUX0VRKHRvS1VSTCgiaHR0cDovL3d3dy50ZXN0LmNv
bS92aXNpYmxlX2lmcmFtZS5odG1sIiksIHRvS1VSTChyZWRpcmVjdHNbMV0uc3BlYygpLmRhdGEo
KSkpOwogCiAgICAgd2ViVmlldy0+Y2xvc2UoKTsKIH0KQEAgLTczMSwxOSArNzMzLDE5IEBAIFRF
U1RfRihXZWJGcmFtZVRlc3QsIEdldENvbnRlbnRBc1BsYWluVGV4dCkKIAogICAgIC8vIEdlbmVy
YXRlIGEgc2ltcGxlIHRlc3QgY2FzZS4KICAgICBjb25zdCBjaGFyIHNpbXBsZVNvdXJjZVtdID0g
IjxkaXY+Rm9vIGJhcjwvZGl2PjxkaXY+PC9kaXY+YmF6IjsKLSAgICBHVVJMIHRlc3RVUkwoImFi
b3V0OmJsYW5rIik7CisgICAgV2ViQ29yZTo6S1VSTCB0ZXN0VVJMID0gdG9LVVJMKCJhYm91dDpi
bGFuayIpOwogICAgIGZyYW1lLT5sb2FkSFRNTFN0cmluZyhzaW1wbGVTb3VyY2UsIHRlc3RVUkwp
OwogICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5BbGxQZW5kaW5nTWVzc2FnZXMoKTsKIAogICAgIC8v
IE1ha2Ugc3VyZSBpdCBjb21lcyBvdXQgT0suCiAgICAgY29uc3Qgc3RkOjpzdHJpbmcgZXhwZWN0
ZWQoIkZvbyBiYXJcbmJheiIpOwogICAgIFdlYlN0cmluZyB0ZXh0ID0gZnJhbWUtPmNvbnRlbnRB
c1RleHQoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7Ci0gICAgRVhQRUNUX0VR
KGV4cGVjdGVkLCBzdGQ6OnN0cmluZyh0ZXh0LnV0ZjgoKSkpOworICAgIEVYUEVDVF9FUShleHBl
Y3RlZCwgc3RkOjpzdHJpbmcodGV4dC51dGY4KCkuZGF0YSgpKSk7CiAKICAgICAvLyBUcnkgcmVh
ZGluZyB0aGUgc2FtZSBvbmUgd2l0aCBjbGlwcGluZyBvZiB0aGUgdGV4dC4KICAgICBjb25zdCBp
bnQgbGVuZ3RoID0gNTsKICAgICB0ZXh0ID0gZnJhbWUtPmNvbnRlbnRBc1RleHQobGVuZ3RoKTsK
LSAgICBFWFBFQ1RfRVEoZXhwZWN0ZWQuc3Vic3RyKDAsIGxlbmd0aCksIHN0ZDo6c3RyaW5nKHRl
eHQudXRmOCgpKSk7CisgICAgRVhQRUNUX0VRKGV4cGVjdGVkLnN1YnN0cigwLCBsZW5ndGgpLCBz
dGQ6OnN0cmluZyh0ZXh0LnV0ZjgoKS5kYXRhKCkpKTsKIAogICAgIC8vIE5vdyBkbyBhIG5ldyB0
ZXN0IHdpdGggYSBzdWJmcmFtZS4KICAgICBjb25zdCBjaGFyIG91dGVyRnJhbWVTb3VyY2VbXSA9
ICJIZWxsbzxpZnJhbWU+PC9pZnJhbWU+IHdvcmxkIjsKQEAgLTc1NywxMiArNzU5LDEyIEBAIFRF
U1RfRihXZWJGcmFtZVRlc3QsIEdldENvbnRlbnRBc1BsYWluVGV4dCkKICAgICB3ZWJraXRfc3Vw
cG9ydDo6UnVuQWxsUGVuZGluZ01lc3NhZ2VzKCk7CiAKICAgICB0ZXh0ID0gZnJhbWUtPmNvbnRl
bnRBc1RleHQoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7Ci0gICAgRVhQRUNU
X0VRKCJIZWxsbyB3b3JsZFxuXG5zdWJcbnRleHQiLCBzdGQ6OnN0cmluZyh0ZXh0LnV0ZjgoKSkp
OworICAgIEVYUEVDVF9FUSgiSGVsbG8gd29ybGRcblxuc3ViXG50ZXh0Iiwgc3RkOjpzdHJpbmco
dGV4dC51dGY4KCkuZGF0YSgpKSk7CiAKICAgICAvLyBHZXQgdGhlIGZyYW1lIHRleHQgd2hlcmUg
dGhlIHN1YmZyYW1lIHNlcGFyYXRvciBmYWxscyBvbiB0aGUgYm91bmRhcnkgb2YKICAgICAvLyB3
aGF0IHdlJ2xsIHRha2UuIFRoZXJlIHVzZWQgdG8gYmUgYSBjcmFzaCBpbiB0aGlzIGNhc2UuCiAg
ICAgdGV4dCA9IGZyYW1lLT5jb250ZW50QXNUZXh0KDEyKTsKLSAgICBFWFBFQ1RfRVEoIkhlbGxv
IHdvcmxkIiwgc3RkOjpzdHJpbmcodGV4dC51dGY4KCkpKTsKKyAgICBFWFBFQ1RfRVEoIkhlbGxv
IHdvcmxkIiwgc3RkOjpzdHJpbmcodGV4dC51dGY4KCkuZGF0YSgpKSk7CiAKICAgICB3ZWJWaWV3
LT5jbG9zZSgpOwogfQpAQCAtNzc0LDIzICs3NzYsMjMgQEAgVEVTVF9GKFdlYkZyYW1lVGVzdCwg
R2V0RnVsbEh0bWxPZlBhZ2UpCiAKICAgICAvLyBHZW5lcmF0ZSBhIHNpbXBsZSB0ZXN0IGNhc2Uu
CiAgICAgY29uc3QgY2hhciBzaW1wbGVTb3VyY2VbXSA9ICI8cD5IZWxsbzwvcD48cD5Xb3JsZDwv
cD4iOwotICAgIEdVUkwgdGVzdFVSTCgiYWJvdXQ6YmxhbmsiKTsKKyAgICBXZWJDb3JlOjpLVVJM
IHRlc3RVUkwgPSB0b0tVUkwoImFib3V0OmJsYW5rIik7CiAgICAgZnJhbWUtPmxvYWRIVE1MU3Ry
aW5nKHNpbXBsZVNvdXJjZSwgdGVzdFVSTCk7CiAgICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBl
bmRpbmdNZXNzYWdlcygpOwogCiAgICAgV2ViU3RyaW5nIHRleHQgPSBmcmFtZS0+Y29udGVudEFz
VGV4dChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKLSAgICBFWFBFQ1RfRVEo
IkhlbGxvXG5cbldvcmxkIiwgc3RkOjpzdHJpbmcodGV4dC51dGY4KCkpKTsKKyAgICBFWFBFQ1Rf
RVEoIkhlbGxvXG5cbldvcmxkIiwgc3RkOjpzdHJpbmcodGV4dC51dGY4KCkuZGF0YSgpKSk7CiAK
LSAgICBjb25zdCBzdGQ6OnN0cmluZyBodG1sID0gZnJhbWUtPmNvbnRlbnRBc01hcmt1cCgpLnV0
ZjgoKTsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyBodG1sID0gc3RkOjpzdHJpbmcoZnJhbWUtPmNv
bnRlbnRBc01hcmt1cCgpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgLy8gTG9hZCBhZ2FpbiB3aXRo
IHRoZSBvdXRwdXQgaHRtbC4KLSAgICBmcmFtZS0+bG9hZEhUTUxTdHJpbmcoaHRtbCwgdGVzdFVS
TCk7CisgICAgZnJhbWUtPmxvYWRIVE1MU3RyaW5nKFdlYkRhdGEoaHRtbC5jX3N0cigpLCBodG1s
Lmxlbmd0aCgpKSwgdGVzdFVSTCk7CiAgICAgd2Via2l0X3N1cHBvcnQ6OlJ1bkFsbFBlbmRpbmdN
ZXNzYWdlcygpOwogCi0gICAgRVhQRUNUX0VRKGh0bWwsIHN0ZDo6c3RyaW5nKGZyYW1lLT5jb250
ZW50QXNNYXJrdXAoKS51dGY4KCkpKTsKKyAgICBFWFBFQ1RfRVEoaHRtbCwgc3RkOjpzdHJpbmco
ZnJhbWUtPmNvbnRlbnRBc01hcmt1cCgpLnV0ZjgoKS5kYXRhKCkpKTsKIAogICAgIHRleHQgPSBm
cmFtZS0+Y29udGVudEFzVGV4dChzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsK
LSAgICBFWFBFQ1RfRVEoIkhlbGxvXG5cbldvcmxkIiwgc3RkOjpzdHJpbmcodGV4dC51dGY4KCkp
KTsKKyAgICBFWFBFQ1RfRVEoIkhlbGxvXG5cbldvcmxkIiwgc3RkOjpzdHJpbmcodGV4dC51dGY4
KCkuZGF0YSgpKSk7CiAKICAgICAvLyBUZXN0IHNlbGVjdGlvbiBjaGVjawogICAgIEVYUEVDVF9G
QUxTRShmcmFtZS0+aGFzU2VsZWN0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9XZWJQYWdlTmV3U2VyaWFsaXplclRlc3QuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9XZWJQYWdlTmV3U2VyaWFsaXplclRlc3QuY3BwCmluZGV4IDVjM2Jh
OThhMDViODllNjExY2ExNjA5NGNlZWIzMWI0ZGE2NzU2M2IuLjNlYTRmY2Y5ZWI2NDc0YjAwNDBk
ZGNlYjhlZmRlNGRhMmZlNzUyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvV2ViUGFnZU5ld1NlcmlhbGl6ZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1dlYlBhZ2VOZXdTZXJpYWxpemVyVGVzdC5jcHAKQEAgLTMwLDYgKzMwLDcg
QEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCisjaW5jbHVkZSAiVVJMVGVzdEhlbHBlcnMuaCIK
ICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYkZyYW1lQ2xpZW50LmgiCiAjaW5j
bHVkZSAiV2ViUGFnZVNlcmlhbGl6ZXIuaCIKQEAgLTQxLDExICs0MiwxMiBAQAogI2luY2x1ZGUg
InBsYXRmb3JtL1dlYlVSTFJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiV2ViVmlldy5oIgogCi0jaW5j
bHVkZSA8Z29vZ2xldXJsL3NyYy9ndXJsLmg+CiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KICNp
bmNsdWRlIDx3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oPgogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwordXNpbmcgV2ViS2l0OjpVUkxUZXN0SGVscGVyczo6dG9LVVJMOwordXNpbmcg
V2ViS2l0OjpVUkxUZXN0SGVscGVyczo6cmVnaXN0ZXJNb2NrZWRVUkxMb2FkOwogCiBuYW1lc3Bh
Y2UgewogCkBAIC0xMTAsNDEgKzExMiwyOSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIG1fd2ViVmll
dy0+Y2xvc2UoKTsKICAgICB9CiAKLSAgICB2b2lkIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZChjb25z
dCBXZWJVUkwmIHVybCwgY29uc3QgV2ViU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgV2ViU3RyaW5n
JiBtaW1lVHlwZSkKLSAgICB7Ci0gICAgICAgIFdlYlVSTFJlc3BvbnNlIHJlc3BvbnNlOwotICAg
ICAgICByZXNwb25zZS5pbml0aWFsaXplKCk7Ci0gICAgICAgIHJlc3BvbnNlLnNldE1JTUVUeXBl
KG1pbWVUeXBlKTsKLSAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAwKTsKLSAg
ICAgICAgc3RkOjpzdHJpbmcgZmlsZVBhdGggPSB3ZWJraXRfc3VwcG9ydDo6R2V0V2ViS2l0Um9v
dERpcigpLnV0ZjgoKTsKLSAgICAgICAgZmlsZVBhdGguYXBwZW5kKCIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9kYXRhL3BhZ2VzZXJpYWxpemVyLyIpOwotICAgICAgICBmaWxlUGF0aC5h
cHBlbmQoZmlsZU5hbWUudXRmOCgpKTsKLSAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlJlZ2lzdGVy
TW9ja2VkVVJMKHVybCwgcmVzcG9uc2UsIFdlYlN0cmluZzo6ZnJvbVVURjgoZmlsZVBhdGgpKTsK
LSAgICB9Ci0KICAgICBXZWJVUkwgc2V0VXBDU1NUZXN0UGFnZSgpCiAgICAgewotICAgICAgICBX
ZWJVUkwgdG9wRnJhbWVVUkwgPSBHVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tIik7Ci0gICAgICAg
IHJlZ2lzdGVyTW9ja2VkVVJMTG9hZCh0b3BGcmFtZVVSTCwgV2ViU3RyaW5nOjpmcm9tVVRGOCgi
Y3NzX3Rlc3RfcGFnZS5odG1sIiksIGh0bWxNaW1lVHlwZSgpKTsKLSAgICAgICAgcmVnaXN0ZXJN
b2NrZWRVUkxMb2FkKEdVUkwoImh0dHA6Ly93d3cudGVzdC5jb20vbGlua19zdHlsZXMuY3NzIiks
IFdlYlN0cmluZzo6ZnJvbVVURjgoImxpbmtfc3R5bGVzLmNzcyIpLCBjc3NNaW1lVHlwZSgpKTsK
LSAgICAgICAgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKEdVUkwoImh0dHA6Ly93d3cudGVzdC5jb20v
aW1wb3J0X3N0eWxlX2Zyb21fbGluay5jc3MiKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgiaW1wb3J0
X3N0eWxlX2Zyb21fbGluay5jc3MiKSwgY3NzTWltZVR5cGUoKSk7Ci0gICAgICAgIHJlZ2lzdGVy
TW9ja2VkVVJMTG9hZChHVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tL2ltcG9ydF9zdHlsZXMuY3Nz
IiksIFdlYlN0cmluZzo6ZnJvbVVURjgoImltcG9ydF9zdHlsZXMuY3NzIiksIGNzc01pbWVUeXBl
KCkpOwotICAgICAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQoR1VSTCgiaHR0cDovL3d3dy50ZXN0
LmNvbS9yZWRfYmFja2dyb3VuZC5wbmciKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgicmVkX2JhY2tn
cm91bmQucG5nIiksIHBuZ01pbWVUeXBlKCkpOwotICAgICAgICByZWdpc3Rlck1vY2tlZFVSTExv
YWQoR1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbS9vcmFuZ2VfYmFja2dyb3VuZC5wbmciKSwgV2Vi
U3RyaW5nOjpmcm9tVVRGOCgib3JhbmdlX2JhY2tncm91bmQucG5nIiksIHBuZ01pbWVUeXBlKCkp
OwotICAgICAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQoR1VSTCgiaHR0cDovL3d3dy50ZXN0LmNv
bS95ZWxsb3dfYmFja2dyb3VuZC5wbmciKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgieWVsbG93X2Jh
Y2tncm91bmQucG5nIiksIHBuZ01pbWVUeXBlKCkpOwotICAgICAgICByZWdpc3Rlck1vY2tlZFVS
TExvYWQoR1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbS9ncmVlbl9iYWNrZ3JvdW5kLnBuZyIpLCBX
ZWJTdHJpbmc6OmZyb21VVEY4KCJncmVlbl9iYWNrZ3JvdW5kLnBuZyIpLCBwbmdNaW1lVHlwZSgp
KTsKLSAgICAgICAgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKEdVUkwoImh0dHA6Ly93d3cudGVzdC5j
b20vYmx1ZV9iYWNrZ3JvdW5kLnBuZyIpLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJibHVlX2JhY2tn
cm91bmQucG5nIiksIHBuZ01pbWVUeXBlKCkpOwotICAgICAgICByZWdpc3Rlck1vY2tlZFVSTExv
YWQoR1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbS9wdXJwbGVfYmFja2dyb3VuZC5wbmciKSwgV2Vi
U3RyaW5nOjpmcm9tVVRGOCgicHVycGxlX2JhY2tncm91bmQucG5nIiksIHBuZ01pbWVUeXBlKCkp
OwotICAgICAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQoR1VSTCgiaHR0cDovL3d3dy50ZXN0LmNv
bS91bC1kb3QucG5nIiksIFdlYlN0cmluZzo6ZnJvbVVURjgoInVsLWRvdC5wbmciKSwgcG5nTWlt
ZVR5cGUoKSk7Ci0gICAgICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZChHVVJMKCJodHRwOi8vd3d3
LnRlc3QuY29tL29sLWRvdC5wbmciKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgib2wtZG90LnBuZyIp
LCBwbmdNaW1lVHlwZSgpKTsKKyAgICAgICAgV2ViVVJMIHRvcEZyYW1lVVJMID0gdG9LVVJMKCJo
dHRwOi8vd3d3LnRlc3QuY29tIik7CisgICAgICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZCh0b3BG
cmFtZVVSTCwgV2ViU3RyaW5nOjpmcm9tVVRGOCgiY3NzX3Rlc3RfcGFnZS5odG1sIiksIFdlYlN0
cmluZzo6ZnJvbVVURjgoInBhZ2VzZXJpYWxpemVyLyIpLCBodG1sTWltZVR5cGUoKSk7CisgICAg
ICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZCh0b0tVUkwoImh0dHA6Ly93d3cudGVzdC5jb20vbGlu
a19zdHlsZXMuY3NzIiksIFdlYlN0cmluZzo6ZnJvbVVURjgoImxpbmtfc3R5bGVzLmNzcyIpLCBX
ZWJTdHJpbmc6OmZyb21VVEY4KCJwYWdlc2VyaWFsaXplci8iKSwgY3NzTWltZVR5cGUoKSk7Cisg
ICAgICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZCh0b0tVUkwoImh0dHA6Ly93d3cudGVzdC5jb20v
aW1wb3J0X3N0eWxlX2Zyb21fbGluay5jc3MiKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgiaW1wb3J0
X3N0eWxlX2Zyb21fbGluay5jc3MiKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgicGFnZXNlcmlhbGl6
ZXIvIiksIGNzc01pbWVUeXBlKCkpOworICAgICAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQodG9L
VVJMKCJodHRwOi8vd3d3LnRlc3QuY29tL2ltcG9ydF9zdHlsZXMuY3NzIiksIFdlYlN0cmluZzo6
ZnJvbVVURjgoImltcG9ydF9zdHlsZXMuY3NzIiksIFdlYlN0cmluZzo6ZnJvbVVURjgoInBhZ2Vz
ZXJpYWxpemVyLyIpLCBjc3NNaW1lVHlwZSgpKTsKKyAgICAgICAgcmVnaXN0ZXJNb2NrZWRVUkxM
b2FkKHRvS1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbS9yZWRfYmFja2dyb3VuZC5wbmciKSwgV2Vi
U3RyaW5nOjpmcm9tVVRGOCgicmVkX2JhY2tncm91bmQucG5nIiksIFdlYlN0cmluZzo6ZnJvbVVU
RjgoInBhZ2VzZXJpYWxpemVyLyIpLCBwbmdNaW1lVHlwZSgpKTsKKyAgICAgICAgcmVnaXN0ZXJN
b2NrZWRVUkxMb2FkKHRvS1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbS9vcmFuZ2VfYmFja2dyb3Vu
ZC5wbmciKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgib3JhbmdlX2JhY2tncm91bmQucG5nIiksIFdl
YlN0cmluZzo6ZnJvbVVURjgoInBhZ2VzZXJpYWxpemVyLyIpLCBwbmdNaW1lVHlwZSgpKTsKKyAg
ICAgICAgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKHRvS1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbS95
ZWxsb3dfYmFja2dyb3VuZC5wbmciKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgieWVsbG93X2JhY2tn
cm91bmQucG5nIiksIFdlYlN0cmluZzo6ZnJvbVVURjgoInBhZ2VzZXJpYWxpemVyLyIpLCBwbmdN
aW1lVHlwZSgpKTsKKyAgICAgICAgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKHRvS1VSTCgiaHR0cDov
L3d3dy50ZXN0LmNvbS9ncmVlbl9iYWNrZ3JvdW5kLnBuZyIpLCBXZWJTdHJpbmc6OmZyb21VVEY4
KCJncmVlbl9iYWNrZ3JvdW5kLnBuZyIpLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJwYWdlc2VyaWFs
aXplci8iKSwgcG5nTWltZVR5cGUoKSk7CisgICAgICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZCh0
b0tVUkwoImh0dHA6Ly93d3cudGVzdC5jb20vYmx1ZV9iYWNrZ3JvdW5kLnBuZyIpLCBXZWJTdHJp
bmc6OmZyb21VVEY4KCJibHVlX2JhY2tncm91bmQucG5nIiksIFdlYlN0cmluZzo6ZnJvbVVURjgo
InBhZ2VzZXJpYWxpemVyLyIpLCBwbmdNaW1lVHlwZSgpKTsKKyAgICAgICAgcmVnaXN0ZXJNb2Nr
ZWRVUkxMb2FkKHRvS1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbS9wdXJwbGVfYmFja2dyb3VuZC5w
bmciKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgicHVycGxlX2JhY2tncm91bmQucG5nIiksIFdlYlN0
cmluZzo6ZnJvbVVURjgoInBhZ2VzZXJpYWxpemVyLyIpLCBwbmdNaW1lVHlwZSgpKTsKKyAgICAg
ICAgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKHRvS1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbS91bC1k
b3QucG5nIiksIFdlYlN0cmluZzo6ZnJvbVVURjgoInVsLWRvdC5wbmciKSwgV2ViU3RyaW5nOjpm
cm9tVVRGOCgicGFnZXNlcmlhbGl6ZXIvIiksIHBuZ01pbWVUeXBlKCkpOworICAgICAgICByZWdp
c3Rlck1vY2tlZFVSTExvYWQodG9LVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tL29sLWRvdC5wbmci
KSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgib2wtZG90LnBuZyIpLCBXZWJTdHJpbmc6OmZyb21VVEY4
KCJwYWdlc2VyaWFsaXplci8iKSwgcG5nTWltZVR5cGUoKSk7CiAgICAgICAgIHJldHVybiB0b3BG
cmFtZVVSTDsKICAgICB9CiAKLSAgICB2b2lkIGxvYWRVUkxJblRvcEZyYW1lKGNvbnN0IEdVUkwm
IHVybCkKKyAgICB2b2lkIGxvYWRVUkxJblRvcEZyYW1lKGNvbnN0IFdlYlVSTCYgdXJsKQogICAg
IHsKICAgICAgICAgV2ViVVJMUmVxdWVzdCB1cmxSZXF1ZXN0OwogICAgICAgICB1cmxSZXF1ZXN0
LmluaXRpYWxpemUoKTsKLSAgICAgICAgdXJsUmVxdWVzdC5zZXRVUkwoV2ViVVJMKHVybCkpOwor
ICAgICAgICB1cmxSZXF1ZXN0LnNldFVSTCh1cmwpOwogICAgICAgICBtX3dlYlZpZXctPm1haW5G
cmFtZSgpLT5sb2FkUmVxdWVzdCh1cmxSZXF1ZXN0KTsKICAgICAgICAgLy8gTWFrZSBzdXJlIGFu
eSBwZW5kaW5nIHJlcXVlc3QgZ2V0IHNlcnZlZC4KICAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlNl
cnZlQXN5bmNocm9ub3VzTW9ja2VkUmVxdWVzdHMoKTsKQEAgLTE2MSw3ICsxNTEsNyBAQCBwcm90
ZWN0ZWQ6CiAKICAgICBzdGF0aWMgYm9vbCByZXNvdXJjZVZlY3RvckNvbnRhaW5zKGNvbnN0IFdl
YlZlY3RvcjxXZWJQYWdlU2VyaWFsaXplcjo6UmVzb3VyY2U+JiByZXNvdXJjZXMsIGNvbnN0IGNo
YXIqIHVybCwgY29uc3QgY2hhciogbWltZVR5cGUpCiAgICAgewotICAgICAgICBXZWJVUkwgd2Vi
VVJMID0gV2ViVVJMKEdVUkwodXJsKSk7CisgICAgICAgIFdlYlVSTCB3ZWJVUkwgPSBXZWJVUkwo
dG9LVVJMKHVybCkpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlc291cmNlcy5z
aXplKCk7ICsraSkgewogICAgICAgICAgICAgY29uc3QgV2ViUGFnZVNlcmlhbGl6ZXI6OlJlc291
cmNlJiByZXNvdXJjZSA9IHJlc291cmNlc1tpXTsKICAgICAgICAgICAgIGlmIChyZXNvdXJjZS51
cmwgPT0gd2ViVVJMICYmICFyZXNvdXJjZS5kYXRhLmlzRW1wdHkoKSAmJiAhcmVzb3VyY2UubWlt
ZVR5cGUuY29tcGFyZShXZWJDU3RyaW5nKG1pbWVUeXBlKSkpCkBAIC0xODQsMTMgKzE3NCwxMyBA
QCBwcml2YXRlOgogVEVTVF9GKFdlYlBhZ2VOZXdTZXJpYWxpemVUZXN0LCBQYWdlV2l0aEZyYW1l
cykKIHsKICAgICAvLyBSZWdpc3RlciB0aGUgbW9ja2VkIGZyYW1lcy4KLSAgICBXZWJVUkwgdG9w
RnJhbWVVUkwgPSBHVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tIik7Ci0gICAgcmVnaXN0ZXJNb2Nr
ZWRVUkxMb2FkKHRvcEZyYW1lVVJMLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJ0b3BfZnJhbWUuaHRt
bCIpLCBodG1sTWltZVR5cGUoKSk7Ci0gICAgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKEdVUkwoImh0
dHA6Ly93d3cudGVzdC5jb20vaWZyYW1lLmh0bWwiKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgiaWZy
YW1lLmh0bWwiKSwgaHRtbE1pbWVUeXBlKCkpOwotICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZChH
VVJMKCJodHRwOi8vd3d3LnRlc3QuY29tL2lmcmFtZTIuaHRtbCIpLCBXZWJTdHJpbmc6OmZyb21V
VEY4KCJpZnJhbWUyLmh0bWwiKSwgaHRtbE1pbWVUeXBlKCkpOwotICAgIHJlZ2lzdGVyTW9ja2Vk
VVJMTG9hZChHVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tL3JlZF9iYWNrZ3JvdW5kLnBuZyIpLCBX
ZWJTdHJpbmc6OmZyb21VVEY4KCJyZWRfYmFja2dyb3VuZC5wbmciKSwgcG5nTWltZVR5cGUoKSk7
Ci0gICAgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKEdVUkwoImh0dHA6Ly93d3cudGVzdC5jb20vZ3Jl
ZW5fYmFja2dyb3VuZC5wbmciKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgiZ3JlZW5fYmFja2dyb3Vu
ZC5wbmciKSwgcG5nTWltZVR5cGUoKSk7Ci0gICAgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKEdVUkwo
Imh0dHA6Ly93d3cudGVzdC5jb20vYmx1ZV9iYWNrZ3JvdW5kLnBuZyIpLCBXZWJTdHJpbmc6OmZy
b21VVEY4KCJibHVlX2JhY2tncm91bmQucG5nIiksIHBuZ01pbWVUeXBlKCkpOworICAgIFdlYlVS
TCB0b3BGcmFtZVVSTCA9IHRvS1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbSIpOworICAgIHJlZ2lz
dGVyTW9ja2VkVVJMTG9hZCh0b3BGcmFtZVVSTCwgV2ViU3RyaW5nOjpmcm9tVVRGOCgidG9wX2Zy
YW1lLmh0bWwiKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgicGFnZXNlcmlhbGl6ZXIvIiksIGh0bWxN
aW1lVHlwZSgpKTsKKyAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQodG9LVVJMKCJodHRwOi8vd3d3
LnRlc3QuY29tL2lmcmFtZS5odG1sIiksIFdlYlN0cmluZzo6ZnJvbVVURjgoImlmcmFtZS5odG1s
IiksIFdlYlN0cmluZzo6ZnJvbVVURjgoInBhZ2VzZXJpYWxpemVyLyIpLCBodG1sTWltZVR5cGUo
KSk7CisgICAgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKHRvS1VSTCgiaHR0cDovL3d3dy50ZXN0LmNv
bS9pZnJhbWUyLmh0bWwiKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgiaWZyYW1lMi5odG1sIiksIFdl
YlN0cmluZzo6ZnJvbVVURjgoInBhZ2VzZXJpYWxpemVyLyIpLCBodG1sTWltZVR5cGUoKSk7Cisg
ICAgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKHRvS1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbS9yZWRf
YmFja2dyb3VuZC5wbmciKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgicmVkX2JhY2tncm91bmQucG5n
IiksIFdlYlN0cmluZzo6ZnJvbVVURjgoInBhZ2VzZXJpYWxpemVyLyIpLCBwbmdNaW1lVHlwZSgp
KTsKKyAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQodG9LVVJMKCJodHRwOi8vd3d3LnRlc3QuY29t
L2dyZWVuX2JhY2tncm91bmQucG5nIiksIFdlYlN0cmluZzo6ZnJvbVVURjgoImdyZWVuX2JhY2tn
cm91bmQucG5nIiksIFdlYlN0cmluZzo6ZnJvbVVURjgoInBhZ2VzZXJpYWxpemVyLyIpLCBwbmdN
aW1lVHlwZSgpKTsKKyAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQodG9LVVJMKCJodHRwOi8vd3d3
LnRlc3QuY29tL2JsdWVfYmFja2dyb3VuZC5wbmciKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgiYmx1
ZV9iYWNrZ3JvdW5kLnBuZyIpLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJwYWdlc2VyaWFsaXplci8i
KSwgcG5nTWltZVR5cGUoKSk7CiAKICAgICBsb2FkVVJMSW5Ub3BGcmFtZSh0b3BGcmFtZVVSTCk7
CiAKQEAgLTIwMCw3ICsxOTAsNyBAQCBURVNUX0YoV2ViUGFnZU5ld1NlcmlhbGl6ZVRlc3QsIFBh
Z2VXaXRoRnJhbWVzKQogCiAgICAgLy8gVGhlIGZpcnN0IHJlc291cmNlIHNob3VsZCBiZSB0aGUg
bWFpbi1mcmFtZS4KICAgICBjb25zdCBXZWJQYWdlU2VyaWFsaXplcjo6UmVzb3VyY2UmIHJlc291
cmNlID0gcmVzb3VyY2VzWzBdOwotICAgIEVYUEVDVF9UUlVFKHJlc291cmNlLnVybCA9PSBHVVJM
KCJodHRwOi8vd3d3LnRlc3QuY29tIikpOworICAgIEVYUEVDVF9UUlVFKHJlc291cmNlLnVybCA9
PSBXZWJVUkwodG9LVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tIikpKTsKICAgICBFWFBFQ1RfRVEo
MCwgcmVzb3VyY2UubWltZVR5cGUuY29tcGFyZShXZWJDU3RyaW5nKCJ0ZXh0L2h0bWwiKSkpOwog
ICAgIEVYUEVDVF9GQUxTRShyZXNvdXJjZS5kYXRhLmlzRW1wdHkoKSk7CiAKQEAgLTIyNyw3ICsy
MTcsNyBAQCBURVNUX0YoV2ViUGFnZU5ld1NlcmlhbGl6ZVRlc3QsIEZBSUxTX0NTU1Jlc291cmNl
cykKIAogICAgIC8vIFRoZSBmaXJzdCByZXNvdXJjZSBzaG91bGQgYmUgdGhlIG1haW4tZnJhbWUu
CiAgICAgY29uc3QgV2ViUGFnZVNlcmlhbGl6ZXI6OlJlc291cmNlJiByZXNvdXJjZSA9IHJlc291
cmNlc1swXTsKLSAgICBFWFBFQ1RfVFJVRShyZXNvdXJjZS51cmwgPT0gR1VSTCgiaHR0cDovL3d3
dy50ZXN0LmNvbSIpKTsKKyAgICBFWFBFQ1RfVFJVRShyZXNvdXJjZS51cmwgPT0gV2ViVVJMKHRv
S1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbSIpKSk7CiAgICAgRVhQRUNUX0VRKDAsIHJlc291cmNl
Lm1pbWVUeXBlLmNvbXBhcmUoV2ViQ1N0cmluZygidGV4dC9odG1sIikpKTsKICAgICBFWFBFQ1Rf
RkFMU0UocmVzb3VyY2UuZGF0YS5pc0VtcHR5KCkpOwogCkBAIC0yNDksMTEgKzIzOSwxMSBAQCBU
RVNUX0YoV2ViUGFnZU5ld1NlcmlhbGl6ZVRlc3QsIEZBSUxTX0NTU1Jlc291cmNlcykKIFRFU1Rf
RihXZWJQYWdlTmV3U2VyaWFsaXplVGVzdCwgQmxhbmtGcmFtZXMpCiB7CiAgICAgLy8gUmVnaXN0
ZXIgdGhlIG1vY2tlZCBmcmFtZSBhbmQgbG9hZCBpdC4KLSAgICBXZWJVUkwgdG9wRnJhbWVVUkwg
PSBHVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tIik7Ci0gICAgcmVnaXN0ZXJNb2NrZWRVUkxMb2Fk
KHRvcEZyYW1lVVJMLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJibGFua19mcmFtZXMuaHRtbCIpLCBo
dG1sTWltZVR5cGUoKSk7Ci0gICAgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKEdVUkwoImh0dHA6Ly93
d3cudGVzdC5jb20vcmVkX2JhY2tncm91bmQucG5nIiksIFdlYlN0cmluZzo6ZnJvbVVURjgoInJl
ZF9iYWNrZ3JvdW5kLnBuZyIpLCBwbmdNaW1lVHlwZSgpKTsKLSAgICByZWdpc3Rlck1vY2tlZFVS
TExvYWQoR1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbS9vcmFuZ2VfYmFja2dyb3VuZC5wbmciKSwg
V2ViU3RyaW5nOjpmcm9tVVRGOCgib3JhbmdlX2JhY2tncm91bmQucG5nIiksIHBuZ01pbWVUeXBl
KCkpOwotICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZChHVVJMKCJodHRwOi8vd3d3LnRlc3QuY29t
L2JsdWVfYmFja2dyb3VuZC5wbmciKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgiYmx1ZV9iYWNrZ3Jv
dW5kLnBuZyIpLCBwbmdNaW1lVHlwZSgpKTsKKyAgICBXZWJVUkwgdG9wRnJhbWVVUkwgPSB0b0tV
UkwoImh0dHA6Ly93d3cudGVzdC5jb20iKTsKKyAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQodG9w
RnJhbWVVUkwsIFdlYlN0cmluZzo6ZnJvbVVURjgoImJsYW5rX2ZyYW1lcy5odG1sIiksIFdlYlN0
cmluZzo6ZnJvbVVURjgoInBhZ2VzZXJpYWxpemVyLyIpLCBodG1sTWltZVR5cGUoKSk7CisgICAg
cmVnaXN0ZXJNb2NrZWRVUkxMb2FkKHRvS1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbS9yZWRfYmFj
a2dyb3VuZC5wbmciKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgicmVkX2JhY2tncm91bmQucG5nIiks
IFdlYlN0cmluZzo6ZnJvbVVURjgoInBhZ2VzZXJpYWxpemVyLyIpLCBwbmdNaW1lVHlwZSgpKTsK
KyAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQodG9LVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tL29y
YW5nZV9iYWNrZ3JvdW5kLnBuZyIpLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJvcmFuZ2VfYmFja2dy
b3VuZC5wbmciKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgicGFnZXNlcmlhbGl6ZXIvIiksIHBuZ01p
bWVUeXBlKCkpOworICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZCh0b0tVUkwoImh0dHA6Ly93d3cu
dGVzdC5jb20vYmx1ZV9iYWNrZ3JvdW5kLnBuZyIpLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJibHVl
X2JhY2tncm91bmQucG5nIiksIFdlYlN0cmluZzo6ZnJvbVVURjgoInBhZ2VzZXJpYWxpemVyLyIp
LCBwbmdNaW1lVHlwZSgpKTsKIAogICAgIGxvYWRVUkxJblRvcEZyYW1lKHRvcEZyYW1lVVJMKTsK
IApAQCAtMjYzLDcgKzI1Myw3IEBAIFRFU1RfRihXZWJQYWdlTmV3U2VyaWFsaXplVGVzdCwgQmxh
bmtGcmFtZXMpCiAKICAgICAvLyBUaGUgZmlyc3QgcmVzb3VyY2Ugc2hvdWxkIGJlIHRoZSBtYWlu
LWZyYW1lLgogICAgIGNvbnN0IFdlYlBhZ2VTZXJpYWxpemVyOjpSZXNvdXJjZSYgcmVzb3VyY2Ug
PSByZXNvdXJjZXNbMF07Ci0gICAgRVhQRUNUX1RSVUUocmVzb3VyY2UudXJsID09IEdVUkwoImh0
dHA6Ly93d3cudGVzdC5jb20iKSk7CisgICAgRVhQRUNUX1RSVUUocmVzb3VyY2UudXJsID09IFdl
YlVSTCh0b0tVUkwoImh0dHA6Ly93d3cudGVzdC5jb20iKSkpOwogICAgIEVYUEVDVF9FUSgwLCBy
ZXNvdXJjZS5taW1lVHlwZS5jb21wYXJlKFdlYkNTdHJpbmcoInRleHQvaHRtbCIpKSk7CiAgICAg
RVhQRUNUX0ZBTFNFKHJlc291cmNlLmRhdGEuaXNFbXB0eSgpKTsKIApAQCAtMjc5LDggKzI2OSw4
IEBAIFRFU1RfRihXZWJQYWdlTmV3U2VyaWFsaXplVGVzdCwgQmxhbmtGcmFtZXMpCiAKIFRFU1Rf
RihXZWJQYWdlTmV3U2VyaWFsaXplVGVzdCwgU2VyaWFsaXplWE1MSGFzUmlnaHREZWNsYXJhdGlv
bikKIHsKLSAgICBXZWJVUkwgdG9wRnJhbWVVUkwgPSBHVVJMKCJodHRwOi8vd3d3LnRlc3QuY29t
L3NpbXBsZS54aHRtbCIpOwotICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZCh0b3BGcmFtZVVSTCwg
V2ViU3RyaW5nOjpmcm9tVVRGOCgic2ltcGxlLnhodG1sIiksIHhodG1sTWltZVR5cGUoKSk7Cisg
ICAgV2ViVVJMIHRvcEZyYW1lVVJMID0gdG9LVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tL3NpbXBs
ZS54aHRtbCIpOworICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZCh0b3BGcmFtZVVSTCwgV2ViU3Ry
aW5nOjpmcm9tVVRGOCgic2ltcGxlLnhodG1sIiksIFdlYlN0cmluZzo6ZnJvbVVURjgoInBhZ2Vz
ZXJpYWxpemVyLyIpLCB4aHRtbE1pbWVUeXBlKCkpOwogCiAgICAgbG9hZFVSTEluVG9wRnJhbWUo
dG9wRnJhbWVVUkwpOwogCkBAIC0yOTAsNyArMjgwLDcgQEAgVEVTVF9GKFdlYlBhZ2VOZXdTZXJp
YWxpemVUZXN0LCBTZXJpYWxpemVYTUxIYXNSaWdodERlY2xhcmF0aW9uKQogCiAgICAgLy8gV2Ug
ZXhwZWN0IG9ubHkgb25lIHJlc291cmNlLCB0aGUgWE1MLgogICAgIEFTU0VSVF9FUSgxVSwgcmVz
b3VyY2VzLnNpemUoKSk7Ci0gICAgc3RkOjpzdHJpbmcgeG1sID0gcmVzb3VyY2VzWzBdLmRhdGE7
CisgICAgc3RkOjpzdHJpbmcgeG1sID0gc3RkOjpzdHJpbmcocmVzb3VyY2VzWzBdLmRhdGEuZGF0
YSgpKTsKIAogICAgIC8vIFdlIHNob3VsZCBoYXZlIG9uZSBhbmQgb25seSBvbmUgaW5zdGFuY2Ug
b2YgdGhlIFhNTCBkZWNsYXJhdGlvbi4KICAgICBzaXplX3QgcG9zID0geG1sLmZpbmQoIjw/eG1s
IHZlcnNpb249Iik7CkBAIC0zMTAsNyArMzAwLDcgQEAgVEVTVF9GKFdlYlBhZ2VOZXdTZXJpYWxp
emVUZXN0LCBGQUlMU19UZXN0TUhUTUxFbmNvZGluZykKICAgICBBU1NFUlRfRkFMU0UobWh0bWxE
YXRhLmlzRW1wdHkoKSk7CiAKICAgICAvLyBSZWFkIHRoZSBNSFRNTCBkYXRhIGxpbmUgcGVyIGxp
bmUgYW5kIGRvIHNvbWUgcHNldWRvLXBhcnNpbmcgdG8gbWFrZSBzdXJlIHRoZSByaWdodCBlbmNv
ZGluZyBpcyB1c2VkIGZvciB0aGUgZGlmZmVyZW50IHNlY3Rpb25zLgotICAgIExpbmVSZWFkZXIg
bGluZVJlYWRlcihtaHRtbERhdGEpOworICAgIExpbmVSZWFkZXIgbGluZVJlYWRlcihzdGQ6OnN0
cmluZyhtaHRtbERhdGEuZGF0YSgpKSk7CiAgICAgaW50IHNlY3Rpb25DaGVja2VkQ291bnQgPSAw
OwogICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkRW5jb2RpbmcgPSAwOwogICAgIHN0ZDo6c3RyaW5n
IGxpbmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlBhZ2VT
ZXJpYWxpemVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlBhZ2VT
ZXJpYWxpemVyVGVzdC5jcHAKaW5kZXggYWEwYzZkYzJhODc0ZWM0Yjc5ODQzZTcwMjFiY2RjZTYz
YjM2MTE2My4uZmViNWY3ZjZmMzljZGViNzlmYWY1NDBhMDI3NTdhMTMxYTBhNGIwMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJQYWdlU2VyaWFsaXplclRlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViUGFnZVNlcmlhbGl6ZXJU
ZXN0LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IldlYlBhZ2VTZXJpYWxpemVyLmgiCiAKKyNpbmNsdWRlICJVUkxUZXN0SGVscGVycy5oIgogI2lu
Y2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVDbGllbnQuaCIKICNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKQEAgLTM5LDExICs0MCwxMSBAQAogI2luY2x1ZGUgInBs
YXRmb3JtL1dlYlVSTFJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiV2ViVmlldy5oIgogCi0jaW5jbHVk
ZSA8Z29vZ2xldXJsL3NyYy9ndXJsLmg+CiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KICNpbmNs
dWRlIDx3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwordXNpbmcgV2ViS2l0OjpVUkxUZXN0SGVscGVyczo6dG9LVVJMOwogCiBuYW1lc3Bh
Y2UgewogCkBAIC03MywyMiArNzQsMTYgQEAgcHJvdGVjdGVkOgogICAgICAgICBtX3dlYlZpZXct
PmNsb3NlKCk7CiAgICAgfQogCi0gICAgdm9pZCByZWdpc3Rlck1vY2tlZFVSTExvYWQoY29uc3Qg
V2ViVVJMJiB1cmwsIGNvbnN0IFdlYlN0cmluZyYgZmlsZU5hbWUpCisgICAgdm9pZCByZWdpc3Rl
ck1vY2tlZFVSTExvYWQoY29uc3Qgc3RkOjpzdHJpbmcmIHVybCwgY29uc3QgV2ViU3RyaW5nJiBm
aWxlTmFtZSkKICAgICB7Ci0gICAgICAgIFdlYlVSTFJlc3BvbnNlIHJlc3BvbnNlOwotICAgICAg
ICByZXNwb25zZS5pbml0aWFsaXplKCk7Ci0gICAgICAgIHJlc3BvbnNlLnNldE1JTUVUeXBlKCJ0
ZXh0L2h0bWwiKTsKLSAgICAgICAgc3RkOjpzdHJpbmcgZmlsZVBhdGggPSB3ZWJraXRfc3VwcG9y
dDo6R2V0V2ViS2l0Um9vdERpcigpLnV0ZjgoKTsKLSAgICAgICAgZmlsZVBhdGguYXBwZW5kKCIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL3BhZ2VzZXJpYWxpemF0aW9uLyIpOwot
ICAgICAgICBmaWxlUGF0aC5hcHBlbmQoZmlsZU5hbWUudXRmOCgpKTsKLSAgICAgICAgd2Via2l0
X3N1cHBvcnQ6OlJlZ2lzdGVyTW9ja2VkVVJMKHVybCwgcmVzcG9uc2UsIFdlYlN0cmluZzo6ZnJv
bVVURjgoZmlsZVBhdGgpKTsKKyAgICAgICAgVVJMVGVzdEhlbHBlcnM6OnJlZ2lzdGVyTW9ja2Vk
VVJMTG9hZCh0b0tVUkwodXJsKSwgZmlsZU5hbWUsIFdlYlN0cmluZzo6ZnJvbVVURjgoInBhZ2Vz
ZXJpYWxpemF0aW9uLyIpLCBXZWJTdHJpbmc6OmZyb21VVEY4KCJ0ZXh0L2h0bWwiKSk7CiAgICAg
fQogCi0gICAgdm9pZCBsb2FkVVJMSW5Ub3BGcmFtZShjb25zdCBHVVJMJiB1cmwpCisgICAgdm9p
ZCBsb2FkVVJMSW5Ub3BGcmFtZShjb25zdCBXZWJVUkwmIHVybCkKICAgICB7CiAgICAgICAgIFdl
YlVSTFJlcXVlc3QgdXJsUmVxdWVzdDsKICAgICAgICAgdXJsUmVxdWVzdC5pbml0aWFsaXplKCk7
Ci0gICAgICAgIHVybFJlcXVlc3Quc2V0VVJMKFdlYlVSTCh1cmwpKTsKKyAgICAgICAgdXJsUmVx
dWVzdC5zZXRVUkwodXJsKTsKICAgICAgICAgbV93ZWJWaWV3LT5tYWluRnJhbWUoKS0+bG9hZFJl
cXVlc3QodXJsUmVxdWVzdCk7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSBhbnkgcGVuZGluZyByZXF1
ZXN0IGdldCBzZXJ2ZWQuCiAgICAgICAgIHdlYmtpdF9zdXBwb3J0OjpTZXJ2ZUFzeW5jaHJvbm91
c01vY2tlZFJlcXVlc3RzKCk7CkBAIC05Niw3ICs5MSw3IEBAIHByb3RlY3RlZDoKIAogICAgIHN0
YXRpYyBib29sIHdlYlZlY3RvckNvbnRhaW5zKGNvbnN0IFdlYlZlY3RvcjxXZWJVUkw+JiB2ZWN0
b3IsIGNvbnN0IGNoYXIqIHVybCkKICAgICB7Ci0gICAgICAgIHJldHVybiB2ZWN0b3IuY29udGFp
bnMoV2ViVVJMKEdVUkwodXJsKSkpOworICAgICAgICByZXR1cm4gdmVjdG9yLmNvbnRhaW5zKFdl
YlVSTCh0b0tVUkwoc3RkOjpzdHJpbmcodXJsKSkpKTsKICAgICB9CiAKICAgICAvLyBVc2VmdWwg
Zm9yIGRlYnVnZ2luZy4KQEAgLTExNiw4ICsxMTEsOCBAQCBwcml2YXRlOgogVEVTVF9GKFdlYlBh
Z2VTZXJpYWxpemVyVGVzdCwgSFRNTE5vZGVzKQogewogICAgIC8vIFJlZ2lzdGVyIHRoZSBtb2Nr
ZWQgZnJhbWUgYW5kIGxvYWQgaXQuCi0gICAgV2ViVVJMIHRvcEZyYW1lVVJMID0gR1VSTCgiaHR0
cDovL3d3dy50ZXN0LmNvbSIpOwotICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZCh0b3BGcmFtZVVS
TCwgV2ViU3RyaW5nOjpmcm9tVVRGOCgic2ltcGxlX3BhZ2UuaHRtbCIpKTsKKyAgICBXZWJVUkwg
dG9wRnJhbWVVUkwgPSB0b0tVUkwoImh0dHA6Ly93d3cudGVzdC5jb20iKTsKKyAgICByZWdpc3Rl
ck1vY2tlZFVSTExvYWQoImh0dHA6Ly93d3cudGVzdC5jb20iLCBXZWJTdHJpbmc6OmZyb21VVEY4
KCJzaW1wbGVfcGFnZS5odG1sIikpOwogICAgIGxvYWRVUkxJblRvcEZyYW1lKHRvcEZyYW1lVVJM
KTsKIAogICAgIC8vIFJldHJpZXZlIGFsbCByZXNvdXJjZXMuCkBAIC0xNTAsMTggKzE0NSwxOCBA
QCBURVNUX0YoV2ViUGFnZVNlcmlhbGl6ZXJUZXN0LCBIVE1MTm9kZXMpCiBURVNUX0YoV2ViUGFn
ZVNlcmlhbGl6ZXJUZXN0LCBNdWx0aXBsZUZyYW1lcykKIHsKICAgICAvLyBSZWdpc3RlciB0aGUg
bW9ja2VkIGZyYW1lcy4KLSAgICBXZWJVUkwgdG9wRnJhbWVVUkwgPSBHVVJMKCJodHRwOi8vd3d3
LnRlc3QuY29tIik7Ci0gICAgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKHRvcEZyYW1lVVJMLCBXZWJT
dHJpbmc6OmZyb21VVEY4KCJ0b3BfZnJhbWUuaHRtbCIpKTsKLSAgICByZWdpc3Rlck1vY2tlZFVS
TExvYWQoR1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbS9zaW1wbGVfaWZyYW1lLmh0bWwiKSwKKyAg
ICBXZWJVUkwgdG9wRnJhbWVVUkwgPSB0b0tVUkwoImh0dHA6Ly93d3cudGVzdC5jb20iKTsKKyAg
ICByZWdpc3Rlck1vY2tlZFVSTExvYWQoImh0dHA6Ly93d3cudGVzdC5jb20iLCBXZWJTdHJpbmc6
OmZyb21VVEY4KCJ0b3BfZnJhbWUuaHRtbCIpKTsKKyAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQo
Imh0dHA6Ly93d3cudGVzdC5jb20vc2ltcGxlX2lmcmFtZS5odG1sIiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV2ViU3RyaW5nOjpmcm9tVVRGOCgic2ltcGxlX2lmcmFtZS5odG1sIikpOwot
ICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZChHVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tL29iamVj
dF9pZnJhbWUuaHRtbCIpLAorICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZCgiaHR0cDovL3d3dy50
ZXN0LmNvbS9vYmplY3RfaWZyYW1lLmh0bWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBX
ZWJTdHJpbmc6OmZyb21VVEY4KCJvYmplY3RfaWZyYW1lLmh0bWwiKSk7Ci0gICAgcmVnaXN0ZXJN
b2NrZWRVUkxMb2FkKEdVUkwoImh0dHA6Ly93d3cudGVzdC5jb20vZW1iZWRfaWZyYW1lLmh0bWwi
KSwKKyAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQoImh0dHA6Ly93d3cudGVzdC5jb20vZW1iZWRf
aWZyYW1lLmh0bWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJTdHJpbmc6OmZyb21V
VEY4KCJlbWJlZF9pZnJhbWUuaHRtbCIpKTsKICAgICAvLyBJZiB3ZSBkb24ndCByZWdpc3RlciBh
IG1vY2tlZCByZXNvdXJjZSBmb3IgYXdlc29tZS5wbmcsIGl0IGNhdXNlcyB0aGUKICAgICAvLyBk
b2N1bWVudCBsb2FkZXIgb2YgdGhlIGlmcmFtZSB0aGF0IGhhcyBpdCBhcyBpdHMgc3JjIHRvIGFz
c2VydCBvbiBjbG9zZSwKICAgICAvLyBub3Qgc3VyZSB3aHkuCi0gICAgcmVnaXN0ZXJNb2NrZWRV
UkxMb2FkKEdVUkwoImh0dHA6Ly93d3cudGVzdC5jb20vYXdlc29tZS5wbmciKSwKKyAgICByZWdp
c3Rlck1vY2tlZFVSTExvYWQoImh0dHA6Ly93d3cudGVzdC5jb20vYXdlc29tZS5wbmciLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICBXZWJTdHJpbmc6OmZyb21VVEY4KCJhd2Vzb21lLnBuZyIp
KTsKIAogICAgIGxvYWRVUkxJblRvcEZyYW1lKHRvcEZyYW1lVVJMKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViVmlld1Rlc3QuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9XZWJWaWV3VGVzdC5jcHAKaW5kZXggNzkwMzcyMWQ5NzZiNGEzMGZm
OWJhNjFlNmY5ZTU1OThkYThlNmFlYy4uMzNjZTJmNzBjMDQ3MjdiZTZiOGJmNmIxYmY2ZWQwZmZk
Yzc2YTFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJWaWV3
VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJWaWV3VGVzdC5j
cHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJGcmFtZVRlc3RIZWxwZXJzLmgiCiAjaW5j
bHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCisjaW5jbHVkZSAi
VVJMVGVzdEhlbHBlcnMuaCIKICNpbmNsdWRlICJXZWJEb2N1bWVudC5oIgogI2luY2x1ZGUgIldl
YkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVDbGllbnQuaCIKQEAgLTQyLDExICs0MywxMSBA
QAogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlNpemUuaCIKICNpbmNsdWRlICJXZWJWaWV3Q2xpZW50
LmgiCiAjaW5jbHVkZSAiV2ViVmlld0ltcGwuaCIKLSNpbmNsdWRlIDxnb29nbGV1cmwvc3JjL2d1
cmwuaD4KICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdC9zdXBwb3J0
L3dlYmtpdF9zdXBwb3J0Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBXZWJL
aXQ6OlVSTFRlc3RIZWxwZXJzOjp0b0tVUkw7CiAKIG5hbWVzcGFjZSB7CiAKQEAgLTE0MCw3ICsx
NDEsNyBAQCBwcm90ZWN0ZWQ6CiAKIFRFU1RfRihXZWJWaWV3VGVzdCwgRm9jdXNJc0luYWN0aXZl
KQogewotICAgIEZyYW1lVGVzdEhlbHBlcnM6OnJlZ2lzdGVyTW9ja2VkVVJMTG9hZChtX2Jhc2VV
UkwsICJ2aXNpYmxlX2lmcmFtZS5odG1sIik7CisgICAgVVJMVGVzdEhlbHBlcnM6OnJlZ2lzdGVy
TW9ja2VkVVJMRnJvbUJhc2VVUkwoV2ViU3RyaW5nOjpmcm9tVVRGOChtX2Jhc2VVUkwuY19zdHIo
KSksICJ2aXNpYmxlX2lmcmFtZS5odG1sIik7CiAgICAgV2ViVmlldyogd2ViVmlldyA9IEZyYW1l
VGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJ2aXNpYmxlX2lm
cmFtZS5odG1sIik7CiAKICAgICB3ZWJWaWV3LT5zZXRGb2N1cyh0cnVlKTsKQEAgLTE2OCw3ICsx
NjksNyBAQCBURVNUX0YoV2ViVmlld1Rlc3QsIEZvY3VzSXNJbmFjdGl2ZSkKIAogVEVTVF9GKFdl
YlZpZXdUZXN0LCBBY3RpdmVTdGF0ZSkKIHsKLSAgICBGcmFtZVRlc3RIZWxwZXJzOjpyZWdpc3Rl
ck1vY2tlZFVSTExvYWQobV9iYXNlVVJMLCAidmlzaWJsZV9pZnJhbWUuaHRtbCIpOworICAgIFVS
TFRlc3RIZWxwZXJzOjpyZWdpc3Rlck1vY2tlZFVSTEZyb21CYXNlVVJMKFdlYlN0cmluZzo6ZnJv
bVVURjgobV9iYXNlVVJMLmNfc3RyKCkpLCAidmlzaWJsZV9pZnJhbWUuaHRtbCIpOwogICAgIFdl
YlZpZXcqIHdlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZCht
X2Jhc2VVUkwgKyAidmlzaWJsZV9pZnJhbWUuaHRtbCIpOwogCiAgICAgQVNTRVJUX1RSVUUod2Vi
Vmlldyk7CkBAIC0xOTIsNyArMTkzLDcgQEAgdm9pZCBXZWJWaWV3VGVzdDo6dGVzdEF1dG9SZXNp
emUoY29uc3QgV2ViU2l6ZSYgbWluQXV0b1Jlc2l6ZSwgY29uc3QgV2ViU2l6ZSYgbWEKIHsKICAg
ICBBdXRvUmVzaXplV2ViVmlld0NsaWVudCBjbGllbnQ7CiAgICAgc3RkOjpzdHJpbmcgdXJsID0g
bV9iYXNlVVJMICsgInNwZWNpZnlfc2l6ZS5odG1sPyIgKyBwYWdlV2lkdGggKyAiOiIgKyBwYWdl
SGVpZ2h0OwotICAgIEZyYW1lVGVzdEhlbHBlcnM6OnJlZ2lzdGVyTW9ja2VkVVJMTG9hZChHVVJM
KHVybCksICJzcGVjaWZ5X3NpemUuaHRtbCIpOworICAgIFVSTFRlc3RIZWxwZXJzOjpyZWdpc3Rl
ck1vY2tlZFVSTExvYWQodG9LVVJMKHVybCksICJzcGVjaWZ5X3NpemUuaHRtbCIpOwogICAgIFdl
YlZpZXcqIHdlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZCh1
cmwsIHRydWUsIDAsICZjbGllbnQpOwogICAgIGNsaWVudC50ZXN0RGF0YSgpLnNldFdlYlZpZXco
d2ViVmlldyk7CiAKQEAgLTI5MSw3ICsyOTIsNyBAQCBURVNUX0YoV2ViVmlld1Rlc3QsIEF1dG9S
ZXNpemVNYXhTaXplKQogCiB2b2lkIFdlYlZpZXdUZXN0Ojp0ZXN0VGV4dElucHV0VHlwZShXZWJU
ZXh0SW5wdXRUeXBlIGV4cGVjdGVkVHlwZSwgY29uc3Qgc3RkOjpzdHJpbmcmIGh0bWxGaWxlKQog
ewotICAgIEZyYW1lVGVzdEhlbHBlcnM6OnJlZ2lzdGVyTW9ja2VkVVJMTG9hZChtX2Jhc2VVUkws
IGh0bWxGaWxlKTsKKyAgICBVUkxUZXN0SGVscGVyczo6cmVnaXN0ZXJNb2NrZWRVUkxGcm9tQmFz
ZVVSTChXZWJTdHJpbmc6OmZyb21VVEY4KG1fYmFzZVVSTC5jX3N0cigpKSwgV2ViU3RyaW5nOjpm
cm9tVVRGOChodG1sRmlsZS5jX3N0cigpKSk7CiAgICAgV2ViVmlldyogd2ViVmlldyA9IEZyYW1l
VGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArIGh0bWxGaWxlKTsK
ICAgICB3ZWJWaWV3LT5zZXRJbml0aWFsRm9jdXMoZmFsc2UpOwogICAgIEVYUEVDVF9FUShleHBl
Y3RlZFR5cGUsIHdlYlZpZXctPnRleHRJbnB1dFR5cGUoKSk7CkBAIC0zMzEsNyArMzMyLDcgQEAg
VEVTVF9GKFdlYlZpZXdUZXN0LCBESVNBQkxFRF9UZXh0SW5wdXRUeXBlKQogCiBURVNUX0YoV2Vi
Vmlld1Rlc3QsIFNldEVkaXRhYmxlU2VsZWN0aW9uT2Zmc2V0c0FuZFRleHRJbnB1dEluZm8pCiB7
Ci0gICAgRnJhbWVUZXN0SGVscGVyczo6cmVnaXN0ZXJNb2NrZWRVUkxMb2FkKG1fYmFzZVVSTCwg
ImlucHV0X2ZpZWxkX3BvcHVsYXRlZC5odG1sIik7CisgICAgVVJMVGVzdEhlbHBlcnM6OnJlZ2lz
dGVyTW9ja2VkVVJMRnJvbUJhc2VVUkwoV2ViU3RyaW5nOjpmcm9tVVRGOChtX2Jhc2VVUkwuY19z
dHIoKSksIFdlYlN0cmluZzo6ZnJvbVVURjgoImlucHV0X2ZpZWxkX3BvcHVsYXRlZC5odG1sIikp
OwogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3
QW5kTG9hZChtX2Jhc2VVUkwgKyAiaW5wdXRfZmllbGRfcG9wdWxhdGVkLmh0bWwiKTsKICAgICB3
ZWJWaWV3LT5zZXRJbml0aWFsRm9jdXMoZmFsc2UpOwogICAgIHdlYlZpZXctPnNldEVkaXRhYmxl
U2VsZWN0aW9uT2Zmc2V0cyg1LCAxMyk7CkBAIC0zNDUsNyArMzQ2LDcgQEAgVEVTVF9GKFdlYlZp
ZXdUZXN0LCBTZXRFZGl0YWJsZVNlbGVjdGlvbk9mZnNldHNBbmRUZXh0SW5wdXRJbmZvKQogICAg
IEVYUEVDVF9FUSgtMSwgaW5mby5jb21wb3NpdGlvbkVuZCk7CiAgICAgd2ViVmlldy0+Y2xvc2Uo
KTsKIAotICAgIEZyYW1lVGVzdEhlbHBlcnM6OnJlZ2lzdGVyTW9ja2VkVVJMTG9hZChtX2Jhc2VV
UkwsICJjb250ZW50X2VkaXRhYmxlX3BvcHVsYXRlZC5odG1sIik7CisgICAgVVJMVGVzdEhlbHBl
cnM6OnJlZ2lzdGVyTW9ja2VkVVJMRnJvbUJhc2VVUkwoV2ViU3RyaW5nOjpmcm9tVVRGOChtX2Jh
c2VVUkwuY19zdHIoKSksIFdlYlN0cmluZzo6ZnJvbVVURjgoImNvbnRlbnRfZWRpdGFibGVfcG9w
dWxhdGVkLmh0bWwiKSk7CiAgICAgd2ViVmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdl
YlZpZXdBbmRMb2FkKG1fYmFzZVVSTCArICJjb250ZW50X2VkaXRhYmxlX3BvcHVsYXRlZC5odG1s
Iik7CiAgICAgd2ViVmlldy0+c2V0SW5pdGlhbEZvY3VzKGZhbHNlKTsKICAgICB3ZWJWaWV3LT5z
ZXRFZGl0YWJsZVNlbGVjdGlvbk9mZnNldHMoOCwgMTkpOwpAQCAtMzY0LDEyICszNjUsMTIgQEAg
VEVTVF9GKFdlYlZpZXdUZXN0LCBGb3JtQ2hhbmdlKQogewogICAgIEZvcm1DaGFuZ2VXZWJWaWV3
Q2xpZW50IGNsaWVudDsKICAgICBjbGllbnQucmVzZXQoKTsKLSAgICBGcmFtZVRlc3RIZWxwZXJz
OjpyZWdpc3Rlck1vY2tlZFVSTExvYWQobV9iYXNlVVJMLCAiaW5wdXRfZmllbGRfc2V0X3ZhbHVl
X3doaWxlX2ZvY3VzZWQuaHRtbCIpOworICAgIFVSTFRlc3RIZWxwZXJzOjpyZWdpc3Rlck1vY2tl
ZFVSTEZyb21CYXNlVVJMKFdlYlN0cmluZzo6ZnJvbVVURjgobV9iYXNlVVJMLmNfc3RyKCkpLCBX
ZWJTdHJpbmc6OmZyb21VVEY4KCJpbnB1dF9maWVsZF9zZXRfdmFsdWVfd2hpbGVfZm9jdXNlZC5o
dG1sIikpOwogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVX
ZWJWaWV3QW5kTG9hZChtX2Jhc2VVUkwgKyAiaW5wdXRfZmllbGRfc2V0X3ZhbHVlX3doaWxlX2Zv
Y3VzZWQuaHRtbCIsIHRydWUsIDAsICZjbGllbnQpOwogICAgIEVYUEVDVF9UUlVFKGNsaWVudC5j
YWxsZWQoKSk7CiAgICAgRVhQRUNUX1RSVUUoY2xpZW50LmZvY3VzZWQoKSk7CiAgICAgY2xpZW50
LnJlc2V0KCk7Ci0gICAgRnJhbWVUZXN0SGVscGVyczo6cmVnaXN0ZXJNb2NrZWRVUkxMb2FkKG1f
YmFzZVVSTCwgImlucHV0X2ZpZWxkX3NldF92YWx1ZV93aGlsZV9ub3RfZm9jdXNlZC5odG1sIik7
CisgICAgVVJMVGVzdEhlbHBlcnM6OnJlZ2lzdGVyTW9ja2VkVVJMRnJvbUJhc2VVUkwoV2ViU3Ry
aW5nOjpmcm9tVVRGOChtX2Jhc2VVUkwuY19zdHIoKSksIFdlYlN0cmluZzo6ZnJvbVVURjgoImlu
cHV0X2ZpZWxkX3NldF92YWx1ZV93aGlsZV9ub3RfZm9jdXNlZC5odG1sIikpOwogICAgIHdlYlZp
ZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChtX2Jhc2VVUkwgKyAi
aW5wdXRfZmllbGRfc2V0X3ZhbHVlX3doaWxlX25vdF9mb2N1c2VkLmh0bWwiLCB0cnVlLCAwLCAm
Y2xpZW50KTsKICAgICBFWFBFQ1RfVFJVRShjbGllbnQuY2FsbGVkKCkpOwogICAgIEVYUEVDVF9G
QUxTRShjbGllbnQuZm9jdXNlZCgpKTsK
</data>
<flag name="review"
          id="160243"
          type_id="1"
          status="+"
          setter="enne"
    />
          </attachment>
      

    </bug>

</bugzilla>