<?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>112788</bug_id>
          
          <creation_ts>2013-03-20 04:37:06 -0700</creation_ts>
          <short_desc>REGRESSION(r146304): to many expectations to update (Requested by antonm on #webkit).</short_desc>
          <delta_ts>2013-03-20 04:53:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>112751</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>abarth</cc>
    
    <cc>jochen</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>859248</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-20 04:37:06 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/146304 broke the build:
to many expectations to update (Requested by antonm on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859251</commentid>
    <comment_count>1</comment_count>
      <attachid>194021</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-20 04:37:36 -0700</bug_when>
    <thetext>Created attachment 194021
ROLLOUT of r146304

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859267</commentid>
    <comment_count>2</comment_count>
      <attachid>194021</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-20 04:53:22 -0700</bug_when>
    <thetext>Comment on attachment 194021
ROLLOUT of r146304

Clearing flags on attachment: 194021

Committed r146329: &lt;http://trac.webkit.org/changeset/146329&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859268</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-20 04:53:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194021</attachid>
            <date>2013-03-20 04:37:36 -0700</date>
            <delta_ts>2013-03-20 04:53:22 -0700</delta_ts>
            <desc>ROLLOUT of r146304</desc>
            <filename>bug-112788-20130320113325.patch</filename>
            <type>text/plain</type>
            <size>153992</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2MzI2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWUyZTAyN2UwNjcyMDY3YjExZmJkMzE0M2MyMWYyODNh
YTNkZjBlNi4uMTFjYzA4ZGE2ZjUxNGNiMzkzNTc2MGZlMzE3N2VkODc0OTA2NzJjNCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1
IEBACisyMDEzLTAzLTIwICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNv
bT4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTQ2MzA0LgorICAgICAgICBo
dHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xNDYzMDQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjc4OAorCisgICAgICAgIHRvIG1hbnkg
ZXhwZWN0YXRpb25zIHRvIHVwZGF0ZSAoUmVxdWVzdGVkIGJ5IGFudG9ubSBvbgorICAgICAgICAj
d2Via2l0KS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cC9E
dW1wUmVuZGVyVHJlZS5neXA6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRy
ZWUuZ3lwaToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1
YmxpYy9XZWJUZXN0SW50ZXJmYWNlcy5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5jcHA6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdElu
dGVyZmFjZXMuaDoKKyAgICAgICAgKFRlc3RJbnRlcmZhY2VzKToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHA6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFRo
ZW1lRW5naW5lV2luLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0U2hlbGwuY3BwOgorICAgICAgICAoVGVzdFNoZWxsOjppbml0aWFsaXplKToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuaDoKKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsTWFjLm1t
OgorICAgICAgICAocGxhdGZvcm1Jbml0KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0U2hlbGxXaW4uY3BwOgorICAgICAgICAocGxhdGZvcm1Jbml0KToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUNvbnRyb2xEUlRXaW4uY3BwOiBSZW5h
bWVkIGZyb20gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2Vi
VGVzdFRoZW1lQ29udHJvbFdpbi5jcHAuCisgICAgICAgIChXZWJUaGVtZUNvbnRyb2xEUlRXaW46
OldlYlRoZW1lQ29udHJvbERSVFdpbik6CisgICAgICAgIChXZWJUaGVtZUNvbnRyb2xEUlRXaW46
On5XZWJUaGVtZUNvbnRyb2xEUlRXaW4pOgorICAgICAgICAoV2ViVGhlbWVDb250cm9sRFJUV2lu
Ojpib3gpOgorICAgICAgICAoV2ViVGhlbWVDb250cm9sRFJUV2luOjpsaW5lKToKKyAgICAgICAg
KFdlYlRoZW1lQ29udHJvbERSVFdpbjo6dHJpYW5nbGUpOgorICAgICAgICAoV2ViVGhlbWVDb250
cm9sRFJUV2luOjpyb3VuZFJlY3QpOgorICAgICAgICAoV2ViVGhlbWVDb250cm9sRFJUV2luOjpv
dmFsKToKKyAgICAgICAgKFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Y2lyY2xlKToKKyAgICAgICAg
KFdlYlRoZW1lQ29udHJvbERSVFdpbjo6bmVzdGVkQm94ZXMpOgorICAgICAgICAoV2ViVGhlbWVD
b250cm9sRFJUV2luOjptYXJrU3RhdGUpOgorICAgICAgICAoV2ViVGhlbWVDb250cm9sRFJUV2lu
OjpkcmF3KToKKyAgICAgICAgKFdlYlRoZW1lQ29udHJvbERSVFdpbjo6ZHJhd1RleHRGaWVsZCk6
CisgICAgICAgIChXZWJUaGVtZUNvbnRyb2xEUlRXaW46OmRyYXdQcm9ncmVzc0Jhcik6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVGhlbWVDb250cm9sRFJUV2luLmg6IFJl
bmFtZWQgZnJvbSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9X
ZWJUZXN0VGhlbWVDb250cm9sV2luLmguCisgICAgICAgIChXZWJUaGVtZUNvbnRyb2xEUlRXaW4p
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1lRW5naW5lRFJUTWFj
Lmg6IFJlbmFtZWQgZnJvbSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9XZWJUZXN0VGhlbWVFbmdpbmVNYWMuaC4KKyAgICAgICAgKFdlYlRoZW1lRW5naW5lRFJU
TWFjKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUVuZ2luZURS
VE1hYy5tbTogUmVuYW1lZCBmcm9tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL1dlYlRlc3RUaGVtZUVuZ2luZU1hYy5tbS4KKyAgICAgICAgKCtbRmFrZUFjdGl2
ZVdpbmRvdyBhbHdheXNBY3RpdmVXaW5kb3ddKToKKyAgICAgICAgKCtbRmFrZUFjdGl2ZVdpbmRv
dyBhbHdheXNJbmFjdGl2ZVdpbmRvd10pOgorICAgICAgICAoLVtGYWtlQWN0aXZlV2luZG93IGlu
aXRXaXRoQWN0aXZlQ29udHJvbHM6XSk6CisgICAgICAgICgtW0Zha2VBY3RpdmVXaW5kb3cgX2hh
c0FjdGl2ZUNvbnRyb2xzXSk6CisgICAgICAgIChXZWJUaGVtZUVuZ2luZURSVE1hYzo6cGFpbnRT
Y3JvbGxiYXJUaHVtYik6CisgICAgICAgIChzdGF0ZVRvSElFbmFibGVTdGF0ZSk6CisgICAgICAg
IChXZWJUaGVtZUVuZ2luZURSVE1hYzo6cGFpbnRISVRoZW1lU2Nyb2xsYmFyVGh1bWIpOgorICAg
ICAgICAoV2ViVGhlbWVFbmdpbmVEUlRNYWM6OnBhaW50TlNTY3JvbGxlclNjcm9sbGJhclRodW1i
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUVuZ2luZURSVFdp
bi5jcHA6IEFkZGVkLgorICAgICAgICAod2ViUmVjdFRvU2tJUmVjdCk6CisgICAgICAgIChkcmF3
Q29udHJvbCk6CisgICAgICAgIChkcmF3VGV4dEZpZWxkKToKKyAgICAgICAgKGRyYXdQcm9ncmVz
c0Jhcik6CisgICAgICAgIChXZWJUaGVtZUVuZ2luZURSVFdpbjo6cGFpbnRCdXR0b24pOgorICAg
ICAgICAoV2ViVGhlbWVFbmdpbmVEUlRXaW46OnBhaW50TWVudUxpc3QpOgorICAgICAgICAoV2Vi
VGhlbWVFbmdpbmVEUlRXaW46OnBhaW50U2Nyb2xsYmFyQXJyb3cpOgorICAgICAgICAoV2ViVGhl
bWVFbmdpbmVEUlRXaW46OnBhaW50U2Nyb2xsYmFyVGh1bWIpOgorICAgICAgICAoV2ViVGhlbWVF
bmdpbmVEUlRXaW46OnBhaW50U2Nyb2xsYmFyVHJhY2spOgorICAgICAgICAoV2ViVGhlbWVFbmdp
bmVEUlRXaW46OnBhaW50U3BpbkJ1dHRvbik6CisgICAgICAgIChXZWJUaGVtZUVuZ2luZURSVFdp
bjo6cGFpbnRUZXh0RmllbGQpOgorICAgICAgICAoV2ViVGhlbWVFbmdpbmVEUlRXaW46OnBhaW50
VHJhY2tiYXIpOgorICAgICAgICAoV2ViVGhlbWVFbmdpbmVEUlRXaW46OnBhaW50UHJvZ3Jlc3NC
YXIpOgorICAgICAgICAoV2ViVGhlbWVFbmdpbmVEUlRXaW46OmdldFNpemUpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1lRW5naW5lRFJUV2luLmg6IFJlbmFtZWQg
ZnJvbSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0
VGhlbWVFbmdpbmVXaW4uaC4KKyAgICAgICAgKFdlYlRoZW1lRW5naW5lRFJUV2luKToKKyAgICAg
ICAgKFdlYlRoZW1lRW5naW5lRFJUV2luOjpXZWJUaGVtZUVuZ2luZURSVFdpbik6CisKIDIwMTMt
MDMtMTkgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CiAK
ICAgICAgICAgW1F0XSBTdXBwb3J0IC13ZWJraXQtZm9udC1zbW9vdGhpbmcKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cC9EdW1wUmVuZGVyVHJlZS5n
eXAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXAvRHVtcFJlbmRlclRy
ZWUuZ3lwCmluZGV4IDQ0MDBmMjg4NDFjY2I1MjNmNWY1NTA0MDYzMWI3ZGRmNzllNjczNTQuLjVk
NDVhNThjNDc3OGQzMjk2ZjQ3NmU1OTUyODg3YjA4ODFlNzgzYzUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cC9EdW1wUmVuZGVyVHJlZS5neXAKKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwL0R1bXBSZW5kZXJUcmVl
Lmd5cApAQCAtMTU0LDExICsxNTQsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgJzwoc291
cmNlX2RpcikvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9ndGsnLAogICAgICAgICAgICAgICAgICAg
ICBdLAogICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgICAgIFsnT1MhPSJ3aW4iJywg
ewotICAgICAgICAgICAgICAgICAgICAnc291cmNlcy8nOiBbCi0gICAgICAgICAgICAgICAgICAg
ICAgICBbJ2V4Y2x1ZGUnLCAnV2luXFwuY3BwJCddLAotICAgICAgICAgICAgICAgICAgICBdLAot
ICAgICAgICAgICAgICAgIH1dLAogICAgICAgICAgICAgXSwKICAgICAgICAgICAgICMgRGlzYWJs
ZSBjNDI2NyB3YXJuaW5ncyB1bnRpbCB3ZSBmaXggc2l6ZV90IHRvIGludCB0cnVuY2F0aW9ucy4g
CiAgICAgICAgICAgICAnbXN2c19kaXNhYmxlZF93YXJuaW5ncyc6IFsgNDI2NywgXSwKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCmluZGV4IDMyMTU1ZGYxYzI0YTM5NjJh
MWRiNDkwNWMyNmJjMDI2NjUwMjAxMWQuLmNkNDc1NWFhM2M5M2U1YzM1NGZiZGQwMjMxYjY0YjFl
MTRjZGZlNDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVl
Lmd5cGkKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQpAQCAt
MjYsNiArMjYsMTIgQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0U2hlbGxTdHViLmNwcCcs
CiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFNoZWxsV2luLmNwcCcsCiAgICAgICAgICAgICAn
Y2hyb21pdW0vVGVzdFNoZWxsWDExLmNwcCcsCisgICAgICAgICAgICAnY2hyb21pdW0vV2ViVGhl
bWVDb250cm9sRFJUV2luLmNwcCcsCisgICAgICAgICAgICAnY2hyb21pdW0vV2ViVGhlbWVDb250
cm9sRFJUV2luLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL1dlYlRoZW1lRW5naW5lRFJUTWFj
Lm1tJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9XZWJUaGVtZUVuZ2luZURSVE1hYy5oJywKKyAg
ICAgICAgICAgICdjaHJvbWl1bS9XZWJUaGVtZUVuZ2luZURSVFdpbi5jcHAnLAorICAgICAgICAg
ICAgJ2Nocm9taXVtL1dlYlRoZW1lRW5naW5lRFJUV2luLmgnLAogICAgICAgICAgICAgJ2Nocm9t
aXVtL1dlYlZpZXdIb3N0LmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vV2ViVmlld0hvc3Qu
aCcsCiAgICAgICAgIF0sCkBAIC04OSwxMiArOTUsNiBAQAogICAgICAgICAgICAgJ2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1dlYlRhc2suY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0
UnVubmVyL3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RQcm94eS5jcHAnLAotICAgICAgICAgICAgJ2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RUaGVtZUNvbnRyb2xXaW4uY3BwJywKLSAgICAgICAgICAg
ICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0VGhlbWVDb250cm9sV2luLmgnLAotICAg
ICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RUaGVtZUVuZ2luZU1hYy5t
bScsCi0gICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFRoZW1lRW5n
aW5lTWFjLmgnLAotICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RU
aGVtZUVuZ2luZVdpbi5jcHAnLAotICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1dlYlRlc3RUaGVtZUVuZ2luZVdpbi5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oJywKICAgICAgICAgXSwK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVi
bGljL1dlYlRlc3RJbnRlcmZhY2VzLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJmYWNlcy5oCmluZGV4IGE4YmZmODBmYzM1NDk0
NThjYzA4N2EwN2UxZjg0OTdhYTc4ODliM2IuLjQ1MmMxNDkxZTVhYWI4Mzk2MWIyZTYxNjQzODIz
MDdmNjdkYmYyYTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvcHVibGljL1dlYlRlc3RJbnRlcmZhY2VzLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdEludGVyZmFjZXMuaApAQCAt
NDAsNyArNDAsNiBAQCBjbGFzcyBXZWJNZWRpYVN0cmVhbUNlbnRlcjsKIGNsYXNzIFdlYk1lZGlh
U3RyZWFtQ2VudGVyQ2xpZW50OwogY2xhc3MgV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOwog
Y2xhc3MgV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50OwotY2xhc3MgV2ViVGhlbWVF
bmdpbmU7CiBjbGFzcyBXZWJVUkw7CiBjbGFzcyBXZWJWaWV3OwogfQpAQCAtNjUsNyArNjQsNiBA
QCBwdWJsaWM6CiAgICAgdm9pZCBjb25maWd1cmVGb3JUZXN0V2l0aFVSTChjb25zdCBXZWJLaXQ6
OldlYlVSTCYsIGJvb2wgZ2VuZXJhdGVQaXhlbHMpOwogCiAgICAgV2ViVGVzdFJ1bm5lciogdGVz
dFJ1bm5lcigpOwotICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmUqIHRoZW1lRW5naW5lKCk7CiAK
ICAgICBXZWJLaXQ6OldlYk1lZGlhU3RyZWFtQ2VudGVyKiBjcmVhdGVNZWRpYVN0cmVhbUNlbnRl
cihXZWJLaXQ6OldlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50Kik7CiAgICAgV2ViS2l0OjpXZWJS
VENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqIGNyZWF0ZVdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
cihXZWJLaXQ6OldlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCopOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVy
ZmFjZXMuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMv
VGVzdEludGVyZmFjZXMuY3BwCmluZGV4IDFlOGM3MzBiZTZkNzJiYzFhODUzMWZjN2Q5MTgwZjVk
MDFmNTc2MjguLjRkOGEwMGM5NmNmYzlhY2IzZDBjNzM2YzIzNmYxNmRhNzlmNjIzYzQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJ
bnRlcmZhY2VzLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5jcHAKQEAgLTIxNSwxOSArMjE1LDQgQEAgY29uc3QgdmVj
dG9yPFdlYlRlc3RQcm94eUJhc2UqPiYgVGVzdEludGVyZmFjZXM6OndpbmRvd0xpc3QoKQogICAg
IHJldHVybiBtX3dpbmRvd0xpc3Q7CiB9CiAKLVdlYlRoZW1lRW5naW5lKiBUZXN0SW50ZXJmYWNl
czo6dGhlbWVFbmdpbmUoKQotewotI2lmIGRlZmluZWQoVVNFX0RFRkFVTFRfUkVOREVSX1RIRU1F
KSB8fCAhKGRlZmluZWQoV0lOMzIpIHx8IGRlZmluZWQoX19BUFBMRV9fKSkKLSAgICByZXR1cm4g
MDsKLSNlbGlmIGRlZmluZWQoV0lOMzIpCi0gICAgaWYgKG1fdGhlbWVFbmdpbmUuZ2V0KCkpCi0g
ICAgICAgIG1fdGhlbWVFbmdpbmUucmVzZXQobmV3IFdlYlRlc3RUaGVtZUVuZ2luZVdpbigpKTsK
LSAgICByZXR1cm4gbV90aGVtZUVuZ2luZS5nZXQoKTsKLSNlbGlmIGRlZmluZWQoX19BUFBMRV9f
KQotICAgIGlmIChtX3RoZW1lRW5naW5lLmdldCgpKQotICAgICAgICBtX3RoZW1lRW5naW5lLnJl
c2V0KG5ldyBXZWJUZXN0VGhlbWVFbmdpbmVNYWMoKSk7Ci0gICAgcmV0dXJuIG1fdGhlbWVFbmdp
bmUuZ2V0KCk7Ci0jZW5kaWYKLX0KLQogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuaCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmgKaW5kZXgg
MDVkYzhkMWVkZmZjZDgxMzkxMGRlZDc1NjZiMjQxZDljZjg5ZDEzOS4uYjZiMzAxYTc5MGMzNGRj
MTI4OGEwNWJlZTllMzY0ZWFiY2ZlMTI5ZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuaAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5oCkBA
IC0zNCwxNSArMzQsOCBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAK
LSNpZiBkZWZpbmVkKFdJTjMyKQotI2luY2x1ZGUgIldlYlRlc3RUaGVtZUVuZ2luZVdpbi5oIgot
I2VsaWYgZGVmaW5lZChfX0FQUExFX18pCi0jaW5jbHVkZSAiV2ViVGVzdFRoZW1lRW5naW5lTWFj
LmgiCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJGcmFtZTsKLWNsYXNz
IFdlYlRoZW1lRW5naW5lOwogY2xhc3MgV2ViVVJMOwogY2xhc3MgV2ViVmlldzsKIH0KQEAgLTc5
LDcgKzcyLDYgQEAgcHVibGljOgogICAgIFdlYlRlc3REZWxlZ2F0ZSogZGVsZWdhdGUoKTsKICAg
ICBXZWJUZXN0UHJveHlCYXNlKiBwcm94eSgpOwogICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFdlYlRl
c3RQcm94eUJhc2UqPiYgd2luZG93TGlzdCgpOwotICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmUq
IHRoZW1lRW5naW5lKCk7CiAKIHByaXZhdGU6CiAgICAgc3RkOjphdXRvX3B0cjxBY2Nlc3NpYmls
aXR5Q29udHJvbGxlcj4gbV9hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjsKQEAgLTkyLDEzICs4NCw2
IEBAIHByaXZhdGU6CiAgICAgV2ViVGVzdFByb3h5QmFzZSogbV9wcm94eTsKIAogICAgIHN0ZDo6
dmVjdG9yPFdlYlRlc3RQcm94eUJhc2UqPiBtX3dpbmRvd0xpc3Q7Ci0jaWYgIWRlZmluZWQoVVNF
X0RFRkFVTFRfUkVOREVSX1RIRU1FKQotI2lmIGRlZmluZWQoV0lOMzIpCi0gICAgc3RkOjphdXRv
X3B0cjxXZWJUZXN0VGhlbWVFbmdpbmVXaW4+IG1fdGhlbWVFbmdpbmU7Ci0jZWxpZiBkZWZpbmVk
KF9fQVBQTEVfXykKLSAgICBzdGQ6OmF1dG9fcHRyPFdlYlRlc3RUaGVtZUVuZ2luZU1hYz4gbV90
aGVtZUVuZ2luZTsKLSNlbmRpZgotI2VuZGlmCiB9OwogCiB9CmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5j
cHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0
SW50ZXJmYWNlcy5jcHAKaW5kZXggYzJkYmQxNjliY2ZkZmEyOWYwNDRlYzc0M2EwMWQyNzI2MTdh
MzJmZC4uMmExNzZkNzYzOWE5MzA1ODk0MDIwNWFjMmYwNTgzOGQ0YTYyZjYzMiAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdElu
dGVyZmFjZXMuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL1dlYlRlc3RJbnRlcmZhY2VzLmNwcApAQCAtODQsMTEgKzg0LDYgQEAgV2ViVGVzdFJ1
bm5lciogV2ViVGVzdEludGVyZmFjZXM6OnRlc3RSdW5uZXIoKQogICAgIHJldHVybiBtX2ludGVy
ZmFjZXMtPnRlc3RSdW5uZXIoKTsKIH0KIAotV2ViVGhlbWVFbmdpbmUqIFdlYlRlc3RJbnRlcmZh
Y2VzOjp0aGVtZUVuZ2luZSgpCi17Ci0gICAgcmV0dXJuIG1faW50ZXJmYWNlcy0+dGhlbWVFbmdp
bmUoKTsKLX0KLQogVGVzdEludGVyZmFjZXMqIFdlYlRlc3RJbnRlcmZhY2VzOjp0ZXN0SW50ZXJm
YWNlcygpCiB7CiAgICAgcmV0dXJuIG1faW50ZXJmYWNlcy5nZXQoKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RUaGVtZUNv
bnRyb2xXaW4uY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9z
cmMvV2ViVGVzdFRoZW1lQ29udHJvbFdpbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGFkYWI4NThmNzJlOWQ3OTcyZTM3ZDg3NWZiYzk0MzdkZTM0MDlkNmIuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFRoZW1lQ29udHJvbFdpbi5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSw0OTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
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
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS8vIFRoaXMgZmlsZSBpbXBsZW1lbnRzIGEgc2ltcGxl
IGdlbmVyaWMgdmVyc2lvbiBvZiB0aGUgV2ViVGhlbWVFbmdpbmUsCi0vLyB3aGljaCBpcyB1c2Vk
IHRvIGRyYXcgYWxsIHRoZSBuYXRpdmUgY29udHJvbHMgb24gYSB3ZWIgcGFnZS4gV2UgdXNlIHRo
aXMKLS8vIGZpbGUgd2hlbiBydW5uaW5nIGluIGxheW91dCB0ZXN0IG1vZGUgaW4gb3JkZXIgdG8g
cmVtb3ZlIGFueQotLy8gcGxhdGZvcm0tc3BlY2lmaWMgcmVuZGVyaW5nIGRpZmZlcmVuY2VzIGR1
ZSB0byB0aGVtZXMsIGNvbG9ycywgZXRjLgotLy8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIldlYlRlc3RUaGVtZUNvbnRyb2xXaW4uaCIKLQotI2luY2x1ZGUgIlRlc3RDb21tb24u
aCIKLSNpbmNsdWRlICJza2lhL2V4dC9za2lhX3V0aWxzX3dpbi5oIgotI2luY2x1ZGUgInRoaXJk
X3BhcnR5L3NraWEvaW5jbHVkZS9jb3JlL1NrQ2FudmFzLmgiCi0jaW5jbHVkZSAidGhpcmRfcGFy
dHkvc2tpYS9pbmNsdWRlL2NvcmUvU2tQYWludC5oIgotI2luY2x1ZGUgInRoaXJkX3BhcnR5L3Nr
aWEvaW5jbHVkZS9jb3JlL1NrUGF0aC5oIgotI2luY2x1ZGUgInRoaXJkX3BhcnR5L3NraWEvaW5j
bHVkZS9jb3JlL1NrUmVjdC5oIgotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgotCi11c2luZyBuYW1l
c3BhY2UgV2ViS2l0OwotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQotbmFtZXNwYWNlIFdlYlRlc3RS
dW5uZXIgewotCi1uYW1lc3BhY2UgewotCi1jb25zdCBTa0NvbG9yIGVkZ2VDb2xvciAgICAgPSBT
S19Db2xvckJMQUNLOwotY29uc3QgU2tDb2xvciByZWFkT25seUNvbG9yID0gU2tDb2xvclNldFJH
QigweGU5LCAweGMyLCAweGE2KTsKLWNvbnN0IFNrQ29sb3IgZmdDb2xvciAgICAgICA9IFNLX0Nv
bG9yQkxBQ0s7Ci1jb25zdCBTa0NvbG9yIGJnQ29sb3JzW10gICAgPSB7Ci0gICAgU0tfQ29sb3JC
TEFDSywgLy8gVW5rbm93bgotICAgIFNrQ29sb3JTZXRSR0IoMHhjOSwgMHhjOSwgMHhjOSksIC8v
IERpc2FibGVkCi0gICAgU2tDb2xvclNldFJHQigweGYzLCAweGUwLCAweGQwKSwgLy8gUmVhZG9u
bHkKLSAgICBTa0NvbG9yU2V0UkdCKDB4ODksIDB4YzQsIDB4ZmYpLCAvLyBOb3JtYWwKLSAgICBT
a0NvbG9yU2V0UkdCKDB4NDMsIDB4ZjksIDB4ZmYpLCAvLyBIb3QKLSAgICBTa0NvbG9yU2V0UkdC
KDB4MjAsIDB4ZjYsIDB4Y2MpLCAvLyBGb2N1c2VkCi0gICAgU2tDb2xvclNldFJHQigweDAwLCAw
eGYzLCAweGFjKSwgLy8gSG92ZXIKLSAgICBTa0NvbG9yU2V0UkdCKDB4YTksIDB4ZmYsIDB4MTIp
LCAvLyBQcmVzc2VkCi0gICAgU2tDb2xvclNldFJHQigweGNjLCAweGNjLCAweGNjKSAvLyBJbmRl
dGVybWluYXRlCi19OwotCi1Ta0lSZWN0IHZhbGlkYXRlKGNvbnN0IFNrSVJlY3QmIHJlY3QsIFdl
YlRlc3RUaGVtZUNvbnRyb2xXaW46OlR5cGUgY3R5cGUpCi17Ci0gICAgc3dpdGNoIChjdHlwZSkg
ewotICAgIGNhc2UgV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VW5jaGVja2VkQm94VHlwZToKLSAg
ICBjYXNlIFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkNoZWNrZWRCb3hUeXBlOgotICAgIGNhc2Ug
V2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VW5jaGVja2VkUmFkaW9UeXBlOgotICAgIGNhc2UgV2Vi
VGVzdFRoZW1lQ29udHJvbFdpbjo6Q2hlY2tlZFJhZGlvVHlwZTogewotICAgICAgICBTa0lSZWN0
IHJldHZhbCA9IHJlY3Q7Ci0KLSAgICAgICAgLy8gVGhlIG1heGltdW0gd2lkdGggYW5kIGhlaWdo
dCBpcyAxMy4KLSAgICAgICAgLy8gQ2VudGVyIHRoZSBzcXVhcmUgaW4gdGhlIHBhc3NlZCByZWN0
YW5nbGUuCi0gICAgICAgIGNvbnN0IGludCBtYXhDb250cm9sU2l6ZSA9IDEzOwotICAgICAgICBp
bnQgY29udHJvbFNpemUgPSBzdGQ6Om1pbihyZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwot
ICAgICAgICBjb250cm9sU2l6ZSA9IHN0ZDo6bWluKGNvbnRyb2xTaXplLCBtYXhDb250cm9sU2l6
ZSk7Ci0KLSAgICAgICAgcmV0dmFsLmZMZWZ0ICAgPSByZWN0LmZMZWZ0ICsgKHJlY3Qud2lkdGgo
KSAvIDIpIC0gKGNvbnRyb2xTaXplIC8gMik7Ci0gICAgICAgIHJldHZhbC5mUmlnaHQgID0gcmV0
dmFsLmZMZWZ0ICsgY29udHJvbFNpemUgLSAxOwotICAgICAgICByZXR2YWwuZlRvcCAgICA9IHJl
Y3QuZlRvcCArIChyZWN0LmhlaWdodCgpIC8gMikgLSAoY29udHJvbFNpemUgLyAyKTsKLSAgICAg
ICAgcmV0dmFsLmZCb3R0b20gPSByZXR2YWwuZlRvcCArIGNvbnRyb2xTaXplIC0gMTsKLQotICAg
ICAgICByZXR1cm4gcmV0dmFsOwotICAgIH0KLQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVy
biByZWN0OwotICAgIH0KLX0KLQotfQotCi1XZWJUZXN0VGhlbWVDb250cm9sV2luOjpXZWJUZXN0
VGhlbWVDb250cm9sV2luKFNrQ2FudmFzKiBjYW52YXMsIGNvbnN0IFNrSVJlY3QmIGlyZWN0LCBU
eXBlIGN0eXBlLCBTdGF0ZSBjc3RhdGUpCi0gICAgOiBtX2NhbnZhcyhjYW52YXMpCi0gICAgLCBt
X2lyZWN0KHZhbGlkYXRlKGlyZWN0LCBjdHlwZSkpCi0gICAgLCBtX3R5cGUoY3R5cGUpCi0gICAg
LCBtX3N0YXRlKGNzdGF0ZSkKLSAgICAsIG1fbGVmdChtX2lyZWN0LmZMZWZ0KQotICAgICwgbV9y
aWdodChtX2lyZWN0LmZSaWdodCkKLSAgICAsIG1fdG9wKG1faXJlY3QuZlRvcCkKLSAgICAsIG1f
Ym90dG9tKG1faXJlY3QuZkJvdHRvbSkKLSAgICAsIG1faGVpZ2h0KG1faXJlY3QuaGVpZ2h0KCkp
Ci0gICAgLCBtX3dpZHRoKG1faXJlY3Qud2lkdGgoKSkKLSAgICAsIG1fZWRnZUNvbG9yKGVkZ2VD
b2xvcikKLSAgICAsIG1fYmdDb2xvcihiZ0NvbG9yc1tjc3RhdGVdKQotICAgICwgbV9mZ0NvbG9y
KGZnQ29sb3IpCi17Ci19Ci0KLVdlYlRlc3RUaGVtZUNvbnRyb2xXaW46On5XZWJUZXN0VGhlbWVD
b250cm9sV2luKCkKLXsKLX0KLQotdm9pZCBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpib3goY29u
c3QgU2tJUmVjdCYgcmVjdCwgU2tDb2xvciBmaWxsQ29sb3IpCi17Ci0gICAgU2tQYWludCBwYWlu
dDsKLQotICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtGaWxsX1N0eWxlKTsKLSAgICBwYWlu
dC5zZXRDb2xvcihmaWxsQ29sb3IpOwotICAgIG1fY2FudmFzLT5kcmF3SVJlY3QocmVjdCwgcGFp
bnQpOwotCi0gICAgcGFpbnQuc2V0Q29sb3IobV9lZGdlQ29sb3IpOwotICAgIHBhaW50LnNldFN0
eWxlKFNrUGFpbnQ6OmtTdHJva2VfU3R5bGUpOwotICAgIG1fY2FudmFzLT5kcmF3SVJlY3QocmVj
dCwgcGFpbnQpOwotfQotCi12b2lkIFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OmxpbmUoaW50IHgw
LCBpbnQgeTAsIGludCB4MSwgaW50IHkxLCBTa0NvbG9yIGNvbG9yKQotewotICAgIFNrUGFpbnQg
cGFpbnQ7Ci0gICAgcGFpbnQuc2V0Q29sb3IoY29sb3IpOwotICAgIG1fY2FudmFzLT5kcmF3TGlu
ZShTa0ludFRvU2NhbGFyKHgwKSwgU2tJbnRUb1NjYWxhcih5MCksIFNrSW50VG9TY2FsYXIoeDEp
LCBTa0ludFRvU2NhbGFyKHkxKSwgcGFpbnQpOwotfQotCi12b2lkIFdlYlRlc3RUaGVtZUNvbnRy
b2xXaW46OnRyaWFuZ2xlKGludCB4MCwgaW50IHkwLCBpbnQgeDEsIGludCB5MSwgaW50IHgyLCBp
bnQgeTIsIFNrQ29sb3IgY29sb3IpCi17Ci0gICAgU2tQYXRoIHBhdGg7Ci0gICAgU2tQYWludCBw
YWludDsKLQotICAgIHBhaW50LnNldENvbG9yKGNvbG9yKTsKLSAgICBwYWludC5zZXRTdHlsZShT
a1BhaW50OjprRmlsbF9TdHlsZSk7Ci0gICAgcGF0aC5pbmNSZXNlcnZlKDQpOwotICAgIHBhdGgu
bW92ZVRvKFNrSW50VG9TY2FsYXIoeDApLCBTa0ludFRvU2NhbGFyKHkwKSk7Ci0gICAgcGF0aC5s
aW5lVG8oU2tJbnRUb1NjYWxhcih4MSksIFNrSW50VG9TY2FsYXIoeTEpKTsKLSAgICBwYXRoLmxp
bmVUbyhTa0ludFRvU2NhbGFyKHgyKSwgU2tJbnRUb1NjYWxhcih5MikpOwotICAgIHBhdGguY2xv
c2UoKTsKLSAgICBtX2NhbnZhcy0+ZHJhd1BhdGgocGF0aCwgcGFpbnQpOwotCi0gICAgcGFpbnQu
c2V0Q29sb3IobV9lZGdlQ29sb3IpOwotICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtTdHJv
a2VfU3R5bGUpOwotICAgIG1fY2FudmFzLT5kcmF3UGF0aChwYXRoLCBwYWludCk7Ci19Ci0KLXZv
aWQgV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6cm91bmRSZWN0KFNrQ29sb3IgY29sb3IpCi17Ci0g
ICAgU2tSZWN0IHJlY3Q7Ci0gICAgU2tTY2FsYXIgcmFkaXVzID0gU2tJbnRUb1NjYWxhcig1KTsK
LSAgICBTa1BhaW50IHBhaW50OwotCi0gICAgcmVjdC5zZXQobV9pcmVjdCk7Ci0gICAgcGFpbnQu
c2V0Q29sb3IoY29sb3IpOwotICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtGaWxsX1N0eWxl
KTsKLSAgICBtX2NhbnZhcy0+ZHJhd1JvdW5kUmVjdChyZWN0LCByYWRpdXMsIHJhZGl1cywgcGFp
bnQpOwotCi0gICAgcGFpbnQuc2V0Q29sb3IobV9lZGdlQ29sb3IpOwotICAgIHBhaW50LnNldFN0
eWxlKFNrUGFpbnQ6OmtTdHJva2VfU3R5bGUpOwotICAgIG1fY2FudmFzLT5kcmF3Um91bmRSZWN0
KHJlY3QsIHJhZGl1cywgcmFkaXVzLCBwYWludCk7Ci19Ci0KLXZvaWQgV2ViVGVzdFRoZW1lQ29u
dHJvbFdpbjo6b3ZhbChTa0NvbG9yIGNvbG9yKQotewotICAgIFNrUmVjdCByZWN0OwotICAgIFNr
UGFpbnQgcGFpbnQ7Ci0KLSAgICByZWN0LnNldChtX2lyZWN0KTsKLSAgICBwYWludC5zZXRDb2xv
cihjb2xvcik7Ci0gICAgcGFpbnQuc2V0U3R5bGUoU2tQYWludDo6a0ZpbGxfU3R5bGUpOwotICAg
IG1fY2FudmFzLT5kcmF3T3ZhbChyZWN0LCBwYWludCk7Ci0KLSAgICBwYWludC5zZXRDb2xvciht
X2VkZ2VDb2xvcik7Ci0gICAgcGFpbnQuc2V0U3R5bGUoU2tQYWludDo6a1N0cm9rZV9TdHlsZSk7
Ci0gICAgbV9jYW52YXMtPmRyYXdPdmFsKHJlY3QsIHBhaW50KTsKLX0KLQotdm9pZCBXZWJUZXN0
VGhlbWVDb250cm9sV2luOjpjaXJjbGUoU2tTY2FsYXIgcmFkaXVzLCBTa0NvbG9yIGNvbG9yKQot
ewotICAgIFNrU2NhbGFyIGN5ID0gU2tJbnRUb1NjYWxhcihtX3RvcCAgKyBtX2hlaWdodCAvIDIp
OwotICAgIFNrU2NhbGFyIGN4ID0gU2tJbnRUb1NjYWxhcihtX2xlZnQgKyBtX3dpZHRoIC8gMik7
Ci0gICAgU2tQYWludCBwYWludDsKLQotICAgIHBhaW50LnNldENvbG9yKGNvbG9yKTsKLSAgICBw
YWludC5zZXRTdHlsZShTa1BhaW50OjprRmlsbF9TdHlsZSk7Ci0gICAgbV9jYW52YXMtPmRyYXdD
aXJjbGUoY3gsIGN5LCByYWRpdXMsIHBhaW50KTsKLQotICAgIHBhaW50LnNldENvbG9yKG1fZWRn
ZUNvbG9yKTsKLSAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprU3Ryb2tlX1N0eWxlKTsKLSAg
ICBtX2NhbnZhcy0+ZHJhd0NpcmNsZShjeCwgY3ksIHJhZGl1cywgcGFpbnQpOwotfQotCi12b2lk
IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46Om5lc3RlZEJveGVzKGludCBpbmRlbnRMZWZ0LCBpbnQg
aW5kZW50VG9wLCBpbnQgaW5kZW50UmlnaHQsIGludCBpbmRlbnRCb3R0b20sIFNrQ29sb3Igb3V0
ZXJDb2xvciwgU2tDb2xvciBpbm5lckNvbG9yKQotewotICAgIFNrSVJlY3QgbGlyZWN0OwotICAg
IGJveChtX2lyZWN0LCBvdXRlckNvbG9yKTsKLSAgICBsaXJlY3Quc2V0KG1faXJlY3QuZkxlZnQg
KyBpbmRlbnRMZWZ0LCBtX2lyZWN0LmZUb3AgKyBpbmRlbnRUb3AsIG1faXJlY3QuZlJpZ2h0IC0g
aW5kZW50UmlnaHQsIG1faXJlY3QuZkJvdHRvbSAtIGluZGVudEJvdHRvbSk7Ci0gICAgYm94KGxp
cmVjdCwgaW5uZXJDb2xvcik7Ci19Ci0KLXZvaWQgV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6bWFy
a1N0YXRlKCkKLXsKLSAgICAvLyBUaGUgaG9yaXpvbnRhbCBsaW5lcyBpbiBhIHJlYWQgb25seSBj
b250cm9sIGFyZSBzcGFjZWQgYnkgdGhpcyBhbW91bnQuCi0gICAgY29uc3QgaW50IHJlYWRPbmx5
TGluZU9mZnNldCA9IDU7Ci0KLSAgICAvLyBUaGUgbGVuZ3RoIG9mIGEgdHJpYW5nbGUgc2lkZSBm
b3IgdGhlIGNvcm5lciBtYXJrcy4KLSAgICBjb25zdCBpbnQgdHJpYW5nbGVTaXplID0gNTsKLQot
ICAgIHN3aXRjaCAobV9zdGF0ZSkgewotICAgIGNhc2UgVW5rbm93blN0YXRlOgotICAgIGNhc2Ug
RGlzYWJsZWRTdGF0ZToKLSAgICBjYXNlIE5vcm1hbFN0YXRlOgotICAgIGNhc2UgSW5kZXRlcm1p
bmF0ZVN0YXRlOgotICAgICAgICAvLyBEb24ndCB2aXN1YWxseSBtYXJrIHRoZXNlIHN0YXRlcyAo
Y29sb3IgaXMgZW5vdWdoKS4KLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBSZWFkT25seVN0YXRl
OgotICAgICAgICAvLyBEcmF3aW5nIGxpbmVzIGFjcm9zcyB0aGUgY29udHJvbC4KLSAgICAgICAg
Zm9yIChpbnQgaSA9IG1fdG9wICsgcmVhZE9ubHlMaW5lT2Zmc2V0OyBpIDwgbV9ib3R0b207IGkg
Kz0gcmVhZE9ubHlMaW5lT2Zmc2V0KQotICAgICAgICAgICAgbGluZShtX2xlZnQgKyAxLCBpLCBt
X3JpZ2h0IC0gMSwgaSwgcmVhZE9ubHlDb2xvcik7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2Fz
ZSBIb3RTdGF0ZToKLSAgICAgICAgLy8gRHJhdyBhIHRyaWFuZ2xlIGluIHRoZSB1cHBlciBsZWZ0
IGNvcm5lciBvZiB0aGUgY29udHJvbC4KLSAgICAgICAgdHJpYW5nbGUobV9sZWZ0LCBtX3RvcCwg
bV9sZWZ0ICsgdHJpYW5nbGVTaXplLCBtX3RvcCwgbV9sZWZ0LCBtX3RvcCArIHRyaWFuZ2xlU2l6
ZSwgbV9lZGdlQ29sb3IpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgSG92ZXJTdGF0ZToK
LSAgICAgICAgLy8gRHJhdyBhIHRyaWFuZ2xlIGluIHRoZSB1cHBlciByaWdodCBjb3JuZXIgb2Yg
dGhlIGNvbnRyb2wuCi0gICAgICAgIHRyaWFuZ2xlKG1fcmlnaHQsIG1fdG9wLCBtX3JpZ2h0LCBt
X3RvcCArIHRyaWFuZ2xlU2l6ZSwgbV9yaWdodCAtIHRyaWFuZ2xlU2l6ZSwgbV90b3AsIG1fZWRn
ZUNvbG9yKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEZvY3VzZWRTdGF0ZToKLSAgICAg
ICAgLy8gRHJhdyBhIHRyaWFuZ2xlIGluIHRoZSBib3R0b20gcmlnaHQgY29ybmVyIG9mIHRoZSBj
b250cm9sLgotICAgICAgICB0cmlhbmdsZShtX3JpZ2h0LCBtX2JvdHRvbSwgbV9yaWdodCAtIHRy
aWFuZ2xlU2l6ZSwgbV9ib3R0b20sIG1fcmlnaHQsIG1fYm90dG9tIC0gdHJpYW5nbGVTaXplLCBt
X2VkZ2VDb2xvcik7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBQcmVzc2VkU3RhdGU6Ci0g
ICAgICAgIC8vIERyYXcgYSB0cmlhbmdsZSBpbiB0aGUgYm90dG9tIGxlZnQgY29ybmVyIG9mIHRo
ZSBjb250cm9sLgotICAgICAgICB0cmlhbmdsZShtX2xlZnQsIG1fYm90dG9tLCBtX2xlZnQsIG1f
Ym90dG9tIC0gdHJpYW5nbGVTaXplLCBtX2xlZnQgKyB0cmlhbmdsZVNpemUsIG1fYm90dG9tLCBt
X2VkZ2VDb2xvcik7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgZGVmYXVsdDoKLSAgICAgICAgV0VC
S0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXZv
aWQgV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6ZHJhdygpCi17Ci0gICAgaW50IGhhbGZXaWR0aCA9
IG1fd2lkdGggLyAyOwotICAgIGludCBoYWxmSGVpZ2h0ID0gbV9oZWlnaHQgLyAyOwotICAgIGlu
dCBxdWFydGVyV2lkdGggPSBtX3dpZHRoIC8gNDsKLSAgICBpbnQgcXVhcnRlckhlaWdodCA9IG1f
aGVpZ2h0IC8gNDsKLQotICAgIC8vIEluZGVudCBhbW91bnRzIGZvciB0aGUgY2hlY2sgaW4gYSBj
aGVja2JveCBvciByYWRpbyBidXR0b24uCi0gICAgY29uc3QgaW50IGNoZWNrSW5kZW50ID0gMzsK
LQotICAgIC8vIEluZGVudCBhbW91bnRzIGZvciBzaG9ydCBhbmQgbG9uZyBzaWRlcyBvZiB0aGUg
c2Nyb2xsYmFyIG5vdGNoZXMuCi0gICAgY29uc3QgaW50IG5vdGNoTG9uZ09mZnNldCA9IDE7Ci0g
ICAgY29uc3QgaW50IG5vdGNoU2hvcnRPZmZzZXQgPSA0OwotICAgIGNvbnN0IGludCBub09mZnNl
dCA9IDA7Ci0KLSAgICAvLyBJbmRlbnQgYW1vdW50cyBmb3IgdGhlIHNob3J0IGFuZCBsb25nIHNp
ZGVzIG9mIGEgc2Nyb2xsIHRodW1iIGJveC4KLSAgICBjb25zdCBpbnQgdGh1bWJMb25nSW5kZW50
ID0gMDsKLSAgICBjb25zdCBpbnQgdGh1bWJTaG9ydEluZGVudCA9IDI7Ci0KLSAgICAvLyBJbmRl
bnRzIGZvciB0aGUgY3Jvc3NoYXRjaCBvbiBhIHNjcm9sbCBncmlwLgotICAgIGNvbnN0IGludCBn
cmlwTG9uZ0luZGVudCA9IDM7Ci0gICAgY29uc3QgaW50IGdyaXBTaG9ydEluZGVudCA9IDU7Ci0K
LSAgICAvLyBJbmRlbnRzIGZvciB0aGUgdGhlIHNsaWRlciB0cmFjay4KLSAgICBjb25zdCBpbnQg
c2xpZGVySW5kZW50ID0gMjsKLQotICAgIHN3aXRjaCAobV90eXBlKSB7Ci0gICAgY2FzZSBVbmtu
b3duVHlwZToKLSAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBi
cmVhazsKLQotICAgIGNhc2UgVGV4dEZpZWxkVHlwZToKLSAgICAgICAgLy8gV2UgcmVuZGVyIHRo
aXMgYnkgaGFuZCBvdXRzaWRlIG9mIHRoaXMgZnVuY3Rpb24uCi0gICAgICAgIFdFQktJVF9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFB1c2hCdXR0b25U
eXBlOgotICAgICAgICAvLyBwdXNoIGJ1dHRvbnMgcmVuZGVyIGFzIGEgcm91bmRlZCByZWN0YW5n
bGUKLSAgICAgICAgcm91bmRSZWN0KG1fYmdDb2xvcik7Ci0gICAgICAgIGJyZWFrOwotCi0gICAg
Y2FzZSBVbmNoZWNrZWRCb3hUeXBlOgotICAgICAgICAvLyBVbmNoZWNrZWQgYm94ZXMgYXJlIHNp
bXBseSBwbGFpbiBib3hlcy4KLSAgICAgICAgYm94KG1faXJlY3QsIG1fYmdDb2xvcik7Ci0gICAg
ICAgIGJyZWFrOwotCi0gICAgY2FzZSBDaGVja2VkQm94VHlwZToKLSAgICAgICAgbmVzdGVkQm94
ZXMoY2hlY2tJbmRlbnQsIGNoZWNrSW5kZW50LCBjaGVja0luZGVudCwgY2hlY2tJbmRlbnQsIG1f
YmdDb2xvciwgbV9mZ0NvbG9yKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEluZGV0ZXJt
aW5hdGVDaGVja2JveFR5cGU6Ci0gICAgICAgIC8vIEluZGV0ZXJtaW5hdGUgY2hlY2tib3ggaXMg
YSBib3ggY29udGFpbmluZyAnLScuCi0gICAgICAgIG5lc3RlZEJveGVzKGNoZWNrSW5kZW50LCBo
YWxmSGVpZ2h0LCBjaGVja0luZGVudCwgaGFsZkhlaWdodCwgbV9iZ0NvbG9yLCBtX2ZnQ29sb3Ip
OwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgVW5jaGVja2VkUmFkaW9UeXBlOgotICAgICAg
ICBjaXJjbGUoU2tJbnRUb1NjYWxhcihoYWxmSGVpZ2h0KSwgbV9iZ0NvbG9yKTsKLSAgICAgICAg
YnJlYWs7Ci0KLSAgICBjYXNlIENoZWNrZWRSYWRpb1R5cGU6Ci0gICAgICAgIGNpcmNsZShTa0lu
dFRvU2NhbGFyKGhhbGZIZWlnaHQpLCBtX2JnQ29sb3IpOwotICAgICAgICBjaXJjbGUoU2tJbnRU
b1NjYWxhcihoYWxmSGVpZ2h0IC0gY2hlY2tJbmRlbnQpLCBtX2ZnQ29sb3IpOwotICAgICAgICBi
cmVhazsKLQotICAgIGNhc2UgSG9yaXpvbnRhbFNjcm9sbFRyYWNrQmFja1R5cGU6IHsKLSAgICAg
ICAgLy8gRHJhdyBhIGJveCB3aXRoIGEgbm90Y2ggYXQgdGhlIGxlZnQuCi0gICAgICAgIGludCBs
b25nT2Zmc2V0ID0gaGFsZkhlaWdodCAtIG5vdGNoTG9uZ09mZnNldDsKLSAgICAgICAgaW50IHNo
b3J0T2Zmc2V0ID0gbV93aWR0aCAtIG5vdGNoU2hvcnRPZmZzZXQ7Ci0gICAgICAgIG5lc3RlZEJv
eGVzKG5vT2Zmc2V0LCBsb25nT2Zmc2V0LCBzaG9ydE9mZnNldCwgbG9uZ09mZnNldCwgbV9iZ0Nv
bG9yLCBtX2VkZ2VDb2xvcik7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGNhc2UgSG9y
aXpvbnRhbFNjcm9sbFRyYWNrRm9yd2FyZFR5cGU6IHsKLSAgICAgICAgLy8gRHJhdyBhIGJveCB3
aXRoIGEgbm90Y2ggYXQgdGhlIHJpZ2h0LgotICAgICAgICBpbnQgbG9uZ09mZnNldCAgPSBoYWxm
SGVpZ2h0IC0gbm90Y2hMb25nT2Zmc2V0OwotICAgICAgICBpbnQgc2hvcnRPZmZzZXQgPSBtX3dp
ZHRoIC0gbm90Y2hTaG9ydE9mZnNldDsKLSAgICAgICAgbmVzdGVkQm94ZXMoc2hvcnRPZmZzZXQs
IGxvbmdPZmZzZXQsIG5vT2Zmc2V0LCBsb25nT2Zmc2V0LCBtX2JnQ29sb3IsIG1fZmdDb2xvcik7
Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGNhc2UgVmVydGljYWxTY3JvbGxUcmFja0Jh
Y2tUeXBlOiB7Ci0gICAgICAgIC8vIERyYXcgYSBib3ggd2l0aCBhIG5vdGNoIGF0IHRoZSB0b3Au
Ci0gICAgICAgIGludCBsb25nT2Zmc2V0ICA9IGhhbGZXaWR0aCAtIG5vdGNoTG9uZ09mZnNldDsK
LSAgICAgICAgaW50IHNob3J0T2Zmc2V0ID0gbV9oZWlnaHQgLSBub3RjaFNob3J0T2Zmc2V0Owot
ICAgICAgICBuZXN0ZWRCb3hlcyhsb25nT2Zmc2V0LCBub09mZnNldCwgbG9uZ09mZnNldCwgc2hv
cnRPZmZzZXQsIG1fYmdDb2xvciwgbV9mZ0NvbG9yKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQot
Ci0gICAgY2FzZSBWZXJ0aWNhbFNjcm9sbFRyYWNrRm9yd2FyZFR5cGU6IHsKLSAgICAgICAgLy8g
RHJhdyBhIGJveCB3aXRoIGEgbm90Y2ggYXQgdGhlIGJvdHRvbS4KLSAgICAgICAgaW50IGxvbmdP
ZmZzZXQgID0gaGFsZldpZHRoIC0gbm90Y2hMb25nT2Zmc2V0OwotICAgICAgICBpbnQgc2hvcnRP
ZmZzZXQgPSBtX2hlaWdodCAtIG5vdGNoU2hvcnRPZmZzZXQ7Ci0gICAgICAgIG5lc3RlZEJveGVz
KGxvbmdPZmZzZXQsIHNob3J0T2Zmc2V0LCBsb25nT2Zmc2V0LCBub09mZnNldCwgbV9iZ0NvbG9y
LCBtX2ZnQ29sb3IpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBjYXNlIEhvcml6b250
YWxTY3JvbGxUaHVtYlR5cGU6Ci0gICAgICAgIC8vIERyYXcgYSBuYXJyb3dlciBib3ggb24gdG9w
IG9mIHRoZSBvdXRzaWRlIGJveC4KLSAgICAgICAgbmVzdGVkQm94ZXModGh1bWJMb25nSW5kZW50
LCB0aHVtYlNob3J0SW5kZW50LCB0aHVtYkxvbmdJbmRlbnQsIHRodW1iU2hvcnRJbmRlbnQsIG1f
YmdDb2xvciwgbV9iZ0NvbG9yKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFZlcnRpY2Fs
U2Nyb2xsVGh1bWJUeXBlOgotICAgICAgICAvLyBEcmF3IGEgc2hvcnRlciBib3ggb24gdG9wIG9m
IHRoZSBvdXRzaWRlIGJveC4KLSAgICAgICAgbmVzdGVkQm94ZXModGh1bWJTaG9ydEluZGVudCwg
dGh1bWJMb25nSW5kZW50LCB0aHVtYlNob3J0SW5kZW50LCB0aHVtYkxvbmdJbmRlbnQsIG1fYmdD
b2xvciwgbV9iZ0NvbG9yKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEhvcml6b250YWxT
bGlkZXJUaHVtYlR5cGU6Ci0gICAgY2FzZSBWZXJ0aWNhbFNsaWRlclRodW1iVHlwZToKLSAgICAg
ICAgLy8gU2xpZGVyIHRodW1icyBhcmUgb3ZhbHMuCi0gICAgICAgIG92YWwobV9iZ0NvbG9yKTsK
LSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEhvcml6b250YWxTY3JvbGxHcmlwVHlwZTogewot
ICAgICAgICAvLyBEcmF3IGEgaG9yaXpvbnRhbCBjcm9zc2hhdGNoIGZvciB0aGUgZ3JpcC4KLSAg
ICAgICAgaW50IGxvbmdPZmZzZXQgPSBoYWxmV2lkdGggLSBncmlwTG9uZ0luZGVudDsKLSAgICAg
ICAgbGluZShtX2xlZnQgKyBncmlwTG9uZ0luZGVudCwgbV90b3AgKyBoYWxmSGVpZ2h0LCBtX3Jp
Z2h0IC0gZ3JpcExvbmdJbmRlbnQsIG1fdG9wICsgaGFsZkhlaWdodCwgbV9mZ0NvbG9yKTsKLSAg
ICAgICAgbGluZShtX2xlZnQgKyBsb25nT2Zmc2V0LCBtX3RvcCArIGdyaXBTaG9ydEluZGVudCwg
bV9sZWZ0ICsgbG9uZ09mZnNldCwgbV9ib3R0b20gLSBncmlwU2hvcnRJbmRlbnQsIG1fZmdDb2xv
cik7Ci0gICAgICAgIGxpbmUobV9yaWdodCAtIGxvbmdPZmZzZXQsIG1fdG9wICsgZ3JpcFNob3J0
SW5kZW50LCBtX3JpZ2h0IC0gbG9uZ09mZnNldCwgbV9ib3R0b20gLSBncmlwU2hvcnRJbmRlbnQs
IG1fZmdDb2xvcik7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGNhc2UgVmVydGljYWxT
Y3JvbGxHcmlwVHlwZTogewotICAgICAgICAvLyBEcmF3IGEgdmVydGljYWwgY3Jvc3NoYXRjaCBm
b3IgdGhlIGdyaXAuCi0gICAgICAgIGludCBsb25nT2Zmc2V0ID0gaGFsZkhlaWdodCAtIGdyaXBM
b25nSW5kZW50OwotICAgICAgICBsaW5lKG1fbGVmdCArIGhhbGZXaWR0aCwgbV90b3AgKyBncmlw
TG9uZ0luZGVudCwgbV9sZWZ0ICsgaGFsZldpZHRoLCBtX2JvdHRvbSAtIGdyaXBMb25nSW5kZW50
LCBtX2ZnQ29sb3IpOwotICAgICAgICBsaW5lKG1fbGVmdCArIGdyaXBTaG9ydEluZGVudCwgbV90
b3AgKyBsb25nT2Zmc2V0LCBtX3JpZ2h0IC0gZ3JpcFNob3J0SW5kZW50LCBtX3RvcCArIGxvbmdP
ZmZzZXQsIG1fZmdDb2xvcik7Ci0gICAgICAgIGxpbmUobV9sZWZ0ICsgZ3JpcFNob3J0SW5kZW50
LCBtX2JvdHRvbSAtIGxvbmdPZmZzZXQsIG1fcmlnaHQgLSBncmlwU2hvcnRJbmRlbnQsIG1fYm90
dG9tIC0gbG9uZ09mZnNldCwgbV9mZ0NvbG9yKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0g
ICAgY2FzZSBMZWZ0QXJyb3dUeXBlOgotICAgICAgICAvLyBEcmF3IGEgbGVmdCBhcnJvdyBpbnNp
ZGUgYSBib3guCi0gICAgICAgIGJveChtX2lyZWN0LCBtX2JnQ29sb3IpOwotICAgICAgICB0cmlh
bmdsZShtX3JpZ2h0IC0gcXVhcnRlcldpZHRoLCBtX3RvcCArIHF1YXJ0ZXJIZWlnaHQsIG1fcmln
aHQgLSBxdWFydGVyV2lkdGgsIG1fYm90dG9tIC0gcXVhcnRlckhlaWdodCwgbV9sZWZ0ICsgcXVh
cnRlcldpZHRoLCBtX3RvcCArIGhhbGZIZWlnaHQsIG1fZmdDb2xvcik7Ci0gICAgICAgIGJyZWFr
OwotCi0gICAgY2FzZSBSaWdodEFycm93VHlwZToKLSAgICAgICAgLy8gRHJhdyBhIGxlZnQgYXJy
b3cgaW5zaWRlIGEgYm94LgotICAgICAgICBib3gobV9pcmVjdCwgbV9iZ0NvbG9yKTsKLSAgICAg
ICAgdHJpYW5nbGUobV9sZWZ0ICsgcXVhcnRlcldpZHRoLCBtX3RvcCArIHF1YXJ0ZXJIZWlnaHQs
IG1fcmlnaHQgLSBxdWFydGVyV2lkdGgsIG1fdG9wICsgaGFsZkhlaWdodCwgbV9sZWZ0ICsgcXVh
cnRlcldpZHRoLCBtX2JvdHRvbSAtIHF1YXJ0ZXJIZWlnaHQsIG1fZmdDb2xvcik7Ci0gICAgICAg
IGJyZWFrOwotCi0gICAgY2FzZSBVcEFycm93VHlwZToKLSAgICAgICAgLy8gRHJhdyBhbiB1cCBh
cnJvdyBpbnNpZGUgYSBib3guCi0gICAgICAgIGJveChtX2lyZWN0LCBtX2JnQ29sb3IpOwotICAg
ICAgICB0cmlhbmdsZShtX2xlZnQgKyBxdWFydGVyV2lkdGgsIG1fYm90dG9tIC0gcXVhcnRlckhl
aWdodCwgbV9sZWZ0ICsgaGFsZldpZHRoLCBtX3RvcCArIHF1YXJ0ZXJIZWlnaHQsIG1fcmlnaHQg
LSBxdWFydGVyV2lkdGgsIG1fYm90dG9tIC0gcXVhcnRlckhlaWdodCwgbV9mZ0NvbG9yKTsKLSAg
ICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIERvd25BcnJvd1R5cGU6Ci0gICAgICAgIC8vIERyYXcg
YSBkb3duIGFycm93IGluc2lkZSBhIGJveC4KLSAgICAgICAgYm94KG1faXJlY3QsIG1fYmdDb2xv
cik7Ci0gICAgICAgIHRyaWFuZ2xlKG1fbGVmdCArIHF1YXJ0ZXJXaWR0aCwgbV90b3AgKyBxdWFy
dGVySGVpZ2h0LCBtX3JpZ2h0IC0gcXVhcnRlcldpZHRoLCBtX3RvcCArIHF1YXJ0ZXJIZWlnaHQs
IG1fbGVmdCArIGhhbGZXaWR0aCwgbV9ib3R0b20gLSBxdWFydGVySGVpZ2h0LCBtX2ZnQ29sb3Ip
OwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgSG9yaXpvbnRhbFNsaWRlclRyYWNrVHlwZTog
ewotICAgICAgICAvLyBEcmF3IGEgbmFycm93IHJlY3QgZm9yIHRoZSB0cmFjayBwbHVzIGJveCBo
YXRjaGVzIG9uIHRoZSBlbmRzLgotICAgICAgICBTa0lSZWN0IGxpcmVjdDsKLSAgICAgICAgbGly
ZWN0ID0gbV9pcmVjdDsKLSAgICAgICAgbGlyZWN0Lmluc2V0KG5vT2Zmc2V0LCBoYWxmSGVpZ2h0
IC0gc2xpZGVySW5kZW50KTsKLSAgICAgICAgYm94KGxpcmVjdCwgbV9iZ0NvbG9yKTsKLSAgICAg
ICAgbGluZShtX2xlZnQsICBtX3RvcCwgbV9sZWZ0LCAgbV9ib3R0b20sIG1fZWRnZUNvbG9yKTsK
LSAgICAgICAgbGluZShtX3JpZ2h0LCBtX3RvcCwgbV9yaWdodCwgbV9ib3R0b20sIG1fZWRnZUNv
bG9yKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgY2FzZSBWZXJ0aWNhbFNsaWRlclRy
YWNrVHlwZTogewotICAgICAgICAvLyBEcmF3IGEgbmFycm93IHJlY3QgZm9yIHRoZSB0cmFjayBw
bHVzIGJveCBoYXRjaGVzIG9uIHRoZSBlbmRzLgotICAgICAgICBTa0lSZWN0IGxpcmVjdDsKLSAg
ICAgICAgbGlyZWN0ID0gbV9pcmVjdDsKLSAgICAgICAgbGlyZWN0Lmluc2V0KGhhbGZXaWR0aCAt
IHNsaWRlckluZGVudCwgbm9PZmZzZXQpOwotICAgICAgICBib3gobGlyZWN0LCBtX2JnQ29sb3Ip
OwotICAgICAgICBsaW5lKG1fbGVmdCwgbV90b3AsIG1fcmlnaHQsIG1fdG9wLCBtX2VkZ2VDb2xv
cik7Ci0gICAgICAgIGxpbmUobV9sZWZ0LCBtX2JvdHRvbSwgbV9yaWdodCwgbV9ib3R0b20sIG1f
ZWRnZUNvbG9yKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgY2FzZSBEcm9wRG93bkJ1
dHRvblR5cGU6Ci0gICAgICAgIC8vIERyYXcgYSBib3ggd2l0aCBhIGJpZyBkb3duIGFycm93IG9u
IHRvcC4KLSAgICAgICAgYm94KG1faXJlY3QsIG1fYmdDb2xvcik7Ci0gICAgICAgIHRyaWFuZ2xl
KG1fbGVmdCArIHF1YXJ0ZXJXaWR0aCwgbV90b3AsIG1fcmlnaHQgLSBxdWFydGVyV2lkdGgsIG1f
dG9wLCBtX2xlZnQgKyBoYWxmV2lkdGgsIG1fYm90dG9tLCBtX2ZnQ29sb3IpOwotICAgICAgICBi
cmVhazsKLQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgbWFya1N0YXRlKCk7Ci19Ci0KLS8vIEJl
Y2F1c2UgcmVuZGVyaW5nIGEgdGV4dCBmaWVsZCBpcyBkZXBlbmRlbnQgb24gaW5wdXQKLS8vIHBh
cmFtZXRlcnMgdGhlIG90aGVyIGNvbnRyb2xzIGRvbid0IGhhdmUsIHdlIHJlbmRlciBpdCBkaXJl
Y3RseQotLy8gcmF0aGVyIHRoYW4gdHJ5aW5nIHRvIG92ZXJjb21wbGljYXRlIGRyYXcoKSBmdXJ0
aGVyLgotdm9pZCBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpkcmF3VGV4dEZpZWxkKGJvb2wgZHJh
d0VkZ2VzLCBib29sIGZpbGxDb250ZW50QXJlYSwgU2tDb2xvciBjb2xvcikKLXsKLSAgICBTa1Bh
aW50IHBhaW50OwotCi0gICAgaWYgKGZpbGxDb250ZW50QXJlYSkgewotICAgICAgICBwYWludC5z
ZXRDb2xvcihjb2xvcik7Ci0gICAgICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtGaWxsX1N0
eWxlKTsKLSAgICAgICAgbV9jYW52YXMtPmRyYXdJUmVjdChtX2lyZWN0LCBwYWludCk7Ci0gICAg
fQotICAgIGlmIChkcmF3RWRnZXMpIHsKLSAgICAgICAgcGFpbnQuc2V0Q29sb3IobV9lZGdlQ29s
b3IpOwotICAgICAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprU3Ryb2tlX1N0eWxlKTsKLSAg
ICAgICAgbV9jYW52YXMtPmRyYXdJUmVjdChtX2lyZWN0LCBwYWludCk7Ci0gICAgfQotCi0gICAg
bWFya1N0YXRlKCk7Ci19Ci0KLXZvaWQgV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6ZHJhd1Byb2dy
ZXNzQmFyKGNvbnN0IFNrSVJlY3QmIGZpbGxSZWN0KQotewotICAgIFNrUGFpbnQgcGFpbnQ7Ci0K
LSAgICBwYWludC5zZXRDb2xvcihtX2JnQ29sb3IpOwotICAgIHBhaW50LnNldFN0eWxlKFNrUGFp
bnQ6OmtGaWxsX1N0eWxlKTsKLSAgICBtX2NhbnZhcy0+ZHJhd0lSZWN0KG1faXJlY3QsIHBhaW50
KTsKLQotICAgIC8vIEVtdWxhdGUgY2xpcHBpbmcKLSAgICBTa0lSZWN0IHRvZmlsbDsKLSAgICB0
b2ZpbGwuaW50ZXJzZWN0KG1faXJlY3QsIGZpbGxSZWN0KTsKLSAgICBwYWludC5zZXRDb2xvciht
X2ZnQ29sb3IpOwotICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtGaWxsX1N0eWxlKTsKLSAg
ICBtX2NhbnZhcy0+ZHJhd0lSZWN0KHRvZmlsbCwgcGFpbnQpOwotCi0gICAgbWFya1N0YXRlKCk7
Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL1dlYlRlc3RUaGVtZUNvbnRyb2xXaW4uaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RUaGVtZUNvbnRyb2xXaW4uaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2JhZDE4ZTIwYWE4YWI2MzcxMjc2NmY0NDhkNzcxZmEz
Mjk0MTE0ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0VGhlbWVD
b250cm9sV2luLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMDAgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRp
b24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0g
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS8vIFdlYlRlc3RUaGVt
ZUNvbnRyb2xXaW4gaW1wbGVtZW50cyB0aGUgZ2VuZXJpYyByZW5kZXJpbmcgb2YgY29udHJvbHMK
LS8vIG5lZWRlZCBieSBXZWJUaGVtZUVuZ2luZURSVFdpbi4gU2VlIHRoZSBjb21tZW50cyBpbiB0
aGF0IGNsYXNzCi0vLyBoZWFkZXIgZmlsZSBmb3Igd2h5IHRoaXMgY2xhc3MgaXMgbmVlZGVkIGFu
ZCB1c2VkLgotLy8KLS8vIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBhIGdlbmVyaWMgc2V0IG9mIHdp
ZGdldHMgdXNpbmcgU2tpYS4gVGhlIHdpZGdldHMKLS8vIGFyZSBvcHRpbWl6ZWQgZm9yIHRlc3Rh
YmlsaXR5LCBub3QgYSBwbGVhc2luZyBhcHBlYXJhbmNlLgotLy8KLQotI2lmbmRlZiBXZWJUZXN0
VGhlbWVDb250cm9sV2luX2gKLSNkZWZpbmUgV2ViVGVzdFRoZW1lQ29udHJvbFdpbl9oCi0KLSNp
bmNsdWRlICJ0aGlyZF9wYXJ0eS9za2lhL2luY2x1ZGUvY29yZS9Ta0NvbG9yLmgiCi0jaW5jbHVk
ZSAidGhpcmRfcGFydHkvc2tpYS9pbmNsdWRlL2NvcmUvU2tSZWN0LmgiCi0KLS8vIFNraWEgZm9y
d2FyZCBkZWNsYXJhdGlvbnMKLWNsYXNzIFNrQ2FudmFzOwotCi1uYW1lc3BhY2UgV2ViVGVzdFJ1
bm5lciB7Ci0KLWNsYXNzIFdlYlRlc3RUaGVtZUNvbnRyb2xXaW4gewotcHVibGljOgotICAgIC8v
IFRoaXMgbGlzdCBvZiBzdGF0ZXMgbW9zdGx5IG1pcnJvcnMgdGhlIGxpc3QgaW4gV2ViQ29yZS9w
bGF0Zm9ybS9UaGVtZVR5cGVzLmgKLSAgICAvLyBidXQgaXMgbWFpbnRhaW5lZCBzZXBhcmF0ZWx5
IHNpbmNlIHRoYXQgaXNuJ3QgcHVibGljIGFuZCBhbHNvIHRvIG1pbmltaXplCi0gICAgLy8gZGVw
ZW5kZW5jaWVzLgotICAgIC8vIE5vdGUgdGhhdCB0aGUgV2ViS2l0IFRoZW1lVHlwZXMgc2VlbSB0
byBpbXBseSB0aGF0IGEgY29udHJvbCBjYW4gYmUKLSAgICAvLyBpbiBtdWx0aXBsZSBzdGF0ZXMg
c2ltdWx0YW5lb3VzbHkgYnV0IFdlYlRoZW1lRW5naW5lIG9ubHkgYWxsb3dzIGZvcgotICAgIC8v
IGEgc2luZ2xlIHN0YXRlIGF0IGEgdGltZS4KLSAgICAvLwotICAgIC8vIFNvbWUgZGVmaW5pdGlv
bnMgZm9yIHRoZSB2YXJpb3VzIHN0YXRlczoKLSAgICAvLyAgIERpc2FibGVkIC0gaW5kaWNhdGVz
IHRoYXQgYSBjb250cm9sIGNhbid0IGJlIG1vZGlmaWVkIG9yIHNlbGVjdGVkCi0gICAgLy8gICAg
ICAgICAgICAgIChjb3JyZXNwb25kcyB0byBIVE1MICdkaXNhYmxlZCcgYXR0cmlidXRlKQotICAg
IC8vICAgUmVhZE9ubHkgLSBpbmRpY2F0ZXMgdGhhdCBhIGNvbnRyb2wgY2FuJ3QgYmUgbW9kaWZp
ZWQgYnV0IGNhbiBiZQotICAgIC8vICAgICAgICAgICAgICBzZWxlY3RlZAotICAgIC8vICAgTm9y
bWFsICAgLSB0aGUgbm9ybWFsIHN0YXRlIG9mIGNvbnRyb2wgb24gdGhlIHBhZ2Ugd2hlbiBpdCBp
c24ndAotICAgIC8vICAgICAgICAgICAgICBmb2N1c2VkIG9yIG90aGVyd2lzZSBhY3RpdmUKLSAg
ICAvLyAgIEhvdCAgICAgIC0gd2hlbiB0aGUgbW91c2UgaXMgaG92ZXJpbmcgb3ZlciBhIHBhcnQg
b2YgdGhlIGNvbnRyb2wsCi0gICAgLy8gICAgICAgICAgICAgIGFsbCB0aGUgb3RoZXIgcGFydHMg
YXJlIGNvbnNpZGVyZWQgImhvdCIKLSAgICAvLyAgIEhvdmVyICAgIC0gd2hlbiB0aGUgbW91c2Ug
aXMgZGlyZWN0bHkgb3ZlciBhIGNvbnRyb2wgKHRoZSBDU1MKLSAgICAvLyAgICAgICAgICAgICAg
IDpob3ZlciBwc2V1ZG8tY2xhc3MpCi0gICAgLy8gICBGb2N1c2VkICAtIHdoZW4gdGhlIGNvbnRy
b2wgaGFzIHRoZSBrZXlib2FyZCBmb2N1cwotICAgIC8vICAgUHJlc3NlZCAgLSB3aGVuIHRoZSBj
b250cm9sIGlzIGJlaW5nIHRyaWdnZXJlZCAoYnkgYSBtb3VzZWRvd24gb3IKLSAgICAvLyAgICAg
ICAgICAgICAgYSBrZXkgZXZlbnQpLgotICAgIC8vICAgSW5kZXRlcm1pbmF0ZSAtIHdoZW4gc2V0
IHRvIGluZGV0ZXJtaW5hdGUgKG9ubHkgZm9yIHByb2dyZXNzIGJhcikKLSAgICBlbnVtIFN0YXRl
IHsKLSAgICAgICAgVW5rbm93blN0YXRlID0gMCwKLSAgICAgICAgRGlzYWJsZWRTdGF0ZSwKLSAg
ICAgICAgUmVhZE9ubHlTdGF0ZSwKLSAgICAgICAgTm9ybWFsU3RhdGUsCi0gICAgICAgIEhvdFN0
YXRlLAotICAgICAgICBIb3ZlclN0YXRlLAotICAgICAgICBGb2N1c2VkU3RhdGUsCi0gICAgICAg
IFByZXNzZWRTdGF0ZSwKLSAgICAgICAgSW5kZXRlcm1pbmF0ZVN0YXRlCi0gICAgfTsKLQotICAg
IC8vIFRoaXMgbGlzdCBvZiB0eXBlcyBtb3N0bHkgbWlycm9ycyB0aGUgbGlzdCBpbgotICAgIC8v
IFdlYkNvcmUvcGxhdGZvcm0vVGhlbWVUeXBlcy5oIGJ1dCBpcyBtYWludGFpbmVkCi0gICAgLy8g
c2VwYXJhdGVseSBzaW5jZSB0aGF0IGlzbid0IHB1YmxpYyBhbmQgYWxzbyB0byBtaW5pbWl6ZSBk
ZXBlbmRlbmNpZXMuCi0gICAgLy8KLSAgICAvLyBOb3RlIHRoYXQgd2hhdCB0aGUgdXNlciBtaWdo
dCB0aGluayBvZiBhcyBhIHNpbmdsZSBjb250cm9sIGNhbiBiZQotICAgIC8vIG1hZGUgdXAgb2Yg
bXVsdGlwbGUgcGFydHMuIEZvciBleGFtcGxlLCBhIHNpbmdsZSBzY3JvbGwgYmFyIGNvbnRhaW5z
Ci0gICAgLy8gc2l4IGNsaWNrYWJsZSBwYXJ0cyAtIHR3byBhcnJvd3MsIHRoZSAidGh1bWIiIGlu
ZGljYXRpbmcgdGhlIGN1cnJlbnQKLSAgICAvLyBwb3NpdGlvbiBvbiB0aGUgYmFyLCB0aGUgb3Ro
ZXIgdHdvIHBhcnRzIG9mIHRoZSBiYXIgKGJlZm9yZSBhbmQgYWZ0ZXIKLSAgICAvLyB0aGUgdGh1
bWIpIGFuZCB0aGUgImdyaXBwZXIiIG9uIHRoZSB0aHVtYiBpdHNlbGYuCi0gICAgLy8KLSAgICBl
bnVtIFR5cGUgewotICAgICAgICBVbmtub3duVHlwZSA9IDAsCi0gICAgICAgIFRleHRGaWVsZFR5
cGUsCi0gICAgICAgIFB1c2hCdXR0b25UeXBlLAotICAgICAgICBVbmNoZWNrZWRCb3hUeXBlLAot
ICAgICAgICBDaGVja2VkQm94VHlwZSwKLSAgICAgICAgSW5kZXRlcm1pbmF0ZUNoZWNrYm94VHlw
ZSwKLSAgICAgICAgVW5jaGVja2VkUmFkaW9UeXBlLAotICAgICAgICBDaGVja2VkUmFkaW9UeXBl
LAotICAgICAgICBIb3Jpem9udGFsU2Nyb2xsVHJhY2tCYWNrVHlwZSwKLSAgICAgICAgSG9yaXpv
bnRhbFNjcm9sbFRyYWNrRm9yd2FyZFR5cGUsCi0gICAgICAgIEhvcml6b250YWxTY3JvbGxUaHVt
YlR5cGUsCi0gICAgICAgIEhvcml6b250YWxTY3JvbGxHcmlwVHlwZSwKLSAgICAgICAgVmVydGlj
YWxTY3JvbGxUcmFja0JhY2tUeXBlLAotICAgICAgICBWZXJ0aWNhbFNjcm9sbFRyYWNrRm9yd2Fy
ZFR5cGUsCi0gICAgICAgIFZlcnRpY2FsU2Nyb2xsVGh1bWJUeXBlLAotICAgICAgICBWZXJ0aWNh
bFNjcm9sbEdyaXBUeXBlLAotICAgICAgICBMZWZ0QXJyb3dUeXBlLAotICAgICAgICBSaWdodEFy
cm93VHlwZSwKLSAgICAgICAgVXBBcnJvd1R5cGUsCi0gICAgICAgIERvd25BcnJvd1R5cGUsCi0g
ICAgICAgIEhvcml6b250YWxTbGlkZXJUcmFja1R5cGUsCi0gICAgICAgIEhvcml6b250YWxTbGlk
ZXJUaHVtYlR5cGUsCi0gICAgICAgIFZlcnRpY2FsU2xpZGVyVHJhY2tUeXBlLAotICAgICAgICBW
ZXJ0aWNhbFNsaWRlclRodW1iVHlwZSwKLSAgICAgICAgRHJvcERvd25CdXR0b25UeXBlLAotICAg
ICAgICBQcm9ncmVzc0JhclR5cGUKLSAgICB9OwotCi0gICAgLy8gQ29uc3RydWN0cyBhIGNvbnRy
b2wgb2YgdGhlIGdpdmVuIHNpemUsIHR5cGUgYW5kIHN0YXRlIHRvIGRyYXcKLSAgICAvLyBvbiB0
byB0aGUgZ2l2ZW4gY2FudmFzLgotICAgIFdlYlRlc3RUaGVtZUNvbnRyb2xXaW4oU2tDYW52YXMq
LCBjb25zdCBTa0lSZWN0JiwgVHlwZSwgU3RhdGUpOwotICAgIH5XZWJUZXN0VGhlbWVDb250cm9s
V2luKCk7Ci0KLSAgICAvLyBEcmF3cyB0aGUgY29udHJvbC4KLSAgICB2b2lkIGRyYXcoKTsKLQot
ICAgIC8vIFVzZSB0aGlzIGZvciBUZXh0RmllbGQgY29udHJvbHMgaW5zdGVhZCwgYmVjYXVzZSB0
aGUgbG9naWMKLSAgICAvLyBmb3IgZHJhd2luZyB0aGVtIGlzIGRlcGVuZGVudCBvbiB3aGF0IFdl
YktpdCB0ZWxscyB1cyB0byBkby4KLSAgICAvLyBJZiBkcmF3RWRnZXMgaXMgdHJ1ZSwgZHJhdyBh
biBlZGdlIGFyb3VuZCB0aGUgY29udHJvbC4gSWYKLSAgICAvLyBmaWxsQ29udGVudEFyZWEgaXMg
dHJ1ZSwgZmlsbCB0aGUgY29udGVudCBhcmVhIHdpdGggdGhlIGdpdmVuIGNvbG9yLgotICAgIHZv
aWQgZHJhd1RleHRGaWVsZChib29sIGRyYXdFZGdlcywgYm9vbCBmaWxsQ29udGVudEFyZWEsIFNr
Q29sb3IpOwotCi0gICAgLy8gVXNlIHRoaXMgZm9yIGRyYXdpbmcgUHJvZ3Jlc3NCYXIgY29udHJv
bHMgaW5zdGVhZCwgc2luY2Ugd2UKLSAgICAvLyBuZWVkIHRvIGtub3cgdGhlIHJlY3QgdG8gZmls
bCBpbnNpZGUgdGhlIGJhci4KLSAgICB2b2lkIGRyYXdQcm9ncmVzc0Jhcihjb25zdCBTa0lSZWN0
JiBmaWxsUmVjdCk7Ci0KLXByaXZhdGU6Ci0gICAgLy8gRHJhd3MgYSBib3ggb2Ygc2l6ZSBzcGVj
aWZpZWQgYnkgaXJlY3QsIGZpbGxlZCB3aXRoIHRoZSBnaXZlbiBjb2xvci4KLSAgICAvLyBUaGUg
Ym94IHdpbGwgaGF2ZSBhIGJvcmRlciBkcmF3biBpbiB0aGUgZGVmYXVsdCBlZGdlIGNvbG9yLgot
ICAgIHZvaWQgYm94KGNvbnN0IFNrSVJlY3QmIGlyZWN0LCBTa0NvbG9yKTsKLQotCi0gICAgLy8g
RHJhd3MgYSB0cmlhbmdsZSBvZiBzaXplIHNwZWNpZmllZCBieSB0aGUgdGhyZWUgcGFpcnMgb2Yg
Y29vcmRpbmF0ZXMsCi0gICAgLy8gZmlsbGVkIHdpdGggdGhlIGdpdmVuIGNvbG9yLiBUaGUgYm94
IHdpbGwgaGF2ZSBhbiBlZGdlIGRyYXduIGluIHRoZQotICAgIC8vIGRlZmF1bHQgZWRnZSBjb2xv
ci4KLSAgICB2b2lkIHRyaWFuZ2xlKGludCB4MCwgaW50IHkwLCBpbnQgeDEsIGludCB5MSwgaW50
IHgyLCBpbnQgeTIsIFNrQ29sb3IpOwotCi0gICAgLy8gRHJhd3MgYSByZWN0YW5nbGUgdGhlIHNp
emUgb2YgdGhlIGNvbnRyb2wgd2l0aCByb3VuZGVkIGNvcm5lcnMsIGZpbGxlZAotICAgIC8vIHdp
dGggdGhlIHNwZWNpZmllZCBjb2xvciAoYW5kIHdpdGggYSBib3JkZXIgaW4gdGhlIGRlZmF1bHQg
ZWRnZSBjb2xvcikuCi0gICAgdm9pZCByb3VuZFJlY3QoU2tDb2xvcik7Ci0KLSAgICAvLyBEcmF3
cyBhbiBvdmFsIHRoZSBzaXplIG9mIHRoZSBjb250cm9sLCBmaWxsZWQgd2l0aCB0aGUgc3BlY2lm
aWVkIGNvbG9yCi0gICAgLy8gYW5kIHdpdGggYSBib3JkZXIgaW4gdGhlIGRlZmF1bHQgZWRnZSBj
b2xvci4KLSAgICB2b2lkIG92YWwoU2tDb2xvcik7Ci0KLSAgICAvLyBEcmF3cyBhIGNpcmNsZSBj
ZW50ZXJlZCBpbiB0aGUgY29udHJvbCB3aXRoIHRoZSBzcGVjaWZpZWQgcmFkaXVzLAotICAgIC8v
IGZpbGxlZCB3aXRoIHRoZSBzcGVjaWZpZWQgY29sb3IsIGFuZCB3aXRoIGEgYm9yZGVyIGRyYXcg
aW4gdGhlCi0gICAgLy8gZGVmYXVsdCBlZGdlIGNvbG9yLgotICAgIHZvaWQgY2lyY2xlKFNrU2Nh
bGFyIHJhZGl1cywgU2tDb2xvcik7Ci0KLSAgICAvLyBEcmF3cyBhIGJveCB0aGUgc2l6ZSBvZiB0
aGUgY29udHJvbCwgZmlsbGVkIHdpdGggdGhlIG91dGVyQ29sb3IgYW5kCi0gICAgLy8gd2l0aCBh
IGJvcmRlciBpbiB0aGUgZGVmYXVsdCBlZGdlIGNvbG9yLCBhbmQgdGhlbiBkcmF3cyBhbm90aGVy
IGJveAotICAgIC8vIGluZGVudGVkIG9uIGFsbCBmb3VyIHNpZGVzIGJ5IHRoZSBzcGVjaWZpZWQg
YW1vdW50cywgZmlsbGVkIHdpdGggdGhlCi0gICAgLy8gaW5uZXIgY29sb3IgYW5kIHdpdGggYSBi
b3JkZXIgaW4gdGhlIGRlZmF1bHQgZWRnZSBjb2xvci4KLSAgICB2b2lkIG5lc3RlZEJveGVzKGlu
dCBpbmRlbnRMZWZ0LCBpbnQgaW5kZW50VG9wLCBpbnQgaW5kZW50UmlnaHQsIGludCBpbmRlbnRC
b3R0b20sIFNrQ29sb3Igb3V0ZXJDb2xvciwgU2tDb2xvciBpbm5lckNvbG9yKTsKLQotICAgIC8v
IERyYXdzIGEgbGluZSBiZXR3ZWVuIHRoZSB0d28gcG9pbnRzIGluIHRoZSBnaXZlbiBjb2xvci4K
LSAgICB2b2lkIGxpbmUoaW50IHgwLCBpbnQgeTAsIGludCB4MSwgaW50IHkxLCBTa0NvbG9yKTsK
LQotICAgIC8vIERyYXdzIGEgZGlzdGluY3RpdmUgbWFyayBvbiB0aGUgY29udHJvbCBmb3IgZWFj
aCBzdGF0ZSwgc28gdGhhdCB0aGUKLSAgICAvLyBzdGF0ZSBvZiB0aGUgY29udHJvbCBjYW4gYmUg
ZGV0ZXJtaW5lZCB3aXRob3V0IG5lZWRpbmcgdG8ga25vdyB3aGljaAotICAgIC8vIGNvbG9yIGlz
IHdoaWNoLgotICAgIHZvaWQgbWFya1N0YXRlKCk7Ci0KLSAgICBTa0NhbnZhcyogbV9jYW52YXM7
Ci0gICAgY29uc3QgU2tJUmVjdCBtX2lyZWN0OwotICAgIGNvbnN0IFR5cGUgbV90eXBlOwotICAg
IGNvbnN0IFN0YXRlIG1fc3RhdGU7Ci0gICAgY29uc3QgU2tDb2xvciBtX2VkZ2VDb2xvcjsKLSAg
ICBjb25zdCBTa0NvbG9yIG1fYmdDb2xvcjsKLSAgICBjb25zdCBTa0NvbG9yIG1fZmdDb2xvcjsK
LQotICAgIC8vIFRoZSBmb2xsb3dpbmcgYXJlIGNvbnZlbmllbmNlIGFjY2Vzc29ycyBmb3IgbV9p
cmVjdC4KLSAgICBjb25zdCBpbnQgbV9sZWZ0OwotICAgIGNvbnN0IGludCBtX3JpZ2h0OwotICAg
IGNvbnN0IGludCBtX3RvcDsKLSAgICBjb25zdCBpbnQgbV9ib3R0b207Ci0gICAgY29uc3QgaW50
IG1fd2lkdGg7Ci0gICAgY29uc3QgaW50IG1faGVpZ2h0OwotfTsKLQotfQotCi0jZW5kaWYgLy8g
V2ViVGVzdFRoZW1lQ29udHJvbFdpbl9oCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0VGhlbWVFbmdpbmVNYWMuaCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RUaGVtZUVuZ2lu
ZU1hYy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMGI1MjMyZjc3ZGM2ZTk2MzRh
MDRhZDNhMTcyZjk2ODI3MjNmYTUzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1dlYlRlc3RUaGVtZUVuZ2luZU1hYy5oCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0vLyBUaGlzIGlt
cGxlbWVudHMgdGhlIFdlYlRoZW1lRW5naW5lIEFQSSBpbiBzdWNoIGEgd2F5IHRoYXQgd2UgbWF0
Y2ggdGhlIE1hYwotLy8gcG9ydCByZW5kZXJpbmcgbW9yZSB0aGFuIHVzdWFsIENocm9taXVtIHBh
dGgsIHRodXMgYWxsb3dpbmcgdXMgdG8gc2hhcmUKLS8vIG1vcmUgcGl4ZWwgYmFzZWxpbmVzLgot
Ci0jaWZuZGVmIFdlYlRlc3RUaGVtZUVuZ2luZU1hY19oCi0jZGVmaW5lIFdlYlRlc3RUaGVtZUVu
Z2luZU1hY19oCi0KLSNpbmNsdWRlIDxwdWJsaWMvbWFjL1dlYlRoZW1lRW5naW5lLmg+Ci0KLW5h
bWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKLQotY2xhc3MgV2ViVGVzdFRoZW1lRW5naW5lTWFjIDog
cHVibGljIFdlYktpdDo6V2ViVGhlbWVFbmdpbmUgewotcHVibGljOgotICAgIHZpcnR1YWwgdm9p
ZCBwYWludFNjcm9sbGJhclRodW1iKAotICAgICAgICBXZWJLaXQ6OldlYkNhbnZhcyosCi0gICAg
ICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0YXRlLAotICAgICAgICBXZWJLaXQ6OldlYlRo
ZW1lRW5naW5lOjpTaXplLAotICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlJlY3QmLAotICAgICAg
ICBjb25zdCBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTY3JvbGxiYXJJbmZvJik7Ci0KLXByaXZh
dGU6Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50SElUaGVtZVNjcm9sbGJhclRodW1iKAotICAgICAg
ICBXZWJLaXQ6OldlYkNhbnZhcyosCi0gICAgICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0
YXRlLAotICAgICAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTaXplLAotICAgICAgICBjb25z
dCBXZWJLaXQ6OldlYlJlY3QmLAotICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlRoZW1lRW5naW5l
OjpTY3JvbGxiYXJJbmZvJik7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50TlNTY3JvbGxlclNjcm9s
bGJhclRodW1iKAotICAgICAgICBXZWJLaXQ6OldlYkNhbnZhcyosCi0gICAgICAgIFdlYktpdDo6
V2ViVGhlbWVFbmdpbmU6OlN0YXRlLAotICAgICAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpT
aXplLAotICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlJlY3QmLAotICAgICAgICBjb25zdCBXZWJL
aXQ6OldlYlRoZW1lRW5naW5lOjpTY3JvbGxiYXJJbmZvJik7Ci19OwotCi19Ci0KLSNlbmRpZiAv
LyBXZWJUZXN0VGhlbWVFbmdpbmVNYWNfaApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFRoZW1lRW5naW5lTWFjLm1tIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFRoZW1lRW5n
aW5lTWFjLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMzlmZDUzOGJiMmNjMDVj
ZGIzN2U4ZjAxZDAwMTM4NTdlNmQ3Yzc4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL1dlYlRlc3RUaGVtZUVuZ2luZU1hYy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDE5OSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0g
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgIldlYlRlc3RUaGVtZUVuZ2luZU1hYy5oIgotCi0jaW5jbHVkZSA8cHVibGlj
L1dlYkNhbnZhcy5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJSZWN0Lmg+Ci0jaW5jbHVkZSAic2tp
YS9leHQvc2tpYV91dGlsc19tYWMuaCIKLSNpbXBvcnQgPEFwcEtpdC9OU0FmZmluZVRyYW5zZm9y
bS5oPgotI2ltcG9ydCA8QXBwS2l0L05TR3JhcGhpY3NDb250ZXh0Lmg+Ci0jaW1wb3J0IDxBcHBL
aXQvTlNTY3JvbGxlci5oPgotI2ltcG9ydCA8QXBwS2l0L05TV2luZG93Lmg+Ci0jaW5jbHVkZSA8
Q2FyYm9uL0NhcmJvbi5oPgotCi11c2luZyBXZWJLaXQ6OldlYkNhbnZhczsKLXVzaW5nIFdlYktp
dDo6V2ViUmVjdDsKLXVzaW5nIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU7Ci0KLS8vIFdlIGNhbid0
IGRpcmVjdGx5IHRlbGwgdGhlIE5TU2Nyb2xsZXIgdG8gZHJhdyBpdHNlbGYgYXMgYWN0aXZlIG9y
IGluYWN0aXZlLAotLy8gaW5zdGVhZCB3ZSBoYXZlIHRvIG1ha2UgaXQgYSBjaGlsZCBvZiBhbiAo
aW4pYWN0aXZlIHdpbmRvdy4gVGhpcyBjbGFzcyBsZXRzCi0vLyB1cyBmYWtlIHRoYXQgcGFyZW50
IHdpbmRvdy4KLUBpbnRlcmZhY2UgRmFrZUFjdGl2ZVdpbmRvdyA6IE5TV2luZG93IHsKLUBwcml2
YXRlCi0gICAgQk9PTCBoYXNBY3RpdmVDb250cm9sczsKLX0KLSsgKE5TV2luZG93KilhbHdheXNB
Y3RpdmVXaW5kb3c7Ci0rIChOU1dpbmRvdyopYWx3YXlzSW5hY3RpdmVXaW5kb3c7Ci0tIChpZClp
bml0V2l0aEFjdGl2ZUNvbnRyb2xzOihCT09MKV9oYXNBY3RpdmVDb250cm9sczsKLS0gKEJPT0wp
X2hhc0FjdGl2ZUNvbnRyb2xzOwotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRmFrZUFjdGl2ZVdp
bmRvdwotCi1zdGF0aWMgTlNXaW5kb3cqIGFsd2F5c0FjdGl2ZVdpbmRvdyA9IG5pbDsKLXN0YXRp
YyBOU1dpbmRvdyogYWx3YXlzSW5hY3RpdmVXaW5kb3cgPSBuaWw7Ci0KLSsgKE5TV2luZG93Kilh
bHdheXNBY3RpdmVXaW5kb3cKLXsKLSAgICBpZiAoYWx3YXlzQWN0aXZlV2luZG93ID09IG5pbCkK
LSAgICAgICAgYWx3YXlzQWN0aXZlV2luZG93ID0gW1tzZWxmIGFsbG9jXSBpbml0V2l0aEFjdGl2
ZUNvbnRyb2xzOllFU107Ci0gICAgcmV0dXJuIGFsd2F5c0FjdGl2ZVdpbmRvdzsKLX0KLQotKyAo
TlNXaW5kb3cqKWFsd2F5c0luYWN0aXZlV2luZG93Ci17Ci0gICAgaWYgKGFsd2F5c0luYWN0aXZl
V2luZG93ID09IG5pbCkKLSAgICAgICAgYWx3YXlzSW5hY3RpdmVXaW5kb3cgPSBbW3NlbGYgYWxs
b2NdIGluaXRXaXRoQWN0aXZlQ29udHJvbHM6Tk9dOwotICAgIHJldHVybiBhbHdheXNJbmFjdGl2
ZVdpbmRvdzsKLX0KLQotLSAoaWQpaW5pdFdpdGhBY3RpdmVDb250cm9sczooQk9PTClfaGFzQWN0
aXZlQ29udHJvbHMKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGhhc0FjdGl2ZUNv
bnRyb2xzID0gX2hhc0FjdGl2ZUNvbnRyb2xzOwotICAgIHJldHVybiBzZWxmOwotfQotCi0tIChC
T09MKV9oYXNBY3RpdmVDb250cm9scwotewotICAgIHJldHVybiBoYXNBY3RpdmVDb250cm9sczsK
LX0KLQotQGVuZAotCi1uYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7Ci0KLW5hbWVzcGFjZSB7Ci0K
LVRoZW1lVHJhY2tFbmFibGVTdGF0ZSBzdGF0ZVRvSElFbmFibGVTdGF0ZShXZWJUaGVtZUVuZ2lu
ZTo6U3RhdGUgc3RhdGUpCi17Ci0gICAgc3dpdGNoIChzdGF0ZSkgewotICAgIGNhc2UgV2ViVGhl
bWVFbmdpbmU6OlN0YXRlRGlzYWJsZWQ6Ci0gICAgICAgIHJldHVybiBrVGhlbWVUcmFja0Rpc2Fi
bGVkOwotICAgIGNhc2UgV2ViVGhlbWVFbmdpbmU6OlN0YXRlSW5hY3RpdmU6Ci0gICAgICAgIHJl
dHVybiBrVGhlbWVUcmFja0luYWN0aXZlOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBr
VGhlbWVUcmFja0FjdGl2ZTsKLSAgICB9Ci19Ci0KLX0KLQotdm9pZCBXZWJUZXN0VGhlbWVFbmdp
bmVNYWM6OnBhaW50U2Nyb2xsYmFyVGh1bWIoCi0gICAgV2ViQ2FudmFzKiBjYW52YXMsCi0gICAg
V2ViVGhlbWVFbmdpbmU6OlN0YXRlIHN0YXRlLAotICAgIFdlYlRoZW1lRW5naW5lOjpTaXplIHNp
emUsCi0gICAgY29uc3QgV2ViUmVjdCYgcmVjdCwKLSAgICBjb25zdCBXZWJUaGVtZUVuZ2luZTo6
U2Nyb2xsYmFySW5mbyYgc2Nyb2xsYmFySW5mbykKLXsKLSAgICAvLyBUbyBtYXRjaCB0aGUgTWFj
IHBvcnQsIHdlIHN0aWxsIHVzZSBISVRoZW1lIGZvciBpbm5lciBzY3JvbGxiYXJzLgotICAgIGlm
IChzY3JvbGxiYXJJbmZvLnBhcmVudCA9PSBXZWJUaGVtZUVuZ2luZTo6U2Nyb2xsYmFyUGFyZW50
UmVuZGVyTGF5ZXIpCi0gICAgICAgIHBhaW50SElUaGVtZVNjcm9sbGJhclRodW1iKGNhbnZhcywg
c3RhdGUsIHNpemUsIHJlY3QsIHNjcm9sbGJhckluZm8pOwotICAgIGVsc2UKLSAgICAgICAgcGFp
bnROU1Njcm9sbGVyU2Nyb2xsYmFyVGh1bWIoY2FudmFzLCBzdGF0ZSwgc2l6ZSwgcmVjdCwgc2Ny
b2xsYmFySW5mbyk7Ci19Ci0KLS8vIER1cGxpY2F0ZWQgZnJvbSB3ZWJraXQvZ2x1ZS93ZWJ0aGVt
ZWVuZ2luZV9pbXBsX21hYy5jYyBpbiB0aGUgZG93bnN0cmVhbQotLy8gQ2hyb21pdW0gV2ViVGhl
bWVFbmdpbmUgaW1wbGVtZW50YXRpb24uCi12b2lkIFdlYlRlc3RUaGVtZUVuZ2luZU1hYzo6cGFp
bnRISVRoZW1lU2Nyb2xsYmFyVGh1bWIoCi0gICAgV2ViQ2FudmFzKiBjYW52YXMsCi0gICAgV2Vi
VGhlbWVFbmdpbmU6OlN0YXRlIHN0YXRlLAotICAgIFdlYlRoZW1lRW5naW5lOjpTaXplIHNpemUs
Ci0gICAgY29uc3QgV2ViUmVjdCYgcmVjdCwKLSAgICBjb25zdCBXZWJUaGVtZUVuZ2luZTo6U2Ny
b2xsYmFySW5mbyYgc2Nyb2xsYmFySW5mbykKLXsKLSAgICBISVRoZW1lVHJhY2tEcmF3SW5mbyB0
cmFja0luZm87Ci0gICAgdHJhY2tJbmZvLnZlcnNpb24gPSAwOwotICAgIHRyYWNrSW5mby5raW5k
ID0gc2l6ZSA9PSBXZWJUaGVtZUVuZ2luZTo6U2l6ZVJlZ3VsYXIgPyBrVGhlbWVNZWRpdW1TY3Jv
bGxCYXIgOiBrVGhlbWVTbWFsbFNjcm9sbEJhcjsKLSAgICB0cmFja0luZm8uYm91bmRzID0gQ0dS
ZWN0TWFrZShyZWN0LngsIHJlY3QueSwgcmVjdC53aWR0aCwgcmVjdC5oZWlnaHQpOwotICAgIHRy
YWNrSW5mby5taW4gPSAwOwotICAgIHRyYWNrSW5mby5tYXggPSBzY3JvbGxiYXJJbmZvLm1heFZh
bHVlOwotICAgIHRyYWNrSW5mby52YWx1ZSA9IHNjcm9sbGJhckluZm8uY3VycmVudFZhbHVlOwot
ICAgIHRyYWNrSW5mby50cmFja0luZm8uc2Nyb2xsYmFyLnZpZXdzaXplID0gc2Nyb2xsYmFySW5m
by52aXNpYmxlU2l6ZTsKLSAgICB0cmFja0luZm8uYXR0cmlidXRlcyA9IDA7Ci0gICAgaWYgKHNj
cm9sbGJhckluZm8ub3JpZW50YXRpb24gPT0gV2ViVGhlbWVFbmdpbmU6OlNjcm9sbGJhck9yaWVu
dGF0aW9uSG9yaXpvbnRhbCkKLSAgICAgICAgdHJhY2tJbmZvLmF0dHJpYnV0ZXMgfD0ga1RoZW1l
VHJhY2tIb3Jpem9udGFsOwotCi0gICAgdHJhY2tJbmZvLmVuYWJsZVN0YXRlID0gc3RhdGVUb0hJ
RW5hYmxlU3RhdGUoc3RhdGUpOwotCi0gICAgdHJhY2tJbmZvLnRyYWNrSW5mby5zY3JvbGxiYXIu
cHJlc3NTdGF0ZSA9Ci0gICAgICAgIHN0YXRlID09IFdlYlRoZW1lRW5naW5lOjpTdGF0ZVByZXNz
ZWQgPyBrVGhlbWVUaHVtYlByZXNzZWQgOiAwOwotICAgIHRyYWNrSW5mby5hdHRyaWJ1dGVzIHw9
IChrVGhlbWVUcmFja1Nob3dUaHVtYiB8IGtUaGVtZVRyYWNrSGlkZVRyYWNrKTsKLSAgICBnZng6
OlNraWFCaXRMb2NrZXIgYml0TG9ja2VyKGNhbnZhcyk7Ci0gICAgQ0dDb250ZXh0UmVmIGNnQ29u
dGV4dCA9IGJpdExvY2tlci5jZ0NvbnRleHQoKTsKLSAgICBISVRoZW1lRHJhd1RyYWNrKCZ0cmFj
a0luZm8sIDAsIGNnQ29udGV4dCwga0hJVGhlbWVPcmllbnRhdGlvbk5vcm1hbCk7Ci19Ci0KLXZv
aWQgV2ViVGVzdFRoZW1lRW5naW5lTWFjOjpwYWludE5TU2Nyb2xsZXJTY3JvbGxiYXJUaHVtYigK
LSAgICBXZWJDYW52YXMqIGNhbnZhcywKLSAgICBXZWJUaGVtZUVuZ2luZTo6U3RhdGUgc3RhdGUs
Ci0gICAgV2ViVGhlbWVFbmdpbmU6OlNpemUgc2l6ZSwKLSAgICBjb25zdCBXZWJSZWN0JiByZWN0
LAotICAgIGNvbnN0IFdlYlRoZW1lRW5naW5lOjpTY3JvbGxiYXJJbmZvJiBzY3JvbGxiYXJJbmZv
KQotewotICAgIFtOU0dyYXBoaWNzQ29udGV4dCBzYXZlR3JhcGhpY3NTdGF0ZV07Ci0gICAgTlNT
Y3JvbGxlciogc2Nyb2xsZXIgPSBbW05TU2Nyb2xsZXIgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdChyZWN0LngsIHJlY3QueSwgcmVjdC53aWR0aCwgcmVjdC5oZWlnaHQpXTsKLSAgICBb
c2Nyb2xsZXIgc2V0RW5hYmxlZDpzdGF0ZSAhPSBXZWJUaGVtZUVuZ2luZTo6U3RhdGVEaXNhYmxl
ZF07Ci0gICAgaWYgKHN0YXRlID09IFdlYlRoZW1lRW5naW5lOjpTdGF0ZUluYWN0aXZlKQotICAg
ICAgICBbW1tGYWtlQWN0aXZlV2luZG93IGFsd2F5c0luYWN0aXZlV2luZG93XSBjb250ZW50Vmll
d10gYWRkU3VidmlldzpzY3JvbGxlcl07Ci0gICAgZWxzZQotICAgICAgICBbW1tGYWtlQWN0aXZl
V2luZG93IGFsd2F5c0FjdGl2ZVdpbmRvd10gY29udGVudFZpZXddIGFkZFN1YnZpZXc6c2Nyb2xs
ZXJdOwotCi0gICAgW3Njcm9sbGVyIHNldENvbnRyb2xTaXplOnNpemUgPT0gV2ViVGhlbWVFbmdp
bmU6OlNpemVSZWd1bGFyID8gTlNSZWd1bGFyQ29udHJvbFNpemUgOiBOU1NtYWxsQ29udHJvbFNp
emVdOwotCi0gICAgZG91YmxlIHZhbHVlID0gZG91YmxlKHNjcm9sbGJhckluZm8uY3VycmVudFZh
bHVlKSAvIGRvdWJsZShzY3JvbGxiYXJJbmZvLm1heFZhbHVlKTsKLSAgICBbc2Nyb2xsZXIgc2V0
RG91YmxlVmFsdWU6IHZhbHVlXTsKLQotICAgIGZsb2F0IGtub2JQcm9wb3J0aW9uID0gZmxvYXQo
c2Nyb2xsYmFySW5mby52aXNpYmxlU2l6ZSkgLyBmbG9hdChzY3JvbGxiYXJJbmZvLnRvdGFsU2l6
ZSk7Ci0gICAgW3Njcm9sbGVyIHNldEtub2JQcm9wb3J0aW9uOiBrbm9iUHJvcG9ydGlvbl07Ci0K
LSAgICBnZng6OlNraWFCaXRMb2NrZXIgYml0TG9ja2VyKGNhbnZhcyk7Ci0gICAgQ0dDb250ZXh0
UmVmIGNnQ29udGV4dCA9IGJpdExvY2tlci5jZ0NvbnRleHQoKTsKLSAgICBOU0dyYXBoaWNzQ29u
dGV4dCogbnNHcmFwaGljc0NvbnRleHQgPSBbTlNHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250
ZXh0V2l0aEdyYXBoaWNzUG9ydDpjZ0NvbnRleHQgZmxpcHBlZDpZRVNdOwotICAgIFtOU0dyYXBo
aWNzQ29udGV4dCBzZXRDdXJyZW50Q29udGV4dDpuc0dyYXBoaWNzQ29udGV4dF07Ci0KLSAgICAv
LyBEZXNwaXRlIHBhc3NpbmcgaW4gZnJhbWVSZWN0KCkgdG8gdGhlIHNjcm9sbGVyLCBpdCBhbHdh
eXMgZHJhd3MgYXQgKDAsIDApLgotICAgIC8vIEZvcmNlIGl0IHRvIGRyYXcgaW4gdGhlIHJpZ2h0
IGxvY2F0aW9uIGJ5IHRyYW5zbGF0aW5nIHRoZSB3aG9sZSBncmFwaGljcwotICAgIC8vIGNvbnRl
eHQuCi0gICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjZ0NvbnRleHQpOwotICAgIE5TQWZmaW5lVHJh
bnNmb3JtICp0cmFuc2Zvcm0gPSBbTlNBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtXTsKLSAgICBb
dHJhbnNmb3JtIHRyYW5zbGF0ZVhCeTpyZWN0LnggeUJ5OnJlY3QueV07Ci0gICAgW3RyYW5zZm9y
bSBjb25jYXRdOwotCi0gICAgW3Njcm9sbGVyIGRyYXdLbm9iXTsKLSAgICBDR0NvbnRleHRSZXN0
b3JlR1N0YXRlKGNnQ29udGV4dCk7Ci0KLSAgICBbc2Nyb2xsZXIgcmVsZWFzZV07Ci0KLSAgICBb
TlNHcmFwaGljc0NvbnRleHQgcmVzdG9yZUdyYXBoaWNzU3RhdGVdOwotfQotCi19CmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0
VGhlbWVFbmdpbmVXaW4uY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1
bm5lci9zcmMvV2ViVGVzdFRoZW1lRW5naW5lV2luLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNTAzMzlmNTVkZDY2MWRhMmM1MDlmMDU4NGQ2ZjQ0NmU4M2RmZGU5OS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0VGhlbWVFbmdpbmVXaW4uY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsNzQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAg
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
ZSAiV2ViVGVzdFRoZW1lRW5naW5lV2luLmgiCi0KLSNpbmNsdWRlICJUZXN0Q29tbW9uLmgiCi0j
aW5jbHVkZSAiV2ViVGVzdFRoZW1lQ29udHJvbFdpbi5oIgotI2luY2x1ZGUgInRoaXJkX3BhcnR5
L3NraWEvaW5jbHVkZS9jb3JlL1NrUmVjdC5oIgotI2luY2x1ZGUgPHB1YmxpYy9XZWJSZWN0Lmg+
Ci0KLS8vIEFsdGhvdWdoIGFsbCB0aGlzIGNvZGUgaXMgZ2VuZXJpYywgd2UgaW5jbHVkZSB0aGVz
ZSBoZWFkZXJzCi0vLyB0byBwdWxsIGluIHRoZSBXaW5kb3dzICNkZWZpbmVzIGZvciB0aGUgcGFy
dHMgYW5kIHN0YXRlcyBvZgotLy8gdGhlIGNvbnRyb2xzLgotI2luY2x1ZGUgPHZzc3R5bGUuaD4K
LSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KLW5hbWVz
cGFjZSBXZWJUZXN0UnVubmVyIHsKLQotbmFtZXNwYWNlIHsKLQotLy8gV2UgZGVmaW5lIHRoaXMg
Zm9yIGNsYXJpdHksIGFsdGhvdWdoIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgYSBERkNTX05PUk1B
TCBpbiB3aW51c2VyLmguCi1jb25zdCBpbnQgZGZjc05vcm1hbCA9IDB4MDAwMDsKLQotU2tJUmVj
dCB3ZWJSZWN0VG9Ta0lSZWN0KGNvbnN0IFdlYlJlY3QmIHdlYlJlY3QpCi17Ci0gICAgU2tJUmVj
dCBpcmVjdDsKLSAgICBpcmVjdC5zZXQod2ViUmVjdC54LCB3ZWJSZWN0LnksIHdlYlJlY3QueCAr
IHdlYlJlY3Qud2lkdGggLSAxLCB3ZWJSZWN0LnkgKyB3ZWJSZWN0LmhlaWdodCAtIDEpOwotICAg
IHJldHVybiBpcmVjdDsKLX0KLQotdm9pZCBkcmF3Q29udHJvbChXZWJDYW52YXMqIGNhbnZhcywg
Y29uc3QgV2ViUmVjdCYgcmVjdCwgV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VHlwZSBjdHlwZSwg
V2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6U3RhdGUgY3N0YXRlKQotewotICAgIFdlYlRlc3RUaGVt
ZUNvbnRyb2xXaW4gY29udHJvbChjYW52YXMsIHdlYlJlY3RUb1NrSVJlY3QocmVjdCksIGN0eXBl
LCBjc3RhdGUpOwotICAgIGNvbnRyb2wuZHJhdygpOwotfQotCi12b2lkIGRyYXdUZXh0RmllbGQo
V2ViQ2FudmFzKiBjYW52YXMsIGNvbnN0IFdlYlJlY3QmIHJlY3QsIFdlYlRlc3RUaGVtZUNvbnRy
b2xXaW46OlR5cGUgY3R5cGUsIFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlN0YXRlIGNzdGF0ZSwg
Ym9vbCBkcmF3RWRnZXMsIGJvb2wgZmlsbENvbnRlbnRBcmVhLCBXZWJDb2xvciBjb2xvcikKLXsK
LSAgICBXZWJUZXN0VGhlbWVDb250cm9sV2luIGNvbnRyb2woY2FudmFzLCB3ZWJSZWN0VG9Ta0lS
ZWN0KHJlY3QpLCBjdHlwZSwgY3N0YXRlKTsKLSAgICBjb250cm9sLmRyYXdUZXh0RmllbGQoZHJh
d0VkZ2VzLCBmaWxsQ29udGVudEFyZWEsIGNvbG9yKTsKLX0KLQotdm9pZCBkcmF3UHJvZ3Jlc3NC
YXIoV2ViQ2FudmFzKiBjYW52YXMsIFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlR5cGUgY3R5cGUs
IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlN0YXRlIGNzdGF0ZSwgY29uc3QgV2ViUmVjdCYgYmFy
UmVjdCwgY29uc3QgV2ViUmVjdCYgZmlsbFJlY3QpCi17Ci0gICAgV2ViVGVzdFRoZW1lQ29udHJv
bFdpbiBjb250cm9sKGNhbnZhcywgd2ViUmVjdFRvU2tJUmVjdChiYXJSZWN0KSwgY3R5cGUsIGNz
dGF0ZSk7Ci0gICAgY29udHJvbC5kcmF3UHJvZ3Jlc3NCYXIod2ViUmVjdFRvU2tJUmVjdChmaWxs
UmVjdCkpOwotfQotCi19Ci0KLXZvaWQgV2ViVGVzdFRoZW1lRW5naW5lV2luOjpwYWludEJ1dHRv
bihXZWJDYW52YXMqIGNhbnZhcywgaW50IHBhcnQsIGludCBzdGF0ZSwgaW50IGNsYXNzaWNTdGF0
ZSwgY29uc3QgV2ViUmVjdCYgcmVjdCkKLXsKLSAgICBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpU
eXBlIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VW5rbm93blR5cGU7Ci0gICAgV2Vi
VGVzdFRoZW1lQ29udHJvbFdpbjo6U3RhdGUgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdp
bjo6VW5rbm93blN0YXRlOwotCi0gICAgaWYgKHBhcnQgPT0gQlBfQ0hFQ0tCT1gpIHsKLSAgICAg
ICAgc3dpdGNoIChzdGF0ZSkgewotICAgICAgICBjYXNlIENCU19VTkNIRUNLRUROT1JNQUw6Ci0g
ICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKLSAg
ICAgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VW5jaGVja2VkQm94VHlw
ZTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46Ok5vcm1hbFN0
YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBDQlNfVU5DSEVDS0VESE9U
OgotICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9O
Q0hFQ0sgfCBERkNTX0hPVCkpOwotICAgICAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250
cm9sV2luOjpVbmNoZWNrZWRCb3hUeXBlOwotICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRo
ZW1lQ29udHJvbFdpbjo6SG90U3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBj
YXNlIENCU19VTkNIRUNLRURQUkVTU0VEOgotICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFz
c2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9OQ0hFQ0sgfCBERkNTX1BVU0hFRCkpOwotICAgICAgICAg
ICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpVbmNoZWNrZWRCb3hUeXBlOwotICAg
ICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6UHJlc3NlZFN0YXRlOwot
ICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBDQlNfVU5DSEVDS0VERElTQUJMRUQ6
Ci0gICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05D
SEVDSyB8IERGQ1NfSU5BQ1RJVkUpKTsKLSAgICAgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1l
Q29udHJvbFdpbjo6VW5jaGVja2VkQm94VHlwZTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRl
c3RUaGVtZUNvbnRyb2xXaW46OkRpc2FibGVkU3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQot
ICAgICAgICBjYXNlIENCU19DSEVDS0VETk9STUFMOgotICAgICAgICAgICAgV0VCS0lUX0FTU0VS
VChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9OQ0hFQ0sgfCBERkNTX0NIRUNLRUQpKTsKLSAg
ICAgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6Q2hlY2tlZEJveFR5cGU7
Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpOb3JtYWxTdGF0
ZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgQ0JTX0NIRUNLRURIT1Q6Ci0g
ICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05DSEVD
SyB8IERGQ1NfQ0hFQ0tFRCB8IERGQ1NfSE9UKSk7Ci0gICAgICAgICAgICBjdHlwZSA9IFdlYlRl
c3RUaGVtZUNvbnRyb2xXaW46OkNoZWNrZWRCb3hUeXBlOwotICAgICAgICAgICAgY3N0YXRlID0g
V2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6SG90U3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQot
ICAgICAgICBjYXNlIENCU19DSEVDS0VEUFJFU1NFRDoKLSAgICAgICAgICAgIFdFQktJVF9BU1NF
UlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTkNIRUNLIHwgREZDU19DSEVDS0VEIHwgREZD
U19QVVNIRUQpKTsKLSAgICAgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6
Q2hlY2tlZEJveFR5cGU7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9s
V2luOjpQcmVzc2VkU3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIENC
U19DSEVDS0VERElTQUJMRUQ6Ci0gICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0
ZSA9PSAoREZDU19CVVRUT05DSEVDSyB8IERGQ1NfQ0hFQ0tFRCB8IERGQ1NfSU5BQ1RJVkUpKTsK
LSAgICAgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6Q2hlY2tlZEJveFR5
cGU7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpEaXNhYmxl
ZFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBDQlNfTUlYRUROT1JN
QUw6Ci0gICAgICAgICAgICAvLyBDbGFzc2ljIHRoZW1lIGNhbid0IHJlcHJlc2VudCBtaXhlZCBz
dGF0ZSBjaGVja2JveC4gV2UgYXNzdW1lCi0gICAgICAgICAgICAvLyBpdCdzIGVxdWl2YWxlbnQg
dG8gdW5jaGVja2VkLgotICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0g
REZDU19CVVRUT05DSEVDSyk7Ci0gICAgICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRy
b2xXaW46OkluZGV0ZXJtaW5hdGVDaGVja2JveFR5cGU7Ci0gICAgICAgICAgICBjc3RhdGUgPSBX
ZWJUZXN0VGhlbWVDb250cm9sV2luOjpOb3JtYWxTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwot
Ci0gICAgICAgIGNhc2UgQ0JTX01JWEVESE9UOgotICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChj
bGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9OQ0hFQ0sgfCBERkNTX0hPVCkpOwotICAgICAgICAg
ICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpJbmRldGVybWluYXRlQ2hlY2tib3hU
eXBlOwotICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6SG90U3Rh
dGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIENCU19NSVhFRFBSRVNTRUQ6
Ci0gICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05D
SEVDSyB8IERGQ1NfUFVTSEVEKSk7Ci0gICAgICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNv
bnRyb2xXaW46OkluZGV0ZXJtaW5hdGVDaGVja2JveFR5cGU7Ci0gICAgICAgICAgICBjc3RhdGUg
PSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpQcmVzc2VkU3RhdGU7Ci0gICAgICAgICAgICBicmVh
azsKLQotICAgICAgICBjYXNlIENCU19NSVhFRERJU0FCTEVEOgotICAgICAgICAgICAgV0VCS0lU
X0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9OQ0hFQ0sgfCBERkNTX0lOQUNUSVZF
KSk7Ci0gICAgICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkluZGV0ZXJt
aW5hdGVDaGVja2JveFR5cGU7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250
cm9sV2luOjpEaXNhYmxlZFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChCUF9SQURJT0JVVFRPTiA9PSBw
YXJ0KSB7Ci0gICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKLSAgICAgICAgY2FzZSBSQlNfVU5DSEVD
S0VETk9STUFMOgotICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZD
U19CVVRUT05SQURJTyk7Ci0gICAgICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xX
aW46OlVuY2hlY2tlZFJhZGlvVHlwZTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVt
ZUNvbnRyb2xXaW46Ok5vcm1hbFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAg
Y2FzZSBSQlNfVU5DSEVDS0VESE9UOgotICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2lj
U3RhdGUgPT0gKERGQ1NfQlVUVE9OUkFESU8gfCBERkNTX0hPVCkpOwotICAgICAgICAgICAgY3R5
cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpVbmNoZWNrZWRSYWRpb1R5cGU7Ci0gICAgICAg
ICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpIb3RTdGF0ZTsKLSAgICAgICAg
ICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgUkJTX1VOQ0hFQ0tFRFBSRVNTRUQ6Ci0gICAgICAg
ICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05SQURJTyB8IERG
Q1NfUFVTSEVEKSk7Ci0gICAgICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46
OlVuY2hlY2tlZFJhZGlvVHlwZTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNv
bnRyb2xXaW46OlByZXNzZWRTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNh
c2UgUkJTX1VOQ0hFQ0tFRERJU0FCTEVEOgotICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFz
c2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9OUkFESU8gfCBERkNTX0lOQUNUSVZFKSk7Ci0gICAgICAg
ICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlVuY2hlY2tlZFJhZGlvVHlwZTsK
LSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkRpc2FibGVkU3Rh
dGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFJCU19DSEVDS0VETk9STUFM
OgotICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9O
UkFESU8gfCBERkNTX0NIRUNLRUQpKTsKLSAgICAgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1l
Q29udHJvbFdpbjo6Q2hlY2tlZFJhZGlvVHlwZTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRl
c3RUaGVtZUNvbnRyb2xXaW46Ok5vcm1hbFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAg
ICAgICAgY2FzZSBSQlNfQ0hFQ0tFREhPVDoKLSAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xh
c3NpY1N0YXRlID09IChERkNTX0JVVFRPTlJBRElPIHwgREZDU19DSEVDS0VEIHwgREZDU19IT1Qp
KTsKLSAgICAgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6Q2hlY2tlZFJh
ZGlvVHlwZTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46Okhv
dFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBSQlNfQ0hFQ0tFRFBS
RVNTRUQ6Ci0gICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19C
VVRUT05SQURJTyB8IERGQ1NfQ0hFQ0tFRCB8IERGQ1NfUFVTSEVEKSk7Ci0gICAgICAgICAgICBj
dHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkNoZWNrZWRSYWRpb1R5cGU7Ci0gICAgICAg
ICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpQcmVzc2VkU3RhdGU7Ci0gICAg
ICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFJCU19DSEVDS0VERElTQUJMRUQ6Ci0gICAg
ICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05SQURJTyB8
IERGQ1NfQ0hFQ0tFRCB8IERGQ1NfSU5BQ1RJVkUpKTsKLSAgICAgICAgICAgIGN0eXBlID0gV2Vi
VGVzdFRoZW1lQ29udHJvbFdpbjo6Q2hlY2tlZFJhZGlvVHlwZTsKLSAgICAgICAgICAgIGNzdGF0
ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkRpc2FibGVkU3RhdGU7Ci0gICAgICAgICAgICBi
cmVhazsKLQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYg
KEJQX1BVU0hCVVRUT04gPT0gcGFydCkgewotICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7Ci0gICAg
ICAgIGNhc2UgUEJTX05PUk1BTDoKLSAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0
YXRlID09IERGQ1NfQlVUVE9OUFVTSCk7Ci0gICAgICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVt
ZUNvbnRyb2xXaW46OlB1c2hCdXR0b25UeXBlOwotICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVz
dFRoZW1lQ29udHJvbFdpbjo6Tm9ybWFsU3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAg
ICAgICBjYXNlIFBCU19IT1Q6Ci0gICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0
ZSA9PSAoREZDU19CVVRUT05QVVNIIHwgREZDU19IT1QpKTsKLSAgICAgICAgICAgIGN0eXBlID0g
V2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6UHVzaEJ1dHRvblR5cGU7Ci0gICAgICAgICAgICBjc3Rh
dGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpIb3RTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFr
OwotCi0gICAgICAgIGNhc2UgUEJTX1BSRVNTRUQ6Ci0gICAgICAgICAgICBXRUJLSVRfQVNTRVJU
KGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05QVVNIIHwgREZDU19QVVNIRUQpKTsKLSAgICAg
ICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6UHVzaEJ1dHRvblR5cGU7Ci0g
ICAgICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpQcmVzc2VkU3RhdGU7
Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFBCU19ESVNBQkxFRDoKLSAgICAg
ICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTlBVU0ggfCBE
RkNTX0lOQUNUSVZFKSk7Ci0gICAgICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xX
aW46OlB1c2hCdXR0b25UeXBlOwotICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29u
dHJvbFdpbjo6RGlzYWJsZWRTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNh
c2UgUEJTX0RFRkFVTFRFRDoKLSAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRl
ID09IERGQ1NfQlVUVE9OUFVTSCk7Ci0gICAgICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNv
bnRyb2xXaW46OlB1c2hCdXR0b25UeXBlOwotICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRo
ZW1lQ29udHJvbFdpbjo6Rm9jdXNlZFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfSBlbHNlCi0gICAgICAgIFdFQktJVF9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLQotICAgIGRyYXdDb250cm9sKGNhbnZhcywgcmVjdCwgY3R5
cGUsIGNzdGF0ZSk7Ci19Ci0KLXZvaWQgV2ViVGVzdFRoZW1lRW5naW5lV2luOjpwYWludE1lbnVM
aXN0KFdlYkNhbnZhcyogY2FudmFzLCBpbnQgcGFydCwgaW50IHN0YXRlLCBpbnQgY2xhc3NpY1N0
YXRlLCBjb25zdCBXZWJSZWN0JiByZWN0KQotewotICAgIFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46
OlR5cGUgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpVbmtub3duVHlwZTsKLSAgICBX
ZWJUZXN0VGhlbWVDb250cm9sV2luOjpTdGF0ZSBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9s
V2luOjpVbmtub3duU3RhdGU7Ci0KLSAgICBpZiAoQ1BfRFJPUERPV05CVVRUT04gPT0gcGFydCkg
ewotICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkRyb3BEb3duQnV0dG9u
VHlwZTsKLSAgICAgICAgc3dpdGNoIChzdGF0ZSkgewotICAgICAgICBjYXNlIENCWFNfTk9STUFM
OgotICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19NRU5VQVJS
T1cpOwotICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6Tm9ybWFs
U3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIENCWFNfSE9UOgotICAg
ICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfTUVOVUFSUk9XIHwg
REZDU19IT1QpKTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46
OkhvdmVyU3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIENCWFNfUFJF
U1NFRDoKLSAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX01F
TlVBUlJPVyB8IERGQ1NfUFVTSEVEKSk7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhl
bWVDb250cm9sV2luOjpQcmVzc2VkU3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAg
ICBjYXNlIENCWFNfRElTQUJMRUQ6Ci0gICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNT
dGF0ZSA9PSAoREZDU19NRU5VQVJST1cgfCBERkNTX0lOQUNUSVZFKSk7Ci0gICAgICAgICAgICBj
c3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpEaXNhYmxlZFN0YXRlOwotICAgICAgICAg
ICAgYnJlYWs7Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFdFQktJVF9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfSBlbHNl
Ci0gICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLQotICAgIGRyYXdDb250cm9s
KGNhbnZhcywgcmVjdCwgY3R5cGUsIGNzdGF0ZSk7Ci19Ci0KLXZvaWQgV2ViVGVzdFRoZW1lRW5n
aW5lV2luOjpwYWludFNjcm9sbGJhckFycm93KFdlYkNhbnZhcyogY2FudmFzLCBpbnQgc3RhdGUs
IGludCBjbGFzc2ljU3RhdGUsIGNvbnN0IFdlYlJlY3QmIHJlY3QpCi17Ci0gICAgV2ViVGVzdFRo
ZW1lQ29udHJvbFdpbjo6VHlwZSBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlVua25v
d25UeXBlOwotICAgIFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlN0YXRlIGNzdGF0ZSA9IFdlYlRl
c3RUaGVtZUNvbnRyb2xXaW46OlVua25vd25TdGF0ZTsKLQotICAgIHN3aXRjaCAoc3RhdGUpIHsK
LSAgICBjYXNlIEFCU19VUE5PUk1BTDoKLSAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3Rh
dGUgPT0gREZDU19TQ1JPTExVUCk7Ci0gICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJv
bFdpbjo6VXBBcnJvd1R5cGU7Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xX
aW46Ok5vcm1hbFN0YXRlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQUJTX0RPV05OT1JN
QUw6Ci0gICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfU0NST0xMRE9X
Tik7Ci0gICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6RG93bkFycm93VHlw
ZTsKLSAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6Tm9ybWFsU3RhdGU7
Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBBQlNfTEVGVE5PUk1BTDoKLSAgICAgICAgV0VC
S0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19TQ1JPTExMRUZUKTsKLSAgICAgICAgY3R5
cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpMZWZ0QXJyb3dUeXBlOwotICAgICAgICBjc3Rh
dGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpOb3JtYWxTdGF0ZTsKLSAgICAgICAgYnJlYWs7
Ci0KLSAgICBjYXNlIEFCU19SSUdIVE5PUk1BTDoKLSAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFz
c2ljU3RhdGUgPT0gREZDU19TQ1JPTExSSUdIVCk7Ci0gICAgICAgIGN0eXBlID0gV2ViVGVzdFRo
ZW1lQ29udHJvbFdpbjo6UmlnaHRBcnJvd1R5cGU7Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RU
aGVtZUNvbnRyb2xXaW46Ok5vcm1hbFN0YXRlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2Ug
QUJTX1VQSE9UOgotICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19T
Q1JPTExVUCB8IERGQ1NfSE9UKSk7Ci0gICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJv
bFdpbjo6VXBBcnJvd1R5cGU7Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xX
aW46OkhvdFN0YXRlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQUJTX0RPV05IT1Q6Ci0g
ICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTERPV04gfCBE
RkNTX0hPVCkpOwotICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkRvd25B
cnJvd1R5cGU7Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkhvdFN0
YXRlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQUJTX0xFRlRIT1Q6Ci0gICAgICAgIFdF
QktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTExFRlQgfCBERkNTX0hPVCkp
OwotICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkxlZnRBcnJvd1R5cGU7
Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkhvdFN0YXRlOwotICAg
ICAgICBicmVhazsKLQotICAgIGNhc2UgQUJTX1JJR0hUSE9UOgotICAgICAgICBXRUJLSVRfQVNT
RVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19TQ1JPTExSSUdIVCB8IERGQ1NfSE9UKSk7Ci0gICAg
ICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6UmlnaHRBcnJvd1R5cGU7Ci0gICAg
ICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkhvdFN0YXRlOwotICAgICAgICBi
cmVhazsKLQotICAgIGNhc2UgQUJTX1VQSE9WRVI6Ci0gICAgICAgIFdFQktJVF9BU1NFUlQoY2xh
c3NpY1N0YXRlID09IERGQ1NfU0NST0xMVVApOwotICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVt
ZUNvbnRyb2xXaW46OlVwQXJyb3dUeXBlOwotICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVD
b250cm9sV2luOjpIb3ZlclN0YXRlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQUJTX0RP
V05IT1ZFUjoKLSAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19TQ1JP
TExET1dOKTsKLSAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpEb3duQXJy
b3dUeXBlOwotICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpIb3ZlclN0
YXRlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQUJTX0xFRlRIT1ZFUjoKLSAgICAgICAg
V0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19TQ1JPTExMRUZUKTsKLSAgICAgICAg
Y3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpMZWZ0QXJyb3dUeXBlOwotICAgICAgICBj
c3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpIb3ZlclN0YXRlOwotICAgICAgICBicmVh
azsKLQotICAgIGNhc2UgQUJTX1JJR0hUSE9WRVI6Ci0gICAgICAgIFdFQktJVF9BU1NFUlQoY2xh
c3NpY1N0YXRlID09IERGQ1NfU0NST0xMUklHSFQpOwotICAgICAgICBjdHlwZSA9IFdlYlRlc3RU
aGVtZUNvbnRyb2xXaW46OlJpZ2h0QXJyb3dUeXBlOwotICAgICAgICBjc3RhdGUgPSBXZWJUZXN0
VGhlbWVDb250cm9sV2luOjpIb3ZlclN0YXRlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2Ug
QUJTX1VQUFJFU1NFRDoKLSAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERG
Q1NfU0NST0xMVVAgfCBERkNTX1BVU0hFRCB8IERGQ1NfRkxBVCkpOwotICAgICAgICBjdHlwZSA9
IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlVwQXJyb3dUeXBlOwotICAgICAgICBjc3RhdGUgPSBX
ZWJUZXN0VGhlbWVDb250cm9sV2luOjpQcmVzc2VkU3RhdGU7Ci0gICAgICAgIGJyZWFrOwotCi0g
ICAgY2FzZSBBQlNfRE9XTlBSRVNTRUQ6Ci0gICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0
YXRlID09IChERkNTX1NDUk9MTERPV04gfCBERkNTX1BVU0hFRCB8IERGQ1NfRkxBVCkpOwotICAg
ICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkRvd25BcnJvd1R5cGU7Ci0gICAg
ICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlByZXNzZWRTdGF0ZTsKLSAgICAg
ICAgYnJlYWs7Ci0KLSAgICBjYXNlIEFCU19MRUZUUFJFU1NFRDoKLSAgICAgICAgV0VCS0lUX0FT
U0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NST0xMTEVGVCB8IERGQ1NfUFVTSEVEIHwgREZD
U19GTEFUKSk7Ci0gICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6TGVmdEFy
cm93VHlwZTsKLSAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6UHJlc3Nl
ZFN0YXRlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQUJTX1JJR0hUUFJFU1NFRDoKLSAg
ICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NST0xMUklHSFQgfCBE
RkNTX1BVU0hFRCB8IERGQ1NfRkxBVCkpOwotICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNv
bnRyb2xXaW46OlJpZ2h0QXJyb3dUeXBlOwotICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVD
b250cm9sV2luOjpQcmVzc2VkU3RhdGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBBQlNf
VVBESVNBQkxFRDoKLSAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1Nf
U0NST0xMVVAgfCBERkNTX0lOQUNUSVZFKSk7Ci0gICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1l
Q29udHJvbFdpbjo6VXBBcnJvd1R5cGU7Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNv
bnRyb2xXaW46OkRpc2FibGVkU3RhdGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBBQlNf
RE9XTkRJU0FCTEVEOgotICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZD
U19TQ1JPTExET1dOIHwgREZDU19JTkFDVElWRSkpOwotICAgICAgICBjdHlwZSA9IFdlYlRlc3RU
aGVtZUNvbnRyb2xXaW46OkRvd25BcnJvd1R5cGU7Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RU
aGVtZUNvbnRyb2xXaW46OkRpc2FibGVkU3RhdGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2Fz
ZSBBQlNfTEVGVERJU0FCTEVEOgotICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9
PSAoREZDU19TQ1JPTExMRUZUIHwgREZDU19JTkFDVElWRSkpOwotICAgICAgICBjdHlwZSA9IFdl
YlRlc3RUaGVtZUNvbnRyb2xXaW46OkxlZnRBcnJvd1R5cGU7Ci0gICAgICAgIGNzdGF0ZSA9IFdl
YlRlc3RUaGVtZUNvbnRyb2xXaW46OkRpc2FibGVkU3RhdGU7Ci0gICAgICAgIGJyZWFrOwotCi0g
ICAgY2FzZSBBQlNfUklHSFRESVNBQkxFRDoKLSAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2lj
U3RhdGUgPT0gKERGQ1NfU0NST0xMUklHSFQgfCBERkNTX0lOQUNUSVZFKSk7Ci0gICAgICAgIGN0
eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6UmlnaHRBcnJvd1R5cGU7Ci0gICAgICAgIGNz
dGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkRpc2FibGVkU3RhdGU7Ci0gICAgICAgIGJy
ZWFrOwotCi0gICAgZGVmYXVsdDoKLSAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBkcmF3Q29udHJvbChjYW52YXMsIHJlY3Qs
IGN0eXBlLCBjc3RhdGUpOwotfQotCi12b2lkIFdlYlRlc3RUaGVtZUVuZ2luZVdpbjo6cGFpbnRT
Y3JvbGxiYXJUaHVtYihXZWJDYW52YXMqIGNhbnZhcywgaW50IHBhcnQsIGludCBzdGF0ZSwgaW50
IGNsYXNzaWNTdGF0ZSwgY29uc3QgV2ViUmVjdCYgcmVjdCkKLXsKLSAgICBXZWJUZXN0VGhlbWVD
b250cm9sV2luOjpUeXBlIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VW5rbm93blR5
cGU7Ci0gICAgV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6U3RhdGUgY3N0YXRlID0gV2ViVGVzdFRo
ZW1lQ29udHJvbFdpbjo6VW5rbm93blN0YXRlOwotCi0gICAgc3dpdGNoIChwYXJ0KSB7Ci0gICAg
Y2FzZSBTQlBfVEhVTUJCVE5IT1JaOgotICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRy
b2xXaW46Okhvcml6b250YWxTY3JvbGxUaHVtYlR5cGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAg
Y2FzZSBTQlBfVEhVTUJCVE5WRVJUOgotICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRy
b2xXaW46OlZlcnRpY2FsU2Nyb2xsVGh1bWJUeXBlOwotICAgICAgICBicmVhazsKLQotICAgIGNh
c2UgU0JQX0dSSVBQRVJIT1JaOgotICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xX
aW46Okhvcml6b250YWxTY3JvbGxHcmlwVHlwZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNl
IFNCUF9HUklQUEVSVkVSVDoKLSAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2lu
OjpWZXJ0aWNhbFNjcm9sbEdyaXBUeXBlOwotICAgICAgICBicmVhazsKLQotICAgIGRlZmF1bHQ6
Ci0gICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgfQotCi0gICAgc3dpdGNoIChzdGF0ZSkgewotICAgIGNhc2UgU0NSQlNfTk9STUFMOgotICAg
ICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKLSAgICAgICAg
Y3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6Tm9ybWFsU3RhdGU7Ci0gICAgICAgIGJy
ZWFrOwotCi0gICAgY2FzZSBTQ1JCU19IT1Q6Ci0gICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3Np
Y1N0YXRlID09IERGQ1NfSE9UKTsKLSAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJv
bFdpbjo6SG90U3RhdGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTQ1JCU19IT1ZFUjoK
LSAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gZGZjc05vcm1hbCk7Ci0gICAg
ICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkhvdmVyU3RhdGU7Ci0gICAgICAg
IGJyZWFrOwotCi0gICAgY2FzZSBTQ1JCU19QUkVTU0VEOgotICAgICAgICBXRUJLSVRfQVNTRVJU
KGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKLSAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRo
ZW1lQ29udHJvbFdpbjo6UHJlc3NlZFN0YXRlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2Ug
U0NSQlNfRElTQUJMRUQ6Ci0gICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8g
VGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuIGluIHByYWN0aWNlLgotICAgICAgICBicmVhazsKLQot
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQotCi0gICAgZHJhd0NvbnRyb2woY2FudmFzLCByZWN0LCBjdHlwZSwg
Y3N0YXRlKTsKLX0KLQotdm9pZCBXZWJUZXN0VGhlbWVFbmdpbmVXaW46OnBhaW50U2Nyb2xsYmFy
VHJhY2soV2ViQ2FudmFzKiBjYW52YXMsIGludCBwYXJ0LCBpbnQgc3RhdGUsIGludCBjbGFzc2lj
U3RhdGUsIGNvbnN0IFdlYlJlY3QmIHJlY3QsIGNvbnN0IFdlYlJlY3QmIGFsaWduUmVjdCkKLXsK
LSAgICBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpUeXBlIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29u
dHJvbFdpbjo6VW5rbm93blR5cGU7Ci0gICAgV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6U3RhdGUg
Y3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VW5rbm93blN0YXRlOwotCi0gICAgc3dp
dGNoIChwYXJ0KSB7Ci0gICAgY2FzZSBTQlBfVVBQRVJUUkFDS0hPUlo6Ci0gICAgICAgIGN0eXBl
ID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6SG9yaXpvbnRhbFNjcm9sbFRyYWNrQmFja1R5cGU7
Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTQlBfTE9XRVJUUkFDS0hPUlo6Ci0gICAgICAg
IGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6SG9yaXpvbnRhbFNjcm9sbFRyYWNrRm9y
d2FyZFR5cGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTQlBfVVBQRVJUUkFDS1ZFUlQ6
Ci0gICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VmVydGljYWxTY3JvbGxU
cmFja0JhY2tUeXBlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgU0JQX0xPV0VSVFJBQ0tW
RVJUOgotICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlZlcnRpY2FsU2Ny
b2xsVHJhY2tGb3J3YXJkVHlwZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBkZWZhdWx0OgotICAg
ICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0K
LQotICAgIHN3aXRjaCAoc3RhdGUpIHsKLSAgICBjYXNlIFNDUkJTX05PUk1BTDoKLSAgICAgICAg
V0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gZGZjc05vcm1hbCk7Ci0gICAgICAgIGNzdGF0
ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46Ok5vcm1hbFN0YXRlOwotICAgICAgICBicmVhazsK
LQotICAgIGNhc2UgU0NSQlNfSE9UOgotICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVE
KCk7IC8vIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiBpbiBwcmFjdGljZS4KLSAgICAgICAgYnJl
YWs7Ci0KLSAgICBjYXNlIFNDUkJTX0hPVkVSOgotICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNz
aWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKLSAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29u
dHJvbFdpbjo6SG92ZXJTdGF0ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNDUkJTX1BS
RVNTRUQ6Ci0gICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8gVGhpcyBzaG91
bGQgbmV2ZXIgaGFwcGVuIGluIHByYWN0aWNlLgotICAgICAgICBicmVhazsKLQotICAgIGNhc2Ug
U0NSQlNfRElTQUJMRUQ6Ci0gICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IERG
Q1NfSU5BQ1RJVkUpOwotICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpE
aXNhYmxlZFN0YXRlOwotICAgICAgICBicmVhazsKLQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIFdF
QktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAg
ZHJhd0NvbnRyb2woY2FudmFzLCByZWN0LCBjdHlwZSwgY3N0YXRlKTsKLX0KLQotdm9pZCBXZWJU
ZXN0VGhlbWVFbmdpbmVXaW46OnBhaW50U3BpbkJ1dHRvbihXZWJDYW52YXMqIGNhbnZhcywgaW50
IHBhcnQsIGludCBzdGF0ZSwgaW50IGNsYXNzaWNTdGF0ZSwgY29uc3QgV2ViUmVjdCYgcmVjdCkK
LXsKLSAgICBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpUeXBlIGN0eXBlID0gV2ViVGVzdFRoZW1l
Q29udHJvbFdpbjo6VW5rbm93blR5cGU7Ci0gICAgV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6U3Rh
dGUgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VW5rbm93blN0YXRlOwotCi0gICAg
aWYgKHBhcnQgPT0gU1BOUF9VUCkgewotICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRy
b2xXaW46OlVwQXJyb3dUeXBlOwotICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7Ci0gICAgICAgIGNh
c2UgVVBTX05PUk1BTDoKLSAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09
IERGQ1NfU0NST0xMVVApOwotICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJv
bFdpbjo6Tm9ybWFsU3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBVUFNf
RElTQUJMRUQ6Ci0gICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZD
U19TQ1JPTExVUCB8IERGQ1NfSU5BQ1RJVkUpKTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRl
c3RUaGVtZUNvbnRyb2xXaW46OkRpc2FibGVkU3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBVUFNfUFJFU1NFRDoKLSAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3Np
Y1N0YXRlID09IChERkNTX1NDUk9MTFVQIHwgREZDU19QVVNIRUQpKTsKLSAgICAgICAgICAgIGNz
dGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlByZXNzZWRTdGF0ZTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIFVQU19IT1Q6Ci0gICAgICAgICAgICBXRUJLSVRfQVNTRVJU
KGNsYXNzaWNTdGF0ZSA9PSAoREZDU19TQ1JPTExVUCB8IERGQ1NfSE9UKSk7Ci0gICAgICAgICAg
ICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpIb3ZlclN0YXRlOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBXRUJLSVRfQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKHBhcnQgPT0gU1BOUF9ET1dO
KSB7Ci0gICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6RG93bkFycm93VHlw
ZTsKLSAgICAgICAgc3dpdGNoIChzdGF0ZSkgewotICAgICAgICBjYXNlIEROU19OT1JNQUw6Ci0g
ICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX1NDUk9MTERPV04p
OwotICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6Tm9ybWFsU3Rh
dGU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBETlNfRElTQUJMRUQ6Ci0gICAg
ICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19TQ1JPTExET1dOIHwg
REZDU19JTkFDVElWRSkpOwotICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJv
bFdpbjo6RGlzYWJsZWRTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIERO
U19QUkVTU0VEOgotICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERG
Q1NfU0NST0xMRE9XTiB8IERGQ1NfUFVTSEVEKSk7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJU
ZXN0VGhlbWVDb250cm9sV2luOjpQcmVzc2VkU3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBETlNfSE9UOgotICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3Rh
dGUgPT0gKERGQ1NfU0NST0xMRE9XTiB8IERGQ1NfSE9UKSk7Ci0gICAgICAgICAgICBjc3RhdGUg
PSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpIb3ZlclN0YXRlOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UKLSAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIGRyYXdDb250cm9sKGNhbnZhcywgcmVjdCwgY3R5cGUsIGNzdGF0ZSk7Ci19
Ci0KLXZvaWQgV2ViVGVzdFRoZW1lRW5naW5lV2luOjpwYWludFRleHRGaWVsZChXZWJDYW52YXMq
IGNhbnZhcywgaW50IHBhcnQsIGludCBzdGF0ZSwgaW50IGNsYXNzaWNTdGF0ZSwgY29uc3QgV2Vi
UmVjdCYgcmVjdCwgV2ViQ29sb3IgY29sb3IsIGJvb2wgZmlsbENvbnRlbnRBcmVhLCBib29sIGRy
YXdFZGdlcykKLXsKLSAgICBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpUeXBlIGN0eXBlID0gV2Vi
VGVzdFRoZW1lQ29udHJvbFdpbjo6VW5rbm93blR5cGU7Ci0gICAgV2ViVGVzdFRoZW1lQ29udHJv
bFdpbjo6U3RhdGUgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VW5rbm93blN0YXRl
OwotCi0gICAgV0VCS0lUX0FTU0VSVChFUF9FRElUVEVYVCA9PSBwYXJ0KTsKLSAgICBjdHlwZSA9
IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlRleHRGaWVsZFR5cGU7Ci0KLSAgICBzd2l0Y2ggKHN0
YXRlKSB7Ci0gICAgY2FzZSBFVFNfTk9STUFMOgotICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNz
aWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKLSAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29u
dHJvbFdpbjo6Tm9ybWFsU3RhdGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBFVFNfSE9U
OgotICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX0hPVCk7Ci0gICAg
ICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkhvdFN0YXRlOwotICAgICAgICBi
cmVhazsKLQotICAgIGNhc2UgRVRTX0RJU0FCTEVEOgotICAgICAgICBXRUJLSVRfQVNTRVJUKGNs
YXNzaWNTdGF0ZSA9PSBERkNTX0lOQUNUSVZFKTsKLSAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRo
ZW1lQ29udHJvbFdpbjo6RGlzYWJsZWRTdGF0ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNl
IEVUU19TRUxFQ1RFRDoKLSAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZD
U19QVVNIRUQpOwotICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpQcmVz
c2VkU3RhdGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBFVFNfRk9DVVNFRDoKLSAgICAg
ICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gZGZjc05vcm1hbCk7Ci0gICAgICAgIGNz
dGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkZvY3VzZWRTdGF0ZTsKLSAgICAgICAgYnJl
YWs7Ci0KLSAgICBjYXNlIEVUU19SRUFET05MWToKLSAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFz
c2ljU3RhdGUgPT0gZGZjc05vcm1hbCk7Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNv
bnRyb2xXaW46OlJlYWRPbmx5U3RhdGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgZGVmYXVsdDoK
LSAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBicmVhazsKLSAg
ICB9Ci0KLSAgICBkcmF3VGV4dEZpZWxkKGNhbnZhcywgcmVjdCwgY3R5cGUsIGNzdGF0ZSwgZHJh
d0VkZ2VzLCBmaWxsQ29udGVudEFyZWEsIGNvbG9yKTsKLX0KLQotdm9pZCBXZWJUZXN0VGhlbWVF
bmdpbmVXaW46OnBhaW50VHJhY2tiYXIoV2ViQ2FudmFzKiBjYW52YXMsIGludCBwYXJ0LCBpbnQg
c3RhdGUsIGludCBjbGFzc2ljU3RhdGUsIGNvbnN0IFdlYlJlY3QmIHJlY3QpCi17Ci0gICAgV2Vi
VGVzdFRoZW1lQ29udHJvbFdpbjo6VHlwZSBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46
OlVua25vd25UeXBlOwotICAgIFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlN0YXRlIGNzdGF0ZSA9
IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlVua25vd25TdGF0ZTsKLQotICAgIGlmIChUS1BfVEhV
TUJCT1RUT00gPT0gcGFydCkgewotICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xX
aW46Okhvcml6b250YWxTbGlkZXJUaHVtYlR5cGU7Ci0gICAgICAgIHN3aXRjaCAoc3RhdGUpIHsK
LSAgICAgICAgY2FzZSBUVVNfTk9STUFMOgotICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFz
c2ljU3RhdGUgPT0gZGZjc05vcm1hbCk7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhl
bWVDb250cm9sV2luOjpOb3JtYWxTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAg
IGNhc2UgVFVTX0hPVDoKLSAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09
IERGQ1NfSE9UKTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46
OkhvdFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBUVVNfRElTQUJM
RUQ6Ci0gICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX0lOQUNU
SVZFKTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkRpc2Fi
bGVkU3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFRVU19QUkVTU0VE
OgotICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19QVVNIRUQp
OwotICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6UHJlc3NlZFN0
YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0gICAgfSBlbHNlIGlmIChUS1BfVEhVTUJWRVJUID09IHBhcnQpIHsKLSAgICAgICAgY3R5
cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpWZXJ0aWNhbFNsaWRlclRodW1iVHlwZTsKLSAg
ICAgICAgc3dpdGNoIChzdGF0ZSkgewotICAgICAgICBjYXNlIFRVU19OT1JNQUw6Ci0gICAgICAg
ICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKLSAgICAgICAg
ICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46Ok5vcm1hbFN0YXRlOwotICAgICAg
ICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBUVVNfSE9UOgotICAgICAgICAgICAgV0VCS0lU
X0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19IT1QpOwotICAgICAgICAgICAgY3N0YXRlID0g
V2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6SG90U3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQot
ICAgICAgICBjYXNlIFRVU19ESVNBQkxFRDoKLSAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xh
c3NpY1N0YXRlID09IERGQ1NfSU5BQ1RJVkUpOwotICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVz
dFRoZW1lQ29udHJvbFdpbjo6RGlzYWJsZWRTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0g
ICAgICAgIGNhc2UgVFVTX1BSRVNTRUQ6Ci0gICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNz
aWNTdGF0ZSA9PSBERkNTX1BVU0hFRCk7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhl
bWVDb250cm9sV2luOjpQcmVzc2VkU3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKFRLUF9UUkFDSyA9PSBw
YXJ0KSB7Ci0gICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6SG9yaXpvbnRh
bFNsaWRlclRyYWNrVHlwZTsKLSAgICAgICAgV0VCS0lUX0FTU0VSVChzdGF0ZSA9PSBUUlNfTk9S
TUFMKTsKLSAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gZGZjc05vcm1hbCk7
Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46Ok5vcm1hbFN0YXRlOwot
ICAgIH0gZWxzZSBpZiAoVEtQX1RSQUNLVkVSVCA9PSBwYXJ0KSB7Ci0gICAgICAgIGN0eXBlID0g
V2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VmVydGljYWxTbGlkZXJUcmFja1R5cGU7Ci0gICAgICAg
IFdFQktJVF9BU1NFUlQoc3RhdGUgPT0gVFJWU19OT1JNQUwpOwotICAgICAgICBXRUJLSVRfQVNT
RVJUKGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKLSAgICAgICAgY3N0YXRlID0gV2ViVGVz
dFRoZW1lQ29udHJvbFdpbjo6Tm9ybWFsU3RhdGU7Ci0gICAgfSBlbHNlCi0gICAgICAgIFdFQktJ
VF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLQotICAgIGRyYXdDb250cm9sKGNhbnZhcywgcmVjdCwg
Y3R5cGUsIGNzdGF0ZSk7Ci19Ci0KLQotdm9pZCBXZWJUZXN0VGhlbWVFbmdpbmVXaW46OnBhaW50
UHJvZ3Jlc3NCYXIoV2ViS2l0OjpXZWJDYW52YXMqIGNhbnZhcywgY29uc3QgV2ViS2l0OjpXZWJS
ZWN0JiBiYXJSZWN0LCBjb25zdCBXZWJLaXQ6OldlYlJlY3QmIHZhbHVlUmVjdCwgYm9vbCBkZXRl
cm1pbmF0ZSwgZG91YmxlKQotewotICAgIFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlR5cGUgY3R5
cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpQcm9ncmVzc0JhclR5cGU7Ci0gICAgV2ViVGVz
dFRoZW1lQ29udHJvbFdpbjo6U3RhdGUgY3N0YXRlID0gZGV0ZXJtaW5hdGUgPyBXZWJUZXN0VGhl
bWVDb250cm9sV2luOjpOb3JtYWxTdGF0ZSA6IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkluZGV0
ZXJtaW5hdGVTdGF0ZTsKLSAgICBkcmF3UHJvZ3Jlc3NCYXIoY2FudmFzLCBjdHlwZSwgY3N0YXRl
LCBiYXJSZWN0LCB2YWx1ZVJlY3QpOwotfQotCi0KLVdlYktpdDo6V2ViU2l6ZSBXZWJUZXN0VGhl
bWVFbmdpbmVXaW46OmdldFNpemUoaW50IHBhcnQpCi17Ci0gICAgcmV0dXJuIFdlYktpdDo6V2Vi
U2l6ZSgpOwotfQotCi19CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0VGhlbWVFbmdpbmVXaW4uaCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RUaGVtZUVuZ2luZVdpbi5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NGEzZWM0MmU5Yjc3YmUxNTFjMjM1NTMyOWI4
ZDFkNDA2MGMwMzljLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RU
aGVtZUVuZ2luZVdpbi5oCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJp
YnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0vLyBUaGlzIGlt
cGxlbWVudHMgdGhlIFdlYlRoZW1lRW5naW5lIEFQSSB1c2VkIGJ5IHRoZSBXaW5kb3dzIHZlcnNp
b24gb2YKLS8vIENocm9taXVtIHRvIHJlbmRlciBuYXRpdmUgZm9ybSBjb250cm9scyBsaWtlIGNo
ZWNrYm94ZXMsIHJhZGlvIGJ1dHRvbnMsCi0vLyBhbmQgc2Nyb2xsIGJhcnMuCi0vLyBUaGUgbm9y
bWFsIGltcGxlbWVudGF0aW9uIChuYXRpdmVfdGhlbWUpIHJlbmRlcnMgdGhlIGNvbnRyb2xzIHVz
aW5nIGVpdGhlcgotLy8gdGhlIFVYVGhlbWUgdGhlbWluZyBlbmdpbmUgcHJlc2VudCBpbiBYUCwg
VmlzdGEsIGFuZCBXaW4gNywgb3IgdGhlICJjbGFzc2ljIgotLy8gdGhlbWUgdXNlZCBpZiB0aGF0
IHRoZW1lIGlzIHNlbGVjdGVkIGluIHRoZSBEZXNrdG9wIHNldHRpbmdzLgotLy8gVW5mb3J0dW5h
dGVseSwgYm90aCBvZiB0aGVzZSB0aGVtZXMgcmVuZGVyIGNvbnRyb2xzIGRpZmZlcmVudGx5IG9u
IHRoZQotLy8gZGlmZmVyZW50IHZlcnNpb25zIG9mIFdpbmRvd3MuCi0vLwotLy8gSW4gb3JkZXIg
dG8gZW5zdXJlIG1heGltdW0gY29uc2lzdGVuY3kgb2YgYmFzZWxpbmVzIGFjcm9zcyB0aGUgZGlm
ZmVyZW50Ci0vLyBXaW5kb3dzIHZlcnNpb25zLCB3ZSBwcm92aWRlIGEgc2ltcGxlIGltcGxlbWVu
dGF0aW9uIGZvciBEUlQgaGVyZQotLy8gaW5zdGVhZC4gVGhlc2UgY29udHJvbHMgYXJlIGFjdHVh
bGx5IHBsYXRmb3JtLWluZGVwZW5kZW50ICh0aGV5J3JlIHJlbmRlcmVkCi0vLyB1c2luZyBTa2lh
KSBhbmQgY291bGQgYmUgdXNlZCBvbiBMaW51eCBhbmQgdGhlIE1hYyBhcyB3ZWxsLCBzaG91bGQg
d2UKLS8vIGNob29zZSB0byBkbyBzbyBhdCBzb21lIHBvaW50LgotLy8KLQotI2lmbmRlZiBXZWJU
ZXN0VGhlbWVFbmdpbmVXaW5faAotI2RlZmluZSBXZWJUZXN0VGhlbWVFbmdpbmVXaW5faAotCi0j
aW5jbHVkZSA8cHVibGljL3dpbi9XZWJUaGVtZUVuZ2luZS5oPgotCi1uYW1lc3BhY2UgV2ViVGVz
dFJ1bm5lciB7Ci0KLWNsYXNzIFdlYlRlc3RUaGVtZUVuZ2luZVdpbiA6IHB1YmxpYyBXZWJLaXQ6
OldlYlRoZW1lRW5naW5lIHsKLXB1YmxpYzoKLSAgICBXZWJUZXN0VGhlbWVFbmdpbmVXaW4oKSB7
IH0KLQotICAgIC8vIFdlYlRoZW1lRW5naW5lIG1ldGhvZHM6Ci0gICAgdmlydHVhbCB2b2lkIHBh
aW50QnV0dG9uKAotICAgICAgICBXZWJLaXQ6OldlYkNhbnZhcyosIGludCBwYXJ0LCBpbnQgc3Rh
dGUsIGludCBjbGFzc2ljU3RhdGUsCi0gICAgICAgIGNvbnN0IFdlYktpdDo6V2ViUmVjdCYpOwot
Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50TWVudUxpc3QoCi0gICAgICAgIFdlYktpdDo6V2ViQ2Fu
dmFzKiwgaW50IHBhcnQsIGludCBzdGF0ZSwgaW50IGNsYXNzaWNTdGF0ZSwKLSAgICAgICAgY29u
c3QgV2ViS2l0OjpXZWJSZWN0Jik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxiYXJB
cnJvdygKLSAgICAgICAgV2ViS2l0OjpXZWJDYW52YXMqLCBpbnQgc3RhdGUsIGludCBjbGFzc2lj
U3RhdGUsCi0gICAgICAgIGNvbnN0IFdlYktpdDo6V2ViUmVjdCYpOwotCi0gICAgdmlydHVhbCB2
b2lkIHBhaW50U2Nyb2xsYmFyVGh1bWIoCi0gICAgICAgIFdlYktpdDo6V2ViQ2FudmFzKiwgaW50
IHBhcnQsIGludCBzdGF0ZSwgaW50IGNsYXNzaWNTdGF0ZSwKLSAgICAgICAgY29uc3QgV2ViS2l0
OjpXZWJSZWN0Jik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxiYXJUcmFjaygKLSAg
ICAgICAgV2ViS2l0OjpXZWJDYW52YXMqLCBpbnQgcGFydCwgaW50IHN0YXRlLCBpbnQgY2xhc3Np
Y1N0YXRlLAotICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlJlY3QmLCBjb25zdCBXZWJLaXQ6Oldl
YlJlY3QmIGFsaWduUmVjdCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTcGluQnV0dG9uKAot
ICAgICAgICBXZWJLaXQ6OldlYkNhbnZhcyosIGludCBwYXJ0LCBpbnQgc3RhdGUsIGludCBjbGFz
c2ljU3RhdGUsCi0gICAgICAgIGNvbnN0IFdlYktpdDo6V2ViUmVjdCYpOwotCi0gICAgdmlydHVh
bCB2b2lkIHBhaW50VGV4dEZpZWxkKAotICAgICAgICBXZWJLaXQ6OldlYkNhbnZhcyosIGludCBw
YXJ0LCBpbnQgc3RhdGUsIGludCBjbGFzc2ljU3RhdGUsCi0gICAgICAgIGNvbnN0IFdlYktpdDo6
V2ViUmVjdCYsIFdlYktpdDo6V2ViQ29sb3IsIGJvb2wgZmlsbENvbnRlbnRBcmVhLAotICAgICAg
ICBib29sIGRyYXdFZGdlcyk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja2JhcigKLSAg
ICAgICAgV2ViS2l0OjpXZWJDYW52YXMqLCBpbnQgcGFydCwgaW50IHN0YXRlLCBpbnQgY2xhc3Np
Y1N0YXRlLAotICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlJlY3QmKTsKLQotICAgIHZpcnR1YWwg
dm9pZCBwYWludFByb2dyZXNzQmFyKAotICAgICAgICBXZWJLaXQ6OldlYkNhbnZhcyosIGNvbnN0
IFdlYktpdDo6V2ViUmVjdCYgYmFyUmVjdCwKLSAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJSZWN0
JiB2YWx1ZVJlY3QsCi0gICAgICAgIGJvb2wgZGV0ZXJtaW5hdGUsIGRvdWJsZSB0aW1lKTsKLQot
ICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJTaXplIGdldFNpemUoaW50IHBhcnQpOwotfTsKLQotfQot
Ci0jZW5kaWYgLy8gV2ViVGVzdFRoZW1lRW5naW5lV2luX2gKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwCmluZGV4IDViZjBiNmI5YTlkYzdlOTNkNGVlYmY1YWU3
YjM3MDIzZjNlOTVlN2MuLmQzZGI2NWViMGMyMTgzNjVlMDliYTA4OGEzZjhmNDJhODdmYWIyMTIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcApAQCAtMTM4
LDExICsxMzgsNiBAQCB2b2lkIFRlc3RTaGVsbDo6aW5pdGlhbGl6ZShNb2NrUGxhdGZvcm0qIHBs
YXRmb3JtU3VwcG9ydCkKICNpZiBFTkFCTEUoTElOS19QUkVSRU5ERVIpCiAgICAgbV9wcmVyZW5k
ZXJpbmdTdXBwb3J0ID0gYWRvcHRQdHIobmV3IE1vY2tXZWJQcmVyZW5kZXJpbmdTdXBwb3J0KCkp
OwogI2VuZGlmCi0jaWYgIWRlZmluZWQoVVNFX0RFRkFVTFRfUkVOREVSX1RIRU1FKSAmJiAoT1Mo
V0lORE9XUykgfHwgT1MoTUFDX09TX1gpKQotICAgIC8vIFNldCB0aGVtZSBlbmdpbmUuCi0gICAg
d2Via2l0X3N1cHBvcnQ6OlNldFRoZW1lRW5naW5lKG1fdGVzdEludGVyZmFjZXMtPnRoZW1lRW5n
aW5lKCkpOwotI2VuZGlmCi0KIAogICAgIFdURjo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogCmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuaCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5oCmluZGV4IDQ2YjFmNGI2NDFm
MWM2ZDcyZmMwMGViOTI0ZTZhODNhY2Y2NDZkYTYuLmVkN2VhZmNiMjYwYTMxZjQ2YzdiYzJkNjM4
ZWNlMTE0YjYzZTY4OTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RTaGVsbC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVs
bC5oCkBAIC00Nyw3ICs0Nyw2IEBAIGNsYXNzIFdlYkRldlRvb2xzQWdlbnRDbGllbnQ7CiBjbGFz
cyBXZWJGcmFtZTsKIGNsYXNzIFdlYlRocmVhZDsKIGNsYXNzIFdlYlZpZXc7Ci1jbGFzcyBXZWJU
aGVtZUVuZ2luZTsKIGNsYXNzIFdlYlVSTDsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFNoZWxsTWFjLm1tCmluZGV4IDUzZWRlNTY2NjliMjg0MTgzOTM3NzU2ODY2
MDM3YWQwMDgwOGJmMjYuLmQ3OWE4YzgzNTY3Y2YxYTdkNWNhZjVkMDk4ZWYwYWQ0YzRhMTc1YzQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbE1hYy5t
bQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxNYWMubW0KQEAg
LTMxLDkgKzMxLDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJUZXN0U2hl
bGwuaCIKKyNpbmNsdWRlICJXZWJUaGVtZUVuZ2luZURSVE1hYy5oIgogI2luY2x1ZGUgIndlYmtp
dC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0LmgiCiAjaW1wb3J0IDxBcHBLaXQvQXBwS2l0Lmg+CiAK
K3N0YXRpYyBXZWJUaGVtZUVuZ2luZURSVE1hYyB0aGVtZUVuZ2luZTsKKwogLy8gQSBjbGFzcyB0
byBiZSB0aGUgdGFyZ2V0L3NlbGVjdG9yIG9mIHRoZSAid2F0Y2hkb2ciIHRocmVhZCB0aGF0IGVu
c3VyZXMKIC8vIHBhZ2VzIHRpbWVvdXQgaWYgdGhleSB0YWtlIHRvbyBsb25nIGFuZCB0ZWxscyB0
aGUgdGVzdCBoYXJuZXNzIHZpYSBzdGRvdXQuCiBAaW50ZXJmYWNlIFdhdGNoRG9nVGFyZ2V0IDog
TlNPYmplY3QgewpAQCAtMTI2LDYgKzEyOSw3IEBAIHZvaWQgVGVzdFNoZWxsOjp3YWl0VGVzdEZp
bmlzaGVkKCkKIAogdm9pZCBwbGF0Zm9ybUluaXQoaW50KiwgY2hhcioqKikKIHsKKyAgICB3ZWJr
aXRfc3VwcG9ydDo6U2V0VGhlbWVFbmdpbmUoJnRoZW1lRW5naW5lKTsKIH0KIAogdm9pZCBvcGVu
U3RhcnR1cERpYWxvZygpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0U2hlbGxXaW4uY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNo
ZWxsV2luLmNwcAppbmRleCAyNTE2NDFlZDNlMjBjYmRmNmM5ZTBlYjM5MjA1OWQyNTg0YmRkZGUw
Li4zYTQ2Y2ZiNzFiYmY2MTU5NzU3Yjk5MDU5MjVmY2Y1NTgwMGE1ZTRmIDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxXaW4uY3BwCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbFdpbi5jcHAKQEAgLTMxLDYgKzMxLDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJUZXN0U2hlbGwuaCIKIAorI2luY2x1
ZGUgIldlYlRoZW1lRW5naW5lRFJUV2luLmgiCiAjaW5jbHVkZSAid2Via2l0L3N1cHBvcnQvd2Vi
a2l0X3N1cHBvcnQuaCIKICNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUgPGlvLmg+CkBAIC00
Nyw2ICs0OCwxMSBAQAogI2RlZmluZSBOT05DTElFTlRNRVRSSUNTX1NJWkVfUFJFX1ZJU1RBIFwK
ICAgICBTSVpFT0ZfU1RSVUNUX1dJVEhfU1BFQ0lGSUVEX0xBU1RfTUVNQkVSKE5PTkNMSUVOVE1F
VFJJQ1MsIGxmTWVzc2FnZUZvbnQpCiAKKyNpZm5kZWYgVVNFX0RFRkFVTFRfUkVOREVSX1RIRU1F
CisvLyBUaGVtZSBlbmdpbmUKK3N0YXRpYyBXZWJUaGVtZUVuZ2luZURSVFdpbiB0aGVtZUVuZ2lu
ZTsKKyNlbmRpZgorCiAvLyBUaHJlYWQgbWFpbiB0byBydW4gZm9yIHRoZSB0aHJlYWQgd2hpY2gg
anVzdCB0ZXN0cyBmb3IgdGltZW91dC4KIHVuc2lnbmVkIGludCBfX3N0ZGNhbGwgd2F0Y2hEb2dU
aHJlYWQodm9pZCogYXJnKQogewpAQCAtMTE0LDYgKzEyMCwxMSBAQCB2b2lkIHBsYXRmb3JtSW5p
dChpbnQqLCBjaGFyKioqKQogICAgIF9zZXRtb2RlKF9maWxlbm8oc3Rkb3V0KSwgX09fQklOQVJZ
KTsKICAgICBfc2V0bW9kZShfZmlsZW5vKHN0ZGVyciksIF9PX0JJTkFSWSk7CiAKKyNpZm5kZWYg
VVNFX0RFRkFVTFRfUkVOREVSX1RIRU1FCisgICAgLy8gU2V0IHRoZW1lIGVuZ2luZS4KKyAgICB3
ZWJraXRfc3VwcG9ydDo6U2V0VGhlbWVFbmdpbmUoJnRoZW1lRW5naW5lKTsKKyNlbmRpZgorCiAg
ICAgLy8gTG9hZCBBaGVtIGZvbnQuCiAgICAgLy8gQUhFTV9fX18uVFRGIGlzIGNvcGllZCB0byB0
aGUgZGlyZWN0b3J5IG9mIER1bXBSZW5kZXJUcmVlLmV4ZSBieSBXZWJLaXQuZ3lwLgogICAgIFdD
SEFSIHBhdGhbX01BWF9QQVRIXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1dlYlRoZW1lQ29udHJvbERSVFdpbi5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJUaGVtZUNvbnRyb2xEUlRXaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNzU1Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxNDMxZDg0YjU0
NjcwZDJjOWQ2OWUwMjAzZjEwOTYyNzcxODUxOTgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUNvbnRyb2xEUlRXaW4uY3BwCkBAIC0wLDAg
KzEsNTI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworLy8gVGhpcyBmaWxlIGltcGxlbWVudHMgYSBzaW1wbGUgZ2VuZXJpYyB2ZXJzaW9u
IG9mIHRoZSBXZWJUaGVtZUVuZ2luZSwKKy8vIHdoaWNoIGlzIHVzZWQgdG8gZHJhdyBhbGwgdGhl
IG5hdGl2ZSBjb250cm9scyBvbiBhIHdlYiBwYWdlLiBXZSB1c2UgdGhpcworLy8gZmlsZSB3aGVu
IHJ1bm5pbmcgaW4gbGF5b3V0IHRlc3QgbW9kZSBpbiBvcmRlciB0byByZW1vdmUgYW55CisvLyBw
bGF0Zm9ybS1zcGVjaWZpYyByZW5kZXJpbmcgZGlmZmVyZW5jZXMgZHVlIHRvIHRoZW1lcywgY29s
b3JzLCBldGMuCisvLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViVGhlbWVD
b250cm9sRFJUV2luLmgiCisKKyNpbmNsdWRlICJza2lhL2V4dC9za2lhX3V0aWxzX3dpbi5oIgor
I2luY2x1ZGUgInRoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS9jb3JlL1NrQ2FudmFzLmgiCisjaW5j
bHVkZSAidGhpcmRfcGFydHkvc2tpYS9pbmNsdWRlL2NvcmUvU2tQYWludC5oIgorI2luY2x1ZGUg
InRoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS9jb3JlL1NrUGF0aC5oIgorI2luY2x1ZGUgInRoaXJk
X3BhcnR5L3NraWEvaW5jbHVkZS9jb3JlL1NrUmVjdC5oIgorCisjaW5jbHVkZSA8YWxnb3JpdGht
PgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisK
K3N0YXRpYyBjb25zdCBTa0NvbG9yIGVkZ2VDb2xvciAgICAgPSBTS19Db2xvckJMQUNLOworc3Rh
dGljIGNvbnN0IFNrQ29sb3IgcmVhZE9ubHlDb2xvciA9IFNrQ29sb3JTZXRSR0IoMHhlOSwgMHhj
MiwgMHhhNik7CitzdGF0aWMgY29uc3QgU2tDb2xvciBmZ0NvbG9yICAgICAgID0gU0tfQ29sb3JC
TEFDSzsKK3N0YXRpYyBjb25zdCBTa0NvbG9yIGJnQ29sb3JzW10gICAgPSB7CisgICAgU0tfQ29s
b3JCTEFDSywgICAgICAgICAgICAgICAgICAgLy8gVW5rbm93bgorICAgIFNrQ29sb3JTZXRSR0Io
MHhjOSwgMHhjOSwgMHhjOSksIC8vIERpc2FibGVkCisgICAgU2tDb2xvclNldFJHQigweGYzLCAw
eGUwLCAweGQwKSwgLy8gUmVhZG9ubHkKKyAgICBTa0NvbG9yU2V0UkdCKDB4ODksIDB4YzQsIDB4
ZmYpLCAvLyBOb3JtYWwKKyAgICBTa0NvbG9yU2V0UkdCKDB4NDMsIDB4ZjksIDB4ZmYpLCAvLyBI
b3QKKyAgICBTa0NvbG9yU2V0UkdCKDB4MjAsIDB4ZjYsIDB4Y2MpLCAvLyBGb2N1c2VkCisgICAg
U2tDb2xvclNldFJHQigweDAwLCAweGYzLCAweGFjKSwgLy8gSG92ZXIKKyAgICBTa0NvbG9yU2V0
UkdCKDB4YTksIDB4ZmYsIDB4MTIpLCAvLyBQcmVzc2VkCisgICAgU2tDb2xvclNldFJHQigweGNj
LCAweGNjLCAweGNjKSAgLy8gSW5kZXRlcm1pbmF0ZQorfTsKKworc3RhdGljIFNrSVJlY3QgdmFs
aWRhdGUoY29uc3QgU2tJUmVjdCYgcmVjdCwgV2ViVGhlbWVDb250cm9sRFJUV2luOjpUeXBlIGN0
eXBlKQoreworICAgIHN3aXRjaCAoY3R5cGUpIHsKKyAgICBjYXNlIFdlYlRoZW1lQ29udHJvbERS
VFdpbjo6VW5jaGVja2VkQm94VHlwZToKKyAgICBjYXNlIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6
Q2hlY2tlZEJveFR5cGU6CisgICAgY2FzZSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVuY2hlY2tl
ZFJhZGlvVHlwZToKKyAgICBjYXNlIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Q2hlY2tlZFJhZGlv
VHlwZTogeworICAgICAgICBTa0lSZWN0IHJldHZhbCA9IHJlY3Q7CisKKyAgICAgICAgLy8gVGhl
IG1heGltdW0gd2lkdGggYW5kIGhlaWdodCBpcyAxMy4KKyAgICAgICAgLy8gQ2VudGVyIHRoZSBz
cXVhcmUgaW4gdGhlIHBhc3NlZCByZWN0YW5nbGUuCisgICAgICAgIGNvbnN0IGludCBtYXhDb250
cm9sU2l6ZSA9IDEzOworICAgICAgICBpbnQgY29udHJvbFNpemUgPSBzdGQ6Om1pbihyZWN0Lndp
ZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworICAgICAgICBjb250cm9sU2l6ZSA9IHN0ZDo6bWluKGNv
bnRyb2xTaXplLCBtYXhDb250cm9sU2l6ZSk7CisKKyAgICAgICAgcmV0dmFsLmZMZWZ0ICAgPSBy
ZWN0LmZMZWZ0ICsgKHJlY3Qud2lkdGgoKSAvIDIpIC0gKGNvbnRyb2xTaXplIC8gMik7CisgICAg
ICAgIHJldHZhbC5mUmlnaHQgID0gcmV0dmFsLmZMZWZ0ICsgY29udHJvbFNpemUgLSAxOworICAg
ICAgICByZXR2YWwuZlRvcCAgICA9IHJlY3QuZlRvcCArIChyZWN0LmhlaWdodCgpIC8gMikgLSAo
Y29udHJvbFNpemUgLyAyKTsKKyAgICAgICAgcmV0dmFsLmZCb3R0b20gPSByZXR2YWwuZlRvcCAr
IGNvbnRyb2xTaXplIC0gMTsKKworICAgICAgICByZXR1cm4gcmV0dmFsOworICAgIH0KKworICAg
IGRlZmF1bHQ6CisgICAgICAgIHJldHVybiByZWN0OworICAgIH0KK30KKworLy8gV2ViVGhlbWVD
b250cm9sRFJUV2luCisKK1dlYlRoZW1lQ29udHJvbERSVFdpbjo6V2ViVGhlbWVDb250cm9sRFJU
V2luKFNrQ2FudmFzKiBjYW52YXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBTa0lSZWN0JiBpcmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFR5cGUgY3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZSBjc3RhdGUpCisgICAgOiBtX2NhbnZhcyhjYW52
YXMpCisgICAgLCBtX2lyZWN0KHZhbGlkYXRlKGlyZWN0LCBjdHlwZSkpCisgICAgLCBtX3R5cGUo
Y3R5cGUpCisgICAgLCBtX3N0YXRlKGNzdGF0ZSkKKyAgICAsIG1fbGVmdChtX2lyZWN0LmZMZWZ0
KQorICAgICwgbV9yaWdodChtX2lyZWN0LmZSaWdodCkKKyAgICAsIG1fdG9wKG1faXJlY3QuZlRv
cCkKKyAgICAsIG1fYm90dG9tKG1faXJlY3QuZkJvdHRvbSkKKyAgICAsIG1faGVpZ2h0KG1faXJl
Y3QuaGVpZ2h0KCkpCisgICAgLCBtX3dpZHRoKG1faXJlY3Qud2lkdGgoKSkKKyAgICAsIG1fZWRn
ZUNvbG9yKGVkZ2VDb2xvcikKKyAgICAsIG1fYmdDb2xvcihiZ0NvbG9yc1tjc3RhdGVdKQorICAg
ICwgbV9mZ0NvbG9yKGZnQ29sb3IpCit7Cit9CisKK1dlYlRoZW1lQ29udHJvbERSVFdpbjo6fldl
YlRoZW1lQ29udHJvbERSVFdpbigpCit7Cit9CisKK3ZvaWQgV2ViVGhlbWVDb250cm9sRFJUV2lu
Ojpib3goY29uc3QgU2tJUmVjdCYgcmVjdCwgU2tDb2xvciBmaWxsQ29sb3IpCit7CisgICAgU2tQ
YWludCBwYWludDsKKworICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtGaWxsX1N0eWxlKTsK
KyAgICBwYWludC5zZXRDb2xvcihmaWxsQ29sb3IpOworICAgIG1fY2FudmFzLT5kcmF3SVJlY3Qo
cmVjdCwgcGFpbnQpOworCisgICAgcGFpbnQuc2V0Q29sb3IobV9lZGdlQ29sb3IpOworICAgIHBh
aW50LnNldFN0eWxlKFNrUGFpbnQ6OmtTdHJva2VfU3R5bGUpOworICAgIG1fY2FudmFzLT5kcmF3
SVJlY3QocmVjdCwgcGFpbnQpOworfQorCit2b2lkIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6bGlu
ZShpbnQgeDAsIGludCB5MCwgaW50IHgxLCBpbnQgeTEsIFNrQ29sb3IgY29sb3IpCit7CisgICAg
U2tQYWludCBwYWludDsKKyAgICBwYWludC5zZXRDb2xvcihjb2xvcik7CisgICAgbV9jYW52YXMt
PmRyYXdMaW5lKFNrSW50VG9TY2FsYXIoeDApLCBTa0ludFRvU2NhbGFyKHkwKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgU2tJbnRUb1NjYWxhcih4MSksIFNrSW50VG9TY2FsYXIoeTEpLAorICAg
ICAgICAgICAgICAgICAgICAgICBwYWludCk7Cit9CisKK3ZvaWQgV2ViVGhlbWVDb250cm9sRFJU
V2luOjp0cmlhbmdsZShpbnQgeDAsIGludCB5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgeDEsIGludCB5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgeDIsIGludCB5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTa0NvbG9yIGNvbG9yKQoreworICAgIFNrUGF0aCBwYXRoOworICAgIFNrUGFpbnQgcGFp
bnQ7CisKKyAgICBwYWludC5zZXRDb2xvcihjb2xvcik7CisgICAgcGFpbnQuc2V0U3R5bGUoU2tQ
YWludDo6a0ZpbGxfU3R5bGUpOworICAgIHBhdGguaW5jUmVzZXJ2ZSg0KTsKKyAgICBwYXRoLm1v
dmVUbyhTa0ludFRvU2NhbGFyKHgwKSwgU2tJbnRUb1NjYWxhcih5MCkpOworICAgIHBhdGgubGlu
ZVRvKFNrSW50VG9TY2FsYXIoeDEpLCBTa0ludFRvU2NhbGFyKHkxKSk7CisgICAgcGF0aC5saW5l
VG8oU2tJbnRUb1NjYWxhcih4MiksIFNrSW50VG9TY2FsYXIoeTIpKTsKKyAgICBwYXRoLmNsb3Nl
KCk7CisgICAgbV9jYW52YXMtPmRyYXdQYXRoKHBhdGgsIHBhaW50KTsKKworICAgIHBhaW50LnNl
dENvbG9yKG1fZWRnZUNvbG9yKTsKKyAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprU3Ryb2tl
X1N0eWxlKTsKKyAgICBtX2NhbnZhcy0+ZHJhd1BhdGgocGF0aCwgcGFpbnQpOworfQorCit2b2lk
IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6cm91bmRSZWN0KFNrQ29sb3IgY29sb3IpCit7CisgICAg
U2tSZWN0IHJlY3Q7CisgICAgU2tTY2FsYXIgcmFkaXVzID0gU2tJbnRUb1NjYWxhcig1KTsKKyAg
ICBTa1BhaW50IHBhaW50OworCisgICAgcmVjdC5zZXQobV9pcmVjdCk7CisgICAgcGFpbnQuc2V0
Q29sb3IoY29sb3IpOworICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtGaWxsX1N0eWxlKTsK
KyAgICBtX2NhbnZhcy0+ZHJhd1JvdW5kUmVjdChyZWN0LCByYWRpdXMsIHJhZGl1cywgcGFpbnQp
OworCisgICAgcGFpbnQuc2V0Q29sb3IobV9lZGdlQ29sb3IpOworICAgIHBhaW50LnNldFN0eWxl
KFNrUGFpbnQ6OmtTdHJva2VfU3R5bGUpOworICAgIG1fY2FudmFzLT5kcmF3Um91bmRSZWN0KHJl
Y3QsIHJhZGl1cywgcmFkaXVzLCBwYWludCk7Cit9CisKK3ZvaWQgV2ViVGhlbWVDb250cm9sRFJU
V2luOjpvdmFsKFNrQ29sb3IgY29sb3IpCit7CisgICAgU2tSZWN0IHJlY3Q7CisgICAgU2tQYWlu
dCBwYWludDsKKworICAgIHJlY3Quc2V0KG1faXJlY3QpOworICAgIHBhaW50LnNldENvbG9yKGNv
bG9yKTsKKyAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprRmlsbF9TdHlsZSk7CisgICAgbV9j
YW52YXMtPmRyYXdPdmFsKHJlY3QsIHBhaW50KTsKKworICAgIHBhaW50LnNldENvbG9yKG1fZWRn
ZUNvbG9yKTsKKyAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprU3Ryb2tlX1N0eWxlKTsKKyAg
ICBtX2NhbnZhcy0+ZHJhd092YWwocmVjdCwgcGFpbnQpOworfQorCit2b2lkIFdlYlRoZW1lQ29u
dHJvbERSVFdpbjo6Y2lyY2xlKFNrU2NhbGFyIHJhZGl1cywgU2tDb2xvciBjb2xvcikKK3sKKyAg
ICBTa1NjYWxhciBjeSA9IFNrSW50VG9TY2FsYXIobV90b3AgICsgbV9oZWlnaHQgLyAyKTsKKyAg
ICBTa1NjYWxhciBjeCA9IFNrSW50VG9TY2FsYXIobV9sZWZ0ICsgbV93aWR0aCAvIDIpOworICAg
IFNrUGFpbnQgcGFpbnQ7CisKKyAgICBwYWludC5zZXRDb2xvcihjb2xvcik7CisgICAgcGFpbnQu
c2V0U3R5bGUoU2tQYWludDo6a0ZpbGxfU3R5bGUpOworICAgIG1fY2FudmFzLT5kcmF3Q2lyY2xl
KGN4LCBjeSwgcmFkaXVzLCBwYWludCk7CisKKyAgICBwYWludC5zZXRDb2xvcihtX2VkZ2VDb2xv
cik7CisgICAgcGFpbnQuc2V0U3R5bGUoU2tQYWludDo6a1N0cm9rZV9TdHlsZSk7CisgICAgbV9j
YW52YXMtPmRyYXdDaXJjbGUoY3gsIGN5LCByYWRpdXMsIHBhaW50KTsKK30KKwordm9pZCBXZWJU
aGVtZUNvbnRyb2xEUlRXaW46Om5lc3RlZEJveGVzKGludCBpbmRlbnRMZWZ0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbmRlbnRUb3AsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGluZGVudFJpZ2h0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbmRlbnRCb3R0b20sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2tDb2xvciBvdXRlckNvbG9yLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNrQ29sb3IgaW5uZXJDb2xvcikK
K3sKKyAgICBTa0lSZWN0IGxpcmVjdDsKKyAgICBib3gobV9pcmVjdCwgb3V0ZXJDb2xvcik7Cisg
ICAgbGlyZWN0LnNldChtX2lyZWN0LmZMZWZ0ICsgaW5kZW50TGVmdCwKKyAgICAgICAgICAgICAg
IG1faXJlY3QuZlRvcCArIGluZGVudFRvcCwKKyAgICAgICAgICAgICAgIG1faXJlY3QuZlJpZ2h0
IC0gaW5kZW50UmlnaHQsCisgICAgICAgICAgICAgICBtX2lyZWN0LmZCb3R0b20gLSBpbmRlbnRC
b3R0b20pOworICAgIGJveChsaXJlY3QsIGlubmVyQ29sb3IpOworfQorCit2b2lkIFdlYlRoZW1l
Q29udHJvbERSVFdpbjo6bWFya1N0YXRlKCkKK3sKKyAgICAvLyBUaGUgaG9yaXpvbnRhbCBsaW5l
cyBpbiBhIHJlYWQgb25seSBjb250cm9sIGFyZSBzcGFjZWQgYnkgdGhpcyBhbW91bnQuCisgICAg
Y29uc3QgaW50IHJlYWRPbmx5TGluZU9mZnNldCA9IDU7CisKKyAgICAvLyBUaGUgbGVuZ3RoIG9m
IGEgdHJpYW5nbGUgc2lkZSBmb3IgdGhlIGNvcm5lciBtYXJrcy4KKyAgICBjb25zdCBpbnQgdHJp
YW5nbGVTaXplID0gNTsKKworICAgIHN3aXRjaCAobV9zdGF0ZSkgeworICAgIGNhc2UgVW5rbm93
blN0YXRlOgorICAgIGNhc2UgRGlzYWJsZWRTdGF0ZToKKyAgICBjYXNlIE5vcm1hbFN0YXRlOgor
ICAgIGNhc2UgSW5kZXRlcm1pbmF0ZVN0YXRlOgorICAgICAgICAvLyBEb24ndCB2aXN1YWxseSBt
YXJrIHRoZXNlIHN0YXRlcyAoY29sb3IgaXMgZW5vdWdoKS4KKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBSZWFkT25seVN0YXRlOgorICAgICAgICAvLyBEcmF3aW5nIGxpbmVzIGFjcm9zcyB0aGUg
Y29udHJvbC4KKyAgICAgICAgZm9yIChpbnQgaSA9IG1fdG9wICsgcmVhZE9ubHlMaW5lT2Zmc2V0
OyBpIDwgbV9ib3R0b207IGkgKz0gcmVhZE9ubHlMaW5lT2Zmc2V0KQorICAgICAgICAgICAgbGlu
ZShtX2xlZnQgKyAxLCBpLCBtX3JpZ2h0IC0gMSwgaSwgcmVhZE9ubHlDb2xvcik7CisgICAgICAg
IGJyZWFrOworCisgICAgY2FzZSBIb3RTdGF0ZToKKyAgICAgICAgLy8gRHJhdyBhIHRyaWFuZ2xl
IGluIHRoZSB1cHBlciBsZWZ0IGNvcm5lciBvZiB0aGUgY29udHJvbC4KKyAgICAgICAgdHJpYW5n
bGUobV9sZWZ0LCAgICAgICAgICAgICAgICAgbV90b3AsCisgICAgICAgICAgICAgICAgIG1fbGVm
dCArIHRyaWFuZ2xlU2l6ZSwgIG1fdG9wLAorICAgICAgICAgICAgICAgICBtX2xlZnQsICAgICAg
ICAgICAgICAgICBtX3RvcCArIHRyaWFuZ2xlU2l6ZSwgICAgbV9lZGdlQ29sb3IpOworICAgICAg
ICBicmVhazsKKworICAgIGNhc2UgSG92ZXJTdGF0ZToKKyAgICAgICAgLy8gRHJhdyBhIHRyaWFu
Z2xlIGluIHRoZSB1cHBlciByaWdodCBjb3JuZXIgb2YgdGhlIGNvbnRyb2wuCisgICAgICAgIHRy
aWFuZ2xlKG1fcmlnaHQsICAgICAgICAgICAgICAgIG1fdG9wLAorICAgICAgICAgICAgICAgICBt
X3JpZ2h0LCAgICAgICAgICAgICAgICBtX3RvcCArIHRyaWFuZ2xlU2l6ZSwKKyAgICAgICAgICAg
ICAgICAgbV9yaWdodCAtIHRyaWFuZ2xlU2l6ZSwgbV90b3AsICAgICAgICAgICAgICAgICAgIG1f
ZWRnZUNvbG9yKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEZvY3VzZWRTdGF0ZToKKyAg
ICAgICAgLy8gRHJhdyBhIHRyaWFuZ2xlIGluIHRoZSBib3R0b20gcmlnaHQgY29ybmVyIG9mIHRo
ZSBjb250cm9sLgorICAgICAgICB0cmlhbmdsZShtX3JpZ2h0LCAgICAgICAgICAgICAgICBtX2Jv
dHRvbSwKKyAgICAgICAgICAgICAgICAgbV9yaWdodCAtIHRyaWFuZ2xlU2l6ZSwgbV9ib3R0b20s
CisgICAgICAgICAgICAgICAgIG1fcmlnaHQsICAgICAgICAgICAgICAgIG1fYm90dG9tIC0gdHJp
YW5nbGVTaXplLCBtX2VkZ2VDb2xvcik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBQcmVz
c2VkU3RhdGU6CisgICAgICAgIC8vIERyYXcgYSB0cmlhbmdsZSBpbiB0aGUgYm90dG9tIGxlZnQg
Y29ybmVyIG9mIHRoZSBjb250cm9sLgorICAgICAgICB0cmlhbmdsZShtX2xlZnQsICAgICAgICAg
ICAgICAgICBtX2JvdHRvbSwKKyAgICAgICAgICAgICAgICAgbV9sZWZ0LCAgICAgICAgICAgICAg
ICAgbV9ib3R0b20gLSB0cmlhbmdsZVNpemUsCisgICAgICAgICAgICAgICAgIG1fbGVmdCArIHRy
aWFuZ2xlU2l6ZSwgIG1fYm90dG9tLCAgICAgICAgICAgICAgICBtX2VkZ2VDb2xvcik7CisgICAg
ICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIENSQVNIKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordm9pZCBXZWJU
aGVtZUNvbnRyb2xEUlRXaW46OmRyYXcoKQoreworICAgIGludCBoYWxmV2lkdGggPSBtX3dpZHRo
IC8gMjsKKyAgICBpbnQgaGFsZkhlaWdodCA9IG1faGVpZ2h0IC8gMjsKKyAgICBpbnQgcXVhcnRl
cldpZHRoID0gbV93aWR0aCAvIDQ7CisgICAgaW50IHF1YXJ0ZXJIZWlnaHQgPSBtX2hlaWdodCAv
IDQ7CisKKyAgICAvLyBJbmRlbnQgYW1vdW50cyBmb3IgdGhlIGNoZWNrIGluIGEgY2hlY2tib3gg
b3IgcmFkaW8gYnV0dG9uLgorICAgIGNvbnN0IGludCBjaGVja0luZGVudCA9IDM7CisKKyAgICAv
LyBJbmRlbnQgYW1vdW50cyBmb3Igc2hvcnQgYW5kIGxvbmcgc2lkZXMgb2YgdGhlIHNjcm9sbGJh
ciBub3RjaGVzLgorICAgIGNvbnN0IGludCBub3RjaExvbmdPZmZzZXQgPSAxOworICAgIGNvbnN0
IGludCBub3RjaFNob3J0T2Zmc2V0ID0gNDsKKyAgICBjb25zdCBpbnQgbm9PZmZzZXQgPSAwOwor
CisgICAgLy8gSW5kZW50IGFtb3VudHMgZm9yIHRoZSBzaG9ydCBhbmQgbG9uZyBzaWRlcyBvZiBh
IHNjcm9sbCB0aHVtYiBib3guCisgICAgY29uc3QgaW50IHRodW1iTG9uZ0luZGVudCA9IDA7Cisg
ICAgY29uc3QgaW50IHRodW1iU2hvcnRJbmRlbnQgPSAyOworCisgICAgLy8gSW5kZW50cyBmb3Ig
dGhlIGNyb3NzaGF0Y2ggb24gYSBzY3JvbGwgZ3JpcC4KKyAgICBjb25zdCBpbnQgZ3JpcExvbmdJ
bmRlbnQgPSAzOworICAgIGNvbnN0IGludCBncmlwU2hvcnRJbmRlbnQgPSA1OworCisgICAgLy8g
SW5kZW50cyBmb3IgdGhlIHRoZSBzbGlkZXIgdHJhY2suCisgICAgY29uc3QgaW50IHNsaWRlcklu
ZGVudCA9IDI7CisKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNhc2UgVW5rbm93blR5cGU6
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBDUkFTSCgpOworICAgICAg
ICBicmVhazsKKworICAgIGNhc2UgVGV4dEZpZWxkVHlwZToKKyAgICAgICAgLy8gV2UgcmVuZGVy
IHRoaXMgYnkgaGFuZCBvdXRzaWRlIG9mIHRoaXMgZnVuY3Rpb24uCisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICBDUkFTSCgpOworICAgICAgICBicmVhazsKKworICAgIGNh
c2UgUHVzaEJ1dHRvblR5cGU6CisgICAgICAgIC8vIHB1c2ggYnV0dG9ucyByZW5kZXIgYXMgYSBy
b3VuZGVkIHJlY3RhbmdsZQorICAgICAgICByb3VuZFJlY3QobV9iZ0NvbG9yKTsKKyAgICAgICAg
YnJlYWs7CisKKyAgICBjYXNlIFVuY2hlY2tlZEJveFR5cGU6CisgICAgICAgIC8vIFVuY2hlY2tl
ZCBib3hlcyBhcmUgc2ltcGx5IHBsYWluIGJveGVzLgorICAgICAgICBib3gobV9pcmVjdCwgbV9i
Z0NvbG9yKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIENoZWNrZWRCb3hUeXBlOgorICAg
ICAgICBuZXN0ZWRCb3hlcyhjaGVja0luZGVudCwgY2hlY2tJbmRlbnQsIGNoZWNrSW5kZW50LCBj
aGVja0luZGVudCwgbV9iZ0NvbG9yLCBtX2ZnQ29sb3IpOworICAgICAgICBicmVhazsKKworICAg
IGNhc2UgSW5kZXRlcm1pbmF0ZUNoZWNrYm94VHlwZToKKyAgICAgICAgLy8gSW5kZXRlcm1pbmF0
ZSBjaGVja2JveCBpcyBhIGJveCBjb250YWluaW5nICctJy4KKyAgICAgICAgbmVzdGVkQm94ZXMo
Y2hlY2tJbmRlbnQsIGhhbGZIZWlnaHQsIGNoZWNrSW5kZW50LCBoYWxmSGVpZ2h0LCBtX2JnQ29s
b3IsIG1fZmdDb2xvcik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBVbmNoZWNrZWRSYWRp
b1R5cGU6CisgICAgICAgIGNpcmNsZShTa0ludFRvU2NhbGFyKGhhbGZIZWlnaHQpLCBtX2JnQ29s
b3IpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgQ2hlY2tlZFJhZGlvVHlwZToKKyAgICAg
ICAgY2lyY2xlKFNrSW50VG9TY2FsYXIoaGFsZkhlaWdodCksIG1fYmdDb2xvcik7CisgICAgICAg
IGNpcmNsZShTa0ludFRvU2NhbGFyKGhhbGZIZWlnaHQgLSBjaGVja0luZGVudCksIG1fZmdDb2xv
cik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBIb3Jpem9udGFsU2Nyb2xsVHJhY2tCYWNr
VHlwZTogeworICAgICAgICAvLyBEcmF3IGEgYm94IHdpdGggYSBub3RjaCBhdCB0aGUgbGVmdC4K
KyAgICAgICAgaW50IGxvbmdPZmZzZXQgPSBoYWxmSGVpZ2h0IC0gbm90Y2hMb25nT2Zmc2V0Owor
ICAgICAgICBpbnQgc2hvcnRPZmZzZXQgPSBtX3dpZHRoIC0gbm90Y2hTaG9ydE9mZnNldDsKKyAg
ICAgICAgbmVzdGVkQm94ZXMobm9PZmZzZXQsIGxvbmdPZmZzZXQsIHNob3J0T2Zmc2V0LCBsb25n
T2Zmc2V0LCBtX2JnQ29sb3IsIG1fZWRnZUNvbG9yKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CisgICAgY2FzZSBIb3Jpem9udGFsU2Nyb2xsVHJhY2tGb3J3YXJkVHlwZTogeworICAgICAgICAv
LyBEcmF3IGEgYm94IHdpdGggYSBub3RjaCBhdCB0aGUgcmlnaHQuCisgICAgICAgIGludCBsb25n
T2Zmc2V0ICA9IGhhbGZIZWlnaHQgLSBub3RjaExvbmdPZmZzZXQ7CisgICAgICAgIGludCBzaG9y
dE9mZnNldCA9IG1fd2lkdGggLSBub3RjaFNob3J0T2Zmc2V0OworICAgICAgICBuZXN0ZWRCb3hl
cyhzaG9ydE9mZnNldCwgbG9uZ09mZnNldCwgbm9PZmZzZXQsIGxvbmdPZmZzZXQsIG1fYmdDb2xv
ciwgbV9mZ0NvbG9yKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBWZXJ0aWNh
bFNjcm9sbFRyYWNrQmFja1R5cGU6IHsKKyAgICAgICAgLy8gRHJhdyBhIGJveCB3aXRoIGEgbm90
Y2ggYXQgdGhlIHRvcC4KKyAgICAgICAgaW50IGxvbmdPZmZzZXQgID0gaGFsZldpZHRoIC0gbm90
Y2hMb25nT2Zmc2V0OworICAgICAgICBpbnQgc2hvcnRPZmZzZXQgPSBtX2hlaWdodCAtIG5vdGNo
U2hvcnRPZmZzZXQ7CisgICAgICAgIG5lc3RlZEJveGVzKGxvbmdPZmZzZXQsIG5vT2Zmc2V0LCBs
b25nT2Zmc2V0LCBzaG9ydE9mZnNldCwgbV9iZ0NvbG9yLCBtX2ZnQ29sb3IpOworICAgICAgICBi
cmVhazsKKyAgICB9CisKKyAgICBjYXNlIFZlcnRpY2FsU2Nyb2xsVHJhY2tGb3J3YXJkVHlwZTog
eworICAgICAgICAvLyBEcmF3IGEgYm94IHdpdGggYSBub3RjaCBhdCB0aGUgYm90dG9tLgorICAg
ICAgICBpbnQgbG9uZ09mZnNldCAgPSBoYWxmV2lkdGggLSBub3RjaExvbmdPZmZzZXQ7CisgICAg
ICAgIGludCBzaG9ydE9mZnNldCA9IG1faGVpZ2h0IC0gbm90Y2hTaG9ydE9mZnNldDsKKyAgICAg
ICAgbmVzdGVkQm94ZXMobG9uZ09mZnNldCwgc2hvcnRPZmZzZXQsIGxvbmdPZmZzZXQsIG5vT2Zm
c2V0LCBtX2JnQ29sb3IsIG1fZmdDb2xvcik7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAg
IGNhc2UgSG9yaXpvbnRhbFNjcm9sbFRodW1iVHlwZToKKyAgICAgICAgLy8gRHJhdyBhIG5hcnJv
d2VyIGJveCBvbiB0b3Agb2YgdGhlIG91dHNpZGUgYm94LgorICAgICAgICBuZXN0ZWRCb3hlcyh0
aHVtYkxvbmdJbmRlbnQsIHRodW1iU2hvcnRJbmRlbnQsIHRodW1iTG9uZ0luZGVudCwgdGh1bWJT
aG9ydEluZGVudCwgbV9iZ0NvbG9yLCBtX2JnQ29sb3IpOworICAgICAgICBicmVhazsKKworICAg
IGNhc2UgVmVydGljYWxTY3JvbGxUaHVtYlR5cGU6CisgICAgICAgIC8vIERyYXcgYSBzaG9ydGVy
IGJveCBvbiB0b3Agb2YgdGhlIG91dHNpZGUgYm94LgorICAgICAgICBuZXN0ZWRCb3hlcyh0aHVt
YlNob3J0SW5kZW50LCB0aHVtYkxvbmdJbmRlbnQsIHRodW1iU2hvcnRJbmRlbnQsIHRodW1iTG9u
Z0luZGVudCwgbV9iZ0NvbG9yLCBtX2JnQ29sb3IpOworICAgICAgICBicmVhazsKKworICAgIGNh
c2UgSG9yaXpvbnRhbFNsaWRlclRodW1iVHlwZToKKyAgICBjYXNlIFZlcnRpY2FsU2xpZGVyVGh1
bWJUeXBlOgorICAgICAgICAvLyBTbGlkZXIgdGh1bWJzIGFyZSBvdmFscy4KKyAgICAgICAgb3Zh
bChtX2JnQ29sb3IpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgSG9yaXpvbnRhbFNjcm9s
bEdyaXBUeXBlOiB7CisgICAgICAgIC8vIERyYXcgYSBob3Jpem9udGFsIGNyb3NzaGF0Y2ggZm9y
IHRoZSBncmlwLgorICAgICAgICBpbnQgbG9uZ09mZnNldCA9IGhhbGZXaWR0aCAtIGdyaXBMb25n
SW5kZW50OworICAgICAgICBsaW5lKG1fbGVmdCAgKyBncmlwTG9uZ0luZGVudCwgbV90b3AgICAg
KyBoYWxmSGVpZ2h0LAorICAgICAgICAgICAgIG1fcmlnaHQgLSBncmlwTG9uZ0luZGVudCwgbV90
b3AgICAgKyBoYWxmSGVpZ2h0LCAgICAgIG1fZmdDb2xvcik7CisgICAgICAgIGxpbmUobV9sZWZ0
ICArIGxvbmdPZmZzZXQsICAgICBtX3RvcCAgICArIGdyaXBTaG9ydEluZGVudCwKKyAgICAgICAg
ICAgICBtX2xlZnQgICsgbG9uZ09mZnNldCwgICAgIG1fYm90dG9tIC0gZ3JpcFNob3J0SW5kZW50
LCBtX2ZnQ29sb3IpOworICAgICAgICBsaW5lKG1fcmlnaHQgLSBsb25nT2Zmc2V0LCAgICAgbV90
b3AgICAgKyBncmlwU2hvcnRJbmRlbnQsCisgICAgICAgICAgICAgbV9yaWdodCAtIGxvbmdPZmZz
ZXQsICAgICBtX2JvdHRvbSAtIGdyaXBTaG9ydEluZGVudCwgbV9mZ0NvbG9yKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorCisgICAgY2FzZSBWZXJ0aWNhbFNjcm9sbEdyaXBUeXBlOiB7CisgICAg
ICAgIC8vIERyYXcgYSB2ZXJ0aWNhbCBjcm9zc2hhdGNoIGZvciB0aGUgZ3JpcC4KKyAgICAgICAg
aW50IGxvbmdPZmZzZXQgPSBoYWxmSGVpZ2h0IC0gZ3JpcExvbmdJbmRlbnQ7CisgICAgICAgIGxp
bmUobV9sZWZ0ICArIGhhbGZXaWR0aCwgICAgICAgbV90b3AgICAgKyBncmlwTG9uZ0luZGVudCwK
KyAgICAgICAgICAgICBtX2xlZnQgICsgaGFsZldpZHRoLCAgICAgICBtX2JvdHRvbSAtIGdyaXBM
b25nSW5kZW50LCBtX2ZnQ29sb3IpOworICAgICAgICBsaW5lKG1fbGVmdCAgKyBncmlwU2hvcnRJ
bmRlbnQsIG1fdG9wICAgICsgbG9uZ09mZnNldCwKKyAgICAgICAgICAgICBtX3JpZ2h0IC0gZ3Jp
cFNob3J0SW5kZW50LCBtX3RvcCAgICArIGxvbmdPZmZzZXQsICAgICBtX2ZnQ29sb3IpOworICAg
ICAgICBsaW5lKG1fbGVmdCAgKyBncmlwU2hvcnRJbmRlbnQsIG1fYm90dG9tIC0gbG9uZ09mZnNl
dCwKKyAgICAgICAgICAgICBtX3JpZ2h0IC0gZ3JpcFNob3J0SW5kZW50LCBtX2JvdHRvbSAtIGxv
bmdPZmZzZXQsICAgICBtX2ZnQ29sb3IpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBj
YXNlIExlZnRBcnJvd1R5cGU6CisgICAgICAgIC8vIERyYXcgYSBsZWZ0IGFycm93IGluc2lkZSBh
IGJveC4KKyAgICAgICAgYm94KG1faXJlY3QsIG1fYmdDb2xvcik7CisgICAgICAgIHRyaWFuZ2xl
KG1fcmlnaHQgLSBxdWFydGVyV2lkdGgsIG1fdG9wICAgICsgcXVhcnRlckhlaWdodCwKKyAgICAg
ICAgICAgICAgICAgbV9yaWdodCAtIHF1YXJ0ZXJXaWR0aCwgbV9ib3R0b20gLSBxdWFydGVySGVp
Z2h0LAorICAgICAgICAgICAgICAgICBtX2xlZnQgICsgcXVhcnRlcldpZHRoLCBtX3RvcCAgICAr
IGhhbGZIZWlnaHQsICAgIG1fZmdDb2xvcik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBS
aWdodEFycm93VHlwZToKKyAgICAgICAgLy8gRHJhdyBhIGxlZnQgYXJyb3cgaW5zaWRlIGEgYm94
LgorICAgICAgICBib3gobV9pcmVjdCwgbV9iZ0NvbG9yKTsKKyAgICAgICAgdHJpYW5nbGUobV9s
ZWZ0ICArIHF1YXJ0ZXJXaWR0aCwgbV90b3AgICAgKyBxdWFydGVySGVpZ2h0LAorICAgICAgICAg
ICAgICAgICBtX3JpZ2h0IC0gcXVhcnRlcldpZHRoLCBtX3RvcCAgICArIGhhbGZIZWlnaHQsCisg
ICAgICAgICAgICAgICAgIG1fbGVmdCAgKyBxdWFydGVyV2lkdGgsIG1fYm90dG9tIC0gcXVhcnRl
ckhlaWdodCwgbV9mZ0NvbG9yKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFVwQXJyb3dU
eXBlOgorICAgICAgICAvLyBEcmF3IGFuIHVwIGFycm93IGluc2lkZSBhIGJveC4KKyAgICAgICAg
Ym94KG1faXJlY3QsIG1fYmdDb2xvcik7CisgICAgICAgIHRyaWFuZ2xlKG1fbGVmdCAgKyBxdWFy
dGVyV2lkdGgsIG1fYm90dG9tIC0gcXVhcnRlckhlaWdodCwKKyAgICAgICAgICAgICAgICAgbV9s
ZWZ0ICArIGhhbGZXaWR0aCwgICAgbV90b3AgICAgKyBxdWFydGVySGVpZ2h0LAorICAgICAgICAg
ICAgICAgICBtX3JpZ2h0IC0gcXVhcnRlcldpZHRoLCBtX2JvdHRvbSAtIHF1YXJ0ZXJIZWlnaHQs
IG1fZmdDb2xvcik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBEb3duQXJyb3dUeXBlOgor
ICAgICAgICAvLyBEcmF3IGEgZG93biBhcnJvdyBpbnNpZGUgYSBib3guCisgICAgICAgIGJveCht
X2lyZWN0LCBtX2JnQ29sb3IpOworICAgICAgICB0cmlhbmdsZShtX2xlZnQgICsgcXVhcnRlcldp
ZHRoLCBtX3RvcCAgICArIHF1YXJ0ZXJIZWlnaHQsCisgICAgICAgICAgICAgICAgIG1fcmlnaHQg
LSBxdWFydGVyV2lkdGgsIG1fdG9wICAgICsgcXVhcnRlckhlaWdodCwKKyAgICAgICAgICAgICAg
ICAgbV9sZWZ0ICArIGhhbGZXaWR0aCwgICAgbV9ib3R0b20gLSBxdWFydGVySGVpZ2h0LCBtX2Zn
Q29sb3IpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgSG9yaXpvbnRhbFNsaWRlclRyYWNr
VHlwZTogeworICAgICAgICAvLyBEcmF3IGEgbmFycm93IHJlY3QgZm9yIHRoZSB0cmFjayBwbHVz
IGJveCBoYXRjaGVzIG9uIHRoZSBlbmRzLgorICAgICAgICBTa0lSZWN0IGxpcmVjdDsKKyAgICAg
ICAgbGlyZWN0ID0gbV9pcmVjdDsKKyAgICAgICAgbGlyZWN0Lmluc2V0KG5vT2Zmc2V0LCBoYWxm
SGVpZ2h0IC0gc2xpZGVySW5kZW50KTsKKyAgICAgICAgYm94KGxpcmVjdCwgbV9iZ0NvbG9yKTsK
KyAgICAgICAgbGluZShtX2xlZnQsICBtX3RvcCwgbV9sZWZ0LCAgbV9ib3R0b20sIG1fZWRnZUNv
bG9yKTsKKyAgICAgICAgbGluZShtX3JpZ2h0LCBtX3RvcCwgbV9yaWdodCwgbV9ib3R0b20sIG1f
ZWRnZUNvbG9yKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBWZXJ0aWNhbFNs
aWRlclRyYWNrVHlwZTogeworICAgICAgICAvLyBEcmF3IGEgbmFycm93IHJlY3QgZm9yIHRoZSB0
cmFjayBwbHVzIGJveCBoYXRjaGVzIG9uIHRoZSBlbmRzLgorICAgICAgICBTa0lSZWN0IGxpcmVj
dDsKKyAgICAgICAgbGlyZWN0ID0gbV9pcmVjdDsKKyAgICAgICAgbGlyZWN0Lmluc2V0KGhhbGZX
aWR0aCAtIHNsaWRlckluZGVudCwgbm9PZmZzZXQpOworICAgICAgICBib3gobGlyZWN0LCBtX2Jn
Q29sb3IpOworICAgICAgICBsaW5lKG1fbGVmdCwgbV90b3AsIG1fcmlnaHQsIG1fdG9wLCBtX2Vk
Z2VDb2xvcik7CisgICAgICAgIGxpbmUobV9sZWZ0LCBtX2JvdHRvbSwgbV9yaWdodCwgbV9ib3R0
b20sIG1fZWRnZUNvbG9yKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBEcm9w
RG93bkJ1dHRvblR5cGU6CisgICAgICAgIC8vIERyYXcgYSBib3ggd2l0aCBhIGJpZyBkb3duIGFy
cm93IG9uIHRvcC4KKyAgICAgICAgYm94KG1faXJlY3QsIG1fYmdDb2xvcik7CisgICAgICAgIHRy
aWFuZ2xlKG1fbGVmdCAgKyBxdWFydGVyV2lkdGgsIG1fdG9wLAorICAgICAgICAgICAgICAgICBt
X3JpZ2h0IC0gcXVhcnRlcldpZHRoLCBtX3RvcCwKKyAgICAgICAgICAgICAgICAgbV9sZWZ0ICAr
IGhhbGZXaWR0aCwgICAgbV9ib3R0b20sIG1fZmdDb2xvcik7CisgICAgICAgIGJyZWFrOworCisg
ICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIENSQVNI
KCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIG1hcmtTdGF0ZSgpOworfQorCisvLyBC
ZWNhdXNlIHJlbmRlcmluZyBhIHRleHQgZmllbGQgaXMgZGVwZW5kZW50IG9uIGlucHV0CisvLyBw
YXJhbWV0ZXJzIHRoZSBvdGhlciBjb250cm9scyBkb24ndCBoYXZlLCB3ZSByZW5kZXIgaXQgZGly
ZWN0bHkKKy8vIHJhdGhlciB0aGFuIHRyeWluZyB0byBvdmVyY29tcGxpY2F0ZSBkcmF3KCkgZnVy
dGhlci4KK3ZvaWQgV2ViVGhlbWVDb250cm9sRFJUV2luOjpkcmF3VGV4dEZpZWxkKGJvb2wgZHJh
d0VkZ2VzLCBib29sIGZpbGxDb250ZW50QXJlYSwgU2tDb2xvciBjb2xvcikKK3sKKyAgICBTa1Bh
aW50IHBhaW50OworCisgICAgaWYgKGZpbGxDb250ZW50QXJlYSkgeworICAgICAgICBwYWludC5z
ZXRDb2xvcihjb2xvcik7CisgICAgICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtGaWxsX1N0
eWxlKTsKKyAgICAgICAgbV9jYW52YXMtPmRyYXdJUmVjdChtX2lyZWN0LCBwYWludCk7CisgICAg
fQorICAgIGlmIChkcmF3RWRnZXMpIHsKKyAgICAgICAgcGFpbnQuc2V0Q29sb3IobV9lZGdlQ29s
b3IpOworICAgICAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprU3Ryb2tlX1N0eWxlKTsKKyAg
ICAgICAgbV9jYW52YXMtPmRyYXdJUmVjdChtX2lyZWN0LCBwYWludCk7CisgICAgfQorCisgICAg
bWFya1N0YXRlKCk7Cit9CisKK3ZvaWQgV2ViVGhlbWVDb250cm9sRFJUV2luOjpkcmF3UHJvZ3Jl
c3NCYXIoY29uc3QgU2tJUmVjdCYgZmlsbFJlY3QpCit7CisgICAgU2tQYWludCBwYWludDsKKwor
ICAgIHBhaW50LnNldENvbG9yKG1fYmdDb2xvcik7CisgICAgcGFpbnQuc2V0U3R5bGUoU2tQYWlu
dDo6a0ZpbGxfU3R5bGUpOworICAgIG1fY2FudmFzLT5kcmF3SVJlY3QobV9pcmVjdCwgcGFpbnQp
OworCisgICAgLy8gRW11bGF0ZSBjbGlwcGluZworICAgIFNrSVJlY3QgdG9maWxsOworICAgIHRv
ZmlsbC5pbnRlcnNlY3QobV9pcmVjdCwgZmlsbFJlY3QpOworICAgIHBhaW50LnNldENvbG9yKG1f
ZmdDb2xvcik7CisgICAgcGFpbnQuc2V0U3R5bGUoU2tQYWludDo6a0ZpbGxfU3R5bGUpOworICAg
IG1fY2FudmFzLT5kcmF3SVJlY3QodG9maWxsLCBwYWludCk7CisKKyAgICBtYXJrU3RhdGUoKTsK
K30KKwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVGhlbWVD
b250cm9sRFJUV2luLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUNv
bnRyb2xEUlRXaW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZjczMWFiMzk2MDg2ZjNhOWVkYjI2NzUwNGU3MDRh
NmMxMDE3OGYyCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vV2ViVGhlbWVDb250cm9sRFJUV2luLmgKQEAgLTAsMCArMSwyMDMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBXZWJUaGVtZUNv
bnRyb2xEUlRXaW4gaW1wbGVtZW50cyB0aGUgZ2VuZXJpYyByZW5kZXJpbmcgb2YgY29udHJvbHMK
Ky8vIG5lZWRlZCBieSBXZWJUaGVtZUVuZ2luZURSVFdpbi4gU2VlIHRoZSBjb21tZW50cyBpbiB0
aGF0IGNsYXNzCisvLyBoZWFkZXIgZmlsZSBmb3Igd2h5IHRoaXMgY2xhc3MgaXMgbmVlZGVkIGFu
ZCB1c2VkLgorLy8KKy8vIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBhIGdlbmVyaWMgc2V0IG9mIHdp
ZGdldHMgdXNpbmcgU2tpYS4gVGhlIHdpZGdldHMKKy8vIGFyZSBvcHRpbWl6ZWQgZm9yIHRlc3Rh
YmlsaXR5LCBub3QgYSBwbGVhc2luZyBhcHBlYXJhbmNlLgorLy8KKworI2lmbmRlZiBXZWJUaGVt
ZUNvbnRyb2xEUlRXaW5faAorI2RlZmluZSBXZWJUaGVtZUNvbnRyb2xEUlRXaW5faAorCisjaW5j
bHVkZSAidGhpcmRfcGFydHkvc2tpYS9pbmNsdWRlL2NvcmUvU2tDb2xvci5oIgorI2luY2x1ZGUg
InRoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS9jb3JlL1NrUmVjdC5oIgorI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgorCisvLyBTa2lhIGZvcndhcmQgZGVjbGFyYXRpb25zCitjbGFzcyBTa0Nh
bnZhczsKKworY2xhc3MgV2ViVGhlbWVDb250cm9sRFJUV2luIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShXZWJUaGVtZUNvbnRyb2xEUlRXaW4pOworcHVibGljOgorICAgIC8vIFRoaXMgbGlz
dCBvZiBzdGF0ZXMgbW9zdGx5IG1pcnJvcnMgdGhlIGxpc3QgaW4gV2ViQ29yZS9wbGF0Zm9ybS9U
aGVtZVR5cGVzLmgKKyAgICAvLyBidXQgaXMgbWFpbnRhaW5lZCBzZXBhcmF0ZWx5IHNpbmNlIHRo
YXQgaXNuJ3QgcHVibGljIGFuZCBhbHNvIHRvIG1pbmltaXplCisgICAgLy8gZGVwZW5kZW5jaWVz
LgorICAgIC8vIE5vdGUgdGhhdCB0aGUgV2ViS2l0IFRoZW1lVHlwZXMgc2VlbSB0byBpbXBseSB0
aGF0IGEgY29udHJvbCBjYW4gYmUKKyAgICAvLyBpbiBtdWx0aXBsZSBzdGF0ZXMgc2ltdWx0YW5l
b3VzbHkgYnV0IFdlYlRoZW1lRW5naW5lIG9ubHkgYWxsb3dzIGZvcgorICAgIC8vIGEgc2luZ2xl
IHN0YXRlIGF0IGEgdGltZS4KKyAgICAvLworICAgIC8vIFNvbWUgZGVmaW5pdGlvbnMgZm9yIHRo
ZSB2YXJpb3VzIHN0YXRlczoKKyAgICAvLyAgIERpc2FibGVkIC0gaW5kaWNhdGVzIHRoYXQgYSBj
b250cm9sIGNhbid0IGJlIG1vZGlmaWVkIG9yIHNlbGVjdGVkCisgICAgLy8gICAgICAgICAgICAg
IChjb3JyZXNwb25kcyB0byBIVE1MICdkaXNhYmxlZCcgYXR0cmlidXRlKQorICAgIC8vICAgUmVh
ZE9ubHkgLSBpbmRpY2F0ZXMgdGhhdCBhIGNvbnRyb2wgY2FuJ3QgYmUgbW9kaWZpZWQgYnV0IGNh
biBiZQorICAgIC8vICAgICAgICAgICAgICBzZWxlY3RlZAorICAgIC8vICAgTm9ybWFsICAgLSB0
aGUgbm9ybWFsIHN0YXRlIG9mIGNvbnRyb2wgb24gdGhlIHBhZ2Ugd2hlbiBpdCBpc24ndAorICAg
IC8vICAgICAgICAgICAgICBmb2N1c2VkIG9yIG90aGVyd2lzZSBhY3RpdmUKKyAgICAvLyAgIEhv
dCAgICAgIC0gd2hlbiB0aGUgbW91c2UgaXMgaG92ZXJpbmcgb3ZlciBhIHBhcnQgb2YgdGhlIGNv
bnRyb2wsCisgICAgLy8gICAgICAgICAgICAgIGFsbCB0aGUgb3RoZXIgcGFydHMgYXJlIGNvbnNp
ZGVyZWQgImhvdCIKKyAgICAvLyAgIEhvdmVyICAgIC0gd2hlbiB0aGUgbW91c2UgaXMgZGlyZWN0
bHkgb3ZlciBhIGNvbnRyb2wgKHRoZSBDU1MKKyAgICAvLyAgICAgICAgICAgICAgIDpob3ZlciBw
c2V1ZG8tY2xhc3MpCisgICAgLy8gICBGb2N1c2VkICAtIHdoZW4gdGhlIGNvbnRyb2wgaGFzIHRo
ZSBrZXlib2FyZCBmb2N1cworICAgIC8vICAgUHJlc3NlZCAgLSB3aGVuIHRoZSBjb250cm9sIGlz
IGJlaW5nIHRyaWdnZXJlZCAoYnkgYSBtb3VzZWRvd24gb3IKKyAgICAvLyAgICAgICAgICAgICAg
YSBrZXkgZXZlbnQpLgorICAgIC8vICAgSW5kZXRlcm1pbmF0ZSAtIHdoZW4gc2V0IHRvIGluZGV0
ZXJtaW5hdGUgKG9ubHkgZm9yIHByb2dyZXNzIGJhcikKKyAgICBlbnVtIFN0YXRlIHsKKyAgICAg
ICAgVW5rbm93blN0YXRlID0gMCwKKyAgICAgICAgRGlzYWJsZWRTdGF0ZSwKKyAgICAgICAgUmVh
ZE9ubHlTdGF0ZSwKKyAgICAgICAgTm9ybWFsU3RhdGUsCisgICAgICAgIEhvdFN0YXRlLAorICAg
ICAgICBIb3ZlclN0YXRlLAorICAgICAgICBGb2N1c2VkU3RhdGUsCisgICAgICAgIFByZXNzZWRT
dGF0ZSwKKyAgICAgICAgSW5kZXRlcm1pbmF0ZVN0YXRlCisgICAgfTsKKworICAgIC8vIFRoaXMg
bGlzdCBvZiB0eXBlcyBtb3N0bHkgbWlycm9ycyB0aGUgbGlzdCBpbgorICAgIC8vIFdlYkNvcmUv
cGxhdGZvcm0vVGhlbWVUeXBlcy5oIGJ1dCBpcyBtYWludGFpbmVkCisgICAgLy8gc2VwYXJhdGVs
eSBzaW5jZSB0aGF0IGlzbid0IHB1YmxpYyBhbmQgYWxzbyB0byBtaW5pbWl6ZSBkZXBlbmRlbmNp
ZXMuCisgICAgLy8KKyAgICAvLyBOb3RlIHRoYXQgd2hhdCB0aGUgdXNlciBtaWdodCB0aGluayBv
ZiBhcyBhIHNpbmdsZSBjb250cm9sIGNhbiBiZQorICAgIC8vIG1hZGUgdXAgb2YgbXVsdGlwbGUg
cGFydHMuIEZvciBleGFtcGxlLCBhIHNpbmdsZSBzY3JvbGwgYmFyIGNvbnRhaW5zCisgICAgLy8g
c2l4IGNsaWNrYWJsZSBwYXJ0cyAtIHR3byBhcnJvd3MsIHRoZSAidGh1bWIiIGluZGljYXRpbmcg
dGhlIGN1cnJlbnQKKyAgICAvLyBwb3NpdGlvbiBvbiB0aGUgYmFyLCB0aGUgb3RoZXIgdHdvIHBh
cnRzIG9mIHRoZSBiYXIgKGJlZm9yZSBhbmQgYWZ0ZXIKKyAgICAvLyB0aGUgdGh1bWIpIGFuZCB0
aGUgImdyaXBwZXIiIG9uIHRoZSB0aHVtYiBpdHNlbGYuCisgICAgLy8KKyAgICBlbnVtIFR5cGUg
eworICAgICAgICBVbmtub3duVHlwZSA9IDAsCisgICAgICAgIFRleHRGaWVsZFR5cGUsCisgICAg
ICAgIFB1c2hCdXR0b25UeXBlLAorICAgICAgICBVbmNoZWNrZWRCb3hUeXBlLAorICAgICAgICBD
aGVja2VkQm94VHlwZSwKKyAgICAgICAgSW5kZXRlcm1pbmF0ZUNoZWNrYm94VHlwZSwKKyAgICAg
ICAgVW5jaGVja2VkUmFkaW9UeXBlLAorICAgICAgICBDaGVja2VkUmFkaW9UeXBlLAorICAgICAg
ICBIb3Jpem9udGFsU2Nyb2xsVHJhY2tCYWNrVHlwZSwKKyAgICAgICAgSG9yaXpvbnRhbFNjcm9s
bFRyYWNrRm9yd2FyZFR5cGUsCisgICAgICAgIEhvcml6b250YWxTY3JvbGxUaHVtYlR5cGUsCisg
ICAgICAgIEhvcml6b250YWxTY3JvbGxHcmlwVHlwZSwKKyAgICAgICAgVmVydGljYWxTY3JvbGxU
cmFja0JhY2tUeXBlLAorICAgICAgICBWZXJ0aWNhbFNjcm9sbFRyYWNrRm9yd2FyZFR5cGUsCisg
ICAgICAgIFZlcnRpY2FsU2Nyb2xsVGh1bWJUeXBlLAorICAgICAgICBWZXJ0aWNhbFNjcm9sbEdy
aXBUeXBlLAorICAgICAgICBMZWZ0QXJyb3dUeXBlLAorICAgICAgICBSaWdodEFycm93VHlwZSwK
KyAgICAgICAgVXBBcnJvd1R5cGUsCisgICAgICAgIERvd25BcnJvd1R5cGUsCisgICAgICAgIEhv
cml6b250YWxTbGlkZXJUcmFja1R5cGUsCisgICAgICAgIEhvcml6b250YWxTbGlkZXJUaHVtYlR5
cGUsCisgICAgICAgIFZlcnRpY2FsU2xpZGVyVHJhY2tUeXBlLAorICAgICAgICBWZXJ0aWNhbFNs
aWRlclRodW1iVHlwZSwKKyAgICAgICAgRHJvcERvd25CdXR0b25UeXBlLAorICAgICAgICBQcm9n
cmVzc0JhclR5cGUKKyAgICB9OworCisgICAgLy8gQ29uc3RydWN0cyBhIGNvbnRyb2wgb2YgdGhl
IGdpdmVuIHNpemUsIHR5cGUgYW5kIHN0YXRlIHRvIGRyYXcKKyAgICAvLyBvbiB0byB0aGUgZ2l2
ZW4gY2FudmFzLgorICAgIFdlYlRoZW1lQ29udHJvbERSVFdpbihTa0NhbnZhcyosIGNvbnN0IFNr
SVJlY3QmLCBUeXBlLCBTdGF0ZSk7CisgICAgfldlYlRoZW1lQ29udHJvbERSVFdpbigpOworCisg
ICAgLy8gRHJhd3MgdGhlIGNvbnRyb2wuCisgICAgdm9pZCBkcmF3KCk7CisKKyAgICAvLyBVc2Ug
dGhpcyBmb3IgVGV4dEZpZWxkIGNvbnRyb2xzIGluc3RlYWQsIGJlY2F1c2UgdGhlIGxvZ2ljCisg
ICAgLy8gZm9yIGRyYXdpbmcgdGhlbSBpcyBkZXBlbmRlbnQgb24gd2hhdCBXZWJLaXQgdGVsbHMg
dXMgdG8gZG8uCisgICAgLy8gSWYgZHJhd0VkZ2VzIGlzIHRydWUsIGRyYXcgYW4gZWRnZSBhcm91
bmQgdGhlIGNvbnRyb2wuIElmCisgICAgLy8gZmlsbENvbnRlbnRBcmVhIGlzIHRydWUsIGZpbGwg
dGhlIGNvbnRlbnQgYXJlYSB3aXRoIHRoZSBnaXZlbiBjb2xvci4KKyAgICB2b2lkIGRyYXdUZXh0
RmllbGQoYm9vbCBkcmF3RWRnZXMsIGJvb2wgZmlsbENvbnRlbnRBcmVhLCBTa0NvbG9yKTsKKwor
ICAgIC8vIFVzZSB0aGlzIGZvciBkcmF3aW5nIFByb2dyZXNzQmFyIGNvbnRyb2xzIGluc3RlYWQs
IHNpbmNlIHdlCisgICAgLy8gbmVlZCB0byBrbm93IHRoZSByZWN0IHRvIGZpbGwgaW5zaWRlIHRo
ZSBiYXIuCisgICAgdm9pZCBkcmF3UHJvZ3Jlc3NCYXIoY29uc3QgU2tJUmVjdCYgZmlsbFJlY3Qp
OworCitwcml2YXRlOgorICAgIC8vIERyYXdzIGEgYm94IG9mIHNpemUgc3BlY2lmaWVkIGJ5IGly
ZWN0LCBmaWxsZWQgd2l0aCB0aGUgZ2l2ZW4gY29sb3IuCisgICAgLy8gVGhlIGJveCB3aWxsIGhh
dmUgYSBib3JkZXIgZHJhd24gaW4gdGhlIGRlZmF1bHQgZWRnZSBjb2xvci4KKyAgICB2b2lkIGJv
eChjb25zdCBTa0lSZWN0JiBpcmVjdCwgU2tDb2xvcik7CisKKworICAgIC8vIERyYXdzIGEgdHJp
YW5nbGUgb2Ygc2l6ZSBzcGVjaWZpZWQgYnkgdGhlIHRocmVlIHBhaXJzIG9mIGNvb3JkaW5hdGVz
LAorICAgIC8vIGZpbGxlZCB3aXRoIHRoZSBnaXZlbiBjb2xvci4gVGhlIGJveCB3aWxsIGhhdmUg
YW4gZWRnZSBkcmF3biBpbiB0aGUKKyAgICAvLyBkZWZhdWx0IGVkZ2UgY29sb3IuCisgICAgdm9p
ZCB0cmlhbmdsZShpbnQgeDAsIGludCB5MCwgaW50IHgxLCBpbnQgeTEsIGludCB4MiwgaW50IHky
LCBTa0NvbG9yKTsKKworICAgIC8vIERyYXdzIGEgcmVjdGFuZ2xlIHRoZSBzaXplIG9mIHRoZSBj
b250cm9sIHdpdGggcm91bmRlZCBjb3JuZXJzLCBmaWxsZWQKKyAgICAvLyB3aXRoIHRoZSBzcGVj
aWZpZWQgY29sb3IgKGFuZCB3aXRoIGEgYm9yZGVyIGluIHRoZSBkZWZhdWx0IGVkZ2UgY29sb3Ip
LgorICAgIHZvaWQgcm91bmRSZWN0KFNrQ29sb3IpOworCisgICAgLy8gRHJhd3MgYW4gb3ZhbCB0
aGUgc2l6ZSBvZiB0aGUgY29udHJvbCwgZmlsbGVkIHdpdGggdGhlIHNwZWNpZmllZCBjb2xvcgor
ICAgIC8vIGFuZCB3aXRoIGEgYm9yZGVyIGluIHRoZSBkZWZhdWx0IGVkZ2UgY29sb3IuCisgICAg
dm9pZCBvdmFsKFNrQ29sb3IpOworCisgICAgLy8gRHJhd3MgYSBjaXJjbGUgY2VudGVyZWQgaW4g
dGhlIGNvbnRyb2wgd2l0aCB0aGUgc3BlY2lmaWVkIHJhZGl1cywKKyAgICAvLyBmaWxsZWQgd2l0
aCB0aGUgc3BlY2lmaWVkIGNvbG9yLCBhbmQgd2l0aCBhIGJvcmRlciBkcmF3IGluIHRoZQorICAg
IC8vIGRlZmF1bHQgZWRnZSBjb2xvci4KKyAgICB2b2lkIGNpcmNsZShTa1NjYWxhciByYWRpdXMs
IFNrQ29sb3IpOworCisgICAgLy8gRHJhd3MgYSBib3ggdGhlIHNpemUgb2YgdGhlIGNvbnRyb2ws
IGZpbGxlZCB3aXRoIHRoZSBvdXRlckNvbG9yIGFuZAorICAgIC8vIHdpdGggYSBib3JkZXIgaW4g
dGhlIGRlZmF1bHQgZWRnZSBjb2xvciwgYW5kIHRoZW4gZHJhd3MgYW5vdGhlciBib3gKKyAgICAv
LyBpbmRlbnRlZCBvbiBhbGwgZm91ciBzaWRlcyBieSB0aGUgc3BlY2lmaWVkIGFtb3VudHMsIGZp
bGxlZCB3aXRoIHRoZQorICAgIC8vIGlubmVyIGNvbG9yIGFuZCB3aXRoIGEgYm9yZGVyIGluIHRo
ZSBkZWZhdWx0IGVkZ2UgY29sb3IuCisgICAgdm9pZCBuZXN0ZWRCb3hlcyhpbnQgaW5kZW50TGVm
dCwKKyAgICAgICAgICAgICAgICAgICAgIGludCBpbmRlbnRUb3AsCisgICAgICAgICAgICAgICAg
ICAgICBpbnQgaW5kZW50UmlnaHQsCisgICAgICAgICAgICAgICAgICAgICBpbnQgaW5kZW50Qm90
dG9tLAorICAgICAgICAgICAgICAgICAgICAgU2tDb2xvciBvdXRlckNvbG9yLAorICAgICAgICAg
ICAgICAgICAgICAgU2tDb2xvciBpbm5lckNvbG9yKTsKKworICAgIC8vIERyYXdzIGEgbGluZSBi
ZXR3ZWVuIHRoZSB0d28gcG9pbnRzIGluIHRoZSBnaXZlbiBjb2xvci4KKyAgICB2b2lkIGxpbmUo
aW50IHgwLCBpbnQgeTAsIGludCB4MSwgaW50IHkxLCBTa0NvbG9yKTsKKworICAgIC8vIERyYXdz
IGEgZGlzdGluY3RpdmUgbWFyayBvbiB0aGUgY29udHJvbCBmb3IgZWFjaCBzdGF0ZSwgc28gdGhh
dCB0aGUKKyAgICAvLyBzdGF0ZSBvZiB0aGUgY29udHJvbCBjYW4gYmUgZGV0ZXJtaW5lZCB3aXRo
b3V0IG5lZWRpbmcgdG8ga25vdyB3aGljaAorICAgIC8vIGNvbG9yIGlzIHdoaWNoLgorICAgIHZv
aWQgbWFya1N0YXRlKCk7CisKKyAgICBTa0NhbnZhcyogbV9jYW52YXM7CisgICAgY29uc3QgU2tJ
UmVjdCBtX2lyZWN0OworICAgIGNvbnN0IFR5cGUgbV90eXBlOworICAgIGNvbnN0IFN0YXRlIG1f
c3RhdGU7CisgICAgY29uc3QgU2tDb2xvciBtX2VkZ2VDb2xvcjsKKyAgICBjb25zdCBTa0NvbG9y
IG1fYmdDb2xvcjsKKyAgICBjb25zdCBTa0NvbG9yIG1fZmdDb2xvcjsKKworICAgIC8vIFRoZSBm
b2xsb3dpbmcgYXJlIGNvbnZlbmllbmNlIGFjY2Vzc29ycyBmb3IgbV9pcmVjdC4KKyAgICBjb25z
dCBpbnQgbV9sZWZ0OworICAgIGNvbnN0IGludCBtX3JpZ2h0OworICAgIGNvbnN0IGludCBtX3Rv
cDsKKyAgICBjb25zdCBpbnQgbV9ib3R0b207CisgICAgY29uc3QgaW50IG1fd2lkdGg7CisgICAg
Y29uc3QgaW50IG1faGVpZ2h0OworfTsKKworI2VuZGlmIC8vIFdlYlRoZW1lQ29udHJvbERSVFdp
bl9oCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUVu
Z2luZURSVE1hYy5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVGhlbWVFbmdp
bmVEUlRNYWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTBmZTY2Yzk1MjdmMDFhNTQzMTA2Nzk1MmViZWYyOTQ5
MDkxNGFkCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViVGhlbWVFbmdpbmVEUlRNYWMuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRoaXMgaW1wbGVtZW50cyB0aGUgV2Vi
VGhlbWVFbmdpbmUgQVBJIGluIHN1Y2ggYSB3YXkgdGhhdCB3ZSBtYXRjaCB0aGUgTWFjCisvLyBw
b3J0IHJlbmRlcmluZyBtb3JlIHRoYW4gdXN1YWwgQ2hyb21pdW0gcGF0aCwgdGh1cyBhbGxvd2lu
ZyB1cyB0byBzaGFyZQorLy8gbW9yZSBwaXhlbCBiYXNlbGluZXMuCisKKyNpZm5kZWYgV2ViVGhl
bWVFbmdpbmVEUlRNYWNfaAorI2RlZmluZSBXZWJUaGVtZUVuZ2luZURSVE1hY19oCisKKyNpbmNs
dWRlIDxwdWJsaWMvbWFjL1dlYlRoZW1lRW5naW5lLmg+CisKK2NsYXNzIFdlYlRoZW1lRW5naW5l
RFJUTWFjIDogcHVibGljIFdlYktpdDo6V2ViVGhlbWVFbmdpbmUgeworcHVibGljOgorICAgIHZp
cnR1YWwgdm9pZCBwYWludFNjcm9sbGJhclRodW1iKAorICAgICAgICBXZWJLaXQ6OldlYkNhbnZh
cyosCisgICAgICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0YXRlLAorICAgICAgICBXZWJL
aXQ6OldlYlRoZW1lRW5naW5lOjpTaXplLAorICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlJlY3Qm
LAorICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTY3JvbGxiYXJJbmZvJik7
CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIHBhaW50SElUaGVtZVNjcm9sbGJhclRodW1i
KAorICAgICAgICBXZWJLaXQ6OldlYkNhbnZhcyosCisgICAgICAgIFdlYktpdDo6V2ViVGhlbWVF
bmdpbmU6OlN0YXRlLAorICAgICAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTaXplLAorICAg
ICAgICBjb25zdCBXZWJLaXQ6OldlYlJlY3QmLAorICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlRo
ZW1lRW5naW5lOjpTY3JvbGxiYXJJbmZvJik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50TlNTY3Jv
bGxlclNjcm9sbGJhclRodW1iKAorICAgICAgICBXZWJLaXQ6OldlYkNhbnZhcyosCisgICAgICAg
IFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0YXRlLAorICAgICAgICBXZWJLaXQ6OldlYlRoZW1l
RW5naW5lOjpTaXplLAorICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlJlY3QmLAorICAgICAgICBj
b25zdCBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTY3JvbGxiYXJJbmZvJik7Cit9OworCisjZW5k
aWYgLy8gV2ViVGhlbWVFbmdpbmVEUlRNYWNfaApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vV2ViVGhlbWVFbmdpbmVEUlRNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJUaGVtZUVuZ2luZURSVE1hYy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NjZkYmFj
YTgxMjY3YzYzMjZhYzE5MTk0YTY0OTMzZDlkMjFkYWJhCi0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVGhlbWVFbmdpbmVEUlRNYWMubW0KQEAgLTAs
MCArMSwxOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiV2ViVGhlbWVFbmdpbmVEUlRNYWMuaCIKKworI2luY2x1ZGUg
PHB1YmxpYy9XZWJDYW52YXMuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViUmVjdC5oPgorI2luY2x1
ZGUgInNraWEvZXh0L3NraWFfdXRpbHNfbWFjLmgiCisjaW1wb3J0IDxBcHBLaXQvTlNBZmZpbmVU
cmFuc2Zvcm0uaD4KKyNpbXBvcnQgPEFwcEtpdC9OU0dyYXBoaWNzQ29udGV4dC5oPgorI2ltcG9y
dCA8QXBwS2l0L05TU2Nyb2xsZXIuaD4KKyNpbXBvcnQgPEFwcEtpdC9OU1dpbmRvdy5oPgorI2lu
Y2x1ZGUgPENhcmJvbi9DYXJib24uaD4KKwordXNpbmcgV2ViS2l0OjpXZWJDYW52YXM7Cit1c2lu
ZyBXZWJLaXQ6OldlYlJlY3Q7Cit1c2luZyBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOworCisvLyBX
ZSBjYW4ndCBkaXJlY3RseSB0ZWxsIHRoZSBOU1Njcm9sbGVyIHRvIGRyYXcgaXRzZWxmIGFzIGFj
dGl2ZSBvciBpbmFjdGl2ZSwKKy8vIGluc3RlYWQgd2UgaGF2ZSB0byBtYWtlIGl0IGEgY2hpbGQg
b2YgYW4gKGluKWFjdGl2ZSB3aW5kb3cuIFRoaXMgY2xhc3MgbGV0cworLy8gdXMgZmFrZSB0aGF0
IHBhcmVudCB3aW5kb3cuCitAaW50ZXJmYWNlIEZha2VBY3RpdmVXaW5kb3cgOiBOU1dpbmRvdyB7
CitAcHJpdmF0ZQorICAgIEJPT0wgaGFzQWN0aXZlQ29udHJvbHM7Cit9CisrIChOU1dpbmRvdyop
YWx3YXlzQWN0aXZlV2luZG93OworKyAoTlNXaW5kb3cqKWFsd2F5c0luYWN0aXZlV2luZG93Owor
LSAoaWQpaW5pdFdpdGhBY3RpdmVDb250cm9sczooQk9PTClfaGFzQWN0aXZlQ29udHJvbHM7Cist
IChCT09MKV9oYXNBY3RpdmVDb250cm9sczsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIEZha2VB
Y3RpdmVXaW5kb3cKKworc3RhdGljIE5TV2luZG93KiBhbHdheXNBY3RpdmVXaW5kb3cgPSBuaWw7
CitzdGF0aWMgTlNXaW5kb3cqIGFsd2F5c0luYWN0aXZlV2luZG93ID0gbmlsOworCisrIChOU1dp
bmRvdyopYWx3YXlzQWN0aXZlV2luZG93Cit7CisgICAgaWYgKGFsd2F5c0FjdGl2ZVdpbmRvdyA9
PSBuaWwpCisgICAgICAgIGFsd2F5c0FjdGl2ZVdpbmRvdyA9IFtbc2VsZiBhbGxvY10gaW5pdFdp
dGhBY3RpdmVDb250cm9sczpZRVNdOworICAgIHJldHVybiBhbHdheXNBY3RpdmVXaW5kb3c7Cit9
CisKKysgKE5TV2luZG93KilhbHdheXNJbmFjdGl2ZVdpbmRvdworeworICAgIGlmIChhbHdheXNJ
bmFjdGl2ZVdpbmRvdyA9PSBuaWwpCisgICAgICAgIGFsd2F5c0luYWN0aXZlV2luZG93ID0gW1tz
ZWxmIGFsbG9jXSBpbml0V2l0aEFjdGl2ZUNvbnRyb2xzOk5PXTsKKyAgICByZXR1cm4gYWx3YXlz
SW5hY3RpdmVXaW5kb3c7Cit9CisKKy0gKGlkKWluaXRXaXRoQWN0aXZlQ29udHJvbHM6KEJPT0wp
X2hhc0FjdGl2ZUNvbnRyb2xzCit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBoYXNB
Y3RpdmVDb250cm9scyA9IF9oYXNBY3RpdmVDb250cm9sczsKKyAgICByZXR1cm4gc2VsZjsKK30K
KworLSAoQk9PTClfaGFzQWN0aXZlQ29udHJvbHMKK3sKKyAgICByZXR1cm4gaGFzQWN0aXZlQ29u
dHJvbHM7Cit9CisKK0BlbmQKKwordm9pZCBXZWJUaGVtZUVuZ2luZURSVE1hYzo6cGFpbnRTY3Jv
bGxiYXJUaHVtYigKKyAgICBXZWJDYW52YXMqIGNhbnZhcywKKyAgICBXZWJUaGVtZUVuZ2luZTo6
U3RhdGUgc3RhdGUsCisgICAgV2ViVGhlbWVFbmdpbmU6OlNpemUgc2l6ZSwKKyAgICBjb25zdCBX
ZWJSZWN0JiByZWN0LAorICAgIGNvbnN0IFdlYlRoZW1lRW5naW5lOjpTY3JvbGxiYXJJbmZvJiBz
Y3JvbGxiYXJJbmZvKQoreworICAgIC8vIFRvIG1hdGNoIHRoZSBNYWMgcG9ydCwgd2Ugc3RpbGwg
dXNlIEhJVGhlbWUgZm9yIGlubmVyIHNjcm9sbGJhcnMuCisgICAgaWYgKHNjcm9sbGJhckluZm8u
cGFyZW50ID09IFdlYlRoZW1lRW5naW5lOjpTY3JvbGxiYXJQYXJlbnRSZW5kZXJMYXllcikKKyAg
ICAgICAgcGFpbnRISVRoZW1lU2Nyb2xsYmFyVGh1bWIoY2FudmFzLCBzdGF0ZSwgc2l6ZSwgcmVj
dCwgc2Nyb2xsYmFySW5mbyk7CisgICAgZWxzZQorICAgICAgICBwYWludE5TU2Nyb2xsZXJTY3Jv
bGxiYXJUaHVtYihjYW52YXMsIHN0YXRlLCBzaXplLCByZWN0LCBzY3JvbGxiYXJJbmZvKTsKK30K
Kworc3RhdGljIFRoZW1lVHJhY2tFbmFibGVTdGF0ZSBzdGF0ZVRvSElFbmFibGVTdGF0ZShXZWJU
aGVtZUVuZ2luZTo6U3RhdGUgc3RhdGUpCit7CisgICAgc3dpdGNoIChzdGF0ZSkgeworICAgIGNh
c2UgV2ViVGhlbWVFbmdpbmU6OlN0YXRlRGlzYWJsZWQ6CisgICAgICAgIHJldHVybiBrVGhlbWVU
cmFja0Rpc2FibGVkOworICAgIGNhc2UgV2ViVGhlbWVFbmdpbmU6OlN0YXRlSW5hY3RpdmU6Cisg
ICAgICAgIHJldHVybiBrVGhlbWVUcmFja0luYWN0aXZlOworICAgIGRlZmF1bHQ6CisgICAgICAg
IHJldHVybiBrVGhlbWVUcmFja0FjdGl2ZTsKKyAgICB9Cit9CisKKy8vIER1cGxpY2F0ZWQgZnJv
bSB3ZWJraXQvZ2x1ZS93ZWJ0aGVtZWVuZ2luZV9pbXBsX21hYy5jYyBpbiB0aGUgZG93bnN0cmVh
bQorLy8gQ2hyb21pdW0gV2ViVGhlbWVFbmdpbmUgaW1wbGVtZW50YXRpb24uCit2b2lkIFdlYlRo
ZW1lRW5naW5lRFJUTWFjOjpwYWludEhJVGhlbWVTY3JvbGxiYXJUaHVtYigKKyAgICBXZWJDYW52
YXMqIGNhbnZhcywKKyAgICBXZWJUaGVtZUVuZ2luZTo6U3RhdGUgc3RhdGUsCisgICAgV2ViVGhl
bWVFbmdpbmU6OlNpemUgc2l6ZSwKKyAgICBjb25zdCBXZWJSZWN0JiByZWN0LAorICAgIGNvbnN0
IFdlYlRoZW1lRW5naW5lOjpTY3JvbGxiYXJJbmZvJiBzY3JvbGxiYXJJbmZvKQoreworICAgIEhJ
VGhlbWVUcmFja0RyYXdJbmZvIHRyYWNrSW5mbzsKKyAgICB0cmFja0luZm8udmVyc2lvbiA9IDA7
CisgICAgdHJhY2tJbmZvLmtpbmQgPSBzaXplID09IFdlYlRoZW1lRW5naW5lOjpTaXplUmVndWxh
ciA/IGtUaGVtZU1lZGl1bVNjcm9sbEJhciA6IGtUaGVtZVNtYWxsU2Nyb2xsQmFyOworICAgIHRy
YWNrSW5mby5ib3VuZHMgPSBDR1JlY3RNYWtlKHJlY3QueCwgcmVjdC55LCByZWN0LndpZHRoLCBy
ZWN0LmhlaWdodCk7CisgICAgdHJhY2tJbmZvLm1pbiA9IDA7CisgICAgdHJhY2tJbmZvLm1heCA9
IHNjcm9sbGJhckluZm8ubWF4VmFsdWU7CisgICAgdHJhY2tJbmZvLnZhbHVlID0gc2Nyb2xsYmFy
SW5mby5jdXJyZW50VmFsdWU7CisgICAgdHJhY2tJbmZvLnRyYWNrSW5mby5zY3JvbGxiYXIudmll
d3NpemUgPSBzY3JvbGxiYXJJbmZvLnZpc2libGVTaXplOworICAgIHRyYWNrSW5mby5hdHRyaWJ1
dGVzID0gMDsKKyAgICBpZiAoc2Nyb2xsYmFySW5mby5vcmllbnRhdGlvbiA9PSBXZWJUaGVtZUVu
Z2luZTo6U2Nyb2xsYmFyT3JpZW50YXRpb25Ib3Jpem9udGFsKQorICAgICAgICB0cmFja0luZm8u
YXR0cmlidXRlcyB8PSBrVGhlbWVUcmFja0hvcml6b250YWw7CisKKyAgICB0cmFja0luZm8uZW5h
YmxlU3RhdGUgPSBzdGF0ZVRvSElFbmFibGVTdGF0ZShzdGF0ZSk7CisKKyAgICB0cmFja0luZm8u
dHJhY2tJbmZvLnNjcm9sbGJhci5wcmVzc1N0YXRlID0KKyAgICAgICAgc3RhdGUgPT0gV2ViVGhl
bWVFbmdpbmU6OlN0YXRlUHJlc3NlZCA/IGtUaGVtZVRodW1iUHJlc3NlZCA6IDA7CisgICAgdHJh
Y2tJbmZvLmF0dHJpYnV0ZXMgfD0gKGtUaGVtZVRyYWNrU2hvd1RodW1iIHwga1RoZW1lVHJhY2tI
aWRlVHJhY2spOworICAgIGdmeDo6U2tpYUJpdExvY2tlciBiaXRMb2NrZXIoY2FudmFzKTsKKyAg
ICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gYml0TG9ja2VyLmNnQ29udGV4dCgpOworICAgIEhJ
VGhlbWVEcmF3VHJhY2soJnRyYWNrSW5mbywgMCwgY2dDb250ZXh0LCBrSElUaGVtZU9yaWVudGF0
aW9uTm9ybWFsKTsKK30KKwordm9pZCBXZWJUaGVtZUVuZ2luZURSVE1hYzo6cGFpbnROU1Njcm9s
bGVyU2Nyb2xsYmFyVGh1bWIoCisgICAgV2ViQ2FudmFzKiBjYW52YXMsCisgICAgV2ViVGhlbWVF
bmdpbmU6OlN0YXRlIHN0YXRlLAorICAgIFdlYlRoZW1lRW5naW5lOjpTaXplIHNpemUsCisgICAg
Y29uc3QgV2ViUmVjdCYgcmVjdCwKKyAgICBjb25zdCBXZWJUaGVtZUVuZ2luZTo6U2Nyb2xsYmFy
SW5mbyYgc2Nyb2xsYmFySW5mbykKK3sKKyAgICBbTlNHcmFwaGljc0NvbnRleHQgc2F2ZUdyYXBo
aWNzU3RhdGVdOworICAgIE5TU2Nyb2xsZXIqIHNjcm9sbGVyID0gW1tOU1Njcm9sbGVyIGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QocmVjdC54LCByZWN0LnksIHJlY3Qud2lkdGgsIHJl
Y3QuaGVpZ2h0KV07CisgICAgW3Njcm9sbGVyIHNldEVuYWJsZWQ6c3RhdGUgIT0gV2ViVGhlbWVF
bmdpbmU6OlN0YXRlRGlzYWJsZWRdOworICAgIGlmIChzdGF0ZSA9PSBXZWJUaGVtZUVuZ2luZTo6
U3RhdGVJbmFjdGl2ZSkKKyAgICAgICAgW1tbRmFrZUFjdGl2ZVdpbmRvdyBhbHdheXNJbmFjdGl2
ZVdpbmRvd10gY29udGVudFZpZXddIGFkZFN1YnZpZXc6c2Nyb2xsZXJdOworICAgIGVsc2UKKyAg
ICAgICAgW1tbRmFrZUFjdGl2ZVdpbmRvdyBhbHdheXNBY3RpdmVXaW5kb3ddIGNvbnRlbnRWaWV3
XSBhZGRTdWJ2aWV3OnNjcm9sbGVyXTsKKworICAgIFtzY3JvbGxlciBzZXRDb250cm9sU2l6ZTpz
aXplID09IFdlYlRoZW1lRW5naW5lOjpTaXplUmVndWxhciA/IE5TUmVndWxhckNvbnRyb2xTaXpl
IDogTlNTbWFsbENvbnRyb2xTaXplXTsKKworICAgIGRvdWJsZSB2YWx1ZSA9IGRvdWJsZShzY3Jv
bGxiYXJJbmZvLmN1cnJlbnRWYWx1ZSkgLyBkb3VibGUoc2Nyb2xsYmFySW5mby5tYXhWYWx1ZSk7
CisgICAgW3Njcm9sbGVyIHNldERvdWJsZVZhbHVlOiB2YWx1ZV07CisKKyAgICBmbG9hdCBrbm9i
UHJvcG9ydGlvbiA9IGZsb2F0KHNjcm9sbGJhckluZm8udmlzaWJsZVNpemUpIC8gZmxvYXQoc2Ny
b2xsYmFySW5mby50b3RhbFNpemUpOworICAgIFtzY3JvbGxlciBzZXRLbm9iUHJvcG9ydGlvbjog
a25vYlByb3BvcnRpb25dOworCisgICAgZ2Z4OjpTa2lhQml0TG9ja2VyIGJpdExvY2tlcihjYW52
YXMpOworICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBiaXRMb2NrZXIuY2dDb250ZXh0KCk7
CisgICAgTlNHcmFwaGljc0NvbnRleHQqIG5zR3JhcGhpY3NDb250ZXh0ID0gW05TR3JhcGhpY3ND
b250ZXh0IGdyYXBoaWNzQ29udGV4dFdpdGhHcmFwaGljc1BvcnQ6Y2dDb250ZXh0IGZsaXBwZWQ6
WUVTXTsKKyAgICBbTlNHcmFwaGljc0NvbnRleHQgc2V0Q3VycmVudENvbnRleHQ6bnNHcmFwaGlj
c0NvbnRleHRdOworCisgICAgLy8gRGVzcGl0ZSBwYXNzaW5nIGluIGZyYW1lUmVjdCgpIHRvIHRo
ZSBzY3JvbGxlciwgaXQgYWx3YXlzIGRyYXdzIGF0ICgwLCAwKS4KKyAgICAvLyBGb3JjZSBpdCB0
byBkcmF3IGluIHRoZSByaWdodCBsb2NhdGlvbiBieSB0cmFuc2xhdGluZyB0aGUgd2hvbGUgZ3Jh
cGhpY3MKKyAgICAvLyBjb250ZXh0LgorICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY2dDb250ZXh0
KTsKKyAgICBOU0FmZmluZVRyYW5zZm9ybSAqdHJhbnNmb3JtID0gW05TQWZmaW5lVHJhbnNmb3Jt
IHRyYW5zZm9ybV07CisgICAgW3RyYW5zZm9ybSB0cmFuc2xhdGVYQnk6cmVjdC54IHlCeTpyZWN0
LnldOworICAgIFt0cmFuc2Zvcm0gY29uY2F0XTsKKworICAgIFtzY3JvbGxlciBkcmF3S25vYl07
CisgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjZ0NvbnRleHQpOworCisgICAgW3Njcm9sbGVy
IHJlbGVhc2VdOworCisgICAgW05TR3JhcGhpY3NDb250ZXh0IHJlc3RvcmVHcmFwaGljc1N0YXRl
XTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1l
RW5naW5lRFJUV2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1l
RW5naW5lRFJUV2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTBjNDkwMjUxYzIzNGNiZjExYzM2ZmJjZmY2
NDkzOWRhODBiMDQ0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViVGhlbWVFbmdpbmVEUlRXaW4uY3BwCkBAIC0wLDAgKzEsNzkzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlRoZW1lRW5naW5lRFJUV2luLmgiCisKKyNpbmNsdWRl
ICJXZWJUaGVtZUNvbnRyb2xEUlRXaW4uaCIKKyNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9za2lhL2lu
Y2x1ZGUvY29yZS9Ta1JlY3QuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViUmVjdC5oPgorCisvLyBB
bHRob3VnaCBhbGwgdGhpcyBjb2RlIGlzIGdlbmVyaWMsIHdlIGluY2x1ZGUgdGhlc2UgaGVhZGVy
cworLy8gdG8gcHVsbCBpbiB0aGUgV2luZG93cyAjZGVmaW5lcyBmb3IgdGhlIHBhcnRzIGFuZCBz
dGF0ZXMgb2YKKy8vIHRoZSBjb250cm9scy4KKyNpbmNsdWRlIDx2c3N0eWxlLmg+CisjaW5jbHVk
ZSA8d2luZG93cy5oPgorCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKwordXNpbmcgbmFt
ZXNwYWNlIFdlYktpdDsKKworLy8gV2UgZGVmaW5lIHRoaXMgZm9yIGNsYXJpdHksIGFsdGhvdWdo
IHRoZXJlIHJlYWxseSBzaG91bGQgYmUgYSBERkNTX05PUk1BTCBpbiB3aW51c2VyLmguCitzdGF0
aWMgY29uc3QgaW50IGRmY3NOb3JtYWwgPSAweDAwMDA7CisKK3N0YXRpYyBTa0lSZWN0IHdlYlJl
Y3RUb1NrSVJlY3QoY29uc3QgV2ViUmVjdCYgd2ViUmVjdCkKK3sKKyAgICBTa0lSZWN0IGlyZWN0
OworICAgIGlyZWN0LnNldCh3ZWJSZWN0LngsIHdlYlJlY3QueSwgd2ViUmVjdC54ICsgd2ViUmVj
dC53aWR0aCAtIDEsIHdlYlJlY3QueSArIHdlYlJlY3QuaGVpZ2h0IC0gMSk7CisgICAgcmV0dXJu
IGlyZWN0OworfQorCitzdGF0aWMgdm9pZCBkcmF3Q29udHJvbChXZWJDYW52YXMqIGNhbnZhcywK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlJlY3QmIHJlY3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlR5cGUgY3R5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlN0YXRlIGNzdGF0ZSkKK3sK
KyAgICBXZWJUaGVtZUNvbnRyb2xEUlRXaW4gY29udHJvbChjYW52YXMsIHdlYlJlY3RUb1NrSVJl
Y3QocmVjdCksIGN0eXBlLCBjc3RhdGUpOworICAgIGNvbnRyb2wuZHJhdygpOworfQorCitzdGF0
aWMgdm9pZCBkcmF3VGV4dEZpZWxkKFdlYkNhbnZhcyogY2FudmFzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBXZWJSZWN0JiByZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlR5cGUgY3R5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6U3RhdGUgY3N0YXRlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIGRyYXdFZGdlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBmaWxsQ29udGVudEFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkNvbG9y
IGNvbG9yKQoreworICAgIFdlYlRoZW1lQ29udHJvbERSVFdpbiBjb250cm9sKGNhbnZhcywgd2Vi
UmVjdFRvU2tJUmVjdChyZWN0KSwgY3R5cGUsIGNzdGF0ZSk7CisgICAgY29udHJvbC5kcmF3VGV4
dEZpZWxkKGRyYXdFZGdlcywgZmlsbENvbnRlbnRBcmVhLCBjb2xvcik7Cit9CisKK3N0YXRpYyB2
b2lkIGRyYXdQcm9ncmVzc0JhcihXZWJDYW52YXMqIGNhbnZhcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlR5cGUgY3R5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgV2ViVGhlbWVDb250cm9sRFJUV2luOjpTdGF0ZSBjc3RhdGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViUmVjdCYgYmFyUmVjdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJSZWN0JiBmaWxsUmVjdCkKK3sKKyAgICBX
ZWJUaGVtZUNvbnRyb2xEUlRXaW4gY29udHJvbChjYW52YXMsIHdlYlJlY3RUb1NrSVJlY3QoYmFy
UmVjdCksIGN0eXBlLCBjc3RhdGUpOworICAgIGNvbnRyb2wuZHJhd1Byb2dyZXNzQmFyKHdlYlJl
Y3RUb1NrSVJlY3QoZmlsbFJlY3QpKTsKK30KKworLy8gV2ViVGhlbWVFbmdpbmVEUlRXaW4KKwor
dm9pZCBXZWJUaGVtZUVuZ2luZURSVFdpbjo6cGFpbnRCdXR0b24oV2ViQ2FudmFzKiBjYW52YXMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGFydCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGF0ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjbGFzc2ljU3RhdGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJSZWN0JiByZWN0KQoreworICAg
IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VHlwZSBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdp
bjo6VW5rbm93blR5cGU7CisgICAgV2ViVGhlbWVDb250cm9sRFJUV2luOjpTdGF0ZSBjc3RhdGUg
PSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVua25vd25TdGF0ZTsKKworICAgIGlmIChwYXJ0ID09
IEJQX0NIRUNLQk9YKSB7CisgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICAgICAgY2FzZSBD
QlNfVU5DSEVDS0VETk9STUFMOgorICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBk
ZmNzTm9ybWFsKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpV
bmNoZWNrZWRCb3hUeXBlOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJU
V2luOjpOb3JtYWxTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQ0JT
X1VOQ0hFQ0tFREhPVDoKKyAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1Nf
QlVUVE9OQ0hFQ0sgfCBERkNTX0hPVCkpOworICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNv
bnRyb2xEUlRXaW46OlVuY2hlY2tlZEJveFR5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJU
aGVtZUNvbnRyb2xEUlRXaW46OkhvdFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgY2FzZSBDQlNfVU5DSEVDS0VEUFJFU1NFRDoKKyAgICAgICAgICAgIEFTU0VSVChjbGFzc2lj
U3RhdGUgPT0gKERGQ1NfQlVUVE9OQ0hFQ0sgfCBERkNTX1BVU0hFRCkpOworICAgICAgICAgICAg
Y3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVuY2hlY2tlZEJveFR5cGU7CisgICAgICAg
ICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlByZXNzZWRTdGF0ZTsKKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQ0JTX1VOQ0hFQ0tFRERJU0FCTEVEOgorICAg
ICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05DSEVDSyB8IERGQ1Nf
SU5BQ1RJVkUpKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpV
bmNoZWNrZWRCb3hUeXBlOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJU
V2luOjpEaXNhYmxlZFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBD
QlNfQ0hFQ0tFRE5PUk1BTDoKKyAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERG
Q1NfQlVUVE9OQ0hFQ0sgfCBERkNTX0NIRUNLRUQpKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2Vi
VGhlbWVDb250cm9sRFJUV2luOjpDaGVja2VkQm94VHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9
IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Tm9ybWFsU3RhdGU7CisgICAgICAgICAgICBicmVhazsK
KworICAgICAgICBjYXNlIENCU19DSEVDS0VESE9UOgorICAgICAgICAgICAgQVNTRVJUKGNsYXNz
aWNTdGF0ZSA9PSAoREZDU19CVVRUT05DSEVDSyB8IERGQ1NfQ0hFQ0tFRCB8IERGQ1NfSE9UKSk7
CisgICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Q2hlY2tlZEJveFR5
cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkhvdFN0YXRl
OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBDQlNfQ0hFQ0tFRFBSRVNTRUQ6
CisgICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTkNIRUNLIHwg
REZDU19DSEVDS0VEIHwgREZDU19QVVNIRUQpKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGhl
bWVDb250cm9sRFJUV2luOjpDaGVja2VkQm94VHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdl
YlRoZW1lQ29udHJvbERSVFdpbjo6UHJlc3NlZFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgY2FzZSBDQlNfQ0hFQ0tFRERJU0FCTEVEOgorICAgICAgICAgICAgQVNTRVJUKGNs
YXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05DSEVDSyB8IERGQ1NfQ0hFQ0tFRCB8IERGQ1NfSU5B
Q1RJVkUpKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpDaGVj
a2VkQm94VHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6
RGlzYWJsZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQ0JTX01J
WEVETk9STUFMOgorICAgICAgICAgICAgLy8gQ2xhc3NpYyB0aGVtZSBjYW4ndCByZXByZXNlbnQg
bWl4ZWQgc3RhdGUgY2hlY2tib3guIFdlIGFzc3VtZQorICAgICAgICAgICAgLy8gaXQncyBlcXVp
dmFsZW50IHRvIHVuY2hlY2tlZC4KKyAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0g
REZDU19CVVRUT05DSEVDSyk7CisgICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERS
VFdpbjo6SW5kZXRlcm1pbmF0ZUNoZWNrYm94VHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdl
YlRoZW1lQ29udHJvbERSVFdpbjo6Tm9ybWFsU3RhdGU7CisgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICBjYXNlIENCU19NSVhFREhPVDoKKyAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3Rh
dGUgPT0gKERGQ1NfQlVUVE9OQ0hFQ0sgfCBERkNTX0hPVCkpOworICAgICAgICAgICAgY3R5cGUg
PSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkluZGV0ZXJtaW5hdGVDaGVja2JveFR5cGU7CisgICAg
ICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkhvdFN0YXRlOworICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBDQlNfTUlYRURQUkVTU0VEOgorICAgICAgICAg
ICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05DSEVDSyB8IERGQ1NfUFVTSEVE
KSk7CisgICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SW5kZXRlcm1p
bmF0ZUNoZWNrYm94VHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERS
VFdpbjo6UHJlc3NlZFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBD
QlNfTUlYRURESVNBQkxFRDoKKyAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERG
Q1NfQlVUVE9OQ0hFQ0sgfCBERkNTX0lOQUNUSVZFKSk7CisgICAgICAgICAgICBjdHlwZSA9IFdl
YlRoZW1lQ29udHJvbERSVFdpbjo6SW5kZXRlcm1pbmF0ZUNoZWNrYm94VHlwZTsKKyAgICAgICAg
ICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6RGlzYWJsZWRTdGF0ZTsKKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfSBlbHNlIGlm
IChCUF9SQURJT0JVVFRPTiA9PSBwYXJ0KSB7CisgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAg
ICAgICAgY2FzZSBSQlNfVU5DSEVDS0VETk9STUFMOgorICAgICAgICAgICAgQVNTRVJUKGNsYXNz
aWNTdGF0ZSA9PSBERkNTX0JVVFRPTlJBRElPKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGhl
bWVDb250cm9sRFJUV2luOjpVbmNoZWNrZWRSYWRpb1R5cGU7CisgICAgICAgICAgICBjc3RhdGUg
PSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46Ok5vcm1hbFN0YXRlOworICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgY2FzZSBSQlNfVU5DSEVDS0VESE9UOgorICAgICAgICAgICAgQVNTRVJUKGNs
YXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05SQURJTyB8IERGQ1NfSE9UKSk7CisgICAgICAgICAg
ICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VW5jaGVja2VkUmFkaW9UeXBlOworICAg
ICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpIb3RTdGF0ZTsKKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUkJTX1VOQ0hFQ0tFRFBSRVNTRUQ6CisgICAg
ICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTlJBRElPIHwgREZDU19Q
VVNIRUQpKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpVbmNo
ZWNrZWRSYWRpb1R5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRX
aW46OlByZXNzZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUkJT
X1VOQ0hFQ0tFRERJU0FCTEVEOgorICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAo
REZDU19CVVRUT05SQURJTyB8IERGQ1NfSU5BQ1RJVkUpKTsKKyAgICAgICAgICAgIGN0eXBlID0g
V2ViVGhlbWVDb250cm9sRFJUV2luOjpVbmNoZWNrZWRSYWRpb1R5cGU7CisgICAgICAgICAgICBj
c3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRpc2FibGVkU3RhdGU7CisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBjYXNlIFJCU19DSEVDS0VETk9STUFMOgorICAgICAgICAgICAg
QVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05SQURJTyB8IERGQ1NfQ0hFQ0tFRCkp
OworICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkNoZWNrZWRSYWRp
b1R5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46Ok5vcm1h
bFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBSQlNfQ0hFQ0tFREhP
VDoKKyAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9OUkFESU8g
fCBERkNTX0NIRUNLRUQgfCBERkNTX0hPVCkpOworICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVt
ZUNvbnRyb2xEUlRXaW46OkNoZWNrZWRSYWRpb1R5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBX
ZWJUaGVtZUNvbnRyb2xEUlRXaW46OkhvdFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgY2FzZSBSQlNfQ0hFQ0tFRFBSRVNTRUQ6CisgICAgICAgICAgICBBU1NFUlQoY2xhc3Np
Y1N0YXRlID09IChERkNTX0JVVFRPTlJBRElPIHwgREZDU19DSEVDS0VEIHwgREZDU19QVVNIRUQp
KTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpDaGVja2VkUmFk
aW9UeXBlOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpQcmVz
c2VkU3RhdGU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFJCU19DSEVDS0VE
RElTQUJMRUQ6CisgICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRP
TlJBRElPIHwgREZDU19DSEVDS0VEIHwgREZDU19JTkFDVElWRSkpOworICAgICAgICAgICAgY3R5
cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkNoZWNrZWRSYWRpb1R5cGU7CisgICAgICAgICAg
ICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRpc2FibGVkU3RhdGU7CisgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAo
QlBfUFVTSEJVVFRPTiA9PSBwYXJ0KSB7CisgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICAg
ICAgY2FzZSBQQlNfTk9STUFMOgorICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBE
RkNTX0JVVFRPTlBVU0gpOworICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRX
aW46OlB1c2hCdXR0b25UeXBlOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9s
RFJUV2luOjpOb3JtYWxTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ug
UEJTX0hPVDoKKyAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9O
UFVTSCB8IERGQ1NfSE9UKSk7CisgICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERS
VFdpbjo6UHVzaEJ1dHRvblR5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRy
b2xEUlRXaW46OkhvdFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBQ
QlNfUFJFU1NFRDoKKyAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVU
VE9OUFVTSCB8IERGQ1NfUFVTSEVEKSk7CisgICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29u
dHJvbERSVFdpbjo6UHVzaEJ1dHRvblR5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVt
ZUNvbnRyb2xEUlRXaW46OlByZXNzZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIGNhc2UgUEJTX0RJU0FCTEVEOgorICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9
PSAoREZDU19CVVRUT05QVVNIIHwgREZDU19JTkFDVElWRSkpOworICAgICAgICAgICAgY3R5cGUg
PSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlB1c2hCdXR0b25UeXBlOworICAgICAgICAgICAgY3N0
YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpEaXNhYmxlZFN0YXRlOworICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgY2FzZSBQQlNfREVGQVVMVEVEOgorICAgICAgICAgICAgQVNTRVJU
KGNsYXNzaWNTdGF0ZSA9PSBERkNTX0JVVFRPTlBVU0gpOworICAgICAgICAgICAgY3R5cGUgPSBX
ZWJUaGVtZUNvbnRyb2xEUlRXaW46OlB1c2hCdXR0b25UeXBlOworICAgICAgICAgICAgY3N0YXRl
ID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpGb2N1c2VkU3RhdGU7CisgICAgICAgICAgICBicmVh
azsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0gZWxzZQorICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKworICAgIGRyYXdDb250cm9sKGNhbnZhcywgcmVjdCwgY3R5cGUs
IGNzdGF0ZSk7Cit9CisKKwordm9pZCBXZWJUaGVtZUVuZ2luZURSVFdpbjo6cGFpbnRNZW51TGlz
dChXZWJDYW52YXMqIGNhbnZhcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IHBhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IGNsYXNzaWNTdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgV2ViUmVjdCYgcmVjdCkKK3sKKyAgICBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlR5cGUg
Y3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVua25vd25UeXBlOworICAgIFdlYlRoZW1l
Q29udHJvbERSVFdpbjo6U3RhdGUgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpVbmtu
b3duU3RhdGU7CisKKyAgICBpZiAoQ1BfRFJPUERPV05CVVRUT04gPT0gcGFydCkgeworICAgICAg
ICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6RHJvcERvd25CdXR0b25UeXBlOworICAg
ICAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgICAgIGNhc2UgQ0JYU19OT1JNQUw6CisgICAgICAg
ICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfTUVOVUFSUk9XKTsKKyAgICAgICAgICAg
IGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Tm9ybWFsU3RhdGU7CisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBjYXNlIENCWFNfSE9UOgorICAgICAgICAgICAgQVNTRVJUKGNs
YXNzaWNTdGF0ZSA9PSAoREZDU19NRU5VQVJST1cgfCBERkNTX0hPVCkpOworICAgICAgICAgICAg
Y3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpIb3ZlclN0YXRlOworICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgY2FzZSBDQlhTX1BSRVNTRUQ6CisgICAgICAgICAgICBBU1NFUlQo
Y2xhc3NpY1N0YXRlID09IChERkNTX01FTlVBUlJPVyB8IERGQ1NfUFVTSEVEKSk7CisgICAgICAg
ICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlByZXNzZWRTdGF0ZTsKKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQ0JYU19ESVNBQkxFRDoKKyAgICAgICAgICAg
IEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfTUVOVUFSUk9XIHwgREZDU19JTkFDVElWRSkp
OworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpEaXNhYmxlZFN0
YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IENSQVNIKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0gZWxzZQorICAg
ICAgICBDUkFTSCgpOworCisgICAgZHJhd0NvbnRyb2woY2FudmFzLCByZWN0LCBjdHlwZSwgY3N0
YXRlKTsKK30KKwordm9pZCBXZWJUaGVtZUVuZ2luZURSVFdpbjo6cGFpbnRTY3JvbGxiYXJBcnJv
dyhXZWJDYW52YXMqIGNhbnZhcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IHN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgY2xhc3NpY1N0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJSZWN0JiByZWN0KQoreworICAgIFdlYlRo
ZW1lQ29udHJvbERSVFdpbjo6VHlwZSBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VW5r
bm93blR5cGU7CisgICAgV2ViVGhlbWVDb250cm9sRFJUV2luOjpTdGF0ZSBjc3RhdGUgPSBXZWJU
aGVtZUNvbnRyb2xEUlRXaW46OlVua25vd25TdGF0ZTsKKworICAgIHN3aXRjaCAoc3RhdGUpIHsK
KyAgICBjYXNlIEFCU19VUE5PUk1BTDoKKyAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBE
RkNTX1NDUk9MTFVQKTsKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVw
QXJyb3dUeXBlOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46Ok5vcm1h
bFN0YXRlOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgQUJTX0RPV05OT1JNQUw6CisgICAg
ICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19TQ1JPTExET1dOKTsKKyAgICAgICAgY3R5
cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRvd25BcnJvd1R5cGU7CisgICAgICAgIGNzdGF0
ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Tm9ybWFsU3RhdGU7CisgICAgICAgIGJyZWFrOwor
CisgICAgY2FzZSBBQlNfTEVGVE5PUk1BTDoKKyAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9
PSBERkNTX1NDUk9MTExFRlQpOworICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdp
bjo6TGVmdEFycm93VHlwZTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2lu
OjpOb3JtYWxTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEFCU19SSUdIVE5PUk1B
TDoKKyAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX1NDUk9MTFJJR0hUKTsKKyAg
ICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlJpZ2h0QXJyb3dUeXBlOworICAg
ICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46Ok5vcm1hbFN0YXRlOworICAgICAg
ICBicmVhazsKKworICAgIGNhc2UgQUJTX1VQSE9UOgorICAgICAgICBBU1NFUlQoY2xhc3NpY1N0
YXRlID09IChERkNTX1NDUk9MTFVQIHwgREZDU19IT1QpKTsKKyAgICAgICAgY3R5cGUgPSBXZWJU
aGVtZUNvbnRyb2xEUlRXaW46OlVwQXJyb3dUeXBlOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVt
ZUNvbnRyb2xEUlRXaW46OkhvdFN0YXRlOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgQUJT
X0RPV05IT1Q6CisgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NST0xMRE9X
TiB8IERGQ1NfSE9UKSk7CisgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpE
b3duQXJyb3dUeXBlOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46Okhv
dFN0YXRlOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgQUJTX0xFRlRIT1Q6CisgICAgICAg
IEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NST0xMTEVGVCB8IERGQ1NfSE9UKSk7Cisg
ICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpMZWZ0QXJyb3dUeXBlOworICAg
ICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkhvdFN0YXRlOworICAgICAgICBi
cmVhazsKKworICAgIGNhc2UgQUJTX1JJR0hUSE9UOgorICAgICAgICBBU1NFUlQoY2xhc3NpY1N0
YXRlID09IChERkNTX1NDUk9MTFJJR0hUIHwgREZDU19IT1QpKTsKKyAgICAgICAgY3R5cGUgPSBX
ZWJUaGVtZUNvbnRyb2xEUlRXaW46OlJpZ2h0QXJyb3dUeXBlOworICAgICAgICBjc3RhdGUgPSBX
ZWJUaGVtZUNvbnRyb2xEUlRXaW46OkhvdFN0YXRlOworICAgICAgICBicmVhazsKKworICAgIGNh
c2UgQUJTX1VQSE9WRVI6CisgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19TQ1JP
TExVUCk7CisgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpVcEFycm93VHlw
ZTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpIb3ZlclN0YXRlOwor
ICAgICAgICBicmVhazsKKworICAgIGNhc2UgQUJTX0RPV05IT1ZFUjoKKyAgICAgICAgQVNTRVJU
KGNsYXNzaWNTdGF0ZSA9PSBERkNTX1NDUk9MTERPV04pOworICAgICAgICBjdHlwZSA9IFdlYlRo
ZW1lQ29udHJvbERSVFdpbjo6RG93bkFycm93VHlwZTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGhl
bWVDb250cm9sRFJUV2luOjpIb3ZlclN0YXRlOworICAgICAgICBicmVhazsKKworICAgIGNhc2Ug
QUJTX0xFRlRIT1ZFUjoKKyAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX1NDUk9M
TExFRlQpOworICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6TGVmdEFycm93
VHlwZTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpIb3ZlclN0YXRl
OworICAgICAgICBicmVhazsKKworICAgIGNhc2UgQUJTX1JJR0hUSE9WRVI6CisgICAgICAgIEFT
U0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19TQ1JPTExSSUdIVCk7CisgICAgICAgIGN0eXBlID0g
V2ViVGhlbWVDb250cm9sRFJUV2luOjpSaWdodEFycm93VHlwZTsKKyAgICAgICAgY3N0YXRlID0g
V2ViVGhlbWVDb250cm9sRFJUV2luOjpIb3ZlclN0YXRlOworICAgICAgICBicmVhazsKKworICAg
IGNhc2UgQUJTX1VQUFJFU1NFRDoKKyAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZD
U19TQ1JPTExVUCB8IERGQ1NfUFVTSEVEIHwgREZDU19GTEFUKSk7CisgICAgICAgIGN0eXBlID0g
V2ViVGhlbWVDb250cm9sRFJUV2luOjpVcEFycm93VHlwZTsKKyAgICAgICAgY3N0YXRlID0gV2Vi
VGhlbWVDb250cm9sRFJUV2luOjpQcmVzc2VkU3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAg
Y2FzZSBBQlNfRE9XTlBSRVNTRUQ6CisgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERG
Q1NfU0NST0xMRE9XTiB8IERGQ1NfUFVTSEVEIHwgREZDU19GTEFUKSk7CisgICAgICAgIGN0eXBl
ID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpEb3duQXJyb3dUeXBlOworICAgICAgICBjc3RhdGUg
PSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlByZXNzZWRTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisK
KyAgICBjYXNlIEFCU19MRUZUUFJFU1NFRDoKKyAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9
PSAoREZDU19TQ1JPTExMRUZUIHwgREZDU19QVVNIRUQgfCBERkNTX0ZMQVQpKTsKKyAgICAgICAg
Y3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkxlZnRBcnJvd1R5cGU7CisgICAgICAgIGNz
dGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6UHJlc3NlZFN0YXRlOworICAgICAgICBicmVh
azsKKworICAgIGNhc2UgQUJTX1JJR0hUUFJFU1NFRDoKKyAgICAgICAgQVNTRVJUKGNsYXNzaWNT
dGF0ZSA9PSAoREZDU19TQ1JPTExSSUdIVCB8IERGQ1NfUFVTSEVEIHwgREZDU19GTEFUKSk7Cisg
ICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpSaWdodEFycm93VHlwZTsKKyAg
ICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpQcmVzc2VkU3RhdGU7CisgICAg
ICAgIGJyZWFrOworCisgICAgY2FzZSBBQlNfVVBESVNBQkxFRDoKKyAgICAgICAgQVNTRVJUKGNs
YXNzaWNTdGF0ZSA9PSAoREZDU19TQ1JPTExVUCB8IERGQ1NfSU5BQ1RJVkUpKTsKKyAgICAgICAg
Y3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVwQXJyb3dUeXBlOworICAgICAgICBjc3Rh
dGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRpc2FibGVkU3RhdGU7CisgICAgICAgIGJyZWFr
OworCisgICAgY2FzZSBBQlNfRE9XTkRJU0FCTEVEOgorICAgICAgICBBU1NFUlQoY2xhc3NpY1N0
YXRlID09IChERkNTX1NDUk9MTERPV04gfCBERkNTX0lOQUNUSVZFKSk7CisgICAgICAgIGN0eXBl
ID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpEb3duQXJyb3dUeXBlOworICAgICAgICBjc3RhdGUg
PSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRpc2FibGVkU3RhdGU7CisgICAgICAgIGJyZWFrOwor
CisgICAgY2FzZSBBQlNfTEVGVERJU0FCTEVEOgorICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRl
ID09IChERkNTX1NDUk9MTExFRlQgfCBERkNTX0lOQUNUSVZFKSk7CisgICAgICAgIGN0eXBlID0g
V2ViVGhlbWVDb250cm9sRFJUV2luOjpMZWZ0QXJyb3dUeXBlOworICAgICAgICBjc3RhdGUgPSBX
ZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRpc2FibGVkU3RhdGU7CisgICAgICAgIGJyZWFrOworCisg
ICAgY2FzZSBBQlNfUklHSFRESVNBQkxFRDoKKyAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9
PSAoREZDU19TQ1JPTExSSUdIVCB8IERGQ1NfSU5BQ1RJVkUpKTsKKyAgICAgICAgY3R5cGUgPSBX
ZWJUaGVtZUNvbnRyb2xEUlRXaW46OlJpZ2h0QXJyb3dUeXBlOworICAgICAgICBjc3RhdGUgPSBX
ZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRpc2FibGVkU3RhdGU7CisgICAgICAgIGJyZWFrOworCisg
ICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKworICAgIGRyYXdDb250cm9sKGNhbnZhcywgcmVjdCwgY3R5cGUsIGNzdGF0ZSk7
Cit9CisKK3ZvaWQgV2ViVGhlbWVFbmdpbmVEUlRXaW46OnBhaW50U2Nyb2xsYmFyVGh1bWIoV2Vi
Q2FudmFzKiBjYW52YXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBwYXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBjbGFzc2ljU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlJlY3QmIHJlY3QpCit7CisgICAgV2ViVGhlbWVD
b250cm9sRFJUV2luOjpUeXBlIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpVbmtub3du
VHlwZTsKKyAgICBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlN0YXRlIGNzdGF0ZSA9IFdlYlRoZW1l
Q29udHJvbERSVFdpbjo6VW5rbm93blN0YXRlOworCisgICAgc3dpdGNoIChwYXJ0KSB7CisgICAg
Y2FzZSBTQlBfVEhVTUJCVE5IT1JaOgorICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERS
VFdpbjo6SG9yaXpvbnRhbFNjcm9sbFRodW1iVHlwZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBj
YXNlIFNCUF9USFVNQkJUTlZFUlQ6CisgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJU
V2luOjpWZXJ0aWNhbFNjcm9sbFRodW1iVHlwZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNl
IFNCUF9HUklQUEVSSE9SWjoKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46
Okhvcml6b250YWxTY3JvbGxHcmlwVHlwZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNC
UF9HUklQUEVSVkVSVDoKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlZl
cnRpY2FsU2Nyb2xsR3JpcFR5cGU7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAg
IHN3aXRjaCAoc3RhdGUpIHsKKyAgICBjYXNlIFNDUkJTX05PUk1BTDoKKyAgICAgICAgQVNTRVJU
KGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVD
b250cm9sRFJUV2luOjpOb3JtYWxTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFND
UkJTX0hPVDoKKyAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX0hPVCk7CisgICAg
ICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SG90U3RhdGU7CisgICAgICAgIGJy
ZWFrOworCisgICAgY2FzZSBTQ1JCU19IT1ZFUjoKKyAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0
ZSA9PSBkZmNzTm9ybWFsKTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2lu
OjpIb3ZlclN0YXRlOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgU0NSQlNfUFJFU1NFRDoK
KyAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKKyAgICAgICAgY3N0
YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpQcmVzc2VkU3RhdGU7CisgICAgICAgIGJyZWFr
OworCisgICAgY2FzZSBTQ1JCU19ESVNBQkxFRDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7IC8vIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiBpbiBwcmFjdGljZS4KKyAgICAgICAgYnJl
YWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCisgICAgZHJhd0NvbnRyb2woY2FudmFzLCByZWN0LCBjdHlwZSwg
Y3N0YXRlKTsKK30KKwordm9pZCBXZWJUaGVtZUVuZ2luZURSVFdpbjo6cGFpbnRTY3JvbGxiYXJU
cmFjayhXZWJDYW52YXMqIGNhbnZhcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IHBhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IGNsYXNzaWNTdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViUmVjdCYgcmVjdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViUmVjdCYgYWxp
Z25SZWN0KQoreworICAgIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VHlwZSBjdHlwZSA9IFdlYlRo
ZW1lQ29udHJvbERSVFdpbjo6VW5rbm93blR5cGU7CisgICAgV2ViVGhlbWVDb250cm9sRFJUV2lu
OjpTdGF0ZSBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVua25vd25TdGF0ZTsKKwor
ICAgIHN3aXRjaCAocGFydCkgeworICAgIGNhc2UgU0JQX1VQUEVSVFJBQ0tIT1JaOgorICAgICAg
ICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SG9yaXpvbnRhbFNjcm9sbFRyYWNrQmFj
a1R5cGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBTQlBfTE9XRVJUUkFDS0hPUlo6Cisg
ICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpIb3Jpem9udGFsU2Nyb2xsVHJh
Y2tGb3J3YXJkVHlwZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNCUF9VUFBFUlRSQUNL
VkVSVDoKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlZlcnRpY2FsU2Ny
b2xsVHJhY2tCYWNrVHlwZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNCUF9MT1dFUlRS
QUNLVkVSVDoKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlZlcnRpY2Fs
U2Nyb2xsVHJhY2tGb3J3YXJkVHlwZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0Ogor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisg
ICAgc3dpdGNoIChzdGF0ZSkgeworICAgIGNhc2UgU0NSQlNfTk9STUFMOgorICAgICAgICBBU1NF
UlQoY2xhc3NpY1N0YXRlID09IGRmY3NOb3JtYWwpOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVt
ZUNvbnRyb2xEUlRXaW46Ok5vcm1hbFN0YXRlOworICAgICAgICBicmVhazsKKworICAgIGNhc2Ug
U0NSQlNfSE9UOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8gVGhpcyBzaG91bGQg
bmV2ZXIgaGFwcGVuIGluIHByYWN0aWNlLgorICAgICAgICBicmVhazsKKworICAgIGNhc2UgU0NS
QlNfSE9WRVI6CisgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gZGZjc05vcm1hbCk7Cisg
ICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SG92ZXJTdGF0ZTsKKyAgICAg
ICAgYnJlYWs7CisKKyAgICBjYXNlIFNDUkJTX1BSRVNTRUQ6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyAvLyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4gaW4gcHJhY3RpY2UuCisgICAg
ICAgIGJyZWFrOworCisgICAgY2FzZSBTQ1JCU19ESVNBQkxFRDoKKyAgICAgICAgQVNTRVJUKGNs
YXNzaWNTdGF0ZSA9PSBERkNTX0lOQUNUSVZFKTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVD
b250cm9sRFJUV2luOjpEaXNhYmxlZFN0YXRlOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1
bHQ6CisgICAgICAgIENSQVNIKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGRyYXdD
b250cm9sKGNhbnZhcywgcmVjdCwgY3R5cGUsIGNzdGF0ZSk7Cit9CisKK3ZvaWQgV2ViVGhlbWVF
bmdpbmVEUlRXaW46OnBhaW50U3BpbkJ1dHRvbihXZWJDYW52YXMqIGNhbnZhcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGFydCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhdGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNsYXNzaWNTdGF0ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJSZWN0JiByZWN0KQor
eworICAgIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VHlwZSBjdHlwZSA9IFdlYlRoZW1lQ29udHJv
bERSVFdpbjo6VW5rbm93blR5cGU7CisgICAgV2ViVGhlbWVDb250cm9sRFJUV2luOjpTdGF0ZSBj
c3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVua25vd25TdGF0ZTsKKworICAgIGlmIChw
YXJ0ID09IFNQTlBfVVApIHsKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46
OlVwQXJyb3dUeXBlOworICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgICAgIGNhc2UgVVBT
X05PUk1BTDoKKyAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19TQ1JPTExV
UCk7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46Ok5vcm1hbFN0
YXRlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVVBTX0RJU0FCTEVEOgorICAg
ICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19TQ1JPTExVUCB8IERGQ1NfSU5B
Q1RJVkUpKTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6RGlz
YWJsZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFVQU19QUkVTU0VE
OgorICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19TQ1JPTExVUCB8IERG
Q1NfUFVTSEVEKSk7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46
OlByZXNzZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFVQU19IT1Q6
CisgICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTFVQIHwgREZD
U19IT1QpKTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SG92
ZXJTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKHBhcnQg
PT0gU1BOUF9ET1dOKSB7CisgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpE
b3duQXJyb3dUeXBlOworICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgICAgIGNhc2UgRE5T
X05PUk1BTDoKKyAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19TQ1JPTExE
T1dOKTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Tm9ybWFs
U3RhdGU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBETlNfRElTQUJMRUQ6Cisg
ICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTERPV04gfCBERkNT
X0lOQUNUSVZFKSk7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46
OkRpc2FibGVkU3RhdGU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBETlNfUFJF
U1NFRDoKKyAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NST0xMRE9X
TiB8IERGQ1NfUFVTSEVEKSk7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xE
UlRXaW46OlByZXNzZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERO
U19IT1Q6CisgICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTERP
V04gfCBERkNTX0hPVCkpOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJU
V2luOjpIb3ZlclN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0gZWxzZQor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBkcmF3Q29udHJvbChjYW52YXMsIHJl
Y3QsIGN0eXBlLCBjc3RhdGUpOworfQorCit2b2lkIFdlYlRoZW1lRW5naW5lRFJUV2luOjpwYWlu
dFRleHRGaWVsZChXZWJDYW52YXMqIGNhbnZhcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBwYXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IHN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGNsYXNzaWNTdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFdlYlJlY3QmIHJlY3QsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXZWJDb2xvciBjb2xvciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZmlsbENvbnRlbnRBcmVhLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkcmF3RWRnZXMpCit7CisgICAgV2Vi
VGhlbWVDb250cm9sRFJUV2luOjpUeXBlIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpV
bmtub3duVHlwZTsKKyAgICBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlN0YXRlIGNzdGF0ZSA9IFdl
YlRoZW1lQ29udHJvbERSVFdpbjo6VW5rbm93blN0YXRlOworCisgICAgQVNTRVJUKEVQX0VESVRU
RVhUID09IHBhcnQpOworICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpUZXh0Rmll
bGRUeXBlOworCisgICAgc3dpdGNoIChzdGF0ZSkgeworICAgIGNhc2UgRVRTX05PUk1BTDoKKyAg
ICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKKyAgICAgICAgY3N0YXRl
ID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpOb3JtYWxTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisK
KyAgICBjYXNlIEVUU19IT1Q6CisgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19I
T1QpOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkhvdFN0YXRlOwor
ICAgICAgICBicmVhazsKKworICAgIGNhc2UgRVRTX0RJU0FCTEVEOgorICAgICAgICBBU1NFUlQo
Y2xhc3NpY1N0YXRlID09IERGQ1NfSU5BQ1RJVkUpOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVt
ZUNvbnRyb2xEUlRXaW46OkRpc2FibGVkU3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2Fz
ZSBFVFNfU0VMRUNURUQ6CisgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19QVVNI
RUQpOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlByZXNzZWRTdGF0
ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEVUU19GT0NVU0VEOgorICAgICAgICBBU1NF
UlQoY2xhc3NpY1N0YXRlID09IGRmY3NOb3JtYWwpOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVt
ZUNvbnRyb2xEUlRXaW46OkZvY3VzZWRTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNl
IEVUU19SRUFET05MWToKKyAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFs
KTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpSZWFkT25seVN0YXRl
OworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBkcmF3VGV4dEZpZWxkKGNhbnZh
cywgcmVjdCwgY3R5cGUsIGNzdGF0ZSwgZHJhd0VkZ2VzLCBmaWxsQ29udGVudEFyZWEsIGNvbG9y
KTsKK30KKwordm9pZCBXZWJUaGVtZUVuZ2luZURSVFdpbjo6cGFpbnRUcmFja2JhcihXZWJDYW52
YXMqIGNhbnZhcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IHBhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGF0
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNsYXNzaWNT
dGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2Vi
UmVjdCYgcmVjdCkKK3sKKyAgICBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlR5cGUgY3R5cGUgPSBX
ZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVua25vd25UeXBlOworICAgIFdlYlRoZW1lQ29udHJvbERS
VFdpbjo6U3RhdGUgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpVbmtub3duU3RhdGU7
CisKKyAgICBpZiAoVEtQX1RIVU1CQk9UVE9NID09IHBhcnQpIHsKKyAgICAgICAgY3R5cGUgPSBX
ZWJUaGVtZUNvbnRyb2xEUlRXaW46Okhvcml6b250YWxTbGlkZXJUaHVtYlR5cGU7CisgICAgICAg
IHN3aXRjaCAoc3RhdGUpIHsKKyAgICAgICAgY2FzZSBUVVNfTk9STUFMOgorICAgICAgICAgICAg
QVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKKyAgICAgICAgICAgIGNzdGF0ZSA9
IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Tm9ybWFsU3RhdGU7CisgICAgICAgICAgICBicmVhazsK
KworICAgICAgICBjYXNlIFRVU19IT1Q6CisgICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRl
ID09IERGQ1NfSE9UKTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdp
bjo6SG90U3RhdGU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFRVU19ESVNB
QkxFRDoKKyAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19JTkFDVElWRSk7
CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRpc2FibGVkU3Rh
dGU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFRVU19QUkVTU0VEOgorICAg
ICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX1BVU0hFRCk7CisgICAgICAgICAg
ICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlByZXNzZWRTdGF0ZTsKKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChU
S1BfVEhVTUJWRVJUID09IHBhcnQpIHsKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xE
UlRXaW46OlZlcnRpY2FsU2xpZGVyVGh1bWJUeXBlOworICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7
CisgICAgICAgIGNhc2UgVFVTX05PUk1BTDoKKyAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3Rh
dGUgPT0gZGZjc05vcm1hbCk7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xE
UlRXaW46Ok5vcm1hbFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBU
VVNfSE9UOgorICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX0hPVCk7Cisg
ICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkhvdFN0YXRlOworICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBUVVNfRElTQUJMRUQ6CisgICAgICAgICAg
ICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfSU5BQ1RJVkUpOworICAgICAgICAgICAgY3N0
YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpEaXNhYmxlZFN0YXRlOworICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgY2FzZSBUVVNfUFJFU1NFRDoKKyAgICAgICAgICAgIEFTU0VSVChj
bGFzc2ljU3RhdGUgPT0gREZDU19QVVNIRUQpOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhl
bWVDb250cm9sRFJUV2luOjpQcmVzc2VkU3RhdGU7CisgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoVEtQX1RSQUNLID09IHBhcnQp
IHsKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46Okhvcml6b250YWxTbGlk
ZXJUcmFja1R5cGU7CisgICAgICAgIEFTU0VSVChzdGF0ZSA9PSBUUlNfTk9STUFMKTsKKyAgICAg
ICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKKyAgICAgICAgY3N0YXRlID0g
V2ViVGhlbWVDb250cm9sRFJUV2luOjpOb3JtYWxTdGF0ZTsKKyAgICB9IGVsc2UgaWYgKFRLUF9U
UkFDS1ZFUlQgPT0gcGFydCkgeworICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdp
bjo6VmVydGljYWxTbGlkZXJUcmFja1R5cGU7CisgICAgICAgIEFTU0VSVChzdGF0ZSA9PSBUUlZT
X05PUk1BTCk7CisgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gZGZjc05vcm1hbCk7Cisg
ICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Tm9ybWFsU3RhdGU7CisgICAg
fSBlbHNlCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgZHJhd0NvbnRyb2wo
Y2FudmFzLCByZWN0LCBjdHlwZSwgY3N0YXRlKTsKK30KKworCit2b2lkIFdlYlRoZW1lRW5naW5l
RFJUV2luOjpwYWludFByb2dyZXNzQmFyKFdlYktpdDo6V2ViQ2FudmFzKiBjYW52YXMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYktpdDo6V2Vi
UmVjdCYgYmFyUmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgV2ViS2l0OjpXZWJSZWN0JiB2YWx1ZVJlY3QsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZGV0ZXJtaW5hdGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSkKK3sKKyAgICBXZWJUaGVtZUNv
bnRyb2xEUlRXaW46OlR5cGUgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlByb2dyZXNz
QmFyVHlwZTsKKyAgICBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlN0YXRlIGNzdGF0ZSA9IGRldGVy
bWluYXRlID8gV2ViVGhlbWVDb250cm9sRFJUV2luOjpOb3JtYWxTdGF0ZQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBXZWJUaGVtZUNvbnRy
b2xEUlRXaW46OkluZGV0ZXJtaW5hdGVTdGF0ZTsKKyAgICBkcmF3UHJvZ3Jlc3NCYXIoY2FudmFz
LCBjdHlwZSwgY3N0YXRlLCBiYXJSZWN0LCB2YWx1ZVJlY3QpOworfQorCisKK1dlYktpdDo6V2Vi
U2l6ZSBXZWJUaGVtZUVuZ2luZURSVFdpbjo6Z2V0U2l6ZShpbnQgcGFydCkKK3sKKyAgICByZXR1
cm4gV2ViS2l0OjpXZWJTaXplKCk7Cit9CisKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlRoZW1lRW5naW5lRFJUV2luLmggYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9XZWJUaGVtZUVuZ2luZURSVFdpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0NDUxNGJiMmEw
NzA2ZjYyYmEzYTJmOTI0YWVhZjMwZWE4MTQzN2IKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUVuZ2luZURSVFdpbi5oCkBAIC0wLDAgKzEs
MTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworLy8gVGhpcyBpbXBsZW1lbnRzIHRoZSBXZWJUaGVtZUVuZ2luZSBBUEkgdXNlZCBieSB0
aGUgV2luZG93cyB2ZXJzaW9uIG9mCisvLyBDaHJvbWl1bSB0byByZW5kZXIgbmF0aXZlIGZvcm0g
Y29udHJvbHMgbGlrZSBjaGVja2JveGVzLCByYWRpbyBidXR0b25zLAorLy8gYW5kIHNjcm9sbCBi
YXJzLgorLy8gVGhlIG5vcm1hbCBpbXBsZW1lbnRhdGlvbiAobmF0aXZlX3RoZW1lKSByZW5kZXJz
IHRoZSBjb250cm9scyB1c2luZyBlaXRoZXIKKy8vIHRoZSBVWFRoZW1lIHRoZW1pbmcgZW5naW5l
IHByZXNlbnQgaW4gWFAsIFZpc3RhLCBhbmQgV2luIDcsIG9yIHRoZSAiY2xhc3NpYyIKKy8vIHRo
ZW1lIHVzZWQgaWYgdGhhdCB0aGVtZSBpcyBzZWxlY3RlZCBpbiB0aGUgRGVza3RvcCBzZXR0aW5n
cy4KKy8vIFVuZm9ydHVuYXRlbHksIGJvdGggb2YgdGhlc2UgdGhlbWVzIHJlbmRlciBjb250cm9s
cyBkaWZmZXJlbnRseSBvbiB0aGUKKy8vIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiBXaW5kb3dzLgor
Ly8KKy8vIEluIG9yZGVyIHRvIGVuc3VyZSBtYXhpbXVtIGNvbnNpc3RlbmN5IG9mIGJhc2VsaW5l
cyBhY3Jvc3MgdGhlIGRpZmZlcmVudAorLy8gV2luZG93cyB2ZXJzaW9ucywgd2UgcHJvdmlkZSBh
IHNpbXBsZSBpbXBsZW1lbnRhdGlvbiBmb3IgRFJUIGhlcmUKKy8vIGluc3RlYWQuIFRoZXNlIGNv
bnRyb2xzIGFyZSBhY3R1YWxseSBwbGF0Zm9ybS1pbmRlcGVuZGVudCAodGhleSdyZSByZW5kZXJl
ZAorLy8gdXNpbmcgU2tpYSkgYW5kIGNvdWxkIGJlIHVzZWQgb24gTGludXggYW5kIHRoZSBNYWMg
YXMgd2VsbCwgc2hvdWxkIHdlCisvLyBjaG9vc2UgdG8gZG8gc28gYXQgc29tZSBwb2ludC4KKy8v
CisKKyNpZm5kZWYgV2ViVGhlbWVFbmdpbmVEUlRXaW5faAorI2RlZmluZSBXZWJUaGVtZUVuZ2lu
ZURSVFdpbl9oCisKKyNpbmNsdWRlIDxwdWJsaWMvd2luL1dlYlRoZW1lRW5naW5lLmg+CisjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK2NsYXNzIFdlYlRoZW1lRW5naW5lRFJUV2luIDog
cHVibGljIFdlYktpdDo6V2ViVGhlbWVFbmdpbmUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFdlYlRoZW1lRW5naW5lRFJUV2luKTsKK3B1YmxpYzoKKyAgICBXZWJUaGVtZUVuZ2luZURSVFdp
bigpIHsgfQorCisgICAgLy8gV2ViVGhlbWVFbmdpbmUgbWV0aG9kczoKKyAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRCdXR0b24oCisgICAgICAgIFdlYktpdDo6V2ViQ2FudmFzKiwgaW50IHBhcnQsIGlu
dCBzdGF0ZSwgaW50IGNsYXNzaWNTdGF0ZSwKKyAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJSZWN0
Jik7CisKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRNZW51TGlzdCgKKyAgICAgICAgV2ViS2l0OjpX
ZWJDYW52YXMqLCBpbnQgcGFydCwgaW50IHN0YXRlLCBpbnQgY2xhc3NpY1N0YXRlLAorICAgICAg
ICBjb25zdCBXZWJLaXQ6OldlYlJlY3QmKTsKKworICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9s
bGJhckFycm93KAorICAgICAgICBXZWJLaXQ6OldlYkNhbnZhcyosIGludCBzdGF0ZSwgaW50IGNs
YXNzaWNTdGF0ZSwKKyAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJSZWN0Jik7CisKKyAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRTY3JvbGxiYXJUaHVtYigKKyAgICAgICAgV2ViS2l0OjpXZWJDYW52YXMq
LCBpbnQgcGFydCwgaW50IHN0YXRlLCBpbnQgY2xhc3NpY1N0YXRlLAorICAgICAgICBjb25zdCBX
ZWJLaXQ6OldlYlJlY3QmKTsKKworICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhclRyYWNr
KAorICAgICAgICBXZWJLaXQ6OldlYkNhbnZhcyosIGludCBwYXJ0LCBpbnQgc3RhdGUsIGludCBj
bGFzc2ljU3RhdGUsCisgICAgICAgIGNvbnN0IFdlYktpdDo6V2ViUmVjdCYsIGNvbnN0IFdlYktp
dDo6V2ViUmVjdCYgYWxpZ25SZWN0KTsKKworICAgIHZpcnR1YWwgdm9pZCBwYWludFNwaW5CdXR0
b24oCisgICAgICAgIFdlYktpdDo6V2ViQ2FudmFzKiwgaW50IHBhcnQsIGludCBzdGF0ZSwgaW50
IGNsYXNzaWNTdGF0ZSwKKyAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJSZWN0Jik7CisKKyAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRUZXh0RmllbGQoCisgICAgICAgIFdlYktpdDo6V2ViQ2FudmFzKiwg
aW50IHBhcnQsIGludCBzdGF0ZSwgaW50IGNsYXNzaWNTdGF0ZSwKKyAgICAgICAgY29uc3QgV2Vi
S2l0OjpXZWJSZWN0JiwgV2ViS2l0OjpXZWJDb2xvciwgYm9vbCBmaWxsQ29udGVudEFyZWEsCisg
ICAgICAgIGJvb2wgZHJhd0VkZ2VzKTsKKworICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrYmFy
KAorICAgICAgICBXZWJLaXQ6OldlYkNhbnZhcyosIGludCBwYXJ0LCBpbnQgc3RhdGUsIGludCBj
bGFzc2ljU3RhdGUsCisgICAgICAgIGNvbnN0IFdlYktpdDo6V2ViUmVjdCYpOworCisgICAgdmly
dHVhbCB2b2lkIHBhaW50UHJvZ3Jlc3NCYXIoCisgICAgICAgIFdlYktpdDo6V2ViQ2FudmFzKiwg
Y29uc3QgV2ViS2l0OjpXZWJSZWN0JiBiYXJSZWN0LAorICAgICAgICBjb25zdCBXZWJLaXQ6Oldl
YlJlY3QmIHZhbHVlUmVjdCwKKyAgICAgICAgYm9vbCBkZXRlcm1pbmF0ZSwgZG91YmxlIHRpbWUp
OworCisgICAgdmlydHVhbCBXZWJLaXQ6OldlYlNpemUgZ2V0U2l6ZShpbnQgcGFydCk7Cit9Owor
CisjZW5kaWYgLy8gV2ViVGhlbWVFbmdpbmVEUlRXaW5faAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>