<?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>56560</bug_id>
          
          <creation_ts>2011-03-17 08:02:35 -0700</creation_ts>
          <short_desc>REGRESSION(r81350): &quot;Breaks twenty Chromium Webkit Win builder webkit_gpu_tests&quot; (Requested by apavlov on #webkit).</short_desc>
          <delta_ts>2011-03-17 09:47:51 -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>Other</rep_platform>
          <op_sys>OS X 10.5</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>56476</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>commit-queue</cc>
    
    <cc>kbr</cc>
    
    <cc>senorblanco</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>369044</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-17 08:02:35 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/81350 broke the build:
&quot;Breaks twenty Chromium Webkit Win builder webkit_gpu_tests&quot; (Requested by apavlov 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>369045</commentid>
    <comment_count>1</comment_count>
      <attachid>86056</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-17 08:02:57 -0700</bug_when>
    <thetext>Created attachment 86056
ROLLOUT of r81350

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 --ignore-builders

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369084</commentid>
    <comment_count>2</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-03-17 09:33:57 -0700</bug_when>
    <thetext>Please go ahead and land this patch (and roll out my change) -- I have a feeling that all the canvas tests are timing out, we just only see the first 20.  I&apos;d rather not suppress all those failures until I can figure out what&apos;s going on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369095</commentid>
    <comment_count>3</comment_count>
      <attachid>86056</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-17 09:47:46 -0700</bug_when>
    <thetext>Comment on attachment 86056
ROLLOUT of r81350

Clearing flags on attachment: 86056

Committed r81361: &lt;http://trac.webkit.org/changeset/81361&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369096</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-17 09:47:51 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86056</attachid>
            <date>2011-03-17 08:02:57 -0700</date>
            <delta_ts>2011-03-17 09:47:46 -0700</delta_ts>
            <desc>ROLLOUT of r81350</desc>
            <filename>bug-56560-20110317150111.patch</filename>
            <type>text/plain</type>
            <size>56635</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODEzNTEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxNWY3NDY0ZjUwYjkwNGYyYjg5ODZj
NDI1NDVmOTQzMWExOWMwNjM5Li5jNGNkOTkyM2Q5Y2U0Y2FmN2Q2MDBlN2JlNDg1YjM5NTYyYzZi
YTM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDMtMTcgIFNoZXJpZmYgQm90ICA8d2Vi
a2l0LnJldmlldy5ib3RAZ21haWwuY29tPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHI4MTM1MC4KKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvODEz
NTAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU2NTYw
CisKKyAgICAgICAgIkJyZWFrcyB0d2VudHkgQ2hyb21pdW0gV2Via2l0IFdpbiBidWlsZGVyIHdl
YmtpdF9ncHVfdGVzdHMiCisgICAgICAgIChSZXF1ZXN0ZWQgYnkgYXBhdmxvdiBvbiAjd2Via2l0
KS4KKworICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtdHJhbnNmb3Jt
cy1maWxsUmVjdC1zaGFkb3cuanM6CisgICAgICAgIChzaG91bGRCZUFyb3VuZCk6CisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0OgorCiAyMDExLTAzLTE3
ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkLCBHVEsgYmFzZWxpbmVzIGZvciBmYXN0L2R5bmFtaWMvdGV4dC1jb21iaW5lLmh0bWwg
YWRkZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9j
YW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3cuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXRyYW5zZm9ybXMtZmlsbFJlY3Qtc2hhZG93LmpzCmlu
ZGV4IDVjNWM1NWE4MWZmMzRlNzI1OGUzMTg4MmViNWIwNmYyYjM4Y2JkNTMuLmEwOTBiNDcwZTky
NTZjNjRkMTJkY2FhNWE5MTMwNDcyMzE2YTVlOWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtdHJhbnNmb3Jtcy1maWxsUmVjdC1zaGFkb3cu
anMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy10cmFu
c2Zvcm1zLWZpbGxSZWN0LXNoYWRvdy5qcwpAQCAtMTksNyArMTksNyBAQCBmdW5jdGlvbiBzaG91
bGRCZUFyb3VuZChhLCBiKQogICAgICAgICBldmFsQSA9IGU7CiAgICAgfQogCi0gICAgaWYgKE1h
dGguYWJzKGV2YWxBIC0gYikgPCAyMCkKKyAgICBpZiAoTWF0aC5hYnMoZXZhbEEgLSBiKSA8IDEw
KQogICAgICAgICBwcmludCgiUEFTUyAiICsgYSArICIgaXMgYXJvdW5kICIgKyBiICwgImdyZWVu
IikKICAgICBlbHNlCiAgICAgICAgIHByaW50KCJGQUlMICIgKyBhICsgIiBpcyBub3QgYXJvdW5k
ICIgKyBiICsgIiAoYWN0dWFsOiAiICsgZXZhbEEgKyAiKSIsICJyZWQiKTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCAz
MTZmMjIzMGJmMzMzZGNhZTg0ZGZjNzIzYTU1NTI4OGQ0OGJiNWY1Li4yZTdlNDA0ZTBmZDMzMzRh
MzBmOGNmODZiYThlNDVhNmQ2NmY2ZWUyIDEwMDc1NQotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC0xNjY5LDcgKzE2NjksNyBAQCBC
VUdDUjI3NTUxIFdJTiA6IGZhc3QvY3NzL3NoYWRvdy1tdWx0aXBsZS5odG1sID0gSU1BR0UKIC8v
IFdlYktpdCBtZXJnZSA1MDc1Njo1MDgyMCwgcG9zc2libHkgZHVlIHRvIFdlYktpdCByNTA4MDgv
cjUwNzg2IGFuZCBDaHJvbWl1bSByMzE3MTUKIEJVR0NSMjc1NTMgV0lOIDogZmFzdC90ZXh0L2F0
c3VpLXBhcnRpYWwtc2VsZWN0aW9uLmh0bWwgPSBJTUFHRQogCi1CVUdDUjIyNzAwIENQVSBXSU4g
TElOVVggOiBmYXN0L2NhbnZhcy9jYW52YXMtc2hhZG93Lmh0bWwgPSBURVhUCitCVUdDUjIyNzAw
IFdJTiBMSU5VWCA6IGZhc3QvY2FudmFzL2NhbnZhcy1zaGFkb3cuaHRtbCA9IFRFWFQKIAogLy8g
RmFpbHVyZXMgZnJvbSBtZXJnZSA1MDk3Mjo1MTA0MgogLy8gVGhlIHRlc3QgcmVxdWlyZXMgRFJU
L1Rlc3QgU2hlbGwgdG8gc3VwcG9ydCBlcnJvciBwYWdlIGhhbmRsaW5nLgpAQCAtMjU1OCw3ICsy
NTU4LDcgQEAgQlVHQ1I2MTczOSBXSU4gTElOVVggREVCVUcgOiBhbmltYXRpb25zL3N1c3BlbmQt
cmVzdW1lLWFuaW1hdGlvbi1ldmVudHMuaHRtbCA9IEMKIC8vIE5ldyB0ZXN0cyBhZGRlZCB3aXRo
IGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzcyNDcyIGFuZCBmdXJ0aGVyLgogLy8g
U2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTk4MiBmb3IgbW9y
ZSBpbmZvLgogQlVHV0s1MjUwOSA6IHN2Zy9jc3MvcmVjdC1ncmFkaWVudC1zdHJva2Utc2hhZG93
LnN2ZyA9IElNQUdFCi1CVUdDUjYzOTIxIENQVSBMSU5VWCBXSU4gOiBmYXN0L2NhbnZhcy9jYW52
YXMtZmlsbFBhdGgtc2hhZG93Lmh0bWwgPSBURVhUCitCVUdDUjYzOTIxIExJTlVYIFdJTiA6IGZh
c3QvY2FudmFzL2NhbnZhcy1maWxsUGF0aC1zaGFkb3cuaHRtbCA9IFRFWFQKIEJVR0NSNjM5MjEg
Q1BVIExJTlVYIFdJTiA6IGZhc3QvY2FudmFzL2NhbnZhcy1maWxsUGF0aC1ncmFkaWVudC1zaGFk
b3cuaHRtbCA9IFRFWFQKIEJVR0NSNjM5MjEgQ1BVIExJTlVYIFdJTiA6IGZhc3QvY2FudmFzL2Nh
bnZhcy1maWxsUGF0aC1wYXR0ZXJuLXNoYWRvdy5odG1sID0gVEVYVAogQlVHQ1I2MzkyMSBDUFUg
TElOVVggV0lOIDogZmFzdC9jYW52YXMvY2FudmFzLWZpbGxQYXRoLWFscGhhLXNoYWRvdy5odG1s
ID0gVEVYVApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IGFmNTUyNTZiYjg5N2U1ZWExYjkwYmM4ZjUxYzkxMzZjMTQx
NzcyMzcuLjMxYmMyZGNmMTQwYTIzZjE2MWEzNmYyZmZjOGQwNTNjZTM5MmFjYjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMS0wMy0xNyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2
aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjgx
MzUwLgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC84MTM1MAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY1NjAKKworICAg
ICAgICAiQnJlYWtzIHR3ZW50eSBDaHJvbWl1bSBXZWJraXQgV2luIGJ1aWxkZXIgd2Via2l0X2dw
dV90ZXN0cyIKKyAgICAgICAgKFJlcXVlc3RlZCBieSBhcGF2bG92IG9uICN3ZWJraXQpLgorCisg
ICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0dMRVMyQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdMRVMyQ2FudmFzOjpTdGF0
ZTo6U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R0xFUzJDYW52YXM6OmNsZWFyUmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHTEVTMkNhbnZhczo6ZmlsbFBhdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6R0xFUzJDYW52YXM6OmZpbGxSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMRVMyQ2FudmFz
OjpjbGlwUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpHTEVTMkNhbnZhczo6cmVzdG9yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHTEVTMkNhbnZhczo6ZHJhd1RleHR1cmVkUmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpHTEVTMkNhbnZhczo6ZHJhd1RleHR1cmVkUmVjdFRpbGUpOgorICAgICAgICAo
V2ViQ29yZTo6R0xFUzJDYW52YXM6OmRyYXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9HTEVTMkNhbnZhcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dwdS9CaWN1YmljU2hhZGVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9ncHUvQmljdWJpY1NoYWRlci5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dwdS9Db252b2x1dGlvblNoYWRlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0NvbnZvbHV0aW9uU2hhZGVyLmg6IFJlbW92ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9ncHUvU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6U2hhcmVkR3JhcGhpY3NDb250ZXh0M0QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9TaGFyZWRHcmFwaGljc0NvbnRleHQzRC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0U2tpYS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hhZG93
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0U2tpYTo6Y2FuQWNjZWxlcmF0
ZSk6CisKIDIwMTEtMDMtMTYgIFN0ZXBoZW4gV2hpdGUgIDxzZW5vcmJsYW5jb0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSdXNzZWxsLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CmluZGV4IGU1OTM1Mjk1NDM3Zjc5NTZlYTBjZjZhYTdhZGEzYTMyZWE0ZTYyOWYuLmJiMzliNmI4
YWUxNGIyMWNkMjIyOTRjNWI2MzJiODAxYzFlZDlkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTM0
MjksMTAgKzM0MjksNiBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBl
L0ZvbnRQbGF0Zm9ybURhdGFGcmVlVHlwZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2ZyZWV0eXBlL0dseXBoUGFnZVRyZWVOb2RlRnJlZVR5cGUuY3BwJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9TaW1wbGVGb250RGF0YUZyZWVUeXBlLmNw
cCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0JpY3ViaWNTaGFkZXIuY3Bw
JywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9ncHUvQmljdWJpY1NoYWRlci5oJywK
LSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9ncHUvQ29udm9sdXRpb25TaGFkZXIuY3Bw
JywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9ncHUvQ29udm9sdXRpb25TaGFkZXIu
aCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuY3Bw
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5oJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9ncHUvTG9vcEJsaW5uQ2xhc3NpZmllci5j
cHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vR0xFUzJDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vR0xFUzJDYW52YXMuY3BwCmluZGV4IDllMTI1NWQ2MmNhNGMyZWVmMjY0ZTg5ZDAxN2Fl
ZGNmYjg4YjVkNjUuLjJmZjZiOGJmZWYxMzc5YzFjMWEwZmZmN2NlNjhiZmFlMjM5NjEzMDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dMRVMy
Q2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9HTEVTMkNhbnZhcy5jcHAKQEAgLTY1LDM4ICs2NSwyNiBAQCB0eXBlZGVmIFdURjo6VmVjdG9y
PGRvdWJsZT4gRG91YmxlVmVjdG9yOwogc3RydWN0IEdMRVMyQ2FudmFzOjpTdGF0ZSB7CiAgICAg
U3RhdGUoKQogICAgICAgICA6IG1fZmlsbENvbG9yKDAsIDAsIDAsIDI1NSkKLSAgICAgICAgLCBt
X3NoYWRvd0NvbG9yKDAsIDAsIDAsIDApCiAgICAgICAgICwgbV9hbHBoYSgxLjBmKQogICAgICAg
ICAsIG1fY29tcG9zaXRlT3AoQ29tcG9zaXRlU291cmNlT3ZlcikKICAgICAgICAgLCBtX2NsaXBw
aW5nRW5hYmxlZChmYWxzZSkKLSAgICAgICAgLCBtX3NoYWRvd09mZnNldCgwLCAwKQotICAgICAg
ICAsIG1fc2hhZG93Qmx1cigwKQotICAgICAgICAsIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMo
ZmFsc2UpCiAgICAgewogICAgIH0KICAgICBTdGF0ZShjb25zdCBTdGF0ZSYgb3RoZXIpCiAgICAg
ICAgIDogbV9maWxsQ29sb3Iob3RoZXIubV9maWxsQ29sb3IpCi0gICAgICAgICwgbV9zaGFkb3dD
b2xvcihvdGhlci5tX3NoYWRvd0NvbG9yKQogICAgICAgICAsIG1fYWxwaGEob3RoZXIubV9hbHBo
YSkKICAgICAgICAgLCBtX2NvbXBvc2l0ZU9wKG90aGVyLm1fY29tcG9zaXRlT3ApCiAgICAgICAg
ICwgbV9jdG0ob3RoZXIubV9jdG0pCiAgICAgICAgICwgbV9jbGlwcGluZ1BhdGhzKCkgLy8gRG9u
J3QgY29weTsgY2xpcHBpbmcgcGF0aHMgYXJlIHRyYWNrZWQgcGVyLXN0YXRlLgogICAgICAgICAs
IG1fY2xpcHBpbmdFbmFibGVkKG90aGVyLm1fY2xpcHBpbmdFbmFibGVkKQotICAgICAgICAsIG1f
c2hhZG93T2Zmc2V0KG90aGVyLm1fc2hhZG93T2Zmc2V0KQotICAgICAgICAsIG1fc2hhZG93Qmx1
cihvdGhlci5tX3NoYWRvd0JsdXIpCi0gICAgICAgICwgbV9zaGFkb3dzSWdub3JlVHJhbnNmb3Jt
cyhvdGhlci5tX3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKQogICAgIHsKICAgICB9CiAgICAgQ29s
b3IgbV9maWxsQ29sb3I7Ci0gICAgQ29sb3IgbV9zaGFkb3dDb2xvcjsKICAgICBmbG9hdCBtX2Fs
cGhhOwogICAgIENvbXBvc2l0ZU9wZXJhdG9yIG1fY29tcG9zaXRlT3A7CiAgICAgQWZmaW5lVHJh
bnNmb3JtIG1fY3RtOwogICAgIFdURjo6VmVjdG9yPFBhdGg+IG1fY2xpcHBpbmdQYXRoczsKICAg
ICBib29sIG1fY2xpcHBpbmdFbmFibGVkOwotICAgIEZsb2F0U2l6ZSBtX3NoYWRvd09mZnNldDsK
LSAgICBmbG9hdCBtX3NoYWRvd0JsdXI7Ci0gICAgYm9vbCBtX3NoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zOwogCiAgICAgLy8gSGVscGVyIGZ1bmN0aW9uIGZvciBhcHBseWluZyB0aGUgc3RhdGUncyBh
bHBoYSB2YWx1ZSB0byB0aGUgZ2l2ZW4gaW5wdXQKICAgICAvLyBjb2xvciB0byBwcm9kdWNlIGEg
bmV3IG91dHB1dCBjb2xvci4gVGhlIGxvZ2ljIGlzIHRoZSBzYW1lIGFzCkBAIC0xMTIsMTAgKzEw
MCw3IEBAIHN0cnVjdCBHTEVTMkNhbnZhczo6U3RhdGUgewogICAgICAgICBpbnQgYSA9IChjLmFs
cGhhKCkgKiBzKSA+PiA4OwogICAgICAgICByZXR1cm4gQ29sb3IoYy5yZWQoKSwgYy5ncmVlbigp
LCBjLmJsdWUoKSwgYSk7CiAgICAgfQotICAgIGJvb2wgc2hhZG93QWN0aXZlKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBtX3NoYWRvd0NvbG9yLmFscGhhKCkgPiAwICYmIChtX3NoYWRv
d0JsdXIgfHwgbV9zaGFkb3dPZmZzZXQud2lkdGgoKSB8fCBtX3NoYWRvd09mZnNldC5oZWlnaHQo
KSk7Ci0gICAgfQorCiB9OwogCiBzdGF0aWMgaW5saW5lIEZsb2F0UG9pbnQgb3BlcmF0b3IqKGNv
bnN0IEZsb2F0UG9pbnQmIGYsIGZsb2F0IHNjYWxlKQpAQCAtMjA5LDcgKzE5NCwxMSBAQCB2b2lk
IEdMRVMyQ2FudmFzOjpjbGVhclJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewogICAgIGJp
bmRGcmFtZWJ1ZmZlcigpOwogICAgIGlmIChtX3N0YXRlLT5tX2N0bS5pc0lkZW50aXR5KCkgJiYg
IW1fc3RhdGUtPm1fY2xpcHBpbmdFbmFibGVkKSB7Ci0gICAgICAgIHNjaXNzb3JDbGVhcihyZWN0
LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CisgICAgICAgIG1f
Y29udGV4dC0+c2Npc3NvcihyZWN0LngoKSwgbV9zaXplLmhlaWdodCgpIC0gcmVjdC5oZWlnaHQo
KSAtIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworICAgICAgICBtX2Nv
bnRleHQtPmVuYWJsZShHcmFwaGljc0NvbnRleHQzRDo6U0NJU1NPUl9URVNUKTsKKyAgICAgICAg
bV9jb250ZXh0LT5jbGVhckNvbG9yKENvbG9yKFJHQkEzMigwKSkpOworICAgICAgICBtX2NvbnRl
eHQtPmNsZWFyKEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9CVUZGRVJfQklUKTsKKyAgICAgICAg
bV9jb250ZXh0LT5kaXNhYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpTQ0lTU09SX1RFU1QpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIHNhdmUoKTsKICAgICAgICAgc2V0Q29tcG9zaXRlT3BlcmF0aW9u
KENvbXBvc2l0ZUNsZWFyKTsKQEAgLTIxOCw2NCArMjA3LDM1IEBAIHZvaWQgR0xFUzJDYW52YXM6
OmNsZWFyUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgfQogfQogCi12b2lkIEdMRVMy
Q2FudmFzOjpzY2lzc29yQ2xlYXIoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgd2lkdGgsIGZsb2F0
IGhlaWdodCkKLXsKLSAgICBpbnQgaW50WCA9IHN0YXRpY19jYXN0PGludD4oeCArIDAuNWYpOwot
ICAgIGludCBpbnRZID0gc3RhdGljX2Nhc3Q8aW50Pih5ICsgMC41Zik7Ci0gICAgaW50IGludFdp
ZHRoID0gc3RhdGljX2Nhc3Q8aW50Pih4ICsgd2lkdGggKyAwLjVmKSAtIGludFg7Ci0gICAgaW50
IGludEhlaWdodCA9IHN0YXRpY19jYXN0PGludD4oeSArIGhlaWdodCArIDAuNWYpIC0gaW50WTsK
LSAgICBtX2NvbnRleHQtPnNjaXNzb3IoaW50WCwgbV9zaXplLmhlaWdodCgpIC0gaW50SGVpZ2h0
IC0gaW50WSwgaW50V2lkdGgsIGludEhlaWdodCk7Ci0gICAgbV9jb250ZXh0LT5lbmFibGUoR3Jh
cGhpY3NDb250ZXh0M0Q6OlNDSVNTT1JfVEVTVCk7Ci0gICAgbV9jb250ZXh0LT5jbGVhckNvbG9y
KENvbG9yKFJHQkEzMigwKSkpOwotICAgIG1fY29udGV4dC0+Y2xlYXIoR3JhcGhpY3NDb250ZXh0
M0Q6OkNPTE9SX0JVRkZFUl9CSVQpOwotICAgIG1fY29udGV4dC0+ZGlzYWJsZShHcmFwaGljc0Nv
bnRleHQzRDo6U0NJU1NPUl9URVNUKTsKLX0KLQogdm9pZCBHTEVTMkNhbnZhczo6ZmlsbFBhdGgo
Y29uc3QgUGF0aCYgcGF0aCkKIHsKLSAgICBiaW5kRnJhbWVidWZmZXIoKTsKICAgICBtX2NvbnRl
eHQtPmFwcGx5Q29tcG9zaXRlT3BlcmF0b3IobV9zdGF0ZS0+bV9jb21wb3NpdGVPcCk7CiAgICAg
YXBwbHlDbGlwcGluZyhtX3N0YXRlLT5tX2NsaXBwaW5nRW5hYmxlZCk7Ci0KLSAgICBpZiAobV9z
dGF0ZS0+c2hhZG93QWN0aXZlKCkpIHsKLSAgICAgICAgYmVnaW5TaGFkb3dEcmF3KCk7Ci0gICAg
ICAgIGZpbGxQYXRoSW50ZXJuYWwocGF0aCwgbV9zdGF0ZS0+bV9zaGFkb3dDb2xvcik7Ci0gICAg
ICAgIGVuZFNoYWRvd0RyYXcocGF0aC5ib3VuZGluZ1JlY3QoKSk7Ci0gICAgfQotICAgIGZpbGxQ
YXRoSW50ZXJuYWwocGF0aCwgbV9zdGF0ZS0+YXBwbHlBbHBoYShtX3N0YXRlLT5tX2ZpbGxDb2xv
cikpOworICAgIGZpbGxQYXRoKHBhdGgsIG1fc3RhdGUtPmFwcGx5QWxwaGEobV9zdGF0ZS0+bV9m
aWxsQ29sb3IpKTsKIH0KIAogdm9pZCBHTEVTMkNhbnZhczo6ZmlsbFJlY3QoY29uc3QgRmxvYXRS
ZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKIHsK
LSAgICBiaW5kRnJhbWVidWZmZXIoKTsKICAgICBtX2NvbnRleHQtPmFwcGx5Q29tcG9zaXRlT3Bl
cmF0b3IobV9zdGF0ZS0+bV9jb21wb3NpdGVPcCk7CiAgICAgYXBwbHlDbGlwcGluZyhtX3N0YXRl
LT5tX2NsaXBwaW5nRW5hYmxlZCk7CisgICAgbV9jb250ZXh0LT51c2VRdWFkVmVydGljZXMoKTsK
IAotICAgIGlmIChtX3N0YXRlLT5zaGFkb3dBY3RpdmUoKSkgewotICAgICAgICBiZWdpblNoYWRv
d0RyYXcoKTsKLSAgICAgICAgZmlsbFJlY3RJbnRlcm5hbChyZWN0LCBtX3N0YXRlLT5tX3NoYWRv
d0NvbG9yKTsKLSAgICAgICAgZW5kU2hhZG93RHJhdyhyZWN0KTsKLSAgICB9Ci0gICAgZmlsbFJl
Y3RJbnRlcm5hbChyZWN0LCBjb2xvcik7Ci19Ci0KLXZvaWQgR0xFUzJDYW52YXM6OmZpbGxSZWN0
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKLXsKLSAgICBmaWxsUmVjdChyZWN0LCBtX3N0YXRlLT5h
cHBseUFscGhhKG1fc3RhdGUtPm1fZmlsbENvbG9yKSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci19
Ci0KLXZvaWQgR0xFUzJDYW52YXM6OmZpbGxSZWN0SW50ZXJuYWwoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0LCBjb25zdCBDb2xvciYgY29sb3IpCi17CiAgICAgQWZmaW5lVHJhbnNmb3JtIG1hdHJpeCht
X2ZsaXBNYXRyaXgpOwogICAgIG1hdHJpeCAqPSBtX3N0YXRlLT5tX2N0bTsKICAgICBtYXRyaXgu
dHJhbnNsYXRlKHJlY3QueCgpLCByZWN0LnkoKSk7CiAgICAgbWF0cml4LnNjYWxlKHJlY3Qud2lk
dGgoKSwgcmVjdC5oZWlnaHQoKSk7CiAKLSAgICBtX2NvbnRleHQtPnVzZVF1YWRWZXJ0aWNlcygp
OwogICAgIG1fY29udGV4dC0+dXNlRmlsbFNvbGlkUHJvZ3JhbShtYXRyaXgsIGNvbG9yKTsKKwor
ICAgIGJpbmRGcmFtZWJ1ZmZlcigpOwogICAgIG1fY29udGV4dC0+ZHJhd0FycmF5cyhHcmFwaGlj
c0NvbnRleHQzRDo6VFJJQU5HTEVfU1RSSVAsIDAsIDQpOwogfQogCit2b2lkIEdMRVMyQ2FudmFz
OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCit7CisgICAgZmlsbFJlY3QocmVjdCwg
bV9zdGF0ZS0+YXBwbHlBbHBoYShtX3N0YXRlLT5tX2ZpbGxDb2xvciksIENvbG9yU3BhY2VEZXZp
Y2VSR0IpOworfQorCiB2b2lkIEdMRVMyQ2FudmFzOjpzZXRGaWxsQ29sb3IoY29uc3QgQ29sb3Im
IGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgbV9zdGF0ZS0+bV9maWxsQ29s
b3IgPSBjb2xvcjsKQEAgLTI4NiwyNiArMjQ2LDYgQEAgdm9pZCBHTEVTMkNhbnZhczo6c2V0QWxw
aGEoZmxvYXQgYWxwaGEpCiAgICAgbV9zdGF0ZS0+bV9hbHBoYSA9IGFscGhhOwogfQogCi12b2lk
IEdMRVMyQ2FudmFzOjpzZXRTaGFkb3dDb2xvcihjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3Bh
Y2UpCi17Ci0gICAgbV9zdGF0ZS0+bV9zaGFkb3dDb2xvciA9IGNvbG9yOwotfQotCi12b2lkIEdM
RVMyQ2FudmFzOjpzZXRTaGFkb3dPZmZzZXQoY29uc3QgRmxvYXRTaXplJiBvZmZzZXQpCi17Ci0g
ICAgbV9zdGF0ZS0+bV9zaGFkb3dPZmZzZXQgPSBvZmZzZXQ7Ci19Ci0KLXZvaWQgR0xFUzJDYW52
YXM6OnNldFNoYWRvd0JsdXIoZmxvYXQgc2hhZG93Qmx1cikKLXsKLSAgICBtX3N0YXRlLT5tX3No
YWRvd0JsdXIgPSBzaGFkb3dCbHVyOwotfQotCi12b2lkIEdMRVMyQ2FudmFzOjpzZXRTaGFkb3dz
SWdub3JlVHJhbnNmb3Jtcyhib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKQotewotICAgIG1f
c3RhdGUtPm1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPSBzaGFkb3dzSWdub3JlVHJhbnNmb3Jt
czsKLX0KLQogdm9pZCBHTEVTMkNhbnZhczo6dHJhbnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkpCiB7
CiAgICAgbV9zdGF0ZS0+bV9jdG0udHJhbnNsYXRlKHgsIHkpOwpAQCAtMzM4LDcgKzI3OCw3IEBA
IHZvaWQgR0xFUzJDYW52YXM6OmNsaXBQYXRoKGNvbnN0IFBhdGgmIHBhdGgpCiAgICAgYmVnaW5T
dGVuY2lsRHJhdygpOwogICAgIC8vIFJlZCBpcyB1c2VkIHNvIHdlIGNhbiBzZWUgaXQgaWYgaXQg
ZW5kcyB1cCBpbiB0aGUgY29sb3IgYnVmZmVyLgogICAgIENvbG9yIHJlZCgyNTUsIDAsIDAsIDI1
NSk7Ci0gICAgZmlsbFBhdGhJbnRlcm5hbChwYXRoLCByZWQpOworICAgIGZpbGxQYXRoKHBhdGgs
IHJlZCk7CiAgICAgbV9zdGF0ZS0+bV9jbGlwcGluZ1BhdGhzLmFwcGVuZChwYXRoKTsKICAgICBt
X3N0YXRlLT5tX2NsaXBwaW5nRW5hYmxlZCA9IHRydWU7CiB9CkBAIC0zNzEsNyArMzExLDcgQEAg
dm9pZCBHTEVTMkNhbnZhczo6cmVzdG9yZSgpCiAgICAgICAgICAgICBmb3IgKHBhdGhJdGVyID0g
Y2xpcHBpbmdQYXRocy5iZWdpbigpOyBwYXRoSXRlciA8IGNsaXBwaW5nUGF0aHMuZW5kKCk7ICsr
cGF0aEl0ZXIpIHsKICAgICAgICAgICAgICAgICAvLyBSZWQgaXMgdXNlZCBzbyB3ZSBjYW4gc2Vl
IGl0IGlmIGl0IGVuZHMgdXAgaW4gdGhlIGNvbG9yIGJ1ZmZlci4KICAgICAgICAgICAgICAgICBD
b2xvciByZWQoMjU1LCAwLCAwLCAyNTUpOwotICAgICAgICAgICAgICAgIGZpbGxQYXRoSW50ZXJu
YWwoKnBhdGhJdGVyLCByZWQpOworICAgICAgICAgICAgICAgIGZpbGxQYXRoKCpwYXRoSXRlciwg
cmVkKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTM3OSwxNSArMzE5LDE1
IEBAIHZvaWQgR0xFUzJDYW52YXM6OnJlc3RvcmUoKQogCiB2b2lkIEdMRVMyQ2FudmFzOjpkcmF3
VGV4dHVyZWRSZWN0KHVuc2lnbmVkIHRleHR1cmUsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcCkKIHsKLSAg
ICBiaW5kRnJhbWVidWZmZXIoKTsKICAgICBtX2NvbnRleHQtPmFwcGx5Q29tcG9zaXRlT3BlcmF0
b3IoY29tcG9zaXRlT3ApOwogICAgIGFwcGx5Q2xpcHBpbmcoZmFsc2UpOwogCisgICAgbV9jb250
ZXh0LT51c2VRdWFkVmVydGljZXMoKTsKICAgICBtX2NvbnRleHQtPnNldEFjdGl2ZVRleHR1cmUo
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkUwKTsKIAogICAgIG1fY29udGV4dC0+YmluZFRleHR1
cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmUpOwogCi0gICAgZHJhd1Rl
eHR1cmVkUXVhZCh0ZXh0dXJlU2l6ZSwgc3JjUmVjdCwgZHN0UmVjdCwgbV9zdGF0ZS0+bV9jdG0s
IG1fc3RhdGUtPm1fYWxwaGEpOworICAgIGRyYXdRdWFkKHRleHR1cmVTaXplLCBzcmNSZWN0LCBk
c3RSZWN0LCBtX3N0YXRlLT5tX2N0bSwgbV9zdGF0ZS0+bV9hbHBoYSk7CiB9CiAKIHZvaWQgR0xF
UzJDYW52YXM6OmRyYXdUZXh0dXJlZFJlY3QoVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3ApCkBAIC0zOTgsMTIgKzMzOCwxMiBA
QCB2b2lkIEdMRVMyQ2FudmFzOjpkcmF3VGV4dHVyZWRSZWN0KFRleHR1cmUqIHRleHR1cmUsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgYwogCiB2b2lkIEdMRVMyQ2FudmFzOjpkcmF3VGV4dHVy
ZWRSZWN0KFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgZmxv
YXQgYWxwaGEsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9z
aXRlT3AsIGJvb2wgY2xpcCkKIHsKLSAgICBiaW5kRnJhbWVidWZmZXIoKTsKICAgICBtX2NvbnRl
eHQtPmFwcGx5Q29tcG9zaXRlT3BlcmF0b3IoY29tcG9zaXRlT3ApOwogICAgIGFwcGx5Q2xpcHBp
bmcoY2xpcCk7CiAgICAgY29uc3QgVGlsaW5nRGF0YSYgdGlsZXMgPSB0ZXh0dXJlLT50aWxlcygp
OwogICAgIEludFJlY3QgdGlsZUlkeFJlY3QgPSB0aWxlcy5vdmVybGFwcGVkVGlsZUluZGljZXMo
c3JjUmVjdCk7CiAKKyAgICBtX2NvbnRleHQtPnVzZVF1YWRWZXJ0aWNlcygpOwogICAgIG1fY29u
dGV4dC0+c2V0QWN0aXZlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApOwogCiAg
ICAgZm9yIChpbnQgeSA9IHRpbGVJZHhSZWN0LnkoKTsgeSA8PSB0aWxlSWR4UmVjdC5tYXhZKCk7
IHkrKykgewpAQCAtNDI3LDUyICszNjcsMTAgQEAgdm9pZCBHTEVTMkNhbnZhczo6ZHJhd1RleHR1
cmVkUmVjdFRpbGUoVGV4dHVyZSogdGV4dHVyZSwgaW50IHRpbGUsIGNvbnN0IEZsb2F0UmUKIAog
ICAgIEludFJlY3QgdGlsZUJvdW5kc1dpdGhCb3JkZXIgPSB0aWxlcy50aWxlQm91bmRzV2l0aEJv
cmRlcih0aWxlKTsKIAotICAgIGRyYXdUZXh0dXJlZFF1YWQodGlsZUJvdW5kc1dpdGhCb3JkZXIu
c2l6ZSgpLCBzcmNSZWN0Q2xpcHBlZEluVGlsZVNwYWNlLCBkc3RSZWN0SW50ZXJzZWN0ZWQsIHRy
YW5zZm9ybSwgYWxwaGEpOworICAgIGRyYXdRdWFkKHRpbGVCb3VuZHNXaXRoQm9yZGVyLnNpemUo
KSwgc3JjUmVjdENsaXBwZWRJblRpbGVTcGFjZSwgZHN0UmVjdEludGVyc2VjdGVkLCB0cmFuc2Zv
cm0sIGFscGhhKTsKIH0KIAotdm9pZCBHTEVTMkNhbnZhczo6Y29udm9sdmVSZWN0KHVuc2lnbmVk
IHRleHR1cmUsIGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgZmxvYXQgaW1hZ2VJbmNyZW1lbnRbMl0s
IGNvbnN0IGZsb2F0KiBrZXJuZWwsIGludCBrZXJuZWxXaWR0aCkKLXsKLSAgICBtX2NvbnRleHQt
PmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0dXJlKTsKLSAg
ICBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBfUywgR3JhcGhpY3NDb250ZXh0M0Q6OkNM
QU1QX1RPX0VER0UpOwotICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9ULCBHcmFw
aGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSk7Ci0gICAgbV9jb250ZXh0LT50ZXhQYXJhbWV0
ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV9NSU5fRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TkVBUkVTVCk7Ci0gICAgbV9jb250
ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TkVBUkVT
VCk7Ci0KLSAgICBBZmZpbmVUcmFuc2Zvcm0gbWF0cml4KG1fZmxpcE1hdHJpeCk7Ci0gICAgbWF0
cml4LnRyYW5zbGF0ZShkc3RSZWN0LngoKSwgZHN0UmVjdC55KCkpOwotICAgIG1hdHJpeC5zY2Fs
ZShkc3RSZWN0LndpZHRoKCksIGRzdFJlY3QuaGVpZ2h0KCkpOwotCi0gICAgQWZmaW5lVHJhbnNm
b3JtIHRleE1hdHJpeDsKLSAgICB0ZXhNYXRyaXguc2NhbGUoMS4wZiAvIHRleHR1cmVTaXplLndp
ZHRoKCksIDEuMGYgLyB0ZXh0dXJlU2l6ZS5oZWlnaHQoKSk7Ci0gICAgdGV4TWF0cml4LnRyYW5z
bGF0ZShzcmNSZWN0LngoKSwgc3JjUmVjdC55KCkpOwotICAgIHRleE1hdHJpeC5zY2FsZShzcmNS
ZWN0LndpZHRoKCksIHNyY1JlY3QuaGVpZ2h0KCkpOwotCi0gICAgbV9jb250ZXh0LT51c2VRdWFk
VmVydGljZXMoKTsKLSAgICBtX2NvbnRleHQtPnVzZUNvbnZvbHV0aW9uUHJvZ3JhbShtYXRyaXgs
IHRleE1hdHJpeCwga2VybmVsLCBrZXJuZWxXaWR0aCwgaW1hZ2VJbmNyZW1lbnQpOwotICAgIG1f
Y29udGV4dC0+ZHJhd0FycmF5cyhHcmFwaGljc0NvbnRleHQzRDo6VFJJQU5HTEVfU1RSSVAsIDAs
IDQpOwotICAgIGNoZWNrR0xFcnJvcigiZ2xEcmF3QXJyYXlzIik7Ci19Ci0KLXN0YXRpYyBmbG9h
dCBnYXVzcyhmbG9hdCB4LCBmbG9hdCBzaWdtYSkKLXsKLSAgICByZXR1cm4gZXhwKC0gKHggKiB4
KSAvICgyLjBmICogc2lnbWEgKiBzaWdtYSkpOwotfQotCi1zdGF0aWMgdm9pZCBidWlsZEtlcm5l
bChmbG9hdCBzaWdtYSwgZmxvYXQqIGtlcm5lbCwgaW50IGtlcm5lbFdpZHRoKQotewotICAgIGZs
b2F0IGhhbGZXaWR0aCA9IChrZXJuZWxXaWR0aCAtIDEuMGYpIC8gMi4wZjsKLSAgICBmbG9hdCBz
dW0gPSAwLjBmOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwga2VybmVsV2lkdGg7ICsraSkgewot
ICAgICAgICBrZXJuZWxbaV0gPSBnYXVzcyhpIC0gaGFsZldpZHRoLCBzaWdtYSk7Ci0gICAgICAg
IHN1bSArPSBrZXJuZWxbaV07Ci0gICAgfQotICAgIC8vIE5vcm1hbGl6ZSB0aGUga2VybmVsCi0g
ICAgZmxvYXQgc2NhbGUgPSAxLjBmIC8gc3VtOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwga2Vy
bmVsV2lkdGg7ICsraSkKLSAgICAgICAga2VybmVsW2ldICo9IHNjYWxlOwotfQotCi12b2lkIEdM
RVMyQ2FudmFzOjpkcmF3VGV4dHVyZWRRdWFkKGNvbnN0IEludFNpemUmIHRleHR1cmVTaXplLCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGZsb2F0IGFscGhhKQordm9pZCBHTEVTMkNhbnZh
czo6ZHJhd1F1YWQoY29uc3QgSW50U2l6ZSYgdGV4dHVyZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHRyYW5zZm9ybSwgZmxvYXQgYWxwaGEpCiB7CiAgICAgQWZmaW5lVHJhbnNmb3JtIG1hdHJpeCht
X2ZsaXBNYXRyaXgpOwogICAgIG1hdHJpeCAqPSB0cmFuc2Zvcm07CkBAIC00ODQsMzggKzM4Miw5
IEBAIHZvaWQgR0xFUzJDYW52YXM6OmRyYXdUZXh0dXJlZFF1YWQoY29uc3QgSW50U2l6ZSYgdGV4
dHVyZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYKICAgICB0ZXhNYXRyaXgudHJhbnNsYXRlKHNyY1Jl
Y3QueCgpLCBzcmNSZWN0LnkoKSk7CiAgICAgdGV4TWF0cml4LnNjYWxlKHNyY1JlY3Qud2lkdGgo
KSwgc3JjUmVjdC5oZWlnaHQoKSk7CiAKLSAgICBtX2NvbnRleHQtPnVzZVF1YWRWZXJ0aWNlcygp
OwotICAgIG1fY29udGV4dC0+dXNlVGV4dHVyZVByb2dyYW0obWF0cml4LCB0ZXhNYXRyaXgsIGFs
cGhhKTsKLSAgICBtX2NvbnRleHQtPmRyYXdBcnJheXMoR3JhcGhpY3NDb250ZXh0M0Q6OlRSSUFO
R0xFX1NUUklQLCAwLCA0KTsKLSAgICBjaGVja0dMRXJyb3IoImdsRHJhd0FycmF5cyIpOwotfQot
Ci12b2lkIEdMRVMyQ2FudmFzOjpkcmF3VGV4dHVyZWRRdWFkTWl0Y2hlbGwoY29uc3QgSW50U2l6
ZSYgdGV4dHVyZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgZmxvYXQgYWxwaGEp
Ci17Ci0gICAgc3RhdGljIGNvbnN0IGZsb2F0IG1pdGNoZWxsQ29lZmZpY2llbnRzWzE2XSA9IHsK
LSAgICAgICAgIDAuMGYgLyAxOC4wZiwgICAxLjBmIC8gMTguMGYsICAxNi4wZiAvIDE4LjBmLCAg
IDEuMGYgLyAxOC4wZiwKLSAgICAgICAgIDAuMGYgLyAxOC4wZiwgICA5LjBmIC8gMTguMGYsICAg
MC4wZiAvIDE4LjBmLCAgLTkuMGYgLyAxOC4wZiwKLSAgICAgICAgLTYuMGYgLyAxOC4wZiwgIDI3
LjBmIC8gMTguMGYsIC0zNi4wZiAvIDE4LjBmLCAgMTUuMGYgLyAxOC4wZiwKLSAgICAgICAgIDcu
MGYgLyAxOC4wZiwgLTIxLjBmIC8gMTguMGYsICAyMS4wZiAvIDE4LjBmLCAgLTcuMGYgLyAxOC4w
ZiwKLSAgICB9OwotCi0gICAgQWZmaW5lVHJhbnNmb3JtIG1hdHJpeChtX2ZsaXBNYXRyaXgpOwot
ICAgIG1hdHJpeCAqPSB0cmFuc2Zvcm07Ci0gICAgbWF0cml4LnRyYW5zbGF0ZShkc3RSZWN0Lngo
KSwgZHN0UmVjdC55KCkpOwotICAgIG1hdHJpeC5zY2FsZShkc3RSZWN0LndpZHRoKCksIGRzdFJl
Y3QuaGVpZ2h0KCkpOwotCi0gICAgZmxvYXQgaW1hZ2VJbmNyZW1lbnRbMl0gPSB7IDEuMGYgLyB0
ZXh0dXJlU2l6ZS53aWR0aCgpLCAxLjBmIC8gdGV4dHVyZVNpemUuaGVpZ2h0KCkgfTsKLQotICAg
IEFmZmluZVRyYW5zZm9ybSB0ZXhNYXRyaXg7Ci0gICAgdGV4TWF0cml4LnNjYWxlKGltYWdlSW5j
cmVtZW50WzBdLCBpbWFnZUluY3JlbWVudFsxXSk7Ci0gICAgdGV4TWF0cml4LnRyYW5zbGF0ZShz
cmNSZWN0LngoKSwgc3JjUmVjdC55KCkpOwotICAgIHRleE1hdHJpeC5zY2FsZShzcmNSZWN0Lndp
ZHRoKCksIHNyY1JlY3QuaGVpZ2h0KCkpOwotCi0gICAgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJp
KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV9NSU5fRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TkVBUkVTVCk7Ci0gICAgbV9jb250ZXh0
LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TkVBUkVTVCk7
CisgICAgYmluZEZyYW1lYnVmZmVyKCk7CiAKLSAgICBtX2NvbnRleHQtPnVzZVF1YWRWZXJ0aWNl
cygpOwotICAgIG1fY29udGV4dC0+dXNlQmljdWJpY1Byb2dyYW0obWF0cml4LCB0ZXhNYXRyaXgs
IG1pdGNoZWxsQ29lZmZpY2llbnRzLCBpbWFnZUluY3JlbWVudCwgYWxwaGEpOworICAgIG1fY29u
dGV4dC0+dXNlVGV4dHVyZVByb2dyYW0obWF0cml4LCB0ZXhNYXRyaXgsIGFscGhhKTsKICAgICBt
X2NvbnRleHQtPmRyYXdBcnJheXMoR3JhcGhpY3NDb250ZXh0M0Q6OlRSSUFOR0xFX1NUUklQLCAw
LCA0KTsKICAgICBjaGVja0dMRXJyb3IoImdsRHJhd0FycmF5cyIpOwogfQpAQCAtNjg1LDkgKzU1
NCwxMiBAQCB2b2lkIEdMRVMyQ2FudmFzOjpjcmVhdGVWZXJ0ZXhCdWZmZXJGcm9tUGF0aChjb25z
dCBQYXRoJiBwYXRoLCBpbnQqIGNvdW50LCB1bnNpZwogICAgICpjb3VudCA9IGluZGljZXMuc2l6
ZSgpOwogfQogCi12b2lkIEdMRVMyQ2FudmFzOjpmaWxsUGF0aEludGVybmFsKGNvbnN0IFBhdGgm
IHBhdGgsIGNvbnN0IENvbG9yJiBjb2xvcikKK3ZvaWQgR0xFUzJDYW52YXM6OmZpbGxQYXRoKGNv
bnN0IFBhdGgmIHBhdGgsIGNvbnN0IENvbG9yJiBjb2xvcikKIHsKICAgICBpZiAoU2hhcmVkR3Jh
cGhpY3NDb250ZXh0M0Q6OnVzZUxvb3BCbGlubkZvclBhdGhSZW5kZXJpbmcoKSkgeworICAgICAg
ICBiaW5kRnJhbWVidWZmZXIoKTsKKyAgICAgICAgbV9jb250ZXh0LT5hcHBseUNvbXBvc2l0ZU9w
ZXJhdG9yKG1fc3RhdGUtPm1fY29tcG9zaXRlT3ApOworCiAgICAgICAgIG1fcGF0aENhY2hlLmNs
ZWFyKCk7CiAgICAgICAgIExvb3BCbGlublBhdGhQcm9jZXNzb3IgcHJvY2Vzc29yOwogICAgICAg
ICBwcm9jZXNzb3IucHJvY2VzcyhwYXRoLCBtX3BhdGhDYWNoZSk7CkBAIC03MTgsMTggKzU5MCwx
OCBAQCB2b2lkIEdMRVMyQ2FudmFzOjpmaWxsUGF0aEludGVybmFsKGNvbnN0IFBhdGgmIHBhdGgs
IGNvbnN0IENvbG9yJiBjb2xvcikKICAgICAgICAgaW50IGNvdW50OwogICAgICAgICB1bnNpZ25l
ZCB2ZXJ0ZXhCdWZmZXIsIGluZGV4QnVmZmVyOwogICAgICAgICBjcmVhdGVWZXJ0ZXhCdWZmZXJG
cm9tUGF0aChwYXRoLCAmY291bnQsICZ2ZXJ0ZXhCdWZmZXIsICZpbmRleEJ1ZmZlcik7Ci0KLSAg
ICAgICAgQWZmaW5lVHJhbnNmb3JtIG1hdHJpeChtX2ZsaXBNYXRyaXgpOwotICAgICAgICBtYXRy
aXggKj0gbV9zdGF0ZS0+bV9jdG07Ci0KICAgICAgICAgbV9jb250ZXh0LT5ncmFwaGljc0NvbnRl
eHQzRCgpLT5iaW5kQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpBUlJBWV9CVUZGRVIsIHZlcnRl
eEJ1ZmZlcik7CiAgICAgICAgIGNoZWNrR0xFcnJvcigiYmluZEJ1ZmZlciIpOwogICAgICAgICBt
X2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dDNEKCktPmJpbmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0
M0Q6OkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBpbmRleEJ1ZmZlcik7CiAgICAgICAgIGNoZWNrR0xF
cnJvcigiYmluZEJ1ZmZlciIpOwogCisgICAgICAgIEFmZmluZVRyYW5zZm9ybSBtYXRyaXgobV9m
bGlwTWF0cml4KTsKKyAgICAgICAgbWF0cml4ICo9IG1fc3RhdGUtPm1fY3RtOworCiAgICAgICAg
IG1fY29udGV4dC0+dXNlRmlsbFNvbGlkUHJvZ3JhbShtYXRyaXgsIGNvbG9yKTsKICAgICAgICAg
Y2hlY2tHTEVycm9yKCJ1c2VGaWxsU29saWRQcm9ncmFtIik7CiAKKyAgICAgICAgYmluZEZyYW1l
YnVmZmVyKCk7CiAgICAgICAgIG1fY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+ZHJhd0Vs
ZW1lbnRzKEdyYXBoaWNzQ29udGV4dDNEOjpUUklBTkdMRVMsIGNvdW50LCBHcmFwaGljc0NvbnRl
eHQzRDo6VU5TSUdORURfU0hPUlQsIDApOwogICAgICAgICBjaGVja0dMRXJyb3IoImRyYXdBcnJh
eXMiKTsKIApAQCAtNzQxLDEzNiArNjEzLDYgQEAgdm9pZCBHTEVTMkNhbnZhczo6ZmlsbFBhdGhJ
bnRlcm5hbChjb25zdCBQYXRoJiBwYXRoLCBjb25zdCBDb2xvciYgY29sb3IpCiAgICAgfQogfQog
Ci1GbG9hdFJlY3QgR0xFUzJDYW52YXM6OmZsaXBSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkK
LXsKLSAgICBGbG9hdFJlY3QgZmxpcHBlZFJlY3QocmVjdCk7Ci0gICAgZmxpcHBlZFJlY3Quc2V0
WShtX3NpemUuaGVpZ2h0KCkgLSByZWN0LnkoKSk7Ci0gICAgZmxpcHBlZFJlY3Quc2V0SGVpZ2h0
KC1yZWN0LmhlaWdodCgpKTsKLSAgICByZXR1cm4gZmxpcHBlZFJlY3Q7Ci19Ci0KLXZvaWQgR0xF
UzJDYW52YXM6OmNsZWFyQm9yZGVycyhjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGludCB3aWR0aCkK
LXsKLSAgICBzY2lzc29yQ2xlYXIocmVjdC54KCksIHJlY3QueSgpIC0gd2lkdGgsIHJlY3Qud2lk
dGgoKSArIHdpZHRoLCB3aWR0aCk7Ci0gICAgc2Npc3NvckNsZWFyKHJlY3QubWF4WCgpLCByZWN0
LnkoKSwgd2lkdGgsIHJlY3QuaGVpZ2h0KCkgKyB3aWR0aCk7Ci0gICAgc2Npc3NvckNsZWFyKHJl
Y3QueCgpIC0gd2lkdGgsIHJlY3QubWF4WSgpLCByZWN0LndpZHRoKCkgKyB3aWR0aCwgd2lkdGgp
OwotICAgIHNjaXNzb3JDbGVhcihyZWN0LngoKSAtIHdpZHRoLCByZWN0LnkoKSAtIHdpZHRoLCB3
aWR0aCwgcmVjdC5oZWlnaHQoKSArIHdpZHRoKTsKLX0KLQotdm9pZCBHTEVTMkNhbnZhczo6YmVn
aW5TaGFkb3dEcmF3KCkKLXsKLSAgICBmbG9hdCBvZmZzZXRYID0gbV9zdGF0ZS0+bV9zaGFkb3dP
ZmZzZXQud2lkdGgoKTsKLSAgICBmbG9hdCBvZmZzZXRZID0gbV9zdGF0ZS0+bV9zaGFkb3dPZmZz
ZXQuaGVpZ2h0KCk7Ci0gICAgc2F2ZSgpOwotICAgIGlmIChtX3N0YXRlLT5tX3NoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zKSB7Ci0gICAgICAgIEFmZmluZVRyYW5zZm9ybSBuZXdDVE07Ci0gICAgICAg
IG5ld0NUTS50cmFuc2xhdGUob2Zmc2V0WCwgLW9mZnNldFkpOwotICAgICAgICBuZXdDVE0gKj0g
bV9zdGF0ZS0+bV9jdG07Ci0gICAgICAgIG1fc3RhdGUtPm1fY3RtID0gbmV3Q1RNOwotICAgIH0g
ZWxzZQotICAgICAgICBtX3N0YXRlLT5tX2N0bS50cmFuc2xhdGUob2Zmc2V0WCwgb2Zmc2V0WSk7
Ci0KLSAgICBpZiAobV9zdGF0ZS0+bV9zaGFkb3dCbHVyID4gMCkgewotICAgICAgICAvLyBEcmF3
IGhhcmQgc2hhZG93IHRvIG9mZnNjcmVlbiBidWZmZXIgMC4KLSAgICAgICAgRHJhd2luZ0J1ZmZl
ciogZHN0QnVmZmVyID0gbV9jb250ZXh0LT5nZXRPZmZzY3JlZW5CdWZmZXIoMCwgbV9zaXplKTsK
LSAgICAgICAgZHN0QnVmZmVyLT5iaW5kKCk7Ci0gICAgICAgIG1fY29udGV4dC0+YXBwbHlDb21w
b3NpdGVPcGVyYXRvcihDb21wb3NpdGVDb3B5KTsKLSAgICAgICAgYXBwbHlDbGlwcGluZyhmYWxz
ZSk7Ci0gICAgICAgIG1fY29udGV4dC0+Y2xlYXJDb2xvcihDb2xvcihSR0JBMzIoMCkpKTsKLSAg
ICAgICAgbV9jb250ZXh0LT5jbGVhcihHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQlVGRkVSX0JJ
VCk7Ci0gICAgfQotfQotCi12b2lkIEdMRVMyQ2FudmFzOjplbmRTaGFkb3dEcmF3KGNvbnN0IEZs
b2F0UmVjdCYgYm91bmRpbmdCb3gpCi17Ci0gICAgaWYgKG1fc3RhdGUtPm1fc2hhZG93Qmx1ciA+
IDApIHsKLSAgICAgICAgLy8gQnVmZmVyIDAgY29udGFpbnMgdGhlIHByaW1pdGl2ZSBkcmF3biB3
aXRoIGEgaGFyZCBzaGFkb3cuCi0gICAgICAgIERyYXdpbmdCdWZmZXIqIHNyY0J1ZmZlciA9IG1f
Y29udGV4dC0+Z2V0T2Zmc2NyZWVuQnVmZmVyKDAsIG1fc2l6ZSk7Ci0gICAgICAgIERyYXdpbmdC
dWZmZXIqIGRzdEJ1ZmZlciA9IG1fY29udGV4dC0+Z2V0T2Zmc2NyZWVuQnVmZmVyKDEsIG1fc2l6
ZSk7Ci0KLSAgICAgICAgZmxvYXQgc2lnbWEgPSBtX3N0YXRlLT5tX3NoYWRvd0JsdXIgKiAwLjMz
MzMzM2Y7Ci0gICAgICAgIEZsb2F0UmVjdCBzaGFkb3dCb3VuZGluZ0JveChtX3N0YXRlLT5tX2N0
bS5tYXBSZWN0KGJvdW5kaW5nQm94KSk7Ci0gICAgICAgIEZsb2F0UmVjdCByZWN0KEZsb2F0UG9p
bnQoMCwgMCksIG1fc2l6ZSk7Ci0gICAgICAgIEZsb2F0UmVjdCBzcmNSZWN0KHNoYWRvd0JvdW5k
aW5nQm94KTsKLQotICAgICAgICBpbnQgc2NhbGVGYWN0b3IgPSAxOwotICAgICAgICB3aGlsZSAo
c2lnbWEgPiBjTWF4U2lnbWEpIHsKLSAgICAgICAgICAgIHNyY1JlY3Quc2NhbGUoMC41Zik7Ci0g
ICAgICAgICAgICBzY2FsZUZhY3RvciAqPSAyOwotICAgICAgICAgICAgc2lnbWEgKj0gMC41ZjsK
LSAgICAgICAgfQotICAgICAgICBzcmNSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChzcmNSZWN0KTsK
LSAgICAgICAgc3JjUmVjdC5zY2FsZShzY2FsZUZhY3Rvcik7Ci0gICAgICAgIGZvciAoaW50IGkg
PSAxOyBpIDwgc2NhbGVGYWN0b3I7IGkgKj0gMikgewotICAgICAgICAgICAgZHN0QnVmZmVyLT5i
aW5kKCk7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCBzcmNCdWZmZXItPmNvbG9yQnVmZmVyKCkpOwotICAgICAgICAgICAg
bV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1MsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFN
UF9UT19FREdFKTsKLSAgICAgICAgICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9U
LCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSk7Ci0gICAgICAgICAgICBtX2NvbnRl
eHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIp
OwotICAgICAgICAgICAgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFw
aGljc0NvbnRleHQzRDo6TElORUFSKTsKLSAgICAgICAgICAgIEZsb2F0UmVjdCBkc3RSZWN0KHNy
Y1JlY3QpOwotICAgICAgICAgICAgZHN0UmVjdC5zY2FsZSgwLjVmKTsKLSAgICAgICAgICAgIC8v
IENsZWFyIG91dCAxIHBpeGVsIGJvcmRlciBmb3IgbGluZWFyIGZpbHRlcmluZy4KLSAgICAgICAg
ICAgIGNsZWFyQm9yZGVycyhkc3RSZWN0LCAxKTsKLSAgICAgICAgICAgIGRyYXdUZXh0dXJlZFF1
YWQoc3JjQnVmZmVyLT5zaXplKCksIGZsaXBSZWN0KHNyY1JlY3QpLCBkc3RSZWN0LCBBZmZpbmVU
cmFuc2Zvcm0oKSwgMS4wKTsKLSAgICAgICAgICAgIHNyY1JlY3QgPSBkc3RSZWN0OwotICAgICAg
ICAgICAgc3RkOjpzd2FwKHNyY0J1ZmZlciwgZHN0QnVmZmVyKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGludCBoYWxmV2lkdGggPSBzdGF0aWNfY2FzdDxpbnQ+KHNpZ21hICogMy4wZik7Ci0gICAg
ICAgIGludCBrZXJuZWxXaWR0aCA9IGhhbGZXaWR0aCAqIDIgKyAxOwotICAgICAgICBPd25BcnJh
eVB0cjxmbG9hdD4ga2VybmVsID0gYWRvcHRBcnJheVB0cihuZXcgZmxvYXRba2VybmVsV2lkdGhd
KTsKLSAgICAgICAgYnVpbGRLZXJuZWwoc2lnbWEsIGtlcm5lbC5nZXQoKSwga2VybmVsV2lkdGgp
OwotCi0gICAgICAgIGlmIChzY2FsZUZhY3RvciA+IDEpIHsKLSAgICAgICAgICAgIHNjaXNzb3JD
bGVhcihzcmNSZWN0Lm1heFgoKSwgc3JjUmVjdC55KCksIGtlcm5lbFdpZHRoLCBzcmNSZWN0Lmhl
aWdodCgpKTsKLSAgICAgICAgICAgIHNjaXNzb3JDbGVhcihzcmNSZWN0LngoKSAtIGtlcm5lbFdp
ZHRoLCBzcmNSZWN0LnkoKSwga2VybmVsV2lkdGgsIHNyY1JlY3QuaGVpZ2h0KCkpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgLy8gQmx1ciBpbiBYIG9mZnNjcmVlbi4KLSAgICAgICAgZHN0QnVmZmVy
LT5iaW5kKCk7Ci0gICAgICAgIHNyY1JlY3QuaW5mbGF0ZVgoaGFsZldpZHRoKTsKLSAgICAgICAg
c3JjUmVjdC5pbnRlcnNlY3QocmVjdCk7Ci0gICAgICAgIGZsb2F0IGltYWdlSW5jcmVtZW50WFsy
XSA9IHsxLjBmIC8gc3JjQnVmZmVyLT5zaXplKCkud2lkdGgoKSwgMC4wZn07Ci0gICAgICAgIGNv
bnZvbHZlUmVjdChzcmNCdWZmZXItPmNvbG9yQnVmZmVyKCksIHNyY0J1ZmZlci0+c2l6ZSgpLCBm
bGlwUmVjdChzcmNSZWN0KSwgc3JjUmVjdCwgaW1hZ2VJbmNyZW1lbnRYLCBrZXJuZWwuZ2V0KCks
IGtlcm5lbFdpZHRoKTsKLQotICAgICAgICBpZiAoc2NhbGVGYWN0b3IgPiAxKSB7Ci0gICAgICAg
ICAgICBzY2lzc29yQ2xlYXIoc3JjUmVjdC54KCksIHNyY1JlY3QubWF4WSgpLCBzcmNSZWN0Lndp
ZHRoKCksIGtlcm5lbFdpZHRoKTsKLSAgICAgICAgICAgIHNjaXNzb3JDbGVhcihzcmNSZWN0Lngo
KSwgc3JjUmVjdC55KCkgLSBrZXJuZWxXaWR0aCwgc3JjUmVjdC53aWR0aCgpLCBrZXJuZWxXaWR0
aCk7Ci0gICAgICAgIH0KLSAgICAgICAgc3JjUmVjdC5pbmZsYXRlWShoYWxmV2lkdGgpOwotICAg
ICAgICBzcmNSZWN0LmludGVyc2VjdChyZWN0KTsKLSAgICAgICAgc3RkOjpzd2FwKHNyY0J1ZmZl
ciwgZHN0QnVmZmVyKTsKLQotICAgICAgICBmbG9hdCBpbWFnZUluY3JlbWVudFlbMl0gPSB7MC4w
ZiwgMS4wZiAvIHNyY0J1ZmZlci0+c2l6ZSgpLmhlaWdodCgpfTsKLSAgICAgICAgaWYgKHNjYWxl
RmFjdG9yID4gMSkgewotICAgICAgICAgICAgLy8gQmx1ciBpbiBZIG9mZnNjcmVlbi4KLSAgICAg
ICAgICAgIGRzdEJ1ZmZlci0+YmluZCgpOwotICAgICAgICAgICAgY29udm9sdmVSZWN0KHNyY0J1
ZmZlci0+Y29sb3JCdWZmZXIoKSwgc3JjQnVmZmVyLT5zaXplKCksIGZsaXBSZWN0KHNyY1JlY3Qp
LCBzcmNSZWN0LCBpbWFnZUluY3JlbWVudFksIGtlcm5lbC5nZXQoKSwga2VybmVsV2lkdGgpOwot
ICAgICAgICAgICAgLy8gQ2xlYXIgb3V0IDIgcGl4ZWwgYm9yZGVyIGZvciBiaWN1YmljIGZpbHRl
cmluZy4KLSAgICAgICAgICAgIGNsZWFyQm9yZGVycyhzcmNSZWN0LCAyKTsKLSAgICAgICAgICAg
IHN0ZDo6c3dhcChzcmNCdWZmZXIsIGRzdEJ1ZmZlcik7Ci0KLSAgICAgICAgICAgIC8vIFVwc2Ft
cGxlIHNyY0J1ZmZlciAtPiBtYWluIGZyYW1lYnVmZmVyIHVzaW5nIGJpY3ViaWMgZmlsdGVyaW5n
LgotICAgICAgICAgICAgYmluZEZyYW1lYnVmZmVyKCk7Ci0gICAgICAgICAgICBtX2NvbnRleHQt
PmFwcGx5Q29tcG9zaXRlT3BlcmF0b3IobV9zdGF0ZS0+bV9jb21wb3NpdGVPcCk7Ci0gICAgICAg
ICAgICBhcHBseUNsaXBwaW5nKG1fc3RhdGUtPm1fY2xpcHBpbmdFbmFibGVkKTsKLSAgICAgICAg
ICAgIG1fY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IHNyY0J1ZmZlci0+Y29sb3JCdWZmZXIoKSk7Ci0gICAgICAgICAgICBGbG9hdFJlY3QgZHN0UmVj
dCA9IHNyY1JlY3Q7Ci0gICAgICAgICAgICBkc3RSZWN0LnNjYWxlKHNjYWxlRmFjdG9yKTsKLSAg
ICAgICAgICAgIGRyYXdUZXh0dXJlZFF1YWRNaXRjaGVsbChzcmNCdWZmZXItPnNpemUoKSwgZmxp
cFJlY3Qoc3JjUmVjdCksIGRzdFJlY3QsIEFmZmluZVRyYW5zZm9ybSgpLCAxLjApOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgLy8gQmx1ciBpbiBZIGRpcmVjdGx5IHRvIGZyYW1lYnVm
ZmVyLgotICAgICAgICAgICAgYmluZEZyYW1lYnVmZmVyKCk7Ci0gICAgICAgICAgICBtX2NvbnRl
eHQtPmFwcGx5Q29tcG9zaXRlT3BlcmF0b3IobV9zdGF0ZS0+bV9jb21wb3NpdGVPcCk7Ci0gICAg
ICAgICAgICBhcHBseUNsaXBwaW5nKG1fc3RhdGUtPm1fY2xpcHBpbmdFbmFibGVkKTsKLQotICAg
ICAgICAgICAgY29udm9sdmVSZWN0KHNyY0J1ZmZlci0+Y29sb3JCdWZmZXIoKSwgc3JjQnVmZmVy
LT5zaXplKCksIGZsaXBSZWN0KHNyY1JlY3QpLCBzcmNSZWN0LCBpbWFnZUluY3JlbWVudFksIGtl
cm5lbC5nZXQoKSwga2VybmVsV2lkdGgpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJlc3RvcmUo
KTsKLX0KLQogdm9pZCBHTEVTMkNhbnZhczo6YmVnaW5TdGVuY2lsRHJhdygpCiB7CiAgICAgLy8g
VHVybiBvbiBzdGVuY2lsIHRlc3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9HTEVTMkNhbnZhcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vR0xFUzJDYW52YXMuaAppbmRleCAwNzgyZGYxMGIyNzMzOTAw
Y2E0NjE0YTZkNGM4YzFkMjBjOWM5MmRkLi44ODg3YTE2YzdlMTcxNDU5MDRkYjczNGU5NGMwZWVj
OTJkNGRlYjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9HTEVTMkNhbnZhcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0dMRVMyQ2FudmFzLmgKQEAgLTY0LDEwICs2NCw2IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGNsZWFyUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKICAgICB2b2lkIHNldEZpbGxDb2xv
cihjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOwogICAgIHZvaWQgc2V0QWxwaGEoZmxvYXQgYWxw
aGEpOwotICAgIHZvaWQgc2V0U2hhZG93Q29sb3IoY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsK
LSAgICB2b2lkIHNldFNoYWRvd09mZnNldChjb25zdCBGbG9hdFNpemUmKTsKLSAgICB2b2lkIHNl
dFNoYWRvd0JsdXIoZmxvYXQpOwotICAgIHZvaWQgc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMo
Ym9vbCk7CiAgICAgdm9pZCBzZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3Ip
OwogICAgIHZvaWQgdHJhbnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkpOwogICAgIHZvaWQgcm90YXRl
KGZsb2F0IGFuZ2xlSW5SYWRpYW5zKTsKQEAgLTEwMCwyMCArOTYsMTEgQEAgcHVibGljOgogICAg
IERyYXdpbmdCdWZmZXIqIGRyYXdpbmdCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2RyYXdpbmdC
dWZmZXI7IH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIHNjaXNzb3JDbGVhcihmbG9hdCB4LCBmbG9h
dCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KTsKICAgICB2b2lkIGRyYXdUZXh0dXJlZFJl
Y3RUaWxlKFRleHR1cmUqIHRleHR1cmUsIGludCB0aWxlLCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgZmxv
YXQgYWxwaGEpOwotICAgIHZvaWQgZHJhd1RleHR1cmVkUXVhZChjb25zdCBJbnRTaXplJiB0ZXh0
dXJlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJl
Y3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGZsb2F0IGFscGhhKTsKLSAgICB2b2lkIGRyYXdU
ZXh0dXJlZFF1YWRNaXRjaGVsbChjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYsIGZsb2F0IGFscGhhKTsKLSAgICB2b2lkIGNvbnZvbHZlUmVjdCh1bnNpZ25lZCB0
ZXh0dXJlLCBjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGZsb2F0IGltYWdlSW5jcmVtZW50WzJdLCBj
b25zdCBmbG9hdCoga2VybmVsLCBpbnQga2VybmVsV2lkdGgpOwotCisgICAgdm9pZCBkcmF3UXVh
ZChjb25zdCBJbnRTaXplJiB0ZXh0dXJlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGZsb2F0IGFs
cGhhKTsKICAgICB2b2lkIGFwcGx5Q29tcG9zaXRlT3BlcmF0b3IoQ29tcG9zaXRlT3BlcmF0b3Ip
OwogICAgIHZvaWQgY3JlYXRlVmVydGV4QnVmZmVyRnJvbVBhdGgoY29uc3QgUGF0aCYsIGludCog
Y291bnQsIHVuc2lnbmVkKiB2ZXJ0ZXhCdWZmZXIsIHVuc2lnbmVkKiBpbmRleEJ1ZmZlcik7Ci0g
ICAgdm9pZCBmaWxsUGF0aEludGVybmFsKGNvbnN0IFBhdGgmLCBjb25zdCBDb2xvciYpOwotICAg
IHZvaWQgZmlsbFJlY3RJbnRlcm5hbChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYpOwot
ICAgIEZsb2F0UmVjdCBmbGlwUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKLSAgICB2b2lkIGNsZWFy
Qm9yZGVycyhjb25zdCBGbG9hdFJlY3QmLCBpbnQgd2lkdGgpOwotICAgIHZvaWQgYmVnaW5TaGFk
b3dEcmF3KCk7Ci0gICAgdm9pZCBlbmRTaGFkb3dEcmF3KGNvbnN0IEZsb2F0UmVjdCYgYm91bmRp
bmdCb3gpOworICAgIHZvaWQgZmlsbFBhdGgoY29uc3QgUGF0aCYsIGNvbnN0IENvbG9yJik7CiAg
ICAgdm9pZCBiZWdpblN0ZW5jaWxEcmF3KCk7CiAgICAgdm9pZCBhcHBseUNsaXBwaW5nKGJvb2wg
ZW5hYmxlKTsKICAgICB2b2lkIGNoZWNrR0xFcnJvcihjb25zdCBjaGFyKiBoZWFkZXIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0JpY3ViaWNTaGFk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0JpY3ViaWNTaGFk
ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MGM5ODQzNDllNTg1ZTQyODRi
YTY1MjNmZmU2Mjc3NDNlNjNiMmQ1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9CaWN1Ymlj
U2hhZGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzNyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlv
bi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotCi0jaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKLQotI2luY2x1ZGUgIkJp
Y3ViaWNTaGFkZXIuaCIKLQotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotQmljdWJpY1NoYWRlcjo6QmljdWJpY1NoYWRlcihHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgcHJvZ3JhbSkKLSAgICA6IFNoYWRlcihjb250ZXh0
LCBwcm9ncmFtKQotICAgICwgbV9tYXRyaXhMb2NhdGlvbihjb250ZXh0LT5nZXRVbmlmb3JtTG9j
YXRpb24ocHJvZ3JhbSwgIm1hdHJpeCIpKQotICAgICwgbV90ZXhNYXRyaXhMb2NhdGlvbihjb250
ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInRleE1hdHJpeCIpKQotICAgICwgbV9j
b2VmZmljaWVudHNMb2NhdGlvbihjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwg
ImNvZWZmaWNpZW50cyIpKQotICAgICwgbV9pbWFnZUluY3JlbWVudExvY2F0aW9uKGNvbnRleHQt
PmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAiaW1hZ2VJbmNyZW1lbnQiKSkKLSAgICAsIG1f
aW1hZ2VMb2NhdGlvbihjb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgImltYWdl
IikpCi0gICAgLCBtX2FscGhhTG9jYXRpb24oY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHBy
b2dyYW0sICJhbHBoYSIpKQotICAgICwgbV9wb3NpdGlvbkxvY2F0aW9uKGNvbnRleHQtPmdldEF0
dHJpYkxvY2F0aW9uKHByb2dyYW0sICJwb3NpdGlvbiIpKQotewotfQotCi1QYXNzT3duUHRyPEJp
Y3ViaWNTaGFkZXI+IEJpY3ViaWNTaGFkZXI6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCkKLXsKLSAgICBzdGF0aWMgY29uc3QgY2hhciogdmVydGV4U2hhZGVyU291cmNlID0KLSAg
ICAgICAgInVuaWZvcm0gbWF0MyBtYXRyaXg7XG4iCi0gICAgICAgICJ1bmlmb3JtIG1hdDMgdGV4
TWF0cml4O1xuIgotICAgICAgICAiYXR0cmlidXRlIHZlYzMgcG9zaXRpb247XG4iCi0gICAgICAg
ICJ2YXJ5aW5nIHZlYzIgdGV4Q29vcmQ7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0g
ICAgICAgICIgICAgdGV4Q29vcmQgPSAodGV4TWF0cml4ICogcG9zaXRpb24pLnh5O1xuIgotICAg
ICAgICAiICAgIGdsX1Bvc2l0aW9uID0gdmVjNChtYXRyaXggKiBwb3NpdGlvbiwgMS4wKTtcbiIK
LSAgICAgICAgIn1cbiI7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGZyYWdtZW50U2hhZGVyU291
cmNlID0KLSAgICAgICAgIiNpZmRlZiBHTF9FU1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7XG4iCi0gICAgICAgICIjZW5kaWZcbiIKLSAgICAgICAgInVuaWZvcm0gc2FtcGxl
cjJEIGltYWdlO1xuIgotICAgICAgICAidW5pZm9ybSB2ZWMyIGltYWdlSW5jcmVtZW50O1xuIgot
ICAgICAgICAidW5pZm9ybSBtYXQ0IGNvZWZmaWNpZW50cztcbiIKLSAgICAgICAgInVuaWZvcm0g
ZmxvYXQgYWxwaGE7XG4iCi0gICAgICAgICJ2YXJ5aW5nIHZlYzIgdGV4Q29vcmQ7XG4iCi0gICAg
ICAgICJ2ZWM0IGN1YmljQmxlbmQoZmxvYXQgdCwgdmVjNCBjMCwgdmVjNCBjMSwgdmVjNCBjMiwg
dmVjNCBjMykge1xuIgotICAgICAgICAiICAgIHZlYzQgdHMgPSB2ZWM0KDEuMCwgdCwgdCAqIHQs
IHQgKiB0ICogdCk7XG4iCi0gICAgICAgICIgICAgdmVjNCByZXN1bHQgPSBjb2VmZmljaWVudHMg
KiB0cztcbiIKLSAgICAgICAgIiAgICByZXR1cm4gcmVzdWx0LncgKiBjMCArIHJlc3VsdC56ICog
YzEgKyByZXN1bHQueSAqIGMyICsgcmVzdWx0LnggKiBjMztcbiIKLSAgICAgICAgIn1cbiIKLSAg
ICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgICB2ZWMyIGltYWdlQ29vcmQgPSB0
ZXhDb29yZDtcbiIKLSAgICAgICAgIiAgICB2ZWMyIGYgPSBmcmFjdChpbWFnZUNvb3JkIC8gaW1h
Z2VJbmNyZW1lbnQpIC0gdmVjMigwLjUsIDAuNSk7XG4iCi0gICAgICAgICIgICAgdmVjNCB0MDAg
PSB0ZXh0dXJlMkQoaW1hZ2UsIGltYWdlQ29vcmQgKyBpbWFnZUluY3JlbWVudCAqIHZlYzIoLTEs
IC0xKSk7XG4iCi0gICAgICAgICIgICAgdmVjNCB0MTAgPSB0ZXh0dXJlMkQoaW1hZ2UsIGltYWdl
Q29vcmQgKyBpbWFnZUluY3JlbWVudCAqIHZlYzIoIDAsIC0xKSk7XG4iCi0gICAgICAgICIgICAg
dmVjNCB0MjAgPSB0ZXh0dXJlMkQoaW1hZ2UsIGltYWdlQ29vcmQgKyBpbWFnZUluY3JlbWVudCAq
IHZlYzIoIDEsIC0xKSk7XG4iCi0gICAgICAgICIgICAgdmVjNCB0MzAgPSB0ZXh0dXJlMkQoaW1h
Z2UsIGltYWdlQ29vcmQgKyBpbWFnZUluY3JlbWVudCAqIHZlYzIoIDIsIC0xKSk7XG4iCi0gICAg
ICAgICIgICAgdmVjNCB0MCA9IGN1YmljQmxlbmQoZi54LCB0MDAsIHQxMCwgdDIwLCB0MzApO1xu
IgotICAgICAgICAiICAgIHZlYzQgdDAxID0gdGV4dHVyZTJEKGltYWdlLCBpbWFnZUNvb3JkICsg
aW1hZ2VJbmNyZW1lbnQgKiB2ZWMyKC0xLCAwKSk7XG4iCi0gICAgICAgICIgICAgdmVjNCB0MTEg
PSB0ZXh0dXJlMkQoaW1hZ2UsIGltYWdlQ29vcmQgKyBpbWFnZUluY3JlbWVudCAqIHZlYzIoIDAs
IDApKTtcbiIKLSAgICAgICAgIiAgICB2ZWM0IHQyMSA9IHRleHR1cmUyRChpbWFnZSwgaW1hZ2VD
b29yZCArIGltYWdlSW5jcmVtZW50ICogdmVjMiggMSwgMCkpO1xuIgotICAgICAgICAiICAgIHZl
YzQgdDMxID0gdGV4dHVyZTJEKGltYWdlLCBpbWFnZUNvb3JkICsgaW1hZ2VJbmNyZW1lbnQgKiB2
ZWMyKCAyLCAwKSk7XG4iCi0gICAgICAgICIgICAgdmVjNCB0MSA9IGN1YmljQmxlbmQoZi54LCB0
MDEsIHQxMSwgdDIxLCB0MzEpO1xuIgotICAgICAgICAiICAgIHZlYzQgdDAyID0gdGV4dHVyZTJE
KGltYWdlLCBpbWFnZUNvb3JkICsgaW1hZ2VJbmNyZW1lbnQgKiB2ZWMyKC0xLCAxKSk7XG4iCi0g
ICAgICAgICIgICAgdmVjNCB0MTIgPSB0ZXh0dXJlMkQoaW1hZ2UsIGltYWdlQ29vcmQgKyBpbWFn
ZUluY3JlbWVudCAqIHZlYzIoIDAsIDEpKTtcbiIKLSAgICAgICAgIiAgICB2ZWM0IHQyMiA9IHRl
eHR1cmUyRChpbWFnZSwgaW1hZ2VDb29yZCArIGltYWdlSW5jcmVtZW50ICogdmVjMiggMSwgMSkp
O1xuIgotICAgICAgICAiICAgIHZlYzQgdDMyID0gdGV4dHVyZTJEKGltYWdlLCBpbWFnZUNvb3Jk
ICsgaW1hZ2VJbmNyZW1lbnQgKiB2ZWMyKCAyLCAxKSk7XG4iCi0gICAgICAgICIgICAgdmVjNCB0
MiA9IGN1YmljQmxlbmQoZi54LCB0MDIsIHQxMiwgdDIyLCB0MzIpO1xuIgotICAgICAgICAiICAg
IHZlYzQgdDAzID0gdGV4dHVyZTJEKGltYWdlLCBpbWFnZUNvb3JkICsgaW1hZ2VJbmNyZW1lbnQg
KiB2ZWMyKC0xLCAyKSk7XG4iCi0gICAgICAgICIgICAgdmVjNCB0MTMgPSB0ZXh0dXJlMkQoaW1h
Z2UsIGltYWdlQ29vcmQgKyBpbWFnZUluY3JlbWVudCAqIHZlYzIoIDAsIDIpKTtcbiIKLSAgICAg
ICAgIiAgICB2ZWM0IHQyMyA9IHRleHR1cmUyRChpbWFnZSwgaW1hZ2VDb29yZCArIGltYWdlSW5j
cmVtZW50ICogdmVjMiggMSwgMikpO1xuIgotICAgICAgICAiICAgIHZlYzQgdDMzID0gdGV4dHVy
ZTJEKGltYWdlLCBpbWFnZUNvb3JkICsgaW1hZ2VJbmNyZW1lbnQgKiB2ZWMyKCAyLCAyKSk7XG4i
Ci0gICAgICAgICIgICAgdmVjNCB0MyA9IGN1YmljQmxlbmQoZi54LCB0MDMsIHQxMywgdDIzLCB0
MzMpO1xuIgotICAgICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IGN1YmljQmxlbmQoZi55LCB0MCwg
dDEsIHQyLCB0Myk7XG4iCi0gICAgICAgICJ9XG4iOwotCi0gICAgdW5zaWduZWQgcHJvZ3JhbSA9
IGxvYWRQcm9ncmFtKGNvbnRleHQsIHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJT
b3VyY2UpOwotICAgIGlmICghcHJvZ3JhbSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1
cm4gbmV3IEJpY3ViaWNTaGFkZXIoY29udGV4dCwgcHJvZ3JhbSk7Ci19Ci0KLXZvaWQgQmljdWJp
Y1NoYWRlcjo6dXNlKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHRleFRyYW5zZm9ybSwgY29uc3QgZmxvYXQgY29lZmZpY2llbnRzWzE2XSwg
Y29uc3QgZmxvYXQgaW1hZ2VJbmNyZW1lbnRbMl0sIGZsb2F0IGFscGhhKQotewotICAgIG1fY29u
dGV4dC0+dXNlUHJvZ3JhbShtX3Byb2dyYW0pOwotICAgIGZsb2F0IG1hdHJpeFs5XTsKLSAgICBh
ZmZpbmVUbzN4Myh0cmFuc2Zvcm0sIG1hdHJpeCk7Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtTWF0
cml4M2Z2KG1fbWF0cml4TG9jYXRpb24sIGZhbHNlIC8qdHJhbnNwb3NlKi8sIG1hdHJpeCwgMSAv
KmNvdW50Ki8pOwotCi0gICAgZmxvYXQgdGV4TWF0cml4WzldOwotICAgIGFmZmluZVRvM3gzKHRl
eFRyYW5zZm9ybSwgdGV4TWF0cml4KTsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgzZnYo
bV90ZXhNYXRyaXhMb2NhdGlvbiwgZmFsc2UgLyp0cmFuc3Bvc2UqLywgdGV4TWF0cml4LCAxIC8q
Y291bnQqLyk7Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NGZ2KG1fY29lZmZpY2llbnRz
TG9jYXRpb24sIGZhbHNlIC8qdHJhbnNwb3NlKi8sIGNvbnN0X2Nhc3Q8ZmxvYXQgKj4oY29lZmZp
Y2llbnRzKSwgMSAvKmNvdW50Ki8pOwotCi0gICAgbV9jb250ZXh0LT51bmlmb3JtMmYobV9pbWFn
ZUluY3JlbWVudExvY2F0aW9uLCBpbWFnZUluY3JlbWVudFswXSwgaW1hZ2VJbmNyZW1lbnRbMV0p
OwotCi0gICAgLy8gRm9yIG5vdywgd2UgYWx3YXlzIHVzZSB0ZXh0dXJlIHVuaXQgMC4gSWYgdGhh
dCBldmVyIGNoYW5nZXMsIHdlIHNob3VsZAotICAgIC8vIGV4cG9zZSB0aGlzIHBhcmFtZXRlciB0
byB0aGUgY2FsbGVyLgotICAgIG1fY29udGV4dC0+dW5pZm9ybTFpKG1faW1hZ2VMb2NhdGlvbiwg
MCk7Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtMWYobV9hbHBoYUxvY2F0aW9uLCBhbHBoYSk7Ci0K
LSAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYlBvaW50ZXIobV9wb3NpdGlvbkxvY2F0aW9uLCAz
LCBHcmFwaGljc0NvbnRleHQzRDo6RkxPQVQsIGZhbHNlLCAwLCAwKTsKLQotICAgIG1fY29udGV4
dC0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkobV9wb3NpdGlvbkxvY2F0aW9uKTsKLX0KLQotfQot
Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9CaWN1YmljU2hhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUv
QmljdWJpY1NoYWRlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzUyMmY0NDU3
ZDNmYWM3ZmNjMTBlMWE0ZDhiOGJhMzM3MmZkNjUxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9CaWN1YmljU2hhZGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3Ry
aWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBC
aWN1YmljU2hhZGVyX2gKLSNkZWZpbmUgQmljdWJpY1NoYWRlcl9oCi0KLSNpbmNsdWRlICJTaGFk
ZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBCaWN1YmljU2hhZGVyIDogcHVi
bGljIFNoYWRlciB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8QmljdWJpY1NoYWRl
cj4gY3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKik7Ci0KLSAgICB2b2lkIHVzZShjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRleFRyYW5zZm9ybSwgY29uc3Qg
ZmxvYXQgY29lZmZpY2llbnRzWzE2XSwgY29uc3QgZmxvYXQgaW1hZ2VJbmNyZW1lbnRbMl0sIGZs
b2F0IGFscGhhKTsKLQotcHJpdmF0ZToKLSAgICBCaWN1YmljU2hhZGVyKEdyYXBoaWNzQ29udGV4
dDNEKiwgdW5zaWduZWQgcHJvZ3JhbSk7Ci0KLSAgICBpbnQgbV9tYXRyaXhMb2NhdGlvbjsKLSAg
ICBpbnQgbV90ZXhNYXRyaXhMb2NhdGlvbjsKLSAgICBpbnQgbV9jb2VmZmljaWVudHNMb2NhdGlv
bjsKLSAgICBpbnQgbV9pbWFnZUluY3JlbWVudExvY2F0aW9uOwotICAgIGludCBtX2ltYWdlTG9j
YXRpb247Ci0gICAgaW50IG1fYWxwaGFMb2NhdGlvbjsKLSAgICBpbnQgbV9wb3NpdGlvbkxvY2F0
aW9uOwotfTsKLQotfQotCi0jZW5kaWYgLy8gQmljdWJpY1NoYWRlcl9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvQ29udm9sdXRpb25TaGFkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0NvbnZvbHV0aW9uU2hhZGVy
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjBiNmJkOTM0NGU3NjlmNDRhYzRm
Y2JhNTY3MWRiMTRhNTE1NzZlMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvQ29udm9sdXRp
b25TaGFkZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTI1ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0
aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0KLSNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQotCi0jaW5jbHVkZSAi
Q29udm9sdXRpb25TaGFkZXIuaCIKLQotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCi0j
aW5jbHVkZSAiU3RyaW5nRXh0cmFzLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotQ29udm9s
dXRpb25TaGFkZXI6OkNvbnZvbHV0aW9uU2hhZGVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCB1bnNpZ25lZCBwcm9ncmFtLCBpbnQga2VybmVsV2lkdGgpCi0gICAgOiBTaGFkZXIoY29udGV4
dCwgcHJvZ3JhbSkKLSAgICAsIG1fa2VybmVsV2lkdGgoa2VybmVsV2lkdGgpCi0gICAgLCBtX21h
dHJpeExvY2F0aW9uKGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAibWF0cml4
IikpCi0gICAgLCBtX3RleE1hdHJpeExvY2F0aW9uKGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlv
bihwcm9ncmFtLCAidGV4TWF0cml4IikpCi0gICAgLCBtX2tlcm5lbExvY2F0aW9uKGNvbnRleHQt
PmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAia2VybmVsIikpCi0gICAgLCBtX2ltYWdlTG9j
YXRpb24oY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJpbWFnZSIpKQotICAg
ICwgbV9pbWFnZUluY3JlbWVudExvY2F0aW9uKGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihw
cm9ncmFtLCAiaW1hZ2VJbmNyZW1lbnQiKSkKLSAgICAsIG1fcG9zaXRpb25Mb2NhdGlvbihjb250
ZXh0LT5nZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCAicG9zaXRpb24iKSkKLXsKLX0KLQotUGFz
c093blB0cjxDb252b2x1dGlvblNoYWRlcj4gQ29udm9sdXRpb25TaGFkZXI6OmNyZWF0ZShHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgaW50IGtlcm5lbFdpZHRoKQotewotICAgIHN0YXRpYyBj
b25zdCBjaGFyKiB2ZXJ0ZXhTaGFkZXJSYXcgPQotICAgICAgICAiI2RlZmluZSBLRVJORUxfV0lE
VEggJWRcbiIKLSAgICAgICAgInVuaWZvcm0gbWF0MyBtYXRyaXg7XG4iCi0gICAgICAgICJ1bmlm
b3JtIG1hdDMgdGV4TWF0cml4O1xuIgotICAgICAgICAidW5pZm9ybSB2ZWMyIGltYWdlSW5jcmVt
ZW50O1xuIgotICAgICAgICAiYXR0cmlidXRlIHZlYzMgcG9zaXRpb247XG4iCi0gICAgICAgICJ2
YXJ5aW5nIHZlYzIgaW1hZ2VDb29yZDtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAg
ICAgICAgIiAgICAvLyBPZmZzZXQgaW1hZ2UgY29vcmRzIGJ5IGhhbGYgb2Yga2VybmVsIHdpZHRo
LCBpbiBpbWFnZSB0ZXhlbHNcbiIKLSAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9IHZlYzQobWF0
cml4ICogcG9zaXRpb24sIDEuMCk7XG4iCi0gICAgICAgICIgICAgZmxvYXQgc2NhbGUgPSAoZmxv
YXQoS0VSTkVMX1dJRFRIKSAtIDEuMCkgLyAyLjA7XG4iCi0gICAgICAgICIgICAgaW1hZ2VDb29y
ZCA9ICh0ZXhNYXRyaXggKiBwb3NpdGlvbikueHkgLSB2ZWMyKHNjYWxlLCBzY2FsZSkgKiBpbWFn
ZUluY3JlbWVudDtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgY2hhciB2ZXJ0ZXhTaGFkZXJTb3Vy
Y2VbMTAyNF07Ci0gICAgc25wcmludGYodmVydGV4U2hhZGVyU291cmNlLCBzaXplb2YodmVydGV4
U2hhZGVyU291cmNlKSwgdmVydGV4U2hhZGVyUmF3LCBrZXJuZWxXaWR0aCk7Ci0gICAgc3RhdGlj
IGNvbnN0IGNoYXIqIGZyYWdtZW50U2hhZGVyUmF3ID0KLSAgICAgICAgIiNpZmRlZiBHTF9FU1xu
IgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICIjZW5kaWZc
biIKLSAgICAgICAgIiNkZWZpbmUgS0VSTkVMX1dJRFRIICVkXG4iCi0gICAgICAgICJ1bmlmb3Jt
IHNhbXBsZXIyRCBpbWFnZTtcbiIKLSAgICAgICAgInVuaWZvcm0gZmxvYXQga2VybmVsW0tFUk5F
TF9XSURUSF07XG4iCi0gICAgICAgICJ1bmlmb3JtIHZlYzIgaW1hZ2VJbmNyZW1lbnQ7XG4iCi0g
ICAgICAgICJ2YXJ5aW5nIHZlYzIgaW1hZ2VDb29yZDtcbiIKLSAgICAgICAgInZvaWQgbWFpbigp
IHtcbiIKLSAgICAgICAgIiAgICB2ZWMyIGNvb3JkID0gaW1hZ2VDb29yZDtcbiIKLSAgICAgICAg
IiAgICB2ZWM0IHN1bSA9IHZlYzQoMCwgMCwgMCwgMCk7XG4iCi0gICAgICAgICIgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBLRVJORUxfV0lEVEg7IGkrKykge1xuIgotICAgICAgICAiICAgICAgc3Vt
ICs9IHRleHR1cmUyRChpbWFnZSwgY29vcmQpICoga2VybmVsW2ldO1xuIgotICAgICAgICAiICAg
ICAgY29vcmQgKz0gaW1hZ2VJbmNyZW1lbnQ7XG4iCi0gICAgICAgICIgICAgfVxuIgotICAgICAg
ICAiICAgIGdsX0ZyYWdDb2xvciA9IHN1bTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgY2hhciBm
cmFnbWVudFNoYWRlclNvdXJjZVsxMDI0XTsKLSAgICBzbnByaW50ZihmcmFnbWVudFNoYWRlclNv
dXJjZSwgc2l6ZW9mKGZyYWdtZW50U2hhZGVyU291cmNlKSwgZnJhZ21lbnRTaGFkZXJSYXcsIGtl
cm5lbFdpZHRoKTsKLQotICAgIHVuc2lnbmVkIHByb2dyYW0gPSBsb2FkUHJvZ3JhbShjb250ZXh0
LCB2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKLSAgICBpZiAoIXBy
b2dyYW0pCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBuZXcgQ29udm9sdXRpb25TaGFk
ZXIoY29udGV4dCwgcHJvZ3JhbSwga2VybmVsV2lkdGgpOwotfQotCi12b2lkIENvbnZvbHV0aW9u
U2hhZGVyOjp1c2UoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgdGV4VHJhbnNmb3JtLCBjb25zdCBmbG9hdCoga2VybmVsLCBpbnQga2VybmVs
V2lkdGgsIGZsb2F0IGltYWdlSW5jcmVtZW50WzJdKQotewotICAgIG1fY29udGV4dC0+dXNlUHJv
Z3JhbShtX3Byb2dyYW0pOwotICAgIGZsb2F0IG1hdHJpeFs5XTsKLSAgICBhZmZpbmVUbzN4Myh0
cmFuc2Zvcm0sIG1hdHJpeCk7Ci0gICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4M2Z2KG1fbWF0
cml4TG9jYXRpb24sIGZhbHNlIC8qdHJhbnNwb3NlKi8sIG1hdHJpeCwgMSAvKmNvdW50Ki8pOwot
Ci0gICAgZmxvYXQgdGV4TWF0cml4WzldOwotICAgIGFmZmluZVRvM3gzKHRleFRyYW5zZm9ybSwg
dGV4TWF0cml4KTsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgzZnYobV90ZXhNYXRyaXhM
b2NhdGlvbiwgZmFsc2UgLyp0cmFuc3Bvc2UqLywgdGV4TWF0cml4LCAxIC8qY291bnQqLyk7Ci0K
LSAgICBtX2NvbnRleHQtPnVuaWZvcm0yZihtX2ltYWdlSW5jcmVtZW50TG9jYXRpb24sIGltYWdl
SW5jcmVtZW50WzBdLCBpbWFnZUluY3JlbWVudFsxXSk7Ci0KLSAgICAvLyBGb3Igbm93LCB3ZSBh
bHdheXMgdXNlIHRleHR1cmUgdW5pdCAwLiBJZiB0aGF0IGV2ZXIgY2hhbmdlcywgd2Ugc2hvdWxk
Ci0gICAgLy8gZXhwb3NlIHRoaXMgcGFyYW1ldGVyIHRvIHRoZSBjYWxsZXIuCi0gICAgbV9jb250
ZXh0LT51bmlmb3JtMWkobV9pbWFnZUxvY2F0aW9uLCAwKTsKLSAgICBpZiAoa2VybmVsV2lkdGgg
PiBtX2tlcm5lbFdpZHRoKQotICAgICAgICBrZXJuZWxXaWR0aCA9IG1fa2VybmVsV2lkdGg7Ci0g
ICAgbV9jb250ZXh0LT51bmlmb3JtMWZ2KG1fa2VybmVsTG9jYXRpb24sIGNvbnN0X2Nhc3Q8Zmxv
YXQqPihrZXJuZWwpLCBrZXJuZWxXaWR0aCk7Ci0KLSAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJp
YlBvaW50ZXIobV9wb3NpdGlvbkxvY2F0aW9uLCAzLCBHcmFwaGljc0NvbnRleHQzRDo6RkxPQVQs
IGZhbHNlLCAwLCAwKTsKLQotICAgIG1fY29udGV4dC0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXko
bV9wb3NpdGlvbkxvY2F0aW9uKTsKLX0KLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9Db252b2x1dGlvblNoYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0NvbnZvbHV0aW9uU2hhZGVyLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzM2UwZjVlMmEyOTEwYzc3NmMxZGE4MmJhNDgx
NDg4ZGFiNGU4ZDYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0NvbnZvbHV0aW9uU2hhZGVy
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBDb252b2x1dGlvblNoYWRl
cl9oCi0jZGVmaW5lIENvbnZvbHV0aW9uU2hhZGVyX2gKLQotI2luY2x1ZGUgIlNoYWRlci5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIENvbnZvbHV0aW9uU2hhZGVyIDogcHVibGlj
IFNoYWRlciB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q29udm9sdXRpb25TaGFk
ZXI+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCosIGludCBrZXJuZWxXaWR0aCk7Ci0KLSAgICB2
b2lkIHVzZShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRl
eFRyYW5zZm9ybSwgY29uc3QgZmxvYXQqIGtlcm5lbCwgaW50IGtlcm5lbFdpZHRoLCBmbG9hdCBp
bWFnZUluY3JlbWVudFsyXSk7Ci0KLXByaXZhdGU6Ci0gICAgQ29udm9sdXRpb25TaGFkZXIoR3Jh
cGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBwcm9ncmFtLCBpbnQga2VybmVsV2lkdGgpOwotCi0g
ICAgaW50IG1fa2VybmVsV2lkdGg7Ci0gICAgaW50IG1fbWF0cml4TG9jYXRpb247Ci0gICAgaW50
IG1fdGV4TWF0cml4TG9jYXRpb247Ci0gICAgaW50IG1fa2VybmVsTG9jYXRpb247Ci0gICAgaW50
IG1faW1hZ2VMb2NhdGlvbjsKLSAgICBpbnQgbV9pbWFnZUluY3JlbWVudExvY2F0aW9uOwotICAg
IGludCBtX3Bvc2l0aW9uTG9jYXRpb247Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBDb252b2x1dGlv
blNoYWRlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvRHJhd2luZ0J1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0RyYXdpbmdCdWZmZXIuaAppbmRleCAyNmIwNGM5MmJmNmY5MzQ1ODJjOTJlMjgyZjMyZmJlOGY3
MjhmZDk3Li40OWFlMTE0MmJjNDAyODlkZTJmMjg1ODAwNzA5NzM1NmI0ZDg4Y2ExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVy
LmgKQEAgLTU5LDcgKzU5LDYgQEAgcHVibGljOgogICAgIHZvaWQgcmVzZXQoY29uc3QgSW50U2l6
ZSYpOwogICAgIHZvaWQgYmluZCgpOwogICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2l6ZTsgfQotICAgIFBsYXRmb3JtM0RPYmplY3QgY29sb3JCdWZmZXIoKSBjb25zdCB7IHJl
dHVybiBtX2NvbG9yQnVmZmVyOyB9CiAKICAgICAvLyBDbGVhciBhbGwgcmVzb3VyY2VzIGZyb20g
dGhpcyBvYmplY3QsIGFzIHdlbGwgYXMgY29udGV4dC4gQ2FsbGVkIHdoZW4gY29udGV4dCBpcyBk
ZXN0cm95ZWQKICAgICAvLyB0byBwcmV2ZW50IGludmFsaWQgYWNjZXNzZXMgdG8gdGhlIHJlc291
cmNlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9T
aGFyZWRHcmFwaGljc0NvbnRleHQzRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ncHUvU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuY3BwCmluZGV4IGMyMjNlMjljMzZhMDlh
OWM3YWEyZjNiNTkxZGNlOWMwNWVkYzQwMGIuLmVhOGJjNzE5NmVjYmFmMjcyYTEyZmFiMzZlNzk3
YTZjMzFlYjc1NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dwdS9TaGFyZWRHcmFwaGljc0NvbnRleHQzRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L1NoYXJlZEdyYXBoaWNzQ29udGV4dDNELmNwcApAQCAtMzUsMTAg
KzM1LDcgQEAKICNpbmNsdWRlICJTaGFyZWRHcmFwaGljc0NvbnRleHQzRC5oIgogCiAjaW5jbHVk
ZSAiQWZmaW5lVHJhbnNmb3JtLmgiCi0jaW5jbHVkZSAiQmljdWJpY1NoYWRlci5oIgogI2luY2x1
ZGUgIkNvbG9yLmgiCi0jaW5jbHVkZSAiQ29udm9sdXRpb25TaGFkZXIuaCIKLSNpbmNsdWRlICJE
cmF3aW5nQnVmZmVyLmgiCiAjaW5jbHVkZSAiRXh0ZW5zaW9uczNELmgiCiAjaW5jbHVkZSAiRmxv
YXRSZWN0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgpAQCAtNDYsNyArNDMsNiBAQAogI2luY2x1
ZGUgIlNvbGlkRmlsbFNoYWRlci5oIgogI2luY2x1ZGUgIlRleFNoYWRlci5oIgogCi0jaW5jbHVk
ZSA8d3RmL093bkFycmF5UHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC02OSwyNiArNjUsMTUgQEAgUGFzc1Jl
ZlB0cjxTaGFyZWRHcmFwaGljc0NvbnRleHQzRD4gU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q6OmNy
ZWF0ZShIb3N0V2luZG93KgogICAgIE93blB0cjxUZXhTaGFkZXI+IHRleFNoYWRlciA9IFRleFNo
YWRlcjo6Y3JlYXRlKGNvbnRleHQuZ2V0KCkpOwogICAgIGlmICghdGV4U2hhZGVyKQogICAgICAg
ICByZXR1cm4gMDsKLSAgICBPd25QdHI8QmljdWJpY1NoYWRlcj4gYmljdWJpY1NoYWRlciA9IEJp
Y3ViaWNTaGFkZXI6OmNyZWF0ZShjb250ZXh0LmdldCgpKTsKLSAgICBpZiAoIWJpY3ViaWNTaGFk
ZXIpCi0gICAgICAgIHJldHVybiAwOwotICAgIE93bkFycmF5UHRyPE93blB0cjxDb252b2x1dGlv
blNoYWRlcj4gPiBjb252b2x1dGlvblNoYWRlcnMgPSBhZG9wdEFycmF5UHRyKG5ldyBPd25QdHI8
Q29udm9sdXRpb25TaGFkZXI+W2NNYXhLZXJuZWxXaWR0aF0pOwotICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgY01heEtlcm5lbFdpZHRoOyArK2kpIHsKLSAgICAgICAgY29udm9sdXRpb25TaGFkZXJz
W2ldID0gQ29udm9sdXRpb25TaGFkZXI6OmNyZWF0ZShjb250ZXh0LmdldCgpLCBpICsgMSk7Ci0g
ICAgICAgIGlmICghY29udm9sdXRpb25TaGFkZXJzW2ldKQotICAgICAgICAgICAgcmV0dXJuIDA7
Ci0gICAgfQotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVkR3JhcGhpY3NDb250ZXh0M0Qo
Y29udGV4dC5yZWxlYXNlKCksIHNvbGlkRmlsbFNoYWRlci5yZWxlYXNlKCksIHRleFNoYWRlci5y
ZWxlYXNlKCksIGJpY3ViaWNTaGFkZXIucmVsZWFzZSgpLCBjb252b2x1dGlvblNoYWRlcnMucmVs
ZWFzZSgpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFyZWRHcmFwaGljc0NvbnRleHQz
RChjb250ZXh0LnJlbGVhc2UoKSwgc29saWRGaWxsU2hhZGVyLnJlbGVhc2UoKSwgdGV4U2hhZGVy
LnJlbGVhc2UoKSkpOwogfQogCi1TaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6U2hhcmVkR3JhcGhp
Y3NDb250ZXh0M0QoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCwgUGFzc093
blB0cjxTb2xpZEZpbGxTaGFkZXI+IHNvbGlkRmlsbFNoYWRlciwgUGFzc093blB0cjxUZXhTaGFk
ZXI+IHRleFNoYWRlciwgUGFzc093blB0cjxCaWN1YmljU2hhZGVyPiBiaWN1YmljU2hhZGVyLCBQ
YXNzT3duQXJyYXlQdHI8T3duUHRyPENvbnZvbHV0aW9uU2hhZGVyPiA+IGNvbnZvbHV0aW9uU2hh
ZGVycykKK1NoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpTaGFyZWRHcmFwaGljc0NvbnRleHQzRChQ
YXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0LCBQYXNzT3duUHRyPFNvbGlkRmls
bFNoYWRlcj4gc29saWRGaWxsU2hhZGVyLCBQYXNzT3duUHRyPFRleFNoYWRlcj4gdGV4U2hhZGVy
KQogICAgIDogbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX2JncmFTdXBwb3J0ZWQoZmFsc2Up
CiAgICAgLCBtX3F1YWRWZXJ0aWNlcygwKQogICAgICwgbV9zb2xpZEZpbGxTaGFkZXIoc29saWRG
aWxsU2hhZGVyKQogICAgICwgbV90ZXhTaGFkZXIodGV4U2hhZGVyKQotICAgICwgbV9iaWN1Ymlj
U2hhZGVyKGJpY3ViaWNTaGFkZXIpCi0gICAgLCBtX2NvbnZvbHV0aW9uU2hhZGVycyhjb252b2x1
dGlvblNoYWRlcnMpCiAgICAgLCBtX29lc1N0YW5kYXJkRGVyaXZhdGl2ZXNTdXBwb3J0ZWQoZmFs
c2UpCiB7CiAgICAgYWxsQ29udGV4dHMoKS0+YWRkKHRoaXMpOwpAQCAtMzg0LDE3ICszNjksNiBA
QCB2b2lkIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjp1c2VUZXh0dXJlUHJvZ3JhbShjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybQogICAgIG1fdGV4U2hhZGVyLT51c2UodHJhbnNmb3Jt
LCB0ZXhUcmFuc2Zvcm0sIDAsIGFscGhhKTsKIH0KIAotdm9pZCBTaGFyZWRHcmFwaGljc0NvbnRl
eHQzRDo6dXNlQmljdWJpY1Byb2dyYW0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0s
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdGV4VHJhbnNmb3JtLCBjb25zdCBmbG9hdCBjb2VmZmlj
aWVudHNbMTZdLCBjb25zdCBmbG9hdCBpbWFnZUluY3JlbWVudFsyXSwgZmxvYXQgYWxwaGEpCi17
Ci0gICAgbV9iaWN1YmljU2hhZGVyLT51c2UodHJhbnNmb3JtLCB0ZXhUcmFuc2Zvcm0sIGNvZWZm
aWNpZW50cywgaW1hZ2VJbmNyZW1lbnQsIGFscGhhKTsKLX0KLQotdm9pZCBTaGFyZWRHcmFwaGlj
c0NvbnRleHQzRDo6dXNlQ29udm9sdXRpb25Qcm9ncmFtKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
dHJhbnNmb3JtLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRleFRyYW5zZm9ybSwgY29uc3QgZmxv
YXQqIGtlcm5lbCwgaW50IGtlcm5lbFdpZHRoLCBmbG9hdCBpbWFnZUluY3JlbWVudFsyXSkKLXsK
LSAgICBBU1NFUlQoa2VybmVsV2lkdGggPj0gMSAmJiBrZXJuZWxXaWR0aCA8PSBjTWF4S2VybmVs
V2lkdGgpOwotICAgIG1fY29udm9sdXRpb25TaGFkZXJzW2tlcm5lbFdpZHRoIC0gMV0tPnVzZSh0
cmFuc2Zvcm0sIHRleFRyYW5zZm9ybSwga2VybmVsLCBrZXJuZWxXaWR0aCwgaW1hZ2VJbmNyZW1l
bnQpOwotfQotCiB2b2lkIFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpiaW5kRnJhbWVidWZmZXIo
UGxhdGZvcm0zRE9iamVjdCBmcmFtZWJ1ZmZlcikKIHsKICAgICBtX2NvbnRleHQtPmJpbmRGcmFt
ZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIGZyYW1lYnVmZmVyKTsKQEAg
LTQzNywyMCArNDExLDYgQEAgdm9pZCBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6dXNlTG9vcEJs
aW5uRXh0ZXJpb3JQcm9ncmFtKHVuc2lnbmVkIHZlcnRleE9mZnNldCwKICAgICBtX2xvb3BCbGlu
bkV4dGVyaW9yU2hhZGVyLT51c2UodmVydGV4T2Zmc2V0LCBrbG1PZmZzZXQsIHRyYW5zZm9ybSwg
Y29sb3IpOwogfQogCi1EcmF3aW5nQnVmZmVyKiBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Z2V0
T2Zmc2NyZWVuQnVmZmVyKHVuc2lnbmVkIGluZGV4LCBjb25zdCBJbnRTaXplJiBzaXplKQotewot
ICAgIGlmIChpbmRleCA+PSBtX29mZnNjcmVlbkJ1ZmZlcnMuc2l6ZSgpKQotICAgICAgICBtX29m
ZnNjcmVlbkJ1ZmZlcnMucmVzaXplKGluZGV4ICsgMSk7Ci0KLSAgICBpZiAoIW1fb2Zmc2NyZWVu
QnVmZmVyc1tpbmRleF0pCi0gICAgICAgIG1fb2Zmc2NyZWVuQnVmZmVyc1tpbmRleF0gPSBtX2Nv
bnRleHQtPmNyZWF0ZURyYXdpbmdCdWZmZXIoc2l6ZSk7Ci0KLSAgICBpZiAoc2l6ZS53aWR0aCgp
ICE9IG1fb2Zmc2NyZWVuQnVmZmVyc1tpbmRleF0tPnNpemUoKS53aWR0aCgpCi0gICAgICAgIHx8
IHNpemUuaGVpZ2h0KCkgIT0gbV9vZmZzY3JlZW5CdWZmZXJzW2luZGV4XS0+c2l6ZSgpLmhlaWdo
dCgpKQotICAgICAgICBtX29mZnNjcmVlbkJ1ZmZlcnNbaW5kZXhdLT5yZXNldChzaXplKTsKLSAg
ICByZXR1cm4gbV9vZmZzY3JlZW5CdWZmZXJzW2luZGV4XS5nZXQoKTsKLX0KLQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dwdS9TaGFyZWRHcmFwaGljc0NvbnRleHQzRC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1NoYXJlZEdyYXBoaWNzQ29udGV4dDNELmgKaW5kZXgg
MjY5N2FkZGU2ZTRiMDk2NTUzZDRkMDMwMjliNjFkYTBkYjk2OWFhYi4uNzA3ZmQyNDI5NzRkZDNm
YjMyNTJkZjg0MDE1NzUzNTQyMTRkZmYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L1NoYXJlZEdyYXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1NoYXJlZEdyYXBoaWNzQ29udGV4dDNELmgK
QEAgLTM4LDcgKzM4LDYgQEAKIAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KICNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CkBAIC00NiwxMCArNDUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBBZmZpbmVUcmFuc2Zvcm07Ci1jbGFzcyBCaWN1YmljU2hhZGVyOwogY2xhc3MgQ29sb3I7Ci1j
bGFzcyBDb252b2x1dGlvblNoYWRlcjsKLWNsYXNzIERyYXdpbmdCdWZmZXI7CiBjbGFzcyBGbG9h
dFJlY3Q7CiBjbGFzcyBIb3N0V2luZG93OwogY2xhc3MgSW50U2l6ZTsKQEAgLTEwNSw4ICsxMDEs
NiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVzZUZpbGxTb2xpZFByb2dyYW0oY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiwgY29uc3QgQ29sb3ImKTsKICAgICB2b2lkIHVzZVRleHR1cmVQcm9ncmFtKGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGZsb2F0IGFscGhh
KTsKLSAgICB2b2lkIHVzZUJpY3ViaWNQcm9ncmFtKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IGZsb2F0IGNvZWZmaWNpZW50c1sxNl0sIGNvbnN0
IGZsb2F0IGltYWdlSW5jcmVtZW50WzJdLCBmbG9hdCBhbHBoYSk7Ci0gICAgdm9pZCB1c2VDb252
b2x1dGlvblByb2dyYW0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiB0ZXhUcmFuc2Zvcm0sIGNvbnN0IGZsb2F0KiBrZXJuZWwsIGludCBrZXJuZWxXaWR0aCwg
ZmxvYXQgaW1hZ2VJbmNyZW1lbnRbMl0pOwogCiAgICAgdm9pZCBzZXRBY3RpdmVUZXh0dXJlKEdD
M0RlbnVtIHRleHR1cmVVbml0KTsKICAgICB2b2lkIGJpbmRUZXh0dXJlKEdDM0RlbnVtIHRhcmdl
dCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlKTsKQEAgLTEzMywxMCArMTI3LDkgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBib29sIHVzZUxvb3BCbGlubkZvclBhdGhSZW5kZXJpbmcoKTsKICAgICB2
b2lkIHVzZUxvb3BCbGlubkludGVyaW9yUHJvZ3JhbSh1bnNpZ25lZCB2ZXJ0ZXhPZmZzZXQsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IENvbG9yJik7CiAgICAgdm9pZCB1c2VMb29wQmxp
bm5FeHRlcmlvclByb2dyYW0odW5zaWduZWQgdmVydGV4T2Zmc2V0LCB1bnNpZ25lZCBrbG1PZmZz
ZXQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IENvbG9yJik7Ci0gICAgRHJhd2luZ0J1
ZmZlciogZ2V0T2Zmc2NyZWVuQnVmZmVyKHVuc2lnbmVkIGluZGV4LCBjb25zdCBJbnRTaXplJik7
CiAKIHByaXZhdGU6Ci0gICAgU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QoUGFzc1JlZlB0cjxHcmFw
aGljc0NvbnRleHQzRD4sIFBhc3NPd25QdHI8U29saWRGaWxsU2hhZGVyPiwgUGFzc093blB0cjxU
ZXhTaGFkZXI+LCBQYXNzT3duUHRyPEJpY3ViaWNTaGFkZXI+LCBQYXNzT3duQXJyYXlQdHI8T3du
UHRyPENvbnZvbHV0aW9uU2hhZGVyPiA+KTsKKyAgICBTaGFyZWRHcmFwaGljc0NvbnRleHQzRChQ
YXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiwgUGFzc093blB0cjxTb2xpZEZpbGxTaGFkZXI+
LCBQYXNzT3duUHRyPFRleFNoYWRlcj4pOwogCiAgICAgLy8gVXNlZCB0byBpbXBsZW1lbnQgcmVt
b3ZlVGV4dHVyZXNGb3IoKSwgc2VlIHRoZSBjb21tZW50IGFib3ZlLgogICAgIHN0YXRpYyBIYXNo
U2V0PFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEKj4qIGFsbENvbnRleHRzKCk7CkBAIC0xNDksOCAr
MTQyLDYgQEAgcHJpdmF0ZToKIAogICAgIE93blB0cjxTb2xpZEZpbGxTaGFkZXI+IG1fc29saWRG
aWxsU2hhZGVyOwogICAgIE93blB0cjxUZXhTaGFkZXI+IG1fdGV4U2hhZGVyOwotICAgIE93blB0
cjxCaWN1YmljU2hhZGVyPiBtX2JpY3ViaWNTaGFkZXI7Ci0gICAgT3duQXJyYXlQdHI8T3duUHRy
PENvbnZvbHV0aW9uU2hhZGVyPiA+IG1fY29udm9sdXRpb25TaGFkZXJzOwogCiAgICAgVGV4dHVy
ZUhhc2hNYXAgbV90ZXh0dXJlczsKIApAQCAtMTU5LDEzICsxNTAsOCBAQCBwcml2YXRlOgogICAg
IE93blB0cjxMb29wQmxpbm5Tb2xpZEZpbGxTaGFkZXI+IG1fbG9vcEJsaW5uSW50ZXJpb3JTaGFk
ZXI7CiAgICAgT3duUHRyPExvb3BCbGlublNvbGlkRmlsbFNoYWRlcj4gbV9sb29wQmxpbm5FeHRl
cmlvclNoYWRlcjsKICAgICBib29sIG1fb2VzU3RhbmRhcmREZXJpdmF0aXZlc1N1cHBvcnRlZDsK
LQotICAgIFdURjo6VmVjdG9yPFJlZlB0cjxEcmF3aW5nQnVmZmVyPiA+IG1fb2Zmc2NyZWVuQnVm
ZmVyczsKIH07CiAKLWNvbnN0IGZsb2F0IGNNYXhTaWdtYSA9IDQuMGY7Ci1jb25zdCBpbnQgY01h
eEtlcm5lbFdpZHRoID0gMjU7Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEuY3BwCmluZGV4
IGNmNjVhNTM0OWU1MDVjZjhkNTQwYTAwNDA0Y2JlNWVhZDFkYWExZGQuLjAwYWZkMDc3OGEzMDky
YjM4Y2JjMGYzYjI1YzMyYTEzMGM2MDE4YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcApA
QCAtMTAyNSwxNCArMTAyNSw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNo
YWRvdyhjb25zdCBGbG9hdFNpemUmIHNpemUsCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHBsYXRmb3JtQ29udGV4dCgpLT51c2VHUFUoKSkg
ewotICAgICAgICBHTEVTMkNhbnZhcyogY2FudmFzID0gcGxhdGZvcm1Db250ZXh0KCktPmdwdUNh
bnZhcygpOwotICAgICAgICBjYW52YXMtPnNldFNoYWRvd09mZnNldChzaXplKTsKLSAgICAgICAg
Y2FudmFzLT5zZXRTaGFkb3dCbHVyKGJsdXJGbG9hdCk7Ci0gICAgICAgIGNhbnZhcy0+c2V0U2hh
ZG93Q29sb3IoY29sb3IsIGNvbG9yU3BhY2UpOwotICAgICAgICBjYW52YXMtPnNldFNoYWRvd3NJ
Z25vcmVUcmFuc2Zvcm1zKG1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOwotICAgIH0K
LQogICAgIC8vIERldGVjdCB3aGVuIHRoZXJlJ3Mgbm8gZWZmZWN0aXZlIHNoYWRvdyBhbmQgY2xl
YXIgdGhlIGxvb3Blci4KICAgICBpZiAoIXNpemUud2lkdGgoKSAmJiAhc2l6ZS5oZWlnaHQoKSAm
JiAhYmx1ckZsb2F0KSB7CiAgICAgICAgIHBsYXRmb3JtQ29udGV4dCgpLT5zZXREcmF3TG9vcGVy
KDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Q
bGF0Zm9ybUNvbnRleHRTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5jcHAKaW5kZXggNTE3N2UxZDdlY2MwNmIzYTBhYTgw
ZjFhY2FkYTQ3NmNhN2Q3NGJmMS4uMzI0ZDQ1YzFkZDllZTdjMjgyMzkzNDA4ODRiYjBhYzZkNmUz
ODlmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Q
bGF0Zm9ybUNvbnRleHRTa2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuY3BwCkBAIC03MDMsNyArNzAzLDggQEAgdm9p
ZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjphcHBseUFudGlBbGlhc2VkQ2xpcFBhdGhzKFdURjo6VmVj
dG9yPFNrUGF0aD4mIHBhdGhzKQogCiBib29sIFBsYXRmb3JtQ29udGV4dFNraWE6OmNhbkFjY2Vs
ZXJhdGUoKSBjb25zdAogewotICAgIHJldHVybiAhbV9zdGF0ZS0+bV9maWxsU2hhZGVyOyAvLyBD
YW4ndCBhY2NlbGVyYXRlIHdpdGggYSBmaWxsIGdyYWRpZW50IG9yIHBhdHRlcm4uCisgICAgcmV0
dXJuICFtX3N0YXRlLT5tX2ZpbGxTaGFkZXIgLy8gQ2FuJ3QgYWNjZWxlcmF0ZSB3aXRoIGEgZmls
bCBncmFkaWVudCBvciBwYXR0ZXJuLgorICAgICAgICAmJiAhbV9zdGF0ZS0+bV9sb29wZXI7IC8v
IENhbid0IGFjY2VsZXJhdGUgd2l0aCBhIHNoYWRvdy4KIH0KIAogYm9vbCBQbGF0Zm9ybUNvbnRl
eHRTa2lhOjpjYW52YXNDbGlwQXBwbGllZCgpIGNvbnN0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>