<?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>128436</bug_id>
          
          <creation_ts>2014-02-07 19:39:15 -0800</creation_ts>
          <short_desc>Web Inspector: DataGrid header should be position:sticky instead of a separate table</short_desc>
          <delta_ts>2019-09-13 11:30:40 -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</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>128486</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>978261</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-02-07 19:39:15 -0800</bug_when>
    <thetext>This also means the table need not be fixed-layout. Whether this simplifies widths assignment remains to be seen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>978262</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-02-07 19:39:48 -0800</bug_when>
    <thetext>&lt;rdar://problem/16018605&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>978517</commentid>
    <comment_count>2</comment_count>
      <attachid>223606</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-02-08 21:03:05 -0800</bug_when>
    <thetext>Created attachment 223606
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>978518</commentid>
    <comment_count>3</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-02-08 21:06:05 -0800</bug_when>
    <thetext>It works, but is an effective style regression due to rendering bugs. Wait before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>978632</commentid>
    <comment_count>4</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-02-09 13:14:25 -0800</bug_when>
    <thetext>Sweet! What style regressions? I know there are a few other stylesheets that might use &quot;table.data&quot; in the selector — namely TimelineDataGrid.css. Should be easy to grep for.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>978938</commentid>
    <comment_count>5</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-02-10 10:00:08 -0800</bug_when>
    <thetext>Regression is being worked on here: https://bugs.webkit.org/show_bug.cgi?id=128486 Looks related to subpixel or position:sticky + tables.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026050</commentid>
    <comment_count>6</comment_count>
      <attachid>235838</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-07-31 13:19:51 -0700</bug_when>
    <thetext>Created attachment 235838
Patch

Rebased onto new directory structure. The visual glitches from before seem to be gone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026051</commentid>
    <comment_count>7</comment_count>
      <attachid>235838</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-07-31 13:30:05 -0700</bug_when>
    <thetext>Comment on attachment 235838
Patch

I do have concerns this might break selectors that style DataGrid. Does Timeline look as expected? Any other DataGrids? At least we had API for scrollContainer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1026134</commentid>
    <comment_count>8</comment_count>
      <attachid>235838</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-07-31 17:31:24 -0700</bug_when>
    <thetext>Comment on attachment 235838
Patch

I will double-check for style regressions tomorrow when I am physically sitting at the computer where I rebased this. I was mainly checking for the subpixel bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570643</commentid>
    <comment_count>9</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-09-13 11:30:40 -0700</bug_when>
    <thetext>This never landed. Should we close out the bug?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223606</attachid>
            <date>2014-02-08 21:03:05 -0800</date>
            <delta_ts>2014-07-31 13:19:48 -0700</delta_ts>
            <desc>patch</desc>
            <filename>bug-128436-20140208210305.patch</filename>
            <type>text/plain</type>
            <size>22483</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzNzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA3
YTYyNWNlYzI3ZDI4NDljOTk3YTVkMGY2ZjBjMTdkNzlmMTBkNWI3Li5kMzE0OGQ5NmZjOTIyNDll
ZTgwMmQyNjdiMjllZmRkOWFkYTY1MmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NyBAQAorMjAxNC0wMi0wOCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBEYXRhR3JpZCBoZWFkZXIgc2hvdWxkIGJlICdwb3NpdGlv
bjogc3RpY2t5JyBpbnN0ZWFkIG9mIGEgc2VwYXJhdGUgdGFibGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODQzNgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBkYXRhIGdyaWQgcHJldmlvdXNseSBo
YWQgdHdvIHRhYmxlczogb25lIHRoYXQgY29udGFpbmVkCisgICAgICAgIHJlc2l6YWJsZSBhbmQg
Y2xpY2thYmxlIGhlYWRlcnMgdGhhdCBkaWRuJ3Qgc2Nyb2xsLCBhbmQgb25lCisgICAgICAgIHdy
YXBwZWQgaW4gYSBzY3JvbGwgY29udGFpbmVyIHRoYXQgY291bGQgYmUgc2Nyb2xsZWQuIFRoaXMg
Y2FuIG5vdworICAgICAgICBiZSBpbXBsZW1lbnRlZCBtb3JlIHNpbXBseSBieSBwdXR0aW5nIHRo
ZSBoZWFkZXIgY2VsbHMgaW50byBhCisgICAgICAgICdwb3NpdGlvbjogLXdlYmtpdC1zdGlja3kn
IHRoZWFkIGVsZW1lbnQgYW5kIHVzaW5nIGEgc2luZ2xlIHRhYmxlLgorCisgICAgICAgICogVXNl
ckludGVyZmFjZS9EYXRhR3JpZC5jc3M6IE1ha2UgdGhlIHRvcC1sZXZlbCBkaXYgdGhlIHNjcm9s
bAorICAgICAgICBjb250YWluZXIuICBDb25zb2xpZGF0ZSBzdHlsZXMgdGhhdCB1c2VkIHRvIGJl
bG9uZyBvbiB0aGUgZGlzY3JldGUKKyAgICAgICAgc2Nyb2xsIGNvbnRhaW5lciBkaXYsIGFuZCBz
dHlsZXMgZHVwbGljYXRlZCBiZXR3ZWVuIHR3byB0YWJsZXMuCisKKyAgICAgICAgKC5kYXRhLWdy
aWQpOgorICAgICAgICAoLmRhdGEtZ3JpZCB0YWJsZSk6CisgICAgICAgICguZGF0YS1ncmlkIHRh
YmxlIHRoZWFkKToKKyAgICAgICAgKC5kYXRhLWdyaWQgdGFibGUuZGF0YSB0Ym9keSA+IHRyKToK
KworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvRGF0YUdyaWQuanM6IFJlbW92ZWQgdGhlIGR1cGxp
Y2F0ZSB0YWJsZSwgYW5kCisgICAgICAgIHJlbmFtZSBlbGVtZW50IHByb3BlcnRpZXMgYW5kIHZh
cmlhYmxlcyBub3cgdGhhdCB0aGV5IGRvbid0IG5lZWQKKyAgICAgICAgdG8gZGlzdGlndWlzaCBi
ZXR3ZWVuIHRoZSAnaGVhZGVyJyBhbmQgJ2RhdGEnIHRhYmxlcywgd2hpY2ggYXJlCisgICAgICAg
IG5vdyBvbmUgaW4gdGhlIHNhbWUuCisKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLnVwZGF0ZUxheW91dCk6
IFJld3JpdGUgdGhlIGlubmVyCisgICAgICAgIGxvb3AgdG8gdXNlIGZvci4ub2YgYW5kIGJlIGVh
c2llciB0byBmb2xsb3cuCisKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5
cGUuZ2V0IHNjcm9sbENvbnRhaW5lcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQu
cHJvdG90eXBlLmlzU2Nyb2xsZWRUb0xhc3RSb3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRh
dGFHcmlkLnByb3RvdHlwZS5zY3JvbGxUb0xhc3RSb3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkRhdGFHcmlkLnByb3RvdHlwZS5fcG9zaXRpb25SZXNpemVyRWxlbWVudHMpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5zb3J0Tm9kZXMpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5kYXRhR3JpZE5vZGVGcm9tUG9pbnQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5pc0NvbHVtblNvcnRDb2x1bW4p
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5oZWFkZXJUYWJsZUhl
YWRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLl9yZXNpemVy
RHJhZ2dpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUu
X2F0dGFjaCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9MYXllclRyZWVEYXRhR3JpZC5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5MYXllclRyZWVEYXRhR3JpZC5wcm90b3R5cGUuX3VwZGF0
ZUNoaWxkcmVuKToKKwogMjAxNC0wMi0wNyAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBzaG93IHByb2JlIHNldHMgZm9yIHNjcmlwdCBjb250
ZW50IHZpZXdzIGluIHRoZSBkZXRhaWxzIHNpZGViYXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0RhdGFHcmlkLmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0RhdGFHcmlkLmNzcwppbmRleCAwYTJlMjE5MDg4ODNmOGRlNzcw
ODc1OTIxNDdlYzZlMWI1MGVjNGMwLi5kN2ZiOGZmZDQwNjRmMjhlMDI2NGYzMWY3YjdmNmI4NWUz
YTI2NTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9E
YXRhR3JpZC5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRGF0
YUdyaWQuY3NzCkBAIC0yNyw2ICsyNyw4IEBACiAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAg
IGJvcmRlcjogMXB4IHNvbGlkICNhYWE7CiAgICAgb3V0bGluZTogbm9uZTsKKyAgICBvdmVyZmxv
dy14OiBoaWRkZW47CisgICAgb3ZlcmZsb3cteTogb3ZlcmxheTsKIH0KIAogLmRhdGEtZ3JpZCAu
aGlnaGxpZ2h0IHsKQEAgLTM4LDI3ICs0MCwzMiBAQAogfQogCiAuZGF0YS1ncmlkIHRhYmxlIHsK
KyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiAx
MDAlOwogICAgIHRhYmxlLWxheW91dDogZml4ZWQ7CisKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiAt
d2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsIHdoaXRlLCB3aGl0ZSA1MCUsIHJnYigyNDMsIDI0
NiwgMjUwKSA1MCUsIHJnYigyNDMsIDI0NiwgMjUwKSk7CisgICAgYmFja2dyb3VuZC1zaXplOiAx
MDAlIDMycHg7CisKKyAgICBib3JkZXItdG9wOiAwIG5vbmUgdHJhbnNwYXJlbnQ7CiAgICAgYm9y
ZGVyLXNwYWNpbmc6IDA7CiAgICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKLSAgICB3aWR0
aDogMTAwJTsKKwogICAgIGZvbnQtc2l6ZTogMTBweDsKICAgICBmb250LWZhbWlseTogTHVjaWRh
IEdyYW5kZSwgc2Fucy1zZXJpZjsKIH0KIAotLmRhdGEtZ3JpZCAuZGF0YS1jb250YWluZXIgewot
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IDE2cHg7Ci0gICAgYm90dG9tOiAwOwot
ICAgIGxlZnQ6IDA7Ci0gICAgcmlnaHQ6IDA7Ci0gICAgb3ZlcmZsb3cteDogaGlkZGVuOwotICAg
IG92ZXJmbG93LXk6IG92ZXJsYXk7CisuZGF0YS1ncmlkIHRhYmxlIHRoZWFkIHsKKyAgICBwb3Np
dGlvbjogLXdlYmtpdC1zdGlja3k7CisgICAgdG9wOiAwcHg7CiB9CiAKLS5kYXRhLWdyaWQuaW5s
aW5lIC5kYXRhLWNvbnRhaW5lciB7Ci0gICAgcG9zaXRpb246IHN0YXRpYzsKLX0KKy8qCisuZGF0
YS1ncmlkIHRoZWFkIHsKKyAgICBwb3NpdGlvbjogLXdlYmtpdC1zdGlja3k7CisgICAgdG9wOiAw
OworfSovCiAKIC5kYXRhLWdyaWQuaW5saW5lIHsKICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2Io
MTgxLCAxODEsIDE4MSk7CkBAIC02OCwxMCArNzUsNiBAQAogICAgIGRpc3BsYXk6IG5vbmU7CiB9
CiAKLS5kYXRhLWdyaWQubm8taGVhZGVyIC5kYXRhLWNvbnRhaW5lciB7Ci0gICAgdG9wOiAwOwot
fQotCiAuZGF0YS1ncmlkIHRoIHsKICAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgIHZlcnRpY2Fs
LWFsaWduOiBtaWRkbGU7CkBAIC0xMTgsMjQgKzEyMSwxMSBAQAogICAgIHBhZGRpbmc6IDAgIWlt
cG9ydGFudDsKIH0KIAotLmRhdGEtZ3JpZCB0YWJsZS5kYXRhIHsKLSAgICBwb3NpdGlvbjogYWJz
b2x1dGU7Ci0gICAgbGVmdDogMDsKLSAgICB0b3A6IDA7Ci0gICAgcmlnaHQ6IDA7Ci0gICAgYm90
dG9tOiAwOwotICAgIGhlaWdodDogMTAwJTsKLSAgICBib3JkZXItdG9wOiAwIG5vbmUgdHJhbnNw
YXJlbnQ7Ci0gICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9w
LCB3aGl0ZSwgd2hpdGUgNTAlLCByZ2IoMjQzLCAyNDYsIDI1MCkgNTAlLCByZ2IoMjQzLCAyNDYs
IDI1MCkpOwotICAgIGJhY2tncm91bmQtc2l6ZTogMTAwJSAzMnB4OwotICAgIHRhYmxlLWxheW91
dDogZml4ZWQ7Ci19Ci0KIC5kYXRhLWdyaWQuaW5saW5lIHRhYmxlLmRhdGEgewogICAgIHBvc2l0
aW9uOiBzdGF0aWM7CiB9CiAKLS5kYXRhLWdyaWQgdGFibGUuZGF0YSB0ciB7CisuZGF0YS1ncmlk
IHRhYmxlLmRhdGEgdGJvZHkgPiB0ciB7CiAgICAgZGlzcGxheTogbm9uZTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRGF0YUdyaWQuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9EYXRhR3JpZC5qcwppbmRleCAxZmVj
YmI1MmU2NzU5NjFhZTNlNGUyZTA2MzlhOTQzZDgxMTU0OWEyLi44MDlmZWI5NzJhNjRkY2EwNWU3
MzE5ODkyMTY1MDViNDQxOWNhMjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9EYXRhR3JpZC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9EYXRhR3JpZC5qcwpAQCAtNDcsNDMgKzQ3LDMyIEBAIFdlYkluc3BlY3Rvci5E
YXRhR3JpZCA9IGZ1bmN0aW9uKGNvbHVtbnNEYXRhLCBlZGl0Q2FsbGJhY2ssIGRlbGV0ZUNhbGxi
YWNrKQogICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhpcy5f
a2V5RG93bi5iaW5kKHRoaXMpLCBmYWxzZSk7CiAgICAgdGhpcy5lbGVtZW50LmNvcHlIYW5kbGVy
ID0gdGhpczsKIAotICAgIHRoaXMuX2hlYWRlclRhYmxlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoInRhYmxlIik7Ci0gICAgdGhpcy5faGVhZGVyVGFibGVFbGVtZW50LmNsYXNzTmFt
ZSA9ICJoZWFkZXIiOwotICAgIHRoaXMuX2hlYWRlclRhYmxlQ29sdW1uR3JvdXBFbGVtZW50ID0g
dGhpcy5faGVhZGVyVGFibGVFbGVtZW50LmNyZWF0ZUNoaWxkKCJjb2xncm91cCIpOwotICAgIHRo
aXMuX2hlYWRlclRhYmxlQm9keUVsZW1lbnQgPSB0aGlzLl9oZWFkZXJUYWJsZUVsZW1lbnQuY3Jl
YXRlQ2hpbGQoInRib2R5Iik7Ci0gICAgdGhpcy5faGVhZGVyVGFibGVSb3dFbGVtZW50ID0gdGhp
cy5faGVhZGVyVGFibGVCb2R5RWxlbWVudC5jcmVhdGVDaGlsZCgidHIiKTsKLSAgICB0aGlzLl9o
ZWFkZXJUYWJsZUNlbGxFbGVtZW50cyA9IG5ldyBNYXA7CisgICAgdGhpcy5fdGFibGVFbGVtZW50
ID0gdGhpcy5lbGVtZW50LmNyZWF0ZUNoaWxkKCJ0YWJsZSIpOworICAgIHRoaXMuX3RhYmxlRWxl
bWVudC5jbGFzc05hbWUgPSAiZGF0YSI7CiAKLSAgICB0aGlzLl9zY3JvbGxDb250YWluZXJFbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fc2Nyb2xsQ29u
dGFpbmVyRWxlbWVudC5jbGFzc05hbWUgPSAiZGF0YS1jb250YWluZXIiOworICAgIHRoaXMuX3Rh
YmxlQ29sdW1uR3JvdXBFbGVtZW50ID0gdGhpcy5fdGFibGVFbGVtZW50LmNyZWF0ZUNoaWxkKCJj
b2xncm91cCIpOworICAgIHRoaXMuX3RhYmxlSGVhZGVyRWxlbWVudCA9IHRoaXMuX3RhYmxlRWxl
bWVudC5jcmVhdGVDaGlsZCgidGhlYWQiKTsKKyAgICB0aGlzLl90YWJsZUhlYWRlclJvd0VsZW1l
bnQgPSB0aGlzLl90YWJsZUhlYWRlckVsZW1lbnQuY3JlYXRlQ2hpbGQoInRyIik7CisgICAgdGhp
cy5fdGFibGVIZWFkZXJDZWxsRWxlbWVudHMgPSBuZXcgTWFwOwogCi0gICAgdGhpcy5fZGF0YVRh
YmxlRWxlbWVudCA9IHRoaXMuX3Njcm9sbENvbnRhaW5lckVsZW1lbnQuY3JlYXRlQ2hpbGQoInRh
YmxlIik7Ci0gICAgdGhpcy5fZGF0YVRhYmxlRWxlbWVudC5jbGFzc05hbWUgPSAiZGF0YSI7Ci0K
LSAgICB0aGlzLl9kYXRhVGFibGVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIs
IHRoaXMuX21vdXNlRG93bkluRGF0YVRhYmxlLmJpbmQodGhpcykpOwotICAgIHRoaXMuX2RhdGFU
YWJsZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9jbGlja0luRGF0YVRh
YmxlLmJpbmQodGhpcykpOwotICAgIHRoaXMuX2RhdGFUYWJsZUVsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigiY29udGV4dG1lbnUiLCB0aGlzLl9jb250ZXh0TWVudUluRGF0YVRhYmxlLmJpbmQodGhp
cyksIHRydWUpOworICAgIHRoaXMuX3RhYmxlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3Vz
ZWRvd24iLCB0aGlzLl9tb3VzZURvd25JbkRhdGFUYWJsZS5iaW5kKHRoaXMpKTsKKyAgICB0aGlz
Ll90YWJsZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9jbGlja0luRGF0
YVRhYmxlLmJpbmQodGhpcykpOworICAgIHRoaXMuX3RhYmxlRWxlbWVudC5hZGRFdmVudExpc3Rl
bmVyKCJjb250ZXh0bWVudSIsIHRoaXMuX2NvbnRleHRNZW51SW5EYXRhVGFibGUuYmluZCh0aGlz
KSwgdHJ1ZSk7CiAKICAgICAvLyBGSVhNRTogQWRkIGEgY3JlYXRlQ2FsbGJhY2sgd2hpY2ggaXMg
ZGlmZmVyZW50IGZyb20gZWRpdENhbGxiYWNrIGFuZCBoYXMgZGlmZmVyZW50CiAgICAgLy8gYmVo
YXZpb3Igd2hlbiBjcmVhdGluZyBhIG5ldyBub2RlLgogICAgIGlmIChlZGl0Q2FsbGJhY2spIHsK
LSAgICAgICAgdGhpcy5fZGF0YVRhYmxlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJkYmxjbGlj
ayIsIHRoaXMuX29uZGJsY2xpY2suYmluZCh0aGlzKSwgZmFsc2UpOworICAgICAgICB0aGlzLl90
YWJsZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZGJsY2xpY2siLCB0aGlzLl9vbmRibGNsaWNr
LmJpbmQodGhpcyksIGZhbHNlKTsKICAgICAgICAgdGhpcy5fZWRpdENhbGxiYWNrID0gZWRpdENh
bGxiYWNrOwogICAgIH0KICAgICBpZiAoZGVsZXRlQ2FsbGJhY2spCiAgICAgICAgIHRoaXMuX2Rl
bGV0ZUNhbGxiYWNrID0gZGVsZXRlQ2FsbGJhY2s7CiAKLSAgICB0aGlzLl9kYXRhVGFibGVDb2x1
bW5Hcm91cEVsZW1lbnQgPSB0aGlzLl9oZWFkZXJUYWJsZUNvbHVtbkdyb3VwRWxlbWVudC5jbG9u
ZU5vZGUodHJ1ZSk7Ci0gICAgdGhpcy5fZGF0YVRhYmxlRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlz
Ll9kYXRhVGFibGVDb2x1bW5Hcm91cEVsZW1lbnQpOwotCiAgICAgLy8gVGhpcyBlbGVtZW50IGlz
IHVzZWQgYnkgRGF0YUdyaWROb2RlcyB0byBtYW5pcHVsYXRlIHRhYmxlIHJvd3MgYW5kIGNlbGxz
LgotICAgIHRoaXMuZGF0YVRhYmxlQm9keUVsZW1lbnQgPSB0aGlzLl9kYXRhVGFibGVFbGVtZW50
LmNyZWF0ZUNoaWxkKCJ0Ym9keSIpOwotICAgIHRoaXMuX2ZpbGxlclJvd0VsZW1lbnQgPSB0aGlz
LmRhdGFUYWJsZUJvZHlFbGVtZW50LmNyZWF0ZUNoaWxkKCJ0ciIpOworICAgIHRoaXMudGFibGVC
b2R5RWxlbWVudCA9IHRoaXMuX3RhYmxlRWxlbWVudC5jcmVhdGVDaGlsZCgidGJvZHkiKTsKKyAg
ICB0aGlzLl9maWxsZXJSb3dFbGVtZW50ID0gdGhpcy50YWJsZUJvZHlFbGVtZW50LmNyZWF0ZUNo
aWxkKCJ0ciIpOwogICAgIHRoaXMuX2ZpbGxlclJvd0VsZW1lbnQuY2xhc3NOYW1lID0gImZpbGxl
ciI7CiAKLSAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5faGVhZGVyVGFibGVFbGVt
ZW50KTsKLSAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fc2Nyb2xsQ29udGFpbmVy
RWxlbWVudCk7Ci0KICAgICBmb3IgKHZhciBjb2x1bW5JZGVudGlmaWVyIGluIGNvbHVtbnNEYXRh
KQogICAgICAgICB0aGlzLmluc2VydENvbHVtbihjb2x1bW5JZGVudGlmaWVyLCBjb2x1bW5zRGF0
YVtjb2x1bW5JZGVudGlmaWVyXSk7CiAKQEAgLTQwOSwyMSArMzk4LDIxIEBAIFdlYkluc3BlY3Rv
ci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmIChjb2x1bW4uaGFzKCJkaXNjbG9z
dXJlIikpCiAgICAgICAgICAgICB0aGlzLmRpc2Nsb3N1cmVDb2x1bW5JZGVudGlmaWVyID0gY29s
dW1uSWRlbnRpZmllcjsKIAotICAgICAgICB2YXIgaGVhZGVyQ29sdW1uRWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImNvbCIpOworICAgICAgICB2YXIgY29sdW1uRWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImNvbCIpOwogICAgICAgICBpZiAoY29sdW1uLmhhcygid2lk
dGgiKSkKLSAgICAgICAgICAgIGhlYWRlckNvbHVtbkVsZW1lbnQuc3R5bGUud2lkdGggPSBjb2x1
bW4uZ2V0KCJ3aWR0aCIpOwotICAgICAgICBjb2x1bW4uc2V0KCJlbGVtZW50IiwgaGVhZGVyQ29s
dW1uRWxlbWVudCk7Ci0gICAgICAgIHZhciByZWZlcmVuY2VFbGVtZW50ID0gdGhpcy5faGVhZGVy
VGFibGVDb2x1bW5Hcm91cEVsZW1lbnQuY2hpbGRyZW5baW5zZXJ0aW9uSW5kZXhdOwotICAgICAg
ICB0aGlzLl9oZWFkZXJUYWJsZUNvbHVtbkdyb3VwRWxlbWVudC5pbnNlcnRCZWZvcmUoaGVhZGVy
Q29sdW1uRWxlbWVudCwgcmVmZXJlbmNlRWxlbWVudCk7CisgICAgICAgICAgICBjb2x1bW5FbGVt
ZW50LnN0eWxlLndpZHRoID0gY29sdW1uLmdldCgid2lkdGgiKTsKKyAgICAgICAgY29sdW1uLnNl
dCgiZWxlbWVudCIsIGNvbHVtbkVsZW1lbnQpOworICAgICAgICB2YXIgcmVmZXJlbmNlRWxlbWVu
dCA9IHRoaXMuX3RhYmxlQ29sdW1uR3JvdXBFbGVtZW50LmNoaWxkcmVuW2luc2VydGlvbkluZGV4
XTsKKyAgICAgICAgdGhpcy5fdGFibGVDb2x1bW5Hcm91cEVsZW1lbnQuaW5zZXJ0QmVmb3JlKGNv
bHVtbkVsZW1lbnQsIHJlZmVyZW5jZUVsZW1lbnQpOwogCiAgICAgICAgIHZhciBoZWFkZXJDZWxs
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRoIik7CiAgICAgICAgIGhlYWRlckNl
bGxFbGVtZW50LmNsYXNzTmFtZSA9IGNvbHVtbklkZW50aWZpZXIgKyAiLWNvbHVtbiI7CiAgICAg
ICAgIGhlYWRlckNlbGxFbGVtZW50LmNvbHVtbklkZW50aWZpZXIgPSBjb2x1bW5JZGVudGlmaWVy
OwogICAgICAgICBpZiAoY29sdW1uLmhhcygiYWxpZ25lZCIpKQogICAgICAgICAgICAgaGVhZGVy
Q2VsbEVsZW1lbnQuY2xhc3NMaXN0LmFkZChjb2x1bW4uZ2V0KCJhbGlnbmVkIikpOwotICAgICAg
ICB0aGlzLl9oZWFkZXJUYWJsZUNlbGxFbGVtZW50cy5zZXQoY29sdW1uSWRlbnRpZmllciwgaGVh
ZGVyQ2VsbEVsZW1lbnQpOwotICAgICAgICB2YXIgcmVmZXJlbmNlRWxlbWVudCA9IHRoaXMuX2hl
YWRlclRhYmxlUm93RWxlbWVudC5jaGlsZHJlbltpbnNlcnRpb25JbmRleF07Ci0gICAgICAgIHRo
aXMuX2hlYWRlclRhYmxlUm93RWxlbWVudC5pbnNlcnRCZWZvcmUoaGVhZGVyQ2VsbEVsZW1lbnQs
IHJlZmVyZW5jZUVsZW1lbnQpOworICAgICAgICB0aGlzLl90YWJsZUhlYWRlckNlbGxFbGVtZW50
cy5zZXQoY29sdW1uSWRlbnRpZmllciwgaGVhZGVyQ2VsbEVsZW1lbnQpOworICAgICAgICB2YXIg
cmVmZXJlbmNlRWxlbWVudCA9IHRoaXMuX3RhYmxlSGVhZGVyUm93RWxlbWVudC5jaGlsZHJlbltp
bnNlcnRpb25JbmRleF07CisgICAgICAgIHRoaXMuX3RhYmxlSGVhZGVyUm93RWxlbWVudC5pbnNl
cnRCZWZvcmUoaGVhZGVyQ2VsbEVsZW1lbnQsIHJlZmVyZW5jZUVsZW1lbnQpOwogCiAgICAgICAg
IHZhciBkaXYgPSBoZWFkZXJDZWxsRWxlbWVudC5jcmVhdGVDaGlsZCgiZGl2Iik7CiAgICAgICAg
IGlmIChjb2x1bW4uaGFzKCJ0aXRsZURPTUZyYWdtZW50IikpCkBAIC00NjEsMTIgKzQ1MCw3IEBA
IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBoZWFkZXJD
ZWxsRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjb2xsYXBzZXIiKTsKICAgICAgICAgfQogCi0gICAg
ICAgIHRoaXMuX2hlYWRlclRhYmxlQ29sdW1uR3JvdXBFbGVtZW50LnNwYW4gPSB0aGlzLm9yZGVy
ZWRDb2x1bW5zLmxlbmd0aDsKLQotICAgICAgICB2YXIgZGF0YUNvbHVtbkVsZW1lbnQgPSBoZWFk
ZXJDb2x1bW5FbGVtZW50LmNsb25lTm9kZSgpOwotICAgICAgICB2YXIgcmVmZXJlbmNlRWxlbWVu
dCA9IHRoaXMuX2RhdGFUYWJsZUNvbHVtbkdyb3VwRWxlbWVudC5jaGlsZHJlbltpbnNlcnRpb25J
bmRleF07Ci0gICAgICAgIHRoaXMuX2RhdGFUYWJsZUNvbHVtbkdyb3VwRWxlbWVudC5pbnNlcnRC
ZWZvcmUoZGF0YUNvbHVtbkVsZW1lbnQsIHJlZmVyZW5jZUVsZW1lbnQpOwotICAgICAgICBjb2x1
bW4uc2V0KCJib2R5RWxlbWVudCIsIGRhdGFDb2x1bW5FbGVtZW50KTsKKyAgICAgICAgdGhpcy5f
dGFibGVDb2x1bW5Hcm91cEVsZW1lbnQuc3BhbiA9IHRoaXMub3JkZXJlZENvbHVtbnMubGVuZ3Ro
OwogCiAgICAgICAgIHZhciBmaWxsZXJDZWxsRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoInRkIik7CiAgICAgICAgIGZpbGxlckNlbGxFbGVtZW50LmNsYXNzTmFtZSA9IGNvbHVtbklk
ZW50aWZpZXIgKyAiLWNvbHVtbiI7CkBAIC01MDQsMTMgKzQ4OCwxMiBAQCBXZWJJbnNwZWN0b3Iu
RGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICBpZiAocmVtb3ZlZENvbHVtbi5oYXMoInNv
cnQiKSkKICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9zb3J0Q29sdW1uQ2VsbDsKIAotICAgICAg
ICB0aGlzLl9oZWFkZXJUYWJsZUNlbGxFbGVtZW50cy5kZWxldGUoY29sdW1uSWRlbnRpZmllcik7
Ci0gICAgICAgIHRoaXMuX2hlYWRlclRhYmxlUm93RWxlbWVudC5jaGlsZHJlbltyZW1vdmVkT3Jk
aW5hbF0ucmVtb3ZlKCk7Ci0gICAgICAgIHRoaXMuX2hlYWRlclRhYmxlQ29sdW1uR3JvdXBFbGVt
ZW50LmNoaWxkcmVuW3JlbW92ZWRPcmRpbmFsXS5yZW1vdmUoKTsKLSAgICAgICAgdGhpcy5fZGF0
YVRhYmxlQ29sdW1uR3JvdXBFbGVtZW50LmNoaWxkcmVuW3JlbW92ZWRPcmRpbmFsXS5yZW1vdmUo
KTsKKyAgICAgICAgdGhpcy5fdGFibGVIZWFkZXJDZWxsRWxlbWVudHMuZGVsZXRlKGNvbHVtbklk
ZW50aWZpZXIpOworICAgICAgICB0aGlzLl90YWJsZUhlYWRlclJvd0VsZW1lbnQuY2hpbGRyZW5b
cmVtb3ZlZE9yZGluYWxdLnJlbW92ZSgpOworICAgICAgICB0aGlzLl90YWJsZUNvbHVtbkdyb3Vw
RWxlbWVudC5jaGlsZHJlbltyZW1vdmVkT3JkaW5hbF0ucmVtb3ZlKCk7CiAgICAgICAgIHRoaXMu
X2ZpbGxlclJvd0VsZW1lbnQuY2hpbGRyZW5bcmVtb3ZlZE9yZGluYWxdLnJlbW92ZSgpOwogCi0g
ICAgICAgIHRoaXMuX2hlYWRlclRhYmxlQ29sdW1uR3JvdXBFbGVtZW50LnNwYW4gPSB0aGlzLm9y
ZGVyZWRDb2x1bW5zLmxlbmd0aDsKKyAgICAgICAgdGhpcy5fdGFibGVDb2x1bW5Hcm91cEVsZW1l
bnQuc3BhbiA9IHRoaXMub3JkZXJlZENvbHVtbnMubGVuZ3RoOwogCiAgICAgICAgIGZvciAodmFy
IGNoaWxkIG9mIHRoaXMuY2hpbGRyZW4pCiAgICAgICAgICAgICBjaGlsZC5yZWZyZXNoKCk7CkBA
IC01MzksMjYgKzUyMiwyNCBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewog
ICAgIC8vIHBhcmVudCBlbGVtZW50LCB0aGVuIHRoZSBEYXRhR3JpZCdzIGNvbHVtbnMgd2lsbCBu
b3QgYmUgcmVzaXphYmxlLgogICAgIHVwZGF0ZUxheW91dDogZnVuY3Rpb24oKQogICAgIHsKLSAg
ICAgICAgLy8gRG8gbm90IGF0dGVtcHQgdG8gdXNlIG9mZnNldGVzIGlmIHdlJ3JlIG5vdCBhdHRh
Y2hlZCB0byB0aGUgZG9jdW1lbnQgdHJlZSB5ZXQuCisgICAgICAgIC8vIERvIG5vdCBhdHRlbXB0
IHRvIHVzZSBvZmZzZXRzIGlmIHdlJ3JlIG5vdCBhdHRhY2hlZCB0byB0aGUgZG9jdW1lbnQgdHJl
ZSB5ZXQuCiAgICAgICAgIGlmICghdGhpcy5fY29sdW1uV2lkdGhzSW5pdGlhbGl6ZWQgJiYgdGhp
cy5lbGVtZW50Lm9mZnNldFdpZHRoKSB7CiAgICAgICAgICAgICAvLyBHaXZlIGFsbCB0aGUgY29s
dW1ucyBpbml0aWFsIHdpZHRocyBub3cgc28gdGhhdCBkdXJpbmcgYSByZXNpemUsCiAgICAgICAg
ICAgICAvLyB3aGVuIHRoZSB0d28gY29sdW1ucyB0aGF0IGdldCByZXNpemVkIGdldCBhIHBlcmNl
bnQgdmFsdWUgZm9yCiAgICAgICAgICAgICAvLyB0aGVpciB3aWR0aHMsIGFsbCB0aGUgb3RoZXIg
Y29sdW1ucyBhbHJlYWR5IGhhdmUgcGVyY2VudCB2YWx1ZXMKICAgICAgICAgICAgIC8vIGZvciB0
aGVpciB3aWR0aHMuCi0gICAgICAgICAgICB2YXIgaGVhZGVyVGFibGVDb2x1bW5FbGVtZW50cyA9
IHRoaXMuX2hlYWRlclRhYmxlQ29sdW1uR3JvdXBFbGVtZW50LmNoaWxkcmVuOwotICAgICAgICAg
ICAgdmFyIHRhYmxlV2lkdGggPSB0aGlzLl9kYXRhVGFibGVFbGVtZW50Lm9mZnNldFdpZHRoOwot
ICAgICAgICAgICAgdmFyIG51bUNvbHVtbnMgPSBoZWFkZXJUYWJsZUNvbHVtbkVsZW1lbnRzLmxl
bmd0aDsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtQ29sdW1uczsgaSsrKSB7
Ci0gICAgICAgICAgICAgICAgdmFyIGhlYWRlckNlbGxFbGVtZW50ID0gdGhpcy5faGVhZGVyVGFi
bGVCb2R5RWxlbWVudC5yb3dzWzBdLmNlbGxzW2ldCi0gICAgICAgICAgICAgICAgaWYgKHRoaXMu
X2lzQ29sdW1uVmlzaWJsZShoZWFkZXJDZWxsRWxlbWVudC5jb2x1bW5JZGVudGlmaWVyKSkgewot
ICAgICAgICAgICAgICAgICAgICB2YXIgY29sdW1uV2lkdGggPSBoZWFkZXJDZWxsRWxlbWVudC5v
ZmZzZXRXaWR0aDsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHBlcmNlbnRXaWR0aCA9ICgoY29s
dW1uV2lkdGggLyB0YWJsZVdpZHRoKSAqIDEwMCkgKyAiJSI7Ci0gICAgICAgICAgICAgICAgICAg
IHRoaXMuX2hlYWRlclRhYmxlQ29sdW1uR3JvdXBFbGVtZW50LmNoaWxkcmVuW2ldLnN0eWxlLndp
ZHRoID0gcGVyY2VudFdpZHRoOwotICAgICAgICAgICAgICAgICAgICB0aGlzLl9kYXRhVGFibGVD
b2x1bW5Hcm91cEVsZW1lbnQuY2hpbGRyZW5baV0uc3R5bGUud2lkdGggPSBwZXJjZW50V2lkdGg7
Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5faGVh
ZGVyVGFibGVDb2x1bW5Hcm91cEVsZW1lbnQuY2hpbGRyZW5baV0uc3R5bGUud2lkdGggPSAwOwot
ICAgICAgICAgICAgICAgICAgICB0aGlzLl9kYXRhVGFibGVDb2x1bW5Hcm91cEVsZW1lbnQuY2hp
bGRyZW5baV0uc3R5bGUud2lkdGggPSAwOworICAgICAgICAgICAgdmFyIHRhYmxlVXNlZFdpZHRo
ID0gdGhpcy5fdGFibGVFbGVtZW50Lm9mZnNldFdpZHRoOworICAgICAgICAgICAgZm9yICh2YXIg
W2lkZW50aWZpZXIsIGNvbHVtbl0gb2YgdGhpcy5jb2x1bW5zKSB7CisgICAgICAgICAgICAgICAg
dmFyIGhlYWRlckNlbGxFbGVtZW50ID0gdGhpcy5fdGFibGVIZWFkZXJDZWxsRWxlbWVudHMuZ2V0
KGlkZW50aWZpZXIpOworICAgICAgICAgICAgICAgIHZhciBjb2x1bW5FbGVtZW50ID0gdGhpcy5f
dGFibGVDb2x1bW5Hcm91cEVsZW1lbnQuY2hpbGRyZW5bY29sdW1uLmdldCgib3JkaW5hbCIpXTsK
KyAgICAgICAgICAgICAgICB2YXIgY29sdW1uV2lkdGggPSAwOworCisgICAgICAgICAgICAgICAg
aWYgKHRoaXMuX2lzQ29sdW1uVmlzaWJsZShpZGVudGlmaWVyKSkgeworICAgICAgICAgICAgICAg
ICAgICB2YXIgY29sdW1uSGVhZGVyVXNlZFdpZHRoID0gaGVhZGVyQ2VsbEVsZW1lbnQub2Zmc2V0
V2lkdGg7CisgICAgICAgICAgICAgICAgICAgIGNvbHVtbldpZHRoID0gKChjb2x1bW5IZWFkZXJV
c2VkV2lkdGggLyB0YWJsZVVzZWRXaWR0aCkgKiAxMDApICsgIiUiOwogICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgIGNvbHVtbkVsZW1lbnQuc3R5bGUud2lkdGggPSBjb2x1bW5X
aWR0aDsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgdGhpcy5fY29sdW1uV2lkdGhzSW5p
dGlhbGl6ZWQgPSB0cnVlOwpAQCAtNTcyLDcgKzU1Myw3IEBAIFdlYkluc3BlY3Rvci5EYXRhR3Jp
ZC5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICB2YXIgcmVzdWx0ID0ge307CiAgICAgICAg
IGZvciAodmFyIFtpZGVudGlmaWVyLCBjb2x1bW5dIG9mIHRoaXMuY29sdW1ucykgewotICAgICAg
ICAgICAgdmFyIHdpZHRoID0gdGhpcy5faGVhZGVyVGFibGVDb2x1bW5Hcm91cEVsZW1lbnQuY2hp
bGRyZW5bY29sdW1uLmdldCgib3JkaW5hbCIpXS5zdHlsZS53aWR0aDsKKyAgICAgICAgICAgIHZh
ciB3aWR0aCA9IHRoaXMuX3RhYmxlQ29sdW1uR3JvdXBFbGVtZW50LmNoaWxkcmVuW2NvbHVtbi5n
ZXQoIm9yZGluYWwiKV0uc3R5bGUud2lkdGg7CiAgICAgICAgICAgICByZXN1bHRbY29sdW1uSWRl
bnRpZmllcl0gPSBwYXJzZUZsb2F0KHdpZHRoKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4g
cmVzdWx0OwpAQCAtNTgzLDggKzU2NCw4IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5
cGUgPSB7CiAgICAgICAgIGZvciAodmFyIFtpZGVudGlmaWVyLCBjb2x1bW5dIG9mIHRoaXMuY29s
dW1ucykgewogICAgICAgICAgICAgdmFyIHdpZHRoID0gKGNvbHVtbldpZHRoc01hcFtpZGVudGlm
aWVyXSB8fCAwKSArICIlIjsKICAgICAgICAgICAgIHZhciBvcmRpbmFsID0gY29sdW1uLmdldCgi
b3JkaW5hbCIpOwotICAgICAgICAgICAgdGhpcy5faGVhZGVyVGFibGVDb2x1bW5Hcm91cEVsZW1l
bnQuY2hpbGRyZW5bb3JkaW5hbF0uc3R5bGUud2lkdGggPSB3aWR0aDsKLSAgICAgICAgICAgIHRo
aXMuX2RhdGFUYWJsZUNvbHVtbkdyb3VwRWxlbWVudC5jaGlsZHJlbltvcmRpbmFsXS5zdHlsZS53
aWR0aCA9IHdpZHRoOworICAgICAgICAgICAgdGhpcy5fdGFibGVDb2x1bW5Hcm91cEVsZW1lbnQu
Y2hpbGRyZW5bb3JkaW5hbF0uc3R5bGUud2lkdGggPSB3aWR0aDsKKyAgICAgICAgICAgIHRoaXMu
X3RhYmxlQ29sdW1uR3JvdXBFbGVtZW50LmNoaWxkcmVuW29yZGluYWxdLnN0eWxlLndpZHRoID0g
d2lkdGg7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpOwpAQCAtNjEz
LDE3ICs1OTQsMTcgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKIAogICAg
IGdldCBzY3JvbGxDb250YWluZXIoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3Njcm9s
bENvbnRhaW5lckVsZW1lbnQ7CisgICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQ7CiAgICAgfSwK
IAogICAgIGlzU2Nyb2xsZWRUb0xhc3RSb3c6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLl9zY3JvbGxDb250YWluZXJFbGVtZW50LmlzU2Nyb2xsZWRUb0JvdHRvbSgpOwor
ICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50LmlzU2Nyb2xsZWRUb0JvdHRvbSgpOwogICAgIH0s
CiAKICAgICBzY3JvbGxUb0xhc3RSb3c6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMu
X3Njcm9sbENvbnRhaW5lckVsZW1lbnQuc2Nyb2xsVG9wID0gdGhpcy5fc2Nyb2xsQ29udGFpbmVy
RWxlbWVudC5zY3JvbGxIZWlnaHQgLSB0aGlzLl9zY3JvbGxDb250YWluZXJFbGVtZW50Lm9mZnNl
dEhlaWdodDsKKyAgICAgICAgdGhpcy5lbGVtZW50LnNjcm9sbFRvcCA9IHRoaXMuZWxlbWVudC5z
Y3JvbGxIZWlnaHQgLSB0aGlzLmVsZW1lbnQub2Zmc2V0SGVpZ2h0OwogICAgIH0sCiAKICAgICBf
cG9zaXRpb25SZXNpemVyRWxlbWVudHM6IGZ1bmN0aW9uKCkKQEAgLTY0OSw3ICs2MzAsNyBAQCBX
ZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICAgICAgLy8gR2V0IHRo
ZSB3aWR0aCBvZiB0aGUgY2VsbCBpbiB0aGUgZmlyc3QgKGFuZCBvbmx5KSByb3cgb2YgdGhlCiAg
ICAgICAgICAgICAvLyBoZWFkZXIgdGFibGUgaW4gb3JkZXIgdG8gZGV0ZXJtaW5lIHRoZSB3aWR0
aCBvZiB0aGUgY29sdW1uLCBzaW5jZQogICAgICAgICAgICAgLy8gaXQgaXMgbm90IHBvc3NpYmxl
IHRvIHF1ZXJ5IGEgY29sdW1uIGZvciBpdHMgd2lkdGguCi0gICAgICAgICAgICBsZWZ0ICs9IHRo
aXMuX2hlYWRlclRhYmxlQm9keUVsZW1lbnQucm93c1swXS5jZWxsc1tpXS5vZmZzZXRXaWR0aDsK
KyAgICAgICAgICAgIGxlZnQgKz0gdGhpcy5fdGFibGVIZWFkZXJFbGVtZW50LnJvd3NbMF0uY2Vs
bHNbaV0ub2Zmc2V0V2lkdGg7CiAKICAgICAgICAgICAgIGlmICh0aGlzLl9pc0NvbHVtblZpc2li
bGUodGhpcy5vcmRlcmVkQ29sdW1uc1tpXSkpIHsKICAgICAgICAgICAgICAgICByZXNpemVyRWxl
bWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgiZGlzcGxheSIpOwpAQCAtODA3LDcgKzc4OCw3IEBA
IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4g
cmV2ZXJzZU1vZGUgPyBjb21wYXJhdG9yKGJEYXRhR3JpZE5vZGUsIGFEYXRhR3JpZE5vZGUpIDog
Y29tcGFyYXRvcihhRGF0YUdyaWROb2RlLCBiRGF0YUdyaWROb2RlKTsKICAgICAgICAgfQogCi0g
ICAgICAgIHZhciB0Ym9keSA9IHRoaXMuZGF0YVRhYmxlQm9keUVsZW1lbnQ7CisgICAgICAgIHZh
ciB0Ym9keSA9IHRoaXMudGFibGVCb2R5RWxlbWVudDsKICAgICAgICAgdmFyIHRib2R5UGFyZW50
ID0gdGJvZHkucGFyZW50RWxlbWVudDsKICAgICAgICAgdGJvZHlQYXJlbnQucmVtb3ZlQ2hpbGQo
dGJvZHkpOwogCkBAIC05MzUsNyArOTE2LDcgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3Rv
dHlwZSA9IHsKIAogICAgIGRhdGFHcmlkTm9kZUZyb21Qb2ludDogZnVuY3Rpb24oeCwgeSkKICAg
ICB7Ci0gICAgICAgIHZhciBub2RlID0gdGhpcy5fZGF0YVRhYmxlRWxlbWVudC5vd25lckRvY3Vt
ZW50LmVsZW1lbnRGcm9tUG9pbnQoeCwgeSk7CisgICAgICAgIHZhciBub2RlID0gdGhpcy5fdGFi
bGVFbGVtZW50Lm93bmVyRG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludCh4LCB5KTsKICAgICAgICAg
dmFyIHJvd0VsZW1lbnQgPSBub2RlLmVuY2xvc2luZ05vZGVPclNlbGZXaXRoTm9kZU5hbWUoInRy
Iik7CiAgICAgICAgIHJldHVybiByb3dFbGVtZW50ICYmIHJvd0VsZW1lbnQuX2RhdGFHcmlkTm9k
ZTsKICAgICB9LApAQCAtMTAwOSw3ICs5OTAsNyBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJv
dG90eXBlID0gewogICAgICAgICBpZiAoIWNvbGxhcHNlckNvbHVtbklkZW50aWZpZXIpCiAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdmFyIGNlbGwgPSB0aGlzLl9oZWFkZXJUYWJsZUNl
bGxFbGVtZW50cy5nZXQoY29sbGFwc2VyQ29sdW1uSWRlbnRpZmllcik7CisgICAgICAgIHZhciBj
ZWxsID0gdGhpcy5fdGFibGVIZWFkZXJDZWxsRWxlbWVudHMuZ2V0KGNvbGxhcHNlckNvbHVtbklk
ZW50aWZpZXIpOwogICAgICAgICB0aGlzLl9jb2xsYXBzZUNvbHVtbkdyb3VwV2l0aENlbGwoY2Vs
bCk7CiAgICAgfSwKIApAQCAtMTA1NCwyMCArMTAzNSwyMCBAQCBXZWJJbnNwZWN0b3IuRGF0YUdy
aWQucHJvdG90eXBlID0gewogCiAgICAgaXNDb2x1bW5Tb3J0Q29sdW1uOiBmdW5jdGlvbihjb2x1
bW5JZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3NvcnRDb2x1bW5DZWxs
ID09PSB0aGlzLl9oZWFkZXJUYWJsZUNlbGxFbGVtZW50cy5nZXQoY29sdW1uSWRlbnRpZmllcik7
CisgICAgICAgIHJldHVybiB0aGlzLl9zb3J0Q29sdW1uQ2VsbCA9PT0gdGhpcy5fdGFibGVIZWFk
ZXJDZWxsRWxlbWVudHMuZ2V0KGNvbHVtbklkZW50aWZpZXIpOwogICAgIH0sCiAKICAgICBtYXJr
Q29sdW1uQXNTb3J0ZWRCeTogZnVuY3Rpb24oY29sdW1uSWRlbnRpZmllciwgc29ydE9yZGVyKQog
ICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3NvcnRDb2x1bW5DZWxsKQogICAgICAgICAgICAgdGhp
cy5fc29ydENvbHVtbkNlbGwucmVtb3ZlTWF0Y2hpbmdTdHlsZUNsYXNzZXMoInNvcnQtXFx3KyIp
OwotICAgICAgICB0aGlzLl9zb3J0Q29sdW1uQ2VsbCA9IHRoaXMuX2hlYWRlclRhYmxlQ2VsbEVs
ZW1lbnRzLmdldChjb2x1bW5JZGVudGlmaWVyKTsKKyAgICAgICAgdGhpcy5fc29ydENvbHVtbkNl
bGwgPSB0aGlzLl90YWJsZUhlYWRlckNlbGxFbGVtZW50cy5nZXQoY29sdW1uSWRlbnRpZmllcik7
CiAgICAgICAgIHRoaXMuX3NvcnRDb2x1bW5DZWxsLmNsYXNzTGlzdC5hZGQoInNvcnQtIiArIHNv
cnRPcmRlcik7CiAgICAgfSwKIAogICAgIGhlYWRlclRhYmxlSGVhZGVyOiBmdW5jdGlvbihjb2x1
bW5JZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2hlYWRlclRhYmxlQ2Vs
bEVsZW1lbnRzLmdldChjb2x1bW5JZGVudGlmaWVyKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Rh
YmxlSGVhZGVyQ2VsbEVsZW1lbnRzLmdldChjb2x1bW5JZGVudGlmaWVyKTsKICAgICB9LAogCiAg
ICAgX2dlbmVyYXRlU29ydEluZGljYXRvckltYWdlc0lmTmVlZGVkOiBmdW5jdGlvbigpCkBAIC0x
MjM2LDcgKzEyMTcsNyBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogICAg
ICAgICAvLyBjb2x1bW4gZGlyZWN0bHkgdG8gdGhlIGxlZnQgYW5kIHRoZSBjb2x1bW4gZGlyZWN0
bHkgdG8gdGhlIHJpZ2h0LgogICAgICAgICB2YXIgbGVmdENlbGxJbmRleCA9IHJlc2l6ZXIubGVm
dE5laWdoYm9yaW5nQ29sdW1uSUQ7CiAgICAgICAgIHZhciByaWdodENlbGxJbmRleCA9IHJlc2l6
ZXIucmlnaHROZWlnaGJvcmluZ0NvbHVtbklEOwotICAgICAgICB2YXIgZmlyc3RSb3dDZWxscyA9
IHRoaXMuX2hlYWRlclRhYmxlQm9keUVsZW1lbnQucm93c1swXS5jZWxsczsKKyAgICAgICAgdmFy
IGZpcnN0Um93Q2VsbHMgPSB0aGlzLl90YWJsZUhlYWRlckVsZW1lbnQucm93c1swXS5jZWxsczsK
ICAgICAgICAgdmFyIGxlZnRFZGdlT2ZQcmV2aW91c0NvbHVtbiA9IDA7CiAgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgbGVmdENlbGxJbmRleDsgaSsrKQogICAgICAgICAgICAgbGVmdEVkZ2VP
ZlByZXZpb3VzQ29sdW1uICs9IGZpcnN0Um93Q2VsbHNbaV0ub2Zmc2V0V2lkdGg7CkBAIC0xMjU5
LDEzICsxMjQwLDEzIEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAKICAg
ICAgICAgcmVzaXplci5zdHlsZS5sZWZ0ID0gKGRyYWdQb2ludCAtIHRoaXMuQ2VudGVyUmVzaXpl
ck92ZXJCb3JkZXJBZGp1c3RtZW50KSArICJweCI7CiAKLSAgICAgICAgdmFyIHBlcmNlbnRMZWZ0
Q29sdW1uID0gKCgoZHJhZ1BvaW50IC0gbGVmdEVkZ2VPZlByZXZpb3VzQ29sdW1uKSAvIHRoaXMu
X2RhdGFUYWJsZUVsZW1lbnQub2Zmc2V0V2lkdGgpICogMTAwKSArICIlIjsKLSAgICAgICAgdGhp
cy5faGVhZGVyVGFibGVDb2x1bW5Hcm91cEVsZW1lbnQuY2hpbGRyZW5bbGVmdENlbGxJbmRleF0u
c3R5bGUud2lkdGggPSBwZXJjZW50TGVmdENvbHVtbjsKLSAgICAgICAgdGhpcy5fZGF0YVRhYmxl
Q29sdW1uR3JvdXBFbGVtZW50LmNoaWxkcmVuW2xlZnRDZWxsSW5kZXhdLnN0eWxlLndpZHRoID0g
cGVyY2VudExlZnRDb2x1bW47CisgICAgICAgIHZhciBwZXJjZW50TGVmdENvbHVtbiA9ICgoKGRy
YWdQb2ludCAtIGxlZnRFZGdlT2ZQcmV2aW91c0NvbHVtbikgLyB0aGlzLl90YWJsZUVsZW1lbnQu
b2Zmc2V0V2lkdGgpICogMTAwKSArICIlIjsKKyAgICAgICAgdGhpcy5fdGFibGVDb2x1bW5Hcm91
cEVsZW1lbnQuY2hpbGRyZW5bbGVmdENlbGxJbmRleF0uc3R5bGUud2lkdGggPSBwZXJjZW50TGVm
dENvbHVtbjsKKyAgICAgICAgdGhpcy5fdGFibGVDb2x1bW5Hcm91cEVsZW1lbnQuY2hpbGRyZW5b
bGVmdENlbGxJbmRleF0uc3R5bGUud2lkdGggPSBwZXJjZW50TGVmdENvbHVtbjsKIAotICAgICAg
ICB2YXIgcGVyY2VudFJpZ2h0Q29sdW1uID0gKCgocmlnaHRFZGdlT2ZOZXh0Q29sdW1uIC0gZHJh
Z1BvaW50KSAvIHRoaXMuX2RhdGFUYWJsZUVsZW1lbnQub2Zmc2V0V2lkdGgpICogMTAwKSArICIl
IjsKLSAgICAgICAgdGhpcy5faGVhZGVyVGFibGVDb2x1bW5Hcm91cEVsZW1lbnQuY2hpbGRyZW5b
cmlnaHRDZWxsSW5kZXhdLnN0eWxlLndpZHRoID0gIHBlcmNlbnRSaWdodENvbHVtbjsKLSAgICAg
ICAgdGhpcy5fZGF0YVRhYmxlQ29sdW1uR3JvdXBFbGVtZW50LmNoaWxkcmVuW3JpZ2h0Q2VsbElu
ZGV4XS5zdHlsZS53aWR0aCA9IHBlcmNlbnRSaWdodENvbHVtbjsKKyAgICAgICAgdmFyIHBlcmNl
bnRSaWdodENvbHVtbiA9ICgoKHJpZ2h0RWRnZU9mTmV4dENvbHVtbiAtIGRyYWdQb2ludCkgLyB0
aGlzLl90YWJsZUVsZW1lbnQub2Zmc2V0V2lkdGgpICogMTAwKSArICIlIjsKKyAgICAgICAgdGhp
cy5fdGFibGVDb2x1bW5Hcm91cEVsZW1lbnQuY2hpbGRyZW5bcmlnaHRDZWxsSW5kZXhdLnN0eWxl
LndpZHRoID0gIHBlcmNlbnRSaWdodENvbHVtbjsKKyAgICAgICAgdGhpcy5fdGFibGVDb2x1bW5H
cm91cEVsZW1lbnQuY2hpbGRyZW5bcmlnaHRDZWxsSW5kZXhdLnN0eWxlLndpZHRoID0gcGVyY2Vu
dFJpZ2h0Q29sdW1uOwogCiAgICAgICAgIHRoaXMuX3Bvc2l0aW9uUmVzaXplckVsZW1lbnRzKCk7
CiAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CkBAIC0xODE0LDE0ICsxNzk1LDE0IEBA
IFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogICAgICAgICBpZiAocHJl
dmlvdXNHcmlkTm9kZSAmJiBwcmV2aW91c0dyaWROb2RlLmVsZW1lbnQucGFyZW50Tm9kZSkKICAg
ICAgICAgICAgIG5leHRFbGVtZW50ID0gcHJldmlvdXNHcmlkTm9kZS5lbGVtZW50Lm5leHRTaWJs
aW5nOwogICAgICAgICBlbHNlIGlmICghcHJldmlvdXNHcmlkTm9kZSkKLSAgICAgICAgICAgIG5l
eHRFbGVtZW50ID0gdGhpcy5kYXRhR3JpZC5kYXRhVGFibGVCb2R5RWxlbWVudC5maXJzdENoaWxk
OworICAgICAgICAgICAgbmV4dEVsZW1lbnQgPSB0aGlzLmRhdGFHcmlkLnRhYmxlQm9keUVsZW1l
bnQuZmlyc3RDaGlsZDsKIAogICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBuZXh0IGdyaWQgbm9k
ZSwgdGhlbiBhcHBlbmQgYmVmb3JlIHRoZSBsYXN0IGNoaWxkIHNpbmNlIHRoZSBsYXN0IGNoaWxk
IGlzIHRoZSBmaWxsZXIgcm93LgotICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLmRhdGFHcmlk
LmRhdGFUYWJsZUJvZHlFbGVtZW50Lmxhc3RDaGlsZC5jbGFzc0xpc3QuY29udGFpbnMoImZpbGxl
ciIpKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5kYXRhR3JpZC50YWJsZUJvZHlFbGVt
ZW50Lmxhc3RDaGlsZC5jbGFzc0xpc3QuY29udGFpbnMoImZpbGxlciIpKTsKICAgICAgICAgaWYg
KCFuZXh0RWxlbWVudCkKLSAgICAgICAgICAgIG5leHRFbGVtZW50ID0gdGhpcy5kYXRhR3JpZC5k
YXRhVGFibGVCb2R5RWxlbWVudC5sYXN0Q2hpbGQ7CisgICAgICAgICAgICBuZXh0RWxlbWVudCA9
IHRoaXMuZGF0YUdyaWQudGFibGVCb2R5RWxlbWVudC5sYXN0Q2hpbGQ7CiAKLSAgICAgICAgdGhp
cy5kYXRhR3JpZC5kYXRhVGFibGVCb2R5RWxlbWVudC5pbnNlcnRCZWZvcmUodGhpcy5lbGVtZW50
LCBuZXh0RWxlbWVudCk7CisgICAgICAgIHRoaXMuZGF0YUdyaWQudGFibGVCb2R5RWxlbWVudC5p
bnNlcnRCZWZvcmUodGhpcy5lbGVtZW50LCBuZXh0RWxlbWVudCk7CiAKICAgICAgICAgaWYgKHRo
aXMuZXhwYW5kZWQpCiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY2hpbGRy
ZW4ubGVuZ3RoOyArK2kpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9MYXllclRyZWVEYXRhR3JpZC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0xheWVyVHJlZURhdGFHcmlkLmpzCmluZGV4IGMyYWJiMjRiMDRhZTZjOGI1OTA4
NmJhMjcxMTcyMGY3MWIyOTA5OTYuLjA0YzU5M2RmMTA4NDljNTYzNWMwMWU3MWYwYTk3MTI3MTI1
ZDk0MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0xh
eWVyVHJlZURhdGFHcmlkLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0xheWVyVHJlZURhdGFHcmlkLmpzCkBAIC03Nyw3ICs3Nyw3IEBAIFdlYkluc3BlY3Rvci5M
YXllclRyZWVEYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgLy8gSXRlcmF0ZSB0aHJv
dWdoIG5vZGVzIGJ5IERPTSBvcmRlciBmaXJzdCBzbyB3ZSBjYW4gZXN0YWJsaXNoCiAgICAgICAg
IC8vIHRoZSBET00gaW5kZXguCi0gICAgICAgIHZhciBlbGVtZW50cyA9IHRoaXMuZGF0YVRhYmxl
Qm9keUVsZW1lbnQucm93czsKKyAgICAgICAgdmFyIGVsZW1lbnRzID0gdGhpcy50YWJsZUJvZHlF
bGVtZW50LnJvd3M7CiAgICAgICAgIGZvciAodmFyIGkgPSAwLCBjb3VudCA9IGVsZW1lbnRzLmxl
bmd0aCAtIDE7IGkgPCBjb3VudDsgKytpKQogICAgICAgICAgICAgZWxlbWVudHNbaV0uX2RhdGFH
cmlkTm9kZS5fZG9tSW5kZXggPSBpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235838</attachid>
            <date>2014-07-31 13:19:51 -0700</date>
            <delta_ts>2014-07-31 17:31:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-128436-20140731131939.patch</filename>
            <type>text/plain</type>
            <size>22666</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcxODgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBk
NGY5YmE3NzkzNWExYjkzYTIxM2NhZGZlOTJhYWQzZGU1YzVlMTI3Li42ODgxNTk3YjVkMTNlZmNh
ZmE0MjkxZjM2YWE1ODZhYmJmNGVlNTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw0NyBAQAogMjAxNC0wNy0zMSAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogRGF0YUdyaWQgaGVhZGVyIHNob3VsZCBi
ZSAncG9zaXRpb246IHN0aWNreScgaW5zdGVhZCBvZiBhIHNlcGFyYXRlIHRhYmxlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg0MzYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgZGF0YSBncmlkIHBy
ZXZpb3VzbHkgaGFkIHR3byB0YWJsZXM6IG9uZSB0aGF0IGNvbnRhaW5lZAorICAgICAgICByZXNp
emFibGUgYW5kIGNsaWNrYWJsZSBoZWFkZXJzIHRoYXQgZGlkbid0IHNjcm9sbCwgYW5kIG9uZQor
ICAgICAgICB3cmFwcGVkIGluIGEgc2Nyb2xsIGNvbnRhaW5lciB0aGF0IGNvdWxkIGJlIHNjcm9s
bGVkLiBUaGlzIGNhbiBub3cKKyAgICAgICAgYmUgaW1wbGVtZW50ZWQgbW9yZSBzaW1wbHkgYnkg
cHV0dGluZyB0aGUgaGVhZGVyIGNlbGxzIGludG8gYQorICAgICAgICAncG9zaXRpb246IC13ZWJr
aXQtc3RpY2t5JyB0aGVhZCBlbGVtZW50IGFuZCB1c2luZyBhIHNpbmdsZSB0YWJsZS4KKworICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRGF0YUdyaWQuY3NzOiBNYWtlIHRoZSB0b3AtbGV2
ZWwgZGl2IHRoZSBzY3JvbGwKKyAgICAgICAgY29udGFpbmVyLiAgQ29uc29saWRhdGUgc3R5bGVz
IHRoYXQgdXNlZCB0byBiZWxvbmcgb24gdGhlIGRpc2NyZXRlCisgICAgICAgIHNjcm9sbCBjb250
YWluZXIgZGl2LCBhbmQgc3R5bGVzIGR1cGxpY2F0ZWQgYmV0d2VlbiB0d28gdGFibGVzLgorCisg
ICAgICAgICguZGF0YS1ncmlkKToKKyAgICAgICAgKC5kYXRhLWdyaWQgdGFibGUpOgorICAgICAg
ICAoLmRhdGEtZ3JpZCB0YWJsZSB0aGVhZCk6CisgICAgICAgICguZGF0YS1ncmlkIHRhYmxlLmRh
dGEgdGJvZHkgPiB0cik6CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFHcmlk
LmpzOiBSZW1vdmVkIHRoZSBkdXBsaWNhdGUgdGFibGUsIGFuZAorICAgICAgICByZW5hbWUgZWxl
bWVudCBwcm9wZXJ0aWVzIGFuZCB2YXJpYWJsZXMgbm93IHRoYXQgdGhleSBkb24ndCBuZWVkCisg
ICAgICAgIHRvIGRpc3RpZ3Vpc2ggYmV0d2VlbiB0aGUgJ2hlYWRlcicgYW5kICdkYXRhJyB0YWJs
ZXMsIHdoaWNoIGFyZQorICAgICAgICBub3cgb25lIGluIHRoZSBzYW1lLgorCisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRGF0YUdyaWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnBy
b3RvdHlwZS51cGRhdGVMYXlvdXQpOiBSZXdyaXRlIHRoZSBpbm5lcgorICAgICAgICBsb29wIHRv
IHVzZSBmb3IuLm9mIGFuZCBiZSBlYXNpZXIgdG8gZm9sbG93LgorCisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLmdldCBzY3JvbGxDb250YWluZXIpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5pc1Njcm9sbGVkVG9MYXN0Um93KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUuc2Nyb2xsVG9MYXN0Um93KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUuX3Bvc2l0aW9uUmVzaXpl
ckVsZW1lbnRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUuc29y
dE5vZGVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUuZGF0YUdy
aWROb2RlRnJvbVBvaW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5
cGUuaXNDb2x1bW5Tb3J0Q29sdW1uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5w
cm90b3R5cGUuaGVhZGVyVGFibGVIZWFkZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFH
cmlkLnByb3RvdHlwZS5fcmVzaXplckRyYWdnaW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5E
YXRhR3JpZE5vZGUucHJvdG90eXBlLl9hdHRhY2gpOgorCisyMDE0LTA3LTMxICBCcmlhbiBKLiBC
dXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKwogICAgICAgICBXZWIgSW5zcGVjdG9yOiBN
ZXNzYWdlRGlzcGF0Y2hlciBzaG91bGQgbm90IHN5bmNocm9ub3VzbHkgZGlzcGF0Y2ggYWxsIGJh
Y2tlbmQgbWVzc2FnZXMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzNTQyNwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9EYXRhR3JpZC5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9EYXRhR3JpZC5jc3MKaW5kZXggOWFjM2RkNjViN2MzZTQxN2U1ODQxZWE0
MTRhNGQ3M2IxMTIwZWY1Ny4uYTJjNzRkY2EwMGIzYzliMTU0NzAyMzgzYmNmN2Q3OWFiNGUyZDc5
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
RGF0YUdyaWQuY3NzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0RhdGFHcmlkLmNzcwpAQCAtMjcsNiArMjcsOCBAQAogICAgIHBvc2l0aW9uOiByZWxhdGl2
ZTsKICAgICBib3JkZXI6IDFweCBzb2xpZCAjYWFhOwogICAgIG91dGxpbmU6IG5vbmU7CisgICAg
b3ZlcmZsb3cteDogaGlkZGVuOworICAgIG92ZXJmbG93LXk6IG92ZXJsYXk7CiB9CiAKIC5kYXRh
LWdyaWQgLmhpZ2hsaWdodCB7CkBAIC0zOCwyNSArNDAsMjMgQEAKIH0KIAogLmRhdGEtZ3JpZCB0
YWJsZSB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHdpZHRoOiAxMDAlOworICAgIGhl
aWdodDogMTAwJTsKICAgICB0YWJsZS1sYXlvdXQ6IGZpeGVkOworCisgICAgYmFja2dyb3VuZC1p
bWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCB3aGl0ZSwgd2hpdGUgNTAlLCByZ2Io
MjQzLCAyNDYsIDI1MCkgNTAlLCByZ2IoMjQzLCAyNDYsIDI1MCkpOworICAgIGJhY2tncm91bmQt
c2l6ZTogMTAwJSAzMnB4OworICAgIGJvcmRlci10b3A6IDAgbm9uZSB0cmFuc3BhcmVudDsKICAg
ICBib3JkZXItc3BhY2luZzogMDsKICAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwotICAg
IHdpZHRoOiAxMDAlOwotICAgIGZvbnQtc2l6ZTogMTBweDsKLX0KIAotLmRhdGEtZ3JpZCAuZGF0
YS1jb250YWluZXIgewotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IDE2cHg7Ci0g
ICAgYm90dG9tOiAwOwotICAgIGxlZnQ6IDA7Ci0gICAgcmlnaHQ6IDA7Ci0gICAgb3ZlcmZsb3ct
eDogaGlkZGVuOwotICAgIG92ZXJmbG93LXk6IG92ZXJsYXk7CisgICAgZm9udC1zaXplOiAxMHB4
OwogfQogCi0uZGF0YS1ncmlkLmlubGluZSAuZGF0YS1jb250YWluZXIgewotICAgIHBvc2l0aW9u
OiBzdGF0aWM7CisuZGF0YS1ncmlkIHRhYmxlIHRoZWFkIHsKKyAgICBwb3NpdGlvbjogLXdlYmtp
dC1zdGlja3k7CisgICAgdG9wOiAwcHg7CiB9CiAKIC5kYXRhLWdyaWQuaW5saW5lIHsKQEAgLTY3
LDEwICs2Nyw2IEBACiAgICAgZGlzcGxheTogbm9uZTsKIH0KIAotLmRhdGEtZ3JpZC5uby1oZWFk
ZXIgLmRhdGEtY29udGFpbmVyIHsKLSAgICB0b3A6IDA7Ci19Ci0KIC5kYXRhLWdyaWQgdGggewog
ICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKQEAgLTEy
MywyNCArMTE5LDExIEBAIGJvZHkubWFjLXBsYXRmb3JtLmxlZ2FjeSAuZGF0YS1ncmlkIHRoIHsK
ICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiB9CiAKLS5kYXRhLWdyaWQgdGFibGUuZGF0YSB7
Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIGxlZnQ6IDA7Ci0gICAgdG9wOiAwOwotICAg
IHJpZ2h0OiAwOwotICAgIGJvdHRvbTogMDsKLSAgICBoZWlnaHQ6IDEwMCU7Ci0gICAgYm9yZGVy
LXRvcDogMCBub25lIHRyYW5zcGFyZW50OwotICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1n
cmFkaWVudCh0byBib3R0b20sIHdoaXRlLCB3aGl0ZSA1MCUsIHJnYigyNDMsIDI0NiwgMjUwKSA1
MCUsIHJnYigyNDMsIDI0NiwgMjUwKSk7Ci0gICAgYmFja2dyb3VuZC1zaXplOiAxMDAlIDMycHg7
Ci0gICAgdGFibGUtbGF5b3V0OiBmaXhlZDsKLX0KLQogLmRhdGEtZ3JpZC5pbmxpbmUgdGFibGUu
ZGF0YSB7CiAgICAgcG9zaXRpb246IHN0YXRpYzsKIH0KIAotLmRhdGEtZ3JpZCB0YWJsZS5kYXRh
IHRyIHsKKy5kYXRhLWdyaWQgdGFibGUuZGF0YSB0Ym9keSA+IHRyIHsKICAgICBkaXNwbGF5OiBu
b25lOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9EYXRhR3JpZC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0RhdGFHcmlkLmpzCmluZGV4IGRmMzNkODVkMTYxNGFkNDM2YjVkMjg3OTY5ZGFhYmY5
YzkxZGQ5MGEuLjEzMGY1ZWI3NTZjYWRjMTgzYjcxMTM3NmYxZjNlM2YzY2Q0MDk1MjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFHcmlk
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFH
cmlkLmpzCkBAIC01MCw0MyArNTAsMzIgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkID0gZnVuY3Rp
b24oY29sdW1uc0RhdGEsIGVkaXRDYWxsYmFjaywgZGVsZXRlQ2FsbGJhY2spCiAgICAgdGhpcy5l
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLl9rZXlEb3duLmJpbmQodGhp
cyksIGZhbHNlKTsKICAgICB0aGlzLmVsZW1lbnQuY29weUhhbmRsZXIgPSB0aGlzOwogCi0gICAg
dGhpcy5faGVhZGVyVGFibGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGFibGUi
KTsKLSAgICB0aGlzLl9oZWFkZXJUYWJsZUVsZW1lbnQuY2xhc3NOYW1lID0gImhlYWRlciI7Ci0g
ICAgdGhpcy5faGVhZGVyVGFibGVDb2x1bW5Hcm91cEVsZW1lbnQgPSB0aGlzLl9oZWFkZXJUYWJs
ZUVsZW1lbnQuY3JlYXRlQ2hpbGQoImNvbGdyb3VwIik7Ci0gICAgdGhpcy5faGVhZGVyVGFibGVC
b2R5RWxlbWVudCA9IHRoaXMuX2hlYWRlclRhYmxlRWxlbWVudC5jcmVhdGVDaGlsZCgidGJvZHki
KTsKLSAgICB0aGlzLl9oZWFkZXJUYWJsZVJvd0VsZW1lbnQgPSB0aGlzLl9oZWFkZXJUYWJsZUJv
ZHlFbGVtZW50LmNyZWF0ZUNoaWxkKCJ0ciIpOwotICAgIHRoaXMuX2hlYWRlclRhYmxlQ2VsbEVs
ZW1lbnRzID0gbmV3IE1hcDsKKyAgICB0aGlzLl90YWJsZUVsZW1lbnQgPSB0aGlzLmVsZW1lbnQu
Y3JlYXRlQ2hpbGQoInRhYmxlIik7CisgICAgdGhpcy5fdGFibGVFbGVtZW50LmNsYXNzTmFtZSA9
ICJkYXRhIjsKIAotICAgIHRoaXMuX3Njcm9sbENvbnRhaW5lckVsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLl9zY3JvbGxDb250YWluZXJFbGVtZW50LmNs
YXNzTmFtZSA9ICJkYXRhLWNvbnRhaW5lciI7CisgICAgdGhpcy5fdGFibGVDb2x1bW5Hcm91cEVs
ZW1lbnQgPSB0aGlzLl90YWJsZUVsZW1lbnQuY3JlYXRlQ2hpbGQoImNvbGdyb3VwIik7CisgICAg
dGhpcy5fdGFibGVIZWFkZXJFbGVtZW50ID0gdGhpcy5fdGFibGVFbGVtZW50LmNyZWF0ZUNoaWxk
KCJ0aGVhZCIpOworICAgIHRoaXMuX3RhYmxlSGVhZGVyUm93RWxlbWVudCA9IHRoaXMuX3RhYmxl
SGVhZGVyRWxlbWVudC5jcmVhdGVDaGlsZCgidHIiKTsKKyAgICB0aGlzLl90YWJsZUhlYWRlckNl
bGxFbGVtZW50cyA9IG5ldyBNYXA7CiAKLSAgICB0aGlzLl9kYXRhVGFibGVFbGVtZW50ID0gdGhp
cy5fc2Nyb2xsQ29udGFpbmVyRWxlbWVudC5jcmVhdGVDaGlsZCgidGFibGUiKTsKLSAgICB0aGlz
Ll9kYXRhVGFibGVFbGVtZW50LmNsYXNzTmFtZSA9ICJkYXRhIjsKLQotICAgIHRoaXMuX2RhdGFU
YWJsZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fbW91c2VEb3du
SW5EYXRhVGFibGUuYmluZCh0aGlzKSk7Ci0gICAgdGhpcy5fZGF0YVRhYmxlRWxlbWVudC5hZGRF
dmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2NsaWNrSW5EYXRhVGFibGUuYmluZCh0aGlzKSk7
Ci0gICAgdGhpcy5fZGF0YVRhYmxlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVu
dSIsIHRoaXMuX2NvbnRleHRNZW51SW5EYXRhVGFibGUuYmluZCh0aGlzKSwgdHJ1ZSk7CisgICAg
dGhpcy5fdGFibGVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX21v
dXNlRG93bkluRGF0YVRhYmxlLmJpbmQodGhpcykpOworICAgIHRoaXMuX3RhYmxlRWxlbWVudC5h
ZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2NsaWNrSW5EYXRhVGFibGUuYmluZCh0aGlz
KSk7CisgICAgdGhpcy5fdGFibGVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51
IiwgdGhpcy5fY29udGV4dE1lbnVJbkRhdGFUYWJsZS5iaW5kKHRoaXMpLCB0cnVlKTsKIAogICAg
IC8vIEZJWE1FOiBBZGQgYSBjcmVhdGVDYWxsYmFjayB3aGljaCBpcyBkaWZmZXJlbnQgZnJvbSBl
ZGl0Q2FsbGJhY2sgYW5kIGhhcyBkaWZmZXJlbnQKICAgICAvLyBiZWhhdmlvciB3aGVuIGNyZWF0
aW5nIGEgbmV3IG5vZGUuCiAgICAgaWYgKGVkaXRDYWxsYmFjaykgewotICAgICAgICB0aGlzLl9k
YXRhVGFibGVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImRibGNsaWNrIiwgdGhpcy5fb25kYmxj
bGljay5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgICAgIHRoaXMuX3RhYmxlRWxlbWVudC5hZGRF
dmVudExpc3RlbmVyKCJkYmxjbGljayIsIHRoaXMuX29uZGJsY2xpY2suYmluZCh0aGlzKSwgZmFs
c2UpOwogICAgICAgICB0aGlzLl9lZGl0Q2FsbGJhY2sgPSBlZGl0Q2FsbGJhY2s7CiAgICAgfQog
ICAgIGlmIChkZWxldGVDYWxsYmFjaykKICAgICAgICAgdGhpcy5fZGVsZXRlQ2FsbGJhY2sgPSBk
ZWxldGVDYWxsYmFjazsKIAotICAgIHRoaXMuX2RhdGFUYWJsZUNvbHVtbkdyb3VwRWxlbWVudCA9
IHRoaXMuX2hlYWRlclRhYmxlQ29sdW1uR3JvdXBFbGVtZW50LmNsb25lTm9kZSh0cnVlKTsKLSAg
ICB0aGlzLl9kYXRhVGFibGVFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2RhdGFUYWJsZUNvbHVt
bkdyb3VwRWxlbWVudCk7Ci0KICAgICAvLyBUaGlzIGVsZW1lbnQgaXMgdXNlZCBieSBEYXRhR3Jp
ZE5vZGVzIHRvIG1hbmlwdWxhdGUgdGFibGUgcm93cyBhbmQgY2VsbHMuCi0gICAgdGhpcy5kYXRh
VGFibGVCb2R5RWxlbWVudCA9IHRoaXMuX2RhdGFUYWJsZUVsZW1lbnQuY3JlYXRlQ2hpbGQoInRi
b2R5Iik7Ci0gICAgdGhpcy5fZmlsbGVyUm93RWxlbWVudCA9IHRoaXMuZGF0YVRhYmxlQm9keUVs
ZW1lbnQuY3JlYXRlQ2hpbGQoInRyIik7CisgICAgdGhpcy50YWJsZUJvZHlFbGVtZW50ID0gdGhp
cy5fdGFibGVFbGVtZW50LmNyZWF0ZUNoaWxkKCJ0Ym9keSIpOworICAgIHRoaXMuX2ZpbGxlclJv
d0VsZW1lbnQgPSB0aGlzLnRhYmxlQm9keUVsZW1lbnQuY3JlYXRlQ2hpbGQoInRyIik7CiAgICAg
dGhpcy5fZmlsbGVyUm93RWxlbWVudC5jbGFzc05hbWUgPSAiZmlsbGVyIjsKIAotICAgIHRoaXMu
ZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9oZWFkZXJUYWJsZUVsZW1lbnQpOwotICAgIHRoaXMu
ZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9zY3JvbGxDb250YWluZXJFbGVtZW50KTsKLQogICAg
IGZvciAodmFyIGNvbHVtbklkZW50aWZpZXIgaW4gY29sdW1uc0RhdGEpCiAgICAgICAgIHRoaXMu
aW5zZXJ0Q29sdW1uKGNvbHVtbklkZW50aWZpZXIsIGNvbHVtbnNEYXRhW2NvbHVtbklkZW50aWZp
ZXJdKTsKIApAQCAtMTk5LDcgKzE4OCw3IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5
cGUgPSB7CiAgICAgICAgIGlmICghdGhpcy5fc29ydENvbHVtbklkZW50aWZpZXIpCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgdmFyIHNvcnRIZWFkZXJDZWxsRWxlbWVudCA9IHRoaXMu
X2hlYWRlclRhYmxlQ2VsbEVsZW1lbnRzLmdldCh0aGlzLl9zb3J0Q29sdW1uSWRlbnRpZmllcik7
CisgICAgICAgIHZhciBzb3J0SGVhZGVyQ2VsbEVsZW1lbnQgPSB0aGlzLl90YWJsZUhlYWRlckNl
bGxFbGVtZW50cy5nZXQodGhpcy5fc29ydENvbHVtbklkZW50aWZpZXIpOwogCiAgICAgICAgIHNv
cnRIZWFkZXJDZWxsRWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKFdlYkluc3BlY3Rvci5EYXRhR3Jp
ZC5Tb3J0Q29sdW1uQXNjZW5kaW5nU3R5bGVDbGFzc05hbWUsIHRoaXMuX3NvcnRPcmRlciA9PT0g
V2ViSW5zcGVjdG9yLkRhdGFHcmlkLlNvcnRPcmRlci5Bc2NlbmRpbmcpOwogICAgICAgICBzb3J0
SGVhZGVyQ2VsbEVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZShXZWJJbnNwZWN0b3IuRGF0YUdyaWQu
U29ydENvbHVtbkRlc2NlbmRpbmdTdHlsZUNsYXNzTmFtZSwgdGhpcy5fc29ydE9yZGVyID09PSBX
ZWJJbnNwZWN0b3IuRGF0YUdyaWQuU29ydE9yZGVyLkRlc2NlbmRpbmcpOwpAQCAtMjI0LDEzICsy
MTMsMTMgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhp
cy5fc29ydENvbHVtbklkZW50aWZpZXIgPSBjb2x1bW5JZGVudGlmaWVyOwogCiAgICAgICAgIGlm
IChvbGRTb3J0Q29sdW1uSWRlbnRpZmllcikgewotICAgICAgICAgICAgdmFyIG9sZFNvcnRIZWFk
ZXJDZWxsRWxlbWVudCA9IHRoaXMuX2hlYWRlclRhYmxlQ2VsbEVsZW1lbnRzLmdldChvbGRTb3J0
Q29sdW1uSWRlbnRpZmllcik7CisgICAgICAgICAgICB2YXIgb2xkU29ydEhlYWRlckNlbGxFbGVt
ZW50ID0gdGhpcy5fdGFibGVIZWFkZXJDZWxsRWxlbWVudHMuZ2V0KG9sZFNvcnRDb2x1bW5JZGVu
dGlmaWVyKTsKICAgICAgICAgICAgIG9sZFNvcnRIZWFkZXJDZWxsRWxlbWVudC5jbGFzc0xpc3Qu
cmVtb3ZlKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5Tb3J0Q29sdW1uQXNjZW5kaW5nU3R5bGVDbGFz
c05hbWUpOwogICAgICAgICAgICAgb2xkU29ydEhlYWRlckNlbGxFbGVtZW50LmNsYXNzTGlzdC5y
ZW1vdmUoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLlNvcnRDb2x1bW5EZXNjZW5kaW5nU3R5bGVDbGFz
c05hbWUpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHRoaXMuX3NvcnRDb2x1bW5JZGVudGlm
aWVyKSB7Ci0gICAgICAgICAgICB2YXIgbmV3U29ydEhlYWRlckNlbGxFbGVtZW50ID0gdGhpcy5f
aGVhZGVyVGFibGVDZWxsRWxlbWVudHMuZ2V0KHRoaXMuX3NvcnRDb2x1bW5JZGVudGlmaWVyKTsK
KyAgICAgICAgICAgIHZhciBuZXdTb3J0SGVhZGVyQ2VsbEVsZW1lbnQgPSB0aGlzLl90YWJsZUhl
YWRlckNlbGxFbGVtZW50cy5nZXQodGhpcy5fc29ydENvbHVtbklkZW50aWZpZXIpOwogICAgICAg
ICAgICAgbmV3U29ydEhlYWRlckNlbGxFbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoV2ViSW5zcGVj
dG9yLkRhdGFHcmlkLlNvcnRDb2x1bW5Bc2NlbmRpbmdTdHlsZUNsYXNzTmFtZSwgdGhpcy5fc29y
dE9yZGVyID09PSBXZWJJbnNwZWN0b3IuRGF0YUdyaWQuU29ydE9yZGVyLkFzY2VuZGluZyk7CiAg
ICAgICAgICAgICBuZXdTb3J0SGVhZGVyQ2VsbEVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZShXZWJJ
bnNwZWN0b3IuRGF0YUdyaWQuU29ydENvbHVtbkRlc2NlbmRpbmdTdHlsZUNsYXNzTmFtZSwgdGhp
cy5fc29ydE9yZGVyID09PSBXZWJJbnNwZWN0b3IuRGF0YUdyaWQuU29ydE9yZGVyLkRlc2NlbmRp
bmcpOwogICAgICAgICB9CkBAIC00MzgsMjEgKzQyNywyMSBAQCBXZWJJbnNwZWN0b3IuRGF0YUdy
aWQucHJvdG90eXBlID0gewogICAgICAgICBpZiAoY29sdW1uWyJkaXNjbG9zdXJlIl0pCiAgICAg
ICAgICAgICB0aGlzLmRpc2Nsb3N1cmVDb2x1bW5JZGVudGlmaWVyID0gY29sdW1uSWRlbnRpZmll
cjsKIAotICAgICAgICB2YXIgaGVhZGVyQ29sdW1uRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImNvbCIpOworICAgICAgICB2YXIgY29sdW1uRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImNvbCIpOwogICAgICAgICBpZiAoY29sdW1uWyJ3aWR0aCJdKQotICAgICAgICAg
ICAgaGVhZGVyQ29sdW1uRWxlbWVudC5zdHlsZS53aWR0aCA9IGNvbHVtblsid2lkdGgiXTsKLSAg
ICAgICAgY29sdW1uWyJlbGVtZW50Il0gPSBoZWFkZXJDb2x1bW5FbGVtZW50OwotICAgICAgICB2
YXIgcmVmZXJlbmNlRWxlbWVudCA9IHRoaXMuX2hlYWRlclRhYmxlQ29sdW1uR3JvdXBFbGVtZW50
LmNoaWxkcmVuW2luc2VydGlvbkluZGV4XTsKLSAgICAgICAgdGhpcy5faGVhZGVyVGFibGVDb2x1
bW5Hcm91cEVsZW1lbnQuaW5zZXJ0QmVmb3JlKGhlYWRlckNvbHVtbkVsZW1lbnQsIHJlZmVyZW5j
ZUVsZW1lbnQpOworICAgICAgICAgICAgY29sdW1uRWxlbWVudC5zdHlsZS53aWR0aCA9IGNvbHVt
blsid2lkdGgiXTsKKyAgICAgICAgY29sdW1uWyJlbGVtZW50Il0gPSBjb2x1bW5FbGVtZW50Owor
ICAgICAgICB2YXIgcmVmZXJlbmNlRWxlbWVudCA9IHRoaXMuX3RhYmxlQ29sdW1uR3JvdXBFbGVt
ZW50LmNoaWxkcmVuW2luc2VydGlvbkluZGV4XTsKKyAgICAgICAgdGhpcy5fdGFibGVDb2x1bW5H
cm91cEVsZW1lbnQuaW5zZXJ0QmVmb3JlKGNvbHVtbkVsZW1lbnQsIHJlZmVyZW5jZUVsZW1lbnQp
OwogCiAgICAgICAgIHZhciBoZWFkZXJDZWxsRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoInRoIik7CiAgICAgICAgIGhlYWRlckNlbGxFbGVtZW50LmNsYXNzTmFtZSA9IGNvbHVtbklk
ZW50aWZpZXIgKyAiLWNvbHVtbiI7CiAgICAgICAgIGhlYWRlckNlbGxFbGVtZW50LmNvbHVtbklk
ZW50aWZpZXIgPSBjb2x1bW5JZGVudGlmaWVyOwogICAgICAgICBpZiAoY29sdW1uWyJhbGlnbmVk
Il0pCiAgICAgICAgICAgICBoZWFkZXJDZWxsRWxlbWVudC5jbGFzc0xpc3QuYWRkKGNvbHVtblsi
YWxpZ25lZCJdKTsKLSAgICAgICAgdGhpcy5faGVhZGVyVGFibGVDZWxsRWxlbWVudHMuc2V0KGNv
bHVtbklkZW50aWZpZXIsIGhlYWRlckNlbGxFbGVtZW50KTsKLSAgICAgICAgdmFyIHJlZmVyZW5j
ZUVsZW1lbnQgPSB0aGlzLl9oZWFkZXJUYWJsZVJvd0VsZW1lbnQuY2hpbGRyZW5baW5zZXJ0aW9u
SW5kZXhdOwotICAgICAgICB0aGlzLl9oZWFkZXJUYWJsZVJvd0VsZW1lbnQuaW5zZXJ0QmVmb3Jl
KGhlYWRlckNlbGxFbGVtZW50LCByZWZlcmVuY2VFbGVtZW50KTsKKyAgICAgICAgdGhpcy5fdGFi
bGVIZWFkZXJDZWxsRWxlbWVudHMuc2V0KGNvbHVtbklkZW50aWZpZXIsIGhlYWRlckNlbGxFbGVt
ZW50KTsKKyAgICAgICAgdmFyIHJlZmVyZW5jZUVsZW1lbnQgPSB0aGlzLl90YWJsZUhlYWRlclJv
d0VsZW1lbnQuY2hpbGRyZW5baW5zZXJ0aW9uSW5kZXhdOworICAgICAgICB0aGlzLl90YWJsZUhl
YWRlclJvd0VsZW1lbnQuaW5zZXJ0QmVmb3JlKGhlYWRlckNlbGxFbGVtZW50LCByZWZlcmVuY2VF
bGVtZW50KTsKIAogICAgICAgICB2YXIgZGl2ID0gaGVhZGVyQ2VsbEVsZW1lbnQuY3JlYXRlQ2hp
bGQoImRpdiIpOwogICAgICAgICBpZiAoY29sdW1uWyJ0aXRsZURPTUZyYWdtZW50Il0pCkBAIC00
ODUsMTIgKzQ3NCw3IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICBoZWFkZXJDZWxsRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjb2xsYXBzZXIiKTsKICAg
ICAgICAgfQogCi0gICAgICAgIHRoaXMuX2hlYWRlclRhYmxlQ29sdW1uR3JvdXBFbGVtZW50LnNw
YW4gPSB0aGlzLm9yZGVyZWRDb2x1bW5zLmxlbmd0aDsKLQotICAgICAgICB2YXIgZGF0YUNvbHVt
bkVsZW1lbnQgPSBoZWFkZXJDb2x1bW5FbGVtZW50LmNsb25lTm9kZSgpOwotICAgICAgICB2YXIg
cmVmZXJlbmNlRWxlbWVudCA9IHRoaXMuX2RhdGFUYWJsZUNvbHVtbkdyb3VwRWxlbWVudC5jaGls
ZHJlbltpbnNlcnRpb25JbmRleF07Ci0gICAgICAgIHRoaXMuX2RhdGFUYWJsZUNvbHVtbkdyb3Vw
RWxlbWVudC5pbnNlcnRCZWZvcmUoZGF0YUNvbHVtbkVsZW1lbnQsIHJlZmVyZW5jZUVsZW1lbnQp
OwotICAgICAgICBjb2x1bW5bImJvZHlFbGVtZW50Il0gPSBkYXRhQ29sdW1uRWxlbWVudDsKKyAg
ICAgICAgdGhpcy5fdGFibGVDb2x1bW5Hcm91cEVsZW1lbnQuc3BhbiA9IHRoaXMub3JkZXJlZENv
bHVtbnMubGVuZ3RoOwogCiAgICAgICAgIHZhciBmaWxsZXJDZWxsRWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoInRkIik7CiAgICAgICAgIGZpbGxlckNlbGxFbGVtZW50LmNsYXNzTmFt
ZSA9IGNvbHVtbklkZW50aWZpZXIgKyAiLWNvbHVtbiI7CkBAIC01MjgsMTMgKzUxMiwxMiBAQCBX
ZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5zb3J0
Q29sdW1uSWRlbnRpZmllciA9PT0gY29sdW1uSWRlbnRpZmllcikKICAgICAgICAgICAgIHRoaXMu
c29ydENvbHVtbklkZW50aWZpZXIgPSBudWxsOwogCi0gICAgICAgIHRoaXMuX2hlYWRlclRhYmxl
Q2VsbEVsZW1lbnRzLmRlbGV0ZShjb2x1bW5JZGVudGlmaWVyKTsKLSAgICAgICAgdGhpcy5faGVh
ZGVyVGFibGVSb3dFbGVtZW50LmNoaWxkcmVuW3JlbW92ZWRPcmRpbmFsXS5yZW1vdmUoKTsKLSAg
ICAgICAgdGhpcy5faGVhZGVyVGFibGVDb2x1bW5Hcm91cEVsZW1lbnQuY2hpbGRyZW5bcmVtb3Zl
ZE9yZGluYWxdLnJlbW92ZSgpOwotICAgICAgICB0aGlzLl9kYXRhVGFibGVDb2x1bW5Hcm91cEVs
ZW1lbnQuY2hpbGRyZW5bcmVtb3ZlZE9yZGluYWxdLnJlbW92ZSgpOworICAgICAgICB0aGlzLl90
YWJsZUhlYWRlckNlbGxFbGVtZW50cy5kZWxldGUoY29sdW1uSWRlbnRpZmllcik7CisgICAgICAg
IHRoaXMuX3RhYmxlSGVhZGVyUm93RWxlbWVudC5jaGlsZHJlbltyZW1vdmVkT3JkaW5hbF0ucmVt
b3ZlKCk7CisgICAgICAgIHRoaXMuX3RhYmxlQ29sdW1uR3JvdXBFbGVtZW50LmNoaWxkcmVuW3Jl
bW92ZWRPcmRpbmFsXS5yZW1vdmUoKTsKICAgICAgICAgdGhpcy5fZmlsbGVyUm93RWxlbWVudC5j
aGlsZHJlbltyZW1vdmVkT3JkaW5hbF0ucmVtb3ZlKCk7CiAKLSAgICAgICAgdGhpcy5faGVhZGVy
VGFibGVDb2x1bW5Hcm91cEVsZW1lbnQuc3BhbiA9IHRoaXMub3JkZXJlZENvbHVtbnMubGVuZ3Ro
OworICAgICAgICB0aGlzLl90YWJsZUNvbHVtbkdyb3VwRWxlbWVudC5zcGFuID0gdGhpcy5vcmRl
cmVkQ29sdW1ucy5sZW5ndGg7CiAKICAgICAgICAgZm9yICh2YXIgY2hpbGQgb2YgdGhpcy5jaGls
ZHJlbikKICAgICAgICAgICAgIGNoaWxkLnJlZnJlc2goKTsKQEAgLTU2MywyNiArNTQ2LDI0IEBA
IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAgICAgLy8gcGFyZW50IGVsZW1l
bnQsIHRoZW4gdGhlIERhdGFHcmlkJ3MgY29sdW1ucyB3aWxsIG5vdCBiZSByZXNpemFibGUuCiAg
ICAgdXBkYXRlTGF5b3V0OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICAvLyBEbyBub3QgYXR0
ZW1wdCB0byB1c2Ugb2Zmc2V0ZXMgaWYgd2UncmUgbm90IGF0dGFjaGVkIHRvIHRoZSBkb2N1bWVu
dCB0cmVlIHlldC4KKyAgICAgICAgLy8gRG8gbm90IGF0dGVtcHQgdG8gdXNlIG9mZnNldHMgaWYg
d2UncmUgbm90IGF0dGFjaGVkIHRvIHRoZSBkb2N1bWVudCB0cmVlIHlldC4KICAgICAgICAgaWYg
KCF0aGlzLl9jb2x1bW5XaWR0aHNJbml0aWFsaXplZCAmJiB0aGlzLmVsZW1lbnQub2Zmc2V0V2lk
dGgpIHsKICAgICAgICAgICAgIC8vIEdpdmUgYWxsIHRoZSBjb2x1bW5zIGluaXRpYWwgd2lkdGhz
IG5vdyBzbyB0aGF0IGR1cmluZyBhIHJlc2l6ZSwKICAgICAgICAgICAgIC8vIHdoZW4gdGhlIHR3
byBjb2x1bW5zIHRoYXQgZ2V0IHJlc2l6ZWQgZ2V0IGEgcGVyY2VudCB2YWx1ZSBmb3IKICAgICAg
ICAgICAgIC8vIHRoZWlyIHdpZHRocywgYWxsIHRoZSBvdGhlciBjb2x1bW5zIGFscmVhZHkgaGF2
ZSBwZXJjZW50IHZhbHVlcwogICAgICAgICAgICAgLy8gZm9yIHRoZWlyIHdpZHRocy4KLSAgICAg
ICAgICAgIHZhciBoZWFkZXJUYWJsZUNvbHVtbkVsZW1lbnRzID0gdGhpcy5faGVhZGVyVGFibGVD
b2x1bW5Hcm91cEVsZW1lbnQuY2hpbGRyZW47Ci0gICAgICAgICAgICB2YXIgdGFibGVXaWR0aCA9
IHRoaXMuX2RhdGFUYWJsZUVsZW1lbnQub2Zmc2V0V2lkdGg7Ci0gICAgICAgICAgICB2YXIgbnVt
Q29sdW1ucyA9IGhlYWRlclRhYmxlQ29sdW1uRWxlbWVudHMubGVuZ3RoOwotICAgICAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBudW1Db2x1bW5zOyBpKyspIHsKLSAgICAgICAgICAgICAgICB2
YXIgaGVhZGVyQ2VsbEVsZW1lbnQgPSB0aGlzLl9oZWFkZXJUYWJsZUJvZHlFbGVtZW50LnJvd3Nb
MF0uY2VsbHNbaV0KLSAgICAgICAgICAgICAgICBpZiAodGhpcy5faXNDb2x1bW5WaXNpYmxlKGhl
YWRlckNlbGxFbGVtZW50LmNvbHVtbklkZW50aWZpZXIpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHZhciBjb2x1bW5XaWR0aCA9IGhlYWRlckNlbGxFbGVtZW50Lm9mZnNldFdpZHRoOwotICAgICAg
ICAgICAgICAgICAgICB2YXIgcGVyY2VudFdpZHRoID0gKChjb2x1bW5XaWR0aCAvIHRhYmxlV2lk
dGgpICogMTAwKSArICIlIjsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5faGVhZGVyVGFibGVD
b2x1bW5Hcm91cEVsZW1lbnQuY2hpbGRyZW5baV0uc3R5bGUud2lkdGggPSBwZXJjZW50V2lkdGg7
Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFUYWJsZUNvbHVtbkdyb3VwRWxlbWVudC5j
aGlsZHJlbltpXS5zdHlsZS53aWR0aCA9IHBlcmNlbnRXaWR0aDsKLSAgICAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgICAgICB0aGlzLl9oZWFkZXJUYWJsZUNvbHVtbkdyb3Vw
RWxlbWVudC5jaGlsZHJlbltpXS5zdHlsZS53aWR0aCA9IDA7Ci0gICAgICAgICAgICAgICAgICAg
IHRoaXMuX2RhdGFUYWJsZUNvbHVtbkdyb3VwRWxlbWVudC5jaGlsZHJlbltpXS5zdHlsZS53aWR0
aCA9IDA7CisgICAgICAgICAgICB2YXIgdGFibGVVc2VkV2lkdGggPSB0aGlzLl90YWJsZUVsZW1l
bnQub2Zmc2V0V2lkdGg7CisgICAgICAgICAgICBmb3IgKHZhciBbaWRlbnRpZmllciwgY29sdW1u
XSBvZiB0aGlzLmNvbHVtbnMpIHsKKyAgICAgICAgICAgICAgICB2YXIgaGVhZGVyQ2VsbEVsZW1l
bnQgPSB0aGlzLl90YWJsZUhlYWRlckNlbGxFbGVtZW50cy5nZXQoaWRlbnRpZmllcik7CisgICAg
ICAgICAgICAgICAgdmFyIGNvbHVtbkVsZW1lbnQgPSB0aGlzLl90YWJsZUNvbHVtbkdyb3VwRWxl
bWVudC5jaGlsZHJlbltjb2x1bW4uZ2V0KCJvcmRpbmFsIildOworICAgICAgICAgICAgICAgIHZh
ciBjb2x1bW5XaWR0aCA9IDA7CisKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5faXNDb2x1bW5W
aXNpYmxlKGlkZW50aWZpZXIpKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBjb2x1bW5IZWFk
ZXJVc2VkV2lkdGggPSBoZWFkZXJDZWxsRWxlbWVudC5vZmZzZXRXaWR0aDsKKyAgICAgICAgICAg
ICAgICAgICAgY29sdW1uV2lkdGggPSAoKGNvbHVtbkhlYWRlclVzZWRXaWR0aCAvIHRhYmxlVXNl
ZFdpZHRoKSAqIDEwMCkgKyAiJSI7CiAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgY29sdW1uRWxlbWVudC5zdHlsZS53aWR0aCA9IGNvbHVtbldpZHRoOwogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICB0aGlzLl9jb2x1bW5XaWR0aHNJbml0aWFsaXplZCA9IHRydWU7CkBA
IC01OTYsNyArNTc3LDcgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAg
ICB7CiAgICAgICAgIHZhciByZXN1bHQgPSB7fTsKICAgICAgICAgZm9yICh2YXIgW2lkZW50aWZp
ZXIsIGNvbHVtbl0gb2YgdGhpcy5jb2x1bW5zKSB7Ci0gICAgICAgICAgICB2YXIgd2lkdGggPSB0
aGlzLl9oZWFkZXJUYWJsZUNvbHVtbkdyb3VwRWxlbWVudC5jaGlsZHJlbltjb2x1bW5bIm9yZGlu
YWwiXV0uc3R5bGUud2lkdGg7CisgICAgICAgICAgICB2YXIgd2lkdGggPSB0aGlzLl90YWJsZUNv
bHVtbkdyb3VwRWxlbWVudC5jaGlsZHJlbltjb2x1bW5bIm9yZGluYWwiXV0uc3R5bGUud2lkdGg7
CiAgICAgICAgICAgICByZXN1bHRbY29sdW1uSWRlbnRpZmllcl0gPSBwYXJzZUZsb2F0KHdpZHRo
KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNjA3LDggKzU4OCw3IEBA
IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGZvciAodmFyIFtp
ZGVudGlmaWVyLCBjb2x1bW5dIG9mIHRoaXMuY29sdW1ucykgewogICAgICAgICAgICAgdmFyIHdp
ZHRoID0gKGNvbHVtbldpZHRoc01hcFtpZGVudGlmaWVyXSB8fCAwKSArICIlIjsKICAgICAgICAg
ICAgIHZhciBvcmRpbmFsID0gY29sdW1uWyJvcmRpbmFsIl07Ci0gICAgICAgICAgICB0aGlzLl9o
ZWFkZXJUYWJsZUNvbHVtbkdyb3VwRWxlbWVudC5jaGlsZHJlbltvcmRpbmFsXS5zdHlsZS53aWR0
aCA9IHdpZHRoOwotICAgICAgICAgICAgdGhpcy5fZGF0YVRhYmxlQ29sdW1uR3JvdXBFbGVtZW50
LmNoaWxkcmVuW29yZGluYWxdLnN0eWxlLndpZHRoID0gd2lkdGg7CisgICAgICAgICAgICB0aGlz
Ll90YWJsZUNvbHVtbkdyb3VwRWxlbWVudC5jaGlsZHJlbltvcmRpbmFsXS5zdHlsZS53aWR0aCA9
IHdpZHRoOwogICAgICAgICB9CiAKICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTsKQEAgLTYz
NywxNyArNjE3LDE3IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAKICAg
ICBnZXQgc2Nyb2xsQ29udGFpbmVyKCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9zY3Jv
bGxDb250YWluZXJFbGVtZW50OworICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50OwogICAgIH0s
CiAKICAgICBpc1Njcm9sbGVkVG9MYXN0Um93OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBy
ZXR1cm4gdGhpcy5fc2Nyb2xsQ29udGFpbmVyRWxlbWVudC5pc1Njcm9sbGVkVG9Cb3R0b20oKTsK
KyAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudC5pc1Njcm9sbGVkVG9Cb3R0b20oKTsKICAgICB9
LAogCiAgICAgc2Nyb2xsVG9MYXN0Um93OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB0aGlz
Ll9zY3JvbGxDb250YWluZXJFbGVtZW50LnNjcm9sbFRvcCA9IHRoaXMuX3Njcm9sbENvbnRhaW5l
ckVsZW1lbnQuc2Nyb2xsSGVpZ2h0IC0gdGhpcy5fc2Nyb2xsQ29udGFpbmVyRWxlbWVudC5vZmZz
ZXRIZWlnaHQ7CisgICAgICAgIHRoaXMuZWxlbWVudC5zY3JvbGxUb3AgPSB0aGlzLmVsZW1lbnQu
c2Nyb2xsSGVpZ2h0IC0gdGhpcy5lbGVtZW50Lm9mZnNldEhlaWdodDsKICAgICB9LAogCiAgICAg
X3Bvc2l0aW9uUmVzaXplckVsZW1lbnRzOiBmdW5jdGlvbigpCkBAIC02NzMsNyArNjUzLDcgQEAg
V2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIC8vIEdldCB0
aGUgd2lkdGggb2YgdGhlIGNlbGwgaW4gdGhlIGZpcnN0IChhbmQgb25seSkgcm93IG9mIHRoZQog
ICAgICAgICAgICAgLy8gaGVhZGVyIHRhYmxlIGluIG9yZGVyIHRvIGRldGVybWluZSB0aGUgd2lk
dGggb2YgdGhlIGNvbHVtbiwgc2luY2UKICAgICAgICAgICAgIC8vIGl0IGlzIG5vdCBwb3NzaWJs
ZSB0byBxdWVyeSBhIGNvbHVtbiBmb3IgaXRzIHdpZHRoLgotICAgICAgICAgICAgbGVmdCArPSB0
aGlzLl9oZWFkZXJUYWJsZUJvZHlFbGVtZW50LnJvd3NbMF0uY2VsbHNbaV0ub2Zmc2V0V2lkdGg7
CisgICAgICAgICAgICBsZWZ0ICs9IHRoaXMuX3RhYmxlSGVhZGVyRWxlbWVudC5yb3dzWzBdLmNl
bGxzW2ldLm9mZnNldFdpZHRoOwogCiAgICAgICAgICAgICBpZiAodGhpcy5faXNDb2x1bW5WaXNp
YmxlKHRoaXMub3JkZXJlZENvbHVtbnNbaV0pKSB7CiAgICAgICAgICAgICAgICAgcmVzaXplckVs
ZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoImRpc3BsYXkiKTsKQEAgLTg0Niw3ICs4MjYsNyBA
QCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKLSAgICAgICAgdmFyIHRib2R5ID0gdGhpcy5kYXRhVGFibGVCb2R5RWxl
bWVudDsKKyAgICAgICAgdmFyIHRib2R5ID0gdGhpcy50YWJsZUJvZHlFbGVtZW50OwogICAgICAg
ICB2YXIgY2hpbGROb2RlcyA9IHRib2R5LmNoaWxkTm9kZXM7CiAgICAgICAgIHZhciBmaWxsZXJS
b3dFbGVtZW50ID0gdGJvZHkubGFzdENoaWxkOwogCkBAIC05NzAsNyArOTUwLDcgQEAgV2ViSW5z
cGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKIAogICAgIGRhdGFHcmlkTm9kZUZyb21Qb2lu
dDogZnVuY3Rpb24oeCwgeSkKICAgICB7Ci0gICAgICAgIHZhciBub2RlID0gdGhpcy5fZGF0YVRh
YmxlRWxlbWVudC5vd25lckRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoeCwgeSk7CisgICAgICAg
IHZhciBub2RlID0gdGhpcy5fdGFibGVFbGVtZW50Lm93bmVyRG9jdW1lbnQuZWxlbWVudEZyb21Q
b2ludCh4LCB5KTsKICAgICAgICAgdmFyIHJvd0VsZW1lbnQgPSBub2RlLmVuY2xvc2luZ05vZGVP
clNlbGZXaXRoTm9kZU5hbWUoInRyIik7CiAgICAgICAgIHJldHVybiByb3dFbGVtZW50ICYmIHJv
d0VsZW1lbnQuX2RhdGFHcmlkTm9kZTsKICAgICB9LApAQCAtMTAzNSw3ICsxMDE1LDcgQEAgV2Vi
SW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKCFjb2xsYXBzZXJD
b2x1bW5JZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHZhciBjZWxs
ID0gdGhpcy5faGVhZGVyVGFibGVDZWxsRWxlbWVudHMuZ2V0KGNvbGxhcHNlckNvbHVtbklkZW50
aWZpZXIpOworICAgICAgICB2YXIgY2VsbCA9IHRoaXMuX3RhYmxlSGVhZGVyQ2VsbEVsZW1lbnRz
LmdldChjb2xsYXBzZXJDb2x1bW5JZGVudGlmaWVyKTsKICAgICAgICAgdGhpcy5fY29sbGFwc2VD
b2x1bW5Hcm91cFdpdGhDZWxsKGNlbGwpOwogICAgIH0sCiAKQEAgLTEwODAsNyArMTA2MCw3IEBA
IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAKICAgICBoZWFkZXJUYWJsZUhl
YWRlcjogZnVuY3Rpb24oY29sdW1uSWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiB0
aGlzLl9oZWFkZXJUYWJsZUNlbGxFbGVtZW50cy5nZXQoY29sdW1uSWRlbnRpZmllcik7CisgICAg
ICAgIHJldHVybiB0aGlzLl90YWJsZUhlYWRlckNlbGxFbGVtZW50cy5nZXQoY29sdW1uSWRlbnRp
Zmllcik7CiAgICAgfSwKIAogICAgIF9nZW5lcmF0ZVNvcnRJbmRpY2F0b3JJbWFnZXNJZk5lZWRl
ZDogZnVuY3Rpb24oKQpAQCAtMTI0OSw3ICsxMjI5LDcgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlk
LnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gY29sdW1uIGRpcmVjdGx5IHRvIHRoZSBsZWZ0IGFu
ZCB0aGUgY29sdW1uIGRpcmVjdGx5IHRvIHRoZSByaWdodC4KICAgICAgICAgdmFyIGxlZnRDZWxs
SW5kZXggPSByZXNpemVyLmxlZnROZWlnaGJvcmluZ0NvbHVtbklEOwogICAgICAgICB2YXIgcmln
aHRDZWxsSW5kZXggPSByZXNpemVyLnJpZ2h0TmVpZ2hib3JpbmdDb2x1bW5JRDsKLSAgICAgICAg
dmFyIGZpcnN0Um93Q2VsbHMgPSB0aGlzLl9oZWFkZXJUYWJsZUJvZHlFbGVtZW50LnJvd3NbMF0u
Y2VsbHM7CisgICAgICAgIHZhciBmaXJzdFJvd0NlbGxzID0gdGhpcy5fdGFibGVIZWFkZXJFbGVt
ZW50LnJvd3NbMF0uY2VsbHM7CiAgICAgICAgIHZhciBsZWZ0RWRnZU9mUHJldmlvdXNDb2x1bW4g
PSAwOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlZnRDZWxsSW5kZXg7IGkrKykKICAg
ICAgICAgICAgIGxlZnRFZGdlT2ZQcmV2aW91c0NvbHVtbiArPSBmaXJzdFJvd0NlbGxzW2ldLm9m
ZnNldFdpZHRoOwpAQCAtMTI3MiwxMyArMTI1MiwxMyBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQu
cHJvdG90eXBlID0gewogCiAgICAgICAgIHJlc2l6ZXIuc3R5bGUubGVmdCA9IChkcmFnUG9pbnQg
LSB0aGlzLkNlbnRlclJlc2l6ZXJPdmVyQm9yZGVyQWRqdXN0bWVudCkgKyAicHgiOwogCi0gICAg
ICAgIHZhciBwZXJjZW50TGVmdENvbHVtbiA9ICgoKGRyYWdQb2ludCAtIGxlZnRFZGdlT2ZQcmV2
aW91c0NvbHVtbikgLyB0aGlzLl9kYXRhVGFibGVFbGVtZW50Lm9mZnNldFdpZHRoKSAqIDEwMCkg
KyAiJSI7Ci0gICAgICAgIHRoaXMuX2hlYWRlclRhYmxlQ29sdW1uR3JvdXBFbGVtZW50LmNoaWxk
cmVuW2xlZnRDZWxsSW5kZXhdLnN0eWxlLndpZHRoID0gcGVyY2VudExlZnRDb2x1bW47Ci0gICAg
ICAgIHRoaXMuX2RhdGFUYWJsZUNvbHVtbkdyb3VwRWxlbWVudC5jaGlsZHJlbltsZWZ0Q2VsbElu
ZGV4XS5zdHlsZS53aWR0aCA9IHBlcmNlbnRMZWZ0Q29sdW1uOworICAgICAgICB2YXIgcGVyY2Vu
dExlZnRDb2x1bW4gPSAoKChkcmFnUG9pbnQgLSBsZWZ0RWRnZU9mUHJldmlvdXNDb2x1bW4pIC8g
dGhpcy5fdGFibGVFbGVtZW50Lm9mZnNldFdpZHRoKSAqIDEwMCkgKyAiJSI7CisgICAgICAgIHRo
aXMuX3RhYmxlQ29sdW1uR3JvdXBFbGVtZW50LmNoaWxkcmVuW2xlZnRDZWxsSW5kZXhdLnN0eWxl
LndpZHRoID0gcGVyY2VudExlZnRDb2x1bW47CisgICAgICAgIHRoaXMuX3RhYmxlQ29sdW1uR3Jv
dXBFbGVtZW50LmNoaWxkcmVuW2xlZnRDZWxsSW5kZXhdLnN0eWxlLndpZHRoID0gcGVyY2VudExl
ZnRDb2x1bW47CiAKLSAgICAgICAgdmFyIHBlcmNlbnRSaWdodENvbHVtbiA9ICgoKHJpZ2h0RWRn
ZU9mTmV4dENvbHVtbiAtIGRyYWdQb2ludCkgLyB0aGlzLl9kYXRhVGFibGVFbGVtZW50Lm9mZnNl
dFdpZHRoKSAqIDEwMCkgKyAiJSI7Ci0gICAgICAgIHRoaXMuX2hlYWRlclRhYmxlQ29sdW1uR3Jv
dXBFbGVtZW50LmNoaWxkcmVuW3JpZ2h0Q2VsbEluZGV4XS5zdHlsZS53aWR0aCA9ICBwZXJjZW50
UmlnaHRDb2x1bW47Ci0gICAgICAgIHRoaXMuX2RhdGFUYWJsZUNvbHVtbkdyb3VwRWxlbWVudC5j
aGlsZHJlbltyaWdodENlbGxJbmRleF0uc3R5bGUud2lkdGggPSBwZXJjZW50UmlnaHRDb2x1bW47
CisgICAgICAgIHZhciBwZXJjZW50UmlnaHRDb2x1bW4gPSAoKChyaWdodEVkZ2VPZk5leHRDb2x1
bW4gLSBkcmFnUG9pbnQpIC8gdGhpcy5fdGFibGVFbGVtZW50Lm9mZnNldFdpZHRoKSAqIDEwMCkg
KyAiJSI7CisgICAgICAgIHRoaXMuX3RhYmxlQ29sdW1uR3JvdXBFbGVtZW50LmNoaWxkcmVuW3Jp
Z2h0Q2VsbEluZGV4XS5zdHlsZS53aWR0aCA9ICBwZXJjZW50UmlnaHRDb2x1bW47CisgICAgICAg
IHRoaXMuX3RhYmxlQ29sdW1uR3JvdXBFbGVtZW50LmNoaWxkcmVuW3JpZ2h0Q2VsbEluZGV4XS5z
dHlsZS53aWR0aCA9IHBlcmNlbnRSaWdodENvbHVtbjsKIAogICAgICAgICB0aGlzLl9wb3NpdGlv
blJlc2l6ZXJFbGVtZW50cygpOwogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwpAQCAt
MTgyNywxNSArMTgwNywxNSBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9
IHsKICAgICAgICAgaWYgKHByZXZpb3VzR3JpZE5vZGUgJiYgcHJldmlvdXNHcmlkTm9kZS5lbGVt
ZW50LnBhcmVudE5vZGUpCiAgICAgICAgICAgICBuZXh0RWxlbWVudCA9IHByZXZpb3VzR3JpZE5v
ZGUuZWxlbWVudC5uZXh0U2libGluZzsKICAgICAgICAgZWxzZSBpZiAoIXByZXZpb3VzR3JpZE5v
ZGUpCi0gICAgICAgICAgICBuZXh0RWxlbWVudCA9IHRoaXMuZGF0YUdyaWQuZGF0YVRhYmxlQm9k
eUVsZW1lbnQuZmlyc3RDaGlsZDsKKyAgICAgICAgICAgIG5leHRFbGVtZW50ID0gdGhpcy5kYXRh
R3JpZC50YWJsZUJvZHlFbGVtZW50LmZpcnN0Q2hpbGQ7CiAKICAgICAgICAgLy8gSWYgdGhlcmUg
aXMgbm8gbmV4dCBncmlkIG5vZGUsIHRoZW4gYXBwZW5kIGJlZm9yZSB0aGUgbGFzdCBjaGlsZCBz
aW5jZSB0aGUgbGFzdCBjaGlsZCBpcyB0aGUgZmlsbGVyIHJvdy4KLSAgICAgICAgY29uc29sZS5h
c3NlcnQodGhpcy5kYXRhR3JpZC5kYXRhVGFibGVCb2R5RWxlbWVudC5sYXN0Q2hpbGQuY2xhc3NM
aXN0LmNvbnRhaW5zKCJmaWxsZXIiKSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuZGF0
YUdyaWQudGFibGVCb2R5RWxlbWVudC5sYXN0Q2hpbGQuY2xhc3NMaXN0LmNvbnRhaW5zKCJmaWxs
ZXIiKSk7CiAKICAgICAgICAgaWYgKCFuZXh0RWxlbWVudCkKLSAgICAgICAgICAgIG5leHRFbGVt
ZW50ID0gdGhpcy5kYXRhR3JpZC5kYXRhVGFibGVCb2R5RWxlbWVudC5sYXN0Q2hpbGQ7CisgICAg
ICAgICAgICBuZXh0RWxlbWVudCA9IHRoaXMuZGF0YUdyaWQudGFibGVCb2R5RWxlbWVudC5sYXN0
Q2hpbGQ7CiAKLSAgICAgICAgdGhpcy5kYXRhR3JpZC5kYXRhVGFibGVCb2R5RWxlbWVudC5pbnNl
cnRCZWZvcmUodGhpcy5lbGVtZW50LCBuZXh0RWxlbWVudCk7CisgICAgICAgIHRoaXMuZGF0YUdy
aWQudGFibGVCb2R5RWxlbWVudC5pbnNlcnRCZWZvcmUodGhpcy5lbGVtZW50LCBuZXh0RWxlbWVu
dCk7CiAKICAgICAgICAgaWYgKHRoaXMuZXhwYW5kZWQpCiAgICAgICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyArK2kpCg==
</data>
<flag name="review"
          id="260416"
          type_id="1"
          status="+"
          setter="timothy"
    />
    <flag name="commit-queue"
          id="260417"
          type_id="3"
          status="-"
          setter="burg"
    />
          </attachment>
      

    </bug>

</bugzilla>