<?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>149977</bug_id>
          
          <creation_ts>2015-10-09 17:04:43 -0700</creation_ts>
          <short_desc>Add debug settings for using giant tiles (4096x4096)</short_desc>
          <delta_ts>2015-10-13 11:50:59 -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>Layout and Rendering</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="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>jeffm</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1132048</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-10-09 17:04:43 -0700</bug_when>
    <thetext>This setting will be used for debugging and evaluating the overhead which may be incurred due to a large tile size.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132062</commentid>
    <comment_count>1</comment_count>
      <attachid>262808</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-10-09 17:51:52 -0700</bug_when>
    <thetext>Created attachment 262808
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132063</commentid>
    <comment_count>2</comment_count>
      <attachid>262808</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-10-09 18:00:29 -0700</bug_when>
    <thetext>Comment on attachment 262808
Patch

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

&gt; Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:307
&gt; +std::unique_ptr&lt;GraphicsLayer&gt; GraphicsLayer::create(GraphicsLayerFactory* factory, GraphicsLayerClient&amp; client, Type layerType, const IntSize&amp; tileSize)

It&apos;s pretty weird that we&apos;re passing tileSize in GraphicsLayer::create for every layer when most layers aren&apos;t tiled.

Can&apos;t we just make a static class method on TiledBacking and change the defaults there? It would make this patch a lot smaller.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132103</commentid>
    <comment_count>3</comment_count>
      <attachid>262816</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-10-09 21:19:43 -0700</bug_when>
    <thetext>Created attachment 262816
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132110</commentid>
    <comment_count>4</comment_count>
      <attachid>262821</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-10-09 21:41:47 -0700</bug_when>
    <thetext>Created attachment 262821
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132126</commentid>
    <comment_count>5</comment_count>
      <attachid>262821</attachid>
    <who name="Jeff Miller">jeffm</who>
    <bug_when>2015-10-10 08:22:41 -0700</bug_when>
    <thetext>Comment on attachment 262821
Patch

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

&gt; Source/WebKit2/UIProcess/API/C/WKPreferencesRefPrivate.h:317
&gt; +WK_EXPORT void WKPreferencesSetSingleLargeTile(WKPreferencesRef, bool);

This name makes it seem like the function should be passed a single large tile. Can you change it to something like WKPreferencesSetUsesSingleLargeTile()?

This should probably be changed in the underlying WebPreferences implementation as well.

&gt; Source/WebKit2/UIProcess/API/C/WKPreferencesRefPrivate.h:318
&gt; +WK_EXPORT bool WKPreferencesGetSingleLargeTile(WKPreferencesRef);

Same comment here. WKPreferencesGetUsesSingleLargeTile()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132271</commentid>
    <comment_count>6</comment_count>
      <attachid>262875</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-10-11 19:00:50 -0700</bug_when>
    <thetext>Created attachment 262875
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132272</commentid>
    <comment_count>7</comment_count>
      <attachid>262821</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-10-11 19:02:10 -0700</bug_when>
    <thetext>Comment on attachment 262821
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/C/WKPreferencesRefPrivate.h:318
&gt;&gt; +WK_EXPORT bool WKPreferencesGetSingleLargeTile(WKPreferencesRef);
&gt; 
&gt; Same comment here. WKPreferencesGetUsesSingleLargeTile()?

Done, the name was changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132457</commentid>
    <comment_count>8</comment_count>
      <attachid>262875</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-10-12 13:23:44 -0700</bug_when>
    <thetext>Comment on attachment 262875
Patch

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

&gt; Source/WebCore/page/Settings.in:204
&gt; +usesSingleLargeTile initial=false

&quot;use single&quot; is a misnomer. It may still create multiple tiles. I&apos;d call it useGiantTiles or something.

&gt; Source/WebCore/platform/graphics/TiledBacking.h:31
&gt; +inline static IntSize defaultTileSize(bool usesSingleLargeTile = false)

usesSingleLargeTile -&gt; useGiantTiles

&gt; Source/WebCore/platform/graphics/TiledBacking.h:35
&gt; +    // The width and height of a single tile in a tiled layer. Should be large enough to
&gt; +    // avoid lots of small tiles (and therefore lots of drawing callbacks), but small enough
&gt; +    // to keep the overall tile cost low.

I don&apos;t think this comment adds anything.

&gt; Source/WebCore/platform/graphics/TiledBacking.h:38
&gt; +    // This is an experimental value for Tdebugging and evaluating the overhead which may be

Tdebugging</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132458</commentid>
    <comment_count>9</comment_count>
      <attachid>262875</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-10-12 13:25:50 -0700</bug_when>
    <thetext>Comment on attachment 262875
Patch

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

&gt; Source/WebCore/platform/graphics/ca/PlatformCALayer.h:118
&gt; +    void setTileSize(const IntSize&amp; tileSize) { m_tileSize = tileSize; }

I still think we should avoid the getter/setter entirely. Add something to PlatformCALayerClient that returns the state of the *setting*  (the boolean state), and make the decision by calling that. Just a thought!

&gt; Source/WebKit/mac/ChangeLog:1
&gt; +2015-10-11  Said Abou-Hallawa  &lt;sabouhallawa@apple.com&gt;

There is no need for WebKit1 SPI for this. Please omit it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132564</commentid>
    <comment_count>10</comment_count>
      <attachid>262938</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-10-12 16:33:48 -0700</bug_when>
    <thetext>Created attachment 262938
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132569</commentid>
    <comment_count>11</comment_count>
      <attachid>262939</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-10-12 16:38:30 -0700</bug_when>
    <thetext>Created attachment 262939
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132572</commentid>
    <comment_count>12</comment_count>
      <attachid>262875</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-10-12 16:46:35 -0700</bug_when>
    <thetext>Comment on attachment 262875
Patch

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

&gt;&gt; Source/WebCore/page/Settings.in:204
&gt;&gt; +usesSingleLargeTile initial=false
&gt; 
&gt; &quot;use single&quot; is a misnomer. It may still create multiple tiles. I&apos;d call it useGiantTiles or something.

Done. The name was changed to useGiantTiles.

&gt;&gt; Source/WebCore/platform/graphics/TiledBacking.h:31
&gt;&gt; +inline static IntSize defaultTileSize(bool usesSingleLargeTile = false)
&gt; 
&gt; usesSingleLargeTile -&gt; useGiantTiles

Done. The argument was changed to useGiantTiles.

&gt;&gt; Source/WebCore/platform/graphics/TiledBacking.h:35
&gt;&gt; +    // to keep the overall tile cost low.
&gt; 
&gt; I don&apos;t think this comment adds anything.

Done. The comment was deleted.

&gt;&gt; Source/WebCore/platform/graphics/TiledBacking.h:38
&gt;&gt; +    // This is an experimental value for Tdebugging and evaluating the overhead which may be
&gt; 
&gt; Tdebugging

Done. The spelling mistake was fixed.

&gt;&gt; Source/WebCore/platform/graphics/ca/PlatformCALayer.h:118
&gt;&gt; +    void setTileSize(const IntSize&amp; tileSize) { m_tileSize = tileSize; }
&gt; 
&gt; I still think we should avoid the getter/setter entirely. Add something to PlatformCALayerClient that returns the state of the *setting*  (the boolean state), and make the decision by calling that. Just a thought!

Done. Since  GraphicsLayerCA is derived from GraphicsLayer and PlatformCALayerClient, the setter is defined as the virtual function GraphicsLayer::setTileSize and the getter is defined as the virtual function PlatformCALayerClient::platformCALayerTileSize(). GraphicsLayerCA overrides both. The RenderLayerBacking::createGraphicsLayer() will call the setter. And TileController::tileSize() will call the getter.

&gt;&gt; Source/WebKit/mac/ChangeLog:1
&gt;&gt; +2015-10-11  Said Abou-Hallawa  &lt;sabouhallawa@apple.com&gt;
&gt; 
&gt; There is no need for WebKit1 SPI for this. Please omit it.

Done. WebKit SPI was removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132627</commentid>
    <comment_count>13</comment_count>
      <attachid>262951</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-10-12 18:29:46 -0700</bug_when>
    <thetext>Created attachment 262951
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132679</commentid>
    <comment_count>14</comment_count>
      <attachid>262951</attachid>
    <who name="alan">zalan</who>
    <bug_when>2015-10-12 19:49:50 -0700</bug_when>
    <thetext>Comment on attachment 262951
Patch

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

&gt; Source/WebCore/platform/graphics/GraphicsLayerClient.h:29
&gt; +#include &quot;FloatRect.h&quot;

Do you really need the FloatRect.h?

&gt; Source/WebCore/platform/graphics/TiledBacking.h:31
&gt; +inline static IntSize defaultTileSize(bool useGiantTiles = false)

Could you use enum class instead? -this could also be a static TiledBacking::defaultTileSize() instead of this standalone function, but I don&apos;t really have a strong preference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132784</commentid>
    <comment_count>15</comment_count>
      <attachid>262989</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-10-13 09:56:51 -0700</bug_when>
    <thetext>Created attachment 262989
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132785</commentid>
    <comment_count>16</comment_count>
      <attachid>262951</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-10-13 09:59:37 -0700</bug_when>
    <thetext>Comment on attachment 262951
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/GraphicsLayerClient.h:29
&gt;&gt; +#include &quot;FloatRect.h&quot;
&gt; 
&gt; Do you really need the FloatRect.h?

TiledBacking.h was missing forward declaration for FloatPoint and FloatRect. I added them in there and deleted the #include &quot;FloatRect.h&quot; from GraphicsLayerClient.h.

&gt;&gt; Source/WebCore/platform/graphics/TiledBacking.h:31
&gt;&gt; +inline static IntSize defaultTileSize(bool useGiantTiles = false)
&gt; 
&gt; Could you use enum class instead? -this could also be a static TiledBacking::defaultTileSize() instead of this standalone function, but I don&apos;t really have a strong preference.

An enum called TileSizeMode is added and used as the parameter to defaultTileSize() instead of passing the bool.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132800</commentid>
    <comment_count>17</comment_count>
      <attachid>262989</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-13 10:50:00 -0700</bug_when>
    <thetext>Comment on attachment 262989
Patch

Rejecting attachment 262989 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 262989, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in Source/WebCore/ChangeLog contains OOPS!.

Full output: http://webkit-queues.webkit.org/results/279980</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132801</commentid>
    <comment_count>18</comment_count>
      <attachid>262991</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-10-13 10:52:14 -0700</bug_when>
    <thetext>Created attachment 262991
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132836</commentid>
    <comment_count>19</comment_count>
      <attachid>262991</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-13 11:47:28 -0700</bug_when>
    <thetext>Comment on attachment 262991
Patch

Clearing flags on attachment: 262991

Committed r190998: &lt;http://trac.webkit.org/changeset/190998&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132837</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-13 11:47:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132841</commentid>
    <comment_count>21</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-10-13 11:50:59 -0700</bug_when>
    <thetext>&lt;rdar://problem/23017093&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262808</attachid>
            <date>2015-10-09 17:51:52 -0700</date>
            <delta_ts>2015-10-09 21:19:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149977-20151009175118.patch</filename>
            <type>text/plain</type>
            <size>49222</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MDgyOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg0IEBACisyMDE1LTEwLTA5ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGRlYnVn
IHNldHRpbmdzIGZvciBzaW5nbGUgbGFyZ2UgdGlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5OTc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSW5zdGVhZCBvZiBjcmVhdGluZyB0aGUgR3JhcGhpY3NM
YXllciB3aXRoIGEgZml4ZWQgc2l6ZSA1MTJ4NTEyLCB3ZSBuZWVkCisgICAgICAgIHRvIHJlYWQg
dGhlIHNpbmdsZUxhcmdlTGF5ZXIgc2V0dGluZy4gSWYgaXRzIHZhbHVlIGlzIHRydWUsIHdlIGNy
ZWF0ZSBhCisgICAgICAgIGxheWVyIHdpdGggYSBzaXplID0gNDA5Nng0MDk2LgorCisgICAgICAg
ICogcGFnZS9TZXR0aW5ncy5pbjoKKyAgICAgICAgRGVmaW5lIHRoZSBuYW1lIG9mIHRoZSBzZXR0
aW5nIGFuZCBpdHMgZGVmYXVsdCB2YWx1ZS4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyOjpHcmFwaGljc0xheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpkZWZhdWx0VGlsZVNp
emUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6dGlsZVNpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6Y29udGVudHNSZWN0KToKKyAgICAgICAgVGhlIHNp
bmdsZUxhcmdlTGF5ZXIgc2V0dGluZyBjYW4gYmUgYWNjZXNzZWQgZnJvbSB0aGUgc2V0dGluZ3Mg
b2YgYSBwYWdlLgorICAgICAgICBXZSBuZWVkIHRvIHBhc3MgdGhlIHRpbGVTaXplIHdoZW4gd2Ug
Y3JlYXRlIGEgZ3JhcGhpY3MgbGF5ZXIgYW5kIHdoZW4gd2UKKyAgICAgICAgaGF2ZSBhY2Nlc3Mg
dG8gYSBwYWdlLiBUaGUgY2FsY3VsYXRlZCB0aWxlU2l6ZSB3aWxsIGJlIHBhc3NlZCBmcm9tCisg
ICAgICAgIFJlbmRlckxheWVyQmFja2luZzo6Y3JlYXRlR3JhcGhpY3NMYXllcigpLgorICAgICAg
ICAKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVGlsZVBoYXNl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OmNvbnRlbnRzVGls
ZVBoYXNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OnNldENv
bnRlbnRzVGlsZVNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
cjo6Y29udGVudHNUaWxlU2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyOjpoYXNDb250ZW50c1RpbGluZyk6IERlbGV0ZWQuCisgICAgICAgIERlbGV0ZSB1bnVz
ZWQgZnVuY3Rpb25zLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0xheWVyRmFjdG9yeS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBo
aWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpjcmVhdGVQbGF0Zm9ybUNBTGF5
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpjcmVhdGVQbGF0Zm9ybUNB
QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6R3JhcGhpY3NM
YXllckNBKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
aDoKKyAgICAgICAgUGFzcyBhIHRpbGVTaXplIHRvIHRoZSBjb25zdHJ1Y3RvciB0byB0aGUgY2xh
c3NlcyB3aGljaCBhcmUgZGVyaXZlZAorICAgICAgICBmcm9tIEdyYXBoaWNzTGF5ZXIuCisgICAg
ICAgICAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nLmg6
CisgICAgICAgIERlbGV0ZSB1bm5lZWRlZCBjb25zdGFudHMuCisgICAgICAgIAorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OlBsYXRmb3JtQ0FMYXllcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmg6CisgICAgICAgIFRoZSBQbGF0Zm9ybUNB
TGF5ZXIgYWxzbyBuZWVkcyBhIG1lbWJlciBmb3IgdGhlIHRpbGVTaXplLgorICAgICAgICAKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUaWxlQ29udHJvbGxlcjo6VGlsZUNvbnRyb2xsZXIpOgorICAgICAgICBUaGUg
VGlsZUNvbnRyb2xsZXIgbmVlZHMgdG8gZ2V0cyB0aGUgdGlsZVNpemUgZnJvbSByb290UGxhdGZv
cm1MYXllci4KKworICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OmNvbXB1dGVUaWxl
Q292ZXJhZ2VSZWN0KToKKyAgICAgICAgVXNlIHRoZSB0aWxlU2l6ZSBpbnN0ZWFkIG9mIHRoZSBj
b25zdGFudHMuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29h
L1BsYXRmb3JtQ0FMYXllckNvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
Y29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW06CisgICAgICAgIChQbGF0Zm9ybUNBTGF5ZXJD
b2NvYTo6Y3JlYXRlKToKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllckNvY29hOjpQbGF0Zm9ybUNB
TGF5ZXJDb2NvYSk6CisgICAgICAgIChQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6Y2xvbmUpOgorICAg
ICAgICAoUGxhdGZvcm1DQUxheWVyQ29jb2E6OmNyZWF0ZUNvbXBhdGlibGVMYXllcik6CisgICAg
ICAgIFBhc3MgYSB0aWxlU2l6ZSB0byB0aGUgY29uc3RydWN0b3IgdG8gdGhlIGNsYXNzZXMgd2hp
Y2ggYXJlIGRlcml2ZWQKKyAgICAgICAgZnJvbSBQbGF0Zm9ybUNBTGF5ZXIuCisKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tp
bmc6OnRpbGVTaXplKToKKyAgICAgICAgUmVhZCB0aGUgc2V0dGluZyBzaW5nbGVMYXJnZUxheWVy
IGFuZCByZXR1cm4gZGVzaXJlZCB0aWxlU2l6ZS4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllckJhY2tpbmc6OmNyZWF0ZUdyYXBoaWNzTGF5ZXIpOgorICAgICAgICBQYXNz
IHRoZSBkZXNpcmVkIHRpbGVTaXplIHRvIHRoZSBHcmFwaGljc0xheWVyCisgICAgICAgIAorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpzZXRUaWxlZEJhY2tpbmdIYXNNYXJn
aW5zKToKKyAgICAgICAgVXNlIHRoZSBtZW1iZXIgdGlsZVNpemUoKSBpbnN0ZWFkIG9mIHVzaW5n
IHRoZSBjb25zdGFudHMuCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJC
YWNraW5nOjpyZXNldENvbnRlbnRzUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
ckJhY2tpbmc6OnVwZGF0ZURyYXdzQ29udGVudCk6CisgICAgICAgIFJlbW92ZSB1bm5lY2Vzc2Fy
eSBjYWxscy4KKwogMjAxNS0xMC0wOSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlbW92ZSBoYWNrIHRoYXQgYWxsb3dlZCBwbHVnLWlucyB0byBhbHdh
eXMgdGFrZSBvdmVyIGNlcnRhaW4gaW1hZ2UgZm9ybWF0cwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9TZXR0aW5ncy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRp
bmdzLmluCShyZXZpc2lvbiAxOTA4MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMDEsNiArMjAxLDggQEAgc2ltcGxlTGluZUxheW91dERl
YnVnQm9yZGVyc0VuYWJsZWQgaW5pdAogCiBzdWJwaXhlbENTU09NRWxlbWVudE1ldHJpY3NFbmFi
bGVkIGluaXRpYWw9ZmFsc2UKIAorc2luZ2xlTGFyZ2VUaWxlIGluaXRpYWw9ZmFsc2UKKwogbWVk
aWFTb3VyY2VFbmFibGVkIGluaXRpYWw9dHJ1ZSwgY29uZGl0aW9uYWw9TUVESUFfU09VUkNFCiAK
ICMgRklYTUU6IFJlbmFtZSB0byBhbGxvd011bHRpRWxlbWVudEltcGxpY2l0Rm9ybVN1Ym1pc3Np
b24gb25jZSB3ZSB1cHN0cmVhbSB0aGUgaU9TIGNoYW5nZXMgdG8gV2ViVmlldy5tbS4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIu
Y3BwCShyZXZpc2lvbiAxOTA4MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBAIGJv
b2wgR3JhcGhpY3NMYXllcjo6c3VwcG9ydHNDb250ZW50c1RpbGkKIH0KICNlbmRpZgogCi1HcmFw
aGljc0xheWVyOjpHcmFwaGljc0xheWVyKFR5cGUgdHlwZSwgR3JhcGhpY3NMYXllckNsaWVudCYg
Y2xpZW50KQorR3JhcGhpY3NMYXllcjo6R3JhcGhpY3NMYXllcihUeXBlIHR5cGUsIGNvbnN0IElu
dFNpemUmIHRpbGVTaXplLCBHcmFwaGljc0xheWVyQ2xpZW50JiBjbGllbnQpCiAgICAgOiBtX2Ns
aWVudChjbGllbnQpCiAgICAgLCBtX2FuY2hvclBvaW50KDAuNWYsIDAuNWYsIDApCiAgICAgLCBt
X29wYWNpdHkoMSkKQEAgLTExMyw2ICsxMTMsNyBAQCBHcmFwaGljc0xheWVyOjpHcmFwaGljc0xh
eWVyKFR5cGUgdHlwZSwgCiAgICAgLCBtX2JsZW5kTW9kZShCbGVuZE1vZGVOb3JtYWwpCiAjZW5k
aWYKICAgICAsIG1fdHlwZSh0eXBlKQorICAgICwgbV90aWxlU2l6ZSh0aWxlU2l6ZSkKICAgICAs
IG1fY29udGVudHNPcGFxdWUoZmFsc2UpCiAgICAgLCBtX3ByZXNlcnZlczNEKGZhbHNlKQogICAg
ICwgbV9iYWNrZmFjZVZpc2liaWxpdHkodHJ1ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgJKHJldmlzaW9uIDE5MDgyOCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjI4LDEyICsyMjgsMjcgQEAgcHVibGljOgogICAgICAgICBTY3JvbGxpbmcs
CiAgICAgICAgIFNoYXBlCiAgICAgfTsKLSAgICAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzTGF5ZXI+IGNyZWF0ZShHcmFwaGljc0xheWVyRmFjdG9y
eSosIEdyYXBoaWNzTGF5ZXJDbGllbnQmLCBUeXBlID0gVHlwZTo6Tm9ybWFsKTsKKworICAgIHN0
YXRpYyBJbnRTaXplIGRlZmF1bHRUaWxlU2l6ZShib29sIHNpbmdsZUxhcmdlVGlsZSA9IGZhbHNl
KQorICAgIHsKKyAgICAgICAgLy8gVGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgYSBzaW5nbGUgdGls
ZSBpbiBhIHRpbGVkIGxheWVyLiBTaG91bGQgYmUgbGFyZ2UgZW5vdWdoIHRvCisgICAgICAgIC8v
IGF2b2lkIGxvdHMgb2Ygc21hbGwgdGlsZXMgKGFuZCB0aGVyZWZvcmUgbG90cyBvZiBkcmF3aW5n
IGNhbGxiYWNrcyksIGJ1dCBzbWFsbCBlbm91Z2gKKyAgICAgICAgLy8gdG8ga2VlcCB0aGUgb3Zl
cmFsbCB0aWxlIGNvc3QgbG93LgorICAgICAgICBzdGF0aWMgY29uc3QgaW50IGtUaWxlZExheWVy
VGlsZVNpemUgPSA1MTI7CisKKyAgICAgICAgLy8gVGhpcyBpcyBhbiBleHBlcmltZW50YWwgdmFs
dWUgZm9yIFRkZWJ1Z2dpbmcgYW5kIGV2YWx1YXRpbmcgdGhlIG92ZXJoZWFkIHdoaWNoIG1heSBi
ZQorICAgICAgICAvLyBpbmN1cnJlZCBkdWUgdG8gYSBsYXJnZSB0aWxlIHNpemUuCisgICAgICAg
IHN0YXRpYyBjb25zdCBpbnQga0xhcmdlVGlsZWRMYXllclRpbGVTaXplID0gNDA5NjsKKworICAg
ICAgICByZXR1cm4gc2luZ2xlTGFyZ2VUaWxlID8gSW50U2l6ZShrTGFyZ2VUaWxlZExheWVyVGls
ZVNpemUsIGtMYXJnZVRpbGVkTGF5ZXJUaWxlU2l6ZSkgOiBJbnRTaXplKGtUaWxlZExheWVyVGls
ZVNpemUsIGtUaWxlZExheWVyVGlsZVNpemUpOworICAgIH0KKworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NMYXllcj4gY3JlYXRlKEdyYXBoaWNzTGF5
ZXJGYWN0b3J5KiwgR3JhcGhpY3NMYXllckNsaWVudCYsIFR5cGUgPSBUeXBlOjpOb3JtYWwsIGNv
bnN0IEludFNpemUmID0gZGVmYXVsdFRpbGVTaXplKCkpOwogICAgIAogICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgfkdyYXBoaWNzTGF5ZXIoKTsKICAgICAKICAgICBUeXBlIHR5cGUoKSBjb25z
dCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICBJbnRTaXplIHRpbGVTaXplKCkgY29uc3QgeyByZXR1
cm4gbV90aWxlU2l6ZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoVHlwZSkgeyB9
CiAKQEAgLTM5MywxNCArNDA4LDYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNldENv
bnRlbnRzTmVlZHNEaXNwbGF5KCkgeyB9OwogCi0gICAgLy8gVGhlIHRpbGUgcGhhc2UgaXMgcmVs
YXRpdmUgdG8gdGhlIEdyYXBoaWNzTGF5ZXIgYm91bmRzLgotICAgIHZpcnR1YWwgdm9pZCBzZXRD
b250ZW50c1RpbGVQaGFzZShjb25zdCBGbG9hdFNpemUmIHApIHsgbV9jb250ZW50c1RpbGVQaGFz
ZSA9IHA7IH0KLSAgICBGbG9hdFNpemUgY29udGVudHNUaWxlUGhhc2UoKSBjb25zdCB7IHJldHVy
biBtX2NvbnRlbnRzVGlsZVBoYXNlOyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNU
aWxlU2l6ZShjb25zdCBGbG9hdFNpemUmIHMpIHsgbV9jb250ZW50c1RpbGVTaXplID0gczsgfQot
ICAgIEZsb2F0U2l6ZSBjb250ZW50c1RpbGVTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50
c1RpbGVTaXplOyB9Ci0gICAgYm9vbCBoYXNDb250ZW50c1RpbGluZygpIGNvbnN0IHsgcmV0dXJu
ICFtX2NvbnRlbnRzVGlsZVNpemUuaXNFbXB0eSgpOyB9Ci0KICAgICAvLyBTZXQgdGhhdCB0aGUg
cG9zaXRpb24vc2l6ZSBvZiB0aGUgY29udGVudHMgKGltYWdlIG9yIHZpZGVvKS4KICAgICBGbG9h
dFJlY3QgY29udGVudHNSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50c1JlY3Q7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcikgeyBtX2Nv
bnRlbnRzUmVjdCA9IHI7IH0KQEAgLTUzNiw3ICs1NDMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIGlzR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgR3JhcGhpY3NM
YXllcihUeXBlLCBHcmFwaGljc0xheWVyQ2xpZW50Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhw
bGljaXQgR3JhcGhpY3NMYXllcihUeXBlLCBjb25zdCBJbnRTaXplJiwgR3JhcGhpY3NMYXllckNs
aWVudCYpOwogCiAgICAgLy8gU2hvdWxkIGJlIGNhbGxlZCBmcm9tIGRlcml2ZWQgY2xhc3MgZGVz
dHJ1Y3RvcnMuIFNob3VsZCBjYWxsIHdpbGxCZURlc3Ryb3llZCgpIG9uIHN1cGVyLgogICAgIFdF
QkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKTsKQEAgLTU5Nyw2ICs2
MDQsNyBAQCBwcm90ZWN0ZWQ6CiAjZW5kaWYKIAogICAgIGNvbnN0IFR5cGUgbV90eXBlOworICAg
IGNvbnN0IEludFNpemUgbV90aWxlU2l6ZTsKIAogICAgIGJvb2wgbV9jb250ZW50c09wYXF1ZSA6
IDE7CiAgICAgYm9vbCBtX3ByZXNlcnZlczNEOiAxOwpAQCAtNjI3LDggKzYzNSw2IEBAIHByb3Rl
Y3RlZDoKICAgICBGbG9hdFJlY3QgbV9jb250ZW50c1JlY3Q7CiAgICAgRmxvYXRSb3VuZGVkUmVj
dCBtX2NvbnRlbnRzQ2xpcHBpbmdSZWN0OwogICAgIEZsb2F0Um91bmRlZFJlY3QgbV9tYXNrc1Rv
Qm91bmRzUmVjdDsKLSAgICBGbG9hdFNpemUgbV9jb250ZW50c1RpbGVQaGFzZTsKLSAgICBGbG9h
dFNpemUgbV9jb250ZW50c1RpbGVTaXplOwogICAgIEZsb2F0UmVjdCBtX2JhY2tkcm9wRmlsdGVy
c1JlY3Q7CiAKICAgICBpbnQgbV9yZXBhaW50Q291bnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyRmFjdG9yeS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJGYWN0b3J5LmgJKHJl
dmlzaW9uIDE5MDgyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzTGF5ZXJGYWN0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3Mg
R3JhcGhpY3NMYXllckZhY3RvcnkgewogcHVibGljOgogICAgIHZpcnR1YWwgfkdyYXBoaWNzTGF5
ZXJGYWN0b3J5KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0xh
eWVyPiBjcmVhdGVHcmFwaGljc0xheWVyKEdyYXBoaWNzTGF5ZXI6OlR5cGUsIEdyYXBoaWNzTGF5
ZXJDbGllbnQmKSA9IDA7CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NMYXll
cj4gY3JlYXRlR3JhcGhpY3NMYXllcihHcmFwaGljc0xheWVyOjpUeXBlLCBjb25zdCBJbnRTaXpl
JiwgR3JhcGhpY3NMYXllckNsaWVudCYpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFj
a2luZy5oCShyZXZpc2lvbiAxOTA4MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9UaWxlZEJhY2tpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsOSArMjgsNiBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCBpbnQgZGVmYXVsdFRpbGVXaWR0aCA9
IDUxMjsKLXN0YXRpYyBjb25zdCBpbnQgZGVmYXVsdFRpbGVIZWlnaHQgPSA1MTI7Ci0KIGNsYXNz
IEludFJlY3Q7CiBjbGFzcyBQbGF0Zm9ybUNBTGF5ZXI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAko
cmV2aXNpb24gMTkwODI4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA0LDEzICszMDQsMTMgQEAg
Ym9vbCBHcmFwaGljc0xheWVyOjpzdXBwb3J0c0JhY2tncm91bmRDbwogICAgIHJldHVybiB0cnVl
OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NMYXllcj4gR3JhcGhpY3NMYXllcjo6Y3Jl
YXRlKEdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBmYWN0b3J5LCBHcmFwaGljc0xheWVyQ2xpZW50JiBj
bGllbnQsIFR5cGUgbGF5ZXJUeXBlKQorc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzTGF5ZXI+IEdy
YXBoaWNzTGF5ZXI6OmNyZWF0ZShHcmFwaGljc0xheWVyRmFjdG9yeSogZmFjdG9yeSwgR3JhcGhp
Y3NMYXllckNsaWVudCYgY2xpZW50LCBUeXBlIGxheWVyVHlwZSwgY29uc3QgSW50U2l6ZSYgdGls
ZVNpemUpCiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzTGF5ZXI+IGdyYXBoaWNzTGF5
ZXI7CiAgICAgaWYgKCFmYWN0b3J5KQotICAgICAgICBncmFwaGljc0xheWVyID0gc3RkOjptYWtl
X3VuaXF1ZTxHcmFwaGljc0xheWVyQ0E+KGxheWVyVHlwZSwgY2xpZW50KTsKKyAgICAgICAgZ3Jh
cGhpY3NMYXllciA9IHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NMYXllckNBPihsYXllclR5cGUs
IHRpbGVTaXplLCBjbGllbnQpOwogICAgIGVsc2UKLSAgICAgICAgZ3JhcGhpY3NMYXllciA9IGZh
Y3RvcnktPmNyZWF0ZUdyYXBoaWNzTGF5ZXIobGF5ZXJUeXBlLCBjbGllbnQpOworICAgICAgICBn
cmFwaGljc0xheWVyID0gZmFjdG9yeS0+Y3JlYXRlR3JhcGhpY3NMYXllcihsYXllclR5cGUsIHRp
bGVTaXplLCBjbGllbnQpOwogCiAgICAgZ3JhcGhpY3NMYXllci0+aW5pdGlhbGl6ZShsYXllclR5
cGUpOwogCkBAIC0zMjksNyArMzI5LDcgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OmZpbHRlcnND
YW5CZUNvbXBvcwogUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IEdyYXBoaWNzTGF5ZXJDQTo6
Y3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIGxheWVyVHlw
ZSwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcikKIHsKICNpZiBQTEFURk9STShDT0NPQSkK
LSAgICByZXR1cm4gUGxhdGZvcm1DQUxheWVyQ29jb2E6OmNyZWF0ZShsYXllclR5cGUsIG93bmVy
KTsKKyAgICByZXR1cm4gUGxhdGZvcm1DQUxheWVyQ29jb2E6OmNyZWF0ZShsYXllclR5cGUsIHRp
bGVTaXplKCksIG93bmVyKTsKICNlbGlmIFBMQVRGT1JNKFdJTikKICAgICByZXR1cm4gUGxhdGZv
cm1DQUxheWVyV2luOjpjcmVhdGUobGF5ZXJUeXBlLCBvd25lcik7CiAjZW5kaWYKQEAgLTMzOCw3
ICszMzgsNyBAQCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllCiBQYXNz
UmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBOjpjcmVhdGVQbGF0Zm9ybUNB
TGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciwgUGxhdGZvcm1DQUxheWVyQ2xpZW50
KiBvd25lcikKIHsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICByZXR1cm4gUGxhdGZvcm1DQUxh
eWVyQ29jb2E6OmNyZWF0ZShwbGF0Zm9ybUxheWVyLCBvd25lcik7CisgICAgcmV0dXJuIFBsYXRm
b3JtQ0FMYXllckNvY29hOjpjcmVhdGUocGxhdGZvcm1MYXllciwgdGlsZVNpemUoKSwgb3duZXIp
OwogI2VsaWYgUExBVEZPUk0oV0lOKQogICAgIHJldHVybiBQbGF0Zm9ybUNBTGF5ZXJXaW46OmNy
ZWF0ZShwbGF0Zm9ybUxheWVyLCBvd25lcik7CiAjZW5kaWYKQEAgLTM1Myw4ICszNTMsOCBAQCBQ
YXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IEdyYXBoaWNzCiAjZW5kaWYKIH0KIAotR3Jh
cGhpY3NMYXllckNBOjpHcmFwaGljc0xheWVyQ0EoVHlwZSBsYXllclR5cGUsIEdyYXBoaWNzTGF5
ZXJDbGllbnQmIGNsaWVudCkKLSAgICA6IEdyYXBoaWNzTGF5ZXIobGF5ZXJUeXBlLCBjbGllbnQp
CitHcmFwaGljc0xheWVyQ0E6OkdyYXBoaWNzTGF5ZXJDQShUeXBlIGxheWVyVHlwZSwgY29uc3Qg
SW50U2l6ZSYgdGlsZVNpemUsIEdyYXBoaWNzTGF5ZXJDbGllbnQmIGNsaWVudCkKKyAgICA6IEdy
YXBoaWNzTGF5ZXIobGF5ZXJUeXBlLCB0aWxlU2l6ZSwgY2xpZW50KQogICAgICwgbV9uZWVkc0Z1
bGxSZXBhaW50KGZhbHNlKQogICAgICwgbV91c2luZ0JhY2tkcm9wTGF5ZXJUeXBlKGZhbHNlKQog
ICAgICwgbV9pc1ZpZXdwb3J0Q29uc3RyYWluZWQoZmFsc2UpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAkocmV2
aXNpb24gMTkwODI4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3Jh
cGhpY3NMYXllckNBLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDEyICs0Nyw4IEBAIGNsYXNzIFRy
YW5zZm9ybVN0YXRlOwogCiBjbGFzcyBHcmFwaGljc0xheWVyQ0EgOiBwdWJsaWMgR3JhcGhpY3NM
YXllciwgcHVibGljIFBsYXRmb3JtQ0FMYXllckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgLy8gVGhl
IHdpZHRoIGFuZCBoZWlnaHQgb2YgYSBzaW5nbGUgdGlsZSBpbiBhIHRpbGVkIGxheWVyLiBTaG91
bGQgYmUgbGFyZ2UgZW5vdWdoIHRvCi0gICAgLy8gYXZvaWQgbG90cyBvZiBzbWFsbCB0aWxlcyAo
YW5kIHRoZXJlZm9yZSBsb3RzIG9mIGRyYXdpbmcgY2FsbGJhY2tzKSwgYnV0IHNtYWxsIGVub3Vn
aAotICAgIC8vIHRvIGtlZXAgdGhlIG92ZXJhbGwgdGlsZSBjb3N0IGxvdy4KLSAgICBzdGF0aWMg
Y29uc3QgaW50IGtUaWxlZExheWVyVGlsZVNpemUgPSA1MTI7CiAKLSAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBHcmFwaGljc0xheWVyQ0EoVHlwZSwgR3JhcGhpY3NMYXllckNsaWVudCYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEdyYXBoaWNzTGF5ZXJDQShUeXBlLCBjb25zdCBJ
bnRTaXplJiB0aWxlU2l6ZSwgR3JhcGhpY3NMYXllckNsaWVudCYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgfkdyYXBoaWNzTGF5ZXJDQSgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCB2b2lkIGluaXRpYWxpemUoVHlwZSkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAJ
KHJldmlzaW9uIDE5MDgyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1BsYXRmb3JtQ0FMYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDggKzQyLDkgQEAgc3Rh
dGljIEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBnZQogY29uc3QgZmxvYXQgUGxhdGZv
cm1DQUxheWVyOjp3ZWJMYXllcldhc3RlZFNwYWNlVGhyZXNob2xkID0gMC43NWY7CiAjZW5kaWYK
IAotUGxhdGZvcm1DQUxheWVyOjpQbGF0Zm9ybUNBTGF5ZXIoTGF5ZXJUeXBlIGxheWVyVHlwZSwg
UGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcikKK1BsYXRmb3JtQ0FMYXllcjo6UGxhdGZvcm1D
QUxheWVyKExheWVyVHlwZSBsYXllclR5cGUsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBQbGF0
Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKQogICAgIDogbV9sYXllclR5cGUobGF5ZXJUeXBlKQor
ICAgICwgbV90aWxlU2l6ZSh0aWxlU2l6ZSkKICAgICAsIG1fbGF5ZXJJRChnZW5lcmF0ZUxheWVy
SUQoKSkKICAgICAsIG1fb3duZXIob3duZXIpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaAkocmV2aXNpb24g
MTkwODI4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1D
QUxheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNCw2ICsxMTQsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGNvcHlDb250ZW50c0Zyb21MYXllcihQbGF0Zm9ybUNBTGF5ZXIqKSA9IDA7
CiAKICAgICBMYXllclR5cGUgbGF5ZXJUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9sYXllclR5cGU7
IH0KKyAgICBJbnRTaXplIHRpbGVTaXplKCkgY29uc3QgeyByZXR1cm4gbV90aWxlU2l6ZTsgfQog
CiAgICAgdmlydHVhbCBQbGF0Zm9ybUNBTGF5ZXIqIHN1cGVybGF5ZXIoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHJlbW92ZUZyb21TdXBlcmxheWVyKCkgPSAwOwpAQCAtMjcwLDExICsy
NzEsMTIgQEAgcHVibGljOgogICAgIHZvaWQgbW92ZVRvTGF5ZXJQb29sKCk7CiAKIHByb3RlY3Rl
ZDoKLSAgICBQbGF0Zm9ybUNBTGF5ZXIoTGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQq
IG93bmVyKTsKKyAgICBQbGF0Zm9ybUNBTGF5ZXIoTGF5ZXJUeXBlLCBjb25zdCBJbnRTaXplJiB0
aWxlU2l6ZSwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcik7CiAKICAgICB2aXJ0dWFsIExh
eWVyUG9vbCYgbGF5ZXJQb29sKCk7CiAKICAgICBjb25zdCBMYXllclR5cGUgbV9sYXllclR5cGU7
CisgICAgY29uc3QgSW50U2l6ZSBtX3RpbGVTaXplOwogICAgIGNvbnN0IEdyYXBoaWNzTGF5ZXI6
OlBsYXRmb3JtTGF5ZXJJRCBtX2xheWVySUQ7CiAgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+
IG1fbGF5ZXI7CiAgICAgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBtX293bmVyOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9s
bGVyLmNwcAkocmV2aXNpb24gMTkwODI4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3
IEBAIFN0cmluZyBUaWxlQ29udHJvbGxlcjo6em9vbWVkT3V0VGlsZUdyaWQKIFRpbGVDb250cm9s
bGVyOjpUaWxlQ29udHJvbGxlcihQbGF0Zm9ybUNBTGF5ZXIqIHJvb3RQbGF0Zm9ybUxheWVyKQog
ICAgIDogbV90aWxlQ2FjaGVMYXllcihyb290UGxhdGZvcm1MYXllcikKICAgICAsIG1fdGlsZUdy
aWQoc3RkOjptYWtlX3VuaXF1ZTxUaWxlR3JpZD4oKnRoaXMpKQotICAgICwgbV90aWxlU2l6ZShk
ZWZhdWx0VGlsZVdpZHRoLCBkZWZhdWx0VGlsZUhlaWdodCkKKyAgICAsIG1fdGlsZVNpemUocm9v
dFBsYXRmb3JtTGF5ZXItPnRpbGVTaXplKCkpCiAgICAgLCBtX3RpbGVSZXZhbGlkYXRpb25UaW1l
cigqdGhpcywgJlRpbGVDb250cm9sbGVyOjp0aWxlUmV2YWxpZGF0aW9uVGltZXJGaXJlZCkKICAg
ICAsIG1fem9vbWVkT3V0Q29udGVudHNTY2FsZSgwKQogICAgICwgbV9kZXZpY2VTY2FsZUZhY3Rv
cihvd25pbmdHcmFwaGljc0xheWVyKCktPnBsYXRmb3JtQ0FMYXllckRldmljZVNjYWxlRmFjdG9y
KCkpCkBAIC0zMjgsOCArMzI4LDggQEAgRmxvYXRSZWN0IFRpbGVDb250cm9sbGVyOjpjb21wdXRl
VGlsZUNvdgogICAgIGlmIChtX3RpbGVDb3ZlcmFnZSA9PSBDb3ZlcmFnZUZvclZpc2libGVBcmVh
IHx8IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9uKCkuaXNVbmRlck1lbW9yeVByZXNz
dXJlKCkpCiAgICAgICAgIHJldHVybiB2aXNpYmxlUmVjdDsKIAotICAgIGRvdWJsZSBob3Jpem9u
dGFsTWFyZ2luID0gZGVmYXVsdFRpbGVXaWR0aCAvIGNvbnRlbnRzU2NhbGU7Ci0gICAgZG91Ymxl
IHZlcnRpY2FsTWFyZ2luID0gZGVmYXVsdFRpbGVIZWlnaHQgLyBjb250ZW50c1NjYWxlOworICAg
IGRvdWJsZSBob3Jpem9udGFsTWFyZ2luID0gbV90aWxlU2l6ZS53aWR0aCgpIC8gY29udGVudHNT
Y2FsZTsKKyAgICBkb3VibGUgdmVydGljYWxNYXJnaW4gPSBtX3RpbGVTaXplLmhlaWdodCgpIC8g
Y29udGVudHNTY2FsZTsKIAogICAgIGRvdWJsZSBjdXJyZW50VGltZSA9IG1vbm90b25pY2FsbHlJ
bmNyZWFzaW5nVGltZSgpOwogICAgIGRvdWJsZSB0aW1lRGVsdGEgPSBjdXJyZW50VGltZSAtIG1f
dmVsb2NpdHkubGFzdFVwZGF0ZVRpbWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNv
Y29hLmgJKHJldmlzaW9uIDE5MDgyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29hLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDExICszNCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBsYXRmb3JtQ0FMYXll
ckNvY29hIGZpbmFsIDogcHVibGljIFBsYXRmb3JtQ0FMYXllciB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBjcmVhdGUoTGF5ZXJUeXBlLCBQbGF0Zm9y
bUNBTGF5ZXJDbGllbnQqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+
IGNyZWF0ZShMYXllclR5cGUsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBQbGF0Zm9ybUNBTGF5
ZXJDbGllbnQqKTsKICAgICAKICAgICAvLyBUaGlzIGZ1bmN0aW9uIHBhc3NlcyB0aGUgbGF5ZXIg
YXMgYSB2b2lkKiByYXRoZXIgdGhhbiBhIFBsYXRmb3JtTGF5ZXIgYmVjYXVzZSBQbGF0Zm9ybUxh
eWVyCiAgICAgLy8gaXMgZGVmaW5lZCBkaWZmZXJlbnRseSBmb3IgT2JqIEMgYW5kIEMrKy4gVGhp
cyBhbGxvd3MgY2FsbGVycyBmcm9tIGJvdGggbGFuZ3VhZ2VzLgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlKHZvaWQqIHBsYXRmb3JtTGF5ZXIsIFBsYXRmb3Jt
Q0FMYXllckNsaWVudCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4g
Y3JlYXRlKHZvaWQqIHBsYXRmb3JtTGF5ZXIsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBQbGF0
Zm9ybUNBTGF5ZXJDbGllbnQqKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBMYXllclR5
cGUgbGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcihQbGF0Zm9ybUxheWVyKik7CiAKQEAgLTE2NCw4
ICsxNjQsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVudW1lcmF0ZVJlY3RzQmVpbmdE
cmF3bihDR0NvbnRleHRSZWYsIHZvaWQgKF5ibG9jaykoQ0dSZWN0KSkgb3ZlcnJpZGU7CiAKIHBy
aXZhdGU6Ci0gICAgUGxhdGZvcm1DQUxheWVyQ29jb2EoTGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5
ZXJDbGllbnQqIG93bmVyKTsKLSAgICBQbGF0Zm9ybUNBTGF5ZXJDb2NvYShQbGF0Zm9ybUxheWVy
KiwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcik7CisgICAgUGxhdGZvcm1DQUxheWVyQ29j
b2EoTGF5ZXJUeXBlLCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgUGxhdGZvcm1DQUxheWVyQ2xp
ZW50KiBvd25lcik7CisgICAgUGxhdGZvcm1DQUxheWVyQ29jb2EoUGxhdGZvcm1MYXllciosIGNv
bnN0IEludFNpemUmIHRpbGVTaXplLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKTsKIAog
ICAgIHZvaWQgY29tbW9uSW5pdCgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJD
b2NvYS5tbQkocmV2aXNpb24gMTkwODI4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAg
LTcxLDE0ICs3MSwxNCBAQCBTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlBsYXllckxh
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXll
cj4gUGxhdGZvcm1DQUxheWVyQ29jb2E6OmNyZWF0ZShMYXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0
Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKQorUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IFBs
YXRmb3JtQ0FMYXllckNvY29hOjpjcmVhdGUoTGF5ZXJUeXBlIGxheWVyVHlwZSwgY29uc3QgSW50
U2l6ZSYgdGlsZVNpemUsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIpCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9ybUNBTGF5ZXJDb2NvYShsYXllclR5cGUsIG93bmVyKSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbGF0Zm9ybUNBTGF5ZXJDb2NvYShsYXllclR5cGUs
IHRpbGVTaXplLCBvd25lcikpOwogfQogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gUGxh
dGZvcm1DQUxheWVyQ29jb2E6OmNyZWF0ZSh2b2lkKiBwbGF0Zm9ybUxheWVyLCBQbGF0Zm9ybUNB
TGF5ZXJDbGllbnQqIG93bmVyKQorUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IFBsYXRmb3Jt
Q0FMYXllckNvY29hOjpjcmVhdGUodm9pZCogcGxhdGZvcm1MYXllciwgY29uc3QgSW50U2l6ZSYg
dGlsZVNpemUsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIpCiB7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBQbGF0Zm9ybUNBTGF5ZXJDb2NvYShzdGF0aWNfY2FzdDxQbGF0Zm9ybUxheWVy
Kj4ocGxhdGZvcm1MYXllciksIG93bmVyKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbGF0
Zm9ybUNBTGF5ZXJDb2NvYShzdGF0aWNfY2FzdDxQbGF0Zm9ybUxheWVyKj4ocGxhdGZvcm1MYXll
ciksIHRpbGVTaXplLCBvd25lcikpOwogfQogCiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBwbGF0
Zm9ybUNBTGF5ZXJQb2ludGVyID0gQCJXS1BsYXRmb3JtQ0FMYXllciI7CkBAIC0yMDMsOCArMjAz
LDggQEAgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgUGxhdGZvcm1DQUxheQogICAgIHJldHVy
biBMYXllclR5cGVDdXN0b207CiB9CiAKLVBsYXRmb3JtQ0FMYXllckNvY29hOjpQbGF0Zm9ybUNB
TGF5ZXJDb2NvYShMYXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93
bmVyKQotICAgIDogUGxhdGZvcm1DQUxheWVyKGxheWVyVHlwZSwgb3duZXIpCitQbGF0Zm9ybUNB
TGF5ZXJDb2NvYTo6UGxhdGZvcm1DQUxheWVyQ29jb2EoTGF5ZXJUeXBlIGxheWVyVHlwZSwgY29u
c3QgSW50U2l6ZSYgdGlsZVNpemUsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIpCisgICAg
OiBQbGF0Zm9ybUNBTGF5ZXIobGF5ZXJUeXBlLCB0aWxlU2l6ZSwgb3duZXIpCiAgICAgLCBtX2N1
c3RvbUFwcGVhcmFuY2UoR3JhcGhpY3NMYXllcjo6Tm9DdXN0b21BcHBlYXJhbmNlKQogewogICAg
IENsYXNzIGxheWVyQ2xhc3MgPSBOaWw7CkBAIC0yNzcsOCArMjc3LDggQEAgUGxhdGZvcm1DQUxh
eWVyQ29jb2E6OlBsYXRmb3JtQ0FMYXllckNvYwogICAgIGNvbW1vbkluaXQoKTsKIH0KIAotUGxh
dGZvcm1DQUxheWVyQ29jb2E6OlBsYXRmb3JtQ0FMYXllckNvY29hKFBsYXRmb3JtTGF5ZXIqIGxh
eWVyLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKQotICAgIDogUGxhdGZvcm1DQUxheWVy
KGxheWVyVHlwZUZvclBsYXRmb3JtTGF5ZXIobGF5ZXIpLCBvd25lcikKK1BsYXRmb3JtQ0FMYXll
ckNvY29hOjpQbGF0Zm9ybUNBTGF5ZXJDb2NvYShQbGF0Zm9ybUxheWVyKiBsYXllciwgY29uc3Qg
SW50U2l6ZSYgdGlsZVNpemUsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIpCisgICAgOiBQ
bGF0Zm9ybUNBTGF5ZXIobGF5ZXJUeXBlRm9yUGxhdGZvcm1MYXllcihsYXllciksIHRpbGVTaXpl
LCBvd25lcikKICAgICAsIG1fY3VzdG9tQXBwZWFyYW5jZShHcmFwaGljc0xheWVyOjpOb0N1c3Rv
bUFwcGVhcmFuY2UpCiB7CiAgICAgbV9sYXllciA9IGxheWVyOwpAQCAtMzI5LDcgKzMyOSw3IEBA
IFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBQbGF0Zm9ybUNBTGEKICAgICAgICAgdHlwZSA9
IExheWVyVHlwZUxheWVyOwogICAgICAgICBicmVhazsKICAgICB9OwotICAgIFJlZlB0cjxQbGF0
Zm9ybUNBTGF5ZXI+IG5ld0xheWVyID0gUGxhdGZvcm1DQUxheWVyQ29jb2E6OmNyZWF0ZSh0eXBl
LCBvd25lcik7CisgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gbmV3TGF5ZXIgPSBQbGF0Zm9y
bUNBTGF5ZXJDb2NvYTo6Y3JlYXRlKHR5cGUsIHRpbGVTaXplKCksIG93bmVyKTsKICAgICAKICAg
ICBuZXdMYXllci0+c2V0UG9zaXRpb24ocG9zaXRpb24oKSk7CiAgICAgbmV3TGF5ZXItPnNldEJv
dW5kcyhib3VuZHMoKSk7CkBAIC0xMTAyLDcgKzExMDIsNyBAQCBDR1JlY3QgUGxhdGZvcm1DQUxh
eWVyOjpmcmFtZUZvckxheWVyKGNvCiAKIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBQbGF0
Zm9ybUNBTGF5ZXJDb2NvYTo6Y3JlYXRlQ29tcGF0aWJsZUxheWVyKFBsYXRmb3JtQ0FMYXllcjo6
TGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBjbGllbnQpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtQ0FMYXllckNvY29hOjpjcmVhdGUobGF5ZXJUeXBlLCBj
bGllbnQpOworICAgIHJldHVybiBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6Y3JlYXRlKGxheWVyVHlw
ZSwgdGlsZVNpemUoKSwgY2xpZW50KTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJDb2NvYTo6
ZW51bWVyYXRlUmVjdHNCZWluZ0RyYXduKENHQ29udGV4dFJlZiBjb250ZXh0LCB2b2lkICheYmxv
Y2spKENHUmVjdCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJCYWNraW5nLmNwcAkocmV2aXNpb24gMTkwODI4KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSwxMyAr
MTYxLDE4IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp3aWxsRGVzdHJveUxheWUKICAgICAg
ICAgY29tcG9zaXRvcigpLmxheWVyVGlsZWRCYWNraW5nVXNhZ2VDaGFuZ2VkKGxheWVyLCBmYWxz
ZSk7CiB9CiAKK0ludFNpemUgUmVuZGVyTGF5ZXJCYWNraW5nOjp0aWxlU2l6ZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIEdyYXBoaWNzTGF5ZXI6OmRlZmF1bHRUaWxlU2l6ZShyZW5kZXJlcigpLmZy
YW1lKCkucGFnZSgpLT5zZXR0aW5ncygpLnNpbmdsZUxhcmdlVGlsZSgpKTsKK30KKwogc3RkOjp1
bmlxdWVfcHRyPEdyYXBoaWNzTGF5ZXI+IFJlbmRlckxheWVyQmFja2luZzo6Y3JlYXRlR3JhcGhp
Y3NMYXllcihjb25zdCBTdHJpbmcmIG5hbWUsIEdyYXBoaWNzTGF5ZXI6OlR5cGUgbGF5ZXJUeXBl
KQogewogICAgIEdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBncmFwaGljc0xheWVyRmFjdG9yeSA9IDA7
CiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSByZW5kZXJlcigpLmZyYW1lKCkucGFnZSgpKQogICAgICAg
ICBncmFwaGljc0xheWVyRmFjdG9yeSA9IHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLmdyYXBoaWNz
TGF5ZXJGYWN0b3J5KCk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NMYXllcj4gZ3Jh
cGhpY3NMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShncmFwaGljc0xheWVyRmFjdG9yeSwg
KnRoaXMsIGxheWVyVHlwZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzTGF5ZXI+IGdy
YXBoaWNzTGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUoZ3JhcGhpY3NMYXllckZhY3Rvcnks
ICp0aGlzLCBsYXllclR5cGUsIHRpbGVTaXplKCkpOwogCiAjaWYgRU5BQkxFKFRSRUVfREVCVUdH
SU5HKQogICAgIGdyYXBoaWNzTGF5ZXItPnNldE5hbWUobmFtZSk7CkBAIC0yMjMsOCArMjI4LDgg
QEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnNldFRpbGVkQmFja2luZwogICAgIGlmICghbV91
c2luZ1RpbGVkQ2FjaGVMYXllcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW50IG1hcmdpbkxl
ZnRBbmRSaWdodFNpemUgPSBoYXNFeHRlbmRlZEJhY2tncm91bmRPbkxlZnRBbmRSaWdodCA/IGRl
ZmF1bHRUaWxlV2lkdGggOiAwOwotICAgIGludCBtYXJnaW5Ub3BBbmRCb3R0b21TaXplID0gaGFz
RXh0ZW5kZWRCYWNrZ3JvdW5kT25Ub3BBbmRCb3R0b20gPyBkZWZhdWx0VGlsZUhlaWdodCA6IDA7
CisgICAgaW50IG1hcmdpbkxlZnRBbmRSaWdodFNpemUgPSBoYXNFeHRlbmRlZEJhY2tncm91bmRP
bkxlZnRBbmRSaWdodCA/IHRpbGVTaXplKCkud2lkdGgoKSA6IDA7CisgICAgaW50IG1hcmdpblRv
cEFuZEJvdHRvbVNpemUgPSBoYXNFeHRlbmRlZEJhY2tncm91bmRPblRvcEFuZEJvdHRvbSA/IHRp
bGVTaXplKCkuaGVpZ2h0KCkgOiAwOwogICAgIHRpbGVkQmFja2luZygpLT5zZXRUaWxlTWFyZ2lu
cyhtYXJnaW5Ub3BBbmRCb3R0b21TaXplLCBtYXJnaW5Ub3BBbmRCb3R0b21TaXplLCBtYXJnaW5M
ZWZ0QW5kUmlnaHRTaXplLCBtYXJnaW5MZWZ0QW5kUmlnaHRTaXplKTsKIH0KIApAQCAtMTE4NSw5
ICsxMTkwLDYgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnJlc2V0Q29udGVudHNSZQogICAg
ICAgICBjb250ZW50c0NsaXBwaW5nUmVjdC5tb3ZlKGNvbnRlbnRPZmZzZXRJbkNvbXBvc3RpbmdM
YXllcigpKTsKICAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c0NsaXBwaW5nUmVj
dChjb250ZW50c0NsaXBwaW5nUmVjdCk7CiAgICAgfQotCi0gICAgbV9ncmFwaGljc0xheWVyLT5z
ZXRDb250ZW50c1RpbGVTaXplKEludFNpemUoKSk7Ci0gICAgbV9ncmFwaGljc0xheWVyLT5zZXRD
b250ZW50c1RpbGVQaGFzZShJbnRTaXplKCkpOwogfQogCiB2b2lkIFJlbmRlckxheWVyQmFja2lu
Zzo6dXBkYXRlRHJhd3NDb250ZW50KCkKQEAgLTE3NDYsOCArMTc0OCw2IEBAIHZvaWQgUmVuZGVy
TGF5ZXJCYWNraW5nOjp1cGRhdGVEaXJlY3RseUMKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0g
c3R5bGUuYmFja2dyb3VuZExheWVycygpLT5pbWFnZSgpLT5jYWNoZWRJbWFnZSgpLT5pbWFnZSgp
OwogICAgIC8vIEZJWE1FOiBhYnNvbHV0ZSBwYWludCBsb2NhdGlvbiBpcyByZXF1aXJlZCBoZXJl
LgogICAgIGRvd25jYXN0PFJlbmRlckJveD4ocmVuZGVyZXIoKSkuZ2V0R2VvbWV0cnlGb3JCYWNr
Z3JvdW5kSW1hZ2UoJnJlbmRlcmVyKCksIExheW91dFBvaW50KCksIGRlc3RSZWN0LCBwaGFzZSwg
dGlsZVNpemUpOwotICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUaWxlU2l6ZSh0aWxl
U2l6ZSk7Ci0gICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1RpbGVQaGFzZShwaGFzZSk7
CiAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1JlY3QoZGVzdFJlY3QpOwogICAgIG1f
Z3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNDbGlwcGluZ1JlY3QoRmxvYXRSb3VuZGVkUmVjdChk
ZXN0UmVjdCkpOwogICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUb0ltYWdlKGltYWdl
LmdldCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmgJKHJldmlzaW9uIDE5MDgyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMjUxLDcgKzI1MSw4IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCB3aWxsRGVzdHJveUxheWVyKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKTsK
IAogICAgIExheW91dFJlY3QgY29tcG9zaXRlZEJvdW5kc0luY2x1ZGluZ01hcmdpbigpIGNvbnN0
OwotICAgIAorCisgICAgSW50U2l6ZSB0aWxlU2l6ZSgpIGNvbnN0OwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxHcmFwaGljc0xheWVyPiBjcmVhdGVHcmFwaGljc0xheWVyKGNvbnN0IFN0cmluZyYsIEdy
YXBoaWNzTGF5ZXI6OlR5cGUgPSBHcmFwaGljc0xheWVyOjpUeXBlOjpOb3JtYWwpOwogCiAgICAg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCYgcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBtX293bmlu
Z0xheWVyLnJlbmRlcmVyKCk7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MDgyOCkKKysr
IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBA
CisyMDE1LTEwLTA5ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+
CisKKyAgICAgICAgQWRkIGRlYnVnIHNldHRpbmdzIGZvciBzaW5nbGUgbGFyZ2UgdGlsZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5OTc3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvV2Vi
UHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1By
ZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRTaW5nbGVMYXJnZVRpbGUp
OgorICAgICAgICAoV0tQcmVmZXJlbmNlc0dldFNpbmdsZUxhcmdlVGlsZSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1
cGRhdGVQcmVmZXJlbmNlcyk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0dy
YXBoaWNzTGF5ZXJDQVJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkdyYXBoaWNzTGF5ZXJD
QVJlbW90ZTo6Y3JlYXRlUGxhdGZvcm1DQUxheWVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL0dyYXBoaWNzTGF5ZXJDQVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGU6OlBsYXRmb3JtQ0FMYXllclJlbW90ZSk6CisgICAgICAgIChXZWJLaXQ6
OlBsYXRmb3JtQ0FMYXllclJlbW90ZTo6Y3JlYXRlQ29tcGF0aWJsZUxheWVyKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oOgorICAgICAg
ICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNvbnRleHQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20u
bW06CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGVDdXN0b20pOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGVDdXN0b206OmNsb25lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Bs
YXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBs
YXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZzo6UGxhdGZvcm1DQUxheWVyUmVtb3RlVGls
ZWRCYWNraW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FM
YXllclJlbW90ZVRpbGVkQmFja2luZy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TGF5ZXJUcmVlQ29udGV4dDo6Y3JlYXRlR3JhcGhpY3NMYXllcik6CisgICAgICAgIFRoZSBjb25z
dHJ1Y3RvcnMgb2YgYWxsIHRoZSBjbGFzc2VzIHdoaWNoIGFyZSBkZXJpdmVkIGZyb20gUGxhdGZv
cm1DQUxheWVyCisgICAgICAgIGFuZCBHcmFwaGljc0xheWVyIG5lZWQgdG8gdGFrZSB0aGUgdGls
ZVNpemUgbm93IGFzIGEgcGFyYW1ldGVyLgorCiAyMDE1LTEwLTA5ICBCZXRoIERha2luICA8YmRh
a2luQGFwcGxlLmNvbT4KIAogICAgICAgICBCdWlsZCBmaXguCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmgJKHJldmlzaW9uIDE5
MDgyOCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmluaXRpb25z
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE4OCw2ICsxODgsNyBAQAogICAgIG1hY3JvKFRocmVhZGVk
U2Nyb2xsaW5nRW5hYmxlZCwgdGhyZWFkZWRTY3JvbGxpbmdFbmFibGVkLCBCb29sLCBib29sLCB0
cnVlKSBcCiAgICAgbWFjcm8oU2ltcGxlTGluZUxheW91dEVuYWJsZWQsIHNpbXBsZUxpbmVMYXlv
dXRFbmFibGVkLCBCb29sLCBib29sLCB0cnVlKSBcCiAgICAgbWFjcm8oU3VicGl4ZWxDU1NPTUVs
ZW1lbnRNZXRyaWNzRW5hYmxlZCwgc3VicGl4ZWxDU1NPTUVsZW1lbnRNZXRyaWNzRW5hYmxlZCwg
Qm9vbCwgYm9vbCwgZmFsc2UpIFwKKyAgICBtYWNybyhTaW5nbGVMYXJnZVRpbGUsIHNpbmdsZUxh
cmdlVGlsZSwgQm9vbCwgYm9vbCwgZmFsc2UpIFwKICAgICBtYWNybyhNZWRpYVN0cmVhbUVuYWJs
ZWQsIG1lZGlhU3RyZWFtRW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFsc2UpIFwKICAgICBtYWNybyhV
c2VMZWdhY3lUZXh0QWxpZ25Qb3NpdGlvbmVkRWxlbWVudEJlaGF2aW9yLCB1c2VMZWdhY3lUZXh0
QWxpZ25Qb3NpdGlvbmVkRWxlbWVudEJlaGF2aW9yLCBCb29sLCBib29sLCBmYWxzZSkgXAogICAg
IG1hY3JvKFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZCwgc3BhdGlhbE5hdmlnYXRpb25FbmFibGVk
LCBCb29sLCBib29sLCBmYWxzZSkgXApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLUHJlZmVyZW5jZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAkocmV2aXNpb24gMTkwODI4KQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjE3LDYgKzEyMTcsMTYgQEAgYm9vbCBXS1ByZWZlcmVuY2VzR2V0U3VicGl4ZWxDU1NP
TUVsZW1lbgogICAgIHJldHVybiB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zdWJwaXhlbENTU09N
RWxlbWVudE1ldHJpY3NFbmFibGVkKCk7CiB9CiAKK3ZvaWQgV0tQcmVmZXJlbmNlc1NldFNpbmds
ZUxhcmdlVGlsZShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIGZsYWcpCit7
CisgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0U2luZ2xlTGFyZ2VUaWxlKGZsYWcpOwor
fQorCitib29sIFdLUHJlZmVyZW5jZXNHZXRTaW5nbGVMYXJnZVRpbGUoV0tQcmVmZXJlbmNlc1Jl
ZiBwcmVmZXJlbmNlc1JlZikKK3sKKyAgICByZXR1cm4gdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+
c2luZ2xlTGFyZ2VUaWxlKCk7Cit9CisKIHZvaWQgV0tQcmVmZXJlbmNlc1NldE1lZGlhU3RyZWFt
RW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIGVuYWJsZWQpCiB7
CiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0TWVkaWFTdHJlYW1FbmFibGVkKGVuYWJs
ZWQpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNS
ZWZQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgJKHJldmlzaW9uIDE5MDgyOCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMTMsNiArMzEzLDEwIEBAIFdLX0VYUE9SVCBib29sIFdLUHJlZmVyZW5jZXNH
ZXROZXdCbG9ja0kKIFdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRTdWJwaXhlbENTU09N
RWxlbWVudE1ldHJpY3NFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYsIGJvb2wpOwogV0tfRVhQT1JU
IGJvb2wgV0tQcmVmZXJlbmNlc0dldFN1YnBpeGVsQ1NTT01FbGVtZW50TWV0cmljc0VuYWJsZWQo
V0tQcmVmZXJlbmNlc1JlZik7CiAKKy8vIERlZmF1bHRzIHRvIGZhbHNlLgorV0tfRVhQT1JUIHZv
aWQgV0tQcmVmZXJlbmNlc1NldFNpbmdsZUxhcmdlVGlsZShXS1ByZWZlcmVuY2VzUmVmLCBib29s
KTsKK1dLX0VYUE9SVCBib29sIFdLUHJlZmVyZW5jZXNHZXRTaW5nbGVMYXJnZVRpbGUoV0tQcmVm
ZXJlbmNlc1JlZik7CisKIFdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNSZXNldFRlc3RSdW5u
ZXJPdmVycmlkZXMoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZik7CiAKIC8vIERlZmF1
bHRzIHRvIGZhbHNlLgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMTkwODI4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzM4LDYgKzI3Mzgs
NyBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlCiAgICAgc2V0dGlu
Z3Muc2V0U2hvd1JlcGFpbnRDb3VudGVyKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVm
ZXJlbmNlc0tleTo6Y29tcG9zaXRpbmdSZXBhaW50Q291bnRlcnNWaXNpYmxlS2V5KCkpKTsKICAg
ICBzZXR0aW5ncy5zZXRTaG93VGlsZWRTY3JvbGxpbmdJbmRpY2F0b3Ioc3RvcmUuZ2V0Qm9vbFZh
bHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojp0aWxlZFNjcm9sbGluZ0luZGljYXRvclZpc2li
bGVLZXkoKSkpOwogICAgIHNldHRpbmdzLnNldFZpc2libGVEZWJ1Z092ZXJsYXlSZWdpb25zKHN0
b3JlLmdldFVJbnQzMlZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojp2aXNpYmxlRGVidWdP
dmVybGF5UmVnaW9uc0tleSgpKSk7CisgICAgc2V0dGluZ3Muc2V0U2luZ2xlTGFyZ2VUaWxlKHN0
b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6c2luZ2xlTGFyZ2VUaWxl
S2V5KCkpKTsKICAgICAKICAgICBzZXR0aW5ncy5zZXRBZ2dyZXNzaXZlVGlsZVJldGVudGlvbkVu
YWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjphZ2dyZXNz
aXZlVGlsZVJldGVudGlvbkVuYWJsZWRLZXkoKSkpOwogICAgIHNldHRpbmdzLnNldFRlbXBvcmFy
eVRpbGVDb2hvcnRSZXRlbnRpb25FbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQ
cmVmZXJlbmNlc0tleTo6dGVtcG9yYXJ5VGlsZUNvaG9ydFJldGVudGlvbkVuYWJsZWRLZXkoKSkp
OwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9HcmFwaGljc0xh
eWVyQ0FSZW1vdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvR3JhcGhpY3NMYXllckNBUmVtb3RlLmNwcAkocmV2aXNpb24gMTkwODI4KQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9HcmFwaGljc0xheWVyQ0FS
ZW1vdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MywxMiArNDMsMTIgQEAgYm9vbCBHcmFwaGlj
c0xheWVyQ0FSZW1vdGU6OmZpbHRlcnNDYW5CZQogCiBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXll
cj4gR3JhcGhpY3NMYXllckNBUmVtb3RlOjpjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZvcm1D
QUxheWVyOjpMYXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVy
KQogewotICAgIHJldHVybiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNyZWF0ZShsYXllclR5cGUs
IG93bmVyLCBtX2NvbnRleHQpOworICAgIHJldHVybiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNy
ZWF0ZShsYXllclR5cGUsIHRpbGVTaXplKCksIG93bmVyLCBtX2NvbnRleHQpOwogfQogCiBQYXNz
UmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gR3JhcGhpY3NMYXllckNBUmVtb3RlOjpjcmVhdGVQbGF0
Zm9ybUNBTGF5ZXIoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllciwgUGxhdGZvcm1DQUxheWVy
Q2xpZW50KiBvd25lcikKIHsKLSAgICByZXR1cm4gUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjcmVh
dGUocGxhdGZvcm1MYXllciwgb3duZXIsIG1fY29udGV4dCk7CisgICAgcmV0dXJuIFBsYXRmb3Jt
Q0FMYXllclJlbW90ZTo6Y3JlYXRlKHBsYXRmb3JtTGF5ZXIsIHRpbGVTaXplKCksIG93bmVyLCBt
X2NvbnRleHQpOwogfQogCiBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IEdyYXBoaWNz
TGF5ZXJDQVJlbW90ZTo6Y3JlYXRlUGxhdGZvcm1DQUFuaW1hdGlvbihQbGF0Zm9ybUNBQW5pbWF0
aW9uOjpBbmltYXRpb25UeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvR3JhcGhpY3NMYXllckNBUmVtb3Rl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9H
cmFwaGljc0xheWVyQ0FSZW1vdGUuaAkocmV2aXNpb24gMTkwODI4KQorKysgU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9HcmFwaGljc0xheWVyQ0FSZW1vdGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzUsOCArMzUsOCBAQCBjbGFzcyBSZW1vdGVMYXllclRyZWVDb250ZXh0Owog
CiBjbGFzcyBHcmFwaGljc0xheWVyQ0FSZW1vdGUgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNBIHsKIHB1YmxpYzoKLSAgICBHcmFwaGljc0xheWVyQ0FSZW1vdGUoVHlwZSBs
YXllclR5cGUsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDbGllbnQmIGNsaWVudCwgUmVtb3RlTGF5
ZXJUcmVlQ29udGV4dCYgY29udGV4dCkKLSAgICAgICAgOiBHcmFwaGljc0xheWVyQ0EobGF5ZXJU
eXBlLCBjbGllbnQpCisgICAgR3JhcGhpY3NMYXllckNBUmVtb3RlKFR5cGUgbGF5ZXJUeXBlLCBj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiB0aWxlU2l6ZSwgV2ViQ29yZTo6R3JhcGhpY3NMYXllckNs
aWVudCYgY2xpZW50LCBSZW1vdGVMYXllclRyZWVDb250ZXh0JiBjb250ZXh0KQorICAgICAgICA6
IEdyYXBoaWNzTGF5ZXJDQShsYXllclR5cGUsIHRpbGVTaXplLCBjbGllbnQpCiAgICAgICAgICwg
bV9jb250ZXh0KGNvbnRleHQpCiAgICAgewogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXll
clJlbW90ZS5jcHAJKHJldmlzaW9uIDE5MDgyOCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDUsMjMgKzQ1LDIzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+IFBsYXRmb3JtQ0FM
YXllclJlbW90ZTo6Y3JlYXRlKExheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3JtQ0FMYXllckNs
aWVudCogb3duZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRleHQmIGNvbnRleHQpCitQYXNzUmVmUHRy
PFBsYXRmb3JtQ0FMYXllclJlbW90ZT4gUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjcmVhdGUoTGF5
ZXJUeXBlIGxheWVyVHlwZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdGlsZVNpemUsIFBsYXRm
b3JtQ0FMYXllckNsaWVudCogb3duZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRleHQmIGNvbnRleHQp
CiB7CiAgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllclJlbW90ZT4gbGF5ZXI7CiAKICAgICBpZiAo
bGF5ZXJUeXBlID09IExheWVyVHlwZVRpbGVkQmFja2luZ0xheWVyIHx8ICBsYXllclR5cGUgPT0g
TGF5ZXJUeXBlUGFnZVRpbGVkQmFja2luZ0xheWVyKQotICAgICAgICBsYXllciA9IGFkb3B0UmVm
KG5ldyBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcobGF5ZXJUeXBlLCBvd25lciwg
Y29udGV4dCkpOworICAgICAgICBsYXllciA9IGFkb3B0UmVmKG5ldyBQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGVUaWxlZEJhY2tpbmcobGF5ZXJUeXBlLCB0aWxlU2l6ZSwgb3duZXIsIGNvbnRleHQpKTsK
ICAgICBlbHNlCi0gICAgICAgIGxheWVyID0gYWRvcHRSZWYobmV3IFBsYXRmb3JtQ0FMYXllclJl
bW90ZShsYXllclR5cGUsIG93bmVyLCBjb250ZXh0KSk7CisgICAgICAgIGxheWVyID0gYWRvcHRS
ZWYobmV3IFBsYXRmb3JtQ0FMYXllclJlbW90ZShsYXllclR5cGUsIHRpbGVTaXplLCBvd25lciwg
Y29udGV4dCkpOwogCiAgICAgY29udGV4dC5sYXllcldhc0NyZWF0ZWQoKmxheWVyLCBsYXllclR5
cGUpOwogCiAgICAgcmV0dXJuIGxheWVyLnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxQbGF0
Zm9ybUNBTGF5ZXJSZW1vdGU+IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6Y3JlYXRlKFBsYXRmb3Jt
TGF5ZXIgKnBsYXRmb3JtTGF5ZXIsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIsIFJlbW90
ZUxheWVyVHJlZUNvbnRleHQmIGNvbnRleHQpCitQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllclJl
bW90ZT4gUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjcmVhdGUoUGxhdGZvcm1MYXllciAqcGxhdGZv
cm1MYXllciwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdGlsZVNpemUsIFBsYXRmb3JtQ0FMYXll
ckNsaWVudCogb3duZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAg
cmV0dXJuIFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6Y3JlYXRlKHBsYXRmb3JtTGF5ZXIs
IG93bmVyLCBjb250ZXh0KTsKKyAgICByZXR1cm4gUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9t
OjpjcmVhdGUocGxhdGZvcm1MYXllciwgdGlsZVNpemUsIG93bmVyLCBjb250ZXh0KTsKIH0KIAog
UGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6
Y3JlYXRlKGNvbnN0IFBsYXRmb3JtQ0FMYXllclJlbW90ZSYgb3RoZXIsIFdlYkNvcmU6OlBsYXRm
b3JtQ0FMYXllckNsaWVudCogb3duZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRleHQmIGNvbnRleHQp
CkBAIC03Myw4ICs3Myw4IEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyUmVtb3RlPiBQbGF0
Zm8KICAgICByZXR1cm4gbGF5ZXIucmVsZWFzZSgpOwogfQogCi1QbGF0Zm9ybUNBTGF5ZXJSZW1v
dGU6OlBsYXRmb3JtQ0FMYXllclJlbW90ZShMYXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9ybUNB
TGF5ZXJDbGllbnQqIG93bmVyLCBSZW1vdGVMYXllclRyZWVDb250ZXh0JiBjb250ZXh0KQotICAg
IDogUGxhdGZvcm1DQUxheWVyKGxheWVyVHlwZSwgb3duZXIpCitQbGF0Zm9ybUNBTGF5ZXJSZW1v
dGU6OlBsYXRmb3JtQ0FMYXllclJlbW90ZShMYXllclR5cGUgbGF5ZXJUeXBlLCBjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiB0aWxlU2l6ZSwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lciwgUmVt
b3RlTGF5ZXJUcmVlQ29udGV4dCYgY29udGV4dCkKKyAgICA6IFBsYXRmb3JtQ0FMYXllcihsYXll
clR5cGUsIHRpbGVTaXplLCBvd25lcikKICAgICAsIG1fc3VwZXJsYXllcihudWxscHRyKQogICAg
ICwgbV9tYXNrTGF5ZXIobnVsbHB0cikKICAgICAsIG1fYWNjZWxlcmF0ZXNEcmF3aW5nKGZhbHNl
KQpAQCAtODUsNyArODUsNyBAQCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OlBsYXRmb3JtQ0FMYXll
clJlCiB9CiAKIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6UGxhdGZvcm1DQUxheWVyUmVtb3RlKGNv
bnN0IFBsYXRmb3JtQ0FMYXllclJlbW90ZSYgb3RoZXIsIFBsYXRmb3JtQ0FMYXllckNsaWVudCog
b3duZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRleHQmIGNvbnRleHQpCi0gICAgOiBQbGF0Zm9ybUNB
TGF5ZXIob3RoZXIubGF5ZXJUeXBlKCksIG93bmVyKQorICAgIDogUGxhdGZvcm1DQUxheWVyKG90
aGVyLmxheWVyVHlwZSgpLCBvdGhlci50aWxlU2l6ZSgpLCBvd25lcikKICAgICAsIG1fc3VwZXJs
YXllcihudWxscHRyKQogICAgICwgbV9tYXNrTGF5ZXIobnVsbHB0cikKICAgICAsIG1fYWNjZWxl
cmF0ZXNEcmF3aW5nKG90aGVyLmFjY2VsZXJhdGVzRHJhd2luZygpKQpAQCAtNzY4LDcgKzc2OCw3
IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjp1cGRhdGVDdXN0b20KIAogUGFzc1JlZlB0
cjxQbGF0Zm9ybUNBTGF5ZXI+IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6Y3JlYXRlQ29tcGF0aWJs
ZUxheWVyKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1DQUxh
eWVyQ2xpZW50KiBjbGllbnQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFBsYXRmb3JtQ0FMYXllclJl
bW90ZTo6Y3JlYXRlKGxheWVyVHlwZSwgY2xpZW50LCAqbV9jb250ZXh0KTsKKyAgICByZXR1cm4g
UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjcmVhdGUobGF5ZXJUeXBlLCB0aWxlU2l6ZSgpLCBjbGll
bnQsICptX2NvbnRleHQpOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6ZW51bWVy
YXRlUmVjdHNCZWluZ0RyYXduKENHQ29udGV4dFJlZiBjb250ZXh0LCB2b2lkICheYmxvY2spKENH
UmVjdCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRm
b3JtQ0FMYXllclJlbW90ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgJKHJldmlzaW9uIDE5MDgyOCkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVy
UmVtb3RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDggKzQxLDggQEAgY2xhc3MgUmVtb3RlTGF5
ZXJUcmVlQ29udGV4dDsKIAogY2xhc3MgUGxhdGZvcm1DQUxheWVyUmVtb3RlIDogcHVibGljIFdl
YkNvcmU6OlBsYXRmb3JtQ0FMYXllciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
UGxhdGZvcm1DQUxheWVyUmVtb3RlPiBjcmVhdGUoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGUsIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCosIFJlbW90ZUxheWVyVHJl
ZUNvbnRleHQmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+
IGNyZWF0ZShQbGF0Zm9ybUxheWVyICosIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCos
IFJlbW90ZUxheWVyVHJlZUNvbnRleHQmKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGU+IGNyZWF0ZShXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlw
ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdGlsZVNpemUsIFdlYkNvcmU6OlBsYXRmb3JtQ0FM
YXllckNsaWVudCosIFJlbW90ZUxheWVyVHJlZUNvbnRleHQmKTsKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+IGNyZWF0ZShQbGF0Zm9ybUxheWVyICosIGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIHRpbGVTaXplLCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGll
bnQqLCBSZW1vdGVMYXllclRyZWVDb250ZXh0Jik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UGxh
dGZvcm1DQUxheWVyUmVtb3RlPiBjcmVhdGUoY29uc3QgUGxhdGZvcm1DQUxheWVyUmVtb3RlJiwg
V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KiwgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYp
OwogCiAgICAgdmlydHVhbCB+UGxhdGZvcm1DQUxheWVyUmVtb3RlKCk7CkBAIC0xODMsNyArMTgz
LDcgQEAgcHVibGljOgogICAgIFJlbW90ZUxheWVyVHJlZUNvbnRleHQqIGNvbnRleHQoKSBjb25z
dCB7IHJldHVybiBtX2NvbnRleHQ7IH0KIAogcHJvdGVjdGVkOgotICAgIFBsYXRmb3JtQ0FMYXll
clJlbW90ZShXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSwgV2ViQ29yZTo6UGxh
dGZvcm1DQUxheWVyQ2xpZW50KiBvd25lciwgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYgY29udGV4
dCk7CisgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6
TGF5ZXJUeXBlLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB0aWxlU2l6ZSwgV2ViQ29yZTo6UGxh
dGZvcm1DQUxheWVyQ2xpZW50KiBvd25lciwgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYpOwogICAg
IFBsYXRmb3JtQ0FMYXllclJlbW90ZShjb25zdCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUmLCBXZWJD
b3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqLCBSZW1vdGVMYXllclRyZWVDb250ZXh0Jik7CiAK
ICAgICB2b2lkIHVwZGF0ZUNsb25lZExheWVyUHJvcGVydGllcyhQbGF0Zm9ybUNBTGF5ZXJSZW1v
dGUmIGNsb25lLCBib29sIGNvcHlDb250ZW50cyA9IHRydWUpIGNvbnN0OwpJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0
b20uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oCShyZXZpc2lvbiAxOTA4MjgpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1
c3RvbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIExheWVySG9zdGlu
Z0NvbnRleHQ7CiBjbGFzcyBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20gZmluYWwgOiBwdWJs
aWMgUGxhdGZvcm1DQUxheWVyUmVtb3RlIHsKICAgICBmcmllbmQgY2xhc3MgUGxhdGZvcm1DQUxh
eWVyUmVtb3RlOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXll
clJlbW90ZT4gY3JlYXRlKFBsYXRmb3JtTGF5ZXIgKiwgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVy
Q2xpZW50KiwgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYpOworICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFBsYXRmb3JtQ0FMYXllclJlbW90ZT4gY3JlYXRlKFBsYXRmb3JtTGF5ZXIgKiwgY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYgdGlsZVNpemUsIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCos
IFJlbW90ZUxheWVyVHJlZUNvbnRleHQmKTsKIAogICAgIHZpcnR1YWwgflBsYXRmb3JtQ0FMYXll
clJlbW90ZUN1c3RvbSgpOwogCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgc2V0TmVlZHNEaXNwbGF5KCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgUGxhdGZv
cm1DQUxheWVyUmVtb3RlQ3VzdG9tKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBl
LCBQbGF0Zm9ybUxheWVyICosIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIs
IFJlbW90ZUxheWVyVHJlZUNvbnRleHQmKTsKKyAgICBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0
b20oV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUsIGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmIHRpbGVTaXplLCBQbGF0Zm9ybUxheWVyICosIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXll
ckNsaWVudCogb3duZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRleHQmKTsKIAogICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI+IGNsb25lKFdlYkNvcmU6OlBsYXRm
b3JtQ0FMYXllckNsaWVudCogb3duZXIpIGNvbnN0IG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3Rv
bS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5tbQkocmV2aXNpb24gMTkwODI4KQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVD
dXN0b20ubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ2LDE2ICs0NiwxNiBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogc3RhdGljIE5TU3RyaW5nICogY29uc3QgcGxhdGZvcm1DQUxheWVyUG9pbnRlciA9
IEAiV0tQbGF0Zm9ybUNBTGF5ZXIiOwogCi1QYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllclJlbW90
ZT4gUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tOjpjcmVhdGUoUGxhdGZvcm1MYXllciAqcGxh
dGZvcm1MYXllciwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lciwgUmVtb3RlTGF5ZXJUcmVl
Q29udGV4dCYgY29udGV4dCkKK1Bhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyUmVtb3RlPiBQbGF0
Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OmNyZWF0ZShQbGF0Zm9ybUxheWVyICpwbGF0Zm9ybUxh
eWVyLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB0aWxlU2l6ZSwgUGxhdGZvcm1DQUxheWVyQ2xp
ZW50KiBvd25lciwgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBSZWZQ
dHI8UGxhdGZvcm1DQUxheWVyUmVtb3RlPiBsYXllciA9IGFkb3B0UmVmKG5ldyBQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGVDdXN0b20oUGxhdGZvcm1DQUxheWVyQ29jb2E6OmxheWVyVHlwZUZvclBsYXRm
b3JtTGF5ZXIocGxhdGZvcm1MYXllciksIHBsYXRmb3JtTGF5ZXIsIG93bmVyLCBjb250ZXh0KSk7
CisgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllclJlbW90ZT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcg
UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tKFBsYXRmb3JtQ0FMYXllckNvY29hOjpsYXllclR5
cGVGb3JQbGF0Zm9ybUxheWVyKHBsYXRmb3JtTGF5ZXIpLCB0aWxlU2l6ZSwgcGxhdGZvcm1MYXll
ciwgb3duZXIsIGNvbnRleHQpKTsKICAgICBjb250ZXh0LmxheWVyV2FzQ3JlYXRlZCgqbGF5ZXIs
IGxheWVyLT5sYXllclR5cGUoKSk7CiAKICAgICByZXR1cm4gbGF5ZXIucmVsZWFzZSgpOwogfQog
Ci1QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OlBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3Rv
bShMYXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0Zm9ybUxheWVyICogY3VzdG9tTGF5ZXIsIFBsYXRm
b3JtQ0FMYXllckNsaWVudCogb3duZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRleHQmIGNvbnRleHQp
Ci0gICAgOiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUobGF5ZXJUeXBlLCBvd25lciwgY29udGV4dCkK
K1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9t
KExheWVyVHlwZSBsYXllclR5cGUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHRpbGVTaXplLCBQ
bGF0Zm9ybUxheWVyICogY3VzdG9tTGF5ZXIsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIs
IFJlbW90ZUxheWVyVHJlZUNvbnRleHQmIGNvbnRleHQpCisgICAgOiBQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGUobGF5ZXJUeXBlLCB0aWxlU2l6ZSwgb3duZXIsIGNvbnRleHQpCiB7CiAgICAgc3dpdGNo
IChjb250ZXh0LmxheWVySG9zdGluZ01vZGUoKSkgewogICAgIGNhc2UgTGF5ZXJIb3N0aW5nTW9k
ZTo6SW5Qcm9jZXNzOgpAQCAtMTI1LDcgKzEyNSw3IEBAIFBhc3NSZWZQdHI8V2ViQ29yZTo6UGxh
dGZvcm1DQUxheWVyPiBQbGEKICAgICAgICAgY29weUNvbnRlbnRzID0gZmFsc2U7CiAgICAgfQog
Ci0gICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllclJlbW90ZT4gY2xvbmUgPSBhZG9wdFJlZihuZXcg
UGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tKGxheWVyVHlwZSgpLCBjbG9uZWRMYXllci5nZXQo
KSwgb3duZXIsICpjb250ZXh0KCkpKTsKKyAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyUmVtb3Rl
PiBjbG9uZSA9IGFkb3B0UmVmKG5ldyBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20obGF5ZXJU
eXBlKCksIHRpbGVTaXplKCksIGNsb25lZExheWVyLmdldCgpLCBvd25lciwgKmNvbnRleHQoKSkp
OwogICAgIGNvbnRleHQoKS0+bGF5ZXJXYXNDcmVhdGVkKCpjbG9uZSwgY2xvbmUtPmxheWVyVHlw
ZSgpKTsKIAogICAgIHVwZGF0ZUNsb25lZExheWVyUHJvcGVydGllcygqY2xvbmUsIGNvcHlDb250
ZW50cyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRm
b3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJh
Y2tpbmcuY3BwCShyZXZpc2lvbiAxOTA4MjgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDggKzM2LDggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi1QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmc6OlBs
YXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZyhMYXllclR5cGUgbGF5ZXJUeXBlLCBQbGF0
Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyLCBSZW1vdGVMYXllclRyZWVDb250ZXh0JiBjb250ZXh0
KQotICAgIDogUGxhdGZvcm1DQUxheWVyUmVtb3RlKGxheWVyVHlwZSwgb3duZXIsIGNvbnRleHQp
CitQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmc6OlBsYXRmb3JtQ0FMYXllclJlbW90
ZVRpbGVkQmFja2luZyhMYXllclR5cGUgbGF5ZXJUeXBlLCBjb25zdCBJbnRTaXplJiB0aWxlU2l6
ZSwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lciwgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYg
Y29udGV4dCkKKyAgICA6IFBsYXRmb3JtQ0FMYXllclJlbW90ZShsYXllclR5cGUsIHRpbGVTaXpl
LCBvd25lciwgY29udGV4dCkKICAgICAsIG1fdGlsZUNvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1
ZTxUaWxlQ29udHJvbGxlcj4odGhpcykpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZv
cm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nLmgJKHJldmlzaW9uIDE5MDgyOCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlVGls
ZWRCYWNraW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgflBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZygpOwogCiBwcml2YXRl
OgotICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFja2luZyhXZWJDb3JlOjpQbGF0Zm9y
bUNBTGF5ZXI6OkxheWVyVHlwZSwgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25l
ciwgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCYpOworICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZVRp
bGVkQmFja2luZyhXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSwgY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYgdGlsZVNpemUsIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCog
b3duZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRleHQmKTsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6
VGlsZWRCYWNraW5nKiB0aWxlZEJhY2tpbmcoKSBvdmVycmlkZSB7IHJldHVybiBtX3RpbGVDb250
cm9sbGVyLmdldCgpOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5oCShyZXZp
c2lvbiAxOTA4MjgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Jl
bW90ZUxheWVyVHJlZUNvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAgICAgLy8gV2ViQ29yZTo6R3JhcGhpY3NMYXllckZhY3RvcnkK
LSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyPiBjcmVh
dGVHcmFwaGljc0xheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlR5cGUsIFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJDbGllbnQmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyPiBjcmVhdGVHcmFwaGljc0xheWVyKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXI6OlR5cGUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHRpbGVTaXplLCBXZWJD
b3JlOjpHcmFwaGljc0xheWVyQ2xpZW50Jikgb3ZlcnJpZGU7CiAKICAgICBXZWJQYWdlJiBtX3dl
YlBhZ2U7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVt
b3RlTGF5ZXJUcmVlQ29udGV4dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZUNvbnRleHQubW0JKHJldmlzaW9uIDE5
MDgyOCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5
ZXJUcmVlQ29udGV4dC5tbQkod29ya2luZyBjb3B5KQpAQCAtOTksOSArOTksOSBAQCBib29sIFJl
bW90ZUxheWVyVHJlZUNvbnRleHQ6OmJhY2tpbmdTdG9yCiAgICAgcmV0dXJuIG1fYmFja2luZ1N0
b3JlQ29sbGVjdGlvbi5iYWNraW5nU3RvcmVXaWxsQmVEaXNwbGF5ZWQoYmFja2luZ1N0b3JlKTsK
IH0KIAotc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzTGF5ZXI+IFJlbW90ZUxheWVyVHJlZUNvbnRl
eHQ6OmNyZWF0ZUdyYXBoaWNzTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6VHlwZSBsYXll
clR5cGUsIEdyYXBoaWNzTGF5ZXJDbGllbnQmIGNsaWVudCkKK3N0ZDo6dW5pcXVlX3B0cjxHcmFw
aGljc0xheWVyPiBSZW1vdGVMYXllclRyZWVDb250ZXh0OjpjcmVhdGVHcmFwaGljc0xheWVyKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlR5cGUgbGF5ZXJUeXBlLCBjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiB0aWxlU2l6ZSwgR3JhcGhpY3NMYXllckNsaWVudCYgY2xpZW50KQogewotICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzTGF5ZXJDQVJlbW90ZT4obGF5ZXJUeXBlLCBjbGll
bnQsICp0aGlzKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHcmFwaGljc0xheWVyQ0FS
ZW1vdGU+KGxheWVyVHlwZSwgdGlsZVNpemUsIGNsaWVudCwgKnRoaXMpOwogfQogCiB2b2lkIFJl
bW90ZUxheWVyVHJlZUNvbnRleHQ6OmJ1aWxkVHJhbnNhY3Rpb24oUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBQbGF0Zm9ybUNBTGF5ZXImIHJvb3RMYXllcikKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MDgzMikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE1LTEwLTA5ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGRl
YnVnIHNldHRpbmdzIGZvciBzaW5nbGUgbGFyZ2UgdGlsZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5OTc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBBZGQgdGhlIHNpbmdsZUxhcmdlTGF5
ZXIgdG8gV2ViS2l0LgorCisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZh
dGUuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tOgorICAgICAgICAoK1tX
ZWJQcmVmZXJlbmNlcyBpbml0aWFsaXplXSk6CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIHNp
bmdsZUxhcmdlVGlsZV0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBzZXRTaW5nbGVMYXJn
ZVRpbGU6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaDoKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisKIDIwMTUtMTAtMDYgIERhbmllbCBCYXRlcyAg
PGRiYXRlc0B3ZWJraXQub3JnPgogCiAgICAgICAgIEVuYWJsZSBYU0xUIHdoZW4gYnVpbGRpbmcg
V2ViS2l0IGZvciBpT1MgdXNpbmcgdGhlIHB1YmxpYyBpT1MgU0RLCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgJKHJl
dmlzaW9uIDE5MDgyOCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5j
ZUtleXNQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMiw2ICsxMzIsNyBAQAogI2RlZmlu
ZSBXZWJLaXROb3RpZmljYXRpb25zRW5hYmxlZEtleSBAIldlYktpdE5vdGlmaWNhdGlvbnNFbmFi
bGVkIgogI2RlZmluZSBXZWJLaXRTdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmdLZXkgQCJX
ZWJLaXRTdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmciCiAjZGVmaW5lIFdlYktpdFN1YnBp
eGVsQ1NTT01FbGVtZW50TWV0cmljc0VuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0U3VicGl4
ZWxDU1NPTUVsZW1lbnRNZXRyaWNzRW5hYmxlZCIKKyNkZWZpbmUgV2ViS2l0U2luZ2xlTGFyZ2VU
aWxlUHJlZmVyZW5jZUtleSBAIldlYktpdFNpbmdsZUxhcmdlVGlsZSIKICNpZiBUQVJHRVRfT1Nf
SVBIT05FCiAjZGVmaW5lIFdlYktpdEF1ZGlvU2Vzc2lvbkNhdGVnb3J5T3ZlcnJpZGUgQCJXZWJL
aXRBdWRpb1Nlc3Npb25DYXRlZ29yeU92ZXJyaWRlIgogI2RlZmluZSBXZWJLaXRBVktpdEVuYWJs
ZWQgQCJXZWJLaXRBVktpdEVuYWJsZWQiCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlByZWZlcmVuY2VzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViUHJlZmVyZW5jZXMubW0JKHJldmlzaW9uIDE5MDgyOCkKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTUwNiw2ICs1
MDYsNyBAQCArICh2b2lkKWluaXRpYWxpemUKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhC
b29sOk5PXSwgIFdlYktpdEZvcmNlU29mdHdhcmVXZWJHTFJlbmRlcmluZ1ByZWZlcmVuY2VLZXks
CiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpOT10sICAgV2ViS2l0QWNjZWxlcmF0
ZWQyZENhbnZhc0VuYWJsZWRQcmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVy
V2l0aEJvb2w6Tk9dLCAgV2ViS2l0U3VicGl4ZWxDU1NPTUVsZW1lbnRNZXRyaWNzRW5hYmxlZFBy
ZWZlcmVuY2VLZXksCisgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpOT10sICBXZWJL
aXRTaW5nbGVMYXJnZVRpbGVQcmVmZXJlbmNlS2V5LAogI2lmIFBMQVRGT1JNKElPUykKICAgICAg
ICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10sICBXZWJLaXRGcmFtZUZsYXR0ZW5pbmdF
bmFibGVkUHJlZmVyZW5jZUtleSwKICNlbHNlCkBAIC0xOTE2LDYgKzE5MTcsMTYgQEAgLSAodm9p
ZClzZXRTdWJwaXhlbENTU09NRWxlbWVudE1ldHJpY3NFbgogICAgIFtzZWxmIF9zZXRCb29sVmFs
dWU6ZW5hYmxlZCBmb3JLZXk6V2ViS2l0U3VicGl4ZWxDU1NPTUVsZW1lbnRNZXRyaWNzRW5hYmxl
ZFByZWZlcmVuY2VLZXldOwogfQogCistIChCT09MKXNpbmdsZUxhcmdlVGlsZQoreworICAgIHJl
dHVybiBbc2VsZiBfYm9vbFZhbHVlRm9yS2V5OldlYktpdFNpbmdsZUxhcmdlVGlsZVByZWZlcmVu
Y2VLZXldOworfQorCistICh2b2lkKXNldFNpbmdsZUxhcmdlVGlsZTooQk9PTCllbmFibGVkCit7
CisgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTplbmFibGVkIGZvcktleTpXZWJLaXRTaW5nbGVMYXJn
ZVRpbGVQcmVmZXJlbmNlS2V5XTsKK30KKwogLSAoQk9PTCl3ZWJHTEVuYWJsZWQKIHsKICAgICBy
ZXR1cm4gW3NlbGYgX2Jvb2xWYWx1ZUZvcktleTpXZWJLaXRXZWJHTEVuYWJsZWRQcmVmZXJlbmNl
S2V5XTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2
YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJl
bmNlc1ByaXZhdGUuaAkocmV2aXNpb24gMTkwODI4KQorKysgU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjI3LDYgKzIy
Nyw5IEBAIEBpbnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdlYlByaXZhdGUpCiAtIChCT09MKXN1
YnBpeGVsQ1NTT01FbGVtZW50TWV0cmljc0VuYWJsZWQ7CiAtICh2b2lkKXNldFN1YnBpeGVsQ1NT
T01FbGVtZW50TWV0cmljc0VuYWJsZWQ6KEJPT0wpZW5hYmxlZDsKIAorLSAoQk9PTClzaW5nbGVM
YXJnZVRpbGU7CistICh2b2lkKXNldFNpbmdsZUxhcmdlVGlsZTooQk9PTCllbmFibGVkOworCiAt
IChCT09MKXdlYkdMRW5hYmxlZDsKIC0gKHZvaWQpc2V0V2ViR0xFbmFibGVkOihCT09MKWVuYWJs
ZWQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDE5
MDgyOCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjI4NSw2ICsyMjg1LDcgQEAgLSAodm9pZClfcHJlZmVyZW5jZXNDaGFuZ2VkOihX
ZWJQcmVmZXJlbgogICAgIHNldHRpbmdzLnNldFNob3dSZXBhaW50Q291bnRlcihbcHJlZmVyZW5j
ZXMgc2hvd1JlcGFpbnRDb3VudGVyXSk7CiAgICAgc2V0dGluZ3Muc2V0V2ViR0xFbmFibGVkKFtw
cmVmZXJlbmNlcyB3ZWJHTEVuYWJsZWRdKTsKICAgICBzZXR0aW5ncy5zZXRTdWJwaXhlbENTU09N
RWxlbWVudE1ldHJpY3NFbmFibGVkKFtwcmVmZXJlbmNlcyBzdWJwaXhlbENTU09NRWxlbWVudE1l
dHJpY3NFbmFibGVkXSk7CisgICAgc2V0dGluZ3Muc2V0U2luZ2xlTGFyZ2VUaWxlKFtwcmVmZXJl
bmNlcyBzaW5nbGVMYXJnZVRpbGVdKTsKIAogICAgIHNldHRpbmdzLnNldEZvcmNlU29mdHdhcmVX
ZWJHTFJlbmRlcmluZyhbcHJlZmVyZW5jZXMgZm9yY2VTb2Z0d2FyZVdlYkdMUmVuZGVyaW5nXSk7
CiAgICAgc2V0dGluZ3Muc2V0QWNjZWxlcmF0ZWQyZENhbnZhc0VuYWJsZWQoW3ByZWZlcmVuY2Vz
IGFjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVkXSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262816</attachid>
            <date>2015-10-09 21:19:43 -0700</date>
            <delta_ts>2015-10-09 21:41:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149977-20151009211909.patch</filename>
            <type>text/plain</type>
            <size>23885</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MDgyOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU5IEBACisyMDE1LTEwLTA5ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGRlYnVn
IHNldHRpbmdzIGZvciBzaW5nbGUgbGFyZ2UgdGlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5OTc3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8y
MzAxNzA5Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAg
CisgICAgICAgIEluc3RlYWQgb2YgY3JlYXRpbmcgdGhlIEdyYXBoaWNzTGF5ZXIgd2l0aCBhIGZp
eGVkIHNpemUgNTEyeDUxMiwgd2UgbmVlZAorICAgICAgICB0byByZWFkIHRoZSBzaW5nbGVMYXJn
ZUxheWVyIHNldHRpbmcuIElmIGl0cyB2YWx1ZSBpcyB0cnVlLCB3ZSBzZXQgdGhlCisgICAgICAg
IGxheWVyIHRpbGVTaXplIHRvIDQwOTZ4NDA5Ni4KKworICAgICAgICAqIHBhZ2UvU2V0dGluZ3Mu
aW46CisgICAgICAgIERlZmluZSB0aGUgbmFtZSBvZiB0aGUgc2V0dGluZyBhbmQgaXRzIGRlZmF1
bHQgdmFsdWUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpzZXRUaWxlU2l6ZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjp0aWxlU2l6ZSk6CisgICAgICAgIERlZmluZSB0aGUg
dGlsZVNpemUoKSB2aXJ0dWFsIGZ1bmN0aW9ucyBpbiB0aGUgYmFzZSBjbGFzcy4KKworICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUaWxlUGhhc2UpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6Y29udGVudHNUaWxlUGhhc2UpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUaWxl
U2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpjb250ZW50
c1RpbGVTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6Omhh
c0NvbnRlbnRzVGlsaW5nKTogRGVsZXRlZC4KKyAgICAgICAgRGVsZXRlIHVudXNlZCBmdW5jdGlv
bnMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmcuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OmRlZmF1bHRUaWxlU2l6ZSk6CisgICAgICAgIERlZmluZSB0aGUgZGVmYXVs
dCB0aWxlU2l6ZSB3aGljaCB3aWxsIGRlcGVuZCBvbiB0aGUgc2luZ2xlTGFyZ2VUaWxlIHNldHRp
bmcuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5
ZXJDQS5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpwbGF0Zm9ybUNBTGF5
ZXIpOgorICAgICAgICBPdmVycmlkZSB0aGUgdGlsZVNpemUgZnVuY3Rpb25zIGFuZCBtYWtlIHRo
ZW0gZGVsZWdhdGUgdGhlIGNhbGxzIHRvIHRoZQorICAgICAgICBQbGF0Zm9ybUxheWVyIG1lbWJl
ci4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxh
eWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6UGxhdGZvcm1DQUxh
eWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaDoK
KyAgICAgICAgVGhlIHRpbGVTaXplIHdpbGwgc3RvcmVkIG9ubHkgaW4gdGhlIFBsYXRmb3JtQ0FM
YXllci4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OlRpbGVDb250cm9s
bGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oOgor
ICAgICAgICBHZXQgdGhlIHRpbGVTaXplIGZyb20gdGhlIGFzc29jaWF0ZWQgcm9vdExheWVyLgor
ICAgICAgICAKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dGlsZVNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpjcmVhdGVHcmFwaGljc0xheWVyKTogICAgICAg
IAorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpzZXRUaWxlZEJhY2tpbmdI
YXNNYXJnaW5zKToKKyAgICAgICAgU2V0IHRoZSB0aWxlU2l6ZSBvZiB0aGUgR3JhcGhpY3NMYXll
ciBiYXNlZCBvbiB0aGUgc2luZ2xlTGFyZ2VUaWxlIHNldHRpbmcuCisgICAgICAgIAorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpyZXNldENvbnRlbnRzUmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZURyYXdzQ29udGVudCk6Cisg
ICAgICAgIFJlbW92ZSB1bm5lY2Vzc2FyeSBjYWxscy4KKwogMjAxNS0xMC0wOSAgQW5kZXJzIENh
cmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBoYWNrIHRoYXQg
YWxsb3dlZCBwbHVnLWlucyB0byBhbHdheXMgdGFrZSBvdmVyIGNlcnRhaW4gaW1hZ2UgZm9ybWF0
cwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluCShyZXZpc2lvbiAxOTA4MjgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMDEsNiArMjAx
LDggQEAgc2ltcGxlTGluZUxheW91dERlYnVnQm9yZGVyc0VuYWJsZWQgaW5pdAogCiBzdWJwaXhl
bENTU09NRWxlbWVudE1ldHJpY3NFbmFibGVkIGluaXRpYWw9ZmFsc2UKIAorc2luZ2xlTGFyZ2VU
aWxlIGluaXRpYWw9ZmFsc2UKKwogbWVkaWFTb3VyY2VFbmFibGVkIGluaXRpYWw9dHJ1ZSwgY29u
ZGl0aW9uYWw9TUVESUFfU09VUkNFCiAKICMgRklYTUU6IFJlbmFtZSB0byBhbGxvd011bHRpRWxl
bWVudEltcGxpY2l0Rm9ybVN1Ym1pc3Npb24gb25jZSB3ZSB1cHN0cmVhbSB0aGUgaU9TIGNoYW5n
ZXMgdG8gV2ViVmlldy5tbS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0xheWVyLmgJKHJldmlzaW9uIDE5MDgyOCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJQYXRoLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgorI2luY2x1ZGUgIlRpbGVkQmFj
a2luZy5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybU9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJXaW5k
UnVsZS5oIgogI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KQEAgLTIyOCwxMyArMjI5LDE2IEBA
IHB1YmxpYzoKICAgICAgICAgU2Nyb2xsaW5nLAogICAgICAgICBTaGFwZQogICAgIH07Ci0gICAg
CisKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzTGF5
ZXI+IGNyZWF0ZShHcmFwaGljc0xheWVyRmFjdG9yeSosIEdyYXBoaWNzTGF5ZXJDbGllbnQmLCBU
eXBlID0gVHlwZTo6Tm9ybWFsKTsKICAgICAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5H
cmFwaGljc0xheWVyKCk7CiAgICAgCiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90
eXBlOyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGlsZVNpemUoY29uc3QgSW50U2l6ZSYpIHsg
fQorICAgIHZpcnR1YWwgSW50U2l6ZSB0aWxlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGRlZmF1bHRU
aWxlU2l6ZSgpOyB9CisKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZShUeXBlKSB7IH0KIAog
ICAgIHR5cGVkZWYgdWludDY0X3QgUGxhdGZvcm1MYXllcklEOwpAQCAtMzkzLDE0ICszOTcsNiBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNOZWVkc0Rpc3BsYXkoKSB7
IH07CiAKLSAgICAvLyBUaGUgdGlsZSBwaGFzZSBpcyByZWxhdGl2ZSB0byB0aGUgR3JhcGhpY3NM
YXllciBib3VuZHMuCi0gICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVGlsZVBoYXNlKGNvbnN0
IEZsb2F0U2l6ZSYgcCkgeyBtX2NvbnRlbnRzVGlsZVBoYXNlID0gcDsgfQotICAgIEZsb2F0U2l6
ZSBjb250ZW50c1RpbGVQaGFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNUaWxlUGhhc2U7
IH0KLQotICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RpbGVTaXplKGNvbnN0IEZsb2F0U2l6
ZSYgcykgeyBtX2NvbnRlbnRzVGlsZVNpemUgPSBzOyB9Ci0gICAgRmxvYXRTaXplIGNvbnRlbnRz
VGlsZVNpemUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzVGlsZVNpemU7IH0KLSAgICBib29s
IGhhc0NvbnRlbnRzVGlsaW5nKCkgY29uc3QgeyByZXR1cm4gIW1fY29udGVudHNUaWxlU2l6ZS5p
c0VtcHR5KCk7IH0KLQogICAgIC8vIFNldCB0aGF0IHRoZSBwb3NpdGlvbi9zaXplIG9mIHRoZSBj
b250ZW50cyAoaW1hZ2Ugb3IgdmlkZW8pLgogICAgIEZsb2F0UmVjdCBjb250ZW50c1JlY3QoKSBj
b25zdCB7IHJldHVybiBtX2NvbnRlbnRzUmVjdDsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250
ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0JiByKSB7IG1fY29udGVudHNSZWN0ID0gcjsgfQpAQCAt
NjI3LDggKzYyMyw2IEBAIHByb3RlY3RlZDoKICAgICBGbG9hdFJlY3QgbV9jb250ZW50c1JlY3Q7
CiAgICAgRmxvYXRSb3VuZGVkUmVjdCBtX2NvbnRlbnRzQ2xpcHBpbmdSZWN0OwogICAgIEZsb2F0
Um91bmRlZFJlY3QgbV9tYXNrc1RvQm91bmRzUmVjdDsKLSAgICBGbG9hdFNpemUgbV9jb250ZW50
c1RpbGVQaGFzZTsKLSAgICBGbG9hdFNpemUgbV9jb250ZW50c1RpbGVTaXplOwogICAgIEZsb2F0
UmVjdCBtX2JhY2tkcm9wRmlsdGVyc1JlY3Q7CiAKICAgICBpbnQgbV9yZXBhaW50Q291bnQ7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmcu
aAkocmV2aXNpb24gMTkwODI4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
VGlsZWRCYWNraW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDkgKzI4LDIwIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGNvbnN0IGludCBkZWZhdWx0VGlsZVdpZHRoID0gNTEy
Owotc3RhdGljIGNvbnN0IGludCBkZWZhdWx0VGlsZUhlaWdodCA9IDUxMjsKK2lubGluZSBzdGF0
aWMgSW50U2l6ZSBkZWZhdWx0VGlsZVNpemUoYm9vbCBzaW5nbGVMYXJnZVRpbGUgPSBmYWxzZSkK
K3sKKyAgICAvLyBUaGUgd2lkdGggYW5kIGhlaWdodCBvZiBhIHNpbmdsZSB0aWxlIGluIGEgdGls
ZWQgbGF5ZXIuIFNob3VsZCBiZSBsYXJnZSBlbm91Z2ggdG8KKyAgICAvLyBhdm9pZCBsb3RzIG9m
IHNtYWxsIHRpbGVzIChhbmQgdGhlcmVmb3JlIGxvdHMgb2YgZHJhd2luZyBjYWxsYmFja3MpLCBi
dXQgc21hbGwgZW5vdWdoCisgICAgLy8gdG8ga2VlcCB0aGUgb3ZlcmFsbCB0aWxlIGNvc3QgbG93
LgorICAgIHN0YXRpYyBjb25zdCBpbnQga1RpbGVkTGF5ZXJUaWxlU2l6ZSA9IDUxMjsKKworICAg
IC8vIFRoaXMgaXMgYW4gZXhwZXJpbWVudGFsIHZhbHVlIGZvciBUZGVidWdnaW5nIGFuZCBldmFs
dWF0aW5nIHRoZSBvdmVyaGVhZCB3aGljaCBtYXkgYmUKKyAgICAvLyBpbmN1cnJlZCBkdWUgdG8g
YSBsYXJnZSB0aWxlIHNpemUuCisgICAgc3RhdGljIGNvbnN0IGludCBrTGFyZ2VUaWxlZExheWVy
VGlsZVNpemUgPSA0MDk2OwogCisgICAgcmV0dXJuIHNpbmdsZUxhcmdlVGlsZSA/IEludFNpemUo
a0xhcmdlVGlsZWRMYXllclRpbGVTaXplLCBrTGFyZ2VUaWxlZExheWVyVGlsZVNpemUpIDogSW50
U2l6ZShrVGlsZWRMYXllclRpbGVTaXplLCBrVGlsZWRMYXllclRpbGVTaXplKTsKK30KKyAgICAK
IGNsYXNzIEludFJlY3Q7CiBjbGFzcyBQbGF0Zm9ybUNBTGF5ZXI7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5o
CShyZXZpc2lvbiAxOTA4MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9HcmFwaGljc0xheWVyQ0EuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTAgKzQ3LDYgQEAgY2xh
c3MgVHJhbnNmb3JtU3RhdGU7CiAKIGNsYXNzIEdyYXBoaWNzTGF5ZXJDQSA6IHB1YmxpYyBHcmFw
aGljc0xheWVyLCBwdWJsaWMgUGxhdGZvcm1DQUxheWVyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICAv
LyBUaGUgd2lkdGggYW5kIGhlaWdodCBvZiBhIHNpbmdsZSB0aWxlIGluIGEgdGlsZWQgbGF5ZXIu
IFNob3VsZCBiZSBsYXJnZSBlbm91Z2ggdG8KLSAgICAvLyBhdm9pZCBsb3RzIG9mIHNtYWxsIHRp
bGVzIChhbmQgdGhlcmVmb3JlIGxvdHMgb2YgZHJhd2luZyBjYWxsYmFja3MpLCBidXQgc21hbGwg
ZW5vdWdoCi0gICAgLy8gdG8ga2VlcCB0aGUgb3ZlcmFsbCB0aWxlIGNvc3QgbG93LgotICAgIHN0
YXRpYyBjb25zdCBpbnQga1RpbGVkTGF5ZXJUaWxlU2l6ZSA9IDUxMjsKIAogICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IEdyYXBoaWNzTGF5ZXJDQShUeXBlLCBHcmFwaGljc0xheWVyQ2xpZW50
Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+R3JhcGhpY3NMYXllckNBKCk7CkBAIC02
NCw2ICs2MCw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFBsYXRmb3Jt
TGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKICAgICBQbGF0Zm9ybUNBTGF5
ZXIqIHBsYXRmb3JtQ0FMYXllcigpIGNvbnN0IHsgcmV0dXJuIHByaW1hcnlMYXllcigpOyB9CiAK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0VGlsZVNpemUoY29uc3QgSW50U2l6ZSYgdGlsZVNpemUpIG92
ZXJyaWRlIHsgcHJpbWFyeUxheWVyKCktPnNldFRpbGVTaXplKHRpbGVTaXplKTsgfQorICAgIHZp
cnR1YWwgSW50U2l6ZSB0aWxlU2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHByaW1hcnlM
YXllcigpLT50aWxlU2l6ZSgpOyB9CisKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIGJvb2wg
c2V0Q2hpbGRyZW4oY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYpIG92ZXJyaWRlOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChHcmFwaGljc0xheWVyKikgb3Zl
cnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGFkZENoaWxkQXRJbmRleChH
cmFwaGljc0xheWVyKiwgaW50IGluZGV4KSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcAko
cmV2aXNpb24gMTkwODI4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
UGxhdGZvcm1DQUxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQCBjb25z
dCBmbG9hdCBQbGF0Zm9ybUNBTGF5ZXI6OndlYkxheWVyV2FzCiAKIFBsYXRmb3JtQ0FMYXllcjo6
UGxhdGZvcm1DQUxheWVyKExheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3JtQ0FMYXllckNsaWVu
dCogb3duZXIpCiAgICAgOiBtX2xheWVyVHlwZShsYXllclR5cGUpCisgICAgLCBtX3RpbGVTaXpl
KGRlZmF1bHRUaWxlU2l6ZSgpKQogICAgICwgbV9sYXllcklEKGdlbmVyYXRlTGF5ZXJJRCgpKQog
ICAgICwgbV9vd25lcihvd25lcikKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oCShyZXZpc2lvbiAxOTA4Mjgp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDYgKzExNSw5IEBAIHB1YmxpYzoKIAogICAgIExheWVy
VHlwZSBsYXllclR5cGUoKSBjb25zdCB7IHJldHVybiBtX2xheWVyVHlwZTsgfQogCisgICAgdm9p
ZCBzZXRUaWxlU2l6ZShjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSkgeyBtX3RpbGVTaXplID0gdGls
ZVNpemU7IH0KKyAgICBJbnRTaXplIHRpbGVTaXplKCkgY29uc3QgeyByZXR1cm4gbV90aWxlU2l6
ZTsgfQorCiAgICAgdmlydHVhbCBQbGF0Zm9ybUNBTGF5ZXIqIHN1cGVybGF5ZXIoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUZyb21TdXBlcmxheWVyKCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRTdWJsYXllcnMoY29uc3QgUGxhdGZvcm1DQUxheWVyTGlzdCYpID0gMDsK
QEAgLTI3NSw2ICsyNzgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBMYXllclBvb2wmIGxh
eWVyUG9vbCgpOwogCiAgICAgY29uc3QgTGF5ZXJUeXBlIG1fbGF5ZXJUeXBlOworICAgIEludFNp
emUgbV90aWxlU2l6ZTsKICAgICBjb25zdCBHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQg
bV9sYXllcklEOwogICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBtX2xheWVyOwogICAgIFBs
YXRmb3JtQ0FMYXllckNsaWVudCogbV9vd25lcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAJKHJldmlzaW9u
IDE5MDgyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250
cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNiBAQCBTdHJpbmcgVGlsZUNv
bnRyb2xsZXI6Onpvb21lZE91dFRpbGVHcmlkCiBUaWxlQ29udHJvbGxlcjo6VGlsZUNvbnRyb2xs
ZXIoUGxhdGZvcm1DQUxheWVyKiByb290UGxhdGZvcm1MYXllcikKICAgICA6IG1fdGlsZUNhY2hl
TGF5ZXIocm9vdFBsYXRmb3JtTGF5ZXIpCiAgICAgLCBtX3RpbGVHcmlkKHN0ZDo6bWFrZV91bmlx
dWU8VGlsZUdyaWQ+KCp0aGlzKSkKLSAgICAsIG1fdGlsZVNpemUoZGVmYXVsdFRpbGVXaWR0aCwg
ZGVmYXVsdFRpbGVIZWlnaHQpCiAgICAgLCBtX3RpbGVSZXZhbGlkYXRpb25UaW1lcigqdGhpcywg
JlRpbGVDb250cm9sbGVyOjp0aWxlUmV2YWxpZGF0aW9uVGltZXJGaXJlZCkKICAgICAsIG1fem9v
bWVkT3V0Q29udGVudHNTY2FsZSgwKQogICAgICwgbV9kZXZpY2VTY2FsZUZhY3Rvcihvd25pbmdH
cmFwaGljc0xheWVyKCktPnBsYXRmb3JtQ0FMYXllckRldmljZVNjYWxlRmFjdG9yKCkpCkBAIC0z
MjgsOCArMzI3LDggQEAgRmxvYXRSZWN0IFRpbGVDb250cm9sbGVyOjpjb21wdXRlVGlsZUNvdgog
ICAgIGlmIChtX3RpbGVDb3ZlcmFnZSA9PSBDb3ZlcmFnZUZvclZpc2libGVBcmVhIHx8IE1lbW9y
eVByZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9uKCkuaXNVbmRlck1lbW9yeVByZXNzdXJlKCkpCiAg
ICAgICAgIHJldHVybiB2aXNpYmxlUmVjdDsKIAotICAgIGRvdWJsZSBob3Jpem9udGFsTWFyZ2lu
ID0gZGVmYXVsdFRpbGVXaWR0aCAvIGNvbnRlbnRzU2NhbGU7Ci0gICAgZG91YmxlIHZlcnRpY2Fs
TWFyZ2luID0gZGVmYXVsdFRpbGVIZWlnaHQgLyBjb250ZW50c1NjYWxlOworICAgIGRvdWJsZSBo
b3Jpem9udGFsTWFyZ2luID0gdGlsZVNpemUoKS53aWR0aCgpIC8gY29udGVudHNTY2FsZTsKKyAg
ICBkb3VibGUgdmVydGljYWxNYXJnaW4gPSB0aWxlU2l6ZSgpLmhlaWdodCgpIC8gY29udGVudHNT
Y2FsZTsKIAogICAgIGRvdWJsZSBjdXJyZW50VGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5n
VGltZSgpOwogICAgIGRvdWJsZSB0aW1lRGVsdGEgPSBjdXJyZW50VGltZSAtIG1fdmVsb2NpdHku
bGFzdFVwZGF0ZVRpbWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9UaWxlQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmgJKHJldmlzaW9uIDE5MDgyOCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgIGZsb2F0IHRpbGVEZWJ1Z0JvcmRl
cldpZHRoKCkgY29uc3QgeyByZXR1cm4gbV90aWxlRGVidWdCb3JkZXJXaWR0aDsgfQogICAgIFNj
cm9sbGluZ01vZGVJbmRpY2F0aW9uIGluZGljYXRvck1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lu
ZGljYXRvck1vZGU7IH0KIAotICAgIHZpcnR1YWwgSW50U2l6ZSB0aWxlU2l6ZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fdGlsZVNpemU7IH0KKyAgICB2aXJ0dWFsIEludFNpemUgdGlsZVNp
emUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByb290TGF5ZXIoKS50aWxlU2l6ZSgpOyB9CiAg
ICAgdmlydHVhbCBJbnRSZWN0IGJvdW5kcygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
SW50UmVjdCBib3VuZHNXaXRob3V0TWFyZ2luKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCBib29sIGhhc01hcmdpbnMoKSBjb25zdCBvdmVycmlkZTsKQEAgLTE3NSw3ICsxNzUsNiBAQCBw
cml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxUaWxlR3JpZD4gbV90aWxlR3JpZDsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8VGlsZUdyaWQ+IG1fem9vbWVkT3V0VGlsZUdyaWQ7CiAKLSAgICBJbnRT
aXplIG1fdGlsZVNpemU7CiAgICAgRmxvYXRSZWN0IG1fdmlzaWJsZVJlY3Q7IC8vIE9ubHkgdXNl
ZCBmb3Igc2Nyb2xsIHBlcmZvcm1hbmNlIGxvZ2dpbmcuCiAgICAgRmxvYXRSZWN0IG1fY292ZXJh
Z2VSZWN0OwogICAgIEludFJlY3QgbV9ib3VuZHNBdExhc3RSZXZhbGlkYXRlOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJKHJldmlz
aW9uIDE5MDgyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEsNiArMTYxLDExIEBAIHZvaWQgUmVuZGVyTGF5
ZXJCYWNraW5nOjp3aWxsRGVzdHJveUxheWUKICAgICAgICAgY29tcG9zaXRvcigpLmxheWVyVGls
ZWRCYWNraW5nVXNhZ2VDaGFuZ2VkKGxheWVyLCBmYWxzZSk7CiB9CiAKK0ludFNpemUgUmVuZGVy
TGF5ZXJCYWNraW5nOjp0aWxlU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGRlZmF1bHRUaWxl
U2l6ZShyZW5kZXJlcigpLmZyYW1lKCkucGFnZSgpLT5zZXR0aW5ncygpLnNpbmdsZUxhcmdlVGls
ZSgpKTsKK30KKwogc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzTGF5ZXI+IFJlbmRlckxheWVyQmFj
a2luZzo6Y3JlYXRlR3JhcGhpY3NMYXllcihjb25zdCBTdHJpbmcmIG5hbWUsIEdyYXBoaWNzTGF5
ZXI6OlR5cGUgbGF5ZXJUeXBlKQogewogICAgIEdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBncmFwaGlj
c0xheWVyRmFjdG9yeSA9IDA7CkBAIC0xNjgsNiArMTczLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdy
YXBoaWNzTGF5ZXI+IFJlbmRlckxheQogICAgICAgICBncmFwaGljc0xheWVyRmFjdG9yeSA9IHBh
Z2UtPmNocm9tZSgpLmNsaWVudCgpLmdyYXBoaWNzTGF5ZXJGYWN0b3J5KCk7CiAKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8R3JhcGhpY3NMYXllcj4gZ3JhcGhpY3NMYXllciA9IEdyYXBoaWNzTGF5ZXI6
OmNyZWF0ZShncmFwaGljc0xheWVyRmFjdG9yeSwgKnRoaXMsIGxheWVyVHlwZSk7CisgICAgZ3Jh
cGhpY3NMYXllci0+c2V0VGlsZVNpemUodGlsZVNpemUoKSk7CiAKICNpZiBFTkFCTEUoVFJFRV9E
RUJVR0dJTkcpCiAgICAgZ3JhcGhpY3NMYXllci0+c2V0TmFtZShuYW1lKTsKQEAgLTIyMyw4ICsy
MjksOCBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6c2V0VGlsZWRCYWNraW5nCiAgICAgaWYg
KCFtX3VzaW5nVGlsZWRDYWNoZUxheWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBpbnQgbWFy
Z2luTGVmdEFuZFJpZ2h0U2l6ZSA9IGhhc0V4dGVuZGVkQmFja2dyb3VuZE9uTGVmdEFuZFJpZ2h0
ID8gZGVmYXVsdFRpbGVXaWR0aCA6IDA7Ci0gICAgaW50IG1hcmdpblRvcEFuZEJvdHRvbVNpemUg
PSBoYXNFeHRlbmRlZEJhY2tncm91bmRPblRvcEFuZEJvdHRvbSA/IGRlZmF1bHRUaWxlSGVpZ2h0
IDogMDsKKyAgICBpbnQgbWFyZ2luTGVmdEFuZFJpZ2h0U2l6ZSA9IGhhc0V4dGVuZGVkQmFja2dy
b3VuZE9uTGVmdEFuZFJpZ2h0ID8gdGlsZVNpemUoKS53aWR0aCgpIDogMDsKKyAgICBpbnQgbWFy
Z2luVG9wQW5kQm90dG9tU2l6ZSA9IGhhc0V4dGVuZGVkQmFja2dyb3VuZE9uVG9wQW5kQm90dG9t
ID8gdGlsZVNpemUoKS5oZWlnaHQoKSA6IDA7CiAgICAgdGlsZWRCYWNraW5nKCktPnNldFRpbGVN
YXJnaW5zKG1hcmdpblRvcEFuZEJvdHRvbVNpemUsIG1hcmdpblRvcEFuZEJvdHRvbVNpemUsIG1h
cmdpbkxlZnRBbmRSaWdodFNpemUsIG1hcmdpbkxlZnRBbmRSaWdodFNpemUpOwogfQogCkBAIC0x
MTg1LDkgKzExOTEsNiBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6cmVzZXRDb250ZW50c1Jl
CiAgICAgICAgIGNvbnRlbnRzQ2xpcHBpbmdSZWN0Lm1vdmUoY29udGVudE9mZnNldEluQ29tcG9z
dGluZ0xheWVyKCkpOwogICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzQ2xpcHBp
bmdSZWN0KGNvbnRlbnRzQ2xpcHBpbmdSZWN0KTsKICAgICB9Ci0KLSAgICBtX2dyYXBoaWNzTGF5
ZXItPnNldENvbnRlbnRzVGlsZVNpemUoSW50U2l6ZSgpKTsKLSAgICBtX2dyYXBoaWNzTGF5ZXIt
PnNldENvbnRlbnRzVGlsZVBoYXNlKEludFNpemUoKSk7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXJC
YWNraW5nOjp1cGRhdGVEcmF3c0NvbnRlbnQoKQpAQCAtMTc0Niw4ICsxNzQ5LDYgQEAgdm9pZCBS
ZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZURpcmVjdGx5QwogICAgIFJlZlB0cjxJbWFnZT4gaW1h
Z2UgPSBzdHlsZS5iYWNrZ3JvdW5kTGF5ZXJzKCktPmltYWdlKCktPmNhY2hlZEltYWdlKCktPmlt
YWdlKCk7CiAgICAgLy8gRklYTUU6IGFic29sdXRlIHBhaW50IGxvY2F0aW9uIGlzIHJlcXVpcmVk
IGhlcmUuCiAgICAgZG93bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJlcigpKS5nZXRHZW9tZXRyeUZv
ckJhY2tncm91bmRJbWFnZSgmcmVuZGVyZXIoKSwgTGF5b3V0UG9pbnQoKSwgZGVzdFJlY3QsIHBo
YXNlLCB0aWxlU2l6ZSk7Ci0gICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1RpbGVTaXpl
KHRpbGVTaXplKTsKLSAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVGlsZVBoYXNlKHBo
YXNlKTsKICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzUmVjdChkZXN0UmVjdCk7CiAg
ICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c0NsaXBwaW5nUmVjdChGbG9hdFJvdW5kZWRS
ZWN0KGRlc3RSZWN0KSk7CiAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1RvSW1hZ2Uo
aW1hZ2UuZ2V0KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuaAkocmV2aXNpb24gMTkwODI4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTcsNiArMjU3LDcg
QEAgcHJpdmF0ZToKICAgICBSZW5kZXJMYXllck1vZGVsT2JqZWN0JiByZW5kZXJlcigpIGNvbnN0
IHsgcmV0dXJuIG1fb3duaW5nTGF5ZXIucmVuZGVyZXIoKTsgfQogICAgIFJlbmRlckJveCogcmVu
ZGVyQm94KCkgY29uc3QgeyByZXR1cm4gbV9vd25pbmdMYXllci5yZW5kZXJCb3goKTsgfQogICAg
IFJlbmRlckxheWVyQ29tcG9zaXRvciYgY29tcG9zaXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fb3du
aW5nTGF5ZXIuY29tcG9zaXRvcigpOyB9CisgICAgSW50U2l6ZSB0aWxlU2l6ZSgpIGNvbnN0Owog
CiAgICAgdm9pZCB1cGRhdGVJbnRlcm5hbEhpZXJhcmNoeSgpOwogICAgIGJvb2wgdXBkYXRlQW5j
ZXN0b3JDbGlwcGluZ0xheWVyKGJvb2wgbmVlZHNBbmNlc3RvckNsaXApOwpJbmRleDogU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwkocmV2aXNpb24gMTkwODI4KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTUtMTAtMDkgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgZGVidWcgc2V0dGluZ3MgZm9y
IHNpbmdsZSBsYXJnZSB0aWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDk5NzcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIzMDE3MDkzPiAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9X
ZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dL
UHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldFNpbmdsZUxhcmdlVGls
ZSk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzR2V0U2luZ2xlTGFyZ2VUaWxlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnVwZGF0ZVByZWZlcmVuY2VzKToKKwogMjAxNS0xMC0wOSAgQmV0aCBEYWtpbiAgPGJkYWtpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgQnVpbGQgZml4LgpJbmRleDogU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oCShyZXZpc2lvbiAxOTA4Mjgp
CisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xODgsNiArMTg4LDcgQEAKICAgICBtYWNybyhUaHJlYWRlZFNjcm9s
bGluZ0VuYWJsZWQsIHRocmVhZGVkU2Nyb2xsaW5nRW5hYmxlZCwgQm9vbCwgYm9vbCwgdHJ1ZSkg
XAogICAgIG1hY3JvKFNpbXBsZUxpbmVMYXlvdXRFbmFibGVkLCBzaW1wbGVMaW5lTGF5b3V0RW5h
YmxlZCwgQm9vbCwgYm9vbCwgdHJ1ZSkgXAogICAgIG1hY3JvKFN1YnBpeGVsQ1NTT01FbGVtZW50
TWV0cmljc0VuYWJsZWQsIHN1YnBpeGVsQ1NTT01FbGVtZW50TWV0cmljc0VuYWJsZWQsIEJvb2ws
IGJvb2wsIGZhbHNlKSBcCisgICAgbWFjcm8oU2luZ2xlTGFyZ2VUaWxlLCBzaW5nbGVMYXJnZVRp
bGUsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCiAgICAgbWFjcm8oTWVkaWFTdHJlYW1FbmFibGVkLCBt
ZWRpYVN0cmVhbUVuYWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCiAgICAgbWFjcm8oVXNlTGVn
YWN5VGV4dEFsaWduUG9zaXRpb25lZEVsZW1lbnRCZWhhdmlvciwgdXNlTGVnYWN5VGV4dEFsaWdu
UG9zaXRpb25lZEVsZW1lbnRCZWhhdmlvciwgQm9vbCwgYm9vbCwgZmFsc2UpIFwKICAgICBtYWNy
byhTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQsIHNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZCwgQm9v
bCwgYm9vbCwgZmFsc2UpIFwKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1ByZWZlcmVuY2VzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAJKHJldmlzaW9uIDE5MDgyOCkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTIxNyw2ICsxMjE3LDE2IEBAIGJvb2wgV0tQcmVmZXJlbmNlc0dldFN1YnBpeGVsQ1NTT01FbGVt
ZW4KICAgICByZXR1cm4gdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c3VicGl4ZWxDU1NPTUVsZW1l
bnRNZXRyaWNzRW5hYmxlZCgpOwogfQogCit2b2lkIFdLUHJlZmVyZW5jZXNTZXRTaW5nbGVMYXJn
ZVRpbGUoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCBmbGFnKQoreworICAg
IHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNldFNpbmdsZUxhcmdlVGlsZShmbGFnKTsKK30KKwor
Ym9vbCBXS1ByZWZlcmVuY2VzR2V0U2luZ2xlTGFyZ2VUaWxlKFdLUHJlZmVyZW5jZXNSZWYgcHJl
ZmVyZW5jZXNSZWYpCit7CisgICAgcmV0dXJuIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNpbmds
ZUxhcmdlVGlsZSgpOworfQorCiB2b2lkIFdLUHJlZmVyZW5jZXNTZXRNZWRpYVN0cmVhbUVuYWJs
ZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCBlbmFibGVkKQogewogICAg
IHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNldE1lZGlhU3RyZWFtRW5hYmxlZChlbmFibGVkKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJp
dmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1By
ZWZlcmVuY2VzUmVmUHJpdmF0ZS5oCShyZXZpc2lvbiAxOTA4MjgpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMzEzLDYgKzMxMywxMCBAQCBXS19FWFBPUlQgYm9vbCBXS1ByZWZlcmVuY2VzR2V0TmV3
QmxvY2tJCiBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0U3VicGl4ZWxDU1NPTUVsZW1l
bnRNZXRyaWNzRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmLCBib29sKTsKIFdLX0VYUE9SVCBib29s
IFdLUHJlZmVyZW5jZXNHZXRTdWJwaXhlbENTU09NRWxlbWVudE1ldHJpY3NFbmFibGVkKFdLUHJl
ZmVyZW5jZXNSZWYpOwogCisvLyBEZWZhdWx0cyB0byBmYWxzZS4KK1dLX0VYUE9SVCB2b2lkIFdL
UHJlZmVyZW5jZXNTZXRTaW5nbGVMYXJnZVRpbGUoV0tQcmVmZXJlbmNlc1JlZiwgYm9vbCk7CitX
S19FWFBPUlQgYm9vbCBXS1ByZWZlcmVuY2VzR2V0U2luZ2xlTGFyZ2VUaWxlKFdLUHJlZmVyZW5j
ZXNSZWYpOworCiBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzUmVzZXRUZXN0UnVubmVyT3Zl
cnJpZGVzKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpOwogCiAvLyBEZWZhdWx0cyB0
byBmYWxzZS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAJKHJldmlzaW9uIDE5MDgyOCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjczOCw2ICsyNzM4LDcgQEAg
dm9pZCBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZQogICAgIHNldHRpbmdzLnNl
dFNob3dSZXBhaW50Q291bnRlcihzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5j
ZXNLZXk6OmNvbXBvc2l0aW5nUmVwYWludENvdW50ZXJzVmlzaWJsZUtleSgpKSk7CiAgICAgc2V0
dGluZ3Muc2V0U2hvd1RpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yKHN0b3JlLmdldEJvb2xWYWx1ZUZv
cktleShXZWJQcmVmZXJlbmNlc0tleTo6dGlsZWRTY3JvbGxpbmdJbmRpY2F0b3JWaXNpYmxlS2V5
KCkpKTsKICAgICBzZXR0aW5ncy5zZXRWaXNpYmxlRGVidWdPdmVybGF5UmVnaW9ucyhzdG9yZS5n
ZXRVSW50MzJWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6dmlzaWJsZURlYnVnT3Zlcmxh
eVJlZ2lvbnNLZXkoKSkpOworICAgIHNldHRpbmdzLnNldFNpbmdsZUxhcmdlVGlsZShzdG9yZS5n
ZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnNpbmdsZUxhcmdlVGlsZUtleSgp
KSk7CiAgICAgCiAgICAgc2V0dGluZ3Muc2V0QWdncmVzc2l2ZVRpbGVSZXRlbnRpb25FbmFibGVk
KHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6YWdncmVzc2l2ZVRp
bGVSZXRlbnRpb25FbmFibGVkS2V5KCkpKTsKICAgICBzZXR0aW5ncy5zZXRUZW1wb3JhcnlUaWxl
Q29ob3J0UmV0ZW50aW9uRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVy
ZW5jZXNLZXk6OnRlbXBvcmFyeVRpbGVDb2hvcnRSZXRlbnRpb25FbmFibGVkS2V5KCkpKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MDgzNSkKKysrIFNvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE1LTEwLTA5ICBT
YWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRk
IGRlYnVnIHNldHRpbmdzIGZvciBzaW5nbGUgbGFyZ2UgdGlsZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5OTc3CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8yMzAxNzA5Mz4gCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oOgorICAgICAgICAq
IFdlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW06CisgICAgICAgICgrW1dlYlByZWZlcmVuY2VzIGlu
aXRpYWxpemVdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgc2luZ2xlTGFyZ2VUaWxlXSk6
CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIHNldFNpbmdsZUxhcmdlVGlsZTpdKToKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlZpZXcv
V2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfcHJlZmVyZW5jZXNDaGFuZ2VkOl0pOgor
CiAyMDE1LTEwLTA2ICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBFbmFibGUgWFNMVCB3aGVuIGJ1aWxkaW5nIFdlYktpdCBmb3IgaU9TIHVzaW5nIHRoZSBwdWJs
aWMgaU9TIFNESwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNl
S2V5c1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCShyZXZpc2lvbiAxOTA4MjgpCisrKyBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzIsNiArMTMyLDcgQEAKICNkZWZpbmUgV2ViS2l0Tm90aWZpY2F0aW9uc0VuYWJsZWRL
ZXkgQCJXZWJLaXROb3RpZmljYXRpb25zRW5hYmxlZCIKICNkZWZpbmUgV2ViS2l0U3VwcHJlc3Nl
c0luY3JlbWVudGFsUmVuZGVyaW5nS2V5IEAiV2ViS2l0U3VwcHJlc3Nlc0luY3JlbWVudGFsUmVu
ZGVyaW5nIgogI2RlZmluZSBXZWJLaXRTdWJwaXhlbENTU09NRWxlbWVudE1ldHJpY3NFbmFibGVk
UHJlZmVyZW5jZUtleSBAIldlYktpdFN1YnBpeGVsQ1NTT01FbGVtZW50TWV0cmljc0VuYWJsZWQi
CisjZGVmaW5lIFdlYktpdFNpbmdsZUxhcmdlVGlsZVByZWZlcmVuY2VLZXkgQCJXZWJLaXRTaW5n
bGVMYXJnZVRpbGUiCiAjaWYgVEFSR0VUX09TX0lQSE9ORQogI2RlZmluZSBXZWJLaXRBdWRpb1Nl
c3Npb25DYXRlZ29yeU92ZXJyaWRlIEAiV2ViS2l0QXVkaW9TZXNzaW9uQ2F0ZWdvcnlPdmVycmlk
ZSIKICNkZWZpbmUgV2ViS2l0QVZLaXRFbmFibGVkIEAiV2ViS2l0QVZLaXRFbmFibGVkIgpJbmRl
eDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCShyZXZpc2lv
biAxOTA4MjgpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC01MDYsNiArNTA2LDcgQEAgKyAodm9pZClpbml0aWFsaXplCiAg
ICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpOT10sICBXZWJLaXRGb3JjZVNvZnR3YXJl
V2ViR0xSZW5kZXJpbmdQcmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0
aEJvb2w6Tk9dLCAgIFdlYktpdEFjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVkUHJlZmVyZW5jZUtl
eSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOk5PXSwgIFdlYktpdFN1YnBpeGVs
Q1NTT01FbGVtZW50TWV0cmljc0VuYWJsZWRQcmVmZXJlbmNlS2V5LAorICAgICAgICBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEJvb2w6Tk9dLCAgV2ViS2l0U2luZ2xlTGFyZ2VUaWxlUHJlZmVyZW5jZUtl
eSwKICNpZiBQTEFURk9STShJT1MpCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpZ
RVNdLCAgV2ViS2l0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZFByZWZlcmVuY2VLZXksCiAjZWxzZQpA
QCAtMTkxNiw2ICsxOTE3LDE2IEBAIC0gKHZvaWQpc2V0U3VicGl4ZWxDU1NPTUVsZW1lbnRNZXRy
aWNzRW4KICAgICBbc2VsZiBfc2V0Qm9vbFZhbHVlOmVuYWJsZWQgZm9yS2V5OldlYktpdFN1YnBp
eGVsQ1NTT01FbGVtZW50TWV0cmljc0VuYWJsZWRQcmVmZXJlbmNlS2V5XTsKIH0KIAorLSAoQk9P
TClzaW5nbGVMYXJnZVRpbGUKK3sKKyAgICByZXR1cm4gW3NlbGYgX2Jvb2xWYWx1ZUZvcktleTpX
ZWJLaXRTaW5nbGVMYXJnZVRpbGVQcmVmZXJlbmNlS2V5XTsKK30KKworLSAodm9pZClzZXRTaW5n
bGVMYXJnZVRpbGU6KEJPT0wpZW5hYmxlZAoreworICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6ZW5h
YmxlZCBmb3JLZXk6V2ViS2l0U2luZ2xlTGFyZ2VUaWxlUHJlZmVyZW5jZUtleV07Cit9CisKIC0g
KEJPT0wpd2ViR0xFbmFibGVkCiB7CiAgICAgcmV0dXJuIFtzZWxmIF9ib29sVmFsdWVGb3JLZXk6
V2ViS2l0V2ViR0xFbmFibGVkUHJlZmVyZW5jZUtleV07CkluZGV4OiBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgJKHJldmlzaW9uIDE5MDgy
OCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIyNyw2ICsyMjcsOSBAQCBAaW50ZXJmYWNlIFdlYlByZWZlcmVu
Y2VzIChXZWJQcml2YXRlKQogLSAoQk9PTClzdWJwaXhlbENTU09NRWxlbWVudE1ldHJpY3NFbmFi
bGVkOwogLSAodm9pZClzZXRTdWJwaXhlbENTU09NRWxlbWVudE1ldHJpY3NFbmFibGVkOihCT09M
KWVuYWJsZWQ7CiAKKy0gKEJPT0wpc2luZ2xlTGFyZ2VUaWxlOworLSAodm9pZClzZXRTaW5nbGVM
YXJnZVRpbGU6KEJPT0wpZW5hYmxlZDsKKwogLSAoQk9PTCl3ZWJHTEVuYWJsZWQ7CiAtICh2b2lk
KXNldFdlYkdMRW5hYmxlZDooQk9PTCllbmFibGVkOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAxOTA4MjgpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTIyODUsNiArMjI4NSw3IEBAIC0g
KHZvaWQpX3ByZWZlcmVuY2VzQ2hhbmdlZDooV2ViUHJlZmVyZW4KICAgICBzZXR0aW5ncy5zZXRT
aG93UmVwYWludENvdW50ZXIoW3ByZWZlcmVuY2VzIHNob3dSZXBhaW50Q291bnRlcl0pOwogICAg
IHNldHRpbmdzLnNldFdlYkdMRW5hYmxlZChbcHJlZmVyZW5jZXMgd2ViR0xFbmFibGVkXSk7CiAg
ICAgc2V0dGluZ3Muc2V0U3VicGl4ZWxDU1NPTUVsZW1lbnRNZXRyaWNzRW5hYmxlZChbcHJlZmVy
ZW5jZXMgc3VicGl4ZWxDU1NPTUVsZW1lbnRNZXRyaWNzRW5hYmxlZF0pOworICAgIHNldHRpbmdz
LnNldFNpbmdsZUxhcmdlVGlsZShbcHJlZmVyZW5jZXMgc2luZ2xlTGFyZ2VUaWxlXSk7CiAKICAg
ICBzZXR0aW5ncy5zZXRGb3JjZVNvZnR3YXJlV2ViR0xSZW5kZXJpbmcoW3ByZWZlcmVuY2VzIGZv
cmNlU29mdHdhcmVXZWJHTFJlbmRlcmluZ10pOwogICAgIHNldHRpbmdzLnNldEFjY2VsZXJhdGVk
MmRDYW52YXNFbmFibGVkKFtwcmVmZXJlbmNlcyBhY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZF0p
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262821</attachid>
            <date>2015-10-09 21:41:47 -0700</date>
            <delta_ts>2015-10-11 19:00:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149977-20151009214113.patch</filename>
            <type>text/plain</type>
            <size>21159</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MDgyOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDE1LTEwLTA5ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGRlYnVn
IHNldHRpbmdzIGZvciBzaW5nbGUgbGFyZ2UgdGlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5OTc3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8y
MzAxNzA5Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAg
CisgICAgICAgIEluc3RlYWQgb2YgY3JlYXRpbmcgdGhlIEdyYXBoaWNzTGF5ZXIgd2l0aCBhIGZp
eGVkIHNpemUgNTEyeDUxMiwgd2UgbmVlZAorICAgICAgICB0byByZWFkIHRoZSBzaW5nbGVMYXJn
ZUxheWVyIHNldHRpbmcuIElmIGl0cyB2YWx1ZSBpcyB0cnVlLCB3ZSBzZXQgdGhlCisgICAgICAg
IGxheWVyIHRpbGVTaXplIHRvIDQwOTZ4NDA5Ni4KKworICAgICAgICAqIHBhZ2UvU2V0dGluZ3Mu
aW46CisgICAgICAgIERlZmluZSB0aGUgbmFtZSBvZiB0aGUgc2V0dGluZyBhbmQgaXRzIGRlZmF1
bHQgdmFsdWUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpzZXRUaWxlU2l6ZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjp0aWxlU2l6ZSk6CisgICAgICAgIERlZmluZSB0aGUg
dGlsZVNpemUoKSB2aXJ0dWFsIGZ1bmN0aW9ucyBpbiB0aGUgYmFzZSBjbGFzcy4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZy5oOgorICAgICAgICAoV2ViQ29yZTo6
ZGVmYXVsdFRpbGVTaXplKToKKyAgICAgICAgRGVmaW5lIHRoZSBkZWZhdWx0IHRpbGVTaXplIHdo
aWNoIHdpbGwgZGVwZW5kIG9uIHRoZSBzaW5nbGVMYXJnZVRpbGUgc2V0dGluZy4KKyAgICAgICAg
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmg6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnBsYXRmb3JtQ0FMYXllcik6CisgICAgICAg
IE92ZXJyaWRlIHRoZSB0aWxlU2l6ZSBmdW5jdGlvbnMgYW5kIG1ha2UgdGhlbSBkZWxlZ2F0ZSB0
aGUgY2FsbHMgdG8gdGhlCisgICAgICAgIFBsYXRmb3JtTGF5ZXIgbWVtYmVyLgorICAgICAgICAK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpQbGF0Zm9ybUNBTGF5ZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oOgorICAgICAgICBUaGUg
dGlsZVNpemUgd2lsbCBzdG9yZWQgb25seSBpbiB0aGUgUGxhdGZvcm1DQUxheWVyLgorICAgICAg
ICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUaWxlQ29udHJvbGxlcjo6VGlsZUNvbnRyb2xsZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmg6CisgICAgICAgIEdldCB0
aGUgdGlsZVNpemUgZnJvbSB0aGUgYXNzb2NpYXRlZCByb290TGF5ZXIuCisgICAgICAgIAorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp0aWxlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllckJhY2tpbmc6OmNyZWF0ZUdyYXBoaWNzTGF5ZXIpOiAgICAgICAgCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnNldFRpbGVkQmFja2luZ0hhc01hcmdpbnMpOgor
ICAgICAgICBTZXQgdGhlIHRpbGVTaXplIG9mIHRoZSBHcmFwaGljc0xheWVyIGJhc2VkIG9uIHRo
ZSBzaW5nbGVMYXJnZVRpbGUgc2V0dGluZy4KKyAgICAgICAgCisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5oOgorICAgICAgICAKIDIwMTUtMTAtMDkgIEFuZGVycyBDYXJs
c3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgaGFjayB0aGF0IGFs
bG93ZWQgcGx1Zy1pbnMgdG8gYWx3YXlzIHRha2Ugb3ZlciBjZXJ0YWluIGltYWdlIGZvcm1hdHMK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgkocmV2aXNpb24gMTkwODI4KQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjAxLDYgKzIwMSw4
IEBAIHNpbXBsZUxpbmVMYXlvdXREZWJ1Z0JvcmRlcnNFbmFibGVkIGluaXQKIAogc3VicGl4ZWxD
U1NPTUVsZW1lbnRNZXRyaWNzRW5hYmxlZCBpbml0aWFsPWZhbHNlCiAKK3NpbmdsZUxhcmdlVGls
ZSBpbml0aWFsPWZhbHNlCisKIG1lZGlhU291cmNlRW5hYmxlZCBpbml0aWFsPXRydWUsIGNvbmRp
dGlvbmFsPU1FRElBX1NPVVJDRQogCiAjIEZJWE1FOiBSZW5hbWUgdG8gYWxsb3dNdWx0aUVsZW1l
bnRJbXBsaWNpdEZvcm1TdWJtaXNzaW9uIG9uY2Ugd2UgdXBzdHJlYW0gdGhlIGlPUyBjaGFuZ2Vz
IHRvIFdlYlZpZXcubW0uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0xheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NMYXllci5oCShyZXZpc2lvbiAxOTA4MjgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2
LDYgKzM2LDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0xheWVyQ2xpZW50LmgiCiAjaW5jbHVkZSAi
UGF0aC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKKyNpbmNsdWRlICJUaWxlZEJhY2tp
bmcuaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1PcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiV2luZFJ1
bGUuaCIKICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CkBAIC0yMzUsNiArMjM2LDkgQEAgcHVi
bGljOgogICAgIAogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCisg
ICAgdmlydHVhbCB2b2lkIHNldFRpbGVTaXplKGNvbnN0IEludFNpemUmKSB7IH0KKyAgICB2aXJ0
dWFsIEludFNpemUgdGlsZVNpemUoKSBjb25zdCB7IHJldHVybiBkZWZhdWx0VGlsZVNpemUoKTsg
fQorCiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoVHlwZSkgeyB9CiAKICAgICB0eXBlZGVm
IHVpbnQ2NF90IFBsYXRmb3JtTGF5ZXJJRDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1RpbGVkQmFja2luZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZy5oCShyZXZpc2lvbiAxOTA4MjgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmcuaAkod29ya2luZyBjb3B5
KQpAQCAtMjgsOSArMjgsMjAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY29u
c3QgaW50IGRlZmF1bHRUaWxlV2lkdGggPSA1MTI7Ci1zdGF0aWMgY29uc3QgaW50IGRlZmF1bHRU
aWxlSGVpZ2h0ID0gNTEyOworaW5saW5lIHN0YXRpYyBJbnRTaXplIGRlZmF1bHRUaWxlU2l6ZShi
b29sIHNpbmdsZUxhcmdlVGlsZSA9IGZhbHNlKQoreworICAgIC8vIFRoZSB3aWR0aCBhbmQgaGVp
Z2h0IG9mIGEgc2luZ2xlIHRpbGUgaW4gYSB0aWxlZCBsYXllci4gU2hvdWxkIGJlIGxhcmdlIGVu
b3VnaCB0bworICAgIC8vIGF2b2lkIGxvdHMgb2Ygc21hbGwgdGlsZXMgKGFuZCB0aGVyZWZvcmUg
bG90cyBvZiBkcmF3aW5nIGNhbGxiYWNrcyksIGJ1dCBzbWFsbCBlbm91Z2gKKyAgICAvLyB0byBr
ZWVwIHRoZSBvdmVyYWxsIHRpbGUgY29zdCBsb3cuCisgICAgc3RhdGljIGNvbnN0IGludCBrVGls
ZWRMYXllclRpbGVTaXplID0gNTEyOworCisgICAgLy8gVGhpcyBpcyBhbiBleHBlcmltZW50YWwg
dmFsdWUgZm9yIFRkZWJ1Z2dpbmcgYW5kIGV2YWx1YXRpbmcgdGhlIG92ZXJoZWFkIHdoaWNoIG1h
eSBiZQorICAgIC8vIGluY3VycmVkIGR1ZSB0byBhIGxhcmdlIHRpbGUgc2l6ZS4KKyAgICBzdGF0
aWMgY29uc3QgaW50IGtMYXJnZVRpbGVkTGF5ZXJUaWxlU2l6ZSA9IDQwOTY7CiAKKyAgICByZXR1
cm4gc2luZ2xlTGFyZ2VUaWxlID8gSW50U2l6ZShrTGFyZ2VUaWxlZExheWVyVGlsZVNpemUsIGtM
YXJnZVRpbGVkTGF5ZXJUaWxlU2l6ZSkgOiBJbnRTaXplKGtUaWxlZExheWVyVGlsZVNpemUsIGtU
aWxlZExheWVyVGlsZVNpemUpOworfQorICAgIAogY2xhc3MgSW50UmVjdDsKIGNsYXNzIFBsYXRm
b3JtQ0FMYXllcjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgJKHJldmlzaW9uIDE5MDgyOCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NywxMCArNDcsNiBAQCBjbGFzcyBUcmFuc2Zvcm1TdGF0ZTsKIAogY2xhc3Mg
R3JhcGhpY3NMYXllckNBIDogcHVibGljIEdyYXBoaWNzTGF5ZXIsIHB1YmxpYyBQbGF0Zm9ybUNB
TGF5ZXJDbGllbnQgewogcHVibGljOgotICAgIC8vIFRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIGEg
c2luZ2xlIHRpbGUgaW4gYSB0aWxlZCBsYXllci4gU2hvdWxkIGJlIGxhcmdlIGVub3VnaCB0bwot
ICAgIC8vIGF2b2lkIGxvdHMgb2Ygc21hbGwgdGlsZXMgKGFuZCB0aGVyZWZvcmUgbG90cyBvZiBk
cmF3aW5nIGNhbGxiYWNrcyksIGJ1dCBzbWFsbCBlbm91Z2gKLSAgICAvLyB0byBrZWVwIHRoZSBv
dmVyYWxsIHRpbGUgY29zdCBsb3cuCi0gICAgc3RhdGljIGNvbnN0IGludCBrVGlsZWRMYXllclRp
bGVTaXplID0gNTEyOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgR3JhcGhpY3NMYXll
ckNBKFR5cGUsIEdyYXBoaWNzTGF5ZXJDbGllbnQmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIH5HcmFwaGljc0xheWVyQ0EoKTsKQEAgLTY0LDYgKzYwLDkgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0
IG92ZXJyaWRlOwogICAgIFBsYXRmb3JtQ0FMYXllciogcGxhdGZvcm1DQUxheWVyKCkgY29uc3Qg
eyByZXR1cm4gcHJpbWFyeUxheWVyKCk7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBzZXRUaWxlU2l6
ZShjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSkgb3ZlcnJpZGUgeyBwcmltYXJ5TGF5ZXIoKS0+c2V0
VGlsZVNpemUodGlsZVNpemUpOyB9CisgICAgdmlydHVhbCBJbnRTaXplIHRpbGVTaXplKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gcHJpbWFyeUxheWVyKCktPnRpbGVTaXplKCk7IH0KKwogICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgYm9vbCBzZXRDaGlsZHJlbihjb25zdCBWZWN0b3I8R3Jh
cGhpY3NMYXllcio+Jikgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lk
IGFkZENoaWxkKEdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIHZvaWQgYWRkQ2hpbGRBdEluZGV4KEdyYXBoaWNzTGF5ZXIqLCBpbnQgaW5kZXgpIG92
ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZv
cm1DQUxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwCShyZXZpc2lvbiAxOTA4MjgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00NCw2ICs0NCw3IEBAIGNvbnN0IGZsb2F0IFBsYXRmb3JtQ0FMYXllcjo6d2Vi
TGF5ZXJXYXMKIAogUGxhdGZvcm1DQUxheWVyOjpQbGF0Zm9ybUNBTGF5ZXIoTGF5ZXJUeXBlIGxh
eWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcikKICAgICA6IG1fbGF5ZXJUeXBl
KGxheWVyVHlwZSkKKyAgICAsIG1fdGlsZVNpemUoZGVmYXVsdFRpbGVTaXplKCkpCiAgICAgLCBt
X2xheWVySUQoZ2VuZXJhdGVMYXllcklEKCkpCiAgICAgLCBtX293bmVyKG93bmVyKQogewpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZv
cm1DQUxheWVyLmgJKHJldmlzaW9uIDE5MDgyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsNiAr
MTE1LDkgQEAgcHVibGljOgogCiAgICAgTGF5ZXJUeXBlIGxheWVyVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbGF5ZXJUeXBlOyB9CiAKKyAgICB2b2lkIHNldFRpbGVTaXplKGNvbnN0IEludFNpemUm
IHRpbGVTaXplKSB7IG1fdGlsZVNpemUgPSB0aWxlU2l6ZTsgfQorICAgIEludFNpemUgdGlsZVNp
emUoKSBjb25zdCB7IHJldHVybiBtX3RpbGVTaXplOyB9CisKICAgICB2aXJ0dWFsIFBsYXRmb3Jt
Q0FMYXllciogc3VwZXJsYXllcigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
RnJvbVN1cGVybGF5ZXIoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFN1YmxheWVycyhjb25z
dCBQbGF0Zm9ybUNBTGF5ZXJMaXN0JikgPSAwOwpAQCAtMjc1LDYgKzI3OCw3IEBAIHByb3RlY3Rl
ZDoKICAgICB2aXJ0dWFsIExheWVyUG9vbCYgbGF5ZXJQb29sKCk7CiAKICAgICBjb25zdCBMYXll
clR5cGUgbV9sYXllclR5cGU7CisgICAgSW50U2l6ZSBtX3RpbGVTaXplOwogICAgIGNvbnN0IEdy
YXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBtX2xheWVySUQ7CiAgICAgUmV0YWluUHRyPFBs
YXRmb3JtTGF5ZXI+IG1fbGF5ZXI7CiAgICAgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBtX293bmVy
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xs
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1RpbGVDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMTkwODI4KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01NCw3ICs1NCw2IEBAIFN0cmluZyBUaWxlQ29udHJvbGxlcjo6em9vbWVkT3V0VGlsZUdyaWQK
IFRpbGVDb250cm9sbGVyOjpUaWxlQ29udHJvbGxlcihQbGF0Zm9ybUNBTGF5ZXIqIHJvb3RQbGF0
Zm9ybUxheWVyKQogICAgIDogbV90aWxlQ2FjaGVMYXllcihyb290UGxhdGZvcm1MYXllcikKICAg
ICAsIG1fdGlsZUdyaWQoc3RkOjptYWtlX3VuaXF1ZTxUaWxlR3JpZD4oKnRoaXMpKQotICAgICwg
bV90aWxlU2l6ZShkZWZhdWx0VGlsZVdpZHRoLCBkZWZhdWx0VGlsZUhlaWdodCkKICAgICAsIG1f
dGlsZVJldmFsaWRhdGlvblRpbWVyKCp0aGlzLCAmVGlsZUNvbnRyb2xsZXI6OnRpbGVSZXZhbGlk
YXRpb25UaW1lckZpcmVkKQogICAgICwgbV96b29tZWRPdXRDb250ZW50c1NjYWxlKDApCiAgICAg
LCBtX2RldmljZVNjYWxlRmFjdG9yKG93bmluZ0dyYXBoaWNzTGF5ZXIoKS0+cGxhdGZvcm1DQUxh
eWVyRGV2aWNlU2NhbGVGYWN0b3IoKSkKQEAgLTMyOCw4ICszMjcsOCBAQCBGbG9hdFJlY3QgVGls
ZUNvbnRyb2xsZXI6OmNvbXB1dGVUaWxlQ292CiAgICAgaWYgKG1fdGlsZUNvdmVyYWdlID09IENv
dmVyYWdlRm9yVmlzaWJsZUFyZWEgfHwgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzaW5nbGV0b24o
KS5pc1VuZGVyTWVtb3J5UHJlc3N1cmUoKSkKICAgICAgICAgcmV0dXJuIHZpc2libGVSZWN0Owog
Ci0gICAgZG91YmxlIGhvcml6b250YWxNYXJnaW4gPSBkZWZhdWx0VGlsZVdpZHRoIC8gY29udGVu
dHNTY2FsZTsKLSAgICBkb3VibGUgdmVydGljYWxNYXJnaW4gPSBkZWZhdWx0VGlsZUhlaWdodCAv
IGNvbnRlbnRzU2NhbGU7CisgICAgZG91YmxlIGhvcml6b250YWxNYXJnaW4gPSB0aWxlU2l6ZSgp
LndpZHRoKCkgLyBjb250ZW50c1NjYWxlOworICAgIGRvdWJsZSB2ZXJ0aWNhbE1hcmdpbiA9IHRp
bGVTaXplKCkuaGVpZ2h0KCkgLyBjb250ZW50c1NjYWxlOwogCiAgICAgZG91YmxlIGN1cnJlbnRU
aW1lID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CiAgICAgZG91YmxlIHRpbWVEZWx0
YSA9IGN1cnJlbnRUaW1lIC0gbV92ZWxvY2l0eS5sYXN0VXBkYXRlVGltZTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIu
aAkocmV2aXNpb24gMTkwODI4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvVGlsZUNvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBAQCBwdWJs
aWM6CiAgICAgZmxvYXQgdGlsZURlYnVnQm9yZGVyV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3Rp
bGVEZWJ1Z0JvcmRlcldpZHRoOyB9CiAgICAgU2Nyb2xsaW5nTW9kZUluZGljYXRpb24gaW5kaWNh
dG9yTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5kaWNhdG9yTW9kZTsgfQogCi0gICAgdmlydHVh
bCBJbnRTaXplIHRpbGVTaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV90aWxlU2l6ZTsg
fQorICAgIHZpcnR1YWwgSW50U2l6ZSB0aWxlU2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHJvb3RMYXllcigpLnRpbGVTaXplKCk7IH0KICAgICB2aXJ0dWFsIEludFJlY3QgYm91bmRzKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBJbnRSZWN0IGJvdW5kc1dpdGhvdXRNYXJnaW4o
KSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgaGFzTWFyZ2lucygpIGNvbnN0IG92
ZXJyaWRlOwpAQCAtMTc1LDcgKzE3NSw2IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFRpbGVHcmlkPiBtX3RpbGVHcmlkOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUaWxlR3JpZD4gbV96
b29tZWRPdXRUaWxlR3JpZDsKIAotICAgIEludFNpemUgbV90aWxlU2l6ZTsKICAgICBGbG9hdFJl
Y3QgbV92aXNpYmxlUmVjdDsgLy8gT25seSB1c2VkIGZvciBzY3JvbGwgcGVyZm9ybWFuY2UgbG9n
Z2luZy4KICAgICBGbG9hdFJlY3QgbV9jb3ZlcmFnZVJlY3Q7CiAgICAgSW50UmVjdCBtX2JvdW5k
c0F0TGFzdFJldmFsaWRhdGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJCYWNraW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcAkocmV2aXNpb24gMTkwODI4KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2
MSw2ICsxNjEsMTEgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OndpbGxEZXN0cm95TGF5ZQog
ICAgICAgICBjb21wb3NpdG9yKCkubGF5ZXJUaWxlZEJhY2tpbmdVc2FnZUNoYW5nZWQobGF5ZXIs
IGZhbHNlKTsKIH0KIAorSW50U2l6ZSBSZW5kZXJMYXllckJhY2tpbmc6OnRpbGVTaXplKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gZGVmYXVsdFRpbGVTaXplKHJlbmRlcmVyKCkuZnJhbWUoKS5wYWdl
KCktPnNldHRpbmdzKCkuc2luZ2xlTGFyZ2VUaWxlKCkpOworfQorCiBzdGQ6OnVuaXF1ZV9wdHI8
R3JhcGhpY3NMYXllcj4gUmVuZGVyTGF5ZXJCYWNraW5nOjpjcmVhdGVHcmFwaGljc0xheWVyKGNv
bnN0IFN0cmluZyYgbmFtZSwgR3JhcGhpY3NMYXllcjo6VHlwZSBsYXllclR5cGUpCiB7CiAgICAg
R3JhcGhpY3NMYXllckZhY3RvcnkqIGdyYXBoaWNzTGF5ZXJGYWN0b3J5ID0gMDsKQEAgLTE2OCw2
ICsxNzMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NMYXllcj4gUmVuZGVyTGF5CiAgICAg
ICAgIGdyYXBoaWNzTGF5ZXJGYWN0b3J5ID0gcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkuZ3JhcGhp
Y3NMYXllckZhY3RvcnkoKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0xheWVyPiBn
cmFwaGljc0xheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKGdyYXBoaWNzTGF5ZXJGYWN0b3J5
LCAqdGhpcywgbGF5ZXJUeXBlKTsKKyAgICBncmFwaGljc0xheWVyLT5zZXRUaWxlU2l6ZSh0aWxl
U2l6ZSgpKTsKIAogI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykKICAgICBncmFwaGljc0xheWVy
LT5zZXROYW1lKG5hbWUpOwpAQCAtMjIzLDggKzIyOSw4IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNr
aW5nOjpzZXRUaWxlZEJhY2tpbmcKICAgICBpZiAoIW1fdXNpbmdUaWxlZENhY2hlTGF5ZXIpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGludCBtYXJnaW5MZWZ0QW5kUmlnaHRTaXplID0gaGFzRXh0
ZW5kZWRCYWNrZ3JvdW5kT25MZWZ0QW5kUmlnaHQgPyBkZWZhdWx0VGlsZVdpZHRoIDogMDsKLSAg
ICBpbnQgbWFyZ2luVG9wQW5kQm90dG9tU2l6ZSA9IGhhc0V4dGVuZGVkQmFja2dyb3VuZE9uVG9w
QW5kQm90dG9tID8gZGVmYXVsdFRpbGVIZWlnaHQgOiAwOworICAgIGludCBtYXJnaW5MZWZ0QW5k
UmlnaHRTaXplID0gaGFzRXh0ZW5kZWRCYWNrZ3JvdW5kT25MZWZ0QW5kUmlnaHQgPyB0aWxlU2l6
ZSgpLndpZHRoKCkgOiAwOworICAgIGludCBtYXJnaW5Ub3BBbmRCb3R0b21TaXplID0gaGFzRXh0
ZW5kZWRCYWNrZ3JvdW5kT25Ub3BBbmRCb3R0b20gPyB0aWxlU2l6ZSgpLmhlaWdodCgpIDogMDsK
ICAgICB0aWxlZEJhY2tpbmcoKS0+c2V0VGlsZU1hcmdpbnMobWFyZ2luVG9wQW5kQm90dG9tU2l6
ZSwgbWFyZ2luVG9wQW5kQm90dG9tU2l6ZSwgbWFyZ2luTGVmdEFuZFJpZ2h0U2l6ZSwgbWFyZ2lu
TGVmdEFuZFJpZ2h0U2l6ZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgJKHJldmlzaW9uIDE5MDgyOCkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMjU3
LDYgKzI1Nyw3IEBAIHByaXZhdGU6CiAgICAgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCYgcmVuZGVy
ZXIoKSBjb25zdCB7IHJldHVybiBtX293bmluZ0xheWVyLnJlbmRlcmVyKCk7IH0KICAgICBSZW5k
ZXJCb3gqIHJlbmRlckJveCgpIGNvbnN0IHsgcmV0dXJuIG1fb3duaW5nTGF5ZXIucmVuZGVyQm94
KCk7IH0KICAgICBSZW5kZXJMYXllckNvbXBvc2l0b3ImIGNvbXBvc2l0b3IoKSBjb25zdCB7IHJl
dHVybiBtX293bmluZ0xheWVyLmNvbXBvc2l0b3IoKTsgfQorICAgIEludFNpemUgdGlsZVNpemUo
KSBjb25zdDsKIAogICAgIHZvaWQgdXBkYXRlSW50ZXJuYWxIaWVyYXJjaHkoKTsKICAgICBib29s
IHVwZGF0ZUFuY2VzdG9yQ2xpcHBpbmdMYXllcihib29sIG5lZWRzQW5jZXN0b3JDbGlwKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MDgyOCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE1LTEwLTA5ICBTYWlkIEFib3Ut
SGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGRlYnVnIHNl
dHRpbmdzIGZvciBzaW5nbGUgbGFyZ2UgdGlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5OTc3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMzAx
NzA5Mz4gCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBTaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRTaW5n
bGVMYXJnZVRpbGUpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc0dldFNpbmdsZUxhcmdlVGlsZSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyk6CisKIDIwMTUtMTAtMDkgIEJldGggRGFraW4g
IDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIEJ1aWxkIGZpeC4KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaAkocmV2aXNp
b24gMTkwODI4KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmaW5p
dGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTg4LDYgKzE4OCw3IEBACiAgICAgbWFjcm8oVGhy
ZWFkZWRTY3JvbGxpbmdFbmFibGVkLCB0aHJlYWRlZFNjcm9sbGluZ0VuYWJsZWQsIEJvb2wsIGJv
b2wsIHRydWUpIFwKICAgICBtYWNybyhTaW1wbGVMaW5lTGF5b3V0RW5hYmxlZCwgc2ltcGxlTGlu
ZUxheW91dEVuYWJsZWQsIEJvb2wsIGJvb2wsIHRydWUpIFwKICAgICBtYWNybyhTdWJwaXhlbENT
U09NRWxlbWVudE1ldHJpY3NFbmFibGVkLCBzdWJwaXhlbENTU09NRWxlbWVudE1ldHJpY3NFbmFi
bGVkLCBCb29sLCBib29sLCBmYWxzZSkgXAorICAgIG1hY3JvKFNpbmdsZUxhcmdlVGlsZSwgc2lu
Z2xlTGFyZ2VUaWxlLCBCb29sLCBib29sLCBmYWxzZSkgXAogICAgIG1hY3JvKE1lZGlhU3RyZWFt
RW5hYmxlZCwgbWVkaWFTdHJlYW1FbmFibGVkLCBCb29sLCBib29sLCBmYWxzZSkgXAogICAgIG1h
Y3JvKFVzZUxlZ2FjeVRleHRBbGlnblBvc2l0aW9uZWRFbGVtZW50QmVoYXZpb3IsIHVzZUxlZ2Fj
eVRleHRBbGlnblBvc2l0aW9uZWRFbGVtZW50QmVoYXZpb3IsIEJvb2wsIGJvb2wsIGZhbHNlKSBc
CiAgICAgbWFjcm8oU3BhdGlhbE5hdmlnYXRpb25FbmFibGVkLCBzcGF0aWFsTmF2aWdhdGlvbkVu
YWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCShyZXZpc2lvbiAxOTA4MjgpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEyMTcsNiArMTIxNywxNiBAQCBib29sIFdLUHJlZmVyZW5jZXNHZXRTdWJwaXhl
bENTU09NRWxlbWVuCiAgICAgcmV0dXJuIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnN1YnBpeGVs
Q1NTT01FbGVtZW50TWV0cmljc0VuYWJsZWQoKTsKIH0KIAordm9pZCBXS1ByZWZlcmVuY2VzU2V0
U2luZ2xlTGFyZ2VUaWxlKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgZmxh
ZykKK3sKKyAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRTaW5nbGVMYXJnZVRpbGUoZmxh
Zyk7Cit9CisKK2Jvb2wgV0tQcmVmZXJlbmNlc0dldFNpbmdsZUxhcmdlVGlsZShXS1ByZWZlcmVu
Y2VzUmVmIHByZWZlcmVuY2VzUmVmKQoreworICAgIHJldHVybiB0b0ltcGwocHJlZmVyZW5jZXNS
ZWYpLT5zaW5nbGVMYXJnZVRpbGUoKTsKK30KKwogdm9pZCBXS1ByZWZlcmVuY2VzU2V0TWVkaWFT
dHJlYW1FbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgZW5hYmxl
ZCkKIHsKICAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRNZWRpYVN0cmVhbUVuYWJsZWQo
ZW5hYmxlZCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJl
bmNlc1JlZlByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaAkocmV2aXNpb24gMTkwODI4KQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMxMyw2ICszMTMsMTAgQEAgV0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJl
bmNlc0dldE5ld0Jsb2NrSQogV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldFN1YnBpeGVs
Q1NTT01FbGVtZW50TWV0cmljc0VuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiwgYm9vbCk7CiBXS19F
WFBPUlQgYm9vbCBXS1ByZWZlcmVuY2VzR2V0U3VicGl4ZWxDU1NPTUVsZW1lbnRNZXRyaWNzRW5h
YmxlZChXS1ByZWZlcmVuY2VzUmVmKTsKIAorLy8gRGVmYXVsdHMgdG8gZmFsc2UuCitXS19FWFBP
UlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0U2luZ2xlTGFyZ2VUaWxlKFdLUHJlZmVyZW5jZXNSZWYs
IGJvb2wpOworV0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNlc0dldFNpbmdsZUxhcmdlVGlsZShX
S1ByZWZlcmVuY2VzUmVmKTsKKwogV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1Jlc2V0VGVz
dFJ1bm5lck92ZXJyaWRlcyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKTsKIAogLy8g
RGVmYXVsdHMgdG8gZmFsc2UuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAxOTA4MjgpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3MzgsNiAr
MjczOCw3IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2UKICAgICBz
ZXR0aW5ncy5zZXRTaG93UmVwYWludENvdW50ZXIoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdl
YlByZWZlcmVuY2VzS2V5Ojpjb21wb3NpdGluZ1JlcGFpbnRDb3VudGVyc1Zpc2libGVLZXkoKSkp
OwogICAgIHNldHRpbmdzLnNldFNob3dUaWxlZFNjcm9sbGluZ0luZGljYXRvcihzdG9yZS5nZXRC
b29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnRpbGVkU2Nyb2xsaW5nSW5kaWNhdG9y
VmlzaWJsZUtleSgpKSk7CiAgICAgc2V0dGluZ3Muc2V0VmlzaWJsZURlYnVnT3ZlcmxheVJlZ2lv
bnMoc3RvcmUuZ2V0VUludDMyVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnZpc2libGVE
ZWJ1Z092ZXJsYXlSZWdpb25zS2V5KCkpKTsKKyAgICBzZXR0aW5ncy5zZXRTaW5nbGVMYXJnZVRp
bGUoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpzaW5nbGVMYXJn
ZVRpbGVLZXkoKSkpOwogICAgIAogICAgIHNldHRpbmdzLnNldEFnZ3Jlc3NpdmVUaWxlUmV0ZW50
aW9uRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmFn
Z3Jlc3NpdmVUaWxlUmV0ZW50aW9uRW5hYmxlZEtleSgpKSk7CiAgICAgc2V0dGluZ3Muc2V0VGVt
cG9yYXJ5VGlsZUNvaG9ydFJldGVudGlvbkVuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5
KFdlYlByZWZlcmVuY2VzS2V5Ojp0ZW1wb3JhcnlUaWxlQ29ob3J0UmV0ZW50aW9uRW5hYmxlZEtl
eSgpKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTA4MzUpCisrKyBTb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAx
NS0xMC0wOSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisg
ICAgICAgIEFkZCBkZWJ1ZyBzZXR0aW5ncyBmb3Igc2luZ2xlIGxhcmdlIHRpbGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTk3NworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMjMwMTcwOTM+IAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaDoK
KyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tOgorICAgICAgICAoK1tXZWJQcmVm
ZXJlbmNlcyBpbml0aWFsaXplXSk6CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIHNpbmdsZUxh
cmdlVGlsZV0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBzZXRTaW5nbGVMYXJnZVRpbGU6
XSk6CisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaDoKKyAgICAgICAg
KiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX3ByZWZlcmVuY2VzQ2hh
bmdlZDpdKToKKwogMjAxNS0xMC0wNiAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgRW5hYmxlIFhTTFQgd2hlbiBidWlsZGluZyBXZWJLaXQgZm9yIGlPUyB1c2lu
ZyB0aGUgcHVibGljIGlPUyBTREsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
UHJlZmVyZW5jZUtleXNQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAkocmV2aXNpb24gMTkwODI4KQorKysg
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMTMyLDYgKzEzMiw3IEBACiAjZGVmaW5lIFdlYktpdE5vdGlmaWNhdGlv
bnNFbmFibGVkS2V5IEAiV2ViS2l0Tm90aWZpY2F0aW9uc0VuYWJsZWQiCiAjZGVmaW5lIFdlYktp
dFN1cHByZXNzZXNJbmNyZW1lbnRhbFJlbmRlcmluZ0tleSBAIldlYktpdFN1cHByZXNzZXNJbmNy
ZW1lbnRhbFJlbmRlcmluZyIKICNkZWZpbmUgV2ViS2l0U3VicGl4ZWxDU1NPTUVsZW1lbnRNZXRy
aWNzRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRTdWJwaXhlbENTU09NRWxlbWVudE1ldHJp
Y3NFbmFibGVkIgorI2RlZmluZSBXZWJLaXRTaW5nbGVMYXJnZVRpbGVQcmVmZXJlbmNlS2V5IEAi
V2ViS2l0U2luZ2xlTGFyZ2VUaWxlIgogI2lmIFRBUkdFVF9PU19JUEhPTkUKICNkZWZpbmUgV2Vi
S2l0QXVkaW9TZXNzaW9uQ2F0ZWdvcnlPdmVycmlkZSBAIldlYktpdEF1ZGlvU2Vzc2lvbkNhdGVn
b3J5T3ZlcnJpZGUiCiAjZGVmaW5lIFdlYktpdEFWS2l0RW5hYmxlZCBAIldlYktpdEFWS2l0RW5h
YmxlZCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5t
bQkocmV2aXNpb24gMTkwODI4KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVm
ZXJlbmNlcy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTA2LDYgKzUwNiw3IEBAICsgKHZvaWQpaW5p
dGlhbGl6ZQogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9dLCAgV2ViS2l0Rm9y
Y2VTb2Z0d2FyZVdlYkdMUmVuZGVyaW5nUHJlZmVyZW5jZUtleSwKICAgICAgICAgW05TTnVtYmVy
IG51bWJlcldpdGhCb29sOk5PXSwgICBXZWJLaXRBY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZFBy
ZWZlcmVuY2VLZXksCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpOT10sICBXZWJL
aXRTdWJwaXhlbENTU09NRWxlbWVudE1ldHJpY3NFbmFibGVkUHJlZmVyZW5jZUtleSwKKyAgICAg
ICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOk5PXSwgIFdlYktpdFNpbmdsZUxhcmdlVGlsZVBy
ZWZlcmVuY2VLZXksCiAjaWYgUExBVEZPUk0oSU9TKQogICAgICAgICBbTlNOdW1iZXIgbnVtYmVy
V2l0aEJvb2w6WUVTXSwgIFdlYktpdEZyYW1lRmxhdHRlbmluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5
LAogI2Vsc2UKQEAgLTE5MTYsNiArMTkxNywxNiBAQCAtICh2b2lkKXNldFN1YnBpeGVsQ1NTT01F
bGVtZW50TWV0cmljc0VuCiAgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTplbmFibGVkIGZvcktleTpX
ZWJLaXRTdWJwaXhlbENTU09NRWxlbWVudE1ldHJpY3NFbmFibGVkUHJlZmVyZW5jZUtleV07CiB9
CiAKKy0gKEJPT0wpc2luZ2xlTGFyZ2VUaWxlCit7CisgICAgcmV0dXJuIFtzZWxmIF9ib29sVmFs
dWVGb3JLZXk6V2ViS2l0U2luZ2xlTGFyZ2VUaWxlUHJlZmVyZW5jZUtleV07Cit9CisKKy0gKHZv
aWQpc2V0U2luZ2xlTGFyZ2VUaWxlOihCT09MKWVuYWJsZWQKK3sKKyAgICBbc2VsZiBfc2V0Qm9v
bFZhbHVlOmVuYWJsZWQgZm9yS2V5OldlYktpdFNpbmdsZUxhcmdlVGlsZVByZWZlcmVuY2VLZXld
OworfQorCiAtIChCT09MKXdlYkdMRW5hYmxlZAogewogICAgIHJldHVybiBbc2VsZiBfYm9vbFZh
bHVlRm9yS2V5OldlYktpdFdlYkdMRW5hYmxlZFByZWZlcmVuY2VLZXldOwpJbmRleDogU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCShyZXZp
c2lvbiAxOTA4MjgpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2Vz
UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjcsNiArMjI3LDkgQEAgQGludGVyZmFjZSBX
ZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0ZSkKIC0gKEJPT0wpc3VicGl4ZWxDU1NPTUVsZW1lbnRN
ZXRyaWNzRW5hYmxlZDsKIC0gKHZvaWQpc2V0U3VicGl4ZWxDU1NPTUVsZW1lbnRNZXRyaWNzRW5h
YmxlZDooQk9PTCllbmFibGVkOwogCistIChCT09MKXNpbmdsZUxhcmdlVGlsZTsKKy0gKHZvaWQp
c2V0U2luZ2xlTGFyZ2VUaWxlOihCT09MKWVuYWJsZWQ7CisKIC0gKEJPT0wpd2ViR0xFbmFibGVk
OwogLSAodm9pZClzZXRXZWJHTEVuYWJsZWQ6KEJPT0wpZW5hYmxlZDsKIApJbmRleDogU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMTkwODI4KQorKysgU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMjg1LDYgKzIy
ODUsNyBAQCAtICh2b2lkKV9wcmVmZXJlbmNlc0NoYW5nZWQ6KFdlYlByZWZlcmVuCiAgICAgc2V0
dGluZ3Muc2V0U2hvd1JlcGFpbnRDb3VudGVyKFtwcmVmZXJlbmNlcyBzaG93UmVwYWludENvdW50
ZXJdKTsKICAgICBzZXR0aW5ncy5zZXRXZWJHTEVuYWJsZWQoW3ByZWZlcmVuY2VzIHdlYkdMRW5h
YmxlZF0pOwogICAgIHNldHRpbmdzLnNldFN1YnBpeGVsQ1NTT01FbGVtZW50TWV0cmljc0VuYWJs
ZWQoW3ByZWZlcmVuY2VzIHN1YnBpeGVsQ1NTT01FbGVtZW50TWV0cmljc0VuYWJsZWRdKTsKKyAg
ICBzZXR0aW5ncy5zZXRTaW5nbGVMYXJnZVRpbGUoW3ByZWZlcmVuY2VzIHNpbmdsZUxhcmdlVGls
ZV0pOwogCiAgICAgc2V0dGluZ3Muc2V0Rm9yY2VTb2Z0d2FyZVdlYkdMUmVuZGVyaW5nKFtwcmVm
ZXJlbmNlcyBmb3JjZVNvZnR3YXJlV2ViR0xSZW5kZXJpbmddKTsKICAgICBzZXR0aW5ncy5zZXRB
Y2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZChbcHJlZmVyZW5jZXMgYWNjZWxlcmF0ZWQyZENhbnZh
c0VuYWJsZWRdKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262875</attachid>
            <date>2015-10-11 19:00:50 -0700</date>
            <delta_ts>2015-10-12 16:33:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149977-20151011190014.patch</filename>
            <type>text/plain</type>
            <size>21290</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MDg0MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDE1LTEwLTExICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGRlYnVn
IHNldHRpbmdzIGZvciBzaW5nbGUgbGFyZ2UgdGlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5OTc3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8y
MzAxNzA5Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAg
CisgICAgICAgIEluc3RlYWQgb2YgY3JlYXRpbmcgdGhlIEdyYXBoaWNzTGF5ZXIgd2l0aCBhIGZp
eGVkIHNpemUgNTEyeDUxMiwgd2UgbmVlZAorICAgICAgICB0byByZWFkIHRoZSB1c2VzU2luZ2xl
TGFyZ2VMYXllciBzZXR0aW5nLiBJZiBpdHMgdmFsdWUgaXMgdHJ1ZSwgd2Ugc2V0IHRoZQorICAg
ICAgICBsYXllciB0aWxlU2l6ZSB0byA0MDk2eDQwOTYuCisKKyAgICAgICAgKiBwYWdlL1NldHRp
bmdzLmluOgorICAgICAgICBEZWZpbmUgdGhlIG5hbWUgb2YgdGhlIHNldHRpbmcgYW5kIGl0cyBk
ZWZhdWx0IHZhbHVlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXll
ci5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6c2V0VGlsZVNpemUpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6dGlsZVNpemUpOgorICAgICAgICBEZWZpbmUg
dGhlIHRpbGVTaXplKCkgdmlydHVhbCBmdW5jdGlvbnMgaW4gdGhlIGJhc2UgY2xhc3MuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmcuaDoKKyAgICAgICAgKFdlYkNv
cmU6OmRlZmF1bHRUaWxlU2l6ZSk6CisgICAgICAgIERlZmluZSB0aGUgZGVmYXVsdCB0aWxlU2l6
ZSB3aGljaCB3aWxsIGRlcGVuZCBvbiB0aGUgdXNlc1NpbmdsZUxhcmdlVGlsZQorICAgICAgICBz
ZXR0aW5nLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGlj
c0xheWVyQ0EuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1D
QUxheWVyKToKKyAgICAgICAgT3ZlcnJpZGUgdGhlIHRpbGVTaXplIGZ1bmN0aW9ucyBhbmQgbWFr
ZSB0aGVtIGRlbGVnYXRlIHRoZSBjYWxscyB0byB0aGUKKyAgICAgICAgUGxhdGZvcm1MYXllciBt
ZW1iZXIuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3Jt
Q0FMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OlBsYXRmb3Jt
Q0FMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVy
Lmg6CisgICAgICAgIFRoZSB0aWxlU2l6ZSB3aWxsIHN0b3JlZCBvbmx5IGluIHRoZSBQbGF0Zm9y
bUNBTGF5ZXIuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjpUaWxlQ29u
dHJvbGxlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIu
aDoKKyAgICAgICAgR2V0IHRoZSB0aWxlU2l6ZSBmcm9tIHRoZSBhc3NvY2lhdGVkIHJvb3RMYXll
ci4KKyAgICAgICAgCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnRpbGVTaXplKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6Y3JlYXRlR3JhcGhpY3NMYXllcik6ICAg
ICAgICAKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6c2V0VGlsZWRCYWNr
aW5nSGFzTWFyZ2lucyk6CisgICAgICAgIFNldCB0aGUgdGlsZVNpemUgb2YgdGhlIEdyYXBoaWNz
TGF5ZXIgYmFzZWQgb24gdGhlIHVzZXNTaW5nbGVMYXJnZVRpbGUKKyAgICAgICAgc2V0dGluZy4K
KyAgICAgICAgCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oOgorICAg
ICAgICAKIDIwMTUtMTAtMTAgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlZHVjZSBwb2ludGxlc3MgbWFsbG9jIHRyYWZmaWMgaW4gRWxlbWVudFJ1bGVDb2xs
ZWN0b3IuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4JKHJldmlzaW9uIDE5MDg0MykKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIwMSw2
ICsyMDEsOCBAQCBzaW1wbGVMaW5lTGF5b3V0RGVidWdCb3JkZXJzRW5hYmxlZCBpbml0CiAKIHN1
YnBpeGVsQ1NTT01FbGVtZW50TWV0cmljc0VuYWJsZWQgaW5pdGlhbD1mYWxzZQogCit1c2VzU2lu
Z2xlTGFyZ2VUaWxlIGluaXRpYWw9ZmFsc2UKKwogbWVkaWFTb3VyY2VFbmFibGVkIGluaXRpYWw9
dHJ1ZSwgY29uZGl0aW9uYWw9TUVESUFfU09VUkNFCiAKICMgRklYTUU6IFJlbmFtZSB0byBhbGxv
d011bHRpRWxlbWVudEltcGxpY2l0Rm9ybVN1Ym1pc3Npb24gb25jZSB3ZSB1cHN0cmVhbSB0aGUg
aU9TIGNoYW5nZXMgdG8gV2ViVmlldy5tbS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgJKHJldmlzaW9uIDE5MDg0MykKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDbGllbnQuaCIK
ICNpbmNsdWRlICJQYXRoLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgorI2luY2x1ZGUg
IlRpbGVkQmFja2luZy5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybU9wZXJhdGlvbnMuaCIKICNpbmNs
dWRlICJXaW5kUnVsZS5oIgogI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KQEAgLTIzNSw2ICsy
MzYsOSBAQCBwdWJsaWM6CiAgICAgCiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90
eXBlOyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGlsZVNpemUoY29uc3QgSW50U2l6ZSYpIHsg
fQorICAgIHZpcnR1YWwgSW50U2l6ZSB0aWxlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGRlZmF1bHRU
aWxlU2l6ZSgpOyB9CisKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZShUeXBlKSB7IH0KIAog
ICAgIHR5cGVkZWYgdWludDY0X3QgUGxhdGZvcm1MYXllcklEOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nLmgJKHJldmlzaW9uIDE5MDg0
MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCw5ICsyOCwyMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXN0YXRpYyBjb25zdCBpbnQgZGVmYXVsdFRpbGVXaWR0aCA9IDUxMjsKLXN0YXRpYyBjb25zdCBp
bnQgZGVmYXVsdFRpbGVIZWlnaHQgPSA1MTI7CitpbmxpbmUgc3RhdGljIEludFNpemUgZGVmYXVs
dFRpbGVTaXplKGJvb2wgdXNlc1NpbmdsZUxhcmdlVGlsZSA9IGZhbHNlKQoreworICAgIC8vIFRo
ZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIGEgc2luZ2xlIHRpbGUgaW4gYSB0aWxlZCBsYXllci4gU2hv
dWxkIGJlIGxhcmdlIGVub3VnaCB0bworICAgIC8vIGF2b2lkIGxvdHMgb2Ygc21hbGwgdGlsZXMg
KGFuZCB0aGVyZWZvcmUgbG90cyBvZiBkcmF3aW5nIGNhbGxiYWNrcyksIGJ1dCBzbWFsbCBlbm91
Z2gKKyAgICAvLyB0byBrZWVwIHRoZSBvdmVyYWxsIHRpbGUgY29zdCBsb3cuCisgICAgc3RhdGlj
IGNvbnN0IGludCBrVGlsZWRMYXllclRpbGVTaXplID0gNTEyOworCisgICAgLy8gVGhpcyBpcyBh
biBleHBlcmltZW50YWwgdmFsdWUgZm9yIFRkZWJ1Z2dpbmcgYW5kIGV2YWx1YXRpbmcgdGhlIG92
ZXJoZWFkIHdoaWNoIG1heSBiZQorICAgIC8vIGluY3VycmVkIGR1ZSB0byBhIGxhcmdlIHRpbGUg
c2l6ZS4KKyAgICBzdGF0aWMgY29uc3QgaW50IGtMYXJnZVRpbGVkTGF5ZXJUaWxlU2l6ZSA9IDQw
OTY7CiAKKyAgICByZXR1cm4gdXNlc1NpbmdsZUxhcmdlVGlsZSA/IEludFNpemUoa0xhcmdlVGls
ZWRMYXllclRpbGVTaXplLCBrTGFyZ2VUaWxlZExheWVyVGlsZVNpemUpIDogSW50U2l6ZShrVGls
ZWRMYXllclRpbGVTaXplLCBrVGlsZWRMYXllclRpbGVTaXplKTsKK30KKyAgICAKIGNsYXNzIElu
dFJlY3Q7CiBjbGFzcyBQbGF0Zm9ybUNBTGF5ZXI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCShyZXZpc2lv
biAxOTA4NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGlj
c0xheWVyQ0EuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTAgKzQ3LDYgQEAgY2xhc3MgVHJhbnNm
b3JtU3RhdGU7CiAKIGNsYXNzIEdyYXBoaWNzTGF5ZXJDQSA6IHB1YmxpYyBHcmFwaGljc0xheWVy
LCBwdWJsaWMgUGxhdGZvcm1DQUxheWVyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICAvLyBUaGUgd2lk
dGggYW5kIGhlaWdodCBvZiBhIHNpbmdsZSB0aWxlIGluIGEgdGlsZWQgbGF5ZXIuIFNob3VsZCBi
ZSBsYXJnZSBlbm91Z2ggdG8KLSAgICAvLyBhdm9pZCBsb3RzIG9mIHNtYWxsIHRpbGVzIChhbmQg
dGhlcmVmb3JlIGxvdHMgb2YgZHJhd2luZyBjYWxsYmFja3MpLCBidXQgc21hbGwgZW5vdWdoCi0g
ICAgLy8gdG8ga2VlcCB0aGUgb3ZlcmFsbCB0aWxlIGNvc3QgbG93LgotICAgIHN0YXRpYyBjb25z
dCBpbnQga1RpbGVkTGF5ZXJUaWxlU2l6ZSA9IDUxMjsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGV4
cGxpY2l0IEdyYXBoaWNzTGF5ZXJDQShUeXBlLCBHcmFwaGljc0xheWVyQ2xpZW50Jik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+R3JhcGhpY3NMYXllckNBKCk7CkBAIC02NCw2ICs2MCw5
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBs
YXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKICAgICBQbGF0Zm9ybUNBTGF5ZXIqIHBsYXRm
b3JtQ0FMYXllcigpIGNvbnN0IHsgcmV0dXJuIHByaW1hcnlMYXllcigpOyB9CiAKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0VGlsZVNpemUoY29uc3QgSW50U2l6ZSYgdGlsZVNpemUpIG92ZXJyaWRlIHsg
cHJpbWFyeUxheWVyKCktPnNldFRpbGVTaXplKHRpbGVTaXplKTsgfQorICAgIHZpcnR1YWwgSW50
U2l6ZSB0aWxlU2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHByaW1hcnlMYXllcigpLT50
aWxlU2l6ZSgpOyB9CisKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIGJvb2wgc2V0Q2hpbGRy
ZW4oY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGFkZENoaWxkQXRJbmRleChHcmFwaGljc0xh
eWVyKiwgaW50IGluZGV4KSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcAkocmV2aXNpb24g
MTkwODQzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1D
QUxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQCBjb25zdCBmbG9hdCBQ
bGF0Zm9ybUNBTGF5ZXI6OndlYkxheWVyV2FzCiAKIFBsYXRmb3JtQ0FMYXllcjo6UGxhdGZvcm1D
QUxheWVyKExheWVyVHlwZSBsYXllclR5cGUsIFBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIp
CiAgICAgOiBtX2xheWVyVHlwZShsYXllclR5cGUpCisgICAgLCBtX3RpbGVTaXplKGRlZmF1bHRU
aWxlU2l6ZSgpKQogICAgICwgbV9sYXllcklEKGdlbmVyYXRlTGF5ZXJJRCgpKQogICAgICwgbV9v
d25lcihvd25lcikKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1BsYXRmb3JtQ0FMYXllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oCShyZXZpc2lvbiAxOTA4NDMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTE1LDYgKzExNSw5IEBAIHB1YmxpYzoKIAogICAgIExheWVyVHlwZSBsYXll
clR5cGUoKSBjb25zdCB7IHJldHVybiBtX2xheWVyVHlwZTsgfQogCisgICAgdm9pZCBzZXRUaWxl
U2l6ZShjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSkgeyBtX3RpbGVTaXplID0gdGlsZVNpemU7IH0K
KyAgICBJbnRTaXplIHRpbGVTaXplKCkgY29uc3QgeyByZXR1cm4gbV90aWxlU2l6ZTsgfQorCiAg
ICAgdmlydHVhbCBQbGF0Zm9ybUNBTGF5ZXIqIHN1cGVybGF5ZXIoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHJlbW92ZUZyb21TdXBlcmxheWVyKCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRTdWJsYXllcnMoY29uc3QgUGxhdGZvcm1DQUxheWVyTGlzdCYpID0gMDsKQEAgLTI3NSw2
ICsyNzgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBMYXllclBvb2wmIGxheWVyUG9vbCgp
OwogCiAgICAgY29uc3QgTGF5ZXJUeXBlIG1fbGF5ZXJUeXBlOworICAgIEludFNpemUgbV90aWxl
U2l6ZTsKICAgICBjb25zdCBHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQgbV9sYXllcklE
OwogICAgIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBtX2xheWVyOwogICAgIFBsYXRmb3JtQ0FM
YXllckNsaWVudCogbV9vd25lcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDE5MDg0MykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNiBAQCBTdHJpbmcgVGlsZUNvbnRyb2xsZXI6
Onpvb21lZE91dFRpbGVHcmlkCiBUaWxlQ29udHJvbGxlcjo6VGlsZUNvbnRyb2xsZXIoUGxhdGZv
cm1DQUxheWVyKiByb290UGxhdGZvcm1MYXllcikKICAgICA6IG1fdGlsZUNhY2hlTGF5ZXIocm9v
dFBsYXRmb3JtTGF5ZXIpCiAgICAgLCBtX3RpbGVHcmlkKHN0ZDo6bWFrZV91bmlxdWU8VGlsZUdy
aWQ+KCp0aGlzKSkKLSAgICAsIG1fdGlsZVNpemUoZGVmYXVsdFRpbGVXaWR0aCwgZGVmYXVsdFRp
bGVIZWlnaHQpCiAgICAgLCBtX3RpbGVSZXZhbGlkYXRpb25UaW1lcigqdGhpcywgJlRpbGVDb250
cm9sbGVyOjp0aWxlUmV2YWxpZGF0aW9uVGltZXJGaXJlZCkKICAgICAsIG1fem9vbWVkT3V0Q29u
dGVudHNTY2FsZSgwKQogICAgICwgbV9kZXZpY2VTY2FsZUZhY3Rvcihvd25pbmdHcmFwaGljc0xh
eWVyKCktPnBsYXRmb3JtQ0FMYXllckRldmljZVNjYWxlRmFjdG9yKCkpCkBAIC0zMjgsOCArMzI3
LDggQEAgRmxvYXRSZWN0IFRpbGVDb250cm9sbGVyOjpjb21wdXRlVGlsZUNvdgogICAgIGlmICht
X3RpbGVDb3ZlcmFnZSA9PSBDb3ZlcmFnZUZvclZpc2libGVBcmVhIHx8IE1lbW9yeVByZXNzdXJl
SGFuZGxlcjo6c2luZ2xldG9uKCkuaXNVbmRlck1lbW9yeVByZXNzdXJlKCkpCiAgICAgICAgIHJl
dHVybiB2aXNpYmxlUmVjdDsKIAotICAgIGRvdWJsZSBob3Jpem9udGFsTWFyZ2luID0gZGVmYXVs
dFRpbGVXaWR0aCAvIGNvbnRlbnRzU2NhbGU7Ci0gICAgZG91YmxlIHZlcnRpY2FsTWFyZ2luID0g
ZGVmYXVsdFRpbGVIZWlnaHQgLyBjb250ZW50c1NjYWxlOworICAgIGRvdWJsZSBob3Jpem9udGFs
TWFyZ2luID0gdGlsZVNpemUoKS53aWR0aCgpIC8gY29udGVudHNTY2FsZTsKKyAgICBkb3VibGUg
dmVydGljYWxNYXJnaW4gPSB0aWxlU2l6ZSgpLmhlaWdodCgpIC8gY29udGVudHNTY2FsZTsKIAog
ICAgIGRvdWJsZSBjdXJyZW50VGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwog
ICAgIGRvdWJsZSB0aW1lRGVsdGEgPSBjdXJyZW50VGltZSAtIG1fdmVsb2NpdHkubGFzdFVwZGF0
ZVRpbWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29u
dHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL1RpbGVDb250cm9sbGVyLmgJKHJldmlzaW9uIDE5MDg0MykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgIGZsb2F0IHRpbGVEZWJ1Z0JvcmRlcldpZHRoKCkg
Y29uc3QgeyByZXR1cm4gbV90aWxlRGVidWdCb3JkZXJXaWR0aDsgfQogICAgIFNjcm9sbGluZ01v
ZGVJbmRpY2F0aW9uIGluZGljYXRvck1vZGUoKSBjb25zdCB7IHJldHVybiBtX2luZGljYXRvck1v
ZGU7IH0KIAotICAgIHZpcnR1YWwgSW50U2l6ZSB0aWxlU2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fdGlsZVNpemU7IH0KKyAgICB2aXJ0dWFsIEludFNpemUgdGlsZVNpemUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiByb290TGF5ZXIoKS50aWxlU2l6ZSgpOyB9CiAgICAgdmlydHVh
bCBJbnRSZWN0IGJvdW5kcygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgSW50UmVjdCBi
b3VuZHNXaXRob3V0TWFyZ2luKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGhh
c01hcmdpbnMoKSBjb25zdCBvdmVycmlkZTsKQEAgLTE3NSw3ICsxNzUsNiBAQCBwcml2YXRlOgog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxUaWxlR3JpZD4gbV90aWxlR3JpZDsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8VGlsZUdyaWQ+IG1fem9vbWVkT3V0VGlsZUdyaWQ7CiAKLSAgICBJbnRTaXplIG1fdGls
ZVNpemU7CiAgICAgRmxvYXRSZWN0IG1fdmlzaWJsZVJlY3Q7IC8vIE9ubHkgdXNlZCBmb3Igc2Ny
b2xsIHBlcmZvcm1hbmNlIGxvZ2dpbmcuCiAgICAgRmxvYXRSZWN0IG1fY292ZXJhZ2VSZWN0Owog
ICAgIEludFJlY3QgbV9ib3VuZHNBdExhc3RSZXZhbGlkYXRlOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJKHJldmlzaW9uIDE5MDg0
MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNjEsNiArMTYxLDExIEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5n
Ojp3aWxsRGVzdHJveUxheWUKICAgICAgICAgY29tcG9zaXRvcigpLmxheWVyVGlsZWRCYWNraW5n
VXNhZ2VDaGFuZ2VkKGxheWVyLCBmYWxzZSk7CiB9CiAKK0ludFNpemUgUmVuZGVyTGF5ZXJCYWNr
aW5nOjp0aWxlU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGRlZmF1bHRUaWxlU2l6ZShyZW5k
ZXJlcigpLmZyYW1lKCkucGFnZSgpLT5zZXR0aW5ncygpLnVzZXNTaW5nbGVMYXJnZVRpbGUoKSk7
Cit9CisKIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0xheWVyPiBSZW5kZXJMYXllckJhY2tpbmc6
OmNyZWF0ZUdyYXBoaWNzTGF5ZXIoY29uc3QgU3RyaW5nJiBuYW1lLCBHcmFwaGljc0xheWVyOjpU
eXBlIGxheWVyVHlwZSkKIHsKICAgICBHcmFwaGljc0xheWVyRmFjdG9yeSogZ3JhcGhpY3NMYXll
ckZhY3RvcnkgPSAwOwpAQCAtMTY4LDYgKzE3Myw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGlj
c0xheWVyPiBSZW5kZXJMYXkKICAgICAgICAgZ3JhcGhpY3NMYXllckZhY3RvcnkgPSBwYWdlLT5j
aHJvbWUoKS5jbGllbnQoKS5ncmFwaGljc0xheWVyRmFjdG9yeSgpOwogCiAgICAgc3RkOjp1bmlx
dWVfcHRyPEdyYXBoaWNzTGF5ZXI+IGdyYXBoaWNzTGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVh
dGUoZ3JhcGhpY3NMYXllckZhY3RvcnksICp0aGlzLCBsYXllclR5cGUpOworICAgIGdyYXBoaWNz
TGF5ZXItPnNldFRpbGVTaXplKHRpbGVTaXplKCkpOwogCiAjaWYgRU5BQkxFKFRSRUVfREVCVUdH
SU5HKQogICAgIGdyYXBoaWNzTGF5ZXItPnNldE5hbWUobmFtZSk7CkBAIC0yMjMsOCArMjI5LDgg
QEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnNldFRpbGVkQmFja2luZwogICAgIGlmICghbV91
c2luZ1RpbGVkQ2FjaGVMYXllcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW50IG1hcmdpbkxl
ZnRBbmRSaWdodFNpemUgPSBoYXNFeHRlbmRlZEJhY2tncm91bmRPbkxlZnRBbmRSaWdodCA/IGRl
ZmF1bHRUaWxlV2lkdGggOiAwOwotICAgIGludCBtYXJnaW5Ub3BBbmRCb3R0b21TaXplID0gaGFz
RXh0ZW5kZWRCYWNrZ3JvdW5kT25Ub3BBbmRCb3R0b20gPyBkZWZhdWx0VGlsZUhlaWdodCA6IDA7
CisgICAgaW50IG1hcmdpbkxlZnRBbmRSaWdodFNpemUgPSBoYXNFeHRlbmRlZEJhY2tncm91bmRP
bkxlZnRBbmRSaWdodCA/IHRpbGVTaXplKCkud2lkdGgoKSA6IDA7CisgICAgaW50IG1hcmdpblRv
cEFuZEJvdHRvbVNpemUgPSBoYXNFeHRlbmRlZEJhY2tncm91bmRPblRvcEFuZEJvdHRvbSA/IHRp
bGVTaXplKCkuaGVpZ2h0KCkgOiAwOwogICAgIHRpbGVkQmFja2luZygpLT5zZXRUaWxlTWFyZ2lu
cyhtYXJnaW5Ub3BBbmRCb3R0b21TaXplLCBtYXJnaW5Ub3BBbmRCb3R0b21TaXplLCBtYXJnaW5M
ZWZ0QW5kUmlnaHRTaXplLCBtYXJnaW5MZWZ0QW5kUmlnaHRTaXplKTsKIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaAkocmV2aXNpb24g
MTkwODQzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNTcsNiArMjU3LDcgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJM
YXllck1vZGVsT2JqZWN0JiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fb3duaW5nTGF5ZXIu
cmVuZGVyZXIoKTsgfQogICAgIFJlbmRlckJveCogcmVuZGVyQm94KCkgY29uc3QgeyByZXR1cm4g
bV9vd25pbmdMYXllci5yZW5kZXJCb3goKTsgfQogICAgIFJlbmRlckxheWVyQ29tcG9zaXRvciYg
Y29tcG9zaXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fb3duaW5nTGF5ZXIuY29tcG9zaXRvcigpOyB9
CisgICAgSW50U2l6ZSB0aWxlU2l6ZSgpIGNvbnN0OwogCiAgICAgdm9pZCB1cGRhdGVJbnRlcm5h
bEhpZXJhcmNoeSgpOwogICAgIGJvb2wgdXBkYXRlQW5jZXN0b3JDbGlwcGluZ0xheWVyKGJvb2wg
bmVlZHNBbmNlc3RvckNsaXApOwpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTkwODQ4KQorKysg
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTUtMTAtMTEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4K
KworICAgICAgICBBZGQgZGVidWcgc2V0dGluZ3MgZm9yIHNpbmdsZSBsYXJnZSB0aWxlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk5NzcKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzIzMDE3MDkzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHA6CisgICAgICAg
IChXS1ByZWZlcmVuY2VzU2V0VXNlc1NpbmdsZUxhcmdlVGlsZSk6CisgICAgICAgIChXS1ByZWZl
cmVuY2VzR2V0VXNlc1NpbmdsZUxhcmdlVGlsZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNl
cyk6CisKIDIwMTUtMTAtMTAgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBbaU9TXSBSZW1vdmUgdW5uZWNlc3NhcnkgaU9TIHZlcnNpb24gY2hlY2tzCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmgJ
KHJldmlzaW9uIDE5MDg0MykKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNl
c0RlZmluaXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4OCw2ICsxODgsNyBAQAogICAgIG1h
Y3JvKFRocmVhZGVkU2Nyb2xsaW5nRW5hYmxlZCwgdGhyZWFkZWRTY3JvbGxpbmdFbmFibGVkLCBC
b29sLCBib29sLCB0cnVlKSBcCiAgICAgbWFjcm8oU2ltcGxlTGluZUxheW91dEVuYWJsZWQsIHNp
bXBsZUxpbmVMYXlvdXRFbmFibGVkLCBCb29sLCBib29sLCB0cnVlKSBcCiAgICAgbWFjcm8oU3Vi
cGl4ZWxDU1NPTUVsZW1lbnRNZXRyaWNzRW5hYmxlZCwgc3VicGl4ZWxDU1NPTUVsZW1lbnRNZXRy
aWNzRW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFsc2UpIFwKKyAgICBtYWNybyhVc2VzU2luZ2xlTGFy
Z2VUaWxlLCB1c2VzU2luZ2xlTGFyZ2VUaWxlLCBCb29sLCBib29sLCBmYWxzZSkgXAogICAgIG1h
Y3JvKE1lZGlhU3RyZWFtRW5hYmxlZCwgbWVkaWFTdHJlYW1FbmFibGVkLCBCb29sLCBib29sLCBm
YWxzZSkgXAogICAgIG1hY3JvKFVzZUxlZ2FjeVRleHRBbGlnblBvc2l0aW9uZWRFbGVtZW50QmVo
YXZpb3IsIHVzZUxlZ2FjeVRleHRBbGlnblBvc2l0aW9uZWRFbGVtZW50QmVoYXZpb3IsIEJvb2ws
IGJvb2wsIGZhbHNlKSBcCiAgICAgbWFjcm8oU3BhdGlhbE5hdmlnYXRpb25FbmFibGVkLCBzcGF0
aWFsTmF2aWdhdGlvbkVuYWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCShyZXZpc2lv
biAxOTA4NDMpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNl
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMTcsNiArMTIxNywxNiBAQCBib29sIFdLUHJlZmVy
ZW5jZXNHZXRTdWJwaXhlbENTU09NRWxlbWVuCiAgICAgcmV0dXJuIHRvSW1wbChwcmVmZXJlbmNl
c1JlZiktPnN1YnBpeGVsQ1NTT01FbGVtZW50TWV0cmljc0VuYWJsZWQoKTsKIH0KIAordm9pZCBX
S1ByZWZlcmVuY2VzU2V0VXNlc1NpbmdsZUxhcmdlVGlsZShXS1ByZWZlcmVuY2VzUmVmIHByZWZl
cmVuY2VzUmVmLCBib29sIGZsYWcpCit7CisgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0
VXNlc1NpbmdsZUxhcmdlVGlsZShmbGFnKTsKK30KKworYm9vbCBXS1ByZWZlcmVuY2VzR2V0VXNl
c1NpbmdsZUxhcmdlVGlsZShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKQoreworICAg
IHJldHVybiB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT51c2VzU2luZ2xlTGFyZ2VUaWxlKCk7Cit9
CisKIHZvaWQgV0tQcmVmZXJlbmNlc1NldE1lZGlhU3RyZWFtRW5hYmxlZChXS1ByZWZlcmVuY2Vz
UmVmIHByZWZlcmVuY2VzUmVmLCBib29sIGVuYWJsZWQpCiB7CiAgICAgdG9JbXBsKHByZWZlcmVu
Y2VzUmVmKS0+c2V0TWVkaWFTdHJlYW1FbmFibGVkKGVuYWJsZWQpOwpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2
YXRlLmgJKHJldmlzaW9uIDE5MDg0MykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTMsNiArMzEz
LDEwIEBAIFdLX0VYUE9SVCBib29sIFdLUHJlZmVyZW5jZXNHZXROZXdCbG9ja0kKIFdLX0VYUE9S
VCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRTdWJwaXhlbENTU09NRWxlbWVudE1ldHJpY3NFbmFibGVk
KFdLUHJlZmVyZW5jZXNSZWYsIGJvb2wpOwogV0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNlc0dl
dFN1YnBpeGVsQ1NTT01FbGVtZW50TWV0cmljc0VuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZik7CiAK
Ky8vIERlZmF1bHRzIHRvIGZhbHNlLgorV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldFVz
ZXNTaW5nbGVMYXJnZVRpbGUoV0tQcmVmZXJlbmNlc1JlZiwgYm9vbCk7CitXS19FWFBPUlQgYm9v
bCBXS1ByZWZlcmVuY2VzR2V0VXNlc1NpbmdsZUxhcmdlVGlsZShXS1ByZWZlcmVuY2VzUmVmKTsK
KwogV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1Jlc2V0VGVzdFJ1bm5lck92ZXJyaWRlcyhX
S1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKTsKIAogLy8gRGVmYXVsdHMgdG8gZmFsc2Uu
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CShyZXZpc2lvbiAxOTA4NDMpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3MzgsNiArMjczOCw3IEBAIHZvaWQgV2Vi
UGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2UKICAgICBzZXR0aW5ncy5zZXRTaG93UmVw
YWludENvdW50ZXIoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojpj
b21wb3NpdGluZ1JlcGFpbnRDb3VudGVyc1Zpc2libGVLZXkoKSkpOwogICAgIHNldHRpbmdzLnNl
dFNob3dUaWxlZFNjcm9sbGluZ0luZGljYXRvcihzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2Vi
UHJlZmVyZW5jZXNLZXk6OnRpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yVmlzaWJsZUtleSgpKSk7CiAg
ICAgc2V0dGluZ3Muc2V0VmlzaWJsZURlYnVnT3ZlcmxheVJlZ2lvbnMoc3RvcmUuZ2V0VUludDMy
VmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnZpc2libGVEZWJ1Z092ZXJsYXlSZWdpb25z
S2V5KCkpKTsKKyAgICBzZXR0aW5ncy5zZXRVc2VzU2luZ2xlTGFyZ2VUaWxlKHN0b3JlLmdldEJv
b2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6dXNlc1NpbmdsZUxhcmdlVGlsZUtleSgp
KSk7CiAgICAgCiAgICAgc2V0dGluZ3Muc2V0QWdncmVzc2l2ZVRpbGVSZXRlbnRpb25FbmFibGVk
KHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6YWdncmVzc2l2ZVRp
bGVSZXRlbnRpb25FbmFibGVkS2V5KCkpKTsKICAgICBzZXR0aW5ncy5zZXRUZW1wb3JhcnlUaWxl
Q29ob3J0UmV0ZW50aW9uRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVy
ZW5jZXNLZXk6OnRlbXBvcmFyeVRpbGVDb2hvcnRSZXRlbnRpb25FbmFibGVkS2V5KCkpKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MDg0OCkKKysrIFNvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE1LTEwLTExICBT
YWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRk
IGRlYnVnIHNldHRpbmdzIGZvciBzaW5nbGUgbGFyZ2UgdGlsZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5OTc3CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8yMzAxNzA5Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmg6CisgICAgICAgICog
V2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgaW5p
dGlhbGl6ZV0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyB1c2VzU2luZ2xlTGFyZ2VUaWxl
XSk6CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIHNldFVzZXNTaW5nbGVMYXJnZVRpbGU6XSk6
CisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaDoKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX3ByZWZlcmVuY2VzQ2hhbmdl
ZDpdKToKKwogMjAxNS0xMC0xMCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtpT1NdIFJlbW92ZSB1bm5lY2Vzc2FyeSBpT1MgdmVyc2lvbiBjaGVja3MKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1By
aXZhdGUuaAkocmV2aXNpb24gMTkwODQzKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDYgKzEzMiw3
IEBACiAjZGVmaW5lIFdlYktpdE5vdGlmaWNhdGlvbnNFbmFibGVkS2V5IEAiV2ViS2l0Tm90aWZp
Y2F0aW9uc0VuYWJsZWQiCiAjZGVmaW5lIFdlYktpdFN1cHByZXNzZXNJbmNyZW1lbnRhbFJlbmRl
cmluZ0tleSBAIldlYktpdFN1cHByZXNzZXNJbmNyZW1lbnRhbFJlbmRlcmluZyIKICNkZWZpbmUg
V2ViS2l0U3VicGl4ZWxDU1NPTUVsZW1lbnRNZXRyaWNzRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJX
ZWJLaXRTdWJwaXhlbENTU09NRWxlbWVudE1ldHJpY3NFbmFibGVkIgorI2RlZmluZSBXZWJLaXRV
c2VzU2luZ2xlTGFyZ2VUaWxlUHJlZmVyZW5jZUtleSBAIldlYktpdFVzZXNTaW5nbGVMYXJnZVRp
bGUiCiAjaWYgVEFSR0VUX09TX0lQSE9ORQogI2RlZmluZSBXZWJLaXRBdWRpb1Nlc3Npb25DYXRl
Z29yeU92ZXJyaWRlIEAiV2ViS2l0QXVkaW9TZXNzaW9uQ2F0ZWdvcnlPdmVycmlkZSIKICNkZWZp
bmUgV2ViS2l0QVZLaXRFbmFibGVkIEAiV2ViS2l0QVZLaXRFbmFibGVkIgpJbmRleDogU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCShyZXZpc2lvbiAxOTA4NDMp
CisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC01MDYsNiArNTA2LDcgQEAgKyAodm9pZClpbml0aWFsaXplCiAgICAgICAgIFtO
U051bWJlciBudW1iZXJXaXRoQm9vbDpOT10sICBXZWJLaXRGb3JjZVNvZnR3YXJlV2ViR0xSZW5k
ZXJpbmdQcmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9d
LCAgIFdlYktpdEFjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVkUHJlZmVyZW5jZUtleSwKICAgICAg
ICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOk5PXSwgIFdlYktpdFN1YnBpeGVsQ1NTT01FbGVt
ZW50TWV0cmljc0VuYWJsZWRQcmVmZXJlbmNlS2V5LAorICAgICAgICBbTlNOdW1iZXIgbnVtYmVy
V2l0aEJvb2w6Tk9dLCAgV2ViS2l0VXNlc1NpbmdsZUxhcmdlVGlsZVByZWZlcmVuY2VLZXksCiAj
aWYgUExBVEZPUk0oSU9TKQogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwg
IFdlYktpdEZyYW1lRmxhdHRlbmluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5LAogI2Vsc2UKQEAgLTE5
MDQsNiArMTkwNSwxNiBAQCAtICh2b2lkKXNldFN1YnBpeGVsQ1NTT01FbGVtZW50TWV0cmljc0Vu
CiAgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTplbmFibGVkIGZvcktleTpXZWJLaXRTdWJwaXhlbENT
U09NRWxlbWVudE1ldHJpY3NFbmFibGVkUHJlZmVyZW5jZUtleV07CiB9CiAKKy0gKEJPT0wpdXNl
c1NpbmdsZUxhcmdlVGlsZQoreworICAgIHJldHVybiBbc2VsZiBfYm9vbFZhbHVlRm9yS2V5Oldl
YktpdFVzZXNTaW5nbGVMYXJnZVRpbGVQcmVmZXJlbmNlS2V5XTsKK30KKworLSAodm9pZClzZXRV
c2VzU2luZ2xlTGFyZ2VUaWxlOihCT09MKWVuYWJsZWQKK3sKKyAgICBbc2VsZiBfc2V0Qm9vbFZh
bHVlOmVuYWJsZWQgZm9yS2V5OldlYktpdFVzZXNTaW5nbGVMYXJnZVRpbGVQcmVmZXJlbmNlS2V5
XTsKK30KKwogLSAoQk9PTCl3ZWJHTEVuYWJsZWQKIHsKICAgICByZXR1cm4gW3NlbGYgX2Jvb2xW
YWx1ZUZvcktleTpXZWJLaXRXZWJHTEVuYWJsZWRQcmVmZXJlbmNlS2V5XTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAkocmV2
aXNpb24gMTkwODQzKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNl
c1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjI3LDYgKzIyNyw5IEBAIEBpbnRlcmZhY2Ug
V2ViUHJlZmVyZW5jZXMgKFdlYlByaXZhdGUpCiAtIChCT09MKXN1YnBpeGVsQ1NTT01FbGVtZW50
TWV0cmljc0VuYWJsZWQ7CiAtICh2b2lkKXNldFN1YnBpeGVsQ1NTT01FbGVtZW50TWV0cmljc0Vu
YWJsZWQ6KEJPT0wpZW5hYmxlZDsKIAorLSAoQk9PTCl1c2VzU2luZ2xlTGFyZ2VUaWxlOworLSAo
dm9pZClzZXRVc2VzU2luZ2xlTGFyZ2VUaWxlOihCT09MKWVuYWJsZWQ7CisKIC0gKEJPT0wpd2Vi
R0xFbmFibGVkOwogLSAodm9pZClzZXRXZWJHTEVuYWJsZWQ6KEJPT0wpZW5hYmxlZDsKIApJbmRl
eDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMTkwODQzKQorKysg
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
Mjg1LDYgKzIyODUsNyBAQCAtICh2b2lkKV9wcmVmZXJlbmNlc0NoYW5nZWQ6KFdlYlByZWZlcmVu
CiAgICAgc2V0dGluZ3Muc2V0U2hvd1JlcGFpbnRDb3VudGVyKFtwcmVmZXJlbmNlcyBzaG93UmVw
YWludENvdW50ZXJdKTsKICAgICBzZXR0aW5ncy5zZXRXZWJHTEVuYWJsZWQoW3ByZWZlcmVuY2Vz
IHdlYkdMRW5hYmxlZF0pOwogICAgIHNldHRpbmdzLnNldFN1YnBpeGVsQ1NTT01FbGVtZW50TWV0
cmljc0VuYWJsZWQoW3ByZWZlcmVuY2VzIHN1YnBpeGVsQ1NTT01FbGVtZW50TWV0cmljc0VuYWJs
ZWRdKTsKKyAgICBzZXR0aW5ncy5zZXRVc2VzU2luZ2xlTGFyZ2VUaWxlKFtwcmVmZXJlbmNlcyB1
c2VzU2luZ2xlTGFyZ2VUaWxlXSk7CiAKICAgICBzZXR0aW5ncy5zZXRGb3JjZVNvZnR3YXJlV2Vi
R0xSZW5kZXJpbmcoW3ByZWZlcmVuY2VzIGZvcmNlU29mdHdhcmVXZWJHTFJlbmRlcmluZ10pOwog
ICAgIHNldHRpbmdzLnNldEFjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVkKFtwcmVmZXJlbmNlcyBh
Y2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZF0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262938</attachid>
            <date>2015-10-12 16:33:48 -0700</date>
            <delta_ts>2015-10-12 16:34:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149977-20151012163313.patch</filename>
            <type>text/plain</type>
            <size>16831</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MDkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDE1LTEwLTEyICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGRlYnVn
IHNldHRpbmdzIGZvciBzaW5nbGUgbGFyZ2UgdGlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5OTc3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8y
MzAxNzA5Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbnN0ZWFkIG9mIGNyZWF0aW5nIHRoZSBHcmFwaGljc0xheWVyIHdpdGggYSBmaXhlZCBzaXpl
IDUxMng1MTIsIHdlIG5lZWQKKyAgICAgICAgdG8gcmVhZCB0aGUgdXNlc1NpbmdsZUxhcmdlTGF5
ZXIgc2V0dGluZy4gSWYgaXRzIHZhbHVlIGlzIHRydWUsIHdlIHNldCB0aGUKKyAgICAgICAgbGF5
ZXIgdGlsZVNpemUgdG8gNDA5Nng0MDk2LgorCisgICAgICAgICogcGFnZS9TZXR0aW5ncy5pbjoK
KyAgICAgICAgRGVmaW5lIHRoZSBuYW1lIG9mIHRoZSBzZXR0aW5nIGFuZCBpdHMgZGVmYXVsdCB2
YWx1ZS4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXll
ci5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6c2V0VGlsZVNpemUpOgorICAg
ICAgICBEZWZpbmUgdGhlIHNldFRpbGVTaXplKCkgdmlydHVhbCBmdW5jdGlvbiBpbiB0aGUgR3Jh
cGhpY3NMYXllciBjbGFzcy4KKyAgICAgICAgSXQgaXMgZ29pbmcgdG8gYmUgY2FsbGVkIGZyb20g
UmVuZGVyTGF5ZXJCYWNraW5nOjpjcmVhdGVHcmFwaGljc0xheWVyKCkuCisgICAgICAgIAorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZy5oOgorICAgICAgICAoV2ViQ29y
ZTo6ZGVmYXVsdFRpbGVTaXplKToKKyAgICAgICAgRGVmaW5lIHRoZSBkZWZhdWx0IHRpbGVTaXpl
IHdoaWNoIHdpbGwgZGVwZW5kIG9uIHRoZSB1c2VHaWFudFRpbGVzCisgICAgICAgIHNldHRpbmcu
CisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OkdyYXBoaWNzTGF5ZXJD
QSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmg6Cisg
ICAgICAgIE92ZXJyaWRlIHNldFRpbGVTaXplKCkgd2hpY2ggaXMgaW5oZXJpdGVkIGZyb20gR3Jh
cGhpY3NMYXllciBhbmQgb3ZlcnJpZGUKKyAgICAgICAgcGxhdGZvcm1DQUxheWVyVGlsZVNpemUo
KSB3aGljaCBpcyBpbmhlcml0ZWQgZnJvbSBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaDoKKyAgICAg
ICAgRGVmaW5lIHRoZSBwbGF0Zm9ybUNBTGF5ZXJUaWxlU2l6ZSgpIHZpcnR1YWwgZnVuY3Rpb24g
aW4gdGhlIFBsYXRmb3JtQ0FMYXllckNsaWVudAorICAgICAgICBjbGFzcy4gSXQgaXMgZ29pbmcg
dG8gYmUgY2FsbGVkIGZyb20gVGlsZUNvbnRyb2xsZXI6OnRpbGVTaXplKCkuCisgICAgICAgIAor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjpUaWxlQ29udHJvbGxlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgR2V0IHRoZSB0
aWxlU2l6ZSBmcm9tIHRoZSBhc3NvY2lhdGVkIG93bmluZyBncmFwaGljcyBsYXllci4KKyAgICAg
ICAgCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnRpbGVTaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyQmFja2luZzo6Y3JlYXRlR3JhcGhpY3NMYXllcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnNldFRpbGVkQmFja2luZ0hhc01hcmdpbnMpOgor
ICAgICAgICBTZXQgdGhlIHRpbGVTaXplIG9mIHRoZSBHcmFwaGljc0xheWVyIGJhc2VkIG9uIHRo
ZSB1c2VHaWFudFRpbGVzCisgICAgICAgIHNldHRpbmcuCisgICAgICAgIAorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaDoKKyAgICAgICAgRGVmaW5lIGEgaGVscGVyIGZ1
bmN0aW9uIHRpbGVTaXplKCkgd2hpY2ggcmVhZHMgdGhlIHNldHRpbmcgdXNlR2lhbnRUaWxlcwor
ICAgICAgICBhbmQgZGVjaWRlcyB3aGljaCBzaXplIHRvIHVzZS4KKwogMjAxNS0xMC0xMiAgQnJh
ZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgRm9sbG93dXAgdG86Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4JKHJldmlzaW9uIDE5MDg4NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIwMSw2ICsyMDEsOCBA
QCBzaW1wbGVMaW5lTGF5b3V0RGVidWdCb3JkZXJzRW5hYmxlZCBpbml0CiAKIHN1YnBpeGVsQ1NT
T01FbGVtZW50TWV0cmljc0VuYWJsZWQgaW5pdGlhbD1mYWxzZQogCit1c2VHaWFudFRpbGVzIGlu
aXRpYWw9ZmFsc2UKKwogbWVkaWFTb3VyY2VFbmFibGVkIGluaXRpYWw9dHJ1ZSwgY29uZGl0aW9u
YWw9TUVESUFfU09VUkNFCiAKICMgRklYTUU6IFJlbmFtZSB0byBhbGxvd011bHRpRWxlbWVudElt
cGxpY2l0Rm9ybVN1Ym1pc3Npb24gb25jZSB3ZSB1cHN0cmVhbSB0aGUgaU9TIGNoYW5nZXMgdG8g
V2ViVmlldy5tbS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzTGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyLmgJKHJldmlzaW9uIDE5MDg4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiAr
MzYsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDbGllbnQuaCIKICNpbmNsdWRlICJQYXRo
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgorI2luY2x1ZGUgIlRpbGVkQmFja2luZy5o
IgogI2luY2x1ZGUgIlRyYW5zZm9ybU9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJXaW5kUnVsZS5o
IgogI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KQEAgLTIzNSw2ICsyMzYsOCBAQCBwdWJsaWM6
CiAgICAgCiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0VGlsZVNpemUoY29uc3QgSW50U2l6ZSYpIHsgfQorCiAgICAgdmlydHVh
bCB2b2lkIGluaXRpYWxpemUoVHlwZSkgeyB9CiAKICAgICB0eXBlZGVmIHVpbnQ2NF90IFBsYXRm
b3JtTGF5ZXJJRDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVk
QmFja2luZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1RpbGVkQmFja2luZy5oCShyZXZpc2lvbiAxOTA4ODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsOSArMjgs
MTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY29uc3QgaW50IGRlZmF1bHRU
aWxlV2lkdGggPSA1MTI7Ci1zdGF0aWMgY29uc3QgaW50IGRlZmF1bHRUaWxlSGVpZ2h0ID0gNTEy
OworaW5saW5lIHN0YXRpYyBJbnRTaXplIGRlZmF1bHRUaWxlU2l6ZShib29sIHVzZUdpYW50VGls
ZXMgPSBmYWxzZSkKK3sKKyAgICBzdGF0aWMgY29uc3QgaW50IGtUaWxlZExheWVyVGlsZVNpemUg
PSA1MTI7CisKKyAgICAvLyBUaGlzIGlzIGFuIGV4cGVyaW1lbnRhbCB2YWx1ZSBmb3IgZGVidWdn
aW5nIGFuZCBldmFsdWF0aW5nIHRoZSBvdmVyaGVhZCB3aGljaCBtYXkgYmUKKyAgICAvLyBpbmN1
cnJlZCBkdWUgdG8gYSBsYXJnZSB0aWxlIHNpemUuCisgICAgc3RhdGljIGNvbnN0IGludCBrR2lh
bnRUaWxlZExheWVyVGlsZVNpemUgPSA0MDk2OwogCisgICAgcmV0dXJuIHVzZUdpYW50VGlsZXMg
PyBJbnRTaXplKGtHaWFudFRpbGVkTGF5ZXJUaWxlU2l6ZSwga0dpYW50VGlsZWRMYXllclRpbGVT
aXplKSA6IEludFNpemUoa1RpbGVkTGF5ZXJUaWxlU2l6ZSwga1RpbGVkTGF5ZXJUaWxlU2l6ZSk7
Cit9CisgICAgCiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgUGxhdGZvcm1DQUxheWVyOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBo
aWNzTGF5ZXJDQS5jcHAJKHJldmlzaW9uIDE5MDg4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1
OSw2ICszNTksNyBAQCBHcmFwaGljc0xheWVyQ0E6OkdyYXBoaWNzTGF5ZXJDQShUeXBlIGxhCiAg
ICAgLCBtX3VzaW5nQmFja2Ryb3BMYXllclR5cGUoZmFsc2UpCiAgICAgLCBtX2lzVmlld3BvcnRD
b25zdHJhaW5lZChmYWxzZSkKICAgICAsIG1faW50ZXJzZWN0c0NvdmVyYWdlUmVjdChmYWxzZSkK
KyAgICAsIG1fdGlsZVNpemUoZGVmYXVsdFRpbGVTaXplKCkpCiB7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5oCShyZXZpc2lvbiAxOTA4ODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9HcmFwaGljc0xheWVyQ0EuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTAgKzQ3LDYgQEAg
Y2xhc3MgVHJhbnNmb3JtU3RhdGU7CiAKIGNsYXNzIEdyYXBoaWNzTGF5ZXJDQSA6IHB1YmxpYyBH
cmFwaGljc0xheWVyLCBwdWJsaWMgUGxhdGZvcm1DQUxheWVyQ2xpZW50IHsKIHB1YmxpYzoKLSAg
ICAvLyBUaGUgd2lkdGggYW5kIGhlaWdodCBvZiBhIHNpbmdsZSB0aWxlIGluIGEgdGlsZWQgbGF5
ZXIuIFNob3VsZCBiZSBsYXJnZSBlbm91Z2ggdG8KLSAgICAvLyBhdm9pZCBsb3RzIG9mIHNtYWxs
IHRpbGVzIChhbmQgdGhlcmVmb3JlIGxvdHMgb2YgZHJhd2luZyBjYWxsYmFja3MpLCBidXQgc21h
bGwgZW5vdWdoCi0gICAgLy8gdG8ga2VlcCB0aGUgb3ZlcmFsbCB0aWxlIGNvc3QgbG93LgotICAg
IHN0YXRpYyBjb25zdCBpbnQga1RpbGVkTGF5ZXJUaWxlU2l6ZSA9IDUxMjsKIAogICAgIFdFQkNP
UkVfRVhQT1JUIGV4cGxpY2l0IEdyYXBoaWNzTGF5ZXJDQShUeXBlLCBHcmFwaGljc0xheWVyQ2xp
ZW50Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+R3JhcGhpY3NMYXllckNBKCk7CkBA
IC0yMDAsNiArMTk2LDkgQEAgcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIGJv
b2wgcGxhdGZvcm1DQUxheWVyU2hvdWxkQWdncmVzc2l2ZWx5UmV0YWluVGlsZXMoUGxhdGZvcm1D
QUxheWVyKikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBib29s
IHBsYXRmb3JtQ0FMYXllclNob3VsZFRlbXBvcmFyaWx5UmV0YWluVGlsZUNvaG9ydHMoUGxhdGZv
cm1DQUxheWVyKikgY29uc3Qgb3ZlcnJpZGU7CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGlsZVNp
emUoY29uc3QgSW50U2l6ZSYgdGlsZVNpemUpIG92ZXJyaWRlIHsgbV90aWxlU2l6ZSA9IHRpbGVT
aXplOyB9CisgICAgdmlydHVhbCBJbnRTaXplIHBsYXRmb3JtQ0FMYXllclRpbGVTaXplKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV90aWxlU2l6ZTsgfQorCiAgICAgdmlydHVhbCBib29sIGlz
Q29tbWl0dGluZ0NoYW5nZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lzQ29tbWl0dGlu
Z0NoYW5nZXM7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRJc1ZpZXdw
b3J0Q29uc3RyYWluZWQoYm9vbCkgb3ZlcnJpZGU7CkBAIC01NzAsNiArNTY5LDggQEAgcHJpdmF0
ZToKIAogICAgIFZlY3RvcjxGbG9hdFJlY3Q+IG1fZGlydHlSZWN0czsKIAorICAgIEludFNpemUg
bV90aWxlU2l6ZTsKKwogICAgIEZsb2F0U2l6ZSBtX3BpeGVsQWxpZ25tZW50T2Zmc2V0OwogCiAg
ICAgTGF5ZXJDaGFuZ2VGbGFncyBtX3VuY29tbWl0dGVkQ2hhbmdlcyB7IDAgfTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRm
b3JtQ0FMYXllckNsaWVudC5oCShyZXZpc2lvbiAxOTA4ODUpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtNjAsNiArNjAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQ0FM
YXllclNob3VsZEFnZ3Jlc3NpdmVseVJldGFpblRpbGVzKFBsYXRmb3JtQ0FMYXllciopIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIHBsYXRmb3JtQ0FMYXllclNob3Vs
ZFRlbXBvcmFyaWx5UmV0YWluVGlsZUNvaG9ydHMoUGxhdGZvcm1DQUxheWVyKikgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQogCisgICAgdmlydHVhbCBJbnRTaXplIHBsYXRmb3JtQ0FMYXllclRpbGVT
aXplKCkgY29uc3QgeyByZXR1cm4gZGVmYXVsdFRpbGVTaXplKCk7IH0KKwogICAgIHZpcnR1YWwg
Ym9vbCBpc0NvbW1pdHRpbmdDaGFuZ2VzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogcHJv
dGVjdGVkOgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNv
bnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMTkwODg1KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01NCw3ICs1NCw2IEBAIFN0cmluZyBUaWxlQ29udHJvbGxlcjo6em9vbWVkT3V0VGls
ZUdyaWQKIFRpbGVDb250cm9sbGVyOjpUaWxlQ29udHJvbGxlcihQbGF0Zm9ybUNBTGF5ZXIqIHJv
b3RQbGF0Zm9ybUxheWVyKQogICAgIDogbV90aWxlQ2FjaGVMYXllcihyb290UGxhdGZvcm1MYXll
cikKICAgICAsIG1fdGlsZUdyaWQoc3RkOjptYWtlX3VuaXF1ZTxUaWxlR3JpZD4oKnRoaXMpKQot
ICAgICwgbV90aWxlU2l6ZShkZWZhdWx0VGlsZVdpZHRoLCBkZWZhdWx0VGlsZUhlaWdodCkKICAg
ICAsIG1fdGlsZVJldmFsaWRhdGlvblRpbWVyKCp0aGlzLCAmVGlsZUNvbnRyb2xsZXI6OnRpbGVS
ZXZhbGlkYXRpb25UaW1lckZpcmVkKQogICAgICwgbV96b29tZWRPdXRDb250ZW50c1NjYWxlKDAp
CiAgICAgLCBtX2RldmljZVNjYWxlRmFjdG9yKG93bmluZ0dyYXBoaWNzTGF5ZXIoKS0+cGxhdGZv
cm1DQUxheWVyRGV2aWNlU2NhbGVGYWN0b3IoKSkKQEAgLTMyOCw4ICszMjcsOCBAQCBGbG9hdFJl
Y3QgVGlsZUNvbnRyb2xsZXI6OmNvbXB1dGVUaWxlQ292CiAgICAgaWYgKG1fdGlsZUNvdmVyYWdl
ID09IENvdmVyYWdlRm9yVmlzaWJsZUFyZWEgfHwgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzaW5n
bGV0b24oKS5pc1VuZGVyTWVtb3J5UHJlc3N1cmUoKSkKICAgICAgICAgcmV0dXJuIHZpc2libGVS
ZWN0OwogCi0gICAgZG91YmxlIGhvcml6b250YWxNYXJnaW4gPSBkZWZhdWx0VGlsZVdpZHRoIC8g
Y29udGVudHNTY2FsZTsKLSAgICBkb3VibGUgdmVydGljYWxNYXJnaW4gPSBkZWZhdWx0VGlsZUhl
aWdodCAvIGNvbnRlbnRzU2NhbGU7CisgICAgZG91YmxlIGhvcml6b250YWxNYXJnaW4gPSB0aWxl
U2l6ZSgpLndpZHRoKCkgLyBjb250ZW50c1NjYWxlOworICAgIGRvdWJsZSB2ZXJ0aWNhbE1hcmdp
biA9IHRpbGVTaXplKCkuaGVpZ2h0KCkgLyBjb250ZW50c1NjYWxlOwogCiAgICAgZG91YmxlIGN1
cnJlbnRUaW1lID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CiAgICAgZG91YmxlIHRp
bWVEZWx0YSA9IGN1cnJlbnRUaW1lIC0gbV92ZWxvY2l0eS5sYXN0VXBkYXRlVGltZTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRy
b2xsZXIuaAkocmV2aXNpb24gMTkwODg1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBA
QCBwdWJsaWM6CiAgICAgZmxvYXQgdGlsZURlYnVnQm9yZGVyV2lkdGgoKSBjb25zdCB7IHJldHVy
biBtX3RpbGVEZWJ1Z0JvcmRlcldpZHRoOyB9CiAgICAgU2Nyb2xsaW5nTW9kZUluZGljYXRpb24g
aW5kaWNhdG9yTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5kaWNhdG9yTW9kZTsgfQogCi0gICAg
dmlydHVhbCBJbnRTaXplIHRpbGVTaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV90aWxl
U2l6ZTsgfQorICAgIHZpcnR1YWwgSW50U2l6ZSB0aWxlU2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG93bmluZ0dyYXBoaWNzTGF5ZXIoKSA/IG93bmluZ0dyYXBoaWNzTGF5ZXIoKS0+cGxh
dGZvcm1DQUxheWVyVGlsZVNpemUoKSA6IGRlZmF1bHRUaWxlU2l6ZSgpOyB9CiAgICAgdmlydHVh
bCBJbnRSZWN0IGJvdW5kcygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgSW50UmVjdCBi
b3VuZHNXaXRob3V0TWFyZ2luKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGhh
c01hcmdpbnMoKSBjb25zdCBvdmVycmlkZTsKQEAgLTE3NSw3ICsxNzUsNiBAQCBwcml2YXRlOgog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxUaWxlR3JpZD4gbV90aWxlR3JpZDsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8VGlsZUdyaWQ+IG1fem9vbWVkT3V0VGlsZUdyaWQ7CiAKLSAgICBJbnRTaXplIG1fdGls
ZVNpemU7CiAgICAgRmxvYXRSZWN0IG1fdmlzaWJsZVJlY3Q7IC8vIE9ubHkgdXNlZCBmb3Igc2Ny
b2xsIHBlcmZvcm1hbmNlIGxvZ2dpbmcuCiAgICAgRmxvYXRSZWN0IG1fY292ZXJhZ2VSZWN0Owog
ICAgIEludFJlY3QgbV9ib3VuZHNBdExhc3RSZXZhbGlkYXRlOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJKHJldmlzaW9uIDE5MDg4
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNjEsNiArMTYxLDExIEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5n
Ojp3aWxsRGVzdHJveUxheWUKICAgICAgICAgY29tcG9zaXRvcigpLmxheWVyVGlsZWRCYWNraW5n
VXNhZ2VDaGFuZ2VkKGxheWVyLCBmYWxzZSk7CiB9CiAKK0ludFNpemUgUmVuZGVyTGF5ZXJCYWNr
aW5nOjp0aWxlU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGRlZmF1bHRUaWxlU2l6ZShyZW5k
ZXJlcigpLmZyYW1lKCkucGFnZSgpLT5zZXR0aW5ncygpLnVzZUdpYW50VGlsZXMoKSk7Cit9CisK
IHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0xheWVyPiBSZW5kZXJMYXllckJhY2tpbmc6OmNyZWF0
ZUdyYXBoaWNzTGF5ZXIoY29uc3QgU3RyaW5nJiBuYW1lLCBHcmFwaGljc0xheWVyOjpUeXBlIGxh
eWVyVHlwZSkKIHsKICAgICBHcmFwaGljc0xheWVyRmFjdG9yeSogZ3JhcGhpY3NMYXllckZhY3Rv
cnkgPSAwOwpAQCAtMTY4LDYgKzE3Myw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0xheWVy
PiBSZW5kZXJMYXkKICAgICAgICAgZ3JhcGhpY3NMYXllckZhY3RvcnkgPSBwYWdlLT5jaHJvbWUo
KS5jbGllbnQoKS5ncmFwaGljc0xheWVyRmFjdG9yeSgpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRy
PEdyYXBoaWNzTGF5ZXI+IGdyYXBoaWNzTGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUoZ3Jh
cGhpY3NMYXllckZhY3RvcnksICp0aGlzLCBsYXllclR5cGUpOworICAgIGdyYXBoaWNzTGF5ZXIt
PnNldFRpbGVTaXplKHRpbGVTaXplKCkpOwogCiAjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQog
ICAgIGdyYXBoaWNzTGF5ZXItPnNldE5hbWUobmFtZSk7CkBAIC0yMjMsOCArMjI5LDggQEAgdm9p
ZCBSZW5kZXJMYXllckJhY2tpbmc6OnNldFRpbGVkQmFja2luZwogICAgIGlmICghbV91c2luZ1Rp
bGVkQ2FjaGVMYXllcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW50IG1hcmdpbkxlZnRBbmRS
aWdodFNpemUgPSBoYXNFeHRlbmRlZEJhY2tncm91bmRPbkxlZnRBbmRSaWdodCA/IGRlZmF1bHRU
aWxlV2lkdGggOiAwOwotICAgIGludCBtYXJnaW5Ub3BBbmRCb3R0b21TaXplID0gaGFzRXh0ZW5k
ZWRCYWNrZ3JvdW5kT25Ub3BBbmRCb3R0b20gPyBkZWZhdWx0VGlsZUhlaWdodCA6IDA7CisgICAg
aW50IG1hcmdpbkxlZnRBbmRSaWdodFNpemUgPSBoYXNFeHRlbmRlZEJhY2tncm91bmRPbkxlZnRB
bmRSaWdodCA/IHRpbGVTaXplKCkud2lkdGgoKSA6IDA7CisgICAgaW50IG1hcmdpblRvcEFuZEJv
dHRvbVNpemUgPSBoYXNFeHRlbmRlZEJhY2tncm91bmRPblRvcEFuZEJvdHRvbSA/IHRpbGVTaXpl
KCkuaGVpZ2h0KCkgOiAwOwogICAgIHRpbGVkQmFja2luZygpLT5zZXRUaWxlTWFyZ2lucyhtYXJn
aW5Ub3BBbmRCb3R0b21TaXplLCBtYXJnaW5Ub3BBbmRCb3R0b21TaXplLCBtYXJnaW5MZWZ0QW5k
UmlnaHRTaXplLCBtYXJnaW5MZWZ0QW5kUmlnaHRTaXplKTsKIH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaAkocmV2aXNpb24gMTkwODg1
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNTcsNiArMjU3LDcgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJMYXllck1v
ZGVsT2JqZWN0JiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fb3duaW5nTGF5ZXIucmVuZGVy
ZXIoKTsgfQogICAgIFJlbmRlckJveCogcmVuZGVyQm94KCkgY29uc3QgeyByZXR1cm4gbV9vd25p
bmdMYXllci5yZW5kZXJCb3goKTsgfQogICAgIFJlbmRlckxheWVyQ29tcG9zaXRvciYgY29tcG9z
aXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fb3duaW5nTGF5ZXIuY29tcG9zaXRvcigpOyB9CisgICAg
SW50U2l6ZSB0aWxlU2l6ZSgpIGNvbnN0OwogCiAgICAgdm9pZCB1cGRhdGVJbnRlcm5hbEhpZXJh
cmNoeSgpOwogICAgIGJvb2wgdXBkYXRlQW5jZXN0b3JDbGlwcGluZ0xheWVyKGJvb2wgbmVlZHNB
bmNlc3RvckNsaXApOwpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTkwODg1KQorKysgU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTUt
MTAtMTIgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgZGVidWcgc2V0dGluZ3MgZm9yIHNpbmdsZSBsYXJnZSB0aWxlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk5NzcKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzIzMDE3MDkzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHA6CisgICAgICAgIChXS1By
ZWZlcmVuY2VzU2V0VXNlc1NpbmdsZUxhcmdlVGlsZSk6CisgICAgICAgIChXS1ByZWZlcmVuY2Vz
R2V0VXNlc1NpbmdsZUxhcmdlVGlsZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUHJl
ZmVyZW5jZXNSZWZQcml2YXRlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyk6CisK
IDIwMTUtMTAtMDkgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAg
ICAgICBEb24ndCBhbGxvdyBwbHVnLWlucyB0byBvdmVycmlkZSBpbWFnZSB0eXBlcyBmb3IgPGVt
YmVkPiBlbGVtZW50cwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2Vz
RGVmaW5pdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJl
ZmVyZW5jZXNEZWZpbml0aW9ucy5oCShyZXZpc2lvbiAxOTA4ODUpCisrKyBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
ODgsNiArMTg4LDcgQEAKICAgICBtYWNybyhUaHJlYWRlZFNjcm9sbGluZ0VuYWJsZWQsIHRocmVh
ZGVkU2Nyb2xsaW5nRW5hYmxlZCwgQm9vbCwgYm9vbCwgdHJ1ZSkgXAogICAgIG1hY3JvKFNpbXBs
ZUxpbmVMYXlvdXRFbmFibGVkLCBzaW1wbGVMaW5lTGF5b3V0RW5hYmxlZCwgQm9vbCwgYm9vbCwg
dHJ1ZSkgXAogICAgIG1hY3JvKFN1YnBpeGVsQ1NTT01FbGVtZW50TWV0cmljc0VuYWJsZWQsIHN1
YnBpeGVsQ1NTT01FbGVtZW50TWV0cmljc0VuYWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCisg
ICAgbWFjcm8oVXNlR2lhbnRUaWxlcywgdXNlR2lhbnRUaWxlcywgQm9vbCwgYm9vbCwgZmFsc2Up
IFwKICAgICBtYWNybyhNZWRpYVN0cmVhbUVuYWJsZWQsIG1lZGlhU3RyZWFtRW5hYmxlZCwgQm9v
bCwgYm9vbCwgZmFsc2UpIFwKICAgICBtYWNybyhVc2VMZWdhY3lUZXh0QWxpZ25Qb3NpdGlvbmVk
RWxlbWVudEJlaGF2aW9yLCB1c2VMZWdhY3lUZXh0QWxpZ25Qb3NpdGlvbmVkRWxlbWVudEJlaGF2
aW9yLCBCb29sLCBib29sLCBmYWxzZSkgXAogICAgIG1hY3JvKFNwYXRpYWxOYXZpZ2F0aW9uRW5h
YmxlZCwgc3BhdGlhbE5hdmlnYXRpb25FbmFibGVkLCBCb29sLCBib29sLCBmYWxzZSkgXApJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNw
cAkocmV2aXNpb24gMTkwODg1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
UHJlZmVyZW5jZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjE3LDYgKzEyMTcsMTYgQEAgYm9v
bCBXS1ByZWZlcmVuY2VzR2V0U3VicGl4ZWxDU1NPTUVsZW1lbgogICAgIHJldHVybiB0b0ltcGwo
cHJlZmVyZW5jZXNSZWYpLT5zdWJwaXhlbENTU09NRWxlbWVudE1ldHJpY3NFbmFibGVkKCk7CiB9
CiAKK3ZvaWQgV0tQcmVmZXJlbmNlc1NldFVzZUdpYW50VGlsZXMoV0tQcmVmZXJlbmNlc1JlZiBw
cmVmZXJlbmNlc1JlZiwgYm9vbCBmbGFnKQoreworICAgIHRvSW1wbChwcmVmZXJlbmNlc1JlZikt
PnNldFVzZUdpYW50VGlsZXMoZmxhZyk7Cit9CisKK2Jvb2wgV0tQcmVmZXJlbmNlc0dldFVzZUdp
YW50VGlsZXMoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZikKK3sKKyAgICByZXR1cm4g
dG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+dXNlR2lhbnRUaWxlcygpOworfQorCiB2b2lkIFdLUHJl
ZmVyZW5jZXNTZXRNZWRpYVN0cmVhbUVuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNl
c1JlZiwgYm9vbCBlbmFibGVkKQogewogICAgIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNldE1l
ZGlhU3RyZWFtRW5hYmxlZChlbmFibGVkKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oCShyZXZpc2lv
biAxOTA4ODUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNl
c1JlZlByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEzLDYgKzMxMywxMCBAQCBXS19FWFBP
UlQgYm9vbCBXS1ByZWZlcmVuY2VzR2V0TmV3QmxvY2tJCiBXS19FWFBPUlQgdm9pZCBXS1ByZWZl
cmVuY2VzU2V0U3VicGl4ZWxDU1NPTUVsZW1lbnRNZXRyaWNzRW5hYmxlZChXS1ByZWZlcmVuY2Vz
UmVmLCBib29sKTsKIFdLX0VYUE9SVCBib29sIFdLUHJlZmVyZW5jZXNHZXRTdWJwaXhlbENTU09N
RWxlbWVudE1ldHJpY3NFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYpOwogCisvLyBEZWZhdWx0cyB0
byBmYWxzZS4KK1dLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRVc2VHaWFudFRpbGVzKFdL
UHJlZmVyZW5jZXNSZWYsIGJvb2wpOworV0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNlc0dldFVz
ZUdpYW50VGlsZXMoV0tQcmVmZXJlbmNlc1JlZik7CisKIFdLX0VYUE9SVCB2b2lkIFdLUHJlZmVy
ZW5jZXNSZXNldFRlc3RSdW5uZXJPdmVycmlkZXMoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNl
c1JlZik7CiAKIC8vIERlZmF1bHRzIHRvIGZhbHNlLgpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMTkwODg1KQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNzM4LDYgKzI3MzgsNyBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNv
bnN0IFdlCiAgICAgc2V0dGluZ3Muc2V0U2hvd1JlcGFpbnRDb3VudGVyKHN0b3JlLmdldEJvb2xW
YWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6Y29tcG9zaXRpbmdSZXBhaW50Q291bnRlcnNW
aXNpYmxlS2V5KCkpKTsKICAgICBzZXR0aW5ncy5zZXRTaG93VGlsZWRTY3JvbGxpbmdJbmRpY2F0
b3Ioc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojp0aWxlZFNjcm9s
bGluZ0luZGljYXRvclZpc2libGVLZXkoKSkpOwogICAgIHNldHRpbmdzLnNldFZpc2libGVEZWJ1
Z092ZXJsYXlSZWdpb25zKHN0b3JlLmdldFVJbnQzMlZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2Vz
S2V5Ojp2aXNpYmxlRGVidWdPdmVybGF5UmVnaW9uc0tleSgpKSk7CisgICAgc2V0dGluZ3Muc2V0
VXNlR2lhbnRUaWxlcyhzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6
OnVzZUdpYW50VGlsZXNLZXkoKSkpOwogICAgIAogICAgIHNldHRpbmdzLnNldEFnZ3Jlc3NpdmVU
aWxlUmV0ZW50aW9uRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5j
ZXNLZXk6OmFnZ3Jlc3NpdmVUaWxlUmV0ZW50aW9uRW5hYmxlZEtleSgpKSk7CiAgICAgc2V0dGlu
Z3Muc2V0VGVtcG9yYXJ5VGlsZUNvaG9ydFJldGVudGlvbkVuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZh
bHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojp0ZW1wb3JhcnlUaWxlQ29ob3J0UmV0ZW50aW9u
RW5hYmxlZEtleSgpKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262939</attachid>
            <date>2015-10-12 16:38:30 -0700</date>
            <delta_ts>2015-10-12 18:29:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149977-20151012163754.patch</filename>
            <type>text/plain</type>
            <size>16836</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MDkwMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDE1LTEwLTEyICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGRlYnVn
IHNldHRpbmdzIGZvciB1c2luZyBnaWFudCB0aWxlcyAoNDA5Nng0MDk2KQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5OTc3CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8yMzAxNzA5Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbnN0ZWFkIG9mIGNyZWF0aW5nIHRoZSBHcmFwaGljc0xheWVyIHdpdGgg
YSBmaXhlZCBzaXplIDUxMng1MTIsIHdlIG5lZWQKKyAgICAgICAgdG8gcmVhZCB0aGUgdXNlR2lh
bnRUaWxlcyBzZXR0aW5nLiBJZiBpdHMgdmFsdWUgaXMgdHJ1ZSwgd2Ugc2V0IHRoZSBsYXllcgor
ICAgICAgICB0aWxlU2l6ZSB0byA0MDk2eDQwOTYuCisKKyAgICAgICAgKiBwYWdlL1NldHRpbmdz
LmluOgorICAgICAgICBEZWZpbmUgdGhlIG5hbWUgb2YgdGhlIHNldHRpbmcgYW5kIGl0cyBkZWZh
dWx0IHZhbHVlLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpzZXRUaWxlU2l6ZSk6
CisgICAgICAgIERlZmluZSB0aGUgc2V0VGlsZVNpemUoKSB2aXJ0dWFsIGZ1bmN0aW9uIGluIHRo
ZSBHcmFwaGljc0xheWVyIGNsYXNzLgorICAgICAgICBJdCBpcyBnb2luZyB0byBiZSBjYWxsZWQg
ZnJvbSBSZW5kZXJMYXllckJhY2tpbmc6OmNyZWF0ZUdyYXBoaWNzTGF5ZXIoKS4KKyAgICAgICAg
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nLmg6CisgICAgICAgIChX
ZWJDb3JlOjpkZWZhdWx0VGlsZVNpemUpOgorICAgICAgICBEZWZpbmUgdGhlIGRlZmF1bHQgdGls
ZVNpemUgd2hpY2ggd2lsbCBkZXBlbmQgb24gdGhlIHVzZUdpYW50VGlsZXMKKyAgICAgICAgc2V0
dGluZy4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NM
YXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6R3JhcGhpY3NM
YXllckNBKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
aDoKKyAgICAgICAgT3ZlcnJpZGUgc2V0VGlsZVNpemUoKSB3aGljaCBpcyBpbmhlcml0ZWQgZnJv
bSBHcmFwaGljc0xheWVyIGFuZCBvdmVycmlkZQorICAgICAgICBwbGF0Zm9ybUNBTGF5ZXJUaWxl
U2l6ZSgpIHdoaWNoIGlzIGluaGVyaXRlZCBmcm9tIFBsYXRmb3JtQ0FMYXllckNsaWVudC4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oOgor
ICAgICAgICBEZWZpbmUgdGhlIHBsYXRmb3JtQ0FMYXllclRpbGVTaXplKCkgdmlydHVhbCBmdW5j
dGlvbiBpbiB0aGUgUGxhdGZvcm1DQUxheWVyQ2xpZW50CisgICAgICAgIGNsYXNzLiBJdCBpcyBn
b2luZyB0byBiZSBjYWxsZWQgZnJvbSBUaWxlQ29udHJvbGxlcjo6dGlsZVNpemUoKS4KKyAgICAg
ICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OlRpbGVDb250cm9sbGVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oOgorICAgICAgICBHZXQg
dGhlIHRpbGVTaXplIGZyb20gdGhlIGFzc29jaWF0ZWQgb3duaW5nIGdyYXBoaWNzIGxheWVyLgor
ICAgICAgICAKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dGlsZVNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpjcmVhdGVHcmFwaGljc0xheWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6c2V0VGlsZWRCYWNraW5nSGFzTWFyZ2lu
cyk6CisgICAgICAgIFNldCB0aGUgdGlsZVNpemUgb2YgdGhlIEdyYXBoaWNzTGF5ZXIgYmFzZWQg
b24gdGhlIHVzZUdpYW50VGlsZXMKKyAgICAgICAgc2V0dGluZy4KKyAgICAgICAgCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oOgorICAgICAgICBEZWZpbmUgYSBoZWxw
ZXIgZnVuY3Rpb24gdGlsZVNpemUoKSB3aGljaCByZWFkcyB0aGUgc2V0dGluZyB1c2VHaWFudFRp
bGVzCisgICAgICAgIGFuZCBkZWNpZGVzIHdoaWNoIHNpemUgdG8gdXNlLgorCiAyMDE1LTEwLTEy
ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBGb2xsb3d1cCB0
bzoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgkocmV2aXNpb24gMTkwODg1KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjAxLDYgKzIw
MSw4IEBAIHNpbXBsZUxpbmVMYXlvdXREZWJ1Z0JvcmRlcnNFbmFibGVkIGluaXQKIAogc3VicGl4
ZWxDU1NPTUVsZW1lbnRNZXRyaWNzRW5hYmxlZCBpbml0aWFsPWZhbHNlCiAKK3VzZUdpYW50VGls
ZXMgaW5pdGlhbD1mYWxzZQorCiBtZWRpYVNvdXJjZUVuYWJsZWQgaW5pdGlhbD10cnVlLCBjb25k
aXRpb25hbD1NRURJQV9TT1VSQ0UKIAogIyBGSVhNRTogUmVuYW1lIHRvIGFsbG93TXVsdGlFbGVt
ZW50SW1wbGljaXRGb3JtU3VibWlzc2lvbiBvbmNlIHdlIHVwc3RyZWFtIHRoZSBpT1MgY2hhbmdl
cyB0byBXZWJWaWV3Lm1tLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAkocmV2aXNpb24gMTkwODg1KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Niw2ICszNiw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNsaWVudC5oIgogI2luY2x1ZGUg
IlBhdGguaCIKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCisjaW5jbHVkZSAiVGlsZWRCYWNr
aW5nLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIldpbmRS
dWxlLmgiCiAjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgpAQCAtMjM1LDYgKzIzNiw4IEBAIHB1
YmxpYzoKICAgICAKICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAor
ICAgIHZpcnR1YWwgdm9pZCBzZXRUaWxlU2l6ZShjb25zdCBJbnRTaXplJikgeyB9CisKICAgICB2
aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZShUeXBlKSB7IH0KIAogICAgIHR5cGVkZWYgdWludDY0X3Qg
UGxhdGZvcm1MYXllcklEOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
VGlsZWRCYWNraW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvVGlsZWRCYWNraW5nLmgJKHJldmlzaW9uIDE5MDg4NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw5
ICsyOCwxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCBpbnQgZGVm
YXVsdFRpbGVXaWR0aCA9IDUxMjsKLXN0YXRpYyBjb25zdCBpbnQgZGVmYXVsdFRpbGVIZWlnaHQg
PSA1MTI7CitpbmxpbmUgc3RhdGljIEludFNpemUgZGVmYXVsdFRpbGVTaXplKGJvb2wgdXNlR2lh
bnRUaWxlcyA9IGZhbHNlKQoreworICAgIHN0YXRpYyBjb25zdCBpbnQga1RpbGVkTGF5ZXJUaWxl
U2l6ZSA9IDUxMjsKKworICAgIC8vIFRoaXMgaXMgYW4gZXhwZXJpbWVudGFsIHZhbHVlIGZvciBk
ZWJ1Z2dpbmcgYW5kIGV2YWx1YXRpbmcgdGhlIG92ZXJoZWFkIHdoaWNoIG1heSBiZQorICAgIC8v
IGluY3VycmVkIGR1ZSB0byBhIGxhcmdlIHRpbGUgc2l6ZS4KKyAgICBzdGF0aWMgY29uc3QgaW50
IGtHaWFudFRpbGVkTGF5ZXJUaWxlU2l6ZSA9IDQwOTY7CiAKKyAgICByZXR1cm4gdXNlR2lhbnRU
aWxlcyA/IEludFNpemUoa0dpYW50VGlsZWRMYXllclRpbGVTaXplLCBrR2lhbnRUaWxlZExheWVy
VGlsZVNpemUpIDogSW50U2l6ZShrVGlsZWRMYXllclRpbGVTaXplLCBrVGlsZWRMYXllclRpbGVT
aXplKTsKK30KKyAgICAKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBQbGF0Zm9ybUNBTGF5ZXI7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmNwcAkocmV2aXNpb24gMTkwODg1KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzU5LDYgKzM1OSw3IEBAIEdyYXBoaWNzTGF5ZXJDQTo6R3JhcGhpY3NMYXllckNBKFR5cGUg
bGEKICAgICAsIG1fdXNpbmdCYWNrZHJvcExheWVyVHlwZShmYWxzZSkKICAgICAsIG1faXNWaWV3
cG9ydENvbnN0cmFpbmVkKGZhbHNlKQogICAgICwgbV9pbnRlcnNlY3RzQ292ZXJhZ2VSZWN0KGZh
bHNlKQorICAgICwgbV90aWxlU2l6ZShkZWZhdWx0VGlsZVNpemUoKSkKIHsKIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NM
YXllckNBLmgJKHJldmlzaW9uIDE5MDg4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NywxMCArNDcs
NiBAQCBjbGFzcyBUcmFuc2Zvcm1TdGF0ZTsKIAogY2xhc3MgR3JhcGhpY3NMYXllckNBIDogcHVi
bGljIEdyYXBoaWNzTGF5ZXIsIHB1YmxpYyBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQgewogcHVibGlj
OgotICAgIC8vIFRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIGEgc2luZ2xlIHRpbGUgaW4gYSB0aWxl
ZCBsYXllci4gU2hvdWxkIGJlIGxhcmdlIGVub3VnaCB0bwotICAgIC8vIGF2b2lkIGxvdHMgb2Yg
c21hbGwgdGlsZXMgKGFuZCB0aGVyZWZvcmUgbG90cyBvZiBkcmF3aW5nIGNhbGxiYWNrcyksIGJ1
dCBzbWFsbCBlbm91Z2gKLSAgICAvLyB0byBrZWVwIHRoZSBvdmVyYWxsIHRpbGUgY29zdCBsb3cu
Ci0gICAgc3RhdGljIGNvbnN0IGludCBrVGlsZWRMYXllclRpbGVTaXplID0gNTEyOwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgR3JhcGhpY3NMYXllckNBKFR5cGUsIEdyYXBoaWNzTGF5
ZXJDbGllbnQmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5HcmFwaGljc0xheWVyQ0Eo
KTsKQEAgLTIwMCw2ICsxOTYsOSBAQCBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJTaG91bGRBZ2dyZXNzaXZlbHlSZXRhaW5UaWxlcyhQbGF0
Zm9ybUNBTGF5ZXIqKSBjb25zdCBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IGJvb2wgcGxhdGZvcm1DQUxheWVyU2hvdWxkVGVtcG9yYXJpbHlSZXRhaW5UaWxlQ29ob3J0cyhQ
bGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCBvdmVycmlkZTsKIAorICAgIHZpcnR1YWwgdm9pZCBzZXRU
aWxlU2l6ZShjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSkgb3ZlcnJpZGUgeyBtX3RpbGVTaXplID0g
dGlsZVNpemU7IH0KKyAgICB2aXJ0dWFsIEludFNpemUgcGxhdGZvcm1DQUxheWVyVGlsZVNpemUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3RpbGVTaXplOyB9CisKICAgICB2aXJ0dWFsIGJv
b2wgaXNDb21taXR0aW5nQ2hhbmdlcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNDb21t
aXR0aW5nQ2hhbmdlczsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldElz
Vmlld3BvcnRDb25zdHJhaW5lZChib29sKSBvdmVycmlkZTsKQEAgLTU3MCw2ICs1NjksOCBAQCBw
cml2YXRlOgogCiAgICAgVmVjdG9yPEZsb2F0UmVjdD4gbV9kaXJ0eVJlY3RzOwogCisgICAgSW50
U2l6ZSBtX3RpbGVTaXplOworCiAgICAgRmxvYXRTaXplIG1fcGl4ZWxBbGlnbm1lbnRPZmZzZXQ7
CiAKICAgICBMYXllckNoYW5nZUZsYWdzIG1fdW5jb21taXR0ZWRDaGFuZ2VzIHsgMCB9OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xp
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
UGxhdGZvcm1DQUxheWVyQ2xpZW50LmgJKHJldmlzaW9uIDE5MDg4NSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC02MCw2ICs2MCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcGxhdGZv
cm1DQUxheWVyU2hvdWxkQWdncmVzc2l2ZWx5UmV0YWluVGlsZXMoUGxhdGZvcm1DQUxheWVyKikg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1DQUxheWVy
U2hvdWxkVGVtcG9yYXJpbHlSZXRhaW5UaWxlQ29ob3J0cyhQbGF0Zm9ybUNBTGF5ZXIqKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CiAKKyAgICB2aXJ0dWFsIEludFNpemUgcGxhdGZvcm1DQUxheWVy
VGlsZVNpemUoKSBjb25zdCB7IHJldHVybiBkZWZhdWx0VGlsZVNpemUoKTsgfQorCiAgICAgdmly
dHVhbCBib29sIGlzQ29tbWl0dGluZ0NoYW5nZXMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
CiBwcm90ZWN0ZWQ6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9U
aWxlQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxOTA4ODUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU0LDcgKzU0LDYgQEAgU3RyaW5nIFRpbGVDb250cm9sbGVyOjp6b29tZWRP
dXRUaWxlR3JpZAogVGlsZUNvbnRyb2xsZXI6OlRpbGVDb250cm9sbGVyKFBsYXRmb3JtQ0FMYXll
ciogcm9vdFBsYXRmb3JtTGF5ZXIpCiAgICAgOiBtX3RpbGVDYWNoZUxheWVyKHJvb3RQbGF0Zm9y
bUxheWVyKQogICAgICwgbV90aWxlR3JpZChzdGQ6Om1ha2VfdW5pcXVlPFRpbGVHcmlkPigqdGhp
cykpCi0gICAgLCBtX3RpbGVTaXplKGRlZmF1bHRUaWxlV2lkdGgsIGRlZmF1bHRUaWxlSGVpZ2h0
KQogICAgICwgbV90aWxlUmV2YWxpZGF0aW9uVGltZXIoKnRoaXMsICZUaWxlQ29udHJvbGxlcjo6
dGlsZVJldmFsaWRhdGlvblRpbWVyRmlyZWQpCiAgICAgLCBtX3pvb21lZE91dENvbnRlbnRzU2Nh
bGUoMCkKICAgICAsIG1fZGV2aWNlU2NhbGVGYWN0b3Iob3duaW5nR3JhcGhpY3NMYXllcigpLT5w
bGF0Zm9ybUNBTGF5ZXJEZXZpY2VTY2FsZUZhY3RvcigpKQpAQCAtMzI4LDggKzMyNyw4IEBAIEZs
b2F0UmVjdCBUaWxlQ29udHJvbGxlcjo6Y29tcHV0ZVRpbGVDb3YKICAgICBpZiAobV90aWxlQ292
ZXJhZ2UgPT0gQ292ZXJhZ2VGb3JWaXNpYmxlQXJlYSB8fCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OnNpbmdsZXRvbigpLmlzVW5kZXJNZW1vcnlQcmVzc3VyZSgpKQogICAgICAgICByZXR1cm4gdmlz
aWJsZVJlY3Q7CiAKLSAgICBkb3VibGUgaG9yaXpvbnRhbE1hcmdpbiA9IGRlZmF1bHRUaWxlV2lk
dGggLyBjb250ZW50c1NjYWxlOwotICAgIGRvdWJsZSB2ZXJ0aWNhbE1hcmdpbiA9IGRlZmF1bHRU
aWxlSGVpZ2h0IC8gY29udGVudHNTY2FsZTsKKyAgICBkb3VibGUgaG9yaXpvbnRhbE1hcmdpbiA9
IHRpbGVTaXplKCkud2lkdGgoKSAvIGNvbnRlbnRzU2NhbGU7CisgICAgZG91YmxlIHZlcnRpY2Fs
TWFyZ2luID0gdGlsZVNpemUoKS5oZWlnaHQoKSAvIGNvbnRlbnRzU2NhbGU7CiAKICAgICBkb3Vi
bGUgY3VycmVudFRpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKICAgICBkb3Vi
bGUgdGltZURlbHRhID0gY3VycmVudFRpbWUgLSBtX3ZlbG9jaXR5Lmxhc3RVcGRhdGVUaW1lOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxl
Q29udHJvbGxlci5oCShyZXZpc2lvbiAxOTA4ODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC05NSw3ICs5
NSw3IEBAIHB1YmxpYzoKICAgICBmbG9hdCB0aWxlRGVidWdCb3JkZXJXaWR0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fdGlsZURlYnVnQm9yZGVyV2lkdGg7IH0KICAgICBTY3JvbGxpbmdNb2RlSW5kaWNh
dGlvbiBpbmRpY2F0b3JNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pbmRpY2F0b3JNb2RlOyB9CiAK
LSAgICB2aXJ0dWFsIEludFNpemUgdGlsZVNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X3RpbGVTaXplOyB9CisgICAgdmlydHVhbCBJbnRTaXplIHRpbGVTaXplKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gb3duaW5nR3JhcGhpY3NMYXllcigpID8gb3duaW5nR3JhcGhpY3NMYXllcigp
LT5wbGF0Zm9ybUNBTGF5ZXJUaWxlU2l6ZSgpIDogZGVmYXVsdFRpbGVTaXplKCk7IH0KICAgICB2
aXJ0dWFsIEludFJlY3QgYm91bmRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBJbnRS
ZWN0IGJvdW5kc1dpdGhvdXRNYXJnaW4oKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJv
b2wgaGFzTWFyZ2lucygpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMTc1LDcgKzE3NSw2IEBAIHByaXZh
dGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRpbGVHcmlkPiBtX3RpbGVHcmlkOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxUaWxlR3JpZD4gbV96b29tZWRPdXRUaWxlR3JpZDsKIAotICAgIEludFNpemUg
bV90aWxlU2l6ZTsKICAgICBGbG9hdFJlY3QgbV92aXNpYmxlUmVjdDsgLy8gT25seSB1c2VkIGZv
ciBzY3JvbGwgcGVyZm9ybWFuY2UgbG9nZ2luZy4KICAgICBGbG9hdFJlY3QgbV9jb3ZlcmFnZVJl
Y3Q7CiAgICAgSW50UmVjdCBtX2JvdW5kc0F0TGFzdFJldmFsaWRhdGU7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAkocmV2aXNpb24g
MTkwODg1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw2ICsxNjEsMTEgQEAgdm9pZCBSZW5kZXJMYXllckJh
Y2tpbmc6OndpbGxEZXN0cm95TGF5ZQogICAgICAgICBjb21wb3NpdG9yKCkubGF5ZXJUaWxlZEJh
Y2tpbmdVc2FnZUNoYW5nZWQobGF5ZXIsIGZhbHNlKTsKIH0KIAorSW50U2l6ZSBSZW5kZXJMYXll
ckJhY2tpbmc6OnRpbGVTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZGVmYXVsdFRpbGVTaXpl
KHJlbmRlcmVyKCkuZnJhbWUoKS5wYWdlKCktPnNldHRpbmdzKCkudXNlR2lhbnRUaWxlcygpKTsK
K30KKwogc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzTGF5ZXI+IFJlbmRlckxheWVyQmFja2luZzo6
Y3JlYXRlR3JhcGhpY3NMYXllcihjb25zdCBTdHJpbmcmIG5hbWUsIEdyYXBoaWNzTGF5ZXI6OlR5
cGUgbGF5ZXJUeXBlKQogewogICAgIEdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBncmFwaGljc0xheWVy
RmFjdG9yeSA9IDA7CkBAIC0xNjgsNiArMTczLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNz
TGF5ZXI+IFJlbmRlckxheQogICAgICAgICBncmFwaGljc0xheWVyRmFjdG9yeSA9IHBhZ2UtPmNo
cm9tZSgpLmNsaWVudCgpLmdyYXBoaWNzTGF5ZXJGYWN0b3J5KCk7CiAKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8R3JhcGhpY3NMYXllcj4gZ3JhcGhpY3NMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0
ZShncmFwaGljc0xheWVyRmFjdG9yeSwgKnRoaXMsIGxheWVyVHlwZSk7CisgICAgZ3JhcGhpY3NM
YXllci0+c2V0VGlsZVNpemUodGlsZVNpemUoKSk7CiAKICNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJ
TkcpCiAgICAgZ3JhcGhpY3NMYXllci0+c2V0TmFtZShuYW1lKTsKQEAgLTIyMyw4ICsyMjksOCBA
QCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6c2V0VGlsZWRCYWNraW5nCiAgICAgaWYgKCFtX3Vz
aW5nVGlsZWRDYWNoZUxheWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBpbnQgbWFyZ2luTGVm
dEFuZFJpZ2h0U2l6ZSA9IGhhc0V4dGVuZGVkQmFja2dyb3VuZE9uTGVmdEFuZFJpZ2h0ID8gZGVm
YXVsdFRpbGVXaWR0aCA6IDA7Ci0gICAgaW50IG1hcmdpblRvcEFuZEJvdHRvbVNpemUgPSBoYXNF
eHRlbmRlZEJhY2tncm91bmRPblRvcEFuZEJvdHRvbSA/IGRlZmF1bHRUaWxlSGVpZ2h0IDogMDsK
KyAgICBpbnQgbWFyZ2luTGVmdEFuZFJpZ2h0U2l6ZSA9IGhhc0V4dGVuZGVkQmFja2dyb3VuZE9u
TGVmdEFuZFJpZ2h0ID8gdGlsZVNpemUoKS53aWR0aCgpIDogMDsKKyAgICBpbnQgbWFyZ2luVG9w
QW5kQm90dG9tU2l6ZSA9IGhhc0V4dGVuZGVkQmFja2dyb3VuZE9uVG9wQW5kQm90dG9tID8gdGls
ZVNpemUoKS5oZWlnaHQoKSA6IDA7CiAgICAgdGlsZWRCYWNraW5nKCktPnNldFRpbGVNYXJnaW5z
KG1hcmdpblRvcEFuZEJvdHRvbVNpemUsIG1hcmdpblRvcEFuZEJvdHRvbVNpemUsIG1hcmdpbkxl
ZnRBbmRSaWdodFNpemUsIG1hcmdpbkxlZnRBbmRSaWdodFNpemUpOwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCShyZXZpc2lvbiAx
OTA4ODUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI1Nyw2ICsyNTcsNyBAQCBwcml2YXRlOgogICAgIFJlbmRlckxh
eWVyTW9kZWxPYmplY3QmIHJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9vd25pbmdMYXllci5y
ZW5kZXJlcigpOyB9CiAgICAgUmVuZGVyQm94KiByZW5kZXJCb3goKSBjb25zdCB7IHJldHVybiBt
X293bmluZ0xheWVyLnJlbmRlckJveCgpOyB9CiAgICAgUmVuZGVyTGF5ZXJDb21wb3NpdG9yJiBj
b21wb3NpdG9yKCkgY29uc3QgeyByZXR1cm4gbV9vd25pbmdMYXllci5jb21wb3NpdG9yKCk7IH0K
KyAgICBJbnRTaXplIHRpbGVTaXplKCkgY29uc3Q7CiAKICAgICB2b2lkIHVwZGF0ZUludGVybmFs
SGllcmFyY2h5KCk7CiAgICAgYm9vbCB1cGRhdGVBbmNlc3RvckNsaXBwaW5nTGF5ZXIoYm9vbCBu
ZWVkc0FuY2VzdG9yQ2xpcCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTA4ODUpCisrKyBT
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAor
MjAxNS0xMC0xMiAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBkZWJ1ZyBzZXR0aW5ncyBmb3IgdXNpbmcgZ2lhbnQgdGlsZXMgKDQwOTZ4
NDA5NikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
OTk3NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjMwMTcwOTM+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXNE
ZWZpbml0aW9ucy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNw
cDoKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRVc2VHaWFudFRpbGVzKToKKyAgICAgICAgKFdL
UHJlZmVyZW5jZXNHZXRVc2VHaWFudFRpbGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2Vz
KToKKwogMjAxNS0xMC0wOSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgog
CiAgICAgICAgIERvbid0IGFsbG93IHBsdWctaW5zIHRvIG92ZXJyaWRlIGltYWdlIHR5cGVzIGZv
ciA8ZW1iZWQ+IGVsZW1lbnRzCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVy
ZW5jZXNEZWZpbml0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmgJKHJldmlzaW9uIDE5MDg4NSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE4OCw2ICsxODgsNyBAQAogICAgIG1hY3JvKFRocmVhZGVkU2Nyb2xsaW5nRW5hYmxlZCwg
dGhyZWFkZWRTY3JvbGxpbmdFbmFibGVkLCBCb29sLCBib29sLCB0cnVlKSBcCiAgICAgbWFjcm8o
U2ltcGxlTGluZUxheW91dEVuYWJsZWQsIHNpbXBsZUxpbmVMYXlvdXRFbmFibGVkLCBCb29sLCBi
b29sLCB0cnVlKSBcCiAgICAgbWFjcm8oU3VicGl4ZWxDU1NPTUVsZW1lbnRNZXRyaWNzRW5hYmxl
ZCwgc3VicGl4ZWxDU1NPTUVsZW1lbnRNZXRyaWNzRW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFsc2Up
IFwKKyAgICBtYWNybyhVc2VHaWFudFRpbGVzLCB1c2VHaWFudFRpbGVzLCBCb29sLCBib29sLCBm
YWxzZSkgXAogICAgIG1hY3JvKE1lZGlhU3RyZWFtRW5hYmxlZCwgbWVkaWFTdHJlYW1FbmFibGVk
LCBCb29sLCBib29sLCBmYWxzZSkgXAogICAgIG1hY3JvKFVzZUxlZ2FjeVRleHRBbGlnblBvc2l0
aW9uZWRFbGVtZW50QmVoYXZpb3IsIHVzZUxlZ2FjeVRleHRBbGlnblBvc2l0aW9uZWRFbGVtZW50
QmVoYXZpb3IsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCiAgICAgbWFjcm8oU3BhdGlhbE5hdmlnYXRp
b25FbmFibGVkLCBzcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBc
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5j
ZXMuY3BwCShyZXZpc2lvbiAxOTA4ODUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tQcmVmZXJlbmNlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMTcsNiArMTIxNywxNiBA
QCBib29sIFdLUHJlZmVyZW5jZXNHZXRTdWJwaXhlbENTU09NRWxlbWVuCiAgICAgcmV0dXJuIHRv
SW1wbChwcmVmZXJlbmNlc1JlZiktPnN1YnBpeGVsQ1NTT01FbGVtZW50TWV0cmljc0VuYWJsZWQo
KTsKIH0KIAordm9pZCBXS1ByZWZlcmVuY2VzU2V0VXNlR2lhbnRUaWxlcyhXS1ByZWZlcmVuY2Vz
UmVmIHByZWZlcmVuY2VzUmVmLCBib29sIGZsYWcpCit7CisgICAgdG9JbXBsKHByZWZlcmVuY2Vz
UmVmKS0+c2V0VXNlR2lhbnRUaWxlcyhmbGFnKTsKK30KKworYm9vbCBXS1ByZWZlcmVuY2VzR2V0
VXNlR2lhbnRUaWxlcyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKQoreworICAgIHJl
dHVybiB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT51c2VHaWFudFRpbGVzKCk7Cit9CisKIHZvaWQg
V0tQcmVmZXJlbmNlc1NldE1lZGlhU3RyZWFtRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZl
cmVuY2VzUmVmLCBib29sIGVuYWJsZWQpCiB7CiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+
c2V0TWVkaWFTdHJlYW1FbmFibGVkKGVuYWJsZWQpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgJKHJl
dmlzaW9uIDE5MDg4NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZl
cmVuY2VzUmVmUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTMsNiArMzEzLDEwIEBAIFdL
X0VYUE9SVCBib29sIFdLUHJlZmVyZW5jZXNHZXROZXdCbG9ja0kKIFdLX0VYUE9SVCB2b2lkIFdL
UHJlZmVyZW5jZXNTZXRTdWJwaXhlbENTU09NRWxlbWVudE1ldHJpY3NFbmFibGVkKFdLUHJlZmVy
ZW5jZXNSZWYsIGJvb2wpOwogV0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNlc0dldFN1YnBpeGVs
Q1NTT01FbGVtZW50TWV0cmljc0VuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZik7CiAKKy8vIERlZmF1
bHRzIHRvIGZhbHNlLgorV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldFVzZUdpYW50VGls
ZXMoV0tQcmVmZXJlbmNlc1JlZiwgYm9vbCk7CitXS19FWFBPUlQgYm9vbCBXS1ByZWZlcmVuY2Vz
R2V0VXNlR2lhbnRUaWxlcyhXS1ByZWZlcmVuY2VzUmVmKTsKKwogV0tfRVhQT1JUIHZvaWQgV0tQ
cmVmZXJlbmNlc1Jlc2V0VGVzdFJ1bm5lck92ZXJyaWRlcyhXS1ByZWZlcmVuY2VzUmVmIHByZWZl
cmVuY2VzUmVmKTsKIAogLy8gRGVmYXVsdHMgdG8gZmFsc2UuCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAxOTA4ODUpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI3MzgsNiArMjczOCw3IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5j
ZXMoY29uc3QgV2UKICAgICBzZXR0aW5ncy5zZXRTaG93UmVwYWludENvdW50ZXIoc3RvcmUuZ2V0
Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojpjb21wb3NpdGluZ1JlcGFpbnRDb3Vu
dGVyc1Zpc2libGVLZXkoKSkpOwogICAgIHNldHRpbmdzLnNldFNob3dUaWxlZFNjcm9sbGluZ0lu
ZGljYXRvcihzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnRpbGVk
U2Nyb2xsaW5nSW5kaWNhdG9yVmlzaWJsZUtleSgpKSk7CiAgICAgc2V0dGluZ3Muc2V0VmlzaWJs
ZURlYnVnT3ZlcmxheVJlZ2lvbnMoc3RvcmUuZ2V0VUludDMyVmFsdWVGb3JLZXkoV2ViUHJlZmVy
ZW5jZXNLZXk6OnZpc2libGVEZWJ1Z092ZXJsYXlSZWdpb25zS2V5KCkpKTsKKyAgICBzZXR0aW5n
cy5zZXRVc2VHaWFudFRpbGVzKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNl
c0tleTo6dXNlR2lhbnRUaWxlc0tleSgpKSk7CiAgICAgCiAgICAgc2V0dGluZ3Muc2V0QWdncmVz
c2l2ZVRpbGVSZXRlbnRpb25FbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVm
ZXJlbmNlc0tleTo6YWdncmVzc2l2ZVRpbGVSZXRlbnRpb25FbmFibGVkS2V5KCkpKTsKICAgICBz
ZXR0aW5ncy5zZXRUZW1wb3JhcnlUaWxlQ29ob3J0UmV0ZW50aW9uRW5hYmxlZChzdG9yZS5nZXRC
b29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnRlbXBvcmFyeVRpbGVDb2hvcnRSZXRl
bnRpb25FbmFibGVkS2V5KCkpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262951</attachid>
            <date>2015-10-12 18:29:46 -0700</date>
            <delta_ts>2015-10-13 09:56:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149977-20151012182910.patch</filename>
            <type>text/plain</type>
            <size>17327</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MDkxMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY1IEBACisyMDE1LTEwLTEyICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGRlYnVn
IHNldHRpbmdzIGZvciB1c2luZyBnaWFudCB0aWxlcyAoNDA5Nng0MDk2KQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5OTc3CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8yMzAxNzA5Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbnN0ZWFkIG9mIGNyZWF0aW5nIHRoZSBHcmFwaGljc0xheWVyIHdpdGgg
YSBmaXhlZCBzaXplIDUxMng1MTIsIHdlIG5lZWQKKyAgICAgICAgdG8gcmVhZCB0aGUgdXNlR2lh
bnRUaWxlcyBzZXR0aW5nLiBJZiBpdHMgdmFsdWUgaXMgdHJ1ZSwgd2Ugc2V0IHRoZSBsYXllcgor
ICAgICAgICB0aWxlU2l6ZSB0byA0MDk2eDQwOTYuCisKKyAgICAgICAgKiBwYWdlL1NldHRpbmdz
LmluOgorICAgICAgICBEZWZpbmUgdGhlIG5hbWUgb2YgdGhlIHNldHRpbmcgYW5kIGl0cyBkZWZh
dWx0IHZhbHVlLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2xpZW50Ojp0
aWxlU2l6ZSk6CisgICAgICAgIERlZmluZSB0aWxlU2l6ZSgpIGluIHRoZSBiYXNlIGNsYXNzIEdy
YXBoaWNzTGF5ZXJDbGllbnQuIFRoaXMgaXMgZ29pbmcgdG8KKyAgICAgICAgYmUgb3ZlcnJpZGRl
biBSZW5kZXJMYXllckJhY2tpbmcuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1RpbGVkQmFja2luZy5oOgorICAgICAgICAoV2ViQ29yZTo6ZGVmYXVsdFRpbGVTaXplKToK
KyAgICAgICAgRGVmaW5lIHRoZSBkZWZhdWx0IHRpbGVTaXplIHdoaWNoIHdpbGwgZGVwZW5kIG9u
IHRoZSB1c2VHaWFudFRpbGVzCisgICAgICAgIHNldHRpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNBOjpwbGF0Zm9ybUNBTGF5ZXJUaWxlU2l6ZSk6CisgICAgICAgIEltcGxlbWVu
dCB0aGUgdmlydHVhbCBmdW5jdGlvbiBHcmFwaGljc0xheWVyQ0E6OnBsYXRmb3JtQ0FMYXllclRp
bGVTaXplKCkuCisgICAgICAgIEl0IHBhc3NlcyB0aGUgY2FsbCB0byBjbGllbnQgR3JhcGhpY3NM
YXllckNsaWVudCB3aGljaCBjYW4gYmUgUmVuZGVyTGF5ZXJCYWNraW5nCisgICAgICAgIGluIG91
ciBjYXNlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNB
Lmg6CisgICAgICAgIE92ZXJyaWRlIGJhc2UgY2xhc3MgZnVuY3Rpb24gUGxhdGZvcm1DQUxheWVy
Q2xpZW50OjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQoKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1DQUxheWVyQ2xpZW50OjpwbGF0Zm9ybUNBTGF5ZXJUaWxlU2l6ZSk6CisgICAgICAgIERl
ZmluZSBwbGF0Zm9ybUNBTGF5ZXJUaWxlU2l6ZSgpIGluIHRoZSBiYXNlIGNsYXNzIFBsYXRmb3Jt
Q0FMYXllckNsaWVudC4KKyAgICAgICAgVGhpcyBpcyBnb2luZyB0byBiZSBvdmVycmlkZGVuIEdy
YXBoaWNzTGF5ZXJDQS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjpUaWxlQ29udHJv
bGxlcik6CisgICAgICAgIE5vIG5lZWQgZm9yIHRoZSBtZW1iZXIgbV90aWxlU2l6ZS4KKyAgICAg
ICAgCisgICAgICAgIChXZWJDb3JlOjpUaWxlQ29udHJvbGxlcjo6Y29tcHV0ZVRpbGVDb3ZlcmFn
ZVJlY3QpOgorICAgICAgICBVc2UgdGhlIGZ1bmN0aW9uIHRpbGVTaXplKCkgaW5zdGVhZCBvZiB1
c2luZyB0aGUgc3RhdGljIHZhbHVlcy4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpUaWxl
Q29udHJvbGxlcjo6dGlsZVNpemUpOgorICAgICAgICBUaGUgdGlsZVNpemUgd2lsbCBiZSByZXRy
aWV2ZWQgZnJvbSB0aGUgb3duaW5nIGdyYXBoaWNzIGxheWVyLgorICAgICAgICAKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oOgorICAgICAgICBObyBuZWVk
IGZvciB0aGUgbWVtYmVyIG1fdGlsZVNpemUuIFRoZSB0aWxlU2l6ZSB3aWxsIGJlIHJldHJpZXZl
ZCBmcm9tIHRoZSBvd25pbmcgZ3JhcGhpY3MgbGF5ZXIuCisKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFj
a2luZzo6c2V0VGlsZWRCYWNraW5nSGFzTWFyZ2lucyk6CisgICAgICAgIFVzZSB0aGUgZnVuY3Rp
b24gdGlsZVNpemUoKSBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBzdGF0aWMgdmFsdWVzLgorICAgICAg
ICAKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dGlsZVNpemUpOgorICAg
ICAgICBPdmVycmlkZSBiYXNlIGNsYXNzIGZ1bmN0aW9uIEdyYXBoaWNzTGF5ZXJDbGllbnQ6OnRp
bGVTaXplKCkuCisgICAgICAgIAorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuaDoKKyAgICAgICAgRGVmaW5lIHRoZSBjb25jcmV0ZSBtZXRob2QgUmVuZGVyTGF5ZXJCYWNr
aW5nOjp0aWxTaXplKCkuCisKIDIwMTUtMTAtMTIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGlPUyBhbmQgRWZsIGJ1aWxkcy4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy5pbgkocmV2aXNpb24gMTkwODg1KQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9TZXR0aW5ncy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjAxLDYgKzIwMSw4IEBAIHNpbXBs
ZUxpbmVMYXlvdXREZWJ1Z0JvcmRlcnNFbmFibGVkIGluaXQKIAogc3VicGl4ZWxDU1NPTUVsZW1l
bnRNZXRyaWNzRW5hYmxlZCBpbml0aWFsPWZhbHNlCiAKK3VzZUdpYW50VGlsZXMgaW5pdGlhbD1m
YWxzZQorCiBtZWRpYVNvdXJjZUVuYWJsZWQgaW5pdGlhbD10cnVlLCBjb25kaXRpb25hbD1NRURJ
QV9TT1VSQ0UKIAogIyBGSVhNRTogUmVuYW1lIHRvIGFsbG93TXVsdGlFbGVtZW50SW1wbGljaXRG
b3JtU3VibWlzc2lvbiBvbmNlIHdlIHVwc3RyZWFtIHRoZSBpT1MgY2hhbmdlcyB0byBXZWJWaWV3
Lm1tLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXll
ckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXJDbGllbnQuaAkocmV2aXNpb24gMTkwODg1KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNsaWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw2ICsyNiw5IEBACiAjaWZuZGVmIEdyYXBoaWNzTGF5ZXJDbGllbnRfaAogI2RlZmlu
ZSBHcmFwaGljc0xheWVyQ2xpZW50X2gKIAorI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1
ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJUaWxlZEJhY2tpbmcuaCIKICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMTgsNiArMTIxLDggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRBZ2dyZXNzaXZlbHlSZXRhaW5UaWxlcyhjb25z
dCBHcmFwaGljc0xheWVyKikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkVGVtcG9yYXJpbHlSZXRhaW5UaWxlQ29ob3J0cyhjb25zdCBHcmFwaGljc0xheWVy
KikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCisgICAgdmlydHVhbCBJbnRTaXplIHRpbGVTaXpl
KCkgY29uc3QgeyByZXR1cm4gZGVmYXVsdFRpbGVTaXplKCk7IH0KKwogICAgIHZpcnR1YWwgYm9v
bCBuZWVkc1BpeGVsQWxpZ21lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmly
dHVhbCBib29sIG5lZWRzSU9TRHVtcFJlbmRlclRyZWVNYWluRnJhbWVSZW5kZXJWaWV3TGF5ZXJJ
c0Fsd2F5c09wYXF1ZUhhY2soY29uc3QgR3JhcGhpY3NMYXllciYpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tp
bmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxl
ZEJhY2tpbmcuaAkocmV2aXNpb24gMTkwODg1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvVGlsZWRCYWNraW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDkgKzI4LDE3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGNvbnN0IGludCBkZWZhdWx0VGlsZVdp
ZHRoID0gNTEyOwotc3RhdGljIGNvbnN0IGludCBkZWZhdWx0VGlsZUhlaWdodCA9IDUxMjsKK2lu
bGluZSBzdGF0aWMgSW50U2l6ZSBkZWZhdWx0VGlsZVNpemUoYm9vbCB1c2VHaWFudFRpbGVzID0g
ZmFsc2UpCit7CisgICAgc3RhdGljIGNvbnN0IGludCBrVGlsZWRMYXllclRpbGVTaXplID0gNTEy
OworCisgICAgLy8gVGhpcyBpcyBhbiBleHBlcmltZW50YWwgdmFsdWUgZm9yIGRlYnVnZ2luZyBh
bmQgZXZhbHVhdGluZyB0aGUgb3ZlcmhlYWQgd2hpY2ggbWF5IGJlCisgICAgLy8gaW5jdXJyZWQg
ZHVlIHRvIGEgbGFyZ2UgdGlsZSBzaXplLgorICAgIHN0YXRpYyBjb25zdCBpbnQga0dpYW50VGls
ZWRMYXllclRpbGVTaXplID0gNDA5NjsKIAorICAgIHJldHVybiB1c2VHaWFudFRpbGVzID8gSW50
U2l6ZShrR2lhbnRUaWxlZExheWVyVGlsZVNpemUsIGtHaWFudFRpbGVkTGF5ZXJUaWxlU2l6ZSkg
OiBJbnRTaXplKGtUaWxlZExheWVyVGlsZVNpemUsIGtUaWxlZExheWVyVGlsZVNpemUpOworfQor
ICAgIAogY2xhc3MgSW50UmVjdDsKIGNsYXNzIFBsYXRmb3JtQ0FMYXllcjsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xh
eWVyQ0EuY3BwCShyZXZpc2lvbiAxOTA4ODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQ5LDYg
KzE0NDksMTEgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OnBsYXRmb3JtQ0FMYXllclNobwogICAg
IHJldHVybiBjbGllbnQoKS5zaG91bGRUZW1wb3JhcmlseVJldGFpblRpbGVDb2hvcnRzKHRoaXMp
OwogfQogCitJbnRTaXplIEdyYXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVyVGlsZVNpemUo
KSBjb25zdAoreworICAgIHJldHVybiBjbGllbnQoKS50aWxlU2l6ZSgpOworfQorCiBzdGF0aWMg
UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUgbGF5ZXJUeXBlRm9yQ3VzdG9tQmFja2Ryb3BBcHBl
YXJhbmNlKEdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVhcmFuY2UgYXBwZWFyYW5jZSkKIHsKICAg
ICByZXR1cm4gYXBwZWFyYW5jZSA9PSBHcmFwaGljc0xheWVyOjpMaWdodEJhY2tkcm9wQXBwZWFy
YW5jZSA/IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlTGlnaHRTeXN0ZW1CYWNrZHJvcExheWVy
IDogUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVEYXJrU3lzdGVtQmFja2Ryb3BMYXllcjsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBo
aWNzTGF5ZXJDQS5oCShyZXZpc2lvbiAxOTA4ODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTAg
KzQ3LDYgQEAgY2xhc3MgVHJhbnNmb3JtU3RhdGU7CiAKIGNsYXNzIEdyYXBoaWNzTGF5ZXJDQSA6
IHB1YmxpYyBHcmFwaGljc0xheWVyLCBwdWJsaWMgUGxhdGZvcm1DQUxheWVyQ2xpZW50IHsKIHB1
YmxpYzoKLSAgICAvLyBUaGUgd2lkdGggYW5kIGhlaWdodCBvZiBhIHNpbmdsZSB0aWxlIGluIGEg
dGlsZWQgbGF5ZXIuIFNob3VsZCBiZSBsYXJnZSBlbm91Z2ggdG8KLSAgICAvLyBhdm9pZCBsb3Rz
IG9mIHNtYWxsIHRpbGVzIChhbmQgdGhlcmVmb3JlIGxvdHMgb2YgZHJhd2luZyBjYWxsYmFja3Mp
LCBidXQgc21hbGwgZW5vdWdoCi0gICAgLy8gdG8ga2VlcCB0aGUgb3ZlcmFsbCB0aWxlIGNvc3Qg
bG93LgotICAgIHN0YXRpYyBjb25zdCBpbnQga1RpbGVkTGF5ZXJUaWxlU2l6ZSA9IDUxMjsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEdyYXBoaWNzTGF5ZXJDQShUeXBlLCBHcmFwaGlj
c0xheWVyQ2xpZW50Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+R3JhcGhpY3NMYXll
ckNBKCk7CkBAIC0xOTksNiArMTk1LDcgQEAgcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIGZsb2F0IHBsYXRmb3JtQ0FMYXllckNvbnRlbnRzU2NhbGVNdWx0aXBsaWVyRm9yTmV3
VGlsZXMoUGxhdGZvcm1DQUxheWVyKikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCBib29sIHBsYXRmb3JtQ0FMYXllclNob3VsZEFnZ3Jlc3NpdmVseVJldGFpblRp
bGVzKFBsYXRmb3JtQ0FMYXllciopIGNvbnN0IG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJTaG91bGRUZW1wb3JhcmlseVJldGFpblRpbGVD
b2hvcnRzKFBsYXRmb3JtQ0FMYXllciopIGNvbnN0IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgSW50U2l6ZSBwbGF0Zm9ybUNBTGF5ZXJUaWxlU2l6ZSgpIGNvbnN0IG92ZXJy
aWRlOwogCiAgICAgdmlydHVhbCBib29sIGlzQ29tbWl0dGluZ0NoYW5nZXMoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX2lzQ29tbWl0dGluZ0NoYW5nZXM7IH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxh
eWVyQ2xpZW50LmgJKHJldmlzaW9uIDE5MDg4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02
MCw2ICs2MCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1DQUxheWVyU2hv
dWxkQWdncmVzc2l2ZWx5UmV0YWluVGlsZXMoUGxhdGZvcm1DQUxheWVyKikgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1DQUxheWVyU2hvdWxkVGVtcG9y
YXJpbHlSZXRhaW5UaWxlQ29ob3J0cyhQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CiAKKyAgICB2aXJ0dWFsIEludFNpemUgcGxhdGZvcm1DQUxheWVyVGlsZVNpemUoKSBj
b25zdCB7IHJldHVybiBkZWZhdWx0VGlsZVNpemUoKTsgfQorCiAgICAgdmlydHVhbCBib29sIGlz
Q29tbWl0dGluZ0NoYW5nZXMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiBwcm90ZWN0ZWQ6
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
VGlsZUNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxOTA4ODUpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU0LDcgKzU0LDYgQEAgU3RyaW5nIFRpbGVDb250cm9sbGVyOjp6b29tZWRPdXRUaWxlR3JpZAog
VGlsZUNvbnRyb2xsZXI6OlRpbGVDb250cm9sbGVyKFBsYXRmb3JtQ0FMYXllciogcm9vdFBsYXRm
b3JtTGF5ZXIpCiAgICAgOiBtX3RpbGVDYWNoZUxheWVyKHJvb3RQbGF0Zm9ybUxheWVyKQogICAg
ICwgbV90aWxlR3JpZChzdGQ6Om1ha2VfdW5pcXVlPFRpbGVHcmlkPigqdGhpcykpCi0gICAgLCBt
X3RpbGVTaXplKGRlZmF1bHRUaWxlV2lkdGgsIGRlZmF1bHRUaWxlSGVpZ2h0KQogICAgICwgbV90
aWxlUmV2YWxpZGF0aW9uVGltZXIoKnRoaXMsICZUaWxlQ29udHJvbGxlcjo6dGlsZVJldmFsaWRh
dGlvblRpbWVyRmlyZWQpCiAgICAgLCBtX3pvb21lZE91dENvbnRlbnRzU2NhbGUoMCkKICAgICAs
IG1fZGV2aWNlU2NhbGVGYWN0b3Iob3duaW5nR3JhcGhpY3NMYXllcigpLT5wbGF0Zm9ybUNBTGF5
ZXJEZXZpY2VTY2FsZUZhY3RvcigpKQpAQCAtMzI4LDggKzMyNyw4IEBAIEZsb2F0UmVjdCBUaWxl
Q29udHJvbGxlcjo6Y29tcHV0ZVRpbGVDb3YKICAgICBpZiAobV90aWxlQ292ZXJhZ2UgPT0gQ292
ZXJhZ2VGb3JWaXNpYmxlQXJlYSB8fCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNpbmdsZXRvbigp
LmlzVW5kZXJNZW1vcnlQcmVzc3VyZSgpKQogICAgICAgICByZXR1cm4gdmlzaWJsZVJlY3Q7CiAK
LSAgICBkb3VibGUgaG9yaXpvbnRhbE1hcmdpbiA9IGRlZmF1bHRUaWxlV2lkdGggLyBjb250ZW50
c1NjYWxlOwotICAgIGRvdWJsZSB2ZXJ0aWNhbE1hcmdpbiA9IGRlZmF1bHRUaWxlSGVpZ2h0IC8g
Y29udGVudHNTY2FsZTsKKyAgICBkb3VibGUgaG9yaXpvbnRhbE1hcmdpbiA9IHRpbGVTaXplKCku
d2lkdGgoKSAvIGNvbnRlbnRzU2NhbGU7CisgICAgZG91YmxlIHZlcnRpY2FsTWFyZ2luID0gdGls
ZVNpemUoKS5oZWlnaHQoKSAvIGNvbnRlbnRzU2NhbGU7CiAKICAgICBkb3VibGUgY3VycmVudFRp
bWUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKICAgICBkb3VibGUgdGltZURlbHRh
ID0gY3VycmVudFRpbWUgLSBtX3ZlbG9jaXR5Lmxhc3RVcGRhdGVUaW1lOwpAQCAtNDI4LDYgKzQy
NywxMSBAQCBib29sIFRpbGVDb250cm9sbGVyOjpzaG91bGRUZW1wb3JhcmlseVJlCiAgICAgcmV0
dXJuIG93bmluZ0dyYXBoaWNzTGF5ZXIoKS0+cGxhdGZvcm1DQUxheWVyU2hvdWxkVGVtcG9yYXJp
bHlSZXRhaW5UaWxlQ29ob3J0cyhtX3RpbGVDYWNoZUxheWVyKTsKIH0KIAorSW50U2l6ZSBUaWxl
Q29udHJvbGxlcjo6dGlsZVNpemUoKSBjb25zdAoreworICAgIHJldHVybiBvd25pbmdHcmFwaGlj
c0xheWVyKCktPnBsYXRmb3JtQ0FMYXllclRpbGVTaXplKCk7Cit9CisKIHZvaWQgVGlsZUNvbnRy
b2xsZXI6OmNsZWFyWm9vbWVkT3V0VGlsZUdyaWQoKQogewogICAgIG1fem9vbWVkT3V0VGlsZUdy
aWQgPSBudWxscHRyOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
VGlsZUNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oCShyZXZpc2lvbiAxOTA4ODUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICBmbG9hdCB0aWxlRGVidWdCb3JkZXJX
aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdGlsZURlYnVnQm9yZGVyV2lkdGg7IH0KICAgICBTY3Jv
bGxpbmdNb2RlSW5kaWNhdGlvbiBpbmRpY2F0b3JNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pbmRp
Y2F0b3JNb2RlOyB9CiAKLSAgICB2aXJ0dWFsIEludFNpemUgdGlsZVNpemUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX3RpbGVTaXplOyB9CisgICAgdmlydHVhbCBJbnRTaXplIHRpbGVTaXpl
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBJbnRSZWN0IGJvdW5kcygpIGNvbnN0IG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgSW50UmVjdCBib3VuZHNXaXRob3V0TWFyZ2luKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGhhc01hcmdpbnMoKSBjb25zdCBvdmVycmlkZTsK
QEAgLTE3NSw3ICsxNzUsNiBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxUaWxlR3Jp
ZD4gbV90aWxlR3JpZDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGlsZUdyaWQ+IG1fem9vbWVkT3V0
VGlsZUdyaWQ7CiAKLSAgICBJbnRTaXplIG1fdGlsZVNpemU7CiAgICAgRmxvYXRSZWN0IG1fdmlz
aWJsZVJlY3Q7IC8vIE9ubHkgdXNlZCBmb3Igc2Nyb2xsIHBlcmZvcm1hbmNlIGxvZ2dpbmcuCiAg
ICAgRmxvYXRSZWN0IG1fY292ZXJhZ2VSZWN0OwogICAgIEludFJlY3QgbV9ib3VuZHNBdExhc3RS
ZXZhbGlkYXRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFj
a2luZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5jcHAJKHJldmlzaW9uIDE5MDg4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjMsOCArMjIz
LDggQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnNldFRpbGVkQmFja2luZwogICAgIGlmICgh
bV91c2luZ1RpbGVkQ2FjaGVMYXllcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW50IG1hcmdp
bkxlZnRBbmRSaWdodFNpemUgPSBoYXNFeHRlbmRlZEJhY2tncm91bmRPbkxlZnRBbmRSaWdodCA/
IGRlZmF1bHRUaWxlV2lkdGggOiAwOwotICAgIGludCBtYXJnaW5Ub3BBbmRCb3R0b21TaXplID0g
aGFzRXh0ZW5kZWRCYWNrZ3JvdW5kT25Ub3BBbmRCb3R0b20gPyBkZWZhdWx0VGlsZUhlaWdodCA6
IDA7CisgICAgaW50IG1hcmdpbkxlZnRBbmRSaWdodFNpemUgPSBoYXNFeHRlbmRlZEJhY2tncm91
bmRPbkxlZnRBbmRSaWdodCA/IHRpbGVTaXplKCkud2lkdGgoKSA6IDA7CisgICAgaW50IG1hcmdp
blRvcEFuZEJvdHRvbVNpemUgPSBoYXNFeHRlbmRlZEJhY2tncm91bmRPblRvcEFuZEJvdHRvbSA/
IHRpbGVTaXplKCkuaGVpZ2h0KCkgOiAwOwogICAgIHRpbGVkQmFja2luZygpLT5zZXRUaWxlTWFy
Z2lucyhtYXJnaW5Ub3BBbmRCb3R0b21TaXplLCBtYXJnaW5Ub3BBbmRCb3R0b21TaXplLCBtYXJn
aW5MZWZ0QW5kUmlnaHRTaXplLCBtYXJnaW5MZWZ0QW5kUmlnaHRTaXplKTsKIH0KIApAQCAtMjQ2
MSw2ICsyNDYxLDExIEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpzaG91bGRUZW1wb3JhcmkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorSW50U2l6ZSBSZW5kZXJMYXllckJhY2tpbmc6OnRpbGVT
aXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZGVmYXVsdFRpbGVTaXplKHJlbmRlcmVyKCkuZnJh
bWUoKS5wYWdlKCktPnNldHRpbmdzKCkudXNlR2lhbnRUaWxlcygpKTsKK30KKwogI2lmbmRlZiBO
REVCVUcKIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp2ZXJpZnlOb3RQYWludGluZygpCiB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oCShy
ZXZpc2lvbiAxOTA4ODUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxMyw2ICsyMTMsNyBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkQWdncmVzc2l2ZWx5UmV0YWluVGlsZXMoY29uc3QgR3JhcGhp
Y3NMYXllciopIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRUZW1wb3Jh
cmlseVJldGFpblRpbGVDb2hvcnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBjb25zdCBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIEludFNpemUgdGlsZVNpemUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIGJvb2wgbmVlZHNQaXhlbEFsaWdtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
IW1faXNNYWluRnJhbWVSZW5kZXJWaWV3TGF5ZXI7IH0KIAogI2lmIFBMQVRGT1JNKElPUykKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MDg4NSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE1LTEwLTEyICBTYWlkIEFib3Ut
SGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGRlYnVnIHNl
dHRpbmdzIGZvciB1c2luZyBnaWFudCB0aWxlcyAoNDA5Nng0MDk2KQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5OTc3CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8yMzAxNzA5Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV0tQcmVmZXJl
bmNlc1NldFVzZUdpYW50VGlsZXMpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc0dldFVzZUdpYW50
VGlsZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0
ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMpOgorCiAyMDE1LTEwLTA5ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRG9uJ3QgYWxsb3cg
cGx1Zy1pbnMgdG8gb3ZlcnJpZGUgaW1hZ2UgdHlwZXMgZm9yIDxlbWJlZD4gZWxlbWVudHMKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmaW5pdGlv
bnMuaAkocmV2aXNpb24gMTkwODg1KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZl
cmVuY2VzRGVmaW5pdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTg4LDYgKzE4OCw3IEBACiAg
ICAgbWFjcm8oVGhyZWFkZWRTY3JvbGxpbmdFbmFibGVkLCB0aHJlYWRlZFNjcm9sbGluZ0VuYWJs
ZWQsIEJvb2wsIGJvb2wsIHRydWUpIFwKICAgICBtYWNybyhTaW1wbGVMaW5lTGF5b3V0RW5hYmxl
ZCwgc2ltcGxlTGluZUxheW91dEVuYWJsZWQsIEJvb2wsIGJvb2wsIHRydWUpIFwKICAgICBtYWNy
byhTdWJwaXhlbENTU09NRWxlbWVudE1ldHJpY3NFbmFibGVkLCBzdWJwaXhlbENTU09NRWxlbWVu
dE1ldHJpY3NFbmFibGVkLCBCb29sLCBib29sLCBmYWxzZSkgXAorICAgIG1hY3JvKFVzZUdpYW50
VGlsZXMsIHVzZUdpYW50VGlsZXMsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCiAgICAgbWFjcm8oTWVk
aWFTdHJlYW1FbmFibGVkLCBtZWRpYVN0cmVhbUVuYWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBc
CiAgICAgbWFjcm8oVXNlTGVnYWN5VGV4dEFsaWduUG9zaXRpb25lZEVsZW1lbnRCZWhhdmlvciwg
dXNlTGVnYWN5VGV4dEFsaWduUG9zaXRpb25lZEVsZW1lbnRCZWhhdmlvciwgQm9vbCwgYm9vbCwg
ZmFsc2UpIFwKICAgICBtYWNybyhTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQsIHNwYXRpYWxOYXZp
Z2F0aW9uRW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFsc2UpIFwKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAJKHJldmlzaW9uIDE5MDg4
NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTIxNyw2ICsxMjE3LDE2IEBAIGJvb2wgV0tQcmVmZXJlbmNlc0dl
dFN1YnBpeGVsQ1NTT01FbGVtZW4KICAgICByZXR1cm4gdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+
c3VicGl4ZWxDU1NPTUVsZW1lbnRNZXRyaWNzRW5hYmxlZCgpOwogfQogCit2b2lkIFdLUHJlZmVy
ZW5jZXNTZXRVc2VHaWFudFRpbGVzKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJv
b2wgZmxhZykKK3sKKyAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRVc2VHaWFudFRpbGVz
KGZsYWcpOworfQorCitib29sIFdLUHJlZmVyZW5jZXNHZXRVc2VHaWFudFRpbGVzKFdLUHJlZmVy
ZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpCit7CisgICAgcmV0dXJuIHRvSW1wbChwcmVmZXJlbmNl
c1JlZiktPnVzZUdpYW50VGlsZXMoKTsKK30KKwogdm9pZCBXS1ByZWZlcmVuY2VzU2V0TWVkaWFT
dHJlYW1FbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgZW5hYmxl
ZCkKIHsKICAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRNZWRpYVN0cmVhbUVuYWJsZWQo
ZW5hYmxlZCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJl
bmNlc1JlZlByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaAkocmV2aXNpb24gMTkwODg1KQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMxMyw2ICszMTMsMTAgQEAgV0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJl
bmNlc0dldE5ld0Jsb2NrSQogV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldFN1YnBpeGVs
Q1NTT01FbGVtZW50TWV0cmljc0VuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiwgYm9vbCk7CiBXS19F
WFBPUlQgYm9vbCBXS1ByZWZlcmVuY2VzR2V0U3VicGl4ZWxDU1NPTUVsZW1lbnRNZXRyaWNzRW5h
YmxlZChXS1ByZWZlcmVuY2VzUmVmKTsKIAorLy8gRGVmYXVsdHMgdG8gZmFsc2UuCitXS19FWFBP
UlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0VXNlR2lhbnRUaWxlcyhXS1ByZWZlcmVuY2VzUmVmLCBi
b29sKTsKK1dLX0VYUE9SVCBib29sIFdLUHJlZmVyZW5jZXNHZXRVc2VHaWFudFRpbGVzKFdLUHJl
ZmVyZW5jZXNSZWYpOworCiBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzUmVzZXRUZXN0UnVu
bmVyT3ZlcnJpZGVzKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpOwogCiAvLyBEZWZh
dWx0cyB0byBmYWxzZS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDE5MDg4NSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjczOCw2ICsyNzM4
LDcgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZQogICAgIHNldHRp
bmdzLnNldFNob3dSZXBhaW50Q291bnRlcihzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJl
ZmVyZW5jZXNLZXk6OmNvbXBvc2l0aW5nUmVwYWludENvdW50ZXJzVmlzaWJsZUtleSgpKSk7CiAg
ICAgc2V0dGluZ3Muc2V0U2hvd1RpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yKHN0b3JlLmdldEJvb2xW
YWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6dGlsZWRTY3JvbGxpbmdJbmRpY2F0b3JWaXNp
YmxlS2V5KCkpKTsKICAgICBzZXR0aW5ncy5zZXRWaXNpYmxlRGVidWdPdmVybGF5UmVnaW9ucyhz
dG9yZS5nZXRVSW50MzJWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6dmlzaWJsZURlYnVn
T3ZlcmxheVJlZ2lvbnNLZXkoKSkpOworICAgIHNldHRpbmdzLnNldFVzZUdpYW50VGlsZXMoc3Rv
cmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojp1c2VHaWFudFRpbGVzS2V5
KCkpKTsKICAgICAKICAgICBzZXR0aW5ncy5zZXRBZ2dyZXNzaXZlVGlsZVJldGVudGlvbkVuYWJs
ZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjphZ2dyZXNzaXZl
VGlsZVJldGVudGlvbkVuYWJsZWRLZXkoKSkpOwogICAgIHNldHRpbmdzLnNldFRlbXBvcmFyeVRp
bGVDb2hvcnRSZXRlbnRpb25FbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVm
ZXJlbmNlc0tleTo6dGVtcG9yYXJ5VGlsZUNvaG9ydFJldGVudGlvbkVuYWJsZWRLZXkoKSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262989</attachid>
            <date>2015-10-13 09:56:51 -0700</date>
            <delta_ts>2015-10-13 10:52:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149977-20151013095615.patch</filename>
            <type>text/plain</type>
            <size>17570</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MDkxMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY1IEBACisyMDE1LTEwLTEyICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGRlYnVn
IHNldHRpbmdzIGZvciB1c2luZyBnaWFudCB0aWxlcyAoNDA5Nng0MDk2KQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5OTc3CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8yMzAxNzA5Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbnN0ZWFkIG9mIGNyZWF0aW5nIHRoZSBHcmFwaGljc0xheWVyIHdpdGgg
YSBmaXhlZCBzaXplIDUxMng1MTIsIHdlIG5lZWQKKyAgICAgICAgdG8gcmVhZCB0aGUgdXNlR2lh
bnRUaWxlcyBzZXR0aW5nLiBJZiBpdHMgdmFsdWUgaXMgdHJ1ZSwgd2Ugc2V0IHRoZSBsYXllcgor
ICAgICAgICB0aWxlU2l6ZSB0byA0MDk2eDQwOTYuCisKKyAgICAgICAgKiBwYWdlL1NldHRpbmdz
LmluOgorICAgICAgICBEZWZpbmUgdGhlIG5hbWUgb2YgdGhlIHNldHRpbmcgYW5kIGl0cyBkZWZh
dWx0IHZhbHVlLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0xheWVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2xpZW50Ojp0
aWxlU2l6ZSk6CisgICAgICAgIERlZmluZSB0aWxlU2l6ZSgpIGluIHRoZSBiYXNlIGNsYXNzIEdy
YXBoaWNzTGF5ZXJDbGllbnQuIFRoaXMgaXMgZ29pbmcgdG8KKyAgICAgICAgYmUgb3ZlcnJpZGRl
biBSZW5kZXJMYXllckJhY2tpbmcuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1RpbGVkQmFja2luZy5oOgorICAgICAgICAoV2ViQ29yZTo6ZGVmYXVsdFRpbGVTaXplKToK
KyAgICAgICAgRGVmaW5lIHRoZSBkZWZhdWx0IHRpbGVTaXplIHdoaWNoIHdpbGwgZGVwZW5kIG9u
IHRoZSB1c2VHaWFudFRpbGVzCisgICAgICAgIHNldHRpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNBOjpwbGF0Zm9ybUNBTGF5ZXJUaWxlU2l6ZSk6CisgICAgICAgIEltcGxlbWVu
dCB0aGUgdmlydHVhbCBmdW5jdGlvbiBHcmFwaGljc0xheWVyQ0E6OnBsYXRmb3JtQ0FMYXllclRp
bGVTaXplKCkuCisgICAgICAgIEl0IHBhc3NlcyB0aGUgY2FsbCB0byBjbGllbnQgR3JhcGhpY3NM
YXllckNsaWVudCB3aGljaCBjYW4gYmUgUmVuZGVyTGF5ZXJCYWNraW5nCisgICAgICAgIGluIG91
ciBjYXNlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNB
Lmg6CisgICAgICAgIE92ZXJyaWRlIGJhc2UgY2xhc3MgZnVuY3Rpb24gUGxhdGZvcm1DQUxheWVy
Q2xpZW50OjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQoKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1DQUxheWVyQ2xpZW50OjpwbGF0Zm9ybUNBTGF5ZXJUaWxlU2l6ZSk6CisgICAgICAgIERl
ZmluZSBwbGF0Zm9ybUNBTGF5ZXJUaWxlU2l6ZSgpIGluIHRoZSBiYXNlIGNsYXNzIFBsYXRmb3Jt
Q0FMYXllckNsaWVudC4KKyAgICAgICAgVGhpcyBpcyBnb2luZyB0byBiZSBvdmVycmlkZGVuIEdy
YXBoaWNzTGF5ZXJDQS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjpUaWxlQ29udHJv
bGxlcik6CisgICAgICAgIE5vIG5lZWQgZm9yIHRoZSBtZW1iZXIgbV90aWxlU2l6ZS4KKyAgICAg
ICAgCisgICAgICAgIChXZWJDb3JlOjpUaWxlQ29udHJvbGxlcjo6Y29tcHV0ZVRpbGVDb3ZlcmFn
ZVJlY3QpOgorICAgICAgICBVc2UgdGhlIGZ1bmN0aW9uIHRpbGVTaXplKCkgaW5zdGVhZCBvZiB1
c2luZyB0aGUgc3RhdGljIHZhbHVlcy4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpUaWxl
Q29udHJvbGxlcjo6dGlsZVNpemUpOgorICAgICAgICBUaGUgdGlsZVNpemUgd2lsbCBiZSByZXRy
aWV2ZWQgZnJvbSB0aGUgb3duaW5nIGdyYXBoaWNzIGxheWVyLgorICAgICAgICAKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oOgorICAgICAgICBObyBuZWVk
IGZvciB0aGUgbWVtYmVyIG1fdGlsZVNpemUuIFRoZSB0aWxlU2l6ZSB3aWxsIGJlIHJldHJpZXZl
ZCBmcm9tIHRoZSBvd25pbmcgZ3JhcGhpY3MgbGF5ZXIuCisKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFj
a2luZzo6c2V0VGlsZWRCYWNraW5nSGFzTWFyZ2lucyk6CisgICAgICAgIFVzZSB0aGUgZnVuY3Rp
b24gdGlsZVNpemUoKSBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBzdGF0aWMgdmFsdWVzLgorICAgICAg
ICAKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dGlsZVNpemUpOgorICAg
ICAgICBPdmVycmlkZSBiYXNlIGNsYXNzIGZ1bmN0aW9uIEdyYXBoaWNzTGF5ZXJDbGllbnQ6OnRp
bGVTaXplKCkuCisgICAgICAgIAorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuaDoKKyAgICAgICAgRGVmaW5lIHRoZSBjb25jcmV0ZSBtZXRob2QgUmVuZGVyTGF5ZXJCYWNr
aW5nOjp0aWxTaXplKCkuCisKIDIwMTUtMTAtMTIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGlPUyBhbmQgRWZsIGJ1aWxkcy4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy5pbgkocmV2aXNpb24gMTkwODg1KQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9TZXR0aW5ncy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjAxLDYgKzIwMSw4IEBAIHNpbXBs
ZUxpbmVMYXlvdXREZWJ1Z0JvcmRlcnNFbmFibGVkIGluaXQKIAogc3VicGl4ZWxDU1NPTUVsZW1l
bnRNZXRyaWNzRW5hYmxlZCBpbml0aWFsPWZhbHNlCiAKK3VzZUdpYW50VGlsZXMgaW5pdGlhbD1m
YWxzZQorCiBtZWRpYVNvdXJjZUVuYWJsZWQgaW5pdGlhbD10cnVlLCBjb25kaXRpb25hbD1NRURJ
QV9TT1VSQ0UKIAogIyBGSVhNRTogUmVuYW1lIHRvIGFsbG93TXVsdGlFbGVtZW50SW1wbGljaXRG
b3JtU3VibWlzc2lvbiBvbmNlIHdlIHVwc3RyZWFtIHRoZSBpT1MgY2hhbmdlcyB0byBXZWJWaWV3
Lm1tLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXll
ckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXJDbGllbnQuaAkocmV2aXNpb24gMTkwODg1KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllckNsaWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw2ICsyNiw4IEBACiAjaWZuZGVmIEdyYXBoaWNzTGF5ZXJDbGllbnRfaAogI2RlZmlu
ZSBHcmFwaGljc0xheWVyQ2xpZW50X2gKIAorI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRl
ICJUaWxlZEJhY2tpbmcuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC0xMTgsNiArMTIwLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRBZ2dyZXNzaXZlbHlSZXRhaW5UaWxlcyhjb25zdCBHcmFwaGljc0xheWVyKikgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVGVtcG9yYXJpbHlSZXRh
aW5UaWxlQ29ob3J0cyhjb25zdCBHcmFwaGljc0xheWVyKikgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQogCisgICAgdmlydHVhbCBJbnRTaXplIHRpbGVTaXplKCkgY29uc3QgeyByZXR1cm4gZGVmYXVs
dFRpbGVTaXplKCk7IH0KKwogICAgIHZpcnR1YWwgYm9vbCBuZWVkc1BpeGVsQWxpZ21lbnQoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCBib29sIG5lZWRzSU9TRHVtcFJl
bmRlclRyZWVNYWluRnJhbWVSZW5kZXJWaWV3TGF5ZXJJc0Fsd2F5c09wYXF1ZUhhY2soY29uc3Qg
R3JhcGhpY3NMYXllciYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmcuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmcuaAkocmV2aXNpb24gMTkw
ODg1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI4LDkgKzI4LDI3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotc3RhdGljIGNvbnN0IGludCBkZWZhdWx0VGlsZVdpZHRoID0gNTEyOwotc3RhdGljIGNvbnN0
IGludCBkZWZhdWx0VGlsZUhlaWdodCA9IDUxMjsKK2VudW0gVGlsZVNpemVNb2RlIHsKKyAgICBT
dGFuZGFyZFRpbGVTaXplTW9kZSwKKyAgICBHaWFudFRpbGVTaXplTW9kZQorfTsKKworaW5saW5l
IHN0YXRpYyBJbnRTaXplIGRlZmF1bHRUaWxlU2l6ZShUaWxlU2l6ZU1vZGUgdGlsZVNpemVNb2Rl
ID0gU3RhbmRhcmRUaWxlU2l6ZU1vZGUpCit7CisgICAgc3RhdGljIGNvbnN0IGludCBrVGlsZWRM
YXllclRpbGVTaXplID0gNTEyOworCisgICAgLy8gVGhpcyBpcyBhbiBleHBlcmltZW50YWwgdmFs
dWUgZm9yIGRlYnVnZ2luZyBhbmQgZXZhbHVhdGluZyB0aGUgb3ZlcmhlYWQgd2hpY2ggbWF5IGJl
CisgICAgLy8gaW5jdXJyZWQgZHVlIHRvIGEgbGFyZ2UgdGlsZSBzaXplLgorICAgIHN0YXRpYyBj
b25zdCBpbnQga0dpYW50VGlsZWRMYXllclRpbGVTaXplID0gNDA5NjsKKworICAgIGlmICh0aWxl
U2l6ZU1vZGUgPT0gR2lhbnRUaWxlU2l6ZU1vZGUpCisgICAgICAgIHJldHVybiBJbnRTaXplKGtH
aWFudFRpbGVkTGF5ZXJUaWxlU2l6ZSwga0dpYW50VGlsZWRMYXllclRpbGVTaXplKTsKKworICAg
IHJldHVybiBJbnRTaXplKGtUaWxlZExheWVyVGlsZVNpemUsIGtUaWxlZExheWVyVGlsZVNpemUp
OworfQogCitjbGFzcyBGbG9hdFBvaW50OworY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgSW50UmVj
dDsKIGNsYXNzIFBsYXRmb3JtQ0FMYXllcjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCShyZXZpc2lv
biAxOTA4ODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGlj
c0xheWVyQ0EuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQ5LDYgKzE0NDksMTEgQEAgYm9vbCBH
cmFwaGljc0xheWVyQ0E6OnBsYXRmb3JtQ0FMYXllclNobwogICAgIHJldHVybiBjbGllbnQoKS5z
aG91bGRUZW1wb3JhcmlseVJldGFpblRpbGVDb2hvcnRzKHRoaXMpOwogfQogCitJbnRTaXplIEdy
YXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVyVGlsZVNpemUoKSBjb25zdAoreworICAgIHJl
dHVybiBjbGllbnQoKS50aWxlU2l6ZSgpOworfQorCiBzdGF0aWMgUGxhdGZvcm1DQUxheWVyOjpM
YXllclR5cGUgbGF5ZXJUeXBlRm9yQ3VzdG9tQmFja2Ryb3BBcHBlYXJhbmNlKEdyYXBoaWNzTGF5
ZXI6OkN1c3RvbUFwcGVhcmFuY2UgYXBwZWFyYW5jZSkKIHsKICAgICByZXR1cm4gYXBwZWFyYW5j
ZSA9PSBHcmFwaGljc0xheWVyOjpMaWdodEJhY2tkcm9wQXBwZWFyYW5jZSA/IFBsYXRmb3JtQ0FM
YXllcjo6TGF5ZXJUeXBlTGlnaHRTeXN0ZW1CYWNrZHJvcExheWVyIDogUGxhdGZvcm1DQUxheWVy
OjpMYXllclR5cGVEYXJrU3lzdGVtQmFja2Ryb3BMYXllcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCShyZXZp
c2lvbiAxOTA4ODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFw
aGljc0xheWVyQ0EuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTAgKzQ3LDYgQEAgY2xhc3MgVHJh
bnNmb3JtU3RhdGU7CiAKIGNsYXNzIEdyYXBoaWNzTGF5ZXJDQSA6IHB1YmxpYyBHcmFwaGljc0xh
eWVyLCBwdWJsaWMgUGxhdGZvcm1DQUxheWVyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICAvLyBUaGUg
d2lkdGggYW5kIGhlaWdodCBvZiBhIHNpbmdsZSB0aWxlIGluIGEgdGlsZWQgbGF5ZXIuIFNob3Vs
ZCBiZSBsYXJnZSBlbm91Z2ggdG8KLSAgICAvLyBhdm9pZCBsb3RzIG9mIHNtYWxsIHRpbGVzIChh
bmQgdGhlcmVmb3JlIGxvdHMgb2YgZHJhd2luZyBjYWxsYmFja3MpLCBidXQgc21hbGwgZW5vdWdo
Ci0gICAgLy8gdG8ga2VlcCB0aGUgb3ZlcmFsbCB0aWxlIGNvc3QgbG93LgotICAgIHN0YXRpYyBj
b25zdCBpbnQga1RpbGVkTGF5ZXJUaWxlU2l6ZSA9IDUxMjsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IEdyYXBoaWNzTGF5ZXJDQShUeXBlLCBHcmFwaGljc0xheWVyQ2xpZW50Jik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+R3JhcGhpY3NMYXllckNBKCk7CkBAIC0xOTksNiAr
MTk1LDcgQEAgcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIGZsb2F0IHBsYXRm
b3JtQ0FMYXllckNvbnRlbnRzU2NhbGVNdWx0aXBsaWVyRm9yTmV3VGlsZXMoUGxhdGZvcm1DQUxh
eWVyKikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBib29sIHBs
YXRmb3JtQ0FMYXllclNob3VsZEFnZ3Jlc3NpdmVseVJldGFpblRpbGVzKFBsYXRmb3JtQ0FMYXll
ciopIGNvbnN0IG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgYm9vbCBwbGF0
Zm9ybUNBTGF5ZXJTaG91bGRUZW1wb3JhcmlseVJldGFpblRpbGVDb2hvcnRzKFBsYXRmb3JtQ0FM
YXllciopIGNvbnN0IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgSW50U2l6
ZSBwbGF0Zm9ybUNBTGF5ZXJUaWxlU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdmlydHVh
bCBib29sIGlzQ29tbWl0dGluZ0NoYW5nZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lz
Q29tbWl0dGluZ0NoYW5nZXM7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50LmgJKHJldmlz
aW9uIDE5MDg4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRm
b3JtQ0FMYXllckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw2ICs2MCw4IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1DQUxheWVyU2hvdWxkQWdncmVzc2l2ZWx5UmV0
YWluVGlsZXMoUGxhdGZvcm1DQUxheWVyKikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIGJvb2wgcGxhdGZvcm1DQUxheWVyU2hvdWxkVGVtcG9yYXJpbHlSZXRhaW5UaWxlQ29o
b3J0cyhQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKKyAgICB2aXJ0
dWFsIEludFNpemUgcGxhdGZvcm1DQUxheWVyVGlsZVNpemUoKSBjb25zdCB7IHJldHVybiBkZWZh
dWx0VGlsZVNpemUoKTsgfQorCiAgICAgdmlydHVhbCBib29sIGlzQ29tbWl0dGluZ0NoYW5nZXMo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiBwcm90ZWN0ZWQ6CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3Bw
CShyZXZpc2lvbiAxOTA4ODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9UaWxlQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDYgQEAgU3Ry
aW5nIFRpbGVDb250cm9sbGVyOjp6b29tZWRPdXRUaWxlR3JpZAogVGlsZUNvbnRyb2xsZXI6OlRp
bGVDb250cm9sbGVyKFBsYXRmb3JtQ0FMYXllciogcm9vdFBsYXRmb3JtTGF5ZXIpCiAgICAgOiBt
X3RpbGVDYWNoZUxheWVyKHJvb3RQbGF0Zm9ybUxheWVyKQogICAgICwgbV90aWxlR3JpZChzdGQ6
Om1ha2VfdW5pcXVlPFRpbGVHcmlkPigqdGhpcykpCi0gICAgLCBtX3RpbGVTaXplKGRlZmF1bHRU
aWxlV2lkdGgsIGRlZmF1bHRUaWxlSGVpZ2h0KQogICAgICwgbV90aWxlUmV2YWxpZGF0aW9uVGlt
ZXIoKnRoaXMsICZUaWxlQ29udHJvbGxlcjo6dGlsZVJldmFsaWRhdGlvblRpbWVyRmlyZWQpCiAg
ICAgLCBtX3pvb21lZE91dENvbnRlbnRzU2NhbGUoMCkKICAgICAsIG1fZGV2aWNlU2NhbGVGYWN0
b3Iob3duaW5nR3JhcGhpY3NMYXllcigpLT5wbGF0Zm9ybUNBTGF5ZXJEZXZpY2VTY2FsZUZhY3Rv
cigpKQpAQCAtMzI4LDggKzMyNyw4IEBAIEZsb2F0UmVjdCBUaWxlQ29udHJvbGxlcjo6Y29tcHV0
ZVRpbGVDb3YKICAgICBpZiAobV90aWxlQ292ZXJhZ2UgPT0gQ292ZXJhZ2VGb3JWaXNpYmxlQXJl
YSB8fCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNpbmdsZXRvbigpLmlzVW5kZXJNZW1vcnlQcmVz
c3VyZSgpKQogICAgICAgICByZXR1cm4gdmlzaWJsZVJlY3Q7CiAKLSAgICBkb3VibGUgaG9yaXpv
bnRhbE1hcmdpbiA9IGRlZmF1bHRUaWxlV2lkdGggLyBjb250ZW50c1NjYWxlOwotICAgIGRvdWJs
ZSB2ZXJ0aWNhbE1hcmdpbiA9IGRlZmF1bHRUaWxlSGVpZ2h0IC8gY29udGVudHNTY2FsZTsKKyAg
ICBkb3VibGUgaG9yaXpvbnRhbE1hcmdpbiA9IHRpbGVTaXplKCkud2lkdGgoKSAvIGNvbnRlbnRz
U2NhbGU7CisgICAgZG91YmxlIHZlcnRpY2FsTWFyZ2luID0gdGlsZVNpemUoKS5oZWlnaHQoKSAv
IGNvbnRlbnRzU2NhbGU7CiAKICAgICBkb3VibGUgY3VycmVudFRpbWUgPSBtb25vdG9uaWNhbGx5
SW5jcmVhc2luZ1RpbWUoKTsKICAgICBkb3VibGUgdGltZURlbHRhID0gY3VycmVudFRpbWUgLSBt
X3ZlbG9jaXR5Lmxhc3RVcGRhdGVUaW1lOwpAQCAtNDI4LDYgKzQyNywxMSBAQCBib29sIFRpbGVD
b250cm9sbGVyOjpzaG91bGRUZW1wb3JhcmlseVJlCiAgICAgcmV0dXJuIG93bmluZ0dyYXBoaWNz
TGF5ZXIoKS0+cGxhdGZvcm1DQUxheWVyU2hvdWxkVGVtcG9yYXJpbHlSZXRhaW5UaWxlQ29ob3J0
cyhtX3RpbGVDYWNoZUxheWVyKTsKIH0KIAorSW50U2l6ZSBUaWxlQ29udHJvbGxlcjo6dGlsZVNp
emUoKSBjb25zdAoreworICAgIHJldHVybiBvd25pbmdHcmFwaGljc0xheWVyKCktPnBsYXRmb3Jt
Q0FMYXllclRpbGVTaXplKCk7Cit9CisKIHZvaWQgVGlsZUNvbnRyb2xsZXI6OmNsZWFyWm9vbWVk
T3V0VGlsZUdyaWQoKQogewogICAgIG1fem9vbWVkT3V0VGlsZUdyaWQgPSBudWxscHRyOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29u
dHJvbGxlci5oCShyZXZpc2lvbiAxOTA4ODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3
IEBAIHB1YmxpYzoKICAgICBmbG9hdCB0aWxlRGVidWdCb3JkZXJXaWR0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fdGlsZURlYnVnQm9yZGVyV2lkdGg7IH0KICAgICBTY3JvbGxpbmdNb2RlSW5kaWNhdGlv
biBpbmRpY2F0b3JNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pbmRpY2F0b3JNb2RlOyB9CiAKLSAg
ICB2aXJ0dWFsIEludFNpemUgdGlsZVNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Rp
bGVTaXplOyB9CisgICAgdmlydHVhbCBJbnRTaXplIHRpbGVTaXplKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCBJbnRSZWN0IGJvdW5kcygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgSW50UmVjdCBib3VuZHNXaXRob3V0TWFyZ2luKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCBib29sIGhhc01hcmdpbnMoKSBjb25zdCBvdmVycmlkZTsKQEAgLTE3NSw3ICsxNzUsNiBA
QCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxUaWxlR3JpZD4gbV90aWxlR3JpZDsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8VGlsZUdyaWQ+IG1fem9vbWVkT3V0VGlsZUdyaWQ7CiAKLSAgICBJ
bnRTaXplIG1fdGlsZVNpemU7CiAgICAgRmxvYXRSZWN0IG1fdmlzaWJsZVJlY3Q7IC8vIE9ubHkg
dXNlZCBmb3Igc2Nyb2xsIHBlcmZvcm1hbmNlIGxvZ2dpbmcuCiAgICAgRmxvYXRSZWN0IG1fY292
ZXJhZ2VSZWN0OwogICAgIEludFJlY3QgbV9ib3VuZHNBdExhc3RSZXZhbGlkYXRlOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJKHJl
dmlzaW9uIDE5MDg4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjMsOCArMjIzLDggQEAgdm9pZCBSZW5kZXJM
YXllckJhY2tpbmc6OnNldFRpbGVkQmFja2luZwogICAgIGlmICghbV91c2luZ1RpbGVkQ2FjaGVM
YXllcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW50IG1hcmdpbkxlZnRBbmRSaWdodFNpemUg
PSBoYXNFeHRlbmRlZEJhY2tncm91bmRPbkxlZnRBbmRSaWdodCA/IGRlZmF1bHRUaWxlV2lkdGgg
OiAwOwotICAgIGludCBtYXJnaW5Ub3BBbmRCb3R0b21TaXplID0gaGFzRXh0ZW5kZWRCYWNrZ3Jv
dW5kT25Ub3BBbmRCb3R0b20gPyBkZWZhdWx0VGlsZUhlaWdodCA6IDA7CisgICAgaW50IG1hcmdp
bkxlZnRBbmRSaWdodFNpemUgPSBoYXNFeHRlbmRlZEJhY2tncm91bmRPbkxlZnRBbmRSaWdodCA/
IHRpbGVTaXplKCkud2lkdGgoKSA6IDA7CisgICAgaW50IG1hcmdpblRvcEFuZEJvdHRvbVNpemUg
PSBoYXNFeHRlbmRlZEJhY2tncm91bmRPblRvcEFuZEJvdHRvbSA/IHRpbGVTaXplKCkuaGVpZ2h0
KCkgOiAwOwogICAgIHRpbGVkQmFja2luZygpLT5zZXRUaWxlTWFyZ2lucyhtYXJnaW5Ub3BBbmRC
b3R0b21TaXplLCBtYXJnaW5Ub3BBbmRCb3R0b21TaXplLCBtYXJnaW5MZWZ0QW5kUmlnaHRTaXpl
LCBtYXJnaW5MZWZ0QW5kUmlnaHRTaXplKTsKIH0KIApAQCAtMjQ2MSw2ICsyNDYxLDEyIEBAIGJv
b2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpzaG91bGRUZW1wb3JhcmkKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAorSW50U2l6ZSBSZW5kZXJMYXllckJhY2tpbmc6OnRpbGVTaXplKCkgY29uc3QKK3sKKyAg
ICBUaWxlU2l6ZU1vZGUgdGlsZVNpemVNb2RlID0gcmVuZGVyZXIoKS5mcmFtZSgpLnBhZ2UoKS0+
c2V0dGluZ3MoKS51c2VHaWFudFRpbGVzKCkgPyBHaWFudFRpbGVTaXplTW9kZSA6IFN0YW5kYXJk
VGlsZVNpemVNb2RlOworICAgIHJldHVybiBkZWZhdWx0VGlsZVNpemUodGlsZVNpemVNb2RlKTsK
K30KKwogI2lmbmRlZiBOREVCVUcKIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp2ZXJpZnlOb3RQ
YWludGluZygpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5oCShyZXZpc2lvbiAxOTA4ODUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxMyw2ICsyMTMsNyBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQWdncmVzc2l2ZWx5UmV0YWluVGls
ZXMoY29uc3QgR3JhcGhpY3NMYXllciopIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRUZW1wb3JhcmlseVJldGFpblRpbGVDb2hvcnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIq
KSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIEludFNpemUgdGlsZVNpemUoKSBjb25zdCBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNQaXhlbEFsaWdtZW50KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gIW1faXNNYWluRnJhbWVSZW5kZXJWaWV3TGF5ZXI7IH0KIAogI2lmIFBM
QVRGT1JNKElPUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MDg4NSkKKysrIFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE1LTEw
LTEyICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAg
ICAgQWRkIGRlYnVnIHNldHRpbmdzIGZvciB1c2luZyBnaWFudCB0aWxlcyAoNDA5Nng0MDk2KQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5OTc3Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMzAxNzA5Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmluaXRp
b25zLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwOgorICAg
ICAgICAoV0tQcmVmZXJlbmNlc1NldFVzZUdpYW50VGlsZXMpOgorICAgICAgICAoV0tQcmVmZXJl
bmNlc0dldFVzZUdpYW50VGlsZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZl
cmVuY2VzUmVmUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMpOgorCiAy
MDE1LTEwLTA5ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAg
ICAgRG9uJ3QgYWxsb3cgcGx1Zy1pbnMgdG8gb3ZlcnJpZGUgaW1hZ2UgdHlwZXMgZm9yIDxlbWJl
ZD4gZWxlbWVudHMKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc0Rl
ZmluaXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZl
cmVuY2VzRGVmaW5pdGlvbnMuaAkocmV2aXNpb24gMTkwODg1KQorKysgU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTg4
LDYgKzE4OCw3IEBACiAgICAgbWFjcm8oVGhyZWFkZWRTY3JvbGxpbmdFbmFibGVkLCB0aHJlYWRl
ZFNjcm9sbGluZ0VuYWJsZWQsIEJvb2wsIGJvb2wsIHRydWUpIFwKICAgICBtYWNybyhTaW1wbGVM
aW5lTGF5b3V0RW5hYmxlZCwgc2ltcGxlTGluZUxheW91dEVuYWJsZWQsIEJvb2wsIGJvb2wsIHRy
dWUpIFwKICAgICBtYWNybyhTdWJwaXhlbENTU09NRWxlbWVudE1ldHJpY3NFbmFibGVkLCBzdWJw
aXhlbENTU09NRWxlbWVudE1ldHJpY3NFbmFibGVkLCBCb29sLCBib29sLCBmYWxzZSkgXAorICAg
IG1hY3JvKFVzZUdpYW50VGlsZXMsIHVzZUdpYW50VGlsZXMsIEJvb2wsIGJvb2wsIGZhbHNlKSBc
CiAgICAgbWFjcm8oTWVkaWFTdHJlYW1FbmFibGVkLCBtZWRpYVN0cmVhbUVuYWJsZWQsIEJvb2ws
IGJvb2wsIGZhbHNlKSBcCiAgICAgbWFjcm8oVXNlTGVnYWN5VGV4dEFsaWduUG9zaXRpb25lZEVs
ZW1lbnRCZWhhdmlvciwgdXNlTGVnYWN5VGV4dEFsaWduUG9zaXRpb25lZEVsZW1lbnRCZWhhdmlv
ciwgQm9vbCwgYm9vbCwgZmFsc2UpIFwKICAgICBtYWNybyhTcGF0aWFsTmF2aWdhdGlvbkVuYWJs
ZWQsIHNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFsc2UpIFwKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAJ
KHJldmlzaW9uIDE5MDg4NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1By
ZWZlcmVuY2VzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIxNyw2ICsxMjE3LDE2IEBAIGJvb2wg
V0tQcmVmZXJlbmNlc0dldFN1YnBpeGVsQ1NTT01FbGVtZW4KICAgICByZXR1cm4gdG9JbXBsKHBy
ZWZlcmVuY2VzUmVmKS0+c3VicGl4ZWxDU1NPTUVsZW1lbnRNZXRyaWNzRW5hYmxlZCgpOwogfQog
Cit2b2lkIFdLUHJlZmVyZW5jZXNTZXRVc2VHaWFudFRpbGVzKFdLUHJlZmVyZW5jZXNSZWYgcHJl
ZmVyZW5jZXNSZWYsIGJvb2wgZmxhZykKK3sKKyAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5z
ZXRVc2VHaWFudFRpbGVzKGZsYWcpOworfQorCitib29sIFdLUHJlZmVyZW5jZXNHZXRVc2VHaWFu
dFRpbGVzKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpCit7CisgICAgcmV0dXJuIHRv
SW1wbChwcmVmZXJlbmNlc1JlZiktPnVzZUdpYW50VGlsZXMoKTsKK30KKwogdm9pZCBXS1ByZWZl
cmVuY2VzU2V0TWVkaWFTdHJlYW1FbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNS
ZWYsIGJvb2wgZW5hYmxlZCkKIHsKICAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRNZWRp
YVN0cmVhbUVuYWJsZWQoZW5hYmxlZCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaAkocmV2aXNpb24g
MTkwODg1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNS
ZWZQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxMyw2ICszMTMsMTAgQEAgV0tfRVhQT1JU
IGJvb2wgV0tQcmVmZXJlbmNlc0dldE5ld0Jsb2NrSQogV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJl
bmNlc1NldFN1YnBpeGVsQ1NTT01FbGVtZW50TWV0cmljc0VuYWJsZWQoV0tQcmVmZXJlbmNlc1Jl
ZiwgYm9vbCk7CiBXS19FWFBPUlQgYm9vbCBXS1ByZWZlcmVuY2VzR2V0U3VicGl4ZWxDU1NPTUVs
ZW1lbnRNZXRyaWNzRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmKTsKIAorLy8gRGVmYXVsdHMgdG8g
ZmFsc2UuCitXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0VXNlR2lhbnRUaWxlcyhXS1By
ZWZlcmVuY2VzUmVmLCBib29sKTsKK1dLX0VYUE9SVCBib29sIFdLUHJlZmVyZW5jZXNHZXRVc2VH
aWFudFRpbGVzKFdLUHJlZmVyZW5jZXNSZWYpOworCiBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVu
Y2VzUmVzZXRUZXN0UnVubmVyT3ZlcnJpZGVzKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNS
ZWYpOwogCiAvLyBEZWZhdWx0cyB0byBmYWxzZS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDE5MDg4NSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjczOCw2ICsyNzM4LDcgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25z
dCBXZQogICAgIHNldHRpbmdzLnNldFNob3dSZXBhaW50Q291bnRlcihzdG9yZS5nZXRCb29sVmFs
dWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmNvbXBvc2l0aW5nUmVwYWludENvdW50ZXJzVmlz
aWJsZUtleSgpKSk7CiAgICAgc2V0dGluZ3Muc2V0U2hvd1RpbGVkU2Nyb2xsaW5nSW5kaWNhdG9y
KHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6dGlsZWRTY3JvbGxp
bmdJbmRpY2F0b3JWaXNpYmxlS2V5KCkpKTsKICAgICBzZXR0aW5ncy5zZXRWaXNpYmxlRGVidWdP
dmVybGF5UmVnaW9ucyhzdG9yZS5nZXRVSW50MzJWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tl
eTo6dmlzaWJsZURlYnVnT3ZlcmxheVJlZ2lvbnNLZXkoKSkpOworICAgIHNldHRpbmdzLnNldFVz
ZUdpYW50VGlsZXMoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojp1
c2VHaWFudFRpbGVzS2V5KCkpKTsKICAgICAKICAgICBzZXR0aW5ncy5zZXRBZ2dyZXNzaXZlVGls
ZVJldGVudGlvbkVuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2Vz
S2V5OjphZ2dyZXNzaXZlVGlsZVJldGVudGlvbkVuYWJsZWRLZXkoKSkpOwogICAgIHNldHRpbmdz
LnNldFRlbXBvcmFyeVRpbGVDb2hvcnRSZXRlbnRpb25FbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1
ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6dGVtcG9yYXJ5VGlsZUNvaG9ydFJldGVudGlvbkVu
YWJsZWRLZXkoKSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262991</attachid>
            <date>2015-10-13 10:52:14 -0700</date>
            <delta_ts>2015-10-13 11:47:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149977-20151013105137.patch</filename>
            <type>text/plain</type>
            <size>17562</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5MDkxMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY1IEBACisyMDE1LTEwLTEyICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGRlYnVn
IHNldHRpbmdzIGZvciB1c2luZyBnaWFudCB0aWxlcyAoNDA5Nng0MDk2KQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5OTc3CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8yMzAxNzA5Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgor
CisgICAgICAgIEluc3RlYWQgb2YgY3JlYXRpbmcgdGhlIEdyYXBoaWNzTGF5ZXIgd2l0aCBhIGZp
eGVkIHNpemUgNTEyeDUxMiwgd2UgbmVlZAorICAgICAgICB0byByZWFkIHRoZSB1c2VHaWFudFRp
bGVzIHNldHRpbmcuIElmIGl0cyB2YWx1ZSBpcyB0cnVlLCB3ZSBzZXQgdGhlIGxheWVyCisgICAg
ICAgIHRpbGVTaXplIHRvIDQwOTZ4NDA5Ni4KKworICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaW46
CisgICAgICAgIERlZmluZSB0aGUgbmFtZSBvZiB0aGUgc2V0dGluZyBhbmQgaXRzIGRlZmF1bHQg
dmFsdWUuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5
ZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDbGllbnQ6OnRpbGVT
aXplKToKKyAgICAgICAgRGVmaW5lIHRpbGVTaXplKCkgaW4gdGhlIGJhc2UgY2xhc3MgR3JhcGhp
Y3NMYXllckNsaWVudC4gVGhpcyBpcyBnb2luZyB0bworICAgICAgICBiZSBvdmVycmlkZGVuIFJl
bmRlckxheWVyQmFja2luZy4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
VGlsZWRCYWNraW5nLmg6CisgICAgICAgIChXZWJDb3JlOjpkZWZhdWx0VGlsZVNpemUpOgorICAg
ICAgICBEZWZpbmUgdGhlIGRlZmF1bHQgdGlsZVNpemUgd2hpY2ggd2lsbCBkZXBlbmQgb24gdGhl
IHVzZUdpYW50VGlsZXMKKyAgICAgICAgc2V0dGluZy4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ0E6OnBsYXRmb3JtQ0FMYXllclRpbGVTaXplKToKKyAgICAgICAgSW1wbGVtZW50IHRo
ZSB2aXJ0dWFsIGZ1bmN0aW9uIEdyYXBoaWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVyVGlsZVNp
emUoKS4KKyAgICAgICAgSXQgcGFzc2VzIHRoZSBjYWxsIHRvIGNsaWVudCBHcmFwaGljc0xheWVy
Q2xpZW50IHdoaWNoIGNhbiBiZSBSZW5kZXJMYXllckJhY2tpbmcKKyAgICAgICAgaW4gb3VyIGNh
c2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaDoK
KyAgICAgICAgT3ZlcnJpZGUgYmFzZSBjbGFzcyBmdW5jdGlvbiBQbGF0Zm9ybUNBTGF5ZXJDbGll
bnQ6OlBsYXRmb3JtQ0FMYXllckNsaWVudCgpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvUGxhdGZvcm1DQUxheWVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bUNBTGF5ZXJDbGllbnQ6OnBsYXRmb3JtQ0FMYXllclRpbGVTaXplKToKKyAgICAgICAgRGVmaW5l
IHBsYXRmb3JtQ0FMYXllclRpbGVTaXplKCkgaW4gdGhlIGJhc2UgY2xhc3MgUGxhdGZvcm1DQUxh
eWVyQ2xpZW50LgorICAgICAgICBUaGlzIGlzIGdvaW5nIHRvIGJlIG92ZXJyaWRkZW4gR3JhcGhp
Y3NMYXllckNBLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OlRpbGVDb250cm9sbGVy
KToKKyAgICAgICAgTm8gbmVlZCBmb3IgdGhlIG1lbWJlciBtX3RpbGVTaXplLgorICAgICAgICAK
KyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb250cm9sbGVyOjpjb21wdXRlVGlsZUNvdmVyYWdlUmVj
dCk6CisgICAgICAgIFVzZSB0aGUgZnVuY3Rpb24gdGlsZVNpemUoKSBpbnN0ZWFkIG9mIHVzaW5n
IHRoZSBzdGF0aWMgdmFsdWVzLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVDb250
cm9sbGVyOjp0aWxlU2l6ZSk6CisgICAgICAgIFRoZSB0aWxlU2l6ZSB3aWxsIGJlIHJldHJpZXZl
ZCBmcm9tIHRoZSBvd25pbmcgZ3JhcGhpY3MgbGF5ZXIuCisgICAgICAgIAorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmg6CisgICAgICAgIE5vIG5lZWQgZm9y
IHRoZSBtZW1iZXIgbV90aWxlU2l6ZS4gVGhlIHRpbGVTaXplIHdpbGwgYmUgcmV0cmlldmVkIGZy
b20gdGhlIG93bmluZyBncmFwaGljcyBsYXllci4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5n
OjpzZXRUaWxlZEJhY2tpbmdIYXNNYXJnaW5zKToKKyAgICAgICAgVXNlIHRoZSBmdW5jdGlvbiB0
aWxlU2l6ZSgpIGluc3RlYWQgb2YgdXNpbmcgdGhlIHN0YXRpYyB2YWx1ZXMuCisgICAgICAgIAor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp0aWxlU2l6ZSk6CisgICAgICAg
IE92ZXJyaWRlIGJhc2UgY2xhc3MgZnVuY3Rpb24gR3JhcGhpY3NMYXllckNsaWVudDo6dGlsZVNp
emUoKS4KKyAgICAgICAgCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5o
OgorICAgICAgICBEZWZpbmUgdGhlIGNvbmNyZXRlIG1ldGhvZCBSZW5kZXJMYXllckJhY2tpbmc6
OnRpbFNpemUoKS4KKwogMjAxNS0xMC0xMiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFw
cGxlLmNvbT4KIAogICAgICAgICBGaXggaU9TIGFuZCBFZmwgYnVpbGRzLgpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL1NldHRpbmdzLmluCShyZXZpc2lvbiAxOTA4ODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L1NldHRpbmdzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMDEsNiArMjAxLDggQEAgc2ltcGxlTGlu
ZUxheW91dERlYnVnQm9yZGVyc0VuYWJsZWQgaW5pdAogCiBzdWJwaXhlbENTU09NRWxlbWVudE1l
dHJpY3NFbmFibGVkIGluaXRpYWw9ZmFsc2UKIAordXNlR2lhbnRUaWxlcyBpbml0aWFsPWZhbHNl
CisKIG1lZGlhU291cmNlRW5hYmxlZCBpbml0aWFsPXRydWUsIGNvbmRpdGlvbmFsPU1FRElBX1NP
VVJDRQogCiAjIEZJWE1FOiBSZW5hbWUgdG8gYWxsb3dNdWx0aUVsZW1lbnRJbXBsaWNpdEZvcm1T
dWJtaXNzaW9uIG9uY2Ugd2UgdXBzdHJlYW0gdGhlIGlPUyBjaGFuZ2VzIHRvIFdlYlZpZXcubW0u
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ2xp
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllckNsaWVudC5oCShyZXZpc2lvbiAxOTA4ODUpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDYgKzI2LDggQEAKICNpZm5kZWYgR3JhcGhpY3NMYXllckNsaWVudF9oCiAjZGVmaW5lIEdy
YXBoaWNzTGF5ZXJDbGllbnRfaAogCisjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIlRp
bGVkQmFja2luZy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTExOCw2ICsxMjAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3Vs
ZEFnZ3Jlc3NpdmVseVJldGFpblRpbGVzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRUZW1wb3JhcmlseVJldGFpblRp
bGVDb2hvcnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAK
KyAgICB2aXJ0dWFsIEludFNpemUgdGlsZVNpemUoKSBjb25zdCB7IHJldHVybiBkZWZhdWx0VGls
ZVNpemUoKTsgfQorCiAgICAgdmlydHVhbCBib29sIG5lZWRzUGl4ZWxBbGlnbWVudCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNJT1NEdW1wUmVuZGVy
VHJlZU1haW5GcmFtZVJlbmRlclZpZXdMYXllcklzQWx3YXlzT3BhcXVlSGFjayhjb25zdCBHcmFw
aGljc0xheWVyJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZy5oCShyZXZpc2lvbiAxOTA4ODUp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmcuaAkod29y
a2luZyBjb3B5KQpAQCAtMjgsOSArMjgsMjcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1z
dGF0aWMgY29uc3QgaW50IGRlZmF1bHRUaWxlV2lkdGggPSA1MTI7Ci1zdGF0aWMgY29uc3QgaW50
IGRlZmF1bHRUaWxlSGVpZ2h0ID0gNTEyOworZW51bSBUaWxlU2l6ZU1vZGUgeworICAgIFN0YW5k
YXJkVGlsZVNpemVNb2RlLAorICAgIEdpYW50VGlsZVNpemVNb2RlCit9OworCitpbmxpbmUgc3Rh
dGljIEludFNpemUgZGVmYXVsdFRpbGVTaXplKFRpbGVTaXplTW9kZSB0aWxlU2l6ZU1vZGUgPSBT
dGFuZGFyZFRpbGVTaXplTW9kZSkKK3sKKyAgICBzdGF0aWMgY29uc3QgaW50IGtUaWxlZExheWVy
VGlsZVNpemUgPSA1MTI7CisKKyAgICAvLyBUaGlzIGlzIGFuIGV4cGVyaW1lbnRhbCB2YWx1ZSBm
b3IgZGVidWdnaW5nIGFuZCBldmFsdWF0aW5nIHRoZSBvdmVyaGVhZCB3aGljaCBtYXkgYmUKKyAg
ICAvLyBpbmN1cnJlZCBkdWUgdG8gYSBsYXJnZSB0aWxlIHNpemUuCisgICAgc3RhdGljIGNvbnN0
IGludCBrR2lhbnRUaWxlZExheWVyVGlsZVNpemUgPSA0MDk2OworCisgICAgaWYgKHRpbGVTaXpl
TW9kZSA9PSBHaWFudFRpbGVTaXplTW9kZSkKKyAgICAgICAgcmV0dXJuIEludFNpemUoa0dpYW50
VGlsZWRMYXllclRpbGVTaXplLCBrR2lhbnRUaWxlZExheWVyVGlsZVNpemUpOworCisgICAgcmV0
dXJuIEludFNpemUoa1RpbGVkTGF5ZXJUaWxlU2l6ZSwga1RpbGVkTGF5ZXJUaWxlU2l6ZSk7Cit9
CiAKK2NsYXNzIEZsb2F0UG9pbnQ7CitjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBJbnRSZWN0Owog
Y2xhc3MgUGxhdGZvcm1DQUxheWVyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAJKHJldmlzaW9uIDE5
MDg4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5
ZXJDQS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NDksNiArMTQ0OSwxMSBAQCBib29sIEdyYXBo
aWNzTGF5ZXJDQTo6cGxhdGZvcm1DQUxheWVyU2hvCiAgICAgcmV0dXJuIGNsaWVudCgpLnNob3Vs
ZFRlbXBvcmFyaWx5UmV0YWluVGlsZUNvaG9ydHModGhpcyk7CiB9CiAKK0ludFNpemUgR3JhcGhp
Y3NMYXllckNBOjpwbGF0Zm9ybUNBTGF5ZXJUaWxlU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGNsaWVudCgpLnRpbGVTaXplKCk7Cit9CisKIHN0YXRpYyBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVy
VHlwZSBsYXllclR5cGVGb3JDdXN0b21CYWNrZHJvcEFwcGVhcmFuY2UoR3JhcGhpY3NMYXllcjo6
Q3VzdG9tQXBwZWFyYW5jZSBhcHBlYXJhbmNlKQogewogICAgIHJldHVybiBhcHBlYXJhbmNlID09
IEdyYXBoaWNzTGF5ZXI6OkxpZ2h0QmFja2Ryb3BBcHBlYXJhbmNlID8gUGxhdGZvcm1DQUxheWVy
OjpMYXllclR5cGVMaWdodFN5c3RlbUJhY2tkcm9wTGF5ZXIgOiBQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZURhcmtTeXN0ZW1CYWNrZHJvcExheWVyOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgJKHJldmlzaW9u
IDE5MDg4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNz
TGF5ZXJDQS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NywxMCArNDcsNiBAQCBjbGFzcyBUcmFuc2Zv
cm1TdGF0ZTsKIAogY2xhc3MgR3JhcGhpY3NMYXllckNBIDogcHVibGljIEdyYXBoaWNzTGF5ZXIs
IHB1YmxpYyBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQgewogcHVibGljOgotICAgIC8vIFRoZSB3aWR0
aCBhbmQgaGVpZ2h0IG9mIGEgc2luZ2xlIHRpbGUgaW4gYSB0aWxlZCBsYXllci4gU2hvdWxkIGJl
IGxhcmdlIGVub3VnaCB0bwotICAgIC8vIGF2b2lkIGxvdHMgb2Ygc21hbGwgdGlsZXMgKGFuZCB0
aGVyZWZvcmUgbG90cyBvZiBkcmF3aW5nIGNhbGxiYWNrcyksIGJ1dCBzbWFsbCBlbm91Z2gKLSAg
ICAvLyB0byBrZWVwIHRoZSBvdmVyYWxsIHRpbGUgY29zdCBsb3cuCi0gICAgc3RhdGljIGNvbnN0
IGludCBrVGlsZWRMYXllclRpbGVTaXplID0gNTEyOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgZXhw
bGljaXQgR3JhcGhpY3NMYXllckNBKFR5cGUsIEdyYXBoaWNzTGF5ZXJDbGllbnQmKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5HcmFwaGljc0xheWVyQ0EoKTsKQEAgLTE5OSw2ICsxOTUs
NyBAQCBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgZmxvYXQgcGxhdGZvcm1D
QUxheWVyQ29udGVudHNTY2FsZU11bHRpcGxpZXJGb3JOZXdUaWxlcyhQbGF0Zm9ybUNBTGF5ZXIq
KSBjb25zdCBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIGJvb2wgcGxhdGZv
cm1DQUxheWVyU2hvdWxkQWdncmVzc2l2ZWx5UmV0YWluVGlsZXMoUGxhdGZvcm1DQUxheWVyKikg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBib29sIHBsYXRmb3Jt
Q0FMYXllclNob3VsZFRlbXBvcmFyaWx5UmV0YWluVGlsZUNvaG9ydHMoUGxhdGZvcm1DQUxheWVy
KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBJbnRTaXplIHBs
YXRmb3JtQ0FMYXllclRpbGVTaXplKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJv
b2wgaXNDb21taXR0aW5nQ2hhbmdlcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNDb21t
aXR0aW5nQ2hhbmdlczsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaAkocmV2aXNpb24g
MTkwODg1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1D
QUxheWVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDYgKzYwLDggQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJTaG91bGRBZ2dyZXNzaXZlbHlSZXRhaW5U
aWxlcyhQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1
YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJTaG91bGRUZW1wb3JhcmlseVJldGFpblRpbGVDb2hvcnRz
KFBsYXRmb3JtQ0FMYXllciopIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAorICAgIHZpcnR1YWwg
SW50U2l6ZSBwbGF0Zm9ybUNBTGF5ZXJUaWxlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGRlZmF1bHRU
aWxlU2l6ZSgpOyB9CisKICAgICB2aXJ0dWFsIGJvb2wgaXNDb21taXR0aW5nQ2hhbmdlcygpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKIHByb3RlY3RlZDoKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAJKHJl
dmlzaW9uIDE5MDg4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1Rp
bGVDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNiBAQCBTdHJpbmcg
VGlsZUNvbnRyb2xsZXI6Onpvb21lZE91dFRpbGVHcmlkCiBUaWxlQ29udHJvbGxlcjo6VGlsZUNv
bnRyb2xsZXIoUGxhdGZvcm1DQUxheWVyKiByb290UGxhdGZvcm1MYXllcikKICAgICA6IG1fdGls
ZUNhY2hlTGF5ZXIocm9vdFBsYXRmb3JtTGF5ZXIpCiAgICAgLCBtX3RpbGVHcmlkKHN0ZDo6bWFr
ZV91bmlxdWU8VGlsZUdyaWQ+KCp0aGlzKSkKLSAgICAsIG1fdGlsZVNpemUoZGVmYXVsdFRpbGVX
aWR0aCwgZGVmYXVsdFRpbGVIZWlnaHQpCiAgICAgLCBtX3RpbGVSZXZhbGlkYXRpb25UaW1lcigq
dGhpcywgJlRpbGVDb250cm9sbGVyOjp0aWxlUmV2YWxpZGF0aW9uVGltZXJGaXJlZCkKICAgICAs
IG1fem9vbWVkT3V0Q29udGVudHNTY2FsZSgwKQogICAgICwgbV9kZXZpY2VTY2FsZUZhY3Rvcihv
d25pbmdHcmFwaGljc0xheWVyKCktPnBsYXRmb3JtQ0FMYXllckRldmljZVNjYWxlRmFjdG9yKCkp
CkBAIC0zMjgsOCArMzI3LDggQEAgRmxvYXRSZWN0IFRpbGVDb250cm9sbGVyOjpjb21wdXRlVGls
ZUNvdgogICAgIGlmIChtX3RpbGVDb3ZlcmFnZSA9PSBDb3ZlcmFnZUZvclZpc2libGVBcmVhIHx8
IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9uKCkuaXNVbmRlck1lbW9yeVByZXNzdXJl
KCkpCiAgICAgICAgIHJldHVybiB2aXNpYmxlUmVjdDsKIAotICAgIGRvdWJsZSBob3Jpem9udGFs
TWFyZ2luID0gZGVmYXVsdFRpbGVXaWR0aCAvIGNvbnRlbnRzU2NhbGU7Ci0gICAgZG91YmxlIHZl
cnRpY2FsTWFyZ2luID0gZGVmYXVsdFRpbGVIZWlnaHQgLyBjb250ZW50c1NjYWxlOworICAgIGRv
dWJsZSBob3Jpem9udGFsTWFyZ2luID0gdGlsZVNpemUoKS53aWR0aCgpIC8gY29udGVudHNTY2Fs
ZTsKKyAgICBkb3VibGUgdmVydGljYWxNYXJnaW4gPSB0aWxlU2l6ZSgpLmhlaWdodCgpIC8gY29u
dGVudHNTY2FsZTsKIAogICAgIGRvdWJsZSBjdXJyZW50VGltZSA9IG1vbm90b25pY2FsbHlJbmNy
ZWFzaW5nVGltZSgpOwogICAgIGRvdWJsZSB0aW1lRGVsdGEgPSBjdXJyZW50VGltZSAtIG1fdmVs
b2NpdHkubGFzdFVwZGF0ZVRpbWU7CkBAIC00MjgsNiArNDI3LDExIEBAIGJvb2wgVGlsZUNvbnRy
b2xsZXI6OnNob3VsZFRlbXBvcmFyaWx5UmUKICAgICByZXR1cm4gb3duaW5nR3JhcGhpY3NMYXll
cigpLT5wbGF0Zm9ybUNBTGF5ZXJTaG91bGRUZW1wb3JhcmlseVJldGFpblRpbGVDb2hvcnRzKG1f
dGlsZUNhY2hlTGF5ZXIpOwogfQogCitJbnRTaXplIFRpbGVDb250cm9sbGVyOjp0aWxlU2l6ZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG93bmluZ0dyYXBoaWNzTGF5ZXIoKS0+cGxhdGZvcm1DQUxh
eWVyVGlsZVNpemUoKTsKK30KKwogdm9pZCBUaWxlQ29udHJvbGxlcjo6Y2xlYXJab29tZWRPdXRU
aWxlR3JpZCgpCiB7CiAgICAgbV96b29tZWRPdXRUaWxlR3JpZCA9IG51bGxwdHI7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9s
bGVyLmgJKHJldmlzaW9uIDE5MDg4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1RpbGVDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAg
cHVibGljOgogICAgIGZsb2F0IHRpbGVEZWJ1Z0JvcmRlcldpZHRoKCkgY29uc3QgeyByZXR1cm4g
bV90aWxlRGVidWdCb3JkZXJXaWR0aDsgfQogICAgIFNjcm9sbGluZ01vZGVJbmRpY2F0aW9uIGlu
ZGljYXRvck1vZGUoKSBjb25zdCB7IHJldHVybiBtX2luZGljYXRvck1vZGU7IH0KIAotICAgIHZp
cnR1YWwgSW50U2l6ZSB0aWxlU2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fdGlsZVNp
emU7IH0KKyAgICB2aXJ0dWFsIEludFNpemUgdGlsZVNpemUoKSBjb25zdCBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIEludFJlY3QgYm91bmRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBJ
bnRSZWN0IGJvdW5kc1dpdGhvdXRNYXJnaW4oKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IGJvb2wgaGFzTWFyZ2lucygpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMTc1LDcgKzE3NSw2IEBAIHBy
aXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRpbGVHcmlkPiBtX3RpbGVHcmlkOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxUaWxlR3JpZD4gbV96b29tZWRPdXRUaWxlR3JpZDsKIAotICAgIEludFNp
emUgbV90aWxlU2l6ZTsKICAgICBGbG9hdFJlY3QgbV92aXNpYmxlUmVjdDsgLy8gT25seSB1c2Vk
IGZvciBzY3JvbGwgcGVyZm9ybWFuY2UgbG9nZ2luZy4KICAgICBGbG9hdFJlY3QgbV9jb3ZlcmFn
ZVJlY3Q7CiAgICAgSW50UmVjdCBtX2JvdW5kc0F0TGFzdFJldmFsaWRhdGU7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAkocmV2aXNp
b24gMTkwODg1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMyw4ICsyMjMsOCBAQCB2b2lkIFJlbmRlckxheWVy
QmFja2luZzo6c2V0VGlsZWRCYWNraW5nCiAgICAgaWYgKCFtX3VzaW5nVGlsZWRDYWNoZUxheWVy
KQogICAgICAgICByZXR1cm47CiAKLSAgICBpbnQgbWFyZ2luTGVmdEFuZFJpZ2h0U2l6ZSA9IGhh
c0V4dGVuZGVkQmFja2dyb3VuZE9uTGVmdEFuZFJpZ2h0ID8gZGVmYXVsdFRpbGVXaWR0aCA6IDA7
Ci0gICAgaW50IG1hcmdpblRvcEFuZEJvdHRvbVNpemUgPSBoYXNFeHRlbmRlZEJhY2tncm91bmRP
blRvcEFuZEJvdHRvbSA/IGRlZmF1bHRUaWxlSGVpZ2h0IDogMDsKKyAgICBpbnQgbWFyZ2luTGVm
dEFuZFJpZ2h0U2l6ZSA9IGhhc0V4dGVuZGVkQmFja2dyb3VuZE9uTGVmdEFuZFJpZ2h0ID8gdGls
ZVNpemUoKS53aWR0aCgpIDogMDsKKyAgICBpbnQgbWFyZ2luVG9wQW5kQm90dG9tU2l6ZSA9IGhh
c0V4dGVuZGVkQmFja2dyb3VuZE9uVG9wQW5kQm90dG9tID8gdGlsZVNpemUoKS5oZWlnaHQoKSA6
IDA7CiAgICAgdGlsZWRCYWNraW5nKCktPnNldFRpbGVNYXJnaW5zKG1hcmdpblRvcEFuZEJvdHRv
bVNpemUsIG1hcmdpblRvcEFuZEJvdHRvbVNpemUsIG1hcmdpbkxlZnRBbmRSaWdodFNpemUsIG1h
cmdpbkxlZnRBbmRSaWdodFNpemUpOwogfQogCkBAIC0yNDYxLDYgKzI0NjEsMTIgQEAgYm9vbCBS
ZW5kZXJMYXllckJhY2tpbmc6OnNob3VsZFRlbXBvcmFyaQogICAgIHJldHVybiB0cnVlOwogfQog
CitJbnRTaXplIFJlbmRlckxheWVyQmFja2luZzo6dGlsZVNpemUoKSBjb25zdAoreworICAgIFRp
bGVTaXplTW9kZSB0aWxlU2l6ZU1vZGUgPSByZW5kZXJlcigpLmZyYW1lKCkucGFnZSgpLT5zZXR0
aW5ncygpLnVzZUdpYW50VGlsZXMoKSA/IEdpYW50VGlsZVNpemVNb2RlIDogU3RhbmRhcmRUaWxl
U2l6ZU1vZGU7CisgICAgcmV0dXJuIGRlZmF1bHRUaWxlU2l6ZSh0aWxlU2l6ZU1vZGUpOworfQor
CiAjaWZuZGVmIE5ERUJVRwogdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnZlcmlmeU5vdFBhaW50
aW5nKCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmgJKHJldmlzaW9uIDE5MDg4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMjEzLDYgKzIxMyw3IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRBZ2dyZXNzaXZlbHlSZXRhaW5UaWxlcyhj
b25zdCBHcmFwaGljc0xheWVyKikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHNo
b3VsZFRlbXBvcmFyaWx5UmV0YWluVGlsZUNvaG9ydHMoY29uc3QgR3JhcGhpY3NMYXllciopIGNv
bnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgSW50U2l6ZSB0aWxlU2l6ZSgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgYm9vbCBuZWVkc1BpeGVsQWxpZ21lbnQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiAhbV9pc01haW5GcmFtZVJlbmRlclZpZXdMYXllcjsgfQogCiAjaWYgUExBVEZP
Uk0oSU9TKQpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTkwODg1KQorKysgU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTUtMTAtMTIg
IFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgZGVidWcgc2V0dGluZ3MgZm9yIHVzaW5nIGdpYW50IHRpbGVzICg0MDk2eDQwOTYpCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk5NzcKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzIzMDE3MDkzPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBI
b3J0b24uCisKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdL
UHJlZmVyZW5jZXNTZXRVc2VHaWFudFRpbGVzKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNHZXRV
c2VHaWFudFRpbGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1Jl
ZlByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKToKKwogMjAxNS0xMC0w
OSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIERvbid0
IGFsbG93IHBsdWctaW5zIHRvIG92ZXJyaWRlIGltYWdlIHR5cGVzIGZvciA8ZW1iZWQ+IGVsZW1l
bnRzCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9u
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc0Rl
ZmluaXRpb25zLmgJKHJldmlzaW9uIDE5MDg4NSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4OCw2ICsxODgs
NyBAQAogICAgIG1hY3JvKFRocmVhZGVkU2Nyb2xsaW5nRW5hYmxlZCwgdGhyZWFkZWRTY3JvbGxp
bmdFbmFibGVkLCBCb29sLCBib29sLCB0cnVlKSBcCiAgICAgbWFjcm8oU2ltcGxlTGluZUxheW91
dEVuYWJsZWQsIHNpbXBsZUxpbmVMYXlvdXRFbmFibGVkLCBCb29sLCBib29sLCB0cnVlKSBcCiAg
ICAgbWFjcm8oU3VicGl4ZWxDU1NPTUVsZW1lbnRNZXRyaWNzRW5hYmxlZCwgc3VicGl4ZWxDU1NP
TUVsZW1lbnRNZXRyaWNzRW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFsc2UpIFwKKyAgICBtYWNybyhV
c2VHaWFudFRpbGVzLCB1c2VHaWFudFRpbGVzLCBCb29sLCBib29sLCBmYWxzZSkgXAogICAgIG1h
Y3JvKE1lZGlhU3RyZWFtRW5hYmxlZCwgbWVkaWFTdHJlYW1FbmFibGVkLCBCb29sLCBib29sLCBm
YWxzZSkgXAogICAgIG1hY3JvKFVzZUxlZ2FjeVRleHRBbGlnblBvc2l0aW9uZWRFbGVtZW50QmVo
YXZpb3IsIHVzZUxlZ2FjeVRleHRBbGlnblBvc2l0aW9uZWRFbGVtZW50QmVoYXZpb3IsIEJvb2ws
IGJvb2wsIGZhbHNlKSBcCiAgICAgbWFjcm8oU3BhdGlhbE5hdmlnYXRpb25FbmFibGVkLCBzcGF0
aWFsTmF2aWdhdGlvbkVuYWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCShyZXZpc2lv
biAxOTA4ODUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNl
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMTcsNiArMTIxNywxNiBAQCBib29sIFdLUHJlZmVy
ZW5jZXNHZXRTdWJwaXhlbENTU09NRWxlbWVuCiAgICAgcmV0dXJuIHRvSW1wbChwcmVmZXJlbmNl
c1JlZiktPnN1YnBpeGVsQ1NTT01FbGVtZW50TWV0cmljc0VuYWJsZWQoKTsKIH0KIAordm9pZCBX
S1ByZWZlcmVuY2VzU2V0VXNlR2lhbnRUaWxlcyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2Vz
UmVmLCBib29sIGZsYWcpCit7CisgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0VXNlR2lh
bnRUaWxlcyhmbGFnKTsKK30KKworYm9vbCBXS1ByZWZlcmVuY2VzR2V0VXNlR2lhbnRUaWxlcyhX
S1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKQoreworICAgIHJldHVybiB0b0ltcGwocHJl
ZmVyZW5jZXNSZWYpLT51c2VHaWFudFRpbGVzKCk7Cit9CisKIHZvaWQgV0tQcmVmZXJlbmNlc1Nl
dE1lZGlhU3RyZWFtRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29s
IGVuYWJsZWQpCiB7CiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0TWVkaWFTdHJlYW1F
bmFibGVkKGVuYWJsZWQpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
UHJlZmVyZW5jZXNSZWZQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgJKHJldmlzaW9uIDE5MDg4NSkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTMsNiArMzEzLDEwIEBAIFdLX0VYUE9SVCBib29sIFdL
UHJlZmVyZW5jZXNHZXROZXdCbG9ja0kKIFdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRT
dWJwaXhlbENTU09NRWxlbWVudE1ldHJpY3NFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYsIGJvb2wp
OwogV0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNlc0dldFN1YnBpeGVsQ1NTT01FbGVtZW50TWV0
cmljc0VuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZik7CiAKKy8vIERlZmF1bHRzIHRvIGZhbHNlLgor
V0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldFVzZUdpYW50VGlsZXMoV0tQcmVmZXJlbmNl
c1JlZiwgYm9vbCk7CitXS19FWFBPUlQgYm9vbCBXS1ByZWZlcmVuY2VzR2V0VXNlR2lhbnRUaWxl
cyhXS1ByZWZlcmVuY2VzUmVmKTsKKwogV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1Jlc2V0
VGVzdFJ1bm5lck92ZXJyaWRlcyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKTsKIAog
Ly8gRGVmYXVsdHMgdG8gZmFsc2UuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAxOTA4ODUpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3Mzgs
NiArMjczOCw3IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2UKICAg
ICBzZXR0aW5ncy5zZXRTaG93UmVwYWludENvdW50ZXIoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5
KFdlYlByZWZlcmVuY2VzS2V5Ojpjb21wb3NpdGluZ1JlcGFpbnRDb3VudGVyc1Zpc2libGVLZXko
KSkpOwogICAgIHNldHRpbmdzLnNldFNob3dUaWxlZFNjcm9sbGluZ0luZGljYXRvcihzdG9yZS5n
ZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnRpbGVkU2Nyb2xsaW5nSW5kaWNh
dG9yVmlzaWJsZUtleSgpKSk7CiAgICAgc2V0dGluZ3Muc2V0VmlzaWJsZURlYnVnT3ZlcmxheVJl
Z2lvbnMoc3RvcmUuZ2V0VUludDMyVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnZpc2li
bGVEZWJ1Z092ZXJsYXlSZWdpb25zS2V5KCkpKTsKKyAgICBzZXR0aW5ncy5zZXRVc2VHaWFudFRp
bGVzKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6dXNlR2lhbnRU
aWxlc0tleSgpKSk7CiAgICAgCiAgICAgc2V0dGluZ3Muc2V0QWdncmVzc2l2ZVRpbGVSZXRlbnRp
b25FbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6YWdn
cmVzc2l2ZVRpbGVSZXRlbnRpb25FbmFibGVkS2V5KCkpKTsKICAgICBzZXR0aW5ncy5zZXRUZW1w
b3JhcnlUaWxlQ29ob3J0UmV0ZW50aW9uRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXko
V2ViUHJlZmVyZW5jZXNLZXk6OnRlbXBvcmFyeVRpbGVDb2hvcnRSZXRlbnRpb25FbmFibGVkS2V5
KCkpKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>