<?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>91890</bug_id>
          
          <creation_ts>2012-07-20 12:15:09 -0700</creation_ts>
          <short_desc>nrwt: never finds binaries in the &apos;out&apos; dir on chromium win</short_desc>
          <delta_ts>2012-07-24 14:45:36 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>ojan</cc>
    
    <cc>scottmg</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>674827</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-07-20 12:15:09 -0700</bug_when>
    <thetext>nrwt: never finds binaries in the &apos;out&apos; dir on chromium win</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674829</commentid>
    <comment_count>1</comment_count>
      <attachid>153560</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-07-20 12:18:00 -0700</bug_when>
    <thetext>Created attachment 153560
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674839</commentid>
    <comment_count>2</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-07-20 12:24:03 -0700</bug_when>
    <thetext>Tony, what do you think of this fix? Without this, if we build with ninja/winja on win, you always have to specify --build-directory, which is very annoying. We could do a more specific check for the config dir (or a binary), but it seems like this should be safe enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674847</commentid>
    <comment_count>3</comment_count>
      <attachid>153560</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-07-20 12:31:19 -0700</bug_when>
    <thetext>Comment on attachment 153560
Patch

This seems ok, but how much more invasive is it to check for Release/Debug?  Then we wouldn&apos;t have to change the check order.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674856</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-07-20 12:41:54 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 153560 [details])
&gt; This seems ok, but how much more invasive is it to check for Release/Debug?  Then we wouldn&apos;t have to change the check order.

Somewhat more invasive; the problem is that the _build_path() call that we use doesn&apos;t necessarily contain Release/Debug as the first arg and so we&apos;d have to rework that function. Which might be a good thing regardless.

Would you like me to work up a patch that does that so we can compare? I had half of one last night before I realized the difficulties and switched, so it wouldn&apos;t be that hard to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674862</commentid>
    <comment_count>5</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-07-20 12:44:54 -0700</bug_when>
    <thetext>Sounds cleaner in the long run since Linux/Mac check sconsbuild (hah!) and xcodebuild first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674867</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-07-20 12:48:25 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Sounds cleaner in the long run since Linux/Mac check sconsbuild (hah!) and xcodebuild first.

Yeah, although by the same token maybe I should move &apos;out&apos; first everywhere?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674875</commentid>
    <comment_count>7</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-07-20 12:53:39 -0700</bug_when>
    <thetext>Looks like it would be sufficient to pass self.get_option(&apos;configuration&apos;) to _static_build_path in chromium.py.


(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; Sounds cleaner in the long run since Linux/Mac check sconsbuild (hah!) and xcodebuild first.
&gt; 
&gt; Yeah, although by the same token maybe I should move &apos;out&apos; first everywhere?

I would rather have the bot configuration work by default and require people using a different configuration to manually adjust.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674910</commentid>
    <comment_count>8</comment_count>
      <attachid>153584</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-07-20 13:32:50 -0700</bug_when>
    <thetext>Created attachment 153584
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674914</commentid>
    <comment_count>9</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-07-20 13:34:25 -0700</bug_when>
    <thetext>&gt; (In reply to comment #6)
&gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; Sounds cleaner in the long run since Linux/Mac check sconsbuild (hah!) and xcodebuild first.
&gt; &gt; 
&gt; &gt; Yeah, although by the same token maybe I should move &apos;out&apos; first everywhere?
&gt; 
&gt; I would rather have the bot configuration work by default and require people using a different configuration to manually adjust.

Fair enough.

In working on the second patch and getting all the tests to pass, it turns out that all the non-chromium ports were already including configuration in build_path (so that it wasn&apos;t passed in as part of *comps). 

It is clearly the right thing to do to match that so all the ports are implementing it consistently, so the second patch, allthough more involved, is the way to go.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674928</commentid>
    <comment_count>10</comment_count>
      <attachid>153584</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-07-20 13:48:41 -0700</bug_when>
    <thetext>Comment on attachment 153584
Patch

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

&gt; Tools/ChangeLog:11
&gt; +        chromium-win&apos;s case, we look in src/build, which always exists because there
&gt; +       are checked-in files in it, which means we&apos;d always pick that

Nit: weird indent

&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium.py:389
&gt; +    def _build_path(self, *comps, **kwargs):
&gt; +        return self._static_build_path(self._filesystem, self.get_option(&apos;build_directory&apos;), self.path_from_chromium_base(), self.path_from_webkit_base(), configuration=(kwargs.get(&apos;configuration&apos;) or self.get_option(&apos;configuration&apos;)), comps=comps)

Rather than overloading this functions with kwargs, I think it would be more clear to add a new method _build_path_with_configuration(self, configuration, *comps).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674929</commentid>
    <comment_count>11</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-07-20 13:49:56 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 153584 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=153584&amp;action=review
&gt; 
&gt; &gt; Tools/ChangeLog:11
&gt; &gt; +        chromium-win&apos;s case, we look in src/build, which always exists because there
&gt; &gt; +       are checked-in files in it, which means we&apos;d always pick that
&gt; 
&gt; Nit: weird indent
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/chromium.py:389
&gt; &gt; +    def _build_path(self, *comps, **kwargs):
&gt; &gt; +        return self._static_build_path(self._filesystem, self.get_option(&apos;build_directory&apos;), self.path_from_chromium_base(), self.path_from_webkit_base(), configuration=(kwargs.get(&apos;configuration&apos;) or self.get_option(&apos;configuration&apos;)), comps=comps)
&gt; 
&gt; Rather than overloading this functions with kwargs, I think it would be more clear to add a new method _build_path_with_configuration(self, configuration, *comps).

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674935</commentid>
    <comment_count>12</comment_count>
      <attachid>153591</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-07-20 13:57:38 -0700</bug_when>
    <thetext>Created attachment 153591
add _build_path_with_configuration</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674938</commentid>
    <comment_count>13</comment_count>
      <attachid>153594</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-07-20 13:59:05 -0700</bug_when>
    <thetext>Created attachment 153594
fix changelog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674945</commentid>
    <comment_count>14</comment_count>
      <attachid>153594</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-07-20 14:06:09 -0700</bug_when>
    <thetext>Comment on attachment 153594
fix changelog

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

&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium.py:83
&gt; -    def _static_build_path(cls, filesystem, build_directory, chromium_base, webkit_base, *comps):
&gt; +    def _static_build_path(cls, filesystem, build_directory, chromium_base, webkit_base, configuration, comps):
&gt;          if build_directory:
&gt;              return filesystem.join(build_directory, *comps)

How does this work without the * in front of comps?

&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium.py:393
&gt; +        return self._static_build_path(self._filesystem, self.get_option(&apos;build_directory&apos;), self.path_from_chromium_base(), self.path_from_webkit_base(), configuration=configuration, comps=comps)

Why are configuration and comps named? Shouldn&apos;t comps be *comps?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675067</commentid>
    <comment_count>15</comment_count>
      <attachid>153594</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-07-20 16:32:45 -0700</bug_when>
    <thetext>Comment on attachment 153594
fix changelog

r- for now, but feel free to r? again if I&apos;m missing something about how tuple args work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675072</commentid>
    <comment_count>16</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-07-20 16:39:15 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 153594 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=153594&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/chromium.py:83
&gt; &gt; -    def _static_build_path(cls, filesystem, build_directory, chromium_base, webkit_base, *comps):
&gt; &gt; +    def _static_build_path(cls, filesystem, build_directory, chromium_base, webkit_base, configuration, comps):
&gt; &gt;          if build_directory:
&gt; &gt;              return filesystem.join(build_directory, *comps)
&gt; 
&gt; How does this work without the * in front of comps?
&gt; 

taking a tuple and putting the * in front of it basically expands the argument into a varargs list.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/chromium.py:393
&gt; &gt; +        return self._static_build_path(self._filesystem, self.get_option(&apos;build_directory&apos;), self.path_from_chromium_base(), self.path_from_webkit_base(), configuration=configuration, comps=comps)
&gt; 
&gt; Why are configuration and comps named? Shouldn&apos;t comps be *comps?

no particular reason for the names; I actually thought they were all named but I obviously didn&apos;t check closely. cf. above for comps vs *comps. I don&apos;t like to use the vararg positional parameters in a function that has so many other parameters as well; that said, the change was done originally because of the interaction with the kwargs (since configuration came after comps), so I could back it out now.

let me know which you prefer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675080</commentid>
    <comment_count>17</comment_count>
      <attachid>153594</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-07-20 16:48:10 -0700</bug_when>
    <thetext>Comment on attachment 153594
fix changelog

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

&gt;&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium.py:83
&gt;&gt;&gt;              return filesystem.join(build_directory, *comps)
&gt;&gt; 
&gt;&gt; How does this work without the * in front of comps?
&gt; 
&gt; taking a tuple and putting the * in front of it basically expands the argument into a varargs list.

Ah, right, because we&apos;re passing it to a function.

&gt;&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium.py:393
&gt;&gt;&gt; +        return self._static_build_path(self._filesystem, self.get_option(&apos;build_directory&apos;), self.path_from_chromium_base(), self.path_from_webkit_base(), configuration=configuration, comps=comps)
&gt;&gt; 
&gt;&gt; Why are configuration and comps named? Shouldn&apos;t comps be *comps?
&gt; 
&gt; no particular reason for the names; I actually thought they were all named but I obviously didn&apos;t check closely. cf. above for comps vs *comps. I don&apos;t like to use the vararg positional parameters in a function that has so many other parameters as well; that said, the change was done originally because of the interaction with the kwargs (since configuration came after comps), so I could back it out now.
&gt; 
&gt; let me know which you prefer.

I would remove the explicit naming since they are not optional parameters and we don&apos;t normally name non-optional params.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675894</commentid>
    <comment_count>18</comment_count>
      <attachid>153837</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-07-23 12:22:11 -0700</bug_when>
    <thetext>Created attachment 153837
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676051</commentid>
    <comment_count>19</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-07-23 15:06:32 -0700</bug_when>
    <thetext>Committed r123360: &lt;http://trac.webkit.org/changeset/123360&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676056</commentid>
    <comment_count>20</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-07-23 15:10:14 -0700</bug_when>
    <thetext>Reverted r123360 for reason:

broke the chromium bots

Committed r123390: &lt;http://trac.webkit.org/changeset/123390&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677218</commentid>
    <comment_count>21</comment_count>
      <attachid>154145</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-07-24 14:42:57 -0700</bug_when>
    <thetext>Created attachment 154145
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677221</commentid>
    <comment_count>22</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-07-24 14:45:36 -0700</bug_when>
    <thetext>Committed r123530: &lt;http://trac.webkit.org/changeset/123530&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153560</attachid>
            <date>2012-07-20 12:18:00 -0700</date>
            <delta_ts>2012-07-20 13:32:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91890-20120720121755.patch</filename>
            <type>text/plain</type>
            <size>3914</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMTYxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZmFhMmZjNWM0M2JkMmY4NzIyMmY1MjE4OTEyN2MwZmM4
ZjJiNDk0YS4uMGYwN2JjNjZlZmJlMGU4MWNhMGJiNDhhNmVmMzI3YTU0MDMwNjE3MSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1
IEBACisyMDEyLTA3LTIwICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIG5yd3Q6IG5ldmVyIGZpbmRzIGJpbmFyaWVzIGluIHRoZSAnb3V0JyBkaXIgb24gY2hy
b21pdW0gd2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MTg5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdlIGZpZ3VyZSBvdXQgd2hpY2ggZGlyZWN0b3J5IGxvb2sgaW4gZm9yIGJpbmFyaWVzIGJ5IHRl
c3RpbmcgZm9yIHRoZSBiYXNlCisgICAgICAgIGRpcmVjdG9yeSAodGhlIGRpcmVjdG9yeSBhYm92
ZSBEZWJ1Zy9SZWxlYXNlKS4gSW4gY2hyb21pdW0td2luJ3MKKyAgICAgICAgY2FzZSwgd2UgbG9v
ayBpbiBzcmMvYnVpbGQsIHdoaWNoIGFsd2F5cyBleGlzdHMgYmVjYXVzZSB0aGVyZQorICAgICAg
ICBhcmUgY2hlY2tlZC1pbiBmaWxlcyBpbiBpdCwgd2hpY2ggbWVhbnMgd2UnZCBhbHdheXMgcGlj
ayB0aGF0CisgICAgICAgIGRpcmVjdG9yeSBvdmVyIHNyYy9vdXQuIEkgZG9uJ3QgdGhpbmsgZmxp
cHBpbmcgdGhlIHByaW9yaXR5IHNvCisgICAgICAgIHRoYXQgd2UgbG9vayBpbiAnb3V0JyBmaXJz
dCBzaG91bGQgYnJlYWsgYW55dGhpbmc7IGFuCisgICAgICAgIGFsdGVybmF0aXZlIHdvdWxkIGJl
IHRvIGFjdHVhbGx5IGxvb2sgZm9yIERlYnVnIG9yIFJlbGVhc2UgYXMKKyAgICAgICAgd2VsbCwg
YnV0IHRoYXQncyBhIG1vcmUgaW52YXNpdmUgY2hhbmdlLgorCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV93aW4ucHk6CisgICAgICAgIChDaHJv
bWl1bVdpblBvcnQpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvY2hyb21pdW1fd2luX3VuaXR0ZXN0LnB5OgorICAgICAgICAoQ2hyb21pdW1XaW5UZXN0LnRl
c3RfYnVpbGRfcGF0aCk6CisgICAgICAgIChDaHJvbWl1bVdpblRlc3QudGVzdF9wYXRoX3RvX2lt
YWdlX2RpZmYpOgorCiAyMDEyLTA3LTE5ICBTdWRhcnNhbmEgTmFnaW5lbmkgIDxzdWRhcnNhbmEu
bmFnaW5lbmlAbGludXguaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIFtXSzJdIEFkZCBhIGNh
bGxiYWNrIHRvIGhhbmRsZSBkZWxldGUgcmVxdWVzdCBpbiBNaW5pQnJvd3NlcgpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV93aW4u
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dp
bi5weQppbmRleCA1MTYxMTI0MWM1NzZkMjE0NTVjZDdlMGJlOTFlNWJlOGZiOGJkNDAwLi5lNzE3
OWNkMWQ3MTcyMWRhMTUxZTlkOTE0MWYzZjdhMzk5NjM0YTdlIDEwMDc1NQotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dpbi5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dpbi5weQpA
QCAtNTksNyArNTksNyBAQCBjbGFzcyBDaHJvbWl1bVdpblBvcnQoY2hyb21pdW0uQ2hyb21pdW1Q
b3J0KToKICAgICAgICAgXSwKICAgICB9CiAKLSAgICBERUZBVUxUX0JVSUxEX0RJUkVDVE9SSUVT
ID0gKCdidWlsZCcsICdvdXQnKQorICAgIERFRkFVTFRfQlVJTERfRElSRUNUT1JJRVMgPSAoJ291
dCcsICdidWlsZCcpCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgZGV0ZXJtaW5lX2Z1bGxf
cG9ydF9uYW1lKGNscywgaG9zdCwgb3B0aW9ucywgcG9ydF9uYW1lKToKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fd2luX3VuaXR0
ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1
bV93aW5fdW5pdHRlc3QucHkKaW5kZXggNjA3NzE5MjQxYWMwODhlNmVhNmI5MjdjNTZlNGYyYzFm
NTA0NGYxNC4uOTAxNzYyNzYwMzAxNDQ2MTE3ZDJhZmUxNGI3NGY1MGY4ZmU5MjRkNSAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV93
aW5fdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9jaHJvbWl1bV93aW5fdW5pdHRlc3QucHkKQEAgLTExMCw5ICsxMTAsOSBAQCBjbGFzcyBD
aHJvbWl1bVdpblRlc3QoY2hyb21pdW1fcG9ydF90ZXN0Y2FzZS5DaHJvbWl1bVBvcnRUZXN0Q2Fz
ZSk6CiAgICAgICAgIG9wdGlvbnMgPSBNb2NrT3B0aW9ucyhjb25maWd1cmF0aW9uPSdSZWxlYXNl
JywgYnVpbGRfZGlyZWN0b3J5PU5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2J1aWxkX3BhdGgo
b3B0aW9ucywgWycvbW9jay1jaGVja291dC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL291dCcsICcv
bW9jay1jaGVja291dC9vdXQnXSwgJy9tb2NrLWNoZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vb3V0JykKIAotICAgICAgICAjIFRlc3QgdGhhdCB3ZSBwcmVmZXIgdGhlIGxlZ2FjeSBkaXIg
b3ZlciB0aGUgbmV3IGRpci4KKyAgICAgICAgIyBUZXN0IHRoYXQgd2UgcHJlZmVyIHRoZSBuZXcg
ZGlyIG92ZXIgdGhlIGxlZ2FjeSBkaXIuCiAgICAgICAgIG9wdGlvbnMgPSBNb2NrT3B0aW9ucyhj
b25maWd1cmF0aW9uPSdSZWxlYXNlJywgYnVpbGRfZGlyZWN0b3J5PU5vbmUpCi0gICAgICAgIHNl
bGYuYXNzZXJ0X2J1aWxkX3BhdGgob3B0aW9ucywgWycvbW9jay1jaGVja291dC9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL2J1aWxkJywgJy9tb2NrLWNoZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vb3V0J10sICcvbW9jay1jaGVja291dC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2J1aWxkJykK
KyAgICAgICAgc2VsZi5hc3NlcnRfYnVpbGRfcGF0aChvcHRpb25zLCBbJy9tb2NrLWNoZWNrb3V0
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vYnVpbGQnLCAnL21vY2stY2hlY2tvdXQvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9vdXQnXSwgJy9tb2NrLWNoZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vb3V0JykKIAogICAgIGRlZiB0ZXN0X29wZXJhdGluZ19zeXN0ZW0oc2VsZik6CiAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ3dpbicsIHNlbGYubWFrZV9wb3J0KCkub3BlcmF0aW5nX3N5c3Rl
bSgpKQpAQCAtMTIyLDQgKzEyMiw0IEBAIGNsYXNzIENocm9taXVtV2luVGVzdChjaHJvbWl1bV9w
b3J0X3Rlc3RjYXNlLkNocm9taXVtUG9ydFRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKHNlbGYubWFrZV9wb3J0KG9wdGlvbnM9TW9ja09wdGlvbnMoZHJpdmVyX25hbWU9J090aGVy
RHJpdmVyJykpLl9wYXRoX3RvX2RyaXZlcigpLmVuZHN3aXRoKCdPdGhlckRyaXZlci5leGUnKSkK
IAogICAgIGRlZiB0ZXN0X3BhdGhfdG9faW1hZ2VfZGlmZihzZWxmKToKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMoc2VsZi5tYWtlX3BvcnQoKS5fcGF0aF90b19pbWFnZV9kaWZmKCksICcvbW9j
ay1jaGVja291dC9vdXQvUmVsZWFzZS9JbWFnZURpZmYuZXhlJykKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMoc2VsZi5tYWtlX3BvcnQoKS5fcGF0aF90b19pbWFnZV9kaWZmKCksICcvbW9jay1j
aGVja291dC9idWlsZC9SZWxlYXNlL0ltYWdlRGlmZi5leGUnKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153584</attachid>
            <date>2012-07-20 13:32:50 -0700</date>
            <delta_ts>2012-07-20 13:57:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91890-20120720133246.patch</filename>
            <type>text/plain</type>
            <size>21616</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMTYxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZmFhMmZjNWM0M2JkMmY4NzIyMmY1MjE4OTEyN2MwZmM4
ZjJiNDk0YS4uNDM5YzFjZmEwMWUwMzg1YTg5ODc4ZjhmOTMzODU2OGY0NmY5Yzk1NCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUz
IEBACisyMDEyLTA3LTIwICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIG5yd3Q6IG5ldmVyIGZpbmRzIGJpbmFyaWVzIGluIHRoZSAnb3V0JyBkaXIgb24gY2hy
b21pdW0gd2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MTg5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdlIHdlcmUgZmlndXJpbmcgb3V0IHdoaWNoIGRpcmVjdG9yeSBsb29rIGluIGZvciBiaW5hcmll
cyBieSB0ZXN0aW5nIGZvciB0aGUKKyAgICAgICAgYmFzZSBkaXJlY3RvcnkgKHRoZSBkaXJlY3Rv
cnkgYWJvdmUgRGVidWcvUmVsZWFzZSkuIEluCisgICAgICAgIGNocm9taXVtLXdpbidzIGNhc2Us
IHdlIGxvb2sgaW4gc3JjL2J1aWxkLCB3aGljaCBhbHdheXMgZXhpc3RzIGJlY2F1c2UgdGhlcmUK
KyAgICAgICBhcmUgY2hlY2tlZC1pbiBmaWxlcyBpbiBpdCwgd2hpY2ggbWVhbnMgd2UnZCBhbHdh
eXMgcGljayB0aGF0CisgICAgICAgIGRpcmVjdG9yeSBvdmVyIHNyYy9vdXQuIEFsbCBvZiB0aGUg
b3RoZXIgcG9ydHMnIGJ1aWxkX3BhdGgoKQorICAgICAgICBpbXBsZW1lbnRhdGlvbiB3YXMgaW5j
bHVkaW5nIERlYnVnL1JlbGVhc2UuIElmIHdlIG1hdGNoZWQgdGhhdCwKKyAgICAgICAgd2Ugd291
bGRuJ3QgaGF2ZSBhIHByb2JsZW0sIHNvIHRoaXMgY2hhbmdlIGZpeGVzIHRoYXQgYW5kCisgICAg
ICAgIHVwZGF0ZXMgYWxsIG9mIHRoZSBjYWxsZXJzIG9mIHRoZSBjaHJvbWl1bSBwb3J0cycgaW1w
bGVtZW50YXRpb24KKyAgICAgICAgdG8gbm90IHBhc3MgY29uZmlndXJhdGlvbiBhcyBwYXJ0IG9m
IHRoZSBwYXRoIHRvIGxvb2sgdXA7IHdlCisgICAgICAgIHN0aWxsIG5lZWQgdG8gcGFzcyBjb25m
aWd1cmF0aW9uIGluIHNvbWUgY2FzZXMgKHRvIHRlc3QgaWYgdGhlCisgICAgICAgIGJ1aWxkIGlz
IG91dCBvZiBkYXRlIGJldHdlZW4gZGVidWcgYW5kIHJlbGVhc2UpIHNvIHRoZQorICAgICAgICBp
bXBsZW1lbnRhdGlvbiBnZXRzIHNsaWdodGx5IG1vcmUgY29tcGxpY2F0ZWQuCisKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5OgorICAgICAg
ICAoQ2hyb21pdW1Qb3J0Ll9zdGF0aWNfYnVpbGRfcGF0aCk6CisgICAgICAgIChDaHJvbWl1bVBv
cnQuZGVmYXVsdF9yZXN1bHRzX2RpcmVjdG9yeSk6CisgICAgICAgIChDaHJvbWl1bVBvcnQuX2J1
aWxkX3BhdGgpOgorICAgICAgICAoQ2hyb21pdW1Qb3J0Ll9wYXRoX3RvX2ltYWdlX2RpZmYpOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fYW5k
cm9pZC5weToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZFBvcnQuX2J1aWxkX3BhdGgpOgorICAg
ICAgICAoQ2hyb21pdW1BbmRyb2lkUG9ydC5fcGF0aF90b19kcml2ZXIpOgorICAgICAgICAoQ2hy
b21pdW1BbmRyb2lkUG9ydC5fcGF0aF90b19mb3J3YXJkZXIpOgorICAgICAgICAoQ2hyb21pdW1B
bmRyb2lkUG9ydC5fcHVzaF9leGVjdXRhYmxlKToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZFBv
cnQuX3B1c2hfZm9udHMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvY2hyb21pdW1fbGludXgucHk6CisgICAgICAgIChDaHJvbWl1bUxpbnV4UG9ydC5fZGV0
ZXJtaW5lX2RyaXZlcl9wYXRoX3N0YXRpY2FsbHkpOgorICAgICAgICAoQ2hyb21pdW1MaW51eFBv
cnQuX21vZHVsZXNfdG9fc2VhcmNoX2Zvcl9zeW1ib2xzKToKKyAgICAgICAgKENocm9taXVtTGlu
dXhQb3J0Ll9wYXRoX3RvX2RyaXZlcik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9saW51eF91bml0dGVzdC5weToKKyAgICAgICAgKENocm9t
aXVtTGludXhQb3J0VGVzdC50ZXN0X2J1aWxkX3BhdGgpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbWFjLnB5OgorICAgICAgICAoQ2hyb21p
dW1NYWNQb3J0Ll9tb2R1bGVzX3RvX3NlYXJjaF9mb3Jfc3ltYm9scyk6CisgICAgICAgIChDaHJv
bWl1bU1hY1BvcnQuX3BhdGhfdG9fZHJpdmVyKToKKyAgICAgICAgKENocm9taXVtTWFjUG9ydC5f
cGF0aF90b19oZWxwZXIpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvY2hyb21pdW1fbWFjX3VuaXR0ZXN0LnB5OgorICAgICAgICAoQ2hyb21pdW1NYWNQb3J0
VGVzdC50ZXN0X2J1aWxkX3BhdGgpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvY2hyb21pdW1fd2luLnB5OgorICAgICAgICAoQ2hyb21pdW1XaW5Qb3J0Ll9w
YXRoX3RvX2RyaXZlcik6CisgICAgICAgIChDaHJvbWl1bVdpblBvcnQuX3BhdGhfdG9faGVscGVy
KToKKyAgICAgICAgKENocm9taXVtV2luUG9ydC5fcGF0aF90b19pbWFnZV9kaWZmKToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dpbl91bml0
dGVzdC5weToKKyAgICAgICAgKENocm9taXVtV2luVGVzdC50ZXN0X2J1aWxkX3BhdGgpOgorCiAy
MDEyLTA3LTE5ICBTdWRhcnNhbmEgTmFnaW5lbmkgIDxzdWRhcnNhbmEubmFnaW5lbmlAbGludXgu
aW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIFtXSzJdIEFkZCBhIGNhbGxiYWNrIHRvIGhhbmRs
ZSBkZWxldGUgcmVxdWVzdCBpbiBNaW5pQnJvd3NlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKaW5kZXggOTcyOWY5NGMwNTBh
ZTg1ZGRhOTBhYjhhNGNkMWI4MWQyMDVmODJmNS4uMjRlYjBkYTc0MjkxNjYzMGYyMDJlNzVjMmFi
Y2I1ZDg5YWYyODRiNSAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9jaHJvbWl1bS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CkBAIC03OCwxNyArNzgsMTcgQEAgY2xhc3MgQ2hyb21p
dW1Qb3J0KFdlYktpdFBvcnQpOgogICAgIERFRkFVTFRfQlVJTERfRElSRUNUT1JJRVMgPSAoJ291
dCcsKQogCiAgICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIF9zdGF0aWNfYnVpbGRfcGF0aChjbHMs
IGZpbGVzeXN0ZW0sIGJ1aWxkX2RpcmVjdG9yeSwgY2hyb21pdW1fYmFzZSwgd2Via2l0X2Jhc2Us
ICpjb21wcyk6CisgICAgZGVmIF9zdGF0aWNfYnVpbGRfcGF0aChjbHMsIGZpbGVzeXN0ZW0sIGJ1
aWxkX2RpcmVjdG9yeSwgY2hyb21pdW1fYmFzZSwgd2Via2l0X2Jhc2UsIGNvbmZpZ3VyYXRpb24s
IGNvbXBzKToKICAgICAgICAgaWYgYnVpbGRfZGlyZWN0b3J5OgogICAgICAgICAgICAgcmV0dXJu
IGZpbGVzeXN0ZW0uam9pbihidWlsZF9kaXJlY3RvcnksICpjb21wcykKIAogICAgICAgICBmb3Ig
ZGlyZWN0b3J5IGluIGNscy5ERUZBVUxUX0JVSUxEX0RJUkVDVE9SSUVTOgotICAgICAgICAgICAg
YmFzZV9kaXIgPSBmaWxlc3lzdGVtLmpvaW4oY2hyb21pdW1fYmFzZSwgZGlyZWN0b3J5KQorICAg
ICAgICAgICAgYmFzZV9kaXIgPSBmaWxlc3lzdGVtLmpvaW4oY2hyb21pdW1fYmFzZSwgZGlyZWN0
b3J5LCBjb25maWd1cmF0aW9uKQogICAgICAgICAgICAgaWYgZmlsZXN5c3RlbS5leGlzdHMoYmFz
ZV9kaXIpOgogICAgICAgICAgICAgICAgIHJldHVybiBmaWxlc3lzdGVtLmpvaW4oYmFzZV9kaXIs
ICpjb21wcykKIAogICAgICAgICBmb3IgZGlyZWN0b3J5IGluIGNscy5ERUZBVUxUX0JVSUxEX0RJ
UkVDVE9SSUVTOgotICAgICAgICAgICAgYmFzZV9kaXIgPSBmaWxlc3lzdGVtLmpvaW4od2Via2l0
X2Jhc2UsIGRpcmVjdG9yeSkKKyAgICAgICAgICAgIGJhc2VfZGlyID0gZmlsZXN5c3RlbS5qb2lu
KHdlYmtpdF9iYXNlLCBkaXJlY3RvcnksIGNvbmZpZ3VyYXRpb24pCiAgICAgICAgICAgICBpZiBm
aWxlc3lzdGVtLmV4aXN0cyhiYXNlX2Rpcik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbGVz
eXN0ZW0uam9pbihiYXNlX2RpciwgKmNvbXBzKQogCkBAIC0yNjMsNyArMjYzLDcgQEAgY2xhc3Mg
Q2hyb21pdW1Qb3J0KFdlYktpdFBvcnQpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZXR1
cm4gc2VsZi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgnd2Via2l0Jywgc2VsZi5nZXRfb3B0aW9u
KCdjb25maWd1cmF0aW9uJyksICdsYXlvdXQtdGVzdC1yZXN1bHRzJykKICAgICAgICAgZXhjZXB0
IEFzc2VydGlvbkVycm9yOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoc2Vs
Zi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJyksICdsYXlvdXQtdGVzdC1yZXN1bHRzJykKKyAg
ICAgICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKCdsYXlvdXQtdGVzdC1yZXN1bHRzJykK
IAogICAgIGRlZiBfbWlzc2luZ19zeW1ib2xfdG9fc2tpcHBlZF90ZXN0cyhzZWxmKToKICAgICAg
ICAgIyBGSVhNRTogU2hvdWxkIFdlYktpdFBvcnQgaGF2ZSB0aGVzZSBkZWZpbml0aW9ucyBhbHNv
PwpAQCAtMzg1LDEyICszODUsMTIgQEAgY2xhc3MgQ2hyb21pdW1Qb3J0KFdlYktpdFBvcnQpOgog
ICAgICMgb3IgYW55IHN1YmNsYXNzZXMuCiAgICAgIwogCi0gICAgZGVmIF9idWlsZF9wYXRoKHNl
bGYsICpjb21wcyk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9zdGF0aWNfYnVpbGRfcGF0aChzZWxm
Ll9maWxlc3lzdGVtLCBzZWxmLmdldF9vcHRpb24oJ2J1aWxkX2RpcmVjdG9yeScpLCBzZWxmLnBh
dGhfZnJvbV9jaHJvbWl1bV9iYXNlKCksIHNlbGYucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCksICpj
b21wcykKKyAgICBkZWYgX2J1aWxkX3BhdGgoc2VsZiwgKmNvbXBzLCAqKmt3YXJncyk6CisgICAg
ICAgIHJldHVybiBzZWxmLl9zdGF0aWNfYnVpbGRfcGF0aChzZWxmLl9maWxlc3lzdGVtLCBzZWxm
LmdldF9vcHRpb24oJ2J1aWxkX2RpcmVjdG9yeScpLCBzZWxmLnBhdGhfZnJvbV9jaHJvbWl1bV9i
YXNlKCksIHNlbGYucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCksIGNvbmZpZ3VyYXRpb249KGt3YXJn
cy5nZXQoJ2NvbmZpZ3VyYXRpb24nKSBvciBzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24n
KSksIGNvbXBzPWNvbXBzKQogCiAgICAgZGVmIF9wYXRoX3RvX2ltYWdlX2RpZmYoc2VsZik6CiAg
ICAgICAgIGJpbmFyeV9uYW1lID0gJ0ltYWdlRGlmZicKLSAgICAgICAgcmV0dXJuIHNlbGYuX2J1
aWxkX3BhdGgoc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJyksIGJpbmFyeV9uYW1lKQor
ICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChiaW5hcnlfbmFtZSkKIAogICAgIGRlZiBf
Y2hlY2tfZHJpdmVyX2J1aWxkX3VwX3RvX2RhdGUoc2VsZiwgY29uZmlndXJhdGlvbik6CiAgICAg
ICAgIGlmIGNvbmZpZ3VyYXRpb24gaW4gKCdEZWJ1ZycsICdSZWxlYXNlJyk6CmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2FuZHJv
aWQucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVt
X2FuZHJvaWQucHkKaW5kZXggNmJiOGZhYzU0OGE3MGRiM2U1ODIxYTk2NzE3ZGQ0Y2M0ODk1NzBk
Ny4uNGY4MmI4M2MxZGM2NTA5NmNiMmFjNTUwNjc4MDVlYzMwMWU2MzBiNSAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9hbmRyb2lk
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21p
dW1fYW5kcm9pZC5weQpAQCAtMjc5LDggKzI3OSw4IEBAIGNsYXNzIENocm9taXVtQW5kcm9pZFBv
cnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKIAogICAgICMgT3ZlcnJpZGRlbiBwcml2YXRlIGZ1
bmN0aW9ucy4KIAotICAgIGRlZiBfYnVpbGRfcGF0aChzZWxmLCAqY29tcHMpOgotICAgICAgICBy
ZXR1cm4gc2VsZi5faG9zdF9wb3J0Ll9idWlsZF9wYXRoKCpjb21wcykKKyAgICBkZWYgX2J1aWxk
X3BhdGgoc2VsZiwgKmNvbXBzLCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBzZWxmLl9ob3N0
X3BvcnQuX2J1aWxkX3BhdGgoKmNvbXBzLCAqKmt3YXJncykKIAogICAgIGRlZiBfcGF0aF90b19h
cGFjaGUoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9ob3N0X3BvcnQuX3BhdGhfdG9fYXBh
Y2hlKCkKQEAgLTI4OSwxNSArMjg5LDEzIEBAIGNsYXNzIENocm9taXVtQW5kcm9pZFBvcnQoY2hy
b21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICAgICAgcmV0dXJuIHNlbGYuX2hvc3RfcG9ydC5fcGF0
aF90b19hcGFjaGVfY29uZmlnX2ZpbGUoKQogCiAgICAgZGVmIF9wYXRoX3RvX2RyaXZlcihzZWxm
LCBjb25maWd1cmF0aW9uPU5vbmUpOgotICAgICAgICBpZiBub3QgY29uZmlndXJhdGlvbjoKLSAg
ICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24n
KQotICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChjb25maWd1cmF0aW9uLCAnRHVtcFJl
bmRlclRyZWVfYXBrL0R1bXBSZW5kZXJUcmVlLWRlYnVnLmFwaycpCisgICAgICAgIHJldHVybiBz
ZWxmLl9idWlsZF9wYXRoKCdEdW1wUmVuZGVyVHJlZV9hcGsvRHVtcFJlbmRlclRyZWUtZGVidWcu
YXBrJywgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uKQogCiAgICAgZGVmIF9wYXRoX3RvX2hl
bHBlcihzZWxmKToKICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgIGRlZiBfcGF0aF90b19mb3J3
YXJkZXIoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKHNlbGYuZ2V0X29w
dGlvbignY29uZmlndXJhdGlvbicpLCAnZm9yd2FyZGVyJykKKyAgICAgICAgcmV0dXJuIHNlbGYu
X2J1aWxkX3BhdGgoJ2ZvcndhcmRlcicpCiAKICAgICBkZWYgX3BhdGhfdG9faW1hZ2VfZGlmZihz
ZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2hvc3RfcG9ydC5fcGF0aF90b19pbWFnZV9kaWZm
KCkKQEAgLTM0NSwxNCArMzQzLDEwIEBAIGNsYXNzIENocm9taXVtQW5kcm9pZFBvcnQoY2hyb21p
dW0uQ2hyb21pdW1Qb3J0KToKICAgICAgICAgICAgIGluc3RhbGxfcmVzdWx0ID0gc2VsZi5fcnVu
X2FkYl9jb21tYW5kKFsnaW5zdGFsbCcsIGRydF9ob3N0X3BhdGhdKQogICAgICAgICAgICAgaWYg
aW5zdGFsbF9yZXN1bHQuZmluZCgnU3VjY2VzcycpID09IC0xOgogICAgICAgICAgICAgICAgIHJh
aXNlIEFzc2VydGlvbkVycm9yKCdGYWlsZWQgdG8gaW5zdGFsbCAlcyBvbnRvIGRldmljZTogJXMn
ICUgKGRydF9ob3N0X3BhdGgsIGluc3RhbGxfcmVzdWx0KSkKLSAgICAgICAgICAgIHNlbGYuX3B1
c2hfdG9fZGV2aWNlKHNlbGYuX2J1aWxkX3BhdGgoc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0
aW9uJyksICdEdW1wUmVuZGVyVHJlZS5wYWsnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERFVklDRV9EUlRfRElSICsgJ0R1bXBSZW5kZXJUcmVlLnBhaycpCi0gICAgICAgICAg
ICBzZWxmLl9wdXNoX3RvX2RldmljZShzZWxmLl9idWlsZF9wYXRoKHNlbGYuZ2V0X29wdGlvbign
Y29uZmlndXJhdGlvbicpLCAnRHVtcFJlbmRlclRyZWVfcmVzb3VyY2VzJyksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBERVZJQ0VfRFJUX0RJUiArICdEdW1wUmVuZGVyVHJlZV9y
ZXNvdXJjZXMnKQotICAgICAgICAgICAgc2VsZi5fcHVzaF90b19kZXZpY2Uoc2VsZi5fYnVpbGRf
cGF0aChzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKSwgJ2FuZHJvaWRfbWFpbl9mb250
cy54bWwnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERFVklDRV9EUlRfRElS
ICsgJ2FuZHJvaWRfbWFpbl9mb250cy54bWwnKQotICAgICAgICAgICAgc2VsZi5fcHVzaF90b19k
ZXZpY2Uoc2VsZi5fYnVpbGRfcGF0aChzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKSwg
J2FuZHJvaWRfZmFsbGJhY2tfZm9udHMueG1sJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBERVZJQ0VfRFJUX0RJUiArICdhbmRyb2lkX2ZhbGxiYWNrX2ZvbnRzLnhtbCcpCisg
ICAgICAgICAgICBzZWxmLl9wdXNoX3RvX2RldmljZShzZWxmLl9idWlsZF9wYXRoKCdEdW1wUmVu
ZGVyVHJlZS5wYWsnKSwgREVWSUNFX0RSVF9ESVIgKyAnRHVtcFJlbmRlclRyZWUucGFrJykKKyAg
ICAgICAgICAgIHNlbGYuX3B1c2hfdG9fZGV2aWNlKHNlbGYuX2J1aWxkX3BhdGgoJ0R1bXBSZW5k
ZXJUcmVlX3Jlc291cmNlcycpLCBERVZJQ0VfRFJUX0RJUiArICdEdW1wUmVuZGVyVHJlZV9yZXNv
dXJjZXMnKQorICAgICAgICAgICAgc2VsZi5fcHVzaF90b19kZXZpY2Uoc2VsZi5fYnVpbGRfcGF0
aCgnYW5kcm9pZF9tYWluX2ZvbnRzLnhtbCcpLCBERVZJQ0VfRFJUX0RJUiArICdhbmRyb2lkX21h
aW5fZm9udHMueG1sJykKKyAgICAgICAgICAgIHNlbGYuX3B1c2hfdG9fZGV2aWNlKHNlbGYuX2J1
aWxkX3BhdGgoJ2FuZHJvaWRfZmFsbGJhY2tfZm9udHMueG1sJyksIERFVklDRV9EUlRfRElSICsg
J2FuZHJvaWRfZmFsbGJhY2tfZm9udHMueG1sJykKICAgICAgICAgICAgICMgVmVyc2lvbiBjb250
cm9sIG9mIHRlc3QgcmVzb3VyY2VzIGlzIGRlcGVuZGVudCBvbiBleGVjdXRhYmxlcywKICAgICAg
ICAgICAgICMgYmVjYXVzZSB3ZSB3aWxsIGFsd2F5cyByZWJ1aWxkIGV4ZWN1dGFibGVzIHdoZW4g
cmVzb3VyY2VzIGFyZQogICAgICAgICAgICAgIyB1cGRhdGVkLgpAQCAtMzYyLDcgKzM1Niw3IEBA
IGNsYXNzIENocm9taXVtQW5kcm9pZFBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICBk
ZWYgX3B1c2hfZm9udHMoc2VsZik6CiAgICAgICAgIGlmIG5vdCBzZWxmLl9jaGVja192ZXJzaW9u
KERFVklDRV9GT05UU19ESVIsIEZPTlRfRklMRVNfVkVSU0lPTik6CiAgICAgICAgICAgICBfbG9n
LmRlYnVnKCdQdXNoaW5nIGZvbnRzJykKLSAgICAgICAgICAgIHBhdGhfdG9fYWhlbV9mb250ID0g
c2VsZi5fYnVpbGRfcGF0aChzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKSwgJ0FIRU1f
X19fLlRURicpCisgICAgICAgICAgICBwYXRoX3RvX2FoZW1fZm9udCA9IHNlbGYuX2J1aWxkX3Bh
dGgoJ0FIRU1fX19fLlRURicpCiAgICAgICAgICAgICBzZWxmLl9wdXNoX3RvX2RldmljZShwYXRo
X3RvX2FoZW1fZm9udCwgREVWSUNFX0ZPTlRTX0RJUiArICdBSEVNX19fXy5UVEYnKQogICAgICAg
ICAgICAgZm9yIChob3N0X2RpciwgZm9udF9maWxlKSBpbiBIT1NUX0ZPTlRfRklMRVM6CiAgICAg
ICAgICAgICAgICAgc2VsZi5fcHVzaF90b19kZXZpY2UoaG9zdF9kaXIgKyBmb250X2ZpbGUsIERF
VklDRV9GT05UU19ESVIgKyBmb250X2ZpbGUpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2xpbnV4LnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9saW51eC5weQppbmRleCBlNTQw
NzhkMmI3MTg3ODdhYjRmZTc4NWMxYmZlOWFhMDhkMzUzNjViLi5mZTA3MGU3MDU2ODAwMTJhNjY0
NWViM2VkYWRlNjc1OGFhZjY4ODhlIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2xpbnV4LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbGludXgucHkKQEAgLTY5LDcgKzY5
LDcgQEAgY2xhc3MgQ2hyb21pdW1MaW51eFBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAg
ICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBvcHRpb25zLmNvbmZpZ3VyYXRpb24KICAgICAgICAg
ZWxzZToKICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBjb25maWdfb2JqZWN0LmRlZmF1bHRf
Y29uZmlndXJhdGlvbigpCi0gICAgICAgIHJldHVybiBjbHMuX3N0YXRpY19idWlsZF9wYXRoKGhv
c3QuZmlsZXN5c3RlbSwgYnVpbGRfZGlyZWN0b3J5LCBjaHJvbWl1bV9iYXNlLCB3ZWJraXRfYmFz
ZSwgY29uZmlndXJhdGlvbiwgJ0R1bXBSZW5kZXJUcmVlJykKKyAgICAgICAgcmV0dXJuIGNscy5f
c3RhdGljX2J1aWxkX3BhdGgoaG9zdC5maWxlc3lzdGVtLCBidWlsZF9kaXJlY3RvcnksIGNocm9t
aXVtX2Jhc2UsIHdlYmtpdF9iYXNlLCBjb25maWd1cmF0aW9uLCBbJ0R1bXBSZW5kZXJUcmVlJ10p
CiAKICAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIF9kZXRlcm1pbmVfYXJjaGl0ZWN0dXJlKGZp
bGVzeXN0ZW0sIGV4ZWN1dGl2ZSwgZHJpdmVyX3BhdGgpOgpAQCAtMTExLDcgKzExMSw3IEBAIGNs
YXNzIENocm9taXVtTGludXhQb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgICAgIHJl
dHVybiBtYXAoc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgsIHBvcnRfbmFtZXMpCiAKICAgICBk
ZWYgX21vZHVsZXNfdG9fc2VhcmNoX2Zvcl9zeW1ib2xzKHNlbGYpOgotICAgICAgICByZXR1cm4g
W3NlbGYuX2J1aWxkX3BhdGgoc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJyksICdsaWJm
Zm1wZWdzdW1vLnNvJyldCisgICAgICAgIHJldHVybiBbc2VsZi5fYnVpbGRfcGF0aCgnbGliZmZt
cGVnc3Vtby5zbycpXQogCiAgICAgZGVmIGNoZWNrX2J1aWxkKHNlbGYsIG5lZWRzX2h0dHApOgog
ICAgICAgICByZXN1bHQgPSBjaHJvbWl1bS5DaHJvbWl1bVBvcnQuY2hlY2tfYnVpbGQoc2VsZiwg
bmVlZHNfaHR0cCkKQEAgLTE3MywxMCArMTczLDggQEAgY2xhc3MgQ2hyb21pdW1MaW51eFBvcnQo
Y2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICAgICAgcmV0dXJuICIvdXNyL2Jpbi9waHAtY2dp
IgogCiAgICAgZGVmIF9wYXRoX3RvX2RyaXZlcihzZWxmLCBjb25maWd1cmF0aW9uPU5vbmUpOgot
ICAgICAgICBpZiBub3QgY29uZmlndXJhdGlvbjoKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24g
PSBzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKQogICAgICAgICBiaW5hcnlfbmFtZSA9
IHNlbGYuZHJpdmVyX25hbWUoKQotICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChjb25m
aWd1cmF0aW9uLCBiaW5hcnlfbmFtZSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgo
YmluYXJ5X25hbWUsIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbikKIAogICAgIGRlZiBfcGF0
aF90b19oZWxwZXIoc2VsZik6CiAgICAgICAgIHJldHVybiBOb25lCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2xpbnV4X3VuaXR0
ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1
bV9saW51eF91bml0dGVzdC5weQppbmRleCA5MDk0ZDc0NThjNThlMWQ5OWMzODQzOWY5MmVmNjhj
M2ZmYmJkMTQyLi5hMDgyYmUxYjVhZTRkYjJlNGI1MTY0YzAzNTllYmZhZmFhOGJmNThhIDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVt
X2xpbnV4X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvY2hyb21pdW1fbGludXhfdW5pdHRlc3QucHkKQEAgLTkzLDE5ICs5MywxOSBAQCBj
bGFzcyBDaHJvbWl1bUxpbnV4UG9ydFRlc3QoY2hyb21pdW1fcG9ydF90ZXN0Y2FzZS5DaHJvbWl1
bVBvcnRUZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfYnVpbGRfcGF0aChzZWxmKToKICAgICAgICAg
IyBUZXN0IHRoYXQgb3B0aW9uYWwgcGF0aHMgYXJlIHVzZWQgcmVnYXJkbGVzcyBvZiB3aGV0aGVy
IHRoZXkgZXhpc3QuCiAgICAgICAgIG9wdGlvbnMgPSBNb2NrT3B0aW9ucyhjb25maWd1cmF0aW9u
PSdSZWxlYXNlJywgYnVpbGRfZGlyZWN0b3J5PScvZm9vJykKLSAgICAgICAgc2VsZi5hc3NlcnRf
YnVpbGRfcGF0aChvcHRpb25zLCBbJy9tb2NrLWNoZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vb3V0J10sICcvZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRfYnVpbGRfcGF0aChvcHRpb25z
LCBbJy9tb2NrLWNoZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vb3V0L1JlbGVhc2UnXSwg
Jy9mb28nKQogCiAgICAgICAgICMgVGVzdCB0aGF0IG9wdGlvbmFsIHJlbGF0aXZlIHBhdGhzIGFy
ZSByZXR1cm5lZCB1bm1vZGlmaWVkLgogICAgICAgICBvcHRpb25zID0gTW9ja09wdGlvbnMoY29u
ZmlndXJhdGlvbj0nUmVsZWFzZScsIGJ1aWxkX2RpcmVjdG9yeT0nZm9vJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfYnVpbGRfcGF0aChvcHRpb25zLCBbJy9tb2NrLWNoZWNrb3V0L1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vb3V0J10sICdmb28nKQorICAgICAgICBzZWxmLmFzc2VydF9idWlsZF9wYXRo
KG9wdGlvbnMsIFsnL21vY2stY2hlY2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9vdXQvUmVs
ZWFzZSddLCAnZm9vJykKIAogICAgICAgICAjIFRlc3QgdGhhdCB3ZSBsb29rIGluIGEgY2hyb21p
dW0gZGlyZWN0b3J5IGJlZm9yZSB0aGUgd2Via2l0IGRpcmVjdG9yeS4KICAgICAgICAgb3B0aW9u
cyA9IE1vY2tPcHRpb25zKGNvbmZpZ3VyYXRpb249J1JlbGVhc2UnLCBidWlsZF9kaXJlY3Rvcnk9
Tm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRfYnVpbGRfcGF0aChvcHRpb25zLCBbJy9tb2NrLWNo
ZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vb3V0JywgJy9tb2NrLWNoZWNrb3V0L291dCdd
LCAnL21vY2stY2hlY2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9vdXQnKQorICAgICAgICBz
ZWxmLmFzc2VydF9idWlsZF9wYXRoKG9wdGlvbnMsIFsnL21vY2stY2hlY2tvdXQvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9vdXQvUmVsZWFzZScsICcvbW9jay1jaGVja291dC9vdXQvUmVsZWFzZSdd
LCAnL21vY2stY2hlY2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9vdXQvUmVsZWFzZScpCiAK
ICAgICAgICAgIyBUZXN0IHRoYXQgd2UgcHJlZmVyIHRoZSBsZWdhY3kgZGlyIG92ZXIgdGhlIG5l
dyBkaXIuCiAgICAgICAgIG9wdGlvbnMgPSBNb2NrT3B0aW9ucyhjb25maWd1cmF0aW9uPSdSZWxl
YXNlJywgYnVpbGRfZGlyZWN0b3J5PU5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2J1aWxkX3Bh
dGgob3B0aW9ucywgWycvbW9jay1jaGVja291dC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Njb25z
YnVpbGQnLCAnL21vY2stY2hlY2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9vdXQnXSwgJy9t
b2NrLWNoZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc2NvbnNidWlsZCcpCisgICAgICAg
IHNlbGYuYXNzZXJ0X2J1aWxkX3BhdGgob3B0aW9ucywgWycvbW9jay1jaGVja291dC9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Njb25zYnVpbGQvUmVsZWFzZScsICcvbW9jay1jaGVja291dC9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL291dC9SZWxlYXNlJ10sICcvbW9jay1jaGVja291dC9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Njb25zYnVpbGQvUmVsZWFzZScpCiAKICAgICBkZWYgdGVzdF9kcml2
ZXJfbmFtZV9vcHRpb24oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1ha2Vf
cG9ydCgpLl9wYXRoX3RvX2RyaXZlcigpLmVuZHN3aXRoKCdEdW1wUmVuZGVyVHJlZScpKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1
bV9tYWMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9t
aXVtX21hYy5weQppbmRleCBkZjFhYzdiNTgyZGE0MmYyNDViM2ZmMzI2YTgxN2M1MGRmZWQwMWJl
Li45OGRkODlmM2NjMzliOGNmY2U3MzQxYTFmNGU1MzRiYTNlZGM0ZWE0IDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX21hYy5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX21h
Yy5weQpAQCAtNzksNyArNzksNyBAQCBjbGFzcyBDaHJvbWl1bU1hY1BvcnQoY2hyb21pdW0uQ2hy
b21pdW1Qb3J0KToKICAgICAgICAgcmV0dXJuIG1hcChzZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0
aCwgZmFsbGJhY2tfcGF0aHNbc2VsZi5fdmVyc2lvbl0pCiAKICAgICBkZWYgX21vZHVsZXNfdG9f
c2VhcmNoX2Zvcl9zeW1ib2xzKHNlbGYpOgotICAgICAgICByZXR1cm4gW3NlbGYuX2J1aWxkX3Bh
dGgoc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJyksICdmZm1wZWdzdW1vLnNvJyldCisg
ICAgICAgIHJldHVybiBbc2VsZi5fYnVpbGRfcGF0aCgnZmZtcGVnc3Vtby5zbycpXQogCiAgICAg
ZGVmIGNoZWNrX2J1aWxkKHNlbGYsIG5lZWRzX2h0dHApOgogICAgICAgICByZXN1bHQgPSBjaHJv
bWl1bS5DaHJvbWl1bVBvcnQuY2hlY2tfYnVpbGQoc2VsZiwgbmVlZHNfaHR0cCkKQEAgLTEyMCwx
NCArMTIwLDEyIEBAIGNsYXNzIENocm9taXVtTWFjUG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQp
OgogCiAgICAgZGVmIF9wYXRoX3RvX2RyaXZlcihzZWxmLCBjb25maWd1cmF0aW9uPU5vbmUpOgog
ICAgICAgICAjIEZJWE1FOiBtYWtlIHxjb25maWd1cmF0aW9ufCBoYXBweSB3aXRoIGNhc2Utc2Vu
c2l0aXZlIGZpbGUgc3lzdGVtcy4KLSAgICAgICAgaWYgbm90IGNvbmZpZ3VyYXRpb246Ci0gICAg
ICAgICAgICBjb25maWd1cmF0aW9uID0gc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJykK
LSAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoY29uZmlndXJhdGlvbiwgc2VsZi5kcml2
ZXJfbmFtZSgpICsgJy5hcHAnLAotICAgICAgICAgICAgJ0NvbnRlbnRzJywgJ01hY09TJywgc2Vs
Zi5kcml2ZXJfbmFtZSgpKQorICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChzZWxmLmRy
aXZlcl9uYW1lKCkgKyAnLmFwcCcsCisgICAgICAgICAgICAnQ29udGVudHMnLCAnTWFjT1MnLCBz
ZWxmLmRyaXZlcl9uYW1lKCksIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbikKIAogICAgIGRl
ZiBfcGF0aF90b19oZWxwZXIoc2VsZik6CiAgICAgICAgIGJpbmFyeV9uYW1lID0gJ0xheW91dFRl
c3RIZWxwZXInCi0gICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKHNlbGYuZ2V0X29wdGlv
bignY29uZmlndXJhdGlvbicpLCBiaW5hcnlfbmFtZSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1
aWxkX3BhdGgoYmluYXJ5X25hbWUpCiAKICAgICBkZWYgX3BhdGhfdG9fd2RpZmYoc2VsZik6CiAg
ICAgICAgIHJldHVybiAnd2RpZmYnCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX21hY191bml0dGVzdC5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbWFjX3VuaXR0ZXN0LnB5Cmlu
ZGV4IDg3OTA0YTgwNDg0ODFiNTVjMTU2ZmMzYzZiYzA3ZWRjMmJlYjcyNDguLmI2ZTgwOTExMWI2
ZjM1YTYwZDM4YWYxYWM3ZmNlODU4ZmY2NDkzMDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbWFjX3VuaXR0ZXN0LnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbWFjX3Vu
aXR0ZXN0LnB5CkBAIC03NCwxOSArNzQsMTkgQEAgY2xhc3MgQ2hyb21pdW1NYWNQb3J0VGVzdChj
aHJvbWl1bV9wb3J0X3Rlc3RjYXNlLkNocm9taXVtUG9ydFRlc3RDYXNlKToKICAgICBkZWYgdGVz
dF9idWlsZF9wYXRoKHNlbGYpOgogICAgICAgICAjIFRlc3QgdGhhdCBvcHRpb25hbCBwYXRocyBh
cmUgdXNlZCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhleSBleGlzdC4KICAgICAgICAgb3B0aW9u
cyA9IE1vY2tPcHRpb25zKGNvbmZpZ3VyYXRpb249J1JlbGVhc2UnLCBidWlsZF9kaXJlY3Rvcnk9
Jy9mb28nKQotICAgICAgICBzZWxmLmFzc2VydF9idWlsZF9wYXRoKG9wdGlvbnMsIFsnL21vY2st
Y2hlY2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9vdXQnXSwgJy9mb28nKQorICAgICAgICBz
ZWxmLmFzc2VydF9idWlsZF9wYXRoKG9wdGlvbnMsIFsnL21vY2stY2hlY2tvdXQvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9vdXQvUmVsZWFzZSddLCAnL2ZvbycpCiAKICAgICAgICAgIyBUZXN0IHRo
YXQgb3B0aW9uYWwgcmVsYXRpdmUgcGF0aHMgYXJlIHJldHVybmVkIHVubW9kaWZpZWQuCiAgICAg
ICAgIG9wdGlvbnMgPSBNb2NrT3B0aW9ucyhjb25maWd1cmF0aW9uPSdSZWxlYXNlJywgYnVpbGRf
ZGlyZWN0b3J5PSdmb28nKQotICAgICAgICBzZWxmLmFzc2VydF9idWlsZF9wYXRoKG9wdGlvbnMs
IFsnL21vY2stY2hlY2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9vdXQnXSwgJ2ZvbycpCisg
ICAgICAgIHNlbGYuYXNzZXJ0X2J1aWxkX3BhdGgob3B0aW9ucywgWycvbW9jay1jaGVja291dC9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL291dC9SZWxlYXNlJ10sICdmb28nKQogCiAgICAgICAgICMg
VGVzdCB0aGF0IHdlIGxvb2sgaW4gYSBjaHJvbWl1bSBkaXJlY3RvcnkgYmVmb3JlIHRoZSB3ZWJr
aXQgZGlyZWN0b3J5LgogICAgICAgICBvcHRpb25zID0gTW9ja09wdGlvbnMoY29uZmlndXJhdGlv
bj0nUmVsZWFzZScsIGJ1aWxkX2RpcmVjdG9yeT1Ob25lKQotICAgICAgICBzZWxmLmFzc2VydF9i
dWlsZF9wYXRoKG9wdGlvbnMsIFsnL21vY2stY2hlY2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9vdXQnLCAnL21vY2stY2hlY2tvdXQvb3V0J10sICcvbW9jay1jaGVja291dC9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL291dCcpCisgICAgICAgIHNlbGYuYXNzZXJ0X2J1aWxkX3BhdGgob3B0aW9u
cywgWycvbW9jay1jaGVja291dC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL291dC9SZWxlYXNlJywg
Jy9tb2NrLWNoZWNrb3V0L291dC9SZWxlYXNlJ10sICcvbW9jay1jaGVja291dC9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL291dC9SZWxlYXNlJykKIAogICAgICAgICAjIFRlc3QgdGhhdCB3ZSBwcmVm
ZXIgdGhlIGxlZ2FjeSBkaXIgb3ZlciB0aGUgbmV3IGRpci4KICAgICAgICAgb3B0aW9ucyA9IE1v
Y2tPcHRpb25zKGNvbmZpZ3VyYXRpb249J1JlbGVhc2UnLCBidWlsZF9kaXJlY3Rvcnk9Tm9uZSkK
LSAgICAgICAgc2VsZi5hc3NlcnRfYnVpbGRfcGF0aChvcHRpb25zLCBbJy9tb2NrLWNoZWNrb3V0
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0veGNvZGVidWlsZCcsICcvbW9jay1jaGVja291dC9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL291dCddLCAnL21vY2stY2hlY2tvdXQvU291cmNlL1dlYktpdC9j
aHJvbWl1bS94Y29kZWJ1aWxkJykKKyAgICAgICAgc2VsZi5hc3NlcnRfYnVpbGRfcGF0aChvcHRp
b25zLCBbJy9tb2NrLWNoZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0veGNvZGVidWlsZC9S
ZWxlYXNlJywgJy9tb2NrLWNoZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vb3V0L1JlbGVh
c2UnXSwgJy9tb2NrLWNoZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0veGNvZGVidWlsZC9S
ZWxlYXNlJykKIAogICAgIGRlZiB0ZXN0X2RyaXZlcl9uYW1lX29wdGlvbihzZWxmKToKICAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubWFrZV9wb3J0KCkuX3BhdGhfdG9fZHJpdmVyKCkuZW5k
c3dpdGgoJ0R1bXBSZW5kZXJUcmVlJykpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dpbi5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fd2luLnB5CmluZGV4IDUxNjExMjQxYzU3
NmQyMTQ1NWNkN2UwYmU5MWU1YmU4ZmI4YmQ0MDAuLjI4MjQ0OWI0MDFmYmFlNThjZDFmNTJmZjc4
ZTdhN2JlMjU2Njc1NjQgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvY2hyb21pdW1fd2luLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fd2luLnB5CkBAIC0xNDksMTggKzE0OSwxNiBAQCBj
bGFzcyBDaHJvbWl1bVdpblBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICAgICAgcmV0
dXJuIHNlbGYuX2xpZ2h0dHBkX3BhdGgoJ3BocDUnLCAncGhwLWNnaS5leGUnKQogCiAgICAgZGVm
IF9wYXRoX3RvX2RyaXZlcihzZWxmLCBjb25maWd1cmF0aW9uPU5vbmUpOgotICAgICAgICBpZiBu
b3QgY29uZmlndXJhdGlvbjoKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBzZWxmLmdldF9v
cHRpb24oJ2NvbmZpZ3VyYXRpb24nKQogICAgICAgICBiaW5hcnlfbmFtZSA9ICclcy5leGUnICUg
c2VsZi5kcml2ZXJfbmFtZSgpCi0gICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKGNvbmZp
Z3VyYXRpb24sIGJpbmFyeV9uYW1lKQorICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChi
aW5hcnlfbmFtZSwgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uKQogCiAgICAgZGVmIF9wYXRo
X3RvX2hlbHBlcihzZWxmKToKICAgICAgICAgYmluYXJ5X25hbWUgPSAnTGF5b3V0VGVzdEhlbHBl
ci5leGUnCi0gICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKHNlbGYuZ2V0X29wdGlvbign
Y29uZmlndXJhdGlvbicpLCBiaW5hcnlfbmFtZSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxk
X3BhdGgoYmluYXJ5X25hbWUpCiAKICAgICBkZWYgX3BhdGhfdG9faW1hZ2VfZGlmZihzZWxmKToK
ICAgICAgICAgYmluYXJ5X25hbWUgPSAnSW1hZ2VEaWZmLmV4ZScKLSAgICAgICAgcmV0dXJuIHNl
bGYuX2J1aWxkX3BhdGgoc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJyksIGJpbmFyeV9u
YW1lKQorICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChiaW5hcnlfbmFtZSkKIAogICAg
IGRlZiBfcGF0aF90b193ZGlmZihzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYucGF0aF9mcm9t
X2Nocm9taXVtX2Jhc2UoJ3RoaXJkX3BhcnR5JywgJ2N5Z3dpbicsICdiaW4nLCAnd2RpZmYuZXhl
JykKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
Y2hyb21pdW1fd2luX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9jaHJvbWl1bV93aW5fdW5pdHRlc3QucHkKaW5kZXggNjA3NzE5MjQxYWMwODhl
NmVhNmI5MjdjNTZlNGYyYzFmNTA0NGYxNC4uMjUzZmYwZDRjNDA2ZTU3YzhlZjcwY2Q1MzQyZTBi
MTJjMzlmZmI4ZiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9jaHJvbWl1bV93aW5fdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV93aW5fdW5pdHRlc3QucHkKQEAgLTEwMCwx
OSArMTAwLDE5IEBAIGNsYXNzIENocm9taXVtV2luVGVzdChjaHJvbWl1bV9wb3J0X3Rlc3RjYXNl
LkNocm9taXVtUG9ydFRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9idWlsZF9wYXRoKHNlbGYpOgog
ICAgICAgICAjIFRlc3QgdGhhdCBvcHRpb25hbCBwYXRocyBhcmUgdXNlZCByZWdhcmRsZXNzIG9m
IHdoZXRoZXIgdGhleSBleGlzdC4KICAgICAgICAgb3B0aW9ucyA9IE1vY2tPcHRpb25zKGNvbmZp
Z3VyYXRpb249J1JlbGVhc2UnLCBidWlsZF9kaXJlY3Rvcnk9Jy9mb28nKQotICAgICAgICBzZWxm
LmFzc2VydF9idWlsZF9wYXRoKG9wdGlvbnMsIFsnL21vY2stY2hlY2tvdXQvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9vdXQnXSwgJy9mb28nKQorICAgICAgICBzZWxmLmFzc2VydF9idWlsZF9wYXRo
KG9wdGlvbnMsIFsnL21vY2stY2hlY2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9vdXQvUmVs
ZWFzZSddLCAnL2ZvbycpCiAKICAgICAgICAgIyBUZXN0IHRoYXQgb3B0aW9uYWwgcmVsYXRpdmUg
cGF0aHMgYXJlIHJldHVybmVkIHVubW9kaWZpZWQuCiAgICAgICAgIG9wdGlvbnMgPSBNb2NrT3B0
aW9ucyhjb25maWd1cmF0aW9uPSdSZWxlYXNlJywgYnVpbGRfZGlyZWN0b3J5PSdmb28nKQotICAg
ICAgICBzZWxmLmFzc2VydF9idWlsZF9wYXRoKG9wdGlvbnMsIFsnL21vY2stY2hlY2tvdXQvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9vdXQnXSwgJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2J1
aWxkX3BhdGgob3B0aW9ucywgWycvbW9jay1jaGVja291dC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L291dC9SZWxlYXNlJ10sICdmb28nKQogCiAgICAgICAgICMgVGVzdCB0aGF0IHdlIGxvb2sgaW4g
YSBjaHJvbWl1bSBkaXJlY3RvcnkgYmVmb3JlIHRoZSB3ZWJraXQgZGlyZWN0b3J5LgogICAgICAg
ICBvcHRpb25zID0gTW9ja09wdGlvbnMoY29uZmlndXJhdGlvbj0nUmVsZWFzZScsIGJ1aWxkX2Rp
cmVjdG9yeT1Ob25lKQotICAgICAgICBzZWxmLmFzc2VydF9idWlsZF9wYXRoKG9wdGlvbnMsIFsn
L21vY2stY2hlY2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9vdXQnLCAnL21vY2stY2hlY2tv
dXQvb3V0J10sICcvbW9jay1jaGVja291dC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL291dCcpCisg
ICAgICAgIHNlbGYuYXNzZXJ0X2J1aWxkX3BhdGgob3B0aW9ucywgWycvbW9jay1jaGVja291dC9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL291dC9SZWxlYXNlJywgJy9tb2NrLWNoZWNrb3V0L291dC9S
ZWxlYXNlJ10sICcvbW9jay1jaGVja291dC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL291dC9SZWxl
YXNlJykKIAogICAgICAgICAjIFRlc3QgdGhhdCB3ZSBwcmVmZXIgdGhlIGxlZ2FjeSBkaXIgb3Zl
ciB0aGUgbmV3IGRpci4KICAgICAgICAgb3B0aW9ucyA9IE1vY2tPcHRpb25zKGNvbmZpZ3VyYXRp
b249J1JlbGVhc2UnLCBidWlsZF9kaXJlY3Rvcnk9Tm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRf
YnVpbGRfcGF0aChvcHRpb25zLCBbJy9tb2NrLWNoZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vYnVpbGQnLCAnL21vY2stY2hlY2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9vdXQnXSwg
Jy9tb2NrLWNoZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vYnVpbGQnKQorICAgICAgICBz
ZWxmLmFzc2VydF9idWlsZF9wYXRoKG9wdGlvbnMsIFsnL21vY2stY2hlY2tvdXQvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9idWlsZC9SZWxlYXNlJywgJy9tb2NrLWNoZWNrb3V0L1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vb3V0J10sICcvbW9jay1jaGVja291dC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L2J1aWxkL1JlbGVhc2UnKQogCiAgICAgZGVmIHRlc3Rfb3BlcmF0aW5nX3N5c3RlbShzZWxmKToK
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnd2luJywgc2VsZi5tYWtlX3BvcnQoKS5vcGVyYXRp
bmdfc3lzdGVtKCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153591</attachid>
            <date>2012-07-20 13:57:38 -0700</date>
            <delta_ts>2012-07-20 13:59:02 -0700</delta_ts>
            <desc>add _build_path_with_configuration</desc>
            <filename>bug-91890-20120720135733.patch</filename>
            <type>text/plain</type>
            <size>21801</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMTYxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZmFhMmZjNWM0M2JkMmY4NzIyMmY1MjE4OTEyN2MwZmM4
ZjJiNDk0YS4uNDM5YzFjZmEwMWUwMzg1YTg5ODc4ZjhmOTMzODU2OGY0NmY5Yzk1NCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUz
IEBACisyMDEyLTA3LTIwICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIG5yd3Q6IG5ldmVyIGZpbmRzIGJpbmFyaWVzIGluIHRoZSAnb3V0JyBkaXIgb24gY2hy
b21pdW0gd2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MTg5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdlIHdlcmUgZmlndXJpbmcgb3V0IHdoaWNoIGRpcmVjdG9yeSBsb29rIGluIGZvciBiaW5hcmll
cyBieSB0ZXN0aW5nIGZvciB0aGUKKyAgICAgICAgYmFzZSBkaXJlY3RvcnkgKHRoZSBkaXJlY3Rv
cnkgYWJvdmUgRGVidWcvUmVsZWFzZSkuIEluCisgICAgICAgIGNocm9taXVtLXdpbidzIGNhc2Us
IHdlIGxvb2sgaW4gc3JjL2J1aWxkLCB3aGljaCBhbHdheXMgZXhpc3RzIGJlY2F1c2UgdGhlcmUK
KyAgICAgICBhcmUgY2hlY2tlZC1pbiBmaWxlcyBpbiBpdCwgd2hpY2ggbWVhbnMgd2UnZCBhbHdh
eXMgcGljayB0aGF0CisgICAgICAgIGRpcmVjdG9yeSBvdmVyIHNyYy9vdXQuIEFsbCBvZiB0aGUg
b3RoZXIgcG9ydHMnIGJ1aWxkX3BhdGgoKQorICAgICAgICBpbXBsZW1lbnRhdGlvbiB3YXMgaW5j
bHVkaW5nIERlYnVnL1JlbGVhc2UuIElmIHdlIG1hdGNoZWQgdGhhdCwKKyAgICAgICAgd2Ugd291
bGRuJ3QgaGF2ZSBhIHByb2JsZW0sIHNvIHRoaXMgY2hhbmdlIGZpeGVzIHRoYXQgYW5kCisgICAg
ICAgIHVwZGF0ZXMgYWxsIG9mIHRoZSBjYWxsZXJzIG9mIHRoZSBjaHJvbWl1bSBwb3J0cycgaW1w
bGVtZW50YXRpb24KKyAgICAgICAgdG8gbm90IHBhc3MgY29uZmlndXJhdGlvbiBhcyBwYXJ0IG9m
IHRoZSBwYXRoIHRvIGxvb2sgdXA7IHdlCisgICAgICAgIHN0aWxsIG5lZWQgdG8gcGFzcyBjb25m
aWd1cmF0aW9uIGluIHNvbWUgY2FzZXMgKHRvIHRlc3QgaWYgdGhlCisgICAgICAgIGJ1aWxkIGlz
IG91dCBvZiBkYXRlIGJldHdlZW4gZGVidWcgYW5kIHJlbGVhc2UpIHNvIHRoZQorICAgICAgICBp
bXBsZW1lbnRhdGlvbiBnZXRzIHNsaWdodGx5IG1vcmUgY29tcGxpY2F0ZWQuCisKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5OgorICAgICAg
ICAoQ2hyb21pdW1Qb3J0Ll9zdGF0aWNfYnVpbGRfcGF0aCk6CisgICAgICAgIChDaHJvbWl1bVBv
cnQuZGVmYXVsdF9yZXN1bHRzX2RpcmVjdG9yeSk6CisgICAgICAgIChDaHJvbWl1bVBvcnQuX2J1
aWxkX3BhdGgpOgorICAgICAgICAoQ2hyb21pdW1Qb3J0Ll9wYXRoX3RvX2ltYWdlX2RpZmYpOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fYW5k
cm9pZC5weToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZFBvcnQuX2J1aWxkX3BhdGgpOgorICAg
ICAgICAoQ2hyb21pdW1BbmRyb2lkUG9ydC5fcGF0aF90b19kcml2ZXIpOgorICAgICAgICAoQ2hy
b21pdW1BbmRyb2lkUG9ydC5fcGF0aF90b19mb3J3YXJkZXIpOgorICAgICAgICAoQ2hyb21pdW1B
bmRyb2lkUG9ydC5fcHVzaF9leGVjdXRhYmxlKToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZFBv
cnQuX3B1c2hfZm9udHMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvY2hyb21pdW1fbGludXgucHk6CisgICAgICAgIChDaHJvbWl1bUxpbnV4UG9ydC5fZGV0
ZXJtaW5lX2RyaXZlcl9wYXRoX3N0YXRpY2FsbHkpOgorICAgICAgICAoQ2hyb21pdW1MaW51eFBv
cnQuX21vZHVsZXNfdG9fc2VhcmNoX2Zvcl9zeW1ib2xzKToKKyAgICAgICAgKENocm9taXVtTGlu
dXhQb3J0Ll9wYXRoX3RvX2RyaXZlcik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9saW51eF91bml0dGVzdC5weToKKyAgICAgICAgKENocm9t
aXVtTGludXhQb3J0VGVzdC50ZXN0X2J1aWxkX3BhdGgpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbWFjLnB5OgorICAgICAgICAoQ2hyb21p
dW1NYWNQb3J0Ll9tb2R1bGVzX3RvX3NlYXJjaF9mb3Jfc3ltYm9scyk6CisgICAgICAgIChDaHJv
bWl1bU1hY1BvcnQuX3BhdGhfdG9fZHJpdmVyKToKKyAgICAgICAgKENocm9taXVtTWFjUG9ydC5f
cGF0aF90b19oZWxwZXIpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvY2hyb21pdW1fbWFjX3VuaXR0ZXN0LnB5OgorICAgICAgICAoQ2hyb21pdW1NYWNQb3J0
VGVzdC50ZXN0X2J1aWxkX3BhdGgpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvY2hyb21pdW1fd2luLnB5OgorICAgICAgICAoQ2hyb21pdW1XaW5Qb3J0Ll9w
YXRoX3RvX2RyaXZlcik6CisgICAgICAgIChDaHJvbWl1bVdpblBvcnQuX3BhdGhfdG9faGVscGVy
KToKKyAgICAgICAgKENocm9taXVtV2luUG9ydC5fcGF0aF90b19pbWFnZV9kaWZmKToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dpbl91bml0
dGVzdC5weToKKyAgICAgICAgKENocm9taXVtV2luVGVzdC50ZXN0X2J1aWxkX3BhdGgpOgorCiAy
MDEyLTA3LTE5ICBTdWRhcnNhbmEgTmFnaW5lbmkgIDxzdWRhcnNhbmEubmFnaW5lbmlAbGludXgu
aW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIFtXSzJdIEFkZCBhIGNhbGxiYWNrIHRvIGhhbmRs
ZSBkZWxldGUgcmVxdWVzdCBpbiBNaW5pQnJvd3NlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKaW5kZXggOTcyOWY5NGMwNTBh
ZTg1ZGRhOTBhYjhhNGNkMWI4MWQyMDVmODJmNS4uNDkwY2Q2Y2Y5MmYyNTk1MjBkZmZkZGFlMTA2
YWUzMGY5MGNmYzUyOSAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9jaHJvbWl1bS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CkBAIC03OCwxNyArNzgsMTcgQEAgY2xhc3MgQ2hyb21p
dW1Qb3J0KFdlYktpdFBvcnQpOgogICAgIERFRkFVTFRfQlVJTERfRElSRUNUT1JJRVMgPSAoJ291
dCcsKQogCiAgICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIF9zdGF0aWNfYnVpbGRfcGF0aChjbHMs
IGZpbGVzeXN0ZW0sIGJ1aWxkX2RpcmVjdG9yeSwgY2hyb21pdW1fYmFzZSwgd2Via2l0X2Jhc2Us
ICpjb21wcyk6CisgICAgZGVmIF9zdGF0aWNfYnVpbGRfcGF0aChjbHMsIGZpbGVzeXN0ZW0sIGJ1
aWxkX2RpcmVjdG9yeSwgY2hyb21pdW1fYmFzZSwgd2Via2l0X2Jhc2UsIGNvbmZpZ3VyYXRpb24s
IGNvbXBzKToKICAgICAgICAgaWYgYnVpbGRfZGlyZWN0b3J5OgogICAgICAgICAgICAgcmV0dXJu
IGZpbGVzeXN0ZW0uam9pbihidWlsZF9kaXJlY3RvcnksICpjb21wcykKIAogICAgICAgICBmb3Ig
ZGlyZWN0b3J5IGluIGNscy5ERUZBVUxUX0JVSUxEX0RJUkVDVE9SSUVTOgotICAgICAgICAgICAg
YmFzZV9kaXIgPSBmaWxlc3lzdGVtLmpvaW4oY2hyb21pdW1fYmFzZSwgZGlyZWN0b3J5KQorICAg
ICAgICAgICAgYmFzZV9kaXIgPSBmaWxlc3lzdGVtLmpvaW4oY2hyb21pdW1fYmFzZSwgZGlyZWN0
b3J5LCBjb25maWd1cmF0aW9uKQogICAgICAgICAgICAgaWYgZmlsZXN5c3RlbS5leGlzdHMoYmFz
ZV9kaXIpOgogICAgICAgICAgICAgICAgIHJldHVybiBmaWxlc3lzdGVtLmpvaW4oYmFzZV9kaXIs
ICpjb21wcykKIAogICAgICAgICBmb3IgZGlyZWN0b3J5IGluIGNscy5ERUZBVUxUX0JVSUxEX0RJ
UkVDVE9SSUVTOgotICAgICAgICAgICAgYmFzZV9kaXIgPSBmaWxlc3lzdGVtLmpvaW4od2Via2l0
X2Jhc2UsIGRpcmVjdG9yeSkKKyAgICAgICAgICAgIGJhc2VfZGlyID0gZmlsZXN5c3RlbS5qb2lu
KHdlYmtpdF9iYXNlLCBkaXJlY3RvcnksIGNvbmZpZ3VyYXRpb24pCiAgICAgICAgICAgICBpZiBm
aWxlc3lzdGVtLmV4aXN0cyhiYXNlX2Rpcik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbGVz
eXN0ZW0uam9pbihiYXNlX2RpciwgKmNvbXBzKQogCkBAIC0yNjMsNyArMjYzLDcgQEAgY2xhc3Mg
Q2hyb21pdW1Qb3J0KFdlYktpdFBvcnQpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZXR1
cm4gc2VsZi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgnd2Via2l0Jywgc2VsZi5nZXRfb3B0aW9u
KCdjb25maWd1cmF0aW9uJyksICdsYXlvdXQtdGVzdC1yZXN1bHRzJykKICAgICAgICAgZXhjZXB0
IEFzc2VydGlvbkVycm9yOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoc2Vs
Zi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJyksICdsYXlvdXQtdGVzdC1yZXN1bHRzJykKKyAg
ICAgICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKCdsYXlvdXQtdGVzdC1yZXN1bHRzJykK
IAogICAgIGRlZiBfbWlzc2luZ19zeW1ib2xfdG9fc2tpcHBlZF90ZXN0cyhzZWxmKToKICAgICAg
ICAgIyBGSVhNRTogU2hvdWxkIFdlYktpdFBvcnQgaGF2ZSB0aGVzZSBkZWZpbml0aW9ucyBhbHNv
PwpAQCAtMzg2LDExICszODYsMTUgQEAgY2xhc3MgQ2hyb21pdW1Qb3J0KFdlYktpdFBvcnQpOgog
ICAgICMKIAogICAgIGRlZiBfYnVpbGRfcGF0aChzZWxmLCAqY29tcHMpOgotICAgICAgICByZXR1
cm4gc2VsZi5fc3RhdGljX2J1aWxkX3BhdGgoc2VsZi5fZmlsZXN5c3RlbSwgc2VsZi5nZXRfb3B0
aW9uKCdidWlsZF9kaXJlY3RvcnknKSwgc2VsZi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgpLCBz
ZWxmLnBhdGhfZnJvbV93ZWJraXRfYmFzZSgpLCAqY29tcHMpCisgICAgICAgIHJldHVybiBzZWxm
Ll9idWlsZF9wYXRoX3dpdGhfY29uZmlndXJhdGlvbihOb25lLCAqY29tcHMpCisKKyAgICBkZWYg
X2J1aWxkX3BhdGhfd2l0aF9jb25maWd1cmF0aW9uKHNlbGYsIGNvbmZpZ3VyYXRpb24sICpjb21w
cyk6CisgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uIG9yIHNlbGYuZ2V0X29w
dGlvbignY29uZmlndXJhdGlvbicpCisgICAgICAgIHJldHVybiBzZWxmLl9zdGF0aWNfYnVpbGRf
cGF0aChzZWxmLl9maWxlc3lzdGVtLCBzZWxmLmdldF9vcHRpb24oJ2J1aWxkX2RpcmVjdG9yeScp
LCBzZWxmLnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNlKCksIHNlbGYucGF0aF9mcm9tX3dlYmtpdF9i
YXNlKCksIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwgY29tcHM9Y29tcHMpCiAKICAgICBk
ZWYgX3BhdGhfdG9faW1hZ2VfZGlmZihzZWxmKToKICAgICAgICAgYmluYXJ5X25hbWUgPSAnSW1h
Z2VEaWZmJwotICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChzZWxmLmdldF9vcHRpb24o
J2NvbmZpZ3VyYXRpb24nKSwgYmluYXJ5X25hbWUpCisgICAgICAgIHJldHVybiBzZWxmLl9idWls
ZF9wYXRoKGJpbmFyeV9uYW1lKQogCiAgICAgZGVmIF9jaGVja19kcml2ZXJfYnVpbGRfdXBfdG9f
ZGF0ZShzZWxmLCBjb25maWd1cmF0aW9uKToKICAgICAgICAgaWYgY29uZmlndXJhdGlvbiBpbiAo
J0RlYnVnJywgJ1JlbGVhc2UnKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fYW5kcm9pZC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fYW5kcm9pZC5weQppbmRleCA2YmI4ZmFj
NTQ4YTcwZGIzZTU4MjFhOTY3MTdkZDRjYzQ4OTU3MGQ3Li5kMjE0YzA4ZjI2MTliYTM4Y2Q5YmQ3
N2VhOTE1OGY5YTgyOTIyN2Y4IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5CkBAIC0yODAsNyAr
MjgwLDEwIEBAIGNsYXNzIENocm9taXVtQW5kcm9pZFBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0
KToKICAgICAjIE92ZXJyaWRkZW4gcHJpdmF0ZSBmdW5jdGlvbnMuCiAKICAgICBkZWYgX2J1aWxk
X3BhdGgoc2VsZiwgKmNvbXBzKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2hvc3RfcG9ydC5fYnVp
bGRfcGF0aCgqY29tcHMpCisgICAgICAgIHNlbGYuX2J1aWxkX3BhdGgoTm9uZSwgKmNvbXBzKQor
CisgICAgZGVmIF9idWlsZF9wYXRoX3dpdGhfY29uZmlndXJhdGlvbihzZWxmLCBjb25maWd1cmF0
aW9uLCAqY29tcHMpOgorICAgICAgICByZXR1cm4gc2VsZi5faG9zdF9wb3J0Ll9idWlsZF9wYXRo
X3dpdGhfY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uLCAqY29tcHMpCiAKICAgICBkZWYgX3Bh
dGhfdG9fYXBhY2hlKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5faG9zdF9wb3J0Ll9wYXRo
X3RvX2FwYWNoZSgpCkBAIC0yODksMTUgKzI5MiwxMyBAQCBjbGFzcyBDaHJvbWl1bUFuZHJvaWRQ
b3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgICAgIHJldHVybiBzZWxmLl9ob3N0X3Bv
cnQuX3BhdGhfdG9fYXBhY2hlX2NvbmZpZ19maWxlKCkKIAogICAgIGRlZiBfcGF0aF90b19kcml2
ZXIoc2VsZiwgY29uZmlndXJhdGlvbj1Ob25lKToKLSAgICAgICAgaWYgbm90IGNvbmZpZ3VyYXRp
b246Ci0gICAgICAgICAgICBjb25maWd1cmF0aW9uID0gc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1
cmF0aW9uJykKLSAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoY29uZmlndXJhdGlvbiwg
J0R1bXBSZW5kZXJUcmVlX2Fway9EdW1wUmVuZGVyVHJlZS1kZWJ1Zy5hcGsnKQorICAgICAgICBy
ZXR1cm4gc2VsZi5fYnVpbGRfcGF0aF93aXRoX2NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbiwg
J0R1bXBSZW5kZXJUcmVlX2Fway9EdW1wUmVuZGVyVHJlZS1kZWJ1Zy5hcGsnKQogCiAgICAgZGVm
IF9wYXRoX3RvX2hlbHBlcihzZWxmKToKICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgIGRlZiBf
cGF0aF90b19mb3J3YXJkZXIoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRo
KHNlbGYuZ2V0X29wdGlvbignY29uZmlndXJhdGlvbicpLCAnZm9yd2FyZGVyJykKKyAgICAgICAg
cmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoJ2ZvcndhcmRlcicpCiAKICAgICBkZWYgX3BhdGhfdG9f
aW1hZ2VfZGlmZihzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2hvc3RfcG9ydC5fcGF0aF90
b19pbWFnZV9kaWZmKCkKQEAgLTM0NSwxNCArMzQ2LDEwIEBAIGNsYXNzIENocm9taXVtQW5kcm9p
ZFBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICAgICAgICAgIGluc3RhbGxfcmVzdWx0
ID0gc2VsZi5fcnVuX2FkYl9jb21tYW5kKFsnaW5zdGFsbCcsIGRydF9ob3N0X3BhdGhdKQogICAg
ICAgICAgICAgaWYgaW5zdGFsbF9yZXN1bHQuZmluZCgnU3VjY2VzcycpID09IC0xOgogICAgICAg
ICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCdGYWlsZWQgdG8gaW5zdGFsbCAlcyBvbnRv
IGRldmljZTogJXMnICUgKGRydF9ob3N0X3BhdGgsIGluc3RhbGxfcmVzdWx0KSkKLSAgICAgICAg
ICAgIHNlbGYuX3B1c2hfdG9fZGV2aWNlKHNlbGYuX2J1aWxkX3BhdGgoc2VsZi5nZXRfb3B0aW9u
KCdjb25maWd1cmF0aW9uJyksICdEdW1wUmVuZGVyVHJlZS5wYWsnKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERFVklDRV9EUlRfRElSICsgJ0R1bXBSZW5kZXJUcmVlLnBhaycp
Ci0gICAgICAgICAgICBzZWxmLl9wdXNoX3RvX2RldmljZShzZWxmLl9idWlsZF9wYXRoKHNlbGYu
Z2V0X29wdGlvbignY29uZmlndXJhdGlvbicpLCAnRHVtcFJlbmRlclRyZWVfcmVzb3VyY2VzJyks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERVZJQ0VfRFJUX0RJUiArICdEdW1w
UmVuZGVyVHJlZV9yZXNvdXJjZXMnKQotICAgICAgICAgICAgc2VsZi5fcHVzaF90b19kZXZpY2Uo
c2VsZi5fYnVpbGRfcGF0aChzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKSwgJ2FuZHJv
aWRfbWFpbl9mb250cy54bWwnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERF
VklDRV9EUlRfRElSICsgJ2FuZHJvaWRfbWFpbl9mb250cy54bWwnKQotICAgICAgICAgICAgc2Vs
Zi5fcHVzaF90b19kZXZpY2Uoc2VsZi5fYnVpbGRfcGF0aChzZWxmLmdldF9vcHRpb24oJ2NvbmZp
Z3VyYXRpb24nKSwgJ2FuZHJvaWRfZmFsbGJhY2tfZm9udHMueG1sJyksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBERVZJQ0VfRFJUX0RJUiArICdhbmRyb2lkX2ZhbGxiYWNrX2Zv
bnRzLnhtbCcpCisgICAgICAgICAgICBzZWxmLl9wdXNoX3RvX2RldmljZShzZWxmLl9idWlsZF9w
YXRoKCdEdW1wUmVuZGVyVHJlZS5wYWsnKSwgREVWSUNFX0RSVF9ESVIgKyAnRHVtcFJlbmRlclRy
ZWUucGFrJykKKyAgICAgICAgICAgIHNlbGYuX3B1c2hfdG9fZGV2aWNlKHNlbGYuX2J1aWxkX3Bh
dGgoJ0R1bXBSZW5kZXJUcmVlX3Jlc291cmNlcycpLCBERVZJQ0VfRFJUX0RJUiArICdEdW1wUmVu
ZGVyVHJlZV9yZXNvdXJjZXMnKQorICAgICAgICAgICAgc2VsZi5fcHVzaF90b19kZXZpY2Uoc2Vs
Zi5fYnVpbGRfcGF0aCgnYW5kcm9pZF9tYWluX2ZvbnRzLnhtbCcpLCBERVZJQ0VfRFJUX0RJUiAr
ICdhbmRyb2lkX21haW5fZm9udHMueG1sJykKKyAgICAgICAgICAgIHNlbGYuX3B1c2hfdG9fZGV2
aWNlKHNlbGYuX2J1aWxkX3BhdGgoJ2FuZHJvaWRfZmFsbGJhY2tfZm9udHMueG1sJyksIERFVklD
RV9EUlRfRElSICsgJ2FuZHJvaWRfZmFsbGJhY2tfZm9udHMueG1sJykKICAgICAgICAgICAgICMg
VmVyc2lvbiBjb250cm9sIG9mIHRlc3QgcmVzb3VyY2VzIGlzIGRlcGVuZGVudCBvbiBleGVjdXRh
YmxlcywKICAgICAgICAgICAgICMgYmVjYXVzZSB3ZSB3aWxsIGFsd2F5cyByZWJ1aWxkIGV4ZWN1
dGFibGVzIHdoZW4gcmVzb3VyY2VzIGFyZQogICAgICAgICAgICAgIyB1cGRhdGVkLgpAQCAtMzYy
LDcgKzM1OSw3IEBAIGNsYXNzIENocm9taXVtQW5kcm9pZFBvcnQoY2hyb21pdW0uQ2hyb21pdW1Q
b3J0KToKICAgICBkZWYgX3B1c2hfZm9udHMoc2VsZik6CiAgICAgICAgIGlmIG5vdCBzZWxmLl9j
aGVja192ZXJzaW9uKERFVklDRV9GT05UU19ESVIsIEZPTlRfRklMRVNfVkVSU0lPTik6CiAgICAg
ICAgICAgICBfbG9nLmRlYnVnKCdQdXNoaW5nIGZvbnRzJykKLSAgICAgICAgICAgIHBhdGhfdG9f
YWhlbV9mb250ID0gc2VsZi5fYnVpbGRfcGF0aChzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRp
b24nKSwgJ0FIRU1fX19fLlRURicpCisgICAgICAgICAgICBwYXRoX3RvX2FoZW1fZm9udCA9IHNl
bGYuX2J1aWxkX3BhdGgoJ0FIRU1fX19fLlRURicpCiAgICAgICAgICAgICBzZWxmLl9wdXNoX3Rv
X2RldmljZShwYXRoX3RvX2FoZW1fZm9udCwgREVWSUNFX0ZPTlRTX0RJUiArICdBSEVNX19fXy5U
VEYnKQogICAgICAgICAgICAgZm9yIChob3N0X2RpciwgZm9udF9maWxlKSBpbiBIT1NUX0ZPTlRf
RklMRVM6CiAgICAgICAgICAgICAgICAgc2VsZi5fcHVzaF90b19kZXZpY2UoaG9zdF9kaXIgKyBm
b250X2ZpbGUsIERFVklDRV9GT05UU19ESVIgKyBmb250X2ZpbGUpCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2xpbnV4LnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9saW51eC5w
eQppbmRleCBlNTQwNzhkMmI3MTg3ODdhYjRmZTc4NWMxYmZlOWFhMDhkMzUzNjViLi5kNWMyMjM1
YmYzMjhjYjcyODg0ZWZjNDc4YjFiN2VkODgyZDM3MDBhIDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2xpbnV4LnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbGludXgucHkK
QEAgLTY5LDcgKzY5LDcgQEAgY2xhc3MgQ2hyb21pdW1MaW51eFBvcnQoY2hyb21pdW0uQ2hyb21p
dW1Qb3J0KToKICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBvcHRpb25zLmNvbmZpZ3VyYXRp
b24KICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBjb25maWdfb2Jq
ZWN0LmRlZmF1bHRfY29uZmlndXJhdGlvbigpCi0gICAgICAgIHJldHVybiBjbHMuX3N0YXRpY19i
dWlsZF9wYXRoKGhvc3QuZmlsZXN5c3RlbSwgYnVpbGRfZGlyZWN0b3J5LCBjaHJvbWl1bV9iYXNl
LCB3ZWJraXRfYmFzZSwgY29uZmlndXJhdGlvbiwgJ0R1bXBSZW5kZXJUcmVlJykKKyAgICAgICAg
cmV0dXJuIGNscy5fc3RhdGljX2J1aWxkX3BhdGgoaG9zdC5maWxlc3lzdGVtLCBidWlsZF9kaXJl
Y3RvcnksIGNocm9taXVtX2Jhc2UsIHdlYmtpdF9iYXNlLCBjb25maWd1cmF0aW9uLCBbJ0R1bXBS
ZW5kZXJUcmVlJ10pCiAKICAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIF9kZXRlcm1pbmVfYXJj
aGl0ZWN0dXJlKGZpbGVzeXN0ZW0sIGV4ZWN1dGl2ZSwgZHJpdmVyX3BhdGgpOgpAQCAtMTExLDcg
KzExMSw3IEBAIGNsYXNzIENocm9taXVtTGludXhQb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6
CiAgICAgICAgIHJldHVybiBtYXAoc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgsIHBvcnRfbmFt
ZXMpCiAKICAgICBkZWYgX21vZHVsZXNfdG9fc2VhcmNoX2Zvcl9zeW1ib2xzKHNlbGYpOgotICAg
ICAgICByZXR1cm4gW3NlbGYuX2J1aWxkX3BhdGgoc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0
aW9uJyksICdsaWJmZm1wZWdzdW1vLnNvJyldCisgICAgICAgIHJldHVybiBbc2VsZi5fYnVpbGRf
cGF0aCgnbGliZmZtcGVnc3Vtby5zbycpXQogCiAgICAgZGVmIGNoZWNrX2J1aWxkKHNlbGYsIG5l
ZWRzX2h0dHApOgogICAgICAgICByZXN1bHQgPSBjaHJvbWl1bS5DaHJvbWl1bVBvcnQuY2hlY2tf
YnVpbGQoc2VsZiwgbmVlZHNfaHR0cCkKQEAgLTE3MywxMCArMTczLDggQEAgY2xhc3MgQ2hyb21p
dW1MaW51eFBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICAgICAgcmV0dXJuICIvdXNy
L2Jpbi9waHAtY2dpIgogCiAgICAgZGVmIF9wYXRoX3RvX2RyaXZlcihzZWxmLCBjb25maWd1cmF0
aW9uPU5vbmUpOgotICAgICAgICBpZiBub3QgY29uZmlndXJhdGlvbjoKLSAgICAgICAgICAgIGNv
bmZpZ3VyYXRpb24gPSBzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKQogICAgICAgICBi
aW5hcnlfbmFtZSA9IHNlbGYuZHJpdmVyX25hbWUoKQotICAgICAgICByZXR1cm4gc2VsZi5fYnVp
bGRfcGF0aChjb25maWd1cmF0aW9uLCBiaW5hcnlfbmFtZSkKKyAgICAgICAgcmV0dXJuIHNlbGYu
X2J1aWxkX3BhdGhfd2l0aF9jb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24sIGJpbmFyeV9uYW1l
KQogCiAgICAgZGVmIF9wYXRoX3RvX2hlbHBlcihzZWxmKToKICAgICAgICAgcmV0dXJuIE5vbmUK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hy
b21pdW1fbGludXhfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2Nocm9taXVtX2xpbnV4X3VuaXR0ZXN0LnB5CmluZGV4IDkwOTRkNzQ1OGM1OGUx
ZDk5YzM4NDM5ZjkyZWY2OGMzZmZiYmQxNDIuLmEwODJiZTFiNWFlNGRiMmU0YjUxNjRjMDM1OWVi
ZmFmYWE4YmY1OGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvY2hyb21pdW1fbGludXhfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9saW51eF91bml0dGVzdC5weQpAQCAt
OTMsMTkgKzkzLDE5IEBAIGNsYXNzIENocm9taXVtTGludXhQb3J0VGVzdChjaHJvbWl1bV9wb3J0
X3Rlc3RjYXNlLkNocm9taXVtUG9ydFRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9idWlsZF9wYXRo
KHNlbGYpOgogICAgICAgICAjIFRlc3QgdGhhdCBvcHRpb25hbCBwYXRocyBhcmUgdXNlZCByZWdh
cmRsZXNzIG9mIHdoZXRoZXIgdGhleSBleGlzdC4KICAgICAgICAgb3B0aW9ucyA9IE1vY2tPcHRp
b25zKGNvbmZpZ3VyYXRpb249J1JlbGVhc2UnLCBidWlsZF9kaXJlY3Rvcnk9Jy9mb28nKQotICAg
ICAgICBzZWxmLmFzc2VydF9idWlsZF9wYXRoKG9wdGlvbnMsIFsnL21vY2stY2hlY2tvdXQvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9vdXQnXSwgJy9mb28nKQorICAgICAgICBzZWxmLmFzc2VydF9i
dWlsZF9wYXRoKG9wdGlvbnMsIFsnL21vY2stY2hlY2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9vdXQvUmVsZWFzZSddLCAnL2ZvbycpCiAKICAgICAgICAgIyBUZXN0IHRoYXQgb3B0aW9uYWwg
cmVsYXRpdmUgcGF0aHMgYXJlIHJldHVybmVkIHVubW9kaWZpZWQuCiAgICAgICAgIG9wdGlvbnMg
PSBNb2NrT3B0aW9ucyhjb25maWd1cmF0aW9uPSdSZWxlYXNlJywgYnVpbGRfZGlyZWN0b3J5PSdm
b28nKQotICAgICAgICBzZWxmLmFzc2VydF9idWlsZF9wYXRoKG9wdGlvbnMsIFsnL21vY2stY2hl
Y2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9vdXQnXSwgJ2ZvbycpCisgICAgICAgIHNlbGYu
YXNzZXJ0X2J1aWxkX3BhdGgob3B0aW9ucywgWycvbW9jay1jaGVja291dC9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL291dC9SZWxlYXNlJ10sICdmb28nKQogCiAgICAgICAgICMgVGVzdCB0aGF0IHdl
IGxvb2sgaW4gYSBjaHJvbWl1bSBkaXJlY3RvcnkgYmVmb3JlIHRoZSB3ZWJraXQgZGlyZWN0b3J5
LgogICAgICAgICBvcHRpb25zID0gTW9ja09wdGlvbnMoY29uZmlndXJhdGlvbj0nUmVsZWFzZScs
IGJ1aWxkX2RpcmVjdG9yeT1Ob25lKQotICAgICAgICBzZWxmLmFzc2VydF9idWlsZF9wYXRoKG9w
dGlvbnMsIFsnL21vY2stY2hlY2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9vdXQnLCAnL21v
Y2stY2hlY2tvdXQvb3V0J10sICcvbW9jay1jaGVja291dC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L291dCcpCisgICAgICAgIHNlbGYuYXNzZXJ0X2J1aWxkX3BhdGgob3B0aW9ucywgWycvbW9jay1j
aGVja291dC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL291dC9SZWxlYXNlJywgJy9tb2NrLWNoZWNr
b3V0L291dC9SZWxlYXNlJ10sICcvbW9jay1jaGVja291dC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L291dC9SZWxlYXNlJykKIAogICAgICAgICAjIFRlc3QgdGhhdCB3ZSBwcmVmZXIgdGhlIGxlZ2Fj
eSBkaXIgb3ZlciB0aGUgbmV3IGRpci4KICAgICAgICAgb3B0aW9ucyA9IE1vY2tPcHRpb25zKGNv
bmZpZ3VyYXRpb249J1JlbGVhc2UnLCBidWlsZF9kaXJlY3Rvcnk9Tm9uZSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfYnVpbGRfcGF0aChvcHRpb25zLCBbJy9tb2NrLWNoZWNrb3V0L1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc2NvbnNidWlsZCcsICcvbW9jay1jaGVja291dC9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL291dCddLCAnL21vY2stY2hlY2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zY29u
c2J1aWxkJykKKyAgICAgICAgc2VsZi5hc3NlcnRfYnVpbGRfcGF0aChvcHRpb25zLCBbJy9tb2Nr
LWNoZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc2NvbnNidWlsZC9SZWxlYXNlJywgJy9t
b2NrLWNoZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vb3V0L1JlbGVhc2UnXSwgJy9tb2Nr
LWNoZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc2NvbnNidWlsZC9SZWxlYXNlJykKIAog
ICAgIGRlZiB0ZXN0X2RyaXZlcl9uYW1lX29wdGlvbihzZWxmKToKICAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKHNlbGYubWFrZV9wb3J0KCkuX3BhdGhfdG9fZHJpdmVyKCkuZW5kc3dpdGgoJ0R1bXBS
ZW5kZXJUcmVlJykpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2Nocm9taXVtX21hYy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvY2hyb21pdW1fbWFjLnB5CmluZGV4IGRmMWFjN2I1ODJkYTQyZjI0NWIzZmYz
MjZhODE3YzUwZGZlZDAxYmUuLmJhZWEwNjM5YmQzZGZlYjY3Y2JhNGI3MGU5OGI5YzQ3NzU0MjEy
MDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
Y2hyb21pdW1fbWFjLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvY2hyb21pdW1fbWFjLnB5CkBAIC03OSw3ICs3OSw3IEBAIGNsYXNzIENocm9taXVtTWFj
UG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogICAgICAgICByZXR1cm4gbWFwKHNlbGYuX3dl
YmtpdF9iYXNlbGluZV9wYXRoLCBmYWxsYmFja19wYXRoc1tzZWxmLl92ZXJzaW9uXSkKIAogICAg
IGRlZiBfbW9kdWxlc190b19zZWFyY2hfZm9yX3N5bWJvbHMoc2VsZik6Ci0gICAgICAgIHJldHVy
biBbc2VsZi5fYnVpbGRfcGF0aChzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKSwgJ2Zm
bXBlZ3N1bW8uc28nKV0KKyAgICAgICAgcmV0dXJuIFtzZWxmLl9idWlsZF9wYXRoKCdmZm1wZWdz
dW1vLnNvJyldCiAKICAgICBkZWYgY2hlY2tfYnVpbGQoc2VsZiwgbmVlZHNfaHR0cCk6CiAgICAg
ICAgIHJlc3VsdCA9IGNocm9taXVtLkNocm9taXVtUG9ydC5jaGVja19idWlsZChzZWxmLCBuZWVk
c19odHRwKQpAQCAtMTIwLDE0ICsxMjAsMTEgQEAgY2xhc3MgQ2hyb21pdW1NYWNQb3J0KGNocm9t
aXVtLkNocm9taXVtUG9ydCk6CiAKICAgICBkZWYgX3BhdGhfdG9fZHJpdmVyKHNlbGYsIGNvbmZp
Z3VyYXRpb249Tm9uZSk6CiAgICAgICAgICMgRklYTUU6IG1ha2UgfGNvbmZpZ3VyYXRpb258IGhh
cHB5IHdpdGggY2FzZS1zZW5zaXRpdmUgZmlsZSBzeXN0ZW1zLgotICAgICAgICBpZiBub3QgY29u
ZmlndXJhdGlvbjoKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBzZWxmLmdldF9vcHRpb24o
J2NvbmZpZ3VyYXRpb24nKQotICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChjb25maWd1
cmF0aW9uLCBzZWxmLmRyaXZlcl9uYW1lKCkgKyAnLmFwcCcsCi0gICAgICAgICAgICAnQ29udGVu
dHMnLCAnTWFjT1MnLCBzZWxmLmRyaXZlcl9uYW1lKCkpCisgICAgICAgIHJldHVybiBzZWxmLl9i
dWlsZF9wYXRoX3dpdGhfY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uLCBzZWxmLmRyaXZlcl9u
YW1lKCkgKyAnLmFwcCcsICdDb250ZW50cycsICdNYWNPUycsIHNlbGYuZHJpdmVyX25hbWUoKSkK
IAogICAgIGRlZiBfcGF0aF90b19oZWxwZXIoc2VsZik6CiAgICAgICAgIGJpbmFyeV9uYW1lID0g
J0xheW91dFRlc3RIZWxwZXInCi0gICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKHNlbGYu
Z2V0X29wdGlvbignY29uZmlndXJhdGlvbicpLCBiaW5hcnlfbmFtZSkKKyAgICAgICAgcmV0dXJu
IHNlbGYuX2J1aWxkX3BhdGgoYmluYXJ5X25hbWUpCiAKICAgICBkZWYgX3BhdGhfdG9fd2RpZmYo
c2VsZik6CiAgICAgICAgIHJldHVybiAnd2RpZmYnCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX21hY191bml0dGVzdC5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbWFjX3VuaXR0
ZXN0LnB5CmluZGV4IDg3OTA0YTgwNDg0ODFiNTVjMTU2ZmMzYzZiYzA3ZWRjMmJlYjcyNDguLmI2
ZTgwOTExMWI2ZjM1YTYwZDM4YWYxYWM3ZmNlODU4ZmY2NDkzMDUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbWFjX3VuaXR0ZXN0
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21p
dW1fbWFjX3VuaXR0ZXN0LnB5CkBAIC03NCwxOSArNzQsMTkgQEAgY2xhc3MgQ2hyb21pdW1NYWNQ
b3J0VGVzdChjaHJvbWl1bV9wb3J0X3Rlc3RjYXNlLkNocm9taXVtUG9ydFRlc3RDYXNlKToKICAg
ICBkZWYgdGVzdF9idWlsZF9wYXRoKHNlbGYpOgogICAgICAgICAjIFRlc3QgdGhhdCBvcHRpb25h
bCBwYXRocyBhcmUgdXNlZCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhleSBleGlzdC4KICAgICAg
ICAgb3B0aW9ucyA9IE1vY2tPcHRpb25zKGNvbmZpZ3VyYXRpb249J1JlbGVhc2UnLCBidWlsZF9k
aXJlY3Rvcnk9Jy9mb28nKQotICAgICAgICBzZWxmLmFzc2VydF9idWlsZF9wYXRoKG9wdGlvbnMs
IFsnL21vY2stY2hlY2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9vdXQnXSwgJy9mb28nKQor
ICAgICAgICBzZWxmLmFzc2VydF9idWlsZF9wYXRoKG9wdGlvbnMsIFsnL21vY2stY2hlY2tvdXQv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9vdXQvUmVsZWFzZSddLCAnL2ZvbycpCiAKICAgICAgICAg
IyBUZXN0IHRoYXQgb3B0aW9uYWwgcmVsYXRpdmUgcGF0aHMgYXJlIHJldHVybmVkIHVubW9kaWZp
ZWQuCiAgICAgICAgIG9wdGlvbnMgPSBNb2NrT3B0aW9ucyhjb25maWd1cmF0aW9uPSdSZWxlYXNl
JywgYnVpbGRfZGlyZWN0b3J5PSdmb28nKQotICAgICAgICBzZWxmLmFzc2VydF9idWlsZF9wYXRo
KG9wdGlvbnMsIFsnL21vY2stY2hlY2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9vdXQnXSwg
J2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2J1aWxkX3BhdGgob3B0aW9ucywgWycvbW9jay1j
aGVja291dC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL291dC9SZWxlYXNlJ10sICdmb28nKQogCiAg
ICAgICAgICMgVGVzdCB0aGF0IHdlIGxvb2sgaW4gYSBjaHJvbWl1bSBkaXJlY3RvcnkgYmVmb3Jl
IHRoZSB3ZWJraXQgZGlyZWN0b3J5LgogICAgICAgICBvcHRpb25zID0gTW9ja09wdGlvbnMoY29u
ZmlndXJhdGlvbj0nUmVsZWFzZScsIGJ1aWxkX2RpcmVjdG9yeT1Ob25lKQotICAgICAgICBzZWxm
LmFzc2VydF9idWlsZF9wYXRoKG9wdGlvbnMsIFsnL21vY2stY2hlY2tvdXQvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9vdXQnLCAnL21vY2stY2hlY2tvdXQvb3V0J10sICcvbW9jay1jaGVja291dC9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL291dCcpCisgICAgICAgIHNlbGYuYXNzZXJ0X2J1aWxkX3Bh
dGgob3B0aW9ucywgWycvbW9jay1jaGVja291dC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL291dC9S
ZWxlYXNlJywgJy9tb2NrLWNoZWNrb3V0L291dC9SZWxlYXNlJ10sICcvbW9jay1jaGVja291dC9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL291dC9SZWxlYXNlJykKIAogICAgICAgICAjIFRlc3QgdGhh
dCB3ZSBwcmVmZXIgdGhlIGxlZ2FjeSBkaXIgb3ZlciB0aGUgbmV3IGRpci4KICAgICAgICAgb3B0
aW9ucyA9IE1vY2tPcHRpb25zKGNvbmZpZ3VyYXRpb249J1JlbGVhc2UnLCBidWlsZF9kaXJlY3Rv
cnk9Tm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRfYnVpbGRfcGF0aChvcHRpb25zLCBbJy9tb2Nr
LWNoZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0veGNvZGVidWlsZCcsICcvbW9jay1jaGVj
a291dC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL291dCddLCAnL21vY2stY2hlY2tvdXQvU291cmNl
L1dlYktpdC9jaHJvbWl1bS94Y29kZWJ1aWxkJykKKyAgICAgICAgc2VsZi5hc3NlcnRfYnVpbGRf
cGF0aChvcHRpb25zLCBbJy9tb2NrLWNoZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0veGNv
ZGVidWlsZC9SZWxlYXNlJywgJy9tb2NrLWNoZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
b3V0L1JlbGVhc2UnXSwgJy9tb2NrLWNoZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0veGNv
ZGVidWlsZC9SZWxlYXNlJykKIAogICAgIGRlZiB0ZXN0X2RyaXZlcl9uYW1lX29wdGlvbihzZWxm
KToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubWFrZV9wb3J0KCkuX3BhdGhfdG9fZHJp
dmVyKCkuZW5kc3dpdGgoJ0R1bXBSZW5kZXJUcmVlJykpCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dpbi5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fd2luLnB5CmluZGV4IDUx
NjExMjQxYzU3NmQyMTQ1NWNkN2UwYmU5MWU1YmU4ZmI4YmQ0MDAuLjdkMDMzN2FjYzRmOTRhMGVh
MTA1MGM2ZjZiZjZhMDkxZGZlNThkZjIgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fd2luLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fd2luLnB5CkBAIC0xNDksMTggKzE0
OSwxNiBAQCBjbGFzcyBDaHJvbWl1bVdpblBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAg
ICAgICAgcmV0dXJuIHNlbGYuX2xpZ2h0dHBkX3BhdGgoJ3BocDUnLCAncGhwLWNnaS5leGUnKQog
CiAgICAgZGVmIF9wYXRoX3RvX2RyaXZlcihzZWxmLCBjb25maWd1cmF0aW9uPU5vbmUpOgotICAg
ICAgICBpZiBub3QgY29uZmlndXJhdGlvbjoKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBz
ZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKQogICAgICAgICBiaW5hcnlfbmFtZSA9ICcl
cy5leGUnICUgc2VsZi5kcml2ZXJfbmFtZSgpCi0gICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9w
YXRoKGNvbmZpZ3VyYXRpb24sIGJpbmFyeV9uYW1lKQorICAgICAgICByZXR1cm4gc2VsZi5fYnVp
bGRfcGF0aF93aXRoX2NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbiwgYmluYXJ5X25hbWUpCiAK
ICAgICBkZWYgX3BhdGhfdG9faGVscGVyKHNlbGYpOgogICAgICAgICBiaW5hcnlfbmFtZSA9ICdM
YXlvdXRUZXN0SGVscGVyLmV4ZScKLSAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoc2Vs
Zi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJyksIGJpbmFyeV9uYW1lKQorICAgICAgICByZXR1
cm4gc2VsZi5fYnVpbGRfcGF0aChiaW5hcnlfbmFtZSkKIAogICAgIGRlZiBfcGF0aF90b19pbWFn
ZV9kaWZmKHNlbGYpOgogICAgICAgICBiaW5hcnlfbmFtZSA9ICdJbWFnZURpZmYuZXhlJwotICAg
ICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRp
b24nKSwgYmluYXJ5X25hbWUpCisgICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKGJpbmFy
eV9uYW1lKQogCiAgICAgZGVmIF9wYXRoX3RvX3dkaWZmKHNlbGYpOgogICAgICAgICByZXR1cm4g
c2VsZi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgndGhpcmRfcGFydHknLCAnY3lnd2luJywgJ2Jp
bicsICd3ZGlmZi5leGUnKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9jaHJvbWl1bV93aW5fdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dpbl91bml0dGVzdC5weQppbmRleCA2
MDc3MTkyNDFhYzA4OGU2ZWE2YjkyN2M1NmU0ZjJjMWY1MDQ0ZjE0Li4yNTNmZjBkNGM0MDZlNTdj
OGVmNzBjZDUzNDJlMGIxMmMzOWZmYjhmIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dpbl91bml0dGVzdC5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dpbl91bml0dGVz
dC5weQpAQCAtMTAwLDE5ICsxMDAsMTkgQEAgY2xhc3MgQ2hyb21pdW1XaW5UZXN0KGNocm9taXVt
X3BvcnRfdGVzdGNhc2UuQ2hyb21pdW1Qb3J0VGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2J1aWxk
X3BhdGgoc2VsZik6CiAgICAgICAgICMgVGVzdCB0aGF0IG9wdGlvbmFsIHBhdGhzIGFyZSB1c2Vk
IHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGV5IGV4aXN0LgogICAgICAgICBvcHRpb25zID0gTW9j
a09wdGlvbnMoY29uZmlndXJhdGlvbj0nUmVsZWFzZScsIGJ1aWxkX2RpcmVjdG9yeT0nL2Zvbycp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2J1aWxkX3BhdGgob3B0aW9ucywgWycvbW9jay1jaGVja291
dC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL291dCddLCAnL2ZvbycpCisgICAgICAgIHNlbGYuYXNz
ZXJ0X2J1aWxkX3BhdGgob3B0aW9ucywgWycvbW9jay1jaGVja291dC9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL291dC9SZWxlYXNlJ10sICcvZm9vJykKIAogICAgICAgICAjIFRlc3QgdGhhdCBvcHRp
b25hbCByZWxhdGl2ZSBwYXRocyBhcmUgcmV0dXJuZWQgdW5tb2RpZmllZC4KICAgICAgICAgb3B0
aW9ucyA9IE1vY2tPcHRpb25zKGNvbmZpZ3VyYXRpb249J1JlbGVhc2UnLCBidWlsZF9kaXJlY3Rv
cnk9J2ZvbycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2J1aWxkX3BhdGgob3B0aW9ucywgWycvbW9j
ay1jaGVja291dC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL291dCddLCAnZm9vJykKKyAgICAgICAg
c2VsZi5hc3NlcnRfYnVpbGRfcGF0aChvcHRpb25zLCBbJy9tb2NrLWNoZWNrb3V0L1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vb3V0L1JlbGVhc2UnXSwgJ2ZvbycpCiAKICAgICAgICAgIyBUZXN0IHRo
YXQgd2UgbG9vayBpbiBhIGNocm9taXVtIGRpcmVjdG9yeSBiZWZvcmUgdGhlIHdlYmtpdCBkaXJl
Y3RvcnkuCiAgICAgICAgIG9wdGlvbnMgPSBNb2NrT3B0aW9ucyhjb25maWd1cmF0aW9uPSdSZWxl
YXNlJywgYnVpbGRfZGlyZWN0b3J5PU5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2J1aWxkX3Bh
dGgob3B0aW9ucywgWycvbW9jay1jaGVja291dC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL291dCcs
ICcvbW9jay1jaGVja291dC9vdXQnXSwgJy9tb2NrLWNoZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vb3V0JykKKyAgICAgICAgc2VsZi5hc3NlcnRfYnVpbGRfcGF0aChvcHRpb25zLCBbJy9t
b2NrLWNoZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vb3V0L1JlbGVhc2UnLCAnL21vY2st
Y2hlY2tvdXQvb3V0L1JlbGVhc2UnXSwgJy9tb2NrLWNoZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vb3V0L1JlbGVhc2UnKQogCiAgICAgICAgICMgVGVzdCB0aGF0IHdlIHByZWZlciB0aGUg
bGVnYWN5IGRpciBvdmVyIHRoZSBuZXcgZGlyLgogICAgICAgICBvcHRpb25zID0gTW9ja09wdGlv
bnMoY29uZmlndXJhdGlvbj0nUmVsZWFzZScsIGJ1aWxkX2RpcmVjdG9yeT1Ob25lKQotICAgICAg
ICBzZWxmLmFzc2VydF9idWlsZF9wYXRoKG9wdGlvbnMsIFsnL21vY2stY2hlY2tvdXQvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9idWlsZCcsICcvbW9jay1jaGVja291dC9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL291dCddLCAnL21vY2stY2hlY2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9idWls
ZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0X2J1aWxkX3BhdGgob3B0aW9ucywgWycvbW9jay1jaGVj
a291dC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2J1aWxkL1JlbGVhc2UnLCAnL21vY2stY2hlY2tv
dXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9vdXQnXSwgJy9tb2NrLWNoZWNrb3V0L1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vYnVpbGQvUmVsZWFzZScpCiAKICAgICBkZWYgdGVzdF9vcGVyYXRpbmdf
c3lzdGVtKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd3aW4nLCBzZWxmLm1ha2Vf
cG9ydCgpLm9wZXJhdGluZ19zeXN0ZW0oKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153594</attachid>
            <date>2012-07-20 13:59:05 -0700</date>
            <delta_ts>2012-07-23 12:22:08 -0700</delta_ts>
            <desc>fix changelog</desc>
            <filename>bug-91890-20120720135901.patch</filename>
            <type>text/plain</type>
            <size>21811</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMTYxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZmFhMmZjNWM0M2JkMmY4NzIyMmY1MjE4OTEyN2MwZmM4
ZjJiNDk0YS4uZmFmMGM5MzIzNjM0MjM3ZjkxYzNlYzU0ZDYzNDIwMTlhZWI5MmI2NCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0
IEBACisyMDEyLTA3LTIwICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIG5yd3Q6IG5ldmVyIGZpbmRzIGJpbmFyaWVzIGluIHRoZSAnb3V0JyBkaXIgb24gY2hy
b21pdW0gd2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MTg5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdlIHdlcmUgZmlndXJpbmcgb3V0IHdoaWNoIGRpcmVjdG9yeSBsb29rIGluIGZvciBiaW5hcmll
cyBieQorICAgICAgICB0ZXN0aW5nIGZvciB0aGUgYmFzZSBkaXJlY3RvcnkgKHRoZSBkaXJlY3Rv
cnkgYWJvdmUKKyAgICAgICAgRGVidWcvUmVsZWFzZSkuIEluIGNocm9taXVtLXdpbidzIGNhc2Us
IHdlIGxvb2sgaW4gc3JjL2J1aWxkLAorICAgICAgICB3aGljaCBhbHdheXMgZXhpc3RzIGJlY2F1
c2UgdGhlcmUgYXJlIGNoZWNrZWQtaW4gZmlsZXMgaW4gaXQsCisgICAgICAgIHdoaWNoIG1lYW5z
IHdlJ2QgYWx3YXlzIHBpY2sgdGhhdCBkaXJlY3Rvcnkgb3ZlciBzcmMvb3V0LiBBbGwgb2YKKyAg
ICAgICAgdGhlIG90aGVyIHBvcnRzJyBidWlsZF9wYXRoKCkgaW1wbGVtZW50YXRpb24gd2FzIGlu
Y2x1ZGluZworICAgICAgICBEZWJ1Zy9SZWxlYXNlLiBJZiB3ZSBtYXRjaGVkIHRoYXQsIHdlIHdv
dWxkbid0IGhhdmUgYSBwcm9ibGVtLAorICAgICAgICBzbyB0aGlzIGNoYW5nZSBmaXhlcyB0aGF0
IGFuZCB1cGRhdGVzIGFsbCBvZiB0aGUgY2FsbGVycyBvZiB0aGUKKyAgICAgICAgY2hyb21pdW0g
cG9ydHMnIGltcGxlbWVudGF0aW9uIHRvIG5vdCBwYXNzIGNvbmZpZ3VyYXRpb24gYXMgcGFydAor
ICAgICAgICBvZiB0aGUgcGF0aCB0byBsb29rIHVwOyB3ZSBzdGlsbCBuZWVkIHRvIHBhc3MgY29u
ZmlndXJhdGlvbiBpbgorICAgICAgICBzb21lIGNhc2VzICh0byB0ZXN0IGlmIHRoZSBidWlsZCBp
cyBvdXQgb2YgZGF0ZSBiZXR3ZWVuIGRlYnVnCisgICAgICAgIGFuZCByZWxlYXNlKSBzbyB0aGUg
aW1wbGVtZW50YXRpb24gZ2V0cyBzbGlnaHRseSBtb3JlCisgICAgICAgIGNvbXBsaWNhdGVkLgor
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5w
eToKKyAgICAgICAgKENocm9taXVtUG9ydC5fc3RhdGljX2J1aWxkX3BhdGgpOgorICAgICAgICAo
Q2hyb21pdW1Qb3J0LmRlZmF1bHRfcmVzdWx0c19kaXJlY3RvcnkpOgorICAgICAgICAoQ2hyb21p
dW1Qb3J0Ll9idWlsZF9wYXRoKToKKyAgICAgICAgKENocm9taXVtUG9ydC5fcGF0aF90b19pbWFn
ZV9kaWZmKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2No
cm9taXVtX2FuZHJvaWQucHk6CisgICAgICAgIChDaHJvbWl1bUFuZHJvaWRQb3J0Ll9idWlsZF9w
YXRoKToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZFBvcnQuX3BhdGhfdG9fZHJpdmVyKToKKyAg
ICAgICAgKENocm9taXVtQW5kcm9pZFBvcnQuX3BhdGhfdG9fZm9yd2FyZGVyKToKKyAgICAgICAg
KENocm9taXVtQW5kcm9pZFBvcnQuX3B1c2hfZXhlY3V0YWJsZSk6CisgICAgICAgIChDaHJvbWl1
bUFuZHJvaWRQb3J0Ll9wdXNoX2ZvbnRzKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2xpbnV4LnB5OgorICAgICAgICAoQ2hyb21pdW1MaW51
eFBvcnQuX2RldGVybWluZV9kcml2ZXJfcGF0aF9zdGF0aWNhbGx5KToKKyAgICAgICAgKENocm9t
aXVtTGludXhQb3J0Ll9tb2R1bGVzX3RvX3NlYXJjaF9mb3Jfc3ltYm9scyk6CisgICAgICAgIChD
aHJvbWl1bUxpbnV4UG9ydC5fcGF0aF90b19kcml2ZXIpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbGludXhfdW5pdHRlc3QucHk6CisgICAg
ICAgIChDaHJvbWl1bUxpbnV4UG9ydFRlc3QudGVzdF9idWlsZF9wYXRoKToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX21hYy5weToKKyAgICAg
ICAgKENocm9taXVtTWFjUG9ydC5fbW9kdWxlc190b19zZWFyY2hfZm9yX3N5bWJvbHMpOgorICAg
ICAgICAoQ2hyb21pdW1NYWNQb3J0Ll9wYXRoX3RvX2RyaXZlcik6CisgICAgICAgIChDaHJvbWl1
bU1hY1BvcnQuX3BhdGhfdG9faGVscGVyKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX21hY191bml0dGVzdC5weToKKyAgICAgICAgKENocm9t
aXVtTWFjUG9ydFRlc3QudGVzdF9idWlsZF9wYXRoKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dpbi5weToKKyAgICAgICAgKENocm9taXVt
V2luUG9ydC5fcGF0aF90b19kcml2ZXIpOgorICAgICAgICAoQ2hyb21pdW1XaW5Qb3J0Ll9wYXRo
X3RvX2hlbHBlcik6CisgICAgICAgIChDaHJvbWl1bVdpblBvcnQuX3BhdGhfdG9faW1hZ2VfZGlm
Zik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1
bV93aW5fdW5pdHRlc3QucHk6CisgICAgICAgIChDaHJvbWl1bVdpblRlc3QudGVzdF9idWlsZF9w
YXRoKToKKwogMjAxMi0wNy0xOSAgU3VkYXJzYW5hIE5hZ2luZW5pICA8c3VkYXJzYW5hLm5hZ2lu
ZW5pQGxpbnV4LmludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBbV0syXSBBZGQgYSBjYWxsYmFj
ayB0byBoYW5kbGUgZGVsZXRlIHJlcXVlc3QgaW4gTWluaUJyb3dzZXIKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CmluZGV4IDk3
MjlmOTRjMDUwYWU4NWRkYTkwYWI4YTRjZDFiODFkMjA1ZjgyZjUuLjQ5MGNkNmNmOTJmMjU5NTIw
ZGZmZGRhZTEwNmFlMzBmOTBjZmM1MjkgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQpAQCAtNzgsMTcgKzc4LDE3IEBAIGNs
YXNzIENocm9taXVtUG9ydChXZWJLaXRQb3J0KToKICAgICBERUZBVUxUX0JVSUxEX0RJUkVDVE9S
SUVTID0gKCdvdXQnLCkKIAogICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBfc3RhdGljX2J1aWxk
X3BhdGgoY2xzLCBmaWxlc3lzdGVtLCBidWlsZF9kaXJlY3RvcnksIGNocm9taXVtX2Jhc2UsIHdl
YmtpdF9iYXNlLCAqY29tcHMpOgorICAgIGRlZiBfc3RhdGljX2J1aWxkX3BhdGgoY2xzLCBmaWxl
c3lzdGVtLCBidWlsZF9kaXJlY3RvcnksIGNocm9taXVtX2Jhc2UsIHdlYmtpdF9iYXNlLCBjb25m
aWd1cmF0aW9uLCBjb21wcyk6CiAgICAgICAgIGlmIGJ1aWxkX2RpcmVjdG9yeToKICAgICAgICAg
ICAgIHJldHVybiBmaWxlc3lzdGVtLmpvaW4oYnVpbGRfZGlyZWN0b3J5LCAqY29tcHMpCiAKICAg
ICAgICAgZm9yIGRpcmVjdG9yeSBpbiBjbHMuREVGQVVMVF9CVUlMRF9ESVJFQ1RPUklFUzoKLSAg
ICAgICAgICAgIGJhc2VfZGlyID0gZmlsZXN5c3RlbS5qb2luKGNocm9taXVtX2Jhc2UsIGRpcmVj
dG9yeSkKKyAgICAgICAgICAgIGJhc2VfZGlyID0gZmlsZXN5c3RlbS5qb2luKGNocm9taXVtX2Jh
c2UsIGRpcmVjdG9yeSwgY29uZmlndXJhdGlvbikKICAgICAgICAgICAgIGlmIGZpbGVzeXN0ZW0u
ZXhpc3RzKGJhc2VfZGlyKToKICAgICAgICAgICAgICAgICByZXR1cm4gZmlsZXN5c3RlbS5qb2lu
KGJhc2VfZGlyLCAqY29tcHMpCiAKICAgICAgICAgZm9yIGRpcmVjdG9yeSBpbiBjbHMuREVGQVVM
VF9CVUlMRF9ESVJFQ1RPUklFUzoKLSAgICAgICAgICAgIGJhc2VfZGlyID0gZmlsZXN5c3RlbS5q
b2luKHdlYmtpdF9iYXNlLCBkaXJlY3RvcnkpCisgICAgICAgICAgICBiYXNlX2RpciA9IGZpbGVz
eXN0ZW0uam9pbih3ZWJraXRfYmFzZSwgZGlyZWN0b3J5LCBjb25maWd1cmF0aW9uKQogICAgICAg
ICAgICAgaWYgZmlsZXN5c3RlbS5leGlzdHMoYmFzZV9kaXIpOgogICAgICAgICAgICAgICAgIHJl
dHVybiBmaWxlc3lzdGVtLmpvaW4oYmFzZV9kaXIsICpjb21wcykKIApAQCAtMjYzLDcgKzI2Myw3
IEBAIGNsYXNzIENocm9taXVtUG9ydChXZWJLaXRQb3J0KToKICAgICAgICAgdHJ5OgogICAgICAg
ICAgICAgcmV0dXJuIHNlbGYucGF0aF9mcm9tX2Nocm9taXVtX2Jhc2UoJ3dlYmtpdCcsIHNlbGYu
Z2V0X29wdGlvbignY29uZmlndXJhdGlvbicpLCAnbGF5b3V0LXRlc3QtcmVzdWx0cycpCiAgICAg
ICAgIGV4Y2VwdCBBc3NlcnRpb25FcnJvcjoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9idWls
ZF9wYXRoKHNlbGYuZ2V0X29wdGlvbignY29uZmlndXJhdGlvbicpLCAnbGF5b3V0LXRlc3QtcmVz
dWx0cycpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aCgnbGF5b3V0LXRlc3Qt
cmVzdWx0cycpCiAKICAgICBkZWYgX21pc3Npbmdfc3ltYm9sX3RvX3NraXBwZWRfdGVzdHMoc2Vs
Zik6CiAgICAgICAgICMgRklYTUU6IFNob3VsZCBXZWJLaXRQb3J0IGhhdmUgdGhlc2UgZGVmaW5p
dGlvbnMgYWxzbz8KQEAgLTM4NiwxMSArMzg2LDE1IEBAIGNsYXNzIENocm9taXVtUG9ydChXZWJL
aXRQb3J0KToKICAgICAjCiAKICAgICBkZWYgX2J1aWxkX3BhdGgoc2VsZiwgKmNvbXBzKToKLSAg
ICAgICAgcmV0dXJuIHNlbGYuX3N0YXRpY19idWlsZF9wYXRoKHNlbGYuX2ZpbGVzeXN0ZW0sIHNl
bGYuZ2V0X29wdGlvbignYnVpbGRfZGlyZWN0b3J5JyksIHNlbGYucGF0aF9mcm9tX2Nocm9taXVt
X2Jhc2UoKSwgc2VsZi5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoKSwgKmNvbXBzKQorICAgICAgICBy
ZXR1cm4gc2VsZi5fYnVpbGRfcGF0aF93aXRoX2NvbmZpZ3VyYXRpb24oTm9uZSwgKmNvbXBzKQor
CisgICAgZGVmIF9idWlsZF9wYXRoX3dpdGhfY29uZmlndXJhdGlvbihzZWxmLCBjb25maWd1cmF0
aW9uLCAqY29tcHMpOgorICAgICAgICBjb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbiBvciBz
ZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKQorICAgICAgICByZXR1cm4gc2VsZi5fc3Rh
dGljX2J1aWxkX3BhdGgoc2VsZi5fZmlsZXN5c3RlbSwgc2VsZi5nZXRfb3B0aW9uKCdidWlsZF9k
aXJlY3RvcnknKSwgc2VsZi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgpLCBzZWxmLnBhdGhfZnJv
bV93ZWJraXRfYmFzZSgpLCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sIGNvbXBzPWNvbXBz
KQogCiAgICAgZGVmIF9wYXRoX3RvX2ltYWdlX2RpZmYoc2VsZik6CiAgICAgICAgIGJpbmFyeV9u
YW1lID0gJ0ltYWdlRGlmZicKLSAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoc2VsZi5n
ZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJyksIGJpbmFyeV9uYW1lKQorICAgICAgICByZXR1cm4g
c2VsZi5fYnVpbGRfcGF0aChiaW5hcnlfbmFtZSkKIAogICAgIGRlZiBfY2hlY2tfZHJpdmVyX2J1
aWxkX3VwX3RvX2RhdGUoc2VsZiwgY29uZmlndXJhdGlvbik6CiAgICAgICAgIGlmIGNvbmZpZ3Vy
YXRpb24gaW4gKCdEZWJ1ZycsICdSZWxlYXNlJyk6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQucHkKaW5k
ZXggNmJiOGZhYzU0OGE3MGRiM2U1ODIxYTk2NzE3ZGQ0Y2M0ODk1NzBkNy4uZDIxNGMwOGYyNjE5
YmEzOGNkOWJkNzdlYTkxNThmOWE4MjkyMjdmOCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fYW5kcm9pZC5weQpA
QCAtMjgwLDcgKzI4MCwxMCBAQCBjbGFzcyBDaHJvbWl1bUFuZHJvaWRQb3J0KGNocm9taXVtLkNo
cm9taXVtUG9ydCk6CiAgICAgIyBPdmVycmlkZGVuIHByaXZhdGUgZnVuY3Rpb25zLgogCiAgICAg
ZGVmIF9idWlsZF9wYXRoKHNlbGYsICpjb21wcyk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9ob3N0
X3BvcnQuX2J1aWxkX3BhdGgoKmNvbXBzKQorICAgICAgICBzZWxmLl9idWlsZF9wYXRoKE5vbmUs
ICpjb21wcykKKworICAgIGRlZiBfYnVpbGRfcGF0aF93aXRoX2NvbmZpZ3VyYXRpb24oc2VsZiwg
Y29uZmlndXJhdGlvbiwgKmNvbXBzKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2hvc3RfcG9ydC5f
YnVpbGRfcGF0aF93aXRoX2NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbiwgKmNvbXBzKQogCiAg
ICAgZGVmIF9wYXRoX3RvX2FwYWNoZShzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2hvc3Rf
cG9ydC5fcGF0aF90b19hcGFjaGUoKQpAQCAtMjg5LDE1ICsyOTIsMTMgQEAgY2xhc3MgQ2hyb21p
dW1BbmRyb2lkUG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogICAgICAgICByZXR1cm4gc2Vs
Zi5faG9zdF9wb3J0Ll9wYXRoX3RvX2FwYWNoZV9jb25maWdfZmlsZSgpCiAKICAgICBkZWYgX3Bh
dGhfdG9fZHJpdmVyKHNlbGYsIGNvbmZpZ3VyYXRpb249Tm9uZSk6Ci0gICAgICAgIGlmIG5vdCBj
b25maWd1cmF0aW9uOgotICAgICAgICAgICAgY29uZmlndXJhdGlvbiA9IHNlbGYuZ2V0X29wdGlv
bignY29uZmlndXJhdGlvbicpCi0gICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKGNvbmZp
Z3VyYXRpb24sICdEdW1wUmVuZGVyVHJlZV9hcGsvRHVtcFJlbmRlclRyZWUtZGVidWcuYXBrJykK
KyAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGhfd2l0aF9jb25maWd1cmF0aW9uKGNvbmZp
Z3VyYXRpb24sICdEdW1wUmVuZGVyVHJlZV9hcGsvRHVtcFJlbmRlclRyZWUtZGVidWcuYXBrJykK
IAogICAgIGRlZiBfcGF0aF90b19oZWxwZXIoc2VsZik6CiAgICAgICAgIHJldHVybiBOb25lCiAK
ICAgICBkZWYgX3BhdGhfdG9fZm9yd2FyZGVyKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5f
YnVpbGRfcGF0aChzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKSwgJ2ZvcndhcmRlcicp
CisgICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKCdmb3J3YXJkZXInKQogCiAgICAgZGVm
IF9wYXRoX3RvX2ltYWdlX2RpZmYoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9ob3N0X3Bv
cnQuX3BhdGhfdG9faW1hZ2VfZGlmZigpCkBAIC0zNDUsMTQgKzM0NiwxMCBAQCBjbGFzcyBDaHJv
bWl1bUFuZHJvaWRQb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgICAgICAgICBpbnN0
YWxsX3Jlc3VsdCA9IHNlbGYuX3J1bl9hZGJfY29tbWFuZChbJ2luc3RhbGwnLCBkcnRfaG9zdF9w
YXRoXSkKICAgICAgICAgICAgIGlmIGluc3RhbGxfcmVzdWx0LmZpbmQoJ1N1Y2Nlc3MnKSA9PSAt
MToKICAgICAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcignRmFpbGVkIHRvIGluc3Rh
bGwgJXMgb250byBkZXZpY2U6ICVzJyAlIChkcnRfaG9zdF9wYXRoLCBpbnN0YWxsX3Jlc3VsdCkp
Ci0gICAgICAgICAgICBzZWxmLl9wdXNoX3RvX2RldmljZShzZWxmLl9idWlsZF9wYXRoKHNlbGYu
Z2V0X29wdGlvbignY29uZmlndXJhdGlvbicpLCAnRHVtcFJlbmRlclRyZWUucGFrJyksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERVZJQ0VfRFJUX0RJUiArICdEdW1wUmVuZGVy
VHJlZS5wYWsnKQotICAgICAgICAgICAgc2VsZi5fcHVzaF90b19kZXZpY2Uoc2VsZi5fYnVpbGRf
cGF0aChzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKSwgJ0R1bXBSZW5kZXJUcmVlX3Jl
c291cmNlcycpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVWSUNFX0RSVF9E
SVIgKyAnRHVtcFJlbmRlclRyZWVfcmVzb3VyY2VzJykKLSAgICAgICAgICAgIHNlbGYuX3B1c2hf
dG9fZGV2aWNlKHNlbGYuX2J1aWxkX3BhdGgoc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9u
JyksICdhbmRyb2lkX21haW5fZm9udHMueG1sJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBERVZJQ0VfRFJUX0RJUiArICdhbmRyb2lkX21haW5fZm9udHMueG1sJykKLSAgICAg
ICAgICAgIHNlbGYuX3B1c2hfdG9fZGV2aWNlKHNlbGYuX2J1aWxkX3BhdGgoc2VsZi5nZXRfb3B0
aW9uKCdjb25maWd1cmF0aW9uJyksICdhbmRyb2lkX2ZhbGxiYWNrX2ZvbnRzLnhtbCcpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVWSUNFX0RSVF9ESVIgKyAnYW5kcm9pZF9m
YWxsYmFja19mb250cy54bWwnKQorICAgICAgICAgICAgc2VsZi5fcHVzaF90b19kZXZpY2Uoc2Vs
Zi5fYnVpbGRfcGF0aCgnRHVtcFJlbmRlclRyZWUucGFrJyksIERFVklDRV9EUlRfRElSICsgJ0R1
bXBSZW5kZXJUcmVlLnBhaycpCisgICAgICAgICAgICBzZWxmLl9wdXNoX3RvX2RldmljZShzZWxm
Ll9idWlsZF9wYXRoKCdEdW1wUmVuZGVyVHJlZV9yZXNvdXJjZXMnKSwgREVWSUNFX0RSVF9ESVIg
KyAnRHVtcFJlbmRlclRyZWVfcmVzb3VyY2VzJykKKyAgICAgICAgICAgIHNlbGYuX3B1c2hfdG9f
ZGV2aWNlKHNlbGYuX2J1aWxkX3BhdGgoJ2FuZHJvaWRfbWFpbl9mb250cy54bWwnKSwgREVWSUNF
X0RSVF9ESVIgKyAnYW5kcm9pZF9tYWluX2ZvbnRzLnhtbCcpCisgICAgICAgICAgICBzZWxmLl9w
dXNoX3RvX2RldmljZShzZWxmLl9idWlsZF9wYXRoKCdhbmRyb2lkX2ZhbGxiYWNrX2ZvbnRzLnht
bCcpLCBERVZJQ0VfRFJUX0RJUiArICdhbmRyb2lkX2ZhbGxiYWNrX2ZvbnRzLnhtbCcpCiAgICAg
ICAgICAgICAjIFZlcnNpb24gY29udHJvbCBvZiB0ZXN0IHJlc291cmNlcyBpcyBkZXBlbmRlbnQg
b24gZXhlY3V0YWJsZXMsCiAgICAgICAgICAgICAjIGJlY2F1c2Ugd2Ugd2lsbCBhbHdheXMgcmVi
dWlsZCBleGVjdXRhYmxlcyB3aGVuIHJlc291cmNlcyBhcmUKICAgICAgICAgICAgICMgdXBkYXRl
ZC4KQEAgLTM2Miw3ICszNTksNyBAQCBjbGFzcyBDaHJvbWl1bUFuZHJvaWRQb3J0KGNocm9taXVt
LkNocm9taXVtUG9ydCk6CiAgICAgZGVmIF9wdXNoX2ZvbnRzKHNlbGYpOgogICAgICAgICBpZiBu
b3Qgc2VsZi5fY2hlY2tfdmVyc2lvbihERVZJQ0VfRk9OVFNfRElSLCBGT05UX0ZJTEVTX1ZFUlNJ
T04pOgogICAgICAgICAgICAgX2xvZy5kZWJ1ZygnUHVzaGluZyBmb250cycpCi0gICAgICAgICAg
ICBwYXRoX3RvX2FoZW1fZm9udCA9IHNlbGYuX2J1aWxkX3BhdGgoc2VsZi5nZXRfb3B0aW9uKCdj
b25maWd1cmF0aW9uJyksICdBSEVNX19fXy5UVEYnKQorICAgICAgICAgICAgcGF0aF90b19haGVt
X2ZvbnQgPSBzZWxmLl9idWlsZF9wYXRoKCdBSEVNX19fXy5UVEYnKQogICAgICAgICAgICAgc2Vs
Zi5fcHVzaF90b19kZXZpY2UocGF0aF90b19haGVtX2ZvbnQsIERFVklDRV9GT05UU19ESVIgKyAn
QUhFTV9fX18uVFRGJykKICAgICAgICAgICAgIGZvciAoaG9zdF9kaXIsIGZvbnRfZmlsZSkgaW4g
SE9TVF9GT05UX0ZJTEVTOgogICAgICAgICAgICAgICAgIHNlbGYuX3B1c2hfdG9fZGV2aWNlKGhv
c3RfZGlyICsgZm9udF9maWxlLCBERVZJQ0VfRk9OVFNfRElSICsgZm9udF9maWxlKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9s
aW51eC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21p
dW1fbGludXgucHkKaW5kZXggZTU0MDc4ZDJiNzE4Nzg3YWI0ZmU3ODVjMWJmZTlhYTA4ZDM1MzY1
Yi4uZDVjMjIzNWJmMzI4Y2I3Mjg4NGVmYzQ3OGIxYjdlZDg4MmQzNzAwYSAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9saW51eC5w
eQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVt
X2xpbnV4LnB5CkBAIC02OSw3ICs2OSw3IEBAIGNsYXNzIENocm9taXVtTGludXhQb3J0KGNocm9t
aXVtLkNocm9taXVtUG9ydCk6CiAgICAgICAgICAgICBjb25maWd1cmF0aW9uID0gb3B0aW9ucy5j
b25maWd1cmF0aW9uCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBjb25maWd1cmF0aW9uID0g
Y29uZmlnX29iamVjdC5kZWZhdWx0X2NvbmZpZ3VyYXRpb24oKQotICAgICAgICByZXR1cm4gY2xz
Ll9zdGF0aWNfYnVpbGRfcGF0aChob3N0LmZpbGVzeXN0ZW0sIGJ1aWxkX2RpcmVjdG9yeSwgY2hy
b21pdW1fYmFzZSwgd2Via2l0X2Jhc2UsIGNvbmZpZ3VyYXRpb24sICdEdW1wUmVuZGVyVHJlZScp
CisgICAgICAgIHJldHVybiBjbHMuX3N0YXRpY19idWlsZF9wYXRoKGhvc3QuZmlsZXN5c3RlbSwg
YnVpbGRfZGlyZWN0b3J5LCBjaHJvbWl1bV9iYXNlLCB3ZWJraXRfYmFzZSwgY29uZmlndXJhdGlv
biwgWydEdW1wUmVuZGVyVHJlZSddKQogCiAgICAgQHN0YXRpY21ldGhvZAogICAgIGRlZiBfZGV0
ZXJtaW5lX2FyY2hpdGVjdHVyZShmaWxlc3lzdGVtLCBleGVjdXRpdmUsIGRyaXZlcl9wYXRoKToK
QEAgLTExMSw3ICsxMTEsNyBAQCBjbGFzcyBDaHJvbWl1bUxpbnV4UG9ydChjaHJvbWl1bS5DaHJv
bWl1bVBvcnQpOgogICAgICAgICByZXR1cm4gbWFwKHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRo
LCBwb3J0X25hbWVzKQogCiAgICAgZGVmIF9tb2R1bGVzX3RvX3NlYXJjaF9mb3Jfc3ltYm9scyhz
ZWxmKToKLSAgICAgICAgcmV0dXJuIFtzZWxmLl9idWlsZF9wYXRoKHNlbGYuZ2V0X29wdGlvbign
Y29uZmlndXJhdGlvbicpLCAnbGliZmZtcGVnc3Vtby5zbycpXQorICAgICAgICByZXR1cm4gW3Nl
bGYuX2J1aWxkX3BhdGgoJ2xpYmZmbXBlZ3N1bW8uc28nKV0KIAogICAgIGRlZiBjaGVja19idWls
ZChzZWxmLCBuZWVkc19odHRwKToKICAgICAgICAgcmVzdWx0ID0gY2hyb21pdW0uQ2hyb21pdW1Q
b3J0LmNoZWNrX2J1aWxkKHNlbGYsIG5lZWRzX2h0dHApCkBAIC0xNzMsMTAgKzE3Myw4IEBAIGNs
YXNzIENocm9taXVtTGludXhQb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgICAgIHJl
dHVybiAiL3Vzci9iaW4vcGhwLWNnaSIKIAogICAgIGRlZiBfcGF0aF90b19kcml2ZXIoc2VsZiwg
Y29uZmlndXJhdGlvbj1Ob25lKToKLSAgICAgICAgaWYgbm90IGNvbmZpZ3VyYXRpb246Ci0gICAg
ICAgICAgICBjb25maWd1cmF0aW9uID0gc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJykK
ICAgICAgICAgYmluYXJ5X25hbWUgPSBzZWxmLmRyaXZlcl9uYW1lKCkKLSAgICAgICAgcmV0dXJu
IHNlbGYuX2J1aWxkX3BhdGgoY29uZmlndXJhdGlvbiwgYmluYXJ5X25hbWUpCisgICAgICAgIHJl
dHVybiBzZWxmLl9idWlsZF9wYXRoX3dpdGhfY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uLCBi
aW5hcnlfbmFtZSkKIAogICAgIGRlZiBfcGF0aF90b19oZWxwZXIoc2VsZik6CiAgICAgICAgIHJl
dHVybiBOb25lCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Nocm9taXVtX2xpbnV4X3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9saW51eF91bml0dGVzdC5weQppbmRleCA5MDk0
ZDc0NThjNThlMWQ5OWMzODQzOWY5MmVmNjhjM2ZmYmJkMTQyLi5hMDgyYmUxYjVhZTRkYjJlNGI1
MTY0YzAzNTllYmZhZmFhOGJmNThhIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2xpbnV4X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbGludXhfdW5pdHRl
c3QucHkKQEAgLTkzLDE5ICs5MywxOSBAQCBjbGFzcyBDaHJvbWl1bUxpbnV4UG9ydFRlc3QoY2hy
b21pdW1fcG9ydF90ZXN0Y2FzZS5DaHJvbWl1bVBvcnRUZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3Rf
YnVpbGRfcGF0aChzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgb3B0aW9uYWwgcGF0aHMgYXJl
IHVzZWQgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZXkgZXhpc3QuCiAgICAgICAgIG9wdGlvbnMg
PSBNb2NrT3B0aW9ucyhjb25maWd1cmF0aW9uPSdSZWxlYXNlJywgYnVpbGRfZGlyZWN0b3J5PScv
Zm9vJykKLSAgICAgICAgc2VsZi5hc3NlcnRfYnVpbGRfcGF0aChvcHRpb25zLCBbJy9tb2NrLWNo
ZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vb3V0J10sICcvZm9vJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRfYnVpbGRfcGF0aChvcHRpb25zLCBbJy9tb2NrLWNoZWNrb3V0L1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vb3V0L1JlbGVhc2UnXSwgJy9mb28nKQogCiAgICAgICAgICMgVGVzdCB0aGF0
IG9wdGlvbmFsIHJlbGF0aXZlIHBhdGhzIGFyZSByZXR1cm5lZCB1bm1vZGlmaWVkLgogICAgICAg
ICBvcHRpb25zID0gTW9ja09wdGlvbnMoY29uZmlndXJhdGlvbj0nUmVsZWFzZScsIGJ1aWxkX2Rp
cmVjdG9yeT0nZm9vJykKLSAgICAgICAgc2VsZi5hc3NlcnRfYnVpbGRfcGF0aChvcHRpb25zLCBb
Jy9tb2NrLWNoZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vb3V0J10sICdmb28nKQorICAg
ICAgICBzZWxmLmFzc2VydF9idWlsZF9wYXRoKG9wdGlvbnMsIFsnL21vY2stY2hlY2tvdXQvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9vdXQvUmVsZWFzZSddLCAnZm9vJykKIAogICAgICAgICAjIFRl
c3QgdGhhdCB3ZSBsb29rIGluIGEgY2hyb21pdW0gZGlyZWN0b3J5IGJlZm9yZSB0aGUgd2Via2l0
IGRpcmVjdG9yeS4KICAgICAgICAgb3B0aW9ucyA9IE1vY2tPcHRpb25zKGNvbmZpZ3VyYXRpb249
J1JlbGVhc2UnLCBidWlsZF9kaXJlY3Rvcnk9Tm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRfYnVp
bGRfcGF0aChvcHRpb25zLCBbJy9tb2NrLWNoZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
b3V0JywgJy9tb2NrLWNoZWNrb3V0L291dCddLCAnL21vY2stY2hlY2tvdXQvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9vdXQnKQorICAgICAgICBzZWxmLmFzc2VydF9idWlsZF9wYXRoKG9wdGlvbnMs
IFsnL21vY2stY2hlY2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9vdXQvUmVsZWFzZScsICcv
bW9jay1jaGVja291dC9vdXQvUmVsZWFzZSddLCAnL21vY2stY2hlY2tvdXQvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9vdXQvUmVsZWFzZScpCiAKICAgICAgICAgIyBUZXN0IHRoYXQgd2UgcHJlZmVy
IHRoZSBsZWdhY3kgZGlyIG92ZXIgdGhlIG5ldyBkaXIuCiAgICAgICAgIG9wdGlvbnMgPSBNb2Nr
T3B0aW9ucyhjb25maWd1cmF0aW9uPSdSZWxlYXNlJywgYnVpbGRfZGlyZWN0b3J5PU5vbmUpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X2J1aWxkX3BhdGgob3B0aW9ucywgWycvbW9jay1jaGVja291dC9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Njb25zYnVpbGQnLCAnL21vY2stY2hlY2tvdXQvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9vdXQnXSwgJy9tb2NrLWNoZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc2NvbnNidWlsZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0X2J1aWxkX3BhdGgob3B0aW9u
cywgWycvbW9jay1jaGVja291dC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Njb25zYnVpbGQvUmVs
ZWFzZScsICcvbW9jay1jaGVja291dC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL291dC9SZWxlYXNl
J10sICcvbW9jay1jaGVja291dC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Njb25zYnVpbGQvUmVs
ZWFzZScpCiAKICAgICBkZWYgdGVzdF9kcml2ZXJfbmFtZV9vcHRpb24oc2VsZik6CiAgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1ha2VfcG9ydCgpLl9wYXRoX3RvX2RyaXZlcigpLmVuZHN3
aXRoKCdEdW1wUmVuZGVyVHJlZScpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9tYWMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX21hYy5weQppbmRleCBkZjFhYzdiNTgyZGE0
MmYyNDViM2ZmMzI2YTgxN2M1MGRmZWQwMWJlLi5iYWVhMDYzOWJkM2RmZWI2N2NiYTRiNzBlOThi
OWM0Nzc1NDIxMjA3IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2Nocm9taXVtX21hYy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX21hYy5weQpAQCAtNzksNyArNzksNyBAQCBjbGFzcyBD
aHJvbWl1bU1hY1BvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICAgICAgcmV0dXJuIG1h
cChzZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aCwgZmFsbGJhY2tfcGF0aHNbc2VsZi5fdmVyc2lv
bl0pCiAKICAgICBkZWYgX21vZHVsZXNfdG9fc2VhcmNoX2Zvcl9zeW1ib2xzKHNlbGYpOgotICAg
ICAgICByZXR1cm4gW3NlbGYuX2J1aWxkX3BhdGgoc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0
aW9uJyksICdmZm1wZWdzdW1vLnNvJyldCisgICAgICAgIHJldHVybiBbc2VsZi5fYnVpbGRfcGF0
aCgnZmZtcGVnc3Vtby5zbycpXQogCiAgICAgZGVmIGNoZWNrX2J1aWxkKHNlbGYsIG5lZWRzX2h0
dHApOgogICAgICAgICByZXN1bHQgPSBjaHJvbWl1bS5DaHJvbWl1bVBvcnQuY2hlY2tfYnVpbGQo
c2VsZiwgbmVlZHNfaHR0cCkKQEAgLTEyMCwxNCArMTIwLDExIEBAIGNsYXNzIENocm9taXVtTWFj
UG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogCiAgICAgZGVmIF9wYXRoX3RvX2RyaXZlcihz
ZWxmLCBjb25maWd1cmF0aW9uPU5vbmUpOgogICAgICAgICAjIEZJWE1FOiBtYWtlIHxjb25maWd1
cmF0aW9ufCBoYXBweSB3aXRoIGNhc2Utc2Vuc2l0aXZlIGZpbGUgc3lzdGVtcy4KLSAgICAgICAg
aWYgbm90IGNvbmZpZ3VyYXRpb246Ci0gICAgICAgICAgICBjb25maWd1cmF0aW9uID0gc2VsZi5n
ZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJykKLSAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3Bh
dGgoY29uZmlndXJhdGlvbiwgc2VsZi5kcml2ZXJfbmFtZSgpICsgJy5hcHAnLAotICAgICAgICAg
ICAgJ0NvbnRlbnRzJywgJ01hY09TJywgc2VsZi5kcml2ZXJfbmFtZSgpKQorICAgICAgICByZXR1
cm4gc2VsZi5fYnVpbGRfcGF0aF93aXRoX2NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbiwgc2Vs
Zi5kcml2ZXJfbmFtZSgpICsgJy5hcHAnLCAnQ29udGVudHMnLCAnTWFjT1MnLCBzZWxmLmRyaXZl
cl9uYW1lKCkpCiAKICAgICBkZWYgX3BhdGhfdG9faGVscGVyKHNlbGYpOgogICAgICAgICBiaW5h
cnlfbmFtZSA9ICdMYXlvdXRUZXN0SGVscGVyJwotICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRf
cGF0aChzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKSwgYmluYXJ5X25hbWUpCisgICAg
ICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKGJpbmFyeV9uYW1lKQogCiAgICAgZGVmIF9wYXRo
X3RvX3dkaWZmKHNlbGYpOgogICAgICAgICByZXR1cm4gJ3dkaWZmJwpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9tYWNfdW5pdHRl
c3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVt
X21hY191bml0dGVzdC5weQppbmRleCA4NzkwNGE4MDQ4NDgxYjU1YzE1NmZjM2M2YmMwN2VkYzJi
ZWI3MjQ4Li5iNmU4MDkxMTFiNmYzNWE2MGQzOGFmMWFjN2ZjZTg1OGZmNjQ5MzA1IDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX21h
Y191bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Nocm9taXVtX21hY191bml0dGVzdC5weQpAQCAtNzQsMTkgKzc0LDE5IEBAIGNsYXNzIENo
cm9taXVtTWFjUG9ydFRlc3QoY2hyb21pdW1fcG9ydF90ZXN0Y2FzZS5DaHJvbWl1bVBvcnRUZXN0
Q2FzZSk6CiAgICAgZGVmIHRlc3RfYnVpbGRfcGF0aChzZWxmKToKICAgICAgICAgIyBUZXN0IHRo
YXQgb3B0aW9uYWwgcGF0aHMgYXJlIHVzZWQgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZXkgZXhp
c3QuCiAgICAgICAgIG9wdGlvbnMgPSBNb2NrT3B0aW9ucyhjb25maWd1cmF0aW9uPSdSZWxlYXNl
JywgYnVpbGRfZGlyZWN0b3J5PScvZm9vJykKLSAgICAgICAgc2VsZi5hc3NlcnRfYnVpbGRfcGF0
aChvcHRpb25zLCBbJy9tb2NrLWNoZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vb3V0J10s
ICcvZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRfYnVpbGRfcGF0aChvcHRpb25zLCBbJy9tb2Nr
LWNoZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vb3V0L1JlbGVhc2UnXSwgJy9mb28nKQog
CiAgICAgICAgICMgVGVzdCB0aGF0IG9wdGlvbmFsIHJlbGF0aXZlIHBhdGhzIGFyZSByZXR1cm5l
ZCB1bm1vZGlmaWVkLgogICAgICAgICBvcHRpb25zID0gTW9ja09wdGlvbnMoY29uZmlndXJhdGlv
bj0nUmVsZWFzZScsIGJ1aWxkX2RpcmVjdG9yeT0nZm9vJykKLSAgICAgICAgc2VsZi5hc3NlcnRf
YnVpbGRfcGF0aChvcHRpb25zLCBbJy9tb2NrLWNoZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vb3V0J10sICdmb28nKQorICAgICAgICBzZWxmLmFzc2VydF9idWlsZF9wYXRoKG9wdGlvbnMs
IFsnL21vY2stY2hlY2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9vdXQvUmVsZWFzZSddLCAn
Zm9vJykKIAogICAgICAgICAjIFRlc3QgdGhhdCB3ZSBsb29rIGluIGEgY2hyb21pdW0gZGlyZWN0
b3J5IGJlZm9yZSB0aGUgd2Via2l0IGRpcmVjdG9yeS4KICAgICAgICAgb3B0aW9ucyA9IE1vY2tP
cHRpb25zKGNvbmZpZ3VyYXRpb249J1JlbGVhc2UnLCBidWlsZF9kaXJlY3Rvcnk9Tm9uZSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRfYnVpbGRfcGF0aChvcHRpb25zLCBbJy9tb2NrLWNoZWNrb3V0L1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vb3V0JywgJy9tb2NrLWNoZWNrb3V0L291dCddLCAnL21vY2st
Y2hlY2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9vdXQnKQorICAgICAgICBzZWxmLmFzc2Vy
dF9idWlsZF9wYXRoKG9wdGlvbnMsIFsnL21vY2stY2hlY2tvdXQvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9vdXQvUmVsZWFzZScsICcvbW9jay1jaGVja291dC9vdXQvUmVsZWFzZSddLCAnL21vY2st
Y2hlY2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9vdXQvUmVsZWFzZScpCiAKICAgICAgICAg
IyBUZXN0IHRoYXQgd2UgcHJlZmVyIHRoZSBsZWdhY3kgZGlyIG92ZXIgdGhlIG5ldyBkaXIuCiAg
ICAgICAgIG9wdGlvbnMgPSBNb2NrT3B0aW9ucyhjb25maWd1cmF0aW9uPSdSZWxlYXNlJywgYnVp
bGRfZGlyZWN0b3J5PU5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2J1aWxkX3BhdGgob3B0aW9u
cywgWycvbW9jay1jaGVja291dC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3hjb2RlYnVpbGQnLCAn
L21vY2stY2hlY2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9vdXQnXSwgJy9tb2NrLWNoZWNr
b3V0L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0veGNvZGVidWlsZCcpCisgICAgICAgIHNlbGYuYXNz
ZXJ0X2J1aWxkX3BhdGgob3B0aW9ucywgWycvbW9jay1jaGVja291dC9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3hjb2RlYnVpbGQvUmVsZWFzZScsICcvbW9jay1jaGVja291dC9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL291dC9SZWxlYXNlJ10sICcvbW9jay1jaGVja291dC9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3hjb2RlYnVpbGQvUmVsZWFzZScpCiAKICAgICBkZWYgdGVzdF9kcml2ZXJfbmFtZV9v
cHRpb24oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1ha2VfcG9ydCgpLl9w
YXRoX3RvX2RyaXZlcigpLmVuZHN3aXRoKCdEdW1wUmVuZGVyVHJlZScpKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV93aW4ucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dpbi5w
eQppbmRleCA1MTYxMTI0MWM1NzZkMjE0NTVjZDdlMGJlOTFlNWJlOGZiOGJkNDAwLi43ZDAzMzdh
Y2M0Zjk0YTBlYTEwNTBjNmY2YmY2YTA5MWRmZTU4ZGYyIDEwMDc1NQotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dpbi5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dpbi5weQpAQCAt
MTQ5LDE4ICsxNDksMTYgQEAgY2xhc3MgQ2hyb21pdW1XaW5Qb3J0KGNocm9taXVtLkNocm9taXVt
UG9ydCk6CiAgICAgICAgIHJldHVybiBzZWxmLl9saWdodHRwZF9wYXRoKCdwaHA1JywgJ3BocC1j
Z2kuZXhlJykKIAogICAgIGRlZiBfcGF0aF90b19kcml2ZXIoc2VsZiwgY29uZmlndXJhdGlvbj1O
b25lKToKLSAgICAgICAgaWYgbm90IGNvbmZpZ3VyYXRpb246Ci0gICAgICAgICAgICBjb25maWd1
cmF0aW9uID0gc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJykKICAgICAgICAgYmluYXJ5
X25hbWUgPSAnJXMuZXhlJyAlIHNlbGYuZHJpdmVyX25hbWUoKQotICAgICAgICByZXR1cm4gc2Vs
Zi5fYnVpbGRfcGF0aChjb25maWd1cmF0aW9uLCBiaW5hcnlfbmFtZSkKKyAgICAgICAgcmV0dXJu
IHNlbGYuX2J1aWxkX3BhdGhfd2l0aF9jb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24sIGJpbmFy
eV9uYW1lKQogCiAgICAgZGVmIF9wYXRoX3RvX2hlbHBlcihzZWxmKToKICAgICAgICAgYmluYXJ5
X25hbWUgPSAnTGF5b3V0VGVzdEhlbHBlci5leGUnCi0gICAgICAgIHJldHVybiBzZWxmLl9idWls
ZF9wYXRoKHNlbGYuZ2V0X29wdGlvbignY29uZmlndXJhdGlvbicpLCBiaW5hcnlfbmFtZSkKKyAg
ICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoYmluYXJ5X25hbWUpCiAKICAgICBkZWYgX3Bh
dGhfdG9faW1hZ2VfZGlmZihzZWxmKToKICAgICAgICAgYmluYXJ5X25hbWUgPSAnSW1hZ2VEaWZm
LmV4ZScKLSAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoc2VsZi5nZXRfb3B0aW9uKCdj
b25maWd1cmF0aW9uJyksIGJpbmFyeV9uYW1lKQorICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRf
cGF0aChiaW5hcnlfbmFtZSkKIAogICAgIGRlZiBfcGF0aF90b193ZGlmZihzZWxmKToKICAgICAg
ICAgcmV0dXJuIHNlbGYucGF0aF9mcm9tX2Nocm9taXVtX2Jhc2UoJ3RoaXJkX3BhcnR5JywgJ2N5
Z3dpbicsICdiaW4nLCAnd2RpZmYuZXhlJykKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fd2luX3VuaXR0ZXN0LnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV93aW5fdW5pdHRlc3Qu
cHkKaW5kZXggNjA3NzE5MjQxYWMwODhlNmVhNmI5MjdjNTZlNGYyYzFmNTA0NGYxNC4uMjUzZmYw
ZDRjNDA2ZTU3YzhlZjcwY2Q1MzQyZTBiMTJjMzlmZmI4ZiAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV93aW5fdW5pdHRlc3QucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV93
aW5fdW5pdHRlc3QucHkKQEAgLTEwMCwxOSArMTAwLDE5IEBAIGNsYXNzIENocm9taXVtV2luVGVz
dChjaHJvbWl1bV9wb3J0X3Rlc3RjYXNlLkNocm9taXVtUG9ydFRlc3RDYXNlKToKICAgICBkZWYg
dGVzdF9idWlsZF9wYXRoKHNlbGYpOgogICAgICAgICAjIFRlc3QgdGhhdCBvcHRpb25hbCBwYXRo
cyBhcmUgdXNlZCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhleSBleGlzdC4KICAgICAgICAgb3B0
aW9ucyA9IE1vY2tPcHRpb25zKGNvbmZpZ3VyYXRpb249J1JlbGVhc2UnLCBidWlsZF9kaXJlY3Rv
cnk9Jy9mb28nKQotICAgICAgICBzZWxmLmFzc2VydF9idWlsZF9wYXRoKG9wdGlvbnMsIFsnL21v
Y2stY2hlY2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9vdXQnXSwgJy9mb28nKQorICAgICAg
ICBzZWxmLmFzc2VydF9idWlsZF9wYXRoKG9wdGlvbnMsIFsnL21vY2stY2hlY2tvdXQvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9vdXQvUmVsZWFzZSddLCAnL2ZvbycpCiAKICAgICAgICAgIyBUZXN0
IHRoYXQgb3B0aW9uYWwgcmVsYXRpdmUgcGF0aHMgYXJlIHJldHVybmVkIHVubW9kaWZpZWQuCiAg
ICAgICAgIG9wdGlvbnMgPSBNb2NrT3B0aW9ucyhjb25maWd1cmF0aW9uPSdSZWxlYXNlJywgYnVp
bGRfZGlyZWN0b3J5PSdmb28nKQotICAgICAgICBzZWxmLmFzc2VydF9idWlsZF9wYXRoKG9wdGlv
bnMsIFsnL21vY2stY2hlY2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9vdXQnXSwgJ2Zvbycp
CisgICAgICAgIHNlbGYuYXNzZXJ0X2J1aWxkX3BhdGgob3B0aW9ucywgWycvbW9jay1jaGVja291
dC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL291dC9SZWxlYXNlJ10sICdmb28nKQogCiAgICAgICAg
ICMgVGVzdCB0aGF0IHdlIGxvb2sgaW4gYSBjaHJvbWl1bSBkaXJlY3RvcnkgYmVmb3JlIHRoZSB3
ZWJraXQgZGlyZWN0b3J5LgogICAgICAgICBvcHRpb25zID0gTW9ja09wdGlvbnMoY29uZmlndXJh
dGlvbj0nUmVsZWFzZScsIGJ1aWxkX2RpcmVjdG9yeT1Ob25lKQotICAgICAgICBzZWxmLmFzc2Vy
dF9idWlsZF9wYXRoKG9wdGlvbnMsIFsnL21vY2stY2hlY2tvdXQvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9vdXQnLCAnL21vY2stY2hlY2tvdXQvb3V0J10sICcvbW9jay1jaGVja291dC9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL291dCcpCisgICAgICAgIHNlbGYuYXNzZXJ0X2J1aWxkX3BhdGgob3B0
aW9ucywgWycvbW9jay1jaGVja291dC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL291dC9SZWxlYXNl
JywgJy9tb2NrLWNoZWNrb3V0L291dC9SZWxlYXNlJ10sICcvbW9jay1jaGVja291dC9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL291dC9SZWxlYXNlJykKIAogICAgICAgICAjIFRlc3QgdGhhdCB3ZSBw
cmVmZXIgdGhlIGxlZ2FjeSBkaXIgb3ZlciB0aGUgbmV3IGRpci4KICAgICAgICAgb3B0aW9ucyA9
IE1vY2tPcHRpb25zKGNvbmZpZ3VyYXRpb249J1JlbGVhc2UnLCBidWlsZF9kaXJlY3Rvcnk9Tm9u
ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRfYnVpbGRfcGF0aChvcHRpb25zLCBbJy9tb2NrLWNoZWNr
b3V0L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vYnVpbGQnLCAnL21vY2stY2hlY2tvdXQvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9vdXQnXSwgJy9tb2NrLWNoZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vYnVpbGQnKQorICAgICAgICBzZWxmLmFzc2VydF9idWlsZF9wYXRoKG9wdGlvbnMsIFsn
L21vY2stY2hlY2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9idWlsZC9SZWxlYXNlJywgJy9t
b2NrLWNoZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vb3V0J10sICcvbW9jay1jaGVja291
dC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2J1aWxkL1JlbGVhc2UnKQogCiAgICAgZGVmIHRlc3Rf
b3BlcmF0aW5nX3N5c3RlbShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnd2luJywg
c2VsZi5tYWtlX3BvcnQoKS5vcGVyYXRpbmdfc3lzdGVtKCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153837</attachid>
            <date>2012-07-23 12:22:11 -0700</date>
            <delta_ts>2012-07-24 14:42:53 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>bug-91890-20120723122203.patch</filename>
            <type>text/plain</type>
            <size>21787</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMTYxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZmFhMmZjNWM0M2JkMmY4NzIyMmY1MjE4OTEyN2MwZmM4
ZjJiNDk0YS4uMmE0NTYzMmFhZDExNWIwY2ZhZmQzMTVhNzQ2YTY0M2JiYWE3ZGQ2MSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0
IEBACisyMDEyLTA3LTIwICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIG5yd3Q6IG5ldmVyIGZpbmRzIGJpbmFyaWVzIGluIHRoZSAnb3V0JyBkaXIgb24gY2hy
b21pdW0gd2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MTg5MAorCisgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCisKKyAgICAgICAgV2Ug
d2VyZSBmaWd1cmluZyBvdXQgd2hpY2ggZGlyZWN0b3J5IGxvb2sgaW4gZm9yIGJpbmFyaWVzIGJ5
CisgICAgICAgIHRlc3RpbmcgZm9yIHRoZSBiYXNlIGRpcmVjdG9yeSAodGhlIGRpcmVjdG9yeSBh
Ym92ZQorICAgICAgICBEZWJ1Zy9SZWxlYXNlKS4gSW4gY2hyb21pdW0td2luJ3MgY2FzZSwgd2Ug
bG9vayBpbiBzcmMvYnVpbGQsCisgICAgICAgIHdoaWNoIGFsd2F5cyBleGlzdHMgYmVjYXVzZSB0
aGVyZSBhcmUgY2hlY2tlZC1pbiBmaWxlcyBpbiBpdCwKKyAgICAgICAgd2hpY2ggbWVhbnMgd2Un
ZCBhbHdheXMgcGljayB0aGF0IGRpcmVjdG9yeSBvdmVyIHNyYy9vdXQuIEFsbCBvZgorICAgICAg
ICB0aGUgb3RoZXIgcG9ydHMnIGJ1aWxkX3BhdGgoKSBpbXBsZW1lbnRhdGlvbiB3YXMgaW5jbHVk
aW5nCisgICAgICAgIERlYnVnL1JlbGVhc2UuIElmIHdlIG1hdGNoZWQgdGhhdCwgd2Ugd291bGRu
J3QgaGF2ZSBhIHByb2JsZW0sCisgICAgICAgIHNvIHRoaXMgY2hhbmdlIGZpeGVzIHRoYXQgYW5k
IHVwZGF0ZXMgYWxsIG9mIHRoZSBjYWxsZXJzIG9mIHRoZQorICAgICAgICBjaHJvbWl1bSBwb3J0
cycgaW1wbGVtZW50YXRpb24gdG8gbm90IHBhc3MgY29uZmlndXJhdGlvbiBhcyBwYXJ0CisgICAg
ICAgIG9mIHRoZSBwYXRoIHRvIGxvb2sgdXA7IHdlIHN0aWxsIG5lZWQgdG8gcGFzcyBjb25maWd1
cmF0aW9uIGluCisgICAgICAgIHNvbWUgY2FzZXMgKHRvIHRlc3QgaWYgdGhlIGJ1aWxkIGlzIG91
dCBvZiBkYXRlIGJldHdlZW4gZGVidWcKKyAgICAgICAgYW5kIHJlbGVhc2UpIHNvIHRoZSBpbXBs
ZW1lbnRhdGlvbiBnZXRzIHNsaWdodGx5IG1vcmUKKyAgICAgICAgY29tcGxpY2F0ZWQuCisKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5Ogor
ICAgICAgICAoQ2hyb21pdW1Qb3J0Ll9zdGF0aWNfYnVpbGRfcGF0aCk6CisgICAgICAgIChDaHJv
bWl1bVBvcnQuZGVmYXVsdF9yZXN1bHRzX2RpcmVjdG9yeSk6CisgICAgICAgIChDaHJvbWl1bVBv
cnQuX2J1aWxkX3BhdGgpOgorICAgICAgICAoQ2hyb21pdW1Qb3J0Ll9wYXRoX3RvX2ltYWdlX2Rp
ZmYpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21p
dW1fYW5kcm9pZC5weToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZFBvcnQuX2J1aWxkX3BhdGgp
OgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkUG9ydC5fcGF0aF90b19kcml2ZXIpOgorICAgICAg
ICAoQ2hyb21pdW1BbmRyb2lkUG9ydC5fcGF0aF90b19mb3J3YXJkZXIpOgorICAgICAgICAoQ2hy
b21pdW1BbmRyb2lkUG9ydC5fcHVzaF9leGVjdXRhYmxlKToKKyAgICAgICAgKENocm9taXVtQW5k
cm9pZFBvcnQuX3B1c2hfZm9udHMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvY2hyb21pdW1fbGludXgucHk6CisgICAgICAgIChDaHJvbWl1bUxpbnV4UG9y
dC5fZGV0ZXJtaW5lX2RyaXZlcl9wYXRoX3N0YXRpY2FsbHkpOgorICAgICAgICAoQ2hyb21pdW1M
aW51eFBvcnQuX21vZHVsZXNfdG9fc2VhcmNoX2Zvcl9zeW1ib2xzKToKKyAgICAgICAgKENocm9t
aXVtTGludXhQb3J0Ll9wYXRoX3RvX2RyaXZlcik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9saW51eF91bml0dGVzdC5weToKKyAgICAgICAg
KENocm9taXVtTGludXhQb3J0VGVzdC50ZXN0X2J1aWxkX3BhdGgpOgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbWFjLnB5OgorICAgICAgICAo
Q2hyb21pdW1NYWNQb3J0Ll9tb2R1bGVzX3RvX3NlYXJjaF9mb3Jfc3ltYm9scyk6CisgICAgICAg
IChDaHJvbWl1bU1hY1BvcnQuX3BhdGhfdG9fZHJpdmVyKToKKyAgICAgICAgKENocm9taXVtTWFj
UG9ydC5fcGF0aF90b19oZWxwZXIpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvY2hyb21pdW1fbWFjX3VuaXR0ZXN0LnB5OgorICAgICAgICAoQ2hyb21pdW1N
YWNQb3J0VGVzdC50ZXN0X2J1aWxkX3BhdGgpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fd2luLnB5OgorICAgICAgICAoQ2hyb21pdW1XaW5Q
b3J0Ll9wYXRoX3RvX2RyaXZlcik6CisgICAgICAgIChDaHJvbWl1bVdpblBvcnQuX3BhdGhfdG9f
aGVscGVyKToKKyAgICAgICAgKENocm9taXVtV2luUG9ydC5fcGF0aF90b19pbWFnZV9kaWZmKToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dp
bl91bml0dGVzdC5weToKKyAgICAgICAgKENocm9taXVtV2luVGVzdC50ZXN0X2J1aWxkX3BhdGgp
OgorCiAyMDEyLTA3LTE5ICBTdWRhcnNhbmEgTmFnaW5lbmkgIDxzdWRhcnNhbmEubmFnaW5lbmlA
bGludXguaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIFtXSzJdIEFkZCBhIGNhbGxiYWNrIHRv
IGhhbmRsZSBkZWxldGUgcmVxdWVzdCBpbiBNaW5pQnJvd3NlcgpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKaW5kZXggOTcyOWY5
NGMwNTBhZTg1ZGRhOTBhYjhhNGNkMWI4MWQyMDVmODJmNS4uYjEyM2RmMDczMmMxY2Y3MWYwNzdj
YzllNzhlOGM0YTA0NDQwOGI1OCAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CkBAIC03OCwxNyArNzgsMTcgQEAgY2xhc3Mg
Q2hyb21pdW1Qb3J0KFdlYktpdFBvcnQpOgogICAgIERFRkFVTFRfQlVJTERfRElSRUNUT1JJRVMg
PSAoJ291dCcsKQogCiAgICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIF9zdGF0aWNfYnVpbGRfcGF0
aChjbHMsIGZpbGVzeXN0ZW0sIGJ1aWxkX2RpcmVjdG9yeSwgY2hyb21pdW1fYmFzZSwgd2Via2l0
X2Jhc2UsICpjb21wcyk6CisgICAgZGVmIF9zdGF0aWNfYnVpbGRfcGF0aChjbHMsIGZpbGVzeXN0
ZW0sIGJ1aWxkX2RpcmVjdG9yeSwgY2hyb21pdW1fYmFzZSwgd2Via2l0X2Jhc2UsIGNvbmZpZ3Vy
YXRpb24sIGNvbXBzKToKICAgICAgICAgaWYgYnVpbGRfZGlyZWN0b3J5OgogICAgICAgICAgICAg
cmV0dXJuIGZpbGVzeXN0ZW0uam9pbihidWlsZF9kaXJlY3RvcnksICpjb21wcykKIAogICAgICAg
ICBmb3IgZGlyZWN0b3J5IGluIGNscy5ERUZBVUxUX0JVSUxEX0RJUkVDVE9SSUVTOgotICAgICAg
ICAgICAgYmFzZV9kaXIgPSBmaWxlc3lzdGVtLmpvaW4oY2hyb21pdW1fYmFzZSwgZGlyZWN0b3J5
KQorICAgICAgICAgICAgYmFzZV9kaXIgPSBmaWxlc3lzdGVtLmpvaW4oY2hyb21pdW1fYmFzZSwg
ZGlyZWN0b3J5LCBjb25maWd1cmF0aW9uKQogICAgICAgICAgICAgaWYgZmlsZXN5c3RlbS5leGlz
dHMoYmFzZV9kaXIpOgogICAgICAgICAgICAgICAgIHJldHVybiBmaWxlc3lzdGVtLmpvaW4oYmFz
ZV9kaXIsICpjb21wcykKIAogICAgICAgICBmb3IgZGlyZWN0b3J5IGluIGNscy5ERUZBVUxUX0JV
SUxEX0RJUkVDVE9SSUVTOgotICAgICAgICAgICAgYmFzZV9kaXIgPSBmaWxlc3lzdGVtLmpvaW4o
d2Via2l0X2Jhc2UsIGRpcmVjdG9yeSkKKyAgICAgICAgICAgIGJhc2VfZGlyID0gZmlsZXN5c3Rl
bS5qb2luKHdlYmtpdF9iYXNlLCBkaXJlY3RvcnksIGNvbmZpZ3VyYXRpb24pCiAgICAgICAgICAg
ICBpZiBmaWxlc3lzdGVtLmV4aXN0cyhiYXNlX2Rpcik6CiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZpbGVzeXN0ZW0uam9pbihiYXNlX2RpciwgKmNvbXBzKQogCkBAIC0yNjMsNyArMjYzLDcgQEAg
Y2xhc3MgQ2hyb21pdW1Qb3J0KFdlYktpdFBvcnQpOgogICAgICAgICB0cnk6CiAgICAgICAgICAg
ICByZXR1cm4gc2VsZi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgnd2Via2l0Jywgc2VsZi5nZXRf
b3B0aW9uKCdjb25maWd1cmF0aW9uJyksICdsYXlvdXQtdGVzdC1yZXN1bHRzJykKICAgICAgICAg
ZXhjZXB0IEFzc2VydGlvbkVycm9yOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3Bh
dGgoc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJyksICdsYXlvdXQtdGVzdC1yZXN1bHRz
JykKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKCdsYXlvdXQtdGVzdC1yZXN1
bHRzJykKIAogICAgIGRlZiBfbWlzc2luZ19zeW1ib2xfdG9fc2tpcHBlZF90ZXN0cyhzZWxmKToK
ICAgICAgICAgIyBGSVhNRTogU2hvdWxkIFdlYktpdFBvcnQgaGF2ZSB0aGVzZSBkZWZpbml0aW9u
cyBhbHNvPwpAQCAtMzg2LDExICszODYsMTUgQEAgY2xhc3MgQ2hyb21pdW1Qb3J0KFdlYktpdFBv
cnQpOgogICAgICMKIAogICAgIGRlZiBfYnVpbGRfcGF0aChzZWxmLCAqY29tcHMpOgotICAgICAg
ICByZXR1cm4gc2VsZi5fc3RhdGljX2J1aWxkX3BhdGgoc2VsZi5fZmlsZXN5c3RlbSwgc2VsZi5n
ZXRfb3B0aW9uKCdidWlsZF9kaXJlY3RvcnknKSwgc2VsZi5wYXRoX2Zyb21fY2hyb21pdW1fYmFz
ZSgpLCBzZWxmLnBhdGhfZnJvbV93ZWJraXRfYmFzZSgpLCAqY29tcHMpCisgICAgICAgIHJldHVy
biBzZWxmLl9idWlsZF9wYXRoX3dpdGhfY29uZmlndXJhdGlvbihOb25lLCAqY29tcHMpCisKKyAg
ICBkZWYgX2J1aWxkX3BhdGhfd2l0aF9jb25maWd1cmF0aW9uKHNlbGYsIGNvbmZpZ3VyYXRpb24s
ICpjb21wcyk6CisgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uIG9yIHNlbGYu
Z2V0X29wdGlvbignY29uZmlndXJhdGlvbicpCisgICAgICAgIHJldHVybiBzZWxmLl9zdGF0aWNf
YnVpbGRfcGF0aChzZWxmLl9maWxlc3lzdGVtLCBzZWxmLmdldF9vcHRpb24oJ2J1aWxkX2RpcmVj
dG9yeScpLCBzZWxmLnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNlKCksIHNlbGYucGF0aF9mcm9tX3dl
YmtpdF9iYXNlKCksIGNvbmZpZ3VyYXRpb24sIGNvbXBzKQogCiAgICAgZGVmIF9wYXRoX3RvX2lt
YWdlX2RpZmYoc2VsZik6CiAgICAgICAgIGJpbmFyeV9uYW1lID0gJ0ltYWdlRGlmZicKLSAgICAg
ICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9u
JyksIGJpbmFyeV9uYW1lKQorICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChiaW5hcnlf
bmFtZSkKIAogICAgIGRlZiBfY2hlY2tfZHJpdmVyX2J1aWxkX3VwX3RvX2RhdGUoc2VsZiwgY29u
ZmlndXJhdGlvbik6CiAgICAgICAgIGlmIGNvbmZpZ3VyYXRpb24gaW4gKCdEZWJ1ZycsICdSZWxl
YXNlJyk6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Nocm9taXVtX2FuZHJvaWQucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQucHkKaW5kZXggNmJiOGZhYzU0OGE3MGRiM2U1ODIx
YTk2NzE3ZGQ0Y2M0ODk1NzBkNy4uZDIxNGMwOGYyNjE5YmEzOGNkOWJkNzdlYTkxNThmOWE4Mjky
MjdmOCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9jaHJvbWl1bV9hbmRyb2lkLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvY2hyb21pdW1fYW5kcm9pZC5weQpAQCAtMjgwLDcgKzI4MCwxMCBAQCBjbGFz
cyBDaHJvbWl1bUFuZHJvaWRQb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgIyBPdmVy
cmlkZGVuIHByaXZhdGUgZnVuY3Rpb25zLgogCiAgICAgZGVmIF9idWlsZF9wYXRoKHNlbGYsICpj
b21wcyk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9ob3N0X3BvcnQuX2J1aWxkX3BhdGgoKmNvbXBz
KQorICAgICAgICBzZWxmLl9idWlsZF9wYXRoKE5vbmUsICpjb21wcykKKworICAgIGRlZiBfYnVp
bGRfcGF0aF93aXRoX2NvbmZpZ3VyYXRpb24oc2VsZiwgY29uZmlndXJhdGlvbiwgKmNvbXBzKToK
KyAgICAgICAgcmV0dXJuIHNlbGYuX2hvc3RfcG9ydC5fYnVpbGRfcGF0aF93aXRoX2NvbmZpZ3Vy
YXRpb24oY29uZmlndXJhdGlvbiwgKmNvbXBzKQogCiAgICAgZGVmIF9wYXRoX3RvX2FwYWNoZShz
ZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2hvc3RfcG9ydC5fcGF0aF90b19hcGFjaGUoKQpA
QCAtMjg5LDE1ICsyOTIsMTMgQEAgY2xhc3MgQ2hyb21pdW1BbmRyb2lkUG9ydChjaHJvbWl1bS5D
aHJvbWl1bVBvcnQpOgogICAgICAgICByZXR1cm4gc2VsZi5faG9zdF9wb3J0Ll9wYXRoX3RvX2Fw
YWNoZV9jb25maWdfZmlsZSgpCiAKICAgICBkZWYgX3BhdGhfdG9fZHJpdmVyKHNlbGYsIGNvbmZp
Z3VyYXRpb249Tm9uZSk6Ci0gICAgICAgIGlmIG5vdCBjb25maWd1cmF0aW9uOgotICAgICAgICAg
ICAgY29uZmlndXJhdGlvbiA9IHNlbGYuZ2V0X29wdGlvbignY29uZmlndXJhdGlvbicpCi0gICAg
ICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKGNvbmZpZ3VyYXRpb24sICdEdW1wUmVuZGVyVHJl
ZV9hcGsvRHVtcFJlbmRlclRyZWUtZGVidWcuYXBrJykKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1
aWxkX3BhdGhfd2l0aF9jb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24sICdEdW1wUmVuZGVyVHJl
ZV9hcGsvRHVtcFJlbmRlclRyZWUtZGVidWcuYXBrJykKIAogICAgIGRlZiBfcGF0aF90b19oZWxw
ZXIoc2VsZik6CiAgICAgICAgIHJldHVybiBOb25lCiAKICAgICBkZWYgX3BhdGhfdG9fZm9yd2Fy
ZGVyKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChzZWxmLmdldF9vcHRp
b24oJ2NvbmZpZ3VyYXRpb24nKSwgJ2ZvcndhcmRlcicpCisgICAgICAgIHJldHVybiBzZWxmLl9i
dWlsZF9wYXRoKCdmb3J3YXJkZXInKQogCiAgICAgZGVmIF9wYXRoX3RvX2ltYWdlX2RpZmYoc2Vs
Zik6CiAgICAgICAgIHJldHVybiBzZWxmLl9ob3N0X3BvcnQuX3BhdGhfdG9faW1hZ2VfZGlmZigp
CkBAIC0zNDUsMTQgKzM0NiwxMCBAQCBjbGFzcyBDaHJvbWl1bUFuZHJvaWRQb3J0KGNocm9taXVt
LkNocm9taXVtUG9ydCk6CiAgICAgICAgICAgICBpbnN0YWxsX3Jlc3VsdCA9IHNlbGYuX3J1bl9h
ZGJfY29tbWFuZChbJ2luc3RhbGwnLCBkcnRfaG9zdF9wYXRoXSkKICAgICAgICAgICAgIGlmIGlu
c3RhbGxfcmVzdWx0LmZpbmQoJ1N1Y2Nlc3MnKSA9PSAtMToKICAgICAgICAgICAgICAgICByYWlz
ZSBBc3NlcnRpb25FcnJvcignRmFpbGVkIHRvIGluc3RhbGwgJXMgb250byBkZXZpY2U6ICVzJyAl
IChkcnRfaG9zdF9wYXRoLCBpbnN0YWxsX3Jlc3VsdCkpCi0gICAgICAgICAgICBzZWxmLl9wdXNo
X3RvX2RldmljZShzZWxmLl9idWlsZF9wYXRoKHNlbGYuZ2V0X29wdGlvbignY29uZmlndXJhdGlv
bicpLCAnRHVtcFJlbmRlclRyZWUucGFrJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBERVZJQ0VfRFJUX0RJUiArICdEdW1wUmVuZGVyVHJlZS5wYWsnKQotICAgICAgICAgICAg
c2VsZi5fcHVzaF90b19kZXZpY2Uoc2VsZi5fYnVpbGRfcGF0aChzZWxmLmdldF9vcHRpb24oJ2Nv
bmZpZ3VyYXRpb24nKSwgJ0R1bXBSZW5kZXJUcmVlX3Jlc291cmNlcycpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgREVWSUNFX0RSVF9ESVIgKyAnRHVtcFJlbmRlclRyZWVfcmVz
b3VyY2VzJykKLSAgICAgICAgICAgIHNlbGYuX3B1c2hfdG9fZGV2aWNlKHNlbGYuX2J1aWxkX3Bh
dGgoc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJyksICdhbmRyb2lkX21haW5fZm9udHMu
eG1sJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERVZJQ0VfRFJUX0RJUiAr
ICdhbmRyb2lkX21haW5fZm9udHMueG1sJykKLSAgICAgICAgICAgIHNlbGYuX3B1c2hfdG9fZGV2
aWNlKHNlbGYuX2J1aWxkX3BhdGgoc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJyksICdh
bmRyb2lkX2ZhbGxiYWNrX2ZvbnRzLnhtbCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgREVWSUNFX0RSVF9ESVIgKyAnYW5kcm9pZF9mYWxsYmFja19mb250cy54bWwnKQorICAg
ICAgICAgICAgc2VsZi5fcHVzaF90b19kZXZpY2Uoc2VsZi5fYnVpbGRfcGF0aCgnRHVtcFJlbmRl
clRyZWUucGFrJyksIERFVklDRV9EUlRfRElSICsgJ0R1bXBSZW5kZXJUcmVlLnBhaycpCisgICAg
ICAgICAgICBzZWxmLl9wdXNoX3RvX2RldmljZShzZWxmLl9idWlsZF9wYXRoKCdEdW1wUmVuZGVy
VHJlZV9yZXNvdXJjZXMnKSwgREVWSUNFX0RSVF9ESVIgKyAnRHVtcFJlbmRlclRyZWVfcmVzb3Vy
Y2VzJykKKyAgICAgICAgICAgIHNlbGYuX3B1c2hfdG9fZGV2aWNlKHNlbGYuX2J1aWxkX3BhdGgo
J2FuZHJvaWRfbWFpbl9mb250cy54bWwnKSwgREVWSUNFX0RSVF9ESVIgKyAnYW5kcm9pZF9tYWlu
X2ZvbnRzLnhtbCcpCisgICAgICAgICAgICBzZWxmLl9wdXNoX3RvX2RldmljZShzZWxmLl9idWls
ZF9wYXRoKCdhbmRyb2lkX2ZhbGxiYWNrX2ZvbnRzLnhtbCcpLCBERVZJQ0VfRFJUX0RJUiArICdh
bmRyb2lkX2ZhbGxiYWNrX2ZvbnRzLnhtbCcpCiAgICAgICAgICAgICAjIFZlcnNpb24gY29udHJv
bCBvZiB0ZXN0IHJlc291cmNlcyBpcyBkZXBlbmRlbnQgb24gZXhlY3V0YWJsZXMsCiAgICAgICAg
ICAgICAjIGJlY2F1c2Ugd2Ugd2lsbCBhbHdheXMgcmVidWlsZCBleGVjdXRhYmxlcyB3aGVuIHJl
c291cmNlcyBhcmUKICAgICAgICAgICAgICMgdXBkYXRlZC4KQEAgLTM2Miw3ICszNTksNyBAQCBj
bGFzcyBDaHJvbWl1bUFuZHJvaWRQb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgZGVm
IF9wdXNoX2ZvbnRzKHNlbGYpOgogICAgICAgICBpZiBub3Qgc2VsZi5fY2hlY2tfdmVyc2lvbihE
RVZJQ0VfRk9OVFNfRElSLCBGT05UX0ZJTEVTX1ZFUlNJT04pOgogICAgICAgICAgICAgX2xvZy5k
ZWJ1ZygnUHVzaGluZyBmb250cycpCi0gICAgICAgICAgICBwYXRoX3RvX2FoZW1fZm9udCA9IHNl
bGYuX2J1aWxkX3BhdGgoc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJyksICdBSEVNX19f
Xy5UVEYnKQorICAgICAgICAgICAgcGF0aF90b19haGVtX2ZvbnQgPSBzZWxmLl9idWlsZF9wYXRo
KCdBSEVNX19fXy5UVEYnKQogICAgICAgICAgICAgc2VsZi5fcHVzaF90b19kZXZpY2UocGF0aF90
b19haGVtX2ZvbnQsIERFVklDRV9GT05UU19ESVIgKyAnQUhFTV9fX18uVFRGJykKICAgICAgICAg
ICAgIGZvciAoaG9zdF9kaXIsIGZvbnRfZmlsZSkgaW4gSE9TVF9GT05UX0ZJTEVTOgogICAgICAg
ICAgICAgICAgIHNlbGYuX3B1c2hfdG9fZGV2aWNlKGhvc3RfZGlyICsgZm9udF9maWxlLCBERVZJ
Q0VfRk9OVFNfRElSICsgZm9udF9maWxlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9saW51eC5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbGludXgucHkKaW5kZXggZTU0MDc4
ZDJiNzE4Nzg3YWI0ZmU3ODVjMWJmZTlhYTA4ZDM1MzY1Yi4uZDVjMjIzNWJmMzI4Y2I3Mjg4NGVm
YzQ3OGIxYjdlZDg4MmQzNzAwYSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9saW51eC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2xpbnV4LnB5CkBAIC02OSw3ICs2OSw3
IEBAIGNsYXNzIENocm9taXVtTGludXhQb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAg
ICAgICAgICBjb25maWd1cmF0aW9uID0gb3B0aW9ucy5jb25maWd1cmF0aW9uCiAgICAgICAgIGVs
c2U6CiAgICAgICAgICAgICBjb25maWd1cmF0aW9uID0gY29uZmlnX29iamVjdC5kZWZhdWx0X2Nv
bmZpZ3VyYXRpb24oKQotICAgICAgICByZXR1cm4gY2xzLl9zdGF0aWNfYnVpbGRfcGF0aChob3N0
LmZpbGVzeXN0ZW0sIGJ1aWxkX2RpcmVjdG9yeSwgY2hyb21pdW1fYmFzZSwgd2Via2l0X2Jhc2Us
IGNvbmZpZ3VyYXRpb24sICdEdW1wUmVuZGVyVHJlZScpCisgICAgICAgIHJldHVybiBjbHMuX3N0
YXRpY19idWlsZF9wYXRoKGhvc3QuZmlsZXN5c3RlbSwgYnVpbGRfZGlyZWN0b3J5LCBjaHJvbWl1
bV9iYXNlLCB3ZWJraXRfYmFzZSwgY29uZmlndXJhdGlvbiwgWydEdW1wUmVuZGVyVHJlZSddKQog
CiAgICAgQHN0YXRpY21ldGhvZAogICAgIGRlZiBfZGV0ZXJtaW5lX2FyY2hpdGVjdHVyZShmaWxl
c3lzdGVtLCBleGVjdXRpdmUsIGRyaXZlcl9wYXRoKToKQEAgLTExMSw3ICsxMTEsNyBAQCBjbGFz
cyBDaHJvbWl1bUxpbnV4UG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogICAgICAgICByZXR1
cm4gbWFwKHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoLCBwb3J0X25hbWVzKQogCiAgICAgZGVm
IF9tb2R1bGVzX3RvX3NlYXJjaF9mb3Jfc3ltYm9scyhzZWxmKToKLSAgICAgICAgcmV0dXJuIFtz
ZWxmLl9idWlsZF9wYXRoKHNlbGYuZ2V0X29wdGlvbignY29uZmlndXJhdGlvbicpLCAnbGliZmZt
cGVnc3Vtby5zbycpXQorICAgICAgICByZXR1cm4gW3NlbGYuX2J1aWxkX3BhdGgoJ2xpYmZmbXBl
Z3N1bW8uc28nKV0KIAogICAgIGRlZiBjaGVja19idWlsZChzZWxmLCBuZWVkc19odHRwKToKICAg
ICAgICAgcmVzdWx0ID0gY2hyb21pdW0uQ2hyb21pdW1Qb3J0LmNoZWNrX2J1aWxkKHNlbGYsIG5l
ZWRzX2h0dHApCkBAIC0xNzMsMTAgKzE3Myw4IEBAIGNsYXNzIENocm9taXVtTGludXhQb3J0KGNo
cm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgICAgIHJldHVybiAiL3Vzci9iaW4vcGhwLWNnaSIK
IAogICAgIGRlZiBfcGF0aF90b19kcml2ZXIoc2VsZiwgY29uZmlndXJhdGlvbj1Ob25lKToKLSAg
ICAgICAgaWYgbm90IGNvbmZpZ3VyYXRpb246Ci0gICAgICAgICAgICBjb25maWd1cmF0aW9uID0g
c2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJykKICAgICAgICAgYmluYXJ5X25hbWUgPSBz
ZWxmLmRyaXZlcl9uYW1lKCkKLSAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoY29uZmln
dXJhdGlvbiwgYmluYXJ5X25hbWUpCisgICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoX3dp
dGhfY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uLCBiaW5hcnlfbmFtZSkKIAogICAgIGRlZiBf
cGF0aF90b19oZWxwZXIoc2VsZik6CiAgICAgICAgIHJldHVybiBOb25lCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2xpbnV4X3Vu
aXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJv
bWl1bV9saW51eF91bml0dGVzdC5weQppbmRleCA5MDk0ZDc0NThjNThlMWQ5OWMzODQzOWY5MmVm
NjhjM2ZmYmJkMTQyLi5hMDgyYmUxYjVhZTRkYjJlNGI1MTY0YzAzNTllYmZhZmFhOGJmNThhIDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9t
aXVtX2xpbnV4X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvY2hyb21pdW1fbGludXhfdW5pdHRlc3QucHkKQEAgLTkzLDE5ICs5MywxOSBA
QCBjbGFzcyBDaHJvbWl1bUxpbnV4UG9ydFRlc3QoY2hyb21pdW1fcG9ydF90ZXN0Y2FzZS5DaHJv
bWl1bVBvcnRUZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfYnVpbGRfcGF0aChzZWxmKToKICAgICAg
ICAgIyBUZXN0IHRoYXQgb3B0aW9uYWwgcGF0aHMgYXJlIHVzZWQgcmVnYXJkbGVzcyBvZiB3aGV0
aGVyIHRoZXkgZXhpc3QuCiAgICAgICAgIG9wdGlvbnMgPSBNb2NrT3B0aW9ucyhjb25maWd1cmF0
aW9uPSdSZWxlYXNlJywgYnVpbGRfZGlyZWN0b3J5PScvZm9vJykKLSAgICAgICAgc2VsZi5hc3Nl
cnRfYnVpbGRfcGF0aChvcHRpb25zLCBbJy9tb2NrLWNoZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vb3V0J10sICcvZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRfYnVpbGRfcGF0aChvcHRp
b25zLCBbJy9tb2NrLWNoZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vb3V0L1JlbGVhc2Un
XSwgJy9mb28nKQogCiAgICAgICAgICMgVGVzdCB0aGF0IG9wdGlvbmFsIHJlbGF0aXZlIHBhdGhz
IGFyZSByZXR1cm5lZCB1bm1vZGlmaWVkLgogICAgICAgICBvcHRpb25zID0gTW9ja09wdGlvbnMo
Y29uZmlndXJhdGlvbj0nUmVsZWFzZScsIGJ1aWxkX2RpcmVjdG9yeT0nZm9vJykKLSAgICAgICAg
c2VsZi5hc3NlcnRfYnVpbGRfcGF0aChvcHRpb25zLCBbJy9tb2NrLWNoZWNrb3V0L1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vb3V0J10sICdmb28nKQorICAgICAgICBzZWxmLmFzc2VydF9idWlsZF9w
YXRoKG9wdGlvbnMsIFsnL21vY2stY2hlY2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9vdXQv
UmVsZWFzZSddLCAnZm9vJykKIAogICAgICAgICAjIFRlc3QgdGhhdCB3ZSBsb29rIGluIGEgY2hy
b21pdW0gZGlyZWN0b3J5IGJlZm9yZSB0aGUgd2Via2l0IGRpcmVjdG9yeS4KICAgICAgICAgb3B0
aW9ucyA9IE1vY2tPcHRpb25zKGNvbmZpZ3VyYXRpb249J1JlbGVhc2UnLCBidWlsZF9kaXJlY3Rv
cnk9Tm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRfYnVpbGRfcGF0aChvcHRpb25zLCBbJy9tb2Nr
LWNoZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vb3V0JywgJy9tb2NrLWNoZWNrb3V0L291
dCddLCAnL21vY2stY2hlY2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9vdXQnKQorICAgICAg
ICBzZWxmLmFzc2VydF9idWlsZF9wYXRoKG9wdGlvbnMsIFsnL21vY2stY2hlY2tvdXQvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9vdXQvUmVsZWFzZScsICcvbW9jay1jaGVja291dC9vdXQvUmVsZWFz
ZSddLCAnL21vY2stY2hlY2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9vdXQvUmVsZWFzZScp
CiAKICAgICAgICAgIyBUZXN0IHRoYXQgd2UgcHJlZmVyIHRoZSBsZWdhY3kgZGlyIG92ZXIgdGhl
IG5ldyBkaXIuCiAgICAgICAgIG9wdGlvbnMgPSBNb2NrT3B0aW9ucyhjb25maWd1cmF0aW9uPSdS
ZWxlYXNlJywgYnVpbGRfZGlyZWN0b3J5PU5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2J1aWxk
X3BhdGgob3B0aW9ucywgWycvbW9jay1jaGVja291dC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Nj
b25zYnVpbGQnLCAnL21vY2stY2hlY2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9vdXQnXSwg
Jy9tb2NrLWNoZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc2NvbnNidWlsZCcpCisgICAg
ICAgIHNlbGYuYXNzZXJ0X2J1aWxkX3BhdGgob3B0aW9ucywgWycvbW9jay1jaGVja291dC9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Njb25zYnVpbGQvUmVsZWFzZScsICcvbW9jay1jaGVja291dC9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL291dC9SZWxlYXNlJ10sICcvbW9jay1jaGVja291dC9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Njb25zYnVpbGQvUmVsZWFzZScpCiAKICAgICBkZWYgdGVzdF9k
cml2ZXJfbmFtZV9vcHRpb24oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1h
a2VfcG9ydCgpLl9wYXRoX3RvX2RyaXZlcigpLmVuZHN3aXRoKCdEdW1wUmVuZGVyVHJlZScpKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJv
bWl1bV9tYWMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2No
cm9taXVtX21hYy5weQppbmRleCBkZjFhYzdiNTgyZGE0MmYyNDViM2ZmMzI2YTgxN2M1MGRmZWQw
MWJlLi5iYWVhMDYzOWJkM2RmZWI2N2NiYTRiNzBlOThiOWM0Nzc1NDIxMjA3IDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX21hYy5w
eQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVt
X21hYy5weQpAQCAtNzksNyArNzksNyBAQCBjbGFzcyBDaHJvbWl1bU1hY1BvcnQoY2hyb21pdW0u
Q2hyb21pdW1Qb3J0KToKICAgICAgICAgcmV0dXJuIG1hcChzZWxmLl93ZWJraXRfYmFzZWxpbmVf
cGF0aCwgZmFsbGJhY2tfcGF0aHNbc2VsZi5fdmVyc2lvbl0pCiAKICAgICBkZWYgX21vZHVsZXNf
dG9fc2VhcmNoX2Zvcl9zeW1ib2xzKHNlbGYpOgotICAgICAgICByZXR1cm4gW3NlbGYuX2J1aWxk
X3BhdGgoc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJyksICdmZm1wZWdzdW1vLnNvJyld
CisgICAgICAgIHJldHVybiBbc2VsZi5fYnVpbGRfcGF0aCgnZmZtcGVnc3Vtby5zbycpXQogCiAg
ICAgZGVmIGNoZWNrX2J1aWxkKHNlbGYsIG5lZWRzX2h0dHApOgogICAgICAgICByZXN1bHQgPSBj
aHJvbWl1bS5DaHJvbWl1bVBvcnQuY2hlY2tfYnVpbGQoc2VsZiwgbmVlZHNfaHR0cCkKQEAgLTEy
MCwxNCArMTIwLDExIEBAIGNsYXNzIENocm9taXVtTWFjUG9ydChjaHJvbWl1bS5DaHJvbWl1bVBv
cnQpOgogCiAgICAgZGVmIF9wYXRoX3RvX2RyaXZlcihzZWxmLCBjb25maWd1cmF0aW9uPU5vbmUp
OgogICAgICAgICAjIEZJWE1FOiBtYWtlIHxjb25maWd1cmF0aW9ufCBoYXBweSB3aXRoIGNhc2Ut
c2Vuc2l0aXZlIGZpbGUgc3lzdGVtcy4KLSAgICAgICAgaWYgbm90IGNvbmZpZ3VyYXRpb246Ci0g
ICAgICAgICAgICBjb25maWd1cmF0aW9uID0gc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9u
JykKLSAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoY29uZmlndXJhdGlvbiwgc2VsZi5k
cml2ZXJfbmFtZSgpICsgJy5hcHAnLAotICAgICAgICAgICAgJ0NvbnRlbnRzJywgJ01hY09TJywg
c2VsZi5kcml2ZXJfbmFtZSgpKQorICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aF93aXRo
X2NvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbiwgc2VsZi5kcml2ZXJfbmFtZSgpICsgJy5hcHAn
LCAnQ29udGVudHMnLCAnTWFjT1MnLCBzZWxmLmRyaXZlcl9uYW1lKCkpCiAKICAgICBkZWYgX3Bh
dGhfdG9faGVscGVyKHNlbGYpOgogICAgICAgICBiaW5hcnlfbmFtZSA9ICdMYXlvdXRUZXN0SGVs
cGVyJwotICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChzZWxmLmdldF9vcHRpb24oJ2Nv
bmZpZ3VyYXRpb24nKSwgYmluYXJ5X25hbWUpCisgICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9w
YXRoKGJpbmFyeV9uYW1lKQogCiAgICAgZGVmIF9wYXRoX3RvX3dkaWZmKHNlbGYpOgogICAgICAg
ICByZXR1cm4gJ3dkaWZmJwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9tYWNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX21hY191bml0dGVzdC5weQppbmRleCA4
NzkwNGE4MDQ4NDgxYjU1YzE1NmZjM2M2YmMwN2VkYzJiZWI3MjQ4Li5iNmU4MDkxMTFiNmYzNWE2
MGQzOGFmMWFjN2ZjZTg1OGZmNjQ5MzA1IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX21hY191bml0dGVzdC5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX21hY191bml0dGVz
dC5weQpAQCAtNzQsMTkgKzc0LDE5IEBAIGNsYXNzIENocm9taXVtTWFjUG9ydFRlc3QoY2hyb21p
dW1fcG9ydF90ZXN0Y2FzZS5DaHJvbWl1bVBvcnRUZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfYnVp
bGRfcGF0aChzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgb3B0aW9uYWwgcGF0aHMgYXJlIHVz
ZWQgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZXkgZXhpc3QuCiAgICAgICAgIG9wdGlvbnMgPSBN
b2NrT3B0aW9ucyhjb25maWd1cmF0aW9uPSdSZWxlYXNlJywgYnVpbGRfZGlyZWN0b3J5PScvZm9v
JykKLSAgICAgICAgc2VsZi5hc3NlcnRfYnVpbGRfcGF0aChvcHRpb25zLCBbJy9tb2NrLWNoZWNr
b3V0L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vb3V0J10sICcvZm9vJykKKyAgICAgICAgc2VsZi5h
c3NlcnRfYnVpbGRfcGF0aChvcHRpb25zLCBbJy9tb2NrLWNoZWNrb3V0L1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vb3V0L1JlbGVhc2UnXSwgJy9mb28nKQogCiAgICAgICAgICMgVGVzdCB0aGF0IG9w
dGlvbmFsIHJlbGF0aXZlIHBhdGhzIGFyZSByZXR1cm5lZCB1bm1vZGlmaWVkLgogICAgICAgICBv
cHRpb25zID0gTW9ja09wdGlvbnMoY29uZmlndXJhdGlvbj0nUmVsZWFzZScsIGJ1aWxkX2RpcmVj
dG9yeT0nZm9vJykKLSAgICAgICAgc2VsZi5hc3NlcnRfYnVpbGRfcGF0aChvcHRpb25zLCBbJy9t
b2NrLWNoZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vb3V0J10sICdmb28nKQorICAgICAg
ICBzZWxmLmFzc2VydF9idWlsZF9wYXRoKG9wdGlvbnMsIFsnL21vY2stY2hlY2tvdXQvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9vdXQvUmVsZWFzZSddLCAnZm9vJykKIAogICAgICAgICAjIFRlc3Qg
dGhhdCB3ZSBsb29rIGluIGEgY2hyb21pdW0gZGlyZWN0b3J5IGJlZm9yZSB0aGUgd2Via2l0IGRp
cmVjdG9yeS4KICAgICAgICAgb3B0aW9ucyA9IE1vY2tPcHRpb25zKGNvbmZpZ3VyYXRpb249J1Jl
bGVhc2UnLCBidWlsZF9kaXJlY3Rvcnk9Tm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRfYnVpbGRf
cGF0aChvcHRpb25zLCBbJy9tb2NrLWNoZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vb3V0
JywgJy9tb2NrLWNoZWNrb3V0L291dCddLCAnL21vY2stY2hlY2tvdXQvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9vdXQnKQorICAgICAgICBzZWxmLmFzc2VydF9idWlsZF9wYXRoKG9wdGlvbnMsIFsn
L21vY2stY2hlY2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9vdXQvUmVsZWFzZScsICcvbW9j
ay1jaGVja291dC9vdXQvUmVsZWFzZSddLCAnL21vY2stY2hlY2tvdXQvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9vdXQvUmVsZWFzZScpCiAKICAgICAgICAgIyBUZXN0IHRoYXQgd2UgcHJlZmVyIHRo
ZSBsZWdhY3kgZGlyIG92ZXIgdGhlIG5ldyBkaXIuCiAgICAgICAgIG9wdGlvbnMgPSBNb2NrT3B0
aW9ucyhjb25maWd1cmF0aW9uPSdSZWxlYXNlJywgYnVpbGRfZGlyZWN0b3J5PU5vbmUpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0X2J1aWxkX3BhdGgob3B0aW9ucywgWycvbW9jay1jaGVja291dC9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3hjb2RlYnVpbGQnLCAnL21vY2stY2hlY2tvdXQvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9vdXQnXSwgJy9tb2NrLWNoZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0veGNvZGVidWlsZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0X2J1aWxkX3BhdGgob3B0aW9ucywg
WycvbW9jay1jaGVja291dC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3hjb2RlYnVpbGQvUmVsZWFz
ZScsICcvbW9jay1jaGVja291dC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL291dC9SZWxlYXNlJ10s
ICcvbW9jay1jaGVja291dC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3hjb2RlYnVpbGQvUmVsZWFz
ZScpCiAKICAgICBkZWYgdGVzdF9kcml2ZXJfbmFtZV9vcHRpb24oc2VsZik6CiAgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShzZWxmLm1ha2VfcG9ydCgpLl9wYXRoX3RvX2RyaXZlcigpLmVuZHN3aXRo
KCdEdW1wUmVuZGVyVHJlZScpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV93aW4ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dpbi5weQppbmRleCA1MTYxMTI0MWM1NzZkMjE0
NTVjZDdlMGJlOTFlNWJlOGZiOGJkNDAwLi43ZDAzMzdhY2M0Zjk0YTBlYTEwNTBjNmY2YmY2YTA5
MWRmZTU4ZGYyIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Nocm9taXVtX3dpbi5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dpbi5weQpAQCAtMTQ5LDE4ICsxNDksMTYgQEAgY2xhc3Mg
Q2hyb21pdW1XaW5Qb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgICAgIHJldHVybiBz
ZWxmLl9saWdodHRwZF9wYXRoKCdwaHA1JywgJ3BocC1jZ2kuZXhlJykKIAogICAgIGRlZiBfcGF0
aF90b19kcml2ZXIoc2VsZiwgY29uZmlndXJhdGlvbj1Ob25lKToKLSAgICAgICAgaWYgbm90IGNv
bmZpZ3VyYXRpb246Ci0gICAgICAgICAgICBjb25maWd1cmF0aW9uID0gc2VsZi5nZXRfb3B0aW9u
KCdjb25maWd1cmF0aW9uJykKICAgICAgICAgYmluYXJ5X25hbWUgPSAnJXMuZXhlJyAlIHNlbGYu
ZHJpdmVyX25hbWUoKQotICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChjb25maWd1cmF0
aW9uLCBiaW5hcnlfbmFtZSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGhfd2l0aF9j
b25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24sIGJpbmFyeV9uYW1lKQogCiAgICAgZGVmIF9wYXRo
X3RvX2hlbHBlcihzZWxmKToKICAgICAgICAgYmluYXJ5X25hbWUgPSAnTGF5b3V0VGVzdEhlbHBl
ci5leGUnCi0gICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKHNlbGYuZ2V0X29wdGlvbign
Y29uZmlndXJhdGlvbicpLCBiaW5hcnlfbmFtZSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxk
X3BhdGgoYmluYXJ5X25hbWUpCiAKICAgICBkZWYgX3BhdGhfdG9faW1hZ2VfZGlmZihzZWxmKToK
ICAgICAgICAgYmluYXJ5X25hbWUgPSAnSW1hZ2VEaWZmLmV4ZScKLSAgICAgICAgcmV0dXJuIHNl
bGYuX2J1aWxkX3BhdGgoc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJyksIGJpbmFyeV9u
YW1lKQorICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChiaW5hcnlfbmFtZSkKIAogICAg
IGRlZiBfcGF0aF90b193ZGlmZihzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYucGF0aF9mcm9t
X2Nocm9taXVtX2Jhc2UoJ3RoaXJkX3BhcnR5JywgJ2N5Z3dpbicsICdiaW4nLCAnd2RpZmYuZXhl
JykKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
Y2hyb21pdW1fd2luX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9jaHJvbWl1bV93aW5fdW5pdHRlc3QucHkKaW5kZXggNjA3NzE5MjQxYWMwODhl
NmVhNmI5MjdjNTZlNGYyYzFmNTA0NGYxNC4uMjUzZmYwZDRjNDA2ZTU3YzhlZjcwY2Q1MzQyZTBi
MTJjMzlmZmI4ZiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9jaHJvbWl1bV93aW5fdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV93aW5fdW5pdHRlc3QucHkKQEAgLTEwMCwx
OSArMTAwLDE5IEBAIGNsYXNzIENocm9taXVtV2luVGVzdChjaHJvbWl1bV9wb3J0X3Rlc3RjYXNl
LkNocm9taXVtUG9ydFRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9idWlsZF9wYXRoKHNlbGYpOgog
ICAgICAgICAjIFRlc3QgdGhhdCBvcHRpb25hbCBwYXRocyBhcmUgdXNlZCByZWdhcmRsZXNzIG9m
IHdoZXRoZXIgdGhleSBleGlzdC4KICAgICAgICAgb3B0aW9ucyA9IE1vY2tPcHRpb25zKGNvbmZp
Z3VyYXRpb249J1JlbGVhc2UnLCBidWlsZF9kaXJlY3Rvcnk9Jy9mb28nKQotICAgICAgICBzZWxm
LmFzc2VydF9idWlsZF9wYXRoKG9wdGlvbnMsIFsnL21vY2stY2hlY2tvdXQvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9vdXQnXSwgJy9mb28nKQorICAgICAgICBzZWxmLmFzc2VydF9idWlsZF9wYXRo
KG9wdGlvbnMsIFsnL21vY2stY2hlY2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9vdXQvUmVs
ZWFzZSddLCAnL2ZvbycpCiAKICAgICAgICAgIyBUZXN0IHRoYXQgb3B0aW9uYWwgcmVsYXRpdmUg
cGF0aHMgYXJlIHJldHVybmVkIHVubW9kaWZpZWQuCiAgICAgICAgIG9wdGlvbnMgPSBNb2NrT3B0
aW9ucyhjb25maWd1cmF0aW9uPSdSZWxlYXNlJywgYnVpbGRfZGlyZWN0b3J5PSdmb28nKQotICAg
ICAgICBzZWxmLmFzc2VydF9idWlsZF9wYXRoKG9wdGlvbnMsIFsnL21vY2stY2hlY2tvdXQvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9vdXQnXSwgJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2J1
aWxkX3BhdGgob3B0aW9ucywgWycvbW9jay1jaGVja291dC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L291dC9SZWxlYXNlJ10sICdmb28nKQogCiAgICAgICAgICMgVGVzdCB0aGF0IHdlIGxvb2sgaW4g
YSBjaHJvbWl1bSBkaXJlY3RvcnkgYmVmb3JlIHRoZSB3ZWJraXQgZGlyZWN0b3J5LgogICAgICAg
ICBvcHRpb25zID0gTW9ja09wdGlvbnMoY29uZmlndXJhdGlvbj0nUmVsZWFzZScsIGJ1aWxkX2Rp
cmVjdG9yeT1Ob25lKQotICAgICAgICBzZWxmLmFzc2VydF9idWlsZF9wYXRoKG9wdGlvbnMsIFsn
L21vY2stY2hlY2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9vdXQnLCAnL21vY2stY2hlY2tv
dXQvb3V0J10sICcvbW9jay1jaGVja291dC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL291dCcpCisg
ICAgICAgIHNlbGYuYXNzZXJ0X2J1aWxkX3BhdGgob3B0aW9ucywgWycvbW9jay1jaGVja291dC9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL291dC9SZWxlYXNlJywgJy9tb2NrLWNoZWNrb3V0L291dC9S
ZWxlYXNlJ10sICcvbW9jay1jaGVja291dC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL291dC9SZWxl
YXNlJykKIAogICAgICAgICAjIFRlc3QgdGhhdCB3ZSBwcmVmZXIgdGhlIGxlZ2FjeSBkaXIgb3Zl
ciB0aGUgbmV3IGRpci4KICAgICAgICAgb3B0aW9ucyA9IE1vY2tPcHRpb25zKGNvbmZpZ3VyYXRp
b249J1JlbGVhc2UnLCBidWlsZF9kaXJlY3Rvcnk9Tm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRf
YnVpbGRfcGF0aChvcHRpb25zLCBbJy9tb2NrLWNoZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vYnVpbGQnLCAnL21vY2stY2hlY2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9vdXQnXSwg
Jy9tb2NrLWNoZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vYnVpbGQnKQorICAgICAgICBz
ZWxmLmFzc2VydF9idWlsZF9wYXRoKG9wdGlvbnMsIFsnL21vY2stY2hlY2tvdXQvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9idWlsZC9SZWxlYXNlJywgJy9tb2NrLWNoZWNrb3V0L1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vb3V0J10sICcvbW9jay1jaGVja291dC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L2J1aWxkL1JlbGVhc2UnKQogCiAgICAgZGVmIHRlc3Rfb3BlcmF0aW5nX3N5c3RlbShzZWxmKToK
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnd2luJywgc2VsZi5tYWtlX3BvcnQoKS5vcGVyYXRp
bmdfc3lzdGVtKCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154145</attachid>
            <date>2012-07-24 14:42:57 -0700</date>
            <delta_ts>2012-07-24 14:43:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91890-20120724144248.patch</filename>
            <type>text/plain</type>
            <size>24914</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNTA3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2M3YmQ0MjIzNTQ4OGQxNjk4MWE4MDhmOGYxYTY4YmNl
Y2Q5ODMwNC4uMDAwNTkyYWYzODIyNDk0ZjhiNGFlNDFhODJmZDk5OThiY2M4ZjVmMiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUz
IEBACisyMDEyLTA3LTI0ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIG5yd3Q6IG5ldmVyIGZpbmRzIGJpbmFyaWVzIGluIHRoZSAnb3V0JyBkaXIgb24gY2hy
b21pdW0gd2luCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MTg5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEF0dGVtcHQgdG8gZml4IHRoaXMgYnVnIHlldCBhZ2FpbjsgaXQgdHVybnMgb3V0IHRoYXQgLS1y
b290IGFuZAorICAgICAgICAtLWJ1aWxkLWRpcmVjdG9yeSBkb24ndCBoYXZlIHRoZSBzYW1lIG1l
YW5pbmcgKC0tcm9vdCBzaG91bGQKKyAgICAgICAgaW5jbHVkZSB0aGUgY29uZmlndXJhdGlvbiwg
LS1idWlsZC1kaXJlY3Rvcnkgc2hvdWxkIG5vdCkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHk6CisgICAgICAgIChQb3J0Ll9idWlsZF9wYXRo
KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVt
LnB5OgorICAgICAgICAoQ2hyb21pdW1Qb3J0Ll9zdGF0aWNfYnVpbGRfcGF0aCk6CisgICAgICAg
IChDaHJvbWl1bVBvcnQuZGVmYXVsdF9yZXN1bHRzX2RpcmVjdG9yeSk6CisgICAgICAgIChDaHJv
bWl1bVBvcnQuX2J1aWxkX3BhdGgpOgorICAgICAgICAoQ2hyb21pdW1Qb3J0KToKKyAgICAgICAg
KENocm9taXVtUG9ydC5fYnVpbGRfcGF0aF93aXRoX2NvbmZpZ3VyYXRpb24pOgorICAgICAgICAo
Q2hyb21pdW1Qb3J0Ll9idWlsZF9wYXRoX3dpdGhfY29uZmlndXJhdGlvbi5kb2VzKToKKyAgICAg
ICAgKENocm9taXVtUG9ydC5fcGF0aF90b19pbWFnZV9kaWZmKToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQucHk6CisgICAgICAg
IChDaHJvbWl1bUFuZHJvaWRQb3J0Ll9idWlsZF9wYXRoKToKKyAgICAgICAgKENocm9taXVtQW5k
cm9pZFBvcnQpOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkUG9ydC5fYnVpbGRfcGF0aF93aXRo
X2NvbmZpZ3VyYXRpb24pOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkUG9ydC5fcGF0aF90b19k
cml2ZXIpOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkUG9ydC5fcGF0aF90b19mb3J3YXJkZXIp
OgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkUG9ydC5fcHVzaF9leGVjdXRhYmxlKToKKyAgICAg
ICAgKENocm9taXVtQW5kcm9pZFBvcnQuX3B1c2hfZm9udHMpOgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbGludXgucHk6CisgICAgICAgIChD
aHJvbWl1bUxpbnV4UG9ydC5fZGV0ZXJtaW5lX2RyaXZlcl9wYXRoX3N0YXRpY2FsbHkpOgorICAg
ICAgICAoQ2hyb21pdW1MaW51eFBvcnQuX21vZHVsZXNfdG9fc2VhcmNoX2Zvcl9zeW1ib2xzKToK
KyAgICAgICAgKENocm9taXVtTGludXhQb3J0Ll9wYXRoX3RvX2RyaXZlcik6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9saW51eF91bml0dGVz
dC5weToKKyAgICAgICAgKENocm9taXVtTGludXhQb3J0VGVzdC50ZXN0X2J1aWxkX3BhdGgpOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbWFj
LnB5OgorICAgICAgICAoQ2hyb21pdW1NYWNQb3J0Ll9tb2R1bGVzX3RvX3NlYXJjaF9mb3Jfc3lt
Ym9scyk6CisgICAgICAgIChDaHJvbWl1bU1hY1BvcnQuX3BhdGhfdG9fZHJpdmVyKToKKyAgICAg
ICAgKENocm9taXVtTWFjUG9ydC5fcGF0aF90b19oZWxwZXIpOgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbWFjX3VuaXR0ZXN0LnB5OgorICAg
ICAgICAoQ2hyb21pdW1NYWNQb3J0VGVzdC50ZXN0X2J1aWxkX3BhdGgpOgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fd2luLnB5OgorICAgICAg
ICAoQ2hyb21pdW1XaW5Qb3J0Ll9wYXRoX3RvX2RyaXZlcik6CisgICAgICAgIChDaHJvbWl1bVdp
blBvcnQuX3BhdGhfdG9faGVscGVyKToKKyAgICAgICAgKENocm9taXVtV2luUG9ydC5fcGF0aF90
b19pbWFnZV9kaWZmKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Nocm9taXVtX3dpbl91bml0dGVzdC5weToKKyAgICAgICAgKENocm9taXVtV2luVGVzdC50
ZXN0X2J1aWxkX3BhdGgpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3J1bl93ZWJraXRfdGVzdHMucHk6CisgICAgICAgIChwYXJzZV9hcmdzKToKKwogMjAxMi0wNy0y
NCAgUGV0ZXIgQmV2ZXJsb28gIDxwZXRlckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQW5kcm9p
ZC1jaHJvbWl1bSBsYXlvdXQgdGVzdHMgZmFpbGluZyB3aXRoIEdQVSByZWxhdGVkIGNyYXNoCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2Uu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKaW5k
ZXggZDc5MTQzMTg5ZDA0MGEyZjQzNmEwODk1ZDkyMzE5ZDkwZTQ2ODJhOS4uZTAxZTJiNWFhMGJl
MDQxMWQ3MWZjOTU3MzMwYzYxNWNlOGQ0OTZkOCAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQpAQCAtMTEyMiwxNCArMTEyMiwxNyBAQCBj
bGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLmpvaW4o
c2VsZi5sYXlvdXRfdGVzdHNfZGlyKCksICdodHRwJywgJ2NvbmYnLCBjb25maWdfZmlsZV9uYW1l
KQogCiAgICAgZGVmIF9idWlsZF9wYXRoKHNlbGYsICpjb21wcyk6Ci0gICAgICAgICMgLS1yb290
IGlzIHVzZWQgZm9yIHJ1bm5pbmcgd2l0aCBhIHByZS1idWlsdCByb290IChsaWtlIGZyb20gYSBu
aWdodGx5IHppcCkuCi0gICAgICAgIGJ1aWxkX2RpcmVjdG9yeSA9IHNlbGYuZ2V0X29wdGlvbign
cm9vdCcpIG9yIHNlbGYuZ2V0X29wdGlvbignYnVpbGRfZGlyZWN0b3J5JykKLSAgICAgICAgaWYg
bm90IGJ1aWxkX2RpcmVjdG9yeToKLSAgICAgICAgICAgIGJ1aWxkX2RpcmVjdG9yeSA9IHNlbGYu
X2NvbmZpZy5idWlsZF9kaXJlY3Rvcnkoc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJykp
Ci0gICAgICAgICAgICAjIFNldCAtLWJ1aWxkLWRpcmVjdG9yeSBoZXJlIFNpbmNlIHRoaXMgbW9k
aWZpZXMgdGhlIG9wdGlvbnMgb2JqZWN0IHVzZWQgYnkgdGhlIHdvcmtlciBzdWJwcm9jZXNzZXMs
Ci0gICAgICAgICAgICAjIGl0IGF2b2lkcyB0aGUgc2xvdyBjYWxsIG91dCB0byBidWlsZF9kaXJl
Y3RvcnkgaW4gZWFjaCBzdWJwcm9jZXNzLgotICAgICAgICAgICAgc2VsZi5zZXRfb3B0aW9uX2Rl
ZmF1bHQoJ2J1aWxkX2RpcmVjdG9yeScsIGJ1aWxkX2RpcmVjdG9yeSkKLSAgICAgICAgcmV0dXJu
IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLl9maWxlc3lzdGVtLmFic3BhdGgoYnVpbGRfZGly
ZWN0b3J5KSwgKmNvbXBzKQorICAgICAgICByb290X2RpcmVjdG9yeSA9IHNlbGYuZ2V0X29wdGlv
bigncm9vdCcpCisgICAgICAgIGlmIG5vdCByb290X2RpcmVjdG9yeToKKyAgICAgICAgICAgIGJ1
aWxkX2RpcmVjdG9yeSA9IHNlbGYuZ2V0X29wdGlvbignYnVpbGRfZGlyZWN0b3J5JykKKyAgICAg
ICAgICAgIGlmIGJ1aWxkX2RpcmVjdG9yeToKKyAgICAgICAgICAgICAgICByb290X2RpcmVjdG9y
eSA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24n
KSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcm9vdF9kaXJlY3RvcnkgPSBz
ZWxmLl9jb25maWcuYnVpbGRfZGlyZWN0b3J5KHNlbGYuZ2V0X29wdGlvbignY29uZmlndXJhdGlv
bicpKQorICAgICAgICAgICAgIyBTZXQgLS1yb290IHNvIHRoYXQgd2UgY2FuIHBhc3MgdGhpcyB0
byBzdWJwcm9jZXNzZXMgYW5kIGF2b2lkIG1ha2luZyB0aGUKKyAgICAgICAgICAgICMgc2xvdyBj
YWxsIHRvIGNvbmZpZy5idWlsZF9kaXJlY3RvcnkoKSBOIHRpbWVzIGluIGVhY2ggd29ya2VyLgor
ICAgICAgICAgICAgc2VsZi5zZXRfb3B0aW9uX2RlZmF1bHQoJ3Jvb3QnLCByb290X2RpcmVjdG9y
eSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLl9maWxlc3lzdGVt
LmFic3BhdGgocm9vdF9kaXJlY3RvcnkpLCAqY29tcHMpCiAKICAgICBkZWYgX3BhdGhfdG9fZHJp
dmVyKHNlbGYsIGNvbmZpZ3VyYXRpb249Tm9uZSk6CiAgICAgICAgICIiIlJldHVybnMgdGhlIGZ1
bGwgcGF0aCB0byB0aGUgdGVzdCBkcml2ZXIgKER1bXBSZW5kZXJUcmVlKS4iIiIKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5Cmlu
ZGV4IDk3MjlmOTRjMDUwYWU4NWRkYTkwYWI4YTRjZDFiODFkMjA1ZjgyZjUuLmJmNTQxMmRiMjg4
YmZlNGQ1MDY4ZTY4Y2JmMzg1ZWE4NzhiOGMxYjggMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQpAQCAtNzgsMTcgKzc4LDE3
IEBAIGNsYXNzIENocm9taXVtUG9ydChXZWJLaXRQb3J0KToKICAgICBERUZBVUxUX0JVSUxEX0RJ
UkVDVE9SSUVTID0gKCdvdXQnLCkKIAogICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBfc3RhdGlj
X2J1aWxkX3BhdGgoY2xzLCBmaWxlc3lzdGVtLCBidWlsZF9kaXJlY3RvcnksIGNocm9taXVtX2Jh
c2UsIHdlYmtpdF9iYXNlLCAqY29tcHMpOgorICAgIGRlZiBfc3RhdGljX2J1aWxkX3BhdGgoY2xz
LCBmaWxlc3lzdGVtLCBidWlsZF9kaXJlY3RvcnksIGNocm9taXVtX2Jhc2UsIHdlYmtpdF9iYXNl
LCBjb25maWd1cmF0aW9uLCBjb21wcyk6CiAgICAgICAgIGlmIGJ1aWxkX2RpcmVjdG9yeToKLSAg
ICAgICAgICAgIHJldHVybiBmaWxlc3lzdGVtLmpvaW4oYnVpbGRfZGlyZWN0b3J5LCAqY29tcHMp
CisgICAgICAgICAgICByZXR1cm4gZmlsZXN5c3RlbS5qb2luKGJ1aWxkX2RpcmVjdG9yeSwgY29u
ZmlndXJhdGlvbiwgKmNvbXBzKQogCiAgICAgICAgIGZvciBkaXJlY3RvcnkgaW4gY2xzLkRFRkFV
TFRfQlVJTERfRElSRUNUT1JJRVM6Ci0gICAgICAgICAgICBiYXNlX2RpciA9IGZpbGVzeXN0ZW0u
am9pbihjaHJvbWl1bV9iYXNlLCBkaXJlY3RvcnkpCisgICAgICAgICAgICBiYXNlX2RpciA9IGZp
bGVzeXN0ZW0uam9pbihjaHJvbWl1bV9iYXNlLCBkaXJlY3RvcnksIGNvbmZpZ3VyYXRpb24pCiAg
ICAgICAgICAgICBpZiBmaWxlc3lzdGVtLmV4aXN0cyhiYXNlX2Rpcik6CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZpbGVzeXN0ZW0uam9pbihiYXNlX2RpciwgKmNvbXBzKQogCiAgICAgICAgIGZv
ciBkaXJlY3RvcnkgaW4gY2xzLkRFRkFVTFRfQlVJTERfRElSRUNUT1JJRVM6Ci0gICAgICAgICAg
ICBiYXNlX2RpciA9IGZpbGVzeXN0ZW0uam9pbih3ZWJraXRfYmFzZSwgZGlyZWN0b3J5KQorICAg
ICAgICAgICAgYmFzZV9kaXIgPSBmaWxlc3lzdGVtLmpvaW4od2Via2l0X2Jhc2UsIGRpcmVjdG9y
eSwgY29uZmlndXJhdGlvbikKICAgICAgICAgICAgIGlmIGZpbGVzeXN0ZW0uZXhpc3RzKGJhc2Vf
ZGlyKToKICAgICAgICAgICAgICAgICByZXR1cm4gZmlsZXN5c3RlbS5qb2luKGJhc2VfZGlyLCAq
Y29tcHMpCiAKQEAgLTI2Myw3ICsyNjMsNyBAQCBjbGFzcyBDaHJvbWl1bVBvcnQoV2ViS2l0UG9y
dCk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJldHVybiBzZWxmLnBhdGhfZnJvbV9jaHJv
bWl1bV9iYXNlKCd3ZWJraXQnLCBzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKSwgJ2xh
eW91dC10ZXN0LXJlc3VsdHMnKQogICAgICAgICBleGNlcHQgQXNzZXJ0aW9uRXJyb3I6Ci0gICAg
ICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3Vy
YXRpb24nKSwgJ2xheW91dC10ZXN0LXJlc3VsdHMnKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYu
X2J1aWxkX3BhdGgoJ2xheW91dC10ZXN0LXJlc3VsdHMnKQogCiAgICAgZGVmIF9taXNzaW5nX3N5
bWJvbF90b19za2lwcGVkX3Rlc3RzKHNlbGYpOgogICAgICAgICAjIEZJWE1FOiBTaG91bGQgV2Vi
S2l0UG9ydCBoYXZlIHRoZXNlIGRlZmluaXRpb25zIGFsc28/CkBAIC0zODYsMTEgKzM4NiwxOSBA
QCBjbGFzcyBDaHJvbWl1bVBvcnQoV2ViS2l0UG9ydCk6CiAgICAgIwogCiAgICAgZGVmIF9idWls
ZF9wYXRoKHNlbGYsICpjb21wcyk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9zdGF0aWNfYnVpbGRf
cGF0aChzZWxmLl9maWxlc3lzdGVtLCBzZWxmLmdldF9vcHRpb24oJ2J1aWxkX2RpcmVjdG9yeScp
LCBzZWxmLnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNlKCksIHNlbGYucGF0aF9mcm9tX3dlYmtpdF9i
YXNlKCksICpjb21wcykKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGhfd2l0aF9jb25m
aWd1cmF0aW9uKE5vbmUsICpjb21wcykKKworICAgIGRlZiBfYnVpbGRfcGF0aF93aXRoX2NvbmZp
Z3VyYXRpb24oc2VsZiwgY29uZmlndXJhdGlvbiwgKmNvbXBzKToKKyAgICAgICAgIyBOb3RlIHRo
YXQgd2UgZG9uJ3QgaW1wbGVtZW50IC0tcm9vdCBvciBkbyB0aGUgb3B0aW9uIGNhY2hpbmcgdGhh
dCB0aGUKKyAgICAgICAgIyBiYXNlIGNsYXNzIGRvZXMsIGJlY2F1c2UgY2hyb21pdW0gZG9lc24n
dCB1c2UgJ3dlYmtpdC1idWlsZC1kaXJlY3RvcnknIGFuZAorICAgICAgICAjIGhlbmNlIGZpbmRp
bmcgdGhlIHJpZ2h0IGRpcmVjdG9yeSBpcyByZWxhdGl2ZWx5IGZhc3QuCisgICAgICAgIGNvbmZp
Z3VyYXRpb24gPSBjb25maWd1cmF0aW9uIG9yIHNlbGYuZ2V0X29wdGlvbignY29uZmlndXJhdGlv
bicpCisgICAgICAgIHJldHVybiBzZWxmLl9zdGF0aWNfYnVpbGRfcGF0aChzZWxmLl9maWxlc3lz
dGVtLCBzZWxmLmdldF9vcHRpb24oJ2J1aWxkX2RpcmVjdG9yeScpLAorICAgICAgICAgICAgc2Vs
Zi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgpLCBzZWxmLnBhdGhfZnJvbV93ZWJraXRfYmFzZSgp
LCBjb25maWd1cmF0aW9uLCBjb21wcykKIAogICAgIGRlZiBfcGF0aF90b19pbWFnZV9kaWZmKHNl
bGYpOgogICAgICAgICBiaW5hcnlfbmFtZSA9ICdJbWFnZURpZmYnCi0gICAgICAgIHJldHVybiBz
ZWxmLl9idWlsZF9wYXRoKHNlbGYuZ2V0X29wdGlvbignY29uZmlndXJhdGlvbicpLCBiaW5hcnlf
bmFtZSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoYmluYXJ5X25hbWUpCiAKICAg
ICBkZWYgX2NoZWNrX2RyaXZlcl9idWlsZF91cF90b19kYXRlKHNlbGYsIGNvbmZpZ3VyYXRpb24p
OgogICAgICAgICBpZiBjb25maWd1cmF0aW9uIGluICgnRGVidWcnLCAnUmVsZWFzZScpOgpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1
bV9hbmRyb2lkLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9j
aHJvbWl1bV9hbmRyb2lkLnB5CmluZGV4IDViNDhmZjBmNGI4YmNiM2MyNzM5NTUyOTU0NmJmMWQ0
YWQxN2QxZWQuLmExNjcxYWNhNjZhNDhkMmUzMGI0MmM0NWFmYzYxYzk2MGUxM2ZiZDUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1f
YW5kcm9pZC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Nocm9taXVtX2FuZHJvaWQucHkKQEAgLTI4MCw3ICsyODAsMTAgQEAgY2xhc3MgQ2hyb21pdW1B
bmRyb2lkUG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogICAgICMgT3ZlcnJpZGRlbiBwcml2
YXRlIGZ1bmN0aW9ucy4KIAogICAgIGRlZiBfYnVpbGRfcGF0aChzZWxmLCAqY29tcHMpOgotICAg
ICAgICByZXR1cm4gc2VsZi5faG9zdF9wb3J0Ll9idWlsZF9wYXRoKCpjb21wcykKKyAgICAgICAg
c2VsZi5fYnVpbGRfcGF0aChOb25lLCAqY29tcHMpCisKKyAgICBkZWYgX2J1aWxkX3BhdGhfd2l0
aF9jb25maWd1cmF0aW9uKHNlbGYsIGNvbmZpZ3VyYXRpb24sICpjb21wcyk6CisgICAgICAgIHJl
dHVybiBzZWxmLl9ob3N0X3BvcnQuX2J1aWxkX3BhdGhfd2l0aF9jb25maWd1cmF0aW9uKGNvbmZp
Z3VyYXRpb24sICpjb21wcykKIAogICAgIGRlZiBfcGF0aF90b19hcGFjaGUoc2VsZik6CiAgICAg
ICAgIHJldHVybiBzZWxmLl9ob3N0X3BvcnQuX3BhdGhfdG9fYXBhY2hlKCkKQEAgLTI4OSwxNSAr
MjkyLDEzIEBAIGNsYXNzIENocm9taXVtQW5kcm9pZFBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0
KToKICAgICAgICAgcmV0dXJuIHNlbGYuX2hvc3RfcG9ydC5fcGF0aF90b19hcGFjaGVfY29uZmln
X2ZpbGUoKQogCiAgICAgZGVmIF9wYXRoX3RvX2RyaXZlcihzZWxmLCBjb25maWd1cmF0aW9uPU5v
bmUpOgotICAgICAgICBpZiBub3QgY29uZmlndXJhdGlvbjoKLSAgICAgICAgICAgIGNvbmZpZ3Vy
YXRpb24gPSBzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKQotICAgICAgICByZXR1cm4g
c2VsZi5fYnVpbGRfcGF0aChjb25maWd1cmF0aW9uLCAnRHVtcFJlbmRlclRyZWVfYXBrL0R1bXBS
ZW5kZXJUcmVlLWRlYnVnLmFwaycpCisgICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoX3dp
dGhfY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uLCAnRHVtcFJlbmRlclRyZWVfYXBrL0R1bXBS
ZW5kZXJUcmVlLWRlYnVnLmFwaycpCiAKICAgICBkZWYgX3BhdGhfdG9faGVscGVyKHNlbGYpOgog
ICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgZGVmIF9wYXRoX3RvX2ZvcndhcmRlcihzZWxmKToK
LSAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1
cmF0aW9uJyksICdmb3J3YXJkZXInKQorICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aCgn
Zm9yd2FyZGVyJykKIAogICAgIGRlZiBfcGF0aF90b19pbWFnZV9kaWZmKHNlbGYpOgogICAgICAg
ICByZXR1cm4gc2VsZi5faG9zdF9wb3J0Ll9wYXRoX3RvX2ltYWdlX2RpZmYoKQpAQCAtMzQ1LDE0
ICszNDYsMTAgQEAgY2xhc3MgQ2hyb21pdW1BbmRyb2lkUG9ydChjaHJvbWl1bS5DaHJvbWl1bVBv
cnQpOgogICAgICAgICAgICAgaW5zdGFsbF9yZXN1bHQgPSBzZWxmLl9ydW5fYWRiX2NvbW1hbmQo
WydpbnN0YWxsJywgZHJ0X2hvc3RfcGF0aF0pCiAgICAgICAgICAgICBpZiBpbnN0YWxsX3Jlc3Vs
dC5maW5kKCdTdWNjZXNzJykgPT0gLTE6CiAgICAgICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9u
RXJyb3IoJ0ZhaWxlZCB0byBpbnN0YWxsICVzIG9udG8gZGV2aWNlOiAlcycgJSAoZHJ0X2hvc3Rf
cGF0aCwgaW5zdGFsbF9yZXN1bHQpKQotICAgICAgICAgICAgc2VsZi5fcHVzaF90b19kZXZpY2Uo
c2VsZi5fYnVpbGRfcGF0aChzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKSwgJ0R1bXBS
ZW5kZXJUcmVlLnBhaycpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVWSUNF
X0RSVF9ESVIgKyAnRHVtcFJlbmRlclRyZWUucGFrJykKLSAgICAgICAgICAgIHNlbGYuX3B1c2hf
dG9fZGV2aWNlKHNlbGYuX2J1aWxkX3BhdGgoc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9u
JyksICdEdW1wUmVuZGVyVHJlZV9yZXNvdXJjZXMnKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERFVklDRV9EUlRfRElSICsgJ0R1bXBSZW5kZXJUcmVlX3Jlc291cmNlcycpCi0g
ICAgICAgICAgICBzZWxmLl9wdXNoX3RvX2RldmljZShzZWxmLl9idWlsZF9wYXRoKHNlbGYuZ2V0
X29wdGlvbignY29uZmlndXJhdGlvbicpLCAnYW5kcm9pZF9tYWluX2ZvbnRzLnhtbCcpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVWSUNFX0RSVF9ESVIgKyAnYW5kcm9pZF9t
YWluX2ZvbnRzLnhtbCcpCi0gICAgICAgICAgICBzZWxmLl9wdXNoX3RvX2RldmljZShzZWxmLl9i
dWlsZF9wYXRoKHNlbGYuZ2V0X29wdGlvbignY29uZmlndXJhdGlvbicpLCAnYW5kcm9pZF9mYWxs
YmFja19mb250cy54bWwnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERFVklD
RV9EUlRfRElSICsgJ2FuZHJvaWRfZmFsbGJhY2tfZm9udHMueG1sJykKKyAgICAgICAgICAgIHNl
bGYuX3B1c2hfdG9fZGV2aWNlKHNlbGYuX2J1aWxkX3BhdGgoJ0R1bXBSZW5kZXJUcmVlLnBhaycp
LCBERVZJQ0VfRFJUX0RJUiArICdEdW1wUmVuZGVyVHJlZS5wYWsnKQorICAgICAgICAgICAgc2Vs
Zi5fcHVzaF90b19kZXZpY2Uoc2VsZi5fYnVpbGRfcGF0aCgnRHVtcFJlbmRlclRyZWVfcmVzb3Vy
Y2VzJyksIERFVklDRV9EUlRfRElSICsgJ0R1bXBSZW5kZXJUcmVlX3Jlc291cmNlcycpCisgICAg
ICAgICAgICBzZWxmLl9wdXNoX3RvX2RldmljZShzZWxmLl9idWlsZF9wYXRoKCdhbmRyb2lkX21h
aW5fZm9udHMueG1sJyksIERFVklDRV9EUlRfRElSICsgJ2FuZHJvaWRfbWFpbl9mb250cy54bWwn
KQorICAgICAgICAgICAgc2VsZi5fcHVzaF90b19kZXZpY2Uoc2VsZi5fYnVpbGRfcGF0aCgnYW5k
cm9pZF9mYWxsYmFja19mb250cy54bWwnKSwgREVWSUNFX0RSVF9ESVIgKyAnYW5kcm9pZF9mYWxs
YmFja19mb250cy54bWwnKQogICAgICAgICAgICAgIyBWZXJzaW9uIGNvbnRyb2wgb2YgdGVzdCBy
ZXNvdXJjZXMgaXMgZGVwZW5kZW50IG9uIGV4ZWN1dGFibGVzLAogICAgICAgICAgICAgIyBiZWNh
dXNlIHdlIHdpbGwgYWx3YXlzIHJlYnVpbGQgZXhlY3V0YWJsZXMgd2hlbiByZXNvdXJjZXMgYXJl
CiAgICAgICAgICAgICAjIHVwZGF0ZWQuCkBAIC0zNjIsNyArMzU5LDcgQEAgY2xhc3MgQ2hyb21p
dW1BbmRyb2lkUG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogICAgIGRlZiBfcHVzaF9mb250
cyhzZWxmKToKICAgICAgICAgaWYgbm90IHNlbGYuX2NoZWNrX3ZlcnNpb24oREVWSUNFX0ZPTlRT
X0RJUiwgRk9OVF9GSUxFU19WRVJTSU9OKToKICAgICAgICAgICAgIF9sb2cuZGVidWcoJ1B1c2hp
bmcgZm9udHMnKQotICAgICAgICAgICAgcGF0aF90b19haGVtX2ZvbnQgPSBzZWxmLl9idWlsZF9w
YXRoKHNlbGYuZ2V0X29wdGlvbignY29uZmlndXJhdGlvbicpLCAnQUhFTV9fX18uVFRGJykKKyAg
ICAgICAgICAgIHBhdGhfdG9fYWhlbV9mb250ID0gc2VsZi5fYnVpbGRfcGF0aCgnQUhFTV9fX18u
VFRGJykKICAgICAgICAgICAgIHNlbGYuX3B1c2hfdG9fZGV2aWNlKHBhdGhfdG9fYWhlbV9mb250
LCBERVZJQ0VfRk9OVFNfRElSICsgJ0FIRU1fX19fLlRURicpCiAgICAgICAgICAgICBmb3IgKGhv
c3RfZGlyLCBmb250X2ZpbGUpIGluIEhPU1RfRk9OVF9GSUxFUzoKICAgICAgICAgICAgICAgICBz
ZWxmLl9wdXNoX3RvX2RldmljZShob3N0X2RpciArIGZvbnRfZmlsZSwgREVWSUNFX0ZPTlRTX0RJ
UiArIGZvbnRfZmlsZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvY2hyb21pdW1fbGludXgucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2xpbnV4LnB5CmluZGV4IGU1NDA3OGQyYjcxODc4N2Fi
NGZlNzg1YzFiZmU5YWEwOGQzNTM2NWIuLmQ1YzIyMzViZjMyOGNiNzI4ODRlZmM0NzhiMWI3ZWQ4
ODJkMzcwMGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvY2hyb21pdW1fbGludXgucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9saW51eC5weQpAQCAtNjksNyArNjksNyBAQCBjbGFzcyBD
aHJvbWl1bUxpbnV4UG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogICAgICAgICAgICAgY29u
ZmlndXJhdGlvbiA9IG9wdGlvbnMuY29uZmlndXJhdGlvbgogICAgICAgICBlbHNlOgogICAgICAg
ICAgICAgY29uZmlndXJhdGlvbiA9IGNvbmZpZ19vYmplY3QuZGVmYXVsdF9jb25maWd1cmF0aW9u
KCkKLSAgICAgICAgcmV0dXJuIGNscy5fc3RhdGljX2J1aWxkX3BhdGgoaG9zdC5maWxlc3lzdGVt
LCBidWlsZF9kaXJlY3RvcnksIGNocm9taXVtX2Jhc2UsIHdlYmtpdF9iYXNlLCBjb25maWd1cmF0
aW9uLCAnRHVtcFJlbmRlclRyZWUnKQorICAgICAgICByZXR1cm4gY2xzLl9zdGF0aWNfYnVpbGRf
cGF0aChob3N0LmZpbGVzeXN0ZW0sIGJ1aWxkX2RpcmVjdG9yeSwgY2hyb21pdW1fYmFzZSwgd2Vi
a2l0X2Jhc2UsIGNvbmZpZ3VyYXRpb24sIFsnRHVtcFJlbmRlclRyZWUnXSkKIAogICAgIEBzdGF0
aWNtZXRob2QKICAgICBkZWYgX2RldGVybWluZV9hcmNoaXRlY3R1cmUoZmlsZXN5c3RlbSwgZXhl
Y3V0aXZlLCBkcml2ZXJfcGF0aCk6CkBAIC0xMTEsNyArMTExLDcgQEAgY2xhc3MgQ2hyb21pdW1M
aW51eFBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICAgICAgcmV0dXJuIG1hcChzZWxm
Ll93ZWJraXRfYmFzZWxpbmVfcGF0aCwgcG9ydF9uYW1lcykKIAogICAgIGRlZiBfbW9kdWxlc190
b19zZWFyY2hfZm9yX3N5bWJvbHMoc2VsZik6Ci0gICAgICAgIHJldHVybiBbc2VsZi5fYnVpbGRf
cGF0aChzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKSwgJ2xpYmZmbXBlZ3N1bW8uc28n
KV0KKyAgICAgICAgcmV0dXJuIFtzZWxmLl9idWlsZF9wYXRoKCdsaWJmZm1wZWdzdW1vLnNvJyld
CiAKICAgICBkZWYgY2hlY2tfYnVpbGQoc2VsZiwgbmVlZHNfaHR0cCk6CiAgICAgICAgIHJlc3Vs
dCA9IGNocm9taXVtLkNocm9taXVtUG9ydC5jaGVja19idWlsZChzZWxmLCBuZWVkc19odHRwKQpA
QCAtMTczLDEwICsxNzMsOCBAQCBjbGFzcyBDaHJvbWl1bUxpbnV4UG9ydChjaHJvbWl1bS5DaHJv
bWl1bVBvcnQpOgogICAgICAgICByZXR1cm4gIi91c3IvYmluL3BocC1jZ2kiCiAKICAgICBkZWYg
X3BhdGhfdG9fZHJpdmVyKHNlbGYsIGNvbmZpZ3VyYXRpb249Tm9uZSk6Ci0gICAgICAgIGlmIG5v
dCBjb25maWd1cmF0aW9uOgotICAgICAgICAgICAgY29uZmlndXJhdGlvbiA9IHNlbGYuZ2V0X29w
dGlvbignY29uZmlndXJhdGlvbicpCiAgICAgICAgIGJpbmFyeV9uYW1lID0gc2VsZi5kcml2ZXJf
bmFtZSgpCi0gICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKGNvbmZpZ3VyYXRpb24sIGJp
bmFyeV9uYW1lKQorICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aF93aXRoX2NvbmZpZ3Vy
YXRpb24oY29uZmlndXJhdGlvbiwgYmluYXJ5X25hbWUpCiAKICAgICBkZWYgX3BhdGhfdG9faGVs
cGVyKHNlbGYpOgogICAgICAgICByZXR1cm4gTm9uZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9saW51eF91bml0dGVzdC5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbGludXhf
dW5pdHRlc3QucHkKaW5kZXggOTA5NGQ3NDU4YzU4ZTFkOTljMzg0MzlmOTJlZjY4YzNmZmJiZDE0
Mi4uMTY5YzJmNGY0MzhhNDZiYjI0MTZmY2RmOWFkZjZmNTljNWRmMTQxYSAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9saW51eF91
bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Nocm9taXVtX2xpbnV4X3VuaXR0ZXN0LnB5CkBAIC05MywxOSArOTMsMTkgQEAgY2xhc3MgQ2hy
b21pdW1MaW51eFBvcnRUZXN0KGNocm9taXVtX3BvcnRfdGVzdGNhc2UuQ2hyb21pdW1Qb3J0VGVz
dENhc2UpOgogICAgIGRlZiB0ZXN0X2J1aWxkX3BhdGgoc2VsZik6CiAgICAgICAgICMgVGVzdCB0
aGF0IG9wdGlvbmFsIHBhdGhzIGFyZSB1c2VkIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGV5IGV4
aXN0LgogICAgICAgICBvcHRpb25zID0gTW9ja09wdGlvbnMoY29uZmlndXJhdGlvbj0nUmVsZWFz
ZScsIGJ1aWxkX2RpcmVjdG9yeT0nL2ZvbycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2J1aWxkX3Bh
dGgob3B0aW9ucywgWycvbW9jay1jaGVja291dC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL291dCdd
LCAnL2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2J1aWxkX3BhdGgob3B0aW9ucywgWycvbW9j
ay1jaGVja291dC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL291dC9SZWxlYXNlJ10sICcvZm9vL1Jl
bGVhc2UnKQogCiAgICAgICAgICMgVGVzdCB0aGF0IG9wdGlvbmFsIHJlbGF0aXZlIHBhdGhzIGFy
ZSByZXR1cm5lZCB1bm1vZGlmaWVkLgogICAgICAgICBvcHRpb25zID0gTW9ja09wdGlvbnMoY29u
ZmlndXJhdGlvbj0nUmVsZWFzZScsIGJ1aWxkX2RpcmVjdG9yeT0nZm9vJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfYnVpbGRfcGF0aChvcHRpb25zLCBbJy9tb2NrLWNoZWNrb3V0L1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vb3V0J10sICdmb28nKQorICAgICAgICBzZWxmLmFzc2VydF9idWlsZF9wYXRo
KG9wdGlvbnMsIFsnL21vY2stY2hlY2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9vdXQvUmVs
ZWFzZSddLCAnZm9vL1JlbGVhc2UnKQogCiAgICAgICAgICMgVGVzdCB0aGF0IHdlIGxvb2sgaW4g
YSBjaHJvbWl1bSBkaXJlY3RvcnkgYmVmb3JlIHRoZSB3ZWJraXQgZGlyZWN0b3J5LgogICAgICAg
ICBvcHRpb25zID0gTW9ja09wdGlvbnMoY29uZmlndXJhdGlvbj0nUmVsZWFzZScsIGJ1aWxkX2Rp
cmVjdG9yeT1Ob25lKQotICAgICAgICBzZWxmLmFzc2VydF9idWlsZF9wYXRoKG9wdGlvbnMsIFsn
L21vY2stY2hlY2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9vdXQnLCAnL21vY2stY2hlY2tv
dXQvb3V0J10sICcvbW9jay1jaGVja291dC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL291dCcpCisg
ICAgICAgIHNlbGYuYXNzZXJ0X2J1aWxkX3BhdGgob3B0aW9ucywgWycvbW9jay1jaGVja291dC9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL291dC9SZWxlYXNlJywgJy9tb2NrLWNoZWNrb3V0L291dC9S
ZWxlYXNlJ10sICcvbW9jay1jaGVja291dC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL291dC9SZWxl
YXNlJykKIAogICAgICAgICAjIFRlc3QgdGhhdCB3ZSBwcmVmZXIgdGhlIGxlZ2FjeSBkaXIgb3Zl
ciB0aGUgbmV3IGRpci4KICAgICAgICAgb3B0aW9ucyA9IE1vY2tPcHRpb25zKGNvbmZpZ3VyYXRp
b249J1JlbGVhc2UnLCBidWlsZF9kaXJlY3Rvcnk9Tm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRf
YnVpbGRfcGF0aChvcHRpb25zLCBbJy9tb2NrLWNoZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc2NvbnNidWlsZCcsICcvbW9jay1jaGVja291dC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL291
dCddLCAnL21vY2stY2hlY2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zY29uc2J1aWxkJykK
KyAgICAgICAgc2VsZi5hc3NlcnRfYnVpbGRfcGF0aChvcHRpb25zLCBbJy9tb2NrLWNoZWNrb3V0
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc2NvbnNidWlsZC9SZWxlYXNlJywgJy9tb2NrLWNoZWNr
b3V0L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vb3V0L1JlbGVhc2UnXSwgJy9tb2NrLWNoZWNrb3V0
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc2NvbnNidWlsZC9SZWxlYXNlJykKIAogICAgIGRlZiB0
ZXN0X2RyaXZlcl9uYW1lX29wdGlvbihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNl
bGYubWFrZV9wb3J0KCkuX3BhdGhfdG9fZHJpdmVyKCkuZW5kc3dpdGgoJ0R1bXBSZW5kZXJUcmVl
JykpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Nocm9taXVtX21hYy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvY2hyb21pdW1fbWFjLnB5CmluZGV4IGRmMWFjN2I1ODJkYTQyZjI0NWIzZmYzMjZhODE3YzUw
ZGZlZDAxYmUuLmJhZWEwNjM5YmQzZGZlYjY3Y2JhNGI3MGU5OGI5YzQ3NzU0MjEyMDcgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1f
bWFjLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hy
b21pdW1fbWFjLnB5CkBAIC03OSw3ICs3OSw3IEBAIGNsYXNzIENocm9taXVtTWFjUG9ydChjaHJv
bWl1bS5DaHJvbWl1bVBvcnQpOgogICAgICAgICByZXR1cm4gbWFwKHNlbGYuX3dlYmtpdF9iYXNl
bGluZV9wYXRoLCBmYWxsYmFja19wYXRoc1tzZWxmLl92ZXJzaW9uXSkKIAogICAgIGRlZiBfbW9k
dWxlc190b19zZWFyY2hfZm9yX3N5bWJvbHMoc2VsZik6Ci0gICAgICAgIHJldHVybiBbc2VsZi5f
YnVpbGRfcGF0aChzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3VyYXRpb24nKSwgJ2ZmbXBlZ3N1bW8u
c28nKV0KKyAgICAgICAgcmV0dXJuIFtzZWxmLl9idWlsZF9wYXRoKCdmZm1wZWdzdW1vLnNvJyld
CiAKICAgICBkZWYgY2hlY2tfYnVpbGQoc2VsZiwgbmVlZHNfaHR0cCk6CiAgICAgICAgIHJlc3Vs
dCA9IGNocm9taXVtLkNocm9taXVtUG9ydC5jaGVja19idWlsZChzZWxmLCBuZWVkc19odHRwKQpA
QCAtMTIwLDE0ICsxMjAsMTEgQEAgY2xhc3MgQ2hyb21pdW1NYWNQb3J0KGNocm9taXVtLkNocm9t
aXVtUG9ydCk6CiAKICAgICBkZWYgX3BhdGhfdG9fZHJpdmVyKHNlbGYsIGNvbmZpZ3VyYXRpb249
Tm9uZSk6CiAgICAgICAgICMgRklYTUU6IG1ha2UgfGNvbmZpZ3VyYXRpb258IGhhcHB5IHdpdGgg
Y2FzZS1zZW5zaXRpdmUgZmlsZSBzeXN0ZW1zLgotICAgICAgICBpZiBub3QgY29uZmlndXJhdGlv
bjoKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBzZWxmLmdldF9vcHRpb24oJ2NvbmZpZ3Vy
YXRpb24nKQotICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aChjb25maWd1cmF0aW9uLCBz
ZWxmLmRyaXZlcl9uYW1lKCkgKyAnLmFwcCcsCi0gICAgICAgICAgICAnQ29udGVudHMnLCAnTWFj
T1MnLCBzZWxmLmRyaXZlcl9uYW1lKCkpCisgICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRo
X3dpdGhfY29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uLCBzZWxmLmRyaXZlcl9uYW1lKCkgKyAn
LmFwcCcsICdDb250ZW50cycsICdNYWNPUycsIHNlbGYuZHJpdmVyX25hbWUoKSkKIAogICAgIGRl
ZiBfcGF0aF90b19oZWxwZXIoc2VsZik6CiAgICAgICAgIGJpbmFyeV9uYW1lID0gJ0xheW91dFRl
c3RIZWxwZXInCi0gICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKHNlbGYuZ2V0X29wdGlv
bignY29uZmlndXJhdGlvbicpLCBiaW5hcnlfbmFtZSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1
aWxkX3BhdGgoYmluYXJ5X25hbWUpCiAKICAgICBkZWYgX3BhdGhfdG9fd2RpZmYoc2VsZik6CiAg
ICAgICAgIHJldHVybiAnd2RpZmYnCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX21hY191bml0dGVzdC5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbWFjX3VuaXR0ZXN0LnB5Cmlu
ZGV4IDg3OTA0YTgwNDg0ODFiNTVjMTU2ZmMzYzZiYzA3ZWRjMmJlYjcyNDguLmVkZjkyZWEyMGFl
ZmU5ZmU0Zjg2YWQxYzE2YmM5OTA0NDA3Y2Y5MGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbWFjX3VuaXR0ZXN0LnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbWFjX3Vu
aXR0ZXN0LnB5CkBAIC03NCwxOSArNzQsMTkgQEAgY2xhc3MgQ2hyb21pdW1NYWNQb3J0VGVzdChj
aHJvbWl1bV9wb3J0X3Rlc3RjYXNlLkNocm9taXVtUG9ydFRlc3RDYXNlKToKICAgICBkZWYgdGVz
dF9idWlsZF9wYXRoKHNlbGYpOgogICAgICAgICAjIFRlc3QgdGhhdCBvcHRpb25hbCBwYXRocyBh
cmUgdXNlZCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhleSBleGlzdC4KICAgICAgICAgb3B0aW9u
cyA9IE1vY2tPcHRpb25zKGNvbmZpZ3VyYXRpb249J1JlbGVhc2UnLCBidWlsZF9kaXJlY3Rvcnk9
Jy9mb28nKQotICAgICAgICBzZWxmLmFzc2VydF9idWlsZF9wYXRoKG9wdGlvbnMsIFsnL21vY2st
Y2hlY2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9vdXQnXSwgJy9mb28nKQorICAgICAgICBz
ZWxmLmFzc2VydF9idWlsZF9wYXRoKG9wdGlvbnMsIFsnL21vY2stY2hlY2tvdXQvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9vdXQvUmVsZWFzZSddLCAnL2Zvby9SZWxlYXNlJykKIAogICAgICAgICAj
IFRlc3QgdGhhdCBvcHRpb25hbCByZWxhdGl2ZSBwYXRocyBhcmUgcmV0dXJuZWQgdW5tb2RpZmll
ZC4KICAgICAgICAgb3B0aW9ucyA9IE1vY2tPcHRpb25zKGNvbmZpZ3VyYXRpb249J1JlbGVhc2Un
LCBidWlsZF9kaXJlY3Rvcnk9J2ZvbycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2J1aWxkX3BhdGgo
b3B0aW9ucywgWycvbW9jay1jaGVja291dC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL291dCddLCAn
Zm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRfYnVpbGRfcGF0aChvcHRpb25zLCBbJy9tb2NrLWNo
ZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vb3V0L1JlbGVhc2UnXSwgJ2Zvby9SZWxlYXNl
JykKIAogICAgICAgICAjIFRlc3QgdGhhdCB3ZSBsb29rIGluIGEgY2hyb21pdW0gZGlyZWN0b3J5
IGJlZm9yZSB0aGUgd2Via2l0IGRpcmVjdG9yeS4KICAgICAgICAgb3B0aW9ucyA9IE1vY2tPcHRp
b25zKGNvbmZpZ3VyYXRpb249J1JlbGVhc2UnLCBidWlsZF9kaXJlY3Rvcnk9Tm9uZSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRfYnVpbGRfcGF0aChvcHRpb25zLCBbJy9tb2NrLWNoZWNrb3V0L1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vb3V0JywgJy9tb2NrLWNoZWNrb3V0L291dCddLCAnL21vY2stY2hl
Y2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9vdXQnKQorICAgICAgICBzZWxmLmFzc2VydF9i
dWlsZF9wYXRoKG9wdGlvbnMsIFsnL21vY2stY2hlY2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9vdXQvUmVsZWFzZScsICcvbW9jay1jaGVja291dC9vdXQvUmVsZWFzZSddLCAnL21vY2stY2hl
Y2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9vdXQvUmVsZWFzZScpCiAKICAgICAgICAgIyBU
ZXN0IHRoYXQgd2UgcHJlZmVyIHRoZSBsZWdhY3kgZGlyIG92ZXIgdGhlIG5ldyBkaXIuCiAgICAg
ICAgIG9wdGlvbnMgPSBNb2NrT3B0aW9ucyhjb25maWd1cmF0aW9uPSdSZWxlYXNlJywgYnVpbGRf
ZGlyZWN0b3J5PU5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2J1aWxkX3BhdGgob3B0aW9ucywg
WycvbW9jay1jaGVja291dC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3hjb2RlYnVpbGQnLCAnL21v
Y2stY2hlY2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9vdXQnXSwgJy9tb2NrLWNoZWNrb3V0
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0veGNvZGVidWlsZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0
X2J1aWxkX3BhdGgob3B0aW9ucywgWycvbW9jay1jaGVja291dC9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3hjb2RlYnVpbGQvUmVsZWFzZScsICcvbW9jay1jaGVja291dC9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL291dC9SZWxlYXNlJ10sICcvbW9jay1jaGVja291dC9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3hjb2RlYnVpbGQvUmVsZWFzZScpCiAKICAgICBkZWYgdGVzdF9kcml2ZXJfbmFtZV9vcHRp
b24oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1ha2VfcG9ydCgpLl9wYXRo
X3RvX2RyaXZlcigpLmVuZHN3aXRoKCdEdW1wUmVuZGVyVHJlZScpKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV93aW4ucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dpbi5weQpp
bmRleCA1MTYxMTI0MWM1NzZkMjE0NTVjZDdlMGJlOTFlNWJlOGZiOGJkNDAwLi43ZDAzMzdhY2M0
Zjk0YTBlYTEwNTBjNmY2YmY2YTA5MWRmZTU4ZGYyIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dpbi5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dpbi5weQpAQCAtMTQ5
LDE4ICsxNDksMTYgQEAgY2xhc3MgQ2hyb21pdW1XaW5Qb3J0KGNocm9taXVtLkNocm9taXVtUG9y
dCk6CiAgICAgICAgIHJldHVybiBzZWxmLl9saWdodHRwZF9wYXRoKCdwaHA1JywgJ3BocC1jZ2ku
ZXhlJykKIAogICAgIGRlZiBfcGF0aF90b19kcml2ZXIoc2VsZiwgY29uZmlndXJhdGlvbj1Ob25l
KToKLSAgICAgICAgaWYgbm90IGNvbmZpZ3VyYXRpb246Ci0gICAgICAgICAgICBjb25maWd1cmF0
aW9uID0gc2VsZi5nZXRfb3B0aW9uKCdjb25maWd1cmF0aW9uJykKICAgICAgICAgYmluYXJ5X25h
bWUgPSAnJXMuZXhlJyAlIHNlbGYuZHJpdmVyX25hbWUoKQotICAgICAgICByZXR1cm4gc2VsZi5f
YnVpbGRfcGF0aChjb25maWd1cmF0aW9uLCBiaW5hcnlfbmFtZSkKKyAgICAgICAgcmV0dXJuIHNl
bGYuX2J1aWxkX3BhdGhfd2l0aF9jb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24sIGJpbmFyeV9u
YW1lKQogCiAgICAgZGVmIF9wYXRoX3RvX2hlbHBlcihzZWxmKToKICAgICAgICAgYmluYXJ5X25h
bWUgPSAnTGF5b3V0VGVzdEhlbHBlci5leGUnCi0gICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9w
YXRoKHNlbGYuZ2V0X29wdGlvbignY29uZmlndXJhdGlvbicpLCBiaW5hcnlfbmFtZSkKKyAgICAg
ICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoYmluYXJ5X25hbWUpCiAKICAgICBkZWYgX3BhdGhf
dG9faW1hZ2VfZGlmZihzZWxmKToKICAgICAgICAgYmluYXJ5X25hbWUgPSAnSW1hZ2VEaWZmLmV4
ZScKLSAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoc2VsZi5nZXRfb3B0aW9uKCdjb25m
aWd1cmF0aW9uJyksIGJpbmFyeV9uYW1lKQorICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0
aChiaW5hcnlfbmFtZSkKIAogICAgIGRlZiBfcGF0aF90b193ZGlmZihzZWxmKToKICAgICAgICAg
cmV0dXJuIHNlbGYucGF0aF9mcm9tX2Nocm9taXVtX2Jhc2UoJ3RoaXJkX3BhcnR5JywgJ2N5Z3dp
bicsICdiaW4nLCAnd2RpZmYuZXhlJykKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fd2luX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV93aW5fdW5pdHRlc3QucHkK
aW5kZXggNjA3NzE5MjQxYWMwODhlNmVhNmI5MjdjNTZlNGYyYzFmNTA0NGYxNC4uZGMxODRmYzE0
NWI2OGM2ZmM5MGRjMzQ0ZjgwOWY0MGU2NjM0ZDUzMiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV93aW5fdW5pdHRlc3QucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV93aW5f
dW5pdHRlc3QucHkKQEAgLTEwMCwxOSArMTAwLDE5IEBAIGNsYXNzIENocm9taXVtV2luVGVzdChj
aHJvbWl1bV9wb3J0X3Rlc3RjYXNlLkNocm9taXVtUG9ydFRlc3RDYXNlKToKICAgICBkZWYgdGVz
dF9idWlsZF9wYXRoKHNlbGYpOgogICAgICAgICAjIFRlc3QgdGhhdCBvcHRpb25hbCBwYXRocyBh
cmUgdXNlZCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhleSBleGlzdC4KICAgICAgICAgb3B0aW9u
cyA9IE1vY2tPcHRpb25zKGNvbmZpZ3VyYXRpb249J1JlbGVhc2UnLCBidWlsZF9kaXJlY3Rvcnk9
Jy9mb28nKQotICAgICAgICBzZWxmLmFzc2VydF9idWlsZF9wYXRoKG9wdGlvbnMsIFsnL21vY2st
Y2hlY2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9vdXQnXSwgJy9mb28nKQorICAgICAgICBz
ZWxmLmFzc2VydF9idWlsZF9wYXRoKG9wdGlvbnMsIFsnL21vY2stY2hlY2tvdXQvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9vdXQvUmVsZWFzZSddLCAnL2Zvby9SZWxlYXNlJykKIAogICAgICAgICAj
IFRlc3QgdGhhdCBvcHRpb25hbCByZWxhdGl2ZSBwYXRocyBhcmUgcmV0dXJuZWQgdW5tb2RpZmll
ZC4KICAgICAgICAgb3B0aW9ucyA9IE1vY2tPcHRpb25zKGNvbmZpZ3VyYXRpb249J1JlbGVhc2Un
LCBidWlsZF9kaXJlY3Rvcnk9J2ZvbycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2J1aWxkX3BhdGgo
b3B0aW9ucywgWycvbW9jay1jaGVja291dC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL291dCddLCAn
Zm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRfYnVpbGRfcGF0aChvcHRpb25zLCBbJy9tb2NrLWNo
ZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vb3V0L1JlbGVhc2UnXSwgJ2Zvby9SZWxlYXNl
JykKIAogICAgICAgICAjIFRlc3QgdGhhdCB3ZSBsb29rIGluIGEgY2hyb21pdW0gZGlyZWN0b3J5
IGJlZm9yZSB0aGUgd2Via2l0IGRpcmVjdG9yeS4KICAgICAgICAgb3B0aW9ucyA9IE1vY2tPcHRp
b25zKGNvbmZpZ3VyYXRpb249J1JlbGVhc2UnLCBidWlsZF9kaXJlY3Rvcnk9Tm9uZSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRfYnVpbGRfcGF0aChvcHRpb25zLCBbJy9tb2NrLWNoZWNrb3V0L1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vb3V0JywgJy9tb2NrLWNoZWNrb3V0L291dCddLCAnL21vY2stY2hl
Y2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9vdXQnKQorICAgICAgICBzZWxmLmFzc2VydF9i
dWlsZF9wYXRoKG9wdGlvbnMsIFsnL21vY2stY2hlY2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9vdXQvUmVsZWFzZScsICcvbW9jay1jaGVja291dC9vdXQvUmVsZWFzZSddLCAnL21vY2stY2hl
Y2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9vdXQvUmVsZWFzZScpCiAKICAgICAgICAgIyBU
ZXN0IHRoYXQgd2UgcHJlZmVyIHRoZSBsZWdhY3kgZGlyIG92ZXIgdGhlIG5ldyBkaXIuCiAgICAg
ICAgIG9wdGlvbnMgPSBNb2NrT3B0aW9ucyhjb25maWd1cmF0aW9uPSdSZWxlYXNlJywgYnVpbGRf
ZGlyZWN0b3J5PU5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2J1aWxkX3BhdGgob3B0aW9ucywg
WycvbW9jay1jaGVja291dC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2J1aWxkJywgJy9tb2NrLWNo
ZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vb3V0J10sICcvbW9jay1jaGVja291dC9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL2J1aWxkJykKKyAgICAgICAgc2VsZi5hc3NlcnRfYnVpbGRfcGF0
aChvcHRpb25zLCBbJy9tb2NrLWNoZWNrb3V0L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vYnVpbGQv
UmVsZWFzZScsICcvbW9jay1jaGVja291dC9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL291dCddLCAn
L21vY2stY2hlY2tvdXQvU291cmNlL1dlYktpdC9jaHJvbWl1bS9idWlsZC9SZWxlYXNlJykKIAog
ICAgIGRlZiB0ZXN0X29wZXJhdGluZ19zeXN0ZW0oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ3dpbicsIHNlbGYubWFrZV9wb3J0KCkub3BlcmF0aW5nX3N5c3RlbSgpKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0
cy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVz
dHMucHkKaW5kZXggNWVhZjMxMjIxOTBhZWU0MWVhMzY4MzJhMTkxYzEzNWQxOTZhNDAzZS4uZDRk
MGVkYjJiMDRjNzkyYmNjYTRlYTlmNjJjNWU5ZDkyOTEzNzM0OSAxMDA3NTUKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CkBA
IC0yNzEsOCArMjcxLDkgQEAgZGVmIHBhcnNlX2FyZ3MoYXJncz1Ob25lKToKICAgICAgICAgICAg
IGhlbHA9IlJ1biBhIGNvbmN1cnJlbnQgSmF2YVNjcmlwdCB0aHJlYWQgd2l0aCBlYWNoIHRlc3Qi
KSwKICAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0td2Via2l0LXRlc3QtcnVubmVyIiwg
Ii0yIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwKICAgICAgICAgICAgIGhlbHA9IlVzZSBXZWJLaXRU
ZXN0UnVubmVyIHJhdGhlciB0aGFuIER1bXBSZW5kZXJUcmVlLiIpLAorICAgICAgICAjIEZJWE1F
OiBXZSBzaG91bGQgbWVyZ2UgdGhpcyB3LyAtLWJ1aWxkLWRpcmVjdG9yeSBhbmQgb25seSBoYXZl
IG9uZSBmbGFnLgogICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1yb290IiwgYWN0aW9u
PSJzdG9yZSIsCi0gICAgICAgICAgICBoZWxwPSJQYXRoIHRvIGEgcHJlLWJ1aWx0IHJvb3Qgb2Yg
V2ViS2l0IChmb3IgcnVubmluZyB0ZXN0cyB1c2luZyBhIG5pZ2h0bHkgYnVpbGQgb2YgV2ViS2l0
KSIpLAorICAgICAgICAgICAgaGVscD0iUGF0aCB0byBhIGRpcmVjdG9yeSBjb250YWluaW5nIHRo
ZSBleGVjdXRhYmxlcyBuZWVkZWQgdG8gcnVuIHRlc3RzLiIpLAogICAgIF0pKQogCiAgICAgb3B0
aW9uX2dyb3VwX2RlZmluaXRpb25zLmFwcGVuZCgoIk9SV1QgQ29tcGF0aWJpbGl0eSBPcHRpb25z
IiwgWwo=
</data>
<flag name="review"
          id="163305"
          type_id="1"
          status="+"
          setter="tony"
    />
          </attachment>
      

    </bug>

</bugzilla>