<?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>206480</bug_id>
          
          <creation_ts>2020-01-18 22:17:33 -0800</creation_ts>
          <short_desc>check-webkit-style: Improve header guard checks</short_desc>
          <delta_ts>2020-01-20 10:08:13 -0800</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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=206448</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=206481</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=206505</see_also>
          <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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Kilzer (:ddkilzer)">ddkilzer</reporter>
          <assigned_to name="David Kilzer (:ddkilzer)">ddkilzer</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jbedard</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>sam</cc>
    
    <cc>slewis</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1608520</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-01-18 22:17:33 -0800</bug_when>
    <thetext>Improve header guard checks in check-webkit-style.

Bug 206448 demonstrated that the header guard checks in check-webkit-style would not warn about new header files that were missing &quot;#pragma once&quot; statements because it assumed that any header file that didn&apos;t already have an #ifndef/#define/#endif check _might_ be an Objective-C header that didn&apos;t need a header guard.

We can do better than this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608524</commentid>
    <comment_count>1</comment_count>
      <attachid>388171</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-01-18 22:44:49 -0800</bug_when>
    <thetext>Created attachment 388171
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608528</commentid>
    <comment_count>2</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-01-18 23:03:26 -0800</bug_when>
    <thetext>Here&apos;s how to find header files with missing guards:

$ ./Tools/Scripts/check-webkit-style --filter=-,+build/header_guard_missing [path]

To find &quot;legacy header guards&quot; that could be updated to &quot;#pragma once&quot;, use:

$ ./Tools/Scripts/check-webkit-style --filter=-,+build/header_guard [path]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608529</commentid>
    <comment_count>3</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-01-18 23:05:38 -0800</bug_when>
    <thetext>Hmm...apparently this patch is not python3-compliant:

[866/1893] webkitpy.style.checkers.cpp_unittest.CppStyleTest.test_build_header_guard erred:
  Traceback (most recent call last):
    File &quot;/Volumes/Data/worker/WebKitPy-Tests-EWS/build/Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py&quot;, line 2684, in test_build_header_guard
      self.assert_header_guard(&apos;#pragma once&apos;, &apos;&apos;)
    File &quot;/Volumes/Data/worker/WebKitPy-Tests-EWS/build/Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py&quot;, line 348, in assert_header_guard
      self.perform_header_guard_check(code, filename))
    File &quot;/Volumes/Data/worker/WebKitPy-Tests-EWS/build/Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py&quot;, line 314, in perform_header_guard_check
      return self.perform_lint(code, filename, basic_error_rules)
    File &quot;/Volumes/Data/worker/WebKitPy-Tests-EWS/build/Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py&quot;, line 260, in perform_lint
      self.process_file_data(filename, extension, lines, error_collector, unit_test_config)
    File &quot;/Volumes/Data/worker/WebKitPy-Tests-EWS/build/Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py&quot;, line 254, in process_file_data
      checker.check(lines)
    File &quot;/Volumes/Data/worker/WebKitPy-Tests-EWS/build/Tools/Scripts/webkitpy/style/checkers/cpp.py&quot;, line 4279, in check
      self.handle_style_error, self.min_confidence)
    File &quot;/Volumes/Data/worker/WebKitPy-Tests-EWS/build/Tools/Scripts/webkitpy/style/checkers/cpp.py&quot;, line 4111, in _process_lines
      check_for_header_guard(filename, lines, error)
    File &quot;/Volumes/Data/worker/WebKitPy-Tests-EWS/build/Tools/Scripts/webkitpy/style/checkers/cpp.py&quot;, line 963, in check_for_header_guard
      if reduce(lambda x, y: x or y, map(lambda x: x in line, [&apos;@class&apos;, &apos;@interface&apos;, &apos;@prototype&apos;])):
  NameError: name &apos;reduce&apos; is not defined</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608536</commentid>
    <comment_count>4</comment_count>
      <attachid>388173</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-01-18 23:15:57 -0800</bug_when>
    <thetext>Created attachment 388173
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608545</commentid>
    <comment_count>5</comment_count>
      <attachid>388178</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-01-19 04:44:45 -0800</bug_when>
    <thetext>Created attachment 388178
Patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608575</commentid>
    <comment_count>6</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-01-19 08:11:44 -0800</bug_when>
    <thetext>See Bug 206481 for output from this script for bmalloc, WTF, JavaScriptCore.

Below are WebCore, WebKitLegacy and WebKit (so you may evaluate possible false positive rate when reviewing):

$ ./Tools/Scripts/check-webkit-style --filter=-,+build/header_guard_missing Source/WebCore
ERROR: Source/WebCore/bridge/npruntime_internal.h:28:  Missing #pragma once for header guard.  [build/header_guard_missing] [5]
ERROR: Source/WebCore/platform/network/HTTPStatusCodes.h:4:  Missing #pragma once for header guard.  [build/header_guard_missing] [5]
ERROR: Source/WebCore/platform/network/mac/WebCoreURLResponse.h:29:  Missing #pragma once for header guard.  [build/header_guard_missing] [5]
ERROR: Source/WebCore/platform/ios/wak/WebCoreThreadSystemInterface.h:26:  Missing #pragma once for header guard.  [build/header_guard_missing] [5]
ERROR: Source/WebCore/platform/mac/WebNSAttributedStringExtras.h:26:  Missing #pragma once for header guard.  [build/header_guard_missing] [5]
ERROR: Source/WebCore/platform/cocoa/SystemVersion.h:25:  Missing #pragma once for header guard.  [build/header_guard_missing] [5]
ERROR: Source/WebCore/platform/mediastream/libwebrtc/VideoToolBoxDecoderFactory.h:2:  Missing #pragma once for header guard.  [build/header_guard_missing] [5]
ERROR: Source/WebCore/platform/mediastream/libwebrtc/VideoToolBoxEncoderFactory.h:2:  Missing #pragma once for header guard.  [build/header_guard_missing] [5]
ERROR: Source/WebCore/platform/graphics/FormatConverter.h:28:  Missing #pragma once for header guard.  [build/header_guard_missing] [5]
ERROR: Source/WebCore/platform/graphics/ImageBufferData.h:26:  Missing #pragma once for header guard.  [build/header_guard_missing] [5]
ERROR: Source/WebCore/platform/graphics/avfoundation/cf/AVFoundationCFSoftLinking.h:26:  Missing #pragma once for header guard.  [build/header_guard_missing] [5]
ERROR: Source/WebCore/editing/cocoa/AutofillElements.h:26:  Missing #pragma once for header guard.  [build/header_guard_missing] [5]
ERROR: Source/WebCore/PAL/pal/ios/QuickLookSoftLink.h:25:  Missing #pragma once for header guard.  [build/header_guard_missing] [5]
ERROR: Source/WebCore/PAL/pal/spi/ios/SQLite3SPI.h:26:  Missing #pragma once for header guard.  [build/header_guard_missing] [5]
ERROR: Source/WebCore/bindings/js/StructuredClone.h:27:  Missing #pragma once for header guard.  [build/header_guard_missing] [5]
Total errors found: 15 in 9934 files

$ ./Tools/Scripts/check-webkit-style --filter=-,+build/header_guard_missing Source/WebKitLegacy
ERROR: Source/WebKitLegacy/WebCoreSupport/WebViewGroup.h:26:  Missing #pragma once for header guard.  [build/header_guard_missing] [5]
ERROR: Source/WebKitLegacy/win/WebKitStatisticsPrivate.h:29:  Missing #pragma once for header guard.  [build/header_guard_missing] [5]
ERROR: Source/WebKitLegacy/win/resource.h:33:  Missing #pragma once for header guard.  [build/header_guard_missing] [5]
ERROR: Source/WebKitLegacy/win/WebDocumentLoader.h:26:  Missing #pragma once for header guard.  [build/header_guard_missing] [5]
ERROR: Source/WebKitLegacy/win/WebPreferenceKeysPrivate.h:29:  Missing #pragma once for header guard.  [build/header_guard_missing] [5]
ERROR: Source/WebKitLegacy/win/WebCoreSupport/WebContextMenuClient.h:26:  Missing #pragma once for header guard.  [build/header_guard_missing] [5]
ERROR: Source/WebKitLegacy/win/WebCoreSupport/WebDesktopNotificationsDelegate.h:31:  Missing #pragma once for header guard.  [build/header_guard_missing] [5]
ERROR: Source/WebKitLegacy/win/WebCoreSupport/WebChromeClient.h:27:  Missing #pragma once for header guard.  [build/header_guard_missing] [5]
ERROR: Source/WebKitLegacy/win/WebCoreSupport/WebDragClient.h:29:  Missing #pragma once for header guard.  [build/header_guard_missing] [5]
ERROR: Source/WebKitLegacy/mac/Misc/WebKitStatisticsPrivate.h:29:  Missing #pragma once for header guard.  [build/header_guard_missing] [5]
ERROR: Source/WebKitLegacy/mac/Misc/WebTypesInternal.h:29:  Missing #pragma once for header guard.  [build/header_guard_missing] [5]
ERROR: Source/WebKitLegacy/mac/Misc/WebLocalizableStrings.h:29:  Missing #pragma once for header guard.  [build/header_guard_missing] [5]
ERROR: Source/WebKitLegacy/mac/DOM/WebAutocapitalizeTypes.h:26:  Missing #pragma once for header guard.  [build/header_guard_missing] [5]
ERROR: Source/WebKitLegacy/mac/WebView/WebPreferenceKeysPrivate.h:29:  Missing #pragma once for header guard.  [build/header_guard_missing] [5]
ERROR: Source/WebKitLegacy/mac/WebView/WebMediaPlaybackTargetPicker.h:26:  Missing #pragma once for header guard.  [build/header_guard_missing] [5]
Total errors found: 15 in 1178 files

$ ./Tools/Scripts/check-webkit-style --filter=-,+build/header_guard_missing Source/WebKit 2&gt;&amp;1 | grep -v Skipping
ERROR: Source/WebKit/UIProcess/API/C/WKPageRenderingProgressEventsInternal.h:26:  Missing #pragma once for header guard.  [build/header_guard_missing] [5]
ERROR: Source/WebKit/UIProcess/API/Cocoa/WKPreferencesPrivate.h:2:  Missing #pragma once for header guard.  [build/header_guard_missing] [5]
ERROR: Source/WebKit/UIProcess/API/Cocoa/WKWebArchive.h:26:  Missing #pragma once for header guard.  [build/header_guard_missing] [5]
ERROR: Source/WebKit/UIProcess/API/Cocoa/WKNavigationData.h:26:  Missing #pragma once for header guard.  [build/header_guard_missing] [5]
ERROR: Source/WebKit/Platform/IPC/Attachment.h:27:  Missing #pragma once for header guard.  [build/header_guard_missing] [5]
ERROR: Source/WebKit/Platform/ios/AccessibilityIOS.h:26:  Missing #pragma once for header guard.  [build/header_guard_missing] [5]
ERROR: Source/WebKit/Shared/ShareSheetCallbackID.h:26:  Missing #pragma once for header guard.  [build/header_guard_missing] [5]
ERROR: Source/WebKit/Shared/mac/SecItemShim.h:26:  Missing #pragma once for header guard.  [build/header_guard_missing] [5]
ERROR: Source/WebKit/NetworkProcess/glib/WebKitCachedResolver.h:26:  Missing #pragma once for header guard.  [build/header_guard_missing] [5]
Total errors found: 9 in 3779 files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608623</commentid>
    <comment_count>7</comment_count>
      <attachid>388178</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-01-19 22:08:36 -0800</bug_when>
    <thetext>Comment on attachment 388178
Patch v3

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

&gt; Tools/Scripts/webkitpy/style/checkers/cpp.py:965
&gt; +        if functools.reduce(lambda x, y: x or y, map(lambda x: x in line, [&apos;@class&apos;, &apos;@interface&apos;, &apos;@protocol&apos;])):
&gt; +            has_objc_keywords = True

A header with an Objective-C keyword is not necessarily an Objective-C-only header. There could be an #ifdef __OBJC__ guarding the Objective-C part.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608701</commentid>
    <comment_count>8</comment_count>
      <attachid>388178</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-01-20 03:43:38 -0800</bug_when>
    <thetext>Comment on attachment 388178
Patch v3

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

&gt;&gt; Tools/Scripts/webkitpy/style/checkers/cpp.py:965
&gt;&gt; +            has_objc_keywords = True
&gt; 
&gt; A header with an Objective-C keyword is not necessarily an Objective-C-only header. There could be an #ifdef __OBJC__ guarding the Objective-C part.

Yep, see the `has_objc_check` check three lines above, and the logic for returning early two lines below.

I felt Comment #6 was a pretty good indication of a low false-positive rate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608702</commentid>
    <comment_count>9</comment_count>
      <attachid>388178</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-01-20 03:51:23 -0800</bug_when>
    <thetext>Comment on attachment 388178
Patch v3

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

&gt;&gt;&gt; Tools/Scripts/webkitpy/style/checkers/cpp.py:965
&gt;&gt;&gt; +            has_objc_keywords = True
&gt;&gt; 
&gt;&gt; A header with an Objective-C keyword is not necessarily an Objective-C-only header. There could be an #ifdef __OBJC__ guarding the Objective-C part.
&gt; 
&gt; Yep, see the `has_objc_check` check three lines above, and the logic for returning early two lines below.
&gt; 
&gt; I felt Comment #6 was a pretty good indication of a low false-positive rate.

For example, looking at Source/WebCore/platform/cocoa/SystemVersion.h (which was flagged as missing a &quot;#pragma once&quot; statement in Comment #6) without looking at where it&apos;s included, you might guess that it&apos;s an Objective-C++ header, but maybe it&apos;s relying on an `OBJC_CLASS NSString;` definition from another header in UnifiedSources.

Since it&apos;s currently ambiguous, I&apos;d probably add an &quot;@class NSString;&quot; statement to the header to make it obvious that it&apos;s only used by Objective-C[++] sources.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608706</commentid>
    <comment_count>10</comment_count>
      <attachid>388178</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-01-20 04:00:30 -0800</bug_when>
    <thetext>Comment on attachment 388178
Patch v3

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

&gt;&gt;&gt;&gt; Tools/Scripts/webkitpy/style/checkers/cpp.py:965
&gt;&gt;&gt;&gt; +            has_objc_keywords = True
&gt;&gt;&gt; 
&gt;&gt;&gt; A header with an Objective-C keyword is not necessarily an Objective-C-only header. There could be an #ifdef __OBJC__ guarding the Objective-C part.
&gt;&gt; 
&gt;&gt; Yep, see the `has_objc_check` check three lines above, and the logic for returning early two lines below.
&gt;&gt; 
&gt;&gt; I felt Comment #6 was a pretty good indication of a low false-positive rate.
&gt; 
&gt; For example, looking at Source/WebCore/platform/cocoa/SystemVersion.h (which was flagged as missing a &quot;#pragma once&quot; statement in Comment #6) without looking at where it&apos;s included, you might guess that it&apos;s an Objective-C++ header, but maybe it&apos;s relying on an `OBJC_CLASS NSString;` definition from another header in UnifiedSources.
&gt; 
&gt; Since it&apos;s currently ambiguous, I&apos;d probably add an &quot;@class NSString;&quot; statement to the header to make it obvious that it&apos;s only used by Objective-C[++] sources.

Here&apos;s an example of a true positive from Comment #6 with an __OBJC__ check where the &quot;#pragma once&quot; statement is missing:

Source/WebCore/platform/network/mac/WebCoreURLResponse.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608734</commentid>
    <comment_count>11</comment_count>
      <attachid>388178</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-01-20 06:42:18 -0800</bug_when>
    <thetext>Comment on attachment 388178
Patch v3

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

&gt;&gt;&gt;&gt;&gt; Tools/Scripts/webkitpy/style/checkers/cpp.py:965
&gt;&gt;&gt;&gt;&gt; +            has_objc_keywords = True
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; A header with an Objective-C keyword is not necessarily an Objective-C-only header. There could be an #ifdef __OBJC__ guarding the Objective-C part.
&gt;&gt;&gt; 
&gt;&gt;&gt; Yep, see the `has_objc_check` check three lines above, and the logic for returning early two lines below.
&gt;&gt;&gt; 
&gt;&gt;&gt; I felt Comment #6 was a pretty good indication of a low false-positive rate.
&gt;&gt; 
&gt;&gt; For example, looking at Source/WebCore/platform/cocoa/SystemVersion.h (which was flagged as missing a &quot;#pragma once&quot; statement in Comment #6) without looking at where it&apos;s included, you might guess that it&apos;s an Objective-C++ header, but maybe it&apos;s relying on an `OBJC_CLASS NSString;` definition from another header in UnifiedSources.
&gt;&gt; 
&gt;&gt; Since it&apos;s currently ambiguous, I&apos;d probably add an &quot;@class NSString;&quot; statement to the header to make it obvious that it&apos;s only used by Objective-C[++] sources.
&gt; 
&gt; Here&apos;s an example of a true positive from Comment #6 with an __OBJC__ check where the &quot;#pragma once&quot; statement is missing:
&gt; 
&gt; Source/WebCore/platform/network/mac/WebCoreURLResponse.h

I see. Had missed the other checks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608790</commentid>
    <comment_count>12</comment_count>
      <attachid>388178</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-20 10:07:39 -0800</bug_when>
    <thetext>Comment on attachment 388178
Patch v3

Clearing flags on attachment: 388178

Committed r254831: &lt;https://trac.webkit.org/changeset/254831&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608791</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-20 10:07:41 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608793</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-20 10:08:13 -0800</bug_when>
    <thetext>&lt;rdar://problem/58740920&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388171</attachid>
            <date>2020-01-18 22:44:49 -0800</date>
            <delta_ts>2020-01-18 23:15:55 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-206480-20200118224449.patch</filename>
            <type>text/plain</type>
            <size>11287</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0ODAyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2MxYzdmNjkwN2UyZjgzYTE2OTM3ZDdiZmQ4YTAxYThl
ZjQyN2VjMy4uOWEzMWM2YzA5ZWYxOTRmZWUxMzg4NDY4Y2QxZmU5M2E4NjFhOGQ4NSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5
IEBACisyMDIwLTAxLTE4ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAg
ICAgICAgY2hlY2std2Via2l0LXN0eWxlOiBJbXByb3ZlIGhlYWRlciBndWFyZCBjaGVja3MKKyAg
ICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIwNjQ4MD4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hl
Y2tlcnMvY3BwLnB5OgorICAgICAgICAoY2hlY2tfZm9yX2hlYWRlcl9ndWFyZCk6CisgICAgICAg
IC0gQWRkIGBmaWxlX3BhdGhgIChmaWxlbmFtZSkgYXJndW1lbnQgdG8gY2hlY2sgZm9yIGNvbmZp
Zy5oIGFuZAorICAgICAgICAgICpQcmVmaXguaCBoZWFkZXJzLgorICAgICAgICAtIFVzZSBoaW50
cyBpbiBoZWFkZXIgZmlsZSB0byBkZXRlcm1pbmUgaWYgdGhpcyBpcyBhIGhlYWRlciBmaWxlCisg
ICAgICAgICAgb25seSB1c2VkIGJ5IE9iamVjdGl2ZS1DIG9yIG5vdC4KKyAgICAgICAgLSBDaGFu
Z2UgI2lmbmRlZi8jZGVmaW5lIGNoZWNrIHRvIHVzZSBib3RoIGxpbmVzIGluc3RlYWQgb2YKKyAg
ICAgICAgICBhc3N1bWluZyBhIGZvcm1hdCBmb3IgdGhlIG1hY3JvLgorICAgICAgICAtIEVtaXQg
bmV3ICdidWlsZC9oZWFkZXJfZ3VhcmRfbWlzc2luZycgZXJyb3IuCisgICAgICAgIChfcHJvY2Vz
c19saW5lcyk6CisgICAgICAgIC0gUGFzcyBgZmlsZW5hbWVgIGFyZ3VtZW50IHRvIGNoZWNrX2Zv
cl9oZWFkZXJfZ3VhcmQoKS4KKyAgICAgICAgKENwcENoZWNrZXIpOgorICAgICAgICAtIEVuYWJs
ZSBuZXcgJ2J1aWxkL2hlYWRlcl9ndWFyZF9taXNzaW5nJyBjaGVjay4KKworICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5OgorICAgICAgICAo
Q3BwU3R5bGVUZXN0QmFzZS5wZXJmb3JtX2hlYWRlcl9ndWFyZF9jaGVjayk6CisgICAgICAgIChD
cHBTdHlsZVRlc3RCYXNlLmFzc2VydF9oZWFkZXJfZ3VhcmQpOgorICAgICAgICAtIE1vdmUgZGVm
YXVsdCBgZmlsZW5hbWVgIGFyZ3VtZW50IGZyb20KKyAgICAgICAgICBwZXJmb3JtX2hlYWRlcl9n
dWFyZF9jaGVjaygpIHRvIGFzc2VydF9oZWFkZXJfZ3VhcmQoKSBzbyB0ZXN0cworICAgICAgICAg
IG1heSBwYXNzIGluIGRpZmZlcmVudCB2YWx1ZXMgZm9yIGhlYWRlciBwYXRocy4KKyAgICAgICAg
KENwcFN0eWxlVGVzdCk6CisgICAgICAgIC0gQWRkIHRlc3RzIGZvciBjb25maWcuaCwgKlByZWZp
eC5oIGhlYWRlcnMuCisgICAgICAgIC0gVXBkYXRlIHRlc3QgZm9yIGBidWlsZC9oZWFkZXJfZ3Vh
cmQnIChsZWdhY3kgaGVhZGVyIGd1YXJkKQorICAgICAgICAgIGVycm9yLgorICAgICAgICAtIFVw
ZGF0ZSB0ZXN0IGZvciBtaXNzaW5nIGhlYWRlciBndWFyZCBzbyB0aGF0IGl0IG5vdyBleHBlY3Rz
IGEKKyAgICAgICAgICAnYnVpbGQvaGVhZGVyX2d1YXJkX21pc3NpbmcnIGVycm9yIG1lc3NhZ2Uu
CisgICAgICAgIC0gQWRkIHRlc3RzIGZvciBPYmplY3RpdmUtQyBoZWFkZXJzIHdpdGggYW5kIHdp
dGhvdXQgX19PQkpDX18KKyAgICAgICAgICBjaGVja3MuCisKIDIwMjAtMDEtMTcgIENhdGhpZSBD
aGVuICA8Y2F0aGllY2hlbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBz
Y3JvbGwgYmVoYXZpb3IgcGFyc2luZwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9jaGVja2Vycy9jcHAucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2No
ZWNrZXJzL2NwcC5weQppbmRleCAxODMwMzdhYjVkYjU0N2U3MDkxMjg1NjgxMTJiODY4N2UwN2Uy
NmIzLi40YTc3N2YyOWZjN2MxNDY2NDg0YTM4YTA3NTg3MDJjZTZmMDA2OGUyIDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weQpAQCAtMiw3ICsyLDcgQEAK
ICMKICMgQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLgotIyBD
b3B5cmlnaHQgKEMpIDIwMDktMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
IENvcHlyaWdodCAoQykgMjAwOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICMgQ29weXJpZ2h0IChDKSAyMDEwIENocmlzIEplcmRvbmVrIChjamVyZG9uZWtAd2Via2l0Lm9y
ZykKICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CkBAIC05MzAsMzAgKzkzMCw1OSBAQCBkZWYgY2hlY2tfZm9yX2Nv
cHlyaWdodChsaW5lcywgZXJyb3IpOgogICAgICAgICAgICAgICAnWW91IHNob3VsZCBoYXZlIGEg
bGluZTogIkNvcHlyaWdodCBbeWVhcl0gPENvcHlyaWdodCBPd25lcj4iJykKIAogCi1kZWYgY2hl
Y2tfZm9yX2hlYWRlcl9ndWFyZChsaW5lcywgZXJyb3IpOgorZGVmIGNoZWNrX2Zvcl9oZWFkZXJf
Z3VhcmQoZmlsZV9wYXRoLCBsaW5lcywgZXJyb3IpOgogICAgICIiIkNoZWNrcyB0aGF0IHRoZSBm
aWxlIGNvbnRhaW5zIGEgaGVhZGVyIGd1YXJkLgogCiAgICAgTG9ncyBhbiBlcnJvciBpZiB0aGVy
ZSB3YXMgYW4gI2lmbmRlZiBndWFyZCBpbiBhIGhlYWRlcgotICAgIHRoYXQgc2hvdWxkIGJlIGEg
I3ByYWdtYSBvbmNlIGd1YXJkLgorICAgIHRoYXQgc2hvdWxkIGJlIGEgI3ByYWdtYSBvbmNlIGd1
YXJkLCBvciBpZiB0aGVyZSBpcyBhIG1pc3NpbmcKKyAgICAjcHJhZ21hIG9uY2UgZ3VhcmQuCiAK
ICAgICBBcmdzOgorICAgICAgZmlsZV9wYXRoOiBQYXRoIHRvIHRoZSBoZWFkZXIgZmlsZSB0aGF0
IGlzIGJlaW5nIHByb2Nlc3NlZC4KICAgICAgIGxpbmVzOiBBbiBhcnJheSBvZiBzdHJpbmdzLCBl
YWNoIHJlcHJlc2VudGluZyBhIGxpbmUgb2YgdGhlIGZpbGUuCiAgICAgICBlcnJvcjogVGhlIGZ1
bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZvdW5kLgogICAgICIiIgogCisgICAgZmls
ZW5hbWUgPSBvcy5wYXRoLnNwbGl0KGZpbGVfcGF0aClbLTFdCisgICAgaWYgZmlsZW5hbWUgPT0g
J2NvbmZpZy5oJyBvciBmaWxlbmFtZS5lbmRzd2l0aCgnUHJlZml4LmgnKToKKyAgICAgICAgcmV0
dXJuCisKKyAgICBmaXJzdF9ibGFua19saW5lX251bWJlciA9IDAKKyAgICBoYXNfaW1wb3J0X3N0
YXRlbWVudCA9IEZhbHNlCisgICAgaGFzX29iamNfY2hlY2sgPSBGYWxzZQorICAgIGhhc19vYmpj
X2tleXdvcmRzID0gRmFsc2UKICAgICBmb3IgbGluZV9udW1iZXIsIGxpbmUgaW4gZW51bWVyYXRl
KGxpbmVzKToKKyAgICAgICAgaWYgbGluZSA9PSAnJyBhbmQgZmlyc3RfYmxhbmtfbGluZV9udW1i
ZXIgPT0gMDoKKyAgICAgICAgICAgIGZpcnN0X2JsYW5rX2xpbmVfbnVtYmVyID0gbGluZV9udW1i
ZXIKICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCcjcHJhZ21hIG9uY2UnKToKICAgICAgICAg
ICAgIHJldHVybgorICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJyNpbXBvcnQgJyk6CisgICAg
ICAgICAgICBoYXNfaW1wb3J0X3N0YXRlbWVudCA9IFRydWUKKyAgICAgICAgaWYgJ19fT0JKQ19f
JyBpbiBsaW5lOgorICAgICAgICAgICAgaGFzX29iamNfY2hlY2sgPSBUcnVlCisgICAgICAgIGlm
IHJlZHVjZShsYW1iZGEgeCwgeTogeCBvciB5LCBtYXAobGFtYmRhIHg6IHggaW4gbGluZSwgWydA
Y2xhc3MnLCAnQGludGVyZmFjZScsICdAcHJvdG90eXBlJ10pKToKKyAgICAgICAgICAgIGhhc19v
YmpjX2tleXdvcmRzID0gVHJ1ZQorCisgICAgaWYgKGhhc19pbXBvcnRfc3RhdGVtZW50IG9yIGhh
c19vYmpjX2tleXdvcmRzKSBhbmQgbm90IGhhc19vYmpjX2NoZWNrOgorICAgICAgICByZXR1cm4g
ICMgT2JqZWN0aXZlLUMtb25seSBoZWFkZXJzIGRvbid0IG5lZWQgZ3VhcmRzLgogCiAgICAgIyBJ
ZiB0aGVyZSBpcyBubyAjcHJhZ21hIG9uY2UsIGJ1dCB0aGVyZSBpcyBhbiAjaWZuZGVmLCB3YXJu
IG9ubHkgaWYgaXQgd2FzIG1vZGlmaWVkLgogICAgIGlmbmRlZl9saW5lX251bWJlciA9IDAKKyAg
ICBwcmV2aW91c19saW5lID0gTm9uZQogICAgIGZvciBsaW5lX251bWJlciwgbGluZSBpbiBlbnVt
ZXJhdGUobGluZXMpOgotICAgICAgICBsaW5lX3NwbGl0ID0gbGluZS5zcGxpdCgpCi0gICAgICAg
IGlmIGxlbihsaW5lX3NwbGl0KSA+PSAyOgotICAgICAgICAgICAgaWYgbGluZV9zcGxpdFswXSA9
PSAnI2lmbmRlZicgYW5kIGxpbmVfc3BsaXRbMV0uZW5kc3dpdGgoJ19oJyk6Ci0gICAgICAgICAg
ICAgICAgZXJyb3IobGluZV9udW1iZXIsICdidWlsZC9oZWFkZXJfZ3VhcmQnLCA1LAotICAgICAg
ICAgICAgICAgICAgICAnVXNlICNwcmFnbWEgb25jZSBpbnN0ZWFkIG9mICNpZm5kZWYgZm9yIGhl
YWRlciBndWFyZC4nKQotICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBwcmV2aW91
c19saW5lIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcHJldmlvdXNfbGluZV9zcGxpdCA9IHBy
ZXZpb3VzX2xpbmUuc3BsaXQoKQorICAgICAgICAgICAgbGluZV9zcGxpdCA9IGxpbmUuc3BsaXQo
KQorICAgICAgICAgICAgaWYgbGVuKHByZXZpb3VzX2xpbmVfc3BsaXQpID49IDIgYW5kIGxlbihs
aW5lX3NwbGl0KSA+PSAyOgorICAgICAgICAgICAgICAgIGlmIHByZXZpb3VzX2xpbmVfc3BsaXRb
MF0gPT0gJyNpZm5kZWYnIGFuZCBsaW5lX3NwbGl0WzBdID09ICcjZGVmaW5lJyBcCisgICAgICAg
ICAgICAgICAgICAgICAgICBhbmQgcHJldmlvdXNfbGluZV9zcGxpdFsxXSA9PSBsaW5lX3NwbGl0
WzFdOgorICAgICAgICAgICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ2J1aWxkL2hlYWRl
cl9ndWFyZCcsIDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdVc2UgI3ByYWdtYSBvbmNl
IGluc3RlYWQgb2YgI2lmbmRlZiBmb3IgaGVhZGVyIGd1YXJkLicpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybgorICAgICAgICBwcmV2aW91c19saW5lID0gbGluZQorCisgICAgZXJyb3IoZmly
c3RfYmxhbmtfbGluZV9udW1iZXIgKyAxLCAnYnVpbGQvaGVhZGVyX2d1YXJkX21pc3NpbmcnLCA1
LAorICAgICAgICAgICdNaXNzaW5nICNwcmFnbWEgb25jZSBmb3IgaGVhZGVyIGd1YXJkLicpCiAK
IAogZGVmIGNoZWNrX2Zvcl91bmljb2RlX3JlcGxhY2VtZW50X2NoYXJhY3RlcnMobGluZXMsIGVy
cm9yKToKQEAgLTQwNzksNyArNDEwOCw3IEBAIGRlZiBfcHJvY2Vzc19saW5lcyhmaWxlbmFtZSwg
ZmlsZV9leHRlbnNpb24sIGxpbmVzLCBlcnJvciwgbWluX2NvbmZpZGVuY2UpOgogICAgIGNoZWNr
X2Zvcl9jb3B5cmlnaHQobGluZXMsIGVycm9yKQogCiAgICAgaWYgZmlsZV9leHRlbnNpb24gPT0g
J2gnOgotICAgICAgICBjaGVja19mb3JfaGVhZGVyX2d1YXJkKGxpbmVzLCBlcnJvcikKKyAgICAg
ICAgY2hlY2tfZm9yX2hlYWRlcl9ndWFyZChmaWxlbmFtZSwgbGluZXMsIGVycm9yKQogICAgICAg
ICBpZiBmaWxlbmFtZSA9PSAnU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCc6CiAgICAgICAgICAg
ICBjaGVja19wbGF0Zm9ybWhfY29tbWVudHMobGluZXMsIGVycm9yKQogCkBAIC00MTIwLDYgKzQx
NDksNyBAQCBjbGFzcyBDcHBDaGVja2VyKG9iamVjdCk6CiAgICAgICAgICdidWlsZC9lbmRpZl9j
b21tZW50JywKICAgICAgICAgJ2J1aWxkL2ZvcndhcmRfZGVjbCcsCiAgICAgICAgICdidWlsZC9o
ZWFkZXJfZ3VhcmQnLAorICAgICAgICAnYnVpbGQvaGVhZGVyX2d1YXJkX21pc3NpbmcnLAogICAg
ICAgICAnYnVpbGQvaW5jbHVkZScsCiAgICAgICAgICdidWlsZC9pbmNsdWRlX29yZGVyJywKICAg
ICAgICAgJ2J1aWxkL2luY2x1ZGVfd2hhdF95b3VfdXNlJywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHkKaW5kZXggODM2ODUy
NWI1ZjY0YzZhNjgyNmFjZTg0NDVjMWI4MGYzMDM3MDIxNS4uNmNmM2FjNzZhNzk4ODRlZjg2NzQ5
OTAwYzZlN2YwNTJhODhjYTM1OSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9z
dHlsZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHkKQEAgLTIsNyArMiw3IEBACiAjCiAjIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIyBDb3B5
cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4KLSMgQ29weXJpZ2h0IChDKSAyMDA5LTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMDkt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoQykgMjAx
MCBDaHJpcyBKZXJkb25layAoY2plcmRvbmVrQHdlYmtpdC5vcmcpCiAjCiAjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApA
QCAtMzA5LDcgKzMwOSw3IEBAIGNsYXNzIENwcFN0eWxlVGVzdEJhc2UodW5pdHRlc3QuVGVzdENh
c2UpOgogICAgICAgICByZXR1cm4gc2VsZi5wZXJmb3JtX2xpbnQoY29kZSwgZmlsZW5hbWUsIGJh
c2ljX2Vycm9yX3J1bGVzLCB1bml0X3Rlc3RfY29uZmlnKQogCiAgICAgIyBPbmx5IGluY2x1ZGUg
aGVhZGVyIGd1YXJkIGVycm9ycy4KLSAgICBkZWYgcGVyZm9ybV9oZWFkZXJfZ3VhcmRfY2hlY2so
c2VsZiwgY29kZSwgZmlsZW5hbWU9J2Zvby5oJyk6CisgICAgZGVmIHBlcmZvcm1faGVhZGVyX2d1
YXJkX2NoZWNrKHNlbGYsIGNvZGUsIGZpbGVuYW1lKToKICAgICAgICAgYmFzaWNfZXJyb3JfcnVs
ZXMgPSAoJy0nLCAnK2J1aWxkL2hlYWRlcl9ndWFyZCcpCiAgICAgICAgIHJldHVybiBzZWxmLnBl
cmZvcm1fbGludChjb2RlLCBmaWxlbmFtZSwgYmFzaWNfZXJyb3JfcnVsZXMpCiAKQEAgLTM0Myw5
ICszNDMsOSBAQCBjbGFzcyBDcHBTdHlsZVRlc3RCYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9tZXNzYWdlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZWxmLnBlcmZvcm1faW5jbHVkZV93aGF0X3lvdV91c2UoY29kZSkpCiAKLSAg
ICBkZWYgYXNzZXJ0X2hlYWRlcl9ndWFyZChzZWxmLCBjb2RlLCBleHBlY3RlZF9tZXNzYWdlKToK
KyAgICBkZWYgYXNzZXJ0X2hlYWRlcl9ndWFyZChzZWxmLCBjb2RlLCBleHBlY3RlZF9tZXNzYWdl
LCBmaWxlbmFtZT0nZm9vLmgnKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9t
ZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBlcmZvcm1faGVhZGVyX2d1
YXJkX2NoZWNrKGNvZGUpKQorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucGVyZm9ybV9o
ZWFkZXJfZ3VhcmRfY2hlY2soY29kZSwgZmlsZW5hbWUpKQogCiAgICAgZGVmIGFzc2VydF9ibGFu
a19saW5lc19jaGVjayhzZWxmLCBsaW5lcywgc3RhcnRfZXJyb3JzLCBlbmRfZXJyb3JzKToKICAg
ICAgICAgZXJyb3JfY29sbGVjdG9yID0gRXJyb3JDb2xsZWN0b3Ioc2VsZi5hc3NlcnRUcnVlKQpA
QCAtMjY3NiwxNiArMjY3Niw4MiBAQCBjbGFzcyBDcHBTdHlsZVRlc3QoQ3BwU3R5bGVUZXN0QmFz
ZSk6CiAgICAgZGVmIHRlc3RfYnVpbGRfaGVhZGVyX2d1YXJkKHNlbGYpOgogICAgICAgICBydWxl
cyA9ICgnLScsICcrYnVpbGQvaGVhZGVyX2d1YXJkJykKIAotICAgICAgICAjIE9sZCBoZWFkZXIg
Z3VhcmQuCi0gICAgICAgIHNlbGYuYXNzZXJ0X2hlYWRlcl9ndWFyZCgnI2lmbmRlZiBGb29faCcs
CisgICAgICAgICMgTm8gd2FybmluZyBmb3IgY29uZmlnLmggYW5kICpQcmVmaXguaCBoZWFkZXJz
LgorICAgICAgICBzZWxmLmFzc2VydF9oZWFkZXJfZ3VhcmQoJycsICcnLCAnY29uZmlnLmgnKQor
ICAgICAgICBzZWxmLmFzc2VydF9oZWFkZXJfZ3VhcmQoJycsICcnLCAnRm9vUHJlZml4LmgnKQor
CisgICAgICAgICMgTm8gd2FybmluZyBmb3IgdmFsaWQgaGVhZGVyIGd1YXJkLgorICAgICAgICBz
ZWxmLmFzc2VydF9oZWFkZXJfZ3VhcmQoJyNwcmFnbWEgb25jZScsICcnKQorCisgICAgICAgICMg
V2FybmluZyBmb3Igb2xkIGhlYWRlciBndWFyZC4KKyAgICAgICAgc2VsZi5hc3NlcnRfaGVhZGVy
X2d1YXJkKAorICAgICAgICAgICAgJyNpZm5kZWYgRm9vX2hcbicKKyAgICAgICAgICAgICcjZGVm
aW5lIEZvb19oXG4nCisgICAgICAgICAgICAnI2VuZGlmIC8qIEZvb19oICovXG4nLAogICAgICAg
ICAgICAgJ1VzZSAjcHJhZ21hIG9uY2UgaW5zdGVhZCBvZiAjaWZuZGVmIGZvciBoZWFkZXIgZ3Vh
cmQuJwogICAgICAgICAgICAgJyAgW2J1aWxkL2hlYWRlcl9ndWFyZF0gWzVdJykKIAotICAgICAg
ICAjIE5vIGhlYWRlciBndWFyZC4gT2theSwgc2luY2UgdGhpcyBjb3VsZCBiZSBhbiBPYmpDIGhl
YWRlci4KLSAgICAgICAgc2VsZi5hc3NlcnRfaGVhZGVyX2d1YXJkKCcnLCAnJykKLQotICAgICAg
ICAjIFZhbGlkIGhlYWRlciBndWFyZC4KLSAgICAgICAgc2VsZi5hc3NlcnRfaGVhZGVyX2d1YXJk
KCcjcHJhZ21hIG9uY2UnLCAnJykKKyAgICAgICAgIyBXYXJuaW5nIGZvciBtaXNzaW5nIGhlYWRl
ciBndWFyZC4KKyAgICAgICAgc2VsZi5hc3NlcnRfaGVhZGVyX2d1YXJkKAorICAgICAgICAgICAg
JycsCisgICAgICAgICAgICAnTWlzc2luZyAjcHJhZ21hIG9uY2UgZm9yIGhlYWRlciBndWFyZC4n
CisgICAgICAgICAgICAnICBbYnVpbGQvaGVhZGVyX2d1YXJkX21pc3NpbmddIFs1XScpCisKKyAg
ICAgICAgIyBObyB3YXJuaW5nIGZvciBPYmotQyBoZWFkZXIgd2l0aCAjaW1wb3J0IHN0YXRlbWVu
dC4KKyAgICAgICAgc2VsZi5hc3NlcnRfaGVhZGVyX2d1YXJkKAorICAgICAgICAgICAgJyNpbXBv
cnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPicsCisgICAgICAgICAgICAnJykKKworICAgICAg
ICAjIE5vIHdhcm5pbmcgZm9yIE9iai1DIGhlYWRlciB3aXRoIEBjbGFzcyBrZXl3b3JkLgorICAg
ICAgICBzZWxmLmFzc2VydF9oZWFkZXJfZ3VhcmQoCisgICAgICAgICAgICAnQGNsYXNzIE5TU3Ry
aW5nOycsCisgICAgICAgICAgICAnJykKKworICAgICAgICAjIE5vIHdhcm5pbmcgZm9yIE9iai1D
IGhlYWRlciB3aXRoIEBpbnRlcmZhY2Uga2V5d29yZC4KKyAgICAgICAgc2VsZi5hc3NlcnRfaGVh
ZGVyX2d1YXJkKAorICAgICAgICAgICAgJ0BpbnRlcmZhY2UgTlNTdHJpbmcgKE15Q2F0ZWdvcnkp
XG4nCisgICAgICAgICAgICAnQGVuZFxuJywKKyAgICAgICAgICAgICcnKQorCisgICAgICAgICMg
Tm8gd2FybmluZyBmb3IgT2JqLUMgaGVhZGVyIHdpdGggQHByb3RvdHlwZSBrZXl3b3JkLgorICAg
ICAgICBzZWxmLmFzc2VydF9oZWFkZXJfZ3VhcmQoCisgICAgICAgICAgICAnQHByb3RvdHlwZSBN
eVByb3RvdHlwZSA6IE5TT2JqZWN0XG4nCisgICAgICAgICAgICAnQGVuZFxuJywKKyAgICAgICAg
ICAgICcnKQorCisgICAgICAgICMgV2FybmluZyBmb3IgT2JqLUMgaGVhZGVyIHdpdGggI2ltcG9y
dCBzdGF0ZW1lbnQgYW5kIF9fT0JKQ19fIGNoZWNrLgorICAgICAgICBzZWxmLmFzc2VydF9oZWFk
ZXJfZ3VhcmQoCisgICAgICAgICAgICAnI2lmZGVmIF9fT0JKQ19fXG4nCisgICAgICAgICAgICAn
I2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+XG4nCisgICAgICAgICAgICAnI2VuZGlm
IC8qIF9fT0JKQ19fICovXG4nLAorICAgICAgICAgICAgJ01pc3NpbmcgI3ByYWdtYSBvbmNlIGZv
ciBoZWFkZXIgZ3VhcmQuJworICAgICAgICAgICAgJyAgW2J1aWxkL2hlYWRlcl9ndWFyZF9taXNz
aW5nXSBbNV0nKQorCisgICAgICAgICMgV2FybmluZyBmb3IgT2JqLUMgaGVhZGVyIHdpdGggQGNs
YXNzIGtleXdvcmQgYW5kIF9fT0JKQ19fIGNoZWNrLgorICAgICAgICBzZWxmLmFzc2VydF9oZWFk
ZXJfZ3VhcmQoCisgICAgICAgICAgICAnI2lmZGVmIF9fT0JKQ19fXG4nCisgICAgICAgICAgICAn
QGNsYXNzIE5TU3RyaW5nO1xuJworICAgICAgICAgICAgJyNlbmRpZiAvKiBfX09CSkNfXyAqL1xu
JywKKyAgICAgICAgICAgICdNaXNzaW5nICNwcmFnbWEgb25jZSBmb3IgaGVhZGVyIGd1YXJkLicK
KyAgICAgICAgICAgICcgIFtidWlsZC9oZWFkZXJfZ3VhcmRfbWlzc2luZ10gWzVdJykKKworICAg
ICAgICAjIFdhcm5pbmcgZm9yIE9iai1DIGhlYWRlciB3aXRoIEBpbnRlcmZhY2Uga2V5d29yZCBh
bmQgX19PQkpDX18gY2hlY2suCisgICAgICAgIHNlbGYuYXNzZXJ0X2hlYWRlcl9ndWFyZCgKKyAg
ICAgICAgICAgICcjaWZkZWYgX19PQkpDX19cbicKKyAgICAgICAgICAgICdAaW50ZXJmYWNlIE5T
U3RyaW5nIChNeUNhdGVnb3J5KVxuJworICAgICAgICAgICAgJ0BlbmRcbicKKyAgICAgICAgICAg
ICcjZW5kaWYgLyogX19PQkpDX18gKi9cbicsCisgICAgICAgICAgICAnTWlzc2luZyAjcHJhZ21h
IG9uY2UgZm9yIGhlYWRlciBndWFyZC4nCisgICAgICAgICAgICAnICBbYnVpbGQvaGVhZGVyX2d1
YXJkX21pc3NpbmddIFs1XScpCisKKyAgICAgICAgIyBXYXJuaW5nIGZvciBPYmotQyBoZWFkZXIg
d2l0aCBAcHJvdG90eXBlIGtleXdvcmQgYW5kIF9fT0JKQ19fIGNoZWNrLgorICAgICAgICBzZWxm
LmFzc2VydF9oZWFkZXJfZ3VhcmQoCisgICAgICAgICAgICAnI2lmZGVmIF9fT0JKQ19fXG4nCisg
ICAgICAgICAgICAnQHByb3RvdHlwZSBNeVByb3RvdHlwZSA6IE5TT2JqZWN0XG4nCisgICAgICAg
ICAgICAnQGVuZFxuJworICAgICAgICAgICAgJyNlbmRpZiAvKiBfX09CSkNfXyAqL1xuJywKKyAg
ICAgICAgICAgICdNaXNzaW5nICNwcmFnbWEgb25jZSBmb3IgaGVhZGVyIGd1YXJkLicKKyAgICAg
ICAgICAgICcgIFtidWlsZC9oZWFkZXJfZ3VhcmRfbWlzc2luZ10gWzVdJykKIAogICAgIGRlZiB0
ZXN0X2J1aWxkX3ByaW50Zl9mb3JtYXQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388173</attachid>
            <date>2020-01-18 23:15:57 -0800</date>
            <delta_ts>2020-01-19 04:44:44 -0800</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-206480-20200118231556.patch</filename>
            <type>text/plain</type>
            <size>11440</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0ODAyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2MxYzdmNjkwN2UyZjgzYTE2OTM3ZDdiZmQ4YTAxYThl
ZjQyN2VjMy4uOWEzMWM2YzA5ZWYxOTRmZWUxMzg4NDY4Y2QxZmU5M2E4NjFhOGQ4NSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5
IEBACisyMDIwLTAxLTE4ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAg
ICAgICAgY2hlY2std2Via2l0LXN0eWxlOiBJbXByb3ZlIGhlYWRlciBndWFyZCBjaGVja3MKKyAg
ICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIwNjQ4MD4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hl
Y2tlcnMvY3BwLnB5OgorICAgICAgICAoY2hlY2tfZm9yX2hlYWRlcl9ndWFyZCk6CisgICAgICAg
IC0gQWRkIGBmaWxlX3BhdGhgIChmaWxlbmFtZSkgYXJndW1lbnQgdG8gY2hlY2sgZm9yIGNvbmZp
Zy5oIGFuZAorICAgICAgICAgICpQcmVmaXguaCBoZWFkZXJzLgorICAgICAgICAtIFVzZSBoaW50
cyBpbiBoZWFkZXIgZmlsZSB0byBkZXRlcm1pbmUgaWYgdGhpcyBpcyBhIGhlYWRlciBmaWxlCisg
ICAgICAgICAgb25seSB1c2VkIGJ5IE9iamVjdGl2ZS1DIG9yIG5vdC4KKyAgICAgICAgLSBDaGFu
Z2UgI2lmbmRlZi8jZGVmaW5lIGNoZWNrIHRvIHVzZSBib3RoIGxpbmVzIGluc3RlYWQgb2YKKyAg
ICAgICAgICBhc3N1bWluZyBhIGZvcm1hdCBmb3IgdGhlIG1hY3JvLgorICAgICAgICAtIEVtaXQg
bmV3ICdidWlsZC9oZWFkZXJfZ3VhcmRfbWlzc2luZycgZXJyb3IuCisgICAgICAgIChfcHJvY2Vz
c19saW5lcyk6CisgICAgICAgIC0gUGFzcyBgZmlsZW5hbWVgIGFyZ3VtZW50IHRvIGNoZWNrX2Zv
cl9oZWFkZXJfZ3VhcmQoKS4KKyAgICAgICAgKENwcENoZWNrZXIpOgorICAgICAgICAtIEVuYWJs
ZSBuZXcgJ2J1aWxkL2hlYWRlcl9ndWFyZF9taXNzaW5nJyBjaGVjay4KKworICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5OgorICAgICAgICAo
Q3BwU3R5bGVUZXN0QmFzZS5wZXJmb3JtX2hlYWRlcl9ndWFyZF9jaGVjayk6CisgICAgICAgIChD
cHBTdHlsZVRlc3RCYXNlLmFzc2VydF9oZWFkZXJfZ3VhcmQpOgorICAgICAgICAtIE1vdmUgZGVm
YXVsdCBgZmlsZW5hbWVgIGFyZ3VtZW50IGZyb20KKyAgICAgICAgICBwZXJmb3JtX2hlYWRlcl9n
dWFyZF9jaGVjaygpIHRvIGFzc2VydF9oZWFkZXJfZ3VhcmQoKSBzbyB0ZXN0cworICAgICAgICAg
IG1heSBwYXNzIGluIGRpZmZlcmVudCB2YWx1ZXMgZm9yIGhlYWRlciBwYXRocy4KKyAgICAgICAg
KENwcFN0eWxlVGVzdCk6CisgICAgICAgIC0gQWRkIHRlc3RzIGZvciBjb25maWcuaCwgKlByZWZp
eC5oIGhlYWRlcnMuCisgICAgICAgIC0gVXBkYXRlIHRlc3QgZm9yIGBidWlsZC9oZWFkZXJfZ3Vh
cmQnIChsZWdhY3kgaGVhZGVyIGd1YXJkKQorICAgICAgICAgIGVycm9yLgorICAgICAgICAtIFVw
ZGF0ZSB0ZXN0IGZvciBtaXNzaW5nIGhlYWRlciBndWFyZCBzbyB0aGF0IGl0IG5vdyBleHBlY3Rz
IGEKKyAgICAgICAgICAnYnVpbGQvaGVhZGVyX2d1YXJkX21pc3NpbmcnIGVycm9yIG1lc3NhZ2Uu
CisgICAgICAgIC0gQWRkIHRlc3RzIGZvciBPYmplY3RpdmUtQyBoZWFkZXJzIHdpdGggYW5kIHdp
dGhvdXQgX19PQkpDX18KKyAgICAgICAgICBjaGVja3MuCisKIDIwMjAtMDEtMTcgIENhdGhpZSBD
aGVuICA8Y2F0aGllY2hlbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBz
Y3JvbGwgYmVoYXZpb3IgcGFyc2luZwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9jaGVja2Vycy9jcHAucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2No
ZWNrZXJzL2NwcC5weQppbmRleCAxODMwMzdhYjVkYjU0N2U3MDkxMjg1NjgxMTJiODY4N2UwN2Uy
NmIzLi5iZjc0ZGMwNjhlNDk2M2E1ZTlhMDJjNDc3OGFlMjcxNGUwMjE0MmVmIDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weQpAQCAtMiw3ICsyLDcgQEAK
ICMKICMgQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLgotIyBD
b3B5cmlnaHQgKEMpIDIwMDktMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
IENvcHlyaWdodCAoQykgMjAwOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICMgQ29weXJpZ2h0IChDKSAyMDEwIENocmlzIEplcmRvbmVrIChjamVyZG9uZWtAd2Via2l0Lm9y
ZykKICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CkBAIC0zNyw2ICszNyw3IEBACiAiIiJTdXBwb3J0IGZvciBjaGVj
ay13ZWJraXQtc3R5bGUuIiIiCiAKIGltcG9ydCBjb2RlY3MKK2ltcG9ydCBmdW5jdG9vbHMKIGlt
cG9ydCBtYXRoICAjIGZvciBsb2cKIGltcG9ydCBvcwogaW1wb3J0IG9zLnBhdGgKQEAgLTkzMCwz
MCArOTMxLDU5IEBAIGRlZiBjaGVja19mb3JfY29weXJpZ2h0KGxpbmVzLCBlcnJvcik6CiAgICAg
ICAgICAgICAgICdZb3Ugc2hvdWxkIGhhdmUgYSBsaW5lOiAiQ29weXJpZ2h0IFt5ZWFyXSA8Q29w
eXJpZ2h0IE93bmVyPiInKQogCiAKLWRlZiBjaGVja19mb3JfaGVhZGVyX2d1YXJkKGxpbmVzLCBl
cnJvcik6CitkZWYgY2hlY2tfZm9yX2hlYWRlcl9ndWFyZChmaWxlX3BhdGgsIGxpbmVzLCBlcnJv
cik6CiAgICAgIiIiQ2hlY2tzIHRoYXQgdGhlIGZpbGUgY29udGFpbnMgYSBoZWFkZXIgZ3VhcmQu
CiAKICAgICBMb2dzIGFuIGVycm9yIGlmIHRoZXJlIHdhcyBhbiAjaWZuZGVmIGd1YXJkIGluIGEg
aGVhZGVyCi0gICAgdGhhdCBzaG91bGQgYmUgYSAjcHJhZ21hIG9uY2UgZ3VhcmQuCisgICAgdGhh
dCBzaG91bGQgYmUgYSAjcHJhZ21hIG9uY2UgZ3VhcmQsIG9yIGlmIHRoZXJlIGlzIGEgbWlzc2lu
ZworICAgICNwcmFnbWEgb25jZSBndWFyZC4KIAogICAgIEFyZ3M6CisgICAgICBmaWxlX3BhdGg6
IFBhdGggdG8gdGhlIGhlYWRlciBmaWxlIHRoYXQgaXMgYmVpbmcgcHJvY2Vzc2VkLgogICAgICAg
bGluZXM6IEFuIGFycmF5IG9mIHN0cmluZ3MsIGVhY2ggcmVwcmVzZW50aW5nIGEgbGluZSBvZiB0
aGUgZmlsZS4KICAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aXRoIGFueSBlcnJv
cnMgZm91bmQuCiAgICAgIiIiCiAKKyAgICBmaWxlbmFtZSA9IG9zLnBhdGguc3BsaXQoZmlsZV9w
YXRoKVstMV0KKyAgICBpZiBmaWxlbmFtZSA9PSAnY29uZmlnLmgnIG9yIGZpbGVuYW1lLmVuZHN3
aXRoKCdQcmVmaXguaCcpOgorICAgICAgICByZXR1cm4KKworICAgIGZpcnN0X2JsYW5rX2xpbmVf
bnVtYmVyID0gMAorICAgIGhhc19pbXBvcnRfc3RhdGVtZW50ID0gRmFsc2UKKyAgICBoYXNfb2Jq
Y19jaGVjayA9IEZhbHNlCisgICAgaGFzX29iamNfa2V5d29yZHMgPSBGYWxzZQogICAgIGZvciBs
aW5lX251bWJlciwgbGluZSBpbiBlbnVtZXJhdGUobGluZXMpOgorICAgICAgICBpZiBsaW5lID09
ICcnIGFuZCBmaXJzdF9ibGFua19saW5lX251bWJlciA9PSAwOgorICAgICAgICAgICAgZmlyc3Rf
YmxhbmtfbGluZV9udW1iZXIgPSBsaW5lX251bWJlcgogICAgICAgICBpZiBsaW5lLnN0YXJ0c3dp
dGgoJyNwcmFnbWEgb25jZScpOgogICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIGxpbmUu
c3RhcnRzd2l0aCgnI2ltcG9ydCAnKToKKyAgICAgICAgICAgIGhhc19pbXBvcnRfc3RhdGVtZW50
ID0gVHJ1ZQorICAgICAgICBpZiAnX19PQkpDX18nIGluIGxpbmU6CisgICAgICAgICAgICBoYXNf
b2JqY19jaGVjayA9IFRydWUKKyAgICAgICAgaWYgZnVuY3Rvb2xzLnJlZHVjZShsYW1iZGEgeCwg
eTogeCBvciB5LCBtYXAobGFtYmRhIHg6IHggaW4gbGluZSwgWydAY2xhc3MnLCAnQGludGVyZmFj
ZScsICdAcHJvdG90eXBlJ10pKToKKyAgICAgICAgICAgIGhhc19vYmpjX2tleXdvcmRzID0gVHJ1
ZQorCisgICAgaWYgKGhhc19pbXBvcnRfc3RhdGVtZW50IG9yIGhhc19vYmpjX2tleXdvcmRzKSBh
bmQgbm90IGhhc19vYmpjX2NoZWNrOgorICAgICAgICByZXR1cm4gICMgT2JqZWN0aXZlLUMtb25s
eSBoZWFkZXJzIGRvbid0IG5lZWQgZ3VhcmRzLgogCiAgICAgIyBJZiB0aGVyZSBpcyBubyAjcHJh
Z21hIG9uY2UsIGJ1dCB0aGVyZSBpcyBhbiAjaWZuZGVmLCB3YXJuIG9ubHkgaWYgaXQgd2FzIG1v
ZGlmaWVkLgogICAgIGlmbmRlZl9saW5lX251bWJlciA9IDAKKyAgICBwcmV2aW91c19saW5lID0g
Tm9uZQogICAgIGZvciBsaW5lX251bWJlciwgbGluZSBpbiBlbnVtZXJhdGUobGluZXMpOgotICAg
ICAgICBsaW5lX3NwbGl0ID0gbGluZS5zcGxpdCgpCi0gICAgICAgIGlmIGxlbihsaW5lX3NwbGl0
KSA+PSAyOgotICAgICAgICAgICAgaWYgbGluZV9zcGxpdFswXSA9PSAnI2lmbmRlZicgYW5kIGxp
bmVfc3BsaXRbMV0uZW5kc3dpdGgoJ19oJyk6Ci0gICAgICAgICAgICAgICAgZXJyb3IobGluZV9u
dW1iZXIsICdidWlsZC9oZWFkZXJfZ3VhcmQnLCA1LAotICAgICAgICAgICAgICAgICAgICAnVXNl
ICNwcmFnbWEgb25jZSBpbnN0ZWFkIG9mICNpZm5kZWYgZm9yIGhlYWRlciBndWFyZC4nKQotICAg
ICAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBwcmV2aW91c19saW5lIGlzIG5vdCBOb25l
OgorICAgICAgICAgICAgcHJldmlvdXNfbGluZV9zcGxpdCA9IHByZXZpb3VzX2xpbmUuc3BsaXQo
KQorICAgICAgICAgICAgbGluZV9zcGxpdCA9IGxpbmUuc3BsaXQoKQorICAgICAgICAgICAgaWYg
bGVuKHByZXZpb3VzX2xpbmVfc3BsaXQpID49IDIgYW5kIGxlbihsaW5lX3NwbGl0KSA+PSAyOgor
ICAgICAgICAgICAgICAgIGlmIHByZXZpb3VzX2xpbmVfc3BsaXRbMF0gPT0gJyNpZm5kZWYnIGFu
ZCBsaW5lX3NwbGl0WzBdID09ICcjZGVmaW5lJyBcCisgICAgICAgICAgICAgICAgICAgICAgICBh
bmQgcHJldmlvdXNfbGluZV9zcGxpdFsxXSA9PSBsaW5lX3NwbGl0WzFdOgorICAgICAgICAgICAg
ICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ2J1aWxkL2hlYWRlcl9ndWFyZCcsIDUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICdVc2UgI3ByYWdtYSBvbmNlIGluc3RlYWQgb2YgI2lmbmRl
ZiBmb3IgaGVhZGVyIGd1YXJkLicpCisgICAgICAgICAgICAgICAgICAgIHJldHVybgorICAgICAg
ICBwcmV2aW91c19saW5lID0gbGluZQorCisgICAgZXJyb3IoZmlyc3RfYmxhbmtfbGluZV9udW1i
ZXIgKyAxLCAnYnVpbGQvaGVhZGVyX2d1YXJkX21pc3NpbmcnLCA1LAorICAgICAgICAgICdNaXNz
aW5nICNwcmFnbWEgb25jZSBmb3IgaGVhZGVyIGd1YXJkLicpCiAKIAogZGVmIGNoZWNrX2Zvcl91
bmljb2RlX3JlcGxhY2VtZW50X2NoYXJhY3RlcnMobGluZXMsIGVycm9yKToKQEAgLTQwNzksNyAr
NDEwOSw3IEBAIGRlZiBfcHJvY2Vzc19saW5lcyhmaWxlbmFtZSwgZmlsZV9leHRlbnNpb24sIGxp
bmVzLCBlcnJvciwgbWluX2NvbmZpZGVuY2UpOgogICAgIGNoZWNrX2Zvcl9jb3B5cmlnaHQobGlu
ZXMsIGVycm9yKQogCiAgICAgaWYgZmlsZV9leHRlbnNpb24gPT0gJ2gnOgotICAgICAgICBjaGVj
a19mb3JfaGVhZGVyX2d1YXJkKGxpbmVzLCBlcnJvcikKKyAgICAgICAgY2hlY2tfZm9yX2hlYWRl
cl9ndWFyZChmaWxlbmFtZSwgbGluZXMsIGVycm9yKQogICAgICAgICBpZiBmaWxlbmFtZSA9PSAn
U291cmNlL1dURi93dGYvUGxhdGZvcm0uaCc6CiAgICAgICAgICAgICBjaGVja19wbGF0Zm9ybWhf
Y29tbWVudHMobGluZXMsIGVycm9yKQogCkBAIC00MTIwLDYgKzQxNTAsNyBAQCBjbGFzcyBDcHBD
aGVja2VyKG9iamVjdCk6CiAgICAgICAgICdidWlsZC9lbmRpZl9jb21tZW50JywKICAgICAgICAg
J2J1aWxkL2ZvcndhcmRfZGVjbCcsCiAgICAgICAgICdidWlsZC9oZWFkZXJfZ3VhcmQnLAorICAg
ICAgICAnYnVpbGQvaGVhZGVyX2d1YXJkX21pc3NpbmcnLAogICAgICAgICAnYnVpbGQvaW5jbHVk
ZScsCiAgICAgICAgICdidWlsZC9pbmNsdWRlX29yZGVyJywKICAgICAgICAgJ2J1aWxkL2luY2x1
ZGVfd2hhdF95b3VfdXNlJywKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5
bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHls
ZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHkKaW5kZXggODM2ODUyNWI1ZjY0YzZhNjgyNmFjZTg0
NDVjMWI4MGYzMDM3MDIxNS4uNmNmM2FjNzZhNzk4ODRlZjg2NzQ5OTAwYzZlN2YwNTJhODhjYTM1
OSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHBf
dW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9j
cHBfdW5pdHRlc3QucHkKQEAgLTIsNyArMiw3IEBACiAjCiAjIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIyBDb3B5cmlnaHQgKEMpIDIwMDkgVG9y
Y2ggTW9iaWxlIEluYy4KLSMgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoQykgMjAxMCBDaHJpcyBKZXJkb25layAo
Y2plcmRvbmVrQHdlYmtpdC5vcmcpCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzA5LDcgKzMwOSw3IEBA
IGNsYXNzIENwcFN0eWxlVGVzdEJhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICByZXR1
cm4gc2VsZi5wZXJmb3JtX2xpbnQoY29kZSwgZmlsZW5hbWUsIGJhc2ljX2Vycm9yX3J1bGVzLCB1
bml0X3Rlc3RfY29uZmlnKQogCiAgICAgIyBPbmx5IGluY2x1ZGUgaGVhZGVyIGd1YXJkIGVycm9y
cy4KLSAgICBkZWYgcGVyZm9ybV9oZWFkZXJfZ3VhcmRfY2hlY2soc2VsZiwgY29kZSwgZmlsZW5h
bWU9J2Zvby5oJyk6CisgICAgZGVmIHBlcmZvcm1faGVhZGVyX2d1YXJkX2NoZWNrKHNlbGYsIGNv
ZGUsIGZpbGVuYW1lKToKICAgICAgICAgYmFzaWNfZXJyb3JfcnVsZXMgPSAoJy0nLCAnK2J1aWxk
L2hlYWRlcl9ndWFyZCcpCiAgICAgICAgIHJldHVybiBzZWxmLnBlcmZvcm1fbGludChjb2RlLCBm
aWxlbmFtZSwgYmFzaWNfZXJyb3JfcnVsZXMpCiAKQEAgLTM0Myw5ICszNDMsOSBAQCBjbGFzcyBD
cHBTdHlsZVRlc3RCYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChleHBlY3RlZF9tZXNzYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBl
cmZvcm1faW5jbHVkZV93aGF0X3lvdV91c2UoY29kZSkpCiAKLSAgICBkZWYgYXNzZXJ0X2hlYWRl
cl9ndWFyZChzZWxmLCBjb2RlLCBleHBlY3RlZF9tZXNzYWdlKToKKyAgICBkZWYgYXNzZXJ0X2hl
YWRlcl9ndWFyZChzZWxmLCBjb2RlLCBleHBlY3RlZF9tZXNzYWdlLCBmaWxlbmFtZT0nZm9vLmgn
KToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9tZXNzYWdlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZWxmLnBlcmZvcm1faGVhZGVyX2d1YXJkX2NoZWNrKGNvZGUpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucGVyZm9ybV9oZWFkZXJfZ3VhcmRfY2hlY2so
Y29kZSwgZmlsZW5hbWUpKQogCiAgICAgZGVmIGFzc2VydF9ibGFua19saW5lc19jaGVjayhzZWxm
LCBsaW5lcywgc3RhcnRfZXJyb3JzLCBlbmRfZXJyb3JzKToKICAgICAgICAgZXJyb3JfY29sbGVj
dG9yID0gRXJyb3JDb2xsZWN0b3Ioc2VsZi5hc3NlcnRUcnVlKQpAQCAtMjY3NiwxNiArMjY3Niw4
MiBAQCBjbGFzcyBDcHBTdHlsZVRlc3QoQ3BwU3R5bGVUZXN0QmFzZSk6CiAgICAgZGVmIHRlc3Rf
YnVpbGRfaGVhZGVyX2d1YXJkKHNlbGYpOgogICAgICAgICBydWxlcyA9ICgnLScsICcrYnVpbGQv
aGVhZGVyX2d1YXJkJykKIAotICAgICAgICAjIE9sZCBoZWFkZXIgZ3VhcmQuCi0gICAgICAgIHNl
bGYuYXNzZXJ0X2hlYWRlcl9ndWFyZCgnI2lmbmRlZiBGb29faCcsCisgICAgICAgICMgTm8gd2Fy
bmluZyBmb3IgY29uZmlnLmggYW5kICpQcmVmaXguaCBoZWFkZXJzLgorICAgICAgICBzZWxmLmFz
c2VydF9oZWFkZXJfZ3VhcmQoJycsICcnLCAnY29uZmlnLmgnKQorICAgICAgICBzZWxmLmFzc2Vy
dF9oZWFkZXJfZ3VhcmQoJycsICcnLCAnRm9vUHJlZml4LmgnKQorCisgICAgICAgICMgTm8gd2Fy
bmluZyBmb3IgdmFsaWQgaGVhZGVyIGd1YXJkLgorICAgICAgICBzZWxmLmFzc2VydF9oZWFkZXJf
Z3VhcmQoJyNwcmFnbWEgb25jZScsICcnKQorCisgICAgICAgICMgV2FybmluZyBmb3Igb2xkIGhl
YWRlciBndWFyZC4KKyAgICAgICAgc2VsZi5hc3NlcnRfaGVhZGVyX2d1YXJkKAorICAgICAgICAg
ICAgJyNpZm5kZWYgRm9vX2hcbicKKyAgICAgICAgICAgICcjZGVmaW5lIEZvb19oXG4nCisgICAg
ICAgICAgICAnI2VuZGlmIC8qIEZvb19oICovXG4nLAogICAgICAgICAgICAgJ1VzZSAjcHJhZ21h
IG9uY2UgaW5zdGVhZCBvZiAjaWZuZGVmIGZvciBoZWFkZXIgZ3VhcmQuJwogICAgICAgICAgICAg
JyAgW2J1aWxkL2hlYWRlcl9ndWFyZF0gWzVdJykKIAotICAgICAgICAjIE5vIGhlYWRlciBndWFy
ZC4gT2theSwgc2luY2UgdGhpcyBjb3VsZCBiZSBhbiBPYmpDIGhlYWRlci4KLSAgICAgICAgc2Vs
Zi5hc3NlcnRfaGVhZGVyX2d1YXJkKCcnLCAnJykKLQotICAgICAgICAjIFZhbGlkIGhlYWRlciBn
dWFyZC4KLSAgICAgICAgc2VsZi5hc3NlcnRfaGVhZGVyX2d1YXJkKCcjcHJhZ21hIG9uY2UnLCAn
JykKKyAgICAgICAgIyBXYXJuaW5nIGZvciBtaXNzaW5nIGhlYWRlciBndWFyZC4KKyAgICAgICAg
c2VsZi5hc3NlcnRfaGVhZGVyX2d1YXJkKAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICAn
TWlzc2luZyAjcHJhZ21hIG9uY2UgZm9yIGhlYWRlciBndWFyZC4nCisgICAgICAgICAgICAnICBb
YnVpbGQvaGVhZGVyX2d1YXJkX21pc3NpbmddIFs1XScpCisKKyAgICAgICAgIyBObyB3YXJuaW5n
IGZvciBPYmotQyBoZWFkZXIgd2l0aCAjaW1wb3J0IHN0YXRlbWVudC4KKyAgICAgICAgc2VsZi5h
c3NlcnRfaGVhZGVyX2d1YXJkKAorICAgICAgICAgICAgJyNpbXBvcnQgPEZvdW5kYXRpb24vRm91
bmRhdGlvbi5oPicsCisgICAgICAgICAgICAnJykKKworICAgICAgICAjIE5vIHdhcm5pbmcgZm9y
IE9iai1DIGhlYWRlciB3aXRoIEBjbGFzcyBrZXl3b3JkLgorICAgICAgICBzZWxmLmFzc2VydF9o
ZWFkZXJfZ3VhcmQoCisgICAgICAgICAgICAnQGNsYXNzIE5TU3RyaW5nOycsCisgICAgICAgICAg
ICAnJykKKworICAgICAgICAjIE5vIHdhcm5pbmcgZm9yIE9iai1DIGhlYWRlciB3aXRoIEBpbnRl
cmZhY2Uga2V5d29yZC4KKyAgICAgICAgc2VsZi5hc3NlcnRfaGVhZGVyX2d1YXJkKAorICAgICAg
ICAgICAgJ0BpbnRlcmZhY2UgTlNTdHJpbmcgKE15Q2F0ZWdvcnkpXG4nCisgICAgICAgICAgICAn
QGVuZFxuJywKKyAgICAgICAgICAgICcnKQorCisgICAgICAgICMgTm8gd2FybmluZyBmb3IgT2Jq
LUMgaGVhZGVyIHdpdGggQHByb3RvdHlwZSBrZXl3b3JkLgorICAgICAgICBzZWxmLmFzc2VydF9o
ZWFkZXJfZ3VhcmQoCisgICAgICAgICAgICAnQHByb3RvdHlwZSBNeVByb3RvdHlwZSA6IE5TT2Jq
ZWN0XG4nCisgICAgICAgICAgICAnQGVuZFxuJywKKyAgICAgICAgICAgICcnKQorCisgICAgICAg
ICMgV2FybmluZyBmb3IgT2JqLUMgaGVhZGVyIHdpdGggI2ltcG9ydCBzdGF0ZW1lbnQgYW5kIF9f
T0JKQ19fIGNoZWNrLgorICAgICAgICBzZWxmLmFzc2VydF9oZWFkZXJfZ3VhcmQoCisgICAgICAg
ICAgICAnI2lmZGVmIF9fT0JKQ19fXG4nCisgICAgICAgICAgICAnI2ltcG9ydCA8Rm91bmRhdGlv
bi9Gb3VuZGF0aW9uLmg+XG4nCisgICAgICAgICAgICAnI2VuZGlmIC8qIF9fT0JKQ19fICovXG4n
LAorICAgICAgICAgICAgJ01pc3NpbmcgI3ByYWdtYSBvbmNlIGZvciBoZWFkZXIgZ3VhcmQuJwor
ICAgICAgICAgICAgJyAgW2J1aWxkL2hlYWRlcl9ndWFyZF9taXNzaW5nXSBbNV0nKQorCisgICAg
ICAgICMgV2FybmluZyBmb3IgT2JqLUMgaGVhZGVyIHdpdGggQGNsYXNzIGtleXdvcmQgYW5kIF9f
T0JKQ19fIGNoZWNrLgorICAgICAgICBzZWxmLmFzc2VydF9oZWFkZXJfZ3VhcmQoCisgICAgICAg
ICAgICAnI2lmZGVmIF9fT0JKQ19fXG4nCisgICAgICAgICAgICAnQGNsYXNzIE5TU3RyaW5nO1xu
JworICAgICAgICAgICAgJyNlbmRpZiAvKiBfX09CSkNfXyAqL1xuJywKKyAgICAgICAgICAgICdN
aXNzaW5nICNwcmFnbWEgb25jZSBmb3IgaGVhZGVyIGd1YXJkLicKKyAgICAgICAgICAgICcgIFti
dWlsZC9oZWFkZXJfZ3VhcmRfbWlzc2luZ10gWzVdJykKKworICAgICAgICAjIFdhcm5pbmcgZm9y
IE9iai1DIGhlYWRlciB3aXRoIEBpbnRlcmZhY2Uga2V5d29yZCBhbmQgX19PQkpDX18gY2hlY2su
CisgICAgICAgIHNlbGYuYXNzZXJ0X2hlYWRlcl9ndWFyZCgKKyAgICAgICAgICAgICcjaWZkZWYg
X19PQkpDX19cbicKKyAgICAgICAgICAgICdAaW50ZXJmYWNlIE5TU3RyaW5nIChNeUNhdGVnb3J5
KVxuJworICAgICAgICAgICAgJ0BlbmRcbicKKyAgICAgICAgICAgICcjZW5kaWYgLyogX19PQkpD
X18gKi9cbicsCisgICAgICAgICAgICAnTWlzc2luZyAjcHJhZ21hIG9uY2UgZm9yIGhlYWRlciBn
dWFyZC4nCisgICAgICAgICAgICAnICBbYnVpbGQvaGVhZGVyX2d1YXJkX21pc3NpbmddIFs1XScp
CisKKyAgICAgICAgIyBXYXJuaW5nIGZvciBPYmotQyBoZWFkZXIgd2l0aCBAcHJvdG90eXBlIGtl
eXdvcmQgYW5kIF9fT0JKQ19fIGNoZWNrLgorICAgICAgICBzZWxmLmFzc2VydF9oZWFkZXJfZ3Vh
cmQoCisgICAgICAgICAgICAnI2lmZGVmIF9fT0JKQ19fXG4nCisgICAgICAgICAgICAnQHByb3Rv
dHlwZSBNeVByb3RvdHlwZSA6IE5TT2JqZWN0XG4nCisgICAgICAgICAgICAnQGVuZFxuJworICAg
ICAgICAgICAgJyNlbmRpZiAvKiBfX09CSkNfXyAqL1xuJywKKyAgICAgICAgICAgICdNaXNzaW5n
ICNwcmFnbWEgb25jZSBmb3IgaGVhZGVyIGd1YXJkLicKKyAgICAgICAgICAgICcgIFtidWlsZC9o
ZWFkZXJfZ3VhcmRfbWlzc2luZ10gWzVdJykKIAogICAgIGRlZiB0ZXN0X2J1aWxkX3ByaW50Zl9m
b3JtYXQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388178</attachid>
            <date>2020-01-19 04:44:45 -0800</date>
            <delta_ts>2020-01-20 10:07:39 -0800</delta_ts>
            <desc>Patch v3</desc>
            <filename>bug-206480-20200119044449.patch</filename>
            <type>text/plain</type>
            <size>11433</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0ODAyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2MxYzdmNjkwN2UyZjgzYTE2OTM3ZDdiZmQ4YTAxYThl
ZjQyN2VjMy4uOWEzMWM2YzA5ZWYxOTRmZWUxMzg4NDY4Y2QxZmU5M2E4NjFhOGQ4NSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5
IEBACisyMDIwLTAxLTE4ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAg
ICAgICAgY2hlY2std2Via2l0LXN0eWxlOiBJbXByb3ZlIGhlYWRlciBndWFyZCBjaGVja3MKKyAg
ICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIwNjQ4MD4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hl
Y2tlcnMvY3BwLnB5OgorICAgICAgICAoY2hlY2tfZm9yX2hlYWRlcl9ndWFyZCk6CisgICAgICAg
IC0gQWRkIGBmaWxlX3BhdGhgIChmaWxlbmFtZSkgYXJndW1lbnQgdG8gY2hlY2sgZm9yIGNvbmZp
Zy5oIGFuZAorICAgICAgICAgICpQcmVmaXguaCBoZWFkZXJzLgorICAgICAgICAtIFVzZSBoaW50
cyBpbiBoZWFkZXIgZmlsZSB0byBkZXRlcm1pbmUgaWYgdGhpcyBpcyBhIGhlYWRlciBmaWxlCisg
ICAgICAgICAgb25seSB1c2VkIGJ5IE9iamVjdGl2ZS1DIG9yIG5vdC4KKyAgICAgICAgLSBDaGFu
Z2UgI2lmbmRlZi8jZGVmaW5lIGNoZWNrIHRvIHVzZSBib3RoIGxpbmVzIGluc3RlYWQgb2YKKyAg
ICAgICAgICBhc3N1bWluZyBhIGZvcm1hdCBmb3IgdGhlIG1hY3JvLgorICAgICAgICAtIEVtaXQg
bmV3ICdidWlsZC9oZWFkZXJfZ3VhcmRfbWlzc2luZycgZXJyb3IuCisgICAgICAgIChfcHJvY2Vz
c19saW5lcyk6CisgICAgICAgIC0gUGFzcyBgZmlsZW5hbWVgIGFyZ3VtZW50IHRvIGNoZWNrX2Zv
cl9oZWFkZXJfZ3VhcmQoKS4KKyAgICAgICAgKENwcENoZWNrZXIpOgorICAgICAgICAtIEVuYWJs
ZSBuZXcgJ2J1aWxkL2hlYWRlcl9ndWFyZF9taXNzaW5nJyBjaGVjay4KKworICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5OgorICAgICAgICAo
Q3BwU3R5bGVUZXN0QmFzZS5wZXJmb3JtX2hlYWRlcl9ndWFyZF9jaGVjayk6CisgICAgICAgIChD
cHBTdHlsZVRlc3RCYXNlLmFzc2VydF9oZWFkZXJfZ3VhcmQpOgorICAgICAgICAtIE1vdmUgZGVm
YXVsdCBgZmlsZW5hbWVgIGFyZ3VtZW50IGZyb20KKyAgICAgICAgICBwZXJmb3JtX2hlYWRlcl9n
dWFyZF9jaGVjaygpIHRvIGFzc2VydF9oZWFkZXJfZ3VhcmQoKSBzbyB0ZXN0cworICAgICAgICAg
IG1heSBwYXNzIGluIGRpZmZlcmVudCB2YWx1ZXMgZm9yIGhlYWRlciBwYXRocy4KKyAgICAgICAg
KENwcFN0eWxlVGVzdCk6CisgICAgICAgIC0gQWRkIHRlc3RzIGZvciBjb25maWcuaCwgKlByZWZp
eC5oIGhlYWRlcnMuCisgICAgICAgIC0gVXBkYXRlIHRlc3QgZm9yIGBidWlsZC9oZWFkZXJfZ3Vh
cmQnIChsZWdhY3kgaGVhZGVyIGd1YXJkKQorICAgICAgICAgIGVycm9yLgorICAgICAgICAtIFVw
ZGF0ZSB0ZXN0IGZvciBtaXNzaW5nIGhlYWRlciBndWFyZCBzbyB0aGF0IGl0IG5vdyBleHBlY3Rz
IGEKKyAgICAgICAgICAnYnVpbGQvaGVhZGVyX2d1YXJkX21pc3NpbmcnIGVycm9yIG1lc3NhZ2Uu
CisgICAgICAgIC0gQWRkIHRlc3RzIGZvciBPYmplY3RpdmUtQyBoZWFkZXJzIHdpdGggYW5kIHdp
dGhvdXQgX19PQkpDX18KKyAgICAgICAgICBjaGVja3MuCisKIDIwMjAtMDEtMTcgIENhdGhpZSBD
aGVuICA8Y2F0aGllY2hlbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBz
Y3JvbGwgYmVoYXZpb3IgcGFyc2luZwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9jaGVja2Vycy9jcHAucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2No
ZWNrZXJzL2NwcC5weQppbmRleCAxODMwMzdhYjVkYjU0N2U3MDkxMjg1NjgxMTJiODY4N2UwN2Uy
NmIzLi5jMzhmYzcxZDlhY2ZiZmNlMjExMTJiMDQ0ZmI0NmU0MTEwOTI4ZTAxIDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weQpAQCAtMiw3ICsyLDcgQEAK
ICMKICMgQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLgotIyBD
b3B5cmlnaHQgKEMpIDIwMDktMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
IENvcHlyaWdodCAoQykgMjAwOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICMgQ29weXJpZ2h0IChDKSAyMDEwIENocmlzIEplcmRvbmVrIChjamVyZG9uZWtAd2Via2l0Lm9y
ZykKICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CkBAIC0zNyw2ICszNyw3IEBACiAiIiJTdXBwb3J0IGZvciBjaGVj
ay13ZWJraXQtc3R5bGUuIiIiCiAKIGltcG9ydCBjb2RlY3MKK2ltcG9ydCBmdW5jdG9vbHMKIGlt
cG9ydCBtYXRoICAjIGZvciBsb2cKIGltcG9ydCBvcwogaW1wb3J0IG9zLnBhdGgKQEAgLTkzMCwz
MCArOTMxLDU5IEBAIGRlZiBjaGVja19mb3JfY29weXJpZ2h0KGxpbmVzLCBlcnJvcik6CiAgICAg
ICAgICAgICAgICdZb3Ugc2hvdWxkIGhhdmUgYSBsaW5lOiAiQ29weXJpZ2h0IFt5ZWFyXSA8Q29w
eXJpZ2h0IE93bmVyPiInKQogCiAKLWRlZiBjaGVja19mb3JfaGVhZGVyX2d1YXJkKGxpbmVzLCBl
cnJvcik6CitkZWYgY2hlY2tfZm9yX2hlYWRlcl9ndWFyZChmaWxlX3BhdGgsIGxpbmVzLCBlcnJv
cik6CiAgICAgIiIiQ2hlY2tzIHRoYXQgdGhlIGZpbGUgY29udGFpbnMgYSBoZWFkZXIgZ3VhcmQu
CiAKICAgICBMb2dzIGFuIGVycm9yIGlmIHRoZXJlIHdhcyBhbiAjaWZuZGVmIGd1YXJkIGluIGEg
aGVhZGVyCi0gICAgdGhhdCBzaG91bGQgYmUgYSAjcHJhZ21hIG9uY2UgZ3VhcmQuCisgICAgdGhh
dCBzaG91bGQgYmUgYSAjcHJhZ21hIG9uY2UgZ3VhcmQsIG9yIGlmIHRoZXJlIGlzIGEgbWlzc2lu
ZworICAgICNwcmFnbWEgb25jZSBndWFyZC4KIAogICAgIEFyZ3M6CisgICAgICBmaWxlX3BhdGg6
IFBhdGggdG8gdGhlIGhlYWRlciBmaWxlIHRoYXQgaXMgYmVpbmcgcHJvY2Vzc2VkLgogICAgICAg
bGluZXM6IEFuIGFycmF5IG9mIHN0cmluZ3MsIGVhY2ggcmVwcmVzZW50aW5nIGEgbGluZSBvZiB0
aGUgZmlsZS4KICAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aXRoIGFueSBlcnJv
cnMgZm91bmQuCiAgICAgIiIiCiAKKyAgICBmaWxlbmFtZSA9IG9zLnBhdGguc3BsaXQoZmlsZV9w
YXRoKVstMV0KKyAgICBpZiBmaWxlbmFtZSA9PSAnY29uZmlnLmgnIG9yIGZpbGVuYW1lLmVuZHN3
aXRoKCdQcmVmaXguaCcpOgorICAgICAgICByZXR1cm4KKworICAgIGZpcnN0X2JsYW5rX2xpbmVf
bnVtYmVyID0gMAorICAgIGhhc19pbXBvcnRfc3RhdGVtZW50ID0gRmFsc2UKKyAgICBoYXNfb2Jq
Y19jaGVjayA9IEZhbHNlCisgICAgaGFzX29iamNfa2V5d29yZHMgPSBGYWxzZQogICAgIGZvciBs
aW5lX251bWJlciwgbGluZSBpbiBlbnVtZXJhdGUobGluZXMpOgorICAgICAgICBpZiBsaW5lID09
ICcnIGFuZCBmaXJzdF9ibGFua19saW5lX251bWJlciA9PSAwOgorICAgICAgICAgICAgZmlyc3Rf
YmxhbmtfbGluZV9udW1iZXIgPSBsaW5lX251bWJlcgogICAgICAgICBpZiBsaW5lLnN0YXJ0c3dp
dGgoJyNwcmFnbWEgb25jZScpOgogICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIGxpbmUu
c3RhcnRzd2l0aCgnI2ltcG9ydCAnKToKKyAgICAgICAgICAgIGhhc19pbXBvcnRfc3RhdGVtZW50
ID0gVHJ1ZQorICAgICAgICBpZiAnX19PQkpDX18nIGluIGxpbmU6CisgICAgICAgICAgICBoYXNf
b2JqY19jaGVjayA9IFRydWUKKyAgICAgICAgaWYgZnVuY3Rvb2xzLnJlZHVjZShsYW1iZGEgeCwg
eTogeCBvciB5LCBtYXAobGFtYmRhIHg6IHggaW4gbGluZSwgWydAY2xhc3MnLCAnQGludGVyZmFj
ZScsICdAcHJvdG9jb2wnXSkpOgorICAgICAgICAgICAgaGFzX29iamNfa2V5d29yZHMgPSBUcnVl
CisKKyAgICBpZiAoaGFzX2ltcG9ydF9zdGF0ZW1lbnQgb3IgaGFzX29iamNfa2V5d29yZHMpIGFu
ZCBub3QgaGFzX29iamNfY2hlY2s6CisgICAgICAgIHJldHVybiAgIyBPYmplY3RpdmUtQy1vbmx5
IGhlYWRlcnMgZG9uJ3QgbmVlZCBndWFyZHMuCiAKICAgICAjIElmIHRoZXJlIGlzIG5vICNwcmFn
bWEgb25jZSwgYnV0IHRoZXJlIGlzIGFuICNpZm5kZWYsIHdhcm4gb25seSBpZiBpdCB3YXMgbW9k
aWZpZWQuCiAgICAgaWZuZGVmX2xpbmVfbnVtYmVyID0gMAorICAgIHByZXZpb3VzX2xpbmUgPSBO
b25lCiAgICAgZm9yIGxpbmVfbnVtYmVyLCBsaW5lIGluIGVudW1lcmF0ZShsaW5lcyk6Ci0gICAg
ICAgIGxpbmVfc3BsaXQgPSBsaW5lLnNwbGl0KCkKLSAgICAgICAgaWYgbGVuKGxpbmVfc3BsaXQp
ID49IDI6Ci0gICAgICAgICAgICBpZiBsaW5lX3NwbGl0WzBdID09ICcjaWZuZGVmJyBhbmQgbGlu
ZV9zcGxpdFsxXS5lbmRzd2l0aCgnX2gnKToKLSAgICAgICAgICAgICAgICBlcnJvcihsaW5lX251
bWJlciwgJ2J1aWxkL2hlYWRlcl9ndWFyZCcsIDUsCi0gICAgICAgICAgICAgICAgICAgICdVc2Ug
I3ByYWdtYSBvbmNlIGluc3RlYWQgb2YgI2lmbmRlZiBmb3IgaGVhZGVyIGd1YXJkLicpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIHByZXZpb3VzX2xpbmUgaXMgbm90IE5vbmU6
CisgICAgICAgICAgICBwcmV2aW91c19saW5lX3NwbGl0ID0gcHJldmlvdXNfbGluZS5zcGxpdCgp
CisgICAgICAgICAgICBsaW5lX3NwbGl0ID0gbGluZS5zcGxpdCgpCisgICAgICAgICAgICBpZiBs
ZW4ocHJldmlvdXNfbGluZV9zcGxpdCkgPj0gMiBhbmQgbGVuKGxpbmVfc3BsaXQpID49IDI6Cisg
ICAgICAgICAgICAgICAgaWYgcHJldmlvdXNfbGluZV9zcGxpdFswXSA9PSAnI2lmbmRlZicgYW5k
IGxpbmVfc3BsaXRbMF0gPT0gJyNkZWZpbmUnIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFu
ZCBwcmV2aW91c19saW5lX3NwbGl0WzFdID09IGxpbmVfc3BsaXRbMV06CisgICAgICAgICAgICAg
ICAgICAgIGVycm9yKGxpbmVfbnVtYmVyLCAnYnVpbGQvaGVhZGVyX2d1YXJkJywgNSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ1VzZSAjcHJhZ21hIG9uY2UgaW5zdGVhZCBvZiAjaWZuZGVm
IGZvciBoZWFkZXIgZ3VhcmQuJykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAg
IHByZXZpb3VzX2xpbmUgPSBsaW5lCisKKyAgICBlcnJvcihmaXJzdF9ibGFua19saW5lX251bWJl
ciArIDEsICdidWlsZC9oZWFkZXJfZ3VhcmRfbWlzc2luZycsIDUsCisgICAgICAgICAgJ01pc3Np
bmcgI3ByYWdtYSBvbmNlIGZvciBoZWFkZXIgZ3VhcmQuJykKIAogCiBkZWYgY2hlY2tfZm9yX3Vu
aWNvZGVfcmVwbGFjZW1lbnRfY2hhcmFjdGVycyhsaW5lcywgZXJyb3IpOgpAQCAtNDA3OSw3ICs0
MTA5LDcgQEAgZGVmIF9wcm9jZXNzX2xpbmVzKGZpbGVuYW1lLCBmaWxlX2V4dGVuc2lvbiwgbGlu
ZXMsIGVycm9yLCBtaW5fY29uZmlkZW5jZSk6CiAgICAgY2hlY2tfZm9yX2NvcHlyaWdodChsaW5l
cywgZXJyb3IpCiAKICAgICBpZiBmaWxlX2V4dGVuc2lvbiA9PSAnaCc6Ci0gICAgICAgIGNoZWNr
X2Zvcl9oZWFkZXJfZ3VhcmQobGluZXMsIGVycm9yKQorICAgICAgICBjaGVja19mb3JfaGVhZGVy
X2d1YXJkKGZpbGVuYW1lLCBsaW5lcywgZXJyb3IpCiAgICAgICAgIGlmIGZpbGVuYW1lID09ICdT
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oJzoKICAgICAgICAgICAgIGNoZWNrX3BsYXRmb3JtaF9j
b21tZW50cyhsaW5lcywgZXJyb3IpCiAKQEAgLTQxMjAsNiArNDE1MCw3IEBAIGNsYXNzIENwcENo
ZWNrZXIob2JqZWN0KToKICAgICAgICAgJ2J1aWxkL2VuZGlmX2NvbW1lbnQnLAogICAgICAgICAn
YnVpbGQvZm9yd2FyZF9kZWNsJywKICAgICAgICAgJ2J1aWxkL2hlYWRlcl9ndWFyZCcsCisgICAg
ICAgICdidWlsZC9oZWFkZXJfZ3VhcmRfbWlzc2luZycsCiAgICAgICAgICdidWlsZC9pbmNsdWRl
JywKICAgICAgICAgJ2J1aWxkL2luY2x1ZGVfb3JkZXInLAogICAgICAgICAnYnVpbGQvaW5jbHVk
ZV93aGF0X3lvdV91c2UnLApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHls
ZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxl
L2NoZWNrZXJzL2NwcF91bml0dGVzdC5weQppbmRleCA4MzY4NTI1YjVmNjRjNmE2ODI2YWNlODQ0
NWMxYjgwZjMwMzcwMjE1Li5iOGZjMTBlMTE5NTM0N2MxNTI3YWI1OTdlYzgxYjc0ZWRlN2I4NmM3
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcF91
bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2Nw
cF91bml0dGVzdC5weQpAQCAtMiw3ICsyLDcgQEAKICMKICMgQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoQykgMjAwOSBUb3Jj
aCBNb2JpbGUgSW5jLgotIyBDb3B5cmlnaHQgKEMpIDIwMDktMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAwOS0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICMgQ29weXJpZ2h0IChDKSAyMDEwIENocmlzIEplcmRvbmVrIChj
amVyZG9uZWtAd2Via2l0Lm9yZykKICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zMDksNyArMzA5LDcgQEAg
Y2xhc3MgQ3BwU3R5bGVUZXN0QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHJldHVy
biBzZWxmLnBlcmZvcm1fbGludChjb2RlLCBmaWxlbmFtZSwgYmFzaWNfZXJyb3JfcnVsZXMsIHVu
aXRfdGVzdF9jb25maWcpCiAKICAgICAjIE9ubHkgaW5jbHVkZSBoZWFkZXIgZ3VhcmQgZXJyb3Jz
LgotICAgIGRlZiBwZXJmb3JtX2hlYWRlcl9ndWFyZF9jaGVjayhzZWxmLCBjb2RlLCBmaWxlbmFt
ZT0nZm9vLmgnKToKKyAgICBkZWYgcGVyZm9ybV9oZWFkZXJfZ3VhcmRfY2hlY2soc2VsZiwgY29k
ZSwgZmlsZW5hbWUpOgogICAgICAgICBiYXNpY19lcnJvcl9ydWxlcyA9ICgnLScsICcrYnVpbGQv
aGVhZGVyX2d1YXJkJykKICAgICAgICAgcmV0dXJuIHNlbGYucGVyZm9ybV9saW50KGNvZGUsIGZp
bGVuYW1lLCBiYXNpY19lcnJvcl9ydWxlcykKIApAQCAtMzQzLDkgKzM0Myw5IEBAIGNsYXNzIENw
cFN0eWxlVGVzdEJhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGV4cGVjdGVkX21lc3NhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucGVy
Zm9ybV9pbmNsdWRlX3doYXRfeW91X3VzZShjb2RlKSkKIAotICAgIGRlZiBhc3NlcnRfaGVhZGVy
X2d1YXJkKHNlbGYsIGNvZGUsIGV4cGVjdGVkX21lc3NhZ2UpOgorICAgIGRlZiBhc3NlcnRfaGVh
ZGVyX2d1YXJkKHNlbGYsIGNvZGUsIGV4cGVjdGVkX21lc3NhZ2UsIGZpbGVuYW1lPSdmb28uaCcp
OgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX21lc3NhZ2UsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGYucGVyZm9ybV9oZWFkZXJfZ3VhcmRfY2hlY2soY29kZSkpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wZXJmb3JtX2hlYWRlcl9ndWFyZF9jaGVjayhj
b2RlLCBmaWxlbmFtZSkpCiAKICAgICBkZWYgYXNzZXJ0X2JsYW5rX2xpbmVzX2NoZWNrKHNlbGYs
IGxpbmVzLCBzdGFydF9lcnJvcnMsIGVuZF9lcnJvcnMpOgogICAgICAgICBlcnJvcl9jb2xsZWN0
b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydFRydWUpCkBAIC0yNjc2LDE2ICsyNjc2LDgy
IEBAIGNsYXNzIENwcFN0eWxlVGVzdChDcHBTdHlsZVRlc3RCYXNlKToKICAgICBkZWYgdGVzdF9i
dWlsZF9oZWFkZXJfZ3VhcmQoc2VsZik6CiAgICAgICAgIHJ1bGVzID0gKCctJywgJytidWlsZC9o
ZWFkZXJfZ3VhcmQnKQogCi0gICAgICAgICMgT2xkIGhlYWRlciBndWFyZC4KLSAgICAgICAgc2Vs
Zi5hc3NlcnRfaGVhZGVyX2d1YXJkKCcjaWZuZGVmIEZvb19oJywKKyAgICAgICAgIyBObyB3YXJu
aW5nIGZvciBjb25maWcuaCBhbmQgKlByZWZpeC5oIGhlYWRlcnMuCisgICAgICAgIHNlbGYuYXNz
ZXJ0X2hlYWRlcl9ndWFyZCgnJywgJycsICdjb25maWcuaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0
X2hlYWRlcl9ndWFyZCgnJywgJycsICdGb29QcmVmaXguaCcpCisKKyAgICAgICAgIyBObyB3YXJu
aW5nIGZvciB2YWxpZCBoZWFkZXIgZ3VhcmQuCisgICAgICAgIHNlbGYuYXNzZXJ0X2hlYWRlcl9n
dWFyZCgnI3ByYWdtYSBvbmNlJywgJycpCisKKyAgICAgICAgIyBXYXJuaW5nIGZvciBvbGQgaGVh
ZGVyIGd1YXJkLgorICAgICAgICBzZWxmLmFzc2VydF9oZWFkZXJfZ3VhcmQoCisgICAgICAgICAg
ICAnI2lmbmRlZiBGb29faFxuJworICAgICAgICAgICAgJyNkZWZpbmUgRm9vX2hcbicKKyAgICAg
ICAgICAgICcjZW5kaWYgLyogRm9vX2ggKi9cbicsCiAgICAgICAgICAgICAnVXNlICNwcmFnbWEg
b25jZSBpbnN0ZWFkIG9mICNpZm5kZWYgZm9yIGhlYWRlciBndWFyZC4nCiAgICAgICAgICAgICAn
ICBbYnVpbGQvaGVhZGVyX2d1YXJkXSBbNV0nKQogCi0gICAgICAgICMgTm8gaGVhZGVyIGd1YXJk
LiBPa2F5LCBzaW5jZSB0aGlzIGNvdWxkIGJlIGFuIE9iakMgaGVhZGVyLgotICAgICAgICBzZWxm
LmFzc2VydF9oZWFkZXJfZ3VhcmQoJycsICcnKQotCi0gICAgICAgICMgVmFsaWQgaGVhZGVyIGd1
YXJkLgotICAgICAgICBzZWxmLmFzc2VydF9oZWFkZXJfZ3VhcmQoJyNwcmFnbWEgb25jZScsICcn
KQorICAgICAgICAjIFdhcm5pbmcgZm9yIG1pc3NpbmcgaGVhZGVyIGd1YXJkLgorICAgICAgICBz
ZWxmLmFzc2VydF9oZWFkZXJfZ3VhcmQoCisgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICdN
aXNzaW5nICNwcmFnbWEgb25jZSBmb3IgaGVhZGVyIGd1YXJkLicKKyAgICAgICAgICAgICcgIFti
dWlsZC9oZWFkZXJfZ3VhcmRfbWlzc2luZ10gWzVdJykKKworICAgICAgICAjIE5vIHdhcm5pbmcg
Zm9yIE9iai1DIGhlYWRlciB3aXRoICNpbXBvcnQgc3RhdGVtZW50LgorICAgICAgICBzZWxmLmFz
c2VydF9oZWFkZXJfZ3VhcmQoCisgICAgICAgICAgICAnI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3Vu
ZGF0aW9uLmg+JywKKyAgICAgICAgICAgICcnKQorCisgICAgICAgICMgTm8gd2FybmluZyBmb3Ig
T2JqLUMgaGVhZGVyIHdpdGggQGNsYXNzIGtleXdvcmQuCisgICAgICAgIHNlbGYuYXNzZXJ0X2hl
YWRlcl9ndWFyZCgKKyAgICAgICAgICAgICdAY2xhc3MgTlNTdHJpbmc7JywKKyAgICAgICAgICAg
ICcnKQorCisgICAgICAgICMgTm8gd2FybmluZyBmb3IgT2JqLUMgaGVhZGVyIHdpdGggQGludGVy
ZmFjZSBrZXl3b3JkLgorICAgICAgICBzZWxmLmFzc2VydF9oZWFkZXJfZ3VhcmQoCisgICAgICAg
ICAgICAnQGludGVyZmFjZSBOU1N0cmluZyAoTXlDYXRlZ29yeSlcbicKKyAgICAgICAgICAgICdA
ZW5kXG4nLAorICAgICAgICAgICAgJycpCisKKyAgICAgICAgIyBObyB3YXJuaW5nIGZvciBPYmot
QyBoZWFkZXIgd2l0aCBAcHJvdG9jb2wga2V5d29yZC4KKyAgICAgICAgc2VsZi5hc3NlcnRfaGVh
ZGVyX2d1YXJkKAorICAgICAgICAgICAgJ0Bwcm90b2NvbCBNeVByb3RvY29sIDogTlNPYmplY3Rc
bicKKyAgICAgICAgICAgICdAZW5kXG4nLAorICAgICAgICAgICAgJycpCisKKyAgICAgICAgIyBX
YXJuaW5nIGZvciBPYmotQyBoZWFkZXIgd2l0aCAjaW1wb3J0IHN0YXRlbWVudCBhbmQgX19PQkpD
X18gY2hlY2suCisgICAgICAgIHNlbGYuYXNzZXJ0X2hlYWRlcl9ndWFyZCgKKyAgICAgICAgICAg
ICcjaWZkZWYgX19PQkpDX19cbicKKyAgICAgICAgICAgICcjaW1wb3J0IDxGb3VuZGF0aW9uL0Zv
dW5kYXRpb24uaD5cbicKKyAgICAgICAgICAgICcjZW5kaWYgLyogX19PQkpDX18gKi9cbicsCisg
ICAgICAgICAgICAnTWlzc2luZyAjcHJhZ21hIG9uY2UgZm9yIGhlYWRlciBndWFyZC4nCisgICAg
ICAgICAgICAnICBbYnVpbGQvaGVhZGVyX2d1YXJkX21pc3NpbmddIFs1XScpCisKKyAgICAgICAg
IyBXYXJuaW5nIGZvciBPYmotQyBoZWFkZXIgd2l0aCBAY2xhc3Mga2V5d29yZCBhbmQgX19PQkpD
X18gY2hlY2suCisgICAgICAgIHNlbGYuYXNzZXJ0X2hlYWRlcl9ndWFyZCgKKyAgICAgICAgICAg
ICcjaWZkZWYgX19PQkpDX19cbicKKyAgICAgICAgICAgICdAY2xhc3MgTlNTdHJpbmc7XG4nCisg
ICAgICAgICAgICAnI2VuZGlmIC8qIF9fT0JKQ19fICovXG4nLAorICAgICAgICAgICAgJ01pc3Np
bmcgI3ByYWdtYSBvbmNlIGZvciBoZWFkZXIgZ3VhcmQuJworICAgICAgICAgICAgJyAgW2J1aWxk
L2hlYWRlcl9ndWFyZF9taXNzaW5nXSBbNV0nKQorCisgICAgICAgICMgV2FybmluZyBmb3IgT2Jq
LUMgaGVhZGVyIHdpdGggQGludGVyZmFjZSBrZXl3b3JkIGFuZCBfX09CSkNfXyBjaGVjay4KKyAg
ICAgICAgc2VsZi5hc3NlcnRfaGVhZGVyX2d1YXJkKAorICAgICAgICAgICAgJyNpZmRlZiBfX09C
SkNfX1xuJworICAgICAgICAgICAgJ0BpbnRlcmZhY2UgTlNTdHJpbmcgKE15Q2F0ZWdvcnkpXG4n
CisgICAgICAgICAgICAnQGVuZFxuJworICAgICAgICAgICAgJyNlbmRpZiAvKiBfX09CSkNfXyAq
L1xuJywKKyAgICAgICAgICAgICdNaXNzaW5nICNwcmFnbWEgb25jZSBmb3IgaGVhZGVyIGd1YXJk
LicKKyAgICAgICAgICAgICcgIFtidWlsZC9oZWFkZXJfZ3VhcmRfbWlzc2luZ10gWzVdJykKKwor
ICAgICAgICAjIFdhcm5pbmcgZm9yIE9iai1DIGhlYWRlciB3aXRoIEBwcm90b2NvbCBrZXl3b3Jk
IGFuZCBfX09CSkNfXyBjaGVjay4KKyAgICAgICAgc2VsZi5hc3NlcnRfaGVhZGVyX2d1YXJkKAor
ICAgICAgICAgICAgJyNpZmRlZiBfX09CSkNfX1xuJworICAgICAgICAgICAgJ0Bwcm90b2NvbCBN
eVByb3RvY29sIDogTlNPYmplY3RcbicKKyAgICAgICAgICAgICdAZW5kXG4nCisgICAgICAgICAg
ICAnI2VuZGlmIC8qIF9fT0JKQ19fICovXG4nLAorICAgICAgICAgICAgJ01pc3NpbmcgI3ByYWdt
YSBvbmNlIGZvciBoZWFkZXIgZ3VhcmQuJworICAgICAgICAgICAgJyAgW2J1aWxkL2hlYWRlcl9n
dWFyZF9taXNzaW5nXSBbNV0nKQogCiAgICAgZGVmIHRlc3RfYnVpbGRfcHJpbnRmX2Zvcm1hdChz
ZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRfbGludCgK
</data>

          </attachment>
      

    </bug>

</bugzilla>