<?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>80412</bug_id>
          
          <creation_ts>2012-03-06 05:50:42 -0800</creation_ts>
          <short_desc>Web Inspector: extract source mapping logic from DebuggerPresentationModel to ScriptMappingImpl.</short_desc>
          <delta_ts>2012-03-07 02:55:26 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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 Podivilov">podivilov</reporter>
          <assigned_to name="Pavel Podivilov">podivilov</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>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>571782</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2012-03-06 05:50:42 -0800</bug_when>
    <thetext>Web Inspector: extract source mapping logic from DebuggerPresentationModel to ScriptMappingImpl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571783</commentid>
    <comment_count>1</comment_count>
      <attachid>130365</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2012-03-06 05:53:02 -0800</bug_when>
    <thetext>Created attachment 130365
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571866</commentid>
    <comment_count>2</comment_count>
      <attachid>130365</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-03-06 08:03:23 -0800</bug_when>
    <thetext>Comment on attachment 130365
Patch

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

&gt; Source/WebCore/inspector/front-end/DebuggerPresentationModel.js:-33
&gt; - * @extends {WebInspector.ScriptMapping}

Let&apos;s keep ScriptMapping interface implemented by DebuggerPresentationModel to be used by external clients (uiLocationToRawLocation(), rawLocationToUILocation() etc.). Beside that we can have a MutableScriptMapping interface with addScript() and reset() methods to be implemented by MainScriptMapping and other helper script mappings inside MainScriptMapping.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572706</commentid>
    <comment_count>3</comment_count>
      <attachid>130574</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2012-03-07 02:08:14 -0800</bug_when>
    <thetext>Created attachment 130574
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572736</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2012-03-07 02:55:26 -0800</bug_when>
    <thetext>Committed r110043: &lt;http://trac.webkit.org/changeset/110043&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130365</attachid>
            <date>2012-03-06 05:53:02 -0800</date>
            <delta_ts>2012-03-07 02:08:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80412-20120306175300.patch</filename>
            <type>text/plain</type>
            <size>22654</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5OTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzY3NjllNmMwMThjMTFj
NGMxMWFmYWExMzQ4NTRjYThmYTIwYTY5NS4uYTZlYjY1MWU0MDFkZTI2M2JiODhmMmEwNGI3Zjk2
MWNlZDEwOTk0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI3IEBACiAyMDEyLTAzLTA2ICBQYXZl
bCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IGV4dHJhY3Qgc291cmNlIG1hcHBpbmcgbG9naWMgZnJvbSBEZWJ1Z2dlclByZXNlbnRh
dGlvbk1vZGVsIHRvIFNjcmlwdE1hcHBpbmdJbXBsLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA0MTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvY29tcGlsZS1mcm9u
dC1lbmQuc2g6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRNYXBwaW5nLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdE1hcHBpbmdJbXBsKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5TY3JpcHRNYXBwaW5nSW1wbC5wcm90b3R5cGUucmF3TG9jYXRpb25Ub1VJTG9j
YXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdE1hcHBpbmdJbXBsLnByb3RvdHlw
ZS5jcmVhdGVMaXZlTG9jYXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdE1hcHBp
bmdJbXBsLnByb3RvdHlwZS51aVNvdXJjZUNvZGVMaXN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5TY3JpcHRNYXBwaW5nSW1wbC5wcm90b3R5cGUuX2hhbmRsZVVJU291cmNlQ29kZUxpc3RDaGFu
Z2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRNYXBwaW5nSW1wbC5wcm90b3R5cGUu
X3VpU291cmNlQ29kZUxpc3RDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRN
YXBwaW5nSW1wbC5wcm90b3R5cGUuX2JpbmRTY3JpcHRUb1Jhd1NvdXJjZUNvZGUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlNjcmlwdE1hcHBpbmdJbXBsLnByb3RvdHlwZS5zZXRGb3JtYXRTb3Vy
Y2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdE1hcHBpbmdJbXBsLnByb3RvdHlwZS5m
b3JjZVVwZGF0ZVNvdXJjZU1hcHBpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdE1h
cHBpbmdJbXBsLnByb3RvdHlwZS5yZXNldCk6CisKKzIwMTItMDMtMDYgIFBhdmVsIFBvZGl2aWxv
diAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgV2ViIEluc3BlY3RvcjogcHJl
cGFyZSBmb3IgZXh0cmFjdGluZyBTY3JpcHRNYXBwaW5nIGltcGxlbWVudGF0aW9uIGZyb20gRGVi
dWdnZXJQcmVzZW50YXRpb25Nb2RlbC4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTgwMzk2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5qcwppbmRl
eCA2MTg1ZWQ5MzcxMzRlMTczZGViM2YzN2EyNTc1ZjM5MzAxNGU4NGZiLi4yNWJhZjhkZTQxZWM0
NGZhNDRiNmNlYzM5YjFjMmQ3ZTU4NGE4OWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuanMKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVs
LmpzCkBAIC0zMCwyMSArMzAsMTYgQEAKIAogLyoqCiAgKiBAY29uc3RydWN0b3IKLSAqIEBleHRl
bmRzIHtXZWJJbnNwZWN0b3IuU2NyaXB0TWFwcGluZ30KKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0
b3IuT2JqZWN0fQogICovCiBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbCA9
IGZ1bmN0aW9uKCkKIHsKLSAgICAvLyBGSVhNRTogYXBwbHkgZm9ybWF0dGVyIGZyb20gb3V0c2lk
ZSBhcyBhIGdlbmVyaWMgbWFwcGluZy4KLSAgICB0aGlzLl9mb3JtYXR0ZXIgPSBuZXcgV2ViSW5z
cGVjdG9yLlNjcmlwdEZvcm1hdHRlcigpOwotICAgIHRoaXMuX3Jhd1NvdXJjZUNvZGVzID0gW107
Ci0gICAgdGhpcy5fcmF3U291cmNlQ29kZUZvclNjcmlwdElkID0ge307Ci0gICAgdGhpcy5fcmF3
U291cmNlQ29kZUZvclVSTCA9IHt9OwotICAgIHRoaXMuX3Jhd1NvdXJjZUNvZGVGb3JEb2N1bWVu
dFVSTCA9IHt9OwotICAgIHRoaXMuX3Jhd1NvdXJjZUNvZGVGb3JVSVNvdXJjZUNvZGUgPSBuZXcg
TWFwKCk7CisgICAgdGhpcy5fc2NyaXB0TWFwcGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0
TWFwcGluZ0ltcGwoKTsKKyAgICB0aGlzLl9zY3JpcHRNYXBwaW5nLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLlNjcmlwdE1hcHBpbmcuRXZlbnRzLlVJU291cmNlQ29kZUxpc3RDaGFuZ2Vk
LCB0aGlzLl9oYW5kbGVVSVNvdXJjZUNvZGVMaXN0Q2hhbmdlZCwgdGhpcyk7CisKICAgICB0aGlz
Ll9wcmVzZW50YXRpb25DYWxsRnJhbWVzID0gW107Ci0gICAgdGhpcy5fZm9ybWF0U291cmNlID0g
ZmFsc2U7CiAKLSAgICB0aGlzLl9icmVha3BvaW50TWFuYWdlciA9IG5ldyBXZWJJbnNwZWN0b3Iu
QnJlYWtwb2ludE1hbmFnZXIoV2ViSW5zcGVjdG9yLnNldHRpbmdzLmJyZWFrcG9pbnRzLCB0aGlz
Ll9icmVha3BvaW50QWRkZWQuYmluZCh0aGlzKSwgdGhpcy5fYnJlYWtwb2ludFJlbW92ZWQuYmlu
ZCh0aGlzKSwgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwsIHRoaXMpOworICAgIHRoaXMuX2Jy
ZWFrcG9pbnRNYW5hZ2VyID0gbmV3IFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlcihXZWJJ
bnNwZWN0b3Iuc2V0dGluZ3MuYnJlYWtwb2ludHMsIHRoaXMuX2JyZWFrcG9pbnRBZGRlZC5iaW5k
KHRoaXMpLCB0aGlzLl9icmVha3BvaW50UmVtb3ZlZC5iaW5kKHRoaXMpLCBXZWJJbnNwZWN0b3Iu
ZGVidWdnZXJNb2RlbCwgdGhpcy5fc2NyaXB0TWFwcGluZyk7CiAKICAgICB0aGlzLl9wZW5kaW5n
Q29uc29sZU1lc3NhZ2VzID0ge307CiAgICAgdGhpcy5fY29uc29sZU1lc3NhZ2VMaXZlTG9jYXRp
b25zID0gW107CkBAIC05Myw3ICs4OCw3IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRh
dGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBjcmVhdGVQbGFjYXJkOiBmdW5j
dGlvbihjYWxsRnJhbWUpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5E
ZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkNhbGxGcmFtZVBsYWNhcmQoY2FsbEZyYW1lLCB0aGlz
KTsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25N
b2RlbC5DYWxsRnJhbWVQbGFjYXJkKGNhbGxGcmFtZSwgdGhpcy5fc2NyaXB0TWFwcGluZyk7CiAg
ICAgfSwKIAogICAgIC8qKgpAQCAtMTAyLDggKzk3LDcgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
UHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0gewogICAgICAqLwogICAgIHJhd0xvY2F0aW9u
VG9VSUxvY2F0aW9uOiBmdW5jdGlvbihyYXdMb2NhdGlvbikKICAgICB7Ci0gICAgICAgIHZhciBy
YXdTb3VyY2VDb2RlID0gdGhpcy5fcmF3U291cmNlQ29kZUZvclNjcmlwdElkW3Jhd0xvY2F0aW9u
LnNjcmlwdElkXTsKLSAgICAgICAgcmV0dXJuIHJhd1NvdXJjZUNvZGUucmF3TG9jYXRpb25Ub1VJ
TG9jYXRpb24ocmF3TG9jYXRpb24pOworICAgICAgICByZXR1cm4gdGhpcy5fc2NyaXB0TWFwcGlu
Zy5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbihyYXdMb2NhdGlvbik7CiAgICAgfSwKIAogICAgIC8q
KgpAQCAtMTE0LDggKzEwOCw3IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1v
ZGVsLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICB1aUxvY2F0aW9uVG9SYXdMb2NhdGlvbjog
ZnVuY3Rpb24odWlTb3VyY2VDb2RlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgewot
ICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IHRoaXMuX3Jhd1NvdXJjZUNvZGVGb3JVSVNvdXJj
ZUNvZGUuZ2V0KHVpU291cmNlQ29kZSk7Ci0gICAgICAgIHJldHVybiByYXdTb3VyY2VDb2RlLnVp
TG9jYXRpb25Ub1Jhd0xvY2F0aW9uKHVpU291cmNlQ29kZSwgbGluZU51bWJlciwgY29sdW1uTnVt
YmVyKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3NjcmlwdE1hcHBpbmcudWlMb2NhdGlvblRvUmF3
TG9jYXRpb24odWlTb3VyY2VDb2RlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwogICAgIH0s
CiAKICAgICAvKioKQEAgLTEyNSw4ICsxMTgsNyBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVz
ZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgY3JlYXRlTGl2ZUxvY2F0
aW9uOiBmdW5jdGlvbihyYXdMb2NhdGlvbiwgdXBkYXRlRGVsZWdhdGUpCiAgICAgewotICAgICAg
ICB2YXIgcmF3U291cmNlQ29kZSA9IHRoaXMuX3Jhd1NvdXJjZUNvZGVGb3JTY3JpcHRJZFtyYXdM
b2NhdGlvbi5zY3JpcHRJZF07Ci0gICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlJhd1Nv
dXJjZUNvZGUuTGl2ZUxvY2F0aW9uKHJhd1NvdXJjZUNvZGUsIHJhd0xvY2F0aW9uLCB1cGRhdGVE
ZWxlZ2F0ZSk7CisgICAgICAgIHJldHVybiB0aGlzLl9zY3JpcHRNYXBwaW5nLmNyZWF0ZUxpdmVM
b2NhdGlvbihyYXdMb2NhdGlvbiwgdXBkYXRlRGVsZWdhdGUpOwogICAgIH0sCiAKICAgICAvKioK
QEAgLTEzNSw3ICsxMjcsNyBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2Rl
bC5wcm90b3R5cGUgPSB7CiAgICAgX3BhcnNlZFNjcmlwdFNvdXJjZTogZnVuY3Rpb24oZXZlbnQp
CiAgICAgewogICAgICAgICB2YXIgc2NyaXB0ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuU2Ny
aXB0fSAqLyBldmVudC5kYXRhOwotICAgICAgICB0aGlzLl9hZGRTY3JpcHQoc2NyaXB0KTsKKyAg
ICAgICAgdGhpcy5fc2NyaXB0TWFwcGluZy5hZGRTY3JpcHQoc2NyaXB0KTsKICAgICAgICAgdGhp
cy5fYWRkUGVuZGluZ0NvbnNvbGVNZXNzYWdlc1RvU2NyaXB0KHNjcmlwdCk7CiAgICAgfSwKIApA
QCAtMTQ4LDYzICsxNDAsMTEgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9k
ZWwucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYklu
c3BlY3Rvci5TY3JpcHR9IHNjcmlwdAotICAgICAqLwotICAgIF9hZGRTY3JpcHQ6IGZ1bmN0aW9u
KHNjcmlwdCkKLSAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IG51bGw7Ci0gICAgICAgIHZh
ciBpc0lubGluZVNjcmlwdCA9IGZhbHNlOwotICAgICAgICBpZiAoc2NyaXB0LmlzSW5saW5lU2Ny
aXB0KCkpIHsKLSAgICAgICAgICAgIHJlc291cmNlID0gV2ViSW5zcGVjdG9yLm5ldHdvcmtNYW5h
Z2VyLmluZmxpZ2h0UmVzb3VyY2VGb3JVUkwoc2NyaXB0LnNvdXJjZVVSTCkgfHwgV2ViSW5zcGVj
dG9yLnJlc291cmNlRm9yVVJMKHNjcmlwdC5zb3VyY2VVUkwpOwotICAgICAgICAgICAgaWYgKHJl
c291cmNlICYmIHJlc291cmNlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLkRv
Y3VtZW50KSB7Ci0gICAgICAgICAgICAgICAgaXNJbmxpbmVTY3JpcHQgPSB0cnVlOwotICAgICAg
ICAgICAgICAgIHZhciByYXdTb3VyY2VDb2RlID0gdGhpcy5fcmF3U291cmNlQ29kZUZvckRvY3Vt
ZW50VVJMW3NjcmlwdC5zb3VyY2VVUkxdOwotICAgICAgICAgICAgICAgIGlmIChyYXdTb3VyY2VD
b2RlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJhd1NvdXJjZUNvZGUuYWRkU2NyaXB0KHNjcmlw
dCk7Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMuX2JpbmRTY3JpcHRUb1Jhd1NvdXJjZUNvZGUo
c2NyaXB0LCByYXdTb3VyY2VDb2RlKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHZhciBj
b21waWxlclNvdXJjZU1hcHBpbmcgPSBudWxsOwotICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnNl
dHRpbmdzLnNvdXJjZU1hcHNFbmFibGVkLmdldCgpICYmIHNjcmlwdC5zb3VyY2VNYXBVUkwpCi0g
ICAgICAgICAgICBjb21waWxlclNvdXJjZU1hcHBpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLkNsb3N1
cmVDb21waWxlclNvdXJjZU1hcHBpbmcoc2NyaXB0LnNvdXJjZU1hcFVSTCwgc2NyaXB0LnNvdXJj
ZVVSTCk7Ci0KLSAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSBuZXcgV2ViSW5zcGVjdG9yLlJh
d1NvdXJjZUNvZGUoc2NyaXB0LnNjcmlwdElkLCBzY3JpcHQsIHJlc291cmNlLCB0aGlzLl9mb3Jt
YXR0ZXIsIHRoaXMuX2Zvcm1hdFNvdXJjZSwgY29tcGlsZXJTb3VyY2VNYXBwaW5nKTsKLSAgICAg
ICAgdGhpcy5fcmF3U291cmNlQ29kZXMucHVzaChyYXdTb3VyY2VDb2RlKTsKLSAgICAgICAgdGhp
cy5fYmluZFNjcmlwdFRvUmF3U291cmNlQ29kZShzY3JpcHQsIHJhd1NvdXJjZUNvZGUpOwotCi0g
ICAgICAgIGlmIChpc0lubGluZVNjcmlwdCkKLSAgICAgICAgICAgIHRoaXMuX3Jhd1NvdXJjZUNv
ZGVGb3JEb2N1bWVudFVSTFtzY3JpcHQuc291cmNlVVJMXSA9IHJhd1NvdXJjZUNvZGU7Ci0KLSAg
ICAgICAgaWYgKHJhd1NvdXJjZUNvZGUudWlTb3VyY2VDb2RlTGlzdCgpLmxlbmd0aCkKLSAgICAg
ICAgICAgIHRoaXMuX3VpU291cmNlQ29kZUxpc3RDaGFuZ2VkKHJhd1NvdXJjZUNvZGUsIFtdLCBy
YXdTb3VyY2VDb2RlLnVpU291cmNlQ29kZUxpc3QoKSk7Ci0gICAgICAgIHJhd1NvdXJjZUNvZGUu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5FdmVudHMuVUlTb3Vy
Y2VDb2RlTGlzdENoYW5nZWQsIHRoaXMuX2hhbmRsZVVJU291cmNlQ29kZUxpc3RDaGFuZ2VkLCB0
aGlzKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2Ny
aXB0fSBzY3JpcHQKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlfSBy
YXdTb3VyY2VDb2RlCi0gICAgICovCi0gICAgX2JpbmRTY3JpcHRUb1Jhd1NvdXJjZUNvZGU6IGZ1
bmN0aW9uKHNjcmlwdCwgcmF3U291cmNlQ29kZSkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3Jhd1Nv
dXJjZUNvZGVGb3JTY3JpcHRJZFtzY3JpcHQuc2NyaXB0SWRdID0gcmF3U291cmNlQ29kZTsKLSAg
ICAgICAgdGhpcy5fcmF3U291cmNlQ29kZUZvclVSTFtzY3JpcHQuc291cmNlVVJMXSA9IHJhd1Nv
dXJjZUNvZGU7Ci0gICAgfSwKLQotICAgIC8qKgogICAgICAqIEByZXR1cm4ge0FycmF5LjxXZWJJ
bnNwZWN0b3IuVUlTb3VyY2VDb2RlPn0KICAgICAgKi8KICAgICB1aVNvdXJjZUNvZGVzOiBmdW5j
dGlvbigpCiAgICAgewotICAgICAgICB2YXIgcmVzdWx0ID0gW107Ci0gICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgdGhpcy5fcmF3U291cmNlQ29kZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAg
ICAgIHZhciB1aVNvdXJjZUNvZGVMaXN0ID0gdGhpcy5fcmF3U291cmNlQ29kZXNbaV0udWlTb3Vy
Y2VDb2RlTGlzdCgpOwotICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB1aVNvdXJjZUNv
ZGVMaXN0Lmxlbmd0aDsgKytqKQotICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHVpU291cmNl
Q29kZUxpc3Rbal0pOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAg
IHJldHVybiB0aGlzLl9zY3JpcHRNYXBwaW5nLnVpU291cmNlQ29kZUxpc3QoKTsKICAgICB9LAog
CiAgICAgLyoqCkBAIC0yMTIsMjIgKzE1Miw4IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNl
bnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBfaGFuZGxlVUlTb3VyY2VD
b2RlTGlzdENoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIHJhd1Nv
dXJjZUNvZGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlfSAqLyBldmVu
dC50YXJnZXQ7Ci0gICAgICAgIHZhciBvbGRVSVNvdXJjZUNvZGVMaXN0ID0gLyoqIEB0eXBlIHtB
cnJheS48V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZT59ICovIGV2ZW50LmRhdGFbIm9sZFVJU291
cmNlQ29kZUxpc3QiXTsKLSAgICAgICAgdGhpcy5fdWlTb3VyY2VDb2RlTGlzdENoYW5nZWQocmF3
U291cmNlQ29kZSwgb2xkVUlTb3VyY2VDb2RlTGlzdCwgcmF3U291cmNlQ29kZS51aVNvdXJjZUNv
ZGVMaXN0KCkpOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5SYXdTb3VyY2VDb2RlfSByYXdTb3VyY2VDb2RlCi0gICAgICogQHBhcmFtIHtBcnJheS48V2Vi
SW5zcGVjdG9yLlVJU291cmNlQ29kZT59IHJlbW92ZWRJdGVtcwotICAgICAqIEBwYXJhbSB7QXJy
YXkuPFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGU+fSBhZGRlZEl0ZW1zCi0gICAgICovCi0gICAg
X3VpU291cmNlQ29kZUxpc3RDaGFuZ2VkOiBmdW5jdGlvbihyYXdTb3VyY2VDb2RlLCByZW1vdmVk
SXRlbXMsIGFkZGVkSXRlbXMpCi0gICAgewotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJl
bW92ZWRJdGVtcy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIHRoaXMuX3Jhd1NvdXJjZUNvZGVG
b3JVSVNvdXJjZUNvZGUucmVtb3ZlKHJlbW92ZWRJdGVtc1tpXSk7Ci0gICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgYWRkZWRJdGVtcy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIHRoaXMuX3Jh
d1NvdXJjZUNvZGVGb3JVSVNvdXJjZUNvZGUucHV0KGFkZGVkSXRlbXNbaV0sIHJhd1NvdXJjZUNv
ZGUpOworICAgICAgICB2YXIgcmVtb3ZlZEl0ZW1zID0gLyoqIEB0eXBlIHtBcnJheS48V2ViSW5z
cGVjdG9yLlVJU291cmNlQ29kZT59ICovIGV2ZW50LmRhdGFbInJlbW92ZWRJdGVtcyJdOworICAg
ICAgICB2YXIgYWRkZWRJdGVtcyA9IC8qKiBAdHlwZSB7QXJyYXkuPFdlYkluc3BlY3Rvci5VSVNv
dXJjZUNvZGU+fSAqLyBldmVudC5kYXRhWyJhZGRlZEl0ZW1zIl07CiAKICAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCByZW1vdmVkSXRlbXMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIHZh
ciBicmVha3BvaW50cyA9IHRoaXMuX2JyZWFrcG9pbnRNYW5hZ2VyLmJyZWFrcG9pbnRzRm9yVUlT
b3VyY2VDb2RlKHJlbW92ZWRJdGVtc1tpXSk7CkBAIC0zNDcsMjIgKzI3Myw4IEBAIFdlYkluc3Bl
Y3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAg
ICBzZXRGb3JtYXRTb3VyY2U6IGZ1bmN0aW9uKGZvcm1hdFNvdXJjZSkKICAgICB7Ci0gICAgICAg
IGlmICh0aGlzLl9mb3JtYXRTb3VyY2UgPT09IGZvcm1hdFNvdXJjZSkKLSAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICB0aGlzLl9mb3JtYXRTb3VyY2UgPSBmb3JtYXRTb3VyY2U7CiAgICAg
ICAgIHRoaXMuX2JyZWFrcG9pbnRNYW5hZ2VyLnJlc2V0KCk7Ci0gICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgdGhpcy5fcmF3U291cmNlQ29kZXMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICB0
aGlzLl9yYXdTb3VyY2VDb2Rlc1tpXS5zZXRGb3JtYXR0ZWQodGhpcy5fZm9ybWF0U291cmNlKTsK
LSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtEZWJ1Z2dlckFnZW50LkxvY2F0aW9u
fSByYXdMb2NhdGlvbgotICAgICAqLwotICAgIF9mb3JjZVVwZGF0ZVNvdXJjZU1hcHBpbmc6IGZ1
bmN0aW9uKHJhd0xvY2F0aW9uKQotICAgIHsKLSAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSB0
aGlzLl9yYXdTb3VyY2VDb2RlRm9yU2NyaXB0SWRbcmF3TG9jYXRpb24uc2NyaXB0SWRdOwotICAg
ICAgICByYXdTb3VyY2VDb2RlLmZvcmNlVXBkYXRlU291cmNlTWFwcGluZygpOworICAgICAgICB0
aGlzLl9zY3JpcHRNYXBwaW5nLnNldEZvcm1hdFNvdXJjZShmb3JtYXRTb3VyY2UpOwogICAgIH0s
CiAKICAgICAvKioKQEAgLTU3MCw3ICs0ODIsNyBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVz
ZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
Y2FsbEZyYW1lcy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgdmFyIGNhbGxGcmFtZSA9IGNh
bGxGcmFtZXNbaV07CiAgICAgICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwu
c2NyaXB0Rm9yU291cmNlSUQoY2FsbEZyYW1lLmxvY2F0aW9uLnNjcmlwdElkKSkKLSAgICAgICAg
ICAgICAgICB0aGlzLl9wcmVzZW50YXRpb25DYWxsRnJhbWVzLnB1c2gobmV3IFdlYkluc3BlY3Rv
ci5QcmVzZW50YXRpb25DYWxsRnJhbWUoY2FsbEZyYW1lLCBpLCB0aGlzKSk7CisgICAgICAgICAg
ICAgICAgdGhpcy5fcHJlc2VudGF0aW9uQ2FsbEZyYW1lcy5wdXNoKG5ldyBXZWJJbnNwZWN0b3Iu
UHJlc2VudGF0aW9uQ2FsbEZyYW1lKGNhbGxGcmFtZSwgaSwgdGhpcy5fc2NyaXB0TWFwcGluZykp
OwogICAgICAgICB9CiAgICAgICAgIHZhciBkZXRhaWxzID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2Vy
TW9kZWwuZGVidWdnZXJQYXVzZWREZXRhaWxzOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMu
RGVidWdnZXJQYXVzZWQsIHsgY2FsbEZyYW1lczogdGhpcy5fcHJlc2VudGF0aW9uQ2FsbEZyYW1l
cywgZGV0YWlsczogZGV0YWlscyB9KTsKQEAgLTU5OSw3ICs1MTEsNyBAQCBXZWJJbnNwZWN0b3Iu
RGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICghdGhp
cy5fc2VsZWN0ZWRDYWxsRnJhbWUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdGhp
cy5fZm9yY2VVcGRhdGVTb3VyY2VNYXBwaW5nKGNhbGxGcmFtZS5fY2FsbEZyYW1lLmxvY2F0aW9u
KTsKKyAgICAgICAgdGhpcy5fc2NyaXB0TWFwcGluZy5mb3JjZVVwZGF0ZVNvdXJjZU1hcHBpbmco
Y2FsbEZyYW1lLl9jYWxsRnJhbWUubG9jYXRpb24pOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVu
dHMuQ2FsbEZyYW1lU2VsZWN0ZWQsIGNhbGxGcmFtZSk7CiAKICAgICAgICAgZnVuY3Rpb24gdXBk
YXRlRXhlY3V0aW9uTGluZSh1aUxvY2F0aW9uKQpAQCAtNjg4LDE2ICs2MDAsNyBAQCBXZWJJbnNw
ZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAKICAgICBfZGVi
dWdnZXJSZXNldDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCB0aGlzLl9yYXdTb3VyY2VDb2Rlcy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFyIHJh
d1NvdXJjZUNvZGUgPSB0aGlzLl9yYXdTb3VyY2VDb2Rlc1tpXTsKLSAgICAgICAgICAgIHRoaXMu
X3VpU291cmNlQ29kZUxpc3RDaGFuZ2VkKHJhd1NvdXJjZUNvZGUsIHJhd1NvdXJjZUNvZGUudWlT
b3VyY2VDb2RlTGlzdCgpLCBbXSk7Ci0gICAgICAgICAgICByYXdTb3VyY2VDb2RlLnJlbW92ZUFs
bExpc3RlbmVycygpOwotICAgICAgICB9Ci0gICAgICAgIHRoaXMuX3Jhd1NvdXJjZUNvZGVzID0g
W107Ci0gICAgICAgIHRoaXMuX3Jhd1NvdXJjZUNvZGVGb3JTY3JpcHRJZCA9IHt9OwotICAgICAg
ICB0aGlzLl9yYXdTb3VyY2VDb2RlRm9yVVJMID0ge307Ci0gICAgICAgIHRoaXMuX3Jhd1NvdXJj
ZUNvZGVGb3JEb2N1bWVudFVSTCA9IHt9OwotICAgICAgICB0aGlzLl9yYXdTb3VyY2VDb2RlRm9y
VUlTb3VyY2VDb2RlLmNsZWFyKCk7CisgICAgICAgIHRoaXMuX3NjcmlwdE1hcHBpbmcucmVzZXQo
KTsKICAgICAgICAgdGhpcy5fcHJlc2VudGF0aW9uQ2FsbEZyYW1lcyA9IFtdOwogICAgICAgICB0
aGlzLl9zZWxlY3RlZENhbGxGcmFtZSA9IG51bGw7CiAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRN
YW5hZ2VyLmRlYnVnZ2VyUmVzZXQoKTsKQEAgLTcwOCw3ICs2MTEsNyBAQCBXZWJJbnNwZWN0b3Iu
RGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgfQogfQogCi1XZWJJ
bnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX19wcm90b19fID0g
V2ViSW5zcGVjdG9yLlNjcmlwdE1hcHBpbmcucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5P
YmplY3QucHJvdG90eXBlOwogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRNYXBwaW5nLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRNYXBwaW5nLmpzCmluZGV4IDNmYmRl
MmI1ODA1ODgxNWMzMzMxMWJmODA3Y2EyZDNkZjY3YmUwZTYuLjUwNWE0ODU0ZGU5YzgzYTc2OWUz
MzBkNGJlNmQ1ODg2ZDU2YTQwOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvU2NyaXB0TWFwcGluZy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1NjcmlwdE1hcHBpbmcuanMKQEAgLTY5LDMgKzY5LDE3NSBAQCBXZWJJbnNw
ZWN0b3IuU2NyaXB0TWFwcGluZy5wcm90b3R5cGUgPSB7CiB9CiAKIFdlYkluc3BlY3Rvci5TY3Jp
cHRNYXBwaW5nLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3Rv
dHlwZTsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3Iu
U2NyaXB0TWFwcGluZ30KKyAqLworV2ViSW5zcGVjdG9yLlNjcmlwdE1hcHBpbmdJbXBsID0gZnVu
Y3Rpb24oKQoreworICAgIHRoaXMuX3Jhd1NvdXJjZUNvZGVzID0gW107CisgICAgdGhpcy5fcmF3
U291cmNlQ29kZUZvclNjcmlwdElkID0ge307CisgICAgdGhpcy5fcmF3U291cmNlQ29kZUZvclVS
TCA9IHt9OworICAgIHRoaXMuX3Jhd1NvdXJjZUNvZGVGb3JEb2N1bWVudFVSTCA9IHt9OworICAg
IHRoaXMuX3Jhd1NvdXJjZUNvZGVGb3JVSVNvdXJjZUNvZGUgPSBuZXcgTWFwKCk7CisgICAgdGhp
cy5fZm9ybWF0dGVyID0gbmV3IFdlYkluc3BlY3Rvci5TY3JpcHRGb3JtYXR0ZXIoKTsKKyAgICB0
aGlzLl9mb3JtYXRTb3VyY2UgPSBmYWxzZTsKK30KKworV2ViSW5zcGVjdG9yLlNjcmlwdE1hcHBp
bmdJbXBsLnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0RlYnVnZ2VyQWdl
bnQuTG9jYXRpb259IHJhd0xvY2F0aW9uCisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlVJ
TG9jYXRpb259CisgICAgICovCisgICAgcmF3TG9jYXRpb25Ub1VJTG9jYXRpb246IGZ1bmN0aW9u
KHJhd0xvY2F0aW9uKQorICAgIHsKKyAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSB0aGlzLl9y
YXdTb3VyY2VDb2RlRm9yU2NyaXB0SWRbcmF3TG9jYXRpb24uc2NyaXB0SWRdOworICAgICAgICBy
ZXR1cm4gcmF3U291cmNlQ29kZS5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbihyYXdMb2NhdGlvbik7
CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNl
Q29kZX0gdWlTb3VyY2VDb2RlCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGxpbmVOdW1iZXIKKyAg
ICAgKiBAcGFyYW0ge251bWJlcn0gY29sdW1uTnVtYmVyCisgICAgICogQHJldHVybiB7RGVidWdn
ZXJBZ2VudC5Mb2NhdGlvbn0KKyAgICAgKi8KKyAgICB1aUxvY2F0aW9uVG9SYXdMb2NhdGlvbjog
ZnVuY3Rpb24odWlTb3VyY2VDb2RlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCisgICAgewor
ICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IHRoaXMuX3Jhd1NvdXJjZUNvZGVGb3JVSVNvdXJj
ZUNvZGUuZ2V0KHVpU291cmNlQ29kZSk7CisgICAgICAgIHJldHVybiByYXdTb3VyY2VDb2RlLnVp
TG9jYXRpb25Ub1Jhd0xvY2F0aW9uKHVpU291cmNlQ29kZSwgbGluZU51bWJlciwgY29sdW1uTnVt
YmVyKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtEZWJ1Z2dlckFnZW50Lkxv
Y2F0aW9ufSByYXdMb2NhdGlvbgorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oV2ViSW5zcGVjdG9y
LlVJTG9jYXRpb24pfSB1cGRhdGVEZWxlZ2F0ZQorICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rv
ci5SYXdTb3VyY2VDb2RlLkxpdmVMb2NhdGlvbn0KKyAgICAgKi8KKyAgICBjcmVhdGVMaXZlTG9j
YXRpb246IGZ1bmN0aW9uKHJhd0xvY2F0aW9uLCB1cGRhdGVEZWxlZ2F0ZSkKKyAgICB7CisgICAg
ICAgIHZhciByYXdTb3VyY2VDb2RlID0gdGhpcy5fcmF3U291cmNlQ29kZUZvclNjcmlwdElkW3Jh
d0xvY2F0aW9uLnNjcmlwdElkXTsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUmF3
U291cmNlQ29kZS5MaXZlTG9jYXRpb24ocmF3U291cmNlQ29kZSwgcmF3TG9jYXRpb24sIHVwZGF0
ZURlbGVnYXRlKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7QXJyYXkuPFdl
Ykluc3BlY3Rvci5VSVNvdXJjZUNvZGU+fQorICAgICAqLworICAgIHVpU291cmNlQ29kZUxpc3Q6
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciByZXN1bHQgPSBbXTsKKyAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9yYXdTb3VyY2VDb2Rlcy5sZW5ndGg7ICsraSkgeworICAg
ICAgICAgICAgdmFyIHVpU291cmNlQ29kZUxpc3QgPSB0aGlzLl9yYXdTb3VyY2VDb2Rlc1tpXS51
aVNvdXJjZUNvZGVMaXN0KCk7CisgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHVpU291
cmNlQ29kZUxpc3QubGVuZ3RoOyArK2opCisgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godWlT
b3VyY2VDb2RlTGlzdFtqXSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2NyaXB0fSBzY3Jp
cHQKKyAgICAgKi8KKyAgICBhZGRTY3JpcHQ6IGZ1bmN0aW9uKHNjcmlwdCkKKyAgICB7CisgICAg
ICAgIHZhciByZXNvdXJjZSA9IG51bGw7CisgICAgICAgIHZhciBpc0lubGluZVNjcmlwdCA9IGZh
bHNlOworICAgICAgICBpZiAoc2NyaXB0LmlzSW5saW5lU2NyaXB0KCkpIHsKKyAgICAgICAgICAg
IHJlc291cmNlID0gV2ViSW5zcGVjdG9yLm5ldHdvcmtNYW5hZ2VyLmluZmxpZ2h0UmVzb3VyY2VG
b3JVUkwoc2NyaXB0LnNvdXJjZVVSTCkgfHwgV2ViSW5zcGVjdG9yLnJlc291cmNlRm9yVVJMKHNj
cmlwdC5zb3VyY2VVUkwpOworICAgICAgICAgICAgaWYgKHJlc291cmNlICYmIHJlc291cmNlLnR5
cGUgPT09IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLkRvY3VtZW50KSB7CisgICAgICAgICAg
ICAgICAgaXNJbmxpbmVTY3JpcHQgPSB0cnVlOworICAgICAgICAgICAgICAgIHZhciByYXdTb3Vy
Y2VDb2RlID0gdGhpcy5fcmF3U291cmNlQ29kZUZvckRvY3VtZW50VVJMW3NjcmlwdC5zb3VyY2VV
UkxdOworICAgICAgICAgICAgICAgIGlmIChyYXdTb3VyY2VDb2RlKSB7CisgICAgICAgICAgICAg
ICAgICAgIHJhd1NvdXJjZUNvZGUuYWRkU2NyaXB0KHNjcmlwdCk7CisgICAgICAgICAgICAgICAg
ICAgIHRoaXMuX2JpbmRTY3JpcHRUb1Jhd1NvdXJjZUNvZGUoc2NyaXB0LCByYXdTb3VyY2VDb2Rl
KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHZhciBjb21waWxlclNvdXJjZU1hcHBpbmcg
PSBudWxsOworICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNvdXJjZU1hcHNFbmFi
bGVkLmdldCgpICYmIHNjcmlwdC5zb3VyY2VNYXBVUkwpCisgICAgICAgICAgICBjb21waWxlclNv
dXJjZU1hcHBpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLkNsb3N1cmVDb21waWxlclNvdXJjZU1hcHBp
bmcoc2NyaXB0LnNvdXJjZU1hcFVSTCwgc2NyaXB0LnNvdXJjZVVSTCk7CisKKyAgICAgICAgdmFy
IHJhd1NvdXJjZUNvZGUgPSBuZXcgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUoc2NyaXB0LnNj
cmlwdElkLCBzY3JpcHQsIHJlc291cmNlLCB0aGlzLl9mb3JtYXR0ZXIsIHRoaXMuX2Zvcm1hdFNv
dXJjZSwgY29tcGlsZXJTb3VyY2VNYXBwaW5nKTsKKyAgICAgICAgdGhpcy5fcmF3U291cmNlQ29k
ZXMucHVzaChyYXdTb3VyY2VDb2RlKTsKKyAgICAgICAgdGhpcy5fYmluZFNjcmlwdFRvUmF3U291
cmNlQ29kZShzY3JpcHQsIHJhd1NvdXJjZUNvZGUpOworCisgICAgICAgIGlmIChpc0lubGluZVNj
cmlwdCkKKyAgICAgICAgICAgIHRoaXMuX3Jhd1NvdXJjZUNvZGVGb3JEb2N1bWVudFVSTFtzY3Jp
cHQuc291cmNlVVJMXSA9IHJhd1NvdXJjZUNvZGU7CisKKyAgICAgICAgaWYgKHJhd1NvdXJjZUNv
ZGUudWlTb3VyY2VDb2RlTGlzdCgpLmxlbmd0aCkKKyAgICAgICAgICAgIHRoaXMuX3VpU291cmNl
Q29kZUxpc3RDaGFuZ2VkKHJhd1NvdXJjZUNvZGUsIFtdLCByYXdTb3VyY2VDb2RlLnVpU291cmNl
Q29kZUxpc3QoKSk7CisgICAgICAgIHJhd1NvdXJjZUNvZGUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuUmF3U291cmNlQ29kZS5FdmVudHMuVUlTb3VyY2VDb2RlTGlzdENoYW5nZWQsIHRo
aXMuX2hhbmRsZVVJU291cmNlQ29kZUxpc3RDaGFuZ2VkLCB0aGlzKTsKKyAgICB9LAorCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRXZlbnR9IGV2ZW50CisgICAgICovCisg
ICAgX2hhbmRsZVVJU291cmNlQ29kZUxpc3RDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKKyAgICB7
CisgICAgICAgIHZhciByYXdTb3VyY2VDb2RlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuUmF3
U291cmNlQ29kZX0gKi8gZXZlbnQudGFyZ2V0OworICAgICAgICB2YXIgb2xkVUlTb3VyY2VDb2Rl
TGlzdCA9IC8qKiBAdHlwZSB7QXJyYXkuPFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGU+fSAqLyBl
dmVudC5kYXRhWyJvbGRVSVNvdXJjZUNvZGVMaXN0Il07CisgICAgICAgIHRoaXMuX3VpU291cmNl
Q29kZUxpc3RDaGFuZ2VkKHJhd1NvdXJjZUNvZGUsIG9sZFVJU291cmNlQ29kZUxpc3QsIHJhd1Nv
dXJjZUNvZGUudWlTb3VyY2VDb2RlTGlzdCgpKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICog
QHBhcmFtIHtXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZX0gcmF3U291cmNlQ29kZQorICAgICAq
IEBwYXJhbSB7QXJyYXkuPFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGU+fSByZW1vdmVkSXRlbXMK
KyAgICAgKiBAcGFyYW0ge0FycmF5LjxXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlPn0gYWRkZWRJ
dGVtcworICAgICAqLworICAgIF91aVNvdXJjZUNvZGVMaXN0Q2hhbmdlZDogZnVuY3Rpb24ocmF3
U291cmNlQ29kZSwgcmVtb3ZlZEl0ZW1zLCBhZGRlZEl0ZW1zKQorICAgIHsKKyAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCByZW1vdmVkSXRlbXMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICB0
aGlzLl9yYXdTb3VyY2VDb2RlRm9yVUlTb3VyY2VDb2RlLnJlbW92ZShyZW1vdmVkSXRlbXNbaV0p
OworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFkZGVkSXRlbXMubGVuZ3RoOyArK2kpCisg
ICAgICAgICAgICB0aGlzLl9yYXdTb3VyY2VDb2RlRm9yVUlTb3VyY2VDb2RlLnB1dChhZGRlZEl0
ZW1zW2ldLCByYXdTb3VyY2VDb2RlKTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV2ViSW5zcGVjdG9yLlNjcmlwdE1hcHBpbmcuRXZlbnRzLlVJU291cmNlQ29kZUxpc3RD
aGFuZ2VkLCB7IHJlbW92ZWRJdGVtczogcmVtb3ZlZEl0ZW1zLCBhZGRlZEl0ZW1zOiBhZGRlZEl0
ZW1zIH0pOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5T
Y3JpcHR9IHNjcmlwdAorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGV9
IHJhd1NvdXJjZUNvZGUKKyAgICAgKi8KKyAgICBfYmluZFNjcmlwdFRvUmF3U291cmNlQ29kZTog
ZnVuY3Rpb24oc2NyaXB0LCByYXdTb3VyY2VDb2RlKQorICAgIHsKKyAgICAgICAgdGhpcy5fcmF3
U291cmNlQ29kZUZvclNjcmlwdElkW3NjcmlwdC5zY3JpcHRJZF0gPSByYXdTb3VyY2VDb2RlOwor
ICAgICAgICB0aGlzLl9yYXdTb3VyY2VDb2RlRm9yVVJMW3NjcmlwdC5zb3VyY2VVUkxdID0gcmF3
U291cmNlQ29kZTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtib29sZWFufSBm
b3JtYXRTb3VyY2UKKyAgICAgKi8KKyAgICBzZXRGb3JtYXRTb3VyY2U6IGZ1bmN0aW9uKGZvcm1h
dFNvdXJjZSkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9mb3JtYXRTb3VyY2UgPT09IGZvcm1h
dFNvdXJjZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9mb3JtYXRTb3Vy
Y2UgPSBmb3JtYXRTb3VyY2U7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fcmF3
U291cmNlQ29kZXMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICB0aGlzLl9yYXdTb3VyY2VDb2Rl
c1tpXS5zZXRGb3JtYXR0ZWQodGhpcy5fZm9ybWF0U291cmNlKTsKKyAgICB9LAorCisgICAgLyoq
CisgICAgICogQHBhcmFtIHtEZWJ1Z2dlckFnZW50LkxvY2F0aW9ufSByYXdMb2NhdGlvbgorICAg
ICAqLworICAgIGZvcmNlVXBkYXRlU291cmNlTWFwcGluZzogZnVuY3Rpb24ocmF3TG9jYXRpb24p
CisgICAgeworICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IHRoaXMuX3Jhd1NvdXJjZUNvZGVG
b3JTY3JpcHRJZFtyYXdMb2NhdGlvbi5zY3JpcHRJZF07CisgICAgICAgIHJhd1NvdXJjZUNvZGUu
Zm9yY2VVcGRhdGVTb3VyY2VNYXBwaW5nKCk7CisgICAgfSwKKworICAgIHJlc2V0OiBmdW5jdGlv
bigpCisgICAgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3Jhd1NvdXJjZUNv
ZGVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IHRoaXMu
X3Jhd1NvdXJjZUNvZGVzW2ldOworICAgICAgICAgICAgdGhpcy5fdWlTb3VyY2VDb2RlTGlzdENo
YW5nZWQocmF3U291cmNlQ29kZSwgcmF3U291cmNlQ29kZS51aVNvdXJjZUNvZGVMaXN0KCksIFtd
KTsKKyAgICAgICAgICAgIHJhd1NvdXJjZUNvZGUucmVtb3ZlQWxsTGlzdGVuZXJzKCk7CisgICAg
ICAgIH0KKyAgICAgICAgdGhpcy5fcmF3U291cmNlQ29kZXMgPSBbXTsKKyAgICAgICAgdGhpcy5f
cmF3U291cmNlQ29kZUZvclNjcmlwdElkID0ge307CisgICAgICAgIHRoaXMuX3Jhd1NvdXJjZUNv
ZGVGb3JVUkwgPSB7fTsKKyAgICAgICAgdGhpcy5fcmF3U291cmNlQ29kZUZvckRvY3VtZW50VVJM
ID0ge307CisgICAgICAgIHRoaXMuX3Jhd1NvdXJjZUNvZGVGb3JVSVNvdXJjZUNvZGUuY2xlYXIo
KTsKKyAgICB9Cit9CisKK1dlYkluc3BlY3Rvci5TY3JpcHRNYXBwaW5nSW1wbC5wcm90b3R5cGUu
X19wcm90b19fID0gV2ViSW5zcGVjdG9yLlNjcmlwdE1hcHBpbmcucHJvdG90eXBlOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDQyNWRkOTEzY2RjNTNlYjQ3NTkzN2Y4YzZjZWZlMmYwMmE3Zjg3MTIuLjA0NmYzMTQ1M2E2NjJi
Y2E0NjM5NTVmMjkyYmFhMmY1OTZjMjZkZWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNiBAQAogMjAxMi0w
My0wNiAgUGF2ZWwgUG9kaXZpbG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KIAorICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBleHRyYWN0IHNvdXJjZSBtYXBwaW5nIGxvZ2ljIGZyb20gRGVidWdn
ZXJQcmVzZW50YXRpb25Nb2RlbCB0byBTY3JpcHRNYXBwaW5nSW1wbC4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwNDEyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvYnJl
YWtwb2ludC1tYW5hZ2VyLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL2NhbGxz
dGFjay1wbGFjYXJkcy1kaXNjYXJkZWQuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdn
ZXIvbGlua2lmaWVyLmh0bWw6CisKKzIwMTItMDMtMDYgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2
aWxvdkBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgV2ViIEluc3BlY3RvcjogcHJlcGFyZSBmb3Ig
ZXh0cmFjdGluZyBTY3JpcHRNYXBwaW5nIGltcGxlbWVudGF0aW9uIGZyb20gRGVidWdnZXJQcmVz
ZW50YXRpb25Nb2RlbC4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTgwMzk2CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9jYWxsc3RhY2stcGxhY2FyZHMtZGlzY2FyZGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXIvY2FsbHN0YWNrLXBsYWNhcmRzLWRpc2NhcmRlZC5odG1sCmluZGV4IDQ0NjM4
NGNmMjdkN2QzMTM3MTFmNjA1N2U0YzNhN2EwZjZmNjNiNmIuLjEzYjk1MDQwNjY5YmFhZGM5MWY5
MGQ5NDA3YzA0NWYyMDc2Y2E0MDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9jYWxsc3RhY2stcGxhY2FyZHMtZGlzY2FyZGVkLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2NhbGxzdGFjay1wbGFjYXJkcy1kaXNjYXJkZWQuaHRtbApA
QCAtMjEsNyArMjEsNyBAQCB2YXIgdGVzdCA9IGZ1bmN0aW9uKCkKICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiUmVjZWl2ZWQgRGVidWdnZXJQYXVzZWQgZXZlbnQuIik7
CiAgICAgICAgICAgICAgICAgdmFyIGNhbGxGcmFtZSA9IGV2ZW50LmRhdGEuY2FsbEZyYW1lc1sw
XTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRnVuY3Rpb24gbmFt
ZTogIiArIGNhbGxGcmFtZS5fY2FsbEZyYW1lLmZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgICAgICAg
ICAgdmFyIHJhd1NvdXJjZUNvZGUgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVzZW50YXRpb25N
b2RlbC5fcmF3U291cmNlQ29kZUZvclNjcmlwdElkW2NhbGxGcmFtZS5fY2FsbEZyYW1lLmxvY2F0
aW9uLnNjcmlwdElkXTsKKyAgICAgICAgICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IFdlYklu
c3BlY3Rvci5kZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLl9zY3JpcHRNYXBwaW5nLl9yYXdTb3Vy
Y2VDb2RlRm9yU2NyaXB0SWRbY2FsbEZyYW1lLl9jYWxsRnJhbWUubG9jYXRpb24uc2NyaXB0SWRd
OwogICAgICAgICAgICAgICAgIHZhciBsaXN0ZW5lcnMgPSByYXdTb3VyY2VDb2RlLl9saXN0ZW5l
cnNbV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUuRXZlbnRzLlVJU291cmNlQ29kZUxpc3RDaGFu
Z2VkXTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiTGlzdGVuZXJz
IGxlbmd0aDogIiArIGxpc3RlbmVycy5sZW5ndGgpOwogICAgICAgICAgICAgICAgIGlmIChwcmV2
aW91c0xpc3RlbmVyTGVuZ3RoICE9PSB1bmRlZmluZWQgJiYgbGlzdGVuZXJzLmxlbmd0aCAhPT0g
cHJldmlvdXNMaXN0ZW5lckxlbmd0aCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9saW5raWZpZXIuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9saW5raWZpZXIuaHRtbAppbmRleCA5Yjc5MTEzYTcyM2U3YjhjYjE4NTAwNThjYWU5ODU4MmFj
NmQ0ZGM4Li40MGYwMDY3YTVkYTQ1Yzc4YWM3OWM1NmU1YjUwMGZjMTk1YTExODUwIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvbGlua2lmaWVyLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2xpbmtpZmllci5odG1sCkBAIC0zNCw3ICsz
NCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIGZ1bmN0aW9uIGRlYnVnZ2VyVGVzdCgpCiAgICAg
ewogICAgICAgICBsaW5raWZpZXIgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVzZW50YXRpb25N
b2RlbC5jcmVhdGVMaW5raWZpZXIoKTsKLSAgICAgICAgcmF3U291cmNlQ29kZSA9IFdlYkluc3Bl
Y3Rvci5kZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLl9yYXdTb3VyY2VDb2RlRm9yVVJMW1dlYklu
c3BlY3Rvci5pbnNwZWN0ZWRQYWdlVVJMXTsKKyAgICAgICAgcmF3U291cmNlQ29kZSA9IFdlYklu
c3BlY3Rvci5kZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLl9zY3JpcHRNYXBwaW5nLl9yYXdTb3Vy
Y2VDb2RlRm9yVVJMW1dlYkluc3BlY3Rvci5pbnNwZWN0ZWRQYWdlVVJMXTsKIAogICAgICAgICB2
YXIgY291bnQxID0gbGlzdGVuZXJzQ291bnQocmF3U291cmNlQ29kZSk7CiAgICAgICAgIGxpbmsg
PSBsaW5raWZpZXIubGlua2lmeUxvY2F0aW9uKFdlYkluc3BlY3Rvci5pbnNwZWN0ZWRQYWdlVVJM
LCAyMCwgMCwgImR1bW15LWNsYXNzIik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130574</attachid>
            <date>2012-03-07 02:08:14 -0800</date>
            <delta_ts>2012-03-07 02:20:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80412-20120307140811.patch</filename>
            <type>text/plain</type>
            <size>24364</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5OTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzY3NjllNmMwMThjMTFj
NGMxMWFmYWExMzQ4NTRjYThmYTIwYTY5NS4uYTZlYjY1MWU0MDFkZTI2M2JiODhmMmEwNGI3Zjk2
MWNlZDEwOTk0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI3IEBACiAyMDEyLTAzLTA2ICBQYXZl
bCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IGV4dHJhY3Qgc291cmNlIG1hcHBpbmcgbG9naWMgZnJvbSBEZWJ1Z2dlclByZXNlbnRh
dGlvbk1vZGVsIHRvIFNjcmlwdE1hcHBpbmdJbXBsLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA0MTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvY29tcGlsZS1mcm9u
dC1lbmQuc2g6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRNYXBwaW5nLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdE1hcHBpbmdJbXBsKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5TY3JpcHRNYXBwaW5nSW1wbC5wcm90b3R5cGUucmF3TG9jYXRpb25Ub1VJTG9j
YXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdE1hcHBpbmdJbXBsLnByb3RvdHlw
ZS5jcmVhdGVMaXZlTG9jYXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdE1hcHBp
bmdJbXBsLnByb3RvdHlwZS51aVNvdXJjZUNvZGVMaXN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5TY3JpcHRNYXBwaW5nSW1wbC5wcm90b3R5cGUuX2hhbmRsZVVJU291cmNlQ29kZUxpc3RDaGFu
Z2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRNYXBwaW5nSW1wbC5wcm90b3R5cGUu
X3VpU291cmNlQ29kZUxpc3RDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRN
YXBwaW5nSW1wbC5wcm90b3R5cGUuX2JpbmRTY3JpcHRUb1Jhd1NvdXJjZUNvZGUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlNjcmlwdE1hcHBpbmdJbXBsLnByb3RvdHlwZS5zZXRGb3JtYXRTb3Vy
Y2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdE1hcHBpbmdJbXBsLnByb3RvdHlwZS5m
b3JjZVVwZGF0ZVNvdXJjZU1hcHBpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdE1h
cHBpbmdJbXBsLnByb3RvdHlwZS5yZXNldCk6CisKKzIwMTItMDMtMDYgIFBhdmVsIFBvZGl2aWxv
diAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgV2ViIEluc3BlY3RvcjogcHJl
cGFyZSBmb3IgZXh0cmFjdGluZyBTY3JpcHRNYXBwaW5nIGltcGxlbWVudGF0aW9uIGZyb20gRGVi
dWdnZXJQcmVzZW50YXRpb25Nb2RlbC4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTgwMzk2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludE1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRNYW5hZ2VyLmpzCmluZGV4IDMyNDg4MjhiM2VhOTgy
MmMyYjc3NzRhN2YxNDE5MGVkOTUxYjYwNzIuLjI4NGE3M2UxNTBhMTVkMzNiZTI3MjRkZTA1MjUy
NDY2Nzg2MjMyOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvQnJlYWtwb2ludE1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9CcmVha3BvaW50TWFuYWdlci5qcwpAQCAtMzQsNyArMzQsNyBAQAogICogQHBhcmFt
IHtmdW5jdGlvbihXZWJJbnNwZWN0b3IuQnJlYWtwb2ludCl9IGJyZWFrcG9pbnRBZGRlZERlbGVn
YXRlCiAgKiBAcGFyYW0ge2Z1bmN0aW9uKFdlYkluc3BlY3Rvci5CcmVha3BvaW50KX0gYnJlYWtw
b2ludFJlbW92ZWREZWxlZ2F0ZQogICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2Rl
bH0gZGVidWdnZXJNb2RlbAotICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2NyaXB0TWFwcGluZ30g
c2NyaXB0TWFwcGluZworICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuTWFpblNjcmlwdE1hcHBpbmd9
IHNjcmlwdE1hcHBpbmcKICAqLwogV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyID0gZnVu
Y3Rpb24oYnJlYWtwb2ludFN0b3JhZ2UsIGJyZWFrcG9pbnRBZGRlZERlbGVnYXRlLCBicmVha3Bv
aW50UmVtb3ZlZERlbGVnYXRlLCBkZWJ1Z2dlck1vZGVsLCBzY3JpcHRNYXBwaW5nKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclByZXNl
bnRhdGlvbk1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1
Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpzCmluZGV4IDYxODVlZDkzNzEzNGUxNzNkZWIzZjM3YTI1
NzVmMzkzMDE0ZTg0ZmIuLjI2YWQyYzYyZWNlM2Y4ODZhMTkzZWQyMzhkNTEwNDBlYjg4Y2UwYTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQ
cmVzZW50YXRpb25Nb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0RlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuanMKQEAgLTMwLDIxICszMCwxNiBAQAogCiAv
KioKICAqIEBjb25zdHJ1Y3RvcgotICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5TY3JpcHRNYXBw
aW5nfQorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5PYmplY3R9CiAgKi8KIFdlYkluc3BlY3Rv
ci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsID0gZnVuY3Rpb24oKQogewotICAgIC8vIEZJWE1F
OiBhcHBseSBmb3JtYXR0ZXIgZnJvbSBvdXRzaWRlIGFzIGEgZ2VuZXJpYyBtYXBwaW5nLgotICAg
IHRoaXMuX2Zvcm1hdHRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0Rm9ybWF0dGVyKCk7Ci0g
ICAgdGhpcy5fcmF3U291cmNlQ29kZXMgPSBbXTsKLSAgICB0aGlzLl9yYXdTb3VyY2VDb2RlRm9y
U2NyaXB0SWQgPSB7fTsKLSAgICB0aGlzLl9yYXdTb3VyY2VDb2RlRm9yVVJMID0ge307Ci0gICAg
dGhpcy5fcmF3U291cmNlQ29kZUZvckRvY3VtZW50VVJMID0ge307Ci0gICAgdGhpcy5fcmF3U291
cmNlQ29kZUZvclVJU291cmNlQ29kZSA9IG5ldyBNYXAoKTsKKyAgICB0aGlzLl9zY3JpcHRNYXBw
aW5nID0gbmV3IFdlYkluc3BlY3Rvci5NYWluU2NyaXB0TWFwcGluZygpOworICAgIHRoaXMuX3Nj
cmlwdE1hcHBpbmcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTWFpblNjcmlwdE1hcHBp
bmcuRXZlbnRzLlVJU291cmNlQ29kZUxpc3RDaGFuZ2VkLCB0aGlzLl9oYW5kbGVVSVNvdXJjZUNv
ZGVMaXN0Q2hhbmdlZCwgdGhpcyk7CisKICAgICB0aGlzLl9wcmVzZW50YXRpb25DYWxsRnJhbWVz
ID0gW107Ci0gICAgdGhpcy5fZm9ybWF0U291cmNlID0gZmFsc2U7CiAKLSAgICB0aGlzLl9icmVh
a3BvaW50TWFuYWdlciA9IG5ldyBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIoV2ViSW5z
cGVjdG9yLnNldHRpbmdzLmJyZWFrcG9pbnRzLCB0aGlzLl9icmVha3BvaW50QWRkZWQuYmluZCh0
aGlzKSwgdGhpcy5fYnJlYWtwb2ludFJlbW92ZWQuYmluZCh0aGlzKSwgV2ViSW5zcGVjdG9yLmRl
YnVnZ2VyTW9kZWwsIHRoaXMpOworICAgIHRoaXMuX2JyZWFrcG9pbnRNYW5hZ2VyID0gbmV3IFdl
Ykluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlcihXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuYnJlYWtw
b2ludHMsIHRoaXMuX2JyZWFrcG9pbnRBZGRlZC5iaW5kKHRoaXMpLCB0aGlzLl9icmVha3BvaW50
UmVtb3ZlZC5iaW5kKHRoaXMpLCBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbCwgdGhpcy5fc2Ny
aXB0TWFwcGluZyk7CiAKICAgICB0aGlzLl9wZW5kaW5nQ29uc29sZU1lc3NhZ2VzID0ge307CiAg
ICAgdGhpcy5fY29uc29sZU1lc3NhZ2VMaXZlTG9jYXRpb25zID0gW107CkBAIC05Myw3ICs4OCw3
IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsK
ICAgICAgKi8KICAgICBjcmVhdGVQbGFjYXJkOiBmdW5jdGlvbihjYWxsRnJhbWUpCiAgICAgewot
ICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVs
LkNhbGxGcmFtZVBsYWNhcmQoY2FsbEZyYW1lLCB0aGlzKTsKKyAgICAgICAgcmV0dXJuIG5ldyBX
ZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5DYWxsRnJhbWVQbGFjYXJkKGNh
bGxGcmFtZSwgdGhpcy5fc2NyaXB0TWFwcGluZyk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMTAy
LDggKzk3LDcgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90
eXBlID0gewogICAgICAqLwogICAgIHJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uOiBmdW5jdGlvbihy
YXdMb2NhdGlvbikKICAgICB7Ci0gICAgICAgIHZhciByYXdTb3VyY2VDb2RlID0gdGhpcy5fcmF3
U291cmNlQ29kZUZvclNjcmlwdElkW3Jhd0xvY2F0aW9uLnNjcmlwdElkXTsKLSAgICAgICAgcmV0
dXJuIHJhd1NvdXJjZUNvZGUucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24ocmF3TG9jYXRpb24pOwor
ICAgICAgICByZXR1cm4gdGhpcy5fc2NyaXB0TWFwcGluZy5yYXdMb2NhdGlvblRvVUlMb2NhdGlv
bihyYXdMb2NhdGlvbik7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMTE0LDggKzEwOCw3IEBAIFdl
Ykluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAg
Ki8KICAgICB1aUxvY2F0aW9uVG9SYXdMb2NhdGlvbjogZnVuY3Rpb24odWlTb3VyY2VDb2RlLCBs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgewotICAgICAgICB2YXIgcmF3U291cmNlQ29k
ZSA9IHRoaXMuX3Jhd1NvdXJjZUNvZGVGb3JVSVNvdXJjZUNvZGUuZ2V0KHVpU291cmNlQ29kZSk7
Ci0gICAgICAgIHJldHVybiByYXdTb3VyY2VDb2RlLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKHVp
U291cmNlQ29kZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX3NjcmlwdE1hcHBpbmcudWlMb2NhdGlvblRvUmF3TG9jYXRpb24odWlTb3VyY2VDb2RlLCBs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTEyNSw4ICsx
MTgsNyBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUg
PSB7CiAgICAgICovCiAgICAgY3JlYXRlTGl2ZUxvY2F0aW9uOiBmdW5jdGlvbihyYXdMb2NhdGlv
biwgdXBkYXRlRGVsZWdhdGUpCiAgICAgewotICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IHRo
aXMuX3Jhd1NvdXJjZUNvZGVGb3JTY3JpcHRJZFtyYXdMb2NhdGlvbi5zY3JpcHRJZF07Ci0gICAg
ICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUuTGl2ZUxvY2F0aW9uKHJh
d1NvdXJjZUNvZGUsIHJhd0xvY2F0aW9uLCB1cGRhdGVEZWxlZ2F0ZSk7CisgICAgICAgIHJldHVy
biB0aGlzLl9zY3JpcHRNYXBwaW5nLmNyZWF0ZUxpdmVMb2NhdGlvbihyYXdMb2NhdGlvbiwgdXBk
YXRlRGVsZWdhdGUpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTEzNSw3ICsxMjcsNyBAQCBXZWJJ
bnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgX3Bh
cnNlZFNjcmlwdFNvdXJjZTogZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgc2Ny
aXB0ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuU2NyaXB0fSAqLyBldmVudC5kYXRhOwotICAg
ICAgICB0aGlzLl9hZGRTY3JpcHQoc2NyaXB0KTsKKyAgICAgICAgdGhpcy5fc2NyaXB0TWFwcGlu
Zy5hZGRTY3JpcHQoc2NyaXB0KTsKICAgICAgICAgdGhpcy5fYWRkUGVuZGluZ0NvbnNvbGVNZXNz
YWdlc1RvU2NyaXB0KHNjcmlwdCk7CiAgICAgfSwKIApAQCAtMTQ4LDYzICsxNDAsMTEgQEAgV2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0gewogICAgIH0s
CiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5TY3JpcHR9IHNjcmlwdAot
ICAgICAqLwotICAgIF9hZGRTY3JpcHQ6IGZ1bmN0aW9uKHNjcmlwdCkKLSAgICB7Ci0gICAgICAg
IHZhciByZXNvdXJjZSA9IG51bGw7Ci0gICAgICAgIHZhciBpc0lubGluZVNjcmlwdCA9IGZhbHNl
OwotICAgICAgICBpZiAoc2NyaXB0LmlzSW5saW5lU2NyaXB0KCkpIHsKLSAgICAgICAgICAgIHJl
c291cmNlID0gV2ViSW5zcGVjdG9yLm5ldHdvcmtNYW5hZ2VyLmluZmxpZ2h0UmVzb3VyY2VGb3JV
Ukwoc2NyaXB0LnNvdXJjZVVSTCkgfHwgV2ViSW5zcGVjdG9yLnJlc291cmNlRm9yVVJMKHNjcmlw
dC5zb3VyY2VVUkwpOwotICAgICAgICAgICAgaWYgKHJlc291cmNlICYmIHJlc291cmNlLnR5cGUg
PT09IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLkRvY3VtZW50KSB7Ci0gICAgICAgICAgICAg
ICAgaXNJbmxpbmVTY3JpcHQgPSB0cnVlOwotICAgICAgICAgICAgICAgIHZhciByYXdTb3VyY2VD
b2RlID0gdGhpcy5fcmF3U291cmNlQ29kZUZvckRvY3VtZW50VVJMW3NjcmlwdC5zb3VyY2VVUkxd
OwotICAgICAgICAgICAgICAgIGlmIChyYXdTb3VyY2VDb2RlKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHJhd1NvdXJjZUNvZGUuYWRkU2NyaXB0KHNjcmlwdCk7Ci0gICAgICAgICAgICAgICAgICAg
IHRoaXMuX2JpbmRTY3JpcHRUb1Jhd1NvdXJjZUNvZGUoc2NyaXB0LCByYXdTb3VyY2VDb2RlKTsK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHZhciBjb21waWxlclNvdXJjZU1hcHBpbmcgPSBu
dWxsOwotICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNvdXJjZU1hcHNFbmFibGVk
LmdldCgpICYmIHNjcmlwdC5zb3VyY2VNYXBVUkwpCi0gICAgICAgICAgICBjb21waWxlclNvdXJj
ZU1hcHBpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLkNsb3N1cmVDb21waWxlclNvdXJjZU1hcHBpbmco
c2NyaXB0LnNvdXJjZU1hcFVSTCwgc2NyaXB0LnNvdXJjZVVSTCk7Ci0KLSAgICAgICAgdmFyIHJh
d1NvdXJjZUNvZGUgPSBuZXcgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUoc2NyaXB0LnNjcmlw
dElkLCBzY3JpcHQsIHJlc291cmNlLCB0aGlzLl9mb3JtYXR0ZXIsIHRoaXMuX2Zvcm1hdFNvdXJj
ZSwgY29tcGlsZXJTb3VyY2VNYXBwaW5nKTsKLSAgICAgICAgdGhpcy5fcmF3U291cmNlQ29kZXMu
cHVzaChyYXdTb3VyY2VDb2RlKTsKLSAgICAgICAgdGhpcy5fYmluZFNjcmlwdFRvUmF3U291cmNl
Q29kZShzY3JpcHQsIHJhd1NvdXJjZUNvZGUpOwotCi0gICAgICAgIGlmIChpc0lubGluZVNjcmlw
dCkKLSAgICAgICAgICAgIHRoaXMuX3Jhd1NvdXJjZUNvZGVGb3JEb2N1bWVudFVSTFtzY3JpcHQu
c291cmNlVVJMXSA9IHJhd1NvdXJjZUNvZGU7Ci0KLSAgICAgICAgaWYgKHJhd1NvdXJjZUNvZGUu
dWlTb3VyY2VDb2RlTGlzdCgpLmxlbmd0aCkKLSAgICAgICAgICAgIHRoaXMuX3VpU291cmNlQ29k
ZUxpc3RDaGFuZ2VkKHJhd1NvdXJjZUNvZGUsIFtdLCByYXdTb3VyY2VDb2RlLnVpU291cmNlQ29k
ZUxpc3QoKSk7Ci0gICAgICAgIHJhd1NvdXJjZUNvZGUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuUmF3U291cmNlQ29kZS5FdmVudHMuVUlTb3VyY2VDb2RlTGlzdENoYW5nZWQsIHRoaXMu
X2hhbmRsZVVJU291cmNlQ29kZUxpc3RDaGFuZ2VkLCB0aGlzKTsKLSAgICB9LAotCi0gICAgLyoq
Ci0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2NyaXB0fSBzY3JpcHQKLSAgICAgKiBAcGFy
YW0ge1dlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlfSByYXdTb3VyY2VDb2RlCi0gICAgICovCi0g
ICAgX2JpbmRTY3JpcHRUb1Jhd1NvdXJjZUNvZGU6IGZ1bmN0aW9uKHNjcmlwdCwgcmF3U291cmNl
Q29kZSkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3Jhd1NvdXJjZUNvZGVGb3JTY3JpcHRJZFtzY3Jp
cHQuc2NyaXB0SWRdID0gcmF3U291cmNlQ29kZTsKLSAgICAgICAgdGhpcy5fcmF3U291cmNlQ29k
ZUZvclVSTFtzY3JpcHQuc291cmNlVVJMXSA9IHJhd1NvdXJjZUNvZGU7Ci0gICAgfSwKLQotICAg
IC8qKgogICAgICAqIEByZXR1cm4ge0FycmF5LjxXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlPn0K
ICAgICAgKi8KICAgICB1aVNvdXJjZUNvZGVzOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB2
YXIgcmVzdWx0ID0gW107Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fcmF3U291
cmNlQ29kZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciB1aVNvdXJjZUNvZGVMaXN0
ID0gdGhpcy5fcmF3U291cmNlQ29kZXNbaV0udWlTb3VyY2VDb2RlTGlzdCgpOwotICAgICAgICAg
ICAgZm9yICh2YXIgaiA9IDA7IGogPCB1aVNvdXJjZUNvZGVMaXN0Lmxlbmd0aDsgKytqKQotICAg
ICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHVpU291cmNlQ29kZUxpc3Rbal0pOwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIHJldHVybiB0aGlzLl9zY3JpcHRNYXBw
aW5nLnVpU291cmNlQ29kZUxpc3QoKTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0yMTIsMjIgKzE1
Miw4IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9
IHsKICAgICAgKi8KICAgICBfaGFuZGxlVUlTb3VyY2VDb2RlTGlzdENoYW5nZWQ6IGZ1bmN0aW9u
KGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSAvKiogQHR5cGUge1dl
Ykluc3BlY3Rvci5SYXdTb3VyY2VDb2RlfSAqLyBldmVudC50YXJnZXQ7Ci0gICAgICAgIHZhciBv
bGRVSVNvdXJjZUNvZGVMaXN0ID0gLyoqIEB0eXBlIHtBcnJheS48V2ViSW5zcGVjdG9yLlVJU291
cmNlQ29kZT59ICovIGV2ZW50LmRhdGFbIm9sZFVJU291cmNlQ29kZUxpc3QiXTsKLSAgICAgICAg
dGhpcy5fdWlTb3VyY2VDb2RlTGlzdENoYW5nZWQocmF3U291cmNlQ29kZSwgb2xkVUlTb3VyY2VD
b2RlTGlzdCwgcmF3U291cmNlQ29kZS51aVNvdXJjZUNvZGVMaXN0KCkpOwotICAgIH0sCi0KLSAg
ICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlfSByYXdTb3Vy
Y2VDb2RlCi0gICAgICogQHBhcmFtIHtBcnJheS48V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZT59
IHJlbW92ZWRJdGVtcwotICAgICAqIEBwYXJhbSB7QXJyYXkuPFdlYkluc3BlY3Rvci5VSVNvdXJj
ZUNvZGU+fSBhZGRlZEl0ZW1zCi0gICAgICovCi0gICAgX3VpU291cmNlQ29kZUxpc3RDaGFuZ2Vk
OiBmdW5jdGlvbihyYXdTb3VyY2VDb2RlLCByZW1vdmVkSXRlbXMsIGFkZGVkSXRlbXMpCi0gICAg
ewotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlbW92ZWRJdGVtcy5sZW5ndGg7ICsraSkK
LSAgICAgICAgICAgIHRoaXMuX3Jhd1NvdXJjZUNvZGVGb3JVSVNvdXJjZUNvZGUucmVtb3ZlKHJl
bW92ZWRJdGVtc1tpXSk7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYWRkZWRJdGVtcy5s
ZW5ndGg7ICsraSkKLSAgICAgICAgICAgIHRoaXMuX3Jhd1NvdXJjZUNvZGVGb3JVSVNvdXJjZUNv
ZGUucHV0KGFkZGVkSXRlbXNbaV0sIHJhd1NvdXJjZUNvZGUpOworICAgICAgICB2YXIgcmVtb3Zl
ZEl0ZW1zID0gLyoqIEB0eXBlIHtBcnJheS48V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZT59ICov
IGV2ZW50LmRhdGFbInJlbW92ZWRJdGVtcyJdOworICAgICAgICB2YXIgYWRkZWRJdGVtcyA9IC8q
KiBAdHlwZSB7QXJyYXkuPFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGU+fSAqLyBldmVudC5kYXRh
WyJhZGRlZEl0ZW1zIl07CiAKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZW1vdmVkSXRl
bXMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIHZhciBicmVha3BvaW50cyA9IHRoaXMuX2Jy
ZWFrcG9pbnRNYW5hZ2VyLmJyZWFrcG9pbnRzRm9yVUlTb3VyY2VDb2RlKHJlbW92ZWRJdGVtc1tp
XSk7CkBAIC0zNDcsMjIgKzI3Myw4IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlv
bk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBzZXRGb3JtYXRTb3VyY2U6IGZ1bmN0
aW9uKGZvcm1hdFNvdXJjZSkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9mb3JtYXRTb3VyY2Ug
PT09IGZvcm1hdFNvdXJjZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLl9m
b3JtYXRTb3VyY2UgPSBmb3JtYXRTb3VyY2U7CiAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRNYW5h
Z2VyLnJlc2V0KCk7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fcmF3U291cmNl
Q29kZXMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICB0aGlzLl9yYXdTb3VyY2VDb2Rlc1tpXS5z
ZXRGb3JtYXR0ZWQodGhpcy5fZm9ybWF0U291cmNlKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAg
ICogQHBhcmFtIHtEZWJ1Z2dlckFnZW50LkxvY2F0aW9ufSByYXdMb2NhdGlvbgotICAgICAqLwot
ICAgIF9mb3JjZVVwZGF0ZVNvdXJjZU1hcHBpbmc6IGZ1bmN0aW9uKHJhd0xvY2F0aW9uKQotICAg
IHsKLSAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSB0aGlzLl9yYXdTb3VyY2VDb2RlRm9yU2Ny
aXB0SWRbcmF3TG9jYXRpb24uc2NyaXB0SWRdOwotICAgICAgICByYXdTb3VyY2VDb2RlLmZvcmNl
VXBkYXRlU291cmNlTWFwcGluZygpOworICAgICAgICB0aGlzLl9zY3JpcHRNYXBwaW5nLnNldEZv
cm1hdFNvdXJjZShmb3JtYXRTb3VyY2UpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTU3MCw3ICs0
ODIsNyBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2FsbEZyYW1lcy5sZW5ndGg7ICsraSkg
ewogICAgICAgICAgICAgdmFyIGNhbGxGcmFtZSA9IGNhbGxGcmFtZXNbaV07CiAgICAgICAgICAg
ICBpZiAoV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuc2NyaXB0Rm9yU291cmNlSUQoY2FsbEZy
YW1lLmxvY2F0aW9uLnNjcmlwdElkKSkKLSAgICAgICAgICAgICAgICB0aGlzLl9wcmVzZW50YXRp
b25DYWxsRnJhbWVzLnB1c2gobmV3IFdlYkluc3BlY3Rvci5QcmVzZW50YXRpb25DYWxsRnJhbWUo
Y2FsbEZyYW1lLCBpLCB0aGlzKSk7CisgICAgICAgICAgICAgICAgdGhpcy5fcHJlc2VudGF0aW9u
Q2FsbEZyYW1lcy5wdXNoKG5ldyBXZWJJbnNwZWN0b3IuUHJlc2VudGF0aW9uQ2FsbEZyYW1lKGNh
bGxGcmFtZSwgaSwgdGhpcy5fc2NyaXB0TWFwcGluZykpOwogICAgICAgICB9CiAgICAgICAgIHZh
ciBkZXRhaWxzID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuZGVidWdnZXJQYXVzZWREZXRh
aWxzOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3Iu
RGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMuRGVidWdnZXJQYXVzZWQsIHsgY2FsbEZy
YW1lczogdGhpcy5fcHJlc2VudGF0aW9uQ2FsbEZyYW1lcywgZGV0YWlsczogZGV0YWlscyB9KTsK
QEAgLTU5OSw3ICs1MTEsNyBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2Rl
bC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICghdGhpcy5fc2VsZWN0ZWRDYWxsRnJhbWUpCiAg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdGhpcy5fZm9yY2VVcGRhdGVTb3VyY2VNYXBw
aW5nKGNhbGxGcmFtZS5fY2FsbEZyYW1lLmxvY2F0aW9uKTsKKyAgICAgICAgdGhpcy5fc2NyaXB0
TWFwcGluZy5mb3JjZVVwZGF0ZVNvdXJjZU1hcHBpbmcoY2FsbEZyYW1lLl9jYWxsRnJhbWUubG9j
YXRpb24pOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0
b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMuQ2FsbEZyYW1lU2VsZWN0ZWQsIGNh
bGxGcmFtZSk7CiAKICAgICAgICAgZnVuY3Rpb24gdXBkYXRlRXhlY3V0aW9uTGluZSh1aUxvY2F0
aW9uKQpAQCAtNjg4LDE2ICs2MDAsNyBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRp
b25Nb2RlbC5wcm90b3R5cGUgPSB7CiAKICAgICBfZGVidWdnZXJSZXNldDogZnVuY3Rpb24oKQog
ICAgIHsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9yYXdTb3VyY2VDb2Rlcy5s
ZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSB0aGlzLl9yYXdT
b3VyY2VDb2Rlc1tpXTsKLSAgICAgICAgICAgIHRoaXMuX3VpU291cmNlQ29kZUxpc3RDaGFuZ2Vk
KHJhd1NvdXJjZUNvZGUsIHJhd1NvdXJjZUNvZGUudWlTb3VyY2VDb2RlTGlzdCgpLCBbXSk7Ci0g
ICAgICAgICAgICByYXdTb3VyY2VDb2RlLnJlbW92ZUFsbExpc3RlbmVycygpOwotICAgICAgICB9
Ci0gICAgICAgIHRoaXMuX3Jhd1NvdXJjZUNvZGVzID0gW107Ci0gICAgICAgIHRoaXMuX3Jhd1Nv
dXJjZUNvZGVGb3JTY3JpcHRJZCA9IHt9OwotICAgICAgICB0aGlzLl9yYXdTb3VyY2VDb2RlRm9y
VVJMID0ge307Ci0gICAgICAgIHRoaXMuX3Jhd1NvdXJjZUNvZGVGb3JEb2N1bWVudFVSTCA9IHt9
OwotICAgICAgICB0aGlzLl9yYXdTb3VyY2VDb2RlRm9yVUlTb3VyY2VDb2RlLmNsZWFyKCk7Cisg
ICAgICAgIHRoaXMuX3NjcmlwdE1hcHBpbmcucmVzZXQoKTsKICAgICAgICAgdGhpcy5fcHJlc2Vu
dGF0aW9uQ2FsbEZyYW1lcyA9IFtdOwogICAgICAgICB0aGlzLl9zZWxlY3RlZENhbGxGcmFtZSA9
IG51bGw7CiAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRNYW5hZ2VyLmRlYnVnZ2VyUmVzZXQoKTsK
QEAgLTcwOCw3ICs2MTEsNyBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2Rl
bC5wcm90b3R5cGUgPSB7CiAgICAgfQogfQogCi1XZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50
YXRpb25Nb2RlbC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlNjcmlwdE1hcHBp
bmcucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJv
dG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwogCiAvKioK
ICAqIEBjb25zdHJ1Y3RvcgpAQCAtNzI3LDcgKzYzMCw3IEBAIFdlYkluc3BlY3Rvci5QcmVzZW50
YXRpb25Db25zb2xlTWVzc2FnZSA9IGZ1bmN0aW9uKHVpU291cmNlQ29kZSwgbGluZU51bWJlciwg
b3JpCiAgKiBAY29uc3RydWN0b3IKICAqIEBwYXJhbSB7RGVidWdnZXJBZ2VudC5DYWxsRnJhbWV9
IGNhbGxGcmFtZQogICogQHBhcmFtIHtudW1iZXJ9IGluZGV4Ci0gKiBAcGFyYW0ge1dlYkluc3Bl
Y3Rvci5TY3JpcHRNYXBwaW5nfSBzY3JpcHRNYXBwaW5nCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5NYWluU2NyaXB0TWFwcGluZ30gc2NyaXB0TWFwcGluZwogICovCiBXZWJJbnNwZWN0b3IuUHJl
c2VudGF0aW9uQ2FsbEZyYW1lID0gZnVuY3Rpb24oY2FsbEZyYW1lLCBpbmRleCwgc2NyaXB0TWFw
cGluZykKIHsKQEAgLTgxNSw3ICs3MTgsNyBAQCBXZWJJbnNwZWN0b3IuUHJlc2VudGF0aW9uQ2Fs
bEZyYW1lLnByb3RvdHlwZSA9IHsKICAqIEBjb25zdHJ1Y3RvcgogICogQGV4dGVuZHMge1dlYklu
c3BlY3Rvci5QbGFjYXJkfQogICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUHJlc2VudGF0aW9uQ2Fs
bEZyYW1lfSBjYWxsRnJhbWUKLSAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNjcmlwdE1hcHBpbmd9
IHNjcmlwdE1hcHBpbmcKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLk1haW5TY3JpcHRNYXBwaW5n
fSBzY3JpcHRNYXBwaW5nCiAgKi8KIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1v
ZGVsLkNhbGxGcmFtZVBsYWNhcmQgPSBmdW5jdGlvbihjYWxsRnJhbWUsIHNjcmlwdE1hcHBpbmcp
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Njcmlw
dE1hcHBpbmcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdE1h
cHBpbmcuanMKaW5kZXggM2ZiZGUyYjU4MDU4ODE1YzMzMzExYmY4MDdjYTJkM2RmNjdiZTBlNi4u
YjlmMjE5N2I1MmZiYjgxOTA2M2E2ZmU4ZjFjY2Y4NTY5ODY4YTZiZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRNYXBwaW5nLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0TWFwcGluZy5qcwpAQCAtNjks
MyArNjksMTc5IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRNYXBwaW5nLnByb3RvdHlwZSA9IHsKIH0K
IAogV2ViSW5zcGVjdG9yLlNjcmlwdE1hcHBpbmcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYklu
c3BlY3Rvci5PYmplY3QucHJvdG90eXBlOworCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4
dGVuZHMge1dlYkluc3BlY3Rvci5PYmplY3R9CisgKi8KK1dlYkluc3BlY3Rvci5NYWluU2NyaXB0
TWFwcGluZyA9IGZ1bmN0aW9uKCkKK3sKKyAgICB0aGlzLl9yYXdTb3VyY2VDb2RlcyA9IFtdOwor
ICAgIHRoaXMuX3Jhd1NvdXJjZUNvZGVGb3JTY3JpcHRJZCA9IHt9OworICAgIHRoaXMuX3Jhd1Nv
dXJjZUNvZGVGb3JVUkwgPSB7fTsKKyAgICB0aGlzLl9yYXdTb3VyY2VDb2RlRm9yRG9jdW1lbnRV
UkwgPSB7fTsKKyAgICB0aGlzLl9yYXdTb3VyY2VDb2RlRm9yVUlTb3VyY2VDb2RlID0gbmV3IE1h
cCgpOworICAgIHRoaXMuX2Zvcm1hdHRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0Rm9ybWF0
dGVyKCk7CisgICAgdGhpcy5fZm9ybWF0U291cmNlID0gZmFsc2U7Cit9CisKK1dlYkluc3BlY3Rv
ci5NYWluU2NyaXB0TWFwcGluZy5FdmVudHMgPSB7CisgICAgVUlTb3VyY2VDb2RlTGlzdENoYW5n
ZWQ6ICJ1cy1zb3VyY2UtY29kZS1saXN0LWNoYW5nZWQiCit9CisKK1dlYkluc3BlY3Rvci5NYWlu
U2NyaXB0TWFwcGluZy5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHBhcmFtIHtEZWJ1
Z2dlckFnZW50LkxvY2F0aW9ufSByYXdMb2NhdGlvbgorICAgICAqIEByZXR1cm4ge1dlYkluc3Bl
Y3Rvci5VSUxvY2F0aW9ufQorICAgICAqLworICAgIHJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uOiBm
dW5jdGlvbihyYXdMb2NhdGlvbikKKyAgICB7CisgICAgICAgIHZhciByYXdTb3VyY2VDb2RlID0g
dGhpcy5fcmF3U291cmNlQ29kZUZvclNjcmlwdElkW3Jhd0xvY2F0aW9uLnNjcmlwdElkXTsKKyAg
ICAgICAgcmV0dXJuIHJhd1NvdXJjZUNvZGUucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24ocmF3TG9j
YXRpb24pOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5V
SVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5lTnVt
YmVyCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGNvbHVtbk51bWJlcgorICAgICAqIEByZXR1cm4g
e0RlYnVnZ2VyQWdlbnQuTG9jYXRpb259CisgICAgICovCisgICAgdWlMb2NhdGlvblRvUmF3TG9j
YXRpb246IGZ1bmN0aW9uKHVpU291cmNlQ29kZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKQor
ICAgIHsKKyAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSB0aGlzLl9yYXdTb3VyY2VDb2RlRm9y
VUlTb3VyY2VDb2RlLmdldCh1aVNvdXJjZUNvZGUpOworICAgICAgICByZXR1cm4gcmF3U291cmNl
Q29kZS51aUxvY2F0aW9uVG9SYXdMb2NhdGlvbih1aVNvdXJjZUNvZGUsIGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlcik7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7RGVidWdnZXJB
Z2VudC5Mb2NhdGlvbn0gcmF3TG9jYXRpb24KKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKFdlYklu
c3BlY3Rvci5VSUxvY2F0aW9uKX0gdXBkYXRlRGVsZWdhdGUKKyAgICAgKiBAcmV0dXJuIHtXZWJJ
bnNwZWN0b3IuUmF3U291cmNlQ29kZS5MaXZlTG9jYXRpb259CisgICAgICovCisgICAgY3JlYXRl
TGl2ZUxvY2F0aW9uOiBmdW5jdGlvbihyYXdMb2NhdGlvbiwgdXBkYXRlRGVsZWdhdGUpCisgICAg
eworICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IHRoaXMuX3Jhd1NvdXJjZUNvZGVGb3JTY3Jp
cHRJZFtyYXdMb2NhdGlvbi5zY3JpcHRJZF07CisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVj
dG9yLlJhd1NvdXJjZUNvZGUuTGl2ZUxvY2F0aW9uKHJhd1NvdXJjZUNvZGUsIHJhd0xvY2F0aW9u
LCB1cGRhdGVEZWxlZ2F0ZSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge0Fy
cmF5LjxXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlPn0KKyAgICAgKi8KKyAgICB1aVNvdXJjZUNv
ZGVMaXN0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgcmVzdWx0ID0gW107CisgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fcmF3U291cmNlQ29kZXMubGVuZ3RoOyArK2kp
IHsKKyAgICAgICAgICAgIHZhciB1aVNvdXJjZUNvZGVMaXN0ID0gdGhpcy5fcmF3U291cmNlQ29k
ZXNbaV0udWlTb3VyY2VDb2RlTGlzdCgpOworICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGog
PCB1aVNvdXJjZUNvZGVMaXN0Lmxlbmd0aDsgKytqKQorICAgICAgICAgICAgICAgIHJlc3VsdC5w
dXNoKHVpU291cmNlQ29kZUxpc3Rbal0pOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNjcmlw
dH0gc2NyaXB0CisgICAgICovCisgICAgYWRkU2NyaXB0OiBmdW5jdGlvbihzY3JpcHQpCisgICAg
eworICAgICAgICB2YXIgcmVzb3VyY2UgPSBudWxsOworICAgICAgICB2YXIgaXNJbmxpbmVTY3Jp
cHQgPSBmYWxzZTsKKyAgICAgICAgaWYgKHNjcmlwdC5pc0lubGluZVNjcmlwdCgpKSB7CisgICAg
ICAgICAgICByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5uZXR3b3JrTWFuYWdlci5pbmZsaWdodFJl
c291cmNlRm9yVVJMKHNjcmlwdC5zb3VyY2VVUkwpIHx8IFdlYkluc3BlY3Rvci5yZXNvdXJjZUZv
clVSTChzY3JpcHQuc291cmNlVVJMKTsKKyAgICAgICAgICAgIGlmIChyZXNvdXJjZSAmJiByZXNv
dXJjZS50eXBlID09PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5Eb2N1bWVudCkgeworICAg
ICAgICAgICAgICAgIGlzSW5saW5lU2NyaXB0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB2YXIg
cmF3U291cmNlQ29kZSA9IHRoaXMuX3Jhd1NvdXJjZUNvZGVGb3JEb2N1bWVudFVSTFtzY3JpcHQu
c291cmNlVVJMXTsKKyAgICAgICAgICAgICAgICBpZiAocmF3U291cmNlQ29kZSkgeworICAgICAg
ICAgICAgICAgICAgICByYXdTb3VyY2VDb2RlLmFkZFNjcmlwdChzY3JpcHQpOworICAgICAgICAg
ICAgICAgICAgICB0aGlzLl9iaW5kU2NyaXB0VG9SYXdTb3VyY2VDb2RlKHNjcmlwdCwgcmF3U291
cmNlQ29kZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB2YXIgY29tcGlsZXJTb3VyY2VN
YXBwaW5nID0gbnVsbDsKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zb3VyY2VN
YXBzRW5hYmxlZC5nZXQoKSAmJiBzY3JpcHQuc291cmNlTWFwVVJMKQorICAgICAgICAgICAgY29t
cGlsZXJTb3VyY2VNYXBwaW5nID0gbmV3IFdlYkluc3BlY3Rvci5DbG9zdXJlQ29tcGlsZXJTb3Vy
Y2VNYXBwaW5nKHNjcmlwdC5zb3VyY2VNYXBVUkwsIHNjcmlwdC5zb3VyY2VVUkwpOworCisgICAg
ICAgIHZhciByYXdTb3VyY2VDb2RlID0gbmV3IFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlKHNj
cmlwdC5zY3JpcHRJZCwgc2NyaXB0LCByZXNvdXJjZSwgdGhpcy5fZm9ybWF0dGVyLCB0aGlzLl9m
b3JtYXRTb3VyY2UsIGNvbXBpbGVyU291cmNlTWFwcGluZyk7CisgICAgICAgIHRoaXMuX3Jhd1Nv
dXJjZUNvZGVzLnB1c2gocmF3U291cmNlQ29kZSk7CisgICAgICAgIHRoaXMuX2JpbmRTY3JpcHRU
b1Jhd1NvdXJjZUNvZGUoc2NyaXB0LCByYXdTb3VyY2VDb2RlKTsKKworICAgICAgICBpZiAoaXNJ
bmxpbmVTY3JpcHQpCisgICAgICAgICAgICB0aGlzLl9yYXdTb3VyY2VDb2RlRm9yRG9jdW1lbnRV
Ukxbc2NyaXB0LnNvdXJjZVVSTF0gPSByYXdTb3VyY2VDb2RlOworCisgICAgICAgIGlmIChyYXdT
b3VyY2VDb2RlLnVpU291cmNlQ29kZUxpc3QoKS5sZW5ndGgpCisgICAgICAgICAgICB0aGlzLl91
aVNvdXJjZUNvZGVMaXN0Q2hhbmdlZChyYXdTb3VyY2VDb2RlLCBbXSwgcmF3U291cmNlQ29kZS51
aVNvdXJjZUNvZGVMaXN0KCkpOworICAgICAgICByYXdTb3VyY2VDb2RlLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUuRXZlbnRzLlVJU291cmNlQ29kZUxpc3RDaGFu
Z2VkLCB0aGlzLl9oYW5kbGVVSVNvdXJjZUNvZGVMaXN0Q2hhbmdlZCwgdGhpcyk7CisgICAgfSwK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkV2ZW50fSBldmVudAorICAg
ICAqLworICAgIF9oYW5kbGVVSVNvdXJjZUNvZGVMaXN0Q2hhbmdlZDogZnVuY3Rpb24oZXZlbnQp
CisgICAgeworICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVj
dG9yLlJhd1NvdXJjZUNvZGV9ICovIGV2ZW50LnRhcmdldDsKKyAgICAgICAgdmFyIG9sZFVJU291
cmNlQ29kZUxpc3QgPSAvKiogQHR5cGUge0FycmF5LjxXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2Rl
Pn0gKi8gZXZlbnQuZGF0YVsib2xkVUlTb3VyY2VDb2RlTGlzdCJdOworICAgICAgICB0aGlzLl91
aVNvdXJjZUNvZGVMaXN0Q2hhbmdlZChyYXdTb3VyY2VDb2RlLCBvbGRVSVNvdXJjZUNvZGVMaXN0
LCByYXdTb3VyY2VDb2RlLnVpU291cmNlQ29kZUxpc3QoKSk7CisgICAgfSwKKworICAgIC8qKgor
ICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGV9IHJhd1NvdXJjZUNvZGUK
KyAgICAgKiBAcGFyYW0ge0FycmF5LjxXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlPn0gcmVtb3Zl
ZEl0ZW1zCisgICAgICogQHBhcmFtIHtBcnJheS48V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZT59
IGFkZGVkSXRlbXMKKyAgICAgKi8KKyAgICBfdWlTb3VyY2VDb2RlTGlzdENoYW5nZWQ6IGZ1bmN0
aW9uKHJhd1NvdXJjZUNvZGUsIHJlbW92ZWRJdGVtcywgYWRkZWRJdGVtcykKKyAgICB7CisgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVtb3ZlZEl0ZW1zLmxlbmd0aDsgKytpKQorICAgICAg
ICAgICAgdGhpcy5fcmF3U291cmNlQ29kZUZvclVJU291cmNlQ29kZS5yZW1vdmUocmVtb3ZlZEl0
ZW1zW2ldKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhZGRlZEl0ZW1zLmxlbmd0aDsg
KytpKQorICAgICAgICAgICAgdGhpcy5fcmF3U291cmNlQ29kZUZvclVJU291cmNlQ29kZS5wdXQo
YWRkZWRJdGVtc1tpXSwgcmF3U291cmNlQ29kZSk7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5TY3JpcHRNYXBwaW5nLkV2ZW50cy5VSVNvdXJjZUNv
ZGVMaXN0Q2hhbmdlZCwgeyByZW1vdmVkSXRlbXM6IHJlbW92ZWRJdGVtcywgYWRkZWRJdGVtczog
YWRkZWRJdGVtcyB9KTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNw
ZWN0b3IuU2NyaXB0fSBzY3JpcHQKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SYXdTb3Vy
Y2VDb2RlfSByYXdTb3VyY2VDb2RlCisgICAgICovCisgICAgX2JpbmRTY3JpcHRUb1Jhd1NvdXJj
ZUNvZGU6IGZ1bmN0aW9uKHNjcmlwdCwgcmF3U291cmNlQ29kZSkKKyAgICB7CisgICAgICAgIHRo
aXMuX3Jhd1NvdXJjZUNvZGVGb3JTY3JpcHRJZFtzY3JpcHQuc2NyaXB0SWRdID0gcmF3U291cmNl
Q29kZTsKKyAgICAgICAgdGhpcy5fcmF3U291cmNlQ29kZUZvclVSTFtzY3JpcHQuc291cmNlVVJM
XSA9IHJhd1NvdXJjZUNvZGU7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Ym9v
bGVhbn0gZm9ybWF0U291cmNlCisgICAgICovCisgICAgc2V0Rm9ybWF0U291cmNlOiBmdW5jdGlv
bihmb3JtYXRTb3VyY2UpCisgICAgeworICAgICAgICBpZiAodGhpcy5fZm9ybWF0U291cmNlID09
PSBmb3JtYXRTb3VyY2UpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fZm9y
bWF0U291cmNlID0gZm9ybWF0U291cmNlOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRo
aXMuX3Jhd1NvdXJjZUNvZGVzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgdGhpcy5fcmF3U291
cmNlQ29kZXNbaV0uc2V0Rm9ybWF0dGVkKHRoaXMuX2Zvcm1hdFNvdXJjZSk7CisgICAgfSwKKwor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7RGVidWdnZXJBZ2VudC5Mb2NhdGlvbn0gcmF3TG9jYXRp
b24KKyAgICAgKi8KKyAgICBmb3JjZVVwZGF0ZVNvdXJjZU1hcHBpbmc6IGZ1bmN0aW9uKHJhd0xv
Y2F0aW9uKQorICAgIHsKKyAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSB0aGlzLl9yYXdTb3Vy
Y2VDb2RlRm9yU2NyaXB0SWRbcmF3TG9jYXRpb24uc2NyaXB0SWRdOworICAgICAgICByYXdTb3Vy
Y2VDb2RlLmZvcmNlVXBkYXRlU291cmNlTWFwcGluZygpOworICAgIH0sCisKKyAgICByZXNldDog
ZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9yYXdT
b3VyY2VDb2Rlcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUg
PSB0aGlzLl9yYXdTb3VyY2VDb2Rlc1tpXTsKKyAgICAgICAgICAgIHRoaXMuX3VpU291cmNlQ29k
ZUxpc3RDaGFuZ2VkKHJhd1NvdXJjZUNvZGUsIHJhd1NvdXJjZUNvZGUudWlTb3VyY2VDb2RlTGlz
dCgpLCBbXSk7CisgICAgICAgICAgICByYXdTb3VyY2VDb2RlLnJlbW92ZUFsbExpc3RlbmVycygp
OworICAgICAgICB9CisgICAgICAgIHRoaXMuX3Jhd1NvdXJjZUNvZGVzID0gW107CisgICAgICAg
IHRoaXMuX3Jhd1NvdXJjZUNvZGVGb3JTY3JpcHRJZCA9IHt9OworICAgICAgICB0aGlzLl9yYXdT
b3VyY2VDb2RlRm9yVVJMID0ge307CisgICAgICAgIHRoaXMuX3Jhd1NvdXJjZUNvZGVGb3JEb2N1
bWVudFVSTCA9IHt9OworICAgICAgICB0aGlzLl9yYXdTb3VyY2VDb2RlRm9yVUlTb3VyY2VDb2Rl
LmNsZWFyKCk7CisgICAgfQorfQorCitXZWJJbnNwZWN0b3IuTWFpblNjcmlwdE1hcHBpbmcucHJv
dG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDQyNWRkOTEzY2RjNTNlYjQ3NTkzN2Y4YzZjZWZlMmYwMmE3Zjg3MTIuLjA0NmYzMTQ1M2E2NjJi
Y2E0NjM5NTVmMjkyYmFhMmY1OTZjMjZkZWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNiBAQAogMjAxMi0w
My0wNiAgUGF2ZWwgUG9kaXZpbG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KIAorICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBleHRyYWN0IHNvdXJjZSBtYXBwaW5nIGxvZ2ljIGZyb20gRGVidWdn
ZXJQcmVzZW50YXRpb25Nb2RlbCB0byBTY3JpcHRNYXBwaW5nSW1wbC4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwNDEyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvYnJl
YWtwb2ludC1tYW5hZ2VyLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL2NhbGxz
dGFjay1wbGFjYXJkcy1kaXNjYXJkZWQuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdn
ZXIvbGlua2lmaWVyLmh0bWw6CisKKzIwMTItMDMtMDYgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2
aWxvdkBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgV2ViIEluc3BlY3RvcjogcHJlcGFyZSBmb3Ig
ZXh0cmFjdGluZyBTY3JpcHRNYXBwaW5nIGltcGxlbWVudGF0aW9uIGZyb20gRGVidWdnZXJQcmVz
ZW50YXRpb25Nb2RlbC4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTgwMzk2CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9jYWxsc3RhY2stcGxhY2FyZHMtZGlzY2FyZGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXIvY2FsbHN0YWNrLXBsYWNhcmRzLWRpc2NhcmRlZC5odG1sCmluZGV4IDQ0NjM4
NGNmMjdkN2QzMTM3MTFmNjA1N2U0YzNhN2EwZjZmNjNiNmIuLjEzYjk1MDQwNjY5YmFhZGM5MWY5
MGQ5NDA3YzA0NWYyMDc2Y2E0MDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9jYWxsc3RhY2stcGxhY2FyZHMtZGlzY2FyZGVkLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2NhbGxzdGFjay1wbGFjYXJkcy1kaXNjYXJkZWQuaHRtbApA
QCAtMjEsNyArMjEsNyBAQCB2YXIgdGVzdCA9IGZ1bmN0aW9uKCkKICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiUmVjZWl2ZWQgRGVidWdnZXJQYXVzZWQgZXZlbnQuIik7
CiAgICAgICAgICAgICAgICAgdmFyIGNhbGxGcmFtZSA9IGV2ZW50LmRhdGEuY2FsbEZyYW1lc1sw
XTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRnVuY3Rpb24gbmFt
ZTogIiArIGNhbGxGcmFtZS5fY2FsbEZyYW1lLmZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgICAgICAg
ICAgdmFyIHJhd1NvdXJjZUNvZGUgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVzZW50YXRpb25N
b2RlbC5fcmF3U291cmNlQ29kZUZvclNjcmlwdElkW2NhbGxGcmFtZS5fY2FsbEZyYW1lLmxvY2F0
aW9uLnNjcmlwdElkXTsKKyAgICAgICAgICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IFdlYklu
c3BlY3Rvci5kZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLl9zY3JpcHRNYXBwaW5nLl9yYXdTb3Vy
Y2VDb2RlRm9yU2NyaXB0SWRbY2FsbEZyYW1lLl9jYWxsRnJhbWUubG9jYXRpb24uc2NyaXB0SWRd
OwogICAgICAgICAgICAgICAgIHZhciBsaXN0ZW5lcnMgPSByYXdTb3VyY2VDb2RlLl9saXN0ZW5l
cnNbV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUuRXZlbnRzLlVJU291cmNlQ29kZUxpc3RDaGFu
Z2VkXTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiTGlzdGVuZXJz
IGxlbmd0aDogIiArIGxpc3RlbmVycy5sZW5ndGgpOwogICAgICAgICAgICAgICAgIGlmIChwcmV2
aW91c0xpc3RlbmVyTGVuZ3RoICE9PSB1bmRlZmluZWQgJiYgbGlzdGVuZXJzLmxlbmd0aCAhPT0g
cHJldmlvdXNMaXN0ZW5lckxlbmd0aCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9saW5raWZpZXIuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9saW5raWZpZXIuaHRtbAppbmRleCA5Yjc5MTEzYTcyM2U3YjhjYjE4NTAwNThjYWU5ODU4MmFj
NmQ0ZGM4Li40MGYwMDY3YTVkYTQ1Yzc4YWM3OWM1NmU1YjUwMGZjMTk1YTExODUwIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvbGlua2lmaWVyLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2xpbmtpZmllci5odG1sCkBAIC0zNCw3ICsz
NCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIGZ1bmN0aW9uIGRlYnVnZ2VyVGVzdCgpCiAgICAg
ewogICAgICAgICBsaW5raWZpZXIgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJQcmVzZW50YXRpb25N
b2RlbC5jcmVhdGVMaW5raWZpZXIoKTsKLSAgICAgICAgcmF3U291cmNlQ29kZSA9IFdlYkluc3Bl
Y3Rvci5kZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLl9yYXdTb3VyY2VDb2RlRm9yVVJMW1dlYklu
c3BlY3Rvci5pbnNwZWN0ZWRQYWdlVVJMXTsKKyAgICAgICAgcmF3U291cmNlQ29kZSA9IFdlYklu
c3BlY3Rvci5kZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLl9zY3JpcHRNYXBwaW5nLl9yYXdTb3Vy
Y2VDb2RlRm9yVVJMW1dlYkluc3BlY3Rvci5pbnNwZWN0ZWRQYWdlVVJMXTsKIAogICAgICAgICB2
YXIgY291bnQxID0gbGlzdGVuZXJzQ291bnQocmF3U291cmNlQ29kZSk7CiAgICAgICAgIGxpbmsg
PSBsaW5raWZpZXIubGlua2lmeUxvY2F0aW9uKFdlYkluc3BlY3Rvci5pbnNwZWN0ZWRQYWdlVVJM
LCAyMCwgMCwgImR1bW15LWNsYXNzIik7Cg==
</data>
<flag name="review"
          id="133616"
          type_id="1"
          status="+"
          setter="vsevik"
    />
          </attachment>
      

    </bug>

</bugzilla>