<?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>69334</bug_id>
          
          <creation_ts>2011-10-04 05:39:19 -0700</creation_ts>
          <short_desc>Web Inspector: make DataGrid compile</short_desc>
          <delta_ts>2011-10-04 07:22:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>477557</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-10-04 05:39:19 -0700</bug_when>
    <thetext>Patch to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477558</commentid>
    <comment_count>1</comment_count>
      <attachid>109611</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-10-04 05:42:32 -0700</bug_when>
    <thetext>Created attachment 109611
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477580</commentid>
    <comment_count>2</comment_count>
      <attachid>109611</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-10-04 07:09:58 -0700</bug_when>
    <thetext>Comment on attachment 109611
Patch

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

&gt; Source/WebCore/inspector/front-end/DataGrid.js:218
&gt; +        var context = element.textContent;

Remove these lines?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477582</commentid>
    <comment_count>3</comment_count>
      <attachid>109618</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-10-04 07:11:57 -0700</bug_when>
    <thetext>Created attachment 109618
[Patch] review comments addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477586</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-10-04 07:22:34 -0700</bug_when>
    <thetext>Committed r96591: &lt;http://trac.webkit.org/changeset/96591&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109611</attachid>
            <date>2011-10-04 05:42:32 -0700</date>
            <delta_ts>2011-10-04 07:11:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69334-20111004164229.patch</filename>
            <type>text/plain</type>
            <size>24857</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY1ODQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4ODljOTVjOWM1ZTE3ZGRh
YTljN2ZlYzRiMGUyOTc4YWQzY2ZkYjQyLi4xNzkzMWFlODE2ODYyYTkxNGZhYWJkMmQwZWM1MmQz
OTBmZjgwNmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTEtMTAtMDQgIFBhdmVs
IEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogbWFrZSBEYXRhR3JpZCBjb21waWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02OTMzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnNoOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRGF0YUdyaWQuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRGF0YUdyaWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5f
c3RhcnRFZGl0aW5nQ29sdW1uT2ZEYXRhR3JpZE5vZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkRhdGFHcmlkLnByb3RvdHlwZS5fc3RhcnRFZGl0aW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5EYXRhR3JpZC5wcm90b3R5cGUuX3N0YXJ0RWRpdGluZ0NvbmZpZyk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLl9lZGl0aW5nQ29tbWl0dGVkLm1vdmVUb05leHRJ
Zk5lZWRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLl9lZGl0
aW5nQ29tbWl0dGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUu
X2VkaXRpbmdDYW5jZWxsZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3Rv
dHlwZS5yZW1vdmVDaGlsZHJlblJlY3Vyc2l2ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0
YUdyaWQucHJvdG90eXBlLl9rZXlEb3duKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3Jp
ZC5wcm90b3R5cGUuX3N0YXJ0UmVzaXplckRyYWdnaW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5EYXRhR3JpZC5wcm90b3R5cGUuX3Jlc2l6ZXJEcmFnZ2luZyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLl9lbmRSZXNpemVyRHJhZ2dpbmcpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUuX2F0dGFjaCk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9VSVV0aWxzLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmlz
QmVpbmdFZGl0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLm1hcmtCZWluZ0VkaXRlZCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuaXNFZGl0aW5nQW55RmllbGQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkVkaXRpbmdDb25maWcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGlu
Zy5ibHVyRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0aW5n
LmdldENvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZy5jbGVhblVw
QWZ0ZXJFZGl0aW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5zdGFydEVkaXRpbmcuZWRpdGlu
Z0NhbmNlbGxlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0aW5nLmVkaXRpbmdD
b21taXR0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZy5kZWZhdWx0Rmlu
aXNoSGFuZGxlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0aW5nKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5zdGFydEVkaXRpbmcucGFzdGVFdmVudExpc3RlbmVyKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5zdGFydEVkaXRpbmcua2V5RG93bkV2ZW50TGlzdGVuZXIpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvZXh0ZXJucy5qczoKKyAgICAgICAgKEFycmF5LnBy
b3RvdHlwZS5yZW1vdmUpOgorICAgICAgICAod2luZG93LmdldENvbXB1dGVkU3R5bGUpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOgorCiAyMDExLTEwLTA0ICBQ
YXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiBzdGFydCBhZGRpbmcgVUkgY29tcG9uZW50cyB0byB0aGUgY29tcGlsYXRpb24gcHJvY2Vz
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVu
ZC5zaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5zaAppbmRl
eCBhZDM2NjhjYTBkYjhiNjUwZmNlOWUzNDA3N2QxMTU5NjdhZDZkZmJlLi45YjEwMDc4MTgxYTRh
OTQ3ODFjZTM4MWQzYTE4MzIyNzllNGVlNjBkIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQuc2gKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2NvbXBpbGUtZnJvbnQtZW5kLnNoCkBAIC02MSw5ICs2MSwxMCBAQCBqYXZhIC1qYXIgfi9j
bG9zdXJlL2NvbXBpbGVyLmphciAtLWNvbXBpbGF0aW9uX2xldmVsIFNJTVBMRV9PUFRJTUlaQVRJ
T05TIC0td2FybgogICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvUmVzb3VyY2UuanMgXAogICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvTmV0d29ya01hbmFnZXIuanMgXAogICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvVUlTb3VyY2VDb2RlLmpzIFwKLSAgICAtLW1vZHVsZSBqc21v
ZHVsZV91aToyMTpqc21vZHVsZV9jb21tb24gXAorICAgIC0tbW9kdWxlIGpzbW9kdWxlX3VpOjIy
OmpzbW9kdWxlX2NvbW1vbiBcCiAgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9DaGVja2JveC5qcyBcCiAgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9Db250ZXh0TWVudS5qcyBcCisgICAgICAgIC0tanMgU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhR3JpZC5qcyBcCiAgICAgICAgIC0tanMgU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EcmF3ZXIuanMgXAogICAgICAgICAtLWpz
IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRW1wdHlWaWV3LmpzIFwKICAgICAg
ICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlbHBTY3JlZW4uanMg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhR3Jp
ZC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGF0YUdyaWQuanMKaW5k
ZXggMGYzMmFhNzAxNDg4ZGE1MzI1MDllOGIzNjgzZTgzYmVjYTg1ODBjZC4uNjRkNmYxM2QwNTZh
OWRhZGRhMzI4ODY5Y2FlN2JmMTZjZWQ1YzQyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhR3JpZC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0RhdGFHcmlkLmpzCkBAIC0yMyw2ICsyMywxMCBAQAogICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3Bl
Y3Rvci5PYmplY3R9CisgKi8KIFdlYkluc3BlY3Rvci5EYXRhR3JpZCA9IGZ1bmN0aW9uKGNvbHVt
bnMsIGVkaXRDYWxsYmFjaywgZGVsZXRlQ2FsbGJhY2spCiB7CiAgICAgdGhpcy5lbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CkBAIC0xMjAsOSArMTI0LDkgQEAgV2ViSW5z
cGVjdG9yLkRhdGFHcmlkID0gZnVuY3Rpb24oY29sdW1ucywgZWRpdENhbGxiYWNrLCBkZWxldGVD
YWxsYmFjaykKIAogICAgIGZvciAodmFyIGNvbHVtbklkZW50aWZpZXIgaW4gY29sdW1ucykgewog
ICAgICAgICB2YXIgY29sdW1uID0gY29sdW1uc1tjb2x1bW5JZGVudGlmaWVyXTsKLSAgICAgICAg
dmFyIGNlbGwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwotICAgICAgICBjZWxsLmNs
YXNzTmFtZSA9IGNvbHVtbklkZW50aWZpZXIgKyAiLWNvbHVtbiI7Ci0gICAgICAgIGZpbGxlclJv
dy5hcHBlbmRDaGlsZChjZWxsKTsKKyAgICAgICAgdmFyIHRkID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgidGQiKTsKKyAgICAgICAgdGQuY2xhc3NOYW1lID0gY29sdW1uSWRlbnRpZmllciArICIt
Y29sdW1uIjsKKyAgICAgICAgZmlsbGVyUm93LmFwcGVuZENoaWxkKHRkKTsKICAgICB9CiAKICAg
ICB0aGlzLl9kYXRhVGFibGVDb2x1bW5Hcm91cCA9IGNvbHVtbkdyb3VwLmNsb25lTm9kZSh0cnVl
KTsKQEAgLTE4MCwxMSArMTg0LDcgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9
IHsKICAgICAgICAgdGhpcy5fZWRpdGluZ05vZGUuc2VsZWN0KCk7CiAKICAgICAgICAgdmFyIGVs
ZW1lbnQgPSB0aGlzLl9lZGl0aW5nTm9kZS5fZWxlbWVudC5jaGlsZHJlbltjb2x1bW5dOwotICAg
ICAgICBXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0aW5nKGVsZW1lbnQsIHsKLSAgICAgICAgICAgIGNv
bnRleHQ6IGVsZW1lbnQudGV4dENvbnRlbnQsCi0gICAgICAgICAgICBjb21taXRIYW5kbGVyOiB0
aGlzLl9lZGl0aW5nQ29tbWl0dGVkLmJpbmQodGhpcyksCi0gICAgICAgICAgICBjYW5jZWxIYW5k
bGVyOiB0aGlzLl9lZGl0aW5nQ2FuY2VsbGVkLmJpbmQodGhpcykKLSAgICAgICAgfSk7CisgICAg
ICAgIFdlYkluc3BlY3Rvci5zdGFydEVkaXRpbmcoZWxlbWVudCwgdGhpcy5fc3RhcnRFZGl0aW5n
Q29uZmlnKGVsZW1lbnQpKTsKICAgICAgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnNldEJhc2VB
bmRFeHRlbnQoZWxlbWVudCwgMCwgZWxlbWVudCwgMSk7CiAgICAgfSwKIApAQCAtMjA2LDIxICsy
MDYsMjggQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IHJldHVybiB0aGlzLl9zdGFydEVkaXRpbmdDb2x1bW5PZkRhdGFHcmlkTm9kZSh0aGlzLl9lZGl0
aW5nTm9kZSwgMCk7CiAKICAgICAgICAgdGhpcy5fZWRpdGluZyA9IHRydWU7Ci0gICAgICAgIFdl
Ykluc3BlY3Rvci5zdGFydEVkaXRpbmcoZWxlbWVudCwgewotICAgICAgICAgICAgY29udGV4dDog
ZWxlbWVudC50ZXh0Q29udGVudCwKLSAgICAgICAgICAgIGNvbW1pdEhhbmRsZXI6IHRoaXMuX2Vk
aXRpbmdDb21taXR0ZWQuYmluZCh0aGlzKSwKLSAgICAgICAgICAgIGNhbmNlbEhhbmRsZXI6IHRo
aXMuX2VkaXRpbmdDYW5jZWxsZWQuYmluZCh0aGlzKQotICAgICAgICB9KTsKKyAgICAgICAgV2Vi
SW5zcGVjdG9yLnN0YXJ0RWRpdGluZyhlbGVtZW50LCB0aGlzLl9zdGFydEVkaXRpbmdDb25maWco
ZWxlbWVudCkpOworCiAgICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRCYXNlQW5kRXh0
ZW50KGVsZW1lbnQsIDAsIGVsZW1lbnQsIDEpOwogICAgIH0sCiAKKworICAgIF9zdGFydEVkaXRp
bmdDb25maWc6IGZ1bmN0aW9uKGVsZW1lbnQpCisgICAgeworICAgICAgICB2YXIgY29uZmlnID0g
bmV3IFdlYkluc3BlY3Rvci5FZGl0aW5nQ29uZmlnKCk7CisgICAgICAgIHZhciBjb250ZXh0ID0g
ZWxlbWVudC50ZXh0Q29udGVudDsKKyAgICAgICAgdmFyIGNvbW1pdEhhbmRsZXIgPSB0aGlzLl9l
ZGl0aW5nQ29tbWl0dGVkLmJpbmQodGhpcyk7CisgICAgICAgIHZhciBjYW5jZWxIYW5kbGVyID0g
dGhpcy5fZWRpdGluZ0NhbmNlbGxlZC5iaW5kKHRoaXMpOworICAgICAgICByZXR1cm4gY29uZmln
OworICAgIH0sCisKICAgICBfZWRpdGluZ0NvbW1pdHRlZDogZnVuY3Rpb24oZWxlbWVudCwgbmV3
VGV4dCwgb2xkVGV4dCwgY29udGV4dCwgbW92ZURpcmVjdGlvbikKICAgICB7CiAgICAgICAgIC8v
IEZJWE1FOiBXZSBuZWVkIG1vcmUgY29sdW1uIGlkZW50aWZpZXJzIGhlcmUgdGhyb3VnaG91dCB0
aGlzIGZ1bmN0aW9uLgogICAgICAgICAvLyBOb3QgbmVlZGVkIHlldCBzaW5jZSBvbmx5IGVkaXRh
YmxlIERhdGFHcmlkIGlzIERPTSBTdG9yYWdlLCB3aGljaCBpcyBLZXkgLSBWYWx1ZS4KIAogICAg
ICAgICAvLyBGSVhNRTogQmV0dGVyIHdheSB0byBkbyB0aGlzIHRoYW4gcmVndWxhciBleHByZXNz
aW9ucz8KLSAgICAgICAgdmFyIGNvbHVtbklkZW50aWZpZXIgPSBwYXJzZUludChlbGVtZW50LmNs
YXNzTmFtZS5tYXRjaCgvXGIoXGQrKS1jb2x1bW5cYi8pWzFdKTsKKyAgICAgICAgdmFyIGNvbHVt
bklkZW50aWZpZXIgPSBwYXJzZUludChlbGVtZW50LmNsYXNzTmFtZS5tYXRjaCgvXGIoXGQrKS1j
b2x1bW5cYi8pWzFdLCAxMCk7CiAKICAgICAgICAgdmFyIHRleHRCZWZvcmVFZGl0aW5nID0gdGhp
cy5fZWRpdGluZ05vZGUuZGF0YVtjb2x1bW5JZGVudGlmaWVyXTsKICAgICAgICAgdmFyIGN1cnJl
bnRFZGl0aW5nTm9kZSA9IHRoaXMuX2VkaXRpbmdOb2RlOwpAQCAtMjQwLDcgKzI0Nyw3IEBAIFdl
Ykluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgaWYgKG5l
eHREYXRhR3JpZE5vZGUpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdGFydEVk
aXRpbmdDb2x1bW5PZkRhdGFHcmlkTm9kZShuZXh0RGF0YUdyaWROb2RlLCAwKTsKICAgICAgICAg
ICAgICAgICBpZiAoY3VycmVudEVkaXRpbmdOb2RlLmlzQ3JlYXRpb25Ob2RlICYmIHdhc0NoYW5n
ZSkgewotICAgICAgICAgICAgICAgICAgICBhZGRDcmVhdGlvbk5vZGUoZmFsc2UpOworICAgICAg
ICAgICAgICAgICAgICB0aGlzLmFkZENyZWF0aW9uTm9kZShmYWxzZSk7CiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0aGlzLl9zdGFydEVkaXRpbmdDb2x1bW5PZkRhdGFHcmlkTm9kZSh0aGlz
LmNyZWF0aW9uTm9kZSwgMCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTI3Nyw3ICsyODQsNyBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBl
ID0gewogICAgICAgICBtb3ZlVG9OZXh0SWZOZWVkZWQuY2FsbCh0aGlzLCB0cnVlKTsKICAgICB9
LAogCi0gICAgX2VkaXRpbmdDYW5jZWxsZWQ6IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbnRleHQpCisg
ICAgX2VkaXRpbmdDYW5jZWxsZWQ6IGZ1bmN0aW9uKGVsZW1lbnQpCiAgICAgewogICAgICAgICBk
ZWxldGUgdGhpcy5fZWRpdGluZzsKICAgICAgICAgdGhpcy5fZWRpdGluZ05vZGUgPSBudWxsOwpA
QCAtNjcyLDcgKzY3OSw3IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIH0KIAogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuVG9SZW1vdmUu
bGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuVG9SZW1vdmVb
aV07CisgICAgICAgICAgICBjaGlsZCA9IGNoaWxkcmVuVG9SZW1vdmVbaV07CiAgICAgICAgICAg
ICBjaGlsZC5kZXNlbGVjdCgpOwogICAgICAgICAgICAgY2hpbGQuX2RldGFjaCgpOwogCkBAIC03
MzksMTIgKzc0NiwxMiBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogICAg
ICAgICBpZiAoZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIlVwIiAmJiAhZXZlbnQuYWx0S2V5KSB7
CiAgICAgICAgICAgICBuZXh0U2VsZWN0ZWROb2RlID0gdGhpcy5zZWxlY3RlZE5vZGUudHJhdmVy
c2VQcmV2aW91c05vZGUodHJ1ZSk7CiAgICAgICAgICAgICB3aGlsZSAobmV4dFNlbGVjdGVkTm9k
ZSAmJiAhbmV4dFNlbGVjdGVkTm9kZS5zZWxlY3RhYmxlKQotICAgICAgICAgICAgICAgIG5leHRT
ZWxlY3RlZE5vZGUgPSBuZXh0U2VsZWN0ZWROb2RlLnRyYXZlcnNlUHJldmlvdXNOb2RlKCF0aGlz
LmV4cGFuZFRyZWVOb2Rlc1doZW5BcnJvd2luZyk7CisgICAgICAgICAgICAgICAgbmV4dFNlbGVj
dGVkTm9kZSA9IG5leHRTZWxlY3RlZE5vZGUudHJhdmVyc2VQcmV2aW91c05vZGUodHJ1ZSk7CiAg
ICAgICAgICAgICBoYW5kbGVkID0gbmV4dFNlbGVjdGVkTm9kZSA/IHRydWUgOiBmYWxzZTsKICAg
ICAgICAgfSBlbHNlIGlmIChldmVudC5rZXlJZGVudGlmaWVyID09PSAiRG93biIgJiYgIWV2ZW50
LmFsdEtleSkgewogICAgICAgICAgICAgbmV4dFNlbGVjdGVkTm9kZSA9IHRoaXMuc2VsZWN0ZWRO
b2RlLnRyYXZlcnNlTmV4dE5vZGUodHJ1ZSk7CiAgICAgICAgICAgICB3aGlsZSAobmV4dFNlbGVj
dGVkTm9kZSAmJiAhbmV4dFNlbGVjdGVkTm9kZS5zZWxlY3RhYmxlKQotICAgICAgICAgICAgICAg
IG5leHRTZWxlY3RlZE5vZGUgPSBuZXh0U2VsZWN0ZWROb2RlLnRyYXZlcnNlTmV4dE5vZGUoIXRo
aXMuZXhwYW5kVHJlZU5vZGVzV2hlbkFycm93aW5nKTsKKyAgICAgICAgICAgICAgICBuZXh0U2Vs
ZWN0ZWROb2RlID0gbmV4dFNlbGVjdGVkTm9kZS50cmF2ZXJzZU5leHROb2RlKHRydWUpOwogICAg
ICAgICAgICAgaGFuZGxlZCA9IG5leHRTZWxlY3RlZE5vZGUgPyB0cnVlIDogZmFsc2U7CiAgICAg
ICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIkxlZnQiKSB7CiAgICAgICAg
ICAgICBpZiAodGhpcy5zZWxlY3RlZE5vZGUuZXhwYW5kZWQpIHsKQEAgLTk1MCwxNiArOTU3LDE2
IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAKICAgICBfc3RhcnRSZXNp
emVyRHJhZ2dpbmc6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdGhpcy5jdXJyZW50
UmVzaXplciA9IGV2ZW50LnRhcmdldDsKLSAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRSZXNpemVy
LnJpZ2h0TmVpZ2hib3JpbmdDb2x1bW5JRCkKKyAgICAgICAgdGhpcy5fY3VycmVudFJlc2l6ZXIg
PSBldmVudC50YXJnZXQ7CisgICAgICAgIGlmICghdGhpcy5fY3VycmVudFJlc2l6ZXIucmlnaHRO
ZWlnaGJvcmluZ0NvbHVtbklEKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBXZWJJbnNw
ZWN0b3IuZWxlbWVudERyYWdTdGFydCh0aGlzLmxhc3RSZXNpemVyLCB0aGlzLl9yZXNpemVyRHJh
Z2dpbmcuYmluZCh0aGlzKSwKKyAgICAgICAgV2ViSW5zcGVjdG9yLmVsZW1lbnREcmFnU3RhcnQo
dGhpcy5fY3VycmVudFJlc2l6ZXIsIHRoaXMuX3Jlc2l6ZXJEcmFnZ2luZy5iaW5kKHRoaXMpLAog
ICAgICAgICAgICAgdGhpcy5fZW5kUmVzaXplckRyYWdnaW5nLmJpbmQodGhpcyksIGV2ZW50LCAi
Y29sLXJlc2l6ZSIpOwogICAgIH0sCiAKICAgICBfcmVzaXplckRyYWdnaW5nOiBmdW5jdGlvbihl
dmVudCkKICAgICB7Ci0gICAgICAgIHZhciByZXNpemVyID0gdGhpcy5jdXJyZW50UmVzaXplcjsK
KyAgICAgICAgdmFyIHJlc2l6ZXIgPSB0aGlzLl9jdXJyZW50UmVzaXplcjsKICAgICAgICAgaWYg
KCFyZXNpemVyKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xMDA5LDcgKzEwMTYsNyBAQCBX
ZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgIF9lbmRSZXNpemVyRHJhZ2dp
bmc6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmVsZW1lbnRE
cmFnRW5kKGV2ZW50KTsKLSAgICAgICAgdGhpcy5jdXJyZW50UmVzaXplciA9IG51bGw7CisgICAg
ICAgIHRoaXMuX2N1cnJlbnRSZXNpemVyID0gbnVsbDsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoIndpZHRoIGNoYW5nZWQiKTsKICAgICB9LAogCkBAIC0xMDI2LDYgKzEw
MzMsMTAgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLlJlc2l6ZU1ldGhvZCA9IHsKIAogV2ViSW5z
cGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0
LnByb3RvdHlwZTsKIAorLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNw
ZWN0b3IuT2JqZWN0fQorICovCiBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlID0gZnVuY3Rpb24o
ZGF0YSwgaGFzQ2hpbGRyZW4pCiB7CiAgICAgdGhpcy5fZXhwYW5kZWQgPSBmYWxzZTsKQEAgLTEz
NDIsNiArMTM1Myw5IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewog
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycygicmV2ZWFsZWQiKTsKICAgICB9
LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtib29sZWFuPX0gc3VwcmVzc1NlbGVjdGVkRXZl
bnQKKyAgICAgKi8KICAgICBzZWxlY3Q6IGZ1bmN0aW9uKHN1cHJlc3NTZWxlY3RlZEV2ZW50KQog
ICAgIHsKICAgICAgICAgaWYgKCF0aGlzLmRhdGFHcmlkIHx8ICF0aGlzLnNlbGVjdGFibGUgfHwg
dGhpcy5zZWxlY3RlZCkKQEAgLTEzNjYsNiArMTM4MCw5IEBAIFdlYkluc3BlY3Rvci5EYXRhR3Jp
ZE5vZGUucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLnNlbGVjdCgpOwogICAgIH0sCiAKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBzdXByZXNzRGVzZWxlY3RlZEV2ZW50Cisg
ICAgICovCiAgICAgZGVzZWxlY3Q6IGZ1bmN0aW9uKHN1cHJlc3NEZXNlbGVjdGVkRXZlbnQpCiAg
ICAgewogICAgICAgICBpZiAoIXRoaXMuZGF0YUdyaWQgfHwgdGhpcy5kYXRhR3JpZC5zZWxlY3Rl
ZE5vZGUgIT09IHRoaXMgfHwgIXRoaXMuc2VsZWN0ZWQpCkBAIC0xNDU5LDcgKzE0NzYsNyBAQCBX
ZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIG5leHRO
b2RlID0gbnVsbDsKICAgICAgICAgdmFyIHByZXZpb3VzTm9kZSA9IHRoaXMudHJhdmVyc2VQcmV2
aW91c05vZGUodHJ1ZSwgdHJ1ZSk7CiAgICAgICAgIGlmIChwcmV2aW91c05vZGUgJiYgcHJldmlv
dXNOb2RlLmVsZW1lbnQucGFyZW50Tm9kZSAmJiBwcmV2aW91c05vZGUuZWxlbWVudC5uZXh0U2li
bGluZykKLSAgICAgICAgICAgIHZhciBuZXh0Tm9kZSA9IHByZXZpb3VzTm9kZS5lbGVtZW50Lm5l
eHRTaWJsaW5nOworICAgICAgICAgICAgbmV4dE5vZGUgPSBwcmV2aW91c05vZGUuZWxlbWVudC5u
ZXh0U2libGluZzsKICAgICAgICAgaWYgKCFuZXh0Tm9kZSkKICAgICAgICAgICAgIG5leHROb2Rl
ID0gdGhpcy5kYXRhR3JpZC5kYXRhVGFibGVCb2R5Lmxhc3RDaGlsZDsKICAgICAgICAgdGhpcy5k
YXRhR3JpZC5kYXRhVGFibGVCb2R5Lmluc2VydEJlZm9yZSh0aGlzLmVsZW1lbnQsIG5leHROb2Rl
KTsKQEAgLTE1MTAsNiArMTUyNywxMCBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3Rv
dHlwZSA9IHsKIAogV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUuX19wcm90b19f
ID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CiAKKy8qKgorICogQGNvbnN0cnVjdG9y
CisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZX0KKyAqLwogV2ViSW5zcGVj
dG9yLkNyZWF0aW9uRGF0YUdyaWROb2RlID0gZnVuY3Rpb24oZGF0YSwgaGFzQ2hpbGRyZW4pCiB7
CiAgICAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5jYWxsKHRoaXMsIGRhdGEsIGhhc0NoaWxk
cmVuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVUlV
dGlscy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVUlVdGlscy5qcwpp
bmRleCBjNDlhNTQyZmIxZGRiMjUwODRkYWIyNWJlYzQ4N2FlMDkzNWJiMjllLi5mZTcxZDc3YzM2
Mzg0NmNmOTlhMzlmZjQ1YTAzNWY0ZWI4OWU5ZjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1VJVXRpbHMuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9VSVV0aWxzLmpzCkBAIC0xNjUsMyArMTY1LDIwMyBAQCBXZWJJbnNw
ZWN0b3IuYW5pbWF0ZVN0eWxlID0gZnVuY3Rpb24oYW5pbWF0aW9ucywgZHVyYXRpb24sIGNhbGxi
YWNrKQogICAgIH07CiB9CiAKK1dlYkluc3BlY3Rvci5pc0JlaW5nRWRpdGVkID0gZnVuY3Rpb24o
ZWxlbWVudCkKK3sKKyAgICByZXR1cm4gZWxlbWVudC5fX2VkaXRpbmc7Cit9CisKK1dlYkluc3Bl
Y3Rvci5tYXJrQmVpbmdFZGl0ZWQgPSBmdW5jdGlvbihlbGVtZW50LCB2YWx1ZSkKK3sKKyAgICBp
ZiAodmFsdWUpIHsKKyAgICAgICAgaWYgKGVsZW1lbnQuX19lZGl0aW5nKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICBlbGVtZW50Ll9fZWRpdGluZyA9IHRydWU7CisgICAgICAg
IFdlYkluc3BlY3Rvci5fX2VkaXRpbmdDb3VudCA9IChXZWJJbnNwZWN0b3IuX19lZGl0aW5nQ291
bnQgfHwgMCkgKyAxOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmICghZWxlbWVudC5fX2VkaXRp
bmcpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGRlbGV0ZSBlbGVtZW50Ll9f
ZWRpdGluZzsKKyAgICAgICAgLS1XZWJJbnNwZWN0b3IuX19lZGl0aW5nQ291bnQ7CisgICAgfQor
ICAgIHJldHVybiB0cnVlOworfQorCitXZWJJbnNwZWN0b3IuaXNFZGl0aW5nQW55RmllbGQgPSBm
dW5jdGlvbigpCit7CisgICAgcmV0dXJuICEhV2ViSW5zcGVjdG9yLl9fZWRpdGluZ0NvdW50Owor
fQorCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICovCitXZWJJbnNwZWN0b3IuRWRpdGluZ0NvbmZp
ZyA9IGZ1bmN0aW9uKCkKK3sKKyAgICAvKioKKyAgICAgKiBIYW5kbGVzIGVkaXRpbmcgImNvbW1p
dCIgb3V0Y29tZQorICAgICAqIEB0eXBlIHtmdW5jdGlvbihFbGVtZW50LHN0cmluZyxzdHJpbmcs
KixzdHJpbmcpfHVuZGVmaW5lZH0KKyAgICAgKi8KKyAgICB0aGlzLmNvbW1pdEhhbmRsZXI7CisK
KyAgICAvKioKKyAgICAgKiBIYW5kbGVzIGVkaXRpbmcgImNhbmNlbCIgb3V0Y29tZQorICAgICAq
IEB0eXBlIHtmdW5jdGlvbihFbGVtZW50LCopfHVuZGVmaW5lZH0KKyAgICAgKi8KKyAgICB0aGlz
LmNhbmNlbEhhbmRsZXI7CisKKyAgICAvKioKKyAgICAgKiBIYW5kbGVzIHRoZSAicGFzdGUiIGV2
ZW50LCByZXR1cm4gdmFsdWVzIGFyZSB0aGUgc2FtZSBhcyB0aG9zZSBmb3IgY3VzdG9tRmluaXNo
SGFuZGxlcgorICAgICAqIEB0eXBlIHtmdW5jdGlvbihFbGVtZW50KXx1bmRlZmluZWR9CisgICAg
ICovCisgICAgdGhpcy5wYXN0ZUhhbmRsZXI7CisKKyAgICAvKiogCisgICAgICogQW4gYXJiaXRy
YXJ5IGNvbnRleHQgb2JqZWN0IHRvIGJlIHBhc3NlZCB0byB0aGUgY29tbWl0IGFuZCBjYW5jZWwg
aGFuZGxlcnMKKyAgICAgKiBAdHlwZSB7T2JqZWN0fHVuZGVmaW5lZH0KKyAgICAgKi8KKyAgICB0
aGlzLmNvbnRleHQ7CisKKyAgICAvKiogCisgICAgICogV2hldGhlciB0aGUgZWRpdGVkIGVsZW1l
bnQgaXMgbXVsdGlsaW5lCisgICAgICogQHR5cGUge2Jvb2xlYW58dW5kZWZpbmVkfQorICAgICAq
LworICAgIHRoaXMubXVsdGlsaW5lOworCisgICAgLyoqCisgICAgICogQ3VzdG9tIGZpbmlzaCBo
YW5kbGVyIGZvciB0aGUgZWRpdGluZyBzZXNzaW9uIChpbnZva2VkIG9uIGtleWRvd24pCisgICAg
ICogQHR5cGUge2Z1bmN0aW9uKEVsZW1lbnQsKil8dW5kZWZpbmVkfQorICAgICAqLworICAgIHRo
aXMuY3VzdG9tRmluaXNoSGFuZGxlcjsKK30KKworCisvKiogCisgKiBAcGFyYW0ge0VsZW1lbnR9
IGVsZW1lbnQKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkVkaXRpbmdDb25maWc9fSBjb25maWcK
KyAqLworV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZyA9IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbmZp
ZykKK3sKKyAgICBpZiAoIVdlYkluc3BlY3Rvci5tYXJrQmVpbmdFZGl0ZWQoZWxlbWVudCwgdHJ1
ZSkpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbmZpZyA9IGNvbmZpZyB8fCBuZXcgV2ViSW5z
cGVjdG9yLkVkaXRpbmdDb25maWcoKTsKKyAgICB2YXIgY29tbWl0dGVkQ2FsbGJhY2sgPSBjb25m
aWcuY29tbWl0SGFuZGxlcjsKKyAgICB2YXIgY2FuY2VsbGVkQ2FsbGJhY2sgPSBjb25maWcuY2Fu
Y2VsSGFuZGxlcjsKKyAgICB2YXIgcGFzdGVDYWxsYmFjayA9IGNvbmZpZy5wYXN0ZUhhbmRsZXI7
CisgICAgdmFyIGNvbnRleHQgPSBjb25maWcuY29udGV4dDsKKyAgICB2YXIgb2xkVGV4dCA9IGdl
dENvbnRlbnQoZWxlbWVudCk7CisgICAgdmFyIG1vdmVEaXJlY3Rpb24gPSAiIjsKKworICAgIGVs
ZW1lbnQuYWRkU3R5bGVDbGFzcygiZWRpdGluZyIpOworCisgICAgdmFyIG9sZFRhYkluZGV4ID0g
ZWxlbWVudC50YWJJbmRleDsKKyAgICBpZiAoZWxlbWVudC50YWJJbmRleCA8IDApCisgICAgICAg
IGVsZW1lbnQudGFiSW5kZXggPSAwOworCisgICAgZnVuY3Rpb24gYmx1ckV2ZW50TGlzdGVuZXIo
KSB7CisgICAgICAgIGVkaXRpbmdDb21taXR0ZWQuY2FsbChlbGVtZW50KTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBnZXRDb250ZW50KGVsZW1lbnQpIHsKKyAgICAgICAgaWYgKGVsZW1lbnQudGFn
TmFtZSA9PT0gIklOUFVUIiAmJiBlbGVtZW50LnR5cGUgPT09ICJ0ZXh0IikKKyAgICAgICAgICAg
IHJldHVybiBlbGVtZW50LnZhbHVlOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4g
ZWxlbWVudC50ZXh0Q29udGVudDsKKyAgICB9CisKKyAgICAvKiogQHRoaXMge0VsZW1lbnR9ICov
CisgICAgZnVuY3Rpb24gY2xlYW5VcEFmdGVyRWRpdGluZygpCisgICAgeworICAgICAgICBXZWJJ
bnNwZWN0b3IubWFya0JlaW5nRWRpdGVkKGVsZW1lbnQsIGZhbHNlKTsKKworICAgICAgICB0aGlz
LnJlbW92ZVN0eWxlQ2xhc3MoImVkaXRpbmciKTsKKyAgICAgICAgdGhpcy50YWJJbmRleCA9IG9s
ZFRhYkluZGV4OworICAgICAgICB0aGlzLnNjcm9sbFRvcCA9IDA7CisgICAgICAgIHRoaXMuc2Ny
b2xsTGVmdCA9IDA7CisKKyAgICAgICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJibHVy
IiwgYmx1ckV2ZW50TGlzdGVuZXIsIGZhbHNlKTsKKyAgICAgICAgZWxlbWVudC5yZW1vdmVFdmVu
dExpc3RlbmVyKCJrZXlkb3duIiwga2V5RG93bkV2ZW50TGlzdGVuZXIsIHRydWUpOworICAgICAg
ICBpZiAocGFzdGVDYWxsYmFjaykKKyAgICAgICAgICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0
ZW5lcigicGFzdGUiLCBwYXN0ZUV2ZW50TGlzdGVuZXIsIHRydWUpOworCisgICAgICAgIGlmIChl
bGVtZW50ID09PSBXZWJJbnNwZWN0b3IuY3VycmVudEZvY3VzRWxlbWVudCB8fCBlbGVtZW50Lmlz
QW5jZXN0b3IoV2ViSW5zcGVjdG9yLmN1cnJlbnRGb2N1c0VsZW1lbnQpKQorICAgICAgICAgICAg
V2ViSW5zcGVjdG9yLmN1cnJlbnRGb2N1c0VsZW1lbnQgPSBXZWJJbnNwZWN0b3IucHJldmlvdXNG
b2N1c0VsZW1lbnQ7CisgICAgfQorCisgICAgLyoqIEB0aGlzIHtFbGVtZW50fSAqLworICAgIGZ1
bmN0aW9uIGVkaXRpbmdDYW5jZWxsZWQoKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMudGFnTmFt
ZSA9PT0gIklOUFVUIiAmJiB0aGlzLnR5cGUgPT09ICJ0ZXh0IikKKyAgICAgICAgICAgIHRoaXMu
dmFsdWUgPSBvbGRUZXh0OworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLnRleHRDb250
ZW50ID0gb2xkVGV4dDsKKworICAgICAgICBjbGVhblVwQWZ0ZXJFZGl0aW5nLmNhbGwodGhpcyk7
CisKKyAgICAgICAgaWYgKGNhbmNlbGxlZENhbGxiYWNrKQorICAgICAgICAgICAgY2FuY2VsbGVk
Q2FsbGJhY2sodGhpcywgY29udGV4dCk7CisgICAgfQorCisgICAgLyoqIEB0aGlzIHtFbGVtZW50
fSAqLworICAgIGZ1bmN0aW9uIGVkaXRpbmdDb21taXR0ZWQoKQorICAgIHsKKyAgICAgICAgY2xl
YW5VcEFmdGVyRWRpdGluZy5jYWxsKHRoaXMpOworCisgICAgICAgIGlmIChjb21taXR0ZWRDYWxs
YmFjaykKKyAgICAgICAgICAgIGNvbW1pdHRlZENhbGxiYWNrKHRoaXMsIGdldENvbnRlbnQodGhp
cyksIG9sZFRleHQsIGNvbnRleHQsIG1vdmVEaXJlY3Rpb24pOworICAgIH0KKworICAgIGZ1bmN0
aW9uIGRlZmF1bHRGaW5pc2hIYW5kbGVyKGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIGlzTWV0
YU9yQ3RybCA9IFdlYkluc3BlY3Rvci5pc01hYygpID8KKyAgICAgICAgICAgIGV2ZW50Lm1ldGFL
ZXkgJiYgIWV2ZW50LnNoaWZ0S2V5ICYmICFldmVudC5jdHJsS2V5ICYmICFldmVudC5hbHRLZXkg
OgorICAgICAgICAgICAgZXZlbnQuY3RybEtleSAmJiAhZXZlbnQuc2hpZnRLZXkgJiYgIWV2ZW50
Lm1ldGFLZXkgJiYgIWV2ZW50LmFsdEtleTsKKyAgICAgICAgaWYgKGlzRW50ZXJLZXkoZXZlbnQp
ICYmIChldmVudC5pc01ldGFPckN0cmxGb3JUZXN0IHx8ICFjb25maWcubXVsdGlsaW5lIHx8IGlz
TWV0YU9yQ3RybCkpCisgICAgICAgICAgICByZXR1cm4gImNvbW1pdCI7CisgICAgICAgIGVsc2Ug
aWYgKGV2ZW50LmtleUNvZGUgPT09IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleXMu
RXNjLmNvZGUgfHwgZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIlUrMDAxQiIpCisgICAgICAgICAg
ICByZXR1cm4gImNhbmNlbCI7CisgICAgICAgIGVsc2UgaWYgKGV2ZW50LmtleUlkZW50aWZpZXIg
PT09ICJVKzAwMDkiKSAvLyBUYWIga2V5CisgICAgICAgICAgICByZXR1cm4gIm1vdmUtIiArIChl
dmVudC5zaGlmdEtleSA/ICJiYWNrd2FyZCIgOiAiZm9yd2FyZCIpOworICAgIH0KKworICAgIGZ1
bmN0aW9uIGhhbmRsZUVkaXRpbmdSZXN1bHQocmVzdWx0LCBldmVudCkKKyAgICB7CisgICAgICAg
IGlmIChyZXN1bHQgPT09ICJjb21taXQiKSB7CisgICAgICAgICAgICBlZGl0aW5nQ29tbWl0dGVk
LmNhbGwoZWxlbWVudCk7CisgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAg
ICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CisgICAgICAgIH0gZWxzZSBpZiAocmVz
dWx0ID09PSAiY2FuY2VsIikgeworICAgICAgICAgICAgZWRpdGluZ0NhbmNlbGxlZC5jYWxsKGVs
ZW1lbnQpOworICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgICAg
IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOworICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCAmJiBy
ZXN1bHQuaW5kZXhPZigibW92ZS0iKSA9PT0gMCkgeworICAgICAgICAgICAgbW92ZURpcmVjdGlv
biA9IHJlc3VsdC5zdWJzdHJpbmcoNSk7CisgICAgICAgICAgICBpZiAoZXZlbnQua2V5SWRlbnRp
ZmllciAhPT0gIlUrMDAwOSIpCisgICAgICAgICAgICAgICAgYmx1ckV2ZW50TGlzdGVuZXIoKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIHBhc3RlRXZlbnRMaXN0ZW5lcihldmVu
dCkKKyAgICB7CisgICAgICAgIHZhciByZXN1bHQgPSBwYXN0ZUNhbGxiYWNrKGV2ZW50KTsKKyAg
ICAgICAgaGFuZGxlRWRpdGluZ1Jlc3VsdChyZXN1bHQsIGV2ZW50KTsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBrZXlEb3duRXZlbnRMaXN0ZW5lcihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBo
YW5kbGVyID0gY29uZmlnLmN1c3RvbUZpbmlzaEhhbmRsZXIgfHwgZGVmYXVsdEZpbmlzaEhhbmRs
ZXI7CisgICAgICAgIHZhciByZXN1bHQgPSBoYW5kbGVyKGV2ZW50KTsKKyAgICAgICAgaGFuZGxl
RWRpdGluZ1Jlc3VsdChyZXN1bHQsIGV2ZW50KTsKKyAgICB9CisKKyAgICBlbGVtZW50LmFkZEV2
ZW50TGlzdGVuZXIoImJsdXIiLCBibHVyRXZlbnRMaXN0ZW5lciwgZmFsc2UpOworICAgIGVsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIGtleURvd25FdmVudExpc3RlbmVyLCB0cnVl
KTsKKyAgICBpZiAocGFzdGVDYWxsYmFjaykKKyAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3Rl
bmVyKCJwYXN0ZSIsIHBhc3RlRXZlbnRMaXN0ZW5lciwgdHJ1ZSk7CisKKyAgICBXZWJJbnNwZWN0
b3IuY3VycmVudEZvY3VzRWxlbWVudCA9IGVsZW1lbnQ7CisgICAgcmV0dXJuIHsKKyAgICAgICAg
Y2FuY2VsOiBlZGl0aW5nQ2FuY2VsbGVkLmJpbmQoZWxlbWVudCksCisgICAgICAgIGNvbW1pdDog
ZWRpdGluZ0NvbW1pdHRlZC5iaW5kKGVsZW1lbnQpCisgICAgfTsKK30KKwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9leHRlcm5zLmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9leHRlcm5zLmpzCmluZGV4IGY5YWFlOGI0ODM5ZGEw
ZWQ3Y2ZlN2ViMjMyMzFiY2Q2MWYzOWU3OTUuLjNkNzUxOTNiMmJmYTgzNTUzZTFiZGQyN2E2ZTky
MDcwMWVhYWUyOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvZXh0ZXJucy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2V4
dGVybnMuanMKQEAgLTcyLDcgKzcyLDEwIEBAIEpTT04uc3RyaW5naWZ5ID0gZnVuY3Rpb24oc3Ry
KSB7fQogCiBFbGVtZW50LnByb3RvdHlwZS5zY3JvbGxJbnRvVmlld0lmTmVlZGVkID0gZnVuY3Rp
b24oKSB7fQogCi1BcnJheS5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24ob2JqKSB7fQorLyoq
CisgKiBAcGFyYW0ge2Jvb2xlYW49fSBvbmx5Rmlyc3QKKyAqLworQXJyYXkucHJvdG90eXBlLnJl
bW92ZSA9IGZ1bmN0aW9uKG9iaiwgb25seUZpcnN0KSB7fQogCiBXZWJJbnNwZWN0b3IuZXh0ZW5z
aW9uU2VydmVyID0ge30KIFdlYkluc3BlY3Rvci5leHRlbnNpb25TZXJ2ZXIubm90aWZ5UmVzb3Vy
Y2VDb250ZW50Q29tbWl0dGVkID0gZnVuY3Rpb24ocmVzb3VyY2UsIGNvbnRlbnQpIHt9CkBAIC0x
NzMsMyArMTc2LDEzIEBAIFdlYkluc3BlY3Rvci5wcmV2aW91c0ZvY3VzRWxlbWVudCA9IG51bGw7
CiAgKiBAdHlwZSB7c3RyaW5nfQogICovCiBXZWJJbnNwZWN0b3IucGxhdGZvcm1GbGF2b3IgPSAi
IjsKKworLyoqIEBwYXJhbSB7RWxlbWVudH0gZWxlbWVudCAqLword2luZG93LmdldENvbXB1dGVk
U3R5bGUgPSBmdW5jdGlvbihlbGVtZW50KQoreworfQorCisvKioKKyAqIEB0eXBlIHtib29sZWFu
fQorICovCitFdmVudC5wcm90b3R5cGUuaXNNZXRhT3JDdHJsRm9yVGVzdCA9IGZhbHNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwppbmRleCAz
NTFjNTJkOWY2YjBkMWIzNTg2MmE5MmU4NmQyOGM3ODhkMTZkZTU2Li4xY2U5ZTk5MTc2OGYxYmQ1
NTU1ZGVlYmNmNGRhN2ZkMzVkNzE1NmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtMTM1NiwxNjAgKzEzNTYsNiBAQCBXZWJJbnNw
ZWN0b3IudXNlTG93ZXJDYXNlTWVudVRpdGxlcyA9IGZ1bmN0aW9uKCkKICAgICByZXR1cm4gV2Vi
SW5zcGVjdG9yLnBsYXRmb3JtID09PSAid2luZG93cyIgJiYgUHJlZmVyZW5jZXMudXNlTG93ZXJD
YXNlTWVudVRpdGxlc09uV2luZG93czsKIH0KIAotV2ViSW5zcGVjdG9yLmlzQmVpbmdFZGl0ZWQg
PSBmdW5jdGlvbihlbGVtZW50KQotewotICAgIHJldHVybiBlbGVtZW50Ll9fZWRpdGluZzsKLX0K
LQotV2ViSW5zcGVjdG9yLm1hcmtCZWluZ0VkaXRlZCA9IGZ1bmN0aW9uKGVsZW1lbnQsIHZhbHVl
KQotewotICAgIGlmICh2YWx1ZSkgewotICAgICAgICBpZiAoZWxlbWVudC5fX2VkaXRpbmcpCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGVsZW1lbnQuX19lZGl0aW5nID0gdHJ1
ZTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLl9fZWRpdGluZ0NvdW50ID0gKFdlYkluc3BlY3Rvci5f
X2VkaXRpbmdDb3VudCB8fCAwKSArIDE7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCFlbGVt
ZW50Ll9fZWRpdGluZykKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgZGVsZXRl
IGVsZW1lbnQuX19lZGl0aW5nOwotICAgICAgICAtLVdlYkluc3BlY3Rvci5fX2VkaXRpbmdDb3Vu
dDsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLVdlYkluc3BlY3Rvci5pc0VkaXRpbmdB
bnlGaWVsZCA9IGZ1bmN0aW9uKCkKLXsKLSAgICByZXR1cm4gISFXZWJJbnNwZWN0b3IuX19lZGl0
aW5nQ291bnQ7Ci19Ci0KLS8vIEF2YWlsYWJsZSBjb25maWcgZmllbGRzIChhbGwgb3B0aW9uYWwp
OgotLy8gY29udGV4dDogT2JqZWN0IC0gYW4gYXJiaXRyYXJ5IGNvbnRleHQgb2JqZWN0IHRvIGJl
IHBhc3NlZCB0byB0aGUgY29tbWl0IGFuZCBjYW5jZWwgaGFuZGxlcnMKLS8vIGNvbW1pdEhhbmRs
ZXI6IEZ1bmN0aW9uIC0gaGFuZGxlcyBlZGl0aW5nICJjb21taXQiIG91dGNvbWUKLS8vIGNhbmNl
bEhhbmRsZXI6IEZ1bmN0aW9uIC0gaGFuZGxlcyBlZGl0aW5nICJjYW5jZWwiIG91dGNvbWUKLS8v
IGN1c3RvbUZpbmlzaEhhbmRsZXI6IEZ1bmN0aW9uIC0gY3VzdG9tIGZpbmlzaCBoYW5kbGVyIGZv
ciB0aGUgZWRpdGluZyBzZXNzaW9uIChpbnZva2VkIG9uIGtleWRvd24pCi0vLyBwYXN0ZUhhbmRs
ZXI6IEZ1bmN0aW9uIC0gaGFuZGxlcyB0aGUgInBhc3RlIiBldmVudCwgcmV0dXJuIHZhbHVlcyBh
cmUgdGhlIHNhbWUgYXMgdGhvc2UgZm9yIGN1c3RvbUZpbmlzaEhhbmRsZXIKLS8vIG11bHRpbGlu
ZTogQm9vbGVhbiAtIHdoZXRoZXIgdGhlIGVkaXRlZCBlbGVtZW50IGlzIG11bHRpbGluZQotV2Vi
SW5zcGVjdG9yLnN0YXJ0RWRpdGluZyA9IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbmZpZykKLXsKLSAg
ICBpZiAoIVdlYkluc3BlY3Rvci5tYXJrQmVpbmdFZGl0ZWQoZWxlbWVudCwgdHJ1ZSkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGNvbmZpZyA9IGNvbmZpZyB8fCB7fTsKLSAgICB2YXIgY29tbWl0
dGVkQ2FsbGJhY2sgPSBjb25maWcuY29tbWl0SGFuZGxlcjsKLSAgICB2YXIgY2FuY2VsbGVkQ2Fs
bGJhY2sgPSBjb25maWcuY2FuY2VsSGFuZGxlcjsKLSAgICB2YXIgcGFzdGVDYWxsYmFjayA9IGNv
bmZpZy5wYXN0ZUhhbmRsZXI7Ci0gICAgdmFyIGNvbnRleHQgPSBjb25maWcuY29udGV4dDsKLSAg
ICB2YXIgb2xkVGV4dCA9IGdldENvbnRlbnQoZWxlbWVudCk7Ci0gICAgdmFyIG1vdmVEaXJlY3Rp
b24gPSAiIjsKLQotICAgIGVsZW1lbnQuYWRkU3R5bGVDbGFzcygiZWRpdGluZyIpOwotCi0gICAg
dmFyIG9sZFRhYkluZGV4ID0gZWxlbWVudC50YWJJbmRleDsKLSAgICBpZiAoZWxlbWVudC50YWJJ
bmRleCA8IDApCi0gICAgICAgIGVsZW1lbnQudGFiSW5kZXggPSAwOwotCi0gICAgZnVuY3Rpb24g
Ymx1ckV2ZW50TGlzdGVuZXIoKSB7Ci0gICAgICAgIGVkaXRpbmdDb21taXR0ZWQuY2FsbChlbGVt
ZW50KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBnZXRDb250ZW50KGVsZW1lbnQpIHsKLSAgICAg
ICAgaWYgKGVsZW1lbnQudGFnTmFtZSA9PT0gIklOUFVUIiAmJiBlbGVtZW50LnR5cGUgPT09ICJ0
ZXh0IikKLSAgICAgICAgICAgIHJldHVybiBlbGVtZW50LnZhbHVlOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICByZXR1cm4gZWxlbWVudC50ZXh0Q29udGVudDsKLSAgICB9Ci0KLSAgICBmdW5j
dGlvbiBjbGVhblVwQWZ0ZXJFZGl0aW5nKCkgewotICAgICAgICBXZWJJbnNwZWN0b3IubWFya0Jl
aW5nRWRpdGVkKGVsZW1lbnQsIGZhbHNlKTsKLQotICAgICAgICB0aGlzLnJlbW92ZVN0eWxlQ2xh
c3MoImVkaXRpbmciKTsKLSAgICAgICAgdGhpcy50YWJJbmRleCA9IG9sZFRhYkluZGV4OwotICAg
ICAgICB0aGlzLnNjcm9sbFRvcCA9IDA7Ci0gICAgICAgIHRoaXMuc2Nyb2xsTGVmdCA9IDA7Ci0K
LSAgICAgICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJibHVyIiwgYmx1ckV2ZW50TGlz
dGVuZXIsIGZhbHNlKTsKLSAgICAgICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlk
b3duIiwga2V5RG93bkV2ZW50TGlzdGVuZXIsIHRydWUpOwotICAgICAgICBpZiAocGFzdGVDYWxs
YmFjaykKLSAgICAgICAgICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigicGFzdGUiLCBw
YXN0ZUV2ZW50TGlzdGVuZXIsIHRydWUpOwotCi0gICAgICAgIGlmIChlbGVtZW50ID09PSBXZWJJ
bnNwZWN0b3IuY3VycmVudEZvY3VzRWxlbWVudCB8fCBlbGVtZW50LmlzQW5jZXN0b3IoV2ViSW5z
cGVjdG9yLmN1cnJlbnRGb2N1c0VsZW1lbnQpKQotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmN1
cnJlbnRGb2N1c0VsZW1lbnQgPSBXZWJJbnNwZWN0b3IucHJldmlvdXNGb2N1c0VsZW1lbnQ7Ci0g
ICAgfQotCi0gICAgZnVuY3Rpb24gZWRpdGluZ0NhbmNlbGxlZCgpIHsKLSAgICAgICAgaWYgKHRo
aXMudGFnTmFtZSA9PT0gIklOUFVUIiAmJiB0aGlzLnR5cGUgPT09ICJ0ZXh0IikKLSAgICAgICAg
ICAgIHRoaXMudmFsdWUgPSBvbGRUZXh0OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aGlz
LnRleHRDb250ZW50ID0gb2xkVGV4dDsKLQotICAgICAgICBjbGVhblVwQWZ0ZXJFZGl0aW5nLmNh
bGwodGhpcyk7Ci0KLSAgICAgICAgaWYgKGNhbmNlbGxlZENhbGxiYWNrKQotICAgICAgICAgICAg
Y2FuY2VsbGVkQ2FsbGJhY2sodGhpcywgY29udGV4dCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24g
ZWRpdGluZ0NvbW1pdHRlZCgpIHsKLSAgICAgICAgY2xlYW5VcEFmdGVyRWRpdGluZy5jYWxsKHRo
aXMpOwotCi0gICAgICAgIGlmIChjb21taXR0ZWRDYWxsYmFjaykKLSAgICAgICAgICAgIGNvbW1p
dHRlZENhbGxiYWNrKHRoaXMsIGdldENvbnRlbnQodGhpcyksIG9sZFRleHQsIGNvbnRleHQsIG1v
dmVEaXJlY3Rpb24pOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGRlZmF1bHRGaW5pc2hIYW5kbGVy
KGV2ZW50KQotICAgIHsKLSAgICAgICAgdmFyIGlzTWV0YU9yQ3RybCA9IFdlYkluc3BlY3Rvci5p
c01hYygpID8KLSAgICAgICAgICAgIGV2ZW50Lm1ldGFLZXkgJiYgIWV2ZW50LnNoaWZ0S2V5ICYm
ICFldmVudC5jdHJsS2V5ICYmICFldmVudC5hbHRLZXkgOgotICAgICAgICAgICAgZXZlbnQuY3Ry
bEtleSAmJiAhZXZlbnQuc2hpZnRLZXkgJiYgIWV2ZW50Lm1ldGFLZXkgJiYgIWV2ZW50LmFsdEtl
eTsKLSAgICAgICAgaWYgKGlzRW50ZXJLZXkoZXZlbnQpICYmIChldmVudC5pc01ldGFPckN0cmxG
b3JUZXN0IHx8ICFjb25maWcubXVsdGlsaW5lIHx8IGlzTWV0YU9yQ3RybCkpCi0gICAgICAgICAg
ICByZXR1cm4gImNvbW1pdCI7Ci0gICAgICAgIGVsc2UgaWYgKGV2ZW50LmtleUNvZGUgPT09IFdl
Ykluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleXMuRXNjLmNvZGUgfHwgZXZlbnQua2V5SWRl
bnRpZmllciA9PT0gIlUrMDAxQiIpCi0gICAgICAgICAgICByZXR1cm4gImNhbmNlbCI7Ci0gICAg
ICAgIGVsc2UgaWYgKGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJVKzAwMDkiKSAvLyBUYWIga2V5
Ci0gICAgICAgICAgICByZXR1cm4gIm1vdmUtIiArIChldmVudC5zaGlmdEtleSA/ICJiYWNrd2Fy
ZCIgOiAiZm9yd2FyZCIpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGhhbmRsZUVkaXRpbmdSZXN1
bHQocmVzdWx0LCBldmVudCkKLSAgICB7Ci0gICAgICAgIGlmIChyZXN1bHQgPT09ICJjb21taXQi
KSB7Ci0gICAgICAgICAgICBlZGl0aW5nQ29tbWl0dGVkLmNhbGwoZWxlbWVudCk7Ci0gICAgICAg
ICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwotICAgICAgICAgICAgZXZlbnQuc3RvcFByb3Bh
Z2F0aW9uKCk7Ci0gICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09PSAiY2FuY2VsIikgewotICAg
ICAgICAgICAgZWRpdGluZ0NhbmNlbGxlZC5jYWxsKGVsZW1lbnQpOwotICAgICAgICAgICAgZXZl
bnQucHJldmVudERlZmF1bHQoKTsKLSAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigp
OwotICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCAmJiByZXN1bHQuaW5kZXhPZigibW92ZS0iKSA9
PT0gMCkgewotICAgICAgICAgICAgbW92ZURpcmVjdGlvbiA9IHJlc3VsdC5zdWJzdHJpbmcoNSk7
Ci0gICAgICAgICAgICBpZiAoZXZlbnQua2V5SWRlbnRpZmllciAhPT0gIlUrMDAwOSIpCi0gICAg
ICAgICAgICAgICAgYmx1ckV2ZW50TGlzdGVuZXIoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IGZ1bmN0aW9uIHBhc3RlRXZlbnRMaXN0ZW5lcihldmVudCkKLSAgICB7Ci0gICAgICAgIHZhciBy
ZXN1bHQgPSBwYXN0ZUNhbGxiYWNrKGV2ZW50KTsKLSAgICAgICAgaGFuZGxlRWRpdGluZ1Jlc3Vs
dChyZXN1bHQsIGV2ZW50KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBrZXlEb3duRXZlbnRMaXN0
ZW5lcihldmVudCkKLSAgICB7Ci0gICAgICAgIHZhciBoYW5kbGVyID0gY29uZmlnLmN1c3RvbUZp
bmlzaEhhbmRsZXIgfHwgZGVmYXVsdEZpbmlzaEhhbmRsZXI7Ci0gICAgICAgIHZhciByZXN1bHQg
PSBoYW5kbGVyKGV2ZW50KTsKLSAgICAgICAgaGFuZGxlRWRpdGluZ1Jlc3VsdChyZXN1bHQsIGV2
ZW50KTsKLSAgICB9Ci0KLSAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLCBibHVy
RXZlbnRMaXN0ZW5lciwgZmFsc2UpOwotICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5
ZG93biIsIGtleURvd25FdmVudExpc3RlbmVyLCB0cnVlKTsKLSAgICBpZiAocGFzdGVDYWxsYmFj
aykKLSAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJwYXN0ZSIsIHBhc3RlRXZlbnRM
aXN0ZW5lciwgdHJ1ZSk7Ci0KLSAgICBXZWJJbnNwZWN0b3IuY3VycmVudEZvY3VzRWxlbWVudCA9
IGVsZW1lbnQ7Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgY2FuY2VsOiBlZGl0aW5nQ2FuY2VsbGVk
LmJpbmQoZWxlbWVudCksCi0gICAgICAgIGNvbW1pdDogZWRpdGluZ0NvbW1pdHRlZC5iaW5kKGVs
ZW1lbnQpCi0gICAgfTsKLX0KLQogV2ViSW5zcGVjdG9yLl90b29sYmFySXRlbUNsaWNrZWQgPSBm
dW5jdGlvbihldmVudCkKIHsKICAgICB2YXIgdG9vbGJhckl0ZW0gPSBldmVudC5jdXJyZW50VGFy
Z2V0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109618</attachid>
            <date>2011-10-04 07:11:57 -0700</date>
            <delta_ts>2011-10-04 07:18:20 -0700</delta_ts>
            <desc>[Patch] review comments addressed.</desc>
            <filename>bug-69334-20111004181154.patch</filename>
            <type>text/plain</type>
            <size>24875</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY1ODgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4YjUzZmM1ZTBhZmJiZDdl
OTMxMGM3OTc5ZmYxNzNhMWM2Mjc4ZTgzLi4yMWZjNTkzNTU3ZmM5OTZkZTY1YzcyNjhjODRlN2E1
YTcyZjFiOTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTEtMTAtMDQgIFBhdmVs
IEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogbWFrZSBEYXRhR3JpZCBjb21waWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02OTMzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnNoOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRGF0YUdyaWQuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRGF0YUdyaWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5f
c3RhcnRFZGl0aW5nQ29sdW1uT2ZEYXRhR3JpZE5vZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkRhdGFHcmlkLnByb3RvdHlwZS5fc3RhcnRFZGl0aW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5EYXRhR3JpZC5wcm90b3R5cGUuX3N0YXJ0RWRpdGluZ0NvbmZpZyk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLl9lZGl0aW5nQ29tbWl0dGVkLm1vdmVUb05leHRJ
Zk5lZWRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLl9lZGl0
aW5nQ29tbWl0dGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUu
X2VkaXRpbmdDYW5jZWxsZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3Rv
dHlwZS5yZW1vdmVDaGlsZHJlblJlY3Vyc2l2ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0
YUdyaWQucHJvdG90eXBlLl9rZXlEb3duKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3Jp
ZC5wcm90b3R5cGUuX3N0YXJ0UmVzaXplckRyYWdnaW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5EYXRhR3JpZC5wcm90b3R5cGUuX3Jlc2l6ZXJEcmFnZ2luZyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLl9lbmRSZXNpemVyRHJhZ2dpbmcpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUuX2F0dGFjaCk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9VSVV0aWxzLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmlz
QmVpbmdFZGl0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLm1hcmtCZWluZ0VkaXRlZCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuaXNFZGl0aW5nQW55RmllbGQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkVkaXRpbmdDb25maWcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGlu
Zy5ibHVyRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0aW5n
LmdldENvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZy5jbGVhblVw
QWZ0ZXJFZGl0aW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5zdGFydEVkaXRpbmcuZWRpdGlu
Z0NhbmNlbGxlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0aW5nLmVkaXRpbmdD
b21taXR0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZy5kZWZhdWx0Rmlu
aXNoSGFuZGxlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0aW5nKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5zdGFydEVkaXRpbmcucGFzdGVFdmVudExpc3RlbmVyKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5zdGFydEVkaXRpbmcua2V5RG93bkV2ZW50TGlzdGVuZXIpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvZXh0ZXJucy5qczoKKyAgICAgICAgKEFycmF5LnBy
b3RvdHlwZS5yZW1vdmUpOgorICAgICAgICAod2luZG93LmdldENvbXB1dGVkU3R5bGUpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOgorCiAyMDExLTEwLTA0ICBQ
YXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IHVwZGF0ZSBjYWxsIGZyYW1lIGxvY2F0aW9uIHdoZW4gc291cmNlIG1hcHBpbmcg
aXMgY2hhbmdlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxl
LWZyb250LWVuZC5zaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVu
ZC5zaAppbmRleCA4NmFhMzVhMjhjMDVmMjcwMzU1ZDI3MmZlZmJlY2ZlMzRjYThlYjU0Li44MmYz
MjFiZDI1ZWJhMmFlZDVhY2Q2ZWE3YzBiYTFjNWRkM2FjN2VjIDEwMDc1NQotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQuc2gKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnNoCkBAIC02Myw5ICs2MywxMCBAQCBqYXZh
IC1qYXIgfi9jbG9zdXJlL2NvbXBpbGVyLmphciAtLWNvbXBpbGF0aW9uX2xldmVsIFNJTVBMRV9P
UFRJTUlaQVRJT05TIC0td2FybgogICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvUmVzb3VyY2UuanMgXAogICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya01hbmFnZXIuanMgXAogICAgICAgICAtLWpzIFNvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVUlTb3VyY2VDb2RlLmpzIFwKLSAgICAtLW1v
ZHVsZSBqc21vZHVsZV91aToyMTpqc21vZHVsZV9jb21tb24gXAorICAgIC0tbW9kdWxlIGpzbW9k
dWxlX3VpOjIyOmpzbW9kdWxlX2NvbW1vbiBcCiAgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9DaGVja2JveC5qcyBcCiAgICAgICAgIC0tanMgU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db250ZXh0TWVudS5qcyBcCisgICAgICAgIC0tanMg
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhR3JpZC5qcyBcCiAgICAgICAg
IC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EcmF3ZXIuanMgXAogICAg
ICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRW1wdHlWaWV3Lmpz
IFwKICAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlbHBT
Y3JlZW4uanMgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9EYXRhR3JpZC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGF0YUdy
aWQuanMKaW5kZXggMGYzMmFhNzAxNDg4ZGE1MzI1MDllOGIzNjgzZTgzYmVjYTg1ODBjZC4uMjQw
NGRkMjA4ZGE5NGRhMmU4OTk4ZTJhYTBlMGRlOWYwYzc1MzBiMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhR3JpZC5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFHcmlkLmpzCkBAIC0yMyw2ICsyMywxMCBAQAog
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMg
e1dlYkluc3BlY3Rvci5PYmplY3R9CisgKi8KIFdlYkluc3BlY3Rvci5EYXRhR3JpZCA9IGZ1bmN0
aW9uKGNvbHVtbnMsIGVkaXRDYWxsYmFjaywgZGVsZXRlQ2FsbGJhY2spCiB7CiAgICAgdGhpcy5l
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CkBAIC0xMjAsOSArMTI0LDkg
QEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkID0gZnVuY3Rpb24oY29sdW1ucywgZWRpdENhbGxiYWNr
LCBkZWxldGVDYWxsYmFjaykKIAogICAgIGZvciAodmFyIGNvbHVtbklkZW50aWZpZXIgaW4gY29s
dW1ucykgewogICAgICAgICB2YXIgY29sdW1uID0gY29sdW1uc1tjb2x1bW5JZGVudGlmaWVyXTsK
LSAgICAgICAgdmFyIGNlbGwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwotICAgICAg
ICBjZWxsLmNsYXNzTmFtZSA9IGNvbHVtbklkZW50aWZpZXIgKyAiLWNvbHVtbiI7Ci0gICAgICAg
IGZpbGxlclJvdy5hcHBlbmRDaGlsZChjZWxsKTsKKyAgICAgICAgdmFyIHRkID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgidGQiKTsKKyAgICAgICAgdGQuY2xhc3NOYW1lID0gY29sdW1uSWRlbnRp
ZmllciArICItY29sdW1uIjsKKyAgICAgICAgZmlsbGVyUm93LmFwcGVuZENoaWxkKHRkKTsKICAg
ICB9CiAKICAgICB0aGlzLl9kYXRhVGFibGVDb2x1bW5Hcm91cCA9IGNvbHVtbkdyb3VwLmNsb25l
Tm9kZSh0cnVlKTsKQEAgLTE4MCwxMSArMTg0LDcgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fZWRpdGluZ05vZGUuc2VsZWN0KCk7CiAKICAgICAg
ICAgdmFyIGVsZW1lbnQgPSB0aGlzLl9lZGl0aW5nTm9kZS5fZWxlbWVudC5jaGlsZHJlbltjb2x1
bW5dOwotICAgICAgICBXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0aW5nKGVsZW1lbnQsIHsKLSAgICAg
ICAgICAgIGNvbnRleHQ6IGVsZW1lbnQudGV4dENvbnRlbnQsCi0gICAgICAgICAgICBjb21taXRI
YW5kbGVyOiB0aGlzLl9lZGl0aW5nQ29tbWl0dGVkLmJpbmQodGhpcyksCi0gICAgICAgICAgICBj
YW5jZWxIYW5kbGVyOiB0aGlzLl9lZGl0aW5nQ2FuY2VsbGVkLmJpbmQodGhpcykKLSAgICAgICAg
fSk7CisgICAgICAgIFdlYkluc3BlY3Rvci5zdGFydEVkaXRpbmcoZWxlbWVudCwgdGhpcy5fc3Rh
cnRFZGl0aW5nQ29uZmlnKGVsZW1lbnQpKTsKICAgICAgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LnNldEJhc2VBbmRFeHRlbnQoZWxlbWVudCwgMCwgZWxlbWVudCwgMSk7CiAgICAgfSwKIApAQCAt
MjA2LDIxICsyMDYsMjggQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHJldHVybiB0aGlzLl9zdGFydEVkaXRpbmdDb2x1bW5PZkRhdGFHcmlkTm9kZSh0
aGlzLl9lZGl0aW5nTm9kZSwgMCk7CiAKICAgICAgICAgdGhpcy5fZWRpdGluZyA9IHRydWU7Ci0g
ICAgICAgIFdlYkluc3BlY3Rvci5zdGFydEVkaXRpbmcoZWxlbWVudCwgewotICAgICAgICAgICAg
Y29udGV4dDogZWxlbWVudC50ZXh0Q29udGVudCwKLSAgICAgICAgICAgIGNvbW1pdEhhbmRsZXI6
IHRoaXMuX2VkaXRpbmdDb21taXR0ZWQuYmluZCh0aGlzKSwKLSAgICAgICAgICAgIGNhbmNlbEhh
bmRsZXI6IHRoaXMuX2VkaXRpbmdDYW5jZWxsZWQuYmluZCh0aGlzKQotICAgICAgICB9KTsKKyAg
ICAgICAgV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZyhlbGVtZW50LCB0aGlzLl9zdGFydEVkaXRp
bmdDb25maWcoZWxlbWVudCkpOworCiAgICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRC
YXNlQW5kRXh0ZW50KGVsZW1lbnQsIDAsIGVsZW1lbnQsIDEpOwogICAgIH0sCiAKKworICAgIF9z
dGFydEVkaXRpbmdDb25maWc6IGZ1bmN0aW9uKGVsZW1lbnQpCisgICAgeworICAgICAgICB2YXIg
Y29uZmlnID0gbmV3IFdlYkluc3BlY3Rvci5FZGl0aW5nQ29uZmlnKCk7CisgICAgICAgIGNvbmZp
Zy5jb250ZXh0ID0gZWxlbWVudC50ZXh0Q29udGVudDsKKyAgICAgICAgY29uZmlnLmNvbW1pdEhh
bmRsZXIgPSB0aGlzLl9lZGl0aW5nQ29tbWl0dGVkLmJpbmQodGhpcyk7CisgICAgICAgIGNvbmZp
Zy5jYW5jZWxIYW5kbGVyID0gdGhpcy5fZWRpdGluZ0NhbmNlbGxlZC5iaW5kKHRoaXMpOworICAg
ICAgICByZXR1cm4gY29uZmlnOworICAgIH0sCisKICAgICBfZWRpdGluZ0NvbW1pdHRlZDogZnVu
Y3Rpb24oZWxlbWVudCwgbmV3VGV4dCwgb2xkVGV4dCwgY29udGV4dCwgbW92ZURpcmVjdGlvbikK
ICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBuZWVkIG1vcmUgY29sdW1uIGlkZW50aWZpZXJz
IGhlcmUgdGhyb3VnaG91dCB0aGlzIGZ1bmN0aW9uLgogICAgICAgICAvLyBOb3QgbmVlZGVkIHll
dCBzaW5jZSBvbmx5IGVkaXRhYmxlIERhdGFHcmlkIGlzIERPTSBTdG9yYWdlLCB3aGljaCBpcyBL
ZXkgLSBWYWx1ZS4KIAogICAgICAgICAvLyBGSVhNRTogQmV0dGVyIHdheSB0byBkbyB0aGlzIHRo
YW4gcmVndWxhciBleHByZXNzaW9ucz8KLSAgICAgICAgdmFyIGNvbHVtbklkZW50aWZpZXIgPSBw
YXJzZUludChlbGVtZW50LmNsYXNzTmFtZS5tYXRjaCgvXGIoXGQrKS1jb2x1bW5cYi8pWzFdKTsK
KyAgICAgICAgdmFyIGNvbHVtbklkZW50aWZpZXIgPSBwYXJzZUludChlbGVtZW50LmNsYXNzTmFt
ZS5tYXRjaCgvXGIoXGQrKS1jb2x1bW5cYi8pWzFdLCAxMCk7CiAKICAgICAgICAgdmFyIHRleHRC
ZWZvcmVFZGl0aW5nID0gdGhpcy5fZWRpdGluZ05vZGUuZGF0YVtjb2x1bW5JZGVudGlmaWVyXTsK
ICAgICAgICAgdmFyIGN1cnJlbnRFZGl0aW5nTm9kZSA9IHRoaXMuX2VkaXRpbmdOb2RlOwpAQCAt
MjQwLDcgKzI0Nyw3IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICAgICAgaWYgKG5leHREYXRhR3JpZE5vZGUpCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0aGlzLl9zdGFydEVkaXRpbmdDb2x1bW5PZkRhdGFHcmlkTm9kZShuZXh0RGF0YUdyaWRO
b2RlLCAwKTsKICAgICAgICAgICAgICAgICBpZiAoY3VycmVudEVkaXRpbmdOb2RlLmlzQ3JlYXRp
b25Ob2RlICYmIHdhc0NoYW5nZSkgewotICAgICAgICAgICAgICAgICAgICBhZGRDcmVhdGlvbk5v
ZGUoZmFsc2UpOworICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZENyZWF0aW9uTm9kZShmYWxz
ZSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdGFydEVkaXRpbmdDb2x1bW5P
ZkRhdGFHcmlkTm9kZSh0aGlzLmNyZWF0aW9uTm9kZSwgMCk7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTI3Nyw3ICsyODQsNyBAQCBXZWJJbnNwZWN0b3Iu
RGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICBtb3ZlVG9OZXh0SWZOZWVkZWQuY2FsbCh0
aGlzLCB0cnVlKTsKICAgICB9LAogCi0gICAgX2VkaXRpbmdDYW5jZWxsZWQ6IGZ1bmN0aW9uKGVs
ZW1lbnQsIGNvbnRleHQpCisgICAgX2VkaXRpbmdDYW5jZWxsZWQ6IGZ1bmN0aW9uKGVsZW1lbnQp
CiAgICAgewogICAgICAgICBkZWxldGUgdGhpcy5fZWRpdGluZzsKICAgICAgICAgdGhpcy5fZWRp
dGluZ05vZGUgPSBudWxsOwpAQCAtNjcyLDcgKzY3OSw3IEBAIFdlYkluc3BlY3Rvci5EYXRhR3Jp
ZC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGNoaWxkcmVuVG9SZW1vdmUubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBjaGlsZCA9
IGNoaWxkcmVuVG9SZW1vdmVbaV07CisgICAgICAgICAgICBjaGlsZCA9IGNoaWxkcmVuVG9SZW1v
dmVbaV07CiAgICAgICAgICAgICBjaGlsZC5kZXNlbGVjdCgpOwogICAgICAgICAgICAgY2hpbGQu
X2RldGFjaCgpOwogCkBAIC03MzksMTIgKzc0NiwxMiBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQu
cHJvdG90eXBlID0gewogICAgICAgICBpZiAoZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIlVwIiAm
JiAhZXZlbnQuYWx0S2V5KSB7CiAgICAgICAgICAgICBuZXh0U2VsZWN0ZWROb2RlID0gdGhpcy5z
ZWxlY3RlZE5vZGUudHJhdmVyc2VQcmV2aW91c05vZGUodHJ1ZSk7CiAgICAgICAgICAgICB3aGls
ZSAobmV4dFNlbGVjdGVkTm9kZSAmJiAhbmV4dFNlbGVjdGVkTm9kZS5zZWxlY3RhYmxlKQotICAg
ICAgICAgICAgICAgIG5leHRTZWxlY3RlZE5vZGUgPSBuZXh0U2VsZWN0ZWROb2RlLnRyYXZlcnNl
UHJldmlvdXNOb2RlKCF0aGlzLmV4cGFuZFRyZWVOb2Rlc1doZW5BcnJvd2luZyk7CisgICAgICAg
ICAgICAgICAgbmV4dFNlbGVjdGVkTm9kZSA9IG5leHRTZWxlY3RlZE5vZGUudHJhdmVyc2VQcmV2
aW91c05vZGUodHJ1ZSk7CiAgICAgICAgICAgICBoYW5kbGVkID0gbmV4dFNlbGVjdGVkTm9kZSA/
IHRydWUgOiBmYWxzZTsKICAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXlJZGVudGlmaWVyID09
PSAiRG93biIgJiYgIWV2ZW50LmFsdEtleSkgewogICAgICAgICAgICAgbmV4dFNlbGVjdGVkTm9k
ZSA9IHRoaXMuc2VsZWN0ZWROb2RlLnRyYXZlcnNlTmV4dE5vZGUodHJ1ZSk7CiAgICAgICAgICAg
ICB3aGlsZSAobmV4dFNlbGVjdGVkTm9kZSAmJiAhbmV4dFNlbGVjdGVkTm9kZS5zZWxlY3RhYmxl
KQotICAgICAgICAgICAgICAgIG5leHRTZWxlY3RlZE5vZGUgPSBuZXh0U2VsZWN0ZWROb2RlLnRy
YXZlcnNlTmV4dE5vZGUoIXRoaXMuZXhwYW5kVHJlZU5vZGVzV2hlbkFycm93aW5nKTsKKyAgICAg
ICAgICAgICAgICBuZXh0U2VsZWN0ZWROb2RlID0gbmV4dFNlbGVjdGVkTm9kZS50cmF2ZXJzZU5l
eHROb2RlKHRydWUpOwogICAgICAgICAgICAgaGFuZGxlZCA9IG5leHRTZWxlY3RlZE5vZGUgPyB0
cnVlIDogZmFsc2U7CiAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5SWRlbnRpZmllciA9PT0g
IkxlZnQiKSB7CiAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZE5vZGUuZXhwYW5kZWQpIHsK
QEAgLTk1MCwxNiArOTU3LDE2IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7
CiAKICAgICBfc3RhcnRSZXNpemVyRHJhZ2dpbmc6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAg
ICAgICAgdGhpcy5jdXJyZW50UmVzaXplciA9IGV2ZW50LnRhcmdldDsKLSAgICAgICAgaWYgKCF0
aGlzLmN1cnJlbnRSZXNpemVyLnJpZ2h0TmVpZ2hib3JpbmdDb2x1bW5JRCkKKyAgICAgICAgdGhp
cy5fY3VycmVudFJlc2l6ZXIgPSBldmVudC50YXJnZXQ7CisgICAgICAgIGlmICghdGhpcy5fY3Vy
cmVudFJlc2l6ZXIucmlnaHROZWlnaGJvcmluZ0NvbHVtbklEKQogICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBXZWJJbnNwZWN0b3IuZWxlbWVudERyYWdTdGFydCh0aGlzLmxhc3RSZXNpemVy
LCB0aGlzLl9yZXNpemVyRHJhZ2dpbmcuYmluZCh0aGlzKSwKKyAgICAgICAgV2ViSW5zcGVjdG9y
LmVsZW1lbnREcmFnU3RhcnQodGhpcy5fY3VycmVudFJlc2l6ZXIsIHRoaXMuX3Jlc2l6ZXJEcmFn
Z2luZy5iaW5kKHRoaXMpLAogICAgICAgICAgICAgdGhpcy5fZW5kUmVzaXplckRyYWdnaW5nLmJp
bmQodGhpcyksIGV2ZW50LCAiY29sLXJlc2l6ZSIpOwogICAgIH0sCiAKICAgICBfcmVzaXplckRy
YWdnaW5nOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciByZXNpemVyID0gdGhp
cy5jdXJyZW50UmVzaXplcjsKKyAgICAgICAgdmFyIHJlc2l6ZXIgPSB0aGlzLl9jdXJyZW50UmVz
aXplcjsKICAgICAgICAgaWYgKCFyZXNpemVyKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0x
MDA5LDcgKzEwMTYsNyBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogICAg
IF9lbmRSZXNpemVyRHJhZ2dpbmc6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKICAgICAgICAgV2Vi
SW5zcGVjdG9yLmVsZW1lbnREcmFnRW5kKGV2ZW50KTsKLSAgICAgICAgdGhpcy5jdXJyZW50UmVz
aXplciA9IG51bGw7CisgICAgICAgIHRoaXMuX2N1cnJlbnRSZXNpemVyID0gbnVsbDsKICAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoIndpZHRoIGNoYW5nZWQiKTsKICAgICB9
LAogCkBAIC0xMDI2LDYgKzEwMzMsMTAgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLlJlc2l6ZU1l
dGhvZCA9IHsKIAogV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5fX3Byb3RvX18gPSBX
ZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKIAorLyoqCisgKiBAY29uc3RydWN0b3IKKyAq
IEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuT2JqZWN0fQorICovCiBXZWJJbnNwZWN0b3IuRGF0YUdy
aWROb2RlID0gZnVuY3Rpb24oZGF0YSwgaGFzQ2hpbGRyZW4pCiB7CiAgICAgdGhpcy5fZXhwYW5k
ZWQgPSBmYWxzZTsKQEAgLTEzNDIsNiArMTM1Myw5IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5v
ZGUucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycygi
cmV2ZWFsZWQiKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtib29sZWFuPX0g
c3VwcmVzc1NlbGVjdGVkRXZlbnQKKyAgICAgKi8KICAgICBzZWxlY3Q6IGZ1bmN0aW9uKHN1cHJl
c3NTZWxlY3RlZEV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLmRhdGFHcmlkIHx8ICF0
aGlzLnNlbGVjdGFibGUgfHwgdGhpcy5zZWxlY3RlZCkKQEAgLTEzNjYsNiArMTM4MCw5IEBAIFdl
Ykluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLnNlbGVj
dCgpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBzdXByZXNz
RGVzZWxlY3RlZEV2ZW50CisgICAgICovCiAgICAgZGVzZWxlY3Q6IGZ1bmN0aW9uKHN1cHJlc3NE
ZXNlbGVjdGVkRXZlbnQpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuZGF0YUdyaWQgfHwgdGhp
cy5kYXRhR3JpZC5zZWxlY3RlZE5vZGUgIT09IHRoaXMgfHwgIXRoaXMuc2VsZWN0ZWQpCkBAIC0x
NDU5LDcgKzE0NzYsNyBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgdmFyIG5leHROb2RlID0gbnVsbDsKICAgICAgICAgdmFyIHByZXZpb3VzTm9kZSA9
IHRoaXMudHJhdmVyc2VQcmV2aW91c05vZGUodHJ1ZSwgdHJ1ZSk7CiAgICAgICAgIGlmIChwcmV2
aW91c05vZGUgJiYgcHJldmlvdXNOb2RlLmVsZW1lbnQucGFyZW50Tm9kZSAmJiBwcmV2aW91c05v
ZGUuZWxlbWVudC5uZXh0U2libGluZykKLSAgICAgICAgICAgIHZhciBuZXh0Tm9kZSA9IHByZXZp
b3VzTm9kZS5lbGVtZW50Lm5leHRTaWJsaW5nOworICAgICAgICAgICAgbmV4dE5vZGUgPSBwcmV2
aW91c05vZGUuZWxlbWVudC5uZXh0U2libGluZzsKICAgICAgICAgaWYgKCFuZXh0Tm9kZSkKICAg
ICAgICAgICAgIG5leHROb2RlID0gdGhpcy5kYXRhR3JpZC5kYXRhVGFibGVCb2R5Lmxhc3RDaGls
ZDsKICAgICAgICAgdGhpcy5kYXRhR3JpZC5kYXRhVGFibGVCb2R5Lmluc2VydEJlZm9yZSh0aGlz
LmVsZW1lbnQsIG5leHROb2RlKTsKQEAgLTE1MTAsNiArMTUyNywxMCBAQCBXZWJJbnNwZWN0b3Iu
RGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKIAogV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5w
cm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CiAKKy8q
KgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9k
ZX0KKyAqLwogV2ViSW5zcGVjdG9yLkNyZWF0aW9uRGF0YUdyaWROb2RlID0gZnVuY3Rpb24oZGF0
YSwgaGFzQ2hpbGRyZW4pCiB7CiAgICAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5jYWxsKHRo
aXMsIGRhdGEsIGhhc0NoaWxkcmVuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvVUlVdGlscy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvVUlVdGlscy5qcwppbmRleCBjNDlhNTQyZmIxZGRiMjUwODRkYWIyNWJlYzQ4N2FlMDkz
NWJiMjllLi5mZTcxZDc3YzM2Mzg0NmNmOTlhMzlmZjQ1YTAzNWY0ZWI4OWU5ZjM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1VJVXRpbHMuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9VSVV0aWxzLmpzCkBAIC0xNjUsMyAr
MTY1LDIwMyBAQCBXZWJJbnNwZWN0b3IuYW5pbWF0ZVN0eWxlID0gZnVuY3Rpb24oYW5pbWF0aW9u
cywgZHVyYXRpb24sIGNhbGxiYWNrKQogICAgIH07CiB9CiAKK1dlYkluc3BlY3Rvci5pc0JlaW5n
RWRpdGVkID0gZnVuY3Rpb24oZWxlbWVudCkKK3sKKyAgICByZXR1cm4gZWxlbWVudC5fX2VkaXRp
bmc7Cit9CisKK1dlYkluc3BlY3Rvci5tYXJrQmVpbmdFZGl0ZWQgPSBmdW5jdGlvbihlbGVtZW50
LCB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUpIHsKKyAgICAgICAgaWYgKGVsZW1lbnQuX19lZGl0
aW5nKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBlbGVtZW50Ll9fZWRpdGlu
ZyA9IHRydWU7CisgICAgICAgIFdlYkluc3BlY3Rvci5fX2VkaXRpbmdDb3VudCA9IChXZWJJbnNw
ZWN0b3IuX19lZGl0aW5nQ291bnQgfHwgMCkgKyAxOworICAgIH0gZWxzZSB7CisgICAgICAgIGlm
ICghZWxlbWVudC5fX2VkaXRpbmcpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IGRlbGV0ZSBlbGVtZW50Ll9fZWRpdGluZzsKKyAgICAgICAgLS1XZWJJbnNwZWN0b3IuX19lZGl0
aW5nQ291bnQ7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitXZWJJbnNwZWN0b3IuaXNF
ZGl0aW5nQW55RmllbGQgPSBmdW5jdGlvbigpCit7CisgICAgcmV0dXJuICEhV2ViSW5zcGVjdG9y
Ll9fZWRpdGluZ0NvdW50OworfQorCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICovCitXZWJJbnNw
ZWN0b3IuRWRpdGluZ0NvbmZpZyA9IGZ1bmN0aW9uKCkKK3sKKyAgICAvKioKKyAgICAgKiBIYW5k
bGVzIGVkaXRpbmcgImNvbW1pdCIgb3V0Y29tZQorICAgICAqIEB0eXBlIHtmdW5jdGlvbihFbGVt
ZW50LHN0cmluZyxzdHJpbmcsKixzdHJpbmcpfHVuZGVmaW5lZH0KKyAgICAgKi8KKyAgICB0aGlz
LmNvbW1pdEhhbmRsZXI7CisKKyAgICAvKioKKyAgICAgKiBIYW5kbGVzIGVkaXRpbmcgImNhbmNl
bCIgb3V0Y29tZQorICAgICAqIEB0eXBlIHtmdW5jdGlvbihFbGVtZW50LCopfHVuZGVmaW5lZH0K
KyAgICAgKi8KKyAgICB0aGlzLmNhbmNlbEhhbmRsZXI7CisKKyAgICAvKioKKyAgICAgKiBIYW5k
bGVzIHRoZSAicGFzdGUiIGV2ZW50LCByZXR1cm4gdmFsdWVzIGFyZSB0aGUgc2FtZSBhcyB0aG9z
ZSBmb3IgY3VzdG9tRmluaXNoSGFuZGxlcgorICAgICAqIEB0eXBlIHtmdW5jdGlvbihFbGVtZW50
KXx1bmRlZmluZWR9CisgICAgICovCisgICAgdGhpcy5wYXN0ZUhhbmRsZXI7CisKKyAgICAvKiog
CisgICAgICogQW4gYXJiaXRyYXJ5IGNvbnRleHQgb2JqZWN0IHRvIGJlIHBhc3NlZCB0byB0aGUg
Y29tbWl0IGFuZCBjYW5jZWwgaGFuZGxlcnMKKyAgICAgKiBAdHlwZSB7T2JqZWN0fHVuZGVmaW5l
ZH0KKyAgICAgKi8KKyAgICB0aGlzLmNvbnRleHQ7CisKKyAgICAvKiogCisgICAgICogV2hldGhl
ciB0aGUgZWRpdGVkIGVsZW1lbnQgaXMgbXVsdGlsaW5lCisgICAgICogQHR5cGUge2Jvb2xlYW58
dW5kZWZpbmVkfQorICAgICAqLworICAgIHRoaXMubXVsdGlsaW5lOworCisgICAgLyoqCisgICAg
ICogQ3VzdG9tIGZpbmlzaCBoYW5kbGVyIGZvciB0aGUgZWRpdGluZyBzZXNzaW9uIChpbnZva2Vk
IG9uIGtleWRvd24pCisgICAgICogQHR5cGUge2Z1bmN0aW9uKEVsZW1lbnQsKil8dW5kZWZpbmVk
fQorICAgICAqLworICAgIHRoaXMuY3VzdG9tRmluaXNoSGFuZGxlcjsKK30KKworCisvKiogCisg
KiBAcGFyYW0ge0VsZW1lbnR9IGVsZW1lbnQKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkVkaXRp
bmdDb25maWc9fSBjb25maWcKKyAqLworV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZyA9IGZ1bmN0
aW9uKGVsZW1lbnQsIGNvbmZpZykKK3sKKyAgICBpZiAoIVdlYkluc3BlY3Rvci5tYXJrQmVpbmdF
ZGl0ZWQoZWxlbWVudCwgdHJ1ZSkpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbmZpZyA9IGNv
bmZpZyB8fCBuZXcgV2ViSW5zcGVjdG9yLkVkaXRpbmdDb25maWcoKTsKKyAgICB2YXIgY29tbWl0
dGVkQ2FsbGJhY2sgPSBjb25maWcuY29tbWl0SGFuZGxlcjsKKyAgICB2YXIgY2FuY2VsbGVkQ2Fs
bGJhY2sgPSBjb25maWcuY2FuY2VsSGFuZGxlcjsKKyAgICB2YXIgcGFzdGVDYWxsYmFjayA9IGNv
bmZpZy5wYXN0ZUhhbmRsZXI7CisgICAgdmFyIGNvbnRleHQgPSBjb25maWcuY29udGV4dDsKKyAg
ICB2YXIgb2xkVGV4dCA9IGdldENvbnRlbnQoZWxlbWVudCk7CisgICAgdmFyIG1vdmVEaXJlY3Rp
b24gPSAiIjsKKworICAgIGVsZW1lbnQuYWRkU3R5bGVDbGFzcygiZWRpdGluZyIpOworCisgICAg
dmFyIG9sZFRhYkluZGV4ID0gZWxlbWVudC50YWJJbmRleDsKKyAgICBpZiAoZWxlbWVudC50YWJJ
bmRleCA8IDApCisgICAgICAgIGVsZW1lbnQudGFiSW5kZXggPSAwOworCisgICAgZnVuY3Rpb24g
Ymx1ckV2ZW50TGlzdGVuZXIoKSB7CisgICAgICAgIGVkaXRpbmdDb21taXR0ZWQuY2FsbChlbGVt
ZW50KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBnZXRDb250ZW50KGVsZW1lbnQpIHsKKyAgICAg
ICAgaWYgKGVsZW1lbnQudGFnTmFtZSA9PT0gIklOUFVUIiAmJiBlbGVtZW50LnR5cGUgPT09ICJ0
ZXh0IikKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50LnZhbHVlOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICByZXR1cm4gZWxlbWVudC50ZXh0Q29udGVudDsKKyAgICB9CisKKyAgICAvKiog
QHRoaXMge0VsZW1lbnR9ICovCisgICAgZnVuY3Rpb24gY2xlYW5VcEFmdGVyRWRpdGluZygpCisg
ICAgeworICAgICAgICBXZWJJbnNwZWN0b3IubWFya0JlaW5nRWRpdGVkKGVsZW1lbnQsIGZhbHNl
KTsKKworICAgICAgICB0aGlzLnJlbW92ZVN0eWxlQ2xhc3MoImVkaXRpbmciKTsKKyAgICAgICAg
dGhpcy50YWJJbmRleCA9IG9sZFRhYkluZGV4OworICAgICAgICB0aGlzLnNjcm9sbFRvcCA9IDA7
CisgICAgICAgIHRoaXMuc2Nyb2xsTGVmdCA9IDA7CisKKyAgICAgICAgZWxlbWVudC5yZW1vdmVF
dmVudExpc3RlbmVyKCJibHVyIiwgYmx1ckV2ZW50TGlzdGVuZXIsIGZhbHNlKTsKKyAgICAgICAg
ZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIiwga2V5RG93bkV2ZW50TGlzdGVu
ZXIsIHRydWUpOworICAgICAgICBpZiAocGFzdGVDYWxsYmFjaykKKyAgICAgICAgICAgIGVsZW1l
bnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigicGFzdGUiLCBwYXN0ZUV2ZW50TGlzdGVuZXIsIHRydWUp
OworCisgICAgICAgIGlmIChlbGVtZW50ID09PSBXZWJJbnNwZWN0b3IuY3VycmVudEZvY3VzRWxl
bWVudCB8fCBlbGVtZW50LmlzQW5jZXN0b3IoV2ViSW5zcGVjdG9yLmN1cnJlbnRGb2N1c0VsZW1l
bnQpKQorICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmN1cnJlbnRGb2N1c0VsZW1lbnQgPSBXZWJJ
bnNwZWN0b3IucHJldmlvdXNGb2N1c0VsZW1lbnQ7CisgICAgfQorCisgICAgLyoqIEB0aGlzIHtF
bGVtZW50fSAqLworICAgIGZ1bmN0aW9uIGVkaXRpbmdDYW5jZWxsZWQoKQorICAgIHsKKyAgICAg
ICAgaWYgKHRoaXMudGFnTmFtZSA9PT0gIklOUFVUIiAmJiB0aGlzLnR5cGUgPT09ICJ0ZXh0IikK
KyAgICAgICAgICAgIHRoaXMudmFsdWUgPSBvbGRUZXh0OworICAgICAgICBlbHNlCisgICAgICAg
ICAgICB0aGlzLnRleHRDb250ZW50ID0gb2xkVGV4dDsKKworICAgICAgICBjbGVhblVwQWZ0ZXJF
ZGl0aW5nLmNhbGwodGhpcyk7CisKKyAgICAgICAgaWYgKGNhbmNlbGxlZENhbGxiYWNrKQorICAg
ICAgICAgICAgY2FuY2VsbGVkQ2FsbGJhY2sodGhpcywgY29udGV4dCk7CisgICAgfQorCisgICAg
LyoqIEB0aGlzIHtFbGVtZW50fSAqLworICAgIGZ1bmN0aW9uIGVkaXRpbmdDb21taXR0ZWQoKQor
ICAgIHsKKyAgICAgICAgY2xlYW5VcEFmdGVyRWRpdGluZy5jYWxsKHRoaXMpOworCisgICAgICAg
IGlmIChjb21taXR0ZWRDYWxsYmFjaykKKyAgICAgICAgICAgIGNvbW1pdHRlZENhbGxiYWNrKHRo
aXMsIGdldENvbnRlbnQodGhpcyksIG9sZFRleHQsIGNvbnRleHQsIG1vdmVEaXJlY3Rpb24pOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIGRlZmF1bHRGaW5pc2hIYW5kbGVyKGV2ZW50KQorICAgIHsK
KyAgICAgICAgdmFyIGlzTWV0YU9yQ3RybCA9IFdlYkluc3BlY3Rvci5pc01hYygpID8KKyAgICAg
ICAgICAgIGV2ZW50Lm1ldGFLZXkgJiYgIWV2ZW50LnNoaWZ0S2V5ICYmICFldmVudC5jdHJsS2V5
ICYmICFldmVudC5hbHRLZXkgOgorICAgICAgICAgICAgZXZlbnQuY3RybEtleSAmJiAhZXZlbnQu
c2hpZnRLZXkgJiYgIWV2ZW50Lm1ldGFLZXkgJiYgIWV2ZW50LmFsdEtleTsKKyAgICAgICAgaWYg
KGlzRW50ZXJLZXkoZXZlbnQpICYmIChldmVudC5pc01ldGFPckN0cmxGb3JUZXN0IHx8ICFjb25m
aWcubXVsdGlsaW5lIHx8IGlzTWV0YU9yQ3RybCkpCisgICAgICAgICAgICByZXR1cm4gImNvbW1p
dCI7CisgICAgICAgIGVsc2UgaWYgKGV2ZW50LmtleUNvZGUgPT09IFdlYkluc3BlY3Rvci5LZXli
b2FyZFNob3J0Y3V0LktleXMuRXNjLmNvZGUgfHwgZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIlUr
MDAxQiIpCisgICAgICAgICAgICByZXR1cm4gImNhbmNlbCI7CisgICAgICAgIGVsc2UgaWYgKGV2
ZW50LmtleUlkZW50aWZpZXIgPT09ICJVKzAwMDkiKSAvLyBUYWIga2V5CisgICAgICAgICAgICBy
ZXR1cm4gIm1vdmUtIiArIChldmVudC5zaGlmdEtleSA/ICJiYWNrd2FyZCIgOiAiZm9yd2FyZCIp
OworICAgIH0KKworICAgIGZ1bmN0aW9uIGhhbmRsZUVkaXRpbmdSZXN1bHQocmVzdWx0LCBldmVu
dCkKKyAgICB7CisgICAgICAgIGlmIChyZXN1bHQgPT09ICJjb21taXQiKSB7CisgICAgICAgICAg
ICBlZGl0aW5nQ29tbWl0dGVkLmNhbGwoZWxlbWVudCk7CisgICAgICAgICAgICBldmVudC5wcmV2
ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CisgICAg
ICAgIH0gZWxzZSBpZiAocmVzdWx0ID09PSAiY2FuY2VsIikgeworICAgICAgICAgICAgZWRpdGlu
Z0NhbmNlbGxlZC5jYWxsKGVsZW1lbnQpOworICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1
bHQoKTsKKyAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOworICAgICAgICB9IGVs
c2UgaWYgKHJlc3VsdCAmJiByZXN1bHQuaW5kZXhPZigibW92ZS0iKSA9PT0gMCkgeworICAgICAg
ICAgICAgbW92ZURpcmVjdGlvbiA9IHJlc3VsdC5zdWJzdHJpbmcoNSk7CisgICAgICAgICAgICBp
ZiAoZXZlbnQua2V5SWRlbnRpZmllciAhPT0gIlUrMDAwOSIpCisgICAgICAgICAgICAgICAgYmx1
ckV2ZW50TGlzdGVuZXIoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIHBhc3Rl
RXZlbnRMaXN0ZW5lcihldmVudCkKKyAgICB7CisgICAgICAgIHZhciByZXN1bHQgPSBwYXN0ZUNh
bGxiYWNrKGV2ZW50KTsKKyAgICAgICAgaGFuZGxlRWRpdGluZ1Jlc3VsdChyZXN1bHQsIGV2ZW50
KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBrZXlEb3duRXZlbnRMaXN0ZW5lcihldmVudCkKKyAg
ICB7CisgICAgICAgIHZhciBoYW5kbGVyID0gY29uZmlnLmN1c3RvbUZpbmlzaEhhbmRsZXIgfHwg
ZGVmYXVsdEZpbmlzaEhhbmRsZXI7CisgICAgICAgIHZhciByZXN1bHQgPSBoYW5kbGVyKGV2ZW50
KTsKKyAgICAgICAgaGFuZGxlRWRpdGluZ1Jlc3VsdChyZXN1bHQsIGV2ZW50KTsKKyAgICB9CisK
KyAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLCBibHVyRXZlbnRMaXN0ZW5lciwg
ZmFsc2UpOworICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIGtleURvd25F
dmVudExpc3RlbmVyLCB0cnVlKTsKKyAgICBpZiAocGFzdGVDYWxsYmFjaykKKyAgICAgICAgZWxl
bWVudC5hZGRFdmVudExpc3RlbmVyKCJwYXN0ZSIsIHBhc3RlRXZlbnRMaXN0ZW5lciwgdHJ1ZSk7
CisKKyAgICBXZWJJbnNwZWN0b3IuY3VycmVudEZvY3VzRWxlbWVudCA9IGVsZW1lbnQ7CisgICAg
cmV0dXJuIHsKKyAgICAgICAgY2FuY2VsOiBlZGl0aW5nQ2FuY2VsbGVkLmJpbmQoZWxlbWVudCks
CisgICAgICAgIGNvbW1pdDogZWRpdGluZ0NvbW1pdHRlZC5iaW5kKGVsZW1lbnQpCisgICAgfTsK
K30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9leHRl
cm5zLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9leHRlcm5zLmpzCmlu
ZGV4IDA2YWZiZGViMTdkYmM2YTk2ODA2YzEwM2MzZjNhOGQ4Y2E3NjJkODcuLjFiYjIzZjFkZjQw
MWQzZWY1ZWJlZDNhNmIyZmU1NjY5ZDdjY2UzZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvZXh0ZXJucy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2V4dGVybnMuanMKQEAgLTc3LDcgKzc3LDEwIEBAIEpTT04uc3RyaW5n
aWZ5ID0gZnVuY3Rpb24oc3RyKSB7fQogCiBFbGVtZW50LnByb3RvdHlwZS5zY3JvbGxJbnRvVmll
d0lmTmVlZGVkID0gZnVuY3Rpb24oKSB7fQogCi1BcnJheS5wcm90b3R5cGUucmVtb3ZlID0gZnVu
Y3Rpb24ob2JqKSB7fQorLyoqCisgKiBAcGFyYW0ge2Jvb2xlYW49fSBvbmx5Rmlyc3QKKyAqLwor
QXJyYXkucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uKG9iaiwgb25seUZpcnN0KSB7fQogCiBX
ZWJJbnNwZWN0b3IuZXh0ZW5zaW9uU2VydmVyID0ge30KIFdlYkluc3BlY3Rvci5leHRlbnNpb25T
ZXJ2ZXIubm90aWZ5UmVzb3VyY2VDb250ZW50Q29tbWl0dGVkID0gZnVuY3Rpb24ocmVzb3VyY2Us
IGNvbnRlbnQpIHt9CkBAIC0xNzgsMyArMTgxLDEzIEBAIFdlYkluc3BlY3Rvci5wcmV2aW91c0Zv
Y3VzRWxlbWVudCA9IG51bGw7CiAgKiBAdHlwZSB7c3RyaW5nfQogICovCiBXZWJJbnNwZWN0b3Iu
cGxhdGZvcm1GbGF2b3IgPSAiIjsKKworLyoqIEBwYXJhbSB7RWxlbWVudH0gZWxlbWVudCAqLwor
d2luZG93LmdldENvbXB1dGVkU3R5bGUgPSBmdW5jdGlvbihlbGVtZW50KQoreworfQorCisvKioK
KyAqIEB0eXBlIHtib29sZWFufQorICovCitFdmVudC5wcm90b3R5cGUuaXNNZXRhT3JDdHJsRm9y
VGVzdCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9pbnNwZWN0b3IuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2lu
c3BlY3Rvci5qcwppbmRleCAzNTFjNTJkOWY2YjBkMWIzNTg2MmE5MmU4NmQyOGM3ODhkMTZkZTU2
Li4xY2U5ZTk5MTc2OGYxYmQ1NTU1ZGVlYmNmNGRhN2ZkMzVkNzE1NmFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtMTM1NiwxNjAg
KzEzNTYsNiBAQCBXZWJJbnNwZWN0b3IudXNlTG93ZXJDYXNlTWVudVRpdGxlcyA9IGZ1bmN0aW9u
KCkKICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLnBsYXRmb3JtID09PSAid2luZG93cyIgJiYgUHJl
ZmVyZW5jZXMudXNlTG93ZXJDYXNlTWVudVRpdGxlc09uV2luZG93czsKIH0KIAotV2ViSW5zcGVj
dG9yLmlzQmVpbmdFZGl0ZWQgPSBmdW5jdGlvbihlbGVtZW50KQotewotICAgIHJldHVybiBlbGVt
ZW50Ll9fZWRpdGluZzsKLX0KLQotV2ViSW5zcGVjdG9yLm1hcmtCZWluZ0VkaXRlZCA9IGZ1bmN0
aW9uKGVsZW1lbnQsIHZhbHVlKQotewotICAgIGlmICh2YWx1ZSkgewotICAgICAgICBpZiAoZWxl
bWVudC5fX2VkaXRpbmcpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGVsZW1l
bnQuX19lZGl0aW5nID0gdHJ1ZTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLl9fZWRpdGluZ0NvdW50
ID0gKFdlYkluc3BlY3Rvci5fX2VkaXRpbmdDb3VudCB8fCAwKSArIDE7Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgaWYgKCFlbGVtZW50Ll9fZWRpdGluZykKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgZGVsZXRlIGVsZW1lbnQuX19lZGl0aW5nOwotICAgICAgICAtLVdlYkluc3Bl
Y3Rvci5fX2VkaXRpbmdDb3VudDsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLVdlYklu
c3BlY3Rvci5pc0VkaXRpbmdBbnlGaWVsZCA9IGZ1bmN0aW9uKCkKLXsKLSAgICByZXR1cm4gISFX
ZWJJbnNwZWN0b3IuX19lZGl0aW5nQ291bnQ7Ci19Ci0KLS8vIEF2YWlsYWJsZSBjb25maWcgZmll
bGRzIChhbGwgb3B0aW9uYWwpOgotLy8gY29udGV4dDogT2JqZWN0IC0gYW4gYXJiaXRyYXJ5IGNv
bnRleHQgb2JqZWN0IHRvIGJlIHBhc3NlZCB0byB0aGUgY29tbWl0IGFuZCBjYW5jZWwgaGFuZGxl
cnMKLS8vIGNvbW1pdEhhbmRsZXI6IEZ1bmN0aW9uIC0gaGFuZGxlcyBlZGl0aW5nICJjb21taXQi
IG91dGNvbWUKLS8vIGNhbmNlbEhhbmRsZXI6IEZ1bmN0aW9uIC0gaGFuZGxlcyBlZGl0aW5nICJj
YW5jZWwiIG91dGNvbWUKLS8vIGN1c3RvbUZpbmlzaEhhbmRsZXI6IEZ1bmN0aW9uIC0gY3VzdG9t
IGZpbmlzaCBoYW5kbGVyIGZvciB0aGUgZWRpdGluZyBzZXNzaW9uIChpbnZva2VkIG9uIGtleWRv
d24pCi0vLyBwYXN0ZUhhbmRsZXI6IEZ1bmN0aW9uIC0gaGFuZGxlcyB0aGUgInBhc3RlIiBldmVu
dCwgcmV0dXJuIHZhbHVlcyBhcmUgdGhlIHNhbWUgYXMgdGhvc2UgZm9yIGN1c3RvbUZpbmlzaEhh
bmRsZXIKLS8vIG11bHRpbGluZTogQm9vbGVhbiAtIHdoZXRoZXIgdGhlIGVkaXRlZCBlbGVtZW50
IGlzIG11bHRpbGluZQotV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZyA9IGZ1bmN0aW9uKGVsZW1l
bnQsIGNvbmZpZykKLXsKLSAgICBpZiAoIVdlYkluc3BlY3Rvci5tYXJrQmVpbmdFZGl0ZWQoZWxl
bWVudCwgdHJ1ZSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGNvbmZpZyA9IGNvbmZpZyB8fCB7
fTsKLSAgICB2YXIgY29tbWl0dGVkQ2FsbGJhY2sgPSBjb25maWcuY29tbWl0SGFuZGxlcjsKLSAg
ICB2YXIgY2FuY2VsbGVkQ2FsbGJhY2sgPSBjb25maWcuY2FuY2VsSGFuZGxlcjsKLSAgICB2YXIg
cGFzdGVDYWxsYmFjayA9IGNvbmZpZy5wYXN0ZUhhbmRsZXI7Ci0gICAgdmFyIGNvbnRleHQgPSBj
b25maWcuY29udGV4dDsKLSAgICB2YXIgb2xkVGV4dCA9IGdldENvbnRlbnQoZWxlbWVudCk7Ci0g
ICAgdmFyIG1vdmVEaXJlY3Rpb24gPSAiIjsKLQotICAgIGVsZW1lbnQuYWRkU3R5bGVDbGFzcygi
ZWRpdGluZyIpOwotCi0gICAgdmFyIG9sZFRhYkluZGV4ID0gZWxlbWVudC50YWJJbmRleDsKLSAg
ICBpZiAoZWxlbWVudC50YWJJbmRleCA8IDApCi0gICAgICAgIGVsZW1lbnQudGFiSW5kZXggPSAw
OwotCi0gICAgZnVuY3Rpb24gYmx1ckV2ZW50TGlzdGVuZXIoKSB7Ci0gICAgICAgIGVkaXRpbmdD
b21taXR0ZWQuY2FsbChlbGVtZW50KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBnZXRDb250ZW50
KGVsZW1lbnQpIHsKLSAgICAgICAgaWYgKGVsZW1lbnQudGFnTmFtZSA9PT0gIklOUFVUIiAmJiBl
bGVtZW50LnR5cGUgPT09ICJ0ZXh0IikKLSAgICAgICAgICAgIHJldHVybiBlbGVtZW50LnZhbHVl
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gZWxlbWVudC50ZXh0Q29udGVudDsK
LSAgICB9Ci0KLSAgICBmdW5jdGlvbiBjbGVhblVwQWZ0ZXJFZGl0aW5nKCkgewotICAgICAgICBX
ZWJJbnNwZWN0b3IubWFya0JlaW5nRWRpdGVkKGVsZW1lbnQsIGZhbHNlKTsKLQotICAgICAgICB0
aGlzLnJlbW92ZVN0eWxlQ2xhc3MoImVkaXRpbmciKTsKLSAgICAgICAgdGhpcy50YWJJbmRleCA9
IG9sZFRhYkluZGV4OwotICAgICAgICB0aGlzLnNjcm9sbFRvcCA9IDA7Ci0gICAgICAgIHRoaXMu
c2Nyb2xsTGVmdCA9IDA7Ci0KLSAgICAgICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJi
bHVyIiwgYmx1ckV2ZW50TGlzdGVuZXIsIGZhbHNlKTsKLSAgICAgICAgZWxlbWVudC5yZW1vdmVF
dmVudExpc3RlbmVyKCJrZXlkb3duIiwga2V5RG93bkV2ZW50TGlzdGVuZXIsIHRydWUpOwotICAg
ICAgICBpZiAocGFzdGVDYWxsYmFjaykKLSAgICAgICAgICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRM
aXN0ZW5lcigicGFzdGUiLCBwYXN0ZUV2ZW50TGlzdGVuZXIsIHRydWUpOwotCi0gICAgICAgIGlm
IChlbGVtZW50ID09PSBXZWJJbnNwZWN0b3IuY3VycmVudEZvY3VzRWxlbWVudCB8fCBlbGVtZW50
LmlzQW5jZXN0b3IoV2ViSW5zcGVjdG9yLmN1cnJlbnRGb2N1c0VsZW1lbnQpKQotICAgICAgICAg
ICAgV2ViSW5zcGVjdG9yLmN1cnJlbnRGb2N1c0VsZW1lbnQgPSBXZWJJbnNwZWN0b3IucHJldmlv
dXNGb2N1c0VsZW1lbnQ7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZWRpdGluZ0NhbmNlbGxlZCgp
IHsKLSAgICAgICAgaWYgKHRoaXMudGFnTmFtZSA9PT0gIklOUFVUIiAmJiB0aGlzLnR5cGUgPT09
ICJ0ZXh0IikKLSAgICAgICAgICAgIHRoaXMudmFsdWUgPSBvbGRUZXh0OwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICB0aGlzLnRleHRDb250ZW50ID0gb2xkVGV4dDsKLQotICAgICAgICBjbGVh
blVwQWZ0ZXJFZGl0aW5nLmNhbGwodGhpcyk7Ci0KLSAgICAgICAgaWYgKGNhbmNlbGxlZENhbGxi
YWNrKQotICAgICAgICAgICAgY2FuY2VsbGVkQ2FsbGJhY2sodGhpcywgY29udGV4dCk7Ci0gICAg
fQotCi0gICAgZnVuY3Rpb24gZWRpdGluZ0NvbW1pdHRlZCgpIHsKLSAgICAgICAgY2xlYW5VcEFm
dGVyRWRpdGluZy5jYWxsKHRoaXMpOwotCi0gICAgICAgIGlmIChjb21taXR0ZWRDYWxsYmFjaykK
LSAgICAgICAgICAgIGNvbW1pdHRlZENhbGxiYWNrKHRoaXMsIGdldENvbnRlbnQodGhpcyksIG9s
ZFRleHQsIGNvbnRleHQsIG1vdmVEaXJlY3Rpb24pOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGRl
ZmF1bHRGaW5pc2hIYW5kbGVyKGV2ZW50KQotICAgIHsKLSAgICAgICAgdmFyIGlzTWV0YU9yQ3Ry
bCA9IFdlYkluc3BlY3Rvci5pc01hYygpID8KLSAgICAgICAgICAgIGV2ZW50Lm1ldGFLZXkgJiYg
IWV2ZW50LnNoaWZ0S2V5ICYmICFldmVudC5jdHJsS2V5ICYmICFldmVudC5hbHRLZXkgOgotICAg
ICAgICAgICAgZXZlbnQuY3RybEtleSAmJiAhZXZlbnQuc2hpZnRLZXkgJiYgIWV2ZW50Lm1ldGFL
ZXkgJiYgIWV2ZW50LmFsdEtleTsKLSAgICAgICAgaWYgKGlzRW50ZXJLZXkoZXZlbnQpICYmIChl
dmVudC5pc01ldGFPckN0cmxGb3JUZXN0IHx8ICFjb25maWcubXVsdGlsaW5lIHx8IGlzTWV0YU9y
Q3RybCkpCi0gICAgICAgICAgICByZXR1cm4gImNvbW1pdCI7Ci0gICAgICAgIGVsc2UgaWYgKGV2
ZW50LmtleUNvZGUgPT09IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleXMuRXNjLmNv
ZGUgfHwgZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIlUrMDAxQiIpCi0gICAgICAgICAgICByZXR1
cm4gImNhbmNlbCI7Ci0gICAgICAgIGVsc2UgaWYgKGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJV
KzAwMDkiKSAvLyBUYWIga2V5Ci0gICAgICAgICAgICByZXR1cm4gIm1vdmUtIiArIChldmVudC5z
aGlmdEtleSA/ICJiYWNrd2FyZCIgOiAiZm9yd2FyZCIpOwotICAgIH0KLQotICAgIGZ1bmN0aW9u
IGhhbmRsZUVkaXRpbmdSZXN1bHQocmVzdWx0LCBldmVudCkKLSAgICB7Ci0gICAgICAgIGlmIChy
ZXN1bHQgPT09ICJjb21taXQiKSB7Ci0gICAgICAgICAgICBlZGl0aW5nQ29tbWl0dGVkLmNhbGwo
ZWxlbWVudCk7Ci0gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwotICAgICAgICAg
ICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7Ci0gICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09
PSAiY2FuY2VsIikgewotICAgICAgICAgICAgZWRpdGluZ0NhbmNlbGxlZC5jYWxsKGVsZW1lbnQp
OwotICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKLSAgICAgICAgICAgIGV2ZW50
LnN0b3BQcm9wYWdhdGlvbigpOwotICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCAmJiByZXN1bHQu
aW5kZXhPZigibW92ZS0iKSA9PT0gMCkgewotICAgICAgICAgICAgbW92ZURpcmVjdGlvbiA9IHJl
c3VsdC5zdWJzdHJpbmcoNSk7Ci0gICAgICAgICAgICBpZiAoZXZlbnQua2V5SWRlbnRpZmllciAh
PT0gIlUrMDAwOSIpCi0gICAgICAgICAgICAgICAgYmx1ckV2ZW50TGlzdGVuZXIoKTsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIGZ1bmN0aW9uIHBhc3RlRXZlbnRMaXN0ZW5lcihldmVudCkKLSAg
ICB7Ci0gICAgICAgIHZhciByZXN1bHQgPSBwYXN0ZUNhbGxiYWNrKGV2ZW50KTsKLSAgICAgICAg
aGFuZGxlRWRpdGluZ1Jlc3VsdChyZXN1bHQsIGV2ZW50KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlv
biBrZXlEb3duRXZlbnRMaXN0ZW5lcihldmVudCkKLSAgICB7Ci0gICAgICAgIHZhciBoYW5kbGVy
ID0gY29uZmlnLmN1c3RvbUZpbmlzaEhhbmRsZXIgfHwgZGVmYXVsdEZpbmlzaEhhbmRsZXI7Ci0g
ICAgICAgIHZhciByZXN1bHQgPSBoYW5kbGVyKGV2ZW50KTsKLSAgICAgICAgaGFuZGxlRWRpdGlu
Z1Jlc3VsdChyZXN1bHQsIGV2ZW50KTsKLSAgICB9Ci0KLSAgICBlbGVtZW50LmFkZEV2ZW50TGlz
dGVuZXIoImJsdXIiLCBibHVyRXZlbnRMaXN0ZW5lciwgZmFsc2UpOwotICAgIGVsZW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIGtleURvd25FdmVudExpc3RlbmVyLCB0cnVlKTsKLSAg
ICBpZiAocGFzdGVDYWxsYmFjaykKLSAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJw
YXN0ZSIsIHBhc3RlRXZlbnRMaXN0ZW5lciwgdHJ1ZSk7Ci0KLSAgICBXZWJJbnNwZWN0b3IuY3Vy
cmVudEZvY3VzRWxlbWVudCA9IGVsZW1lbnQ7Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgY2FuY2Vs
OiBlZGl0aW5nQ2FuY2VsbGVkLmJpbmQoZWxlbWVudCksCi0gICAgICAgIGNvbW1pdDogZWRpdGlu
Z0NvbW1pdHRlZC5iaW5kKGVsZW1lbnQpCi0gICAgfTsKLX0KLQogV2ViSW5zcGVjdG9yLl90b29s
YmFySXRlbUNsaWNrZWQgPSBmdW5jdGlvbihldmVudCkKIHsKICAgICB2YXIgdG9vbGJhckl0ZW0g
PSBldmVudC5jdXJyZW50VGFyZ2V0Owo=
</data>
<flag name="review"
          id="106892"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>