<?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>27124</bug_id>
          
          <creation_ts>2009-07-09 11:47:23 -0700</creation_ts>
          <short_desc>let me *edit* css styles in the web inspector.</short_desc>
          <delta_ts>2009-08-12 15:20:33 -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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter>ryankshaw+webkitbugzilla</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>eric</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>130692</commentid>
    <comment_count>0</comment_count>
    <who name="">ryankshaw+webkitbugzilla</who>
    <bug_when>2009-07-09 11:47:23 -0700</bug_when>
    <thetext>I would love to use safari for development but seriously the deal breaker is not being able to *edit* css styles. So I am proposing these features:

1. Let me edit the css styles for a specific element. (easily, like firebug lets me, not by having to try to add a style=”&quot; attribute)

2. Let me edit the style properties of a css stylesheet rule, like in firebug. ex:
if I have
.some_selector {
color: red;
}
in my sylesheet, let me change that color to black or add “margin: 10px” or whatever I want to that rule.

3. This is a bonus, if you want to leapfrog firebug. Let me create stylesheet rules on the fly and assign properties to them. so, while I am looking at the page I can say “I wonder what would happen if gave all the h4s on the page an underline and increased their font size to 1.8em” and then I could just create a style h4{ text-decoration:underline; font-size: 1.8em;} and see it in action. (see http://flesler.blogspot.com/2007/11/jqueryrule.html for more of what I am talking about here)

With those, then I really would start using safari for development.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130698</commentid>
    <comment_count>1</comment_count>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2009-07-09 12:18:38 -0700</bug_when>
    <thetext>Web Inspector pretty much has the same css editing capability as Firebug does.

Edit is triggered by double clicking instead of a single click in Firebug. 
&quot;Computed Style&quot; is not a CSS rule so it is not editable. (Just as in Firebug)
Typing in multiple attributes will add the new attributes. Deleting all the text will delete the attribute.

Creating rules on the fly is a great idea. However style sheet rules have order dependency so I&apos;m not sure how the interface will be like.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130727</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-07-09 14:29:49 -0700</bug_when>
    <thetext>If we already have the functionality but we keep getting bug reports about us not having it, then it&apos;s a good sign that the functionality is not discoverable enough.  We should look in to how we can improve the UI so that users can find the functionality more easily.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130795</commentid>
    <comment_count>3</comment_count>
    <who name="">ryankshaw+webkitbugzilla</who>
    <bug_when>2009-07-09 18:10:03 -0700</bug_when>
    <thetext>Keishi, first off: thanks a lot for the pointer, I am excited to see that editing css properties is, indeed, possible already by double clicking.  I would definately second Mark&apos;s suggestion that the user interaction on it could be a little more discoverable, as in dont make me double click, a single click should do.  while I am in edit mode if I hit tab, take me to a new line where I can create a new property for that style declaration.  
I made a video to make this more clear:
http://screencast.com/t/tlMxsfOUj

As far as creating stylesheet rules on the fly, you&apos;re right source order would be a factor here but I would suggest that if you created them on the fly it would be just like appending a &lt;style&gt; node right before &lt;/body&gt; so it&apos;s source order would be last of all stylesheets.  
or in jquery code doing the equivalent of: 
$(&apos;&lt;style&gt;div.foo{color:blue;}&lt;/style&gt;&apos;).appendTo(&apos;body&apos;); 
where &quot;div.foo{color:blue;}&quot; was whatever they had typed in.

Along with this, something that would make us css dev&apos;s really happy is being able to modify the selector that was used for a certain style rule.  so if I had a selector: div.foo_class in my stylesheet, I could change that to be just .foo_class or h1.bar_class or whatever. 

here is a video to show those last 2 more clearly:
http://screencast.com/t/mJsGddXePE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134847</commentid>
    <comment_count>4</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-07-26 23:41:30 -0700</bug_when>
    <thetext>Hey Ryan.  How does something like this look for a quick way to add new styles to a page.  Feedback from anyone would be appreciated:
http://screencast.com/t/GR79aGkGh

If it sounds like a good idea and the WebKit team likes it then I&apos;ll have to do some polishing up, most likely UI improvements and a better user experience then what I currently have.

Also, you might be interested in a recent patch that allows for &quot;tabbing through css properties&quot; that has been reviewed and will hopefully land soon (video examples in the comments):
https://bugs.webkit.org/show_bug.cgi?id=27673

I haven&apos;t looked into your last feature (editing the css selector itself) although that is something that I&apos;ve wanted myself from time to time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135847</commentid>
    <comment_count>5</comment_count>
      <attachid>33783</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-07-30 08:24:07 -0700</bug_when>
    <thetext>Created attachment 33783
Edit CSS Selectors

NOTES:

- Double-Click to Add CSS Selectors section, provides a useful initial value
- Double-Click a Selector to edit (if allowed)
- Double-Click White-Space to add a Property (enlarged whitespace)
- GUI Displays as Gray if an edit is Not Applicable to the current selected node
- Tabbing may go between the Selector and its Properties
- Strikethroughs and Ordering are accurate
- Selected Element&apos;s style attributes always show, expands automatically, otherwise collapsed
- Editing Element&apos;s style attributes is synced with Element&apos;s Tree Outline
- Fix for Adding a New Property and pushing Esc to Cancel</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135848</commentid>
    <comment_count>6</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-07-30 08:24:50 -0700</bug_when>
    <thetext>Added Tim to the CC list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135851</commentid>
    <comment_count>7</comment_count>
      <attachid>33783</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-07-30 08:32:43 -0700</bug_when>
    <thetext>Comment on attachment 33783
Edit CSS Selectors

&gt; +        for (var i = 0, len = parentRules.length; i &lt; len; ++i) {
&gt; +        for (var i = 0, len = nodes.length; i &lt; len; ++i) {

We prefer to spell out variables like length.

You need to add all the new UIStrings to localizedString.js

Awesome work!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135852</commentid>
    <comment_count>8</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-07-30 08:35:53 -0700</bug_when>
    <thetext>Video of what it looks and feels like:
http://screencast.com/t/3yG1ZtoE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135853</commentid>
    <comment_count>9</comment_count>
      <attachid>33785</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-07-30 08:57:14 -0700</bug_when>
    <thetext>Created attachment 33785
Edit CSS Selectors (diff --binary)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135855</commentid>
    <comment_count>10</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-07-30 08:59:35 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 33783 [details])
&gt; &gt; +        for (var i = 0, len = parentRules.length; i &lt; len; ++i) {
&gt; &gt; +        for (var i = 0, len = nodes.length; i &lt; len; ++i) {
&gt; 
&gt; We prefer to spell out variables like length.

Done. Loop condition is now array.length


&gt; You need to add all the new UIStrings to localizedString.js

Done. In the non-pretty patch there is the Git Binary diff.  I added 3 UI Strings, including removing the old &quot;Inline Style Attribute&quot; in favor of the shorter &quot;Style Attribute&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136520</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-08-02 00:42:04 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/English.lproj/localizedStrings.js
	M	WebCore/inspector/front-end/ElementsPanel.js
	M	WebCore/inspector/front-end/StylesSidebarPane.js
	M	WebCore/inspector/front-end/inspector.css
Committed r46690
	M	WebCore/ChangeLog
	M	WebCore/inspector/front-end/StylesSidebarPane.js
	M	WebCore/inspector/front-end/ElementsPanel.js
	M	WebCore/inspector/front-end/inspector.css
	M	WebCore/English.lproj/localizedStrings.js
r46690 = a7c19c01c9c9ce43b1e82f9a827ca349037f5b7d (trunk)
No changes between current HEAD and refs/remotes/trunk
Resetting to the latest refs/remotes/trunk
http://trac.webkit.org/changeset/46690</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139121</commentid>
    <comment_count>12</comment_count>
    <who name="">ryankshaw+webkitbugzilla</who>
    <bug_when>2009-08-11 15:05:16 -0700</bug_when>
    <thetext>I just got the latest webkit nightly and tried it out.

if you double click to create a new style rule, 
add something like color:red; ,
It makes that thing red.

now, reload the page, inspect the same thing, double click to add a new style rule that is the same as before with color:red; and it does not change anything on the page, even though in the web inspector it thinks that it is because it crosses out the rule coming from the stylesheet.

this shows what I am talking about:
http://screencast.com/t/MsmXR6Icm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139128</commentid>
    <comment_count>13</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-08-11 15:22:03 -0700</bug_when>
    <thetext>I think what is happeneing here is that we have a reference to the style element we created for the previous page still, so we think we don&apos;t need to make a new one and just append to the old one in the previous page.

This reference should be cleared in the ElementsPanel reset method.

Can you file a new bug about this? (And close this bug.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139142</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-08-11 15:34:51 -0700</bug_when>
    <thetext>We don&apos;t need the [commit+] fake flag any more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139590</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-12 15:20:33 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/46690</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33783</attachid>
            <date>2009-07-30 08:24:07 -0700</date>
            <delta_ts>2009-07-30 08:57:14 -0700</delta_ts>
            <desc>Edit CSS Selectors</desc>
            <filename>EditCssSelectors.patch</filename>
            <type>text/plain</type>
            <size>21958</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZGI5ZjMzOS4uNTZlY2UxNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAwOS0wNy0zMCAgSm9zZXBoIFBlY29y
YXJvICA8am9lcGVjazAyQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbnNwZWN0b3I6IGxldCBtZSAqZWRpdCogY3NzIHN0eWxlcyBp
biB0aGUgd2ViIGluc3BlY3Rvci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI3MTI0CisKKyAgICAgICAgKiBFbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0
cmluZ3MuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwpOiBhZGRlZCBwcm9wZXJ0eSBz
dHlsZXNoZWV0IHBvaW50aW5nIHRvIDEgc3R5bGVzaGVldCBhZGRlZCB0byB0aGUgcGFnZSBpZiBu
ZWVkZWQKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZS51cGRh
dGUpOiBoYW5kbGUgYmxhbmsgc2VjdGlvbnMKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZXNT
aWRlYmFyUGFuZS5wcm90b3R5cGUuYWRkQmxhbmtTZWN0aW9uKTogYmxhbmsgc2VjdGlvbiBpbiB0
aGUgY29ycmVjdCBwb3NpdGlvbgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQ
YW5lLnByb3RvdHlwZS5hcHByb3ByaWF0ZVNlbGVjdG9yRm9yTm9kZSk6IGhlbHBlciB0byBnZXQg
YSBuaWNlIHNlbGVjdG9yIGZvciB0aGUgc2VsZWN0ZCBub2RlCisgICAgICAgIChXZWJJbnNwZWN0
b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQ
cm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUuZXhwYW5kKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5TdHlsZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZS5pc1Byb3BlcnR5SW5oZXJpdGVkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZS5p
c1Byb3BlcnR5T3ZlcmxvYWRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0
aWVzU2VjdGlvbi5wcm90b3R5cGUuYWRkTmV3QmxhbmtQcm9wZXJ0eSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUuX2RibGNsaWNrRW1wdHlT
cGFjZSk6IGVhc2lseSBjcmVhdGUgbmV3IHByb3BlcnRpZXMKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5TdHlsZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZS5fZGJsY2xpY2tTZWxlY3Rvcik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUuc3Rh
cnRFZGl0aW5nU2VsZWN0b3IpOiBhbGxvdyBmb3IgZWRpdGluZyBzZWxlY3RvcnMKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZS5lZGl0aW5nU2Vs
ZWN0b3JDb21taXR0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1Nl
Y3Rpb24ucHJvdG90eXBlLmVkaXRpbmdTZWxlY3RvckNhbmNlbGxlZCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUuX2RvZXNTZWxlY3RvckFm
ZmVjdFNlbGVjdGVkTm9kZSk6IGhlbHBlciB0byBjaGVjayBpZiBhIHNlbGVjdG9yIGFwcGxpZXMg
dG8gdGhlIHNlbGVjdGVkIG5vZGUKKyAgICAgICAgKFdlYkluc3BlY3Rvci5CbGFua1N0eWxlUHJv
cGVydGllc1NlY3Rpb24ucHJvdG90eXBlLl9kYmxjbGljayk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQmxhbmtTdHlsZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZS5zdGFydEVkaXRpbmcpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkJsYW5rU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5
cGUuZWRpdGluZ0NhbmNlbGxlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQmxhbmtTdHlsZVBy
b3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZS5lZGl0aW5nQ29tbWl0dGVkKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5CbGFua1N0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlLm1ha2VOb3Jt
YWwpOiBtb3JwaCBpbnRvIGEgU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUuKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3M6CisKIDIwMDktMDctMjkgIEppYW4g
TGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3Mu
anMgYi9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwppbmRleCAwNjY2
NTRjLi5iYjdmZjZkIDEwMDY0NApCaW5hcnkgZmlsZXMgYS9XZWJDb3JlL0VuZ2xpc2gubHByb2ov
bG9jYWxpemVkU3RyaW5ncy5qcyBhbmQgYi9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVk
U3RyaW5ncy5qcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9FbGVtZW50c1BhbmVsLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRz
UGFuZWwuanMKaW5kZXggNzZkOTc0Ni4uNTVmNjkzZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanMKQEAgLTExNCw2ICsxMTQsOCBAQCBXZWJJbnNwZWN0
b3IuRWxlbWVudHNQYW5lbCA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLl9ub2RlUmVtb3ZlZEV2ZW50
TGlzdGVuZXIgPSBJbnNwZWN0b3JDb250cm9sbGVyLndyYXBDYWxsYmFjayh0aGlzLl9ub2RlUmVt
b3ZlZC5iaW5kKHRoaXMpKTsKICAgICB0aGlzLl9jb250ZW50TG9hZGVkRXZlbnRMaXN0ZW5lciA9
IEluc3BlY3RvckNvbnRyb2xsZXIud3JhcENhbGxiYWNrKHRoaXMuX2NvbnRlbnRMb2FkZWQuYmlu
ZCh0aGlzKSk7CiAKKyAgICB0aGlzLnN0eWxlc2hlZXQgPSBudWxsOworCiAgICAgdGhpcy5yZXNl
dCgpOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVz
U2lkZWJhclBhbmUuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJh
clBhbmUuanMKaW5kZXggMTc4NWQ3Ny4uOWEyYjVkNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcwpAQCAtNjgsOSArNjgsMTEgQEAgV2Vi
SW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHJl
ZnJlc2gpIHsKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5zZWN0aW9ucy5s
ZW5ndGg7ICsraSkgewogICAgICAgICAgICAgICAgIHZhciBzZWN0aW9uID0gdGhpcy5zZWN0aW9u
c1tpXTsKKyAgICAgICAgICAgICAgICBpZiAoc2VjdGlvbi5fYmxhbmspCisgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGlmIChzZWN0aW9uLmNvbXB1dGVkU3R5
bGUpCiAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uc3R5bGVSdWxlLnN0eWxlID0gbm9kZS5v
d25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUobm9kZSk7Ci0gICAgICAg
ICAgICAgICAgdmFyIHN0eWxlUnVsZSA9IHsgc2VjdGlvbjogc2VjdGlvbiwgc3R5bGU6IHNlY3Rp
b24uc3R5bGVSdWxlLnN0eWxlLCBjb21wdXRlZFN0eWxlOiBzZWN0aW9uLmNvbXB1dGVkU3R5bGUg
fTsKKyAgICAgICAgICAgICAgICB2YXIgc3R5bGVSdWxlID0geyBzZWN0aW9uOiBzZWN0aW9uLCBz
dHlsZTogc2VjdGlvbi5zdHlsZVJ1bGUuc3R5bGUsIGNvbXB1dGVkU3R5bGU6IHNlY3Rpb24uY29t
cHV0ZWRTdHlsZSwgcnVsZTogc2VjdGlvbi5ydWxlIH07CiAgICAgICAgICAgICAgICAgc3R5bGVS
dWxlcy5wdXNoKHN0eWxlUnVsZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CkBA
IC05MSw4ICs5Myw5IEBAIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAo
bm9kZS5zdHlsZSAmJiAobm9kZS5zdHlsZS5sZW5ndGggfHwgT2JqZWN0Lmhhc1Byb3BlcnRpZXMo
bm9kZS5zdHlsZS5fX2Rpc2FibGVkUHJvcGVydGllcykpKSB7Ci0gICAgICAgICAgICAgICAgdmFy
IGlubGluZVN0eWxlID0geyBzZWxlY3RvclRleHQ6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiSW5s
aW5lIFN0eWxlIEF0dHJpYnV0ZSIpLCBzdHlsZTogbm9kZS5zdHlsZSB9OworICAgICAgICAgICAg
Ly8gQWx3YXlzIFNob3cgZWxlbWVudCdzIFN0eWxlIEF0dHJpYnV0ZXMKKyAgICAgICAgICAgIGlm
IChub2RlLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSkgeworICAgICAgICAgICAgICAg
IHZhciBpbmxpbmVTdHlsZSA9IHsgc2VsZWN0b3JUZXh0OiBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlN0eWxlIEF0dHJpYnV0ZSIpLCBzdHlsZTogbm9kZS5zdHlsZSwgaXNBdHRyaWJ1dGU6IHRydWUg
fTsKICAgICAgICAgICAgICAgICBpbmxpbmVTdHlsZS5zdWJ0aXRsZSA9IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiZWxlbWVudOKAmXMg4oCcJXPigJ0gYXR0cmlidXRlIiwgInN0eWxlIik7CiAgICAg
ICAgICAgICAgICAgc3R5bGVSdWxlcy5wdXNoKGlubGluZVN0eWxlKTsKICAgICAgICAgICAgIH0K
QEAgLTEwMiw3ICsxMDUsNyBAQCBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90
eXBlID0gewogICAgICAgICAgICAgICAgIC8vIEFkZCBydWxlcyBpbiByZXZlcnNlIG9yZGVyIHRv
IG1hdGNoIHRoZSBjYXNjYWRlIG9yZGVyLgogICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAo
bWF0Y2hlZFN0eWxlUnVsZXMubGVuZ3RoIC0gMSk7IGkgPj0gMDsgLS1pKSB7CiAgICAgICAgICAg
ICAgICAgICAgIHZhciBydWxlID0gbWF0Y2hlZFN0eWxlUnVsZXNbaV07Ci0gICAgICAgICAgICAg
ICAgICAgIHN0eWxlUnVsZXMucHVzaCh7IHN0eWxlOiBydWxlLnN0eWxlLCBzZWxlY3RvclRleHQ6
IHJ1bGUuc2VsZWN0b3JUZXh0LCBwYXJlbnRTdHlsZVNoZWV0OiBydWxlLnBhcmVudFN0eWxlU2hl
ZXQgfSk7CisgICAgICAgICAgICAgICAgICAgIHN0eWxlUnVsZXMucHVzaCh7IHN0eWxlOiBydWxl
LnN0eWxlLCBzZWxlY3RvclRleHQ6IHJ1bGUuc2VsZWN0b3JUZXh0LCBwYXJlbnRTdHlsZVNoZWV0
OiBydWxlLnBhcmVudFN0eWxlU2hlZXQsIHJ1bGU6IHJ1bGUgfSk7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xMjgsNiArMTMxLDggQEAgV2ViSW5zcGVj
dG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHZhciBzdHls
ZVJ1bGUgPSBzdHlsZVJ1bGVzW2ldOwogICAgICAgICAgICAgaWYgKHN0eWxlUnVsZS5jb21wdXRl
ZFN0eWxlKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKHN0eWxl
UnVsZS5zZWN0aW9uICYmIHN0eWxlUnVsZS5zZWN0aW9uLm5vQWZmZWN0KQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBzdHlsZVJ1bGUudXNlZFByb3BlcnRpZXMgPSB7
fTsKIApAQCAtMjIzLDYgKzIyOCw5IEBAIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgdmFyIGVkaXRhYmxlID0gc3R5bGVSdWxlLmVk
aXRhYmxlOwogICAgICAgICAgICAgICAgIGRlbGV0ZSBzdHlsZVJ1bGUuZWRpdGFibGU7CiAKKyAg
ICAgICAgICAgICAgICB2YXIgaXNBdHRyaWJ1dGUgPSBzdHlsZVJ1bGUuaXNBdHRyaWJ1dGU7Cisg
ICAgICAgICAgICAgICAgZGVsZXRlIHN0eWxlUnVsZS5pc0F0dHJpYnV0ZTsKKwogICAgICAgICAg
ICAgICAgIC8vIERlZmF1bHQgZWRpdGFibGUgdG8gdHJ1ZSBpZiBpdCB3YXMgb21pdHRlZC4KICAg
ICAgICAgICAgICAgICBpZiAodHlwZW9mIGVkaXRhYmxlID09PSAidW5kZWZpbmVkIikKICAgICAg
ICAgICAgICAgICAgICAgZWRpdGFibGUgPSB0cnVlOwpAQCAtMjM2LDEzICsyNDQsNDkgQEAgV2Vi
SW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAg
ICAgICAgc2VjdGlvbi5leHBhbmRlZCA9IFByZWZlcmVuY2VzLnN0eWxlUnVsZXNFeHBhbmRlZFN0
YXRlW3NlY3Rpb24uaWRlbnRpZmllcl07CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY29tcHV0
ZWRTdHlsZSkKICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi5jb2xsYXBzZSh0cnVlKTsKKyAg
ICAgICAgICAgICAgICBlbHNlIGlmIChpc0F0dHJpYnV0ZSAmJiBzdHlsZVJ1bGUuc3R5bGUubGVu
Z3RoID09PSAwKQorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLmNvbGxhcHNlKHRydWUpOwog
ICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi5leHBhbmQo
dHJ1ZSk7CiAKICAgICAgICAgICAgICAgICBib2R5LmFwcGVuZENoaWxkKHNlY3Rpb24uZWxlbWVu
dCk7CiAgICAgICAgICAgICAgICAgdGhpcy5zZWN0aW9ucy5wdXNoKHNlY3Rpb24pOwogICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB0aGlzLmFkZEJsYW5rU2VjdGlvbigpOwogICAgICAgICB9
CisgICAgfSwKKworICAgIGFkZEJsYW5rU2VjdGlvbjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgdmFyIGJsYW5rU2VjdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuQmxhbmtTdHlsZVByb3BlcnRp
ZXNTZWN0aW9uKCk7CisgICAgICAgIGJsYW5rU2VjdGlvbi5wYW5lID0gdGhpczsKKworICAgICAg
ICB0aGlzLmJvZHlFbGVtZW50Lmluc2VydEJlZm9yZShibGFua1NlY3Rpb24uZWxlbWVudCwgdGhp
cy5ib2R5RWxlbWVudC5maXJzdENoaWxkLm5leHRTaWJsaW5nLm5leHRTaWJsaW5nKTsgLy8gMCBp
cyBjb21wdXRlZCwgMSBpcyBlbGVtZW50LnN0eWxlCisgICAgICAgIHZhciBjb21wdXRlZCA9IHRo
aXMuc2VjdGlvbnMuc2hpZnQoKTsKKyAgICAgICAgdmFyIGVsZW1lbnRTdHlsZSA9IHRoaXMuc2Vj
dGlvbnMuc2hpZnQoKTsKKyAgICAgICAgdGhpcy5zZWN0aW9ucy51bnNoaWZ0KGJsYW5rU2VjdGlv
bik7CisgICAgICAgIHRoaXMuc2VjdGlvbnMudW5zaGlmdChlbGVtZW50U3R5bGUpOworICAgICAg
ICB0aGlzLnNlY3Rpb25zLnVuc2hpZnQoY29tcHV0ZWQpOworICAgIH0sCisKKyAgICBhcHByb3By
aWF0ZVNlbGVjdG9yRm9yTm9kZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIG5vZGUg
PSB0aGlzLm5vZGU7CisgICAgICAgIGlmICghbm9kZSkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBpZiAobm9kZS5pZCkKKyAgICAgICAgICAgIHJldHVybiAiIyIgKyBub2RlLmlkOwor
CisgICAgICAgIGlmIChub2RlLmNsYXNzTmFtZSkKKyAgICAgICAgICAgIHJldHVybiAiLiIgKyBu
b2RlLmNsYXNzTmFtZS5yZXBsYWNlKC9ccysvLCAiLiIpOworCisgICAgICAgIHZhciBub2RlTmFt
ZSA9IG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsKKyAgICAgICAgaWYgKG5vZGVOYW1lID09
PSAiaW5wdXQiICYmIG5vZGUudHlwZSkKKyAgICAgICAgICAgIHJldHVybiBub2RlTmFtZSArICJb
dHlwZT1cIiIgKyBub2RlLnR5cGUgKyAiXCJdIjsKKworICAgICAgICByZXR1cm4gbm9kZU5hbWU7
CiAgICAgfQogfQogCkBAIC0yNTEsOCArMjk1LDEyIEBAIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRl
YmFyUGFuZS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lLnBy
CiBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbiA9IGZ1bmN0aW9uKHN0eWxlUnVs
ZSwgc3VidGl0bGUsIGNvbXB1dGVkU3R5bGUsIHVzZWRQcm9wZXJ0aWVzLCBlZGl0YWJsZSkKIHsK
ICAgICBXZWJJbnNwZWN0b3IuUHJvcGVydGllc1NlY3Rpb24uY2FsbCh0aGlzLCBzdHlsZVJ1bGUu
c2VsZWN0b3JUZXh0KTsKKyAgICB0aGlzLnRpdGxlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJj
bGljayIsIGZ1bmN0aW9uKGUpIHsgZS5zdG9wUHJvcGFnYXRpb24oKTsgfSwgZmFsc2UpOworICAg
IHRoaXMudGl0bGVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImRibGNsaWNrIiwgdGhpcy5fZGJs
Y2xpY2tTZWxlY3Rvci5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgdGhpcy5lbGVtZW50LmFkZEV2
ZW50TGlzdGVuZXIoImRibGNsaWNrIiwgdGhpcy5fZGJsY2xpY2tFbXB0eVNwYWNlLmJpbmQodGhp
cyksIGZhbHNlKTsKIAogICAgIHRoaXMuc3R5bGVSdWxlID0gc3R5bGVSdWxlOworICAgIHRoaXMu
cnVsZSA9IHRoaXMuc3R5bGVSdWxlLnJ1bGU7CiAgICAgdGhpcy5jb21wdXRlZFN0eWxlID0gY29t
cHV0ZWRTdHlsZTsKICAgICB0aGlzLmVkaXRhYmxlID0gKGVkaXRhYmxlICYmICFjb21wdXRlZFN0
eWxlKTsKIApAQCAtMzAwLDYgKzM0OCw4IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRpZXNT
ZWN0aW9uID0gZnVuY3Rpb24oc3R5bGVSdWxlLCBzdWJ0aXRsZSwgY29tcHV0ZWRTdHlsCiAgICAg
ICAgICAgICAgICAgc3VidGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoInVzZXIgYWdlbnQg
c3R5bGVzaGVldCIpOwogICAgICAgICAgICAgZWxzZSBpZiAoaXNVc2VyKQogICAgICAgICAgICAg
ICAgIHN1YnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJ1c2VyIHN0eWxlc2hlZXQiKTsK
KyAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuc3R5bGVSdWxlLnBhcmVudFN0eWxlU2hlZXQgPT09
IFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMuc3R5bGVzaGVldCkKKyAgICAgICAgICAgICAg
ICBzdWJ0aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygidmlhIGluc3BlY3RvciIpOwogICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHN1YnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJpbmxpbmUgc3R5bGVzaGVldCIpOwogICAgICAgICB9CkBAIC0zMDksNyArMzU5LDcg
QEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24gPSBmdW5jdGlvbihzdHlsZVJ1
bGUsIHN1YnRpdGxlLCBjb21wdXRlZFN0eWwKIAogICAgIHRoaXMuaWRlbnRpZmllciA9IHN0eWxl
UnVsZS5zZWxlY3RvclRleHQ7CiAgICAgaWYgKHRoaXMuc3VidGl0bGUpCi0gICAgICAgIHRoaXMu
aWRlbnRpZmllciArPSAiOiIgKyB0aGlzLnN1YnRpdGxlRWxlbWVudC50ZXh0Q29udGVudDsKKyAg
ICAgICAgdGhpcy5pZGVudGlmaWVyICs9ICI6IiArIHRoaXMuc3VidGl0bGVFbGVtZW50LnRleHRD
b250ZW50OyAgICAKIH0KIAogV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJv
dG90eXBlID0gewpAQCAtMzI2LDYgKzM3Niw5IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRp
ZXNTZWN0aW9uLnByb3RvdHlwZSA9IHsKIAogICAgIGV4cGFuZDogZnVuY3Rpb24oZG9udFJlbWVt
YmVyU3RhdGUpCiAgICAgeworICAgICAgICBpZiAodGhpcy5fYmxhbmspCisgICAgICAgICAgICBy
ZXR1cm47CisKICAgICAgICAgV2ViSW5zcGVjdG9yLlByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlw
ZS5leHBhbmQuY2FsbCh0aGlzKTsKICAgICAgICAgaWYgKGRvbnRSZW1lbWJlclN0YXRlKQogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMzQ4LDcgKzQwMSw3IEBAIFdlYkluc3BlY3Rvci5TdHlsZVBy
b3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZSA9IHsKIAogICAgIGlzUHJvcGVydHlJbmhlcml0ZWQ6
IGZ1bmN0aW9uKHByb3BlcnR5KQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLmNvbXB1dGVkU3R5
bGUgfHwgIXRoaXMuX3VzZWRQcm9wZXJ0aWVzKQorICAgICAgICBpZiAoIXRoaXMuY29tcHV0ZWRT
dHlsZSB8fCAhdGhpcy5fdXNlZFByb3BlcnRpZXMgfHwgdGhpcy5ub0FmZmVjdCkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgLy8gVGhlc2UgcHJvcGVydGllcyBzaG91bGQgYWx3
YXlzIHNob3cgZm9yIENvbXB1dGVkIFN0eWxlLgogICAgICAgICB2YXIgYWx3YXlzU2hvd0NvbXB1
dGVkUHJvcGVydGllcyA9IHsgImRpc3BsYXkiOiB0cnVlLCAiaGVpZ2h0IjogdHJ1ZSwgIndpZHRo
IjogdHJ1ZSB9OwpAQCAtMzU3LDcgKzQxMCw3IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRp
ZXNTZWN0aW9uLnByb3RvdHlwZSA9IHsKIAogICAgIGlzUHJvcGVydHlPdmVybG9hZGVkOiBmdW5j
dGlvbihwcm9wZXJ0eSwgc2hvcnRoYW5kKQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMuY29tcHV0
ZWRTdHlsZSB8fCAhdGhpcy5fdXNlZFByb3BlcnRpZXMpCisgICAgICAgIGlmICh0aGlzLmNvbXB1
dGVkU3R5bGUgfHwgIXRoaXMuX3VzZWRQcm9wZXJ0aWVzIHx8IHRoaXMubm9BZmZlY3QpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgdmFyIHVzZWQgPSAocHJvcGVydHkgaW4g
dGhpcy51c2VkUHJvcGVydGllcyk7CkBAIC00NTEsMTEgKzUwNCwyMTAgQEAgV2ViSW5zcGVjdG9y
LlN0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlID0gewogICAgICAgICBpdGVtLmxpc3RJ
dGVtRWxlbWVudC50ZXh0Q29udGVudCA9ICIiOwogICAgICAgICBpdGVtLl9uZXdQcm9wZXJ0eSA9
IHRydWU7CiAgICAgICAgIHJldHVybiBpdGVtOworICAgIH0sCisKKyAgICBfZGJsY2xpY2tFbXB0
eVNwYWNlOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuZXhwYW5kKCk7Cisg
ICAgICAgIHRoaXMuYWRkTmV3QmxhbmtQcm9wZXJ0eSgpLnN0YXJ0RWRpdGluZygpOworICAgIH0s
CisKKyAgICBfZGJsY2xpY2tTZWxlY3RvcjogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAg
ICBpZiAoIXRoaXMuZWRpdGFibGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYg
KCF0aGlzLnJ1bGUgJiYgdGhpcy5wcm9wZXJ0aWVzVHJlZU91dGxpbmUuY2hpbGRyZW4ubGVuZ3Ro
ID09PSAwKSB7CisgICAgICAgICAgICB0aGlzLmV4cGFuZCgpOworICAgICAgICAgICAgdGhpcy5h
ZGROZXdCbGFua1Byb3BlcnR5KCkuc3RhcnRFZGl0aW5nKCk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRoaXMucnVsZSkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICB0aGlzLnN0YXJ0RWRpdGluZ1NlbGVjdG9yKCk7CisgICAgICAgIGV2ZW50
LnN0b3BQcm9wYWdhdGlvbigpOworICAgIH0sCisKKyAgICBzdGFydEVkaXRpbmdTZWxlY3Rvcjog
ZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzLnRpdGxlRWxlbWVu
dDsKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5pc0JlaW5nRWRpdGVkKGVsZW1lbnQpKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciBjb250ZXh0ID0gdGhpcy5zdHlsZVJ1bGUu
c2VsZWN0b3JUZXh0OworICAgICAgICBXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0aW5nKHRoaXMudGl0
bGVFbGVtZW50LCB0aGlzLmVkaXRpbmdTZWxlY3RvckNvbW1pdHRlZC5iaW5kKHRoaXMpLCB0aGlz
LmVkaXRpbmdTZWxlY3RvckNhbmNlbGxlZC5iaW5kKHRoaXMpLCBjb250ZXh0KTsKKyAgICAgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLnNldEJhc2VBbmRFeHRlbnQoZWxlbWVudCwgMCwgZWxlbWVu
dCwgMSk7CisgICAgfSwKKworICAgIGVkaXRpbmdTZWxlY3RvckNvbW1pdHRlZDogZnVuY3Rpb24o
ZWxlbWVudCwgbmV3Q29udGVudCwgb2xkQ29udGVudCwgY29udGV4dCwgbW92ZURpcmVjdGlvbikK
KyAgICB7CisgICAgICAgIGZ1bmN0aW9uIG1vdmVUb05leHRJZk5lZWRlZCgpIHsKKyAgICAgICAg
ICAgIGlmICghbW92ZURpcmVjdGlvbiB8fCBtb3ZlRGlyZWN0aW9uICE9PSAiZm9yd2FyZCIpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICB0aGlzLmV4cGFuZCgpOworICAg
ICAgICAgICAgaWYgKHRoaXMucHJvcGVydGllc1RyZWVPdXRsaW5lLmNoaWxkcmVuLmxlbmd0aCA9
PT0gMCkKKyAgICAgICAgICAgICAgICB0aGlzLmFkZE5ld0JsYW5rUHJvcGVydHkoKS5zdGFydEVk
aXRpbmcoKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHZhciBpdGVtID0g
dGhpcy5wcm9wZXJ0aWVzVHJlZU91dGxpbmUuY2hpbGRyZW5bMF0KKyAgICAgICAgICAgICAgICBp
dGVtLnN0YXJ0RWRpdGluZyhpdGVtLnZhbHVlRWxlbWVudCk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICBpZiAobmV3Q29udGVudCA9PT0gb2xkQ29udGVudCkKKyAgICAgICAg
ICAgIHJldHVybiBtb3ZlVG9OZXh0SWZOZWVkZWQuY2FsbCh0aGlzKTsKKworICAgICAgICB0cnkg
eworICAgICAgICAgICAgdmFyIHN0eWxlc2hlZXQgPSB0aGlzLnJ1bGUucGFyZW50U3R5bGVTaGVl
dDsKKyAgICAgICAgICAgIHN0eWxlc2hlZXQuYWRkUnVsZShuZXdDb250ZW50KTsKKyAgICAgICAg
ICAgIHZhciBuZXdSdWxlID0gc3R5bGVzaGVldC5jc3NSdWxlc1tzdHlsZXNoZWV0LmNzc1J1bGVz
Lmxlbmd0aCAtIDFdOworICAgICAgICAgICAgbmV3UnVsZS5zdHlsZS5jc3NUZXh0ID0gdGhpcy5z
dHlsZVJ1bGUuc3R5bGUuY3NzVGV4dDsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAg
ICAgLy8gSW52YWxpZCBTeW50YXggZm9yIGEgU2VsZWN0b3IKKyAgICAgICAgICAgIHRoaXMuZWRp
dGluZ1NlbGVjdG9yQ2FuY2VsbGVkKGVsZW1lbnQsIGNvbnRleHQpOworICAgICAgICAgICAgcmV0
dXJuIG1vdmVUb05leHRJZk5lZWRlZC5jYWxsKHRoaXMpOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKCF0aGlzLl9kb2VzU2VsZWN0b3JBZmZlY3RTZWxlY3RlZE5vZGUobmV3Q29udGVudCkpIHsK
KyAgICAgICAgICAgIHRoaXMubm9BZmZlY3QgPSB0cnVlOworICAgICAgICAgICAgdGhpcy5lbGVt
ZW50LmFkZFN0eWxlQ2xhc3MoIm5vLWFmZmVjdCIpOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgZGVsZXRlIHRoaXMubm9BZmZlY3Q7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQucmVt
b3ZlU3R5bGVDbGFzcygibm8tYWZmZWN0Iik7CisgICAgICAgIH0KKworICAgICAgICB2YXIgcGFy
ZW50UnVsZXMgPSB0aGlzLnJ1bGUucGFyZW50U3R5bGVTaGVldC5jc3NSdWxlczsKKyAgICAgICAg
Zm9yICh2YXIgaSA9IDAsIGxlbiA9IHBhcmVudFJ1bGVzLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7
CisgICAgICAgICAgICBpZiAocGFyZW50UnVsZXNbaV0gPT09IHRoaXMucnVsZSkgeworICAgICAg
ICAgICAgICAgIHRoaXMucnVsZS5wYXJlbnRTdHlsZVNoZWV0LnJlbW92ZVJ1bGUoaSk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB0
aGlzLnJ1bGUgPSBuZXdSdWxlOworICAgICAgICB0aGlzLnN0eWxlUnVsZSA9IHsgc2VjdGlvbjog
dGhpcywgc3R5bGU6IG5ld1J1bGUuc3R5bGUsIHNlbGVjdG9yVGV4dDogbmV3UnVsZS5zZWxlY3Rv
clRleHQsIHBhcmVudFN0eWxlU2hlZXQ6IG5ld1J1bGUucGFyZW50U3R5bGVTaGVldCwgcnVsZTog
bmV3UnVsZSB9OworICAgICAgICB0aGlzLnBhbmUudXBkYXRlKG51bGwsIHRydWUpOworICAgICAg
ICBtb3ZlVG9OZXh0SWZOZWVkZWQuY2FsbCh0aGlzKTsKKyAgICB9LAorCisgICAgZWRpdGluZ1Nl
bGVjdG9yQ2FuY2VsbGVkOiBmdW5jdGlvbihlbGVtZW50LCBjb250ZXh0KQorICAgIHsKKyAgICAg
ICAgZWxlbWVudC50ZXh0Q29udGVudCA9IGNvbnRleHQ7CisgICAgfSwKKworICAgIF9kb2VzU2Vs
ZWN0b3JBZmZlY3RTZWxlY3RlZE5vZGU6IGZ1bmN0aW9uKHNlbGVjdG9yKQorICAgIHsKKyAgICAg
ICAgdmFyIHNlbGVjdGVkTm9kZSA9IHRoaXMucGFuZS5ub2RlOworICAgICAgICB2YXIgbm9kZXMg
PSBzZWxlY3RlZE5vZGUub3duZXJEb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTsK
KyAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IG5vZGVzLmxlbmd0aDsgaSA8IGxlbjsgKytp
KSB7CisgICAgICAgICAgICBpZiAobm9kZXNbaV0gPT09IHNlbGVjdGVkTm9kZSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiB9CiAKIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlw
ZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuUHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlOwog
CitXZWJJbnNwZWN0b3IuQmxhbmtTdHlsZVByb3BlcnRpZXNTZWN0aW9uID0gZnVuY3Rpb24oKQor
eworICAgIFdlYkluc3BlY3Rvci5Qcm9wZXJ0aWVzU2VjdGlvbi5jYWxsKHRoaXMsIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiRG91YmxlLUNsaWNrIHRvIEFkZCIpLCBudWxsKTsKKworICAgIHRoaXMu
X2JsYW5rID0gdHJ1ZTsKKyAgICB0aGlzLl9kYmxjbGlja0xpc3RlbmVyID0gdGhpcy5fZGJsY2xp
Y2suYmluZCh0aGlzKTsKKyAgICB0aGlzLmVsZW1lbnQuYWRkU3R5bGVDbGFzcygiYmxhbmstc2Vj
dGlvbiIpOworICAgIHRoaXMudGl0bGVFbGVtZW50LmFkZFN0eWxlQ2xhc3MoImJsYW5rLXRpdGxl
Iik7CisgICAgdGhpcy50aXRsZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5j
dGlvbihlKSB7IGUuc3RvcFByb3BhZ2F0aW9uKCk7IH0sIGZhbHNlKTsKKyAgICB0aGlzLnRpdGxl
RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJkYmxjbGljayIsIHRoaXMuX2RibGNsaWNrTGlzdGVu
ZXIsIGZhbHNlKTsKK30KKworV2ViSW5zcGVjdG9yLkJsYW5rU3R5bGVQcm9wZXJ0aWVzU2VjdGlv
bi5wcm90b3R5cGUgPSB7CisgICAgX2RibGNsaWNrOiBmdW5jdGlvbihldmVudCkKKyAgICB7Cisg
ICAgICAgIHRoaXMuc3RhcnRFZGl0aW5nKCk7CisgICAgfSwKKworICAgIHN0YXJ0RWRpdGluZzog
ZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzLnRpdGxlRWxlbWVu
dDsKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5pc0JlaW5nRWRpdGVkKGVsZW1lbnQpKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMudGl0bGVFbGVtZW50LnRleHRDb250ZW50
ID0gdGhpcy5wYW5lLmFwcHJvcHJpYXRlU2VsZWN0b3JGb3JOb2RlKCk7CisgICAgICAgIHRoaXMu
dGl0bGVFbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoImJsYW5rLXRpdGxlIik7CisgICAgICAgIFdl
Ykluc3BlY3Rvci5zdGFydEVkaXRpbmcodGhpcy50aXRsZUVsZW1lbnQsIHRoaXMuZWRpdGluZ0Nv
bW1pdHRlZC5iaW5kKHRoaXMpLCB0aGlzLmVkaXRpbmdDYW5jZWxsZWQuYmluZCh0aGlzKSwgIiIp
OworICAgICAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0QmFzZUFuZEV4dGVudChlbGVtZW50
LCAwLCBlbGVtZW50LCAxKTsKKyAgICB9LAorCisgICAgZWRpdGluZ0NhbmNlbGxlZDogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgdGhpcy50aXRsZUVsZW1lbnQudGV4dENvbnRlbnQgPSBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkRvdWJsZS1DbGljayB0byBBZGQiKTsKKyAgICAgICAgdGhpcy50
aXRsZUVsZW1lbnQuYWRkU3R5bGVDbGFzcygiYmxhbmstdGl0bGUiKTsKKyAgICB9LAorCisgICAg
ZWRpdGluZ0NvbW1pdHRlZDogZnVuY3Rpb24oZWxlbWVudCwgbmV3Q29udGVudCwgb2xkQ29udGVu
dCwgY29udGV4dCkKKyAgICB7CisgICAgICAgIHZhciBzdHlsZXNoZWV0ID0gV2ViSW5zcGVjdG9y
LnBhbmVscy5lbGVtZW50cy5zdHlsZXNoZWV0OworICAgICAgICBpZiAoIXN0eWxlc2hlZXQpIHsK
KyAgICAgICAgICAgIHZhciBpbnNwZWN0ZWREb2N1bWVudCA9IEluc3BlY3RvckNvbnRyb2xsZXIu
aW5zcGVjdGVkV2luZG93KCkuZG9jdW1lbnQ7CisgICAgICAgICAgICB2YXIgaGVhZCA9IGluc3Bl
Y3RlZERvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF07CisgICAgICAgICAg
ICB2YXIgc3R5bGVFbGVtZW50ID0gaW5zcGVjdGVkRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5
bGUiKTsKKyAgICAgICAgICAgIHN0eWxlRWxlbWVudC50eXBlID0gInRleHQvY3NzIjsKKyAgICAg
ICAgICAgIGhlYWQuYXBwZW5kQ2hpbGQoc3R5bGVFbGVtZW50KTsKKyAgICAgICAgICAgIHN0eWxl
c2hlZXQgPSBpbnNwZWN0ZWREb2N1bWVudC5zdHlsZVNoZWV0c1tpbnNwZWN0ZWREb2N1bWVudC5z
dHlsZVNoZWV0cy5sZW5ndGggLSAxXTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMu
ZWxlbWVudHMuc3R5bGVzaGVldCA9IHN0eWxlc2hlZXQ7CisgICAgICAgIH0KKworICAgICAgICB0
cnkgeworICAgICAgICAgICAgc3R5bGVzaGVldC5hZGRSdWxlKG5ld0NvbnRlbnQpOworICAgICAg
ICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAvLyBJbnZhbGlkIFN5bnRheCBmb3IgYSBTZWxl
Y3RvcgorICAgICAgICAgICAgdGhpcy5lZGl0aW5nQ2FuY2VsbGVkKCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB2YXIgcnVsZSA9IHN0eWxlc2hlZXQuY3NzUnVs
ZXNbc3R5bGVzaGVldC5jc3NSdWxlcy5sZW5ndGggLSAxXTsKKyAgICAgICAgdmFyIHN0eWxlUnVs
ZSA9IHsgc2VjdGlvbjogdGhpcywgc3R5bGU6IHJ1bGUuc3R5bGUsIHNlbGVjdG9yVGV4dDogcnVs
ZS5zZWxlY3RvclRleHQsIHBhcmVudFN0eWxlU2hlZXQ6IHJ1bGUucGFyZW50U3R5bGVTaGVldCwg
cnVsZTogcnVsZSB9OworICAgICAgICB0aGlzLm1ha2VOb3JtYWwoc3R5bGVSdWxlKTsKKworICAg
ICAgICBpZiAoIXRoaXMuX2RvZXNTZWxlY3RvckFmZmVjdFNlbGVjdGVkTm9kZShuZXdDb250ZW50
KSkgeworICAgICAgICAgICAgdGhpcy5ub0FmZmVjdCA9IHRydWU7CisgICAgICAgICAgICB0aGlz
LmVsZW1lbnQuYWRkU3R5bGVDbGFzcygibm8tYWZmZWN0Iik7CisgICAgICAgIH0KKworICAgICAg
ICB0aGlzLnN1YnRpdGxlRWxlbWVudC50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygidmlhIGluc3BlY3RvciIpOworICAgICAgICB0aGlzLmV4cGFuZCgpOworCisgICAgICAgIHRo
aXMucGFuZS5hZGRCbGFua1NlY3Rpb24oKTsKKyAgICAgICAgdGhpcy5hZGROZXdCbGFua1Byb3Bl
cnR5KCkuc3RhcnRFZGl0aW5nKCk7CisgICAgfSwKKworICAgIG1ha2VOb3JtYWw6IGZ1bmN0aW9u
KHN0eWxlUnVsZSkKKyAgICB7CisgICAgICAgIHRoaXMudGl0bGVFbGVtZW50LnJlbW92ZUV2ZW50
TGlzdGVuZXIoImRibGNsaWNrIiwgdGhpcy5fZGJsY2xpY2tMaXN0ZW5lciwgZmFsc2UpOworICAg
ICAgICB0aGlzLnRpdGxlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJkYmxjbGljayIsIHRoaXMu
X2RibGNsaWNrU2VsZWN0b3IuYmluZCh0aGlzKSwgZmFsc2UpOworICAgICAgICB0aGlzLmVsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigiZGJsY2xpY2siLCB0aGlzLl9kYmxjbGlja0VtcHR5U3BhY2Uu
YmluZCh0aGlzKSwgZmFsc2UpOworICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlU3R5bGVDbGFz
cygiYmxhbmstc2VjdGlvbiIpOworICAgICAgICBkZWxldGUgdGhpcy5fYmxhbms7CisgICAgICAg
IGRlbGV0ZSB0aGlzLl9kYmxjbGljazsKKyAgICAgICAgZGVsZXRlIHRoaXMuc3RhcnRFZGl0aW5n
OworICAgICAgICBkZWxldGUgdGhpcy5lZGl0aW5nQ2FuY2VsbGVkOworICAgICAgICBkZWxldGUg
dGhpcy5lZGl0aW5nQ29tbWl0dGVkOworICAgICAgICBkZWxldGUgdGhpcy5fZGJsY2xpY2tMaXN0
ZW5lcjsKKyAgICAgICAgZGVsZXRlIHRoaXMubWFrZU5vcm1hbDsKKyAgICAgICAgdGhpcy5zdHls
ZVJ1bGUgPSBzdHlsZVJ1bGU7CisgICAgICAgIHRoaXMucnVsZSA9IHN0eWxlUnVsZS5ydWxlOwor
ICAgICAgICB0aGlzLmNvbXB1dGVkU3R5bGUgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5lZGl0YWJs
ZSA9IHRydWU7CisgICAgICAgIC8vIGxlZnRvdmVycyBhcmU6IHRoaXMubm9BZmZlY3QgaWYgYXBw
bGljYWJsZQorICAgIH0KK30KKworV2ViSW5zcGVjdG9yLkJsYW5rU3R5bGVQcm9wZXJ0aWVzU2Vj
dGlvbi5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1Nl
Y3Rpb24ucHJvdG90eXBlOworCiBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50
ID0gZnVuY3Rpb24oc3R5bGUsIG5hbWUsIHNob3J0aGFuZCwgaW5oZXJpdGVkLCBvdmVybG9hZGVk
LCBkaXNhYmxlZCkKIHsKICAgICB0aGlzLnN0eWxlID0gc3R5bGU7CkBAIC03MzEsNiArOTgzLDcg
QEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAg
ICAgb25kYmxjbGljazogZnVuY3Rpb24oZWxlbWVudCwgZXZlbnQpCiAgICAgewogICAgICAgICB0
aGlzLnN0YXJ0RWRpdGluZyhldmVudC50YXJnZXQpOworICAgICAgICBldmVudC5zdG9wUHJvcGFn
YXRpb24oKTsKICAgICB9LAogCiAgICAgc3RhcnRFZGl0aW5nOiBmdW5jdGlvbihzZWxlY3RFbGVt
ZW50KQpAQCAtODU4LDcgKzExMTEsOSBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVF
bGVtZW50LnByb3RvdHlwZSA9IHsKIAogICAgIGVkaXRpbmdDYW5jZWxsZWQ6IGZ1bmN0aW9uKGVs
ZW1lbnQsIGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAodGhpcy5vcmlnaW5hbENTU1RleHQp
IHsKKyAgICAgICAgaWYgKHRoaXMuX25ld1Byb3BlcnR5KQorICAgICAgICAgICAgdGhpcy50cmVl
T3V0bGluZS5yZW1vdmVDaGlsZCh0aGlzKTsKKyAgICAgICAgZWxzZSBpZiAodGhpcy5vcmlnaW5h
bENTU1RleHQpIHsKICAgICAgICAgICAgIHRoaXMuc3R5bGUuY3NzVGV4dCA9IHRoaXMub3JpZ2lu
YWxDU1NUZXh0OwogCiAgICAgICAgICAgICBpZiAodGhpcy50cmVlT3V0bGluZS5zZWN0aW9uICYm
IHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbi5wYW5lKQpAQCAtODc2LDEzICsxMTMxLDE0IEBAIFdl
Ykluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAg
ICB0aGlzLmVkaXRpbmdFbmRlZChjb250ZXh0KTsKIAogICAgICAgICAvLyBEZXRlcm1pbmUgd2hl
cmUgdG8gbW92ZSB0byBiZWZvcmUgbWFraW5nIGNoYW5nZXMKLSAgICAgICAgdmFyIG5ld1Byb3Bl
cnR5ID0gZmFsc2U7Ci0gICAgICAgIHZhciBtb3ZlVG9Qcm9wZXJ0eU5hbWU7CisgICAgICAgIHZh
ciBuZXdQcm9wZXJ0eSwgbW92ZVRvUHJvcGVydHlOYW1lLCBtb3ZlVG9TZWxlY3RvcjsKICAgICAg
ICAgdmFyIG1vdmVUbyA9IChtb3ZlRGlyZWN0aW9uID09PSAiZm9yd2FyZCIgPyB0aGlzLm5leHRT
aWJsaW5nIDogdGhpcy5wcmV2aW91c1NpYmxpbmcpOwogICAgICAgICBpZiAobW92ZVRvKQogICAg
ICAgICAgICAgbW92ZVRvUHJvcGVydHlOYW1lID0gbW92ZVRvLm5hbWU7CiAgICAgICAgIGVsc2Ug
aWYgKG1vdmVEaXJlY3Rpb24gPT09ICJmb3J3YXJkIikKICAgICAgICAgICAgIG5ld1Byb3BlcnR5
ID0gdHJ1ZTsKKyAgICAgICAgZWxzZSBpZiAobW92ZURpcmVjdGlvbiA9PT0gImJhY2t3YXJkIiAm
JiB0aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24ucnVsZSkKKyAgICAgICAgICAgIG1vdmVUb1NlbGVj
dG9yID0gdHJ1ZTsKIAogICAgICAgICAvLyBNYWtlIHRoZSBDaGFuZ2VzIGFuZCB0cmlnZ2VyIHRo
ZSBtb3ZlVG9OZXh0Q2FsbGJhY2sgYWZ0ZXIgdXBkYXRpbmcKICAgICAgICAgdmFyIGJsYW5rSW5w
dXQgPSAvXlxzKiQvLnRlc3QodXNlcklucHV0KTsKQEAgLTkxOSw3ICsxMTc1LDExIEBAIFdlYklu
c3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAgICAgICAg
ICAgICAgICAgdmFyIGl0ZW0gPSBzZWN0aW9uLmFkZE5ld0JsYW5rUHJvcGVydHkoKTsKICAgICAg
ICAgICAgICAgICBpdGVtLnN0YXJ0RWRpdGluZygpOworICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1vdmVUb1NlbGVjdG9yKQorICAgICAg
ICAgICAgICAgIHNlY3Rpb24uc3RhcnRFZGl0aW5nU2VsZWN0b3IoKTsKICAgICAgICAgfQogICAg
IH0sCiAKQEAgLTk5OCw2ICsxMjU4LDkgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVl
RWxlbWVudC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKHVwZGF0ZUludGVyZmFjZSkKICAg
ICAgICAgICAgIHRoaXMudXBkYXRlQWxsKHRydWUpOworCisgICAgICAgIGlmICghdGhpcy5ydWxl
KQorICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy50cmVlT3V0bGluZS51
cGRhdGUoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9pbnNwZWN0b3IuY3NzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rv
ci5jc3MKaW5kZXggZGFiYWRjMi4uMDcwMjkzNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5jc3MKQEAgLTExODIsNiArMTE4MiwxMCBAQCBib2R5LmluYWN0aXZlIC5w
bGFjYXJkLnNlbGVjdGVkIHsKICAgICAtd2Via2l0LWJhY2tncm91bmQtY2xpcDogcGFkZGluZzsK
IH0KIAorLnNlY3Rpb24ubm8tYWZmZWN0IC5oZWFkZXIgeworICAgIGJhY2tncm91bmQtaW1hZ2U6
IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20sIGZyb20ocmdi
KDE2NywgMTY3LCAxNjcpKSwgdG8ocmdiKDEyMywgMTIzLCAxMjMpKSkKK30KKwogLnNlY3Rpb24g
LmhlYWRlcjo6YmVmb3JlIHsKICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgdG9wOiA0cHg7
CkBAIC0xMTkxLDYgKzExOTUsMTAgQEAgYm9keS5pbmFjdGl2ZSAucGxhY2FyZC5zZWxlY3RlZCB7
CiAgICAgY29udGVudDogdXJsKEltYWdlcy90cmVlUmlnaHRUcmlhbmdsZVdoaXRlLnBuZyk7CiB9
CiAKKy5zZWN0aW9uLmJsYW5rLXNlY3Rpb24gLmhlYWRlcjo6YmVmb3JlIHsKKyAgICBkaXNwbGF5
OiBub25lOworfQorCiAuc2VjdGlvbi5leHBhbmRlZCAuaGVhZGVyOjpiZWZvcmUgewogICAgIGNv
bnRlbnQ6IHVybChJbWFnZXMvdHJlZURvd25UcmlhbmdsZVdoaXRlLnBuZyk7CiB9CkBAIC0xMjAy
LDYgKzEyMTAsMTAgQEAgYm9keS5pbmFjdGl2ZSAucGxhY2FyZC5zZWxlY3RlZCB7CiAgICAgd2hp
dGUtc3BhY2U6IG5vcm1hbDsKIH0KIAorLnNlY3Rpb24gLmhlYWRlciAudGl0bGUuYmxhbmstdGl0
bGUgeworICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKK30KKwogLnNlY3Rpb24gLmhlYWRlciBsYWJl
bCB7CiAgICAgZGlzcGxheTogbm9uZTsKIH0KQEAgLTEyMzksNiArMTI1MSwxNSBAQCBib2R5Lmlu
YWN0aXZlIC5wbGFjYXJkLnNlbGVjdGVkIHsKICAgICBwYWRkaW5nOiAycHggNnB4IDNweDsKICAg
ICBsaXN0LXN0eWxlOiBub25lOwogICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOworICAgIG1p
bi1oZWlnaHQ6IDE4cHg7Cit9CisKKy5zZWN0aW9uLm5vLWFmZmVjdCAucHJvcGVydGllcyBsaSB7
CisgICAgb3BhY2l0eTogMC41OworfQorCisuc2VjdGlvbi5uby1hZmZlY3QgLnByb3BlcnRpZXMg
bGkuZWRpdGluZyB7CisgICAgb3BhY2l0eTogMS4wOwogfQogCiAuc2VjdGlvbi5leHBhbmRlZCAu
cHJvcGVydGllcyB7Cg==
</data>
<flag name="review"
          id="17985"
          type_id="1"
          status="-"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33785</attachid>
            <date>2009-07-30 08:57:14 -0700</date>
            <delta_ts>2009-07-30 08:58:04 -0700</delta_ts>
            <desc>Edit CSS Selectors (diff --binary)</desc>
            <filename>EditCssSelectorsWithBinary.patch</filename>
            <type>text/plain</type>
            <size>22173</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZGI5ZjMzOS4uNTZlY2UxNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAwOS0wNy0zMCAgSm9zZXBoIFBlY29y
YXJvICA8am9lcGVjazAyQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbnNwZWN0b3I6IGxldCBtZSAqZWRpdCogY3NzIHN0eWxlcyBp
biB0aGUgd2ViIGluc3BlY3Rvci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI3MTI0CisKKyAgICAgICAgKiBFbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0
cmluZ3MuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwpOiBhZGRlZCBwcm9wZXJ0eSBz
dHlsZXNoZWV0IHBvaW50aW5nIHRvIDEgc3R5bGVzaGVldCBhZGRlZCB0byB0aGUgcGFnZSBpZiBu
ZWVkZWQKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZS51cGRh
dGUpOiBoYW5kbGUgYmxhbmsgc2VjdGlvbnMKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZXNT
aWRlYmFyUGFuZS5wcm90b3R5cGUuYWRkQmxhbmtTZWN0aW9uKTogYmxhbmsgc2VjdGlvbiBpbiB0
aGUgY29ycmVjdCBwb3NpdGlvbgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQ
YW5lLnByb3RvdHlwZS5hcHByb3ByaWF0ZVNlbGVjdG9yRm9yTm9kZSk6IGhlbHBlciB0byBnZXQg
YSBuaWNlIHNlbGVjdG9yIGZvciB0aGUgc2VsZWN0ZCBub2RlCisgICAgICAgIChXZWJJbnNwZWN0
b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQ
cm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUuZXhwYW5kKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5TdHlsZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZS5pc1Byb3BlcnR5SW5oZXJpdGVkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZS5p
c1Byb3BlcnR5T3ZlcmxvYWRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0
aWVzU2VjdGlvbi5wcm90b3R5cGUuYWRkTmV3QmxhbmtQcm9wZXJ0eSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUuX2RibGNsaWNrRW1wdHlT
cGFjZSk6IGVhc2lseSBjcmVhdGUgbmV3IHByb3BlcnRpZXMKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5TdHlsZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZS5fZGJsY2xpY2tTZWxlY3Rvcik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUuc3Rh
cnRFZGl0aW5nU2VsZWN0b3IpOiBhbGxvdyBmb3IgZWRpdGluZyBzZWxlY3RvcnMKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZS5lZGl0aW5nU2Vs
ZWN0b3JDb21taXR0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1Nl
Y3Rpb24ucHJvdG90eXBlLmVkaXRpbmdTZWxlY3RvckNhbmNlbGxlZCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUuX2RvZXNTZWxlY3RvckFm
ZmVjdFNlbGVjdGVkTm9kZSk6IGhlbHBlciB0byBjaGVjayBpZiBhIHNlbGVjdG9yIGFwcGxpZXMg
dG8gdGhlIHNlbGVjdGVkIG5vZGUKKyAgICAgICAgKFdlYkluc3BlY3Rvci5CbGFua1N0eWxlUHJv
cGVydGllc1NlY3Rpb24ucHJvdG90eXBlLl9kYmxjbGljayk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQmxhbmtTdHlsZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZS5zdGFydEVkaXRpbmcpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkJsYW5rU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5
cGUuZWRpdGluZ0NhbmNlbGxlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQmxhbmtTdHlsZVBy
b3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZS5lZGl0aW5nQ29tbWl0dGVkKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5CbGFua1N0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlLm1ha2VOb3Jt
YWwpOiBtb3JwaCBpbnRvIGEgU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUuKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3M6CisKIDIwMDktMDctMjkgIEppYW4g
TGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL2xvY2FsaXplZFN0cmluZ3Mu
anMgYi9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwppbmRleCAwNjY2
NTRjMWNkZWFjYzE3MjM5MThkZDQwMTM3ZjNhYzcwMGM5ZWNhLi5iYjdmZjZkYTk0ODcwNTY1N2Qy
ZDkxMzk1NTZjNWVlNjljNjdmYTJkIDEwMDY0NApHSVQgYmluYXJ5IHBhdGNoCmRlbHRhIDE3OQp6
Y21iUVlpMUZRRyN0cSpqY3dIRnM4QT0oRjc7K2Q9OEZWTGE2Y0x0cFdKbSEqQzVCaUExcU5GblIk
ezxWIXdPYjIKelN5NTdWXkE4Q291RlcwRkp1O0tNbCpKfmBeNUwzWDwtaTRHK2ltN0A1RH1jYkNQ
MmxsajNKWEQ1b2t+Kkxtb3BoClhMamxtRFdRRyE7d004aEY7OFNKSXp7TE9ueHkyfnQKCmRlbHRh
IDY0CnpjbWFGMm1+cX1CI3RxKmpIZGpjcGFQZkxGPFQyemhXQ0Y9bDI4R0ZnP1hAdlA2ZXJ2R1lI
WTRpP3ZkR0M8LWpFZgpFMEdYVDx0TjtLMgoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0VsZW1lbnRzUGFuZWwuanMKaW5kZXggNzZkOTc0Ni4uNTVmNjkzZiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanMKKysrIGIvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanMKQEAgLTExNCw2ICsxMTQsOCBAQCBX
ZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbCA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLl9ub2RlUmVt
b3ZlZEV2ZW50TGlzdGVuZXIgPSBJbnNwZWN0b3JDb250cm9sbGVyLndyYXBDYWxsYmFjayh0aGlz
Ll9ub2RlUmVtb3ZlZC5iaW5kKHRoaXMpKTsKICAgICB0aGlzLl9jb250ZW50TG9hZGVkRXZlbnRM
aXN0ZW5lciA9IEluc3BlY3RvckNvbnRyb2xsZXIud3JhcENhbGxiYWNrKHRoaXMuX2NvbnRlbnRM
b2FkZWQuYmluZCh0aGlzKSk7CiAKKyAgICB0aGlzLnN0eWxlc2hlZXQgPSBudWxsOworCiAgICAg
dGhpcy5yZXNldCgpOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU3R5bGVzU2lkZWJhclBhbmUuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5
bGVzU2lkZWJhclBhbmUuanMKaW5kZXggMTc4NWQ3Ny4uNGYwMmNhNCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCisrKyBiL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcwpAQCAtNjgsOSArNjgs
MTEgQEAgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgaWYgKHJlZnJlc2gpIHsKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5z
ZWN0aW9ucy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgICAgIHZhciBzZWN0aW9uID0gdGhp
cy5zZWN0aW9uc1tpXTsKKyAgICAgICAgICAgICAgICBpZiAoc2VjdGlvbi5fYmxhbmspCisgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGlmIChzZWN0aW9uLmNv
bXB1dGVkU3R5bGUpCiAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uc3R5bGVSdWxlLnN0eWxl
ID0gbm9kZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUobm9kZSk7
Ci0gICAgICAgICAgICAgICAgdmFyIHN0eWxlUnVsZSA9IHsgc2VjdGlvbjogc2VjdGlvbiwgc3R5
bGU6IHNlY3Rpb24uc3R5bGVSdWxlLnN0eWxlLCBjb21wdXRlZFN0eWxlOiBzZWN0aW9uLmNvbXB1
dGVkU3R5bGUgfTsKKyAgICAgICAgICAgICAgICB2YXIgc3R5bGVSdWxlID0geyBzZWN0aW9uOiBz
ZWN0aW9uLCBzdHlsZTogc2VjdGlvbi5zdHlsZVJ1bGUuc3R5bGUsIGNvbXB1dGVkU3R5bGU6IHNl
Y3Rpb24uY29tcHV0ZWRTdHlsZSwgcnVsZTogc2VjdGlvbi5ydWxlIH07CiAgICAgICAgICAgICAg
ICAgc3R5bGVSdWxlcy5wdXNoKHN0eWxlUnVsZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0g
ZWxzZSB7CkBAIC05MSw4ICs5Myw5IEBAIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICBpZiAobm9kZS5zdHlsZSAmJiAobm9kZS5zdHlsZS5sZW5ndGggfHwgT2JqZWN0Lmhhc1By
b3BlcnRpZXMobm9kZS5zdHlsZS5fX2Rpc2FibGVkUHJvcGVydGllcykpKSB7Ci0gICAgICAgICAg
ICAgICAgdmFyIGlubGluZVN0eWxlID0geyBzZWxlY3RvclRleHQ6IFdlYkluc3BlY3Rvci5VSVN0
cmluZygiSW5saW5lIFN0eWxlIEF0dHJpYnV0ZSIpLCBzdHlsZTogbm9kZS5zdHlsZSB9OworICAg
ICAgICAgICAgLy8gQWx3YXlzIFNob3cgZWxlbWVudCdzIFN0eWxlIEF0dHJpYnV0ZXMKKyAgICAg
ICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSkgeworICAgICAg
ICAgICAgICAgIHZhciBpbmxpbmVTdHlsZSA9IHsgc2VsZWN0b3JUZXh0OiBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlN0eWxlIEF0dHJpYnV0ZSIpLCBzdHlsZTogbm9kZS5zdHlsZSwgaXNBdHRyaWJ1
dGU6IHRydWUgfTsKICAgICAgICAgICAgICAgICBpbmxpbmVTdHlsZS5zdWJ0aXRsZSA9IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiZWxlbWVudOKAmXMg4oCcJXPigJ0gYXR0cmlidXRlIiwgInN0eWxl
Iik7CiAgICAgICAgICAgICAgICAgc3R5bGVSdWxlcy5wdXNoKGlubGluZVN0eWxlKTsKICAgICAg
ICAgICAgIH0KQEAgLTEwMiw3ICsxMDUsNyBAQCBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBh
bmUucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIC8vIEFkZCBydWxlcyBpbiByZXZlcnNl
IG9yZGVyIHRvIG1hdGNoIHRoZSBjYXNjYWRlIG9yZGVyLgogICAgICAgICAgICAgICAgIGZvciAo
dmFyIGkgPSAobWF0Y2hlZFN0eWxlUnVsZXMubGVuZ3RoIC0gMSk7IGkgPj0gMDsgLS1pKSB7CiAg
ICAgICAgICAgICAgICAgICAgIHZhciBydWxlID0gbWF0Y2hlZFN0eWxlUnVsZXNbaV07Ci0gICAg
ICAgICAgICAgICAgICAgIHN0eWxlUnVsZXMucHVzaCh7IHN0eWxlOiBydWxlLnN0eWxlLCBzZWxl
Y3RvclRleHQ6IHJ1bGUuc2VsZWN0b3JUZXh0LCBwYXJlbnRTdHlsZVNoZWV0OiBydWxlLnBhcmVu
dFN0eWxlU2hlZXQgfSk7CisgICAgICAgICAgICAgICAgICAgIHN0eWxlUnVsZXMucHVzaCh7IHN0
eWxlOiBydWxlLnN0eWxlLCBzZWxlY3RvclRleHQ6IHJ1bGUuc2VsZWN0b3JUZXh0LCBwYXJlbnRT
dHlsZVNoZWV0OiBydWxlLnBhcmVudFN0eWxlU2hlZXQsIHJ1bGU6IHJ1bGUgfSk7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xMjgsNiArMTMxLDggQEAg
V2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IHZhciBzdHlsZVJ1bGUgPSBzdHlsZVJ1bGVzW2ldOwogICAgICAgICAgICAgaWYgKHN0eWxlUnVs
ZS5jb21wdXRlZFN0eWxlKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
aWYgKHN0eWxlUnVsZS5zZWN0aW9uICYmIHN0eWxlUnVsZS5zZWN0aW9uLm5vQWZmZWN0KQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBzdHlsZVJ1bGUudXNlZFByb3Bl
cnRpZXMgPSB7fTsKIApAQCAtMjIzLDYgKzIyOCw5IEBAIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRl
YmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgdmFyIGVkaXRhYmxlID0gc3R5
bGVSdWxlLmVkaXRhYmxlOwogICAgICAgICAgICAgICAgIGRlbGV0ZSBzdHlsZVJ1bGUuZWRpdGFi
bGU7CiAKKyAgICAgICAgICAgICAgICB2YXIgaXNBdHRyaWJ1dGUgPSBzdHlsZVJ1bGUuaXNBdHRy
aWJ1dGU7CisgICAgICAgICAgICAgICAgZGVsZXRlIHN0eWxlUnVsZS5pc0F0dHJpYnV0ZTsKKwog
ICAgICAgICAgICAgICAgIC8vIERlZmF1bHQgZWRpdGFibGUgdG8gdHJ1ZSBpZiBpdCB3YXMgb21p
dHRlZC4KICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGVkaXRhYmxlID09PSAidW5kZWZpbmVk
IikKICAgICAgICAgICAgICAgICAgICAgZWRpdGFibGUgPSB0cnVlOwpAQCAtMjM2LDEzICsyNDQs
NDkgQEAgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgICAgICAgICAgc2VjdGlvbi5leHBhbmRlZCA9IFByZWZlcmVuY2VzLnN0eWxlUnVsZXNF
eHBhbmRlZFN0YXRlW3NlY3Rpb24uaWRlbnRpZmllcl07CiAgICAgICAgICAgICAgICAgZWxzZSBp
ZiAoY29tcHV0ZWRTdHlsZSkKICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi5jb2xsYXBzZSh0
cnVlKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChpc0F0dHJpYnV0ZSAmJiBzdHlsZVJ1bGUu
c3R5bGUubGVuZ3RoID09PSAwKQorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLmNvbGxhcHNl
KHRydWUpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgc2VjdGlv
bi5leHBhbmQodHJ1ZSk7CiAKICAgICAgICAgICAgICAgICBib2R5LmFwcGVuZENoaWxkKHNlY3Rp
b24uZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgdGhpcy5zZWN0aW9ucy5wdXNoKHNlY3Rpb24p
OwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0aGlzLmFkZEJsYW5rU2VjdGlvbigpOwog
ICAgICAgICB9CisgICAgfSwKKworICAgIGFkZEJsYW5rU2VjdGlvbjogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgdmFyIGJsYW5rU2VjdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuQmxhbmtTdHls
ZVByb3BlcnRpZXNTZWN0aW9uKCk7CisgICAgICAgIGJsYW5rU2VjdGlvbi5wYW5lID0gdGhpczsK
KworICAgICAgICB0aGlzLmJvZHlFbGVtZW50Lmluc2VydEJlZm9yZShibGFua1NlY3Rpb24uZWxl
bWVudCwgdGhpcy5ib2R5RWxlbWVudC5maXJzdENoaWxkLm5leHRTaWJsaW5nLm5leHRTaWJsaW5n
KTsgLy8gMCBpcyBjb21wdXRlZCwgMSBpcyBlbGVtZW50LnN0eWxlCisgICAgICAgIHZhciBjb21w
dXRlZCA9IHRoaXMuc2VjdGlvbnMuc2hpZnQoKTsKKyAgICAgICAgdmFyIGVsZW1lbnRTdHlsZSA9
IHRoaXMuc2VjdGlvbnMuc2hpZnQoKTsKKyAgICAgICAgdGhpcy5zZWN0aW9ucy51bnNoaWZ0KGJs
YW5rU2VjdGlvbik7CisgICAgICAgIHRoaXMuc2VjdGlvbnMudW5zaGlmdChlbGVtZW50U3R5bGUp
OworICAgICAgICB0aGlzLnNlY3Rpb25zLnVuc2hpZnQoY29tcHV0ZWQpOworICAgIH0sCisKKyAg
ICBhcHByb3ByaWF0ZVNlbGVjdG9yRm9yTm9kZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
dmFyIG5vZGUgPSB0aGlzLm5vZGU7CisgICAgICAgIGlmICghbm9kZSkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICBpZiAobm9kZS5pZCkKKyAgICAgICAgICAgIHJldHVybiAiIyIgKyBu
b2RlLmlkOworCisgICAgICAgIGlmIChub2RlLmNsYXNzTmFtZSkKKyAgICAgICAgICAgIHJldHVy
biAiLiIgKyBub2RlLmNsYXNzTmFtZS5yZXBsYWNlKC9ccysvLCAiLiIpOworCisgICAgICAgIHZh
ciBub2RlTmFtZSA9IG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsKKyAgICAgICAgaWYgKG5v
ZGVOYW1lID09PSAiaW5wdXQiICYmIG5vZGUudHlwZSkKKyAgICAgICAgICAgIHJldHVybiBub2Rl
TmFtZSArICJbdHlwZT1cIiIgKyBub2RlLnR5cGUgKyAiXCJdIjsKKworICAgICAgICByZXR1cm4g
bm9kZU5hbWU7CiAgICAgfQogfQogCkBAIC0yNTEsOCArMjk1LDEyIEBAIFdlYkluc3BlY3Rvci5T
dHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlNpZGVi
YXJQYW5lLnByCiBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbiA9IGZ1bmN0aW9u
KHN0eWxlUnVsZSwgc3VidGl0bGUsIGNvbXB1dGVkU3R5bGUsIHVzZWRQcm9wZXJ0aWVzLCBlZGl0
YWJsZSkKIHsKICAgICBXZWJJbnNwZWN0b3IuUHJvcGVydGllc1NlY3Rpb24uY2FsbCh0aGlzLCBz
dHlsZVJ1bGUuc2VsZWN0b3JUZXh0KTsKKyAgICB0aGlzLnRpdGxlRWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKGUpIHsgZS5zdG9wUHJvcGFnYXRpb24oKTsgfSwgZmFs
c2UpOworICAgIHRoaXMudGl0bGVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImRibGNsaWNrIiwg
dGhpcy5fZGJsY2xpY2tTZWxlY3Rvci5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgdGhpcy5lbGVt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoImRibGNsaWNrIiwgdGhpcy5fZGJsY2xpY2tFbXB0eVNwYWNl
LmJpbmQodGhpcyksIGZhbHNlKTsKIAogICAgIHRoaXMuc3R5bGVSdWxlID0gc3R5bGVSdWxlOwor
ICAgIHRoaXMucnVsZSA9IHRoaXMuc3R5bGVSdWxlLnJ1bGU7CiAgICAgdGhpcy5jb21wdXRlZFN0
eWxlID0gY29tcHV0ZWRTdHlsZTsKICAgICB0aGlzLmVkaXRhYmxlID0gKGVkaXRhYmxlICYmICFj
b21wdXRlZFN0eWxlKTsKIApAQCAtMzAwLDYgKzM0OCw4IEBAIFdlYkluc3BlY3Rvci5TdHlsZVBy
b3BlcnRpZXNTZWN0aW9uID0gZnVuY3Rpb24oc3R5bGVSdWxlLCBzdWJ0aXRsZSwgY29tcHV0ZWRT
dHlsCiAgICAgICAgICAgICAgICAgc3VidGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoInVz
ZXIgYWdlbnQgc3R5bGVzaGVldCIpOwogICAgICAgICAgICAgZWxzZSBpZiAoaXNVc2VyKQogICAg
ICAgICAgICAgICAgIHN1YnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJ1c2VyIHN0eWxl
c2hlZXQiKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuc3R5bGVSdWxlLnBhcmVudFN0eWxl
U2hlZXQgPT09IFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMuc3R5bGVzaGVldCkKKyAgICAg
ICAgICAgICAgICBzdWJ0aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygidmlhIGluc3BlY3Rv
ciIpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHN1YnRpdGxlID0gV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJpbmxpbmUgc3R5bGVzaGVldCIpOwogICAgICAgICB9CkBAIC0zMDks
NyArMzU5LDcgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24gPSBmdW5jdGlv
bihzdHlsZVJ1bGUsIHN1YnRpdGxlLCBjb21wdXRlZFN0eWwKIAogICAgIHRoaXMuaWRlbnRpZmll
ciA9IHN0eWxlUnVsZS5zZWxlY3RvclRleHQ7CiAgICAgaWYgKHRoaXMuc3VidGl0bGUpCi0gICAg
ICAgIHRoaXMuaWRlbnRpZmllciArPSAiOiIgKyB0aGlzLnN1YnRpdGxlRWxlbWVudC50ZXh0Q29u
dGVudDsKKyAgICAgICAgdGhpcy5pZGVudGlmaWVyICs9ICI6IiArIHRoaXMuc3VidGl0bGVFbGVt
ZW50LnRleHRDb250ZW50OyAgICAKIH0KIAogV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1Nl
Y3Rpb24ucHJvdG90eXBlID0gewpAQCAtMzI2LDYgKzM3Niw5IEBAIFdlYkluc3BlY3Rvci5TdHls
ZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZSA9IHsKIAogICAgIGV4cGFuZDogZnVuY3Rpb24o
ZG9udFJlbWVtYmVyU3RhdGUpCiAgICAgeworICAgICAgICBpZiAodGhpcy5fYmxhbmspCisgICAg
ICAgICAgICByZXR1cm47CisKICAgICAgICAgV2ViSW5zcGVjdG9yLlByb3BlcnRpZXNTZWN0aW9u
LnByb3RvdHlwZS5leHBhbmQuY2FsbCh0aGlzKTsKICAgICAgICAgaWYgKGRvbnRSZW1lbWJlclN0
YXRlKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzQ4LDcgKzQwMSw3IEBAIFdlYkluc3BlY3Rv
ci5TdHlsZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZSA9IHsKIAogICAgIGlzUHJvcGVydHlJ
bmhlcml0ZWQ6IGZ1bmN0aW9uKHByb3BlcnR5KQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLmNv
bXB1dGVkU3R5bGUgfHwgIXRoaXMuX3VzZWRQcm9wZXJ0aWVzKQorICAgICAgICBpZiAoIXRoaXMu
Y29tcHV0ZWRTdHlsZSB8fCAhdGhpcy5fdXNlZFByb3BlcnRpZXMgfHwgdGhpcy5ub0FmZmVjdCkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgLy8gVGhlc2UgcHJvcGVydGllcyBz
aG91bGQgYWx3YXlzIHNob3cgZm9yIENvbXB1dGVkIFN0eWxlLgogICAgICAgICB2YXIgYWx3YXlz
U2hvd0NvbXB1dGVkUHJvcGVydGllcyA9IHsgImRpc3BsYXkiOiB0cnVlLCAiaGVpZ2h0IjogdHJ1
ZSwgIndpZHRoIjogdHJ1ZSB9OwpAQCAtMzU3LDcgKzQxMCw3IEBAIFdlYkluc3BlY3Rvci5TdHls
ZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZSA9IHsKIAogICAgIGlzUHJvcGVydHlPdmVybG9h
ZGVkOiBmdW5jdGlvbihwcm9wZXJ0eSwgc2hvcnRoYW5kKQogICAgIHsKLSAgICAgICAgaWYgKHRo
aXMuY29tcHV0ZWRTdHlsZSB8fCAhdGhpcy5fdXNlZFByb3BlcnRpZXMpCisgICAgICAgIGlmICh0
aGlzLmNvbXB1dGVkU3R5bGUgfHwgIXRoaXMuX3VzZWRQcm9wZXJ0aWVzIHx8IHRoaXMubm9BZmZl
Y3QpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgdmFyIHVzZWQgPSAocHJv
cGVydHkgaW4gdGhpcy51c2VkUHJvcGVydGllcyk7CkBAIC00NTEsMTEgKzUwNCwyMTAgQEAgV2Vi
SW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlID0gewogICAgICAgICBp
dGVtLmxpc3RJdGVtRWxlbWVudC50ZXh0Q29udGVudCA9ICIiOwogICAgICAgICBpdGVtLl9uZXdQ
cm9wZXJ0eSA9IHRydWU7CiAgICAgICAgIHJldHVybiBpdGVtOworICAgIH0sCisKKyAgICBfZGJs
Y2xpY2tFbXB0eVNwYWNlOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuZXhw
YW5kKCk7CisgICAgICAgIHRoaXMuYWRkTmV3QmxhbmtQcm9wZXJ0eSgpLnN0YXJ0RWRpdGluZygp
OworICAgIH0sCisKKyAgICBfZGJsY2xpY2tTZWxlY3RvcjogZnVuY3Rpb24oZXZlbnQpCisgICAg
eworICAgICAgICBpZiAoIXRoaXMuZWRpdGFibGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgaWYgKCF0aGlzLnJ1bGUgJiYgdGhpcy5wcm9wZXJ0aWVzVHJlZU91dGxpbmUuY2hpbGRy
ZW4ubGVuZ3RoID09PSAwKSB7CisgICAgICAgICAgICB0aGlzLmV4cGFuZCgpOworICAgICAgICAg
ICAgdGhpcy5hZGROZXdCbGFua1Byb3BlcnR5KCkuc3RhcnRFZGl0aW5nKCk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRoaXMucnVsZSkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICB0aGlzLnN0YXJ0RWRpdGluZ1NlbGVjdG9yKCk7CisgICAg
ICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOworICAgIH0sCisKKyAgICBzdGFydEVkaXRpbmdT
ZWxlY3RvcjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzLnRp
dGxlRWxlbWVudDsKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5pc0JlaW5nRWRpdGVkKGVsZW1l
bnQpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciBjb250ZXh0ID0gdGhpcy5z
dHlsZVJ1bGUuc2VsZWN0b3JUZXh0OworICAgICAgICBXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0aW5n
KHRoaXMudGl0bGVFbGVtZW50LCB0aGlzLmVkaXRpbmdTZWxlY3RvckNvbW1pdHRlZC5iaW5kKHRo
aXMpLCB0aGlzLmVkaXRpbmdTZWxlY3RvckNhbmNlbGxlZC5iaW5kKHRoaXMpLCBjb250ZXh0KTsK
KyAgICAgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnNldEJhc2VBbmRFeHRlbnQoZWxlbWVudCwg
MCwgZWxlbWVudCwgMSk7CisgICAgfSwKKworICAgIGVkaXRpbmdTZWxlY3RvckNvbW1pdHRlZDog
ZnVuY3Rpb24oZWxlbWVudCwgbmV3Q29udGVudCwgb2xkQ29udGVudCwgY29udGV4dCwgbW92ZURp
cmVjdGlvbikKKyAgICB7CisgICAgICAgIGZ1bmN0aW9uIG1vdmVUb05leHRJZk5lZWRlZCgpIHsK
KyAgICAgICAgICAgIGlmICghbW92ZURpcmVjdGlvbiB8fCBtb3ZlRGlyZWN0aW9uICE9PSAiZm9y
d2FyZCIpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICB0aGlzLmV4cGFu
ZCgpOworICAgICAgICAgICAgaWYgKHRoaXMucHJvcGVydGllc1RyZWVPdXRsaW5lLmNoaWxkcmVu
Lmxlbmd0aCA9PT0gMCkKKyAgICAgICAgICAgICAgICB0aGlzLmFkZE5ld0JsYW5rUHJvcGVydHko
KS5zdGFydEVkaXRpbmcoKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHZh
ciBpdGVtID0gdGhpcy5wcm9wZXJ0aWVzVHJlZU91dGxpbmUuY2hpbGRyZW5bMF0KKyAgICAgICAg
ICAgICAgICBpdGVtLnN0YXJ0RWRpdGluZyhpdGVtLnZhbHVlRWxlbWVudCk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAobmV3Q29udGVudCA9PT0gb2xkQ29udGVudCkK
KyAgICAgICAgICAgIHJldHVybiBtb3ZlVG9OZXh0SWZOZWVkZWQuY2FsbCh0aGlzKTsKKworICAg
ICAgICB0cnkgeworICAgICAgICAgICAgdmFyIHN0eWxlc2hlZXQgPSB0aGlzLnJ1bGUucGFyZW50
U3R5bGVTaGVldDsKKyAgICAgICAgICAgIHN0eWxlc2hlZXQuYWRkUnVsZShuZXdDb250ZW50KTsK
KyAgICAgICAgICAgIHZhciBuZXdSdWxlID0gc3R5bGVzaGVldC5jc3NSdWxlc1tzdHlsZXNoZWV0
LmNzc1J1bGVzLmxlbmd0aCAtIDFdOworICAgICAgICAgICAgbmV3UnVsZS5zdHlsZS5jc3NUZXh0
ID0gdGhpcy5zdHlsZVJ1bGUuc3R5bGUuY3NzVGV4dDsKKyAgICAgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICAgICAgLy8gSW52YWxpZCBTeW50YXggZm9yIGEgU2VsZWN0b3IKKyAgICAgICAgICAg
IHRoaXMuZWRpdGluZ1NlbGVjdG9yQ2FuY2VsbGVkKGVsZW1lbnQsIGNvbnRleHQpOworICAgICAg
ICAgICAgcmV0dXJuIG1vdmVUb05leHRJZk5lZWRlZC5jYWxsKHRoaXMpOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKCF0aGlzLl9kb2VzU2VsZWN0b3JBZmZlY3RTZWxlY3RlZE5vZGUobmV3Q29u
dGVudCkpIHsKKyAgICAgICAgICAgIHRoaXMubm9BZmZlY3QgPSB0cnVlOworICAgICAgICAgICAg
dGhpcy5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoIm5vLWFmZmVjdCIpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgZGVsZXRlIHRoaXMubm9BZmZlY3Q7CisgICAgICAgICAgICB0aGlzLmVs
ZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygibm8tYWZmZWN0Iik7CisgICAgICAgIH0KKworICAgICAg
ICB2YXIgcGFyZW50UnVsZXMgPSB0aGlzLnJ1bGUucGFyZW50U3R5bGVTaGVldC5jc3NSdWxlczsK
KyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJlbnRSdWxlcy5sZW5ndGg7ICsraSkgewor
ICAgICAgICAgICAgaWYgKHBhcmVudFJ1bGVzW2ldID09PSB0aGlzLnJ1bGUpIHsKKyAgICAgICAg
ICAgICAgICB0aGlzLnJ1bGUucGFyZW50U3R5bGVTaGVldC5yZW1vdmVSdWxlKGkpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgdGhp
cy5ydWxlID0gbmV3UnVsZTsKKyAgICAgICAgdGhpcy5zdHlsZVJ1bGUgPSB7IHNlY3Rpb246IHRo
aXMsIHN0eWxlOiBuZXdSdWxlLnN0eWxlLCBzZWxlY3RvclRleHQ6IG5ld1J1bGUuc2VsZWN0b3JU
ZXh0LCBwYXJlbnRTdHlsZVNoZWV0OiBuZXdSdWxlLnBhcmVudFN0eWxlU2hlZXQsIHJ1bGU6IG5l
d1J1bGUgfTsKKyAgICAgICAgdGhpcy5wYW5lLnVwZGF0ZShudWxsLCB0cnVlKTsKKyAgICAgICAg
bW92ZVRvTmV4dElmTmVlZGVkLmNhbGwodGhpcyk7CisgICAgfSwKKworICAgIGVkaXRpbmdTZWxl
Y3RvckNhbmNlbGxlZDogZnVuY3Rpb24oZWxlbWVudCwgY29udGV4dCkKKyAgICB7CisgICAgICAg
IGVsZW1lbnQudGV4dENvbnRlbnQgPSBjb250ZXh0OworICAgIH0sCisKKyAgICBfZG9lc1NlbGVj
dG9yQWZmZWN0U2VsZWN0ZWROb2RlOiBmdW5jdGlvbihzZWxlY3RvcikKKyAgICB7CisgICAgICAg
IHZhciBzZWxlY3RlZE5vZGUgPSB0aGlzLnBhbmUubm9kZTsKKyAgICAgICAgdmFyIG5vZGVzID0g
c2VsZWN0ZWROb2RlLm93bmVyRG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7Cisg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAg
ICAgIGlmIChub2Rlc1tpXSA9PT0gc2VsZWN0ZWROb2RlKQorICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIH0KIAog
V2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlLl9fcHJvdG9fXyA9
IFdlYkluc3BlY3Rvci5Qcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGU7CiAKK1dlYkluc3BlY3Rv
ci5CbGFua1N0eWxlUHJvcGVydGllc1NlY3Rpb24gPSBmdW5jdGlvbigpCit7CisgICAgV2ViSW5z
cGVjdG9yLlByb3BlcnRpZXNTZWN0aW9uLmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJEb3VibGUtQ2xpY2sgdG8gQWRkIiksIG51bGwpOworCisgICAgdGhpcy5fYmxhbmsgPSB0cnVl
OworICAgIHRoaXMuX2RibGNsaWNrTGlzdGVuZXIgPSB0aGlzLl9kYmxjbGljay5iaW5kKHRoaXMp
OworICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJibGFuay1zZWN0aW9uIik7CisgICAg
dGhpcy50aXRsZUVsZW1lbnQuYWRkU3R5bGVDbGFzcygiYmxhbmstdGl0bGUiKTsKKyAgICB0aGlz
LnRpdGxlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKGUpIHsgZS5z
dG9wUHJvcGFnYXRpb24oKTsgfSwgZmFsc2UpOworICAgIHRoaXMudGl0bGVFbGVtZW50LmFkZEV2
ZW50TGlzdGVuZXIoImRibGNsaWNrIiwgdGhpcy5fZGJsY2xpY2tMaXN0ZW5lciwgZmFsc2UpOwor
fQorCitXZWJJbnNwZWN0b3IuQmxhbmtTdHlsZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZSA9
IHsKKyAgICBfZGJsY2xpY2s6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5z
dGFydEVkaXRpbmcoKTsKKyAgICB9LAorCisgICAgc3RhcnRFZGl0aW5nOiBmdW5jdGlvbigpCisg
ICAgeworICAgICAgICB2YXIgZWxlbWVudCA9IHRoaXMudGl0bGVFbGVtZW50OworICAgICAgICBp
ZiAoV2ViSW5zcGVjdG9yLmlzQmVpbmdFZGl0ZWQoZWxlbWVudCkpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgdGhpcy50aXRsZUVsZW1lbnQudGV4dENvbnRlbnQgPSB0aGlzLnBhbmUu
YXBwcm9wcmlhdGVTZWxlY3RvckZvck5vZGUoKTsKKyAgICAgICAgdGhpcy50aXRsZUVsZW1lbnQu
cmVtb3ZlU3R5bGVDbGFzcygiYmxhbmstdGl0bGUiKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnN0
YXJ0RWRpdGluZyh0aGlzLnRpdGxlRWxlbWVudCwgdGhpcy5lZGl0aW5nQ29tbWl0dGVkLmJpbmQo
dGhpcyksIHRoaXMuZWRpdGluZ0NhbmNlbGxlZC5iaW5kKHRoaXMpLCAiIik7CisgICAgICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRCYXNlQW5kRXh0ZW50KGVsZW1lbnQsIDAsIGVsZW1lbnQs
IDEpOworICAgIH0sCisKKyAgICBlZGl0aW5nQ2FuY2VsbGVkOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICB0aGlzLnRpdGxlRWxlbWVudC50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5VSVN0
cmluZygiRG91YmxlLUNsaWNrIHRvIEFkZCIpOworICAgICAgICB0aGlzLnRpdGxlRWxlbWVudC5h
ZGRTdHlsZUNsYXNzKCJibGFuay10aXRsZSIpOworICAgIH0sCisKKyAgICBlZGl0aW5nQ29tbWl0
dGVkOiBmdW5jdGlvbihlbGVtZW50LCBuZXdDb250ZW50LCBvbGRDb250ZW50LCBjb250ZXh0KQor
ICAgIHsKKyAgICAgICAgdmFyIHN0eWxlc2hlZXQgPSBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1l
bnRzLnN0eWxlc2hlZXQ7CisgICAgICAgIGlmICghc3R5bGVzaGVldCkgeworICAgICAgICAgICAg
dmFyIGluc3BlY3RlZERvY3VtZW50ID0gSW5zcGVjdG9yQ29udHJvbGxlci5pbnNwZWN0ZWRXaW5k
b3coKS5kb2N1bWVudDsKKyAgICAgICAgICAgIHZhciBoZWFkID0gaW5zcGVjdGVkRG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXTsKKyAgICAgICAgICAgIHZhciBzdHlsZUVs
ZW1lbnQgPSBpbnNwZWN0ZWREb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpOworICAgICAg
ICAgICAgc3R5bGVFbGVtZW50LnR5cGUgPSAidGV4dC9jc3MiOworICAgICAgICAgICAgaGVhZC5h
cHBlbmRDaGlsZChzdHlsZUVsZW1lbnQpOworICAgICAgICAgICAgc3R5bGVzaGVldCA9IGluc3Bl
Y3RlZERvY3VtZW50LnN0eWxlU2hlZXRzW2luc3BlY3RlZERvY3VtZW50LnN0eWxlU2hlZXRzLmxl
bmd0aCAtIDFdOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy5zdHls
ZXNoZWV0ID0gc3R5bGVzaGVldDsKKyAgICAgICAgfQorCisgICAgICAgIHRyeSB7CisgICAgICAg
ICAgICBzdHlsZXNoZWV0LmFkZFJ1bGUobmV3Q29udGVudCk7CisgICAgICAgIH0gY2F0Y2ggKGUp
IHsKKyAgICAgICAgICAgIC8vIEludmFsaWQgU3ludGF4IGZvciBhIFNlbGVjdG9yCisgICAgICAg
ICAgICB0aGlzLmVkaXRpbmdDYW5jZWxsZWQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIHZhciBydWxlID0gc3R5bGVzaGVldC5jc3NSdWxlc1tzdHlsZXNoZWV0
LmNzc1J1bGVzLmxlbmd0aCAtIDFdOworICAgICAgICB2YXIgc3R5bGVSdWxlID0geyBzZWN0aW9u
OiB0aGlzLCBzdHlsZTogcnVsZS5zdHlsZSwgc2VsZWN0b3JUZXh0OiBydWxlLnNlbGVjdG9yVGV4
dCwgcGFyZW50U3R5bGVTaGVldDogcnVsZS5wYXJlbnRTdHlsZVNoZWV0LCBydWxlOiBydWxlIH07
CisgICAgICAgIHRoaXMubWFrZU5vcm1hbChzdHlsZVJ1bGUpOworCisgICAgICAgIGlmICghdGhp
cy5fZG9lc1NlbGVjdG9yQWZmZWN0U2VsZWN0ZWROb2RlKG5ld0NvbnRlbnQpKSB7CisgICAgICAg
ICAgICB0aGlzLm5vQWZmZWN0ID0gdHJ1ZTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRT
dHlsZUNsYXNzKCJuby1hZmZlY3QiKTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuc3VidGl0
bGVFbGVtZW50LnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJ2aWEgaW5zcGVj
dG9yIik7CisgICAgICAgIHRoaXMuZXhwYW5kKCk7CisKKyAgICAgICAgdGhpcy5wYW5lLmFkZEJs
YW5rU2VjdGlvbigpOworICAgICAgICB0aGlzLmFkZE5ld0JsYW5rUHJvcGVydHkoKS5zdGFydEVk
aXRpbmcoKTsKKyAgICB9LAorCisgICAgbWFrZU5vcm1hbDogZnVuY3Rpb24oc3R5bGVSdWxlKQor
ICAgIHsKKyAgICAgICAgdGhpcy50aXRsZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGJs
Y2xpY2siLCB0aGlzLl9kYmxjbGlja0xpc3RlbmVyLCBmYWxzZSk7CisgICAgICAgIHRoaXMudGl0
bGVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImRibGNsaWNrIiwgdGhpcy5fZGJsY2xpY2tTZWxl
Y3Rvci5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKCJkYmxjbGljayIsIHRoaXMuX2RibGNsaWNrRW1wdHlTcGFjZS5iaW5kKHRoaXMpLCBm
YWxzZSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJibGFuay1zZWN0
aW9uIik7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9ibGFuazsKKyAgICAgICAgZGVsZXRlIHRoaXMu
X2RibGNsaWNrOworICAgICAgICBkZWxldGUgdGhpcy5zdGFydEVkaXRpbmc7CisgICAgICAgIGRl
bGV0ZSB0aGlzLmVkaXRpbmdDYW5jZWxsZWQ7CisgICAgICAgIGRlbGV0ZSB0aGlzLmVkaXRpbmdD
b21taXR0ZWQ7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9kYmxjbGlja0xpc3RlbmVyOworICAgICAg
ICBkZWxldGUgdGhpcy5tYWtlTm9ybWFsOworICAgICAgICB0aGlzLnN0eWxlUnVsZSA9IHN0eWxl
UnVsZTsKKyAgICAgICAgdGhpcy5ydWxlID0gc3R5bGVSdWxlLnJ1bGU7CisgICAgICAgIHRoaXMu
Y29tcHV0ZWRTdHlsZSA9IGZhbHNlOworICAgICAgICB0aGlzLmVkaXRhYmxlID0gdHJ1ZTsKKyAg
ICAgICAgLy8gbGVmdG92ZXJzIGFyZTogdGhpcy5ub0FmZmVjdCBpZiBhcHBsaWNhYmxlCisgICAg
fQorfQorCitXZWJJbnNwZWN0b3IuQmxhbmtTdHlsZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlw
ZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5
cGU7CisKIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQgPSBmdW5jdGlvbihz
dHlsZSwgbmFtZSwgc2hvcnRoYW5kLCBpbmhlcml0ZWQsIG92ZXJsb2FkZWQsIGRpc2FibGVkKQog
ewogICAgIHRoaXMuc3R5bGUgPSBzdHlsZTsKQEAgLTczMSw2ICs5ODMsNyBAQCBXZWJJbnNwZWN0
b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICBvbmRibGNsaWNr
OiBmdW5jdGlvbihlbGVtZW50LCBldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuc3RhcnRFZGl0
aW5nKGV2ZW50LnRhcmdldCk7CisgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAg
IH0sCiAKICAgICBzdGFydEVkaXRpbmc6IGZ1bmN0aW9uKHNlbGVjdEVsZW1lbnQpCkBAIC04NTgs
NyArMTExMSw5IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90
eXBlID0gewogCiAgICAgZWRpdGluZ0NhbmNlbGxlZDogZnVuY3Rpb24oZWxlbWVudCwgY29udGV4
dCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLm9yaWdpbmFsQ1NTVGV4dCkgeworICAgICAgICBp
ZiAodGhpcy5fbmV3UHJvcGVydHkpCisgICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnJlbW92
ZUNoaWxkKHRoaXMpOworICAgICAgICBlbHNlIGlmICh0aGlzLm9yaWdpbmFsQ1NTVGV4dCkgewog
ICAgICAgICAgICAgdGhpcy5zdHlsZS5jc3NUZXh0ID0gdGhpcy5vcmlnaW5hbENTU1RleHQ7CiAK
ICAgICAgICAgICAgIGlmICh0aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24gJiYgdGhpcy50cmVlT3V0
bGluZS5zZWN0aW9uLnBhbmUpCkBAIC04NzYsMTMgKzExMzEsMTQgQEAgV2ViSW5zcGVjdG9yLlN0
eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuZWRpdGlu
Z0VuZGVkKGNvbnRleHQpOwogCiAgICAgICAgIC8vIERldGVybWluZSB3aGVyZSB0byBtb3ZlIHRv
IGJlZm9yZSBtYWtpbmcgY2hhbmdlcwotICAgICAgICB2YXIgbmV3UHJvcGVydHkgPSBmYWxzZTsK
LSAgICAgICAgdmFyIG1vdmVUb1Byb3BlcnR5TmFtZTsKKyAgICAgICAgdmFyIG5ld1Byb3BlcnR5
LCBtb3ZlVG9Qcm9wZXJ0eU5hbWUsIG1vdmVUb1NlbGVjdG9yOwogICAgICAgICB2YXIgbW92ZVRv
ID0gKG1vdmVEaXJlY3Rpb24gPT09ICJmb3J3YXJkIiA/IHRoaXMubmV4dFNpYmxpbmcgOiB0aGlz
LnByZXZpb3VzU2libGluZyk7CiAgICAgICAgIGlmIChtb3ZlVG8pCiAgICAgICAgICAgICBtb3Zl
VG9Qcm9wZXJ0eU5hbWUgPSBtb3ZlVG8ubmFtZTsKICAgICAgICAgZWxzZSBpZiAobW92ZURpcmVj
dGlvbiA9PT0gImZvcndhcmQiKQogICAgICAgICAgICAgbmV3UHJvcGVydHkgPSB0cnVlOworICAg
ICAgICBlbHNlIGlmIChtb3ZlRGlyZWN0aW9uID09PSAiYmFja3dhcmQiICYmIHRoaXMudHJlZU91
dGxpbmUuc2VjdGlvbi5ydWxlKQorICAgICAgICAgICAgbW92ZVRvU2VsZWN0b3IgPSB0cnVlOwog
CiAgICAgICAgIC8vIE1ha2UgdGhlIENoYW5nZXMgYW5kIHRyaWdnZXIgdGhlIG1vdmVUb05leHRD
YWxsYmFjayBhZnRlciB1cGRhdGluZwogICAgICAgICB2YXIgYmxhbmtJbnB1dCA9IC9eXHMqJC8u
dGVzdCh1c2VySW5wdXQpOwpAQCAtOTE5LDcgKzExNzUsMTEgQEAgV2ViSW5zcGVjdG9yLlN0eWxl
UHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgICAgICAgICB2YXIg
aXRlbSA9IHNlY3Rpb24uYWRkTmV3QmxhbmtQcm9wZXJ0eSgpOwogICAgICAgICAgICAgICAgIGl0
ZW0uc3RhcnRFZGl0aW5nKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBpZiAobW92ZVRvU2VsZWN0b3IpCisgICAgICAgICAgICAgICAgc2Vj
dGlvbi5zdGFydEVkaXRpbmdTZWxlY3RvcigpOwogICAgICAgICB9CiAgICAgfSwKIApAQCAtOTk4
LDYgKzEyNTgsOSBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3Rv
dHlwZSA9IHsKIAogICAgICAgICBpZiAodXBkYXRlSW50ZXJmYWNlKQogICAgICAgICAgICAgdGhp
cy51cGRhdGVBbGwodHJ1ZSk7CisKKyAgICAgICAgaWYgKCF0aGlzLnJ1bGUpCisgICAgICAgICAg
ICBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLnRyZWVPdXRsaW5lLnVwZGF0ZSgpOwogICAg
IH0KIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rv
ci5jc3MgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcwppbmRleCBk
YWJhZGMyLi4wNzAyOTM2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
aW5zcGVjdG9yLmNzcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9y
LmNzcwpAQCAtMTE4Miw2ICsxMTgyLDEwIEBAIGJvZHkuaW5hY3RpdmUgLnBsYWNhcmQuc2VsZWN0
ZWQgewogICAgIC13ZWJraXQtYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nOwogfQogCisuc2VjdGlv
bi5uby1hZmZlY3QgLmhlYWRlciB7CisgICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFk
aWVudChsaW5lYXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgZnJvbShyZ2IoMTY3LCAxNjcsIDE2
NykpLCB0byhyZ2IoMTIzLCAxMjMsIDEyMykpKQorfQorCiAuc2VjdGlvbiAuaGVhZGVyOjpiZWZv
cmUgewogICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICB0b3A6IDRweDsKQEAgLTExOTEsNiAr
MTE5NSwxMCBAQCBib2R5LmluYWN0aXZlIC5wbGFjYXJkLnNlbGVjdGVkIHsKICAgICBjb250ZW50
OiB1cmwoSW1hZ2VzL3RyZWVSaWdodFRyaWFuZ2xlV2hpdGUucG5nKTsKIH0KIAorLnNlY3Rpb24u
Ymxhbmstc2VjdGlvbiAuaGVhZGVyOjpiZWZvcmUgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisK
IC5zZWN0aW9uLmV4cGFuZGVkIC5oZWFkZXI6OmJlZm9yZSB7CiAgICAgY29udGVudDogdXJsKElt
YWdlcy90cmVlRG93blRyaWFuZ2xlV2hpdGUucG5nKTsKIH0KQEAgLTEyMDIsNiArMTIxMCwxMCBA
QCBib2R5LmluYWN0aXZlIC5wbGFjYXJkLnNlbGVjdGVkIHsKICAgICB3aGl0ZS1zcGFjZTogbm9y
bWFsOwogfQogCisuc2VjdGlvbiAuaGVhZGVyIC50aXRsZS5ibGFuay10aXRsZSB7CisgICAgZm9u
dC1zdHlsZTogaXRhbGljOworfQorCiAuc2VjdGlvbiAuaGVhZGVyIGxhYmVsIHsKICAgICBkaXNw
bGF5OiBub25lOwogfQpAQCAtMTIzOSw2ICsxMjUxLDE1IEBAIGJvZHkuaW5hY3RpdmUgLnBsYWNh
cmQuc2VsZWN0ZWQgewogICAgIHBhZGRpbmc6IDJweCA2cHggM3B4OwogICAgIGxpc3Qtc3R5bGU6
IG5vbmU7CiAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7CisgICAgbWluLWhlaWdodDogMThw
eDsKK30KKworLnNlY3Rpb24ubm8tYWZmZWN0IC5wcm9wZXJ0aWVzIGxpIHsKKyAgICBvcGFjaXR5
OiAwLjU7Cit9CisKKy5zZWN0aW9uLm5vLWFmZmVjdCAucHJvcGVydGllcyBsaS5lZGl0aW5nIHsK
KyAgICBvcGFjaXR5OiAxLjA7CiB9CiAKIC5zZWN0aW9uLmV4cGFuZGVkIC5wcm9wZXJ0aWVzIHsK
</data>
<flag name="review"
          id="17987"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>