<?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>130768</bug_id>
          
          <creation_ts>2014-03-25 23:49:30 -0700</creation_ts>
          <short_desc>[iOS WebKit2] Flush all surfaces after painting into all of them, instead of after painting into each one</short_desc>
          <delta_ts>2014-03-31 16:31:22 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>130822</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>994504</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-03-25 23:49:30 -0700</bug_when>
    <thetext>The remote layer tree is effectively painting layers serially at the moment, as RemoteLayerBackingStore::drawInContext first paints into the layer, then flushes it.

To increase parallelism and hopefully increase painting performance, we should first paint all of the changed backing stores, then flush them all.

Ideally in the future we&apos;d move that flush off onto another thread so we can move forward with the next frame while flushing, but that&apos;s for another patch.

&lt;rdar://problem/16421471&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994514</commentid>
    <comment_count>1</comment_count>
      <attachid>227832</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-03-26 00:57:51 -0700</bug_when>
    <thetext>Created attachment 227832
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994581</commentid>
    <comment_count>2</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-03-26 08:26:14 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/166296</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994851</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-27 00:09:19 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 130822</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994877</commentid>
    <comment_count>4</comment_count>
      <attachid>227934</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-03-27 01:56:17 -0700</bug_when>
    <thetext>Created attachment 227934
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994878</commentid>
    <comment_count>5</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-03-27 01:56:41 -0700</bug_when>
    <thetext>I need to double check what happens with clones.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995030</commentid>
    <comment_count>6</comment_count>
      <attachid>227934</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-03-27 13:24:41 -0700</bug_when>
    <thetext>Comment on attachment 227934
patch

Clones are broken.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996024</commentid>
    <comment_count>7</comment_count>
      <attachid>228210</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-03-31 15:23:37 -0700</bug_when>
    <thetext>Created attachment 228210
patch (will break clones but fix in a follow-up)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996036</commentid>
    <comment_count>8</comment_count>
      <attachid>228213</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-03-31 16:02:42 -0700</bug_when>
    <thetext>Created attachment 228213
maybe rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996037</commentid>
    <comment_count>9</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-03-31 16:05:48 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=228210&amp;action=review

&gt; Source/WebKit2/Shared/mac/RemoteLayerBackingStore.h:46
&gt;  class RemoteLayerBackingStore {
&gt; +    WTF_MAKE_NONCOPYABLE(RemoteLayerBackingStore);

How come this is not Fast Allocated?

&gt; Source/WebKit2/Shared/mac/RemoteLayerBackingStore.mm:337
&gt; +    if (!m_frontContextPendingFlush)
&gt; +        return;
&gt; +
&gt; +    CGContextFlush(m_frontContextPendingFlush.get());
&gt; +    m_frontContextPendingFlush = nullptr;

Maybe?

if (m_frontContextPendingFlush) {
    CGContextFlush(m_frontContextPendingFlush.get());
    m_frontContextPendingFlush = nullptr;
}

&gt; Source/WebKit2/Shared/mac/RemoteLayerTreeTransaction.mm:418
&gt; +    for (const auto&amp; layer : m_changedLayers) {

&quot;auto&quot; sucks here, no way to guess the type.

&gt; Source/WebKit2/WebProcess/WebPage/mac/PlatformCALayerRemote.h:154
&gt; +    RemoteLayerTreeTransaction::LayerProperties&amp; properties() { return m_properties; }

You could have a const version.

&gt; Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:310
&gt; +    for (auto&amp; layer : transaction.changedLayers()) {

auto sucks here too :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996038</commentid>
    <comment_count>10</comment_count>
      <attachid>228213</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-03-31 16:06:20 -0700</bug_when>
    <thetext>Comment on attachment 228213
maybe rebase

r+ with the comments from the previous patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996050</commentid>
    <comment_count>11</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-03-31 16:31:22 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/166545</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227832</attachid>
            <date>2014-03-26 00:57:51 -0700</date>
            <delta_ts>2014-03-27 01:56:17 -0700</delta_ts>
            <desc>patch</desc>
            <filename>flush.diff</filename>
            <type>text/plain</type>
            <size>11403</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjOTUwYmUxLi4xMGY1NzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTQtMDMtMjYgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW2lPUyBXZWJLaXQyXSBGbHVzaCBhbGwgc3VyZmFjZXMgYWZ0ZXIgcGFpbnRpbmcg
aW50byBhbGwgb2YgdGhlbSwgaW5zdGVhZCBvZiBhZnRlciBwYWludGluZyBpbnRvIGVhY2ggb25l
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzA3NjgK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE2NDIxNDcxPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9T
dXJmYWNlLmg6CisgICAgICAgIEFkZCBhIG5vbi1lbnN1cmluZyBwbGF0Zm9ybUNvbnRleHQoKSBn
ZXR0ZXIuCisKIDIwMTQtMDMtMjUgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBTcGVjdWxhdGl2ZSBpT1MgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaAppbmRleCBiYzEyZjI4Li4yMDFlNWU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1
cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1
cmZhY2UuaApAQCAtNTIsNiArNTIsNyBAQCBwdWJsaWM6CiAgICAgSU9TdXJmYWNlUmVmIHN1cmZh
Y2UoKSBjb25zdCB7IHJldHVybiBtX3N1cmZhY2UuZ2V0KCk7IH0KICAgICBHcmFwaGljc0NvbnRl
eHQmIGVuc3VyZUdyYXBoaWNzQ29udGV4dCgpOwogICAgIENHQ29udGV4dFJlZiBlbnN1cmVQbGF0
Zm9ybUNvbnRleHQoKTsKKyAgICBDR0NvbnRleHRSZWYgcGxhdGZvcm1Db250ZXh0KCkgeyByZXR1
cm4gbV9jZ0NvbnRleHQuZ2V0KCk7IH0KIAogICAgIGVudW0gY2xhc3MgU3VyZmFjZVN0YXRlIHsK
ICAgICAgICAgVmFsaWQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNWI0NzUyMy4uNGI1YThkOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDQ3IEBACisyMDE0LTAzLTI2ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0
b25AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1MgV2ViS2l0Ml0gRmx1c2ggYWxsIHN1cmZhY2Vz
IGFmdGVyIHBhaW50aW5nIGludG8gYWxsIG9mIHRoZW0sIGluc3RlYWQgb2YgYWZ0ZXIgcGFpbnRp
bmcgaW50byBlYWNoIG9uZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTMwNzY4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xNjQyMTQ3MT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9tYWMv
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgQWRkIGZsdXNoKCksIHdoaWNoIHN5
bmNocm9ub3VzbHkgZmx1c2hlcyBwYWludGluZyBvcGVyYXRpb25zIG9uIHRoZSB1bmRlcmx5aW5n
IGJhY2tpbmcgc3RvcmUuCisgICAgICAgIEZhY3RvciBjbGVhckJhY2tpbmdTdG9yZSgpIG91dCBv
ZiBlbnN1cmVCYWNraW5nU3RvcmUvZGlzcGxheSwgd2hpY2ggcmVsZWFzZXMgb3VyIHJlZmVyZW5j
ZSB0byB1bmRlcmx5aW5nIGJhY2tpbmcgc3RvcmUuCisgICAgICAgIEFkZCB0d28gbWVtYmVycyBm
b3Igc3RvcmluZyB0aGUgYmFjayBzdXJmYWNlIGFuZCBmcm9udCBidWZmZXIgY29udGV4dCB1bnRp
bCBmbHVzaCgpIGlzIGNhbGxlZC4KKyAgICAgICAgICAgICAgICAtIFdlIG5lZWQgdG8ga2VlcCB0
aGUgYmFjayBzdXJmYWNlIGFsaXZlIGJlY2F1c2UgdGhlIENHSW1hZ2VSZWYgY3JlYXRlZCBmcm9t
IGl0IGlzIHJlZmVyZW5jZWQgYnkKKyAgICAgICAgICAgICAgICB0aGUgZnJvbnQgc3VyZmFjZSdz
IGRyYXdpbmcgcXVldWUsIGFuZCB3b24ndCBiZSBmcmVlZCB1bnRpbCBzYWlkIHF1ZXVlIGlzIGZs
dXNoZWQuIElmIHdlIHJlbGVhc2UKKyAgICAgICAgICAgICAgICB0aGUgYmFjayBzdXJmYWNlIChh
bmQgaXRzIGFzc29jaWF0ZWQgQ0dDb250ZXh0UmVmKSAqYmVmb3JlKiB0aGUgQ0dJbWFnZVJlZiBp
cyBmcmVlZCwgd2Ugd2lsbAorICAgICAgICAgICAgICAgIGRvIGFuIGV4cGVuc2l2ZSByZWFkYmFj
ayBvZiB0aGUgc3VyZmFjZS4KKyAgICAgICAgICAgICAgICAtIFdoZW4gbm90IHVzaW5nIGFjY2Vs
ZXJhdGVkIGRyYXdpbmcsIHdlIG5lZWQgdG8ga2VlcCB0aGUgZnJvbnQgYnVmZmVyJ3MgQ0dDb250
ZXh0UmVmIGFyb3VuZAorICAgICAgICAgICAgICAgIHVudGlsIHRoZSBmbHVzaCBvY2N1cnMgc28g
dGhhdCB3ZSBjYW4gYXZvaWQgcmUtY3JlYXRpbmcgaXQgaW4gb3JkZXIgdG8gcGVyZm9ybSB0aGUg
Zmx1c2guIFRoaXMKKyAgICAgICAgICAgICAgICBoYXBwZW5zIGF1dG9tYXRpY2FsbHkgaW4gdGhl
IGFjY2VsZXJhdGVkIGRyYXdpbmcgY2FzZSB2aWEgV2ViQ29yZTo6SU9TdXJmYWNlLgorCisgICAg
ICAgICogU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbToKKyAgICAgICAgKFJl
bW90ZUxheWVyQmFja2luZ1N0b3JlOjplbnN1cmVCYWNraW5nU3RvcmUpOgorICAgICAgICAoUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmU6OmNsZWFyQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFJlbW90
ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KToKKyAgICAgICAgRmFjdG9yIGNsZWFyQmFja2lu
Z1N0b3JlKCkgb3V0IG9mIGVuc3VyZUJhY2tpbmdTdG9yZSgpIGFuZCBkaXNwbGF5KCkuCisgICAg
ICAgIFVwZGF0ZSBhIGNvbW1lbnQgYWJvdXQgdGhlIGFib3ZlIHBlcmZvcm1hbmNlIGdvdGNoYS4K
KyAgICAgICAgU3RvcmUgdGhlIGN1cnJlbnQgYmFjayBzdXJmYWNlL2Zyb250IGJ1ZmZlciBjb250
ZXh0LgorCisgICAgICAgIChSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZHJhd0luQ29udGV4dCk6
CisgICAgICAgIERvbid0IGZsdXNoIHRoZSBjb250ZXh0IGltbWVkaWF0ZWx5IGFmdGVyIHBhaW50
aW5nLgorCisgICAgICAgIChSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6YXBwbHlCYWNraW5nU3Rv
cmVUb0xheWVyKToKKyAgICAgICAgTW92ZSB0aGluZ3MgYXJvdW5kIHRvIHJlZHVjZSBkdXBsaWNh
dGVkIGNvZGUuCisKKyAgICAgICAgKFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpmbHVzaCk6Cisg
ICAgICAgIEZsdXNoIHRoZSBjdXJyZW50IGZyb250IHN1cmZhY2UvYnVmZmVyJ3MgY29udGV4dC4K
KyAgICAgICAgQ2xlYXIgdGhlIG5ldyBwZW5kaW5nLWZsdXNoIG1lbWJlcnMuCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tOgor
ICAgICAgICAoV2ViS2l0OjpmbHVzaEJhY2tpbmdTdG9yZUNoYW5nZXNJblRyYW5zYWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJz
KToKKyAgICAgICAgQ3Jhd2wgdGhyb3VnaCBhbGwgb2YgdGhlIHZhbGlkIGNoYW5nZWQgYmFja2lu
ZyBzdG9yZXMgaW4gdGhlIHRyYW5zYWN0aW9uIGFuZCBmbHVzaCB0aGVtLgorICAgICAgICBSZW1v
dmUgYSBjb21wbGV0ZWx5IHVzZWxlc3MgYXNzZXJ0aW9uLgorCiAyMDE0LTAzLTI1ICBQcmF0aWsg
U29sYW5raSAgPHBzb2xhbmtpQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgUExBVEZPUk0o
SU9TKSBmcm9tIE5ldHdvcmtQcm9jZXNzTWFjLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgKaW5kZXggOTNkMjYxMC4uMmEzZDUx
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tp
bmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmUuaApAQCAtNzUsMTAgKzc1LDE0IEBAIHB1YmxpYzoKICNlbmRpZgogICAgICAgICBy
ZXR1cm4gISFtX2Zyb250QnVmZmVyOwogICAgIH0KKworICAgIHZvaWQgZmx1c2goKTsKKwogcHJp
dmF0ZToKICAgICB2b2lkIGRyYXdJbkNvbnRleHQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Jiwg
Q0dJbWFnZVJlZiBmcm9udEltYWdlKTsKIAogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVh
dGVJbWFnZUZvckZyb250QnVmZmVyKCkgY29uc3Q7CisgICAgdm9pZCBjbGVhckJhY2tpbmdTdG9y
ZSgpOwogCiAgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlKiBtX2xheWVyOwogCkBAIC04OSw4ICs5
MywxMCBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlJlZ2lvbiBtX2RpcnR5UmVnaW9uOwogCiAg
ICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gbV9mcm9udEJ1ZmZlcjsKKyAgICBSZXRhaW5QdHI8
Q0dDb250ZXh0UmVmPiBtX2J1ZmZlckNvbnRleHRQZW5kaW5nRmx1c2g7CiAjaWYgVVNFKElPU1VS
RkFDRSkKICAgICBSZWZQdHI8V2ViQ29yZTo6SU9TdXJmYWNlPiBtX2Zyb250U3VyZmFjZTsKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6SU9TdXJmYWNlPiBtX2JhY2tTdXJmYWNlUGVuZGluZ0ZsdXNoOwog
I2VuZGlmCiAKICAgICBib29sIG1fYWNjZWxlcmF0ZXNEcmF3aW5nOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KaW5kZXggNjdk
YTllYi4uYWU3NGZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1v
dGVMYXllckJhY2tpbmdTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1Jl
bW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCkBAIC02OCw5ICs2OCwxNiBAQCB2b2lkIFJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlOjplbnN1cmVCYWNraW5nU3RvcmUoUGxhdGZvcm1DQUxheWVyUmVtb3Rl
KiBsYXllciwgSQogICAgIG1fYWNjZWxlcmF0ZXNEcmF3aW5nID0gYWNjZWxlcmF0ZXNEcmF3aW5n
OwogICAgIG1faXNPcGFxdWUgPSBpc09wYXF1ZTsKIAorICAgIGNsZWFyQmFja2luZ1N0b3JlKCk7
Cit9CisKK3ZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmNsZWFyQmFja2luZ1N0b3JlKCkK
K3sKICNpZiBVU0UoSU9TVVJGQUNFKQogICAgIG1fZnJvbnRTdXJmYWNlID0gbnVsbHB0cjsKKyAg
ICBtX2JhY2tTdXJmYWNlUGVuZGluZ0ZsdXNoID0gbnVsbHB0cjsKICNlbmRpZgorICAgIG1fYnVm
ZmVyQ29udGV4dFBlbmRpbmdGbHVzaCA9IG51bGxwdHI7CiAgICAgbV9mcm9udEJ1ZmZlciA9IG51
bGxwdHI7CiB9CiAKQEAgLTE1Miw2ICsxNTksOCBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmU6OmNyZWF0ZUltYWdlRm9yRnJvbnRCdWZmZXIoKSBjb25zdAog
CiBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KCkKIHsKKyAgICBBU1NFUlQo
IW1fYnVmZmVyQ29udGV4dFBlbmRpbmdGbHVzaCk7CisKICAgICBpZiAoIW1fbGF5ZXIpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTU5LDEyICsxNjgsNyBAQCBib29sIFJlbW90ZUxheWVy
QmFja2luZ1N0b3JlOjpkaXNwbGF5KCkKICAgICAvLyB0byBub3RlIHRoYXQgb3VyIGJhY2tpbmcg
c3RvcmUgaGFzIGJlZW4gY2xlYXJlZC4KICAgICBpZiAoIW1fbGF5ZXItPm93bmVyKCkgfHwgIW1f
bGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVudCgpKSB7CiAgICAgICAg
IGJvb2wgcHJldmlvdXNseURyZXdDb250ZW50cyA9IGhhc0Zyb250QnVmZmVyKCk7Ci0KLSAgICAg
ICAgbV9mcm9udEJ1ZmZlciA9IG51bGxwdHI7Ci0jaWYgVVNFKElPU1VSRkFDRSkKLSAgICAgICAg
bV9mcm9udFN1cmZhY2UgPSBudWxscHRyOwotI2VuZGlmCi0KKyAgICAgICAgY2xlYXJCYWNraW5n
U3RvcmUoKTsKICAgICAgICAgcmV0dXJuIHByZXZpb3VzbHlEcmV3Q29udGVudHM7CiAgICAgfQog
CkBAIC0xODQsNiArMTg4LDcgQEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxh
eSgpCiAgICAgSW50U2l6ZSBleHBhbmRlZFNjYWxlZFNpemUgPSBleHBhbmRlZEludFNpemUoc2Nh
bGVkU2l6ZSk7CiAKICNpZiBVU0UoSU9TVVJGQUNFKQorICAgIEFTU0VSVCghbV9iYWNrU3VyZmFj
ZVBlbmRpbmdGbHVzaCk7CiAgICAgaWYgKG1fYWNjZWxlcmF0ZXNEcmF3aW5nKSB7CiAgICAgICAg
IFJlZlB0cjxJT1N1cmZhY2U+IGJhY2tTdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoZXhwYW5k
ZWRTY2FsZWRTaXplLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAgICAgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0ID0gYmFja1N1cmZhY2UtPmVuc3VyZUdyYXBoaWNzQ29udGV4dCgpOwpAQCAt
MTk2LDEwICsyMDEsMTEgQEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgp
CiAgICAgICAgICAgICBmcm9udEltYWdlID0gbV9mcm9udFN1cmZhY2UtPmNyZWF0ZUltYWdlKCk7
CiAgICAgICAgIGRyYXdJbkNvbnRleHQoY29udGV4dCwgZnJvbnRJbWFnZS5nZXQoKSk7CiAKLSAg
ICAgICAgLy8gSWYgb3VyIGZyb250SW1hZ2UgaXMgZGVyaXZlZCBmcm9tIGFuIElPU3VyZmFjZSwg
d2UgbmVlZCB0bwotICAgICAgICAvLyBkZXN0cm95IHRoZSBpbWFnZSBiZWZvcmUgdGhlIENHQ29u
dGV4dCBpdCdzIGRlcml2ZWQgZnJvbSwKLSAgICAgICAgLy8gc28gdGhhdCB0aGUgY29udGV4dCBk
b2Vzbid0IG1ha2UgYSBDUFUgY29weSBvZiB0aGUgc3VyZmFjZSBkYXRhLgotICAgICAgICBmcm9u
dEltYWdlID0gbnVsbHB0cjsKKyAgICAgICAgLy8gSWYgb3VyIGZyb250SW1hZ2UgaXMgZGVyaXZl
ZCBmcm9tIGFuIElPU3VyZmFjZSwgd2UgbmVlZCB0byBkZXN0cm95IHRoZSBpbWFnZSBiZWZvcmUg
dGhlCisgICAgICAgIC8vIENHQ29udGV4dCBpdCdzIGRlcml2ZWQgZnJvbSwgc28gdGhhdCB0aGUg
Y29udGV4dCBkb2Vzbid0IG1ha2UgYSBDUFUgY29weSBvZiB0aGUgc3VyZmFjZSBkYXRhLgorICAg
ICAgICAvLyBTaW5jZSB0aGUgZmx1c2ggd2lsbCBoYXBwZW4gbGF0ZXIsIHRoaXMgbWVhbnMgd2Ug
bmVlZCB0byBob2xkIG9uIHRvIHRoZSBJT1N1cmZhY2UKKyAgICAgICAgLy8gKGFuZCB0aHVzIGl0
cyBjb250ZXh0KSB1bnRpbCBhZnRlciB0aGUgZmx1c2ggY29tcGxldGVzLgorICAgICAgICBtX2Jh
Y2tTdXJmYWNlUGVuZGluZ0ZsdXNoID0gbV9mcm9udFN1cmZhY2U7CiAgICAgICAgIG1fZnJvbnRT
dXJmYWNlID0gYmFja1N1cmZhY2U7CiAKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yMTEsNiAr
MjE3LDcgQEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCiAgICAgUmV0
YWluUHRyPENHSW1hZ2VSZWY+IGZyb250SW1hZ2UgPSBjcmVhdGVJbWFnZUZvckZyb250QnVmZmVy
KCk7CiAgICAgbV9mcm9udEJ1ZmZlciA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxl
KGV4cGFuZGVkU2NhbGVkU2l6ZSwgbV9pc09wYXF1ZSA/IFNoYXJlYWJsZUJpdG1hcDo6Tm9GbGFn
cyA6IFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PEdyYXBoaWNzQ29udGV4dD4gY29udGV4dCA9IG1fZnJvbnRCdWZmZXItPmNyZWF0ZUdyYXBoaWNz
Q29udGV4dCgpOworICAgIG1fYnVmZmVyQ29udGV4dFBlbmRpbmdGbHVzaCA9IGNvbnRleHQtPnBs
YXRmb3JtQ29udGV4dCgpOwogICAgIGRyYXdJbkNvbnRleHQoKmNvbnRleHQsIGZyb250SW1hZ2Uu
Z2V0KCkpOwogICAgIAogICAgIHJldHVybiB0cnVlOwpAQCAtMjg4LDggKzI5NSw2IEBAIHZvaWQg
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRyYXdJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBDR0ltYWdlUmVmCiAKICAgICBtX2RpcnR5UmVnaW9uID0gUmVnaW9uKCk7CiAgICAg
bV9wYWludGluZ1JlY3RzLmNsZWFyKCk7Ci0KLSAgICBDR0NvbnRleHRGbHVzaChjb250ZXh0LnBs
YXRmb3JtQ29udGV4dCgpKTsKIH0KIAogdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZW51
bWVyYXRlUmVjdHNCZWluZ0RyYXduKENHQ29udGV4dFJlZiBjb250ZXh0LCB2b2lkICheYmxvY2sp
KENHUmVjdCkpCkBAIC0zMDksMTUgKzMxNCwzNCBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0
b3JlOjplbnVtZXJhdGVSZWN0c0JlaW5nRHJhd24oQ0dDb250ZXh0UmVmIGNvbnRleHQsIHZvaQog
CiB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjphcHBseUJhY2tpbmdTdG9yZVRvTGF5ZXIo
Q0FMYXllciAqbGF5ZXIpCiB7CisgICAgbGF5ZXIuY29udGVudHNPcGFxdWUgPSBtX2lzT3BhcXVl
OworCiAjaWYgVVNFKElPU1VSRkFDRSkKLSAgICBpZiAoYWNjZWxlcmF0ZXNEcmF3aW5nKCkpCisg
ICAgaWYgKGFjY2VsZXJhdGVzRHJhd2luZygpKSB7CiAgICAgICAgIGxheWVyLmNvbnRlbnRzID0g
KGlkKW1fZnJvbnRTdXJmYWNlLT5zdXJmYWNlKCk7Ci0gICAgZWxzZQotICAgICAgICBsYXllci5j
b250ZW50cyA9IChpZCljcmVhdGVJbWFnZUZvckZyb250QnVmZmVyKCkuZ2V0KCk7Ci0jZWxzZQor
ICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKICAgICBBU1NFUlQoIWFjY2VsZXJhdGVz
RHJhd2luZygpKTsKICAgICBsYXllci5jb250ZW50cyA9IChpZCljcmVhdGVJbWFnZUZvckZyb250
QnVmZmVyKCkuZ2V0KCk7Cit9CisKK3ZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmZsdXNo
KCkKK3sKKyNpZiBVU0UoSU9TVVJGQUNFKQorICAgIGlmIChhY2NlbGVyYXRlc0RyYXdpbmcoKSkg
eworICAgICAgICBDR0NvbnRleHRSZWYgcGxhdGZvcm1Db250ZXh0ID0gbV9mcm9udFN1cmZhY2Ut
PnBsYXRmb3JtQ29udGV4dCgpOworICAgICAgICBBU1NFUlQocGxhdGZvcm1Db250ZXh0KTsKKyAg
ICAgICAgQVNTRVJUKG1fYmFja1N1cmZhY2VQZW5kaW5nRmx1c2gpOworICAgICAgICBDR0NvbnRl
eHRGbHVzaChwbGF0Zm9ybUNvbnRleHQpOworICAgICAgICBtX2JhY2tTdXJmYWNlUGVuZGluZ0Zs
dXNoID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICNlbmRpZgogCi0gICAgbGF5
ZXIuY29udGVudHNPcGFxdWUgPSBtX2lzT3BhcXVlOworICAgIEFTU0VSVCghYWNjZWxlcmF0ZXNE
cmF3aW5nKCkpOworICAgIEFTU0VSVChtX2J1ZmZlckNvbnRleHRQZW5kaW5nRmx1c2gpOworICAg
IENHQ29udGV4dEZsdXNoKG1fYnVmZmVyQ29udGV4dFBlbmRpbmdGbHVzaC5nZXQoKSk7CisgICAg
bV9idWZmZXJDb250ZXh0UGVuZGluZ0ZsdXNoID0gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhLm1tCmluZGV4IDExNjhhZWQuLjgzNzVkODAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9S
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQpAQCAtMzAyLDYgKzMwMiwxNyBAQCB2b2lkIFJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpsYXllckZsdXNoVGltZXJGaXJlZChXZWJDb3JlOjpU
aW1lcjxSZW1vdGVMYXllcgogICAgIGZsdXNoTGF5ZXJzKCk7CiB9CiAKK3N0YXRpYyB2b2lkIGZs
dXNoQmFja2luZ1N0b3JlQ2hhbmdlc0luVHJhbnNhY3Rpb24oUmVtb3RlTGF5ZXJUcmVlVHJhbnNh
Y3Rpb24mIHRyYW5zYWN0aW9uKQoreworICAgIGZvciAoYXV0byYgbGF5ZXJQcm9wZXJ0aWVzIDog
dHJhbnNhY3Rpb24uY2hhbmdlZExheWVycygpLnZhbHVlcygpKSB7CisgICAgICAgIGlmICghbGF5
ZXJQcm9wZXJ0aWVzLT5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uOjpCYWNraW5nU3RvcmVDaGFuZ2VkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IGlmIChSZW1vdGVMYXllckJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlID0gbGF5ZXJQcm9wZXJ0
aWVzLT5iYWNraW5nU3RvcmUuZ2V0KCkpCisgICAgICAgICAgICBiYWNraW5nU3RvcmUtPmZsdXNo
KCk7CisgICAgfQorfQorCiB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpmbHVzaExh
eWVycygpCiB7CiAgICAgaWYgKCFtX3Jvb3RMYXllcikKQEAgLTMxNyw4ICszMjgsNiBAQCB2b2lk
IFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpmbHVzaExheWVycygpCiAKICAgICBtX3JlbW90
ZUxheWVyVHJlZUNvbnRleHQtPmZsdXNoT3V0T2ZUcmVlTGF5ZXJzKCk7CiAKLSAgICBBU1NFUlQo
bV9yb290TGF5ZXIpOwotCiAgICAgLy8gRklYTUU6IG1pbml6ZSB0aGVzZSB0cmFuc2FjdGlvbnMg
aWYgbm90aGluZyBjaGFuZ2VkLgogICAgIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uIGxheWVy
VHJhbnNhY3Rpb247CiAgICAgbV9yZW1vdGVMYXllclRyZWVDb250ZXh0LT5idWlsZFRyYW5zYWN0
aW9uKGxheWVyVHJhbnNhY3Rpb24sICptX3Jvb3RMYXllcik7CkBAIC0zMzAsNiArMzM5LDkgQEAg
dm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6Zmx1c2hMYXllcnMoKQogICAgICAgICB0
b1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yKG1fd2ViUGFnZS0+c2Nyb2xsaW5nQ29vcmRpbmF0
b3IoKSktPmJ1aWxkVHJhbnNhY3Rpb24oc2Nyb2xsaW5nVHJhbnNhY3Rpb24pOwogI2VuZGlmCiAK
KyAgICAvLyBGSVhNRTogTW92ZSBmbHVzaGluZyBiYWNraW5nIHN0b3JlIGFuZCBzZW5kaW5nIENv
bW1pdExheWVyVHJlZSBvbnRvIGEgYmFja2dyb3VuZCB0aHJlYWQuCisgICAgZmx1c2hCYWNraW5n
U3RvcmVDaGFuZ2VzSW5UcmFuc2FjdGlvbihsYXllclRyYW5zYWN0aW9uKTsKKwogICAgIG1fd2Vi
UGFnZS0+c2VuZChNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Q29t
bWl0TGF5ZXJUcmVlKGxheWVyVHJhbnNhY3Rpb24sIHNjcm9sbGluZ1RyYW5zYWN0aW9uKSk7CiB9
CiAK
</data>
<flag name="review"
          id="252075"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227934</attachid>
            <date>2014-03-27 01:56:17 -0700</date>
            <delta_ts>2014-03-31 15:23:37 -0700</delta_ts>
            <desc>patch</desc>
            <filename>flush3.diff</filename>
            <type>text/plain</type>
            <size>25067</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwNDE5OTZmLi45YTk4NmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTQtMDMtMjcgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW2lPUyBXZWJLaXQyXSBGbHVzaCBhbGwgc3VyZmFjZXMgYWZ0ZXIgcGFpbnRpbmcg
aW50byBhbGwgb2YgdGhlbSwgaW5zdGVhZCBvZiBhZnRlciBwYWludGluZyBpbnRvIGVhY2ggb25l
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzA3NjgK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE2NDIxNDcxPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9T
dXJmYWNlLmg6CisgICAgICAgIEFkZCBhIG5vbi1lbnN1cmluZyBwbGF0Zm9ybUNvbnRleHQoKSBn
ZXR0ZXIuCisKIDIwMTQtMDMtMjcgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5n
LmNvbT4KIAogICAgICAgICBSZW1vdmUgdW5uZWVkZWQgbXV0YWJsZSBrZXl3b3JkIGluIHNvbWUg
bWVtYmVyIHZhcmlhYmxlcyAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvSU9TdXJmYWNlLmgKaW5kZXggYmMxMmYyOC4uMjAxZTVlNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgKQEAgLTUy
LDYgKzUyLDcgQEAgcHVibGljOgogICAgIElPU3VyZmFjZVJlZiBzdXJmYWNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdXJmYWNlLmdldCgpOyB9CiAgICAgR3JhcGhpY3NDb250ZXh0JiBlbnN1cmVHcmFw
aGljc0NvbnRleHQoKTsKICAgICBDR0NvbnRleHRSZWYgZW5zdXJlUGxhdGZvcm1Db250ZXh0KCk7
CisgICAgQ0dDb250ZXh0UmVmIHBsYXRmb3JtQ29udGV4dCgpIHsgcmV0dXJuIG1fY2dDb250ZXh0
LmdldCgpOyB9CiAKICAgICBlbnVtIGNsYXNzIFN1cmZhY2VTdGF0ZSB7CiAgICAgICAgIFZhbGlk
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IDMzNjgyM2YuLjk1OWQ2YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4
NSBAQAorMjAxNC0wMy0yNyAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4K
KworICAgICAgICBbaU9TIFdlYktpdDJdIEZsdXNoIGFsbCBzdXJmYWNlcyBhZnRlciBwYWludGlu
ZyBpbnRvIGFsbCBvZiB0aGVtLCBpbnN0ZWFkIG9mIGFmdGVyIHBhaW50aW5nIGludG8gZWFjaCBv
bmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDc2
OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTY0MjE0NzE+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFj
a2luZ1N0b3JlLmg6CisgICAgICAgIE1ha2UgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUgbm9uY29w
eWFibGUuCisgICAgICAgIEFkZCBmbHVzaCgpLCB3aGljaCBzeW5jaHJvbm91c2x5IGZsdXNoZXMg
cGFpbnRpbmcgb3BlcmF0aW9ucyBvbiB0aGUgdW5kZXJseWluZyBiYWNraW5nIHN0b3JlLgorICAg
ICAgICBGYWN0b3IgY2xlYXJCYWNraW5nU3RvcmUoKSBvdXQgb2YgZW5zdXJlQmFja2luZ1N0b3Jl
L2Rpc3BsYXksIHdoaWNoIHJlbGVhc2VzIG91ciByZWZlcmVuY2UgdG8gdW5kZXJseWluZyBiYWNr
aW5nIHN0b3JlLgorICAgICAgICBBZGQgdHdvIG1lbWJlcnMgZm9yIHN0b3JpbmcgdGhlIGJhY2sg
c3VyZmFjZSBhbmQgZnJvbnQgYnVmZmVyIGNvbnRleHQgdW50aWwgZmx1c2goKSBpcyBjYWxsZWQu
CisgICAgICAgICAgICAgICAgLSBXZSBuZWVkIHRvIGtlZXAgdGhlIGJhY2sgc3VyZmFjZSBhbGl2
ZSBiZWNhdXNlIHRoZSBDR0ltYWdlUmVmIGNyZWF0ZWQgZnJvbSBpdCBpcyByZWZlcmVuY2VkIGJ5
CisgICAgICAgICAgICAgICAgdGhlIGZyb250IHN1cmZhY2UncyBkcmF3aW5nIHF1ZXVlLCBhbmQg
d29uJ3QgYmUgZnJlZWQgdW50aWwgc2FpZCBxdWV1ZSBpcyBmbHVzaGVkLiBJZiB3ZSByZWxlYXNl
CisgICAgICAgICAgICAgICAgdGhlIGJhY2sgc3VyZmFjZSAoYW5kIGl0cyBhc3NvY2lhdGVkIENH
Q29udGV4dFJlZikgKmJlZm9yZSogdGhlIENHSW1hZ2VSZWYgaXMgZnJlZWQsIHdlIHdpbGwKKyAg
ICAgICAgICAgICAgICBkbyBhbiBleHBlbnNpdmUgcmVhZGJhY2sgb2YgdGhlIHN1cmZhY2UuCisg
ICAgICAgICAgICAgICAgLSBXaGVuIG5vdCB1c2luZyBhY2NlbGVyYXRlZCBkcmF3aW5nLCB3ZSBu
ZWVkIHRvIGtlZXAgdGhlIGZyb250IGJ1ZmZlcidzIENHQ29udGV4dFJlZiBhcm91bmQKKyAgICAg
ICAgICAgICAgICB1bnRpbCB0aGUgZmx1c2ggb2NjdXJzIHNvIHRoYXQgd2UgY2FuIGF2b2lkIHJl
LWNyZWF0aW5nIGl0IGluIG9yZGVyIHRvIHBlcmZvcm0gdGhlIGZsdXNoLiBUaGlzCisgICAgICAg
ICAgICAgICAgaGFwcGVucyBhdXRvbWF0aWNhbGx5IGluIHRoZSBhY2NlbGVyYXRlZCBkcmF3aW5n
IGNhc2UgdmlhIFdlYkNvcmU6OklPU3VyZmFjZS4KKworICAgICAgICAqIFNoYXJlZC9tYWMvUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChSZW1vdGVMYXllckJhY2tpbmdTdG9y
ZTo6ZW5zdXJlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
OjpjbGVhckJhY2tpbmdTdG9yZSk6CisgICAgICAgIChSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6
ZGlzcGxheSk6CisgICAgICAgIEZhY3RvciBjbGVhckJhY2tpbmdTdG9yZSgpIG91dCBvZiBlbnN1
cmVCYWNraW5nU3RvcmUoKSBhbmQgZGlzcGxheSgpLgorICAgICAgICBVcGRhdGUgYSBjb21tZW50
IGFib3V0IHRoZSBhYm92ZSBwZXJmb3JtYW5jZSBnb3RjaGEuCisgICAgICAgIFN0b3JlIHRoZSBj
dXJyZW50IGJhY2sgc3VyZmFjZS9mcm9udCBidWZmZXIgY29udGV4dC4KKworICAgICAgICAoUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRyYXdJbkNvbnRleHQpOgorICAgICAgICBEb24ndCBmbHVz
aCB0aGUgY29udGV4dCBpbW1lZGlhdGVseSBhZnRlciBwYWludGluZy4KKworICAgICAgICAoUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmU6OmFwcGx5QmFja2luZ1N0b3JlVG9MYXllcik6CisgICAgICAg
IE1vdmUgdGhpbmdzIGFyb3VuZCB0byByZWR1Y2UgZHVwbGljYXRlZCBjb2RlLgorCisgICAgICAg
IChSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6Zmx1c2gpOgorICAgICAgICBGbHVzaCB0aGUgY3Vy
cmVudCBmcm9udCBzdXJmYWNlL2J1ZmZlcidzIGNvbnRleHQuCisgICAgICAgIENsZWFyIHRoZSBu
ZXcgcGVuZGluZy1mbHVzaCBtZW1iZXJzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6Zmx1
c2hCYWNraW5nU3RvcmVDaGFuZ2VzSW5UcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpmbHVzaExheWVycyk6CisgICAgICAgIENyYXdsIHRo
cm91Z2ggYWxsIG9mIHRoZSB2YWxpZCBjaGFuZ2VkIGJhY2tpbmcgc3RvcmVzIGluIHRoZSB0cmFu
c2FjdGlvbiBhbmQgZmx1c2ggdGhlbS4KKyAgICAgICAgUmVtb3ZlIGEgY29tcGxldGVseSB1c2Vs
ZXNzIGFzc2VydGlvbi4KKyAgICAgICAgUmVzZXQgY2hhbmdlZCBwcm9wZXJ0aWVzIGFmdGVyIGVu
Y29kaW5nIHRoZSBjb21taXQuCisKKyAgICAgICAgKiBTaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uOjpMYXllclByb3BlcnRpZXM6OnJlc2V0Q2hhbmdlZFByb3BlcnRpZXMpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6Y2hhbmdlZExheWVycyk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpjaGFuZ2VkTGF5ZXJQcm9w
ZXJ0aWVzKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQ
cm9wZXJ0aWVzOjpMYXllclByb3BlcnRpZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpkZWNvZGUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmRlY29kZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpsYXllclByb3BlcnRpZXNDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYktpdDo6ZHVtcENoYW5nZWRMYXllcnMpOgorICAgICAgICBJbnN0ZWFkIG9mIHN0
b3JpbmcgYSBjb3B5IG9mIHRoZSBMYXllclByb3BlcnRpZXMgc3RydWN0IGZvciBlYWNoIGNoYW5n
ZWQgbGF5ZXIKKyAgICAgICAgd2hpbGUgYnVpbGRpbmcgdGhlIHRyYW5zYWN0aW9uIGluIHRoZSBX
ZWIgcHJvY2Vzcywgc3RvcmUgYSBsaXN0IG9mIGNoYW5nZWQgbGF5ZXJzLAorICAgICAgICBhbmQg
ZGlyZWN0bHkgZW5jb2RlIHRoZSBjb21taXQgZnJvbSB0aG9zZSBsYXllcnMnIExheWVyUHJvcGVy
dGllcy4gVGhpcyBwcm92aWRlcyBhIGZldyBiZW5lZml0czoKKyAgICAgICAgICAgICAgICAtIFdl
IGF2b2lkIGNvcHlpbmcgTGF5ZXJQcm9wZXJ0aWVzIGZvciBldmVyeSBjaGFuZ2VkIGxheWVyLCBl
dmVyeSBjb21taXQKKyAgICAgICAgICAgICAgICAtIFdlIGNhbiBtYWtlIFJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlIG5vbmNvcHlhYmxlCisgICAgICAgICAgICAgICAgLSBXZSBjYW4gd2FsayB0aGUg
Y2hhbmdlZCBsYXllcnMgYWZ0ZXIgYnVpbGRpbmcgdGhlIHRyYW5zYWN0aW9uCisgICAgICAgICAg
ICAgICAgaW4gb3JkZXIgdG8gZmx1c2ggYmFja2luZyBzdG9yZSwgYW5kIGFjdHVhbGx5IGFmZmVj
dCB0aGUgbGF5ZXJzJworICAgICAgICAgICAgICAgIG93biBSZW1vdGVMYXllckJhY2tpbmdTdG9y
ZSBpbnN0ZWFkIG9mIGEgY29weS4KKyAgICAgICAgVGhlIFVJIHByb2Nlc3Mgd2lsbCBzdGlsbCBn
ZW5lcmF0ZSBhIExheWVyUHJvcGVydGllc01hcCBhdCBkZWNvZGUgdGltZS4KKyAgICAgICAgCisg
ICAgICAgICogVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVIb3N0Lm1tOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllclRyZWUpOgorICAgICAgICBE
b24ndCBjb3B5IHRoZSBMYXllclByb3BlcnRpZXMgc3RydWN0IGZvciB0aGUgZGVidWcgb3Zlcmxh
eS4gSW5zdGVhZCwKKyAgICAgICAgYWRqdXN0IHRoZSBwcm9wZXJ0aWVzIHdoaWNoIHRoZSBkZWJ1
ZyBvdmVybGF5IHdoYWNrcyBkaXJlY3RseSBvbiB0aGUgbGF5ZXIsCisgICAgICAgIGFmdGVyIGFw
cGx5aW5nIHRoZSBub3JtYWwgTGF5ZXJQcm9wZXJ0aWVzLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwOgorICAgICAgICAoUGxhdGZv
cm1DQUxheWVyUmVtb3RlOjpyZWN1cnNpdmVCdWlsZFRyYW5zYWN0aW9uKToKKyAgICAgICAgRG9u
J3QgcmVzZXQgY2hhbmdlZCBsYXllciBwcm9wZXJ0aWVzIGluIHRoZSBtaWRkbGUgb2YgYnVpbGRp
bmcgYSB0cmFuc2FjdGlvbi4gSW5zdGVhZCwKKyAgICAgICAgUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWE6OmZsdXNoTGF5ZXJzKCkgd2lsbCByZXNldCBhbGwgdGhlIGZsYWdzIG9uIGFsbCBjaGFu
Z2VkIGxheWVycworICAgICAgICBhZnRlciB0aGUgY29tbWl0IGlzIGVuY29kZWQuCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oOgorICAg
ICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnByb3BlcnRpZXMpOgorCiAyMDE0
LTAzLTI3ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTY2Mjk2IGFuZCByMTY2MzMxLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oCmluZGV4
IDkzZDI2MTAuLjUyN2U4YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMv
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFj
L1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgKQEAgLTQzLDYgKzQzLDcgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiBjbGFzcyBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU7CiAKIGNsYXNzIFJlbW90ZUxheWVy
QmFja2luZ1N0b3JlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZW1vdGVMYXllckJhY2tp
bmdTdG9yZSk7CiBwdWJsaWM6CiAgICAgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUoKTsKIApAQCAt
NzUsMTAgKzc2LDE0IEBAIHB1YmxpYzoKICNlbmRpZgogICAgICAgICByZXR1cm4gISFtX2Zyb250
QnVmZmVyOwogICAgIH0KKworICAgIHZvaWQgZmx1c2goKTsKKwogcHJpdmF0ZToKICAgICB2b2lk
IGRyYXdJbkNvbnRleHQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgQ0dJbWFnZVJlZiBmcm9u
dEltYWdlKTsKIAogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVJbWFnZUZvckZyb250
QnVmZmVyKCkgY29uc3Q7CisgICAgdm9pZCBjbGVhckJhY2tpbmdTdG9yZSgpOwogCiAgICAgUGxh
dGZvcm1DQUxheWVyUmVtb3RlKiBtX2xheWVyOwogCkBAIC04OSw4ICs5NCwxMCBAQCBwcml2YXRl
OgogICAgIFdlYkNvcmU6OlJlZ2lvbiBtX2RpcnR5UmVnaW9uOwogCiAgICAgUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4gbV9mcm9udEJ1ZmZlcjsKKyAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBt
X2J1ZmZlckNvbnRleHRQZW5kaW5nRmx1c2g7CiAjaWYgVVNFKElPU1VSRkFDRSkKICAgICBSZWZQ
dHI8V2ViQ29yZTo6SU9TdXJmYWNlPiBtX2Zyb250U3VyZmFjZTsKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6SU9TdXJmYWNlPiBtX2JhY2tTdXJmYWNlUGVuZGluZ0ZsdXNoOwogI2VuZGlmCiAKICAgICBi
b29sIG1fYWNjZWxlcmF0ZXNEcmF3aW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KaW5kZXggNjdkYTllYi4uNGU5YzI0YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdT
dG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2lu
Z1N0b3JlLm1tCkBAIC02OCw5ICs2OCwxNiBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
OjplbnN1cmVCYWNraW5nU3RvcmUoUGxhdGZvcm1DQUxheWVyUmVtb3RlKiBsYXllciwgSQogICAg
IG1fYWNjZWxlcmF0ZXNEcmF3aW5nID0gYWNjZWxlcmF0ZXNEcmF3aW5nOwogICAgIG1faXNPcGFx
dWUgPSBpc09wYXF1ZTsKIAorICAgIGNsZWFyQmFja2luZ1N0b3JlKCk7Cit9CisKK3ZvaWQgUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmU6OmNsZWFyQmFja2luZ1N0b3JlKCkKK3sKICNpZiBVU0UoSU9T
VVJGQUNFKQogICAgIG1fZnJvbnRTdXJmYWNlID0gbnVsbHB0cjsKKyAgICBtX2JhY2tTdXJmYWNl
UGVuZGluZ0ZsdXNoID0gbnVsbHB0cjsKICNlbmRpZgorICAgIG1fYnVmZmVyQ29udGV4dFBlbmRp
bmdGbHVzaCA9IG51bGxwdHI7CiAgICAgbV9mcm9udEJ1ZmZlciA9IG51bGxwdHI7CiB9CiAKQEAg
LTE1Miw2ICsxNTksOCBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmU6OmNyZWF0ZUltYWdlRm9yRnJvbnRCdWZmZXIoKSBjb25zdAogCiBib29sIFJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KCkKIHsKKyAgICBBU1NFUlQoIW1fYnVmZmVyQ29udGV4
dFBlbmRpbmdGbHVzaCk7CisKICAgICBpZiAoIW1fbGF5ZXIpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIApAQCAtMTU5LDEyICsxNjgsNyBAQCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpk
aXNwbGF5KCkKICAgICAvLyB0byBub3RlIHRoYXQgb3VyIGJhY2tpbmcgc3RvcmUgaGFzIGJlZW4g
Y2xlYXJlZC4KICAgICBpZiAoIW1fbGF5ZXItPm93bmVyKCkgfHwgIW1fbGF5ZXItPm93bmVyKCkt
PnBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVudCgpKSB7CiAgICAgICAgIGJvb2wgcHJldmlvdXNs
eURyZXdDb250ZW50cyA9IGhhc0Zyb250QnVmZmVyKCk7Ci0KLSAgICAgICAgbV9mcm9udEJ1ZmZl
ciA9IG51bGxwdHI7Ci0jaWYgVVNFKElPU1VSRkFDRSkKLSAgICAgICAgbV9mcm9udFN1cmZhY2Ug
PSBudWxscHRyOwotI2VuZGlmCi0KKyAgICAgICAgY2xlYXJCYWNraW5nU3RvcmUoKTsKICAgICAg
ICAgcmV0dXJuIHByZXZpb3VzbHlEcmV3Q29udGVudHM7CiAgICAgfQogCkBAIC0xODQsNiArMTg4
LDcgQEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCiAgICAgSW50U2l6
ZSBleHBhbmRlZFNjYWxlZFNpemUgPSBleHBhbmRlZEludFNpemUoc2NhbGVkU2l6ZSk7CiAKICNp
ZiBVU0UoSU9TVVJGQUNFKQorICAgIEFTU0VSVCghbV9iYWNrU3VyZmFjZVBlbmRpbmdGbHVzaCk7
CiAgICAgaWYgKG1fYWNjZWxlcmF0ZXNEcmF3aW5nKSB7CiAgICAgICAgIFJlZlB0cjxJT1N1cmZh
Y2U+IGJhY2tTdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoZXhwYW5kZWRTY2FsZWRTaXplLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0g
YmFja1N1cmZhY2UtPmVuc3VyZUdyYXBoaWNzQ29udGV4dCgpOwpAQCAtMTk2LDEwICsyMDEsMTEg
QEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCiAgICAgICAgICAgICBm
cm9udEltYWdlID0gbV9mcm9udFN1cmZhY2UtPmNyZWF0ZUltYWdlKCk7CiAgICAgICAgIGRyYXdJ
bkNvbnRleHQoY29udGV4dCwgZnJvbnRJbWFnZS5nZXQoKSk7CiAKLSAgICAgICAgLy8gSWYgb3Vy
IGZyb250SW1hZ2UgaXMgZGVyaXZlZCBmcm9tIGFuIElPU3VyZmFjZSwgd2UgbmVlZCB0bwotICAg
ICAgICAvLyBkZXN0cm95IHRoZSBpbWFnZSBiZWZvcmUgdGhlIENHQ29udGV4dCBpdCdzIGRlcml2
ZWQgZnJvbSwKLSAgICAgICAgLy8gc28gdGhhdCB0aGUgY29udGV4dCBkb2Vzbid0IG1ha2UgYSBD
UFUgY29weSBvZiB0aGUgc3VyZmFjZSBkYXRhLgotICAgICAgICBmcm9udEltYWdlID0gbnVsbHB0
cjsKKyAgICAgICAgLy8gSWYgb3VyIGZyb250SW1hZ2UgaXMgZGVyaXZlZCBmcm9tIGFuIElPU3Vy
ZmFjZSwgd2UgbmVlZCB0byBkZXN0cm95IHRoZSBpbWFnZSBiZWZvcmUgdGhlCisgICAgICAgIC8v
IENHQ29udGV4dCBpdCdzIGRlcml2ZWQgZnJvbSwgc28gdGhhdCB0aGUgY29udGV4dCBkb2Vzbid0
IG1ha2UgYSBDUFUgY29weSBvZiB0aGUgc3VyZmFjZSBkYXRhLgorICAgICAgICAvLyBTaW5jZSB0
aGUgZmx1c2ggd2lsbCBoYXBwZW4gbGF0ZXIsIHRoaXMgbWVhbnMgd2UgbmVlZCB0byBob2xkIG9u
IHRvIHRoZSBJT1N1cmZhY2UKKyAgICAgICAgLy8gKGFuZCB0aHVzIGl0cyBjb250ZXh0KSB1bnRp
bCBhZnRlciB0aGUgZmx1c2ggY29tcGxldGVzLgorICAgICAgICBtX2JhY2tTdXJmYWNlUGVuZGlu
Z0ZsdXNoID0gbV9mcm9udFN1cmZhY2U7CiAgICAgICAgIG1fZnJvbnRTdXJmYWNlID0gYmFja1N1
cmZhY2U7CiAKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yMTEsNiArMjE3LDcgQEAgYm9vbCBS
ZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCiAgICAgUmV0YWluUHRyPENHSW1hZ2VS
ZWY+IGZyb250SW1hZ2UgPSBjcmVhdGVJbWFnZUZvckZyb250QnVmZmVyKCk7CiAgICAgbV9mcm9u
dEJ1ZmZlciA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGV4cGFuZGVkU2NhbGVk
U2l6ZSwgbV9pc09wYXF1ZSA/IFNoYXJlYWJsZUJpdG1hcDo6Tm9GbGFncyA6IFNoYXJlYWJsZUJp
dG1hcDo6U3VwcG9ydHNBbHBoYSk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4
dD4gY29udGV4dCA9IG1fZnJvbnRCdWZmZXItPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAg
IG1fYnVmZmVyQ29udGV4dFBlbmRpbmdGbHVzaCA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgp
OwogICAgIGRyYXdJbkNvbnRleHQoKmNvbnRleHQsIGZyb250SW1hZ2UuZ2V0KCkpOwogICAgIAog
ICAgIHJldHVybiB0cnVlOwpAQCAtMjg4LDggKzI5NSw2IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmU6OmRyYXdJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBDR0ltYWdl
UmVmCiAKICAgICBtX2RpcnR5UmVnaW9uID0gUmVnaW9uKCk7CiAgICAgbV9wYWludGluZ1JlY3Rz
LmNsZWFyKCk7Ci0KLSAgICBDR0NvbnRleHRGbHVzaChjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgp
KTsKIH0KIAogdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZW51bWVyYXRlUmVjdHNCZWlu
Z0RyYXduKENHQ29udGV4dFJlZiBjb250ZXh0LCB2b2lkICheYmxvY2spKENHUmVjdCkpCkBAIC0z
MDksMTUgKzMxNCwzNyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbnVtZXJhdGVS
ZWN0c0JlaW5nRHJhd24oQ0dDb250ZXh0UmVmIGNvbnRleHQsIHZvaQogCiB2b2lkIFJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlOjphcHBseUJhY2tpbmdTdG9yZVRvTGF5ZXIoQ0FMYXllciAqbGF5ZXIp
CiB7CisgICAgbGF5ZXIuY29udGVudHNPcGFxdWUgPSBtX2lzT3BhcXVlOworCiAjaWYgVVNFKElP
U1VSRkFDRSkKLSAgICBpZiAoYWNjZWxlcmF0ZXNEcmF3aW5nKCkpCisgICAgaWYgKGFjY2VsZXJh
dGVzRHJhd2luZygpKSB7CiAgICAgICAgIGxheWVyLmNvbnRlbnRzID0gKGlkKW1fZnJvbnRTdXJm
YWNlLT5zdXJmYWNlKCk7Ci0gICAgZWxzZQotICAgICAgICBsYXllci5jb250ZW50cyA9IChpZClj
cmVhdGVJbWFnZUZvckZyb250QnVmZmVyKCkuZ2V0KCk7Ci0jZWxzZQorICAgICAgICByZXR1cm47
CisgICAgfQorI2VuZGlmCisKICAgICBBU1NFUlQoIWFjY2VsZXJhdGVzRHJhd2luZygpKTsKICAg
ICBsYXllci5jb250ZW50cyA9IChpZCljcmVhdGVJbWFnZUZvckZyb250QnVmZmVyKCkuZ2V0KCk7
Cit9CisKK3ZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmZsdXNoKCkKK3sKKyNpZiBVU0Uo
SU9TVVJGQUNFKQorICAgIGlmIChhY2NlbGVyYXRlc0RyYXdpbmcoKSkgeworICAgICAgICBpZiAo
bV9mcm9udFN1cmZhY2UpIHsKKyAgICAgICAgICAgIENHQ29udGV4dFJlZiBwbGF0Zm9ybUNvbnRl
eHQgPSBtX2Zyb250U3VyZmFjZS0+cGxhdGZvcm1Db250ZXh0KCk7CisgICAgICAgICAgICBBU1NF
UlQocGxhdGZvcm1Db250ZXh0KTsKKyAgICAgICAgICAgIENHQ29udGV4dEZsdXNoKHBsYXRmb3Jt
Q29udGV4dCk7CisgICAgICAgICAgICBtX2JhY2tTdXJmYWNlUGVuZGluZ0ZsdXNoID0gbnVsbHB0
cjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQogI2VuZGlmCiAKLSAgICBsYXll
ci5jb250ZW50c09wYXF1ZSA9IG1faXNPcGFxdWU7CisgICAgQVNTRVJUKCFhY2NlbGVyYXRlc0Ry
YXdpbmcoKSk7CisKKyAgICBpZiAobV9idWZmZXJDb250ZXh0UGVuZGluZ0ZsdXNoKSB7CisgICAg
ICAgIENHQ29udGV4dEZsdXNoKG1fYnVmZmVyQ29udGV4dFBlbmRpbmdGbHVzaC5nZXQoKSk7Cisg
ICAgICAgIG1fYnVmZmVyQ29udGV4dFBlbmRpbmdGbHVzaCA9IG51bGxwdHI7CisgICAgfQogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbi5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbi5oCmluZGV4IDIxOGI4ZDAuLjM5ZjFmY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgKQEAgLTEwNSw2
ICsxMDUsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgZXZlckNoYW5nZWRQcm9wZXJ0aWVzIHw9
IGNoYW5nZUZsYWdzOwogICAgICAgICB9CiAKKyAgICAgICAgdm9pZCByZXNldENoYW5nZWRQcm9w
ZXJ0aWVzKCkKKyAgICAgICAgeworICAgICAgICAgICAgY2hhbmdlZFByb3BlcnRpZXMgPSBSZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbjo6Tm9DaGFuZ2U7CisgICAgICAgIH0KKwogICAgICAgICBM
YXllckNoYW5nZSBjaGFuZ2VkUHJvcGVydGllczsKICAgICAgICAgTGF5ZXJDaGFuZ2UgZXZlckNo
YW5nZWRQcm9wZXJ0aWVzOwogCkBAIC0xNTYsMTIgKzE2MSwxNSBAQCBwdWJsaWM6CiAjZW5kaWYK
IAogICAgIHR5cGVkZWYgSGFzaE1hcDxXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxh
eWVySUQsIHN0ZDo6dW5pcXVlX3B0cjxMYXllclByb3BlcnRpZXM+PiBMYXllclByb3BlcnRpZXNN
YXA7Ci0gICAgCisKICAgICBWZWN0b3I8TGF5ZXJDcmVhdGlvblByb3BlcnRpZXM+IGNyZWF0ZWRM
YXllcnMoKSBjb25zdCB7IHJldHVybiBtX2NyZWF0ZWRMYXllcnM7IH0KLSAgICBjb25zdCBMYXll
clByb3BlcnRpZXNNYXAmIGNoYW5nZWRMYXllcnMoKSBjb25zdCB7IHJldHVybiBtX2NoYW5nZWRM
YXllclByb3BlcnRpZXM7IH0KLSAgICBMYXllclByb3BlcnRpZXNNYXAmIGNoYW5nZWRMYXllcnMo
KSB7IHJldHVybiBtX2NoYW5nZWRMYXllclByb3BlcnRpZXM7IH0KICAgICBWZWN0b3I8V2ViQ29y
ZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEPiBkZXN0cm95ZWRMYXllcnMoKSBjb25z
dCB7IHJldHVybiBtX2Rlc3Ryb3llZExheWVySURzOyB9CiAKKyAgICBWZWN0b3I8UmVmUHRyPFBs
YXRmb3JtQ0FMYXllclJlbW90ZT4+JiBjaGFuZ2VkTGF5ZXJzKCkgeyByZXR1cm4gbV9jaGFuZ2Vk
TGF5ZXJzOyB9CisKKyAgICBjb25zdCBMYXllclByb3BlcnRpZXNNYXAmIGNoYW5nZWRMYXllclBy
b3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX2NoYW5nZWRMYXllclByb3BlcnRpZXM7IH0KKyAg
ICBMYXllclByb3BlcnRpZXNNYXAmIGNoYW5nZWRMYXllclByb3BlcnRpZXMoKSB7IHJldHVybiBt
X2NoYW5nZWRMYXllclByb3BlcnRpZXM7IH0KKwogICAgIFdlYkNvcmU6OkludFNpemUgY29udGVu
dHNTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50c1NpemU7IH0KICAgICB2b2lkIHNldENv
bnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKSB7IG1fY29udGVudHNTaXpl
ID0gc2l6ZTsgfTsKICAgICAKQEAgLTE5MSw3ICsxOTksOSBAQCBwdWJsaWM6CiAgICAgCiBwcml2
YXRlOgogICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBtX3Jvb3RM
YXllcklEOwotICAgIExheWVyUHJvcGVydGllc01hcCBtX2NoYW5nZWRMYXllclByb3BlcnRpZXM7
CisgICAgVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+PiBtX2NoYW5nZWRMYXll
cnM7IC8vIE9ubHkgdXNlZCBpbiB0aGUgV2ViIHByb2Nlc3MuCisgICAgTGF5ZXJQcm9wZXJ0aWVz
TWFwIG1fY2hhbmdlZExheWVyUHJvcGVydGllczsgLy8gT25seSB1c2VkIGluIHRoZSBVSSBwcm9j
ZXNzLgorCiAgICAgVmVjdG9yPExheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzPiBtX2NyZWF0ZWRMYXll
cnM7CiAgICAgVmVjdG9yPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4g
bV9kZXN0cm95ZWRMYXllcklEczsKICAgICBWZWN0b3I8V2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6
UGxhdGZvcm1MYXllcklEPiBtX3ZpZGVvTGF5ZXJJRHNQZW5kaW5nRnVsbHNjcmVlbjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uLm1tCmluZGV4IDkwN2EzODcuLmFmZmZjOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQpAQCAtMTI2LDE0
ICsxMjYsMTQgQEAgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6
TGF5ZXJQcm9wZXJ0aWVzKGNvbnN0IExheWVyUHJvcGVydGkKICAgICAsIG1hc2tzVG9Cb3VuZHMo
b3RoZXIubWFza3NUb0JvdW5kcykKICAgICAsIG9wYXF1ZShvdGhlci5vcGFxdWUpCiB7CisgICAg
Ly8gQ29weWluZyBMYXllclByb3BlcnRpZXMgd2lsbCBub3QgY29weSBpdHMgYmFja2luZyBzdG9y
ZS4KKyAgICAvLyBNYXliZSBMYXllclByb3BlcnRpZXMgc2hvdWxkIGJlIG5vbmNvcHlhYmxlIGFu
ZCBjbG9uZSBzaG91bGQganVzdCBjb3B5IHRoaW5ncz8KKwogICAgIGlmIChvdGhlci50cmFuc2Zv
cm0pCiAgICAgICAgIHRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNmb3JtYXRpb25N
YXRyaXg+KCpvdGhlci50cmFuc2Zvcm0pOwogCiAgICAgaWYgKG90aGVyLnN1YmxheWVyVHJhbnNm
b3JtKQogICAgICAgICBzdWJsYXllclRyYW5zZm9ybSA9IHN0ZDo6bWFrZV91bmlxdWU8VHJhbnNm
b3JtYXRpb25NYXRyaXg+KCpvdGhlci5zdWJsYXllclRyYW5zZm9ybSk7Ci0gICAgCi0gICAgaWYg
KG90aGVyLmJhY2tpbmdTdG9yZSkKLSAgICAgICAgYmFja2luZ1N0b3JlID0gc3RkOjptYWtlX3Vu
aXF1ZTxSZW1vdGVMYXllckJhY2tpbmdTdG9yZT4oKm90aGVyLmJhY2tpbmdTdG9yZSk7CiAKICAg
ICBpZiAob3RoZXIuZmlsdGVycykKICAgICAgICAgZmlsdGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8
RmlsdGVyT3BlcmF0aW9ucz4oKm90aGVyLmZpbHRlcnMpOwpAQCAtMzY3LDExICszNjcsMTEgQEAg
Ym9vbCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpkZWNvZGUo
SVBDOjpBcmd1bWVudERlY29kZXImIGQKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNG
cm9udEJ1ZmZlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChoYXNG
cm9udEJ1ZmZlcikgewotICAgICAgICAgICAgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUgYmFja2lu
Z1N0b3JlOwotICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShiYWNraW5nU3RvcmUpKQor
ICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZUxheWVyQmFja2luZ1N0b3JlPiBiYWNr
aW5nU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyQmFja2luZ1N0b3JlPigpOwor
ICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgqYmFja2luZ1N0b3JlKSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIHJlc3VsdC5i
YWNraW5nU3RvcmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyQmFja2luZ1N0b3JlPihi
YWNraW5nU3RvcmUpOworICAgICAgICAgICAgcmVzdWx0LmJhY2tpbmdTdG9yZSA9IHN0ZDo6bW92
ZShiYWNraW5nU3RvcmUpOwogICAgICAgICB9CiAgICAgfQogCkBAIC00MTMsMTEgKzQxMywxMSBA
QCB2b2lkIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjplbmNvZGUoSVBDOjpBcmd1bWVudEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBtX3Jvb3RMYXllcklEOwogICAg
IGVuY29kZXIgPDwgbV9jcmVhdGVkTGF5ZXJzOwogCi0gICAgZW5jb2RlciA8PCBtX2NoYW5nZWRM
YXllclByb3BlcnRpZXMuc2l6ZSgpOworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KG1fY2hhbmdlZExheWVycy5zaXplKCkpOwogCi0gICAgZm9yIChjb25zdCBhdXRvJiBsYXll
clByb3BlcnRpZXMgOiBtX2NoYW5nZWRMYXllclByb3BlcnRpZXMpIHsKLSAgICAgICAgZW5jb2Rl
ciA8PCBsYXllclByb3BlcnRpZXMua2V5OwotICAgICAgICBlbmNvZGVyIDw8ICpsYXllclByb3Bl
cnRpZXMudmFsdWU7CisgICAgZm9yIChjb25zdCBhdXRvJiBsYXllciA6IG1fY2hhbmdlZExheWVy
cykgeworICAgICAgICBlbmNvZGVyIDw8IGxheWVyLT5sYXllcklEKCk7CisgICAgICAgIGVuY29k
ZXIgPDwgbGF5ZXItPnByb3BlcnRpZXMoKTsKICAgICB9CiAgICAgCiAgICAgZW5jb2RlciA8PCBt
X2Rlc3Ryb3llZExheWVySURzOwpAQCAtNDQ2LDExICs0NDYsMTEgQEAgYm9vbCBSZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbjo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBS
ZW1vdGVMYXkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2NyZWF0ZWRMYXllcnMp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpbnQgbnVtQ2hhbmdlZExheWVyUHJvcGVy
dGllczsKKyAgICB1aW50NjRfdCBudW1DaGFuZ2VkTGF5ZXJQcm9wZXJ0aWVzOwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUobnVtQ2hhbmdlZExheWVyUHJvcGVydGllcykpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQ2hhbmdlZExheWVyUHJvcGVy
dGllczsgKytpKSB7CisgICAgZm9yICh1aW50NjRfdCBpID0gMDsgaSA8IG51bUNoYW5nZWRMYXll
clByb3BlcnRpZXM7ICsraSkgewogICAgICAgICBHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVy
SUQgbGF5ZXJJRDsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShsYXllcklEKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQ1OSw3ICs0NTksNyBAQCBib29sIFJlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uOjpkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFJl
bW90ZUxheQogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpsYXllclByb3BlcnRpZXMpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJlc3VsdC5jaGFuZ2VkTGF5ZXJz
KCkuc2V0KGxheWVySUQsIHN0ZDo6bW92ZShsYXllclByb3BlcnRpZXMpKTsKKyAgICAgICAgcmVz
dWx0LmNoYW5nZWRMYXllclByb3BlcnRpZXMoKS5zZXQobGF5ZXJJRCwgc3RkOjptb3ZlKGxheWVy
UHJvcGVydGllcykpOwogICAgIH0KIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1f
ZGVzdHJveWVkTGF5ZXJJRHMpKQpAQCAtNTEyLDcgKzUxMiw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb246OnNldFJvb3RMYXllcklEKEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5
ZXJJRCByCiAKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmxheWVyUHJvcGVydGll
c0NoYW5nZWQoUGxhdGZvcm1DQUxheWVyUmVtb3RlKiByZW1vdGVMYXllciwgUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllcyYgcHJvcGVydGllcykKIHsKLSAgICBtX2No
YW5nZWRMYXllclByb3BlcnRpZXMuc2V0KHJlbW90ZUxheWVyLT5sYXllcklEKCksIHN0ZDo6bWFr
ZV91bmlxdWU8UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllcz4ocHJv
cGVydGllcykpOworICAgIG1fY2hhbmdlZExheWVycy5hcHBlbmQocmVtb3RlTGF5ZXIpOwogfQog
CiB2b2lkIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpzZXRDcmVhdGVkTGF5ZXJzKFZlY3Rv
cjxMYXllckNyZWF0aW9uUHJvcGVydGllcz4gY3JlYXRlZExheWVycykKQEAgLTgwMSw3ICs4MDEs
NyBAQCBzdGF0aWMgdm9pZCBkdW1wQ2hhbmdlZExheWVycyhSZW1vdGVMYXllclRyZWVUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgUmVtb3RlTGF5ZXJUcgogCiAgICAgICAgIGlmIChsYXllclByb3BlcnRp
ZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6QmFja2lu
Z1N0b3JlQ2hhbmdlZCkgewogICAgICAgICAgICAgaWYgKGNvbnN0IFJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlKiBiYWNraW5nU3RvcmUgPSBsYXllclByb3BlcnRpZXMuYmFja2luZ1N0b3JlLmdldCgp
KQotICAgICAgICAgICAgICAgIGR1bXBQcm9wZXJ0eTxSZW1vdGVMYXllckJhY2tpbmdTdG9yZT4o
dHMsICJiYWNraW5nU3RvcmUiLCAqYmFja2luZ1N0b3JlKTsKKyAgICAgICAgICAgICAgICBkdW1w
UHJvcGVydHk8Y29uc3QgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUmPih0cywgImJhY2tpbmdTdG9y
ZSIsICpiYWNraW5nU3RvcmUpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGR1
bXBQcm9wZXJ0eTxTdHJpbmc+KHRzLCAiYmFja2luZ1N0b3JlIiwgInJlbW92ZWQiKTsKICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXll
clRyZWVIb3N0Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRy
ZWVIb3N0Lm1tCmluZGV4IDViYzcxYTEuLmU4ZWUyNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KQEAgLTU0LDcgKzU0LDcg
QEAgUmVtb3RlTGF5ZXJUcmVlSG9zdDo6flJlbW90ZUxheWVyVHJlZUhvc3QoKQogYm9vbCBSZW1v
dGVMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllclRyZWUoY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb24mIHRyYW5zYWN0aW9uLCBmbG9hdCBpbmRpY2F0b3JTY2FsZUZhY3RvcikKIHsKICAg
ICBmb3IgKGNvbnN0IGF1dG8mIGNyZWF0ZWRMYXllciA6IHRyYW5zYWN0aW9uLmNyZWF0ZWRMYXll
cnMoKSkgewotICAgICAgICBjb25zdCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQ
cm9wZXJ0aWVzKiBwcm9wZXJ0aWVzID0gdHJhbnNhY3Rpb24uY2hhbmdlZExheWVycygpLmdldChj
cmVhdGVkTGF5ZXIubGF5ZXJJRCk7CisgICAgICAgIGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5z
YWN0aW9uOjpMYXllclByb3BlcnRpZXMqIHByb3BlcnRpZXMgPSB0cmFuc2FjdGlvbi5jaGFuZ2Vk
TGF5ZXJQcm9wZXJ0aWVzKCkuZ2V0KGNyZWF0ZWRMYXllci5sYXllcklEKTsKICAgICAgICAgY3Jl
YXRlTGF5ZXIoY3JlYXRlZExheWVyLCBwcm9wZXJ0aWVzKTsKICAgICB9CiAKQEAgLTY1LDcgKzY1
LDcgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllclRyZWUoY29uc3QgUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24mIHRyYW4KICAgICAgICAgcm9vdExheWVyQ2hhbmdlZCA9
IHRydWU7CiAgICAgfQogCi0gICAgZm9yIChhdXRvJiBjaGFuZ2VkTGF5ZXIgOiB0cmFuc2FjdGlv
bi5jaGFuZ2VkTGF5ZXJzKCkpIHsKKyAgICBmb3IgKGF1dG8mIGNoYW5nZWRMYXllciA6IHRyYW5z
YWN0aW9uLmNoYW5nZWRMYXllclByb3BlcnRpZXMoKSkgewogICAgICAgICBhdXRvIGxheWVySUQg
PSBjaGFuZ2VkTGF5ZXIua2V5OwogICAgICAgICBjb25zdCBSZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbjo6TGF5ZXJQcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzID0gKmNoYW5nZWRMYXllci52YWx1ZTsK
IApAQCAtODIsMTIgKzgyLDExIEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5
ZXJUcmVlKGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJiB0cmFuCiAgICAgICAgICAg
ICByZWxhdGVkTGF5ZXJzLnNldChwcm9wZXJ0aWVzLm1hc2tMYXllcklELCBnZXRMYXllcihwcm9w
ZXJ0aWVzLm1hc2tMYXllcklEKSk7CiAKICAgICAgICAgaWYgKG1faXNEZWJ1Z0xheWVyVHJlZUhv
c3QpIHsKLSAgICAgICAgICAgIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3Bl
cnRpZXMgcHJvcGVydGllc0NvcHkocHJvcGVydGllcyk7Ci0gICAgICAgICAgICBwcm9wZXJ0aWVz
Q29weS5tYXNrc1RvQm91bmRzID0gZmFsc2U7Ci0gICAgICAgICAgICBpZiAocHJvcGVydGllc0Nv
cHkuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6Qm9yZGVy
V2lkdGhDaGFuZ2VkKQotICAgICAgICAgICAgICAgIHByb3BlcnRpZXNDb3B5LmJvcmRlcldpZHRo
ICo9IDEgLyBpbmRpY2F0b3JTY2FsZUZhY3RvcjsKLSAgICAgICAgICAgIAotICAgICAgICAgICAg
UmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyOjphcHBseVByb3BlcnRpZXMobGF5ZXIsIHBy
b3BlcnRpZXNDb3B5LCByZWxhdGVkTGF5ZXJzKTsKKyAgICAgICAgICAgIFJlbW90ZUxheWVyVHJl
ZVByb3BlcnR5QXBwbGllcjo6YXBwbHlQcm9wZXJ0aWVzKGxheWVyLCBwcm9wZXJ0aWVzLCByZWxh
dGVkTGF5ZXJzKTsKKworICAgICAgICAgICAgaWYgKHByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRp
ZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6Qm9yZGVyV2lkdGhDaGFuZ2VkKQorICAg
ICAgICAgICAgICAgIGFzTGF5ZXIobGF5ZXIpLmJvcmRlcldpZHRoID0gcHJvcGVydGllcy5ib3Jk
ZXJXaWR0aCAvIGluZGljYXRvclNjYWxlRmFjdG9yOworICAgICAgICAgICAgYXNMYXllcihsYXll
cikubWFza3NUb0JvdW5kcyA9IGZhbHNlOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIFJl
bW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllcjo6YXBwbHlQcm9wZXJ0aWVzKGxheWVyLCBwcm9w
ZXJ0aWVzLCByZWxhdGVkTGF5ZXJzKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5j
cHAKaW5kZXggNzY1OTY2NS4uZGU1ZmRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNw
cApAQCAtMTI1LDEyICsxMjUsMTEgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnJlY3Vy
c2l2ZUJ1aWxkVHJhbnNhY3Rpb24oUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24KIAogICAgICAg
ICBpZiAobV9sYXllclR5cGUgPT0gTGF5ZXJUeXBlQ3VzdG9tKSB7CiAgICAgICAgICAgICBSZW1v
dGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXI6OmFwcGx5UHJvcGVydGllcyhwbGF0Zm9ybUxheWVy
KCksIG1fcHJvcGVydGllcywgUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyOjpSZWxhdGVk
TGF5ZXJNYXAoKSk7Ci0gICAgICAgICAgICBtX3Byb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMg
PSBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6Tm9DaGFuZ2U7CisgICAgICAgICAgICBtX3By
b3BlcnRpZXMucmVzZXRDaGFuZ2VkUHJvcGVydGllcygpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKICAgICAgICAgdHJhbnNhY3Rpb24ubGF5ZXJQcm9wZXJ0aWVzQ2hhbmdlZCh0
aGlzLCBtX3Byb3BlcnRpZXMpOwotICAgICAgICBtX3Byb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRp
ZXMgPSBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6Tm9DaGFuZ2U7CiAgICAgfQogCiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2NoaWxkcmVuLnNpemUoKTsgKytpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXll
clJlbW90ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9y
bUNBTGF5ZXJSZW1vdGUuaAppbmRleCBiNzI4OWY5Li44NmZkOTNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxh
eWVyUmVtb3RlLmgKQEAgLTE1MSw2ICsxNTEsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHVp
bnQzMl90IGhvc3RpbmdDb250ZXh0SUQoKTsKIAorICAgIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uOjpMYXllclByb3BlcnRpZXMmIHByb3BlcnRpZXMoKSB7IHJldHVybiBtX3Byb3BlcnRpZXM7
IH0KKwogcHJvdGVjdGVkOgogICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZShXZWJDb3JlOjpQbGF0
Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSwgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KiBv
d25lciwgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCogY29udGV4dCk7CiAgICAgUGxhdGZvcm1DQUxh
eWVyUmVtb3RlKGNvbnN0IFBsYXRmb3JtQ0FMYXllclJlbW90ZSYsIFdlYkNvcmU6OlBsYXRmb3Jt
Q0FMYXllckNsaWVudCosIFJlbW90ZUxheWVyVHJlZUNvbnRleHQqKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhLm1tCmluZGV4IDExNjhhZWQuLjIxODk2NWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9S
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW1wb3J0
ICJEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCIKICNpbXBvcnQgIkdyYXBoaWNzTGF5ZXJDQVJl
bW90ZS5oIgorI2ltcG9ydCAiUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgiCiAjaW1wb3J0ICJSZW1v
dGVMYXllclRyZWVDb250ZXh0LmgiCiAjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5TWVzc2FnZXMuaCIKICNpbXBvcnQgIlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgi
CkBAIC0zMDIsNiArMzAzLDE3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6Omxh
eWVyRmx1c2hUaW1lckZpcmVkKFdlYkNvcmU6OlRpbWVyPFJlbW90ZUxheWVyCiAgICAgZmx1c2hM
YXllcnMoKTsKIH0KIAorc3RhdGljIHZvaWQgZmx1c2hCYWNraW5nU3RvcmVDaGFuZ2VzSW5UcmFu
c2FjdGlvbihSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCit7CisgICAg
Zm9yIChhdXRvJiBsYXllciA6IHRyYW5zYWN0aW9uLmNoYW5nZWRMYXllcnMoKSkgeworICAgICAg
ICBpZiAoIWxheWVyLT5wcm9wZXJ0aWVzKCkuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbjo6QmFja2luZ1N0b3JlQ2hhbmdlZCkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBpZiAoUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSA9
IGxheWVyLT5wcm9wZXJ0aWVzKCkuYmFja2luZ1N0b3JlLmdldCgpKQorICAgICAgICAgICAgYmFj
a2luZ1N0b3JlLT5mbHVzaCgpOworICAgIH0KK30KKwogdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYTo6Zmx1c2hMYXllcnMoKQogewogICAgIGlmICghbV9yb290TGF5ZXIpCkBAIC0zMTcs
OCArMzI5LDYgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6Zmx1c2hMYXllcnMo
KQogCiAgICAgbV9yZW1vdGVMYXllclRyZWVDb250ZXh0LT5mbHVzaE91dE9mVHJlZUxheWVycygp
OwogCi0gICAgQVNTRVJUKG1fcm9vdExheWVyKTsKLQogICAgIC8vIEZJWE1FOiBtaW5pemUgdGhl
c2UgdHJhbnNhY3Rpb25zIGlmIG5vdGhpbmcgY2hhbmdlZC4KICAgICBSZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbiBsYXllclRyYW5zYWN0aW9uOwogICAgIG1fcmVtb3RlTGF5ZXJUcmVlQ29udGV4
dC0+YnVpbGRUcmFuc2FjdGlvbihsYXllclRyYW5zYWN0aW9uLCAqbV9yb290TGF5ZXIpOwpAQCAt
MzMwLDcgKzM0MCwxMyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpmbHVzaExh
eWVycygpCiAgICAgICAgIHRvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IobV93ZWJQYWdlLT5z
Y3JvbGxpbmdDb29yZGluYXRvcigpKS0+YnVpbGRUcmFuc2FjdGlvbihzY3JvbGxpbmdUcmFuc2Fj
dGlvbik7CiAjZW5kaWYKIAorICAgIC8vIEZJWE1FOiBNb3ZlIGZsdXNoaW5nIGJhY2tpbmcgc3Rv
cmUgYW5kIHNlbmRpbmcgQ29tbWl0TGF5ZXJUcmVlIG9udG8gYSBiYWNrZ3JvdW5kIHRocmVhZC4K
KyAgICBmbHVzaEJhY2tpbmdTdG9yZUNoYW5nZXNJblRyYW5zYWN0aW9uKGxheWVyVHJhbnNhY3Rp
b24pOworCiAgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWUobGF5ZXJUcmFuc2FjdGlvbiwgc2Nyb2xsaW5n
VHJhbnNhY3Rpb24pKTsKKworICAgIGZvciAoYXV0byYgbGF5ZXIgOiBsYXllclRyYW5zYWN0aW9u
LmNoYW5nZWRMYXllcnMoKSkKKyAgICAgICAgbGF5ZXItPnByb3BlcnRpZXMoKS5yZXNldENoYW5n
ZWRQcm9wZXJ0aWVzKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228210</attachid>
            <date>2014-03-31 15:23:37 -0700</date>
            <delta_ts>2014-03-31 16:02:42 -0700</delta_ts>
            <desc>patch (will break clones but fix in a follow-up)</desc>
            <filename>0009-Flush-all-surfaces-after-painting-into-all-of-them-i.patch</filename>
            <type>text/plain</type>
            <size>20363</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">RnJvbSAzN2JmYTQ4MWM2YzZjNWYxOTllYjk0YjgxMzM4ZjlmMjJhZWQ2MzA0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUaW0gSG9ydG9uIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+
CkRhdGU6IFRodSwgMjcgTWFyIDIwMTQgMTM6MjE6MDEgLTA3MDAKU3ViamVjdDogW1BBVENIIDA5
LzEwXSBGbHVzaCBhbGwgc3VyZmFjZXMgYWZ0ZXIgcGFpbnRpbmcgaW50byBhbGwgb2YgdGhlbSwK
IGluc3RlYWQgb2YgYWZ0ZXIgcGFpbnRpbmcgaW50byBlYWNoIG9uZQoKLS0tCiBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDY1ICsrKysrKysrKysr
KysrKysrKysrKysKIC4uLi9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmUuaCAgIHwgIDUgKysKIC4uLi9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmUubW0gIHwgMTcgKysrKystCiAuLi4vU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbi5oICAgICAgICB8IDE4ICsrKystLQogLi4uL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb24ubW0gICAgICAgfCAzMCArKysrKy0tLS0tCiAuLi4vV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZUhvc3QubW0gICB8IDE1ICsrKy0tCiAuLi4vV2ViUGFn
ZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcCAgICAgICAgICB8ICA1ICstCiAuLi4vV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaCB8ICAyICsKIC4uLi9X
ZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSAgICAgIHwgMTggKysrKysr
CiA5IGZpbGVzIGNoYW5nZWQsIDE0MiBpbnNlcnRpb25zKCspLCAzMyBkZWxldGlvbnMoLSkKCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggYTY4YmNmMi4uMmUxMzZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBA
CisyMDE0LTAzLTI3ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisg
ICAgICAgIFtpT1MgV2ViS2l0Ml0gRmx1c2ggYWxsIHN1cmZhY2VzIGFmdGVyIHBhaW50aW5nIGlu
dG8gYWxsIG9mIHRoZW0sIGluc3RlYWQgb2YgYWZ0ZXIgcGFpbnRpbmcgaW50byBlYWNoIG9uZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwNzY4Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xNjQyMTQ3MT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmUuaDoKKyAgICAgICAgTWFrZSBSZW1vdGVMYXllckJhY2tpbmdTdG9yZSBub25jb3B5YWJs
ZS4KKyAgICAgICAgQWRkIGZsdXNoKCksIHdoaWNoIHN5bmNocm9ub3VzbHkgZmx1c2hlcyBwYWlu
dGluZyBvcGVyYXRpb25zIG9uIHRoZSB1bmRlcmx5aW5nIGJhY2tpbmcgc3RvcmUuCisgICAgICAg
IEFkZCBzdG9yYWdlIGZvciB0aGUgQ0dDb250ZXh0IHRoYXQgbmVlZHMgdG8gYmUgZmx1c2hlZCwg
YW5kIGVuc3VyZSB0aGF0IGl0IGlzIGZsdXNoZWQgYmVmb3JlIHdlIHBhaW50IGFnYWluLgorCisg
ICAgICAgICogU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbToKKyAgICAgICAg
KFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KToKKworICAgICAgICAoUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmU6OmRyYXdJbkNvbnRleHQpOgorICAgICAgICBEb24ndCBmbHVzaCB0aGUg
Y29udGV4dCBpbW1lZGlhdGVseSBhZnRlciBwYWludGluZy4KKworICAgICAgICAoUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmU6OmZsdXNoKToKKyAgICAgICAgRmx1c2ggdGhlIGN1cnJlbnQgZnJvbnQg
c3VyZmFjZS9idWZmZXIncyBjb250ZXh0LgorICAgICAgICBDbGVhciB0aGUgbmV3IHBlbmRpbmct
Zmx1c2ggbWVtYmVycy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OmZsdXNoQmFja2luZ1N0
b3JlQ2hhbmdlc0luVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYTo6Zmx1c2hMYXllcnMpOgorICAgICAgICBDcmF3bCB0aHJvdWdoIGFsbCBv
ZiB0aGUgdmFsaWQgY2hhbmdlZCBiYWNraW5nIHN0b3JlcyBpbiB0aGUgdHJhbnNhY3Rpb24gYW5k
IGZsdXNoIHRoZW0uCisgICAgICAgIFJlc2V0IGNoYW5nZWQgcHJvcGVydGllcyBhZnRlciBlbmNv
ZGluZyB0aGUgY29tbWl0LgorCisgICAgICAgICogU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
bjo6TGF5ZXJQcm9wZXJ0aWVzOjpyZXNldENoYW5nZWRQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmNoYW5nZWRMYXllcnMpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6Y2hhbmdlZExheWVyUHJvcGVy
dGllcyk6CisgICAgICAgICogU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5t
bToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJv
cGVydGllczo6TGF5ZXJQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6bGF5ZXJQcm9wZXJ0aWVzQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJLaXQ6OmR1bXBDaGFuZ2VkTGF5ZXJzKToKKyAgICAgICAgSW5zdGVhZCBvZiBzdG9y
aW5nIGEgY29weSBvZiB0aGUgTGF5ZXJQcm9wZXJ0aWVzIHN0cnVjdCBmb3IgZWFjaCBjaGFuZ2Vk
IGxheWVyCisgICAgICAgIHdoaWxlIGJ1aWxkaW5nIHRoZSB0cmFuc2FjdGlvbiBpbiB0aGUgV2Vi
IHByb2Nlc3MsIHN0b3JlIGEgbGlzdCBvZiBjaGFuZ2VkIGxheWVycywKKyAgICAgICAgYW5kIGRp
cmVjdGx5IGVuY29kZSB0aGUgY29tbWl0IGZyb20gdGhvc2UgbGF5ZXJzJyBMYXllclByb3BlcnRp
ZXMuIFRoaXMgcHJvdmlkZXMgYSBmZXcgYmVuZWZpdHM6CisgICAgICAgICAgICAgICAgLSBXZSBh
dm9pZCBjb3B5aW5nIExheWVyUHJvcGVydGllcyBmb3IgZXZlcnkgY2hhbmdlZCBsYXllciwgZXZl
cnkgY29tbWl0CisgICAgICAgICAgICAgICAgLSBXZSBjYW4gbWFrZSBSZW1vdGVMYXllckJhY2tp
bmdTdG9yZSBub25jb3B5YWJsZQorICAgICAgICAgICAgICAgIC0gV2UgY2FuIHdhbGsgdGhlIGNo
YW5nZWQgbGF5ZXJzIGFmdGVyIGJ1aWxkaW5nIHRoZSB0cmFuc2FjdGlvbgorICAgICAgICAgICAg
ICAgIGluIG9yZGVyIHRvIGZsdXNoIGJhY2tpbmcgc3RvcmUsIGFuZCBhY3R1YWxseSBhZmZlY3Qg
dGhlIGxheWVycycKKyAgICAgICAgICAgICAgICBvd24gUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUg
aW5zdGVhZCBvZiBhIGNvcHkuCisgICAgICAgIFRoZSBVSSBwcm9jZXNzIHdpbGwgc3RpbGwgZ2Vu
ZXJhdGUgYSBMYXllclByb3BlcnRpZXNNYXAgYXQgZGVjb2RlIHRpbWUuCisgICAgICAgIAorICAg
ICAgICAqIFVJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJUcmVlKToKKyAgICAgICAgRG9u
J3QgY29weSB0aGUgTGF5ZXJQcm9wZXJ0aWVzIHN0cnVjdCBmb3IgdGhlIGRlYnVnIG92ZXJsYXku
IEluc3RlYWQsCisgICAgICAgIGFkanVzdCB0aGUgcHJvcGVydGllcyB3aGljaCB0aGUgZGVidWcg
b3ZlcmxheSB3aGFja3MgZGlyZWN0bHkgb24gdGhlIGxheWVyLAorICAgICAgICBhZnRlciBhcHBs
eWluZyB0aGUgbm9ybWFsIExheWVyUHJvcGVydGllcy4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcDoKKyAgICAgICAgKFBsYXRmb3Jt
Q0FMYXllclJlbW90ZTo6cmVjdXJzaXZlQnVpbGRUcmFuc2FjdGlvbik6CisgICAgICAgIERvbid0
IHJlc2V0IGNoYW5nZWQgbGF5ZXIgcHJvcGVydGllcyBpbiB0aGUgbWlkZGxlIG9mIGJ1aWxkaW5n
IGEgdHJhbnNhY3Rpb24uIEluc3RlYWQsCisgICAgICAgIFJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhOjpmbHVzaExheWVycygpIHdpbGwgcmVzZXQgYWxsIHRoZSBmbGFncyBvbiBhbGwgY2hhbmdl
ZCBsYXllcnMKKyAgICAgICAgYWZ0ZXIgdGhlIGNvbW1pdCBpcyBlbmNvZGVkLgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaDoKKyAgICAg
ICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpwcm9wZXJ0aWVzKToKKwogMjAxNC0w
My0yOSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBb
aU9TIFdlYktpdDJdIERpc2FibGUgdGlsZSBjb2hvcnQgcmV0ZW50aW9uIGZvciBub3cKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUu
aCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaApp
bmRleCAyOGFmNzA1Li5jY2IwYjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
bWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oCkBAIC00Myw2ICs0Myw3IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogY2xhc3MgUGxhdGZvcm1DQUxheWVyUmVtb3RlOwogCiBjbGFzcyBSZW1vdGVM
YXllckJhY2tpbmdTdG9yZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmUpOwogcHVibGljOgogICAgIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlKCk7CiAK
QEAgLTc2LDYgKzc3LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gISFtX2Zyb250QnVmZmVy
OwogICAgIH0KIAorICAgIHZvaWQgZmx1c2goKTsKKwogcHJpdmF0ZToKICAgICB2b2lkIGRyYXdJ
bkNvbnRleHQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgQ0dJbWFnZVJlZiBiYWNrSW1hZ2Up
OwogICAgIHZvaWQgY2xlYXJCYWNraW5nU3RvcmUoKTsKQEAgLTk1LDYgKzk4LDggQEAgcHJpdmF0
ZToKICAgICBSZWZQdHI8V2ViQ29yZTo6SU9TdXJmYWNlPiBtX2JhY2tTdXJmYWNlOwogI2VuZGlm
CiAKKyAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBtX2Zyb250Q29udGV4dFBlbmRpbmdGbHVz
aDsKKwogICAgIGJvb2wgbV9hY2NlbGVyYXRlc0RyYXdpbmc7CiAKICAgICBXZWJDb3JlOjpSZXBh
aW50UmVjdExpc3QgbV9wYWludGluZ1JlY3RzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KaW5kZXggNTZlNTk0NC4uNDMwNDg0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tp
bmdTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFj
a2luZ1N0b3JlLm1tCkBAIC0xNTAsNiArMTUwLDggQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdT
dG9yZTo6c2V0TmVlZHNEaXNwbGF5KCkKIAogYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6
ZGlzcGxheSgpCiB7CisgICAgQVNTRVJUKCFtX2Zyb250Q29udGV4dFBlbmRpbmdGbHVzaCk7CisK
ICAgICBpZiAoIW1fbGF5ZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMjAxLDEwICsy
MDMsMTAgQEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCiAKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQotI2Vsc2UKLSAgICBBU1NFUlQoIW1fYWNjZWxlcmF0ZXNE
cmF3aW5nKTsKICNlbmRpZgogCisgICAgQVNTRVJUKCFtX2FjY2VsZXJhdGVzRHJhd2luZyk7CisK
ICAgICBzdGQ6OnN3YXAobV9mcm9udEJ1ZmZlciwgbV9iYWNrQnVmZmVyKTsKICAgICBpZiAoIW1f
ZnJvbnRCdWZmZXIpCiAgICAgICAgIG1fZnJvbnRCdWZmZXIgPSBTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZVNoYXJlYWJsZShleHBhbmRlZFNjYWxlZFNpemUsIG1faXNPcGFxdWUgPyBTaGFyZWFibGVC
aXRtYXA6Ok5vRmxhZ3MgOiBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpOwpAQCAtMjkz
LDcgKzI5NSw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRyYXdJbkNvbnRleHQo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBDR0ltYWdlUmVmCiAgICAgbV9kaXJ0eVJlZ2lvbiA9
IFJlZ2lvbigpOwogICAgIG1fcGFpbnRpbmdSZWN0cy5jbGVhcigpOwogCi0gICAgQ0dDb250ZXh0
Rmx1c2goY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSk7CisgICAgbV9mcm9udENvbnRleHRQZW5k
aW5nRmx1c2ggPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwogfQogCiB2b2lkIFJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlOjplbnVtZXJhdGVSZWN0c0JlaW5nRHJhd24oQ0dDb250ZXh0UmVmIGNv
bnRleHQsIHZvaWQgKF5ibG9jaykoQ0dSZWN0KSkKQEAgLTMyNSwzICszMjcsMTIgQEAgdm9pZCBS
ZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6YXBwbHlCYWNraW5nU3RvcmVUb0xheWVyKENBTGF5ZXIg
KmxheWVyKQogICAgIEFTU0VSVCghYWNjZWxlcmF0ZXNEcmF3aW5nKCkpOwogICAgIGxheWVyLmNv
bnRlbnRzID0gKGlkKW1fZnJvbnRCdWZmZXItPm1ha2VDR0ltYWdlQ29weSgpLmdldCgpOwogfQor
Cit2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpmbHVzaCgpCit7CisgICAgaWYgKCFtX2Zy
b250Q29udGV4dFBlbmRpbmdGbHVzaCkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ0dDb250ZXh0
Rmx1c2gobV9mcm9udENvbnRleHRQZW5kaW5nRmx1c2guZ2V0KCkpOworICAgIG1fZnJvbnRDb250
ZXh0UGVuZGluZ0ZsdXNoID0gbnVsbHB0cjsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaAppbmRleCAyMThiOGQwLi4z
OWYxZmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbi5oCkBAIC0xMDUsNiArMTA1LDExIEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIGV2ZXJDaGFuZ2VkUHJvcGVydGllcyB8PSBjaGFuZ2VGbGFnczsKICAgICAgICAgfQog
CisgICAgICAgIHZvaWQgcmVzZXRDaGFuZ2VkUHJvcGVydGllcygpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGNoYW5nZWRQcm9wZXJ0aWVzID0gUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246Ok5v
Q2hhbmdlOworICAgICAgICB9CisKICAgICAgICAgTGF5ZXJDaGFuZ2UgY2hhbmdlZFByb3BlcnRp
ZXM7CiAgICAgICAgIExheWVyQ2hhbmdlIGV2ZXJDaGFuZ2VkUHJvcGVydGllczsKIApAQCAtMTU2
LDEyICsxNjEsMTUgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB0eXBlZGVmIEhhc2hNYXA8V2Vi
Q29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklELCBzdGQ6OnVuaXF1ZV9wdHI8TGF5
ZXJQcm9wZXJ0aWVzPj4gTGF5ZXJQcm9wZXJ0aWVzTWFwOwotICAgIAorCiAgICAgVmVjdG9yPExh
eWVyQ3JlYXRpb25Qcm9wZXJ0aWVzPiBjcmVhdGVkTGF5ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9j
cmVhdGVkTGF5ZXJzOyB9Ci0gICAgY29uc3QgTGF5ZXJQcm9wZXJ0aWVzTWFwJiBjaGFuZ2VkTGF5
ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9jaGFuZ2VkTGF5ZXJQcm9wZXJ0aWVzOyB9Ci0gICAgTGF5
ZXJQcm9wZXJ0aWVzTWFwJiBjaGFuZ2VkTGF5ZXJzKCkgeyByZXR1cm4gbV9jaGFuZ2VkTGF5ZXJQ
cm9wZXJ0aWVzOyB9CiAgICAgVmVjdG9yPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3Jt
TGF5ZXJJRD4gZGVzdHJveWVkTGF5ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0cm95ZWRMYXll
cklEczsgfQogCisgICAgVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU+PiYgY2hh
bmdlZExheWVycygpIHsgcmV0dXJuIG1fY2hhbmdlZExheWVyczsgfQorCisgICAgY29uc3QgTGF5
ZXJQcm9wZXJ0aWVzTWFwJiBjaGFuZ2VkTGF5ZXJQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4g
bV9jaGFuZ2VkTGF5ZXJQcm9wZXJ0aWVzOyB9CisgICAgTGF5ZXJQcm9wZXJ0aWVzTWFwJiBjaGFu
Z2VkTGF5ZXJQcm9wZXJ0aWVzKCkgeyByZXR1cm4gbV9jaGFuZ2VkTGF5ZXJQcm9wZXJ0aWVzOyB9
CisKICAgICBXZWJDb3JlOjpJbnRTaXplIGNvbnRlbnRzU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29udGVudHNTaXplOyB9CiAgICAgdm9pZCBzZXRDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYgc2l6ZSkgeyBtX2NvbnRlbnRzU2l6ZSA9IHNpemU7IH07CiAgICAgCkBAIC0xOTEs
NyArMTk5LDkgQEAgcHVibGljOgogICAgIAogcHJpdmF0ZToKICAgICBXZWJDb3JlOjpHcmFwaGlj
c0xheWVyOjpQbGF0Zm9ybUxheWVySUQgbV9yb290TGF5ZXJJRDsKLSAgICBMYXllclByb3BlcnRp
ZXNNYXAgbV9jaGFuZ2VkTGF5ZXJQcm9wZXJ0aWVzOworICAgIFZlY3RvcjxSZWZQdHI8UGxhdGZv
cm1DQUxheWVyUmVtb3RlPj4gbV9jaGFuZ2VkTGF5ZXJzOyAvLyBPbmx5IHVzZWQgaW4gdGhlIFdl
YiBwcm9jZXNzLgorICAgIExheWVyUHJvcGVydGllc01hcCBtX2NoYW5nZWRMYXllclByb3BlcnRp
ZXM7IC8vIE9ubHkgdXNlZCBpbiB0aGUgVUkgcHJvY2Vzcy4KKwogICAgIFZlY3RvcjxMYXllckNy
ZWF0aW9uUHJvcGVydGllcz4gbV9jcmVhdGVkTGF5ZXJzOwogICAgIFZlY3RvcjxXZWJDb3JlOjpH
cmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+IG1fZGVzdHJveWVkTGF5ZXJJRHM7CiAgICAg
VmVjdG9yPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4gbV92aWRlb0xh
eWVySURzUGVuZGluZ0Z1bGxzY3JlZW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQppbmRleCA5MDdhMzg3Li4wOTRj
MjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5
ZXJUcmVlVHJhbnNhY3Rpb24ubW0KQEAgLTEyNiwxNCArMTI2LDE0IEBAIFJlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXM6OkxheWVyUHJvcGVydGllcyhjb25zdCBMYXll
clByb3BlcnRpCiAgICAgLCBtYXNrc1RvQm91bmRzKG90aGVyLm1hc2tzVG9Cb3VuZHMpCiAgICAg
LCBvcGFxdWUob3RoZXIub3BhcXVlKQogeworICAgIC8vIEZJWE1FOiBMYXllclByb3BlcnRpZXMg
c2hvdWxkIHJlZmVyZW5jZSBiYWNraW5nIHN0b3JlIGJ5IElELCBzbyB0aGF0IHR3byBsYXllcnMg
Y2FuIGhhdmUgdGhlIHNhbWUgYmFja2luZyBzdG9yZSAoZm9yIGNsb25lcykuCisgICAgLy8gRklY
TUU6IExheWVyUHJvcGVydGllcyBzaG91bGRuJ3QgYmUgY29weWFibGU7IFBsYXRmb3JtQ0FMYXll
clJlbW90ZTo6Y2xvbmUgc2hvdWxkIGNvcHkgdGhlIHJlbGV2YW50IHByb3BlcnRpZXMuCisKICAg
ICBpZiAob3RoZXIudHJhbnNmb3JtKQogICAgICAgICB0cmFuc2Zvcm0gPSBzdGQ6Om1ha2VfdW5p
cXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pigqb3RoZXIudHJhbnNmb3JtKTsKIAogICAgIGlmIChv
dGhlci5zdWJsYXllclRyYW5zZm9ybSkKICAgICAgICAgc3VibGF5ZXJUcmFuc2Zvcm0gPSBzdGQ6
Om1ha2VfdW5pcXVlPFRyYW5zZm9ybWF0aW9uTWF0cml4Pigqb3RoZXIuc3VibGF5ZXJUcmFuc2Zv
cm0pOwotICAgIAotICAgIGlmIChvdGhlci5iYWNraW5nU3RvcmUpCi0gICAgICAgIGJhY2tpbmdT
dG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU+KCpvdGhlci5i
YWNraW5nU3RvcmUpOwogCiAgICAgaWYgKG90aGVyLmZpbHRlcnMpCiAgICAgICAgIGZpbHRlcnMg
PSBzdGQ6Om1ha2VfdW5pcXVlPEZpbHRlck9wZXJhdGlvbnM+KCpvdGhlci5maWx0ZXJzKTsKQEAg
LTM2NywxMSArMzY3LDExIEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVy
UHJvcGVydGllczo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBkCiAgICAgICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoaGFzRnJvbnRCdWZmZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICBpZiAoaGFzRnJvbnRCdWZmZXIpIHsKLSAgICAgICAgICAgIFJlbW90ZUxheWVy
QmFja2luZ1N0b3JlIGJhY2tpbmdTdG9yZTsKLSAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoYmFja2luZ1N0b3JlKSkKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVMYXll
ckJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXll
ckJhY2tpbmdTdG9yZT4oKTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKmJhY2tp
bmdTdG9yZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgCi0g
ICAgICAgICAgICByZXN1bHQuYmFja2luZ1N0b3JlID0gc3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVM
YXllckJhY2tpbmdTdG9yZT4oYmFja2luZ1N0b3JlKTsKKyAgICAgICAgICAgIHJlc3VsdC5iYWNr
aW5nU3RvcmUgPSBzdGQ6Om1vdmUoYmFja2luZ1N0b3JlKTsKICAgICAgICAgfQogICAgIH0KIApA
QCAtNDEzLDExICs0MTMsMTEgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZW5j
b2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwg
bV9yb290TGF5ZXJJRDsKICAgICBlbmNvZGVyIDw8IG1fY3JlYXRlZExheWVyczsKIAotICAgIGVu
Y29kZXIgPDwgbV9jaGFuZ2VkTGF5ZXJQcm9wZXJ0aWVzLnNpemUoKTsKKyAgICBlbmNvZGVyIDw8
IHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX2NoYW5nZWRMYXllcnMuc2l6ZSgpKTsKIAotICAgIGZv
ciAoY29uc3QgYXV0byYgbGF5ZXJQcm9wZXJ0aWVzIDogbV9jaGFuZ2VkTGF5ZXJQcm9wZXJ0aWVz
KSB7Ci0gICAgICAgIGVuY29kZXIgPDwgbGF5ZXJQcm9wZXJ0aWVzLmtleTsKLSAgICAgICAgZW5j
b2RlciA8PCAqbGF5ZXJQcm9wZXJ0aWVzLnZhbHVlOworICAgIGZvciAoY29uc3QgYXV0byYgbGF5
ZXIgOiBtX2NoYW5nZWRMYXllcnMpIHsKKyAgICAgICAgZW5jb2RlciA8PCBsYXllci0+bGF5ZXJJ
RCgpOworICAgICAgICBlbmNvZGVyIDw8IGxheWVyLT5wcm9wZXJ0aWVzKCk7CiAgICAgfQogICAg
IAogICAgIGVuY29kZXIgPDwgbV9kZXN0cm95ZWRMYXllcklEczsKQEAgLTQ0NiwxMSArNDQ2LDEx
IEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmRlY29kZShJUEM6OkFyZ3VtZW50
RGVjb2RlciYgZGVjb2RlciwgUmVtb3RlTGF5CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1
bHQubV9jcmVhdGVkTGF5ZXJzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaW50IG51
bUNoYW5nZWRMYXllclByb3BlcnRpZXM7CisgICAgdWludDY0X3QgbnVtQ2hhbmdlZExheWVyUHJv
cGVydGllczsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG51bUNoYW5nZWRMYXllclByb3BlcnRp
ZXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IG51
bUNoYW5nZWRMYXllclByb3BlcnRpZXM7ICsraSkgeworICAgIGZvciAodWludDY0X3QgaSA9IDA7
IGkgPCBudW1DaGFuZ2VkTGF5ZXJQcm9wZXJ0aWVzOyArK2kpIHsKICAgICAgICAgR3JhcGhpY3NM
YXllcjo6UGxhdGZvcm1MYXllcklEIGxheWVySUQ7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUobGF5ZXJJRCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00NTksNyArNDU5LDcg
QEAgYm9vbCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZGVjb2RlKElQQzo6QXJndW1lbnRE
ZWNvZGVyJiBkZWNvZGVyLCBSZW1vdGVMYXkKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSgq
bGF5ZXJQcm9wZXJ0aWVzKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBy
ZXN1bHQuY2hhbmdlZExheWVycygpLnNldChsYXllcklELCBzdGQ6Om1vdmUobGF5ZXJQcm9wZXJ0
aWVzKSk7CisgICAgICAgIHJlc3VsdC5jaGFuZ2VkTGF5ZXJQcm9wZXJ0aWVzKCkuc2V0KGxheWVy
SUQsIHN0ZDo6bW92ZShsYXllclByb3BlcnRpZXMpKTsKICAgICB9CiAKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3VsdC5tX2Rlc3Ryb3llZExheWVySURzKSkKQEAgLTUxMiw3ICs1MTIsNyBA
QCB2b2lkIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpzZXRSb290TGF5ZXJJRChHcmFwaGlj
c0xheWVyOjpQbGF0Zm9ybUxheWVySUQgcgogCiB2b2lkIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uOjpsYXllclByb3BlcnRpZXNDaGFuZ2VkKFBsYXRmb3JtQ0FMYXllclJlbW90ZSogcmVtb3Rl
TGF5ZXIsIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXMmIHByb3Bl
cnRpZXMpCiB7Ci0gICAgbV9jaGFuZ2VkTGF5ZXJQcm9wZXJ0aWVzLnNldChyZW1vdGVMYXllci0+
bGF5ZXJJRCgpLCBzdGQ6Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpM
YXllclByb3BlcnRpZXM+KHByb3BlcnRpZXMpKTsKKyAgICBtX2NoYW5nZWRMYXllcnMuYXBwZW5k
KHJlbW90ZUxheWVyKTsKIH0KIAogdm9pZCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6c2V0
Q3JlYXRlZExheWVycyhWZWN0b3I8TGF5ZXJDcmVhdGlvblByb3BlcnRpZXM+IGNyZWF0ZWRMYXll
cnMpCkBAIC04MDEsNyArODAxLDcgQEAgc3RhdGljIHZvaWQgZHVtcENoYW5nZWRMYXllcnMoUmVt
b3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbW90ZUxheWVyVHIKIAogICAgICAg
ICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb246OkJhY2tpbmdTdG9yZUNoYW5nZWQpIHsKICAgICAgICAgICAgIGlmIChjb25z
dCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlID0gbGF5ZXJQcm9wZXJ0aWVz
LmJhY2tpbmdTdG9yZS5nZXQoKSkKLSAgICAgICAgICAgICAgICBkdW1wUHJvcGVydHk8UmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmU+KHRzLCAiYmFja2luZ1N0b3JlIiwgKmJhY2tpbmdTdG9yZSk7Cisg
ICAgICAgICAgICAgICAgZHVtcFByb3BlcnR5PGNvbnN0IFJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
Jj4odHMsICJiYWNraW5nU3RvcmUiLCAqYmFja2luZ1N0b3JlKTsKICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICBkdW1wUHJvcGVydHk8U3RyaW5nPih0cywgImJhY2tpbmdTdG9yZSIs
ICJyZW1vdmVkIik7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQppbmRleCA1YmM3MWExLi5lOGVlMjU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZUhvc3Qu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVIb3N0
Lm1tCkBAIC01NCw3ICs1NCw3IEBAIFJlbW90ZUxheWVyVHJlZUhvc3Q6On5SZW1vdGVMYXllclRy
ZWVIb3N0KCkKIGJvb2wgUmVtb3RlTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJUcmVlKGNvbnN0
IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgZmxvYXQgaW5kaWNhdG9y
U2NhbGVGYWN0b3IpCiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBjcmVhdGVkTGF5ZXIgOiB0cmFu
c2FjdGlvbi5jcmVhdGVkTGF5ZXJzKCkpIHsKLSAgICAgICAgY29uc3QgUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllcyogcHJvcGVydGllcyA9IHRyYW5zYWN0aW9uLmNo
YW5nZWRMYXllcnMoKS5nZXQoY3JlYXRlZExheWVyLmxheWVySUQpOworICAgICAgICBjb25zdCBS
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzKiBwcm9wZXJ0aWVzID0g
dHJhbnNhY3Rpb24uY2hhbmdlZExheWVyUHJvcGVydGllcygpLmdldChjcmVhdGVkTGF5ZXIubGF5
ZXJJRCk7CiAgICAgICAgIGNyZWF0ZUxheWVyKGNyZWF0ZWRMYXllciwgcHJvcGVydGllcyk7CiAg
ICAgfQogCkBAIC02NSw3ICs2NSw3IEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVlSG9zdDo6dXBkYXRl
TGF5ZXJUcmVlKGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJiB0cmFuCiAgICAgICAg
IHJvb3RMYXllckNoYW5nZWQgPSB0cnVlOwogICAgIH0KIAotICAgIGZvciAoYXV0byYgY2hhbmdl
ZExheWVyIDogdHJhbnNhY3Rpb24uY2hhbmdlZExheWVycygpKSB7CisgICAgZm9yIChhdXRvJiBj
aGFuZ2VkTGF5ZXIgOiB0cmFuc2FjdGlvbi5jaGFuZ2VkTGF5ZXJQcm9wZXJ0aWVzKCkpIHsKICAg
ICAgICAgYXV0byBsYXllcklEID0gY2hhbmdlZExheWVyLmtleTsKICAgICAgICAgY29uc3QgUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllcyYgcHJvcGVydGllcyA9ICpj
aGFuZ2VkTGF5ZXIudmFsdWU7CiAKQEAgLTgyLDEyICs4MiwxMSBAQCBib29sIFJlbW90ZUxheWVy
VHJlZUhvc3Q6OnVwZGF0ZUxheWVyVHJlZShjb25zdCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
biYgdHJhbgogICAgICAgICAgICAgcmVsYXRlZExheWVycy5zZXQocHJvcGVydGllcy5tYXNrTGF5
ZXJJRCwgZ2V0TGF5ZXIocHJvcGVydGllcy5tYXNrTGF5ZXJJRCkpOwogCiAgICAgICAgIGlmICht
X2lzRGVidWdMYXllclRyZWVIb3N0KSB7Ci0gICAgICAgICAgICBSZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzIHByb3BlcnRpZXNDb3B5KHByb3BlcnRpZXMpOwotICAg
ICAgICAgICAgcHJvcGVydGllc0NvcHkubWFza3NUb0JvdW5kcyA9IGZhbHNlOwotICAgICAgICAg
ICAgaWYgKHByb3BlcnRpZXNDb3B5LmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb246OkJvcmRlcldpZHRoQ2hhbmdlZCkKLSAgICAgICAgICAgICAgICBwcm9wZXJ0
aWVzQ29weS5ib3JkZXJXaWR0aCAqPSAxIC8gaW5kaWNhdG9yU2NhbGVGYWN0b3I7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllcjo6YXBwbHlQ
cm9wZXJ0aWVzKGxheWVyLCBwcm9wZXJ0aWVzQ29weSwgcmVsYXRlZExheWVycyk7CisgICAgICAg
ICAgICBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXI6OmFwcGx5UHJvcGVydGllcyhsYXll
ciwgcHJvcGVydGllcywgcmVsYXRlZExheWVycyk7CisKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0
aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkJvcmRl
cldpZHRoQ2hhbmdlZCkKKyAgICAgICAgICAgICAgICBhc0xheWVyKGxheWVyKS5ib3JkZXJXaWR0
aCA9IHByb3BlcnRpZXMuYm9yZGVyV2lkdGggLyBpbmRpY2F0b3JTY2FsZUZhY3RvcjsKKyAgICAg
ICAgICAgIGFzTGF5ZXIobGF5ZXIpLm1hc2tzVG9Cb3VuZHMgPSBmYWxzZTsKICAgICAgICAgfSBl
bHNlCiAgICAgICAgICAgICBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXI6OmFwcGx5UHJv
cGVydGllcyhsYXllciwgcHJvcGVydGllcywgcmVsYXRlZExheWVycyk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5
ZXJSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0
Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCmluZGV4IDc2NTk2NjUuLjU0NmQyZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVt
b3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRm
b3JtQ0FMYXllclJlbW90ZS5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgUGFzc1JlZlB0cjxQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGU+IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6Y3JlYXRlKGNvbnN0IFBsYXRm
b3JtQ0EKIHsKICAgICBSZWZQdHI8UGxhdGZvcm1DQUxheWVyUmVtb3RlPiBsYXllciA9IGFkb3B0
UmVmKG5ldyBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUob3RoZXIsIG93bmVyLCBjb250ZXh0KSk7CiAK
LSAgICBjb250ZXh0LT5sYXllcldhc0NyZWF0ZWQobGF5ZXIuZ2V0KCksIExheWVyVHlwZUN1c3Rv
bSk7CisgICAgY29udGV4dC0+bGF5ZXJXYXNDcmVhdGVkKGxheWVyLmdldCgpLCBvdGhlci5sYXll
clR5cGUoKSk7CiAKICAgICByZXR1cm4gbGF5ZXIucmVsZWFzZSgpOwogfQpAQCAtMTI1LDEyICsx
MjUsMTEgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnJlY3Vyc2l2ZUJ1aWxkVHJhbnNh
Y3Rpb24oUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24KIAogICAgICAgICBpZiAobV9sYXllclR5
cGUgPT0gTGF5ZXJUeXBlQ3VzdG9tKSB7CiAgICAgICAgICAgICBSZW1vdGVMYXllclRyZWVQcm9w
ZXJ0eUFwcGxpZXI6OmFwcGx5UHJvcGVydGllcyhwbGF0Zm9ybUxheWVyKCksIG1fcHJvcGVydGll
cywgUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyOjpSZWxhdGVkTGF5ZXJNYXAoKSk7Ci0g
ICAgICAgICAgICBtX3Byb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgPSBSZW1vdGVMYXllclRy
ZWVUcmFuc2FjdGlvbjo6Tm9DaGFuZ2U7CisgICAgICAgICAgICBtX3Byb3BlcnRpZXMucmVzZXRD
aGFuZ2VkUHJvcGVydGllcygpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAg
ICAgICAgdHJhbnNhY3Rpb24ubGF5ZXJQcm9wZXJ0aWVzQ2hhbmdlZCh0aGlzLCBtX3Byb3BlcnRp
ZXMpOwotICAgICAgICBtX3Byb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgPSBSZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbjo6Tm9DaGFuZ2U7CiAgICAgfQogCiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX2NoaWxkcmVuLnNpemUoKTsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUu
aAppbmRleCBiNzI4OWY5Li44NmZkOTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgKQEAg
LTE1MSw2ICsxNTEsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHVpbnQzMl90IGhvc3RpbmdD
b250ZXh0SUQoKTsKIAorICAgIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3Bl
cnRpZXMmIHByb3BlcnRpZXMoKSB7IHJldHVybiBtX3Byb3BlcnRpZXM7IH0KKwogcHJvdGVjdGVk
OgogICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZShXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZSwgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lciwgUmVtb3RlTGF5
ZXJUcmVlQ29udGV4dCogY29udGV4dCk7CiAgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlKGNvbnN0
IFBsYXRmb3JtQ0FMYXllclJlbW90ZSYsIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCos
IFJlbW90ZUxheWVyVHJlZUNvbnRleHQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhLm1tCmluZGV4IDllZWY4NWUuLjUxNzZlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYS5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW1wb3J0ICJEcmF3aW5nQXJlYVBy
b3h5TWVzc2FnZXMuaCIKICNpbXBvcnQgIkdyYXBoaWNzTGF5ZXJDQVJlbW90ZS5oIgorI2ltcG9y
dCAiUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgiCiAjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVDb250
ZXh0LmgiCiAjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMu
aCIKICNpbXBvcnQgIlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgiCkBAIC0zMDQsNiArMzA1
LDE3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmxheWVyRmx1c2hUaW1lckZp
cmVkKFdlYkNvcmU6OlRpbWVyPFJlbW90ZUxheWVyCiAgICAgZmx1c2hMYXllcnMoKTsKIH0KIAor
c3RhdGljIHZvaWQgZmx1c2hCYWNraW5nU3RvcmVDaGFuZ2VzSW5UcmFuc2FjdGlvbihSZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCit7CisgICAgZm9yIChhdXRvJiBsYXll
ciA6IHRyYW5zYWN0aW9uLmNoYW5nZWRMYXllcnMoKSkgeworICAgICAgICBpZiAoIWxheWVyLT5w
cm9wZXJ0aWVzKCkuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
bjo6QmFja2luZ1N0b3JlQ2hhbmdlZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBp
ZiAoUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSA9IGxheWVyLT5wcm9wZXJ0
aWVzKCkuYmFja2luZ1N0b3JlLmdldCgpKQorICAgICAgICAgICAgYmFja2luZ1N0b3JlLT5mbHVz
aCgpOworICAgIH0KK30KKwogdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6Zmx1c2hM
YXllcnMoKQogewogICAgIGlmICghbV9yb290TGF5ZXIpCkBAIC0zMzUsOCArMzQ3LDE0IEBAIHZv
aWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJzKCkKICAgICAgICAgdG9S
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcihtX3dlYlBhZ2UtPnNjcm9sbGluZ0Nvb3JkaW5hdG9y
KCkpLT5idWlsZFRyYW5zYWN0aW9uKHNjcm9sbGluZ1RyYW5zYWN0aW9uKTsKICNlbmRpZgogCisg
ICAgLy8gRklYTUU6IE1vdmUgZmx1c2hpbmcgYmFja2luZyBzdG9yZSBhbmQgc2VuZGluZyBDb21t
aXRMYXllclRyZWUgb250byBhIGJhY2tncm91bmQgdGhyZWFkLgorICAgIGZsdXNoQmFja2luZ1N0
b3JlQ2hhbmdlc0luVHJhbnNhY3Rpb24obGF5ZXJUcmFuc2FjdGlvbik7CisKICAgICBtX3dhaXRp
bmdGb3JCYWNraW5nU3RvcmVTd2FwID0gdHJ1ZTsKICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1pdExheWVyVHJlZShsYXll
clRyYW5zYWN0aW9uLCBzY3JvbGxpbmdUcmFuc2FjdGlvbikpOworCisgICAgZm9yIChhdXRvJiBs
YXllciA6IGxheWVyVHJhbnNhY3Rpb24uY2hhbmdlZExheWVycygpKQorICAgICAgICBsYXllci0+
cHJvcGVydGllcygpLnJlc2V0Q2hhbmdlZFByb3BlcnRpZXMoKTsKIH0KIAogdm9pZCBSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYTo6ZGlkU3dhcEJhY2tpbmdTdG9yZSgpCi0tIAoxLjguNS4yIChB
cHBsZSBHaXQtNDgpCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228213</attachid>
            <date>2014-03-31 16:02:42 -0700</date>
            <delta_ts>2014-03-31 16:06:18 -0700</delta_ts>
            <desc>maybe rebase</desc>
            <filename>flush.diff</filename>
            <type>text/plain</type>
            <size>19459</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAwZGI0YzkzLi43NTMyNDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNzAg
QEAKIDIwMTQtMDMtMzEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAK
KyAgICAgICAgW2lPUyBXZWJLaXQyXSBGbHVzaCBhbGwgc3VyZmFjZXMgYWZ0ZXIgcGFpbnRpbmcg
aW50byBhbGwgb2YgdGhlbSwgaW5zdGVhZCBvZiBhZnRlciBwYWludGluZyBpbnRvIGVhY2ggb25l
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzA3NjgK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE2NDIxNDcxPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tp
bmdTdG9yZS5oOgorICAgICAgICBNYWtlIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlIG5vbmNvcHlh
YmxlLgorICAgICAgICBBZGQgZmx1c2goKSwgd2hpY2ggc3luY2hyb25vdXNseSBmbHVzaGVzIHBh
aW50aW5nIG9wZXJhdGlvbnMgb24gdGhlIHVuZGVybHlpbmcgYmFja2luZyBzdG9yZS4KKyAgICAg
ICAgQWRkIHN0b3JhZ2UgZm9yIHRoZSBDR0NvbnRleHQgdGhhdCBuZWVkcyB0byBiZSBmbHVzaGVk
LCBhbmQgZW5zdXJlIHRoYXQgaXQgaXMgZmx1c2hlZCBiZWZvcmUgd2UgcGFpbnQgYWdhaW4uCisK
KyAgICAgICAgKiBTaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tOgorICAgICAg
ICAoUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkpOgorCisgICAgICAgIChSZW1vdGVM
YXllckJhY2tpbmdTdG9yZTo6ZHJhd0luQ29udGV4dCk6CisgICAgICAgIERvbid0IGZsdXNoIHRo
ZSBjb250ZXh0IGltbWVkaWF0ZWx5IGFmdGVyIHBhaW50aW5nLgorCisgICAgICAgIChSZW1vdGVM
YXllckJhY2tpbmdTdG9yZTo6Zmx1c2gpOgorICAgICAgICBGbHVzaCB0aGUgY3VycmVudCBmcm9u
dCBzdXJmYWNlL2J1ZmZlcidzIGNvbnRleHQuCisgICAgICAgIENsZWFyIHRoZSBuZXcgcGVuZGlu
Zy1mbHVzaCBtZW1iZXJzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6Zmx1c2hCYWNraW5n
U3RvcmVDaGFuZ2VzSW5UcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhOjpmbHVzaExheWVycyk6CisgICAgICAgIENyYXdsIHRocm91Z2ggYWxs
IG9mIHRoZSB2YWxpZCBjaGFuZ2VkIGJhY2tpbmcgc3RvcmVzIGluIHRoZSB0cmFuc2FjdGlvbiBh
bmQgZmx1c2ggdGhlbS4KKyAgICAgICAgUmVzZXQgY2hhbmdlZCBwcm9wZXJ0aWVzIGFmdGVyIGVu
Y29kaW5nIHRoZSBjb21taXQuCisKKyAgICAgICAgKiBTaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uOjpMYXllclByb3BlcnRpZXM6OnJlc2V0Q2hhbmdlZFByb3BlcnRpZXMpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6Y2hhbmdlZExheWVycyk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpjaGFuZ2VkTGF5ZXJQcm9w
ZXJ0aWVzKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQ
cm9wZXJ0aWVzOjpMYXllclByb3BlcnRpZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpkZWNvZGUpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmRlY29kZSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpsYXllclByb3BlcnRpZXNDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYktpdDo6ZHVtcENoYW5nZWRMYXllcnMpOgorICAgICAgICBJbnN0ZWFkIG9mIHN0
b3JpbmcgYSBjb3B5IG9mIHRoZSBMYXllclByb3BlcnRpZXMgc3RydWN0IGZvciBlYWNoIGNoYW5n
ZWQgbGF5ZXIKKyAgICAgICAgd2hpbGUgYnVpbGRpbmcgdGhlIHRyYW5zYWN0aW9uIGluIHRoZSBX
ZWIgcHJvY2Vzcywgc3RvcmUgYSBsaXN0IG9mIGNoYW5nZWQgbGF5ZXJzLAorICAgICAgICBhbmQg
ZGlyZWN0bHkgZW5jb2RlIHRoZSBjb21taXQgZnJvbSB0aG9zZSBsYXllcnMnIExheWVyUHJvcGVy
dGllcy4gVGhpcyBwcm92aWRlcyBhIGZldyBiZW5lZml0czoKKyAgICAgICAgICAgICAgICAtIFdl
IGF2b2lkIGNvcHlpbmcgTGF5ZXJQcm9wZXJ0aWVzIGZvciBldmVyeSBjaGFuZ2VkIGxheWVyLCBl
dmVyeSBjb21taXQKKyAgICAgICAgICAgICAgICAtIFdlIGNhbiBtYWtlIFJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlIG5vbmNvcHlhYmxlCisgICAgICAgICAgICAgICAgLSBXZSBjYW4gd2FsayB0aGUg
Y2hhbmdlZCBsYXllcnMgYWZ0ZXIgYnVpbGRpbmcgdGhlIHRyYW5zYWN0aW9uCisgICAgICAgICAg
ICAgICAgaW4gb3JkZXIgdG8gZmx1c2ggYmFja2luZyBzdG9yZSwgYW5kIGFjdHVhbGx5IGFmZmVj
dCB0aGUgbGF5ZXJzJworICAgICAgICAgICAgICAgIG93biBSZW1vdGVMYXllckJhY2tpbmdTdG9y
ZSBpbnN0ZWFkIG9mIGEgY29weS4KKyAgICAgICAgVGhlIFVJIHByb2Nlc3Mgd2lsbCBzdGlsbCBn
ZW5lcmF0ZSBhIExheWVyUHJvcGVydGllc01hcCBhdCBkZWNvZGUgdGltZS4KKyAgICAgICAgCisg
ICAgICAgICogVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVIb3N0Lm1tOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllclRyZWUpOgorICAgICAgICBE
b24ndCBjb3B5IHRoZSBMYXllclByb3BlcnRpZXMgc3RydWN0IGZvciB0aGUgZGVidWcgb3Zlcmxh
eS4gSW5zdGVhZCwKKyAgICAgICAgYWRqdXN0IHRoZSBwcm9wZXJ0aWVzIHdoaWNoIHRoZSBkZWJ1
ZyBvdmVybGF5IHdoYWNrcyBkaXJlY3RseSBvbiB0aGUgbGF5ZXIsCisgICAgICAgIGFmdGVyIGFw
cGx5aW5nIHRoZSBub3JtYWwgTGF5ZXJQcm9wZXJ0aWVzLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwOgorICAgICAgICAoUGxhdGZv
cm1DQUxheWVyUmVtb3RlOjpyZWN1cnNpdmVCdWlsZFRyYW5zYWN0aW9uKToKKyAgICAgICAgRG9u
J3QgcmVzZXQgY2hhbmdlZCBsYXllciBwcm9wZXJ0aWVzIGluIHRoZSBtaWRkbGUgb2YgYnVpbGRp
bmcgYSB0cmFuc2FjdGlvbi4gSW5zdGVhZCwKKyAgICAgICAgUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWE6OmZsdXNoTGF5ZXJzKCkgd2lsbCByZXNldCBhbGwgdGhlIGZsYWdzIG9uIGFsbCBjaGFu
Z2VkIGxheWVycworICAgICAgICBhZnRlciB0aGUgY29tbWl0IGlzIGVuY29kZWQuCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oOgorICAg
ICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnByb3BlcnRpZXMpOgorCisyMDE0
LTAzLTMxICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCiAgICAgICAg
IERvdWJsZS1idWZmZXIgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUKICAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDk5MAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgKaW5kZXggMjhhZjcw
NS4uY2NiMGIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVM
YXllckJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmUuaApAQCAtNDMsNiArNDMsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IGNsYXNzIFBsYXRmb3JtQ0FMYXllclJlbW90ZTsKIAogY2xhc3MgUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
KTsKIHB1YmxpYzoKICAgICBSZW1vdGVMYXllckJhY2tpbmdTdG9yZSgpOwogCkBAIC03Niw2ICs3
Nyw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICEhbV9mcm9udEJ1ZmZlcjsKICAgICB9CiAK
KyAgICB2b2lkIGZsdXNoKCk7CisKIHByaXZhdGU6CiAgICAgdm9pZCBkcmF3SW5Db250ZXh0KFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIENHSW1hZ2VSZWYgYmFja0ltYWdlKTsKICAgICB2b2lk
IGNsZWFyQmFja2luZ1N0b3JlKCk7CkBAIC05NSw2ICs5OCw4IEBAIHByaXZhdGU6CiAgICAgUmVm
UHRyPFdlYkNvcmU6OklPU3VyZmFjZT4gbV9iYWNrU3VyZmFjZTsKICNlbmRpZgogCisgICAgUmV0
YWluUHRyPENHQ29udGV4dFJlZj4gbV9mcm9udENvbnRleHRQZW5kaW5nRmx1c2g7CisKICAgICBi
b29sIG1fYWNjZWxlcmF0ZXNEcmF3aW5nOwogCiAgICAgV2ViQ29yZTo6UmVwYWludFJlY3RMaXN0
IG1fcGFpbnRpbmdSZWN0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMv
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1Jl
bW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCmluZGV4IDU2ZTU5NDQuLjQzMDQ4NGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0K
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5t
bQpAQCAtMTUwLDYgKzE1MCw4IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnNldE5l
ZWRzRGlzcGxheSgpCiAKIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkoKQog
eworICAgIEFTU0VSVCghbV9mcm9udENvbnRleHRQZW5kaW5nRmx1c2gpOworCiAgICAgaWYgKCFt
X2xheWVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTIwMSwxMCArMjAzLDEwIEBAIGJv
b2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkoKQogCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KLSNlbHNlCi0gICAgQVNTRVJUKCFtX2FjY2VsZXJhdGVzRHJhd2luZyk7CiAj
ZW5kaWYKIAorICAgIEFTU0VSVCghbV9hY2NlbGVyYXRlc0RyYXdpbmcpOworCiAgICAgc3RkOjpz
d2FwKG1fZnJvbnRCdWZmZXIsIG1fYmFja0J1ZmZlcik7CiAgICAgaWYgKCFtX2Zyb250QnVmZmVy
KQogICAgICAgICBtX2Zyb250QnVmZmVyID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFi
bGUoZXhwYW5kZWRTY2FsZWRTaXplLCBtX2lzT3BhcXVlID8gU2hhcmVhYmxlQml0bWFwOjpOb0Zs
YWdzIDogU2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKTsKQEAgLTI5Myw3ICsyOTUsNyBA
QCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkcmF3SW5Db250ZXh0KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgQ0dJbWFnZVJlZgogICAgIG1fZGlydHlSZWdpb24gPSBSZWdpb24oKTsK
ICAgICBtX3BhaW50aW5nUmVjdHMuY2xlYXIoKTsKIAotICAgIENHQ29udGV4dEZsdXNoKGNvbnRl
eHQucGxhdGZvcm1Db250ZXh0KCkpOworICAgIG1fZnJvbnRDb250ZXh0UGVuZGluZ0ZsdXNoID0g
Y29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsKIH0KIAogdm9pZCBSZW1vdGVMYXllckJhY2tpbmdT
dG9yZTo6ZW51bWVyYXRlUmVjdHNCZWluZ0RyYXduKENHQ29udGV4dFJlZiBjb250ZXh0LCB2b2lk
ICheYmxvY2spKENHUmVjdCkpCkBAIC0zMjUsMyArMzI3LDEyIEBAIHZvaWQgUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmU6OmFwcGx5QmFja2luZ1N0b3JlVG9MYXllcihDQUxheWVyICpsYXllcikKICAg
ICBBU1NFUlQoIWFjY2VsZXJhdGVzRHJhd2luZygpKTsKICAgICBsYXllci5jb250ZW50cyA9IChp
ZCltX2Zyb250QnVmZmVyLT5tYWtlQ0dJbWFnZUNvcHkoKS5nZXQoKTsKIH0KKwordm9pZCBSZW1v
dGVMYXllckJhY2tpbmdTdG9yZTo6Zmx1c2goKQoreworICAgIGlmICghbV9mcm9udENvbnRleHRQ
ZW5kaW5nRmx1c2gpCisgICAgICAgIHJldHVybjsKKworICAgIENHQ29udGV4dEZsdXNoKG1fZnJv
bnRDb250ZXh0UGVuZGluZ0ZsdXNoLmdldCgpKTsKKyAgICBtX2Zyb250Q29udGV4dFBlbmRpbmdG
bHVzaCA9IG51bGxwdHI7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFj
L1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFj
L1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgKaW5kZXggMjE4YjhkMC4uMzlmMWZjYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb24uaApAQCAtMTA1LDYgKzEwNSwxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBldmVy
Q2hhbmdlZFByb3BlcnRpZXMgfD0gY2hhbmdlRmxhZ3M7CiAgICAgICAgIH0KIAorICAgICAgICB2
b2lkIHJlc2V0Q2hhbmdlZFByb3BlcnRpZXMoKQorICAgICAgICB7CisgICAgICAgICAgICBjaGFu
Z2VkUHJvcGVydGllcyA9IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpOb0NoYW5nZTsKKyAg
ICAgICAgfQorCiAgICAgICAgIExheWVyQ2hhbmdlIGNoYW5nZWRQcm9wZXJ0aWVzOwogICAgICAg
ICBMYXllckNoYW5nZSBldmVyQ2hhbmdlZFByb3BlcnRpZXM7CiAKQEAgLTE1NiwxMiArMTYxLDE1
IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCwgc3RkOjp1bmlxdWVfcHRyPExheWVyUHJvcGVydGll
cz4+IExheWVyUHJvcGVydGllc01hcDsKLSAgICAKKwogICAgIFZlY3RvcjxMYXllckNyZWF0aW9u
UHJvcGVydGllcz4gY3JlYXRlZExheWVycygpIGNvbnN0IHsgcmV0dXJuIG1fY3JlYXRlZExheWVy
czsgfQotICAgIGNvbnN0IExheWVyUHJvcGVydGllc01hcCYgY2hhbmdlZExheWVycygpIGNvbnN0
IHsgcmV0dXJuIG1fY2hhbmdlZExheWVyUHJvcGVydGllczsgfQotICAgIExheWVyUHJvcGVydGll
c01hcCYgY2hhbmdlZExheWVycygpIHsgcmV0dXJuIG1fY2hhbmdlZExheWVyUHJvcGVydGllczsg
fQogICAgIFZlY3RvcjxXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+IGRl
c3Ryb3llZExheWVycygpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdHJveWVkTGF5ZXJJRHM7IH0KIAor
ICAgIFZlY3RvcjxSZWZQdHI8UGxhdGZvcm1DQUxheWVyUmVtb3RlPj4mIGNoYW5nZWRMYXllcnMo
KSB7IHJldHVybiBtX2NoYW5nZWRMYXllcnM7IH0KKworICAgIGNvbnN0IExheWVyUHJvcGVydGll
c01hcCYgY2hhbmdlZExheWVyUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1fY2hhbmdlZExh
eWVyUHJvcGVydGllczsgfQorICAgIExheWVyUHJvcGVydGllc01hcCYgY2hhbmdlZExheWVyUHJv
cGVydGllcygpIHsgcmV0dXJuIG1fY2hhbmdlZExheWVyUHJvcGVydGllczsgfQorCiAgICAgV2Vi
Q29yZTo6SW50U2l6ZSBjb250ZW50c1NpemUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzU2l6
ZTsgfQogICAgIHZvaWQgc2V0Q29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNp
emUpIHsgbV9jb250ZW50c1NpemUgPSBzaXplOyB9OwogICAgIApAQCAtMTkxLDcgKzE5OSw5IEBA
IHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxh
dGZvcm1MYXllcklEIG1fcm9vdExheWVySUQ7Ci0gICAgTGF5ZXJQcm9wZXJ0aWVzTWFwIG1fY2hh
bmdlZExheWVyUHJvcGVydGllczsKKyAgICBWZWN0b3I8UmVmUHRyPFBsYXRmb3JtQ0FMYXllclJl
bW90ZT4+IG1fY2hhbmdlZExheWVyczsgLy8gT25seSB1c2VkIGluIHRoZSBXZWIgcHJvY2Vzcy4K
KyAgICBMYXllclByb3BlcnRpZXNNYXAgbV9jaGFuZ2VkTGF5ZXJQcm9wZXJ0aWVzOyAvLyBPbmx5
IHVzZWQgaW4gdGhlIFVJIHByb2Nlc3MuCisKICAgICBWZWN0b3I8TGF5ZXJDcmVhdGlvblByb3Bl
cnRpZXM+IG1fY3JlYXRlZExheWVyczsKICAgICBWZWN0b3I8V2ViQ29yZTo6R3JhcGhpY3NMYXll
cjo6UGxhdGZvcm1MYXllcklEPiBtX2Rlc3Ryb3llZExheWVySURzOwogICAgIFZlY3RvcjxXZWJD
b3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+IG1fdmlkZW9MYXllcklEc1BlbmRp
bmdGdWxsc2NyZWVuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KaW5kZXggOTA3YTM4Ny4uMDk0YzI2MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
bi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5z
YWN0aW9uLm1tCkBAIC0xMjYsMTQgKzEyNiwxNCBAQCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
bjo6TGF5ZXJQcm9wZXJ0aWVzOjpMYXllclByb3BlcnRpZXMoY29uc3QgTGF5ZXJQcm9wZXJ0aQog
ICAgICwgbWFza3NUb0JvdW5kcyhvdGhlci5tYXNrc1RvQm91bmRzKQogICAgICwgb3BhcXVlKG90
aGVyLm9wYXF1ZSkKIHsKKyAgICAvLyBGSVhNRTogTGF5ZXJQcm9wZXJ0aWVzIHNob3VsZCByZWZl
cmVuY2UgYmFja2luZyBzdG9yZSBieSBJRCwgc28gdGhhdCB0d28gbGF5ZXJzIGNhbiBoYXZlIHRo
ZSBzYW1lIGJhY2tpbmcgc3RvcmUgKGZvciBjbG9uZXMpLgorICAgIC8vIEZJWE1FOiBMYXllclBy
b3BlcnRpZXMgc2hvdWxkbid0IGJlIGNvcHlhYmxlOyBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNs
b25lIHNob3VsZCBjb3B5IHRoZSByZWxldmFudCBwcm9wZXJ0aWVzLgorCiAgICAgaWYgKG90aGVy
LnRyYW5zZm9ybSkKICAgICAgICAgdHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2Zv
cm1hdGlvbk1hdHJpeD4oKm90aGVyLnRyYW5zZm9ybSk7CiAKICAgICBpZiAob3RoZXIuc3VibGF5
ZXJUcmFuc2Zvcm0pCiAgICAgICAgIHN1YmxheWVyVHJhbnNmb3JtID0gc3RkOjptYWtlX3VuaXF1
ZTxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4oKm90aGVyLnN1YmxheWVyVHJhbnNmb3JtKTsKLSAgICAK
LSAgICBpZiAob3RoZXIuYmFja2luZ1N0b3JlKQotICAgICAgICBiYWNraW5nU3RvcmUgPSBzdGQ6
Om1ha2VfdW5pcXVlPFJlbW90ZUxheWVyQmFja2luZ1N0b3JlPigqb3RoZXIuYmFja2luZ1N0b3Jl
KTsKIAogICAgIGlmIChvdGhlci5maWx0ZXJzKQogICAgICAgICBmaWx0ZXJzID0gc3RkOjptYWtl
X3VuaXF1ZTxGaWx0ZXJPcGVyYXRpb25zPigqb3RoZXIuZmlsdGVycyk7CkBAIC0zNjcsMTEgKzM2
NywxMSBAQCBib29sIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXM6
OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZAogICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGhhc0Zyb250QnVmZmVyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
aWYgKGhhc0Zyb250QnVmZmVyKSB7Ci0gICAgICAgICAgICBSZW1vdGVMYXllckJhY2tpbmdTdG9y
ZSBiYWNraW5nU3RvcmU7Ci0gICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJhY2tpbmdT
dG9yZSkpCisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmU+IGJhY2tpbmdTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmU+KCk7CisgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpiYWNraW5nU3RvcmUpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAg
cmVzdWx0LmJhY2tpbmdTdG9yZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmU+KGJhY2tpbmdTdG9yZSk7CisgICAgICAgICAgICByZXN1bHQuYmFja2luZ1N0b3JlID0g
c3RkOjptb3ZlKGJhY2tpbmdTdG9yZSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTQxMywxMSAr
NDEzLDExIEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmVuY29kZShJUEM6OkFy
Z3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IG1fcm9vdExheWVy
SUQ7CiAgICAgZW5jb2RlciA8PCBtX2NyZWF0ZWRMYXllcnM7CiAKLSAgICBlbmNvZGVyIDw8IG1f
Y2hhbmdlZExheWVyUHJvcGVydGllcy5zaXplKCk7CisgICAgZW5jb2RlciA8PCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4obV9jaGFuZ2VkTGF5ZXJzLnNpemUoKSk7CiAKLSAgICBmb3IgKGNvbnN0IGF1
dG8mIGxheWVyUHJvcGVydGllcyA6IG1fY2hhbmdlZExheWVyUHJvcGVydGllcykgewotICAgICAg
ICBlbmNvZGVyIDw8IGxheWVyUHJvcGVydGllcy5rZXk7Ci0gICAgICAgIGVuY29kZXIgPDwgKmxh
eWVyUHJvcGVydGllcy52YWx1ZTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGxheWVyIDogbV9jaGFu
Z2VkTGF5ZXJzKSB7CisgICAgICAgIGVuY29kZXIgPDwgbGF5ZXItPmxheWVySUQoKTsKKyAgICAg
ICAgZW5jb2RlciA8PCBsYXllci0+cHJvcGVydGllcygpOwogICAgIH0KICAgICAKICAgICBlbmNv
ZGVyIDw8IG1fZGVzdHJveWVkTGF5ZXJJRHM7CkBAIC00NDYsMTEgKzQ0NiwxMSBAQCBib29sIFJl
bW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGRl
Y29kZXIsIFJlbW90ZUxheQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1fY3JlYXRl
ZExheWVycykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGludCBudW1DaGFuZ2VkTGF5
ZXJQcm9wZXJ0aWVzOworICAgIHVpbnQ2NF90IG51bUNoYW5nZWRMYXllclByb3BlcnRpZXM7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShudW1DaGFuZ2VkTGF5ZXJQcm9wZXJ0aWVzKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1DaGFuZ2VkTGF5
ZXJQcm9wZXJ0aWVzOyArK2kpIHsKKyAgICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwgbnVtQ2hh
bmdlZExheWVyUHJvcGVydGllczsgKytpKSB7CiAgICAgICAgIEdyYXBoaWNzTGF5ZXI6OlBsYXRm
b3JtTGF5ZXJJRCBsYXllcklEOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGxheWVySUQp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDU5LDcgKzQ1OSw3IEBAIGJvb2wgUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVj
b2RlciwgUmVtb3RlTGF5CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoKmxheWVyUHJvcGVy
dGllcykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgcmVzdWx0LmNoYW5n
ZWRMYXllcnMoKS5zZXQobGF5ZXJJRCwgc3RkOjptb3ZlKGxheWVyUHJvcGVydGllcykpOworICAg
ICAgICByZXN1bHQuY2hhbmdlZExheWVyUHJvcGVydGllcygpLnNldChsYXllcklELCBzdGQ6Om1v
dmUobGF5ZXJQcm9wZXJ0aWVzKSk7CiAgICAgfQogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShy
ZXN1bHQubV9kZXN0cm95ZWRMYXllcklEcykpCkBAIC01MTIsNyArNTEyLDcgQEAgdm9pZCBSZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbjo6c2V0Um9vdExheWVySUQoR3JhcGhpY3NMYXllcjo6UGxh
dGZvcm1MYXllcklEIHIKIAogdm9pZCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6bGF5ZXJQ
cm9wZXJ0aWVzQ2hhbmdlZChQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUqIHJlbW90ZUxheWVyLCBSZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzKQogewot
ICAgIG1fY2hhbmdlZExheWVyUHJvcGVydGllcy5zZXQocmVtb3RlTGF5ZXItPmxheWVySUQoKSwg
c3RkOjptYWtlX3VuaXF1ZTxSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0
aWVzPihwcm9wZXJ0aWVzKSk7CisgICAgbV9jaGFuZ2VkTGF5ZXJzLmFwcGVuZChyZW1vdGVMYXll
cik7CiB9CiAKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OnNldENyZWF0ZWRMYXll
cnMoVmVjdG9yPExheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzPiBjcmVhdGVkTGF5ZXJzKQpAQCAtODAx
LDcgKzgwMSw3IEBAIHN0YXRpYyB2b2lkIGR1bXBDaGFuZ2VkTGF5ZXJzKFJlbW90ZUxheWVyVHJl
ZVRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW1vdGVMYXllclRyCiAKICAgICAgICAgaWYgKGxheWVy
UHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
OjpCYWNraW5nU3RvcmVDaGFuZ2VkKSB7CiAgICAgICAgICAgICBpZiAoY29uc3QgUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSA9IGxheWVyUHJvcGVydGllcy5iYWNraW5nU3Rv
cmUuZ2V0KCkpCi0gICAgICAgICAgICAgICAgZHVtcFByb3BlcnR5PFJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlPih0cywgImJhY2tpbmdTdG9yZSIsICpiYWNraW5nU3RvcmUpOworICAgICAgICAgICAg
ICAgIGR1bXBQcm9wZXJ0eTxjb25zdCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZSY+KHRzLCAiYmFj
a2luZ1N0b3JlIiwgKmJhY2tpbmdTdG9yZSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgZHVtcFByb3BlcnR5PFN0cmluZz4odHMsICJiYWNraW5nU3RvcmUiLCAicmVtb3ZlZCIp
OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1Jl
bW90ZUxheWVyVHJlZUhvc3QubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90
ZUxheWVyVHJlZUhvc3QubW0KaW5kZXggNWJjNzFhMS4uZThlZTI1OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQpAQCAtNTQs
NyArNTQsNyBAQCBSZW1vdGVMYXllclRyZWVIb3N0Ojp+UmVtb3RlTGF5ZXJUcmVlSG9zdCgpCiBi
b29sIFJlbW90ZUxheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVyVHJlZShjb25zdCBSZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGZsb2F0IGluZGljYXRvclNjYWxlRmFjdG9y
KQogewogICAgIGZvciAoY29uc3QgYXV0byYgY3JlYXRlZExheWVyIDogdHJhbnNhY3Rpb24uY3Jl
YXRlZExheWVycygpKSB7Ci0gICAgICAgIGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
OjpMYXllclByb3BlcnRpZXMqIHByb3BlcnRpZXMgPSB0cmFuc2FjdGlvbi5jaGFuZ2VkTGF5ZXJz
KCkuZ2V0KGNyZWF0ZWRMYXllci5sYXllcklEKTsKKyAgICAgICAgY29uc3QgUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllcyogcHJvcGVydGllcyA9IHRyYW5zYWN0aW9u
LmNoYW5nZWRMYXllclByb3BlcnRpZXMoKS5nZXQoY3JlYXRlZExheWVyLmxheWVySUQpOwogICAg
ICAgICBjcmVhdGVMYXllcihjcmVhdGVkTGF5ZXIsIHByb3BlcnRpZXMpOwogICAgIH0KIApAQCAt
NjUsNyArNjUsNyBAQCBib29sIFJlbW90ZUxheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVyVHJlZShj
b25zdCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbiYgdHJhbgogICAgICAgICByb290TGF5ZXJD
aGFuZ2VkID0gdHJ1ZTsKICAgICB9CiAKLSAgICBmb3IgKGF1dG8mIGNoYW5nZWRMYXllciA6IHRy
YW5zYWN0aW9uLmNoYW5nZWRMYXllcnMoKSkgeworICAgIGZvciAoYXV0byYgY2hhbmdlZExheWVy
IDogdHJhbnNhY3Rpb24uY2hhbmdlZExheWVyUHJvcGVydGllcygpKSB7CiAgICAgICAgIGF1dG8g
bGF5ZXJJRCA9IGNoYW5nZWRMYXllci5rZXk7CiAgICAgICAgIGNvbnN0IFJlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXMmIHByb3BlcnRpZXMgPSAqY2hhbmdlZExheWVy
LnZhbHVlOwogCkBAIC04MiwxMiArODIsMTEgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVIb3N0Ojp1
cGRhdGVMYXllclRyZWUoY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24mIHRyYW4KICAg
ICAgICAgICAgIHJlbGF0ZWRMYXllcnMuc2V0KHByb3BlcnRpZXMubWFza0xheWVySUQsIGdldExh
eWVyKHByb3BlcnRpZXMubWFza0xheWVySUQpKTsKIAogICAgICAgICBpZiAobV9pc0RlYnVnTGF5
ZXJUcmVlSG9zdCkgewotICAgICAgICAgICAgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246Okxh
eWVyUHJvcGVydGllcyBwcm9wZXJ0aWVzQ29weShwcm9wZXJ0aWVzKTsKLSAgICAgICAgICAgIHBy
b3BlcnRpZXNDb3B5Lm1hc2tzVG9Cb3VuZHMgPSBmYWxzZTsKLSAgICAgICAgICAgIGlmIChwcm9w
ZXJ0aWVzQ29weS5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
OjpCb3JkZXJXaWR0aENoYW5nZWQpCi0gICAgICAgICAgICAgICAgcHJvcGVydGllc0NvcHkuYm9y
ZGVyV2lkdGggKj0gMSAvIGluZGljYXRvclNjYWxlRmFjdG9yOwotICAgICAgICAgICAgCi0gICAg
ICAgICAgICBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXI6OmFwcGx5UHJvcGVydGllcyhs
YXllciwgcHJvcGVydGllc0NvcHksIHJlbGF0ZWRMYXllcnMpOworICAgICAgICAgICAgUmVtb3Rl
TGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyOjphcHBseVByb3BlcnRpZXMobGF5ZXIsIHByb3BlcnRp
ZXMsIHJlbGF0ZWRMYXllcnMpOworCisgICAgICAgICAgICBpZiAocHJvcGVydGllcy5jaGFuZ2Vk
UHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpCb3JkZXJXaWR0aENoYW5n
ZWQpCisgICAgICAgICAgICAgICAgYXNMYXllcihsYXllcikuYm9yZGVyV2lkdGggPSBwcm9wZXJ0
aWVzLmJvcmRlcldpZHRoIC8gaW5kaWNhdG9yU2NhbGVGYWN0b3I7CisgICAgICAgICAgICBhc0xh
eWVyKGxheWVyKS5tYXNrc1RvQm91bmRzID0gZmFsc2U7CiAgICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyOjphcHBseVByb3BlcnRpZXMobGF5
ZXIsIHByb3BlcnRpZXMsIHJlbGF0ZWRMYXllcnMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVy
UmVtb3RlLmNwcAppbmRleCA3NjU5NjY1Li41NDZkMmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGUuY3BwCkBAIC03MSw3ICs3MSw3IEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyUmVt
b3RlPiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmNyZWF0ZShjb25zdCBQbGF0Zm9ybUNBCiB7CiAg
ICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllclJlbW90ZT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgUGxh
dGZvcm1DQUxheWVyUmVtb3RlKG90aGVyLCBvd25lciwgY29udGV4dCkpOwogCi0gICAgY29udGV4
dC0+bGF5ZXJXYXNDcmVhdGVkKGxheWVyLmdldCgpLCBMYXllclR5cGVDdXN0b20pOworICAgIGNv
bnRleHQtPmxheWVyV2FzQ3JlYXRlZChsYXllci5nZXQoKSwgb3RoZXIubGF5ZXJUeXBlKCkpOwog
CiAgICAgcmV0dXJuIGxheWVyLnJlbGVhc2UoKTsKIH0KQEAgLTEyNSwxMiArMTI1LDExIEBAIHZv
aWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpyZWN1cnNpdmVCdWlsZFRyYW5zYWN0aW9uKFJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uCiAKICAgICAgICAgaWYgKG1fbGF5ZXJUeXBlID09IExheWVy
VHlwZUN1c3RvbSkgewogICAgICAgICAgICAgUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVy
OjphcHBseVByb3BlcnRpZXMocGxhdGZvcm1MYXllcigpLCBtX3Byb3BlcnRpZXMsIFJlbW90ZUxh
eWVyVHJlZVByb3BlcnR5QXBwbGllcjo6UmVsYXRlZExheWVyTWFwKCkpOwotICAgICAgICAgICAg
bV9wcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzID0gUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b246Ok5vQ2hhbmdlOworICAgICAgICAgICAgbV9wcm9wZXJ0aWVzLnJlc2V0Q2hhbmdlZFByb3Bl
cnRpZXMoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIHRyYW5z
YWN0aW9uLmxheWVyUHJvcGVydGllc0NoYW5nZWQodGhpcywgbV9wcm9wZXJ0aWVzKTsKLSAgICAg
ICAgbV9wcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzID0gUmVtb3RlTGF5ZXJUcmVlVHJhbnNh
Y3Rpb246Ok5vQ2hhbmdlOwogICAgIH0KIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9j
aGlsZHJlbi5zaXplKCk7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgKaW5kZXggYjcy
ODlmOS4uODZmZDkzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oCkBAIC0xNTEsNiArMTUx
LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB1aW50MzJfdCBob3N0aW5nQ29udGV4dElEKCk7
CiAKKyAgICBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzJiBwcm9w
ZXJ0aWVzKCkgeyByZXR1cm4gbV9wcm9wZXJ0aWVzOyB9CisKIHByb3RlY3RlZDoKICAgICBQbGF0
Zm9ybUNBTGF5ZXJSZW1vdGUoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUsIFdl
YkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIsIFJlbW90ZUxheWVyVHJlZUNvbnRl
eHQqIGNvbnRleHQpOwogICAgIFBsYXRmb3JtQ0FMYXllclJlbW90ZShjb25zdCBQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGUmLCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqLCBSZW1vdGVMYXll
clRyZWVDb250ZXh0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQppbmRl
eCBmNzgxNjk2Li4zNTI5ZjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEu
bW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2ltcG9ydCAiRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2Vz
LmgiCiAjaW1wb3J0ICJHcmFwaGljc0xheWVyQ0FSZW1vdGUuaCIKKyNpbXBvcnQgIlBsYXRmb3Jt
Q0FMYXllclJlbW90ZS5oIgogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5oIgogI2lt
cG9ydCAiUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmgiCiAjaW1wb3J0
ICJSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5oIgpAQCAtMzA0LDYgKzMwNSwxNyBAQCB2b2lk
IFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpsYXllckZsdXNoVGltZXJGaXJlZChXZWJDb3Jl
OjpUaW1lcjxSZW1vdGVMYXllcgogICAgIGZsdXNoTGF5ZXJzKCk7CiB9CiAKK3N0YXRpYyB2b2lk
IGZsdXNoQmFja2luZ1N0b3JlQ2hhbmdlc0luVHJhbnNhY3Rpb24oUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb24mIHRyYW5zYWN0aW9uKQoreworICAgIGZvciAoYXV0byYgbGF5ZXIgOiB0cmFuc2Fj
dGlvbi5jaGFuZ2VkTGF5ZXJzKCkpIHsKKyAgICAgICAgaWYgKCFsYXllci0+cHJvcGVydGllcygp
LmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkJhY2tpbmdT
dG9yZUNoYW5nZWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKFJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUgPSBsYXllci0+cHJvcGVydGllcygpLmJhY2tp
bmdTdG9yZS5nZXQoKSkKKyAgICAgICAgICAgIGJhY2tpbmdTdG9yZS0+Zmx1c2goKTsKKyAgICB9
Cit9CisKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJzKCkKIHsK
ICAgICBpZiAoIW1fcm9vdExheWVyKQpAQCAtMzM1LDggKzM0NywxNCBAQCB2b2lkIFJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhOjpmbHVzaExheWVycygpCiAgICAgICAgIHRvUmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3IobV93ZWJQYWdlLT5zY3JvbGxpbmdDb29yZGluYXRvcigpKS0+YnVpbGRU
cmFuc2FjdGlvbihzY3JvbGxpbmdUcmFuc2FjdGlvbik7CiAjZW5kaWYKIAorICAgIC8vIEZJWE1F
OiBNb3ZlIGZsdXNoaW5nIGJhY2tpbmcgc3RvcmUgYW5kIHNlbmRpbmcgQ29tbWl0TGF5ZXJUcmVl
IG9udG8gYSBiYWNrZ3JvdW5kIHRocmVhZC4KKyAgICBmbHVzaEJhY2tpbmdTdG9yZUNoYW5nZXNJ
blRyYW5zYWN0aW9uKGxheWVyVHJhbnNhY3Rpb24pOworCiAgICAgbV93YWl0aW5nRm9yQmFja2lu
Z1N0b3JlU3dhcCA9IHRydWU7CiAgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWUobGF5ZXJUcmFuc2FjdGlv
biwgc2Nyb2xsaW5nVHJhbnNhY3Rpb24pKTsKKworICAgIGZvciAoYXV0byYgbGF5ZXIgOiBsYXll
clRyYW5zYWN0aW9uLmNoYW5nZWRMYXllcnMoKSkKKyAgICAgICAgbGF5ZXItPnByb3BlcnRpZXMo
KS5yZXNldENoYW5nZWRQcm9wZXJ0aWVzKCk7CiB9CiAKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWE6OmRpZFVwZGF0ZSgpCg==
</data>
<flag name="review"
          id="252501"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>