<?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>103841</bug_id>
          
          <creation_ts>2012-12-02 13:25:19 -0800</creation_ts>
          <short_desc>[chromium] move WebPreferences and methods for modifying them to the TestRunner library</short_desc>
          <delta_ts>2012-12-04 13:01:35 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>91308</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter>jochen</reporter>
          <assigned_to>jochen</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>jochen</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>781009</commentid>
    <comment_count>0</comment_count>
    <who name="">jochen</who>
    <bug_when>2012-12-02 13:25:19 -0800</bug_when>
    <thetext>[chromium] move WebPreferences and methods for modifying them to the TestRunner library</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781010</commentid>
    <comment_count>1</comment_count>
      <attachid>177150</attachid>
    <who name="">jochen</who>
    <bug_when>2012-12-02 13:25:43 -0800</bug_when>
    <thetext>Created attachment 177150
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781091</commentid>
    <comment_count>2</comment_count>
      <attachid>177150</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-12-02 19:40:09 -0800</bug_when>
    <thetext>Comment on attachment 177150
Patch

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

&gt; Tools/DumpRenderTree/chromium/TestRunner/public/WebPreferences.h:45
&gt; +struct WebPreferences {

I&apos;m not sure I follow why WebPreferences is exposed as part of the API.  It seems like it should be an implementation detail of the TestRunner library.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781230</commentid>
    <comment_count>3</comment_count>
    <who name="">jochen</who>
    <bug_when>2012-12-03 01:44:19 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 177150 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=177150&amp;action=review
&gt; 
&gt; &gt; Tools/DumpRenderTree/chromium/TestRunner/public/WebPreferences.h:45
&gt; &gt; +struct WebPreferences {
&gt; 
&gt; I&apos;m not sure I follow why WebPreferences is exposed as part of the API.  It seems like it should be an implementation detail of the TestRunner library.

The embedder needs the same preferences Tod create new wwindow (which happens out of process in chrome)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781633</commentid>
    <comment_count>4</comment_count>
      <attachid>177150</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-12-03 10:46:31 -0800</bug_when>
    <thetext>Comment on attachment 177150
Patch

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

&gt;&gt;&gt; Tools/DumpRenderTree/chromium/TestRunner/public/WebPreferences.h:45
&gt;&gt;&gt; +struct WebPreferences {
&gt;&gt; 
&gt;&gt; I&apos;m not sure I follow why WebPreferences is exposed as part of the API.  It seems like it should be an implementation detail of the TestRunner library.
&gt; 
&gt; The embedder needs the same preferences Tod create new wwindow (which happens out of process in chrome)

How is this WebPreferences different from the webkit_glue::WebPreferences?

Would it also work to have the embedder use a WebSettings directly and pass that to WebTestRunner?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781650</commentid>
    <comment_count>5</comment_count>
      <attachid>177150</attachid>
    <who name="">jochen</who>
    <bug_when>2012-12-03 10:56:40 -0800</bug_when>
    <thetext>Comment on attachment 177150
Patch

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

&gt;&gt;&gt;&gt; Tools/DumpRenderTree/chromium/TestRunner/public/WebPreferences.h:45
&gt;&gt;&gt;&gt; +struct WebPreferences {
&gt;&gt;&gt; 
&gt;&gt;&gt; I&apos;m not sure I follow why WebPreferences is exposed as part of the API.  It seems like it should be an implementation detail of the TestRunner library.
&gt;&gt; 
&gt;&gt; The embedder needs the same preferences Tod create new wwindow (which happens out of process in chrome)
&gt; 
&gt; How is this WebPreferences different from the webkit_glue::WebPreferences?
&gt; 
&gt; Would it also work to have the embedder use a WebSettings directly and pass that to WebTestRunner?

They differ by the defaults they set.

The WebSettings have no nice way to set the script font family map. Also, WebSettings is just an interface, so the embedder would need to implement it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781663</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-12-03 11:05:13 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; (From update of attachment 177150 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=177150&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Tools/DumpRenderTree/chromium/TestRunner/public/WebPreferences.h:45
&gt; &gt; &gt; +struct WebPreferences {
&gt; &gt; 
&gt; &gt; I&apos;m not sure I follow why WebPreferences is exposed as part of the API.  It seems like it should be an implementation detail of the TestRunner library.
&gt; 
&gt; The embedder needs the same preferences Tod create new wwindow (which happens out of process in chrome)

Ah, that makes sense.

I wonder if we should have a way to serialize and deserialize the (opaque) state from the TestRunner library without exposing all the implementation details.  The goal would be to avoid having to write a Chromium patch whenever we add more things to this list.

Another option would be to force window.open to always be in-process for LayoutTests.  I imagine that&apos;s what LayoutTests expect today given that DumpRenderTree and WebKitTestRunner both only have one web process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782335</commentid>
    <comment_count>7</comment_count>
      <attachid>177437</attachid>
    <who name="">jochen</who>
    <bug_when>2012-12-04 00:49:40 -0800</bug_when>
    <thetext>Created attachment 177437
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782337</commentid>
    <comment_count>8</comment_count>
    <who name="">jochen</who>
    <bug_when>2012-12-04 00:52:35 -0800</bug_when>
    <thetext>Rebased on ToT.

Darin, can you take a look please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782340</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-04 00:54:17 -0800</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>782811</commentid>
    <comment_count>10</comment_count>
      <attachid>177437</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-04 12:36:26 -0800</bug_when>
    <thetext>Comment on attachment 177437
Patch

Rejecting attachment 177437 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:
ripts/update-webkit line 152.

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;, &apos;--chromium&apos;, &apos;--force-update&apos;]&quot; exit_code: 2
Updating OpenSource
From http://git.chromium.org/external/Webkit
   9cffc45..e9d9059  HEAD       -&gt; origin/HEAD
error: Ref refs/remotes/origin/master is at e9d90592d3ba8ebe3e8a5ae811eea04f2940e996 but expected 9cffc451c10239895188285fa8cdb2dbd36f385d
 ! 9cffc45..e9d9059  master     -&gt; origin/master  (unable to update local ref)
Died at Tools/Scripts/update-webkit line 152.

Full output: http://queues.webkit.org/results/15148154</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782829</commentid>
    <comment_count>11</comment_count>
      <attachid>177437</attachid>
    <who name="">jochen</who>
    <bug_when>2012-12-04 13:01:30 -0800</bug_when>
    <thetext>Comment on attachment 177437
Patch

Clearing flags on attachment: 177437

Committed r136552: &lt;http://trac.webkit.org/changeset/136552&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782830</commentid>
    <comment_count>12</comment_count>
    <who name="">jochen</who>
    <bug_when>2012-12-04 13:01:35 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177150</attachid>
            <date>2012-12-02 13:25:43 -0800</date>
            <delta_ts>2012-12-04 00:49:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103841-20121202222311.patch</filename>
            <type>text/plain</type>
            <size>78459</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MTA2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOWQ4M2MyMzg4YzE4Yjk1OGNjNzk5YTBlNmFhMzgwM2Qw
ZDBjYmYwYS4uZWRkYTA0ZDIzYzRlZjAxY2YzMzM0NzJjMTdhMGE4MmMxNjYyOGYxNiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5
IEBACisyMDEyLTEyLTAyICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtjaHJvbWl1bV0gbW92ZSBXZWJQcmVmZXJlbmNlcyBhbmQgbWV0aG9kcyBmb3Ig
bW9kaWZ5aW5nIHRoZW0gdG8gdGhlIFRlc3RSdW5uZXIgbGlicmFyeQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzODQxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVu
ZGVyVHJlZS5neXBpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RS
dW5uZXIuY3BwOgorICAgICAgICAoRFJUVGVzdFJ1bm5lcjo6RFJUVGVzdFJ1bm5lcik6CisgICAg
ICAgIChEUlRUZXN0UnVubmVyOjpyZXNldCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vRFJUVGVzdFJ1bm5lci5oOgorICAgICAgICAoRFJUVGVzdFJ1bm5lcik6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViUHJlZmVyZW5j
ZXMuaDogUmVuYW1lZCBmcm9tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlByZWZl
cmVuY2VzLmguCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcik6Cisg
ICAgICAgIChXZWJQcmVmZXJlbmNlcyk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJQcmVm
ZXJlbmNlczo6V2ViUHJlZmVyZW5jZXMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3REZWxlZ2F0ZS5oOgorICAgICAgICAoV2ViVGVz
dFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0RGVsZWdhdGUpOgorICAgICAgICAoV2ViVGVzdFJ1
bm5lcjo6V2ViVGVzdERlbGVnYXRlOjpsb2NhbEZpbGVUb0RhdGFVUkwpOgorICAgICAgICAoV2Vi
VGVzdFJ1bm5lcjo6V2ViVGVzdERlbGVnYXRlOjpyZXdyaXRlTGF5b3V0VGVzdHNVUkwpOgorICAg
ICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdERlbGVnYXRlOjpwcmVmZXJlbmNlcyk6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0RGVsZWdhdGU6OmFwcGx5UHJlZmVyZW5jZXMpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5u
ZXIuY3BwOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcik6
CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpyZXNldCk6CisgICAgICAgIChX
ZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQpOgorICAg
ICAgICAoV2ViVGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVy
OjpzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRl
c3RSdW5uZXI6OnNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKToKKyAgICAgICAgKFdlYlRl
c3RSdW5uZXI6OlRlc3RSdW5uZXI6OnNldFBvcHVwQmxvY2tpbmdFbmFibGVkKToKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OnNldEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9h
cmQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6c2V0WFNTQXVkaXRvckVu
YWJsZWQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6c2V0QWxsb3dVbml2
ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1
bm5lcjo6c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKToKKyAgICAgICAgKFdlYlRlc3RS
dW5uZXI6OlRlc3RSdW5uZXI6Om92ZXJyaWRlUHJlZmVyZW5jZSk6CisgICAgICAgIChXZWJUZXN0
UnVubmVyOjpUZXN0UnVubmVyOjpzZXRQbHVnaW5zRW5hYmxlZCk6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oOgorICAgICAgICAo
VGVzdFJ1bm5lcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9zcmMvV2ViUHJlZmVyZW5jZXMuY3BwOiBSZW5hbWVkIGZyb20gVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViUHJlZmVyZW5jZXMuY3BwLgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6
V2ViUHJlZmVyZW5jZXM6OnJlc2V0KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgorICAgICAg
ICAoV2ViVGVzdFJ1bm5lcjo6V2ViUHJlZmVyZW5jZXM6OmFwcGx5VG8pOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5oOgorICAgICAgICAoVGVzdFNoZWxsOjpw
cmVmZXJlbmNlcyk6CisgICAgICAgIChUZXN0U2hlbGwpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAgICAgICAgKFdlYlZpZXdIb3N0Ojpsb2Nh
bEZpbGVUb0RhdGFVUkwpOgorICAgICAgICAoV2ViVmlld0hvc3Q6OnJld3JpdGVMYXlvdXRUZXN0
c1VSTCk6CisgICAgICAgIChXZWJWaWV3SG9zdDo6cHJlZmVyZW5jZXMpOgorICAgICAgICAoV2Vi
Vmlld0hvc3Q6OmFwcGx5UHJlZmVyZW5jZXMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1dlYlZpZXdIb3N0Lmg6CisgICAgICAgIChXZWJWaWV3SG9zdCk6CisKIDIwMTItMTEt
MjkgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIHJ1bi1wZXJmLXRl
c3RzIGRvZXMgbm90IHdvcmsgd2hlbiB0aGUgbGF5b3V0IHRlc3QgZGlyZWN0b3J5IGRvZXMgbm90
IGV4aXN0CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5n
eXBpIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQppbmRleCBhYzRk
MmE2MjJiZWUwN2FiNjZlZjgyMmE5N2ZiMzRhYTNjZmVjYWZiLi5kMzcyZmFjZmNjMjExNjA4MGVk
YjdmYmM3ZjQwMzA3OWJlNjEwMjZkIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9E
dW1wUmVuZGVyVHJlZS5neXBpCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJU
cmVlLmd5cGkKQEAgLTQ4LDggKzQ4LDYgQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0V2Vi
UGx1Z2luLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1dlYlBlcm1pc3Npb25zLmNwcCcsCiAg
ICAgICAgICAgICAnY2hyb21pdW0vV2ViUGVybWlzc2lvbnMuaCcsCi0gICAgICAgICAgICAnY2hy
b21pdW0vV2ViUHJlZmVyZW5jZXMuY3BwJywKLSAgICAgICAgICAgICdjaHJvbWl1bS9XZWJQcmVm
ZXJlbmNlcy5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9XZWJUaGVtZUNvbnRyb2xEUlRXaW4u
Y3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9XZWJUaGVtZUNvbnRyb2xEUlRXaW4uaCcsCiAg
ICAgICAgICAgICAnY2hyb21pdW0vV2ViVGhlbWVFbmdpbmVEUlRNYWMubW0nLApAQCAtNjksNiAr
NjcsNyBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYkFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIv
cHVibGljL1dlYlRlc3REZWxlZ2F0ZS5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVu
bmVyL3B1YmxpYy9XZWJFdmVudFNlbmRlci5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0
UnVubmVyL3B1YmxpYy9XZWJQcmVmZXJlbmNlcy5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9U
ZXN0UnVubmVyL3B1YmxpYy9XZWJUYXNrLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RS
dW5uZXIvcHVibGljL1dlYlRlc3RJbnRlcmZhY2VzLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVt
L1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RQcm94eS5oJywKQEAgLTk0LDYgKzkzLDcgQEAKICAg
ICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmgnLAogICAgICAg
ICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYkFjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViRXZlbnRTZW5k
ZXIuY3BwJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJQcmVmZXJl
bmNlcy5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRhc2su
Y3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0SW50ZXJm
YWNlcy5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RQ
cm94eS5jcHAnLApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJU
VGVzdFJ1bm5lci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVu
bmVyLmNwcAppbmRleCBlMjI1NWM3OTNiNzAwZDhhMDdkMzRkNjZhNDU1NjgxNWZmZjg0ZjVhLi4y
ZWYwMmFhYTI1N2I4Y2NlODJiOTBmY2JhM2EzNjBhMDZkOTM0ZGI2IDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmNwcApAQCAtMTUzLDcgKzE1Myw2
IEBAIERSVFRlc3RSdW5uZXI6OkRSVFRlc3RSdW5uZXIoVGVzdFNoZWxsKiBzaGVsbCkKICNlbmRp
ZgogICAgIGJpbmRNZXRob2QoIm5vdGlmeURvbmUiLCAmRFJUVGVzdFJ1bm5lcjo6bm90aWZ5RG9u
ZSk7CiAgICAgYmluZE1ldGhvZCgibnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdHMiLCAmRFJUVGVzdFJ1bm5lcjo6IG51bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RzKTsKLSAgICBiaW5kTWV0aG9kKCJvdmVycmlkZVByZWZlcmVuY2UiLCAm
RFJUVGVzdFJ1bm5lcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKTsKICAgICBiaW5kTWV0aG9kKCJwYXRo
VG9Mb2NhbFJlc291cmNlIiwgJkRSVFRlc3RSdW5uZXI6OnBhdGhUb0xvY2FsUmVzb3VyY2UpOwog
ICAgIGJpbmRNZXRob2QoInF1ZXVlQmFja05hdmlnYXRpb24iLCAmRFJUVGVzdFJ1bm5lcjo6cXVl
dWVCYWNrTmF2aWdhdGlvbik7CiAgICAgYmluZE1ldGhvZCgicXVldWVGb3J3YXJkTmF2aWdhdGlv
biIsICZEUlRUZXN0UnVubmVyOjpxdWV1ZUZvcndhcmROYXZpZ2F0aW9uKTsKQEAgLTE2NCwxMSAr
MTYzLDggQEAgRFJUVGVzdFJ1bm5lcjo6RFJUVGVzdFJ1bm5lcihUZXN0U2hlbGwqIHNoZWxsKQog
ICAgIGJpbmRNZXRob2QoInF1ZXVlUmVsb2FkIiwgJkRSVFRlc3RSdW5uZXI6OnF1ZXVlUmVsb2Fk
KTsKICAgICBiaW5kTWV0aG9kKCJyZXBhaW50U3dlZXBIb3Jpem9udGFsbHkiLCAmRFJUVGVzdFJ1
bm5lcjo6cmVwYWludFN3ZWVwSG9yaXpvbnRhbGx5KTsKICAgICBiaW5kTWV0aG9kKCJzZXRBbGxv
d0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudCIsICZEUlRUZXN0UnVubmVyOjpzZXRBbGxvd0Rpc3Bs
YXlPZkluc2VjdXJlQ29udGVudCk7Ci0gICAgYmluZE1ldGhvZCgic2V0QWxsb3dGaWxlQWNjZXNz
RnJvbUZpbGVVUkxzIiwgJkRSVFRlc3RSdW5uZXI6OnNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxl
VVJMcyk7CiAgICAgYmluZE1ldGhvZCgic2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQi
LCAmRFJUVGVzdFJ1bm5lcjo6c2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQpOwotICAg
IGJpbmRNZXRob2QoInNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzIiwgJkRSVFRl
c3RSdW5uZXI6OnNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKTsKICAgICBiaW5k
TWV0aG9kKCJzZXRBbHdheXNBY2NlcHRDb29raWVzIiwgJkRSVFRlc3RSdW5uZXI6OnNldEFsd2F5
c0FjY2VwdENvb2tpZXMpOwotICAgIGJpbmRNZXRob2QoInNldEF1dGhvckFuZFVzZXJTdHlsZXNF
bmFibGVkIiwgJkRSVFRlc3RSdW5uZXI6OnNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKTsK
ICAgICBiaW5kTWV0aG9kKCJzZXRDYW5PcGVuV2luZG93cyIsICZEUlRUZXN0UnVubmVyOjpzZXRD
YW5PcGVuV2luZG93cyk7CiAgICAgYmluZE1ldGhvZCgic2V0Q2xvc2VSZW1haW5pbmdXaW5kb3dz
V2hlbkNvbXBsZXRlIiwgJkRSVFRlc3RSdW5uZXI6OnNldENsb3NlUmVtYWluaW5nV2luZG93c1do
ZW5Db21wbGV0ZSk7CiAgICAgYmluZE1ldGhvZCgic2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUiLCAm
RFJUVGVzdFJ1bm5lcjo6c2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUpOwpAQCAtMTc2LDI5ICsxNzIs
MjMgQEAgRFJUVGVzdFJ1bm5lcjo6RFJUVGVzdFJ1bm5lcihUZXN0U2hlbGwqIHNoZWxsKQogICAg
IGJpbmRNZXRob2QoInNldERlZmVyTWFpblJlc291cmNlRGF0YUxvYWQiLCAmRFJUVGVzdFJ1bm5l
cjo6c2V0RGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZCk7CiAgICAgYmluZE1ldGhvZCgic2V0QXVk
aW9EYXRhIiwgJkRSVFRlc3RSdW5uZXI6OnNldEF1ZGlvRGF0YSk7CiAgICAgYmluZE1ldGhvZCgi
c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uIiwgJkRSVFRlc3RSdW5uZXI6OnNldEdlb2xvY2F0aW9u
UGVybWlzc2lvbik7Ci0gICAgYmluZE1ldGhvZCgic2V0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBi
b2FyZCIsICZEUlRUZXN0UnVubmVyOjpzZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKTsK
ICAgICBiaW5kTWV0aG9kKCJzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24iLCAmRFJUVGVzdFJ1bm5l
cjo6c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKTsKICAgICBiaW5kTWV0aG9kKCJzZXRNb2NrR2Vv
bG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IiLCAmRFJUVGVzdFJ1bm5lcjo6c2V0TW9j
a0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKTsKICAgICBiaW5kTWV0aG9kKCJz
ZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbiIsICZEUlRUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9j
YXRpb25Qb3NpdGlvbik7Ci0gICAgYmluZE1ldGhvZCgic2V0UGx1Z2luc0VuYWJsZWQiLCAmRFJU
VGVzdFJ1bm5lcjo6c2V0UGx1Z2luc0VuYWJsZWQpOwogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0sp
CiAgICAgYmluZE1ldGhvZCgic2V0UG9pbnRlckxvY2tXaWxsUmVzcG9uZEFzeW5jaHJvbm91c2x5
IiwgJkRSVFRlc3RSdW5uZXI6OnNldFBvaW50ZXJMb2NrV2lsbFJlc3BvbmRBc3luY2hyb25vdXNs
eSk7CiAgICAgYmluZE1ldGhvZCgic2V0UG9pbnRlckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHki
LCAmRFJUVGVzdFJ1bm5lcjo6c2V0UG9pbnRlckxvY2tXaWxsRmFpbFN5bmNocm9ub3VzbHkpOwog
I2VuZGlmCi0gICAgYmluZE1ldGhvZCgic2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQiLCAmRFJUVGVz
dFJ1bm5lcjo6c2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQpOwogICAgIGJpbmRNZXRob2QoInNldFBP
U0lYTG9jYWxlIiwgJkRSVFRlc3RSdW5uZXI6OnNldFBPU0lYTG9jYWxlKTsKICAgICBiaW5kTWV0
aG9kKCJzZXRQcmludGluZyIsICZEUlRUZXN0UnVubmVyOjpzZXRQcmludGluZyk7CiAgICAgYmlu
ZE1ldGhvZCgic2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCIsICZEUlRUZXN0UnVu
bmVyOjpzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKTsKICAgICBiaW5kTWV0aG9k
KCJzZXRCYWNraW5nU2NhbGVGYWN0b3IiLCAmRFJUVGVzdFJ1bm5lcjo6c2V0QmFja2luZ1NjYWxl
RmFjdG9yKTsKICAgICBiaW5kTWV0aG9kKCJzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQiLCAm
RFJUVGVzdFJ1bm5lcjo6c2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKTsKICAgICBiaW5kTWV0
aG9kKCJzZXRTdG9wUHJvdmlzaW9uYWxGcmFtZUxvYWRzIiwgJkRSVFRlc3RSdW5uZXI6OnNldFN0
b3BQcm92aXNpb25hbEZyYW1lTG9hZHMpOwotICAgIGJpbmRNZXRob2QoInNldFVzZXJTdHlsZVNo
ZWV0RW5hYmxlZCIsICZEUlRUZXN0UnVubmVyOjpzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQpOwot
ICAgIGJpbmRNZXRob2QoInNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24iLCAmRFJUVGVzdFJ1bm5l
cjo6c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbik7CiAgICAgYmluZE1ldGhvZCgic2V0V2lsbFNl
bmRSZXF1ZXN0Q2xlYXJIZWFkZXIiLCAmRFJUVGVzdFJ1bm5lcjo6c2V0V2lsbFNlbmRSZXF1ZXN0
Q2xlYXJIZWFkZXIpOwogICAgIGJpbmRNZXRob2QoInNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNO
dWxsIiwgJkRSVFRlc3RSdW5uZXI6OnNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsKTsKICAg
ICBiaW5kTWV0aG9kKCJzZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbE9uUmVkaXJlY3QiLCAm
RFJUVGVzdFJ1bm5lcjo6c2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGxPblJlZGlyZWN0KTsK
ICAgICBiaW5kTWV0aG9kKCJzZXRXaW5kb3dJc0tleSIsICZEUlRUZXN0UnVubmVyOjpzZXRXaW5k
b3dJc0tleSk7Ci0gICAgYmluZE1ldGhvZCgic2V0WFNTQXVkaXRvckVuYWJsZWQiLCAmRFJUVGVz
dFJ1bm5lcjo6c2V0WFNTQXVkaXRvckVuYWJsZWQpOwogICAgIGJpbmRNZXRob2QoInNob3dXZWJJ
bnNwZWN0b3IiLCAmRFJUVGVzdFJ1bm5lcjo6c2hvd1dlYkluc3BlY3Rvcik7CiAjaWYgRU5BQkxF
KE5PVElGSUNBVElPTlMpCiAgICAgYmluZE1ldGhvZCgic2ltdWxhdGVMZWdhY3lXZWJOb3RpZmlj
YXRpb25DbGljayIsICZEUlRUZXN0UnVubmVyOjpzaW11bGF0ZUxlZ2FjeVdlYk5vdGlmaWNhdGlv
bkNsaWNrKTsKQEAgLTU4Miw3ICs1NzIsNiBAQCB2b2lkIERSVFRlc3RSdW5uZXI6OnJlc2V0KCkK
ICAgICBtX3dlYkhpc3RvcnlJdGVtQ291bnQuc2V0KDApOwogICAgIG1fdGl0bGVUZXh0RGlyZWN0
aW9uLnNldCgibHRyIik7CiAgICAgbV9pbnRlcmNlcHRQb3N0TWVzc2FnZS5zZXQoZmFsc2UpOwot
ICAgIG1fdXNlclN0eWxlU2hlZXRMb2NhdGlvbiA9IFdlYlVSTCgpOwogICAgIG1faXNQcmludGlu
ZyA9IGZhbHNlOwogCiAgICAgd2Via2l0X3N1cHBvcnQ6OlNldEFjY2VwdEFsbENvb2tpZXMoZmFs
c2UpOwpAQCAtNjYzLDQ1ICs2NTIsNiBAQCB2b2lkIERSVFRlc3RSdW5uZXI6OnNldFdpbmRvd0lz
S2V5KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KgogICAgIHJl
c3VsdC0+c2V0TnVsbCgpOwogfQogCi12b2lkIERSVFRlc3RSdW5uZXI6OnNldFVzZXJTdHlsZVNo
ZWV0RW5hYmxlZChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCog
cmVzdWx0KQotewotICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0u
aXNCb29sKCkpIHsKLSAgICAgICAgbV9zaGVsbC0+cHJlZmVyZW5jZXMoKS0+dXNlclN0eWxlU2hl
ZXRMb2NhdGlvbiA9IGFyZ3VtZW50c1swXS52YWx1ZS5ib29sVmFsdWUgPyBtX3VzZXJTdHlsZVNo
ZWV0TG9jYXRpb24gOiBXZWJVUkwoKTsKLSAgICAgICAgbV9zaGVsbC0+YXBwbHlQcmVmZXJlbmNl
cygpOwotICAgIH0KLSAgICByZXN1bHQtPnNldE51bGwoKTsKLX0KLQotdm9pZCBEUlRUZXN0UnVu
bmVyOjpzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJn
dW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCi17Ci0gICAgaWYgKGFyZ3VtZW50cy5zaXplKCkg
PiAwICYmIGFyZ3VtZW50c1swXS5pc1N0cmluZygpKSB7Ci0gICAgICAgIG1fdXNlclN0eWxlU2hl
ZXRMb2NhdGlvbiA9IHdlYmtpdF9zdXBwb3J0OjpMb2NhbEZpbGVUb0RhdGFVUkwoCi0gICAgICAg
ICAgICB3ZWJraXRfc3VwcG9ydDo6UmV3cml0ZUxheW91dFRlc3RzVVJMKGFyZ3VtZW50c1swXS50
b1N0cmluZygpKSk7Ci0gICAgICAgIG1fc2hlbGwtPnByZWZlcmVuY2VzKCktPnVzZXJTdHlsZVNo
ZWV0TG9jYXRpb24gPSBtX3VzZXJTdHlsZVNoZWV0TG9jYXRpb247Ci0gICAgICAgIG1fc2hlbGwt
PmFwcGx5UHJlZmVyZW5jZXMoKTsKLSAgICB9Ci0gICAgcmVzdWx0LT5zZXROdWxsKCk7Ci19Ci0K
LXZvaWQgRFJUVGVzdFJ1bm5lcjo6c2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoY29uc3Qg
Q3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKLXsKLSAgICBp
ZiAoYXJndW1lbnRzLnNpemUoKSA+IDAgJiYgYXJndW1lbnRzWzBdLmlzQm9vbCgpKSB7Ci0gICAg
ICAgIG1fc2hlbGwtPnByZWZlcmVuY2VzKCktPmF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkID0g
YXJndW1lbnRzWzBdLnZhbHVlLmJvb2xWYWx1ZTsKLSAgICAgICAgbV9zaGVsbC0+YXBwbHlQcmVm
ZXJlbmNlcygpOwotICAgIH0KLSAgICByZXN1bHQtPnNldE51bGwoKTsKLX0KLQotdm9pZCBEUlRU
ZXN0UnVubmVyOjpzZXRQb3B1cEJsb2NraW5nRW5hYmxlZChjb25zdCBDcHBBcmd1bWVudExpc3Qm
IGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQotewotICAgIGlmIChhcmd1bWVudHMuc2l6
ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0uaXNCb29sKCkpIHsKLSAgICAgICAgYm9vbCBibG9ja1Bv
cHVwcyA9IGFyZ3VtZW50c1swXS50b0Jvb2xlYW4oKTsKLSAgICAgICAgbV9zaGVsbC0+cHJlZmVy
ZW5jZXMoKS0+amF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseSA9ICFibG9ja1Bv
cHVwczsKLSAgICAgICAgbV9zaGVsbC0+YXBwbHlQcmVmZXJlbmNlcygpOwotICAgIH0KLSAgICBy
ZXN1bHQtPnNldE51bGwoKTsKLX0KLQogdm9pZCBEUlRUZXN0UnVubmVyOjpzZXRJbWFnZXNBbGxv
d2VkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQp
CiB7CiAgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPiAwICYmIGFyZ3VtZW50c1swXS5pc0Jvb2wo
KSkKQEAgLTkzNiwzMyArODg2LDYgQEAgdm9pZCBEUlRUZXN0UnVubmVyOjpyZXBhaW50U3dlZXBI
b3Jpem9udGFsbHkoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCoKICAgICByZXN1
bHQtPnNldE51bGwoKTsKIH0KIAotdm9pZCBEUlRUZXN0UnVubmVyOjpzZXRKYXZhU2NyaXB0Q2Fu
QWNjZXNzQ2xpcGJvYXJkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJp
YW50KiByZXN1bHQpCi17Ci0gICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPiAwICYmIGFyZ3VtZW50
c1swXS5pc0Jvb2woKSkgewotICAgICAgICBtX3NoZWxsLT5wcmVmZXJlbmNlcygpLT5qYXZhU2Ny
aXB0Q2FuQWNjZXNzQ2xpcGJvYXJkID0gYXJndW1lbnRzWzBdLnZhbHVlLmJvb2xWYWx1ZTsKLSAg
ICAgICAgbV9zaGVsbC0+YXBwbHlQcmVmZXJlbmNlcygpOwotICAgIH0KLSAgICByZXN1bHQtPnNl
dE51bGwoKTsKLX0KLQotdm9pZCBEUlRUZXN0UnVubmVyOjpzZXRYU1NBdWRpdG9yRW5hYmxlZChj
b25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQotewot
ICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0uaXNCb29sKCkpIHsK
LSAgICAgICAgbV9zaGVsbC0+cHJlZmVyZW5jZXMoKS0+WFNTQXVkaXRvckVuYWJsZWQgPSBhcmd1
bWVudHNbMF0udmFsdWUuYm9vbFZhbHVlOwotICAgICAgICBtX3NoZWxsLT5hcHBseVByZWZlcmVu
Y2VzKCk7Ci0gICAgfQotICAgIHJlc3VsdC0+c2V0TnVsbCgpOwotfQotCi12b2lkIERSVFRlc3RS
dW5uZXI6OnNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKGNvbnN0IENwcEFyZ3Vt
ZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCi17Ci0gICAgaWYgKGFyZ3Vt
ZW50cy5zaXplKCkgPiAwICYmIGFyZ3VtZW50c1swXS5pc0Jvb2woKSkgewotICAgICAgICBtX3No
ZWxsLT5wcmVmZXJlbmNlcygpLT5hbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyA9IGFy
Z3VtZW50c1swXS52YWx1ZS5ib29sVmFsdWU7Ci0gICAgICAgIG1fc2hlbGwtPmFwcGx5UHJlZmVy
ZW5jZXMoKTsKLSAgICB9Ci0gICAgcmVzdWx0LT5zZXROdWxsKCk7Ci19Ci0KIHZvaWQgRFJUVGVz
dFJ1bm5lcjo6c2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQoY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICBpZiAoYXJndW1l
bnRzLnNpemUoKSA+IDAgJiYgYXJndW1lbnRzWzBdLmlzQm9vbCgpKQpAQCAtOTcxLDE1ICs4OTQs
NiBAQCB2b2lkIERSVFRlc3RSdW5uZXI6OnNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndQogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogfQog
Ci12b2lkIERSVFRlc3RSdW5uZXI6OnNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyhjb25z
dCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQotewotICAg
IGlmIChhcmd1bWVudHMuc2l6ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0uaXNCb29sKCkpIHsKLSAg
ICAgICAgbV9zaGVsbC0+cHJlZmVyZW5jZXMoKS0+YWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxz
ID0gYXJndW1lbnRzWzBdLnZhbHVlLmJvb2xWYWx1ZTsKLSAgICAgICAgbV9zaGVsbC0+YXBwbHlQ
cmVmZXJlbmNlcygpOwotICAgIH0KLSAgICByZXN1bHQtPnNldE51bGwoKTsKLX0KLQogdm9pZCBE
UlRUZXN0UnVubmVyOjpzZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudChjb25zdCBDcHBB
cmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIGlmIChh
cmd1bWVudHMuc2l6ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0uaXNCb29sKCkpCkBAIC05ODgsMTMw
ICs5MDIsNiBAQCB2b2lkIERSVFRlc3RSdW5uZXI6OnNldEFsbG93UnVubmluZ09mSW5zZWN1cmVD
b250ZW50KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndQogICAgIHJlc3VsdC0+c2V0TnVsbCgp
OwogfQogCi0vLyBTZXRzIG1hcCBiYXNlZCBvbiBzY3JpcHRGb250UGFpcnMsIGEgY29sbGFwc2Vk
IHZlY3RvciBvZiBwYWlycyBvZiBJU08gMTU5MjQKLS8vIGZvdXItbGV0dGVyIHNjcmlwdCBjb2Rl
IGFuZCBmb250IHN1Y2ggYXM6Ci0vLyB7ICJBcmFiIiwgIk15IEFyYWJpYyBGb250IiwgIkdyZWsi
LCAiTXkgR3JlZWsgRm9udCIgfQotc3RhdGljIHZvaWQgc2V0Rm9udE1hcChXZWJQcmVmZXJlbmNl
czo6U2NyaXB0Rm9udEZhbWlseU1hcCYgbWFwLCBjb25zdCBWZWN0b3I8V2ViU3RyaW5nPiYgc2Ny
aXB0Rm9udFBhaXJzKQotewotICAgIG1hcC5jbGVhcigpOwotICAgIHNpemVfdCBpID0gMDsKLSAg
ICB3aGlsZSAoaSArIDEgPCBzY3JpcHRGb250UGFpcnMuc2l6ZSgpKSB7Ci0gICAgICAgIGNvbnN0
IFdlYlN0cmluZyYgc2NyaXB0ID0gc2NyaXB0Rm9udFBhaXJzW2krK107Ci0gICAgICAgIGNvbnN0
IFdlYlN0cmluZyYgZm9udCA9IHNjcmlwdEZvbnRQYWlyc1tpKytdOwotCi0gICAgICAgIGludDMy
X3QgY29kZSA9IHVfZ2V0UHJvcGVydHlWYWx1ZUVudW0oVUNIQVJfU0NSSVBULCBzY3JpcHQudXRm
OCgpLmRhdGEoKSk7Ci0gICAgICAgIGlmIChjb2RlID49IDAgJiYgY29kZSA8IFVTQ1JJUFRfQ09E
RV9MSU1JVCkKLSAgICAgICAgICAgIG1hcC5zZXQoc3RhdGljX2Nhc3Q8aW50Pihjb2RlKSwgZm9u
dCk7Ci0gICAgfQotfQotCi12b2lkIERSVFRlc3RSdW5uZXI6Om92ZXJyaWRlUHJlZmVyZW5jZShj
b25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQotewot
ICAgIHJlc3VsdC0+c2V0TnVsbCgpOwotICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpICE9IDIgfHwg
IWFyZ3VtZW50c1swXS5pc1N0cmluZygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzdHJpbmcg
a2V5ID0gYXJndW1lbnRzWzBdLnRvU3RyaW5nKCk7Ci0gICAgQ3BwVmFyaWFudCB2YWx1ZSA9IGFy
Z3VtZW50c1sxXTsKLSAgICBXZWJQcmVmZXJlbmNlcyogcHJlZnMgPSBtX3NoZWxsLT5wcmVmZXJl
bmNlcygpOwotICAgIGlmIChrZXkgPT0gIldlYktpdFN0YW5kYXJkRm9udCIpCi0gICAgICAgIHBy
ZWZzLT5zdGFuZGFyZEZvbnRGYW1pbHkgPSBjcHBWYXJpYW50VG9XZWJTdHJpbmcodmFsdWUpOwot
ICAgIGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0Rml4ZWRGb250IikKLSAgICAgICAgcHJlZnMtPmZp
eGVkRm9udEZhbWlseSA9IGNwcFZhcmlhbnRUb1dlYlN0cmluZyh2YWx1ZSk7Ci0gICAgZWxzZSBp
ZiAoa2V5ID09ICJXZWJLaXRTZXJpZkZvbnQiKQotICAgICAgICBwcmVmcy0+c2VyaWZGb250RmFt
aWx5ID0gY3BwVmFyaWFudFRvV2ViU3RyaW5nKHZhbHVlKTsKLSAgICBlbHNlIGlmIChrZXkgPT0g
IldlYktpdFNhbnNTZXJpZkZvbnQiKQotICAgICAgICBwcmVmcy0+c2Fuc1NlcmlmRm9udEZhbWls
eSA9IGNwcFZhcmlhbnRUb1dlYlN0cmluZyh2YWx1ZSk7Ci0gICAgZWxzZSBpZiAoa2V5ID09ICJX
ZWJLaXRDdXJzaXZlRm9udCIpCi0gICAgICAgIHByZWZzLT5jdXJzaXZlRm9udEZhbWlseSA9IGNw
cFZhcmlhbnRUb1dlYlN0cmluZyh2YWx1ZSk7Ci0gICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXRG
YW50YXN5Rm9udCIpCi0gICAgICAgIHByZWZzLT5mYW50YXN5Rm9udEZhbWlseSA9IGNwcFZhcmlh
bnRUb1dlYlN0cmluZyh2YWx1ZSk7Ci0gICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXRTdGFuZGFy
ZEZvbnRNYXAiKQotICAgICAgICBzZXRGb250TWFwKHByZWZzLT5zdGFuZGFyZEZvbnRNYXAsIGNw
cFZhcmlhbnRUb1dlYlN0cmluZ0FycmF5KHZhbHVlKSk7Ci0gICAgZWxzZSBpZiAoa2V5ID09ICJX
ZWJLaXRGaXhlZEZvbnRNYXAiKQotICAgICAgICBzZXRGb250TWFwKHByZWZzLT5maXhlZEZvbnRN
YXAsIGNwcFZhcmlhbnRUb1dlYlN0cmluZ0FycmF5KHZhbHVlKSk7Ci0gICAgZWxzZSBpZiAoa2V5
ID09ICJXZWJLaXRTZXJpZkZvbnRNYXAiKQotICAgICAgICBzZXRGb250TWFwKHByZWZzLT5zZXJp
ZkZvbnRNYXAsIGNwcFZhcmlhbnRUb1dlYlN0cmluZ0FycmF5KHZhbHVlKSk7Ci0gICAgZWxzZSBp
ZiAoa2V5ID09ICJXZWJLaXRTYW5zU2VyaWZGb250TWFwIikKLSAgICAgICAgc2V0Rm9udE1hcChw
cmVmcy0+c2Fuc1NlcmlmRm9udE1hcCwgY3BwVmFyaWFudFRvV2ViU3RyaW5nQXJyYXkodmFsdWUp
KTsKLSAgICBlbHNlIGlmIChrZXkgPT0gIldlYktpdEN1cnNpdmVGb250TWFwIikKLSAgICAgICAg
c2V0Rm9udE1hcChwcmVmcy0+Y3Vyc2l2ZUZvbnRNYXAsIGNwcFZhcmlhbnRUb1dlYlN0cmluZ0Fy
cmF5KHZhbHVlKSk7Ci0gICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXRGYW50YXN5Rm9udE1hcCIp
Ci0gICAgICAgIHNldEZvbnRNYXAocHJlZnMtPmZhbnRhc3lGb250TWFwLCBjcHBWYXJpYW50VG9X
ZWJTdHJpbmdBcnJheSh2YWx1ZSkpOwotICAgIGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0RGVmYXVs
dEZvbnRTaXplIikKLSAgICAgICAgcHJlZnMtPmRlZmF1bHRGb250U2l6ZSA9IGNwcFZhcmlhbnRU
b0ludDMyKHZhbHVlKTsKLSAgICBlbHNlIGlmIChrZXkgPT0gIldlYktpdERlZmF1bHRGaXhlZEZv
bnRTaXplIikKLSAgICAgICAgcHJlZnMtPmRlZmF1bHRGaXhlZEZvbnRTaXplID0gY3BwVmFyaWFu
dFRvSW50MzIodmFsdWUpOwotICAgIGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0TWluaW11bUZvbnRT
aXplIikKLSAgICAgICAgcHJlZnMtPm1pbmltdW1Gb250U2l6ZSA9IGNwcFZhcmlhbnRUb0ludDMy
KHZhbHVlKTsKLSAgICBlbHNlIGlmIChrZXkgPT0gIldlYktpdE1pbmltdW1Mb2dpY2FsRm9udFNp
emUiKQotICAgICAgICBwcmVmcy0+bWluaW11bUxvZ2ljYWxGb250U2l6ZSA9IGNwcFZhcmlhbnRU
b0ludDMyKHZhbHVlKTsKLSAgICBlbHNlIGlmIChrZXkgPT0gIldlYktpdERlZmF1bHRUZXh0RW5j
b2RpbmdOYW1lIikKLSAgICAgICAgcHJlZnMtPmRlZmF1bHRUZXh0RW5jb2RpbmdOYW1lID0gY3Bw
VmFyaWFudFRvV2ViU3RyaW5nKHZhbHVlKTsKLSAgICBlbHNlIGlmIChrZXkgPT0gIldlYktpdEph
dmFTY3JpcHRFbmFibGVkIikKLSAgICAgICAgcHJlZnMtPmphdmFTY3JpcHRFbmFibGVkID0gY3Bw
VmFyaWFudFRvQm9vbCh2YWx1ZSk7Ci0gICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXRXZWJTZWN1
cml0eUVuYWJsZWQiKQotICAgICAgICBwcmVmcy0+d2ViU2VjdXJpdHlFbmFibGVkID0gY3BwVmFy
aWFudFRvQm9vbCh2YWx1ZSk7Ci0gICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXRKYXZhU2NyaXB0
Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5IikKLSAgICAgICAgcHJlZnMtPmphdmFTY3JpcHRD
YW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkgPSBjcHBWYXJpYW50VG9Cb29sKHZhbHVlKTsKLSAg
ICBlbHNlIGlmIChrZXkgPT0gIldlYktpdFN1cHBvcnRzTXVsdGlwbGVXaW5kb3dzIikKLSAgICAg
ICAgcHJlZnMtPnN1cHBvcnRzTXVsdGlwbGVXaW5kb3dzID0gY3BwVmFyaWFudFRvQm9vbCh2YWx1
ZSk7Ci0gICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXREaXNwbGF5SW1hZ2VzS2V5IikKLSAgICAg
ICAgcHJlZnMtPmxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSA9IGNwcFZhcmlhbnRUb0Jvb2wodmFs
dWUpOwotICAgIGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0UGx1Z2luc0VuYWJsZWQiKQotICAgICAg
ICBwcmVmcy0+cGx1Z2luc0VuYWJsZWQgPSBjcHBWYXJpYW50VG9Cb29sKHZhbHVlKTsKLSAgICBl
bHNlIGlmIChrZXkgPT0gIldlYktpdERPTVBhc3RlQWxsb3dlZFByZWZlcmVuY2VLZXkiKQotICAg
ICAgICBwcmVmcy0+RE9NUGFzdGVBbGxvd2VkID0gY3BwVmFyaWFudFRvQm9vbCh2YWx1ZSk7Ci0g
ICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXREZXZlbG9wZXJFeHRyYXNFbmFibGVkUHJlZmVyZW5j
ZUtleSIpCi0gICAgICAgIHByZWZzLT5kZXZlbG9wZXJFeHRyYXNFbmFibGVkID0gY3BwVmFyaWFu
dFRvQm9vbCh2YWx1ZSk7Ci0gICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXRTaHJpbmtzU3RhbmRh
bG9uZUltYWdlc1RvRml0IikKLSAgICAgICAgcHJlZnMtPnNocmlua3NTdGFuZGFsb25lSW1hZ2Vz
VG9GaXQgPSBjcHBWYXJpYW50VG9Cb29sKHZhbHVlKTsKLSAgICBlbHNlIGlmIChrZXkgPT0gIldl
YktpdFRleHRBcmVhc0FyZVJlc2l6YWJsZSIpCi0gICAgICAgIHByZWZzLT50ZXh0QXJlYXNBcmVS
ZXNpemFibGUgPSBjcHBWYXJpYW50VG9Cb29sKHZhbHVlKTsKLSAgICBlbHNlIGlmIChrZXkgPT0g
IldlYktpdEphdmFFbmFibGVkIikKLSAgICAgICAgcHJlZnMtPmphdmFFbmFibGVkID0gY3BwVmFy
aWFudFRvQm9vbCh2YWx1ZSk7Ci0gICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXRVc2VzUGFnZUNh
Y2hlUHJlZmVyZW5jZUtleSIpCi0gICAgICAgIHByZWZzLT51c2VzUGFnZUNhY2hlID0gY3BwVmFy
aWFudFRvQm9vbCh2YWx1ZSk7Ci0gICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXRQYWdlQ2FjaGVT
dXBwb3J0c1BsdWdpbnNQcmVmZXJlbmNlS2V5IikKLSAgICAgICAgcHJlZnMtPnBhZ2VDYWNoZVN1
cHBvcnRzUGx1Z2lucyA9IGNwcFZhcmlhbnRUb0Jvb2wodmFsdWUpOwotICAgIGVsc2UgaWYgKGtl
eSA9PSAiV2ViS2l0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZCIpCi0gICAgICAgIHByZWZz
LT5qYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkID0gY3BwVmFyaWFudFRvQm9vbCh2YWx1ZSk7
Ci0gICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXRYU1NBdWRpdG9yRW5hYmxlZCIpCi0gICAgICAg
IHByZWZzLT5YU1NBdWRpdG9yRW5hYmxlZCA9IGNwcFZhcmlhbnRUb0Jvb2wodmFsdWUpOwotICAg
IGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0TG9jYWxTdG9yYWdlRW5hYmxlZFByZWZlcmVuY2VLZXki
KQotICAgICAgICBwcmVmcy0+bG9jYWxTdG9yYWdlRW5hYmxlZCA9IGNwcFZhcmlhbnRUb0Jvb2wo
dmFsdWUpOwotICAgIGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0T2ZmbGluZVdlYkFwcGxpY2F0aW9u
Q2FjaGVFbmFibGVkIikKLSAgICAgICAgcHJlZnMtPm9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hl
RW5hYmxlZCA9IGNwcFZhcmlhbnRUb0Jvb2wodmFsdWUpOwotICAgIGVsc2UgaWYgKGtleSA9PSAi
V2ViS2l0VGFiVG9MaW5rc1ByZWZlcmVuY2VLZXkiKQotICAgICAgICBwcmVmcy0+dGFic1RvTGlu
a3MgPSBjcHBWYXJpYW50VG9Cb29sKHZhbHVlKTsKLSAgICBlbHNlIGlmIChrZXkgPT0gIldlYktp
dFdlYkdMRW5hYmxlZCIpCi0gICAgICAgIHByZWZzLT5leHBlcmltZW50YWxXZWJHTEVuYWJsZWQg
PSBjcHBWYXJpYW50VG9Cb29sKHZhbHVlKTsKLSAgICBlbHNlIGlmIChrZXkgPT0gIldlYktpdENT
U1JlZ2lvbnNFbmFibGVkIikKLSAgICAgICAgcHJlZnMtPmV4cGVyaW1lbnRhbENTU1JlZ2lvbnNF
bmFibGVkID0gY3BwVmFyaWFudFRvQm9vbCh2YWx1ZSk7Ci0gICAgZWxzZSBpZiAoa2V5ID09ICJX
ZWJLaXRDU1NHcmlkTGF5b3V0RW5hYmxlZCIpCi0gICAgICAgIHByZWZzLT5leHBlcmltZW50YWxD
U1NHcmlkTGF5b3V0RW5hYmxlZCA9IGNwcFZhcmlhbnRUb0Jvb2wodmFsdWUpOwotICAgIGVsc2Ug
aWYgKGtleSA9PSAiV2ViS2l0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkIikKLSAgICAgICAgcHJl
ZnMtPmh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZCA9IGNwcFZhcmlhbnRUb0Jvb2wodmFsdWUpOwot
ICAgIGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0RW5hYmxlQ2FyZXRCcm93c2luZyIpCi0gICAgICAg
IHByZWZzLT5jYXJldEJyb3dzaW5nRW5hYmxlZCA9IGNwcFZhcmlhbnRUb0Jvb2wodmFsdWUpOwot
ICAgIGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0QWxsb3dEaXNwbGF5aW5nSW5zZWN1cmVDb250ZW50
IikKLSAgICAgICAgcHJlZnMtPmFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50ID0gY3BwVmFy
aWFudFRvQm9vbCh2YWx1ZSk7Ci0gICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXRBbGxvd1J1bm5p
bmdJbnNlY3VyZUNvbnRlbnQiKQotICAgICAgICBwcmVmcy0+YWxsb3dSdW5uaW5nT2ZJbnNlY3Vy
ZUNvbnRlbnQgPSBjcHBWYXJpYW50VG9Cb29sKHZhbHVlKTsKLSAgICBlbHNlIGlmIChrZXkgPT0g
IldlYktpdENTU0N1c3RvbUZpbHRlckVuYWJsZWQiKQotICAgICAgICBwcmVmcy0+Y3NzQ3VzdG9t
RmlsdGVyRW5hYmxlZCA9IGNwcFZhcmlhbnRUb0Jvb2wodmFsdWUpOwotICAgIGVsc2UgaWYgKGtl
eSA9PSAiV2ViS2l0U2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24iKQotICAgICAgICBwcmVm
cy0+c2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24gPSBjcHBWYXJpYW50VG9Cb29sKHZhbHVl
KTsKLSAgICBlbHNlIGlmIChrZXkgPT0gIldlYktpdFdlYkF1ZGlvRW5hYmxlZCIpIHsKLSAgICAg
ICAgQVNTRVJUKGNwcFZhcmlhbnRUb0Jvb2wodmFsdWUpKTsKLSAgICB9IGVsc2UgewotICAgICAg
ICBzdHJpbmcgbWVzc2FnZSgiSW52YWxpZCBuYW1lIGZvciBwcmVmZXJlbmNlOiAiKTsKLSAgICAg
ICAgbWVzc2FnZS5hcHBlbmQoa2V5KTsKLSAgICAgICAgcHJpbnRFcnJvck1lc3NhZ2UobWVzc2Fn
ZSk7Ci0gICAgfQotICAgIG1fc2hlbGwtPmFwcGx5UHJlZmVyZW5jZXMoKTsKLX0KLQogdm9pZCBE
UlRUZXN0UnVubmVyOjpjbGVhckFsbERhdGFiYXNlcyhjb25zdCBDcHBBcmd1bWVudExpc3QmIGFy
Z3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwpA
QCAtMTM0NiwxNSArMTEzNiw2IEBAIHZvaWQgRFJUVGVzdFJ1bm5lcjo6c2V0QmFja2luZ1NjYWxl
RmFjdG9yKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWCiAgICAgcG9zdFRh
c2sobmV3IEludm9rZUNhbGxiYWNrVGFzayh0aGlzLCBjYWxsYmFja0FyZ3VtZW50cy5yZWxlYXNl
KCksIDEpKTsKIH0KIAotdm9pZCBEUlRUZXN0UnVubmVyOjpzZXRQbHVnaW5zRW5hYmxlZChjb25z
dCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQotewotICAg
IGlmIChhcmd1bWVudHMuc2l6ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0uaXNCb29sKCkpIHsKLSAg
ICAgICAgbV9zaGVsbC0+cHJlZmVyZW5jZXMoKS0+cGx1Z2luc0VuYWJsZWQgPSBhcmd1bWVudHNb
MF0udG9Cb29sZWFuKCk7Ci0gICAgICAgIG1fc2hlbGwtPmFwcGx5UHJlZmVyZW5jZXMoKTsKLSAg
ICB9Ci0gICAgcmVzdWx0LT5zZXROdWxsKCk7Ci19Ci0KIHZvaWQgRFJUVGVzdFJ1bm5lcjo6c2V0
QXVkaW9EYXRhKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiBy
ZXN1bHQpCiB7CiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmgKaW5kZXggNDlmMjdjMzZiYzFjNWY3YjhmMjY1NzEy
Yzc1MTVhNjllNDQ1MGU4Zi4uYzE2NmM3ZGEzZDkyNDI1N2IxMDViN2IzYzVjNDFjODk3MjU0YWM5
NCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5l
ci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuaApA
QCAtMTY4LDE0ICsxNjgsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRXaW5kb3dJc0tleShjb25z
dCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKIAotICAgIC8vIFBhc3NlcyB0aHJv
dWdoIHRvIFdlYlByZWZlcmVuY2VzIHdoaWNoIGFsbG93cyB0aGUgdXNlciB0byBoYXZlIGEgY3Vz
dG9tCi0gICAgLy8gc3R5bGUgc2hlZXQuCi0gICAgdm9pZCBzZXRVc2VyU3R5bGVTaGVldEVuYWJs
ZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwotICAgIHZvaWQgc2V0VXNl
clN0eWxlU2hlZXRMb2NhdGlvbihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7
Ci0KLSAgICAvLyBQYXNzZXMgdGhpcyBwcmVmZXJlbmNlIHRocm91Z2ggdG8gV2ViU2V0dGluZ3Mu
Ci0gICAgdm9pZCBzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChjb25zdCBDcHBBcmd1bWVu
dExpc3QmLCBDcHBWYXJpYW50Kik7Ci0KICAgICAvLyBDYXVzZXMgbmF2aWdhdGlvbiBhY3Rpb25z
IGp1c3QgcHJpbnRvdXQgdGhlIGludGVuZGVkIG5hdmlnYXRpb24gaW5zdGVhZAogICAgIC8vIG9m
IHRha2luZyB5b3UgdG8gdGhlIHBhZ2UuIFRoaXMgaXMgdXNlZCBmb3IgY2FzZXMgbGlrZSBtYWls
dG8sIHdoZXJlIHlvdQogICAgIC8vIGRvbid0IGFjdHVhbGx5IHdhbnQgdG8gb3BlbiB0aGUgbWFp
bCBwcm9ncmFtLgpAQCAtMTk2LDkgKzE4OCw2IEBAIHB1YmxpYzoKICAgICAvLyBDb252ZXJ0cyBh
IFVSTCBzdGFydGluZyB3aXRoIGZpbGU6Ly8vdG1wLyB0byB0aGUgbG9jYWwgbWFwcGluZy4KICAg
ICB2b2lkIHBhdGhUb0xvY2FsUmVzb3VyY2UoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFy
aWFudCopOwogCi0gICAgLy8gU2V0IHRoZSBXZWJQcmVmZXJlbmNlIHRoYXQgY29udHJvbHMgd2Vi
a2l0J3MgcG9wdXAgYmxvY2tpbmcuCi0gICAgdm9pZCBzZXRQb3B1cEJsb2NraW5nRW5hYmxlZChj
b25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7Ci0KICAgICAvLyBJZiB0cnVlLCBj
YXVzZXMgcHJvdmlzaW9uYWwgZnJhbWUgbG9hZHMgdG8gYmUgc3RvcHBlZCBmb3IgdGhlIHJlbWFp
bmRlciBvZgogICAgIC8vIHRoZSB0ZXN0LgogICAgIHZvaWQgc2V0U3RvcFByb3Zpc2lvbmFsRnJh
bWVMb2Fkcyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CkBAIC0yMzEsMTUg
KzIyMCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHRlc3RSZXBhaW50KGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICB2b2lkIHJlcGFpbnRTd2VlcEhvcml6b250YWxseShj
b25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKLSAgICB2b2lkIHNldEphdmFT
Y3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFu
dCopOwotICAgIHZvaWQgc2V0WFNTQXVkaXRvckVuYWJsZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiwgQ3BwVmFyaWFudCopOwotICAgIHZvaWQgb3ZlcnJpZGVQcmVmZXJlbmNlKGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKLSAgICB2b2lkIHNldEFsbG93VW5pdmVyc2FsQWNj
ZXNzRnJvbUZpbGVVUkxzKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAg
ICB2b2lkIHNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50KGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYsIENwcFZhcmlhbnQqKTsKLSAgICB2b2lkIHNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxl
VVJMcyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBzZXRB
bGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBW
YXJpYW50Kik7CiAKLQogICAgIC8vIENsZWFycyBhbGwgZGF0YWJhc2VzLgogICAgIHZvaWQgY2xl
YXJBbGxEYXRhYmFzZXMoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAg
IC8vIFNldHMgdGhlIGRlZmF1bHQgcXVvdGEgZm9yIGFsbCBvcmlnaW5zCkBAIC0yODQsOSArMjY3
LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UGx1Z2luc0FsbG93ZWQoY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgZHVtcFBlcm1pc3Npb25DbGllbnRDYWxs
YmFja3MoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCi0gICAgLy8gRW5h
YmxlIG9yIGRpc2FibGUgcGx1Z2lucy4KLSAgICB2b2lkIHNldFBsdWdpbnNFbmFibGVkKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKLQogICAgIHZvaWQgc2V0U2hvdWxkU3Rh
eU9uUGFnZUFmdGVySGFuZGxpbmdCZWZvcmVVbmxvYWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0Jiwg
Q3BwVmFyaWFudCopOwogCiAjaWYgRU5BQkxFKFBPSU5URVJfTE9DSykKQEAgLTU0MCw4ICs1MjAs
NiBAQCBwcml2YXRlOgogICAgIC8vIEJvdW5kIHZhcmlhYmxlIHRvIHNldCB3aGV0aGVyIHBvc3RN
ZXNzYWdlcyBzaG91bGQgYmUgaW50ZXJjZXB0ZWQgb3Igbm90CiAgICAgQ3BwVmFyaWFudCBtX2lu
dGVyY2VwdFBvc3RNZXNzYWdlOwogCi0gICAgV2ViS2l0OjpXZWJVUkwgbV91c2VyU3R5bGVTaGVl
dExvY2F0aW9uOwotCiAgICAgLy8gV0FWIGF1ZGlvIGRhdGEgaXMgc3RvcmVkIGhlcmUuCiAgICAg
V2ViS2l0OjpXZWJBcnJheUJ1ZmZlclZpZXcgbV9hdWRpb0RhdGE7CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlByZWZlcmVu
Y2VzLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9X
ZWJQcmVmZXJlbmNlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1ZDhiMmI5NzQwODM4ZGIwNjVhOTI4NTU3MjI4
NzA5YmRhM2I0MmQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJQcmVmZXJlbmNlcy5oCkBAIC0wLDAgKzEsMTIxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBXZWJQcmVmZXJlbmNlc19oCisjZGVmaW5lIFdlYlByZWZlcmVuY2VzX2gKKworI2lu
Y2x1ZGUgIlBsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJQ
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMLmgiCisjaW5jbHVkZSAiV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oIgorI2luY2x1ZGUgPG1hcD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CitjbGFzcyBXZWJWaWV3OworfQorCituYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CisK
K3N0cnVjdCBXZWJQcmVmZXJlbmNlcyB7CisgICAgV2ViS2l0OjpXZWJTdHJpbmcgc3RhbmRhcmRG
b250RmFtaWx5OworICAgIFdlYktpdDo6V2ViU3RyaW5nIGZpeGVkRm9udEZhbWlseTsKKyAgICBX
ZWJLaXQ6OldlYlN0cmluZyBzZXJpZkZvbnRGYW1pbHk7CisgICAgV2ViS2l0OjpXZWJTdHJpbmcg
c2Fuc1NlcmlmRm9udEZhbWlseTsKKyAgICBXZWJLaXQ6OldlYlN0cmluZyBjdXJzaXZlRm9udEZh
bWlseTsKKyAgICBXZWJLaXQ6OldlYlN0cmluZyBmYW50YXN5Rm9udEZhbWlseTsKKworICAgIC8v
IE1hcCBvZiBVU2NyaXB0Q29kZSB0byBmb250IHN1Y2ggYXMgVVNDUklQVF9BUkFCSUMgdG8gIk15
IEFyYWJpYyBGb250Ii4KKyAgICB0eXBlZGVmIHN0ZDo6bWFwPGludCwgV2ViS2l0OjpXZWJTdHJp
bmc+IFNjcmlwdEZvbnRGYW1pbHlNYXA7CisgICAgU2NyaXB0Rm9udEZhbWlseU1hcCBzdGFuZGFy
ZEZvbnRNYXA7CisgICAgU2NyaXB0Rm9udEZhbWlseU1hcCBmaXhlZEZvbnRNYXA7CisgICAgU2Ny
aXB0Rm9udEZhbWlseU1hcCBzZXJpZkZvbnRNYXA7CisgICAgU2NyaXB0Rm9udEZhbWlseU1hcCBz
YW5zU2VyaWZGb250TWFwOworICAgIFNjcmlwdEZvbnRGYW1pbHlNYXAgY3Vyc2l2ZUZvbnRNYXA7
CisgICAgU2NyaXB0Rm9udEZhbWlseU1hcCBmYW50YXN5Rm9udE1hcDsKKworICAgIGludCBkZWZh
dWx0Rm9udFNpemU7CisgICAgaW50IGRlZmF1bHRGaXhlZEZvbnRTaXplOworICAgIGludCBtaW5p
bXVtRm9udFNpemU7CisgICAgaW50IG1pbmltdW1Mb2dpY2FsRm9udFNpemU7CisgICAgaW50IG1p
bmltdW1BY2NlbGVyYXRlZDJkQ2FudmFzU2l6ZTsKKworICAgIGJvb2wgRE9NUGFzdGVBbGxvd2Vk
OworICAgIGJvb2wgWFNTQXVkaXRvckVuYWJsZWQ7CisgICAgYm9vbCBhbGxvd0Rpc3BsYXlPZklu
c2VjdXJlQ29udGVudDsKKyAgICBib29sIGFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMczsKKyAg
ICBib29sIGFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50OworICAgIGJvb2wgYXV0aG9yQW5k
VXNlclN0eWxlc0VuYWJsZWQ7CisgICAgV2ViS2l0OjpXZWJTdHJpbmcgZGVmYXVsdFRleHRFbmNv
ZGluZ05hbWU7CisgICAgYm9vbCBkZXZlbG9wZXJFeHRyYXNFbmFibGVkOworICAgIGJvb2wgZXhw
ZXJpbWVudGFsV2ViR0xFbmFibGVkOworICAgIGJvb2wgZXhwZXJpbWVudGFsQ1NTUmVnaW9uc0Vu
YWJsZWQ7CisgICAgYm9vbCBleHBlcmltZW50YWxDU1NHcmlkTGF5b3V0RW5hYmxlZDsKKyAgICBi
b29sIGphdmFFbmFibGVkOworICAgIGJvb2wgamF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZDsK
KyAgICBib29sIGphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHk7CisgICAgYm9v
bCBzdXBwb3J0c011bHRpcGxlV2luZG93czsKKyAgICBib29sIGphdmFTY3JpcHRFbmFibGVkOwor
ICAgIGJvb2wgbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5OworICAgIGJvb2wgbG9jYWxTdG9yYWdl
RW5hYmxlZDsKKyAgICBib29sIG9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZDsKKyAg
ICBib29sIHBsdWdpbnNFbmFibGVkOworICAgIGJvb2wgc2hyaW5rc1N0YW5kYWxvbmVJbWFnZXNU
b0ZpdDsKKyAgICBib29sIHRleHRBcmVhc0FyZVJlc2l6YWJsZTsKKyAgICBXZWJLaXQ6OldlYlVS
TCB1c2VyU3R5bGVTaGVldExvY2F0aW9uOworICAgIGJvb2wgdXNlc1BhZ2VDYWNoZTsKKyAgICBi
b29sIHBhZ2VDYWNoZVN1cHBvcnRzUGx1Z2luczsKKyAgICBib29sIHdlYlNlY3VyaXR5RW5hYmxl
ZDsKKyAgICBib29sIGFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzOworICAgIFdlYktp
dDo6V2ViU2V0dGluZ3M6OkVkaXRpbmdCZWhhdmlvciBlZGl0aW5nQmVoYXZpb3I7CisgICAgYm9v
bCB0YWJzVG9MaW5rczsKKyAgICBib29sIGh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZDsKKyAgICBi
b29sIGNhcmV0QnJvd3NpbmdFbmFibGVkOworICAgIGJvb2wgYWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0ZvclZpZGVvRW5hYmxlZDsKKyAgICBib29sIGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JGaXhl
ZFBvc2l0aW9uRW5hYmxlZDsKKyAgICBib29sIGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVk
OworICAgIGJvb2wgZm9yY2VDb21wb3NpdGluZ01vZGU7CisgICAgYm9vbCBhY2NlbGVyYXRlZDJk
Q2FudmFzRW5hYmxlZDsKKyAgICBib29sIGRlZmVycmVkMmRDYW52YXNFbmFibGVkOworICAgIGJv
b2wgYWNjZWxlcmF0ZWRQYWludGluZ0VuYWJsZWQ7CisgICAgYm9vbCBwZXJUaWxlUGFpbnRpbmdF
bmFibGVkOworICAgIGJvb2wgYWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkOworICAgIGJvb2wg
ZGVmZXJyZWRJbWFnZURlY29kaW5nRW5hYmxlZDsKKyAgICBib29sIG1lZGlhUGxheWJhY2tSZXF1
aXJlc1VzZXJHZXN0dXJlOworICAgIGJvb2wgbW9ja1Njcm9sbGJhcnNFbmFibGVkOworICAgIGJv
b2wgY3NzQ3VzdG9tRmlsdGVyRW5hYmxlZDsKKyAgICBib29sIHNob3VsZFJlc3BlY3RJbWFnZU9y
aWVudGF0aW9uOworCisgICAgV2ViUHJlZmVyZW5jZXMoKSB7IHJlc2V0KCk7IH0KKyAgICB2b2lk
IHJlc2V0KCk7CisgICAgdm9pZCBhcHBseVRvKFdlYktpdDo6V2ViVmlldyopOworfTsKKworfQor
CisjZW5kaWYgLy8gV2ViUHJlZmVyZW5jZXNfaApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdERlbGVnYXRlLmggYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0RGVsZWdh
dGUuaAppbmRleCBhYjQ3ZDRmOWRjZWE2ZDdlYzkxOGJkZDFlMmVmNGRlZjJjNTgyZTBlLi42NzBj
MmEyMjI4NmJiYzcwODFjYmI2NWU3MzZiZjM1ZmEyMDJiZWEzIDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0RGVsZWdhdGUu
aAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9X
ZWJUZXN0RGVsZWdhdGUuaApAQCAtMzIsNiArMzIsNyBAQAogI2RlZmluZSBXZWJUZXN0RGVsZWdh
dGVfaAogCiAjaW5jbHVkZSAiUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlN0cmluZy5oIgor
I2luY2x1ZGUgIlBsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJVUkwuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVmVjdG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtNDEsNiArNDIsNyBAQCBjbGFzcyBXZWJHYW1lcGFkczsKIAogbmFtZXNwYWNlIFdlYlRl
c3RSdW5uZXIgewogCitzdHJ1Y3QgV2ViUHJlZmVyZW5jZXM7CiBjbGFzcyBXZWJUYXNrOwogCiBj
bGFzcyBXZWJUZXN0RGVsZWdhdGUgewpAQCAtNjEsNiArNjMsMTQgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgV2ViS2l0OjpXZWJTdHJpbmcgcmVnaXN0ZXJJc29sYXRlZEZpbGVTeXN0ZW0oY29uc3Qg
V2ViS2l0OjpXZWJWZWN0b3I8V2ViS2l0OjpXZWJTdHJpbmc+JiBhYnNvbHV0ZUZpbGVuYW1lcykg
PSAwOwogICAgIHZpcnR1YWwgbG9uZyBsb25nIGdldEN1cnJlbnRUaW1lSW5NaWxsaXNlY29uZCgp
ID0gMDsKICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViU3RyaW5nIGdldEFic29sdXRlV2ViU3RyaW5n
RnJvbVVURjhQYXRoKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoKSA9IDA7CisKKyAgICAvLyBNZXRo
b2RzIHVzZWQgYnkgVGVzdFJ1bm5lci4KKyAgICAvLyBGSVhNRTogTWFrZSB0aGVzZSBtZXRob2Rz
IHB1cmUgdmlydHVhbCBvbmNlIHRoZSBUZXN0UnVubmVyIGlzIHBhcnQgb2YKKyAgICAvLyB0aGUg
cHVibGljIFRlc3RSdW5uZXIgQVBJLgorICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJVUkwgbG9jYWxG
aWxlVG9EYXRhVVJMKGNvbnN0IFdlYktpdDo6V2ViVVJMJikgeyByZXR1cm4gV2ViS2l0OjpXZWJV
UkwoKTsgfQorICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJVUkwgcmV3cml0ZUxheW91dFRlc3RzVVJM
KGNvbnN0IHN0ZDo6c3RyaW5nJikgeyByZXR1cm4gV2ViS2l0OjpXZWJVUkwoKTsgfQorICAgIHZp
cnR1YWwgV2ViUHJlZmVyZW5jZXMqIHByZWZlcmVuY2VzKCkgeyByZXR1cm4gMDsgfQorICAgIHZp
cnR1YWwgdm9pZCBhcHBseVByZWZlcmVuY2VzKCkgeyB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5j
cHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVu
bmVyLmNwcAppbmRleCA4YWE4MTdhMmJkZjZiZGJjYzVmNDIxM2U4ZDZjYmYwN2VkMGY3YjlmLi40
NmU1MjAxMzMxMmQ5MTNlZjNhYWJhNzcyYmQ1NjA5NjNjMzhlNWEyIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmNwcAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVu
bmVyLmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIldlYkZpbmRPcHRpb25zLmgiCiAj
aW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJJbnB1dEVsZW1lbnQuaCIKKyNpbmNs
dWRlICJXZWJQcmVmZXJlbmNlcy5oIgogI2luY2x1ZGUgIldlYlNjcmlwdFNvdXJjZS5oIgogI2lu
Y2x1ZGUgIldlYlNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiV2ViU2V0dGluZ3MuaCIKQEAg
LTQ4LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJXZWJXb3JrZXJJbmZvLmgiCiAjaW5jbHVkZSAicGxh
dGZvcm0vV2ViUG9pbnQuaCIKICNpbmNsdWRlICJ2OC9pbmNsdWRlL3Y4LmgiCisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBPUyhMSU5VWCkgfHwgT1MoQU5EUk9JRCkKICNp
bmNsdWRlICJsaW51eC9XZWJGb250UmVuZGVyaW5nLmgiCkBAIC01OCw2ICs2MCwyNyBAQCB1c2lu
ZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKK25hbWVzcGFj
ZSB7CisKKy8vIFNldHMgbWFwIGJhc2VkIG9uIHNjcmlwdEZvbnRQYWlycywgYSBjb2xsYXBzZWQg
dmVjdG9yIG9mIHBhaXJzIG9mIElTTyAxNTkyNAorLy8gZm91ci1sZXR0ZXIgc2NyaXB0IGNvZGUg
YW5kIGZvbnQgc3VjaCBhczoKKy8vIHsgIkFyYWIiLCAiTXkgQXJhYmljIEZvbnQiLCAiR3JlayIs
ICJNeSBHcmVlayBGb250IiB9CitzdGF0aWMgdm9pZCBzZXRGb250TWFwKFdlYlByZWZlcmVuY2Vz
OjpTY3JpcHRGb250RmFtaWx5TWFwJiBtYXAsIGNvbnN0IFZlY3RvcjxXZWJTdHJpbmc+JiBzY3Jp
cHRGb250UGFpcnMpCit7CisgICAgbWFwLmNsZWFyKCk7CisgICAgc2l6ZV90IGkgPSAwOworICAg
IHdoaWxlIChpICsgMSA8IHNjcmlwdEZvbnRQYWlycy5zaXplKCkpIHsKKyAgICAgICAgY29uc3Qg
V2ViU3RyaW5nJiBzY3JpcHQgPSBzY3JpcHRGb250UGFpcnNbaSsrXTsKKyAgICAgICAgY29uc3Qg
V2ViU3RyaW5nJiBmb250ID0gc2NyaXB0Rm9udFBhaXJzW2krK107CisKKyAgICAgICAgaW50MzJf
dCBjb2RlID0gdV9nZXRQcm9wZXJ0eVZhbHVlRW51bShVQ0hBUl9TQ1JJUFQsIHNjcmlwdC51dGY4
KCkuZGF0YSgpKTsKKyAgICAgICAgaWYgKGNvZGUgPj0gMCAmJiBjb2RlIDwgVVNDUklQVF9DT0RF
X0xJTUlUKQorICAgICAgICAgICAgbWFwW3N0YXRpY19jYXN0PGludD4oY29kZSldID0gZm9udDsK
KyAgICB9Cit9CisKK30KKwogVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcigpCiAgICAgOiBtX2RlbGVn
YXRlKDApCiAgICAgLCBtX3dlYlZpZXcoMCkKQEAgLTEwMCw2ICsxMjMsMTggQEAgVGVzdFJ1bm5l
cjo6VGVzdFJ1bm5lcigpCiAgICAgYmluZE1ldGhvZCgidGV4dFN1cnJvdW5kaW5nTm9kZSIsICZU
ZXN0UnVubmVyOjp0ZXh0U3Vycm91bmRpbmdOb2RlKTsKICAgICBiaW5kTWV0aG9kKCJzZXRUb3Vj
aERyYWdEcm9wRW5hYmxlZCIsICZUZXN0UnVubmVyOjpzZXRUb3VjaERyYWdEcm9wRW5hYmxlZCk7
CiAKKyAgICAvLyBUaGUgZm9sbG93aW5nIG1vZGlmeSBXZWJQcmVmZXJlbmNlcy4KKyAgICBiaW5k
TWV0aG9kKCJzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQiLCAmVGVzdFJ1bm5lcjo6c2V0VXNlclN0
eWxlU2hlZXRFbmFibGVkKTsKKyAgICBiaW5kTWV0aG9kKCJzZXRVc2VyU3R5bGVTaGVldExvY2F0
aW9uIiwgJlRlc3RSdW5uZXI6OnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24pOworICAgIGJpbmRN
ZXRob2QoInNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkIiwgJlRlc3RSdW5uZXI6OnNldEF1
dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKTsKKyAgICBiaW5kTWV0aG9kKCJzZXRQb3B1cEJsb2Nr
aW5nRW5hYmxlZCIsICZUZXN0UnVubmVyOjpzZXRQb3B1cEJsb2NraW5nRW5hYmxlZCk7CisgICAg
YmluZE1ldGhvZCgic2V0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZCIsICZUZXN0UnVubmVy
OjpzZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKTsKKyAgICBiaW5kTWV0aG9kKCJzZXRY
U1NBdWRpdG9yRW5hYmxlZCIsICZUZXN0UnVubmVyOjpzZXRYU1NBdWRpdG9yRW5hYmxlZCk7Cisg
ICAgYmluZE1ldGhvZCgic2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMiLCAmVGVz
dFJ1bm5lcjo6c2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMpOworICAgIGJpbmRN
ZXRob2QoInNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyIsICZUZXN0UnVubmVyOjpzZXRB
bGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMpOworICAgIGJpbmRNZXRob2QoIm92ZXJyaWRlUHJl
ZmVyZW5jZSIsICZUZXN0UnVubmVyOjpvdmVycmlkZVByZWZlcmVuY2UpOworICAgIGJpbmRNZXRo
b2QoInNldFBsdWdpbnNFbmFibGVkIiwgJlRlc3RSdW5uZXI6OnNldFBsdWdpbnNFbmFibGVkKTsK
KwogICAgIC8vIFByb3BlcnRpZXMuCiAgICAgYmluZFByb3BlcnR5KCJ3b3JrZXJUaHJlYWRDb3Vu
dCIsICZUZXN0UnVubmVyOjp3b3JrZXJUaHJlYWRDb3VudCk7CiAgICAgYmluZFByb3BlcnR5KCJn
bG9iYWxGbGFnIiwgJm1fZ2xvYmFsRmxhZyk7CkBAIC0xNTcsNiArMTkyLDggQEAgdm9pZCBUZXN0
UnVubmVyOjpyZXNldCgpCiAKICAgICBtX2dsb2JhbEZsYWcuc2V0KGZhbHNlKTsKICAgICBtX3Bs
YXRmb3JtTmFtZS5zZXQoImNocm9taXVtIik7CisKKyAgICBtX3VzZXJTdHlsZVNoZWV0TG9jYXRp
b24gPSBXZWJVUkwoKTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpzZXRUYWJLZXlDeWNsZXNUaHJv
dWdoRWxlbWVudHMoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQq
IHJlc3VsdCkKQEAgLTY3NCw2ICs3MTEsMTk2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0VG91Y2hE
cmFnRHJvcEVuYWJsZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhCiAg
ICAgbV93ZWJWaWV3LT5zZXR0aW5ncygpLT5zZXRUb3VjaERyYWdEcm9wRW5hYmxlZChhcmd1bWVu
dHNbMF0udG9Cb29sZWFuKCkpOwogfQogCit2b2lkIFRlc3RSdW5uZXI6OnNldFVzZXJTdHlsZVNo
ZWV0RW5hYmxlZChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCog
cmVzdWx0KQoreworICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0u
aXNCb29sKCkpIHsKKyAgICAgICAgbV9kZWxlZ2F0ZS0+cHJlZmVyZW5jZXMoKS0+dXNlclN0eWxl
U2hlZXRMb2NhdGlvbiA9IGFyZ3VtZW50c1swXS52YWx1ZS5ib29sVmFsdWUgPyBtX3VzZXJTdHls
ZVNoZWV0TG9jYXRpb24gOiBXZWJVUkwoKTsKKyAgICAgICAgbV9kZWxlZ2F0ZS0+YXBwbHlQcmVm
ZXJlbmNlcygpOworICAgIH0KKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwordm9pZCBUZXN0
UnVubmVyOjpzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYg
YXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgaWYgKGFyZ3VtZW50cy5zaXpl
KCkgPiAwICYmIGFyZ3VtZW50c1swXS5pc1N0cmluZygpKSB7CisgICAgICAgIG1fdXNlclN0eWxl
U2hlZXRMb2NhdGlvbiA9IG1fZGVsZWdhdGUtPmxvY2FsRmlsZVRvRGF0YVVSTChtX2RlbGVnYXRl
LT5yZXdyaXRlTGF5b3V0VGVzdHNVUkwoYXJndW1lbnRzWzBdLnRvU3RyaW5nKCkpKTsKKyAgICAg
ICAgbV9kZWxlZ2F0ZS0+cHJlZmVyZW5jZXMoKS0+dXNlclN0eWxlU2hlZXRMb2NhdGlvbiA9IG1f
dXNlclN0eWxlU2hlZXRMb2NhdGlvbjsKKyAgICAgICAgbV9kZWxlZ2F0ZS0+YXBwbHlQcmVmZXJl
bmNlcygpOworICAgIH0KKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwordm9pZCBUZXN0UnVu
bmVyOjpzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChjb25zdCBDcHBBcmd1bWVudExpc3Qm
IGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIGlmIChhcmd1bWVudHMuc2l6
ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0uaXNCb29sKCkpIHsKKyAgICAgICAgbV9kZWxlZ2F0ZS0+
cHJlZmVyZW5jZXMoKS0+YXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQgPSBhcmd1bWVudHNbMF0u
dmFsdWUuYm9vbFZhbHVlOworICAgICAgICBtX2RlbGVnYXRlLT5hcHBseVByZWZlcmVuY2VzKCk7
CisgICAgfQorICAgIHJlc3VsdC0+c2V0TnVsbCgpOworfQorCit2b2lkIFRlc3RSdW5uZXI6OnNl
dFBvcHVwQmxvY2tpbmdFbmFibGVkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBD
cHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPiAwICYmIGFy
Z3VtZW50c1swXS5pc0Jvb2woKSkgeworICAgICAgICBib29sIGJsb2NrUG9wdXBzID0gYXJndW1l
bnRzWzBdLnRvQm9vbGVhbigpOworICAgICAgICBtX2RlbGVnYXRlLT5wcmVmZXJlbmNlcygpLT5q
YXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5ID0gIWJsb2NrUG9wdXBzOworICAg
ICAgICBtX2RlbGVnYXRlLT5hcHBseVByZWZlcmVuY2VzKCk7CisgICAgfQorICAgIHJlc3VsdC0+
c2V0TnVsbCgpOworfQorCit2b2lkIFRlc3RSdW5uZXI6OnNldEphdmFTY3JpcHRDYW5BY2Nlc3ND
bGlwYm9hcmQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJl
c3VsdCkKK3sKKyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+IDAgJiYgYXJndW1lbnRzWzBdLmlz
Qm9vbCgpKSB7CisgICAgICAgIG1fZGVsZWdhdGUtPnByZWZlcmVuY2VzKCktPmphdmFTY3JpcHRD
YW5BY2Nlc3NDbGlwYm9hcmQgPSBhcmd1bWVudHNbMF0udmFsdWUuYm9vbFZhbHVlOworICAgICAg
ICBtX2RlbGVnYXRlLT5hcHBseVByZWZlcmVuY2VzKCk7CisgICAgfQorICAgIHJlc3VsdC0+c2V0
TnVsbCgpOworfQorCit2b2lkIFRlc3RSdW5uZXI6OnNldFhTU0F1ZGl0b3JFbmFibGVkKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAg
aWYgKGFyZ3VtZW50cy5zaXplKCkgPiAwICYmIGFyZ3VtZW50c1swXS5pc0Jvb2woKSkgeworICAg
ICAgICBtX2RlbGVnYXRlLT5wcmVmZXJlbmNlcygpLT5YU1NBdWRpdG9yRW5hYmxlZCA9IGFyZ3Vt
ZW50c1swXS52YWx1ZS5ib29sVmFsdWU7CisgICAgICAgIG1fZGVsZWdhdGUtPmFwcGx5UHJlZmVy
ZW5jZXMoKTsKKyAgICB9CisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9CisKK3ZvaWQgVGVzdFJ1
bm5lcjo6c2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMoY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICBpZiAoYXJndW1l
bnRzLnNpemUoKSA+IDAgJiYgYXJndW1lbnRzWzBdLmlzQm9vbCgpKSB7CisgICAgICAgIG1fZGVs
ZWdhdGUtPnByZWZlcmVuY2VzKCktPmFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzID0g
YXJndW1lbnRzWzBdLnZhbHVlLmJvb2xWYWx1ZTsKKyAgICAgICAgbV9kZWxlZ2F0ZS0+YXBwbHlQ
cmVmZXJlbmNlcygpOworICAgIH0KKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwordm9pZCBU
ZXN0UnVubmVyOjpzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICBpZiAoYXJndW1l
bnRzLnNpemUoKSA+IDAgJiYgYXJndW1lbnRzWzBdLmlzQm9vbCgpKSB7CisgICAgICAgIG1fZGVs
ZWdhdGUtPnByZWZlcmVuY2VzKCktPmFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyA9IGFyZ3Vt
ZW50c1swXS52YWx1ZS5ib29sVmFsdWU7CisgICAgICAgIG1fZGVsZWdhdGUtPmFwcGx5UHJlZmVy
ZW5jZXMoKTsKKyAgICB9CisgICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9CisKK3ZvaWQgVGVzdFJ1
bm5lcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRz
LCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7CisgICAgaWYg
KGFyZ3VtZW50cy5zaXplKCkgIT0gMiB8fCAhYXJndW1lbnRzWzBdLmlzU3RyaW5nKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIHN0cmluZyBrZXkgPSBhcmd1bWVudHNbMF0udG9TdHJpbmcoKTsK
KyAgICBDcHBWYXJpYW50IHZhbHVlID0gYXJndW1lbnRzWzFdOworICAgIFdlYlByZWZlcmVuY2Vz
KiBwcmVmcyA9IG1fZGVsZWdhdGUtPnByZWZlcmVuY2VzKCk7CisgICAgaWYgKGtleSA9PSAiV2Vi
S2l0U3RhbmRhcmRGb250IikKKyAgICAgICAgcHJlZnMtPnN0YW5kYXJkRm9udEZhbWlseSA9IGNw
cFZhcmlhbnRUb1dlYlN0cmluZyh2YWx1ZSk7CisgICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXRG
aXhlZEZvbnQiKQorICAgICAgICBwcmVmcy0+Zml4ZWRGb250RmFtaWx5ID0gY3BwVmFyaWFudFRv
V2ViU3RyaW5nKHZhbHVlKTsKKyAgICBlbHNlIGlmIChrZXkgPT0gIldlYktpdFNlcmlmRm9udCIp
CisgICAgICAgIHByZWZzLT5zZXJpZkZvbnRGYW1pbHkgPSBjcHBWYXJpYW50VG9XZWJTdHJpbmco
dmFsdWUpOworICAgIGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0U2Fuc1NlcmlmRm9udCIpCisgICAg
ICAgIHByZWZzLT5zYW5zU2VyaWZGb250RmFtaWx5ID0gY3BwVmFyaWFudFRvV2ViU3RyaW5nKHZh
bHVlKTsKKyAgICBlbHNlIGlmIChrZXkgPT0gIldlYktpdEN1cnNpdmVGb250IikKKyAgICAgICAg
cHJlZnMtPmN1cnNpdmVGb250RmFtaWx5ID0gY3BwVmFyaWFudFRvV2ViU3RyaW5nKHZhbHVlKTsK
KyAgICBlbHNlIGlmIChrZXkgPT0gIldlYktpdEZhbnRhc3lGb250IikKKyAgICAgICAgcHJlZnMt
PmZhbnRhc3lGb250RmFtaWx5ID0gY3BwVmFyaWFudFRvV2ViU3RyaW5nKHZhbHVlKTsKKyAgICBl
bHNlIGlmIChrZXkgPT0gIldlYktpdFN0YW5kYXJkRm9udE1hcCIpCisgICAgICAgIHNldEZvbnRN
YXAocHJlZnMtPnN0YW5kYXJkRm9udE1hcCwgY3BwVmFyaWFudFRvV2ViU3RyaW5nQXJyYXkodmFs
dWUpKTsKKyAgICBlbHNlIGlmIChrZXkgPT0gIldlYktpdEZpeGVkRm9udE1hcCIpCisgICAgICAg
IHNldEZvbnRNYXAocHJlZnMtPmZpeGVkRm9udE1hcCwgY3BwVmFyaWFudFRvV2ViU3RyaW5nQXJy
YXkodmFsdWUpKTsKKyAgICBlbHNlIGlmIChrZXkgPT0gIldlYktpdFNlcmlmRm9udE1hcCIpCisg
ICAgICAgIHNldEZvbnRNYXAocHJlZnMtPnNlcmlmRm9udE1hcCwgY3BwVmFyaWFudFRvV2ViU3Ry
aW5nQXJyYXkodmFsdWUpKTsKKyAgICBlbHNlIGlmIChrZXkgPT0gIldlYktpdFNhbnNTZXJpZkZv
bnRNYXAiKQorICAgICAgICBzZXRGb250TWFwKHByZWZzLT5zYW5zU2VyaWZGb250TWFwLCBjcHBW
YXJpYW50VG9XZWJTdHJpbmdBcnJheSh2YWx1ZSkpOworICAgIGVsc2UgaWYgKGtleSA9PSAiV2Vi
S2l0Q3Vyc2l2ZUZvbnRNYXAiKQorICAgICAgICBzZXRGb250TWFwKHByZWZzLT5jdXJzaXZlRm9u
dE1hcCwgY3BwVmFyaWFudFRvV2ViU3RyaW5nQXJyYXkodmFsdWUpKTsKKyAgICBlbHNlIGlmIChr
ZXkgPT0gIldlYktpdEZhbnRhc3lGb250TWFwIikKKyAgICAgICAgc2V0Rm9udE1hcChwcmVmcy0+
ZmFudGFzeUZvbnRNYXAsIGNwcFZhcmlhbnRUb1dlYlN0cmluZ0FycmF5KHZhbHVlKSk7CisgICAg
ZWxzZSBpZiAoa2V5ID09ICJXZWJLaXREZWZhdWx0Rm9udFNpemUiKQorICAgICAgICBwcmVmcy0+
ZGVmYXVsdEZvbnRTaXplID0gY3BwVmFyaWFudFRvSW50MzIodmFsdWUpOworICAgIGVsc2UgaWYg
KGtleSA9PSAiV2ViS2l0RGVmYXVsdEZpeGVkRm9udFNpemUiKQorICAgICAgICBwcmVmcy0+ZGVm
YXVsdEZpeGVkRm9udFNpemUgPSBjcHBWYXJpYW50VG9JbnQzMih2YWx1ZSk7CisgICAgZWxzZSBp
ZiAoa2V5ID09ICJXZWJLaXRNaW5pbXVtRm9udFNpemUiKQorICAgICAgICBwcmVmcy0+bWluaW11
bUZvbnRTaXplID0gY3BwVmFyaWFudFRvSW50MzIodmFsdWUpOworICAgIGVsc2UgaWYgKGtleSA9
PSAiV2ViS2l0TWluaW11bUxvZ2ljYWxGb250U2l6ZSIpCisgICAgICAgIHByZWZzLT5taW5pbXVt
TG9naWNhbEZvbnRTaXplID0gY3BwVmFyaWFudFRvSW50MzIodmFsdWUpOworICAgIGVsc2UgaWYg
KGtleSA9PSAiV2ViS2l0RGVmYXVsdFRleHRFbmNvZGluZ05hbWUiKQorICAgICAgICBwcmVmcy0+
ZGVmYXVsdFRleHRFbmNvZGluZ05hbWUgPSBjcHBWYXJpYW50VG9XZWJTdHJpbmcodmFsdWUpOwor
ICAgIGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0SmF2YVNjcmlwdEVuYWJsZWQiKQorICAgICAgICBw
cmVmcy0+amF2YVNjcmlwdEVuYWJsZWQgPSBjcHBWYXJpYW50VG9Cb29sKHZhbHVlKTsKKyAgICBl
bHNlIGlmIChrZXkgPT0gIldlYktpdFdlYlNlY3VyaXR5RW5hYmxlZCIpCisgICAgICAgIHByZWZz
LT53ZWJTZWN1cml0eUVuYWJsZWQgPSBjcHBWYXJpYW50VG9Cb29sKHZhbHVlKTsKKyAgICBlbHNl
IGlmIChrZXkgPT0gIldlYktpdEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHki
KQorICAgICAgICBwcmVmcy0+amF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseSA9
IGNwcFZhcmlhbnRUb0Jvb2wodmFsdWUpOworICAgIGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0U3Vw
cG9ydHNNdWx0aXBsZVdpbmRvd3MiKQorICAgICAgICBwcmVmcy0+c3VwcG9ydHNNdWx0aXBsZVdp
bmRvd3MgPSBjcHBWYXJpYW50VG9Cb29sKHZhbHVlKTsKKyAgICBlbHNlIGlmIChrZXkgPT0gIldl
YktpdERpc3BsYXlJbWFnZXNLZXkiKQorICAgICAgICBwcmVmcy0+bG9hZHNJbWFnZXNBdXRvbWF0
aWNhbGx5ID0gY3BwVmFyaWFudFRvQm9vbCh2YWx1ZSk7CisgICAgZWxzZSBpZiAoa2V5ID09ICJX
ZWJLaXRQbHVnaW5zRW5hYmxlZCIpCisgICAgICAgIHByZWZzLT5wbHVnaW5zRW5hYmxlZCA9IGNw
cFZhcmlhbnRUb0Jvb2wodmFsdWUpOworICAgIGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0RE9NUGFz
dGVBbGxvd2VkUHJlZmVyZW5jZUtleSIpCisgICAgICAgIHByZWZzLT5ET01QYXN0ZUFsbG93ZWQg
PSBjcHBWYXJpYW50VG9Cb29sKHZhbHVlKTsKKyAgICBlbHNlIGlmIChrZXkgPT0gIldlYktpdERl
dmVsb3BlckV4dHJhc0VuYWJsZWRQcmVmZXJlbmNlS2V5IikKKyAgICAgICAgcHJlZnMtPmRldmVs
b3BlckV4dHJhc0VuYWJsZWQgPSBjcHBWYXJpYW50VG9Cb29sKHZhbHVlKTsKKyAgICBlbHNlIGlm
IChrZXkgPT0gIldlYktpdFNocmlua3NTdGFuZGFsb25lSW1hZ2VzVG9GaXQiKQorICAgICAgICBw
cmVmcy0+c2hyaW5rc1N0YW5kYWxvbmVJbWFnZXNUb0ZpdCA9IGNwcFZhcmlhbnRUb0Jvb2wodmFs
dWUpOworICAgIGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0VGV4dEFyZWFzQXJlUmVzaXphYmxlIikK
KyAgICAgICAgcHJlZnMtPnRleHRBcmVhc0FyZVJlc2l6YWJsZSA9IGNwcFZhcmlhbnRUb0Jvb2wo
dmFsdWUpOworICAgIGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0SmF2YUVuYWJsZWQiKQorICAgICAg
ICBwcmVmcy0+amF2YUVuYWJsZWQgPSBjcHBWYXJpYW50VG9Cb29sKHZhbHVlKTsKKyAgICBlbHNl
IGlmIChrZXkgPT0gIldlYktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJlbmNlS2V5IikKKyAgICAgICAg
cHJlZnMtPnVzZXNQYWdlQ2FjaGUgPSBjcHBWYXJpYW50VG9Cb29sKHZhbHVlKTsKKyAgICBlbHNl
IGlmIChrZXkgPT0gIldlYktpdFBhZ2VDYWNoZVN1cHBvcnRzUGx1Z2luc1ByZWZlcmVuY2VLZXki
KQorICAgICAgICBwcmVmcy0+cGFnZUNhY2hlU3VwcG9ydHNQbHVnaW5zID0gY3BwVmFyaWFudFRv
Qm9vbCh2YWx1ZSk7CisgICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXRKYXZhU2NyaXB0Q2FuQWNj
ZXNzQ2xpcGJvYXJkIikKKyAgICAgICAgcHJlZnMtPmphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9h
cmQgPSBjcHBWYXJpYW50VG9Cb29sKHZhbHVlKTsKKyAgICBlbHNlIGlmIChrZXkgPT0gIldlYktp
dFhTU0F1ZGl0b3JFbmFibGVkIikKKyAgICAgICAgcHJlZnMtPlhTU0F1ZGl0b3JFbmFibGVkID0g
Y3BwVmFyaWFudFRvQm9vbCh2YWx1ZSk7CisgICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXRMb2Nh
bFN0b3JhZ2VFbmFibGVkUHJlZmVyZW5jZUtleSIpCisgICAgICAgIHByZWZzLT5sb2NhbFN0b3Jh
Z2VFbmFibGVkID0gY3BwVmFyaWFudFRvQm9vbCh2YWx1ZSk7CisgICAgZWxzZSBpZiAoa2V5ID09
ICJXZWJLaXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQiKQorICAgICAgICBwcmVm
cy0+b2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkID0gY3BwVmFyaWFudFRvQm9vbCh2
YWx1ZSk7CisgICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXRUYWJUb0xpbmtzUHJlZmVyZW5jZUtl
eSIpCisgICAgICAgIHByZWZzLT50YWJzVG9MaW5rcyA9IGNwcFZhcmlhbnRUb0Jvb2wodmFsdWUp
OworICAgIGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0V2ViR0xFbmFibGVkIikKKyAgICAgICAgcHJl
ZnMtPmV4cGVyaW1lbnRhbFdlYkdMRW5hYmxlZCA9IGNwcFZhcmlhbnRUb0Jvb2wodmFsdWUpOwor
ICAgIGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0Q1NTUmVnaW9uc0VuYWJsZWQiKQorICAgICAgICBw
cmVmcy0+ZXhwZXJpbWVudGFsQ1NTUmVnaW9uc0VuYWJsZWQgPSBjcHBWYXJpYW50VG9Cb29sKHZh
bHVlKTsKKyAgICBlbHNlIGlmIChrZXkgPT0gIldlYktpdENTU0dyaWRMYXlvdXRFbmFibGVkIikK
KyAgICAgICAgcHJlZnMtPmV4cGVyaW1lbnRhbENTU0dyaWRMYXlvdXRFbmFibGVkID0gY3BwVmFy
aWFudFRvQm9vbCh2YWx1ZSk7CisgICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXRIeXBlcmxpbmtB
dWRpdGluZ0VuYWJsZWQiKQorICAgICAgICBwcmVmcy0+aHlwZXJsaW5rQXVkaXRpbmdFbmFibGVk
ID0gY3BwVmFyaWFudFRvQm9vbCh2YWx1ZSk7CisgICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXRF
bmFibGVDYXJldEJyb3dzaW5nIikKKyAgICAgICAgcHJlZnMtPmNhcmV0QnJvd3NpbmdFbmFibGVk
ID0gY3BwVmFyaWFudFRvQm9vbCh2YWx1ZSk7CisgICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXRB
bGxvd0Rpc3BsYXlpbmdJbnNlY3VyZUNvbnRlbnQiKQorICAgICAgICBwcmVmcy0+YWxsb3dEaXNw
bGF5T2ZJbnNlY3VyZUNvbnRlbnQgPSBjcHBWYXJpYW50VG9Cb29sKHZhbHVlKTsKKyAgICBlbHNl
IGlmIChrZXkgPT0gIldlYktpdEFsbG93UnVubmluZ0luc2VjdXJlQ29udGVudCIpCisgICAgICAg
IHByZWZzLT5hbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudCA9IGNwcFZhcmlhbnRUb0Jvb2wo
dmFsdWUpOworICAgIGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0Q1NTQ3VzdG9tRmlsdGVyRW5hYmxl
ZCIpCisgICAgICAgIHByZWZzLT5jc3NDdXN0b21GaWx0ZXJFbmFibGVkID0gY3BwVmFyaWFudFRv
Qm9vbCh2YWx1ZSk7CisgICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXRTaG91bGRSZXNwZWN0SW1h
Z2VPcmllbnRhdGlvbiIpCisgICAgICAgIHByZWZzLT5zaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRh
dGlvbiA9IGNwcFZhcmlhbnRUb0Jvb2wodmFsdWUpOworICAgIGVsc2UgaWYgKGtleSA9PSAiV2Vi
S2l0V2ViQXVkaW9FbmFibGVkIikKKyAgICAgICAgQVNTRVJUKGNwcFZhcmlhbnRUb0Jvb2wodmFs
dWUpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgc3RyaW5nIG1lc3NhZ2UoIkludmFsaWQgbmFtZSBm
b3IgcHJlZmVyZW5jZTogIik7CisgICAgICAgIG1lc3NhZ2UuYXBwZW5kKGtleSk7CisgICAgICAg
IHByaW50RXJyb3JNZXNzYWdlKG1lc3NhZ2UpOworICAgIH0KKyAgICBtX2RlbGVnYXRlLT5hcHBs
eVByZWZlcmVuY2VzKCk7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0UGx1Z2luc0VuYWJsZWQo
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sK
KyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+IDAgJiYgYXJndW1lbnRzWzBdLmlzQm9vbCgpKSB7
CisgICAgICAgIG1fZGVsZWdhdGUtPnByZWZlcmVuY2VzKCktPnBsdWdpbnNFbmFibGVkID0gYXJn
dW1lbnRzWzBdLnRvQm9vbGVhbigpOworICAgICAgICBtX2RlbGVnYXRlLT5hcHBseVByZWZlcmVu
Y2VzKCk7CisgICAgfQorICAgIHJlc3VsdC0+c2V0TnVsbCgpOworfQorCiB2b2lkIFRlc3RSdW5u
ZXI6OndvcmtlclRocmVhZENvdW50KENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICByZXN1bHQt
PnNldChzdGF0aWNfY2FzdDxpbnQ+KFdlYldvcmtlckluZm86OmRlZGljYXRlZFdvcmtlckNvdW50
KCkpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL1Rlc3RSdW5uZXIuaAppbmRleCA0NjkxZTU1NzliODc4NWFiYjBhMmQ0YzM0MWVk
YWY5YzIxMWUxZTA2Li42ZTY3NzhlZWI1MjFlZTBhNjBjZWMzOWQxZmFiNjk5ZmM3MmM3OWFiIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9U
ZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9zcmMvVGVzdFJ1bm5lci5oCkBAIC0zMyw2ICszMyw3IEBACiAjZGVmaW5lIFRlc3RSdW5uZXJf
aAogCiAjaW5jbHVkZSAiQ3BwQm91bmRDbGFzcy5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlVS
TC5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlZpZXc7CkBAIC0xNTAsNiArMTUx
LDI5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRUb3VjaERyYWdEcm9wRW5hYmxlZChjb25zdCBD
cHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAKICAgICAvLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K
KyAgICAvLyBNZXRob2RzIG1vZGlmeWluZyBXZWJQcmVmZXJlbmNlcy4KKworICAgIC8vIFBhc3Nl
cyB0aHJvdWdoIHRvIFdlYlByZWZlcmVuY2VzIHdoaWNoIGFsbG93cyB0aGUgdXNlciB0byBoYXZl
IGEgY3VzdG9tCisgICAgLy8gc3R5bGUgc2hlZXQuCisgICAgdm9pZCBzZXRVc2VyU3R5bGVTaGVl
dEVuYWJsZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQg
c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJp
YW50Kik7CisKKyAgICAvLyBQYXNzZXMgdGhpcyBwcmVmZXJlbmNlIHRocm91Z2ggdG8gV2ViU2V0
dGluZ3MuCisgICAgdm9pZCBzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChjb25zdCBDcHBB
cmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisKKyAgICAvLyBTZXQgdGhlIFdlYlByZWZlcmVu
Y2UgdGhhdCBjb250cm9scyB3ZWJraXQncyBwb3B1cCBibG9ja2luZy4KKyAgICB2b2lkIHNldFBv
cHVwQmxvY2tpbmdFbmFibGVkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsK
KworICAgIHZvaWQgc2V0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZChjb25zdCBDcHBBcmd1
bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9pZCBzZXRYU1NBdWRpdG9yRW5hYmxlZChj
b25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAgdm9pZCBzZXRBbGxvd1Vu
aXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJp
YW50Kik7CisgICAgdm9pZCBzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgb3ZlcnJpZGVQcmVmZXJlbmNl
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKworICAgIC8vIEVuYWJsZSBv
ciBkaXNhYmxlIHBsdWdpbnMuCisgICAgdm9pZCBzZXRQbHVnaW5zRW5hYmxlZChjb25zdCBDcHBB
cmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisKKyAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAg
ICAvLyBQcm9wZXJ0aWVzCiAgICAgdm9pZCB3b3JrZXJUaHJlYWRDb3VudChDcHBWYXJpYW50Kik7
CiAKQEAgLTE3Myw2ICsxOTcsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgZWxlbWVudERvZXNBdXRv
Q29tcGxldGVGb3JFbGVtZW50V2l0aElkKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJik7CiAgICAg
aW50IG51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpOwogCisgICAgV2ViS2l0OjpXZWJVUkwgbV91
c2VyU3R5bGVTaGVldExvY2F0aW9uOworCiAgICAgLy8gZ2xvYmFsRmxhZyBpcyB1c2VkIGJ5IGEg
bnVtYmVyIG9mIGxheW91dCB0ZXN0cyBpbiBodHRwL3Rlc3RzL3NlY3VyaXR5L2RhdGFVUkwuCiAg
ICAgQ3BwVmFyaWFudCBtX2dsb2JhbEZsYWc7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlByZWZlcmVuY2VzLmNwcCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlByZWZlcmVuY2VzLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNmIzOWUyODI2MDQyYTA4NjIyMjI1NGM1MWFkOWVhZDk1OTgyMDI1Ci0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9zcmMvV2ViUHJlZmVyZW5jZXMuY3BwCkBAIC0wLDAgKzEsMjY5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCisKKyNpbmNsdWRlICJXZWJWaWV3Lmgi
CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK25hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsK
KworbmFtZXNwYWNlIHsKKwordm9pZCBzZXRTdGFuZGFyZEZvbnRGYW1pbHlXcmFwcGVyKFdlYlNl
dHRpbmdzKiBzZXR0aW5ncywgY29uc3QgV2ViU3RyaW5nJiBmb250LCBVU2NyaXB0Q29kZSBzY3Jp
cHQpCit7CisgICAgc2V0dGluZ3MtPnNldFN0YW5kYXJkRm9udEZhbWlseShmb250LCBzY3JpcHQp
OworfQorCit2b2lkIHNldEZpeGVkRm9udEZhbWlseVdyYXBwZXIoV2ViU2V0dGluZ3MqIHNldHRp
bmdzLCBjb25zdCBXZWJTdHJpbmcmIGZvbnQsIFVTY3JpcHRDb2RlIHNjcmlwdCkKK3sKKyAgICBz
ZXR0aW5ncy0+c2V0Rml4ZWRGb250RmFtaWx5KGZvbnQsIHNjcmlwdCk7Cit9CisKK3ZvaWQgc2V0
U2VyaWZGb250RmFtaWx5V3JhcHBlcihXZWJTZXR0aW5ncyogc2V0dGluZ3MsIGNvbnN0IFdlYlN0
cmluZyYgZm9udCwgVVNjcmlwdENvZGUgc2NyaXB0KQoreworICAgIHNldHRpbmdzLT5zZXRTZXJp
ZkZvbnRGYW1pbHkoZm9udCwgc2NyaXB0KTsKK30KKwordm9pZCBzZXRTYW5zU2VyaWZGb250RmFt
aWx5V3JhcHBlcihXZWJTZXR0aW5ncyogc2V0dGluZ3MsIGNvbnN0IFdlYlN0cmluZyYgZm9udCwg
VVNjcmlwdENvZGUgc2NyaXB0KQoreworICAgIHNldHRpbmdzLT5zZXRTYW5zU2VyaWZGb250RmFt
aWx5KGZvbnQsIHNjcmlwdCk7Cit9CisKK3ZvaWQgc2V0Q3Vyc2l2ZUZvbnRGYW1pbHlXcmFwcGVy
KFdlYlNldHRpbmdzKiBzZXR0aW5ncywgY29uc3QgV2ViU3RyaW5nJiBmb250LCBVU2NyaXB0Q29k
ZSBzY3JpcHQpCit7CisgICAgc2V0dGluZ3MtPnNldEN1cnNpdmVGb250RmFtaWx5KGZvbnQsIHNj
cmlwdCk7Cit9CisKK3ZvaWQgc2V0RmFudGFzeUZvbnRGYW1pbHlXcmFwcGVyKFdlYlNldHRpbmdz
KiBzZXR0aW5ncywgY29uc3QgV2ViU3RyaW5nJiBmb250LCBVU2NyaXB0Q29kZSBzY3JpcHQpCit7
CisgICAgc2V0dGluZ3MtPnNldEZhbnRhc3lGb250RmFtaWx5KGZvbnQsIHNjcmlwdCk7Cit9CisK
K3R5cGVkZWYgdm9pZCAoKlNldEZvbnRGYW1pbHlXcmFwcGVyKShXZWJTZXR0aW5ncyosIGNvbnN0
IFdlYlN0cmluZyYsIFVTY3JpcHRDb2RlKTsKKwordm9pZCBhcHBseUZvbnRNYXAoV2ViU2V0dGlu
Z3MqIHNldHRpbmdzLCBjb25zdCBXZWJQcmVmZXJlbmNlczo6U2NyaXB0Rm9udEZhbWlseU1hcCYg
bWFwLCBTZXRGb250RmFtaWx5V3JhcHBlciBzZXR0ZXIpCit7CisgICAgZm9yIChXZWJQcmVmZXJl
bmNlczo6U2NyaXB0Rm9udEZhbWlseU1hcDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1hcC5iZWdp
bigpOyBpdGVyICE9IG1hcC5lbmQoKTsgKytpdGVyKSB7CisgICAgICAgIGNvbnN0IFdlYlN0cmlu
ZyYgZm9udCA9IGl0ZXItPnNlY29uZDsKKyAgICAgICAgaWYgKCFmb250LmlzTnVsbCgpICYmICFm
b250LmlzRW1wdHkoKSkKKyAgICAgICAgICAgICgqc2V0dGVyKShzZXR0aW5ncywgZm9udCwgc3Rh
dGljX2Nhc3Q8VVNjcmlwdENvZGU+KGl0ZXItPmZpcnN0KSk7CisgICAgfQorfQorCit9CisKK3Zv
aWQgV2ViUHJlZmVyZW5jZXM6OnJlc2V0KCkKK3sKKyNpZiBPUyhNQUNfT1NfWCkKKyAgICBjdXJz
aXZlRm9udEZhbWlseSA9IFdlYlN0cmluZzo6ZnJvbVVURjgoIkFwcGxlIENoYW5jZXJ5Iik7Cisg
ICAgZmFudGFzeUZvbnRGYW1pbHkgPSBXZWJTdHJpbmc6OmZyb21VVEY4KCJQYXB5cnVzIik7Cisg
ICAgV2ViU3RyaW5nIHNlcmlmID0gV2ViU3RyaW5nOjpmcm9tVVRGOCgiVGltZXMiKTsKKyNlbHNl
CisgICAgLy8gVGhlc2UgdHdvIGZvbnRzIGFyZSBwaWNrZWQgZnJvbSB0aGUgaW50ZXJzZWN0aW9u
IG9mCisgICAgLy8gV2luIFhQIGZvbnQgbGlzdCBhbmQgVmlzdGEgZm9udCBsaXN0IDoKKyAgICAv
LyAgIGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS90eXBvZ3JhcGh5L2ZvbnRzL3dpbnhwLmh0bQor
ICAgIC8vICAgaHR0cDovL2Jsb2dzLm1zZG4uY29tL21pY2hrYXAvYXJjaGl2ZS8yMDA2LzA0LzA0
LzU2Nzg4MS5hc3B4CisgICAgLy8gU29tZSBvZiB0aGVtIGFyZSBpbnN0YWxsZWQgb25seSB3aXRo
IENKSyBhbmQgY29tcGxleCBzY3JpcHQKKyAgICAvLyBzdXBwb3J0IGVuYWJsZWQgb24gV2luZG93
cyBYUCBhbmQgYXJlIG91dCBvZiBjb25zaWRlcmF0aW9uIGhlcmUuCisgICAgLy8gKGFsdGhvdWdo
IHdlIGVuYWJsZWQgYm90aCBvbiBvdXIgYnVpbGRib3RzLikKKyAgICAvLyBUaGV5IChlc3BlY2lh
bGx5IEltcGFjdCBmb3IgZmFudGFzeSkgYXJlIG5vdCB0eXBpY2FsIGN1cnNpdmUKKyAgICAvLyBh
bmQgZmFudGFzeSBmb250cywgYnV0IGl0IHNob3VsZCBub3QgbWF0dGVyIGZvciBsYXlvdXQgdGVz
dHMKKyAgICAvLyBhcyBsb25nIGFzIHRoZXkncmUgYXZhaWxhYmxlLgorICAgIGN1cnNpdmVGb250
RmFtaWx5ID0gV2ViU3RyaW5nOjpmcm9tVVRGOCgiQ29taWMgU2FucyBNUyIpOworICAgIGZhbnRh
c3lGb250RmFtaWx5ID0gV2ViU3RyaW5nOjpmcm9tVVRGOCgiSW1wYWN0Iik7CisgICAgLy8gTk9U
RTogY2FzZSBtYXR0ZXJzIGhlcmUsIHRoaXMgbXVzdCBiZSAndGltZXMgbmV3IHJvbWFuJywgZWxz
ZQorICAgIC8vIHNvbWUgbGF5b3V0IHRlc3RzIGZhaWwuCisgICAgV2ViU3RyaW5nIHNlcmlmID0g
V2ViU3RyaW5nOjpmcm9tVVRGOCgidGltZXMgbmV3IHJvbWFuIik7CisjZW5kaWYKKyAgICBzZXJp
ZkZvbnRGYW1pbHkgPSBzZXJpZjsKKyAgICBzdGFuZGFyZEZvbnRGYW1pbHkgPSBzZXJpZjsKKyAg
ICBmaXhlZEZvbnRGYW1pbHkgPSBXZWJTdHJpbmc6OmZyb21VVEY4KCJDb3VyaWVyIik7CisgICAg
c2Fuc1NlcmlmRm9udEZhbWlseSA9IFdlYlN0cmluZzo6ZnJvbVVURjgoIkhlbHZldGljYSIpOwor
CisgICAgZGVmYXVsdEZvbnRTaXplID0gMTY7CisgICAgZGVmYXVsdEZpeGVkRm9udFNpemUgPSAx
MzsKKyAgICBtaW5pbXVtRm9udFNpemUgPSAwOworICAgIG1pbmltdW1Mb2dpY2FsRm9udFNpemUg
PSA5OworICAgIC8vIERvIG5vdCBkaXNhYmxlIGFjY2VsZXJhdGlvbiBmb3IgMmQgY2FudmFzIGJh
c2VkIG9uIHNpemUuCisgICAgLy8gVGhpcyBtYWtlcyBoYXZpbmcgdGVzdCBleHBlY3RhdGlvbnMg
Y29uc2lzdGVudC4KKyAgICBtaW5pbXVtQWNjZWxlcmF0ZWQyZENhbnZhc1NpemUgPSAwOworCisg
ICAgRE9NUGFzdGVBbGxvd2VkID0gdHJ1ZTsKKyAgICBYU1NBdWRpdG9yRW5hYmxlZCA9IGZhbHNl
OworICAgIGFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50ID0gdHJ1ZTsKKyAgICBhbGxvd0Zp
bGVBY2Nlc3NGcm9tRmlsZVVSTHMgPSB0cnVlOworICAgIGFsbG93UnVubmluZ09mSW5zZWN1cmVD
b250ZW50ID0gdHJ1ZTsKKyAgICBhdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZCA9IHRydWU7Cisg
ICAgZGVmYXVsdFRleHRFbmNvZGluZ05hbWUgPSBXZWJTdHJpbmc6OmZyb21VVEY4KCJJU08tODg1
OS0xIik7CisgICAgZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCA9IHRydWU7CisgICAgZXhwZXJpbWVu
dGFsV2ViR0xFbmFibGVkID0gZmFsc2U7CisgICAgZXhwZXJpbWVudGFsQ1NTUmVnaW9uc0VuYWJs
ZWQgPSB0cnVlOworICAgIGV4cGVyaW1lbnRhbENTU0dyaWRMYXlvdXRFbmFibGVkID0gZmFsc2U7
CisgICAgamF2YUVuYWJsZWQgPSBmYWxzZTsKKyAgICBqYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJv
YXJkID0gdHJ1ZTsKKyAgICBqYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5ID0g
dHJ1ZTsKKyAgICBzdXBwb3J0c011bHRpcGxlV2luZG93cyA9IHRydWU7CisgICAgamF2YVNjcmlw
dEVuYWJsZWQgPSB0cnVlOworICAgIGxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSA9IHRydWU7Cisg
ICAgbG9jYWxTdG9yYWdlRW5hYmxlZCA9IHRydWU7CisgICAgb2ZmbGluZVdlYkFwcGxpY2F0aW9u
Q2FjaGVFbmFibGVkID0gdHJ1ZTsKKyAgICBwbHVnaW5zRW5hYmxlZCA9IHRydWU7CisgICAgc2hy
aW5rc1N0YW5kYWxvbmVJbWFnZXNUb0ZpdCA9IGZhbHNlOworICAgIHRleHRBcmVhc0FyZVJlc2l6
YWJsZSA9IGZhbHNlOworICAgIHVzZXJTdHlsZVNoZWV0TG9jYXRpb24gPSBXZWJVUkwoKTsKKyAg
ICB1c2VzUGFnZUNhY2hlID0gZmFsc2U7CisgICAgcGFnZUNhY2hlU3VwcG9ydHNQbHVnaW5zID0g
ZmFsc2U7CisgICAgd2ViU2VjdXJpdHlFbmFibGVkID0gdHJ1ZTsKKyAgICBjYXJldEJyb3dzaW5n
RW5hYmxlZCA9IGZhbHNlOworCisgICAgLy8gQWxsb3cgdGhvc2UgbGF5b3V0IHRlc3RzIHJ1bm5p
bmcgYXMgbG9jYWwgZmlsZXMsIGkuZS4gdW5kZXIKKyAgICAvLyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2xvY2FsLCB0byBhY2Nlc3MgaHR0cCBzZXJ2ZXIuCisgICAgYWxsb3dVbml2ZXJzYWxBY2Nl
c3NGcm9tRmlsZVVSTHMgPSB0cnVlOworCisjaWYgT1MoREFSV0lOKQorICAgIGVkaXRpbmdCZWhh
dmlvciA9IFdlYlNldHRpbmdzOjpFZGl0aW5nQmVoYXZpb3JNYWM7CisjZWxzZQorICAgIGVkaXRp
bmdCZWhhdmlvciA9IFdlYlNldHRpbmdzOjpFZGl0aW5nQmVoYXZpb3JXaW47CisjZW5kaWYKKwor
ICAgIHRhYnNUb0xpbmtzID0gZmFsc2U7CisgICAgaHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkID0g
ZmFsc2U7CisgICAgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvclZpZGVvRW5hYmxlZCA9IGZhbHNl
OworICAgIGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uRW5hYmxlZCA9IGZh
bHNlOworICAgIGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkID0gZmFsc2U7CisgICAgYWNj
ZWxlcmF0ZWQyZENhbnZhc0VuYWJsZWQgPSBmYWxzZTsKKyAgICBkZWZlcnJlZDJkQ2FudmFzRW5h
YmxlZCA9IGZhbHNlOworICAgIGFjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkID0gZmFsc2U7Cisg
ICAgZm9yY2VDb21wb3NpdGluZ01vZGUgPSBmYWxzZTsKKyAgICBwZXJUaWxlUGFpbnRpbmdFbmFi
bGVkID0gZmFsc2U7CisgICAgYWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkID0gZmFsc2U7Cisg
ICAgZGVmZXJyZWRJbWFnZURlY29kaW5nRW5hYmxlZCA9IGZhbHNlOworICAgIG1lZGlhUGxheWJh
Y2tSZXF1aXJlc1VzZXJHZXN0dXJlID0gZmFsc2U7CisgICAgbW9ja1Njcm9sbGJhcnNFbmFibGVk
ID0gZmFsc2U7CisgICAgY3NzQ3VzdG9tRmlsdGVyRW5hYmxlZCA9IGZhbHNlOworICAgIHNob3Vs
ZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uID0gZmFsc2U7Cit9CisKK3ZvaWQgV2ViUHJlZmVyZW5j
ZXM6OmFwcGx5VG8oV2ViVmlldyogd2ViVmlldykKK3sKKyAgICBXZWJTZXR0aW5ncyogc2V0dGlu
Z3MgPSB3ZWJWaWV3LT5zZXR0aW5ncygpOworICAgIHNldHRpbmdzLT5zZXRTdGFuZGFyZEZvbnRG
YW1pbHkoc3RhbmRhcmRGb250RmFtaWx5KTsKKyAgICBzZXR0aW5ncy0+c2V0Rml4ZWRGb250RmFt
aWx5KGZpeGVkRm9udEZhbWlseSk7CisgICAgc2V0dGluZ3MtPnNldFNlcmlmRm9udEZhbWlseShz
ZXJpZkZvbnRGYW1pbHkpOworICAgIHNldHRpbmdzLT5zZXRTYW5zU2VyaWZGb250RmFtaWx5KHNh
bnNTZXJpZkZvbnRGYW1pbHkpOworICAgIHNldHRpbmdzLT5zZXRDdXJzaXZlRm9udEZhbWlseShj
dXJzaXZlRm9udEZhbWlseSk7CisgICAgc2V0dGluZ3MtPnNldEZhbnRhc3lGb250RmFtaWx5KGZh
bnRhc3lGb250RmFtaWx5KTsKKworICAgIGFwcGx5Rm9udE1hcChzZXR0aW5ncywgc3RhbmRhcmRG
b250TWFwLCBzZXRTdGFuZGFyZEZvbnRGYW1pbHlXcmFwcGVyKTsKKyAgICBhcHBseUZvbnRNYXAo
c2V0dGluZ3MsIGZpeGVkRm9udE1hcCwgc2V0Rml4ZWRGb250RmFtaWx5V3JhcHBlcik7CisgICAg
YXBwbHlGb250TWFwKHNldHRpbmdzLCBzZXJpZkZvbnRNYXAsIHNldFNlcmlmRm9udEZhbWlseVdy
YXBwZXIpOworICAgIGFwcGx5Rm9udE1hcChzZXR0aW5ncywgc2Fuc1NlcmlmRm9udE1hcCwgc2V0
U2Fuc1NlcmlmRm9udEZhbWlseVdyYXBwZXIpOworICAgIGFwcGx5Rm9udE1hcChzZXR0aW5ncywg
Y3Vyc2l2ZUZvbnRNYXAsIHNldEN1cnNpdmVGb250RmFtaWx5V3JhcHBlcik7CisgICAgYXBwbHlG
b250TWFwKHNldHRpbmdzLCBmYW50YXN5Rm9udE1hcCwgc2V0RmFudGFzeUZvbnRGYW1pbHlXcmFw
cGVyKTsKKworICAgIHNldHRpbmdzLT5zZXREZWZhdWx0Rm9udFNpemUoZGVmYXVsdEZvbnRTaXpl
KTsKKyAgICBzZXR0aW5ncy0+c2V0RGVmYXVsdEZpeGVkRm9udFNpemUoZGVmYXVsdEZpeGVkRm9u
dFNpemUpOworICAgIHNldHRpbmdzLT5zZXRNaW5pbXVtRm9udFNpemUobWluaW11bUZvbnRTaXpl
KTsKKyAgICBzZXR0aW5ncy0+c2V0TWluaW11bUxvZ2ljYWxGb250U2l6ZShtaW5pbXVtTG9naWNh
bEZvbnRTaXplKTsKKyAgICBzZXR0aW5ncy0+c2V0TWluaW11bUFjY2VsZXJhdGVkMmRDYW52YXNT
aXplKG1pbmltdW1BY2NlbGVyYXRlZDJkQ2FudmFzU2l6ZSk7CisKKyAgICBzZXR0aW5ncy0+c2V0
RE9NUGFzdGVBbGxvd2VkKERPTVBhc3RlQWxsb3dlZCk7CisgICAgc2V0dGluZ3MtPnNldFhTU0F1
ZGl0b3JFbmFibGVkKFhTU0F1ZGl0b3JFbmFibGVkKTsKKyAgICBzZXR0aW5ncy0+c2V0QWxsb3dE
aXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQoYWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQpOwor
ICAgIHNldHRpbmdzLT5zZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoYWxsb3dGaWxlQWNj
ZXNzRnJvbUZpbGVVUkxzKTsKKyAgICBzZXR0aW5ncy0+c2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3Vy
ZUNvbnRlbnQoYWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQpOworICAgIHNldHRpbmdzLT5z
ZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChhdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZCk7
CisgICAgc2V0dGluZ3MtPnNldERlZmF1bHRUZXh0RW5jb2RpbmdOYW1lKGRlZmF1bHRUZXh0RW5j
b2RpbmdOYW1lKTsKKyAgICBzZXR0aW5ncy0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChkZXZl
bG9wZXJFeHRyYXNFbmFibGVkKTsKKyAgICBzZXR0aW5ncy0+c2V0RXhwZXJpbWVudGFsV2ViR0xF
bmFibGVkKGV4cGVyaW1lbnRhbFdlYkdMRW5hYmxlZCk7CisgICAgc2V0dGluZ3MtPnNldEV4cGVy
aW1lbnRhbENTU1JlZ2lvbnNFbmFibGVkKGV4cGVyaW1lbnRhbENTU1JlZ2lvbnNFbmFibGVkKTsK
KyAgICBzZXR0aW5ncy0+c2V0RXhwZXJpbWVudGFsQ1NTR3JpZExheW91dEVuYWJsZWQoZXhwZXJp
bWVudGFsQ1NTR3JpZExheW91dEVuYWJsZWQpOworICAgIHNldHRpbmdzLT5zZXRFeHBlcmltZW50
YWxDU1NDdXN0b21GaWx0ZXJFbmFibGVkKGNzc0N1c3RvbUZpbHRlckVuYWJsZWQpOworICAgIHNl
dHRpbmdzLT5zZXRKYXZhRW5hYmxlZChqYXZhRW5hYmxlZCk7CisgICAgc2V0dGluZ3MtPnNldEph
dmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQoamF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZCk7
CisgICAgc2V0dGluZ3MtPnNldEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHko
amF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseSk7CisgICAgc2V0dGluZ3MtPnNl
dFN1cHBvcnRzTXVsdGlwbGVXaW5kb3dzKHN1cHBvcnRzTXVsdGlwbGVXaW5kb3dzKTsKKyAgICBz
ZXR0aW5ncy0+c2V0SmF2YVNjcmlwdEVuYWJsZWQoamF2YVNjcmlwdEVuYWJsZWQpOworICAgIHNl
dHRpbmdzLT5zZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkobG9hZHNJbWFnZXNBdXRvbWF0aWNh
bGx5KTsKKyAgICBzZXR0aW5ncy0+c2V0TG9jYWxTdG9yYWdlRW5hYmxlZChsb2NhbFN0b3JhZ2VF
bmFibGVkKTsKKyAgICBzZXR0aW5ncy0+c2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFi
bGVkKG9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCk7CisgICAgc2V0dGluZ3MtPnNl
dFBsdWdpbnNFbmFibGVkKHBsdWdpbnNFbmFibGVkKTsKKyAgICBzZXR0aW5ncy0+c2V0U2hyaW5r
c1N0YW5kYWxvbmVJbWFnZXNUb0ZpdChzaHJpbmtzU3RhbmRhbG9uZUltYWdlc1RvRml0KTsKKyAg
ICBzZXR0aW5ncy0+c2V0VGV4dEFyZWFzQXJlUmVzaXphYmxlKHRleHRBcmVhc0FyZVJlc2l6YWJs
ZSk7CisgICAgc2V0dGluZ3MtPnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24odXNlclN0eWxlU2hl
ZXRMb2NhdGlvbik7CisgICAgc2V0dGluZ3MtPnNldFVzZXNQYWdlQ2FjaGUodXNlc1BhZ2VDYWNo
ZSk7CisgICAgc2V0dGluZ3MtPnNldFBhZ2VDYWNoZVN1cHBvcnRzUGx1Z2lucyhwYWdlQ2FjaGVT
dXBwb3J0c1BsdWdpbnMpOworICAgIHNldHRpbmdzLT5zZXRXZWJTZWN1cml0eUVuYWJsZWQod2Vi
U2VjdXJpdHlFbmFibGVkKTsKKyAgICBzZXR0aW5ncy0+c2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NG
cm9tRmlsZVVSTHMoYWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMpOworICAgIHNldHRp
bmdzLT5zZXRFZGl0aW5nQmVoYXZpb3IoZWRpdGluZ0JlaGF2aW9yKTsKKyAgICBzZXR0aW5ncy0+
c2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKGh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZCk7Cisg
ICAgLy8gTGF5b3V0VGVzdHMgd2VyZSB3cml0dGVuIHdpdGggU2FmYXJpIE1hYyBpbiBtaW5kIHdo
aWNoIGRvZXMgbm90IGFsbG93CisgICAgLy8gdGFiYmluZyB0byBsaW5rcyBieSBkZWZhdWx0Lgor
ICAgIHdlYlZpZXctPnNldFRhYnNUb0xpbmtzKHRhYnNUb0xpbmtzKTsKKyAgICBzZXR0aW5ncy0+
c2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQoY2FyZXRCcm93c2luZ0VuYWJsZWQpOworICAgIHNldHRp
bmdzLT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChhY2NlbGVyYXRlZENvbXBvc2l0
aW5nRW5hYmxlZCk7CisgICAgc2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JW
aWRlb0VuYWJsZWQoYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvclZpZGVvRW5hYmxlZCk7CisgICAg
c2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uRW5hYmxl
ZChhY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbkVuYWJsZWQpOworICAgIHNl
dHRpbmdzLT5zZXRGaXhlZFBvc2l0aW9uQ3JlYXRlc1N0YWNraW5nQ29udGV4dChhY2NlbGVyYXRl
ZENvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbkVuYWJsZWQpOworICAgIHNldHRpbmdzLT5zZXRG
b3JjZUNvbXBvc2l0aW5nTW9kZShmb3JjZUNvbXBvc2l0aW5nTW9kZSk7CisgICAgc2V0dGluZ3Mt
PnNldEFjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVkKGFjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVk
KTsKKyAgICBzZXR0aW5ncy0+c2V0RGVmZXJyZWQyZENhbnZhc0VuYWJsZWQoZGVmZXJyZWQyZENh
bnZhc0VuYWJsZWQpOworICAgIHNldHRpbmdzLT5zZXRBY2NlbGVyYXRlZFBhaW50aW5nRW5hYmxl
ZChhY2NlbGVyYXRlZFBhaW50aW5nRW5hYmxlZCk7CisgICAgc2V0dGluZ3MtPnNldFBlclRpbGVQ
YWludGluZ0VuYWJsZWQocGVyVGlsZVBhaW50aW5nRW5hYmxlZCk7CisgICAgc2V0dGluZ3MtPnNl
dEFjY2VsZXJhdGVkQW5pbWF0aW9uRW5hYmxlZChhY2NlbGVyYXRlZEFuaW1hdGlvbkVuYWJsZWQp
OworICAgIHNldHRpbmdzLT5zZXREZWZlcnJlZEltYWdlRGVjb2RpbmdFbmFibGVkKGRlZmVycmVk
SW1hZ2VEZWNvZGluZ0VuYWJsZWQpOworICAgIHNldHRpbmdzLT5zZXRNZWRpYVBsYXliYWNrUmVx
dWlyZXNVc2VyR2VzdHVyZShtZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZSk7CisgICAg
c2V0dGluZ3MtPnNldE1vY2tTY3JvbGxiYXJzRW5hYmxlZChtb2NrU2Nyb2xsYmFyc0VuYWJsZWQp
OworICAgIHNldHRpbmdzLT5zZXRTaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbihzaG91bGRS
ZXNwZWN0SW1hZ2VPcmllbnRhdGlvbik7CisKKyAgICAvLyBGaXhlZCB2YWx1ZXMuCisgICAgc2V0
dGluZ3MtPnNldFRleHREaXJlY3Rpb25TdWJtZW51SW5jbHVzaW9uQmVoYXZpb3JOZXZlckluY2x1
ZGVkKCk7CisgICAgc2V0dGluZ3MtPnNldERvd25sb2FkYWJsZUJpbmFyeUZvbnRzRW5hYmxlZCh0
cnVlKTsKKyAgICBzZXR0aW5ncy0+c2V0QWxsb3dTY3JpcHRzVG9DbG9zZVdpbmRvd3MoZmFsc2Up
OworICAgIHNldHRpbmdzLT5zZXROZWVkc1NpdGVTcGVjaWZpY1F1aXJrcyh0cnVlKTsKKyAgICBz
ZXR0aW5ncy0+c2V0RWRpdGFibGVMaW5rQmVoYXZpb3JOZXZlckxpdmUoKTsKKyAgICBzZXR0aW5n
cy0+c2V0RW5hYmxlU2Nyb2xsQW5pbWF0b3IoZmFsc2UpOworICAgIHNldHRpbmdzLT5zZXRGb250
UmVuZGVyaW5nTW9kZU5vcm1hbCgpOworICAgIHNldHRpbmdzLT5zZXRUZXh0RGlyZWN0aW9uU3Vi
bWVudUluY2x1c2lvbkJlaGF2aW9yTmV2ZXJJbmNsdWRlZCgpOworICAgIHNldHRpbmdzLT5zZXRV
c2VzRW5jb2RpbmdEZXRlY3RvcihmYWxzZSk7CisgICAgc2V0dGluZ3MtPnNldEltYWdlc0VuYWJs
ZWQodHJ1ZSk7CisgICAgc2V0dGluZ3MtPnNldEludGVyYWN0aXZlRm9ybVZhbGlkYXRpb25FbmFi
bGVkKHRydWUpOworICAgIC8vIEVuYWJsZSBmdWxsc2NyZWVuIHNvIHRoZSBmdWxsc2NyZWVuIGxh
eW91dCB0ZXN0cyBjYW4gcnVuLgorICAgIHNldHRpbmdzLT5zZXRGdWxsU2NyZWVuRW5hYmxlZCh0
cnVlKTsKKyAgICBzZXR0aW5ncy0+c2V0VmFsaWRhdGlvbk1lc3NhZ2VUaW1lck1hZ25pZmljYXRp
b24oLTEpOworICAgIHNldHRpbmdzLT5zZXRWaXN1YWxXb3JkTW92ZW1lbnRFbmFibGVkKGZhbHNl
KTsKKyAgICBzZXR0aW5ncy0+c2V0UGFzc3dvcmRFY2hvRW5hYmxlZChmYWxzZSk7CisgICAgc2V0
dGluZ3MtPnNldEFwcGx5RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1ZSk7Cit9CisK
K30KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5o
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmgKaW5kZXggMzA2ZjM1
Y2QxZTgyOGQ4M2UxN2I4M2M1OGQ0MmM0M2I5ZWRiMjFkYS4uNTUwYzIwYjI5OTFmMDk0NDIyOTM4
OTI1MmFiYWVmMDM5YjhiOGIyNyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFNoZWxsLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFNoZWxsLmgKQEAgLTkzLDcgKzkzLDcgQEAgcHVibGljOgogI2VuZGlmCiAgICAgY29uc3QgVGVz
dEV2ZW50UHJpbnRlciogcHJpbnRlcigpIGNvbnN0IHsgcmV0dXJuICZtX3ByaW50ZXI7IH0KIAot
ICAgIFdlYlByZWZlcmVuY2VzKiBwcmVmZXJlbmNlcygpIHsgcmV0dXJuICZtX3ByZWZzOyB9Cisg
ICAgV2ViVGVzdFJ1bm5lcjo6V2ViUHJlZmVyZW5jZXMqIHByZWZlcmVuY2VzKCkgeyByZXR1cm4g
Jm1fcHJlZnM7IH0KICAgICB2b2lkIGFwcGx5UHJlZmVyZW5jZXMoKSB7IG1fcHJlZnMuYXBwbHlU
byhtX3dlYlZpZXcpOyB9CiAKICAgICBXZWJQZXJtaXNzaW9ucyogd2ViUGVybWlzc2lvbnMoKSB7
IHJldHVybiBtX3dlYlBlcm1pc3Npb25zLmdldCgpOyB9CkBAIC0yNDEsNyArMjQxLDcgQEAgcHJp
dmF0ZToKICAgICBib29sIG1fcGVyVGlsZVBhaW50aW5nRW5hYmxlZDsKICAgICBib29sIG1fYWNj
ZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkOwogICAgIGJvb2wgbV9kZWZlcnJlZEltYWdlRGVjb2Rp
bmdFbmFibGVkOwotICAgIFdlYlByZWZlcmVuY2VzIG1fcHJlZnM7CisgICAgV2ViVGVzdFJ1bm5l
cjo6V2ViUHJlZmVyZW5jZXMgbV9wcmVmczsKICAgICBib29sIG1fc3RyZXNzT3B0OwogICAgIGJv
b2wgbV9zdHJlc3NEZW9wdDsKICAgICBzdGQ6OnN0cmluZyBtX2phdmFTY3JpcHRGbGFnczsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlByZWZlcmVuY2VzLmNw
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlByZWZlcmVuY2VzLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTEzOTM5ZDMyZDQ1ZjY4NjAwOThiMWQ5NWY1N2Mw
ODE3MDc5ZGFmYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQcmVmZXJlbmNlcy5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSwyNjEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0g
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJX
ZWJQcmVmZXJlbmNlcy5oIgotCi0jaW5jbHVkZSAiV2ViVmlldy5oIgotCi11c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwotCi12b2lkIFdlYlByZWZlcmVuY2VzOjpyZXNldCgpCi17Ci0jaWYgT1MoTUFD
X09TX1gpCi0gICAgY3Vyc2l2ZUZvbnRGYW1pbHkgPSBXZWJTdHJpbmc6OmZyb21VVEY4KCJBcHBs
ZSBDaGFuY2VyeSIpOwotICAgIGZhbnRhc3lGb250RmFtaWx5ID0gV2ViU3RyaW5nOjpmcm9tVVRG
OCgiUGFweXJ1cyIpOwotICAgIFdlYlN0cmluZyBzZXJpZiA9IFdlYlN0cmluZzo6ZnJvbVVURjgo
IlRpbWVzIik7Ci0jZWxzZQotICAgIC8vIFRoZXNlIHR3byBmb250cyBhcmUgcGlja2VkIGZyb20g
dGhlIGludGVyc2VjdGlvbiBvZgotICAgIC8vIFdpbiBYUCBmb250IGxpc3QgYW5kIFZpc3RhIGZv
bnQgbGlzdCA6Ci0gICAgLy8gICBodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vdHlwb2dyYXBoeS9m
b250cy93aW54cC5odG0KLSAgICAvLyAgIGh0dHA6Ly9ibG9ncy5tc2RuLmNvbS9taWNoa2FwL2Fy
Y2hpdmUvMjAwNi8wNC8wNC81Njc4ODEuYXNweAotICAgIC8vIFNvbWUgb2YgdGhlbSBhcmUgaW5z
dGFsbGVkIG9ubHkgd2l0aCBDSksgYW5kIGNvbXBsZXggc2NyaXB0Ci0gICAgLy8gc3VwcG9ydCBl
bmFibGVkIG9uIFdpbmRvd3MgWFAgYW5kIGFyZSBvdXQgb2YgY29uc2lkZXJhdGlvbiBoZXJlLgot
ICAgIC8vIChhbHRob3VnaCB3ZSBlbmFibGVkIGJvdGggb24gb3VyIGJ1aWxkYm90cy4pCi0gICAg
Ly8gVGhleSAoZXNwZWNpYWxseSBJbXBhY3QgZm9yIGZhbnRhc3kpIGFyZSBub3QgdHlwaWNhbCBj
dXJzaXZlCi0gICAgLy8gYW5kIGZhbnRhc3kgZm9udHMsIGJ1dCBpdCBzaG91bGQgbm90IG1hdHRl
ciBmb3IgbGF5b3V0IHRlc3RzCi0gICAgLy8gYXMgbG9uZyBhcyB0aGV5J3JlIGF2YWlsYWJsZS4K
LSAgICBjdXJzaXZlRm9udEZhbWlseSA9IFdlYlN0cmluZzo6ZnJvbVVURjgoIkNvbWljIFNhbnMg
TVMiKTsKLSAgICBmYW50YXN5Rm9udEZhbWlseSA9IFdlYlN0cmluZzo6ZnJvbVVURjgoIkltcGFj
dCIpOwotICAgIC8vIE5PVEU6IGNhc2UgbWF0dGVycyBoZXJlLCB0aGlzIG11c3QgYmUgJ3RpbWVz
IG5ldyByb21hbicsIGVsc2UKLSAgICAvLyBzb21lIGxheW91dCB0ZXN0cyBmYWlsLgotICAgIFdl
YlN0cmluZyBzZXJpZiA9IFdlYlN0cmluZzo6ZnJvbVVURjgoInRpbWVzIG5ldyByb21hbiIpOwot
I2VuZGlmCi0gICAgc2VyaWZGb250RmFtaWx5ID0gc2VyaWY7Ci0gICAgc3RhbmRhcmRGb250RmFt
aWx5ID0gc2VyaWY7Ci0gICAgZml4ZWRGb250RmFtaWx5ID0gV2ViU3RyaW5nOjpmcm9tVVRGOCgi
Q291cmllciIpOwotICAgIHNhbnNTZXJpZkZvbnRGYW1pbHkgPSBXZWJTdHJpbmc6OmZyb21VVEY4
KCJIZWx2ZXRpY2EiKTsKLQotICAgIGRlZmF1bHRGb250U2l6ZSA9IDE2OwotICAgIGRlZmF1bHRG
aXhlZEZvbnRTaXplID0gMTM7Ci0gICAgbWluaW11bUZvbnRTaXplID0gMDsKLSAgICBtaW5pbXVt
TG9naWNhbEZvbnRTaXplID0gOTsKLSAgICAvLyBEbyBub3QgZGlzYWJsZSBhY2NlbGVyYXRpb24g
Zm9yIDJkIGNhbnZhcyBiYXNlZCBvbiBzaXplLgotICAgIC8vIFRoaXMgbWFrZXMgaGF2aW5nIHRl
c3QgZXhwZWN0YXRpb25zIGNvbnNpc3RlbnQuCi0gICAgbWluaW11bUFjY2VsZXJhdGVkMmRDYW52
YXNTaXplID0gMDsKLQotICAgIERPTVBhc3RlQWxsb3dlZCA9IHRydWU7Ci0gICAgWFNTQXVkaXRv
ckVuYWJsZWQgPSBmYWxzZTsKLSAgICBhbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudCA9IHRy
dWU7Ci0gICAgYWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzID0gdHJ1ZTsKLSAgICBhbGxvd1J1
bm5pbmdPZkluc2VjdXJlQ29udGVudCA9IHRydWU7Ci0gICAgYXV0aG9yQW5kVXNlclN0eWxlc0Vu
YWJsZWQgPSB0cnVlOwotICAgIGRlZmF1bHRUZXh0RW5jb2RpbmdOYW1lID0gV2ViU3RyaW5nOjpm
cm9tVVRGOCgiSVNPLTg4NTktMSIpOwotICAgIGRldmVsb3BlckV4dHJhc0VuYWJsZWQgPSB0cnVl
OwotICAgIGV4cGVyaW1lbnRhbFdlYkdMRW5hYmxlZCA9IGZhbHNlOwotICAgIGV4cGVyaW1lbnRh
bENTU1JlZ2lvbnNFbmFibGVkID0gdHJ1ZTsKLSAgICBleHBlcmltZW50YWxDU1NHcmlkTGF5b3V0
RW5hYmxlZCA9IGZhbHNlOwotICAgIGphdmFFbmFibGVkID0gZmFsc2U7Ci0gICAgamF2YVNjcmlw
dENhbkFjY2Vzc0NsaXBib2FyZCA9IHRydWU7Ci0gICAgamF2YVNjcmlwdENhbk9wZW5XaW5kb3dz
QXV0b21hdGljYWxseSA9IHRydWU7Ci0gICAgc3VwcG9ydHNNdWx0aXBsZVdpbmRvd3MgPSB0cnVl
OwotICAgIGphdmFTY3JpcHRFbmFibGVkID0gdHJ1ZTsKLSAgICBsb2Fkc0ltYWdlc0F1dG9tYXRp
Y2FsbHkgPSB0cnVlOwotICAgIGxvY2FsU3RvcmFnZUVuYWJsZWQgPSB0cnVlOwotICAgIG9mZmxp
bmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCA9IHRydWU7Ci0gICAgcGx1Z2luc0VuYWJsZWQg
PSB0cnVlOwotICAgIHNocmlua3NTdGFuZGFsb25lSW1hZ2VzVG9GaXQgPSBmYWxzZTsKLSAgICB0
ZXh0QXJlYXNBcmVSZXNpemFibGUgPSBmYWxzZTsKLSAgICB1c2VyU3R5bGVTaGVldExvY2F0aW9u
ID0gV2ViVVJMKCk7Ci0gICAgdXNlc1BhZ2VDYWNoZSA9IGZhbHNlOwotICAgIHBhZ2VDYWNoZVN1
cHBvcnRzUGx1Z2lucyA9IGZhbHNlOwotICAgIHdlYlNlY3VyaXR5RW5hYmxlZCA9IHRydWU7Ci0g
ICAgY2FyZXRCcm93c2luZ0VuYWJsZWQgPSBmYWxzZTsKLQotICAgIC8vIEFsbG93IHRob3NlIGxh
eW91dCB0ZXN0cyBydW5uaW5nIGFzIGxvY2FsIGZpbGVzLCBpLmUuIHVuZGVyCi0gICAgLy8gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9sb2NhbCwgdG8gYWNjZXNzIGh0dHAgc2VydmVyLgotICAgIGFs
bG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzID0gdHJ1ZTsKLQotI2lmIE9TKERBUldJTikK
LSAgICBlZGl0aW5nQmVoYXZpb3IgPSBXZWJTZXR0aW5nczo6RWRpdGluZ0JlaGF2aW9yTWFjOwot
I2Vsc2UKLSAgICBlZGl0aW5nQmVoYXZpb3IgPSBXZWJTZXR0aW5nczo6RWRpdGluZ0JlaGF2aW9y
V2luOwotI2VuZGlmCi0KLSAgICB0YWJzVG9MaW5rcyA9IGZhbHNlOwotICAgIGh5cGVybGlua0F1
ZGl0aW5nRW5hYmxlZCA9IGZhbHNlOwotICAgIGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JWaWRl
b0VuYWJsZWQgPSBmYWxzZTsKLSAgICBhY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yRml4ZWRQb3Np
dGlvbkVuYWJsZWQgPSBmYWxzZTsKLSAgICBhY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZCA9
IGZhbHNlOwotICAgIGFjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVkID0gZmFsc2U7Ci0gICAgZGVm
ZXJyZWQyZENhbnZhc0VuYWJsZWQgPSBmYWxzZTsKLSAgICBhY2NlbGVyYXRlZFBhaW50aW5nRW5h
YmxlZCA9IGZhbHNlOwotICAgIGZvcmNlQ29tcG9zaXRpbmdNb2RlID0gZmFsc2U7Ci0gICAgcGVy
VGlsZVBhaW50aW5nRW5hYmxlZCA9IGZhbHNlOwotICAgIGFjY2VsZXJhdGVkQW5pbWF0aW9uRW5h
YmxlZCA9IGZhbHNlOwotICAgIGRlZmVycmVkSW1hZ2VEZWNvZGluZ0VuYWJsZWQgPSBmYWxzZTsK
LSAgICBtZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZSA9IGZhbHNlOwotICAgIG1vY2tT
Y3JvbGxiYXJzRW5hYmxlZCA9IGZhbHNlOwotICAgIGNzc0N1c3RvbUZpbHRlckVuYWJsZWQgPSBm
YWxzZTsKLSAgICBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA9IGZhbHNlOwotfQotCi1z
dGF0aWMgdm9pZCBzZXRTdGFuZGFyZEZvbnRGYW1pbHlXcmFwcGVyKFdlYlNldHRpbmdzKiBzZXR0
aW5ncywgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIGZvbnQsIFVTY3JpcHRDb2RlIHNjcmlwdCkK
LXsKLSAgICBzZXR0aW5ncy0+c2V0U3RhbmRhcmRGb250RmFtaWx5KGZvbnQsIHNjcmlwdCk7Ci19
Ci0KLXN0YXRpYyB2b2lkIHNldEZpeGVkRm9udEZhbWlseVdyYXBwZXIoV2ViU2V0dGluZ3MqIHNl
dHRpbmdzLCBjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgZm9udCwgVVNjcmlwdENvZGUgc2NyaXB0
KQotewotICAgIHNldHRpbmdzLT5zZXRGaXhlZEZvbnRGYW1pbHkoZm9udCwgc2NyaXB0KTsKLX0K
LQotc3RhdGljIHZvaWQgc2V0U2VyaWZGb250RmFtaWx5V3JhcHBlcihXZWJTZXR0aW5ncyogc2V0
dGluZ3MsIGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBmb250LCBVU2NyaXB0Q29kZSBzY3JpcHQp
Ci17Ci0gICAgc2V0dGluZ3MtPnNldFNlcmlmRm9udEZhbWlseShmb250LCBzY3JpcHQpOwotfQot
Ci1zdGF0aWMgdm9pZCBzZXRTYW5zU2VyaWZGb250RmFtaWx5V3JhcHBlcihXZWJTZXR0aW5ncyog
c2V0dGluZ3MsIGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBmb250LCBVU2NyaXB0Q29kZSBzY3Jp
cHQpCi17Ci0gICAgc2V0dGluZ3MtPnNldFNhbnNTZXJpZkZvbnRGYW1pbHkoZm9udCwgc2NyaXB0
KTsKLX0KLQotc3RhdGljIHZvaWQgc2V0Q3Vyc2l2ZUZvbnRGYW1pbHlXcmFwcGVyKFdlYlNldHRp
bmdzKiBzZXR0aW5ncywgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIGZvbnQsIFVTY3JpcHRDb2Rl
IHNjcmlwdCkKLXsKLSAgICBzZXR0aW5ncy0+c2V0Q3Vyc2l2ZUZvbnRGYW1pbHkoZm9udCwgc2Ny
aXB0KTsKLX0KLQotc3RhdGljIHZvaWQgc2V0RmFudGFzeUZvbnRGYW1pbHlXcmFwcGVyKFdlYlNl
dHRpbmdzKiBzZXR0aW5ncywgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIGZvbnQsIFVTY3JpcHRD
b2RlIHNjcmlwdCkKLXsKLSAgICBzZXR0aW5ncy0+c2V0RmFudGFzeUZvbnRGYW1pbHkoZm9udCwg
c2NyaXB0KTsKLX0KLQotdHlwZWRlZiB2b2lkICgqU2V0Rm9udEZhbWlseVdyYXBwZXIpKFdlYlNl
dHRpbmdzKiwgY29uc3QgV2ViU3RyaW5nJiwgVVNjcmlwdENvZGUpOwotCi1zdGF0aWMgdm9pZCBh
cHBseUZvbnRNYXAoV2ViU2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBXZWJQcmVmZXJlbmNlczo6
U2NyaXB0Rm9udEZhbWlseU1hcCYgbWFwLCBTZXRGb250RmFtaWx5V3JhcHBlciBzZXR0ZXIpCi17
Ci0gICAgZm9yIChXZWJQcmVmZXJlbmNlczo6U2NyaXB0Rm9udEZhbWlseU1hcDo6Y29uc3RfaXRl
cmF0b3IgaXRlciA9IG1hcC5iZWdpbigpOyBpdGVyICE9IG1hcC5lbmQoKTsgKytpdGVyKSB7Ci0g
ICAgICAgIGNvbnN0IFdlYlN0cmluZyYgZm9udCA9IGl0ZXItPnZhbHVlOwotICAgICAgICBpZiAo
IWZvbnQuaXNOdWxsKCkgJiYgIWZvbnQuaXNFbXB0eSgpKQotICAgICAgICAgICAgKCpzZXR0ZXIp
KHNldHRpbmdzLCBmb250LCBzdGF0aWNfY2FzdDxVU2NyaXB0Q29kZT4oaXRlci0+a2V5KSk7Ci0g
ICAgfQotfQotCi12b2lkIFdlYlByZWZlcmVuY2VzOjphcHBseVRvKFdlYlZpZXcqIHdlYlZpZXcp
Ci17Ci0gICAgV2ViU2V0dGluZ3MqIHNldHRpbmdzID0gd2ViVmlldy0+c2V0dGluZ3MoKTsKLSAg
ICBzZXR0aW5ncy0+c2V0U3RhbmRhcmRGb250RmFtaWx5KHN0YW5kYXJkRm9udEZhbWlseSk7Ci0g
ICAgc2V0dGluZ3MtPnNldEZpeGVkRm9udEZhbWlseShmaXhlZEZvbnRGYW1pbHkpOwotICAgIHNl
dHRpbmdzLT5zZXRTZXJpZkZvbnRGYW1pbHkoc2VyaWZGb250RmFtaWx5KTsKLSAgICBzZXR0aW5n
cy0+c2V0U2Fuc1NlcmlmRm9udEZhbWlseShzYW5zU2VyaWZGb250RmFtaWx5KTsKLSAgICBzZXR0
aW5ncy0+c2V0Q3Vyc2l2ZUZvbnRGYW1pbHkoY3Vyc2l2ZUZvbnRGYW1pbHkpOwotICAgIHNldHRp
bmdzLT5zZXRGYW50YXN5Rm9udEZhbWlseShmYW50YXN5Rm9udEZhbWlseSk7Ci0KLSAgICBhcHBs
eUZvbnRNYXAoc2V0dGluZ3MsIHN0YW5kYXJkRm9udE1hcCwgc2V0U3RhbmRhcmRGb250RmFtaWx5
V3JhcHBlcik7Ci0gICAgYXBwbHlGb250TWFwKHNldHRpbmdzLCBmaXhlZEZvbnRNYXAsIHNldEZp
eGVkRm9udEZhbWlseVdyYXBwZXIpOwotICAgIGFwcGx5Rm9udE1hcChzZXR0aW5ncywgc2VyaWZG
b250TWFwLCBzZXRTZXJpZkZvbnRGYW1pbHlXcmFwcGVyKTsKLSAgICBhcHBseUZvbnRNYXAoc2V0
dGluZ3MsIHNhbnNTZXJpZkZvbnRNYXAsIHNldFNhbnNTZXJpZkZvbnRGYW1pbHlXcmFwcGVyKTsK
LSAgICBhcHBseUZvbnRNYXAoc2V0dGluZ3MsIGN1cnNpdmVGb250TWFwLCBzZXRDdXJzaXZlRm9u
dEZhbWlseVdyYXBwZXIpOwotICAgIGFwcGx5Rm9udE1hcChzZXR0aW5ncywgZmFudGFzeUZvbnRN
YXAsIHNldEZhbnRhc3lGb250RmFtaWx5V3JhcHBlcik7Ci0KLSAgICBzZXR0aW5ncy0+c2V0RGVm
YXVsdEZvbnRTaXplKGRlZmF1bHRGb250U2l6ZSk7Ci0gICAgc2V0dGluZ3MtPnNldERlZmF1bHRG
aXhlZEZvbnRTaXplKGRlZmF1bHRGaXhlZEZvbnRTaXplKTsKLSAgICBzZXR0aW5ncy0+c2V0TWlu
aW11bUZvbnRTaXplKG1pbmltdW1Gb250U2l6ZSk7Ci0gICAgc2V0dGluZ3MtPnNldE1pbmltdW1M
b2dpY2FsRm9udFNpemUobWluaW11bUxvZ2ljYWxGb250U2l6ZSk7Ci0gICAgc2V0dGluZ3MtPnNl
dE1pbmltdW1BY2NlbGVyYXRlZDJkQ2FudmFzU2l6ZShtaW5pbXVtQWNjZWxlcmF0ZWQyZENhbnZh
c1NpemUpOwotCi0gICAgc2V0dGluZ3MtPnNldERPTVBhc3RlQWxsb3dlZChET01QYXN0ZUFsbG93
ZWQpOwotICAgIHNldHRpbmdzLT5zZXRYU1NBdWRpdG9yRW5hYmxlZChYU1NBdWRpdG9yRW5hYmxl
ZCk7Ci0gICAgc2V0dGluZ3MtPnNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50KGFsbG93
RGlzcGxheU9mSW5zZWN1cmVDb250ZW50KTsKLSAgICBzZXR0aW5ncy0+c2V0QWxsb3dGaWxlQWNj
ZXNzRnJvbUZpbGVVUkxzKGFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyk7Ci0gICAgc2V0dGlu
Z3MtPnNldEFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50KGFsbG93UnVubmluZ09mSW5zZWN1
cmVDb250ZW50KTsKLSAgICBzZXR0aW5ncy0+c2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQo
YXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQpOwotICAgIHNldHRpbmdzLT5zZXREZWZhdWx0VGV4
dEVuY29kaW5nTmFtZShkZWZhdWx0VGV4dEVuY29kaW5nTmFtZSk7Ci0gICAgc2V0dGluZ3MtPnNl
dERldmVsb3BlckV4dHJhc0VuYWJsZWQoZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCk7Ci0gICAgc2V0
dGluZ3MtPnNldEV4cGVyaW1lbnRhbFdlYkdMRW5hYmxlZChleHBlcmltZW50YWxXZWJHTEVuYWJs
ZWQpOwotICAgIHNldHRpbmdzLT5zZXRFeHBlcmltZW50YWxDU1NSZWdpb25zRW5hYmxlZChleHBl
cmltZW50YWxDU1NSZWdpb25zRW5hYmxlZCk7Ci0gICAgc2V0dGluZ3MtPnNldEV4cGVyaW1lbnRh
bENTU0dyaWRMYXlvdXRFbmFibGVkKGV4cGVyaW1lbnRhbENTU0dyaWRMYXlvdXRFbmFibGVkKTsK
LSAgICBzZXR0aW5ncy0+c2V0RXhwZXJpbWVudGFsQ1NTQ3VzdG9tRmlsdGVyRW5hYmxlZChjc3ND
dXN0b21GaWx0ZXJFbmFibGVkKTsKLSAgICBzZXR0aW5ncy0+c2V0SmF2YUVuYWJsZWQoamF2YUVu
YWJsZWQpOwotICAgIHNldHRpbmdzLT5zZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKGph
dmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQpOwotICAgIHNldHRpbmdzLT5zZXRKYXZhU2NyaXB0
Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KGphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9t
YXRpY2FsbHkpOwotICAgIHNldHRpbmdzLT5zZXRTdXBwb3J0c011bHRpcGxlV2luZG93cyhzdXBw
b3J0c011bHRpcGxlV2luZG93cyk7Ci0gICAgc2V0dGluZ3MtPnNldEphdmFTY3JpcHRFbmFibGVk
KGphdmFTY3JpcHRFbmFibGVkKTsKLSAgICBzZXR0aW5ncy0+c2V0TG9hZHNJbWFnZXNBdXRvbWF0
aWNhbGx5KGxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSk7Ci0gICAgc2V0dGluZ3MtPnNldExvY2Fs
U3RvcmFnZUVuYWJsZWQobG9jYWxTdG9yYWdlRW5hYmxlZCk7Ci0gICAgc2V0dGluZ3MtPnNldE9m
ZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZChvZmZsaW5lV2ViQXBwbGljYXRpb25DYWNo
ZUVuYWJsZWQpOwotICAgIHNldHRpbmdzLT5zZXRQbHVnaW5zRW5hYmxlZChwbHVnaW5zRW5hYmxl
ZCk7Ci0gICAgc2V0dGluZ3MtPnNldFNocmlua3NTdGFuZGFsb25lSW1hZ2VzVG9GaXQoc2hyaW5r
c1N0YW5kYWxvbmVJbWFnZXNUb0ZpdCk7Ci0gICAgc2V0dGluZ3MtPnNldFRleHRBcmVhc0FyZVJl
c2l6YWJsZSh0ZXh0QXJlYXNBcmVSZXNpemFibGUpOwotICAgIHNldHRpbmdzLT5zZXRVc2VyU3R5
bGVTaGVldExvY2F0aW9uKHVzZXJTdHlsZVNoZWV0TG9jYXRpb24pOwotICAgIHNldHRpbmdzLT5z
ZXRVc2VzUGFnZUNhY2hlKHVzZXNQYWdlQ2FjaGUpOwotICAgIHNldHRpbmdzLT5zZXRQYWdlQ2Fj
aGVTdXBwb3J0c1BsdWdpbnMocGFnZUNhY2hlU3VwcG9ydHNQbHVnaW5zKTsKLSAgICBzZXR0aW5n
cy0+c2V0V2ViU2VjdXJpdHlFbmFibGVkKHdlYlNlY3VyaXR5RW5hYmxlZCk7Ci0gICAgc2V0dGlu
Z3MtPnNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKGFsbG93VW5pdmVyc2FsQWNj
ZXNzRnJvbUZpbGVVUkxzKTsKLSAgICBzZXR0aW5ncy0+c2V0RWRpdGluZ0JlaGF2aW9yKGVkaXRp
bmdCZWhhdmlvcik7Ci0gICAgc2V0dGluZ3MtPnNldEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZCho
eXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQpOwotICAgIC8vIExheW91dFRlc3RzIHdlcmUgd3JpdHRl
biB3aXRoIFNhZmFyaSBNYWMgaW4gbWluZCB3aGljaCBkb2VzIG5vdCBhbGxvdwotICAgIC8vIHRh
YmJpbmcgdG8gbGlua3MgYnkgZGVmYXVsdC4KLSAgICB3ZWJWaWV3LT5zZXRUYWJzVG9MaW5rcyh0
YWJzVG9MaW5rcyk7Ci0gICAgc2V0dGluZ3MtPnNldENhcmV0QnJvd3NpbmdFbmFibGVkKGNhcmV0
QnJvd3NpbmdFbmFibGVkKTsKLSAgICBzZXR0aW5ncy0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0VuYWJsZWQoYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQpOwotICAgIHNldHRpbmdzLT5z
ZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yVmlkZW9FbmFibGVkKGFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdGb3JWaWRlb0VuYWJsZWQpOwotICAgIHNldHRpbmdzLT5zZXRBY2NlbGVyYXRlZENvbXBv
c2l0aW5nRm9yRml4ZWRQb3NpdGlvbkVuYWJsZWQoYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvckZp
eGVkUG9zaXRpb25FbmFibGVkKTsKLSAgICBzZXR0aW5ncy0+c2V0Rml4ZWRQb3NpdGlvbkNyZWF0
ZXNTdGFja2luZ0NvbnRleHQoYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb25F
bmFibGVkKTsKLSAgICBzZXR0aW5ncy0+c2V0Rm9yY2VDb21wb3NpdGluZ01vZGUoZm9yY2VDb21w
b3NpdGluZ01vZGUpOwotICAgIHNldHRpbmdzLT5zZXRBY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxl
ZChhY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZCk7Ci0gICAgc2V0dGluZ3MtPnNldERlZmVycmVk
MmRDYW52YXNFbmFibGVkKGRlZmVycmVkMmRDYW52YXNFbmFibGVkKTsKLSAgICBzZXR0aW5ncy0+
c2V0QWNjZWxlcmF0ZWRQYWludGluZ0VuYWJsZWQoYWNjZWxlcmF0ZWRQYWludGluZ0VuYWJsZWQp
OwotICAgIHNldHRpbmdzLT5zZXRQZXJUaWxlUGFpbnRpbmdFbmFibGVkKHBlclRpbGVQYWludGlu
Z0VuYWJsZWQpOwotICAgIHNldHRpbmdzLT5zZXRBY2NlbGVyYXRlZEFuaW1hdGlvbkVuYWJsZWQo
YWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkKTsKLSAgICBzZXR0aW5ncy0+c2V0RGVmZXJyZWRJ
bWFnZURlY29kaW5nRW5hYmxlZChkZWZlcnJlZEltYWdlRGVjb2RpbmdFbmFibGVkKTsKLSAgICBz
ZXR0aW5ncy0+c2V0TWVkaWFQbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUobWVkaWFQbGF5YmFj
a1JlcXVpcmVzVXNlckdlc3R1cmUpOwotICAgIHNldHRpbmdzLT5zZXRNb2NrU2Nyb2xsYmFyc0Vu
YWJsZWQobW9ja1Njcm9sbGJhcnNFbmFibGVkKTsKLSAgICBzZXR0aW5ncy0+c2V0U2hvdWxkUmVz
cGVjdEltYWdlT3JpZW50YXRpb24oc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pOwotCi0g
ICAgLy8gRml4ZWQgdmFsdWVzLgotICAgIHNldHRpbmdzLT5zZXRUZXh0RGlyZWN0aW9uU3VibWVu
dUluY2x1c2lvbkJlaGF2aW9yTmV2ZXJJbmNsdWRlZCgpOwotICAgIHNldHRpbmdzLT5zZXREb3du
bG9hZGFibGVCaW5hcnlGb250c0VuYWJsZWQodHJ1ZSk7Ci0gICAgc2V0dGluZ3MtPnNldEFsbG93
U2NyaXB0c1RvQ2xvc2VXaW5kb3dzKGZhbHNlKTsKLSAgICBzZXR0aW5ncy0+c2V0TmVlZHNTaXRl
U3BlY2lmaWNRdWlya3ModHJ1ZSk7Ci0gICAgc2V0dGluZ3MtPnNldEVkaXRhYmxlTGlua0JlaGF2
aW9yTmV2ZXJMaXZlKCk7Ci0gICAgc2V0dGluZ3MtPnNldEVuYWJsZVNjcm9sbEFuaW1hdG9yKGZh
bHNlKTsKLSAgICBzZXR0aW5ncy0+c2V0Rm9udFJlbmRlcmluZ01vZGVOb3JtYWwoKTsKLSAgICBz
ZXR0aW5ncy0+c2V0VGV4dERpcmVjdGlvblN1Ym1lbnVJbmNsdXNpb25CZWhhdmlvck5ldmVySW5j
bHVkZWQoKTsKLSAgICBzZXR0aW5ncy0+c2V0VXNlc0VuY29kaW5nRGV0ZWN0b3IoZmFsc2UpOwot
ICAgIHNldHRpbmdzLT5zZXRJbWFnZXNFbmFibGVkKHRydWUpOwotICAgIHNldHRpbmdzLT5zZXRJ
bnRlcmFjdGl2ZUZvcm1WYWxpZGF0aW9uRW5hYmxlZCh0cnVlKTsKLSAgICAvLyBFbmFibGUgZnVs
bHNjcmVlbiBzbyB0aGUgZnVsbHNjcmVlbiBsYXlvdXQgdGVzdHMgY2FuIHJ1bi4KLSAgICBzZXR0
aW5ncy0+c2V0RnVsbFNjcmVlbkVuYWJsZWQodHJ1ZSk7Ci0gICAgc2V0dGluZ3MtPnNldFZhbGlk
YXRpb25NZXNzYWdlVGltZXJNYWduaWZpY2F0aW9uKC0xKTsKLSAgICBzZXR0aW5ncy0+c2V0Vmlz
dWFsV29yZE1vdmVtZW50RW5hYmxlZChmYWxzZSk7Ci0gICAgc2V0dGluZ3MtPnNldFBhc3N3b3Jk
RWNob0VuYWJsZWQoZmFsc2UpOwotICAgIHNldHRpbmdzLT5zZXRBcHBseURldmljZVNjYWxlRmFj
dG9ySW5Db21wb3NpdG9yKHRydWUpOwotfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViUHJlZmVyZW5jZXMuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlByZWZlcmVuY2VzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExN2Ez
Y2JkMjY1NTdkMzAwODQ5NzMwYjdmNjY2YjA5ZDA2MmQ2NDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViUHJlZmVyZW5jZXMuaAorKysgL2Rldi9udWxsCkBAIC0xLDEyNyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3Ry
aWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBX
ZWJQcmVmZXJlbmNlc19oCi0jZGVmaW5lIFdlYlByZWZlcmVuY2VzX2gKLQotI2luY2x1ZGUgIldl
YlNldHRpbmdzLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCi0jaW5jbHVkZSAi
cGxhdGZvcm0vV2ViVVJMLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLQotbmFtZXNwYWNl
IFdlYktpdCB7Ci1jbGFzcyBXZWJWaWV3OwotfQotCi1zdHJ1Y3QgV2ViUHJlZmVyZW5jZXMgewot
ICAgIFdlYktpdDo6V2ViU3RyaW5nIHN0YW5kYXJkRm9udEZhbWlseTsKLSAgICBXZWJLaXQ6Oldl
YlN0cmluZyBmaXhlZEZvbnRGYW1pbHk7Ci0gICAgV2ViS2l0OjpXZWJTdHJpbmcgc2VyaWZGb250
RmFtaWx5OwotICAgIFdlYktpdDo6V2ViU3RyaW5nIHNhbnNTZXJpZkZvbnRGYW1pbHk7Ci0gICAg
V2ViS2l0OjpXZWJTdHJpbmcgY3Vyc2l2ZUZvbnRGYW1pbHk7Ci0gICAgV2ViS2l0OjpXZWJTdHJp
bmcgZmFudGFzeUZvbnRGYW1pbHk7Ci0KLSAgICAvLyBVU2NyaXB0Q29kZSB1c2VzIC0xIGFuZCAw
IGZvciBVU2NyaXB0SW52YWxpZENvZGUgYW5kIFVTY3JpcHRDb21tb24uCi0gICAgLy8gV2UgbmVl
ZCB0byB1c2UgLTIgYW5kIC0zIGZvciBlbXB0eSB2YWx1ZSBhbmQgZGVsZXRlZCB2YWx1ZS4KLSAg
ICAvLyAoU2VlIFdlYkNvcmU6OlNjcmlwdEZvbnRGYW1pbHlNYXApCi0gICAgc3RydWN0IFVTY3Jp
cHRDb2RlSGFzaFRyYWl0cyA6IFdURjo6R2VuZXJpY0hhc2hUcmFpdHM8aW50PiB7Ci0gICAgICAg
IHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBmYWxzZTsKLSAgICAgICAgc3Rh
dGljIGludCBlbXB0eVZhbHVlKCkgeyByZXR1cm4gLTI7IH0KLSAgICAgICAgc3RhdGljIHZvaWQg
Y29uc3RydWN0RGVsZXRlZFZhbHVlKGludCYgc2xvdCkgeyBzbG90ID0gLTM7IH0KLSAgICAgICAg
c3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoaW50IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA9PSAt
MzsgfQotICAgIH07Ci0KLSAgICAvLyBNYXAgb2YgVVNjcmlwdENvZGUgdG8gZm9udCBzdWNoIGFz
IFVTQ1JJUFRfQVJBQklDIHRvICJNeSBBcmFiaWMgRm9udCIuCi0gICAgdHlwZWRlZiBIYXNoTWFw
PGludCwgV2ViS2l0OjpXZWJTdHJpbmcsIERlZmF1bHRIYXNoPGludD46Okhhc2gsIFVTY3JpcHRD
b2RlSGFzaFRyYWl0cz4gU2NyaXB0Rm9udEZhbWlseU1hcDsKLSAgICBTY3JpcHRGb250RmFtaWx5
TWFwIHN0YW5kYXJkRm9udE1hcDsKLSAgICBTY3JpcHRGb250RmFtaWx5TWFwIGZpeGVkRm9udE1h
cDsKLSAgICBTY3JpcHRGb250RmFtaWx5TWFwIHNlcmlmRm9udE1hcDsKLSAgICBTY3JpcHRGb250
RmFtaWx5TWFwIHNhbnNTZXJpZkZvbnRNYXA7Ci0gICAgU2NyaXB0Rm9udEZhbWlseU1hcCBjdXJz
aXZlRm9udE1hcDsKLSAgICBTY3JpcHRGb250RmFtaWx5TWFwIGZhbnRhc3lGb250TWFwOwotCi0g
ICAgaW50IGRlZmF1bHRGb250U2l6ZTsKLSAgICBpbnQgZGVmYXVsdEZpeGVkRm9udFNpemU7Ci0g
ICAgaW50IG1pbmltdW1Gb250U2l6ZTsKLSAgICBpbnQgbWluaW11bUxvZ2ljYWxGb250U2l6ZTsK
LSAgICBpbnQgbWluaW11bUFjY2VsZXJhdGVkMmRDYW52YXNTaXplOwotCi0gICAgYm9vbCBET01Q
YXN0ZUFsbG93ZWQ7Ci0gICAgYm9vbCBYU1NBdWRpdG9yRW5hYmxlZDsKLSAgICBib29sIGFsbG93
RGlzcGxheU9mSW5zZWN1cmVDb250ZW50OwotICAgIGJvb2wgYWxsb3dGaWxlQWNjZXNzRnJvbUZp
bGVVUkxzOwotICAgIGJvb2wgYWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQ7Ci0gICAgYm9v
bCBhdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZDsKLSAgICBXZWJLaXQ6OldlYlN0cmluZyBkZWZh
dWx0VGV4dEVuY29kaW5nTmFtZTsKLSAgICBib29sIGRldmVsb3BlckV4dHJhc0VuYWJsZWQ7Ci0g
ICAgYm9vbCBleHBlcmltZW50YWxXZWJHTEVuYWJsZWQ7Ci0gICAgYm9vbCBleHBlcmltZW50YWxD
U1NSZWdpb25zRW5hYmxlZDsKLSAgICBib29sIGV4cGVyaW1lbnRhbENTU0dyaWRMYXlvdXRFbmFi
bGVkOwotICAgIGJvb2wgamF2YUVuYWJsZWQ7Ci0gICAgYm9vbCBqYXZhU2NyaXB0Q2FuQWNjZXNz
Q2xpcGJvYXJkOwotICAgIGJvb2wgamF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxs
eTsKLSAgICBib29sIHN1cHBvcnRzTXVsdGlwbGVXaW5kb3dzOwotICAgIGJvb2wgamF2YVNjcmlw
dEVuYWJsZWQ7Ci0gICAgYm9vbCBsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHk7Ci0gICAgYm9vbCBs
b2NhbFN0b3JhZ2VFbmFibGVkOwotICAgIGJvb2wgb2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVF
bmFibGVkOwotICAgIGJvb2wgcGx1Z2luc0VuYWJsZWQ7Ci0gICAgYm9vbCBzaHJpbmtzU3RhbmRh
bG9uZUltYWdlc1RvRml0OwotICAgIGJvb2wgdGV4dEFyZWFzQXJlUmVzaXphYmxlOwotICAgIFdl
YktpdDo6V2ViVVJMIHVzZXJTdHlsZVNoZWV0TG9jYXRpb247Ci0gICAgYm9vbCB1c2VzUGFnZUNh
Y2hlOwotICAgIGJvb2wgcGFnZUNhY2hlU3VwcG9ydHNQbHVnaW5zOwotICAgIGJvb2wgd2ViU2Vj
dXJpdHlFbmFibGVkOwotICAgIGJvb2wgYWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHM7
Ci0gICAgV2ViS2l0OjpXZWJTZXR0aW5nczo6RWRpdGluZ0JlaGF2aW9yIGVkaXRpbmdCZWhhdmlv
cjsKLSAgICBib29sIHRhYnNUb0xpbmtzOwotICAgIGJvb2wgaHlwZXJsaW5rQXVkaXRpbmdFbmFi
bGVkOwotICAgIGJvb2wgY2FyZXRCcm93c2luZ0VuYWJsZWQ7Ci0gICAgYm9vbCBhY2NlbGVyYXRl
ZENvbXBvc2l0aW5nRm9yVmlkZW9FbmFibGVkOwotICAgIGJvb2wgYWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0ZvckZpeGVkUG9zaXRpb25FbmFibGVkOwotICAgIGJvb2wgYWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0VuYWJsZWQ7Ci0gICAgYm9vbCBmb3JjZUNvbXBvc2l0aW5nTW9kZTsKLSAgICBib29sIGFj
Y2VsZXJhdGVkMmRDYW52YXNFbmFibGVkOwotICAgIGJvb2wgZGVmZXJyZWQyZENhbnZhc0VuYWJs
ZWQ7Ci0gICAgYm9vbCBhY2NlbGVyYXRlZFBhaW50aW5nRW5hYmxlZDsKLSAgICBib29sIHBlclRp
bGVQYWludGluZ0VuYWJsZWQ7Ci0gICAgYm9vbCBhY2NlbGVyYXRlZEFuaW1hdGlvbkVuYWJsZWQ7
Ci0gICAgYm9vbCBkZWZlcnJlZEltYWdlRGVjb2RpbmdFbmFibGVkOwotICAgIGJvb2wgbWVkaWFQ
bGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmU7Ci0gICAgYm9vbCBtb2NrU2Nyb2xsYmFyc0VuYWJs
ZWQ7Ci0gICAgYm9vbCBjc3NDdXN0b21GaWx0ZXJFbmFibGVkOwotICAgIGJvb2wgc2hvdWxkUmVz
cGVjdEltYWdlT3JpZW50YXRpb247Ci0KLSAgICBXZWJQcmVmZXJlbmNlcygpIHsgcmVzZXQoKTsg
fQotICAgIHZvaWQgcmVzZXQoKTsKLSAgICB2b2lkIGFwcGx5VG8oV2ViS2l0OjpXZWJWaWV3Kik7
Ci19OwotCi0jZW5kaWYgLy8gV2ViUHJlZmVyZW5jZXNfaApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCmluZGV4IGJjNWY5OTQyYjlkNThmODU1YTkzNTI4
ZTk3MjQzZmE0OWE3MDcxMGUuLjViYTk3YmVkZjBkMjI3ZGM0ODhhYjU4Y2E2ZmMwZGI2ZTIwOGQy
Y2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0
LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAK
QEAgLTEzOTEsNiArMTM5MSwyNiBAQCBXZWJLaXQ6OldlYlN0cmluZyBXZWJWaWV3SG9zdDo6Z2V0
QWJzb2x1dGVXZWJTdHJpbmdGcm9tVVRGOFBhdGgoY29uc3Qgc3RkOjpzdHJpbgogICAgIHJldHVy
biB3ZWJraXRfc3VwcG9ydDo6R2V0QWJzb2x1dGVXZWJTdHJpbmdGcm9tVVRGOFBhdGgocGF0aCk7
CiB9CiAKK1dlYlVSTCBXZWJWaWV3SG9zdDo6bG9jYWxGaWxlVG9EYXRhVVJMKGNvbnN0IFdlYktp
dDo6V2ViVVJMJiB1cmwpCit7CisgICAgcmV0dXJuIHdlYmtpdF9zdXBwb3J0OjpMb2NhbEZpbGVU
b0RhdGFVUkwodXJsKTsKK30KKworV2ViVVJMIFdlYlZpZXdIb3N0OjpyZXdyaXRlTGF5b3V0VGVz
dHNVUkwoY29uc3Qgc3RkOjpzdHJpbmcmIHVybCkKK3sKKyAgICByZXR1cm4gd2Via2l0X3N1cHBv
cnQ6OlJld3JpdGVMYXlvdXRUZXN0c1VSTCh1cmwpOworfQorCitXZWJQcmVmZXJlbmNlcyogV2Vi
Vmlld0hvc3Q6OnByZWZlcmVuY2VzKCkKK3sKKyAgICByZXR1cm4gbV9zaGVsbC0+cHJlZmVyZW5j
ZXMoKTsKK30KKwordm9pZCBXZWJWaWV3SG9zdDo6YXBwbHlQcmVmZXJlbmNlcygpCit7CisgICAg
bV9zaGVsbC0+YXBwbHlQcmVmZXJlbmNlcygpOworfQorCiAvLyBQdWJsaWMgZnVuY3Rpb25zIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKIFdlYlZpZXdIb3N0OjpXZWJWaWV3SG9zdChUZXN0U2hlbGwqIHNoZWxsKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKaW5kZXggOTc5MDZlYjI2NzJmYjYw
OTg5ODY0MGEwZmMyOWQ5NDJhM2EzNmNmMi4uODAwZDBhZmYxMTIwNTE0ZWUwMjc5YjM1OGRlYWFj
MWUxZTQyYmE4MCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2Vi
Vmlld0hvc3QuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9z
dC5oCkBAIC0xNDMsNiArMTQzLDEwIEBAIGNsYXNzIFdlYlZpZXdIb3N0IDogcHVibGljIFdlYktp
dDo6V2ViVmlld0NsaWVudCwgcHVibGljIFdlYktpdDo6V2ViRnJhbWVDbGllbnQsCiAgICAgdmly
dHVhbCBXZWJLaXQ6OldlYlN0cmluZyByZWdpc3Rlcklzb2xhdGVkRmlsZVN5c3RlbShjb25zdCBX
ZWJLaXQ6OldlYlZlY3RvcjxXZWJLaXQ6OldlYlN0cmluZz4mIGFic29sdXRlRmlsZW5hbWVzKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIGxvbmcgbG9uZyBnZXRDdXJyZW50VGltZUluTWlsbGlzZWNv
bmQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViU3RyaW5nIGdldEFic29sdXRl
V2ViU3RyaW5nRnJvbVVURjhQYXRoKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIFdlYktpdDo6V2ViVVJMIGxvY2FsRmlsZVRvRGF0YVVSTChjb25zdCBXZWJL
aXQ6OldlYlVSTCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJVUkwgcmV3cml0
ZUxheW91dFRlc3RzVVJMKGNvbnN0IHN0ZDo6c3RyaW5nJikgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBXZWJUZXN0UnVubmVyOjpXZWJQcmVmZXJlbmNlcyogcHJlZmVyZW5jZXMoKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgYXBwbHlQcmVmZXJlbmNlcygpIE9WRVJSSURFOwogCiAgICAgLy8g
TmF2aWdhdGlvbkhvc3QKICAgICB2aXJ0dWFsIGJvb2wgbmF2aWdhdGUoY29uc3QgVGVzdE5hdmln
YXRpb25FbnRyeSYsIGJvb2wgcmVsb2FkKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177437</attachid>
            <date>2012-12-04 00:49:40 -0800</date>
            <delta_ts>2012-12-04 13:01:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103841-20121204094705.patch</filename>
            <type>text/plain</type>
            <size>78490</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NDg0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDU0ZGFlZWQ5NjUxYTNmNjRlY2NiZWVhY2MyYjRjMmU1
ZDRiNjc2ZC4uZDE4M2U3MmUwMjZhZWI0ZDBmMjVmMjllY2M4ZGIxYmExNGRiZjg4NCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5
IEBACisyMDEyLTEyLTAyICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtjaHJvbWl1bV0gbW92ZSBXZWJQcmVmZXJlbmNlcyBhbmQgbWV0aG9kcyBmb3Ig
bW9kaWZ5aW5nIHRoZW0gdG8gdGhlIFRlc3RSdW5uZXIgbGlicmFyeQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzODQxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVu
ZGVyVHJlZS5neXBpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RS
dW5uZXIuY3BwOgorICAgICAgICAoRFJUVGVzdFJ1bm5lcjo6RFJUVGVzdFJ1bm5lcik6CisgICAg
ICAgIChEUlRUZXN0UnVubmVyOjpyZXNldCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vRFJUVGVzdFJ1bm5lci5oOgorICAgICAgICAoRFJUVGVzdFJ1bm5lcik6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViUHJlZmVyZW5j
ZXMuaDogUmVuYW1lZCBmcm9tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlByZWZl
cmVuY2VzLmguCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcik6Cisg
ICAgICAgIChXZWJQcmVmZXJlbmNlcyk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJQcmVm
ZXJlbmNlczo6V2ViUHJlZmVyZW5jZXMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3REZWxlZ2F0ZS5oOgorICAgICAgICAoV2ViVGVz
dFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0RGVsZWdhdGUpOgorICAgICAgICAoV2ViVGVzdFJ1
bm5lcjo6V2ViVGVzdERlbGVnYXRlOjpsb2NhbEZpbGVUb0RhdGFVUkwpOgorICAgICAgICAoV2Vi
VGVzdFJ1bm5lcjo6V2ViVGVzdERlbGVnYXRlOjpyZXdyaXRlTGF5b3V0VGVzdHNVUkwpOgorICAg
ICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdERlbGVnYXRlOjpwcmVmZXJlbmNlcyk6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0RGVsZWdhdGU6OmFwcGx5UHJlZmVyZW5jZXMpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5u
ZXIuY3BwOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcik6
CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpyZXNldCk6CisgICAgICAgIChX
ZWJUZXN0UnVubmVyOjpUZXN0UnVubmVyOjpzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQpOgorICAg
ICAgICAoV2ViVGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UnVubmVy
OjpzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRl
c3RSdW5uZXI6OnNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKToKKyAgICAgICAgKFdlYlRl
c3RSdW5uZXI6OlRlc3RSdW5uZXI6OnNldFBvcHVwQmxvY2tpbmdFbmFibGVkKToKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6OlRlc3RSdW5uZXI6OnNldEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9h
cmQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6c2V0WFNTQXVkaXRvckVu
YWJsZWQpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1bm5lcjo6c2V0QWxsb3dVbml2
ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFJ1
bm5lcjo6c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKToKKyAgICAgICAgKFdlYlRlc3RS
dW5uZXI6OlRlc3RSdW5uZXI6Om92ZXJyaWRlUHJlZmVyZW5jZSk6CisgICAgICAgIChXZWJUZXN0
UnVubmVyOjpUZXN0UnVubmVyOjpzZXRQbHVnaW5zRW5hYmxlZCk6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oOgorICAgICAgICAo
VGVzdFJ1bm5lcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9zcmMvV2ViUHJlZmVyZW5jZXMuY3BwOiBSZW5hbWVkIGZyb20gVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViUHJlZmVyZW5jZXMuY3BwLgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6
V2ViUHJlZmVyZW5jZXM6OnJlc2V0KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgorICAgICAg
ICAoV2ViVGVzdFJ1bm5lcjo6V2ViUHJlZmVyZW5jZXM6OmFwcGx5VG8pOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5oOgorICAgICAgICAoVGVzdFNoZWxsOjpw
cmVmZXJlbmNlcyk6CisgICAgICAgIChUZXN0U2hlbGwpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAgICAgICAgKFdlYlZpZXdIb3N0Ojpsb2Nh
bEZpbGVUb0RhdGFVUkwpOgorICAgICAgICAoV2ViVmlld0hvc3Q6OnJld3JpdGVMYXlvdXRUZXN0
c1VSTCk6CisgICAgICAgIChXZWJWaWV3SG9zdDo6cHJlZmVyZW5jZXMpOgorICAgICAgICAoV2Vi
Vmlld0hvc3Q6OmFwcGx5UHJlZmVyZW5jZXMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1dlYlZpZXdIb3N0Lmg6CisgICAgICAgIChXZWJWaWV3SG9zdCk6CisKIDIwMTItMTIt
MDMgIFphbiBEb2JlcnNlayAgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkLCBmdW5jdGlvbmFsaXR5IGZpeCBhZnRlciByMTM2NDM3LgpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaSBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKaW5kZXggYWM0ZDJhNjIyYmVlMDdhYjY2ZWY4MjJhOTdm
YjM0YWEzY2ZlY2FmYi4uZDM3MmZhY2ZjYzIxMTYwODBlZGI3ZmJjN2Y0MDMwNzliZTYxMDI2ZCAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCkBAIC00OCw4ICs0OCw2
IEBACiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFdlYlBsdWdpbi5oJywKICAgICAgICAgICAg
ICdjaHJvbWl1bS9XZWJQZXJtaXNzaW9ucy5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1dl
YlBlcm1pc3Npb25zLmgnLAotICAgICAgICAgICAgJ2Nocm9taXVtL1dlYlByZWZlcmVuY2VzLmNw
cCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vV2ViUHJlZmVyZW5jZXMuaCcsCiAgICAgICAgICAg
ICAnY2hyb21pdW0vV2ViVGhlbWVDb250cm9sRFJUV2luLmNwcCcsCiAgICAgICAgICAgICAnY2hy
b21pdW0vV2ViVGhlbWVDb250cm9sRFJUV2luLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1dl
YlRoZW1lRW5naW5lRFJUTWFjLm1tJywKQEAgLTY5LDYgKzY3LDcgQEAKICAgICAgICAgICAgICdj
aHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oJywK
ICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0RGVsZWdhdGUu
aCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViRXZlbnRTZW5k
ZXIuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViUHJlZmVy
ZW5jZXMuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGFz
ay5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50
ZXJmYWNlcy5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJU
ZXN0UHJveHkuaCcsCkBAIC05NCw2ICs5Myw3IEBACiAgICAgICAgICAgICAnY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9XZWJBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAnLAogICAgICAgICAgICAgJ2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYkV2ZW50U2VuZGVyLmNwcCcsCisgICAgICAgICAgICAn
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViUHJlZmVyZW5jZXMuY3BwJywKICAgICAgICAgICAg
ICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUYXNrLmNwcCcsCiAgICAgICAgICAgICAnY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdEludGVyZmFjZXMuY3BwJywKICAgICAgICAgICAg
ICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0UHJveHkuY3BwJywKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5jcHAKaW5kZXggZTIyNTVjNzkz
YjcwMGQ4YTA3ZDM0ZDY2YTQ1NTY4MTVmZmY4NGY1YS4uMmVmMDJhYWEyNTdiOGNjZTgyYjkwZmNi
YTNhMzYwYTA2ZDkzNGRiNiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vRFJUVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
RFJUVGVzdFJ1bm5lci5jcHAKQEAgLTE1Myw3ICsxNTMsNiBAQCBEUlRUZXN0UnVubmVyOjpEUlRU
ZXN0UnVubmVyKFRlc3RTaGVsbCogc2hlbGwpCiAjZW5kaWYKICAgICBiaW5kTWV0aG9kKCJub3Rp
ZnlEb25lIiwgJkRSVFRlc3RSdW5uZXI6Om5vdGlmeURvbmUpOwogICAgIGJpbmRNZXRob2QoIm51
bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzIiwgJkRSVFRlc3RSdW5u
ZXI6OiBudW1iZXJPZlBlbmRpbmdHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0cyk7Ci0gICAg
YmluZE1ldGhvZCgib3ZlcnJpZGVQcmVmZXJlbmNlIiwgJkRSVFRlc3RSdW5uZXI6Om92ZXJyaWRl
UHJlZmVyZW5jZSk7CiAgICAgYmluZE1ldGhvZCgicGF0aFRvTG9jYWxSZXNvdXJjZSIsICZEUlRU
ZXN0UnVubmVyOjpwYXRoVG9Mb2NhbFJlc291cmNlKTsKICAgICBiaW5kTWV0aG9kKCJxdWV1ZUJh
Y2tOYXZpZ2F0aW9uIiwgJkRSVFRlc3RSdW5uZXI6OnF1ZXVlQmFja05hdmlnYXRpb24pOwogICAg
IGJpbmRNZXRob2QoInF1ZXVlRm9yd2FyZE5hdmlnYXRpb24iLCAmRFJUVGVzdFJ1bm5lcjo6cXVl
dWVGb3J3YXJkTmF2aWdhdGlvbik7CkBAIC0xNjQsMTEgKzE2Myw4IEBAIERSVFRlc3RSdW5uZXI6
OkRSVFRlc3RSdW5uZXIoVGVzdFNoZWxsKiBzaGVsbCkKICAgICBiaW5kTWV0aG9kKCJxdWV1ZVJl
bG9hZCIsICZEUlRUZXN0UnVubmVyOjpxdWV1ZVJlbG9hZCk7CiAgICAgYmluZE1ldGhvZCgicmVw
YWludFN3ZWVwSG9yaXpvbnRhbGx5IiwgJkRSVFRlc3RSdW5uZXI6OnJlcGFpbnRTd2VlcEhvcml6
b250YWxseSk7CiAgICAgYmluZE1ldGhvZCgic2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRl
bnQiLCAmRFJUVGVzdFJ1bm5lcjo6c2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQpOwot
ICAgIGJpbmRNZXRob2QoInNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyIsICZEUlRUZXN0
UnVubmVyOjpzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMpOwogICAgIGJpbmRNZXRob2Qo
InNldEFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50IiwgJkRSVFRlc3RSdW5uZXI6OnNldEFs
bG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50KTsKLSAgICBiaW5kTWV0aG9kKCJzZXRBbGxvd1Vu
aXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyIsICZEUlRUZXN0UnVubmVyOjpzZXRBbGxvd1VuaXZl
cnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyk7CiAgICAgYmluZE1ldGhvZCgic2V0QWx3YXlzQWNjZXB0
Q29va2llcyIsICZEUlRUZXN0UnVubmVyOjpzZXRBbHdheXNBY2NlcHRDb29raWVzKTsKLSAgICBi
aW5kTWV0aG9kKCJzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZCIsICZEUlRUZXN0UnVubmVy
OjpzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZCk7CiAgICAgYmluZE1ldGhvZCgic2V0Q2Fu
T3BlbldpbmRvd3MiLCAmRFJUVGVzdFJ1bm5lcjo6c2V0Q2FuT3BlbldpbmRvd3MpOwogICAgIGJp
bmRNZXRob2QoInNldENsb3NlUmVtYWluaW5nV2luZG93c1doZW5Db21wbGV0ZSIsICZEUlRUZXN0
UnVubmVyOjpzZXRDbG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29tcGxldGUpOwogICAgIGJpbmRN
ZXRob2QoInNldEN1c3RvbVBvbGljeURlbGVnYXRlIiwgJkRSVFRlc3RSdW5uZXI6OnNldEN1c3Rv
bVBvbGljeURlbGVnYXRlKTsKQEAgLTE3NiwyOSArMTcyLDIzIEBAIERSVFRlc3RSdW5uZXI6OkRS
VFRlc3RSdW5uZXIoVGVzdFNoZWxsKiBzaGVsbCkKICAgICBiaW5kTWV0aG9kKCJzZXREZWZlck1h
aW5SZXNvdXJjZURhdGFMb2FkIiwgJkRSVFRlc3RSdW5uZXI6OnNldERlZmVyTWFpblJlc291cmNl
RGF0YUxvYWQpOwogICAgIGJpbmRNZXRob2QoInNldEF1ZGlvRGF0YSIsICZEUlRUZXN0UnVubmVy
OjpzZXRBdWRpb0RhdGEpOwogICAgIGJpbmRNZXRob2QoInNldEdlb2xvY2F0aW9uUGVybWlzc2lv
biIsICZEUlRUZXN0UnVubmVyOjpzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24pOwotICAgIGJpbmRN
ZXRob2QoInNldEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQiLCAmRFJUVGVzdFJ1bm5lcjo6
c2V0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZCk7CiAgICAgYmluZE1ldGhvZCgic2V0TW9j
a0RldmljZU9yaWVudGF0aW9uIiwgJkRSVFRlc3RSdW5uZXI6OnNldE1vY2tEZXZpY2VPcmllbnRh
dGlvbik7CiAgICAgYmluZE1ldGhvZCgic2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWls
YWJsZUVycm9yIiwgJkRSVFRlc3RSdW5uZXI6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uVW5h
dmFpbGFibGVFcnJvcik7CiAgICAgYmluZE1ldGhvZCgic2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRp
b24iLCAmRFJUVGVzdFJ1bm5lcjo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24pOwotICAgIGJp
bmRNZXRob2QoInNldFBsdWdpbnNFbmFibGVkIiwgJkRSVFRlc3RSdW5uZXI6OnNldFBsdWdpbnNF
bmFibGVkKTsKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgIGJpbmRNZXRob2QoInNldFBv
aW50ZXJMb2NrV2lsbFJlc3BvbmRBc3luY2hyb25vdXNseSIsICZEUlRUZXN0UnVubmVyOjpzZXRQ
b2ludGVyTG9ja1dpbGxSZXNwb25kQXN5bmNocm9ub3VzbHkpOwogICAgIGJpbmRNZXRob2QoInNl
dFBvaW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5IiwgJkRSVFRlc3RSdW5uZXI6OnNldFBv
aW50ZXJMb2NrV2lsbEZhaWxTeW5jaHJvbm91c2x5KTsKICNlbmRpZgotICAgIGJpbmRNZXRob2Qo
InNldFBvcHVwQmxvY2tpbmdFbmFibGVkIiwgJkRSVFRlc3RSdW5uZXI6OnNldFBvcHVwQmxvY2tp
bmdFbmFibGVkKTsKICAgICBiaW5kTWV0aG9kKCJzZXRQT1NJWExvY2FsZSIsICZEUlRUZXN0UnVu
bmVyOjpzZXRQT1NJWExvY2FsZSk7CiAgICAgYmluZE1ldGhvZCgic2V0UHJpbnRpbmciLCAmRFJU
VGVzdFJ1bm5lcjo6c2V0UHJpbnRpbmcpOwogICAgIGJpbmRNZXRob2QoInNldFNlbGVjdFRyYWls
aW5nV2hpdGVzcGFjZUVuYWJsZWQiLCAmRFJUVGVzdFJ1bm5lcjo6c2V0U2VsZWN0VHJhaWxpbmdX
aGl0ZXNwYWNlRW5hYmxlZCk7CiAgICAgYmluZE1ldGhvZCgic2V0QmFja2luZ1NjYWxlRmFjdG9y
IiwgJkRSVFRlc3RSdW5uZXI6OnNldEJhY2tpbmdTY2FsZUZhY3Rvcik7CiAgICAgYmluZE1ldGhv
ZCgic2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkIiwgJkRSVFRlc3RSdW5uZXI6OnNldFNtYXJ0
SW5zZXJ0RGVsZXRlRW5hYmxlZCk7CiAgICAgYmluZE1ldGhvZCgic2V0U3RvcFByb3Zpc2lvbmFs
RnJhbWVMb2FkcyIsICZEUlRUZXN0UnVubmVyOjpzZXRTdG9wUHJvdmlzaW9uYWxGcmFtZUxvYWRz
KTsKLSAgICBiaW5kTWV0aG9kKCJzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQiLCAmRFJUVGVzdFJ1
bm5lcjo6c2V0VXNlclN0eWxlU2hlZXRFbmFibGVkKTsKLSAgICBiaW5kTWV0aG9kKCJzZXRVc2Vy
U3R5bGVTaGVldExvY2F0aW9uIiwgJkRSVFRlc3RSdW5uZXI6OnNldFVzZXJTdHlsZVNoZWV0TG9j
YXRpb24pOwogICAgIGJpbmRNZXRob2QoInNldFdpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVyIiwg
JkRSVFRlc3RSdW5uZXI6OnNldFdpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVyKTsKICAgICBiaW5k
TWV0aG9kKCJzZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbCIsICZEUlRUZXN0UnVubmVyOjpz
ZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbCk7CiAgICAgYmluZE1ldGhvZCgic2V0V2lsbFNl
bmRSZXF1ZXN0UmV0dXJuc051bGxPblJlZGlyZWN0IiwgJkRSVFRlc3RSdW5uZXI6OnNldFdpbGxT
ZW5kUmVxdWVzdFJldHVybnNOdWxsT25SZWRpcmVjdCk7CiAgICAgYmluZE1ldGhvZCgic2V0V2lu
ZG93SXNLZXkiLCAmRFJUVGVzdFJ1bm5lcjo6c2V0V2luZG93SXNLZXkpOwotICAgIGJpbmRNZXRo
b2QoInNldFhTU0F1ZGl0b3JFbmFibGVkIiwgJkRSVFRlc3RSdW5uZXI6OnNldFhTU0F1ZGl0b3JF
bmFibGVkKTsKICAgICBiaW5kTWV0aG9kKCJzaG93V2ViSW5zcGVjdG9yIiwgJkRSVFRlc3RSdW5u
ZXI6OnNob3dXZWJJbnNwZWN0b3IpOwogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgIGJp
bmRNZXRob2QoInNpbXVsYXRlTGVnYWN5V2ViTm90aWZpY2F0aW9uQ2xpY2siLCAmRFJUVGVzdFJ1
bm5lcjo6c2ltdWxhdGVMZWdhY3lXZWJOb3RpZmljYXRpb25DbGljayk7CkBAIC01ODIsNyArNTcy
LDYgQEAgdm9pZCBEUlRUZXN0UnVubmVyOjpyZXNldCgpCiAgICAgbV93ZWJIaXN0b3J5SXRlbUNv
dW50LnNldCgwKTsKICAgICBtX3RpdGxlVGV4dERpcmVjdGlvbi5zZXQoImx0ciIpOwogICAgIG1f
aW50ZXJjZXB0UG9zdE1lc3NhZ2Uuc2V0KGZhbHNlKTsKLSAgICBtX3VzZXJTdHlsZVNoZWV0TG9j
YXRpb24gPSBXZWJVUkwoKTsKICAgICBtX2lzUHJpbnRpbmcgPSBmYWxzZTsKIAogICAgIHdlYmtp
dF9zdXBwb3J0OjpTZXRBY2NlcHRBbGxDb29raWVzKGZhbHNlKTsKQEAgLTY2Myw0NSArNjUyLDYg
QEAgdm9pZCBEUlRUZXN0UnVubmVyOjpzZXRXaW5kb3dJc0tleShjb25zdCBDcHBBcmd1bWVudExp
c3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCoKICAgICByZXN1bHQtPnNldE51bGwoKTsKIH0KIAot
dm9pZCBEUlRUZXN0UnVubmVyOjpzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQoY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKLXsKLSAgICBpZiAoYXJn
dW1lbnRzLnNpemUoKSA+IDAgJiYgYXJndW1lbnRzWzBdLmlzQm9vbCgpKSB7Ci0gICAgICAgIG1f
c2hlbGwtPnByZWZlcmVuY2VzKCktPnVzZXJTdHlsZVNoZWV0TG9jYXRpb24gPSBhcmd1bWVudHNb
MF0udmFsdWUuYm9vbFZhbHVlID8gbV91c2VyU3R5bGVTaGVldExvY2F0aW9uIDogV2ViVVJMKCk7
Ci0gICAgICAgIG1fc2hlbGwtPmFwcGx5UHJlZmVyZW5jZXMoKTsKLSAgICB9Ci0gICAgcmVzdWx0
LT5zZXROdWxsKCk7Ci19Ci0KLXZvaWQgRFJUVGVzdFJ1bm5lcjo6c2V0VXNlclN0eWxlU2hlZXRM
b2NhdGlvbihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVz
dWx0KQotewotICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0uaXNT
dHJpbmcoKSkgewotICAgICAgICBtX3VzZXJTdHlsZVNoZWV0TG9jYXRpb24gPSB3ZWJraXRfc3Vw
cG9ydDo6TG9jYWxGaWxlVG9EYXRhVVJMKAotICAgICAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlJl
d3JpdGVMYXlvdXRUZXN0c1VSTChhcmd1bWVudHNbMF0udG9TdHJpbmcoKSkpOwotICAgICAgICBt
X3NoZWxsLT5wcmVmZXJlbmNlcygpLT51c2VyU3R5bGVTaGVldExvY2F0aW9uID0gbV91c2VyU3R5
bGVTaGVldExvY2F0aW9uOwotICAgICAgICBtX3NoZWxsLT5hcHBseVByZWZlcmVuY2VzKCk7Ci0g
ICAgfQotICAgIHJlc3VsdC0+c2V0TnVsbCgpOwotfQotCi12b2lkIERSVFRlc3RSdW5uZXI6OnNl
dEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1l
bnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCi17Ci0gICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPiAw
ICYmIGFyZ3VtZW50c1swXS5pc0Jvb2woKSkgewotICAgICAgICBtX3NoZWxsLT5wcmVmZXJlbmNl
cygpLT5hdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZCA9IGFyZ3VtZW50c1swXS52YWx1ZS5ib29s
VmFsdWU7Ci0gICAgICAgIG1fc2hlbGwtPmFwcGx5UHJlZmVyZW5jZXMoKTsKLSAgICB9Ci0gICAg
cmVzdWx0LT5zZXROdWxsKCk7Ci19Ci0KLXZvaWQgRFJUVGVzdFJ1bm5lcjo6c2V0UG9wdXBCbG9j
a2luZ0VuYWJsZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQq
IHJlc3VsdCkKLXsKLSAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+IDAgJiYgYXJndW1lbnRzWzBd
LmlzQm9vbCgpKSB7Ci0gICAgICAgIGJvb2wgYmxvY2tQb3B1cHMgPSBhcmd1bWVudHNbMF0udG9C
b29sZWFuKCk7Ci0gICAgICAgIG1fc2hlbGwtPnByZWZlcmVuY2VzKCktPmphdmFTY3JpcHRDYW5P
cGVuV2luZG93c0F1dG9tYXRpY2FsbHkgPSAhYmxvY2tQb3B1cHM7Ci0gICAgICAgIG1fc2hlbGwt
PmFwcGx5UHJlZmVyZW5jZXMoKTsKLSAgICB9Ci0gICAgcmVzdWx0LT5zZXROdWxsKCk7Ci19Ci0K
IHZvaWQgRFJUVGVzdFJ1bm5lcjo6c2V0SW1hZ2VzQWxsb3dlZChjb25zdCBDcHBBcmd1bWVudExp
c3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIGlmIChhcmd1bWVudHMu
c2l6ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0uaXNCb29sKCkpCkBAIC05MzYsMzMgKzg4Niw2IEBA
IHZvaWQgRFJUVGVzdFJ1bm5lcjo6cmVwYWludFN3ZWVwSG9yaXpvbnRhbGx5KGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYsIENwcFZhcmlhbnQqCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CiAKLXZv
aWQgRFJUVGVzdFJ1bm5lcjo6c2V0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZChjb25zdCBD
cHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQotewotICAgIGlm
IChhcmd1bWVudHMuc2l6ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0uaXNCb29sKCkpIHsKLSAgICAg
ICAgbV9zaGVsbC0+cHJlZmVyZW5jZXMoKS0+amF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZCA9
IGFyZ3VtZW50c1swXS52YWx1ZS5ib29sVmFsdWU7Ci0gICAgICAgIG1fc2hlbGwtPmFwcGx5UHJl
ZmVyZW5jZXMoKTsKLSAgICB9Ci0gICAgcmVzdWx0LT5zZXROdWxsKCk7Ci19Ci0KLXZvaWQgRFJU
VGVzdFJ1bm5lcjo6c2V0WFNTQXVkaXRvckVuYWJsZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBh
cmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKLXsKLSAgICBpZiAoYXJndW1lbnRzLnNpemUo
KSA+IDAgJiYgYXJndW1lbnRzWzBdLmlzQm9vbCgpKSB7Ci0gICAgICAgIG1fc2hlbGwtPnByZWZl
cmVuY2VzKCktPlhTU0F1ZGl0b3JFbmFibGVkID0gYXJndW1lbnRzWzBdLnZhbHVlLmJvb2xWYWx1
ZTsKLSAgICAgICAgbV9zaGVsbC0+YXBwbHlQcmVmZXJlbmNlcygpOwotICAgIH0KLSAgICByZXN1
bHQtPnNldE51bGwoKTsKLX0KLQotdm9pZCBEUlRUZXN0UnVubmVyOjpzZXRBbGxvd1VuaXZlcnNh
bEFjY2Vzc0Zyb21GaWxlVVJMcyhjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3Bw
VmFyaWFudCogcmVzdWx0KQotewotICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpID4gMCAmJiBhcmd1
bWVudHNbMF0uaXNCb29sKCkpIHsKLSAgICAgICAgbV9zaGVsbC0+cHJlZmVyZW5jZXMoKS0+YWxs
b3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMgPSBhcmd1bWVudHNbMF0udmFsdWUuYm9vbFZh
bHVlOwotICAgICAgICBtX3NoZWxsLT5hcHBseVByZWZlcmVuY2VzKCk7Ci0gICAgfQotICAgIHJl
c3VsdC0+c2V0TnVsbCgpOwotfQotCiB2b2lkIERSVFRlc3RSdW5uZXI6OnNldEFsbG93RGlzcGxh
eU9mSW5zZWN1cmVDb250ZW50KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBW
YXJpYW50KiByZXN1bHQpCiB7CiAgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPiAwICYmIGFyZ3Vt
ZW50c1swXS5pc0Jvb2woKSkKQEAgLTk3MSwxNSArODk0LDYgQEAgdm9pZCBEUlRUZXN0UnVubmVy
OjpzZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudChjb25zdCBDcHBBcmd1bWVudExpc3Qm
IGFyZ3UKICAgICByZXN1bHQtPnNldE51bGwoKTsKIH0KIAotdm9pZCBEUlRUZXN0UnVubmVyOjpz
ZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1
bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKLXsKLSAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+
IDAgJiYgYXJndW1lbnRzWzBdLmlzQm9vbCgpKSB7Ci0gICAgICAgIG1fc2hlbGwtPnByZWZlcmVu
Y2VzKCktPmFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyA9IGFyZ3VtZW50c1swXS52YWx1ZS5i
b29sVmFsdWU7Ci0gICAgICAgIG1fc2hlbGwtPmFwcGx5UHJlZmVyZW5jZXMoKTsKLSAgICB9Ci0g
ICAgcmVzdWx0LT5zZXROdWxsKCk7Ci19Ci0KIHZvaWQgRFJUVGVzdFJ1bm5lcjo6c2V0QWxsb3dS
dW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMs
IENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+IDAgJiYg
YXJndW1lbnRzWzBdLmlzQm9vbCgpKQpAQCAtOTg4LDEzMCArOTAyLDYgQEAgdm9pZCBEUlRUZXN0
UnVubmVyOjpzZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudChjb25zdCBDcHBBcmd1bWVu
dExpc3QmIGFyZ3UKICAgICByZXN1bHQtPnNldE51bGwoKTsKIH0KIAotLy8gU2V0cyBtYXAgYmFz
ZWQgb24gc2NyaXB0Rm9udFBhaXJzLCBhIGNvbGxhcHNlZCB2ZWN0b3Igb2YgcGFpcnMgb2YgSVNP
IDE1OTI0Ci0vLyBmb3VyLWxldHRlciBzY3JpcHQgY29kZSBhbmQgZm9udCBzdWNoIGFzOgotLy8g
eyAiQXJhYiIsICJNeSBBcmFiaWMgRm9udCIsICJHcmVrIiwgIk15IEdyZWVrIEZvbnQiIH0KLXN0
YXRpYyB2b2lkIHNldEZvbnRNYXAoV2ViUHJlZmVyZW5jZXM6OlNjcmlwdEZvbnRGYW1pbHlNYXAm
IG1hcCwgY29uc3QgVmVjdG9yPFdlYlN0cmluZz4mIHNjcmlwdEZvbnRQYWlycykKLXsKLSAgICBt
YXAuY2xlYXIoKTsKLSAgICBzaXplX3QgaSA9IDA7Ci0gICAgd2hpbGUgKGkgKyAxIDwgc2NyaXB0
Rm9udFBhaXJzLnNpemUoKSkgewotICAgICAgICBjb25zdCBXZWJTdHJpbmcmIHNjcmlwdCA9IHNj
cmlwdEZvbnRQYWlyc1tpKytdOwotICAgICAgICBjb25zdCBXZWJTdHJpbmcmIGZvbnQgPSBzY3Jp
cHRGb250UGFpcnNbaSsrXTsKLQotICAgICAgICBpbnQzMl90IGNvZGUgPSB1X2dldFByb3BlcnR5
VmFsdWVFbnVtKFVDSEFSX1NDUklQVCwgc2NyaXB0LnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBp
ZiAoY29kZSA+PSAwICYmIGNvZGUgPCBVU0NSSVBUX0NPREVfTElNSVQpCi0gICAgICAgICAgICBt
YXAuc2V0KHN0YXRpY19jYXN0PGludD4oY29kZSksIGZvbnQpOwotICAgIH0KLX0KLQotdm9pZCBE
UlRUZXN0UnVubmVyOjpvdmVycmlkZVByZWZlcmVuY2UoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBh
cmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKLXsKLSAgICByZXN1bHQtPnNldE51bGwoKTsK
LSAgICBpZiAoYXJndW1lbnRzLnNpemUoKSAhPSAyIHx8ICFhcmd1bWVudHNbMF0uaXNTdHJpbmco
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc3RyaW5nIGtleSA9IGFyZ3VtZW50c1swXS50b1N0
cmluZygpOwotICAgIENwcFZhcmlhbnQgdmFsdWUgPSBhcmd1bWVudHNbMV07Ci0gICAgV2ViUHJl
ZmVyZW5jZXMqIHByZWZzID0gbV9zaGVsbC0+cHJlZmVyZW5jZXMoKTsKLSAgICBpZiAoa2V5ID09
ICJXZWJLaXRTdGFuZGFyZEZvbnQiKQotICAgICAgICBwcmVmcy0+c3RhbmRhcmRGb250RmFtaWx5
ID0gY3BwVmFyaWFudFRvV2ViU3RyaW5nKHZhbHVlKTsKLSAgICBlbHNlIGlmIChrZXkgPT0gIldl
YktpdEZpeGVkRm9udCIpCi0gICAgICAgIHByZWZzLT5maXhlZEZvbnRGYW1pbHkgPSBjcHBWYXJp
YW50VG9XZWJTdHJpbmcodmFsdWUpOwotICAgIGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0U2VyaWZG
b250IikKLSAgICAgICAgcHJlZnMtPnNlcmlmRm9udEZhbWlseSA9IGNwcFZhcmlhbnRUb1dlYlN0
cmluZyh2YWx1ZSk7Ci0gICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXRTYW5zU2VyaWZGb250IikK
LSAgICAgICAgcHJlZnMtPnNhbnNTZXJpZkZvbnRGYW1pbHkgPSBjcHBWYXJpYW50VG9XZWJTdHJp
bmcodmFsdWUpOwotICAgIGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0Q3Vyc2l2ZUZvbnQiKQotICAg
ICAgICBwcmVmcy0+Y3Vyc2l2ZUZvbnRGYW1pbHkgPSBjcHBWYXJpYW50VG9XZWJTdHJpbmcodmFs
dWUpOwotICAgIGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0RmFudGFzeUZvbnQiKQotICAgICAgICBw
cmVmcy0+ZmFudGFzeUZvbnRGYW1pbHkgPSBjcHBWYXJpYW50VG9XZWJTdHJpbmcodmFsdWUpOwot
ICAgIGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0U3RhbmRhcmRGb250TWFwIikKLSAgICAgICAgc2V0
Rm9udE1hcChwcmVmcy0+c3RhbmRhcmRGb250TWFwLCBjcHBWYXJpYW50VG9XZWJTdHJpbmdBcnJh
eSh2YWx1ZSkpOwotICAgIGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0Rml4ZWRGb250TWFwIikKLSAg
ICAgICAgc2V0Rm9udE1hcChwcmVmcy0+Zml4ZWRGb250TWFwLCBjcHBWYXJpYW50VG9XZWJTdHJp
bmdBcnJheSh2YWx1ZSkpOwotICAgIGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0U2VyaWZGb250TWFw
IikKLSAgICAgICAgc2V0Rm9udE1hcChwcmVmcy0+c2VyaWZGb250TWFwLCBjcHBWYXJpYW50VG9X
ZWJTdHJpbmdBcnJheSh2YWx1ZSkpOwotICAgIGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0U2Fuc1Nl
cmlmRm9udE1hcCIpCi0gICAgICAgIHNldEZvbnRNYXAocHJlZnMtPnNhbnNTZXJpZkZvbnRNYXAs
IGNwcFZhcmlhbnRUb1dlYlN0cmluZ0FycmF5KHZhbHVlKSk7Ci0gICAgZWxzZSBpZiAoa2V5ID09
ICJXZWJLaXRDdXJzaXZlRm9udE1hcCIpCi0gICAgICAgIHNldEZvbnRNYXAocHJlZnMtPmN1cnNp
dmVGb250TWFwLCBjcHBWYXJpYW50VG9XZWJTdHJpbmdBcnJheSh2YWx1ZSkpOwotICAgIGVsc2Ug
aWYgKGtleSA9PSAiV2ViS2l0RmFudGFzeUZvbnRNYXAiKQotICAgICAgICBzZXRGb250TWFwKHBy
ZWZzLT5mYW50YXN5Rm9udE1hcCwgY3BwVmFyaWFudFRvV2ViU3RyaW5nQXJyYXkodmFsdWUpKTsK
LSAgICBlbHNlIGlmIChrZXkgPT0gIldlYktpdERlZmF1bHRGb250U2l6ZSIpCi0gICAgICAgIHBy
ZWZzLT5kZWZhdWx0Rm9udFNpemUgPSBjcHBWYXJpYW50VG9JbnQzMih2YWx1ZSk7Ci0gICAgZWxz
ZSBpZiAoa2V5ID09ICJXZWJLaXREZWZhdWx0Rml4ZWRGb250U2l6ZSIpCi0gICAgICAgIHByZWZz
LT5kZWZhdWx0Rml4ZWRGb250U2l6ZSA9IGNwcFZhcmlhbnRUb0ludDMyKHZhbHVlKTsKLSAgICBl
bHNlIGlmIChrZXkgPT0gIldlYktpdE1pbmltdW1Gb250U2l6ZSIpCi0gICAgICAgIHByZWZzLT5t
aW5pbXVtRm9udFNpemUgPSBjcHBWYXJpYW50VG9JbnQzMih2YWx1ZSk7Ci0gICAgZWxzZSBpZiAo
a2V5ID09ICJXZWJLaXRNaW5pbXVtTG9naWNhbEZvbnRTaXplIikKLSAgICAgICAgcHJlZnMtPm1p
bmltdW1Mb2dpY2FsRm9udFNpemUgPSBjcHBWYXJpYW50VG9JbnQzMih2YWx1ZSk7Ci0gICAgZWxz
ZSBpZiAoa2V5ID09ICJXZWJLaXREZWZhdWx0VGV4dEVuY29kaW5nTmFtZSIpCi0gICAgICAgIHBy
ZWZzLT5kZWZhdWx0VGV4dEVuY29kaW5nTmFtZSA9IGNwcFZhcmlhbnRUb1dlYlN0cmluZyh2YWx1
ZSk7Ci0gICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXRKYXZhU2NyaXB0RW5hYmxlZCIpCi0gICAg
ICAgIHByZWZzLT5qYXZhU2NyaXB0RW5hYmxlZCA9IGNwcFZhcmlhbnRUb0Jvb2wodmFsdWUpOwot
ICAgIGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0V2ViU2VjdXJpdHlFbmFibGVkIikKLSAgICAgICAg
cHJlZnMtPndlYlNlY3VyaXR5RW5hYmxlZCA9IGNwcFZhcmlhbnRUb0Jvb2wodmFsdWUpOwotICAg
IGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGlj
YWxseSIpCi0gICAgICAgIHByZWZzLT5qYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNh
bGx5ID0gY3BwVmFyaWFudFRvQm9vbCh2YWx1ZSk7Ci0gICAgZWxzZSBpZiAoa2V5ID09ICJXZWJL
aXRTdXBwb3J0c011bHRpcGxlV2luZG93cyIpCi0gICAgICAgIHByZWZzLT5zdXBwb3J0c011bHRp
cGxlV2luZG93cyA9IGNwcFZhcmlhbnRUb0Jvb2wodmFsdWUpOwotICAgIGVsc2UgaWYgKGtleSA9
PSAiV2ViS2l0RGlzcGxheUltYWdlc0tleSIpCi0gICAgICAgIHByZWZzLT5sb2Fkc0ltYWdlc0F1
dG9tYXRpY2FsbHkgPSBjcHBWYXJpYW50VG9Cb29sKHZhbHVlKTsKLSAgICBlbHNlIGlmIChrZXkg
PT0gIldlYktpdFBsdWdpbnNFbmFibGVkIikKLSAgICAgICAgcHJlZnMtPnBsdWdpbnNFbmFibGVk
ID0gY3BwVmFyaWFudFRvQm9vbCh2YWx1ZSk7Ci0gICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXRE
T01QYXN0ZUFsbG93ZWRQcmVmZXJlbmNlS2V5IikKLSAgICAgICAgcHJlZnMtPkRPTVBhc3RlQWxs
b3dlZCA9IGNwcFZhcmlhbnRUb0Jvb2wodmFsdWUpOwotICAgIGVsc2UgaWYgKGtleSA9PSAiV2Vi
S2l0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZFByZWZlcmVuY2VLZXkiKQotICAgICAgICBwcmVmcy0+
ZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCA9IGNwcFZhcmlhbnRUb0Jvb2wodmFsdWUpOwotICAgIGVs
c2UgaWYgKGtleSA9PSAiV2ViS2l0U2hyaW5rc1N0YW5kYWxvbmVJbWFnZXNUb0ZpdCIpCi0gICAg
ICAgIHByZWZzLT5zaHJpbmtzU3RhbmRhbG9uZUltYWdlc1RvRml0ID0gY3BwVmFyaWFudFRvQm9v
bCh2YWx1ZSk7Ci0gICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXRUZXh0QXJlYXNBcmVSZXNpemFi
bGUiKQotICAgICAgICBwcmVmcy0+dGV4dEFyZWFzQXJlUmVzaXphYmxlID0gY3BwVmFyaWFudFRv
Qm9vbCh2YWx1ZSk7Ci0gICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXRKYXZhRW5hYmxlZCIpCi0g
ICAgICAgIHByZWZzLT5qYXZhRW5hYmxlZCA9IGNwcFZhcmlhbnRUb0Jvb2wodmFsdWUpOwotICAg
IGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0VXNlc1BhZ2VDYWNoZVByZWZlcmVuY2VLZXkiKQotICAg
ICAgICBwcmVmcy0+dXNlc1BhZ2VDYWNoZSA9IGNwcFZhcmlhbnRUb0Jvb2wodmFsdWUpOwotICAg
IGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0UGFnZUNhY2hlU3VwcG9ydHNQbHVnaW5zUHJlZmVyZW5j
ZUtleSIpCi0gICAgICAgIHByZWZzLT5wYWdlQ2FjaGVTdXBwb3J0c1BsdWdpbnMgPSBjcHBWYXJp
YW50VG9Cb29sKHZhbHVlKTsKLSAgICBlbHNlIGlmIChrZXkgPT0gIldlYktpdEphdmFTY3JpcHRD
YW5BY2Nlc3NDbGlwYm9hcmQiKQotICAgICAgICBwcmVmcy0+amF2YVNjcmlwdENhbkFjY2Vzc0Ns
aXBib2FyZCA9IGNwcFZhcmlhbnRUb0Jvb2wodmFsdWUpOwotICAgIGVsc2UgaWYgKGtleSA9PSAi
V2ViS2l0WFNTQXVkaXRvckVuYWJsZWQiKQotICAgICAgICBwcmVmcy0+WFNTQXVkaXRvckVuYWJs
ZWQgPSBjcHBWYXJpYW50VG9Cb29sKHZhbHVlKTsKLSAgICBlbHNlIGlmIChrZXkgPT0gIldlYktp
dExvY2FsU3RvcmFnZUVuYWJsZWRQcmVmZXJlbmNlS2V5IikKLSAgICAgICAgcHJlZnMtPmxvY2Fs
U3RvcmFnZUVuYWJsZWQgPSBjcHBWYXJpYW50VG9Cb29sKHZhbHVlKTsKLSAgICBlbHNlIGlmIChr
ZXkgPT0gIldlYktpdE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCIpCi0gICAgICAg
IHByZWZzLT5vZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQgPSBjcHBWYXJpYW50VG9C
b29sKHZhbHVlKTsKLSAgICBlbHNlIGlmIChrZXkgPT0gIldlYktpdFRhYlRvTGlua3NQcmVmZXJl
bmNlS2V5IikKLSAgICAgICAgcHJlZnMtPnRhYnNUb0xpbmtzID0gY3BwVmFyaWFudFRvQm9vbCh2
YWx1ZSk7Ci0gICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXRXZWJHTEVuYWJsZWQiKQotICAgICAg
ICBwcmVmcy0+ZXhwZXJpbWVudGFsV2ViR0xFbmFibGVkID0gY3BwVmFyaWFudFRvQm9vbCh2YWx1
ZSk7Ci0gICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXRDU1NSZWdpb25zRW5hYmxlZCIpCi0gICAg
ICAgIHByZWZzLT5leHBlcmltZW50YWxDU1NSZWdpb25zRW5hYmxlZCA9IGNwcFZhcmlhbnRUb0Jv
b2wodmFsdWUpOwotICAgIGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0Q1NTR3JpZExheW91dEVuYWJs
ZWQiKQotICAgICAgICBwcmVmcy0+ZXhwZXJpbWVudGFsQ1NTR3JpZExheW91dEVuYWJsZWQgPSBj
cHBWYXJpYW50VG9Cb29sKHZhbHVlKTsKLSAgICBlbHNlIGlmIChrZXkgPT0gIldlYktpdEh5cGVy
bGlua0F1ZGl0aW5nRW5hYmxlZCIpCi0gICAgICAgIHByZWZzLT5oeXBlcmxpbmtBdWRpdGluZ0Vu
YWJsZWQgPSBjcHBWYXJpYW50VG9Cb29sKHZhbHVlKTsKLSAgICBlbHNlIGlmIChrZXkgPT0gIldl
YktpdEVuYWJsZUNhcmV0QnJvd3NpbmciKQotICAgICAgICBwcmVmcy0+Y2FyZXRCcm93c2luZ0Vu
YWJsZWQgPSBjcHBWYXJpYW50VG9Cb29sKHZhbHVlKTsKLSAgICBlbHNlIGlmIChrZXkgPT0gIldl
YktpdEFsbG93RGlzcGxheWluZ0luc2VjdXJlQ29udGVudCIpCi0gICAgICAgIHByZWZzLT5hbGxv
d0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudCA9IGNwcFZhcmlhbnRUb0Jvb2wodmFsdWUpOwotICAg
IGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0QWxsb3dSdW5uaW5nSW5zZWN1cmVDb250ZW50IikKLSAg
ICAgICAgcHJlZnMtPmFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50ID0gY3BwVmFyaWFudFRv
Qm9vbCh2YWx1ZSk7Ci0gICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXRDU1NDdXN0b21GaWx0ZXJF
bmFibGVkIikKLSAgICAgICAgcHJlZnMtPmNzc0N1c3RvbUZpbHRlckVuYWJsZWQgPSBjcHBWYXJp
YW50VG9Cb29sKHZhbHVlKTsKLSAgICBlbHNlIGlmIChrZXkgPT0gIldlYktpdFNob3VsZFJlc3Bl
Y3RJbWFnZU9yaWVudGF0aW9uIikKLSAgICAgICAgcHJlZnMtPnNob3VsZFJlc3BlY3RJbWFnZU9y
aWVudGF0aW9uID0gY3BwVmFyaWFudFRvQm9vbCh2YWx1ZSk7Ci0gICAgZWxzZSBpZiAoa2V5ID09
ICJXZWJLaXRXZWJBdWRpb0VuYWJsZWQiKSB7Ci0gICAgICAgIEFTU0VSVChjcHBWYXJpYW50VG9C
b29sKHZhbHVlKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgc3RyaW5nIG1lc3NhZ2UoIkludmFs
aWQgbmFtZSBmb3IgcHJlZmVyZW5jZTogIik7Ci0gICAgICAgIG1lc3NhZ2UuYXBwZW5kKGtleSk7
Ci0gICAgICAgIHByaW50RXJyb3JNZXNzYWdlKG1lc3NhZ2UpOwotICAgIH0KLSAgICBtX3NoZWxs
LT5hcHBseVByZWZlcmVuY2VzKCk7Ci19Ci0KIHZvaWQgRFJUVGVzdFJ1bm5lcjo6Y2xlYXJBbGxE
YXRhYmFzZXMoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJl
c3VsdCkKIHsKICAgICByZXN1bHQtPnNldE51bGwoKTsKQEAgLTEzNDYsMTUgKzExMzYsNiBAQCB2
b2lkIERSVFRlc3RSdW5uZXI6OnNldEJhY2tpbmdTY2FsZUZhY3Rvcihjb25zdCBDcHBBcmd1bWVu
dExpc3QmIGFyZ3VtZW50cywgQ3BwVgogICAgIHBvc3RUYXNrKG5ldyBJbnZva2VDYWxsYmFja1Rh
c2sodGhpcywgY2FsbGJhY2tBcmd1bWVudHMucmVsZWFzZSgpLCAxKSk7CiB9CiAKLXZvaWQgRFJU
VGVzdFJ1bm5lcjo6c2V0UGx1Z2luc0VuYWJsZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1
bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKLXsKLSAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+
IDAgJiYgYXJndW1lbnRzWzBdLmlzQm9vbCgpKSB7Ci0gICAgICAgIG1fc2hlbGwtPnByZWZlcmVu
Y2VzKCktPnBsdWdpbnNFbmFibGVkID0gYXJndW1lbnRzWzBdLnRvQm9vbGVhbigpOwotICAgICAg
ICBtX3NoZWxsLT5hcHBseVByZWZlcmVuY2VzKCk7Ci0gICAgfQotICAgIHJlc3VsdC0+c2V0TnVs
bCgpOwotfQotCiB2b2lkIERSVFRlc3RSdW5uZXI6OnNldEF1ZGlvRGF0YShjb25zdCBDcHBBcmd1
bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIHJlc3VsdC0+
c2V0TnVsbCgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJU
VGVzdFJ1bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5l
ci5oCmluZGV4IDQ5ZjI3YzM2YmMxYzVmN2I4ZjI2NTcxMmM3NTE1YTY5ZTQ0NTBlOGYuLmMxNjZj
N2RhM2Q5MjQyNTdiMTA1YjdiM2M1YzQxYzg5NzI1NGFjOTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuaAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmgKQEAgLTE2OCwxNCArMTY4LDYgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0V2luZG93SXNLZXkoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3Bw
VmFyaWFudCopOwogCiAKLSAgICAvLyBQYXNzZXMgdGhyb3VnaCB0byBXZWJQcmVmZXJlbmNlcyB3
aGljaCBhbGxvd3MgdGhlIHVzZXIgdG8gaGF2ZSBhIGN1c3RvbQotICAgIC8vIHN0eWxlIHNoZWV0
LgotICAgIHZvaWQgc2V0VXNlclN0eWxlU2hlZXRFbmFibGVkKGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYsIENwcFZhcmlhbnQqKTsKLSAgICB2b2lkIHNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oY29u
c3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwotCi0gICAgLy8gUGFzc2VzIHRoaXMg
cHJlZmVyZW5jZSB0aHJvdWdoIHRvIFdlYlNldHRpbmdzLgotICAgIHZvaWQgc2V0QXV0aG9yQW5k
VXNlclN0eWxlc0VuYWJsZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwot
CiAgICAgLy8gQ2F1c2VzIG5hdmlnYXRpb24gYWN0aW9ucyBqdXN0IHByaW50b3V0IHRoZSBpbnRl
bmRlZCBuYXZpZ2F0aW9uIGluc3RlYWQKICAgICAvLyBvZiB0YWtpbmcgeW91IHRvIHRoZSBwYWdl
LiBUaGlzIGlzIHVzZWQgZm9yIGNhc2VzIGxpa2UgbWFpbHRvLCB3aGVyZSB5b3UKICAgICAvLyBk
b24ndCBhY3R1YWxseSB3YW50IHRvIG9wZW4gdGhlIG1haWwgcHJvZ3JhbS4KQEAgLTE5Niw5ICsx
ODgsNiBAQCBwdWJsaWM6CiAgICAgLy8gQ29udmVydHMgYSBVUkwgc3RhcnRpbmcgd2l0aCBmaWxl
Oi8vL3RtcC8gdG8gdGhlIGxvY2FsIG1hcHBpbmcuCiAgICAgdm9pZCBwYXRoVG9Mb2NhbFJlc291
cmNlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAotICAgIC8vIFNldCB0
aGUgV2ViUHJlZmVyZW5jZSB0aGF0IGNvbnRyb2xzIHdlYmtpdCdzIHBvcHVwIGJsb2NraW5nLgot
ICAgIHZvaWQgc2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0Jiwg
Q3BwVmFyaWFudCopOwotCiAgICAgLy8gSWYgdHJ1ZSwgY2F1c2VzIHByb3Zpc2lvbmFsIGZyYW1l
IGxvYWRzIHRvIGJlIHN0b3BwZWQgZm9yIHRoZSByZW1haW5kZXIgb2YKICAgICAvLyB0aGUgdGVz
dC4KICAgICB2b2lkIHNldFN0b3BQcm92aXNpb25hbEZyYW1lTG9hZHMoY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiwgQ3BwVmFyaWFudCopOwpAQCAtMjMxLDE1ICsyMjAsOSBAQCBwdWJsaWM6CiAgICAg
dm9pZCB0ZXN0UmVwYWludChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAg
ICAgdm9pZCByZXBhaW50U3dlZXBIb3Jpem9udGFsbHkoY29uc3QgQ3BwQXJndW1lbnRMaXN0Jiwg
Q3BwVmFyaWFudCopOwogCi0gICAgdm9pZCBzZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJk
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKLSAgICB2b2lkIHNldFhTU0F1
ZGl0b3JFbmFibGVkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKLSAgICB2
b2lkIG92ZXJyaWRlUHJlZmVyZW5jZShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50
Kik7Ci0gICAgdm9pZCBzZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyhjb25zdCBD
cHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBzZXRBbGxvd0Rpc3BsYXlP
Zkluc2VjdXJlQ29udGVudChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7Ci0g
ICAgdm9pZCBzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgc2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNv
bnRlbnQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogCi0KICAgICAvLyBD
bGVhcnMgYWxsIGRhdGFiYXNlcy4KICAgICB2b2lkIGNsZWFyQWxsRGF0YWJhc2VzKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKICAgICAvLyBTZXRzIHRoZSBkZWZhdWx0IHF1
b3RhIGZvciBhbGwgb3JpZ2lucwpAQCAtMjg0LDkgKzI2Nyw2IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldFBsdWdpbnNBbGxvd2VkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsK
ICAgICB2b2lkIGR1bXBQZXJtaXNzaW9uQ2xpZW50Q2FsbGJhY2tzKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYsIENwcFZhcmlhbnQqKTsKIAotICAgIC8vIEVuYWJsZSBvciBkaXNhYmxlIHBsdWdpbnMu
Ci0gICAgdm9pZCBzZXRQbHVnaW5zRW5hYmxlZChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBW
YXJpYW50Kik7Ci0KICAgICB2b2lkIHNldFNob3VsZFN0YXlPblBhZ2VBZnRlckhhbmRsaW5nQmVm
b3JlVW5sb2FkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKIAogI2lmIEVO
QUJMRShQT0lOVEVSX0xPQ0spCkBAIC01NDAsOCArNTIwLDYgQEAgcHJpdmF0ZToKICAgICAvLyBC
b3VuZCB2YXJpYWJsZSB0byBzZXQgd2hldGhlciBwb3N0TWVzc2FnZXMgc2hvdWxkIGJlIGludGVy
Y2VwdGVkIG9yIG5vdAogICAgIENwcFZhcmlhbnQgbV9pbnRlcmNlcHRQb3N0TWVzc2FnZTsKIAot
ICAgIFdlYktpdDo6V2ViVVJMIG1fdXNlclN0eWxlU2hlZXRMb2NhdGlvbjsKLQogICAgIC8vIFdB
ViBhdWRpbyBkYXRhIGlzIHN0b3JlZCBoZXJlLgogICAgIFdlYktpdDo6V2ViQXJyYXlCdWZmZXJW
aWV3IG1fYXVkaW9EYXRhOwogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJQcmVmZXJlbmNlcy5oIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViUHJlZmVyZW5jZXMuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hNWQ4YjJiOTc0MDgzOGRiMDY1YTkyODU1NzIyODcwOWJkYTNiNDJkCi0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMv
V2ViUHJlZmVyZW5jZXMuaApAQCAtMCwwICsxLDEyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
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
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViUHJlZmVyZW5jZXNf
aAorI2RlZmluZSBXZWJQcmVmZXJlbmNlc19oCisKKyNpbmNsdWRlICJQbGF0Zm9ybS9jaHJvbWl1
bS9wdWJsaWMvV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAiUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYlVSTC5oIgorI2luY2x1ZGUgIldlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3Mu
aCIKKyNpbmNsdWRlIDxtYXA+CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViVmlldzsK
K30KKworbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgeworCitzdHJ1Y3QgV2ViUHJlZmVyZW5jZXMg
eworICAgIFdlYktpdDo6V2ViU3RyaW5nIHN0YW5kYXJkRm9udEZhbWlseTsKKyAgICBXZWJLaXQ6
OldlYlN0cmluZyBmaXhlZEZvbnRGYW1pbHk7CisgICAgV2ViS2l0OjpXZWJTdHJpbmcgc2VyaWZG
b250RmFtaWx5OworICAgIFdlYktpdDo6V2ViU3RyaW5nIHNhbnNTZXJpZkZvbnRGYW1pbHk7Cisg
ICAgV2ViS2l0OjpXZWJTdHJpbmcgY3Vyc2l2ZUZvbnRGYW1pbHk7CisgICAgV2ViS2l0OjpXZWJT
dHJpbmcgZmFudGFzeUZvbnRGYW1pbHk7CisKKyAgICAvLyBNYXAgb2YgVVNjcmlwdENvZGUgdG8g
Zm9udCBzdWNoIGFzIFVTQ1JJUFRfQVJBQklDIHRvICJNeSBBcmFiaWMgRm9udCIuCisgICAgdHlw
ZWRlZiBzdGQ6Om1hcDxpbnQsIFdlYktpdDo6V2ViU3RyaW5nPiBTY3JpcHRGb250RmFtaWx5TWFw
OworICAgIFNjcmlwdEZvbnRGYW1pbHlNYXAgc3RhbmRhcmRGb250TWFwOworICAgIFNjcmlwdEZv
bnRGYW1pbHlNYXAgZml4ZWRGb250TWFwOworICAgIFNjcmlwdEZvbnRGYW1pbHlNYXAgc2VyaWZG
b250TWFwOworICAgIFNjcmlwdEZvbnRGYW1pbHlNYXAgc2Fuc1NlcmlmRm9udE1hcDsKKyAgICBT
Y3JpcHRGb250RmFtaWx5TWFwIGN1cnNpdmVGb250TWFwOworICAgIFNjcmlwdEZvbnRGYW1pbHlN
YXAgZmFudGFzeUZvbnRNYXA7CisKKyAgICBpbnQgZGVmYXVsdEZvbnRTaXplOworICAgIGludCBk
ZWZhdWx0Rml4ZWRGb250U2l6ZTsKKyAgICBpbnQgbWluaW11bUZvbnRTaXplOworICAgIGludCBt
aW5pbXVtTG9naWNhbEZvbnRTaXplOworICAgIGludCBtaW5pbXVtQWNjZWxlcmF0ZWQyZENhbnZh
c1NpemU7CisKKyAgICBib29sIERPTVBhc3RlQWxsb3dlZDsKKyAgICBib29sIFhTU0F1ZGl0b3JF
bmFibGVkOworICAgIGJvb2wgYWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQ7CisgICAgYm9v
bCBhbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHM7CisgICAgYm9vbCBhbGxvd1J1bm5pbmdPZklu
c2VjdXJlQ29udGVudDsKKyAgICBib29sIGF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkOworICAg
IFdlYktpdDo6V2ViU3RyaW5nIGRlZmF1bHRUZXh0RW5jb2RpbmdOYW1lOworICAgIGJvb2wgZGV2
ZWxvcGVyRXh0cmFzRW5hYmxlZDsKKyAgICBib29sIGV4cGVyaW1lbnRhbFdlYkdMRW5hYmxlZDsK
KyAgICBib29sIGV4cGVyaW1lbnRhbENTU1JlZ2lvbnNFbmFibGVkOworICAgIGJvb2wgZXhwZXJp
bWVudGFsQ1NTR3JpZExheW91dEVuYWJsZWQ7CisgICAgYm9vbCBqYXZhRW5hYmxlZDsKKyAgICBi
b29sIGphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQ7CisgICAgYm9vbCBqYXZhU2NyaXB0Q2Fu
T3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5OworICAgIGJvb2wgc3VwcG9ydHNNdWx0aXBsZVdpbmRv
d3M7CisgICAgYm9vbCBqYXZhU2NyaXB0RW5hYmxlZDsKKyAgICBib29sIGxvYWRzSW1hZ2VzQXV0
b21hdGljYWxseTsKKyAgICBib29sIGxvY2FsU3RvcmFnZUVuYWJsZWQ7CisgICAgYm9vbCBvZmZs
aW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQ7CisgICAgYm9vbCBwbHVnaW5zRW5hYmxlZDsK
KyAgICBib29sIHNocmlua3NTdGFuZGFsb25lSW1hZ2VzVG9GaXQ7CisgICAgYm9vbCB0ZXh0QXJl
YXNBcmVSZXNpemFibGU7CisgICAgV2ViS2l0OjpXZWJVUkwgdXNlclN0eWxlU2hlZXRMb2NhdGlv
bjsKKyAgICBib29sIHVzZXNQYWdlQ2FjaGU7CisgICAgYm9vbCBwYWdlQ2FjaGVTdXBwb3J0c1Bs
dWdpbnM7CisgICAgYm9vbCB3ZWJTZWN1cml0eUVuYWJsZWQ7CisgICAgYm9vbCBhbGxvd1VuaXZl
cnNhbEFjY2Vzc0Zyb21GaWxlVVJMczsKKyAgICBXZWJLaXQ6OldlYlNldHRpbmdzOjpFZGl0aW5n
QmVoYXZpb3IgZWRpdGluZ0JlaGF2aW9yOworICAgIGJvb2wgdGFic1RvTGlua3M7CisgICAgYm9v
bCBoeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQ7CisgICAgYm9vbCBjYXJldEJyb3dzaW5nRW5hYmxl
ZDsKKyAgICBib29sIGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JWaWRlb0VuYWJsZWQ7CisgICAg
Ym9vbCBhY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbkVuYWJsZWQ7CisgICAg
Ym9vbCBhY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZDsKKyAgICBib29sIGZvcmNlQ29tcG9z
aXRpbmdNb2RlOworICAgIGJvb2wgYWNjZWxlcmF0ZWQyZENhbnZhc0VuYWJsZWQ7CisgICAgYm9v
bCBkZWZlcnJlZDJkQ2FudmFzRW5hYmxlZDsKKyAgICBib29sIGFjY2VsZXJhdGVkUGFpbnRpbmdF
bmFibGVkOworICAgIGJvb2wgcGVyVGlsZVBhaW50aW5nRW5hYmxlZDsKKyAgICBib29sIGFjY2Vs
ZXJhdGVkQW5pbWF0aW9uRW5hYmxlZDsKKyAgICBib29sIGRlZmVycmVkSW1hZ2VEZWNvZGluZ0Vu
YWJsZWQ7CisgICAgYm9vbCBtZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZTsKKyAgICBi
b29sIG1vY2tTY3JvbGxiYXJzRW5hYmxlZDsKKyAgICBib29sIGNzc0N1c3RvbUZpbHRlckVuYWJs
ZWQ7CisgICAgYm9vbCBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbjsKKworICAgIFdlYlBy
ZWZlcmVuY2VzKCkgeyByZXNldCgpOyB9CisgICAgdm9pZCByZXNldCgpOworICAgIHZvaWQgYXBw
bHlUbyhXZWJLaXQ6OldlYlZpZXcqKTsKK307CisKK30KKworI2VuZGlmIC8vIFdlYlByZWZlcmVu
Y2VzX2gKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvcHVibGljL1dlYlRlc3REZWxlZ2F0ZS5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdERlbGVnYXRlLmgKaW5kZXggYWI0N2Q0ZjlkY2Vh
NmQ3ZWM5MThiZGQxZTJlZjRkZWYyYzU4MmUwZS4uNjcwYzJhMjIyODZiYmM3MDgxY2JiNjVlNzM2
YmYzNWZhMjAyYmVhMyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdERlbGVnYXRlLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdERlbGVnYXRlLmgKQEAgLTMy
LDYgKzMyLDcgQEAKICNkZWZpbmUgV2ViVGVzdERlbGVnYXRlX2gKIAogI2luY2x1ZGUgIlBsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViVVJMLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYlZlY3Rvci5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQxLDYgKzQyLDcgQEAgY2xh
c3MgV2ViR2FtZXBhZHM7CiAKIG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKIAorc3RydWN0IFdl
YlByZWZlcmVuY2VzOwogY2xhc3MgV2ViVGFzazsKIAogY2xhc3MgV2ViVGVzdERlbGVnYXRlIHsK
QEAgLTYxLDYgKzYzLDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViU3RyaW5n
IHJlZ2lzdGVySXNvbGF0ZWRGaWxlU3lzdGVtKGNvbnN0IFdlYktpdDo6V2ViVmVjdG9yPFdlYktp
dDo6V2ViU3RyaW5nPiYgYWJzb2x1dGVGaWxlbmFtZXMpID0gMDsKICAgICB2aXJ0dWFsIGxvbmcg
bG9uZyBnZXRDdXJyZW50VGltZUluTWlsbGlzZWNvbmQoKSA9IDA7CiAgICAgdmlydHVhbCBXZWJL
aXQ6OldlYlN0cmluZyBnZXRBYnNvbHV0ZVdlYlN0cmluZ0Zyb21VVEY4UGF0aChjb25zdCBzdGQ6
OnN0cmluZyYgcGF0aCkgPSAwOworCisgICAgLy8gTWV0aG9kcyB1c2VkIGJ5IFRlc3RSdW5uZXIu
CisgICAgLy8gRklYTUU6IE1ha2UgdGhlc2UgbWV0aG9kcyBwdXJlIHZpcnR1YWwgb25jZSB0aGUg
VGVzdFJ1bm5lciBpcyBwYXJ0IG9mCisgICAgLy8gdGhlIHB1YmxpYyBUZXN0UnVubmVyIEFQSS4K
KyAgICB2aXJ0dWFsIFdlYktpdDo6V2ViVVJMIGxvY2FsRmlsZVRvRGF0YVVSTChjb25zdCBXZWJL
aXQ6OldlYlVSTCYpIHsgcmV0dXJuIFdlYktpdDo6V2ViVVJMKCk7IH0KKyAgICB2aXJ0dWFsIFdl
YktpdDo6V2ViVVJMIHJld3JpdGVMYXlvdXRUZXN0c1VSTChjb25zdCBzdGQ6OnN0cmluZyYpIHsg
cmV0dXJuIFdlYktpdDo6V2ViVVJMKCk7IH0KKyAgICB2aXJ0dWFsIFdlYlByZWZlcmVuY2VzKiBw
cmVmZXJlbmNlcygpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYXBwbHlQcmVmZXJl
bmNlcygpIHsgfTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAKaW5kZXggOGFhODE3YTJi
ZGY2YmRiY2M1ZjQyMTNlOGQ2Y2JmMDdlZDBmN2I5Zi4uNDZlNTIwMTMzMTJkOTEzZWYzYWFiYTc3
MmJkNTYwOTYzYzM4ZTVhMiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAKQEAgLTM5LDYgKzM5LDcg
QEAKICNpbmNsdWRlICJXZWJGaW5kT3B0aW9ucy5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAj
aW5jbHVkZSAiV2ViSW5wdXRFbGVtZW50LmgiCisjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXMuaCIK
ICNpbmNsdWRlICJXZWJTY3JpcHRTb3VyY2UuaCIKICNpbmNsdWRlICJXZWJTZWN1cml0eVBvbGlj
eS5oIgogI2luY2x1ZGUgIldlYlNldHRpbmdzLmgiCkBAIC00OCw2ICs0OSw3IEBACiAjaW5jbHVk
ZSAiV2ViV29ya2VySW5mby5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlBvaW50LmgiCiAjaW5j
bHVkZSAidjgvaW5jbHVkZS92OC5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiAjaWYgT1MoTElOVVgpIHx8IE9TKEFORFJPSUQpCiAjaW5jbHVkZSAibGludXgvV2ViRm9udFJl
bmRlcmluZy5oIgpAQCAtNTgsNiArNjAsMjcgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFt
ZXNwYWNlIFdlYlRlc3RSdW5uZXIgewogCituYW1lc3BhY2UgeworCisvLyBTZXRzIG1hcCBiYXNl
ZCBvbiBzY3JpcHRGb250UGFpcnMsIGEgY29sbGFwc2VkIHZlY3RvciBvZiBwYWlycyBvZiBJU08g
MTU5MjQKKy8vIGZvdXItbGV0dGVyIHNjcmlwdCBjb2RlIGFuZCBmb250IHN1Y2ggYXM6CisvLyB7
ICJBcmFiIiwgIk15IEFyYWJpYyBGb250IiwgIkdyZWsiLCAiTXkgR3JlZWsgRm9udCIgfQorc3Rh
dGljIHZvaWQgc2V0Rm9udE1hcChXZWJQcmVmZXJlbmNlczo6U2NyaXB0Rm9udEZhbWlseU1hcCYg
bWFwLCBjb25zdCBWZWN0b3I8V2ViU3RyaW5nPiYgc2NyaXB0Rm9udFBhaXJzKQoreworICAgIG1h
cC5jbGVhcigpOworICAgIHNpemVfdCBpID0gMDsKKyAgICB3aGlsZSAoaSArIDEgPCBzY3JpcHRG
b250UGFpcnMuc2l6ZSgpKSB7CisgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgc2NyaXB0ID0gc2Ny
aXB0Rm9udFBhaXJzW2krK107CisgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgZm9udCA9IHNjcmlw
dEZvbnRQYWlyc1tpKytdOworCisgICAgICAgIGludDMyX3QgY29kZSA9IHVfZ2V0UHJvcGVydHlW
YWx1ZUVudW0oVUNIQVJfU0NSSVBULCBzY3JpcHQudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGlm
IChjb2RlID49IDAgJiYgY29kZSA8IFVTQ1JJUFRfQ09ERV9MSU1JVCkKKyAgICAgICAgICAgIG1h
cFtzdGF0aWNfY2FzdDxpbnQ+KGNvZGUpXSA9IGZvbnQ7CisgICAgfQorfQorCit9CisKIFRlc3RS
dW5uZXI6OlRlc3RSdW5uZXIoKQogICAgIDogbV9kZWxlZ2F0ZSgwKQogICAgICwgbV93ZWJWaWV3
KDApCkBAIC0xMDAsNiArMTIzLDE4IEBAIFRlc3RSdW5uZXI6OlRlc3RSdW5uZXIoKQogICAgIGJp
bmRNZXRob2QoInRleHRTdXJyb3VuZGluZ05vZGUiLCAmVGVzdFJ1bm5lcjo6dGV4dFN1cnJvdW5k
aW5nTm9kZSk7CiAgICAgYmluZE1ldGhvZCgic2V0VG91Y2hEcmFnRHJvcEVuYWJsZWQiLCAmVGVz
dFJ1bm5lcjo6c2V0VG91Y2hEcmFnRHJvcEVuYWJsZWQpOwogCisgICAgLy8gVGhlIGZvbGxvd2lu
ZyBtb2RpZnkgV2ViUHJlZmVyZW5jZXMuCisgICAgYmluZE1ldGhvZCgic2V0VXNlclN0eWxlU2hl
ZXRFbmFibGVkIiwgJlRlc3RSdW5uZXI6OnNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZCk7CisgICAg
YmluZE1ldGhvZCgic2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbiIsICZUZXN0UnVubmVyOjpzZXRV
c2VyU3R5bGVTaGVldExvY2F0aW9uKTsKKyAgICBiaW5kTWV0aG9kKCJzZXRBdXRob3JBbmRVc2Vy
U3R5bGVzRW5hYmxlZCIsICZUZXN0UnVubmVyOjpzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxl
ZCk7CisgICAgYmluZE1ldGhvZCgic2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQiLCAmVGVzdFJ1bm5l
cjo6c2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQpOworICAgIGJpbmRNZXRob2QoInNldEphdmFTY3Jp
cHRDYW5BY2Nlc3NDbGlwYm9hcmQiLCAmVGVzdFJ1bm5lcjo6c2V0SmF2YVNjcmlwdENhbkFjY2Vz
c0NsaXBib2FyZCk7CisgICAgYmluZE1ldGhvZCgic2V0WFNTQXVkaXRvckVuYWJsZWQiLCAmVGVz
dFJ1bm5lcjo6c2V0WFNTQXVkaXRvckVuYWJsZWQpOworICAgIGJpbmRNZXRob2QoInNldEFsbG93
VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzIiwgJlRlc3RSdW5uZXI6OnNldEFsbG93VW5pdmVy
c2FsQWNjZXNzRnJvbUZpbGVVUkxzKTsKKyAgICBiaW5kTWV0aG9kKCJzZXRBbGxvd0ZpbGVBY2Nl
c3NGcm9tRmlsZVVSTHMiLCAmVGVzdFJ1bm5lcjo6c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVV
UkxzKTsKKyAgICBiaW5kTWV0aG9kKCJvdmVycmlkZVByZWZlcmVuY2UiLCAmVGVzdFJ1bm5lcjo6
b3ZlcnJpZGVQcmVmZXJlbmNlKTsKKyAgICBiaW5kTWV0aG9kKCJzZXRQbHVnaW5zRW5hYmxlZCIs
ICZUZXN0UnVubmVyOjpzZXRQbHVnaW5zRW5hYmxlZCk7CisKICAgICAvLyBQcm9wZXJ0aWVzLgog
ICAgIGJpbmRQcm9wZXJ0eSgid29ya2VyVGhyZWFkQ291bnQiLCAmVGVzdFJ1bm5lcjo6d29ya2Vy
VGhyZWFkQ291bnQpOwogICAgIGJpbmRQcm9wZXJ0eSgiZ2xvYmFsRmxhZyIsICZtX2dsb2JhbEZs
YWcpOwpAQCAtMTU3LDYgKzE5Miw4IEBAIHZvaWQgVGVzdFJ1bm5lcjo6cmVzZXQoKQogCiAgICAg
bV9nbG9iYWxGbGFnLnNldChmYWxzZSk7CiAgICAgbV9wbGF0Zm9ybU5hbWUuc2V0KCJjaHJvbWl1
bSIpOworCisgICAgbV91c2VyU3R5bGVTaGVldExvY2F0aW9uID0gV2ViVVJMKCk7CiB9CiAKIHZv
aWQgVGVzdFJ1bm5lcjo6c2V0VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzKGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCkBAIC02NzQsNiArNzEx
LDE5NiBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFRvdWNoRHJhZ0Ryb3BFbmFibGVkKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYQogICAgIG1fd2ViVmlldy0+c2V0dGluZ3Mo
KS0+c2V0VG91Y2hEcmFnRHJvcEVuYWJsZWQoYXJndW1lbnRzWzBdLnRvQm9vbGVhbigpKTsKIH0K
IAordm9pZCBUZXN0UnVubmVyOjpzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQoY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICBpZiAoYXJn
dW1lbnRzLnNpemUoKSA+IDAgJiYgYXJndW1lbnRzWzBdLmlzQm9vbCgpKSB7CisgICAgICAgIG1f
ZGVsZWdhdGUtPnByZWZlcmVuY2VzKCktPnVzZXJTdHlsZVNoZWV0TG9jYXRpb24gPSBhcmd1bWVu
dHNbMF0udmFsdWUuYm9vbFZhbHVlID8gbV91c2VyU3R5bGVTaGVldExvY2F0aW9uIDogV2ViVVJM
KCk7CisgICAgICAgIG1fZGVsZWdhdGUtPmFwcGx5UHJlZmVyZW5jZXMoKTsKKyAgICB9CisgICAg
cmVzdWx0LT5zZXROdWxsKCk7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0VXNlclN0eWxlU2hl
ZXRMb2NhdGlvbihjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCog
cmVzdWx0KQoreworICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0u
aXNTdHJpbmcoKSkgeworICAgICAgICBtX3VzZXJTdHlsZVNoZWV0TG9jYXRpb24gPSBtX2RlbGVn
YXRlLT5sb2NhbEZpbGVUb0RhdGFVUkwobV9kZWxlZ2F0ZS0+cmV3cml0ZUxheW91dFRlc3RzVVJM
KGFyZ3VtZW50c1swXS50b1N0cmluZygpKSk7CisgICAgICAgIG1fZGVsZWdhdGUtPnByZWZlcmVu
Y2VzKCktPnVzZXJTdHlsZVNoZWV0TG9jYXRpb24gPSBtX3VzZXJTdHlsZVNoZWV0TG9jYXRpb247
CisgICAgICAgIG1fZGVsZWdhdGUtPmFwcGx5UHJlZmVyZW5jZXMoKTsKKyAgICB9CisgICAgcmVz
dWx0LT5zZXROdWxsKCk7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0QXV0aG9yQW5kVXNlclN0
eWxlc0VuYWJsZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQq
IHJlc3VsdCkKK3sKKyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+IDAgJiYgYXJndW1lbnRzWzBd
LmlzQm9vbCgpKSB7CisgICAgICAgIG1fZGVsZWdhdGUtPnByZWZlcmVuY2VzKCktPmF1dGhvckFu
ZFVzZXJTdHlsZXNFbmFibGVkID0gYXJndW1lbnRzWzBdLnZhbHVlLmJvb2xWYWx1ZTsKKyAgICAg
ICAgbV9kZWxlZ2F0ZS0+YXBwbHlQcmVmZXJlbmNlcygpOworICAgIH0KKyAgICByZXN1bHQtPnNl
dE51bGwoKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpzZXRQb3B1cEJsb2NraW5nRW5hYmxlZChj
b25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQorewor
ICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0uaXNCb29sKCkpIHsK
KyAgICAgICAgYm9vbCBibG9ja1BvcHVwcyA9IGFyZ3VtZW50c1swXS50b0Jvb2xlYW4oKTsKKyAg
ICAgICAgbV9kZWxlZ2F0ZS0+cHJlZmVyZW5jZXMoKS0+amF2YVNjcmlwdENhbk9wZW5XaW5kb3dz
QXV0b21hdGljYWxseSA9ICFibG9ja1BvcHVwczsKKyAgICAgICAgbV9kZWxlZ2F0ZS0+YXBwbHlQ
cmVmZXJlbmNlcygpOworICAgIH0KKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwordm9pZCBU
ZXN0UnVubmVyOjpzZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKGNvbnN0IENwcEFyZ3Vt
ZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgaWYgKGFyZ3Vt
ZW50cy5zaXplKCkgPiAwICYmIGFyZ3VtZW50c1swXS5pc0Jvb2woKSkgeworICAgICAgICBtX2Rl
bGVnYXRlLT5wcmVmZXJlbmNlcygpLT5qYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkID0gYXJn
dW1lbnRzWzBdLnZhbHVlLmJvb2xWYWx1ZTsKKyAgICAgICAgbV9kZWxlZ2F0ZS0+YXBwbHlQcmVm
ZXJlbmNlcygpOworICAgIH0KKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwordm9pZCBUZXN0
UnVubmVyOjpzZXRYU1NBdWRpdG9yRW5hYmxlZChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3Vt
ZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpID4g
MCAmJiBhcmd1bWVudHNbMF0uaXNCb29sKCkpIHsKKyAgICAgICAgbV9kZWxlZ2F0ZS0+cHJlZmVy
ZW5jZXMoKS0+WFNTQXVkaXRvckVuYWJsZWQgPSBhcmd1bWVudHNbMF0udmFsdWUuYm9vbFZhbHVl
OworICAgICAgICBtX2RlbGVnYXRlLT5hcHBseVByZWZlcmVuY2VzKCk7CisgICAgfQorICAgIHJl
c3VsdC0+c2V0TnVsbCgpOworfQorCit2b2lkIFRlc3RSdW5uZXI6OnNldEFsbG93VW5pdmVyc2Fs
QWNjZXNzRnJvbUZpbGVVUkxzKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBW
YXJpYW50KiByZXN1bHQpCit7CisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPiAwICYmIGFyZ3Vt
ZW50c1swXS5pc0Jvb2woKSkgeworICAgICAgICBtX2RlbGVnYXRlLT5wcmVmZXJlbmNlcygpLT5h
bGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyA9IGFyZ3VtZW50c1swXS52YWx1ZS5ib29s
VmFsdWU7CisgICAgICAgIG1fZGVsZWdhdGUtPmFwcGx5UHJlZmVyZW5jZXMoKTsKKyAgICB9Cisg
ICAgcmVzdWx0LT5zZXROdWxsKCk7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0QWxsb3dGaWxl
QWNjZXNzRnJvbUZpbGVVUkxzKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBW
YXJpYW50KiByZXN1bHQpCit7CisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPiAwICYmIGFyZ3Vt
ZW50c1swXS5pc0Jvb2woKSkgeworICAgICAgICBtX2RlbGVnYXRlLT5wcmVmZXJlbmNlcygpLT5h
bGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMgPSBhcmd1bWVudHNbMF0udmFsdWUuYm9vbFZhbHVl
OworICAgICAgICBtX2RlbGVnYXRlLT5hcHBseVByZWZlcmVuY2VzKCk7CisgICAgfQorICAgIHJl
c3VsdC0+c2V0TnVsbCgpOworfQorCit2b2lkIFRlc3RSdW5uZXI6Om92ZXJyaWRlUHJlZmVyZW5j
ZShjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQor
eworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpICE9IDIg
fHwgIWFyZ3VtZW50c1swXS5pc1N0cmluZygpKQorICAgICAgICByZXR1cm47CisKKyAgICBzdHJp
bmcga2V5ID0gYXJndW1lbnRzWzBdLnRvU3RyaW5nKCk7CisgICAgQ3BwVmFyaWFudCB2YWx1ZSA9
IGFyZ3VtZW50c1sxXTsKKyAgICBXZWJQcmVmZXJlbmNlcyogcHJlZnMgPSBtX2RlbGVnYXRlLT5w
cmVmZXJlbmNlcygpOworICAgIGlmIChrZXkgPT0gIldlYktpdFN0YW5kYXJkRm9udCIpCisgICAg
ICAgIHByZWZzLT5zdGFuZGFyZEZvbnRGYW1pbHkgPSBjcHBWYXJpYW50VG9XZWJTdHJpbmcodmFs
dWUpOworICAgIGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0Rml4ZWRGb250IikKKyAgICAgICAgcHJl
ZnMtPmZpeGVkRm9udEZhbWlseSA9IGNwcFZhcmlhbnRUb1dlYlN0cmluZyh2YWx1ZSk7CisgICAg
ZWxzZSBpZiAoa2V5ID09ICJXZWJLaXRTZXJpZkZvbnQiKQorICAgICAgICBwcmVmcy0+c2VyaWZG
b250RmFtaWx5ID0gY3BwVmFyaWFudFRvV2ViU3RyaW5nKHZhbHVlKTsKKyAgICBlbHNlIGlmIChr
ZXkgPT0gIldlYktpdFNhbnNTZXJpZkZvbnQiKQorICAgICAgICBwcmVmcy0+c2Fuc1NlcmlmRm9u
dEZhbWlseSA9IGNwcFZhcmlhbnRUb1dlYlN0cmluZyh2YWx1ZSk7CisgICAgZWxzZSBpZiAoa2V5
ID09ICJXZWJLaXRDdXJzaXZlRm9udCIpCisgICAgICAgIHByZWZzLT5jdXJzaXZlRm9udEZhbWls
eSA9IGNwcFZhcmlhbnRUb1dlYlN0cmluZyh2YWx1ZSk7CisgICAgZWxzZSBpZiAoa2V5ID09ICJX
ZWJLaXRGYW50YXN5Rm9udCIpCisgICAgICAgIHByZWZzLT5mYW50YXN5Rm9udEZhbWlseSA9IGNw
cFZhcmlhbnRUb1dlYlN0cmluZyh2YWx1ZSk7CisgICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXRT
dGFuZGFyZEZvbnRNYXAiKQorICAgICAgICBzZXRGb250TWFwKHByZWZzLT5zdGFuZGFyZEZvbnRN
YXAsIGNwcFZhcmlhbnRUb1dlYlN0cmluZ0FycmF5KHZhbHVlKSk7CisgICAgZWxzZSBpZiAoa2V5
ID09ICJXZWJLaXRGaXhlZEZvbnRNYXAiKQorICAgICAgICBzZXRGb250TWFwKHByZWZzLT5maXhl
ZEZvbnRNYXAsIGNwcFZhcmlhbnRUb1dlYlN0cmluZ0FycmF5KHZhbHVlKSk7CisgICAgZWxzZSBp
ZiAoa2V5ID09ICJXZWJLaXRTZXJpZkZvbnRNYXAiKQorICAgICAgICBzZXRGb250TWFwKHByZWZz
LT5zZXJpZkZvbnRNYXAsIGNwcFZhcmlhbnRUb1dlYlN0cmluZ0FycmF5KHZhbHVlKSk7CisgICAg
ZWxzZSBpZiAoa2V5ID09ICJXZWJLaXRTYW5zU2VyaWZGb250TWFwIikKKyAgICAgICAgc2V0Rm9u
dE1hcChwcmVmcy0+c2Fuc1NlcmlmRm9udE1hcCwgY3BwVmFyaWFudFRvV2ViU3RyaW5nQXJyYXko
dmFsdWUpKTsKKyAgICBlbHNlIGlmIChrZXkgPT0gIldlYktpdEN1cnNpdmVGb250TWFwIikKKyAg
ICAgICAgc2V0Rm9udE1hcChwcmVmcy0+Y3Vyc2l2ZUZvbnRNYXAsIGNwcFZhcmlhbnRUb1dlYlN0
cmluZ0FycmF5KHZhbHVlKSk7CisgICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXRGYW50YXN5Rm9u
dE1hcCIpCisgICAgICAgIHNldEZvbnRNYXAocHJlZnMtPmZhbnRhc3lGb250TWFwLCBjcHBWYXJp
YW50VG9XZWJTdHJpbmdBcnJheSh2YWx1ZSkpOworICAgIGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0
RGVmYXVsdEZvbnRTaXplIikKKyAgICAgICAgcHJlZnMtPmRlZmF1bHRGb250U2l6ZSA9IGNwcFZh
cmlhbnRUb0ludDMyKHZhbHVlKTsKKyAgICBlbHNlIGlmIChrZXkgPT0gIldlYktpdERlZmF1bHRG
aXhlZEZvbnRTaXplIikKKyAgICAgICAgcHJlZnMtPmRlZmF1bHRGaXhlZEZvbnRTaXplID0gY3Bw
VmFyaWFudFRvSW50MzIodmFsdWUpOworICAgIGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0TWluaW11
bUZvbnRTaXplIikKKyAgICAgICAgcHJlZnMtPm1pbmltdW1Gb250U2l6ZSA9IGNwcFZhcmlhbnRU
b0ludDMyKHZhbHVlKTsKKyAgICBlbHNlIGlmIChrZXkgPT0gIldlYktpdE1pbmltdW1Mb2dpY2Fs
Rm9udFNpemUiKQorICAgICAgICBwcmVmcy0+bWluaW11bUxvZ2ljYWxGb250U2l6ZSA9IGNwcFZh
cmlhbnRUb0ludDMyKHZhbHVlKTsKKyAgICBlbHNlIGlmIChrZXkgPT0gIldlYktpdERlZmF1bHRU
ZXh0RW5jb2RpbmdOYW1lIikKKyAgICAgICAgcHJlZnMtPmRlZmF1bHRUZXh0RW5jb2RpbmdOYW1l
ID0gY3BwVmFyaWFudFRvV2ViU3RyaW5nKHZhbHVlKTsKKyAgICBlbHNlIGlmIChrZXkgPT0gIldl
YktpdEphdmFTY3JpcHRFbmFibGVkIikKKyAgICAgICAgcHJlZnMtPmphdmFTY3JpcHRFbmFibGVk
ID0gY3BwVmFyaWFudFRvQm9vbCh2YWx1ZSk7CisgICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXRX
ZWJTZWN1cml0eUVuYWJsZWQiKQorICAgICAgICBwcmVmcy0+d2ViU2VjdXJpdHlFbmFibGVkID0g
Y3BwVmFyaWFudFRvQm9vbCh2YWx1ZSk7CisgICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXRKYXZh
U2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5IikKKyAgICAgICAgcHJlZnMtPmphdmFT
Y3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkgPSBjcHBWYXJpYW50VG9Cb29sKHZhbHVl
KTsKKyAgICBlbHNlIGlmIChrZXkgPT0gIldlYktpdFN1cHBvcnRzTXVsdGlwbGVXaW5kb3dzIikK
KyAgICAgICAgcHJlZnMtPnN1cHBvcnRzTXVsdGlwbGVXaW5kb3dzID0gY3BwVmFyaWFudFRvQm9v
bCh2YWx1ZSk7CisgICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXREaXNwbGF5SW1hZ2VzS2V5IikK
KyAgICAgICAgcHJlZnMtPmxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSA9IGNwcFZhcmlhbnRUb0Jv
b2wodmFsdWUpOworICAgIGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0UGx1Z2luc0VuYWJsZWQiKQor
ICAgICAgICBwcmVmcy0+cGx1Z2luc0VuYWJsZWQgPSBjcHBWYXJpYW50VG9Cb29sKHZhbHVlKTsK
KyAgICBlbHNlIGlmIChrZXkgPT0gIldlYktpdERPTVBhc3RlQWxsb3dlZFByZWZlcmVuY2VLZXki
KQorICAgICAgICBwcmVmcy0+RE9NUGFzdGVBbGxvd2VkID0gY3BwVmFyaWFudFRvQm9vbCh2YWx1
ZSk7CisgICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXREZXZlbG9wZXJFeHRyYXNFbmFibGVkUHJl
ZmVyZW5jZUtleSIpCisgICAgICAgIHByZWZzLT5kZXZlbG9wZXJFeHRyYXNFbmFibGVkID0gY3Bw
VmFyaWFudFRvQm9vbCh2YWx1ZSk7CisgICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXRTaHJpbmtz
U3RhbmRhbG9uZUltYWdlc1RvRml0IikKKyAgICAgICAgcHJlZnMtPnNocmlua3NTdGFuZGFsb25l
SW1hZ2VzVG9GaXQgPSBjcHBWYXJpYW50VG9Cb29sKHZhbHVlKTsKKyAgICBlbHNlIGlmIChrZXkg
PT0gIldlYktpdFRleHRBcmVhc0FyZVJlc2l6YWJsZSIpCisgICAgICAgIHByZWZzLT50ZXh0QXJl
YXNBcmVSZXNpemFibGUgPSBjcHBWYXJpYW50VG9Cb29sKHZhbHVlKTsKKyAgICBlbHNlIGlmIChr
ZXkgPT0gIldlYktpdEphdmFFbmFibGVkIikKKyAgICAgICAgcHJlZnMtPmphdmFFbmFibGVkID0g
Y3BwVmFyaWFudFRvQm9vbCh2YWx1ZSk7CisgICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXRVc2Vz
UGFnZUNhY2hlUHJlZmVyZW5jZUtleSIpCisgICAgICAgIHByZWZzLT51c2VzUGFnZUNhY2hlID0g
Y3BwVmFyaWFudFRvQm9vbCh2YWx1ZSk7CisgICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXRQYWdl
Q2FjaGVTdXBwb3J0c1BsdWdpbnNQcmVmZXJlbmNlS2V5IikKKyAgICAgICAgcHJlZnMtPnBhZ2VD
YWNoZVN1cHBvcnRzUGx1Z2lucyA9IGNwcFZhcmlhbnRUb0Jvb2wodmFsdWUpOworICAgIGVsc2Ug
aWYgKGtleSA9PSAiV2ViS2l0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZCIpCisgICAgICAg
IHByZWZzLT5qYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkID0gY3BwVmFyaWFudFRvQm9vbCh2
YWx1ZSk7CisgICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXRYU1NBdWRpdG9yRW5hYmxlZCIpCisg
ICAgICAgIHByZWZzLT5YU1NBdWRpdG9yRW5hYmxlZCA9IGNwcFZhcmlhbnRUb0Jvb2wodmFsdWUp
OworICAgIGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0TG9jYWxTdG9yYWdlRW5hYmxlZFByZWZlcmVu
Y2VLZXkiKQorICAgICAgICBwcmVmcy0+bG9jYWxTdG9yYWdlRW5hYmxlZCA9IGNwcFZhcmlhbnRU
b0Jvb2wodmFsdWUpOworICAgIGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0T2ZmbGluZVdlYkFwcGxp
Y2F0aW9uQ2FjaGVFbmFibGVkIikKKyAgICAgICAgcHJlZnMtPm9mZmxpbmVXZWJBcHBsaWNhdGlv
bkNhY2hlRW5hYmxlZCA9IGNwcFZhcmlhbnRUb0Jvb2wodmFsdWUpOworICAgIGVsc2UgaWYgKGtl
eSA9PSAiV2ViS2l0VGFiVG9MaW5rc1ByZWZlcmVuY2VLZXkiKQorICAgICAgICBwcmVmcy0+dGFi
c1RvTGlua3MgPSBjcHBWYXJpYW50VG9Cb29sKHZhbHVlKTsKKyAgICBlbHNlIGlmIChrZXkgPT0g
IldlYktpdFdlYkdMRW5hYmxlZCIpCisgICAgICAgIHByZWZzLT5leHBlcmltZW50YWxXZWJHTEVu
YWJsZWQgPSBjcHBWYXJpYW50VG9Cb29sKHZhbHVlKTsKKyAgICBlbHNlIGlmIChrZXkgPT0gIldl
YktpdENTU1JlZ2lvbnNFbmFibGVkIikKKyAgICAgICAgcHJlZnMtPmV4cGVyaW1lbnRhbENTU1Jl
Z2lvbnNFbmFibGVkID0gY3BwVmFyaWFudFRvQm9vbCh2YWx1ZSk7CisgICAgZWxzZSBpZiAoa2V5
ID09ICJXZWJLaXRDU1NHcmlkTGF5b3V0RW5hYmxlZCIpCisgICAgICAgIHByZWZzLT5leHBlcmlt
ZW50YWxDU1NHcmlkTGF5b3V0RW5hYmxlZCA9IGNwcFZhcmlhbnRUb0Jvb2wodmFsdWUpOworICAg
IGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkIikKKyAgICAg
ICAgcHJlZnMtPmh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZCA9IGNwcFZhcmlhbnRUb0Jvb2wodmFs
dWUpOworICAgIGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0RW5hYmxlQ2FyZXRCcm93c2luZyIpCisg
ICAgICAgIHByZWZzLT5jYXJldEJyb3dzaW5nRW5hYmxlZCA9IGNwcFZhcmlhbnRUb0Jvb2wodmFs
dWUpOworICAgIGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0QWxsb3dEaXNwbGF5aW5nSW5zZWN1cmVD
b250ZW50IikKKyAgICAgICAgcHJlZnMtPmFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50ID0g
Y3BwVmFyaWFudFRvQm9vbCh2YWx1ZSk7CisgICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXRBbGxv
d1J1bm5pbmdJbnNlY3VyZUNvbnRlbnQiKQorICAgICAgICBwcmVmcy0+YWxsb3dSdW5uaW5nT2ZJ
bnNlY3VyZUNvbnRlbnQgPSBjcHBWYXJpYW50VG9Cb29sKHZhbHVlKTsKKyAgICBlbHNlIGlmIChr
ZXkgPT0gIldlYktpdENTU0N1c3RvbUZpbHRlckVuYWJsZWQiKQorICAgICAgICBwcmVmcy0+Y3Nz
Q3VzdG9tRmlsdGVyRW5hYmxlZCA9IGNwcFZhcmlhbnRUb0Jvb2wodmFsdWUpOworICAgIGVsc2Ug
aWYgKGtleSA9PSAiV2ViS2l0U2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24iKQorICAgICAg
ICBwcmVmcy0+c2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24gPSBjcHBWYXJpYW50VG9Cb29s
KHZhbHVlKTsKKyAgICBlbHNlIGlmIChrZXkgPT0gIldlYktpdFdlYkF1ZGlvRW5hYmxlZCIpCisg
ICAgICAgIEFTU0VSVChjcHBWYXJpYW50VG9Cb29sKHZhbHVlKSk7CisgICAgZWxzZSB7CisgICAg
ICAgIHN0cmluZyBtZXNzYWdlKCJJbnZhbGlkIG5hbWUgZm9yIHByZWZlcmVuY2U6ICIpOworICAg
ICAgICBtZXNzYWdlLmFwcGVuZChrZXkpOworICAgICAgICBwcmludEVycm9yTWVzc2FnZShtZXNz
YWdlKTsKKyAgICB9CisgICAgbV9kZWxlZ2F0ZS0+YXBwbHlQcmVmZXJlbmNlcygpOworfQorCit2
b2lkIFRlc3RSdW5uZXI6OnNldFBsdWdpbnNFbmFibGVkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYg
YXJndW1lbnRzLCBDcHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgaWYgKGFyZ3VtZW50cy5zaXpl
KCkgPiAwICYmIGFyZ3VtZW50c1swXS5pc0Jvb2woKSkgeworICAgICAgICBtX2RlbGVnYXRlLT5w
cmVmZXJlbmNlcygpLT5wbHVnaW5zRW5hYmxlZCA9IGFyZ3VtZW50c1swXS50b0Jvb2xlYW4oKTsK
KyAgICAgICAgbV9kZWxlZ2F0ZS0+YXBwbHlQcmVmZXJlbmNlcygpOworICAgIH0KKyAgICByZXN1
bHQtPnNldE51bGwoKTsKK30KKwogdm9pZCBUZXN0UnVubmVyOjp3b3JrZXJUaHJlYWRDb3VudChD
cHBWYXJpYW50KiByZXN1bHQpCiB7CiAgICAgcmVzdWx0LT5zZXQoc3RhdGljX2Nhc3Q8aW50PihX
ZWJXb3JrZXJJbmZvOjpkZWRpY2F0ZWRXb3JrZXJDb3VudCgpKSk7CmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmggYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVubmVyLmgK
aW5kZXggNDY5MWU1NTc5Yjg3ODVhYmIwYTJkNGMzNDFlZGFmOWMyMTFlMWUwNi4uNmU2Nzc4ZWVi
NTIxZWUwYTYwY2VjMzlkMWZhYjY5OWZjNzJjNzlhYiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaApAQCAt
MzMsNiArMzMsNyBAQAogI2RlZmluZSBUZXN0UnVubmVyX2gKIAogI2luY2x1ZGUgIkNwcEJvdW5k
Q2xhc3MuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJVUkwuaCIKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiBjbGFzcyBXZWJWaWV3OwpAQCAtMTUwLDYgKzE1MSwyOSBAQCBwcml2YXRlOgogICAgIHZv
aWQgc2V0VG91Y2hEcmFnRHJvcEVuYWJsZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFy
aWFudCopOwogCiAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisgICAgLy8gTWV0aG9kcyBtb2RpZnlp
bmcgV2ViUHJlZmVyZW5jZXMuCisKKyAgICAvLyBQYXNzZXMgdGhyb3VnaCB0byBXZWJQcmVmZXJl
bmNlcyB3aGljaCBhbGxvd3MgdGhlIHVzZXIgdG8gaGF2ZSBhIGN1c3RvbQorICAgIC8vIHN0eWxl
IHNoZWV0LgorICAgIHZvaWQgc2V0VXNlclN0eWxlU2hlZXRFbmFibGVkKGNvbnN0IENwcEFyZ3Vt
ZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKyAgICB2b2lkIHNldFVzZXJTdHlsZVNoZWV0TG9jYXRp
b24oY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworCisgICAgLy8gUGFzc2Vz
IHRoaXMgcHJlZmVyZW5jZSB0aHJvdWdoIHRvIFdlYlNldHRpbmdzLgorICAgIHZvaWQgc2V0QXV0
aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFu
dCopOworCisgICAgLy8gU2V0IHRoZSBXZWJQcmVmZXJlbmNlIHRoYXQgY29udHJvbHMgd2Via2l0
J3MgcG9wdXAgYmxvY2tpbmcuCisgICAgdm9pZCBzZXRQb3B1cEJsb2NraW5nRW5hYmxlZChjb25z
dCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisKKyAgICB2b2lkIHNldEphdmFTY3Jp
cHRDYW5BY2Nlc3NDbGlwYm9hcmQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCop
OworICAgIHZvaWQgc2V0WFNTQXVkaXRvckVuYWJsZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0Jiwg
Q3BwVmFyaWFudCopOworICAgIHZvaWQgc2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVS
THMoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgc2V0QWxs
b3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlh
bnQqKTsKKyAgICB2b2lkIG92ZXJyaWRlUHJlZmVyZW5jZShjb25zdCBDcHBBcmd1bWVudExpc3Qm
LCBDcHBWYXJpYW50Kik7CisKKyAgICAvLyBFbmFibGUgb3IgZGlzYWJsZSBwbHVnaW5zLgorICAg
IHZvaWQgc2V0UGx1Z2luc0VuYWJsZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFu
dCopOworCisgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgICAgLy8gUHJvcGVydGllcwogICAgIHZv
aWQgd29ya2VyVGhyZWFkQ291bnQoQ3BwVmFyaWFudCopOwogCkBAIC0xNzMsNiArMTk3LDggQEAg
cHJpdmF0ZToKICAgICBib29sIGVsZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJ
ZChjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYpOwogICAgIGludCBudW1iZXJPZkFjdGl2ZUFuaW1h
dGlvbnMoKTsKIAorICAgIFdlYktpdDo6V2ViVVJMIG1fdXNlclN0eWxlU2hlZXRMb2NhdGlvbjsK
KwogICAgIC8vIGdsb2JhbEZsYWcgaXMgdXNlZCBieSBhIG51bWJlciBvZiBsYXlvdXQgdGVzdHMg
aW4gaHR0cC90ZXN0cy9zZWN1cml0eS9kYXRhVVJMLgogICAgIENwcFZhcmlhbnQgbV9nbG9iYWxG
bGFnOwogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9XZWJQcmVmZXJlbmNlcy5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9XZWJQcmVmZXJlbmNlcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDI1OWRjZTE3
OTk5NDJmMDI2YjYxZDZkZDBlNWIzZjBjNThkYzRhYQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlByZWZlcmVuY2VzLmNw
cApAQCAtMCwwICsxLDI3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJQcmVm
ZXJlbmNlcy5oIgorCisjaW5jbHVkZSAiV2ViUnVudGltZUZlYXR1cmVzLmgiCisjaW5jbHVkZSAi
V2ViVmlldy5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCituYW1lc3BhY2UgV2ViVGVz
dFJ1bm5lciB7CisKK25hbWVzcGFjZSB7CisKK3ZvaWQgc2V0U3RhbmRhcmRGb250RmFtaWx5V3Jh
cHBlcihXZWJTZXR0aW5ncyogc2V0dGluZ3MsIGNvbnN0IFdlYlN0cmluZyYgZm9udCwgVVNjcmlw
dENvZGUgc2NyaXB0KQoreworICAgIHNldHRpbmdzLT5zZXRTdGFuZGFyZEZvbnRGYW1pbHkoZm9u
dCwgc2NyaXB0KTsKK30KKwordm9pZCBzZXRGaXhlZEZvbnRGYW1pbHlXcmFwcGVyKFdlYlNldHRp
bmdzKiBzZXR0aW5ncywgY29uc3QgV2ViU3RyaW5nJiBmb250LCBVU2NyaXB0Q29kZSBzY3JpcHQp
Cit7CisgICAgc2V0dGluZ3MtPnNldEZpeGVkRm9udEZhbWlseShmb250LCBzY3JpcHQpOworfQor
Cit2b2lkIHNldFNlcmlmRm9udEZhbWlseVdyYXBwZXIoV2ViU2V0dGluZ3MqIHNldHRpbmdzLCBj
b25zdCBXZWJTdHJpbmcmIGZvbnQsIFVTY3JpcHRDb2RlIHNjcmlwdCkKK3sKKyAgICBzZXR0aW5n
cy0+c2V0U2VyaWZGb250RmFtaWx5KGZvbnQsIHNjcmlwdCk7Cit9CisKK3ZvaWQgc2V0U2Fuc1Nl
cmlmRm9udEZhbWlseVdyYXBwZXIoV2ViU2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBXZWJTdHJp
bmcmIGZvbnQsIFVTY3JpcHRDb2RlIHNjcmlwdCkKK3sKKyAgICBzZXR0aW5ncy0+c2V0U2Fuc1Nl
cmlmRm9udEZhbWlseShmb250LCBzY3JpcHQpOworfQorCit2b2lkIHNldEN1cnNpdmVGb250RmFt
aWx5V3JhcHBlcihXZWJTZXR0aW5ncyogc2V0dGluZ3MsIGNvbnN0IFdlYlN0cmluZyYgZm9udCwg
VVNjcmlwdENvZGUgc2NyaXB0KQoreworICAgIHNldHRpbmdzLT5zZXRDdXJzaXZlRm9udEZhbWls
eShmb250LCBzY3JpcHQpOworfQorCit2b2lkIHNldEZhbnRhc3lGb250RmFtaWx5V3JhcHBlcihX
ZWJTZXR0aW5ncyogc2V0dGluZ3MsIGNvbnN0IFdlYlN0cmluZyYgZm9udCwgVVNjcmlwdENvZGUg
c2NyaXB0KQoreworICAgIHNldHRpbmdzLT5zZXRGYW50YXN5Rm9udEZhbWlseShmb250LCBzY3Jp
cHQpOworfQorCit0eXBlZGVmIHZvaWQgKCpTZXRGb250RmFtaWx5V3JhcHBlcikoV2ViU2V0dGlu
Z3MqLCBjb25zdCBXZWJTdHJpbmcmLCBVU2NyaXB0Q29kZSk7CisKK3ZvaWQgYXBwbHlGb250TWFw
KFdlYlNldHRpbmdzKiBzZXR0aW5ncywgY29uc3QgV2ViUHJlZmVyZW5jZXM6OlNjcmlwdEZvbnRG
YW1pbHlNYXAmIG1hcCwgU2V0Rm9udEZhbWlseVdyYXBwZXIgc2V0dGVyKQoreworICAgIGZvciAo
V2ViUHJlZmVyZW5jZXM6OlNjcmlwdEZvbnRGYW1pbHlNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIg
PSBtYXAuYmVnaW4oKTsgaXRlciAhPSBtYXAuZW5kKCk7ICsraXRlcikgeworICAgICAgICBjb25z
dCBXZWJTdHJpbmcmIGZvbnQgPSBpdGVyLT5zZWNvbmQ7CisgICAgICAgIGlmICghZm9udC5pc051
bGwoKSAmJiAhZm9udC5pc0VtcHR5KCkpCisgICAgICAgICAgICAoKnNldHRlcikoc2V0dGluZ3Ms
IGZvbnQsIHN0YXRpY19jYXN0PFVTY3JpcHRDb2RlPihpdGVyLT5maXJzdCkpOworICAgIH0KK30K
KworfQorCit2b2lkIFdlYlByZWZlcmVuY2VzOjpyZXNldCgpCit7CisjaWYgT1MoTUFDX09TX1gp
CisgICAgY3Vyc2l2ZUZvbnRGYW1pbHkgPSBXZWJTdHJpbmc6OmZyb21VVEY4KCJBcHBsZSBDaGFu
Y2VyeSIpOworICAgIGZhbnRhc3lGb250RmFtaWx5ID0gV2ViU3RyaW5nOjpmcm9tVVRGOCgiUGFw
eXJ1cyIpOworICAgIFdlYlN0cmluZyBzZXJpZiA9IFdlYlN0cmluZzo6ZnJvbVVURjgoIlRpbWVz
Iik7CisjZWxzZQorICAgIC8vIFRoZXNlIHR3byBmb250cyBhcmUgcGlja2VkIGZyb20gdGhlIGlu
dGVyc2VjdGlvbiBvZgorICAgIC8vIFdpbiBYUCBmb250IGxpc3QgYW5kIFZpc3RhIGZvbnQgbGlz
dCA6CisgICAgLy8gICBodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vdHlwb2dyYXBoeS9mb250cy93
aW54cC5odG0KKyAgICAvLyAgIGh0dHA6Ly9ibG9ncy5tc2RuLmNvbS9taWNoa2FwL2FyY2hpdmUv
MjAwNi8wNC8wNC81Njc4ODEuYXNweAorICAgIC8vIFNvbWUgb2YgdGhlbSBhcmUgaW5zdGFsbGVk
IG9ubHkgd2l0aCBDSksgYW5kIGNvbXBsZXggc2NyaXB0CisgICAgLy8gc3VwcG9ydCBlbmFibGVk
IG9uIFdpbmRvd3MgWFAgYW5kIGFyZSBvdXQgb2YgY29uc2lkZXJhdGlvbiBoZXJlLgorICAgIC8v
IChhbHRob3VnaCB3ZSBlbmFibGVkIGJvdGggb24gb3VyIGJ1aWxkYm90cy4pCisgICAgLy8gVGhl
eSAoZXNwZWNpYWxseSBJbXBhY3QgZm9yIGZhbnRhc3kpIGFyZSBub3QgdHlwaWNhbCBjdXJzaXZl
CisgICAgLy8gYW5kIGZhbnRhc3kgZm9udHMsIGJ1dCBpdCBzaG91bGQgbm90IG1hdHRlciBmb3Ig
bGF5b3V0IHRlc3RzCisgICAgLy8gYXMgbG9uZyBhcyB0aGV5J3JlIGF2YWlsYWJsZS4KKyAgICBj
dXJzaXZlRm9udEZhbWlseSA9IFdlYlN0cmluZzo6ZnJvbVVURjgoIkNvbWljIFNhbnMgTVMiKTsK
KyAgICBmYW50YXN5Rm9udEZhbWlseSA9IFdlYlN0cmluZzo6ZnJvbVVURjgoIkltcGFjdCIpOwor
ICAgIC8vIE5PVEU6IGNhc2UgbWF0dGVycyBoZXJlLCB0aGlzIG11c3QgYmUgJ3RpbWVzIG5ldyBy
b21hbicsIGVsc2UKKyAgICAvLyBzb21lIGxheW91dCB0ZXN0cyBmYWlsLgorICAgIFdlYlN0cmlu
ZyBzZXJpZiA9IFdlYlN0cmluZzo6ZnJvbVVURjgoInRpbWVzIG5ldyByb21hbiIpOworI2VuZGlm
CisgICAgc2VyaWZGb250RmFtaWx5ID0gc2VyaWY7CisgICAgc3RhbmRhcmRGb250RmFtaWx5ID0g
c2VyaWY7CisgICAgZml4ZWRGb250RmFtaWx5ID0gV2ViU3RyaW5nOjpmcm9tVVRGOCgiQ291cmll
ciIpOworICAgIHNhbnNTZXJpZkZvbnRGYW1pbHkgPSBXZWJTdHJpbmc6OmZyb21VVEY4KCJIZWx2
ZXRpY2EiKTsKKworICAgIGRlZmF1bHRGb250U2l6ZSA9IDE2OworICAgIGRlZmF1bHRGaXhlZEZv
bnRTaXplID0gMTM7CisgICAgbWluaW11bUZvbnRTaXplID0gMDsKKyAgICBtaW5pbXVtTG9naWNh
bEZvbnRTaXplID0gOTsKKyAgICAvLyBEbyBub3QgZGlzYWJsZSBhY2NlbGVyYXRpb24gZm9yIDJk
IGNhbnZhcyBiYXNlZCBvbiBzaXplLgorICAgIC8vIFRoaXMgbWFrZXMgaGF2aW5nIHRlc3QgZXhw
ZWN0YXRpb25zIGNvbnNpc3RlbnQuCisgICAgbWluaW11bUFjY2VsZXJhdGVkMmRDYW52YXNTaXpl
ID0gMDsKKworICAgIERPTVBhc3RlQWxsb3dlZCA9IHRydWU7CisgICAgWFNTQXVkaXRvckVuYWJs
ZWQgPSBmYWxzZTsKKyAgICBhbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudCA9IHRydWU7Cisg
ICAgYWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzID0gdHJ1ZTsKKyAgICBhbGxvd1J1bm5pbmdP
Zkluc2VjdXJlQ29udGVudCA9IHRydWU7CisgICAgYXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQg
PSB0cnVlOworICAgIGRlZmF1bHRUZXh0RW5jb2RpbmdOYW1lID0gV2ViU3RyaW5nOjpmcm9tVVRG
OCgiSVNPLTg4NTktMSIpOworICAgIGRldmVsb3BlckV4dHJhc0VuYWJsZWQgPSB0cnVlOworICAg
IGV4cGVyaW1lbnRhbFdlYkdMRW5hYmxlZCA9IGZhbHNlOworICAgIGV4cGVyaW1lbnRhbENTU1Jl
Z2lvbnNFbmFibGVkID0gdHJ1ZTsKKyAgICBleHBlcmltZW50YWxDU1NHcmlkTGF5b3V0RW5hYmxl
ZCA9IGZhbHNlOworICAgIGphdmFFbmFibGVkID0gZmFsc2U7CisgICAgamF2YVNjcmlwdENhbkFj
Y2Vzc0NsaXBib2FyZCA9IHRydWU7CisgICAgamF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21h
dGljYWxseSA9IHRydWU7CisgICAgc3VwcG9ydHNNdWx0aXBsZVdpbmRvd3MgPSB0cnVlOworICAg
IGphdmFTY3JpcHRFbmFibGVkID0gdHJ1ZTsKKyAgICBsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkg
PSB0cnVlOworICAgIGxvY2FsU3RvcmFnZUVuYWJsZWQgPSB0cnVlOworICAgIG9mZmxpbmVXZWJB
cHBsaWNhdGlvbkNhY2hlRW5hYmxlZCA9IHRydWU7CisgICAgcGx1Z2luc0VuYWJsZWQgPSB0cnVl
OworICAgIHNocmlua3NTdGFuZGFsb25lSW1hZ2VzVG9GaXQgPSBmYWxzZTsKKyAgICB0ZXh0QXJl
YXNBcmVSZXNpemFibGUgPSBmYWxzZTsKKyAgICB1c2VyU3R5bGVTaGVldExvY2F0aW9uID0gV2Vi
VVJMKCk7CisgICAgdXNlc1BhZ2VDYWNoZSA9IGZhbHNlOworICAgIHBhZ2VDYWNoZVN1cHBvcnRz
UGx1Z2lucyA9IGZhbHNlOworICAgIHdlYlNlY3VyaXR5RW5hYmxlZCA9IHRydWU7CisgICAgY2Fy
ZXRCcm93c2luZ0VuYWJsZWQgPSBmYWxzZTsKKworICAgIC8vIEFsbG93IHRob3NlIGxheW91dCB0
ZXN0cyBydW5uaW5nIGFzIGxvY2FsIGZpbGVzLCBpLmUuIHVuZGVyCisgICAgLy8gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9sb2NhbCwgdG8gYWNjZXNzIGh0dHAgc2VydmVyLgorICAgIGFsbG93VW5p
dmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzID0gdHJ1ZTsKKworI2lmIE9TKERBUldJTikKKyAgICBl
ZGl0aW5nQmVoYXZpb3IgPSBXZWJTZXR0aW5nczo6RWRpdGluZ0JlaGF2aW9yTWFjOworI2Vsc2UK
KyAgICBlZGl0aW5nQmVoYXZpb3IgPSBXZWJTZXR0aW5nczo6RWRpdGluZ0JlaGF2aW9yV2luOwor
I2VuZGlmCisKKyAgICB0YWJzVG9MaW5rcyA9IGZhbHNlOworICAgIGh5cGVybGlua0F1ZGl0aW5n
RW5hYmxlZCA9IGZhbHNlOworICAgIGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JWaWRlb0VuYWJs
ZWQgPSBmYWxzZTsKKyAgICBhY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbkVu
YWJsZWQgPSBmYWxzZTsKKyAgICBhY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZCA9IGZhbHNl
OworICAgIGFjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVkID0gZmFsc2U7CisgICAgZGVmZXJyZWQy
ZENhbnZhc0VuYWJsZWQgPSBmYWxzZTsKKyAgICBhY2NlbGVyYXRlZFBhaW50aW5nRW5hYmxlZCA9
IGZhbHNlOworICAgIGZvcmNlQ29tcG9zaXRpbmdNb2RlID0gZmFsc2U7CisgICAgcGVyVGlsZVBh
aW50aW5nRW5hYmxlZCA9IGZhbHNlOworICAgIGFjY2VsZXJhdGVkQW5pbWF0aW9uRW5hYmxlZCA9
IGZhbHNlOworICAgIGRlZmVycmVkSW1hZ2VEZWNvZGluZ0VuYWJsZWQgPSBmYWxzZTsKKyAgICBt
ZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZSA9IGZhbHNlOworICAgIG1vY2tTY3JvbGxi
YXJzRW5hYmxlZCA9IGZhbHNlOworICAgIGNzc0N1c3RvbUZpbHRlckVuYWJsZWQgPSBmYWxzZTsK
KyAgICBzaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiA9IGZhbHNlOworfQorCit2b2lkIFdl
YlByZWZlcmVuY2VzOjphcHBseVRvKFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgV2ViU2V0dGlu
Z3MqIHNldHRpbmdzID0gd2ViVmlldy0+c2V0dGluZ3MoKTsKKyAgICBzZXR0aW5ncy0+c2V0U3Rh
bmRhcmRGb250RmFtaWx5KHN0YW5kYXJkRm9udEZhbWlseSk7CisgICAgc2V0dGluZ3MtPnNldEZp
eGVkRm9udEZhbWlseShmaXhlZEZvbnRGYW1pbHkpOworICAgIHNldHRpbmdzLT5zZXRTZXJpZkZv
bnRGYW1pbHkoc2VyaWZGb250RmFtaWx5KTsKKyAgICBzZXR0aW5ncy0+c2V0U2Fuc1NlcmlmRm9u
dEZhbWlseShzYW5zU2VyaWZGb250RmFtaWx5KTsKKyAgICBzZXR0aW5ncy0+c2V0Q3Vyc2l2ZUZv
bnRGYW1pbHkoY3Vyc2l2ZUZvbnRGYW1pbHkpOworICAgIHNldHRpbmdzLT5zZXRGYW50YXN5Rm9u
dEZhbWlseShmYW50YXN5Rm9udEZhbWlseSk7CisKKyAgICBhcHBseUZvbnRNYXAoc2V0dGluZ3Ms
IHN0YW5kYXJkRm9udE1hcCwgc2V0U3RhbmRhcmRGb250RmFtaWx5V3JhcHBlcik7CisgICAgYXBw
bHlGb250TWFwKHNldHRpbmdzLCBmaXhlZEZvbnRNYXAsIHNldEZpeGVkRm9udEZhbWlseVdyYXBw
ZXIpOworICAgIGFwcGx5Rm9udE1hcChzZXR0aW5ncywgc2VyaWZGb250TWFwLCBzZXRTZXJpZkZv
bnRGYW1pbHlXcmFwcGVyKTsKKyAgICBhcHBseUZvbnRNYXAoc2V0dGluZ3MsIHNhbnNTZXJpZkZv
bnRNYXAsIHNldFNhbnNTZXJpZkZvbnRGYW1pbHlXcmFwcGVyKTsKKyAgICBhcHBseUZvbnRNYXAo
c2V0dGluZ3MsIGN1cnNpdmVGb250TWFwLCBzZXRDdXJzaXZlRm9udEZhbWlseVdyYXBwZXIpOwor
ICAgIGFwcGx5Rm9udE1hcChzZXR0aW5ncywgZmFudGFzeUZvbnRNYXAsIHNldEZhbnRhc3lGb250
RmFtaWx5V3JhcHBlcik7CisKKyAgICBzZXR0aW5ncy0+c2V0RGVmYXVsdEZvbnRTaXplKGRlZmF1
bHRGb250U2l6ZSk7CisgICAgc2V0dGluZ3MtPnNldERlZmF1bHRGaXhlZEZvbnRTaXplKGRlZmF1
bHRGaXhlZEZvbnRTaXplKTsKKyAgICBzZXR0aW5ncy0+c2V0TWluaW11bUZvbnRTaXplKG1pbmlt
dW1Gb250U2l6ZSk7CisgICAgc2V0dGluZ3MtPnNldE1pbmltdW1Mb2dpY2FsRm9udFNpemUobWlu
aW11bUxvZ2ljYWxGb250U2l6ZSk7CisgICAgc2V0dGluZ3MtPnNldE1pbmltdW1BY2NlbGVyYXRl
ZDJkQ2FudmFzU2l6ZShtaW5pbXVtQWNjZWxlcmF0ZWQyZENhbnZhc1NpemUpOworCisgICAgc2V0
dGluZ3MtPnNldERPTVBhc3RlQWxsb3dlZChET01QYXN0ZUFsbG93ZWQpOworICAgIHNldHRpbmdz
LT5zZXRYU1NBdWRpdG9yRW5hYmxlZChYU1NBdWRpdG9yRW5hYmxlZCk7CisgICAgc2V0dGluZ3Mt
PnNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50KGFsbG93RGlzcGxheU9mSW5zZWN1cmVD
b250ZW50KTsKKyAgICBzZXR0aW5ncy0+c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKGFs
bG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyk7CisgICAgc2V0dGluZ3MtPnNldEFsbG93UnVubmlu
Z09mSW5zZWN1cmVDb250ZW50KGFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50KTsKKyAgICBz
ZXR0aW5ncy0+c2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoYXV0aG9yQW5kVXNlclN0eWxl
c0VuYWJsZWQpOworICAgIHNldHRpbmdzLT5zZXREZWZhdWx0VGV4dEVuY29kaW5nTmFtZShkZWZh
dWx0VGV4dEVuY29kaW5nTmFtZSk7CisgICAgc2V0dGluZ3MtPnNldERldmVsb3BlckV4dHJhc0Vu
YWJsZWQoZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCk7CisgICAgc2V0dGluZ3MtPnNldEV4cGVyaW1l
bnRhbFdlYkdMRW5hYmxlZChleHBlcmltZW50YWxXZWJHTEVuYWJsZWQpOworICAgIFdlYlJ1bnRp
bWVGZWF0dXJlczo6ZW5hYmxlQ1NTUmVnaW9ucyhleHBlcmltZW50YWxDU1NSZWdpb25zRW5hYmxl
ZCk7CisgICAgc2V0dGluZ3MtPnNldEV4cGVyaW1lbnRhbENTU0dyaWRMYXlvdXRFbmFibGVkKGV4
cGVyaW1lbnRhbENTU0dyaWRMYXlvdXRFbmFibGVkKTsKKyAgICBzZXR0aW5ncy0+c2V0RXhwZXJp
bWVudGFsQ1NTQ3VzdG9tRmlsdGVyRW5hYmxlZChjc3NDdXN0b21GaWx0ZXJFbmFibGVkKTsKKyAg
ICBzZXR0aW5ncy0+c2V0SmF2YUVuYWJsZWQoamF2YUVuYWJsZWQpOworICAgIHNldHRpbmdzLT5z
ZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKGphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9h
cmQpOworICAgIHNldHRpbmdzLT5zZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNh
bGx5KGphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkpOworICAgIHNldHRpbmdz
LT5zZXRTdXBwb3J0c011bHRpcGxlV2luZG93cyhzdXBwb3J0c011bHRpcGxlV2luZG93cyk7Cisg
ICAgc2V0dGluZ3MtPnNldEphdmFTY3JpcHRFbmFibGVkKGphdmFTY3JpcHRFbmFibGVkKTsKKyAg
ICBzZXR0aW5ncy0+c2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KGxvYWRzSW1hZ2VzQXV0b21h
dGljYWxseSk7CisgICAgc2V0dGluZ3MtPnNldExvY2FsU3RvcmFnZUVuYWJsZWQobG9jYWxTdG9y
YWdlRW5hYmxlZCk7CisgICAgc2V0dGluZ3MtPnNldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hl
RW5hYmxlZChvZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQpOworICAgIHNldHRpbmdz
LT5zZXRQbHVnaW5zRW5hYmxlZChwbHVnaW5zRW5hYmxlZCk7CisgICAgc2V0dGluZ3MtPnNldFNo
cmlua3NTdGFuZGFsb25lSW1hZ2VzVG9GaXQoc2hyaW5rc1N0YW5kYWxvbmVJbWFnZXNUb0ZpdCk7
CisgICAgc2V0dGluZ3MtPnNldFRleHRBcmVhc0FyZVJlc2l6YWJsZSh0ZXh0QXJlYXNBcmVSZXNp
emFibGUpOworICAgIHNldHRpbmdzLT5zZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKHVzZXJTdHls
ZVNoZWV0TG9jYXRpb24pOworICAgIHNldHRpbmdzLT5zZXRVc2VzUGFnZUNhY2hlKHVzZXNQYWdl
Q2FjaGUpOworICAgIHNldHRpbmdzLT5zZXRQYWdlQ2FjaGVTdXBwb3J0c1BsdWdpbnMocGFnZUNh
Y2hlU3VwcG9ydHNQbHVnaW5zKTsKKyAgICBzZXR0aW5ncy0+c2V0V2ViU2VjdXJpdHlFbmFibGVk
KHdlYlNlY3VyaXR5RW5hYmxlZCk7CisgICAgc2V0dGluZ3MtPnNldEFsbG93VW5pdmVyc2FsQWNj
ZXNzRnJvbUZpbGVVUkxzKGFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKTsKKyAgICBz
ZXR0aW5ncy0+c2V0RWRpdGluZ0JlaGF2aW9yKGVkaXRpbmdCZWhhdmlvcik7CisgICAgc2V0dGlu
Z3MtPnNldEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZChoeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQp
OworICAgIC8vIExheW91dFRlc3RzIHdlcmUgd3JpdHRlbiB3aXRoIFNhZmFyaSBNYWMgaW4gbWlu
ZCB3aGljaCBkb2VzIG5vdCBhbGxvdworICAgIC8vIHRhYmJpbmcgdG8gbGlua3MgYnkgZGVmYXVs
dC4KKyAgICB3ZWJWaWV3LT5zZXRUYWJzVG9MaW5rcyh0YWJzVG9MaW5rcyk7CisgICAgc2V0dGlu
Z3MtPnNldENhcmV0QnJvd3NpbmdFbmFibGVkKGNhcmV0QnJvd3NpbmdFbmFibGVkKTsKKyAgICBz
ZXR0aW5ncy0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoYWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0VuYWJsZWQpOworICAgIHNldHRpbmdzLT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5n
Rm9yVmlkZW9FbmFibGVkKGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JWaWRlb0VuYWJsZWQpOwor
ICAgIHNldHRpbmdzLT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbkVu
YWJsZWQoYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb25FbmFibGVkKTsKKyAg
ICBzZXR0aW5ncy0+c2V0Rml4ZWRQb3NpdGlvbkNyZWF0ZXNTdGFja2luZ0NvbnRleHQoYWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb25FbmFibGVkKTsKKyAgICBzZXR0aW5ncy0+
c2V0Rm9yY2VDb21wb3NpdGluZ01vZGUoZm9yY2VDb21wb3NpdGluZ01vZGUpOworICAgIHNldHRp
bmdzLT5zZXRBY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZChhY2NlbGVyYXRlZDJkQ2FudmFzRW5h
YmxlZCk7CisgICAgc2V0dGluZ3MtPnNldERlZmVycmVkMmRDYW52YXNFbmFibGVkKGRlZmVycmVk
MmRDYW52YXNFbmFibGVkKTsKKyAgICBzZXR0aW5ncy0+c2V0QWNjZWxlcmF0ZWRQYWludGluZ0Vu
YWJsZWQoYWNjZWxlcmF0ZWRQYWludGluZ0VuYWJsZWQpOworICAgIHNldHRpbmdzLT5zZXRQZXJU
aWxlUGFpbnRpbmdFbmFibGVkKHBlclRpbGVQYWludGluZ0VuYWJsZWQpOworICAgIHNldHRpbmdz
LT5zZXRBY2NlbGVyYXRlZEFuaW1hdGlvbkVuYWJsZWQoYWNjZWxlcmF0ZWRBbmltYXRpb25FbmFi
bGVkKTsKKyAgICBzZXR0aW5ncy0+c2V0RGVmZXJyZWRJbWFnZURlY29kaW5nRW5hYmxlZChkZWZl
cnJlZEltYWdlRGVjb2RpbmdFbmFibGVkKTsKKyAgICBzZXR0aW5ncy0+c2V0TWVkaWFQbGF5YmFj
a1JlcXVpcmVzVXNlckdlc3R1cmUobWVkaWFQbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUpOwor
ICAgIHNldHRpbmdzLT5zZXRNb2NrU2Nyb2xsYmFyc0VuYWJsZWQobW9ja1Njcm9sbGJhcnNFbmFi
bGVkKTsKKyAgICBzZXR0aW5ncy0+c2V0U2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oc2hv
dWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24pOworCisgICAgLy8gRml4ZWQgdmFsdWVzLgorICAg
IHNldHRpbmdzLT5zZXRUZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yTmV2ZXJJ
bmNsdWRlZCgpOworICAgIHNldHRpbmdzLT5zZXREb3dubG9hZGFibGVCaW5hcnlGb250c0VuYWJs
ZWQodHJ1ZSk7CisgICAgc2V0dGluZ3MtPnNldEFsbG93U2NyaXB0c1RvQ2xvc2VXaW5kb3dzKGZh
bHNlKTsKKyAgICBzZXR0aW5ncy0+c2V0TmVlZHNTaXRlU3BlY2lmaWNRdWlya3ModHJ1ZSk7Cisg
ICAgc2V0dGluZ3MtPnNldEVkaXRhYmxlTGlua0JlaGF2aW9yTmV2ZXJMaXZlKCk7CisgICAgc2V0
dGluZ3MtPnNldEVuYWJsZVNjcm9sbEFuaW1hdG9yKGZhbHNlKTsKKyAgICBzZXR0aW5ncy0+c2V0
Rm9udFJlbmRlcmluZ01vZGVOb3JtYWwoKTsKKyAgICBzZXR0aW5ncy0+c2V0VGV4dERpcmVjdGlv
blN1Ym1lbnVJbmNsdXNpb25CZWhhdmlvck5ldmVySW5jbHVkZWQoKTsKKyAgICBzZXR0aW5ncy0+
c2V0VXNlc0VuY29kaW5nRGV0ZWN0b3IoZmFsc2UpOworICAgIHNldHRpbmdzLT5zZXRJbWFnZXNF
bmFibGVkKHRydWUpOworICAgIHNldHRpbmdzLT5zZXRJbnRlcmFjdGl2ZUZvcm1WYWxpZGF0aW9u
RW5hYmxlZCh0cnVlKTsKKyAgICAvLyBFbmFibGUgZnVsbHNjcmVlbiBzbyB0aGUgZnVsbHNjcmVl
biBsYXlvdXQgdGVzdHMgY2FuIHJ1bi4KKyAgICBzZXR0aW5ncy0+c2V0RnVsbFNjcmVlbkVuYWJs
ZWQodHJ1ZSk7CisgICAgc2V0dGluZ3MtPnNldFZhbGlkYXRpb25NZXNzYWdlVGltZXJNYWduaWZp
Y2F0aW9uKC0xKTsKKyAgICBzZXR0aW5ncy0+c2V0VmlzdWFsV29yZE1vdmVtZW50RW5hYmxlZChm
YWxzZSk7CisgICAgc2V0dGluZ3MtPnNldFBhc3N3b3JkRWNob0VuYWJsZWQoZmFsc2UpOworICAg
IHNldHRpbmdzLT5zZXRBcHBseURldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKHRydWUpOwor
fQorCit9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hl
bGwuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5oCmluZGV4IDMw
NmYzNWNkMWU4MjhkODNlMTdiODNjNThkNDJjNDNiOWVkYjIxZGEuLjU1MGMyMGIyOTkxZjA5NDQy
MjkzODkyNTJhYmFlZjAzOWI4YjhiMjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RTaGVsbC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RTaGVsbC5oCkBAIC05Myw3ICs5Myw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIGNvbnN0
IFRlc3RFdmVudFByaW50ZXIqIHByaW50ZXIoKSBjb25zdCB7IHJldHVybiAmbV9wcmludGVyOyB9
CiAKLSAgICBXZWJQcmVmZXJlbmNlcyogcHJlZmVyZW5jZXMoKSB7IHJldHVybiAmbV9wcmVmczsg
fQorICAgIFdlYlRlc3RSdW5uZXI6OldlYlByZWZlcmVuY2VzKiBwcmVmZXJlbmNlcygpIHsgcmV0
dXJuICZtX3ByZWZzOyB9CiAgICAgdm9pZCBhcHBseVByZWZlcmVuY2VzKCkgeyBtX3ByZWZzLmFw
cGx5VG8obV93ZWJWaWV3KTsgfQogCiAgICAgV2ViUGVybWlzc2lvbnMqIHdlYlBlcm1pc3Npb25z
KCkgeyByZXR1cm4gbV93ZWJQZXJtaXNzaW9ucy5nZXQoKTsgfQpAQCAtMjQxLDcgKzI0MSw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBtX3BlclRpbGVQYWludGluZ0VuYWJsZWQ7CiAgICAgYm9vbCBt
X2FjY2VsZXJhdGVkQW5pbWF0aW9uRW5hYmxlZDsKICAgICBib29sIG1fZGVmZXJyZWRJbWFnZURl
Y29kaW5nRW5hYmxlZDsKLSAgICBXZWJQcmVmZXJlbmNlcyBtX3ByZWZzOworICAgIFdlYlRlc3RS
dW5uZXI6OldlYlByZWZlcmVuY2VzIG1fcHJlZnM7CiAgICAgYm9vbCBtX3N0cmVzc09wdDsKICAg
ICBib29sIG1fc3RyZXNzRGVvcHQ7CiAgICAgc3RkOjpzdHJpbmcgbV9qYXZhU2NyaXB0RmxhZ3M7
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQcmVmZXJlbmNl
cy5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQcmVmZXJlbmNlcy5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2NGE3YjE1NjJkN2U0ODcxNmE1NjY4MWEw
MTBlNDViZmZmN2Y4M2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViUHJlZmVyZW5jZXMuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsMjYyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiV2ViUHJlZmVyZW5jZXMuaCIKLSNpbmNsdWRlICJXZWJSdW50aW1lRmVhdHVyZXMuaCIKLQot
I2luY2x1ZGUgIldlYlZpZXcuaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQotdm9pZCBX
ZWJQcmVmZXJlbmNlczo6cmVzZXQoKQotewotI2lmIE9TKE1BQ19PU19YKQotICAgIGN1cnNpdmVG
b250RmFtaWx5ID0gV2ViU3RyaW5nOjpmcm9tVVRGOCgiQXBwbGUgQ2hhbmNlcnkiKTsKLSAgICBm
YW50YXN5Rm9udEZhbWlseSA9IFdlYlN0cmluZzo6ZnJvbVVURjgoIlBhcHlydXMiKTsKLSAgICBX
ZWJTdHJpbmcgc2VyaWYgPSBXZWJTdHJpbmc6OmZyb21VVEY4KCJUaW1lcyIpOwotI2Vsc2UKLSAg
ICAvLyBUaGVzZSB0d28gZm9udHMgYXJlIHBpY2tlZCBmcm9tIHRoZSBpbnRlcnNlY3Rpb24gb2YK
LSAgICAvLyBXaW4gWFAgZm9udCBsaXN0IGFuZCBWaXN0YSBmb250IGxpc3QgOgotICAgIC8vICAg
aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3R5cG9ncmFwaHkvZm9udHMvd2lueHAuaHRtCi0gICAg
Ly8gICBodHRwOi8vYmxvZ3MubXNkbi5jb20vbWljaGthcC9hcmNoaXZlLzIwMDYvMDQvMDQvNTY3
ODgxLmFzcHgKLSAgICAvLyBTb21lIG9mIHRoZW0gYXJlIGluc3RhbGxlZCBvbmx5IHdpdGggQ0pL
IGFuZCBjb21wbGV4IHNjcmlwdAotICAgIC8vIHN1cHBvcnQgZW5hYmxlZCBvbiBXaW5kb3dzIFhQ
IGFuZCBhcmUgb3V0IG9mIGNvbnNpZGVyYXRpb24gaGVyZS4KLSAgICAvLyAoYWx0aG91Z2ggd2Ug
ZW5hYmxlZCBib3RoIG9uIG91ciBidWlsZGJvdHMuKQotICAgIC8vIFRoZXkgKGVzcGVjaWFsbHkg
SW1wYWN0IGZvciBmYW50YXN5KSBhcmUgbm90IHR5cGljYWwgY3Vyc2l2ZQotICAgIC8vIGFuZCBm
YW50YXN5IGZvbnRzLCBidXQgaXQgc2hvdWxkIG5vdCBtYXR0ZXIgZm9yIGxheW91dCB0ZXN0cwot
ICAgIC8vIGFzIGxvbmcgYXMgdGhleSdyZSBhdmFpbGFibGUuCi0gICAgY3Vyc2l2ZUZvbnRGYW1p
bHkgPSBXZWJTdHJpbmc6OmZyb21VVEY4KCJDb21pYyBTYW5zIE1TIik7Ci0gICAgZmFudGFzeUZv
bnRGYW1pbHkgPSBXZWJTdHJpbmc6OmZyb21VVEY4KCJJbXBhY3QiKTsKLSAgICAvLyBOT1RFOiBj
YXNlIG1hdHRlcnMgaGVyZSwgdGhpcyBtdXN0IGJlICd0aW1lcyBuZXcgcm9tYW4nLCBlbHNlCi0g
ICAgLy8gc29tZSBsYXlvdXQgdGVzdHMgZmFpbC4KLSAgICBXZWJTdHJpbmcgc2VyaWYgPSBXZWJT
dHJpbmc6OmZyb21VVEY4KCJ0aW1lcyBuZXcgcm9tYW4iKTsKLSNlbmRpZgotICAgIHNlcmlmRm9u
dEZhbWlseSA9IHNlcmlmOwotICAgIHN0YW5kYXJkRm9udEZhbWlseSA9IHNlcmlmOwotICAgIGZp
eGVkRm9udEZhbWlseSA9IFdlYlN0cmluZzo6ZnJvbVVURjgoIkNvdXJpZXIiKTsKLSAgICBzYW5z
U2VyaWZGb250RmFtaWx5ID0gV2ViU3RyaW5nOjpmcm9tVVRGOCgiSGVsdmV0aWNhIik7Ci0KLSAg
ICBkZWZhdWx0Rm9udFNpemUgPSAxNjsKLSAgICBkZWZhdWx0Rml4ZWRGb250U2l6ZSA9IDEzOwot
ICAgIG1pbmltdW1Gb250U2l6ZSA9IDA7Ci0gICAgbWluaW11bUxvZ2ljYWxGb250U2l6ZSA9IDk7
Ci0gICAgLy8gRG8gbm90IGRpc2FibGUgYWNjZWxlcmF0aW9uIGZvciAyZCBjYW52YXMgYmFzZWQg
b24gc2l6ZS4KLSAgICAvLyBUaGlzIG1ha2VzIGhhdmluZyB0ZXN0IGV4cGVjdGF0aW9ucyBjb25z
aXN0ZW50LgotICAgIG1pbmltdW1BY2NlbGVyYXRlZDJkQ2FudmFzU2l6ZSA9IDA7Ci0KLSAgICBE
T01QYXN0ZUFsbG93ZWQgPSB0cnVlOwotICAgIFhTU0F1ZGl0b3JFbmFibGVkID0gZmFsc2U7Ci0g
ICAgYWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQgPSB0cnVlOwotICAgIGFsbG93RmlsZUFj
Y2Vzc0Zyb21GaWxlVVJMcyA9IHRydWU7Ci0gICAgYWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRl
bnQgPSB0cnVlOwotICAgIGF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkID0gdHJ1ZTsKLSAgICBk
ZWZhdWx0VGV4dEVuY29kaW5nTmFtZSA9IFdlYlN0cmluZzo6ZnJvbVVURjgoIklTTy04ODU5LTEi
KTsKLSAgICBkZXZlbG9wZXJFeHRyYXNFbmFibGVkID0gdHJ1ZTsKLSAgICBleHBlcmltZW50YWxX
ZWJHTEVuYWJsZWQgPSBmYWxzZTsKLSAgICBleHBlcmltZW50YWxDU1NSZWdpb25zRW5hYmxlZCA9
IHRydWU7Ci0gICAgZXhwZXJpbWVudGFsQ1NTR3JpZExheW91dEVuYWJsZWQgPSBmYWxzZTsKLSAg
ICBqYXZhRW5hYmxlZCA9IGZhbHNlOwotICAgIGphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQg
PSB0cnVlOwotICAgIGphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkgPSB0cnVl
OwotICAgIHN1cHBvcnRzTXVsdGlwbGVXaW5kb3dzID0gdHJ1ZTsKLSAgICBqYXZhU2NyaXB0RW5h
YmxlZCA9IHRydWU7Ci0gICAgbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5ID0gdHJ1ZTsKLSAgICBs
b2NhbFN0b3JhZ2VFbmFibGVkID0gdHJ1ZTsKLSAgICBvZmZsaW5lV2ViQXBwbGljYXRpb25DYWNo
ZUVuYWJsZWQgPSB0cnVlOwotICAgIHBsdWdpbnNFbmFibGVkID0gdHJ1ZTsKLSAgICBzaHJpbmtz
U3RhbmRhbG9uZUltYWdlc1RvRml0ID0gZmFsc2U7Ci0gICAgdGV4dEFyZWFzQXJlUmVzaXphYmxl
ID0gZmFsc2U7Ci0gICAgdXNlclN0eWxlU2hlZXRMb2NhdGlvbiA9IFdlYlVSTCgpOwotICAgIHVz
ZXNQYWdlQ2FjaGUgPSBmYWxzZTsKLSAgICBwYWdlQ2FjaGVTdXBwb3J0c1BsdWdpbnMgPSBmYWxz
ZTsKLSAgICB3ZWJTZWN1cml0eUVuYWJsZWQgPSB0cnVlOwotICAgIGNhcmV0QnJvd3NpbmdFbmFi
bGVkID0gZmFsc2U7Ci0KLSAgICAvLyBBbGxvdyB0aG9zZSBsYXlvdXQgdGVzdHMgcnVubmluZyBh
cyBsb2NhbCBmaWxlcywgaS5lLiB1bmRlcgotICAgIC8vIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
bG9jYWwsIHRvIGFjY2VzcyBodHRwIHNlcnZlci4KLSAgICBhbGxvd1VuaXZlcnNhbEFjY2Vzc0Zy
b21GaWxlVVJMcyA9IHRydWU7Ci0KLSNpZiBPUyhEQVJXSU4pCi0gICAgZWRpdGluZ0JlaGF2aW9y
ID0gV2ViU2V0dGluZ3M6OkVkaXRpbmdCZWhhdmlvck1hYzsKLSNlbHNlCi0gICAgZWRpdGluZ0Jl
aGF2aW9yID0gV2ViU2V0dGluZ3M6OkVkaXRpbmdCZWhhdmlvcldpbjsKLSNlbmRpZgotCi0gICAg
dGFic1RvTGlua3MgPSBmYWxzZTsKLSAgICBoeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQgPSBmYWxz
ZTsKLSAgICBhY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yVmlkZW9FbmFibGVkID0gZmFsc2U7Ci0g
ICAgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb25FbmFibGVkID0gZmFsc2U7
Ci0gICAgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQgPSBmYWxzZTsKLSAgICBhY2NlbGVy
YXRlZDJkQ2FudmFzRW5hYmxlZCA9IGZhbHNlOwotICAgIGRlZmVycmVkMmRDYW52YXNFbmFibGVk
ID0gZmFsc2U7Ci0gICAgYWNjZWxlcmF0ZWRQYWludGluZ0VuYWJsZWQgPSBmYWxzZTsKLSAgICBm
b3JjZUNvbXBvc2l0aW5nTW9kZSA9IGZhbHNlOwotICAgIHBlclRpbGVQYWludGluZ0VuYWJsZWQg
PSBmYWxzZTsKLSAgICBhY2NlbGVyYXRlZEFuaW1hdGlvbkVuYWJsZWQgPSBmYWxzZTsKLSAgICBk
ZWZlcnJlZEltYWdlRGVjb2RpbmdFbmFibGVkID0gZmFsc2U7Ci0gICAgbWVkaWFQbGF5YmFja1Jl
cXVpcmVzVXNlckdlc3R1cmUgPSBmYWxzZTsKLSAgICBtb2NrU2Nyb2xsYmFyc0VuYWJsZWQgPSBm
YWxzZTsKLSAgICBjc3NDdXN0b21GaWx0ZXJFbmFibGVkID0gZmFsc2U7Ci0gICAgc2hvdWxkUmVz
cGVjdEltYWdlT3JpZW50YXRpb24gPSBmYWxzZTsKLX0KLQotc3RhdGljIHZvaWQgc2V0U3RhbmRh
cmRGb250RmFtaWx5V3JhcHBlcihXZWJTZXR0aW5ncyogc2V0dGluZ3MsIGNvbnN0IFdlYktpdDo6
V2ViU3RyaW5nJiBmb250LCBVU2NyaXB0Q29kZSBzY3JpcHQpCi17Ci0gICAgc2V0dGluZ3MtPnNl
dFN0YW5kYXJkRm9udEZhbWlseShmb250LCBzY3JpcHQpOwotfQotCi1zdGF0aWMgdm9pZCBzZXRG
aXhlZEZvbnRGYW1pbHlXcmFwcGVyKFdlYlNldHRpbmdzKiBzZXR0aW5ncywgY29uc3QgV2ViS2l0
OjpXZWJTdHJpbmcmIGZvbnQsIFVTY3JpcHRDb2RlIHNjcmlwdCkKLXsKLSAgICBzZXR0aW5ncy0+
c2V0Rml4ZWRGb250RmFtaWx5KGZvbnQsIHNjcmlwdCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHNldFNl
cmlmRm9udEZhbWlseVdyYXBwZXIoV2ViU2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBXZWJLaXQ6
OldlYlN0cmluZyYgZm9udCwgVVNjcmlwdENvZGUgc2NyaXB0KQotewotICAgIHNldHRpbmdzLT5z
ZXRTZXJpZkZvbnRGYW1pbHkoZm9udCwgc2NyaXB0KTsKLX0KLQotc3RhdGljIHZvaWQgc2V0U2Fu
c1NlcmlmRm9udEZhbWlseVdyYXBwZXIoV2ViU2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBXZWJL
aXQ6OldlYlN0cmluZyYgZm9udCwgVVNjcmlwdENvZGUgc2NyaXB0KQotewotICAgIHNldHRpbmdz
LT5zZXRTYW5zU2VyaWZGb250RmFtaWx5KGZvbnQsIHNjcmlwdCk7Ci19Ci0KLXN0YXRpYyB2b2lk
IHNldEN1cnNpdmVGb250RmFtaWx5V3JhcHBlcihXZWJTZXR0aW5ncyogc2V0dGluZ3MsIGNvbnN0
IFdlYktpdDo6V2ViU3RyaW5nJiBmb250LCBVU2NyaXB0Q29kZSBzY3JpcHQpCi17Ci0gICAgc2V0
dGluZ3MtPnNldEN1cnNpdmVGb250RmFtaWx5KGZvbnQsIHNjcmlwdCk7Ci19Ci0KLXN0YXRpYyB2
b2lkIHNldEZhbnRhc3lGb250RmFtaWx5V3JhcHBlcihXZWJTZXR0aW5ncyogc2V0dGluZ3MsIGNv
bnN0IFdlYktpdDo6V2ViU3RyaW5nJiBmb250LCBVU2NyaXB0Q29kZSBzY3JpcHQpCi17Ci0gICAg
c2V0dGluZ3MtPnNldEZhbnRhc3lGb250RmFtaWx5KGZvbnQsIHNjcmlwdCk7Ci19Ci0KLXR5cGVk
ZWYgdm9pZCAoKlNldEZvbnRGYW1pbHlXcmFwcGVyKShXZWJTZXR0aW5ncyosIGNvbnN0IFdlYlN0
cmluZyYsIFVTY3JpcHRDb2RlKTsKLQotc3RhdGljIHZvaWQgYXBwbHlGb250TWFwKFdlYlNldHRp
bmdzKiBzZXR0aW5ncywgY29uc3QgV2ViUHJlZmVyZW5jZXM6OlNjcmlwdEZvbnRGYW1pbHlNYXAm
IG1hcCwgU2V0Rm9udEZhbWlseVdyYXBwZXIgc2V0dGVyKQotewotICAgIGZvciAoV2ViUHJlZmVy
ZW5jZXM6OlNjcmlwdEZvbnRGYW1pbHlNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtYXAuYmVn
aW4oKTsgaXRlciAhPSBtYXAuZW5kKCk7ICsraXRlcikgewotICAgICAgICBjb25zdCBXZWJTdHJp
bmcmIGZvbnQgPSBpdGVyLT52YWx1ZTsKLSAgICAgICAgaWYgKCFmb250LmlzTnVsbCgpICYmICFm
b250LmlzRW1wdHkoKSkKLSAgICAgICAgICAgICgqc2V0dGVyKShzZXR0aW5ncywgZm9udCwgc3Rh
dGljX2Nhc3Q8VVNjcmlwdENvZGU+KGl0ZXItPmtleSkpOwotICAgIH0KLX0KLQotdm9pZCBXZWJQ
cmVmZXJlbmNlczo6YXBwbHlUbyhXZWJWaWV3KiB3ZWJWaWV3KQotewotICAgIFdlYlNldHRpbmdz
KiBzZXR0aW5ncyA9IHdlYlZpZXctPnNldHRpbmdzKCk7Ci0gICAgc2V0dGluZ3MtPnNldFN0YW5k
YXJkRm9udEZhbWlseShzdGFuZGFyZEZvbnRGYW1pbHkpOwotICAgIHNldHRpbmdzLT5zZXRGaXhl
ZEZvbnRGYW1pbHkoZml4ZWRGb250RmFtaWx5KTsKLSAgICBzZXR0aW5ncy0+c2V0U2VyaWZGb250
RmFtaWx5KHNlcmlmRm9udEZhbWlseSk7Ci0gICAgc2V0dGluZ3MtPnNldFNhbnNTZXJpZkZvbnRG
YW1pbHkoc2Fuc1NlcmlmRm9udEZhbWlseSk7Ci0gICAgc2V0dGluZ3MtPnNldEN1cnNpdmVGb250
RmFtaWx5KGN1cnNpdmVGb250RmFtaWx5KTsKLSAgICBzZXR0aW5ncy0+c2V0RmFudGFzeUZvbnRG
YW1pbHkoZmFudGFzeUZvbnRGYW1pbHkpOwotCi0gICAgYXBwbHlGb250TWFwKHNldHRpbmdzLCBz
dGFuZGFyZEZvbnRNYXAsIHNldFN0YW5kYXJkRm9udEZhbWlseVdyYXBwZXIpOwotICAgIGFwcGx5
Rm9udE1hcChzZXR0aW5ncywgZml4ZWRGb250TWFwLCBzZXRGaXhlZEZvbnRGYW1pbHlXcmFwcGVy
KTsKLSAgICBhcHBseUZvbnRNYXAoc2V0dGluZ3MsIHNlcmlmRm9udE1hcCwgc2V0U2VyaWZGb250
RmFtaWx5V3JhcHBlcik7Ci0gICAgYXBwbHlGb250TWFwKHNldHRpbmdzLCBzYW5zU2VyaWZGb250
TWFwLCBzZXRTYW5zU2VyaWZGb250RmFtaWx5V3JhcHBlcik7Ci0gICAgYXBwbHlGb250TWFwKHNl
dHRpbmdzLCBjdXJzaXZlRm9udE1hcCwgc2V0Q3Vyc2l2ZUZvbnRGYW1pbHlXcmFwcGVyKTsKLSAg
ICBhcHBseUZvbnRNYXAoc2V0dGluZ3MsIGZhbnRhc3lGb250TWFwLCBzZXRGYW50YXN5Rm9udEZh
bWlseVdyYXBwZXIpOwotCi0gICAgc2V0dGluZ3MtPnNldERlZmF1bHRGb250U2l6ZShkZWZhdWx0
Rm9udFNpemUpOwotICAgIHNldHRpbmdzLT5zZXREZWZhdWx0Rml4ZWRGb250U2l6ZShkZWZhdWx0
Rml4ZWRGb250U2l6ZSk7Ci0gICAgc2V0dGluZ3MtPnNldE1pbmltdW1Gb250U2l6ZShtaW5pbXVt
Rm9udFNpemUpOwotICAgIHNldHRpbmdzLT5zZXRNaW5pbXVtTG9naWNhbEZvbnRTaXplKG1pbmlt
dW1Mb2dpY2FsRm9udFNpemUpOwotICAgIHNldHRpbmdzLT5zZXRNaW5pbXVtQWNjZWxlcmF0ZWQy
ZENhbnZhc1NpemUobWluaW11bUFjY2VsZXJhdGVkMmRDYW52YXNTaXplKTsKLQotICAgIHNldHRp
bmdzLT5zZXRET01QYXN0ZUFsbG93ZWQoRE9NUGFzdGVBbGxvd2VkKTsKLSAgICBzZXR0aW5ncy0+
c2V0WFNTQXVkaXRvckVuYWJsZWQoWFNTQXVkaXRvckVuYWJsZWQpOwotICAgIHNldHRpbmdzLT5z
ZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudChhbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29u
dGVudCk7Ci0gICAgc2V0dGluZ3MtPnNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyhhbGxv
d0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMpOwotICAgIHNldHRpbmdzLT5zZXRBbGxvd1J1bm5pbmdP
Zkluc2VjdXJlQ29udGVudChhbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudCk7Ci0gICAgc2V0
dGluZ3MtPnNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKGF1dGhvckFuZFVzZXJTdHlsZXNF
bmFibGVkKTsKLSAgICBzZXR0aW5ncy0+c2V0RGVmYXVsdFRleHRFbmNvZGluZ05hbWUoZGVmYXVs
dFRleHRFbmNvZGluZ05hbWUpOwotICAgIHNldHRpbmdzLT5zZXREZXZlbG9wZXJFeHRyYXNFbmFi
bGVkKGRldmVsb3BlckV4dHJhc0VuYWJsZWQpOwotICAgIHNldHRpbmdzLT5zZXRFeHBlcmltZW50
YWxXZWJHTEVuYWJsZWQoZXhwZXJpbWVudGFsV2ViR0xFbmFibGVkKTsKLSAgICBXZWJSdW50aW1l
RmVhdHVyZXM6OmVuYWJsZUNTU1JlZ2lvbnMoZXhwZXJpbWVudGFsQ1NTUmVnaW9uc0VuYWJsZWQp
OwotICAgIHNldHRpbmdzLT5zZXRFeHBlcmltZW50YWxDU1NHcmlkTGF5b3V0RW5hYmxlZChleHBl
cmltZW50YWxDU1NHcmlkTGF5b3V0RW5hYmxlZCk7Ci0gICAgc2V0dGluZ3MtPnNldEV4cGVyaW1l
bnRhbENTU0N1c3RvbUZpbHRlckVuYWJsZWQoY3NzQ3VzdG9tRmlsdGVyRW5hYmxlZCk7Ci0gICAg
c2V0dGluZ3MtPnNldEphdmFFbmFibGVkKGphdmFFbmFibGVkKTsKLSAgICBzZXR0aW5ncy0+c2V0
SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZChqYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJk
KTsKLSAgICBzZXR0aW5ncy0+c2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxs
eShqYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KTsKLSAgICBzZXR0aW5ncy0+
c2V0U3VwcG9ydHNNdWx0aXBsZVdpbmRvd3Moc3VwcG9ydHNNdWx0aXBsZVdpbmRvd3MpOwotICAg
IHNldHRpbmdzLT5zZXRKYXZhU2NyaXB0RW5hYmxlZChqYXZhU2NyaXB0RW5hYmxlZCk7Ci0gICAg
c2V0dGluZ3MtPnNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShsb2Fkc0ltYWdlc0F1dG9tYXRp
Y2FsbHkpOwotICAgIHNldHRpbmdzLT5zZXRMb2NhbFN0b3JhZ2VFbmFibGVkKGxvY2FsU3RvcmFn
ZUVuYWJsZWQpOwotICAgIHNldHRpbmdzLT5zZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVu
YWJsZWQob2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKTsKLSAgICBzZXR0aW5ncy0+
c2V0UGx1Z2luc0VuYWJsZWQocGx1Z2luc0VuYWJsZWQpOwotICAgIHNldHRpbmdzLT5zZXRTaHJp
bmtzU3RhbmRhbG9uZUltYWdlc1RvRml0KHNocmlua3NTdGFuZGFsb25lSW1hZ2VzVG9GaXQpOwot
ICAgIHNldHRpbmdzLT5zZXRUZXh0QXJlYXNBcmVSZXNpemFibGUodGV4dEFyZWFzQXJlUmVzaXph
YmxlKTsKLSAgICBzZXR0aW5ncy0+c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbih1c2VyU3R5bGVT
aGVldExvY2F0aW9uKTsKLSAgICBzZXR0aW5ncy0+c2V0VXNlc1BhZ2VDYWNoZSh1c2VzUGFnZUNh
Y2hlKTsKLSAgICBzZXR0aW5ncy0+c2V0UGFnZUNhY2hlU3VwcG9ydHNQbHVnaW5zKHBhZ2VDYWNo
ZVN1cHBvcnRzUGx1Z2lucyk7Ci0gICAgc2V0dGluZ3MtPnNldFdlYlNlY3VyaXR5RW5hYmxlZCh3
ZWJTZWN1cml0eUVuYWJsZWQpOwotICAgIHNldHRpbmdzLT5zZXRBbGxvd1VuaXZlcnNhbEFjY2Vz
c0Zyb21GaWxlVVJMcyhhbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyk7Ci0gICAgc2V0
dGluZ3MtPnNldEVkaXRpbmdCZWhhdmlvcihlZGl0aW5nQmVoYXZpb3IpOwotICAgIHNldHRpbmdz
LT5zZXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQoaHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKTsK
LSAgICAvLyBMYXlvdXRUZXN0cyB3ZXJlIHdyaXR0ZW4gd2l0aCBTYWZhcmkgTWFjIGluIG1pbmQg
d2hpY2ggZG9lcyBub3QgYWxsb3cKLSAgICAvLyB0YWJiaW5nIHRvIGxpbmtzIGJ5IGRlZmF1bHQu
Ci0gICAgd2ViVmlldy0+c2V0VGFic1RvTGlua3ModGFic1RvTGlua3MpOwotICAgIHNldHRpbmdz
LT5zZXRDYXJldEJyb3dzaW5nRW5hYmxlZChjYXJldEJyb3dzaW5nRW5hYmxlZCk7Ci0gICAgc2V0
dGluZ3MtPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKGFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdFbmFibGVkKTsKLSAgICBzZXR0aW5ncy0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Zv
clZpZGVvRW5hYmxlZChhY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yVmlkZW9FbmFibGVkKTsKLSAg
ICBzZXR0aW5ncy0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb25FbmFi
bGVkKGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uRW5hYmxlZCk7Ci0gICAg
c2V0dGluZ3MtPnNldEZpeGVkUG9zaXRpb25DcmVhdGVzU3RhY2tpbmdDb250ZXh0KGFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uRW5hYmxlZCk7Ci0gICAgc2V0dGluZ3MtPnNl
dEZvcmNlQ29tcG9zaXRpbmdNb2RlKGZvcmNlQ29tcG9zaXRpbmdNb2RlKTsKLSAgICBzZXR0aW5n
cy0+c2V0QWNjZWxlcmF0ZWQyZENhbnZhc0VuYWJsZWQoYWNjZWxlcmF0ZWQyZENhbnZhc0VuYWJs
ZWQpOwotICAgIHNldHRpbmdzLT5zZXREZWZlcnJlZDJkQ2FudmFzRW5hYmxlZChkZWZlcnJlZDJk
Q2FudmFzRW5hYmxlZCk7Ci0gICAgc2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkUGFpbnRpbmdFbmFi
bGVkKGFjY2VsZXJhdGVkUGFpbnRpbmdFbmFibGVkKTsKLSAgICBzZXR0aW5ncy0+c2V0UGVyVGls
ZVBhaW50aW5nRW5hYmxlZChwZXJUaWxlUGFpbnRpbmdFbmFibGVkKTsKLSAgICBzZXR0aW5ncy0+
c2V0QWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkKGFjY2VsZXJhdGVkQW5pbWF0aW9uRW5hYmxl
ZCk7Ci0gICAgc2V0dGluZ3MtPnNldERlZmVycmVkSW1hZ2VEZWNvZGluZ0VuYWJsZWQoZGVmZXJy
ZWRJbWFnZURlY29kaW5nRW5hYmxlZCk7Ci0gICAgc2V0dGluZ3MtPnNldE1lZGlhUGxheWJhY2tS
ZXF1aXJlc1VzZXJHZXN0dXJlKG1lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlKTsKLSAg
ICBzZXR0aW5ncy0+c2V0TW9ja1Njcm9sbGJhcnNFbmFibGVkKG1vY2tTY3JvbGxiYXJzRW5hYmxl
ZCk7Ci0gICAgc2V0dGluZ3MtPnNldFNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKHNob3Vs
ZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uKTsKLQotICAgIC8vIEZpeGVkIHZhbHVlcy4KLSAgICBz
ZXR0aW5ncy0+c2V0VGV4dERpcmVjdGlvblN1Ym1lbnVJbmNsdXNpb25CZWhhdmlvck5ldmVySW5j
bHVkZWQoKTsKLSAgICBzZXR0aW5ncy0+c2V0RG93bmxvYWRhYmxlQmluYXJ5Rm9udHNFbmFibGVk
KHRydWUpOwotICAgIHNldHRpbmdzLT5zZXRBbGxvd1NjcmlwdHNUb0Nsb3NlV2luZG93cyhmYWxz
ZSk7Ci0gICAgc2V0dGluZ3MtPnNldE5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKHRydWUpOwotICAg
IHNldHRpbmdzLT5zZXRFZGl0YWJsZUxpbmtCZWhhdmlvck5ldmVyTGl2ZSgpOwotICAgIHNldHRp
bmdzLT5zZXRFbmFibGVTY3JvbGxBbmltYXRvcihmYWxzZSk7Ci0gICAgc2V0dGluZ3MtPnNldEZv
bnRSZW5kZXJpbmdNb2RlTm9ybWFsKCk7Ci0gICAgc2V0dGluZ3MtPnNldFRleHREaXJlY3Rpb25T
dWJtZW51SW5jbHVzaW9uQmVoYXZpb3JOZXZlckluY2x1ZGVkKCk7Ci0gICAgc2V0dGluZ3MtPnNl
dFVzZXNFbmNvZGluZ0RldGVjdG9yKGZhbHNlKTsKLSAgICBzZXR0aW5ncy0+c2V0SW1hZ2VzRW5h
YmxlZCh0cnVlKTsKLSAgICBzZXR0aW5ncy0+c2V0SW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVu
YWJsZWQodHJ1ZSk7Ci0gICAgLy8gRW5hYmxlIGZ1bGxzY3JlZW4gc28gdGhlIGZ1bGxzY3JlZW4g
bGF5b3V0IHRlc3RzIGNhbiBydW4uCi0gICAgc2V0dGluZ3MtPnNldEZ1bGxTY3JlZW5FbmFibGVk
KHRydWUpOwotICAgIHNldHRpbmdzLT5zZXRWYWxpZGF0aW9uTWVzc2FnZVRpbWVyTWFnbmlmaWNh
dGlvbigtMSk7Ci0gICAgc2V0dGluZ3MtPnNldFZpc3VhbFdvcmRNb3ZlbWVudEVuYWJsZWQoZmFs
c2UpOwotICAgIHNldHRpbmdzLT5zZXRQYXNzd29yZEVjaG9FbmFibGVkKGZhbHNlKTsKLSAgICBz
ZXR0aW5ncy0+c2V0QXBwbHlEZXZpY2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcih0cnVlKTsKLX0K
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlByZWZlcmVuY2Vz
LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQcmVmZXJlbmNlcy5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMTdhM2NiZDI2NTU3ZDMwMDg0OTczMGI3ZjY2NmIw
OWQwNjJkNjQxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlByZWZlcmVuY2VzLmgKKysrIC9kZXYv
bnVsbApAQCAtMSwxMjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViUHJlZmVyZW5jZXNfaAotI2RlZmluZSBX
ZWJQcmVmZXJlbmNlc19oCi0KLSNpbmNsdWRlICJXZWJTZXR0aW5ncy5oIgotI2luY2x1ZGUgInBs
YXRmb3JtL1dlYlN0cmluZy5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlVSTC5oIgotI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotY2xhc3MgV2ViVmlldzsK
LX0KLQotc3RydWN0IFdlYlByZWZlcmVuY2VzIHsKLSAgICBXZWJLaXQ6OldlYlN0cmluZyBzdGFu
ZGFyZEZvbnRGYW1pbHk7Ci0gICAgV2ViS2l0OjpXZWJTdHJpbmcgZml4ZWRGb250RmFtaWx5Owot
ICAgIFdlYktpdDo6V2ViU3RyaW5nIHNlcmlmRm9udEZhbWlseTsKLSAgICBXZWJLaXQ6OldlYlN0
cmluZyBzYW5zU2VyaWZGb250RmFtaWx5OwotICAgIFdlYktpdDo6V2ViU3RyaW5nIGN1cnNpdmVG
b250RmFtaWx5OwotICAgIFdlYktpdDo6V2ViU3RyaW5nIGZhbnRhc3lGb250RmFtaWx5OwotCi0g
ICAgLy8gVVNjcmlwdENvZGUgdXNlcyAtMSBhbmQgMCBmb3IgVVNjcmlwdEludmFsaWRDb2RlIGFu
ZCBVU2NyaXB0Q29tbW9uLgotICAgIC8vIFdlIG5lZWQgdG8gdXNlIC0yIGFuZCAtMyBmb3IgZW1w
dHkgdmFsdWUgYW5kIGRlbGV0ZWQgdmFsdWUuCi0gICAgLy8gKFNlZSBXZWJDb3JlOjpTY3JpcHRG
b250RmFtaWx5TWFwKQotICAgIHN0cnVjdCBVU2NyaXB0Q29kZUhhc2hUcmFpdHMgOiBXVEY6Okdl
bmVyaWNIYXNoVHJhaXRzPGludD4gewotICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZh
bHVlSXNaZXJvID0gZmFsc2U7Ci0gICAgICAgIHN0YXRpYyBpbnQgZW1wdHlWYWx1ZSgpIHsgcmV0
dXJuIC0yOyB9Ci0gICAgICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShpbnQm
IHNsb3QpIHsgc2xvdCA9IC0zOyB9Ci0gICAgICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVl
KGludCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPT0gLTM7IH0KLSAgICB9OwotCi0gICAgLy8gTWFw
IG9mIFVTY3JpcHRDb2RlIHRvIGZvbnQgc3VjaCBhcyBVU0NSSVBUX0FSQUJJQyB0byAiTXkgQXJh
YmljIEZvbnQiLgotICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQsIFdlYktpdDo6V2ViU3RyaW5nLCBE
ZWZhdWx0SGFzaDxpbnQ+OjpIYXNoLCBVU2NyaXB0Q29kZUhhc2hUcmFpdHM+IFNjcmlwdEZvbnRG
YW1pbHlNYXA7Ci0gICAgU2NyaXB0Rm9udEZhbWlseU1hcCBzdGFuZGFyZEZvbnRNYXA7Ci0gICAg
U2NyaXB0Rm9udEZhbWlseU1hcCBmaXhlZEZvbnRNYXA7Ci0gICAgU2NyaXB0Rm9udEZhbWlseU1h
cCBzZXJpZkZvbnRNYXA7Ci0gICAgU2NyaXB0Rm9udEZhbWlseU1hcCBzYW5zU2VyaWZGb250TWFw
OwotICAgIFNjcmlwdEZvbnRGYW1pbHlNYXAgY3Vyc2l2ZUZvbnRNYXA7Ci0gICAgU2NyaXB0Rm9u
dEZhbWlseU1hcCBmYW50YXN5Rm9udE1hcDsKLQotICAgIGludCBkZWZhdWx0Rm9udFNpemU7Ci0g
ICAgaW50IGRlZmF1bHRGaXhlZEZvbnRTaXplOwotICAgIGludCBtaW5pbXVtRm9udFNpemU7Ci0g
ICAgaW50IG1pbmltdW1Mb2dpY2FsRm9udFNpemU7Ci0gICAgaW50IG1pbmltdW1BY2NlbGVyYXRl
ZDJkQ2FudmFzU2l6ZTsKLQotICAgIGJvb2wgRE9NUGFzdGVBbGxvd2VkOwotICAgIGJvb2wgWFNT
QXVkaXRvckVuYWJsZWQ7Ci0gICAgYm9vbCBhbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudDsK
LSAgICBib29sIGFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMczsKLSAgICBib29sIGFsbG93UnVu
bmluZ09mSW5zZWN1cmVDb250ZW50OwotICAgIGJvb2wgYXV0aG9yQW5kVXNlclN0eWxlc0VuYWJs
ZWQ7Ci0gICAgV2ViS2l0OjpXZWJTdHJpbmcgZGVmYXVsdFRleHRFbmNvZGluZ05hbWU7Ci0gICAg
Ym9vbCBkZXZlbG9wZXJFeHRyYXNFbmFibGVkOwotICAgIGJvb2wgZXhwZXJpbWVudGFsV2ViR0xF
bmFibGVkOwotICAgIGJvb2wgZXhwZXJpbWVudGFsQ1NTUmVnaW9uc0VuYWJsZWQ7Ci0gICAgYm9v
bCBleHBlcmltZW50YWxDU1NHcmlkTGF5b3V0RW5hYmxlZDsKLSAgICBib29sIGphdmFFbmFibGVk
OwotICAgIGJvb2wgamF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZDsKLSAgICBib29sIGphdmFT
Y3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHk7Ci0gICAgYm9vbCBzdXBwb3J0c011bHRp
cGxlV2luZG93czsKLSAgICBib29sIGphdmFTY3JpcHRFbmFibGVkOwotICAgIGJvb2wgbG9hZHNJ
bWFnZXNBdXRvbWF0aWNhbGx5OwotICAgIGJvb2wgbG9jYWxTdG9yYWdlRW5hYmxlZDsKLSAgICBi
b29sIG9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZDsKLSAgICBib29sIHBsdWdpbnNF
bmFibGVkOwotICAgIGJvb2wgc2hyaW5rc1N0YW5kYWxvbmVJbWFnZXNUb0ZpdDsKLSAgICBib29s
IHRleHRBcmVhc0FyZVJlc2l6YWJsZTsKLSAgICBXZWJLaXQ6OldlYlVSTCB1c2VyU3R5bGVTaGVl
dExvY2F0aW9uOwotICAgIGJvb2wgdXNlc1BhZ2VDYWNoZTsKLSAgICBib29sIHBhZ2VDYWNoZVN1
cHBvcnRzUGx1Z2luczsKLSAgICBib29sIHdlYlNlY3VyaXR5RW5hYmxlZDsKLSAgICBib29sIGFs
bG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzOwotICAgIFdlYktpdDo6V2ViU2V0dGluZ3M6
OkVkaXRpbmdCZWhhdmlvciBlZGl0aW5nQmVoYXZpb3I7Ci0gICAgYm9vbCB0YWJzVG9MaW5rczsK
LSAgICBib29sIGh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZDsKLSAgICBib29sIGNhcmV0QnJvd3Np
bmdFbmFibGVkOwotICAgIGJvb2wgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvclZpZGVvRW5hYmxl
ZDsKLSAgICBib29sIGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uRW5hYmxl
ZDsKLSAgICBib29sIGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkOwotICAgIGJvb2wgZm9y
Y2VDb21wb3NpdGluZ01vZGU7Ci0gICAgYm9vbCBhY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZDsK
LSAgICBib29sIGRlZmVycmVkMmRDYW52YXNFbmFibGVkOwotICAgIGJvb2wgYWNjZWxlcmF0ZWRQ
YWludGluZ0VuYWJsZWQ7Ci0gICAgYm9vbCBwZXJUaWxlUGFpbnRpbmdFbmFibGVkOwotICAgIGJv
b2wgYWNjZWxlcmF0ZWRBbmltYXRpb25FbmFibGVkOwotICAgIGJvb2wgZGVmZXJyZWRJbWFnZURl
Y29kaW5nRW5hYmxlZDsKLSAgICBib29sIG1lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJl
OwotICAgIGJvb2wgbW9ja1Njcm9sbGJhcnNFbmFibGVkOwotICAgIGJvb2wgY3NzQ3VzdG9tRmls
dGVyRW5hYmxlZDsKLSAgICBib29sIHNob3VsZFJlc3BlY3RJbWFnZU9yaWVudGF0aW9uOwotCi0g
ICAgV2ViUHJlZmVyZW5jZXMoKSB7IHJlc2V0KCk7IH0KLSAgICB2b2lkIHJlc2V0KCk7Ci0gICAg
dm9pZCBhcHBseVRvKFdlYktpdDo6V2ViVmlldyopOwotfTsKLQotI2VuZGlmIC8vIFdlYlByZWZl
cmVuY2VzX2gKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZp
ZXdIb3N0LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNw
cAppbmRleCBiYzVmOTk0MmI5ZDU4Zjg1NWE5MzUyOGU5NzI0M2ZhNDlhNzA3MTBlLi41YmE5N2Jl
ZGYwZDIyN2RjNDg4YWI1OGNhNmZjMGRiNmUyMDhkMmNkIDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCkBAIC0xMzkxLDYgKzEzOTEsMjYgQEAgV2Vi
S2l0OjpXZWJTdHJpbmcgV2ViVmlld0hvc3Q6OmdldEFic29sdXRlV2ViU3RyaW5nRnJvbVVURjhQ
YXRoKGNvbnN0IHN0ZDo6c3RyaW4KICAgICByZXR1cm4gd2Via2l0X3N1cHBvcnQ6OkdldEFic29s
dXRlV2ViU3RyaW5nRnJvbVVURjhQYXRoKHBhdGgpOwogfQogCitXZWJVUkwgV2ViVmlld0hvc3Q6
OmxvY2FsRmlsZVRvRGF0YVVSTChjb25zdCBXZWJLaXQ6OldlYlVSTCYgdXJsKQoreworICAgIHJl
dHVybiB3ZWJraXRfc3VwcG9ydDo6TG9jYWxGaWxlVG9EYXRhVVJMKHVybCk7Cit9CisKK1dlYlVS
TCBXZWJWaWV3SG9zdDo6cmV3cml0ZUxheW91dFRlc3RzVVJMKGNvbnN0IHN0ZDo6c3RyaW5nJiB1
cmwpCit7CisgICAgcmV0dXJuIHdlYmtpdF9zdXBwb3J0OjpSZXdyaXRlTGF5b3V0VGVzdHNVUkwo
dXJsKTsKK30KKworV2ViUHJlZmVyZW5jZXMqIFdlYlZpZXdIb3N0OjpwcmVmZXJlbmNlcygpCit7
CisgICAgcmV0dXJuIG1fc2hlbGwtPnByZWZlcmVuY2VzKCk7Cit9CisKK3ZvaWQgV2ViVmlld0hv
c3Q6OmFwcGx5UHJlZmVyZW5jZXMoKQoreworICAgIG1fc2hlbGwtPmFwcGx5UHJlZmVyZW5jZXMo
KTsKK30KKwogLy8gUHVibGljIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBXZWJWaWV3SG9zdDo6V2ViVmlld0hv
c3QoVGVzdFNoZWxsKiBzaGVsbCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1dlYlZpZXdIb3N0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJW
aWV3SG9zdC5oCmluZGV4IDk3OTA2ZWIyNjcyZmI2MDk4OTg2NDBhMGZjMjlkOTQyYTNhMzZjZjIu
LjgwMGQwYWZmMTEyMDUxNGVlMDI3OWIzNThkZWFhYzFlMWU0MmJhODAgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaApAQCAtMTQzLDYgKzE0MywxMCBAQCBj
bGFzcyBXZWJWaWV3SG9zdCA6IHB1YmxpYyBXZWJLaXQ6OldlYlZpZXdDbGllbnQsIHB1YmxpYyBX
ZWJLaXQ6OldlYkZyYW1lQ2xpZW50LAogICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJTdHJpbmcgcmVn
aXN0ZXJJc29sYXRlZEZpbGVTeXN0ZW0oY29uc3QgV2ViS2l0OjpXZWJWZWN0b3I8V2ViS2l0OjpX
ZWJTdHJpbmc+JiBhYnNvbHV0ZUZpbGVuYW1lcykgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBsb25n
IGxvbmcgZ2V0Q3VycmVudFRpbWVJbk1pbGxpc2Vjb25kKCkgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCBXZWJLaXQ6OldlYlN0cmluZyBnZXRBYnNvbHV0ZVdlYlN0cmluZ0Zyb21VVEY4UGF0aChjb25z
dCBzdGQ6OnN0cmluZyYgcGF0aCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJLaXQ6OldlYlVS
TCBsb2NhbEZpbGVUb0RhdGFVUkwoY29uc3QgV2ViS2l0OjpXZWJVUkwmKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIFdlYktpdDo6V2ViVVJMIHJld3JpdGVMYXlvdXRUZXN0c1VSTChjb25zdCBzdGQ6
OnN0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViVGVzdFJ1bm5lcjo6V2ViUHJlZmVy
ZW5jZXMqIHByZWZlcmVuY2VzKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGFwcGx5UHJl
ZmVyZW5jZXMoKSBPVkVSUklERTsKIAogICAgIC8vIE5hdmlnYXRpb25Ib3N0CiAgICAgdmlydHVh
bCBib29sIG5hdmlnYXRlKGNvbnN0IFRlc3ROYXZpZ2F0aW9uRW50cnkmLCBib29sIHJlbG9hZCk7
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>