<?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>66769</bug_id>
          
          <creation_ts>2011-08-23 06:01:00 -0700</creation_ts>
          <short_desc>Web Inspector: rename sourceFile to (raw|ui)SourceCode in DebuggerPresentationModel.</short_desc>
          <delta_ts>2011-08-29 08:14:36 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel 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>455355</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-08-23 06:01:00 -0700</bug_when>
    <thetext>Web Inspector: rename sourceFile to (raw|ui)SourceCode in DebuggerPresentationModel.

Rename sourceFile to (raw|ui)SourceCode and store RawSourceCode and UISourceCode instances in separate maps.
This is the last step before actually switching to RawSourceCode&lt;-&gt;UISourceCode scheme (currently only RawSourceCode is used).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455357</commentid>
    <comment_count>1</comment_count>
      <attachid>104831</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-08-23 06:02:33 -0700</bug_when>
    <thetext>Created attachment 104831
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456683</commentid>
    <comment_count>2</comment_count>
      <attachid>104831</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-08-25 00:12:59 -0700</bug_when>
    <thetext>Comment on attachment 104831
Patch

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

&gt; Source/WebCore/inspector/front-end/DebuggerPresentationModel.js:36
&gt; +    this._uiSourceCode = {};

I thought ui source code items belong to corresponding raw source code items.

&gt; Source/WebCore/inspector/front-end/SourceFile.js:77
&gt; +        uiLocation.uiSourceCode = this;

Defining class for UILocation would help understanding the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456829</commentid>
    <comment_count>3</comment_count>
      <attachid>105181</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-08-25 07:18:22 -0700</bug_when>
    <thetext>Created attachment 105181
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456830</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-08-25 07:19:02 -0700</bug_when>
    <thetext>Please take another look.

(In reply to comment #2)
&gt; (From update of attachment 104831 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=104831&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/DebuggerPresentationModel.js:36
&gt; &gt; +    this._uiSourceCode = {};
&gt; 
&gt; I thought ui source code items belong to corresponding raw source code items.

Agree.

&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/SourceFile.js:77
&gt; &gt; +        uiLocation.uiSourceCode = this;
&gt; 
&gt; Defining class for UILocation would help understanding the code.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458225</commentid>
    <comment_count>5</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-08-29 08:14:36 -0700</bug_when>
    <thetext>Committed r93977: &lt;http://trac.webkit.org/changeset/93977&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104831</attachid>
            <date>2011-08-23 06:02:33 -0700</date>
            <delta_ts>2011-08-25 07:18:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66769-20110823170230.patch</filename>
            <type>text/plain</type>
            <size>39004</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM1OTUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyNWVkZjVmNjRjMGU5Y2EyOWRmZDE1
MTkzNWU3YzExYWVlMWIzYzk2Li45M2Y3NTY5NTljZWIwNGY2ZGRhNTJlOWMyZjVhYzI4Y2JlZGVk
OTZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDgtMjMgIFBhdmVsIFBvZGl2aWxvdiAg
PHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogcmVuYW1l
IHNvdXJjZUZpbGUgdG8gKHJhd3x1aSlTb3VyY2VDb2RlIGluIERlYnVnZ2VyUHJlc2VudGF0aW9u
TW9kZWwuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
Njc2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
aW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtcGFuZWwuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvZGVidWdnZXIvc291cmNlLWZpbGUuaHRtbDoKKwogMjAxMS0wOC0yMyAgS2VudCBUYW11cmEg
IDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY2NjUxCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXIvc2NyaXB0cy1wYW5lbC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL3NjcmlwdHMtcGFuZWwuaHRtbAppbmRleCAwMTVmZGRkZmFhZDBhNWY4ZTMwYmQ2MjYzNWEx
OWUzY2EzMDExNDQxLi4xYzhlNGM5ZjIzODViZDFmMDQyNjllMzBiZDhkMjIzNDFiNDNlYzBmIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1wYW5lbC5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRzLXBhbmVsLmh0
bWwKQEAgLTE1Myw3ICsxNTMsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgICAgICAgICAgbW9k
ZWwuX2FkZFNjcmlwdChjcmVhdGVNb2NrU2NyaXB0KCJmb28uanMiLCAiMSIpKTsKICAgICAgICAg
ICAgIG1vZGVsLl9hZGRTY3JpcHQoY3JlYXRlTW9ja1NjcmlwdCgiYmFyLmpzIiwgIjIiKSk7Ci0g
ICAgICAgICAgICB2YXIgc291cmNlRmlsZSA9IG1vZGVsLl9zb3VyY2VGaWxlRm9yU2NyaXB0KCJi
YXIuanMiKTsKKyAgICAgICAgICAgIHZhciBzb3VyY2VGaWxlID0gbW9kZWwuX3Jhd1NvdXJjZUNv
ZGVGb3JTY3JpcHQoImJhci5qcyIpOwogICAgICAgICAgICAgcGFuZWwuX3NvdXJjZUZpbGVSZXBs
YWNlZCh7IGRhdGE6IHsgb2xkU291cmNlQ29kZTogc291cmNlRmlsZSwgc291cmNlQ29kZTogc291
cmNlRmlsZSB9fSk7CiAgICAgICAgICAgICBzaG93U291cmNlRnJhbWUocGFuZWwsICJiYXIuanMi
KTsKICAgICAgICAgICAgIG5leHQoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9zb3VyY2UtZmlsZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL3NvdXJjZS1maWxlLmh0bWwKaW5kZXggMzFiZWViNDk4MjM5ZmVhNGNlNjQxMjkxYmY5ODgz
NDZkMGUyZTllMi4uYzNhZmM5NmY3MTQ3YjY4MjMwNDM0NDZiNjgxNTZjOGM0MDhkZjJhNiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NvdXJjZS1maWxlLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NvdXJjZS1maWxlLmh0bWwKQEAg
LTQzLDkgKzQzLDkgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIEluc3BlY3RvclRlc3QuYXNz
ZXJ0RXF1YWxzKGNvbHVtbk51bWJlciwgbG9jYXRpb24uY29sdW1uTnVtYmVyKTsKICAgICB9CiAK
LSAgICBmdW5jdGlvbiBjaGVja1VJTG9jYXRpb24oc291cmNlRmlsZSwgbGluZU51bWJlciwgY29s
dW1uTnVtYmVyLCBsb2NhdGlvbikKKyAgICBmdW5jdGlvbiBjaGVja1VJTG9jYXRpb24ocmF3U291
cmNlQ29kZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBsb2NhdGlvbikKICAgICB7Ci0gICAg
ICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHNvdXJjZUZpbGUsIGxvY2F0aW9uLnNvdXJj
ZUZpbGUpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhyYXdTb3VyY2VDb2Rl
LnVpU291cmNlQ29kZSwgbG9jYXRpb24udWlTb3VyY2VDb2RlKTsKICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hc3NlcnRFcXVhbHMobGluZU51bWJlciwgbG9jYXRpb24ubGluZU51bWJlcik7CiAgICAg
ICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGNvbHVtbk51bWJlciwgbG9jYXRpb24uY29s
dW1uTnVtYmVyKTsKICAgICB9CkBAIC01NCwxMCArNTQsMTAgQEAgZnVuY3Rpb24gdGVzdCgpCiAg
ICAgICAgIGZ1bmN0aW9uIHRlc3RQbGFpbkNvbnZlcnRMb2NhdGlvbihuZXh0KQogICAgICAgICB7
CiAgICAgICAgICAgICB2YXIgc2NyaXB0ID0gbmV3IFdlYkluc3BlY3Rvci5TY3JpcHQoIjEiLCAi
Zm9vLmpzIiwgMCwgMCwgMjAsIDgwLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgZmFsc2UpOwotICAg
ICAgICAgICAgdmFyIHNvdXJjZUZpbGUgPSBuZXcgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUo
ImlkIiwgc2NyaXB0KTsKKyAgICAgICAgICAgIHZhciByYXdTb3VyY2VDb2RlID0gbmV3IFdlYklu
c3BlY3Rvci5SYXdTb3VyY2VDb2RlKCJpZCIsIHNjcmlwdCk7CiAKLSAgICAgICAgICAgIGNoZWNr
VUlMb2NhdGlvbihzb3VyY2VGaWxlLCAxMCwgMjAsIHNvdXJjZUZpbGUucmF3TG9jYXRpb25Ub1VJ
TG9jYXRpb24ocmwoMTAsIDIwKSkpOwotICAgICAgICAgICAgY2hlY2tSYXdMb2NhdGlvbihzY3Jp
cHQsIDMwLCA0MCwgc291cmNlRmlsZS51aUxvY2F0aW9uVG9SYXdMb2NhdGlvbigzMCwgNDApKTsK
KyAgICAgICAgICAgIGNoZWNrVUlMb2NhdGlvbihyYXdTb3VyY2VDb2RlLCAxMCwgMjAsIHJhd1Nv
dXJjZUNvZGUucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24ocmwoMTAsIDIwKSkpOworICAgICAgICAg
ICAgY2hlY2tSYXdMb2NhdGlvbihzY3JpcHQsIDMwLCA0MCwgcmF3U291cmNlQ29kZS51aUxvY2F0
aW9uVG9SYXdMb2NhdGlvbigzMCwgNDApKTsKIAogICAgICAgICAgICAgbmV4dCgpOwogICAgICAg
ICB9LApAQCAtNjYsMTQgKzY2LDE0IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICB7CiAgICAg
ICAgICAgICB2YXIgc2NyaXB0MSA9IG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0KCIxIiwgImZvby5q
cyIsIDEwLCAyMCwgMzAsIDQwLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgZmFsc2UpOwogICAgICAg
ICAgICAgdmFyIHNjcmlwdDIgPSBuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdCgiMiIsICJmb28uanMi
LCA1MCwgNjAsIDcwLCA4MCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGZhbHNlKTsKLSAgICAgICAg
ICAgIHZhciBzb3VyY2VGaWxlID0gbmV3IFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlKCJpZCIs
IHNjcmlwdDEpOwotICAgICAgICAgICAgc291cmNlRmlsZS5hZGRTY3JpcHQoc2NyaXB0Mik7Cisg
ICAgICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IG5ldyBXZWJJbnNwZWN0b3IuUmF3U291cmNl
Q29kZSgiaWQiLCBzY3JpcHQxKTsKKyAgICAgICAgICAgIHJhd1NvdXJjZUNvZGUuYWRkU2NyaXB0
KHNjcmlwdDIpOwogCi0gICAgICAgICAgICBjaGVja1VJTG9jYXRpb24oc291cmNlRmlsZSwgMjAs
IDAsIHNvdXJjZUZpbGUucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24ocmwoMjAsIDApKSk7CisgICAg
ICAgICAgICBjaGVja1VJTG9jYXRpb24ocmF3U291cmNlQ29kZSwgMjAsIDAsIHJhd1NvdXJjZUNv
ZGUucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24ocmwoMjAsIDApKSk7CiAKLSAgICAgICAgICAgIGNo
ZWNrUmF3TG9jYXRpb24oc2NyaXB0MSwgMCwgNDAsIHNvdXJjZUZpbGUudWlMb2NhdGlvblRvUmF3
TG9jYXRpb24oMCwgNDApKTsKLSAgICAgICAgICAgIGNoZWNrUmF3TG9jYXRpb24oc2NyaXB0MSwg
MjAsIDAsIHNvdXJjZUZpbGUudWlMb2NhdGlvblRvUmF3TG9jYXRpb24oMjAsIDApKTsKLSAgICAg
ICAgICAgIGNoZWNrUmF3TG9jYXRpb24oc2NyaXB0MiwgNTAsIDYwLCBzb3VyY2VGaWxlLnVpTG9j
YXRpb25Ub1Jhd0xvY2F0aW9uKDUwLCA2MCkpOworICAgICAgICAgICAgY2hlY2tSYXdMb2NhdGlv
bihzY3JpcHQxLCAwLCA0MCwgcmF3U291cmNlQ29kZS51aUxvY2F0aW9uVG9SYXdMb2NhdGlvbigw
LCA0MCkpOworICAgICAgICAgICAgY2hlY2tSYXdMb2NhdGlvbihzY3JpcHQxLCAyMCwgMCwgcmF3
U291cmNlQ29kZS51aUxvY2F0aW9uVG9SYXdMb2NhdGlvbigyMCwgMCkpOworICAgICAgICAgICAg
Y2hlY2tSYXdMb2NhdGlvbihzY3JpcHQyLCA1MCwgNjAsIHJhd1NvdXJjZUNvZGUudWlMb2NhdGlv
blRvUmF3TG9jYXRpb24oNTAsIDYwKSk7CiAKICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAg
fSwKQEAgLTgxLDQ1ICs4MSw0NSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgZnVuY3Rpb24g
dGVzdEZvcm1hdHRlZENvbnZlcnRMb2NhdGlvbihuZXh0KQogICAgICAgICB7CiAgICAgICAgICAg
ICB2YXIgc2NyaXB0ID0gbmV3IFdlYkluc3BlY3Rvci5TY3JpcHQoIjEiLCAiZm9vLmpzIiwgMCwg
MCwgMjAsIDgwLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgZmFsc2UpOwotICAgICAgICAgICAgdmFy
IHNvdXJjZUZpbGUgPSBuZXcgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUoImlkIiwgc2NyaXB0
LCBtb2NrU2NyaXB0Rm9ybWF0dGVyKTsKLSAgICAgICAgICAgIHNvdXJjZUZpbGUuc2V0Rm9ybWF0
dGVkKHRydWUpOworICAgICAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSBuZXcgV2ViSW5zcGVj
dG9yLlJhd1NvdXJjZUNvZGUoImlkIiwgc2NyaXB0LCBtb2NrU2NyaXB0Rm9ybWF0dGVyKTsKKyAg
ICAgICAgICAgIHJhd1NvdXJjZUNvZGUuc2V0Rm9ybWF0dGVkKHRydWUpOwogCiAgICAgICAgICAg
ICBmdW5jdGlvbiBkaWRDcmVhdGVTb3VyY2VNYXBwaW5nKCkKICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBjaGVja1VJTG9jYXRpb24oc291cmNlRmlsZSwgMjIsIDQwLCBzb3VyY2VGaWxl
LnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKHJsKDExLCAyMCkpKTsKLSAgICAgICAgICAgICAgICBj
aGVja1Jhd0xvY2F0aW9uKHNjcmlwdCwgNywgOSwgc291cmNlRmlsZS51aUxvY2F0aW9uVG9SYXdM
b2NhdGlvbigxNCwgMTkpKTsKKyAgICAgICAgICAgICAgICBjaGVja1VJTG9jYXRpb24ocmF3U291
cmNlQ29kZSwgMjIsIDQwLCByYXdTb3VyY2VDb2RlLnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKHJs
KDExLCAyMCkpKTsKKyAgICAgICAgICAgICAgICBjaGVja1Jhd0xvY2F0aW9uKHNjcmlwdCwgNywg
OSwgcmF3U291cmNlQ29kZS51aUxvY2F0aW9uVG9SYXdMb2NhdGlvbigxNCwgMTkpKTsKICAgICAg
ICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBzb3VyY2VGaWxl
LmNyZWF0ZVNvdXJjZU1hcHBpbmdJZk5lZWRlZChkaWRDcmVhdGVTb3VyY2VNYXBwaW5nKTsKKyAg
ICAgICAgICAgIHJhd1NvdXJjZUNvZGUuY3JlYXRlU291cmNlTWFwcGluZ0lmTmVlZGVkKGRpZENy
ZWF0ZVNvdXJjZU1hcHBpbmcpOwogICAgICAgICB9LAogCiAgICAgICAgIGZ1bmN0aW9uIHRlc3RD
b25jYXRlbmF0ZWRGb3JtYXR0ZWRDb252ZXJ0TG9jYXRpb24obmV4dCkKICAgICAgICAgewogICAg
ICAgICAgICAgdmFyIHNjcmlwdDEgPSBuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdCgiMSIsICJmb28u
anMiLCAxMCwgMjAsIDMwLCA0MCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGZhbHNlKTsKICAgICAg
ICAgICAgIHZhciBzY3JpcHQyID0gbmV3IFdlYkluc3BlY3Rvci5TY3JpcHQoIjIiLCAiZm9vLmpz
IiwgNTAsIDYwLCA3MCwgODAsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBmYWxzZSk7Ci0gICAgICAg
ICAgICB2YXIgc291cmNlRmlsZSA9IG5ldyBXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZSgiaWQi
LCBzY3JpcHQxLCBtb2NrU2NyaXB0Rm9ybWF0dGVyKTsKLSAgICAgICAgICAgIHNvdXJjZUZpbGUu
c2V0Rm9ybWF0dGVkKHRydWUpOwotICAgICAgICAgICAgc291cmNlRmlsZS5hZGRTY3JpcHQoc2Ny
aXB0Mik7CisgICAgICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IG5ldyBXZWJJbnNwZWN0b3Iu
UmF3U291cmNlQ29kZSgiaWQiLCBzY3JpcHQxLCBtb2NrU2NyaXB0Rm9ybWF0dGVyKTsKKyAgICAg
ICAgICAgIHJhd1NvdXJjZUNvZGUuc2V0Rm9ybWF0dGVkKHRydWUpOworICAgICAgICAgICAgcmF3
U291cmNlQ29kZS5hZGRTY3JpcHQoc2NyaXB0Mik7CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGRp
ZENyZWF0ZVNvdXJjZU1hcHBpbmcoKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNo
ZWNrVUlMb2NhdGlvbihzb3VyY2VGaWxlLCAyMiwgNjAsIHNvdXJjZUZpbGUucmF3TG9jYXRpb25U
b1VJTG9jYXRpb24ocmwoMTEsIDMwKSkpOwotICAgICAgICAgICAgICAgIGNoZWNrUmF3TG9jYXRp
b24oc2NyaXB0MSwgMTIsIDEwLCBzb3VyY2VGaWxlLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKDI0
LCAyMCkpOwotICAgICAgICAgICAgICAgIGNoZWNrUmF3TG9jYXRpb24oc2NyaXB0MiwgNjAsIDE5
LCBzb3VyY2VGaWxlLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKDEyMSwgMzgpKTsKKyAgICAgICAg
ICAgICAgICBjaGVja1VJTG9jYXRpb24ocmF3U291cmNlQ29kZSwgMjIsIDYwLCByYXdTb3VyY2VD
b2RlLnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKHJsKDExLCAzMCkpKTsKKyAgICAgICAgICAgICAg
ICBjaGVja1Jhd0xvY2F0aW9uKHNjcmlwdDEsIDEyLCAxMCwgcmF3U291cmNlQ29kZS51aUxvY2F0
aW9uVG9SYXdMb2NhdGlvbigyNCwgMjApKTsKKyAgICAgICAgICAgICAgICBjaGVja1Jhd0xvY2F0
aW9uKHNjcmlwdDIsIDYwLCAxOSwgcmF3U291cmNlQ29kZS51aUxvY2F0aW9uVG9SYXdMb2NhdGlv
bigxMjEsIDM4KSk7CiAgICAgICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgc291cmNlRmlsZS5jcmVhdGVTb3VyY2VNYXBwaW5nSWZOZWVkZWQoZGlkQ3JlYXRl
U291cmNlTWFwcGluZyk7CisgICAgICAgICAgICByYXdTb3VyY2VDb2RlLmNyZWF0ZVNvdXJjZU1h
cHBpbmdJZk5lZWRlZChkaWRDcmVhdGVTb3VyY2VNYXBwaW5nKTsKICAgICAgICAgfSwKIAogICAg
ICAgICBmdW5jdGlvbiB0ZXN0VUlTb3VyY2VDb2RlQWRkZWQobmV4dCkKICAgICAgICAgewogICAg
ICAgICAgICAgdmFyIHNjcmlwdCA9IG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0KCIxIiwgImZvby5q
cyIsIDAsIDAsIDIwLCA4MCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGZhbHNlKTsKLSAgICAgICAg
ICAgIHZhciBzb3VyY2VGaWxlID0gbmV3IFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlKCJpZCIs
IHNjcmlwdCk7CisgICAgICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IG5ldyBXZWJJbnNwZWN0
b3IuUmF3U291cmNlQ29kZSgiaWQiLCBzY3JpcHQpOwogICAgICAgICAgICAgZnVuY3Rpb24gdWlT
b3VyY2VDb2RlQWRkZWQoZXZlbnQpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoImZvby5qcyIsIGV2ZW50LmRhdGEudXJsKTsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHNvdXJjZUZpbGUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuUmF3U291cmNlQ29kZS5FdmVudHMuVUlTb3VyY2VDb2RlQWRkZWQsIHVpU291cmNlQ29k
ZUFkZGVkLCB0aGlzKTsKKyAgICAgICAgICAgIHJhd1NvdXJjZUNvZGUuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5FdmVudHMuVUlTb3VyY2VDb2RlQWRkZWQsIHVp
U291cmNlQ29kZUFkZGVkLCB0aGlzKTsKIAogICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggMjNiYTA1Y2Y1MzExYTE3MDRmZDY3MjM1MmE1ZjlkYWE0NzhmM2VkNC4u
MjA5NmQ3MDE3ZGY2M2U1YjA1NjQ4ZGE0MDg4NGMxNmNmZTNjNDZiMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDU3IEBACisyMDExLTA4LTIzICBQYXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlbmFtZSBzb3VyY2VGaWxlIHRv
IChyYXd8dWkpU291cmNlQ29kZSBpbiBEZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY3NjkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1
Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5zb3VyY2VGaWxlKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5fc2NyaXB0TG9j
YXRpb25Ub1VJTG9jYXRpb24uZGlkQ3JlYXRlU291cmNlTWFwcGluZyk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX3NjcmlwdExvY2F0
aW9uVG9VSUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRh
dGlvbk1vZGVsLnByb3RvdHlwZS5fdWlMb2NhdGlvblRvU2NyaXB0TG9jYXRpb24uZGlkQ3JlYXRl
U291cmNlTWFwcGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRp
b25Nb2RlbC5wcm90b3R5cGUuX3VpTG9jYXRpb25Ub1NjcmlwdExvY2F0aW9uKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5saW5raWZ5
TG9jYXRpb24udXBkYXRlQW5jaG9yLmRpZEdldExvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5saW5raWZ5TG9jYXRpb24u
dXBkYXRlQW5jaG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlv
bk1vZGVsLnByb3RvdHlwZS5saW5raWZ5TG9jYXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLl9hZGRTY3JpcHQuZGlkQ3JlYXRl
U291cmNlTWFwcGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRp
b25Nb2RlbC5wcm90b3R5cGUuX2FkZFNjcmlwdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVi
dWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX3VpU291cmNlQ29kZVJlcGxhY2VkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlw
ZS5jYW5FZGl0U2NyaXB0U291cmNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclBy
ZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5zZXRTY3JpcHRTb3VyY2UuZGlkRWRpdFNjcmlwdFNv
dXJjZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5w
cm90b3R5cGUuc2V0U2NyaXB0U291cmNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dl
clByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5fdXBkYXRlQnJlYWtwb2ludHNBZnRlckxpdmVF
ZGl0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnBy
b3RvdHlwZS5zZXRGb3JtYXRTb3VyY2VGaWxlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVi
dWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX2FkZENvbnNvbGVNZXNzYWdlLmRpZEdl
dFVJTG9jYXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9u
TW9kZWwucHJvdG90eXBlLl9hZGRDb25zb2xlTWVzc2FnZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX2NvbnNvbGVDbGVhcmVkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlw
ZS5jb250aW51ZVRvTGluZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50
YXRpb25Nb2RlbC5wcm90b3R5cGUuYnJlYWtwb2ludHNGb3JTb3VyY2VGaWxlSWQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLnNldEJy
ZWFrcG9pbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9k
ZWwucHJvdG90eXBlLnNldEJyZWFrcG9pbnRFbmFibGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS51cGRhdGVCcmVha3BvaW50KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlw
ZS5yZW1vdmVCcmVha3BvaW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNl
bnRhdGlvbk1vZGVsLnByb3RvdHlwZS5maW5kQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX2JyZWFrcG9pbnRBZGRl
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90
b3R5cGUuX2JyZWFrcG9pbnRSZW1vdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dl
clByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5fZGVidWdnZXJQYXVzZWQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLl9yYXdTb3Vy
Y2VDb2RlRm9yU2NyaXB0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRh
dGlvbk1vZGVsLnByb3RvdHlwZS5fc2NyaXB0Rm9yUmF3U291cmNlQ29kZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX2NyZWF0ZVJh
d1NvdXJjZUNvZGVJZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRp
b25Nb2RlbC5wcm90b3R5cGUuX2RlYnVnZ2VyUmVzZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlByZXNlbnRhdGlvbkJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByZXNlbmF0
aW9uQ2FsbEZyYW1lLnByb3RvdHlwZS5zb3VyY2VMaW5lLmRpZEdldFVJTG9jYXRpb24pOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlByZXNlbmF0aW9uQ2FsbEZyYW1lLnByb3RvdHlwZS5zb3VyY2VM
aW5lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsUmVz
b3VyY2VCaW5kaW5nLnByb3RvdHlwZS5jYW5TZXRDb250ZW50KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsUmVzb3VyY2VCaW5kaW5nLnByb3RvdHlwZS5z
ZXRDb250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1v
ZGVsUmVzb3VyY2VCaW5kaW5nLnByb3RvdHlwZS5fc2V0Q29udGVudFdpdGhJbml0aWFsQ29udGVu
dCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5jYW5TaG93QW5jaG9yTG9j
YXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lRGVsZWdhdGVGb3JTY3Jp
cHRzUGFuZWwucHJvdG90eXBlLnJlcXVlc3RDb250ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NvdXJjZUZpbGUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmF3U291cmNl
Q29kZS5wcm90b3R5cGUucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24pOgorCiAyMDExLTA4LTE5ICBQ
YXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IHN3aXRjaCB0byB1c2luZyBCcmVha3BvaW50TWFuYWdlci4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25N
b2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVz
ZW50YXRpb25Nb2RlbC5qcwppbmRleCA4OTVmNDljM2Y4OTI4M2E4OTk2M2IyN2UxMzhmMTE4YmI3
M2E2Mzk3Li5jYzIxZGVkNTAyMDVmYmQ0ZDZjODI1M2ZmNzRkNjg5MWM5Y2VjZTdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0
aW9uTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1
Z2dlclByZXNlbnRhdGlvbk1vZGVsLmpzCkBAIC0zMiw3ICszMiw4IEBAIFdlYkluc3BlY3Rvci5E
ZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsID0gZnVuY3Rpb24oKQogewogICAgIC8vIEZJWE1FOiBh
cHBseSBmb3JtYXR0ZXIgZnJvbSBvdXRzaWRlIGFzIGEgZ2VuZXJpYyBtYXBwaW5nLgogICAgIHRo
aXMuX2Zvcm1hdHRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0Rm9ybWF0dGVyKCk7Ci0gICAg
dGhpcy5fc291cmNlRmlsZXMgPSB7fTsKKyAgICB0aGlzLl9yYXdTb3VyY2VDb2RlID0ge307Cisg
ICAgdGhpcy5fdWlTb3VyY2VDb2RlID0ge307CiAgICAgdGhpcy5fbWVzc2FnZXMgPSBbXTsKICAg
ICAvLyBGSVhNRTogbW92ZSB0aGlzIHRvIFJhd1NvdXJjZUNvZGUgd2hlbiBpdCdzIG5vdCByZS1j
cmVhdGVkIGluIHByZXR0eS1wcmludCBtb2RlLgogICAgIHRoaXMuX3NvdXJjZU1hcHBpbmdMaXN0
ZW5lcnMgPSBbXTsKQEAgLTY3LDQ3ICs2OCwzNyBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVz
ZW50YXRpb25Nb2RlbC5FdmVudHMgPSB7CiB9CiAKIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNl
bnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKLSAgICBzb3VyY2VGaWxlOiBmdW5jdGlvbihzb3Vy
Y2VGaWxlSWQpCisgICAgc291cmNlRmlsZTogZnVuY3Rpb24odWlTb3VyY2VDb2RlSWQpCiAgICAg
ewotICAgICAgICByZXR1cm4gdGhpcy5fc291cmNlRmlsZXNbc291cmNlRmlsZUlkXTsKLSAgICB9
LAotCi0gICAgc291cmNlRmlsZUZvclNjcmlwdFVSTDogZnVuY3Rpb24oc2NyaXB0VVJMKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3NvdXJjZUZpbGVzW3RoaXMuX2NyZWF0ZVNvdXJjZUZp
bGVJZChzY3JpcHRVUkwpXTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3VpU291cmNlQ29kZVt1aVNv
dXJjZUNvZGVJZF07CiAgICAgfSwKIAogICAgIF9zY3JpcHRMb2NhdGlvblRvVUlMb2NhdGlvbjog
ZnVuY3Rpb24oc291cmNlVVJMLCBzY3JpcHRJZCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBj
YWxsYmFjaykKICAgICB7Ci0gICAgICAgIHZhciBzb3VyY2VGaWxlID0gdGhpcy5fc291cmNlRmls
ZUZvclNjcmlwdChzb3VyY2VVUkwsIHNjcmlwdElkKTsKKyAgICAgICAgdmFyIHJhd1NvdXJjZUNv
ZGUgPSB0aGlzLl9yYXdTb3VyY2VDb2RlRm9yU2NyaXB0KHNvdXJjZVVSTCwgc2NyaXB0SWQpOwog
CiAgICAgICAgIGZ1bmN0aW9uIGRpZENyZWF0ZVNvdXJjZU1hcHBpbmcoKQogICAgICAgICB7Ci0g
ICAgICAgICAgICB2YXIgdWlMb2NhdGlvbiA9IHNvdXJjZUZpbGUucmF3TG9jYXRpb25Ub1VJTG9j
YXRpb24oeyBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXI6IGNvbHVtbk51bWJl
ciB9KTsKLSAgICAgICAgICAgIGNhbGxiYWNrKHVpTG9jYXRpb24uc291cmNlRmlsZS5pZCwgdWlM
b2NhdGlvbi5saW5lTnVtYmVyKTsKKyAgICAgICAgICAgIHZhciB1aUxvY2F0aW9uID0gcmF3U291
cmNlQ29kZS5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbih7IGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlcjogY29sdW1uTnVtYmVyIH0pOworICAgICAgICAgICAgY2FsbGJhY2sodWlM
b2NhdGlvbi51aVNvdXJjZUNvZGUsIHVpTG9jYXRpb24ubGluZU51bWJlcik7CiAgICAgICAgIH0K
ICAgICAgICAgLy8gRklYTUU6IGZvcmNlIHNvdXJjZSBmb3JtYXR0aW5nIGlmIG5lZWRlZC4gVGhp
cyB3aWxsIGdvIGF3YXkgb25jZSBmb3JtYXR0aW5nCiAgICAgICAgIC8vIGlzIGZ1bGx5IGVuY2Fw
c3VsYXRlZCBpbiBSYXdTb3VyY2VDb2RlIGNsYXNzLgotICAgICAgICBzb3VyY2VGaWxlLmNyZWF0
ZVNvdXJjZU1hcHBpbmdJZk5lZWRlZChkaWRDcmVhdGVTb3VyY2VNYXBwaW5nKTsKKyAgICAgICAg
cmF3U291cmNlQ29kZS5jcmVhdGVTb3VyY2VNYXBwaW5nSWZOZWVkZWQoZGlkQ3JlYXRlU291cmNl
TWFwcGluZyk7CiAgICAgfSwKIAotICAgIF91aUxvY2F0aW9uVG9TY3JpcHRMb2NhdGlvbjogZnVu
Y3Rpb24oc291cmNlRmlsZUlkLCBsaW5lTnVtYmVyLCBjYWxsYmFjaykKKyAgICBfdWlMb2NhdGlv
blRvU2NyaXB0TG9jYXRpb246IGZ1bmN0aW9uKHVpU291cmNlQ29kZUlkLCBsaW5lTnVtYmVyLCBj
YWxsYmFjaykKICAgICB7Ci0gICAgICAgIHZhciBzb3VyY2VGaWxlID0gdGhpcy5fc291cmNlRmls
ZXNbc291cmNlRmlsZUlkXTsKKyAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSB0aGlzLl91aVNv
dXJjZUNvZGVbdWlTb3VyY2VDb2RlSWRdLnVpU291cmNlQ29kZTsKIAogICAgICAgICBmdW5jdGlv
biBkaWRDcmVhdGVTb3VyY2VNYXBwaW5nKCkKICAgICAgICAgewotICAgICAgICAgICAgdmFyIHJh
d0xvY2F0aW9uID0gc291cmNlRmlsZS51aUxvY2F0aW9uVG9SYXdMb2NhdGlvbihsaW5lTnVtYmVy
LCAwKTsKKyAgICAgICAgICAgIHZhciByYXdMb2NhdGlvbiA9IHJhd1NvdXJjZUNvZGUudWlMb2Nh
dGlvblRvUmF3TG9jYXRpb24obGluZU51bWJlciwgMCk7CiAgICAgICAgICAgICBjYWxsYmFjayhy
YXdMb2NhdGlvbik7CiAgICAgICAgIH0KICAgICAgICAgLy8gRklYTUU6IGZvcmNlIHNvdXJjZSBm
b3JtYXR0aW5nIGlmIG5lZWRlZC4gVGhpcyB3aWxsIGdvIGF3YXkgb25jZSBmb3JtYXR0aW5nCiAg
ICAgICAgIC8vIGlzIGZ1bGx5IGVuY2Fwc3VsYXRlZCBpbiBSYXdTb3VyY2VDb2RlIGNsYXNzLgot
ICAgICAgICBzb3VyY2VGaWxlLmNyZWF0ZVNvdXJjZU1hcHBpbmdJZk5lZWRlZChkaWRDcmVhdGVT
b3VyY2VNYXBwaW5nKTsKLSAgICB9LAotCi0gICAgcmVxdWVzdFNvdXJjZUZpbGVDb250ZW50OiBm
dW5jdGlvbihzb3VyY2VGaWxlSWQsIGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgdGhpcy5fc291
cmNlRmlsZXNbc291cmNlRmlsZUlkXS5yZXF1ZXN0Q29udGVudChjYWxsYmFjayk7CisgICAgICAg
IHJhd1NvdXJjZUNvZGUuY3JlYXRlU291cmNlTWFwcGluZ0lmTmVlZGVkKGRpZENyZWF0ZVNvdXJj
ZU1hcHBpbmcpOwogICAgIH0sCiAKICAgICBhZGRTb3VyY2VNYXBwaW5nTGlzdGVuZXI6IGZ1bmN0
aW9uKHNvdXJjZVVSTCwgc291cmNlSWQsIGxpc3RlbmVyKQpAQCAtMTI1LDggKzExNiw4IEBAIFdl
Ykluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgdmFyIGxpbmtUZXh0ID0gV2ViSW5zcGVjdG9yLmZvcm1hdExpbmtUZXh0KHNvdXJjZVVSTCwg
bGluZU51bWJlcik7CiAgICAgICAgIHZhciBhbmNob3IgPSBXZWJJbnNwZWN0b3IubGlua2lmeVVS
TEFzTm9kZShzb3VyY2VVUkwsIGxpbmtUZXh0LCBjbGFzc2VzLCBmYWxzZSk7CiAKLSAgICAgICAg
dmFyIHNvdXJjZUZpbGUgPSB0aGlzLl9zb3VyY2VGaWxlRm9yU2NyaXB0KHNvdXJjZVVSTCk7Ci0g
ICAgICAgIGlmICghc291cmNlRmlsZSkgeworICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IHRo
aXMuX3Jhd1NvdXJjZUNvZGVGb3JTY3JpcHQoc291cmNlVVJMKTsKKyAgICAgICAgaWYgKCFyYXdT
b3VyY2VDb2RlKSB7CiAgICAgICAgICAgICBhbmNob3Iuc2V0QXR0cmlidXRlKCJwcmVmZXJyZWRf
cGFuZWwiLCAicmVzb3VyY2VzIik7CiAgICAgICAgICAgICBhbmNob3Iuc2V0QXR0cmlidXRlKCJs
aW5lX251bWJlciIsIGxpbmVOdW1iZXIpOwogICAgICAgICAgICAgcmV0dXJuIGFuY2hvcjsKQEAg
LTEzNCwxMSArMTI1LDExIEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVs
LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBmdW5jdGlvbiB1cGRhdGVBbmNob3IoKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBmdW5jdGlvbiBkaWRHZXRMb2NhdGlvbihzb3VyY2VGaWxlSWQsIGxp
bmVOdW1iZXIpCisgICAgICAgICAgICBmdW5jdGlvbiBkaWRHZXRMb2NhdGlvbih1aVNvdXJjZUNv
ZGUsIGxpbmVOdW1iZXIpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYW5jaG9yLnRl
eHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLmZvcm1hdExpbmtUZXh0KHNvdXJjZUZpbGUudXJsLCBs
aW5lTnVtYmVyKTsKKyAgICAgICAgICAgICAgICBhbmNob3IudGV4dENvbnRlbnQgPSBXZWJJbnNw
ZWN0b3IuZm9ybWF0TGlua1RleHQodWlTb3VyY2VDb2RlLnVybCwgbGluZU51bWJlcik7CiAgICAg
ICAgICAgICAgICAgYW5jaG9yLnNldEF0dHJpYnV0ZSgicHJlZmVycmVkX3BhbmVsIiwgInNjcmlw
dHMiKTsKLSAgICAgICAgICAgICAgICBhbmNob3Iuc2V0QXR0cmlidXRlKCJzb3VyY2VfZmlsZV9p
ZCIsIHNvdXJjZUZpbGVJZCk7CisgICAgICAgICAgICAgICAgYW5jaG9yLnNldEF0dHJpYnV0ZSgi
c291cmNlX2ZpbGVfaWQiLCB1aVNvdXJjZUNvZGUuaWQpOwogICAgICAgICAgICAgICAgIGFuY2hv
ci5zZXRBdHRyaWJ1dGUoImxpbmVfbnVtYmVyIiwgbGluZU51bWJlcik7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB0aGlzLl9zY3JpcHRMb2NhdGlvblRvVUlMb2NhdGlvbihzb3VyY2VVUkws
IG51bGwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZGlkR2V0TG9jYXRpb24uYmluZCh0aGlz
KSk7CkBAIC0xNjAsMjIgKzE1MSwyMiBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRp
b25Nb2RlbC5wcm90b3R5cGUgPSB7CiAKICAgICBfYWRkU2NyaXB0OiBmdW5jdGlvbihzY3JpcHQp
CiAgICAgewotICAgICAgICB2YXIgc291cmNlRmlsZUlkID0gdGhpcy5fY3JlYXRlU291cmNlRmls
ZUlkKHNjcmlwdC5zb3VyY2VVUkwsIHNjcmlwdC5zY3JpcHRJZCk7Ci0gICAgICAgIHZhciBzb3Vy
Y2VGaWxlID0gdGhpcy5fc291cmNlRmlsZXNbc291cmNlRmlsZUlkXTsKLSAgICAgICAgaWYgKHNv
dXJjZUZpbGUpIHsKLSAgICAgICAgICAgIHNvdXJjZUZpbGUuYWRkU2NyaXB0KHNjcmlwdCk7Cisg
ICAgICAgIHZhciByYXdTb3VyY2VDb2RlSWQgPSB0aGlzLl9jcmVhdGVSYXdTb3VyY2VDb2RlSWQo
c2NyaXB0LnNvdXJjZVVSTCwgc2NyaXB0LnNjcmlwdElkKTsKKyAgICAgICAgdmFyIHJhd1NvdXJj
ZUNvZGUgPSB0aGlzLl9yYXdTb3VyY2VDb2RlW3Jhd1NvdXJjZUNvZGVJZF07CisgICAgICAgIGlm
IChyYXdTb3VyY2VDb2RlKSB7CisgICAgICAgICAgICByYXdTb3VyY2VDb2RlLmFkZFNjcmlwdChz
Y3JpcHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgc291cmNl
RmlsZSA9IG5ldyBXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZShzb3VyY2VGaWxlSWQsIHNjcmlw
dCwgdGhpcy5fZm9ybWF0dGVyKTsKLSAgICAgICAgc291cmNlRmlsZS5zZXRGb3JtYXR0ZWQodGhp
cy5fZm9ybWF0U291cmNlRmlsZXMpOwotICAgICAgICB0aGlzLl9zb3VyY2VGaWxlc1tzb3VyY2VG
aWxlSWRdID0gc291cmNlRmlsZTsKLSAgICAgICAgc291cmNlRmlsZS5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkV2ZW50cy5VSVNvdXJjZUNvZGVSZXBsYWNlZCwg
dGhpcy5fdWlTb3VyY2VDb2RlUmVwbGFjZWQsIHRoaXMpOworICAgICAgICByYXdTb3VyY2VDb2Rl
ID0gbmV3IFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlKHJhd1NvdXJjZUNvZGVJZCwgc2NyaXB0
LCB0aGlzLl9mb3JtYXR0ZXIpOworICAgICAgICByYXdTb3VyY2VDb2RlLnNldEZvcm1hdHRlZCh0
aGlzLl9mb3JtYXRTb3VyY2UpOworICAgICAgICB0aGlzLl9yYXdTb3VyY2VDb2RlW3Jhd1NvdXJj
ZUNvZGVJZF0gPSByYXdTb3VyY2VDb2RlOworICAgICAgICByYXdTb3VyY2VDb2RlLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUuRXZlbnRzLlVJU291cmNlQ29kZVJl
cGxhY2VkLCB0aGlzLl91aVNvdXJjZUNvZGVSZXBsYWNlZCwgdGhpcyk7CiAKICAgICAgICAgZnVu
Y3Rpb24gZGlkQ3JlYXRlU291cmNlTWFwcGluZygpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHRo
aXMuX2JyZWFrcG9pbnRNYW5hZ2VyLnVpU291cmNlQ29kZUFkZGVkKHNvdXJjZUZpbGUpOwotICAg
ICAgICAgICAgdmFyIGJyZWFrcG9pbnRzID0gdGhpcy5fYnJlYWtwb2ludE1hbmFnZXIuYnJlYWtw
b2ludHNGb3JVSVNvdXJjZUNvZGUoc291cmNlRmlsZUlkKTsKKyAgICAgICAgICAgIHRoaXMuX2Jy
ZWFrcG9pbnRNYW5hZ2VyLnVpU291cmNlQ29kZUFkZGVkKHJhd1NvdXJjZUNvZGUudWlTb3VyY2VD
b2RlKTsKKyAgICAgICAgICAgIHZhciBicmVha3BvaW50cyA9IHRoaXMuX2JyZWFrcG9pbnRNYW5h
Z2VyLmJyZWFrcG9pbnRzRm9yVUlTb3VyY2VDb2RlKHJhd1NvdXJjZUNvZGUudWlTb3VyY2VDb2Rl
LmlkKTsKICAgICAgICAgICAgIGZvciAodmFyIGxpbmVOdW1iZXIgaW4gYnJlYWtwb2ludHMpIHsK
ICAgICAgICAgICAgICAgICB2YXIgYnJlYWtwb2ludCA9IGJyZWFrcG9pbnRzW2xpbmVOdW1iZXJd
OwogICAgICAgICAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRBZGRlZChicmVha3BvaW50LnVpU291
cmNlQ29kZUlkLCBicmVha3BvaW50LmxpbmVOdW1iZXIsIGJyZWFrcG9pbnQuY29uZGl0aW9uLCBi
cmVha3BvaW50LmVuYWJsZWQpOwpAQCAtMTgzLDkgKzE3NCwxMSBAQCBXZWJJbnNwZWN0b3IuRGVi
dWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICAgICAg
Ly8gRklYTUU6IGZvcmNlIHNvdXJjZSBmb3JtYXR0aW5nIGlmIG5lZWRlZC4gVGhpcyB3aWxsIGdv
IGF3YXkgb25jZSBmb3JtYXR0aW5nCiAgICAgICAgIC8vIGlzIGZ1bGx5IGVuY2Fwc3VsYXRlZCBp
biBSYXdTb3VyY2VDb2RlIGNsYXNzLgotICAgICAgICBzb3VyY2VGaWxlLmNyZWF0ZVNvdXJjZU1h
cHBpbmdJZk5lZWRlZChkaWRDcmVhdGVTb3VyY2VNYXBwaW5nLmJpbmQodGhpcykpOworICAgICAg
ICByYXdTb3VyY2VDb2RlLmNyZWF0ZVNvdXJjZU1hcHBpbmdJZk5lZWRlZChkaWRDcmVhdGVTb3Vy
Y2VNYXBwaW5nLmJpbmQodGhpcykpOwogCi0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkV2ZW50cy5Tb3Vy
Y2VGaWxlQWRkZWQsIHNvdXJjZUZpbGUudWlTb3VyY2VDb2RlKTsKKyAgICAgICAgdmFyIHVpU291
cmNlQ29kZSA9IHJhd1NvdXJjZUNvZGUudWlTb3VyY2VDb2RlOworICAgICAgICB0aGlzLl91aVNv
dXJjZUNvZGVbdWlTb3VyY2VDb2RlLmlkXSA9IHVpU291cmNlQ29kZTsKKyAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9u
TW9kZWwuRXZlbnRzLlNvdXJjZUZpbGVBZGRlZCwgdWlTb3VyY2VDb2RlKTsKICAgICB9LAogCiAg
ICAgX3VpU291cmNlQ29kZVJlcGxhY2VkOiBmdW5jdGlvbihldmVudCkKQEAgLTE5MywzMiArMTg2
LDMzIEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgdmFyIG9sZFVJU291cmNlQ29kZSA9IGV2ZW50LmRhdGEub2xkU291cmNlQ29k
ZTsKICAgICAgICAgdmFyIG5ld1VJU291cmNlQ29kZSA9IGV2ZW50LmRhdGEuc291cmNlQ29kZTsK
IAotICAgICAgICBkZWxldGUgdGhpcy5fc291cmNlRmlsZXNbb2xkVUlTb3VyY2VDb2RlLmlkXTsK
LSAgICAgICAgdGhpcy5fc291cmNlRmlsZXNbbmV3VUlTb3VyY2VDb2RlLmlkXSA9IG5ld1VJU291
cmNlQ29kZTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX3VpU291cmNlQ29kZVtvbGRVSVNvdXJjZUNv
ZGUuaWRdOworICAgICAgICB0aGlzLl91aVNvdXJjZUNvZGVbbmV3VUlTb3VyY2VDb2RlLmlkXSA9
IG5ld1VJU291cmNlQ29kZTsKIAogICAgICAgICAvLyBGSVhNRTogcmVzdG9yZSBicmVha3BvaW50
cyBpbiBuZXcgc291cmNlIGNvZGUgKGN1cnJlbnRseSB3ZSBqdXN0IHJlY3JlYXRlIGV2ZXJ5dGhp
bmcgd2hlbiBzd2l0Y2hpbmcgdG8gcHJldHR5LXByaW50IG1vZGUpLgogICAgICAgICB0aGlzLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25N
b2RlbC5FdmVudHMuU291cmNlRmlsZVJlcGxhY2VkLCBldmVudC5kYXRhKTsKICAgICB9LAogCi0g
ICAgY2FuRWRpdFNjcmlwdFNvdXJjZTogZnVuY3Rpb24oc291cmNlRmlsZUlkKQorICAgIGNhbkVk
aXRTY3JpcHRTb3VyY2U6IGZ1bmN0aW9uKHVpU291cmNlQ29kZUlkKQogICAgIHsKLSAgICAgICAg
aWYgKCFQcmVmZXJlbmNlcy5jYW5FZGl0U2NyaXB0U291cmNlIHx8IHRoaXMuX2Zvcm1hdFNvdXJj
ZUZpbGVzKQorICAgICAgICBpZiAoIVByZWZlcmVuY2VzLmNhbkVkaXRTY3JpcHRTb3VyY2UgfHwg
dGhpcy5fZm9ybWF0U291cmNlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB2
YXIgc2NyaXB0ID0gdGhpcy5fc2NyaXB0Rm9yU291cmNlRmlsZUlkKHNvdXJjZUZpbGVJZCk7Cisg
ICAgICAgIHZhciByYXdTb3VyY2VDb2RlID0gdGhpcy5fdWlTb3VyY2VDb2RlW3VpU291cmNlQ29k
ZUlkXS5yYXdTb3VyY2VDb2RlOworICAgICAgICB2YXIgc2NyaXB0ID0gdGhpcy5fc2NyaXB0Rm9y
UmF3U291cmNlQ29kZShyYXdTb3VyY2VDb2RlKTsKICAgICAgICAgcmV0dXJuICFzY3JpcHQubGlu
ZU9mZnNldCAmJiAhc2NyaXB0LmNvbHVtbk9mZnNldDsKICAgICB9LAogCi0gICAgc2V0U2NyaXB0
U291cmNlOiBmdW5jdGlvbihzb3VyY2VGaWxlSWQsIG5ld1NvdXJjZSwgY2FsbGJhY2spCisgICAg
c2V0U2NyaXB0U291cmNlOiBmdW5jdGlvbih1aVNvdXJjZUNvZGVJZCwgbmV3U291cmNlLCBjYWxs
YmFjaykKICAgICB7Ci0gICAgICAgIHZhciBzY3JpcHQgPSB0aGlzLl9zY3JpcHRGb3JTb3VyY2VG
aWxlSWQoc291cmNlRmlsZUlkKTsKLSAgICAgICAgdmFyIHNvdXJjZUZpbGUgPSB0aGlzLl9zb3Vy
Y2VGaWxlc1tzb3VyY2VGaWxlSWRdOworICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IHRoaXMu
X3VpU291cmNlQ29kZVt1aVNvdXJjZUNvZGVJZF0ucmF3U291cmNlQ29kZTsKKyAgICAgICAgdmFy
IHNjcmlwdCA9IHRoaXMuX3NjcmlwdEZvclJhd1NvdXJjZUNvZGUocmF3U291cmNlQ29kZSk7CiAK
LSAgICAgICAgZnVuY3Rpb24gZGlkRWRpdFNjcmlwdFNvdXJjZShvbGRTb3VyY2UsIGVycm9yKQor
ICAgICAgICBmdW5jdGlvbiBkaWRFZGl0U2NyaXB0U291cmNlKGVycm9yKQogICAgICAgICB7CiAg
ICAgICAgICAgICBpZiAoIWVycm9yKSB7Ci0gICAgICAgICAgICAgICAgc291cmNlRmlsZS5jb250
ZW50ID0gbmV3U291cmNlOworICAgICAgICAgICAgICAgIHJhd1NvdXJjZUNvZGUuY29udGVudCA9
IG5ld1NvdXJjZTsKIAotICAgICAgICAgICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rv
ci5yZXNvdXJjZUZvclVSTChzb3VyY2VGaWxlLnVybCk7CisgICAgICAgICAgICAgICAgdmFyIHJl
c291cmNlID0gV2ViSW5zcGVjdG9yLnJlc291cmNlRm9yVVJMKHJhd1NvdXJjZUNvZGUudXJsKTsK
ICAgICAgICAgICAgICAgICBpZiAocmVzb3VyY2UpCiAgICAgICAgICAgICAgICAgICAgIHJlc291
cmNlLmFkZFJldmlzaW9uKG5ld1NvdXJjZSk7CiAgICAgICAgICAgICB9CkBAIC0yMjgsMjUgKzIy
MiwxOSBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICBpZiAoIWVycm9yICYmIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVs
LmNhbGxGcmFtZXMpCiAgICAgICAgICAgICAgICAgdGhpcy5fZGVidWdnZXJQYXVzZWQoKTsKICAg
ICAgICAgfQotCi0gICAgICAgIHZhciBvbGRTb3VyY2UgPSBzb3VyY2VGaWxlLnJlcXVlc3RDb250
ZW50KGRpZFJlY2VpdmVTb3VyY2UuYmluZCh0aGlzKSk7Ci0gICAgICAgIGZ1bmN0aW9uIGRpZFJl
Y2VpdmVTb3VyY2Uob2xkU291cmNlKQotICAgICAgICB7Ci0gICAgICAgICAgICBXZWJJbnNwZWN0
b3IuZGVidWdnZXJNb2RlbC5zZXRTY3JpcHRTb3VyY2Uoc2NyaXB0LnNjcmlwdElkLCBuZXdTb3Vy
Y2UsIGRpZEVkaXRTY3JpcHRTb3VyY2UuYmluZCh0aGlzLCBvbGRTb3VyY2UpKTsKLSAgICAgICAg
fQorICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5zZXRTY3JpcHRTb3VyY2Uoc2Ny
aXB0LnNjcmlwdElkLCBuZXdTb3VyY2UsIGRpZEVkaXRTY3JpcHRTb3VyY2UuYmluZCh0aGlzKSk7
CiAgICAgfSwKIAotICAgIF91cGRhdGVCcmVha3BvaW50c0FmdGVyTGl2ZUVkaXQ6IGZ1bmN0aW9u
KHNvdXJjZUZpbGVJZCwgb2xkU291cmNlLCBuZXdTb3VyY2UpCisgICAgX3VwZGF0ZUJyZWFrcG9p
bnRzQWZ0ZXJMaXZlRWRpdDogZnVuY3Rpb24odWlTb3VyY2VDb2RlSWQsIG9sZFNvdXJjZSwgbmV3
U291cmNlKQogICAgIHsKLSAgICAgICAgdmFyIHNvdXJjZUZpbGUgPSB0aGlzLl9zb3VyY2VGaWxl
c1tzb3VyY2VGaWxlSWRdOworICAgICAgICB2YXIgYnJlYWtwb2ludHMgPSB0aGlzLl9icmVha3Bv
aW50TWFuYWdlci5icmVha3BvaW50c0ZvclVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGVJZCk7CiAK
ICAgICAgICAgLy8gQ2xlYXIgYW5kIHJlLWNyZWF0ZSBicmVha3BvaW50cyBhY2NvcmRpbmcgdG8g
dGV4dCBkaWZmLgogICAgICAgICB2YXIgZGlmZiA9IEFycmF5LmRpZmYob2xkU291cmNlLnNwbGl0
KCJcbiIpLCBuZXdTb3VyY2Uuc3BsaXQoIlxuIikpOwotICAgICAgICBmb3IgKHZhciBsaW5lTnVt
YmVyIGluIHNvdXJjZUZpbGUuYnJlYWtwb2ludHMpIHsKLSAgICAgICAgICAgIHZhciBicmVha3Bv
aW50ID0gc291cmNlRmlsZS5icmVha3BvaW50c1tsaW5lTnVtYmVyXTsKKyAgICAgICAgZm9yICh2
YXIgbGluZU51bWJlciBpbiBicmVha3BvaW50cykgeworICAgICAgICAgICAgdmFyIGJyZWFrcG9p
bnQgPSBicmVha3BvaW50c1tsaW5lTnVtYmVyXTsKIAotICAgICAgICAgICAgdmFyIGxpbmVOdW1i
ZXIgPSBicmVha3BvaW50LmxpbmVOdW1iZXI7Ci0gICAgICAgICAgICB0aGlzLnJlbW92ZUJyZWFr
cG9pbnQoc291cmNlRmlsZUlkLCBsaW5lTnVtYmVyKTsKKyAgICAgICAgICAgIHRoaXMucmVtb3Zl
QnJlYWtwb2ludCh1aVNvdXJjZUNvZGVJZCwgbGluZU51bWJlcik7CiAKICAgICAgICAgICAgIHZh
ciBuZXdMaW5lTnVtYmVyID0gZGlmZi5sZWZ0W2xpbmVOdW1iZXJdLnJvdzsKICAgICAgICAgICAg
IGlmIChuZXdMaW5lTnVtYmVyID09PSB1bmRlZmluZWQpIHsKQEAgLTI2MywxOSArMjUxLDIwIEBA
IFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAobmV3TGluZU51
bWJlciAhPT0gdW5kZWZpbmVkKQotICAgICAgICAgICAgICAgIHRoaXMuc2V0QnJlYWtwb2ludChz
b3VyY2VGaWxlSWQsIG5ld0xpbmVOdW1iZXIsIGJyZWFrcG9pbnQuY29uZGl0aW9uLCBicmVha3Bv
aW50LmVuYWJsZWQpOworICAgICAgICAgICAgICAgIHRoaXMuc2V0QnJlYWtwb2ludCh1aVNvdXJj
ZUNvZGVJZCwgbmV3TGluZU51bWJlciwgYnJlYWtwb2ludC5jb25kaXRpb24sIGJyZWFrcG9pbnQu
ZW5hYmxlZCk7CiAgICAgICAgIH0KICAgICB9LAogCi0gICAgc2V0Rm9ybWF0U291cmNlRmlsZXM6
IGZ1bmN0aW9uKGZvcm1hdFNvdXJjZUZpbGVzKQorICAgIHNldEZvcm1hdFNvdXJjZUZpbGVzOiBm
dW5jdGlvbihmb3JtYXRTb3VyY2UpCiAgICAgewotICAgICAgICBpZiAodGhpcy5fZm9ybWF0U291
cmNlRmlsZXMgPT09IGZvcm1hdFNvdXJjZUZpbGVzKQorICAgICAgICBpZiAodGhpcy5fZm9ybWF0
U291cmNlID09PSBmb3JtYXRTb3VyY2UpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
dGhpcy5fZm9ybWF0U291cmNlRmlsZXMgPSBmb3JtYXRTb3VyY2VGaWxlczsKKyAgICAgICAgdGhp
cy5fZm9ybWF0U291cmNlID0gZm9ybWF0U291cmNlOwogCiAgICAgICAgIHRoaXMuX2JyZWFrcG9p
bnRNYW5hZ2VyLnJlc2V0KCk7Ci0gICAgICAgIHRoaXMuX3NvdXJjZUZpbGVzID0ge307CisgICAg
ICAgIHRoaXMuX3Jhd1NvdXJjZUNvZGUgPSB7fTsKKyAgICAgICAgdGhpcy5fdWlTb3VyY2VDb2Rl
ID0ge307CiAgICAgICAgIHZhciBtZXNzYWdlcyA9IHRoaXMuX21lc3NhZ2VzOwogICAgICAgICB0
aGlzLl9tZXNzYWdlcyA9IFtdOwogCkBAIC0zMDUsMTcgKzI5NCwxNyBAQCBXZWJJbnNwZWN0b3Iu
RGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICB0
aGlzLl9tZXNzYWdlcy5wdXNoKG1lc3NhZ2UpOwogCi0gICAgICAgIHZhciBzb3VyY2VGaWxlID0g
dGhpcy5fc291cmNlRmlsZUZvclNjcmlwdChtZXNzYWdlLnVybCk7Ci0gICAgICAgIGlmICghc291
cmNlRmlsZSkKKyAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSB0aGlzLl9yYXdTb3VyY2VDb2Rl
Rm9yU2NyaXB0KG1lc3NhZ2UudXJsKTsKKyAgICAgICAgaWYgKCFyYXdTb3VyY2VDb2RlKQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGZ1bmN0aW9uIGRpZEdldFVJTG9jYXRpb24oc291
cmNlRmlsZUlkLCBsaW5lTnVtYmVyKQorICAgICAgICBmdW5jdGlvbiBkaWRHZXRVSUxvY2F0aW9u
KHVpU291cmNlQ29kZSwgbGluZU51bWJlcikKICAgICAgICAgewogICAgICAgICAgICAgdmFyIHBy
ZXNlbnRhdGlvbk1lc3NhZ2UgPSB7fTsKLSAgICAgICAgICAgIHByZXNlbnRhdGlvbk1lc3NhZ2Uu
c291cmNlRmlsZUlkID0gc291cmNlRmlsZUlkOworICAgICAgICAgICAgcHJlc2VudGF0aW9uTWVz
c2FnZS5zb3VyY2VGaWxlSWQgPSB1aVNvdXJjZUNvZGUuaWQ7CiAgICAgICAgICAgICBwcmVzZW50
YXRpb25NZXNzYWdlLmxpbmVOdW1iZXIgPSBsaW5lTnVtYmVyOwogICAgICAgICAgICAgcHJlc2Vu
dGF0aW9uTWVzc2FnZS5vcmlnaW5hbE1lc3NhZ2UgPSBtZXNzYWdlOwotICAgICAgICAgICAgc291
cmNlRmlsZS5tZXNzYWdlcy5wdXNoKHByZXNlbnRhdGlvbk1lc3NhZ2UpOworICAgICAgICAgICAg
dWlTb3VyY2VDb2RlLm1lc3NhZ2VzLnB1c2gocHJlc2VudGF0aW9uTWVzc2FnZSk7CiAgICAgICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdnZXJQ
cmVzZW50YXRpb25Nb2RlbC5FdmVudHMuQ29uc29sZU1lc3NhZ2VBZGRlZCwgcHJlc2VudGF0aW9u
TWVzc2FnZSk7CiAgICAgICAgIH0KICAgICAgICAgLy8gRklYTUUoNjI3MjUpOiBzdGFjayB0cmFj
ZSBsaW5lL2NvbHVtbiBudW1iZXJzIGFyZSBvbmUtYmFzZWQuCkBAIC0zMjcsNzEgKzMxNiw3MSBA
QCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAg
ICAgX2NvbnNvbGVDbGVhcmVkOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB0aGlzLl9tZXNz
YWdlcyA9IFtdOwotICAgICAgICBmb3IgKHZhciBpZCBpbiB0aGlzLl9zb3VyY2VGaWxlcykKLSAg
ICAgICAgICAgIHRoaXMuX3NvdXJjZUZpbGVzW2lkXS5tZXNzYWdlcyA9IFtdOworICAgICAgICBm
b3IgKHZhciBpZCBpbiB0aGlzLl91aVNvdXJjZUNvZGUpCisgICAgICAgICAgICB0aGlzLl91aVNv
dXJjZUNvZGVbaWRdLm1lc3NhZ2VzID0gW107CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkV2ZW50cy5D
b25zb2xlTWVzc2FnZXNDbGVhcmVkKTsKICAgICB9LAogCi0gICAgY29udGludWVUb0xpbmU6IGZ1
bmN0aW9uKHNvdXJjZUZpbGVJZCwgbGluZU51bWJlcikKKyAgICBjb250aW51ZVRvTGluZTogZnVu
Y3Rpb24odWlTb3VyY2VDb2RlSWQsIGxpbmVOdW1iZXIpCiAgICAgewogICAgICAgICBmdW5jdGlv
biBkaWRHZXRTY3JpcHRMb2NhdGlvbihsb2NhdGlvbikKICAgICAgICAgewogICAgICAgICAgICAg
V2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuY29udGludWVUb0xvY2F0aW9uKGxvY2F0aW9uKTsK
ICAgICAgICAgfQotICAgICAgICB0aGlzLl91aUxvY2F0aW9uVG9TY3JpcHRMb2NhdGlvbihzb3Vy
Y2VGaWxlSWQsIGxpbmVOdW1iZXIsIGRpZEdldFNjcmlwdExvY2F0aW9uKTsKKyAgICAgICAgdGhp
cy5fdWlMb2NhdGlvblRvU2NyaXB0TG9jYXRpb24odWlTb3VyY2VDb2RlSWQsIGxpbmVOdW1iZXIs
IGRpZEdldFNjcmlwdExvY2F0aW9uKTsKICAgICB9LAogCi0gICAgYnJlYWtwb2ludHNGb3JTb3Vy
Y2VGaWxlSWQ6IGZ1bmN0aW9uKHNvdXJjZUZpbGVJZCkKKyAgICBicmVha3BvaW50c0ZvclNvdXJj
ZUZpbGVJZDogZnVuY3Rpb24odWlTb3VyY2VDb2RlSWQpCiAgICAgewotICAgICAgICB2YXIgYnJl
YWtwb2ludHNNYXAgPSB0aGlzLl9icmVha3BvaW50TWFuYWdlci5icmVha3BvaW50c0ZvclVJU291
cmNlQ29kZShzb3VyY2VGaWxlSWQpOworICAgICAgICB2YXIgYnJlYWtwb2ludHNNYXAgPSB0aGlz
Ll9icmVha3BvaW50TWFuYWdlci5icmVha3BvaW50c0ZvclVJU291cmNlQ29kZSh1aVNvdXJjZUNv
ZGVJZCk7CiAgICAgICAgIHZhciBicmVha3BvaW50c0xpc3QgPSBbXTsKICAgICAgICAgZm9yICh2
YXIgbGluZU51bWJlciBpbiBicmVha3BvaW50c01hcCkKICAgICAgICAgICAgIGJyZWFrcG9pbnRz
TGlzdC5wdXNoKGJyZWFrcG9pbnRzTWFwW2xpbmVOdW1iZXJdKTsKICAgICAgICAgcmV0dXJuIGJy
ZWFrcG9pbnRzTGlzdDsKICAgICB9LAogCi0gICAgc2V0QnJlYWtwb2ludDogZnVuY3Rpb24oc291
cmNlRmlsZUlkLCBsaW5lTnVtYmVyLCBjb25kaXRpb24sIGVuYWJsZWQpCisgICAgc2V0QnJlYWtw
b2ludDogZnVuY3Rpb24odWlTb3VyY2VDb2RlSWQsIGxpbmVOdW1iZXIsIGNvbmRpdGlvbiwgZW5h
YmxlZCkKICAgICB7Ci0gICAgICAgIHRoaXMuX2JyZWFrcG9pbnRNYW5hZ2VyLnNldEJyZWFrcG9p
bnQodGhpcy5fc291cmNlRmlsZXNbc291cmNlRmlsZUlkXSwgbGluZU51bWJlciwgY29uZGl0aW9u
LCBlbmFibGVkKTsKKyAgICAgICAgdGhpcy5fYnJlYWtwb2ludE1hbmFnZXIuc2V0QnJlYWtwb2lu
dCh0aGlzLl91aVNvdXJjZUNvZGVbdWlTb3VyY2VDb2RlSWRdLCBsaW5lTnVtYmVyLCBjb25kaXRp
b24sIGVuYWJsZWQpOwogICAgIH0sCiAKLSAgICBzZXRCcmVha3BvaW50RW5hYmxlZDogZnVuY3Rp
b24oc291cmNlRmlsZUlkLCBsaW5lTnVtYmVyLCBlbmFibGVkKQorICAgIHNldEJyZWFrcG9pbnRF
bmFibGVkOiBmdW5jdGlvbih1aVNvdXJjZUNvZGVJZCwgbGluZU51bWJlciwgZW5hYmxlZCkKICAg
ICB7Ci0gICAgICAgIHZhciBicmVha3BvaW50ID0gdGhpcy5maW5kQnJlYWtwb2ludChzb3VyY2VG
aWxlSWQsIGxpbmVOdW1iZXIpOworICAgICAgICB2YXIgYnJlYWtwb2ludCA9IHRoaXMuZmluZEJy
ZWFrcG9pbnQodWlTb3VyY2VDb2RlSWQsIGxpbmVOdW1iZXIpOwogICAgICAgICBpZiAoIWJyZWFr
cG9pbnQpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHRoaXMuX2JyZWFrcG9pbnRNYW5h
Z2VyLnJlbW92ZUJyZWFrcG9pbnQoc291cmNlRmlsZUlkLCBsaW5lTnVtYmVyKTsKLSAgICAgICAg
dGhpcy5fYnJlYWtwb2ludE1hbmFnZXIuc2V0QnJlYWtwb2ludCh0aGlzLl9zb3VyY2VGaWxlc1tz
b3VyY2VGaWxlSWRdLCBsaW5lTnVtYmVyLCBicmVha3BvaW50LmNvbmRpdGlvbiwgZW5hYmxlZCk7
CisgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRNYW5hZ2VyLnJlbW92ZUJyZWFrcG9pbnQodWlTb3Vy
Y2VDb2RlSWQsIGxpbmVOdW1iZXIpOworICAgICAgICB0aGlzLl9icmVha3BvaW50TWFuYWdlci5z
ZXRCcmVha3BvaW50KHRoaXMuX3VpU291cmNlQ29kZVt1aVNvdXJjZUNvZGVJZF0sIGxpbmVOdW1i
ZXIsIGJyZWFrcG9pbnQuY29uZGl0aW9uLCBlbmFibGVkKTsKICAgICB9LAogCi0gICAgdXBkYXRl
QnJlYWtwb2ludDogZnVuY3Rpb24oc291cmNlRmlsZUlkLCBsaW5lTnVtYmVyLCBjb25kaXRpb24s
IGVuYWJsZWQpCisgICAgdXBkYXRlQnJlYWtwb2ludDogZnVuY3Rpb24odWlTb3VyY2VDb2RlSWQs
IGxpbmVOdW1iZXIsIGNvbmRpdGlvbiwgZW5hYmxlZCkKICAgICB7Ci0gICAgICAgIHRoaXMuX2Jy
ZWFrcG9pbnRNYW5hZ2VyLnJlbW92ZUJyZWFrcG9pbnQoc291cmNlRmlsZUlkLCBsaW5lTnVtYmVy
KTsKLSAgICAgICAgdGhpcy5fYnJlYWtwb2ludE1hbmFnZXIuc2V0QnJlYWtwb2ludCh0aGlzLl9z
b3VyY2VGaWxlc1tzb3VyY2VGaWxlSWRdLCBsaW5lTnVtYmVyLCBjb25kaXRpb24sIGVuYWJsZWQp
OworICAgICAgICB0aGlzLl9icmVha3BvaW50TWFuYWdlci5yZW1vdmVCcmVha3BvaW50KHVpU291
cmNlQ29kZUlkLCBsaW5lTnVtYmVyKTsKKyAgICAgICAgdGhpcy5fYnJlYWtwb2ludE1hbmFnZXIu
c2V0QnJlYWtwb2ludCh0aGlzLl91aVNvdXJjZUNvZGVbdWlTb3VyY2VDb2RlSWRdLCBsaW5lTnVt
YmVyLCBjb25kaXRpb24sIGVuYWJsZWQpOwogICAgIH0sCiAKLSAgICByZW1vdmVCcmVha3BvaW50
OiBmdW5jdGlvbihzb3VyY2VGaWxlSWQsIGxpbmVOdW1iZXIpCisgICAgcmVtb3ZlQnJlYWtwb2lu
dDogZnVuY3Rpb24odWlTb3VyY2VDb2RlSWQsIGxpbmVOdW1iZXIpCiAgICAgewotICAgICAgICB0
aGlzLl9icmVha3BvaW50TWFuYWdlci5yZW1vdmVCcmVha3BvaW50KHNvdXJjZUZpbGVJZCwgbGlu
ZU51bWJlcik7CisgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRNYW5hZ2VyLnJlbW92ZUJyZWFrcG9p
bnQodWlTb3VyY2VDb2RlSWQsIGxpbmVOdW1iZXIpOwogICAgIH0sCiAKLSAgICBmaW5kQnJlYWtw
b2ludDogZnVuY3Rpb24oc291cmNlRmlsZUlkLCBsaW5lTnVtYmVyKQorICAgIGZpbmRCcmVha3Bv
aW50OiBmdW5jdGlvbih1aVNvdXJjZUNvZGVJZCwgbGluZU51bWJlcikKICAgICB7Ci0gICAgICAg
IHJldHVybiB0aGlzLl9icmVha3BvaW50TWFuYWdlci5icmVha3BvaW50c0ZvclVJU291cmNlQ29k
ZShzb3VyY2VGaWxlSWQpW2xpbmVOdW1iZXJdOworICAgICAgICByZXR1cm4gdGhpcy5fYnJlYWtw
b2ludE1hbmFnZXIuYnJlYWtwb2ludHNGb3JVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlSWQpW2xp
bmVOdW1iZXJdOwogICAgIH0sCiAKLSAgICBfYnJlYWtwb2ludEFkZGVkOiBmdW5jdGlvbihzb3Vy
Y2VGaWxlSWQsIGxpbmVOdW1iZXIsIGNvbmRpdGlvbiwgZW5hYmxlZCkKKyAgICBfYnJlYWtwb2lu
dEFkZGVkOiBmdW5jdGlvbih1aVNvdXJjZUNvZGVJZCwgbGluZU51bWJlciwgY29uZGl0aW9uLCBl
bmFibGVkKQogICAgIHsKLSAgICAgICAgdmFyIHNvdXJjZUZpbGUgPSB0aGlzLl9zb3VyY2VGaWxl
c1tzb3VyY2VGaWxlSWRdOwotICAgICAgICBpZiAoIXNvdXJjZUZpbGUpCisgICAgICAgIHZhciB1
aVNvdXJjZUNvZGUgPSB0aGlzLl91aVNvdXJjZUNvZGVbdWlTb3VyY2VDb2RlSWRdOworICAgICAg
ICBpZiAoIXVpU291cmNlQ29kZSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdmFyIHBy
ZXNlbnRhdGlvbkJyZWFrcG9pbnQgPSBuZXcgV2ViSW5zcGVjdG9yLlByZXNlbnRhdGlvbkJyZWFr
cG9pbnQoc291cmNlRmlsZSwgbGluZU51bWJlciwgY29uZGl0aW9uLCBlbmFibGVkKTsKKyAgICAg
ICAgdmFyIHByZXNlbnRhdGlvbkJyZWFrcG9pbnQgPSBuZXcgV2ViSW5zcGVjdG9yLlByZXNlbnRh
dGlvbkJyZWFrcG9pbnQodWlTb3VyY2VDb2RlLCBsaW5lTnVtYmVyLCBjb25kaXRpb24sIGVuYWJs
ZWQpOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3Iu
RGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMuQnJlYWtwb2ludEFkZGVkLCBwcmVzZW50
YXRpb25CcmVha3BvaW50KTsKICAgICB9LAogCi0gICAgX2JyZWFrcG9pbnRSZW1vdmVkOiBmdW5j
dGlvbihzb3VyY2VGaWxlSWQsIGxpbmVOdW1iZXIpCisgICAgX2JyZWFrcG9pbnRSZW1vdmVkOiBm
dW5jdGlvbih1aVNvdXJjZUNvZGVJZCwgbGluZU51bWJlcikKICAgICB7Ci0gICAgICAgIHRoaXMu
ZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlv
bk1vZGVsLkV2ZW50cy5CcmVha3BvaW50UmVtb3ZlZCwgeyBzb3VyY2VGaWxlSWQ6IHNvdXJjZUZp
bGVJZCwgbGluZU51bWJlcjogbGluZU51bWJlciB9KTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuRXZl
bnRzLkJyZWFrcG9pbnRSZW1vdmVkLCB7IHNvdXJjZUZpbGVJZDogdWlTb3VyY2VDb2RlSWQsIGxp
bmVOdW1iZXI6IGxpbmVOdW1iZXIgfSk7CiAgICAgfSwKIAogICAgIF9kZWJ1Z2dlclBhdXNlZDog
ZnVuY3Rpb24oKQpAQCAtNDAwLDExICszODksMTEgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJl
c2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9wcmVzZW50YXRpb25D
YWxsRnJhbWVzID0gW107CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2FsbEZyYW1lcy5s
ZW5ndGg7ICsraSkgewogICAgICAgICAgICAgdmFyIGNhbGxGcmFtZSA9IGNhbGxGcmFtZXNbaV07
Ci0gICAgICAgICAgICB2YXIgc291cmNlRmlsZTsKKyAgICAgICAgICAgIHZhciByYXdTb3VyY2VD
b2RlOwogICAgICAgICAgICAgdmFyIHNjcmlwdCA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVs
LnNjcmlwdEZvclNvdXJjZUlEKGNhbGxGcmFtZS5sb2NhdGlvbi5zY3JpcHRJZCk7CiAgICAgICAg
ICAgICBpZiAoc2NyaXB0KQotICAgICAgICAgICAgICAgIHNvdXJjZUZpbGUgPSB0aGlzLl9zb3Vy
Y2VGaWxlRm9yU2NyaXB0KHNjcmlwdC5zb3VyY2VVUkwsIHNjcmlwdC5zY3JpcHRJZCk7Ci0gICAg
ICAgICAgICB0aGlzLl9wcmVzZW50YXRpb25DYWxsRnJhbWVzLnB1c2gobmV3IFdlYkluc3BlY3Rv
ci5QcmVzZW5hdGlvbkNhbGxGcmFtZShjYWxsRnJhbWUsIGksIHRoaXMsIHNvdXJjZUZpbGUpKTsK
KyAgICAgICAgICAgICAgICByYXdTb3VyY2VDb2RlID0gdGhpcy5fcmF3U291cmNlQ29kZUZvclNj
cmlwdChzY3JpcHQuc291cmNlVVJMLCBzY3JpcHQuc2NyaXB0SWQpOworICAgICAgICAgICAgdGhp
cy5fcHJlc2VudGF0aW9uQ2FsbEZyYW1lcy5wdXNoKG5ldyBXZWJJbnNwZWN0b3IuUHJlc2VuYXRp
b25DYWxsRnJhbWUoY2FsbEZyYW1lLCBpLCB0aGlzLCByYXdTb3VyY2VDb2RlKSk7CiAgICAgICAg
IH0KICAgICAgICAgdmFyIGRldGFpbHMgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5kZWJ1
Z2dlclBhdXNlZERldGFpbHM7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkV2ZW50cy5EZWJ1Z2dlclBh
dXNlZCwgeyBjYWxsRnJhbWVzOiB0aGlzLl9wcmVzZW50YXRpb25DYWxsRnJhbWVzLCBkZXRhaWxz
OiBkZXRhaWxzIH0pOwpAQCAtNDMxLDcgKzQyMCw3IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclBy
ZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3ByZXNl
bnRhdGlvbkNhbGxGcmFtZXNbdGhpcy5fc2VsZWN0ZWRDYWxsRnJhbWVJbmRleF07CiAgICAgfSwK
IAotICAgIF9zb3VyY2VGaWxlRm9yU2NyaXB0OiBmdW5jdGlvbihzb3VyY2VVUkwsIHNjcmlwdElk
KQorICAgIF9yYXdTb3VyY2VDb2RlRm9yU2NyaXB0OiBmdW5jdGlvbihzb3VyY2VVUkwsIHNjcmlw
dElkKQogICAgIHsKICAgICAgICAgaWYgKCFzb3VyY2VVUkwpIHsKICAgICAgICAgICAgIHZhciBz
Y3JpcHQgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5zY3JpcHRGb3JTb3VyY2VJRChzY3Jp
cHRJZCk7CkBAIC00MzksMjcgKzQyOCwyOCBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50
YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgc291cmNlVVJMID0gc2NyaXB0LnNvdXJjZVVSTDsKICAgICAgICAgfQotICAgICAgICBy
ZXR1cm4gdGhpcy5fc291cmNlRmlsZXNbdGhpcy5fY3JlYXRlU291cmNlRmlsZUlkKHNvdXJjZVVS
TCwgc2NyaXB0SWQpXTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Jhd1NvdXJjZUNvZGVbdGhpcy5f
Y3JlYXRlUmF3U291cmNlQ29kZUlkKHNvdXJjZVVSTCwgc2NyaXB0SWQpXTsKICAgICB9LAogCi0g
ICAgX3NjcmlwdEZvclNvdXJjZUZpbGVJZDogZnVuY3Rpb24oc291cmNlRmlsZUlkKQorICAgIF9z
Y3JpcHRGb3JSYXdTb3VyY2VDb2RlOiBmdW5jdGlvbihyYXdTb3VyY2VDb2RlKQogICAgIHsKICAg
ICAgICAgZnVuY3Rpb24gZmlsdGVyKHNjcmlwdCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIHRoaXMuX2NyZWF0ZVNvdXJjZUZpbGVJZChzY3JpcHQuc291cmNlVVJMLCBzY3JpcHQuc2Ny
aXB0SWQpID09PSBzb3VyY2VGaWxlSWQ7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5fY3JlYXRl
UmF3U291cmNlQ29kZUlkKHNjcmlwdC5zb3VyY2VVUkwsIHNjcmlwdC5zY3JpcHRJZCkgPT09IHJh
d1NvdXJjZUNvZGUuaWQ7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5k
ZWJ1Z2dlck1vZGVsLnF1ZXJ5U2NyaXB0cyhmaWx0ZXIuYmluZCh0aGlzKSlbMF07CiAgICAgfSwK
IAotICAgIF9jcmVhdGVTb3VyY2VGaWxlSWQ6IGZ1bmN0aW9uKHNvdXJjZVVSTCwgc2NyaXB0SWQp
CisgICAgX2NyZWF0ZVJhd1NvdXJjZUNvZGVJZDogZnVuY3Rpb24oc291cmNlVVJMLCBzY3JpcHRJ
ZCkKICAgICB7Ci0gICAgICAgIHZhciBwcmVmaXggPSB0aGlzLl9mb3JtYXRTb3VyY2VGaWxlcyA/
ICJkZW9iZnVzY2F0ZWQ6IiA6ICIiOworICAgICAgICB2YXIgcHJlZml4ID0gdGhpcy5fZm9ybWF0
U291cmNlID8gImRlb2JmdXNjYXRlZDoiIDogIiI7CiAgICAgICAgIHJldHVybiBwcmVmaXggKyAo
c291cmNlVVJMIHx8IHNjcmlwdElkKTsKICAgICB9LAogCiAgICAgX2RlYnVnZ2VyUmVzZXQ6IGZ1
bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3NvdXJjZUZpbGVzID0ge307CisgICAgICAg
IHRoaXMuX3Jhd1NvdXJjZUNvZGUgPSB7fTsKKyAgICAgICAgdGhpcy5fdWlTb3VyY2VDb2RlID0g
e307CiAgICAgICAgIHRoaXMuX21lc3NhZ2VzID0gW107CiAgICAgICAgIHRoaXMuX3NvdXJjZU1h
cHBpbmdMaXN0ZW5lcnMgPSBbXTsKICAgICAgICAgdGhpcy5fcHJlc2VudGF0aW9uQ2FsbEZyYW1l
cyA9IFtdOwpAQCAtNDcwLDEwICs0NjAsMTAgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2Vu
dGF0aW9uTW9kZWwucHJvdG90eXBlID0gewogCiBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50
YXRpb25Nb2RlbC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90
b3R5cGU7CiAKLVdlYkluc3BlY3Rvci5QcmVzZW50YXRpb25CcmVha3BvaW50ID0gZnVuY3Rpb24o
c291cmNlRmlsZSwgbGluZU51bWJlciwgY29uZGl0aW9uLCBlbmFibGVkKQorV2ViSW5zcGVjdG9y
LlByZXNlbnRhdGlvbkJyZWFrcG9pbnQgPSBmdW5jdGlvbih1aVNvdXJjZUNvZGUsIGxpbmVOdW1i
ZXIsIGNvbmRpdGlvbiwgZW5hYmxlZCkKIHsKLSAgICB0aGlzLnNvdXJjZUZpbGUgPSBzb3VyY2VG
aWxlOwotICAgIHRoaXMuc291cmNlRmlsZUlkID0gc291cmNlRmlsZS5pZDsKKyAgICB0aGlzLnNv
dXJjZUZpbGUgPSB1aVNvdXJjZUNvZGU7CisgICAgdGhpcy5zb3VyY2VGaWxlSWQgPSB1aVNvdXJj
ZUNvZGUuaWQ7CiAgICAgdGhpcy5saW5lTnVtYmVyID0gbGluZU51bWJlcjsKICAgICB0aGlzLmNv
bmRpdGlvbiA9IGNvbmRpdGlvbjsKICAgICB0aGlzLmVuYWJsZWQgPSBlbmFibGVkOwpAQCAtNTgx
LDkgKzU3MSwxMyBAQCBXZWJJbnNwZWN0b3IuUHJlc2VuYXRpb25DYWxsRnJhbWUucHJvdG90eXBl
ID0gewogICAgIHNvdXJjZUxpbmU6IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgIHsKICAgICAgICAg
dmFyIGxvY2F0aW9uID0gdGhpcy5fY2FsbEZyYW1lLmxvY2F0aW9uOwotICAgICAgICBpZiAoIXRo
aXMuaXNJbnRlcm5hbFNjcmlwdCkKLSAgICAgICAgICAgIHRoaXMuX21vZGVsLl9zY3JpcHRMb2Nh
dGlvblRvVUlMb2NhdGlvbihudWxsLCBsb2NhdGlvbi5zY3JpcHRJZCwgbG9jYXRpb24ubGluZU51
bWJlciwgbG9jYXRpb24uY29sdW1uTnVtYmVyLCBjYWxsYmFjayk7Ci0gICAgICAgIGVsc2UKKyAg
ICAgICAgaWYgKCF0aGlzLmlzSW50ZXJuYWxTY3JpcHQpIHsKKyAgICAgICAgICAgIGZ1bmN0aW9u
IGRpZEdldFVJTG9jYXRpb24odWlTb3VyY2VDb2RlLCBsaW5lTnVtYmVyKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGNhbGxiYWNrKHVpU291cmNlQ29kZS5pZCwgbGluZU51bWJlcik7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0aGlzLl9tb2RlbC5fc2NyaXB0TG9jYXRpb25U
b1VJTG9jYXRpb24obnVsbCwgbG9jYXRpb24uc2NyaXB0SWQsIGxvY2F0aW9uLmxpbmVOdW1iZXIs
IGxvY2F0aW9uLmNvbHVtbk51bWJlciwgZGlkR2V0VUlMb2NhdGlvbik7CisgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgY2FsbGJhY2sodW5kZWZpbmVkLCBsb2NhdGlvbi5saW5lTnVtYmVyKTsK
ICAgICB9CiB9CkBAIC01OTcsMTAgKzU5MSwxMCBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVz
ZW50YXRpb25Nb2RlbFJlc291cmNlQmluZGluZyA9IGZ1bmN0aW9uKG1vZGVsKQogV2ViSW5zcGVj
dG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWxSZXNvdXJjZUJpbmRpbmcucHJvdG90eXBlID0g
ewogICAgIGNhblNldENvbnRlbnQ6IGZ1bmN0aW9uKHJlc291cmNlKQogICAgIHsKLSAgICAgICAg
dmFyIHNvdXJjZUZpbGUgPSB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5fc291cmNlRmlsZUZvclNj
cmlwdChyZXNvdXJjZS51cmwpCi0gICAgICAgIGlmICghc291cmNlRmlsZSkKKyAgICAgICAgdmFy
IHJhd1NvdXJjZUNvZGUgPSB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5fcmF3U291cmNlQ29kZUZv
clNjcmlwdChyZXNvdXJjZS51cmwpCisgICAgICAgIGlmICghcmF3U291cmNlQ29kZSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3ByZXNlbnRhdGlvbk1v
ZGVsLmNhbkVkaXRTY3JpcHRTb3VyY2Uoc291cmNlRmlsZS5pZCk7CisgICAgICAgIHJldHVybiB0
aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5jYW5FZGl0U2NyaXB0U291cmNlKHJhd1NvdXJjZUNvZGUu
aWQpOwogICAgIH0sCiAKICAgICBzZXRDb250ZW50OiBmdW5jdGlvbihyZXNvdXJjZSwgY29udGVu
dCwgbWFqb3JDaGFuZ2UsIHVzZXJDYWxsYmFjaykKQEAgLTYwOCwyNyArNjAyLDI3IEBAIFdlYklu
c3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsUmVzb3VyY2VCaW5kaW5nLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgaWYgKCFtYWpvckNoYW5nZSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICB2YXIgc291cmNlRmlsZSA9IHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLl9zb3VyY2VG
aWxlRm9yU2NyaXB0KHJlc291cmNlLnVybCk7Ci0gICAgICAgIGlmICghc291cmNlRmlsZSkgewor
ICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLl9yYXdT
b3VyY2VDb2RlRm9yU2NyaXB0KHJlc291cmNlLnVybCk7CisgICAgICAgIGlmICghcmF3U291cmNl
Q29kZSkgewogICAgICAgICAgICAgdXNlckNhbGxiYWNrKCJSZXNvdXJjZSBpcyBub3QgZWRpdGFi
bGUiKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHJlc291cmNl
LnJlcXVlc3RDb250ZW50KHRoaXMuX3NldENvbnRlbnRXaXRoSW5pdGlhbENvbnRlbnQuYmluZCh0
aGlzLCBzb3VyY2VGaWxlLCBjb250ZW50LCB1c2VyQ2FsbGJhY2spKTsKKyAgICAgICAgcmVzb3Vy
Y2UucmVxdWVzdENvbnRlbnQodGhpcy5fc2V0Q29udGVudFdpdGhJbml0aWFsQ29udGVudC5iaW5k
KHRoaXMsIHJhd1NvdXJjZUNvZGUsIGNvbnRlbnQsIHVzZXJDYWxsYmFjaykpOwogICAgIH0sCiAK
LSAgICBfc2V0Q29udGVudFdpdGhJbml0aWFsQ29udGVudDogZnVuY3Rpb24oc291cmNlRmlsZSwg
Y29udGVudCwgdXNlckNhbGxiYWNrLCBvbGRDb250ZW50KQorICAgIF9zZXRDb250ZW50V2l0aElu
aXRpYWxDb250ZW50OiBmdW5jdGlvbihyYXdTb3VyY2VDb2RlLCBjb250ZW50LCB1c2VyQ2FsbGJh
Y2ssIG9sZENvbnRlbnQpCiAgICAgewogICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhlcnJvcikK
ICAgICAgICAgewogICAgICAgICAgICAgaWYgKHVzZXJDYWxsYmFjaykKICAgICAgICAgICAgICAg
ICB1c2VyQ2FsbGJhY2soZXJyb3IpOwogICAgICAgICAgICAgaWYgKCFlcnJvcikgewotICAgICAg
ICAgICAgICAgIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLl91cGRhdGVCcmVha3BvaW50c0FmdGVy
TGl2ZUVkaXQoc291cmNlRmlsZS5pZCwgb2xkQ29udGVudCwgY29udGVudCk7Ci0gICAgICAgICAg
ICAgICAgc291cmNlRmlsZS5yZWxvYWQoKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9wcmVzZW50
YXRpb25Nb2RlbC5fdXBkYXRlQnJlYWtwb2ludHNBZnRlckxpdmVFZGl0KHJhd1NvdXJjZUNvZGUu
aWQsIG9sZENvbnRlbnQsIGNvbnRlbnQpOworICAgICAgICAgICAgICAgIHJhd1NvdXJjZUNvZGUu
cmVsb2FkKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgdGhpcy5fcHJlc2Vu
dGF0aW9uTW9kZWwuc2V0U2NyaXB0U291cmNlKHNvdXJjZUZpbGUuaWQsIGNvbnRlbnQsIGNhbGxi
YWNrLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5zZXRTY3Jp
cHRTb3VyY2UocmF3U291cmNlQ29kZS5pZCwgY29udGVudCwgY2FsbGJhY2suYmluZCh0aGlzKSk7
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1NjcmlwdHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
U2NyaXB0c1BhbmVsLmpzCmluZGV4IDVhODQxZWZmYWVjNTFlZDNkOGQ3MzBkYzI4NzZlNWNlODZl
MzA3MzkuLjlmNDlkMjI4NTViMDA2NDc5OTliNTU5MzZiZDlhNzc2YmQwNjc1ZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCkBA
IC01OTUsNyArNTk1LDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7
CiAKICAgICBjYW5TaG93QW5jaG9yTG9jYXRpb246IGZ1bmN0aW9uKGFuY2hvcikKICAgICB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLl9kZWJ1Z2dlckVuYWJsZWQgJiYgdGhpcy5fcHJlc2VudGF0aW9u
TW9kZWwuc291cmNlRmlsZUZvclNjcmlwdFVSTChhbmNob3IuaHJlZik7CisgICAgICAgIHJldHVy
biB0aGlzLl9kZWJ1Z2dlckVuYWJsZWQgJiYgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuc2Ny
aXB0c0ZvclVSTChhbmNob3IuaHJlZikubGVuZ3RoOwogICAgIH0sCiAKICAgICBzaG93QW5jaG9y
TG9jYXRpb246IGZ1bmN0aW9uKGFuY2hvcikKQEAgLTExODYsNyArMTE4Niw3IEBAIFdlYkluc3Bl
Y3Rvci5Tb3VyY2VGcmFtZURlbGVnYXRlRm9yU2NyaXB0c1BhbmVsID0gZnVuY3Rpb24obW9kZWws
IHNvdXJjZUZpbGVJZCkKIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZURlbGVnYXRlRm9yU2NyaXB0
c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICByZXF1ZXN0Q29udGVudDogZnVuY3Rpb24oY2FsbGJh
Y2spCiAgICAgewotICAgICAgICB0aGlzLl9tb2RlbC5yZXF1ZXN0U291cmNlRmlsZUNvbnRlbnQo
dGhpcy5fc291cmNlRmlsZUlkLCBjYWxsYmFjayk7CisgICAgICAgIHRoaXMuX21vZGVsLnNvdXJj
ZUZpbGUodGhpcy5fc291cmNlRmlsZUlkKS5yZXF1ZXN0Q29udGVudChjYWxsYmFjayk7CiAgICAg
fSwKIAogICAgIGRlYnVnZ2luZ1N1cHBvcnRlZDogZnVuY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGaWxlLmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGaWxlLmpzCmluZGV4IGQyMDc2ZTU1OThi
ZDhkMDAxOTJkZjU3YzRmNzc5NTczNWVmMTI3ODMuLjI4MWZkNGU0OTdmOGEwNDEzOWQ3NWEzOGU2
NDBjMWUzOTAyN2I3YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvU291cmNlRmlsZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1NvdXJjZUZpbGUuanMKQEAgLTc0LDcgKzc0LDcgQEAgV2ViSW5zcGVjdG9yLlJhd1NvdXJj
ZUNvZGUucHJvdG90eXBlID0gewogICAgIHJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uOiBmdW5jdGlv
bihyYXdMb2NhdGlvbikKICAgICB7CiAgICAgICAgIHZhciB1aUxvY2F0aW9uID0gdGhpcy5fbWFw
cGluZyA/IHRoaXMuX21hcHBpbmcub3JpZ2luYWxUb0Zvcm1hdHRlZChyYXdMb2NhdGlvbikgOiBy
YXdMb2NhdGlvbjsKLSAgICAgICAgdWlMb2NhdGlvbi5zb3VyY2VGaWxlID0gdGhpczsKKyAgICAg
ICAgdWlMb2NhdGlvbi51aVNvdXJjZUNvZGUgPSB0aGlzOwogICAgICAgICByZXR1cm4gdWlMb2Nh
dGlvbjsKICAgICB9LAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105181</attachid>
            <date>2011-08-25 07:18:22 -0700</date>
            <delta_ts>2011-08-25 23:48:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66769-20110825181819.patch</filename>
            <type>text/plain</type>
            <size>42197</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTM3ODEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmZWY0MjViMWI1NGQ2MTUwNmM4ZGMw
ZGNiODU2Y2E5MWU3MDUwOTY5Li4wMWRiYTAwYTlhMzBjN2Q4ZWM5NTIxZWNhNzE5Y2M5MTJlZmQ1
OGRkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDgtMjUgIFBhdmVsIFBvZGl2aWxvdiAg
PHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogcmVuYW1l
IHNvdXJjZUZpbGUgdG8gKHJhd3x1aSlTb3VyY2VDb2RlIGluIERlYnVnZ2VyUHJlc2VudGF0aW9u
TW9kZWwuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
Njc2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
aW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtcGFuZWwuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvZGVidWdnZXIvc291cmNlLWZpbGUuaHRtbDoKKwogMjAxMS0wOC0yNSAgU2hlcmlmZiBCb3Qg
IDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjkzNzc1LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL3NjcmlwdHMtcGFuZWwuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9z
Y3JpcHRzLXBhbmVsLmh0bWwKaW5kZXggMDE1ZmRkZGZhYWQwYTVmOGUzMGJkNjI2MzVhMTllM2Nh
MzAxMTQ0MS4uMWM4ZTRjOWYyMzg1YmQxZjA0MjY5ZTMwYmQ4ZDIyMzQxYjQzZWMwZiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtcGFuZWwuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1wYW5lbC5odG1sCkBA
IC0xNTMsNyArMTUzLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICAgICAgICAgIG1vZGVsLl9h
ZGRTY3JpcHQoY3JlYXRlTW9ja1NjcmlwdCgiZm9vLmpzIiwgIjEiKSk7CiAgICAgICAgICAgICBt
b2RlbC5fYWRkU2NyaXB0KGNyZWF0ZU1vY2tTY3JpcHQoImJhci5qcyIsICIyIikpOwotICAgICAg
ICAgICAgdmFyIHNvdXJjZUZpbGUgPSBtb2RlbC5fc291cmNlRmlsZUZvclNjcmlwdCgiYmFyLmpz
Iik7CisgICAgICAgICAgICB2YXIgc291cmNlRmlsZSA9IG1vZGVsLl9yYXdTb3VyY2VDb2RlRm9y
U2NyaXB0KCJiYXIuanMiKTsKICAgICAgICAgICAgIHBhbmVsLl9zb3VyY2VGaWxlUmVwbGFjZWQo
eyBkYXRhOiB7IG9sZFNvdXJjZUNvZGU6IHNvdXJjZUZpbGUsIHNvdXJjZUNvZGU6IHNvdXJjZUZp
bGUgfX0pOwogICAgICAgICAgICAgc2hvd1NvdXJjZUZyYW1lKHBhbmVsLCAiYmFyLmpzIik7CiAg
ICAgICAgICAgICBuZXh0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXIvc291cmNlLWZpbGUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9z
b3VyY2UtZmlsZS5odG1sCmluZGV4IDMxYmVlYjQ5ODIzOWZlYTRjZTY0MTI5MWJmOTg4MzQ2ZDBl
MmU5ZTIuLmMzYWZjOTZmNzE0N2I2ODIzMDQzNDQ2YjY4MTU2YzhjNDA4ZGYyYTYgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zb3VyY2UtZmlsZS5odG1sCisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zb3VyY2UtZmlsZS5odG1sCkBAIC00Myw5
ICs0Myw5IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVx
dWFscyhjb2x1bW5OdW1iZXIsIGxvY2F0aW9uLmNvbHVtbk51bWJlcik7CiAgICAgfQogCi0gICAg
ZnVuY3Rpb24gY2hlY2tVSUxvY2F0aW9uKHNvdXJjZUZpbGUsIGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlciwgbG9jYXRpb24pCisgICAgZnVuY3Rpb24gY2hlY2tVSUxvY2F0aW9uKHJhd1NvdXJjZUNv
ZGUsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbG9jYXRpb24pCiAgICAgewotICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhzb3VyY2VGaWxlLCBsb2NhdGlvbi5zb3VyY2VGaWxl
KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMocmF3U291cmNlQ29kZS51aVNv
dXJjZUNvZGUsIGxvY2F0aW9uLnVpU291cmNlQ29kZSk7CiAgICAgICAgIEluc3BlY3RvclRlc3Qu
YXNzZXJ0RXF1YWxzKGxpbmVOdW1iZXIsIGxvY2F0aW9uLmxpbmVOdW1iZXIpOwogICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyhjb2x1bW5OdW1iZXIsIGxvY2F0aW9uLmNvbHVtbk51
bWJlcik7CiAgICAgfQpAQCAtNTQsMTAgKzU0LDEwIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAg
ICBmdW5jdGlvbiB0ZXN0UGxhaW5Db252ZXJ0TG9jYXRpb24obmV4dCkKICAgICAgICAgewogICAg
ICAgICAgICAgdmFyIHNjcmlwdCA9IG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0KCIxIiwgImZvby5q
cyIsIDAsIDAsIDIwLCA4MCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGZhbHNlKTsKLSAgICAgICAg
ICAgIHZhciBzb3VyY2VGaWxlID0gbmV3IFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlKCJpZCIs
IHNjcmlwdCk7CisgICAgICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IG5ldyBXZWJJbnNwZWN0
b3IuUmF3U291cmNlQ29kZSgiaWQiLCBzY3JpcHQpOwogCi0gICAgICAgICAgICBjaGVja1VJTG9j
YXRpb24oc291cmNlRmlsZSwgMTAsIDIwLCBzb3VyY2VGaWxlLnJhd0xvY2F0aW9uVG9VSUxvY2F0
aW9uKHJsKDEwLCAyMCkpKTsKLSAgICAgICAgICAgIGNoZWNrUmF3TG9jYXRpb24oc2NyaXB0LCAz
MCwgNDAsIHNvdXJjZUZpbGUudWlMb2NhdGlvblRvUmF3TG9jYXRpb24oMzAsIDQwKSk7CisgICAg
ICAgICAgICBjaGVja1VJTG9jYXRpb24ocmF3U291cmNlQ29kZSwgMTAsIDIwLCByYXdTb3VyY2VD
b2RlLnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKHJsKDEwLCAyMCkpKTsKKyAgICAgICAgICAgIGNo
ZWNrUmF3TG9jYXRpb24oc2NyaXB0LCAzMCwgNDAsIHJhd1NvdXJjZUNvZGUudWlMb2NhdGlvblRv
UmF3TG9jYXRpb24oMzAsIDQwKSk7CiAKICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgfSwK
QEAgLTY2LDE0ICs2NiwxNCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgewogICAgICAgICAg
ICAgdmFyIHNjcmlwdDEgPSBuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdCgiMSIsICJmb28uanMiLCAx
MCwgMjAsIDMwLCA0MCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGZhbHNlKTsKICAgICAgICAgICAg
IHZhciBzY3JpcHQyID0gbmV3IFdlYkluc3BlY3Rvci5TY3JpcHQoIjIiLCAiZm9vLmpzIiwgNTAs
IDYwLCA3MCwgODAsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBmYWxzZSk7Ci0gICAgICAgICAgICB2
YXIgc291cmNlRmlsZSA9IG5ldyBXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZSgiaWQiLCBzY3Jp
cHQxKTsKLSAgICAgICAgICAgIHNvdXJjZUZpbGUuYWRkU2NyaXB0KHNjcmlwdDIpOworICAgICAg
ICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSBuZXcgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUo
ImlkIiwgc2NyaXB0MSk7CisgICAgICAgICAgICByYXdTb3VyY2VDb2RlLmFkZFNjcmlwdChzY3Jp
cHQyKTsKIAotICAgICAgICAgICAgY2hlY2tVSUxvY2F0aW9uKHNvdXJjZUZpbGUsIDIwLCAwLCBz
b3VyY2VGaWxlLnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKHJsKDIwLCAwKSkpOworICAgICAgICAg
ICAgY2hlY2tVSUxvY2F0aW9uKHJhd1NvdXJjZUNvZGUsIDIwLCAwLCByYXdTb3VyY2VDb2RlLnJh
d0xvY2F0aW9uVG9VSUxvY2F0aW9uKHJsKDIwLCAwKSkpOwogCi0gICAgICAgICAgICBjaGVja1Jh
d0xvY2F0aW9uKHNjcmlwdDEsIDAsIDQwLCBzb3VyY2VGaWxlLnVpTG9jYXRpb25Ub1Jhd0xvY2F0
aW9uKDAsIDQwKSk7Ci0gICAgICAgICAgICBjaGVja1Jhd0xvY2F0aW9uKHNjcmlwdDEsIDIwLCAw
LCBzb3VyY2VGaWxlLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKDIwLCAwKSk7Ci0gICAgICAgICAg
ICBjaGVja1Jhd0xvY2F0aW9uKHNjcmlwdDIsIDUwLCA2MCwgc291cmNlRmlsZS51aUxvY2F0aW9u
VG9SYXdMb2NhdGlvbig1MCwgNjApKTsKKyAgICAgICAgICAgIGNoZWNrUmF3TG9jYXRpb24oc2Ny
aXB0MSwgMCwgNDAsIHJhd1NvdXJjZUNvZGUudWlMb2NhdGlvblRvUmF3TG9jYXRpb24oMCwgNDAp
KTsKKyAgICAgICAgICAgIGNoZWNrUmF3TG9jYXRpb24oc2NyaXB0MSwgMjAsIDAsIHJhd1NvdXJj
ZUNvZGUudWlMb2NhdGlvblRvUmF3TG9jYXRpb24oMjAsIDApKTsKKyAgICAgICAgICAgIGNoZWNr
UmF3TG9jYXRpb24oc2NyaXB0MiwgNTAsIDYwLCByYXdTb3VyY2VDb2RlLnVpTG9jYXRpb25Ub1Jh
d0xvY2F0aW9uKDUwLCA2MCkpOwogCiAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgIH0sCkBA
IC04MSw0NSArODEsNDUgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIGZ1bmN0aW9uIHRlc3RG
b3JtYXR0ZWRDb252ZXJ0TG9jYXRpb24obmV4dCkKICAgICAgICAgewogICAgICAgICAgICAgdmFy
IHNjcmlwdCA9IG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0KCIxIiwgImZvby5qcyIsIDAsIDAsIDIw
LCA4MCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGZhbHNlKTsKLSAgICAgICAgICAgIHZhciBzb3Vy
Y2VGaWxlID0gbmV3IFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlKCJpZCIsIHNjcmlwdCwgbW9j
a1NjcmlwdEZvcm1hdHRlcik7Ci0gICAgICAgICAgICBzb3VyY2VGaWxlLnNldEZvcm1hdHRlZCh0
cnVlKTsKKyAgICAgICAgICAgIHZhciByYXdTb3VyY2VDb2RlID0gbmV3IFdlYkluc3BlY3Rvci5S
YXdTb3VyY2VDb2RlKCJpZCIsIHNjcmlwdCwgbW9ja1NjcmlwdEZvcm1hdHRlcik7CisgICAgICAg
ICAgICByYXdTb3VyY2VDb2RlLnNldEZvcm1hdHRlZCh0cnVlKTsKIAogICAgICAgICAgICAgZnVu
Y3Rpb24gZGlkQ3JlYXRlU291cmNlTWFwcGluZygpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgY2hlY2tVSUxvY2F0aW9uKHNvdXJjZUZpbGUsIDIyLCA0MCwgc291cmNlRmlsZS5yYXdM
b2NhdGlvblRvVUlMb2NhdGlvbihybCgxMSwgMjApKSk7Ci0gICAgICAgICAgICAgICAgY2hlY2tS
YXdMb2NhdGlvbihzY3JpcHQsIDcsIDksIHNvdXJjZUZpbGUudWlMb2NhdGlvblRvUmF3TG9jYXRp
b24oMTQsIDE5KSk7CisgICAgICAgICAgICAgICAgY2hlY2tVSUxvY2F0aW9uKHJhd1NvdXJjZUNv
ZGUsIDIyLCA0MCwgcmF3U291cmNlQ29kZS5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbihybCgxMSwg
MjApKSk7CisgICAgICAgICAgICAgICAgY2hlY2tSYXdMb2NhdGlvbihzY3JpcHQsIDcsIDksIHJh
d1NvdXJjZUNvZGUudWlMb2NhdGlvblRvUmF3TG9jYXRpb24oMTQsIDE5KSk7CiAgICAgICAgICAg
ICAgICAgbmV4dCgpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgc291cmNlRmlsZS5jcmVh
dGVTb3VyY2VNYXBwaW5nSWZOZWVkZWQoZGlkQ3JlYXRlU291cmNlTWFwcGluZyk7CisgICAgICAg
ICAgICByYXdTb3VyY2VDb2RlLmNyZWF0ZVNvdXJjZU1hcHBpbmdJZk5lZWRlZChkaWRDcmVhdGVT
b3VyY2VNYXBwaW5nKTsKICAgICAgICAgfSwKIAogICAgICAgICBmdW5jdGlvbiB0ZXN0Q29uY2F0
ZW5hdGVkRm9ybWF0dGVkQ29udmVydExvY2F0aW9uKG5leHQpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIHZhciBzY3JpcHQxID0gbmV3IFdlYkluc3BlY3Rvci5TY3JpcHQoIjEiLCAiZm9vLmpzIiwg
MTAsIDIwLCAzMCwgNDAsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBmYWxzZSk7CiAgICAgICAgICAg
ICB2YXIgc2NyaXB0MiA9IG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0KCIyIiwgImZvby5qcyIsIDUw
LCA2MCwgNzAsIDgwLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgZmFsc2UpOwotICAgICAgICAgICAg
dmFyIHNvdXJjZUZpbGUgPSBuZXcgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUoImlkIiwgc2Ny
aXB0MSwgbW9ja1NjcmlwdEZvcm1hdHRlcik7Ci0gICAgICAgICAgICBzb3VyY2VGaWxlLnNldEZv
cm1hdHRlZCh0cnVlKTsKLSAgICAgICAgICAgIHNvdXJjZUZpbGUuYWRkU2NyaXB0KHNjcmlwdDIp
OworICAgICAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSBuZXcgV2ViSW5zcGVjdG9yLlJhd1Nv
dXJjZUNvZGUoImlkIiwgc2NyaXB0MSwgbW9ja1NjcmlwdEZvcm1hdHRlcik7CisgICAgICAgICAg
ICByYXdTb3VyY2VDb2RlLnNldEZvcm1hdHRlZCh0cnVlKTsKKyAgICAgICAgICAgIHJhd1NvdXJj
ZUNvZGUuYWRkU2NyaXB0KHNjcmlwdDIpOwogCiAgICAgICAgICAgICBmdW5jdGlvbiBkaWRDcmVh
dGVTb3VyY2VNYXBwaW5nKCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjaGVja1VJ
TG9jYXRpb24oc291cmNlRmlsZSwgMjIsIDYwLCBzb3VyY2VGaWxlLnJhd0xvY2F0aW9uVG9VSUxv
Y2F0aW9uKHJsKDExLCAzMCkpKTsKLSAgICAgICAgICAgICAgICBjaGVja1Jhd0xvY2F0aW9uKHNj
cmlwdDEsIDEyLCAxMCwgc291cmNlRmlsZS51aUxvY2F0aW9uVG9SYXdMb2NhdGlvbigyNCwgMjAp
KTsKLSAgICAgICAgICAgICAgICBjaGVja1Jhd0xvY2F0aW9uKHNjcmlwdDIsIDYwLCAxOSwgc291
cmNlRmlsZS51aUxvY2F0aW9uVG9SYXdMb2NhdGlvbigxMjEsIDM4KSk7CisgICAgICAgICAgICAg
ICAgY2hlY2tVSUxvY2F0aW9uKHJhd1NvdXJjZUNvZGUsIDIyLCA2MCwgcmF3U291cmNlQ29kZS5y
YXdMb2NhdGlvblRvVUlMb2NhdGlvbihybCgxMSwgMzApKSk7CisgICAgICAgICAgICAgICAgY2hl
Y2tSYXdMb2NhdGlvbihzY3JpcHQxLCAxMiwgMTAsIHJhd1NvdXJjZUNvZGUudWlMb2NhdGlvblRv
UmF3TG9jYXRpb24oMjQsIDIwKSk7CisgICAgICAgICAgICAgICAgY2hlY2tSYXdMb2NhdGlvbihz
Y3JpcHQyLCA2MCwgMTksIHJhd1NvdXJjZUNvZGUudWlMb2NhdGlvblRvUmF3TG9jYXRpb24oMTIx
LCAzOCkpOwogICAgICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIHNvdXJjZUZpbGUuY3JlYXRlU291cmNlTWFwcGluZ0lmTmVlZGVkKGRpZENyZWF0ZVNvdXJj
ZU1hcHBpbmcpOworICAgICAgICAgICAgcmF3U291cmNlQ29kZS5jcmVhdGVTb3VyY2VNYXBwaW5n
SWZOZWVkZWQoZGlkQ3JlYXRlU291cmNlTWFwcGluZyk7CiAgICAgICAgIH0sCiAKICAgICAgICAg
ZnVuY3Rpb24gdGVzdFVJU291cmNlQ29kZUFkZGVkKG5leHQpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIHZhciBzY3JpcHQgPSBuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdCgiMSIsICJmb28uanMiLCAw
LCAwLCAyMCwgODAsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBmYWxzZSk7Ci0gICAgICAgICAgICB2
YXIgc291cmNlRmlsZSA9IG5ldyBXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZSgiaWQiLCBzY3Jp
cHQpOworICAgICAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSBuZXcgV2ViSW5zcGVjdG9yLlJh
d1NvdXJjZUNvZGUoImlkIiwgc2NyaXB0KTsKICAgICAgICAgICAgIGZ1bmN0aW9uIHVpU291cmNl
Q29kZUFkZGVkKGV2ZW50KQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYXNzZXJ0RXF1YWxzKCJmb28uanMiLCBldmVudC5kYXRhLnVybCk7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBzb3VyY2VGaWxlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LlJhd1NvdXJjZUNvZGUuRXZlbnRzLlVJU291cmNlQ29kZUFkZGVkLCB1aVNvdXJjZUNvZGVBZGRl
ZCwgdGhpcyk7CisgICAgICAgICAgICByYXdTb3VyY2VDb2RlLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUuRXZlbnRzLlVJU291cmNlQ29kZUFkZGVkLCB1aVNvdXJj
ZUNvZGVBZGRlZCwgdGhpcyk7CiAKICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDEyNDhlMDkxYTQzNDAyZTQ2MGYyMTJlODljOWEyZTE3OTkzODA1NjUuLmU1Mjcx
ZTgxMjZlM2Q5MzY1MmRkZjhhYmZjMzc4MzY2YjVhYTAxZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw2MyBAQAorMjAxMS0wOC0yNSAgUGF2ZWwgUG9kaXZpbG92ICA8cG9kaXZpbG92QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiByZW5hbWUgc291cmNlRmlsZSB0byAocmF3
fHVpKVNvdXJjZUNvZGUgaW4gRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2NzY5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L0RlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVi
dWdnZXJQcmVzZW50YXRpb25Nb2RlbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQ
cmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUudWlTb3VyY2VDb2RlKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5fc2NyaXB0TG9jYXRp
b25Ub1VJTG9jYXRpb24uZGlkQ3JlYXRlU291cmNlTWFwcGluZyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX3NjcmlwdExvY2F0aW9u
VG9VSUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlv
bk1vZGVsLnByb3RvdHlwZS5fdWlMb2NhdGlvblRvU2NyaXB0TG9jYXRpb24uZGlkQ3JlYXRlU291
cmNlTWFwcGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25N
b2RlbC5wcm90b3R5cGUuX3VpTG9jYXRpb25Ub1NjcmlwdExvY2F0aW9uKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5saW5raWZ5TG9j
YXRpb24udXBkYXRlQW5jaG9yLmRpZEdldExvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5saW5raWZ5TG9jYXRpb24udXBk
YXRlQW5jaG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1v
ZGVsLnByb3RvdHlwZS5saW5raWZ5TG9jYXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRl
YnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLl9hZGRTY3JpcHQuZGlkQ3JlYXRlU291
cmNlTWFwcGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25N
b2RlbC5wcm90b3R5cGUuX2FkZFNjcmlwdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdn
ZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX3VpU291cmNlQ29kZVJlcGxhY2VkKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5j
YW5FZGl0U2NyaXB0U291cmNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNl
bnRhdGlvbk1vZGVsLnByb3RvdHlwZS5zZXRTY3JpcHRTb3VyY2UuZGlkRWRpdFNjcmlwdFNvdXJj
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90
b3R5cGUuc2V0U2NyaXB0U291cmNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclBy
ZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5fdXBkYXRlQnJlYWtwb2ludHNBZnRlckxpdmVFZGl0
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3Rv
dHlwZS5zZXRGb3JtYXRTb3VyY2VGaWxlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdn
ZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX2FkZENvbnNvbGVNZXNzYWdlLmRpZEdldFVJ
TG9jYXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9k
ZWwucHJvdG90eXBlLl9hZGRDb25zb2xlTWVzc2FnZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX2NvbnNvbGVDbGVhcmVkKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5j
b250aW51ZVRvTGluZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRp
b25Nb2RlbC5wcm90b3R5cGUuYnJlYWtwb2ludHNGb3JTb3VyY2VGaWxlSWQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLnNldEJyZWFr
cG9pbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwu
cHJvdG90eXBlLnNldEJyZWFrcG9pbnRFbmFibGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5E
ZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS51cGRhdGVCcmVha3BvaW50KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5y
ZW1vdmVCcmVha3BvaW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRh
dGlvbk1vZGVsLnByb3RvdHlwZS5maW5kQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX2JyZWFrcG9pbnRBZGRlZCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5
cGUuX2JyZWFrcG9pbnRSZW1vdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclBy
ZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZS5fZGVidWdnZXJQYXVzZWQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlLl9yYXdTb3VyY2VD
b2RlRm9yU2NyaXB0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlv
bk1vZGVsLnByb3RvdHlwZS5fc2NyaXB0Rm9yUmF3U291cmNlQ29kZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUuX2NyZWF0ZVJhd1Nv
dXJjZUNvZGVJZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25N
b2RlbC5wcm90b3R5cGUuX2RlYnVnZ2VyUmVzZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlBy
ZXNlbnRhdGlvbkJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByZXNlbmF0aW9u
Q2FsbEZyYW1lLnByb3RvdHlwZS5zb3VyY2VMaW5lLmRpZEdldFVJTG9jYXRpb24pOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlByZXNlbmF0aW9uQ2FsbEZyYW1lLnByb3RvdHlwZS5zb3VyY2VMaW5l
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsUmVzb3Vy
Y2VCaW5kaW5nLnByb3RvdHlwZS5jYW5TZXRDb250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsUmVzb3VyY2VCaW5kaW5nLnByb3RvdHlwZS5zZXRD
b250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVs
UmVzb3VyY2VCaW5kaW5nLnByb3RvdHlwZS5fc2V0Q29udGVudFdpdGhJbml0aWFsQ29udGVudCk6
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5jYW5TaG93QW5jaG9yTG9jYXRp
b24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuX2NyZWF0
ZVNvdXJjZUZyYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90
eXBlLl9zb3VyY2VGcmFtZUxvYWRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1Bh
bmVsLnByb3RvdHlwZS5fY2FsbEZyYW1lU2VsZWN0ZWQuZGlkR2V0U291cmNlTG9jYXRpb24pOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuX2NhbGxGcmFtZVNl
bGVjdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZURlbGVnYXRlRm9yU2Ny
aXB0c1BhbmVsLnByb3RvdHlwZS5yZXF1ZXN0Q29udGVudCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU291cmNlRnJhbWVEZWxlZ2F0ZUZvclNjcmlwdHNQYW5lbC5wcm90b3R5cGUuc3VnZ2VzdGVk
RmlsZU5hbWUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRmlsZS5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLnByb3RvdHlwZS5yYXdMb2NhdGlv
blRvVUlMb2NhdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbik6CisKIDIw
MTEtMDgtMjUgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI5Mzc3MS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJQcmVzZW50YXRp
b25Nb2RlbC5qcwppbmRleCBlZGFmNDZhYWUxYzAzODg3NmNkZjc0NDVkYTFkYzhjNjMwYWI1NWU0
Li4zYjE1OTNkZGNiOTFlODY4NTUzM2I5NDkyZTAxYTE0NjI4MGMzY2ViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyUHJlc2VudGF0aW9uTW9k
ZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlclBy
ZXNlbnRhdGlvbk1vZGVsLmpzCkBAIC0zNSw3ICszNSw3IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dl
clByZXNlbnRhdGlvbk1vZGVsID0gZnVuY3Rpb24oKQogewogICAgIC8vIEZJWE1FOiBhcHBseSBm
b3JtYXR0ZXIgZnJvbSBvdXRzaWRlIGFzIGEgZ2VuZXJpYyBtYXBwaW5nLgogICAgIHRoaXMuX2Zv
cm1hdHRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0Rm9ybWF0dGVyKCk7Ci0gICAgdGhpcy5f
c291cmNlRmlsZXMgPSB7fTsKKyAgICB0aGlzLl9yYXdTb3VyY2VDb2RlID0ge307CiAgICAgdGhp
cy5fbWVzc2FnZXMgPSBbXTsKICAgICAvLyBGSVhNRTogbW92ZSB0aGlzIHRvIFJhd1NvdXJjZUNv
ZGUgd2hlbiBpdCdzIG5vdCByZS1jcmVhdGVkIGluIHByZXR0eS1wcmludCBtb2RlLgogICAgIHRo
aXMuX3NvdXJjZU1hcHBpbmdMaXN0ZW5lcnMgPSBbXTsKQEAgLTcwLDQ3ICs3MCwzOSBAQCBXZWJJ
bnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMgPSB7CiB9CiAKIFdlYklu
c3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKLSAgICBzb3Vy
Y2VGaWxlOiBmdW5jdGlvbihzb3VyY2VGaWxlSWQpCisgICAgdWlTb3VyY2VDb2RlOiBmdW5jdGlv
bih1aVNvdXJjZUNvZGVJZCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9zb3VyY2VGaWxl
c1tzb3VyY2VGaWxlSWRdOwotICAgIH0sCi0KLSAgICBzb3VyY2VGaWxlRm9yU2NyaXB0VVJMOiBm
dW5jdGlvbihzY3JpcHRVUkwpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fc291cmNlRmls
ZXNbdGhpcy5fY3JlYXRlU291cmNlRmlsZUlkKHNjcmlwdFVSTCldOworICAgICAgICAvLyBGSVhN
RTogZ2V0IHJpZCBvZiB1aVNvdXJjZUNvZGVJZCAoY3VycmVudGx5IHVpU291cmNlQ29kZUlkID09
IHJhd1NvdXJjZUNvZGVJZCkuCisgICAgICAgIHZhciByYXdTb3VyY2VDb2RlID0gdGhpcy5fcmF3
U291cmNlQ29kZVt1aVNvdXJjZUNvZGVJZF07CisgICAgICAgIHJldHVybiByYXdTb3VyY2VDb2Rl
ICYmIHJhd1NvdXJjZUNvZGUudWlTb3VyY2VDb2RlOwogICAgIH0sCiAKICAgICBfc2NyaXB0TG9j
YXRpb25Ub1VJTG9jYXRpb246IGZ1bmN0aW9uKHNvdXJjZVVSTCwgc2NyaXB0SWQsIGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgY2FsbGJhY2spCiAgICAgewotICAgICAgICB2YXIgc291cmNlRmls
ZSA9IHRoaXMuX3NvdXJjZUZpbGVGb3JTY3JpcHQoc291cmNlVVJMLCBzY3JpcHRJZCk7CisgICAg
ICAgIHZhciByYXdTb3VyY2VDb2RlID0gdGhpcy5fcmF3U291cmNlQ29kZUZvclNjcmlwdChzb3Vy
Y2VVUkwsIHNjcmlwdElkKTsKIAogICAgICAgICBmdW5jdGlvbiBkaWRDcmVhdGVTb3VyY2VNYXBw
aW5nKCkKICAgICAgICAgewotICAgICAgICAgICAgdmFyIHVpTG9jYXRpb24gPSBzb3VyY2VGaWxl
LnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKHsgbGluZU51bWJlcjogbGluZU51bWJlciwgY29sdW1u
TnVtYmVyOiBjb2x1bW5OdW1iZXIgfSk7Ci0gICAgICAgICAgICBjYWxsYmFjayh1aUxvY2F0aW9u
LnNvdXJjZUZpbGUuaWQsIHVpTG9jYXRpb24ubGluZU51bWJlcik7CisgICAgICAgICAgICB2YXIg
dWlMb2NhdGlvbiA9IHJhd1NvdXJjZUNvZGUucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24oeyBsaW5l
TnVtYmVyOiBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXI6IGNvbHVtbk51bWJlciB9KTsKKyAgICAg
ICAgICAgIGNhbGxiYWNrKHVpTG9jYXRpb24udWlTb3VyY2VDb2RlLCB1aUxvY2F0aW9uLmxpbmVO
dW1iZXIpOwogICAgICAgICB9CiAgICAgICAgIC8vIEZJWE1FOiBmb3JjZSBzb3VyY2UgZm9ybWF0
dGluZyBpZiBuZWVkZWQuIFRoaXMgd2lsbCBnbyBhd2F5IG9uY2UgZm9ybWF0dGluZwogICAgICAg
ICAvLyBpcyBmdWxseSBlbmNhcHN1bGF0ZWQgaW4gUmF3U291cmNlQ29kZSBjbGFzcy4KLSAgICAg
ICAgc291cmNlRmlsZS5jcmVhdGVTb3VyY2VNYXBwaW5nSWZOZWVkZWQoZGlkQ3JlYXRlU291cmNl
TWFwcGluZyk7CisgICAgICAgIHJhd1NvdXJjZUNvZGUuY3JlYXRlU291cmNlTWFwcGluZ0lmTmVl
ZGVkKGRpZENyZWF0ZVNvdXJjZU1hcHBpbmcpOwogICAgIH0sCiAKLSAgICBfdWlMb2NhdGlvblRv
U2NyaXB0TG9jYXRpb246IGZ1bmN0aW9uKHNvdXJjZUZpbGVJZCwgbGluZU51bWJlciwgY2FsbGJh
Y2spCisgICAgX3VpTG9jYXRpb25Ub1NjcmlwdExvY2F0aW9uOiBmdW5jdGlvbih1aVNvdXJjZUNv
ZGVJZCwgbGluZU51bWJlciwgY2FsbGJhY2spCiAgICAgewotICAgICAgICB2YXIgc291cmNlRmls
ZSA9IHRoaXMuX3NvdXJjZUZpbGVzW3NvdXJjZUZpbGVJZF07CisgICAgICAgIHZhciByYXdTb3Vy
Y2VDb2RlID0gdGhpcy51aVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlSWQpLnJhd1NvdXJjZUNvZGU7
CiAKICAgICAgICAgZnVuY3Rpb24gZGlkQ3JlYXRlU291cmNlTWFwcGluZygpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHZhciByYXdMb2NhdGlvbiA9IHNvdXJjZUZpbGUudWlMb2NhdGlvblRvUmF3
TG9jYXRpb24obGluZU51bWJlciwgMCk7CisgICAgICAgICAgICB2YXIgcmF3TG9jYXRpb24gPSBy
YXdTb3VyY2VDb2RlLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKGxpbmVOdW1iZXIsIDApOwogICAg
ICAgICAgICAgY2FsbGJhY2socmF3TG9jYXRpb24pOwogICAgICAgICB9CiAgICAgICAgIC8vIEZJ
WE1FOiBmb3JjZSBzb3VyY2UgZm9ybWF0dGluZyBpZiBuZWVkZWQuIFRoaXMgd2lsbCBnbyBhd2F5
IG9uY2UgZm9ybWF0dGluZwogICAgICAgICAvLyBpcyBmdWxseSBlbmNhcHN1bGF0ZWQgaW4gUmF3
U291cmNlQ29kZSBjbGFzcy4KLSAgICAgICAgc291cmNlRmlsZS5jcmVhdGVTb3VyY2VNYXBwaW5n
SWZOZWVkZWQoZGlkQ3JlYXRlU291cmNlTWFwcGluZyk7Ci0gICAgfSwKLQotICAgIHJlcXVlc3RT
b3VyY2VGaWxlQ29udGVudDogZnVuY3Rpb24oc291cmNlRmlsZUlkLCBjYWxsYmFjaykKLSAgICB7
Ci0gICAgICAgIHRoaXMuX3NvdXJjZUZpbGVzW3NvdXJjZUZpbGVJZF0ucmVxdWVzdENvbnRlbnQo
Y2FsbGJhY2spOworICAgICAgICByYXdTb3VyY2VDb2RlLmNyZWF0ZVNvdXJjZU1hcHBpbmdJZk5l
ZWRlZChkaWRDcmVhdGVTb3VyY2VNYXBwaW5nKTsKICAgICB9LAogCiAgICAgYWRkU291cmNlTWFw
cGluZ0xpc3RlbmVyOiBmdW5jdGlvbihzb3VyY2VVUkwsIHNjcmlwdElkLCBsaXN0ZW5lcikKQEAg
LTEyOCw4ICsxMjAsOCBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBsaW5rVGV4dCA9IFdlYkluc3BlY3Rvci5mb3JtYXRM
aW5rVGV4dChzb3VyY2VVUkwsIGxpbmVOdW1iZXIpOwogICAgICAgICB2YXIgYW5jaG9yID0gV2Vi
SW5zcGVjdG9yLmxpbmtpZnlVUkxBc05vZGUoc291cmNlVVJMLCBsaW5rVGV4dCwgY2xhc3Nlcywg
ZmFsc2UpOwogCi0gICAgICAgIHZhciBzb3VyY2VGaWxlID0gdGhpcy5fc291cmNlRmlsZUZvclNj
cmlwdChzb3VyY2VVUkwpOwotICAgICAgICBpZiAoIXNvdXJjZUZpbGUpIHsKKyAgICAgICAgdmFy
IHJhd1NvdXJjZUNvZGUgPSB0aGlzLl9yYXdTb3VyY2VDb2RlRm9yU2NyaXB0KHNvdXJjZVVSTCk7
CisgICAgICAgIGlmICghcmF3U291cmNlQ29kZSkgewogICAgICAgICAgICAgYW5jaG9yLnNldEF0
dHJpYnV0ZSgicHJlZmVycmVkX3BhbmVsIiwgInJlc291cmNlcyIpOwogICAgICAgICAgICAgYW5j
aG9yLnNldEF0dHJpYnV0ZSgibGluZV9udW1iZXIiLCBsaW5lTnVtYmVyKTsKICAgICAgICAgICAg
IHJldHVybiBhbmNob3I7CkBAIC0xMzcsMTEgKzEyOSwxMSBAQCBXZWJJbnNwZWN0b3IuRGVidWdn
ZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgZnVuY3Rpb24gdXBk
YXRlQW5jaG9yKCkKICAgICAgICAgewotICAgICAgICAgICAgZnVuY3Rpb24gZGlkR2V0TG9jYXRp
b24oc291cmNlRmlsZUlkLCBsaW5lTnVtYmVyKQorICAgICAgICAgICAgZnVuY3Rpb24gZGlkR2V0
TG9jYXRpb24odWlTb3VyY2VDb2RlLCBsaW5lTnVtYmVyKQogICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIGFuY2hvci50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5mb3JtYXRMaW5rVGV4
dChzb3VyY2VGaWxlLnVybCwgbGluZU51bWJlcik7CisgICAgICAgICAgICAgICAgYW5jaG9yLnRl
eHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLmZvcm1hdExpbmtUZXh0KHVpU291cmNlQ29kZS51cmws
IGxpbmVOdW1iZXIpOwogICAgICAgICAgICAgICAgIGFuY2hvci5zZXRBdHRyaWJ1dGUoInByZWZl
cnJlZF9wYW5lbCIsICJzY3JpcHRzIik7Ci0gICAgICAgICAgICAgICAgYW5jaG9yLnNldEF0dHJp
YnV0ZSgic291cmNlX2ZpbGVfaWQiLCBzb3VyY2VGaWxlSWQpOworICAgICAgICAgICAgICAgIGFu
Y2hvci5zZXRBdHRyaWJ1dGUoInNvdXJjZV9maWxlX2lkIiwgdWlTb3VyY2VDb2RlLmlkKTsKICAg
ICAgICAgICAgICAgICBhbmNob3Iuc2V0QXR0cmlidXRlKCJsaW5lX251bWJlciIsIGxpbmVOdW1i
ZXIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgdGhpcy5fc2NyaXB0TG9jYXRpb25Ub1VJ
TG9jYXRpb24oc291cmNlVVJMLCBudWxsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGRpZEdl
dExvY2F0aW9uLmJpbmQodGhpcykpOwpAQCAtMTYzLDIyICsxNTUsMjIgQEAgV2ViSW5zcGVjdG9y
LkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0gewogCiAgICAgX2FkZFNjcmlw
dDogZnVuY3Rpb24oc2NyaXB0KQogICAgIHsKLSAgICAgICAgdmFyIHNvdXJjZUZpbGVJZCA9IHRo
aXMuX2NyZWF0ZVNvdXJjZUZpbGVJZChzY3JpcHQuc291cmNlVVJMLCBzY3JpcHQuc2NyaXB0SWQp
OwotICAgICAgICB2YXIgc291cmNlRmlsZSA9IHRoaXMuX3NvdXJjZUZpbGVzW3NvdXJjZUZpbGVJ
ZF07Ci0gICAgICAgIGlmIChzb3VyY2VGaWxlKSB7Ci0gICAgICAgICAgICBzb3VyY2VGaWxlLmFk
ZFNjcmlwdChzY3JpcHQpOworICAgICAgICB2YXIgcmF3U291cmNlQ29kZUlkID0gdGhpcy5fY3Jl
YXRlUmF3U291cmNlQ29kZUlkKHNjcmlwdC5zb3VyY2VVUkwsIHNjcmlwdC5zY3JpcHRJZCk7Cisg
ICAgICAgIHZhciByYXdTb3VyY2VDb2RlID0gdGhpcy5fcmF3U291cmNlQ29kZVtyYXdTb3VyY2VD
b2RlSWRdOworICAgICAgICBpZiAocmF3U291cmNlQ29kZSkgeworICAgICAgICAgICAgcmF3U291
cmNlQ29kZS5hZGRTY3JpcHQoc2NyaXB0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIHNvdXJjZUZpbGUgPSBuZXcgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUo
c291cmNlRmlsZUlkLCBzY3JpcHQsIHRoaXMuX2Zvcm1hdHRlcik7Ci0gICAgICAgIHNvdXJjZUZp
bGUuc2V0Rm9ybWF0dGVkKHRoaXMuX2Zvcm1hdFNvdXJjZUZpbGVzKTsKLSAgICAgICAgdGhpcy5f
c291cmNlRmlsZXNbc291cmNlRmlsZUlkXSA9IHNvdXJjZUZpbGU7Ci0gICAgICAgIHNvdXJjZUZp
bGUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5FdmVudHMuVUlT
b3VyY2VDb2RlUmVwbGFjZWQsIHRoaXMuX3VpU291cmNlQ29kZVJlcGxhY2VkLCB0aGlzKTsKKyAg
ICAgICAgcmF3U291cmNlQ29kZSA9IG5ldyBXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZShyYXdT
b3VyY2VDb2RlSWQsIHNjcmlwdCwgdGhpcy5fZm9ybWF0dGVyKTsKKyAgICAgICAgcmF3U291cmNl
Q29kZS5zZXRGb3JtYXR0ZWQodGhpcy5fZm9ybWF0U291cmNlKTsKKyAgICAgICAgdGhpcy5fcmF3
U291cmNlQ29kZVtyYXdTb3VyY2VDb2RlSWRdID0gcmF3U291cmNlQ29kZTsKKyAgICAgICAgcmF3
U291cmNlQ29kZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkV2
ZW50cy5VSVNvdXJjZUNvZGVSZXBsYWNlZCwgdGhpcy5fdWlTb3VyY2VDb2RlUmVwbGFjZWQsIHRo
aXMpOwogCiAgICAgICAgIGZ1bmN0aW9uIGRpZENyZWF0ZVNvdXJjZU1hcHBpbmcoKQogICAgICAg
ICB7Ci0gICAgICAgICAgICB0aGlzLl9icmVha3BvaW50TWFuYWdlci51aVNvdXJjZUNvZGVBZGRl
ZChzb3VyY2VGaWxlKTsKLSAgICAgICAgICAgIHZhciBicmVha3BvaW50cyA9IHRoaXMuX2JyZWFr
cG9pbnRNYW5hZ2VyLmJyZWFrcG9pbnRzRm9yVUlTb3VyY2VDb2RlKHNvdXJjZUZpbGVJZCk7Cisg
ICAgICAgICAgICB0aGlzLl9icmVha3BvaW50TWFuYWdlci51aVNvdXJjZUNvZGVBZGRlZChyYXdT
b3VyY2VDb2RlLnVpU291cmNlQ29kZSk7CisgICAgICAgICAgICB2YXIgYnJlYWtwb2ludHMgPSB0
aGlzLl9icmVha3BvaW50TWFuYWdlci5icmVha3BvaW50c0ZvclVJU291cmNlQ29kZShyYXdTb3Vy
Y2VDb2RlLnVpU291cmNlQ29kZS5pZCk7CiAgICAgICAgICAgICBmb3IgKHZhciBsaW5lTnVtYmVy
IGluIGJyZWFrcG9pbnRzKSB7CiAgICAgICAgICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBicmVh
a3BvaW50c1tsaW5lTnVtYmVyXTsKICAgICAgICAgICAgICAgICB0aGlzLl9icmVha3BvaW50QWRk
ZWQoYnJlYWtwb2ludC51aVNvdXJjZUNvZGVJZCwgYnJlYWtwb2ludC5saW5lTnVtYmVyLCBicmVh
a3BvaW50LmNvbmRpdGlvbiwgYnJlYWtwb2ludC5lbmFibGVkKTsKQEAgLTE4Niw0MiArMTc4LDM4
IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgfQogICAgICAgICAvLyBGSVhNRTogZm9yY2Ugc291cmNlIGZvcm1hdHRpbmcgaWYg
bmVlZGVkLiBUaGlzIHdpbGwgZ28gYXdheSBvbmNlIGZvcm1hdHRpbmcKICAgICAgICAgLy8gaXMg
ZnVsbHkgZW5jYXBzdWxhdGVkIGluIFJhd1NvdXJjZUNvZGUgY2xhc3MuCi0gICAgICAgIHNvdXJj
ZUZpbGUuY3JlYXRlU291cmNlTWFwcGluZ0lmTmVlZGVkKGRpZENyZWF0ZVNvdXJjZU1hcHBpbmcu
YmluZCh0aGlzKSk7CisgICAgICAgIHJhd1NvdXJjZUNvZGUuY3JlYXRlU291cmNlTWFwcGluZ0lm
TmVlZGVkKGRpZENyZWF0ZVNvdXJjZU1hcHBpbmcuYmluZCh0aGlzKSk7CiAKLSAgICAgICAgdGhp
cy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0
aW9uTW9kZWwuRXZlbnRzLlNvdXJjZUZpbGVBZGRlZCwgc291cmNlRmlsZS51aVNvdXJjZUNvZGUp
OworICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gcmF3U291cmNlQ29kZS51aVNvdXJjZUNvZGU7
CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5EZWJ1
Z2dlclByZXNlbnRhdGlvbk1vZGVsLkV2ZW50cy5Tb3VyY2VGaWxlQWRkZWQsIHVpU291cmNlQ29k
ZSk7CiAgICAgfSwKIAogICAgIF91aVNvdXJjZUNvZGVSZXBsYWNlZDogZnVuY3Rpb24oZXZlbnQp
CiAgICAgewotICAgICAgICB2YXIgb2xkVUlTb3VyY2VDb2RlID0gZXZlbnQuZGF0YS5vbGRTb3Vy
Y2VDb2RlOwotICAgICAgICB2YXIgbmV3VUlTb3VyY2VDb2RlID0gZXZlbnQuZGF0YS5zb3VyY2VD
b2RlOwotCi0gICAgICAgIGRlbGV0ZSB0aGlzLl9zb3VyY2VGaWxlc1tvbGRVSVNvdXJjZUNvZGUu
aWRdOwotICAgICAgICB0aGlzLl9zb3VyY2VGaWxlc1tuZXdVSVNvdXJjZUNvZGUuaWRdID0gbmV3
VUlTb3VyY2VDb2RlOwotCiAgICAgICAgIC8vIEZJWE1FOiByZXN0b3JlIGJyZWFrcG9pbnRzIGlu
IG5ldyBzb3VyY2UgY29kZSAoY3VycmVudGx5IHdlIGp1c3QgcmVjcmVhdGUgZXZlcnl0aGluZyB3
aGVuIHN3aXRjaGluZyB0byBwcmV0dHktcHJpbnQgbW9kZSkuCiAgICAgICAgIHRoaXMuZGlzcGF0
Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVs
LkV2ZW50cy5Tb3VyY2VGaWxlUmVwbGFjZWQsIGV2ZW50LmRhdGEpOwogICAgIH0sCiAKLSAgICBj
YW5FZGl0U2NyaXB0U291cmNlOiBmdW5jdGlvbihzb3VyY2VGaWxlSWQpCisgICAgY2FuRWRpdFNj
cmlwdFNvdXJjZTogZnVuY3Rpb24odWlTb3VyY2VDb2RlSWQpCiAgICAgewotICAgICAgICBpZiAo
IVByZWZlcmVuY2VzLmNhbkVkaXRTY3JpcHRTb3VyY2UgfHwgdGhpcy5fZm9ybWF0U291cmNlRmls
ZXMpCisgICAgICAgIGlmICghUHJlZmVyZW5jZXMuY2FuRWRpdFNjcmlwdFNvdXJjZSB8fCB0aGlz
Ll9mb3JtYXRTb3VyY2UpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHZhciBz
Y3JpcHQgPSB0aGlzLl9zY3JpcHRGb3JTb3VyY2VGaWxlSWQoc291cmNlRmlsZUlkKTsKKyAgICAg
ICAgdmFyIHJhd1NvdXJjZUNvZGUgPSB0aGlzLnVpU291cmNlQ29kZSh1aVNvdXJjZUNvZGVJZCku
cmF3U291cmNlQ29kZTsKKyAgICAgICAgdmFyIHNjcmlwdCA9IHRoaXMuX3NjcmlwdEZvclJhd1Nv
dXJjZUNvZGUocmF3U291cmNlQ29kZSk7CiAgICAgICAgIHJldHVybiAhc2NyaXB0LmxpbmVPZmZz
ZXQgJiYgIXNjcmlwdC5jb2x1bW5PZmZzZXQ7CiAgICAgfSwKIAotICAgIHNldFNjcmlwdFNvdXJj
ZTogZnVuY3Rpb24oc291cmNlRmlsZUlkLCBuZXdTb3VyY2UsIGNhbGxiYWNrKQorICAgIHNldFNj
cmlwdFNvdXJjZTogZnVuY3Rpb24odWlTb3VyY2VDb2RlSWQsIG5ld1NvdXJjZSwgY2FsbGJhY2sp
CiAgICAgewotICAgICAgICB2YXIgc2NyaXB0ID0gdGhpcy5fc2NyaXB0Rm9yU291cmNlRmlsZUlk
KHNvdXJjZUZpbGVJZCk7Ci0gICAgICAgIHZhciBzb3VyY2VGaWxlID0gdGhpcy5fc291cmNlRmls
ZXNbc291cmNlRmlsZUlkXTsKKyAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSB0aGlzLnVpU291
cmNlQ29kZSh1aVNvdXJjZUNvZGVJZCkucmF3U291cmNlQ29kZTsKKyAgICAgICAgdmFyIHNjcmlw
dCA9IHRoaXMuX3NjcmlwdEZvclJhd1NvdXJjZUNvZGUocmF3U291cmNlQ29kZSk7CiAKLSAgICAg
ICAgZnVuY3Rpb24gZGlkRWRpdFNjcmlwdFNvdXJjZShvbGRTb3VyY2UsIGVycm9yKQorICAgICAg
ICBmdW5jdGlvbiBkaWRFZGl0U2NyaXB0U291cmNlKGVycm9yKQogICAgICAgICB7CiAgICAgICAg
ICAgICBpZiAoIWVycm9yKSB7Ci0gICAgICAgICAgICAgICAgc291cmNlRmlsZS5jb250ZW50ID0g
bmV3U291cmNlOworICAgICAgICAgICAgICAgIHJhd1NvdXJjZUNvZGUuY29udGVudCA9IG5ld1Nv
dXJjZTsKIAotICAgICAgICAgICAgICAgIHZhciByZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5yZXNv
dXJjZUZvclVSTChzb3VyY2VGaWxlLnVybCk7CisgICAgICAgICAgICAgICAgdmFyIHJlc291cmNl
ID0gV2ViSW5zcGVjdG9yLnJlc291cmNlRm9yVVJMKHJhd1NvdXJjZUNvZGUudXJsKTsKICAgICAg
ICAgICAgICAgICBpZiAocmVzb3VyY2UpCiAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlLmFk
ZFJldmlzaW9uKG5ld1NvdXJjZSk7CiAgICAgICAgICAgICB9CkBAIC0yMzEsMjUgKzIxOSwxOSBA
QCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICBpZiAoIWVycm9yICYmIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmNhbGxG
cmFtZXMpCiAgICAgICAgICAgICAgICAgdGhpcy5fZGVidWdnZXJQYXVzZWQoKTsKICAgICAgICAg
fQotCi0gICAgICAgIHZhciBvbGRTb3VyY2UgPSBzb3VyY2VGaWxlLnJlcXVlc3RDb250ZW50KGRp
ZFJlY2VpdmVTb3VyY2UuYmluZCh0aGlzKSk7Ci0gICAgICAgIGZ1bmN0aW9uIGRpZFJlY2VpdmVT
b3VyY2Uob2xkU291cmNlKQotICAgICAgICB7Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3IuZGVi
dWdnZXJNb2RlbC5zZXRTY3JpcHRTb3VyY2Uoc2NyaXB0LnNjcmlwdElkLCBuZXdTb3VyY2UsIGRp
ZEVkaXRTY3JpcHRTb3VyY2UuYmluZCh0aGlzLCBvbGRTb3VyY2UpKTsKLSAgICAgICAgfQorICAg
ICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5zZXRTY3JpcHRTb3VyY2Uoc2NyaXB0LnNj
cmlwdElkLCBuZXdTb3VyY2UsIGRpZEVkaXRTY3JpcHRTb3VyY2UuYmluZCh0aGlzKSk7CiAgICAg
fSwKIAotICAgIF91cGRhdGVCcmVha3BvaW50c0FmdGVyTGl2ZUVkaXQ6IGZ1bmN0aW9uKHNvdXJj
ZUZpbGVJZCwgb2xkU291cmNlLCBuZXdTb3VyY2UpCisgICAgX3VwZGF0ZUJyZWFrcG9pbnRzQWZ0
ZXJMaXZlRWRpdDogZnVuY3Rpb24odWlTb3VyY2VDb2RlSWQsIG9sZFNvdXJjZSwgbmV3U291cmNl
KQogICAgIHsKLSAgICAgICAgdmFyIHNvdXJjZUZpbGUgPSB0aGlzLl9zb3VyY2VGaWxlc1tzb3Vy
Y2VGaWxlSWRdOworICAgICAgICB2YXIgYnJlYWtwb2ludHMgPSB0aGlzLl9icmVha3BvaW50TWFu
YWdlci5icmVha3BvaW50c0ZvclVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGVJZCk7CiAKICAgICAg
ICAgLy8gQ2xlYXIgYW5kIHJlLWNyZWF0ZSBicmVha3BvaW50cyBhY2NvcmRpbmcgdG8gdGV4dCBk
aWZmLgogICAgICAgICB2YXIgZGlmZiA9IEFycmF5LmRpZmYob2xkU291cmNlLnNwbGl0KCJcbiIp
LCBuZXdTb3VyY2Uuc3BsaXQoIlxuIikpOwotICAgICAgICBmb3IgKHZhciBsaW5lTnVtYmVyIGlu
IHNvdXJjZUZpbGUuYnJlYWtwb2ludHMpIHsKLSAgICAgICAgICAgIHZhciBicmVha3BvaW50ID0g
c291cmNlRmlsZS5icmVha3BvaW50c1tsaW5lTnVtYmVyXTsKKyAgICAgICAgZm9yICh2YXIgbGlu
ZU51bWJlciBpbiBicmVha3BvaW50cykgeworICAgICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBi
cmVha3BvaW50c1tsaW5lTnVtYmVyXTsKIAotICAgICAgICAgICAgdmFyIGxpbmVOdW1iZXIgPSBi
cmVha3BvaW50LmxpbmVOdW1iZXI7Ci0gICAgICAgICAgICB0aGlzLnJlbW92ZUJyZWFrcG9pbnQo
c291cmNlRmlsZUlkLCBsaW5lTnVtYmVyKTsKKyAgICAgICAgICAgIHRoaXMucmVtb3ZlQnJlYWtw
b2ludCh1aVNvdXJjZUNvZGVJZCwgbGluZU51bWJlcik7CiAKICAgICAgICAgICAgIHZhciBuZXdM
aW5lTnVtYmVyID0gZGlmZi5sZWZ0W2xpbmVOdW1iZXJdLnJvdzsKICAgICAgICAgICAgIGlmIChu
ZXdMaW5lTnVtYmVyID09PSB1bmRlZmluZWQpIHsKQEAgLTI2NiwxOSArMjQ4LDE5IEBAIFdlYklu
c3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAobmV3TGluZU51bWJlciAh
PT0gdW5kZWZpbmVkKQotICAgICAgICAgICAgICAgIHRoaXMuc2V0QnJlYWtwb2ludChzb3VyY2VG
aWxlSWQsIG5ld0xpbmVOdW1iZXIsIGJyZWFrcG9pbnQuY29uZGl0aW9uLCBicmVha3BvaW50LmVu
YWJsZWQpOworICAgICAgICAgICAgICAgIHRoaXMuc2V0QnJlYWtwb2ludCh1aVNvdXJjZUNvZGVJ
ZCwgbmV3TGluZU51bWJlciwgYnJlYWtwb2ludC5jb25kaXRpb24sIGJyZWFrcG9pbnQuZW5hYmxl
ZCk7CiAgICAgICAgIH0KICAgICB9LAogCi0gICAgc2V0Rm9ybWF0U291cmNlRmlsZXM6IGZ1bmN0
aW9uKGZvcm1hdFNvdXJjZUZpbGVzKQorICAgIHNldEZvcm1hdFNvdXJjZUZpbGVzOiBmdW5jdGlv
bihmb3JtYXRTb3VyY2UpCiAgICAgewotICAgICAgICBpZiAodGhpcy5fZm9ybWF0U291cmNlRmls
ZXMgPT09IGZvcm1hdFNvdXJjZUZpbGVzKQorICAgICAgICBpZiAodGhpcy5fZm9ybWF0U291cmNl
ID09PSBmb3JtYXRTb3VyY2UpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdGhpcy5f
Zm9ybWF0U291cmNlRmlsZXMgPSBmb3JtYXRTb3VyY2VGaWxlczsKKyAgICAgICAgdGhpcy5fZm9y
bWF0U291cmNlID0gZm9ybWF0U291cmNlOwogCiAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRNYW5h
Z2VyLnJlc2V0KCk7Ci0gICAgICAgIHRoaXMuX3NvdXJjZUZpbGVzID0ge307CisgICAgICAgIHRo
aXMuX3Jhd1NvdXJjZUNvZGUgPSB7fTsKICAgICAgICAgdmFyIG1lc3NhZ2VzID0gdGhpcy5fbWVz
c2FnZXM7CiAgICAgICAgIHRoaXMuX21lc3NhZ2VzID0gW107CiAKQEAgLTMwOCwxNyArMjkwLDE3
IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsK
ICAgICB7CiAgICAgICAgIHRoaXMuX21lc3NhZ2VzLnB1c2gobWVzc2FnZSk7CiAKLSAgICAgICAg
dmFyIHNvdXJjZUZpbGUgPSB0aGlzLl9zb3VyY2VGaWxlRm9yU2NyaXB0KG1lc3NhZ2UudXJsKTsK
LSAgICAgICAgaWYgKCFzb3VyY2VGaWxlKQorICAgICAgICB2YXIgcmF3U291cmNlQ29kZSA9IHRo
aXMuX3Jhd1NvdXJjZUNvZGVGb3JTY3JpcHQobWVzc2FnZS51cmwpOworICAgICAgICBpZiAoIXJh
d1NvdXJjZUNvZGUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgZnVuY3Rpb24gZGlk
R2V0VUlMb2NhdGlvbihzb3VyY2VGaWxlSWQsIGxpbmVOdW1iZXIpCisgICAgICAgIGZ1bmN0aW9u
IGRpZEdldFVJTG9jYXRpb24odWlTb3VyY2VDb2RlLCBsaW5lTnVtYmVyKQogICAgICAgICB7CiAg
ICAgICAgICAgICB2YXIgcHJlc2VudGF0aW9uTWVzc2FnZSA9IHt9OwotICAgICAgICAgICAgcHJl
c2VudGF0aW9uTWVzc2FnZS5zb3VyY2VGaWxlSWQgPSBzb3VyY2VGaWxlSWQ7CisgICAgICAgICAg
ICBwcmVzZW50YXRpb25NZXNzYWdlLnNvdXJjZUZpbGVJZCA9IHVpU291cmNlQ29kZS5pZDsKICAg
ICAgICAgICAgIHByZXNlbnRhdGlvbk1lc3NhZ2UubGluZU51bWJlciA9IGxpbmVOdW1iZXI7CiAg
ICAgICAgICAgICBwcmVzZW50YXRpb25NZXNzYWdlLm9yaWdpbmFsTWVzc2FnZSA9IG1lc3NhZ2U7
Ci0gICAgICAgICAgICBzb3VyY2VGaWxlLm1lc3NhZ2VzLnB1c2gocHJlc2VudGF0aW9uTWVzc2Fn
ZSk7CisgICAgICAgICAgICB1aVNvdXJjZUNvZGUubWVzc2FnZXMucHVzaChwcmVzZW50YXRpb25N
ZXNzYWdlKTsKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYklu
c3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkV2ZW50cy5Db25zb2xlTWVzc2FnZUFk
ZGVkLCBwcmVzZW50YXRpb25NZXNzYWdlKTsKICAgICAgICAgfQogICAgICAgICAvLyBGSVhNRSg2
MjcyNSk6IHN0YWNrIHRyYWNlIGxpbmUvY29sdW1uIG51bWJlcnMgYXJlIG9uZS1iYXNlZC4KQEAg
LTMzMCw3MSArMzEyLDcxIEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVs
LnByb3RvdHlwZSA9IHsKICAgICBfY29uc29sZUNsZWFyZWQ6IGZ1bmN0aW9uKCkKICAgICB7CiAg
ICAgICAgIHRoaXMuX21lc3NhZ2VzID0gW107Ci0gICAgICAgIGZvciAodmFyIGlkIGluIHRoaXMu
X3NvdXJjZUZpbGVzKQotICAgICAgICAgICAgdGhpcy5fc291cmNlRmlsZXNbaWRdLm1lc3NhZ2Vz
ID0gW107CisgICAgICAgIGZvciAodmFyIGlkIGluIHRoaXMuX3Jhd1NvdXJjZUNvZGUpCisgICAg
ICAgICAgICB0aGlzLl9yYXdTb3VyY2VDb2RlW2lkXS5tZXNzYWdlcyA9IFtdOwogICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50
YXRpb25Nb2RlbC5FdmVudHMuQ29uc29sZU1lc3NhZ2VzQ2xlYXJlZCk7CiAgICAgfSwKIAotICAg
IGNvbnRpbnVlVG9MaW5lOiBmdW5jdGlvbihzb3VyY2VGaWxlSWQsIGxpbmVOdW1iZXIpCisgICAg
Y29udGludWVUb0xpbmU6IGZ1bmN0aW9uKHVpU291cmNlQ29kZUlkLCBsaW5lTnVtYmVyKQogICAg
IHsKICAgICAgICAgZnVuY3Rpb24gZGlkR2V0U2NyaXB0TG9jYXRpb24obG9jYXRpb24pCiAgICAg
ICAgIHsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmNvbnRpbnVlVG9M
b2NhdGlvbihsb2NhdGlvbik7CiAgICAgICAgIH0KLSAgICAgICAgdGhpcy5fdWlMb2NhdGlvblRv
U2NyaXB0TG9jYXRpb24oc291cmNlRmlsZUlkLCBsaW5lTnVtYmVyLCBkaWRHZXRTY3JpcHRMb2Nh
dGlvbik7CisgICAgICAgIHRoaXMuX3VpTG9jYXRpb25Ub1NjcmlwdExvY2F0aW9uKHVpU291cmNl
Q29kZUlkLCBsaW5lTnVtYmVyLCBkaWRHZXRTY3JpcHRMb2NhdGlvbik7CiAgICAgfSwKIAotICAg
IGJyZWFrcG9pbnRzRm9yU291cmNlRmlsZUlkOiBmdW5jdGlvbihzb3VyY2VGaWxlSWQpCisgICAg
YnJlYWtwb2ludHNGb3JTb3VyY2VGaWxlSWQ6IGZ1bmN0aW9uKHVpU291cmNlQ29kZUlkKQogICAg
IHsKLSAgICAgICAgdmFyIGJyZWFrcG9pbnRzTWFwID0gdGhpcy5fYnJlYWtwb2ludE1hbmFnZXIu
YnJlYWtwb2ludHNGb3JVSVNvdXJjZUNvZGUoc291cmNlRmlsZUlkKTsKKyAgICAgICAgdmFyIGJy
ZWFrcG9pbnRzTWFwID0gdGhpcy5fYnJlYWtwb2ludE1hbmFnZXIuYnJlYWtwb2ludHNGb3JVSVNv
dXJjZUNvZGUodWlTb3VyY2VDb2RlSWQpOwogICAgICAgICB2YXIgYnJlYWtwb2ludHNMaXN0ID0g
W107CiAgICAgICAgIGZvciAodmFyIGxpbmVOdW1iZXIgaW4gYnJlYWtwb2ludHNNYXApCiAgICAg
ICAgICAgICBicmVha3BvaW50c0xpc3QucHVzaChicmVha3BvaW50c01hcFtsaW5lTnVtYmVyXSk7
CiAgICAgICAgIHJldHVybiBicmVha3BvaW50c0xpc3Q7CiAgICAgfSwKIAotICAgIHNldEJyZWFr
cG9pbnQ6IGZ1bmN0aW9uKHNvdXJjZUZpbGVJZCwgbGluZU51bWJlciwgY29uZGl0aW9uLCBlbmFi
bGVkKQorICAgIHNldEJyZWFrcG9pbnQ6IGZ1bmN0aW9uKHVpU291cmNlQ29kZUlkLCBsaW5lTnVt
YmVyLCBjb25kaXRpb24sIGVuYWJsZWQpCiAgICAgewotICAgICAgICB0aGlzLl9icmVha3BvaW50
TWFuYWdlci5zZXRCcmVha3BvaW50KHRoaXMuX3NvdXJjZUZpbGVzW3NvdXJjZUZpbGVJZF0sIGxp
bmVOdW1iZXIsIGNvbmRpdGlvbiwgZW5hYmxlZCk7CisgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRN
YW5hZ2VyLnNldEJyZWFrcG9pbnQodGhpcy51aVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlSWQpLCBs
aW5lTnVtYmVyLCBjb25kaXRpb24sIGVuYWJsZWQpOwogICAgIH0sCiAKLSAgICBzZXRCcmVha3Bv
aW50RW5hYmxlZDogZnVuY3Rpb24oc291cmNlRmlsZUlkLCBsaW5lTnVtYmVyLCBlbmFibGVkKQor
ICAgIHNldEJyZWFrcG9pbnRFbmFibGVkOiBmdW5jdGlvbih1aVNvdXJjZUNvZGVJZCwgbGluZU51
bWJlciwgZW5hYmxlZCkKICAgICB7Ci0gICAgICAgIHZhciBicmVha3BvaW50ID0gdGhpcy5maW5k
QnJlYWtwb2ludChzb3VyY2VGaWxlSWQsIGxpbmVOdW1iZXIpOworICAgICAgICB2YXIgYnJlYWtw
b2ludCA9IHRoaXMuZmluZEJyZWFrcG9pbnQodWlTb3VyY2VDb2RlSWQsIGxpbmVOdW1iZXIpOwog
ICAgICAgICBpZiAoIWJyZWFrcG9pbnQpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHRo
aXMuX2JyZWFrcG9pbnRNYW5hZ2VyLnJlbW92ZUJyZWFrcG9pbnQoc291cmNlRmlsZUlkLCBsaW5l
TnVtYmVyKTsKLSAgICAgICAgdGhpcy5fYnJlYWtwb2ludE1hbmFnZXIuc2V0QnJlYWtwb2ludCh0
aGlzLl9zb3VyY2VGaWxlc1tzb3VyY2VGaWxlSWRdLCBsaW5lTnVtYmVyLCBicmVha3BvaW50LmNv
bmRpdGlvbiwgZW5hYmxlZCk7CisgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRNYW5hZ2VyLnJlbW92
ZUJyZWFrcG9pbnQodWlTb3VyY2VDb2RlSWQsIGxpbmVOdW1iZXIpOworICAgICAgICB0aGlzLl9i
cmVha3BvaW50TWFuYWdlci5zZXRCcmVha3BvaW50KHRoaXMudWlTb3VyY2VDb2RlKHVpU291cmNl
Q29kZUlkKSwgbGluZU51bWJlciwgYnJlYWtwb2ludC5jb25kaXRpb24sIGVuYWJsZWQpOwogICAg
IH0sCiAKLSAgICB1cGRhdGVCcmVha3BvaW50OiBmdW5jdGlvbihzb3VyY2VGaWxlSWQsIGxpbmVO
dW1iZXIsIGNvbmRpdGlvbiwgZW5hYmxlZCkKKyAgICB1cGRhdGVCcmVha3BvaW50OiBmdW5jdGlv
bih1aVNvdXJjZUNvZGVJZCwgbGluZU51bWJlciwgY29uZGl0aW9uLCBlbmFibGVkKQogICAgIHsK
LSAgICAgICAgdGhpcy5fYnJlYWtwb2ludE1hbmFnZXIucmVtb3ZlQnJlYWtwb2ludChzb3VyY2VG
aWxlSWQsIGxpbmVOdW1iZXIpOwotICAgICAgICB0aGlzLl9icmVha3BvaW50TWFuYWdlci5zZXRC
cmVha3BvaW50KHRoaXMuX3NvdXJjZUZpbGVzW3NvdXJjZUZpbGVJZF0sIGxpbmVOdW1iZXIsIGNv
bmRpdGlvbiwgZW5hYmxlZCk7CisgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRNYW5hZ2VyLnJlbW92
ZUJyZWFrcG9pbnQodWlTb3VyY2VDb2RlSWQsIGxpbmVOdW1iZXIpOworICAgICAgICB0aGlzLl9i
cmVha3BvaW50TWFuYWdlci5zZXRCcmVha3BvaW50KHRoaXMudWlTb3VyY2VDb2RlKHVpU291cmNl
Q29kZUlkKSwgbGluZU51bWJlciwgY29uZGl0aW9uLCBlbmFibGVkKTsKICAgICB9LAogCi0gICAg
cmVtb3ZlQnJlYWtwb2ludDogZnVuY3Rpb24oc291cmNlRmlsZUlkLCBsaW5lTnVtYmVyKQorICAg
IHJlbW92ZUJyZWFrcG9pbnQ6IGZ1bmN0aW9uKHVpU291cmNlQ29kZUlkLCBsaW5lTnVtYmVyKQog
ICAgIHsKLSAgICAgICAgdGhpcy5fYnJlYWtwb2ludE1hbmFnZXIucmVtb3ZlQnJlYWtwb2ludChz
b3VyY2VGaWxlSWQsIGxpbmVOdW1iZXIpOworICAgICAgICB0aGlzLl9icmVha3BvaW50TWFuYWdl
ci5yZW1vdmVCcmVha3BvaW50KHVpU291cmNlQ29kZUlkLCBsaW5lTnVtYmVyKTsKICAgICB9LAog
Ci0gICAgZmluZEJyZWFrcG9pbnQ6IGZ1bmN0aW9uKHNvdXJjZUZpbGVJZCwgbGluZU51bWJlcikK
KyAgICBmaW5kQnJlYWtwb2ludDogZnVuY3Rpb24odWlTb3VyY2VDb2RlSWQsIGxpbmVOdW1iZXIp
CiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fYnJlYWtwb2ludE1hbmFnZXIuYnJlYWtwb2lu
dHNGb3JVSVNvdXJjZUNvZGUoc291cmNlRmlsZUlkKVtsaW5lTnVtYmVyXTsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX2JyZWFrcG9pbnRNYW5hZ2VyLmJyZWFrcG9pbnRzRm9yVUlTb3VyY2VDb2RlKHVp
U291cmNlQ29kZUlkKVtsaW5lTnVtYmVyXTsKICAgICB9LAogCi0gICAgX2JyZWFrcG9pbnRBZGRl
ZDogZnVuY3Rpb24oc291cmNlRmlsZUlkLCBsaW5lTnVtYmVyLCBjb25kaXRpb24sIGVuYWJsZWQp
CisgICAgX2JyZWFrcG9pbnRBZGRlZDogZnVuY3Rpb24odWlTb3VyY2VDb2RlSWQsIGxpbmVOdW1i
ZXIsIGNvbmRpdGlvbiwgZW5hYmxlZCkKICAgICB7Ci0gICAgICAgIHZhciBzb3VyY2VGaWxlID0g
dGhpcy5fc291cmNlRmlsZXNbc291cmNlRmlsZUlkXTsKLSAgICAgICAgaWYgKCFzb3VyY2VGaWxl
KQorICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gdGhpcy51aVNvdXJjZUNvZGUodWlTb3VyY2VD
b2RlSWQpOworICAgICAgICBpZiAoIXVpU291cmNlQ29kZSkKICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgdmFyIHByZXNlbnRhdGlvbkJyZWFrcG9pbnQgPSBuZXcgV2ViSW5zcGVjdG9yLlBy
ZXNlbnRhdGlvbkJyZWFrcG9pbnQoc291cmNlRmlsZSwgbGluZU51bWJlciwgY29uZGl0aW9uLCBl
bmFibGVkKTsKKyAgICAgICAgdmFyIHByZXNlbnRhdGlvbkJyZWFrcG9pbnQgPSBuZXcgV2ViSW5z
cGVjdG9yLlByZXNlbnRhdGlvbkJyZWFrcG9pbnQodWlTb3VyY2VDb2RlLCBsaW5lTnVtYmVyLCBj
b25kaXRpb24sIGVuYWJsZWQpOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMuQnJlYWtwb2lu
dEFkZGVkLCBwcmVzZW50YXRpb25CcmVha3BvaW50KTsKICAgICB9LAogCi0gICAgX2JyZWFrcG9p
bnRSZW1vdmVkOiBmdW5jdGlvbihzb3VyY2VGaWxlSWQsIGxpbmVOdW1iZXIpCisgICAgX2JyZWFr
cG9pbnRSZW1vdmVkOiBmdW5jdGlvbih1aVNvdXJjZUNvZGVJZCwgbGluZU51bWJlcikKICAgICB7
Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5EZWJ1
Z2dlclByZXNlbnRhdGlvbk1vZGVsLkV2ZW50cy5CcmVha3BvaW50UmVtb3ZlZCwgeyBzb3VyY2VG
aWxlSWQ6IHNvdXJjZUZpbGVJZCwgbGluZU51bWJlcjogbGluZU51bWJlciB9KTsKKyAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2Vu
dGF0aW9uTW9kZWwuRXZlbnRzLkJyZWFrcG9pbnRSZW1vdmVkLCB7IHNvdXJjZUZpbGVJZDogdWlT
b3VyY2VDb2RlSWQsIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIgfSk7CiAgICAgfSwKIAogICAgIF9k
ZWJ1Z2dlclBhdXNlZDogZnVuY3Rpb24oKQpAQCAtNDAzLDExICszODUsMTEgQEAgV2ViSW5zcGVj
dG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlz
Ll9wcmVzZW50YXRpb25DYWxsRnJhbWVzID0gW107CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgY2FsbEZyYW1lcy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgdmFyIGNhbGxGcmFtZSA9
IGNhbGxGcmFtZXNbaV07Ci0gICAgICAgICAgICB2YXIgc291cmNlRmlsZTsKKyAgICAgICAgICAg
IHZhciByYXdTb3VyY2VDb2RlOwogICAgICAgICAgICAgdmFyIHNjcmlwdCA9IFdlYkluc3BlY3Rv
ci5kZWJ1Z2dlck1vZGVsLnNjcmlwdEZvclNvdXJjZUlEKGNhbGxGcmFtZS5sb2NhdGlvbi5zY3Jp
cHRJZCk7CiAgICAgICAgICAgICBpZiAoc2NyaXB0KQotICAgICAgICAgICAgICAgIHNvdXJjZUZp
bGUgPSB0aGlzLl9zb3VyY2VGaWxlRm9yU2NyaXB0KHNjcmlwdC5zb3VyY2VVUkwsIHNjcmlwdC5z
Y3JpcHRJZCk7Ci0gICAgICAgICAgICB0aGlzLl9wcmVzZW50YXRpb25DYWxsRnJhbWVzLnB1c2go
bmV3IFdlYkluc3BlY3Rvci5QcmVzZW5hdGlvbkNhbGxGcmFtZShjYWxsRnJhbWUsIGksIHRoaXMs
IHNvdXJjZUZpbGUpKTsKKyAgICAgICAgICAgICAgICByYXdTb3VyY2VDb2RlID0gdGhpcy5fcmF3
U291cmNlQ29kZUZvclNjcmlwdChzY3JpcHQuc291cmNlVVJMLCBzY3JpcHQuc2NyaXB0SWQpOwor
ICAgICAgICAgICAgdGhpcy5fcHJlc2VudGF0aW9uQ2FsbEZyYW1lcy5wdXNoKG5ldyBXZWJJbnNw
ZWN0b3IuUHJlc2VuYXRpb25DYWxsRnJhbWUoY2FsbEZyYW1lLCBpLCB0aGlzLCByYXdTb3VyY2VD
b2RlKSk7CiAgICAgICAgIH0KICAgICAgICAgdmFyIGRldGFpbHMgPSBXZWJJbnNwZWN0b3IuZGVi
dWdnZXJNb2RlbC5kZWJ1Z2dlclBhdXNlZERldGFpbHM7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLkV2
ZW50cy5EZWJ1Z2dlclBhdXNlZCwgeyBjYWxsRnJhbWVzOiB0aGlzLl9wcmVzZW50YXRpb25DYWxs
RnJhbWVzLCBkZXRhaWxzOiBkZXRhaWxzIH0pOwpAQCAtNDM0LDcgKzQxNiw3IEBAIFdlYkluc3Bl
Y3Rvci5EZWJ1Z2dlclByZXNlbnRhdGlvbk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX3ByZXNlbnRhdGlvbkNhbGxGcmFtZXNbdGhpcy5fc2VsZWN0ZWRDYWxsRnJhbWVJ
bmRleF07CiAgICAgfSwKIAotICAgIF9zb3VyY2VGaWxlRm9yU2NyaXB0OiBmdW5jdGlvbihzb3Vy
Y2VVUkwsIHNjcmlwdElkKQorICAgIF9yYXdTb3VyY2VDb2RlRm9yU2NyaXB0OiBmdW5jdGlvbihz
b3VyY2VVUkwsIHNjcmlwdElkKQogICAgIHsKICAgICAgICAgaWYgKCFzb3VyY2VVUkwpIHsKICAg
ICAgICAgICAgIHZhciBzY3JpcHQgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5zY3JpcHRG
b3JTb3VyY2VJRChzY3JpcHRJZCk7CkBAIC00NDIsMjcgKzQyNCwyNyBAQCBXZWJJbnNwZWN0b3Iu
RGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgc291cmNlVVJMID0gc2NyaXB0LnNvdXJjZVVSTDsKICAgICAg
ICAgfQotICAgICAgICByZXR1cm4gdGhpcy5fc291cmNlRmlsZXNbdGhpcy5fY3JlYXRlU291cmNl
RmlsZUlkKHNvdXJjZVVSTCwgc2NyaXB0SWQpXTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Jhd1Nv
dXJjZUNvZGVbdGhpcy5fY3JlYXRlUmF3U291cmNlQ29kZUlkKHNvdXJjZVVSTCwgc2NyaXB0SWQp
XTsKICAgICB9LAogCi0gICAgX3NjcmlwdEZvclNvdXJjZUZpbGVJZDogZnVuY3Rpb24oc291cmNl
RmlsZUlkKQorICAgIF9zY3JpcHRGb3JSYXdTb3VyY2VDb2RlOiBmdW5jdGlvbihyYXdTb3VyY2VD
b2RlKQogICAgIHsKICAgICAgICAgZnVuY3Rpb24gZmlsdGVyKHNjcmlwdCkKICAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZVNvdXJjZUZpbGVJZChzY3JpcHQuc291cmNl
VVJMLCBzY3JpcHQuc2NyaXB0SWQpID09PSBzb3VyY2VGaWxlSWQ7CisgICAgICAgICAgICByZXR1
cm4gdGhpcy5fY3JlYXRlUmF3U291cmNlQ29kZUlkKHNjcmlwdC5zb3VyY2VVUkwsIHNjcmlwdC5z
Y3JpcHRJZCkgPT09IHJhd1NvdXJjZUNvZGUuaWQ7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJu
IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLnF1ZXJ5U2NyaXB0cyhmaWx0ZXIuYmluZCh0aGlz
KSlbMF07CiAgICAgfSwKIAotICAgIF9jcmVhdGVTb3VyY2VGaWxlSWQ6IGZ1bmN0aW9uKHNvdXJj
ZVVSTCwgc2NyaXB0SWQpCisgICAgX2NyZWF0ZVJhd1NvdXJjZUNvZGVJZDogZnVuY3Rpb24oc291
cmNlVVJMLCBzY3JpcHRJZCkKICAgICB7Ci0gICAgICAgIHZhciBwcmVmaXggPSB0aGlzLl9mb3Jt
YXRTb3VyY2VGaWxlcyA/ICJkZW9iZnVzY2F0ZWQ6IiA6ICIiOworICAgICAgICB2YXIgcHJlZml4
ID0gdGhpcy5fZm9ybWF0U291cmNlID8gImRlb2JmdXNjYXRlZDoiIDogIiI7CiAgICAgICAgIHJl
dHVybiBwcmVmaXggKyAoc291cmNlVVJMIHx8IHNjcmlwdElkKTsKICAgICB9LAogCiAgICAgX2Rl
YnVnZ2VyUmVzZXQ6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3NvdXJjZUZpbGVz
ID0ge307CisgICAgICAgIHRoaXMuX3Jhd1NvdXJjZUNvZGUgPSB7fTsKICAgICAgICAgdGhpcy5f
bWVzc2FnZXMgPSBbXTsKICAgICAgICAgdGhpcy5fc291cmNlTWFwcGluZ0xpc3RlbmVycyA9IFtd
OwogICAgICAgICB0aGlzLl9wcmVzZW50YXRpb25DYWxsRnJhbWVzID0gW107CkBAIC00NzYsMTAg
KzQ1OCwxMCBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5wcm90b3R5
cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdAogLyoqCiAgKiBAY29uc3RydWN0b3IK
ICAqLwotV2ViSW5zcGVjdG9yLlByZXNlbnRhdGlvbkJyZWFrcG9pbnQgPSBmdW5jdGlvbihzb3Vy
Y2VGaWxlLCBsaW5lTnVtYmVyLCBjb25kaXRpb24sIGVuYWJsZWQpCitXZWJJbnNwZWN0b3IuUHJl
c2VudGF0aW9uQnJlYWtwb2ludCA9IGZ1bmN0aW9uKHVpU291cmNlQ29kZSwgbGluZU51bWJlciwg
Y29uZGl0aW9uLCBlbmFibGVkKQogewotICAgIHRoaXMuc291cmNlRmlsZSA9IHNvdXJjZUZpbGU7
Ci0gICAgdGhpcy5zb3VyY2VGaWxlSWQgPSBzb3VyY2VGaWxlLmlkOworICAgIHRoaXMuc291cmNl
RmlsZSA9IHVpU291cmNlQ29kZTsKKyAgICB0aGlzLnNvdXJjZUZpbGVJZCA9IHVpU291cmNlQ29k
ZS5pZDsKICAgICB0aGlzLmxpbmVOdW1iZXIgPSBsaW5lTnVtYmVyOwogICAgIHRoaXMuY29uZGl0
aW9uID0gY29uZGl0aW9uOwogICAgIHRoaXMuZW5hYmxlZCA9IGVuYWJsZWQ7CkBAIC01OTAsOSAr
NTcyLDEzIEBAIFdlYkluc3BlY3Rvci5QcmVzZW5hdGlvbkNhbGxGcmFtZS5wcm90b3R5cGUgPSB7
CiAgICAgc291cmNlTGluZTogZnVuY3Rpb24oY2FsbGJhY2spCiAgICAgewogICAgICAgICB2YXIg
bG9jYXRpb24gPSB0aGlzLl9jYWxsRnJhbWUubG9jYXRpb247Ci0gICAgICAgIGlmICghdGhpcy5p
c0ludGVybmFsU2NyaXB0KQotICAgICAgICAgICAgdGhpcy5fbW9kZWwuX3NjcmlwdExvY2F0aW9u
VG9VSUxvY2F0aW9uKG51bGwsIGxvY2F0aW9uLnNjcmlwdElkLCBsb2NhdGlvbi5saW5lTnVtYmVy
LCBsb2NhdGlvbi5jb2x1bW5OdW1iZXIsIGNhbGxiYWNrKTsKLSAgICAgICAgZWxzZQorICAgICAg
ICBpZiAoIXRoaXMuaXNJbnRlcm5hbFNjcmlwdCkgeworICAgICAgICAgICAgZnVuY3Rpb24gZGlk
R2V0VUlMb2NhdGlvbih1aVNvdXJjZUNvZGUsIGxpbmVOdW1iZXIpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgY2FsbGJhY2sodWlTb3VyY2VDb2RlLmlkLCBsaW5lTnVtYmVyKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHRoaXMuX21vZGVsLl9zY3JpcHRMb2NhdGlvblRvVUlM
b2NhdGlvbihudWxsLCBsb2NhdGlvbi5zY3JpcHRJZCwgbG9jYXRpb24ubGluZU51bWJlciwgbG9j
YXRpb24uY29sdW1uTnVtYmVyLCBkaWRHZXRVSUxvY2F0aW9uKTsKKyAgICAgICAgfSBlbHNlCiAg
ICAgICAgICAgICBjYWxsYmFjayh1bmRlZmluZWQsIGxvY2F0aW9uLmxpbmVOdW1iZXIpOwogICAg
IH0KIH0KQEAgLTYxMCwxMCArNTk2LDEwIEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclByZXNlbnRh
dGlvbk1vZGVsUmVzb3VyY2VCaW5kaW5nID0gZnVuY3Rpb24obW9kZWwpCiBXZWJJbnNwZWN0b3Iu
RGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbFJlc291cmNlQmluZGluZy5wcm90b3R5cGUgPSB7CiAg
ICAgY2FuU2V0Q29udGVudDogZnVuY3Rpb24ocmVzb3VyY2UpCiAgICAgewotICAgICAgICB2YXIg
c291cmNlRmlsZSA9IHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLl9zb3VyY2VGaWxlRm9yU2NyaXB0
KHJlc291cmNlLnVybCkKLSAgICAgICAgaWYgKCFzb3VyY2VGaWxlKQorICAgICAgICB2YXIgcmF3
U291cmNlQ29kZSA9IHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLl9yYXdTb3VyY2VDb2RlRm9yU2Ny
aXB0KHJlc291cmNlLnVybCkKKyAgICAgICAgaWYgKCFyYXdTb3VyY2VDb2RlKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXR1cm4gdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwu
Y2FuRWRpdFNjcmlwdFNvdXJjZShzb3VyY2VGaWxlLmlkKTsKKyAgICAgICAgcmV0dXJuIHRoaXMu
X3ByZXNlbnRhdGlvbk1vZGVsLmNhbkVkaXRTY3JpcHRTb3VyY2UocmF3U291cmNlQ29kZS5pZCk7
CiAgICAgfSwKIAogICAgIHNldENvbnRlbnQ6IGZ1bmN0aW9uKHJlc291cmNlLCBjb250ZW50LCBt
YWpvckNoYW5nZSwgdXNlckNhbGxiYWNrKQpAQCAtNjIxLDI3ICs2MDcsMjcgQEAgV2ViSW5zcGVj
dG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9kZWxSZXNvdXJjZUJpbmRpbmcucHJvdG90eXBlID0g
ewogICAgICAgICBpZiAoIW1ham9yQ2hhbmdlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgIHZhciBzb3VyY2VGaWxlID0gdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuX3NvdXJjZUZpbGVG
b3JTY3JpcHQocmVzb3VyY2UudXJsKTsKLSAgICAgICAgaWYgKCFzb3VyY2VGaWxlKSB7CisgICAg
ICAgIHZhciByYXdTb3VyY2VDb2RlID0gdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuX3Jhd1NvdXJj
ZUNvZGVGb3JTY3JpcHQocmVzb3VyY2UudXJsKTsKKyAgICAgICAgaWYgKCFyYXdTb3VyY2VDb2Rl
KSB7CiAgICAgICAgICAgICB1c2VyQ2FsbGJhY2soIlJlc291cmNlIGlzIG5vdCBlZGl0YWJsZSIp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgcmVzb3VyY2UucmVx
dWVzdENvbnRlbnQodGhpcy5fc2V0Q29udGVudFdpdGhJbml0aWFsQ29udGVudC5iaW5kKHRoaXMs
IHNvdXJjZUZpbGUsIGNvbnRlbnQsIHVzZXJDYWxsYmFjaykpOworICAgICAgICByZXNvdXJjZS5y
ZXF1ZXN0Q29udGVudCh0aGlzLl9zZXRDb250ZW50V2l0aEluaXRpYWxDb250ZW50LmJpbmQodGhp
cywgcmF3U291cmNlQ29kZSwgY29udGVudCwgdXNlckNhbGxiYWNrKSk7CiAgICAgfSwKIAotICAg
IF9zZXRDb250ZW50V2l0aEluaXRpYWxDb250ZW50OiBmdW5jdGlvbihzb3VyY2VGaWxlLCBjb250
ZW50LCB1c2VyQ2FsbGJhY2ssIG9sZENvbnRlbnQpCisgICAgX3NldENvbnRlbnRXaXRoSW5pdGlh
bENvbnRlbnQ6IGZ1bmN0aW9uKHJhd1NvdXJjZUNvZGUsIGNvbnRlbnQsIHVzZXJDYWxsYmFjaywg
b2xkQ29udGVudCkKICAgICB7CiAgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKGVycm9yKQogICAg
ICAgICB7CiAgICAgICAgICAgICBpZiAodXNlckNhbGxiYWNrKQogICAgICAgICAgICAgICAgIHVz
ZXJDYWxsYmFjayhlcnJvcik7CiAgICAgICAgICAgICBpZiAoIWVycm9yKSB7Ci0gICAgICAgICAg
ICAgICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuX3VwZGF0ZUJyZWFrcG9pbnRzQWZ0ZXJMaXZl
RWRpdChzb3VyY2VGaWxlLmlkLCBvbGRDb250ZW50LCBjb250ZW50KTsKLSAgICAgICAgICAgICAg
ICBzb3VyY2VGaWxlLnJlbG9hZCgpOworICAgICAgICAgICAgICAgIHRoaXMuX3ByZXNlbnRhdGlv
bk1vZGVsLl91cGRhdGVCcmVha3BvaW50c0FmdGVyTGl2ZUVkaXQocmF3U291cmNlQ29kZS5pZCwg
b2xkQ29udGVudCwgY29udGVudCk7CisgICAgICAgICAgICAgICAgcmF3U291cmNlQ29kZS5yZWxv
YWQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICB0aGlzLl9wcmVzZW50YXRp
b25Nb2RlbC5zZXRTY3JpcHRTb3VyY2Uoc291cmNlRmlsZS5pZCwgY29udGVudCwgY2FsbGJhY2su
YmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsLnNldFNjcmlwdFNv
dXJjZShyYXdTb3VyY2VDb2RlLmlkLCBjb250ZW50LCBjYWxsYmFjay5iaW5kKHRoaXMpKTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
U2NyaXB0c1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3Jp
cHRzUGFuZWwuanMKaW5kZXggMTI4NWQzYWY1YzMwMzAxNGIwZmU2YmExYjFlYWViYzU3ODg0MDFl
ZC4uZDQ3ZjBhMmU4OTQ2MmYxZDI3NTc2YTRlNWQ3NGNlYTExNzFkNzUwMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKQEAgLTU5
Nyw3ICs1OTcsNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKIAog
ICAgIGNhblNob3dBbmNob3JMb2NhdGlvbjogZnVuY3Rpb24oYW5jaG9yKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuX2RlYnVnZ2VyRW5hYmxlZCAmJiB0aGlzLl9wcmVzZW50YXRpb25Nb2Rl
bC5zb3VyY2VGaWxlRm9yU2NyaXB0VVJMKGFuY2hvci5ocmVmKTsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX2RlYnVnZ2VyRW5hYmxlZCAmJiBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5zY3JpcHRz
Rm9yVVJMKGFuY2hvci5ocmVmKS5sZW5ndGg7CiAgICAgfSwKIAogICAgIHNob3dBbmNob3JMb2Nh
dGlvbjogZnVuY3Rpb24oYW5jaG9yKQpAQCAtNjQ0LDcgKzY0NCw3IEBAIFdlYkluc3BlY3Rvci5T
Y3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB2YXIgc291cmNlRnJhbWUgPSB0aGlz
Ll9zb3VyY2VGcmFtZUZvclNvdXJjZUZpbGVJZChzb3VyY2VGaWxlSWQpOwogICAgICAgICB0aGlz
LnZpc2libGVWaWV3ID0gc291cmNlRnJhbWU7CiAKLSAgICAgICAgdmFyIHNvdXJjZUZpbGUgPSB0
aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5zb3VyY2VGaWxlKHNvdXJjZUZpbGVJZCk7CisgICAgICAg
IHZhciBzb3VyY2VGaWxlID0gdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwudWlTb3VyY2VDb2RlKHNv
dXJjZUZpbGVJZCk7CiAgICAgICAgIGlmIChzb3VyY2VGaWxlLnVybCkKICAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5zZXR0aW5ncy5sYXN0Vmlld2VkU2NyaXB0RmlsZS5zZXQoc291cmNlRmlsZS51
cmwpOwogCkBAIC02NTksNyArNjU5LDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90
b3R5cGUgPSB7CiAKICAgICBfY3JlYXRlU291cmNlRnJhbWU6IGZ1bmN0aW9uKHNvdXJjZUZpbGVJ
ZCkKICAgICB7Ci0gICAgICAgIHZhciBzb3VyY2VGaWxlID0gdGhpcy5fcHJlc2VudGF0aW9uTW9k
ZWwuc291cmNlRmlsZShzb3VyY2VGaWxlSWQpOworICAgICAgICB2YXIgc291cmNlRmlsZSA9IHRo
aXMuX3ByZXNlbnRhdGlvbk1vZGVsLnVpU291cmNlQ29kZShzb3VyY2VGaWxlSWQpOwogICAgICAg
ICB2YXIgZGVsZWdhdGUgPSBuZXcgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lRGVsZWdhdGVGb3JT
Y3JpcHRzUGFuZWwodGhpcy5fcHJlc2VudGF0aW9uTW9kZWwsIHNvdXJjZUZpbGVJZCk7CiAgICAg
ICAgIHZhciBzb3VyY2VGcmFtZSA9IG5ldyBXZWJJbnNwZWN0b3IuU291cmNlRnJhbWUoZGVsZWdh
dGUsIHNvdXJjZUZpbGUudXJsKTsKICAgICAgICAgdGhpcy5hZGRDaGlsZFZpZXcoc291cmNlRnJh
bWUpOwpAQCAtNzAwLDcgKzcwMCw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90
eXBlID0gewogICAgIHsKICAgICAgICAgdmFyIHNvdXJjZUZyYW1lID0gZXZlbnQudGFyZ2V0Owog
ICAgICAgICB2YXIgc291cmNlRmlsZUlkID0gc291cmNlRnJhbWUuX3NvdXJjZUZpbGVJZDsKLSAg
ICAgICAgdmFyIHNvdXJjZUZpbGUgPSB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbC5zb3VyY2VGaWxl
KHNvdXJjZUZpbGVJZCk7CisgICAgICAgIHZhciBzb3VyY2VGaWxlID0gdGhpcy5fcHJlc2VudGF0
aW9uTW9kZWwudWlTb3VyY2VDb2RlKHNvdXJjZUZpbGVJZCk7CiAKICAgICAgICAgdmFyIG1lc3Nh
Z2VzID0gc291cmNlRmlsZS5tZXNzYWdlczsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBt
ZXNzYWdlcy5sZW5ndGg7ICsraSkgewpAQCAtNzQyLDcgKzc0Miw3IEBAIFdlYkluc3BlY3Rvci5T
Y3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgICAgICBpZiAoIShzb3VyY2VGaWxl
SWQgaW4gdGhpcy5fc291cmNlRmlsZUlkVG9GaWxlc1NlbGVjdE9wdGlvbikpIHsKICAgICAgICAg
ICAgICAgICAvLyBBbm9ueW1vdXMgc2NyaXB0cyBhcmUgbm90IGFkZGVkIHRvIGZpbGVzIHNlbGVj
dCBieSBkZWZhdWx0LgotICAgICAgICAgICAgICAgIHZhciBzb3VyY2VGaWxlID0gdGhpcy5fcHJl
c2VudGF0aW9uTW9kZWwuc291cmNlRmlsZShzb3VyY2VGaWxlSWQpOworICAgICAgICAgICAgICAg
IHZhciBzb3VyY2VGaWxlID0gdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwudWlTb3VyY2VDb2RlKHNv
dXJjZUZpbGVJZCk7CiAgICAgICAgICAgICAgICAgdGhpcy5fYWRkT3B0aW9uVG9GaWxlc1NlbGVj
dChzb3VyY2VGaWxlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHZhciBzb3VyY2VGcmFt
ZSA9IHRoaXMuX3Nob3dTb3VyY2VGcmFtZUFuZEFkZFRvSGlzdG9yeShzb3VyY2VGaWxlSWQpOwpA
QCAtMTE4OCw3ICsxMTg4LDcgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lRGVsZWdhdGVGb3JT
Y3JpcHRzUGFuZWwgPSBmdW5jdGlvbihtb2RlbCwgc291cmNlRmlsZUlkKQogV2ViSW5zcGVjdG9y
LlNvdXJjZUZyYW1lRGVsZWdhdGVGb3JTY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgIHJl
cXVlc3RDb250ZW50OiBmdW5jdGlvbihjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIHRoaXMuX21v
ZGVsLnJlcXVlc3RTb3VyY2VGaWxlQ29udGVudCh0aGlzLl9zb3VyY2VGaWxlSWQsIGNhbGxiYWNr
KTsKKyAgICAgICAgdGhpcy5fbW9kZWwudWlTb3VyY2VDb2RlKHRoaXMuX3NvdXJjZUZpbGVJZCku
cmVxdWVzdENvbnRlbnQoY2FsbGJhY2spOwogICAgIH0sCiAKICAgICBkZWJ1Z2dpbmdTdXBwb3J0
ZWQ6IGZ1bmN0aW9uKCkKQEAgLTEyNTYsNyArMTI1Niw3IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VG
cmFtZURlbGVnYXRlRm9yU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgIHN1Z2dlc3Rl
ZEZpbGVOYW1lOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB2YXIgc291cmNlRmlsZSA9IHRo
aXMuX21vZGVsLnNvdXJjZUZpbGUodGhpcy5fc291cmNlRmlsZUlkKTsKKyAgICAgICAgdmFyIHNv
dXJjZUZpbGUgPSB0aGlzLl9tb2RlbC51aVNvdXJjZUNvZGUodGhpcy5fc291cmNlRmlsZUlkKTsK
ICAgICAgICAgdmFyIG5hbWVzID0gV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLl9mb2xkZXJB
bmREaXNwbGF5TmFtZUZvclNjcmlwdFVSTChzb3VyY2VGaWxlLnVybCk7CiAgICAgICAgIHJldHVy
biBuYW1lcy5kaXNwbGF5TmFtZSB8fCAidW50aXRsZWQuanMiOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRmlsZS5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRmlsZS5qcwppbmRleCA0MmVhNzg3
ZjBkM2FmMGJmNWI4NTM3MmEzMTEyOWNjMjBjNDFhMDBhLi4zNGEzZTM5MWMyM2ZkYzI3ZmQ4NzY0
N2NkYzQ5MjJhZDFhZjg0ZjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NvdXJjZUZpbGUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9Tb3VyY2VGaWxlLmpzCkBAIC03OCw5ICs3OCw4IEBAIFdlYkluc3BlY3Rvci5SYXdT
b3VyY2VDb2RlLnByb3RvdHlwZSA9IHsKIAogICAgIHJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uOiBm
dW5jdGlvbihyYXdMb2NhdGlvbikKICAgICB7Ci0gICAgICAgIHZhciB1aUxvY2F0aW9uID0gdGhp
cy5fbWFwcGluZyA/IHRoaXMuX21hcHBpbmcub3JpZ2luYWxUb0Zvcm1hdHRlZChyYXdMb2NhdGlv
bikgOiByYXdMb2NhdGlvbjsKLSAgICAgICAgdWlMb2NhdGlvbi5zb3VyY2VGaWxlID0gdGhpczsK
LSAgICAgICAgcmV0dXJuIHVpTG9jYXRpb247CisgICAgICAgIHZhciBsb2NhdGlvbiA9IHRoaXMu
X21hcHBpbmcgPyB0aGlzLl9tYXBwaW5nLm9yaWdpbmFsVG9Gb3JtYXR0ZWQocmF3TG9jYXRpb24p
IDogcmF3TG9jYXRpb247CisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlVJTG9jYXRp
b24odGhpcywgbG9jYXRpb24ubGluZU51bWJlciwgbG9jYXRpb24uY29sdW1uTnVtYmVyKTsKICAg
ICB9LAogCiAgICAgdWlMb2NhdGlvblRvUmF3TG9jYXRpb246IGZ1bmN0aW9uKGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlcikKQEAgLTI2MCw2ICsyNTksMTcgQEAgV2ViSW5zcGVjdG9yLlJhd1NvdXJj
ZUNvZGUucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBl
OwogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgorICovCitXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbiA9
IGZ1bmN0aW9uKHVpU291cmNlQ29kZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKQoreworICAg
IHRoaXMudWlTb3VyY2VDb2RlID0gdWlTb3VyY2VDb2RlOworICAgIHRoaXMubGluZU51bWJlciA9
IGxpbmVOdW1iZXI7CisgICAgdGhpcy5jb2x1bW5OdW1iZXIgPSBjb2x1bW5OdW1iZXI7Cit9CisK
KworLyoqCisgKiBAY29uc3RydWN0b3IKICAqIEBpbXBsZW1lbnRzIHtXZWJJbnNwZWN0b3IuQ29u
dGVudFByb3ZpZGVyfQogICovCiBXZWJJbnNwZWN0b3IuU2NyaXB0Q29udGVudFByb3ZpZGVyID0g
ZnVuY3Rpb24oc2NyaXB0KQo=
</data>
<flag name="review"
          id="101248"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>