<?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>174233</bug_id>
          
          <creation_ts>2017-07-06 19:07:07 -0700</creation_ts>
          <short_desc>Add location to NavigationActionData</short_desc>
          <delta_ts>2017-10-02 18:19:50 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Megan Gardner">megan_gardner</reporter>
          <assigned_to name="Megan Gardner">megan_gardner</assigned_to>
          <cc>bdakin</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kangil.han</cc>
    
    <cc>mitz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1326302</commentid>
    <comment_count>0</comment_count>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2017-07-06 19:07:07 -0700</bug_when>
    <thetext>Add location to NavigationActionData</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326310</commentid>
    <comment_count>1</comment_count>
      <attachid>314792</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2017-07-06 19:16:02 -0700</bug_when>
    <thetext>Created attachment 314792
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326319</commentid>
    <comment_count>2</comment_count>
      <attachid>314792</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-07-06 19:46:00 -0700</bug_when>
    <thetext>Comment on attachment 314792
Patch

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

I think it shouldn&apos;t be too difficult to write a unit test for this, as well.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKNavigationAction.mm:128
&gt; +    return [NSString stringWithFormat:@&quot;&lt;%@: %p; navigationType = %ld; syntheticClickType = %ld; position x = %ld y= %ld request = %@; sourceFrame = %@; targetFrame = %@&gt;&quot;, NSStringFromClass(self.class), self,

Perhaps just position x = %.2f y = %.2f, instead of casting the floats to long

&gt; Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp:72
&gt; +static WebCore::FloatPoint clickPointForMouseEvent(const MouseEvent* mouseEvent)

Since we&apos;re using namespace WebCore, you can omit the WebCore:: here.

&gt; Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp:77
&gt; +    return WebCore::FloatPoint(mouseEvent-&gt;screenX(), mouseEvent-&gt;screenY());

Are screenX() and screenY() in root view coordinates? IMO, we should make sure this point&apos;s coordinate space matches up with what -_requestActivatedElementAtPosition:completionBlock: accepts (which appears to be in root view coordinates). Or if not, then give the variables here more descriptive names so that it&apos;s clear what coordinate space everything is in.

&gt; Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp:108
&gt; +WebCore::FloatPoint InjectedBundleNavigationAction::clickPointForNavigationAction(const NavigationAction&amp; navigationAction)

You can omit the WebCore:: here too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326384</commentid>
    <comment_count>3</comment_count>
      <attachid>314792</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-07-06 22:06:55 -0700</bug_when>
    <thetext>Comment on attachment 314792
Patch

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

&gt; Source/WebKit2/Shared/NavigationActionData.h:52
&gt; +    WebCore::FloatPoint clickPoint;

Would be good if the name said what coordinate space this point lives in. Also, we&apos;d normally call this a &quot;location&quot;.

&gt; Source/WebKit2/UIProcess/API/APINavigationAction.h:66
&gt; +    WebCore::FloatPoint clickPoint() const { return m_navigationActionData.clickPoint; }

Ditto.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKNavigationActionPrivate.h:54
&gt; +@property (nonatomic, readonly) CGPoint _clickPoint WK_API_AVAILABLE(ios(11.0));

Ditto.

&gt; Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp:75
&gt; +        return WebCore::FloatPoint::zero();

This can just be &quot;return { };&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326562</commentid>
    <comment_count>4</comment_count>
      <attachid>314864</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2017-07-07 13:00:14 -0700</bug_when>
    <thetext>Created attachment 314864
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326571</commentid>
    <comment_count>5</comment_count>
      <attachid>314864</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-07-07 13:12:16 -0700</bug_when>
    <thetext>Comment on attachment 314864
Patch

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

&gt; Source/WebKit2/Shared/NavigationActionData.h:52
&gt; +    WebCore::FloatPoint rootViewClickLocation;

I think WK2 convention is generally xInYCoordinates (clickLocationInRootViewCoordinates). The coordinate space info is secondary, shouldn’t come first</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326597</commentid>
    <comment_count>6</comment_count>
      <attachid>314871</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2017-07-07 13:44:40 -0700</bug_when>
    <thetext>Created attachment 314871
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326609</commentid>
    <comment_count>7</comment_count>
      <attachid>314871</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-07-07 14:03:01 -0700</bug_when>
    <thetext>Comment on attachment 314871
Patch

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKNavigationAction.mm:132
&gt; +        0L, 0L, 0L,

This probably needs to be 0 instead of 0L to fix the Mac build.

&gt; Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp:72
&gt; +static WebCore::FloatPoint clickLocationInRootViewCoordinatesForMouseEvent(const MouseEvent* mouseEvent)

No need for WebCore:: here.

&gt; Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp:76
&gt; +    

I noticed that neighboring methods check if (!mouseEvent-&gt;buttonDown() || !mouseEvent-&gt;isTrusted()). Do we need this logic here too?

&gt; Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp:77
&gt; +    return WebCore::FloatPoint(mouseEvent-&gt;clientX(), mouseEvent-&gt;clientY());

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326659</commentid>
    <comment_count>8</comment_count>
      <attachid>314884</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2017-07-07 15:33:30 -0700</bug_when>
    <thetext>Created attachment 314884
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326672</commentid>
    <comment_count>9</comment_count>
      <attachid>314884</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-07-07 15:58:14 -0700</bug_when>
    <thetext>Comment on attachment 314884
Patch

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

r=me with some minor tweaks, though this will need a wk2r+ too.

&gt; Source/WebKit2/ChangeLog:11
&gt; +        * Shared/NavigationActionData.cpp:

ChangeLog entry still references rootViewClickLocation instead of clickLocationInRootViewCoordinates.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKNavigationAction.mm:127
&gt; +    return [NSString stringWithFormat:@&quot;&lt;%@: %p; navigationType = %ld; syntheticClickType = %ld; position x = %.2f y= %.2f request = %@; sourceFrame = %@; targetFrame = %@&gt;&quot;, NSStringFromClass(self.class), self,

Nit - missing a space between y and =

&gt; Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp:111
&gt; +WebCore::FloatPoint InjectedBundleNavigationAction::clickLocationInRootViewCoordinatesForNavigationAction(const NavigationAction&amp; navigationAction)

Nit - no need for WebCore:: here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326678</commentid>
    <comment_count>10</comment_count>
      <attachid>314889</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2017-07-07 16:11:22 -0700</bug_when>
    <thetext>Created attachment 314889
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326689</commentid>
    <comment_count>11</comment_count>
      <attachid>314894</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2017-07-07 16:19:35 -0700</bug_when>
    <thetext>Created attachment 314894
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326716</commentid>
    <comment_count>12</comment_count>
      <attachid>314894</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-07-07 17:18:34 -0700</bug_when>
    <thetext>Comment on attachment 314894
Patch

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

&gt; Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp:80
&gt; +    return FloatPoint(mouseEvent-&gt;clientX(), mouseEvent-&gt;clientY());

I think this is probably wrong if the event occurred inside an iframe (clientX/clientY) will be relative to the iframe. clientX/clientY may also not map simply to root view coordinates because of page scale.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326719</commentid>
    <comment_count>13</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-07-07 17:23:53 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #12)
&gt; Comment on attachment 314894 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=314894&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp:80
&gt; &gt; +    return FloatPoint(mouseEvent-&gt;clientX(), mouseEvent-&gt;clientY());
&gt; 
&gt; I think this is probably wrong if the event occurred inside an iframe
&gt; (clientX/clientY) will be relative to the iframe. clientX/clientY may also
&gt; not map simply to root view coordinates because of page scale.

I would use mouseEvent-&gt;absoluteLocation(), and call contentsToRootView() on the FrameView obtained from the event&apos;s &quot;view&quot; (actually a DOMWindow). We could maybe add a function to Mouse{Related}Event to do this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326732</commentid>
    <comment_count>14</comment_count>
      <attachid>314908</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2017-07-07 19:29:36 -0700</bug_when>
    <thetext>Created attachment 314908
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326733</commentid>
    <comment_count>15</comment_count>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2017-07-07 19:30:23 -0700</bug_when>
    <thetext>Ok, hopefully this is the right way to get the point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1326928</commentid>
    <comment_count>16</comment_count>
      <attachid>314908</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-07-09 20:29:43 -0700</bug_when>
    <thetext>Comment on attachment 314908
Patch

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

&gt; Source/WebCore/dom/MouseRelatedEvent.cpp:170
&gt; +int MouseRelatedEvent::absoluteLocationConvetedToRootViewX() const

This says &quot;conveted&quot;

&gt; Source/WebCore/dom/MouseRelatedEvent.cpp:174
&gt; +    return frameView()-&gt;contentsToRootView(flooredIntPoint(m_absoluteLocation)).x();

In most other places, where we perform absolute &lt;=&gt; root view conversion, we round instead of flooring (i.e. roundedIntPoint). Is there a reason we should prefer flooring here?

&gt; Source/WebCore/dom/MouseRelatedEvent.cpp:181
&gt; +    return frameView()-&gt;contentsToRootView(flooredIntPoint(m_absoluteLocation)).y();

Splitting these into separate methods means two calls to contentsToRootView when we need to compute one of these points, when only one is needed. Can we instead make this something like absoluteLocationInRootViewCoordinates() and have it return an IntPoint, and then have clickLocationInRootViewCoordinatesForMouseEvent return mouseEvent-&gt;absoluteLocationInRootViewCoordinates()?

&gt; Source/WebKit2/ChangeLog:22
&gt; +        (WebKit::InjectedBundleNavigationAction::rootViewClickLocationForNavigationAction):

These names still reference &quot;rootViewClickLocation&quot; instead of &quot;clickLocationInRootViewCoordinates&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327064</commentid>
    <comment_count>17</comment_count>
      <attachid>314996</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2017-07-10 11:00:18 -0700</bug_when>
    <thetext>Created attachment 314996
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327066</commentid>
    <comment_count>18</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-07-10 11:02:19 -0700</bug_when>
    <thetext>Attachment 314996 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327078</commentid>
    <comment_count>19</comment_count>
      <attachid>314998</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2017-07-10 11:27:19 -0700</bug_when>
    <thetext>Created attachment 314998
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327088</commentid>
    <comment_count>20</comment_count>
      <attachid>314998</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-07-10 11:55:08 -0700</bug_when>
    <thetext>Comment on attachment 314998
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        Add the root view location of a tap to a NavigationAction to vend to Safari.
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).

Swap these two lines around.

&gt; Source/WebCore/ChangeLog:11
&gt; +        Test: small enough change to not be tested alone.

But you could write an API test for it.

&gt; Source/WebCore/dom/MouseRelatedEvent.h:60
&gt; +    WEBCORE_EXPORT IntPoint absoluteLocationConvertedToRootView() const;

The fact that it&apos;s computed from absolute coords is not relevant to the caller; this should just be called locationInRootViewCoordinates(), and should return a FloatPoint (since converting to root view may go through transforms).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327094</commentid>
    <comment_count>21</comment_count>
      <attachid>315004</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2017-07-10 12:08:11 -0700</bug_when>
    <thetext>Created attachment 315004
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327135</commentid>
    <comment_count>22</comment_count>
      <attachid>315004</attachid>
    <who name="">mitz</who>
    <bug_when>2017-07-10 13:57:45 -0700</bug_when>
    <thetext>Comment on attachment 315004
Patch

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKNavigationActionPrivate.h:54
&gt; +@property (nonatomic, readonly) CGPoint _clickLocationInRootViewCoordinates WK_API_AVAILABLE(ios(11.0));

In the past, we had used WK_IOS_TBA for new API prior to the GM release of the SDK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355665</commentid>
    <comment_count>23</comment_count>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2017-10-02 18:17:49 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/219304/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355666</commentid>
    <comment_count>24</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-10-02 18:19:50 -0700</bug_when>
    <thetext>&lt;rdar://problem/34782261&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314792</attachid>
            <date>2017-07-06 19:16:02 -0700</date>
            <delta_ts>2017-07-07 13:00:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174233-20170706191602.patch</filename>
            <type>text/plain</type>
            <size>13554</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxOTIzMCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE3LTA3LTA2ICBNZWdhbiBH
YXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGxvY2F0aW9u
IHRvIE5hdmlnYXRpb25BY3Rpb25EYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzQyMzMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5MTY1NTE4
PgorCisgICAgICAgIEFkZCB0aGUgbG9jYXRpb24gb2YgYSB0YXAgdG8gYSBOYXZpZ2F0aW9uQWN0
aW9uIHRvIHZlbmQgdG8gU2FmYXJpLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogU2hhcmVkL05hdmlnYXRpb25BY3Rpb25EYXRhLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGE6OmVuY29kZSk6CisgICAgICAgIChXZWJL
aXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9OYXZp
Z2F0aW9uQWN0aW9uRGF0YS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlv
bkFjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0
aW9uLm1tOgorICAgICAgICAoLVtXS05hdmlnYXRpb25BY3Rpb24gZGVzY3JpcHRpb25dKToKKyAg
ICAgICAgKC1bV0tOYXZpZ2F0aW9uQWN0aW9uIF9jbGlja1BvaW50XSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb25Qcml2YXRlLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpjbGlja1BvaW50Rm9yTW91c2VFdmVudCk6CisgICAgICAg
IChXZWJLaXQ6OkluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6Y2xpY2tQb2ludEZvck5h
dmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5hdmlnYXRp
b25BY3Rpb246OkluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaDoK
KyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpjbGlja1Bv
aW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisK
IDIwMTctMDctMDYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgZml4IHRoZSBpbnRlcm5hbCBpT1MgMTEgYnVpbGQKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9OYXZpZ2F0aW9uQWN0aW9uRGF0YS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvU2hhcmVkL05hdmlnYXRpb25BY3Rpb25EYXRhLmNwcAkocmV2aXNp
b24gMjE5MDMzKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL05hdmlnYXRpb25BY3Rpb25EYXRh
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkFyZ3VtZW50
Q29kZXJzLmgiCiAjaW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKKyNp
bmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKQEAgLTQ0LDYgKzQ1LDcgQEAgdm9pZCBOYXZpZ2F0aW9uQWN0aW9uRGF0YTo6ZW5jb2Rl
KElQQzo6RQogICAgIGVuY29kZXIgPDwgY2FuSGFuZGxlUmVxdWVzdDsKICAgICBlbmNvZGVyLmVu
Y29kZUVudW0oc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CiAgICAgZW5jb2RlciA8PCBk
b3dubG9hZEF0dHJpYnV0ZTsKKyAgICBlbmNvZGVyIDw8IGNsaWNrUG9pbnQ7CiB9CiAKIGJvb2wg
TmF2aWdhdGlvbkFjdGlvbkRhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIE5hdmln
YXRpb25BY3Rpb25EYXRhJiByZXN1bHQpCkBAIC02NCw2ICs2Niw4IEBAIGJvb2wgTmF2aWdhdGlv
bkFjdGlvbkRhdGE6OmRlY29kZShJUEM6OkQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmRvd25sb2FkQXR0cmlidXRlKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNsaWNrUG9pbnQpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9OYXZpZ2F0aW9uQWN0aW9uRGF0YS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9OYXZpZ2F0aW9uQWN0aW9uRGF0YS5oCShyZXZpc2lvbiAyMTkw
MzMpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF2aWdhdGlvbkFjdGlvbkRhdGEuaAkod29y
a2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBOYXZpZ2F0aW9uQWN0aW9uRGF0
YV9oCiAKICNpbmNsdWRlICJXZWJFdmVudC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRQb2lu
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPgogCiBuYW1lc3BhY2Ug
SVBDIHsKQEAgLTQ4LDYgKzQ5LDcgQEAgc3RydWN0IE5hdmlnYXRpb25BY3Rpb25EYXRhIHsKICAg
ICBib29sIGNhbkhhbmRsZVJlcXVlc3QgeyBmYWxzZSB9OwogICAgIFdlYkNvcmU6OlNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSB7IFdlYkNv
cmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93IH07CiAgICAg
V1RGOjpTdHJpbmcgZG93bmxvYWRBdHRyaWJ1dGU7CisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBj
bGlja1BvaW50OwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9B
UElOYXZpZ2F0aW9uQWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmgJKHJldmlzaW9uIDIxOTAzMykKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkFjdGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC02Myw2ICs2Myw3IEBAIHB1YmxpYzoKICAgICBXZWJLaXQ6OldlYkV2ZW50OjpNb2Rp
ZmllcnMgbW9kaWZpZXJzKCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0aW9uRGF0YS5t
b2RpZmllcnM7IH0KICAgICBXZWJLaXQ6OldlYk1vdXNlRXZlbnQ6OkJ1dHRvbiBtb3VzZUJ1dHRv
bigpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEubW91c2VCdXR0b247IH0K
ICAgICBXZWJLaXQ6OldlYk1vdXNlRXZlbnQ6OlN5bnRoZXRpY0NsaWNrVHlwZSBzeW50aGV0aWND
bGlja1R5cGUoKSBjb25zdCB7IHJldHVybiBtX25hdmlnYXRpb25BY3Rpb25EYXRhLnN5bnRoZXRp
Y0NsaWNrVHlwZTsgfQorICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgY2xpY2tQb2ludCgpIGNvbnN0
IHsgcmV0dXJuIG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEuY2xpY2tQb2ludDsgfQogICAgIGJvb2wg
Y2FuSGFuZGxlUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEu
Y2FuSGFuZGxlUmVxdWVzdDsgfQogICAgIGJvb2wgc2hvdWxkT3BlbkV4dGVybmFsU2NoZW1lcygp
IGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEuc2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSA9PSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91
bGRBbGxvdyB8fCBtX25hdmlnYXRpb25BY3Rpb25EYXRhLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kgPT0gV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkQWxs
b3dFeHRlcm5hbFNjaGVtZXM7IH0KICAgICBib29sIHNob3VsZE9wZW5BcHBMaW5rcygpIGNvbnN0
IHsgcmV0dXJuIG1fc2hvdWxkT3BlbkFwcExpbmtzICYmIG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEu
c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9PSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5OjpTaG91bGRBbGxvdzsgfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb24ubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb24ubW0JKHJldmlz
aW9uIDIxOTAzMykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZp
Z2F0aW9uQWN0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4ICszMSwxMCBAQAogI2ltcG9y
dCAiTmF2aWdhdGlvbkFjdGlvbkRhdGEuaCIKICNpbXBvcnQgIldLRnJhbWVJbmZvSW50ZXJuYWwu
aCIKICNpbXBvcnQgIl9XS1VzZXJJbml0aWF0ZWRBY3Rpb25JbnRlcm5hbC5oIgorI2ltcG9ydCA8
V2ViQ29yZS9GbG9hdFBvaW50Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKKwogQGlt
cGxlbWVudGF0aW9uIFdLTmF2aWdhdGlvbkFjdGlvbgogCiBzdGF0aWMgV0tOYXZpZ2F0aW9uVHlw
ZSB0b1dLTmF2aWdhdGlvblR5cGUoV2ViQ29yZTo6TmF2aWdhdGlvblR5cGUgbmF2aWdhdGlvblR5
cGUpCkBAIC0xMjMsMTIgKzEyNSwxMiBAQCAtICh2b2lkKWRlYWxsb2MKIAogLSAoTlNTdHJpbmcg
KilkZXNjcmlwdGlvbgogewotICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
IjwlQDogJXA7IG5hdmlnYXRpb25UeXBlID0gJWxkOyBzeW50aGV0aWNDbGlja1R5cGUgPSAlbGQ7
IHJlcXVlc3QgPSAlQDsgc291cmNlRnJhbWUgPSAlQDsgdGFyZ2V0RnJhbWUgPSAlQD4iLCBOU1N0
cmluZ0Zyb21DbGFzcyhzZWxmLmNsYXNzKSwgc2VsZiwKKyAgICByZXR1cm4gW05TU3RyaW5nIHN0
cmluZ1dpdGhGb3JtYXQ6QCI8JUA6ICVwOyBuYXZpZ2F0aW9uVHlwZSA9ICVsZDsgc3ludGhldGlj
Q2xpY2tUeXBlID0gJWxkOyBwb3NpdGlvbiB4ID0gJWxkIHk9ICVsZCByZXF1ZXN0ID0gJUA7IHNv
dXJjZUZyYW1lID0gJUA7IHRhcmdldEZyYW1lID0gJUA+IiwgTlNTdHJpbmdGcm9tQ2xhc3Moc2Vs
Zi5jbGFzcyksIHNlbGYsCiAgICAgICAgIChsb25nKXNlbGYubmF2aWdhdGlvblR5cGUsCiAjaWYg
UExBVEZPUk0oSU9TKQotICAgICAgICAobG9uZylzZWxmLl9zeW50aGV0aWNDbGlja1R5cGUsCisg
ICAgICAgIChsb25nKXNlbGYuX3N5bnRoZXRpY0NsaWNrVHlwZSwgKGxvbmcpc2VsZi5fY2xpY2tQ
b2ludC54LCAobG9uZylzZWxmLl9jbGlja1BvaW50LnksCiAjZWxzZQotICAgICAgICAwTCwKKyAg
ICAgICAgMEwsIDBMLCAwTCwKICNlbmRpZgogICAgICAgICBzZWxmLnJlcXVlc3QsIHNlbGYuc291
cmNlRnJhbWUsIHNlbGYudGFyZ2V0RnJhbWVdOwogfQpAQCAtMTYyLDYgKzE2NCwxMSBAQCAtIChX
S1N5bnRoZXRpY0NsaWNrVHlwZSlfc3ludGhldGljQ2xpY2tUCiB7CiAgICAgcmV0dXJuIHRvV0tT
eW50aGV0aWNDbGlja1R5cGUoX25hdmlnYXRpb25BY3Rpb24tPnN5bnRoZXRpY0NsaWNrVHlwZSgp
KTsKIH0KKworLSAoQ0dQb2ludClfY2xpY2tQb2ludAoreworICAgIHJldHVybiBfbmF2aWdhdGlv
bkFjdGlvbi0+Y2xpY2tQb2ludCgpOworfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlv
blByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLTmF2aWdhdGlvbkFjdGlvblByaXZhdGUuaAkocmV2aXNpb24gMjE5MDMzKQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb25Qcml2YXRl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50
ZWdlciwgV0tTeW50aGV0aWNDbAogCiAjaWYgVEFSR0VUX09TX0lQSE9ORQogQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWRvbmx5KSBXS1N5bnRoZXRpY0NsaWNrVHlwZSBfc3ludGhldGljQ2xpY2tU
eXBlIFdLX0FQSV9BVkFJTEFCTEUoaW9zKDEwLjApKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSkgQ0dQb2ludCBfY2xpY2tQb2ludCBXS19BUElfQVZBSUxBQkxFKGlvcygxMS4wKSk7
CiAjZW5kaWYKIAogQGVuZApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVO
YXZpZ2F0aW9uQWN0aW9uLmNwcAkocmV2aXNpb24gMjE5MDMzKQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCw2ICs2OCwxNCBAQCBzdGF0aWMgV2ViTW91c2VFdmVu
dDo6U3ludGhldGljQ2xpY2tUeXBlCiAgICAgCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYk1v
dXNlRXZlbnQ6OlN5bnRoZXRpY0NsaWNrVHlwZT4obW91c2VFdmVudC0+c3ludGhldGljQ2xpY2tU
eXBlKCkpOwogfQorICAgIAorc3RhdGljIFdlYkNvcmU6OkZsb2F0UG9pbnQgY2xpY2tQb2ludEZv
ck1vdXNlRXZlbnQoY29uc3QgTW91c2VFdmVudCogbW91c2VFdmVudCkKK3sKKyAgICBpZiAoIW1v
dXNlRXZlbnQpCisgICAgICAgIHJldHVybiBXZWJDb3JlOjpGbG9hdFBvaW50Ojp6ZXJvKCk7Cisg
ICAgCisgICAgcmV0dXJuIFdlYkNvcmU6OkZsb2F0UG9pbnQobW91c2VFdmVudC0+c2NyZWVuWCgp
LCBtb3VzZUV2ZW50LT5zY3JlZW5ZKCkpOworfQogCiBXZWJFdmVudDo6TW9kaWZpZXJzIEluamVj
dGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6bW9kaWZpZXJzRm9yTmF2aWdhdGlvbkFjdGlvbihj
b25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBuYXZpZ2F0aW9uQWN0aW9uKQogewpAQCAtOTYsNiArMTA0
LDExIEBAIFdlYk1vdXNlRXZlbnQ6OlN5bnRoZXRpY0NsaWNrVHlwZSBJbmplY3QKIHsKICAgICBy
ZXR1cm4gc3ludGhldGljQ2xpY2tUeXBlRm9yTW91c2VFdmVudChtb3VzZUV2ZW50Rm9yTmF2aWdh
dGlvbkFjdGlvbihuYXZpZ2F0aW9uQWN0aW9uKSk7CiB9CisgICAgCitXZWJDb3JlOjpGbG9hdFBv
aW50IEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6Y2xpY2tQb2ludEZvck5hdmlnYXRp
b25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgbmF2aWdhdGlvbkFjdGlvbikKK3sKKyAg
ICByZXR1cm4gY2xpY2tQb2ludEZvck1vdXNlRXZlbnQobW91c2VFdmVudEZvck5hdmlnYXRpb25B
Y3Rpb24obmF2aWdhdGlvbkFjdGlvbikpOworfQogCiBSZWY8SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0
aW9uQWN0aW9uPiBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXZWJGcmFt
ZSogZnJhbWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgUmVmUHRyPEZvcm1TdGF0
ZT4mJiBmb3JtU3RhdGUpCiB7CkBAIC0xMTQsNiArMTI3LDcgQEAgSW5qZWN0ZWRCdW5kbGVOYXZp
Z2F0aW9uQWN0aW9uOjpJbmplY3RlZAogICAgICAgICBtX2hpdFRlc3RSZXN1bHQgPSBJbmplY3Rl
ZEJ1bmRsZUhpdFRlc3RSZXN1bHQ6OmNyZWF0ZShmcmFtZS0+Y29yZUZyYW1lKCktPmV2ZW50SGFu
ZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KG1vdXNlRXZlbnQtPmFic29sdXRlTG9jYXRpb24o
KSkpOwogICAgICAgICBtX21vdXNlQnV0dG9uICAgPSBtb3VzZUJ1dHRvbkZvck1vdXNlRXZlbnQo
bW91c2VFdmVudCk7CiAgICAgICAgIG1fc3ludGhldGljQ2xpY2tUeXBlID0gc3ludGhldGljQ2xp
Y2tUeXBlRm9yTmF2aWdhdGlvbkFjdGlvbihuYXZpZ2F0aW9uQWN0aW9uKTsKKyAgICAgICAgbV9j
bGlja1BvaW50ID0gY2xpY2tQb2ludEZvck5hdmlnYXRpb25BY3Rpb24obmF2aWdhdGlvbkFjdGlv
bik7CiAgICAgfQogCiAgICAgaWYgKGZvcm1TdGF0ZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaAkocmV2aXNpb24gMjE5MDMzKQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmln
YXRpb25BY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTMgKzUwLDE1IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgV2ViRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmllcnNGb3JOYXZpZ2F0aW9uQWN0
aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mKTsKICAgICBzdGF0aWMgV2ViTW91
c2VFdmVudDo6QnV0dG9uIG1vdXNlQnV0dG9uRm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBXZWJD
b3JlOjpOYXZpZ2F0aW9uQWN0aW9uJik7CiAgICAgc3RhdGljIFdlYk1vdXNlRXZlbnQ6OlN5bnRo
ZXRpY0NsaWNrVHlwZSBzeW50aGV0aWNDbGlja1R5cGVGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0
IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mKTsKLQorICAgIHN0YXRpYyBXZWJDb3JlOjpGbG9h
dFBvaW50IGNsaWNrUG9pbnRGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmln
YXRpb25BY3Rpb24mKTsKKyAgICAKICAgICBXZWJDb3JlOjpOYXZpZ2F0aW9uVHlwZSBuYXZpZ2F0
aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdhdGlvblR5cGU7IH0KICAgICBXZWJFdmVu
dDo6TW9kaWZpZXJzIG1vZGlmaWVycygpIGNvbnN0IHsgcmV0dXJuIG1fbW9kaWZpZXJzOyB9CiAg
ICAgV2ViTW91c2VFdmVudDo6QnV0dG9uIG1vdXNlQnV0dG9uKCkgY29uc3QgeyByZXR1cm4gbV9t
b3VzZUJ1dHRvbjsgfQogICAgIEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdCogaGl0VGVzdFJl
c3VsdCgpIGNvbnN0IHsgcmV0dXJuIG1faGl0VGVzdFJlc3VsdC5nZXQoKTsgfQogICAgIEluamVj
dGVkQnVuZGxlTm9kZUhhbmRsZSogZm9ybUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1F
bGVtZW50LmdldCgpOyB9CiAgICAgV2ViTW91c2VFdmVudDo6U3ludGhldGljQ2xpY2tUeXBlIHN5
bnRoZXRpY0NsaWNrVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3ludGhldGljQ2xpY2tUeXBlOyB9
CisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBjbGlja1BvaW50KCkgY29uc3QgeyByZXR1cm4gbV9j
bGlja1BvaW50OyB9CiAKICAgICBib29sIHNob3VsZE9wZW5FeHRlcm5hbFVSTHMoKSBjb25zdCB7
IHJldHVybiBtX3Nob3VsZE9wZW5FeHRlcm5hbFVSTHM7IH0KICAgICBib29sIHNob3VsZFRyeUFw
cExpbmtzKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRUcnlBcHBMaW5rczsgfQpAQCAtNjksNiAr
NzEsNyBAQCBwcml2YXRlOgogICAgIFdlYkV2ZW50OjpNb2RpZmllcnMgbV9tb2RpZmllcnM7CiAg
ICAgV2ViTW91c2VFdmVudDo6QnV0dG9uIG1fbW91c2VCdXR0b247CiAgICAgV2ViTW91c2VFdmVu
dDo6U3ludGhldGljQ2xpY2tUeXBlIG1fc3ludGhldGljQ2xpY2tUeXBlIHsgV2ViTW91c2VFdmVu
dDo6Tm9UYXAgfTsKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IG1fY2xpY2tQb2ludDsKICAgICBS
ZWZQdHI8SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0PiBtX2hpdFRlc3RSZXN1bHQ7CiAgICAg
UmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gbV9mb3JtRWxlbWVudDsKICAgICBBdG9t
aWNTdHJpbmcgbV9kb3dubG9hZEF0dHJpYnV0ZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAJKHJldmlzaW9uIDIxOTAzMykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQwLDYgKzI0
MCw3IEBAIFBhZ2UqIFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KEZyYW0KICAgICBuYXZp
Z2F0aW9uQWN0aW9uRGF0YS5tb2RpZmllcnMgPSBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rp
b246Om1vZGlmaWVyc0Zvck5hdmlnYXRpb25BY3Rpb24obmF2aWdhdGlvbkFjdGlvbik7CiAgICAg
bmF2aWdhdGlvbkFjdGlvbkRhdGEubW91c2VCdXR0b24gPSBJbmplY3RlZEJ1bmRsZU5hdmlnYXRp
b25BY3Rpb246Om1vdXNlQnV0dG9uRm9yTmF2aWdhdGlvbkFjdGlvbihuYXZpZ2F0aW9uQWN0aW9u
KTsKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5zeW50aGV0aWNDbGlja1R5cGUgPSBJbmplY3Rl
ZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OnN5bnRoZXRpY0NsaWNrVHlwZUZvck5hdmlnYXRpb25B
Y3Rpb24obmF2aWdhdGlvbkFjdGlvbik7CisgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEuY2xpY2tQ
b2ludCA9IEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6Y2xpY2tQb2ludEZvck5hdmln
YXRpb25BY3Rpb24obmF2aWdhdGlvbkFjdGlvbik7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEu
dXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIgPSB3ZWJQcm9jZXNzLnVzZXJHZXN0dXJlVG9rZW5J
ZGVudGlmaWVyKG5hdmlnYXRpb25BY3Rpb24udXNlckdlc3R1cmVUb2tlbigpKTsKICAgICBuYXZp
Z2F0aW9uQWN0aW9uRGF0YS5jYW5IYW5kbGVSZXF1ZXN0ID0gbV9wYWdlLmNhbkhhbmRsZVJlcXVl
c3QocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSk7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEu
c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IG5hdmlnYXRpb25BY3Rpb24uc2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSgpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAJKHJldmlzaW9uIDIxOTAzMykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
NDEsNiArNzQxLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAog
ICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLm1vZGlmaWVycyA9IGFjdGlvbi0+bW9kaWZpZXJzKCk7
CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEubW91c2VCdXR0b24gPSBhY3Rpb24tPm1vdXNlQnV0
dG9uKCk7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEuc3ludGhldGljQ2xpY2tUeXBlID0gYWN0
aW9uLT5zeW50aGV0aWNDbGlja1R5cGUoKTsKKyAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5jbGlj
a1BvaW50ID0gYWN0aW9uLT5jbGlja1BvaW50KCk7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEu
dXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS51c2Vy
R2VzdHVyZVRva2VuSWRlbnRpZmllcihuYXZpZ2F0aW9uQWN0aW9uLnVzZXJHZXN0dXJlVG9rZW4o
KSk7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEuY2FuSGFuZGxlUmVxdWVzdCA9IHdlYlBhZ2Ut
PmNhbkhhbmRsZVJlcXVlc3QocmVxdWVzdCk7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEuc2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IG5hdmlnYXRpb25BY3Rpb24uc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSgpOwpAQCAtNzg4LDYgKzc4OSw3IEBAIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWQKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb2RpZmll
cnMgPSBhY3Rpb24tPm1vZGlmaWVycygpOwogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLm1vdXNl
QnV0dG9uID0gYWN0aW9uLT5tb3VzZUJ1dHRvbigpOwogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRh
LnN5bnRoZXRpY0NsaWNrVHlwZSA9IGFjdGlvbi0+c3ludGhldGljQ2xpY2tUeXBlKCk7CisgICAg
bmF2aWdhdGlvbkFjdGlvbkRhdGEuY2xpY2tQb2ludCA9IGFjdGlvbi0+Y2xpY2tQb2ludCgpOwog
ICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyID0gV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIobmF2aWdhdGlv
bkFjdGlvbi51c2VyR2VzdHVyZVRva2VuKCkpOwogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLmNh
bkhhbmRsZVJlcXVlc3QgPSB3ZWJQYWdlLT5jYW5IYW5kbGVSZXF1ZXN0KHJlcXVlc3QpOwogICAg
IG5hdmlnYXRpb25BY3Rpb25EYXRhLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBuYXZp
Z2F0aW9uQWN0aW9uLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314864</attachid>
            <date>2017-07-07 13:00:14 -0700</date>
            <delta_ts>2017-07-07 13:44:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174233-20170707130014.patch</filename>
            <type>text/plain</type>
            <size>13790</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxOTI2MCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE3LTA3LTA3ICBNZWdhbiBH
YXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGxvY2F0aW9u
IHRvIE5hdmlnYXRpb25BY3Rpb25EYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzQyMzMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5MTY1NTE4
PgorICAgICAgICAKKyAgICAgICAgQWRkIHRoZSByb290IHZpZXcgbG9jYXRpb24gb2YgYSB0YXAg
dG8gYSBOYXZpZ2F0aW9uQWN0aW9uIHRvIHZlbmQgdG8gU2FmYXJpLgorICAgICAgICAKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvTmF2aWdh
dGlvbkFjdGlvbkRhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0
YTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGE6OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL05hdmlnYXRpb25BY3Rpb25EYXRhLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb24ubW06CisgICAgICAgICgtW1dLTmF2aWdhdGlv
bkFjdGlvbiBkZXNjcmlwdGlvbl0pOgorICAgICAgICAoLVtXS05hdmlnYXRpb25BY3Rpb24gX3Jv
b3RWaWV3Q2xpY2tMb2NhdGlvbl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tO
YXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6cm9vdFZpZXdDbGlja0xvY2F0aW9uRm9yTW91c2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6cm9vdFZpZXdDbGlja0xvY2F0aW9uRm9y
TmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlTmF2aWdh
dGlvbkFjdGlvbjo6SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5o
OgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OnJvb3RW
aWV3Q2xpY2tMb2NhdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNy
ZWF0ZVdpbmRvdyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24pOgorCiAyMDE3LTA3LTA3ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjE5MjM4LCByMjE5
MjM5LCBhbmQgcjIxOTI0MS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXZpZ2F0aW9u
QWN0aW9uRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL05hdmln
YXRpb25BY3Rpb25EYXRhLmNwcAkocmV2aXNpb24gMjE5MDMzKQorKysgU291cmNlL1dlYktpdDIv
U2hhcmVkL05hdmlnYXRpb25BY3Rpb25EYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiAr
MjksNyBAQAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiRGVjb2Rlci5o
IgogI2luY2x1ZGUgIkVuY29kZXIuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTQ0LDYgKzQ1LDcgQEAgdm9pZCBO
YXZpZ2F0aW9uQWN0aW9uRGF0YTo6ZW5jb2RlKElQQzo6RQogICAgIGVuY29kZXIgPDwgY2FuSGFu
ZGxlUmVxdWVzdDsKICAgICBlbmNvZGVyLmVuY29kZUVudW0oc2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSk7CiAgICAgZW5jb2RlciA8PCBkb3dubG9hZEF0dHJpYnV0ZTsKKyAgICBlbmNvZGVy
IDw8IHJvb3RWaWV3Q2xpY2tMb2NhdGlvbjsKIH0KIAogYm9vbCBOYXZpZ2F0aW9uQWN0aW9uRGF0
YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmIHJl
c3VsdCkKQEAgLTY0LDYgKzY2LDggQEAgYm9vbCBOYXZpZ2F0aW9uQWN0aW9uRGF0YTo6ZGVjb2Rl
KElQQzo6RAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShy
ZXN1bHQuZG93bmxvYWRBdHRyaWJ1dGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShyZXN1bHQucm9vdFZpZXdDbGlja0xvY2F0aW9uKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvTmF2aWdhdGlvbkFjdGlvbkRhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvTmF2aWdhdGlvbkFjdGlvbkRhdGEuaAkocmV2aXNpb24gMjE5MDMzKQorKysg
U291cmNlL1dlYktpdDIvU2hhcmVkL05hdmlnYXRpb25BY3Rpb25EYXRhLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgTmF2aWdhdGlvbkFjdGlvbkRhdGFfaAogCiAj
aW5jbHVkZSAiV2ViRXZlbnQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UG9pbnQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4KIAogbmFtZXNwYWNlIElQQyB7CkBA
IC00OCw2ICs0OSw3IEBAIHN0cnVjdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSB7CiAgICAgYm9vbCBj
YW5IYW5kbGVSZXF1ZXN0IHsgZmFsc2UgfTsKICAgICBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgeyBXZWJDb3JlOjpTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyB9OwogICAgIFdURjo6U3Ry
aW5nIGRvd25sb2FkQXR0cmlidXRlOworICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgcm9vdFZpZXdD
bGlja0xvY2F0aW9uOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9BUElOYXZpZ2F0aW9uQWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmgJKHJldmlzaW9uIDIxOTAzMykKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkFjdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC02Myw2ICs2Myw3IEBAIHB1YmxpYzoKICAgICBXZWJLaXQ6OldlYkV2ZW50OjpN
b2RpZmllcnMgbW9kaWZpZXJzKCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0aW9uRGF0
YS5tb2RpZmllcnM7IH0KICAgICBXZWJLaXQ6OldlYk1vdXNlRXZlbnQ6OkJ1dHRvbiBtb3VzZUJ1
dHRvbigpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEubW91c2VCdXR0b247
IH0KICAgICBXZWJLaXQ6OldlYk1vdXNlRXZlbnQ6OlN5bnRoZXRpY0NsaWNrVHlwZSBzeW50aGV0
aWNDbGlja1R5cGUoKSBjb25zdCB7IHJldHVybiBtX25hdmlnYXRpb25BY3Rpb25EYXRhLnN5bnRo
ZXRpY0NsaWNrVHlwZTsgfQorICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgcm9vdFZpZXdDbGlja0xv
Y2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0aW9uRGF0YS5yb290Vmlld0Ns
aWNrTG9jYXRpb247IH0KICAgICBib29sIGNhbkhhbmRsZVJlcXVlc3QoKSBjb25zdCB7IHJldHVy
biBtX25hdmlnYXRpb25BY3Rpb25EYXRhLmNhbkhhbmRsZVJlcXVlc3Q7IH0KICAgICBib29sIHNo
b3VsZE9wZW5FeHRlcm5hbFNjaGVtZXMoKSBjb25zdCB7IHJldHVybiBtX25hdmlnYXRpb25BY3Rp
b25EYXRhLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPT0gV2ViQ29yZTo6U2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkQWxsb3cgfHwgbV9uYXZpZ2F0aW9uQWN0aW9uRGF0
YS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID09IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3k6OlNob3VsZEFsbG93RXh0ZXJuYWxTY2hlbWVzOyB9CiAgICAgYm9vbCBz
aG91bGRPcGVuQXBwTGlua3MoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZE9wZW5BcHBMaW5rcyAm
JiBtX25hdmlnYXRpb25BY3Rpb25EYXRhLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPT0g
V2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkQWxsb3c7IH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9u
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tO
YXZpZ2F0aW9uQWN0aW9uLm1tCShyZXZpc2lvbiAyMTkwMzMpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvbi5tbQkod29ya2luZyBjb3B5KQpA
QCAtMzEsNiArMzEsNyBAQAogI2ltcG9ydCAiTmF2aWdhdGlvbkFjdGlvbkRhdGEuaCIKICNpbXBv
cnQgIldLRnJhbWVJbmZvSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1VzZXJJbml0aWF0ZWRBY3Rp
b25JbnRlcm5hbC5oIgorI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFBvaW50Lmg+CiAjaW1wb3J0IDx3
dGYvUmV0YWluUHRyLmg+CiAKIEBpbXBsZW1lbnRhdGlvbiBXS05hdmlnYXRpb25BY3Rpb24KQEAg
LTEyMywxMiArMTI0LDEyIEBAIC0gKHZvaWQpZGVhbGxvYwogCiAtIChOU1N0cmluZyAqKWRlc2Ny
aXB0aW9uCiB7Ci0gICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVAOiAl
cDsgbmF2aWdhdGlvblR5cGUgPSAlbGQ7IHN5bnRoZXRpY0NsaWNrVHlwZSA9ICVsZDsgcmVxdWVz
dCA9ICVAOyBzb3VyY2VGcmFtZSA9ICVAOyB0YXJnZXRGcmFtZSA9ICVAPiIsIE5TU3RyaW5nRnJv
bUNsYXNzKHNlbGYuY2xhc3MpLCBzZWxmLAorICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAIjwlQDogJXA7IG5hdmlnYXRpb25UeXBlID0gJWxkOyBzeW50aGV0aWNDbGlja1R5
cGUgPSAlbGQ7IHBvc2l0aW9uIHggPSAlLjJmIHk9ICUuMmYgcmVxdWVzdCA9ICVAOyBzb3VyY2VG
cmFtZSA9ICVAOyB0YXJnZXRGcmFtZSA9ICVAPiIsIE5TU3RyaW5nRnJvbUNsYXNzKHNlbGYuY2xh
c3MpLCBzZWxmLAogICAgICAgICAobG9uZylzZWxmLm5hdmlnYXRpb25UeXBlLAogI2lmIFBMQVRG
T1JNKElPUykKLSAgICAgICAgKGxvbmcpc2VsZi5fc3ludGhldGljQ2xpY2tUeXBlLAorICAgICAg
ICAobG9uZylzZWxmLl9zeW50aGV0aWNDbGlja1R5cGUsIHNlbGYuX3Jvb3RWaWV3Q2xpY2tMb2Nh
dGlvbi54LCBzZWxmLl9yb290Vmlld0NsaWNrTG9jYXRpb24ueSwKICNlbHNlCi0gICAgICAgIDBM
LAorICAgICAgICAwTCwgMEwsIDBMLAogI2VuZGlmCiAgICAgICAgIHNlbGYucmVxdWVzdCwgc2Vs
Zi5zb3VyY2VGcmFtZSwgc2VsZi50YXJnZXRGcmFtZV07CiB9CkBAIC0xNjIsNiArMTYzLDExIEBA
IC0gKFdLU3ludGhldGljQ2xpY2tUeXBlKV9zeW50aGV0aWNDbGlja1QKIHsKICAgICByZXR1cm4g
dG9XS1N5bnRoZXRpY0NsaWNrVHlwZShfbmF2aWdhdGlvbkFjdGlvbi0+c3ludGhldGljQ2xpY2tU
eXBlKCkpOwogfQorCistIChDR1BvaW50KV9yb290Vmlld0NsaWNrTG9jYXRpb24KK3sKKyAgICBy
ZXR1cm4gX25hdmlnYXRpb25BY3Rpb24tPnJvb3RWaWV3Q2xpY2tMb2NhdGlvbigpOworfQogI2Vu
ZGlmCiAKICNpZiBQTEFURk9STShNQUMpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvblByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvblByaXZhdGUu
aAkocmV2aXNpb24gMjE5MDMzKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS05hdmlnYXRpb25BY3Rpb25Qcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUx
LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgV0tTeW50aGV0aWNDbAogCiAjaWYgVEFS
R0VUX09TX0lQSE9ORQogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXS1N5bnRoZXRp
Y0NsaWNrVHlwZSBfc3ludGhldGljQ2xpY2tUeXBlIFdLX0FQSV9BVkFJTEFCTEUoaW9zKDEwLjAp
KTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQ0dQb2ludCBfcm9vdFZpZXdDbGlj
a0xvY2F0aW9uIFdLX0FQSV9BVkFJTEFCTEUoaW9zKDExLjApKTsKICNlbmRpZgogCiBAZW5kCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3Bw
CShyZXZpc2lvbiAyMTkwMzMpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY4LDYgKzY4LDE0IEBAIHN0YXRpYyBXZWJNb3VzZUV2ZW50OjpTeW50aGV0aWNDbGlja1R5
cGUKICAgICAKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViTW91c2VFdmVudDo6U3ludGhldGlj
Q2xpY2tUeXBlPihtb3VzZUV2ZW50LT5zeW50aGV0aWNDbGlja1R5cGUoKSk7CiB9CisgICAgCitz
dGF0aWMgV2ViQ29yZTo6RmxvYXRQb2ludCByb290Vmlld0NsaWNrTG9jYXRpb25Gb3JNb3VzZUV2
ZW50KGNvbnN0IE1vdXNlRXZlbnQqIG1vdXNlRXZlbnQpCit7CisgICAgaWYgKCFtb3VzZUV2ZW50
KQorICAgICAgICByZXR1cm4geyB9OworICAgIAorICAgIHJldHVybiBXZWJDb3JlOjpGbG9hdFBv
aW50KG1vdXNlRXZlbnQtPmNsaWVudFgoKSwgbW91c2VFdmVudC0+Y2xpZW50WSgpKTsKK30KIAog
V2ViRXZlbnQ6Ok1vZGlmaWVycyBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246Om1vZGlm
aWVyc0Zvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgbmF2aWdhdGlv
bkFjdGlvbikKIHsKQEAgLTk2LDYgKzEwNCwxMSBAQCBXZWJNb3VzZUV2ZW50OjpTeW50aGV0aWND
bGlja1R5cGUgSW5qZWN0CiB7CiAgICAgcmV0dXJuIHN5bnRoZXRpY0NsaWNrVHlwZUZvck1vdXNl
RXZlbnQobW91c2VFdmVudEZvck5hdmlnYXRpb25BY3Rpb24obmF2aWdhdGlvbkFjdGlvbikpOwog
fQorICAgIAorV2ViQ29yZTo6RmxvYXRQb2ludCBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rp
b246OnJvb3RWaWV3Q2xpY2tMb2NhdGlvbkZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdh
dGlvbkFjdGlvbiYgbmF2aWdhdGlvbkFjdGlvbikKK3sKKyAgICByZXR1cm4gcm9vdFZpZXdDbGlj
a0xvY2F0aW9uRm9yTW91c2VFdmVudChtb3VzZUV2ZW50Rm9yTmF2aWdhdGlvbkFjdGlvbihuYXZp
Z2F0aW9uQWN0aW9uKSk7Cit9CiAKIFJlZjxJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24+
IEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdlYkZyYW1lKiBmcmFtZSwg
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBSZWZQdHI8Rm9ybVN0YXRlPiYmIGZvcm1T
dGF0ZSkKIHsKQEAgLTExNCw2ICsxMjcsNyBAQCBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rp
b246OkluamVjdGVkCiAgICAgICAgIG1faGl0VGVzdFJlc3VsdCA9IEluamVjdGVkQnVuZGxlSGl0
VGVzdFJlc3VsdDo6Y3JlYXRlKGZyYW1lLT5jb3JlRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCkuaGl0
VGVzdFJlc3VsdEF0UG9pbnQobW91c2VFdmVudC0+YWJzb2x1dGVMb2NhdGlvbigpKSk7CiAgICAg
ICAgIG1fbW91c2VCdXR0b24gICA9IG1vdXNlQnV0dG9uRm9yTW91c2VFdmVudChtb3VzZUV2ZW50
KTsKICAgICAgICAgbV9zeW50aGV0aWNDbGlja1R5cGUgPSBzeW50aGV0aWNDbGlja1R5cGVGb3JO
YXZpZ2F0aW9uQWN0aW9uKG5hdmlnYXRpb25BY3Rpb24pOworICAgICAgICBtX3Jvb3RWaWV3Q2xp
Y2tMb2NhdGlvbiA9IHJvb3RWaWV3Q2xpY2tMb2NhdGlvbkZvck5hdmlnYXRpb25BY3Rpb24obmF2
aWdhdGlvbkFjdGlvbik7CiAgICAgfQogCiAgICAgaWYgKGZvcm1TdGF0ZSkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0
aW9uQWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaAkocmV2aXNpb24gMjE5
MDMzKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTMgKzUwLDE1
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmllcnNGb3JO
YXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mKTsKICAgICBz
dGF0aWMgV2ViTW91c2VFdmVudDo6QnV0dG9uIG1vdXNlQnV0dG9uRm9yTmF2aWdhdGlvbkFjdGlv
bihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJik7CiAgICAgc3RhdGljIFdlYk1vdXNl
RXZlbnQ6OlN5bnRoZXRpY0NsaWNrVHlwZSBzeW50aGV0aWNDbGlja1R5cGVGb3JOYXZpZ2F0aW9u
QWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mKTsKLQorICAgIHN0YXRpYyBX
ZWJDb3JlOjpGbG9hdFBvaW50IHJvb3RWaWV3Q2xpY2tMb2NhdGlvbkZvck5hdmlnYXRpb25BY3Rp
b24oY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYpOworICAgIAogICAgIFdlYkNvcmU6
Ok5hdmlnYXRpb25UeXBlIG5hdmlnYXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0
aW9uVHlwZTsgfQogICAgIFdlYkV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJzKCkgY29uc3QgeyBy
ZXR1cm4gbV9tb2RpZmllcnM7IH0KICAgICBXZWJNb3VzZUV2ZW50OjpCdXR0b24gbW91c2VCdXR0
b24oKSBjb25zdCB7IHJldHVybiBtX21vdXNlQnV0dG9uOyB9CiAgICAgSW5qZWN0ZWRCdW5kbGVI
aXRUZXN0UmVzdWx0KiBoaXRUZXN0UmVzdWx0KCkgY29uc3QgeyByZXR1cm4gbV9oaXRUZXN0UmVz
dWx0LmdldCgpOyB9CiAgICAgSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlKiBmb3JtRWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fZm9ybUVsZW1lbnQuZ2V0KCk7IH0KICAgICBXZWJNb3VzZUV2ZW50
OjpTeW50aGV0aWNDbGlja1R5cGUgc3ludGhldGljQ2xpY2tUeXBlKCkgY29uc3QgeyByZXR1cm4g
bV9zeW50aGV0aWNDbGlja1R5cGU7IH0KKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IHJvb3RWaWV3
Q2xpY2tMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdFZpZXdDbGlja0xvY2F0aW9uOyB9
CiAKICAgICBib29sIHNob3VsZE9wZW5FeHRlcm5hbFVSTHMoKSBjb25zdCB7IHJldHVybiBtX3No
b3VsZE9wZW5FeHRlcm5hbFVSTHM7IH0KICAgICBib29sIHNob3VsZFRyeUFwcExpbmtzKCkgY29u
c3QgeyByZXR1cm4gbV9zaG91bGRUcnlBcHBMaW5rczsgfQpAQCAtNjksNiArNzEsNyBAQCBwcml2
YXRlOgogICAgIFdlYkV2ZW50OjpNb2RpZmllcnMgbV9tb2RpZmllcnM7CiAgICAgV2ViTW91c2VF
dmVudDo6QnV0dG9uIG1fbW91c2VCdXR0b247CiAgICAgV2ViTW91c2VFdmVudDo6U3ludGhldGlj
Q2xpY2tUeXBlIG1fc3ludGhldGljQ2xpY2tUeXBlIHsgV2ViTW91c2VFdmVudDo6Tm9UYXAgfTsK
KyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IG1fcm9vdFZpZXdDbGlja0xvY2F0aW9uOwogICAgIFJl
ZlB0cjxJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ+IG1faGl0VGVzdFJlc3VsdDsKICAgICBS
ZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiBtX2Zvcm1FbGVtZW50OwogICAgIEF0b21p
Y1N0cmluZyBtX2Rvd25sb2FkQXR0cmlidXRlOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cAkocmV2aXNpb24gMjE5MDMzKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDAsNiArMjQw
LDcgQEAgUGFnZSogV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3coRnJhbQogICAgIG5hdmln
YXRpb25BY3Rpb25EYXRhLm1vZGlmaWVycyA9IEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlv
bjo6bW9kaWZpZXJzRm9yTmF2aWdhdGlvbkFjdGlvbihuYXZpZ2F0aW9uQWN0aW9uKTsKICAgICBu
YXZpZ2F0aW9uQWN0aW9uRGF0YS5tb3VzZUJ1dHRvbiA9IEluamVjdGVkQnVuZGxlTmF2aWdhdGlv
bkFjdGlvbjo6bW91c2VCdXR0b25Gb3JOYXZpZ2F0aW9uQWN0aW9uKG5hdmlnYXRpb25BY3Rpb24p
OwogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLnN5bnRoZXRpY0NsaWNrVHlwZSA9IEluamVjdGVk
QnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6c3ludGhldGljQ2xpY2tUeXBlRm9yTmF2aWdhdGlvbkFj
dGlvbihuYXZpZ2F0aW9uQWN0aW9uKTsKKyAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5yb290Vmll
d0NsaWNrTG9jYXRpb24gPSBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OnJvb3RWaWV3
Q2xpY2tMb2NhdGlvbkZvck5hdmlnYXRpb25BY3Rpb24obmF2aWdhdGlvbkFjdGlvbik7CiAgICAg
bmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIgPSB3ZWJQcm9j
ZXNzLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKG5hdmlnYXRpb25BY3Rpb24udXNlckdlc3R1
cmVUb2tlbigpKTsKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5jYW5IYW5kbGVSZXF1ZXN0ID0g
bV9wYWdlLmNhbkhhbmRsZVJlcXVlc3QocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSk7CiAgICAg
bmF2aWdhdGlvbkFjdGlvbkRhdGEuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IG5hdmln
YXRpb25BY3Rpb24uc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpOwpJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDIxOTAzMykKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03NDEsNiArNzQxLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLm1vZGlmaWVycyA9
IGFjdGlvbi0+bW9kaWZpZXJzKCk7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEubW91c2VCdXR0
b24gPSBhY3Rpb24tPm1vdXNlQnV0dG9uKCk7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEuc3lu
dGhldGljQ2xpY2tUeXBlID0gYWN0aW9uLT5zeW50aGV0aWNDbGlja1R5cGUoKTsKKyAgICBuYXZp
Z2F0aW9uQWN0aW9uRGF0YS5yb290Vmlld0NsaWNrTG9jYXRpb24gPSBhY3Rpb24tPnJvb3RWaWV3
Q2xpY2tMb2NhdGlvbigpOwogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLnVzZXJHZXN0dXJlVG9r
ZW5JZGVudGlmaWVyID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudXNlckdlc3R1cmVUb2tlbklk
ZW50aWZpZXIobmF2aWdhdGlvbkFjdGlvbi51c2VyR2VzdHVyZVRva2VuKCkpOwogICAgIG5hdmln
YXRpb25BY3Rpb25EYXRhLmNhbkhhbmRsZVJlcXVlc3QgPSB3ZWJQYWdlLT5jYW5IYW5kbGVSZXF1
ZXN0KHJlcXVlc3QpOwogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLnNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3kgPSBuYXZpZ2F0aW9uQWN0aW9uLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3koKTsKQEAgLTc4OCw2ICs3ODksNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERlY2lkCiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEubW9kaWZpZXJzID0gYWN0aW9uLT5t
b2RpZmllcnMoKTsKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb3VzZUJ1dHRvbiA9IGFjdGlv
bi0+bW91c2VCdXR0b24oKTsKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5zeW50aGV0aWNDbGlj
a1R5cGUgPSBhY3Rpb24tPnN5bnRoZXRpY0NsaWNrVHlwZSgpOworICAgIG5hdmlnYXRpb25BY3Rp
b25EYXRhLnJvb3RWaWV3Q2xpY2tMb2NhdGlvbiA9IGFjdGlvbi0+cm9vdFZpZXdDbGlja0xvY2F0
aW9uKCk7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZp
ZXIgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcihu
YXZpZ2F0aW9uQWN0aW9uLnVzZXJHZXN0dXJlVG9rZW4oKSk7CiAgICAgbmF2aWdhdGlvbkFjdGlv
bkRhdGEuY2FuSGFuZGxlUmVxdWVzdCA9IHdlYlBhZ2UtPmNhbkhhbmRsZVJlcXVlc3QocmVxdWVz
dCk7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSA9IG5hdmlnYXRpb25BY3Rpb24uc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314871</attachid>
            <date>2017-07-07 13:44:40 -0700</date>
            <delta_ts>2017-07-07 15:33:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174233-20170707134439.patch</filename>
            <type>text/plain</type>
            <size>14115</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxOTI2MCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE3LTA3LTA3ICBNZWdhbiBH
YXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGxvY2F0aW9u
IHRvIE5hdmlnYXRpb25BY3Rpb25EYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzQyMzMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5MTY1NTE4
PgorICAgICAgICAKKyAgICAgICAgQWRkIHRoZSByb290IHZpZXcgbG9jYXRpb24gb2YgYSB0YXAg
dG8gYSBOYXZpZ2F0aW9uQWN0aW9uIHRvIHZlbmQgdG8gU2FmYXJpLgorICAgICAgICAKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvTmF2aWdh
dGlvbkFjdGlvbkRhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0
YTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGE6OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL05hdmlnYXRpb25BY3Rpb25EYXRhLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb24ubW06CisgICAgICAgICgtW1dLTmF2aWdhdGlv
bkFjdGlvbiBkZXNjcmlwdGlvbl0pOgorICAgICAgICAoLVtXS05hdmlnYXRpb25BY3Rpb24gX3Jv
b3RWaWV3Q2xpY2tMb2NhdGlvbl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tO
YXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6cm9vdFZpZXdDbGlja0xvY2F0aW9uRm9yTW91c2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6cm9vdFZpZXdDbGlja0xvY2F0aW9uRm9y
TmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlTmF2aWdh
dGlvbkFjdGlvbjo6SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5o
OgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OnJvb3RW
aWV3Q2xpY2tMb2NhdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNy
ZWF0ZVdpbmRvdyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24pOgorCiAyMDE3LTA3LTA3ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjE5MjM4LCByMjE5
MjM5LCBhbmQgcjIxOTI0MS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXZpZ2F0aW9u
QWN0aW9uRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL05hdmln
YXRpb25BY3Rpb25EYXRhLmNwcAkocmV2aXNpb24gMjE5MDMzKQorKysgU291cmNlL1dlYktpdDIv
U2hhcmVkL05hdmlnYXRpb25BY3Rpb25EYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiAr
MjksNyBAQAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiRGVjb2Rlci5o
IgogI2luY2x1ZGUgIkVuY29kZXIuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTQ0LDYgKzQ1LDcgQEAgdm9pZCBO
YXZpZ2F0aW9uQWN0aW9uRGF0YTo6ZW5jb2RlKElQQzo6RQogICAgIGVuY29kZXIgPDwgY2FuSGFu
ZGxlUmVxdWVzdDsKICAgICBlbmNvZGVyLmVuY29kZUVudW0oc2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSk7CiAgICAgZW5jb2RlciA8PCBkb3dubG9hZEF0dHJpYnV0ZTsKKyAgICBlbmNvZGVy
IDw8IGNsaWNrTG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXM7CiB9CiAKIGJvb2wgTmF2aWdh
dGlvbkFjdGlvbkRhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIE5hdmlnYXRpb25B
Y3Rpb25EYXRhJiByZXN1bHQpCkBAIC02NCw2ICs2Niw4IEBAIGJvb2wgTmF2aWdhdGlvbkFjdGlv
bkRhdGE6OmRlY29kZShJUEM6OkQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0LmRvd25sb2FkQXR0cmlidXRlKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNsaWNrTG9jYXRpb25JblJvb3RW
aWV3Q29vcmRpbmF0ZXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1
ZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXZpZ2F0aW9uQWN0aW9uRGF0YS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXZpZ2F0aW9uQWN0aW9uRGF0
YS5oCShyZXZpc2lvbiAyMTkwMzMpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF2aWdhdGlv
bkFjdGlvbkRhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBO
YXZpZ2F0aW9uQWN0aW9uRGF0YV9oCiAKICNpbmNsdWRlICJXZWJFdmVudC5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvRmxvYXRQb2ludC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBl
cy5oPgogCiBuYW1lc3BhY2UgSVBDIHsKQEAgLTQ4LDYgKzQ5LDcgQEAgc3RydWN0IE5hdmlnYXRp
b25BY3Rpb25EYXRhIHsKICAgICBib29sIGNhbkhhbmRsZVJlcXVlc3QgeyBmYWxzZSB9OwogICAg
IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSB7IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3Vs
ZE5vdEFsbG93IH07CiAgICAgV1RGOjpTdHJpbmcgZG93bmxvYWRBdHRyaWJ1dGU7CisgICAgV2Vi
Q29yZTo6RmxvYXRQb2ludCBjbGlja0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzOwogfTsK
IAogfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElOYXZp
Z2F0aW9uQWN0aW9uLmgJKHJldmlzaW9uIDIxOTAzMykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkFjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2
Myw3IEBAIHB1YmxpYzoKICAgICBXZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJz
KCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb2RpZmllcnM7IH0KICAg
ICBXZWJLaXQ6OldlYk1vdXNlRXZlbnQ6OkJ1dHRvbiBtb3VzZUJ1dHRvbigpIGNvbnN0IHsgcmV0
dXJuIG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEubW91c2VCdXR0b247IH0KICAgICBXZWJLaXQ6Oldl
Yk1vdXNlRXZlbnQ6OlN5bnRoZXRpY0NsaWNrVHlwZSBzeW50aGV0aWNDbGlja1R5cGUoKSBjb25z
dCB7IHJldHVybiBtX25hdmlnYXRpb25BY3Rpb25EYXRhLnN5bnRoZXRpY0NsaWNrVHlwZTsgfQor
ICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgY2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRl
cygpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEuY2xpY2tMb2NhdGlvbklu
Um9vdFZpZXdDb29yZGluYXRlczsgfQogICAgIGJvb2wgY2FuSGFuZGxlUmVxdWVzdCgpIGNvbnN0
IHsgcmV0dXJuIG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEuY2FuSGFuZGxlUmVxdWVzdDsgfQogICAg
IGJvb2wgc2hvdWxkT3BlbkV4dGVybmFsU2NoZW1lcygpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdh
dGlvbkFjdGlvbkRhdGEuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9PSBXZWJDb3JlOjpT
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGRBbGxvdyB8fCBtX25hdmlnYXRpb25B
Y3Rpb25EYXRhLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPT0gV2ViQ29yZTo6U2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkQWxsb3dFeHRlcm5hbFNjaGVtZXM7IH0KICAg
ICBib29sIHNob3VsZE9wZW5BcHBMaW5rcygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkT3BlbkFw
cExpbmtzICYmIG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSA9PSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGRBbGxv
dzsgfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRp
b25BY3Rpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS05hdmlnYXRpb25BY3Rpb24ubW0JKHJldmlzaW9uIDIxOTAzMykKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW1wb3J0ICJOYXZpZ2F0aW9uQWN0aW9uRGF0YS5o
IgogI2ltcG9ydCAiV0tGcmFtZUluZm9JbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLVXNlckluaXRp
YXRlZEFjdGlvbkludGVybmFsLmgiCisjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UG9pbnQuaD4KICNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogQGltcGxlbWVudGF0aW9uIFdLTmF2aWdhdGlvbkFj
dGlvbgpAQCAtMTIzLDEyICsxMjQsMTIgQEAgLSAodm9pZClkZWFsbG9jCiAKIC0gKE5TU3RyaW5n
ICopZGVzY3JpcHRpb24KIHsKLSAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
QCI8JUA6ICVwOyBuYXZpZ2F0aW9uVHlwZSA9ICVsZDsgc3ludGhldGljQ2xpY2tUeXBlID0gJWxk
OyByZXF1ZXN0ID0gJUA7IHNvdXJjZUZyYW1lID0gJUA7IHRhcmdldEZyYW1lID0gJUA+IiwgTlNT
dHJpbmdGcm9tQ2xhc3Moc2VsZi5jbGFzcyksIHNlbGYsCisgICAgcmV0dXJuIFtOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiPCVAOiAlcDsgbmF2aWdhdGlvblR5cGUgPSAlbGQ7IHN5bnRoZXRp
Y0NsaWNrVHlwZSA9ICVsZDsgcG9zaXRpb24geCA9ICUuMmYgeT0gJS4yZiByZXF1ZXN0ID0gJUA7
IHNvdXJjZUZyYW1lID0gJUA7IHRhcmdldEZyYW1lID0gJUA+IiwgTlNTdHJpbmdGcm9tQ2xhc3Mo
c2VsZi5jbGFzcyksIHNlbGYsCiAgICAgICAgIChsb25nKXNlbGYubmF2aWdhdGlvblR5cGUsCiAj
aWYgUExBVEZPUk0oSU9TKQotICAgICAgICAobG9uZylzZWxmLl9zeW50aGV0aWNDbGlja1R5cGUs
CisgICAgICAgIChsb25nKXNlbGYuX3N5bnRoZXRpY0NsaWNrVHlwZSwgc2VsZi5fY2xpY2tMb2Nh
dGlvbkluUm9vdFZpZXdDb29yZGluYXRlcy54LCBzZWxmLl9jbGlja0xvY2F0aW9uSW5Sb290Vmll
d0Nvb3JkaW5hdGVzLnksCiAjZWxzZQotICAgICAgICAwTCwKKyAgICAgICAgMEwsIDBMLCAwTCwK
ICNlbmRpZgogICAgICAgICBzZWxmLnJlcXVlc3QsIHNlbGYuc291cmNlRnJhbWUsIHNlbGYudGFy
Z2V0RnJhbWVdOwogfQpAQCAtMTYyLDYgKzE2MywxMSBAQCAtIChXS1N5bnRoZXRpY0NsaWNrVHlw
ZSlfc3ludGhldGljQ2xpY2tUCiB7CiAgICAgcmV0dXJuIHRvV0tTeW50aGV0aWNDbGlja1R5cGUo
X25hdmlnYXRpb25BY3Rpb24tPnN5bnRoZXRpY0NsaWNrVHlwZSgpKTsKIH0KKworLSAoQ0dQb2lu
dClfY2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlcworeworICAgIHJldHVybiBfbmF2
aWdhdGlvbkFjdGlvbi0+Y2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlcygpOworfQog
I2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvblByaXZhdGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvblByaXZh
dGUuaAkocmV2aXNpb24gMjE5MDMzKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS05hdmlnYXRpb25BY3Rpb25Qcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYg
KzUxLDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgV0tTeW50aGV0aWNDbAogCiAjaWYg
VEFSR0VUX09TX0lQSE9ORQogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXS1N5bnRo
ZXRpY0NsaWNrVHlwZSBfc3ludGhldGljQ2xpY2tUeXBlIFdLX0FQSV9BVkFJTEFCTEUoaW9zKDEw
LjApKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQ0dQb2ludCBfY2xpY2tMb2Nh
dGlvbkluUm9vdFZpZXdDb29yZGluYXRlcyBXS19BUElfQVZBSUxBQkxFKGlvcygxMS4wKSk7CiAj
ZW5kaWYKIAogQGVuZApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZp
Z2F0aW9uQWN0aW9uLmNwcAkocmV2aXNpb24gMjE5MDMzKQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02OCw2ICs2OCwxNCBAQCBzdGF0aWMgV2ViTW91c2VFdmVudDo6
U3ludGhldGljQ2xpY2tUeXBlCiAgICAgCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYk1vdXNl
RXZlbnQ6OlN5bnRoZXRpY0NsaWNrVHlwZT4obW91c2VFdmVudC0+c3ludGhldGljQ2xpY2tUeXBl
KCkpOwogfQorICAgIAorc3RhdGljIFdlYkNvcmU6OkZsb2F0UG9pbnQgY2xpY2tMb2NhdGlvbklu
Um9vdFZpZXdDb29yZGluYXRlc0Zvck1vdXNlRXZlbnQoY29uc3QgTW91c2VFdmVudCogbW91c2VF
dmVudCkKK3sKKyAgICBpZiAoIW1vdXNlRXZlbnQpCisgICAgICAgIHJldHVybiB7IH07CisgICAg
CisgICAgcmV0dXJuIFdlYkNvcmU6OkZsb2F0UG9pbnQobW91c2VFdmVudC0+Y2xpZW50WCgpLCBt
b3VzZUV2ZW50LT5jbGllbnRZKCkpOworfQogCiBXZWJFdmVudDo6TW9kaWZpZXJzIEluamVjdGVk
QnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6bW9kaWZpZXJzRm9yTmF2aWdhdGlvbkFjdGlvbihjb25z
dCBOYXZpZ2F0aW9uQWN0aW9uJiBuYXZpZ2F0aW9uQWN0aW9uKQogewpAQCAtOTYsNiArMTA0LDEx
IEBAIFdlYk1vdXNlRXZlbnQ6OlN5bnRoZXRpY0NsaWNrVHlwZSBJbmplY3QKIHsKICAgICByZXR1
cm4gc3ludGhldGljQ2xpY2tUeXBlRm9yTW91c2VFdmVudChtb3VzZUV2ZW50Rm9yTmF2aWdhdGlv
bkFjdGlvbihuYXZpZ2F0aW9uQWN0aW9uKSk7CiB9CisgICAgCitXZWJDb3JlOjpGbG9hdFBvaW50
IEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6Y2xpY2tMb2NhdGlvbkluUm9vdFZpZXdD
b29yZGluYXRlc0Zvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgbmF2
aWdhdGlvbkFjdGlvbikKK3sKKyAgICByZXR1cm4gY2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29y
ZGluYXRlc0Zvck1vdXNlRXZlbnQobW91c2VFdmVudEZvck5hdmlnYXRpb25BY3Rpb24obmF2aWdh
dGlvbkFjdGlvbikpOworfQogCiBSZWY8SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uPiBJ
bmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXZWJGcmFtZSogZnJhbWUsIGNv
bnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgUmVmUHRyPEZvcm1TdGF0ZT4mJiBmb3JtU3Rh
dGUpCiB7CkBAIC0xMTQsNiArMTI3LDcgQEAgSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9u
OjpJbmplY3RlZAogICAgICAgICBtX2hpdFRlc3RSZXN1bHQgPSBJbmplY3RlZEJ1bmRsZUhpdFRl
c3RSZXN1bHQ6OmNyZWF0ZShmcmFtZS0+Y29yZUZyYW1lKCktPmV2ZW50SGFuZGxlcigpLmhpdFRl
c3RSZXN1bHRBdFBvaW50KG1vdXNlRXZlbnQtPmFic29sdXRlTG9jYXRpb24oKSkpOwogICAgICAg
ICBtX21vdXNlQnV0dG9uICAgPSBtb3VzZUJ1dHRvbkZvck1vdXNlRXZlbnQobW91c2VFdmVudCk7
CiAgICAgICAgIG1fc3ludGhldGljQ2xpY2tUeXBlID0gc3ludGhldGljQ2xpY2tUeXBlRm9yTmF2
aWdhdGlvbkFjdGlvbihuYXZpZ2F0aW9uQWN0aW9uKTsKKyAgICAgICAgbV9jbGlja0xvY2F0aW9u
SW5Sb290Vmlld0Nvb3JkaW5hdGVzID0gY2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRl
c0Zvck5hdmlnYXRpb25BY3Rpb24obmF2aWdhdGlvbkFjdGlvbik7CiAgICAgfQogCiAgICAgaWYg
KGZvcm1TdGF0ZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRp
b25BY3Rpb24uaAkocmV2aXNpb24gMjE5MDMzKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTAsMTMgKzUwLDE1IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViRXZlbnQ6
Ok1vZGlmaWVycyBtb2RpZmllcnNGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5h
dmlnYXRpb25BY3Rpb24mKTsKICAgICBzdGF0aWMgV2ViTW91c2VFdmVudDo6QnV0dG9uIG1vdXNl
QnV0dG9uRm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9u
Jik7CiAgICAgc3RhdGljIFdlYk1vdXNlRXZlbnQ6OlN5bnRoZXRpY0NsaWNrVHlwZSBzeW50aGV0
aWNDbGlja1R5cGVGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25B
Y3Rpb24mKTsKLQorICAgIHN0YXRpYyBXZWJDb3JlOjpGbG9hdFBvaW50IGNsaWNrTG9jYXRpb25J
blJvb3RWaWV3Q29vcmRpbmF0ZXNGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5h
dmlnYXRpb25BY3Rpb24mKTsKKyAgICAKICAgICBXZWJDb3JlOjpOYXZpZ2F0aW9uVHlwZSBuYXZp
Z2F0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdhdGlvblR5cGU7IH0KICAgICBXZWJF
dmVudDo6TW9kaWZpZXJzIG1vZGlmaWVycygpIGNvbnN0IHsgcmV0dXJuIG1fbW9kaWZpZXJzOyB9
CiAgICAgV2ViTW91c2VFdmVudDo6QnV0dG9uIG1vdXNlQnV0dG9uKCkgY29uc3QgeyByZXR1cm4g
bV9tb3VzZUJ1dHRvbjsgfQogICAgIEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdCogaGl0VGVz
dFJlc3VsdCgpIGNvbnN0IHsgcmV0dXJuIG1faGl0VGVzdFJlc3VsdC5nZXQoKTsgfQogICAgIElu
amVjdGVkQnVuZGxlTm9kZUhhbmRsZSogZm9ybUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2Zv
cm1FbGVtZW50LmdldCgpOyB9CiAgICAgV2ViTW91c2VFdmVudDo6U3ludGhldGljQ2xpY2tUeXBl
IHN5bnRoZXRpY0NsaWNrVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3ludGhldGljQ2xpY2tUeXBl
OyB9CisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBjbGlja0xvY2F0aW9uSW5Sb290Vmlld0Nvb3Jk
aW5hdGVzKCkgY29uc3QgeyByZXR1cm4gbV9jbGlja0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5h
dGVzOyB9CiAKICAgICBib29sIHNob3VsZE9wZW5FeHRlcm5hbFVSTHMoKSBjb25zdCB7IHJldHVy
biBtX3Nob3VsZE9wZW5FeHRlcm5hbFVSTHM7IH0KICAgICBib29sIHNob3VsZFRyeUFwcExpbmtz
KCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRUcnlBcHBMaW5rczsgfQpAQCAtNjksNiArNzEsNyBA
QCBwcml2YXRlOgogICAgIFdlYkV2ZW50OjpNb2RpZmllcnMgbV9tb2RpZmllcnM7CiAgICAgV2Vi
TW91c2VFdmVudDo6QnV0dG9uIG1fbW91c2VCdXR0b247CiAgICAgV2ViTW91c2VFdmVudDo6U3lu
dGhldGljQ2xpY2tUeXBlIG1fc3ludGhldGljQ2xpY2tUeXBlIHsgV2ViTW91c2VFdmVudDo6Tm9U
YXAgfTsKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IG1fY2xpY2tMb2NhdGlvbkluUm9vdFZpZXdD
b29yZGluYXRlczsKICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0PiBtX2hp
dFRlc3RSZXN1bHQ7CiAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gbV9mb3Jt
RWxlbWVudDsKICAgICBBdG9taWNTdHJpbmcgbV9kb3dubG9hZEF0dHJpYnV0ZTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHAJKHJldmlzaW9uIDIxOTAzMykKKysrIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjQwLDYgKzI0MCw3IEBAIFBhZ2UqIFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlV2lu
ZG93KEZyYW0KICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb2RpZmllcnMgPSBJbmplY3RlZEJ1
bmRsZU5hdmlnYXRpb25BY3Rpb246Om1vZGlmaWVyc0Zvck5hdmlnYXRpb25BY3Rpb24obmF2aWdh
dGlvbkFjdGlvbik7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEubW91c2VCdXR0b24gPSBJbmpl
Y3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246Om1vdXNlQnV0dG9uRm9yTmF2aWdhdGlvbkFjdGlv
bihuYXZpZ2F0aW9uQWN0aW9uKTsKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5zeW50aGV0aWND
bGlja1R5cGUgPSBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OnN5bnRoZXRpY0NsaWNr
VHlwZUZvck5hdmlnYXRpb25BY3Rpb24obmF2aWdhdGlvbkFjdGlvbik7CisgICAgbmF2aWdhdGlv
bkFjdGlvbkRhdGEuY2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlcyA9IEluamVjdGVk
QnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6Y2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRl
c0Zvck5hdmlnYXRpb25BY3Rpb24obmF2aWdhdGlvbkFjdGlvbik7CiAgICAgbmF2aWdhdGlvbkFj
dGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIgPSB3ZWJQcm9jZXNzLnVzZXJHZXN0
dXJlVG9rZW5JZGVudGlmaWVyKG5hdmlnYXRpb25BY3Rpb24udXNlckdlc3R1cmVUb2tlbigpKTsK
ICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5jYW5IYW5kbGVSZXF1ZXN0ID0gbV9wYWdlLmNhbkhh
bmRsZVJlcXVlc3QocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSk7CiAgICAgbmF2aWdhdGlvbkFj
dGlvbkRhdGEuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IG5hdmlnYXRpb25BY3Rpb24u
c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDIxOTAzMykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03NDEsNiArNzQxLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEZWNpZAogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLm1vZGlmaWVycyA9IGFjdGlvbi0+bW9k
aWZpZXJzKCk7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEubW91c2VCdXR0b24gPSBhY3Rpb24t
Pm1vdXNlQnV0dG9uKCk7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEuc3ludGhldGljQ2xpY2tU
eXBlID0gYWN0aW9uLT5zeW50aGV0aWNDbGlja1R5cGUoKTsKKyAgICBuYXZpZ2F0aW9uQWN0aW9u
RGF0YS5jbGlja0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzID0gYWN0aW9uLT5jbGlja0xv
Y2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzKCk7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEu
dXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS51c2Vy
R2VzdHVyZVRva2VuSWRlbnRpZmllcihuYXZpZ2F0aW9uQWN0aW9uLnVzZXJHZXN0dXJlVG9rZW4o
KSk7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEuY2FuSGFuZGxlUmVxdWVzdCA9IHdlYlBhZ2Ut
PmNhbkhhbmRsZVJlcXVlc3QocmVxdWVzdCk7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEuc2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IG5hdmlnYXRpb25BY3Rpb24uc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSgpOwpAQCAtNzg4LDYgKzc4OSw3IEBAIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWQKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb2RpZmll
cnMgPSBhY3Rpb24tPm1vZGlmaWVycygpOwogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLm1vdXNl
QnV0dG9uID0gYWN0aW9uLT5tb3VzZUJ1dHRvbigpOwogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRh
LnN5bnRoZXRpY0NsaWNrVHlwZSA9IGFjdGlvbi0+c3ludGhldGljQ2xpY2tUeXBlKCk7CisgICAg
bmF2aWdhdGlvbkFjdGlvbkRhdGEuY2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlcyA9
IGFjdGlvbi0+Y2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlcygpOwogICAgIG5hdmln
YXRpb25BY3Rpb25EYXRhLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyID0gV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIobmF2aWdhdGlvbkFjdGlvbi51
c2VyR2VzdHVyZVRva2VuKCkpOwogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLmNhbkhhbmRsZVJl
cXVlc3QgPSB3ZWJQYWdlLT5jYW5IYW5kbGVSZXF1ZXN0KHJlcXVlc3QpOwogICAgIG5hdmlnYXRp
b25BY3Rpb25EYXRhLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBuYXZpZ2F0aW9uQWN0
aW9uLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314884</attachid>
            <date>2017-07-07 15:33:30 -0700</date>
            <delta_ts>2017-07-07 16:11:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174233-20170707153329.patch</filename>
            <type>text/plain</type>
            <size>14186</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxOTI2MCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE3LTA3LTA3ICBNZWdhbiBH
YXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGxvY2F0aW9u
IHRvIE5hdmlnYXRpb25BY3Rpb25EYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzQyMzMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5MTY1NTE4
PgorICAgICAgICAKKyAgICAgICAgQWRkIHRoZSByb290IHZpZXcgbG9jYXRpb24gb2YgYSB0YXAg
dG8gYSBOYXZpZ2F0aW9uQWN0aW9uIHRvIHZlbmQgdG8gU2FmYXJpLgorICAgICAgICAKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvTmF2aWdh
dGlvbkFjdGlvbkRhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0
YTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGE6OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL05hdmlnYXRpb25BY3Rpb25EYXRhLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb24ubW06CisgICAgICAgICgtW1dLTmF2aWdhdGlv
bkFjdGlvbiBkZXNjcmlwdGlvbl0pOgorICAgICAgICAoLVtXS05hdmlnYXRpb25BY3Rpb24gX3Jv
b3RWaWV3Q2xpY2tMb2NhdGlvbl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tO
YXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6cm9vdFZpZXdDbGlja0xvY2F0aW9uRm9yTW91c2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6cm9vdFZpZXdDbGlja0xvY2F0aW9uRm9y
TmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlTmF2aWdh
dGlvbkFjdGlvbjo6SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5o
OgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OnJvb3RW
aWV3Q2xpY2tMb2NhdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNy
ZWF0ZVdpbmRvdyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24pOgorCiAyMDE3LTA3LTA3ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjE5MjM4LCByMjE5
MjM5LCBhbmQgcjIxOTI0MS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXZpZ2F0aW9u
QWN0aW9uRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL05hdmln
YXRpb25BY3Rpb25EYXRhLmNwcAkocmV2aXNpb24gMjE5MDMzKQorKysgU291cmNlL1dlYktpdDIv
U2hhcmVkL05hdmlnYXRpb25BY3Rpb25EYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiAr
MjksNyBAQAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiRGVjb2Rlci5o
IgogI2luY2x1ZGUgIkVuY29kZXIuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTQ0LDYgKzQ1LDcgQEAgdm9pZCBO
YXZpZ2F0aW9uQWN0aW9uRGF0YTo6ZW5jb2RlKElQQzo6RQogICAgIGVuY29kZXIgPDwgY2FuSGFu
ZGxlUmVxdWVzdDsKICAgICBlbmNvZGVyLmVuY29kZUVudW0oc2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSk7CiAgICAgZW5jb2RlciA8PCBkb3dubG9hZEF0dHJpYnV0ZTsKKyAgICBlbmNvZGVy
IDw8IGNsaWNrTG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXM7CiB9CiAKIGJvb2wgTmF2aWdh
dGlvbkFjdGlvbkRhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIE5hdmlnYXRpb25B
Y3Rpb25EYXRhJiByZXN1bHQpCkBAIC02NCw2ICs2Niw4IEBAIGJvb2wgTmF2aWdhdGlvbkFjdGlv
bkRhdGE6OmRlY29kZShJUEM6OkQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0LmRvd25sb2FkQXR0cmlidXRlKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNsaWNrTG9jYXRpb25JblJvb3RW
aWV3Q29vcmRpbmF0ZXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1
ZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXZpZ2F0aW9uQWN0aW9uRGF0YS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXZpZ2F0aW9uQWN0aW9uRGF0
YS5oCShyZXZpc2lvbiAyMTkwMzMpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF2aWdhdGlv
bkFjdGlvbkRhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBO
YXZpZ2F0aW9uQWN0aW9uRGF0YV9oCiAKICNpbmNsdWRlICJXZWJFdmVudC5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvRmxvYXRQb2ludC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBl
cy5oPgogCiBuYW1lc3BhY2UgSVBDIHsKQEAgLTQ4LDYgKzQ5LDcgQEAgc3RydWN0IE5hdmlnYXRp
b25BY3Rpb25EYXRhIHsKICAgICBib29sIGNhbkhhbmRsZVJlcXVlc3QgeyBmYWxzZSB9OwogICAg
IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSB7IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3Vs
ZE5vdEFsbG93IH07CiAgICAgV1RGOjpTdHJpbmcgZG93bmxvYWRBdHRyaWJ1dGU7CisgICAgV2Vi
Q29yZTo6RmxvYXRQb2ludCBjbGlja0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzOwogfTsK
IAogfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElOYXZp
Z2F0aW9uQWN0aW9uLmgJKHJldmlzaW9uIDIxOTAzMykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkFjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2
Myw3IEBAIHB1YmxpYzoKICAgICBXZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJz
KCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb2RpZmllcnM7IH0KICAg
ICBXZWJLaXQ6OldlYk1vdXNlRXZlbnQ6OkJ1dHRvbiBtb3VzZUJ1dHRvbigpIGNvbnN0IHsgcmV0
dXJuIG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEubW91c2VCdXR0b247IH0KICAgICBXZWJLaXQ6Oldl
Yk1vdXNlRXZlbnQ6OlN5bnRoZXRpY0NsaWNrVHlwZSBzeW50aGV0aWNDbGlja1R5cGUoKSBjb25z
dCB7IHJldHVybiBtX25hdmlnYXRpb25BY3Rpb25EYXRhLnN5bnRoZXRpY0NsaWNrVHlwZTsgfQor
ICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgY2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRl
cygpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEuY2xpY2tMb2NhdGlvbklu
Um9vdFZpZXdDb29yZGluYXRlczsgfQogICAgIGJvb2wgY2FuSGFuZGxlUmVxdWVzdCgpIGNvbnN0
IHsgcmV0dXJuIG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEuY2FuSGFuZGxlUmVxdWVzdDsgfQogICAg
IGJvb2wgc2hvdWxkT3BlbkV4dGVybmFsU2NoZW1lcygpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdh
dGlvbkFjdGlvbkRhdGEuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9PSBXZWJDb3JlOjpT
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGRBbGxvdyB8fCBtX25hdmlnYXRpb25B
Y3Rpb25EYXRhLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPT0gV2ViQ29yZTo6U2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkQWxsb3dFeHRlcm5hbFNjaGVtZXM7IH0KICAg
ICBib29sIHNob3VsZE9wZW5BcHBMaW5rcygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkT3BlbkFw
cExpbmtzICYmIG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSA9PSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGRBbGxv
dzsgfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRp
b25BY3Rpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS05hdmlnYXRpb25BY3Rpb24ubW0JKHJldmlzaW9uIDIxOTAzMykKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW1wb3J0ICJOYXZpZ2F0aW9uQWN0aW9uRGF0YS5o
IgogI2ltcG9ydCAiV0tGcmFtZUluZm9JbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLVXNlckluaXRp
YXRlZEFjdGlvbkludGVybmFsLmgiCisjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UG9pbnQuaD4KICNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogQGltcGxlbWVudGF0aW9uIFdLTmF2aWdhdGlvbkFj
dGlvbgpAQCAtMTIzLDEyICsxMjQsMTIgQEAgLSAodm9pZClkZWFsbG9jCiAKIC0gKE5TU3RyaW5n
ICopZGVzY3JpcHRpb24KIHsKLSAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
QCI8JUA6ICVwOyBuYXZpZ2F0aW9uVHlwZSA9ICVsZDsgc3ludGhldGljQ2xpY2tUeXBlID0gJWxk
OyByZXF1ZXN0ID0gJUA7IHNvdXJjZUZyYW1lID0gJUA7IHRhcmdldEZyYW1lID0gJUA+IiwgTlNT
dHJpbmdGcm9tQ2xhc3Moc2VsZi5jbGFzcyksIHNlbGYsCisgICAgcmV0dXJuIFtOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiPCVAOiAlcDsgbmF2aWdhdGlvblR5cGUgPSAlbGQ7IHN5bnRoZXRp
Y0NsaWNrVHlwZSA9ICVsZDsgcG9zaXRpb24geCA9ICUuMmYgeT0gJS4yZiByZXF1ZXN0ID0gJUA7
IHNvdXJjZUZyYW1lID0gJUA7IHRhcmdldEZyYW1lID0gJUA+IiwgTlNTdHJpbmdGcm9tQ2xhc3Mo
c2VsZi5jbGFzcyksIHNlbGYsCiAgICAgICAgIChsb25nKXNlbGYubmF2aWdhdGlvblR5cGUsCiAj
aWYgUExBVEZPUk0oSU9TKQotICAgICAgICAobG9uZylzZWxmLl9zeW50aGV0aWNDbGlja1R5cGUs
CisgICAgICAgIChsb25nKXNlbGYuX3N5bnRoZXRpY0NsaWNrVHlwZSwgc2VsZi5fY2xpY2tMb2Nh
dGlvbkluUm9vdFZpZXdDb29yZGluYXRlcy54LCBzZWxmLl9jbGlja0xvY2F0aW9uSW5Sb290Vmll
d0Nvb3JkaW5hdGVzLnksCiAjZWxzZQotICAgICAgICAwTCwKKyAgICAgICAgMEwsIDAsIDAsCiAj
ZW5kaWYKICAgICAgICAgc2VsZi5yZXF1ZXN0LCBzZWxmLnNvdXJjZUZyYW1lLCBzZWxmLnRhcmdl
dEZyYW1lXTsKIH0KQEAgLTE2Miw2ICsxNjMsMTEgQEAgLSAoV0tTeW50aGV0aWNDbGlja1R5cGUp
X3N5bnRoZXRpY0NsaWNrVAogewogICAgIHJldHVybiB0b1dLU3ludGhldGljQ2xpY2tUeXBlKF9u
YXZpZ2F0aW9uQWN0aW9uLT5zeW50aGV0aWNDbGlja1R5cGUoKSk7CiB9CisKKy0gKENHUG9pbnQp
X2NsaWNrTG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXMKK3sKKyAgICByZXR1cm4gX25hdmln
YXRpb25BY3Rpb24tPmNsaWNrTG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXMoKTsKK30KICNl
bmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb25Qcml2YXRlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb25Qcml2YXRl
LmgJKHJldmlzaW9uIDIxOTAzMykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tOYXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1
MSw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFdLU3ludGhldGljQ2wKIAogI2lmIFRB
UkdFVF9PU19JUEhPTkUKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgV0tTeW50aGV0
aWNDbGlja1R5cGUgX3N5bnRoZXRpY0NsaWNrVHlwZSBXS19BUElfQVZBSUxBQkxFKGlvcygxMC4w
KSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIENHUG9pbnQgX2NsaWNrTG9jYXRp
b25JblJvb3RWaWV3Q29vcmRpbmF0ZXMgV0tfQVBJX0FWQUlMQUJMRShpb3MoMTEuMCkpOwogI2Vu
ZGlmCiAKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdh
dGlvbkFjdGlvbi5jcHAJKHJldmlzaW9uIDIxOTAzMykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsMTcgQEAgc3RhdGljIFdlYk1vdXNlRXZlbnQ6OlN5
bnRoZXRpY0NsaWNrVHlwZQogICAgIAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJNb3VzZUV2
ZW50OjpTeW50aGV0aWNDbGlja1R5cGU+KG1vdXNlRXZlbnQtPnN5bnRoZXRpY0NsaWNrVHlwZSgp
KTsKIH0KKyAgICAKK3N0YXRpYyBGbG9hdFBvaW50IGNsaWNrTG9jYXRpb25JblJvb3RWaWV3Q29v
cmRpbmF0ZXNGb3JNb3VzZUV2ZW50KGNvbnN0IE1vdXNlRXZlbnQqIG1vdXNlRXZlbnQpCit7Cisg
ICAgaWYgKCFtb3VzZUV2ZW50KQorICAgICAgICByZXR1cm4geyB9OworICAgIAorICAgIGlmICgh
bW91c2VFdmVudC0+YnV0dG9uRG93bigpIHx8ICFtb3VzZUV2ZW50LT5pc1RydXN0ZWQoKSkKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICAKKyAgICByZXR1cm4gRmxvYXRQb2ludChtb3VzZUV2ZW50
LT5jbGllbnRYKCksIG1vdXNlRXZlbnQtPmNsaWVudFkoKSk7Cit9CiAKIFdlYkV2ZW50OjpNb2Rp
ZmllcnMgSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjptb2RpZmllcnNGb3JOYXZpZ2F0
aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIG5hdmlnYXRpb25BY3Rpb24pCiB7CkBA
IC05Niw2ICsxMDcsMTEgQEAgV2ViTW91c2VFdmVudDo6U3ludGhldGljQ2xpY2tUeXBlIEluamVj
dAogewogICAgIHJldHVybiBzeW50aGV0aWNDbGlja1R5cGVGb3JNb3VzZUV2ZW50KG1vdXNlRXZl
bnRGb3JOYXZpZ2F0aW9uQWN0aW9uKG5hdmlnYXRpb25BY3Rpb24pKTsKIH0KKyAgICAKK1dlYkNv
cmU6OkZsb2F0UG9pbnQgSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpjbGlja0xvY2F0
aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzRm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0
aW9uQWN0aW9uJiBuYXZpZ2F0aW9uQWN0aW9uKQoreworICAgIHJldHVybiBjbGlja0xvY2F0aW9u
SW5Sb290Vmlld0Nvb3JkaW5hdGVzRm9yTW91c2VFdmVudChtb3VzZUV2ZW50Rm9yTmF2aWdhdGlv
bkFjdGlvbihuYXZpZ2F0aW9uQWN0aW9uKSk7Cit9CiAKIFJlZjxJbmplY3RlZEJ1bmRsZU5hdmln
YXRpb25BY3Rpb24+IEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdlYkZy
YW1lKiBmcmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBSZWZQdHI8Rm9ybVN0
YXRlPiYmIGZvcm1TdGF0ZSkKIHsKQEAgLTExNCw2ICsxMzAsNyBAQCBJbmplY3RlZEJ1bmRsZU5h
dmlnYXRpb25BY3Rpb246OkluamVjdGVkCiAgICAgICAgIG1faGl0VGVzdFJlc3VsdCA9IEluamVj
dGVkQnVuZGxlSGl0VGVzdFJlc3VsdDo6Y3JlYXRlKGZyYW1lLT5jb3JlRnJhbWUoKS0+ZXZlbnRI
YW5kbGVyKCkuaGl0VGVzdFJlc3VsdEF0UG9pbnQobW91c2VFdmVudC0+YWJzb2x1dGVMb2NhdGlv
bigpKSk7CiAgICAgICAgIG1fbW91c2VCdXR0b24gICA9IG1vdXNlQnV0dG9uRm9yTW91c2VFdmVu
dChtb3VzZUV2ZW50KTsKICAgICAgICAgbV9zeW50aGV0aWNDbGlja1R5cGUgPSBzeW50aGV0aWND
bGlja1R5cGVGb3JOYXZpZ2F0aW9uQWN0aW9uKG5hdmlnYXRpb25BY3Rpb24pOworICAgICAgICBt
X2NsaWNrTG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBjbGlja0xvY2F0aW9uSW5Sb290
Vmlld0Nvb3JkaW5hdGVzRm9yTmF2aWdhdGlvbkFjdGlvbihuYXZpZ2F0aW9uQWN0aW9uKTsKICAg
ICB9CiAKICAgICBpZiAoZm9ybVN0YXRlKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5oCShyZXZpc2lvbiAyMTkwMzMpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFj
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCwxMyArNTAsMTUgQEAgcHVibGljOgogICAgIHN0
YXRpYyBXZWJFdmVudDo6TW9kaWZpZXJzIG1vZGlmaWVyc0Zvck5hdmlnYXRpb25BY3Rpb24oY29u
c3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYpOwogICAgIHN0YXRpYyBXZWJNb3VzZUV2ZW50
OjpCdXR0b24gbW91c2VCdXR0b25Gb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5h
dmlnYXRpb25BY3Rpb24mKTsKICAgICBzdGF0aWMgV2ViTW91c2VFdmVudDo6U3ludGhldGljQ2xp
Y2tUeXBlIHN5bnRoZXRpY0NsaWNrVHlwZUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgV2ViQ29y
ZTo6TmF2aWdhdGlvbkFjdGlvbiYpOwotCisgICAgc3RhdGljIFdlYkNvcmU6OkZsb2F0UG9pbnQg
Y2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlc0Zvck5hdmlnYXRpb25BY3Rpb24oY29u
c3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYpOworICAgIAogICAgIFdlYkNvcmU6Ok5hdmln
YXRpb25UeXBlIG5hdmlnYXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uVHlw
ZTsgfQogICAgIFdlYkV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJzKCkgY29uc3QgeyByZXR1cm4g
bV9tb2RpZmllcnM7IH0KICAgICBXZWJNb3VzZUV2ZW50OjpCdXR0b24gbW91c2VCdXR0b24oKSBj
b25zdCB7IHJldHVybiBtX21vdXNlQnV0dG9uOyB9CiAgICAgSW5qZWN0ZWRCdW5kbGVIaXRUZXN0
UmVzdWx0KiBoaXRUZXN0UmVzdWx0KCkgY29uc3QgeyByZXR1cm4gbV9oaXRUZXN0UmVzdWx0Lmdl
dCgpOyB9CiAgICAgSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlKiBmb3JtRWxlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fZm9ybUVsZW1lbnQuZ2V0KCk7IH0KICAgICBXZWJNb3VzZUV2ZW50OjpTeW50
aGV0aWNDbGlja1R5cGUgc3ludGhldGljQ2xpY2tUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9zeW50
aGV0aWNDbGlja1R5cGU7IH0KKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IGNsaWNrTG9jYXRpb25J
blJvb3RWaWV3Q29vcmRpbmF0ZXMoKSBjb25zdCB7IHJldHVybiBtX2NsaWNrTG9jYXRpb25JblJv
b3RWaWV3Q29vcmRpbmF0ZXM7IH0KIAogICAgIGJvb2wgc2hvdWxkT3BlbkV4dGVybmFsVVJMcygp
IGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkT3BlbkV4dGVybmFsVVJMczsgfQogICAgIGJvb2wgc2hv
dWxkVHJ5QXBwTGlua3MoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFRyeUFwcExpbmtzOyB9CkBA
IC02OSw2ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgV2ViRXZlbnQ6Ok1vZGlmaWVycyBtX21vZGlm
aWVyczsKICAgICBXZWJNb3VzZUV2ZW50OjpCdXR0b24gbV9tb3VzZUJ1dHRvbjsKICAgICBXZWJN
b3VzZUV2ZW50OjpTeW50aGV0aWNDbGlja1R5cGUgbV9zeW50aGV0aWNDbGlja1R5cGUgeyBXZWJN
b3VzZUV2ZW50OjpOb1RhcCB9OworICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgbV9jbGlja0xvY2F0
aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzOwogICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZUhpdFRl
c3RSZXN1bHQ+IG1faGl0VGVzdFJlc3VsdDsKICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2Rl
SGFuZGxlPiBtX2Zvcm1FbGVtZW50OwogICAgIEF0b21pY1N0cmluZyBtX2Rvd25sb2FkQXR0cmli
dXRlOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkocmV2aXNpb24gMjE5MDMzKQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDAsNiArMjQwLDcgQEAgUGFnZSogV2ViQ2hyb21lQ2xp
ZW50OjpjcmVhdGVXaW5kb3coRnJhbQogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLm1vZGlmaWVy
cyA9IEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6bW9kaWZpZXJzRm9yTmF2aWdhdGlv
bkFjdGlvbihuYXZpZ2F0aW9uQWN0aW9uKTsKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb3Vz
ZUJ1dHRvbiA9IEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6bW91c2VCdXR0b25Gb3JO
YXZpZ2F0aW9uQWN0aW9uKG5hdmlnYXRpb25BY3Rpb24pOwogICAgIG5hdmlnYXRpb25BY3Rpb25E
YXRhLnN5bnRoZXRpY0NsaWNrVHlwZSA9IEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6
c3ludGhldGljQ2xpY2tUeXBlRm9yTmF2aWdhdGlvbkFjdGlvbihuYXZpZ2F0aW9uQWN0aW9uKTsK
KyAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5jbGlja0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5h
dGVzID0gSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpjbGlja0xvY2F0aW9uSW5Sb290
Vmlld0Nvb3JkaW5hdGVzRm9yTmF2aWdhdGlvbkFjdGlvbihuYXZpZ2F0aW9uQWN0aW9uKTsKICAg
ICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllciA9IHdlYlBy
b2Nlc3MudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIobmF2aWdhdGlvbkFjdGlvbi51c2VyR2Vz
dHVyZVRva2VuKCkpOwogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLmNhbkhhbmRsZVJlcXVlc3Qg
PSBtX3BhZ2UuY2FuSGFuZGxlUmVxdWVzdChyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpKTsKICAg
ICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gbmF2
aWdhdGlvbkFjdGlvbi5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMjE5MDMzKQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc0MSw2ICs3NDEsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERlY2lkCiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEubW9kaWZpZXJz
ID0gYWN0aW9uLT5tb2RpZmllcnMoKTsKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb3VzZUJ1
dHRvbiA9IGFjdGlvbi0+bW91c2VCdXR0b24oKTsKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5z
eW50aGV0aWNDbGlja1R5cGUgPSBhY3Rpb24tPnN5bnRoZXRpY0NsaWNrVHlwZSgpOworICAgIG5h
dmlnYXRpb25BY3Rpb25EYXRhLmNsaWNrTG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBh
Y3Rpb24tPmNsaWNrTG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXMoKTsKICAgICBuYXZpZ2F0
aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllciA9IFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKG5hdmlnYXRpb25BY3Rpb24udXNl
ckdlc3R1cmVUb2tlbigpKTsKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5jYW5IYW5kbGVSZXF1
ZXN0ID0gd2ViUGFnZS0+Y2FuSGFuZGxlUmVxdWVzdChyZXF1ZXN0KTsKICAgICBuYXZpZ2F0aW9u
QWN0aW9uRGF0YS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gbmF2aWdhdGlvbkFjdGlv
bi5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCk7CkBAIC03ODgsNiArNzg5LDcgQEAgdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgIG5hdmlnYXRpb25BY3Rp
b25EYXRhLm1vZGlmaWVycyA9IGFjdGlvbi0+bW9kaWZpZXJzKCk7CiAgICAgbmF2aWdhdGlvbkFj
dGlvbkRhdGEubW91c2VCdXR0b24gPSBhY3Rpb24tPm1vdXNlQnV0dG9uKCk7CiAgICAgbmF2aWdh
dGlvbkFjdGlvbkRhdGEuc3ludGhldGljQ2xpY2tUeXBlID0gYWN0aW9uLT5zeW50aGV0aWNDbGlj
a1R5cGUoKTsKKyAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5jbGlja0xvY2F0aW9uSW5Sb290Vmll
d0Nvb3JkaW5hdGVzID0gYWN0aW9uLT5jbGlja0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVz
KCk7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIg
PSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcihuYXZp
Z2F0aW9uQWN0aW9uLnVzZXJHZXN0dXJlVG9rZW4oKSk7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRh
dGEuY2FuSGFuZGxlUmVxdWVzdCA9IHdlYlBhZ2UtPmNhbkhhbmRsZVJlcXVlc3QocmVxdWVzdCk7
CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9
IG5hdmlnYXRpb25BY3Rpb24uc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314889</attachid>
            <date>2017-07-07 16:11:22 -0700</date>
            <delta_ts>2017-07-07 16:19:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174233-20170707161122.patch</filename>
            <type>text/plain</type>
            <size>14182</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxOTI2MCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE3LTA3LTA3ICBNZWdhbiBH
YXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGxvY2F0aW9u
IHRvIE5hdmlnYXRpb25BY3Rpb25EYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzQyMzMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5MTY1NTE4
PgorICAgICAgICAKKyAgICAgICAgQWRkIHRoZSByb290IHZpZXcgbG9jYXRpb24gb2YgYSB0YXAg
dG8gYSBOYXZpZ2F0aW9uQWN0aW9uIHRvIHZlbmQgdG8gU2FmYXJpLgorICAgICAgICAKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvTmF2aWdh
dGlvbkFjdGlvbkRhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0
YTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGE6OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL05hdmlnYXRpb25BY3Rpb25EYXRhLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb24ubW06CisgICAgICAgICgtW1dLTmF2aWdhdGlv
bkFjdGlvbiBkZXNjcmlwdGlvbl0pOgorICAgICAgICAoLVtXS05hdmlnYXRpb25BY3Rpb24gX3Jv
b3RWaWV3Q2xpY2tMb2NhdGlvbl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tO
YXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6cm9vdFZpZXdDbGlja0xvY2F0aW9uRm9yTW91c2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6cm9vdFZpZXdDbGlja0xvY2F0aW9uRm9y
TmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlTmF2aWdh
dGlvbkFjdGlvbjo6SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5o
OgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OnJvb3RW
aWV3Q2xpY2tMb2NhdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNy
ZWF0ZVdpbmRvdyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24pOgorCiAyMDE3LTA3LTA3ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjE5MjM4LCByMjE5
MjM5LCBhbmQgcjIxOTI0MS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXZpZ2F0aW9u
QWN0aW9uRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL05hdmln
YXRpb25BY3Rpb25EYXRhLmNwcAkocmV2aXNpb24gMjE5MDMzKQorKysgU291cmNlL1dlYktpdDIv
U2hhcmVkL05hdmlnYXRpb25BY3Rpb25EYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiAr
MjksNyBAQAogI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiRGVjb2Rlci5o
IgogI2luY2x1ZGUgIkVuY29kZXIuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTQ0LDYgKzQ1LDcgQEAgdm9pZCBO
YXZpZ2F0aW9uQWN0aW9uRGF0YTo6ZW5jb2RlKElQQzo6RQogICAgIGVuY29kZXIgPDwgY2FuSGFu
ZGxlUmVxdWVzdDsKICAgICBlbmNvZGVyLmVuY29kZUVudW0oc2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSk7CiAgICAgZW5jb2RlciA8PCBkb3dubG9hZEF0dHJpYnV0ZTsKKyAgICBlbmNvZGVy
IDw8IGNsaWNrTG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXM7CiB9CiAKIGJvb2wgTmF2aWdh
dGlvbkFjdGlvbkRhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIE5hdmlnYXRpb25B
Y3Rpb25EYXRhJiByZXN1bHQpCkBAIC02NCw2ICs2Niw4IEBAIGJvb2wgTmF2aWdhdGlvbkFjdGlv
bkRhdGE6OmRlY29kZShJUEM6OkQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0LmRvd25sb2FkQXR0cmlidXRlKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNsaWNrTG9jYXRpb25JblJvb3RW
aWV3Q29vcmRpbmF0ZXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1
ZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXZpZ2F0aW9uQWN0aW9uRGF0YS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OYXZpZ2F0aW9uQWN0aW9uRGF0
YS5oCShyZXZpc2lvbiAyMTkwMzMpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF2aWdhdGlv
bkFjdGlvbkRhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBO
YXZpZ2F0aW9uQWN0aW9uRGF0YV9oCiAKICNpbmNsdWRlICJXZWJFdmVudC5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvRmxvYXRQb2ludC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBl
cy5oPgogCiBuYW1lc3BhY2UgSVBDIHsKQEAgLTQ4LDYgKzQ5LDcgQEAgc3RydWN0IE5hdmlnYXRp
b25BY3Rpb25EYXRhIHsKICAgICBib29sIGNhbkhhbmRsZVJlcXVlc3QgeyBmYWxzZSB9OwogICAg
IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSB7IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3Vs
ZE5vdEFsbG93IH07CiAgICAgV1RGOjpTdHJpbmcgZG93bmxvYWRBdHRyaWJ1dGU7CisgICAgV2Vi
Q29yZTo6RmxvYXRQb2ludCBjbGlja0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzOwogfTsK
IAogfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElOYXZp
Z2F0aW9uQWN0aW9uLmgJKHJldmlzaW9uIDIxOTAzMykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkFjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2
Myw3IEBAIHB1YmxpYzoKICAgICBXZWJLaXQ6OldlYkV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJz
KCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb2RpZmllcnM7IH0KICAg
ICBXZWJLaXQ6OldlYk1vdXNlRXZlbnQ6OkJ1dHRvbiBtb3VzZUJ1dHRvbigpIGNvbnN0IHsgcmV0
dXJuIG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEubW91c2VCdXR0b247IH0KICAgICBXZWJLaXQ6Oldl
Yk1vdXNlRXZlbnQ6OlN5bnRoZXRpY0NsaWNrVHlwZSBzeW50aGV0aWNDbGlja1R5cGUoKSBjb25z
dCB7IHJldHVybiBtX25hdmlnYXRpb25BY3Rpb25EYXRhLnN5bnRoZXRpY0NsaWNrVHlwZTsgfQor
ICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgY2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRl
cygpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEuY2xpY2tMb2NhdGlvbklu
Um9vdFZpZXdDb29yZGluYXRlczsgfQogICAgIGJvb2wgY2FuSGFuZGxlUmVxdWVzdCgpIGNvbnN0
IHsgcmV0dXJuIG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEuY2FuSGFuZGxlUmVxdWVzdDsgfQogICAg
IGJvb2wgc2hvdWxkT3BlbkV4dGVybmFsU2NoZW1lcygpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdh
dGlvbkFjdGlvbkRhdGEuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9PSBXZWJDb3JlOjpT
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGRBbGxvdyB8fCBtX25hdmlnYXRpb25B
Y3Rpb25EYXRhLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPT0gV2ViQ29yZTo6U2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkQWxsb3dFeHRlcm5hbFNjaGVtZXM7IH0KICAg
ICBib29sIHNob3VsZE9wZW5BcHBMaW5rcygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkT3BlbkFw
cExpbmtzICYmIG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSA9PSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGRBbGxv
dzsgfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRp
b25BY3Rpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS05hdmlnYXRpb25BY3Rpb24ubW0JKHJldmlzaW9uIDIxOTAzMykKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW1wb3J0ICJOYXZpZ2F0aW9uQWN0aW9uRGF0YS5o
IgogI2ltcG9ydCAiV0tGcmFtZUluZm9JbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLVXNlckluaXRp
YXRlZEFjdGlvbkludGVybmFsLmgiCisjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UG9pbnQuaD4KICNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogQGltcGxlbWVudGF0aW9uIFdLTmF2aWdhdGlvbkFj
dGlvbgpAQCAtMTIzLDEyICsxMjQsMTIgQEAgLSAodm9pZClkZWFsbG9jCiAKIC0gKE5TU3RyaW5n
ICopZGVzY3JpcHRpb24KIHsKLSAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
QCI8JUA6ICVwOyBuYXZpZ2F0aW9uVHlwZSA9ICVsZDsgc3ludGhldGljQ2xpY2tUeXBlID0gJWxk
OyByZXF1ZXN0ID0gJUA7IHNvdXJjZUZyYW1lID0gJUA7IHRhcmdldEZyYW1lID0gJUA+IiwgTlNT
dHJpbmdGcm9tQ2xhc3Moc2VsZi5jbGFzcyksIHNlbGYsCisgICAgcmV0dXJuIFtOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiPCVAOiAlcDsgbmF2aWdhdGlvblR5cGUgPSAlbGQ7IHN5bnRoZXRp
Y0NsaWNrVHlwZSA9ICVsZDsgcG9zaXRpb24geCA9ICUuMmYgeSA9ICUuMmYgcmVxdWVzdCA9ICVA
OyBzb3VyY2VGcmFtZSA9ICVAOyB0YXJnZXRGcmFtZSA9ICVAPiIsIE5TU3RyaW5nRnJvbUNsYXNz
KHNlbGYuY2xhc3MpLCBzZWxmLAogICAgICAgICAobG9uZylzZWxmLm5hdmlnYXRpb25UeXBlLAog
I2lmIFBMQVRGT1JNKElPUykKLSAgICAgICAgKGxvbmcpc2VsZi5fc3ludGhldGljQ2xpY2tUeXBl
LAorICAgICAgICAobG9uZylzZWxmLl9zeW50aGV0aWNDbGlja1R5cGUsIHNlbGYuX2NsaWNrTG9j
YXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXMueCwgc2VsZi5fY2xpY2tMb2NhdGlvbkluUm9vdFZp
ZXdDb29yZGluYXRlcy55LAogI2Vsc2UKLSAgICAgICAgMEwsCisgICAgICAgIDBMLCAwLjAsIDAu
MCwKICNlbmRpZgogICAgICAgICBzZWxmLnJlcXVlc3QsIHNlbGYuc291cmNlRnJhbWUsIHNlbGYu
dGFyZ2V0RnJhbWVdOwogfQpAQCAtMTYyLDYgKzE2MywxMSBAQCAtIChXS1N5bnRoZXRpY0NsaWNr
VHlwZSlfc3ludGhldGljQ2xpY2tUCiB7CiAgICAgcmV0dXJuIHRvV0tTeW50aGV0aWNDbGlja1R5
cGUoX25hdmlnYXRpb25BY3Rpb24tPnN5bnRoZXRpY0NsaWNrVHlwZSgpKTsKIH0KKworLSAoQ0dQ
b2ludClfY2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlcworeworICAgIHJldHVybiBf
bmF2aWdhdGlvbkFjdGlvbi0+Y2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlcygpOwor
fQogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvblByaXZhdGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvblBy
aXZhdGUuaAkocmV2aXNpb24gMjE5MDMzKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb25Qcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUx
LDYgKzUxLDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgV0tTeW50aGV0aWNDbAogCiAj
aWYgVEFSR0VUX09TX0lQSE9ORQogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXS1N5
bnRoZXRpY0NsaWNrVHlwZSBfc3ludGhldGljQ2xpY2tUeXBlIFdLX0FQSV9BVkFJTEFCTEUoaW9z
KDEwLjApKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQ0dQb2ludCBfY2xpY2tM
b2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlcyBXS19BUElfQVZBSUxBQkxFKGlvcygxMS4wKSk7
CiAjZW5kaWYKIAogQGVuZApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVO
YXZpZ2F0aW9uQWN0aW9uLmNwcAkocmV2aXNpb24gMjE5MDMzKQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCw2ICs2OCwxNyBAQCBzdGF0aWMgV2ViTW91c2VFdmVu
dDo6U3ludGhldGljQ2xpY2tUeXBlCiAgICAgCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYk1v
dXNlRXZlbnQ6OlN5bnRoZXRpY0NsaWNrVHlwZT4obW91c2VFdmVudC0+c3ludGhldGljQ2xpY2tU
eXBlKCkpOwogfQorICAgIAorc3RhdGljIEZsb2F0UG9pbnQgY2xpY2tMb2NhdGlvbkluUm9vdFZp
ZXdDb29yZGluYXRlc0Zvck1vdXNlRXZlbnQoY29uc3QgTW91c2VFdmVudCogbW91c2VFdmVudCkK
K3sKKyAgICBpZiAoIW1vdXNlRXZlbnQpCisgICAgICAgIHJldHVybiB7IH07CisgICAgCisgICAg
aWYgKCFtb3VzZUV2ZW50LT5idXR0b25Eb3duKCkgfHwgIW1vdXNlRXZlbnQtPmlzVHJ1c3RlZCgp
KQorICAgICAgICByZXR1cm4geyB9OworICAgIAorICAgIHJldHVybiBGbG9hdFBvaW50KG1vdXNl
RXZlbnQtPmNsaWVudFgoKSwgbW91c2VFdmVudC0+Y2xpZW50WSgpKTsKK30KIAogV2ViRXZlbnQ6
Ok1vZGlmaWVycyBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246Om1vZGlmaWVyc0Zvck5h
dmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgbmF2aWdhdGlvbkFjdGlvbikK
IHsKQEAgLTk2LDYgKzEwNywxMSBAQCBXZWJNb3VzZUV2ZW50OjpTeW50aGV0aWNDbGlja1R5cGUg
SW5qZWN0CiB7CiAgICAgcmV0dXJuIHN5bnRoZXRpY0NsaWNrVHlwZUZvck1vdXNlRXZlbnQobW91
c2VFdmVudEZvck5hdmlnYXRpb25BY3Rpb24obmF2aWdhdGlvbkFjdGlvbikpOwogfQorICAgIAor
RmxvYXRQb2ludCBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OmNsaWNrTG9jYXRpb25J
blJvb3RWaWV3Q29vcmRpbmF0ZXNGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRpb25B
Y3Rpb24mIG5hdmlnYXRpb25BY3Rpb24pCit7CisgICAgcmV0dXJuIGNsaWNrTG9jYXRpb25JblJv
b3RWaWV3Q29vcmRpbmF0ZXNGb3JNb3VzZUV2ZW50KG1vdXNlRXZlbnRGb3JOYXZpZ2F0aW9uQWN0
aW9uKG5hdmlnYXRpb25BY3Rpb24pKTsKK30KIAogUmVmPEluamVjdGVkQnVuZGxlTmF2aWdhdGlv
bkFjdGlvbj4gSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV2ViRnJhbWUq
IGZyYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIFJlZlB0cjxGb3JtU3RhdGU+
JiYgZm9ybVN0YXRlKQogewpAQCAtMTE0LDYgKzEzMCw3IEBAIEluamVjdGVkQnVuZGxlTmF2aWdh
dGlvbkFjdGlvbjo6SW5qZWN0ZWQKICAgICAgICAgbV9oaXRUZXN0UmVzdWx0ID0gSW5qZWN0ZWRC
dW5kbGVIaXRUZXN0UmVzdWx0OjpjcmVhdGUoZnJhbWUtPmNvcmVGcmFtZSgpLT5ldmVudEhhbmRs
ZXIoKS5oaXRUZXN0UmVzdWx0QXRQb2ludChtb3VzZUV2ZW50LT5hYnNvbHV0ZUxvY2F0aW9uKCkp
KTsKICAgICAgICAgbV9tb3VzZUJ1dHRvbiAgID0gbW91c2VCdXR0b25Gb3JNb3VzZUV2ZW50KG1v
dXNlRXZlbnQpOwogICAgICAgICBtX3N5bnRoZXRpY0NsaWNrVHlwZSA9IHN5bnRoZXRpY0NsaWNr
VHlwZUZvck5hdmlnYXRpb25BY3Rpb24obmF2aWdhdGlvbkFjdGlvbik7CisgICAgICAgIG1fY2xp
Y2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlcyA9IGNsaWNrTG9jYXRpb25JblJvb3RWaWV3
Q29vcmRpbmF0ZXNGb3JOYXZpZ2F0aW9uQWN0aW9uKG5hdmlnYXRpb25BY3Rpb24pOwogICAgIH0K
IAogICAgIGlmIChmb3JtU3RhdGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVOYXZpZ2F0aW9uQWN0aW9uLmgJKHJldmlzaW9uIDIxOTAzMykKKysrIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDEzICs1MCwxNSBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IFdlYkV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJzRm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBX
ZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJik7CiAgICAgc3RhdGljIFdlYk1vdXNlRXZlbnQ6OkJ1
dHRvbiBtb3VzZUJ1dHRvbkZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgV2ViQ29yZTo6TmF2aWdh
dGlvbkFjdGlvbiYpOwogICAgIHN0YXRpYyBXZWJNb3VzZUV2ZW50OjpTeW50aGV0aWNDbGlja1R5
cGUgc3ludGhldGljQ2xpY2tUeXBlRm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBXZWJDb3JlOjpO
YXZpZ2F0aW9uQWN0aW9uJik7Ci0KKyAgICBzdGF0aWMgV2ViQ29yZTo6RmxvYXRQb2ludCBjbGlj
a0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzRm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBX
ZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJik7CisgICAgCiAgICAgV2ViQ29yZTo6TmF2aWdhdGlv
blR5cGUgbmF2aWdhdGlvblR5cGUoKSBjb25zdCB7IHJldHVybiBtX25hdmlnYXRpb25UeXBlOyB9
CiAgICAgV2ViRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmllcnMoKSBjb25zdCB7IHJldHVybiBtX21v
ZGlmaWVyczsgfQogICAgIFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiBtb3VzZUJ1dHRvbigpIGNvbnN0
IHsgcmV0dXJuIG1fbW91c2VCdXR0b247IH0KICAgICBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1
bHQqIGhpdFRlc3RSZXN1bHQoKSBjb25zdCB7IHJldHVybiBtX2hpdFRlc3RSZXN1bHQuZ2V0KCk7
IH0KICAgICBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUqIGZvcm1FbGVtZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9mb3JtRWxlbWVudC5nZXQoKTsgfQogICAgIFdlYk1vdXNlRXZlbnQ6OlN5bnRoZXRp
Y0NsaWNrVHlwZSBzeW50aGV0aWNDbGlja1R5cGUoKSBjb25zdCB7IHJldHVybiBtX3N5bnRoZXRp
Y0NsaWNrVHlwZTsgfQorICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgY2xpY2tMb2NhdGlvbkluUm9v
dFZpZXdDb29yZGluYXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fY2xpY2tMb2NhdGlvbkluUm9vdFZp
ZXdDb29yZGluYXRlczsgfQogCiAgICAgYm9vbCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzKCkgY29u
c3QgeyByZXR1cm4gbV9zaG91bGRPcGVuRXh0ZXJuYWxVUkxzOyB9CiAgICAgYm9vbCBzaG91bGRU
cnlBcHBMaW5rcygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkVHJ5QXBwTGlua3M7IH0KQEAgLTY5
LDYgKzcxLDcgQEAgcHJpdmF0ZToKICAgICBXZWJFdmVudDo6TW9kaWZpZXJzIG1fbW9kaWZpZXJz
OwogICAgIFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiBtX21vdXNlQnV0dG9uOwogICAgIFdlYk1vdXNl
RXZlbnQ6OlN5bnRoZXRpY0NsaWNrVHlwZSBtX3N5bnRoZXRpY0NsaWNrVHlwZSB7IFdlYk1vdXNl
RXZlbnQ6Ok5vVGFwIH07CisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBtX2NsaWNrTG9jYXRpb25J
blJvb3RWaWV3Q29vcmRpbmF0ZXM7CiAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlSGl0VGVzdFJl
c3VsdD4gbV9oaXRUZXN0UmVzdWx0OwogICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5k
bGU+IG1fZm9ybUVsZW1lbnQ7CiAgICAgQXRvbWljU3RyaW5nIG1fZG93bmxvYWRBdHRyaWJ1dGU7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCShyZXZpc2lvbiAyMTkwMzMpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI0MCw2ICsyNDAsNyBAQCBQYWdlKiBXZWJDaHJvbWVDbGllbnQ6
OmNyZWF0ZVdpbmRvdyhGcmFtCiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEubW9kaWZpZXJzID0g
SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjptb2RpZmllcnNGb3JOYXZpZ2F0aW9uQWN0
aW9uKG5hdmlnYXRpb25BY3Rpb24pOwogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLm1vdXNlQnV0
dG9uID0gSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjptb3VzZUJ1dHRvbkZvck5hdmln
YXRpb25BY3Rpb24obmF2aWdhdGlvbkFjdGlvbik7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEu
c3ludGhldGljQ2xpY2tUeXBlID0gSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpzeW50
aGV0aWNDbGlja1R5cGVGb3JOYXZpZ2F0aW9uQWN0aW9uKG5hdmlnYXRpb25BY3Rpb24pOworICAg
IG5hdmlnYXRpb25BY3Rpb25EYXRhLmNsaWNrTG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXMg
PSBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OmNsaWNrTG9jYXRpb25JblJvb3RWaWV3
Q29vcmRpbmF0ZXNGb3JOYXZpZ2F0aW9uQWN0aW9uKG5hdmlnYXRpb25BY3Rpb24pOwogICAgIG5h
dmlnYXRpb25BY3Rpb25EYXRhLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyID0gd2ViUHJvY2Vz
cy51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcihuYXZpZ2F0aW9uQWN0aW9uLnVzZXJHZXN0dXJl
VG9rZW4oKSk7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEuY2FuSGFuZGxlUmVxdWVzdCA9IG1f
cGFnZS5jYW5IYW5kbGVSZXF1ZXN0KHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkpOwogICAgIG5h
dmlnYXRpb25BY3Rpb25EYXRhLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBuYXZpZ2F0
aW9uQWN0aW9uLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAyMTkwMzMpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzQxLDYgKzc0MSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGVjaWQKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb2RpZmllcnMgPSBh
Y3Rpb24tPm1vZGlmaWVycygpOwogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLm1vdXNlQnV0dG9u
ID0gYWN0aW9uLT5tb3VzZUJ1dHRvbigpOwogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLnN5bnRo
ZXRpY0NsaWNrVHlwZSA9IGFjdGlvbi0+c3ludGhldGljQ2xpY2tUeXBlKCk7CisgICAgbmF2aWdh
dGlvbkFjdGlvbkRhdGEuY2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlcyA9IGFjdGlv
bi0+Y2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlcygpOwogICAgIG5hdmlnYXRpb25B
Y3Rpb25EYXRhLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyID0gV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIobmF2aWdhdGlvbkFjdGlvbi51c2VyR2Vz
dHVyZVRva2VuKCkpOwogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLmNhbkhhbmRsZVJlcXVlc3Qg
PSB3ZWJQYWdlLT5jYW5IYW5kbGVSZXF1ZXN0KHJlcXVlc3QpOwogICAgIG5hdmlnYXRpb25BY3Rp
b25EYXRhLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBuYXZpZ2F0aW9uQWN0aW9uLnNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKTsKQEAgLTc4OCw2ICs3ODksNyBAQCB2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkCiAgICAgbmF2aWdhdGlvbkFjdGlvbkRh
dGEubW9kaWZpZXJzID0gYWN0aW9uLT5tb2RpZmllcnMoKTsKICAgICBuYXZpZ2F0aW9uQWN0aW9u
RGF0YS5tb3VzZUJ1dHRvbiA9IGFjdGlvbi0+bW91c2VCdXR0b24oKTsKICAgICBuYXZpZ2F0aW9u
QWN0aW9uRGF0YS5zeW50aGV0aWNDbGlja1R5cGUgPSBhY3Rpb24tPnN5bnRoZXRpY0NsaWNrVHlw
ZSgpOworICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLmNsaWNrTG9jYXRpb25JblJvb3RWaWV3Q29v
cmRpbmF0ZXMgPSBhY3Rpb24tPmNsaWNrTG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXMoKTsK
ICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllciA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKG5hdmlnYXRp
b25BY3Rpb24udXNlckdlc3R1cmVUb2tlbigpKTsKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5j
YW5IYW5kbGVSZXF1ZXN0ID0gd2ViUGFnZS0+Y2FuSGFuZGxlUmVxdWVzdChyZXF1ZXN0KTsKICAg
ICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gbmF2
aWdhdGlvbkFjdGlvbi5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314894</attachid>
            <date>2017-07-07 16:19:35 -0700</date>
            <delta_ts>2017-07-07 19:29:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174233-20170707161935.patch</filename>
            <type>text/plain</type>
            <size>14250</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxOTI3MikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE3LTA3LTA3ICBNZWdhbiBH
YXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGxvY2F0aW9u
IHRvIE5hdmlnYXRpb25BY3Rpb25EYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzQyMzMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5MTY1NTE4
PgorICAgICAgICAKKyAgICAgICAgQWRkIHRoZSByb290IHZpZXcgbG9jYXRpb24gb2YgYSB0YXAg
dG8gYSBOYXZpZ2F0aW9uQWN0aW9uIHRvIHZlbmQgdG8gU2FmYXJpLgorICAgICAgICAKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvTmF2aWdh
dGlvbkFjdGlvbkRhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0
YTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGE6OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL05hdmlnYXRpb25BY3Rpb25EYXRhLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb24ubW06CisgICAgICAgICgtW1dLTmF2aWdhdGlv
bkFjdGlvbiBkZXNjcmlwdGlvbl0pOgorICAgICAgICAoLVtXS05hdmlnYXRpb25BY3Rpb24gX3Jv
b3RWaWV3Q2xpY2tMb2NhdGlvbl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tO
YXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6cm9vdFZpZXdDbGlja0xvY2F0aW9uRm9yTW91c2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6cm9vdFZpZXdDbGlja0xvY2F0aW9uRm9y
TmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlTmF2aWdh
dGlvbkFjdGlvbjo6SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5o
OgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OnJvb3RW
aWV3Q2xpY2tMb2NhdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNy
ZWF0ZVdpbmRvdyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24pOgorCiAyMDE3LTA3LTA3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBw
bGUuY29tPgogCiAgICAgICAgIFtpT1MgRG5EXSBGb3IgY3Jvc3MtYXBwIGRyYWdzLCAnZHJvcCcg
ZXZlbnQgaGFuZGxlcnMgYXJlIG5ldmVyIGludm9rZWQgaWYgZGF0YVRyYW5zZmVyLmRyb3BFZmZl
Y3QgaXMgbm90IHNldCB3aGlsZSBkcmFnZ2luZwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVk
L05hdmlnYXRpb25BY3Rpb25EYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvTmF2aWdhdGlvbkFjdGlvbkRhdGEuY3BwCShyZXZpc2lvbiAyMTkyNzIpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvTmF2aWdhdGlvbkFjdGlvbkRhdGEuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRl
ICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1
bWVudENvZGVycy5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNDQsNiArNDUs
NyBAQCB2b2lkIE5hdmlnYXRpb25BY3Rpb25EYXRhOjplbmNvZGUoSVBDOjpFCiAgICAgZW5jb2Rl
ciA8PCBjYW5IYW5kbGVSZXF1ZXN0OwogICAgIGVuY29kZXIuZW5jb2RlRW51bShzaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5KTsKICAgICBlbmNvZGVyIDw8IGRvd25sb2FkQXR0cmlidXRlOwor
ICAgIGVuY29kZXIgPDwgY2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlczsKIH0KIAog
Ym9vbCBOYXZpZ2F0aW9uQWN0aW9uRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rlciwg
TmF2aWdhdGlvbkFjdGlvbkRhdGEmIHJlc3VsdCkKQEAgLTY0LDYgKzY2LDggQEAgYm9vbCBOYXZp
Z2F0aW9uQWN0aW9uRGF0YTo6ZGVjb2RlKElQQzo6RAogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZG93bmxvYWRBdHRyaWJ1dGUpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY2xpY2tMb2Nh
dGlvbkluUm9vdFZpZXdDb29yZGluYXRlcykpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IHJldHVybiB0cnVlOwogfQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL05hdmlnYXRpb25B
Y3Rpb25EYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL05hdmlnYXRp
b25BY3Rpb25EYXRhLmgJKHJldmlzaW9uIDIxOTI3MikKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9OYXZpZ2F0aW9uQWN0aW9uRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBA
CiAjZGVmaW5lIE5hdmlnYXRpb25BY3Rpb25EYXRhX2gKIAogI2luY2x1ZGUgIldlYkV2ZW50Lmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFBvaW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFt
ZUxvYWRlclR5cGVzLmg+CiAKIG5hbWVzcGFjZSBJUEMgewpAQCAtNDgsNiArNDksNyBAQCBzdHJ1
Y3QgTmF2aWdhdGlvbkFjdGlvbkRhdGEgewogICAgIGJvb2wgY2FuSGFuZGxlUmVxdWVzdCB7IGZh
bHNlIH07CiAgICAgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5IHsgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeTo6U2hvdWxkTm90QWxsb3cgfTsKICAgICBXVEY6OlN0cmluZyBkb3dubG9hZEF0dHJpYnV0
ZTsKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IGNsaWNrTG9jYXRpb25JblJvb3RWaWV3Q29vcmRp
bmF0ZXM7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSU5h
dmlnYXRpb25BY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0FQSU5hdmlnYXRpb25BY3Rpb24uaAkocmV2aXNpb24gMjE5MjcyKQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTYzLDYgKzYzLDcgQEAgcHVibGljOgogICAgIFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlmaWVy
cyBtb2RpZmllcnMoKSBjb25zdCB7IHJldHVybiBtX25hdmlnYXRpb25BY3Rpb25EYXRhLm1vZGlm
aWVyczsgfQogICAgIFdlYktpdDo6V2ViTW91c2VFdmVudDo6QnV0dG9uIG1vdXNlQnV0dG9uKCkg
Y29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb3VzZUJ1dHRvbjsgfQogICAg
IFdlYktpdDo6V2ViTW91c2VFdmVudDo6U3ludGhldGljQ2xpY2tUeXBlIHN5bnRoZXRpY0NsaWNr
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEuc3ludGhldGljQ2xp
Y2tUeXBlOyB9CisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBjbGlja0xvY2F0aW9uSW5Sb290Vmll
d0Nvb3JkaW5hdGVzKCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0aW9uRGF0YS5jbGlj
a0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzOyB9CiAgICAgYm9vbCBjYW5IYW5kbGVSZXF1
ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0aW9uRGF0YS5jYW5IYW5kbGVSZXF1
ZXN0OyB9CiAgICAgYm9vbCBzaG91bGRPcGVuRXh0ZXJuYWxTY2hlbWVzKCkgY29uc3QgeyByZXR1
cm4gbV9uYXZpZ2F0aW9uQWN0aW9uRGF0YS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID09
IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZEFsbG93IHx8IG1f
bmF2aWdhdGlvbkFjdGlvbkRhdGEuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9PSBXZWJD
b3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGRBbGxvd0V4dGVybmFsU2No
ZW1lczsgfQogICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzKCkgY29uc3QgeyByZXR1cm4gbV9z
aG91bGRPcGVuQXBwTGlua3MgJiYgbV9uYXZpZ2F0aW9uQWN0aW9uRGF0YS5zaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5ID09IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6
OlNob3VsZEFsbG93OyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLTmF2aWdhdGlvbkFjdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvbi5tbQkocmV2aXNpb24gMjE5MjcyKQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb24u
bW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgIk5hdmlnYXRpb25B
Y3Rpb25EYXRhLmgiCiAjaW1wb3J0ICJXS0ZyYW1lSW5mb0ludGVybmFsLmgiCiAjaW1wb3J0ICJf
V0tVc2VySW5pdGlhdGVkQWN0aW9uSW50ZXJuYWwuaCIKKyNpbXBvcnQgPFdlYkNvcmUvRmxvYXRQ
b2ludC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBAaW1wbGVtZW50YXRpb24gV0tO
YXZpZ2F0aW9uQWN0aW9uCkBAIC0xMjMsMTIgKzEyNCwxMiBAQCAtICh2b2lkKWRlYWxsb2MKIAog
LSAoTlNTdHJpbmcgKilkZXNjcmlwdGlvbgogewotICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpAIjwlQDogJXA7IG5hdmlnYXRpb25UeXBlID0gJWxkOyBzeW50aGV0aWNDbGlj
a1R5cGUgPSAlbGQ7IHJlcXVlc3QgPSAlQDsgc291cmNlRnJhbWUgPSAlQDsgdGFyZ2V0RnJhbWUg
PSAlQD4iLCBOU1N0cmluZ0Zyb21DbGFzcyhzZWxmLmNsYXNzKSwgc2VsZiwKKyAgICByZXR1cm4g
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8JUA6ICVwOyBuYXZpZ2F0aW9uVHlwZSA9ICVs
ZDsgc3ludGhldGljQ2xpY2tUeXBlID0gJWxkOyBwb3NpdGlvbiB4ID0gJS4yZiB5ID0gJS4yZiBy
ZXF1ZXN0ID0gJUA7IHNvdXJjZUZyYW1lID0gJUA7IHRhcmdldEZyYW1lID0gJUA+IiwgTlNTdHJp
bmdGcm9tQ2xhc3Moc2VsZi5jbGFzcyksIHNlbGYsCiAgICAgICAgIChsb25nKXNlbGYubmF2aWdh
dGlvblR5cGUsCiAjaWYgUExBVEZPUk0oSU9TKQotICAgICAgICAobG9uZylzZWxmLl9zeW50aGV0
aWNDbGlja1R5cGUsCisgICAgICAgIChsb25nKXNlbGYuX3N5bnRoZXRpY0NsaWNrVHlwZSwgc2Vs
Zi5fY2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlcy54LCBzZWxmLl9jbGlja0xvY2F0
aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzLnksCiAjZWxzZQotICAgICAgICAwTCwKKyAgICAgICAg
MEwsIDAuMCwgMC4wLAogI2VuZGlmCiAgICAgICAgIHNlbGYucmVxdWVzdCwgc2VsZi5zb3VyY2VG
cmFtZSwgc2VsZi50YXJnZXRGcmFtZV07CiB9CkBAIC0xNjIsNiArMTYzLDExIEBAIC0gKFdLU3lu
dGhldGljQ2xpY2tUeXBlKV9zeW50aGV0aWNDbGlja1QKIHsKICAgICByZXR1cm4gdG9XS1N5bnRo
ZXRpY0NsaWNrVHlwZShfbmF2aWdhdGlvbkFjdGlvbi0+c3ludGhldGljQ2xpY2tUeXBlKCkpOwog
fQorCistIChDR1BvaW50KV9jbGlja0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzCit7Cisg
ICAgcmV0dXJuIF9uYXZpZ2F0aW9uQWN0aW9uLT5jbGlja0xvY2F0aW9uSW5Sb290Vmlld0Nvb3Jk
aW5hdGVzKCk7Cit9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0
aW9uQWN0aW9uUHJpdmF0ZS5oCShyZXZpc2lvbiAyMTkyNzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvblByaXZhdGUuaAkod29ya2luZyBj
b3B5KQpAQCAtNTEsNiArNTEsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBXS1N5bnRo
ZXRpY0NsCiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVh
ZG9ubHkpIFdLU3ludGhldGljQ2xpY2tUeXBlIF9zeW50aGV0aWNDbGlja1R5cGUgV0tfQVBJX0FW
QUlMQUJMRShpb3MoMTAuMCkpOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBDR1Bv
aW50IF9jbGlja0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzIFdLX0FQSV9BVkFJTEFCTEUo
aW9zKDExLjApKTsKICNlbmRpZgogCiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwCShyZXZpc2lvbiAyMTkyNzIpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdh
dGlvbkFjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDE3IEBAIHN0YXRpYyBX
ZWJNb3VzZUV2ZW50OjpTeW50aGV0aWNDbGlja1R5cGUKICAgICAKICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8V2ViTW91c2VFdmVudDo6U3ludGhldGljQ2xpY2tUeXBlPihtb3VzZUV2ZW50LT5zeW50
aGV0aWNDbGlja1R5cGUoKSk7CiB9CisgICAgCitzdGF0aWMgRmxvYXRQb2ludCBjbGlja0xvY2F0
aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzRm9yTW91c2VFdmVudChjb25zdCBNb3VzZUV2ZW50KiBt
b3VzZUV2ZW50KQoreworICAgIGlmICghbW91c2VFdmVudCkKKyAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICAKKyAgICBpZiAoIW1vdXNlRXZlbnQtPmJ1dHRvbkRvd24oKSB8fCAhbW91c2VFdmVudC0+
aXNUcnVzdGVkKCkpCisgICAgICAgIHJldHVybiB7IH07CisgICAgCisgICAgcmV0dXJuIEZsb2F0
UG9pbnQobW91c2VFdmVudC0+Y2xpZW50WCgpLCBtb3VzZUV2ZW50LT5jbGllbnRZKCkpOworfQog
CiBXZWJFdmVudDo6TW9kaWZpZXJzIEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6bW9k
aWZpZXJzRm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBuYXZpZ2F0
aW9uQWN0aW9uKQogewpAQCAtOTYsNiArMTA3LDExIEBAIFdlYk1vdXNlRXZlbnQ6OlN5bnRoZXRp
Y0NsaWNrVHlwZSBJbmplY3QKIHsKICAgICByZXR1cm4gc3ludGhldGljQ2xpY2tUeXBlRm9yTW91
c2VFdmVudChtb3VzZUV2ZW50Rm9yTmF2aWdhdGlvbkFjdGlvbihuYXZpZ2F0aW9uQWN0aW9uKSk7
CiB9CisgICAgCitGbG9hdFBvaW50IEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6Y2xp
Y2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlc0Zvck5hdmlnYXRpb25BY3Rpb24oY29uc3Qg
TmF2aWdhdGlvbkFjdGlvbiYgbmF2aWdhdGlvbkFjdGlvbikKK3sKKyAgICByZXR1cm4gY2xpY2tM
b2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlc0Zvck1vdXNlRXZlbnQobW91c2VFdmVudEZvck5h
dmlnYXRpb25BY3Rpb24obmF2aWdhdGlvbkFjdGlvbikpOworfQogCiBSZWY8SW5qZWN0ZWRCdW5k
bGVOYXZpZ2F0aW9uQWN0aW9uPiBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OmNyZWF0
ZShXZWJGcmFtZSogZnJhbWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgUmVmUHRy
PEZvcm1TdGF0ZT4mJiBmb3JtU3RhdGUpCiB7CkBAIC0xMTQsNiArMTMwLDcgQEAgSW5qZWN0ZWRC
dW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpJbmplY3RlZAogICAgICAgICBtX2hpdFRlc3RSZXN1bHQg
PSBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ6OmNyZWF0ZShmcmFtZS0+Y29yZUZyYW1lKCkt
PmV2ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KG1vdXNlRXZlbnQtPmFic29sdXRl
TG9jYXRpb24oKSkpOwogICAgICAgICBtX21vdXNlQnV0dG9uICAgPSBtb3VzZUJ1dHRvbkZvck1v
dXNlRXZlbnQobW91c2VFdmVudCk7CiAgICAgICAgIG1fc3ludGhldGljQ2xpY2tUeXBlID0gc3lu
dGhldGljQ2xpY2tUeXBlRm9yTmF2aWdhdGlvbkFjdGlvbihuYXZpZ2F0aW9uQWN0aW9uKTsKKyAg
ICAgICAgbV9jbGlja0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzID0gY2xpY2tMb2NhdGlv
bkluUm9vdFZpZXdDb29yZGluYXRlc0Zvck5hdmlnYXRpb25BY3Rpb24obmF2aWdhdGlvbkFjdGlv
bik7CiAgICAgfQogCiAgICAgaWYgKGZvcm1TdGF0ZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaAkocmV2aXNpb24gMjE5MjcyKQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmln
YXRpb25BY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTMgKzUwLDE1IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgV2ViRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmllcnNGb3JOYXZpZ2F0aW9uQWN0
aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mKTsKICAgICBzdGF0aWMgV2ViTW91
c2VFdmVudDo6QnV0dG9uIG1vdXNlQnV0dG9uRm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBXZWJD
b3JlOjpOYXZpZ2F0aW9uQWN0aW9uJik7CiAgICAgc3RhdGljIFdlYk1vdXNlRXZlbnQ6OlN5bnRo
ZXRpY0NsaWNrVHlwZSBzeW50aGV0aWNDbGlja1R5cGVGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0
IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mKTsKLQorICAgIHN0YXRpYyBXZWJDb3JlOjpGbG9h
dFBvaW50IGNsaWNrTG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXNGb3JOYXZpZ2F0aW9uQWN0
aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mKTsKKyAgICAKICAgICBXZWJDb3Jl
OjpOYXZpZ2F0aW9uVHlwZSBuYXZpZ2F0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdh
dGlvblR5cGU7IH0KICAgICBXZWJFdmVudDo6TW9kaWZpZXJzIG1vZGlmaWVycygpIGNvbnN0IHsg
cmV0dXJuIG1fbW9kaWZpZXJzOyB9CiAgICAgV2ViTW91c2VFdmVudDo6QnV0dG9uIG1vdXNlQnV0
dG9uKCkgY29uc3QgeyByZXR1cm4gbV9tb3VzZUJ1dHRvbjsgfQogICAgIEluamVjdGVkQnVuZGxl
SGl0VGVzdFJlc3VsdCogaGl0VGVzdFJlc3VsdCgpIGNvbnN0IHsgcmV0dXJuIG1faGl0VGVzdFJl
c3VsdC5nZXQoKTsgfQogICAgIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZSogZm9ybUVsZW1lbnQo
KSBjb25zdCB7IHJldHVybiBtX2Zvcm1FbGVtZW50LmdldCgpOyB9CiAgICAgV2ViTW91c2VFdmVu
dDo6U3ludGhldGljQ2xpY2tUeXBlIHN5bnRoZXRpY0NsaWNrVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3ludGhldGljQ2xpY2tUeXBlOyB9CisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBjbGlja0xv
Y2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzKCkgY29uc3QgeyByZXR1cm4gbV9jbGlja0xvY2F0
aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzOyB9CiAKICAgICBib29sIHNob3VsZE9wZW5FeHRlcm5h
bFVSTHMoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZE9wZW5FeHRlcm5hbFVSTHM7IH0KICAgICBi
b29sIHNob3VsZFRyeUFwcExpbmtzKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRUcnlBcHBMaW5r
czsgfQpAQCAtNjksNiArNzEsNyBAQCBwcml2YXRlOgogICAgIFdlYkV2ZW50OjpNb2RpZmllcnMg
bV9tb2RpZmllcnM7CiAgICAgV2ViTW91c2VFdmVudDo6QnV0dG9uIG1fbW91c2VCdXR0b247CiAg
ICAgV2ViTW91c2VFdmVudDo6U3ludGhldGljQ2xpY2tUeXBlIG1fc3ludGhldGljQ2xpY2tUeXBl
IHsgV2ViTW91c2VFdmVudDo6Tm9UYXAgfTsKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IG1fY2xp
Y2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlczsKICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5k
bGVIaXRUZXN0UmVzdWx0PiBtX2hpdFRlc3RSZXN1bHQ7CiAgICAgUmVmUHRyPEluamVjdGVkQnVu
ZGxlTm9kZUhhbmRsZT4gbV9mb3JtRWxlbWVudDsKICAgICBBdG9taWNTdHJpbmcgbV9kb3dubG9h
ZEF0dHJpYnV0ZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHJldmlzaW9uIDIxOTI3
MikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQwLDYgKzI0MCw3IEBAIFBhZ2UqIFdlYkNo
cm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KEZyYW0KICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5t
b2RpZmllcnMgPSBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246Om1vZGlmaWVyc0Zvck5h
dmlnYXRpb25BY3Rpb24obmF2aWdhdGlvbkFjdGlvbik7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRh
dGEubW91c2VCdXR0b24gPSBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246Om1vdXNlQnV0
dG9uRm9yTmF2aWdhdGlvbkFjdGlvbihuYXZpZ2F0aW9uQWN0aW9uKTsKICAgICBuYXZpZ2F0aW9u
QWN0aW9uRGF0YS5zeW50aGV0aWNDbGlja1R5cGUgPSBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25B
Y3Rpb246OnN5bnRoZXRpY0NsaWNrVHlwZUZvck5hdmlnYXRpb25BY3Rpb24obmF2aWdhdGlvbkFj
dGlvbik7CisgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEuY2xpY2tMb2NhdGlvbkluUm9vdFZpZXdD
b29yZGluYXRlcyA9IEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6Y2xpY2tMb2NhdGlv
bkluUm9vdFZpZXdDb29yZGluYXRlc0Zvck5hdmlnYXRpb25BY3Rpb24obmF2aWdhdGlvbkFjdGlv
bik7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIg
PSB3ZWJQcm9jZXNzLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKG5hdmlnYXRpb25BY3Rpb24u
dXNlckdlc3R1cmVUb2tlbigpKTsKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5jYW5IYW5kbGVS
ZXF1ZXN0ID0gbV9wYWdlLmNhbkhhbmRsZVJlcXVlc3QocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3Qo
KSk7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSA9IG5hdmlnYXRpb25BY3Rpb24uc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpOwpJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDIxOTI3MikKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MzYsNiArNzM2LDcgQEAgdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLm1v
ZGlmaWVycyA9IGFjdGlvbi0+bW9kaWZpZXJzKCk7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEu
bW91c2VCdXR0b24gPSBhY3Rpb24tPm1vdXNlQnV0dG9uKCk7CiAgICAgbmF2aWdhdGlvbkFjdGlv
bkRhdGEuc3ludGhldGljQ2xpY2tUeXBlID0gYWN0aW9uLT5zeW50aGV0aWNDbGlja1R5cGUoKTsK
KyAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5jbGlja0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5h
dGVzID0gYWN0aW9uLT5jbGlja0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzKCk7CiAgICAg
bmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIgPSBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcihuYXZpZ2F0aW9uQWN0
aW9uLnVzZXJHZXN0dXJlVG9rZW4oKSk7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEuY2FuSGFu
ZGxlUmVxdWVzdCA9IHdlYlBhZ2UtPmNhbkhhbmRsZVJlcXVlc3QocmVxdWVzdCk7CiAgICAgbmF2
aWdhdGlvbkFjdGlvbkRhdGEuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IG5hdmlnYXRp
b25BY3Rpb24uc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpOwpAQCAtNzgzLDYgKzc4NCw3
IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWQKICAgICBuYXZpZ2F0
aW9uQWN0aW9uRGF0YS5tb2RpZmllcnMgPSBhY3Rpb24tPm1vZGlmaWVycygpOwogICAgIG5hdmln
YXRpb25BY3Rpb25EYXRhLm1vdXNlQnV0dG9uID0gYWN0aW9uLT5tb3VzZUJ1dHRvbigpOwogICAg
IG5hdmlnYXRpb25BY3Rpb25EYXRhLnN5bnRoZXRpY0NsaWNrVHlwZSA9IGFjdGlvbi0+c3ludGhl
dGljQ2xpY2tUeXBlKCk7CisgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEuY2xpY2tMb2NhdGlvbklu
Um9vdFZpZXdDb29yZGluYXRlcyA9IGFjdGlvbi0+Y2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29y
ZGluYXRlcygpOwogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLnVzZXJHZXN0dXJlVG9rZW5JZGVu
dGlmaWVyID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudXNlckdlc3R1cmVUb2tlbklkZW50aWZp
ZXIobmF2aWdhdGlvbkFjdGlvbi51c2VyR2VzdHVyZVRva2VuKCkpOwogICAgIG5hdmlnYXRpb25B
Y3Rpb25EYXRhLmNhbkhhbmRsZVJlcXVlc3QgPSB3ZWJQYWdlLT5jYW5IYW5kbGVSZXF1ZXN0KHJl
cXVlc3QpOwogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kgPSBuYXZpZ2F0aW9uQWN0aW9uLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314908</attachid>
            <date>2017-07-07 19:29:36 -0700</date>
            <delta_ts>2017-07-10 11:00:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174233-20170707192935.patch</filename>
            <type>text/plain</type>
            <size>15952</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcAkocmV2aXNpb24g
MjE5MjcyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5j
bHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJMYXlvdXRQ
b2ludC5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0
LmgiCiAKQEAgLTE2NSw2ICsxNjYsMjAgQEAgdm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6Y29tcHV0
ZVJlbGF0aXZlUAogCiAgICAgbV9oYXNDYWNoZWRSZWxhdGl2ZVBvc2l0aW9uID0gdHJ1ZTsKIH0K
KyAgICAKK2ludCBNb3VzZVJlbGF0ZWRFdmVudDo6YWJzb2x1dGVMb2NhdGlvbkNvbnZldGVkVG9S
b290Vmlld1goKSBjb25zdAoreworICAgIGlmICghZnJhbWVWaWV3KCkpCisgICAgICAgIHJldHVy
biBtX2Fic29sdXRlTG9jYXRpb24ueCgpOworICAgIHJldHVybiBmcmFtZVZpZXcoKS0+Y29udGVu
dHNUb1Jvb3RWaWV3KGZsb29yZWRJbnRQb2ludChtX2Fic29sdXRlTG9jYXRpb24pKS54KCk7Cit9
CisgICAgCitpbnQgTW91c2VSZWxhdGVkRXZlbnQ6OmFic29sdXRlTG9jYXRpb25Db252ZXRlZFRv
Um9vdFZpZXdZKCkgY29uc3QKK3sKKyAgICBpZiAoIWZyYW1lVmlldygpKQorICAgICAgICByZXR1
cm4gbV9hYnNvbHV0ZUxvY2F0aW9uLnkoKTsKKyAgICByZXR1cm4gZnJhbWVWaWV3KCktPmNvbnRl
bnRzVG9Sb290VmlldyhmbG9vcmVkSW50UG9pbnQobV9hYnNvbHV0ZUxvY2F0aW9uKSkueSgpOwor
fQogCiBpbnQgTW91c2VSZWxhdGVkRXZlbnQ6OmxheWVyWCgpCiB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuaAkocmV2aXNpb24gMjE5MjcyKQorKysgU291cmNlL1dl
YkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3
LDggQEAgcHVibGljOgogICAgIGJvb2wgaXNTaW11bGF0ZWQoKSBjb25zdCB7IHJldHVybiBtX2lz
U2ltdWxhdGVkOyB9CiAgICAgaW50IHBhZ2VYKCkgY29uc3QgZmluYWw7CiAgICAgaW50IHBhZ2VZ
KCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgaW50IGFic29sdXRlTG9jYXRpb25D
b252ZXRlZFRvUm9vdFZpZXdYKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgaW50IGFic29s
dXRlTG9jYXRpb25Db252ZXRlZFRvUm9vdFZpZXdZKCkgY29uc3Q7CiAgICAgdmlydHVhbCBjb25z
dCBMYXlvdXRQb2ludCYgcGFnZUxvY2F0aW9uKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQg
aW50IHgoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgeSgpIGNvbnN0OwpJbmRleDog
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwkocmV2aXNpb24gMjE5MjcyKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTctMDctMDcgIE1lZ2FuIEdhcmRuZXIg
IDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgbG9jYXRpb24gdG8gTmF2
aWdhdGlvbkFjdGlvbkRhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3NDIzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjkxNjU1MTg+CisgICAg
ICAgIAorICAgICAgICBBZGQgdGhlIHJvb3QgdmlldyBsb2NhdGlvbiBvZiBhIHRhcCB0byBhIE5h
dmlnYXRpb25BY3Rpb24gdG8gdmVuZCB0byBTYWZhcmkuCisgICAgICAgIAorICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9OYXZpZ2F0aW9uQWN0
aW9uRGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhOjplbmNv
ZGUpOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YTo6ZGVjb2RlKToKKyAg
ICAgICAgKiBTaGFyZWQvTmF2aWdhdGlvbkFjdGlvbkRhdGEuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0FQSU5hdmlnYXRpb25BY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLTmF2aWdhdGlvbkFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tOYXZpZ2F0aW9uQWN0aW9u
IGRlc2NyaXB0aW9uXSk6CisgICAgICAgICgtW1dLTmF2aWdhdGlvbkFjdGlvbiBfcm9vdFZpZXdD
bGlja0xvY2F0aW9uXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRp
b25BY3Rpb25Qcml2YXRlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0Ojpyb290
Vmlld0NsaWNrTG9jYXRpb25Gb3JNb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0
ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpyb290Vmlld0NsaWNrTG9jYXRpb25Gb3JOYXZpZ2F0
aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0
aW9uOjpJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmg6CisgICAg
ICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6cm9vdFZpZXdDbGlj
a0xvY2F0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6Y3JlYXRlV2lu
ZG93KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bik6CisKIDIwMTctMDctMDcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+
CiAKICAgICAgICAgW2lPUyBEbkRdIEZvciBjcm9zcy1hcHAgZHJhZ3MsICdkcm9wJyBldmVudCBo
YW5kbGVycyBhcmUgbmV2ZXIgaW52b2tlZCBpZiBkYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCBpcyBu
b3Qgc2V0IHdoaWxlIGRyYWdnaW5nCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF2aWdh
dGlvbkFjdGlvbkRhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9O
YXZpZ2F0aW9uQWN0aW9uRGF0YS5jcHAJKHJldmlzaW9uIDIxOTI3MikKKysrIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9OYXZpZ2F0aW9uQWN0aW9uRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5
LDYgKzI5LDcgQEAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIkRlY29k
ZXIuaCIKICNpbmNsdWRlICJFbmNvZGVyLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC00NCw2ICs0NSw3IEBAIHZv
aWQgTmF2aWdhdGlvbkFjdGlvbkRhdGE6OmVuY29kZShJUEM6OkUKICAgICBlbmNvZGVyIDw8IGNh
bkhhbmRsZVJlcXVlc3Q7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKHNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3kpOwogICAgIGVuY29kZXIgPDwgZG93bmxvYWRBdHRyaWJ1dGU7CisgICAgZW5j
b2RlciA8PCBjbGlja0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzOwogfQogCiBib29sIE5h
dmlnYXRpb25BY3Rpb25EYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBOYXZpZ2F0
aW9uQWN0aW9uRGF0YSYgcmVzdWx0KQpAQCAtNjQsNiArNjYsOCBAQCBib29sIE5hdmlnYXRpb25B
Y3Rpb25EYXRhOjpkZWNvZGUoSVBDOjpECiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5kb3dubG9hZEF0dHJpYnV0ZSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jbGlja0xvY2F0aW9uSW5S
b290Vmlld0Nvb3JkaW5hdGVzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJu
IHRydWU7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF2aWdhdGlvbkFjdGlvbkRh
dGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF2aWdhdGlvbkFjdGlv
bkRhdGEuaAkocmV2aXNpb24gMjE5MjcyKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL05hdmln
YXRpb25BY3Rpb25EYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZp
bmUgTmF2aWdhdGlvbkFjdGlvbkRhdGFfaAogCiAjaW5jbHVkZSAiV2ViRXZlbnQuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL0Zsb2F0UG9pbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVy
VHlwZXMuaD4KIAogbmFtZXNwYWNlIElQQyB7CkBAIC00OCw2ICs0OSw3IEBAIHN0cnVjdCBOYXZp
Z2F0aW9uQWN0aW9uRGF0YSB7CiAgICAgYm9vbCBjYW5IYW5kbGVSZXF1ZXN0IHsgZmFsc2UgfTsK
ICAgICBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3kgeyBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpT
aG91bGROb3RBbGxvdyB9OwogICAgIFdURjo6U3RyaW5nIGRvd25sb2FkQXR0cmlidXRlOworICAg
IFdlYkNvcmU6OkZsb2F0UG9pbnQgY2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlczsK
IH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlv
bkFjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJ
TmF2aWdhdGlvbkFjdGlvbi5oCShyZXZpc2lvbiAyMTkyNzIpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25BY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjMs
NiArNjMsNyBAQCBwdWJsaWM6CiAgICAgV2ViS2l0OjpXZWJFdmVudDo6TW9kaWZpZXJzIG1vZGlm
aWVycygpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEubW9kaWZpZXJzOyB9
CiAgICAgV2ViS2l0OjpXZWJNb3VzZUV2ZW50OjpCdXR0b24gbW91c2VCdXR0b24oKSBjb25zdCB7
IHJldHVybiBtX25hdmlnYXRpb25BY3Rpb25EYXRhLm1vdXNlQnV0dG9uOyB9CiAgICAgV2ViS2l0
OjpXZWJNb3VzZUV2ZW50OjpTeW50aGV0aWNDbGlja1R5cGUgc3ludGhldGljQ2xpY2tUeXBlKCkg
Y29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0aW9uRGF0YS5zeW50aGV0aWNDbGlja1R5cGU7
IH0KKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IGNsaWNrTG9jYXRpb25JblJvb3RWaWV3Q29vcmRp
bmF0ZXMoKSBjb25zdCB7IHJldHVybiBtX25hdmlnYXRpb25BY3Rpb25EYXRhLmNsaWNrTG9jYXRp
b25JblJvb3RWaWV3Q29vcmRpbmF0ZXM7IH0KICAgICBib29sIGNhbkhhbmRsZVJlcXVlc3QoKSBj
b25zdCB7IHJldHVybiBtX25hdmlnYXRpb25BY3Rpb25EYXRhLmNhbkhhbmRsZVJlcXVlc3Q7IH0K
ICAgICBib29sIHNob3VsZE9wZW5FeHRlcm5hbFNjaGVtZXMoKSBjb25zdCB7IHJldHVybiBtX25h
dmlnYXRpb25BY3Rpb25EYXRhLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPT0gV2ViQ29y
ZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkQWxsb3cgfHwgbV9uYXZpZ2F0
aW9uQWN0aW9uRGF0YS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID09IFdlYkNvcmU6OlNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZEFsbG93RXh0ZXJuYWxTY2hlbWVzOyB9
CiAgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZE9w
ZW5BcHBMaW5rcyAmJiBtX25hdmlnYXRpb25BY3Rpb25EYXRhLnNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3kgPT0gV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxk
QWxsb3c7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZp
Z2F0aW9uQWN0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uLm1tCShyZXZpc2lvbiAyMTkyNzIpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvbi5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2ltcG9ydCAiTmF2aWdhdGlvbkFjdGlvbkRh
dGEuaCIKICNpbXBvcnQgIldLRnJhbWVJbmZvSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1VzZXJJ
bml0aWF0ZWRBY3Rpb25JbnRlcm5hbC5oIgorI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFBvaW50Lmg+
CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIEBpbXBsZW1lbnRhdGlvbiBXS05hdmlnYXRp
b25BY3Rpb24KQEAgLTEyMywxMiArMTI0LDEyIEBAIC0gKHZvaWQpZGVhbGxvYwogCiAtIChOU1N0
cmluZyAqKWRlc2NyaXB0aW9uCiB7Ci0gICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9y
bWF0OkAiPCVAOiAlcDsgbmF2aWdhdGlvblR5cGUgPSAlbGQ7IHN5bnRoZXRpY0NsaWNrVHlwZSA9
ICVsZDsgcmVxdWVzdCA9ICVAOyBzb3VyY2VGcmFtZSA9ICVAOyB0YXJnZXRGcmFtZSA9ICVAPiIs
IE5TU3RyaW5nRnJvbUNsYXNzKHNlbGYuY2xhc3MpLCBzZWxmLAorICAgIHJldHVybiBbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAIjwlQDogJXA7IG5hdmlnYXRpb25UeXBlID0gJWxkOyBzeW50
aGV0aWNDbGlja1R5cGUgPSAlbGQ7IHBvc2l0aW9uIHggPSAlLjJmIHkgPSAlLjJmIHJlcXVlc3Qg
PSAlQDsgc291cmNlRnJhbWUgPSAlQDsgdGFyZ2V0RnJhbWUgPSAlQD4iLCBOU1N0cmluZ0Zyb21D
bGFzcyhzZWxmLmNsYXNzKSwgc2VsZiwKICAgICAgICAgKGxvbmcpc2VsZi5uYXZpZ2F0aW9uVHlw
ZSwKICNpZiBQTEFURk9STShJT1MpCi0gICAgICAgIChsb25nKXNlbGYuX3N5bnRoZXRpY0NsaWNr
VHlwZSwKKyAgICAgICAgKGxvbmcpc2VsZi5fc3ludGhldGljQ2xpY2tUeXBlLCBzZWxmLl9jbGlj
a0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzLngsIHNlbGYuX2NsaWNrTG9jYXRpb25JblJv
b3RWaWV3Q29vcmRpbmF0ZXMueSwKICNlbHNlCi0gICAgICAgIDBMLAorICAgICAgICAwTCwgMC4w
LCAwLjAsCiAjZW5kaWYKICAgICAgICAgc2VsZi5yZXF1ZXN0LCBzZWxmLnNvdXJjZUZyYW1lLCBz
ZWxmLnRhcmdldEZyYW1lXTsKIH0KQEAgLTE2Miw2ICsxNjMsMTEgQEAgLSAoV0tTeW50aGV0aWND
bGlja1R5cGUpX3N5bnRoZXRpY0NsaWNrVAogewogICAgIHJldHVybiB0b1dLU3ludGhldGljQ2xp
Y2tUeXBlKF9uYXZpZ2F0aW9uQWN0aW9uLT5zeW50aGV0aWNDbGlja1R5cGUoKSk7CiB9CisKKy0g
KENHUG9pbnQpX2NsaWNrTG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXMKK3sKKyAgICByZXR1
cm4gX25hdmlnYXRpb25BY3Rpb24tPmNsaWNrTG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXMo
KTsKK30KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb25Qcml2YXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rp
b25Qcml2YXRlLmgJKHJldmlzaW9uIDIxOTI3MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC01MSw2ICs1MSw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFdLU3ludGhldGljQ2wK
IAogI2lmIFRBUkdFVF9PU19JUEhPTkUKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkg
V0tTeW50aGV0aWNDbGlja1R5cGUgX3N5bnRoZXRpY0NsaWNrVHlwZSBXS19BUElfQVZBSUxBQkxF
KGlvcygxMC4wKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIENHUG9pbnQgX2Ns
aWNrTG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXMgV0tfQVBJX0FWQUlMQUJMRShpb3MoMTEu
MCkpOwogI2VuZGlmCiAKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAJKHJldmlzaW9uIDIxOTI3MikKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsMTcgQEAgc3RhdGljIFdlYk1vdXNl
RXZlbnQ6OlN5bnRoZXRpY0NsaWNrVHlwZQogICAgIAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxX
ZWJNb3VzZUV2ZW50OjpTeW50aGV0aWNDbGlja1R5cGU+KG1vdXNlRXZlbnQtPnN5bnRoZXRpY0Ns
aWNrVHlwZSgpKTsKIH0KKyAgICAKK3N0YXRpYyBGbG9hdFBvaW50IGNsaWNrTG9jYXRpb25JblJv
b3RWaWV3Q29vcmRpbmF0ZXNGb3JNb3VzZUV2ZW50KGNvbnN0IE1vdXNlRXZlbnQqIG1vdXNlRXZl
bnQpCit7CisgICAgaWYgKCFtb3VzZUV2ZW50KQorICAgICAgICByZXR1cm4geyB9OworICAgIAor
ICAgIGlmICghbW91c2VFdmVudC0+YnV0dG9uRG93bigpIHx8ICFtb3VzZUV2ZW50LT5pc1RydXN0
ZWQoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAKKyAgICByZXR1cm4gRmxvYXRQb2ludCht
b3VzZUV2ZW50LT5hYnNvbHV0ZUxvY2F0aW9uQ29udmV0ZWRUb1Jvb3RWaWV3WCgpLCBtb3VzZUV2
ZW50LT5hYnNvbHV0ZUxvY2F0aW9uQ29udmV0ZWRUb1Jvb3RWaWV3WSgpKTsKK30KIAogV2ViRXZl
bnQ6Ok1vZGlmaWVycyBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246Om1vZGlmaWVyc0Zv
ck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgbmF2aWdhdGlvbkFjdGlv
bikKIHsKQEAgLTk2LDYgKzEwNywxMSBAQCBXZWJNb3VzZUV2ZW50OjpTeW50aGV0aWNDbGlja1R5
cGUgSW5qZWN0CiB7CiAgICAgcmV0dXJuIHN5bnRoZXRpY0NsaWNrVHlwZUZvck1vdXNlRXZlbnQo
bW91c2VFdmVudEZvck5hdmlnYXRpb25BY3Rpb24obmF2aWdhdGlvbkFjdGlvbikpOwogfQorICAg
IAorRmxvYXRQb2ludCBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OmNsaWNrTG9jYXRp
b25JblJvb3RWaWV3Q29vcmRpbmF0ZXNGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRp
b25BY3Rpb24mIG5hdmlnYXRpb25BY3Rpb24pCit7CisgICAgcmV0dXJuIGNsaWNrTG9jYXRpb25J
blJvb3RWaWV3Q29vcmRpbmF0ZXNGb3JNb3VzZUV2ZW50KG1vdXNlRXZlbnRGb3JOYXZpZ2F0aW9u
QWN0aW9uKG5hdmlnYXRpb25BY3Rpb24pKTsKK30KIAogUmVmPEluamVjdGVkQnVuZGxlTmF2aWdh
dGlvbkFjdGlvbj4gSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV2ViRnJh
bWUqIGZyYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIFJlZlB0cjxGb3JtU3Rh
dGU+JiYgZm9ybVN0YXRlKQogewpAQCAtMTE0LDYgKzEzMCw3IEBAIEluamVjdGVkQnVuZGxlTmF2
aWdhdGlvbkFjdGlvbjo6SW5qZWN0ZWQKICAgICAgICAgbV9oaXRUZXN0UmVzdWx0ID0gSW5qZWN0
ZWRCdW5kbGVIaXRUZXN0UmVzdWx0OjpjcmVhdGUoZnJhbWUtPmNvcmVGcmFtZSgpLT5ldmVudEhh
bmRsZXIoKS5oaXRUZXN0UmVzdWx0QXRQb2ludChtb3VzZUV2ZW50LT5hYnNvbHV0ZUxvY2F0aW9u
KCkpKTsKICAgICAgICAgbV9tb3VzZUJ1dHRvbiAgID0gbW91c2VCdXR0b25Gb3JNb3VzZUV2ZW50
KG1vdXNlRXZlbnQpOwogICAgICAgICBtX3N5bnRoZXRpY0NsaWNrVHlwZSA9IHN5bnRoZXRpY0Ns
aWNrVHlwZUZvck5hdmlnYXRpb25BY3Rpb24obmF2aWdhdGlvbkFjdGlvbik7CisgICAgICAgIG1f
Y2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlcyA9IGNsaWNrTG9jYXRpb25JblJvb3RW
aWV3Q29vcmRpbmF0ZXNGb3JOYXZpZ2F0aW9uQWN0aW9uKG5hdmlnYXRpb25BY3Rpb24pOwogICAg
IH0KIAogICAgIGlmIChmb3JtU3RhdGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmgJKHJldmlzaW9uIDIxOTI3MikKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDEzICs1MCwxNSBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIFdlYkV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJzRm9yTmF2aWdhdGlvbkFjdGlvbihjb25z
dCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJik7CiAgICAgc3RhdGljIFdlYk1vdXNlRXZlbnQ6
OkJ1dHRvbiBtb3VzZUJ1dHRvbkZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgV2ViQ29yZTo6TmF2
aWdhdGlvbkFjdGlvbiYpOwogICAgIHN0YXRpYyBXZWJNb3VzZUV2ZW50OjpTeW50aGV0aWNDbGlj
a1R5cGUgc3ludGhldGljQ2xpY2tUeXBlRm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBXZWJDb3Jl
OjpOYXZpZ2F0aW9uQWN0aW9uJik7Ci0KKyAgICBzdGF0aWMgV2ViQ29yZTo6RmxvYXRQb2ludCBj
bGlja0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzRm9yTmF2aWdhdGlvbkFjdGlvbihjb25z
dCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJik7CisgICAgCiAgICAgV2ViQ29yZTo6TmF2aWdh
dGlvblR5cGUgbmF2aWdhdGlvblR5cGUoKSBjb25zdCB7IHJldHVybiBtX25hdmlnYXRpb25UeXBl
OyB9CiAgICAgV2ViRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmllcnMoKSBjb25zdCB7IHJldHVybiBt
X21vZGlmaWVyczsgfQogICAgIFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiBtb3VzZUJ1dHRvbigpIGNv
bnN0IHsgcmV0dXJuIG1fbW91c2VCdXR0b247IH0KICAgICBJbmplY3RlZEJ1bmRsZUhpdFRlc3RS
ZXN1bHQqIGhpdFRlc3RSZXN1bHQoKSBjb25zdCB7IHJldHVybiBtX2hpdFRlc3RSZXN1bHQuZ2V0
KCk7IH0KICAgICBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUqIGZvcm1FbGVtZW50KCkgY29uc3Qg
eyByZXR1cm4gbV9mb3JtRWxlbWVudC5nZXQoKTsgfQogICAgIFdlYk1vdXNlRXZlbnQ6OlN5bnRo
ZXRpY0NsaWNrVHlwZSBzeW50aGV0aWNDbGlja1R5cGUoKSBjb25zdCB7IHJldHVybiBtX3N5bnRo
ZXRpY0NsaWNrVHlwZTsgfQorICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgY2xpY2tMb2NhdGlvbklu
Um9vdFZpZXdDb29yZGluYXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fY2xpY2tMb2NhdGlvbkluUm9v
dFZpZXdDb29yZGluYXRlczsgfQogCiAgICAgYm9vbCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzKCkg
Y29uc3QgeyByZXR1cm4gbV9zaG91bGRPcGVuRXh0ZXJuYWxVUkxzOyB9CiAgICAgYm9vbCBzaG91
bGRUcnlBcHBMaW5rcygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkVHJ5QXBwTGlua3M7IH0KQEAg
LTY5LDYgKzcxLDcgQEAgcHJpdmF0ZToKICAgICBXZWJFdmVudDo6TW9kaWZpZXJzIG1fbW9kaWZp
ZXJzOwogICAgIFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiBtX21vdXNlQnV0dG9uOwogICAgIFdlYk1v
dXNlRXZlbnQ6OlN5bnRoZXRpY0NsaWNrVHlwZSBtX3N5bnRoZXRpY0NsaWNrVHlwZSB7IFdlYk1v
dXNlRXZlbnQ6Ok5vVGFwIH07CisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBtX2NsaWNrTG9jYXRp
b25JblJvb3RWaWV3Q29vcmRpbmF0ZXM7CiAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlSGl0VGVz
dFJlc3VsdD4gbV9oaXRUZXN0UmVzdWx0OwogICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZU5vZGVI
YW5kbGU+IG1fZm9ybUVsZW1lbnQ7CiAgICAgQXRvbWljU3RyaW5nIG1fZG93bmxvYWRBdHRyaWJ1
dGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCShyZXZpc2lvbiAyMTkyNzIpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI0MCw2ICsyNDAsNyBAQCBQYWdlKiBXZWJDaHJvbWVDbGll
bnQ6OmNyZWF0ZVdpbmRvdyhGcmFtCiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEubW9kaWZpZXJz
ID0gSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjptb2RpZmllcnNGb3JOYXZpZ2F0aW9u
QWN0aW9uKG5hdmlnYXRpb25BY3Rpb24pOwogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLm1vdXNl
QnV0dG9uID0gSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjptb3VzZUJ1dHRvbkZvck5h
dmlnYXRpb25BY3Rpb24obmF2aWdhdGlvbkFjdGlvbik7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRh
dGEuc3ludGhldGljQ2xpY2tUeXBlID0gSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpz
eW50aGV0aWNDbGlja1R5cGVGb3JOYXZpZ2F0aW9uQWN0aW9uKG5hdmlnYXRpb25BY3Rpb24pOwor
ICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLmNsaWNrTG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0
ZXMgPSBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OmNsaWNrTG9jYXRpb25JblJvb3RW
aWV3Q29vcmRpbmF0ZXNGb3JOYXZpZ2F0aW9uQWN0aW9uKG5hdmlnYXRpb25BY3Rpb24pOwogICAg
IG5hdmlnYXRpb25BY3Rpb25EYXRhLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyID0gd2ViUHJv
Y2Vzcy51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcihuYXZpZ2F0aW9uQWN0aW9uLnVzZXJHZXN0
dXJlVG9rZW4oKSk7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEuY2FuSGFuZGxlUmVxdWVzdCA9
IG1fcGFnZS5jYW5IYW5kbGVSZXF1ZXN0KHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkpOwogICAg
IG5hdmlnYXRpb25BY3Rpb25EYXRhLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBuYXZp
Z2F0aW9uQWN0aW9uLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAyMTkyNzIpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzM2LDYgKzczNiw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGVjaWQKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb2RpZmllcnMg
PSBhY3Rpb24tPm1vZGlmaWVycygpOwogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLm1vdXNlQnV0
dG9uID0gYWN0aW9uLT5tb3VzZUJ1dHRvbigpOwogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLnN5
bnRoZXRpY0NsaWNrVHlwZSA9IGFjdGlvbi0+c3ludGhldGljQ2xpY2tUeXBlKCk7CisgICAgbmF2
aWdhdGlvbkFjdGlvbkRhdGEuY2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlcyA9IGFj
dGlvbi0+Y2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlcygpOwogICAgIG5hdmlnYXRp
b25BY3Rpb25EYXRhLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyID0gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIobmF2aWdhdGlvbkFjdGlvbi51c2Vy
R2VzdHVyZVRva2VuKCkpOwogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLmNhbkhhbmRsZVJlcXVl
c3QgPSB3ZWJQYWdlLT5jYW5IYW5kbGVSZXF1ZXN0KHJlcXVlc3QpOwogICAgIG5hdmlnYXRpb25B
Y3Rpb25EYXRhLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBuYXZpZ2F0aW9uQWN0aW9u
LnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKTsKQEAgLTc4Myw2ICs3ODQsNyBAQCB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkCiAgICAgbmF2aWdhdGlvbkFjdGlv
bkRhdGEubW9kaWZpZXJzID0gYWN0aW9uLT5tb2RpZmllcnMoKTsKICAgICBuYXZpZ2F0aW9uQWN0
aW9uRGF0YS5tb3VzZUJ1dHRvbiA9IGFjdGlvbi0+bW91c2VCdXR0b24oKTsKICAgICBuYXZpZ2F0
aW9uQWN0aW9uRGF0YS5zeW50aGV0aWNDbGlja1R5cGUgPSBhY3Rpb24tPnN5bnRoZXRpY0NsaWNr
VHlwZSgpOworICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLmNsaWNrTG9jYXRpb25JblJvb3RWaWV3
Q29vcmRpbmF0ZXMgPSBhY3Rpb24tPmNsaWNrTG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXMo
KTsKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllciA9
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKG5hdmln
YXRpb25BY3Rpb24udXNlckdlc3R1cmVUb2tlbigpKTsKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0
YS5jYW5IYW5kbGVSZXF1ZXN0ID0gd2ViUGFnZS0+Y2FuSGFuZGxlUmVxdWVzdChyZXF1ZXN0KTsK
ICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0g
bmF2aWdhdGlvbkFjdGlvbi5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314996</attachid>
            <date>2017-07-10 11:00:18 -0700</date>
            <delta_ts>2017-07-10 11:27:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174233-20170710110018.patch</filename>
            <type>text/plain</type>
            <size>16130</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxOTI3MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE3LTA3LTEwICBNZWdhbiBH
YXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGxvY2F0aW9u
IHRvIE5hdmlnYXRpb25BY3Rpb25EYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzQyMzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIGRvbS9N
b3VzZVJlbGF0ZWRFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVu
dDo6YWJzb2x1dGVMb2NhdGlvbkNvbnZlcnRlZFRvUm9vdFZpZXcpOgorICAgICAgICAqIGRvbS9N
b3VzZVJlbGF0ZWRFdmVudC5oOgorCiAyMDE3LTA3LTA3ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVz
QGFwcGxlLmNvbT4KIAogICAgICAgICBbQXBwQ2FjaGVdIElnbm9yZSBmYWxsYmFjayBlbnRyaWVz
IHdob3NlIG5hbWVzcGFjZSBpcyBub3QgcHJlZml4ZWQgd2l0aCBtYW5pZmVzdCBwYXRoCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHAJKHJldmlzaW9uIDIxOTI3
MikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiTGF5b3V0UG9pbnQu
aCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgog
CkBAIC0xNjUsNiArMTY2LDExIEBAIHZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6OmNvbXB1dGVSZWxh
dGl2ZVAKIAogICAgIG1faGFzQ2FjaGVkUmVsYXRpdmVQb3NpdGlvbiA9IHRydWU7CiB9CisgICAg
CitJbnRQb2ludCBNb3VzZVJlbGF0ZWRFdmVudDo6YWJzb2x1dGVMb2NhdGlvbkNvbnZlcnRlZFRv
Um9vdFZpZXcoKSBjb25zdAoreworICAgIHJldHVybiBmcmFtZVZpZXcoKS0+Y29udGVudHNUb1Jv
b3RWaWV3KHJvdW5kZWRJbnRQb2ludChtX2Fic29sdXRlTG9jYXRpb24pKTsKK30KIAogaW50IE1v
dXNlUmVsYXRlZEV2ZW50OjpsYXllclgoKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL01v
dXNlUmVsYXRlZEV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL01vdXNl
UmVsYXRlZEV2ZW50LmgJKHJldmlzaW9uIDIxOTI3MikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9N
b3VzZVJlbGF0ZWRFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGlzU2ltdWxhdGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1NpbXVsYXRlZDsg
fQogICAgIGludCBwYWdlWCgpIGNvbnN0IGZpbmFsOwogICAgIGludCBwYWdlWSgpIGNvbnN0IGZp
bmFsOworICAgIFdFQkNPUkVfRVhQT1JUIEludFBvaW50IGFic29sdXRlTG9jYXRpb25Db252ZXJ0
ZWRUb1Jvb3RWaWV3KCkgY29uc3Q7CiAgICAgdmlydHVhbCBjb25zdCBMYXlvdXRQb2ludCYgcGFn
ZUxvY2F0aW9uKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IHgoKSBjb25zdDsKICAg
ICBXRUJDT1JFX0VYUE9SVCBpbnQgeSgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24g
MjE5Mjk5KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMzEgQEAKKzIwMTctMDctMTAgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFw
cGxlLmNvbT4KKworICAgICAgICBBZGQgbG9jYXRpb24gdG8gTmF2aWdhdGlvbkFjdGlvbkRhdGEK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDIzMwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVk
L05hdmlnYXRpb25BY3Rpb25EYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvbkFj
dGlvbkRhdGE6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRh
OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9OYXZpZ2F0aW9uQWN0aW9uRGF0YS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkFjdGlvbi5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uLm1tOgorICAgICAgICAoLVtXS05h
dmlnYXRpb25BY3Rpb24gZGVzY3JpcHRpb25dKToKKyAgICAgICAgKC1bV0tOYXZpZ2F0aW9uQWN0
aW9uIF9jbGlja0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzXSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb25Qcml2YXRlLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpjbGlja0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVz
Rm9yTW91c2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlTmF2aWdhdGlv
bkFjdGlvbjo6Y2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlc0Zvck5hdmlnYXRpb25B
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246
OkluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaDoKKyAgICAgICAg
KFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpjbGlja0xvY2F0aW9uSW5S
b290Vmlld0Nvb3JkaW5hdGVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6
Y3JlYXRlV2luZG93KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbik6CisKIDIwMTctMDctMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBGdXJ0aGVyIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSAvIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBjbGVhbiB1cApJbmRleDogU291cmNlL1dlYktpdDIv
U2hhcmVkL05hdmlnYXRpb25BY3Rpb25EYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvTmF2aWdhdGlvbkFjdGlvbkRhdGEuY3BwCShyZXZpc2lvbiAyMTkyNzIpCisr
KyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF2aWdhdGlvbkFjdGlvbkRhdGEuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNp
bmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgorI2luY2x1ZGUgIldlYkNv
cmVBcmd1bWVudENvZGVycy5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNDQs
NiArNDUsNyBAQCB2b2lkIE5hdmlnYXRpb25BY3Rpb25EYXRhOjplbmNvZGUoSVBDOjpFCiAgICAg
ZW5jb2RlciA8PCBjYW5IYW5kbGVSZXF1ZXN0OwogICAgIGVuY29kZXIuZW5jb2RlRW51bShzaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsKICAgICBlbmNvZGVyIDw8IGRvd25sb2FkQXR0cmli
dXRlOworICAgIGVuY29kZXIgPDwgY2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlczsK
IH0KIAogYm9vbCBOYXZpZ2F0aW9uQWN0aW9uRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVj
b2RlciwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmIHJlc3VsdCkKQEAgLTY0LDYgKzY2LDggQEAgYm9v
bCBOYXZpZ2F0aW9uQWN0aW9uRGF0YTo6ZGVjb2RlKElQQzo6RAogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZG93bmxvYWRBdHRyaWJ1dGUpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY2xp
Y2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlcykpCisgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIHJldHVybiB0cnVlOwogfQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL05hdmln
YXRpb25BY3Rpb25EYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL05h
dmlnYXRpb25BY3Rpb25EYXRhLmgJKHJldmlzaW9uIDIxOTI3MikKKysrIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9OYXZpZ2F0aW9uQWN0aW9uRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsy
Nyw3IEBACiAjZGVmaW5lIE5hdmlnYXRpb25BY3Rpb25EYXRhX2gKIAogI2luY2x1ZGUgIldlYkV2
ZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFBvaW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9GcmFtZUxvYWRlclR5cGVzLmg+CiAKIG5hbWVzcGFjZSBJUEMgewpAQCAtNDgsNiArNDksNyBA
QCBzdHJ1Y3QgTmF2aWdhdGlvbkFjdGlvbkRhdGEgewogICAgIGJvb2wgY2FuSGFuZGxlUmVxdWVz
dCB7IGZhbHNlIH07CiAgICAgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBz
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHsgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cgfTsKICAgICBXVEY6OlN0cmluZyBkb3dubG9hZEF0
dHJpYnV0ZTsKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IGNsaWNrTG9jYXRpb25JblJvb3RWaWV3
Q29vcmRpbmF0ZXM7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0FQSU5hdmlnYXRpb25BY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25BY3Rpb24uaAkocmV2aXNpb24gMjE5MjcyKQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTYzLDYgKzYzLDcgQEAgcHVibGljOgogICAgIFdlYktpdDo6V2ViRXZlbnQ6Ok1v
ZGlmaWVycyBtb2RpZmllcnMoKSBjb25zdCB7IHJldHVybiBtX25hdmlnYXRpb25BY3Rpb25EYXRh
Lm1vZGlmaWVyczsgfQogICAgIFdlYktpdDo6V2ViTW91c2VFdmVudDo6QnV0dG9uIG1vdXNlQnV0
dG9uKCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb3VzZUJ1dHRvbjsg
fQogICAgIFdlYktpdDo6V2ViTW91c2VFdmVudDo6U3ludGhldGljQ2xpY2tUeXBlIHN5bnRoZXRp
Y0NsaWNrVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEuc3ludGhl
dGljQ2xpY2tUeXBlOyB9CisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBjbGlja0xvY2F0aW9uSW5S
b290Vmlld0Nvb3JkaW5hdGVzKCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0aW9uRGF0
YS5jbGlja0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzOyB9CiAgICAgYm9vbCBjYW5IYW5k
bGVSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0aW9uRGF0YS5jYW5IYW5k
bGVSZXF1ZXN0OyB9CiAgICAgYm9vbCBzaG91bGRPcGVuRXh0ZXJuYWxTY2hlbWVzKCkgY29uc3Qg
eyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0aW9uRGF0YS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5ID09IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZEFsbG93
IHx8IG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9
PSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGRBbGxvd0V4dGVy
bmFsU2NoZW1lczsgfQogICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzKCkgY29uc3QgeyByZXR1
cm4gbV9zaG91bGRPcGVuQXBwTGlua3MgJiYgbV9uYXZpZ2F0aW9uQWN0aW9uRGF0YS5zaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5ID09IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3k6OlNob3VsZEFsbG93OyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvbi5tbQkocmV2aXNpb24gMjE5
MjcyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25B
Y3Rpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgIk5hdmln
YXRpb25BY3Rpb25EYXRhLmgiCiAjaW1wb3J0ICJXS0ZyYW1lSW5mb0ludGVybmFsLmgiCiAjaW1w
b3J0ICJfV0tVc2VySW5pdGlhdGVkQWN0aW9uSW50ZXJuYWwuaCIKKyNpbXBvcnQgPFdlYkNvcmUv
RmxvYXRQb2ludC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBAaW1wbGVtZW50YXRp
b24gV0tOYXZpZ2F0aW9uQWN0aW9uCkBAIC0xMjMsMTIgKzEyNCwxMiBAQCAtICh2b2lkKWRlYWxs
b2MKIAogLSAoTlNTdHJpbmcgKilkZXNjcmlwdGlvbgogewotICAgIHJldHVybiBbTlNTdHJpbmcg
c3RyaW5nV2l0aEZvcm1hdDpAIjwlQDogJXA7IG5hdmlnYXRpb25UeXBlID0gJWxkOyBzeW50aGV0
aWNDbGlja1R5cGUgPSAlbGQ7IHJlcXVlc3QgPSAlQDsgc291cmNlRnJhbWUgPSAlQDsgdGFyZ2V0
RnJhbWUgPSAlQD4iLCBOU1N0cmluZ0Zyb21DbGFzcyhzZWxmLmNsYXNzKSwgc2VsZiwKKyAgICBy
ZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8JUA6ICVwOyBuYXZpZ2F0aW9uVHlw
ZSA9ICVsZDsgc3ludGhldGljQ2xpY2tUeXBlID0gJWxkOyBwb3NpdGlvbiB4ID0gJS4yZiB5ID0g
JS4yZiByZXF1ZXN0ID0gJUA7IHNvdXJjZUZyYW1lID0gJUA7IHRhcmdldEZyYW1lID0gJUA+Iiwg
TlNTdHJpbmdGcm9tQ2xhc3Moc2VsZi5jbGFzcyksIHNlbGYsCiAgICAgICAgIChsb25nKXNlbGYu
bmF2aWdhdGlvblR5cGUsCiAjaWYgUExBVEZPUk0oSU9TKQotICAgICAgICAobG9uZylzZWxmLl9z
eW50aGV0aWNDbGlja1R5cGUsCisgICAgICAgIChsb25nKXNlbGYuX3N5bnRoZXRpY0NsaWNrVHlw
ZSwgc2VsZi5fY2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlcy54LCBzZWxmLl9jbGlj
a0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzLnksCiAjZWxzZQotICAgICAgICAwTCwKKyAg
ICAgICAgMEwsIDAuMCwgMC4wLAogI2VuZGlmCiAgICAgICAgIHNlbGYucmVxdWVzdCwgc2VsZi5z
b3VyY2VGcmFtZSwgc2VsZi50YXJnZXRGcmFtZV07CiB9CkBAIC0xNjIsNiArMTYzLDExIEBAIC0g
KFdLU3ludGhldGljQ2xpY2tUeXBlKV9zeW50aGV0aWNDbGlja1QKIHsKICAgICByZXR1cm4gdG9X
S1N5bnRoZXRpY0NsaWNrVHlwZShfbmF2aWdhdGlvbkFjdGlvbi0+c3ludGhldGljQ2xpY2tUeXBl
KCkpOwogfQorCistIChDR1BvaW50KV9jbGlja0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVz
Cit7CisgICAgcmV0dXJuIF9uYXZpZ2F0aW9uQWN0aW9uLT5jbGlja0xvY2F0aW9uSW5Sb290Vmll
d0Nvb3JkaW5hdGVzKCk7Cit9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uUHJpdmF0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tO
YXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZS5oCShyZXZpc2lvbiAyMTkyNzIpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvblByaXZhdGUuaAkod29y
a2luZyBjb3B5KQpAQCAtNTEsNiArNTEsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBX
S1N5bnRoZXRpY0NsCiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCiBAcHJvcGVydHkgKG5vbmF0b21p
YywgcmVhZG9ubHkpIFdLU3ludGhldGljQ2xpY2tUeXBlIF9zeW50aGV0aWNDbGlja1R5cGUgV0tf
QVBJX0FWQUlMQUJMRShpb3MoMTAuMCkpOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
KSBDR1BvaW50IF9jbGlja0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzIFdLX0FQSV9BVkFJ
TEFCTEUoaW9zKDExLjApKTsKICNlbmRpZgogCiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwCShyZXZpc2lvbiAyMTkyNzIpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
TmF2aWdhdGlvbkFjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDE3IEBAIHN0
YXRpYyBXZWJNb3VzZUV2ZW50OjpTeW50aGV0aWNDbGlja1R5cGUKICAgICAKICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8V2ViTW91c2VFdmVudDo6U3ludGhldGljQ2xpY2tUeXBlPihtb3VzZUV2ZW50
LT5zeW50aGV0aWNDbGlja1R5cGUoKSk7CiB9CisgICAgCitzdGF0aWMgRmxvYXRQb2ludCBjbGlj
a0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzRm9yTW91c2VFdmVudChjb25zdCBNb3VzZUV2
ZW50KiBtb3VzZUV2ZW50KQoreworICAgIGlmICghbW91c2VFdmVudCkKKyAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICAKKyAgICBpZiAoIW1vdXNlRXZlbnQtPmJ1dHRvbkRvd24oKSB8fCAhbW91c2VF
dmVudC0+aXNUcnVzdGVkKCkpCisgICAgICAgIHJldHVybiB7IH07CisgICAgCisgICAgcmV0dXJu
IG1vdXNlRXZlbnQtPmFic29sdXRlTG9jYXRpb25Db252ZXJ0ZWRUb1Jvb3RWaWV3KCk7Cit9CiAK
IFdlYkV2ZW50OjpNb2RpZmllcnMgSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjptb2Rp
ZmllcnNGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIG5hdmlnYXRp
b25BY3Rpb24pCiB7CkBAIC05Niw2ICsxMDcsMTEgQEAgV2ViTW91c2VFdmVudDo6U3ludGhldGlj
Q2xpY2tUeXBlIEluamVjdAogewogICAgIHJldHVybiBzeW50aGV0aWNDbGlja1R5cGVGb3JNb3Vz
ZUV2ZW50KG1vdXNlRXZlbnRGb3JOYXZpZ2F0aW9uQWN0aW9uKG5hdmlnYXRpb25BY3Rpb24pKTsK
IH0KKyAgICAKK0Zsb2F0UG9pbnQgSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpjbGlj
a0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzRm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBO
YXZpZ2F0aW9uQWN0aW9uJiBuYXZpZ2F0aW9uQWN0aW9uKQoreworICAgIHJldHVybiBjbGlja0xv
Y2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzRm9yTW91c2VFdmVudChtb3VzZUV2ZW50Rm9yTmF2
aWdhdGlvbkFjdGlvbihuYXZpZ2F0aW9uQWN0aW9uKSk7Cit9CiAKIFJlZjxJbmplY3RlZEJ1bmRs
ZU5hdmlnYXRpb25BY3Rpb24+IEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRl
KFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBSZWZQdHI8
Rm9ybVN0YXRlPiYmIGZvcm1TdGF0ZSkKIHsKQEAgLTExNCw2ICsxMzAsNyBAQCBJbmplY3RlZEJ1
bmRsZU5hdmlnYXRpb25BY3Rpb246OkluamVjdGVkCiAgICAgICAgIG1faGl0VGVzdFJlc3VsdCA9
IEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDo6Y3JlYXRlKGZyYW1lLT5jb3JlRnJhbWUoKS0+
ZXZlbnRIYW5kbGVyKCkuaGl0VGVzdFJlc3VsdEF0UG9pbnQobW91c2VFdmVudC0+YWJzb2x1dGVM
b2NhdGlvbigpKSk7CiAgICAgICAgIG1fbW91c2VCdXR0b24gICA9IG1vdXNlQnV0dG9uRm9yTW91
c2VFdmVudChtb3VzZUV2ZW50KTsKICAgICAgICAgbV9zeW50aGV0aWNDbGlja1R5cGUgPSBzeW50
aGV0aWNDbGlja1R5cGVGb3JOYXZpZ2F0aW9uQWN0aW9uKG5hdmlnYXRpb25BY3Rpb24pOworICAg
ICAgICBtX2NsaWNrTG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBjbGlja0xvY2F0aW9u
SW5Sb290Vmlld0Nvb3JkaW5hdGVzRm9yTmF2aWdhdGlvbkFjdGlvbihuYXZpZ2F0aW9uQWN0aW9u
KTsKICAgICB9CiAKICAgICBpZiAoZm9ybVN0YXRlKQpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5oCShyZXZpc2lvbiAyMTkyNzIpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdh
dGlvbkFjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCwxMyArNTAsMTUgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBXZWJFdmVudDo6TW9kaWZpZXJzIG1vZGlmaWVyc0Zvck5hdmlnYXRpb25BY3Rp
b24oY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYpOwogICAgIHN0YXRpYyBXZWJNb3Vz
ZUV2ZW50OjpCdXR0b24gbW91c2VCdXR0b25Gb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFdlYkNv
cmU6Ok5hdmlnYXRpb25BY3Rpb24mKTsKICAgICBzdGF0aWMgV2ViTW91c2VFdmVudDo6U3ludGhl
dGljQ2xpY2tUeXBlIHN5bnRoZXRpY0NsaWNrVHlwZUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3Qg
V2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYpOwotCisgICAgc3RhdGljIFdlYkNvcmU6OkZsb2F0
UG9pbnQgY2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlc0Zvck5hdmlnYXRpb25BY3Rp
b24oY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYpOworICAgIAogICAgIFdlYkNvcmU6
Ok5hdmlnYXRpb25UeXBlIG5hdmlnYXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0
aW9uVHlwZTsgfQogICAgIFdlYkV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJzKCkgY29uc3QgeyBy
ZXR1cm4gbV9tb2RpZmllcnM7IH0KICAgICBXZWJNb3VzZUV2ZW50OjpCdXR0b24gbW91c2VCdXR0
b24oKSBjb25zdCB7IHJldHVybiBtX21vdXNlQnV0dG9uOyB9CiAgICAgSW5qZWN0ZWRCdW5kbGVI
aXRUZXN0UmVzdWx0KiBoaXRUZXN0UmVzdWx0KCkgY29uc3QgeyByZXR1cm4gbV9oaXRUZXN0UmVz
dWx0LmdldCgpOyB9CiAgICAgSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlKiBmb3JtRWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fZm9ybUVsZW1lbnQuZ2V0KCk7IH0KICAgICBXZWJNb3VzZUV2ZW50
OjpTeW50aGV0aWNDbGlja1R5cGUgc3ludGhldGljQ2xpY2tUeXBlKCkgY29uc3QgeyByZXR1cm4g
bV9zeW50aGV0aWNDbGlja1R5cGU7IH0KKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IGNsaWNrTG9j
YXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXMoKSBjb25zdCB7IHJldHVybiBtX2NsaWNrTG9jYXRp
b25JblJvb3RWaWV3Q29vcmRpbmF0ZXM7IH0KIAogICAgIGJvb2wgc2hvdWxkT3BlbkV4dGVybmFs
VVJMcygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkT3BlbkV4dGVybmFsVVJMczsgfQogICAgIGJv
b2wgc2hvdWxkVHJ5QXBwTGlua3MoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFRyeUFwcExpbmtz
OyB9CkBAIC02OSw2ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgV2ViRXZlbnQ6Ok1vZGlmaWVycyBt
X21vZGlmaWVyczsKICAgICBXZWJNb3VzZUV2ZW50OjpCdXR0b24gbV9tb3VzZUJ1dHRvbjsKICAg
ICBXZWJNb3VzZUV2ZW50OjpTeW50aGV0aWNDbGlja1R5cGUgbV9zeW50aGV0aWNDbGlja1R5cGUg
eyBXZWJNb3VzZUV2ZW50OjpOb1RhcCB9OworICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgbV9jbGlj
a0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzOwogICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRs
ZUhpdFRlc3RSZXN1bHQ+IG1faGl0VGVzdFJlc3VsdDsKICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5k
bGVOb2RlSGFuZGxlPiBtX2Zvcm1FbGVtZW50OwogICAgIEF0b21pY1N0cmluZyBtX2Rvd25sb2Fk
QXR0cmlidXRlOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkocmV2aXNpb24gMjE5Mjcy
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDAsNiArMjQwLDcgQEAgUGFnZSogV2ViQ2hy
b21lQ2xpZW50OjpjcmVhdGVXaW5kb3coRnJhbQogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLm1v
ZGlmaWVycyA9IEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6bW9kaWZpZXJzRm9yTmF2
aWdhdGlvbkFjdGlvbihuYXZpZ2F0aW9uQWN0aW9uKTsKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0
YS5tb3VzZUJ1dHRvbiA9IEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6bW91c2VCdXR0
b25Gb3JOYXZpZ2F0aW9uQWN0aW9uKG5hdmlnYXRpb25BY3Rpb24pOwogICAgIG5hdmlnYXRpb25B
Y3Rpb25EYXRhLnN5bnRoZXRpY0NsaWNrVHlwZSA9IEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFj
dGlvbjo6c3ludGhldGljQ2xpY2tUeXBlRm9yTmF2aWdhdGlvbkFjdGlvbihuYXZpZ2F0aW9uQWN0
aW9uKTsKKyAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5jbGlja0xvY2F0aW9uSW5Sb290Vmlld0Nv
b3JkaW5hdGVzID0gSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpjbGlja0xvY2F0aW9u
SW5Sb290Vmlld0Nvb3JkaW5hdGVzRm9yTmF2aWdhdGlvbkFjdGlvbihuYXZpZ2F0aW9uQWN0aW9u
KTsKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllciA9
IHdlYlByb2Nlc3MudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIobmF2aWdhdGlvbkFjdGlvbi51
c2VyR2VzdHVyZVRva2VuKCkpOwogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLmNhbkhhbmRsZVJl
cXVlc3QgPSBtX3BhZ2UuY2FuSGFuZGxlUmVxdWVzdChyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgp
KTsKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
ID0gbmF2aWdhdGlvbkFjdGlvbi5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMjE5MjcyKQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczNiw2ICs3MzYsNyBAQCB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkCiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEubW9k
aWZpZXJzID0gYWN0aW9uLT5tb2RpZmllcnMoKTsKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5t
b3VzZUJ1dHRvbiA9IGFjdGlvbi0+bW91c2VCdXR0b24oKTsKICAgICBuYXZpZ2F0aW9uQWN0aW9u
RGF0YS5zeW50aGV0aWNDbGlja1R5cGUgPSBhY3Rpb24tPnN5bnRoZXRpY0NsaWNrVHlwZSgpOwor
ICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLmNsaWNrTG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0
ZXMgPSBhY3Rpb24tPmNsaWNrTG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXMoKTsKICAgICBu
YXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllciA9IFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKG5hdmlnYXRpb25BY3Rp
b24udXNlckdlc3R1cmVUb2tlbigpKTsKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5jYW5IYW5k
bGVSZXF1ZXN0ID0gd2ViUGFnZS0+Y2FuSGFuZGxlUmVxdWVzdChyZXF1ZXN0KTsKICAgICBuYXZp
Z2F0aW9uQWN0aW9uRGF0YS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gbmF2aWdhdGlv
bkFjdGlvbi5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCk7CkBAIC03ODMsNiArNzg0LDcg
QEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgIG5hdmlnYXRp
b25BY3Rpb25EYXRhLm1vZGlmaWVycyA9IGFjdGlvbi0+bW9kaWZpZXJzKCk7CiAgICAgbmF2aWdh
dGlvbkFjdGlvbkRhdGEubW91c2VCdXR0b24gPSBhY3Rpb24tPm1vdXNlQnV0dG9uKCk7CiAgICAg
bmF2aWdhdGlvbkFjdGlvbkRhdGEuc3ludGhldGljQ2xpY2tUeXBlID0gYWN0aW9uLT5zeW50aGV0
aWNDbGlja1R5cGUoKTsKKyAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5jbGlja0xvY2F0aW9uSW5S
b290Vmlld0Nvb3JkaW5hdGVzID0gYWN0aW9uLT5jbGlja0xvY2F0aW9uSW5Sb290Vmlld0Nvb3Jk
aW5hdGVzKCk7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50
aWZpZXIgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmll
cihuYXZpZ2F0aW9uQWN0aW9uLnVzZXJHZXN0dXJlVG9rZW4oKSk7CiAgICAgbmF2aWdhdGlvbkFj
dGlvbkRhdGEuY2FuSGFuZGxlUmVxdWVzdCA9IHdlYlBhZ2UtPmNhbkhhbmRsZVJlcXVlc3QocmVx
dWVzdCk7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSA9IG5hdmlnYXRpb25BY3Rpb24uc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314998</attachid>
            <date>2017-07-10 11:27:19 -0700</date>
            <delta_ts>2017-07-10 12:08:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174233-20170710112719.patch</filename>
            <type>text/plain</type>
            <size>16428</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxOTI3MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE3LTA3LTEwICBNZWdhbiBH
YXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGxvY2F0aW9u
IHRvIE5hdmlnYXRpb25BY3Rpb25EYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzQyMzMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5MTY1NTE4
PgorICAgICAgICAKKyAgICAgICAgQWRkIHRoZSByb290IHZpZXcgbG9jYXRpb24gb2YgYSB0YXAg
dG8gYSBOYXZpZ2F0aW9uQWN0aW9uIHRvIHZlbmQgdG8gU2FmYXJpLgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IHNtYWxsIGVub3VnaCBjaGFu
Z2UgdG8gbm90IGJlIHRlc3RlZCBhbG9uZS4KKworICAgICAgICAqIGRvbS9Nb3VzZVJlbGF0ZWRF
dmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6YWJzb2x1dGVM
b2NhdGlvbkNvbnZlcnRlZFRvUm9vdFZpZXcpOgorICAgICAgICAqIGRvbS9Nb3VzZVJlbGF0ZWRF
dmVudC5oOgorCiAyMDE3LTA3LTA3ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4K
IAogICAgICAgICBbQXBwQ2FjaGVdIElnbm9yZSBmYWxsYmFjayBlbnRyaWVzIHdob3NlIG5hbWVz
cGFjZSBpcyBub3QgcHJlZml4ZWQgd2l0aCBtYW5pZmVzdCBwYXRoCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHAJKHJldmlzaW9uIDIxOTI3MikKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDYgKzI2LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAj
aW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiTGF5b3V0UG9pbnQuaCIKICNpbmNsdWRl
ICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogCkBAIC0xNjUsNiAr
MTY2LDExIEBAIHZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6OmNvbXB1dGVSZWxhdGl2ZVAKIAogICAg
IG1faGFzQ2FjaGVkUmVsYXRpdmVQb3NpdGlvbiA9IHRydWU7CiB9CisgICAgCitJbnRQb2ludCBN
b3VzZVJlbGF0ZWRFdmVudDo6YWJzb2x1dGVMb2NhdGlvbkNvbnZlcnRlZFRvUm9vdFZpZXcoKSBj
b25zdAoreworICAgIHJldHVybiBmcmFtZVZpZXcoKS0+Y29udGVudHNUb1Jvb3RWaWV3KHJvdW5k
ZWRJbnRQb2ludChtX2Fic29sdXRlTG9jYXRpb24pKTsKK30KIAogaW50IE1vdXNlUmVsYXRlZEV2
ZW50OjpsYXllclgoKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50
LmgJKHJldmlzaW9uIDIxOTI3MikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRF
dmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBib29s
IGlzU2ltdWxhdGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1NpbXVsYXRlZDsgfQogICAgIGludCBw
YWdlWCgpIGNvbnN0IGZpbmFsOwogICAgIGludCBwYWdlWSgpIGNvbnN0IGZpbmFsOworICAgIFdF
QkNPUkVfRVhQT1JUIEludFBvaW50IGFic29sdXRlTG9jYXRpb25Db252ZXJ0ZWRUb1Jvb3RWaWV3
KCkgY29uc3Q7CiAgICAgdmlydHVhbCBjb25zdCBMYXlvdXRQb2ludCYgcGFnZUxvY2F0aW9uKCkg
Y29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IHgoKSBjb25zdDsKICAgICBXRUJDT1JFX0VY
UE9SVCBpbnQgeSgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMjE5Mjk5KQorKysg
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAK
KzIwMTctMDctMTAgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBZGQgbG9jYXRpb24gdG8gTmF2aWdhdGlvbkFjdGlvbkRhdGEKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDIzMworICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMjkxNjU1MTg+CisgICAgICAgIAorICAgICAgICBBZGQgdGhlIHJvb3Qgdmll
dyBsb2NhdGlvbiBvZiBhIHRhcCB0byBhIE5hdmlnYXRpb25BY3Rpb24gdG8gdmVuZCB0byBTYWZh
cmkuCisgICAgICAgIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFNoYXJlZC9OYXZpZ2F0aW9uQWN0aW9uRGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5hdmlnYXRpb25BY3Rpb25EYXRhOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0
aW9uQWN0aW9uRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvTmF2aWdhdGlvbkFjdGlv
bkRhdGEuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25BY3Rpb24uaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvbi5tbToKKyAg
ICAgICAgKC1bV0tOYXZpZ2F0aW9uQWN0aW9uIGRlc2NyaXB0aW9uXSk6CisgICAgICAgICgtW1dL
TmF2aWdhdGlvbkFjdGlvbiBfY2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlc10pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZp
Z2F0aW9uQWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y2xpY2tMb2NhdGlvbkluUm9vdFZp
ZXdDb29yZGluYXRlc0Zvck1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1
bmRsZU5hdmlnYXRpb25BY3Rpb246OmNsaWNrTG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXNG
b3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOYXZp
Z2F0aW9uQWN0aW9uOjpJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9u
Lmg6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6Y2xp
Y2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJD
aHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorCiAyMDE3LTA3LTEwICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRnVydGhlciBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUgLyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgY2xlYW4gdXAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9OYXZpZ2F0aW9uQWN0aW9uRGF0YS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvU2hhcmVkL05hdmlnYXRpb25BY3Rpb25EYXRhLmNwcAkocmV2aXNp
b24gMjE5MjcyKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL05hdmlnYXRpb25BY3Rpb25EYXRh
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkFyZ3VtZW50
Q29kZXJzLmgiCiAjaW5jbHVkZSAiRGVjb2Rlci5oIgogI2luY2x1ZGUgIkVuY29kZXIuaCIKKyNp
bmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKQEAgLTQ0LDYgKzQ1LDcgQEAgdm9pZCBOYXZpZ2F0aW9uQWN0aW9uRGF0YTo6ZW5jb2Rl
KElQQzo6RQogICAgIGVuY29kZXIgPDwgY2FuSGFuZGxlUmVxdWVzdDsKICAgICBlbmNvZGVyLmVu
Y29kZUVudW0oc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CiAgICAgZW5jb2RlciA8PCBk
b3dubG9hZEF0dHJpYnV0ZTsKKyAgICBlbmNvZGVyIDw8IGNsaWNrTG9jYXRpb25JblJvb3RWaWV3
Q29vcmRpbmF0ZXM7CiB9CiAKIGJvb2wgTmF2aWdhdGlvbkFjdGlvbkRhdGE6OmRlY29kZShJUEM6
OkRlY29kZXImIGRlY29kZXIsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiByZXN1bHQpCkBAIC02NCw2
ICs2Niw4IEBAIGJvb2wgTmF2aWdhdGlvbkFjdGlvbkRhdGE6OmRlY29kZShJUEM6OkQKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmRvd25sb2Fk
QXR0cmlidXRlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocmVzdWx0LmNsaWNrTG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXMpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9OYXZpZ2F0aW9uQWN0aW9uRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9OYXZpZ2F0aW9uQWN0aW9uRGF0YS5oCShyZXZpc2lvbiAyMTkyNzIpCisrKyBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF2aWdhdGlvbkFjdGlvbkRhdGEuaAkod29ya2luZyBjb3B5
KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBOYXZpZ2F0aW9uQWN0aW9uRGF0YV9oCiAKICNp
bmNsdWRlICJXZWJFdmVudC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRQb2ludC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPgogCiBuYW1lc3BhY2UgSVBDIHsKQEAg
LTQ4LDYgKzQ5LDcgQEAgc3RydWN0IE5hdmlnYXRpb25BY3Rpb25EYXRhIHsKICAgICBib29sIGNh
bkhhbmRsZVJlcXVlc3QgeyBmYWxzZSB9OwogICAgIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSB7IFdlYkNvcmU6OlNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93IH07CiAgICAgV1RGOjpTdHJp
bmcgZG93bmxvYWRBdHRyaWJ1dGU7CisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBjbGlja0xvY2F0
aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmgJKHJldmlzaW9uIDIx
OTI3MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkFjdGlv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw3IEBAIHB1YmxpYzoKICAgICBXZWJLaXQ6
OldlYkV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJzKCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0
aW9uQWN0aW9uRGF0YS5tb2RpZmllcnM7IH0KICAgICBXZWJLaXQ6OldlYk1vdXNlRXZlbnQ6OkJ1
dHRvbiBtb3VzZUJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEu
bW91c2VCdXR0b247IH0KICAgICBXZWJLaXQ6OldlYk1vdXNlRXZlbnQ6OlN5bnRoZXRpY0NsaWNr
VHlwZSBzeW50aGV0aWNDbGlja1R5cGUoKSBjb25zdCB7IHJldHVybiBtX25hdmlnYXRpb25BY3Rp
b25EYXRhLnN5bnRoZXRpY0NsaWNrVHlwZTsgfQorICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgY2xp
Y2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdh
dGlvbkFjdGlvbkRhdGEuY2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlczsgfQogICAg
IGJvb2wgY2FuSGFuZGxlUmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdhdGlvbkFjdGlv
bkRhdGEuY2FuSGFuZGxlUmVxdWVzdDsgfQogICAgIGJvb2wgc2hvdWxkT3BlbkV4dGVybmFsU2No
ZW1lcygpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEuc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSA9PSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
OjpTaG91bGRBbGxvdyB8fCBtX25hdmlnYXRpb25BY3Rpb25EYXRhLnNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3kgPT0gV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hv
dWxkQWxsb3dFeHRlcm5hbFNjaGVtZXM7IH0KICAgICBib29sIHNob3VsZE9wZW5BcHBMaW5rcygp
IGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkT3BlbkFwcExpbmtzICYmIG1fbmF2aWdhdGlvbkFjdGlv
bkRhdGEuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9PSBXZWJDb3JlOjpTaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGRBbGxvdzsgfQpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb24ubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb24ubW0J
KHJldmlzaW9uIDIxOTI3MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tOYXZpZ2F0aW9uQWN0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAj
aW1wb3J0ICJOYXZpZ2F0aW9uQWN0aW9uRGF0YS5oIgogI2ltcG9ydCAiV0tGcmFtZUluZm9JbnRl
cm5hbC5oIgogI2ltcG9ydCAiX1dLVXNlckluaXRpYXRlZEFjdGlvbkludGVybmFsLmgiCisjaW1w
b3J0IDxXZWJDb3JlL0Zsb2F0UG9pbnQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAog
QGltcGxlbWVudGF0aW9uIFdLTmF2aWdhdGlvbkFjdGlvbgpAQCAtMTIzLDEyICsxMjQsMTIgQEAg
LSAodm9pZClkZWFsbG9jCiAKIC0gKE5TU3RyaW5nICopZGVzY3JpcHRpb24KIHsKLSAgICByZXR1
cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8JUA6ICVwOyBuYXZpZ2F0aW9uVHlwZSA9
ICVsZDsgc3ludGhldGljQ2xpY2tUeXBlID0gJWxkOyByZXF1ZXN0ID0gJUA7IHNvdXJjZUZyYW1l
ID0gJUA7IHRhcmdldEZyYW1lID0gJUA+IiwgTlNTdHJpbmdGcm9tQ2xhc3Moc2VsZi5jbGFzcyks
IHNlbGYsCisgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVAOiAlcDsg
bmF2aWdhdGlvblR5cGUgPSAlbGQ7IHN5bnRoZXRpY0NsaWNrVHlwZSA9ICVsZDsgcG9zaXRpb24g
eCA9ICUuMmYgeSA9ICUuMmYgcmVxdWVzdCA9ICVAOyBzb3VyY2VGcmFtZSA9ICVAOyB0YXJnZXRG
cmFtZSA9ICVAPiIsIE5TU3RyaW5nRnJvbUNsYXNzKHNlbGYuY2xhc3MpLCBzZWxmLAogICAgICAg
ICAobG9uZylzZWxmLm5hdmlnYXRpb25UeXBlLAogI2lmIFBMQVRGT1JNKElPUykKLSAgICAgICAg
KGxvbmcpc2VsZi5fc3ludGhldGljQ2xpY2tUeXBlLAorICAgICAgICAobG9uZylzZWxmLl9zeW50
aGV0aWNDbGlja1R5cGUsIHNlbGYuX2NsaWNrTG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXMu
eCwgc2VsZi5fY2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlcy55LAogI2Vsc2UKLSAg
ICAgICAgMEwsCisgICAgICAgIDBMLCAwLjAsIDAuMCwKICNlbmRpZgogICAgICAgICBzZWxmLnJl
cXVlc3QsIHNlbGYuc291cmNlRnJhbWUsIHNlbGYudGFyZ2V0RnJhbWVdOwogfQpAQCAtMTYyLDYg
KzE2MywxMSBAQCAtIChXS1N5bnRoZXRpY0NsaWNrVHlwZSlfc3ludGhldGljQ2xpY2tUCiB7CiAg
ICAgcmV0dXJuIHRvV0tTeW50aGV0aWNDbGlja1R5cGUoX25hdmlnYXRpb25BY3Rpb24tPnN5bnRo
ZXRpY0NsaWNrVHlwZSgpKTsKIH0KKworLSAoQ0dQb2ludClfY2xpY2tMb2NhdGlvbkluUm9vdFZp
ZXdDb29yZGluYXRlcworeworICAgIHJldHVybiBfbmF2aWdhdGlvbkFjdGlvbi0+Y2xpY2tMb2Nh
dGlvbkluUm9vdFZpZXdDb29yZGluYXRlcygpOworfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShN
QUMpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlv
bkFjdGlvblByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvblByaXZhdGUuaAkocmV2aXNpb24gMjE5MjcyKQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb25Q
cml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAgdHlwZWRlZiBOU19FTlVN
KE5TSW50ZWdlciwgV0tTeW50aGV0aWNDbAogCiAjaWYgVEFSR0VUX09TX0lQSE9ORQogQHByb3Bl
cnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXS1N5bnRoZXRpY0NsaWNrVHlwZSBfc3ludGhldGlj
Q2xpY2tUeXBlIFdLX0FQSV9BVkFJTEFCTEUoaW9zKDEwLjApKTsKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSkgQ0dQb2ludCBfY2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRl
cyBXS19BUElfQVZBSUxBQkxFKGlvcygxMS4wKSk7CiAjZW5kaWYKIAogQGVuZApJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmln
YXRpb25BY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcAkocmV2aXNp
b24gMjE5MjcyKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCw2
ICs2OCwxNyBAQCBzdGF0aWMgV2ViTW91c2VFdmVudDo6U3ludGhldGljQ2xpY2tUeXBlCiAgICAg
CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYk1vdXNlRXZlbnQ6OlN5bnRoZXRpY0NsaWNrVHlw
ZT4obW91c2VFdmVudC0+c3ludGhldGljQ2xpY2tUeXBlKCkpOwogfQorICAgIAorc3RhdGljIEZs
b2F0UG9pbnQgY2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlc0Zvck1vdXNlRXZlbnQo
Y29uc3QgTW91c2VFdmVudCogbW91c2VFdmVudCkKK3sKKyAgICBpZiAoIW1vdXNlRXZlbnQpCisg
ICAgICAgIHJldHVybiB7IH07CisgICAgCisgICAgaWYgKCFtb3VzZUV2ZW50LT5idXR0b25Eb3du
KCkgfHwgIW1vdXNlRXZlbnQtPmlzVHJ1c3RlZCgpKQorICAgICAgICByZXR1cm4geyB9OworICAg
IAorICAgIHJldHVybiBtb3VzZUV2ZW50LT5hYnNvbHV0ZUxvY2F0aW9uQ29udmVydGVkVG9Sb290
VmlldygpOworfQogCiBXZWJFdmVudDo6TW9kaWZpZXJzIEluamVjdGVkQnVuZGxlTmF2aWdhdGlv
bkFjdGlvbjo6bW9kaWZpZXJzRm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0
aW9uJiBuYXZpZ2F0aW9uQWN0aW9uKQogewpAQCAtOTYsNiArMTA3LDExIEBAIFdlYk1vdXNlRXZl
bnQ6OlN5bnRoZXRpY0NsaWNrVHlwZSBJbmplY3QKIHsKICAgICByZXR1cm4gc3ludGhldGljQ2xp
Y2tUeXBlRm9yTW91c2VFdmVudChtb3VzZUV2ZW50Rm9yTmF2aWdhdGlvbkFjdGlvbihuYXZpZ2F0
aW9uQWN0aW9uKSk7CiB9CisgICAgCitGbG9hdFBvaW50IEluamVjdGVkQnVuZGxlTmF2aWdhdGlv
bkFjdGlvbjo6Y2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlc0Zvck5hdmlnYXRpb25B
Y3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgbmF2aWdhdGlvbkFjdGlvbikKK3sKKyAgICBy
ZXR1cm4gY2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlc0Zvck1vdXNlRXZlbnQobW91
c2VFdmVudEZvck5hdmlnYXRpb25BY3Rpb24obmF2aWdhdGlvbkFjdGlvbikpOworfQogCiBSZWY8
SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uPiBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25B
Y3Rpb246OmNyZWF0ZShXZWJGcmFtZSogZnJhbWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFj
dGlvbiwgUmVmUHRyPEZvcm1TdGF0ZT4mJiBmb3JtU3RhdGUpCiB7CkBAIC0xMTQsNiArMTMwLDcg
QEAgSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpJbmplY3RlZAogICAgICAgICBtX2hp
dFRlc3RSZXN1bHQgPSBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ6OmNyZWF0ZShmcmFtZS0+
Y29yZUZyYW1lKCktPmV2ZW50SGFuZGxlcigpLmhpdFRlc3RSZXN1bHRBdFBvaW50KG1vdXNlRXZl
bnQtPmFic29sdXRlTG9jYXRpb24oKSkpOwogICAgICAgICBtX21vdXNlQnV0dG9uICAgPSBtb3Vz
ZUJ1dHRvbkZvck1vdXNlRXZlbnQobW91c2VFdmVudCk7CiAgICAgICAgIG1fc3ludGhldGljQ2xp
Y2tUeXBlID0gc3ludGhldGljQ2xpY2tUeXBlRm9yTmF2aWdhdGlvbkFjdGlvbihuYXZpZ2F0aW9u
QWN0aW9uKTsKKyAgICAgICAgbV9jbGlja0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzID0g
Y2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlc0Zvck5hdmlnYXRpb25BY3Rpb24obmF2
aWdhdGlvbkFjdGlvbik7CiAgICAgfQogCiAgICAgaWYgKGZvcm1TdGF0ZSkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0
aW9uQWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaAkocmV2aXNpb24gMjE5
MjcyKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTMgKzUwLDE1
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmllcnNGb3JO
YXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mKTsKICAgICBz
dGF0aWMgV2ViTW91c2VFdmVudDo6QnV0dG9uIG1vdXNlQnV0dG9uRm9yTmF2aWdhdGlvbkFjdGlv
bihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJik7CiAgICAgc3RhdGljIFdlYk1vdXNl
RXZlbnQ6OlN5bnRoZXRpY0NsaWNrVHlwZSBzeW50aGV0aWNDbGlja1R5cGVGb3JOYXZpZ2F0aW9u
QWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mKTsKLQorICAgIHN0YXRpYyBX
ZWJDb3JlOjpGbG9hdFBvaW50IGNsaWNrTG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXNGb3JO
YXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mKTsKKyAgICAK
ICAgICBXZWJDb3JlOjpOYXZpZ2F0aW9uVHlwZSBuYXZpZ2F0aW9uVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbmF2aWdhdGlvblR5cGU7IH0KICAgICBXZWJFdmVudDo6TW9kaWZpZXJzIG1vZGlmaWVy
cygpIGNvbnN0IHsgcmV0dXJuIG1fbW9kaWZpZXJzOyB9CiAgICAgV2ViTW91c2VFdmVudDo6QnV0
dG9uIG1vdXNlQnV0dG9uKCkgY29uc3QgeyByZXR1cm4gbV9tb3VzZUJ1dHRvbjsgfQogICAgIElu
amVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdCogaGl0VGVzdFJlc3VsdCgpIGNvbnN0IHsgcmV0dXJu
IG1faGl0VGVzdFJlc3VsdC5nZXQoKTsgfQogICAgIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZSog
Zm9ybUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1FbGVtZW50LmdldCgpOyB9CiAgICAg
V2ViTW91c2VFdmVudDo6U3ludGhldGljQ2xpY2tUeXBlIHN5bnRoZXRpY0NsaWNrVHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3ludGhldGljQ2xpY2tUeXBlOyB9CisgICAgV2ViQ29yZTo6RmxvYXRQ
b2ludCBjbGlja0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzKCkgY29uc3QgeyByZXR1cm4g
bV9jbGlja0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzOyB9CiAKICAgICBib29sIHNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHMoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZE9wZW5FeHRlcm5hbFVS
THM7IH0KICAgICBib29sIHNob3VsZFRyeUFwcExpbmtzKCkgY29uc3QgeyByZXR1cm4gbV9zaG91
bGRUcnlBcHBMaW5rczsgfQpAQCAtNjksNiArNzEsNyBAQCBwcml2YXRlOgogICAgIFdlYkV2ZW50
OjpNb2RpZmllcnMgbV9tb2RpZmllcnM7CiAgICAgV2ViTW91c2VFdmVudDo6QnV0dG9uIG1fbW91
c2VCdXR0b247CiAgICAgV2ViTW91c2VFdmVudDo6U3ludGhldGljQ2xpY2tUeXBlIG1fc3ludGhl
dGljQ2xpY2tUeXBlIHsgV2ViTW91c2VFdmVudDo6Tm9UYXAgfTsKKyAgICBXZWJDb3JlOjpGbG9h
dFBvaW50IG1fY2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlczsKICAgICBSZWZQdHI8
SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0PiBtX2hpdFRlc3RSZXN1bHQ7CiAgICAgUmVmUHRy
PEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gbV9mb3JtRWxlbWVudDsKICAgICBBdG9taWNTdHJp
bmcgbV9kb3dubG9hZEF0dHJpYnV0ZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHJl
dmlzaW9uIDIxOTI3MikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQwLDYgKzI0MCw3IEBA
IFBhZ2UqIFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KEZyYW0KICAgICBuYXZpZ2F0aW9u
QWN0aW9uRGF0YS5tb2RpZmllcnMgPSBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246Om1v
ZGlmaWVyc0Zvck5hdmlnYXRpb25BY3Rpb24obmF2aWdhdGlvbkFjdGlvbik7CiAgICAgbmF2aWdh
dGlvbkFjdGlvbkRhdGEubW91c2VCdXR0b24gPSBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rp
b246Om1vdXNlQnV0dG9uRm9yTmF2aWdhdGlvbkFjdGlvbihuYXZpZ2F0aW9uQWN0aW9uKTsKICAg
ICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5zeW50aGV0aWNDbGlja1R5cGUgPSBJbmplY3RlZEJ1bmRs
ZU5hdmlnYXRpb25BY3Rpb246OnN5bnRoZXRpY0NsaWNrVHlwZUZvck5hdmlnYXRpb25BY3Rpb24o
bmF2aWdhdGlvbkFjdGlvbik7CisgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEuY2xpY2tMb2NhdGlv
bkluUm9vdFZpZXdDb29yZGluYXRlcyA9IEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6
Y2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlc0Zvck5hdmlnYXRpb25BY3Rpb24obmF2
aWdhdGlvbkFjdGlvbik7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tl
bklkZW50aWZpZXIgPSB3ZWJQcm9jZXNzLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKG5hdmln
YXRpb25BY3Rpb24udXNlckdlc3R1cmVUb2tlbigpKTsKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0
YS5jYW5IYW5kbGVSZXF1ZXN0ID0gbV9wYWdlLmNhbkhhbmRsZVJlcXVlc3QocmVxdWVzdC5yZXNv
dXJjZVJlcXVlc3QoKSk7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEuc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSA9IG5hdmlnYXRpb25BY3Rpb24uc2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSgpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9u
IDIxOTI3MikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MzYsNiArNzM2LDcgQEAg
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgIG5hdmlnYXRpb25B
Y3Rpb25EYXRhLm1vZGlmaWVycyA9IGFjdGlvbi0+bW9kaWZpZXJzKCk7CiAgICAgbmF2aWdhdGlv
bkFjdGlvbkRhdGEubW91c2VCdXR0b24gPSBhY3Rpb24tPm1vdXNlQnV0dG9uKCk7CiAgICAgbmF2
aWdhdGlvbkFjdGlvbkRhdGEuc3ludGhldGljQ2xpY2tUeXBlID0gYWN0aW9uLT5zeW50aGV0aWND
bGlja1R5cGUoKTsKKyAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5jbGlja0xvY2F0aW9uSW5Sb290
Vmlld0Nvb3JkaW5hdGVzID0gYWN0aW9uLT5jbGlja0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5h
dGVzKCk7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZp
ZXIgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcihu
YXZpZ2F0aW9uQWN0aW9uLnVzZXJHZXN0dXJlVG9rZW4oKSk7CiAgICAgbmF2aWdhdGlvbkFjdGlv
bkRhdGEuY2FuSGFuZGxlUmVxdWVzdCA9IHdlYlBhZ2UtPmNhbkhhbmRsZVJlcXVlc3QocmVxdWVz
dCk7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSA9IG5hdmlnYXRpb25BY3Rpb24uc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpOwpAQCAt
NzgzLDYgKzc4NCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWQK
ICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb2RpZmllcnMgPSBhY3Rpb24tPm1vZGlmaWVycygp
OwogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLm1vdXNlQnV0dG9uID0gYWN0aW9uLT5tb3VzZUJ1
dHRvbigpOwogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLnN5bnRoZXRpY0NsaWNrVHlwZSA9IGFj
dGlvbi0+c3ludGhldGljQ2xpY2tUeXBlKCk7CisgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEuY2xp
Y2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlcyA9IGFjdGlvbi0+Y2xpY2tMb2NhdGlvbklu
Um9vdFZpZXdDb29yZGluYXRlcygpOwogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLnVzZXJHZXN0
dXJlVG9rZW5JZGVudGlmaWVyID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudXNlckdlc3R1cmVU
b2tlbklkZW50aWZpZXIobmF2aWdhdGlvbkFjdGlvbi51c2VyR2VzdHVyZVRva2VuKCkpOwogICAg
IG5hdmlnYXRpb25BY3Rpb25EYXRhLmNhbkhhbmRsZVJlcXVlc3QgPSB3ZWJQYWdlLT5jYW5IYW5k
bGVSZXF1ZXN0KHJlcXVlc3QpOwogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLnNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3kgPSBuYXZpZ2F0aW9uQWN0aW9uLnNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3koKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>315004</attachid>
            <date>2017-07-10 12:08:11 -0700</date>
            <delta_ts>2017-07-10 12:15:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174233-20170710120811.patch</filename>
            <type>text/plain</type>
            <size>16406</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxOTI3MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE3LTA3LTEwICBNZWdhbiBH
YXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGxvY2F0aW9u
IHRvIE5hdmlnYXRpb25BY3Rpb25EYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzQyMzMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5MTY1NTE4
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAg
ICAgQWRkIHRoZSByb290IHZpZXcgbG9jYXRpb24gb2YgYSB0YXAgdG8gYSBOYXZpZ2F0aW9uQWN0
aW9uIHRvIHZlbmQgdG8gU2FmYXJpLgorCisgICAgICAgIFRlc3Q6IHNtYWxsIGVub3VnaCBjaGFu
Z2UgdG8gbm90IGJlIHRlc3RlZCBhbG9uZS4KKworICAgICAgICAqIGRvbS9Nb3VzZVJlbGF0ZWRF
dmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6YWJzb2x1dGVM
b2NhdGlvbkNvbnZlcnRlZFRvUm9vdFZpZXcpOgorICAgICAgICAqIGRvbS9Nb3VzZVJlbGF0ZWRF
dmVudC5oOgorCiAyMDE3LTA3LTA3ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4K
IAogICAgICAgICBbQXBwQ2FjaGVdIElnbm9yZSBmYWxsYmFjayBlbnRyaWVzIHdob3NlIG5hbWVz
cGFjZSBpcyBub3QgcHJlZml4ZWQgd2l0aCBtYW5pZmVzdCBwYXRoCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHAJKHJldmlzaW9uIDIxOTI3MikKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDYgKzI2LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAj
aW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiTGF5b3V0UG9pbnQuaCIKICNpbmNsdWRl
ICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogCkBAIC0xNjUsNiAr
MTY2LDExIEBAIHZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6OmNvbXB1dGVSZWxhdGl2ZVAKIAogICAg
IG1faGFzQ2FjaGVkUmVsYXRpdmVQb3NpdGlvbiA9IHRydWU7CiB9CisgICAgCitGbG9hdFBvaW50
IE1vdXNlUmVsYXRlZEV2ZW50Ojpsb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlcygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGZyYW1lVmlldygpLT5jb250ZW50c1RvUm9vdFZpZXcocm91bmRlZElu
dFBvaW50KG1fYWJzb2x1dGVMb2NhdGlvbikpOworfQogCiBpbnQgTW91c2VSZWxhdGVkRXZlbnQ6
OmxheWVyWCgpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuaAko
cmV2aXNpb24gMjE5MjcyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNT
aW11bGF0ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU2ltdWxhdGVkOyB9CiAgICAgaW50IHBhZ2VY
KCkgY29uc3QgZmluYWw7CiAgICAgaW50IHBhZ2VZKCkgY29uc3QgZmluYWw7CisgICAgV0VCQ09S
RV9FWFBPUlQgRmxvYXRQb2ludCBsb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlcygpIGNvbnN0
OwogICAgIHZpcnR1YWwgY29uc3QgTGF5b3V0UG9pbnQmIHBhZ2VMb2NhdGlvbigpIGNvbnN0Owog
ICAgIFdFQkNPUkVfRVhQT1JUIGludCB4KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50
IHkoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxOTI5OSkKKysrIFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE3LTA3
LTEwICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAg
QWRkIGxvY2F0aW9uIHRvIE5hdmlnYXRpb25BY3Rpb25EYXRhCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQyMzMKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzI5MTY1NTE4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAg
ICAgICAKKyAgICAgICAgQWRkIHRoZSByb290IHZpZXcgbG9jYXRpb24gb2YgYSB0YXAgdG8gYSBO
YXZpZ2F0aW9uQWN0aW9uIHRvIHZlbmQgdG8gU2FmYXJpLgorCisgICAgICAgICogU2hhcmVkL05h
dmlnYXRpb25BY3Rpb25EYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvbkFjdGlv
bkRhdGE6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhOjpk
ZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9OYXZpZ2F0aW9uQWN0aW9uRGF0YS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkFjdGlvbi5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uLm1tOgorICAgICAgICAoLVtXS05hdmln
YXRpb25BY3Rpb24gZGVzY3JpcHRpb25dKToKKyAgICAgICAgKC1bV0tOYXZpZ2F0aW9uQWN0aW9u
IF9jbGlja0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzXSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb25Qcml2YXRlLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViS2l0OjpjbGlja0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzRm9y
TW91c2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFj
dGlvbjo6Y2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlc0Zvck5hdmlnYXRpb25BY3Rp
b24pOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246Oklu
amVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaDoKKyAgICAgICAgKFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpjbGlja0xvY2F0aW9uSW5Sb290
Vmlld0Nvb3JkaW5hdGVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6Y3Jl
YXRlV2luZG93KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbik6CisKIDIwMTctMDctMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
IAogICAgICAgICBGdXJ0aGVyIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSAvIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBjbGVhbiB1cApJbmRleDogU291cmNlL1dlYktpdDIvU2hh
cmVkL05hdmlnYXRpb25BY3Rpb25EYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvTmF2aWdhdGlvbkFjdGlvbkRhdGEuY3BwCShyZXZpc2lvbiAyMTkyNzIpCisrKyBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmF2aWdhdGlvbkFjdGlvbkRhdGEuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKICNpbmNs
dWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgorI2luY2x1ZGUgIldlYkNvcmVB
cmd1bWVudENvZGVycy5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNDQsNiAr
NDUsNyBAQCB2b2lkIE5hdmlnYXRpb25BY3Rpb25EYXRhOjplbmNvZGUoSVBDOjpFCiAgICAgZW5j
b2RlciA8PCBjYW5IYW5kbGVSZXF1ZXN0OwogICAgIGVuY29kZXIuZW5jb2RlRW51bShzaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsKICAgICBlbmNvZGVyIDw8IGRvd25sb2FkQXR0cmlidXRl
OworICAgIGVuY29kZXIgPDwgY2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlczsKIH0K
IAogYm9vbCBOYXZpZ2F0aW9uQWN0aW9uRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rl
ciwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmIHJlc3VsdCkKQEAgLTY0LDYgKzY2LDggQEAgYm9vbCBO
YXZpZ2F0aW9uQWN0aW9uRGF0YTo6ZGVjb2RlKElQQzo6RAogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZG93bmxvYWRBdHRyaWJ1dGUpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY2xpY2tM
b2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlcykpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIHJldHVybiB0cnVlOwogfQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL05hdmlnYXRp
b25BY3Rpb25EYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL05hdmln
YXRpb25BY3Rpb25EYXRhLmgJKHJldmlzaW9uIDIxOTI3MikKKysrIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9OYXZpZ2F0aW9uQWN0aW9uRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3
IEBACiAjZGVmaW5lIE5hdmlnYXRpb25BY3Rpb25EYXRhX2gKIAogI2luY2x1ZGUgIldlYkV2ZW50
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFBvaW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9G
cmFtZUxvYWRlclR5cGVzLmg+CiAKIG5hbWVzcGFjZSBJUEMgewpAQCAtNDgsNiArNDksNyBAQCBz
dHJ1Y3QgTmF2aWdhdGlvbkFjdGlvbkRhdGEgewogICAgIGJvb2wgY2FuSGFuZGxlUmVxdWVzdCB7
IGZhbHNlIH07CiAgICAgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHsgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeTo6U2hvdWxkTm90QWxsb3cgfTsKICAgICBXVEY6OlN0cmluZyBkb3dubG9hZEF0dHJp
YnV0ZTsKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IGNsaWNrTG9jYXRpb25JblJvb3RWaWV3Q29v
cmRpbmF0ZXM7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQ
SU5hdmlnYXRpb25BY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0FQSU5hdmlnYXRpb25BY3Rpb24uaAkocmV2aXNpb24gMjE5MjcyKQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTYzLDYgKzYzLDcgQEAgcHVibGljOgogICAgIFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlm
aWVycyBtb2RpZmllcnMoKSBjb25zdCB7IHJldHVybiBtX25hdmlnYXRpb25BY3Rpb25EYXRhLm1v
ZGlmaWVyczsgfQogICAgIFdlYktpdDo6V2ViTW91c2VFdmVudDo6QnV0dG9uIG1vdXNlQnV0dG9u
KCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb3VzZUJ1dHRvbjsgfQog
ICAgIFdlYktpdDo6V2ViTW91c2VFdmVudDo6U3ludGhldGljQ2xpY2tUeXBlIHN5bnRoZXRpY0Ns
aWNrVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEuc3ludGhldGlj
Q2xpY2tUeXBlOyB9CisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBjbGlja0xvY2F0aW9uSW5Sb290
Vmlld0Nvb3JkaW5hdGVzKCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0aW9uRGF0YS5j
bGlja0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzOyB9CiAgICAgYm9vbCBjYW5IYW5kbGVS
ZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0aW9uRGF0YS5jYW5IYW5kbGVS
ZXF1ZXN0OyB9CiAgICAgYm9vbCBzaG91bGRPcGVuRXh0ZXJuYWxTY2hlbWVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9uYXZpZ2F0aW9uQWN0aW9uRGF0YS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
ID09IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZEFsbG93IHx8
IG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9PSBX
ZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGRBbGxvd0V4dGVybmFs
U2NoZW1lczsgfQogICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzKCkgY29uc3QgeyByZXR1cm4g
bV9zaG91bGRPcGVuQXBwTGlua3MgJiYgbV9uYXZpZ2F0aW9uQWN0aW9uRGF0YS5zaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5ID09IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3k6OlNob3VsZEFsbG93OyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLTmF2aWdhdGlvbkFjdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvbi5tbQkocmV2aXNpb24gMjE5Mjcy
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rp
b24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgIk5hdmlnYXRp
b25BY3Rpb25EYXRhLmgiCiAjaW1wb3J0ICJXS0ZyYW1lSW5mb0ludGVybmFsLmgiCiAjaW1wb3J0
ICJfV0tVc2VySW5pdGlhdGVkQWN0aW9uSW50ZXJuYWwuaCIKKyNpbXBvcnQgPFdlYkNvcmUvRmxv
YXRQb2ludC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBAaW1wbGVtZW50YXRpb24g
V0tOYXZpZ2F0aW9uQWN0aW9uCkBAIC0xMjMsMTIgKzEyNCwxMiBAQCAtICh2b2lkKWRlYWxsb2MK
IAogLSAoTlNTdHJpbmcgKilkZXNjcmlwdGlvbgogewotICAgIHJldHVybiBbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpAIjwlQDogJXA7IG5hdmlnYXRpb25UeXBlID0gJWxkOyBzeW50aGV0aWND
bGlja1R5cGUgPSAlbGQ7IHJlcXVlc3QgPSAlQDsgc291cmNlRnJhbWUgPSAlQDsgdGFyZ2V0RnJh
bWUgPSAlQD4iLCBOU1N0cmluZ0Zyb21DbGFzcyhzZWxmLmNsYXNzKSwgc2VsZiwKKyAgICByZXR1
cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8JUA6ICVwOyBuYXZpZ2F0aW9uVHlwZSA9
ICVsZDsgc3ludGhldGljQ2xpY2tUeXBlID0gJWxkOyBwb3NpdGlvbiB4ID0gJS4yZiB5ID0gJS4y
ZiByZXF1ZXN0ID0gJUA7IHNvdXJjZUZyYW1lID0gJUA7IHRhcmdldEZyYW1lID0gJUA+IiwgTlNT
dHJpbmdGcm9tQ2xhc3Moc2VsZi5jbGFzcyksIHNlbGYsCiAgICAgICAgIChsb25nKXNlbGYubmF2
aWdhdGlvblR5cGUsCiAjaWYgUExBVEZPUk0oSU9TKQotICAgICAgICAobG9uZylzZWxmLl9zeW50
aGV0aWNDbGlja1R5cGUsCisgICAgICAgIChsb25nKXNlbGYuX3N5bnRoZXRpY0NsaWNrVHlwZSwg
c2VsZi5fY2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlcy54LCBzZWxmLl9jbGlja0xv
Y2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzLnksCiAjZWxzZQotICAgICAgICAwTCwKKyAgICAg
ICAgMEwsIDAuMCwgMC4wLAogI2VuZGlmCiAgICAgICAgIHNlbGYucmVxdWVzdCwgc2VsZi5zb3Vy
Y2VGcmFtZSwgc2VsZi50YXJnZXRGcmFtZV07CiB9CkBAIC0xNjIsNiArMTYzLDExIEBAIC0gKFdL
U3ludGhldGljQ2xpY2tUeXBlKV9zeW50aGV0aWNDbGlja1QKIHsKICAgICByZXR1cm4gdG9XS1N5
bnRoZXRpY0NsaWNrVHlwZShfbmF2aWdhdGlvbkFjdGlvbi0+c3ludGhldGljQ2xpY2tUeXBlKCkp
OwogfQorCistIChDR1BvaW50KV9jbGlja0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzCit7
CisgICAgcmV0dXJuIF9uYXZpZ2F0aW9uQWN0aW9uLT5jbGlja0xvY2F0aW9uSW5Sb290Vmlld0Nv
b3JkaW5hdGVzKCk7Cit9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZp
Z2F0aW9uQWN0aW9uUHJpdmF0ZS5oCShyZXZpc2lvbiAyMTkyNzIpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvblByaXZhdGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTEsNiArNTEsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBXS1N5
bnRoZXRpY0NsCiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCiBAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHkpIFdLU3ludGhldGljQ2xpY2tUeXBlIF9zeW50aGV0aWNDbGlja1R5cGUgV0tfQVBJ
X0FWQUlMQUJMRShpb3MoMTAuMCkpOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBD
R1BvaW50IF9jbGlja0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzIFdLX0FQSV9BVkFJTEFC
TEUoaW9zKDExLjApKTsKICNlbmRpZgogCiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwCShyZXZpc2lvbiAyMTkyNzIpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2
aWdhdGlvbkFjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDE3IEBAIHN0YXRp
YyBXZWJNb3VzZUV2ZW50OjpTeW50aGV0aWNDbGlja1R5cGUKICAgICAKICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8V2ViTW91c2VFdmVudDo6U3ludGhldGljQ2xpY2tUeXBlPihtb3VzZUV2ZW50LT5z
eW50aGV0aWNDbGlja1R5cGUoKSk7CiB9CisgICAgCitzdGF0aWMgRmxvYXRQb2ludCBjbGlja0xv
Y2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzRm9yTW91c2VFdmVudChjb25zdCBNb3VzZUV2ZW50
KiBtb3VzZUV2ZW50KQoreworICAgIGlmICghbW91c2VFdmVudCkKKyAgICAgICAgcmV0dXJuIHsg
fTsKKyAgICAKKyAgICBpZiAoIW1vdXNlRXZlbnQtPmJ1dHRvbkRvd24oKSB8fCAhbW91c2VFdmVu
dC0+aXNUcnVzdGVkKCkpCisgICAgICAgIHJldHVybiB7IH07CisgICAgCisgICAgcmV0dXJuIG1v
dXNlRXZlbnQtPmxvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzKCk7Cit9CiAKIFdlYkV2ZW50
OjpNb2RpZmllcnMgSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjptb2RpZmllcnNGb3JO
YXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIG5hdmlnYXRpb25BY3Rpb24p
CiB7CkBAIC05Niw2ICsxMDcsMTEgQEAgV2ViTW91c2VFdmVudDo6U3ludGhldGljQ2xpY2tUeXBl
IEluamVjdAogewogICAgIHJldHVybiBzeW50aGV0aWNDbGlja1R5cGVGb3JNb3VzZUV2ZW50KG1v
dXNlRXZlbnRGb3JOYXZpZ2F0aW9uQWN0aW9uKG5hdmlnYXRpb25BY3Rpb24pKTsKIH0KKyAgICAK
K0Zsb2F0UG9pbnQgSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpjbGlja0xvY2F0aW9u
SW5Sb290Vmlld0Nvb3JkaW5hdGVzRm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0aW9u
QWN0aW9uJiBuYXZpZ2F0aW9uQWN0aW9uKQoreworICAgIHJldHVybiBjbGlja0xvY2F0aW9uSW5S
b290Vmlld0Nvb3JkaW5hdGVzRm9yTW91c2VFdmVudChtb3VzZUV2ZW50Rm9yTmF2aWdhdGlvbkFj
dGlvbihuYXZpZ2F0aW9uQWN0aW9uKSk7Cit9CiAKIFJlZjxJbmplY3RlZEJ1bmRsZU5hdmlnYXRp
b25BY3Rpb24+IEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdlYkZyYW1l
KiBmcmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBSZWZQdHI8Rm9ybVN0YXRl
PiYmIGZvcm1TdGF0ZSkKIHsKQEAgLTExNCw2ICsxMzAsNyBAQCBJbmplY3RlZEJ1bmRsZU5hdmln
YXRpb25BY3Rpb246OkluamVjdGVkCiAgICAgICAgIG1faGl0VGVzdFJlc3VsdCA9IEluamVjdGVk
QnVuZGxlSGl0VGVzdFJlc3VsdDo6Y3JlYXRlKGZyYW1lLT5jb3JlRnJhbWUoKS0+ZXZlbnRIYW5k
bGVyKCkuaGl0VGVzdFJlc3VsdEF0UG9pbnQobW91c2VFdmVudC0+YWJzb2x1dGVMb2NhdGlvbigp
KSk7CiAgICAgICAgIG1fbW91c2VCdXR0b24gICA9IG1vdXNlQnV0dG9uRm9yTW91c2VFdmVudCht
b3VzZUV2ZW50KTsKICAgICAgICAgbV9zeW50aGV0aWNDbGlja1R5cGUgPSBzeW50aGV0aWNDbGlj
a1R5cGVGb3JOYXZpZ2F0aW9uQWN0aW9uKG5hdmlnYXRpb25BY3Rpb24pOworICAgICAgICBtX2Ns
aWNrTG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBjbGlja0xvY2F0aW9uSW5Sb290Vmll
d0Nvb3JkaW5hdGVzRm9yTmF2aWdhdGlvbkFjdGlvbihuYXZpZ2F0aW9uQWN0aW9uKTsKICAgICB9
CiAKICAgICBpZiAoZm9ybVN0YXRlKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlTmF2aWdhdGlvbkFjdGlvbi5oCShyZXZpc2lvbiAyMTkyNzIpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCwxMyArNTAsMTUgQEAgcHVibGljOgogICAgIHN0YXRp
YyBXZWJFdmVudDo6TW9kaWZpZXJzIG1vZGlmaWVyc0Zvck5hdmlnYXRpb25BY3Rpb24oY29uc3Qg
V2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYpOwogICAgIHN0YXRpYyBXZWJNb3VzZUV2ZW50OjpC
dXR0b24gbW91c2VCdXR0b25Gb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmln
YXRpb25BY3Rpb24mKTsKICAgICBzdGF0aWMgV2ViTW91c2VFdmVudDo6U3ludGhldGljQ2xpY2tU
eXBlIHN5bnRoZXRpY0NsaWNrVHlwZUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgV2ViQ29yZTo6
TmF2aWdhdGlvbkFjdGlvbiYpOwotCisgICAgc3RhdGljIFdlYkNvcmU6OkZsb2F0UG9pbnQgY2xp
Y2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlc0Zvck5hdmlnYXRpb25BY3Rpb24oY29uc3Qg
V2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYpOworICAgIAogICAgIFdlYkNvcmU6Ok5hdmlnYXRp
b25UeXBlIG5hdmlnYXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uVHlwZTsg
fQogICAgIFdlYkV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJzKCkgY29uc3QgeyByZXR1cm4gbV9t
b2RpZmllcnM7IH0KICAgICBXZWJNb3VzZUV2ZW50OjpCdXR0b24gbW91c2VCdXR0b24oKSBjb25z
dCB7IHJldHVybiBtX21vdXNlQnV0dG9uOyB9CiAgICAgSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVz
dWx0KiBoaXRUZXN0UmVzdWx0KCkgY29uc3QgeyByZXR1cm4gbV9oaXRUZXN0UmVzdWx0LmdldCgp
OyB9CiAgICAgSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlKiBmb3JtRWxlbWVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fZm9ybUVsZW1lbnQuZ2V0KCk7IH0KICAgICBXZWJNb3VzZUV2ZW50OjpTeW50aGV0
aWNDbGlja1R5cGUgc3ludGhldGljQ2xpY2tUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9zeW50aGV0
aWNDbGlja1R5cGU7IH0KKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IGNsaWNrTG9jYXRpb25JblJv
b3RWaWV3Q29vcmRpbmF0ZXMoKSBjb25zdCB7IHJldHVybiBtX2NsaWNrTG9jYXRpb25JblJvb3RW
aWV3Q29vcmRpbmF0ZXM7IH0KIAogICAgIGJvb2wgc2hvdWxkT3BlbkV4dGVybmFsVVJMcygpIGNv
bnN0IHsgcmV0dXJuIG1fc2hvdWxkT3BlbkV4dGVybmFsVVJMczsgfQogICAgIGJvb2wgc2hvdWxk
VHJ5QXBwTGlua3MoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFRyeUFwcExpbmtzOyB9CkBAIC02
OSw2ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgV2ViRXZlbnQ6Ok1vZGlmaWVycyBtX21vZGlmaWVy
czsKICAgICBXZWJNb3VzZUV2ZW50OjpCdXR0b24gbV9tb3VzZUJ1dHRvbjsKICAgICBXZWJNb3Vz
ZUV2ZW50OjpTeW50aGV0aWNDbGlja1R5cGUgbV9zeW50aGV0aWNDbGlja1R5cGUgeyBXZWJNb3Vz
ZUV2ZW50OjpOb1RhcCB9OworICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgbV9jbGlja0xvY2F0aW9u
SW5Sb290Vmlld0Nvb3JkaW5hdGVzOwogICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZUhpdFRlc3RS
ZXN1bHQ+IG1faGl0VGVzdFJlc3VsdDsKICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVOb2RlSGFu
ZGxlPiBtX2Zvcm1FbGVtZW50OwogICAgIEF0b21pY1N0cmluZyBtX2Rvd25sb2FkQXR0cmlidXRl
OwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkocmV2aXNpb24gMjE5MjcyKQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNDAsNiArMjQwLDcgQEAgUGFnZSogV2ViQ2hyb21lQ2xpZW50
OjpjcmVhdGVXaW5kb3coRnJhbQogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLm1vZGlmaWVycyA9
IEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6bW9kaWZpZXJzRm9yTmF2aWdhdGlvbkFj
dGlvbihuYXZpZ2F0aW9uQWN0aW9uKTsKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb3VzZUJ1
dHRvbiA9IEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6bW91c2VCdXR0b25Gb3JOYXZp
Z2F0aW9uQWN0aW9uKG5hdmlnYXRpb25BY3Rpb24pOwogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRh
LnN5bnRoZXRpY0NsaWNrVHlwZSA9IEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6c3lu
dGhldGljQ2xpY2tUeXBlRm9yTmF2aWdhdGlvbkFjdGlvbihuYXZpZ2F0aW9uQWN0aW9uKTsKKyAg
ICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5jbGlja0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVz
ID0gSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpjbGlja0xvY2F0aW9uSW5Sb290Vmll
d0Nvb3JkaW5hdGVzRm9yTmF2aWdhdGlvbkFjdGlvbihuYXZpZ2F0aW9uQWN0aW9uKTsKICAgICBu
YXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllciA9IHdlYlByb2Nl
c3MudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIobmF2aWdhdGlvbkFjdGlvbi51c2VyR2VzdHVy
ZVRva2VuKCkpOwogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLmNhbkhhbmRsZVJlcXVlc3QgPSBt
X3BhZ2UuY2FuSGFuZGxlUmVxdWVzdChyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpKTsKICAgICBu
YXZpZ2F0aW9uQWN0aW9uRGF0YS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gbmF2aWdh
dGlvbkFjdGlvbi5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMjE5MjcyKQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTczNiw2ICs3MzYsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERlY2lkCiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEubW9kaWZpZXJzID0g
YWN0aW9uLT5tb2RpZmllcnMoKTsKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb3VzZUJ1dHRv
biA9IGFjdGlvbi0+bW91c2VCdXR0b24oKTsKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5zeW50
aGV0aWNDbGlja1R5cGUgPSBhY3Rpb24tPnN5bnRoZXRpY0NsaWNrVHlwZSgpOworICAgIG5hdmln
YXRpb25BY3Rpb25EYXRhLmNsaWNrTG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBhY3Rp
b24tPmNsaWNrTG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXMoKTsKICAgICBuYXZpZ2F0aW9u
QWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllciA9IFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKG5hdmlnYXRpb25BY3Rpb24udXNlckdl
c3R1cmVUb2tlbigpKTsKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5jYW5IYW5kbGVSZXF1ZXN0
ID0gd2ViUGFnZS0+Y2FuSGFuZGxlUmVxdWVzdChyZXF1ZXN0KTsKICAgICBuYXZpZ2F0aW9uQWN0
aW9uRGF0YS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gbmF2aWdhdGlvbkFjdGlvbi5z
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCk7CkBAIC03ODMsNiArNzg0LDcgQEAgdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgIG5hdmlnYXRpb25BY3Rpb25E
YXRhLm1vZGlmaWVycyA9IGFjdGlvbi0+bW9kaWZpZXJzKCk7CiAgICAgbmF2aWdhdGlvbkFjdGlv
bkRhdGEubW91c2VCdXR0b24gPSBhY3Rpb24tPm1vdXNlQnV0dG9uKCk7CiAgICAgbmF2aWdhdGlv
bkFjdGlvbkRhdGEuc3ludGhldGljQ2xpY2tUeXBlID0gYWN0aW9uLT5zeW50aGV0aWNDbGlja1R5
cGUoKTsKKyAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5jbGlja0xvY2F0aW9uSW5Sb290Vmlld0Nv
b3JkaW5hdGVzID0gYWN0aW9uLT5jbGlja0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzKCk7
CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIgPSBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcihuYXZpZ2F0
aW9uQWN0aW9uLnVzZXJHZXN0dXJlVG9rZW4oKSk7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEu
Y2FuSGFuZGxlUmVxdWVzdCA9IHdlYlBhZ2UtPmNhbkhhbmRsZVJlcXVlc3QocmVxdWVzdCk7CiAg
ICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IG5h
dmlnYXRpb25BY3Rpb24uc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpOwo=
</data>
<flag name="review"
          id="335870"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>