<?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>84240</bug_id>
          
          <creation_ts>2012-04-18 07:29:27 -0700</creation_ts>
          <short_desc>Web Inspector: DataGrid should use explicit root node</short_desc>
          <delta_ts>2012-04-18 08:00:13 -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="Yury Semikhatsky">yurys</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</assigned_to>
          <cc>alph</cc>
    
    <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>604719</commentid>
    <comment_count>0</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-04-18 07:29:27 -0700</bug_when>
    <thetext>Instead of pretending to be a regular node DataGrid object should have an explicit root node that would contain all its children. This way we don&apos;t need to share some methods between DataGridNode and DataGrid.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604724</commentid>
    <comment_count>1</comment_count>
      <attachid>137686</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-04-18 07:49:11 -0700</bug_when>
    <thetext>Created attachment 137686
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604727</commentid>
    <comment_count>2</comment_count>
      <attachid>137686</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-04-18 07:54:05 -0700</bug_when>
    <thetext>Comment on attachment 137686
Patch

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

&gt; Source/WebCore/inspector/front-end/ApplicationCacheItemsView.js:208
&gt; +        this._dataGrid = new WebInspector.DataGrid(columns, new WebInspector.DataGridNode());

You should create root node implicitly within the data grid.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604732</commentid>
    <comment_count>3</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-04-18 07:57:37 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 137686 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=137686&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/ApplicationCacheItemsView.js:208
&gt; &gt; +        this._dataGrid = new WebInspector.DataGrid(columns, new WebInspector.DataGridNode());
&gt; 
&gt; You should create root node implicitly within the data grid.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604735</commentid>
    <comment_count>4</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-04-18 08:00:13 -0700</bug_when>
    <thetext>Committed r114504: &lt;http://trac.webkit.org/changeset/114504&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137686</attachid>
            <date>2012-04-18 07:49:11 -0700</date>
            <delta_ts>2012-04-18 07:54:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84240-20120418184909.patch</filename>
            <type>text/plain</type>
            <size>50834</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0NDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDc1YzNkN2JjNmYyODM4
YjBlYjM3YjExYWYxMWZiNTE3N2Q5MmJlMy4uMGYxZjFlNjhlNmQwZDY3YWVmMWY1YzA0YTI2MGFl
ZDY2NTg2YzYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg5IEBACisyMDEyLTA0LTE4ICBZdXJ5
IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IERhdGFHcmlkIHNob3VsZCB1c2UgZXhwbGljaXQgcm9vdCBub2RlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDI0MAorCisgICAgICAgIERhdGFH
cmlkIG5vdyBoYXMgYW4gZXhwbGljaXQgcm9vdCBub2RlLiBBbGwgY2hpbGRyZW4gYXJlIGFkZGVk
L3JlbW92ZWQKKyAgICAgICAgdG8gdGhhdCBub2RlLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9BcHBsaWNhdGlv
bkNhY2hlSXRlbXNWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2Fj
aGVJdGVtc1ZpZXcucHJvdG90eXBlLl9jcmVhdGVEYXRhR3JpZCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQXBwbGljYXRpb25DYWNoZUl0ZW1zVmlldy5wcm90b3R5cGUuX3BvcHVsYXRlRGF0YUdy
aWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ1NTU2VsZWN0b3JQcm9maWxlVmll
dy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVWaWV3KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVWaWV3LnByb3RvdHlwZS5yZWJ1
aWxkR3JpZEl0ZW1zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVW
aWV3LnByb3RvdHlwZS5yZWZyZXNoRGF0YSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9Db29raWVJdGVtc1ZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2ltcGxlQ29va2ll
c1RhYmxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TaW1wbGVDb29raWVzVGFibGUucHJvdG90
eXBlLnNldENvb2tpZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ29va2llc1Rh
YmxlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvb2tpZXNUYWJsZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuQ29va2llc1RhYmxlLnByb3RvdHlwZS5fcmVidWlsZFRhYmxlKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2VJdGVtc1ZpZXcuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUl0ZW1zVmlldy5wcm90b3R5cGUuX2RhdGFHcmlkRm9y
RE9NU3RvcmFnZUVudHJpZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRGF0YUdy
aWQuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkRhdGFHcmlkLmNyZWF0ZVNvcnRhYmxlRGF0YUdyaWQuc29ydERhdGFHcmlkKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5jcmVhdGVTb3J0YWJsZURhdGFHcmlkKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUuc2V0Um9vdE5vZGUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5yb290Tm9kZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLmF1dG9TaXplQ29sdW1ucyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLl9lbnVtZXJhdGVDaGlsZHJlbik6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLl9rZXlEb3duKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUuX2NvbnRleHRNZW51SW5EYXRh
VGFibGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUuZ2V0
IHJldmVhbGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBl
LmdldCBkZXB0aCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlw
ZS5hcHBlbmRDaGlsZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3Rv
dHlwZS5pbnNlcnRDaGlsZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnBy
b3RvdHlwZS5yZW1vdmVDaGlsZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2Rl
LnByb3RvdHlwZS5yZW1vdmVDaGlsZHJlbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdy
aWROb2RlLnByb3RvdHlwZS5jb2xsYXBzZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdy
aWROb2RlLnByb3RvdHlwZS5leHBhbmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlk
Tm9kZS5wcm90b3R5cGUucmV2ZWFsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZE5v
ZGUucHJvdG90eXBlLnJldmVhbEFuZFNlbGVjdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0
YUdyaWROb2RlLnByb3RvdHlwZS50cmF2ZXJzZU5leHROb2RlKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlLnRyYXZlcnNlUHJldmlvdXNOb2RlKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdERhdGFHcmlkcy5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RTb3J0YWJsZURhdGFHcmlkKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RTb3J0YWJsZURhdGFHcmlkLnByb3RvdHlwZS5kaXNw
b3NlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RTb3J0YWJsZURhdGFHcmlk
LnByb3RvdHlwZS5jaGFuZ2VOYW1lRmlsdGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RTb3J0YWJsZURhdGFHcmlkLnByb3RvdHlwZS51cGRhdGVWaXNpYmxlTm9kZXMpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFNvcnRhYmxlRGF0YUdyaWQucHJvdG90
eXBlLl9wZXJmb3JtU29ydGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
Q29udGFpbm1lbnREYXRhR3JpZC5wcm90b3R5cGUuX2RlZmF1bHRQb3B1bGF0ZUNvdW50LjEwMC5l
eHBhbmRSb3V0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29udGFpbm1l
bnREYXRhR3JpZC5wcm90b3R5cGUuc2V0RGF0YVNvdXJjZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90Q29udGFpbm1lbnREYXRhR3JpZC5wcm90b3R5cGUuc29ydGluZ0NoYW5n
ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFJldGFpbm1lbnREYXRhR3Jp
ZC5wcm90b3R5cGUucmVzZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdENv
bnN0cnVjdG9yc0RhdGFHcmlkLnByb3RvdHlwZS5wb3B1bGF0ZUNoaWxkcmVuKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REaWZmRGF0YUdyaWQucHJvdG90eXBlLnNldEJhc2VE
YXRhU291cmNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REaWZmRGF0YUdy
aWQucHJvdG90eXBlLnBvcHVsYXRlQ2hpbGRyZW4uYmFzZUFnZ3JlZ2F0ZXNSZWNlaXZlZC5hZ2dy
ZWdhdGVzUmVjZWl2ZWQuYWRkTm9kZUlmTm9uWmVyb0RpZmYpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdERpZmZEYXRhR3JpZC5wcm90b3R5cGUucG9wdWxhdGVDaGlsZHJlbi5i
YXNlQWdncmVnYXRlc1JlY2VpdmVkLmFnZ3JlZ2F0ZXNSZWNlaXZlZCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90RGlmZkRhdGFHcmlkLnByb3RvdHlwZS5wb3B1bGF0ZUNoaWxk
cmVuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REb21pbmF0b3JzRGF0YUdy
aWQucHJvdG90eXBlLl9kZWZhdWx0UG9wdWxhdGVDb3VudC4yNS5zZXREYXRhU291cmNlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REb21pbmF0b3JzRGF0YUdyaWQucHJvdG90
eXBlLnNvcnRpbmdDaGFuZ2VkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBT
bmFwc2hvdEdyaWROb2Rlcy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RH
ZW5lcmljT2JqZWN0Tm9kZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25h
cHNob3RWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZpZXcucHJv
dG90eXBlLnBlcmZvcm1TZWFyY2gpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dFZpZXcucHJvdG90eXBlLnJlZnJlc2hWaXNpYmxlRGF0YSk6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9JbmRleGVkREJWaWV3cy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JREJE
YXRhVmlldy5wcm90b3R5cGUuX2NyZWF0ZURhdGFHcmlkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5JREJEYXRhVmlldy5wcm90b3R5cGUuX3VwZGF0ZURhdGEuY2FsbGJhY2spOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLklEQkRhdGFWaWV3LnByb3RvdHlwZS5fdXBkYXRlRGF0YSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuSURCRGF0YVZpZXcucHJvdG90eXBlLmNsZWFyKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5OZXR3b3JrTG9nVmlldy5wcm90b3R5cGUuX2NyZWF0ZVRhYmxlKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5OZXR3b3JrTG9nVmlldy5wcm90b3R5cGUucmVmcmVzaCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlLl9yZXNldCk6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlRGF0YUdyaWRUcmVlLmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlByb2ZpbGVEYXRhR3JpZE5vZGUucHJvdG90eXBlLmluc2VydENoaWxkKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdyaWROb2RlLnByb3RvdHlwZS5yZW1vdmVDaGls
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUu
cmVtb3ZlQ2hpbGRyZW4pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZVZp
ZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVZpZXcucHJvdG90eXBlLnJl
ZnJlc2gpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvdHJlZW91dGxpbmUuanM6CisK
IDIwMTItMDQtMTcgIFJhY2hlbCBCbHVtICA8Z3JvYnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFNraWEgT09NIGVycm9yIHdoZW4gdXBzY2FsaW5nIHNtYWxsIHN1YnNldHMgb2YgaW1hZ2VzIGJ5
IGxhcmdlIHF1YW50aXRpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvQXBwbGljYXRpb25DYWNoZUl0ZW1zVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvQXBwbGljYXRpb25DYWNoZUl0ZW1zVmlldy5qcwppbmRleCAyMjMx
MTUxMjkwMzZiNzFjNjVkYjcyYjNjOTJhM2YwOWU1NDgyM2FiLi5iNTk5NTU4ZjIwYTg1YTkzMDFj
ZTkwYTEyN2NjNjRkOGNhZGJmMmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0FwcGxpY2F0aW9uQ2FjaGVJdGVtc1ZpZXcuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9BcHBsaWNhdGlvbkNhY2hlSXRlbXNWaWV3LmpzCkBA
IC0yMDUsNyArMjA1LDcgQEAgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVJdGVtc1ZpZXcu
cHJvdG90eXBlID0gewogICAgICAgICBjb2x1bW5zWzJdLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJTaXplIik7CiAgICAgICAgIGNvbHVtbnNbMl0uYWxpZ25lZCA9ICJyaWdodCI7CiAg
ICAgICAgIGNvbHVtbnNbMl0uc29ydGFibGUgPSB0cnVlOwotICAgICAgICB0aGlzLl9kYXRhR3Jp
ZCA9IG5ldyBXZWJJbnNwZWN0b3IuRGF0YUdyaWQoY29sdW1ucyk7CisgICAgICAgIHRoaXMuX2Rh
dGFHcmlkID0gbmV3IFdlYkluc3BlY3Rvci5EYXRhR3JpZChjb2x1bW5zLCBuZXcgV2ViSW5zcGVj
dG9yLkRhdGFHcmlkTm9kZSgpKTsKICAgICAgICAgdGhpcy5fZGF0YUdyaWQuc2hvdyh0aGlzLmVs
ZW1lbnQpOwogICAgICAgICB0aGlzLl9kYXRhR3JpZC5hZGRFdmVudExpc3RlbmVyKCJzb3J0aW5n
IGNoYW5nZWQiLCB0aGlzLl9wb3B1bGF0ZURhdGFHcmlkLCB0aGlzKTsKICAgICB9LApAQCAtMjMz
LDcgKzIzMyw3IEBAIFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlSXRlbXNWaWV3LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX3Jlc291cmNlcy5zb3J0KGNvbXBh
cmF0b3IpOwotICAgICAgICB0aGlzLl9kYXRhR3JpZC5yZW1vdmVDaGlsZHJlbigpOworICAgICAg
ICB0aGlzLl9kYXRhR3JpZC5yb290Tm9kZSgpLnJlbW92ZUNoaWxkcmVuKCk7CiAKICAgICAgICAg
dmFyIG5vZGVUb1NlbGVjdDsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9yZXNv
dXJjZXMubGVuZ3RoOyArK2kpIHsKQEAgLTI0NSwxNSArMjQ1LDE1IEBAIFdlYkluc3BlY3Rvci5B
cHBsaWNhdGlvbkNhY2hlSXRlbXNWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHZhciBu
b2RlID0gbmV3IFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUoZGF0YSk7CiAgICAgICAgICAgICBu
b2RlLnJlc291cmNlID0gcmVzb3VyY2U7CiAgICAgICAgICAgICBub2RlLnNlbGVjdGFibGUgPSB0
cnVlOwotICAgICAgICAgICAgdGhpcy5fZGF0YUdyaWQuYXBwZW5kQ2hpbGQobm9kZSk7CisgICAg
ICAgICAgICB0aGlzLl9kYXRhR3JpZC5yb290Tm9kZSgpLmFwcGVuZENoaWxkKG5vZGUpOwogICAg
ICAgICAgICAgaWYgKHJlc291cmNlID09PSBzZWxlY3RlZFJlc291cmNlKSB7CiAgICAgICAgICAg
ICAgICAgbm9kZVRvU2VsZWN0ID0gbm9kZTsKICAgICAgICAgICAgICAgICBub2RlVG9TZWxlY3Qu
c2VsZWN0ZWQgPSB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYg
KCFub2RlVG9TZWxlY3QgJiYgdGhpcy5fZGF0YUdyaWQuY2hpbGRyZW4ubGVuZ3RoKQotICAgICAg
ICAgICAgdGhpcy5fZGF0YUdyaWQuY2hpbGRyZW5bMF0uc2VsZWN0ZWQgPSB0cnVlOworICAgICAg
ICBpZiAoIW5vZGVUb1NlbGVjdCAmJiB0aGlzLl9kYXRhR3JpZC5yb290Tm9kZSgpLmNoaWxkcmVu
Lmxlbmd0aCkKKyAgICAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnJvb3ROb2RlKCkuY2hpbGRyZW5b
MF0uc2VsZWN0ZWQgPSB0cnVlOwogICAgIH0sCiAKICAgICBfZGVsZXRlQnV0dG9uQ2xpY2tlZDog
ZnVuY3Rpb24oZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0NTU1NlbGVjdG9yUHJvZmlsZVZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0NTU1NlbGVjdG9yUHJvZmlsZVZpZXcuanMKaW5kZXggOTE5NGVmMjgwZDE3
YzBlN2FhNTg4YmZiOWMwNWM1NjY0ZTIzOTM3ZS4uMWQwNzk1ZWY2ODE2YmQyN2FkMTQ5OWU0MDkw
ZTczOWMzMWM2ZTM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9DU1NTZWxlY3RvclByb2ZpbGVWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5qcwpAQCAtOTYsNyArOTYsNyBA
QCBXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVmlldyA9IGZ1bmN0aW9uKHByb2ZpbGUp
CiAgICAgICAgICAgICAgICAgICAgICJ0aW1lIjogeyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJUb3RhbCIpLCB3aWR0aDogIjcycHgiLCBzb3J0OiAiZGVzY2VuZGluZyIsIHNvcnRhYmxl
OiB0cnVlIH0sCiAgICAgICAgICAgICAgICAgICAgICJtYXRjaGVzIjogeyB0aXRsZTogV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJNYXRjaGVzIiksIHdpZHRoOiAiNzJweCIsIHNvcnRhYmxlOiB0cnVl
IH0gfTsKIAotICAgIHRoaXMuZGF0YUdyaWQgPSBuZXcgV2ViSW5zcGVjdG9yLkRhdGFHcmlkKGNv
bHVtbnMpOworICAgIHRoaXMuZGF0YUdyaWQgPSBuZXcgV2ViSW5zcGVjdG9yLkRhdGFHcmlkKGNv
bHVtbnMsIG5ldyBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlKCkpOwogICAgIHRoaXMuZGF0YUdy
aWQuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJzZWxlY3Rvci1wcm9maWxlLXZpZXciKTsKICAgICB0
aGlzLmRhdGFHcmlkLmFkZEV2ZW50TGlzdGVuZXIoInNvcnRpbmcgY2hhbmdlZCIsIHRoaXMuX3Nv
cnRQcm9maWxlLCB0aGlzKTsKICAgICB0aGlzLmRhdGFHcmlkLmVsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fbW91c2VEb3duSW5EYXRhR3JpZC5iaW5kKHRoaXMpLCB0
cnVlKTsKQEAgLTE0NiwxOCArMTQ2LDE4IEBAIFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2Zp
bGVWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgIHJlYnVpbGRHcmlkSXRlbXM6IGZ1bmN0aW9uKCkK
ICAgICB7Ci0gICAgICAgIHRoaXMuZGF0YUdyaWQucmVtb3ZlQ2hpbGRyZW4oKTsKKyAgICAgICAg
dGhpcy5kYXRhR3JpZC5yb290Tm9kZSgpLnJlbW92ZUNoaWxkcmVuKCk7CiAKICAgICAgICAgdmFy
IGNoaWxkcmVuID0gdGhpcy5wcm9maWxlLmNoaWxkcmVuOwogICAgICAgICB2YXIgY291bnQgPSBj
aGlsZHJlbi5sZW5ndGg7CiAKICAgICAgICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IGNv
dW50OyArK2luZGV4KQotICAgICAgICAgICAgdGhpcy5kYXRhR3JpZC5hcHBlbmRDaGlsZChjaGls
ZHJlbltpbmRleF0pOworICAgICAgICAgICAgdGhpcy5kYXRhR3JpZC5yb290Tm9kZSgpLmFwcGVu
ZENoaWxkKGNoaWxkcmVuW2luZGV4XSk7CiAgICAgfSwKIAogICAgIHJlZnJlc2hEYXRhOiBmdW5j
dGlvbigpCiAgICAgewotICAgICAgICB2YXIgY2hpbGQgPSB0aGlzLmRhdGFHcmlkLmNoaWxkcmVu
WzBdOworICAgICAgICB2YXIgY2hpbGQgPSB0aGlzLmRhdGFHcmlkLnJvb3ROb2RlKCkuY2hpbGRy
ZW5bMF07CiAgICAgICAgIHdoaWxlIChjaGlsZCkgewogICAgICAgICAgICAgY2hpbGQucmVmcmVz
aCgpOwogICAgICAgICAgICAgY2hpbGQgPSBjaGlsZC50cmF2ZXJzZU5leHROb2RlKGZhbHNlLCBu
dWxsLCB0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvQ29va2llSXRlbXNWaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9Db29raWVJdGVtc1ZpZXcuanMKaW5kZXggZTJkNGIxOWRiYTU5NDFkMGRiYWRlMTgwYmUyZjUz
ZDIxYWY1OGVjNS4uYmNjZTk4ZGQ0ZTQyNmQyNTkzYTMwNWIxYThjOGUzYzJkMjkxZDNhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db29raWVJdGVtc1Zp
ZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db29raWVJdGVt
c1ZpZXcuanMKQEAgLTE3NCw3ICsxNzQsNyBAQCBXZWJJbnNwZWN0b3IuU2ltcGxlQ29va2llc1Rh
YmxlID0gZnVuY3Rpb24oKQogICAgIGNvbHVtbnNbMF0udGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIk5hbWUiKTsKICAgICBjb2x1bW5zWzFdLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJWYWx1ZSIpOwogCi0gICAgdGhpcy5fZGF0YUdyaWQgPSBuZXcgV2ViSW5zcGVjdG9yLkRh
dGFHcmlkKGNvbHVtbnMpOworICAgIHRoaXMuX2RhdGFHcmlkID0gbmV3IFdlYkluc3BlY3Rvci5E
YXRhR3JpZChjb2x1bW5zLCBuZXcgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZSgpKTsKICAgICB0
aGlzLl9kYXRhR3JpZC5hdXRvU2l6ZUNvbHVtbnMoMjAsIDgwKTsKICAgICB0aGlzLl9kYXRhR3Jp
ZC5zaG93KHRoaXMuZWxlbWVudCk7CiB9CkBAIC0xODIsNyArMTgyLDcgQEAgV2ViSW5zcGVjdG9y
LlNpbXBsZUNvb2tpZXNUYWJsZSA9IGZ1bmN0aW9uKCkKIFdlYkluc3BlY3Rvci5TaW1wbGVDb29r
aWVzVGFibGUucHJvdG90eXBlID0gewogICAgIHNldENvb2tpZXM6IGZ1bmN0aW9uKGNvb2tpZXMp
CiAgICAgewotICAgICAgICB0aGlzLl9kYXRhR3JpZC5yZW1vdmVDaGlsZHJlbigpOworICAgICAg
ICB0aGlzLl9kYXRhR3JpZC5yb290Tm9kZSgpLnJlbW92ZUNoaWxkcmVuKCk7CiAgICAgICAgIHZh
ciBhZGRlZENvb2tpZXMgPSB7fTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb29raWVz
Lmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICBpZiAoYWRkZWRDb29raWVzW2Nvb2tpZXNbaV0u
bmFtZV0pCkBAIC0xOTQsOSArMTk0LDkgQEAgV2ViSW5zcGVjdG9yLlNpbXBsZUNvb2tpZXNUYWJs
ZS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgICAgIHZhciBub2RlID0gbmV3IFdlYkluc3BlY3Rv
ci5EYXRhR3JpZE5vZGUoZGF0YSwgZmFsc2UpOwogICAgICAgICAgICAgbm9kZS5zZWxlY3RhYmxl
ID0gdHJ1ZTsKLSAgICAgICAgICAgIHRoaXMuX2RhdGFHcmlkLmFwcGVuZENoaWxkKG5vZGUpOwor
ICAgICAgICAgICAgdGhpcy5fZGF0YUdyaWQucm9vdE5vZGUoKS5hcHBlbmRDaGlsZChub2RlKTsK
ICAgICAgICAgfQotICAgICAgICB0aGlzLl9kYXRhR3JpZC5jaGlsZHJlblswXS5zZWxlY3RlZCA9
IHRydWU7CisgICAgICAgIHRoaXMuX2RhdGFHcmlkLnJvb3ROb2RlKCkuY2hpbGRyZW5bMF0uc2Vs
ZWN0ZWQgPSB0cnVlOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9Db29raWVzVGFibGUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0Nvb2tpZXNUYWJsZS5qcwppbmRleCA2MWY4MDRlMmNjOWU3NGIwYjc0NmFm
MjhkNGJlN2Y5MjYyYmIwYjg5Li40N2FiMzFjZDI2OWMyYTRhNzBiOGRiNzkwOTk4ODAyMWUwMmE2
MWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nvb2tp
ZXNUYWJsZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Nvb2tp
ZXNUYWJsZS5qcwpAQCAtNzEsNyArNzEsNyBAQCBXZWJJbnNwZWN0b3IuQ29va2llc1RhYmxlID0g
ZnVuY3Rpb24oY29va2llRG9tYWluLCBleHBhbmRhYmxlLCBkZWxldGVDYWxsYmFjaywgcgogICAg
IGNvbHVtbnNbN10uc29ydGFibGUgPSB0cnVlOwogICAgIGNvbHVtbnNbN10ud2lkdGggPSAiNyUi
OwogCi0gICAgdGhpcy5fZGF0YUdyaWQgPSBuZXcgV2ViSW5zcGVjdG9yLkRhdGFHcmlkKGNvbHVt
bnMsIHVuZGVmaW5lZCwgZGVsZXRlQ2FsbGJhY2sgPyB0aGlzLl9vbkRlbGV0ZUZyb21HcmlkLmJp
bmQodGhpcywgZGVsZXRlQ2FsbGJhY2spIDogdW5kZWZpbmVkKTsKKyAgICB0aGlzLl9kYXRhR3Jp
ZCA9IG5ldyBXZWJJbnNwZWN0b3IuRGF0YUdyaWQoY29sdW1ucywgbmV3IFdlYkluc3BlY3Rvci5E
YXRhR3JpZE5vZGUoKSwgdW5kZWZpbmVkLCBkZWxldGVDYWxsYmFjayA/IHRoaXMuX29uRGVsZXRl
RnJvbUdyaWQuYmluZCh0aGlzLCBkZWxldGVDYWxsYmFjaykgOiB1bmRlZmluZWQpOwogICAgIHRo
aXMuX2RhdGFHcmlkLmFkZEV2ZW50TGlzdGVuZXIoInNvcnRpbmcgY2hhbmdlZCIsIHRoaXMuX3Jl
YnVpbGRUYWJsZSwgdGhpcyk7CiAgICAgdGhpcy5fZGF0YUdyaWQucmVmcmVzaENhbGxiYWNrID0g
cmVmcmVzaENhbGxiYWNrOwogCkBAIC0xMDYsMTQgKzEwNiwxNCBAQCBXZWJJbnNwZWN0b3IuQ29v
a2llc1RhYmxlLnByb3RvdHlwZSA9IHsKIAogICAgIF9yZWJ1aWxkVGFibGU6IGZ1bmN0aW9uKCkK
ICAgICB7Ci0gICAgICAgIHRoaXMuX2RhdGFHcmlkLnJlbW92ZUNoaWxkcmVuKCk7CisgICAgICAg
IHRoaXMuX2RhdGFHcmlkLnJvb3ROb2RlKCkucmVtb3ZlQ2hpbGRyZW4oKTsKICAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9kYXRhLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICB2
YXIgaXRlbSA9IHRoaXMuX2RhdGFbaV07CiAgICAgICAgICAgICBpZiAoaXRlbS5mb2xkZXJOYW1l
KSB7CiAgICAgICAgICAgICAgICAgdmFyIGdyb3VwRGF0YSA9IFsgaXRlbS5mb2xkZXJOYW1lLCAi
IiwgIiIsICIiLCAiIiwgdGhpcy5fdG90YWxTaXplKGl0ZW0uY29va2llcyksICIiLCAiIiBdOwog
ICAgICAgICAgICAgICAgIHZhciBncm91cE5vZGUgPSBuZXcgV2ViSW5zcGVjdG9yLkRhdGFHcmlk
Tm9kZShncm91cERhdGEpOwogICAgICAgICAgICAgICAgIGdyb3VwTm9kZS5zZWxlY3RhYmxlID0g
dHJ1ZTsKLSAgICAgICAgICAgICAgICB0aGlzLl9kYXRhR3JpZC5hcHBlbmRDaGlsZChncm91cE5v
ZGUpOworICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnJvb3ROb2RlKCkuYXBwZW5kQ2hp
bGQoZ3JvdXBOb2RlKTsKICAgICAgICAgICAgICAgICBncm91cE5vZGUuZWxlbWVudC5hZGRTdHls
ZUNsYXNzKCJyb3ctZ3JvdXAiKTsKICAgICAgICAgICAgICAgICB0aGlzLl9wb3B1bGF0ZU5vZGUo
Z3JvdXBOb2RlLCBpdGVtLmNvb2tpZXMpOwogICAgICAgICAgICAgICAgIGdyb3VwTm9kZS5leHBh
bmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9N
U3RvcmFnZUl0ZW1zVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
RE9NU3RvcmFnZUl0ZW1zVmlldy5qcwppbmRleCBmYTViMDU4MWUzYjI5Yzk4MjZmYTVhMWFhOTc3
YTQ4YmFhZTlkNjQ3Li42MWIwMzM1OGY2YTc2MGIxYzYzZDU2ODE3ZmE0NmYzYWI4ZmNhMTE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2VJ
dGVtc1ZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01T
dG9yYWdlSXRlbXNWaWV3LmpzCkBAIC0xMDIsMTAgKzEwMiwxMCBAQCBXZWJJbnNwZWN0b3IuRE9N
U3RvcmFnZUl0ZW1zVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBrZXlzLnB1c2goa2V5
KTsKICAgICAgICAgfQogCi0gICAgICAgIHZhciBkYXRhR3JpZCA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGF0YUdyaWQoY29sdW1ucywgdGhpcy5fZWRpdGluZ0NhbGxiYWNrLmJpbmQodGhpcyksIHRoaXMu
X2RlbGV0ZUNhbGxiYWNrLmJpbmQodGhpcykpOworICAgICAgICB2YXIgZGF0YUdyaWQgPSBuZXcg
V2ViSW5zcGVjdG9yLkRhdGFHcmlkKGNvbHVtbnMsIG5ldyBXZWJJbnNwZWN0b3IuRGF0YUdyaWRO
b2RlKCksIHRoaXMuX2VkaXRpbmdDYWxsYmFjay5iaW5kKHRoaXMpLCB0aGlzLl9kZWxldGVDYWxs
YmFjay5iaW5kKHRoaXMpKTsKICAgICAgICAgbGVuZ3RoID0gbm9kZXMubGVuZ3RoOwogICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQotICAgICAgICAgICAgZGF0YUdyaWQu
YXBwZW5kQ2hpbGQobm9kZXNbaV0pOworICAgICAgICAgICAgZGF0YUdyaWQucm9vdE5vZGUoKS5h
cHBlbmRDaGlsZChub2Rlc1tpXSk7CiAgICAgICAgIGRhdGFHcmlkLmFkZENyZWF0aW9uTm9kZShm
YWxzZSk7CiAgICAgICAgIGlmIChsZW5ndGggPiAwKQogICAgICAgICAgICAgbm9kZXNbMF0uc2Vs
ZWN0ZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9EYXRhR3JpZC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGF0
YUdyaWQuanMKaW5kZXggOTA1MmVkNTg4MTg1M2U5MzdjODhmZTNmNTcyYThiYzUzNDQ3OTZjMy4u
ZWQzZTg5N2ViMGQxZTZiMDlmZjQzYTVkOGE1MDIwNDg3NjUxYjdlZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhR3JpZC5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFHcmlkLmpzCkBAIC0yNiwxMCArMjYsMTEg
QEAKIC8qKgogICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlZpZXd9
CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGV9IHJvb3ROb2RlCiAgKiBAcGFy
YW0ge2Z1bmN0aW9uKFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUsIG51bWJlciwgc3RyaW5nLCBz
dHJpbmcpPX0gZWRpdENhbGxiYWNrCiAgKiBAcGFyYW0ge2Z1bmN0aW9uKFdlYkluc3BlY3Rvci5E
YXRhR3JpZE5vZGUpPX0gZGVsZXRlQ2FsbGJhY2sKICAqLwotV2ViSW5zcGVjdG9yLkRhdGFHcmlk
ID0gZnVuY3Rpb24oY29sdW1ucywgZWRpdENhbGxiYWNrLCBkZWxldGVDYWxsYmFjaykKK1dlYklu
c3BlY3Rvci5EYXRhR3JpZCA9IGZ1bmN0aW9uKGNvbHVtbnMsIHJvb3ROb2RlLCBlZGl0Q2FsbGJh
Y2ssIGRlbGV0ZUNhbGxiYWNrKQogewogICAgIFdlYkluc3BlY3Rvci5WaWV3LmNhbGwodGhpcyk7
CiAgICAgdGhpcy5yZWdpc3RlclJlcXVpcmVkQ1NTKCJkYXRhR3JpZC5jc3MiKTsKQEAgLTE0OCwx
NSArMTQ5LDkgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkID0gZnVuY3Rpb24oY29sdW1ucywgZWRp
dENhbGxiYWNrLCBkZWxldGVDYWxsYmFjaykKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMu
X2NvbHVtbnNBcnJheS5sZW5ndGg7ICsraSkKICAgICAgICAgdGhpcy5fY29sdW1uc0FycmF5W2ld
LmJvZHlFbGVtZW50ID0gdGhpcy5fZGF0YVRhYmxlQ29sdW1uR3JvdXAuY2hpbGRyZW5baV07CiAK
LSAgICB0aGlzLmNoaWxkcmVuID0gW107CiAgICAgdGhpcy5zZWxlY3RlZE5vZGUgPSBudWxsOwog
ICAgIHRoaXMuZXhwYW5kTm9kZXNXaGVuQXJyb3dpbmcgPSBmYWxzZTsKLSAgICB0aGlzLnJvb3Qg
PSB0cnVlOwotICAgIHRoaXMuaGFzQ2hpbGRyZW4gPSBmYWxzZTsKLSAgICB0aGlzLmV4cGFuZGVk
ID0gdHJ1ZTsKLSAgICB0aGlzLnJldmVhbGVkID0gdHJ1ZTsKLSAgICB0aGlzLnNlbGVjdGVkID0g
ZmFsc2U7Ci0gICAgdGhpcy5kYXRhR3JpZCA9IHRoaXM7CisgICAgdGhpcy5zZXRSb290Tm9kZShy
b290Tm9kZSk7CiAgICAgdGhpcy5pbmRlbnRXaWR0aCA9IDE1OwogICAgIHRoaXMucmVzaXplcnMg
PSBbXTsKICAgICB0aGlzLl9jb2x1bW5XaWR0aHNJbml0aWFsaXplZCA9IGZhbHNlOwpAQCAtMTk5
LDE2ICsxOTQsMTYgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLmNyZWF0ZVNvcnRhYmxlRGF0YUdy
aWQgPSBmdW5jdGlvbihjb2x1bW5OYW1lcywgdmFsdWVzKQogICAgICAgICBub2Rlcy5wdXNoKG5v
ZGUpOwogICAgIH0KIAotICAgIHZhciBkYXRhR3JpZCA9IG5ldyBXZWJJbnNwZWN0b3IuRGF0YUdy
aWQoY29sdW1ucyk7CisgICAgdmFyIGRhdGFHcmlkID0gbmV3IFdlYkluc3BlY3Rvci5EYXRhR3Jp
ZChjb2x1bW5zLCBuZXcgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZSgpKTsKICAgICB2YXIgbGVu
Z3RoID0gbm9kZXMubGVuZ3RoOwogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kp
Ci0gICAgICAgIGRhdGFHcmlkLmFwcGVuZENoaWxkKG5vZGVzW2ldKTsKKyAgICAgICAgZGF0YUdy
aWQucm9vdE5vZGUoKS5hcHBlbmRDaGlsZChub2Rlc1tpXSk7CiAKICAgICBkYXRhR3JpZC5hZGRF
dmVudExpc3RlbmVyKCJzb3J0aW5nIGNoYW5nZWQiLCBzb3J0RGF0YUdyaWQsIHRoaXMpOwogCiAg
ICAgZnVuY3Rpb24gc29ydERhdGFHcmlkKCkKICAgICB7Ci0gICAgICAgIHZhciBub2RlcyA9IGRh
dGFHcmlkLmNoaWxkcmVuLnNsaWNlKCk7CisgICAgICAgIHZhciBub2RlcyA9IGRhdGFHcmlkLl9y
b290Tm9kZS5jaGlsZHJlbi5zbGljZSgpOwogICAgICAgICB2YXIgc29ydENvbHVtbklkZW50aWZp
ZXIgPSBkYXRhR3JpZC5zb3J0Q29sdW1uSWRlbnRpZmllcjsKICAgICAgICAgdmFyIHNvcnREaXJl
Y3Rpb24gPSBkYXRhR3JpZC5zb3J0T3JkZXIgPT09ICJhc2NlbmRpbmciID8gMSA6IC0xOwogICAg
ICAgICB2YXIgY29sdW1uSXNOdW1lcmljID0gdHJ1ZTsKQEAgLTIzNiwxNCArMjMxLDMzIEBAIFdl
Ykluc3BlY3Rvci5EYXRhR3JpZC5jcmVhdGVTb3J0YWJsZURhdGFHcmlkID0gZnVuY3Rpb24oY29s
dW1uTmFtZXMsIHZhbHVlcykKICAgICAgICAgfQogCiAgICAgICAgIG5vZGVzLnNvcnQoY29tcGFy
YXRvcik7Ci0gICAgICAgIGRhdGFHcmlkLnJlbW92ZUNoaWxkcmVuKCk7CisgICAgICAgIGRhdGFH
cmlkLnJvb3ROb2RlKCkucmVtb3ZlQ2hpbGRyZW4oKTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykKLSAgICAgICAgICAgIGRhdGFHcmlkLmFwcGVuZENoaWxk
KG5vZGVzW2ldKTsKKyAgICAgICAgICAgIGRhdGFHcmlkLl9yb290Tm9kZS5hcHBlbmRDaGlsZChu
b2Rlc1tpXSk7CiAgICAgfQogICAgIHJldHVybiBkYXRhR3JpZDsKIH0KIAogV2ViSW5zcGVjdG9y
LkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKKyAgICBzZXRSb290Tm9kZTogZnVuY3Rpb24ocm9vdE5v
ZGUpCisgICAgeworICAgICAgICBpZiAodGhpcy5fcm9vdE5vZGUpIHsKKyAgICAgICAgICAgIHRo
aXMuX3Jvb3ROb2RlLmRhdGFHcmlkID0gbnVsbDsKKyAgICAgICAgICAgIHRoaXMuX3Jvb3ROb2Rl
Ll9pc1Jvb3QgPSBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLl9yb290Tm9kZSA9IHJv
b3ROb2RlOworICAgICAgICByb290Tm9kZS5faXNSb290ID0gdHJ1ZTsKKyAgICAgICAgcm9vdE5v
ZGUuaGFzQ2hpbGRyZW4gPSBmYWxzZTsKKyAgICAgICAgcm9vdE5vZGUuX2V4cGFuZGVkID0gdHJ1
ZTsKKyAgICAgICAgcm9vdE5vZGUuX3JldmVhbGVkID0gdHJ1ZTsKKyAgICAgICAgcm9vdE5vZGUu
ZGF0YUdyaWQgPSB0aGlzOworICAgIH0sCisKKyAgICByb290Tm9kZTogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Jvb3ROb2RlOworICAgIH0sCisKICAgICBnZXQgcmVm
cmVzaENhbGxiYWNrKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yZWZyZXNoQ2FsbGJh
Y2s7CkBAIC00MzMsNyArNDQ3LDggQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9
IHsKICAgICAgICAgZm9yICh2YXIgY29sdW1uSWRlbnRpZmllciBpbiBjb2x1bW5zKQogICAgICAg
ICAgICAgd2lkdGhzW2NvbHVtbklkZW50aWZpZXJdID0gKGNvbHVtbnNbY29sdW1uSWRlbnRpZmll
cl0udGl0bGUgfHwgIiIpLmxlbmd0aDsKIAotICAgICAgICB2YXIgY2hpbGRyZW4gPSBtYXhEZXNj
ZW50TGV2ZWwgPyB0aGlzLl9lbnVtZXJhdGVDaGlsZHJlbih0aGlzLCBbXSwgbWF4RGVzY2VudExl
dmVsICsgMSkgOiB0aGlzLmNoaWxkcmVuOworICAgICAgICBtYXhEZXNjZW50TGV2ZWwgPSBtYXhE
ZXNjZW50TGV2ZWwgfHwgMDsKKyAgICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5fZW51bWVyYXRl
Q2hpbGRyZW4odGhpcy5fcm9vdE5vZGUsIFtdLCBtYXhEZXNjZW50TGV2ZWwgKyAxKTsKICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7ICsraSkgewogICAgICAgICAg
ICAgdmFyIG5vZGUgPSBjaGlsZHJlbltpXTsKICAgICAgICAgICAgIGZvciAodmFyIGNvbHVtbklk
ZW50aWZpZXIgaW4gY29sdW1ucykgewpAQCAtNDkwLDcgKzUwNSw3IEBAIFdlYkluc3BlY3Rvci5E
YXRhR3JpZC5wcm90b3R5cGUgPSB7CiAKICAgICBfZW51bWVyYXRlQ2hpbGRyZW46IGZ1bmN0aW9u
KHJvb3ROb2RlLCByZXN1bHQsIG1heExldmVsKQogICAgIHsKLSAgICAgICAgaWYgKCFyb290Tm9k
ZS5yb290KQorICAgICAgICBpZiAoIXJvb3ROb2RlLl9pc1Jvb3QpCiAgICAgICAgICAgICByZXN1
bHQucHVzaChyb290Tm9kZSk7CiAgICAgICAgIGlmICghbWF4TGV2ZWwpCiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC02NzUsMTIyICs2OTAsNyBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90
eXBlID0gewogICAgICAgICBmb3IgKHZhciBjb2x1bW4gaW4gdGhpcy5jb2x1bW5zKQogICAgICAg
ICAgICAgZW1wdHlEYXRhW2NvbHVtbl0gPSAnJzsKICAgICAgICAgdGhpcy5jcmVhdGlvbk5vZGUg
PSBuZXcgV2ViSW5zcGVjdG9yLkNyZWF0aW9uRGF0YUdyaWROb2RlKGVtcHR5RGF0YSwgaGFzQ2hp
bGRyZW4pOwotICAgICAgICB0aGlzLmFwcGVuZENoaWxkKHRoaXMuY3JlYXRpb25Ob2RlKTsKLSAg
ICB9LAotCi0gICAgYXBwZW5kQ2hpbGQ6IGZ1bmN0aW9uKGNoaWxkKQotICAgIHsKLSAgICAgICAg
dGhpcy5pbnNlcnRDaGlsZChjaGlsZCwgdGhpcy5jaGlsZHJlbi5sZW5ndGgpOwotICAgIH0sCi0K
LSAgICAvKioKLSAgICAgKiBAdGhpcyB7V2ViSW5zcGVjdG9yLkRhdGFHcmlkfFdlYkluc3BlY3Rv
ci5EYXRhR3JpZE5vZGV9Ci0gICAgICovCi0gICAgaW5zZXJ0Q2hpbGQ6IGZ1bmN0aW9uKGNoaWxk
LCBpbmRleCkKLSAgICB7Ci0gICAgICAgIGlmICghY2hpbGQpCi0gICAgICAgICAgICB0aHJvdygi
aW5zZXJ0Q2hpbGQ6IE5vZGUgY2FuJ3QgYmUgdW5kZWZpbmVkIG9yIG51bGwuIik7Ci0gICAgICAg
IGlmIChjaGlsZC5wYXJlbnQgPT09IHRoaXMpCi0gICAgICAgICAgICB0aHJvdygiaW5zZXJ0Q2hp
bGQ6IE5vZGUgaXMgYWxyZWFkeSBhIGNoaWxkIG9mIHRoaXMgbm9kZS4iKTsKLQotICAgICAgICBp
ZiAoY2hpbGQucGFyZW50KQotICAgICAgICAgICAgY2hpbGQucGFyZW50LnJlbW92ZUNoaWxkKGNo
aWxkKTsKLQotICAgICAgICB0aGlzLmNoaWxkcmVuLnNwbGljZShpbmRleCwgMCwgY2hpbGQpOwot
ICAgICAgICB0aGlzLmhhc0NoaWxkcmVuID0gdHJ1ZTsKLQotICAgICAgICBjaGlsZC5wYXJlbnQg
PSB0aGlzOwotICAgICAgICBjaGlsZC5kYXRhR3JpZCA9IHRoaXMuZGF0YUdyaWQ7Ci0gICAgICAg
IGNoaWxkLl9yZWNhbGN1bGF0ZVNpYmxpbmdzKGluZGV4KTsKLQotICAgICAgICBkZWxldGUgY2hp
bGQuX2RlcHRoOwotICAgICAgICBkZWxldGUgY2hpbGQuX3JldmVhbGVkOwotICAgICAgICBkZWxl
dGUgY2hpbGQuX2F0dGFjaGVkOwotICAgICAgICBjaGlsZC5fc2hvdWxkUmVmcmVzaENoaWxkcmVu
ID0gdHJ1ZTsKLQotICAgICAgICB2YXIgY3VycmVudCA9IGNoaWxkLmNoaWxkcmVuWzBdOwotICAg
ICAgICB3aGlsZSAoY3VycmVudCkgewotICAgICAgICAgICAgY3VycmVudC5kYXRhR3JpZCA9IHRo
aXMuZGF0YUdyaWQ7Ci0gICAgICAgICAgICBkZWxldGUgY3VycmVudC5fZGVwdGg7Ci0gICAgICAg
ICAgICBkZWxldGUgY3VycmVudC5fcmV2ZWFsZWQ7Ci0gICAgICAgICAgICBkZWxldGUgY3VycmVu
dC5fYXR0YWNoZWQ7Ci0gICAgICAgICAgICBjdXJyZW50Ll9zaG91bGRSZWZyZXNoQ2hpbGRyZW4g
PSB0cnVlOwotICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQudHJhdmVyc2VOZXh0Tm9kZShm
YWxzZSwgY2hpbGQsIHRydWUpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHRoaXMuZXhwYW5k
ZWQpCi0gICAgICAgICAgICBjaGlsZC5fYXR0YWNoKCk7Ci0gICAgICAgIGlmICghdGhpcy5yZXZl
YWxlZCkKLSAgICAgICAgICAgIGNoaWxkLnJldmVhbGVkID0gZmFsc2U7Ci0gICAgfSwKLQotICAg
IHJlbW92ZUNoaWxkOiBmdW5jdGlvbihjaGlsZCkKLSAgICB7Ci0gICAgICAgIGlmICghY2hpbGQp
Ci0gICAgICAgICAgICB0aHJvdygicmVtb3ZlQ2hpbGQ6IE5vZGUgY2FuJ3QgYmUgdW5kZWZpbmVk
IG9yIG51bGwuIik7Ci0gICAgICAgIGlmIChjaGlsZC5wYXJlbnQgIT09IHRoaXMpCi0gICAgICAg
ICAgICB0aHJvdygicmVtb3ZlQ2hpbGQ6IE5vZGUgaXMgbm90IGEgY2hpbGQgb2YgdGhpcyBub2Rl
LiIpOwotCi0gICAgICAgIGNoaWxkLmRlc2VsZWN0KCk7Ci0gICAgICAgIGNoaWxkLl9kZXRhY2go
KTsKLQotICAgICAgICB0aGlzLmNoaWxkcmVuLnJlbW92ZShjaGlsZCwgdHJ1ZSk7Ci0KLSAgICAg
ICAgaWYgKGNoaWxkLnByZXZpb3VzU2libGluZykKLSAgICAgICAgICAgIGNoaWxkLnByZXZpb3Vz
U2libGluZy5uZXh0U2libGluZyA9IGNoaWxkLm5leHRTaWJsaW5nOwotICAgICAgICBpZiAoY2hp
bGQubmV4dFNpYmxpbmcpCi0gICAgICAgICAgICBjaGlsZC5uZXh0U2libGluZy5wcmV2aW91c1Np
YmxpbmcgPSBjaGlsZC5wcmV2aW91c1NpYmxpbmc7Ci0KLSAgICAgICAgY2hpbGQuZGF0YUdyaWQg
PSBudWxsOwotICAgICAgICBjaGlsZC5wYXJlbnQgPSBudWxsOwotICAgICAgICBjaGlsZC5uZXh0
U2libGluZyA9IG51bGw7Ci0gICAgICAgIGNoaWxkLnByZXZpb3VzU2libGluZyA9IG51bGw7Ci0K
LSAgICAgICAgaWYgKHRoaXMuY2hpbGRyZW4ubGVuZ3RoIDw9IDApCi0gICAgICAgICAgICB0aGlz
Lmhhc0NoaWxkcmVuID0gZmFsc2U7Ci0gICAgfSwKLQotICAgIHJlbW92ZUNoaWxkcmVuOiBmdW5j
dGlvbigpCi0gICAgewotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY2hpbGRyZW4u
bGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBjaGlsZCA9IHRoaXMuY2hpbGRyZW5baV07
Ci0gICAgICAgICAgICBjaGlsZC5kZXNlbGVjdCgpOwotICAgICAgICAgICAgY2hpbGQuX2RldGFj
aCgpOwotCi0gICAgICAgICAgICBjaGlsZC5kYXRhR3JpZCA9IG51bGw7Ci0gICAgICAgICAgICBj
aGlsZC5wYXJlbnQgPSBudWxsOwotICAgICAgICAgICAgY2hpbGQubmV4dFNpYmxpbmcgPSBudWxs
OwotICAgICAgICAgICAgY2hpbGQucHJldmlvdXNTaWJsaW5nID0gbnVsbDsKLSAgICAgICAgfQot
Ci0gICAgICAgIHRoaXMuY2hpbGRyZW4gPSBbXTsKLSAgICAgICAgdGhpcy5oYXNDaGlsZHJlbiA9
IGZhbHNlOwotICAgIH0sCi0KLSAgICByZW1vdmVDaGlsZHJlblJlY3Vyc2l2ZTogZnVuY3Rpb24o
KQotICAgIHsKLSAgICAgICAgdmFyIGNoaWxkcmVuVG9SZW1vdmUgPSB0aGlzLmNoaWxkcmVuOwot
Ci0gICAgICAgIHZhciBjaGlsZCA9IHRoaXMuY2hpbGRyZW5bMF07Ci0gICAgICAgIHdoaWxlIChj
aGlsZCkgewotICAgICAgICAgICAgaWYgKGNoaWxkLmNoaWxkcmVuLmxlbmd0aCkKLSAgICAgICAg
ICAgICAgICBjaGlsZHJlblRvUmVtb3ZlID0gY2hpbGRyZW5Ub1JlbW92ZS5jb25jYXQoY2hpbGQu
Y2hpbGRyZW4pOwotICAgICAgICAgICAgY2hpbGQgPSBjaGlsZC50cmF2ZXJzZU5leHROb2RlKGZh
bHNlLCB0aGlzLCB0cnVlKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgY2hpbGRyZW5Ub1JlbW92ZS5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgY2hpbGQgPSBj
aGlsZHJlblRvUmVtb3ZlW2ldOwotICAgICAgICAgICAgY2hpbGQuZGVzZWxlY3QoKTsKLSAgICAg
ICAgICAgIGNoaWxkLl9kZXRhY2goKTsKLQotICAgICAgICAgICAgY2hpbGQuY2hpbGRyZW4gPSBb
XTsKLSAgICAgICAgICAgIGNoaWxkLmRhdGFHcmlkID0gbnVsbDsKLSAgICAgICAgICAgIGNoaWxk
LnBhcmVudCA9IG51bGw7Ci0gICAgICAgICAgICBjaGlsZC5uZXh0U2libGluZyA9IG51bGw7Ci0g
ICAgICAgICAgICBjaGlsZC5wcmV2aW91c1NpYmxpbmcgPSBudWxsOwotICAgICAgICB9Ci0KLSAg
ICAgICAgdGhpcy5jaGlsZHJlbiA9IFtdOworICAgICAgICB0aGlzLnJvb3ROb2RlKCkuYXBwZW5k
Q2hpbGQodGhpcy5jcmVhdGlvbk5vZGUpOwogICAgIH0sCiAKICAgICBzb3J0Tm9kZXM6IGZ1bmN0
aW9uKGNvbXBhcmF0b3IsIHJldmVyc2VNb2RlKQpAQCAtODYwLDcgKzc2MCw3IEBAIFdlYkluc3Bl
Y3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZS5jb2xsYXBzZSgpOwogICAgICAgICAgICAg
ICAgIGhhbmRsZWQgPSB0cnVlOwotICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVk
Tm9kZS5wYXJlbnQgJiYgIXRoaXMuc2VsZWN0ZWROb2RlLnBhcmVudC5yb290KSB7CisgICAgICAg
ICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWROb2RlLnBhcmVudCAmJiAhdGhpcy5zZWxlY3Rl
ZE5vZGUucGFyZW50Ll9pc1Jvb3QpIHsKICAgICAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsK
ICAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZE5vZGUucGFyZW50LnNlbGVjdGFibGUp
IHsKICAgICAgICAgICAgICAgICAgICAgbmV4dFNlbGVjdGVkTm9kZSA9IHRoaXMuc2VsZWN0ZWRO
b2RlLnBhcmVudDsKQEAgLTkwNywyNiArODA3LDYgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIGV2ZW50LmNvbnN1bWUodHJ1ZSk7CiAgICAgfSwKIAot
ICAgIGV4cGFuZDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgLy8gVGhpcyBpcyB0aGUgcm9v
dCwgZG8gbm90aGluZy4KLSAgICB9LAotCi0gICAgY29sbGFwc2U6IGZ1bmN0aW9uKCkKLSAgICB7
Ci0gICAgICAgIC8vIFRoaXMgaXMgdGhlIHJvb3QsIGRvIG5vdGhpbmcuCi0gICAgfSwKLQotICAg
IHJldmVhbDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgLy8gVGhpcyBpcyB0aGUgcm9vdCwg
ZG8gbm90aGluZy4KLSAgICB9LAotCi0gICAgcmV2ZWFsQW5kU2VsZWN0OiBmdW5jdGlvbigpCi0g
ICAgewotICAgICAgICAvLyBUaGlzIGlzIHRoZSByb290LCBkbyBub3RoaW5nLgotICAgIH0sCi0K
ICAgICBkYXRhR3JpZE5vZGVGcm9tTm9kZTogZnVuY3Rpb24odGFyZ2V0KQogICAgIHsKICAgICAg
ICAgdmFyIHJvd0VsZW1lbnQgPSB0YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhOb2RlTmFt
ZSgidHIiKTsKQEAgLTEwMDEsMTggKzg4MSwxOCBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJv
dG90eXBlID0gewogICAgICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNv
bnRleHRNZW51KCk7CiAKICAgICAgICAgdmFyIGdyaWROb2RlID0gdGhpcy5kYXRhR3JpZE5vZGVG
cm9tTm9kZShldmVudC50YXJnZXQpOwotICAgICAgICBpZiAodGhpcy5kYXRhR3JpZC5fcmVmcmVz
aENhbGxiYWNrICYmICghZ3JpZE5vZGUgfHwgZ3JpZE5vZGUgIT09IHRoaXMuY3JlYXRpb25Ob2Rl
KSkKKyAgICAgICAgaWYgKHRoaXMuX3JlZnJlc2hDYWxsYmFjayAmJiAoIWdyaWROb2RlIHx8IGdy
aWROb2RlICE9PSB0aGlzLmNyZWF0aW9uTm9kZSkpCiAgICAgICAgICAgICBjb250ZXh0TWVudS5h
cHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVmcmVzaCIpLCB0aGlzLl9yZWZyZXNo
Q2FsbGJhY2suYmluZCh0aGlzKSk7CiAKICAgICAgICAgaWYgKGdyaWROb2RlICYmIGdyaWROb2Rl
LnNlbGVjdGFibGUgJiYgIWdyaWROb2RlLmlzRXZlbnRXaXRoaW5EaXNjbG9zdXJlVHJpYW5nbGUo
ZXZlbnQpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVXNlIHRoZSBjb2x1bW4gbmFtZXMgZm9y
IEVkaXRpbmcsIGluc3RlYWQgb2YganVzdCAiRWRpdCIuCi0gICAgICAgICAgICBpZiAodGhpcy5k
YXRhR3JpZC5fZWRpdENhbGxiYWNrKSB7CisgICAgICAgICAgICBpZiAodGhpcy5fZWRpdENhbGxi
YWNrKSB7CiAgICAgICAgICAgICAgICAgaWYgKGdyaWROb2RlID09PSB0aGlzLmNyZWF0aW9uTm9k
ZSkKICAgICAgICAgICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkFkZCBOZXciKSwgdGhpcy5fc3RhcnRFZGl0aW5nLmJpbmQodGhpcywgZXZl
bnQudGFyZ2V0KSk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBj
b250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiRWRpdCIpLCB0aGlz
Ll9zdGFydEVkaXRpbmcuYmluZCh0aGlzLCBldmVudC50YXJnZXQpKTsKICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGlmICh0aGlzLmRhdGFHcmlkLl9kZWxldGVDYWxsYmFjayAmJiBncmlkTm9k
ZSAhPT0gdGhpcy5jcmVhdGlvbk5vZGUpCisgICAgICAgICAgICBpZiAodGhpcy5fZGVsZXRlQ2Fs
bGJhY2sgJiYgZ3JpZE5vZGUgIT09IHRoaXMuY3JlYXRpb25Ob2RlKQogICAgICAgICAgICAgICAg
IGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEZWxldGUiKSwg
dGhpcy5fZGVsZXRlQ2FsbGJhY2suYmluZCh0aGlzLCBncmlkTm9kZSkpOwogICAgICAgICB9CiAK
QEAgLTExMzQsNiArMTAxNCw3IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUuX19w
cm90b19fID0gV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlOwogLyoqCiAgKiBAY29uc3RydWN0
b3IKICAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuT2JqZWN0fQorICogQHBhcmFtIHsqPX0gZGF0
YQogICogQHBhcmFtIHtib29sZWFuPX0gaGFzQ2hpbGRyZW4KICAqLwogV2ViSW5zcGVjdG9yLkRh
dGFHcmlkTm9kZSA9IGZ1bmN0aW9uKGRhdGEsIGhhc0NoaWxkcmVuKQpAQCAtMTE1NCw2ICsxMDM1
LDggQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZSA9IGZ1bmN0aW9uKGRhdGEsIGhhc0NoaWxk
cmVuKQogV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgc2VsZWN0
YWJsZTogdHJ1ZSwKIAorICAgIF9pc1Jvb3Q6IGZhbHNlLAorCiAgICAgZ2V0IGVsZW1lbnQoKQog
ICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnQpCkBAIC0xMjAzLDcgKzEwODYsNyBAQCBX
ZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVy
biB0aGlzLl9yZXZlYWxlZDsKIAogICAgICAgICB2YXIgY3VycmVudEFuY2VzdG9yID0gdGhpcy5w
YXJlbnQ7Ci0gICAgICAgIHdoaWxlIChjdXJyZW50QW5jZXN0b3IgJiYgIWN1cnJlbnRBbmNlc3Rv
ci5yb290KSB7CisgICAgICAgIHdoaWxlIChjdXJyZW50QW5jZXN0b3IgJiYgIWN1cnJlbnRBbmNl
c3Rvci5faXNSb290KSB7CiAgICAgICAgICAgICBpZiAoIWN1cnJlbnRBbmNlc3Rvci5leHBhbmRl
ZCkgewogICAgICAgICAgICAgICAgIHRoaXMuX3JldmVhbGVkID0gZmFsc2U7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTI2Niw3ICsxMTQ5LDcgQEAgV2ViSW5zcGVjdG9yLkRh
dGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICBpZiAoIl9kZXB0aCIgaW4g
dGhpcykKICAgICAgICAgICAgIHJldHVybiB0aGlzLl9kZXB0aDsKLSAgICAgICAgaWYgKHRoaXMu
cGFyZW50ICYmICF0aGlzLnBhcmVudC5yb290KQorICAgICAgICBpZiAodGhpcy5wYXJlbnQgJiYg
IXRoaXMucGFyZW50Ll9pc1Jvb3QpCiAgICAgICAgICAgICB0aGlzLl9kZXB0aCA9IHRoaXMucGFy
ZW50LmRlcHRoICsgMTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5fZGVwdGggPSAw
OwpAQCAtMTM1MSwxMiArMTIzNCwxMDEgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBjZWxsOwogICAgIH0sCiAKLSAgICAvLyBTaGFyZSB0
aGVzZSBmdW5jdGlvbnMgd2l0aCBEYXRhR3JpZC4gVGhleSBhcmUgd3JpdHRlbiB0byB3b3JrIHdp
dGggYSBEYXRhR3JpZE5vZGUgdGhpcyBvYmplY3QuCi0gICAgYXBwZW5kQ2hpbGQ6IFdlYkluc3Bl
Y3Rvci5EYXRhR3JpZC5wcm90b3R5cGUuYXBwZW5kQ2hpbGQsCi0gICAgaW5zZXJ0Q2hpbGQ6IFdl
Ykluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUuaW5zZXJ0Q2hpbGQsCi0gICAgcmVtb3ZlQ2hp
bGQ6IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUucmVtb3ZlQ2hpbGQsCi0gICAgcmVt
b3ZlQ2hpbGRyZW46IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUucmVtb3ZlQ2hpbGRy
ZW4sCi0gICAgcmVtb3ZlQ2hpbGRyZW5SZWN1cnNpdmU6IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5w
cm90b3R5cGUucmVtb3ZlQ2hpbGRyZW5SZWN1cnNpdmUsCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlfSBjaGlsZAorICAgICAqLworICAgIGFwcGVuZENo
aWxkOiBmdW5jdGlvbihjaGlsZCkKKyAgICB7CisgICAgICAgIHRoaXMuaW5zZXJ0Q2hpbGQoY2hp
bGQsIHRoaXMuY2hpbGRyZW4ubGVuZ3RoKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBh
cmFtIHtXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlfSBjaGlsZAorICAgICAqIEBwYXJhbSB7bnVt
YmVyfSBpbmRleAorICAgICAqLworICAgIGluc2VydENoaWxkOiBmdW5jdGlvbihjaGlsZCwgaW5k
ZXgpCisgICAgeworICAgICAgICBpZiAoIWNoaWxkKQorICAgICAgICAgICAgdGhyb3coImluc2Vy
dENoaWxkOiBOb2RlIGNhbid0IGJlIHVuZGVmaW5lZCBvciBudWxsLiIpOworICAgICAgICBpZiAo
Y2hpbGQucGFyZW50ID09PSB0aGlzKQorICAgICAgICAgICAgdGhyb3coImluc2VydENoaWxkOiBO
b2RlIGlzIGFscmVhZHkgYSBjaGlsZCBvZiB0aGlzIG5vZGUuIik7CisKKyAgICAgICAgaWYgKGNo
aWxkLnBhcmVudCkKKyAgICAgICAgICAgIGNoaWxkLnBhcmVudC5yZW1vdmVDaGlsZChjaGlsZCk7
CisKKyAgICAgICAgdGhpcy5jaGlsZHJlbi5zcGxpY2UoaW5kZXgsIDAsIGNoaWxkKTsKKyAgICAg
ICAgdGhpcy5oYXNDaGlsZHJlbiA9IHRydWU7CisKKyAgICAgICAgY2hpbGQucGFyZW50ID0gdGhp
czsKKyAgICAgICAgY2hpbGQuZGF0YUdyaWQgPSB0aGlzLmRhdGFHcmlkOworICAgICAgICBjaGls
ZC5fcmVjYWxjdWxhdGVTaWJsaW5ncyhpbmRleCk7CisKKyAgICAgICAgZGVsZXRlIGNoaWxkLl9k
ZXB0aDsKKyAgICAgICAgZGVsZXRlIGNoaWxkLl9yZXZlYWxlZDsKKyAgICAgICAgZGVsZXRlIGNo
aWxkLl9hdHRhY2hlZDsKKyAgICAgICAgY2hpbGQuX3Nob3VsZFJlZnJlc2hDaGlsZHJlbiA9IHRy
dWU7CisKKyAgICAgICAgdmFyIGN1cnJlbnQgPSBjaGlsZC5jaGlsZHJlblswXTsKKyAgICAgICAg
d2hpbGUgKGN1cnJlbnQpIHsKKyAgICAgICAgICAgIGN1cnJlbnQuZGF0YUdyaWQgPSB0aGlzLmRh
dGFHcmlkOworICAgICAgICAgICAgZGVsZXRlIGN1cnJlbnQuX2RlcHRoOworICAgICAgICAgICAg
ZGVsZXRlIGN1cnJlbnQuX3JldmVhbGVkOworICAgICAgICAgICAgZGVsZXRlIGN1cnJlbnQuX2F0
dGFjaGVkOworICAgICAgICAgICAgY3VycmVudC5fc2hvdWxkUmVmcmVzaENoaWxkcmVuID0gdHJ1
ZTsKKyAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LnRyYXZlcnNlTmV4dE5vZGUoZmFsc2Us
IGNoaWxkLCB0cnVlKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0aGlzLmV4cGFuZGVkKQor
ICAgICAgICAgICAgY2hpbGQuX2F0dGFjaCgpOworICAgICAgICBpZiAoIXRoaXMucmV2ZWFsZWQp
CisgICAgICAgICAgICBjaGlsZC5yZXZlYWxlZCA9IGZhbHNlOworICAgIH0sCisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGV9IGNoaWxkCisgICAgICov
CisgICAgcmVtb3ZlQ2hpbGQ6IGZ1bmN0aW9uKGNoaWxkKQorICAgIHsKKyAgICAgICAgaWYgKCFj
aGlsZCkKKyAgICAgICAgICAgIHRocm93KCJyZW1vdmVDaGlsZDogTm9kZSBjYW4ndCBiZSB1bmRl
ZmluZWQgb3IgbnVsbC4iKTsKKyAgICAgICAgaWYgKGNoaWxkLnBhcmVudCAhPT0gdGhpcykKKyAg
ICAgICAgICAgIHRocm93KCJyZW1vdmVDaGlsZDogTm9kZSBpcyBub3QgYSBjaGlsZCBvZiB0aGlz
IG5vZGUuIik7CisKKyAgICAgICAgY2hpbGQuZGVzZWxlY3QoKTsKKyAgICAgICAgY2hpbGQuX2Rl
dGFjaCgpOworCisgICAgICAgIHRoaXMuY2hpbGRyZW4ucmVtb3ZlKGNoaWxkLCB0cnVlKTsKKwor
ICAgICAgICBpZiAoY2hpbGQucHJldmlvdXNTaWJsaW5nKQorICAgICAgICAgICAgY2hpbGQucHJl
dmlvdXNTaWJsaW5nLm5leHRTaWJsaW5nID0gY2hpbGQubmV4dFNpYmxpbmc7CisgICAgICAgIGlm
IChjaGlsZC5uZXh0U2libGluZykKKyAgICAgICAgICAgIGNoaWxkLm5leHRTaWJsaW5nLnByZXZp
b3VzU2libGluZyA9IGNoaWxkLnByZXZpb3VzU2libGluZzsKKworICAgICAgICBjaGlsZC5kYXRh
R3JpZCA9IG51bGw7CisgICAgICAgIGNoaWxkLnBhcmVudCA9IG51bGw7CisgICAgICAgIGNoaWxk
Lm5leHRTaWJsaW5nID0gbnVsbDsKKyAgICAgICAgY2hpbGQucHJldmlvdXNTaWJsaW5nID0gbnVs
bDsKKworICAgICAgICBpZiAodGhpcy5jaGlsZHJlbi5sZW5ndGggPD0gMCkKKyAgICAgICAgICAg
IHRoaXMuaGFzQ2hpbGRyZW4gPSBmYWxzZTsKKyAgICB9LAorCisgICAgcmVtb3ZlQ2hpbGRyZW46
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jaGls
ZHJlbi5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFyIGNoaWxkID0gdGhpcy5jaGlsZHJl
bltpXTsKKyAgICAgICAgICAgIGNoaWxkLmRlc2VsZWN0KCk7CisgICAgICAgICAgICBjaGlsZC5f
ZGV0YWNoKCk7CisKKyAgICAgICAgICAgIGNoaWxkLmRhdGFHcmlkID0gbnVsbDsKKyAgICAgICAg
ICAgIGNoaWxkLnBhcmVudCA9IG51bGw7CisgICAgICAgICAgICBjaGlsZC5uZXh0U2libGluZyA9
IG51bGw7CisgICAgICAgICAgICBjaGlsZC5wcmV2aW91c1NpYmxpbmcgPSBudWxsOworICAgICAg
ICB9CisKKyAgICAgICAgdGhpcy5jaGlsZHJlbiA9IFtdOworICAgICAgICB0aGlzLmhhc0NoaWxk
cmVuID0gZmFsc2U7CisgICAgfSwKIAogICAgIF9yZWNhbGN1bGF0ZVNpYmxpbmdzOiBmdW5jdGlv
bihteUluZGV4KQogICAgIHsKQEAgLTEzODIsNiArMTM1NCw4IEBAIFdlYkluc3BlY3Rvci5EYXRh
R3JpZE5vZGUucHJvdG90eXBlID0gewogCiAgICAgY29sbGFwc2U6IGZ1bmN0aW9uKCkKICAgICB7
CisgICAgICAgIGlmICh0aGlzLl9pc1Jvb3QpCisgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IGlmICh0aGlzLl9lbGVtZW50KQogICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5yZW1vdmVTdHls
ZUNsYXNzKCJleHBhbmRlZCIpOwogCkBAIC0xNDA3LDYgKzEzODEsOCBAQCBXZWJJbnNwZWN0b3Iu
RGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5oYXND
aGlsZHJlbiB8fCB0aGlzLmV4cGFuZGVkKQogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBp
ZiAodGhpcy5faXNSb290KQorICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmICh0aGlz
LnJldmVhbGVkICYmICF0aGlzLl9zaG91bGRSZWZyZXNoQ2hpbGRyZW4pCiAgICAgICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyArK2kpCkBAIC0xNDQ5LDgg
KzE0MjUsMTAgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAKICAg
ICByZXZlYWw6IGZ1bmN0aW9uKCkKICAgICB7CisgICAgICAgIGlmICh0aGlzLl9pc1Jvb3QpCisg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHZhciBjdXJyZW50QW5jZXN0b3IgPSB0aGlzLnBh
cmVudDsKLSAgICAgICAgd2hpbGUgKGN1cnJlbnRBbmNlc3RvciAmJiAhY3VycmVudEFuY2VzdG9y
LnJvb3QpIHsKKyAgICAgICAgd2hpbGUgKGN1cnJlbnRBbmNlc3RvciAmJiAhY3VycmVudEFuY2Vz
dG9yLl9pc1Jvb3QpIHsKICAgICAgICAgICAgIGlmICghY3VycmVudEFuY2VzdG9yLmV4cGFuZGVk
KQogICAgICAgICAgICAgICAgIGN1cnJlbnRBbmNlc3Rvci5leHBhbmQoKTsKICAgICAgICAgICAg
IGN1cnJlbnRBbmNlc3RvciA9IGN1cnJlbnRBbmNlc3Rvci5wYXJlbnQ7CkBAIC0xNDg2LDYgKzE0
NjQsOCBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKIAogICAgIHJl
dmVhbEFuZFNlbGVjdDogZnVuY3Rpb24oKQogICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2lzUm9v
dCkKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdGhpcy5yZXZlYWwoKTsKICAgICAgICAg
dGhpcy5zZWxlY3QoKTsKICAgICB9LApAQCAtMTUzMyw3ICsxNTEzLDcgQEAgV2ViSW5zcGVjdG9y
LkRhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gbm9kZTsKIAog
ICAgICAgICBub2RlID0gdGhpczsKLSAgICAgICAgd2hpbGUgKG5vZGUgJiYgIW5vZGUucm9vdCAm
JiAhKCghc2tpcEhpZGRlbiB8fCBub2RlLnJldmVhbGVkKSA/IG5vZGUubmV4dFNpYmxpbmcgOiBu
dWxsKSAmJiBub2RlLnBhcmVudCAhPT0gc3RheVdpdGhpbikgeworICAgICAgICB3aGlsZSAobm9k
ZSAmJiAhbm9kZS5faXNSb290ICYmICEoKCFza2lwSGlkZGVuIHx8IG5vZGUucmV2ZWFsZWQpID8g
bm9kZS5uZXh0U2libGluZyA6IG51bGwpICYmIG5vZGUucGFyZW50ICE9PSBzdGF5V2l0aGluKSB7
CiAgICAgICAgICAgICBpZiAoaW5mbykKICAgICAgICAgICAgICAgICBpbmZvLmRlcHRoQ2hhbmdl
IC09IDE7CiAgICAgICAgICAgICBub2RlID0gbm9kZS5wYXJlbnQ7CkBAIC0xNTYwLDcgKzE1NDAs
NyBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYg
KG5vZGUpCiAgICAgICAgICAgICByZXR1cm4gbm9kZTsKIAotICAgICAgICBpZiAoIXRoaXMucGFy
ZW50IHx8IHRoaXMucGFyZW50LnJvb3QpCisgICAgICAgIGlmICghdGhpcy5wYXJlbnQgfHwgdGhp
cy5wYXJlbnQuX2lzUm9vdCkKICAgICAgICAgICAgIHJldHVybiBudWxsOwogCiAgICAgICAgIHJl
dHVybiB0aGlzLnBhcmVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvSGVhcFNuYXBzaG90RGF0YUdyaWRzLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3REYXRhR3JpZHMuanMKaW5kZXggYzZhNDQ3NWNjNWY1
Zjk1OGZhYzk4NjJmOTM4MjU1NDQ5MmJhYzFkZC4uNGI3NWFkNmNkZGI5OTcyYTc3OGI1MmQyMTIy
ZmZlZGNlNTE3OWIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9IZWFwU25hcHNob3REYXRhR3JpZHMuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3REYXRhR3JpZHMuanMKQEAgLTM1LDcgKzM1LDcgQEAK
ICAqLwogV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFNvcnRhYmxlRGF0YUdyaWQgPSBmdW5jdGlv
bihjb2x1bW5zLCBkZWZlck5vZGVDb250ZW50Q3JlYXRpb24pCiB7Ci0gICAgV2ViSW5zcGVjdG9y
LkRhdGFHcmlkLmNhbGwodGhpcywgY29sdW1ucyk7CisgICAgV2ViSW5zcGVjdG9yLkRhdGFHcmlk
LmNhbGwodGhpcywgY29sdW1ucywgbmV3IFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUoKSk7CiAg
ICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCJzb3J0aW5nIGNoYW5nZWQiLCB0aGlzLnNvcnRpbmdD
aGFuZ2VkLCB0aGlzKTsKIAogICAgIHRoaXMuX2RlZmVyTm9kZUNvbnRlbnRDcmVhdGlvbiA9IGRl
ZmVyTm9kZUNvbnRlbnRDcmVhdGlvbjsKQEAgLTQ2LDggKzQ2LDggQEAgV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdFNvcnRhYmxlRGF0YUdyaWQgPSBmdW5jdGlvbihjb2x1bW5zLCBkZWZlck5vZGVD
b250ZW50Q3IKIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RTb3J0YWJsZURhdGFHcmlkLnByb3Rv
dHlwZSA9IHsKICAgICBkaXNwb3NlOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBmb3IgKHZh
ciBpID0gMCwgbCA9IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbDsgKytpKQotICAgICAgICAg
ICAgdGhpcy5jaGlsZHJlbltpXS5kaXNwb3NlKCk7CisgICAgICAgIGZvciAodmFyIGkgPSAwLCBs
ID0gdGhpcy5yb290Tm9kZSgpLmNoaWxkcmVuLmxlbmd0aDsgaSA8IGw7ICsraSkKKyAgICAgICAg
ICAgIHRoaXMucm9vdE5vZGUoKS5jaGlsZHJlbltpXS5kaXNwb3NlKCk7CiAgICAgfSwKIAogICAg
IHJlc2V0U29ydGluZ0NhY2hlOiBmdW5jdGlvbigpCkBAIC01OCw4ICs1OCw4IEBAIFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3RTb3J0YWJsZURhdGFHcmlkLnByb3RvdHlwZSA9IHsKIAogICAgIGNo
YW5nZU5hbWVGaWx0ZXI6IGZ1bmN0aW9uKGZpbHRlcikKICAgICB7Ci0gICAgICAgIHZhciBmaWx0
ZXIgPSBmaWx0ZXIudG9Mb3dlckNhc2UoKTsKLSAgICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5j
aGlsZHJlbjsKKyAgICAgICAgZmlsdGVyID0gZmlsdGVyLnRvTG93ZXJDYXNlKCk7CisgICAgICAg
IHZhciBjaGlsZHJlbiA9IHRoaXMucm9vdE5vZGUoKS5jaGlsZHJlbjsKICAgICAgICAgZm9yICh2
YXIgaSA9IDAsIGwgPSBjaGlsZHJlbi5sZW5ndGg7IGkgPCBsOyArK2kpIHsKICAgICAgICAgICAg
IHZhciBub2RlID0gY2hpbGRyZW5baV07CiAgICAgICAgICAgICBpZiAobm9kZS5kZXB0aCA9PT0g
MCkKQEAgLTEwNyw3ICsxMDcsNyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90U29ydGFibGVE
YXRhR3JpZC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBoZWlnaHQgPSB0aGlzLnNjcm9sbENv
bnRhaW5lci5vZmZzZXRIZWlnaHQ7CiAgICAgICAgIHZhciB2aXNpYmxlUm93c0NvdW50ID0gTWF0
aC5yb3VuZChoZWlnaHQgLyByb3dIZWlnaHQpICsgMTsKIAotICAgICAgICB2YXIgY2hpbGRyZW4g
PSB0aGlzLmNoaWxkcmVuOworICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLnJvb3ROb2RlKCku
Y2hpbGRyZW47CiAKICAgICAgICAgdmFyIGkgPSAwOwogICAgICAgICB3aGlsZSAoaSA8IGNoaWxk
cmVuLmxlbmd0aCkgewpAQCAtMTQxLDEzICsxNDEsMTMgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdFNvcnRhYmxlRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgIF9wZXJmb3JtU29ydGluZzog
ZnVuY3Rpb24oc29ydEZ1bmN0aW9uKQogICAgIHsKICAgICAgICAgdGhpcy5yZWN1cnNpdmVTb3J0
aW5nRW50ZXIoKTsKLSAgICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5jaGlsZHJlbjsKLSAgICAg
ICAgdGhpcy5yZW1vdmVDaGlsZHJlbigpOworICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLnJv
b3ROb2RlKCkuY2hpbGRyZW47CisgICAgICAgIHRoaXMucm9vdE5vZGUoKS5yZW1vdmVDaGlsZHJl
bigpOwogICAgICAgICBjaGlsZHJlbi5zb3J0KHNvcnRGdW5jdGlvbik7CiAgICAgICAgIGZvciAo
dmFyIGkgPSAwLCBsID0gY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbDsgKytpKSB7CiAgICAgICAgICAg
ICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXTsKICAgICAgICAgICAgIHZhciByZXZlYWxlZCA9IGNo
aWxkLnJldmVhbGVkOwotICAgICAgICAgICAgdGhpcy5hcHBlbmRDaGlsZChjaGlsZCk7CisgICAg
ICAgICAgICB0aGlzLnJvb3ROb2RlKCkuYXBwZW5kQ2hpbGQoY2hpbGQpOwogICAgICAgICAgICAg
Y2hpbGQucmV2ZWFsZWQgPSByZXZlYWxlZDsKICAgICAgICAgICAgIGlmIChjaGlsZC5leHBhbmRl
ZCkKICAgICAgICAgICAgICAgICBjaGlsZC5zb3J0KCk7CkBAIC0yMjksMjUgKzIyOSwyNCBAQCBX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29udGFpbm1lbnREYXRhR3JpZC5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIG5l
eHRTdGVwKHRoaXMsIDApOworICAgICAgICBuZXh0U3RlcCh0aGlzLnJvb3ROb2RlKCksIDApOwog
ICAgIH0sCiAKICAgICBzZXREYXRhU291cmNlOiBmdW5jdGlvbihzbmFwc2hvdFZpZXcsIHNuYXBz
aG90LCBub2RlSW5kZXgpCiAgICAgewogICAgICAgICB0aGlzLnNuYXBzaG90VmlldyA9IHNuYXBz
aG90VmlldzsKICAgICAgICAgdGhpcy5zbmFwc2hvdCA9IHNuYXBzaG90OwotICAgICAgICB0aGlz
LnNuYXBzaG90Tm9kZUluZGV4ID0gbm9kZUluZGV4IHx8IHRoaXMuc25hcHNob3Qucm9vdE5vZGVJ
bmRleDsKLSAgICAgICAgdGhpcy5fcHJvdmlkZXIgPSB0aGlzLl9jcmVhdGVQcm92aWRlcihzbmFw
c2hvdCwgdGhpcy5zbmFwc2hvdE5vZGVJbmRleCwgdGhpcyk7Ci0gICAgICAgIHRoaXMuc29ydCgp
OworICAgICAgICB2YXIgZmFrZUVkZ2UgPSB7IG5vZGVJbmRleDogbm9kZUluZGV4IHx8IHRoaXMu
c25hcHNob3Qucm9vdE5vZGVJbmRleCB9OworICAgICAgICB0aGlzLnNldFJvb3ROb2RlKG5ldyBX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90T2JqZWN0Tm9kZSh0aGlzLCBmYWxzZSwgZmFrZUVkZ2Us
IG51bGwpKTsKKyAgICAgICAgdGhpcy5yb290Tm9kZSgpLnNvcnQoKTsKICAgICB9LAogCiAgICAg
c29ydGluZ0NoYW5nZWQ6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMuc29ydCgpOwor
ICAgICAgICB0aGlzLnJvb3ROb2RlKCkuc29ydCgpOwogICAgIH0KIH07CiAKLU1peEluU25hcHNo
b3ROb2RlRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RPYmplY3ROb2RlLnByb3Rv
dHlwZSwgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdENvbnRhaW5tZW50RGF0YUdyaWQucHJvdG90
eXBlKTsKIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RDb250YWlubWVudERhdGFHcmlkLnByb3Rv
dHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90U29ydGFibGVEYXRhR3Jp
ZC5wcm90b3R5cGU7CiAKIC8qKgpAQCAtMjgwLDcgKzI3OSw3IEBAIFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RSZXRhaW5tZW50RGF0YUdyaWQucHJvdG90eXBlID0gewogCiAgICAgcmVzZXQ6IGZ1
bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMucmVtb3ZlQ2hpbGRyZW4oKTsKKyAgICAgICAg
dGhpcy5yb290Tm9kZSgpLnJlbW92ZUNoaWxkcmVuKCk7CiAgICAgICAgIHRoaXMucmVzZXRTb3J0
aW5nQ2FjaGUoKTsKICAgICB9LAogfQpAQCAtMzMxLDEyICszMzAsMTIgQEAgV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdENvbnN0cnVjdG9yc0RhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ZnVuY3Rpb24gYWdncmVnYXRlc1JlY2VpdmVkKGtleSwgYWdncmVnYXRlcykKICAgICAgICAgewog
ICAgICAgICAgICAgZm9yICh2YXIgY29uc3RydWN0b3IgaW4gYWdncmVnYXRlcykKLSAgICAgICAg
ICAgICAgICB0aGlzLmFwcGVuZENoaWxkKG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29u
c3RydWN0b3JOb2RlKHRoaXMsIGNvbnN0cnVjdG9yLCBhZ2dyZWdhdGVzW2NvbnN0cnVjdG9yXSwg
a2V5KSk7CisgICAgICAgICAgICAgICAgdGhpcy5yb290Tm9kZSgpLmFwcGVuZENoaWxkKG5ldyBX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Q29uc3RydWN0b3JOb2RlKHRoaXMsIGNvbnN0cnVjdG9y
LCBhZ2dyZWdhdGVzW2NvbnN0cnVjdG9yXSwga2V5KSk7CiAgICAgICAgICAgICB0aGlzLnNvcnRp
bmdDaGFuZ2VkKCk7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLmRpc3Bvc2UoKTsKLSAgICAg
ICAgdGhpcy5yZW1vdmVDaGlsZHJlbigpOworICAgICAgICB0aGlzLnJvb3ROb2RlKCkucmVtb3Zl
Q2hpbGRyZW4oKTsKICAgICAgICAgdGhpcy5yZXNldFNvcnRpbmdDYWNoZSgpOwogCiAgICAgICAg
IHZhciBrZXkgPSB0aGlzLl9wcm9maWxlSW5kZXggPT09IC0xID8gImFsbE9iamVjdHMiIDogdGhp
cy5fbWluTm9kZUlkICsgIi4uIiArIHRoaXMuX21heE5vZGVJZDsKQEAgLTQxMyw3ICs0MTIsNyBA
QCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RGlmZkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAg
ICB7CiAgICAgICAgIHRoaXMuYmFzZVNuYXBzaG90ID0gYmFzZVNuYXBzaG90OwogICAgICAgICB0
aGlzLmRpc3Bvc2UoKTsKLSAgICAgICAgdGhpcy5yZW1vdmVDaGlsZHJlbigpOworICAgICAgICB0
aGlzLnJvb3ROb2RlKCkucmVtb3ZlQ2hpbGRyZW4oKTsKICAgICAgICAgdGhpcy5yZXNldFNvcnRp
bmdDYWNoZSgpOwogICAgICAgICBpZiAodGhpcy5iYXNlU25hcHNob3QgPT09IHRoaXMuc25hcHNo
b3QpIHsKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJzb3J0aW5n
IGNvbXBsZXRlIik7CkBAIC00NDAsNyArNDM5LDcgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dERpZmZEYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYWRk
Tm9kZUlmTm9uWmVyb0RpZmYoYm91bmROb2RlLCB6ZXJvRGlmZikKICAgICAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgICAgIGlmICghemVyb0RpZmYpCi0gICAgICAgICAgICAgICAgICAg
ICAgICB0aGlzLmFwcGVuZENoaWxkKGJvdW5kTm9kZSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICB0aGlzLnJvb3ROb2RlKCkuYXBwZW5kQ2hpbGQoYm91bmROb2RlKTsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKCEtLW5vZGVDb3VudCkKICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc29y
dGluZ0NoYW5nZWQoKTsKICAgICAgICAgICAgICAgICB9CkBAIC00NzgsMTYgKzQ3NywxNiBAQCBX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RG9taW5hdG9yc0RhdGFHcmlkLnByb3RvdHlwZSA9IHsK
ICAgICB7CiAgICAgICAgIHRoaXMuc25hcHNob3RWaWV3ID0gc25hcHNob3RWaWV3OwogICAgICAg
ICB0aGlzLnNuYXBzaG90ID0gc25hcHNob3Q7Ci0gICAgICAgIHRoaXMuc25hcHNob3ROb2RlSW5k
ZXggPSB0aGlzLnNuYXBzaG90LnJvb3ROb2RlSW5kZXg7Ci0gICAgICAgIHRoaXMuX3Byb3ZpZGVy
ID0gdGhpcy5fY3JlYXRlUHJvdmlkZXIoc25hcHNob3QsIHRoaXMuc25hcHNob3ROb2RlSW5kZXgp
OwotICAgICAgICB0aGlzLnNvcnQoKTsKKworICAgICAgICB2YXIgZmFrZU5vZGUgPSB7IG5vZGVJ
bmRleDogdGhpcy5zbmFwc2hvdC5yb290Tm9kZUluZGV4IH07CisgICAgICAgIHRoaXMuc2V0Um9v
dE5vZGUobmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REb21pbmF0b3JPYmplY3ROb2RlKHRo
aXMsIGZha2VOb2RlKSk7CisgICAgICAgIHRoaXMucm9vdE5vZGUoKS5zb3J0KCk7CiAgICAgfSwK
IAogICAgIHNvcnRpbmdDaGFuZ2VkOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB0aGlzLnNv
cnQoKTsKKyAgICAgICAgdGhpcy5yb290Tm9kZSgpLnNvcnQoKTsKICAgICB9CiB9OwogCi1NaXhJ
blNuYXBzaG90Tm9kZUZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RG9taW5hdG9y
T2JqZWN0Tm9kZS5wcm90b3R5cGUsIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REb21pbmF0b3Jz
RGF0YUdyaWQucHJvdG90eXBlKTsKIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3REb21pbmF0b3Jz
RGF0YUdyaWQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RT
b3J0YWJsZURhdGFHcmlkLnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90R3JpZE5vZGVzLmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RHcmlkTm9kZXMuanMKaW5kZXggNDcz
ZDUwYjEwODk2YjY0ZWQ5YzdkNzlmZDM2ZjBlYTg0YzRmNzEzZS4uYjZhZjNkNmRiZjIxZTMyY2Jh
YTViZjhlNWE1NzRjMjFlODhiN2ZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RHcmlkTm9kZXMuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RHcmlkTm9kZXMuanMKQEAgLTI0Myw2
ICsyNDMsOSBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90TGF6eUdyaWROb2RlLnByb3RvdHlw
ZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuSGVhcFNuYQogV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdEdlbmVyaWNPYmplY3ROb2RlID0gZnVuY3Rpb24odHJlZSwgbm9kZSkKIHsKICAgICBXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90R3JpZE5vZGUuY2FsbCh0aGlzLCB0cmVlLCBmYWxzZSk7Cisg
ICAgLy8gbm9kZSBpcyBudWxsIGZvciBEYXRhR3JpZCByb290IG5vZGVzLgorICAgIGlmICghbm9k
ZSkKKyAgICAgICAgcmV0dXJuOwogICAgIHRoaXMuX25hbWUgPSBub2RlLm5hbWU7CiAgICAgdGhp
cy5fdHlwZSA9IG5vZGUudHlwZTsKICAgICB0aGlzLl9kaXN0YW5jZVRvV2luZG93ID0gbm9kZS5k
aXN0YW5jZVRvV2luZG93OwpAQCAtOTI5LDE2ICs5MzIsMyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90RG9taW5hdG9yT2JqZWN0Tm9kZS5wcm90b3R5cGUgPSB7CiB9OwogCiBXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90RG9taW5hdG9yT2JqZWN0Tm9kZS5wcm90b3R5cGUuX19wcm90b19fID0g
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdlbmVyaWNPYmplY3ROb2RlLnByb3RvdHlwZTsKLQot
ZnVuY3Rpb24gTWl4SW5TbmFwc2hvdE5vZGVGdW5jdGlvbnMoc291cmNlUHJvdG90eXBlLCB0YXJn
ZXRQcm90b3R5cGUpCi17Ci0gICAgdGFyZ2V0UHJvdG90eXBlLl9jaGlsZEhhc2hGb3JFbnRpdHkg
PSBzb3VyY2VQcm90b3R5cGUuX2NoaWxkSGFzaEZvckVudGl0eTsKLSAgICB0YXJnZXRQcm90b3R5
cGUuX2NoaWxkSGFzaEZvck5vZGUgPSBzb3VyY2VQcm90b3R5cGUuX2NoaWxkSGFzaEZvck5vZGU7
Ci0gICAgdGFyZ2V0UHJvdG90eXBlLmNvbXBhcmF0b3IgPSBzb3VyY2VQcm90b3R5cGUuY29tcGFy
YXRvcjsKLSAgICB0YXJnZXRQcm90b3R5cGUuX2NyZWF0ZUNoaWxkTm9kZSA9IHNvdXJjZVByb3Rv
dHlwZS5fY3JlYXRlQ2hpbGROb2RlOwotICAgIHRhcmdldFByb3RvdHlwZS5fY3JlYXRlUHJvdmlk
ZXIgPSBzb3VyY2VQcm90b3R5cGUuX2NyZWF0ZVByb3ZpZGVyOwotICAgIHRhcmdldFByb3RvdHlw
ZS5kaXNwb3NlID0gc291cmNlUHJvdG90eXBlLmRpc3Bvc2U7Ci0gICAgdGFyZ2V0UHJvdG90eXBl
LnBvcHVsYXRlQ2hpbGRyZW4gPSBzb3VyY2VQcm90b3R5cGUucG9wdWxhdGVDaGlsZHJlbjsKLSAg
ICB0YXJnZXRQcm90b3R5cGUuX3NhdmVDaGlsZHJlbiA9IHNvdXJjZVByb3RvdHlwZS5fc2F2ZUNo
aWxkcmVuOwotICAgIHRhcmdldFByb3RvdHlwZS5zb3J0ID0gc291cmNlUHJvdG90eXBlLnNvcnQ7
Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBT
bmFwc2hvdFZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBT
bmFwc2hvdFZpZXcuanMKaW5kZXggOGI5M2JjZmRiZDc5ZDYzMzYzYmNhZDczYmNmZGIyNzJjYzU4
YWNmOC4uNzgzNDYyMDQ1NDU0M2FlYzBiNjg2Yjc1Nzk5NGM2MGQ0Y2Q0ZDEzMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RWaWV3Lmpz
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90Vmll
dy5qcwpAQCAtMjgzLDcgKzI4Myw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RWaWV3LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCi0gICAg
ICAgIHZhciBjdXJyZW50ID0gdGhpcy5kYXRhR3JpZC5jaGlsZHJlblswXTsKKyAgICAgICAgdmFy
IGN1cnJlbnQgPSB0aGlzLmRhdGFHcmlkLnJvb3ROb2RlKCkuY2hpbGRyZW5bMF07CiAgICAgICAg
IHZhciBkZXB0aCA9IDA7CiAgICAgICAgIHZhciBpbmZvID0ge307CiAKQEAgLTM1Niw3ICszNTYs
NyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Vmlldy5wcm90b3R5cGUgPSB7CiAKICAgICBy
ZWZyZXNoVmlzaWJsZURhdGE6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHZhciBjaGlsZCA9
IHRoaXMuZGF0YUdyaWQuY2hpbGRyZW5bMF07CisgICAgICAgIHZhciBjaGlsZCA9IHRoaXMuZGF0
YUdyaWQucm9vdE5vZGUoKS5jaGlsZHJlblswXTsKICAgICAgICAgd2hpbGUgKGNoaWxkKSB7CiAg
ICAgICAgICAgICBjaGlsZC5yZWZyZXNoKCk7CiAgICAgICAgICAgICBjaGlsZCA9IGNoaWxkLnRy
YXZlcnNlTmV4dE5vZGUoZmFsc2UsIG51bGwsIHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbmRleGVkREJWaWV3cy5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5kZXhlZERCVmlld3MuanMKaW5kZXggZmE3ZDg4MDRl
ZDFiYWMwNWY1YTcxOGI0YWNiMzZjNDE3NTE3M2VjMC4uODUzMTdjMzcxMjE3NDg1M2M1YTYyOTA5
ZGZmNjhiYTFmM2ZiN2E1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9JbmRleGVkREJWaWV3cy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0luZGV4ZWREQlZpZXdzLmpzCkBAIC0xNTMsNyArMTUzLDcgQEAgV2ViSW5zcGVj
dG9yLklEQkRhdGFWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgY29sdW1uc1sidmFsdWUiXSA9
IHt9OwogICAgICAgICBjb2x1bW5zWyJ2YWx1ZSJdLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJWYWx1ZSIpOwogCi0gICAgICAgIHZhciBkYXRhR3JpZCA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGF0YUdyaWQoY29sdW1ucyk7CisgICAgICAgIHZhciBkYXRhR3JpZCA9IG5ldyBXZWJJbnNwZWN0
b3IuRGF0YUdyaWQoY29sdW1ucywgbmV3IFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUoKSk7CiAg
ICAgICAgIHJldHVybiBkYXRhR3JpZDsKICAgICB9LAogCkBAIC0yOTksNyArMjk5LDcgQEAgV2Vi
SW5zcGVjdG9yLklEQkRhdGFWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICB2YXIg
cHJpbWFyeUtleSA9IEpTT04uc3RyaW5naWZ5KHRoaXMuX2lzSW5kZXggPyBlbnRyaWVzW2ldLnBy
aW1hcnlLZXkgOiBlbnRyaWVzW2ldLmtleSk7CiAgICAgICAgICAgICAgICAgdmFyIHZhbHVlVGl0
bGUgPSB0aGlzLl9vYmplY3RTdG9yZS5uYW1lICsgIlsiICsgcHJpbWFyeUtleSArICJdIjsKICAg
ICAgICAgICAgICAgICB2YXIgbm9kZSA9IG5ldyBXZWJJbnNwZWN0b3IuSURCRGF0YUdyaWROb2Rl
KHZhbHVlVGl0bGUsIGRhdGEpOwotICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFHcmlkLmFwcGVu
ZENoaWxkKG5vZGUpOworICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnJvb3ROb2RlKCku
YXBwZW5kQ2hpbGQobm9kZSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHRoaXMuX3Bh
Z2VCYWNrQnV0dG9uLmRpc2FibGVkID0gc2tpcENvdW50ID09PSAwOwpAQCAtMzI1LDcgKzMyNSw3
IEBAIFdlYkluc3BlY3Rvci5JREJEYXRhVmlldy5wcm90b3R5cGUgPSB7CiAKICAgICBjbGVhcjog
ZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdGhpcy5fZGF0YUdyaWQucmVtb3ZlQ2hpbGRyZW4o
KTsKKyAgICAgICAgdGhpcy5fZGF0YUdyaWQucm9vdE5vZGUoKS5yZW1vdmVDaGlsZHJlbigpOwog
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2VudHJpZXMubGVuZ3RoOyArK2kpIHsK
ICAgICAgICAgICAgIHZhciB2YWx1ZSA9IHRoaXMuX2VudHJpZXNbaV0udmFsdWU7CiAgICAgICAg
ICAgICB2YWx1ZS5yZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvTmV0d29ya1BhbmVsLmpzCmluZGV4IGUyYThjN2NhM2JkNjVmNjgxN2VmOTQyYjlj
NWIyZDEyMjNkMTk1M2IuLjNiMWFhNmRlZTg1NTkzZDNlOGUwNDJmZjRlNTExZmQ0ZTZkMjg5Njcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1Bh
bmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1Bh
bmVsLmpzCkBAIC0xODMsNyArMTgzLDcgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIGNvbHVtbnMudGltZWxpbmUud2lkdGggPSAiNTAlIjsK
ICAgICAgICAgY29sdW1ucy50aW1lbGluZS5zb3J0ID0gImFzY2VuZGluZyI7CiAKLSAgICAgICAg
dGhpcy5fZGF0YUdyaWQgPSBuZXcgV2ViSW5zcGVjdG9yLkRhdGFHcmlkKGNvbHVtbnMpOworICAg
ICAgICB0aGlzLl9kYXRhR3JpZCA9IG5ldyBXZWJJbnNwZWN0b3IuRGF0YUdyaWQoY29sdW1ucywg
bmV3IFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUoKSk7CiAgICAgICAgIHRoaXMuX2RhdGFHcmlk
LnJlc2l6ZU1ldGhvZCA9IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5SZXNpemVNZXRob2QuTGFzdDsK
ICAgICAgICAgdGhpcy5fZGF0YUdyaWQuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJuZXR3b3JrLWxv
Zy1ncmlkIik7CiAgICAgICAgIHRoaXMuX2RhdGFHcmlkLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigiY29udGV4dG1lbnUiLCB0aGlzLl9jb250ZXh0TWVudS5iaW5kKHRoaXMpLCB0cnVlKTsKQEAg
LTY4MSw3ICs2ODEsNyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgaWYgKCFub2RlKSB7CiAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIHRo
ZSB0aW1lbGluZSB0cmVlIGVsZW1lbnQgYW5kIGdyYXBoLgogICAgICAgICAgICAgICAgIG5vZGUg
PSB0aGlzLl9jcmVhdGVSZXF1ZXN0R3JpZE5vZGUocmVxdWVzdCk7Ci0gICAgICAgICAgICAgICAg
dGhpcy5fZGF0YUdyaWQuYXBwZW5kQ2hpbGQobm9kZSk7CisgICAgICAgICAgICAgICAgdGhpcy5f
ZGF0YUdyaWQucm9vdE5vZGUoKS5hcHBlbmRDaGlsZChub2RlKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIG5vZGUucmVmcmVzaFJlcXVlc3QoKTsKIApAQCAtNzMyLDcgKzczMiw3IEBAIFdl
Ykluc3BlY3Rvci5OZXR3b3JrTG9nVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3Jl
cXVlc3RHcmlkTm9kZXMgPSB7fTsKIAogICAgICAgICBpZiAodGhpcy5fZGF0YUdyaWQpIHsKLSAg
ICAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnJlbW92ZUNoaWxkcmVuKCk7CisgICAgICAgICAgICB0
aGlzLl9kYXRhR3JpZC5yb290Tm9kZSgpLnJlbW92ZUNoaWxkcmVuKCk7CiAgICAgICAgICAgICB0
aGlzLl91cGRhdGVEaXZpZGVyc0lmTmVlZGVkKCk7CiAgICAgICAgICAgICB0aGlzLl91cGRhdGVT
dW1tYXJ5QmFyKCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvUHJvZmlsZURhdGFHcmlkVHJlZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZURhdGFHcmlkVHJlZS5qcwppbmRleCAzZThhNTljM2Q2
M2NhYjNiNjc0ODdjNmE0Mzc3MzNiNjAwNTQxNTBkLi5jY2JjN2YwOTgwNDEyMTVlYWFlZjg2Zjlm
MzQ1ZGIwNDJkMTExNGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1Byb2ZpbGVEYXRhR3JpZFRyZWUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9Qcm9maWxlRGF0YUdyaWRUcmVlLmpzCkBAIC0xNjAsMjcgKzE2MCwyMSBA
QCBXZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAKICAgICBp
bnNlcnRDaGlsZDogZnVuY3Rpb24oLypQcm9maWxlRGF0YUdyaWROb2RlKi8gcHJvZmlsZURhdGFH
cmlkTm9kZSwgaW5kZXgpCiAgICAgewotICAgICAgICB2YXIgYW55ID0gLyoqIEB0eXBlIHsqfSAq
L3RoaXM7Ci0gICAgICAgIHZhciBkYXRhR3JpZCA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkRh
dGFHcmlkfSAqL2FueTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5
cGUuaW5zZXJ0Q2hpbGQuY2FsbChkYXRhR3JpZCwgcHJvZmlsZURhdGFHcmlkTm9kZSwgaW5kZXgp
OworICAgICAgICBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZS5pbnNlcnRDaGls
ZC5jYWxsKHRoaXMsIHByb2ZpbGVEYXRhR3JpZE5vZGUsIGluZGV4KTsKIAogICAgICAgICB0aGlz
LmNoaWxkcmVuQnlDYWxsVUlEW3Byb2ZpbGVEYXRhR3JpZE5vZGUuY2FsbFVJRF0gPSBwcm9maWxl
RGF0YUdyaWROb2RlOwogICAgIH0sCiAKICAgICByZW1vdmVDaGlsZDogZnVuY3Rpb24oLypQcm9m
aWxlRGF0YUdyaWROb2RlKi8gcHJvZmlsZURhdGFHcmlkTm9kZSkKICAgICB7Ci0gICAgICAgIHZh
ciBhbnkgPSAvKiogQHR5cGUgeyp9ICovdGhpczsKLSAgICAgICAgdmFyIGRhdGFHcmlkID0gLyoq
IEB0eXBlIHtXZWJJbnNwZWN0b3IuRGF0YUdyaWR9ICovYW55OwotICAgICAgICBXZWJJbnNwZWN0
b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZS5yZW1vdmVDaGlsZC5jYWxsKGRhdGFHcmlkLCBwcm9m
aWxlRGF0YUdyaWROb2RlKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90
b3R5cGUucmVtb3ZlQ2hpbGQuY2FsbCh0aGlzLCBwcm9maWxlRGF0YUdyaWROb2RlKTsKIAogICAg
ICAgICBkZWxldGUgdGhpcy5jaGlsZHJlbkJ5Q2FsbFVJRFtwcm9maWxlRGF0YUdyaWROb2RlLmNh
bGxVSURdOwogICAgIH0sCiAKICAgICByZW1vdmVDaGlsZHJlbjogZnVuY3Rpb24oLypQcm9maWxl
RGF0YUdyaWROb2RlKi8gcHJvZmlsZURhdGFHcmlkTm9kZSkKICAgICB7Ci0gICAgICAgIHZhciBh
bnkgPSAvKiogQHR5cGUgeyp9ICovdGhpczsKLSAgICAgICAgdmFyIGRhdGFHcmlkID0gLyoqIEB0
eXBlIHtXZWJJbnNwZWN0b3IuRGF0YUdyaWR9ICovYW55OwotICAgICAgICBXZWJJbnNwZWN0b3Iu
RGF0YUdyaWROb2RlLnByb3RvdHlwZS5yZW1vdmVDaGlsZHJlbi5jYWxsKGRhdGFHcmlkKTsKKyAg
ICAgICAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUucmVtb3ZlQ2hpbGRyZW4u
Y2FsbCh0aGlzKTsKIAogICAgICAgICB0aGlzLmNoaWxkcmVuQnlDYWxsVUlEID0ge307CiAgICAg
fSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmls
ZVZpZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVWaWV3
LmpzCmluZGV4IGY0NzQwMTEwZDIwZjBiZWM4ZWY5N2RhNWMyZmVjMTRmNDVkODdmYTguLmVlMGFi
ZjE0M2YwZjg1YWJlZjlhNjQ4ODA5OWFlMDBiZjM3NGMxZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZVZpZXcuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlVmlldy5qcwpAQCAtNTEsNyArNTEsNyBA
QCBXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVZpZXcgPSBmdW5jdGlvbihwcm9maWxlKQogICAgICAg
ICBkZWxldGUgY29sdW1ucy5jYWxsczsKICAgICB9CiAKLSAgICB0aGlzLmRhdGFHcmlkID0gbmV3
IFdlYkluc3BlY3Rvci5EYXRhR3JpZChjb2x1bW5zKTsKKyAgICB0aGlzLmRhdGFHcmlkID0gbmV3
IFdlYkluc3BlY3Rvci5EYXRhR3JpZChjb2x1bW5zLCBuZXcgV2ViSW5zcGVjdG9yLkRhdGFHcmlk
Tm9kZSgpKTsKICAgICB0aGlzLmRhdGFHcmlkLmFkZEV2ZW50TGlzdGVuZXIoInNvcnRpbmcgY2hh
bmdlZCIsIHRoaXMuX3NvcnRQcm9maWxlLCB0aGlzKTsKICAgICB0aGlzLmRhdGFHcmlkLmVsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fbW91c2VEb3duSW5EYXRhR3Jp
ZC5iaW5kKHRoaXMpLCB0cnVlKTsKICAgICB0aGlzLmRhdGFHcmlkLnNob3codGhpcy5lbGVtZW50
KTsKQEAgLTE2MiwxMyArMTYyLDEzIEBAIFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVmlldy5wcm90
b3R5cGUgPSB7CiAgICAgewogICAgICAgICB2YXIgc2VsZWN0ZWRQcm9maWxlTm9kZSA9IHRoaXMu
ZGF0YUdyaWQuc2VsZWN0ZWROb2RlID8gdGhpcy5kYXRhR3JpZC5zZWxlY3RlZE5vZGUucHJvZmls
ZU5vZGUgOiBudWxsOwogCi0gICAgICAgIHRoaXMuZGF0YUdyaWQucmVtb3ZlQ2hpbGRyZW4oKTsK
KyAgICAgICAgdGhpcy5kYXRhR3JpZC5yb290Tm9kZSgpLnJlbW92ZUNoaWxkcmVuKCk7CiAKICAg
ICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5wcm9maWxlRGF0YUdyaWRUcmVlLmNoaWxkcmVuOwog
ICAgICAgICB2YXIgY291bnQgPSBjaGlsZHJlbi5sZW5ndGg7CiAKICAgICAgICAgZm9yICh2YXIg
aW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KQotICAgICAgICAgICAgdGhpcy5kYXRh
R3JpZC5hcHBlbmRDaGlsZChjaGlsZHJlbltpbmRleF0pOworICAgICAgICAgICAgdGhpcy5kYXRh
R3JpZC5yb290Tm9kZSgpLmFwcGVuZENoaWxkKGNoaWxkcmVuW2luZGV4XSk7CiAKICAgICAgICAg
aWYgKHNlbGVjdGVkUHJvZmlsZU5vZGUpCiAgICAgICAgICAgICBzZWxlY3RlZFByb2ZpbGVOb2Rl
LnNlbGVjdGVkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvdHJlZW91dGxpbmUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL3RyZWVvdXRsaW5lLmpzCmluZGV4IDZjZmJhMWMwODE0NzIyODA0NTY3NjQzNjM5NjE1ZjFl
YzM1ODAyYmEuLjczMDgwMGE4M2VjM2I3ZTg5ZmZmMTY1MzhlMWRjZmYxM2EwMTQ2MWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdHJlZW91dGxpbmUuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC90cmVlb3V0bGluZS5qcwpA
QCAtMTk1LDMzICsxOTUsNiBAQCBUcmVlT3V0bGluZS5wcm90b3R5cGUucmVtb3ZlQ2hpbGRyZW4g
PSBmdW5jdGlvbigpCiAgICAgdGhpcy5jaGlsZHJlbiA9IFtdOwogfQogCi1UcmVlT3V0bGluZS5w
cm90b3R5cGUucmVtb3ZlQ2hpbGRyZW5SZWN1cnNpdmUgPSBmdW5jdGlvbigpCi17Ci0gICAgdmFy
IGNoaWxkcmVuVG9SZW1vdmUgPSB0aGlzLmNoaWxkcmVuOwotCi0gICAgdmFyIGNoaWxkID0gdGhp
cy5jaGlsZHJlblswXTsKLSAgICB3aGlsZSAoY2hpbGQpIHsKLSAgICAgICAgaWYgKGNoaWxkLmNo
aWxkcmVuLmxlbmd0aCkKLSAgICAgICAgICAgIGNoaWxkcmVuVG9SZW1vdmUgPSBjaGlsZHJlblRv
UmVtb3ZlLmNvbmNhdChjaGlsZC5jaGlsZHJlbik7Ci0gICAgICAgIGNoaWxkID0gY2hpbGQudHJh
dmVyc2VOZXh0VHJlZUVsZW1lbnQoZmFsc2UsIHRoaXMsIHRydWUpOwotICAgIH0KLQotICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW5Ub1JlbW92ZS5sZW5ndGg7ICsraSkgewotICAgICAg
ICBjaGlsZCA9IGNoaWxkcmVuVG9SZW1vdmVbaV07Ci0gICAgICAgIGNoaWxkLmRlc2VsZWN0KCk7
Ci0gICAgICAgIGlmIChjaGlsZC50cmVlT3V0bGluZSkKLSAgICAgICAgICAgIGNoaWxkLnRyZWVP
dXRsaW5lLl9mb3JnZXRUcmVlRWxlbWVudChjaGlsZCk7Ci0gICAgICAgIGNoaWxkLl9kZXRhY2go
KTsKLSAgICAgICAgY2hpbGQuY2hpbGRyZW4gPSBbXTsKLSAgICAgICAgY2hpbGQudHJlZU91dGxp
bmUgPSBudWxsOwotICAgICAgICBjaGlsZC5wYXJlbnQgPSBudWxsOwotICAgICAgICBjaGlsZC5u
ZXh0U2libGluZyA9IG51bGw7Ci0gICAgICAgIGNoaWxkLnByZXZpb3VzU2libGluZyA9IG51bGw7
Ci0gICAgfQotCi0gICAgdGhpcy5jaGlsZHJlbiA9IFtdOwotfQotCiBUcmVlT3V0bGluZS5wcm90
b3R5cGUuX3JlbWVtYmVyVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihlbGVtZW50KQogewogICAgIGlm
ICghdGhpcy5fdHJlZUVsZW1lbnRzTWFwLmdldChlbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0KSkK
QEAgLTc3NSw3ICs3NDgsNiBAQCBUcmVlRWxlbWVudC5wcm90b3R5cGUuaW5zZXJ0Q2hpbGQgPSBU
cmVlT3V0bGluZS5wcm90b3R5cGUuaW5zZXJ0Q2hpbGQ7CiBUcmVlRWxlbWVudC5wcm90b3R5cGUu
cmVtb3ZlQ2hpbGQgPSBUcmVlT3V0bGluZS5wcm90b3R5cGUucmVtb3ZlQ2hpbGQ7CiBUcmVlRWxl
bWVudC5wcm90b3R5cGUucmVtb3ZlQ2hpbGRBdEluZGV4ID0gVHJlZU91dGxpbmUucHJvdG90eXBl
LnJlbW92ZUNoaWxkQXRJbmRleDsKIFRyZWVFbGVtZW50LnByb3RvdHlwZS5yZW1vdmVDaGlsZHJl
biA9IFRyZWVPdXRsaW5lLnByb3RvdHlwZS5yZW1vdmVDaGlsZHJlbjsKLVRyZWVFbGVtZW50LnBy
b3RvdHlwZS5yZW1vdmVDaGlsZHJlblJlY3Vyc2l2ZSA9IFRyZWVPdXRsaW5lLnByb3RvdHlwZS5y
ZW1vdmVDaGlsZHJlblJlY3Vyc2l2ZTsKIAogVHJlZUVsZW1lbnQucHJvdG90eXBlLl9hdHRhY2gg
PSBmdW5jdGlvbigpCiB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjQyMzk2OWZmZjYxMmNhNDFhMDU0YjY0YmI1YjA5NGNj
MTRmYzgyMS4uMTI2YmZiNDdjMDMzNGRjMmU4YjdkN2NmNWE5MmQxZjllZTU0MjU0MCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE3IEBACisyMDEyLTA0LTE4ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IERhdGFHcmlkIHNob3VsZCB1c2Ug
ZXhwbGljaXQgcm9vdCBub2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04NDI0MAorCisgICAgICAgIERhdGFHcmlkIG5vdyBoYXMgYW4gZXhwbGljaXQg
cm9vdCBub2RlLiBBbGwgY2hpbGRyZW4gYXJlIGFkZGVkL3JlbW92ZWQKKyAgICAgICAgdG8gdGhh
dCBub2RlLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtdGVzdC5qczoKKyAgICAgICAgKGlu
aXRpYWxpemVfSGVhcFNuYXBzaG90VGVzdCk6CisgICAgICAgICogaW5zcGVjdG9yL3N0b3JhZ2Ut
cGFuZWwtZG9tLXN0b3JhZ2UuaHRtbDoKKwogMjAxMi0wNC0xNyAgVGFrYXNoaSBUb3lvc2hpbWEg
IDx0b3lvc2hpbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmViYXNlbGlu
ZSBvZiBzdmcvVzNDLVNWRy0xLjEvbWFza2luZy1pbnRyby0wMS1mLnN2ZyAuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC10ZXN0LmpzIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtdGVzdC5qcwppbmRl
eCBjM2Y2YTAyMWVlZjJiMDk4YjM3NmY0MzM0NGYzOGU2NGM3MDhmY2JlLi5lZDhkYzRiNDRjY2U1
OGVhNDFmMWQwNjk0Yjk5ODg3MTUwYjI2YWJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9wcm9maWxlci9oZWFwLXNuYXBzaG90LXRlc3QuanMKQEAgLTM1MCw3ICszNTAsNyBA
QCBJbnNwZWN0b3JUZXN0LmNsaWNrU2hvd01vcmVCdXR0b24gPSBmdW5jdGlvbihidXR0b25OYW1l
LCByb3csIGNhbGxiYWNrKQogSW5zcGVjdG9yVGVzdC5jb2x1bW5Db250ZW50cyA9IGZ1bmN0aW9u
KGNvbHVtbiwgcm93KQogewogICAgIHZhciByZXN1bHQgPSBbXTsKLSAgICB2YXIgcGFyZW50ID0g
cm93IHx8IHRoaXMuX2N1cnJlbnRHcmlkKCk7CisgICAgdmFyIHBhcmVudCA9IHJvdyB8fCB0aGlz
Ll9jdXJyZW50R3JpZCgpLnJvb3ROb2RlKCk7CiAgICAgZm9yICh2YXIgbm9kZSA9IHBhcmVudC5j
aGlsZHJlblswXTsgbm9kZTsgbm9kZSA9IG5vZGUudHJhdmVyc2VOZXh0Tm9kZSh0cnVlLCBwYXJl
bnQsIHRydWUpKSB7CiAgICAgICAgIGlmICghbm9kZS5zZWxlY3RhYmxlKQogICAgICAgICAgICAg
Y29udGludWU7CkBAIC00NzYsNyArNDc2LDcgQEAgSW5zcGVjdG9yVGVzdC5maW5kQnV0dG9uc05v
ZGUgPSBmdW5jdGlvbihyb3csIHN0YXJ0Tm9kZSkKIAogSW5zcGVjdG9yVGVzdC5maW5kUm93ID0g
ZnVuY3Rpb24oY29sdW1uSWRlbnRpZmllciwgbWF0Y2hlciwgcGFyZW50KQogewotICAgIHBhcmVu
dCA9IHBhcmVudCB8fCB0aGlzLl9jdXJyZW50R3JpZCgpOworICAgIHBhcmVudCA9IHBhcmVudCB8
fCB0aGlzLl9jdXJyZW50R3JpZCgpLnJvb3ROb2RlKCk7CiAgICAgaWYgKHR5cGVvZiBtYXRjaGVy
ICE9PSAiZnVuY3Rpb24iKSB7CiAgICAgICAgIHZhciB2YWx1ZSA9IG1hdGNoZXI7CiAgICAgICAg
IG1hdGNoZXIgPSBmdW5jdGlvbih4KSB7IHJldHVybiB4ID09PSB2YWx1ZTsgfTsKQEAgLTQ5MCw3
ICs0OTAsNyBAQCBJbnNwZWN0b3JUZXN0LmZpbmRSb3cgPSBmdW5jdGlvbihjb2x1bW5JZGVudGlm
aWVyLCBtYXRjaGVyLCBwYXJlbnQpCiAKIEluc3BlY3RvclRlc3QuZmluZFJvdzIgPSBmdW5jdGlv
bihtYXRjaGVyLCBwYXJlbnQpCiB7Ci0gICAgcGFyZW50ID0gcGFyZW50IHx8IHRoaXMuX2N1cnJl
bnRHcmlkKCk7CisgICAgcGFyZW50ID0gcGFyZW50IHx8IHRoaXMuX2N1cnJlbnRHcmlkKCkucm9v
dE5vZGUoKTsKICAgICBmb3IgKHZhciBub2RlID0gcGFyZW50LmNoaWxkcmVuWzBdOyBub2RlOyBu
b2RlID0gbm9kZS50cmF2ZXJzZU5leHROb2RlKHRydWUsIHBhcmVudCwgdHJ1ZSkpIHsKICAgICAg
ICAgaWYgKG1hdGNoZXIobm9kZS5kYXRhKSkKICAgICAgICAgICAgIHJldHVybiBub2RlOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0b3JhZ2UtcGFuZWwtZG9tLXN0b3JhZ2Uu
aHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdG9yYWdlLXBhbmVsLWRvbS1zdG9yYWdlLmh0
bWwKaW5kZXggMzBlMThiNzNjM2I4NTZhZGE1ODYyODk1NzdhYWRjMDhmMzA1ZjgzYy4uYjVlNGRm
YTUyZjU4MTAyODYzMmZiYmUyNDE1ZWRkM2ZlMGUyMmZlZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3N0b3JhZ2UtcGFuZWwtZG9tLXN0b3JhZ2UuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3Ivc3RvcmFnZS1wYW5lbC1kb20tc3RvcmFnZS5odG1sCkBAIC0yOCw3ICsy
OCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgZnVuY3Rpb24gZHVtcERhdGFHcmlkQ29udGVu
dChkYXRhR3JpZCkKICAgICB7Ci0gICAgICAgIHZhciBub2RlcyA9IGRhdGFHcmlkLmNoaWxkcmVu
OworICAgICAgICB2YXIgbm9kZXMgPSBkYXRhR3JpZC5yb290Tm9kZSgpLmNoaWxkcmVuOwogICAg
ICAgICB2YXIgcm93cyA9IFtdOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxl
bmd0aDsgKytpKSB7CiAgICAgICAgICAgICB2YXIgbm9kZSA9IG5vZGVzW2ldOwo=
</data>
<flag name="review"
          id="142822"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>