<?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>169054</bug_id>
          
          <creation_ts>2017-03-01 13:39:17 -0800</creation_ts>
          <short_desc>webkitpy: Efficient app installation for device testing</short_desc>
          <delta_ts>2017-03-14 12:16:45 -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>Tools / Tests</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>169220</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jonathan Bedard">jbedard</reporter>
          <assigned_to name="Jonathan Bedard">jbedard</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>glenn</cc>
    
    <cc>lforschler</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1282424</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-03-01 13:39:17 -0800</bug_when>
    <thetext>Currently, any time a test causes the test-runner to crash, we re-install the app.  App installation should only occur once per device, and the user should be able to opt-out of running an app install.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282428</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-03-01 13:48:10 -0800</bug_when>
    <thetext>&lt;rdar://problem/30790207&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282429</commentid>
    <comment_count>2</comment_count>
      <attachid>303111</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-03-01 13:49:23 -0800</bug_when>
    <thetext>Created attachment 303111
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282504</commentid>
    <comment_count>3</comment_count>
      <attachid>303135</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-03-01 15:35:12 -0800</bug_when>
    <thetext>Created attachment 303135
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282814</commentid>
    <comment_count>4</comment_count>
      <attachid>303135</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-03-02 11:58:08 -0800</bug_when>
    <thetext>Comment on attachment 303135
Patch

How did you come to the decision to define a custom driver class, iOSDriver, to install the test tool app as opposed to having setup_test_run() install the test tool app after booting the simulator?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282825</commentid>
    <comment_count>5</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-03-02 12:24:12 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 303135 [details]
&gt; Patch
&gt; 
&gt; How did you come to the decision to define a custom driver class, iOSDriver,
&gt; to install the test tool app as opposed to having setup_test_run() install
&gt; the test tool app after booting the simulator?

2 reasons for this choice.

First, when we first started using simctl to install on simulated devices, we encountered some issues where the install would silently fail.  In order to detect this failure, we launch the app after install to check if the install was successful.  In-order for this to work, we need to pass the DYLD environment into the install.  The DYLD environment currently comes from the driver, not the port.  Second, and more importantly, if the install is a non-trivial task (as it would be on an actual device) placing this code in the driver will result in it being broken into the specific processes, as opposed to being run once during setup.  Right now, we assume install is a blocking action, so we cannot install to multiple devices at once from the same process.

The alternative you suggest would be to run all of the installs on one process before breaking up the test runs on multiple processes.  This would be slower, although it may also alleviate some of the flakiness we&apos;ve observed with simctl install.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283795</commentid>
    <comment_count>6</comment_count>
      <attachid>303519</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-03-06 09:30:42 -0800</bug_when>
    <thetext>Created attachment 303519
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283827</commentid>
    <comment_count>7</comment_count>
      <attachid>303519</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-03-06 10:40:18 -0800</bug_when>
    <thetext>Comment on attachment 303519
Patch

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

&gt; Tools/Scripts/webkitpy/port/ios.py:39
&gt; +    # FIXME: The install_flag should not be needed if the driver is only created when running a test.
&gt; +    def __init__(self, port, worker_number, pixel_tests, no_timeout=False, install_flag=False):
&gt; +        super(iOSDriver, self).__init__(port, worker_number, pixel_tests, no_timeout, install_flag)
&gt; +        if not install_flag:
&gt; +            return

Adding a boolean flag, install_flag, is not the correct way to make this code work for the unit tests. Instantiating a driver should not have side-effects that make it infeasible to instantiate a driver just to query information and adding a boolean constructor argument to mitigate these side effects does not seem appropriate. Can we move this logic to Port.setup_test_run()? If we need to set the DYLD_FRAMEWORK_PATH before calling Device.install_app() then can we move _setup_environ_for_driver() to the base Port class and then have both the Driver and Port.setup_test_run() use it? Or, even better, can we write the workaround in Device.install_app() to detect successful installation without needing to launch the app? (Obviously, it would be best if we did not need to work around a CoreSimulator issue).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283894</commentid>
    <comment_count>8</comment_count>
      <attachid>303545</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-03-06 13:01:38 -0800</bug_when>
    <thetext>Created attachment 303545
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1283953</commentid>
    <comment_count>9</comment_count>
      <attachid>303545</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-03-06 14:22:51 -0800</bug_when>
    <thetext>Comment on attachment 303545
Patch

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

&gt; Tools/Scripts/webkitpy/port/factory.py:52
&gt;              help=(&apos;Alias for --platform=ios-simulator&apos;)),
&gt; +        optparse.make_option(&apos;--no-install&apos;, action=&apos;store_const&apos;, dest=&apos;install&apos;,
&gt; +            const=False, default=True,
&gt; +            help=&apos;Skip app install for device testing&apos;),

Is this necessity to do now? I mean, we do not have support for device testing.

&gt; Tools/Scripts/webkitpy/port/ios.py:62
&gt; +    def _check_driver(self):
&gt; +        if self.get_option(&apos;install&apos;):
&gt; +            return super(IOSPort, self)._check_driver()
&gt; +        return True
&gt; +

Ditto.

&gt; Tools/Scripts/webkitpy/port/ios.py:88
&gt; +                _log.warn(&apos;Installing to {}&apos;.format(self.device_for_worker_number(i)))

If we chose to log such details it seems most beneficial to debugging and hence I suggest we log the message to the debug log.

&gt; Tools/Scripts/webkitpy/port/ios.py:89
&gt; +                if not self.device_for_worker_number(i).install_app(self._path_to_driver(), {&apos;DYLD_LIBRARY_PATH&apos;: self._build_path()}):

This seems to take advantage of knowledge of when DRT/WKTR make use of functionality from a built WebKit to avoid crashing. This seems error prone and would necessitate a comment to explain why we can get away with launching DRT/WKTR with only an overridden DYLD_LIBRARY_PATH as opposed to the full set of environment variables we set when running the tool for a normal test run. I gave a suggestion move the _setup_environ_for_driver() function to the base Port class in comment #7 as one way to share code between the port and driver classes and setup the environment.

&gt; Tools/Scripts/webkitpy/port/ios.py:90
&gt; +                    raise RuntimeError(&apos;Failed to install app {} on device {}&apos;.format(self._path_to_driver(), self.device_for_worker_number(i).udid))

We compute self.device_for_worker_number(i) multiple times throughout this function. We should compute it once and cache it.

&gt; Tools/Scripts/webkitpy/port/ios.py:91
&gt; +                _log.warn(&apos;Install completed&apos;)

I do not see the need to log this information. I mean, its not a warning and if the install failed then we would have thrown a RuntimeError and never reached this line of code. In general, we follow the UNIX tool philosophy that a tool should be silent on success and noisy on failure. No need for a tool to make noise on success as we do here.

&gt; Tools/Scripts/webkitpy/port/ios_simulator.py:224
&gt; +            super(IOSSimulatorPort, self).setup_test_run(device_class)

This seems brittle. I mean, the logic for setting up a test for simulator is now split between this function and the base class function and requires a specific calling order (i.e. we cannot just call the base class function immediately at the start of this function). For on-device testing we will likely need similar logic to setup a run. One way to share code is to abstract the moving parts in this function (i.e. creating of simulator) into helper functions that must be implemented in the derived classes. The derived classes would not implement setup_test_run() instead the base class implements setup_test_run() and calls the helper functions in the derived class to perform the actual creation of a simulator/device setup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1284619</commentid>
    <comment_count>10</comment_count>
      <attachid>303740</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-03-07 16:06:04 -0800</bug_when>
    <thetext>Created attachment 303740
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285372</commentid>
    <comment_count>11</comment_count>
      <attachid>303740</attachid>
    <who name="Dean Johnson">dean_johnson</who>
    <bug_when>2017-03-09 10:10:31 -0800</bug_when>
    <thetext>Comment on attachment 303740
Patch

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

&gt; Tools/ChangeLog:10
&gt; +        Move app installation to setup and add a command line flag to skip installing.

I don&apos;t see the new flag included in this patch? This comment should be removed or a flag should be added for --no-install.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285386</commentid>
    <comment_count>12</comment_count>
      <attachid>303934</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-03-09 10:32:27 -0800</bug_when>
    <thetext>Created attachment 303934
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287695</commentid>
    <comment_count>13</comment_count>
      <attachid>303934</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-03-14 11:21:07 -0700</bug_when>
    <thetext>Comment on attachment 303934
Patch

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

&gt; Tools/Scripts/webkitpy/port/ios.py:92
&gt; +            # Without passing DYLD_LIBRARY_PATH, libWebCoreTestSupport cannot be loaded and the app will crash pre-launch,
&gt; +            # leaving a crash log which will be picked up in results.  No DYLD_FRAMEWORK_PATH will also cause the app to
&gt; +            # crash, but this crash will occur post-launch, after install_app has already killed the process.
&gt; +            if not device.install_app(self._path_to_driver(), {&apos;DYLD_LIBRARY_PATH&apos;: self._build_path()}):

app =&gt; DRT/WKTR (as we are not talking about an arbitrary app here)

OK. This seems fragile. It would be less fragile to move the function that setups the environment variables from the driver code to the port class and use it from here and the driver code to setup the correct environment variables. I am hoping that we can remove the workaround in install_app() to launch the app and hence remove the need to pass any environment variables to it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287708</commentid>
    <comment_count>14</comment_count>
      <attachid>304403</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2017-03-14 11:34:57 -0700</bug_when>
    <thetext>Created attachment 304403
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287730</commentid>
    <comment_count>15</comment_count>
      <attachid>304403</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-14 12:16:39 -0700</bug_when>
    <thetext>Comment on attachment 304403
Patch for landing

Clearing flags on attachment: 304403

Committed r213926: &lt;http://trac.webkit.org/changeset/213926&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1287731</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-14 12:16:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303111</attachid>
            <date>2017-03-01 13:49:23 -0800</date>
            <delta_ts>2017-03-01 15:35:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169054-20170301134624.patch</filename>
            <type>text/plain</type>
            <size>17742</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIxMzIzOSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDUxIEBACisyMDE3LTAzLTAxICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICB3ZWJraXRweTogRWZmaWNpZW50IGFwcCBpbnN0YWxsYXRpb24gZm9yIGRl
dmljZSB0ZXN0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjkwNTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBXZSBzaG91bGQgb25seSBpbnN0YWxsIGFuIGFwcCBvbiBhIGRldmljZSBvbmNlLCBub3Qg
ZXZlcnkgdGltZSB0aGUgYXBwIGlzIHJ1bi4gIE1vdmUKKyAgICAgICAgYXBwIGluc3RhbGxhdGlv
biB0byB0aGUgZHJpdmVyIGFuZCBhZGQgYSBjb21tYW5kIGxpbmUgZmxhZyB0byBza2lwIGluc3Rh
bGxpbmcuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3Bl
cmZ0ZXN0c3J1bm5lci5weTogTWFrZSBfcGF0aF90b19kcml2ZXIoKSBwdWJsaWMuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHk6CisgICAgICAgIChQb3J0Ll9jaGVja19k
cml2ZXIpOiBNYWtlIF9wYXRoX3RvX2RyaXZlcigpIHB1YmxpYy4KKyAgICAgICAgKFBvcnQucGF0
aF90b19kcml2ZXIpOiBNYWtlIF9wYXRoX3RvX2RyaXZlcigpIHB1YmxpYy4KKyAgICAgICAgKFBv
cnQuX3BhdGhfdG9fZHJpdmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3BvcnQvZHJpdmVyLnB5OgorICAgICAgICAoRHJpdmVyLl9faW5pdF9fKToKKyAgICAgICAgKERy
aXZlci5fc2V0dXBfZW52aXJvbl9keWxkKTogTWFrZSBkeWxkIGVudmlyb25tZW50IHNldHVwIHNl
cGFyYXRlLgorICAgICAgICAoRHJpdmVyLl9zZXR1cF9lbnZpcm9uX2Zvcl9kcml2ZXIpOiBDYWxs
IGR5bGQgZW52aXJvbm1lbnQgc2V0dXAgZnVuY3Rpb24uCisgICAgICAgIChEcml2ZXIuY21kX2xp
bmUpOiBNYWtlIF9wYXRoX3RvX2RyaXZlcigpIHB1YmxpYy4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3BvcnQvZWZsLnB5OiBNYWtlIF9wYXRoX3RvX2RyaXZlcigpIHB1YmxpYy4KKyAgICAg
ICAgKEVmbFBvcnQucGF0aF90b19kcml2ZXIpOiBEaXR0by4KKyAgICAgICAgKEVmbFBvcnQuX2dl
dF9jcmFzaF9sb2cpOiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvZmFj
dG9yeS5weToKKyAgICAgICAgKHBsYXRmb3JtX29wdGlvbnMpOiBNYWtlIF9wYXRoX3RvX2RyaXZl
cigpIHB1YmxpYy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvZ3RrLnB5OgorICAg
ICAgICAoR3RrUG9ydC5wYXRoX3RvX2RyaXZlcik6IE1ha2UgX3BhdGhfdG9fZHJpdmVyKCkgcHVi
bGljLgorICAgICAgICAoR3RrUG9ydC5fZ2V0X2NyYXNoX2xvZyk6IERpdHRvLgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3MucHk6CisgICAgICAgIChpT1NEcml2ZXIpOiBBZGQg
bmV3IGlPU0RyaXZlciBjbGFzcworICAgICAgICAoaU9TRHJpdmVyLl9zdGFydCk6IEluc3RhbGwg
YXBwIHRvIHRhcmdldCBkZXZpY2UgaWYgbm90IHlldCBpbnN0YWxsZWQuCisgICAgICAgIChJT1NQ
b3J0Ll9kcml2ZXJfY2xhc3MpOiBSZXR1cm4gaU9TRHJpdmVyIGFzIGRyaXZlciBjbGFzcy4KKyAg
ICAgICAgKElPU1BvcnQuX2NoZWNrX2RyaXZlcik6IE9ubHkgY2hlY2sgZHJpdmVyIGlmIGFwcCBp
cyBiZWluZyBpbnN0YWxsZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2xpbnV4
X2dldF9jcmFzaF9sb2cucHk6CisgICAgICAgIChHREJDcmFzaExvZ0dlbmVyYXRvci5fX2luaXRf
Xyk6IE1ha2UgX3BhdGhfdG9fZHJpdmVyKCkgcHVibGljLgorICAgICAgICAoR0RCQ3Jhc2hMb2dH
ZW5lcmF0b3IuX2dldF9nZGJfb3V0cHV0KTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9wb3J0L21vY2tfZHJ0LnB5OgorICAgICAgICAoTW9ja0RSVFBvcnQuX21vY2tlZF9kcml2
ZXJfbWFrZXIpOiBNYWtlIF9wYXRoX3RvX2RyaXZlcigpIHB1YmxpYy4KKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvcG9ydF90ZXN0Y2FzZS5weToKKyAgICAgICAgKFBvcnRUZXN0Q2Fz
ZS50ZXN0X3Jvb3Rfb3B0aW9uKTogTWFrZSBfcGF0aF90b19kcml2ZXIoKSBwdWJsaWMuCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3NpbXVsYXRvcl9wcm9jZXNzLnB5OgorICAgICAg
ICAoU2ltdWxhdG9yUHJvY2Vzcy5fX2luaXRfXyk6IFJlbW92ZSBhcHAgaW5zdGFsbGF0aW9uLgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC90ZXN0LnB5OgorICAgICAgICAoVGVzdFBv
cnQucGF0aF90b19kcml2ZXIpOiBNYWtlIF9wYXRoX3RvX2RyaXZlcigpIHB1YmxpYy4KKyAgICAg
ICAgKFRlc3REcml2ZXIuY21kX2xpbmUpOiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L3BvcnQvd2luLnB5OgorICAgICAgICAoV2luUG9ydC5fcnVudGltZV9mZWF0dXJlX2xpc3Qp
OiBNYWtlIF9wYXRoX3RvX2RyaXZlcigpIHB1YmxpYy4KKwogMjAxNy0wMy0wMSAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSB3YXkgdG8gd2F0
Y2ggdGhlIENTU1Byb3BlcnRpZXMuanNvbiBmaWxlLCBhbmQgYWRkIG1lIGFuZCBEYW4gQmF0ZXMg
dG8gd2F0Y2ggaXQuCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rl
c3RzL3BlcmZ0ZXN0c3J1bm5lci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lci5weQkocmV2aXNpb24gMjEzMjM2
KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNy
dW5uZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTE5MSw3ICsxOTEsNyBAQCBjbGFzcyBQZXJmVGVz
dHNSdW5uZXIob2JqZWN0KToKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioiIiIpCiAKICAgICAgICAgaWYgbm90IHNlbGYuX3BvcnQuY2hlY2tfYnVp
bGQobmVlZHNfaHR0cD1GYWxzZSk6Ci0gICAgICAgICAgICBfbG9nLmVycm9yKCJCdWlsZCBub3Qg
dXAgdG8gZGF0ZSBmb3IgJXMiICUgc2VsZi5fcG9ydC5fcGF0aF90b19kcml2ZXIoKSkKKyAgICAg
ICAgICAgIF9sb2cuZXJyb3IoIkJ1aWxkIG5vdCB1cCB0byBkYXRlIGZvciAlcyIgJSBzZWxmLl9w
b3J0LnBhdGhfdG9fZHJpdmVyKCkpCiAgICAgICAgICAgICByZXR1cm4gc2VsZi5FWElUX0NPREVf
QkFEX0JVSUxECiAKICAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBzeXN0ZW0gZGVwZW5kZW5jaWVz
ICh0aGVtZXMsIGZvbnRzLCAuLi4pIGFyZSBjb3JyZWN0LgpJbmRleDogVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wb3J0L2Jhc2UucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wb3J0L2Jhc2UucHkJKHJldmlzaW9uIDIxMzIzNikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvcG9ydC9iYXNlLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMzUsNyArMjM1LDcgQEAgY2xhc3Mg
UG9ydChvYmplY3QpOgogICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgZGVmIF9jaGVja19kcml2
ZXIoc2VsZik6Ci0gICAgICAgIGRyaXZlcl9wYXRoID0gc2VsZi5fcGF0aF90b19kcml2ZXIoKQor
ICAgICAgICBkcml2ZXJfcGF0aCA9IHNlbGYucGF0aF90b19kcml2ZXIoKQogICAgICAgICBpZiBu
b3Qgc2VsZi5fZmlsZXN5c3RlbS5leGlzdHMoZHJpdmVyX3BhdGgpOgogICAgICAgICAgICAgX2xv
Zy5lcnJvcigiJXMgd2FzIG5vdCBmb3VuZCBhdCAlcyIgJSAoc2VsZi5kcml2ZXJfbmFtZSgpLCBk
cml2ZXJfcGF0aCkpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKQEAgLTEyNjAsNyArMTI2MCw3
IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKIAogICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3Rl
bS5qb2luKHNlbGYuX2ZpbGVzeXN0ZW0uYWJzcGF0aChyb290X2RpcmVjdG9yeSksICpjb21wcykK
IAotICAgIGRlZiBfcGF0aF90b19kcml2ZXIoc2VsZiwgY29uZmlndXJhdGlvbj1Ob25lKToKKyAg
ICBkZWYgcGF0aF90b19kcml2ZXIoc2VsZiwgY29uZmlndXJhdGlvbj1Ob25lKToKICAgICAgICAg
IiIiUmV0dXJucyB0aGUgZnVsbCBwYXRoIHRvIHRoZSB0ZXN0IGRyaXZlciAoRHVtcFJlbmRlclRy
ZWUpLiIiIgogICAgICAgICBsb2NhbF9kcml2ZXJfcGF0aCA9IHNlbGYuX2J1aWxkX3BhdGgoc2Vs
Zi5kcml2ZXJfbmFtZSgpKQogICAgICAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2lu
Jyk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZHJpdmVyLnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXIucHkJKHJldmlzaW9uIDIx
MzIzNikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXIucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTE2MSw3ICsxNjEsNyBAQCBjbGFzcyBEcml2ZXIob2JqZWN0KToKICAgICAgICAg
aWYgc2VsZi5fcG9ydC5nZXRfb3B0aW9uKCJwcm9maWxlIik6CiAgICAgICAgICAgICBwcm9maWxl
cl9uYW1lID0gc2VsZi5fcG9ydC5nZXRfb3B0aW9uKCJwcm9maWxlciIpCiAgICAgICAgICAgICBz
ZWxmLl9wcm9maWxlciA9IFByb2ZpbGVyRmFjdG9yeS5jcmVhdGVfcHJvZmlsZXIoc2VsZi5fcG9y
dC5ob3N0LAotICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQuX3BhdGhfdG9fZHJpdmVyKCksIHNl
bGYuX3BvcnQucmVzdWx0c19kaXJlY3RvcnkoKSwgcHJvZmlsZXJfbmFtZSkKKyAgICAgICAgICAg
ICAgICBzZWxmLl9wb3J0LnBhdGhfdG9fZHJpdmVyKCksIHNlbGYuX3BvcnQucmVzdWx0c19kaXJl
Y3RvcnkoKSwgcHJvZmlsZXJfbmFtZSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYu
X3Byb2ZpbGVyID0gTm9uZQogCkBAIC0zMjUsMTIgKzMyNSwxNyBAQCBjbGFzcyBEcml2ZXIob2Jq
ZWN0KToKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGVudmlyb25tZW50W3ZhcmlhYmxlXSA9
IHBhdGgKIAotICAgIGRlZiBfc2V0dXBfZW52aXJvbl9mb3JfZHJpdmVyKHNlbGYsIGVudmlyb25t
ZW50KToKKyAgICBkZWYgX3NldHVwX2Vudmlyb25fZHlsZChzZWxmLCBlbnZpcm9ubWVudCk6CiAg
ICAgICAgIGJ1aWxkX3Jvb3RfcGF0aCA9IHN0cihzZWxmLl9wb3J0Ll9idWlsZF9wYXRoKCkpCiAg
ICAgICAgIHNlbGYuX2FwcGVuZF9lbnZpcm9ubWVudF92YXJpYWJsZV9wYXRoKGVudmlyb25tZW50
LCAnRFlMRF9MSUJSQVJZX1BBVEgnLCBidWlsZF9yb290X3BhdGgpCiAgICAgICAgIHNlbGYuX2Fw
cGVuZF9lbnZpcm9ubWVudF92YXJpYWJsZV9wYXRoKGVudmlyb25tZW50LCAnX19YUENfRFlMRF9M
SUJSQVJZX1BBVEgnLCBidWlsZF9yb290X3BhdGgpCiAgICAgICAgIHNlbGYuX2FwcGVuZF9lbnZp
cm9ubWVudF92YXJpYWJsZV9wYXRoKGVudmlyb25tZW50LCAnRFlMRF9GUkFNRVdPUktfUEFUSCcs
IGJ1aWxkX3Jvb3RfcGF0aCkKICAgICAgICAgc2VsZi5fYXBwZW5kX2Vudmlyb25tZW50X3Zhcmlh
YmxlX3BhdGgoZW52aXJvbm1lbnQsICdfX1hQQ19EWUxEX0ZSQU1FV09SS19QQVRIJywgYnVpbGRf
cm9vdF9wYXRoKQorICAgICAgICByZXR1cm4gZW52aXJvbm1lbnQKKworICAgIGRlZiBfc2V0dXBf
ZW52aXJvbl9mb3JfZHJpdmVyKHNlbGYsIGVudmlyb25tZW50KToKKyAgICAgICAgZW52aXJvbm1l
bnQgPSBzZWxmLl9zZXR1cF9lbnZpcm9uX2R5bGQoZW52aXJvbm1lbnQpCisKICAgICAgICAgIyBV
c2UgYW4gaXNvbGF0ZWQgdGVtcCBkaXJlY3RvcnkgdGhhdCBjYW4gYmUgZGVsZXRlZCBhZnRlciB0
ZXN0aW5nIChlc3BlY2lhbGx5IGltcG9ydGFudCBvbiBNYWMsIGFzCiAgICAgICAgICMgQ29yZU1l
ZGlhIGRpc2sgY2FjaGUgaXMgaW4gdGhlIHRlbXAgZGlyZWN0b3J5KS4KICAgICAgICAgZW52aXJv
bm1lbnRbJ1RNUERJUiddID0gc3RyKHNlbGYuX2RyaXZlcl90ZW1wZGlyKQpAQCAtMzk2LDcgKzQw
MSw3IEBAIGNsYXNzIERyaXZlcihvYmplY3QpOgogCiAgICAgZGVmIGNtZF9saW5lKHNlbGYsIHBp
eGVsX3Rlc3RzLCBwZXJfdGVzdF9hcmdzKToKICAgICAgICAgY21kID0gc2VsZi5fY29tbWFuZF93
cmFwcGVyKCkKLSAgICAgICAgY21kLmFwcGVuZChzZWxmLl9wb3J0Ll9wYXRoX3RvX2RyaXZlcigp
KQorICAgICAgICBjbWQuYXBwZW5kKHNlbGYuX3BvcnQucGF0aF90b19kcml2ZXIoKSkKICAgICAg
ICAgaWYgc2VsZi5fcG9ydC5nZXRfb3B0aW9uKCdnY19iZXR3ZWVuX3Rlc3RzJyk6CiAgICAgICAg
ICAgICBjbWQuYXBwZW5kKCctLWdjLWJldHdlZW4tdGVzdHMnKQogICAgICAgICBpZiBzZWxmLl9w
b3J0LmdldF9vcHRpb24oJ2NvbXBsZXhfdGV4dCcpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9wb3J0L2VmbC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvZWZsLnB5CShyZXZpc2lvbiAyMTMyMzYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvZWZsLnB5CSh3b3JraW5nIGNvcHkpCkBAIC05OSw3ICs5OSw3IEBAIGNsYXNzIEVmbFBvcnQo
UG9ydCk6CiAgICAgICAgICAgICByZXR1cm4gWG9yZ0RyaXZlcgogICAgICAgICByZXR1cm4gWHZm
YkRyaXZlcgogCi0gICAgZGVmIF9wYXRoX3RvX2RyaXZlcihzZWxmKToKKyAgICBkZWYgcGF0aF90
b19kcml2ZXIoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKCdiaW4nLCBz
ZWxmLmRyaXZlcl9uYW1lKCkpCiAKICAgICBkZWYgX3BhdGhfdG9faW1hZ2VfZGlmZihzZWxmKToK
QEAgLTEzOSw3ICsxMzksNyBAQCBjbGFzcyBFZmxQb3J0KFBvcnQpOgogICAgICAgICByZXR1cm4g
Y29tbWFuZAogCiAgICAgZGVmIF9nZXRfY3Jhc2hfbG9nKHNlbGYsIG5hbWUsIHBpZCwgc3Rkb3V0
LCBzdGRlcnIsIG5ld2VyX3RoYW4pOgotICAgICAgICByZXR1cm4gR0RCQ3Jhc2hMb2dHZW5lcmF0
b3IobmFtZSwgcGlkLCBuZXdlcl90aGFuLCBzZWxmLl9maWxlc3lzdGVtLCBzZWxmLl9wYXRoX3Rv
X2RyaXZlcikuZ2VuZXJhdGVfY3Jhc2hfbG9nKHN0ZG91dCwgc3RkZXJyKQorICAgICAgICByZXR1
cm4gR0RCQ3Jhc2hMb2dHZW5lcmF0b3IobmFtZSwgcGlkLCBuZXdlcl90aGFuLCBzZWxmLl9maWxl
c3lzdGVtLCBzZWxmLnBhdGhfdG9fZHJpdmVyKS5nZW5lcmF0ZV9jcmFzaF9sb2coc3Rkb3V0LCBz
dGRlcnIpCiAKICAgICBkZWYgdGVzdF9leHBlY3RhdGlvbnNfZmlsZV9wb3NpdGlvbihzZWxmKToK
ICAgICAgICAgIyBFRkwgcG9ydCBiYXNlbGluZSBzZWFyY2ggcGF0aCBpcyBlZmwgLT4gd2syIC0+
IGdlbmVyaWMgKGFzIGVmbC13azIgYW5kIGVmbCBiYXNlbGluZXMgYXJlIG1lcmdlZCksIHNvIHBv
cnQgdGVzdCBleHBlY3RhdGlvbnMgZmlsZSBpcyBhdCB0aGlyZCB0byBsYXN0IHBvc2l0aW9uLgpJ
bmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2ZhY3RvcnkucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2ZhY3RvcnkucHkJKHJldmlzaW9uIDIxMzIz
NikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9mYWN0b3J5LnB5CSh3b3JraW5nIGNv
cHkpCkBAIC00Nyw2ICs0Nyw5IEBAIGRlZiBwbGF0Zm9ybV9vcHRpb25zKHVzZV9nbG9icz1GYWxz
ZSk6CiAgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCctLWlvcy1zaW11bGF0b3InLCBhY3Rp
b249J3N0b3JlX2NvbnN0JywgZGVzdD0ncGxhdGZvcm0nLAogICAgICAgICAgICAgY29uc3Q9KCdp
b3Mtc2ltdWxhdG9yJyksCiAgICAgICAgICAgICBoZWxwPSgnQWxpYXMgZm9yIC0tcGxhdGZvcm09
aW9zLXNpbXVsYXRvcicpKSwKKyAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oJy0tbm8taW5z
dGFsbCcsIGFjdGlvbj0nc3RvcmVfY29uc3QnLCBkZXN0PSdpbnN0YWxsJywKKyAgICAgICAgICAg
IGNvbnN0PUZhbHNlLCBkZWZhdWx0PVRydWUsCisgICAgICAgICAgICBoZWxwPSdTa2lwIGFwcCBp
bnN0YWxsIGZvciBkZXZpY2UgdGVzdGluZycpLAogICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlv
bignLS1lZmwnLCBhY3Rpb249J3N0b3JlX2NvbnN0JywgZGVzdD0ncGxhdGZvcm0nLAogICAgICAg
ICAgICAgY29uc3Q9KCdlZmwqJyBpZiB1c2VfZ2xvYnMgZWxzZSAnZWZsJyksCiAgICAgICAgICAg
ICBoZWxwPSgnQWxpYXMgZm9yIC0tcGxhdGZvcm09ZWZsKicgaWYgdXNlX2dsb2JzIGVsc2UgJ0Fs
aWFzIGZvciAtLXBsYXRmb3JtPWVmbCcpKSwKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
cG9ydC9ndGsucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2d0
ay5weQkocmV2aXNpb24gMjEzMjM2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2d0
ay5weQkod29ya2luZyBjb3B5KQpAQCAtMTcwLDcgKzE3MCw3IEBAIGNsYXNzIEd0a1BvcnQoUG9y
dCk6CiAgICAgICAgICAgICBjb25maWd1cmF0aW9ucy5hcHBlbmQoVGVzdENvbmZpZ3VyYXRpb24o
dmVyc2lvbj1zZWxmLl92ZXJzaW9uLCBhcmNoaXRlY3R1cmU9J3g4NicsIGJ1aWxkX3R5cGU9YnVp
bGRfdHlwZSkpCiAgICAgICAgIHJldHVybiBjb25maWd1cmF0aW9ucwogCi0gICAgZGVmIF9wYXRo
X3RvX2RyaXZlcihzZWxmKToKKyAgICBkZWYgcGF0aF90b19kcml2ZXIoc2VsZik6CiAgICAgICAg
IHJldHVybiBzZWxmLl9idWlsdF9leGVjdXRhYmxlc19wYXRoKHNlbGYuZHJpdmVyX25hbWUoKSkK
IAogICAgIGRlZiBfcGF0aF90b19pbWFnZV9kaWZmKHNlbGYpOgpAQCAtMjIyLDcgKzIyMiw3IEBA
IGNsYXNzIEd0a1BvcnQoUG9ydCk6CiAKICAgICBkZWYgX2dldF9jcmFzaF9sb2coc2VsZiwgbmFt
ZSwgcGlkLCBzdGRvdXQsIHN0ZGVyciwgbmV3ZXJfdGhhbik6CiAgICAgICAgIG5hbWUgPSAiV2Vi
S2l0V2ViUHJvY2VzcyIgaWYgbmFtZSA9PSAiV2ViUHJvY2VzcyIgZWxzZSBuYW1lCi0gICAgICAg
IHJldHVybiBHREJDcmFzaExvZ0dlbmVyYXRvcihuYW1lLCBwaWQsIG5ld2VyX3RoYW4sIHNlbGYu
X2ZpbGVzeXN0ZW0sIHNlbGYuX3BhdGhfdG9fZHJpdmVyKS5nZW5lcmF0ZV9jcmFzaF9sb2coc3Rk
b3V0LCBzdGRlcnIpCisgICAgICAgIHJldHVybiBHREJDcmFzaExvZ0dlbmVyYXRvcihuYW1lLCBw
aWQsIG5ld2VyX3RoYW4sIHNlbGYuX2ZpbGVzeXN0ZW0sIHNlbGYucGF0aF90b19kcml2ZXIpLmdl
bmVyYXRlX2NyYXNoX2xvZyhzdGRvdXQsIHN0ZGVycikKIAogICAgIGRlZiB0ZXN0X2V4cGVjdGF0
aW9uc19maWxlX3Bvc2l0aW9uKHNlbGYpOgogICAgICAgICAjIEdUSyBwb3J0IGJhc2VsaW5lIHNl
YXJjaCBwYXRoIGlzIGd0ayAtPiB3azIgLT4gZ2VuZXJpYyAoYXMgZ3RrLXdrMiBhbmQgZ3RrIGJh
c2VsaW5lcyBhcmUgbWVyZ2VkKSwgc28gcG9ydCB0ZXN0IGV4cGVjdGF0aW9ucyBmaWxlIGlzIGF0
IHRoaXJkIHRvIGxhc3QgcG9zaXRpb24uCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvaW9zLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3Mu
cHkJKHJldmlzaW9uIDIxMzIzNikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3Mu
cHkJKHdvcmtpbmcgY29weSkKQEAgLTI0LDExICsyNCwzNCBAQCBpbXBvcnQgbG9nZ2luZwogCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5tZW1vaXplZCBpbXBvcnQgbWVtb2l6ZWQKIGZyb20gd2Via2l0
cHkucG9ydC5kYXJ3aW4gaW1wb3J0IERhcndpblBvcnQKK2Zyb20gd2Via2l0cHkucG9ydC5kcml2
ZXIgaW1wb3J0IERyaXZlcgogZnJvbSB3ZWJraXRweS5wb3J0LnNpbXVsYXRvcl9wcm9jZXNzIGlt
cG9ydCBTaW11bGF0b3JQcm9jZXNzCiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVf
XykKIAogCitjbGFzcyBpT1NEcml2ZXIoRHJpdmVyKToKKworICAgIGluc3RhbGxfZGljdGlvbmFy
eSA9IHt9CisKKyAgICBkZWYgX3N0YXJ0KHNlbGYsIHBpeGVsX3Rlc3QsIHBlcl90ZXN0X2FyZ3Mp
OgorICAgICAgICBkZXZpY2UgPSBzZWxmLl9wb3J0LmRldmljZV9mb3Jfd29ya2VyX251bWJlcihz
ZWxmLl93b3JrZXJfbnVtYmVyKQorICAgICAgICBpc19pbnN0YWxsZWQgPSBkZXZpY2UudWRpZCBp
biBpT1NEcml2ZXIuaW5zdGFsbF9kaWN0aW9uYXJ5IGFuZCBpT1NEcml2ZXIuaW5zdGFsbF9kaWN0
aW9uYXJ5W2RldmljZS51ZGlkXQorICAgICAgICBpZiBub3QgaXNfaW5zdGFsbGVkIGFuZCBzZWxm
Ll9wb3J0LmdldF9vcHRpb24oJ2luc3RhbGwnKToKKyAgICAgICAgICAgIF9sb2cud2FybignSW5z
dGFsbGluZyB0byB7fScuZm9ybWF0KGRldmljZS51ZGlkKSkKKyAgICAgICAgICAgIGVudiA9IHt9
CisgICAgICAgICAgICBlbnYgPSBzZWxmLl9zZXR1cF9lbnZpcm9uX2R5bGQoZW52KQorICAgICAg
ICAgICAgaWYgbm90IGRldmljZS5pbnN0YWxsX2FwcChzZWxmLl9wb3J0LnBhdGhfdG9fZHJpdmVy
KCksIGVudik6CisgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdGYWlsZWQgdG8g
aW5zdGFsbCBhcHAge30gb24gZGV2aWNlIHt9Jy5mb3JtYXQoc2VsZi5fcG9ydC5wYXRoX3RvX2Ry
aXZlcigpLCBkZXZpY2UudWRpZCkpCisgICAgICAgICAgICBpT1NEcml2ZXIuaW5zdGFsbF9kaWN0
aW9uYXJ5W2RldmljZS51ZGlkXSA9IFRydWUKKyAgICAgICAgICAgIF9sb2cud2FybignSW5zdGFs
bCBjb21wbGV0ZWQnKQorICAgICAgICBlbGlmIGRldmljZS51ZGlkIG5vdCBpbiBpT1NEcml2ZXIu
aW5zdGFsbF9kaWN0aW9uYXJ5OgorICAgICAgICAgICAgX2xvZy53YXJuKCdTa2lwcGluZyBpbnN0
YWxsIG9uIHt9Jy5mb3JtYXQoZGV2aWNlLnVkaWQpKQorICAgICAgICAgICAgaU9TRHJpdmVyLmlu
c3RhbGxfZGljdGlvbmFyeVtkZXZpY2UudWRpZF0gPSBGYWxzZQorCisgICAgICAgIHN1cGVyKGlP
U0RyaXZlciwgc2VsZikuX3N0YXJ0KHBpeGVsX3Rlc3QsIHBlcl90ZXN0X2FyZ3MpCisKKwogY2xh
c3MgSU9TUG9ydChEYXJ3aW5Qb3J0KToKICAgICBwb3J0X25hbWUgPSAiaW9zIgogCkBAIC01NSw2
ICs3OCwxNCBAQCBjbGFzcyBJT1NQb3J0KERhcndpblBvcnQpOgogICAgICAgICAgICAgcmV0dXJu
ICdXZWJLaXRUZXN0UnVubmVyQXBwLmFwcCcKICAgICAgICAgcmV0dXJuICdEdW1wUmVuZGVyVHJl
ZS5hcHAnCiAKKyAgICBkZWYgX2RyaXZlcl9jbGFzcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGlP
U0RyaXZlcgorCisgICAgZGVmIF9jaGVja19kcml2ZXIoc2VsZik6CisgICAgICAgIGlmIHNlbGYu
Z2V0X29wdGlvbignaW5zdGFsbCcpOgorICAgICAgICAgICAgcmV0dXJuIHN1cGVyKElPU1BvcnQp
Ll9jaGVja19kcml2ZXIoKQorICAgICAgICByZXR1cm4gVHJ1ZQorCiAgICAgQG1lbW9pemVkCiAg
ICAgZGVmIGNoaWxkX3Byb2Nlc3NlcyhzZWxmKToKICAgICAgICAgcmV0dXJuIGludChzZWxmLmdl
dF9vcHRpb24oJ2NoaWxkX3Byb2Nlc3NlcycpKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wb3J0L2xpbnV4X2dldF9jcmFzaF9sb2cucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9wb3J0L2xpbnV4X2dldF9jcmFzaF9sb2cucHkJKHJldmlzaW9uIDIxMzIzNikK
KysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9saW51eF9nZXRfY3Jhc2hfbG9nLnB5CSh3
b3JraW5nIGNvcHkpCkBAIC0zNiwxMCArMzYsMTAgQEAgY2xhc3MgR0RCQ3Jhc2hMb2dHZW5lcmF0
b3Iob2JqZWN0KToKICAgICAgICAgc2VsZi5waWQgPSBwaWQKICAgICAgICAgc2VsZi5uZXdlcl90
aGFuID0gbmV3ZXJfdGhhbgogICAgICAgICBzZWxmLl9maWxlc3lzdGVtID0gZmlsZXN5c3RlbQot
ICAgICAgICBzZWxmLl9wYXRoX3RvX2RyaXZlciA9IHBhdGhfdG9fZHJpdmVyCisgICAgICAgIHNl
bGYucGF0aF90b19kcml2ZXIgPSBwYXRoX3RvX2RyaXZlcgogCiAgICAgZGVmIF9nZXRfZ2RiX291
dHB1dChzZWxmLCBjb3JlZHVtcF9wYXRoKToKLSAgICAgICAgcHJvY2Vzc19uYW1lID0gc2VsZi5f
ZmlsZXN5c3RlbS5qb2luKG9zLnBhdGguZGlybmFtZShzdHIoc2VsZi5fcGF0aF90b19kcml2ZXIo
KSkpLCBzZWxmLm5hbWUpCisgICAgICAgIHByb2Nlc3NfbmFtZSA9IHNlbGYuX2ZpbGVzeXN0ZW0u
am9pbihvcy5wYXRoLmRpcm5hbWUoc3RyKHNlbGYucGF0aF90b19kcml2ZXIoKSkpLCBzZWxmLm5h
bWUpCiAgICAgICAgIGNtZCA9IFsnZ2RiJywgJy1leCcsICd0aHJlYWQgYXBwbHkgYWxsIGJ0IDEw
MjQnLCAnLS1iYXRjaCcsIHByb2Nlc3NfbmFtZSwgY29yZWR1bXBfcGF0aF0KICAgICAgICAgcHJv
YyA9IHN1YnByb2Nlc3MuUG9wZW4oY21kLCBzdGRpbj1Ob25lLCBzdGRvdXQ9c3VicHJvY2Vzcy5Q
SVBFLCBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQogICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHBy
b2MuY29tbXVuaWNhdGUoKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L21vY2tf
ZHJ0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9tb2NrX2Ry
dC5weQkocmV2aXNpb24gMjEzMjM2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L21v
Y2tfZHJ0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC04NCw3ICs4NCw3IEBAIGNsYXNzIE1vY2tEUlRQ
b3J0KG9iamVjdCk6CiAgICAgICAgIHBhdGhfdG9fdGhpc19maWxlID0gcG9ydC5ob3N0LmZpbGVz
eXN0ZW0uYWJzcGF0aChfX2ZpbGVfXy5yZXBsYWNlKCcucHljJywgJy5weScpKQogICAgICAgICBk
cml2ZXIgPSBwb3J0Ll9fZGVsZWdhdGUuX2RyaXZlcl9jbGFzcygpKHBvcnQsIHdvcmtlcl9udW1i
ZXIsIHBpeGVsX3Rlc3RzLCBub190aW1lb3V0KQogICAgICAgICBkcml2ZXIuY21kX2xpbmUgPSBw
b3J0Ll9vdmVycmlkaW5nX2NtZF9saW5lKGRyaXZlci5jbWRfbGluZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0Ll9fZGVsZWdhdGUuX3Bh
dGhfdG9fZHJpdmVyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcG9ydC5fX2RlbGVnYXRlLnBhdGhfdG9fZHJpdmVyKCksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzLmV4ZWN1dGFibGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0
aF90b190aGlzX2ZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcG9ydC5fX2RlbGVnYXRlLm5hbWUoKSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5CShyZXZpc2lvbiAyMTMyMzYpCisrKyBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvcG9ydF90ZXN0Y2FzZS5weQkod29ya2luZyBjb3B5
KQpAQCAtNDg2LDkgKzQ4Niw5IEBAIGNsYXNzIFBvcnRUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2Fz
ZSk6CiAgICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydCgpCiAgICAgICAgIHBvcnQuX29wdGlv
bnMgPSBNb2NrT3B0aW9ucyhyb290PScvZm9vJykKICAgICAgICAgaWYgc3lzLnBsYXRmb3JtLnN0
YXJ0c3dpdGgoJ3dpbicpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0Ll9wYXRo
X3RvX2RyaXZlcigpLCAiL2Zvby9EdW1wUmVuZGVyVHJlZS5leGUiKQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChwb3J0LnBhdGhfdG9fZHJpdmVyKCksICIvZm9vL0R1bXBSZW5kZXJUcmVl
LmV4ZSIpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQu
X3BhdGhfdG9fZHJpdmVyKCksICIvZm9vL0R1bXBSZW5kZXJUcmVlIikKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocG9ydC5wYXRoX3RvX2RyaXZlcigpLCAiL2Zvby9EdW1wUmVuZGVyVHJl
ZSIpCiAKICAgICBkZWYgdGVzdF90ZXN0X2V4cGVjdGF0aW9ucyhzZWxmKToKICAgICAgICAgIyBD
aGVjayB0aGF0IHdlIHJlYWQgdGhlIGV4cGVjdGF0aW9ucyBmaWxlCkluZGV4OiBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvc2ltdWxhdG9yX3Byb2Nlc3MucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3NpbXVsYXRvcl9wcm9jZXNzLnB5CShyZXZpc2lvbiAy
MTMyMzYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2ltdWxhdG9yX3Byb2Nlc3Mu
cHkJKHdvcmtpbmcgY29weSkKQEAgLTU5LDggKzU5LDYgQEAgY2xhc3MgU2ltdWxhdG9yUHJvY2Vz
cyhTZXJ2ZXJQcm9jZXNzKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydF9vYmosIG5hbWUs
IGNtZCwgZW52PU5vbmUsIHVuaXZlcnNhbF9uZXdsaW5lcz1GYWxzZSwgdHJlYXRfbm9fZGF0YV9h
c19jcmFzaD1GYWxzZSwgd29ya2VyX251bWJlcj1Ob25lKToKICAgICAgICAgc2VsZi5fYnVuZGxl
X2lkID0gcG9ydF9vYmouYXBwX2lkZW50aWZpZXJfZnJvbV9idW5kbGUoY21kWzBdKQogICAgICAg
ICBzZWxmLl9kZXZpY2UgPSBwb3J0X29iai5kZXZpY2VfZm9yX3dvcmtlcl9udW1iZXIod29ya2Vy
X251bWJlcikKLSAgICAgICAgaWYgbm90IHNlbGYuX2RldmljZS5pbnN0YWxsX2FwcChjbWRbMF0s
IGVudik6Ci0gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0ZhaWxlZCB0byBpbnN0YWxs
IGFwcCB7fSBvbiBzaW11bGF0b3IgZGV2aWNlIHt9Jy5mb3JtYXQoY21kWzBdLCBzZWxmLl9kZXZp
Y2UudWRpZCkpCiAgICAgICAgIGVudlsnSVBDX0lERU5USUZJRVInXSA9IHNlbGYuX2J1bmRsZV9p
ZCArICctJyArIHNlbGYuX2RldmljZS51ZGlkCiAKICAgICAgICAgIyBUaGlzIGxvY2F0aW9uIG1h
dGNoZXMgdGhlIGxvY2F0aW9uIHVzZWQgYnkgV2ViS2l0VGVzdFJ1bm5lciBhbmQgRHVtcFJlbmRl
clRyZWUKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC90ZXN0LnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC90ZXN0LnB5CShyZXZpc2lvbiAyMTMy
MzYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvdGVzdC5weQkod29ya2luZyBjb3B5
KQpAQCAtMzkyLDEwICszOTIsMTAgQEAgY2xhc3MgVGVzdFBvcnQoUG9ydCk6CiAgICAgZGVmIGRl
ZmF1bHRfcGl4ZWxfdGVzdHMoc2VsZik6CiAgICAgICAgIHJldHVybiBUcnVlCiAKLSAgICBkZWYg
X3BhdGhfdG9fZHJpdmVyKHNlbGYpOgorICAgIGRlZiBwYXRoX3RvX2RyaXZlcihzZWxmKToKICAg
ICAgICAgIyBUaGlzIHJvdXRpbmUgc2hvdWxkbid0IG5vcm1hbGx5IGJlIGNhbGxlZCwgYnV0IGl0
IGlzIGNhbGxlZCBieQogICAgICAgICAjIHRoZSBtb2NrX2RydCBEcml2ZXIuIFdlIHJldHVybiBz
b21ldGhpbmcsIGJ1dCBtYWtlIHN1cmUgaXQncyB1c2VsZXNzLgotICAgICAgICByZXR1cm4gJ01P
Q0sgX3BhdGhfdG9fZHJpdmVyJworICAgICAgICByZXR1cm4gJ01PQ0sgcGF0aF90b19kcml2ZXIn
CiAKICAgICBkZWYgYmFzZWxpbmVfc2VhcmNoX3BhdGgoc2VsZik6CiAgICAgICAgIHNlYXJjaF9w
YXRocyA9IHsKQEAgLTUzNyw3ICs1MzcsNyBAQCBjbGFzcyBUZXN0RHJpdmVyKERyaXZlcik6CiAK
ICAgICBkZWYgY21kX2xpbmUoc2VsZiwgcGl4ZWxfdGVzdHMsIHBlcl90ZXN0X2FyZ3MpOgogICAg
ICAgICBwaXhlbF90ZXN0c19mbGFnID0gJy1wJyBpZiBwaXhlbF90ZXN0cyBlbHNlICcnCi0gICAg
ICAgIHJldHVybiBbc2VsZi5fcG9ydC5fcGF0aF90b19kcml2ZXIoKV0gKyBbcGl4ZWxfdGVzdHNf
ZmxhZ10gKyBzZWxmLl9wb3J0LmdldF9vcHRpb24oJ2FkZGl0aW9uYWxfZHJ0X2ZsYWcnLCBbXSkg
KyBwZXJfdGVzdF9hcmdzCisgICAgICAgIHJldHVybiBbc2VsZi5fcG9ydC5wYXRoX3RvX2RyaXZl
cigpXSArIFtwaXhlbF90ZXN0c19mbGFnXSArIHNlbGYuX3BvcnQuZ2V0X29wdGlvbignYWRkaXRp
b25hbF9kcnRfZmxhZycsIFtdKSArIHBlcl90ZXN0X2FyZ3MKIAogICAgIGRlZiBydW5fdGVzdChz
ZWxmLCB0ZXN0X2lucHV0LCBzdG9wX3doZW5fZG9uZSk6CiAgICAgICAgIGlmIG5vdCBzZWxmLnN0
YXJ0ZWQ6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvd2luLnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC93aW4ucHkJKHJldmlzaW9uIDIxMzIz
NikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC93aW4ucHkJKHdvcmtpbmcgY29weSkK
QEAgLTEzMiw3ICsxMzIsNyBAQCBjbGFzcyBXaW5Qb3J0KEFwcGxlUG9ydCk6CiAgICAgICAgIHNl
bGYuX3J1bl9zY3JpcHQoJ3J1bi1zYWZhcmknLCBbYWJzcGF0aF90b191cmkoU3lzdGVtSG9zdCgp
LnBsYXRmb3JtLCByZXN1bHRzX2ZpbGVuYW1lKV0pCiAKICAgICBkZWYgX3J1bnRpbWVfZmVhdHVy
ZV9saXN0KHNlbGYpOgotICAgICAgICBzdXBwb3J0ZWRfZmVhdHVyZXNfY29tbWFuZCA9IFtzZWxm
Ll9wYXRoX3RvX2RyaXZlcigpLCAnLS1wcmludC1zdXBwb3J0ZWQtZmVhdHVyZXMnXQorICAgICAg
ICBzdXBwb3J0ZWRfZmVhdHVyZXNfY29tbWFuZCA9IFtzZWxmLnBhdGhfdG9fZHJpdmVyKCksICct
LXByaW50LXN1cHBvcnRlZC1mZWF0dXJlcyddCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG91
dHB1dCA9IHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChzdXBwb3J0ZWRfZmVhdHVyZXNfY29t
bWFuZCwgZXJyb3JfaGFuZGxlcj1FeGVjdXRpdmUuaWdub3JlX2Vycm9yKQogICAgICAgICBleGNl
cHQgT1NFcnJvciwgZToK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303135</attachid>
            <date>2017-03-01 15:35:12 -0800</date>
            <delta_ts>2017-03-06 09:30:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169054-20170301153511.patch</filename>
            <type>text/plain</type>
            <size>17748</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIxMzIzOSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDUxIEBACisyMDE3LTAzLTAxICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICB3ZWJraXRweTogRWZmaWNpZW50IGFwcCBpbnN0YWxsYXRpb24gZm9yIGRl
dmljZSB0ZXN0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjkwNTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBXZSBzaG91bGQgb25seSBpbnN0YWxsIGFuIGFwcCBvbiBhIGRldmljZSBvbmNlLCBub3Qg
ZXZlcnkgdGltZSB0aGUgYXBwIGlzIHJ1bi4gIE1vdmUKKyAgICAgICAgYXBwIGluc3RhbGxhdGlv
biB0byB0aGUgZHJpdmVyIGFuZCBhZGQgYSBjb21tYW5kIGxpbmUgZmxhZyB0byBza2lwIGluc3Rh
bGxpbmcuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3Bl
cmZ0ZXN0c3J1bm5lci5weTogTWFrZSBfcGF0aF90b19kcml2ZXIoKSBwdWJsaWMuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHk6CisgICAgICAgIChQb3J0Ll9jaGVja19k
cml2ZXIpOiBNYWtlIF9wYXRoX3RvX2RyaXZlcigpIHB1YmxpYy4KKyAgICAgICAgKFBvcnQucGF0
aF90b19kcml2ZXIpOiBNYWtlIF9wYXRoX3RvX2RyaXZlcigpIHB1YmxpYy4KKyAgICAgICAgKFBv
cnQuX3BhdGhfdG9fZHJpdmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3BvcnQvZHJpdmVyLnB5OgorICAgICAgICAoRHJpdmVyLl9faW5pdF9fKToKKyAgICAgICAgKERy
aXZlci5fc2V0dXBfZW52aXJvbl9keWxkKTogTWFrZSBkeWxkIGVudmlyb25tZW50IHNldHVwIHNl
cGFyYXRlLgorICAgICAgICAoRHJpdmVyLl9zZXR1cF9lbnZpcm9uX2Zvcl9kcml2ZXIpOiBDYWxs
IGR5bGQgZW52aXJvbm1lbnQgc2V0dXAgZnVuY3Rpb24uCisgICAgICAgIChEcml2ZXIuY21kX2xp
bmUpOiBNYWtlIF9wYXRoX3RvX2RyaXZlcigpIHB1YmxpYy4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3BvcnQvZWZsLnB5OiBNYWtlIF9wYXRoX3RvX2RyaXZlcigpIHB1YmxpYy4KKyAgICAg
ICAgKEVmbFBvcnQucGF0aF90b19kcml2ZXIpOiBEaXR0by4KKyAgICAgICAgKEVmbFBvcnQuX2dl
dF9jcmFzaF9sb2cpOiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvZmFj
dG9yeS5weToKKyAgICAgICAgKHBsYXRmb3JtX29wdGlvbnMpOiBNYWtlIF9wYXRoX3RvX2RyaXZl
cigpIHB1YmxpYy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvZ3RrLnB5OgorICAg
ICAgICAoR3RrUG9ydC5wYXRoX3RvX2RyaXZlcik6IE1ha2UgX3BhdGhfdG9fZHJpdmVyKCkgcHVi
bGljLgorICAgICAgICAoR3RrUG9ydC5fZ2V0X2NyYXNoX2xvZyk6IERpdHRvLgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3MucHk6CisgICAgICAgIChpT1NEcml2ZXIpOiBBZGQg
bmV3IGlPU0RyaXZlciBjbGFzcworICAgICAgICAoaU9TRHJpdmVyLl9zdGFydCk6IEluc3RhbGwg
YXBwIHRvIHRhcmdldCBkZXZpY2UgaWYgbm90IHlldCBpbnN0YWxsZWQuCisgICAgICAgIChJT1NQ
b3J0Ll9kcml2ZXJfY2xhc3MpOiBSZXR1cm4gaU9TRHJpdmVyIGFzIGRyaXZlciBjbGFzcy4KKyAg
ICAgICAgKElPU1BvcnQuX2NoZWNrX2RyaXZlcik6IE9ubHkgY2hlY2sgZHJpdmVyIGlmIGFwcCBp
cyBiZWluZyBpbnN0YWxsZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2xpbnV4
X2dldF9jcmFzaF9sb2cucHk6CisgICAgICAgIChHREJDcmFzaExvZ0dlbmVyYXRvci5fX2luaXRf
Xyk6IE1ha2UgX3BhdGhfdG9fZHJpdmVyKCkgcHVibGljLgorICAgICAgICAoR0RCQ3Jhc2hMb2dH
ZW5lcmF0b3IuX2dldF9nZGJfb3V0cHV0KTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9wb3J0L21vY2tfZHJ0LnB5OgorICAgICAgICAoTW9ja0RSVFBvcnQuX21vY2tlZF9kcml2
ZXJfbWFrZXIpOiBNYWtlIF9wYXRoX3RvX2RyaXZlcigpIHB1YmxpYy4KKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvcG9ydF90ZXN0Y2FzZS5weToKKyAgICAgICAgKFBvcnRUZXN0Q2Fz
ZS50ZXN0X3Jvb3Rfb3B0aW9uKTogTWFrZSBfcGF0aF90b19kcml2ZXIoKSBwdWJsaWMuCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3NpbXVsYXRvcl9wcm9jZXNzLnB5OgorICAgICAg
ICAoU2ltdWxhdG9yUHJvY2Vzcy5fX2luaXRfXyk6IFJlbW92ZSBhcHAgaW5zdGFsbGF0aW9uLgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC90ZXN0LnB5OgorICAgICAgICAoVGVzdFBv
cnQucGF0aF90b19kcml2ZXIpOiBNYWtlIF9wYXRoX3RvX2RyaXZlcigpIHB1YmxpYy4KKyAgICAg
ICAgKFRlc3REcml2ZXIuY21kX2xpbmUpOiBEaXR0by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L3BvcnQvd2luLnB5OgorICAgICAgICAoV2luUG9ydC5fcnVudGltZV9mZWF0dXJlX2xpc3Qp
OiBNYWtlIF9wYXRoX3RvX2RyaXZlcigpIHB1YmxpYy4KKwogMjAxNy0wMy0wMSAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSB3YXkgdG8gd2F0
Y2ggdGhlIENTU1Byb3BlcnRpZXMuanNvbiBmaWxlLCBhbmQgYWRkIG1lIGFuZCBEYW4gQmF0ZXMg
dG8gd2F0Y2ggaXQuCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rl
c3RzL3BlcmZ0ZXN0c3J1bm5lci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lci5weQkocmV2aXNpb24gMjEzMjM2
KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNy
dW5uZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTE5MSw3ICsxOTEsNyBAQCBjbGFzcyBQZXJmVGVz
dHNSdW5uZXIob2JqZWN0KToKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioiIiIpCiAKICAgICAgICAgaWYgbm90IHNlbGYuX3BvcnQuY2hlY2tfYnVp
bGQobmVlZHNfaHR0cD1GYWxzZSk6Ci0gICAgICAgICAgICBfbG9nLmVycm9yKCJCdWlsZCBub3Qg
dXAgdG8gZGF0ZSBmb3IgJXMiICUgc2VsZi5fcG9ydC5fcGF0aF90b19kcml2ZXIoKSkKKyAgICAg
ICAgICAgIF9sb2cuZXJyb3IoIkJ1aWxkIG5vdCB1cCB0byBkYXRlIGZvciAlcyIgJSBzZWxmLl9w
b3J0LnBhdGhfdG9fZHJpdmVyKCkpCiAgICAgICAgICAgICByZXR1cm4gc2VsZi5FWElUX0NPREVf
QkFEX0JVSUxECiAKICAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBzeXN0ZW0gZGVwZW5kZW5jaWVz
ICh0aGVtZXMsIGZvbnRzLCAuLi4pIGFyZSBjb3JyZWN0LgpJbmRleDogVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wb3J0L2Jhc2UucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wb3J0L2Jhc2UucHkJKHJldmlzaW9uIDIxMzIzNikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvcG9ydC9iYXNlLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMzUsNyArMjM1LDcgQEAgY2xhc3Mg
UG9ydChvYmplY3QpOgogICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgZGVmIF9jaGVja19kcml2
ZXIoc2VsZik6Ci0gICAgICAgIGRyaXZlcl9wYXRoID0gc2VsZi5fcGF0aF90b19kcml2ZXIoKQor
ICAgICAgICBkcml2ZXJfcGF0aCA9IHNlbGYucGF0aF90b19kcml2ZXIoKQogICAgICAgICBpZiBu
b3Qgc2VsZi5fZmlsZXN5c3RlbS5leGlzdHMoZHJpdmVyX3BhdGgpOgogICAgICAgICAgICAgX2xv
Zy5lcnJvcigiJXMgd2FzIG5vdCBmb3VuZCBhdCAlcyIgJSAoc2VsZi5kcml2ZXJfbmFtZSgpLCBk
cml2ZXJfcGF0aCkpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKQEAgLTEyNjAsNyArMTI2MCw3
IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKIAogICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3Rl
bS5qb2luKHNlbGYuX2ZpbGVzeXN0ZW0uYWJzcGF0aChyb290X2RpcmVjdG9yeSksICpjb21wcykK
IAotICAgIGRlZiBfcGF0aF90b19kcml2ZXIoc2VsZiwgY29uZmlndXJhdGlvbj1Ob25lKToKKyAg
ICBkZWYgcGF0aF90b19kcml2ZXIoc2VsZiwgY29uZmlndXJhdGlvbj1Ob25lKToKICAgICAgICAg
IiIiUmV0dXJucyB0aGUgZnVsbCBwYXRoIHRvIHRoZSB0ZXN0IGRyaXZlciAoRHVtcFJlbmRlclRy
ZWUpLiIiIgogICAgICAgICBsb2NhbF9kcml2ZXJfcGF0aCA9IHNlbGYuX2J1aWxkX3BhdGgoc2Vs
Zi5kcml2ZXJfbmFtZSgpKQogICAgICAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2lu
Jyk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZHJpdmVyLnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXIucHkJKHJldmlzaW9uIDIx
MzIzNikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXIucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTE2MSw3ICsxNjEsNyBAQCBjbGFzcyBEcml2ZXIob2JqZWN0KToKICAgICAgICAg
aWYgc2VsZi5fcG9ydC5nZXRfb3B0aW9uKCJwcm9maWxlIik6CiAgICAgICAgICAgICBwcm9maWxl
cl9uYW1lID0gc2VsZi5fcG9ydC5nZXRfb3B0aW9uKCJwcm9maWxlciIpCiAgICAgICAgICAgICBz
ZWxmLl9wcm9maWxlciA9IFByb2ZpbGVyRmFjdG9yeS5jcmVhdGVfcHJvZmlsZXIoc2VsZi5fcG9y
dC5ob3N0LAotICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQuX3BhdGhfdG9fZHJpdmVyKCksIHNl
bGYuX3BvcnQucmVzdWx0c19kaXJlY3RvcnkoKSwgcHJvZmlsZXJfbmFtZSkKKyAgICAgICAgICAg
ICAgICBzZWxmLl9wb3J0LnBhdGhfdG9fZHJpdmVyKCksIHNlbGYuX3BvcnQucmVzdWx0c19kaXJl
Y3RvcnkoKSwgcHJvZmlsZXJfbmFtZSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYu
X3Byb2ZpbGVyID0gTm9uZQogCkBAIC0zMjUsMTIgKzMyNSwxNyBAQCBjbGFzcyBEcml2ZXIob2Jq
ZWN0KToKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGVudmlyb25tZW50W3ZhcmlhYmxlXSA9
IHBhdGgKIAotICAgIGRlZiBfc2V0dXBfZW52aXJvbl9mb3JfZHJpdmVyKHNlbGYsIGVudmlyb25t
ZW50KToKKyAgICBkZWYgX3NldHVwX2Vudmlyb25fZHlsZChzZWxmLCBlbnZpcm9ubWVudCk6CiAg
ICAgICAgIGJ1aWxkX3Jvb3RfcGF0aCA9IHN0cihzZWxmLl9wb3J0Ll9idWlsZF9wYXRoKCkpCiAg
ICAgICAgIHNlbGYuX2FwcGVuZF9lbnZpcm9ubWVudF92YXJpYWJsZV9wYXRoKGVudmlyb25tZW50
LCAnRFlMRF9MSUJSQVJZX1BBVEgnLCBidWlsZF9yb290X3BhdGgpCiAgICAgICAgIHNlbGYuX2Fw
cGVuZF9lbnZpcm9ubWVudF92YXJpYWJsZV9wYXRoKGVudmlyb25tZW50LCAnX19YUENfRFlMRF9M
SUJSQVJZX1BBVEgnLCBidWlsZF9yb290X3BhdGgpCiAgICAgICAgIHNlbGYuX2FwcGVuZF9lbnZp
cm9ubWVudF92YXJpYWJsZV9wYXRoKGVudmlyb25tZW50LCAnRFlMRF9GUkFNRVdPUktfUEFUSCcs
IGJ1aWxkX3Jvb3RfcGF0aCkKICAgICAgICAgc2VsZi5fYXBwZW5kX2Vudmlyb25tZW50X3Zhcmlh
YmxlX3BhdGgoZW52aXJvbm1lbnQsICdfX1hQQ19EWUxEX0ZSQU1FV09SS19QQVRIJywgYnVpbGRf
cm9vdF9wYXRoKQorICAgICAgICByZXR1cm4gZW52aXJvbm1lbnQKKworICAgIGRlZiBfc2V0dXBf
ZW52aXJvbl9mb3JfZHJpdmVyKHNlbGYsIGVudmlyb25tZW50KToKKyAgICAgICAgZW52aXJvbm1l
bnQgPSBzZWxmLl9zZXR1cF9lbnZpcm9uX2R5bGQoZW52aXJvbm1lbnQpCisKICAgICAgICAgIyBV
c2UgYW4gaXNvbGF0ZWQgdGVtcCBkaXJlY3RvcnkgdGhhdCBjYW4gYmUgZGVsZXRlZCBhZnRlciB0
ZXN0aW5nIChlc3BlY2lhbGx5IGltcG9ydGFudCBvbiBNYWMsIGFzCiAgICAgICAgICMgQ29yZU1l
ZGlhIGRpc2sgY2FjaGUgaXMgaW4gdGhlIHRlbXAgZGlyZWN0b3J5KS4KICAgICAgICAgZW52aXJv
bm1lbnRbJ1RNUERJUiddID0gc3RyKHNlbGYuX2RyaXZlcl90ZW1wZGlyKQpAQCAtMzk2LDcgKzQw
MSw3IEBAIGNsYXNzIERyaXZlcihvYmplY3QpOgogCiAgICAgZGVmIGNtZF9saW5lKHNlbGYsIHBp
eGVsX3Rlc3RzLCBwZXJfdGVzdF9hcmdzKToKICAgICAgICAgY21kID0gc2VsZi5fY29tbWFuZF93
cmFwcGVyKCkKLSAgICAgICAgY21kLmFwcGVuZChzZWxmLl9wb3J0Ll9wYXRoX3RvX2RyaXZlcigp
KQorICAgICAgICBjbWQuYXBwZW5kKHNlbGYuX3BvcnQucGF0aF90b19kcml2ZXIoKSkKICAgICAg
ICAgaWYgc2VsZi5fcG9ydC5nZXRfb3B0aW9uKCdnY19iZXR3ZWVuX3Rlc3RzJyk6CiAgICAgICAg
ICAgICBjbWQuYXBwZW5kKCctLWdjLWJldHdlZW4tdGVzdHMnKQogICAgICAgICBpZiBzZWxmLl9w
b3J0LmdldF9vcHRpb24oJ2NvbXBsZXhfdGV4dCcpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9wb3J0L2VmbC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvZWZsLnB5CShyZXZpc2lvbiAyMTMyMzYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvZWZsLnB5CSh3b3JraW5nIGNvcHkpCkBAIC05OSw3ICs5OSw3IEBAIGNsYXNzIEVmbFBvcnQo
UG9ydCk6CiAgICAgICAgICAgICByZXR1cm4gWG9yZ0RyaXZlcgogICAgICAgICByZXR1cm4gWHZm
YkRyaXZlcgogCi0gICAgZGVmIF9wYXRoX3RvX2RyaXZlcihzZWxmKToKKyAgICBkZWYgcGF0aF90
b19kcml2ZXIoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKCdiaW4nLCBz
ZWxmLmRyaXZlcl9uYW1lKCkpCiAKICAgICBkZWYgX3BhdGhfdG9faW1hZ2VfZGlmZihzZWxmKToK
QEAgLTEzOSw3ICsxMzksNyBAQCBjbGFzcyBFZmxQb3J0KFBvcnQpOgogICAgICAgICByZXR1cm4g
Y29tbWFuZAogCiAgICAgZGVmIF9nZXRfY3Jhc2hfbG9nKHNlbGYsIG5hbWUsIHBpZCwgc3Rkb3V0
LCBzdGRlcnIsIG5ld2VyX3RoYW4pOgotICAgICAgICByZXR1cm4gR0RCQ3Jhc2hMb2dHZW5lcmF0
b3IobmFtZSwgcGlkLCBuZXdlcl90aGFuLCBzZWxmLl9maWxlc3lzdGVtLCBzZWxmLl9wYXRoX3Rv
X2RyaXZlcikuZ2VuZXJhdGVfY3Jhc2hfbG9nKHN0ZG91dCwgc3RkZXJyKQorICAgICAgICByZXR1
cm4gR0RCQ3Jhc2hMb2dHZW5lcmF0b3IobmFtZSwgcGlkLCBuZXdlcl90aGFuLCBzZWxmLl9maWxl
c3lzdGVtLCBzZWxmLnBhdGhfdG9fZHJpdmVyKS5nZW5lcmF0ZV9jcmFzaF9sb2coc3Rkb3V0LCBz
dGRlcnIpCiAKICAgICBkZWYgdGVzdF9leHBlY3RhdGlvbnNfZmlsZV9wb3NpdGlvbihzZWxmKToK
ICAgICAgICAgIyBFRkwgcG9ydCBiYXNlbGluZSBzZWFyY2ggcGF0aCBpcyBlZmwgLT4gd2syIC0+
IGdlbmVyaWMgKGFzIGVmbC13azIgYW5kIGVmbCBiYXNlbGluZXMgYXJlIG1lcmdlZCksIHNvIHBv
cnQgdGVzdCBleHBlY3RhdGlvbnMgZmlsZSBpcyBhdCB0aGlyZCB0byBsYXN0IHBvc2l0aW9uLgpJ
bmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2ZhY3RvcnkucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2ZhY3RvcnkucHkJKHJldmlzaW9uIDIxMzIz
NikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9mYWN0b3J5LnB5CSh3b3JraW5nIGNv
cHkpCkBAIC00Nyw2ICs0Nyw5IEBAIGRlZiBwbGF0Zm9ybV9vcHRpb25zKHVzZV9nbG9icz1GYWxz
ZSk6CiAgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCctLWlvcy1zaW11bGF0b3InLCBhY3Rp
b249J3N0b3JlX2NvbnN0JywgZGVzdD0ncGxhdGZvcm0nLAogICAgICAgICAgICAgY29uc3Q9KCdp
b3Mtc2ltdWxhdG9yJyksCiAgICAgICAgICAgICBoZWxwPSgnQWxpYXMgZm9yIC0tcGxhdGZvcm09
aW9zLXNpbXVsYXRvcicpKSwKKyAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oJy0tbm8taW5z
dGFsbCcsIGFjdGlvbj0nc3RvcmVfY29uc3QnLCBkZXN0PSdpbnN0YWxsJywKKyAgICAgICAgICAg
IGNvbnN0PUZhbHNlLCBkZWZhdWx0PVRydWUsCisgICAgICAgICAgICBoZWxwPSdTa2lwIGFwcCBp
bnN0YWxsIGZvciBkZXZpY2UgdGVzdGluZycpLAogICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlv
bignLS1lZmwnLCBhY3Rpb249J3N0b3JlX2NvbnN0JywgZGVzdD0ncGxhdGZvcm0nLAogICAgICAg
ICAgICAgY29uc3Q9KCdlZmwqJyBpZiB1c2VfZ2xvYnMgZWxzZSAnZWZsJyksCiAgICAgICAgICAg
ICBoZWxwPSgnQWxpYXMgZm9yIC0tcGxhdGZvcm09ZWZsKicgaWYgdXNlX2dsb2JzIGVsc2UgJ0Fs
aWFzIGZvciAtLXBsYXRmb3JtPWVmbCcpKSwKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
cG9ydC9ndGsucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2d0
ay5weQkocmV2aXNpb24gMjEzMjM2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2d0
ay5weQkod29ya2luZyBjb3B5KQpAQCAtMTcwLDcgKzE3MCw3IEBAIGNsYXNzIEd0a1BvcnQoUG9y
dCk6CiAgICAgICAgICAgICBjb25maWd1cmF0aW9ucy5hcHBlbmQoVGVzdENvbmZpZ3VyYXRpb24o
dmVyc2lvbj1zZWxmLl92ZXJzaW9uLCBhcmNoaXRlY3R1cmU9J3g4NicsIGJ1aWxkX3R5cGU9YnVp
bGRfdHlwZSkpCiAgICAgICAgIHJldHVybiBjb25maWd1cmF0aW9ucwogCi0gICAgZGVmIF9wYXRo
X3RvX2RyaXZlcihzZWxmKToKKyAgICBkZWYgcGF0aF90b19kcml2ZXIoc2VsZik6CiAgICAgICAg
IHJldHVybiBzZWxmLl9idWlsdF9leGVjdXRhYmxlc19wYXRoKHNlbGYuZHJpdmVyX25hbWUoKSkK
IAogICAgIGRlZiBfcGF0aF90b19pbWFnZV9kaWZmKHNlbGYpOgpAQCAtMjIyLDcgKzIyMiw3IEBA
IGNsYXNzIEd0a1BvcnQoUG9ydCk6CiAKICAgICBkZWYgX2dldF9jcmFzaF9sb2coc2VsZiwgbmFt
ZSwgcGlkLCBzdGRvdXQsIHN0ZGVyciwgbmV3ZXJfdGhhbik6CiAgICAgICAgIG5hbWUgPSAiV2Vi
S2l0V2ViUHJvY2VzcyIgaWYgbmFtZSA9PSAiV2ViUHJvY2VzcyIgZWxzZSBuYW1lCi0gICAgICAg
IHJldHVybiBHREJDcmFzaExvZ0dlbmVyYXRvcihuYW1lLCBwaWQsIG5ld2VyX3RoYW4sIHNlbGYu
X2ZpbGVzeXN0ZW0sIHNlbGYuX3BhdGhfdG9fZHJpdmVyKS5nZW5lcmF0ZV9jcmFzaF9sb2coc3Rk
b3V0LCBzdGRlcnIpCisgICAgICAgIHJldHVybiBHREJDcmFzaExvZ0dlbmVyYXRvcihuYW1lLCBw
aWQsIG5ld2VyX3RoYW4sIHNlbGYuX2ZpbGVzeXN0ZW0sIHNlbGYucGF0aF90b19kcml2ZXIpLmdl
bmVyYXRlX2NyYXNoX2xvZyhzdGRvdXQsIHN0ZGVycikKIAogICAgIGRlZiB0ZXN0X2V4cGVjdGF0
aW9uc19maWxlX3Bvc2l0aW9uKHNlbGYpOgogICAgICAgICAjIEdUSyBwb3J0IGJhc2VsaW5lIHNl
YXJjaCBwYXRoIGlzIGd0ayAtPiB3azIgLT4gZ2VuZXJpYyAoYXMgZ3RrLXdrMiBhbmQgZ3RrIGJh
c2VsaW5lcyBhcmUgbWVyZ2VkKSwgc28gcG9ydCB0ZXN0IGV4cGVjdGF0aW9ucyBmaWxlIGlzIGF0
IHRoaXJkIHRvIGxhc3QgcG9zaXRpb24uCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvaW9zLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3Mu
cHkJKHJldmlzaW9uIDIxMzIzNikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3Mu
cHkJKHdvcmtpbmcgY29weSkKQEAgLTI0LDExICsyNCwzNCBAQCBpbXBvcnQgbG9nZ2luZwogCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5tZW1vaXplZCBpbXBvcnQgbWVtb2l6ZWQKIGZyb20gd2Via2l0
cHkucG9ydC5kYXJ3aW4gaW1wb3J0IERhcndpblBvcnQKK2Zyb20gd2Via2l0cHkucG9ydC5kcml2
ZXIgaW1wb3J0IERyaXZlcgogZnJvbSB3ZWJraXRweS5wb3J0LnNpbXVsYXRvcl9wcm9jZXNzIGlt
cG9ydCBTaW11bGF0b3JQcm9jZXNzCiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVf
XykKIAogCitjbGFzcyBpT1NEcml2ZXIoRHJpdmVyKToKKworICAgIGluc3RhbGxfZGljdGlvbmFy
eSA9IHt9CisKKyAgICBkZWYgX3N0YXJ0KHNlbGYsIHBpeGVsX3Rlc3QsIHBlcl90ZXN0X2FyZ3Mp
OgorICAgICAgICBkZXZpY2UgPSBzZWxmLl9wb3J0LmRldmljZV9mb3Jfd29ya2VyX251bWJlcihz
ZWxmLl93b3JrZXJfbnVtYmVyKQorICAgICAgICBpc19pbnN0YWxsZWQgPSBkZXZpY2UudWRpZCBp
biBpT1NEcml2ZXIuaW5zdGFsbF9kaWN0aW9uYXJ5IGFuZCBpT1NEcml2ZXIuaW5zdGFsbF9kaWN0
aW9uYXJ5W2RldmljZS51ZGlkXQorICAgICAgICBpZiBub3QgaXNfaW5zdGFsbGVkIGFuZCBzZWxm
Ll9wb3J0LmdldF9vcHRpb24oJ2luc3RhbGwnKToKKyAgICAgICAgICAgIF9sb2cud2FybignSW5z
dGFsbGluZyB0byB7fScuZm9ybWF0KGRldmljZS51ZGlkKSkKKyAgICAgICAgICAgIGVudiA9IHt9
CisgICAgICAgICAgICBlbnYgPSBzZWxmLl9zZXR1cF9lbnZpcm9uX2R5bGQoZW52KQorICAgICAg
ICAgICAgaWYgbm90IGRldmljZS5pbnN0YWxsX2FwcChzZWxmLl9wb3J0LnBhdGhfdG9fZHJpdmVy
KCksIGVudik6CisgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdGYWlsZWQgdG8g
aW5zdGFsbCBhcHAge30gb24gZGV2aWNlIHt9Jy5mb3JtYXQoc2VsZi5fcG9ydC5wYXRoX3RvX2Ry
aXZlcigpLCBkZXZpY2UudWRpZCkpCisgICAgICAgICAgICBpT1NEcml2ZXIuaW5zdGFsbF9kaWN0
aW9uYXJ5W2RldmljZS51ZGlkXSA9IFRydWUKKyAgICAgICAgICAgIF9sb2cud2FybignSW5zdGFs
bCBjb21wbGV0ZWQnKQorICAgICAgICBlbGlmIGRldmljZS51ZGlkIG5vdCBpbiBpT1NEcml2ZXIu
aW5zdGFsbF9kaWN0aW9uYXJ5OgorICAgICAgICAgICAgX2xvZy53YXJuKCdTa2lwcGluZyBpbnN0
YWxsIG9uIHt9Jy5mb3JtYXQoZGV2aWNlLnVkaWQpKQorICAgICAgICAgICAgaU9TRHJpdmVyLmlu
c3RhbGxfZGljdGlvbmFyeVtkZXZpY2UudWRpZF0gPSBGYWxzZQorCisgICAgICAgIHN1cGVyKGlP
U0RyaXZlciwgc2VsZikuX3N0YXJ0KHBpeGVsX3Rlc3QsIHBlcl90ZXN0X2FyZ3MpCisKKwogY2xh
c3MgSU9TUG9ydChEYXJ3aW5Qb3J0KToKICAgICBwb3J0X25hbWUgPSAiaW9zIgogCkBAIC01NSw2
ICs3OCwxNCBAQCBjbGFzcyBJT1NQb3J0KERhcndpblBvcnQpOgogICAgICAgICAgICAgcmV0dXJu
ICdXZWJLaXRUZXN0UnVubmVyQXBwLmFwcCcKICAgICAgICAgcmV0dXJuICdEdW1wUmVuZGVyVHJl
ZS5hcHAnCiAKKyAgICBkZWYgX2RyaXZlcl9jbGFzcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGlP
U0RyaXZlcgorCisgICAgZGVmIF9jaGVja19kcml2ZXIoc2VsZik6CisgICAgICAgIGlmIHNlbGYu
Z2V0X29wdGlvbignaW5zdGFsbCcpOgorICAgICAgICAgICAgcmV0dXJuIHN1cGVyKElPU1BvcnQs
IHNlbGYpLl9jaGVja19kcml2ZXIoKQorICAgICAgICByZXR1cm4gVHJ1ZQorCiAgICAgQG1lbW9p
emVkCiAgICAgZGVmIGNoaWxkX3Byb2Nlc3NlcyhzZWxmKToKICAgICAgICAgcmV0dXJuIGludChz
ZWxmLmdldF9vcHRpb24oJ2NoaWxkX3Byb2Nlc3NlcycpKQpJbmRleDogVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wb3J0L2xpbnV4X2dldF9jcmFzaF9sb2cucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wb3J0L2xpbnV4X2dldF9jcmFzaF9sb2cucHkJKHJldmlzaW9uIDIx
MzIzNikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9saW51eF9nZXRfY3Jhc2hfbG9n
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMCArMzYsMTAgQEAgY2xhc3MgR0RCQ3Jhc2hMb2dH
ZW5lcmF0b3Iob2JqZWN0KToKICAgICAgICAgc2VsZi5waWQgPSBwaWQKICAgICAgICAgc2VsZi5u
ZXdlcl90aGFuID0gbmV3ZXJfdGhhbgogICAgICAgICBzZWxmLl9maWxlc3lzdGVtID0gZmlsZXN5
c3RlbQotICAgICAgICBzZWxmLl9wYXRoX3RvX2RyaXZlciA9IHBhdGhfdG9fZHJpdmVyCisgICAg
ICAgIHNlbGYucGF0aF90b19kcml2ZXIgPSBwYXRoX3RvX2RyaXZlcgogCiAgICAgZGVmIF9nZXRf
Z2RiX291dHB1dChzZWxmLCBjb3JlZHVtcF9wYXRoKToKLSAgICAgICAgcHJvY2Vzc19uYW1lID0g
c2VsZi5fZmlsZXN5c3RlbS5qb2luKG9zLnBhdGguZGlybmFtZShzdHIoc2VsZi5fcGF0aF90b19k
cml2ZXIoKSkpLCBzZWxmLm5hbWUpCisgICAgICAgIHByb2Nlc3NfbmFtZSA9IHNlbGYuX2ZpbGVz
eXN0ZW0uam9pbihvcy5wYXRoLmRpcm5hbWUoc3RyKHNlbGYucGF0aF90b19kcml2ZXIoKSkpLCBz
ZWxmLm5hbWUpCiAgICAgICAgIGNtZCA9IFsnZ2RiJywgJy1leCcsICd0aHJlYWQgYXBwbHkgYWxs
IGJ0IDEwMjQnLCAnLS1iYXRjaCcsIHByb2Nlc3NfbmFtZSwgY29yZWR1bXBfcGF0aF0KICAgICAg
ICAgcHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oY21kLCBzdGRpbj1Ob25lLCBzdGRvdXQ9c3VicHJv
Y2Vzcy5QSVBFLCBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQogICAgICAgICBzdGRvdXQsIHN0ZGVy
ciA9IHByb2MuY29tbXVuaWNhdGUoKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0
L21vY2tfZHJ0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9t
b2NrX2RydC5weQkocmV2aXNpb24gMjEzMjM2KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
b3J0L21vY2tfZHJ0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC04NCw3ICs4NCw3IEBAIGNsYXNzIE1v
Y2tEUlRQb3J0KG9iamVjdCk6CiAgICAgICAgIHBhdGhfdG9fdGhpc19maWxlID0gcG9ydC5ob3N0
LmZpbGVzeXN0ZW0uYWJzcGF0aChfX2ZpbGVfXy5yZXBsYWNlKCcucHljJywgJy5weScpKQogICAg
ICAgICBkcml2ZXIgPSBwb3J0Ll9fZGVsZWdhdGUuX2RyaXZlcl9jbGFzcygpKHBvcnQsIHdvcmtl
cl9udW1iZXIsIHBpeGVsX3Rlc3RzLCBub190aW1lb3V0KQogICAgICAgICBkcml2ZXIuY21kX2xp
bmUgPSBwb3J0Ll9vdmVycmlkaW5nX2NtZF9saW5lKGRyaXZlci5jbWRfbGluZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0Ll9fZGVsZWdh
dGUuX3BhdGhfdG9fZHJpdmVyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcG9ydC5fX2RlbGVnYXRlLnBhdGhfdG9fZHJpdmVyKCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzLmV4ZWN1
dGFibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGF0aF90b190aGlzX2ZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcG9ydC5fX2RlbGVnYXRlLm5hbWUoKSkKSW5kZXg6IFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5CShyZXZpc2lvbiAyMTMyMzYp
CisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvcG9ydF90ZXN0Y2FzZS5weQkod29ya2lu
ZyBjb3B5KQpAQCAtNDg2LDkgKzQ4Niw5IEBAIGNsYXNzIFBvcnRUZXN0Q2FzZSh1bml0dGVzdC5U
ZXN0Q2FzZSk6CiAgICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydCgpCiAgICAgICAgIHBvcnQu
X29wdGlvbnMgPSBNb2NrT3B0aW9ucyhyb290PScvZm9vJykKICAgICAgICAgaWYgc3lzLnBsYXRm
b3JtLnN0YXJ0c3dpdGgoJ3dpbicpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0
Ll9wYXRoX3RvX2RyaXZlcigpLCAiL2Zvby9EdW1wUmVuZGVyVHJlZS5leGUiKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnBhdGhfdG9fZHJpdmVyKCksICIvZm9vL0R1bXBSZW5k
ZXJUcmVlLmV4ZSIpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHBvcnQuX3BhdGhfdG9fZHJpdmVyKCksICIvZm9vL0R1bXBSZW5kZXJUcmVlIikKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5wYXRoX3RvX2RyaXZlcigpLCAiL2Zvby9EdW1wUmVu
ZGVyVHJlZSIpCiAKICAgICBkZWYgdGVzdF90ZXN0X2V4cGVjdGF0aW9ucyhzZWxmKToKICAgICAg
ICAgIyBDaGVjayB0aGF0IHdlIHJlYWQgdGhlIGV4cGVjdGF0aW9ucyBmaWxlCkluZGV4OiBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2ltdWxhdG9yX3Byb2Nlc3MucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3NpbXVsYXRvcl9wcm9jZXNzLnB5CShyZXZp
c2lvbiAyMTMyMzYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2ltdWxhdG9yX3By
b2Nlc3MucHkJKHdvcmtpbmcgY29weSkKQEAgLTU5LDggKzU5LDYgQEAgY2xhc3MgU2ltdWxhdG9y
UHJvY2VzcyhTZXJ2ZXJQcm9jZXNzKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydF9vYmos
IG5hbWUsIGNtZCwgZW52PU5vbmUsIHVuaXZlcnNhbF9uZXdsaW5lcz1GYWxzZSwgdHJlYXRfbm9f
ZGF0YV9hc19jcmFzaD1GYWxzZSwgd29ya2VyX251bWJlcj1Ob25lKToKICAgICAgICAgc2VsZi5f
YnVuZGxlX2lkID0gcG9ydF9vYmouYXBwX2lkZW50aWZpZXJfZnJvbV9idW5kbGUoY21kWzBdKQog
ICAgICAgICBzZWxmLl9kZXZpY2UgPSBwb3J0X29iai5kZXZpY2VfZm9yX3dvcmtlcl9udW1iZXIo
d29ya2VyX251bWJlcikKLSAgICAgICAgaWYgbm90IHNlbGYuX2RldmljZS5pbnN0YWxsX2FwcChj
bWRbMF0sIGVudik6Ci0gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0ZhaWxlZCB0byBp
bnN0YWxsIGFwcCB7fSBvbiBzaW11bGF0b3IgZGV2aWNlIHt9Jy5mb3JtYXQoY21kWzBdLCBzZWxm
Ll9kZXZpY2UudWRpZCkpCiAgICAgICAgIGVudlsnSVBDX0lERU5USUZJRVInXSA9IHNlbGYuX2J1
bmRsZV9pZCArICctJyArIHNlbGYuX2RldmljZS51ZGlkCiAKICAgICAgICAgIyBUaGlzIGxvY2F0
aW9uIG1hdGNoZXMgdGhlIGxvY2F0aW9uIHVzZWQgYnkgV2ViS2l0VGVzdFJ1bm5lciBhbmQgRHVt
cFJlbmRlclRyZWUKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC90ZXN0LnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC90ZXN0LnB5CShyZXZpc2lv
biAyMTMyMzYpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvdGVzdC5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMzkyLDEwICszOTIsMTAgQEAgY2xhc3MgVGVzdFBvcnQoUG9ydCk6CiAgICAg
ZGVmIGRlZmF1bHRfcGl4ZWxfdGVzdHMoc2VsZik6CiAgICAgICAgIHJldHVybiBUcnVlCiAKLSAg
ICBkZWYgX3BhdGhfdG9fZHJpdmVyKHNlbGYpOgorICAgIGRlZiBwYXRoX3RvX2RyaXZlcihzZWxm
KToKICAgICAgICAgIyBUaGlzIHJvdXRpbmUgc2hvdWxkbid0IG5vcm1hbGx5IGJlIGNhbGxlZCwg
YnV0IGl0IGlzIGNhbGxlZCBieQogICAgICAgICAjIHRoZSBtb2NrX2RydCBEcml2ZXIuIFdlIHJl
dHVybiBzb21ldGhpbmcsIGJ1dCBtYWtlIHN1cmUgaXQncyB1c2VsZXNzLgotICAgICAgICByZXR1
cm4gJ01PQ0sgX3BhdGhfdG9fZHJpdmVyJworICAgICAgICByZXR1cm4gJ01PQ0sgcGF0aF90b19k
cml2ZXInCiAKICAgICBkZWYgYmFzZWxpbmVfc2VhcmNoX3BhdGgoc2VsZik6CiAgICAgICAgIHNl
YXJjaF9wYXRocyA9IHsKQEAgLTUzNyw3ICs1MzcsNyBAQCBjbGFzcyBUZXN0RHJpdmVyKERyaXZl
cik6CiAKICAgICBkZWYgY21kX2xpbmUoc2VsZiwgcGl4ZWxfdGVzdHMsIHBlcl90ZXN0X2FyZ3Mp
OgogICAgICAgICBwaXhlbF90ZXN0c19mbGFnID0gJy1wJyBpZiBwaXhlbF90ZXN0cyBlbHNlICcn
Ci0gICAgICAgIHJldHVybiBbc2VsZi5fcG9ydC5fcGF0aF90b19kcml2ZXIoKV0gKyBbcGl4ZWxf
dGVzdHNfZmxhZ10gKyBzZWxmLl9wb3J0LmdldF9vcHRpb24oJ2FkZGl0aW9uYWxfZHJ0X2ZsYWcn
LCBbXSkgKyBwZXJfdGVzdF9hcmdzCisgICAgICAgIHJldHVybiBbc2VsZi5fcG9ydC5wYXRoX3Rv
X2RyaXZlcigpXSArIFtwaXhlbF90ZXN0c19mbGFnXSArIHNlbGYuX3BvcnQuZ2V0X29wdGlvbign
YWRkaXRpb25hbF9kcnRfZmxhZycsIFtdKSArIHBlcl90ZXN0X2FyZ3MKIAogICAgIGRlZiBydW5f
dGVzdChzZWxmLCB0ZXN0X2lucHV0LCBzdG9wX3doZW5fZG9uZSk6CiAgICAgICAgIGlmIG5vdCBz
ZWxmLnN0YXJ0ZWQ6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvd2luLnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC93aW4ucHkJKHJldmlzaW9u
IDIxMzIzNikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC93aW4ucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTEzMiw3ICsxMzIsNyBAQCBjbGFzcyBXaW5Qb3J0KEFwcGxlUG9ydCk6CiAgICAg
ICAgIHNlbGYuX3J1bl9zY3JpcHQoJ3J1bi1zYWZhcmknLCBbYWJzcGF0aF90b191cmkoU3lzdGVt
SG9zdCgpLnBsYXRmb3JtLCByZXN1bHRzX2ZpbGVuYW1lKV0pCiAKICAgICBkZWYgX3J1bnRpbWVf
ZmVhdHVyZV9saXN0KHNlbGYpOgotICAgICAgICBzdXBwb3J0ZWRfZmVhdHVyZXNfY29tbWFuZCA9
IFtzZWxmLl9wYXRoX3RvX2RyaXZlcigpLCAnLS1wcmludC1zdXBwb3J0ZWQtZmVhdHVyZXMnXQor
ICAgICAgICBzdXBwb3J0ZWRfZmVhdHVyZXNfY29tbWFuZCA9IFtzZWxmLnBhdGhfdG9fZHJpdmVy
KCksICctLXByaW50LXN1cHBvcnRlZC1mZWF0dXJlcyddCiAgICAgICAgIHRyeToKICAgICAgICAg
ICAgIG91dHB1dCA9IHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChzdXBwb3J0ZWRfZmVhdHVy
ZXNfY29tbWFuZCwgZXJyb3JfaGFuZGxlcj1FeGVjdXRpdmUuaWdub3JlX2Vycm9yKQogICAgICAg
ICBleGNlcHQgT1NFcnJvciwgZToK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303519</attachid>
            <date>2017-03-06 09:30:42 -0800</date>
            <delta_ts>2017-03-06 13:01:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169054-20170306093038.patch</filename>
            <type>text/plain</type>
            <size>19061</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIxMzQ1MikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDUyIEBACisyMDE3LTAzLTA2ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICB3ZWJraXRweTogRWZmaWNpZW50IGFwcCBpbnN0YWxsYXRpb24gZm9yIGRl
dmljZSB0ZXN0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjkwNTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAgV2Ugc2hvdWxkIG9ubHkgaW5zdGFsbCBhbiBhcHAgb24gYSBkZXZpY2Ugb25jZSwgbm90
IGV2ZXJ5IHRpbWUgdGhlIGFwcCBpcyBydW4uICBNb3ZlCisgICAgICAgIGFwcCBpbnN0YWxsYXRp
b24gdG8gdGhlIGRyaXZlciBhbmQgYWRkIGEgY29tbWFuZCBsaW5lIGZsYWcgdG8gc2tpcCBpbnN0
YWxsaW5nLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9w
ZXJmdGVzdHNydW5uZXIucHk6IE1ha2UgX3BhdGhfdG9fZHJpdmVyKCkgcHVibGljLgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5OgorICAgICAgICAoUG9ydC5fY2hlY2tf
ZHJpdmVyKTogTWFrZSBfcGF0aF90b19kcml2ZXIoKSBwdWJsaWMuCisgICAgICAgIChQb3J0LnBh
dGhfdG9fZHJpdmVyKTogTWFrZSBfcGF0aF90b19kcml2ZXIoKSBwdWJsaWMuCisgICAgICAgIChQ
b3J0Ll9wYXRoX3RvX2RyaXZlcik6IERlbGV0ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9wb3J0L2RyaXZlci5weToKKyAgICAgICAgKERyaXZlci5fX2luaXRfXyk6IEFkZCBpbnN0YWxs
X2ZsYWcuCisgICAgICAgIChEcml2ZXIuX3NldHVwX2Vudmlyb25fZHlsZCk6IE1ha2UgZHlsZCBl
bnZpcm9ubWVudCBzZXR1cCBzZXBhcmF0ZS4KKyAgICAgICAgKERyaXZlci5fc2V0dXBfZW52aXJv
bl9mb3JfZHJpdmVyKTogQ2FsbCBkeWxkIGVudmlyb25tZW50IHNldHVwIGZ1bmN0aW9uLgorICAg
ICAgICAoRHJpdmVyUHJveHkuX19pbml0X18pOiBQYXNzIGluc3RhbGxfZmxhZz1UcnVlIHRvIHNl
bGYuX21ha2VfZHJpdmVyLgorICAgICAgICAoRHJpdmVyUHJveHkuX21ha2VfZHJpdmVyKTogUGFz
cyBpbnN0YWxsX2ZsYWcgdG8gZHJpdmVyLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9y
dC9lZmwucHk6IE1ha2UgX3BhdGhfdG9fZHJpdmVyKCkgcHVibGljLgorICAgICAgICAoRWZsUG9y
dC5wYXRoX3RvX2RyaXZlcik6IERpdHRvLgorICAgICAgICAoRWZsUG9ydC5fZ2V0X2NyYXNoX2xv
Zyk6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9mYWN0b3J5LnB5Ogor
ICAgICAgICAocGxhdGZvcm1fb3B0aW9ucyk6IE1ha2UgX3BhdGhfdG9fZHJpdmVyKCkgcHVibGlj
LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9ndGsucHk6CisgICAgICAgIChHdGtQ
b3J0LnBhdGhfdG9fZHJpdmVyKTogTWFrZSBfcGF0aF90b19kcml2ZXIoKSBwdWJsaWMuCisgICAg
ICAgIChHdGtQb3J0Ll9nZXRfY3Jhc2hfbG9nKTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9wb3J0L2lvcy5weToKKyAgICAgICAgKGlPU0RyaXZlcik6IEFkZCBuZXcgaU9TRHJp
dmVyIGNsYXNzLgorICAgICAgICAoaU9TRHJpdmVyLl9faW5pdF9fKTogSW5zdGFsbCBvbiBkcml2
ZXIgY3JlYXRpb24gaWYgaW5zdGFsbF9mbGFnIGlzIHNldC4KKyAgICAgICAgKElPU1BvcnQuX2Ry
aXZlcl9jbGFzcyk6IFJldHVybiBpT1NEcml2ZXIgaWYgbm90IGp1c3QgY29tbWFuZC1saW5lIGxv
Z2dpbmcuCisgICAgICAgIChJT1NQb3J0Ll9jaGVja19kcml2ZXIpOiBPbmx5IGNoZWNrIGRyaXZl
ciBpZiBpbnN0YWxsaW5nLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9saW51eF9n
ZXRfY3Jhc2hfbG9nLnB5OgorICAgICAgICAoR0RCQ3Jhc2hMb2dHZW5lcmF0b3IuX19pbml0X18p
OiBNYWtlIF9wYXRoX3RvX2RyaXZlcigpIHB1YmxpYy4KKyAgICAgICAgKEdEQkNyYXNoTG9nR2Vu
ZXJhdG9yLl9nZXRfZ2RiX291dHB1dCk6IERpdHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvcG9ydC9tb2NrX2RydC5weToKKyAgICAgICAgKE1vY2tEUlRQb3J0Ll9tb2NrZWRfZHJpdmVy
X21ha2VyKTogTWFrZSBfcGF0aF90b19kcml2ZXIoKSBwdWJsaWMuCisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9wb3J0L3BvcnRfdGVzdGNhc2UucHk6CisgICAgICAgIChQb3J0VGVzdENhc2Uu
dGVzdF9yb290X29wdGlvbik6IE1ha2UgX3BhdGhfdG9fZHJpdmVyKCkgcHVibGljLgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9zaW11bGF0b3JfcHJvY2Vzcy5weToKKyAgICAgICAg
KFNpbXVsYXRvclByb2Nlc3MuX19pbml0X18pOiBSZW1vdmUgYXBwIGluc3RhbGxhdGlvbi4KKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvdGVzdC5weToKKyAgICAgICAgKFRlc3RQb3J0
LnBhdGhfdG9fZHJpdmVyKTogTWFrZSBfcGF0aF90b19kcml2ZXIoKSBwdWJsaWMuCisgICAgICAg
IChUZXN0RHJpdmVyLmNtZF9saW5lKTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9wb3J0L3dpbi5weToKKyAgICAgICAgKFdpblBvcnQuX3J1bnRpbWVfZmVhdHVyZV9saXN0KTog
TWFrZSBfcGF0aF90b19kcml2ZXIoKSBwdWJsaWMuCisKIDIwMTctMDMtMDYgIFl1c3VrZSBTdXp1
a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0dUS11bSlNDT25seV0gRW5h
YmxlIFdlYkFzc2VtYmx5IG9uIExpbnV4IGVudmlyb25tZW50CkluZGV4OiBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lci5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1
bm5lci5weQkocmV2aXNpb24gMjEzMzY5KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJm
b3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTE5MSw3
ICsxOTEsNyBAQCBjbGFzcyBQZXJmVGVzdHNSdW5uZXIob2JqZWN0KToKICoqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioiIiIpCiAKICAgICAgICAgaWYg
bm90IHNlbGYuX3BvcnQuY2hlY2tfYnVpbGQobmVlZHNfaHR0cD1GYWxzZSk6Ci0gICAgICAgICAg
ICBfbG9nLmVycm9yKCJCdWlsZCBub3QgdXAgdG8gZGF0ZSBmb3IgJXMiICUgc2VsZi5fcG9ydC5f
cGF0aF90b19kcml2ZXIoKSkKKyAgICAgICAgICAgIF9sb2cuZXJyb3IoIkJ1aWxkIG5vdCB1cCB0
byBkYXRlIGZvciAlcyIgJSBzZWxmLl9wb3J0LnBhdGhfdG9fZHJpdmVyKCkpCiAgICAgICAgICAg
ICByZXR1cm4gc2VsZi5FWElUX0NPREVfQkFEX0JVSUxECiAKICAgICAgICAgIyBDaGVjayB0aGF0
IHRoZSBzeXN0ZW0gZGVwZW5kZW5jaWVzICh0aGVtZXMsIGZvbnRzLCAuLi4pIGFyZSBjb3JyZWN0
LgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkJKHJldmlzaW9uIDIxMzM2OSkK
KysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5CSh3b3JraW5nIGNvcHkpCkBA
IC0yMzUsNyArMjM1LDcgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICByZXR1cm4gVHJ1
ZQogCiAgICAgZGVmIF9jaGVja19kcml2ZXIoc2VsZik6Ci0gICAgICAgIGRyaXZlcl9wYXRoID0g
c2VsZi5fcGF0aF90b19kcml2ZXIoKQorICAgICAgICBkcml2ZXJfcGF0aCA9IHNlbGYucGF0aF90
b19kcml2ZXIoKQogICAgICAgICBpZiBub3Qgc2VsZi5fZmlsZXN5c3RlbS5leGlzdHMoZHJpdmVy
X3BhdGgpOgogICAgICAgICAgICAgX2xvZy5lcnJvcigiJXMgd2FzIG5vdCBmb3VuZCBhdCAlcyIg
JSAoc2VsZi5kcml2ZXJfbmFtZSgpLCBkcml2ZXJfcGF0aCkpCiAgICAgICAgICAgICByZXR1cm4g
RmFsc2UKQEAgLTEyNjAsNyArMTI2MCw3IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKIAogICAgICAg
ICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuX2ZpbGVzeXN0ZW0uYWJzcGF0aChy
b290X2RpcmVjdG9yeSksICpjb21wcykKIAotICAgIGRlZiBfcGF0aF90b19kcml2ZXIoc2VsZiwg
Y29uZmlndXJhdGlvbj1Ob25lKToKKyAgICBkZWYgcGF0aF90b19kcml2ZXIoc2VsZiwgY29uZmln
dXJhdGlvbj1Ob25lKToKICAgICAgICAgIiIiUmV0dXJucyB0aGUgZnVsbCBwYXRoIHRvIHRoZSB0
ZXN0IGRyaXZlciAoRHVtcFJlbmRlclRyZWUpLiIiIgogICAgICAgICBsb2NhbF9kcml2ZXJfcGF0
aCA9IHNlbGYuX2J1aWxkX3BhdGgoc2VsZi5kcml2ZXJfbmFtZSgpKQogICAgICAgICBpZiBzeXMu
cGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3BvcnQvZHJpdmVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9y
dC9kcml2ZXIucHkJKHJldmlzaW9uIDIxMzM2OSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
cG9ydC9kcml2ZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw3ICsxMjEsNyBAQCBjbGFzcyBE
cml2ZXJPdXRwdXQob2JqZWN0KToKIGNsYXNzIERyaXZlcihvYmplY3QpOgogICAgICIiIm9iamVj
dCBmb3IgcnVubmluZyB0ZXN0KHMpIHVzaW5nIER1bXBSZW5kZXJUcmVlL1dlYktpdFRlc3RSdW5u
ZXIuIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydCwgd29ya2VyX251bWJlciwgcGl4
ZWxfdGVzdHMsIG5vX3RpbWVvdXQ9RmFsc2UpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0
LCB3b3JrZXJfbnVtYmVyLCBwaXhlbF90ZXN0cywgbm9fdGltZW91dD1GYWxzZSwgaW5zdGFsbF9m
bGFnPUZhbHNlKToKICAgICAgICAgIiIiSW5pdGlhbGl6ZSBhIERyaXZlciB0byBzdWJzZXF1ZW50
bHkgcnVuIHRlc3RzLgogCiAgICAgICAgIFR5cGljYWxseSB0aGlzIHJvdXRpbmUgd2lsbCBzcGF3
biBEdW1wUmVuZGVyVHJlZSBpbiBhIGNvbmZpZwpAQCAtMTYxLDcgKzE2MSw3IEBAIGNsYXNzIERy
aXZlcihvYmplY3QpOgogICAgICAgICBpZiBzZWxmLl9wb3J0LmdldF9vcHRpb24oInByb2ZpbGUi
KToKICAgICAgICAgICAgIHByb2ZpbGVyX25hbWUgPSBzZWxmLl9wb3J0LmdldF9vcHRpb24oInBy
b2ZpbGVyIikKICAgICAgICAgICAgIHNlbGYuX3Byb2ZpbGVyID0gUHJvZmlsZXJGYWN0b3J5LmNy
ZWF0ZV9wcm9maWxlcihzZWxmLl9wb3J0Lmhvc3QsCi0gICAgICAgICAgICAgICAgc2VsZi5fcG9y
dC5fcGF0aF90b19kcml2ZXIoKSwgc2VsZi5fcG9ydC5yZXN1bHRzX2RpcmVjdG9yeSgpLCBwcm9m
aWxlcl9uYW1lKQorICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQucGF0aF90b19kcml2ZXIoKSwg
c2VsZi5fcG9ydC5yZXN1bHRzX2RpcmVjdG9yeSgpLCBwcm9maWxlcl9uYW1lKQogICAgICAgICBl
bHNlOgogICAgICAgICAgICAgc2VsZi5fcHJvZmlsZXIgPSBOb25lCiAKQEAgLTMyNSwxMiArMzI1
LDE3IEBAIGNsYXNzIERyaXZlcihvYmplY3QpOgogICAgICAgICBlbHNlOgogICAgICAgICAgICAg
ZW52aXJvbm1lbnRbdmFyaWFibGVdID0gcGF0aAogCi0gICAgZGVmIF9zZXR1cF9lbnZpcm9uX2Zv
cl9kcml2ZXIoc2VsZiwgZW52aXJvbm1lbnQpOgorICAgIGRlZiBfc2V0dXBfZW52aXJvbl9keWxk
KHNlbGYsIGVudmlyb25tZW50KToKICAgICAgICAgYnVpbGRfcm9vdF9wYXRoID0gc3RyKHNlbGYu
X3BvcnQuX2J1aWxkX3BhdGgoKSkKICAgICAgICAgc2VsZi5fYXBwZW5kX2Vudmlyb25tZW50X3Zh
cmlhYmxlX3BhdGgoZW52aXJvbm1lbnQsICdEWUxEX0xJQlJBUllfUEFUSCcsIGJ1aWxkX3Jvb3Rf
cGF0aCkKICAgICAgICAgc2VsZi5fYXBwZW5kX2Vudmlyb25tZW50X3ZhcmlhYmxlX3BhdGgoZW52
aXJvbm1lbnQsICdfX1hQQ19EWUxEX0xJQlJBUllfUEFUSCcsIGJ1aWxkX3Jvb3RfcGF0aCkKICAg
ICAgICAgc2VsZi5fYXBwZW5kX2Vudmlyb25tZW50X3ZhcmlhYmxlX3BhdGgoZW52aXJvbm1lbnQs
ICdEWUxEX0ZSQU1FV09SS19QQVRIJywgYnVpbGRfcm9vdF9wYXRoKQogICAgICAgICBzZWxmLl9h
cHBlbmRfZW52aXJvbm1lbnRfdmFyaWFibGVfcGF0aChlbnZpcm9ubWVudCwgJ19fWFBDX0RZTERf
RlJBTUVXT1JLX1BBVEgnLCBidWlsZF9yb290X3BhdGgpCisgICAgICAgIHJldHVybiBlbnZpcm9u
bWVudAorCisgICAgZGVmIF9zZXR1cF9lbnZpcm9uX2Zvcl9kcml2ZXIoc2VsZiwgZW52aXJvbm1l
bnQpOgorICAgICAgICBlbnZpcm9ubWVudCA9IHNlbGYuX3NldHVwX2Vudmlyb25fZHlsZChlbnZp
cm9ubWVudCkKKwogICAgICAgICAjIFVzZSBhbiBpc29sYXRlZCB0ZW1wIGRpcmVjdG9yeSB0aGF0
IGNhbiBiZSBkZWxldGVkIGFmdGVyIHRlc3RpbmcgKGVzcGVjaWFsbHkgaW1wb3J0YW50IG9uIE1h
YywgYXMKICAgICAgICAgIyBDb3JlTWVkaWEgZGlzayBjYWNoZSBpcyBpbiB0aGUgdGVtcCBkaXJl
Y3RvcnkpLgogICAgICAgICBlbnZpcm9ubWVudFsnVE1QRElSJ10gPSBzdHIoc2VsZi5fZHJpdmVy
X3RlbXBkaXIpCkBAIC0zOTYsNyArNDAxLDcgQEAgY2xhc3MgRHJpdmVyKG9iamVjdCk6CiAKICAg
ICBkZWYgY21kX2xpbmUoc2VsZiwgcGl4ZWxfdGVzdHMsIHBlcl90ZXN0X2FyZ3MpOgogICAgICAg
ICBjbWQgPSBzZWxmLl9jb21tYW5kX3dyYXBwZXIoKQotICAgICAgICBjbWQuYXBwZW5kKHNlbGYu
X3BvcnQuX3BhdGhfdG9fZHJpdmVyKCkpCisgICAgICAgIGNtZC5hcHBlbmQoc2VsZi5fcG9ydC5w
YXRoX3RvX2RyaXZlcigpKQogICAgICAgICBpZiBzZWxmLl9wb3J0LmdldF9vcHRpb24oJ2djX2Jl
dHdlZW5fdGVzdHMnKToKICAgICAgICAgICAgIGNtZC5hcHBlbmQoJy0tZ2MtYmV0d2Vlbi10ZXN0
cycpCiAgICAgICAgIGlmIHNlbGYuX3BvcnQuZ2V0X29wdGlvbignY29tcGxleF90ZXh0Jyk6CkBA
IC02NDEsMTEgKzY0NiwxMSBAQCBjbGFzcyBEcml2ZXJQcm94eShvYmplY3QpOgogICAgICAgICBz
ZWxmLl9ub190aW1lb3V0ID0gbm9fdGltZW91dAogCiAgICAgICAgICMgRklYTUU6IFdlIHNob3Vs
ZG4ndCBuZWVkIHRvIGNyZWF0ZSBhIGRyaXZlciB1bnRpbCB3ZSBhY3R1YWxseSBydW4gYSB0ZXN0
LgotICAgICAgICBzZWxmLl9kcml2ZXIgPSBzZWxmLl9tYWtlX2RyaXZlcihwaXhlbF90ZXN0cykK
KyAgICAgICAgc2VsZi5fZHJpdmVyID0gc2VsZi5fbWFrZV9kcml2ZXIocGl4ZWxfdGVzdHMsIFRy
dWUpCiAgICAgICAgIHNlbGYuX2RyaXZlcl9jbWRfbGluZSA9IE5vbmUKIAotICAgIGRlZiBfbWFr
ZV9kcml2ZXIoc2VsZiwgcGl4ZWxfdGVzdHMpOgotICAgICAgICByZXR1cm4gc2VsZi5fZHJpdmVy
X2luc3RhbmNlX2NvbnN0cnVjdG9yKHNlbGYuX3BvcnQsIHNlbGYuX3dvcmtlcl9udW1iZXIsIHBp
eGVsX3Rlc3RzLCBzZWxmLl9ub190aW1lb3V0KQorICAgIGRlZiBfbWFrZV9kcml2ZXIoc2VsZiwg
cGl4ZWxfdGVzdHMsIGluc3RhbGxfZmxhZz1GYWxzZSk6CisgICAgICAgIHJldHVybiBzZWxmLl9k
cml2ZXJfaW5zdGFuY2VfY29uc3RydWN0b3Ioc2VsZi5fcG9ydCwgc2VsZi5fd29ya2VyX251bWJl
ciwgcGl4ZWxfdGVzdHMsIHNlbGYuX25vX3RpbWVvdXQsIGluc3RhbGxfZmxhZykKIAogICAgICMg
RklYTUU6IHRoaXMgc2hvdWxkIGJlIGEgQGNsYXNzbWV0aG9kIChvciBpbXBsZW1lbnRlZCBvbiBQ
b3J0IGluc3RlYWQpLgogICAgIGRlZiBpc19odHRwX3Rlc3Qoc2VsZiwgdGVzdF9uYW1lKToKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9lZmwucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2VmbC5weQkocmV2aXNpb24gMjEzMzY5KQorKysgVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2VmbC5weQkod29ya2luZyBjb3B5KQpAQCAtOTksNyAr
OTksNyBAQCBjbGFzcyBFZmxQb3J0KFBvcnQpOgogICAgICAgICAgICAgcmV0dXJuIFhvcmdEcml2
ZXIKICAgICAgICAgcmV0dXJuIFh2ZmJEcml2ZXIKIAotICAgIGRlZiBfcGF0aF90b19kcml2ZXIo
c2VsZik6CisgICAgZGVmIHBhdGhfdG9fZHJpdmVyKHNlbGYpOgogICAgICAgICByZXR1cm4gc2Vs
Zi5fYnVpbGRfcGF0aCgnYmluJywgc2VsZi5kcml2ZXJfbmFtZSgpKQogCiAgICAgZGVmIF9wYXRo
X3RvX2ltYWdlX2RpZmYoc2VsZik6CkBAIC0xMzksNyArMTM5LDcgQEAgY2xhc3MgRWZsUG9ydChQ
b3J0KToKICAgICAgICAgcmV0dXJuIGNvbW1hbmQKIAogICAgIGRlZiBfZ2V0X2NyYXNoX2xvZyhz
ZWxmLCBuYW1lLCBwaWQsIHN0ZG91dCwgc3RkZXJyLCBuZXdlcl90aGFuKToKLSAgICAgICAgcmV0
dXJuIEdEQkNyYXNoTG9nR2VuZXJhdG9yKG5hbWUsIHBpZCwgbmV3ZXJfdGhhbiwgc2VsZi5fZmls
ZXN5c3RlbSwgc2VsZi5fcGF0aF90b19kcml2ZXIpLmdlbmVyYXRlX2NyYXNoX2xvZyhzdGRvdXQs
IHN0ZGVycikKKyAgICAgICAgcmV0dXJuIEdEQkNyYXNoTG9nR2VuZXJhdG9yKG5hbWUsIHBpZCwg
bmV3ZXJfdGhhbiwgc2VsZi5fZmlsZXN5c3RlbSwgc2VsZi5wYXRoX3RvX2RyaXZlcikuZ2VuZXJh
dGVfY3Jhc2hfbG9nKHN0ZG91dCwgc3RkZXJyKQogCiAgICAgZGVmIHRlc3RfZXhwZWN0YXRpb25z
X2ZpbGVfcG9zaXRpb24oc2VsZik6CiAgICAgICAgICMgRUZMIHBvcnQgYmFzZWxpbmUgc2VhcmNo
IHBhdGggaXMgZWZsIC0+IHdrMiAtPiBnZW5lcmljIChhcyBlZmwtd2syIGFuZCBlZmwgYmFzZWxp
bmVzIGFyZSBtZXJnZWQpLCBzbyBwb3J0IHRlc3QgZXhwZWN0YXRpb25zIGZpbGUgaXMgYXQgdGhp
cmQgdG8gbGFzdCBwb3NpdGlvbi4KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9m
YWN0b3J5LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9mYWN0
b3J5LnB5CShyZXZpc2lvbiAyMTMzNjkpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQv
ZmFjdG9yeS5weQkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsOSBAQCBkZWYgcGxhdGZvcm1f
b3B0aW9ucyh1c2VfZ2xvYnM9RmFsc2UpOgogICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbign
LS1pb3Mtc2ltdWxhdG9yJywgYWN0aW9uPSdzdG9yZV9jb25zdCcsIGRlc3Q9J3BsYXRmb3JtJywK
ICAgICAgICAgICAgIGNvbnN0PSgnaW9zLXNpbXVsYXRvcicpLAogICAgICAgICAgICAgaGVscD0o
J0FsaWFzIGZvciAtLXBsYXRmb3JtPWlvcy1zaW11bGF0b3InKSksCisgICAgICAgIG9wdHBhcnNl
Lm1ha2Vfb3B0aW9uKCctLW5vLWluc3RhbGwnLCBhY3Rpb249J3N0b3JlX2NvbnN0JywgZGVzdD0n
aW5zdGFsbCcsCisgICAgICAgICAgICBjb25zdD1GYWxzZSwgZGVmYXVsdD1UcnVlLAorICAgICAg
ICAgICAgaGVscD0nU2tpcCBhcHAgaW5zdGFsbCBmb3IgZGV2aWNlIHRlc3RpbmcnKSwKICAgICAg
ICAgb3B0cGFyc2UubWFrZV9vcHRpb24oJy0tZWZsJywgYWN0aW9uPSdzdG9yZV9jb25zdCcsIGRl
c3Q9J3BsYXRmb3JtJywKICAgICAgICAgICAgIGNvbnN0PSgnZWZsKicgaWYgdXNlX2dsb2JzIGVs
c2UgJ2VmbCcpLAogICAgICAgICAgICAgaGVscD0oJ0FsaWFzIGZvciAtLXBsYXRmb3JtPWVmbCon
IGlmIHVzZV9nbG9icyBlbHNlICdBbGlhcyBmb3IgLS1wbGF0Zm9ybT1lZmwnKSksCkluZGV4OiBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZ3RrLnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcG9ydC9ndGsucHkJKHJldmlzaW9uIDIxMzM2OSkKKysrIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcG9ydC9ndGsucHkJKHdvcmtpbmcgY29weSkKQEAgLTE3MCw3ICsxNzAs
NyBAQCBjbGFzcyBHdGtQb3J0KFBvcnQpOgogICAgICAgICAgICAgY29uZmlndXJhdGlvbnMuYXBw
ZW5kKFRlc3RDb25maWd1cmF0aW9uKHZlcnNpb249c2VsZi5fdmVyc2lvbiwgYXJjaGl0ZWN0dXJl
PSd4ODYnLCBidWlsZF90eXBlPWJ1aWxkX3R5cGUpKQogICAgICAgICByZXR1cm4gY29uZmlndXJh
dGlvbnMKIAotICAgIGRlZiBfcGF0aF90b19kcml2ZXIoc2VsZik6CisgICAgZGVmIHBhdGhfdG9f
ZHJpdmVyKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fYnVpbHRfZXhlY3V0YWJsZXNfcGF0
aChzZWxmLmRyaXZlcl9uYW1lKCkpCiAKICAgICBkZWYgX3BhdGhfdG9faW1hZ2VfZGlmZihzZWxm
KToKQEAgLTIyMiw3ICsyMjIsNyBAQCBjbGFzcyBHdGtQb3J0KFBvcnQpOgogCiAgICAgZGVmIF9n
ZXRfY3Jhc2hfbG9nKHNlbGYsIG5hbWUsIHBpZCwgc3Rkb3V0LCBzdGRlcnIsIG5ld2VyX3RoYW4p
OgogICAgICAgICBuYW1lID0gIldlYktpdFdlYlByb2Nlc3MiIGlmIG5hbWUgPT0gIldlYlByb2Nl
c3MiIGVsc2UgbmFtZQotICAgICAgICByZXR1cm4gR0RCQ3Jhc2hMb2dHZW5lcmF0b3IobmFtZSwg
cGlkLCBuZXdlcl90aGFuLCBzZWxmLl9maWxlc3lzdGVtLCBzZWxmLl9wYXRoX3RvX2RyaXZlciku
Z2VuZXJhdGVfY3Jhc2hfbG9nKHN0ZG91dCwgc3RkZXJyKQorICAgICAgICByZXR1cm4gR0RCQ3Jh
c2hMb2dHZW5lcmF0b3IobmFtZSwgcGlkLCBuZXdlcl90aGFuLCBzZWxmLl9maWxlc3lzdGVtLCBz
ZWxmLnBhdGhfdG9fZHJpdmVyKS5nZW5lcmF0ZV9jcmFzaF9sb2coc3Rkb3V0LCBzdGRlcnIpCiAK
ICAgICBkZWYgdGVzdF9leHBlY3RhdGlvbnNfZmlsZV9wb3NpdGlvbihzZWxmKToKICAgICAgICAg
IyBHVEsgcG9ydCBiYXNlbGluZSBzZWFyY2ggcGF0aCBpcyBndGsgLT4gd2syIC0+IGdlbmVyaWMg
KGFzIGd0ay13azIgYW5kIGd0ayBiYXNlbGluZXMgYXJlIG1lcmdlZCksIHNvIHBvcnQgdGVzdCBl
eHBlY3RhdGlvbnMgZmlsZSBpcyBhdCB0aGlyZCB0byBsYXN0IHBvc2l0aW9uLgpJbmRleDogVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvaW9zLnB5CShyZXZpc2lvbiAyMTMzNjkpCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvaW9zLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxMSArMjQsMzIg
QEAgaW1wb3J0IGxvZ2dpbmcKIAogZnJvbSB3ZWJraXRweS5jb21tb24ubWVtb2l6ZWQgaW1wb3J0
IG1lbW9pemVkCiBmcm9tIHdlYmtpdHB5LnBvcnQuZGFyd2luIGltcG9ydCBEYXJ3aW5Qb3J0Citm
cm9tIHdlYmtpdHB5LnBvcnQuZHJpdmVyIGltcG9ydCBEcml2ZXIKIGZyb20gd2Via2l0cHkucG9y
dC5zaW11bGF0b3JfcHJvY2VzcyBpbXBvcnQgU2ltdWxhdG9yUHJvY2VzcwogCiBfbG9nID0gbG9n
Z2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAKIAorY2xhc3MgaU9TRHJpdmVyKERyaXZlcik6CisK
KyAgICAjIEZJWE1FOiBUaGUgaW5zdGFsbF9mbGFnIHNob3VsZCBub3QgYmUgbmVlZGVkIGlmIHRo
ZSBkcml2ZXIgaXMgb25seSBjcmVhdGVkIHdoZW4gcnVubmluZyBhIHRlc3QuCisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHBvcnQsIHdvcmtlcl9udW1iZXIsIHBpeGVsX3Rlc3RzLCBub190aW1lb3V0
PUZhbHNlLCBpbnN0YWxsX2ZsYWc9RmFsc2UpOgorICAgICAgICBzdXBlcihpT1NEcml2ZXIsIHNl
bGYpLl9faW5pdF9fKHBvcnQsIHdvcmtlcl9udW1iZXIsIHBpeGVsX3Rlc3RzLCBub190aW1lb3V0
LCBpbnN0YWxsX2ZsYWcpCisgICAgICAgIGlmIG5vdCBpbnN0YWxsX2ZsYWc6CisgICAgICAgICAg
ICByZXR1cm4KKworICAgICAgICBkZXZpY2UgPSBzZWxmLl9wb3J0LmRldmljZV9mb3Jfd29ya2Vy
X251bWJlcihzZWxmLl93b3JrZXJfbnVtYmVyKQorICAgICAgICBpZiBzZWxmLl9wb3J0LmdldF9v
cHRpb24oJ2luc3RhbGwnKToKKyAgICAgICAgICAgIF9sb2cud2FybignSW5zdGFsbGluZyB0byB7
fScuZm9ybWF0KGRldmljZSkpCisgICAgICAgICAgICBlbnYgPSB7fQorICAgICAgICAgICAgZW52
ID0gc2VsZi5fc2V0dXBfZW52aXJvbl9keWxkKGVudikKKyAgICAgICAgICAgIGlmIG5vdCBkZXZp
Y2UuaW5zdGFsbF9hcHAoc2VsZi5fcG9ydC5wYXRoX3RvX2RyaXZlcigpLCBlbnYpOgorICAgICAg
ICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignRmFpbGVkIHRvIGluc3RhbGwgYXBwIHt9IG9u
IGRldmljZSB7fScuZm9ybWF0KHNlbGYuX3BvcnQucGF0aF90b19kcml2ZXIoKSwgZGV2aWNlLnVk
aWQpKQorICAgICAgICAgICAgX2xvZy53YXJuKCdJbnN0YWxsIGNvbXBsZXRlZCcpCisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICBfbG9nLndhcm4oJ1NraXBwaW5nIGluc3RhbGwgb24ge30nLmZv
cm1hdChkZXZpY2UpKQorCisKIGNsYXNzIElPU1BvcnQoRGFyd2luUG9ydCk6CiAgICAgcG9ydF9u
YW1lID0gImlvcyIKIApAQCAtNTUsNiArNzYsMTYgQEAgY2xhc3MgSU9TUG9ydChEYXJ3aW5Qb3J0
KToKICAgICAgICAgICAgIHJldHVybiAnV2ViS2l0VGVzdFJ1bm5lckFwcC5hcHAnCiAgICAgICAg
IHJldHVybiAnRHVtcFJlbmRlclRyZWUuYXBwJwogCisgICAgZGVmIF9kcml2ZXJfY2xhc3Moc2Vs
Zik6CisgICAgICAgIGlmIHNlbGYuX3ByaW50aW5nX2NtZF9saW5lOgorICAgICAgICAgICAgcmV0
dXJuIHN1cGVyKElPU1BvcnQsIHNlbGYpLl9kcml2ZXJfY2xhc3MoKQorICAgICAgICByZXR1cm4g
aU9TRHJpdmVyCisKKyAgICBkZWYgX2NoZWNrX2RyaXZlcihzZWxmKToKKyAgICAgICAgaWYgc2Vs
Zi5nZXRfb3B0aW9uKCdpbnN0YWxsJyk6CisgICAgICAgICAgICByZXR1cm4gc3VwZXIoSU9TUG9y
dCwgc2VsZikuX2NoZWNrX2RyaXZlcigpCisgICAgICAgIHJldHVybiBUcnVlCisKICAgICBAbWVt
b2l6ZWQKICAgICBkZWYgY2hpbGRfcHJvY2Vzc2VzKHNlbGYpOgogICAgICAgICByZXR1cm4gaW50
KHNlbGYuZ2V0X29wdGlvbignY2hpbGRfcHJvY2Vzc2VzJykpCkluZGV4OiBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3BvcnQvbGludXhfZ2V0X2NyYXNoX2xvZy5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbGludXhfZ2V0X2NyYXNoX2xvZy5weQkocmV2aXNpb24g
MjEzMzY5KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2xpbnV4X2dldF9jcmFzaF9s
b2cucHkJKHdvcmtpbmcgY29weSkKQEAgLTM2LDEwICszNiwxMCBAQCBjbGFzcyBHREJDcmFzaExv
Z0dlbmVyYXRvcihvYmplY3QpOgogICAgICAgICBzZWxmLnBpZCA9IHBpZAogICAgICAgICBzZWxm
Lm5ld2VyX3RoYW4gPSBuZXdlcl90aGFuCiAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0gPSBmaWxl
c3lzdGVtCi0gICAgICAgIHNlbGYuX3BhdGhfdG9fZHJpdmVyID0gcGF0aF90b19kcml2ZXIKKyAg
ICAgICAgc2VsZi5wYXRoX3RvX2RyaXZlciA9IHBhdGhfdG9fZHJpdmVyCiAKICAgICBkZWYgX2dl
dF9nZGJfb3V0cHV0KHNlbGYsIGNvcmVkdW1wX3BhdGgpOgotICAgICAgICBwcm9jZXNzX25hbWUg
PSBzZWxmLl9maWxlc3lzdGVtLmpvaW4ob3MucGF0aC5kaXJuYW1lKHN0cihzZWxmLl9wYXRoX3Rv
X2RyaXZlcigpKSksIHNlbGYubmFtZSkKKyAgICAgICAgcHJvY2Vzc19uYW1lID0gc2VsZi5fZmls
ZXN5c3RlbS5qb2luKG9zLnBhdGguZGlybmFtZShzdHIoc2VsZi5wYXRoX3RvX2RyaXZlcigpKSks
IHNlbGYubmFtZSkKICAgICAgICAgY21kID0gWydnZGInLCAnLWV4JywgJ3RocmVhZCBhcHBseSBh
bGwgYnQgMTAyNCcsICctLWJhdGNoJywgcHJvY2Vzc19uYW1lLCBjb3JlZHVtcF9wYXRoXQogICAg
ICAgICBwcm9jID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHN0ZGluPU5vbmUsIHN0ZG91dD1zdWJw
cm9jZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCiAgICAgICAgIHN0ZG91dCwgc3Rk
ZXJyID0gcHJvYy5jb21tdW5pY2F0ZSgpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvbW9ja19kcnQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0
L21vY2tfZHJ0LnB5CShyZXZpc2lvbiAyMTMzNjkpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3BvcnQvbW9ja19kcnQucHkJKHdvcmtpbmcgY29weSkKQEAgLTg0LDcgKzg0LDcgQEAgY2xhc3Mg
TW9ja0RSVFBvcnQob2JqZWN0KToKICAgICAgICAgcGF0aF90b190aGlzX2ZpbGUgPSBwb3J0Lmhv
c3QuZmlsZXN5c3RlbS5hYnNwYXRoKF9fZmlsZV9fLnJlcGxhY2UoJy5weWMnLCAnLnB5JykpCiAg
ICAgICAgIGRyaXZlciA9IHBvcnQuX19kZWxlZ2F0ZS5fZHJpdmVyX2NsYXNzKCkocG9ydCwgd29y
a2VyX251bWJlciwgcGl4ZWxfdGVzdHMsIG5vX3RpbWVvdXQpCiAgICAgICAgIGRyaXZlci5jbWRf
bGluZSA9IHBvcnQuX292ZXJyaWRpbmdfY21kX2xpbmUoZHJpdmVyLmNtZF9saW5lLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnQuX19kZWxl
Z2F0ZS5fcGF0aF90b19kcml2ZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwb3J0Ll9fZGVsZWdhdGUucGF0aF90b19kcml2ZXIoKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuZXhl
Y3V0YWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwYXRoX3RvX3RoaXNfZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwb3J0Ll9fZGVsZWdhdGUubmFtZSgpKQpJbmRleDogVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wb3J0L3BvcnRfdGVzdGNhc2UucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3BvcnRfdGVzdGNhc2UucHkJKHJldmlzaW9uIDIxMzM2
OSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC00ODYsOSArNDg2LDkgQEAgY2xhc3MgUG9ydFRlc3RDYXNlKHVuaXR0ZXN0
LlRlc3RDYXNlKToKICAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KCkKICAgICAgICAgcG9y
dC5fb3B0aW9ucyA9IE1vY2tPcHRpb25zKHJvb3Q9Jy9mb28nKQogICAgICAgICBpZiBzeXMucGxh
dGZvcm0uc3RhcnRzd2l0aCgnd2luJyk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBv
cnQuX3BhdGhfdG9fZHJpdmVyKCksICIvZm9vL0R1bXBSZW5kZXJUcmVlLmV4ZSIpCisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQucGF0aF90b19kcml2ZXIoKSwgIi9mb28vRHVtcFJl
bmRlclRyZWUuZXhlIikKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocG9ydC5fcGF0aF90b19kcml2ZXIoKSwgIi9mb28vRHVtcFJlbmRlclRyZWUiKQorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnBhdGhfdG9fZHJpdmVyKCksICIvZm9vL0R1bXBS
ZW5kZXJUcmVlIikKIAogICAgIGRlZiB0ZXN0X3Rlc3RfZXhwZWN0YXRpb25zKHNlbGYpOgogICAg
ICAgICAjIENoZWNrIHRoYXQgd2UgcmVhZCB0aGUgZXhwZWN0YXRpb25zIGZpbGUKSW5kZXg6IFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9zaW11bGF0b3JfcHJvY2Vzcy5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2ltdWxhdG9yX3Byb2Nlc3MucHkJKHJl
dmlzaW9uIDIxMzM2OSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9zaW11bGF0b3Jf
cHJvY2Vzcy5weQkod29ya2luZyBjb3B5KQpAQCAtNTksOCArNTksNiBAQCBjbGFzcyBTaW11bGF0
b3JQcm9jZXNzKFNlcnZlclByb2Nlc3MpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0X29i
aiwgbmFtZSwgY21kLCBlbnY9Tm9uZSwgdW5pdmVyc2FsX25ld2xpbmVzPUZhbHNlLCB0cmVhdF9u
b19kYXRhX2FzX2NyYXNoPUZhbHNlLCB3b3JrZXJfbnVtYmVyPU5vbmUpOgogICAgICAgICBzZWxm
Ll9idW5kbGVfaWQgPSBwb3J0X29iai5hcHBfaWRlbnRpZmllcl9mcm9tX2J1bmRsZShjbWRbMF0p
CiAgICAgICAgIHNlbGYuX2RldmljZSA9IHBvcnRfb2JqLmRldmljZV9mb3Jfd29ya2VyX251bWJl
cih3b3JrZXJfbnVtYmVyKQotICAgICAgICBpZiBub3Qgc2VsZi5fZGV2aWNlLmluc3RhbGxfYXBw
KGNtZFswXSwgZW52KToKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignRmFpbGVkIHRv
IGluc3RhbGwgYXBwIHt9IG9uIHNpbXVsYXRvciBkZXZpY2Uge30nLmZvcm1hdChjbWRbMF0sIHNl
bGYuX2RldmljZS51ZGlkKSkKICAgICAgICAgZW52WydJUENfSURFTlRJRklFUiddID0gc2VsZi5f
YnVuZGxlX2lkICsgJy0nICsgc2VsZi5fZGV2aWNlLnVkaWQKIAogICAgICAgICAjIFRoaXMgbG9j
YXRpb24gbWF0Y2hlcyB0aGUgbG9jYXRpb24gdXNlZCBieSBXZWJLaXRUZXN0UnVubmVyIGFuZCBE
dW1wUmVuZGVyVHJlZQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3Rlc3QucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3Rlc3QucHkJKHJldmlz
aW9uIDIxMzM2OSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC90ZXN0LnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOTIsMTAgKzM5MiwxMCBAQCBjbGFzcyBUZXN0UG9ydChQb3J0KToKICAg
ICBkZWYgZGVmYXVsdF9waXhlbF90ZXN0cyhzZWxmKToKICAgICAgICAgcmV0dXJuIFRydWUKIAot
ICAgIGRlZiBfcGF0aF90b19kcml2ZXIoc2VsZik6CisgICAgZGVmIHBhdGhfdG9fZHJpdmVyKHNl
bGYpOgogICAgICAgICAjIFRoaXMgcm91dGluZSBzaG91bGRuJ3Qgbm9ybWFsbHkgYmUgY2FsbGVk
LCBidXQgaXQgaXMgY2FsbGVkIGJ5CiAgICAgICAgICMgdGhlIG1vY2tfZHJ0IERyaXZlci4gV2Ug
cmV0dXJuIHNvbWV0aGluZywgYnV0IG1ha2Ugc3VyZSBpdCdzIHVzZWxlc3MuCi0gICAgICAgIHJl
dHVybiAnTU9DSyBfcGF0aF90b19kcml2ZXInCisgICAgICAgIHJldHVybiAnTU9DSyBwYXRoX3Rv
X2RyaXZlcicKIAogICAgIGRlZiBiYXNlbGluZV9zZWFyY2hfcGF0aChzZWxmKToKICAgICAgICAg
c2VhcmNoX3BhdGhzID0gewpAQCAtNTM3LDcgKzUzNyw3IEBAIGNsYXNzIFRlc3REcml2ZXIoRHJp
dmVyKToKIAogICAgIGRlZiBjbWRfbGluZShzZWxmLCBwaXhlbF90ZXN0cywgcGVyX3Rlc3RfYXJn
cyk6CiAgICAgICAgIHBpeGVsX3Rlc3RzX2ZsYWcgPSAnLXAnIGlmIHBpeGVsX3Rlc3RzIGVsc2Ug
JycKLSAgICAgICAgcmV0dXJuIFtzZWxmLl9wb3J0Ll9wYXRoX3RvX2RyaXZlcigpXSArIFtwaXhl
bF90ZXN0c19mbGFnXSArIHNlbGYuX3BvcnQuZ2V0X29wdGlvbignYWRkaXRpb25hbF9kcnRfZmxh
ZycsIFtdKSArIHBlcl90ZXN0X2FyZ3MKKyAgICAgICAgcmV0dXJuIFtzZWxmLl9wb3J0LnBhdGhf
dG9fZHJpdmVyKCldICsgW3BpeGVsX3Rlc3RzX2ZsYWddICsgc2VsZi5fcG9ydC5nZXRfb3B0aW9u
KCdhZGRpdGlvbmFsX2RydF9mbGFnJywgW10pICsgcGVyX3Rlc3RfYXJncwogCiAgICAgZGVmIHJ1
bl90ZXN0KHNlbGYsIHRlc3RfaW5wdXQsIHN0b3Bfd2hlbl9kb25lKToKICAgICAgICAgaWYgbm90
IHNlbGYuc3RhcnRlZDoKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC93aW4ucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dpbi5weQkocmV2aXNp
b24gMjEzMzY5KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dpbi5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMTMyLDcgKzEzMiw3IEBAIGNsYXNzIFdpblBvcnQoQXBwbGVQb3J0KToKICAg
ICAgICAgc2VsZi5fcnVuX3NjcmlwdCgncnVuLXNhZmFyaScsIFthYnNwYXRoX3RvX3VyaShTeXN0
ZW1Ib3N0KCkucGxhdGZvcm0sIHJlc3VsdHNfZmlsZW5hbWUpXSkKIAogICAgIGRlZiBfcnVudGlt
ZV9mZWF0dXJlX2xpc3Qoc2VsZik6Ci0gICAgICAgIHN1cHBvcnRlZF9mZWF0dXJlc19jb21tYW5k
ID0gW3NlbGYuX3BhdGhfdG9fZHJpdmVyKCksICctLXByaW50LXN1cHBvcnRlZC1mZWF0dXJlcydd
CisgICAgICAgIHN1cHBvcnRlZF9mZWF0dXJlc19jb21tYW5kID0gW3NlbGYucGF0aF90b19kcml2
ZXIoKSwgJy0tcHJpbnQtc3VwcG9ydGVkLWZlYXR1cmVzJ10KICAgICAgICAgdHJ5OgogICAgICAg
ICAgICAgb3V0cHV0ID0gc2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKHN1cHBvcnRlZF9mZWF0
dXJlc19jb21tYW5kLCBlcnJvcl9oYW5kbGVyPUV4ZWN1dGl2ZS5pZ25vcmVfZXJyb3IpCiAgICAg
ICAgIGV4Y2VwdCBPU0Vycm9yLCBlOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303545</attachid>
            <date>2017-03-06 13:01:38 -0800</date>
            <delta_ts>2017-03-07 16:05:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169054-20170306130137.patch</filename>
            <type>text/plain</type>
            <size>5346</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIxMzQ2MSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIzIEBACisyMDE3LTAzLTA2ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICB3ZWJraXRweTogRWZmaWNpZW50IGFwcCBpbnN0YWxsYXRpb24gZm9yIGRl
dmljZSB0ZXN0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjkwNTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBXZSBzaG91bGQgb25seSBpbnN0YWxsIGFuIGFwcCBvbiBhIGRldmljZSBvbmNlLCBub3Qg
ZXZlcnkgdGltZSB0aGUgYXBwIGlzIHJ1bi4gIE1vdmUKKyAgICAgICAgYXBwIGluc3RhbGxhdGlv
biB0byBzZXR1cCBhbmQgYWRkIGEgY29tbWFuZCBsaW5lIGZsYWcgdG8gc2tpcCBpbnN0YWxsaW5n
LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2ZhY3RvcnkucHk6CisgICAgICAg
IChwbGF0Zm9ybV9vcHRpb25zKTogQWRkIC0tbm8taW5zdGFsbCBmbGFnLgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvcG9ydC9pb3MucHk6CisgICAgICAgIChJT1NQb3J0Ll9jaGVja19kcml2
ZXIpOiBEbyBub3QgY2hlY2sgZHJpdmVyIHdoZW4gc2tpcHBpbmcgaW5zdGFsbAorICAgICAgICAo
SU9TUG9ydC5zZXR1cF90ZXN0X3J1bik6IEluc3RhbGwgYXBwIHRvIGRldmljZS4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zX3NpbXVsYXRvci5weToKKyAgICAgICAgKElPU1Np
bXVsYXRvclBvcnQuc2V0dXBfdGVzdF9ydW4pOiBDYWxsIHBhcmVudCBjbGFzcyBzZXR1cC4KKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvc2ltdWxhdG9yX3Byb2Nlc3MucHk6CisgICAg
ICAgIChTaW11bGF0b3JQcm9jZXNzLl9faW5pdF9fKTogUmVtb3ZlIGFwcCBpbnN0YWxsYXRpb24u
CisKIDIwMTctMDMtMDYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAK
ICAgICAgICAgW0dUS11bSlNDT25seV0gRW5hYmxlIFdlYkFzc2VtYmx5IG9uIExpbnV4IGVudmly
b25tZW50CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZmFjdG9yeS5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZmFjdG9yeS5weQkocmV2aXNp
b24gMjEzNDUzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2ZhY3RvcnkucHkJKHdv
cmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDkgQEAgZGVmIHBsYXRmb3JtX29wdGlvbnModXNlX2ds
b2JzPUZhbHNlKToKICAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oJy0taW9zLXNpbXVsYXRv
cicsIGFjdGlvbj0nc3RvcmVfY29uc3QnLCBkZXN0PSdwbGF0Zm9ybScsCiAgICAgICAgICAgICBj
b25zdD0oJ2lvcy1zaW11bGF0b3InKSwKICAgICAgICAgICAgIGhlbHA9KCdBbGlhcyBmb3IgLS1w
bGF0Zm9ybT1pb3Mtc2ltdWxhdG9yJykpLAorICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbign
LS1uby1pbnN0YWxsJywgYWN0aW9uPSdzdG9yZV9jb25zdCcsIGRlc3Q9J2luc3RhbGwnLAorICAg
ICAgICAgICAgY29uc3Q9RmFsc2UsIGRlZmF1bHQ9VHJ1ZSwKKyAgICAgICAgICAgIGhlbHA9J1Nr
aXAgYXBwIGluc3RhbGwgZm9yIGRldmljZSB0ZXN0aW5nJyksCiAgICAgICAgIG9wdHBhcnNlLm1h
a2Vfb3B0aW9uKCctLWVmbCcsIGFjdGlvbj0nc3RvcmVfY29uc3QnLCBkZXN0PSdwbGF0Zm9ybScs
CiAgICAgICAgICAgICBjb25zdD0oJ2VmbConIGlmIHVzZV9nbG9icyBlbHNlICdlZmwnKSwKICAg
ICAgICAgICAgIGhlbHA9KCdBbGlhcyBmb3IgLS1wbGF0Zm9ybT1lZmwqJyBpZiB1c2VfZ2xvYnMg
ZWxzZSAnQWxpYXMgZm9yIC0tcGxhdGZvcm09ZWZsJykpLApJbmRleDogVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wb3J0L2lvcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3BvcnQvaW9zLnB5CShyZXZpc2lvbiAyMTM0NTMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3BvcnQvaW9zLnB5CSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSwxMSBAQCBjbGFzcyBJT1NQ
b3J0KERhcndpblBvcnQpOgogICAgICAgICAgICAgcmV0dXJuICdXZWJLaXRUZXN0UnVubmVyQXBw
LmFwcCcKICAgICAgICAgcmV0dXJuICdEdW1wUmVuZGVyVHJlZS5hcHAnCiAKKyAgICBkZWYgX2No
ZWNrX2RyaXZlcihzZWxmKToKKyAgICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCdpbnN0YWxsJyk6
CisgICAgICAgICAgICByZXR1cm4gc3VwZXIoSU9TUG9ydCwgc2VsZikuX2NoZWNrX2RyaXZlcigp
CisgICAgICAgIHJldHVybiBUcnVlCisKICAgICBAbWVtb2l6ZWQKICAgICBkZWYgY2hpbGRfcHJv
Y2Vzc2VzKHNlbGYpOgogICAgICAgICByZXR1cm4gaW50KHNlbGYuZ2V0X29wdGlvbignY2hpbGRf
cHJvY2Vzc2VzJykpCkBAIC03NiwzICs4MSwxMyBAQCBjbGFzcyBJT1NQb3J0KERhcndpblBvcnQp
OgogICAgICAgICBpZiBzZWxmLnVzaW5nX211bHRpcGxlX2RldmljZXMoKToKICAgICAgICAgICAg
IHJldHVybiBzZWxmLl90ZXN0aW5nX2RldmljZShudW1iZXIpCiAgICAgICAgIHJldHVybiBzZWxm
Ll9jdXJyZW50X2RldmljZQorCisgICAgZGVmIHNldHVwX3Rlc3RfcnVuKHNlbGYsIGRldmljZV9j
bGFzcz1Ob25lKToKKyAgICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCdpbnN0YWxsJyk6CisgICAg
ICAgICAgICBmb3IgaSBpbiB4cmFuZ2Uoc2VsZi5jaGlsZF9wcm9jZXNzZXMoKSk6CisgICAgICAg
ICAgICAgICAgX2xvZy53YXJuKCdJbnN0YWxsaW5nIHRvIHt9Jy5mb3JtYXQoc2VsZi5kZXZpY2Vf
Zm9yX3dvcmtlcl9udW1iZXIoaSkpKQorICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmRldmlj
ZV9mb3Jfd29ya2VyX251bWJlcihpKS5pbnN0YWxsX2FwcChzZWxmLl9wYXRoX3RvX2RyaXZlcigp
LCB7J0RZTERfTElCUkFSWV9QQVRIJzogc2VsZi5fYnVpbGRfcGF0aCgpfSk6CisgICAgICAgICAg
ICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignRmFpbGVkIHRvIGluc3RhbGwgYXBwIHt9IG9u
IGRldmljZSB7fScuZm9ybWF0KHNlbGYuX3BhdGhfdG9fZHJpdmVyKCksIHNlbGYuZGV2aWNlX2Zv
cl93b3JrZXJfbnVtYmVyKGkpLnVkaWQpKQorICAgICAgICAgICAgICAgIF9sb2cud2FybignSW5z
dGFsbCBjb21wbGV0ZWQnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgX2xvZy53YXJuKCdT
a2lwcGluZyBpbnN0YWxsIG9uIGFsbCBkZXZpY2VzJykKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcG9ydC9pb3Nfc2ltdWxhdG9yLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcG9ydC9pb3Nfc2ltdWxhdG9yLnB5CShyZXZpc2lvbiAyMTM0NTMpCisrKyBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zX3NpbXVsYXRvci5weQkod29ya2luZyBjb3B5KQpA
QCAtMjIxLDYgKzIyMSw3IEBAIGNsYXNzIElPU1NpbXVsYXRvclBvcnQoSU9TUG9ydCk6CiAgICAg
ICAgIHNlbGYuX2NyZWF0ZV9zaW11bGF0b3JzKCkKIAogICAgICAgICBpZiBub3Qgc2VsZi5fdXNp
bmdfZGVkaWNhdGVkX3NpbXVsYXRvcnMoKToKKyAgICAgICAgICAgIHN1cGVyKElPU1NpbXVsYXRv
clBvcnQsIHNlbGYpLnNldHVwX3Rlc3RfcnVuKGRldmljZV9jbGFzcykKICAgICAgICAgICAgIHJl
dHVybgogCiAgICAgICAgIGZvciBpIGluIHhyYW5nZShzZWxmLmNoaWxkX3Byb2Nlc3NlcygpKToK
QEAgLTIzOSw2ICsyNDAsOCBAQCBjbGFzcyBJT1NTaW11bGF0b3JQb3J0KElPU1BvcnQpOgogICAg
ICAgICBmb3IgaSBpbiB4cmFuZ2Uoc2VsZi5jaGlsZF9wcm9jZXNzZXMoKSk6CiAgICAgICAgICAg
ICBTaW11bGF0b3Iud2FpdF91bnRpbF9kZXZpY2VfaXNfYm9vdGVkKHNlbGYuX3Rlc3RpbmdfZGV2
aWNlKGkpLnVkaWQpCiAKKyAgICAgICAgc3VwZXIoSU9TU2ltdWxhdG9yUG9ydCwgc2VsZikuc2V0
dXBfdGVzdF9ydW4oZGV2aWNlX2NsYXNzKQorCiAgICAgZGVmIF9xdWl0X2lvc19zaW11bGF0b3Io
c2VsZik6CiAgICAgICAgIGlmIG5vdCBzZWxmLl91c2luZ19kZWRpY2F0ZWRfc2ltdWxhdG9ycygp
OgogICAgICAgICAgICAgcmV0dXJuCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQv
c2ltdWxhdG9yX3Byb2Nlc3MucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wb3J0L3NpbXVsYXRvcl9wcm9jZXNzLnB5CShyZXZpc2lvbiAyMTM0NTMpCisrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3BvcnQvc2ltdWxhdG9yX3Byb2Nlc3MucHkJKHdvcmtpbmcgY29weSkK
QEAgLTU5LDggKzU5LDYgQEAgY2xhc3MgU2ltdWxhdG9yUHJvY2VzcyhTZXJ2ZXJQcm9jZXNzKToK
ICAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydF9vYmosIG5hbWUsIGNtZCwgZW52PU5vbmUsIHVu
aXZlcnNhbF9uZXdsaW5lcz1GYWxzZSwgdHJlYXRfbm9fZGF0YV9hc19jcmFzaD1GYWxzZSwgd29y
a2VyX251bWJlcj1Ob25lKToKICAgICAgICAgc2VsZi5fYnVuZGxlX2lkID0gcG9ydF9vYmouYXBw
X2lkZW50aWZpZXJfZnJvbV9idW5kbGUoY21kWzBdKQogICAgICAgICBzZWxmLl9kZXZpY2UgPSBw
b3J0X29iai5kZXZpY2VfZm9yX3dvcmtlcl9udW1iZXIod29ya2VyX251bWJlcikKLSAgICAgICAg
aWYgbm90IHNlbGYuX2RldmljZS5pbnN0YWxsX2FwcChjbWRbMF0sIGVudik6Ci0gICAgICAgICAg
ICByYWlzZSBSdW50aW1lRXJyb3IoJ0ZhaWxlZCB0byBpbnN0YWxsIGFwcCB7fSBvbiBzaW11bGF0
b3IgZGV2aWNlIHt9Jy5mb3JtYXQoY21kWzBdLCBzZWxmLl9kZXZpY2UudWRpZCkpCiAgICAgICAg
IGVudlsnSVBDX0lERU5USUZJRVInXSA9IHNlbGYuX2J1bmRsZV9pZCArICctJyArIHNlbGYuX2Rl
dmljZS51ZGlkCiAKICAgICAgICAgIyBUaGlzIGxvY2F0aW9uIG1hdGNoZXMgdGhlIGxvY2F0aW9u
IHVzZWQgYnkgV2ViS2l0VGVzdFJ1bm5lciBhbmQgRHVtcFJlbmRlclRyZWUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303740</attachid>
            <date>2017-03-07 16:06:04 -0800</date>
            <delta_ts>2017-03-09 10:32:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169054-20170307160603.patch</filename>
            <type>text/plain</type>
            <size>3014</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIxMzUzOCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE5IEBACisyMDE3LTAzLTA3ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICB3ZWJraXRweTogRWZmaWNpZW50IGFwcCBpbnN0YWxsYXRpb24gZm9yIGRl
dmljZSB0ZXN0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjkwNTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMwNzkwMjA3PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHNob3VsZCBvbmx5IGlu
c3RhbGwgYW4gYXBwIG9uIGEgZGV2aWNlIG9uY2UsIG5vdCBldmVyeSB0aW1lIHRoZSBhcHAgaXMg
cnVuLgorICAgICAgICBNb3ZlIGFwcCBpbnN0YWxsYXRpb24gdG8gc2V0dXAgYW5kIGFkZCBhIGNv
bW1hbmQgbGluZSBmbGFnIHRvIHNraXAgaW5zdGFsbGluZy4KKworICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvcG9ydC9pb3MucHk6CisgICAgICAgIChJT1NQb3J0LnNldHVwX3Rlc3RfcnVuKTog
SW5zdGFsbCBhcHAgdG8gZGV2aWNlLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9z
aW11bGF0b3JfcHJvY2Vzcy5weToKKyAgICAgICAgKFNpbXVsYXRvclByb2Nlc3MuX19pbml0X18p
OiBSZW1vdmUgYXBwIGluc3RhbGxhdGlvbi4KKwogMjAxNy0wMy0wNyAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFtDb250ZW50IEV4dGVuc2lv
bnNdIFJlbmFtZSAiRG9tYWluIiB0byAiQ29uZGl0aW9uIiB3aGVyZSBhcHByb3ByaWF0ZQpJbmRl
eDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvcy5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zLnB5CShyZXZpc2lvbiAyMTM1MzgpCisrKyBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zLnB5CSh3b3JraW5nIGNvcHkpCkBAIC04MiwzICs4
MiwxMiBAQCBjbGFzcyBJT1NQb3J0KERhcndpblBvcnQpOgogCiAgICAgZGVmIHNldHVwX3Rlc3Rf
cnVuKHNlbGYsIGRldmljZV9jbGFzcz1Ob25lKToKICAgICAgICAgc2VsZi5fY3JlYXRlX2Rldmlj
ZXMoZGV2aWNlX2NsYXNzKQorCisgICAgICAgIGZvciBpIGluIHhyYW5nZShzZWxmLmNoaWxkX3By
b2Nlc3NlcygpKToKKyAgICAgICAgICAgIGRldmljZSA9IHNlbGYuZGV2aWNlX2Zvcl93b3JrZXJf
bnVtYmVyKGkpCisgICAgICAgICAgICBfbG9nLmRlYnVnKCdJbnN0YWxsaW5nIHRvIHt9Jy5mb3Jt
YXQoZGV2aWNlKSkKKyAgICAgICAgICAgICMgV2l0aG91dCBwYXNzaW5nIERZTERfTElCUkFSWV9Q
QVRILCBsaWJXZWJDb3JlVGVzdFN1cHBvcnQgY2Fubm90IGJlIGxvYWRlZCBhbmQgdGhlIGFwcCB3
aWxsIGNyYXNoIHByZS1sYXVuY2gsCisgICAgICAgICAgICAjIGxlYXZpbmcgYSBjcmFzaCBsb2cg
d2hpY2ggd2lsbCBiZSBwaWNrZWQgdXAgaW4gcmVzdWx0cy4gIE5vIERZTERfRlJBTUVXT1JLX1BB
VEggd2lsbCBhbHNvIGNhdXNlIHRoZSBhcHAgdG8KKyAgICAgICAgICAgICMgY3Jhc2gsIGJ1dCB0
aGlzIGNyYXNoIHdpbGwgb2NjdXIgcG9zdC1sYXVuY2gsIGFmdGVyIGluc3RhbGxfYXBwIGhhcyBh
bHJlYWR5IGtpbGxlZCB0aGUgcHJvY2Vzcy4KKyAgICAgICAgICAgIGlmIG5vdCBkZXZpY2UuaW5z
dGFsbF9hcHAoc2VsZi5fcGF0aF90b19kcml2ZXIoKSwgeydEWUxEX0xJQlJBUllfUEFUSCc6IHNl
bGYuX2J1aWxkX3BhdGgoKX0pOgorICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcign
RmFpbGVkIHRvIGluc3RhbGwgYXBwIHt9IG9uIGRldmljZSB7fScuZm9ybWF0KHNlbGYuX3BhdGhf
dG9fZHJpdmVyKCksIGRldmljZS51ZGlkKSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
cG9ydC9zaW11bGF0b3JfcHJvY2Vzcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3BvcnQvc2ltdWxhdG9yX3Byb2Nlc3MucHkJKHJldmlzaW9uIDIxMzUzOCkKKysrIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9zaW11bGF0b3JfcHJvY2Vzcy5weQkod29ya2luZyBj
b3B5KQpAQCAtNTksOCArNTksNiBAQCBjbGFzcyBTaW11bGF0b3JQcm9jZXNzKFNlcnZlclByb2Nl
c3MpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0X29iaiwgbmFtZSwgY21kLCBlbnY9Tm9u
ZSwgdW5pdmVyc2FsX25ld2xpbmVzPUZhbHNlLCB0cmVhdF9ub19kYXRhX2FzX2NyYXNoPUZhbHNl
LCB3b3JrZXJfbnVtYmVyPU5vbmUpOgogICAgICAgICBzZWxmLl9idW5kbGVfaWQgPSBwb3J0X29i
ai5hcHBfaWRlbnRpZmllcl9mcm9tX2J1bmRsZShjbWRbMF0pCiAgICAgICAgIHNlbGYuX2Rldmlj
ZSA9IHBvcnRfb2JqLmRldmljZV9mb3Jfd29ya2VyX251bWJlcih3b3JrZXJfbnVtYmVyKQotICAg
ICAgICBpZiBub3Qgc2VsZi5fZGV2aWNlLmluc3RhbGxfYXBwKGNtZFswXSwgZW52KToKLSAgICAg
ICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignRmFpbGVkIHRvIGluc3RhbGwgYXBwIHt9IG9uIHNp
bXVsYXRvciBkZXZpY2Uge30nLmZvcm1hdChjbWRbMF0sIHNlbGYuX2RldmljZS51ZGlkKSkKICAg
ICAgICAgZW52WydJUENfSURFTlRJRklFUiddID0gc2VsZi5fYnVuZGxlX2lkICsgJy0nICsgc2Vs
Zi5fZGV2aWNlLnVkaWQKIAogICAgICAgICAjIFRoaXMgbG9jYXRpb24gbWF0Y2hlcyB0aGUgbG9j
YXRpb24gdXNlZCBieSBXZWJLaXRUZXN0UnVubmVyIGFuZCBEdW1wUmVuZGVyVHJlZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303934</attachid>
            <date>2017-03-09 10:32:27 -0800</date>
            <delta_ts>2017-03-14 11:34:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169054-20170309103226.patch</filename>
            <type>text/plain</type>
            <size>2944</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIxMzY0NikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE5IEBACisyMDE3LTAzLTA5ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICB3ZWJraXRweTogRWZmaWNpZW50IGFwcCBpbnN0YWxsYXRpb24gZm9yIGRl
dmljZSB0ZXN0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjkwNTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMwNzkwMjA3PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHNob3VsZCBvbmx5IGlu
c3RhbGwgYW4gYXBwIG9uIGEgZGV2aWNlIG9uY2UsIG5vdCBldmVyeSB0aW1lIHRoZSBhcHAgaXMg
cnVuLgorICAgICAgICBNb3ZlIGFwcCBpbnN0YWxsYXRpb24gdG8gc2V0dXAuCisKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zLnB5OgorICAgICAgICAoSU9TUG9ydC5zZXR1cF90
ZXN0X3J1bik6IEluc3RhbGwgYXBwIHRvIGRldmljZS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L3BvcnQvc2ltdWxhdG9yX3Byb2Nlc3MucHk6CisgICAgICAgIChTaW11bGF0b3JQcm9jZXNz
Ll9faW5pdF9fKTogUmVtb3ZlIGFwcCBpbnN0YWxsYXRpb24uCisKIDIwMTctMDMtMDggIEZpbGlw
IFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBXVEYgc2hvdWxkIG1ha2UgaXQg
c3VwZXIgZWFzeSB0byBkbyBBUk0gY29uY3VycmVuY3kgdHJpY2tzCkluZGV4OiBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvaW9zLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcG9ydC9pb3MucHkJKHJldmlzaW9uIDIxMzY0NikKKysrIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcG9ydC9pb3MucHkJKHdvcmtpbmcgY29weSkKQEAgLTgyLDMgKzgyLDEyIEBAIGNsYXNz
IElPU1BvcnQoRGFyd2luUG9ydCk6CiAKICAgICBkZWYgc2V0dXBfdGVzdF9ydW4oc2VsZiwgZGV2
aWNlX2NsYXNzPU5vbmUpOgogICAgICAgICBzZWxmLl9jcmVhdGVfZGV2aWNlcyhkZXZpY2VfY2xh
c3MpCisKKyAgICAgICAgZm9yIGkgaW4geHJhbmdlKHNlbGYuY2hpbGRfcHJvY2Vzc2VzKCkpOgor
ICAgICAgICAgICAgZGV2aWNlID0gc2VsZi5kZXZpY2VfZm9yX3dvcmtlcl9udW1iZXIoaSkKKyAg
ICAgICAgICAgIF9sb2cuZGVidWcoJ0luc3RhbGxpbmcgdG8ge30nLmZvcm1hdChkZXZpY2UpKQor
ICAgICAgICAgICAgIyBXaXRob3V0IHBhc3NpbmcgRFlMRF9MSUJSQVJZX1BBVEgsIGxpYldlYkNv
cmVUZXN0U3VwcG9ydCBjYW5ub3QgYmUgbG9hZGVkIGFuZCB0aGUgYXBwIHdpbGwgY3Jhc2ggcHJl
LWxhdW5jaCwKKyAgICAgICAgICAgICMgbGVhdmluZyBhIGNyYXNoIGxvZyB3aGljaCB3aWxsIGJl
IHBpY2tlZCB1cCBpbiByZXN1bHRzLiAgTm8gRFlMRF9GUkFNRVdPUktfUEFUSCB3aWxsIGFsc28g
Y2F1c2UgdGhlIGFwcCB0bworICAgICAgICAgICAgIyBjcmFzaCwgYnV0IHRoaXMgY3Jhc2ggd2ls
bCBvY2N1ciBwb3N0LWxhdW5jaCwgYWZ0ZXIgaW5zdGFsbF9hcHAgaGFzIGFscmVhZHkga2lsbGVk
IHRoZSBwcm9jZXNzLgorICAgICAgICAgICAgaWYgbm90IGRldmljZS5pbnN0YWxsX2FwcChzZWxm
Ll9wYXRoX3RvX2RyaXZlcigpLCB7J0RZTERfTElCUkFSWV9QQVRIJzogc2VsZi5fYnVpbGRfcGF0
aCgpfSk6CisgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdGYWlsZWQgdG8gaW5z
dGFsbCBhcHAge30gb24gZGV2aWNlIHt9Jy5mb3JtYXQoc2VsZi5fcGF0aF90b19kcml2ZXIoKSwg
ZGV2aWNlLnVkaWQpKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3NpbXVsYXRv
cl9wcm9jZXNzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9z
aW11bGF0b3JfcHJvY2Vzcy5weQkocmV2aXNpb24gMjEzNjQ2KQorKysgVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wb3J0L3NpbXVsYXRvcl9wcm9jZXNzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC01OSw4
ICs1OSw2IEBAIGNsYXNzIFNpbXVsYXRvclByb2Nlc3MoU2VydmVyUHJvY2Vzcyk6CiAgICAgZGVm
IF9faW5pdF9fKHNlbGYsIHBvcnRfb2JqLCBuYW1lLCBjbWQsIGVudj1Ob25lLCB1bml2ZXJzYWxf
bmV3bGluZXM9RmFsc2UsIHRyZWF0X25vX2RhdGFfYXNfY3Jhc2g9RmFsc2UsIHdvcmtlcl9udW1i
ZXI9Tm9uZSk6CiAgICAgICAgIHNlbGYuX2J1bmRsZV9pZCA9IHBvcnRfb2JqLmFwcF9pZGVudGlm
aWVyX2Zyb21fYnVuZGxlKGNtZFswXSkKICAgICAgICAgc2VsZi5fZGV2aWNlID0gcG9ydF9vYmou
ZGV2aWNlX2Zvcl93b3JrZXJfbnVtYmVyKHdvcmtlcl9udW1iZXIpCi0gICAgICAgIGlmIG5vdCBz
ZWxmLl9kZXZpY2UuaW5zdGFsbF9hcHAoY21kWzBdLCBlbnYpOgotICAgICAgICAgICAgcmFpc2Ug
UnVudGltZUVycm9yKCdGYWlsZWQgdG8gaW5zdGFsbCBhcHAge30gb24gc2ltdWxhdG9yIGRldmlj
ZSB7fScuZm9ybWF0KGNtZFswXSwgc2VsZi5fZGV2aWNlLnVkaWQpKQogICAgICAgICBlbnZbJ0lQ
Q19JREVOVElGSUVSJ10gPSBzZWxmLl9idW5kbGVfaWQgKyAnLScgKyBzZWxmLl9kZXZpY2UudWRp
ZAogCiAgICAgICAgICMgVGhpcyBsb2NhdGlvbiBtYXRjaGVzIHRoZSBsb2NhdGlvbiB1c2VkIGJ5
IFdlYktpdFRlc3RSdW5uZXIgYW5kIER1bXBSZW5kZXJUcmVlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304403</attachid>
            <date>2017-03-14 11:34:57 -0700</date>
            <delta_ts>2017-03-14 12:16:39 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-169054-20170314113456.patch</filename>
            <type>text/plain</type>
            <size>2945</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIxMzkyMCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE5IEBACisyMDE3LTAzLTE0ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICB3ZWJraXRweTogRWZmaWNpZW50IGFwcCBpbnN0YWxsYXRpb24gZm9yIGRl
dmljZSB0ZXN0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjkwNTQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMwNzkwMjA3PgorCisgICAgICAg
IFJldmlld2VkIGJ5IERhbmllbCBCYXRlcy4KKworICAgICAgICBXZSBzaG91bGQgb25seSBpbnN0
YWxsIGFuIGFwcCBvbiBhIGRldmljZSBvbmNlLCBub3QgZXZlcnkgdGltZSB0aGUgYXBwIGlzIHJ1
bi4KKyAgICAgICAgTW92ZSBhcHAgaW5zdGFsbGF0aW9uIHRvIHNldHVwLgorCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9wb3J0L2lvcy5weToKKyAgICAgICAgKElPU1BvcnQuc2V0dXBfdGVz
dF9ydW4pOiBJbnN0YWxsIGFwcCB0byBkZXZpY2UuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9wb3J0L3NpbXVsYXRvcl9wcm9jZXNzLnB5OgorICAgICAgICAoU2ltdWxhdG9yUHJvY2Vzcy5f
X2luaXRfXyk6IFJlbW92ZSBhcHAgaW5zdGFsbGF0aW9uLgorCiAyMDE3LTAzLTE0ICBGdWppaSBI
aXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIE53dHIgaWdub3Jl
cyBJbWFnZURpZmYncyBlcnJvcnMgZm9yIHJlZiB0ZXN0cwpJbmRleDogVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wb3J0L2lvcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3BvcnQvaW9zLnB5CShyZXZpc2lvbiAyMTM5MjApCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3BvcnQvaW9zLnB5CSh3b3JraW5nIGNvcHkpCkBAIC04MiwzICs4MiwxMiBAQCBjbGFzcyBJT1NQ
b3J0KERhcndpblBvcnQpOgogCiAgICAgZGVmIHNldHVwX3Rlc3RfcnVuKHNlbGYsIGRldmljZV9j
bGFzcz1Ob25lKToKICAgICAgICAgc2VsZi5fY3JlYXRlX2RldmljZXMoZGV2aWNlX2NsYXNzKQor
CisgICAgICAgIGZvciBpIGluIHhyYW5nZShzZWxmLmNoaWxkX3Byb2Nlc3NlcygpKToKKyAgICAg
ICAgICAgIGRldmljZSA9IHNlbGYuZGV2aWNlX2Zvcl93b3JrZXJfbnVtYmVyKGkpCisgICAgICAg
ICAgICBfbG9nLmRlYnVnKCdJbnN0YWxsaW5nIHRvIHt9Jy5mb3JtYXQoZGV2aWNlKSkKKyAgICAg
ICAgICAgICMgV2l0aG91dCBwYXNzaW5nIERZTERfTElCUkFSWV9QQVRILCBsaWJXZWJDb3JlVGVz
dFN1cHBvcnQgY2Fubm90IGJlIGxvYWRlZCBhbmQgRFJUL1dLVFIgd2lsbCBjcmFzaCBwcmUtbGF1
bmNoLAorICAgICAgICAgICAgIyBsZWF2aW5nIGEgY3Jhc2ggbG9nIHdoaWNoIHdpbGwgYmUgcGlj
a2VkIHVwIGluIHJlc3VsdHMuICBObyBEWUxEX0ZSQU1FV09SS19QQVRIIHdpbGwgYWxzbyBjYXVz
ZSB0aGUgRFJUL1dLVFIgdG8KKyAgICAgICAgICAgICMgY3Jhc2gsIGJ1dCB0aGlzIGNyYXNoIHdp
bGwgb2NjdXIgcG9zdC1sYXVuY2gsIGFmdGVyIGluc3RhbGxfYXBwIGhhcyBhbHJlYWR5IGtpbGxl
ZCB0aGUgcHJvY2Vzcy4KKyAgICAgICAgICAgIGlmIG5vdCBkZXZpY2UuaW5zdGFsbF9hcHAoc2Vs
Zi5fcGF0aF90b19kcml2ZXIoKSwgeydEWUxEX0xJQlJBUllfUEFUSCc6IHNlbGYuX2J1aWxkX3Bh
dGgoKX0pOgorICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignRmFpbGVkIHRvIGlu
c3RhbGwgYXBwIHt9IG9uIGRldmljZSB7fScuZm9ybWF0KHNlbGYuX3BhdGhfdG9fZHJpdmVyKCks
IGRldmljZS51ZGlkKSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9zaW11bGF0
b3JfcHJvY2Vzcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQv
c2ltdWxhdG9yX3Byb2Nlc3MucHkJKHJldmlzaW9uIDIxMzkyMCkKKysrIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcG9ydC9zaW11bGF0b3JfcHJvY2Vzcy5weQkod29ya2luZyBjb3B5KQpAQCAtNTks
OCArNTksNiBAQCBjbGFzcyBTaW11bGF0b3JQcm9jZXNzKFNlcnZlclByb2Nlc3MpOgogICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBwb3J0X29iaiwgbmFtZSwgY21kLCBlbnY9Tm9uZSwgdW5pdmVyc2Fs
X25ld2xpbmVzPUZhbHNlLCB0cmVhdF9ub19kYXRhX2FzX2NyYXNoPUZhbHNlLCB3b3JrZXJfbnVt
YmVyPU5vbmUpOgogICAgICAgICBzZWxmLl9idW5kbGVfaWQgPSBwb3J0X29iai5hcHBfaWRlbnRp
Zmllcl9mcm9tX2J1bmRsZShjbWRbMF0pCiAgICAgICAgIHNlbGYuX2RldmljZSA9IHBvcnRfb2Jq
LmRldmljZV9mb3Jfd29ya2VyX251bWJlcih3b3JrZXJfbnVtYmVyKQotICAgICAgICBpZiBub3Qg
c2VsZi5fZGV2aWNlLmluc3RhbGxfYXBwKGNtZFswXSwgZW52KToKLSAgICAgICAgICAgIHJhaXNl
IFJ1bnRpbWVFcnJvcignRmFpbGVkIHRvIGluc3RhbGwgYXBwIHt9IG9uIHNpbXVsYXRvciBkZXZp
Y2Uge30nLmZvcm1hdChjbWRbMF0sIHNlbGYuX2RldmljZS51ZGlkKSkKICAgICAgICAgZW52WydJ
UENfSURFTlRJRklFUiddID0gc2VsZi5fYnVuZGxlX2lkICsgJy0nICsgc2VsZi5fZGV2aWNlLnVk
aWQKIAogICAgICAgICAjIFRoaXMgbG9jYXRpb24gbWF0Y2hlcyB0aGUgbG9jYXRpb24gdXNlZCBi
eSBXZWJLaXRUZXN0UnVubmVyIGFuZCBEdW1wUmVuZGVyVHJlZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>