<?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>111965</bug_id>
          
          <creation_ts>2013-03-11 02:28:17 -0700</creation_ts>
          <short_desc>Web Inspector: extract common parts of native profiles</short_desc>
          <delta_ts>2013-03-11 05:45:24 -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>1</everconfirmed>
          <reporter name="Yury Semikhatsky">yurys</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</assigned_to>
          <cc>apavlov</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>vsevik</cc>
    
    <cc>web-inspector-bugs</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>852131</commentid>
    <comment_count>0</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2013-03-11 02:28:17 -0700</bug_when>
    <thetext>Most of the profile type logic can be shared between native heap graph profiles and profiles with aggregated statistics. Since we are going to add more details to the aggregated view it makes sense to unify the mechanisms first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852134</commentid>
    <comment_count>1</comment_count>
      <attachid>192428</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2013-03-11 02:38:49 -0700</bug_when>
    <thetext>Created attachment 192428
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852138</commentid>
    <comment_count>2</comment_count>
      <attachid>192428</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2013-03-11 02:46:04 -0700</bug_when>
    <thetext>Comment on attachment 192428
Patch

lgtm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852203</commentid>
    <comment_count>3</comment_count>
      <attachid>192443</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2013-03-11 05:08:40 -0700</bug_when>
    <thetext>Created attachment 192443
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852210</commentid>
    <comment_count>4</comment_count>
      <attachid>192445</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2013-03-11 05:18:35 -0700</bug_when>
    <thetext>Created attachment 192445
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852217</commentid>
    <comment_count>5</comment_count>
      <attachid>192445</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2013-03-11 05:40:50 -0700</bug_when>
    <thetext>Comment on attachment 192445
Patch

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

&gt; Source/WebCore/inspector/front-end/NativeMemorySnapshotView.js:446
&gt; +        var metaInformation = /** @type{HeapSnapshotMetainfo} */(graphMetaInformation);

Whitespace in front of &apos;(&apos; (according to the code I&apos;ve seen around)

&gt; Source/WebCore/inspector/front-end/NativeMemorySnapshotView.js:585
&gt; +        this.sidebarElement.subtitle = Number.bytesToString(/** @type{number} */(this._memoryBlock.size));

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852221</commentid>
    <comment_count>6</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2013-03-11 05:45:24 -0700</bug_when>
    <thetext>Committed r145357: &lt;http://trac.webkit.org/changeset/145357&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192428</attachid>
            <date>2013-03-11 02:38:49 -0700</date>
            <delta_ts>2013-03-11 05:08:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111965-20130311133448.patch</filename>
            <type>text/plain</type>
            <size>13130</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MDQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjQ0Y2E2YTM2NmE2YzRi
NDIzMDJjOGU3MGY5Yzk0NDRmNTg5ZDQ3Zi4uNDUwNzY5Y2M2ZjhjYjMyMzZiMWVlZTQwMjFhMTky
NjM2ODVmMWMxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEzLTAzLTExICBZdXJ5
IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGV4dHJhY3QgY29tbW9uIHBhcnRzIG9mIG5hdGl2ZSBwcm9maWxlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExOTY1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXh0cmFjdGVkIGNvbW1vbiBwYXJ0
cyBvZiBuYXRpdmUgcHJvZmlsZXMgaW50byBOYXRpdmVQcm9maWxlVHlwZUJhc2UuIE1lbW9yeQor
ICAgICAgICBkb21haW4gZGlzcGF0Y2hlciBpcyBub3cgYSBzZXBhcmF0ZSBjbGFzcyBhcyBpdCBp
cyBzaGFyZWQgYnkgdHdvIG5hdGl2ZSBtZW1vcnkKKyAgICAgICAgcHJvZmlsZSB0eXBlcy4KKwor
ICAgICAgICBCb3RoIG5hdGl2ZSBtZW1vcnkgcHJvZmlsZSB0eXBlcyBub3cgY2FwdHVyZSBuYXRp
dmUgaGVhcCBncmFwaC4KKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvTmF0aXZlTWVt
b3J5U25hcHNob3RWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1lbW9yeUFnZW50RGlz
cGF0Y2hlci5pbnN0YW5jZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF0aXZlUHJvZmlsZVR5
cGVCYXNlLnByb3RvdHlwZS5idXR0b25DbGlja2VkLmRpZFJlY2VpdmVNZW1vcnlTbmFwc2hvdCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF0aXZlUHJvZmlsZVR5cGVCYXNlLnByb3RvdHlwZS5i
dXR0b25DbGlja2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXRpdmVTbmFwc2hvdFByb2Zp
bGVUeXBlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXRpdmVTbmFwc2hvdFByb2ZpbGVIZWFk
ZXIucHJvdG90eXBlLl9kaWRSZWNlaXZlTWVtb3J5U25hcHNob3QpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLk5hdGl2ZU1lbW9yeVByb2ZpbGVUeXBlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5O
YXRpdmVNZW1vcnlQcm9maWxlSGVhZGVyLnByb3RvdHlwZS5fdXBkYXRlU25hcHNob3RTdGF0dXMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdGl2ZU1lbW9yeVByb2ZpbGVIZWFkZXIucHJvdG90
eXBlLl9kaWRSZWNlaXZlTWVtb3J5U25hcHNob3QpOgorCiAyMDEzLTAzLTA2ICBQYXdlxYIgRm9y
eXNpdWsgIDx0dXhhdG9yQG8yLnBsPgogCiAgICAgICAgIFdlYktpdCBkb2VzIG5vdCBidWlsZCB3
aXRob3V0IGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGFmdGVyIENoYW5nZXNldCAxNDQ4MjMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmF0aXZlTWVtb3J5
U25hcHNob3RWaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OYXRp
dmVNZW1vcnlTbmFwc2hvdFZpZXcuanMKaW5kZXggM2JjZmFjZTJkOGYzODZmNzdlNjY2ODIzNTEw
ZWU2YzJiZGY2ZjBiYy4uMDViNDFiZDUzNjJhNDM3ZjE1YTY2MTY4NzhjYjkxYTEwMGJlYzBmNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OYXRpdmVNZW1v
cnlTbmFwc2hvdFZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9OYXRpdmVNZW1vcnlTbmFwc2hvdFZpZXcuanMKQEAgLTI0NSw5ICsyNDUsOSBAQCBXZWJJbnNw
ZWN0b3IuTWVtb3J5QWdlbnREaXNwYXRjaGVyID0gZnVuY3Rpb24oKQogCiBXZWJJbnNwZWN0b3Iu
TWVtb3J5QWdlbnREaXNwYXRjaGVyLmluc3RhbmNlID0gZnVuY3Rpb24oKQogewotICAgIGlmICgh
dGhpcy5faW5zdGFuY2UpCi0gICAgICAgIHRoaXMuX2luc3RhbmNlID0gbmV3IFdlYkluc3BlY3Rv
ci5NZW1vcnlBZ2VudERpc3BhdGNoZXIoKTsKLSAgICByZXR1cm4gdGhpcy5faW5zdGFuY2U7Cisg
ICAgaWYgKCFXZWJJbnNwZWN0b3IuTWVtb3J5QWdlbnREaXNwYXRjaGVyLl9pbnN0YW5jZSkKKyAg
ICAgICAgV2ViSW5zcGVjdG9yLk1lbW9yeUFnZW50RGlzcGF0Y2hlci5faW5zdGFuY2UgPSBuZXcg
V2ViSW5zcGVjdG9yLk1lbW9yeUFnZW50RGlzcGF0Y2hlcigpOworICAgIHJldHVybiBXZWJJbnNw
ZWN0b3IuTWVtb3J5QWdlbnREaXNwYXRjaGVyLl9pbnN0YW5jZTsKIH0KIAogV2ViSW5zcGVjdG9y
Lk1lbW9yeUFnZW50RGlzcGF0Y2hlci5wcm90b3R5cGUgPSB7CkBAIC0yNzIsNyArMjcyLDYgQEAg
V2ViSW5zcGVjdG9yLk1lbW9yeUFnZW50RGlzcGF0Y2hlci5wcm90b3R5cGUgPSB7CiAvKioKICAq
IEBjb25zdHJ1Y3RvcgogICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5Qcm9maWxlVHlwZX0KLSAq
IEBpbXBsZW1lbnRzIHtNZW1vcnlBZ2VudC5EaXNwYXRjaGVyfQogICogQHBhcmFtIHtzdHJpbmd9
IGlkCiAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQogICovCkBAIC0yOTQsMTUgKzI5MywxNSBAQCBX
ZWJJbnNwZWN0b3IuTmF0aXZlUHJvZmlsZVR5cGVCYXNlLnByb3RvdHlwZSA9IHsKICAgICBidXR0
b25DbGlja2VkOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLk1l
bW9yeUFnZW50RGlzcGF0Y2hlci5pbnN0YW5jZSgpLl9jdXJyZW50UHJvZmlsZUhlYWRlcikKLSAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICB2
YXIgcHJvZmlsZUhlYWRlciA9IG5ldyB0aGlzLl9wcm9maWxlSGVhZGVyQ29uc3RydWN0b3IodGhp
cywgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTbmFwc2hvdCAlZCIsIHRoaXMuX25leHRQcm9maWxl
VWlkKSwgdGhpcy5fbmV4dFByb2ZpbGVVaWQpOwogICAgICAgICArK3RoaXMuX25leHRQcm9maWxl
VWlkOwogICAgICAgICBwcm9maWxlSGVhZGVyLmlzVGVtcG9yYXJ5ID0gdHJ1ZTsKICAgICAgICAg
dGhpcy5hZGRQcm9maWxlKHByb2ZpbGVIZWFkZXIpOworICAgICAgICBXZWJJbnNwZWN0b3IuTWVt
b3J5QWdlbnREaXNwYXRjaGVyLmluc3RhbmNlKCkuX2N1cnJlbnRQcm9maWxlSGVhZGVyID0gcHJv
ZmlsZUhlYWRlcjsKICAgICAgICAgcHJvZmlsZUhlYWRlci5sb2FkKGZ1bmN0aW9uKCkgeyB9KTsK
IAotICAgICAgICBXZWJJbnNwZWN0b3IuTWVtb3J5QWdlbnREaXNwYXRjaGVyLmluc3RhbmNlKCku
X2N1cnJlbnRQcm9maWxlSGVhZGVyID0gcHJvZmlsZUhlYWRlcjsKIAogICAgICAgICAvKioKICAg
ICAgICAgICogQHBhcmFtIHs/c3RyaW5nfSBlcnJvcgpAQCAtMzExLDUwICszMTAsMTAgQEAgV2Vi
SW5zcGVjdG9yLk5hdGl2ZVByb2ZpbGVUeXBlQmFzZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAq
LwogICAgICAgICBmdW5jdGlvbiBkaWRSZWNlaXZlTWVtb3J5U25hcHNob3QoZXJyb3IsIG1lbW9y
eUJsb2NrLCBncmFwaE1ldGFJbmZvcm1hdGlvbikKICAgICAgICAgewotICAgICAgICAgICAgdmFy
IG1ldGFJbmZvcm1hdGlvbiA9IC8qKiBAdHlwZXtIZWFwU25hcHNob3RNZXRhaW5mb30gKi8oZ3Jh
cGhNZXRhSW5mb3JtYXRpb24pOwotICAgICAgICAgICAgdGhpcy5pc1RlbXBvcmFyeSA9IGZhbHNl
OwotICAgICAgICAgICAgdGhpcy5zaWRlYmFyRWxlbWVudC5zdWJ0aXRsZSA9IE51bWJlci5ieXRl
c1RvU3RyaW5nKC8qKiBAdHlwZXtudW1iZXJ9ICovKG1lbW9yeUJsb2NrLnNpemUpKTsKLQotICAg
ICAgICAgICAgdmFyIGVkZ2VGaWVsZENvdW50ID0gbWV0YUluZm9ybWF0aW9uLmVkZ2VfZmllbGRz
Lmxlbmd0aDsKLSAgICAgICAgICAgIHZhciBub2RlRmllbGRDb3VudCA9IG1ldGFJbmZvcm1hdGlv
bi5ub2RlX2ZpZWxkcy5sZW5ndGg7Ci0gICAgICAgICAgICB2YXIgbm9kZUlkRmllbGRPZmZzZXQg
PSBtZXRhSW5mb3JtYXRpb24ubm9kZV9maWVsZHMuaW5kZXhPZigiaWQiKTsKLSAgICAgICAgICAg
IHZhciB0b05vZGVJZEZpZWxkT2Zmc2V0ID0gbWV0YUluZm9ybWF0aW9uLmVkZ2VfZmllbGRzLmlu
ZGV4T2YoInRvX25vZGUiKTsKLQotICAgICAgICAgICAgdmFyIGJhc2VUb1JlYWxOb2RlSWRNYXAg
PSB7fTsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fYmFzZVRvUmVhbE5v
ZGVJZC5sZW5ndGg7IGkgKz0gMikKLSAgICAgICAgICAgICAgICBiYXNlVG9SZWFsTm9kZUlkTWFw
W3RoaXMuX2Jhc2VUb1JlYWxOb2RlSWRbaV1dID0gdGhpcy5fYmFzZVRvUmVhbE5vZGVJZFtpICsg
MV07Ci0KLSAgICAgICAgICAgIHZhciBub2RlSWQyTm9kZUluZGV4ID0ge307Ci0gICAgICAgICAg
ICBmb3IgKHZhciBpID0gbm9kZUlkRmllbGRPZmZzZXQ7IGkgPCB0aGlzLl9ub2Rlcy5sZW5ndGg7
IGkgKz0gbm9kZUZpZWxkQ291bnQpCi0gICAgICAgICAgICAgICAgbm9kZUlkMk5vZGVJbmRleFt0
aGlzLl9ub2Rlc1tpXV0gPSBpIC0gbm9kZUlkRmllbGRPZmZzZXQ7Ci0KLSAgICAgICAgICAgIC8v
IFRyYW5zbGF0ZSBub2RlSWQgdG8gbm9kZUluZGV4LgotICAgICAgICAgICAgdmFyIGVkZ2VzID0g
dGhpcy5fZWRnZXM7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gdG9Ob2RlSWRGaWVsZE9mZnNl
dDsgaSA8IGVkZ2VzLmxlbmd0aDsgaSArPSBlZGdlRmllbGRDb3VudCkgewotICAgICAgICAgICAg
ICAgIGlmIChlZGdlc1tpXSBpbiBiYXNlVG9SZWFsTm9kZUlkTWFwKQotICAgICAgICAgICAgICAg
ICAgICBlZGdlc1tpXSA9IGJhc2VUb1JlYWxOb2RlSWRNYXBbZWRnZXNbaV1dOwotICAgICAgICAg
ICAgICAgIGVkZ2VzW2ldID0gbm9kZUlkMk5vZGVJbmRleFtlZGdlc1tpXV07Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIHZhciBoZWFwU25hcHNob3QgPSB7Ci0gICAgICAgICAgICAgICAg
InNuYXBzaG90IjogewotICAgICAgICAgICAgICAgICAgICAibWV0YSI6IG1ldGFJbmZvcm1hdGlv
biwKLSAgICAgICAgICAgICAgICAgICAgbm9kZV9jb3VudDogdGhpcy5fbm9kZXMubGVuZ3RoIC8g
bm9kZUZpZWxkQ291bnQsCi0gICAgICAgICAgICAgICAgICAgIGVkZ2VfY291bnQ6IHRoaXMuX2Vk
Z2VzLmxlbmd0aCAvIGVkZ2VGaWVsZENvdW50LAotICAgICAgICAgICAgICAgICAgICByb290X2lu
ZGV4OiB0aGlzLl9ub2Rlcy5sZW5ndGggLSBub2RlRmllbGRDb3VudAotICAgICAgICAgICAgICAg
IH0sCi0gICAgICAgICAgICAgICAgbm9kZXM6IHRoaXMuX25vZGVzLAotICAgICAgICAgICAgICAg
IGVkZ2VzOiB0aGlzLl9lZGdlcywKLSAgICAgICAgICAgICAgICBzdHJpbmdzOiB0aGlzLl9zdHJp
bmdzCi0gICAgICAgICAgICB9OwotCi0gICAgICAgICAgICB2YXIgY2h1bmsgPSBKU09OLnN0cmlu
Z2lmeShoZWFwU25hcHNob3QpOwotICAgICAgICAgICAgdGhpcy50cmFuc2ZlckNodW5rKGNodW5r
KTsKLSAgICAgICAgICAgIHRoaXMuZmluaXNoSGVhcFNuYXBzaG90KCk7CiAgICAgICAgICAgICBj
b25zb2xlLmFzc2VydCh0aGlzID09PSBXZWJJbnNwZWN0b3IuTWVtb3J5QWdlbnREaXNwYXRjaGVy
Lmluc3RhbmNlKCkuX2N1cnJlbnRQcm9maWxlSGVhZGVyKTsKICAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvci5NZW1vcnlBZ2VudERpc3BhdGNoZXIuaW5zdGFuY2UoKS5fY3VycmVudFByb2ZpbGVIZWFk
ZXIgPSBudWxsOworICAgICAgICAgICAgdGhpcy5fZGlkUmVjZWl2ZU1lbW9yeVNuYXBzaG90KGVy
cm9yLCBtZW1vcnlCbG9jaywgZ3JhcGhNZXRhSW5mb3JtYXRpb24pOwogICAgICAgICB9Ci0KICAg
ICAgICAgTWVtb3J5QWdlbnQuZ2V0UHJvY2Vzc01lbW9yeURpc3RyaWJ1dGlvbih0cnVlLCBkaWRS
ZWNlaXZlTWVtb3J5U25hcHNob3QuYmluZChwcm9maWxlSGVhZGVyKSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9LApAQCAtMzk3LDEyICszNTYsMTAgQEAgV2ViSW5zcGVjdG9yLk5hdGl2
ZVByb2ZpbGVUeXBlQmFzZS5wcm90b3R5cGUgPSB7CiAvKioKICAqIEBjb25zdHJ1Y3RvcgogICog
QGV4dGVuZHMge1dlYkluc3BlY3Rvci5OYXRpdmVQcm9maWxlVHlwZUJhc2V9Ci0gKiBAaW1wbGVt
ZW50cyB7TWVtb3J5QWdlbnQuRGlzcGF0Y2hlcn0KICAqLwogV2ViSW5zcGVjdG9yLk5hdGl2ZVNu
YXBzaG90UHJvZmlsZVR5cGUgPSBmdW5jdGlvbigpCiB7CiAgICAgV2ViSW5zcGVjdG9yLk5hdGl2
ZVByb2ZpbGVUeXBlQmFzZS5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5OYXRpdmVTbmFwc2hvdFBy
b2ZpbGVIZWFkZXIsICBXZWJJbnNwZWN0b3IuTmF0aXZlU25hcHNob3RQcm9maWxlVHlwZS5UeXBl
SWQsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiVGFrZSBOYXRpdmUgSGVhcCBTbmFwc2hvdCIpKTsK
LSAgICB0aGlzLl9uZXh0UHJvZmlsZVVpZCA9IDE7CiB9CiAKIFdlYkluc3BlY3Rvci5OYXRpdmVT
bmFwc2hvdFByb2ZpbGVUeXBlLlR5cGVJZCA9ICJOQVRJVkVfU05BUFNIT1QiOwpAQCAtNDMwLDcg
KzM4Nyw3IEBAIFdlYkluc3BlY3Rvci5OYXRpdmVTbmFwc2hvdFByb2ZpbGVUeXBlLnByb3RvdHlw
ZSA9IHsKIC8qKgogICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLkhl
YXBQcm9maWxlSGVhZGVyfQotICogQHBhcmFtIHshV2ViSW5zcGVjdG9yLk5hdGl2ZVNuYXBzaG90
UHJvZmlsZVR5cGV9IHR5cGUKKyAqIEBwYXJhbSB7IVdlYkluc3BlY3Rvci5Qcm9maWxlVHlwZX0g
dHlwZQogICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlCiAgKiBAcGFyYW0ge251bWJlcj19IHVpZAog
ICovCkBAIC00NzAsNiArNDI3LDU0IEBAIFdlYkluc3BlY3Rvci5OYXRpdmVTbmFwc2hvdFByb2Zp
bGVIZWFkZXIucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9iYXNlVG9SZWFsTm9kZUlkID0g
dGhpcy5fYmFzZVRvUmVhbE5vZGVJZC5jb25jYXQoY2h1bmsuYmFzZVRvUmVhbE5vZGVJZCk7CiAg
ICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7P3N0cmluZ30gZXJyb3IKKyAgICAgKiBA
cGFyYW0gez9NZW1vcnlBZ2VudC5NZW1vcnlCbG9ja30gbWVtb3J5QmxvY2sKKyAgICAgKiBAcGFy
YW0ge09iamVjdD19IGdyYXBoTWV0YUluZm9ybWF0aW9uCisgICAgICovCisgICAgX2RpZFJlY2Vp
dmVNZW1vcnlTbmFwc2hvdDogZnVuY3Rpb24oZXJyb3IsIG1lbW9yeUJsb2NrLCBncmFwaE1ldGFJ
bmZvcm1hdGlvbikKKyAgICB7CisgICAgICAgIHZhciBtZXRhSW5mb3JtYXRpb24gPSAvKiogQHR5
cGV7SGVhcFNuYXBzaG90TWV0YWluZm99ICovKGdyYXBoTWV0YUluZm9ybWF0aW9uKTsKKyAgICAg
ICAgdGhpcy5pc1RlbXBvcmFyeSA9IGZhbHNlOworCisgICAgICAgIHZhciBlZGdlRmllbGRDb3Vu
dCA9IG1ldGFJbmZvcm1hdGlvbi5lZGdlX2ZpZWxkcy5sZW5ndGg7CisgICAgICAgIHZhciBub2Rl
RmllbGRDb3VudCA9IG1ldGFJbmZvcm1hdGlvbi5ub2RlX2ZpZWxkcy5sZW5ndGg7CisgICAgICAg
IHZhciBub2RlSWRGaWVsZE9mZnNldCA9IG1ldGFJbmZvcm1hdGlvbi5ub2RlX2ZpZWxkcy5pbmRl
eE9mKCJpZCIpOworICAgICAgICB2YXIgdG9Ob2RlSWRGaWVsZE9mZnNldCA9IG1ldGFJbmZvcm1h
dGlvbi5lZGdlX2ZpZWxkcy5pbmRleE9mKCJ0b19ub2RlIik7CisKKyAgICAgICAgdmFyIGJhc2VU
b1JlYWxOb2RlSWRNYXAgPSB7fTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9i
YXNlVG9SZWFsTm9kZUlkLmxlbmd0aDsgaSArPSAyKQorICAgICAgICAgICAgYmFzZVRvUmVhbE5v
ZGVJZE1hcFt0aGlzLl9iYXNlVG9SZWFsTm9kZUlkW2ldXSA9IHRoaXMuX2Jhc2VUb1JlYWxOb2Rl
SWRbaSArIDFdOworCisgICAgICAgIHZhciBub2RlSWQyTm9kZUluZGV4ID0ge307CisgICAgICAg
IGZvciAodmFyIGkgPSBub2RlSWRGaWVsZE9mZnNldDsgaSA8IHRoaXMuX25vZGVzLmxlbmd0aDsg
aSArPSBub2RlRmllbGRDb3VudCkKKyAgICAgICAgICAgIG5vZGVJZDJOb2RlSW5kZXhbdGhpcy5f
bm9kZXNbaV1dID0gaSAtIG5vZGVJZEZpZWxkT2Zmc2V0OworCisgICAgICAgIC8vIFRyYW5zbGF0
ZSBub2RlSWQgdG8gbm9kZUluZGV4LgorICAgICAgICB2YXIgZWRnZXMgPSB0aGlzLl9lZGdlczsK
KyAgICAgICAgZm9yICh2YXIgaSA9IHRvTm9kZUlkRmllbGRPZmZzZXQ7IGkgPCBlZGdlcy5sZW5n
dGg7IGkgKz0gZWRnZUZpZWxkQ291bnQpIHsKKyAgICAgICAgICAgIGlmIChlZGdlc1tpXSBpbiBi
YXNlVG9SZWFsTm9kZUlkTWFwKQorICAgICAgICAgICAgICAgIGVkZ2VzW2ldID0gYmFzZVRvUmVh
bE5vZGVJZE1hcFtlZGdlc1tpXV07CisgICAgICAgICAgICBlZGdlc1tpXSA9IG5vZGVJZDJOb2Rl
SW5kZXhbZWRnZXNbaV1dOworICAgICAgICB9CisKKyAgICAgICAgdmFyIGhlYXBTbmFwc2hvdCA9
IHsKKyAgICAgICAgICAgICJzbmFwc2hvdCI6IHsKKyAgICAgICAgICAgICAgICAibWV0YSI6IG1l
dGFJbmZvcm1hdGlvbiwKKyAgICAgICAgICAgICAgICBub2RlX2NvdW50OiB0aGlzLl9ub2Rlcy5s
ZW5ndGggLyBub2RlRmllbGRDb3VudCwKKyAgICAgICAgICAgICAgICBlZGdlX2NvdW50OiB0aGlz
Ll9lZGdlcy5sZW5ndGggLyBlZGdlRmllbGRDb3VudCwKKyAgICAgICAgICAgICAgICByb290X2lu
ZGV4OiB0aGlzLl9ub2Rlcy5sZW5ndGggLSBub2RlRmllbGRDb3VudAorICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgIG5vZGVzOiB0aGlzLl9ub2RlcywKKyAgICAgICAgICAgIGVkZ2VzOiB0aGlz
Ll9lZGdlcywKKyAgICAgICAgICAgIHN0cmluZ3M6IHRoaXMuX3N0cmluZ3MKKyAgICAgICAgfTsK
KworICAgICAgICB2YXIgY2h1bmsgPSBKU09OLnN0cmluZ2lmeShoZWFwU25hcHNob3QpOworICAg
ICAgICB0aGlzLnRyYW5zZmVyQ2h1bmsoY2h1bmspOworICAgICAgICB0aGlzLmZpbmlzaEhlYXBT
bmFwc2hvdCgpOworICAgIH0sCisKICAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5IZWFwUHJv
ZmlsZUhlYWRlci5wcm90b3R5cGUKIH0KIApAQCAtNTA0LDcgKzUwOSw2IEBAIFdlYkluc3BlY3Rv
ci5OYXRpdmVIZWFwU25hcHNob3RWaWV3LnByb3RvdHlwZSA9IHsKIFdlYkluc3BlY3Rvci5OYXRp
dmVNZW1vcnlQcm9maWxlVHlwZSA9IGZ1bmN0aW9uKCkKIHsKICAgICBXZWJJbnNwZWN0b3IuTmF0
aXZlUHJvZmlsZVR5cGVCYXNlLmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLk5hdGl2ZU1lbW9yeVBy
b2ZpbGVIZWFkZXIsIFdlYkluc3BlY3Rvci5OYXRpdmVNZW1vcnlQcm9maWxlVHlwZS5UeXBlSWQs
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2FwdHVyZSBOYXRpdmUgTWVtb3J5IERpc3RyaWJ1dGlv
biIpKTsKLSAgICB0aGlzLl9uZXh0UHJvZmlsZVVpZCA9IDE7CiB9CiAKIFdlYkluc3BlY3Rvci5O
YXRpdmVNZW1vcnlQcm9maWxlVHlwZS5UeXBlSWQgPSAiTkFUSVZFX01FTU9SWV9ESVNUUklCVVRJ
T04iOwpAQCAtNTE1LDQ2ICs1MTksNiBAQCBXZWJJbnNwZWN0b3IuTmF0aXZlTWVtb3J5UHJvZmls
ZVR5cGUucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJDYXB0dXJlIG5hdGl2ZSBtZW1vcnkgZGlzdHJpYnV0aW9uLiIpOwogICAgIH0sCiAKLSAgICAv
KioKLSAgICAgKiBAb3ZlcnJpZGUKLSAgICAgKiBAcmV0dXJuIHtib29sZWFufQotICAgICAqLwot
ICAgIGJ1dHRvbkNsaWNrZWQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBwcm9maWxl
SGVhZGVyID0gbmV3IFdlYkluc3BlY3Rvci5OYXRpdmVNZW1vcnlQcm9maWxlSGVhZGVyKHRoaXMs
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU25hcHNob3QgJWQiLCB0aGlzLl9uZXh0UHJvZmlsZVVp
ZCksIHRoaXMuX25leHRQcm9maWxlVWlkKTsKLSAgICAgICAgKyt0aGlzLl9uZXh0UHJvZmlsZVVp
ZDsKLSAgICAgICAgcHJvZmlsZUhlYWRlci5pc1RlbXBvcmFyeSA9IHRydWU7Ci0gICAgICAgIHRo
aXMuYWRkUHJvZmlsZShwcm9maWxlSGVhZGVyKTsKLSAgICAgICAgLyoqCi0gICAgICAgICAqIEBw
YXJhbSB7P3N0cmluZ30gZXJyb3IKLSAgICAgICAgICogQHBhcmFtIHs/TWVtb3J5QWdlbnQuTWVt
b3J5QmxvY2t9IG1lbW9yeUJsb2NrCi0gICAgICAgICAqLwotICAgICAgICBmdW5jdGlvbiBkaWRS
ZWNlaXZlTWVtb3J5U25hcHNob3QoZXJyb3IsIG1lbW9yeUJsb2NrKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAobWVtb3J5QmxvY2suc2l6ZSAmJiBtZW1vcnlCbG9jay5jaGlsZHJlbikgewot
ICAgICAgICAgICAgICAgIHZhciBrbm93blNpemUgPSAwOwotICAgICAgICAgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgbWVtb3J5QmxvY2suY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHsKLSAgICAg
ICAgICAgICAgICAgICAgdmFyIHNpemUgPSBtZW1vcnlCbG9jay5jaGlsZHJlbltpXS5zaXplOwot
ICAgICAgICAgICAgICAgICAgICBpZiAoc2l6ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGtu
b3duU2l6ZSArPSBzaXplOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB2YXIg
b3RoZXJTaXplID0gbWVtb3J5QmxvY2suc2l6ZSAtIGtub3duU2l6ZTsKLQotICAgICAgICAgICAg
ICAgIGlmIChvdGhlclNpemUpIHsKLSAgICAgICAgICAgICAgICAgICAgbWVtb3J5QmxvY2suY2hp
bGRyZW4ucHVzaCh7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAiT3RoZXIiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZTogb3RoZXJTaXplCi0gICAgICAgICAgICAgICAgICAg
IH0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHByb2Zp
bGVIZWFkZXIuX21lbW9yeUJsb2NrID0gbWVtb3J5QmxvY2s7Ci0gICAgICAgICAgICBwcm9maWxl
SGVhZGVyLmlzVGVtcG9yYXJ5ID0gZmFsc2U7Ci0gICAgICAgICAgICBwcm9maWxlSGVhZGVyLnNp
ZGViYXJFbGVtZW50LnN1YnRpdGxlID0gTnVtYmVyLmJ5dGVzVG9TdHJpbmcoLyoqIEB0eXBle251
bWJlcn0gKi8obWVtb3J5QmxvY2suc2l6ZSkpOwotICAgICAgICB9Ci0gICAgICAgIE1lbW9yeUFn
ZW50LmdldFByb2Nlc3NNZW1vcnlEaXN0cmlidXRpb24oZmFsc2UsIGRpZFJlY2VpdmVNZW1vcnlT
bmFwc2hvdC5iaW5kKHRoaXMpKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0sCi0KICAg
ICBnZXQgdHJlZUl0ZW1UaXRsZSgpCiAgICAgewogICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJNRU1PUlkgRElTVFJJQlVUSU9OIik7CkBAIC01NzAsOCArNTM0LDggQEAgV2Vi
SW5zcGVjdG9yLk5hdGl2ZU1lbW9yeVByb2ZpbGVUeXBlLnByb3RvdHlwZSA9IHsKIAogLyoqCiAg
KiBAY29uc3RydWN0b3IKLSAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuUHJvZmlsZUhlYWRlcn0K
LSAqIEBwYXJhbSB7IVdlYkluc3BlY3Rvci5OYXRpdmVNZW1vcnlQcm9maWxlVHlwZX0gdHlwZQor
ICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5OYXRpdmVTbmFwc2hvdFByb2ZpbGVIZWFkZXJ9Cisg
KiBAcGFyYW0geyFXZWJJbnNwZWN0b3IuUHJvZmlsZVR5cGV9IHR5cGUKICAqIEBwYXJhbSB7c3Ry
aW5nfSB0aXRsZQogICogQHBhcmFtIHtudW1iZXI9fSB1aWQKICAqLwpAQCAtNjAzLDYgKzU2Nyw0
MyBAQCBXZWJJbnNwZWN0b3IuTmF0aXZlTWVtb3J5UHJvZmlsZUhlYWRlci5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLk5hdGl2ZU1lbW9yeVNuYXBzaG90Vmll
dyh0aGlzKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQG92ZXJyaWRlCisgICAgICovCisg
ICAgX3VwZGF0ZVNuYXBzaG90U3RhdHVzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBXZWJJ
bnNwZWN0b3IuTmF0aXZlU25hcHNob3RQcm9maWxlSGVhZGVyLnByb3RvdHlwZS5fdXBkYXRlU25h
cHNob3RTdGF0dXMuY2FsbCh0aGlzKTsKKyAgICAgICAgdGhpcy5zaWRlYmFyRWxlbWVudC5zdWJ0
aXRsZSA9IE51bWJlci5ieXRlc1RvU3RyaW5nKC8qKiBAdHlwZXtudW1iZXJ9ICovKHRoaXMuX21l
bW9yeUJsb2NrLnNpemUpKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQG92ZXJyaWRlCisg
ICAgICogQHBhcmFtIHs/c3RyaW5nfSBlcnJvcgorICAgICAqIEBwYXJhbSB7P01lbW9yeUFnZW50
Lk1lbW9yeUJsb2NrfSBtZW1vcnlCbG9jaworICAgICAqIEBwYXJhbSB7T2JqZWN0PX0gZ3JhcGhN
ZXRhSW5mb3JtYXRpb24KKyAgICAgKi8KKyAgICBfZGlkUmVjZWl2ZU1lbW9yeVNuYXBzaG90OiBm
dW5jdGlvbihlcnJvciwgbWVtb3J5QmxvY2ssIGdyYXBoTWV0YUluZm9ybWF0aW9uKQorICAgIHsK
KyAgICAgICAgV2ViSW5zcGVjdG9yLk5hdGl2ZVNuYXBzaG90UHJvZmlsZUhlYWRlci5wcm90b3R5
cGUuX2RpZFJlY2VpdmVNZW1vcnlTbmFwc2hvdC5jYWxsKHRoaXMsIGVycm9yLCBtZW1vcnlCbG9j
aywgZ3JhcGhNZXRhSW5mb3JtYXRpb24pOworICAgICAgICBpZiAobWVtb3J5QmxvY2suc2l6ZSAm
JiBtZW1vcnlCbG9jay5jaGlsZHJlbikgeworICAgICAgICAgICAgdmFyIGtub3duU2l6ZSA9IDA7
CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1lbW9yeUJsb2NrLmNoaWxkcmVuLmxl
bmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgdmFyIHNpemUgPSBtZW1vcnlCbG9jay5jaGls
ZHJlbltpXS5zaXplOworICAgICAgICAgICAgICAgIGlmIChzaXplKQorICAgICAgICAgICAgICAg
ICAgICBrbm93blNpemUgKz0gc2l6ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZhciBv
dGhlclNpemUgPSBtZW1vcnlCbG9jay5zaXplIC0ga25vd25TaXplOworCisgICAgICAgICAgICBp
ZiAob3RoZXJTaXplKSB7CisgICAgICAgICAgICAgICAgbWVtb3J5QmxvY2suY2hpbGRyZW4ucHVz
aCh7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJPdGhlciIsCisgICAgICAgICAgICAgICAg
ICAgIHNpemU6IG90aGVyU2l6ZQorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIHRoaXMuX21lbW9yeUJsb2NrID0gbWVtb3J5QmxvY2s7CisgICAg
fSwKKwogICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk5hdGl2ZVNuYXBzaG90UHJvZmlsZUhl
YWRlci5wcm90b3R5cGUKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192443</attachid>
            <date>2013-03-11 05:08:40 -0700</date>
            <delta_ts>2013-03-11 05:18:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111965-20130311160440.patch</filename>
            <type>text/plain</type>
            <size>13231</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MzU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGZjNzgzMjJlMDlmM2Yy
NzlmNDA0MDUwMWNkZmZmZDY4YWFlY2ViZC4uODZkYjg2Y2JmMTVhYjE2NmYyYmY2NDBhNTVmZDA2
NmQ1OGYxNDZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEzLTAzLTExICBZdXJ5
IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGV4dHJhY3QgY29tbW9uIHBhcnRzIG9mIG5hdGl2ZSBwcm9maWxlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExOTY1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXh0cmFjdGVkIGNvbW1vbiBwYXJ0
cyBvZiBuYXRpdmUgcHJvZmlsZXMgaW50byBOYXRpdmVQcm9maWxlVHlwZUJhc2UuIE1lbW9yeQor
ICAgICAgICBkb21haW4gZGlzcGF0Y2hlciBpcyBub3cgYSBzZXBhcmF0ZSBjbGFzcyBhcyBpdCBp
cyBzaGFyZWQgYnkgdHdvIG5hdGl2ZSBtZW1vcnkKKyAgICAgICAgcHJvZmlsZSB0eXBlcy4KKwor
ICAgICAgICBCb3RoIG5hdGl2ZSBtZW1vcnkgcHJvZmlsZSB0eXBlcyBub3cgY2FwdHVyZSBuYXRp
dmUgaGVhcCBncmFwaC4KKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvTmF0aXZlTWVt
b3J5U25hcHNob3RWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1lbW9yeUFnZW50RGlz
cGF0Y2hlci5pbnN0YW5jZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF0aXZlUHJvZmlsZVR5
cGVCYXNlLnByb3RvdHlwZS5idXR0b25DbGlja2VkLmRpZFJlY2VpdmVNZW1vcnlTbmFwc2hvdCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF0aXZlUHJvZmlsZVR5cGVCYXNlLnByb3RvdHlwZS5i
dXR0b25DbGlja2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXRpdmVTbmFwc2hvdFByb2Zp
bGVUeXBlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXRpdmVTbmFwc2hvdFByb2ZpbGVIZWFk
ZXIucHJvdG90eXBlLl9kaWRSZWNlaXZlTWVtb3J5U25hcHNob3QpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLk5hdGl2ZU1lbW9yeVByb2ZpbGVUeXBlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5O
YXRpdmVNZW1vcnlQcm9maWxlSGVhZGVyLnByb3RvdHlwZS5fdXBkYXRlU25hcHNob3RTdGF0dXMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdGl2ZU1lbW9yeVByb2ZpbGVIZWFkZXIucHJvdG90
eXBlLl9kaWRSZWNlaXZlTWVtb3J5U25hcHNob3QpOgorCiAyMDEzLTAzLTExICBTaGVyaWZmIEJv
dCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBy
b2xsaW5nIG91dCByMTQ1MzQ5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9OYXRpdmVNZW1vcnlTbmFwc2hvdFZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL05hdGl2ZU1lbW9yeVNuYXBzaG90Vmlldy5qcwppbmRleCBkYjYx
ZmE1YTUxZjY1OGRhZmE3ZjZkNjA4NzRjZjM2ZGZlNzk3MWUyLi40NjIxZjgzNjFkNWExM2MxOTIw
MDNjY2VmZjM1NmIzNDc4MzVkOTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL05hdGl2ZU1lbW9yeVNuYXBzaG90Vmlldy5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05hdGl2ZU1lbW9yeVNuYXBzaG90Vmlldy5qcwpAQCAt
MjQ1LDkgKzI0NSw5IEBAIFdlYkluc3BlY3Rvci5NZW1vcnlBZ2VudERpc3BhdGNoZXIgPSBmdW5j
dGlvbigpCiAKIFdlYkluc3BlY3Rvci5NZW1vcnlBZ2VudERpc3BhdGNoZXIuaW5zdGFuY2UgPSBm
dW5jdGlvbigpCiB7Ci0gICAgaWYgKCF0aGlzLl9pbnN0YW5jZSkKLSAgICAgICAgdGhpcy5faW5z
dGFuY2UgPSBuZXcgV2ViSW5zcGVjdG9yLk1lbW9yeUFnZW50RGlzcGF0Y2hlcigpOwotICAgIHJl
dHVybiB0aGlzLl9pbnN0YW5jZTsKKyAgICBpZiAoIVdlYkluc3BlY3Rvci5NZW1vcnlBZ2VudERp
c3BhdGNoZXIuX2luc3RhbmNlKQorICAgICAgICBXZWJJbnNwZWN0b3IuTWVtb3J5QWdlbnREaXNw
YXRjaGVyLl9pbnN0YW5jZSA9IG5ldyBXZWJJbnNwZWN0b3IuTWVtb3J5QWdlbnREaXNwYXRjaGVy
KCk7CisgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5NZW1vcnlBZ2VudERpc3BhdGNoZXIuX2luc3Rh
bmNlOwogfQogCiBXZWJJbnNwZWN0b3IuTWVtb3J5QWdlbnREaXNwYXRjaGVyLnByb3RvdHlwZSA9
IHsKQEAgLTI3Miw3ICsyNzIsNiBAQCBXZWJJbnNwZWN0b3IuTWVtb3J5QWdlbnREaXNwYXRjaGVy
LnByb3RvdHlwZSA9IHsKIC8qKgogICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2ViSW5z
cGVjdG9yLlByb2ZpbGVUeXBlfQotICogQGltcGxlbWVudHMge01lbW9yeUFnZW50LkRpc3BhdGNo
ZXJ9CiAgKiBAcGFyYW0ge3N0cmluZ30gaWQKICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCiAgKi8K
QEAgLTMwMywxNSArMzAyLDE1IEBAIFdlYkluc3BlY3Rvci5OYXRpdmVQcm9maWxlVHlwZUJhc2Uu
cHJvdG90eXBlID0gewogICAgIGJ1dHRvbkNsaWNrZWQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAg
ICAgIGlmIChXZWJJbnNwZWN0b3IuTWVtb3J5QWdlbnREaXNwYXRjaGVyLmluc3RhbmNlKCkuX2N1
cnJlbnRQcm9maWxlSGVhZGVyKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgICAgIHZhciBwcm9maWxlSGVhZGVyID0gbmV3IHRoaXMuX3Byb2Zp
bGVIZWFkZXJDb25zdHJ1Y3Rvcih0aGlzLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNuYXBzaG90
ICVkIiwgdGhpcy5fbmV4dFByb2ZpbGVVaWQpLCB0aGlzLl9uZXh0UHJvZmlsZVVpZCk7CiAgICAg
ICAgICsrdGhpcy5fbmV4dFByb2ZpbGVVaWQ7CiAgICAgICAgIHByb2ZpbGVIZWFkZXIuaXNUZW1w
b3JhcnkgPSB0cnVlOwogICAgICAgICB0aGlzLmFkZFByb2ZpbGUocHJvZmlsZUhlYWRlcik7Cisg
ICAgICAgIFdlYkluc3BlY3Rvci5NZW1vcnlBZ2VudERpc3BhdGNoZXIuaW5zdGFuY2UoKS5fY3Vy
cmVudFByb2ZpbGVIZWFkZXIgPSBwcm9maWxlSGVhZGVyOwogICAgICAgICBwcm9maWxlSGVhZGVy
LmxvYWQoZnVuY3Rpb24oKSB7IH0pOwogCi0gICAgICAgIFdlYkluc3BlY3Rvci5NZW1vcnlBZ2Vu
dERpc3BhdGNoZXIuaW5zdGFuY2UoKS5fY3VycmVudFByb2ZpbGVIZWFkZXIgPSBwcm9maWxlSGVh
ZGVyOwogCiAgICAgICAgIC8qKgogICAgICAgICAgKiBAcGFyYW0gez9zdHJpbmd9IGVycm9yCkBA
IC0zMjAsNTAgKzMxOSwxMCBAQCBXZWJJbnNwZWN0b3IuTmF0aXZlUHJvZmlsZVR5cGVCYXNlLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICovCiAgICAgICAgIGZ1bmN0aW9uIGRpZFJlY2VpdmVNZW1v
cnlTbmFwc2hvdChlcnJvciwgbWVtb3J5QmxvY2ssIGdyYXBoTWV0YUluZm9ybWF0aW9uKQogICAg
ICAgICB7Ci0gICAgICAgICAgICB2YXIgbWV0YUluZm9ybWF0aW9uID0gLyoqIEB0eXBle0hlYXBT
bmFwc2hvdE1ldGFpbmZvfSAqLyhncmFwaE1ldGFJbmZvcm1hdGlvbik7Ci0gICAgICAgICAgICB0
aGlzLmlzVGVtcG9yYXJ5ID0gZmFsc2U7Ci0gICAgICAgICAgICB0aGlzLnNpZGViYXJFbGVtZW50
LnN1YnRpdGxlID0gTnVtYmVyLmJ5dGVzVG9TdHJpbmcoLyoqIEB0eXBle251bWJlcn0gKi8obWVt
b3J5QmxvY2suc2l6ZSkpOwotCi0gICAgICAgICAgICB2YXIgZWRnZUZpZWxkQ291bnQgPSBtZXRh
SW5mb3JtYXRpb24uZWRnZV9maWVsZHMubGVuZ3RoOwotICAgICAgICAgICAgdmFyIG5vZGVGaWVs
ZENvdW50ID0gbWV0YUluZm9ybWF0aW9uLm5vZGVfZmllbGRzLmxlbmd0aDsKLSAgICAgICAgICAg
IHZhciBub2RlSWRGaWVsZE9mZnNldCA9IG1ldGFJbmZvcm1hdGlvbi5ub2RlX2ZpZWxkcy5pbmRl
eE9mKCJpZCIpOwotICAgICAgICAgICAgdmFyIHRvTm9kZUlkRmllbGRPZmZzZXQgPSBtZXRhSW5m
b3JtYXRpb24uZWRnZV9maWVsZHMuaW5kZXhPZigidG9fbm9kZSIpOwotCi0gICAgICAgICAgICB2
YXIgYmFzZVRvUmVhbE5vZGVJZE1hcCA9IHt9OwotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCB0aGlzLl9iYXNlVG9SZWFsTm9kZUlkLmxlbmd0aDsgaSArPSAyKQotICAgICAgICAgICAg
ICAgIGJhc2VUb1JlYWxOb2RlSWRNYXBbdGhpcy5fYmFzZVRvUmVhbE5vZGVJZFtpXV0gPSB0aGlz
Ll9iYXNlVG9SZWFsTm9kZUlkW2kgKyAxXTsKLQotICAgICAgICAgICAgdmFyIG5vZGVJZDJOb2Rl
SW5kZXggPSB7fTsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSBub2RlSWRGaWVsZE9mZnNldDsg
aSA8IHRoaXMuX25vZGVzLmxlbmd0aDsgaSArPSBub2RlRmllbGRDb3VudCkKLSAgICAgICAgICAg
ICAgICBub2RlSWQyTm9kZUluZGV4W3RoaXMuX25vZGVzW2ldXSA9IGkgLSBub2RlSWRGaWVsZE9m
ZnNldDsKLQotICAgICAgICAgICAgLy8gVHJhbnNsYXRlIG5vZGVJZCB0byBub2RlSW5kZXguCi0g
ICAgICAgICAgICB2YXIgZWRnZXMgPSB0aGlzLl9lZGdlczsKLSAgICAgICAgICAgIGZvciAodmFy
IGkgPSB0b05vZGVJZEZpZWxkT2Zmc2V0OyBpIDwgZWRnZXMubGVuZ3RoOyBpICs9IGVkZ2VGaWVs
ZENvdW50KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGVkZ2VzW2ldIGluIGJhc2VUb1JlYWxOb2Rl
SWRNYXApCi0gICAgICAgICAgICAgICAgICAgIGVkZ2VzW2ldID0gYmFzZVRvUmVhbE5vZGVJZE1h
cFtlZGdlc1tpXV07Ci0gICAgICAgICAgICAgICAgZWRnZXNbaV0gPSBub2RlSWQyTm9kZUluZGV4
W2VkZ2VzW2ldXTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdmFyIGhlYXBTbmFwc2hv
dCA9IHsKLSAgICAgICAgICAgICAgICAic25hcHNob3QiOiB7Ci0gICAgICAgICAgICAgICAgICAg
ICJtZXRhIjogbWV0YUluZm9ybWF0aW9uLAotICAgICAgICAgICAgICAgICAgICBub2RlX2NvdW50
OiB0aGlzLl9ub2Rlcy5sZW5ndGggLyBub2RlRmllbGRDb3VudCwKLSAgICAgICAgICAgICAgICAg
ICAgZWRnZV9jb3VudDogdGhpcy5fZWRnZXMubGVuZ3RoIC8gZWRnZUZpZWxkQ291bnQsCi0gICAg
ICAgICAgICAgICAgICAgIHJvb3RfaW5kZXg6IHRoaXMuX25vZGVzLmxlbmd0aCAtIG5vZGVGaWVs
ZENvdW50Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBub2RlczogdGhpcy5f
bm9kZXMsCi0gICAgICAgICAgICAgICAgZWRnZXM6IHRoaXMuX2VkZ2VzLAotICAgICAgICAgICAg
ICAgIHN0cmluZ3M6IHRoaXMuX3N0cmluZ3MKLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAg
IHZhciBjaHVuayA9IEpTT04uc3RyaW5naWZ5KGhlYXBTbmFwc2hvdCk7Ci0gICAgICAgICAgICB0
aGlzLnRyYW5zZmVyQ2h1bmsoY2h1bmspOwotICAgICAgICAgICAgdGhpcy5maW5pc2hIZWFwU25h
cHNob3QoKTsKICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMgPT09IFdlYkluc3BlY3Rv
ci5NZW1vcnlBZ2VudERpc3BhdGNoZXIuaW5zdGFuY2UoKS5fY3VycmVudFByb2ZpbGVIZWFkZXIp
OwogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLk1lbW9yeUFnZW50RGlzcGF0Y2hlci5pbnN0YW5j
ZSgpLl9jdXJyZW50UHJvZmlsZUhlYWRlciA9IG51bGw7CisgICAgICAgICAgICB0aGlzLl9kaWRS
ZWNlaXZlTWVtb3J5U25hcHNob3QoZXJyb3IsIG1lbW9yeUJsb2NrLCBncmFwaE1ldGFJbmZvcm1h
dGlvbik7CiAgICAgICAgIH0KLQogICAgICAgICBNZW1vcnlBZ2VudC5nZXRQcm9jZXNzTWVtb3J5
RGlzdHJpYnV0aW9uKHRydWUsIGRpZFJlY2VpdmVNZW1vcnlTbmFwc2hvdC5iaW5kKHByb2ZpbGVI
ZWFkZXIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0sCkBAIC00MDYsMTIgKzM2NSwx
MCBAQCBXZWJJbnNwZWN0b3IuTmF0aXZlUHJvZmlsZVR5cGVCYXNlLnByb3RvdHlwZSA9IHsKIC8q
KgogICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLk5hdGl2ZVByb2Zp
bGVUeXBlQmFzZX0KLSAqIEBpbXBsZW1lbnRzIHtNZW1vcnlBZ2VudC5EaXNwYXRjaGVyfQogICov
CiBXZWJJbnNwZWN0b3IuTmF0aXZlU25hcHNob3RQcm9maWxlVHlwZSA9IGZ1bmN0aW9uKCkKIHsK
ICAgICBXZWJJbnNwZWN0b3IuTmF0aXZlUHJvZmlsZVR5cGVCYXNlLmNhbGwodGhpcywgV2ViSW5z
cGVjdG9yLk5hdGl2ZVNuYXBzaG90UHJvZmlsZUhlYWRlciwgIFdlYkluc3BlY3Rvci5OYXRpdmVT
bmFwc2hvdFByb2ZpbGVUeXBlLlR5cGVJZCwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUYWtlIE5h
dGl2ZSBIZWFwIFNuYXBzaG90IikpOwotICAgIHRoaXMuX25leHRQcm9maWxlVWlkID0gMTsKIH0K
IAogV2ViSW5zcGVjdG9yLk5hdGl2ZVNuYXBzaG90UHJvZmlsZVR5cGUuVHlwZUlkID0gIk5BVElW
RV9TTkFQU0hPVCI7CkBAIC00MzksNyArMzk2LDcgQEAgV2ViSW5zcGVjdG9yLk5hdGl2ZVNuYXBz
aG90UHJvZmlsZVR5cGUucHJvdG90eXBlID0gewogLyoqCiAgKiBAY29uc3RydWN0b3IKICAqIEBl
eHRlbmRzIHtXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVIZWFkZXJ9Ci0gKiBAcGFyYW0geyFXZWJJ
bnNwZWN0b3IuTmF0aXZlU25hcHNob3RQcm9maWxlVHlwZX0gdHlwZQorICogQHBhcmFtIHshV2Vi
SW5zcGVjdG9yLlByb2ZpbGVUeXBlfSB0eXBlCiAgKiBAcGFyYW0ge3N0cmluZ30gdGl0bGUKICAq
IEBwYXJhbSB7bnVtYmVyPX0gdWlkCiAgKi8KQEAgLTQ3OSw2ICs0MzYsNTQgQEAgV2ViSW5zcGVj
dG9yLk5hdGl2ZVNuYXBzaG90UHJvZmlsZUhlYWRlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRo
aXMuX2Jhc2VUb1JlYWxOb2RlSWQgPSB0aGlzLl9iYXNlVG9SZWFsTm9kZUlkLmNvbmNhdChjaHVu
ay5iYXNlVG9SZWFsTm9kZUlkKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHs/
c3RyaW5nfSBlcnJvcgorICAgICAqIEBwYXJhbSB7P01lbW9yeUFnZW50Lk1lbW9yeUJsb2NrfSBt
ZW1vcnlCbG9jaworICAgICAqIEBwYXJhbSB7T2JqZWN0PX0gZ3JhcGhNZXRhSW5mb3JtYXRpb24K
KyAgICAgKi8KKyAgICBfZGlkUmVjZWl2ZU1lbW9yeVNuYXBzaG90OiBmdW5jdGlvbihlcnJvciwg
bWVtb3J5QmxvY2ssIGdyYXBoTWV0YUluZm9ybWF0aW9uKQorICAgIHsKKyAgICAgICAgdmFyIG1l
dGFJbmZvcm1hdGlvbiA9IC8qKiBAdHlwZXtIZWFwU25hcHNob3RNZXRhaW5mb30gKi8oZ3JhcGhN
ZXRhSW5mb3JtYXRpb24pOworICAgICAgICB0aGlzLmlzVGVtcG9yYXJ5ID0gZmFsc2U7CisKKyAg
ICAgICAgdmFyIGVkZ2VGaWVsZENvdW50ID0gbWV0YUluZm9ybWF0aW9uLmVkZ2VfZmllbGRzLmxl
bmd0aDsKKyAgICAgICAgdmFyIG5vZGVGaWVsZENvdW50ID0gbWV0YUluZm9ybWF0aW9uLm5vZGVf
ZmllbGRzLmxlbmd0aDsKKyAgICAgICAgdmFyIG5vZGVJZEZpZWxkT2Zmc2V0ID0gbWV0YUluZm9y
bWF0aW9uLm5vZGVfZmllbGRzLmluZGV4T2YoImlkIik7CisgICAgICAgIHZhciB0b05vZGVJZEZp
ZWxkT2Zmc2V0ID0gbWV0YUluZm9ybWF0aW9uLmVkZ2VfZmllbGRzLmluZGV4T2YoInRvX25vZGUi
KTsKKworICAgICAgICB2YXIgYmFzZVRvUmVhbE5vZGVJZE1hcCA9IHt9OworICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHRoaXMuX2Jhc2VUb1JlYWxOb2RlSWQubGVuZ3RoOyBpICs9IDIpCisg
ICAgICAgICAgICBiYXNlVG9SZWFsTm9kZUlkTWFwW3RoaXMuX2Jhc2VUb1JlYWxOb2RlSWRbaV1d
ID0gdGhpcy5fYmFzZVRvUmVhbE5vZGVJZFtpICsgMV07CisKKyAgICAgICAgdmFyIG5vZGVJZDJO
b2RlSW5kZXggPSB7fTsKKyAgICAgICAgZm9yICh2YXIgaSA9IG5vZGVJZEZpZWxkT2Zmc2V0OyBp
IDwgdGhpcy5fbm9kZXMubGVuZ3RoOyBpICs9IG5vZGVGaWVsZENvdW50KQorICAgICAgICAgICAg
bm9kZUlkMk5vZGVJbmRleFt0aGlzLl9ub2Rlc1tpXV0gPSBpIC0gbm9kZUlkRmllbGRPZmZzZXQ7
CisKKyAgICAgICAgLy8gVHJhbnNsYXRlIG5vZGVJZCB0byBub2RlSW5kZXguCisgICAgICAgIHZh
ciBlZGdlcyA9IHRoaXMuX2VkZ2VzOworICAgICAgICBmb3IgKHZhciBpID0gdG9Ob2RlSWRGaWVs
ZE9mZnNldDsgaSA8IGVkZ2VzLmxlbmd0aDsgaSArPSBlZGdlRmllbGRDb3VudCkgeworICAgICAg
ICAgICAgaWYgKGVkZ2VzW2ldIGluIGJhc2VUb1JlYWxOb2RlSWRNYXApCisgICAgICAgICAgICAg
ICAgZWRnZXNbaV0gPSBiYXNlVG9SZWFsTm9kZUlkTWFwW2VkZ2VzW2ldXTsKKyAgICAgICAgICAg
IGVkZ2VzW2ldID0gbm9kZUlkMk5vZGVJbmRleFtlZGdlc1tpXV07CisgICAgICAgIH0KKworICAg
ICAgICB2YXIgaGVhcFNuYXBzaG90ID0geworICAgICAgICAgICAgInNuYXBzaG90IjogeworICAg
ICAgICAgICAgICAgICJtZXRhIjogbWV0YUluZm9ybWF0aW9uLAorICAgICAgICAgICAgICAgIG5v
ZGVfY291bnQ6IHRoaXMuX25vZGVzLmxlbmd0aCAvIG5vZGVGaWVsZENvdW50LAorICAgICAgICAg
ICAgICAgIGVkZ2VfY291bnQ6IHRoaXMuX2VkZ2VzLmxlbmd0aCAvIGVkZ2VGaWVsZENvdW50LAor
ICAgICAgICAgICAgICAgIHJvb3RfaW5kZXg6IHRoaXMuX25vZGVzLmxlbmd0aCAtIG5vZGVGaWVs
ZENvdW50CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgbm9kZXM6IHRoaXMuX25vZGVzLAor
ICAgICAgICAgICAgZWRnZXM6IHRoaXMuX2VkZ2VzLAorICAgICAgICAgICAgc3RyaW5nczogdGhp
cy5fc3RyaW5ncworICAgICAgICB9OworCisgICAgICAgIHZhciBjaHVuayA9IEpTT04uc3RyaW5n
aWZ5KGhlYXBTbmFwc2hvdCk7CisgICAgICAgIHRoaXMudHJhbnNmZXJDaHVuayhjaHVuayk7Cisg
ICAgICAgIHRoaXMuZmluaXNoSGVhcFNuYXBzaG90KCk7CisgICAgfSwKKwogICAgIF9fcHJvdG9f
XzogV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlSGVhZGVyLnByb3RvdHlwZQogfQogCkBAIC01MTMs
NyArNTE4LDYgQEAgV2ViSW5zcGVjdG9yLk5hdGl2ZUhlYXBTbmFwc2hvdFZpZXcucHJvdG90eXBl
ID0gewogV2ViSW5zcGVjdG9yLk5hdGl2ZU1lbW9yeVByb2ZpbGVUeXBlID0gZnVuY3Rpb24oKQog
ewogICAgIFdlYkluc3BlY3Rvci5OYXRpdmVQcm9maWxlVHlwZUJhc2UuY2FsbCh0aGlzLCBXZWJJ
bnNwZWN0b3IuTmF0aXZlTWVtb3J5UHJvZmlsZUhlYWRlciwgV2ViSW5zcGVjdG9yLk5hdGl2ZU1l
bW9yeVByb2ZpbGVUeXBlLlR5cGVJZCwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDYXB0dXJlIE5h
dGl2ZSBNZW1vcnkgRGlzdHJpYnV0aW9uIikpOwotICAgIHRoaXMuX25leHRQcm9maWxlVWlkID0g
MTsKIH0KIAogV2ViSW5zcGVjdG9yLk5hdGl2ZU1lbW9yeVByb2ZpbGVUeXBlLlR5cGVJZCA9ICJO
QVRJVkVfTUVNT1JZX0RJU1RSSUJVVElPTiI7CkBAIC01MjQsNTUgKzUyOCw2IEBAIFdlYkluc3Bl
Y3Rvci5OYXRpdmVNZW1vcnlQcm9maWxlVHlwZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVy
biBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNhcHR1cmUgbmF0aXZlIG1lbW9yeSBkaXN0cmlidXRp
b24uIik7CiAgICAgfSwKIAotICAgIC8qKgotICAgICAqIEBvdmVycmlkZQotICAgICAqIEByZXR1
cm4ge2Jvb2xlYW59Ci0gICAgICovCi0gICAgaXNJbnN0YW50UHJvZmlsZTogZnVuY3Rpb24oKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIEBv
dmVycmlkZQotICAgICAqIEByZXR1cm4ge2Jvb2xlYW59Ci0gICAgICovCi0gICAgYnV0dG9uQ2xp
Y2tlZDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdmFyIHByb2ZpbGVIZWFkZXIgPSBuZXcg
V2ViSW5zcGVjdG9yLk5hdGl2ZU1lbW9yeVByb2ZpbGVIZWFkZXIodGhpcywgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJTbmFwc2hvdCAlZCIsIHRoaXMuX25leHRQcm9maWxlVWlkKSwgdGhpcy5fbmV4
dFByb2ZpbGVVaWQpOwotICAgICAgICArK3RoaXMuX25leHRQcm9maWxlVWlkOwotICAgICAgICBw
cm9maWxlSGVhZGVyLmlzVGVtcG9yYXJ5ID0gdHJ1ZTsKLSAgICAgICAgdGhpcy5hZGRQcm9maWxl
KHByb2ZpbGVIZWFkZXIpOwotICAgICAgICAvKioKLSAgICAgICAgICogQHBhcmFtIHs/c3RyaW5n
fSBlcnJvcgotICAgICAgICAgKiBAcGFyYW0gez9NZW1vcnlBZ2VudC5NZW1vcnlCbG9ja30gbWVt
b3J5QmxvY2sKLSAgICAgICAgICovCi0gICAgICAgIGZ1bmN0aW9uIGRpZFJlY2VpdmVNZW1vcnlT
bmFwc2hvdChlcnJvciwgbWVtb3J5QmxvY2spCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICht
ZW1vcnlCbG9jay5zaXplICYmIG1lbW9yeUJsb2NrLmNoaWxkcmVuKSB7Ci0gICAgICAgICAgICAg
ICAgdmFyIGtub3duU2l6ZSA9IDA7Ci0gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBtZW1vcnlCbG9jay5jaGlsZHJlbi5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgICAgICAg
ICB2YXIgc2l6ZSA9IG1lbW9yeUJsb2NrLmNoaWxkcmVuW2ldLnNpemU7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChzaXplKQotICAgICAgICAgICAgICAgICAgICAgICAga25vd25TaXplICs9IHNp
emU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHZhciBvdGhlclNpemUgPSBt
ZW1vcnlCbG9jay5zaXplIC0ga25vd25TaXplOwotCi0gICAgICAgICAgICAgICAgaWYgKG90aGVy
U2l6ZSkgewotICAgICAgICAgICAgICAgICAgICBtZW1vcnlCbG9jay5jaGlsZHJlbi5wdXNoKHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJPdGhlciIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICBzaXplOiBvdGhlclNpemUKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgcHJvZmlsZUhlYWRlci5fbWVt
b3J5QmxvY2sgPSBtZW1vcnlCbG9jazsKLSAgICAgICAgICAgIHByb2ZpbGVIZWFkZXIuaXNUZW1w
b3JhcnkgPSBmYWxzZTsKLSAgICAgICAgICAgIHByb2ZpbGVIZWFkZXIuc2lkZWJhckVsZW1lbnQu
c3VidGl0bGUgPSBOdW1iZXIuYnl0ZXNUb1N0cmluZygvKiogQHR5cGV7bnVtYmVyfSAqLyhtZW1v
cnlCbG9jay5zaXplKSk7Ci0gICAgICAgIH0KLSAgICAgICAgTWVtb3J5QWdlbnQuZ2V0UHJvY2Vz
c01lbW9yeURpc3RyaWJ1dGlvbihmYWxzZSwgZGlkUmVjZWl2ZU1lbW9yeVNuYXBzaG90LmJpbmQo
dGhpcykpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwKLQogICAgIGdldCB0cmVlSXRl
bVRpdGxlKCkKICAgICB7CiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk1F
TU9SWSBESVNUUklCVVRJT04iKTsKQEAgLTU4OCw4ICs1NDMsOCBAQCBXZWJJbnNwZWN0b3IuTmF0
aXZlTWVtb3J5UHJvZmlsZVR5cGUucHJvdG90eXBlID0gewogCiAvKioKICAqIEBjb25zdHJ1Y3Rv
cgotICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5Qcm9maWxlSGVhZGVyfQotICogQHBhcmFtIHsh
V2ViSW5zcGVjdG9yLk5hdGl2ZU1lbW9yeVByb2ZpbGVUeXBlfSB0eXBlCisgKiBAZXh0ZW5kcyB7
V2ViSW5zcGVjdG9yLk5hdGl2ZVNuYXBzaG90UHJvZmlsZUhlYWRlcn0KKyAqIEBwYXJhbSB7IVdl
Ykluc3BlY3Rvci5Qcm9maWxlVHlwZX0gdHlwZQogICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlCiAg
KiBAcGFyYW0ge251bWJlcj19IHVpZAogICovCkBAIC02MjEsNiArNTc2LDQzIEBAIFdlYkluc3Bl
Y3Rvci5OYXRpdmVNZW1vcnlQcm9maWxlSGVhZGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0
dXJuIG5ldyBXZWJJbnNwZWN0b3IuTmF0aXZlTWVtb3J5U25hcHNob3RWaWV3KHRoaXMpOwogICAg
IH0sCiAKKyAgICAvKioKKyAgICAgKiBAb3ZlcnJpZGUKKyAgICAgKi8KKyAgICBfdXBkYXRlU25h
cHNob3RTdGF0dXM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5OYXRp
dmVTbmFwc2hvdFByb2ZpbGVIZWFkZXIucHJvdG90eXBlLl91cGRhdGVTbmFwc2hvdFN0YXR1cy5j
YWxsKHRoaXMpOworICAgICAgICB0aGlzLnNpZGViYXJFbGVtZW50LnN1YnRpdGxlID0gTnVtYmVy
LmJ5dGVzVG9TdHJpbmcoLyoqIEB0eXBle251bWJlcn0gKi8odGhpcy5fbWVtb3J5QmxvY2suc2l6
ZSkpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAb3ZlcnJpZGUKKyAgICAgKiBAcGFyYW0g
ez9zdHJpbmd9IGVycm9yCisgICAgICogQHBhcmFtIHs/TWVtb3J5QWdlbnQuTWVtb3J5QmxvY2t9
IG1lbW9yeUJsb2NrCisgICAgICogQHBhcmFtIHtPYmplY3Q9fSBncmFwaE1ldGFJbmZvcm1hdGlv
bgorICAgICAqLworICAgIF9kaWRSZWNlaXZlTWVtb3J5U25hcHNob3Q6IGZ1bmN0aW9uKGVycm9y
LCBtZW1vcnlCbG9jaywgZ3JhcGhNZXRhSW5mb3JtYXRpb24pCisgICAgeworICAgICAgICBXZWJJ
bnNwZWN0b3IuTmF0aXZlU25hcHNob3RQcm9maWxlSGVhZGVyLnByb3RvdHlwZS5fZGlkUmVjZWl2
ZU1lbW9yeVNuYXBzaG90LmNhbGwodGhpcywgZXJyb3IsIG1lbW9yeUJsb2NrLCBncmFwaE1ldGFJ
bmZvcm1hdGlvbik7CisgICAgICAgIGlmIChtZW1vcnlCbG9jay5zaXplICYmIG1lbW9yeUJsb2Nr
LmNoaWxkcmVuKSB7CisgICAgICAgICAgICB2YXIga25vd25TaXplID0gMDsKKyAgICAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgbWVtb3J5QmxvY2suY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHsK
KyAgICAgICAgICAgICAgICB2YXIgc2l6ZSA9IG1lbW9yeUJsb2NrLmNoaWxkcmVuW2ldLnNpemU7
CisgICAgICAgICAgICAgICAgaWYgKHNpemUpCisgICAgICAgICAgICAgICAgICAgIGtub3duU2l6
ZSArPSBzaXplOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFyIG90aGVyU2l6ZSA9IG1l
bW9yeUJsb2NrLnNpemUgLSBrbm93blNpemU7CisKKyAgICAgICAgICAgIGlmIChvdGhlclNpemUp
IHsKKyAgICAgICAgICAgICAgICBtZW1vcnlCbG9jay5jaGlsZHJlbi5wdXNoKHsKKyAgICAgICAg
ICAgICAgICAgICAgbmFtZTogIk90aGVyIiwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZTogb3Ro
ZXJTaXplCisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgdGhpcy5fbWVtb3J5QmxvY2sgPSBtZW1vcnlCbG9jazsKKyAgICB9LAorCiAgICAgX19w
cm90b19fOiBXZWJJbnNwZWN0b3IuTmF0aXZlU25hcHNob3RQcm9maWxlSGVhZGVyLnByb3RvdHlw
ZQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192445</attachid>
            <date>2013-03-11 05:18:35 -0700</date>
            <delta_ts>2013-03-11 05:40:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111965-20130311161434.patch</filename>
            <type>text/plain</type>
            <size>18268</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MzU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGZjNzgzMjJlMDlmM2Yy
NzlmNDA0MDUwMWNkZmZmZDY4YWFlY2ViZC4uODZkYjg2Y2JmMTVhYjE2NmYyYmY2NDBhNTVmZDA2
NmQ1OGYxNDZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEzLTAzLTExICBZdXJ5
IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGV4dHJhY3QgY29tbW9uIHBhcnRzIG9mIG5hdGl2ZSBwcm9maWxlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExOTY1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXh0cmFjdGVkIGNvbW1vbiBwYXJ0
cyBvZiBuYXRpdmUgcHJvZmlsZXMgaW50byBOYXRpdmVQcm9maWxlVHlwZUJhc2UuIE1lbW9yeQor
ICAgICAgICBkb21haW4gZGlzcGF0Y2hlciBpcyBub3cgYSBzZXBhcmF0ZSBjbGFzcyBhcyBpdCBp
cyBzaGFyZWQgYnkgdHdvIG5hdGl2ZSBtZW1vcnkKKyAgICAgICAgcHJvZmlsZSB0eXBlcy4KKwor
ICAgICAgICBCb3RoIG5hdGl2ZSBtZW1vcnkgcHJvZmlsZSB0eXBlcyBub3cgY2FwdHVyZSBuYXRp
dmUgaGVhcCBncmFwaC4KKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvTmF0aXZlTWVt
b3J5U25hcHNob3RWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1lbW9yeUFnZW50RGlz
cGF0Y2hlci5pbnN0YW5jZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF0aXZlUHJvZmlsZVR5
cGVCYXNlLnByb3RvdHlwZS5idXR0b25DbGlja2VkLmRpZFJlY2VpdmVNZW1vcnlTbmFwc2hvdCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF0aXZlUHJvZmlsZVR5cGVCYXNlLnByb3RvdHlwZS5i
dXR0b25DbGlja2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXRpdmVTbmFwc2hvdFByb2Zp
bGVUeXBlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYXRpdmVTbmFwc2hvdFByb2ZpbGVIZWFk
ZXIucHJvdG90eXBlLl9kaWRSZWNlaXZlTWVtb3J5U25hcHNob3QpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLk5hdGl2ZU1lbW9yeVByb2ZpbGVUeXBlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5O
YXRpdmVNZW1vcnlQcm9maWxlSGVhZGVyLnByb3RvdHlwZS5fdXBkYXRlU25hcHNob3RTdGF0dXMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hdGl2ZU1lbW9yeVByb2ZpbGVIZWFkZXIucHJvdG90
eXBlLl9kaWRSZWNlaXZlTWVtb3J5U25hcHNob3QpOgorCiAyMDEzLTAzLTExICBTaGVyaWZmIEJv
dCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBy
b2xsaW5nIG91dCByMTQ1MzQ5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9OYXRpdmVNZW1vcnlTbmFwc2hvdFZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL05hdGl2ZU1lbW9yeVNuYXBzaG90Vmlldy5qcwppbmRleCAxN2Fk
Y2IzYjVlY2IxODM2MzEwYTM1OWNjYzJmZmU5MDMyNzQzYTg5Li40NjIxZjgzNjFkNWExM2MxOTIw
MDNjY2VmZjM1NmIzNDc4MzVkOTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL05hdGl2ZU1lbW9yeVNuYXBzaG90Vmlldy5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05hdGl2ZU1lbW9yeVNuYXBzaG90Vmlldy5qcwpAQCAt
MjMyLDI2ICsyMzIsNjAgQEAgV2ViSW5zcGVjdG9yLk5hdGl2ZVNuYXBzaG90Tm9kZS5wcm90b3R5
cGUgPSB7CiAgICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlw
ZQogfQogCisKIC8qKgogICogQGNvbnN0cnVjdG9yCi0gKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9y
LlByb2ZpbGVUeXBlfQogICogQGltcGxlbWVudHMge01lbW9yeUFnZW50LkRpc3BhdGNoZXJ9CiAg
Ki8KLVdlYkluc3BlY3Rvci5OYXRpdmVTbmFwc2hvdFByb2ZpbGVUeXBlID0gZnVuY3Rpb24oKQor
V2ViSW5zcGVjdG9yLk1lbW9yeUFnZW50RGlzcGF0Y2hlciA9IGZ1bmN0aW9uKCkKIHsKLSAgICBX
ZWJJbnNwZWN0b3IuUHJvZmlsZVR5cGUuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuTmF0aXZlU25h
cHNob3RQcm9maWxlVHlwZS5UeXBlSWQsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiVGFrZSBOYXRp
dmUgSGVhcCBTbmFwc2hvdCIpKTsKICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyTWVtb3J5
RGlzcGF0Y2hlcih0aGlzKTsKLSAgICB0aGlzLl9uZXh0UHJvZmlsZVVpZCA9IDE7CisgICAgdGhp
cy5fY3VycmVudFByb2ZpbGVIZWFkZXIgPSBudWxsOwogfQogCi1XZWJJbnNwZWN0b3IuTmF0aXZl
U25hcHNob3RQcm9maWxlVHlwZS5UeXBlSWQgPSAiTkFUSVZFX1NOQVBTSE9UIjsKK1dlYkluc3Bl
Y3Rvci5NZW1vcnlBZ2VudERpc3BhdGNoZXIuaW5zdGFuY2UgPSBmdW5jdGlvbigpCit7CisgICAg
aWYgKCFXZWJJbnNwZWN0b3IuTWVtb3J5QWdlbnREaXNwYXRjaGVyLl9pbnN0YW5jZSkKKyAgICAg
ICAgV2ViSW5zcGVjdG9yLk1lbW9yeUFnZW50RGlzcGF0Y2hlci5faW5zdGFuY2UgPSBuZXcgV2Vi
SW5zcGVjdG9yLk1lbW9yeUFnZW50RGlzcGF0Y2hlcigpOworICAgIHJldHVybiBXZWJJbnNwZWN0
b3IuTWVtb3J5QWdlbnREaXNwYXRjaGVyLl9pbnN0YW5jZTsKK30KIAotV2ViSW5zcGVjdG9yLk5h
dGl2ZVNuYXBzaG90UHJvZmlsZVR5cGUucHJvdG90eXBlID0gewotICAgIGdldCBidXR0b25Ub29s
dGlwKCkKK1dlYkluc3BlY3Rvci5NZW1vcnlBZ2VudERpc3BhdGNoZXIucHJvdG90eXBlID0gewor
ICAgIC8qKgorICAgICAqIEBvdmVycmlkZQorICAgICAqIEBwYXJhbSB7TWVtb3J5QWdlbnQuSGVh
cFNuYXBzaG90Q2h1bmt9IGNodW5rCisgICAgICovCisgICAgYWRkTmF0aXZlU25hcHNob3RDaHVu
azogZnVuY3Rpb24oY2h1bmspCiAgICAgewotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJDYXB0dXJlIG5hdGl2ZSBoZWFwIGdyYXBoLiIpOworICAgICAgICBpZiAodGhpcy5f
Y3VycmVudFByb2ZpbGVIZWFkZXIpCisgICAgICAgICAgICB0aGlzLl9jdXJyZW50UHJvZmlsZUhl
YWRlci5hZGROYXRpdmVTbmFwc2hvdENodW5rKGNodW5rKTsKICAgICB9LAogCisgICAgX29uUmVt
b3ZlUHJvZmlsZUhlYWRlcjogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBpZiAoZXZl
bnQuZGF0YSA9PT0gdGhpcy5fY3VycmVudFByb2ZpbGVIZWFkZXIpCisgICAgICAgICAgICB0aGlz
Ll9jdXJyZW50UHJvZmlsZUhlYWRlciA9IG51bGw7CisgICAgfQorfTsKKworCisvKioKKyAqIEBj
b25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5Qcm9maWxlVHlwZX0KKyAqIEBw
YXJhbSB7c3RyaW5nfSBpZAorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAqLworV2ViSW5zcGVj
dG9yLk5hdGl2ZVByb2ZpbGVUeXBlQmFzZSA9IGZ1bmN0aW9uKHByb2ZpbGVIZWFkZXJDb25zdHJ1
Y3RvciwgaWQsIG5hbWUpCit7CisgICAgV2ViSW5zcGVjdG9yLlByb2ZpbGVUeXBlLmNhbGwodGhp
cywgaWQsIG5hbWUpOworICAgIHRoaXMuX3Byb2ZpbGVIZWFkZXJDb25zdHJ1Y3RvciA9IHByb2Zp
bGVIZWFkZXJDb25zdHJ1Y3RvcjsKKyAgICB0aGlzLl9uZXh0UHJvZmlsZVVpZCA9IDE7CisgICAg
dGhpcy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Qcm9maWxlVHlwZS5FdmVudHMuUmVt
b3ZlUHJvZmlsZUhlYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9y
Lk1lbW9yeUFnZW50RGlzcGF0Y2hlci5wcm90b3R5cGUuX29uUmVtb3ZlUHJvZmlsZUhlYWRlciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLk1lbW9yeUFnZW50RGlzcGF0
Y2hlci5pbnN0YW5jZSgpKTsKK30KKworV2ViSW5zcGVjdG9yLk5hdGl2ZVByb2ZpbGVUeXBlQmFz
ZS5wcm90b3R5cGUgPSB7CiAgICAgLyoqCiAgICAgICogQG92ZXJyaWRlCiAgICAgICogQHJldHVy
biB7Ym9vbGVhbn0KQEAgLTI2NywxMiArMzAxLDE3IEBAIFdlYkluc3BlY3Rvci5OYXRpdmVTbmFw
c2hvdFByb2ZpbGVUeXBlLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBidXR0b25DbGlja2Vk
OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB2YXIgcHJvZmlsZUhlYWRlciA9IG5ldyBXZWJJ
bnNwZWN0b3IuTmF0aXZlU25hcHNob3RQcm9maWxlSGVhZGVyKHRoaXMsIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiU25hcHNob3QgJWQiLCB0aGlzLl9uZXh0UHJvZmlsZVVpZCksIHRoaXMuX25leHRQ
cm9maWxlVWlkKTsKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5NZW1vcnlBZ2VudERpc3BhdGNo
ZXIuaW5zdGFuY2UoKS5fY3VycmVudFByb2ZpbGVIZWFkZXIpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAgICAgdmFyIHByb2ZpbGVIZWFkZXIgPSBuZXcgdGhpcy5fcHJvZmlsZUhl
YWRlckNvbnN0cnVjdG9yKHRoaXMsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU25hcHNob3QgJWQi
LCB0aGlzLl9uZXh0UHJvZmlsZVVpZCksIHRoaXMuX25leHRQcm9maWxlVWlkKTsKICAgICAgICAg
Kyt0aGlzLl9uZXh0UHJvZmlsZVVpZDsKICAgICAgICAgcHJvZmlsZUhlYWRlci5pc1RlbXBvcmFy
eSA9IHRydWU7CiAgICAgICAgIHRoaXMuYWRkUHJvZmlsZShwcm9maWxlSGVhZGVyKTsKKyAgICAg
ICAgV2ViSW5zcGVjdG9yLk1lbW9yeUFnZW50RGlzcGF0Y2hlci5pbnN0YW5jZSgpLl9jdXJyZW50
UHJvZmlsZUhlYWRlciA9IHByb2ZpbGVIZWFkZXI7CiAgICAgICAgIHByb2ZpbGVIZWFkZXIubG9h
ZChmdW5jdGlvbigpIHsgfSk7CiAKKwogICAgICAgICAvKioKICAgICAgICAgICogQHBhcmFtIHs/
c3RyaW5nfSBlcnJvcgogICAgICAgICAgKiBAcGFyYW0gez9NZW1vcnlBZ2VudC5NZW1vcnlCbG9j
a30gbWVtb3J5QmxvY2sKQEAgLTI4MCw2MCArMzE5LDIzIEBAIFdlYkluc3BlY3Rvci5OYXRpdmVT
bmFwc2hvdFByb2ZpbGVUeXBlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICovCiAgICAgICAgIGZ1
bmN0aW9uIGRpZFJlY2VpdmVNZW1vcnlTbmFwc2hvdChlcnJvciwgbWVtb3J5QmxvY2ssIGdyYXBo
TWV0YUluZm9ybWF0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgbWV0YUluZm9ybWF0
aW9uID0gLyoqIEB0eXBle0hlYXBTbmFwc2hvdE1ldGFpbmZvfSAqLyhncmFwaE1ldGFJbmZvcm1h
dGlvbik7Ci0gICAgICAgICAgICB0aGlzLmlzVGVtcG9yYXJ5ID0gZmFsc2U7Ci0gICAgICAgICAg
ICB0aGlzLnNpZGViYXJFbGVtZW50LnN1YnRpdGxlID0gTnVtYmVyLmJ5dGVzVG9TdHJpbmcoLyoq
IEB0eXBle251bWJlcn0gKi8obWVtb3J5QmxvY2suc2l6ZSkpOwotCi0gICAgICAgICAgICB2YXIg
ZWRnZUZpZWxkQ291bnQgPSBtZXRhSW5mb3JtYXRpb24uZWRnZV9maWVsZHMubGVuZ3RoOwotICAg
ICAgICAgICAgdmFyIG5vZGVGaWVsZENvdW50ID0gbWV0YUluZm9ybWF0aW9uLm5vZGVfZmllbGRz
Lmxlbmd0aDsKLSAgICAgICAgICAgIHZhciBub2RlSWRGaWVsZE9mZnNldCA9IG1ldGFJbmZvcm1h
dGlvbi5ub2RlX2ZpZWxkcy5pbmRleE9mKCJpZCIpOwotICAgICAgICAgICAgdmFyIHRvTm9kZUlk
RmllbGRPZmZzZXQgPSBtZXRhSW5mb3JtYXRpb24uZWRnZV9maWVsZHMuaW5kZXhPZigidG9fbm9k
ZSIpOwotCi0gICAgICAgICAgICB2YXIgYmFzZVRvUmVhbE5vZGVJZE1hcCA9IHt9OwotICAgICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9iYXNlVG9SZWFsTm9kZUlkLmxlbmd0aDsg
aSArPSAyKQotICAgICAgICAgICAgICAgIGJhc2VUb1JlYWxOb2RlSWRNYXBbdGhpcy5fYmFzZVRv
UmVhbE5vZGVJZFtpXV0gPSB0aGlzLl9iYXNlVG9SZWFsTm9kZUlkW2kgKyAxXTsKLQotICAgICAg
ICAgICAgdmFyIG5vZGVJZDJOb2RlSW5kZXggPSB7fTsKLSAgICAgICAgICAgIGZvciAodmFyIGkg
PSBub2RlSWRGaWVsZE9mZnNldDsgaSA8IHRoaXMuX25vZGVzLmxlbmd0aDsgaSArPSBub2RlRmll
bGRDb3VudCkKLSAgICAgICAgICAgICAgICBub2RlSWQyTm9kZUluZGV4W3RoaXMuX25vZGVzW2ld
XSA9IGkgLSBub2RlSWRGaWVsZE9mZnNldDsKLQotICAgICAgICAgICAgLy8gVHJhbnNsYXRlIG5v
ZGVJZCB0byBub2RlSW5kZXguCi0gICAgICAgICAgICB2YXIgZWRnZXMgPSB0aGlzLl9lZGdlczsK
LSAgICAgICAgICAgIGZvciAodmFyIGkgPSB0b05vZGVJZEZpZWxkT2Zmc2V0OyBpIDwgZWRnZXMu
bGVuZ3RoOyBpICs9IGVkZ2VGaWVsZENvdW50KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGVkZ2Vz
W2ldIGluIGJhc2VUb1JlYWxOb2RlSWRNYXApCi0gICAgICAgICAgICAgICAgICAgIGVkZ2VzW2ld
ID0gYmFzZVRvUmVhbE5vZGVJZE1hcFtlZGdlc1tpXV07Ci0gICAgICAgICAgICAgICAgZWRnZXNb
aV0gPSBub2RlSWQyTm9kZUluZGV4W2VkZ2VzW2ldXTsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgdmFyIGhlYXBTbmFwc2hvdCA9IHsKLSAgICAgICAgICAgICAgICAic25hcHNob3QiOiB7
Ci0gICAgICAgICAgICAgICAgICAgICJtZXRhIjogbWV0YUluZm9ybWF0aW9uLAotICAgICAgICAg
ICAgICAgICAgICBub2RlX2NvdW50OiB0aGlzLl9ub2Rlcy5sZW5ndGggLyBub2RlRmllbGRDb3Vu
dCwKLSAgICAgICAgICAgICAgICAgICAgZWRnZV9jb3VudDogdGhpcy5fZWRnZXMubGVuZ3RoIC8g
ZWRnZUZpZWxkQ291bnQsCi0gICAgICAgICAgICAgICAgICAgIHJvb3RfaW5kZXg6IHRoaXMuX25v
ZGVzLmxlbmd0aCAtIG5vZGVGaWVsZENvdW50Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAg
ICAgICAgICBub2RlczogdGhpcy5fbm9kZXMsCi0gICAgICAgICAgICAgICAgZWRnZXM6IHRoaXMu
X2VkZ2VzLAotICAgICAgICAgICAgICAgIHN0cmluZ3M6IHRoaXMuX3N0cmluZ3MKLSAgICAgICAg
ICAgIH07Ci0KLSAgICAgICAgICAgIHZhciBjaHVuayA9IEpTT04uc3RyaW5naWZ5KGhlYXBTbmFw
c2hvdCk7Ci0gICAgICAgICAgICB0aGlzLnRyYW5zZmVyQ2h1bmsoY2h1bmspOwotICAgICAgICAg
ICAgdGhpcy5maW5pc2hIZWFwU25hcHNob3QoKTsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHRoaXMgPT09IFdlYkluc3BlY3Rvci5NZW1vcnlBZ2VudERpc3BhdGNoZXIuaW5zdGFuY2UoKS5f
Y3VycmVudFByb2ZpbGVIZWFkZXIpOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLk1lbW9yeUFn
ZW50RGlzcGF0Y2hlci5pbnN0YW5jZSgpLl9jdXJyZW50UHJvZmlsZUhlYWRlciA9IG51bGw7Cisg
ICAgICAgICAgICB0aGlzLl9kaWRSZWNlaXZlTWVtb3J5U25hcHNob3QoZXJyb3IsIG1lbW9yeUJs
b2NrLCBncmFwaE1ldGFJbmZvcm1hdGlvbik7CiAgICAgICAgIH0KLQogICAgICAgICBNZW1vcnlB
Z2VudC5nZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uKHRydWUsIGRpZFJlY2VpdmVNZW1vcnlT
bmFwc2hvdC5iaW5kKHByb2ZpbGVIZWFkZXIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0sCiAKLSAgICBnZXQgdHJlZUl0ZW1UaXRsZSgpCi0gICAgewotICAgICAgICByZXR1cm4gV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJOQVRJVkUgU05BUFNIT1QiKTsKLSAgICB9LAotCi0gICAgZ2V0
IGRlc2NyaXB0aW9uKCkKKyAgICAvKioKKyAgICAgKiBAb3ZlcnJpZGUKKyAgICAgKiBAcGFyYW0g
eyFXZWJJbnNwZWN0b3IuUHJvZmlsZUhlYWRlcn0gcHJvZmlsZQorICAgICAqLworICAgIHJlbW92
ZVByb2ZpbGU6IGZ1bmN0aW9uKHByb2ZpbGUpCiAgICAgewotICAgICAgICByZXR1cm4gV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJOYXRpdmUgbWVtb3J5IHNuYXBzaG90IHByb2ZpbGVzIHNob3cgbmF0
aXZlIGhlYXAgZ3JhcGguIik7CisgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuTWVtb3J5QWdlbnRE
aXNwYXRjaGVyLmluc3RhbmNlKCkuX2N1cnJlbnRQcm9maWxlSGVhZGVyID09PSBwcm9maWxlKQor
ICAgICAgICAgICAgV2ViSW5zcGVjdG9yLk1lbW9yeUFnZW50RGlzcGF0Y2hlci5pbnN0YW5jZSgp
Ll9jdXJyZW50UHJvZmlsZUhlYWRlciA9IG51bGw7CisgICAgICAgIFdlYkluc3BlY3Rvci5Qcm9m
aWxlVHlwZS5wcm90b3R5cGUucmVtb3ZlUHJvZmlsZS5jYWxsKHRoaXMsIHByb2ZpbGUpOwogICAg
IH0sCiAKICAgICAvKioKQEAgLTM0NCw3ICszNDYsNyBAQCBXZWJJbnNwZWN0b3IuTmF0aXZlU25h
cHNob3RQcm9maWxlVHlwZS5wcm90b3R5cGUgPSB7CiAgICAgY3JlYXRlVGVtcG9yYXJ5UHJvZmls
ZTogZnVuY3Rpb24odGl0bGUpCiAgICAgewogICAgICAgICB0aXRsZSA9IHRpdGxlIHx8IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiU25hcHNob3R0aW5nXHUyMDI2Iik7Ci0gICAgICAgIHJldHVybiBu
ZXcgV2ViSW5zcGVjdG9yLk5hdGl2ZVNuYXBzaG90UHJvZmlsZUhlYWRlcih0aGlzLCB0aXRsZSk7
CisgICAgICAgIHJldHVybiBuZXcgdGhpcy5fcHJvZmlsZUhlYWRlckNvbnN0cnVjdG9yKHRoaXMs
IHRpdGxlKTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0zNTQsMjggKzM1Niw0NyBAQCBXZWJJbnNw
ZWN0b3IuTmF0aXZlU25hcHNob3RQcm9maWxlVHlwZS5wcm90b3R5cGUgPSB7CiAgICAgICovCiAg
ICAgY3JlYXRlUHJvZmlsZTogZnVuY3Rpb24ocHJvZmlsZSkKICAgICB7Ci0gICAgICAgIHJldHVy
biBuZXcgV2ViSW5zcGVjdG9yLk5hdGl2ZVNuYXBzaG90UHJvZmlsZUhlYWRlcih0aGlzLCBwcm9m
aWxlLnRpdGxlLCAtMSk7CisgICAgICAgIHJldHVybiBuZXcgdGhpcy5fcHJvZmlsZUhlYWRlckNv
bnN0cnVjdG9yKHRoaXMsIHByb2ZpbGUudGl0bGUsIC0xKTsKICAgICB9LAogCi0gICAgLyoqCi0g
ICAgICogQG92ZXJyaWRlCi0gICAgICogQHBhcmFtIHtNZW1vcnlBZ2VudC5IZWFwU25hcHNob3RD
aHVua30gY2h1bmsKLSAgICAgKi8KLSAgICBhZGROYXRpdmVTbmFwc2hvdENodW5rOiBmdW5jdGlv
bihjaHVuaykKKyAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5Qcm9maWxlVHlwZS5wcm90b3R5
cGUKK30KKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3Iu
TmF0aXZlUHJvZmlsZVR5cGVCYXNlfQorICovCitXZWJJbnNwZWN0b3IuTmF0aXZlU25hcHNob3RQ
cm9maWxlVHlwZSA9IGZ1bmN0aW9uKCkKK3sKKyAgICBXZWJJbnNwZWN0b3IuTmF0aXZlUHJvZmls
ZVR5cGVCYXNlLmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLk5hdGl2ZVNuYXBzaG90UHJvZmlsZUhl
YWRlciwgIFdlYkluc3BlY3Rvci5OYXRpdmVTbmFwc2hvdFByb2ZpbGVUeXBlLlR5cGVJZCwgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJUYWtlIE5hdGl2ZSBIZWFwIFNuYXBzaG90IikpOworfQorCitX
ZWJJbnNwZWN0b3IuTmF0aXZlU25hcHNob3RQcm9maWxlVHlwZS5UeXBlSWQgPSAiTkFUSVZFX1NO
QVBTSE9UIjsKKworV2ViSW5zcGVjdG9yLk5hdGl2ZVNuYXBzaG90UHJvZmlsZVR5cGUucHJvdG90
eXBlID0geworICAgIGdldCBidXR0b25Ub29sdGlwKCkKICAgICB7Ci0gICAgICAgIHZhciB0ZW1w
UHJvZmlsZSA9IHRoaXMuZmluZFRlbXBvcmFyeVByb2ZpbGUoKTsKLSAgICAgICAgaWYgKHRlbXBQ
cm9maWxlKQotICAgICAgICAgICAgdGVtcFByb2ZpbGUuYWRkTmF0aXZlU25hcHNob3RDaHVuayhj
aHVuayk7CisgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNhcHR1cmUgbmF0
aXZlIGhlYXAgZ3JhcGguIik7CiAgICAgfSwKIAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9y
LlByb2ZpbGVUeXBlLnByb3RvdHlwZQorICAgIGdldCB0cmVlSXRlbVRpdGxlKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5BVElWRSBTTkFQU0hPVCIpOwor
ICAgIH0sCisKKyAgICBnZXQgZGVzY3JpcHRpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiTmF0aXZlIG1lbW9yeSBzbmFwc2hvdCBwcm9maWxlcyBzaG93
IG5hdGl2ZSBoZWFwIGdyYXBoLiIpOworICAgIH0sCisKKyAgICBfX3Byb3RvX186IFdlYkluc3Bl
Y3Rvci5OYXRpdmVQcm9maWxlVHlwZUJhc2UucHJvdG90eXBlCiB9CiAKIAogLyoqCiAgKiBAY29u
c3RydWN0b3IKICAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuSGVhcFByb2ZpbGVIZWFkZXJ9Ci0g
KiBAcGFyYW0geyFXZWJJbnNwZWN0b3IuTmF0aXZlU25hcHNob3RQcm9maWxlVHlwZX0gdHlwZQor
ICogQHBhcmFtIHshV2ViSW5zcGVjdG9yLlByb2ZpbGVUeXBlfSB0eXBlCiAgKiBAcGFyYW0ge3N0
cmluZ30gdGl0bGUKICAqIEBwYXJhbSB7bnVtYmVyPX0gdWlkCiAgKi8KQEAgLTQxNSw2ICs0MzYs
NTQgQEAgV2ViSW5zcGVjdG9yLk5hdGl2ZVNuYXBzaG90UHJvZmlsZUhlYWRlci5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHRoaXMuX2Jhc2VUb1JlYWxOb2RlSWQgPSB0aGlzLl9iYXNlVG9SZWFsTm9k
ZUlkLmNvbmNhdChjaHVuay5iYXNlVG9SZWFsTm9kZUlkKTsKICAgICB9LAogCisgICAgLyoqCisg
ICAgICogQHBhcmFtIHs/c3RyaW5nfSBlcnJvcgorICAgICAqIEBwYXJhbSB7P01lbW9yeUFnZW50
Lk1lbW9yeUJsb2NrfSBtZW1vcnlCbG9jaworICAgICAqIEBwYXJhbSB7T2JqZWN0PX0gZ3JhcGhN
ZXRhSW5mb3JtYXRpb24KKyAgICAgKi8KKyAgICBfZGlkUmVjZWl2ZU1lbW9yeVNuYXBzaG90OiBm
dW5jdGlvbihlcnJvciwgbWVtb3J5QmxvY2ssIGdyYXBoTWV0YUluZm9ybWF0aW9uKQorICAgIHsK
KyAgICAgICAgdmFyIG1ldGFJbmZvcm1hdGlvbiA9IC8qKiBAdHlwZXtIZWFwU25hcHNob3RNZXRh
aW5mb30gKi8oZ3JhcGhNZXRhSW5mb3JtYXRpb24pOworICAgICAgICB0aGlzLmlzVGVtcG9yYXJ5
ID0gZmFsc2U7CisKKyAgICAgICAgdmFyIGVkZ2VGaWVsZENvdW50ID0gbWV0YUluZm9ybWF0aW9u
LmVkZ2VfZmllbGRzLmxlbmd0aDsKKyAgICAgICAgdmFyIG5vZGVGaWVsZENvdW50ID0gbWV0YUlu
Zm9ybWF0aW9uLm5vZGVfZmllbGRzLmxlbmd0aDsKKyAgICAgICAgdmFyIG5vZGVJZEZpZWxkT2Zm
c2V0ID0gbWV0YUluZm9ybWF0aW9uLm5vZGVfZmllbGRzLmluZGV4T2YoImlkIik7CisgICAgICAg
IHZhciB0b05vZGVJZEZpZWxkT2Zmc2V0ID0gbWV0YUluZm9ybWF0aW9uLmVkZ2VfZmllbGRzLmlu
ZGV4T2YoInRvX25vZGUiKTsKKworICAgICAgICB2YXIgYmFzZVRvUmVhbE5vZGVJZE1hcCA9IHt9
OworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2Jhc2VUb1JlYWxOb2RlSWQubGVu
Z3RoOyBpICs9IDIpCisgICAgICAgICAgICBiYXNlVG9SZWFsTm9kZUlkTWFwW3RoaXMuX2Jhc2VU
b1JlYWxOb2RlSWRbaV1dID0gdGhpcy5fYmFzZVRvUmVhbE5vZGVJZFtpICsgMV07CisKKyAgICAg
ICAgdmFyIG5vZGVJZDJOb2RlSW5kZXggPSB7fTsKKyAgICAgICAgZm9yICh2YXIgaSA9IG5vZGVJ
ZEZpZWxkT2Zmc2V0OyBpIDwgdGhpcy5fbm9kZXMubGVuZ3RoOyBpICs9IG5vZGVGaWVsZENvdW50
KQorICAgICAgICAgICAgbm9kZUlkMk5vZGVJbmRleFt0aGlzLl9ub2Rlc1tpXV0gPSBpIC0gbm9k
ZUlkRmllbGRPZmZzZXQ7CisKKyAgICAgICAgLy8gVHJhbnNsYXRlIG5vZGVJZCB0byBub2RlSW5k
ZXguCisgICAgICAgIHZhciBlZGdlcyA9IHRoaXMuX2VkZ2VzOworICAgICAgICBmb3IgKHZhciBp
ID0gdG9Ob2RlSWRGaWVsZE9mZnNldDsgaSA8IGVkZ2VzLmxlbmd0aDsgaSArPSBlZGdlRmllbGRD
b3VudCkgeworICAgICAgICAgICAgaWYgKGVkZ2VzW2ldIGluIGJhc2VUb1JlYWxOb2RlSWRNYXAp
CisgICAgICAgICAgICAgICAgZWRnZXNbaV0gPSBiYXNlVG9SZWFsTm9kZUlkTWFwW2VkZ2VzW2ld
XTsKKyAgICAgICAgICAgIGVkZ2VzW2ldID0gbm9kZUlkMk5vZGVJbmRleFtlZGdlc1tpXV07Cisg
ICAgICAgIH0KKworICAgICAgICB2YXIgaGVhcFNuYXBzaG90ID0geworICAgICAgICAgICAgInNu
YXBzaG90IjogeworICAgICAgICAgICAgICAgICJtZXRhIjogbWV0YUluZm9ybWF0aW9uLAorICAg
ICAgICAgICAgICAgIG5vZGVfY291bnQ6IHRoaXMuX25vZGVzLmxlbmd0aCAvIG5vZGVGaWVsZENv
dW50LAorICAgICAgICAgICAgICAgIGVkZ2VfY291bnQ6IHRoaXMuX2VkZ2VzLmxlbmd0aCAvIGVk
Z2VGaWVsZENvdW50LAorICAgICAgICAgICAgICAgIHJvb3RfaW5kZXg6IHRoaXMuX25vZGVzLmxl
bmd0aCAtIG5vZGVGaWVsZENvdW50CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgbm9kZXM6
IHRoaXMuX25vZGVzLAorICAgICAgICAgICAgZWRnZXM6IHRoaXMuX2VkZ2VzLAorICAgICAgICAg
ICAgc3RyaW5nczogdGhpcy5fc3RyaW5ncworICAgICAgICB9OworCisgICAgICAgIHZhciBjaHVu
ayA9IEpTT04uc3RyaW5naWZ5KGhlYXBTbmFwc2hvdCk7CisgICAgICAgIHRoaXMudHJhbnNmZXJD
aHVuayhjaHVuayk7CisgICAgICAgIHRoaXMuZmluaXNoSGVhcFNuYXBzaG90KCk7CisgICAgfSwK
KwogICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLkhlYXBQcm9maWxlSGVhZGVyLnByb3RvdHlw
ZQogfQogCkBAIC00NDQsMTIgKzUxMywxMSBAQCBXZWJJbnNwZWN0b3IuTmF0aXZlSGVhcFNuYXBz
aG90Vmlldy5wcm90b3R5cGUgPSB7CiAKIC8qKgogICogQGNvbnN0cnVjdG9yCi0gKiBAZXh0ZW5k
cyB7V2ViSW5zcGVjdG9yLlByb2ZpbGVUeXBlfQorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5O
YXRpdmVQcm9maWxlVHlwZUJhc2V9CiAgKi8KIFdlYkluc3BlY3Rvci5OYXRpdmVNZW1vcnlQcm9m
aWxlVHlwZSA9IGZ1bmN0aW9uKCkKIHsKLSAgICBXZWJJbnNwZWN0b3IuUHJvZmlsZVR5cGUuY2Fs
bCh0aGlzLCBXZWJJbnNwZWN0b3IuTmF0aXZlTWVtb3J5UHJvZmlsZVR5cGUuVHlwZUlkLCBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkNhcHR1cmUgTmF0aXZlIE1lbW9yeSBEaXN0cmlidXRpb24iKSk7
Ci0gICAgdGhpcy5fbmV4dFByb2ZpbGVVaWQgPSAxOworICAgIFdlYkluc3BlY3Rvci5OYXRpdmVQ
cm9maWxlVHlwZUJhc2UuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuTmF0aXZlTWVtb3J5UHJvZmls
ZUhlYWRlciwgV2ViSW5zcGVjdG9yLk5hdGl2ZU1lbW9yeVByb2ZpbGVUeXBlLlR5cGVJZCwgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJDYXB0dXJlIE5hdGl2ZSBNZW1vcnkgRGlzdHJpYnV0aW9uIikp
OwogfQogCiBXZWJJbnNwZWN0b3IuTmF0aXZlTWVtb3J5UHJvZmlsZVR5cGUuVHlwZUlkID0gIk5B
VElWRV9NRU1PUllfRElTVFJJQlVUSU9OIjsKQEAgLTQ2MCw1NSArNTI4LDYgQEAgV2ViSW5zcGVj
dG9yLk5hdGl2ZU1lbW9yeVByb2ZpbGVUeXBlLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJu
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2FwdHVyZSBuYXRpdmUgbWVtb3J5IGRpc3RyaWJ1dGlv
bi4iKTsKICAgICB9LAogCi0gICAgLyoqCi0gICAgICogQG92ZXJyaWRlCi0gICAgICogQHJldHVy
biB7Ym9vbGVhbn0KLSAgICAgKi8KLSAgICBpc0luc3RhbnRQcm9maWxlOiBmdW5jdGlvbigpCi0g
ICAgewotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQG92
ZXJyaWRlCi0gICAgICogQHJldHVybiB7Ym9vbGVhbn0KLSAgICAgKi8KLSAgICBidXR0b25DbGlj
a2VkOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIgcHJvZmlsZUhlYWRlciA9IG5ldyBX
ZWJJbnNwZWN0b3IuTmF0aXZlTWVtb3J5UHJvZmlsZUhlYWRlcih0aGlzLCBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlNuYXBzaG90ICVkIiwgdGhpcy5fbmV4dFByb2ZpbGVVaWQpLCB0aGlzLl9uZXh0
UHJvZmlsZVVpZCk7Ci0gICAgICAgICsrdGhpcy5fbmV4dFByb2ZpbGVVaWQ7Ci0gICAgICAgIHBy
b2ZpbGVIZWFkZXIuaXNUZW1wb3JhcnkgPSB0cnVlOwotICAgICAgICB0aGlzLmFkZFByb2ZpbGUo
cHJvZmlsZUhlYWRlcik7Ci0gICAgICAgIC8qKgotICAgICAgICAgKiBAcGFyYW0gez9zdHJpbmd9
IGVycm9yCi0gICAgICAgICAqIEBwYXJhbSB7P01lbW9yeUFnZW50Lk1lbW9yeUJsb2NrfSBtZW1v
cnlCbG9jawotICAgICAgICAgKi8KLSAgICAgICAgZnVuY3Rpb24gZGlkUmVjZWl2ZU1lbW9yeVNu
YXBzaG90KGVycm9yLCBtZW1vcnlCbG9jaykKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG1l
bW9yeUJsb2NrLnNpemUgJiYgbWVtb3J5QmxvY2suY2hpbGRyZW4pIHsKLSAgICAgICAgICAgICAg
ICB2YXIga25vd25TaXplID0gMDsKLSAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IG1lbW9yeUJsb2NrLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHZhciBzaXplID0gbWVtb3J5QmxvY2suY2hpbGRyZW5baV0uc2l6ZTsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKHNpemUpCi0gICAgICAgICAgICAgICAgICAgICAgICBrbm93blNpemUgKz0gc2l6
ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgdmFyIG90aGVyU2l6ZSA9IG1l
bW9yeUJsb2NrLnNpemUgLSBrbm93blNpemU7Ci0KLSAgICAgICAgICAgICAgICBpZiAob3RoZXJT
aXplKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1lbW9yeUJsb2NrLmNoaWxkcmVuLnB1c2goewot
ICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogIk90aGVyIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemU6IG90aGVyU2l6ZQotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwcm9maWxlSGVhZGVyLl9tZW1v
cnlCbG9jayA9IG1lbW9yeUJsb2NrOwotICAgICAgICAgICAgcHJvZmlsZUhlYWRlci5pc1RlbXBv
cmFyeSA9IGZhbHNlOwotICAgICAgICAgICAgcHJvZmlsZUhlYWRlci5zaWRlYmFyRWxlbWVudC5z
dWJ0aXRsZSA9IE51bWJlci5ieXRlc1RvU3RyaW5nKC8qKiBAdHlwZXtudW1iZXJ9ICovKG1lbW9y
eUJsb2NrLnNpemUpKTsKLSAgICAgICAgfQotICAgICAgICBNZW1vcnlBZ2VudC5nZXRQcm9jZXNz
TWVtb3J5RGlzdHJpYnV0aW9uKGZhbHNlLCBkaWRSZWNlaXZlTWVtb3J5U25hcHNob3QuYmluZCh0
aGlzKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9LAotCiAgICAgZ2V0IHRyZWVJdGVt
VGl0bGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTUVN
T1JZIERJU1RSSUJVVElPTiIpOwpAQCAtNTE5LDQwICs1MzgsMTkgQEAgV2ViSW5zcGVjdG9yLk5h
dGl2ZU1lbW9yeVByb2ZpbGVUeXBlLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiTmF0aXZlIG1lbW9yeSBzbmFwc2hvdCBwcm9maWxlcyBzaG93IG1l
bW9yeSBkaXN0cmlidXRpb24gYW1vbmcgYnJvd3NlciBzdWJzeXN0ZW1zIik7CiAgICAgfSwKIAot
ICAgIC8qKgotICAgICAqIEBvdmVycmlkZQotICAgICAqIEBwYXJhbSB7c3RyaW5nPX0gdGl0bGUK
LSAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuUHJvZmlsZUhlYWRlcn0KLSAgICAgKi8KLSAg
ICBjcmVhdGVUZW1wb3JhcnlQcm9maWxlOiBmdW5jdGlvbih0aXRsZSkKLSAgICB7Ci0gICAgICAg
IHRpdGxlID0gdGl0bGUgfHwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTbmFwc2hvdHRpbmdcdTIw
MjYiKTsKLSAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuTmF0aXZlTWVtb3J5UHJvZmls
ZUhlYWRlcih0aGlzLCB0aXRsZSk7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIEBvdmVycmlk
ZQotICAgICAqIEBwYXJhbSB7UHJvZmlsZXJBZ2VudC5Qcm9maWxlSGVhZGVyfSBwcm9maWxlCi0g
ICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlByb2ZpbGVIZWFkZXJ9Ci0gICAgICovCi0gICAg
Y3JlYXRlUHJvZmlsZTogZnVuY3Rpb24ocHJvZmlsZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBu
ZXcgV2ViSW5zcGVjdG9yLk5hdGl2ZU1lbW9yeVByb2ZpbGVIZWFkZXIodGhpcywgcHJvZmlsZS50
aXRsZSwgLTEpOwotICAgIH0sCi0KLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5Qcm9maWxl
VHlwZS5wcm90b3R5cGUKKyAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5OYXRpdmVQcm9maWxl
VHlwZUJhc2UucHJvdG90eXBlCiB9CiAKIC8qKgogICogQGNvbnN0cnVjdG9yCi0gKiBAZXh0ZW5k
cyB7V2ViSW5zcGVjdG9yLlByb2ZpbGVIZWFkZXJ9Ci0gKiBAcGFyYW0geyFXZWJJbnNwZWN0b3Iu
TmF0aXZlTWVtb3J5UHJvZmlsZVR5cGV9IHR5cGUKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3Iu
TmF0aXZlU25hcHNob3RQcm9maWxlSGVhZGVyfQorICogQHBhcmFtIHshV2ViSW5zcGVjdG9yLlBy
b2ZpbGVUeXBlfSB0eXBlCiAgKiBAcGFyYW0ge3N0cmluZ30gdGl0bGUKICAqIEBwYXJhbSB7bnVt
YmVyPX0gdWlkCiAgKi8KIFdlYkluc3BlY3Rvci5OYXRpdmVNZW1vcnlQcm9maWxlSGVhZGVyID0g
ZnVuY3Rpb24odHlwZSwgdGl0bGUsIHVpZCkKIHsKLSAgICBXZWJJbnNwZWN0b3IuUHJvZmlsZUhl
YWRlci5jYWxsKHRoaXMsIHR5cGUsIHRpdGxlLCB1aWQpOworICAgIFdlYkluc3BlY3Rvci5OYXRp
dmVTbmFwc2hvdFByb2ZpbGVIZWFkZXIuY2FsbCh0aGlzLCB0eXBlLCB0aXRsZSwgdWlkKTsKIAog
ICAgIC8qKgogICAgICAqIEB0eXBlIHtNZW1vcnlBZ2VudC5NZW1vcnlCbG9ja30KQEAgLTU3OCw3
ICs1NzYsNDQgQEAgV2ViSW5zcGVjdG9yLk5hdGl2ZU1lbW9yeVByb2ZpbGVIZWFkZXIucHJvdG90
eXBlID0gewogICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5OYXRpdmVNZW1vcnlTbmFw
c2hvdFZpZXcodGhpcyk7CiAgICAgfSwKIAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLlBy
b2ZpbGVIZWFkZXIucHJvdG90eXBlCisgICAgLyoqCisgICAgICogQG92ZXJyaWRlCisgICAgICov
CisgICAgX3VwZGF0ZVNuYXBzaG90U3RhdHVzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBX
ZWJJbnNwZWN0b3IuTmF0aXZlU25hcHNob3RQcm9maWxlSGVhZGVyLnByb3RvdHlwZS5fdXBkYXRl
U25hcHNob3RTdGF0dXMuY2FsbCh0aGlzKTsKKyAgICAgICAgdGhpcy5zaWRlYmFyRWxlbWVudC5z
dWJ0aXRsZSA9IE51bWJlci5ieXRlc1RvU3RyaW5nKC8qKiBAdHlwZXtudW1iZXJ9ICovKHRoaXMu
X21lbW9yeUJsb2NrLnNpemUpKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQG92ZXJyaWRl
CisgICAgICogQHBhcmFtIHs/c3RyaW5nfSBlcnJvcgorICAgICAqIEBwYXJhbSB7P01lbW9yeUFn
ZW50Lk1lbW9yeUJsb2NrfSBtZW1vcnlCbG9jaworICAgICAqIEBwYXJhbSB7T2JqZWN0PX0gZ3Jh
cGhNZXRhSW5mb3JtYXRpb24KKyAgICAgKi8KKyAgICBfZGlkUmVjZWl2ZU1lbW9yeVNuYXBzaG90
OiBmdW5jdGlvbihlcnJvciwgbWVtb3J5QmxvY2ssIGdyYXBoTWV0YUluZm9ybWF0aW9uKQorICAg
IHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLk5hdGl2ZVNuYXBzaG90UHJvZmlsZUhlYWRlci5wcm90
b3R5cGUuX2RpZFJlY2VpdmVNZW1vcnlTbmFwc2hvdC5jYWxsKHRoaXMsIGVycm9yLCBtZW1vcnlC
bG9jaywgZ3JhcGhNZXRhSW5mb3JtYXRpb24pOworICAgICAgICBpZiAobWVtb3J5QmxvY2suc2l6
ZSAmJiBtZW1vcnlCbG9jay5jaGlsZHJlbikgeworICAgICAgICAgICAgdmFyIGtub3duU2l6ZSA9
IDA7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1lbW9yeUJsb2NrLmNoaWxkcmVu
Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgdmFyIHNpemUgPSBtZW1vcnlCbG9jay5j
aGlsZHJlbltpXS5zaXplOworICAgICAgICAgICAgICAgIGlmIChzaXplKQorICAgICAgICAgICAg
ICAgICAgICBrbm93blNpemUgKz0gc2l6ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZh
ciBvdGhlclNpemUgPSBtZW1vcnlCbG9jay5zaXplIC0ga25vd25TaXplOworCisgICAgICAgICAg
ICBpZiAob3RoZXJTaXplKSB7CisgICAgICAgICAgICAgICAgbWVtb3J5QmxvY2suY2hpbGRyZW4u
cHVzaCh7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJPdGhlciIsCisgICAgICAgICAgICAg
ICAgICAgIHNpemU6IG90aGVyU2l6ZQorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIHRoaXMuX21lbW9yeUJsb2NrID0gbWVtb3J5QmxvY2s7Cisg
ICAgfSwKKworICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk5hdGl2ZVNuYXBzaG90UHJvZmls
ZUhlYWRlci5wcm90b3R5cGUKIH0KIAogLyoqCg==
</data>
<flag name="review"
          id="213686"
          type_id="1"
          status="+"
          setter="apavlov"
    />
          </attachment>
      

    </bug>

</bugzilla>