<?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>178514</bug_id>
          
          <creation_ts>2017-10-19 07:39:16 -0700</creation_ts>
          <short_desc>RenderLayerCompositor: Move implementation of simple methods into the header file.</short_desc>
          <delta_ts>2017-11-15 13:05:03 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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="Frédéric Wang Nélar">fred.wang</reporter>
          <assigned_to name="Frédéric Wang Nélar">fred.wang</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1362127</commentid>
    <comment_count>0</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2017-10-19 07:39:16 -0700</bug_when>
    <thetext>RenderLayerCompositor: Move implementation of simple methods into the header file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362128</commentid>
    <comment_count>1</comment_count>
      <attachid>324226</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2017-10-19 07:46:16 -0700</bug_when>
    <thetext>Created attachment 324226
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362132</commentid>
    <comment_count>2</comment_count>
      <attachid>324226</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2017-10-19 07:51:14 -0700</bug_when>
    <thetext>Comment on attachment 324226
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        use RenderLayer.h and ChromeClient.h which are already required by RenderLayerCompositor.h

Note to reviewers: I mean, I&apos;m not sure whether it&apos;s a good idea to move the bodies of methods that actually require RenderLayer.h and ChromeClient.h. WDYT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362166</commentid>
    <comment_count>3</comment_count>
      <attachid>324226</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-10-19 09:27:19 -0700</bug_when>
    <thetext>Comment on attachment 324226
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        RenderLayerCompositor: Move implementation of simple methods into the header file.

I am OK moving these function bodies into the header file.

But I personally would slightly prefer that these be kept as separate function bodies with the &quot;inline&quot; keyword rather than moving them into the class definition for four reasons:

1) Separate function bodies makes it easier to later refactor if we are reducing includes, moving them back into the implementation file removing &quot;inline&quot; or moving them into an inlines file.

2) Separate function bodies can cut down on distractions in the class definition and make it easier to focus on what the interface of the class is. It’s especially hard to read through a class if there are multi-line function implementations interspersed in the interface.

3) Separate function bodies avoid the need to comment out argument names for unused arguments.

4) Longer function bodies like useCoordinatedScrollingForLayer can turn into quite long lines that aren’t so easy to read.

Of course, there are arguments in favor of putting the function definitions into the class definition:

a) For short functions this is much more terse and keeps the overall source code smaller.

b) For short functions having the definition right there can help make it clear exactly what a function does.

But I personally think (1)-(4) outweigh (a)-(b).

&gt;&gt; Source/WebCore/ChangeLog:10
&gt;&gt; +        use RenderLayer.h and ChromeClient.h which are already required by RenderLayerCompositor.h
&gt; 
&gt; Note to reviewers: I mean, I&apos;m not sure whether it&apos;s a good idea to move the bodies of methods that actually require RenderLayer.h and ChromeClient.h. WDYT?

I think it’s fine to either move these function bodies into the header, or to do the work to remove the need to include RenderLayer.h and ChromeClient.h. I don’t think we need to leave them out of the header just because of the possibility that some day we want to remove the includes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362174</commentid>
    <comment_count>4</comment_count>
      <attachid>324226</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2017-10-19 09:39:30 -0700</bug_when>
    <thetext>Comment on attachment 324226
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:3
&gt;&gt; +        RenderLayerCompositor: Move implementation of simple methods into the header file.
&gt; 
&gt; I am OK moving these function bodies into the header file.
&gt; 
&gt; But I personally would slightly prefer that these be kept as separate function bodies with the &quot;inline&quot; keyword rather than moving them into the class definition for four reasons:
&gt; 
&gt; 1) Separate function bodies makes it easier to later refactor if we are reducing includes, moving them back into the implementation file removing &quot;inline&quot; or moving them into an inlines file.
&gt; 
&gt; 2) Separate function bodies can cut down on distractions in the class definition and make it easier to focus on what the interface of the class is. It’s especially hard to read through a class if there are multi-line function implementations interspersed in the interface.
&gt; 
&gt; 3) Separate function bodies avoid the need to comment out argument names for unused arguments.
&gt; 
&gt; 4) Longer function bodies like useCoordinatedScrollingForLayer can turn into quite long lines that aren’t so easy to read.
&gt; 
&gt; Of course, there are arguments in favor of putting the function definitions into the class definition:
&gt; 
&gt; a) For short functions this is much more terse and keeps the overall source code smaller.
&gt; 
&gt; b) For short functions having the definition right there can help make it clear exactly what a function does.
&gt; 
&gt; But I personally think (1)-(4) outweigh (a)-(b).

Thanks. I was also not quite sure about this. However, I believe that for the straightforward setter/getter of class members like scrollLayer() or setTracksRepaints(), (1)-(4) do not really apply. So I guess I&apos;ll upload a simplified patch to handle only these cases and use &quot;inline&quot; for other functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362317</commentid>
    <comment_count>5</comment_count>
      <attachid>324226</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-10-19 14:11:22 -0700</bug_when>
    <thetext>Comment on attachment 324226
Patch

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

I don&apos;t really see the point of this kind of change unless you&apos;ve identified that functions need to inline for performance reasons.

&gt; Source/WebCore/rendering/RenderLayerCompositor.h:339
&gt; +    WEBCORE_EXPORT void startTrackingLayerFlushes() { m_layerFlushCount = 0; }
&gt; +    WEBCORE_EXPORT unsigned layerFlushCount() const { return m_layerFlushCount; }

You can&apos;t export an inline function.

&gt; Source/WebCore/rendering/RenderLayerCompositor.h:342
&gt; +    WEBCORE_EXPORT void startTrackingCompositingUpdates() { m_compositingUpdateCount = 0; }
&gt; +    WEBCORE_EXPORT unsigned compositingUpdateCount() const { return m_compositingUpdateCount; }

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362586</commentid>
    <comment_count>6</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2017-10-19 23:48:36 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #5)
&gt; Comment on attachment 324226 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=324226&amp;action=review
&gt; 
&gt; I don&apos;t really see the point of this kind of change unless you&apos;ve identified
&gt; that functions need to inline for performance reasons.

What Darin said in (a)-(b). As I said, I&apos;ll probably restrict the change to straigthforward setters/getters. Or otherwise WONTFIX this...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362594</commentid>
    <comment_count>7</comment_count>
      <attachid>324367</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2017-10-20 00:22:18 -0700</bug_when>
    <thetext>Created attachment 324367
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362614</commentid>
    <comment_count>8</comment_count>
      <attachid>324367</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-20 01:30:35 -0700</bug_when>
    <thetext>Comment on attachment 324367
Patch for landing

Clearing flags on attachment: 324367

Committed r223749: &lt;https://trac.webkit.org/changeset/223749&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362615</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-20 01:30:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372352</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-15 13:05:03 -0800</bug_when>
    <thetext>&lt;rdar://problem/35568754&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324226</attachid>
            <date>2017-10-19 07:46:16 -0700</date>
            <delta_ts>2017-10-20 00:22:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178514-20171019164614.patch</filename>
            <type>text/plain</type>
            <size>23175</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzMzM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWU2MjIwNzFmMTk0OWM0
ZGQwMDBiOGQ5ZmI2NjU4ZWMzMmI3YjczMC4uMTAyNmVlMDRiZDgwMjVkZDFiYzdiMTY1NjEyYjkw
M2E4NDg5NTMzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDE3LTEwLTE5ICBGcmVk
ZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLmNvbT4KKworICAgICAgICBSZW5kZXJMYXllckNvbXBv
c2l0b3I6IE1vdmUgaW1wbGVtZW50YXRpb24gb2Ygc2ltcGxlIG1ldGhvZHMgaW50byB0aGUgaGVh
ZGVyIGZpbGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzg1MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSZW5kZXJMYXllckNvbXBvc2l0b3IgaGFzIG1hbnkgc2ltcGxlIG1ldGhvZHMgdGhhdCBkbyBu
b3QgcmVxdWlyZSBhbnkgZXh0cmEgaW5jbHVkZXMuIFRoaXMKKyAgICAgICAgcGF0Y2ggbW92ZXMg
dGhlaXIgYm9kaWVzIGludG8gdGhlIGhlYWRlciBmaWxlLiBOb3RlIHRoYXQgc29tZSBvZiB0aGVz
ZSBpbXBsZW1lbnRhdGlvbnMKKyAgICAgICAgdXNlIFJlbmRlckxheWVyLmggYW5kIENocm9tZUNs
aWVudC5oIHdoaWNoIGFyZSBhbHJlYWR5IHJlcXVpcmVkIGJ5IFJlbmRlckxheWVyQ29tcG9zaXRv
ci5oCisgICAgICAgIHRvIGRlZmluZSBlbnVtcy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGJl
aGF2aW9yIHVuY2hhbmdlZC4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjYW5S
ZW5kZXIzRFRyYW5zZm9ybXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpzZXRDb21wb3NpdGluZ0xheWVyc05lZWRSZWJ1aWxkKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6d2lsbFJlY2Fs
Y1N0eWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRv
cjo6bm90aWZ5Rmx1c2hSZXF1aXJlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllckNvbXBvc2l0b3I6OmZsdXNoTGF5ZXJzU29vbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzVGlt
ZXJGaXJlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0
b3I6OmxheWVyV2FzQWRkZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjpmcmFtZVZpZXdEaWRBZGRPclJlbW92ZVNjcm9sbGJhcnMpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXBhaW50Q29tcG9z
aXRlZExheWVycyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBv
c2l0b3I6OnJvb3RHcmFwaGljc0xheWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6c2Nyb2xsTGF5ZXIgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjbGlwTGF5ZXIgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyb290
Q29udGVudExheWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyQ29tcG9zaXRvcjo6aGVhZGVyTGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpmb290ZXJMYXllciBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmhhczNEQ29udGVudCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6
OmNsaXBzQ29tcG9zaXRpbmdEZXNjZW5kYW50cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVzZUNvb3JkaW5hdGVkU2Nyb2xsaW5nRm9y
TGF5ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxpbmcgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpuZWVkc0Nv
bnRlbnRzQ29tcG9zaXRpbmdMYXllciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnNldFRyYWNrc1JlcGFpbnRzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6aXNUcmFja2luZ1JlcGFpbnRz
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRv
cjo6ZGlkQ29tbWl0Q2hhbmdlc0ZvckxheWVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlUm9vdExheWVyQXR0YWNobWVudCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnN0YXJ0
VHJhY2tpbmdMYXllckZsdXNoZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjpsYXllckZsdXNoQ291bnQgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpzdGFydFRyYWNraW5nQ29tcG9zaXRp
bmdVcGRhdGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9z
aXRvcjo6Y29tcG9zaXRpbmdVcGRhdGVDb3VudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oOiBNb3ZlIGJvZHkgb2YgZnVuY3Rpb25z
IGRlbGV0ZWQgZnJvbSB0aGUgY3BwIGZpbGUuCisKIDIwMTctMTAtMTYgIEZyZWRlcmljIFdhbmcg
IDxmd2FuZ0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFVzZSBhdXRvL251bGxwdHIgaW4gc2Nyb2xs
aW5nIGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5jcHAKaW5kZXggNzRlNGRkMmEyOTY0NTRiMmYzNWE0ZmUxZWU0ODIzNDI2OTExZjc0
My4uMzNiM2Q4ZWZiOGFkN2RhMWEzNzhkZTU5NDc2MWExZGMxMDQwZjQ3ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTM0
OSwyMiArMzQ5LDYgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNhY2hlQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0ZsYWdzKCkKICAgICB9CiB9CiAKLWJvb2wgUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjpjYW5SZW5kZXIzRFRyYW5zZm9ybXMoKSBjb25zdAotewotICAgIHJldHVybiBoYXNBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nKCkgJiYgKG1fY29tcG9zaXRpbmdUcmlnZ2VycyAmIENocm9tZUNs
aWVudDo6VGhyZWVEVHJhbnNmb3JtVHJpZ2dlcik7Ci19Ci0KLXZvaWQgUmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjpzZXRDb21wb3NpdGluZ0xheWVyc05lZWRSZWJ1aWxkKGJvb2wgbmVlZFJlYnVpbGQp
Ci17Ci0gICAgaWYgKGluQ29tcG9zaXRpbmdNb2RlKCkpCi0gICAgICAgIG1fY29tcG9zaXRpbmdM
YXllcnNOZWVkUmVidWlsZCA9IG5lZWRSZWJ1aWxkOwotfQotCi12b2lkIFJlbmRlckxheWVyQ29t
cG9zaXRvcjo6d2lsbFJlY2FsY1N0eWxlKCkKLXsKLSAgICBtX2xheWVyTmVlZHNDb21wb3NpdGlu
Z1VwZGF0ZSA9IGZhbHNlOwotfQotCiBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZGlkUmVj
YWxjU3R5bGVXaXRoTm9QZW5kaW5nTGF5b3V0KCkKIHsKICAgICBpZiAoIW1fbGF5ZXJOZWVkc0Nv
bXBvc2l0aW5nVXBkYXRlKQpAQCAtMzg3LDExICszNzEsNiBAQCB2b2lkIFJlbmRlckxheWVyQ29t
cG9zaXRvcjo6Y3VzdG9tUG9zaXRpb25Gb3JWaXNpYmxlUmVjdENvbXB1dGF0aW9uKGNvbnN0IEdy
YXBoaQogICAgIHBvc2l0aW9uID0gLXNjcm9sbFBvc2l0aW9uOwogfQogCi12b2lkIFJlbmRlckxh
eWVyQ29tcG9zaXRvcjo6bm90aWZ5Rmx1c2hSZXF1aXJlZChjb25zdCBHcmFwaGljc0xheWVyKiBs
YXllcikKLXsKLSAgICBzY2hlZHVsZUxheWVyRmx1c2gobGF5ZXItPmNhblRocm90dGxlTGF5ZXJG
bHVzaCgpKTsKLX0KLQogdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnNjaGVkdWxlTGF5ZXJG
bHVzaE5vdygpCiB7CiAgICAgbV9oYXNQZW5kaW5nTGF5ZXJGbHVzaCA9IGZhbHNlOwpAQCAtNTgx
LDExICs1NjAsNiBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6bm90aWZ5Rmx1c2hCZWZv
cmVEaXNwbGF5UmVmcmVzaChjb25zdCBHcmFwaGljc0xheWVyKgogICAgIG1fbGF5ZXJVcGRhdGVy
LT5zY2hlZHVsZVVwZGF0ZSgpOwogfQogCi12b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6Zmx1
c2hMYXllcnNTb29uKEdyYXBoaWNzTGF5ZXJVcGRhdGVyJikKLXsKLSAgICBzY2hlZHVsZUxheWVy
Rmx1c2godHJ1ZSk7Ci19Ci0KIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpsYXllclRpbGVk
QmFja2luZ1VzYWdlQ2hhbmdlZChjb25zdCBHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyLCBi
b29sIHVzaW5nVGlsZWRCYWNraW5nKQogewogICAgIGlmICh1c2luZ1RpbGVkQmFja2luZykgewpA
QCAtNjE0LDExICs1ODgsNiBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6c2NoZWR1bGVD
b21wb3NpdGluZ0xheWVyVXBkYXRlKCkKICAgICAgICAgbV91cGRhdGVDb21wb3NpdGluZ0xheWVy
c1RpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwogfQogCi12b2lkIFJlbmRlckxheWVyQ29tcG9zaXRv
cjo6dXBkYXRlQ29tcG9zaXRpbmdMYXllcnNUaW1lckZpcmVkKCkKLXsKLSAgICB1cGRhdGVDb21w
b3NpdGluZ0xheWVycyhDb21wb3NpdGluZ1VwZGF0ZVR5cGU6OkFmdGVyTGF5b3V0KTsKLX0KLQog
Ym9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6Omhhc0FueUFkZGl0aW9uYWxDb21wb3NpdGVkTGF5
ZXJzKGNvbnN0IFJlbmRlckxheWVyJiByb290TGF5ZXIpIGNvbnN0CiB7CiAgICAgaW50IGxheWVy
Q291bnQgPSBtX2NvbXBvc2l0ZWRMYXllckNvdW50ICsgbV9yZW5kZXJWaWV3LmZyYW1lKCkubWFp
bkZyYW1lKCkucGFnZU92ZXJsYXlDb250cm9sbGVyKCkub3ZlcmxheUNvdW50KCk7CkBAIC0xMTUz
LDExICsxMTIyLDYgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcGFpbnRJbkNvbXBv
c2l0ZWRBbmNlc3RvcihSZW5kZXJMYXllciYgbGF5ZXIsIGNvbnMKICAgICAgICAgbV9yZW5kZXJW
aWV3LmZyYW1lVmlldygpLnNldE5lZWRzT25lU2hvdERyYXdpbmdTeW5jaHJvbml6YXRpb24oKTsK
IH0KIAotdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmxheWVyV2FzQWRkZWQoUmVuZGVyTGF5
ZXImLCBSZW5kZXJMYXllciYpCi17Ci0gICAgc2V0Q29tcG9zaXRpbmdMYXllcnNOZWVkUmVidWls
ZCgpOwotfQotCiB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6bGF5ZXJXaWxsQmVSZW1vdmVk
KFJlbmRlckxheWVyJiBwYXJlbnQsIFJlbmRlckxheWVyJiBjaGlsZCkKIHsKICAgICBpZiAoIWNo
aWxkLmlzQ29tcG9zaXRlZCgpIHx8IHBhcmVudC5yZW5kZXJlcigpLnJlbmRlclRyZWVCZWluZ0Rl
c3Ryb3llZCgpKQpAQCAtMTY3OCwxMSArMTY0Miw2IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjpmcmFtZVZpZXdEaWRTY3JvbGwoKQogICAgIHVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb24o
KTsKIH0KIAotdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmZyYW1lVmlld0RpZEFkZE9yUmVt
b3ZlU2Nyb2xsYmFycygpCi17Ci0gICAgdXBkYXRlT3ZlcmZsb3dDb250cm9sc0xheWVycygpOwot
fQotCiB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZnJhbWVWaWV3RGlkTGF5b3V0KCkKIHsK
ICAgICBSZW5kZXJMYXllckJhY2tpbmcqIHJlbmRlclZpZXdCYWNraW5nID0gbV9yZW5kZXJWaWV3
LmxheWVyKCktPmJhY2tpbmcoKTsKQEAgLTE4ODUsMTEgKzE4NDQsNiBAQCB2b2lkIFJlbmRlckxh
eWVyQ29tcG9zaXRvcjo6dXBkYXRlQ29tcG9zaXRpbmdEZXNjZW5kYW50R2VvbWV0cnkoUmVuZGVy
TGF5ZXImIGNvbQogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcGFp
bnRDb21wb3NpdGVkTGF5ZXJzKCkKLXsKLSAgICByZWN1cnNpdmVSZXBhaW50TGF5ZXIocm9vdFJl
bmRlckxheWVyKCkpOwotfQotCiB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVjdXJzaXZl
UmVwYWludExheWVyKFJlbmRlckxheWVyJiBsYXllcikKIHsKICAgICAvLyBGSVhNRTogVGhpcyBt
ZXRob2QgZG9lcyBub3Qgd29yayBjb3JyZWN0bHkgd2l0aCB0cmFuc2Zvcm1zLgpAQCAtMTkyMiw0
MCArMTg3Niw2IEBAIFJlbmRlckxheWVyJiBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJvb3RSZW5k
ZXJMYXllcigpIGNvbnN0CiAgICAgcmV0dXJuICptX3JlbmRlclZpZXcubGF5ZXIoKTsKIH0KIAot
R3JhcGhpY3NMYXllciogUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyb290R3JhcGhpY3NMYXllcigp
IGNvbnN0Ci17Ci0gICAgaWYgKG1fb3ZlcmZsb3dDb250cm9sc0hvc3RMYXllcikKLSAgICAgICAg
cmV0dXJuIG1fb3ZlcmZsb3dDb250cm9sc0hvc3RMYXllci5nZXQoKTsKLSAgICByZXR1cm4gbV9y
b290Q29udGVudExheWVyLmdldCgpOwotfQotCi1HcmFwaGljc0xheWVyKiBSZW5kZXJMYXllckNv
bXBvc2l0b3I6OnNjcm9sbExheWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zY3JvbGxMYXll
ci5nZXQoKTsKLX0KLQotR3JhcGhpY3NMYXllciogUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjbGlw
TGF5ZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX2NsaXBMYXllci5nZXQoKTsKLX0KLQotR3Jh
cGhpY3NMYXllciogUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyb290Q29udGVudExheWVyKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbV9yb290Q29udGVudExheWVyLmdldCgpOwotfQotCi0jaWYgRU5B
QkxFKFJVQkJFUl9CQU5ESU5HKQotR3JhcGhpY3NMYXllciogUmVuZGVyTGF5ZXJDb21wb3NpdG9y
OjpoZWFkZXJMYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbGF5ZXJGb3JIZWFkZXIuZ2V0
KCk7Ci19Ci0KLUdyYXBoaWNzTGF5ZXIqIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6Zm9vdGVyTGF5
ZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX2xheWVyRm9yRm9vdGVyLmdldCgpOwotfQotI2Vu
ZGlmCi0KIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpzZXRJc0luV2luZG93KGJvb2wgaXNJ
bldpbmRvdykKIHsKICAgICBMT0coQ29tcG9zaXRpbmcsICJSZW5kZXJMYXllckNvbXBvc2l0b3Ig
JXAgc2V0SXNJbldpbmRvdyAlZCIsIHRoaXMsIGlzSW5XaW5kb3cpOwpAQCAtMjAzMiwxMSArMTk1
Miw2IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVSb290TGF5ZXJQb3NpdGlv
bigpCiAjZW5kaWYKIH0KIAotYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmhhczNEQ29udGVu
dCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGxheWVySGFzM0RDb250ZW50KHJvb3RSZW5kZXJMYXll
cigpKTsKLX0KLQogYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6Om5lZWRzVG9CZUNvbXBvc2l0
ZWQoY29uc3QgUmVuZGVyTGF5ZXImIGxheWVyLCBSZW5kZXJMYXllcjo6Vmlld3BvcnRDb25zdHJh
aW5lZE5vdENvbXBvc2l0ZWRSZWFzb24qIHZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21wb3NpdGVk
UmVhc29uKSBjb25zdAogewogICAgIGlmICghY2FuQmVDb21wb3NpdGVkKGxheWVyKSkKQEAgLTIz
NTUsMTQgKzIyNzAsNiBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6Y2xpcHBlZEJ5QW5j
ZXN0b3IoUmVuZGVyTGF5ZXImIGxheWVyKSBjb25zdAogICAgIHJldHVybiAhbGF5ZXIuYmFja2dy
b3VuZENsaXBSZWN0KFJlbmRlckxheWVyOjpDbGlwUmVjdHNDb250ZXh0KGNvbXB1dGVDbGlwUm9v
dCwgVGVtcG9yYXJ5Q2xpcFJlY3RzKSkuaXNJbmZpbml0ZSgpOyAvLyBGSVhNRTogSW5jb3JyZWN0
IGZvciBDU1MgcmVnaW9ucy4KIH0KIAotLy8gUmV0dXJuIHRydWUgaWYgdGhlIGdpdmVuIGxheWVy
IGlzIGEgc3RhY2tpbmcgY29udGV4dCBhbmQgaGFzIGNvbXBvc2l0aW5nIGNoaWxkCi0vLyBsYXll
cnMgdGhhdCBpdCBuZWVkcyB0byBjbGlwLiBJbiB0aGlzIGNhc2Ugd2UgaW5zZXJ0IGEgY2xpcHBp
bmcgR3JhcGhpY3NMYXllcgotLy8gaW50byB0aGUgaGllcmFyY2h5IGJldHdlZW4gdGhpcyBsYXll
ciBhbmQgaXRzIGNoaWxkcmVuIGluIHRoZSB6LW9yZGVyIGhpZXJhcmNoeS4KLWJvb2wgUmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjpjbGlwc0NvbXBvc2l0aW5nRGVzY2VuZGFudHMoY29uc3QgUmVuZGVy
TGF5ZXImIGxheWVyKSBjb25zdAotewotICAgIHJldHVybiBsYXllci5oYXNDb21wb3NpdGluZ0Rl
c2NlbmRhbnQoKSAmJiBsYXllci5yZW5kZXJlcigpLmhhc0NsaXBPck92ZXJmbG93Q2xpcCgpICYm
ICFsYXllci5pc29sYXRlc0NvbXBvc2l0ZWRCbGVuZGluZygpOwotfQotCiBib29sIFJlbmRlckxh
eWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvclNjcm9sbGFibGVGcmFtZSgpIGNv
bnN0CiB7CiAgICAgaWYgKGlzTWFpbkZyYW1lQ29tcG9zaXRvcigpKQpAQCAtMjYyNywxNCArMjUz
NCw2IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjppc1ZpZXdwb3J0Q29uc3RyYWluZWRG
aXhlZE9yU3RpY2t5TGF5ZXIoY29uc3QgUmVuZGVyCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJv
b2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1c2VDb29yZGluYXRlZFNjcm9sbGluZ0ZvckxheWVy
KGNvbnN0IFJlbmRlckxheWVyJiBsYXllcikgY29uc3QKLXsKLSAgICBpZiAobGF5ZXIuaXNSZW5k
ZXJWaWV3TGF5ZXIoKSAmJiBoYXNDb29yZGluYXRlZFNjcm9sbGluZygpKQotICAgICAgICByZXR1
cm4gdHJ1ZTsKLQotICAgIHJldHVybiBsYXllci51c2VzQWNjZWxlcmF0ZWRTY3JvbGxpbmcoKTsK
LX0KLQogYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQ
b3NpdGlvbihSZW5kZXJMYXllck1vZGVsT2JqZWN0JiByZW5kZXJlciwgY29uc3QgUmVuZGVyTGF5
ZXImIGxheWVyLCBSZW5kZXJMYXllcjo6Vmlld3BvcnRDb25zdHJhaW5lZE5vdENvbXBvc2l0ZWRS
ZWFzb24qIHZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21wb3NpdGVkUmVhc29uKSBjb25zdAogewog
ICAgIC8vIHBvc2l0aW9uOmZpeGVkIGVsZW1lbnRzIHRoYXQgY3JlYXRlIHRoZWlyIG93biBzdGFj
a2luZyBjb250ZXh0IChlLmcuIGhhdmUgYW4gZXhwbGljaXQgei1pbmRleCwKQEAgLTI3MDksMTEg
KzI2MDgsNiBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGlu
Z0ZvclBvc2l0aW9uKFJlbmRlckxheWVyTW9kZWxPYmplYwogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0Zvck92ZXJm
bG93U2Nyb2xsaW5nKGNvbnN0IFJlbmRlckxheWVyJiBsYXllcikgY29uc3QKLXsKLSAgICByZXR1
cm4gbGF5ZXIubmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKCk7Ci19Ci0KICNpZiBQTEFURk9STShJ
T1MpCiBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvclNj
cm9sbGluZyhjb25zdCBSZW5kZXJMYXllciYgbGF5ZXIpIGNvbnN0CiB7CkBAIC0yNzM3LDE0ICsy
NjMxLDYgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmlzUnVubmluZ1RyYW5zZm9ybUFu
aW1hdGlvbihSZW5kZXJMYXllck1vZGVsT2JqZWN0JgogICAgIHJldHVybiByZW5kZXJlci5hbmlt
YXRpb24oKS5pc1J1bm5pbmdBbmltYXRpb25PblJlbmRlcmVyKHJlbmRlcmVyLCBDU1NQcm9wZXJ0
eVRyYW5zZm9ybSwgQW5pbWF0aW9uQmFzZTo6UnVubmluZyB8IEFuaW1hdGlvbkJhc2U6OlBhdXNl
ZCk7CiB9CiAKLS8vIElmIGFuIGVsZW1lbnQgaGFzIG5lZ2F0aXZlIHotaW5kZXggY2hpbGRyZW4s
IHRob3NlIGNoaWxkcmVuIHJlbmRlciBpbiBmcm9udCBvZiB0aGUgCi0vLyBsYXllciBiYWNrZ3Jv
dW5kLCBzbyB3ZSBuZWVkIGFuIGV4dHJhICdjb250ZW50cycgbGF5ZXIgZm9yIHRoZSBmb3JlZ3Jv
dW5kIG9mIHRoZSBsYXllcgotLy8gb2JqZWN0LgotYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6
Om5lZWRzQ29udGVudHNDb21wb3NpdGluZ0xheWVyKGNvbnN0IFJlbmRlckxheWVyJiBsYXllcikg
Y29uc3QKLXsKLSAgICByZXR1cm4gbGF5ZXIuaGFzTmVnYXRpdmVaT3JkZXJMaXN0KCk7Ci19Ci0K
IGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc1Njcm9sbExheWVyKFJvb3RMYXll
ckF0dGFjaG1lbnQgYXR0YWNobWVudCkgY29uc3QKIHsKICAgICBGcmFtZVZpZXcmIGZyYW1lVmll
dyA9IG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKTsKQEAgLTI4MzEsMTYgKzI3MTcsNiBAQCB2b2lk
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVzZXRUcmFja2VkUmVwYWludFJlY3RzKCkKICAgICB9
CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpzZXRUcmFja3NSZXBhaW50cyhib29s
IHRyYWNrc1JlcGFpbnRzKQotewotICAgIG1faXNUcmFja2luZ1JlcGFpbnRzID0gdHJhY2tzUmVw
YWludHM7Ci19Ci0KLWJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjppc1RyYWNraW5nUmVwYWlu
dHMoKSBjb25zdAotewotICAgIHJldHVybiBtX2lzVHJhY2tpbmdSZXBhaW50czsKLX0KLQogZmxv
YXQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fcmVuZGVyVmlldy5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCk7CkBA
IC0yODcyLDExICsyNzQ4LDYgQEAgZmxvYXQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjb250ZW50
c1NjYWxlTXVsdGlwbGllckZvck5ld1RpbGVzKGNvbnN0IEdyYXBoaWNzTGEKICNlbmRpZgogfQog
Ci12b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZGlkQ29tbWl0Q2hhbmdlc0ZvckxheWVyKGNv
bnN0IEdyYXBoaWNzTGF5ZXIqKSBjb25zdAotewotICAgIC8vIE5vdGhpbmcgdG8gZG8gaGVyZSB5
ZXQuCi19Ci0KIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpkb2N1bWVudFVzZXNUaWxlZEJh
Y2tpbmcoKSBjb25zdAogewogICAgIFJlbmRlckxheWVyKiBsYXllciA9IG1fcmVuZGVyVmlldy5s
YXllcigpOwpAQCAtMzQ2NywxMSArMzMzOCw2IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9y
OjpkZXRhY2hSb290TGF5ZXIoKQogICAgIHJvb3RMYXllckF0dGFjaG1lbnRDaGFuZ2VkKCk7CiB9
CiAKLXZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVSb290TGF5ZXJBdHRhY2htZW50
KCkKLXsKLSAgICBlbnN1cmVSb290TGF5ZXIoKTsKLX0KLQogdm9pZCBSZW5kZXJMYXllckNvbXBv
c2l0b3I6OnJvb3RMYXllckF0dGFjaG1lbnRDaGFuZ2VkKCkKIHsKICAgICAvLyBUaGUgZG9jdW1l
bnQtcmVsYXRpdmUgcGFnZSBvdmVybGF5IGxheWVyICh3aGljaCBpcyBwaW5uZWQgdG8gdGhlIG1h
aW4gZnJhbWUncyBsYXllciB0cmVlKQpAQCAtNDA2MiwyNiArMzkyOCw2IEBAIFJlZlB0cjxEaXNw
bGF5UmVmcmVzaE1vbml0b3I+IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6Y3JlYXRlRGlzcGxheVJl
ZnJlc2hNb25pdG9yCiB9CiAjZW5kaWYKIAotdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnN0
YXJ0VHJhY2tpbmdMYXllckZsdXNoZXMoKQotewotICAgIG1fbGF5ZXJGbHVzaENvdW50ID0gMDsK
LX0KLQotdW5zaWduZWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpsYXllckZsdXNoQ291bnQoKSBj
b25zdAotewotICAgIHJldHVybiBtX2xheWVyRmx1c2hDb3VudDsKLX0KLQotdm9pZCBSZW5kZXJM
YXllckNvbXBvc2l0b3I6OnN0YXJ0VHJhY2tpbmdDb21wb3NpdGluZ1VwZGF0ZXMoKQotewotICAg
IG1fY29tcG9zaXRpbmdVcGRhdGVDb3VudCA9IDA7Ci19Ci0KLXVuc2lnbmVkIFJlbmRlckxheWVy
Q29tcG9zaXRvcjo6Y29tcG9zaXRpbmdVcGRhdGVDb3VudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1fY29tcG9zaXRpbmdVcGRhdGVDb3VudDsKLX0KLQogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NO
QVApCiB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlU2Nyb2xsU25hcFByb3BlcnRp
ZXNXaXRoRnJhbWVWaWV3KGNvbnN0IEZyYW1lVmlldyYgZnJhbWVWaWV3KQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCmluZGV4IGY2MWFi
MjhkM2NlNTkxMWRiMzlmNjViNDRmMzI3M2U4NTFiYzU1YjkuLjhlZTgzYTQ5MTcyNGJmNzQ2Nzli
NWM2YWQ2MWYwNjA4YTQ2MGRmZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKQEAgLTEwOCwxNyArMTA4LDIxIEBAIHB1YmxpYzoKICAg
ICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGlzIGVuYWJs
ZWQKICAgICBib29sIGhhc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSBjb25zdCB7IHJldHVybiBt
X2hhc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmc7IH0KIAotICAgIGJvb2wgY2FuUmVuZGVyM0RUcmFu
c2Zvcm1zKCkgY29uc3Q7CisgICAgYm9vbCBjYW5SZW5kZXIzRFRyYW5zZm9ybXMoKSBjb25zdCB7
IHJldHVybiBoYXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkgJiYgKG1fY29tcG9zaXRpbmdUcmln
Z2VycyAmIENocm9tZUNsaWVudDo6VGhyZWVEVHJhbnNmb3JtVHJpZ2dlcik7IH0KIAogICAgIC8v
IENvcHkgdGhlIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIHJlbGF0ZWQgZmxhZ3MgZnJvbSBTZXR0
aW5ncwogICAgIHZvaWQgY2FjaGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nRmxhZ3MoKTsKIAogICAg
IC8vIENhbGxlZCB3aGVuIHRoZSBsYXllciBoaWVyYXJjaHkgbmVlZHMgdG8gYmUgdXBkYXRlZCAo
Y29tcG9zaXRpbmcgbGF5ZXJzIGhhdmUgYmVlbgogICAgIC8vIGNyZWF0ZWQsIGRlc3Ryb3llZCBv
ciByZS1wYXJlbnRlZCkuCi0gICAgdm9pZCBzZXRDb21wb3NpdGluZ0xheWVyc05lZWRSZWJ1aWxk
KGJvb2wgbmVlZFJlYnVpbGQgPSB0cnVlKTsKKyAgICB2b2lkIHNldENvbXBvc2l0aW5nTGF5ZXJz
TmVlZFJlYnVpbGQoYm9vbCBuZWVkUmVidWlsZCA9IHRydWUpCisgICAgeworICAgICAgICBpZiAo
aW5Db21wb3NpdGluZ01vZGUoKSkKKyAgICAgICAgICAgIG1fY29tcG9zaXRpbmdMYXllcnNOZWVk
UmVidWlsZCA9IG5lZWRSZWJ1aWxkOworICAgIH0KICAgICBib29sIGNvbXBvc2l0aW5nTGF5ZXJz
TmVlZFJlYnVpbGQoKSBjb25zdCB7IHJldHVybiBtX2NvbXBvc2l0aW5nTGF5ZXJzTmVlZFJlYnVp
bGQ7IH0KICAgICAKLSAgICB2b2lkIHdpbGxSZWNhbGNTdHlsZSgpOworICAgIHZvaWQgd2lsbFJl
Y2FsY1N0eWxlKCkgeyBtX2xheWVyTmVlZHNDb21wb3NpdGluZ1VwZGF0ZSA9IGZhbHNlOyB9CiAK
ICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGNvbXBvc2l0ZWQgbGF5ZXJzIHdlcmUgYWN0dWFs
bHkgdXBkYXRlZC4KICAgICBib29sIGRpZFJlY2FsY1N0eWxlV2l0aE5vUGVuZGluZ0xheW91dCgp
OwpAQCAtMTU2LDEwICsxNjAsMTYgQEAgcHVibGljOgogICAgIC8vIFdoZXRoZXIgbGF5ZXIncyBi
YWNraW5nIG5lZWRzIGEgZ3JhcGhpY3MgbGF5ZXIgdG8gZG8gY2xpcHBpbmcgYnkgYW4gYW5jZXN0
b3IgKG5vbi1zdGFja2luZy1jb250ZXh0IHBhcmVudCB3aXRoIG92ZXJmbG93KS4KICAgICBib29s
IGNsaXBwZWRCeUFuY2VzdG9yKFJlbmRlckxheWVyJikgY29uc3Q7CiAgICAgLy8gV2hldGhlciBs
YXllcidzIGJhY2tpbmcgbmVlZHMgYSBncmFwaGljcyBsYXllciB0byBjbGlwIHotb3JkZXIgY2hp
bGRyZW4gb2YgdGhlIGdpdmVuIGxheWVyLgotICAgIGJvb2wgY2xpcHNDb21wb3NpdGluZ0Rlc2Nl
bmRhbnRzKGNvbnN0IFJlbmRlckxheWVyJikgY29uc3Q7CisgICAgLy8gUmV0dXJuIHRydWUgaWYg
dGhlIGdpdmVuIGxheWVyIGlzIGEgc3RhY2tpbmcgY29udGV4dCBhbmQgaGFzIGNvbXBvc2l0aW5n
IGNoaWxkCisgICAgLy8gbGF5ZXJzIHRoYXQgaXQgbmVlZHMgdG8gY2xpcC4gSW4gdGhpcyBjYXNl
IHdlIGluc2VydCBhIGNsaXBwaW5nIEdyYXBoaWNzTGF5ZXIKKyAgICAvLyBpbnRvIHRoZSBoaWVy
YXJjaHkgYmV0d2VlbiB0aGlzIGxheWVyIGFuZCBpdHMgY2hpbGRyZW4gaW4gdGhlIHotb3JkZXIg
aGllcmFyY2h5LgorICAgIGJvb2wgY2xpcHNDb21wb3NpdGluZ0Rlc2NlbmRhbnRzKGNvbnN0IFJl
bmRlckxheWVyJiBsYXllcikgY29uc3QgeyByZXR1cm4gbGF5ZXIuaGFzQ29tcG9zaXRpbmdEZXNj
ZW5kYW50KCkgJiYgbGF5ZXIucmVuZGVyZXIoKS5oYXNDbGlwT3JPdmVyZmxvd0NsaXAoKSAmJiAh
bGF5ZXIuaXNvbGF0ZXNDb21wb3NpdGVkQmxlbmRpbmcoKTsgfQogCiAgICAgLy8gV2hldGhlciB0
aGUgZ2l2ZW4gbGF5ZXIgbmVlZHMgYW4gZXh0cmEgJ2NvbnRlbnRzJyBsYXllci4KLSAgICBib29s
IG5lZWRzQ29udGVudHNDb21wb3NpdGluZ0xheWVyKGNvbnN0IFJlbmRlckxheWVyJikgY29uc3Q7
CisgICAgLy8gSWYgYW4gZWxlbWVudCBoYXMgbmVnYXRpdmUgei1pbmRleCBjaGlsZHJlbiwgdGhv
c2UgY2hpbGRyZW4gcmVuZGVyIGluIGZyb250IG9mIHRoZQorICAgIC8vIGxheWVyIGJhY2tncm91
bmQsIHNvIHdlIG5lZWQgYW4gZXh0cmEgJ2NvbnRlbnRzJyBsYXllciBmb3IgdGhlIGZvcmVncm91
bmQgb2YgdGhlIGxheWVyCisgICAgLy8gb2JqZWN0LgorICAgIGJvb2wgbmVlZHNDb250ZW50c0Nv
bXBvc2l0aW5nTGF5ZXIoY29uc3QgUmVuZGVyTGF5ZXImIGxheWVyKSBjb25zdCB7IHJldHVybiBs
YXllci5oYXNOZWdhdGl2ZVpPcmRlckxpc3QoKTsgfQogCiAgICAgYm9vbCBzdXBwb3J0c0ZpeGVk
Um9vdEJhY2tncm91bmRDb21wb3NpdGluZygpIGNvbnN0OwogICAgIGJvb2wgbmVlZHNGaXhlZFJv
b3RCYWNrZ3JvdW5kTGF5ZXIoY29uc3QgUmVuZGVyTGF5ZXImKSBjb25zdDsKQEAgLTE3Niw3ICsx
ODYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXBhaW50SW5Db21wb3NpdGVkQW5jZXN0b3IoUmVu
ZGVyTGF5ZXImLCBjb25zdCBMYXlvdXRSZWN0Jik7CiAgICAgCiAgICAgLy8gTm90aWZ5IHVzIHRo
YXQgYSBsYXllciBoYXMgYmVlbiBhZGRlZCBvciByZW1vdmVkCi0gICAgdm9pZCBsYXllcldhc0Fk
ZGVkKFJlbmRlckxheWVyJiBwYXJlbnQsIFJlbmRlckxheWVyJiBjaGlsZCk7CisgICAgdm9pZCBs
YXllcldhc0FkZGVkKFJlbmRlckxheWVyJiAvKnBhcmVudCovLCBSZW5kZXJMYXllciYgLypjaGls
ZCovKSB7IHNldENvbXBvc2l0aW5nTGF5ZXJzTmVlZFJlYnVpbGQoKTsgfQogICAgIHZvaWQgbGF5
ZXJXaWxsQmVSZW1vdmVkKFJlbmRlckxheWVyJiBwYXJlbnQsIFJlbmRlckxheWVyJiBjaGlsZCk7
CiAKICAgICB2b2lkIGxheWVyU3R5bGVDaGFuZ2VkKFN0eWxlRGlmZmVyZW5jZSwgUmVuZGVyTGF5
ZXImLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpOwpAQCAtMTg3LDIwICsxOTcsMjIgQEAg
cHVibGljOgogICAgIFJlbmRlckxheWVyKiBlbmNsb3NpbmdOb25TdGFja2luZ0NsaXBwaW5nTGF5
ZXIoY29uc3QgUmVuZGVyTGF5ZXImKSBjb25zdDsKIAogICAgIC8vIFJlcGFpbnQgYWxsIGNvbXBv
c2l0ZWQgbGF5ZXJzLgotICAgIHZvaWQgcmVwYWludENvbXBvc2l0ZWRMYXllcnMoKTsKKyAgICB2
b2lkIHJlcGFpbnRDb21wb3NpdGVkTGF5ZXJzKCkgeyByZWN1cnNpdmVSZXBhaW50TGF5ZXIocm9v
dFJlbmRlckxheWVyKCkpOyB9CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIGxh
eWVyIG5lZWRzIGl0IG93biBiYWNraW5nIHN0b3JlLgogICAgIGJvb2wgcmVxdWlyZXNPd25CYWNr
aW5nU3RvcmUoY29uc3QgUmVuZGVyTGF5ZXImLCBjb25zdCBSZW5kZXJMYXllciogY29tcG9zaXRp
bmdBbmNlc3RvckxheWVyLCBjb25zdCBMYXlvdXRSZWN0JiBsYXllckNvbXBvc2l0ZWRCb3VuZHNJ
bkFuY2VzdG9yLCBjb25zdCBMYXlvdXRSZWN0JiBhbmNlc3RvckNvbXBvc2l0ZWRCb3VuZHMpIGNv
bnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVuZGVyTGF5ZXImIHJvb3RSZW5kZXJMYXllcigp
IGNvbnN0OwotICAgIEdyYXBoaWNzTGF5ZXIqIHJvb3RHcmFwaGljc0xheWVyKCkgY29uc3Q7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NMYXllciogc2Nyb2xsTGF5ZXIoKSBjb25zdDsKLSAg
ICBHcmFwaGljc0xheWVyKiBjbGlwTGF5ZXIoKSBjb25zdDsKLSAgICBHcmFwaGljc0xheWVyKiBy
b290Q29udGVudExheWVyKCkgY29uc3Q7CisgICAgR3JhcGhpY3NMYXllciogcm9vdEdyYXBoaWNz
TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX292ZXJmbG93Q29udHJvbHNIb3N0TGF5ZXIgPyBtX292
ZXJmbG93Q29udHJvbHNIb3N0TGF5ZXIuZ2V0KCkgOiByb290Q29udGVudExheWVyKCk7IH0KKwor
ICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzTGF5ZXIqIHNjcm9sbExheWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9zY3JvbGxMYXllci5nZXQoKTsgfQorICAgIEdyYXBoaWNzTGF5ZXIqIGNsaXBMYXll
cigpIGNvbnN0IHsgcmV0dXJuIG1fY2xpcExheWVyLmdldCgpOyB9CisgICAgR3JhcGhpY3NMYXll
ciogcm9vdENvbnRlbnRMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdENvbnRlbnRMYXllci5n
ZXQoKTsgfQorCiAKICNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCi0gICAgR3JhcGhpY3NMYXll
ciogaGVhZGVyTGF5ZXIoKSBjb25zdDsKLSAgICBHcmFwaGljc0xheWVyKiBmb290ZXJMYXllcigp
IGNvbnN0OworICAgIEdyYXBoaWNzTGF5ZXIqIGhlYWRlckxheWVyKCkgY29uc3QgeyByZXR1cm4g
bV9sYXllckZvckhlYWRlci5nZXQoKTsgfQorICAgIEdyYXBoaWNzTGF5ZXIqIGZvb3RlckxheWVy
KCkgY29uc3QgeyByZXR1cm4gbV9sYXllckZvckZvb3Rlci5nZXQoKTsgfQogI2VuZGlmCiAKICAg
ICBlbnVtIFJvb3RMYXllckF0dGFjaG1lbnQgewpAQCAtMjEwLDcgKzIyMiw3IEBAIHB1YmxpYzoK
ICAgICB9OwogCiAgICAgUm9vdExheWVyQXR0YWNobWVudCByb290TGF5ZXJBdHRhY2htZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9yb290TGF5ZXJBdHRhY2htZW50OyB9Ci0gICAgdm9pZCB1cGRhdGVS
b290TGF5ZXJBdHRhY2htZW50KCk7CisgICAgdm9pZCB1cGRhdGVSb290TGF5ZXJBdHRhY2htZW50
KCkgeyBlbnN1cmVSb290TGF5ZXIoKTsgfQogICAgIHZvaWQgdXBkYXRlUm9vdExheWVyUG9zaXRp
b24oKTsKICAgICAKICAgICB2b2lkIHNldElzSW5XaW5kb3coYm9vbCk7CkBAIC0yMjcsNyArMjM5
LDcgQEAgcHVibGljOgogCiAgICAgLy8gV2FsayB0aGUgdHJlZSBsb29raW5nIGZvciBsYXllcnMg
d2l0aCAzZCB0cmFuc2Zvcm1zLiBVc2VmdWwgaW4gY2FzZSB5b3UgbmVlZAogICAgIC8vIHRvIGtu
b3cgaWYgdGhlcmUgaXMgbm9uLWFmZmluZSBjb250ZW50LCBlLmcuIGZvciBkcmF3aW5nIGludG8g
YW4gaW1hZ2UuCi0gICAgYm9vbCBoYXMzRENvbnRlbnQoKSBjb25zdDsKKyAgICBib29sIGhhczNE
Q29udGVudCgpIGNvbnN0IHsgcmV0dXJuIGxheWVySGFzM0RDb250ZW50KHJvb3RSZW5kZXJMYXll
cigpKTsgfQogICAgIAogICAgIHN0YXRpYyBSZW5kZXJMYXllckNvbXBvc2l0b3IqIGZyYW1lQ29u
dGVudHNDb21wb3NpdG9yKFJlbmRlcldpZGdldCopOwogICAgIC8vIFJldHVybiB0cnVlIGlmIHRo
ZSBsYXllcnMgY2hhbmdlZC4KQEAgLTIzNyw3ICsyNDksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBm
cmFtZVZpZXdEaWRDaGFuZ2VMb2NhdGlvbihjb25zdCBJbnRQb2ludCYgY29udGVudHNPZmZzZXQp
OwogICAgIHZvaWQgZnJhbWVWaWV3RGlkQ2hhbmdlU2l6ZSgpOwogICAgIHZvaWQgZnJhbWVWaWV3
RGlkU2Nyb2xsKCk7Ci0gICAgdm9pZCBmcmFtZVZpZXdEaWRBZGRPclJlbW92ZVNjcm9sbGJhcnMo
KTsKKyAgICB2b2lkIGZyYW1lVmlld0RpZEFkZE9yUmVtb3ZlU2Nyb2xsYmFycygpIHsgdXBkYXRl
T3ZlcmZsb3dDb250cm9sc0xheWVycygpOyB9CiAgICAgdm9pZCBmcmFtZVZpZXdEaWRMYXlvdXQo
KTsKICAgICB2b2lkIHJvb3RGaXhlZEJhY2tncm91bmRzQ2hhbmdlZCgpOwogCkBAIC0yNTEsNyAr
MjYzLDcgQEAgcHVibGljOgogICAgIGZsb2F0IHBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0IG92ZXJy
aWRlOwogICAgIGZsb2F0IHpvb21lZE91dFBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0IG92ZXJyaWRl
OwogCi0gICAgdm9pZCBkaWRDb21taXRDaGFuZ2VzRm9yTGF5ZXIoY29uc3QgR3JhcGhpY3NMYXll
ciopIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgZGlkQ29tbWl0Q2hhbmdlc0ZvckxheWVyKGNv
bnN0IEdyYXBoaWNzTGF5ZXIqKSBjb25zdCBvdmVycmlkZSB7IC8qIE5vdGhpbmcgdG8gZG8gaGVy
ZSB5ZXQuICovIH0KICAgICB2b2lkIG5vdGlmeUZsdXNoQmVmb3JlRGlzcGxheVJlZnJlc2goY29u
c3QgR3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwogCiAgICAgdm9pZCBsYXllclRpbGVkQmFja2lu
Z1VzYWdlQ2hhbmdlZChjb25zdCBHcmFwaGljc0xheWVyKiwgYm9vbCAvKnVzaW5nVGlsZWRCYWNr
aW5nKi8pOwpAQCAtMjk4LDcgKzMxMCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdm9pZCBy
ZXNldFRyYWNrZWRSZXBhaW50UmVjdHMoKTsKLSAgICB2b2lkIHNldFRyYWNrc1JlcGFpbnRzKGJv
b2wpOworICAgIHZvaWQgc2V0VHJhY2tzUmVwYWludHMoYm9vbCB0cmFja3NSZXBhaW50cykgeyBt
X2lzVHJhY2tpbmdSZXBhaW50cyA9IHRyYWNrc1JlcGFpbnRzOyB9CiAKICAgICB2b2lkIHNldFNo
b3VsZFJlZXZhbHVhdGVDb21wb3NpdGluZ0FmdGVyTGF5b3V0KCkgeyBtX3JlZXZhbHVhdGVDb21w
b3NpdGluZ0FmdGVyTGF5b3V0ID0gdHJ1ZTsgfQogCkBAIC0zMjMsMTEgKzMzNSwxMSBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogICAgIC8vIEZvciB0ZXN0aW5nLgotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc3RhcnRUcmFja2luZ0xheWVyRmx1c2hlcygpOwotICAgIFdFQkNPUkVfRVhQT1JUIHVuc2ln
bmVkIGxheWVyRmx1c2hDb3VudCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3Rh
cnRUcmFja2luZ0xheWVyRmx1c2hlcygpIHsgbV9sYXllckZsdXNoQ291bnQgPSAwOyB9CisgICAg
V0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgbGF5ZXJGbHVzaENvdW50KCkgY29uc3QgeyByZXR1cm4g
bV9sYXllckZsdXNoQ291bnQ7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRUcmFj
a2luZ0NvbXBvc2l0aW5nVXBkYXRlcygpOwotICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGNv
bXBvc2l0aW5nVXBkYXRlQ291bnQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0
YXJ0VHJhY2tpbmdDb21wb3NpdGluZ1VwZGF0ZXMoKSB7IG1fY29tcG9zaXRpbmdVcGRhdGVDb3Vu
dCA9IDA7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBjb21wb3NpdGluZ1VwZGF0ZUNv
dW50KCkgY29uc3QgeyByZXR1cm4gbV9jb21wb3NpdGluZ1VwZGF0ZUNvdW50OyB9CiAKIHByaXZh
dGU6CiAgICAgY2xhc3MgT3ZlcmxhcE1hcDsKQEAgLTMzNSwxMyArMzQ3LDEzIEBAIHByaXZhdGU6
CiAgICAgc3RydWN0IE92ZXJsYXBFeHRlbnQ7CiAKICAgICAvLyBHcmFwaGljc0xheWVyQ2xpZW50
IGltcGxlbWVudGF0aW9uCi0gICAgdm9pZCBub3RpZnlGbHVzaFJlcXVpcmVkKGNvbnN0IEdyYXBo
aWNzTGF5ZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIG5vdGlmeUZsdXNoUmVxdWlyZWQoY29uc3Qg
R3JhcGhpY3NMYXllciogbGF5ZXIpIG92ZXJyaWRlIHsgc2NoZWR1bGVMYXllckZsdXNoKGxheWVy
LT5jYW5UaHJvdHRsZUxheWVyRmx1c2goKSk7IH0KICAgICB2b2lkIHBhaW50Q29udGVudHMoY29u
c3QgR3JhcGhpY3NMYXllciosIEdyYXBoaWNzQ29udGV4dCYsIEdyYXBoaWNzTGF5ZXJQYWludGlu
Z1BoYXNlLCBjb25zdCBGbG9hdFJlY3QmLCBHcmFwaGljc0xheWVyUGFpbnRCZWhhdmlvcikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBjdXN0b21Qb3NpdGlvbkZvclZpc2libGVSZWN0Q29tcHV0YXRpb24o
Y29uc3QgR3JhcGhpY3NMYXllciosIEZsb2F0UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKLSAgICBi
b29sIGlzVHJhY2tpbmdSZXBhaW50cygpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNUcmFj
a2luZ1JlcGFpbnRzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc1RyYWNraW5nUmVwYWlu
dHM7IH0KICAgICAKICAgICAvLyBHcmFwaGljc0xheWVyVXBkYXRlckNsaWVudCBpbXBsZW1lbnRh
dGlvbgotICAgIHZvaWQgZmx1c2hMYXllcnNTb29uKEdyYXBoaWNzTGF5ZXJVcGRhdGVyJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBmbHVzaExheWVyc1Nvb24oR3JhcGhpY3NMYXllclVwZGF0ZXImKSBv
dmVycmlkZSB7IHNjaGVkdWxlTGF5ZXJGbHVzaCh0cnVlKTsgfQogCiAgICAgLy8gV2hldGhlciB0
aGUgZ2l2ZW4gUkwgbmVlZHMgYSBjb21wb3NpdGluZyBsYXllci4KICAgICBib29sIG5lZWRzVG9C
ZUNvbXBvc2l0ZWQoY29uc3QgUmVuZGVyTGF5ZXImLCBSZW5kZXJMYXllcjo6Vmlld3BvcnRDb25z
dHJhaW5lZE5vdENvbXBvc2l0ZWRSZWFzb24qID0gbnVsbHB0cikgY29uc3Q7CkBAIC0zNjQsNyAr
Mzc2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZFRvT3ZlcmxhcE1hcChPdmVybGFwTWFwJiwg
Y29uc3QgUmVuZGVyTGF5ZXImLCBPdmVybGFwRXh0ZW50Jik7CiAgICAgdm9pZCBhZGRUb092ZXJs
YXBNYXBSZWN1cnNpdmUoT3ZlcmxhcE1hcCYsIGNvbnN0IFJlbmRlckxheWVyJiwgY29uc3QgUmVu
ZGVyTGF5ZXIqIGFuY2VzdG9yTGF5ZXIgPSBudWxscHRyKTsKIAotICAgIHZvaWQgdXBkYXRlQ29t
cG9zaXRpbmdMYXllcnNUaW1lckZpcmVkKCk7CisgICAgdm9pZCB1cGRhdGVDb21wb3NpdGluZ0xh
eWVyc1RpbWVyRmlyZWQoKSB7IHVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzKENvbXBvc2l0aW5nVXBk
YXRlVHlwZTo6QWZ0ZXJMYXlvdXQpOyB9CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgYW55IGxh
eWVyJ3MgY29tcG9zaXRpbmcgY2hhbmdlZAogICAgIHZvaWQgY29tcHV0ZUNvbXBvc2l0aW5nUmVx
dWlyZW1lbnRzKFJlbmRlckxheWVyKiBhbmNlc3RvckxheWVyLCBSZW5kZXJMYXllciYsIE92ZXJs
YXBNYXAmLCBDb21wb3NpdGluZ1N0YXRlJiwgYm9vbCYgbGF5ZXJzQ2hhbmdlZCwgYm9vbCYgZGVz
Y2VuZGFudEhhczNEVHJhbnNmb3JtKTsKQEAgLTQyNSw3ICs0MzcsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgcmVxdWlyZXNDb21wb3NpdGluZ0ZvcldpbGxDaGFuZ2UoUmVuZGVyTGF5ZXJNb2RlbE9i
amVjdCYpIGNvbnN0OwogICAgIGJvb2wgcmVxdWlyZXNDb21wb3NpdGluZ0ZvclNjcm9sbGFibGVG
cmFtZSgpIGNvbnN0OwogICAgIGJvb2wgcmVxdWlyZXNDb21wb3NpdGluZ0ZvclBvc2l0aW9uKFJl
bmRlckxheWVyTW9kZWxPYmplY3QmLCBjb25zdCBSZW5kZXJMYXllciYsIFJlbmRlckxheWVyOjpW
aWV3cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNvbiogPSBudWxscHRyKSBjb25zdDsK
LSAgICBib29sIHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9sbGluZyhjb25zdCBS
ZW5kZXJMYXllciYpIGNvbnN0OworICAgIGJvb2wgcmVxdWlyZXNDb21wb3NpdGluZ0Zvck92ZXJm
bG93U2Nyb2xsaW5nKGNvbnN0IFJlbmRlckxheWVyJiBsYXllcikgY29uc3QgeyByZXR1cm4gbGF5
ZXIubmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKCk7IH0KICAgICBib29sIHJlcXVpcmVzQ29tcG9z
aXRpbmdGb3JJbmRpcmVjdFJlYXNvbihSZW5kZXJMYXllck1vZGVsT2JqZWN0JiwgYm9vbCBoYXND
b21wb3NpdGVkRGVzY2VuZGFudHMsIGJvb2wgaGFzM0RUcmFuc2Zvcm1lZERlc2NlbmRhbnRzLCBS
ZW5kZXJMYXllcjo6SW5kaXJlY3RDb21wb3NpdGluZ1JlYXNvbiYpIGNvbnN0OwogICAgIHN0YXRp
YyBib29sIHN0eWxlQ2hhbmdlTWF5QWZmZWN0SW5kaXJlY3RDb21wb3NpdGluZ1JlYXNvbnMoY29u
c3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlclN0eWxlJiBv
bGRTdHlsZSk7CiAKQEAgLTQ1NSw3ICs0NjcsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gVHJ1ZSBp
ZiB0aGUgRnJhbWVWaWV3IHVzZXMgYSBTY3JvbGxpbmdDb29yZGluYXRvci4KICAgICBib29sIGhh
c0Nvb3JkaW5hdGVkU2Nyb2xsaW5nKCkgY29uc3Q7Ci0gICAgYm9vbCB1c2VDb29yZGluYXRlZFNj
cm9sbGluZ0ZvckxheWVyKGNvbnN0IFJlbmRlckxheWVyJikgY29uc3Q7CisgICAgYm9vbCB1c2VD
b29yZGluYXRlZFNjcm9sbGluZ0ZvckxheWVyKGNvbnN0IFJlbmRlckxheWVyJiBsYXllcikgY29u
c3QgeyByZXR1cm4gKGxheWVyLmlzUmVuZGVyVmlld0xheWVyKCkgJiYgaGFzQ29vcmRpbmF0ZWRT
Y3JvbGxpbmcoKSkgfHwgbGF5ZXIudXNlc0FjY2VsZXJhdGVkU2Nyb2xsaW5nKCk7IH0KIAogICAg
IGJvb2wgaXNBc3luY1Njcm9sbGFibGVTdGlja3lMYXllcihjb25zdCBSZW5kZXJMYXllciYsIGNv
bnN0IFJlbmRlckxheWVyKiogZW5jbG9zaW5nQWNjZWxlcmF0ZWRPdmVyZmxvd0xheWVyID0gbnVs
bHB0cikgY29uc3Q7CiAgICAgYm9vbCBpc1ZpZXdwb3J0Q29uc3RyYWluZWRGaXhlZE9yU3RpY2t5
TGF5ZXIoY29uc3QgUmVuZGVyTGF5ZXImKSBjb25zdDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324367</attachid>
            <date>2017-10-20 00:22:18 -0700</date>
            <delta_ts>2017-10-20 01:30:35 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-178514-20171020092217.patch</filename>
            <type>text/plain</type>
            <size>5508</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzMzM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWU2MjIwNzFmMTk0OWM0
ZGQwMDBiOGQ5ZmI2NjU4ZWMzMmI3YjczMC4uMTJlZjk1NmU1OWE3NWJmNjlkMGExM2E2MTNkZTA5
NWViMDE1YjNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE3LTEwLTE5ICBGcmVk
ZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLmNvbT4KKworICAgICAgICBSZW5kZXJMYXllckNvbXBv
c2l0b3I6IE1vdmUgaW1wbGVtZW50YXRpb24gb2Ygc2ltcGxlIG1ldGhvZHMgaW50byB0aGUgaGVh
ZGVyIGZpbGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzg1MTQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBO
byBuZXcgdGVzdHMsIGJlaGF2aW9yIHVuY2hhbmdlZC4KKwogMjAxNy0xMC0xNiAgRnJlZGVyaWMg
V2FuZyAgPGZ3YW5nQGlnYWxpYS5jb20+CiAKICAgICAgICAgVXNlIGF1dG8vbnVsbHB0ciBpbiBz
Y3JvbGxpbmcgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcAppbmRleCA3NGU0ZGQyYTI5NjQ1NGIyZjM1YTRmZTFlZTQ4MjM0MjY5
MTFmNzQzLi5iZmNhNWFiNGQ2YWRhOTU4Y2EyMWY0ZjRlNzU5MWNjYjE0ZWVmODQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApA
QCAtMTkyOSwzMyArMTkyOSw2IEBAIEdyYXBoaWNzTGF5ZXIqIFJlbmRlckxheWVyQ29tcG9zaXRv
cjo6cm9vdEdyYXBoaWNzTGF5ZXIoKSBjb25zdAogICAgIHJldHVybiBtX3Jvb3RDb250ZW50TGF5
ZXIuZ2V0KCk7CiB9CiAKLUdyYXBoaWNzTGF5ZXIqIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6c2Ny
b2xsTGF5ZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX3Njcm9sbExheWVyLmdldCgpOwotfQot
Ci1HcmFwaGljc0xheWVyKiBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNsaXBMYXllcigpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fY2xpcExheWVyLmdldCgpOwotfQotCi1HcmFwaGljc0xheWVyKiBS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OnJvb3RDb250ZW50TGF5ZXIoKSBjb25zdAotewotICAgIHJl
dHVybiBtX3Jvb3RDb250ZW50TGF5ZXIuZ2V0KCk7Ci19Ci0KLSNpZiBFTkFCTEUoUlVCQkVSX0JB
TkRJTkcpCi1HcmFwaGljc0xheWVyKiBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmhlYWRlckxheWVy
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9sYXllckZvckhlYWRlci5nZXQoKTsKLX0KLQotR3Jh
cGhpY3NMYXllciogUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpmb290ZXJMYXllcigpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1fbGF5ZXJGb3JGb290ZXIuZ2V0KCk7Ci19Ci0jZW5kaWYKLQogdm9pZCBS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OnNldElzSW5XaW5kb3coYm9vbCBpc0luV2luZG93KQogewog
ICAgIExPRyhDb21wb3NpdGluZywgIlJlbmRlckxheWVyQ29tcG9zaXRvciAlcCBzZXRJc0luV2lu
ZG93ICVkIiwgdGhpcywgaXNJbldpbmRvdyk7CkBAIC0yODMxLDE2ICsyODA0LDYgQEAgdm9pZCBS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlc2V0VHJhY2tlZFJlcGFpbnRSZWN0cygpCiAgICAgfQog
fQogCi12b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6c2V0VHJhY2tzUmVwYWludHMoYm9vbCB0
cmFja3NSZXBhaW50cykKLXsKLSAgICBtX2lzVHJhY2tpbmdSZXBhaW50cyA9IHRyYWNrc1JlcGFp
bnRzOwotfQotCi1ib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6aXNUcmFja2luZ1JlcGFpbnRz
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pc1RyYWNraW5nUmVwYWludHM7Ci19Ci0KIGZsb2F0
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdAogewogICAg
IHJldHVybiBtX3JlbmRlclZpZXcuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpOwpAQCAt
NDA2MiwyNiArNDAyNSw2IEBAIFJlZlB0cjxEaXNwbGF5UmVmcmVzaE1vbml0b3I+IFJlbmRlckxh
eWVyQ29tcG9zaXRvcjo6Y3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yCiB9CiAjZW5kaWYKIAot
dm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnN0YXJ0VHJhY2tpbmdMYXllckZsdXNoZXMoKQot
ewotICAgIG1fbGF5ZXJGbHVzaENvdW50ID0gMDsKLX0KLQotdW5zaWduZWQgUmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjpsYXllckZsdXNoQ291bnQoKSBjb25zdAotewotICAgIHJldHVybiBtX2xheWVy
Rmx1c2hDb3VudDsKLX0KLQotdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnN0YXJ0VHJhY2tp
bmdDb21wb3NpdGluZ1VwZGF0ZXMoKQotewotICAgIG1fY29tcG9zaXRpbmdVcGRhdGVDb3VudCA9
IDA7Ci19Ci0KLXVuc2lnbmVkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6Y29tcG9zaXRpbmdVcGRh
dGVDb3VudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY29tcG9zaXRpbmdVcGRhdGVDb3VudDsK
LX0KLQogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiB2b2lkIFJlbmRlckxheWVyQ29tcG9z
aXRvcjo6dXBkYXRlU2Nyb2xsU25hcFByb3BlcnRpZXNXaXRoRnJhbWVWaWV3KGNvbnN0IEZyYW1l
VmlldyYgZnJhbWVWaWV3KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQ29tcG9zaXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5oCmluZGV4IGY2MWFiMjhkM2NlNTkxMWRiMzlmNjViNDRmMzI3M2U4
NTFiYzU1YjkuLmFjMjZiMjIwYmUzMmZjOTU4YTIxZWQ2M2EwZGQ1Njk4NjFlNDUwOGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKQEAg
LTE5NCwxMyArMTk0LDE1IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFJlbmRlckxh
eWVyJiByb290UmVuZGVyTGF5ZXIoKSBjb25zdDsKICAgICBHcmFwaGljc0xheWVyKiByb290R3Jh
cGhpY3NMYXllcigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIEdyYXBoaWNzTGF5ZXIqIHNj
cm9sbExheWVyKCkgY29uc3Q7Ci0gICAgR3JhcGhpY3NMYXllciogY2xpcExheWVyKCkgY29uc3Q7
Ci0gICAgR3JhcGhpY3NMYXllciogcm9vdENvbnRlbnRMYXllcigpIGNvbnN0OworCisgICAgR3Jh
cGhpY3NMYXllciogc2Nyb2xsTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbExheWVyLmdl
dCgpOyB9CisgICAgR3JhcGhpY3NMYXllciogY2xpcExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9j
bGlwTGF5ZXIuZ2V0KCk7IH0KKyAgICBHcmFwaGljc0xheWVyKiByb290Q29udGVudExheWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9yb290Q29udGVudExheWVyLmdldCgpOyB9CisKIAogI2lmIEVOQUJM
RShSVUJCRVJfQkFORElORykKLSAgICBHcmFwaGljc0xheWVyKiBoZWFkZXJMYXllcigpIGNvbnN0
OwotICAgIEdyYXBoaWNzTGF5ZXIqIGZvb3RlckxheWVyKCkgY29uc3Q7CisgICAgR3JhcGhpY3NM
YXllciogaGVhZGVyTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2xheWVyRm9ySGVhZGVyLmdldCgp
OyB9CisgICAgR3JhcGhpY3NMYXllciogZm9vdGVyTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2xh
eWVyRm9yRm9vdGVyLmdldCgpOyB9CiAjZW5kaWYKIAogICAgIGVudW0gUm9vdExheWVyQXR0YWNo
bWVudCB7CkBAIC0yOTgsNyArMzAwLDggQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIHJl
c2V0VHJhY2tlZFJlcGFpbnRSZWN0cygpOwotICAgIHZvaWQgc2V0VHJhY2tzUmVwYWludHMoYm9v
bCk7CisgICAgdm9pZCBzZXRUcmFja3NSZXBhaW50cyhib29sIHRyYWNrc1JlcGFpbnRzKSB7IG1f
aXNUcmFja2luZ1JlcGFpbnRzID0gdHJhY2tzUmVwYWludHM7IH0KKwogCiAgICAgdm9pZCBzZXRT
aG91bGRSZWV2YWx1YXRlQ29tcG9zaXRpbmdBZnRlckxheW91dCgpIHsgbV9yZWV2YWx1YXRlQ29t
cG9zaXRpbmdBZnRlckxheW91dCA9IHRydWU7IH0KIApAQCAtMzIzLDExICszMjYsMTEgQEAgcHVi
bGljOgogI2VuZGlmCiAKICAgICAvLyBGb3IgdGVzdGluZy4KLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHN0YXJ0VHJhY2tpbmdMYXllckZsdXNoZXMoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB1bnNp
Z25lZCBsYXllckZsdXNoQ291bnQoKSBjb25zdDsKKyAgICB2b2lkIHN0YXJ0VHJhY2tpbmdMYXll
ckZsdXNoZXMoKSB7IG1fbGF5ZXJGbHVzaENvdW50ID0gMDsgfQorICAgIHVuc2lnbmVkIGxheWVy
Rmx1c2hDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJGbHVzaENvdW50OyB9CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0VHJhY2tpbmdDb21wb3NpdGluZ1VwZGF0ZXMoKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBjb21wb3NpdGluZ1VwZGF0ZUNvdW50KCkgY29uc3Q7
CisgICAgdm9pZCBzdGFydFRyYWNraW5nQ29tcG9zaXRpbmdVcGRhdGVzKCkgeyBtX2NvbXBvc2l0
aW5nVXBkYXRlQ291bnQgPSAwOyB9CisgICAgdW5zaWduZWQgY29tcG9zaXRpbmdVcGRhdGVDb3Vu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29tcG9zaXRpbmdVcGRhdGVDb3VudDsgfQogCiBwcml2YXRl
OgogICAgIGNsYXNzIE92ZXJsYXBNYXA7CkBAIC0zMzgsNyArMzQxLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIG5vdGlmeUZsdXNoUmVxdWlyZWQoY29uc3QgR3JhcGhpY3NMYXllciopIG92ZXJyaWRl
OwogICAgIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhpY3ND
b250ZXh0JiwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYsIEdy
YXBoaWNzTGF5ZXJQYWludEJlaGF2aW9yKSBvdmVycmlkZTsKICAgICB2b2lkIGN1c3RvbVBvc2l0
aW9uRm9yVmlzaWJsZVJlY3RDb21wdXRhdGlvbihjb25zdCBHcmFwaGljc0xheWVyKiwgRmxvYXRQ
b2ludCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgaXNUcmFja2luZ1JlcGFpbnRzKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1RyYWNraW5nUmVwYWludHMoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2lzVHJhY2tpbmdSZXBhaW50czsgfQogICAgIAogICAgIC8vIEdyYXBoaWNz
TGF5ZXJVcGRhdGVyQ2xpZW50IGltcGxlbWVudGF0aW9uCiAgICAgdm9pZCBmbHVzaExheWVyc1Nv
b24oR3JhcGhpY3NMYXllclVwZGF0ZXImKSBvdmVycmlkZTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>