<?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>51463</bug_id>
          
          <creation_ts>2010-12-22 05:24:11 -0800</creation_ts>
          <short_desc>REGRESSION(r74473): broke compilation on leopard intel release (Requested by podivilov on #webkit).</short_desc>
          <delta_ts>2010-12-22 05:35: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>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</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>48434</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>podivilov</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>325454</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-22 05:24:11 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/74473 broke the build:
broke compilation on leopard intel release (Requested by podivilov 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>325455</commentid>
    <comment_count>1</comment_count>
      <attachid>77206</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-22 05:24:29 -0800</bug_when>
    <thetext>Created attachment 77206
ROLLOUT of r74473

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>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77206</attachid>
            <date>2010-12-22 05:24:29 -0800</date>
            <delta_ts>2010-12-22 05:35:27 -0800</delta_ts>
            <desc>ROLLOUT of r74473</desc>
            <filename>bug-51463-20101222132333.patch</filename>
            <type>text/plain</type>
            <size>72215</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4MjAwYWJkMjljYWQzZjkwYWIwY2MzOGExZGM3NDEwYTZkYmUyZDgyLi4yMDhmZjMx
Y2RkYTFjNWY1ZjVhNTgzNWZkNzhmNjdjMGEwZjJhMmMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTAtMTItMjIgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgor
CisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI3NDQ3My4KKyAgICAgICAgaHR0cDov
L3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNzQ0NzMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxNDYzCisKKyAgICAgICAgYnJva2UgY29tcGlsYXRp
b24gb24gbGVvcGFyZCBpbnRlbCByZWxlYXNlIChSZXF1ZXN0ZWQgYnkKKyAgICAgICAgcG9kaXZp
bG92IG9uICN3ZWJraXQpLgorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXItdGVzdDIuanM6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyLWJyZWFrcG9pbnRzLW5v
dC1hY3RpdmF0ZWQtb24tcmVsb2FkLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2Vy
LXBhdXNlLW9uLWJyZWFrcG9pbnQuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVwb3J0LXBy
b3RvY29sLWVycm9ycy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL3JlcG9ydC1w
cm90b2NvbC1lcnJvcnMuaHRtbDoKKwogMjAxMC0xMi0yMSAgUGF2ZWwgUG9kaXZpbG92ICA8cG9k
aXZpbG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0
c2t5LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXItdGVzdDIuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10
ZXN0Mi5qcwppbmRleCA0MTM0NjEzYmQ3MGZjMDA0MjdlNTg0MTRmOTIwYTE1YzkzYjNjMTE0Li5l
NDRmY2E5YjkyMmI0MDk5NDA1MzA3MzVjY2QzMDc1OWRkNDVlMWY2IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0Mi5qcworKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci10ZXN0Mi5qcwpAQCAtOTAsMTMg
KzkwLDYgQEAgSW5zcGVjdG9yVGVzdC5jYXB0dXJlU3RhY2tUcmFjZSA9IGZ1bmN0aW9uKGNhbGxG
cmFtZXMpCiAgICAgfQogfTsKIAotSW5zcGVjdG9yVGVzdC5zZXRCcmVha3BvaW50ID0gZnVuY3Rp
b24odXJsLCBsaW5lTnVtYmVyLCBlbmFibGVkLCBjb25kaXRpb24pCi17Ci0gICAgdmFyIHNjcmlw
dHMgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5zY3JpcHRzRm9yVVJMKHVybCk7Ci0gICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBzY3JpcHRzLmxlbmd0aDsgKytpKQotICAgICAgICBXZWJJbnNw
ZWN0b3IuZGVidWdnZXJNb2RlbC5zZXRCcmVha3BvaW50KHNjcmlwdHNbaV0uc291cmNlSUQsIGxp
bmVOdW1iZXIsIGVuYWJsZWQsIGNvbmRpdGlvbik7Ci19Ci0KIEluc3BlY3RvclRlc3QuX3BhdXNl
ZFNjcmlwdCA9IGZ1bmN0aW9uKGRldGFpbHMpCiB7CiAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoIlNjcmlwdCBleGVjdXRpb24gcGF1c2VkLiIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyLWJyZWFrcG9pbnRzLW5vdC1hY3RpdmF0ZWQtb24tcmVsb2FkLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItYnJlYWtwb2ludHMtbm90LWFjdGl2
YXRlZC1vbi1yZWxvYWQuaHRtbAppbmRleCAyZmRjOWVmNTE2Zjc5MzNiYmEyYTEzZThkY2MyMzJk
MzM2OGJlZmRkLi5mYzJjOTI2Zjk1NWVkMDgwZGFmYjJlYThlMzM0YjZkZGY1MjVhNjFlIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItYnJlYWtwb2ludHMtbm90LWFj
dGl2YXRlZC1vbi1yZWxvYWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXItYnJlYWtwb2ludHMtbm90LWFjdGl2YXRlZC1vbi1yZWxvYWQuaHRtbApAQCAtMjQsNyArMjQs
NyBAQCB2YXIgdGVzdCA9IGZ1bmN0aW9uKCkKICAgICBmdW5jdGlvbiBzdGVwMigpCiAgICAgewog
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiTWFpbiByZXNvdXJjZSB3YXMgc2hvd24u
Iik7Ci0gICAgICAgIEluc3BlY3RvclRlc3Quc2V0QnJlYWtwb2ludChXZWJJbnNwZWN0b3IubWFp
blJlc291cmNlLnVybCwgOCwgdHJ1ZSwgIiIpOworICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxz
LnNjcmlwdHMudmlzaWJsZVZpZXcuc291cmNlRnJhbWUuX3NldEJyZWFrcG9pbnQoOCk7CiAgICAg
ICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy50b2dnbGVCcmVha3BvaW50c0J1dHRvbi5l
bGVtZW50LmNsaWNrKCk7CiAgICAgICAgIEluc3BlY3RvclRlc3QucmVsb2FkUGFnZShzdGVwMyk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXBhdXNl
LW9uLWJyZWFrcG9pbnQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci1wYXVz
ZS1vbi1icmVha3BvaW50Lmh0bWwKaW5kZXggNDMyNjBiMmEwZmYzYzllYmFjZGM4ZWRhYjE5YTg0
ZDkzMDhjZjY1Yi4uNDgzMWQ0MmE5ODFhY2VmODM5NzI5ZGQ1NDQ0NzQ3NDdkM2MwZjllNSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXBhdXNlLW9uLWJyZWFrcG9p
bnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItcGF1c2Utb24tYnJl
YWtwb2ludC5odG1sCkBAIC0yMiw3ICsyMiw3IEBAIHZhciB0ZXN0ID0gZnVuY3Rpb24oKQogICAg
IGZ1bmN0aW9uIHN0ZXAyKCkKICAgICB7CiAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCJTY3JpcHQgc291cmNlIHdhcyBzaG93bi4iKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5zZXRC
cmVha3BvaW50KFdlYkluc3BlY3Rvci5tYWluUmVzb3VyY2UudXJsLCA5LCB0cnVlLCAiIik7Cisg
ICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy52aXNpYmxlVmlldy5zb3VyY2VGcmFt
ZS5fc2V0QnJlYWtwb2ludCg5KTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5ydW5UZXN0RnVuY3Rp
b25BbmRXYWl0VW50aWxQYXVzZWQoc3RlcDMpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3JlcG9ydC1wcm90b2NvbC1lcnJvcnMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3JlcG9ydC1wcm90b2NvbC1lcnJvcnMtZXhwZWN0ZWQudHh0Cmlu
ZGV4IGE1ZDhkZmM4Njc4OGZkYjA0NGY2ODIwYzJmNDhjYjg5MjRlMTZjNjkuLjIyMjFjODQzYmJi
YWM0MTAzM2E5Zjg2ZDkyMTEzOTNmMzBkMDI0MGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9yZXBvcnQtcHJvdG9jb2wtZXJyb3JzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvcmVwb3J0LXByb3RvY29sLWVycm9ycy1leHBlY3RlZC50eHQKQEAgLTg0
LDcgKzg0LDggQEAgVGVzdHMgdGhhdCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciBpcyBjYXRj
aGluZyBpbmNvcnJlY3QgbWVzc2FnZXMuCiAgICAgc3VjY2VzcyA6IGZhbHNlCiAgICAgZXJyb3Jz
IDogewogICAgICAgICAwIDogIlByb3RvY29sIEVycm9yOiBEZWJ1Z2dlciBoYW5kbGVyIGlzIG5v
dCBhdmFpbGFibGUuIgotICAgICAgICAxIDogIlByb3RvY29sIEVycm9yOiBBcmd1bWVudCAnYnJl
YWtwb2ludElkJyB3aXRoIHR5cGUgJ1N0cmluZycgd2FzIG5vdCBmb3VuZC4iCisgICAgICAgIDEg
OiAiUHJvdG9jb2wgRXJyb3I6IEFyZ3VtZW50ICdzb3VyY2VJRCcgd2l0aCB0eXBlICdTdHJpbmcn
IHdhcyBub3QgZm91bmQuIgorICAgICAgICAyIDogIlByb3RvY29sIEVycm9yOiBBcmd1bWVudCAn
bGluZU51bWJlcicgd2l0aCB0eXBlICdOdW1iZXInIHdhcyBub3QgZm91bmQuIgogICAgIH0KIH0K
IHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9yZXBvcnQtcHJvdG9jb2wtZXJy
b3JzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcmVwb3J0LXByb3RvY29sLWVycm9ycy5o
dG1sCmluZGV4IDRjMGZmNmQwOGE1ZGY5NzllZTk4OGRmNTc1YTIyMzEzNjgzNWEyMjYuLmQ0ODk2
MWRlOGIwYmYyZTE3Mzc5ZDVkZDE2NmNmZTE0YzM2YWMzMDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9yZXBvcnQtcHJvdG9jb2wtZXJyb3JzLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3JlcG9ydC1wcm90b2NvbC1lcnJvcnMuaHRtbApAQCAtMTcsNyArMTcsNyBA
QCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgJ3sic2VxIjo0LCJjb21tYW5kIjoicmVzb3VyY2VD
b250ZW50IiwiYXJndW1lbnRzIjp7fX0nLAogICAgICAgICAneyJzZXEiOjUsImNvbW1hbmQiOiJy
ZXNvdXJjZUNvbnRlbnQiLCJhcmd1bWVudHMiOnsiaWRlbnRpZmllciI6Im5vdCBhIG51bWJlciJ9
fScsCiAgICAgICAgICd7InNlcSI6NiwiY29tbWFuZCI6InJlbW92ZUJyZWFrcG9pbnQiLCJhcmd1
bWVudHMiOnt9fScsCi0gICAgICAgICd7InNlcSI6NywiY29tbWFuZCI6InJlbW92ZUJyZWFrcG9p
bnQiLCJhcmd1bWVudHMiOnsiYnJlYWtwb2ludElkIjoic29tZUJyZWFrcG9pbnRJZCJ9fScsCisg
ICAgICAgICd7InNlcSI6NywiY29tbWFuZCI6InJlbW92ZUJyZWFrcG9pbnQiLCJhcmd1bWVudHMi
Onsic291cmNlSUQiOiJzb21lU291cmNlSWQiLCJsaW5lTnVtYmVyIjowfX0nLAogCiAgICAgXTsK
ICAgICB2YXIgbnVtYmVyT2ZSZXBvcnRzID0gMDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWRkNGZkY2JjMGUwYWE0MDQ3ODIzOTE4MzUz
ZjRjODAyYjM2Yjc0Zi4uZmEwMDY0YzRhYjBkNDI4ODMyODY1MTNlMzllZWFmNWZlNWYyYWI2ZiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw5NSBAQAorMjAxMC0xMi0yMiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJv
dEBnbWFpbC5jb20+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjc0NDczLgor
ICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC83NDQ3MworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTE0NjMKKworICAgICAgICBi
cm9rZSBjb21waWxhdGlvbiBvbiBsZW9wYXJkIGludGVsIHJlbGVhc2UgKFJlcXVlc3RlZCBieQor
ICAgICAgICBwb2Rpdmlsb3Ygb24gI3dlYmtpdCkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9T
Y3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZl
cjo6c2V0QnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6
cmVtb3ZlQnJlYWtwb2ludCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2
ZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9EZWJ1Z2dlclNjcmlwdC5qczoKKyAgICAgICAg
KCk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnNldEJyZWFrcG9pbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92ZUJyZWFrcG9pbnQpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3Rvci5pZGw6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuY3BwOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5hYmxlRGVidWdnZXJGcm9tRnJvbnRl
bmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0U3RpY2t5QnJl
YWtwb2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6cmVzdG9y
ZVN0aWNreUJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxl
cjo6YnJlYWtwb2ludHNTZXR0aW5nS2V5KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNv
bnRyb2xsZXI6OmxvYWRCcmVha3BvaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
b250cm9sbGVyOjpzYXZlQnJlYWtwb2ludHMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Zm9ybWF0QnJlYWtwb2ludElkKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2lu
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZW1vdmVCcmVh
a3BvaW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNsZWFy
Rm9yUGFnZU5hdmlnYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6bWQ1QmFzZTE2KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OmxvYWRCcmVha3BvaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpzYXZlQnJlYWtwb2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6ZGlkUGFyc2VTb3VyY2UpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3Bv
aW50LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkJyZWFrcG9pbnQuanNCcmVha3BvaW50SWQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkJyZWFrcG9pbnQucHJvdG90eXBlLnNldCBlbmFibGVkKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5CcmVha3BvaW50LnByb3RvdHlwZS5nZXQgaWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkJyZWFrcG9pbnQucHJvdG90eXBlLnNldCBjb25kaXRpb24pOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkJyZWFrcG9pbnQucHJvdG90eXBlLnJlbW92ZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9CcmVha3BvaW50TWFuYWdlci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVh
a3BvaW50TWFuYWdlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIu
cHJvdG90eXBlLl9jcmVhdGVET01CcmVha3BvaW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5C
cmVha3BvaW50TWFuYWdlci5wcm90b3R5cGUuX2NyZWF0ZUV2ZW50TGlzdGVuZXJCcmVha3BvaW50
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5wcm90b3R5cGUuX2Ny
ZWF0ZVhIUkJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5h
Z2VyLnByb3RvdHlwZS5fc2V0TmF0aXZlQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQnJlYWtwb2ludE1hbmFnZXIucHJvdG90eXBlLl9zZXROYXRpdmVCcmVha3BvaW50RW5hYmxl
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIucHJvdG90eXBlLl9y
ZW1vdmVOYXRpdmVCcmVha3BvaW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50
TWFuYWdlci5wcm90b3R5cGUuYnJlYWtwb2ludFZpZXdGb3JFdmVudERhdGEpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlwZS5fcHJvamVjdENoYW5nZWQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlwZS5yZXN0
b3JlRE9NQnJlYWtwb2ludHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5h
Z2VyLnByb3RvdHlwZS5fc2F2ZUJyZWFrcG9pbnRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5C
cmVha3BvaW50TWFuYWdlci5wcm90b3R5cGUuX3ZhbGlkYXRlQnJlYWtwb2ludHMpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQucHJvdG90eXBlLl9zZXJpYWxpemVUb0pTT04p
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJCcmVha3BvaW50LnByb3RvdHlw
ZS5fc2VyaWFsaXplVG9KU09OKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5YSFJCcmVha3BvaW50
LnByb3RvdHlwZS5fc2VyaWFsaXplVG9KU09OKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXRp
dmVCcmVha3BvaW50Vmlldy5wcm90b3R5cGUuc2V0IGVuYWJsZWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLk5hdGl2ZUJyZWFrcG9pbnRWaWV3LnByb3RvdHlwZS5yZW1vdmUpOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJNb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5EZWJ1Z2dlck1vZGVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVs
LnByb3RvdHlwZS5zZXRPbmVUaW1lQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RGVidWdnZXJNb2RlbC5wcm90b3R5cGUucmVtb3ZlT25lVGltZUJyZWFrcG9pbnQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwucHJvdG90eXBlLnNldEJyZWFrcG9pbnQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwucHJvdG90eXBlLmZpbmRCcmVha3Bv
aW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLnByb3RvdHlwZS5yZXNl
dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5wcm90b3R5cGUuX3NldEJy
ZWFrcG9pbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwucHJvdG90eXBl
Ll9icmVha3BvaW50UmVtb3ZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2Rl
bC5wcm90b3R5cGUuX3NldEJyZWFrcG9pbnRPbkJhY2tlbmQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkRlYnVnZ2VyTW9kZWwucHJvdG90eXBlLmJyZWFrcG9pbnRSZXN0b3JlZCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5wcm90b3R5cGUucGF1c2VkU2NyaXB0KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLnByb3RvdHlwZS5yZXN1bWVkU2NyaXB0
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLmNvbnRpbnVlVG9MaW5lKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLl9kZWJ1Z2dlclBh
dXNlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUuX2NvbnRleHRNZW51LmFk
ZENvbmRpdGlvbmFsQnJlYWtwb2ludC5kaWRFZGl0QnJlYWtwb2ludENvbmRpdGlvbik6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlLl9jb250ZXh0TWVudS5hZGRD
b25kaXRpb25hbEJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1l
LnByb3RvdHlwZS5fY29udGV4dE1lbnUuZWxzZS5lZGl0QnJlYWtwb2ludENvbmRpdGlvbi5kaWRF
ZGl0QnJlYWtwb2ludENvbmRpdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRnJh
bWUucHJvdG90eXBlLl9jb250ZXh0TWVudS5lbHNlLmVkaXRCcmVha3BvaW50Q29uZGl0aW9uKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUuX2NvbnRleHRNZW51
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUuX21vdXNlRG93
bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlLl9jb250aW51
ZVRvTGluZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlLl9z
ZXRCcmVha3BvaW50KToKKwogMjAxMC0xMi0yMSAgUGF2ZWwgUG9kaXZpbG92ICA8cG9kaXZpbG92
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5Lgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCAxMGRmMjIzYjYx
MjVhZTljZGViOGU3ODcyM2JlZjQ1NWExMWQ3MGNhLi5hNDQwYjgxNmEzNjBmYjdkYTFlNjRkZTFm
MjQzOGNlOWRjYmIxZTdmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERl
YnVnU2VydmVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVy
LmNwcApAQCAtNTAsNyArNTAsNiBAQAogI2luY2x1ZGUgPGRlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZy
YW1lLmg+CiAjaW5jbHVkZSA8cGFyc2VyL1NvdXJjZUNvZGUuaD4KICNpbmNsdWRlIDxydW50aW1l
L0pTTG9jay5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CiAjaW5j
bHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAj
aW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CkBAIC0xMzgsMzMgKzEzNywyMyBAQCBib29sIFNj
cmlwdERlYnVnU2VydmVyOjpoYXNMaXN0ZW5lcnNJbnRlcmVzdGVkSW5QYWdlKFBhZ2UqIHBhZ2Up
CiAgICAgcmV0dXJuIG1fcGFnZUxpc3RlbmVyc01hcC5jb250YWlucyhwYWdlKTsKIH0KIAotU3Ry
aW5nIFNjcmlwdERlYnVnU2VydmVyOjpzZXRCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgc291cmNl
SUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgY29uZGl0aW9uLCBib29sIGVu
YWJsZWQsIHVuc2lnbmVkKiBhY3R1YWxMaW5lTnVtYmVyKQorYm9vbCBTY3JpcHREZWJ1Z1NlcnZl
cjo6c2V0QnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBTY3JpcHRCcmVha3BvaW50
IGJyZWFrcG9pbnQsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkKiBhY3R1YWxMaW5lTnVt
YmVyKQogewogICAgIGludHB0cl90IHNvdXJjZUlEVmFsdWUgPSBzb3VyY2VJRC50b0ludFB0cigp
OwogICAgIGlmICghc291cmNlSURWYWx1ZSkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgQnJlYWtwb2ludHNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9icmVha3Bv
aW50cy5maW5kKHNvdXJjZUlEVmFsdWUpOwogICAgIGlmIChpdCA9PSBtX2JyZWFrcG9pbnRzLmVu
ZCgpKQogICAgICAgICBpdCA9IG1fYnJlYWtwb2ludHMuc2V0KHNvdXJjZUlEVmFsdWUsIFNvdXJj
ZUJyZWFrcG9pbnRzKCkpLmZpcnN0OwotICAgIGlmIChpdC0+c2Vjb25kLmNvbnRhaW5zKGxpbmVO
dW1iZXIpKQotICAgICAgICByZXR1cm4gIiI7Ci0gICAgaXQtPnNlY29uZC5zZXQobGluZU51bWJl
ciwgU2NyaXB0QnJlYWtwb2ludChlbmFibGVkLCBjb25kaXRpb24pKTsKKyAgICBpdC0+c2Vjb25k
LnNldChsaW5lTnVtYmVyLCBicmVha3BvaW50KTsKICAgICAqYWN0dWFsTGluZU51bWJlciA9IGxp
bmVOdW1iZXI7Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcoc291cmNlSUQsICI6IiwgU3RyaW5nOjpu
dW1iZXIobGluZU51bWJlcikpOworICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFNjcmlwdERl
YnVnU2VydmVyOjpyZW1vdmVCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkKQor
dm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3ZlQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHNv
dXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVyKQogewotICAgIFZlY3RvcjxTdHJpbmc+IHRva2Vu
czsKLSAgICBicmVha3BvaW50SWQuc3BsaXQoIjoiLCB0b2tlbnMpOwotICAgIGlmICh0b2tlbnMu
c2l6ZSgpICE9IDIpCi0gICAgICAgIHJldHVybjsKLSAgICBib29sIHN1Y2Nlc3M7Ci0gICAgaW50
cHRyX3Qgc291cmNlSURWYWx1ZSA9IHRva2Vuc1swXS50b0ludFB0cigmc3VjY2Vzcyk7Ci0gICAg
aWYgKCFzdWNjZXNzKQotICAgICAgICByZXR1cm47Ci0gICAgdW5zaWduZWQgbGluZU51bWJlciA9
IHRva2Vuc1sxXS50b1VJbnQoJnN1Y2Nlc3MpOwotICAgIGlmICghc3VjY2VzcykKKyAgICBpbnRw
dHJfdCBzb3VyY2VJRFZhbHVlID0gc291cmNlSUQudG9JbnRQdHIoKTsKKyAgICBpZiAoIXNvdXJj
ZUlEVmFsdWUpCiAgICAgICAgIHJldHVybjsKICAgICBCcmVha3BvaW50c01hcDo6aXRlcmF0b3Ig
aXQgPSBtX2JyZWFrcG9pbnRzLmZpbmQoc291cmNlSURWYWx1ZSk7CiAgICAgaWYgKGl0ICE9IG1f
YnJlYWtwb2ludHMuZW5kKCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dERlYnVnU2VydmVyLmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmgK
aW5kZXggODFjZDlhYzM2NDhmMDc4ODk0NDdiNjRjNjZmYjYzMmIzYmJiMmUwOS4uMzE3MmM2NTU3
NWJjOGYwMWEzZDg0YjllNjFkYzJlM2I2YmYzNjVmNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0RGVidWdTZXJ2ZXIuaApAQCAtNjMsOCArNjMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRM
aXN0ZW5lcihTY3JpcHREZWJ1Z0xpc3RlbmVyKiwgUGFnZSopOwogICAgIHZvaWQgcmVtb3ZlTGlz
dGVuZXIoU2NyaXB0RGVidWdMaXN0ZW5lciosIFBhZ2UqKTsKIAotICAgIFN0cmluZyBzZXRCcmVh
a3BvaW50KGNvbnN0IFN0cmluZyYgc291cmNlSUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0
IFN0cmluZyYgY29uZGl0aW9uLCBib29sIGVuYWJsZWQsIHVuc2lnbmVkKiBhY3R1YWxMaW5lTnVt
YmVyKTsKLSAgICB2b2lkIHJlbW92ZUJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBicmVha3BvaW50
SWQpOworICAgIGJvb2wgc2V0QnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBTY3Jp
cHRCcmVha3BvaW50IGJyZWFrcG9pbnQsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkKiBh
Y3R1YWxMaW5lTnVtYmVyKTsKKyAgICB2b2lkIHJlbW92ZUJyZWFrcG9pbnQoY29uc3QgU3RyaW5n
JiBzb3VyY2VJRCwgdW5zaWduZWQgbGluZU51bWJlcik7CiAgICAgdm9pZCBjbGVhckJyZWFrcG9p
bnRzKCk7CiAgICAgdm9pZCBzZXRCcmVha3BvaW50c0FjdGl2YXRlZChib29sIGFjdGl2YXRlZCk7
CiAgICAgdm9pZCBhY3RpdmF0ZUJyZWFrcG9pbnRzKCkgeyBzZXRCcmVha3BvaW50c0FjdGl2YXRl
ZCh0cnVlKTsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9EZWJ1Z2dlclNjcmlw
dC5qcyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvRGVidWdnZXJTY3JpcHQuanMKaW5kZXggNTBmNzkx
ZDcxYThkZTZhNDBmODYxZWFlMWQyNjgyZjNlMDUyYzdhZC4uNjAyNjIxNDZmMDI4ZDFlYzY2NjY2
OTNjMzZhOTEwODBjODYxZmJlYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9EZWJ1
Z2dlclNjcmlwdC5qcworKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RlYnVnZ2VyU2NyaXB0Lmpz
CkBAIC0zMSw2ICszMSw3IEBACiAoZnVuY3Rpb24gKCkgewogCiB2YXIgRGVidWdnZXJTY3JpcHQg
PSB7fTsKK0RlYnVnZ2VyU2NyaXB0Ll9icmVha3BvaW50cyA9IHt9OwogCiBEZWJ1Z2dlclNjcmlw
dC5QYXVzZU9uRXhjZXB0aW9uc1N0YXRlID0gewogICAgIERvbnRQYXVzZU9uRXhjZXB0aW9ucyA6
IDAsCkBAIC05OSwxMyArMTAwLDI1IEBAIERlYnVnZ2VyU2NyaXB0LnNldEJyZWFrcG9pbnQgPSBm
dW5jdGlvbihleGVjU3RhdGUsIGFyZ3MpCiAgICAgdmFyIGxvY2F0aW9ucyA9IERlYnVnLmZpbmRC
cmVha1BvaW50QWN0dWFsTG9jYXRpb25zKGJyZWFrSWQpOwogICAgIGlmICghbG9jYXRpb25zLmxl
bmd0aCkKICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKLSAgICBhcmdzLmxpbmVOdW1iZXIgPSBE
ZWJ1Z2dlclNjcmlwdC5fdjhUb1dlYmtpdExpbmVOdW1iZXIobG9jYXRpb25zWzBdLmxpbmUpOwot
ICAgIHJldHVybiBicmVha0lkLnRvU3RyaW5nKCk7CisgICAgdmFyIGFjdHVhbExpbmVOdW1iZXIg
PSBsb2NhdGlvbnNbMF0ubGluZTsKKworICAgIHZhciBrZXkgPSBhcmdzLnNjcmlwdElkICsgIjoi
ICsgYWN0dWFsTGluZU51bWJlcjsKKyAgICBpZiAoa2V5IGluIERlYnVnZ2VyU2NyaXB0Ll9icmVh
a3BvaW50cykgeworICAgICAgICAvLyBSZW1vdmUgb2xkIGJyZWFrcG9pbnQuCisgICAgICAgIERl
YnVnLmZpbmRCcmVha1BvaW50KERlYnVnZ2VyU2NyaXB0Ll9icmVha3BvaW50c1trZXldLCB0cnVl
KTsKKyAgICB9CisgICAgRGVidWdnZXJTY3JpcHQuX2JyZWFrcG9pbnRzW2tleV0gPSBicmVha0lk
OworICAgIHJldHVybiBEZWJ1Z2dlclNjcmlwdC5fdjhUb1dlYmtpdExpbmVOdW1iZXIoYWN0dWFs
TGluZU51bWJlcik7CiB9CiAKIERlYnVnZ2VyU2NyaXB0LnJlbW92ZUJyZWFrcG9pbnQgPSBmdW5j
dGlvbihleGVjU3RhdGUsIGFyZ3MpCiB7Ci0gICAgRGVidWcuZmluZEJyZWFrUG9pbnQoYXJncy5i
cmVha3BvaW50SWQsIHRydWUpOworICAgIGFyZ3MubGluZU51bWJlciA9IERlYnVnZ2VyU2NyaXB0
Ll93ZWJraXRUb1Y4TGluZU51bWJlcihhcmdzLmxpbmVOdW1iZXIpOworICAgIHZhciBrZXkgPSBh
cmdzLnNjcmlwdElkICsgIjoiICsgYXJncy5saW5lTnVtYmVyOworICAgIHZhciBicmVha0lkID0g
RGVidWdnZXJTY3JpcHQuX2JyZWFrcG9pbnRzW2tleV07CisgICAgaWYgKGJyZWFrSWQpCisgICAg
ICAgIERlYnVnLmZpbmRCcmVha1BvaW50KGJyZWFrSWQsIHRydWUpOworICAgIGRlbGV0ZSBEZWJ1
Z2dlclNjcmlwdC5fYnJlYWtwb2ludHNba2V5XTsKIH0KIAogRGVidWdnZXJTY3JpcHQucGF1c2VP
bkV4Y2VwdGlvbnNTdGF0ZSA9IGZ1bmN0aW9uKCkKQEAgLTE3Nyw3ICsxOTAsMTEgQEAgRGVidWdn
ZXJTY3JpcHQuZWRpdFNjcmlwdFNvdXJjZSA9IGZ1bmN0aW9uKHNjcmlwdElkLCBuZXdTb3VyY2Up
CiAKIERlYnVnZ2VyU2NyaXB0LmNsZWFyQnJlYWtwb2ludHMgPSBmdW5jdGlvbihleGVjU3RhdGUs
IGFyZ3MpCiB7Ci0gICAgRGVidWcuY2xlYXJBbGxCcmVha1BvaW50cygpOworICAgIGZvciAodmFy
IGtleSBpbiBEZWJ1Z2dlclNjcmlwdC5fYnJlYWtwb2ludHMpIHsKKyAgICAgICAgdmFyIGJyZWFr
SWQgPSBEZWJ1Z2dlclNjcmlwdC5fYnJlYWtwb2ludHNba2V5XTsKKyAgICAgICAgRGVidWcuZmlu
ZEJyZWFrUG9pbnQoYnJlYWtJZCwgdHJ1ZSk7CisgICAgfQorICAgIERlYnVnZ2VyU2NyaXB0Ll9i
cmVha3BvaW50cyA9IHt9OwogfQogCiBEZWJ1Z2dlclNjcmlwdC5zZXRCcmVha3BvaW50c0FjdGl2
YXRlZCA9IGZ1bmN0aW9uKGV4ZWNTdGF0ZSwgYXJncykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3Jp
cHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggNGI0NjExYTUwN2E1Y2Q4YWM0ZWI5OGY3OGI5MTZhNjg3
MTI2NTc5NS4uOWRmY2E1NWUzZjAwN2I1MTRiZmM3MmZiMWU3NDQyODQ0OTQ5YTQ2MiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIGIvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAgLTE0Myw3ICsxNDMsNyBA
QCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpyZW1vdmVMaXN0ZW5lcihTY3JpcHREZWJ1Z0xpc3Rl
bmVyKiBsaXN0ZW5lciwgUGFnZSogcGFnZQogICAgIC8vIEZJWE1FOiBSZW1vdmUgYWxsIGJyZWFr
cG9pbnRzIHNldCBieSB0aGUgYWdlbnQuCiB9CiAKLVN0cmluZyBTY3JpcHREZWJ1Z1NlcnZlcjo6
c2V0QnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHNvdXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVy
LCBjb25zdCBTdHJpbmcmIGNvbmRpdGlvbiwgYm9vbCBlbmFibGVkLCB1bnNpZ25lZCogYWN0dWFs
TGluZU51bWJlcikKK2Jvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6OnNldEJyZWFrcG9pbnQoY29uc3Qg
U3RyaW5nJiBzb3VyY2VJRCwgU2NyaXB0QnJlYWtwb2ludCBicmVha3BvaW50LCB1bnNpZ25lZCBs
aW5lTnVtYmVyLCB1bnNpZ25lZCogYWN0dWFsTGluZU51bWJlcikKIHsKICAgICB2ODo6SGFuZGxl
U2NvcGUgc2NvcGU7CiAgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBkZWJ1Z2dlckNvbnRleHQg
PSB2ODo6RGVidWc6OkdldERlYnVnQ29udGV4dCgpOwpAQCAtMTUyLDI1ICsxNTIsMjcgQEAgU3Ry
aW5nIFNjcmlwdERlYnVnU2VydmVyOjpzZXRCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgc291cmNl
SUQsIHVuc2lnbmVkIGxpbmVOdW0KICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gYXJncyA9IHY4
OjpPYmplY3Q6Ok5ldygpOwogICAgIGFyZ3MtPlNldCh2ODo6U3RyaW5nOjpOZXcoInNjcmlwdElk
IiksIHY4U3RyaW5nKHNvdXJjZUlEKSk7CiAgICAgYXJncy0+U2V0KHY4OjpTdHJpbmc6Ok5ldygi
bGluZU51bWJlciIpLCB2ODo6SW50ZWdlcjo6TmV3KGxpbmVOdW1iZXIpKTsKLSAgICBhcmdzLT5T
ZXQodjg6OlN0cmluZzo6TmV3KCJjb25kaXRpb24iKSwgdjhTdHJpbmcoY29uZGl0aW9uKSk7Ci0g
ICAgYXJncy0+U2V0KHY4OjpTdHJpbmc6Ok5ldygiZW5hYmxlZCIpLCB2ODo6Qm9vbGVhbjo6TmV3
KGVuYWJsZWQpKTsKKyAgICBhcmdzLT5TZXQodjg6OlN0cmluZzo6TmV3KCJjb25kaXRpb24iKSwg
djhTdHJpbmcoYnJlYWtwb2ludC5jb25kaXRpb24pKTsKKyAgICBhcmdzLT5TZXQodjg6OlN0cmlu
Zzo6TmV3KCJlbmFibGVkIiksIHY4OjpCb29sZWFuOjpOZXcoYnJlYWtwb2ludC5lbmFibGVkKSk7
CiAKICAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gc2V0QnJlYWtwb2ludEZ1bmN0aW9uID0g
djg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0
KHY4OjpTdHJpbmc6Ok5ldygic2V0QnJlYWtwb2ludCIpKSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGJyZWFrcG9pbnRJZCA9IHY4OjpEZWJ1Zzo6Q2FsbChzZXRCcmVha3BvaW50RnVuY3Rp
b24sIGFyZ3MpOwotICAgIGlmICghYnJlYWtwb2ludElkLT5Jc1N0cmluZygpKQotICAgICAgICBy
ZXR1cm4gIiI7Ci0gICAgKmFjdHVhbExpbmVOdW1iZXIgPSBhcmdzLT5HZXQodjg6OlN0cmluZzo6
TmV3KCJsaW5lTnVtYmVyIikpLT5JbnQzMlZhbHVlKCk7Ci0gICAgcmV0dXJuIHY4U3RyaW5nVG9X
ZWJDb3JlU3RyaW5nKGJyZWFrcG9pbnRJZC0+VG9TdHJpbmcoKSk7CisgICAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHJlc3VsdCA9IHY4OjpEZWJ1Zzo6Q2FsbChzZXRCcmVha3BvaW50RnVuY3Rpb24s
IGFyZ3MpOworICAgIGlmICghcmVzdWx0LT5Jc051bWJlcigpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgQVNTRVJUKHJlc3VsdC0+SW50MzJWYWx1ZSgpID49IDApOworICAgICphY3R1YWxM
aW5lTnVtYmVyID0gcmVzdWx0LT5JbnQzMlZhbHVlKCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAK
LXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92ZUJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBi
cmVha3BvaW50SWQpCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpyZW1vdmVCcmVha3BvaW50KGNv
bnN0IFN0cmluZyYgc291cmNlSUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIpCiB7CiAgICAgdjg6Okhh
bmRsZVNjb3BlIHNjb3BlOwogICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gZGVidWdnZXJDb250
ZXh0ID0gdjg6OkRlYnVnOjpHZXREZWJ1Z0NvbnRleHQoKTsKICAgICB2ODo6Q29udGV4dDo6U2Nv
cGUgY29udGV4dFNjb3BlKGRlYnVnZ2VyQ29udGV4dCk7CiAKICAgICB2ODo6TG9jYWw8djg6Ok9i
amVjdD4gYXJncyA9IHY4OjpPYmplY3Q6Ok5ldygpOwotICAgIGFyZ3MtPlNldCh2ODo6U3RyaW5n
OjpOZXcoImJyZWFrcG9pbnRJZCIpLCB2OFN0cmluZyhicmVha3BvaW50SWQpKTsKKyAgICBhcmdz
LT5TZXQodjg6OlN0cmluZzo6TmV3KCJzY3JpcHRJZCIpLCB2OFN0cmluZyhzb3VyY2VJRCkpOwor
ICAgIGFyZ3MtPlNldCh2ODo6U3RyaW5nOjpOZXcoImxpbmVOdW1iZXIiKSwgdjg6OkludGVnZXI6
Ok5ldyhsaW5lTnVtYmVyKSk7CiAKICAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gcmVtb3Zl
QnJlYWtwb2ludEZ1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1
Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygicmVtb3ZlQnJlYWtwb2ludCIp
KSk7CiAgICAgdjg6OkRlYnVnOjpDYWxsKHJlbW92ZUJyZWFrcG9pbnRGdW5jdGlvbiwgYXJncyk7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmggYi9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmgKaW5kZXggNDBkZDVmY2ZlMTRl
NjI5MThiNzdmNmYzMzM3YjQ5Nzk0YjEwYWY5OS4uNWM1ZDZjNmM5NjYxYzI1MzI1MmUyMmQzMWZi
MTdkNTBjNGU2MzU4NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1
Z1NlcnZlci5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaApA
QCAtNTUsOCArNTUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRMaXN0ZW5lcihTY3JpcHREZWJ1
Z0xpc3RlbmVyKiwgUGFnZSopOwogICAgIHZvaWQgcmVtb3ZlTGlzdGVuZXIoU2NyaXB0RGVidWdM
aXN0ZW5lciosIFBhZ2UqKTsKIAotICAgIFN0cmluZyBzZXRCcmVha3BvaW50KGNvbnN0IFN0cmlu
ZyYgc291cmNlSUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgY29uZGl0aW9u
LCBib29sIGVuYWJsZWQsIHVuc2lnbmVkKiBhY3R1YWxMaW5lTnVtYmVyKTsKLSAgICB2b2lkIHJl
bW92ZUJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBicmVha3BvaW50SWQpOworICAgIGJvb2wgc2V0
QnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBTY3JpcHRCcmVha3BvaW50IGJyZWFr
cG9pbnQsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkKiBhY3R1YWxMaW5lTnVtYmVyKTsK
KyAgICB2b2lkIHJlbW92ZUJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgdW5zaWdu
ZWQgbGluZU51bWJlcik7CiAgICAgdm9pZCBjbGVhckJyZWFrcG9pbnRzKCk7CiAgICAgdm9pZCBz
ZXRCcmVha3BvaW50c0FjdGl2YXRlZChib29sIGFjdGl2YXRlZCk7CiAgICAgdm9pZCBhY3RpdmF0
ZUJyZWFrcG9pbnRzKCkgeyBzZXRCcmVha3BvaW50c0FjdGl2YXRlZCh0cnVlKTsgfQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbCBiL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvci5pZGwKaW5kZXggYTU5Mzg1NzEwMmU0YjlhNzJkN2UwNmIyYzE1ZmJlMjFhZmQ2
YzUxMy4uMTJlNzIzZDhhYTg3NjUxN2I0MmVlYWQ5ODg3NGVlMDI4ODU4NDYxOSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbAorKysgYi9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3IuaWRsCkBAIC0yMTgsOCArMjE4LDggQEAgbW9kdWxlIGNvcmUgewogICAgICAg
ICBbZG9tYWluPURlYnVnZ2VyXSB2b2lkIGFjdGl2YXRlQnJlYWtwb2ludHMoKTsKICAgICAgICAg
W2RvbWFpbj1EZWJ1Z2dlcl0gdm9pZCBkZWFjdGl2YXRlQnJlYWtwb2ludHMoKTsKIAotICAgICAg
ICBbZG9tYWluPURlYnVnZ2VyXSB2b2lkIHNldEJyZWFrcG9pbnQoaW4gU3RyaW5nIHNvdXJjZUlE
LCBpbiB1bnNpZ25lZCBpbnQgbGluZU51bWJlciwgaW4gU3RyaW5nIGNvbmRpdGlvbiwgaW4gYm9v
bGVhbiBlbmFibGVkLCBvdXQgU3RyaW5nIGJyZWFrcG9pbnRJZCwgb3V0IHVuc2lnbmVkIGludCBh
Y3R1YWxMaW5lTnVtYmVyKTsKLSAgICAgICAgW2RvbWFpbj1EZWJ1Z2dlcl0gdm9pZCByZW1vdmVC
cmVha3BvaW50KGluIFN0cmluZyBicmVha3BvaW50SWQpOworICAgICAgICBbZG9tYWluPURlYnVn
Z2VyXSB2b2lkIHNldEJyZWFrcG9pbnQoaW4gU3RyaW5nIHNvdXJjZUlELCBpbiB1bnNpZ25lZCBp
bnQgbGluZU51bWJlciwgaW4gYm9vbGVhbiBlbmFibGVkLCBpbiBTdHJpbmcgY29uZGl0aW9uLCBv
dXQgYm9vbGVhbiBzdWNjZXNzLCBvdXQgdW5zaWduZWQgaW50IGFjdHVhbExpbmVOdW1iZXIpOwor
ICAgICAgICBbZG9tYWluPURlYnVnZ2VyXSB2b2lkIHJlbW92ZUJyZWFrcG9pbnQoaW4gU3RyaW5n
IHNvdXJjZUlELCBpbiB1bnNpZ25lZCBsb25nIGxpbmVOdW1iZXIpOwogCiAgICAgICAgIFtkb21h
aW49SW5zcGVjdG9yXSB2b2lkIHNldFN0aWNreUJyZWFrcG9pbnRzKGluIE9iamVjdCBicmVha3Bv
aW50cyk7IC8vIEZJWE1FOiBNb3ZlIHRvIG5ld2x5IGludHJvZHVjZWQgQnJvd3NlckRlYnVnZ2Vy
LgogCkBAIC0yNDUsNyArMjQ1LDcgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICBbZG9tYWluPURl
YnVnZ2VyXSB2b2lkIGVkaXRTY3JpcHRTb3VyY2UoaW4gU3RyaW5nIHNvdXJjZUlELCBpbiBTdHJp
bmcgbmV3Q29udGVudCwgb3V0IGJvb2xlYW4gc3VjY2Vzcywgb3V0IFN0cmluZyByZXN1bHQsIG91
dCBWYWx1ZSBuZXdDYWxsRnJhbWVzKTsKICAgICAgICAgW2RvbWFpbj1EZWJ1Z2dlcl0gdm9pZCBn
ZXRTY3JpcHRTb3VyY2UoaW4gU3RyaW5nIHNvdXJjZUlELCBvdXQgU3RyaW5nIHNjcmlwdFNvdXJj
ZSk7CiAKLSAgICAgICAgW25vdGlmeSwgZG9tYWluPURlYnVnZ2VyXSB2b2lkIGJyZWFrcG9pbnRS
ZXNvbHZlZChvdXQgU3RyaW5nIGJyZWFrcG9pbnRJZCwgb3V0IFN0cmluZyBzb3VyY2VJRCwgb3V0
IHVuc2lnbmVkIGludCBsaW5lTnVtYmVyLCBvdXQgU3RyaW5nIGNvbmRpdGlvbiwgb3V0IGJvb2xl
YW4gZW5hYmxlZCwgb3V0IHVuc2lnbmVkIGludCBvcmlnaW5hbExpbmVOdW1iZXIpOworICAgICAg
ICBbbm90aWZ5LCBkb21haW49RGVidWdnZXJdIHZvaWQgYnJlYWtwb2ludFJlc3RvcmVkKG91dCBT
dHJpbmcgc291cmNlSUQsIG91dCBTdHJpbmcgdXJsLCBvdXQgaW50IGxpbmUsIG91dCBib29sZWFu
IGVuYWJsZWQsIG91dCBTdHJpbmcgY29uZGl0aW9uKTsgLy8gRklYTUU6IHNob3VsZCBiZSBicmVh
a3BvaW50UmVzb2x2ZWQKIAogI2lmIGRlZmluZWQoRU5BQkxFX1dPUktFUlMpICYmIEVOQUJMRV9X
T1JLRVJTCiAgICAgICAgIFtub3RpZnksIGRvbWFpbj1EZWJ1Z2dlcl0gdm9pZCBkaWRDcmVhdGVX
b3JrZXIob3V0IGxvbmcgaWQsIG91dCBTdHJpbmcgdXJsLCBvdXQgYm9vbGVhbiBpc1NoYXJlZCk7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNwcCBiL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuY3BwCmluZGV4IGViNGMwZTdhMWEyNTQ4
NGRmOTZhZTEzM2FkZWRhNTYzNTYyMDAyNmEuLjc5MWUzYTY5MmY5ODE5Zjg2YTExYTc4MGEyMmM2
OTUwNzQwNGNmNzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tl
bmQuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuY3BwCkBAIC00
Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9NQWdlbnQuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclN0b3JhZ2VBZ2VudC5oIgor
I2luY2x1ZGUgIlNjcmlwdEJyZWFrcG9pbnQuaCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlci5o
IgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGM4ODJjMTdhYWE2NzNmOGMwMjIxMTQyZTk3
ZDQ0NjhjNzQyMmFhODQuLjIzMzJkODc2MWVjOTkwNmQ5YWJmNTRhOWNiZjA4N2NkYTNkZTgyYjYg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisr
KyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC0xNTAsNiAr
MTUwLDcgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlKiBw
YWdlLCBJbnNwZWN0b3JDbGllbnQqIGNsaWVudCkKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJV
R0dFUikKICAgICAsIG1fYXR0YWNoRGVidWdnZXJXaGVuU2hvd24oZmFsc2UpCiAgICAgLCBtX2hh
c1hIUkJyZWFrcG9pbnRXaXRoRW1wdHlVUkwoZmFsc2UpCisgICAgLCBtX3N0aWNreUJyZWFrcG9p
bnRzUmVzdG9yZWQoZmFsc2UpCiAgICAgLCBtX3Byb2ZpbGVyQWdlbnQoSW5zcGVjdG9yUHJvZmls
ZXJBZ2VudDo6Y3JlYXRlKHRoaXMpKQogI2VuZGlmCiB7CkBAIC0xMzQ4LDcgKzEzNDksNiBAQCB2
b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmVuYWJsZURlYnVnZ2VyRnJvbUZyb250ZW5kKGJvb2wg
YWx3YXlzKQogICAgIEFTU0VSVChtX2luc3BlY3RlZFBhZ2UpOwogCiAgICAgbV9kZWJ1Z2dlckFn
ZW50ID0gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y3JlYXRlKHRoaXMsIG1fZnJvbnRlbmQuZ2V0
KCkpOwotICAgIHJlc3RvcmVTdGlja3lCcmVha3BvaW50cygpOwogCiAgICAgbV9mcm9udGVuZC0+
ZGVidWdnZXJXYXNFbmFibGVkKCk7CiB9CkBAIC0xMzk2LDYgKzEzOTYsMTAgQEAgdm9pZCBJbnNw
ZWN0b3JDb250cm9sbGVyOjpyZXN1bWUoKQogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRT
dGlja3lCcmVha3BvaW50cyhQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnJlYWtwb2ludHMp
CiB7CiAgICAgbV9zdGF0ZS0+c2V0T2JqZWN0KEluc3BlY3RvclN0YXRlOjpzdGlja3lCcmVha3Bv
aW50cywgYnJlYWtwb2ludHMpOworICAgIGlmICghbV9zdGlja3lCcmVha3BvaW50c1Jlc3RvcmVk
KSB7CisgICAgICAgIHJlc3RvcmVTdGlja3lCcmVha3BvaW50cygpOworICAgICAgICBtX3N0aWNr
eUJyZWFrcG9pbnRzUmVzdG9yZWQgPSB0cnVlOworICAgIH0KIH0KIAogdm9pZCBJbnNwZWN0b3JD
b250cm9sbGVyOjpyZXN0b3JlU3RpY2t5QnJlYWtwb2ludHMoKQpAQCAtMTQxNiw5ICsxNDIwLDgg
QEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpyZXN0b3JlU3RpY2t5QnJlYWtwb2ludHMoKQog
CiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnJlc3RvcmVTdGlja3lCcmVha3BvaW50KFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBicmVha3BvaW50KQogewotICAgIERFRklORV9TVEFUSUNf
TE9DQUwoU3RyaW5nLCBldmVudExpc3RlbmVyQnJlYWtwb2ludFR5cGUsICgiRXZlbnRMaXN0ZW5l
ciIpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgamF2YVNjcmlwdEJyZWFrcG9p
bnRUeXBlLCAoIkpTIikpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCB4aHJCcmVh
a3BvaW50VHlwZSwgKCJYSFIiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGV2
ZW50TGlzdGVuZXJOYXRpdmVCcmVha3BvaW50VHlwZSwgKCJFdmVudExpc3RlbmVyIikpOworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCB4aHJOYXRpdmVCcmVha3BvaW50VHlwZSwgKCJY
SFIiKSk7CiAKICAgICBpZiAoIWJyZWFrcG9pbnQpCiAgICAgICAgIHJldHVybjsKQEAgLTE0MjYs
MzMgKzE0MjksMTcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpyZXN0b3JlU3RpY2t5QnJl
YWtwb2ludChQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnIKICAgICBpZiAoIWJyZWFrcG9p
bnQtPmdldFN0cmluZygidHlwZSIsICZ0eXBlKSkKICAgICAgICAgcmV0dXJuOwogICAgIGJvb2wg
ZW5hYmxlZDsKLSAgICBpZiAoIWJyZWFrcG9pbnQtPmdldEJvb2xlYW4oImVuYWJsZWQiLCAmZW5h
YmxlZCkpCisgICAgaWYgKCFicmVha3BvaW50LT5nZXRCb29sZWFuKCJlbmFibGVkIiwgJmVuYWJs
ZWQpIHx8ICFlbmFibGVkKQogICAgICAgICByZXR1cm47CiAgICAgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gY29uZGl0aW9uID0gYnJlYWtwb2ludC0+Z2V0T2JqZWN0KCJjb25kaXRpb24iKTsKICAg
ICBpZiAoIWNvbmRpdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHR5cGUgPT0gZXZl
bnRMaXN0ZW5lckJyZWFrcG9pbnRUeXBlKSB7Ci0gICAgICAgIGlmICghZW5hYmxlZCkKLSAgICAg
ICAgICAgIHJldHVybjsKKyAgICBpZiAodHlwZSA9PSBldmVudExpc3RlbmVyTmF0aXZlQnJlYWtw
b2ludFR5cGUpIHsKICAgICAgICAgU3RyaW5nIGV2ZW50TmFtZTsKICAgICAgICAgaWYgKGNvbmRp
dGlvbi0+Z2V0U3RyaW5nKCJldmVudE5hbWUiLCAmZXZlbnROYW1lKSkKICAgICAgICAgICAgIHNl
dEV2ZW50TGlzdGVuZXJCcmVha3BvaW50KGV2ZW50TmFtZSk7Ci0gICAgfSBlbHNlIGlmICh0eXBl
ID09IGphdmFTY3JpcHRCcmVha3BvaW50VHlwZSkgewotICAgICAgICBTdHJpbmcgdXJsOwotICAg
ICAgICBpZiAoIWNvbmRpdGlvbi0+Z2V0U3RyaW5nKCJ1cmwiLCAmdXJsKSkKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgZG91YmxlIGxpbmVOdW1iZXI7Ci0gICAgICAgIGlmICghY29uZGl0
aW9uLT5nZXROdW1iZXIoImxpbmVOdW1iZXIiLCAmbGluZU51bWJlcikpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIFN0cmluZyBqYXZhU2NyaXB0Q29uZGl0aW9uOwotICAgICAgICBpZiAo
IWNvbmRpdGlvbi0+Z2V0U3RyaW5nKCJjb25kaXRpb24iLCAmamF2YVNjcmlwdENvbmRpdGlvbikp
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmIChtX2RlYnVnZ2VyQWdlbnQpCi0gICAg
ICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPnNldFN0aWNreUJyZWFrcG9pbnQodXJsLCBsaW5lTnVt
YmVyLCBqYXZhU2NyaXB0Q29uZGl0aW9uLCBlbmFibGVkKTsKLSAgICB9IGVsc2UgaWYgKHR5cGUg
PT0geGhyQnJlYWtwb2ludFR5cGUpIHsKLSAgICAgICAgaWYgKCFlbmFibGVkKQotICAgICAgICAg
ICAgcmV0dXJuOworICAgIH0gZWxzZSBpZiAodHlwZSA9PSB4aHJOYXRpdmVCcmVha3BvaW50VHlw
ZSkgewogICAgICAgICBTdHJpbmcgdXJsOwogICAgICAgICBpZiAoY29uZGl0aW9uLT5nZXRTdHJp
bmcoInVybCIsICZ1cmwpKQogICAgICAgICAgICAgc2V0WEhSQnJlYWtwb2ludCh1cmwpOwpAQCAt
MTUyNiw2ICsxNTEzLDI2IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkRXZhbHVhdGVG
b3JUZXN0SW5Gcm9udGVuZChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nCiAgICAgZnVuY3Rpb24u
Y2FsbCgpOwogfQogCisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCitTdHJpbmcgSW5z
cGVjdG9yQ29udHJvbGxlcjo6YnJlYWtwb2ludHNTZXR0aW5nS2V5KCkKK3sKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKFN0cmluZywga2V5UHJlZml4LCAoImJyZWFrcG9pbnRzOiIpKTsKKyAgICBy
ZXR1cm4ga2V5UHJlZml4ICsgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6bWQ1QmFzZTE2KG1faW5z
cGVjdGVkUGFnZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT51cmwoKS5zdHJpbmcoKSk7Cit9CisK
K1Bhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IEluc3BlY3RvckNvbnRyb2xsZXI6OmxvYWRCcmVh
a3BvaW50cygpCit7CisgICAgU3RyaW5nIGpzb25TdHJpbmc7CisgICAgbV9jbGllbnQtPnBvcHVs
YXRlU2V0dGluZyhicmVha3BvaW50c1NldHRpbmdLZXkoKSwgJmpzb25TdHJpbmcpOworICAgIHJl
dHVybiBJbnNwZWN0b3JWYWx1ZTo6cGFyc2VKU09OKGpzb25TdHJpbmcpOworfQorCit2b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6OnNhdmVCcmVha3BvaW50cyhQYXNzUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gYnJlYWtwb2ludHMpCit7CisgICAgbV9jbGllbnQtPnN0b3JlU2V0dGluZyhicmVha3Bv
aW50c1NldHRpbmdLZXkoKSwgYnJlYWtwb2ludHMtPnRvSlNPTlN0cmluZygpKTsKK30KKyNlbmRp
ZgorCiBzdGF0aWMgUGF0aCBxdWFkVG9QYXRoKGNvbnN0IEZsb2F0UXVhZCYgcXVhZCkKIHsKICAg
ICBQYXRoIHF1YWRQYXRoOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCmlu
ZGV4IGU1NzBjOThkYThjMTllODQ3MGMzODJmZTM5MTE1NzYwOTMzNmQ4YTcuLmY1NTA5MGM0YmY1
YTI2MDYwZGZiZWU2Yjc4Y2JlODY1ZDMxZjI1MmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmgKQEAgLTMzNSw2ICszMzUsMTMgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
ZGlkRXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBq
c29uUmVzdWx0KTsKIAorI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQorICAgIGZyaWVu
ZCBjbGFzcyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OworICAgIFN0cmluZyBicmVha3BvaW50c1Nl
dHRpbmdLZXkoKTsKKyAgICBQYXNzUmVmUHRyPEluc3BlY3RvclZhbHVlPiBsb2FkQnJlYWtwb2lu
dHMoKTsKKyAgICB2b2lkIHNhdmVCcmVha3BvaW50cyhQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4gYnJlYWtwb2ludHMpOworI2VuZGlmCisKICAgICBQYWdlKiBtX2luc3BlY3RlZFBhZ2U7CiAg
ICAgSW5zcGVjdG9yQ2xpZW50KiBtX2NsaWVudDsKICAgICBPd25QdHI8SW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ+IG1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7CkBAIC0zODgsNiArMzk1LDcgQEAg
cHJpdmF0ZToKICAgICBIYXNoU2V0PFN0cmluZz4gbV9ldmVudExpc3RlbmVyQnJlYWtwb2ludHM7
CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fWEhSQnJlYWtwb2ludHM7CiAgICAgYm9vbCBtX2hhc1hI
UkJyZWFrcG9pbnRXaXRoRW1wdHlVUkw7CisgICAgYm9vbCBtX3N0aWNreUJyZWFrcG9pbnRzUmVz
dG9yZWQ7CiAKICAgICBPd25QdHI8SW5zcGVjdG9yUHJvZmlsZXJBZ2VudD4gbV9wcm9maWxlckFn
ZW50OwogI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1
Z2dlckFnZW50LmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQu
Y3BwCmluZGV4IDAwNDY5ODliYjVkMjc1NjE1MTQ3Y2NkOWEzOWMxZGJiNDZmNDkwNzUuLjBiMThi
MGNlY2JlMGEyNTQwZmUxMGE5YmVkYWM1OWFiMDk0OTBlZGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC0zNyw5ICszNywxNiBAQAogI2luY2x1
ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5j
bHVkZSAiU2NyaXB0RGVidWdTZXJ2ZXIuaCIKKyNpbmNsdWRlIDx3dGYvTUQ1Lmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitzdGF0aWMgU3RyaW5nIGZvcm1hdEJyZWFrcG9pbnRJZChjb25zdCBTdHJpbmcmIHNvdXJjZUlE
LCB1bnNpZ25lZCBsaW5lTnVtYmVyKQoreworICAgIHJldHVybiBtYWtlU3RyaW5nKHNvdXJjZUlE
LCAnOicsIFN0cmluZzo6bnVtYmVyKGxpbmVOdW1iZXIpKTsKK30KKwogUGFzc093blB0cjxJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjcmVhdGUoSW5zcGVj
dG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgSW5zcGVjdG9yRnJvbnRlbmQqIGZy
b250ZW5kKQogewogICAgIE93blB0cjxJbnNwZWN0b3JEZWJ1Z2dlckFnZW50PiBhZ2VudCA9IGFk
b3B0UHRyKG5ldyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KGluc3BlY3RvckNvbnRyb2xsZXIsIGZy
b250ZW5kKSk7CkBAIC01NCw2ICs2MSw3IEBAIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Okluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29uCiAgICAg
OiBtX2luc3BlY3RvckNvbnRyb2xsZXIoaW5zcGVjdG9yQ29udHJvbGxlcikKICAgICAsIG1fZnJv
bnRlbmQoZnJvbnRlbmQpCiAgICAgLCBtX3BhdXNlZFNjcmlwdFN0YXRlKDApCisgICAgLCBtX2Jy
ZWFrcG9pbnRzTG9hZGVkKGZhbHNlKQogICAgICwgbV9qYXZhU2NyaXB0UGF1c2VTY2hlZHVsZWQo
ZmFsc2UpCiB7CiB9CkBAIC03OSwzNyArODcsNDkgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpkZWFjdGl2YXRlQnJlYWtwb2ludHMoKQogICAgIFNjcmlwdERlYnVnU2VydmVyOjpzaGFy
ZWQoKS5kZWFjdGl2YXRlQnJlYWtwb2ludHMoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpzZXRTdGlja3lCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgdXJsLCB1bnNpZ25lZCBs
aW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIGNvbmRpdGlvbiwgYm9vbCBlbmFibGVkKQordm9pZCBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgc291cmNl
SUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGJvb2wgZW5hYmxlZCwgY29uc3QgU3RyaW5nJiBjb25k
aXRpb24sIGJvb2wqIHN1Y2Nlc3MsIHVuc2lnbmVkIGludCogYWN0dWFsTGluZU51bWJlcikKIHsK
LSAgICBIYXNoTWFwPFN0cmluZywgU2NyaXB0QnJlYWtwb2ludHM+OjppdGVyYXRvciBpdCA9IG1f
c3RpY2t5QnJlYWtwb2ludHMuZmluZCh1cmwpOwotICAgIGlmIChpdCA9PSBtX3N0aWNreUJyZWFr
cG9pbnRzLmVuZCgpKQotICAgICAgICBpdCA9IG1fc3RpY2t5QnJlYWtwb2ludHMuc2V0KHVybCwg
U2NyaXB0QnJlYWtwb2ludHMoKSkuZmlyc3Q7Ci0gICAgaXQtPnNlY29uZC5zZXQobGluZU51bWJl
ciwgQnJlYWtwb2ludChjb25kaXRpb24sIGVuYWJsZWQpKTsKKyAgICBTY3JpcHRCcmVha3BvaW50
IGJyZWFrcG9pbnQoZW5hYmxlZCwgY29uZGl0aW9uKTsKKyAgICAqc3VjY2VzcyA9IFNjcmlwdERl
YnVnU2VydmVyOjpzaGFyZWQoKS5zZXRCcmVha3BvaW50KHNvdXJjZUlELCBicmVha3BvaW50LCBs
aW5lTnVtYmVyLCBhY3R1YWxMaW5lTnVtYmVyKTsKKyAgICBpZiAoISpzdWNjZXNzKQorICAgICAg
ICByZXR1cm47CiAKLSAgICBVUkxUb1NvdXJjZUlEc01hcDo6aXRlcmF0b3IgdXJsVG9Tb3VyY2VJ
RHNJdGVyYXRvciA9IG1fdXJsVG9Tb3VyY2VJRHMuZmluZCh1cmwpOwotICAgIGlmICh1cmxUb1Nv
dXJjZUlEc0l0ZXJhdG9yID09IG1fdXJsVG9Tb3VyY2VJRHMuZW5kKCkpCisgICAgU3RyaW5nIHVy
bCA9IG1fc291cmNlSURUb1VSTC5nZXQoc291cmNlSUQpOworICAgIGlmICh1cmwuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47Ci0gICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHNvdXJjZUlEcyA9
IHVybFRvU291cmNlSURzSXRlcmF0b3ItPnNlY29uZDsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHNvdXJjZUlEcy5zaXplKCk7ICsraSkKLSAgICAgICAgcmVzdG9yZUJyZWFrcG9pbnQoc291
cmNlSURzW2ldLCBsaW5lTnVtYmVyLCBjb25kaXRpb24sIGVuYWJsZWQpOwotfQogCi12b2lkIElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBzb3VyY2VJ
RCwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBjb25kaXRpb24sIGJvb2wgZW5h
YmxlZCwgU3RyaW5nKiBicmVha3BvaW50SWQsIHVuc2lnbmVkIGludCogYWN0dWFsTGluZU51bWJl
cikKLXsKLSAgICAqYnJlYWtwb2ludElkID0gU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLnNl
dEJyZWFrcG9pbnQoc291cmNlSUQsIGxpbmVOdW1iZXIsIGNvbmRpdGlvbiwgZW5hYmxlZCwgYWN0
dWFsTGluZU51bWJlcik7Ci19CisgICAgU3RyaW5nIGJyZWFrcG9pbnRJZCA9IGZvcm1hdEJyZWFr
cG9pbnRJZChzb3VyY2VJRCwgKmFjdHVhbExpbmVOdW1iZXIpOworICAgIG1fYnJlYWtwb2ludHNN
YXBwaW5nLnNldChicmVha3BvaW50SWQsICphY3R1YWxMaW5lTnVtYmVyKTsKIAotdm9pZCBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpyZW1vdmVCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgYnJlYWtw
b2ludElkKQotewotICAgIFNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5yZW1vdmVCcmVha3Bv
aW50KGJyZWFrcG9pbnRJZCk7CisgICAgU3RyaW5nIGtleSA9IG1kNUJhc2UxNih1cmwpOworICAg
IEhhc2hNYXA8U3RyaW5nLCBTb3VyY2VCcmVha3BvaW50cz46Oml0ZXJhdG9yIGl0ID0gbV9zdGlj
a3lCcmVha3BvaW50cy5maW5kKGtleSk7CisgICAgaWYgKGl0ID09IG1fc3RpY2t5QnJlYWtwb2lu
dHMuZW5kKCkpCisgICAgICAgIGl0ID0gbV9zdGlja3lCcmVha3BvaW50cy5zZXQoa2V5LCBTb3Vy
Y2VCcmVha3BvaW50cygpKS5maXJzdDsKKyAgICBpdC0+c2Vjb25kLnNldCgqYWN0dWFsTGluZU51
bWJlciwgYnJlYWtwb2ludCk7CisgICAgc2F2ZUJyZWFrcG9pbnRzKCk7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6cmVzdG9yZUJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBzb3Vy
Y2VJRCwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBjb25kaXRpb24sIGJvb2wg
ZW5hYmxlZCkKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVtb3ZlQnJlYWtwb2ludChj
b25zdCBTdHJpbmcmIHNvdXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVyKQogewotICAgIHVuc2ln
bmVkIGFjdHVhbExpbmVOdW1iZXIgPSAwOwotICAgIFN0cmluZyBicmVha3BvaW50SWQgPSBTY3Jp
cHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuc2V0QnJlYWtwb2ludChzb3VyY2VJRCwgbGluZU51bWJl
ciwgY29uZGl0aW9uLCBlbmFibGVkLCAmYWN0dWFsTGluZU51bWJlcik7Ci0gICAgaWYgKCFicmVh
a3BvaW50SWQuaXNFbXB0eSgpKQotICAgICAgICBtX2Zyb250ZW5kLT5icmVha3BvaW50UmVzb2x2
ZWQoYnJlYWtwb2ludElkLCBzb3VyY2VJRCwgYWN0dWFsTGluZU51bWJlciwgY29uZGl0aW9uLCBl
bmFibGVkLCBsaW5lTnVtYmVyKTsKKyAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkucmVt
b3ZlQnJlYWtwb2ludChzb3VyY2VJRCwgbGluZU51bWJlcik7CisKKyAgICBTdHJpbmcgdXJsID0g
bV9zb3VyY2VJRFRvVVJMLmdldChzb3VyY2VJRCk7CisgICAgaWYgKHVybC5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIFN0cmluZyBicmVha3BvaW50SWQgPSBmb3JtYXRCcmVha3Bv
aW50SWQoc291cmNlSUQsIGxpbmVOdW1iZXIpOworICAgIEhhc2hNYXA8U3RyaW5nLCB1bnNpZ25l
ZD46Oml0ZXJhdG9yIG1hcHBpbmdJdCA9IG1fYnJlYWtwb2ludHNNYXBwaW5nLmZpbmQoYnJlYWtw
b2ludElkKTsKKyAgICBpZiAobWFwcGluZ0l0ID09IG1fYnJlYWtwb2ludHNNYXBwaW5nLmVuZCgp
KQorICAgICAgICByZXR1cm47CisgICAgdW5zaWduZWQgc3RpY2t5TGluZSA9IG1hcHBpbmdJdC0+
c2Vjb25kOworICAgIG1fYnJlYWtwb2ludHNNYXBwaW5nLnJlbW92ZShtYXBwaW5nSXQpOworCisg
ICAgSGFzaE1hcDxTdHJpbmcsIFNvdXJjZUJyZWFrcG9pbnRzPjo6aXRlcmF0b3IgaXQgPSBtX3N0
aWNreUJyZWFrcG9pbnRzLmZpbmQobWQ1QmFzZTE2KHVybCkpOworICAgIGlmIChpdCA9PSBtX3N0
aWNreUJyZWFrcG9pbnRzLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpdC0+c2Vjb25k
LnJlbW92ZShzdGlja3lMaW5lKTsKKyAgICBzYXZlQnJlYWtwb2ludHMoKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjplZGl0U2NyaXB0U291cmNlKGNvbnN0IFN0cmluZyYgc291
cmNlSUQsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVudCwgYm9vbCogc3VjY2VzcywgU3RyaW5nKiBy
ZXN1bHQsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIG5ld0NhbGxGcmFtZXMpCkBAIC0xODAsOSAr
MjAwLDI4IEBAIGxvbmcgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cGF1c2VPbkV4Y2VwdGlvbnNT
dGF0ZSgpCiAKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2xlYXJGb3JQYWdlTmF2aWdh
dGlvbigpCiB7CisgICAgbV9zb3VyY2VJRFRvVVJMLmNsZWFyKCk7CiAgICAgbV9zY3JpcHRJRFRv
Q29udGVudC5jbGVhcigpOwotICAgIG1fdXJsVG9Tb3VyY2VJRHMuY2xlYXIoKTsKICAgICBtX3N0
aWNreUJyZWFrcG9pbnRzLmNsZWFyKCk7CisgICAgbV9icmVha3BvaW50c01hcHBpbmcuY2xlYXIo
KTsKKyAgICBtX2JyZWFrcG9pbnRzTG9hZGVkID0gZmFsc2U7Cit9CisKK1N0cmluZyBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjptZDVCYXNlMTYoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAg
c3RhdGljIGNvbnN0IGNoYXIgZGlnaXRzW10gPSAiMDEyMzQ1Njc4OWFiY2RlZiI7CisKKyAgICBN
RDUgbWQ1OworICAgIG1kNS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihzdHJpbmcuY2hhcmFjdGVycygpKSwgc3RyaW5nLmxlbmd0aCgpICogMik7CisgICAgVmVjdG9y
PHVpbnQ4X3QsIDE2PiBkaWdlc3Q7CisgICAgbWQ1LmNoZWNrc3VtKGRpZ2VzdCk7CisKKyAgICBW
ZWN0b3I8Y2hhciwgMzI+IHJlc3VsdDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDE2OyArK2kp
IHsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChkaWdpdHNbKGRpZ2VzdFtpXSA+PiA0KSAmIDB4Zl0p
OworICAgICAgICByZXN1bHQuYXBwZW5kKGRpZ2l0c1tkaWdlc3RbaV0gJiAweGZdKTsKKyAgICB9
CisgICAgcmV0dXJuIFN0cmluZyhyZXN1bHQuZGF0YSgpLCByZXN1bHQuc2l6ZSgpKTsKIH0KIAog
UGFzc1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y3VycmVu
dENhbGxGcmFtZXMoKQpAQCAtMTk3LDYgKzIzNiwzOSBAQCBQYXNzUmVmUHRyPEluc3BlY3RvclZh
bHVlPiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjdXJyZW50Q2FsbEZyYW1lcygpCiAgICAgcmV0
dXJuIGluamVjdGVkU2NyaXB0LmNhbGxGcmFtZXMoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50Ojpsb2FkQnJlYWtwb2ludHMoKQoreworICAgIGlmIChtX2JyZWFrcG9pbnRzTG9h
ZGVkKQorICAgICAgICByZXR1cm47CisgICAgbV9icmVha3BvaW50c0xvYWRlZCA9IHRydWU7CisK
KyAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHBhcnNlZFNldHRpbmcgPSBtX2luc3BlY3RvckNv
bnRyb2xsZXItPmxvYWRCcmVha3BvaW50cygpOworICAgIGlmICghcGFyc2VkU2V0dGluZykKKyAg
ICAgICAgcmV0dXJuOworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJyZWFrcG9pbnRzID0g
cGFyc2VkU2V0dGluZy0+YXNPYmplY3QoKTsKKyAgICBpZiAoIWJyZWFrcG9pbnRzKQorICAgICAg
ICByZXR1cm47CisgICAgZm9yIChJbnNwZWN0b3JPYmplY3Q6Oml0ZXJhdG9yIGl0ID0gYnJlYWtw
b2ludHMtPmJlZ2luKCk7IGl0ICE9IGJyZWFrcG9pbnRzLT5lbmQoKTsgKytpdCkgeworICAgICAg
ICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBicmVha3BvaW50c0ZvclVSTCA9IGl0LT5zZWNvbmQt
PmFzT2JqZWN0KCk7CisgICAgICAgIGlmICghYnJlYWtwb2ludHNGb3JVUkwpCisgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFNvdXJjZUJyZWFrcG9pbnRzPjo6
aXRlcmF0b3Igc291cmNlQnJlYWtwb2ludHNJdCA9IG1fc3RpY2t5QnJlYWtwb2ludHMuc2V0KGl0
LT5maXJzdCwgU291cmNlQnJlYWtwb2ludHMoKSkuZmlyc3Q7CisgICAgICAgIFNjcmlwdEJyZWFr
cG9pbnQ6OnNvdXJjZUJyZWFrcG9pbnRzRnJvbUluc3BlY3Rvck9iamVjdChicmVha3BvaW50c0Zv
clVSTCwgJnNvdXJjZUJyZWFrcG9pbnRzSXQtPnNlY29uZCk7CisgICAgfQorfQorCit2b2lkIElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNhdmVCcmVha3BvaW50cygpCit7CisgICAgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gYnJlYWtwb2ludHMgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwor
ICAgIGZvciAoSGFzaE1hcDxTdHJpbmcsIFNvdXJjZUJyZWFrcG9pbnRzPjo6aXRlcmF0b3IgaXQo
bV9zdGlja3lCcmVha3BvaW50cy5iZWdpbigpKTsgaXQgIT0gbV9zdGlja3lCcmVha3BvaW50cy5l
bmQoKTsgKytpdCkgeworICAgICAgICBpZiAoaXQtPnNlY29uZC5pc0VtcHR5KCkpCisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnJlYWtwb2lu
dHNGb3JVUkwgPSBTY3JpcHRCcmVha3BvaW50OjppbnNwZWN0b3JPYmplY3RGcm9tU291cmNlQnJl
YWtwb2ludHMoaXQtPnNlY29uZCk7CisgICAgICAgIGJyZWFrcG9pbnRzLT5zZXRPYmplY3QoaXQt
PmZpcnN0LCBicmVha3BvaW50c0ZvclVSTCk7CisgICAgfQorICAgIG1faW5zcGVjdG9yQ29udHJv
bGxlci0+c2F2ZUJyZWFrcG9pbnRzKGJyZWFrcG9pbnRzKTsKK30KKwogLy8gSmF2YVNjcmlwdERl
YnVnTGlzdGVuZXIgZnVuY3Rpb25zCiAKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlk
UGFyc2VTb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFN0cmluZyYgZGF0YSwgaW50IGZpcnN0TGluZSwgU2NyaXB0V29ybGRUeXBlIHdvcmxkVHlw
ZSkKQEAgLTIwOSwyMCArMjgxLDIzIEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlk
UGFyc2VTb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3QgU3RyaW5nCiAgICAgaWYg
KHVybC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFVSTFRvU291cmNlSURzTWFw
OjppdGVyYXRvciB1cmxUb1NvdXJjZUlEc0l0ZXJhdG9yID0gbV91cmxUb1NvdXJjZUlEcy5maW5k
KHVybCk7Ci0gICAgaWYgKHVybFRvU291cmNlSURzSXRlcmF0b3IgPT0gbV91cmxUb1NvdXJjZUlE
cy5lbmQoKSkKLSAgICAgICAgdXJsVG9Tb3VyY2VJRHNJdGVyYXRvciA9IG1fdXJsVG9Tb3VyY2VJ
RHMuc2V0KHVybCwgVmVjdG9yPFN0cmluZz4oKSkuZmlyc3Q7Ci0gICAgdXJsVG9Tb3VyY2VJRHNJ
dGVyYXRvci0+c2Vjb25kLmFwcGVuZChzb3VyY2VJRCk7Ci0KLSAgICBIYXNoTWFwPFN0cmluZywg
U2NyaXB0QnJlYWtwb2ludHM+OjppdGVyYXRvciBzdGlja3lCcmVha3BvaW50c0l0ZXJhdG9yID0g
bV9zdGlja3lCcmVha3BvaW50cy5maW5kKHVybCk7Ci0gICAgaWYgKHN0aWNreUJyZWFrcG9pbnRz
SXRlcmF0b3IgPT0gbV9zdGlja3lCcmVha3BvaW50cy5lbmQoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgY29uc3QgU2NyaXB0QnJlYWtwb2ludHMmIGJyZWFrcG9pbnRzID0gc3RpY2t5QnJlYWtw
b2ludHNJdGVyYXRvci0+c2Vjb25kOwotICAgIGZvciAoU2NyaXB0QnJlYWtwb2ludHM6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gYnJlYWtwb2ludHMuYmVnaW4oKTsgaXQgIT0gYnJlYWtwb2ludHMuZW5k
KCk7ICsraXQpIHsKLSAgICAgICAgY29uc3QgQnJlYWtwb2ludCYgYnJlYWtwb2ludCA9IGl0LT5z
ZWNvbmQ7Ci0gICAgICAgIHJlc3RvcmVCcmVha3BvaW50KHNvdXJjZUlELCBpdC0+Zmlyc3QsIGJy
ZWFrcG9pbnQuZmlyc3QsIGJyZWFrcG9pbnQuc2Vjb25kKTsKKyAgICBsb2FkQnJlYWtwb2ludHMo
KTsKKyAgICBIYXNoTWFwPFN0cmluZywgU291cmNlQnJlYWtwb2ludHM+OjppdGVyYXRvciBpdCA9
IG1fc3RpY2t5QnJlYWtwb2ludHMuZmluZChtZDVCYXNlMTYodXJsKSk7CisgICAgaWYgKGl0ICE9
IG1fc3RpY2t5QnJlYWtwb2ludHMuZW5kKCkpIHsKKyAgICAgICAgZm9yIChTb3VyY2VCcmVha3Bv
aW50czo6aXRlcmF0b3IgYnJlYWtwb2ludEl0ID0gaXQtPnNlY29uZC5iZWdpbigpOyBicmVha3Bv
aW50SXQgIT0gaXQtPnNlY29uZC5lbmQoKTsgKyticmVha3BvaW50SXQpIHsKKyAgICAgICAgICAg
IGludCBsaW5lTnVtYmVyID0gYnJlYWtwb2ludEl0LT5maXJzdDsKKyAgICAgICAgICAgIGlmIChm
aXJzdExpbmUgPiBsaW5lTnVtYmVyKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgdW5zaWduZWQgYWN0dWFsTGluZU51bWJlciA9IDA7CisgICAgICAgICAgICBib29sIHN1
Y2Nlc3MgPSBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuc2V0QnJlYWtwb2ludChzb3VyY2VJ
RCwgYnJlYWtwb2ludEl0LT5zZWNvbmQsIGxpbmVOdW1iZXIsICZhY3R1YWxMaW5lTnVtYmVyKTsK
KyAgICAgICAgICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIG1fZnJvbnRlbmQtPmJyZWFrcG9pbnRSZXN0b3JlZChzb3VyY2VJRCwgdXJsLCBh
Y3R1YWxMaW5lTnVtYmVyLCBicmVha3BvaW50SXQtPnNlY29uZC5lbmFibGVkLCBicmVha3BvaW50
SXQtPnNlY29uZC5jb25kaXRpb24pOworICAgICAgICAgICAgU3RyaW5nIGJyZWFrcG9pbnRJZCA9
IGZvcm1hdEJyZWFrcG9pbnRJZChzb3VyY2VJRCwgYWN0dWFsTGluZU51bWJlcik7CisgICAgICAg
ICAgICBtX2JyZWFrcG9pbnRzTWFwcGluZy5zZXQoYnJlYWtwb2ludElkLCBsaW5lTnVtYmVyKTsK
KyAgICAgICAgfQogICAgIH0KKyAgICBtX3NvdXJjZUlEVG9VUkwuc2V0KHNvdXJjZUlELCB1cmwp
OwogfQogCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmZhaWxlZFRvUGFyc2VTb3VyY2Uo
Y29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgZGF0YSwgaW50IGZpcnN0TGluZSwgaW50
IGVycm9yTGluZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggYi9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKaW5kZXggNmU0NWU1OWZlODA3ZjFkNGFmNjZkOTQ5
OGU5NjlmY2JkNWM3YzhkNC4uYWRjOTI1YWMzMDk1NmZjZmU0NTJhMTFmYWIxMjk1NWFiZTI0MTBk
OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5o
CisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaApAQCAtMzEs
MTIgKzMxLDEyIEBACiAjZGVmaW5lIEluc3BlY3RvckRlYnVnZ2VyQWdlbnRfaAogCiAjaWYgRU5B
QkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJMRShJTlNQRUNUT1IpCisjaW5jbHVkZSAi
U2NyaXB0QnJlYWtwb2ludC5oIgogI2luY2x1ZGUgIlNjcmlwdERlYnVnTGlzdGVuZXIuaCIKICNp
bmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTYxLDkgKzYxLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBhY3Rp
dmF0ZUJyZWFrcG9pbnRzKCk7CiAgICAgdm9pZCBkZWFjdGl2YXRlQnJlYWtwb2ludHMoKTsKLSAg
ICB2b2lkIHNldFN0aWNreUJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiB1cmwsIHVuc2lnbmVkIGxp
bmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgY29uZGl0aW9uLCBib29sIGVuYWJsZWQpOwotICAgIHZv
aWQgc2V0QnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHNvdXJjZUlELCB1bnNpZ25lZCBsaW5lTnVt
YmVyLCBjb25zdCBTdHJpbmcmIGNvbmRpdGlvbiwgYm9vbCBlbmFibGVkLCBTdHJpbmcqIGJyZWFr
cG9pbnRJZCwgdW5zaWduZWQgaW50KiBhY3R1YWxMaW5lTnVtYmVyKTsKLSAgICB2b2lkIHJlbW92
ZUJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBicmVha3BvaW50SWQpOworICAgIHZvaWQgc2V0QnJl
YWtwb2ludChjb25zdCBTdHJpbmcmIHNvdXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBib29s
IGVuYWJsZWQsIGNvbnN0IFN0cmluZyYgY29uZGl0aW9uLCBib29sKiBzdWNjZXNzLCB1bnNpZ25l
ZCBpbnQqIGFjdHVhbExpbmVOdW1iZXIpOworICAgIHZvaWQgcmVtb3ZlQnJlYWtwb2ludChjb25z
dCBTdHJpbmcmIHNvdXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVyKTsKIAogICAgIHZvaWQgZWRp
dFNjcmlwdFNvdXJjZShjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTdHJpbmcmIG5ld0Nv
bnRlbnQsIGJvb2wqIHN1Y2Nlc3MsIFN0cmluZyogcmVzdWx0LCBSZWZQdHI8SW5zcGVjdG9yVmFs
dWU+KiBuZXdDYWxsRnJhbWVzKTsKICAgICB2b2lkIGdldFNjcmlwdFNvdXJjZShjb25zdCBTdHJp
bmcmIHNvdXJjZUlELCBTdHJpbmcqIHNjcmlwdFNvdXJjZSk7CkBAIC04MiwyNyArODEsMzAgQEAg
cHVibGljOgogCiAgICAgdm9pZCBjbGVhckZvclBhZ2VOYXZpZ2F0aW9uKCk7CiAKKyAgICBzdGF0
aWMgU3RyaW5nIG1kNUJhc2UxNihjb25zdCBTdHJpbmcmIHN0cmluZyk7CisKIHByaXZhdGU6CiAg
ICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudChJbnNwZWN0b3JDb250cm9sbGVyKiwgSW5zcGVjdG9y
RnJvbnRlbmQqKTsKIAogICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGN1cnJlbnRDYWxs
RnJhbWVzKCk7CiAKKyAgICB2b2lkIGxvYWRCcmVha3BvaW50cygpOworICAgIHZvaWQgc2F2ZUJy
ZWFrcG9pbnRzKCk7CisKICAgICB2aXJ0dWFsIHZvaWQgZGlkUGFyc2VTb3VyY2UoY29uc3QgU3Ry
aW5nJiBzb3VyY2VJRCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgZGF0YSwgaW50
IGZpcnN0TGluZSwgU2NyaXB0V29ybGRUeXBlKTsKICAgICB2aXJ0dWFsIHZvaWQgZmFpbGVkVG9Q
YXJzZVNvdXJjZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBkYXRhLCBpbnQgZmly
c3RMaW5lLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CiAgICAg
dmlydHVhbCB2b2lkIGRpZFBhdXNlKFNjcmlwdFN0YXRlKik7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZENvbnRpbnVlKCk7CiAKLSAgICB2b2lkIHJlc3RvcmVCcmVha3BvaW50KGNvbnN0IFN0cmluZyYg
c291cmNlSUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgY29uZGl0aW9uLCBi
b29sIGVuYWJsZWQpOwotCiAgICAgSW5zcGVjdG9yQ29udHJvbGxlciogbV9pbnNwZWN0b3JDb250
cm9sbGVyOwogICAgIEluc3BlY3RvckZyb250ZW5kKiBtX2Zyb250ZW5kOwogICAgIFNjcmlwdFN0
YXRlKiBtX3BhdXNlZFNjcmlwdFN0YXRlOworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1f
c291cmNlSURUb1VSTDsKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtX3NjcmlwdElEVG9D
b250ZW50OwotICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+ID4gVVJM
VG9Tb3VyY2VJRHNNYXA7Ci0gICAgVVJMVG9Tb3VyY2VJRHNNYXAgbV91cmxUb1NvdXJjZUlEczsK
LSAgICB0eXBlZGVmIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IEJyZWFrcG9pbnQ7Ci0gICAgdHlw
ZWRlZiBIYXNoTWFwPHVuc2lnbmVkLCBCcmVha3BvaW50PiBTY3JpcHRCcmVha3BvaW50czsKLSAg
ICBIYXNoTWFwPFN0cmluZywgU2NyaXB0QnJlYWtwb2ludHM+IG1fc3RpY2t5QnJlYWtwb2ludHM7
CisgICAgSGFzaE1hcDxTdHJpbmcsIFNvdXJjZUJyZWFrcG9pbnRzPiBtX3N0aWNreUJyZWFrcG9p
bnRzOworICAgIEhhc2hNYXA8U3RyaW5nLCB1bnNpZ25lZD4gbV9icmVha3BvaW50c01hcHBpbmc7
CisgICAgYm9vbCBtX2JyZWFrcG9pbnRzTG9hZGVkOworICAgIHN0YXRpYyBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50KiBzX2RlYnVnZ2VyQWdlbnRPbkJyZWFrcG9pbnQ7CiAgICAgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4gbV9icmVha1Byb2dyYW1EZXRhaWxzOwogICAgIGJvb2wgbV9qYXZhU2NyaXB0
UGF1c2VTY2hlZHVsZWQ7CiB9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0JyZWFrcG9pbnQuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2lu
dC5qcwppbmRleCBkZDBjZTEyNmI4NDIxOGFhZDFjODdhNjJjZTBiNmZmZjk1MWE3OWFkLi4zMmE2
YTNkY2MwM2RjYWIyOThiYzM4YzUwMTYxNGQ5NmE5ZmJlNDg4IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludC5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvQnJlYWtwb2ludC5qcwpAQCAtMjksOSArMjksOCBAQAogICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQnJlYWtwb2ludCA9IGZ1bmN0aW9uKGRlYnVnZ2VyTW9k
ZWwsIGJyZWFrcG9pbnRJZCwgc291cmNlSUQsIHVybCwgbGluZSwgZW5hYmxlZCwgY29uZGl0aW9u
KQorV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQgPSBmdW5jdGlvbihkZWJ1Z2dlck1vZGVsLCBzb3Vy
Y2VJRCwgdXJsLCBsaW5lLCBlbmFibGVkLCBjb25kaXRpb24pCiB7Ci0gICAgdGhpcy5pZCA9IGJy
ZWFrcG9pbnRJZDsKICAgICB0aGlzLnVybCA9IHVybDsKICAgICB0aGlzLmxpbmUgPSBsaW5lOwog
ICAgIHRoaXMuc291cmNlSUQgPSBzb3VyY2VJRDsKQEAgLTQyLDEyICs0MSwyNyBAQCBXZWJJbnNw
ZWN0b3IuQnJlYWtwb2ludCA9IGZ1bmN0aW9uKGRlYnVnZ2VyTW9kZWwsIGJyZWFrcG9pbnRJZCwg
c291cmNlSUQsIHVybCwgbAogICAgIHRoaXMuX2RlYnVnZ2VyTW9kZWwgPSBkZWJ1Z2dlck1vZGVs
OwogfQogCitXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5qc0JyZWFrcG9pbnRJZCA9IGZ1bmN0aW9u
KHNvdXJjZUlELCBsaW5lKQoreworICAgIHJldHVybiBzb3VyY2VJRCArICI6IiArIGxpbmU7Cit9
CisKIFdlYkluc3BlY3Rvci5CcmVha3BvaW50LnByb3RvdHlwZSA9IHsKICAgICBnZXQgZW5hYmxl
ZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZW5hYmxlZDsKICAgICB9LAogCisgICAg
c2V0IGVuYWJsZWQoeCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9lbmFibGVkID09PSB4KQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX2VuYWJsZWQgPSB4OworICAgICAg
ICB0aGlzLl9kZWJ1Z2dlck1vZGVsLl9zZXRCcmVha3BvaW50T25CYWNrZW5kKHRoaXMpOworICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycygiZW5hYmxlLWNoYW5nZWQiKTsKKyAg
ICB9LAorCiAgICAgZ2V0IHNvdXJjZVRleHQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X3NvdXJjZVRleHQ7CkBAIC01OSwxMSArNzMsMjggQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQu
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycygibGFi
ZWwtY2hhbmdlZCIpOwogICAgIH0sCiAKKyAgICBnZXQgaWQoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIFdlYkluc3BlY3Rvci5CcmVha3BvaW50LmpzQnJlYWtwb2ludElkKHRoaXMuc291cmNlSUQs
IHRoaXMubGluZSk7CisgICAgfSwKKwogICAgIGdldCBjb25kaXRpb24oKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX2NvbmRpdGlvbjsKICAgICB9LAogCisgICAgc2V0IGNvbmRpdGlvbihj
KQorICAgIHsKKyAgICAgICAgYyA9IGMgfHwgIiI7CisgICAgICAgIGlmICh0aGlzLl9jb25kaXRp
b24gPT09IGMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fY29uZGl0aW9u
ID0gYzsKKyAgICAgICAgaWYgKHRoaXMuZW5hYmxlZCkKKyAgICAgICAgICAgIHRoaXMuX2RlYnVn
Z2VyTW9kZWwuX3NldEJyZWFrcG9pbnRPbkJhY2tlbmQodGhpcyk7CisgICAgICAgIHRoaXMuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJjb25kaXRpb24tY2hhbmdlZCIpOworICAgIH0sCisKICAg
ICBnZXQgaGl0KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9oaXQ7CkBAIC0xMDMsNyAr
MTM0LDcgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQucHJvdG90eXBlID0gewogCiAgICAgcmVt
b3ZlOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB0aGlzLl9kZWJ1Z2dlck1vZGVsLnJlbW92
ZUJyZWFrcG9pbnQodGhpcy5pZCk7CisgICAgICAgIEluc3BlY3RvckJhY2tlbmQucmVtb3ZlQnJl
YWtwb2ludCh0aGlzLnNvdXJjZUlELCB0aGlzLmxpbmUpOwogICAgICAgICB0aGlzLmRpc3BhdGNo
RXZlbnRUb0xpc3RlbmVycygicmVtb3ZlZCIpOwogICAgICAgICB0aGlzLnJlbW92ZUFsbExpc3Rl
bmVycygpOwogICAgICAgICBkZWxldGUgdGhpcy5fZGVidWdnZXJNb2RlbDsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50TWFuYWdlci5qcyBiL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50TWFuYWdlci5qcwppbmRleCA4MmI1NWIx
YzI0OGNiM2JiNjNjOTU0YTNjNmZjZTUyNDUyYzU5NDA1Li42MDRkYTYwOGU4ZGU1MTdlY2NlYzQw
YTlmY2Y5MDM4N2RhOTgzNzIxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvQnJlYWtwb2ludE1hbmFnZXIuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0JyZWFrcG9pbnRNYW5hZ2VyLmpzCkBAIC0zNiwyMCArMzYsMTYgQEAgV2ViSW5zcGVjdG9yLkJy
ZWFrcG9pbnRNYW5hZ2VyID0gZnVuY3Rpb24oKQogICAgICAgICB0aGlzLl9zdGlja3lCcmVha3Bv
aW50c1twcm9qZWN0SWRdID0gdGhpcy5fdmFsaWRhdGVCcmVha3BvaW50cyhicmVha3BvaW50c1tw
cm9qZWN0SWRdKTsKICAgICBJbnNwZWN0b3JCYWNrZW5kLnNldFN0aWNreUJyZWFrcG9pbnRzKHRo
aXMuX3N0aWNreUJyZWFrcG9pbnRzKTsKIAotICAgIHRoaXMuX2JyZWFrcG9pbnRzID0ge307Cisg
ICAgdGhpcy5fbmF0aXZlQnJlYWtwb2ludHMgPSB7fTsKICAgICB0aGlzLl9kb21CcmVha3BvaW50
c1Jlc3RvcmVkID0gZmFsc2U7Ci0gICAgdGhpcy5fc2NyaXB0QnJlYWtwb2ludHMgPSB7fTsKIAog
ICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5T
ZXR0aW5ncy5FdmVudHMuUHJvamVjdENoYW5nZWQsIHRoaXMuX3Byb2plY3RDaGFuZ2VkLCB0aGlz
KTsKLSAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkV2ZW50cy5CcmVha3BvaW50QWRkZWQsIHRoaXMuX3Njcmlw
dEJyZWFrcG9pbnRBZGRlZCwgdGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMuQnJlYWtw
b2ludFJlbW92ZWQsIHRoaXMuX3NjcmlwdEJyZWFrcG9pbnRSZW1vdmVkLCB0aGlzKTsKICAgICBX
ZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5E
ZWJ1Z2dlck1vZGVsLkV2ZW50cy5EZWJ1Z2dlclBhdXNlZCwgdGhpcy5fZGVidWdnZXJQYXVzZWQs
IHRoaXMpOwogICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzLkRlYnVnZ2VyUmVzdW1lZCwgdGhpcy5f
ZGVidWdnZXJSZXN1bWVkLCB0aGlzKTsKIH0KIAotV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5h
Z2VyLkJyZWFrcG9pbnRUeXBlcyA9IHsKK1dlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5O
YXRpdmVCcmVha3BvaW50VHlwZXMgPSB7CiAgICAgRE9NOiAiRE9NIiwKLSAgICBKUzogIkpTIiwK
ICAgICBFdmVudExpc3RlbmVyOiAiRXZlbnRMaXN0ZW5lciIsCiAgICAgWEhSOiAiWEhSIgogfQpA
QCAtNzQsMTEgKzcwLDExIEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdmFyIGJyZWFrcG9pbnRJZCA9
IHRoaXMuX2NyZWF0ZURPTUJyZWFrcG9pbnRJZChub2RlSWQsIHR5cGUpOwotICAgICAgICBpZiAo
YnJlYWtwb2ludElkIGluIHRoaXMuX2JyZWFrcG9pbnRzKQorICAgICAgICBpZiAoYnJlYWtwb2lu
dElkIGluIHRoaXMuX25hdGl2ZUJyZWFrcG9pbnRzKQogICAgICAgICAgICAgcmV0dXJuOwogCiAg
ICAgICAgIHZhciBicmVha3BvaW50ID0gbmV3IFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50KG5v
ZGUsIHR5cGUpOwotICAgICAgICB0aGlzLl9zZXRCcmVha3BvaW50KGJyZWFrcG9pbnRJZCwgYnJl
YWtwb2ludCwgZW5hYmxlZCwgcmVzdG9yZWQpOworICAgICAgICB0aGlzLl9zZXROYXRpdmVCcmVh
a3BvaW50KGJyZWFrcG9pbnRJZCwgYnJlYWtwb2ludCwgZW5hYmxlZCwgcmVzdG9yZWQpOwogICAg
ICAgICBpZiAoZW5hYmxlZCAmJiByZXN0b3JlZCkKICAgICAgICAgICAgIGJyZWFrcG9pbnQuX2Vu
YWJsZSgpOwogCkBAIC05NCw0OCArOTAsMTYgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5h
Z2VyLnByb3RvdHlwZSA9IHsKICAgICBfY3JlYXRlRXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQ6IGZ1
bmN0aW9uKGV2ZW50TmFtZSwgZW5hYmxlZCwgcmVzdG9yZWQpCiAgICAgewogICAgICAgICB2YXIg
YnJlYWtwb2ludElkID0gdGhpcy5fY3JlYXRlRXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRJZChldmVu
dE5hbWUpOwotICAgICAgICBpZiAoYnJlYWtwb2ludElkIGluIHRoaXMuX2JyZWFrcG9pbnRzKQor
ICAgICAgICBpZiAoYnJlYWtwb2ludElkIGluIHRoaXMuX25hdGl2ZUJyZWFrcG9pbnRzKQogICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHZhciBicmVha3BvaW50ID0gbmV3IFdlYkluc3Bl
Y3Rvci5FdmVudExpc3RlbmVyQnJlYWtwb2ludChldmVudE5hbWUpOwotICAgICAgICB0aGlzLl9z
ZXRCcmVha3BvaW50KGJyZWFrcG9pbnRJZCwgYnJlYWtwb2ludCwgZW5hYmxlZCwgcmVzdG9yZWQp
OworICAgICAgICB0aGlzLl9zZXROYXRpdmVCcmVha3BvaW50KGJyZWFrcG9pbnRJZCwgYnJlYWtw
b2ludCwgZW5hYmxlZCwgcmVzdG9yZWQpOwogCiAgICAgICAgIGJyZWFrcG9pbnQudmlldyA9IG5l
dyBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRWaWV3KHRoaXMsIGJyZWFrcG9p
bnRJZCwgZW5hYmxlZCwgZXZlbnROYW1lKTsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLkV2ZW50cy5FdmVudExpc3Rl
bmVyQnJlYWtwb2ludEFkZGVkLCBicmVha3BvaW50LnZpZXcpOwogICAgIH0sCiAKLSAgICBfY3Jl
YXRlSmF2YVNjcmlwdEJyZWFrcG9pbnQ6IGZ1bmN0aW9uKHVybCwgbGluZU51bWJlciwgY29uZGl0
aW9uLCBlbmFibGVkLCByZXN0b3JlZCkKLSAgICB7Ci0gICAgICAgIHZhciBicmVha3BvaW50SWQg
PSB0aGlzLl9jcmVhdGVKYXZhU2NyaXB0QnJlYWtwb2ludElkKHVybCwgbGluZU51bWJlcik7Ci0g
ICAgICAgIGlmIChicmVha3BvaW50SWQgaW4gdGhpcy5fYnJlYWtwb2ludHMpCi0gICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkph
dmFTY3JpcHRCcmVha3BvaW50KHVybCwgbGluZU51bWJlciwgY29uZGl0aW9uKTsKLSAgICAgICAg
dGhpcy5fc2V0QnJlYWtwb2ludChicmVha3BvaW50SWQsIGJyZWFrcG9pbnQsIGVuYWJsZWQsIHJl
c3RvcmVkKTsKLSAgICB9LAotCi0gICAgX3NjcmlwdEJyZWFrcG9pbnRBZGRlZDogZnVuY3Rpb24o
ZXZlbnQpCi0gICAgewotICAgICAgICB2YXIgc2NyaXB0QnJlYWtwb2ludCA9IGV2ZW50LmRhdGE7
Ci0gICAgICAgIAotICAgICAgICBpZiAoIXNjcmlwdEJyZWFrcG9pbnQudXJsKQotICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIGlmICghc2NyaXB0QnJlYWtwb2ludC5yZXN0b3JlZCkKLSAg
ICAgICAgICAgIHRoaXMuX2NyZWF0ZUphdmFTY3JpcHRCcmVha3BvaW50KHNjcmlwdEJyZWFrcG9p
bnQudXJsLCBzY3JpcHRCcmVha3BvaW50Lm9yaWdpbmFsTGluZU51bWJlciwgc2NyaXB0QnJlYWtw
b2ludC5jb25kaXRpb24sIHNjcmlwdEJyZWFrcG9pbnQuZW5hYmxlZCwgZmFsc2UpOwotICAgICAg
ICB2YXIgYnJlYWtwb2ludElkID0gdGhpcy5fY3JlYXRlSmF2YVNjcmlwdEJyZWFrcG9pbnRJZChz
Y3JpcHRCcmVha3BvaW50LnVybCwgc2NyaXB0QnJlYWtwb2ludC5vcmlnaW5hbExpbmVOdW1iZXIp
OwotICAgICAgICB0aGlzLl9zY3JpcHRCcmVha3BvaW50c1tzY3JpcHRCcmVha3BvaW50LmlkXSA9
IGJyZWFrcG9pbnRJZDsKLSAgICB9LAotCi0gICAgX3NjcmlwdEJyZWFrcG9pbnRSZW1vdmVkOiBm
dW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIHZhciBzY3JpcHRCcmVha3BvaW50SWQgPSBl
dmVudC5kYXRhOwotICAgICAgICB2YXIgYnJlYWtwb2ludElkID0gdGhpcy5fc2NyaXB0QnJlYWtw
b2ludHNbc2NyaXB0QnJlYWtwb2ludElkXTsKLSAgICAgICAgZGVsZXRlIHRoaXMuX3NjcmlwdEJy
ZWFrcG9pbnRzW3NjcmlwdEJyZWFrcG9pbnRJZF07Ci0gICAgICAgIGlmIChicmVha3BvaW50SWQg
aW4gdGhpcy5fYnJlYWtwb2ludHMpCi0gICAgICAgICAgICB0aGlzLl9yZW1vdmVCcmVha3BvaW50
KGJyZWFrcG9pbnRJZCk7Ci0gICAgfSwKLQogICAgIGNyZWF0ZVhIUkJyZWFrcG9pbnQ6IGZ1bmN0
aW9uKHVybCkKICAgICB7CiAgICAgICAgIHRoaXMuX2NyZWF0ZVhIUkJyZWFrcG9pbnQodXJsLCB0
cnVlLCBmYWxzZSk7CkBAIC0xNDQsMTkgKzEwOCwxOSBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2lu
dE1hbmFnZXIucHJvdG90eXBlID0gewogICAgIF9jcmVhdGVYSFJCcmVha3BvaW50OiBmdW5jdGlv
bih1cmwsIGVuYWJsZWQsIHJlc3RvcmVkKQogICAgIHsKICAgICAgICAgdmFyIGJyZWFrcG9pbnRJ
ZCA9IHRoaXMuX2NyZWF0ZVhIUkJyZWFrcG9pbnRJZCh1cmwpOwotICAgICAgICBpZiAoYnJlYWtw
b2ludElkIGluIHRoaXMuX2JyZWFrcG9pbnRzKQorICAgICAgICBpZiAoYnJlYWtwb2ludElkIGlu
IHRoaXMuX25hdGl2ZUJyZWFrcG9pbnRzKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
IHZhciBicmVha3BvaW50ID0gbmV3IFdlYkluc3BlY3Rvci5YSFJCcmVha3BvaW50KHVybCk7Ci0g
ICAgICAgIHRoaXMuX3NldEJyZWFrcG9pbnQoYnJlYWtwb2ludElkLCBicmVha3BvaW50LCBlbmFi
bGVkLCByZXN0b3JlZCk7CisgICAgICAgIHRoaXMuX3NldE5hdGl2ZUJyZWFrcG9pbnQoYnJlYWtw
b2ludElkLCBicmVha3BvaW50LCBlbmFibGVkLCByZXN0b3JlZCk7CiAKICAgICAgICAgYnJlYWtw
b2ludC52aWV3ID0gbmV3IFdlYkluc3BlY3Rvci5YSFJCcmVha3BvaW50Vmlldyh0aGlzLCBicmVh
a3BvaW50SWQsIGVuYWJsZWQsIHVybCk7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5FdmVudHMuWEhSQnJlYWtwb2lu
dEFkZGVkLCBicmVha3BvaW50LnZpZXcpOwogICAgIH0sCiAKLSAgICBfc2V0QnJlYWtwb2ludDog
ZnVuY3Rpb24oYnJlYWtwb2ludElkLCBicmVha3BvaW50LCBlbmFibGVkLCByZXN0b3JlZCkKKyAg
ICBfc2V0TmF0aXZlQnJlYWtwb2ludDogZnVuY3Rpb24oYnJlYWtwb2ludElkLCBicmVha3BvaW50
LCBlbmFibGVkLCByZXN0b3JlZCkKICAgICB7Ci0gICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzW2Jy
ZWFrcG9pbnRJZF0gPSBicmVha3BvaW50OworICAgICAgICB0aGlzLl9uYXRpdmVCcmVha3BvaW50
c1ticmVha3BvaW50SWRdID0gYnJlYWtwb2ludDsKICAgICAgICAgYnJlYWtwb2ludC5lbmFibGVk
ID0gZW5hYmxlZDsKICAgICAgICAgaWYgKHJlc3RvcmVkKQogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMTY1LDkgKzEyOSw5IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHRoaXMuX3NhdmVCcmVha3BvaW50cygpOwogICAgIH0sCiAKLSAgICBf
c2V0QnJlYWtwb2ludEVuYWJsZWQ6IGZ1bmN0aW9uKGJyZWFrcG9pbnRJZCwgZW5hYmxlZCkKKyAg
ICBfc2V0TmF0aXZlQnJlYWtwb2ludEVuYWJsZWQ6IGZ1bmN0aW9uKGJyZWFrcG9pbnRJZCwgZW5h
YmxlZCkKICAgICB7Ci0gICAgICAgIHZhciBicmVha3BvaW50ID0gdGhpcy5fYnJlYWtwb2ludHNb
YnJlYWtwb2ludElkXTsKKyAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSB0aGlzLl9uYXRpdmVCcmVh
a3BvaW50c1ticmVha3BvaW50SWRdOwogICAgICAgICBpZiAoYnJlYWtwb2ludC5lbmFibGVkID09
PSBlbmFibGVkKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAoZW5hYmxlZCkKQEAg
LTE3OCwyOCArMTQyLDI1IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHRoaXMuX3NhdmVCcmVha3BvaW50cygpOwogICAgIH0sCiAKLSAgICBf
cmVtb3ZlQnJlYWtwb2ludDogZnVuY3Rpb24oYnJlYWtwb2ludElkKQorICAgIF9yZW1vdmVOYXRp
dmVCcmVha3BvaW50OiBmdW5jdGlvbihicmVha3BvaW50SWQpCiAgICAgewotICAgICAgICB2YXIg
YnJlYWtwb2ludCA9IHRoaXMuX2JyZWFrcG9pbnRzW2JyZWFrcG9pbnRJZF07CisgICAgICAgIHZh
ciBicmVha3BvaW50ID0gdGhpcy5fbmF0aXZlQnJlYWtwb2ludHNbYnJlYWtwb2ludElkXTsKICAg
ICAgICAgaWYgKGJyZWFrcG9pbnQuZW5hYmxlZCkKICAgICAgICAgICAgIGJyZWFrcG9pbnQuX2Rp
c2FibGUoKTsKLSAgICAgICAgZGVsZXRlIHRoaXMuX2JyZWFrcG9pbnRzW2JyZWFrcG9pbnRJZF07
CisgICAgICAgIGRlbGV0ZSB0aGlzLl9uYXRpdmVCcmVha3BvaW50c1ticmVha3BvaW50SWRdOwog
ICAgICAgICB0aGlzLl9zYXZlQnJlYWtwb2ludHMoKTsKICAgICB9LAogCiAgICAgYnJlYWtwb2lu
dFZpZXdGb3JFdmVudERhdGE6IGZ1bmN0aW9uKGV2ZW50RGF0YSkKICAgICB7CiAgICAgICAgIHZh
ciBicmVha3BvaW50SWQ7Ci0gICAgICAgIGlmIChldmVudERhdGEuYnJlYWtwb2ludFR5cGUgPT09
IFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5CcmVha3BvaW50VHlwZXMuRE9NKQorICAg
ICAgICBpZiAoZXZlbnREYXRhLmJyZWFrcG9pbnRUeXBlID09PSBXZWJJbnNwZWN0b3IuQnJlYWtw
b2ludE1hbmFnZXIuTmF0aXZlQnJlYWtwb2ludFR5cGVzLkRPTSkKICAgICAgICAgICAgIGJyZWFr
cG9pbnRJZCA9IHRoaXMuX2NyZWF0ZURPTUJyZWFrcG9pbnRJZChldmVudERhdGEubm9kZUlkLCBl
dmVudERhdGEudHlwZSk7Ci0gICAgICAgIGVsc2UgaWYgKGV2ZW50RGF0YS5icmVha3BvaW50VHlw
ZSA9PT0gV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLkJyZWFrcG9pbnRUeXBlcy5FdmVu
dExpc3RlbmVyKQorICAgICAgICBlbHNlIGlmIChldmVudERhdGEuYnJlYWtwb2ludFR5cGUgPT09
IFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5OYXRpdmVCcmVha3BvaW50VHlwZXMuRXZl
bnRMaXN0ZW5lcikKICAgICAgICAgICAgIGJyZWFrcG9pbnRJZCA9IHRoaXMuX2NyZWF0ZUV2ZW50
TGlzdGVuZXJCcmVha3BvaW50SWQoZXZlbnREYXRhLmV2ZW50TmFtZSk7Ci0gICAgICAgIGVsc2Ug
aWYgKGV2ZW50RGF0YS5icmVha3BvaW50VHlwZSA9PT0gV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRN
YW5hZ2VyLkJyZWFrcG9pbnRUeXBlcy5YSFIpCisgICAgICAgIGVsc2UgaWYgKGV2ZW50RGF0YS5i
cmVha3BvaW50VHlwZSA9PT0gV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLk5hdGl2ZUJy
ZWFrcG9pbnRUeXBlcy5YSFIpCiAgICAgICAgICAgICBicmVha3BvaW50SWQgPSB0aGlzLl9jcmVh
dGVYSFJCcmVha3BvaW50SWQoZXZlbnREYXRhLmJyZWFrcG9pbnRVUkwpOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSB0aGlzLl9i
cmVha3BvaW50c1ticmVha3BvaW50SWRdOworICAgICAgICB2YXIgYnJlYWtwb2ludCA9IHRoaXMu
X25hdGl2ZUJyZWFrcG9pbnRzW2JyZWFrcG9pbnRJZF07CiAgICAgICAgIGlmIChicmVha3BvaW50
KQogICAgICAgICAgICAgcmV0dXJuIGJyZWFrcG9pbnQudmlldzsKICAgICB9LApAQCAtMjMwLDE5
ICsxOTEsMTYgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlwZSA9IHsK
IAogICAgIF9wcm9qZWN0Q2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB0
aGlzLl9icmVha3BvaW50cyA9IHt9OworICAgICAgICB0aGlzLl9uYXRpdmVCcmVha3BvaW50cyA9
IHt9OwogICAgICAgICB0aGlzLl9kb21CcmVha3BvaW50c1Jlc3RvcmVkID0gZmFsc2U7Ci0gICAg
ICAgIHRoaXMuX3NjcmlwdEJyZWFrcG9pbnRzID0ge307CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5FdmVudHMuUHJv
amVjdENoYW5nZWQpOwogCiAgICAgICAgIHZhciBicmVha3BvaW50cyA9IHRoaXMuX3N0aWNreUJy
ZWFrcG9pbnRzW1dlYkluc3BlY3Rvci5zZXR0aW5ncy5wcm9qZWN0SWRdIHx8IFtdOwogICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGJyZWFrcG9pbnRzLmxlbmd0aDsgKytpKSB7CiAgICAgICAg
ICAgICB2YXIgYnJlYWtwb2ludCA9IGJyZWFrcG9pbnRzW2ldOwotICAgICAgICAgICAgaWYgKGJy
ZWFrcG9pbnQudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLkJyZWFrcG9p
bnRUeXBlcy5FdmVudExpc3RlbmVyKQorICAgICAgICAgICAgaWYgKGJyZWFrcG9pbnQudHlwZSA9
PT0gV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLk5hdGl2ZUJyZWFrcG9pbnRUeXBlcy5F
dmVudExpc3RlbmVyKQogICAgICAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUV2ZW50TGlzdGVuZXJC
cmVha3BvaW50KGJyZWFrcG9pbnQuY29uZGl0aW9uLmV2ZW50TmFtZSwgYnJlYWtwb2ludC5lbmFi
bGVkLCB0cnVlKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGJyZWFrcG9pbnQudHlwZSA9PT0gV2Vi
SW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLkJyZWFrcG9pbnRUeXBlcy5KUykKLSAgICAgICAg
ICAgICAgICB0aGlzLl9jcmVhdGVKYXZhU2NyaXB0QnJlYWtwb2ludChicmVha3BvaW50LmNvbmRp
dGlvbi51cmwsIGJyZWFrcG9pbnQuY29uZGl0aW9uLmxpbmVOdW1iZXIsIGJyZWFrcG9pbnQuY29u
ZGl0aW9uLmNvbmRpdGlvbiwgYnJlYWtwb2ludC5lbmFibGVkLCB0cnVlKTsKLSAgICAgICAgICAg
IGVsc2UgaWYgKGJyZWFrcG9pbnQudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5h
Z2VyLkJyZWFrcG9pbnRUeXBlcy5YSFIpCisgICAgICAgICAgICBlbHNlIGlmIChicmVha3BvaW50
LnR5cGUgPT09IFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5OYXRpdmVCcmVha3BvaW50
VHlwZXMuWEhSKQogICAgICAgICAgICAgICAgIHRoaXMuX2NyZWF0ZVhIUkJyZWFrcG9pbnQoYnJl
YWtwb2ludC5jb25kaXRpb24udXJsLCBicmVha3BvaW50LmVuYWJsZWQsIHRydWUpOwogICAgICAg
ICB9CiAgICAgfSwKQEAgLTI1Nyw3ICsyMTUsNyBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1h
bmFnZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgYnJlYWtwb2ludHMubGVuZ3RoOyArK2kpIHsKICAgICAgICAg
ICAgICAgICB2YXIgYnJlYWtwb2ludCA9IGJyZWFrcG9pbnRzW2ldOwotICAgICAgICAgICAgICAg
IGlmIChicmVha3BvaW50LnR5cGUgIT09IFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5C
cmVha3BvaW50VHlwZXMuRE9NKQorICAgICAgICAgICAgICAgIGlmIChicmVha3BvaW50LnR5cGUg
IT09IFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5OYXRpdmVCcmVha3BvaW50VHlwZXMu
RE9NKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB2YXIg
bm9kZUlkID0gcGF0aFRvTm9kZUlkW2JyZWFrcG9pbnQuY29uZGl0aW9uLnBhdGhdOwogICAgICAg
ICAgICAgICAgIGlmIChub2RlSWQpCkBAIC0yNzEsNyArMjI5LDcgQEAgV2ViSW5zcGVjdG9yLkJy
ZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIHBhdGhUb05vZGVJZCA9
IHt9OwogICAgICAgICB2YXIgcGVuZGluZ0NhbGxzID0gMDsKICAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBicmVha3BvaW50cy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgaWYgKGJyZWFr
cG9pbnRzW2ldLnR5cGUgIT09IFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5CcmVha3Bv
aW50VHlwZXMuRE9NKQorICAgICAgICAgICAgaWYgKGJyZWFrcG9pbnRzW2ldLnR5cGUgIT09IFdl
Ykluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5OYXRpdmVCcmVha3BvaW50VHlwZXMuRE9NKQog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgdmFyIHBhdGggPSBicmVha3Bv
aW50c1tpXS5jb25kaXRpb24ucGF0aDsKICAgICAgICAgICAgIGlmIChwYXRoIGluIHBhdGhUb05v
ZGVJZCkKQEAgLTI4Nyw4ICsyNDUsOCBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIu
cHJvdG90eXBlID0gewogICAgIF9zYXZlQnJlYWtwb2ludHM6IGZ1bmN0aW9uKCkKICAgICB7CiAg
ICAgICAgIHZhciBicmVha3BvaW50cyA9IFtdOwotICAgICAgICBmb3IgKHZhciBicmVha3BvaW50
SWQgaW4gdGhpcy5fYnJlYWtwb2ludHMpIHsKLSAgICAgICAgICAgIHZhciBicmVha3BvaW50ID0g
dGhpcy5fYnJlYWtwb2ludHNbYnJlYWtwb2ludElkXTsKKyAgICAgICAgZm9yICh2YXIgYnJlYWtw
b2ludElkIGluIHRoaXMuX25hdGl2ZUJyZWFrcG9pbnRzKSB7CisgICAgICAgICAgICB2YXIgYnJl
YWtwb2ludCA9IHRoaXMuX25hdGl2ZUJyZWFrcG9pbnRzW2JyZWFrcG9pbnRJZF07CiAgICAgICAg
ICAgICB2YXIgcGVyc2lzdGVudEJyZWFrcG9pbnQgPSBicmVha3BvaW50Ll9zZXJpYWxpemVUb0pT
T04oKTsKICAgICAgICAgICAgIHBlcnNpc3RlbnRCcmVha3BvaW50LmVuYWJsZWQgPSBicmVha3Bv
aW50LmVuYWJsZWQ7CiAgICAgICAgICAgICBicmVha3BvaW50cy5wdXNoKHBlcnNpc3RlbnRCcmVh
a3BvaW50KTsKQEAgLTI5Niw3ICsyNTQsNyBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFn
ZXIucHJvdG90eXBlID0gewogICAgICAgICBpZiAoIXRoaXMuX2RvbUJyZWFrcG9pbnRzUmVzdG9y
ZWQpIHsKICAgICAgICAgICAgIHZhciBzdGlja3lCcmVha3BvaW50cyA9IHRoaXMuX3N0aWNreUJy
ZWFrcG9pbnRzW1dlYkluc3BlY3Rvci5zZXR0aW5ncy5wcm9qZWN0SWRdIHx8IFtdOwogICAgICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdGlja3lCcmVha3BvaW50cy5sZW5ndGg7ICsraSkg
ewotICAgICAgICAgICAgICAgIGlmIChzdGlja3lCcmVha3BvaW50c1tpXS50eXBlID09PSBXZWJJ
bnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIuQnJlYWtwb2ludFR5cGVzLkRPTSkKKyAgICAgICAg
ICAgICAgICBpZiAoc3RpY2t5QnJlYWtwb2ludHNbaV0udHlwZSA9PT0gV2ViSW5zcGVjdG9yLkJy
ZWFrcG9pbnRNYW5hZ2VyLk5hdGl2ZUJyZWFrcG9pbnRUeXBlcy5ET00pCiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrcG9pbnRzLnB1c2goc3RpY2t5QnJlYWtwb2ludHNbaV0pOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CkBAIC0zMTYsMTkgKzI3NCwxNSBAQCBXZWJJbnNwZWN0b3IuQnJlYWtw
b2ludE1hbmFnZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgdmFyIGlkID0gYnJlYWtwb2ludC50eXBlICsgIjoiOwogICAgICAgICAgICAgdmFy
IGNvbmRpdGlvbiA9IGJyZWFrcG9pbnQuY29uZGl0aW9uOwotICAgICAgICAgICAgaWYgKGJyZWFr
cG9pbnQudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLkJyZWFrcG9pbnRU
eXBlcy5ET00pIHsKKyAgICAgICAgICAgIGlmIChicmVha3BvaW50LnR5cGUgPT09IFdlYkluc3Bl
Y3Rvci5CcmVha3BvaW50TWFuYWdlci5OYXRpdmVCcmVha3BvaW50VHlwZXMuRE9NKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25kaXRpb24ucGF0aCAhPT0gInN0cmluZyIgfHwgdHlw
ZW9mIGNvbmRpdGlvbi50eXBlICE9PSAibnVtYmVyIikKICAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgICAgICAgICAgaWQgKz0gY29uZGl0aW9uLnBhdGggKyAiOiIgKyBjb25k
aXRpb24udHlwZTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoYnJlYWtwb2ludC50eXBlID09PSBX
ZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIuQnJlYWtwb2ludFR5cGVzLkV2ZW50TGlzdGVu
ZXIpIHsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoYnJlYWtwb2ludC50eXBlID09PSBXZWJJbnNw
ZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIuTmF0aXZlQnJlYWtwb2ludFR5cGVzLkV2ZW50TGlzdGVu
ZXIpIHsKICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNvbmRpdGlvbi5ldmVudE5hbWUgIT09
ICJzdHJpbmciKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAg
ICBpZCArPSBjb25kaXRpb24uZXZlbnROYW1lOwotICAgICAgICAgICAgfSBlbHNlIGlmIChicmVh
a3BvaW50LnR5cGUgPT09IFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5CcmVha3BvaW50
VHlwZXMuSlMpIHsKLSAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNvbmRpdGlvbi51cmwgIT09
ICJzdHJpbmciIHx8IHR5cGVvZiBjb25kaXRpb24ubGluZU51bWJlciAhPT0gIm51bWJlciIgfHwg
dHlwZW9mIGNvbmRpdGlvbi5jb25kaXRpb24gIT09ICJzdHJpbmciKQotICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBpZCArPSBjb25kaXRpb24udXJsICsgIjoi
ICsgY29uZGl0aW9uLmxpbmVOdW1iZXI7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGJyZWFrcG9p
bnQudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLkJyZWFrcG9pbnRUeXBl
cy5YSFIpIHsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoYnJlYWtwb2ludC50eXBlID09PSBXZWJJ
bnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIuTmF0aXZlQnJlYWtwb2ludFR5cGVzLlhIUikgewog
ICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY29uZGl0aW9uLnVybCAhPT0gInN0cmluZyIpCiAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGlkICs9IGNvbmRp
dGlvbi51cmw7CkBAIC0zNDYsMTEgKzMwMCw2IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFu
YWdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiAiZG9tOiIgKyBub2RlSWQgKyAiOiIg
KyB0eXBlOwogICAgIH0sCiAKLSAgICBfY3JlYXRlSmF2YVNjcmlwdEJyZWFrcG9pbnRJZDogZnVu
Y3Rpb24odXJsLCBsaW5lTnVtYmVyKQotICAgIHsKLSAgICAgICAgcmV0dXJuICJqczoiICsgdXJs
ICsgIjoiICsgbGluZU51bWJlcjsKLSAgICB9LAotCiAgICAgX2NyZWF0ZUV2ZW50TGlzdGVuZXJC
cmVha3BvaW50SWQ6IGZ1bmN0aW9uKGV2ZW50TmFtZSkKICAgICB7CiAgICAgICAgIHJldHVybiAi
ZXZlbnRMaXN0bmVyOiIgKyBldmVudE5hbWU7CkBAIC0zODQsMzQgKzMzMywxMSBAQCBXZWJJbnNw
ZWN0b3IuRE9NQnJlYWtwb2ludC5wcm90b3R5cGUgPSB7CiAKICAgICBfc2VyaWFsaXplVG9KU09O
OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB2YXIgdHlwZSA9IFdlYkluc3BlY3Rvci5CcmVh
a3BvaW50TWFuYWdlci5CcmVha3BvaW50VHlwZXMuRE9NOworICAgICAgICB2YXIgdHlwZSA9IFdl
Ykluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5OYXRpdmVCcmVha3BvaW50VHlwZXMuRE9NOwog
ICAgICAgICByZXR1cm4geyB0eXBlOiB0eXBlLCBjb25kaXRpb246IHsgcGF0aDogdGhpcy5fcGF0
aCwgdHlwZTogdGhpcy5fdHlwZSB9IH07CiAgICAgfQogfQogCi1XZWJJbnNwZWN0b3IuSmF2YVNj
cmlwdEJyZWFrcG9pbnQgPSBmdW5jdGlvbih1cmwsIGxpbmVOdW1iZXIsIGNvbmRpdGlvbikKLXsK
LSAgICB0aGlzLl91cmwgPSB1cmw7Ci0gICAgdGhpcy5fbGluZU51bWJlciA9IGxpbmVOdW1iZXI7
Ci0gICAgdGhpcy5fY29uZGl0aW9uID0gY29uZGl0aW9uOwotfQotCi1XZWJJbnNwZWN0b3IuSmF2
YVNjcmlwdEJyZWFrcG9pbnQucHJvdG90eXBlID0gewotICAgIF9lbmFibGU6IGZ1bmN0aW9uKCkK
LSAgICB7Ci0gICAgfSwKLQotICAgIF9kaXNhYmxlOiBmdW5jdGlvbigpCi0gICAgewotICAgIH0s
Ci0KLSAgICBfc2VyaWFsaXplVG9KU09OOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIg
dHlwZSA9IFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5CcmVha3BvaW50VHlwZXMuSlM7
Ci0gICAgICAgIHJldHVybiB7IHR5cGU6IHR5cGUsIGNvbmRpdGlvbjogeyB1cmw6IHRoaXMuX3Vy
bCwgbGluZU51bWJlcjogdGhpcy5fbGluZU51bWJlciwgY29uZGl0aW9uOiB0aGlzLl9jb25kaXRp
b24gfSB9OwotICAgIH0KLX0KLQogV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJCcmVha3BvaW50
ID0gZnVuY3Rpb24oZXZlbnROYW1lKQogewogICAgIHRoaXMuX2V2ZW50TmFtZSA9IGV2ZW50TmFt
ZTsKQEAgLTQzMCw3ICszNTYsNyBAQCBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lckJyZWFrcG9p
bnQucHJvdG90eXBlID0gewogCiAgICAgX3NlcmlhbGl6ZVRvSlNPTjogZnVuY3Rpb24oKQogICAg
IHsKLSAgICAgICAgdmFyIHR5cGUgPSBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIuQnJl
YWtwb2ludFR5cGVzLkV2ZW50TGlzdGVuZXI7CisgICAgICAgIHZhciB0eXBlID0gV2ViSW5zcGVj
dG9yLkJyZWFrcG9pbnRNYW5hZ2VyLk5hdGl2ZUJyZWFrcG9pbnRUeXBlcy5FdmVudExpc3RlbmVy
OwogICAgICAgICByZXR1cm4geyB0eXBlOiB0eXBlLCBjb25kaXRpb246IHsgZXZlbnROYW1lOiB0
aGlzLl9ldmVudE5hbWUgfSB9OwogICAgIH0KIH0KQEAgLTQ1Myw3ICszNzksNyBAQCBXZWJJbnNw
ZWN0b3IuWEhSQnJlYWtwb2ludC5wcm90b3R5cGUgPSB7CiAKICAgICBfc2VyaWFsaXplVG9KU09O
OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB2YXIgdHlwZSA9IFdlYkluc3BlY3Rvci5CcmVh
a3BvaW50TWFuYWdlci5CcmVha3BvaW50VHlwZXMuWEhSOworICAgICAgICB2YXIgdHlwZSA9IFdl
Ykluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5OYXRpdmVCcmVha3BvaW50VHlwZXMuWEhSOwog
ICAgICAgICByZXR1cm4geyB0eXBlOiB0eXBlLCBjb25kaXRpb246IHsgdXJsOiB0aGlzLl91cmwg
fSB9OwogICAgIH0KIH0KQEAgLTQ3Niw3ICs0MDIsNyBAQCBXZWJJbnNwZWN0b3IuTmF0aXZlQnJl
YWtwb2ludFZpZXcucHJvdG90eXBlID0gewogCiAgICAgc2V0IGVuYWJsZWQoZW5hYmxlZCkKICAg
ICB7Ci0gICAgICAgIHRoaXMuX21hbmFnZXIuX3NldEJyZWFrcG9pbnRFbmFibGVkKHRoaXMuX2lk
LCBlbmFibGVkKTsKKyAgICAgICAgdGhpcy5fbWFuYWdlci5fc2V0TmF0aXZlQnJlYWtwb2ludEVu
YWJsZWQodGhpcy5faWQsIGVuYWJsZWQpOwogICAgICAgICB0aGlzLl9lbmFibGVkID0gZW5hYmxl
ZDsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoImVuYWJsZS1jaGFuZ2Vk
Iik7CiAgICAgfSwKQEAgLTQ5NCw3ICs0MjAsNyBAQCBXZWJJbnNwZWN0b3IuTmF0aXZlQnJlYWtw
b2ludFZpZXcucHJvdG90eXBlID0gewogCiAgICAgcmVtb3ZlOiBmdW5jdGlvbigpCiAgICAgewot
ICAgICAgICB0aGlzLl9tYW5hZ2VyLl9yZW1vdmVCcmVha3BvaW50KHRoaXMuX2lkKTsKKyAgICAg
ICAgdGhpcy5fbWFuYWdlci5fcmVtb3ZlTmF0aXZlQnJlYWtwb2ludCh0aGlzLl9pZCk7CiAgICAg
ICAgIHRoaXMuX29uUmVtb3ZlKCk7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVu
ZXJzKCJyZW1vdmVkIik7CiAgICAgfSwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9EZWJ1Z2dlck1vZGVsLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Rl
YnVnZ2VyTW9kZWwuanMKaW5kZXggNWFiMGUyZDBjZmRiNjdhYzE1ODY5MDk1YjkwOGU2MzJmZTIz
Mjg4Zi4uMzFjNzVlNTk4MjQzMTZlZWRhMjE1YTFiNTNkNzgzMmVlYzMyZDMwYSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyTW9kZWwuanMKKysrIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyTW9kZWwuanMKQEAgLTMyLDkgKzMyLDcg
QEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwgPSBmdW5jdGlvbigpCiB7CiAgICAgSW5zcGVj
dG9yQmFja2VuZC5yZWdpc3RlckRvbWFpbkRpc3BhdGNoZXIoIkRlYnVnZ2VyIiwgdGhpcyk7CiAK
LSAgICB0aGlzLl9wYXVzZWQgPSBmYWxzZTsKICAgICB0aGlzLl9icmVha3BvaW50cyA9IHt9Owot
ICAgIHRoaXMuX3NvdXJjZUlEQW5kTGluZVRvQnJlYWtwb2ludElkID0ge307CiAgICAgdGhpcy5f
c2NyaXB0cyA9IHt9OwogfQogCkBAIC00NCw2OCArNDIsMzUgQEAgV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyTW9kZWwuRXZlbnRzID0gewogICAgIFBhcnNlZFNjcmlwdFNvdXJjZTogInBhcnNlZC1zY3Jp
cHQtc291cmNlIiwKICAgICBGYWlsZWRUb1BhcnNlU2NyaXB0U291cmNlOiAiZmFpbGVkLXRvLXBh
cnNlLXNjcmlwdC1zb3VyY2UiLAogICAgIEJyZWFrcG9pbnRBZGRlZDogImJyZWFrcG9pbnQtYWRk
ZWQiLAotICAgIEJyZWFrcG9pbnRSZW1vdmVkOiAiYnJlYWtwb2ludC1yZW1vdmVkIgogfQogCiBX
ZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5wcm90b3R5cGUgPSB7Ci0gICAgY29udGludWVUb0xp
bmU6IGZ1bmN0aW9uKHNvdXJjZUlELCBsaW5lTnVtYmVyKQorICAgIHNldE9uZVRpbWVCcmVha3Bv
aW50OiBmdW5jdGlvbihzb3VyY2VJRCwgbGluZSkKICAgICB7Ci0gICAgICAgIGZ1bmN0aW9uIGRp
ZFNldEJyZWFrcG9pbnQoYnJlYWtwb2ludElkLCBhY3R1YWxMaW5lTnVtYmVyKQotICAgICAgICB7
Ci0gICAgICAgICAgICBpZiAoIWJyZWFrcG9pbnRJZCkKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICBpZiAodGhpcy5maW5kQnJlYWtwb2ludChzb3VyY2VJRCwgYWN0dWFsTGlu
ZU51bWJlcikpIHsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlbW92ZUJyZWFr
cG9pbnQoYnJlYWtwb2ludElkKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBpZiAoIl9jb250aW51ZVRvTGluZUJyZWFrcG9pbnRJZCIgaW4gdGhp
cykKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlbW92ZUJyZWFrcG9pbnQodGhp
cy5fY29udGludWVUb0xpbmVCcmVha3BvaW50SWQpOwotICAgICAgICAgICAgdGhpcy5fY29udGlu
dWVUb0xpbmVCcmVha3BvaW50SWQgPSBicmVha3BvaW50SWQ7Ci0gICAgICAgIH0KLSAgICAgICAg
SW5zcGVjdG9yQmFja2VuZC5zZXRCcmVha3BvaW50KHNvdXJjZUlELCBsaW5lTnVtYmVyLCAiIiwg
dHJ1ZSwgZGlkU2V0QnJlYWtwb2ludC5iaW5kKHRoaXMpKTsKLSAgICAgICAgaWYgKHRoaXMuX3Bh
dXNlZCkKLSAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQucmVzdW1lKCk7CisgICAgICAgIHZh
ciBicmVha3BvaW50ID0gbmV3IFdlYkluc3BlY3Rvci5CcmVha3BvaW50KHRoaXMsIHNvdXJjZUlE
LCB1bmRlZmluZWQsIGxpbmUsIHRydWUsIHVuZGVmaW5lZCk7CisgICAgICAgIGlmICh0aGlzLl9i
cmVha3BvaW50c1ticmVha3BvaW50LmlkXSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
aWYgKHRoaXMuX29uZVRpbWVCcmVha3BvaW50KQorICAgICAgICAgICAgSW5zcGVjdG9yQmFja2Vu
ZC5yZW1vdmVCcmVha3BvaW50KHRoaXMuX29uZVRpbWVCcmVha3BvaW50LnNvdXJjZUlELCB0aGlz
Ll9vbmVUaW1lQnJlYWtwb2ludC5saW5lKTsKKyAgICAgICAgdGhpcy5fb25lVGltZUJyZWFrcG9p
bnQgPSBicmVha3BvaW50OworICAgICAgICAvLyBGSVhNRSg0MDY2OSk6IG9uZSB0aW1lIGJyZWFr
cG9pbnQgd2lsbCBiZSBwZXJzaXN0ZWQgaW4gaW5zcGVjdG9yIHNldHRpbmdzIGlmIG5vdCBoaXQu
CisgICAgICAgIHRoaXMuX3NldEJyZWFrcG9pbnRPbkJhY2tlbmQoYnJlYWtwb2ludCwgdHJ1ZSk7
CiAgICAgfSwKIAotICAgIHNldEJyZWFrcG9pbnQ6IGZ1bmN0aW9uKHNvdXJjZUlELCBsaW5lTnVt
YmVyLCBlbmFibGVkLCBjb25kaXRpb24pCisgICAgcmVtb3ZlT25lVGltZUJyZWFrcG9pbnQ6IGZ1
bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIGZ1bmN0aW9uIGRpZFNldEJyZWFrcG9pbnQoYnJlYWtw
b2ludElkLCBhY3R1YWxMaW5lTnVtYmVyKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoYnJl
YWtwb2ludElkKQotICAgICAgICAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRTZXRPbkJhY2tlbmQo
YnJlYWtwb2ludElkLCBzb3VyY2VJRCwgYWN0dWFsTGluZU51bWJlciwgY29uZGl0aW9uLCBlbmFi
bGVkLCBsaW5lTnVtYmVyLCBmYWxzZSk7CisgICAgICAgIGlmICh0aGlzLl9vbmVUaW1lQnJlYWtw
b2ludCkgeworICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5yZW1vdmVCcmVha3BvaW50KHRo
aXMuX29uZVRpbWVCcmVha3BvaW50LnNvdXJjZUlELCB0aGlzLl9vbmVUaW1lQnJlYWtwb2ludC5s
aW5lKTsKKyAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9vbmVUaW1lQnJlYWtwb2ludDsKICAgICAg
ICAgfQotICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnNldEJyZWFrcG9pbnQoc291cmNlSUQsIGxp
bmVOdW1iZXIsIGNvbmRpdGlvbiwgZW5hYmxlZCwgZGlkU2V0QnJlYWtwb2ludC5iaW5kKHRoaXMp
KTsKLSAgICB9LAotCi0gICAgcmVtb3ZlQnJlYWtwb2ludDogZnVuY3Rpb24oYnJlYWtwb2ludElk
KQotICAgIHsKLSAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5yZW1vdmVCcmVha3BvaW50KGJyZWFr
cG9pbnRJZCk7Ci0gICAgICAgIHZhciBicmVha3BvaW50ID0gdGhpcy5fYnJlYWtwb2ludHNbYnJl
YWtwb2ludElkXTsKLSAgICAgICAgZGVsZXRlIHRoaXMuX2JyZWFrcG9pbnRzW2JyZWFrcG9pbnRJ
ZF07Ci0gICAgICAgIGRlbGV0ZSB0aGlzLl9zb3VyY2VJREFuZExpbmVUb0JyZWFrcG9pbnRJZFt0
aGlzLl9lbmNvZGVTb3VyY2VJREFuZExpbmUoYnJlYWtwb2ludC5zb3VyY2VJRCwgYnJlYWtwb2lu
dC5saW5lKV07Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3Bl
Y3Rvci5EZWJ1Z2dlck1vZGVsLkV2ZW50cy5CcmVha3BvaW50UmVtb3ZlZCwgYnJlYWtwb2ludElk
KTsKICAgICB9LAogCi0gICAgYnJlYWtwb2ludFJlc29sdmVkOiBmdW5jdGlvbihicmVha3BvaW50
SWQsIHNvdXJjZUlELCBsaW5lTnVtYmVyLCBjb25kaXRpb24sIGVuYWJsZWQsIG9yaWdpbmFsTGlu
ZU51bWJlcikKKyAgICBzZXRCcmVha3BvaW50OiBmdW5jdGlvbihzb3VyY2VJRCwgbGluZSwgZW5h
YmxlZCwgY29uZGl0aW9uKQogICAgIHsKLSAgICAgICAgdGhpcy5fYnJlYWtwb2ludFNldE9uQmFj
a2VuZChicmVha3BvaW50SWQsIHNvdXJjZUlELCBsaW5lTnVtYmVyLCBjb25kaXRpb24sIGVuYWJs
ZWQsIG9yaWdpbmFsTGluZU51bWJlciwgdHJ1ZSk7Ci0gICAgfSwKLQotICAgIF9icmVha3BvaW50
U2V0T25CYWNrZW5kOiBmdW5jdGlvbihicmVha3BvaW50SWQsIHNvdXJjZUlELCBsaW5lTnVtYmVy
LCBjb25kaXRpb24sIGVuYWJsZWQsIG9yaWdpbmFsTGluZU51bWJlciwgcmVzdG9yZWQpCi0gICAg
ewotICAgICAgICB2YXIgc291cmNlSURBbmRMaW5lID0gdGhpcy5fZW5jb2RlU291cmNlSURBbmRM
aW5lKHNvdXJjZUlELCBsaW5lTnVtYmVyKTsKLSAgICAgICAgaWYgKHNvdXJjZUlEQW5kTGluZSBp
biB0aGlzLl9zb3VyY2VJREFuZExpbmVUb0JyZWFrcG9pbnRJZCkgewotICAgICAgICAgICAgSW5z
cGVjdG9yQmFja2VuZC5yZW1vdmVCcmVha3BvaW50KGJyZWFrcG9pbnRJZCk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLQogICAgICAgICB2YXIgdXJsID0gdGhpcy5fc2NyaXB0c1tz
b3VyY2VJRF0uc291cmNlVVJMOwotICAgICAgICB2YXIgYnJlYWtwb2ludCA9IG5ldyBXZWJJbnNw
ZWN0b3IuQnJlYWtwb2ludCh0aGlzLCBicmVha3BvaW50SWQsIHNvdXJjZUlELCB1cmwsIGxpbmVO
dW1iZXIsIGVuYWJsZWQsIGNvbmRpdGlvbik7Ci0gICAgICAgIGJyZWFrcG9pbnQucmVzdG9yZWQg
PSByZXN0b3JlZDsKLSAgICAgICAgYnJlYWtwb2ludC5vcmlnaW5hbExpbmVOdW1iZXIgPSBvcmln
aW5hbExpbmVOdW1iZXI7Ci0gICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzW2JyZWFrcG9pbnRJZF0g
PSBicmVha3BvaW50OwotICAgICAgICB0aGlzLl9zb3VyY2VJREFuZExpbmVUb0JyZWFrcG9pbnRJ
ZFtzb3VyY2VJREFuZExpbmVdID0gYnJlYWtwb2ludElkOwotICAgICAgICB0aGlzLmRpc3BhdGNo
RXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMuQnJlYWtw
b2ludEFkZGVkLCBicmVha3BvaW50KTsKKyAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSB0aGlzLl9z
ZXRCcmVha3BvaW50KHNvdXJjZUlELCB1cmwsIGxpbmUsIGVuYWJsZWQsIGNvbmRpdGlvbik7Cisg
ICAgICAgIGlmIChicmVha3BvaW50KQorICAgICAgICAgICAgdGhpcy5fc2V0QnJlYWtwb2ludE9u
QmFja2VuZChicmVha3BvaW50KTsKICAgICB9LAogCiAgICAgcXVlcnlCcmVha3BvaW50czogZnVu
Y3Rpb24oZmlsdGVyKQpAQCAtMTIxLDI1ICs4Niw1NSBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJN
b2RlbC5wcm90b3R5cGUgPSB7CiAKICAgICBmaW5kQnJlYWtwb2ludDogZnVuY3Rpb24oc291cmNl
SUQsIGxpbmVOdW1iZXIpCiAgICAgewotICAgICAgICB2YXIgc291cmNlSURBbmRMaW5lID0gdGhp
cy5fZW5jb2RlU291cmNlSURBbmRMaW5lKHNvdXJjZUlELCBsaW5lTnVtYmVyKTsKLSAgICAgICAg
dmFyIGJyZWFrcG9pbnRJZCA9IHRoaXMuX3NvdXJjZUlEQW5kTGluZVRvQnJlYWtwb2ludElkW3Nv
dXJjZUlEQW5kTGluZV07CisgICAgICAgIHZhciBicmVha3BvaW50SWQgPSBXZWJJbnNwZWN0b3Iu
QnJlYWtwb2ludC5qc0JyZWFrcG9pbnRJZChzb3VyY2VJRCwgbGluZU51bWJlcik7CiAgICAgICAg
IHJldHVybiB0aGlzLl9icmVha3BvaW50c1ticmVha3BvaW50SWRdOwogICAgIH0sCiAKLSAgICBf
ZW5jb2RlU291cmNlSURBbmRMaW5lOiBmdW5jdGlvbihzb3VyY2VJRCwgbGluZU51bWJlcikKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBzb3VyY2VJRCArICI6IiArIGxpbmVOdW1iZXI7Ci0gICAgfSwK
LQogICAgIHJlc2V0OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB0aGlzLl9wYXVzZWQgPSBm
YWxzZTsKICAgICAgICAgdGhpcy5fYnJlYWtwb2ludHMgPSB7fTsKICAgICAgICAgZGVsZXRlIHRo
aXMuX29uZVRpbWVCcmVha3BvaW50OwotICAgICAgICB0aGlzLl9zb3VyY2VJREFuZExpbmVUb0Jy
ZWFrcG9pbnRJZCA9IHt9OwogICAgICAgICB0aGlzLl9zY3JpcHRzID0ge307CiAgICAgfSwKIAor
ICAgIF9zZXRCcmVha3BvaW50OiBmdW5jdGlvbihzb3VyY2VJRCwgdXJsLCBsaW5lLCBlbmFibGVk
LCBjb25kaXRpb24pCisgICAgeworICAgICAgICB2YXIgYnJlYWtwb2ludCA9IG5ldyBXZWJJbnNw
ZWN0b3IuQnJlYWtwb2ludCh0aGlzLCBzb3VyY2VJRCwgdXJsLCBsaW5lLCBlbmFibGVkLCBjb25k
aXRpb24pOworICAgICAgICBpZiAodGhpcy5fYnJlYWtwb2ludHNbYnJlYWtwb2ludC5pZF0pCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmICh0aGlzLl9vbmVUaW1lQnJlYWtwb2ludCAm
JiAodGhpcy5fb25lVGltZUJyZWFrcG9pbnQuaWQgPT0gYnJlYWtwb2ludC5pZCkpCisgICAgICAg
ICAgICBkZWxldGUgdGhpcy5fb25lVGltZUJyZWFrcG9pbnQ7CisgICAgICAgIHRoaXMuX2JyZWFr
cG9pbnRzW2JyZWFrcG9pbnQuaWRdID0gYnJlYWtwb2ludDsKKyAgICAgICAgYnJlYWtwb2ludC5h
ZGRFdmVudExpc3RlbmVyKCJyZW1vdmVkIiwgdGhpcy5fYnJlYWtwb2ludFJlbW92ZWQsIHRoaXMp
OworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVi
dWdnZXJNb2RlbC5FdmVudHMuQnJlYWtwb2ludEFkZGVkLCBicmVha3BvaW50KTsKKyAgICAgICAg
cmV0dXJuIGJyZWFrcG9pbnQ7CisgICAgfSwKKworICAgIF9icmVha3BvaW50UmVtb3ZlZDogZnVu
Y3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBkZWxldGUgdGhpcy5fYnJlYWtwb2ludHNbZXZl
bnQudGFyZ2V0LmlkXTsKKyAgICB9LAorCisgICAgX3NldEJyZWFrcG9pbnRPbkJhY2tlbmQ6IGZ1
bmN0aW9uKGJyZWFrcG9pbnQsIGlzT25lVGltZSkKKyAgICB7CisgICAgICAgIGZ1bmN0aW9uIGRp
ZFNldEJyZWFrcG9pbnQoc3VjY2VzcywgbGluZSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KHN1Y2Nlc3MgJiYgbGluZSA9PSBicmVha3BvaW50LmxpbmUpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgaWYgKGlzT25lVGltZSkgeworICAgICAgICAgICAgICAgIGlmIChz
dWNjZXNzKQorICAgICAgICAgICAgICAgICAgICB0aGlzLl9vbmVUaW1lQnJlYWtwb2ludC5saW5l
ID0gbGluZTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGRlbGV0
ZSB0aGlzLl9vbmVUaW1lQnJlYWtwb2ludDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgYnJlYWtwb2ludC5yZW1vdmUoKTsKKyAgICAgICAgICAgICAgICBpZiAoc3VjY2Vz
cykKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2V0QnJlYWtwb2ludChicmVha3BvaW50LnNv
dXJjZUlELCBicmVha3BvaW50LnVybCwgbGluZSwgYnJlYWtwb2ludC5lbmFibGVkLCBicmVha3Bv
aW50LmNvbmRpdGlvbik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgSW5zcGVj
dG9yQmFja2VuZC5zZXRCcmVha3BvaW50KGJyZWFrcG9pbnQuc291cmNlSUQsIGJyZWFrcG9pbnQu
bGluZSwgYnJlYWtwb2ludC5lbmFibGVkLCBicmVha3BvaW50LmNvbmRpdGlvbiwgZGlkU2V0QnJl
YWtwb2ludC5iaW5kKHRoaXMpKTsKKyAgICB9LAorCiAgICAgc2NyaXB0Rm9yU291cmNlSUQ6IGZ1
bmN0aW9uKHNvdXJjZUlEKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NjcmlwdHNbc291
cmNlSURdOwpAQCAtMTYzLDEzICsxNTgsMTMgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwu
cHJvdG90eXBlID0gewogCiAgICAgLy8gQWxsIHRoZSBtZXRob2RzIGJlbG93IGFyZSBJbnNwZWN0
b3JCYWNrZW5kIG5vdGlmaWNhdGlvbiBoYW5kbGVycy4KIAorICAgIGJyZWFrcG9pbnRSZXN0b3Jl
ZDogZnVuY3Rpb24oc291cmNlSUQsIHVybCwgbGluZSwgZW5hYmxlZCwgY29uZGl0aW9uKQorICAg
IHsKKyAgICAgICAgdGhpcy5fc2V0QnJlYWtwb2ludChzb3VyY2VJRCwgdXJsLCBsaW5lLCBlbmFi
bGVkLCBjb25kaXRpb24pOworICAgIH0sCisKICAgICBwYXVzZWRTY3JpcHQ6IGZ1bmN0aW9uKGRl
dGFpbHMpCiAgICAgewotICAgICAgICB0aGlzLl9wYXVzZWQgPSB0cnVlOwotICAgICAgICBpZiAo
Il9jb250aW51ZVRvTGluZUJyZWFrcG9pbnRJZCIgaW4gdGhpcykgewotICAgICAgICAgICAgSW5z
cGVjdG9yQmFja2VuZC5yZW1vdmVCcmVha3BvaW50KHRoaXMuX2NvbnRpbnVlVG9MaW5lQnJlYWtw
b2ludElkKTsKLSAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9jb250aW51ZVRvTGluZUJyZWFrcG9p
bnRJZDsKLSAgICAgICAgfQogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
ZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMuRGVidWdnZXJQYXVzZWQsIGRldGFpbHMp
OwogCiAgICAgICAgIGlmIChkZXRhaWxzLmV2ZW50VHlwZSA9PT0gV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyRXZlbnRUeXBlcy5KYXZhU2NyaXB0UGF1c2UgfHwgZGV0YWlscy5ldmVudFR5cGUgPT09IFdl
Ykluc3BlY3Rvci5EZWJ1Z2dlckV2ZW50VHlwZXMuTmF0aXZlQnJlYWtwb2ludCkKQEAgLTE4NCw3
ICsxNzksNiBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5wcm90b3R5cGUgPSB7CiAKICAg
ICByZXN1bWVkU2NyaXB0OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB0aGlzLl9wYXVzZWQg
PSBmYWxzZTsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVj
dG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzLkRlYnVnZ2VyUmVzdW1lZCk7CiAKICAgICAgICAgaWYg
KCF0aGlzLl9sYXN0SGl0QnJlYWtwb2ludCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
U2NyaXB0c1BhbmVsLmpzCmluZGV4IDU2ZmFjZjI2NDBjZmIwZTE1MjRmNDY1YThiMzE4OTgyMWIx
NTEwZTcuLjczODc5NjQxMjhjMWI5NTM3YzJiOTg2OTQ4NTdjNzZhYmFhZGMxMTYgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKKysrIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcwpAQCAtMjcxLDYgKzI3MSwx
MyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhp
cy5fYWRkU2NyaXB0VG9GaWxlc01lbnUoc2NyaXB0KTsKICAgICB9LAogCisgICAgY29udGludWVU
b0xpbmU6IGZ1bmN0aW9uKHNvdXJjZUlELCBsaW5lKQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVj
dG9yLmRlYnVnZ2VyTW9kZWwuc2V0T25lVGltZUJyZWFrcG9pbnQoc291cmNlSUQsIGxpbmUpOwor
ICAgICAgICBpZiAodGhpcy5wYXVzZWQpCisgICAgICAgICAgICB0aGlzLl90b2dnbGVQYXVzZSgp
OworICAgIH0sCisKICAgICBfcmVzb3VyY2VMb2FkaW5nRmluaXNoZWQ6IGZ1bmN0aW9uKGUpCiAg
ICAgewogICAgICAgICB2YXIgcmVzb3VyY2UgPSBlLnRhcmdldDsKQEAgLTM2NSw2ICszNzIsNyBA
QCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAg
IHZhciBjYWxsRnJhbWVzID0gZXZlbnQuZGF0YS5jYWxsRnJhbWVzOwogCisgICAgICAgIFdlYklu
c3BlY3Rvci5kZWJ1Z2dlck1vZGVsLnJlbW92ZU9uZVRpbWVCcmVha3BvaW50KCk7CiAgICAgICAg
IHRoaXMuX3BhdXNlZCA9IHRydWU7CiAgICAgICAgIHRoaXMuX3dhaXRpbmdUb1BhdXNlID0gZmFs
c2U7CiAgICAgICAgIHRoaXMuX3N0ZXBwaW5nID0gZmFsc2U7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWUuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU291cmNlRnJhbWUuanMKaW5kZXggZmE4NDQxZDY3MWE5ZTE3ZjBjNTNjZDYzOGRm
N2M1NjcxYTZkMWI2MS4uNGJlYWQ4Zjg3M2NhOTU5ZmZkNGJjMjc1NjQ5ZWRiMzgxNmQ4MTFiYiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzCisr
KyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcwpAQCAtNDgyLDcg
KzQ4Miw3IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHZhciBicmVha3BvaW50ID0gdGhpcy5fZmluZEJyZWFrcG9pbnQobGluZU51bWJlcik7CiAgICAg
ICAgIGlmICghYnJlYWtwb2ludCkgewogICAgICAgICAgICAgLy8gVGhpcyByb3cgZG9lc24ndCBo
YXZlIGEgYnJlYWtwb2ludDogV2Ugd2FudCB0byBzaG93IEFkZCBCcmVha3BvaW50IGFuZCBBZGQg
YW5kIEVkaXQgQnJlYWtwb2ludC4KLSAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0o
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBZGQgQnJlYWtwb2ludCIpLCB0aGlzLl9zZXRCcmVha3Bv
aW50LmJpbmQodGhpcywgbGluZU51bWJlciwgIiIsIHRydWUpKTsKKyAgICAgICAgICAgIGNvbnRl
eHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBZGQgQnJlYWtwb2ludCIp
LCB0aGlzLl9zZXRCcmVha3BvaW50LmJpbmQodGhpcywgbGluZU51bWJlcikpOwogCiAgICAgICAg
ICAgICBmdW5jdGlvbiBhZGRDb25kaXRpb25hbEJyZWFrcG9pbnQoKQogICAgICAgICAgICAgewpA
QCAtNDkxLDcgKzQ5MSw3IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZW1vdmVCcmVh
a3BvaW50RGVjb3JhdGlvbihsaW5lTnVtYmVyKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGNv
bW1pdHRlZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NldEJyZWFrcG9pbnQobGlu
ZU51bWJlciwgdHJ1ZSwgY29uZGl0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMu
X3NldEJyZWFrcG9pbnQobGluZU51bWJlciwgY29uZGl0aW9uKTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgdGhpcy5fZWRpdEJyZWFrcG9pbnRDb25kaXRpb24obGluZU51bWJl
ciwgIiIsIGRpZEVkaXRCcmVha3BvaW50Q29uZGl0aW9uLmJpbmQodGhpcykpOwogICAgICAgICAg
ICAgfQpAQCAtNTAzLDIzICs1MDMsMTYgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBmdW5jdGlvbiBkaWRFZGl0
QnJlYWtwb2ludENvbmRpdGlvbihjb21taXR0ZWQsIGNvbmRpdGlvbikKICAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjb21taXR0ZWQpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrcG9pbnQucmVtb3ZlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0
aGlzLl9zZXRCcmVha3BvaW50KGJyZWFrcG9pbnQubGluZSwgYnJlYWtwb2ludC5lbmFibGVkLCBj
b25kaXRpb24pOwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlm
IChjb21taXR0ZWQpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVha3BvaW50LmNvbmRpdGlv
biA9IGNvbmRpdGlvbjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgdGhpcy5f
ZWRpdEJyZWFrcG9pbnRDb25kaXRpb24obGluZU51bWJlciwgYnJlYWtwb2ludC5jb25kaXRpb24s
IGRpZEVkaXRCcmVha3BvaW50Q29uZGl0aW9uLmJpbmQodGhpcykpOworICAgICAgICAgICAgICAg
IHRoaXMuX2VkaXRCcmVha3BvaW50Q29uZGl0aW9uKGxpbmVOdW1iZXIsIGJyZWFrcG9pbnQuY29u
ZGl0aW9uLCBkaWRFZGl0QnJlYWtwb2ludENvbmRpdGlvbik7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiRWRp
dCBCcmVha3BvaW504oCmIiksIGVkaXRCcmVha3BvaW50Q29uZGl0aW9uLmJpbmQodGhpcykpOwot
ICAgICAgICAgICAgZnVuY3Rpb24gc2V0QnJlYWtwb2ludEVuYWJsZWQoZW5hYmxlZCkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBicmVha3BvaW50LnJlbW92ZSgpOwotICAgICAgICAg
ICAgICAgIHRoaXMuX3NldEJyZWFrcG9pbnQoYnJlYWtwb2ludC5saW5lLCBlbmFibGVkLCBicmVh
a3BvaW50LmNvbmRpdGlvbik7Ci0gICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoYnJlYWtw
b2ludC5lbmFibGVkKQotICAgICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJEaXNhYmxlIEJyZWFrcG9pbnQiKSwgc2V0QnJlYWtwb2ludEVu
YWJsZWQuYmluZCh0aGlzLCBmYWxzZSkpOworICAgICAgICAgICAgICAgIGNvbnRleHRNZW51LmFw
cGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEaXNhYmxlIEJyZWFrcG9pbnQiKSwgZnVu
Y3Rpb24oKSB7IGJyZWFrcG9pbnQuZW5hYmxlZCA9IGZhbHNlOyB9KTsKICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5V
SVN0cmluZygiRW5hYmxlIEJyZWFrcG9pbnQiKSwgc2V0QnJlYWtwb2ludEVuYWJsZWQuYmluZCh0
aGlzLCB0cnVlKSk7CisgICAgICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkVuYWJsZSBCcmVha3BvaW50IiksIGZ1bmN0aW9uKCkgeyBicmVh
a3BvaW50LmVuYWJsZWQgPSB0cnVlOyB9KTsKICAgICAgICAgfQogICAgICAgICBjb250ZXh0TWVu
dS5zaG93KGV2ZW50KTsKICAgICB9LApAQCAtNTQyLDExICs1MzUsMTIgQEAgV2ViSW5zcGVjdG9y
LlNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB2YXIgYnJlYWtwb2ludCA9IHRo
aXMuX2ZpbmRCcmVha3BvaW50KGxpbmVOdW1iZXIpOwogICAgICAgICBpZiAoYnJlYWtwb2ludCkg
ewotICAgICAgICAgICAgYnJlYWtwb2ludC5yZW1vdmUoKTsKICAgICAgICAgICAgIGlmIChldmVu
dC5zaGlmdEtleSkKLSAgICAgICAgICAgICAgICB0aGlzLl9zZXRCcmVha3BvaW50KGJyZWFrcG9p
bnQubGluZSwgIWJyZWFrcG9pbnQuZW5hYmxlZCwgYnJlYWtwb2ludC5jb25kaXRpb24pOworICAg
ICAgICAgICAgICAgIGJyZWFrcG9pbnQuZW5hYmxlZCA9ICFicmVha3BvaW50LmVuYWJsZWQ7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgYnJlYWtwb2ludC5yZW1vdmUoKTsKICAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICB0aGlzLl9zZXRCcmVha3BvaW50KGxpbmVOdW1iZXIs
IHRydWUsICIiKTsKKyAgICAgICAgICAgIHRoaXMuX3NldEJyZWFrcG9pbnQobGluZU51bWJlcik7
CiAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgfSwKIApAQCAtNzgxLDcgKzc3
NSw3IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZh
ciBzb3VyY2VJRCA9IHRoaXMuX3NvdXJjZUlERm9yTGluZShsaW5lTnVtYmVyKTsKICAgICAgICAg
aWYgKCFzb3VyY2VJRCkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgV2ViSW5zcGVjdG9y
LmRlYnVnZ2VyTW9kZWwuY29udGludWVUb0xpbmUoc291cmNlSUQsIGxpbmVOdW1iZXIpOworICAg
ICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMuY29udGludWVUb0xpbmUoc291cmNlSUQs
IGxpbmVOdW1iZXIpOwogICAgIH0sCiAKICAgICBfZWRpdExpbmU6IGZ1bmN0aW9uKGxpbmVOdW1i
ZXIsIG5ld0NvbnRlbnQsIGNhbmNlbEVkaXRpbmdDYWxsYmFjaykKQEAgLTgyOSwxMiArODIzLDEy
IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBz
Y3JpcHQucmVzb3VyY2Uuc2V0Q29udGVudChuZXdDb250ZW50LCByZXZlcnRFZGl0TGluZUNhbGxi
YWNrKTsKICAgICB9LAogCi0gICAgX3NldEJyZWFrcG9pbnQ6IGZ1bmN0aW9uKGxpbmVOdW1iZXIs
IGVuYWJsZWQsIGNvbmRpdGlvbikKKyAgICBfc2V0QnJlYWtwb2ludDogZnVuY3Rpb24obGluZU51
bWJlciwgY29uZGl0aW9uKQogICAgIHsKICAgICAgICAgdmFyIHNvdXJjZUlEID0gdGhpcy5fc291
cmNlSURGb3JMaW5lKGxpbmVOdW1iZXIpOwogICAgICAgICBpZiAoIXNvdXJjZUlEKQogICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5zZXRCcmVh
a3BvaW50KHNvdXJjZUlELCBsaW5lTnVtYmVyLCBlbmFibGVkLCBjb25kaXRpb24pOworICAgICAg
ICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5zZXRCcmVha3BvaW50KHNvdXJjZUlELCBsaW5l
TnVtYmVyLCB0cnVlLCBjb25kaXRpb24pOwogICAgICAgICBpZiAoIVdlYkluc3BlY3Rvci5wYW5l
bHMuc2NyaXB0cy5icmVha3BvaW50c0FjdGl2YXRlZCkKICAgICAgICAgICAgIFdlYkluc3BlY3Rv
ci5wYW5lbHMuc2NyaXB0cy50b2dnbGVCcmVha3BvaW50c0NsaWNrZWQoKTsKICAgICB9LAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>