<?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>74813</bug_id>
          
          <creation_ts>2011-12-18 10:41:54 -0800</creation_ts>
          <short_desc>Interacting with GMail message lists is sluggish.</short_desc>
          <delta_ts>2011-12-18 12:08:00 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tables</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>523489</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-12-18 10:41:54 -0800</bug_when>
    <thetext>When my system is under load, interacting with message lists on GMail (e.g the Inbox) gets pretty sluggish.

Instruments tells me we&apos;re spending most of the time below RenderStyle::colorIncludingFallback(). It appears that when calculating the overflowClipRect() for RenderTableCells, we compute the color for each border side, and then discard it. We should find a way to avoid this when we&apos;re only interested in layout metrics.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523496</commentid>
    <comment_count>1</comment_count>
      <attachid>119769</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-12-18 11:15:41 -0800</bug_when>
    <thetext>Created attachment 119769
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523500</commentid>
    <comment_count>2</comment_count>
      <attachid>119771</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-12-18 11:40:56 -0800</bug_when>
    <thetext>Created attachment 119771
Patch v2

Same patch + avoid computing the color property ID for before/after borders when we don&apos;t need it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523503</commentid>
    <comment_count>3</comment_count>
      <attachid>119771</attachid>
    <who name="">mitz</who>
    <bug_when>2011-12-18 11:45:48 -0800</bug_when>
    <thetext>Comment on attachment 119771
Patch v2

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

&gt; Source/WebCore/rendering/RenderTableCell.cpp:529
&gt; +    int beforeColorProperty = CSSProperty::resolveDirectionAwareProperty(CSSPropertyWebkitBorderBeforeColor, table-&gt;style()-&gt;direction(), table-&gt;style()-&gt;writingMode());
&gt; +    int afterColorProperty = CSSProperty::resolveDirectionAwareProperty(CSSPropertyWebkitBorderAfterColor, table-&gt;style()-&gt;direction(), table-&gt;style()-&gt;writingMode());

Do these still need to be resolved in the !computeColor case?

&gt; Source/WebCore/rendering/RenderTableCell.h:38
&gt; +enum EComputeBorderColor { IgnoreBorderColor, ComputeBorderColor };

Please don’t use this obsolete naming convention. A better definition would be
enum IncludeBorderColorOrNot { DoNotIncludeBorderColor, IncludeBorderColor };</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523508</commentid>
    <comment_count>4</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-12-18 12:08:00 -0800</bug_when>
    <thetext>Committed r103183: &lt;http://trac.webkit.org/changeset/103183&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119769</attachid>
            <date>2011-12-18 11:15:41 -0800</date>
            <delta_ts>2011-12-18 11:40:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74813.diff</filename>
            <type>text/plain</type>
            <size>30854</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhNmY2Mjc0Li40NmFiZDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDcg
QEAKIDIwMTEtMTItMTggIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgogCisgICAg
ICAgIEludGVyYWN0aW5nIHdpdGggR01haWwgbWVzc2FnZSBsaXN0cyBpcyBzbHVnZ2lzaC4KKyAg
ICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvNzQ4MTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGFuIGFyZ3VtZW50IHRvIGNvbGxhcHNlZCpC
b3JkZXIoKSB0byBjb250cm9sIHdoZXRoZXIgdGhlIGJvcmRlcgorICAgICAgICBjb2xvciBpcyBj
b21wdXRlZCBvciBub3QuIFRoaXMgYWxsb3dzIHVzIHRvIGF2b2lkIGV4cGVuc2l2ZSB3b3JrIHdo
ZW4KKyAgICAgICAgd2UncmUgb25seSBpbnRlcmVzdGVkIGluIHRoZSBtZXRyaWNzLgorCisgICAg
ICAgIFJlbmRlclN0eWxlOjp2aXNpdGVkRGVwZW5kZW50Q29sb3IoKSB3YXMgdmVyeSBob3QgKDQu
NSUpIHdoZW4gaGl0LXRlc3RpbmcKKyAgICAgICAgb24gR01haWwgYW5kIHRoaXMgcmVtb3ZlcyBp
dHMgdXNhZ2UgYWx0b2dldGhlci4KKyAgICAgICAgVGhpcyBzaG91bGQgYmUgYW4gaW1wcm92ZW1l
bnQgZm9yIHRhYmxlIHJlbmRlcmluZyBhcyB3ZWxsLCBzaW5jZSBpdCB3YXMKKyAgICAgICAgYWxs
IGhhcHBlbmluZyBiZWxvdyBSZW5kZXJCb3g6Om92ZXJmbG93Q2xpcFJlY3QoKS4KKworICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGFibGVDZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6Y29s
bGFwc2VkQmVmb3JlQm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6
Y29sbGFwc2VkQWZ0ZXJCb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDZWxs
Ojpjb2xsYXBzZWRMZWZ0Qm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2Vs
bDo6Y29sbGFwc2VkUmlnaHRCb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVD
ZWxsOjpjb2xsYXBzZWRUb3BCb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVD
ZWxsOjpjb2xsYXBzZWRCb3R0b21Cb3JkZXIpOgorCisgICAgICAgICAgICBBZGQgYW5kIHByb3Bh
Z2F0ZSBhIENvbXB1dGVCb3JkZXJDb2xvciAvIElnbm9yZUJvcmRlckNvbG9yIGFyZ3VtZW50Cisg
ICAgICAgICAgICB0aGF0IGRlY2lkZXMgd2hldGhlciB3ZSBjb21wdXRlIHRoZSBDb2xsYXBzZWRC
b3JkZXJWYWx1ZSdzIGNvbG9yLgorCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6
OmNvbGxhcHNlZFN0YXJ0Qm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2Vs
bDo6Y29sbGFwc2VkRW5kQm9yZGVyKToKKworICAgICAgICAgICAgUmVuYW1lZCBzdGFydCAmIGVu
ZCB0byBzdGFydENvbG9yUHJvcGVydHkgJiBlbmRDb2xvclByb3BlcnR5CisgICAgICAgICAgICBm
b3IgY2xhcml0eS4gQWxzbyBzYW1lIG1vZGlmaWNhdGlvbnMgYXMgdGhlIGFib3ZlIGZ1bmN0aW9u
cy4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDZWxsOjpib3JkZXJIYWxmU3RhcnQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDZWxsOjpib3JkZXJIYWxmRW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6Ym9yZGVySGFsZkJlZm9yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OmJvcmRlckhhbGZBZnRlcik6CisKKyAgICAg
ICAgICAgIFBhc3MgSWdub3JlQm9yZGVyQ29sb3IgdG8gY29sbGFwc2VkKkJvcmRlcigpIHNpbmNl
IHdlIG9ubHkgY2FyZQorICAgICAgICAgICAgYWJvdXQgdGhlIG1ldHJpY3MgaGVyZS4KKworMjAx
MS0xMi0xOCAgQW5kcmVhcyBLbGluZyAgPGtsaW5nQHdlYmtpdC5vcmc+CisKICAgICAgICAgSlND
L0hUTUxDb2xsZWN0aW9uOiBPcHRpbWl6ZSBjYW5HZXRJdGVtc0Zvck5hbWUoKS4KICAgICAgICAg
PGh0dHA6Ly93ZWJraXQub3JnL2IvNzQ4MDY+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlQ2VsbC5jcHAKaW5kZXggMjA0MWMxOS4uMWZhMTY5NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKQEAgLTM5MCwzMSArMzkwLDMx
IEBAIHN0YXRpYyBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBjaG9vc2VCb3JkZXIoY29uc3QgQ29sbGFw
c2VkQm9yZGVyVmFsdWUmIGJvcmRlcjEsIGNvCiAgICAgcmV0dXJuIGJvcmRlci5zdHlsZSgpID09
IEJISURERU4gPyBDb2xsYXBzZWRCb3JkZXJWYWx1ZSgpIDogYm9yZGVyOwogfQogCi1Db2xsYXBz
ZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNvbGxhcHNlZFN0YXJ0Qm9yZGVyKCkgY29u
c3QKK0NvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y29sbGFwc2VkU3RhcnRC
b3JkZXIoRUNvbXB1dGVCb3JkZXJDb2xvciBjb21wdXRlQ29sb3IpIGNvbnN0CiB7CiAgICAgUmVu
ZGVyVGFibGUqIHRhYmxlID0gdGhpcy0+dGFibGUoKTsKICAgICBib29sIGlzU3RhcnRDb2x1bW4g
PSBjb2woKSA9PSAwOwogCiAgICAgLy8gRm9yIHRoZSBzdGFydCBib3JkZXIsIHdlIG5lZWQgdG8g
Y2hlY2ssIGluIG9yZGVyIG9mIHByZWNlZGVuY2U6CiAgICAgLy8gKDEpIE91ciBzdGFydCBib3Jk
ZXIuCi0gICAgaW50IHN0YXJ0ID0gQ1NTUHJvcGVydHk6OnJlc29sdmVEaXJlY3Rpb25Bd2FyZVBy
b3BlcnR5KENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRDb2xvciwgdGFibGUtPnN0eWxlKCkt
PmRpcmVjdGlvbigpLCB0YWJsZS0+c3R5bGUoKS0+d3JpdGluZ01vZGUoKSk7Ci0gICAgaW50IGVu
ZCA9IENTU1Byb3BlcnR5OjpyZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlckVuZENvbG9yLCB0YWJsZS0+c3R5bGUoKS0+ZGlyZWN0aW9uKCksIHRhYmxl
LT5zdHlsZSgpLT53cml0aW5nTW9kZSgpKTsKLSAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSByZXN1
bHQoc3R5bGUoKS0+Ym9yZGVyU3RhcnQoKSwgc3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9y
KHN0YXJ0KSwgQkNFTEwpOworICAgIGludCBzdGFydENvbG9yUHJvcGVydHkgPSBjb21wdXRlQ29s
b3IgPyBDU1NQcm9wZXJ0eTo6cmVzb2x2ZURpcmVjdGlvbkF3YXJlUHJvcGVydHkoQ1NTUHJvcGVy
dHlXZWJraXRCb3JkZXJTdGFydENvbG9yLCB0YWJsZS0+c3R5bGUoKS0+ZGlyZWN0aW9uKCksIHRh
YmxlLT5zdHlsZSgpLT53cml0aW5nTW9kZSgpKSA6IDA7CisgICAgaW50IGVuZENvbG9yUHJvcGVy
dHkgPSBjb21wdXRlQ29sb3IgPyBDU1NQcm9wZXJ0eTo6cmVzb2x2ZURpcmVjdGlvbkF3YXJlUHJv
cGVydHkoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRDb2xvciwgdGFibGUtPnN0eWxlKCktPmRp
cmVjdGlvbigpLCB0YWJsZS0+c3R5bGUoKS0+d3JpdGluZ01vZGUoKSkgOiAwOworICAgIENvbGxh
cHNlZEJvcmRlclZhbHVlIHJlc3VsdChzdHlsZSgpLT5ib3JkZXJTdGFydCgpLCBjb21wdXRlQ29s
b3IgPyBzdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3Ioc3RhcnRDb2xvclByb3BlcnR5KSA6
IENvbG9yKCksIEJDRUxMKTsKIAogICAgIC8vICgyKSBUaGUgZW5kIGJvcmRlciBvZiB0aGUgcHJl
Y2VkaW5nIGNlbGwuCiAgICAgaWYgKFJlbmRlclRhYmxlQ2VsbCogcHJldkNlbGwgPSB0YWJsZS0+
Y2VsbEJlZm9yZSh0aGlzKSkgewotICAgICAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBwcmV2Q2Vs
bEJvcmRlciA9IENvbGxhcHNlZEJvcmRlclZhbHVlKHByZXZDZWxsLT5zdHlsZSgpLT5ib3JkZXJF
bmQoKSwgcHJldkNlbGwtPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihlbmQpLCBCQ0VM
TCk7CisgICAgICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIHByZXZDZWxsQm9yZGVyID0gQ29sbGFw
c2VkQm9yZGVyVmFsdWUocHJldkNlbGwtPnN0eWxlKCktPmJvcmRlckVuZCgpLCBjb21wdXRlQ29s
b3IgPyBwcmV2Q2VsbC0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGVuZENvbG9yUHJv
cGVydHkpIDogQ29sb3IoKSwgQkNFTEwpOwogICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIo
cHJldkNlbGxCb3JkZXIsIHJlc3VsdCk7CiAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQog
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9IGVsc2UgaWYgKGlzU3RhcnRDb2x1bW4p
IHsKICAgICAgICAgLy8gKDMpIE91ciByb3cncyBzdGFydCBib3JkZXIuCi0gICAgICAgIHJlc3Vs
dCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKHBhcmVudCgpLT5z
dHlsZSgpLT5ib3JkZXJTdGFydCgpLCBwYXJlbnQoKS0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVu
dENvbG9yKHN0YXJ0KSwgQlJPVykpOworICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVz
dWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShwYXJlbnQoKS0+c3R5bGUoKS0+Ym9yZGVyU3RhcnQo
KSwgY29tcHV0ZUNvbG9yID8gcGFyZW50KCktPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xv
cihzdGFydENvbG9yUHJvcGVydHkpIDogQ29sb3IoKSwgQlJPVykpOwogICAgICAgICBpZiAoIXJl
c3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIAogICAg
ICAgICAvLyAoNCkgT3VyIHJvdyBncm91cCdzIHN0YXJ0IGJvcmRlci4KLSAgICAgICAgcmVzdWx0
ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoc2VjdGlvbigpLT5z
dHlsZSgpLT5ib3JkZXJTdGFydCgpLCBzZWN0aW9uKCktPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRl
bnRDb2xvcihzdGFydCksIEJST1dHUk9VUCkpOworICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3Jk
ZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShzZWN0aW9uKCktPnN0eWxlKCktPmJvcmRl
clN0YXJ0KCksIGNvbXB1dGVDb2xvciA/IHNlY3Rpb24oKS0+c3R5bGUoKS0+dmlzaXRlZERlcGVu
ZGVudENvbG9yKHN0YXJ0Q29sb3JQcm9wZXJ0eSkgOiBDb2xvcigpLCBCUk9XR1JPVVApKTsKICAg
ICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0KQEAgLTQyNCwxMSArNDI0LDExIEBAIENvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRh
YmxlQ2VsbDo6Y29sbGFwc2VkU3RhcnRCb3JkZXIoKSBjb25zdAogICAgIGJvb2wgZW5kQ29sRWRn
ZTsKICAgICBSZW5kZXJUYWJsZUNvbCogY29sRWx0ID0gdGFibGUtPmNvbEVsZW1lbnQoY29sKCks
ICZzdGFydENvbEVkZ2UsICZlbmRDb2xFZGdlKTsKICAgICBpZiAoY29sRWx0ICYmIHN0YXJ0Q29s
RWRnZSkgewotICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRC
b3JkZXJWYWx1ZShjb2xFbHQtPnN0eWxlKCktPmJvcmRlclN0YXJ0KCksIGNvbEVsdC0+c3R5bGUo
KS0+dmlzaXRlZERlcGVuZGVudENvbG9yKHN0YXJ0KSwgQkNPTCkpOworICAgICAgICByZXN1bHQg
PSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShjb2xFbHQtPnN0eWxl
KCktPmJvcmRlclN0YXJ0KCksIGNvbXB1dGVDb2xvciA/IGNvbEVsdC0+c3R5bGUoKS0+dmlzaXRl
ZERlcGVuZGVudENvbG9yKHN0YXJ0Q29sb3JQcm9wZXJ0eSkgOiBDb2xvcigpLCBCQ09MKSk7CiAg
ICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICAgICAgaWYgKGNvbEVsdC0+cGFyZW50KCktPmlzVGFibGVDb2woKSAmJiAhY29sRWx0LT5w
cmV2aW91c1NpYmxpbmcoKSkgewotICAgICAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJl
c3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoY29sRWx0LT5wYXJlbnQoKS0+c3R5bGUoKS0+Ym9y
ZGVyU3RhcnQoKSwgY29sRWx0LT5wYXJlbnQoKS0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENv
bG9yKHN0YXJ0KSwgQkNPTEdST1VQKSk7CisgICAgICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3Jk
ZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShjb2xFbHQtPnBhcmVudCgpLT5zdHlsZSgp
LT5ib3JkZXJTdGFydCgpLCBjb21wdXRlQ29sb3IgPyBjb2xFbHQtPnBhcmVudCgpLT5zdHlsZSgp
LT52aXNpdGVkRGVwZW5kZW50Q29sb3Ioc3RhcnRDb2xvclByb3BlcnR5KSA6IENvbG9yKCksIEJD
T0xHUk9VUCkpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQpAQCAtNDM4LDE0ICs0MzgsMTQgQEAgQ29s
bGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjb2xsYXBzZWRTdGFydEJvcmRlcigp
IGNvbnN0CiAgICAgaWYgKCFpc1N0YXJ0Q29sdW1uKSB7CiAgICAgICAgIGNvbEVsdCA9IHRhYmxl
LT5jb2xFbGVtZW50KGNvbCgpIC0xLCAmc3RhcnRDb2xFZGdlLCAmZW5kQ29sRWRnZSk7CiAgICAg
ICAgIGlmIChjb2xFbHQgJiYgZW5kQ29sRWRnZSkgewotICAgICAgICAgICAgQ29sbGFwc2VkQm9y
ZGVyVmFsdWUgZW5kQm9yZGVyID0gQ29sbGFwc2VkQm9yZGVyVmFsdWUoY29sRWx0LT5zdHlsZSgp
LT5ib3JkZXJFbmQoKSwgY29sRWx0LT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoZW5k
KSwgQkNPTCk7CisgICAgICAgICAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBlbmRCb3JkZXIgPSBD
b2xsYXBzZWRCb3JkZXJWYWx1ZShjb2xFbHQtPnN0eWxlKCktPmJvcmRlckVuZCgpLCBjb21wdXRl
Q29sb3IgPyBjb2xFbHQtPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihlbmRDb2xvclBy
b3BlcnR5KSA6IENvbG9yKCksIEJDT0wpOwogICAgICAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9y
ZGVyKGVuZEJvcmRlciwgcmVzdWx0KTsKICAgICAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygp
KQogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAgICB9IGVsc2Ug
ewogICAgICAgICAvLyAoNykgVGhlIHRhYmxlJ3Mgc3RhcnQgYm9yZGVyLgotICAgICAgICByZXN1
bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSh0YWJsZS0+c3R5
bGUoKS0+Ym9yZGVyU3RhcnQoKSwgdGFibGUtPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xv
cihzdGFydCksIEJUQUJMRSkpOworICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0
LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSh0YWJsZS0+c3R5bGUoKS0+Ym9yZGVyU3RhcnQoKSwgY29t
cHV0ZUNvbG9yID8gdGFibGUtPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihzdGFydENv
bG9yUHJvcGVydHkpIDogQ29sb3IoKSwgQlRBQkxFKSk7CiAgICAgICAgIGlmICghcmVzdWx0LmV4
aXN0cygpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC00NTMsMzQgKzQ1
MywzNCBAQCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNvbGxhcHNlZFN0
YXJ0Qm9yZGVyKCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1Db2xsYXBzZWRCb3Jk
ZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNvbGxhcHNlZEVuZEJvcmRlcigpIGNvbnN0CitDb2xs
YXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNvbGxhcHNlZEVuZEJvcmRlcihFQ29t
cHV0ZUJvcmRlckNvbG9yIGNvbXB1dGVDb2xvcikgY29uc3QKIHsKICAgICBSZW5kZXJUYWJsZSog
dGFibGUgPSB0aGlzLT50YWJsZSgpOwogICAgIGJvb2wgaXNFbmRDb2x1bW4gPSB0YWJsZS0+Y29s
VG9FZmZDb2woY29sKCkgKyBjb2xTcGFuKCkgLSAxKSA9PSB0YWJsZS0+bnVtRWZmQ29scygpIC0g
MTsKIAogICAgIC8vIEZvciBlbmQgYm9yZGVyLCB3ZSBuZWVkIHRvIGNoZWNrLCBpbiBvcmRlciBv
ZiBwcmVjZWRlbmNlOgogICAgIC8vICgxKSBPdXIgZW5kIGJvcmRlci4KLSAgICBpbnQgc3RhcnQg
PSBDU1NQcm9wZXJ0eTo6cmVzb2x2ZURpcmVjdGlvbkF3YXJlUHJvcGVydHkoQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJTdGFydENvbG9yLCB0YWJsZS0+c3R5bGUoKS0+ZGlyZWN0aW9uKCksIHRhYmxl
LT5zdHlsZSgpLT53cml0aW5nTW9kZSgpKTsKLSAgICBpbnQgZW5kID0gQ1NTUHJvcGVydHk6OnJl
c29sdmVEaXJlY3Rpb25Bd2FyZVByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kQ29s
b3IsIHRhYmxlLT5zdHlsZSgpLT5kaXJlY3Rpb24oKSwgdGFibGUtPnN0eWxlKCktPndyaXRpbmdN
b2RlKCkpOwotICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIHJlc3VsdCA9IENvbGxhcHNlZEJvcmRl
clZhbHVlKHN0eWxlKCktPmJvcmRlckVuZCgpLCBzdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29s
b3IoZW5kKSwgQkNFTEwpOworICAgIGludCBzdGFydENvbG9yUHJvcGVydHkgPSBjb21wdXRlQ29s
b3IgPyBDU1NQcm9wZXJ0eTo6cmVzb2x2ZURpcmVjdGlvbkF3YXJlUHJvcGVydHkoQ1NTUHJvcGVy
dHlXZWJraXRCb3JkZXJTdGFydENvbG9yLCB0YWJsZS0+c3R5bGUoKS0+ZGlyZWN0aW9uKCksIHRh
YmxlLT5zdHlsZSgpLT53cml0aW5nTW9kZSgpKSA6IDA7CisgICAgaW50IGVuZENvbG9yUHJvcGVy
dHkgPSBjb21wdXRlQ29sb3IgPyBDU1NQcm9wZXJ0eTo6cmVzb2x2ZURpcmVjdGlvbkF3YXJlUHJv
cGVydHkoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRDb2xvciwgdGFibGUtPnN0eWxlKCktPmRp
cmVjdGlvbigpLCB0YWJsZS0+c3R5bGUoKS0+d3JpdGluZ01vZGUoKSkgOiAwOworICAgIENvbGxh
cHNlZEJvcmRlclZhbHVlIHJlc3VsdCA9IENvbGxhcHNlZEJvcmRlclZhbHVlKHN0eWxlKCktPmJv
cmRlckVuZCgpLCBjb21wdXRlQ29sb3IgPyBzdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3Io
ZW5kQ29sb3JQcm9wZXJ0eSkgOiBDb2xvcigpLCBCQ0VMTCk7CiAgICAgCiAgICAgLy8gKDIpIFRo
ZSBzdGFydCBib3JkZXIgb2YgdGhlIGZvbGxvd2luZyBjZWxsLgogICAgIGlmICghaXNFbmRDb2x1
bW4pIHsKICAgICAgICAgUmVuZGVyVGFibGVDZWxsKiBuZXh0Q2VsbCA9IHRhYmxlLT5jZWxsQWZ0
ZXIodGhpcyk7CiAgICAgICAgIGlmIChuZXh0Q2VsbCAmJiBuZXh0Q2VsbC0+c3R5bGUoKSkgewot
ICAgICAgICAgICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgc3RhcnRCb3JkZXIgPSBDb2xsYXBzZWRC
b3JkZXJWYWx1ZShuZXh0Q2VsbC0+c3R5bGUoKS0+Ym9yZGVyU3RhcnQoKSwgbmV4dENlbGwtPnN0
eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihzdGFydCksIEJDRUxMKTsKKyAgICAgICAgICAg
IENvbGxhcHNlZEJvcmRlclZhbHVlIHN0YXJ0Qm9yZGVyID0gQ29sbGFwc2VkQm9yZGVyVmFsdWUo
bmV4dENlbGwtPnN0eWxlKCktPmJvcmRlclN0YXJ0KCksIGNvbXB1dGVDb2xvciA/IG5leHRDZWxs
LT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3Ioc3RhcnRDb2xvclByb3BlcnR5KSA6IENv
bG9yKCksIEJDRUxMKTsKICAgICAgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQs
IHN0YXJ0Qm9yZGVyKTsKICAgICAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAg
ICAvLyAoMykgT3VyIHJvdydzIGVuZCBib3JkZXIuCi0gICAgICAgIHJlc3VsdCA9IGNob29zZUJv
cmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKHBhcmVudCgpLT5zdHlsZSgpLT5ib3Jk
ZXJFbmQoKSwgcGFyZW50KCktPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihlbmQpLCBC
Uk9XKSk7CisgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJv
cmRlclZhbHVlKHBhcmVudCgpLT5zdHlsZSgpLT5ib3JkZXJFbmQoKSwgY29tcHV0ZUNvbG9yID8g
cGFyZW50KCktPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihlbmRDb2xvclByb3BlcnR5
KSA6IENvbG9yKCksIEJST1cpKTsKICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAKICAgICAgICAgLy8gKDQpIE91ciByb3cg
Z3JvdXAncyBlbmQgYm9yZGVyLgotICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0
LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShzZWN0aW9uKCktPnN0eWxlKCktPmJvcmRlckVuZCgpLCBz
ZWN0aW9uKCktPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihlbmQpLCBCUk9XR1JPVVAp
KTsKKyAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVy
VmFsdWUoc2VjdGlvbigpLT5zdHlsZSgpLT5ib3JkZXJFbmQoKSwgY29tcHV0ZUNvbG9yID8gc2Vj
dGlvbigpLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoZW5kQ29sb3JQcm9wZXJ0eSkg
OiBDb2xvcigpLCBCUk9XR1JPVVApKTsKICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTQ5MCwxMSArNDkwLDExIEBAIENv
bGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y29sbGFwc2VkRW5kQm9yZGVyKCkg
Y29uc3QKICAgICBib29sIGVuZENvbEVkZ2U7CiAgICAgUmVuZGVyVGFibGVDb2wqIGNvbEVsdCA9
IHRhYmxlLT5jb2xFbGVtZW50KGNvbCgpICsgY29sU3BhbigpIC0gMSwgJnN0YXJ0Q29sRWRnZSwg
JmVuZENvbEVkZ2UpOwogICAgIGlmIChjb2xFbHQgJiYgZW5kQ29sRWRnZSkgewotICAgICAgICBy
ZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShjb2xFbHQt
PnN0eWxlKCktPmJvcmRlckVuZCgpLCBjb2xFbHQtPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRD
b2xvcihlbmQpLCBCQ09MKSk7CisgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQs
IENvbGxhcHNlZEJvcmRlclZhbHVlKGNvbEVsdC0+c3R5bGUoKS0+Ym9yZGVyRW5kKCksIGNvbXB1
dGVDb2xvciA/IGNvbEVsdC0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGVuZENvbG9y
UHJvcGVydHkpIDogQ29sb3IoKSwgQkNPTCkpOwogICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMo
KSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIGlmIChjb2xFbHQtPnBhcmVu
dCgpLT5pc1RhYmxlQ29sKCkgJiYgIWNvbEVsdC0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICAg
ICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoY29s
RWx0LT5wYXJlbnQoKS0+c3R5bGUoKS0+Ym9yZGVyRW5kKCksIGNvbEVsdC0+cGFyZW50KCktPnN0
eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihlbmQpLCBCQ09MR1JPVVApKTsKKyAgICAgICAg
ICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKGNv
bEVsdC0+cGFyZW50KCktPnN0eWxlKCktPmJvcmRlckVuZCgpLCBjb21wdXRlQ29sb3IgPyBjb2xF
bHQtPnBhcmVudCgpLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoZW5kQ29sb3JQcm9w
ZXJ0eSkgOiBDb2xvcigpLCBCQ09MR1JPVVApKTsKICAgICAgICAgICAgIGlmICghcmVzdWx0LmV4
aXN0cygpKQogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KQEAgLTUw
NCwxNCArNTA0LDE0IEBAIENvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y29s
bGFwc2VkRW5kQm9yZGVyKCkgY29uc3QKICAgICBpZiAoIWlzRW5kQ29sdW1uKSB7CiAgICAgICAg
IGNvbEVsdCA9IHRhYmxlLT5jb2xFbGVtZW50KGNvbCgpICsgY29sU3BhbigpLCAmc3RhcnRDb2xF
ZGdlLCAmZW5kQ29sRWRnZSk7CiAgICAgICAgIGlmIChjb2xFbHQgJiYgc3RhcnRDb2xFZGdlKSB7
Ci0gICAgICAgICAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBzdGFydEJvcmRlciA9IENvbGxhcHNl
ZEJvcmRlclZhbHVlKGNvbEVsdC0+c3R5bGUoKS0+Ym9yZGVyU3RhcnQoKSwgY29sRWx0LT5zdHls
ZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3Ioc3RhcnQpLCBCQ09MKTsKKyAgICAgICAgICAgIENv
bGxhcHNlZEJvcmRlclZhbHVlIHN0YXJ0Qm9yZGVyID0gQ29sbGFwc2VkQm9yZGVyVmFsdWUoY29s
RWx0LT5zdHlsZSgpLT5ib3JkZXJTdGFydCgpLCBjb21wdXRlQ29sb3IgPyBjb2xFbHQtPnN0eWxl
KCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihzdGFydENvbG9yUHJvcGVydHkpIDogQ29sb3IoKSwg
QkNPTCk7CiAgICAgICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBzdGFydEJv
cmRlcik7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gKDcp
IFRoZSB0YWJsZSdzIGVuZCBib3JkZXIuCi0gICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihy
ZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKHRhYmxlLT5zdHlsZSgpLT5ib3JkZXJFbmQoKSwg
dGFibGUtPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihlbmQpLCBCVEFCTEUpKTsKKyAg
ICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUo
dGFibGUtPnN0eWxlKCktPmJvcmRlckVuZCgpLCBjb21wdXRlQ29sb3IgPyB0YWJsZS0+c3R5bGUo
KS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGVuZENvbG9yUHJvcGVydHkpIDogQ29sb3IoKSwgQlRB
QkxFKSk7CiAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CkBAIC01MTksNyArNTE5LDcgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUg
UmVuZGVyVGFibGVDZWxsOjpjb2xsYXBzZWRFbmRCb3JkZXIoKSBjb25zdAogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLUNvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y29sbGFw
c2VkQmVmb3JlQm9yZGVyKCkgY29uc3QKK0NvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxl
Q2VsbDo6Y29sbGFwc2VkQmVmb3JlQm9yZGVyKEVDb21wdXRlQm9yZGVyQ29sb3IgY29tcHV0ZUNv
bG9yKSBjb25zdAogewogICAgIFJlbmRlclRhYmxlKiB0YWJsZSA9IHRoaXMtPnRhYmxlKCk7CiAK
QEAgLTUyNywxOCArNTI3LDE4IEBAIENvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2Vs
bDo6Y29sbGFwc2VkQmVmb3JlQm9yZGVyKCkgY29uc3QKICAgICAvLyAoMSkgT3VyIGJlZm9yZSBi
b3JkZXIuCiAgICAgaW50IGJlZm9yZSA9IENTU1Byb3BlcnR5OjpyZXNvbHZlRGlyZWN0aW9uQXdh
cmVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZUNvbG9yLCB0YWJsZS0+c3R5
bGUoKS0+ZGlyZWN0aW9uKCksIHRhYmxlLT5zdHlsZSgpLT53cml0aW5nTW9kZSgpKTsKICAgICBp
bnQgYWZ0ZXIgPSBDU1NQcm9wZXJ0eTo6cmVzb2x2ZURpcmVjdGlvbkF3YXJlUHJvcGVydHkoQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJBZnRlckNvbG9yLCB0YWJsZS0+c3R5bGUoKS0+ZGlyZWN0aW9u
KCksIHRhYmxlLT5zdHlsZSgpLT53cml0aW5nTW9kZSgpKTsKLSAgICBDb2xsYXBzZWRCb3JkZXJW
YWx1ZSByZXN1bHQgPSBDb2xsYXBzZWRCb3JkZXJWYWx1ZShzdHlsZSgpLT5ib3JkZXJCZWZvcmUo
KSwgc3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGJlZm9yZSksIEJDRUxMKTsKKyAgICBD
b2xsYXBzZWRCb3JkZXJWYWx1ZSByZXN1bHQgPSBDb2xsYXBzZWRCb3JkZXJWYWx1ZShzdHlsZSgp
LT5ib3JkZXJCZWZvcmUoKSwgY29tcHV0ZUNvbG9yID8gc3R5bGUoKS0+dmlzaXRlZERlcGVuZGVu
dENvbG9yKGJlZm9yZSkgOiBDb2xvcigpLCBCQ0VMTCk7CiAgICAgCiAgICAgUmVuZGVyVGFibGVD
ZWxsKiBwcmV2Q2VsbCA9IHRhYmxlLT5jZWxsQWJvdmUodGhpcyk7CiAgICAgaWYgKHByZXZDZWxs
KSB7CiAgICAgICAgIC8vICgyKSBBIGJlZm9yZSBjZWxsJ3MgYWZ0ZXIgYm9yZGVyLgotICAgICAg
ICByZXN1bHQgPSBjaG9vc2VCb3JkZXIoQ29sbGFwc2VkQm9yZGVyVmFsdWUocHJldkNlbGwtPnN0
eWxlKCktPmJvcmRlckFmdGVyKCksIHByZXZDZWxsLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50
Q29sb3IoYWZ0ZXIpLCBCQ0VMTCksIHJlc3VsdCk7CisgICAgICAgIHJlc3VsdCA9IGNob29zZUJv
cmRlcihDb2xsYXBzZWRCb3JkZXJWYWx1ZShwcmV2Q2VsbC0+c3R5bGUoKS0+Ym9yZGVyQWZ0ZXIo
KSwgY29tcHV0ZUNvbG9yID8gcHJldkNlbGwtPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xv
cihhZnRlcikgOiBDb2xvcigpLCBCQ0VMTCksIHJlc3VsdCk7CiAgICAgICAgIGlmICghcmVzdWx0
LmV4aXN0cygpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCiAgICAg
Ly8gKDMpIE91ciByb3cncyBiZWZvcmUgYm9yZGVyLgotICAgIHJlc3VsdCA9IGNob29zZUJvcmRl
cihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKHBhcmVudCgpLT5zdHlsZSgpLT5ib3JkZXJC
ZWZvcmUoKSwgcGFyZW50KCktPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihiZWZvcmUp
LCBCUk9XKSk7CisgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9y
ZGVyVmFsdWUocGFyZW50KCktPnN0eWxlKCktPmJvcmRlckJlZm9yZSgpLCBjb21wdXRlQ29sb3Ig
PyBwYXJlbnQoKS0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGJlZm9yZSkgOiBDb2xv
cigpLCBCUk9XKSk7CiAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgCkBAIC01NTEsNyArNTUxLDcgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVu
ZGVyVGFibGVDZWxsOjpjb2xsYXBzZWRCZWZvcmVCb3JkZXIoKSBjb25zdAogICAgICAgICAgICAg
cHJldlJvdyA9IHByZXZDZWxsLT5zZWN0aW9uKCktPmxhc3RDaGlsZCgpOwogICAgIAogICAgICAg
ICBpZiAocHJldlJvdykgewotICAgICAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKENvbGxh
cHNlZEJvcmRlclZhbHVlKHByZXZSb3ctPnN0eWxlKCktPmJvcmRlckFmdGVyKCksIHByZXZSb3ct
PnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihhZnRlciksIEJST1cpLCByZXN1bHQpOwor
ICAgICAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKENvbGxhcHNlZEJvcmRlclZhbHVlKHBy
ZXZSb3ctPnN0eWxlKCktPmJvcmRlckFmdGVyKCksIGNvbXB1dGVDb2xvciA/IHByZXZSb3ctPnN0
eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihhZnRlcikgOiBDb2xvcigpLCBCUk9XKSwgcmVz
dWx0KTsKICAgICAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KQEAgLTU2MSwxNCArNTYxLDE0IEBAIENvbGxhcHNl
ZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y29sbGFwc2VkQmVmb3JlQm9yZGVyKCkgY29u
c3QKICAgICBSZW5kZXJUYWJsZVNlY3Rpb24qIGN1cnJTZWN0aW9uID0gc2VjdGlvbigpOwogICAg
IGlmICghcm93KCkpIHsKICAgICAgICAgLy8gKDUpIE91ciByb3cgZ3JvdXAncyBiZWZvcmUgYm9y
ZGVyLgotICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3Jk
ZXJWYWx1ZShjdXJyU2VjdGlvbi0+c3R5bGUoKS0+Ym9yZGVyQmVmb3JlKCksIGN1cnJTZWN0aW9u
LT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoYmVmb3JlKSwgQlJPV0dST1VQKSk7Cisg
ICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVl
KGN1cnJTZWN0aW9uLT5zdHlsZSgpLT5ib3JkZXJCZWZvcmUoKSwgY29tcHV0ZUNvbG9yID8gY3Vy
clNlY3Rpb24tPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihiZWZvcmUpIDogQ29sb3Io
KSwgQlJPV0dST1VQKSk7CiAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgCiAgICAgICAgIC8vICg2KSBQcmV2aW91cyByb3cg
Z3JvdXAncyBhZnRlciBib3JkZXIuCiAgICAgICAgIGN1cnJTZWN0aW9uID0gdGFibGUtPnNlY3Rp
b25BYm92ZShjdXJyU2VjdGlvbik7CiAgICAgICAgIGlmIChjdXJyU2VjdGlvbikgewotICAgICAg
ICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKENvbGxhcHNlZEJvcmRlclZhbHVlKGN1cnJTZWN0
aW9uLT5zdHlsZSgpLT5ib3JkZXJBZnRlcigpLCBjdXJyU2VjdGlvbi0+c3R5bGUoKS0+dmlzaXRl
ZERlcGVuZGVudENvbG9yKGFmdGVyKSwgQlJPV0dST1VQKSwgcmVzdWx0KTsKKyAgICAgICAgICAg
IHJlc3VsdCA9IGNob29zZUJvcmRlcihDb2xsYXBzZWRCb3JkZXJWYWx1ZShjdXJyU2VjdGlvbi0+
c3R5bGUoKS0+Ym9yZGVyQWZ0ZXIoKSwgY29tcHV0ZUNvbG9yID8gY3VyclNlY3Rpb24tPnN0eWxl
KCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihhZnRlcikgOiBDb2xvcigpLCBCUk9XR1JPVVApLCBy
ZXN1bHQpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQpAQCAtNTc4LDE4ICs1NzgsMTggQEAgQ29sbGFw
c2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjb2xsYXBzZWRCZWZvcmVCb3JkZXIoKSBj
b25zdAogICAgICAgICAvLyAoOCkgT3VyIGNvbHVtbiBhbmQgY29sdW1uIGdyb3VwJ3MgYmVmb3Jl
IGJvcmRlcnMuCiAgICAgICAgIFJlbmRlclRhYmxlQ29sKiBjb2xFbHQgPSB0YWJsZS0+Y29sRWxl
bWVudChjb2woKSk7CiAgICAgICAgIGlmIChjb2xFbHQpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9
IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKGNvbEVsdC0+c3R5bGUo
KS0+Ym9yZGVyQmVmb3JlKCksIGNvbEVsdC0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9y
KGJlZm9yZSksIEJDT0wpKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1
bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKGNvbEVsdC0+c3R5bGUoKS0+Ym9yZGVyQmVmb3JlKCks
IGNvbXB1dGVDb2xvciA/IGNvbEVsdC0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGJl
Zm9yZSkgOiBDb2xvcigpLCBCQ09MKSk7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMo
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgaWYgKGNvbEVs
dC0+cGFyZW50KCktPmlzVGFibGVDb2woKSkgewotICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNo
b29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKGNvbEVsdC0+cGFyZW50KCkt
PnN0eWxlKCktPmJvcmRlckJlZm9yZSgpLCBjb2xFbHQtPnBhcmVudCgpLT5zdHlsZSgpLT52aXNp
dGVkRGVwZW5kZW50Q29sb3IoYmVmb3JlKSwgQkNPTEdST1VQKSk7CisgICAgICAgICAgICAgICAg
cmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoY29sRWx0
LT5wYXJlbnQoKS0+c3R5bGUoKS0+Ym9yZGVyQmVmb3JlKCksIGNvbXB1dGVDb2xvciA/IGNvbEVs
dC0+cGFyZW50KCktPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihiZWZvcmUpIDogQ29s
b3IoKSwgQkNPTEdST1VQKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkp
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vICg5KSBUaGUgdGFibGUncyBiZWZvcmUgYm9yZGVy
LgotICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJW
YWx1ZSh0YWJsZS0+c3R5bGUoKS0+Ym9yZGVyQmVmb3JlKCksIHRhYmxlLT5zdHlsZSgpLT52aXNp
dGVkRGVwZW5kZW50Q29sb3IoYmVmb3JlKSwgQlRBQkxFKSk7CisgICAgICAgIHJlc3VsdCA9IGNo
b29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKHRhYmxlLT5zdHlsZSgpLT5i
b3JkZXJCZWZvcmUoKSwgY29tcHV0ZUNvbG9yID8gdGFibGUtPnN0eWxlKCktPnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihiZWZvcmUpIDogQ29sb3IoKSwgQlRBQkxFKSk7CiAgICAgICAgIGlmICghcmVz
dWx0LmV4aXN0cygpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC01OTcs
NyArNTk3LDcgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjb2xsYXBz
ZWRCZWZvcmVCb3JkZXIoKSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUNvbGxhcHNl
ZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y29sbGFwc2VkQWZ0ZXJCb3JkZXIoKSBjb25z
dAorQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjb2xsYXBzZWRBZnRlckJv
cmRlcihFQ29tcHV0ZUJvcmRlckNvbG9yIGNvbXB1dGVDb2xvcikgY29uc3QKIHsKICAgICBSZW5k
ZXJUYWJsZSogdGFibGUgPSB0aGlzLT50YWJsZSgpOwogCkBAIC02MDUsMjQgKzYwNSwyNCBAQCBD
b2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNvbGxhcHNlZEFmdGVyQm9yZGVy
KCkgY29uc3QKICAgICAvLyAoMSkgT3VyIGFmdGVyIGJvcmRlci4KICAgICBpbnQgYmVmb3JlID0g
Q1NTUHJvcGVydHk6OnJlc29sdmVEaXJlY3Rpb25Bd2FyZVByb3BlcnR5KENTU1Byb3BlcnR5V2Vi
a2l0Qm9yZGVyQmVmb3JlQ29sb3IsIHRhYmxlLT5zdHlsZSgpLT5kaXJlY3Rpb24oKSwgdGFibGUt
PnN0eWxlKCktPndyaXRpbmdNb2RlKCkpOwogICAgIGludCBhZnRlciA9IENTU1Byb3BlcnR5Ojpy
ZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVy
Q29sb3IsIHRhYmxlLT5zdHlsZSgpLT5kaXJlY3Rpb24oKSwgdGFibGUtPnN0eWxlKCktPndyaXRp
bmdNb2RlKCkpOwotICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIHJlc3VsdCA9IENvbGxhcHNlZEJv
cmRlclZhbHVlKHN0eWxlKCktPmJvcmRlckFmdGVyKCksIHN0eWxlKCktPnZpc2l0ZWREZXBlbmRl
bnRDb2xvcihhZnRlciksIEJDRUxMKTsKKyAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSByZXN1bHQg
PSBDb2xsYXBzZWRCb3JkZXJWYWx1ZShzdHlsZSgpLT5ib3JkZXJBZnRlcigpLCBjb21wdXRlQ29s
b3IgPyBzdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoYWZ0ZXIpIDogQ29sb3IoKSwgQkNF
TEwpOwogICAgIAogICAgIFJlbmRlclRhYmxlQ2VsbCogbmV4dENlbGwgPSB0YWJsZS0+Y2VsbEJl
bG93KHRoaXMpOwogICAgIGlmIChuZXh0Q2VsbCkgewogICAgICAgICAvLyAoMikgQW4gYWZ0ZXIg
Y2VsbCdzIGJlZm9yZSBib3JkZXIuCi0gICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1
bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKG5leHRDZWxsLT5zdHlsZSgpLT5ib3JkZXJCZWZvcmUo
KSwgbmV4dENlbGwtPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihiZWZvcmUpLCBCQ0VM
TCkpOworICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3Jk
ZXJWYWx1ZShuZXh0Q2VsbC0+c3R5bGUoKS0+Ym9yZGVyQmVmb3JlKCksIGNvbXB1dGVDb2xvciA/
IG5leHRDZWxsLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoYmVmb3JlKSA6IENvbG9y
KCksIEJDRUxMKSk7CiAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCiAgICAgLy8gKDMpIE91ciByb3cncyBhZnRlciBi
b3JkZXIuIChGSVhNRTogRGVhbCB3aXRoIHJvd3NwYW4hKQotICAgIHJlc3VsdCA9IGNob29zZUJv
cmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKHBhcmVudCgpLT5zdHlsZSgpLT5ib3Jk
ZXJBZnRlcigpLCBwYXJlbnQoKS0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGFmdGVy
KSwgQlJPVykpOworICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJv
cmRlclZhbHVlKHBhcmVudCgpLT5zdHlsZSgpLT5ib3JkZXJBZnRlcigpLCBjb21wdXRlQ29sb3Ig
PyBwYXJlbnQoKS0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGFmdGVyKSA6IENvbG9y
KCksIEJST1cpKTsKICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICAKICAgICAvLyAoNCkgVGhlIG5leHQgcm93J3MgYmVmb3JlIGJvcmRlci4KICAg
ICBpZiAobmV4dENlbGwpIHsKLSAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwg
Q29sbGFwc2VkQm9yZGVyVmFsdWUobmV4dENlbGwtPnBhcmVudCgpLT5zdHlsZSgpLT5ib3JkZXJC
ZWZvcmUoKSwgbmV4dENlbGwtPnBhcmVudCgpLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29s
b3IoYmVmb3JlKSwgQlJPVykpOworICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0
LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShuZXh0Q2VsbC0+cGFyZW50KCktPnN0eWxlKCktPmJvcmRl
ckJlZm9yZSgpLCBjb21wdXRlQ29sb3IgPyBuZXh0Q2VsbC0+cGFyZW50KCktPnN0eWxlKCktPnZp
c2l0ZWREZXBlbmRlbnRDb2xvcihiZWZvcmUpIDogQ29sb3IoKSwgQlJPVykpOwogICAgICAgICBp
ZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpA
QCAtNjMxLDE0ICs2MzEsMTQgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxs
Ojpjb2xsYXBzZWRBZnRlckJvcmRlcigpIGNvbnN0CiAgICAgUmVuZGVyVGFibGVTZWN0aW9uKiBj
dXJyU2VjdGlvbiA9IHNlY3Rpb24oKTsKICAgICBpZiAocm93KCkgKyByb3dTcGFuKCkgPj0gY3Vy
clNlY3Rpb24tPm51bVJvd3MoKSkgewogICAgICAgICAvLyAoNSkgT3VyIHJvdyBncm91cCdzIGFm
dGVyIGJvcmRlci4KLSAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFw
c2VkQm9yZGVyVmFsdWUoY3VyclNlY3Rpb24tPnN0eWxlKCktPmJvcmRlckFmdGVyKCksIGN1cnJT
ZWN0aW9uLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoYWZ0ZXIpLCBCUk9XR1JPVVAp
KTsKKyAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVy
VmFsdWUoY3VyclNlY3Rpb24tPnN0eWxlKCktPmJvcmRlckFmdGVyKCksIGNvbXB1dGVDb2xvciA/
IGN1cnJTZWN0aW9uLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoYWZ0ZXIpIDogQ29s
b3IoKSwgQlJPV0dST1VQKSk7CiAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgCiAgICAgICAgIC8vICg2KSBGb2xsb3dpbmcg
cm93IGdyb3VwJ3MgYmVmb3JlIGJvcmRlci4KICAgICAgICAgY3VyclNlY3Rpb24gPSB0YWJsZS0+
c2VjdGlvbkJlbG93KGN1cnJTZWN0aW9uKTsKICAgICAgICAgaWYgKGN1cnJTZWN0aW9uKSB7Ci0g
ICAgICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJW
YWx1ZShjdXJyU2VjdGlvbi0+c3R5bGUoKS0+Ym9yZGVyQmVmb3JlKCksIGN1cnJTZWN0aW9uLT5z
dHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoYmVmb3JlKSwgQlJPV0dST1VQKSk7CisgICAg
ICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1
ZShjdXJyU2VjdGlvbi0+c3R5bGUoKS0+Ym9yZGVyQmVmb3JlKCksIGNvbXB1dGVDb2xvciA/IGN1
cnJTZWN0aW9uLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoYmVmb3JlKSA6IENvbG9y
KCksIEJST1dHUk9VUCkpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQpAQCAtNjQ4LDE3ICs2NDgsMTcg
QEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjb2xsYXBzZWRBZnRlckJv
cmRlcigpIGNvbnN0CiAgICAgICAgIC8vICg4KSBPdXIgY29sdW1uIGFuZCBjb2x1bW4gZ3JvdXAn
cyBhZnRlciBib3JkZXJzLgogICAgICAgICBSZW5kZXJUYWJsZUNvbCogY29sRWx0ID0gdGFibGUt
PmNvbEVsZW1lbnQoY29sKCkpOwogICAgICAgICBpZiAoY29sRWx0KSB7Ci0gICAgICAgICAgICBy
ZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShjb2xFbHQt
PnN0eWxlKCktPmJvcmRlckFmdGVyKCksIGNvbEVsdC0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVu
dENvbG9yKGFmdGVyKSwgQkNPTCkpOworICAgICAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVy
KHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoY29sRWx0LT5zdHlsZSgpLT5ib3JkZXJBZnRl
cigpLCBjb21wdXRlQ29sb3IgPyBjb2xFbHQtPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xv
cihhZnRlcikgOiBDb2xvcigpLCBCQ09MKSk7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5leGlz
dHMoKSkgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIGlmIChjb2xFbHQtPnBhcmVudCgpLT5p
c1RhYmxlQ29sKCkpIHsKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVz
dWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShjb2xFbHQtPnBhcmVudCgpLT5zdHlsZSgpLT5ib3Jk
ZXJBZnRlcigpLCBjb2xFbHQtPnBhcmVudCgpLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29s
b3IoYWZ0ZXIpLCBCQ09MR1JPVVApKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBjaG9vc2VC
b3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShjb2xFbHQtPnBhcmVudCgpLT5zdHls
ZSgpLT5ib3JkZXJBZnRlcigpLCBjb21wdXRlQ29sb3IgPyBjb2xFbHQtPnBhcmVudCgpLT5zdHls
ZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoYWZ0ZXIpIDogQ29sb3IoKSwgQkNPTEdST1VQKSk7
CiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIC8vICg5KSBUaGUgdGFibGUncyBhZnRlciBib3JkZXIuCi0gICAgICAgIHJlc3VsdCA9
IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKHRhYmxlLT5zdHlsZSgp
LT5ib3JkZXJBZnRlcigpLCB0YWJsZS0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGFm
dGVyKSwgQlRBQkxFKSk7CisgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENv
bGxhcHNlZEJvcmRlclZhbHVlKHRhYmxlLT5zdHlsZSgpLT5ib3JkZXJBZnRlcigpLCBjb21wdXRl
Q29sb3IgPyB0YWJsZS0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGFmdGVyKSA6IENv
bG9yKCksIEJUQUJMRSkpOwogICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtNjY2LDM2ICs2NjYsMzYgQEAgQ29sbGFwc2Vk
Qm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjb2xsYXBzZWRBZnRlckJvcmRlcigpIGNvbnN0
CiAgICAgcmV0dXJuIHJlc3VsdDsgICAgCiB9CiAKLUNvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRl
clRhYmxlQ2VsbDo6Y29sbGFwc2VkTGVmdEJvcmRlcigpIGNvbnN0CitDb2xsYXBzZWRCb3JkZXJW
YWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNvbGxhcHNlZExlZnRCb3JkZXIoRUNvbXB1dGVCb3JkZXJD
b2xvciBjb21wdXRlQ29sb3IpIGNvbnN0CiB7CiAgICAgUmVuZGVyU3R5bGUqIHRhYmxlU3R5bGUg
PSB0YWJsZSgpLT5zdHlsZSgpOwogICAgIGlmICh0YWJsZVN0eWxlLT5pc0hvcml6b250YWxXcml0
aW5nTW9kZSgpKQotICAgICAgICByZXR1cm4gdGFibGVTdHlsZS0+aXNMZWZ0VG9SaWdodERpcmVj
dGlvbigpID8gY29sbGFwc2VkU3RhcnRCb3JkZXIoKSA6IGNvbGxhcHNlZEVuZEJvcmRlcigpOwot
ICAgIHJldHVybiB0YWJsZVN0eWxlLT5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpID8gY29s
bGFwc2VkQWZ0ZXJCb3JkZXIoKSA6IGNvbGxhcHNlZEJlZm9yZUJvcmRlcigpOworICAgICAgICBy
ZXR1cm4gdGFibGVTdHlsZS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gY29sbGFwc2VkU3Rh
cnRCb3JkZXIoY29tcHV0ZUNvbG9yKSA6IGNvbGxhcHNlZEVuZEJvcmRlcihjb21wdXRlQ29sb3Ip
OworICAgIHJldHVybiB0YWJsZVN0eWxlLT5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpID8g
Y29sbGFwc2VkQWZ0ZXJCb3JkZXIoY29tcHV0ZUNvbG9yKSA6IGNvbGxhcHNlZEJlZm9yZUJvcmRl
cihjb21wdXRlQ29sb3IpOwogfQogCi1Db2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNl
bGw6OmNvbGxhcHNlZFJpZ2h0Qm9yZGVyKCkgY29uc3QKK0NvbGxhcHNlZEJvcmRlclZhbHVlIFJl
bmRlclRhYmxlQ2VsbDo6Y29sbGFwc2VkUmlnaHRCb3JkZXIoRUNvbXB1dGVCb3JkZXJDb2xvciBj
b21wdXRlQ29sb3IpIGNvbnN0CiB7CiAgICAgUmVuZGVyU3R5bGUqIHRhYmxlU3R5bGUgPSB0YWJs
ZSgpLT5zdHlsZSgpOwogICAgIGlmICh0YWJsZVN0eWxlLT5pc0hvcml6b250YWxXcml0aW5nTW9k
ZSgpKQotICAgICAgICByZXR1cm4gdGFibGVTdHlsZS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigp
ID8gY29sbGFwc2VkRW5kQm9yZGVyKCkgOiBjb2xsYXBzZWRTdGFydEJvcmRlcigpOwotICAgIHJl
dHVybiB0YWJsZVN0eWxlLT5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpID8gY29sbGFwc2Vk
QmVmb3JlQm9yZGVyKCkgOiBjb2xsYXBzZWRBZnRlckJvcmRlcigpOworICAgICAgICByZXR1cm4g
dGFibGVTdHlsZS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gY29sbGFwc2VkRW5kQm9yZGVy
KGNvbXB1dGVDb2xvcikgOiBjb2xsYXBzZWRTdGFydEJvcmRlcihjb21wdXRlQ29sb3IpOworICAg
IHJldHVybiB0YWJsZVN0eWxlLT5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpID8gY29sbGFw
c2VkQmVmb3JlQm9yZGVyKGNvbXB1dGVDb2xvcikgOiBjb2xsYXBzZWRBZnRlckJvcmRlcihjb21w
dXRlQ29sb3IpOwogfQogCi1Db2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNv
bGxhcHNlZFRvcEJvcmRlcigpIGNvbnN0CitDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJs
ZUNlbGw6OmNvbGxhcHNlZFRvcEJvcmRlcihFQ29tcHV0ZUJvcmRlckNvbG9yIGNvbXB1dGVDb2xv
cikgY29uc3QKIHsKICAgICBSZW5kZXJTdHlsZSogdGFibGVTdHlsZSA9IHRhYmxlKCktPnN0eWxl
KCk7CiAgICAgaWYgKHRhYmxlU3R5bGUtPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCi0gICAg
ICAgIHJldHVybiB0YWJsZVN0eWxlLT5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpID8gY29s
bGFwc2VkQWZ0ZXJCb3JkZXIoKSA6IGNvbGxhcHNlZEJlZm9yZUJvcmRlcigpOwotICAgIHJldHVy
biB0YWJsZVN0eWxlLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBjb2xsYXBzZWRTdGFydEJv
cmRlcigpIDogY29sbGFwc2VkRW5kQm9yZGVyKCk7CisgICAgICAgIHJldHVybiB0YWJsZVN0eWxl
LT5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpID8gY29sbGFwc2VkQWZ0ZXJCb3JkZXIoY29t
cHV0ZUNvbG9yKSA6IGNvbGxhcHNlZEJlZm9yZUJvcmRlcihjb21wdXRlQ29sb3IpOworICAgIHJl
dHVybiB0YWJsZVN0eWxlLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBjb2xsYXBzZWRTdGFy
dEJvcmRlcihjb21wdXRlQ29sb3IpIDogY29sbGFwc2VkRW5kQm9yZGVyKGNvbXB1dGVDb2xvcik7
CiB9CiAKLUNvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y29sbGFwc2VkQm90
dG9tQm9yZGVyKCkgY29uc3QKK0NvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6
Y29sbGFwc2VkQm90dG9tQm9yZGVyKEVDb21wdXRlQm9yZGVyQ29sb3IgY29tcHV0ZUNvbG9yKSBj
b25zdAogewogICAgIFJlbmRlclN0eWxlKiB0YWJsZVN0eWxlID0gdGFibGUoKS0+c3R5bGUoKTsK
ICAgICBpZiAodGFibGVTdHlsZS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKLSAgICAgICAg
cmV0dXJuIHRhYmxlU3R5bGUtPmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkgPyBjb2xsYXBz
ZWRCZWZvcmVCb3JkZXIoKSA6IGNvbGxhcHNlZEFmdGVyQm9yZGVyKCk7Ci0gICAgcmV0dXJuIHRh
YmxlU3R5bGUtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IGNvbGxhcHNlZEVuZEJvcmRlcigp
IDogY29sbGFwc2VkU3RhcnRCb3JkZXIoKTsKKyAgICAgICAgcmV0dXJuIHRhYmxlU3R5bGUtPmlz
RmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkgPyBjb2xsYXBzZWRCZWZvcmVCb3JkZXIoY29tcHV0
ZUNvbG9yKSA6IGNvbGxhcHNlZEFmdGVyQm9yZGVyKGNvbXB1dGVDb2xvcik7CisgICAgcmV0dXJu
IHRhYmxlU3R5bGUtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IGNvbGxhcHNlZEVuZEJvcmRl
cihjb21wdXRlQ29sb3IpIDogY29sbGFwc2VkU3RhcnRCb3JkZXIoY29tcHV0ZUNvbG9yKTsKIH0K
IAogTGF5b3V0VW5pdCBSZW5kZXJUYWJsZUNlbGw6OmJvcmRlckxlZnQoKSBjb25zdApAQCAtNzc0
LDcgKzc3NCw3IEBAIExheW91dFVuaXQgUmVuZGVyVGFibGVDZWxsOjpib3JkZXJIYWxmQm90dG9t
KGJvb2wgb3V0ZXIpIGNvbnN0CiAKIExheW91dFVuaXQgUmVuZGVyVGFibGVDZWxsOjpib3JkZXJI
YWxmU3RhcnQoYm9vbCBvdXRlcikgY29uc3QKIHsKLSAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBi
b3JkZXIgPSBjb2xsYXBzZWRTdGFydEJvcmRlcigpOworICAgIENvbGxhcHNlZEJvcmRlclZhbHVl
IGJvcmRlciA9IGNvbGxhcHNlZFN0YXJ0Qm9yZGVyKElnbm9yZUJvcmRlckNvbG9yKTsKICAgICBp
ZiAoYm9yZGVyLmV4aXN0cygpKQogICAgICAgICByZXR1cm4gKGJvcmRlci53aWR0aCgpICsgKCh0
YWJsZSgpLT5zdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgXiBvdXRlcikgPyAxIDog
MCkpIC8gMjsgLy8gR2l2ZSB0aGUgZXh0cmEgcGl4ZWwgdG8gdG9wIGFuZCBsZWZ0LgogICAgIHJl
dHVybiAwOwpAQCAtNzgyLDcgKzc4Miw3IEBAIExheW91dFVuaXQgUmVuZGVyVGFibGVDZWxsOjpi
b3JkZXJIYWxmU3RhcnQoYm9vbCBvdXRlcikgY29uc3QKICAgICAKIExheW91dFVuaXQgUmVuZGVy
VGFibGVDZWxsOjpib3JkZXJIYWxmRW5kKGJvb2wgb3V0ZXIpIGNvbnN0CiB7Ci0gICAgQ29sbGFw
c2VkQm9yZGVyVmFsdWUgYm9yZGVyID0gY29sbGFwc2VkRW5kQm9yZGVyKCk7CisgICAgQ29sbGFw
c2VkQm9yZGVyVmFsdWUgYm9yZGVyID0gY29sbGFwc2VkRW5kQm9yZGVyKElnbm9yZUJvcmRlckNv
bG9yKTsKICAgICBpZiAoYm9yZGVyLmV4aXN0cygpKQogICAgICAgICByZXR1cm4gKGJvcmRlci53
aWR0aCgpICsgKCh0YWJsZSgpLT5zdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgXiBv
dXRlcikgPyAwIDogMSkpIC8gMjsKICAgICByZXR1cm4gMDsKQEAgLTc5MCw3ICs3OTAsNyBAQCBM
YXlvdXRVbml0IFJlbmRlclRhYmxlQ2VsbDo6Ym9yZGVySGFsZkVuZChib29sIG91dGVyKSBjb25z
dAogCiBMYXlvdXRVbml0IFJlbmRlclRhYmxlQ2VsbDo6Ym9yZGVySGFsZkJlZm9yZShib29sIG91
dGVyKSBjb25zdAogewotICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIGJvcmRlciA9IGNvbGxhcHNl
ZEJlZm9yZUJvcmRlcigpOworICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIGJvcmRlciA9IGNvbGxh
cHNlZEJlZm9yZUJvcmRlcihJZ25vcmVCb3JkZXJDb2xvcik7CiAgICAgaWYgKGJvcmRlci5leGlz
dHMoKSkKICAgICAgICAgcmV0dXJuIChib3JkZXIud2lkdGgoKSArICgodGFibGUoKS0+c3R5bGUo
KS0+aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSBeIG91dGVyKSA/IDAgOiAxKSkgLyAyOyAv
LyBHaXZlIHRoZSBleHRyYSBwaXhlbCB0byB0b3AgYW5kIGxlZnQuCiAgICAgcmV0dXJuIDA7CkBA
IC03OTgsNyArNzk4LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJUYWJsZUNlbGw6OmJvcmRlckhhbGZC
ZWZvcmUoYm9vbCBvdXRlcikgY29uc3QKIAogTGF5b3V0VW5pdCBSZW5kZXJUYWJsZUNlbGw6OmJv
cmRlckhhbGZBZnRlcihib29sIG91dGVyKSBjb25zdAogewotICAgIENvbGxhcHNlZEJvcmRlclZh
bHVlIGJvcmRlciA9IGNvbGxhcHNlZEFmdGVyQm9yZGVyKCk7CisgICAgQ29sbGFwc2VkQm9yZGVy
VmFsdWUgYm9yZGVyID0gY29sbGFwc2VkQWZ0ZXJCb3JkZXIoSWdub3JlQm9yZGVyQ29sb3IpOwog
ICAgIGlmIChib3JkZXIuZXhpc3RzKCkpCiAgICAgICAgIHJldHVybiAoYm9yZGVyLndpZHRoKCkg
KyAoKHRhYmxlKCktPnN0eWxlKCktPmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkgXiBvdXRl
cikgPyAxIDogMCkpIC8gMjsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZUNlbGwuaAppbmRleCBlYTk3N2MxLi5jM2JiZmM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCkBAIC0zNSw2ICszNSw4IEBAIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBtYXhDb2x1bW5JbmRleCA9IDB4N0ZGRkZGRkU7IC8vIDIsMTQ3LDQ4
Myw2NDYKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB1bnNldFJvd0luZGV4ID0gMHg3RkZGRkZGRjsK
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhSb3dJbmRleCA9IDB4N0ZGRkZGRkU7IC8vIDIsMTQ3
LDQ4Myw2NDYKIAorZW51bSBFQ29tcHV0ZUJvcmRlckNvbG9yIHsgSWdub3JlQm9yZGVyQ29sb3Is
IENvbXB1dGVCb3JkZXJDb2xvciB9OworCiBjbGFzcyBSZW5kZXJUYWJsZUNlbGwgOiBwdWJsaWMg
UmVuZGVyQmxvY2sgewogcHVibGljOgogICAgIGV4cGxpY2l0IFJlbmRlclRhYmxlQ2VsbChOb2Rl
Kik7CkBAIC0xMDYsMTUgKzEwOCwxNSBAQCBwdWJsaWM6CiAgICAgTGF5b3V0VW5pdCBib3JkZXJI
YWxmQmVmb3JlKGJvb2wgb3V0ZXIpIGNvbnN0OwogICAgIExheW91dFVuaXQgYm9yZGVySGFsZkFm
dGVyKGJvb2wgb3V0ZXIpIGNvbnN0OwogCi0gICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgY29sbGFw
c2VkU3RhcnRCb3JkZXIoKSBjb25zdDsKLSAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBjb2xsYXBz
ZWRFbmRCb3JkZXIoKSBjb25zdDsKLSAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBjb2xsYXBzZWRC
ZWZvcmVCb3JkZXIoKSBjb25zdDsKLSAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBjb2xsYXBzZWRB
ZnRlckJvcmRlcigpIGNvbnN0OworICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIGNvbGxhcHNlZFN0
YXJ0Qm9yZGVyKEVDb21wdXRlQm9yZGVyQ29sb3IgPSBDb21wdXRlQm9yZGVyQ29sb3IpIGNvbnN0
OworICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIGNvbGxhcHNlZEVuZEJvcmRlcihFQ29tcHV0ZUJv
cmRlckNvbG9yID0gQ29tcHV0ZUJvcmRlckNvbG9yKSBjb25zdDsKKyAgICBDb2xsYXBzZWRCb3Jk
ZXJWYWx1ZSBjb2xsYXBzZWRCZWZvcmVCb3JkZXIoRUNvbXB1dGVCb3JkZXJDb2xvciA9IENvbXB1
dGVCb3JkZXJDb2xvcikgY29uc3Q7CisgICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgY29sbGFwc2Vk
QWZ0ZXJCb3JkZXIoRUNvbXB1dGVCb3JkZXJDb2xvciA9IENvbXB1dGVCb3JkZXJDb2xvcikgY29u
c3Q7CiAKLSAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBjb2xsYXBzZWRMZWZ0Qm9yZGVyKCkgY29u
c3Q7Ci0gICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgY29sbGFwc2VkUmlnaHRCb3JkZXIoKSBjb25z
dDsKLSAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBjb2xsYXBzZWRUb3BCb3JkZXIoKSBjb25zdDsK
LSAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBjb2xsYXBzZWRCb3R0b21Cb3JkZXIoKSBjb25zdDsK
KyAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBjb2xsYXBzZWRMZWZ0Qm9yZGVyKEVDb21wdXRlQm9y
ZGVyQ29sb3IgPSBDb21wdXRlQm9yZGVyQ29sb3IpIGNvbnN0OworICAgIENvbGxhcHNlZEJvcmRl
clZhbHVlIGNvbGxhcHNlZFJpZ2h0Qm9yZGVyKEVDb21wdXRlQm9yZGVyQ29sb3IgPSBDb21wdXRl
Qm9yZGVyQ29sb3IpIGNvbnN0OworICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIGNvbGxhcHNlZFRv
cEJvcmRlcihFQ29tcHV0ZUJvcmRlckNvbG9yID0gQ29tcHV0ZUJvcmRlckNvbG9yKSBjb25zdDsK
KyAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBjb2xsYXBzZWRCb3R0b21Cb3JkZXIoRUNvbXB1dGVC
b3JkZXJDb2xvciA9IENvbXB1dGVCb3JkZXJDb2xvcikgY29uc3Q7CiAKICAgICB2b2lkIGNvbGxl
Y3RCb3JkZXJWYWx1ZXMoUmVuZGVyVGFibGU6OkNvbGxhcHNlZEJvcmRlclZhbHVlcyYpIGNvbnN0
OwogICAgIHN0YXRpYyB2b2lkIHNvcnRCb3JkZXJWYWx1ZXMoUmVuZGVyVGFibGU6OkNvbGxhcHNl
ZEJvcmRlclZhbHVlcyYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119771</attachid>
            <date>2011-12-18 11:40:56 -0800</date>
            <delta_ts>2011-12-18 11:45:48 -0800</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-74813-v2.diff</filename>
            <type>text/plain</type>
            <size>31926</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhNmY2Mjc0Li5mM2QwNTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNTEg
QEAKIDIwMTEtMTItMTggIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgogCisgICAg
ICAgIEludGVyYWN0aW5nIHdpdGggR01haWwgbWVzc2FnZSBsaXN0cyBpcyBzbHVnZ2lzaC4KKyAg
ICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvNzQ4MTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGFuIGFyZ3VtZW50IHRvIGNvbGxhcHNlZCpC
b3JkZXIoKSB0byBjb250cm9sIHdoZXRoZXIgdGhlIGJvcmRlcgorICAgICAgICBjb2xvciBpcyBj
b21wdXRlZCBvciBub3QuIFRoaXMgYWxsb3dzIHVzIHRvIGF2b2lkIGV4cGVuc2l2ZSB3b3JrIHdo
ZW4KKyAgICAgICAgd2UncmUgb25seSBpbnRlcmVzdGVkIGluIHRoZSBtZXRyaWNzLgorCisgICAg
ICAgIFJlbmRlclN0eWxlOjp2aXNpdGVkRGVwZW5kZW50Q29sb3IoKSB3YXMgdmVyeSBob3QgKDQu
NSUpIHdoZW4gaGl0LXRlc3RpbmcKKyAgICAgICAgb24gR01haWwgYW5kIHRoaXMgcmVtb3ZlcyBp
dHMgdXNhZ2UgYWx0b2dldGhlci4KKyAgICAgICAgVGhpcyBzaG91bGQgYmUgYW4gaW1wcm92ZW1l
bnQgZm9yIHRhYmxlIHJlbmRlcmluZyBhcyB3ZWxsLCBzaW5jZSBpdCB3YXMKKyAgICAgICAgYWxs
IGhhcHBlbmluZyBiZWxvdyBSZW5kZXJCb3g6Om92ZXJmbG93Q2xpcFJlY3QoKS4KKworICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGFibGVDZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6Y29s
bGFwc2VkTGVmdEJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OmNv
bGxhcHNlZFJpZ2h0Qm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6
Y29sbGFwc2VkVG9wQm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6
Y29sbGFwc2VkQm90dG9tQm9yZGVyKToKKworICAgICAgICAgICAgQWRkIGFuZCBwcm9wYWdhdGUg
YSBDb21wdXRlQm9yZGVyQ29sb3IgLyBJZ25vcmVCb3JkZXJDb2xvciBhcmd1bWVudAorICAgICAg
ICAgICAgdGhhdCBkZWNpZGVzIHdoZXRoZXIgd2UgY29tcHV0ZSB0aGUgQ29sbGFwc2VkQm9yZGVy
VmFsdWUncyBjb2xvci4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDZWxsOjpjb2xs
YXBzZWRTdGFydEJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OmNv
bGxhcHNlZEVuZEJvcmRlcik6CisKKyAgICAgICAgICAgIFJlbmFtZWQgc3RhcnQgJiBlbmQgdG8g
c3RhcnRDb2xvclByb3BlcnR5ICYgZW5kQ29sb3JQcm9wZXJ0eQorICAgICAgICAgICAgZm9yIGNs
YXJpdHkuIEFsc28gc2FtZSBtb2RpZmljYXRpb25zIGFzIHRoZSBhYm92ZSBmdW5jdGlvbnMuCisK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6Y29sbGFwc2VkQmVmb3JlQm9yZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6Y29sbGFwc2VkQWZ0ZXJCb3Jk
ZXIpOgorCisgICAgICAgICAgICBSZW5hbWVkIGJlZm9yZSAmIGFmdGVyIHRvIGJlZm9yZUNvbG9y
UHJvcGVydHkgJiBhZnRlckNvbG9yUHJvcGVydHkKKyAgICAgICAgICAgIGZvciBjbGFyaXR5LiBB
bHNvIHNhbWUgbW9kaWZpY2F0aW9ucyBhcyB0aGUgYWJvdmUgZnVuY3Rpb25zLgorCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OmJvcmRlckhhbGZTdGFydCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OmJvcmRlckhhbGZFbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGFibGVDZWxsOjpib3JkZXJIYWxmQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRhYmxlQ2VsbDo6Ym9yZGVySGFsZkFmdGVyKToKKworICAgICAgICAgICAgUGFzcyBJ
Z25vcmVCb3JkZXJDb2xvciB0byBjb2xsYXBzZWQqQm9yZGVyKCkgc2luY2Ugd2Ugb25seSBjYXJl
CisgICAgICAgICAgICBhYm91dCB0aGUgbWV0cmljcyBoZXJlLgorCisyMDExLTEyLTE4ICBBbmRy
ZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0Lm9yZz4KKwogICAgICAgICBKU0MvSFRNTENvbGxlY3Rp
b246IE9wdGltaXplIGNhbkdldEl0ZW1zRm9yTmFtZSgpLgogICAgICAgICA8aHR0cDovL3dlYmtp
dC5vcmcvYi83NDgwNj4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlQ2VsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVD
ZWxsLmNwcAppbmRleCAyMDQxYzE5Li42Y2Y4ZTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcApAQCAtMzkwLDMxICszOTAsMzEgQEAgc3RhdGljIENv
bGxhcHNlZEJvcmRlclZhbHVlIGNob29zZUJvcmRlcihjb25zdCBDb2xsYXBzZWRCb3JkZXJWYWx1
ZSYgYm9yZGVyMSwgY28KICAgICByZXR1cm4gYm9yZGVyLnN0eWxlKCkgPT0gQkhJRERFTiA/IENv
bGxhcHNlZEJvcmRlclZhbHVlKCkgOiBib3JkZXI7CiB9CiAKLUNvbGxhcHNlZEJvcmRlclZhbHVl
IFJlbmRlclRhYmxlQ2VsbDo6Y29sbGFwc2VkU3RhcnRCb3JkZXIoKSBjb25zdAorQ29sbGFwc2Vk
Qm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjb2xsYXBzZWRTdGFydEJvcmRlcihFQ29tcHV0
ZUJvcmRlckNvbG9yIGNvbXB1dGVDb2xvcikgY29uc3QKIHsKICAgICBSZW5kZXJUYWJsZSogdGFi
bGUgPSB0aGlzLT50YWJsZSgpOwogICAgIGJvb2wgaXNTdGFydENvbHVtbiA9IGNvbCgpID09IDA7
CiAKICAgICAvLyBGb3IgdGhlIHN0YXJ0IGJvcmRlciwgd2UgbmVlZCB0byBjaGVjaywgaW4gb3Jk
ZXIgb2YgcHJlY2VkZW5jZToKICAgICAvLyAoMSkgT3VyIHN0YXJ0IGJvcmRlci4KLSAgICBpbnQg
c3RhcnQgPSBDU1NQcm9wZXJ0eTo6cmVzb2x2ZURpcmVjdGlvbkF3YXJlUHJvcGVydHkoQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJTdGFydENvbG9yLCB0YWJsZS0+c3R5bGUoKS0+ZGlyZWN0aW9uKCks
IHRhYmxlLT5zdHlsZSgpLT53cml0aW5nTW9kZSgpKTsKLSAgICBpbnQgZW5kID0gQ1NTUHJvcGVy
dHk6OnJlc29sdmVEaXJlY3Rpb25Bd2FyZVByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
RW5kQ29sb3IsIHRhYmxlLT5zdHlsZSgpLT5kaXJlY3Rpb24oKSwgdGFibGUtPnN0eWxlKCktPndy
aXRpbmdNb2RlKCkpOwotICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIHJlc3VsdChzdHlsZSgpLT5i
b3JkZXJTdGFydCgpLCBzdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3Ioc3RhcnQpLCBCQ0VM
TCk7CisgICAgaW50IHN0YXJ0Q29sb3JQcm9wZXJ0eSA9IGNvbXB1dGVDb2xvciA/IENTU1Byb3Bl
cnR5OjpyZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
clN0YXJ0Q29sb3IsIHRhYmxlLT5zdHlsZSgpLT5kaXJlY3Rpb24oKSwgdGFibGUtPnN0eWxlKCkt
PndyaXRpbmdNb2RlKCkpIDogMDsKKyAgICBpbnQgZW5kQ29sb3JQcm9wZXJ0eSA9IGNvbXB1dGVD
b2xvciA/IENTU1Byb3BlcnR5OjpyZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckVuZENvbG9yLCB0YWJsZS0+c3R5bGUoKS0+ZGlyZWN0aW9uKCksIHRh
YmxlLT5zdHlsZSgpLT53cml0aW5nTW9kZSgpKSA6IDA7CisgICAgQ29sbGFwc2VkQm9yZGVyVmFs
dWUgcmVzdWx0KHN0eWxlKCktPmJvcmRlclN0YXJ0KCksIGNvbXB1dGVDb2xvciA/IHN0eWxlKCkt
PnZpc2l0ZWREZXBlbmRlbnRDb2xvcihzdGFydENvbG9yUHJvcGVydHkpIDogQ29sb3IoKSwgQkNF
TEwpOwogCiAgICAgLy8gKDIpIFRoZSBlbmQgYm9yZGVyIG9mIHRoZSBwcmVjZWRpbmcgY2VsbC4K
ICAgICBpZiAoUmVuZGVyVGFibGVDZWxsKiBwcmV2Q2VsbCA9IHRhYmxlLT5jZWxsQmVmb3JlKHRo
aXMpKSB7Ci0gICAgICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIHByZXZDZWxsQm9yZGVyID0gQ29s
bGFwc2VkQm9yZGVyVmFsdWUocHJldkNlbGwtPnN0eWxlKCktPmJvcmRlckVuZCgpLCBwcmV2Q2Vs
bC0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGVuZCksIEJDRUxMKTsKKyAgICAgICAg
Q29sbGFwc2VkQm9yZGVyVmFsdWUgcHJldkNlbGxCb3JkZXIgPSBDb2xsYXBzZWRCb3JkZXJWYWx1
ZShwcmV2Q2VsbC0+c3R5bGUoKS0+Ym9yZGVyRW5kKCksIGNvbXB1dGVDb2xvciA/IHByZXZDZWxs
LT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoZW5kQ29sb3JQcm9wZXJ0eSkgOiBDb2xv
cigpLCBCQ0VMTCk7CiAgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihwcmV2Q2VsbEJvcmRl
ciwgcmVzdWx0KTsKICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0gZWxzZSBpZiAoaXNTdGFydENvbHVtbikgewogICAgICAgICAv
LyAoMykgT3VyIHJvdydzIHN0YXJ0IGJvcmRlci4KLSAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9y
ZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUocGFyZW50KCktPnN0eWxlKCktPmJvcmRl
clN0YXJ0KCksIHBhcmVudCgpLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3Ioc3RhcnQp
LCBCUk9XKSk7CisgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNl
ZEJvcmRlclZhbHVlKHBhcmVudCgpLT5zdHlsZSgpLT5ib3JkZXJTdGFydCgpLCBjb21wdXRlQ29s
b3IgPyBwYXJlbnQoKS0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKHN0YXJ0Q29sb3JQ
cm9wZXJ0eSkgOiBDb2xvcigpLCBCUk9XKSk7CiAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygp
KQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgCiAgICAgICAgIC8vICg0KSBP
dXIgcm93IGdyb3VwJ3Mgc3RhcnQgYm9yZGVyLgotICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3Jk
ZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShzZWN0aW9uKCktPnN0eWxlKCktPmJvcmRl
clN0YXJ0KCksIHNlY3Rpb24oKS0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKHN0YXJ0
KSwgQlJPV0dST1VQKSk7CisgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENv
bGxhcHNlZEJvcmRlclZhbHVlKHNlY3Rpb24oKS0+c3R5bGUoKS0+Ym9yZGVyU3RhcnQoKSwgY29t
cHV0ZUNvbG9yID8gc2VjdGlvbigpLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3Ioc3Rh
cnRDb2xvclByb3BlcnR5KSA6IENvbG9yKCksIEJST1dHUk9VUCkpOwogICAgICAgICBpZiAoIXJl
c3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtNDI0
LDExICs0MjQsMTEgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjb2xs
YXBzZWRTdGFydEJvcmRlcigpIGNvbnN0CiAgICAgYm9vbCBlbmRDb2xFZGdlOwogICAgIFJlbmRl
clRhYmxlQ29sKiBjb2xFbHQgPSB0YWJsZS0+Y29sRWxlbWVudChjb2woKSwgJnN0YXJ0Q29sRWRn
ZSwgJmVuZENvbEVkZ2UpOwogICAgIGlmIChjb2xFbHQgJiYgc3RhcnRDb2xFZGdlKSB7Ci0gICAg
ICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKGNv
bEVsdC0+c3R5bGUoKS0+Ym9yZGVyU3RhcnQoKSwgY29sRWx0LT5zdHlsZSgpLT52aXNpdGVkRGVw
ZW5kZW50Q29sb3Ioc3RhcnQpLCBCQ09MKSk7CisgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRl
cihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKGNvbEVsdC0+c3R5bGUoKS0+Ym9yZGVyU3Rh
cnQoKSwgY29tcHV0ZUNvbG9yID8gY29sRWx0LT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29s
b3Ioc3RhcnRDb2xvclByb3BlcnR5KSA6IENvbG9yKCksIEJDT0wpKTsKICAgICAgICAgaWYgKCFy
ZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICBpZiAo
Y29sRWx0LT5wYXJlbnQoKS0+aXNUYWJsZUNvbCgpICYmICFjb2xFbHQtPnByZXZpb3VzU2libGlu
ZygpKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBz
ZWRCb3JkZXJWYWx1ZShjb2xFbHQtPnBhcmVudCgpLT5zdHlsZSgpLT5ib3JkZXJTdGFydCgpLCBj
b2xFbHQtPnBhcmVudCgpLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3Ioc3RhcnQpLCBC
Q09MR1JPVVApKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENv
bGxhcHNlZEJvcmRlclZhbHVlKGNvbEVsdC0+cGFyZW50KCktPnN0eWxlKCktPmJvcmRlclN0YXJ0
KCksIGNvbXB1dGVDb2xvciA/IGNvbEVsdC0+cGFyZW50KCktPnN0eWxlKCktPnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihzdGFydENvbG9yUHJvcGVydHkpIDogQ29sb3IoKSwgQkNPTEdST1VQKSk7CiAg
ICAgICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgICAgICB9CkBAIC00MzgsMTQgKzQzOCwxNCBAQCBDb2xsYXBzZWRCb3JkZXJW
YWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNvbGxhcHNlZFN0YXJ0Qm9yZGVyKCkgY29uc3QKICAgICBp
ZiAoIWlzU3RhcnRDb2x1bW4pIHsKICAgICAgICAgY29sRWx0ID0gdGFibGUtPmNvbEVsZW1lbnQo
Y29sKCkgLTEsICZzdGFydENvbEVkZ2UsICZlbmRDb2xFZGdlKTsKICAgICAgICAgaWYgKGNvbEVs
dCAmJiBlbmRDb2xFZGdlKSB7Ci0gICAgICAgICAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBlbmRC
b3JkZXIgPSBDb2xsYXBzZWRCb3JkZXJWYWx1ZShjb2xFbHQtPnN0eWxlKCktPmJvcmRlckVuZCgp
LCBjb2xFbHQtPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihlbmQpLCBCQ09MKTsKKyAg
ICAgICAgICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIGVuZEJvcmRlciA9IENvbGxhcHNlZEJvcmRl
clZhbHVlKGNvbEVsdC0+c3R5bGUoKS0+Ym9yZGVyRW5kKCksIGNvbXB1dGVDb2xvciA/IGNvbEVs
dC0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGVuZENvbG9yUHJvcGVydHkpIDogQ29s
b3IoKSwgQkNPTCk7CiAgICAgICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIoZW5kQm9yZGVy
LCByZXN1bHQpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIC8v
ICg3KSBUaGUgdGFibGUncyBzdGFydCBib3JkZXIuCi0gICAgICAgIHJlc3VsdCA9IGNob29zZUJv
cmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKHRhYmxlLT5zdHlsZSgpLT5ib3JkZXJT
dGFydCgpLCB0YWJsZS0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKHN0YXJ0KSwgQlRB
QkxFKSk7CisgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJv
cmRlclZhbHVlKHRhYmxlLT5zdHlsZSgpLT5ib3JkZXJTdGFydCgpLCBjb21wdXRlQ29sb3IgPyB0
YWJsZS0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKHN0YXJ0Q29sb3JQcm9wZXJ0eSkg
OiBDb2xvcigpLCBCVEFCTEUpKTsKICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTQ1MywzNCArNDUzLDM0IEBAIENvbGxh
cHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y29sbGFwc2VkU3RhcnRCb3JkZXIoKSBj
b25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUNvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRl
clRhYmxlQ2VsbDo6Y29sbGFwc2VkRW5kQm9yZGVyKCkgY29uc3QKK0NvbGxhcHNlZEJvcmRlclZh
bHVlIFJlbmRlclRhYmxlQ2VsbDo6Y29sbGFwc2VkRW5kQm9yZGVyKEVDb21wdXRlQm9yZGVyQ29s
b3IgY29tcHV0ZUNvbG9yKSBjb25zdAogewogICAgIFJlbmRlclRhYmxlKiB0YWJsZSA9IHRoaXMt
PnRhYmxlKCk7CiAgICAgYm9vbCBpc0VuZENvbHVtbiA9IHRhYmxlLT5jb2xUb0VmZkNvbChjb2wo
KSArIGNvbFNwYW4oKSAtIDEpID09IHRhYmxlLT5udW1FZmZDb2xzKCkgLSAxOwogCiAgICAgLy8g
Rm9yIGVuZCBib3JkZXIsIHdlIG5lZWQgdG8gY2hlY2ssIGluIG9yZGVyIG9mIHByZWNlZGVuY2U6
CiAgICAgLy8gKDEpIE91ciBlbmQgYm9yZGVyLgotICAgIGludCBzdGFydCA9IENTU1Byb3BlcnR5
OjpyZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0
YXJ0Q29sb3IsIHRhYmxlLT5zdHlsZSgpLT5kaXJlY3Rpb24oKSwgdGFibGUtPnN0eWxlKCktPndy
aXRpbmdNb2RlKCkpOwotICAgIGludCBlbmQgPSBDU1NQcm9wZXJ0eTo6cmVzb2x2ZURpcmVjdGlv
bkF3YXJlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRDb2xvciwgdGFibGUtPnN0
eWxlKCktPmRpcmVjdGlvbigpLCB0YWJsZS0+c3R5bGUoKS0+d3JpdGluZ01vZGUoKSk7Ci0gICAg
Q29sbGFwc2VkQm9yZGVyVmFsdWUgcmVzdWx0ID0gQ29sbGFwc2VkQm9yZGVyVmFsdWUoc3R5bGUo
KS0+Ym9yZGVyRW5kKCksIHN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihlbmQpLCBCQ0VM
TCk7CisgICAgaW50IHN0YXJ0Q29sb3JQcm9wZXJ0eSA9IGNvbXB1dGVDb2xvciA/IENTU1Byb3Bl
cnR5OjpyZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
clN0YXJ0Q29sb3IsIHRhYmxlLT5zdHlsZSgpLT5kaXJlY3Rpb24oKSwgdGFibGUtPnN0eWxlKCkt
PndyaXRpbmdNb2RlKCkpIDogMDsKKyAgICBpbnQgZW5kQ29sb3JQcm9wZXJ0eSA9IGNvbXB1dGVD
b2xvciA/IENTU1Byb3BlcnR5OjpyZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckVuZENvbG9yLCB0YWJsZS0+c3R5bGUoKS0+ZGlyZWN0aW9uKCksIHRh
YmxlLT5zdHlsZSgpLT53cml0aW5nTW9kZSgpKSA6IDA7CisgICAgQ29sbGFwc2VkQm9yZGVyVmFs
dWUgcmVzdWx0ID0gQ29sbGFwc2VkQm9yZGVyVmFsdWUoc3R5bGUoKS0+Ym9yZGVyRW5kKCksIGNv
bXB1dGVDb2xvciA/IHN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihlbmRDb2xvclByb3Bl
cnR5KSA6IENvbG9yKCksIEJDRUxMKTsKICAgICAKICAgICAvLyAoMikgVGhlIHN0YXJ0IGJvcmRl
ciBvZiB0aGUgZm9sbG93aW5nIGNlbGwuCiAgICAgaWYgKCFpc0VuZENvbHVtbikgewogICAgICAg
ICBSZW5kZXJUYWJsZUNlbGwqIG5leHRDZWxsID0gdGFibGUtPmNlbGxBZnRlcih0aGlzKTsKICAg
ICAgICAgaWYgKG5leHRDZWxsICYmIG5leHRDZWxsLT5zdHlsZSgpKSB7Ci0gICAgICAgICAgICBD
b2xsYXBzZWRCb3JkZXJWYWx1ZSBzdGFydEJvcmRlciA9IENvbGxhcHNlZEJvcmRlclZhbHVlKG5l
eHRDZWxsLT5zdHlsZSgpLT5ib3JkZXJTdGFydCgpLCBuZXh0Q2VsbC0+c3R5bGUoKS0+dmlzaXRl
ZERlcGVuZGVudENvbG9yKHN0YXJ0KSwgQkNFTEwpOworICAgICAgICAgICAgQ29sbGFwc2VkQm9y
ZGVyVmFsdWUgc3RhcnRCb3JkZXIgPSBDb2xsYXBzZWRCb3JkZXJWYWx1ZShuZXh0Q2VsbC0+c3R5
bGUoKS0+Ym9yZGVyU3RhcnQoKSwgY29tcHV0ZUNvbG9yID8gbmV4dENlbGwtPnN0eWxlKCktPnZp
c2l0ZWREZXBlbmRlbnRDb2xvcihzdGFydENvbG9yUHJvcGVydHkpIDogQ29sb3IoKSwgQkNFTEwp
OwogICAgICAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgc3RhcnRCb3JkZXIp
OwogICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vICgzKSBPdXIg
cm93J3MgZW5kIGJvcmRlci4KLSAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwg
Q29sbGFwc2VkQm9yZGVyVmFsdWUocGFyZW50KCktPnN0eWxlKCktPmJvcmRlckVuZCgpLCBwYXJl
bnQoKS0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGVuZCksIEJST1cpKTsKKyAgICAg
ICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUocGFy
ZW50KCktPnN0eWxlKCktPmJvcmRlckVuZCgpLCBjb21wdXRlQ29sb3IgPyBwYXJlbnQoKS0+c3R5
bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGVuZENvbG9yUHJvcGVydHkpIDogQ29sb3IoKSwg
QlJPVykpOwogICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgICAgIAogICAgICAgICAvLyAoNCkgT3VyIHJvdyBncm91cCdzIGVuZCBi
b3JkZXIuCi0gICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJv
cmRlclZhbHVlKHNlY3Rpb24oKS0+c3R5bGUoKS0+Ym9yZGVyRW5kKCksIHNlY3Rpb24oKS0+c3R5
bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGVuZCksIEJST1dHUk9VUCkpOworICAgICAgICBy
ZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShzZWN0aW9u
KCktPnN0eWxlKCktPmJvcmRlckVuZCgpLCBjb21wdXRlQ29sb3IgPyBzZWN0aW9uKCktPnN0eWxl
KCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihlbmRDb2xvclByb3BlcnR5KSA6IENvbG9yKCksIEJS
T1dHUk9VUCkpOwogICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQpAQCAtNDkwLDExICs0OTAsMTEgQEAgQ29sbGFwc2VkQm9yZGVy
VmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjb2xsYXBzZWRFbmRCb3JkZXIoKSBjb25zdAogICAgIGJv
b2wgZW5kQ29sRWRnZTsKICAgICBSZW5kZXJUYWJsZUNvbCogY29sRWx0ID0gdGFibGUtPmNvbEVs
ZW1lbnQoY29sKCkgKyBjb2xTcGFuKCkgLSAxLCAmc3RhcnRDb2xFZGdlLCAmZW5kQ29sRWRnZSk7
CiAgICAgaWYgKGNvbEVsdCAmJiBlbmRDb2xFZGdlKSB7Ci0gICAgICAgIHJlc3VsdCA9IGNob29z
ZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKGNvbEVsdC0+c3R5bGUoKS0+Ym9y
ZGVyRW5kKCksIGNvbEVsdC0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGVuZCksIEJD
T0wpKTsKKyAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9y
ZGVyVmFsdWUoY29sRWx0LT5zdHlsZSgpLT5ib3JkZXJFbmQoKSwgY29tcHV0ZUNvbG9yID8gY29s
RWx0LT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoZW5kQ29sb3JQcm9wZXJ0eSkgOiBD
b2xvcigpLCBCQ09MKSk7CiAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgaWYgKGNvbEVsdC0+cGFyZW50KCktPmlzVGFibGVD
b2woKSAmJiAhY29sRWx0LT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBj
aG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShjb2xFbHQtPnBhcmVudCgp
LT5zdHlsZSgpLT5ib3JkZXJFbmQoKSwgY29sRWx0LT5wYXJlbnQoKS0+c3R5bGUoKS0+dmlzaXRl
ZERlcGVuZGVudENvbG9yKGVuZCksIEJDT0xHUk9VUCkpOworICAgICAgICAgICAgcmVzdWx0ID0g
Y2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoY29sRWx0LT5wYXJlbnQo
KS0+c3R5bGUoKS0+Ym9yZGVyRW5kKCksIGNvbXB1dGVDb2xvciA/IGNvbEVsdC0+cGFyZW50KCkt
PnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihlbmRDb2xvclByb3BlcnR5KSA6IENvbG9y
KCksIEJDT0xHUk9VUCkpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQpAQCAtNTA0LDE0ICs1MDQsMTQg
QEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjb2xsYXBzZWRFbmRCb3Jk
ZXIoKSBjb25zdAogICAgIGlmICghaXNFbmRDb2x1bW4pIHsKICAgICAgICAgY29sRWx0ID0gdGFi
bGUtPmNvbEVsZW1lbnQoY29sKCkgKyBjb2xTcGFuKCksICZzdGFydENvbEVkZ2UsICZlbmRDb2xF
ZGdlKTsKICAgICAgICAgaWYgKGNvbEVsdCAmJiBzdGFydENvbEVkZ2UpIHsKLSAgICAgICAgICAg
IENvbGxhcHNlZEJvcmRlclZhbHVlIHN0YXJ0Qm9yZGVyID0gQ29sbGFwc2VkQm9yZGVyVmFsdWUo
Y29sRWx0LT5zdHlsZSgpLT5ib3JkZXJTdGFydCgpLCBjb2xFbHQtPnN0eWxlKCktPnZpc2l0ZWRE
ZXBlbmRlbnRDb2xvcihzdGFydCksIEJDT0wpOworICAgICAgICAgICAgQ29sbGFwc2VkQm9yZGVy
VmFsdWUgc3RhcnRCb3JkZXIgPSBDb2xsYXBzZWRCb3JkZXJWYWx1ZShjb2xFbHQtPnN0eWxlKCkt
PmJvcmRlclN0YXJ0KCksIGNvbXB1dGVDb2xvciA/IGNvbEVsdC0+c3R5bGUoKS0+dmlzaXRlZERl
cGVuZGVudENvbG9yKHN0YXJ0Q29sb3JQcm9wZXJ0eSkgOiBDb2xvcigpLCBCQ09MKTsKICAgICAg
ICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIHN0YXJ0Qm9yZGVyKTsKICAgICAg
ICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICAvLyAoNykgVGhlIHRhYmxlJ3Mg
ZW5kIGJvcmRlci4KLSAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFw
c2VkQm9yZGVyVmFsdWUodGFibGUtPnN0eWxlKCktPmJvcmRlckVuZCgpLCB0YWJsZS0+c3R5bGUo
KS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGVuZCksIEJUQUJMRSkpOworICAgICAgICByZXN1bHQg
PSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSh0YWJsZS0+c3R5bGUo
KS0+Ym9yZGVyRW5kKCksIGNvbXB1dGVDb2xvciA/IHRhYmxlLT5zdHlsZSgpLT52aXNpdGVkRGVw
ZW5kZW50Q29sb3IoZW5kQ29sb3JQcm9wZXJ0eSkgOiBDb2xvcigpLCBCVEFCTEUpKTsKICAgICAg
ICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
IH0KQEAgLTUxOSwyNiArNTE5LDI2IEBAIENvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxl
Q2VsbDo6Y29sbGFwc2VkRW5kQm9yZGVyKCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci1Db2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNvbGxhcHNlZEJlZm9yZUJv
cmRlcigpIGNvbnN0CitDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNvbGxh
cHNlZEJlZm9yZUJvcmRlcihFQ29tcHV0ZUJvcmRlckNvbG9yIGNvbXB1dGVDb2xvcikgY29uc3QK
IHsKICAgICBSZW5kZXJUYWJsZSogdGFibGUgPSB0aGlzLT50YWJsZSgpOwogCiAgICAgLy8gRm9y
IGJlZm9yZSBib3JkZXIsIHdlIG5lZWQgdG8gY2hlY2ssIGluIG9yZGVyIG9mIHByZWNlZGVuY2U6
CiAgICAgLy8gKDEpIE91ciBiZWZvcmUgYm9yZGVyLgotICAgIGludCBiZWZvcmUgPSBDU1NQcm9w
ZXJ0eTo6cmVzb2x2ZURpcmVjdGlvbkF3YXJlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJCZWZvcmVDb2xvciwgdGFibGUtPnN0eWxlKCktPmRpcmVjdGlvbigpLCB0YWJsZS0+c3R5bGUo
KS0+d3JpdGluZ01vZGUoKSk7Ci0gICAgaW50IGFmdGVyID0gQ1NTUHJvcGVydHk6OnJlc29sdmVE
aXJlY3Rpb25Bd2FyZVByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJDb2xvciwg
dGFibGUtPnN0eWxlKCktPmRpcmVjdGlvbigpLCB0YWJsZS0+c3R5bGUoKS0+d3JpdGluZ01vZGUo
KSk7Ci0gICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgcmVzdWx0ID0gQ29sbGFwc2VkQm9yZGVyVmFs
dWUoc3R5bGUoKS0+Ym9yZGVyQmVmb3JlKCksIHN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xv
cihiZWZvcmUpLCBCQ0VMTCk7CisgICAgaW50IGJlZm9yZUNvbG9yUHJvcGVydHkgPSBDU1NQcm9w
ZXJ0eTo6cmVzb2x2ZURpcmVjdGlvbkF3YXJlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJCZWZvcmVDb2xvciwgdGFibGUtPnN0eWxlKCktPmRpcmVjdGlvbigpLCB0YWJsZS0+c3R5bGUo
KS0+d3JpdGluZ01vZGUoKSk7CisgICAgaW50IGFmdGVyQ29sb3JQcm9wZXJ0eSA9IENTU1Byb3Bl
cnR5OjpyZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
ckFmdGVyQ29sb3IsIHRhYmxlLT5zdHlsZSgpLT5kaXJlY3Rpb24oKSwgdGFibGUtPnN0eWxlKCkt
PndyaXRpbmdNb2RlKCkpOworICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIHJlc3VsdCA9IENvbGxh
cHNlZEJvcmRlclZhbHVlKHN0eWxlKCktPmJvcmRlckJlZm9yZSgpLCBjb21wdXRlQ29sb3IgPyBz
dHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoYmVmb3JlQ29sb3JQcm9wZXJ0eSkgOiBDb2xv
cigpLCBCQ0VMTCk7CiAgICAgCiAgICAgUmVuZGVyVGFibGVDZWxsKiBwcmV2Q2VsbCA9IHRhYmxl
LT5jZWxsQWJvdmUodGhpcyk7CiAgICAgaWYgKHByZXZDZWxsKSB7CiAgICAgICAgIC8vICgyKSBB
IGJlZm9yZSBjZWxsJ3MgYWZ0ZXIgYm9yZGVyLgotICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3Jk
ZXIoQ29sbGFwc2VkQm9yZGVyVmFsdWUocHJldkNlbGwtPnN0eWxlKCktPmJvcmRlckFmdGVyKCks
IHByZXZDZWxsLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoYWZ0ZXIpLCBCQ0VMTCks
IHJlc3VsdCk7CisgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihDb2xsYXBzZWRCb3JkZXJW
YWx1ZShwcmV2Q2VsbC0+c3R5bGUoKS0+Ym9yZGVyQWZ0ZXIoKSwgY29tcHV0ZUNvbG9yID8gcHJl
dkNlbGwtPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihhZnRlckNvbG9yUHJvcGVydHkp
IDogQ29sb3IoKSwgQkNFTEwpLCByZXN1bHQpOwogICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMo
KSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAogICAgIC8vICgzKSBP
dXIgcm93J3MgYmVmb3JlIGJvcmRlci4KLSAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0
LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShwYXJlbnQoKS0+c3R5bGUoKS0+Ym9yZGVyQmVmb3JlKCks
IHBhcmVudCgpLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoYmVmb3JlKSwgQlJPVykp
OworICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVl
KHBhcmVudCgpLT5zdHlsZSgpLT5ib3JkZXJCZWZvcmUoKSwgY29tcHV0ZUNvbG9yID8gcGFyZW50
KCktPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihiZWZvcmVDb2xvclByb3BlcnR5KSA6
IENvbG9yKCksIEJST1cpKTsKICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICAKQEAgLTU1MSw3ICs1NTEsNyBAQCBDb2xsYXBzZWRCb3JkZXJWYWx1
ZSBSZW5kZXJUYWJsZUNlbGw6OmNvbGxhcHNlZEJlZm9yZUJvcmRlcigpIGNvbnN0CiAgICAgICAg
ICAgICBwcmV2Um93ID0gcHJldkNlbGwtPnNlY3Rpb24oKS0+bGFzdENoaWxkKCk7CiAgICAgCiAg
ICAgICAgIGlmIChwcmV2Um93KSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIo
Q29sbGFwc2VkQm9yZGVyVmFsdWUocHJldlJvdy0+c3R5bGUoKS0+Ym9yZGVyQWZ0ZXIoKSwgcHJl
dlJvdy0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGFmdGVyKSwgQlJPVyksIHJlc3Vs
dCk7CisgICAgICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIoQ29sbGFwc2VkQm9yZGVyVmFs
dWUocHJldlJvdy0+c3R5bGUoKS0+Ym9yZGVyQWZ0ZXIoKSwgY29tcHV0ZUNvbG9yID8gcHJldlJv
dy0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGFmdGVyQ29sb3JQcm9wZXJ0eSkgOiBD
b2xvcigpLCBCUk9XKSwgcmVzdWx0KTsKICAgICAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygp
KQogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KQEAgLTU2MSwxNCAr
NTYxLDE0IEBAIENvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y29sbGFwc2Vk
QmVmb3JlQm9yZGVyKCkgY29uc3QKICAgICBSZW5kZXJUYWJsZVNlY3Rpb24qIGN1cnJTZWN0aW9u
ID0gc2VjdGlvbigpOwogICAgIGlmICghcm93KCkpIHsKICAgICAgICAgLy8gKDUpIE91ciByb3cg
Z3JvdXAncyBiZWZvcmUgYm9yZGVyLgotICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVz
dWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShjdXJyU2VjdGlvbi0+c3R5bGUoKS0+Ym9yZGVyQmVm
b3JlKCksIGN1cnJTZWN0aW9uLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoYmVmb3Jl
KSwgQlJPV0dST1VQKSk7CisgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENv
bGxhcHNlZEJvcmRlclZhbHVlKGN1cnJTZWN0aW9uLT5zdHlsZSgpLT5ib3JkZXJCZWZvcmUoKSwg
Y29tcHV0ZUNvbG9yID8gY3VyclNlY3Rpb24tPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xv
cihiZWZvcmVDb2xvclByb3BlcnR5KSA6IENvbG9yKCksIEJST1dHUk9VUCkpOwogICAgICAgICBp
ZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAg
IAogICAgICAgICAvLyAoNikgUHJldmlvdXMgcm93IGdyb3VwJ3MgYWZ0ZXIgYm9yZGVyLgogICAg
ICAgICBjdXJyU2VjdGlvbiA9IHRhYmxlLT5zZWN0aW9uQWJvdmUoY3VyclNlY3Rpb24pOwogICAg
ICAgICBpZiAoY3VyclNlY3Rpb24pIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRl
cihDb2xsYXBzZWRCb3JkZXJWYWx1ZShjdXJyU2VjdGlvbi0+c3R5bGUoKS0+Ym9yZGVyQWZ0ZXIo
KSwgY3VyclNlY3Rpb24tPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihhZnRlciksIEJS
T1dHUk9VUCksIHJlc3VsdCk7CisgICAgICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIoQ29s
bGFwc2VkQm9yZGVyVmFsdWUoY3VyclNlY3Rpb24tPnN0eWxlKCktPmJvcmRlckFmdGVyKCksIGNv
bXB1dGVDb2xvciA/IGN1cnJTZWN0aW9uLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3Io
YWZ0ZXJDb2xvclByb3BlcnR5KSA6IENvbG9yKCksIEJST1dHUk9VUCksIHJlc3VsdCk7CiAgICAg
ICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgICAgICB9CkBAIC01NzgsMTggKzU3OCwxOCBAQCBDb2xsYXBzZWRCb3JkZXJWYWx1
ZSBSZW5kZXJUYWJsZUNlbGw6OmNvbGxhcHNlZEJlZm9yZUJvcmRlcigpIGNvbnN0CiAgICAgICAg
IC8vICg4KSBPdXIgY29sdW1uIGFuZCBjb2x1bW4gZ3JvdXAncyBiZWZvcmUgYm9yZGVycy4KICAg
ICAgICAgUmVuZGVyVGFibGVDb2wqIGNvbEVsdCA9IHRhYmxlLT5jb2xFbGVtZW50KGNvbCgpKTsK
ICAgICAgICAgaWYgKGNvbEVsdCkgewotICAgICAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVy
KHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoY29sRWx0LT5zdHlsZSgpLT5ib3JkZXJCZWZv
cmUoKSwgY29sRWx0LT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoYmVmb3JlKSwgQkNP
TCkpOworICAgICAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2Vk
Qm9yZGVyVmFsdWUoY29sRWx0LT5zdHlsZSgpLT5ib3JkZXJCZWZvcmUoKSwgY29tcHV0ZUNvbG9y
ID8gY29sRWx0LT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoYmVmb3JlQ29sb3JQcm9w
ZXJ0eSkgOiBDb2xvcigpLCBCQ09MKSk7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMo
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgaWYgKGNvbEVs
dC0+cGFyZW50KCktPmlzVGFibGVDb2woKSkgewotICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNo
b29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKGNvbEVsdC0+cGFyZW50KCkt
PnN0eWxlKCktPmJvcmRlckJlZm9yZSgpLCBjb2xFbHQtPnBhcmVudCgpLT5zdHlsZSgpLT52aXNp
dGVkRGVwZW5kZW50Q29sb3IoYmVmb3JlKSwgQkNPTEdST1VQKSk7CisgICAgICAgICAgICAgICAg
cmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoY29sRWx0
LT5wYXJlbnQoKS0+c3R5bGUoKS0+Ym9yZGVyQmVmb3JlKCksIGNvbXB1dGVDb2xvciA/IGNvbEVs
dC0+cGFyZW50KCktPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihiZWZvcmVDb2xvclBy
b3BlcnR5KSA6IENvbG9yKCksIEJDT0xHUk9VUCkpOwogICAgICAgICAgICAgICAgIGlmICghcmVz
dWx0LmV4aXN0cygpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyAoOSkgVGhlIHRhYmxlJ3Mg
YmVmb3JlIGJvcmRlci4KLSAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29s
bGFwc2VkQm9yZGVyVmFsdWUodGFibGUtPnN0eWxlKCktPmJvcmRlckJlZm9yZSgpLCB0YWJsZS0+
c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGJlZm9yZSksIEJUQUJMRSkpOworICAgICAg
ICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSh0YWJs
ZS0+c3R5bGUoKS0+Ym9yZGVyQmVmb3JlKCksIGNvbXB1dGVDb2xvciA/IHRhYmxlLT5zdHlsZSgp
LT52aXNpdGVkRGVwZW5kZW50Q29sb3IoYmVmb3JlQ29sb3JQcm9wZXJ0eSkgOiBDb2xvcigpLCBC
VEFCTEUpKTsKICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KQEAgLTU5NywzMiArNTk3LDMyIEBAIENvbGxhcHNlZEJvcmRlclZh
bHVlIFJlbmRlclRhYmxlQ2VsbDo6Y29sbGFwc2VkQmVmb3JlQm9yZGVyKCkgY29uc3QKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCi1Db2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6
OmNvbGxhcHNlZEFmdGVyQm9yZGVyKCkgY29uc3QKK0NvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRl
clRhYmxlQ2VsbDo6Y29sbGFwc2VkQWZ0ZXJCb3JkZXIoRUNvbXB1dGVCb3JkZXJDb2xvciBjb21w
dXRlQ29sb3IpIGNvbnN0CiB7CiAgICAgUmVuZGVyVGFibGUqIHRhYmxlID0gdGhpcy0+dGFibGUo
KTsKIAogICAgIC8vIEZvciBhZnRlciBib3JkZXIsIHdlIG5lZWQgdG8gY2hlY2ssIGluIG9yZGVy
IG9mIHByZWNlZGVuY2U6CiAgICAgLy8gKDEpIE91ciBhZnRlciBib3JkZXIuCi0gICAgaW50IGJl
Zm9yZSA9IENTU1Byb3BlcnR5OjpyZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckJlZm9yZUNvbG9yLCB0YWJsZS0+c3R5bGUoKS0+ZGlyZWN0aW9uKCks
IHRhYmxlLT5zdHlsZSgpLT53cml0aW5nTW9kZSgpKTsKLSAgICBpbnQgYWZ0ZXIgPSBDU1NQcm9w
ZXJ0eTo6cmVzb2x2ZURpcmVjdGlvbkF3YXJlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJBZnRlckNvbG9yLCB0YWJsZS0+c3R5bGUoKS0+ZGlyZWN0aW9uKCksIHRhYmxlLT5zdHlsZSgp
LT53cml0aW5nTW9kZSgpKTsKLSAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSByZXN1bHQgPSBDb2xs
YXBzZWRCb3JkZXJWYWx1ZShzdHlsZSgpLT5ib3JkZXJBZnRlcigpLCBzdHlsZSgpLT52aXNpdGVk
RGVwZW5kZW50Q29sb3IoYWZ0ZXIpLCBCQ0VMTCk7CisgICAgaW50IGJlZm9yZUNvbG9yUHJvcGVy
dHkgPSBjb21wdXRlQ29sb3IgPyBDU1NQcm9wZXJ0eTo6cmVzb2x2ZURpcmVjdGlvbkF3YXJlUHJv
cGVydHkoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVDb2xvciwgdGFibGUtPnN0eWxlKCkt
PmRpcmVjdGlvbigpLCB0YWJsZS0+c3R5bGUoKS0+d3JpdGluZ01vZGUoKSkgOiAwOworICAgIGlu
dCBhZnRlckNvbG9yUHJvcGVydHkgPSBjb21wdXRlQ29sb3IgPyBDU1NQcm9wZXJ0eTo6cmVzb2x2
ZURpcmVjdGlvbkF3YXJlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlckNvbG9y
LCB0YWJsZS0+c3R5bGUoKS0+ZGlyZWN0aW9uKCksIHRhYmxlLT5zdHlsZSgpLT53cml0aW5nTW9k
ZSgpKSA6IDA7CisgICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgcmVzdWx0ID0gQ29sbGFwc2VkQm9y
ZGVyVmFsdWUoc3R5bGUoKS0+Ym9yZGVyQWZ0ZXIoKSwgY29tcHV0ZUNvbG9yID8gc3R5bGUoKS0+
dmlzaXRlZERlcGVuZGVudENvbG9yKGFmdGVyQ29sb3JQcm9wZXJ0eSkgOiBDb2xvcigpLCBCQ0VM
TCk7CiAgICAgCiAgICAgUmVuZGVyVGFibGVDZWxsKiBuZXh0Q2VsbCA9IHRhYmxlLT5jZWxsQmVs
b3codGhpcyk7CiAgICAgaWYgKG5leHRDZWxsKSB7CiAgICAgICAgIC8vICgyKSBBbiBhZnRlciBj
ZWxsJ3MgYmVmb3JlIGJvcmRlci4KLSAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3Vs
dCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUobmV4dENlbGwtPnN0eWxlKCktPmJvcmRlckJlZm9yZSgp
LCBuZXh0Q2VsbC0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGJlZm9yZSksIEJDRUxM
KSk7CisgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRl
clZhbHVlKG5leHRDZWxsLT5zdHlsZSgpLT5ib3JkZXJCZWZvcmUoKSwgY29tcHV0ZUNvbG9yID8g
bmV4dENlbGwtPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihiZWZvcmVDb2xvclByb3Bl
cnR5KSA6IENvbG9yKCksIEJDRUxMKSk7CiAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQog
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCiAgICAgLy8gKDMpIE91ciBy
b3cncyBhZnRlciBib3JkZXIuIChGSVhNRTogRGVhbCB3aXRoIHJvd3NwYW4hKQotICAgIHJlc3Vs
dCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKHBhcmVudCgpLT5z
dHlsZSgpLT5ib3JkZXJBZnRlcigpLCBwYXJlbnQoKS0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVu
dENvbG9yKGFmdGVyKSwgQlJPVykpOworICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQs
IENvbGxhcHNlZEJvcmRlclZhbHVlKHBhcmVudCgpLT5zdHlsZSgpLT5ib3JkZXJBZnRlcigpLCBj
b21wdXRlQ29sb3IgPyBwYXJlbnQoKS0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGFm
dGVyQ29sb3JQcm9wZXJ0eSkgOiBDb2xvcigpLCBCUk9XKSk7CiAgICAgaWYgKCFyZXN1bHQuZXhp
c3RzKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgCiAgICAgLy8gKDQpIFRoZSBuZXh0
IHJvdydzIGJlZm9yZSBib3JkZXIuCiAgICAgaWYgKG5leHRDZWxsKSB7Ci0gICAgICAgIHJlc3Vs
dCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKG5leHRDZWxsLT5w
YXJlbnQoKS0+c3R5bGUoKS0+Ym9yZGVyQmVmb3JlKCksIG5leHRDZWxsLT5wYXJlbnQoKS0+c3R5
bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGJlZm9yZSksIEJST1cpKTsKKyAgICAgICAgcmVz
dWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUobmV4dENlbGwt
PnBhcmVudCgpLT5zdHlsZSgpLT5ib3JkZXJCZWZvcmUoKSwgY29tcHV0ZUNvbG9yID8gbmV4dENl
bGwtPnBhcmVudCgpLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoYmVmb3JlQ29sb3JQ
cm9wZXJ0eSkgOiBDb2xvcigpLCBCUk9XKSk7CiAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygp
KQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC02MzEsMTQgKzYzMSwxNCBA
QCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNvbGxhcHNlZEFmdGVyQm9y
ZGVyKCkgY29uc3QKICAgICBSZW5kZXJUYWJsZVNlY3Rpb24qIGN1cnJTZWN0aW9uID0gc2VjdGlv
bigpOwogICAgIGlmIChyb3coKSArIHJvd1NwYW4oKSA+PSBjdXJyU2VjdGlvbi0+bnVtUm93cygp
KSB7CiAgICAgICAgIC8vICg1KSBPdXIgcm93IGdyb3VwJ3MgYWZ0ZXIgYm9yZGVyLgotICAgICAg
ICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShjdXJy
U2VjdGlvbi0+c3R5bGUoKS0+Ym9yZGVyQWZ0ZXIoKSwgY3VyclNlY3Rpb24tPnN0eWxlKCktPnZp
c2l0ZWREZXBlbmRlbnRDb2xvcihhZnRlciksIEJST1dHUk9VUCkpOworICAgICAgICByZXN1bHQg
PSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShjdXJyU2VjdGlvbi0+
c3R5bGUoKS0+Ym9yZGVyQWZ0ZXIoKSwgY29tcHV0ZUNvbG9yID8gY3VyclNlY3Rpb24tPnN0eWxl
KCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihhZnRlckNvbG9yUHJvcGVydHkpIDogQ29sb3IoKSwg
QlJPV0dST1VQKSk7CiAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICAgICAgCiAgICAgICAgIC8vICg2KSBGb2xsb3dpbmcgcm93IGdy
b3VwJ3MgYmVmb3JlIGJvcmRlci4KICAgICAgICAgY3VyclNlY3Rpb24gPSB0YWJsZS0+c2VjdGlv
bkJlbG93KGN1cnJTZWN0aW9uKTsKICAgICAgICAgaWYgKGN1cnJTZWN0aW9uKSB7Ci0gICAgICAg
ICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShj
dXJyU2VjdGlvbi0+c3R5bGUoKS0+Ym9yZGVyQmVmb3JlKCksIGN1cnJTZWN0aW9uLT5zdHlsZSgp
LT52aXNpdGVkRGVwZW5kZW50Q29sb3IoYmVmb3JlKSwgQlJPV0dST1VQKSk7CisgICAgICAgICAg
ICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShjdXJy
U2VjdGlvbi0+c3R5bGUoKS0+Ym9yZGVyQmVmb3JlKCksIGNvbXB1dGVDb2xvciA/IGN1cnJTZWN0
aW9uLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoYmVmb3JlQ29sb3JQcm9wZXJ0eSkg
OiBDb2xvcigpLCBCUk9XR1JPVVApKTsKICAgICAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygp
KQogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KQEAgLTY0OCwxNyAr
NjQ4LDE3IEBAIENvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y29sbGFwc2Vk
QWZ0ZXJCb3JkZXIoKSBjb25zdAogICAgICAgICAvLyAoOCkgT3VyIGNvbHVtbiBhbmQgY29sdW1u
IGdyb3VwJ3MgYWZ0ZXIgYm9yZGVycy4KICAgICAgICAgUmVuZGVyVGFibGVDb2wqIGNvbEVsdCA9
IHRhYmxlLT5jb2xFbGVtZW50KGNvbCgpKTsKICAgICAgICAgaWYgKGNvbEVsdCkgewotICAgICAg
ICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUo
Y29sRWx0LT5zdHlsZSgpLT5ib3JkZXJBZnRlcigpLCBjb2xFbHQtPnN0eWxlKCktPnZpc2l0ZWRE
ZXBlbmRlbnRDb2xvcihhZnRlciksIEJDT0wpKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGNob29z
ZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKGNvbEVsdC0+c3R5bGUoKS0+Ym9y
ZGVyQWZ0ZXIoKSwgY29tcHV0ZUNvbG9yID8gY29sRWx0LT5zdHlsZSgpLT52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoYWZ0ZXJDb2xvclByb3BlcnR5KSA6IENvbG9yKCksIEJDT0wpKTsKICAgICAgICAg
ICAgIGlmICghcmVzdWx0LmV4aXN0cygpKSByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgaWYg
KGNvbEVsdC0+cGFyZW50KCktPmlzVGFibGVDb2woKSkgewotICAgICAgICAgICAgICAgIHJlc3Vs
dCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKGNvbEVsdC0+cGFy
ZW50KCktPnN0eWxlKCktPmJvcmRlckFmdGVyKCksIGNvbEVsdC0+cGFyZW50KCktPnN0eWxlKCkt
PnZpc2l0ZWREZXBlbmRlbnRDb2xvcihhZnRlciksIEJDT0xHUk9VUCkpOworICAgICAgICAgICAg
ICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKGNv
bEVsdC0+cGFyZW50KCktPnN0eWxlKCktPmJvcmRlckFmdGVyKCksIGNvbXB1dGVDb2xvciA/IGNv
bEVsdC0+cGFyZW50KCktPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihhZnRlckNvbG9y
UHJvcGVydHkpIDogQ29sb3IoKSwgQkNPTEdST1VQKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFy
ZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vICg5KSBUaGUgdGFibGUn
cyBhZnRlciBib3JkZXIuCi0gICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENv
bGxhcHNlZEJvcmRlclZhbHVlKHRhYmxlLT5zdHlsZSgpLT5ib3JkZXJBZnRlcigpLCB0YWJsZS0+
c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGFmdGVyKSwgQlRBQkxFKSk7CisgICAgICAg
IHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKHRhYmxl
LT5zdHlsZSgpLT5ib3JkZXJBZnRlcigpLCBjb21wdXRlQ29sb3IgPyB0YWJsZS0+c3R5bGUoKS0+
dmlzaXRlZERlcGVuZGVudENvbG9yKGFmdGVyQ29sb3JQcm9wZXJ0eSkgOiBDb2xvcigpLCBCVEFC
TEUpKTsKICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KQEAgLTY2NiwzNiArNjY2LDM2IEBAIENvbGxhcHNlZEJvcmRlclZhbHVl
IFJlbmRlclRhYmxlQ2VsbDo6Y29sbGFwc2VkQWZ0ZXJCb3JkZXIoKSBjb25zdAogICAgIHJldHVy
biByZXN1bHQ7ICAgIAogfQogCi1Db2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6
OmNvbGxhcHNlZExlZnRCb3JkZXIoKSBjb25zdAorQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVy
VGFibGVDZWxsOjpjb2xsYXBzZWRMZWZ0Qm9yZGVyKEVDb21wdXRlQm9yZGVyQ29sb3IgY29tcHV0
ZUNvbG9yKSBjb25zdAogewogICAgIFJlbmRlclN0eWxlKiB0YWJsZVN0eWxlID0gdGFibGUoKS0+
c3R5bGUoKTsKICAgICBpZiAodGFibGVTdHlsZS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkK
LSAgICAgICAgcmV0dXJuIHRhYmxlU3R5bGUtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IGNv
bGxhcHNlZFN0YXJ0Qm9yZGVyKCkgOiBjb2xsYXBzZWRFbmRCb3JkZXIoKTsKLSAgICByZXR1cm4g
dGFibGVTdHlsZS0+aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSA/IGNvbGxhcHNlZEFmdGVy
Qm9yZGVyKCkgOiBjb2xsYXBzZWRCZWZvcmVCb3JkZXIoKTsKKyAgICAgICAgcmV0dXJuIHRhYmxl
U3R5bGUtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IGNvbGxhcHNlZFN0YXJ0Qm9yZGVyKGNv
bXB1dGVDb2xvcikgOiBjb2xsYXBzZWRFbmRCb3JkZXIoY29tcHV0ZUNvbG9yKTsKKyAgICByZXR1
cm4gdGFibGVTdHlsZS0+aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSA/IGNvbGxhcHNlZEFm
dGVyQm9yZGVyKGNvbXB1dGVDb2xvcikgOiBjb2xsYXBzZWRCZWZvcmVCb3JkZXIoY29tcHV0ZUNv
bG9yKTsKIH0KIAotQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjb2xsYXBz
ZWRSaWdodEJvcmRlcigpIGNvbnN0CitDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNl
bGw6OmNvbGxhcHNlZFJpZ2h0Qm9yZGVyKEVDb21wdXRlQm9yZGVyQ29sb3IgY29tcHV0ZUNvbG9y
KSBjb25zdAogewogICAgIFJlbmRlclN0eWxlKiB0YWJsZVN0eWxlID0gdGFibGUoKS0+c3R5bGUo
KTsKICAgICBpZiAodGFibGVTdHlsZS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKLSAgICAg
ICAgcmV0dXJuIHRhYmxlU3R5bGUtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IGNvbGxhcHNl
ZEVuZEJvcmRlcigpIDogY29sbGFwc2VkU3RhcnRCb3JkZXIoKTsKLSAgICByZXR1cm4gdGFibGVT
dHlsZS0+aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSA/IGNvbGxhcHNlZEJlZm9yZUJvcmRl
cigpIDogY29sbGFwc2VkQWZ0ZXJCb3JkZXIoKTsKKyAgICAgICAgcmV0dXJuIHRhYmxlU3R5bGUt
PmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IGNvbGxhcHNlZEVuZEJvcmRlcihjb21wdXRlQ29s
b3IpIDogY29sbGFwc2VkU3RhcnRCb3JkZXIoY29tcHV0ZUNvbG9yKTsKKyAgICByZXR1cm4gdGFi
bGVTdHlsZS0+aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSA/IGNvbGxhcHNlZEJlZm9yZUJv
cmRlcihjb21wdXRlQ29sb3IpIDogY29sbGFwc2VkQWZ0ZXJCb3JkZXIoY29tcHV0ZUNvbG9yKTsK
IH0KIAotQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjb2xsYXBzZWRUb3BC
b3JkZXIoKSBjb25zdAorQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjb2xs
YXBzZWRUb3BCb3JkZXIoRUNvbXB1dGVCb3JkZXJDb2xvciBjb21wdXRlQ29sb3IpIGNvbnN0CiB7
CiAgICAgUmVuZGVyU3R5bGUqIHRhYmxlU3R5bGUgPSB0YWJsZSgpLT5zdHlsZSgpOwogICAgIGlm
ICh0YWJsZVN0eWxlLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQotICAgICAgICByZXR1cm4g
dGFibGVTdHlsZS0+aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSA/IGNvbGxhcHNlZEFmdGVy
Qm9yZGVyKCkgOiBjb2xsYXBzZWRCZWZvcmVCb3JkZXIoKTsKLSAgICByZXR1cm4gdGFibGVTdHls
ZS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gY29sbGFwc2VkU3RhcnRCb3JkZXIoKSA6IGNv
bGxhcHNlZEVuZEJvcmRlcigpOworICAgICAgICByZXR1cm4gdGFibGVTdHlsZS0+aXNGbGlwcGVk
QmxvY2tzV3JpdGluZ01vZGUoKSA/IGNvbGxhcHNlZEFmdGVyQm9yZGVyKGNvbXB1dGVDb2xvcikg
OiBjb2xsYXBzZWRCZWZvcmVCb3JkZXIoY29tcHV0ZUNvbG9yKTsKKyAgICByZXR1cm4gdGFibGVT
dHlsZS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gY29sbGFwc2VkU3RhcnRCb3JkZXIoY29t
cHV0ZUNvbG9yKSA6IGNvbGxhcHNlZEVuZEJvcmRlcihjb21wdXRlQ29sb3IpOwogfQogCi1Db2xs
YXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNvbGxhcHNlZEJvdHRvbUJvcmRlcigp
IGNvbnN0CitDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNvbGxhcHNlZEJv
dHRvbUJvcmRlcihFQ29tcHV0ZUJvcmRlckNvbG9yIGNvbXB1dGVDb2xvcikgY29uc3QKIHsKICAg
ICBSZW5kZXJTdHlsZSogdGFibGVTdHlsZSA9IHRhYmxlKCktPnN0eWxlKCk7CiAgICAgaWYgKHRh
YmxlU3R5bGUtPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCi0gICAgICAgIHJldHVybiB0YWJs
ZVN0eWxlLT5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpID8gY29sbGFwc2VkQmVmb3JlQm9y
ZGVyKCkgOiBjb2xsYXBzZWRBZnRlckJvcmRlcigpOwotICAgIHJldHVybiB0YWJsZVN0eWxlLT5p
c0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBjb2xsYXBzZWRFbmRCb3JkZXIoKSA6IGNvbGxhcHNl
ZFN0YXJ0Qm9yZGVyKCk7CisgICAgICAgIHJldHVybiB0YWJsZVN0eWxlLT5pc0ZsaXBwZWRCbG9j
a3NXcml0aW5nTW9kZSgpID8gY29sbGFwc2VkQmVmb3JlQm9yZGVyKGNvbXB1dGVDb2xvcikgOiBj
b2xsYXBzZWRBZnRlckJvcmRlcihjb21wdXRlQ29sb3IpOworICAgIHJldHVybiB0YWJsZVN0eWxl
LT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBjb2xsYXBzZWRFbmRCb3JkZXIoY29tcHV0ZUNv
bG9yKSA6IGNvbGxhcHNlZFN0YXJ0Qm9yZGVyKGNvbXB1dGVDb2xvcik7CiB9CiAKIExheW91dFVu
aXQgUmVuZGVyVGFibGVDZWxsOjpib3JkZXJMZWZ0KCkgY29uc3QKQEAgLTc3NCw3ICs3NzQsNyBA
QCBMYXlvdXRVbml0IFJlbmRlclRhYmxlQ2VsbDo6Ym9yZGVySGFsZkJvdHRvbShib29sIG91dGVy
KSBjb25zdAogCiBMYXlvdXRVbml0IFJlbmRlclRhYmxlQ2VsbDo6Ym9yZGVySGFsZlN0YXJ0KGJv
b2wgb3V0ZXIpIGNvbnN0CiB7Ci0gICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgYm9yZGVyID0gY29s
bGFwc2VkU3RhcnRCb3JkZXIoKTsKKyAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBib3JkZXIgPSBj
b2xsYXBzZWRTdGFydEJvcmRlcihJZ25vcmVCb3JkZXJDb2xvcik7CiAgICAgaWYgKGJvcmRlci5l
eGlzdHMoKSkKICAgICAgICAgcmV0dXJuIChib3JkZXIud2lkdGgoKSArICgodGFibGUoKS0+c3R5
bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpIF4gb3V0ZXIpID8gMSA6IDApKSAvIDI7IC8v
IEdpdmUgdGhlIGV4dHJhIHBpeGVsIHRvIHRvcCBhbmQgbGVmdC4KICAgICByZXR1cm4gMDsKQEAg
LTc4Miw3ICs3ODIsNyBAQCBMYXlvdXRVbml0IFJlbmRlclRhYmxlQ2VsbDo6Ym9yZGVySGFsZlN0
YXJ0KGJvb2wgb3V0ZXIpIGNvbnN0CiAgICAgCiBMYXlvdXRVbml0IFJlbmRlclRhYmxlQ2VsbDo6
Ym9yZGVySGFsZkVuZChib29sIG91dGVyKSBjb25zdAogewotICAgIENvbGxhcHNlZEJvcmRlclZh
bHVlIGJvcmRlciA9IGNvbGxhcHNlZEVuZEJvcmRlcigpOworICAgIENvbGxhcHNlZEJvcmRlclZh
bHVlIGJvcmRlciA9IGNvbGxhcHNlZEVuZEJvcmRlcihJZ25vcmVCb3JkZXJDb2xvcik7CiAgICAg
aWYgKGJvcmRlci5leGlzdHMoKSkKICAgICAgICAgcmV0dXJuIChib3JkZXIud2lkdGgoKSArICgo
dGFibGUoKS0+c3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpIF4gb3V0ZXIpID8gMCA6
IDEpKSAvIDI7CiAgICAgcmV0dXJuIDA7CkBAIC03OTAsNyArNzkwLDcgQEAgTGF5b3V0VW5pdCBS
ZW5kZXJUYWJsZUNlbGw6OmJvcmRlckhhbGZFbmQoYm9vbCBvdXRlcikgY29uc3QKIAogTGF5b3V0
VW5pdCBSZW5kZXJUYWJsZUNlbGw6OmJvcmRlckhhbGZCZWZvcmUoYm9vbCBvdXRlcikgY29uc3QK
IHsKLSAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBib3JkZXIgPSBjb2xsYXBzZWRCZWZvcmVCb3Jk
ZXIoKTsKKyAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBib3JkZXIgPSBjb2xsYXBzZWRCZWZvcmVC
b3JkZXIoSWdub3JlQm9yZGVyQ29sb3IpOwogICAgIGlmIChib3JkZXIuZXhpc3RzKCkpCiAgICAg
ICAgIHJldHVybiAoYm9yZGVyLndpZHRoKCkgKyAoKHRhYmxlKCktPnN0eWxlKCktPmlzRmxpcHBl
ZEJsb2Nrc1dyaXRpbmdNb2RlKCkgXiBvdXRlcikgPyAwIDogMSkpIC8gMjsgLy8gR2l2ZSB0aGUg
ZXh0cmEgcGl4ZWwgdG8gdG9wIGFuZCBsZWZ0LgogICAgIHJldHVybiAwOwpAQCAtNzk4LDcgKzc5
OCw3IEBAIExheW91dFVuaXQgUmVuZGVyVGFibGVDZWxsOjpib3JkZXJIYWxmQmVmb3JlKGJvb2wg
b3V0ZXIpIGNvbnN0CiAKIExheW91dFVuaXQgUmVuZGVyVGFibGVDZWxsOjpib3JkZXJIYWxmQWZ0
ZXIoYm9vbCBvdXRlcikgY29uc3QKIHsKLSAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBib3JkZXIg
PSBjb2xsYXBzZWRBZnRlckJvcmRlcigpOworICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIGJvcmRl
ciA9IGNvbGxhcHNlZEFmdGVyQm9yZGVyKElnbm9yZUJvcmRlckNvbG9yKTsKICAgICBpZiAoYm9y
ZGVyLmV4aXN0cygpKQogICAgICAgICByZXR1cm4gKGJvcmRlci53aWR0aCgpICsgKCh0YWJsZSgp
LT5zdHlsZSgpLT5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpIF4gb3V0ZXIpID8gMSA6IDAp
KSAvIDI7CiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVDZWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVDZWxsLmgKaW5kZXggZWE5NzdjMS4uYzNiYmZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZUNlbGwuaApAQCAtMzUsNiArMzUsOCBAQCBzdGF0aWMgY29uc3QgdW5z
aWduZWQgbWF4Q29sdW1uSW5kZXggPSAweDdGRkZGRkZFOyAvLyAyLDE0Nyw0ODMsNjQ2CiBzdGF0
aWMgY29uc3QgdW5zaWduZWQgdW5zZXRSb3dJbmRleCA9IDB4N0ZGRkZGRkY7CiBzdGF0aWMgY29u
c3QgdW5zaWduZWQgbWF4Um93SW5kZXggPSAweDdGRkZGRkZFOyAvLyAyLDE0Nyw0ODMsNjQ2CiAK
K2VudW0gRUNvbXB1dGVCb3JkZXJDb2xvciB7IElnbm9yZUJvcmRlckNvbG9yLCBDb21wdXRlQm9y
ZGVyQ29sb3IgfTsKKwogY2xhc3MgUmVuZGVyVGFibGVDZWxsIDogcHVibGljIFJlbmRlckJsb2Nr
IHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBSZW5kZXJUYWJsZUNlbGwoTm9kZSopOwpAQCAtMTA2
LDE1ICsxMDgsMTUgQEAgcHVibGljOgogICAgIExheW91dFVuaXQgYm9yZGVySGFsZkJlZm9yZShi
b29sIG91dGVyKSBjb25zdDsKICAgICBMYXlvdXRVbml0IGJvcmRlckhhbGZBZnRlcihib29sIG91
dGVyKSBjb25zdDsKIAotICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIGNvbGxhcHNlZFN0YXJ0Qm9y
ZGVyKCkgY29uc3Q7Ci0gICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgY29sbGFwc2VkRW5kQm9yZGVy
KCkgY29uc3Q7Ci0gICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgY29sbGFwc2VkQmVmb3JlQm9yZGVy
KCkgY29uc3Q7Ci0gICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgY29sbGFwc2VkQWZ0ZXJCb3JkZXIo
KSBjb25zdDsKKyAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBjb2xsYXBzZWRTdGFydEJvcmRlcihF
Q29tcHV0ZUJvcmRlckNvbG9yID0gQ29tcHV0ZUJvcmRlckNvbG9yKSBjb25zdDsKKyAgICBDb2xs
YXBzZWRCb3JkZXJWYWx1ZSBjb2xsYXBzZWRFbmRCb3JkZXIoRUNvbXB1dGVCb3JkZXJDb2xvciA9
IENvbXB1dGVCb3JkZXJDb2xvcikgY29uc3Q7CisgICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgY29s
bGFwc2VkQmVmb3JlQm9yZGVyKEVDb21wdXRlQm9yZGVyQ29sb3IgPSBDb21wdXRlQm9yZGVyQ29s
b3IpIGNvbnN0OworICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIGNvbGxhcHNlZEFmdGVyQm9yZGVy
KEVDb21wdXRlQm9yZGVyQ29sb3IgPSBDb21wdXRlQm9yZGVyQ29sb3IpIGNvbnN0OwogCi0gICAg
Q29sbGFwc2VkQm9yZGVyVmFsdWUgY29sbGFwc2VkTGVmdEJvcmRlcigpIGNvbnN0OwotICAgIENv
bGxhcHNlZEJvcmRlclZhbHVlIGNvbGxhcHNlZFJpZ2h0Qm9yZGVyKCkgY29uc3Q7Ci0gICAgQ29s
bGFwc2VkQm9yZGVyVmFsdWUgY29sbGFwc2VkVG9wQm9yZGVyKCkgY29uc3Q7Ci0gICAgQ29sbGFw
c2VkQm9yZGVyVmFsdWUgY29sbGFwc2VkQm90dG9tQm9yZGVyKCkgY29uc3Q7CisgICAgQ29sbGFw
c2VkQm9yZGVyVmFsdWUgY29sbGFwc2VkTGVmdEJvcmRlcihFQ29tcHV0ZUJvcmRlckNvbG9yID0g
Q29tcHV0ZUJvcmRlckNvbG9yKSBjb25zdDsKKyAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBjb2xs
YXBzZWRSaWdodEJvcmRlcihFQ29tcHV0ZUJvcmRlckNvbG9yID0gQ29tcHV0ZUJvcmRlckNvbG9y
KSBjb25zdDsKKyAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBjb2xsYXBzZWRUb3BCb3JkZXIoRUNv
bXB1dGVCb3JkZXJDb2xvciA9IENvbXB1dGVCb3JkZXJDb2xvcikgY29uc3Q7CisgICAgQ29sbGFw
c2VkQm9yZGVyVmFsdWUgY29sbGFwc2VkQm90dG9tQm9yZGVyKEVDb21wdXRlQm9yZGVyQ29sb3Ig
PSBDb21wdXRlQm9yZGVyQ29sb3IpIGNvbnN0OwogCiAgICAgdm9pZCBjb2xsZWN0Qm9yZGVyVmFs
dWVzKFJlbmRlclRhYmxlOjpDb2xsYXBzZWRCb3JkZXJWYWx1ZXMmKSBjb25zdDsKICAgICBzdGF0
aWMgdm9pZCBzb3J0Qm9yZGVyVmFsdWVzKFJlbmRlclRhYmxlOjpDb2xsYXBzZWRCb3JkZXJWYWx1
ZXMmKTsK
</data>
<flag name="review"
          id="119881"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>