<?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>77406</bug_id>
          
          <creation_ts>2012-01-30 22:17:09 -0800</creation_ts>
          <short_desc>REGRESSION(r106324): Broke CCLayerTreeHostTestLayerOcclusion.runMultiThread and runSingleThread (Requested by yuzo1 on #webkit).</short_desc>
          <delta_ts>2012-01-30 22:23:38 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>76858</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>danakj</cc>
    
    <cc>jamesr</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>545787</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-30 22:17:09 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/106324 broke the build:
Broke CCLayerTreeHostTestLayerOcclusion.runMultiThread and runSingleThread (Requested by yuzo1 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>545788</commentid>
    <comment_count>1</comment_count>
      <attachid>124670</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-30 22:17:38 -0800</bug_when>
    <thetext>Created attachment 124670
ROLLOUT of r106324

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>545790</commentid>
    <comment_count>2</comment_count>
      <attachid>124670</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-30 22:23:34 -0800</bug_when>
    <thetext>Comment on attachment 124670
ROLLOUT of r106324

Clearing flags on attachment: 124670

Committed r106335: &lt;http://trac.webkit.org/changeset/106335&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545791</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-30 22:23:38 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124670</attachid>
            <date>2012-01-30 22:17:38 -0800</date>
            <delta_ts>2012-01-30 22:23:34 -0800</delta_ts>
            <desc>ROLLOUT of r106324</desc>
            <filename>bug-77406-20120131061900.patch</filename>
            <type>text/plain</type>
            <size>61434</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MzMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTM4YjBjOWFlOWE1ODM2
MmI3YjMzOGU4NzRiMjgwZmI3OWZmMjhlMS4uNDQxYjVjMGE5YjcwMDM1ZmM4ZTE3OWNiMDNkZDZk
Y2M2ZDkyMjBjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTAxLTMwICBTaGVy
aWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMTA2MzI0LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC8xMDYzMjQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc3NDA2CisKKyAgICAgICAgQnJva2UgQ0NMYXllclRyZWVIb3N0VGVzdExheWVy
T2NjbHVzaW9uLnJ1bk11bHRpVGhyZWFkIGFuZAorICAgICAgICBydW5TaW5nbGVUaHJlYWQgKFJl
cXVlc3RlZCBieSB5dXpvMSBvbiAjd2Via2l0KS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0Zsb2F0UmVjdC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
MkRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmg6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKENhbnZhczJETGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1
bS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDb250ZW50TGF5ZXJDaHJvbWl1bSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVt
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50
c0lmRGlydHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5
ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJbWFnZUxheWVyQ2hy
b21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21p
dW0uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21p
dW0uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1
bTo6cGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAoTGF5ZXJDaHJvbWl1bSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVt
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hy
b21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyVHJlZUhvc3Q6OnBhaW50Q29udGVudHNJZkRpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkND
TGF5ZXJUcmVlSG9zdDo6cGFpbnRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpwYWludExheWVyQ29udGVudHMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NRdWFkQ3VsbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVuY2xvc2VkSW50UmVjdCk6
CisgICAgICAgIChXZWJDb3JlKToKKwogMjAxMi0wMS0zMCAgUmF5bW9uZCBMaXUgIDxyYXltb25k
LmxpdUBpbnRlbC5jb20+CiAKICAgICAgICAgRml4IEFTU0VSVCBmYWlsIHdpdGhpbiBBdWRpb0J1
czo6cHJvY2Vzc1dpdGhHYWluRnJvbSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDNl
OTY3OWUyNjhlMWViNWNkOTU5OWU2ZTk1ZmU2NGMxMGRiODJiOTguLjAyMGFhYjZiNzliNjgyZGM3
MTc3ZjNmOWFiZjIwMzYyNzczYzVlOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjMgQEAKKzIwMTItMDEtMzAgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RA
Z21haWwuY29tPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDYzMjQuCisg
ICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEwNjMyNAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc0MDYKKworICAgICAgICBC
cm9rZSBDQ0xheWVyVHJlZUhvc3RUZXN0TGF5ZXJPY2NsdXNpb24ucnVuTXVsdGlUaHJlYWQgYW5k
CisgICAgICAgIHJ1blNpbmdsZVRocmVhZCAoUmVxdWVzdGVkIGJ5IHl1em8xIG9uICN3ZWJraXQp
LgorCisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcDoK
KyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnBh
aW50Q29udGVudHNJZkRpcnR5KToKKyAgICAgICAgKiB0ZXN0cy9DYW52YXMyRExheWVyQ2hyb21p
dW1UZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3Q6
OmZ1bGxMaWZlY3ljbGVUZXN0KToKKyAgICAgICAgKiB0ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1U
ZXN0LmNwcDoKKyAgICAgICAgKEZha2VMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdU
Rjo6RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAg
ICAoV1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKToKKwogMjAx
Mi0wMS0zMCAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KIAogICAgICAgICBb
Y2hyb21pdW1dIENvbXB1dGUgb2NjbHVzaW9uIGR1cmluZyBwYWludCBsb29wCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmNwcAppbmRleCA1OTVhZjJhMzIz
YTNlZTVhYTQ4ZjY4MDg1YjY2NjZhN2Q5ZDQ5NGY5Li40NmZjYTZjMjdlOWU5M2U2Mzk0NjgyNzVm
Mzc1OTU5NGY1YzkyYjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9GbG9hdFJlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0Zsb2F0UmVjdC5jcHAKQEAgLTIxOCwxOSArMjE4LDYgQEAgSW50UmVjdCBlbmNsb3NpbmdJbnRS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICAgICAgICAgICAgICAgICBjbGFtcFRvSW50
ZWdlcih3aWR0aCksIGNsYW1wVG9JbnRlZ2VyKGhlaWdodCkpOwogfQogCi1JbnRSZWN0IGVuY2xv
c2VkSW50UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCi17Ci0gICAgaW50IHggPSBjbGFtcFRv
SW50ZWdlcihjZWlsZihyZWN0LngoKSkpOwotICAgIGludCB5ID0gY2xhbXBUb0ludGVnZXIoY2Vp
bGYocmVjdC55KCkpKTsKLSAgICBmbG9hdCBtYXhYID0gY2xhbXBUb0ludGVnZXIoZmxvb3JmKHJl
Y3QubWF4WCgpKSk7Ci0gICAgZmxvYXQgbWF4WSA9IGNsYW1wVG9JbnRlZ2VyKGZsb29yZihyZWN0
Lm1heFkoKSkpOwotICAgIC8vIEEgcmVjdCBvZiB3aWR0aCAwIHNob3VsZCBub3QgYmVjb21lIGEg
cmVjdCBvZiB3aWR0aCAtMSBkdWUgdG8gY2VpbC9mbG9vci4KLSAgICBpbnQgd2lkdGggPSBtYXgo
Y2xhbXBUb0ludGVnZXIobWF4WCAtIHgpLCAwKTsKLSAgICBpbnQgaGVpZ2h0ID0gbWF4KGNsYW1w
VG9JbnRlZ2VyKG1heFkgLSB5KSwgMCk7Ci0KLSAgICByZXR1cm4gSW50UmVjdCh4LCB5LCB3aWR0
aCwgaGVpZ2h0KTsKLX0KLQogRmxvYXRSZWN0IG1hcFJlY3QoY29uc3QgRmxvYXRSZWN0JiByLCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCiB7CiAg
ICAgaWYgKHNyY1JlY3Qud2lkdGgoKSA9PSAwIHx8IHNyY1JlY3QuaGVpZ2h0KCkgPT0gMCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmgKaW5kZXggMjJjMTcx
YzVhYjRkMTg4OTYwZTgyZmU3YmUwMjE4ZTQxY2Y4YTVmOC4uMTQwOTA3MWIxMTk4ODNkM2IwODYy
NzBhYTRjZjc4ODRmNGZiYTYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRmxvYXRSZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRmxvYXRSZWN0LmgKQEAgLTI3MCw5ICsyNzAsNiBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IEZsb2F0UmVjdCYgYSwgY29uc3QgRmxvYXRSZWN0JiBiKQogCiBJbnRSZWN0IGVuY2xv
c2luZ0ludFJlY3QoY29uc3QgRmxvYXRSZWN0Jik7CiAKLS8vIFJldHVybnMgYSB2YWxpZCBJbnRS
ZWN0IGNvbnRhaW5lZCB3aXRoaW4gdGhlIGdpdmVuIEZsb2F0UmVjdC4KLUludFJlY3QgZW5jbG9z
ZWRJbnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwotCiAvLyBNYXAgcmVjdCByIGZyb20gc3JjUmVj
dCB0byBhbiBlcXVpdmFsZW50IHJlY3QgaW4gZGVzdFJlY3QuCiBGbG9hdFJlY3QgbWFwUmVjdChj
b25zdCBGbG9hdFJlY3QmIHIsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCmlu
ZGV4IDA5MDU0NzQxODZlZmMyYzQwYTdhZGE0NTg1OTVlMGJmODNmMzY4YzguLjE1MDVhZGFjMjQz
ZTA3NjY1ZDJkZGFiMjhmNDcwM2ZmOGVmNWI5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXll
ckNocm9taXVtLmNwcApAQCAtOTEsNyArOTEsNyBAQCBib29sIENhbnZhczJETGF5ZXJDaHJvbWl1
bTo6ZHJhd3NDb250ZW50KCkgY29uc3QKICAgICAgICAgJiYgbV9jb250ZXh0ICYmIChtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS0+Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpID09IEdyYXBo
aWNzQ29udGV4dDNEOjpOT19FUlJPUik7CiB9CiAKLXZvaWQgQ2FudmFzMkRMYXllckNocm9taXVt
OjpwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIC8qIG9jY2x1ZGVkU2NyZWVuU3Bh
Y2UgKi8pCit2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHko
KQogewogICAgIGlmICghZHJhd3NDb250ZW50KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5
ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q2FudmFzMkRMYXllckNocm9taXVtLmgKaW5kZXggZWNiYTkwZjRlZDE2MmM2OGRjNGYwOGU2MTBi
ZGQ0ZjcyZDliMzM5NC4uODM2MTVhMWYyMjM1NjE2NDYyZWIxZjhkNDEyMmUxYWQ4ZTU4YzkyMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2Fu
dmFzMkRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgKQEAgLTQwLDcgKzQwLDYgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7Ci1jbGFzcyBSZWdp
b247CiAKIC8vIEEgbGF5ZXIgY29udGFpbmluZyBhbiBhY2NlbGVyYXRlZCAyZCBjYW52YXMKIGNs
YXNzIENhbnZhczJETGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBDYW52YXNMYXllckNocm9taXVtIHsK
QEAgLTUzLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjb250ZW50Q2hhbmdl
ZCgpOwogCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0OwotICAgIHZpcnR1
YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVu
U3BhY2UpOworICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eSgpOwogCiAgICAg
dmlydHVhbCB2b2lkIHNldExheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0Kik7CiAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBD
Q1RleHR1cmVVcGRhdGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKaW5k
ZXggMzQzMDMxMTBmYTljYWZkZjI2Y2E5YmNmZWQ2ZTI0YzRmNDAyZjJhYS4uNTI5ZmNlMDM2NGE4
Mjg1NWFhNDA2Mzk3MTU2ZTBmYmI0ZTNhOTUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNo
cm9taXVtLmNwcApAQCAtOTMsNyArOTMsNyBAQCBib29sIENvbnRlbnRMYXllckNocm9taXVtOjpk
cmF3c0NvbnRlbnQoKSBjb25zdAogICAgIHJldHVybiBUaWxlZExheWVyQ2hyb21pdW06OmRyYXdz
Q29udGVudCgpICYmIG1fZGVsZWdhdGU7CiB9CiAKLXZvaWQgQ29udGVudExheWVyQ2hyb21pdW06
OnBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lvbiYgLyogb2NjbHVkZWRTY3JlZW5TcGFj
ZSAqLykKK3ZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KCkK
IHsKICAgICB1cGRhdGVUaWxlU2l6ZUFuZFRpbGluZ09wdGlvbigpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJv
bWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVu
dExheWVyQ2hyb21pdW0uaAppbmRleCA1ZWZmNmEzZDYwYTEyZDEyMGViNzIwMDBkMzUwYjFmYjU4
MzhlYTgzLi40MjY2NzljYWZhYmI3Mzk0YzAyZTc5MDFiZTMzMmQ3YmNiNWUwODFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5
ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKQEAgLTQxLDcgKzQxLDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBMYXllclRpbGVyQ2hyb21pdW07CiBjbGFzcyBMYXllclRleHR1cmVV
cGRhdGVyOwotY2xhc3MgUmVnaW9uOwogCiBjbGFzcyBDb250ZW50TGF5ZXJEZWxlZ2F0ZSB7CiBw
dWJsaWM6CkBAIC01OSw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyRGVsZWdhdGUo
KSB7IG1fZGVsZWdhdGUgPSAwOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkg
Y29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IFJlZ2lv
biYgb2NjbHVkZWRTY3JlZW5TcGFjZSk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJ
ZkRpcnR5KCk7CiAgICAgdmlydHVhbCB2b2lkIGlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSgpOwog
CiAgICAgdmlydHVhbCB2b2lkIHNldE9wYXF1ZShib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hy
b21pdW0uY3BwCmluZGV4IDgzMWNiZTgwOTYzYTNhODAwYjhhYTQ2YTY5OTQ4ZjRmYzdmNWVjN2Uu
LjAxNTRmYjI4MzE0ZjNlNmM5MjQwNDdiYjQ4MzY3MzY5MmRmY2ZhYjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1h
Z2VMYXllckNocm9taXVtLmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQgSW1hZ2VMYXllckNo
cm9taXVtOjpzZXRDb250ZW50cyhJbWFnZSogY29udGVudHMpCiAgICAgc2V0TmVlZHNEaXNwbGF5
KCk7CiB9CiAKLXZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eShj
b25zdCBSZWdpb24mIC8qIG9jY2x1ZGVkU2NyZWVuU3BhY2UgKi8pCit2b2lkIEltYWdlTGF5ZXJD
aHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoKQogewogICAgIGlmIChtX25lZWRzRGlzcGxh
eSkgewogICAgICAgICBtX3RleHR1cmVVcGRhdGVyLT51cGRhdGVGcm9tSW1hZ2UobV9jb250ZW50
cy0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1
bS5oCmluZGV4IGFiNWMxYjI3YjJjNzVhNzVhZTM0Mzc5M2NhNTM4NzlmMjU1MWRkMTYuLmQ3MTI5
MjQ1MWMzNTU1ZWFmMGMxNmNmOWYyYzNmMzk1YmUwNzUzMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJD
aHJvbWl1bS5oCkBAIC00NSw3ICs0NSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
SW1hZ2U7CiBjbGFzcyBJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXI7Ci1jbGFzcyBSZWdpb247CiAK
IC8vIEEgTGF5ZXIgdGhhdCBjb250YWlucyBvbmx5IGFuIEltYWdlIGVsZW1lbnQuCiBjbGFzcyBJ
bWFnZUxheWVyQ2hyb21pdW0gOiBwdWJsaWMgVGlsZWRMYXllckNocm9taXVtIHsKQEAgLTU0LDcg
KzUzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkltYWdlTGF5ZXJDaHJvbWl1bSgpOwogCiAg
ICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBw
YWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UpOwor
ICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eSgpOwogICAgIHZpcnR1YWwgYm9v
bCBuZWVkc0NvbnRlbnRzU2NhbGUoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0Q29udGVudHMoSW1h
Z2UqIGltYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggYjJmNzAxNDFiNDdhNWQ0N2I0
NDAyOTM4MGQzOGNiM2RjM2M1YjMyOC4uZGU1YzcwMjVmYTY0ZWRlODQxN2FjMzY1YjE5OGM1Njdl
MmNkZmFkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTM5LDcgKzM5LDYgQEAKICNpbmNs
dWRlICJOYXRpdmVJbWFnZVNraWEuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRTa2lhLmgi
CiAjZW5kaWYKLSNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJSZW5kZXJMYXllckJhY2tp
bmcuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAjaW5jbHVkZSAic2tpYS9leHQvcGxhdGZv
cm1fY2FudmFzLmgiCkBAIC00NzAsMzUgKzQ2OSw2IEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0
Q29udGVudHNTY2FsZShmbG9hdCBjb250ZW50c1NjYWxlKQogICAgIHNldE5lZWRzRGlzcGxheSgp
OwogfQogCi1UcmFuc2Zvcm1hdGlvbk1hdHJpeCBMYXllckNocm9taXVtOjpjb250ZW50VG9TY3Jl
ZW5TcGFjZVRyYW5zZm9ybSgpIGNvbnN0Ci17Ci0gICAgSW50U2l6ZSBib3VuZHNJbkxheWVyU3Bh
Y2UgPSBib3VuZHMoKTsKLSAgICBJbnRTaXplIGJvdW5kc0luQ29udGVudFNwYWNlID0gY29udGVu
dEJvdW5kcygpOwotCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtID0gc2NyZWVu
U3BhY2VUcmFuc2Zvcm0oKTsKLQotICAgIC8vIFNjYWxlIGZyb20gY29udGVudCBzcGFjZSB0byBs
YXllciBzcGFjZQotICAgIHRyYW5zZm9ybS5zY2FsZU5vblVuaWZvcm0oYm91bmRzSW5MYXllclNw
YWNlLndpZHRoKCkgLyBzdGF0aWNfY2FzdDxkb3VibGU+KGJvdW5kc0luQ29udGVudFNwYWNlLndp
ZHRoKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRzSW5MYXllclNwYWNl
LmhlaWdodCgpIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihib3VuZHNJbkNvbnRlbnRTcGFjZS5oZWln
aHQoKSkpOwotCi0gICAgcmV0dXJuIHRyYW5zZm9ybTsKLX0KLQotdm9pZCBMYXllckNocm9taXVt
OjphZGRTZWxmVG9PY2NsdWRlZFNjcmVlblNwYWNlKFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFj
ZSkKLXsKLSAgICBpZiAoIW9wYXF1ZSgpIHx8IGRyYXdPcGFjaXR5KCkgIT0gMSB8fCAhaXNQYWlu
dGVkQXhpc0FsaWduZWRJblNjcmVlbigpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBGbG9hdFJl
Y3QgdGFyZ2V0UmVjdCA9IGNvbnRlbnRUb1NjcmVlblNwYWNlVHJhbnNmb3JtKCkubWFwUmVjdChG
bG9hdFJlY3QodmlzaWJsZUxheWVyUmVjdCgpKSk7Ci0gICAgb2NjbHVkZWRTY3JlZW5TcGFjZS51
bml0ZShlbmNsb3NlZEludFJlY3QodGFyZ2V0UmVjdCkpOwotfQotCi1ib29sIExheWVyQ2hyb21p
dW06OmlzUGFpbnRlZEF4aXNBbGlnbmVkSW5TY3JlZW4oKSBjb25zdAotewotICAgIEZsb2F0UXVh
ZCBxdWFkID0gY29udGVudFRvU2NyZWVuU3BhY2VUcmFuc2Zvcm0oKS5tYXBRdWFkKEZsb2F0UXVh
ZCh2aXNpYmxlTGF5ZXJSZWN0KCkpKTsKLSAgICByZXR1cm4gcXVhZC5pc1JlY3RpbGluZWFyKCk7
Ci19Ci0KIHZvaWQgTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlUmVuZGVyU3VyZmFjZSgpCiB7CiAgICAg
QVNTRVJUKCFtX3JlbmRlclN1cmZhY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDc2NGY3MzAx
NTViNTQ1MzdjZGE0YzczODFiM2ZkM2JjYjc5NjA2NGQuLjk0NWVlOGUxYzRjNWI0NTU5NDMwN2E3
NjJjZDYwMGI5NjY1ZTBhYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTU1LDcgKzU1LDYgQEAg
Y2xhc3MgQ0NMYXllckltcGw7CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3Q7CiBjbGFzcyBDQ1RleHR1
cmVVcGRhdGVyOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7Ci1jbGFzcyBSZWdpb247CiAKIC8v
IEJhc2UgY2xhc3MgZm9yIGNvbXBvc2l0ZWQgbGF5ZXJzLiBTcGVjaWFsIGxheWVyIHR5cGVzIGFy
ZSBkZXJpdmVkIGZyb20KIC8vIHRoaXMgY2xhc3MuCkBAIC0xNTQsNyArMTUzLDcgQEAgcHVibGlj
OgogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyB0eXBpY2FsbHkgbmVlZCB0byBiZSBvdmVyd3JpdHRl
biBieSBkZXJpdmVkIGNsYXNzZXMuCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNv
bnN0IHsgcmV0dXJuIG1faXNEcmF3YWJsZTsgfQotICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRl
bnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIC8qIG9jY2x1ZGVkU2NyZWVuU3BhY2UgKi8pIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eSgpIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBpZGxlUGFpbnRDb250ZW50c0lmRGlydHkoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0
ZXImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0SXNNYXNrKGJvb2wpIHsgfQpAQCAtMTgzLDEw
ICsxODIsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDbGlwUmVjdChjb25zdCBJbnRSZWN0JiBj
bGlwUmVjdCkgeyBtX2NsaXBSZWN0ID0gY2xpcFJlY3Q7IH0KICAgICBSZW5kZXJTdXJmYWNlQ2hy
b21pdW0qIHRhcmdldFJlbmRlclN1cmZhY2UoKSBjb25zdCB7IHJldHVybiBtX3RhcmdldFJlbmRl
clN1cmZhY2U7IH0KICAgICB2b2lkIHNldFRhcmdldFJlbmRlclN1cmZhY2UoUmVuZGVyU3VyZmFj
ZUNocm9taXVtKiBzdXJmYWNlKSB7IG1fdGFyZ2V0UmVuZGVyU3VyZmFjZSA9IHN1cmZhY2U7IH0K
LSAgICAvLyBUaGlzIG1vdmVzIGZyb20gbGF5ZXIgc3BhY2UsIHdpdGggb3JpZ2luIGluIHRoZSBj
ZW50ZXIgdG8gdGFyZ2V0IHNwYWNlIHdpdGggb3JpZ2luIGluIHRoZSB0b3AgbGVmdAogICAgIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4g
bV9kcmF3VHJhbnNmb3JtOyB9CiAgICAgdm9pZCBzZXREcmF3VHJhbnNmb3JtKGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpIHsgbV9kcmF3VHJhbnNmb3JtID0gbWF0cml4OyB9Ci0g
ICAgLy8gVGhpcyBtb3ZlcyBmcm9tIGxheWVyIHNwYWNlLCB3aXRoIG9yaWdpbiB0aGUgdG9wIGxl
ZnQgdG8gc2NyZWVuIHNwYWNlIHdpdGggb3JpZ2luIGluIHRoZSB0b3AgbGVmdAogICAgIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBzY3JlZW5TcGFjZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2NyZWVuU3BhY2VUcmFuc2Zvcm07IH0KICAgICB2b2lkIHNldFNjcmVlblNwYWNlVHJh
bnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpIHsgbV9zY3JlZW5TcGFj
ZVRyYW5zZm9ybSA9IG1hdHJpeDsgfQogICAgIGNvbnN0IEludFJlY3QmIGRyYXdhYmxlQ29udGVu
dFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2RyYXdhYmxlQ29udGVudFJlY3Q7IH0KQEAgLTE5NCwx
MSArMTkxLDYgQEAgcHVibGljOgogICAgIGZsb2F0IGNvbnRlbnRzU2NhbGUoKSBjb25zdCB7IHJl
dHVybiBtX2NvbnRlbnRzU2NhbGU7IH0KICAgICB2b2lkIHNldENvbnRlbnRzU2NhbGUoZmxvYXQp
OwogCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY29udGVudFRvU2NyZWVuU3BhY2VUcmFuc2Zv
cm0oKSBjb25zdDsKLQotICAgIC8vIEFkZHMgYW55IG9wYXF1ZSB2aXNpYmxlIHBpeGVscyB0byB0
aGUgb2NjbHVkZWQgcmVnaW9uLgotICAgIHZpcnR1YWwgdm9pZCBhZGRTZWxmVG9PY2NsdWRlZFNj
cmVlblNwYWNlKFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSk7Ci0KICAgICAvLyBSZXR1cm5z
IHRydWUgaWYgYW55IG9mIHRoZSBsYXllcidzIGRlc2NlbmRhbnRzIGhhcyBjb250ZW50IHRvIGRy
YXcuCiAgICAgYm9vbCBkZXNjZW5kYW50RHJhd3NDb250ZW50KCk7CiAgICAgdmlydHVhbCB2b2lk
IGNvbnRlbnRDaGFuZ2VkKCkgeyB9CkBAIC0yMTksOCArMjExLDYgQEAgcHJvdGVjdGVkOgogICAg
IC8vIGhvbGQgY29udGV4dC1kZXBlbmRlbnQgcmVzb3VyY2VzIHN1Y2ggYXMgdGV4dHVyZXMuCiAg
ICAgdmlydHVhbCB2b2lkIGNsZWFudXBSZXNvdXJjZXMoKTsKIAotICAgIGJvb2wgaXNQYWludGVk
QXhpc0FsaWduZWRJblNjcmVlbigpIGNvbnN0OwotCiAgICAgdm9pZCBzZXROZWVkc0NvbW1pdCgp
OwogCiAgICAgLy8gVGhpcyBmbGFnIGlzIHNldCB3aGVuIGxheWVyIG5lZWQgcmVwYWludGluZy91
cGRhdGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmgKaW5kZXggYmY0OTg4YzI1
Mzc5Y2UyM2E0MDEyYTgxNDZkYjVhODYyZDAzOWYyMC4uNGUxODIyYjMxOGM1ZTFkMjU3YTkwOGU0
MmE0ZGMyODg0NmI1YjJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmgKQEAg
LTYzLDggKzYzLDYgQEAgcHVibGljOgogICAgIGZsb2F0IGRyYXdPcGFjaXR5KCkgY29uc3QgeyBy
ZXR1cm4gbV9kcmF3T3BhY2l0eTsgfQogICAgIHZvaWQgc2V0RHJhd09wYWNpdHkoZmxvYXQgZHJh
d09wYWNpdHkpIHsgbV9kcmF3T3BhY2l0eSA9IGRyYXdPcGFjaXR5OyB9CiAKLSAgICAvLyBUaGlz
IGdvZXMgZnJvbSBjb250ZW50IHNwYWNlIHdpdGggdGhlIG9yaWdpbiBpbiB0aGUgY2VudGVyIG9m
IHRoZSByZWN0IGJlaW5nIHRyYW5zZm9ybWVkIHRvIHRoZSB0YXJnZXQgc3BhY2Ugd2l0aCB0aGUg
b3JpZ2luIGluIHRoZSB0b3AgbGVmdCBvZiB0aGUKLSAgICAvLyByZWN0IGJlaW5nIHRyYW5zZm9y
bWVkLiBQb3NpdGlvbiB0aGUgcmVjdCBzbyB0aGF0IHRoZSBvcmlnaW4gaXMgaW4gdGhlIGNlbnRl
ciBvZiBpdCBiZWZvcmUgYXBwbHlpbmcgdGhpcyB0cmFuc2Zvcm0uCiAgICAgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX2RyYXdUcmFu
c2Zvcm07IH0KICAgICB2b2lkIHNldERyYXdUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIGRyYXdUcmFuc2Zvcm0pIHsgbV9kcmF3VHJhbnNmb3JtID0gZHJhd1RyYW5zZm9ybTsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAppbmRleCAyODNhYThkZDA5YmEyM2Zk
NzQ0MzNhY2EzMmE2NzM1Mzg4M2M5YTAwLi4wYjBjOWJmNGU3NjFhY2NmOWZhYWU0MGNjZmU0MjI0
YWQwZmYzNTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTQ4OCwzNSAr
NDg4LDYgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnJlc2VydmVUZXh0dXJlcygpCiAgICAg
fQogfQogCi12b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6YWRkU2VsZlRvT2NjbHVkZWRTY3JlZW5T
cGFjZShSZWdpb24mIG9jY2x1ZGVkU2NyZWVuU3BhY2UpCi17Ci0gICAgaWYgKG1fc2tpcHNEcmF3
IHx8IGRyYXdPcGFjaXR5KCkgIT0gMSB8fCAhaXNQYWludGVkQXhpc0FsaWduZWRJblNjcmVlbigp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAob3BhcXVlKCkpIHsKLSAgICAgICAgTGF5ZXJD
aHJvbWl1bTo6YWRkU2VsZlRvT2NjbHVkZWRTY3JlZW5TcGFjZShvY2NsdWRlZFNjcmVlblNwYWNl
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEludFJlY3QgdmlzaWJsZVJlY3QgPSB2
aXNpYmxlTGF5ZXJSZWN0KCk7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY29udGVudFRyYW5z
Zm9ybSA9IGNvbnRlbnRUb1NjcmVlblNwYWNlVHJhbnNmb3JtKCk7Ci0KLSAgICAvLyBGSVhNRTog
Q3JlYXRlL1VzZSBhIEZsb2F0UmVnaW9uIGZvciB0aGUgb2NjbHVkZWRTY3JlZW5TcGFjZSwgaW5z
dGVhZCBvZiBhIFJlZ2lvbiBiYXNlZCBvbiBpbnRzLCB0byBhdm9pZCB0aGlzIHN0ZXAgYW5kIGdl
dCBiZXR0ZXIgYWNjdXJhY3kgYmV0d2VlbiBsYXllcnMgaW4gdGFyZ2V0IHNwYWNlLgotICAgIFJl
Z2lvbiB0aWxlUmVnaW9uOwotICAgIGludCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b207Ci0gICAg
bV90aWxlci0+bGF5ZXJSZWN0VG9UaWxlSW5kaWNlcyh2aXNpYmxlTGF5ZXJSZWN0KCksIGxlZnQs
IHRvcCwgcmlnaHQsIGJvdHRvbSk7Ci0gICAgZm9yIChpbnQgaiA9IHRvcDsgaiA8PSBib3R0b207
ICsraikgewotICAgICAgICBmb3IgKGludCBpID0gbGVmdDsgaSA8PSByaWdodDsgKytpKSB7Ci0g
ICAgICAgICAgICBVcGRhdGFibGVUaWxlKiB0aWxlID0gdGlsZUF0KGksIGopOwotICAgICAgICAg
ICAgaWYgKHRpbGUpIHsKLSAgICAgICAgICAgICAgICBJbnRSZWN0IHZpc2libGVUaWxlT3BhcXVl
UmVjdCA9IGludGVyc2VjdGlvbih2aXNpYmxlUmVjdCwgdGlsZS0+bV9vcGFxdWVSZWN0KTsKLSAg
ICAgICAgICAgICAgICBGbG9hdFJlY3Qgc2NyZWVuUmVjdCA9IGNvbnRlbnRUcmFuc2Zvcm0ubWFw
UmVjdChGbG9hdFJlY3QodmlzaWJsZVRpbGVPcGFxdWVSZWN0KSk7Ci0gICAgICAgICAgICAgICAg
b2NjbHVkZWRTY3JlZW5TcGFjZS51bml0ZShlbmNsb3NlZEludFJlY3Qoc2NyZWVuUmVjdCkpOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCiB2b2lkIFRpbGVkTGF5ZXJDaHJv
bWl1bTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCkKIHsKICAgICBt
X3NraXBzRHJhdyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaAppbmRleCAzY2Ji
YmNiZDdhNDUyNTQyMzVlMzk1NTUwMjBjMzAzNjhlNzFlYzQ2Li4xOGUwMjljMGRjODdmY2U1OGI3
MzZlYTk4NWQ5M2E0YmM4ZDcyNjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaApAQCAt
MzUsNyArMzUsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBMYXllclRleHR1cmVV
cGRhdGVyOwotY2xhc3MgUmVnaW9uOwogY2xhc3MgVXBkYXRhYmxlVGlsZTsKIAogY2xhc3MgVGls
ZWRMYXllckNocm9taXVtIDogcHVibGljIExheWVyQ2hyb21pdW0gewpAQCAtNjQsOCArNjMsNiBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXJ2ZVRleHR1cmVzKCk7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgYWRkU2VsZlRvT2NjbHVkZWRTY3JlZW5TcGFjZShSZWdpb24mIG9jY2x1ZGVk
U2NyZWVuU3BhY2UpOwotCiBwcm90ZWN0ZWQ6CiAgICAgVGlsZWRMYXllckNocm9taXVtKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDRmZjg0MzRiMjAwYzkyZDQ4YTA4
YmY5MWMxNGIyN2Y4MjE5ZGRhYjYuLjYyZDZjZTIzMGZkMGYxYmM2YmFiZTI0NDA2MTU0ZjY3OTZj
NGUxYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtMjksNyArMjksNiBA
QAogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJMYXllclBhaW50ZXJDaHJv
bWl1bS5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgIlJl
Z2lvbi5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJUcmVlU3luY2hyb25p
emVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllckl0ZXJhdG9yLmgiCkBAIC00MTQsMTIgKzQxMywx
MiBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cmVzZXJ2ZVRleHR1cmVzKCkKIH0KIAogLy8gc3Rh
dGljCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRDb250ZW50c0lmRGlydHkoTGF5ZXJDaHJv
bWl1bSogbGF5ZXIsIFBhaW50VHlwZSBwYWludFR5cGUsIGNvbnN0IFJlZ2lvbiYgb2NjbHVkZWRT
Y3JlZW5TcGFjZSkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludENvbnRlbnRzSWZEaXJ0eShM
YXllckNocm9taXVtKiBsYXllciwgUGFpbnRUeXBlIHBhaW50VHlwZSkKIHsKICAgICBBU1NFUlQo
bGF5ZXIpOwogICAgIEFTU0VSVChQYWludFZpc2libGUgPT0gcGFpbnRUeXBlIHx8IFBhaW50SWRs
ZSA9PSBwYWludFR5cGUpOwogICAgIGlmIChQYWludFZpc2libGUgPT0gcGFpbnRUeXBlKQotICAg
ICAgICBsYXllci0+cGFpbnRDb250ZW50c0lmRGlydHkob2NjbHVkZWRTY3JlZW5TcGFjZSk7Cisg
ICAgICAgIGxheWVyLT5wYWludENvbnRlbnRzSWZEaXJ0eSgpOwogICAgIGVsc2UKICAgICAgICAg
bGF5ZXItPmlkbGVQYWludENvbnRlbnRzSWZEaXJ0eSgpOwogfQpAQCAtNDMwLDkzICs0MjksMzUg
QEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJm
YWNlKExheWVyQ2hyb21pdW0qIHJlbmRlclMKICAgICAvLyBpbiBjb2RlLCB3ZSBhbHJlYWR5IGtu
b3cgdGhhdCBhdCBsZWFzdCBzb21ldGhpbmcgd2lsbCBiZSBkcmF3biBpbnRvIHRoaXMgcmVuZGVy
IHN1cmZhY2UsIHNvIHRoZQogICAgIC8vIG1hc2sgYW5kIHJlcGxpY2Egc2hvdWxkIGJlIHBhaW50
ZWQuCiAKLSAgICAvLyBGSVhNRTogSWYgdGhlIHN1cmZhY2UgaGFzIGEgcmVwbGljYSwgaXQgc2hv
dWxkIGJlIHBhaW50ZWQgd2l0aCBvY2NsdXNpb24gdGhhdCBleGNsdWRlcyB0aGUgY3VycmVudCB0
YXJnZXQgc3VyZmFjZSBzdWJ0cmVlLgotICAgIFJlZ2lvbiBub09jY2x1c2lvbjsKLQogICAgIGlm
IChyZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpKSB7CiAgICAgICAgIHJlbmRlclN1cmZh
Y2VMYXllci0+bWFza0xheWVyKCktPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2lu
dCgpLCByZW5kZXJTdXJmYWNlTGF5ZXItPmNvbnRlbnRCb3VuZHMoKSkpOwotICAgICAgICBwYWlu
dENvbnRlbnRzSWZEaXJ0eShyZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpLCBwYWludFR5
cGUsIG5vT2NjbHVzaW9uKTsKKyAgICAgICAgcGFpbnRDb250ZW50c0lmRGlydHkocmVuZGVyU3Vy
ZmFjZUxheWVyLT5tYXNrTGF5ZXIoKSwgcGFpbnRUeXBlKTsKICAgICB9CiAKICAgICBMYXllckNo
cm9taXVtKiByZXBsaWNhTGF5ZXIgPSByZW5kZXJTdXJmYWNlTGF5ZXItPnJlcGxpY2FMYXllcigp
OwogICAgIGlmIChyZXBsaWNhTGF5ZXIpIHsKLSAgICAgICAgcGFpbnRDb250ZW50c0lmRGlydHko
cmVwbGljYUxheWVyLCBwYWludFR5cGUsIG5vT2NjbHVzaW9uKTsKKyAgICAgICAgcGFpbnRDb250
ZW50c0lmRGlydHkocmVwbGljYUxheWVyLCBwYWludFR5cGUpOwogCiAgICAgICAgIGlmIChyZXBs
aWNhTGF5ZXItPm1hc2tMYXllcigpKSB7CiAgICAgICAgICAgICByZXBsaWNhTGF5ZXItPm1hc2tM
YXllcigpLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgcmVwbGljYUxh
eWVyLT5tYXNrTGF5ZXIoKS0+Y29udGVudEJvdW5kcygpKSk7Ci0gICAgICAgICAgICBwYWludENv
bnRlbnRzSWZEaXJ0eShyZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLCBwYWludFR5cGUsIG5vT2Nj
bHVzaW9uKTsKKyAgICAgICAgICAgIHBhaW50Q29udGVudHNJZkRpcnR5KHJlcGxpY2FMYXllci0+
bWFza0xheWVyKCksIHBhaW50VHlwZSk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKLXN0cnVjdCBS
ZW5kZXJTdXJmYWNlUmVnaW9uIHsKLSAgICBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHN1cmZhY2U7
Ci0gICAgUmVnaW9uIG9jY2x1ZGVkSW5TY3JlZW47Ci19OwotCi0vLyBBZGQgdGhlIHN1cmZhY2Ug
dG8gdGhlIHRvcCBvZiB0aGUgc3RhY2sgYW5kIGNvcHkgdGhlIG9jY2x1c2lvbiBmcm9tIHRoZSBv
bGQgdG9wIG9mIHRoZSBzdGFjayB0byB0aGUgbmV3Lgotc3RhdGljIHZvaWQgZW50ZXJUYXJnZXRS
ZW5kZXJTdXJmYWNlKFZlY3RvcjxSZW5kZXJTdXJmYWNlUmVnaW9uPiYgc3RhY2ssIFJlbmRlclN1
cmZhY2VDaHJvbWl1bSogbmV3VGFyZ2V0KQotewotICAgIGlmIChzdGFjay5pc0VtcHR5KCkpIHsK
LSAgICAgICAgc3RhY2suYXBwZW5kKFJlbmRlclN1cmZhY2VSZWdpb24oKSk7Ci0gICAgICAgIHN0
YWNrLmxhc3QoKS5zdXJmYWNlID0gbmV3VGFyZ2V0OwotICAgIH0gZWxzZSBpZiAoc3RhY2subGFz
dCgpLnN1cmZhY2UgIT0gbmV3VGFyZ2V0KSB7Ci0gICAgICAgIGNvbnN0IFJlbmRlclN1cmZhY2VS
ZWdpb24mIHByZXZpb3VzID0gc3RhY2subGFzdCgpOwotICAgICAgICBzdGFjay5hcHBlbmQoUmVu
ZGVyU3VyZmFjZVJlZ2lvbigpKTsKLSAgICAgICAgc3RhY2subGFzdCgpLnN1cmZhY2UgPSBuZXdU
YXJnZXQ7Ci0gICAgICAgIHN0YWNrLmxhc3QoKS5vY2NsdWRlZEluU2NyZWVuID0gcHJldmlvdXMu
b2NjbHVkZWRJblNjcmVlbjsKLSAgICB9Ci19Ci0KLS8vIFBvcCB0aGUgdG9wIG9mIHRoZSBzdGFj
ayBvZmYsIHB1c2ggb24gdGhlIG5ldyBzdXJmYWNlLCBhbmQgbWVyZ2UgdGhlIG9sZCB0b3AncyBv
Y2NsdXNpb24gaW50byB0aGUgbmV3IHRvcCBzdXJmYWNlLgotc3RhdGljIHZvaWQgbGVhdmVUYXJn
ZXRSZW5kZXJTdXJmYWNlKFZlY3RvcjxSZW5kZXJTdXJmYWNlUmVnaW9uPiYgc3RhY2ssIFJlbmRl
clN1cmZhY2VDaHJvbWl1bSogbmV3VGFyZ2V0KQotewotICAgIGludCBsYXN0SW5kZXggPSBzdGFj
ay5zaXplKCkgLSAxOwotICAgIGJvb2wgc3VyZmFjZVdpbGxCZUF0VG9wQWZ0ZXJQb3AgPSBzdGFj
ay5zaXplKCkgPiAxICYmIHN0YWNrW2xhc3RJbmRleCAtIDFdLnN1cmZhY2UgPT0gbmV3VGFyZ2V0
OwotCi0gICAgaWYgKHN1cmZhY2VXaWxsQmVBdFRvcEFmdGVyUG9wKSB7Ci0gICAgICAgIC8vIE1l
cmdlIHRoZSB0b3Agb2YgdGhlIHN0YWNrIGRvd24uCi0gICAgICAgIHN0YWNrW2xhc3RJbmRleCAt
IDFdLm9jY2x1ZGVkSW5TY3JlZW4udW5pdGUoc3RhY2tbbGFzdEluZGV4XS5vY2NsdWRlZEluU2Ny
ZWVuKTsKLSAgICAgICAgc3RhY2sucmVtb3ZlTGFzdCgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAg
IC8vIFJlcGxhY2UgdGhlIHRvcCBvZiB0aGUgc3RhY2sgd2l0aCB0aGUgbmV3IHB1c2hlZCBzdXJm
YWNlLiBDb3B5IHRoZSBvY2NsdWRlZCByZWdpb24gdG8gdGhlIHRvcC4KLSAgICAgICAgc3RhY2su
bGFzdCgpLnN1cmZhY2UgPSBuZXdUYXJnZXQ7Ci0gICAgfQotfQotCiB2b2lkIENDTGF5ZXJUcmVl
SG9zdDo6cGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdCwgUGFpbnRUeXBlIHBhaW50VHlwZSkKIHsKICAgICAvLyBVc2UgRnJvbnRUb0JhY2sg
dG8gYWxsb3cgZm9yIHRlc3Rpbmcgb2NjbHVzaW9uIGFuZCBwZXJmb3JtaW5nIGN1bGxpbmcgZHVy
aW5nIHRoZSB0cmVlIHdhbGsuCiAgICAgdHlwZWRlZiBDQ0xheWVySXRlcmF0b3I8TGF5ZXJDaHJv
bWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtLCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpGcm9u
dFRvQmFjaz4gQ0NMYXllckl0ZXJhdG9yVHlwZTsKIAotICAgIC8vIFRoZSBzdGFjayBob2xkcyBv
Y2NsdWRlZCByZWdpb25zIGZvciBzdWJ0cmVlcyBpbiB0aGUgUmVuZGVyU3VyZmFjZS1MYXllciB0
cmVlLCBzbyB0aGF0IHdoZW4gd2UgbGVhdmUgYSBzdWJ0cmVlIHdlIG1heQotICAgIC8vIGFwcGx5
IGEgbWFzayB0byBpdCwgYnV0IG5vdCB0byB0aGUgcGFydHMgb3V0c2lkZSB0aGUgc3VidHJlZS4K
LSAgICAvLyAtIFRoZSBmaXJzdCB0aW1lIHdlIHNlZSBhIG5ldyBzdWJ0cmVlIHVuZGVyIGEgdGFy
Z2V0LCB3ZSBhZGQgdGhhdCB0YXJnZXQgdG8gdGhlIHRvcCBvZiB0aGUgc3RhY2suIFRoaXMgY2Fu
IGhhcHBlbiBhcyBhIGxheWVyIHJlcHJlc2VudGluZyBpdHNlbGYsIG9yIGFzIGEgdGFyZ2V0IHN1
cmZhY2UuCi0gICAgLy8gLSBXaGVuIHdlIHZpc2l0IGEgdGFyZ2V0IHN1cmZhY2UsIHdlIGFwcGx5
IGl0cyBtYXNrIHRvIGl0cyBzdWJ0cmVlLCB3aGljaCBpcyBhdCB0aGUgdG9wIG9mIHRoZSBzdGFj
ay4KLSAgICAvLyAtIFdoZW4gd2UgdmlzaXQgYSBsYXllciByZXByZXNlbnRpbmcgaXRzZWxmLCB3
ZSBhZGQgaXRzIG9jY2x1c2lvbiB0byB0aGUgY3VycmVudCBzdWJ0cmVlLCB3aGljaCBpcyBhdCB0
aGUgdG9wIG9mIHRoZSBzdGFjay4KLSAgICAvLyAtIFdoZW4gd2UgdmlzaXQgYSBsYXllciByZXBy
ZXNlbnRpbmcgYSBjb250cmlidXRpbmcgc3VyZmFjZSwgdGhlIGN1cnJlbnQgdGFyZ2V0IHdpbGwg
bmV2ZXIgYmUgdGhlIHRvcCBvZiB0aGUgc3RhY2sgc2luY2Ugd2UganVzdCBjYW1lIGZyb20gdGhl
IGNvbnRyaWJ1dGluZyBzdXJmYWNlLgotICAgIC8vIFdlIG1lcmdlIHRoZSBvY2NsdXNpb24gYXQg
dGhlIHRvcCBvZiB0aGUgc3RhY2sgd2l0aCB0aGUgbmV3IGN1cnJlbnQgc3VidHJlZS4gVGhpcyBu
ZXcgdGFyZ2V0IGlzIHB1c2hlZCBvbnRvIHRoZSBzdGFjayBpZiBub3QgYWxyZWFkeSB0aGVyZS4K
LSAgICBWZWN0b3I8UmVuZGVyU3VyZmFjZVJlZ2lvbj4gdGFyZ2V0U3VyZmFjZVN0YWNrOwotCiAg
ICAgQ0NMYXllckl0ZXJhdG9yVHlwZSBlbmQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjplbmQoJnJl
bmRlclN1cmZhY2VMYXllckxpc3QpOwogICAgIGZvciAoQ0NMYXllckl0ZXJhdG9yVHlwZSBpdCA9
IENDTGF5ZXJJdGVyYXRvclR5cGU6OmJlZ2luKCZyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsgaXQg
IT0gZW5kOyArK2l0KSB7CiAgICAgICAgIGlmIChpdC5yZXByZXNlbnRzVGFyZ2V0UmVuZGVyU3Vy
ZmFjZSgpKSB7CiAgICAgICAgICAgICBBU1NFUlQoaXQtPnJlbmRlclN1cmZhY2UoKS0+ZHJhd09w
YWNpdHkoKSk7Ci0KLSAgICAgICAgICAgIGVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZSh0YXJnZXRT
dXJmYWNlU3RhY2ssIGl0LT5yZW5kZXJTdXJmYWNlKCkpOwogICAgICAgICAgICAgcGFpbnRNYXNr
QW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UoKml0LCBwYWludFR5cGUpOwotICAgICAgICAgICAg
Ly8gRklYTUU6IGFkZCB0aGUgcmVwbGljYSBsYXllciB0byB0aGUgY3VycmVudCBvY2NsdXNpb24K
LQotICAgICAgICAgICAgaWYgKGl0LT5tYXNrTGF5ZXIoKSB8fCBpdC0+cmVuZGVyU3VyZmFjZSgp
LT5kcmF3T3BhY2l0eSgpIDwgMSkKLSAgICAgICAgICAgICAgICB0YXJnZXRTdXJmYWNlU3RhY2su
bGFzdCgpLm9jY2x1ZGVkSW5TY3JlZW4gPSBSZWdpb24oKTsKICAgICAgICAgfSBlbHNlIGlmIChp
dC5yZXByZXNlbnRzSXRzZWxmKCkpIHsKICAgICAgICAgICAgIEFTU0VSVCghaXQtPmJvdW5kcygp
LmlzRW1wdHkoKSk7Ci0KLSAgICAgICAgICAgIGVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZSh0YXJn
ZXRTdXJmYWNlU3RhY2ssIGl0LT50YXJnZXRSZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICAgICAg
cGFpbnRDb250ZW50c0lmRGlydHkoKml0LCBwYWludFR5cGUsIHRhcmdldFN1cmZhY2VTdGFjay5s
YXN0KCkub2NjbHVkZWRJblNjcmVlbik7Ci0gICAgICAgICAgICBpdC0+YWRkU2VsZlRvT2NjbHVk
ZWRTY3JlZW5TcGFjZSh0YXJnZXRTdXJmYWNlU3RhY2subGFzdCgpLm9jY2x1ZGVkSW5TY3JlZW4p
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbGVhdmVUYXJnZXRSZW5kZXJTdXJmYWNl
KHRhcmdldFN1cmZhY2VTdGFjaywgaXQudGFyZ2V0UmVuZGVyU3VyZmFjZUxheWVyKCktPnJlbmRl
clN1cmZhY2UoKSk7CisgICAgICAgICAgICBwYWludENvbnRlbnRzSWZEaXJ0eSgqaXQsIHBhaW50
VHlwZSk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmlu
ZGV4IGY1ODIwM2QxNWViMjA0NTA3MWMyZWZhNDQ4YmE0MGJmMTlhNTRjYWEuLjgxYjVmMjUwNWYx
Yjg0NTBjNmRhZDEzY2YxYzVlODNjMDFmMDgwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dC5oCkBAIC00OCw3ICs0OCw2IEBAIGNsYXNzIENDTGF5ZXJUcmVlSG9zdEltcGw7CiBjbGFzcyBD
Q1RleHR1cmVVcGRhdGVyOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBMYXllclBh
aW50ZXJDaHJvbWl1bTsKLWNsYXNzIFJlZ2lvbjsKIGNsYXNzIFRleHR1cmVBbGxvY2F0b3I7CiBj
bGFzcyBUZXh0dXJlTWFuYWdlcjsKIApAQCAtMjA2LDcgKzIwNSw3IEBAIHByaXZhdGU6CiAgICAg
dHlwZWRlZiBWZWN0b3I8T3duUHRyPE1hbmFnZWRUZXh0dXJlPiA+IFRleHR1cmVMaXN0OwogCiAg
ICAgZW51bSBQYWludFR5cGUgeyBQYWludFZpc2libGUsIFBhaW50SWRsZSB9OwotICAgIHN0YXRp
YyB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KExheWVyQ2hyb21pdW0qLCBQYWludFR5cGUsIGNv
bnN0IFJlZ2lvbiYgb2NjbHVkZWRTY3JlZW5TcGFjZSk7CisgICAgc3RhdGljIHZvaWQgcGFpbnRD
b250ZW50c0lmRGlydHkoTGF5ZXJDaHJvbWl1bSosIFBhaW50VHlwZSk7CiAgICAgdm9pZCBwYWlu
dExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0JiwgUGFpbnRUeXBlKTsKICAgICB2b2lkIHBh
aW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qLCBQYWludFR5
cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcAppbmRleCBjOGJkOWIwZjM2MzI0YWY2ZThh
NGJjMWZiNWEyNDA4ZmYwMzE0NTRkLi5iYTljNjZlODc0OTIwNjI1NzVmNTUwZWIwZjVlZWYzNmQ1
NWNmNDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAKQEAgLTc1LDYgKzc1LDE4IEBAIHN0
YXRpYyBJbnRSZWN0IHJlY3RTdWJ0cmFjdFJlZ2lvbihjb25zdCBSZWdpb24mIHJlZ2lvbiwgY29u
c3QgSW50UmVjdCYgcmVjdCkKICAgICByZXR1cm4gcmVjdDsKIH0KIAorc3RhdGljIEludFJlY3Qg
ZW5jbG9zZWRJbnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKK3sKKyAgICBmbG9hdCB4ID0g
Y2VpbGYocmVjdC54KCkpOworICAgIGZsb2F0IHkgPSBjZWlsZihyZWN0LnkoKSk7CisgICAgLy8g
QSByZWN0IG9mIHdpZHRoIDAgc2hvdWxkIG5vdCBiZWNvbWUgYSByZWN0IG9mIHdpZHRoIC0xLgor
ICAgIGZsb2F0IHdpZHRoID0gbWF4PGZsb2F0PihmbG9vcmYocmVjdC5tYXhYKCkpIC0geCwgMCk7
CisgICAgZmxvYXQgaGVpZ2h0ID0gbWF4PGZsb2F0PihmbG9vcmYocmVjdC5tYXhZKCkpIC0geSwg
MCk7CisKKyAgICByZXR1cm4gSW50UmVjdChjbGFtcFRvSW50ZWdlcih4KSwgY2xhbXBUb0ludGVn
ZXIoeSksCisgICAgICAgICAgICAgICAgICAgY2xhbXBUb0ludGVnZXIod2lkdGgpLCBjbGFtcFRv
SW50ZWdlcihoZWlnaHQpKTsKK30KKwogdm9pZCBDQ1F1YWRDdWxsZXI6OmN1bGxPY2NsdWRlZFF1
YWRzKENDUXVhZExpc3QmIHF1YWRMaXN0KQogewogICAgIGlmICghcXVhZExpc3Quc2l6ZSgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RD
b21tb25UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVI
b3N0Q29tbW9uVGVzdC5jcHAKaW5kZXggYjFmYTcyOTE4NDAxZTMyNDBlNDFkMTNkMmUwYzI3ZDBj
NTZhZDdjNS4uZDJlMWNmZWY5M2UyODIxNjZkYTg1MTI1NmM5NWMwZTY1MTJjNjliYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RDb21tb25U
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9z
dENvbW1vblRlc3QuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJDQ0xheWVyVHJl
ZVRlc3RDb21tb24uaCIKICNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCi0jaW5jbHVkZSAiUmVn
aW9uLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKIAogI2luY2x1ZGUgPGdt
b2NrL2dtb2NrLmg+CkBAIC0zNiwxMiArMzUsNiBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAotI2RlZmluZSBFWFBFQ1RfRVFfUkVDVChhLCBiKSBcCi0gICAgRVhQRUNUX0VRKGEueCgp
LCBiLngoKSk7IFwKLSAgICBFWFBFQ1RfRVEoYS55KCksIGIueSgpKTsgXAotICAgIEVYUEVDVF9F
UShhLndpZHRoKCksIGIud2lkdGgoKSk7IFwKLSAgICBFWFBFQ1RfRVEoYS5oZWlnaHQoKSwgYi5o
ZWlnaHQoKSk7Ci0KIG5hbWVzcGFjZSB7CiAKIHZvaWQgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVz
dGluZyhMYXllckNocm9taXVtKiBsYXllciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRy
YW5zZm9ybSwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHN1YmxheWVyVHJhbnNmb3JtLCBj
b25zdCBGbG9hdFBvaW50JiBhbmNob3IsIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBjb25z
dCBJbnRTaXplJiBib3VuZHMsIGJvb2wgcHJlc2VydmVzM0QpCkBAIC02MDIsMTc0ICs1OTUsNCBA
QCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeUNsaXBSZWN0Q3VsbHNSZW5k
ZXJTdXJmYWNlcykKIC8vICAtIHRlc3QgdGhlIG90aGVyIGZ1bmN0aW9ucyBpbiBDQ0xheWVyVHJl
ZUhvc3RDb21tb24KIC8vCiAKLVRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgbGF5ZXJB
ZGRzU2VsZlRvT2NjbHVkZWRSZWdpb24pCi17Ci0gICAgLy8gVGhpcyB0ZXN0cyB0aGF0IHRoZSBy
aWdodCB0cmFuc2Zvcm1zIGFyZSBiZWluZyB1c2VkLgotICAgIFJlZ2lvbiBvY2NsdWRlZDsKLSAg
ICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICBSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgUmVm
UHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllciA9IGFkb3B0UmVm
KG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBwYXJlbnQt
PmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKGxheWVyKTsKLQot
ICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1h
dHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwgMCks
IEludFNpemUoMTAwLCAxMDApLCBmYWxzZSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVz
dGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBv
aW50KDAsIDApLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDApLCBmYWxzZSk7
Ci0KLSAgICBsYXllci0+c2V0T3BhcXVlKHRydWUpOwotCi0gICAgVmVjdG9yPFJlZlB0cjxMYXll
ckNocm9taXVtPiA+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7Ci0gICAgVmVjdG9yPFJlZlB0cjxM
YXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OwotICAgIGludCBkdW1teU1heFRleHR1cmVT
aXplID0gNTEyOwotCi0gICAgLy8gRklYTUU6IHdoZW4gd2UgZml4IHRoaXMgInJvb3QtbGF5ZXIg
c3BlY2lhbCBjYXNlIiBiZWhhdmlvciBpbiBDQ0xheWVyVHJlZUhvc3QsIHdlIHdpbGwgaGF2ZSB0
byBmaXggaXQgaGVyZSwgdG9vLgotICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250
ZW50UmVjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAg
ICBwYXJlbnQtPnNldENsaXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5i
b3VuZHMoKSkpOwotICAgIHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7Ci0K
LSAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlz
aWJpbGl0eShwYXJlbnQuZ2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50
aXR5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlN
YXhUZXh0dXJlU2l6ZSk7Ci0KLSAgICBvY2NsdWRlZCA9IFJlZ2lvbigpOwotICAgIGxheWVyLT5h
ZGRTZWxmVG9PY2NsdWRlZFNjcmVlblNwYWNlKG9jY2x1ZGVkKTsKLSAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgb2NjbHVkZWQuYm91bmRzKCkpOwotICAgIEVYUEVD
VF9FUSgxdSwgb2NjbHVkZWQucmVjdHMoKS5zaXplKCkpOwotfQotCi1URVNUKENDTGF5ZXJUcmVl
SG9zdENvbW1vblRlc3QsIGxheWVyQWRkc1NlbGZUb09jY2x1ZGVkUmVnaW9uV2l0aFJvdGF0aW9u
KQotewotICAgIC8vIFRoaXMgdGVzdHMgdGhhdCB0aGUgcmlnaHQgdHJhbnNmb3JtcyBhcmUgYmVp
bmcgdXNlZC4KLSAgICBSZWdpb24gb2NjbHVkZWQ7Ci0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXggaWRlbnRpdHlNYXRyaXg7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9
IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZv
cmNlZERyYXdzQ29udGVudD4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhG
b3JjZWREcmF3c0NvbnRlbnQoKSk7Ci0gICAgcGFyZW50LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7
Ci0gICAgcGFyZW50LT5hZGRDaGlsZChsYXllcik7Ci0KLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBsYXllclRyYW5zZm9ybTsKLSAgICBsYXllclRyYW5zZm9ybS50cmFuc2xhdGUoMjUwLCAyNTAp
OwotICAgIGxheWVyVHJhbnNmb3JtLnJvdGF0ZSg5MCk7Ci0gICAgbGF5ZXJUcmFuc2Zvcm0udHJh
bnNsYXRlKC0yNTAsIC0yNTApOwotCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhw
YXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgw
LCAwKSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCksIGZhbHNlKTsKLSAgICBz
ZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBsYXllclRyYW5zZm9ybSwg
aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50
U2l6ZSg1MDAsIDUwMCksIGZhbHNlKTsKLQotICAgIGxheWVyLT5zZXRPcGFxdWUodHJ1ZSk7Ci0K
LSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxheWVyTGlz
dDsKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxpc3Q7Ci0g
ICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7Ci0KLSAgICAvLyBGSVhNRTogd2hlbiB3
ZSBmaXggdGhpcyAicm9vdC1sYXllciBzcGVjaWFsIGNhc2UiIGJlaGF2aW9yIGluIENDTGF5ZXJU
cmVlSG9zdCwgd2Ugd2lsbCBoYXZlIHRvIGZpeCBpdCBoZXJlLCB0b28uCi0gICAgcGFyZW50LT5y
ZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwg
cGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVjdChJbnRQ
b2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcmVuZGVyU3VyZmFjZUxheWVy
TGlzdC5hcHBlbmQocGFyZW50KTsKLQotICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3Vs
YXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50LmdldCgp
LCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3Qs
IGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKLQotICAgIG9jY2x1ZGVkID0g
UmVnaW9uKCk7Ci0gICAgbGF5ZXItPmFkZFNlbGZUb09jY2x1ZGVkU2NyZWVuU3BhY2Uob2NjbHVk
ZWQpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDMwLCA3MCwgNzApLCBvY2NsdWRl
ZC5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdWRlZC5yZWN0cygpLnNpemUoKSk7
Ci19Ci0KLVRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgbGF5ZXJBZGRzU2VsZlRvT2Nj
bHVkZWRSZWdpb25XaXRoVHJhbnNsYXRpb24pCi17Ci0gICAgLy8gVGhpcyB0ZXN0cyB0aGF0IHRo
ZSByaWdodCB0cmFuc2Zvcm1zIGFyZSBiZWluZyB1c2VkLgotICAgIFJlZ2lvbiBvY2NsdWRlZDsK
LSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAg
UmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBsYXllciA9IGFkb3B0
UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKLSAgICBwYXJl
bnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKLSAgICBwYXJlbnQtPmFkZENoaWxkKGxheWVyKTsK
LQotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGxheWVyVHJhbnNmb3JtOwotICAgIGxheWVyVHJh
bnNmb3JtLnRyYW5zbGF0ZSgyMCwgMjApOwotCi0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVz
dGluZyhwYXJlbnQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQ
b2ludCgwLCAwKSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCksIGZhbHNlKTsK
LSAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBsYXllclRyYW5z
Zm9ybSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMzAsIDMw
KSwgSW50U2l6ZSg1MDAsIDUwMCksIGZhbHNlKTsKLQotICAgIGxheWVyLT5zZXRPcGFxdWUodHJ1
ZSk7Ci0KLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdDsKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gZHVtbXlMYXllckxp
c3Q7Ci0gICAgaW50IGR1bW15TWF4VGV4dHVyZVNpemUgPSA1MTI7Ci0KLSAgICAvLyBGSVhNRTog
d2hlbiB3ZSBmaXggdGhpcyAicm9vdC1sYXllciBzcGVjaWFsIGNhc2UiIGJlaGF2aW9yIGluIEND
TGF5ZXJUcmVlSG9zdCwgd2Ugd2lsbCBoYXZlIHRvIGZpeCBpdCBoZXJlLCB0b28uCi0gICAgcGFy
ZW50LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQ6Onpl
cm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAgIHBhcmVudC0+c2V0Q2xpcFJlY3QoSW50UmVj
dChJbnRQb2ludDo6emVybygpLCBwYXJlbnQtPmJvdW5kcygpKSk7Ci0gICAgcmVuZGVyU3VyZmFj
ZUxheWVyTGlzdC5hcHBlbmQocGFyZW50KTsKLQotICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6
Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHBhcmVudC5nZXQoKSwgcGFyZW50
LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXll
ckxpc3QsIGR1bW15TGF5ZXJMaXN0LCBkdW1teU1heFRleHR1cmVTaXplKTsKLQotICAgIG9jY2x1
ZGVkID0gUmVnaW9uKCk7Ci0gICAgbGF5ZXItPmFkZFNlbGZUb09jY2x1ZGVkU2NyZWVuU3BhY2Uo
b2NjbHVkZWQpOwotICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNTAsIDUwLCA1MCwgNTApLCBv
Y2NsdWRlZC5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdWRlZC5yZWN0cygpLnNp
emUoKSk7Ci19Ci0KLVRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgbGF5ZXJBZGRzU2Vs
ZlRvT2NjbHVkZWRSZWdpb25XaXRoUm90YXRlZFN1cmZhY2UpCi17Ci0gICAgLy8gVGhpcyB0ZXN0
cyB0aGF0IHRoZSByaWdodCB0cmFuc2Zvcm1zIGFyZSBiZWluZyB1c2VkLgotICAgIFJlZ2lvbiBv
Y2NsdWRlZDsKLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsK
LSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
KCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlKCk7Ci0gICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBs
YXllciA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgp
KTsKLSAgICBwYXJlbnQtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKLSAgICBwYXJlbnQtPmFkZENo
aWxkKGNoaWxkKTsKLSAgICBjaGlsZC0+YWRkQ2hpbGQobGF5ZXIpOwotCi0gICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggY2hpbGRUcmFuc2Zvcm07Ci0gICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRl
KDI1MCwgMjUwKTsKLSAgICBjaGlsZFRyYW5zZm9ybS5yb3RhdGUoOTApOwotICAgIGNoaWxkVHJh
bnNmb3JtLnRyYW5zbGF0ZSgtMjUwLCAtMjUwKTsKLQotICAgIHNldExheWVyUHJvcGVydGllc0Zv
clRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZs
b2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApLCBmYWxz
ZSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZC5nZXQoKSwgY2hpbGRU
cmFuc2Zvcm0sIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDMw
LCAzMCksIEludFNpemUoNTAwLCA1MDApLCBmYWxzZSk7Ci0gICAgc2V0TGF5ZXJQcm9wZXJ0aWVz
Rm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBG
bG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDEwLCAxMCksIEludFNpemUoNTAwLCA1MDApLCBm
YWxzZSk7Ci0KLSAgICBjaGlsZC0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKLSAgICBsYXllci0+
c2V0T3BhcXVlKHRydWUpOwotCi0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IHJl
bmRlclN1cmZhY2VMYXllckxpc3Q7Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+
IGR1bW15TGF5ZXJMaXN0OwotICAgIGludCBkdW1teU1heFRleHR1cmVTaXplID0gNTEyOwotCi0g
ICAgLy8gRklYTUU6IHdoZW4gd2UgZml4IHRoaXMgInJvb3QtbGF5ZXIgc3BlY2lhbCBjYXNlIiBi
ZWhhdmlvciBpbiBDQ0xheWVyVHJlZUhvc3QsIHdlIHdpbGwgaGF2ZSB0byBmaXggaXQgaGVyZSwg
dG9vLgotICAgIHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0
KEludFBvaW50Ojp6ZXJvKCksIHBhcmVudC0+Ym91bmRzKCkpKTsKLSAgICBwYXJlbnQtPnNldENs
aXBSZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcGFyZW50LT5ib3VuZHMoKSkpOwotICAg
IHJlbmRlclN1cmZhY2VMYXllckxpc3QuYXBwZW5kKHBhcmVudCk7Ci0KLSAgICBDQ0xheWVyVHJl
ZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQu
Z2V0KCksIHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCByZW5k
ZXJTdXJmYWNlTGF5ZXJMaXN0LCBkdW1teUxheWVyTGlzdCwgZHVtbXlNYXhUZXh0dXJlU2l6ZSk7
Ci0KLSAgICBvY2NsdWRlZCA9IFJlZ2lvbigpOwotICAgIGxheWVyLT5hZGRTZWxmVG9PY2NsdWRl
ZFNjcmVlblNwYWNlKG9jY2x1ZGVkKTsKLSAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCA0
MCwgNzAsIDYwKSwgb2NjbHVkZWQuYm91bmRzKCkpOwotICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVk
ZWQucmVjdHMoKS5zaXplKCkpOwotCi0gICAgLyogSnVzdGlmaWNhdGlvbiBmb3IgdGhlIGFib3Zl
IG9wYXF1ZSByZWN0IGZyb20gfGxheWVyfDoKLSAgICAgICAgICAgICAgIDEwMAotICAgICAgKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAg
IHwzMCAgVmlzaWJsZSByZWdpb24gb2YgfGxheWVyfDogLy8vLy8KLSAgICAgIHwgICAgMzAgICAg
ICAgICAgICAgICB8ICAgICAgICAgICByb3RhdGUoOTApICAgICAgICAgICAgICAgICB8ICAgICAg
ICAgICAgICAgICAgICAgfAotICAgICAgfCAzMCArIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSsgICAgICAgICAgICAgICAgICAgIHwgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rCi0gIDEwMCB8ICAgIHwgIDEwICAgICAgICAgICAgfCAgICAgICAgICAgICAg
ICAgfCAgICAgICAgICAgID09PiAgICAgfCAgICAgfCAgICAgICAgICAgICAgIHwxMCAgICAgICAg
ICAgICAgIHwKLSAgICAgIHwgICAgfDEwKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSsgICAgICAgICAgICAgICAgICB8ICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
KyAgfAotICAgICAgfCAgICB8ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgfCAg
ICAgICAgICAgICAgICAgIHwgIHwgIHwvLy8vLy8vLy8vLy8vLy98ICAgICA0MjAgICAgICB8ICB8
Ci0gICAgICB8ICAgIHwgIHwgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCB8ICAgICAg
ICAgICAgICAgICAgfCAgfCAgfC8vLy8vLy8vLy8vLy8vL3w2MCAgICAgICAgICAgIHwgIHwKLSAg
ICAgIHwgICAgfCAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8IHwgICAgICAgICAg
ICAgICAgICB8ICB8ICB8Ly8vLy8vLy8vLy8vLy8vfCAgICAgICAgICAgICAgfCAgfAotICAgICAg
Ky0tLS18LS18LS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAg
ICAgICstLXwtLXwtLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICB8ICB8Ci0gICAgICAgICAg
IHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAg
IDIwfDEwfCAgICAgNzAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKLSAgICAgICAgICAgfCAg
fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICB8
ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgfAotICAgICAgICAgICB8ICB8ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfDUwMCAgICAgICAgICAgICAgICAgIHwgIHwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8Ci0gICAgICAgICAgIHwgIHwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgfCAgfCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKLSAgICAgICAgICAgfCAgfCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICB8ICB8ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgfAotICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICB8Ci0gICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgfCAgfCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwxMHwKLSAgICAgICAgICAgKy0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0rIHwgICAgICAgICAgICAgICAgICAgICB8ICArLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tfC0tKwotICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIDQ5MCAgICAgICAg
ICAgICB8Ci0gICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r
ICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTAwICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MDAKLSAgICAgKi8KLX0KLQogfSAvLyBuYW1l
c3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRy
ZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVl
SG9zdFRlc3QuY3BwCmluZGV4IDFmZWMzMjQyMTYyMzRmNTc2ZWFiZjQ1YWJhMWQ3ZTRiYTkwNDRl
OTEuLjBjYjI2MDVlOGE2ZDNkMzIyZmNlYjBmYzczYWE3YWZlNjk0OTIwOTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcApA
QCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkNvbnRlbnRMYXllckNocm9taXVtLmgiCiAjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1
bS5oIgotI2luY2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiV2ViQ29tcG9zaXRvci5oIgogI2luY2x1ZGUgIldlYktpdC5oIgpAQCAtMTAwNiw5
ICsxMDA1LDkgQEAgcHVibGljOgogICAgIGludCB1cGRhdGVDb3VudCgpIHsgcmV0dXJuIG1fdXBk
YXRlQ291bnQ7IH0KICAgICB2b2lkIHJlc2V0VXBkYXRlQ291bnQoKSB7IG1fdXBkYXRlQ291bnQg
PSAwOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgUmVn
aW9uJiBvY2NsdWRlZFNjcmVlblNwYWNlKQorICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRz
SWZEaXJ0eSgpCiAgICAgewotICAgICAgICBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250
ZW50c0lmRGlydHkob2NjbHVkZWRTY3JlZW5TcGFjZSk7CisgICAgICAgIENvbnRlbnRMYXllckNo
cm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSgpOwogICAgICAgICBtX3BhaW50Q29udGVudHND
b3VudCsrOwogICAgIH0KIApAQCAtMTIyOSwyNDQgKzEyMjgsNCBAQCBURVNUX0YoQ0NMYXllclRy
ZWVIb3N0VGVzdEF0b21pY0NvbW1pdCwgcnVuTXVsdGlUaHJlYWQpCiAgICAgcnVuVGVzdCh0cnVl
KTsKIH0KIAotI2RlZmluZSBFWFBFQ1RfRVFfUkVDVChhLCBiKSBcCi0gICAgRVhQRUNUX0VRKGEu
eCgpLCBiLngoKSk7IFwKLSAgICBFWFBFQ1RfRVEoYS55KCksIGIueSgpKTsgXAotICAgIEVYUEVD
VF9FUShhLndpZHRoKCksIGIud2lkdGgoKSk7IFwKLSAgICBFWFBFQ1RfRVEoYS5oZWlnaHQoKSwg
Yi5oZWlnaHQoKSk7Ci0KLWNsYXNzIFRlc3RMYXllckNocm9taXVtIDogcHVibGljIExheWVyQ2hy
b21pdW0gewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRlc3RMYXllckNocm9taXVt
PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgVGVzdExheWVyQ2hyb21pdW0oKSk7IH0K
LQotICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBSZWdpb24mIG9j
Y2x1ZGVkU2NyZWVuU3BhY2UpCi0gICAgewotICAgICAgICBtX29jY2x1ZGVkU2NyZWVuU3BhY2Ug
PSBvY2NsdWRlZFNjcmVlblNwYWNlOwotICAgIH0KLQotICAgIHZpcnR1YWwgYm9vbCBkcmF3c0Nv
bnRlbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICBjb25zdCBSZWdpb24mIG9jY2x1
ZGVkU2NyZWVuU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX29jY2x1ZGVkU2NyZWVuU3BhY2U7IH0K
LSAgICB2b2lkIGNsZWFyT2NjbHVkZWRTY3JlZW5TcGFjZSgpIHsgbV9vY2NsdWRlZFNjcmVlblNw
YWNlID0gUmVnaW9uKCk7IH0KLQotcHJpdmF0ZToKLSAgICBUZXN0TGF5ZXJDaHJvbWl1bSgpIDog
TGF5ZXJDaHJvbWl1bSgpIHsgfQotCi0gICAgUmVnaW9uIG1fb2NjbHVkZWRTY3JlZW5TcGFjZTsK
LX07Ci0KLXN0YXRpYyB2b2lkIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoVGVzdExheWVy
Q2hyb21pdW0qIGxheWVyLCBMYXllckNocm9taXVtKiBwYXJlbnQsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvciwgY29uc3QgRmxv
YXRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFNpemUmIGJvdW5kcywgYm9vbCBvcGFxdWUpCi17
Ci0gICAgbGF5ZXItPnJlbW92ZUFsbENoaWxkcmVuKCk7Ci0gICAgaWYgKHBhcmVudCkKLSAgICAg
ICAgcGFyZW50LT5hZGRDaGlsZChsYXllcik7Ci0gICAgbGF5ZXItPnNldFRyYW5zZm9ybSh0cmFu
c2Zvcm0pOwotICAgIGxheWVyLT5zZXRBbmNob3JQb2ludChhbmNob3IpOwotICAgIGxheWVyLT5z
ZXRQb3NpdGlvbihwb3NpdGlvbik7Ci0gICAgbGF5ZXItPnNldEJvdW5kcyhib3VuZHMpOwotICAg
IGxheWVyLT5zZXRPcGFxdWUob3BhcXVlKTsKLSAgICBsYXllci0+Y2xlYXJPY2NsdWRlZFNjcmVl
blNwYWNlKCk7Ci19Ci0KLWNsYXNzIENDTGF5ZXJUcmVlSG9zdFRlc3RMYXllck9jY2x1c2lvbiA6
IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3RUZXN0IHsKLXB1YmxpYzoKLSAgICBDQ0xheWVyVHJlZUhv
c3RUZXN0TGF5ZXJPY2NsdXNpb24oKSB7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBiZWdpblRlc3Qo
KQotICAgIHsKLSAgICAgICAgUmVmUHRyPFRlc3RMYXllckNocm9taXVtPiByb290TGF5ZXIgPSBU
ZXN0TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgICAgIFJlZlB0cjxUZXN0TGF5ZXJDaHJv
bWl1bT4gY2hpbGQgPSBUZXN0TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgICAgIFJlZlB0
cjxUZXN0TGF5ZXJDaHJvbWl1bT4gY2hpbGQyID0gVGVzdExheWVyQ2hyb21pdW06OmNyZWF0ZSgp
OwotICAgICAgICBSZWZQdHI8VGVzdExheWVyQ2hyb21pdW0+IGdyYW5kQ2hpbGQgPSBUZXN0TGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgICAgIFJlZlB0cjxUZXN0TGF5ZXJDaHJvbWl1bT4g
bWFzayA9IFRlc3RMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLQotICAgICAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgg
Y2hpbGRUcmFuc2Zvcm07Ci0gICAgICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgyNTAsIDI1
MCk7Ci0gICAgICAgIGNoaWxkVHJhbnNmb3JtLnJvdGF0ZSg5MCk7Ci0gICAgICAgIGNoaWxkVHJh
bnNmb3JtLnRyYW5zbGF0ZSgtMjUwLCAtMjUwKTsKLQotICAgICAgICBjaGlsZC0+c2V0TWFza3NU
b0JvdW5kcyh0cnVlKTsKLQotICAgICAgICAvLyBTZWUgQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVz
dC5sYXllckFkZHNTZWxmVG9PY2NsdWRlZFJlZ2lvbldpdGhSb3RhdGVkU3VyZmFjZSBmb3IgYSBu
aWNlIHZpc3VhbCBvZiB0aGVzZSBsYXllcnMgYW5kIGhvdyB0aGV5IGVuZCB1cAotICAgICAgICAv
LyBwb3NpdGlvbmVkIG9uIHRoZSBzY3JlZW4uCi0KLSAgICAgICAgLy8gVGhlIGNoaWxkIGxheWVy
IGlzIHJvdGF0ZWQgYW5kIHRoZSBncmFuZENoaWxkIGlzIG9wYXF1ZSwgYnV0IGNsaXBwZWQgdG8g
dGhlIGNoaWxkIGFuZCByb290TGF5ZXIKLSAgICAgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVz
dGluZyhyb290TGF5ZXIuZ2V0KCksIDAsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDAp
LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSwgdHJ1ZSk7Ci0gICAgICAgIHNl
dExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoY2hpbGQuZ2V0KCksIHJvb3RMYXllci5nZXQoKSwg
Y2hpbGRUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50
U2l6ZSg1MDAsIDUwMCksIGZhbHNlKTsKLSAgICAgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVz
dGluZyhncmFuZENoaWxkLmdldCgpLCBjaGlsZC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0
UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMTAsIDEwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUp
OwotCi0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKHJvb3RMYXllcik7Ci0g
ICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKHJvb3RMYXllci0+Ym91bmRz
KCkpOwotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOwotICAgICAgICBt
X2xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7Ci0KLSAgICAgICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgpLCBncmFuZENoaWxkLT5vY2NsdWRlZFNjcmVlblNwYWNlKCkuYm91bmRzKCkp
OwotICAgICAgICBFWFBFQ1RfRVEoMHUsIGdyYW5kQ2hpbGQtPm9jY2x1ZGVkU2NyZWVuU3BhY2Uo
KS5yZWN0cygpLnNpemUoKSk7Ci0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAsIDQw
LCA3MCwgNjApLCBjaGlsZC0+b2NjbHVkZWRTY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICAg
ICAgRVhQRUNUX0VRKDF1LCBjaGlsZC0+b2NjbHVkZWRTY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6
ZSgpKTsKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgNDAsIDcwLCA2MCksIHJv
b3RMYXllci0+b2NjbHVkZWRTY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICAgICAgRVhQRUNU
X0VRKDF1LCByb290TGF5ZXItPm9jY2x1ZGVkU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7
Ci0KLSAgICAgICAgLy8gSWYgdGhlIGNoaWxkIGxheWVyIGlzIG9wYXF1ZSwgdGhlbiBpdCBhZGRz
IHRvIHRoZSBvY2NsdXNpb24gc2VlbiBieSB0aGUgcm9vdExheWVyLgotICAgICAgICBzZXRMYXll
clByb3BlcnRpZXNGb3JUZXN0aW5nKHJvb3RMYXllci5nZXQoKSwgMCwgaWRlbnRpdHlNYXRyaXgs
IEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApLCB0
cnVlKTsKLSAgICAgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZC5nZXQoKSwg
cm9vdExheWVyLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQ
b2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSk7Ci0gICAgICAgIHNldExheWVy
UHJvcGVydGllc0ZvclRlc3RpbmcoZ3JhbmRDaGlsZC5nZXQoKSwgY2hpbGQuZ2V0KCksIGlkZW50
aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDEwLCAxMCksIEludFNpemUo
NTAwLCA1MDApLCB0cnVlKTsKLQotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXll
cihyb290TGF5ZXIpOwotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShy
b290TGF5ZXItPmJvdW5kcygpKTsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXll
cnMoKTsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwotCi0gICAg
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgZ3JhbmRDaGlsZC0+b2NjbHVkZWRTY3JlZW5T
cGFjZSgpLmJvdW5kcygpKTsKLSAgICAgICAgRVhQRUNUX0VRKDB1LCBncmFuZENoaWxkLT5vY2Ns
dWRlZFNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwotICAgICAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDMwLCA0MCwgNzAsIDYwKSwgY2hpbGQtPm9jY2x1ZGVkU2NyZWVuU3BhY2UoKS5i
b3VuZHMoKSk7Ci0gICAgICAgIEVYUEVDVF9FUSgxdSwgY2hpbGQtPm9jY2x1ZGVkU2NyZWVuU3Bh
Y2UoKS5yZWN0cygpLnNpemUoKSk7Ci0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMzAs
IDMwLCA3MCwgNzApLCByb290TGF5ZXItPm9jY2x1ZGVkU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7
Ci0gICAgICAgIEVYUEVDVF9FUSgxdSwgcm9vdExheWVyLT5vY2NsdWRlZFNjcmVlblNwYWNlKCku
cmVjdHMoKS5zaXplKCkpOwotCi0gICAgICAgIC8vIEFkZCBhIHNlY29uZCBjaGlsZCB0byB0aGUg
cm9vdCBsYXllciBhbmQgdGhlIHJlZ2lvbnMgc2hvdWxkIG1lcmdlCi0gICAgICAgIHNldExheWVy
UHJvcGVydGllc0ZvclRlc3Rpbmcocm9vdExheWVyLmdldCgpLCAwLCBpZGVudGl0eU1hdHJpeCwg
RmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCksIHRy
dWUpOwotICAgICAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGNoaWxkMi5nZXQoKSwg
cm9vdExheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQ
b2ludCg3MCwgMjApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSk7Ci0gICAgICAgIHNldExheWVy
UHJvcGVydGllc0ZvclRlc3RpbmcoY2hpbGQuZ2V0KCksIHJvb3RMYXllci5nZXQoKSwgY2hpbGRU
cmFuc2Zvcm0sIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1
MDAsIDUwMCksIHRydWUpOwotICAgICAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGdy
YW5kQ2hpbGQuZ2V0KCksIGNoaWxkLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgw
LCAwKSwgRmxvYXRQb2ludCgxMCwgMTApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSk7Ci0KLSAg
ICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIocm9vdExheWVyKTsKLSAgICAgICAg
bV9sYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUocm9vdExheWVyLT5ib3VuZHMoKSk7Ci0g
ICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7Ci0gICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKLQotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRS
ZWN0KCksIGdyYW5kQ2hpbGQtPm9jY2x1ZGVkU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAg
ICAgIEVYUEVDVF9FUSgwdSwgZ3JhbmRDaGlsZC0+b2NjbHVkZWRTY3JlZW5TcGFjZSgpLnJlY3Rz
KCkuc2l6ZSgpKTsKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgNDAsIDcwLCA2
MCksIGNoaWxkLT5vY2NsdWRlZFNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAgICAgICBFWFBF
Q1RfRVEoMXUsIGNoaWxkLT5vY2NsdWRlZFNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwot
ICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgY2hpbGQyLT5v
Y2NsdWRlZFNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAgICAgICBFWFBFQ1RfRVEoMXUsIGNo
aWxkMi0+b2NjbHVkZWRTY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAgICAgICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgMjAsIDcwLCA4MCksIHJvb3RMYXllci0+b2NjbHVkZWRT
Y3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICAgICAgRVhQRUNUX0VRKDJ1LCByb290TGF5ZXIt
Pm9jY2x1ZGVkU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICAgICAgLy8gTW92
ZSB0aGUgc2Vjb25kIGNoaWxkIHRvIGJlIHN1cmUuCi0gICAgICAgIHNldExheWVyUHJvcGVydGll
c0ZvclRlc3Rpbmcocm9vdExheWVyLmdldCgpLCAwLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2lu
dCgwLCAwKSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCksIHRydWUpOwotICAg
ICAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGNoaWxkMi5nZXQoKSwgcm9vdExheWVy
LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgxMCwg
NzApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSk7Ci0gICAgICAgIHNldExheWVyUHJvcGVydGll
c0ZvclRlc3RpbmcoY2hpbGQuZ2V0KCksIHJvb3RMYXllci5nZXQoKSwgY2hpbGRUcmFuc2Zvcm0s
IEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCks
IHRydWUpOwotICAgICAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGdyYW5kQ2hpbGQu
Z2V0KCksIGNoaWxkLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxv
YXRQb2ludCgxMCwgMTApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSk7Ci0KLSAgICAgICAgbV9s
YXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIocm9vdExheWVyKTsKLSAgICAgICAgbV9sYXllclRy
ZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUocm9vdExheWVyLT5ib3VuZHMoKSk7Ci0gICAgICAgIG1f
bGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+
Y29tbWl0Q29tcGxldGUoKTsKLQotICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KCksIGdy
YW5kQ2hpbGQtPm9jY2x1ZGVkU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgICAgIEVYUEVD
VF9FUSgwdSwgZ3JhbmRDaGlsZC0+b2NjbHVkZWRTY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgp
KTsKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgzMCwgNDAsIDcwLCA2MCksIGNoaWxk
LT5vY2NsdWRlZFNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAgICAgICBFWFBFQ1RfRVEoMXUs
IGNoaWxkLT5vY2NsdWRlZFNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwotICAgICAgICBF
WFBFQ1RfRVFfUkVDVChJbnRSZWN0KDMwLCAzMCwgNzAsIDcwKSwgY2hpbGQyLT5vY2NsdWRlZFNj
cmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAgICAgICBFWFBFQ1RfRVEoMXUsIGNoaWxkMi0+b2Nj
bHVkZWRTY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLSAgICAgICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgxMCwgMzAsIDkwLCA3MCksIHJvb3RMYXllci0+b2NjbHVkZWRTY3JlZW5TcGFj
ZSgpLmJvdW5kcygpKTsKLSAgICAgICAgRVhQRUNUX0VRKDJ1LCByb290TGF5ZXItPm9jY2x1ZGVk
U2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICAgICAgLy8gSWYgdGhlIGNoaWxk
IGxheWVyIGhhcyBhIG1hc2sgb24gaXQsIHRoZW4gaXQgc2hvdWxkbid0IGNvbnRyaWJ1dGUgdG8g
b2NjbHVzaW9uIG9uIHN0dWZmIGJlbG93IGl0Ci0gICAgICAgIHNldExheWVyUHJvcGVydGllc0Zv
clRlc3Rpbmcocm9vdExheWVyLmdldCgpLCAwLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgw
LCAwKSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCksIHRydWUpOwotICAgICAg
ICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGNoaWxkMi5nZXQoKSwgcm9vdExheWVyLmdl
dCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgxMCwgNzAp
LCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSk7Ci0gICAgICAgIHNldExheWVyUHJvcGVydGllc0Zv
clRlc3RpbmcoY2hpbGQuZ2V0KCksIHJvb3RMYXllci5nZXQoKSwgY2hpbGRUcmFuc2Zvcm0sIEZs
b2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRy
dWUpOwotICAgICAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGdyYW5kQ2hpbGQuZ2V0
KCksIGNoaWxkLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQ
b2ludCgxMCwgMTApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSk7Ci0KLSAgICAgICAgY2hpbGQt
PnNldE1hc2tMYXllcihtYXNrLmdldCgpKTsKLQotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNl
dFJvb3RMYXllcihyb290TGF5ZXIpOwotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdw
b3J0U2l6ZShyb290TGF5ZXItPmJvdW5kcygpKTsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT51
cGRhdGVMYXllcnMoKTsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgp
OwotCi0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgZ3JhbmRDaGlsZC0+b2NjbHVk
ZWRTY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICAgICAgRVhQRUNUX0VRKDB1LCBncmFuZENo
aWxkLT5vY2NsdWRlZFNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwotICAgICAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDMwLCA0MCwgNzAsIDYwKSwgY2hpbGQtPm9jY2x1ZGVkU2NyZWVu
U3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgICAgIEVYUEVDVF9FUSgxdSwgY2hpbGQtPm9jY2x1ZGVk
U2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0gICAgICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoKSwgY2hpbGQyLT5vY2NsdWRlZFNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAgICAg
ICBFWFBFQ1RfRVEoMHUsIGNoaWxkMi0+b2NjbHVkZWRTY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6
ZSgpKTsKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgNzAsIDkwLCAzMCksIHJv
b3RMYXllci0+b2NjbHVkZWRTY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICAgICAgRVhQRUNU
X0VRKDF1LCByb290TGF5ZXItPm9jY2x1ZGVkU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7
Ci0KLSAgICAgICAgLy8gSWYgdGhlIGNoaWxkIGxheWVyIHdpdGggYSBtYXNrIGlzIGJlbG93IGNo
aWxkMiwgdGhlbiBjaGlsZDIgc2hvdWxkIGNvbnRyaWJ1dGUgdG8gb2NjbHVzaW9uIG9uIGV2ZXJ5
dGhpbmcsIGFuZCBjaGlsZCBzaG91bGRuJ3QgY29udHJpYnV0ZSB0byB0aGUgcm9vdExheWVyCi0g
ICAgICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rpbmcocm9vdExheWVyLmdldCgpLCAwLCBp
ZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6
ZSgxMDAsIDEwMCksIHRydWUpOwotICAgICAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5n
KGNoaWxkLmdldCgpLCByb290TGF5ZXIuZ2V0KCksIGNoaWxkVHJhbnNmb3JtLCBGbG9hdFBvaW50
KDAsIDApLCBGbG9hdFBvaW50KDMwLCAzMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlKTsKLSAg
ICAgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhncmFuZENoaWxkLmdldCgpLCBjaGls
ZC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMTAs
IDEwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUpOwotICAgICAgICBzZXRMYXllclByb3BlcnRp
ZXNGb3JUZXN0aW5nKGNoaWxkMi5nZXQoKSwgcm9vdExheWVyLmdldCgpLCBpZGVudGl0eU1hdHJp
eCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgxMCwgNzApLCBJbnRTaXplKDUwMCwgNTAw
KSwgdHJ1ZSk7Ci0KLSAgICAgICAgY2hpbGQtPnNldE1hc2tMYXllcihtYXNrLmdldCgpKTsKLQot
ICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihyb290TGF5ZXIpOwotICAgICAg
ICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShyb290TGF5ZXItPmJvdW5kcygpKTsK
LSAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKLSAgICAgICAgbV9sYXll
clRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwotCi0gICAgICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoKSwgY2hpbGQyLT5vY2NsdWRlZFNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAgICAg
ICBFWFBFQ1RfRVEoMHUsIGNoaWxkMi0+b2NjbHVkZWRTY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6
ZSgpKTsKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgNzAsIDkwLCAzMCksIGdy
YW5kQ2hpbGQtPm9jY2x1ZGVkU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgICAgIEVYUEVD
VF9FUSgxdSwgZ3JhbmRDaGlsZC0+b2NjbHVkZWRTY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgp
KTsKLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgNDAsIDkwLCA2MCksIGNoaWxk
LT5vY2NsdWRlZFNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAgICAgICBFWFBFQ1RfRVEoMnUs
IGNoaWxkLT5vY2NsdWRlZFNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwotICAgICAgICBF
WFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCA3MCwgOTAsIDMwKSwgcm9vdExheWVyLT5vY2NsdWRl
ZFNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAgICAgICBFWFBFQ1RfRVEoMXUsIHJvb3RMYXll
ci0+b2NjbHVkZWRTY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKLQotICAgICAgICAvLyBJ
ZiB0aGUgY2hpbGQgbGF5ZXIgaGFzIGEgbm9uLW9wYXF1ZSBkcmF3T3BhY2l0eSwgdGhlbiBpdCBz
aG91bGRuJ3QgY29udHJpYnV0ZSB0byBvY2NsdXNpb24gb24gc3R1ZmYgYmVsb3cgaXQKLSAgICAg
ICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhyb290TGF5ZXIuZ2V0KCksIDAsIGlkZW50
aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEw
MCwgMTAwKSwgdHJ1ZSk7Ci0gICAgICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoY2hp
bGQyLmdldCgpLCByb290TGF5ZXIuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAs
IDApLCBGbG9hdFBvaW50KDEwLCA3MCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlKTsKLSAgICAg
ICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZC5nZXQoKSwgcm9vdExheWVyLmdl
dCgpLCBjaGlsZFRyYW5zZm9ybSwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgzMCwgMzAp
LCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSk7Ci0gICAgICAgIHNldExheWVyUHJvcGVydGllc0Zv
clRlc3RpbmcoZ3JhbmRDaGlsZC5nZXQoKSwgY2hpbGQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBG
bG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDEwLCAxMCksIEludFNpemUoNTAwLCA1MDApLCB0
cnVlKTsKLQotICAgICAgICBjaGlsZC0+c2V0TWFza0xheWVyKDApOwotICAgICAgICBjaGlsZC0+
c2V0RHJhd09wYWNpdHkoMC41KTsKLQotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFJvb3RM
YXllcihyb290TGF5ZXIpOwotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6
ZShyb290TGF5ZXItPmJvdW5kcygpKTsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVM
YXllcnMoKTsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwotCi0g
ICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgZ3JhbmRDaGlsZC0+b2NjbHVkZWRTY3Jl
ZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICAgICAgRVhQRUNUX0VRKDB1LCBncmFuZENoaWxkLT5v
Y2NsdWRlZFNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwotICAgICAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KDMwLCA0MCwgNzAsIDYwKSwgY2hpbGQtPm9jY2x1ZGVkU2NyZWVuU3BhY2Uo
KS5ib3VuZHMoKSk7Ci0gICAgICAgIEVYUEVDVF9FUSgxdSwgY2hpbGQtPm9jY2x1ZGVkU2NyZWVu
U3BhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
KSwgY2hpbGQyLT5vY2NsdWRlZFNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwotICAgICAgICBFWFBF
Q1RfRVEoMHUsIGNoaWxkMi0+b2NjbHVkZWRTY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsK
LSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgNzAsIDkwLCAzMCksIHJvb3RMYXll
ci0+b2NjbHVkZWRTY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICAgICAgRVhQRUNUX0VRKDF1
LCByb290TGF5ZXItPm9jY2x1ZGVkU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0KLSAg
ICAgICAgLy8gSWYgdGhlIGNoaWxkIGxheWVyIHdpdGggbm9uLW9wYXF1ZSBkcmF3T3BhY2l0eSBp
cyBiZWxvdyBjaGlsZDIsIHRoZW4gY2hpbGQyIHNob3VsZCBjb250cmlidXRlIHRvIG9jY2x1c2lv
biBvbiBldmVyeXRoaW5nLCBhbmQgY2hpbGQgc2hvdWxkbid0IGNvbnRyaWJ1dGUgdG8gdGhlIHJv
b3RMYXllcgotICAgICAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHJvb3RMYXllci5n
ZXQoKSwgMCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwg
MCksIEludFNpemUoMTAwLCAxMDApLCB0cnVlKTsKLSAgICAgICAgc2V0TGF5ZXJQcm9wZXJ0aWVz
Rm9yVGVzdGluZyhjaGlsZC5nZXQoKSwgcm9vdExheWVyLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwg
RmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgzMCwgMzApLCBJbnRTaXplKDUwMCwgNTAwKSwg
dHJ1ZSk7Ci0gICAgICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoZ3JhbmRDaGlsZC5n
ZXQoKSwgY2hpbGQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9h
dFBvaW50KDEwLCAxMCksIEludFNpemUoNTAwLCA1MDApLCB0cnVlKTsKLSAgICAgICAgc2V0TGF5
ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZDIuZ2V0KCksIHJvb3RMYXllci5nZXQoKSwgaWRl
bnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMTAsIDcwKSwgSW50U2l6
ZSg1MDAsIDUwMCksIHRydWUpOwotCi0gICAgICAgIGNoaWxkLT5zZXRNYXNrTGF5ZXIoMCk7Ci0g
ICAgICAgIGNoaWxkLT5zZXREcmF3T3BhY2l0eSgwLjUpOwotCi0gICAgICAgIG1fbGF5ZXJUcmVl
SG9zdC0+c2V0Um9vdExheWVyKHJvb3RMYXllcik7Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+
c2V0Vmlld3BvcnRTaXplKHJvb3RMYXllci0+Ym91bmRzKCkpOwotICAgICAgICBtX2xheWVyVHJl
ZUhvc3QtPnVwZGF0ZUxheWVycygpOwotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbW1pdENv
bXBsZXRlKCk7Ci0KLSAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgpLCBjaGlsZDItPm9j
Y2x1ZGVkU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7Ci0gICAgICAgIEVYUEVDVF9FUSgwdSwgY2hp
bGQyLT5vY2NsdWRlZFNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwotICAgICAgICBFWFBF
Q1RfRVFfUkVDVChJbnRSZWN0KDEwLCA3MCwgOTAsIDMwKSwgZ3JhbmRDaGlsZC0+b2NjbHVkZWRT
Y3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKLSAgICAgICAgRVhQRUNUX0VRKDF1LCBncmFuZENoaWxk
LT5vY2NsdWRlZFNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwotICAgICAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KDEwLCA0MCwgOTAsIDYwKSwgY2hpbGQtPm9jY2x1ZGVkU2NyZWVuU3Bh
Y2UoKS5ib3VuZHMoKSk7Ci0gICAgICAgIEVYUEVDVF9FUSgydSwgY2hpbGQtPm9jY2x1ZGVkU2Ny
ZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7Ci0gICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoMTAsIDcwLCA5MCwgMzApLCByb290TGF5ZXItPm9jY2x1ZGVkU2NyZWVuU3BhY2UoKS5ib3Vu
ZHMoKSk7Ci0gICAgICAgIEVYUEVDVF9FUSgxdSwgcm9vdExheWVyLT5vY2NsdWRlZFNjcmVlblNw
YWNlKCkucmVjdHMoKS5zaXplKCkpOwotCi0gICAgICAgIC8vIEtpbGwgdGhlIGxheWVyVHJlZUhv
c3QgaW1tZWRpYXRlbHkuCi0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKDAp
OwotICAgICAgICBtX2xheWVyVHJlZUhvc3QuY2xlYXIoKTsKLQotICAgICAgICBlbmRUZXN0KCk7
Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIGFmdGVyVGVzdCgpCi0gICAgewotICAgIH0KLX07
Ci0KLVNJTkdMRV9BTkRfTVVMVElfVEhSRUFEX1RFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0TGF5
ZXJPY2NsdXNpb24pCi0KIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCAx
ZGYyN2MwMTExOWIyNjU3ZTgyZTJhMDc5N2IxYzAxYjUwZDMwNWViLi5mMGI1YzQxMWI2NTZhZWRl
NzU5NTcxMGU0ZDhjZmQ3ZDI0ZGI1MzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5jcHAKQEAgLTI5LDcg
KzI5LDYgQEAKICNpbmNsdWRlICJDQ1NjaGVkdWxlclRlc3RDb21tb24uaCIKICNpbmNsdWRlICJG
YWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRFBy
aXZhdGUuaCIKLSNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJUZXh0dXJlTWFuYWdlci5o
IgogI2luY2x1ZGUgImNjL0NDQ2FudmFzTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NTaW5n
bGVUaHJlYWRQcm94eS5oIgpAQCAtMTM5LDggKzEzOCw3IEBAIHByb3RlY3RlZDoKIAogICAgICAg
ICBjYW52YXMtPmNvbnRlbnRDaGFuZ2VkKCk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGNhbnZhcy0+
bmVlZHNEaXNwbGF5KCkpOwotICAgICAgICBSZWdpb24gb2NjbHVkZWRTY3JlZW5TcGFjZTsKLSAg
ICAgICAgY2FudmFzLT5wYWludENvbnRlbnRzSWZEaXJ0eShvY2NsdWRlZFNjcmVlblNwYWNlKTsK
KyAgICAgICAgY2FudmFzLT5wYWludENvbnRlbnRzSWZEaXJ0eSgpOwogICAgICAgICBFWFBFQ1Rf
RkFMU0UoY2FudmFzLT5uZWVkc0Rpc3BsYXkoKSk7CiAgICAgICAgIHsKICAgICAgICAgICAgIERl
YnVnU2NvcGVkU2V0SW1wbFRocmVhZCBzY29wZWRJbXBsVGhyZWFkOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKaW5k
ZXggYjAzNTBkYjQ5NWZiNTYyYjM1ODE0MDg3ZWY2NDEwZDc2MTk1YmE3NS4uYjg1MGY4MjQxY2Mw
ODAxNDEzOGUzODA4YzA2MTRjYTYxMDRlNjMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC0yOSw3ICsy
OSw2IEBACiAjaW5jbHVkZSAiQ0NMYXllclRyZWVUZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiRmFr
ZUNDTGF5ZXJUcmVlSG9zdENsaWVudC5oIgogI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIu
aCIKLSNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJUZXh0dXJlTWFuYWdlci5oIgogI2lu
Y2x1ZGUgIldlYkNvbXBvc2l0b3IuaCIKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5
LmgiIC8vIEZvciBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQKQEAgLTQwLDEyICszOSw2IEBACiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKLSNkZWZpbmUg
RVhQRUNUX0VRX1JFQ1QoYSwgYikgXAotICAgIEVYUEVDVF9FUShhLngoKSwgYi54KCkpOyBcCi0g
ICAgRVhQRUNUX0VRKGEueSgpLCBiLnkoKSk7IFwKLSAgICBFWFBFQ1RfRVEoYS53aWR0aCgpLCBi
LndpZHRoKCkpOyBcCi0gICAgRVhQRUNUX0VRKGEuaGVpZ2h0KCksIGIuaGVpZ2h0KCkpOwotCiBu
YW1lc3BhY2UgewogCiBjbGFzcyBGYWtlVGV4dHVyZUFsbG9jYXRvciA6IHB1YmxpYyBUZXh0dXJl
QWxsb2NhdG9yIHsKQEAgLTc3LDIwICs3MCwxNyBAQCBwdWJsaWM6CiAgICAgaW50IHByZXBhcmVD
b3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlcGFyZUNvdW50OyB9CiAgICAgdm9pZCBjbGVhclBy
ZXBhcmVDb3VudCgpIHsgbV9wcmVwYXJlQ291bnQgPSAwOyB9CiAKLSAgICB2b2lkIHNldE9wYXF1
ZVBhaW50UmVjdChjb25zdCBJbnRSZWN0JiBvcGFxdWVQYWludFJlY3QpIHsgbV9vcGFxdWVQYWlu
dFJlY3QgPSBvcGFxdWVQYWludFJlY3Q7IH0KLQogICAgIC8vIExhc3QgcmVjdCBwYXNzZWQgdG8g
cHJlcGFyZVRvVXBkYXRlKCkuCiAgICAgY29uc3QgSW50UmVjdCYgbGFzdFVwZGF0ZVJlY3QoKSAg
Y29uc3QgeyByZXR1cm4gbV9sYXN0VXBkYXRlUmVjdDsgfQogCiAgICAgdmlydHVhbCBQYXNzT3du
UHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1h
bmFnZXIqIG1hbmFnZXIpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBUZXh0dXJlKE1hbmFnZWRUZXh0
dXJlOjpjcmVhdGUobWFuYWdlcikpKTsgfQogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0
IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSkgeyByZXR1cm4gU2FtcGxlZFRleGVsRm9ybWF0
UkdCQTsgfQotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYg
Y29udGVudFJlY3QsIGNvbnN0IEludFNpemUmLCBpbnQsIGZsb2F0LCBJbnRSZWN0KiByZXN1bHRp
bmdPcGFxdWVSZWN0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IElu
dFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiwgaW50LCBmbG9hdCwgSW50UmVjdCop
OwogCiBwcml2YXRlOgogICAgIGludCBtX3ByZXBhcmVDb3VudDsKICAgICBJbnRSZWN0IG1fcmVj
dFRvSW52YWxpZGF0ZTsKICAgICBJbnRSZWN0IG1fbGFzdFVwZGF0ZVJlY3Q7Ci0gICAgSW50UmVj
dCBtX29wYXF1ZVBhaW50UmVjdDsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4g
bV9sYXllcjsKIH07CiAKQEAgLTE0OSw3ICsxMzksNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IFRleHR1cmVNYW5hZ2VyKiB0ZXh0dXJlTWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVy
ZU1hbmFnZXI7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eShjb25z
dCBSZWdpb24mIC8qIG9jY2x1ZGVkU2NyZWVuU3BhY2UgKi8pCisgICAgdmlydHVhbCB2b2lkIHBh
aW50Q29udGVudHNJZkRpcnR5KCkKICAgICB7CiAgICAgICAgIHByZXBhcmVUb1VwZGF0ZSh2aXNp
YmxlTGF5ZXJSZWN0KCkpOwogICAgIH0KQEAgLTE5Nyw3ICsxODcsNyBAQCB2b2lkIEZha2VMYXll
clRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJl
Y3QsIGNvbnN0CiAgICAgICAgIG1fcmVjdFRvSW52YWxpZGF0ZSA9IEludFJlY3QoKTsKICAgICAg
ICAgbV9sYXllciA9IDA7CiAgICAgfQotICAgICpyZXN1bHRpbmdPcGFxdWVSZWN0ID0gbV9vcGFx
dWVQYWludFJlY3Q7CisgICAgKnJlc3VsdGluZ09wYXF1ZVJlY3QgPSBJbnRSZWN0KCk7CiB9CiAK
IFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaERpcnR5VGlsZXMpCkBAIC00NzAsOTgg
KzQ2MCw0IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgc2tpcHNEcmF3R2V0c1Jlc2V0
KQogICAgIFdlYktpdDo6V2ViQ29tcG9zaXRvcjo6c2h1dGRvd24oKTsKIH0KIAotVEVTVChUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LCBsYXllckFkZHNTZWxmVG9PY2NsdWRlZFJlZ2lvbikKLXsKLSAg
ICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6
OmNyZWF0ZSg0KjEwMjQqMTAyNCwgMioxMDI0KjEwMjQsIDEwMjQpOwotICAgIFJlZlB0cjxGYWtl
VGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNo
cm9taXVtKHRleHR1cmVNYW5hZ2VyLmdldCgpKSk7Ci0KLSAgICAvLyBUaGUgdGlsZSBzaXplIGlz
IDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcyBp
biB2YXJpb3VzIHdheXMuCi0KLSAgICBSZWdpb24gb2NjbHVkZWQ7Ci0gICAgSW50UmVjdCBjb250
ZW50Qm91bmRzID0gSW50UmVjdCgwLCAwLCAxMDAsIDIwMCk7Ci0gICAgSW50UmVjdCB2aXNpYmxl
Qm91bmRzID0gSW50UmVjdCgwLCAwLCAxMDAsIDE1MCk7Ci0KLSAgICBsYXllci0+c2V0Qm91bmRz
KGNvbnRlbnRCb3VuZHMuc2l6ZSgpKTsKLSAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdCh2
aXNpYmxlQm91bmRzKTsKLSAgICBsYXllci0+c2V0RHJhd09wYWNpdHkoMSk7Ci0KLSAgICAvLyBU
aGUgc2NyZWVuU3BhY2VUcmFuc2Zvcm0gaXMgdmVyaWZpZWQgaW4gQ0NMYXllclRyZWVIb3N0Q29t
bW9uVGVzdHMKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBzY3JlZW5TcGFjZVRyYW5zZm9ybTsK
LSAgICBsYXllci0+c2V0U2NyZWVuU3BhY2VUcmFuc2Zvcm0oc2NyZWVuU3BhY2VUcmFuc2Zvcm0p
OwotCi0gICAgLy8gSWYgdGhlIGxheWVyIGlzIG9wYXF1ZSB0aGVuIHRoZSBvY2NsdWRlZCByZWdp
b24gc2hvdWxkIGJlIHRoZSB3aG9sZSBsYXllcidzIHZpc2libGUgcmVnaW9uLgotICAgIGxheWVy
LT5zZXRPcGFxdWUodHJ1ZSk7Ci0gICAgbGF5ZXItPmludmFsaWRhdGVSZWN0KGNvbnRlbnRCb3Vu
ZHMpOwotICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGUoY29udGVudEJvdW5kcyk7Ci0KLSAgICBv
Y2NsdWRlZCA9IFJlZ2lvbigpOwotICAgIGxheWVyLT5hZGRTZWxmVG9PY2NsdWRlZFNjcmVlblNw
YWNlKG9jY2x1ZGVkKTsKLSAgICBFWFBFQ1RfRVFfUkVDVCh2aXNpYmxlQm91bmRzLCBvY2NsdWRl
ZC5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdWRlZC5yZWN0cygpLnNpemUoKSk7
Ci0KLSAgICAvLyBJZiB0aGUgbGF5ZXIgaXMgbm90IG9wYXF1ZSB0aGVuIHRoZSBvY2NsdWRlZCBy
ZWdpb24gc2hvdWxkIGJlIGVtcHR5LgotICAgIGxheWVyLT5zZXRPcGFxdWUoZmFsc2UpOwotICAg
IGxheWVyLT5pbnZhbGlkYXRlUmVjdChjb250ZW50Qm91bmRzKTsKLSAgICBsYXllci0+cHJlcGFy
ZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMpOwotCi0gICAgb2NjbHVkZWQgPSBSZWdpb24oKTsKLSAg
ICBsYXllci0+YWRkU2VsZlRvT2NjbHVkZWRTY3JlZW5TcGFjZShvY2NsdWRlZCk7Ci0gICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCgpLCBvY2NsdWRlZC5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VR
KDF1LCBvY2NsdWRlZC5yZWN0cygpLnNpemUoKSk7Ci0KLSAgICAvLyBJZiB0aGUgbGF5ZXIgcGFp
bnRzIG9wYXF1ZSBjb250ZW50LCB0aGVuIHRoZSBvY2NsdWRlZCByZWdpb24gc2hvdWxkIG1hdGNo
IHRoZSB2aXNpYmxlIG9wYXF1ZSBjb250ZW50LgotICAgIEludFJlY3Qgb3BhcXVlUGFpbnRSZWN0
ID0gSW50UmVjdCgxMCwgMTAsIDkwLCAxOTApOwotICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJl
VXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJlY3Qob3BhcXVlUGFpbnRSZWN0KTsKLSAgICBsYXll
ci0+aW52YWxpZGF0ZVJlY3QoY29udGVudEJvdW5kcyk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1Vw
ZGF0ZShjb250ZW50Qm91bmRzKTsKLQotICAgIG9jY2x1ZGVkID0gUmVnaW9uKCk7Ci0gICAgbGF5
ZXItPmFkZFNlbGZUb09jY2x1ZGVkU2NyZWVuU3BhY2Uob2NjbHVkZWQpOwotICAgIEVYUEVDVF9F
UV9SRUNUKGludGVyc2VjdGlvbihvcGFxdWVQYWludFJlY3QsIHZpc2libGVCb3VuZHMpLCBvY2Ns
dWRlZC5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdWRlZC5yZWN0cygpLnNpemUo
KSk7Ci0KLSAgICAvLyBJZiB3ZSBwYWludCBhZ2FpbiB3aXRob3V0IGludmFsaWRhdGluZywgdGhl
IHNhbWUgc3R1ZmYgc2hvdWxkIGJlIG9jY2x1ZGVkLgotICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0
dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJlY3QoSW50UmVjdCgpKTsKLSAgICBsYXllci0+
cHJlcGFyZVRvVXBkYXRlKGNvbnRlbnRCb3VuZHMpOwotCi0gICAgb2NjbHVkZWQgPSBSZWdpb24o
KTsKLSAgICBsYXllci0+YWRkU2VsZlRvT2NjbHVkZWRTY3JlZW5TcGFjZShvY2NsdWRlZCk7Ci0g
ICAgRVhQRUNUX0VRX1JFQ1QoaW50ZXJzZWN0aW9uKG9wYXF1ZVBhaW50UmVjdCwgdmlzaWJsZUJv
dW5kcyksIG9jY2x1ZGVkLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1ZGVkLnJl
Y3RzKCkuc2l6ZSgpKTsKLQotICAgIC8vIElmIHRoZSBsYXllciBpcyB0cmFuc2Zvcm1lZCB0aGVu
IHRoZSByZXN1bHRpbmcgb2NjbHVkZWQgYXJlYSBuZWVkcyB0byBiZSB0cmFuc2Zvcm1lZCB0byBp
dHMgdGFyZ2V0IHNwYWNlLgotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKLSAg
ICB0cmFuc2Zvcm0udHJhbnNsYXRlKGNvbnRlbnRCb3VuZHMud2lkdGgoKSAvIDIuMCwgY29udGVu
dEJvdW5kcy5oZWlnaHQoKSAvIDIuMCk7Ci0gICAgdHJhbnNmb3JtLnJvdGF0ZSg5MCk7Ci0gICAg
dHJhbnNmb3JtLnRyYW5zbGF0ZSgtY29udGVudEJvdW5kcy53aWR0aCgpIC8gMi4wLCAtY29udGVu
dEJvdW5kcy5oZWlnaHQoKSAvIDIuMCk7Ci0gICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSgxMCwgMTAp
OwotICAgIHNjcmVlblNwYWNlVHJhbnNmb3JtLnRyYW5zbGF0ZShjb250ZW50Qm91bmRzLndpZHRo
KCkgLyAyLjAsIGNvbnRlbnRCb3VuZHMuaGVpZ2h0KCkgLyAyLjApOwotICAgIHNjcmVlblNwYWNl
VHJhbnNmb3JtICo9IHRyYW5zZm9ybTsKLSAgICBzY3JlZW5TcGFjZVRyYW5zZm9ybS50cmFuc2xh
dGUoLWNvbnRlbnRCb3VuZHMud2lkdGgoKSAvIDIuMCwgLWNvbnRlbnRCb3VuZHMuaGVpZ2h0KCkg
LyAyLjApOwotICAgIGxheWVyLT5zZXRTY3JlZW5TcGFjZVRyYW5zZm9ybShzY3JlZW5TcGFjZVRy
YW5zZm9ybSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzKTsKLQot
ICAgIG9jY2x1ZGVkID0gUmVnaW9uKCk7Ci0gICAgbGF5ZXItPmFkZFNlbGZUb09jY2x1ZGVkU2Ny
ZWVuU3BhY2Uob2NjbHVkZWQpOwotICAgIEVYUEVDVF9FUV9SRUNUKHNjcmVlblNwYWNlVHJhbnNm
b3JtLm1hcFJlY3QoaW50ZXJzZWN0aW9uKG9wYXF1ZVBhaW50UmVjdCwgdmlzaWJsZUJvdW5kcykp
LCBvY2NsdWRlZC5ib3VuZHMoKSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBvY2NsdWRlZC5yZWN0cygp
LnNpemUoKSk7Ci0KLSAgICAvLyBCdXQgYSBub24tYXhpcy1hbGlnbmVkIHRyYW5zZm9ybSBkb2Vz
IG5vdCBnZXQgY29uc2lkZXJlZCBmb3Igb2NjbHVzaW9uLgotICAgIHRyYW5zZm9ybS50cmFuc2xh
dGUoY29udGVudEJvdW5kcy53aWR0aCgpIC8gMi4wLCBjb250ZW50Qm91bmRzLmhlaWdodCgpIC8g
Mi4wKTsKLSAgICB0cmFuc2Zvcm0ucm90YXRlKDUpOwotICAgIHRyYW5zZm9ybS50cmFuc2xhdGUo
LWNvbnRlbnRCb3VuZHMud2lkdGgoKSAvIDIuMCwgLWNvbnRlbnRCb3VuZHMuaGVpZ2h0KCkgLyAy
LjApOwotICAgIHNjcmVlblNwYWNlVHJhbnNmb3JtLnRyYW5zbGF0ZShjb250ZW50Qm91bmRzLndp
ZHRoKCkgLyAyLjAsIGNvbnRlbnRCb3VuZHMuaGVpZ2h0KCkgLyAyLjApOwotICAgIHNjcmVlblNw
YWNlVHJhbnNmb3JtICo9IHRyYW5zZm9ybTsKLSAgICBzY3JlZW5TcGFjZVRyYW5zZm9ybS50cmFu
c2xhdGUoLWNvbnRlbnRCb3VuZHMud2lkdGgoKSAvIDIuMCwgLWNvbnRlbnRCb3VuZHMuaGVpZ2h0
KCkgLyAyLjApOwotICAgIGxheWVyLT5zZXRTY3JlZW5TcGFjZVRyYW5zZm9ybShzY3JlZW5TcGFj
ZVRyYW5zZm9ybSk7Ci0gICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZShjb250ZW50Qm91bmRzKTsK
LQotICAgIG9jY2x1ZGVkID0gUmVnaW9uKCk7Ci0gICAgbGF5ZXItPmFkZFNlbGZUb09jY2x1ZGVk
U2NyZWVuU3BhY2Uob2NjbHVkZWQpOwotICAgIC8vIEZJWE1FOiBJZiB3ZSBmaW5kIGFuIG9wYXF1
ZSByZWN0IGNvbnRhaW5lZCBpbiB0aGUgcm90YXRlZCBub24tYXhpcy1hbGlnbmVkIHJlY3QsIHRo
ZW4KLSAgICAvLyB0aGlzIHdvbid0IGJlIGFuIGVtcHR5IHJlc3VsdC4KLSAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KCksIG9jY2x1ZGVkLmJvdW5kcygpKTsKLSAgICBFWFBFQ1RfRVEoMHUsIG9j
Y2x1ZGVkLnJlY3RzKCkuc2l6ZSgpKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UK
</data>

          </attachment>
      

    </bug>

</bugzilla>