<?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>68665</bug_id>
          
          <creation_ts>2011-09-22 17:04:41 -0700</creation_ts>
          <short_desc>refactor RenderFlexibleBox to use flex-flow aware methods</short_desc>
          <delta_ts>2011-09-23 13:31:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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="Ojan Vafai">ojan</reporter>
          <assigned_to name="Ojan Vafai">ojan</assigned_to>
          <cc>hyatt</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>471951</commentid>
    <comment_count>0</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-09-22 17:04:41 -0700</bug_when>
    <thetext>refactor RenderFlexibleBox to use flex-flow aware methods</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471954</commentid>
    <comment_count>1</comment_count>
      <attachid>108423</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-09-22 17:06:44 -0700</bug_when>
    <thetext>Created attachment 108423
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472311</commentid>
    <comment_count>2</comment_count>
      <attachid>108423</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-09-23 10:27:56 -0700</bug_when>
    <thetext>Comment on attachment 108423
Patch

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

&gt; Source/WebCore/rendering/RenderBlock.h:-213
&gt; -    // FIXME: Supporting layout deltas.
&gt; -    void setLogicalLocationForChild(RenderBox* child, const LayoutPoint&amp;);

Can you add a line in the ChangeLog explaining why this is being removed (e.g., unused).

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:116
&gt; +LayoutUnit RenderFlexibleBox::hasOrthogonalFlow(RenderBox* child) const

Shouldn&apos;t this return a bool?

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:124
&gt; +LayoutUnit RenderFlexibleBox::isHorizontalFlow() const

Shouldn&apos;t this return a bool?

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:130
&gt; +LayoutUnit RenderFlexibleBox::isLeftToRightFlow() const

Shouldn&apos;t this return a bool?

&gt; Source/WebCore/rendering/RenderFlexibleBox.cpp:415
&gt; +        // FIXME: I think we only want to do this for horizontal flows.

For vertical flows, we&apos;ll need something like this to compute the physical width.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472453</commentid>
    <comment_count>3</comment_count>
      <attachid>108523</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-09-23 13:18:14 -0700</bug_when>
    <thetext>Created attachment 108523
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472464</commentid>
    <comment_count>4</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-09-23 13:31:21 -0700</bug_when>
    <thetext>Committed r95856: &lt;http://trac.webkit.org/changeset/95856&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108423</attachid>
            <date>2011-09-22 17:06:44 -0700</date>
            <delta_ts>2011-09-23 13:18:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68665-20110922170643.patch</filename>
            <type>text/plain</type>
            <size>24489</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU3NDcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlNTUyNmYxZDIzZjBhNjVm
ODUwNjMxNDFiYzc0NWY2NTc1Zjg2ZmU0Li41OGVkNzVjMTRlYTYxM2M4Nzc3NzA4NDAzNWY2ZDJl
YWQxNmRlYjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTEtMDktMjIgIE9qYW4g
VmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KKworICAgICAgICByZWZhY3RvciBSZW5kZXJGbGV4
aWJsZUJveCB0byB1c2UgZmxleC1mbG93IGF3YXJlIG1ldGhvZHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NjY1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBqdXN0IGEgcmVmYWN0b3IuIEp1
c3QgbW92ZSB0aGUgYWxsIHRoZSBjb2RlIHRoYXQgbmVlZHMgdG8KKyAgICAgICAgYmUgZmxvdyBh
d2FyZSBpbnRvIGhlbHBlciBmdW5jdGlvbnMuIEFjdHVhbGx5IG1ha2luZyB0aGVtIGZsb3ctYXdh
cmUKKyAgICAgICAgY2FuIGJlIGRvbmUgaW4gYSBmb2xsb3d1cCBwYXRjaC4KKworICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpoYXNPcnRob2dvbmFsRmxvdyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6aXNIb3Jpem9udGFsRmxvdyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6aXNMZWZ0VG9SaWdodEZsb3cpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OnNldEZsb3dBd2FyZUxvZ2ljYWxIZWln
aHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmZsb3dBd2FyZUxvZ2lj
YWxIZWlnaHRGb3JDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6
Zmxvd0F3YXJlTG9naWNhbFdpZHRoRm9yQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
RmxleGlibGVCb3g6OmZsb3dBd2FyZUxvZ2ljYWxIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRmxleGlibGVCb3g6OmZsb3dBd2FyZUNvbnRlbnRMb2dpY2FsV2lkdGgpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmZsb3dBd2FyZUF2YWlsYWJsZUxvZ2ljYWxX
aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6Zmxvd0F3YXJlQm9y
ZGVyU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmZsb3dBd2Fy
ZUJvcmRlckJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6Zmxv
d0F3YXJlQm9yZGVyQWZ0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6
OmZsb3dBd2FyZVBhZGRpbmdTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJs
ZUJveDo6Zmxvd0F3YXJlUGFkZGluZ0JlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJG
bGV4aWJsZUJveDo6Zmxvd0F3YXJlUGFkZGluZ0FmdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckZsZXhpYmxlQm94OjpmbG93QXdhcmVNYXJnaW5TdGFydEZvckNoaWxkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpmbG93QXdhcmVNYXJnaW5CZWZvcmVGb3JDaGls
ZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6Zmxvd0F3YXJlTWFyZ2lu
QWZ0ZXJGb3JDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6c2V0
Rmxvd0F3YXJlTWFyZ2luU3RhcnRGb3JDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJG
bGV4aWJsZUJveDo6c2V0Rmxvd0F3YXJlTWFyZ2luRW5kRm9yQ2hpbGQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyRmxleGlibGVCb3g6OnNldEZsb3dBd2FyZUxvZ2ljYWxMb2NhdGlvbkZvckNo
aWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94Ojpsb2dpY2FsQm9yZGVy
QW5kUGFkZGluZ1dpZHRoRm9yQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGli
bGVCb3g6OmxvZ2ljYWxTY3JvbGxiYXJIZWlnaHRGb3JDaGlsZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJGbGV4aWJsZUJveDo6bWFyZ2luU3RhcnRTdHlsZUZvckNoaWxkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjptYXJnaW5FbmRTdHlsZUZvckNoaWxkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpwcmVmZXJyZWRMb2dpY2FsQ29udGVu
dFdpZHRoRm9yRmxleEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6
OmxheW91dElubGluZURpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJs
ZUJveDo6bG9naWNhbFBvc2l0aXZlRmxleEZvckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckZsZXhpYmxlQm94Ojpsb2dpY2FsTmVnYXRpdmVGbGV4Rm9yQ2hpbGQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGgp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OnJ1bkZyZWVTcGFjZUFsbG9j
YXRpb25BbGdvcml0aG1JbmxpbmVEaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
RmxleGlibGVCb3g6OnNldExvZ2ljYWxPdmVycmlkZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRmxleGlibGVCb3g6OmxheW91dEFuZFBsYWNlQ2hpbGRyZW5JbmxpbmVEaXJlY3Rpb24p
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oOgorCiAyMDExLTA5LTIy
ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByOTUzMzUgYW5kIHI5NTY0NS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IGI2ZTAyY2ZhNTBmYTdkZmFlMzlhNmI0YmYz
MThjMjY3ZGQyNTRjYzIuLjVjZTBmZmJlMWQ1N2U4ZTRhYzI1YzU5ZTcyYjU4MmY1ZDRmMThkNzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMTg2MiwxNCAr
MTg2Miw2IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmhhbmRsZUFmdGVyU2lkZU9mQmxvY2soTGF5b3V0
VW5pdCBiZWZvcmVTaWRlLCBMYXlvdXRVbml0IGFmdGVyCiAgICAgc2V0Q29sbGFwc2VkQm90dG9t
TWFyZ2luKG1hcmdpbkluZm8pOwogfQogCi12b2lkIFJlbmRlckJsb2NrOjpzZXRMb2dpY2FsTG9j
YXRpb25Gb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkLCBjb25zdCBMYXlvdXRQb2ludCYgbG9jYXRp
b24pCi17Ci0gICAgaWYgKHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCi0gICAg
ICAgIGNoaWxkLT5zZXRMb2NhdGlvbihsb2NhdGlvbik7Ci0gICAgZWxzZQotICAgICAgICBjaGls
ZC0+c2V0TG9jYXRpb24obG9jYXRpb24udHJhbnNwb3NlZFBvaW50KCkpOwotfQotCiB2b2lkIFJl
bmRlckJsb2NrOjpzZXRMb2dpY2FsTGVmdEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQsIExheW91
dFVuaXQgbG9naWNhbExlZnQsIEFwcGx5TGF5b3V0RGVsdGFNb2RlIGFwcGx5RGVsdGEpCiB7CiAg
ICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmgKaW5kZXggYjFjYjNkOTQ4YWM2MzllZTg0ZjkzMGVkZDc2NzIxNWVlYzg0
YWRiYy4uMmU1ZTM0YzZkMTllOWE0NGEwODA0MjMyMDQ0YzJhOTVkYjI0ZTliMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKQEAgLTIwOSw4ICsyMDksNiBAQCBwdWJsaWM6
CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkg
eyByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGNoaWxkLT5oZWlnaHQoKSA6IGNo
aWxkLT53aWR0aCgpOyB9CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsVG9wRm9yQ2hpbGQoUmVuZGVy
Qm94KiBjaGlsZCkgeyByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGNoaWxkLT55
KCkgOiBjaGlsZC0+eCgpOyB9CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdEZvckNoaWxkKFJl
bmRlckJveCogY2hpbGQpIHsgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBjaGls
ZC0+eCgpIDogY2hpbGQtPnkoKTsgfQotICAgIC8vIEZJWE1FOiBTdXBwb3J0aW5nIGxheW91dCBk
ZWx0YXMuCi0gICAgdm9pZCBzZXRMb2dpY2FsTG9jYXRpb25Gb3JDaGlsZChSZW5kZXJCb3gqIGNo
aWxkLCBjb25zdCBMYXlvdXRQb2ludCYpOwogICAgIHZvaWQgc2V0TG9naWNhbExlZnRGb3JDaGls
ZChSZW5kZXJCb3gqIGNoaWxkLCBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0LCBBcHBseUxheW91dERl
bHRhTW9kZSA9IERvTm90QXBwbHlMYXlvdXREZWx0YSk7CiAgICAgdm9pZCBzZXRMb2dpY2FsVG9w
Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBBcHBseUxh
eW91dERlbHRhTW9kZSA9IERvTm90QXBwbHlMYXlvdXREZWx0YSk7CiAgICAgTGF5b3V0VW5pdCBt
YXJnaW5CZWZvcmVGb3JDaGlsZChSZW5kZXJCb3hNb2RlbE9iamVjdCogY2hpbGQpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKaW5kZXgg
YjVjODZhZDhiMWNkMDA4M2JmMTRjMzJiNDU2MmJlMWU0Mjk1OTE5NC4uMTQzNGFkYzAxZWJhZDA5
NmViODAyYjQ5ZGM1ZDIzZTJkYWU5YjYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmxleGlibGVCb3guY3BwCkBAIC0xMTMsMzggKzExMywxNTMgQEAgdm9pZCBSZW5k
ZXJGbGV4aWJsZUJveDo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBpbnQsIEJs
b2NrTGF5b3V0UGFzcykKICAgICBzZXROZWVkc0xheW91dChmYWxzZSk7CiB9CiAKLUxheW91dFVu
aXQgUmVuZGVyRmxleGlibGVCb3g6OmxvZ2ljYWxCb3JkZXJBbmRQYWRkaW5nV2lkdGhGb3JDaGls
ZChSZW5kZXJCb3gqIGNoaWxkKQorTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6aGFzT3J0
aG9nb25hbEZsb3coUmVuZGVyQm94KiBjaGlsZCkgY29uc3QKIHsKLSAgICByZXR1cm4gaXNIb3Jp
em9udGFsV3JpdGluZ01vZGUoKSA/IGNoaWxkLT5ib3JkZXJBbmRQYWRkaW5nV2lkdGgoKSA6IGNo
aWxkLT5ib3JkZXJBbmRQYWRkaW5nSGVpZ2h0KCk7CisgICAgLy8gRklYTUU6IElzIHRoZSBjaGls
ZC0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSBjaGVjayBjb3JyZWN0IGlmIHRoZSBjaGlsZCBp
cyBhIGZsZXhib3g/CisgICAgLy8gU2hvdWxkIGl0IGJlIHVzaW5nIGNoaWxkLT5pc0hvcml6b250
YWxGbG93IGluIHRoYXQgY2FzZT8KKyAgICAvLyBPciBkbyB3ZSBvbmx5IGNhcmUgYWJvdXQgdGhl
IHBhcmVudCdzIHdyaXRpbmcgbW9kZT8KKyAgICByZXR1cm4gaXNIb3Jpem9udGFsRmxvdygpICE9
IGNoaWxkLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpOwogfQogCi1MYXlvdXRVbml0IFJlbmRl
ckZsZXhpYmxlQm94Ojpsb2dpY2FsU2Nyb2xsYmFySGVpZ2h0Rm9yQ2hpbGQoUmVuZGVyQm94KiBj
aGlsZCkKK0xheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OmlzSG9yaXpvbnRhbEZsb3coKSBj
b25zdAogewotICAgIHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gY2hpbGQtPnZl
cnRpY2FsU2Nyb2xsYmFyV2lkdGgoKSA6IGNoaWxkLT5ob3Jpem9udGFsU2Nyb2xsYmFySGVpZ2h0
KCk7CisgICAgLy8gRklYTUU6IFRha2UgZmxleC1mbG93IHZhbHVlIGludG8gYWNjb3VudC4KKyAg
ICByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKTsKIH0KIAotTGVuZ3RoIFJlbmRlckZs
ZXhpYmxlQm94OjptYXJnaW5TdGFydFN0eWxlRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkKK0xh
eW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OmlzTGVmdFRvUmlnaHRGbG93KCkgY29uc3QKIHsK
LSAgICBpZiAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKLSAgICAgICAgcmV0dXJuIHN0eWxl
KCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5MZWZ0
KCkgOiBjaGlsZC0+c3R5bGUoKS0+bWFyZ2luUmlnaHQoKTsKLSAgICByZXR1cm4gc3R5bGUoKS0+
aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gY2hpbGQtPnN0eWxlKCktPm1hcmdpblRvcCgpIDog
Y2hpbGQtPnN0eWxlKCktPm1hcmdpbkJvdHRvbSgpOworICAgIC8vIEZJWE1FOiBUYWtlIGZsZXgt
ZmxvdyB2YWx1ZSBpbnRvIGFjY291bnQuCisgICAgcmV0dXJuIHN0eWxlKCktPmlzTGVmdFRvUmln
aHREaXJlY3Rpb24oKTsKIH0KIAotTGVuZ3RoIFJlbmRlckZsZXhpYmxlQm94OjptYXJnaW5FbmRT
dHlsZUZvckNoaWxkKFJlbmRlckJveCogY2hpbGQpCisvLyBGSVhNRTogTWFrZSBhbGwgdGhlc2Ug
ZmxvdyBhd2FyZSBtZXRob2RzIGFjdHVhbGx5IGJlIGZsb3cgYXdhcmUuCisKK3ZvaWQgUmVuZGVy
RmxleGlibGVCb3g6OnNldEZsb3dBd2FyZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBzaXplKQor
eworICAgIHNldExvZ2ljYWxIZWlnaHQoc2l6ZSk7Cit9CisKK0xheW91dFVuaXQgUmVuZGVyRmxl
eGlibGVCb3g6OmZsb3dBd2FyZUxvZ2ljYWxIZWlnaHRGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxk
KQoreworICAgIHJldHVybiBsb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoY2hpbGQpOworfQorCitMYXlv
dXRVbml0IFJlbmRlckZsZXhpYmxlQm94OjpmbG93QXdhcmVMb2dpY2FsV2lkdGhGb3JDaGlsZChS
ZW5kZXJCb3gqIGNoaWxkKQoreworICAgIHJldHVybiBsb2dpY2FsV2lkdGhGb3JDaGlsZChjaGls
ZCk7Cit9CisKK0xheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OmZsb3dBd2FyZUxvZ2ljYWxI
ZWlnaHQoKSBjb25zdAoreworICAgIHJldHVybiBsb2dpY2FsSGVpZ2h0KCk7Cit9CisgICAgCitM
YXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94OjpmbG93QXdhcmVDb250ZW50TG9naWNhbFdpZHRo
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gY29udGVudExvZ2ljYWxXaWR0aCgpOworfQorCitMYXlv
dXRVbml0IFJlbmRlckZsZXhpYmxlQm94OjpmbG93QXdhcmVBdmFpbGFibGVMb2dpY2FsV2lkdGgo
KSBjb25zdAoreworICAgIHJldHVybiBhdmFpbGFibGVMb2dpY2FsV2lkdGgoKTsKK30KKworTGF5
b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6Zmxvd0F3YXJlQm9yZGVyU3RhcnQoKSBjb25zdAor
eworICAgIHJldHVybiBib3JkZXJTdGFydCgpOworfQorCitMYXlvdXRVbml0IFJlbmRlckZsZXhp
YmxlQm94OjpmbG93QXdhcmVCb3JkZXJCZWZvcmUoKSBjb25zdAoreworICAgIHJldHVybiBib3Jk
ZXJCZWZvcmUoKTsKK30KKworTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6Zmxvd0F3YXJl
Qm9yZGVyQWZ0ZXIoKSBjb25zdAoreworICAgIHJldHVybiBib3JkZXJBZnRlcigpOworfQorCitM
YXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94OjpmbG93QXdhcmVQYWRkaW5nU3RhcnQoKSBjb25z
dAoreworICAgIHJldHVybiBwYWRkaW5nU3RhcnQoKTsKK30KKworTGF5b3V0VW5pdCBSZW5kZXJG
bGV4aWJsZUJveDo6Zmxvd0F3YXJlUGFkZGluZ0JlZm9yZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IHBhZGRpbmdCZWZvcmUoKTsKK30KKworTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6Zmxv
d0F3YXJlUGFkZGluZ0FmdGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcGFkZGluZ0FmdGVyKCk7
Cit9CisKK0xheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OmZsb3dBd2FyZU1hcmdpblN0YXJ0
Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkgY29uc3QKK3sKKyAgICByZXR1cm4gbWFyZ2luU3Rh
cnRGb3JDaGlsZChjaGlsZCk7Cit9CisKK0xheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OmZs
b3dBd2FyZU1hcmdpbkJlZm9yZUZvckNoaWxkKFJlbmRlckJveCogY2hpbGQpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1hcmdpbkJlZm9yZUZvckNoaWxkKGNoaWxkKTsKK30KKworTGF5b3V0VW5pdCBS
ZW5kZXJGbGV4aWJsZUJveDo6Zmxvd0F3YXJlTWFyZ2luQWZ0ZXJGb3JDaGlsZChSZW5kZXJCb3gq
IGNoaWxkKSBjb25zdAoreworICAgIHJldHVybiBtYXJnaW5BZnRlckZvckNoaWxkKGNoaWxkKTsK
K30KKwordm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6c2V0Rmxvd0F3YXJlTWFyZ2luU3RhcnRGb3JD
aGlsZChSZW5kZXJCb3gqIGNoaWxkLCBMYXlvdXRVbml0IG1hcmdpbikKK3sKKyAgICBzZXRNYXJn
aW5TdGFydEZvckNoaWxkKGNoaWxkLCBtYXJnaW4pOworfQorCit2b2lkIFJlbmRlckZsZXhpYmxl
Qm94OjpzZXRGbG93QXdhcmVNYXJnaW5FbmRGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkLCBMYXlv
dXRVbml0IG1hcmdpbikKK3sKKyAgICBzZXRNYXJnaW5FbmRGb3JDaGlsZChjaGlsZCwgbWFyZ2lu
KTsKK30KKwordm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6c2V0Rmxvd0F3YXJlTG9naWNhbExvY2F0
aW9uRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCwgY29uc3QgTGF5b3V0UG9pbnQmIGxvY2F0aW9u
KQoreworICAgIGlmIChpc0hvcml6b250YWxGbG93KCkpCisgICAgICAgIGNoaWxkLT5zZXRMb2Nh
dGlvbihsb2NhdGlvbik7CisgICAgZWxzZQorICAgICAgICBjaGlsZC0+c2V0TG9jYXRpb24obG9j
YXRpb24udHJhbnNwb3NlZFBvaW50KCkpOworfQorCitMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxl
Qm94Ojpsb2dpY2FsQm9yZGVyQW5kUGFkZGluZ1dpZHRoRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGls
ZCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNIb3Jpem9udGFsRmxvdygpID8gY2hpbGQtPmJvcmRl
ckFuZFBhZGRpbmdXaWR0aCgpIDogY2hpbGQtPmJvcmRlckFuZFBhZGRpbmdIZWlnaHQoKTsKK30K
KworTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6bG9naWNhbFNjcm9sbGJhckhlaWdodEZv
ckNoaWxkKFJlbmRlckJveCogY2hpbGQpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzSG9yaXpvbnRh
bEZsb3coKSA/IGNoaWxkLT52ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKCkgOiBjaGlsZC0+aG9yaXpv
bnRhbFNjcm9sbGJhckhlaWdodCgpOworfQorCitMZW5ndGggUmVuZGVyRmxleGlibGVCb3g6Om1h
cmdpblN0YXJ0U3R5bGVGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKSBjb25zdAoreworICAgIGlm
IChpc0hvcml6b250YWxGbG93KCkpCisgICAgICAgIHJldHVybiBpc0xlZnRUb1JpZ2h0Rmxvdygp
ID8gY2hpbGQtPnN0eWxlKCktPm1hcmdpbkxlZnQoKSA6IGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5S
aWdodCgpOworICAgIHJldHVybiBpc0xlZnRUb1JpZ2h0RmxvdygpID8gY2hpbGQtPnN0eWxlKCkt
Pm1hcmdpblRvcCgpIDogY2hpbGQtPnN0eWxlKCktPm1hcmdpbkJvdHRvbSgpOworfQorCitMZW5n
dGggUmVuZGVyRmxleGlibGVCb3g6Om1hcmdpbkVuZFN0eWxlRm9yQ2hpbGQoUmVuZGVyQm94KiBj
aGlsZCkgY29uc3QKIHsKLSAgICBpZiAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKLSAgICAg
ICAgcmV0dXJuIHN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IGNoaWxkLT5zdHls
ZSgpLT5tYXJnaW5SaWdodCgpIDogY2hpbGQtPnN0eWxlKCktPm1hcmdpbkxlZnQoKTsKLSAgICBy
ZXR1cm4gc3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gY2hpbGQtPnN0eWxlKCkt
Pm1hcmdpbkJvdHRvbSgpIDogY2hpbGQtPnN0eWxlKCktPm1hcmdpblRvcCgpOworICAgIGlmIChp
c0hvcml6b250YWxGbG93KCkpCisgICAgICAgIHJldHVybiBpc0xlZnRUb1JpZ2h0RmxvdygpID8g
Y2hpbGQtPnN0eWxlKCktPm1hcmdpblJpZ2h0KCkgOiBjaGlsZC0+c3R5bGUoKS0+bWFyZ2luTGVm
dCgpOworICAgIHJldHVybiBpc0xlZnRUb1JpZ2h0RmxvdygpID8gY2hpbGQtPnN0eWxlKCktPm1h
cmdpbkJvdHRvbSgpIDogY2hpbGQtPnN0eWxlKCktPm1hcmdpblRvcCgpOwogfQogCi1MYXlvdXRV
bml0IFJlbmRlckZsZXhpYmxlQm94OjpwcmVmZXJyZWRMb2dpY2FsQ29udGVudFdpZHRoRm9yRmxl
eEl0ZW0oUmVuZGVyQm94KiBjaGlsZCkKK0xheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OnBy
ZWZlcnJlZExvZ2ljYWxDb250ZW50V2lkdGhGb3JGbGV4SXRlbShSZW5kZXJCb3gqIGNoaWxkKSBj
b25zdAogewotICAgIExlbmd0aCB3aWR0aCA9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBj
aGlsZC0+c3R5bGUoKS0+d2lkdGgoKSA6IGNoaWxkLT5zdHlsZSgpLT5oZWlnaHQoKTsKKyAgICBM
ZW5ndGggd2lkdGggPSBpc0hvcml6b250YWxGbG93KCkgPyBjaGlsZC0+c3R5bGUoKS0+d2lkdGgo
KSA6IGNoaWxkLT5zdHlsZSgpLT5oZWlnaHQoKTsKICAgICBpZiAod2lkdGguaXNBdXRvKCkpIHsK
LSAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGggPSBpc0hvcml6b250YWxXcml0aW5nTW9k
ZSgpID09IGNoaWxkLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gY2hpbGQtPm1heFByZWZl
cnJlZExvZ2ljYWxXaWR0aCgpIDogY2hpbGQtPmxvZ2ljYWxIZWlnaHQoKTsKKyAgICAgICAgTGF5
b3V0VW5pdCBsb2dpY2FsV2lkdGggPSBoYXNPcnRob2dvbmFsRmxvdyhjaGlsZCkgPyBjaGlsZC0+
bG9naWNhbEhlaWdodCgpIDogY2hpbGQtPm1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgpOwogICAg
ICAgICByZXR1cm4gbG9naWNhbFdpZHRoIC0gbG9naWNhbEJvcmRlckFuZFBhZGRpbmdXaWR0aEZv
ckNoaWxkKGNoaWxkKSAtIGxvZ2ljYWxTY3JvbGxiYXJIZWlnaHRGb3JDaGlsZChjaGlsZCk7CiAg
ICAgfQotICAgIHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gY2hpbGQtPmNvbnRl
bnRXaWR0aCgpIDogY2hpbGQtPmNvbnRlbnRIZWlnaHQoKTsKKyAgICByZXR1cm4gaXNIb3Jpem9u
dGFsRmxvdygpID8gY2hpbGQtPmNvbnRlbnRXaWR0aCgpIDogY2hpbGQtPmNvbnRlbnRIZWlnaHQo
KTsKIH0KIAogdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0SW5saW5lRGlyZWN0aW9uKGJv
b2wgcmVsYXlvdXRDaGlsZHJlbikKQEAgLTE1NSw3ICsyNzAsNyBAQCB2b2lkIFJlbmRlckZsZXhp
YmxlQm94OjpsYXlvdXRJbmxpbmVEaXJlY3Rpb24oYm9vbCByZWxheW91dENoaWxkcmVuKQogICAg
IEZsZXhpYmxlQm94SXRlcmF0b3IgaXRlcmF0b3IodGhpcyk7CiAKICAgICBjb21wdXRlUHJlZmVy
cmVkTG9naWNhbFdpZHRoKHJlbGF5b3V0Q2hpbGRyZW4sIGl0ZXJhdG9yLCBwcmVmZXJyZWRMb2dp
Y2FsV2lkdGgsIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSwgdG90YWxOZWdhdGl2ZUZsZXhpYmls
aXR5KTsKLSAgICBMYXlvdXRVbml0IGF2YWlsYWJsZUZyZWVTcGFjZSA9IGNvbnRlbnRMb2dpY2Fs
V2lkdGgoKSAtIHByZWZlcnJlZExvZ2ljYWxXaWR0aDsKKyAgICBMYXlvdXRVbml0IGF2YWlsYWJs
ZUZyZWVTcGFjZSA9IGZsb3dBd2FyZUNvbnRlbnRMb2dpY2FsV2lkdGgoKSAtIHByZWZlcnJlZExv
Z2ljYWxXaWR0aDsKIAogICAgIEluZmxleGlibGVGbGV4SXRlbVNpemUgaW5mbGV4aWJsZUl0ZW1z
OwogICAgIFdURjo6VmVjdG9yPExheW91dFVuaXQ+IGNoaWxkU2l6ZXM7CkBAIC0xNjksMTQgKzI4
NCwxNCBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRJbmxpbmVEaXJlY3Rpb24oYm9v
bCByZWxheW91dENoaWxkcmVuKQogICAgIC8vIEZJWE1FOiBIYW5kbGUgZGlzdHJpYnV0aW9uIG9m
IGNyb3NzLWF4aXMgc3BhY2UgKHRoaXJkIGRpc3RyaWJ1dGlvbiByb3VuZCkuCiB9CiAKLWZsb2F0
IFJlbmRlckZsZXhpYmxlQm94Ojpsb2dpY2FsUG9zaXRpdmVGbGV4Rm9yQ2hpbGQoUmVuZGVyQm94
KiBjaGlsZCkKK2Zsb2F0IFJlbmRlckZsZXhpYmxlQm94Ojpsb2dpY2FsUG9zaXRpdmVGbGV4Rm9y
Q2hpbGQoUmVuZGVyQm94KiBjaGlsZCkgY29uc3QKIHsKLSAgICByZXR1cm4gaXNIb3Jpem9udGFs
V3JpdGluZ01vZGUoKSA/IGNoaWxkLT5zdHlsZSgpLT5mbGV4Ym94V2lkdGhQb3NpdGl2ZUZsZXgo
KSA6IGNoaWxkLT5zdHlsZSgpLT5mbGV4Ym94SGVpZ2h0UG9zaXRpdmVGbGV4KCk7CisgICAgcmV0
dXJuIGlzSG9yaXpvbnRhbEZsb3coKSA/IGNoaWxkLT5zdHlsZSgpLT5mbGV4Ym94V2lkdGhQb3Np
dGl2ZUZsZXgoKSA6IGNoaWxkLT5zdHlsZSgpLT5mbGV4Ym94SGVpZ2h0UG9zaXRpdmVGbGV4KCk7
CiB9CiAKLWZsb2F0IFJlbmRlckZsZXhpYmxlQm94Ojpsb2dpY2FsTmVnYXRpdmVGbGV4Rm9yQ2hp
bGQoUmVuZGVyQm94KiBjaGlsZCkKK2Zsb2F0IFJlbmRlckZsZXhpYmxlQm94Ojpsb2dpY2FsTmVn
YXRpdmVGbGV4Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkgY29uc3QKIHsKLSAgICByZXR1cm4g
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGNoaWxkLT5zdHlsZSgpLT5mbGV4Ym94V2lkdGhO
ZWdhdGl2ZUZsZXgoKSA6IGNoaWxkLT5zdHlsZSgpLT5mbGV4Ym94SGVpZ2h0TmVnYXRpdmVGbGV4
KCk7CisgICAgcmV0dXJuIGlzSG9yaXpvbnRhbEZsb3coKSA/IGNoaWxkLT5zdHlsZSgpLT5mbGV4
Ym94V2lkdGhOZWdhdGl2ZUZsZXgoKSA6IGNoaWxkLT5zdHlsZSgpLT5mbGV4Ym94SGVpZ2h0TmVn
YXRpdmVGbGV4KCk7CiB9CiAKIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVQcmVmZXJy
ZWRMb2dpY2FsV2lkdGgoYm9vbCByZWxheW91dENoaWxkcmVuLCBGbGV4aWJsZUJveEl0ZXJhdG9y
JiBpdGVyYXRvciwgTGF5b3V0VW5pdCYgcHJlZmVycmVkTG9naWNhbFdpZHRoLCBmbG9hdCYgdG90
YWxQb3NpdGl2ZUZsZXhpYmlsaXR5LCBmbG9hdCYgdG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5KQpA
QCAtMTg0LDcgKzI5OSw3IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVQcmVmZXJy
ZWRMb2dpY2FsV2lkdGgoYm9vbCByZWxheW91dENoaWxkcmVuLCBGbGV4CiAgICAgcHJlZmVycmVk
TG9naWNhbFdpZHRoID0gMDsKICAgICB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHkgPSB0b3RhbE5l
Z2F0aXZlRmxleGliaWxpdHkgPSAwOwogCi0gICAgTGF5b3V0VW5pdCBmbGV4Ym94QXZhaWxhYmxl
TG9naWNhbFdpZHRoID0gYXZhaWxhYmxlTG9naWNhbFdpZHRoKCk7CisgICAgTGF5b3V0VW5pdCBm
bGV4Ym94QXZhaWxhYmxlTG9naWNhbFdpZHRoID0gZmxvd0F3YXJlQXZhaWxhYmxlTG9naWNhbFdp
ZHRoKCk7CiAgICAgZm9yIChSZW5kZXJCb3gqIGNoaWxkID0gaXRlcmF0b3IuZmlyc3QoKTsgY2hp
bGQ7IGNoaWxkID0gaXRlcmF0b3IubmV4dCgpKSB7CiAgICAgICAgIC8vIFdlIGFsd2F5cyBoYXZl
IHRvIGxheSBvdXQgZmxleGlibGUgb2JqZWN0cyBhZ2Fpbiwgc2luY2UgdGhlIGZsZXggZGlzdHJp
YnV0aW9uCiAgICAgICAgIC8vIG1heSBoYXZlIGNoYW5nZWQsIGFuZCB3ZSBuZWVkIHRvIHJlYWxs
b2NhdGUgc3BhY2UuCkBAIC0xOTQsNyArMzA5LDcgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6
Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aChib29sIHJlbGF5b3V0Q2hpbGRyZW4sIEZsZXgK
ICAgICAgICAgY2hpbGQtPmxheW91dElmTmVlZGVkKCk7CiAKICAgICAgICAgLy8gV2UgY2FuJ3Qg
anVzdCB1c2UgbWFyZ2luU3RhcnRGb3JDaGlsZCwgZXQuIGFsLiBiZWNhdXNlICJhdXRvIiBuZWVk
cyB0byBiZSB0cmVhdGVkIGFzIDAuCi0gICAgICAgIGlmIChpc0hvcml6b250YWxXcml0aW5nTW9k
ZSgpKSB7CisgICAgICAgIGlmIChpc0hvcml6b250YWxGbG93KCkpIHsKICAgICAgICAgICAgIHBy
ZWZlcnJlZExvZ2ljYWxXaWR0aCArPSBjaGlsZC0+c3R5bGUoKS0+bWFyZ2luTGVmdCgpLmNhbGNN
aW5WYWx1ZShmbGV4Ym94QXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKICAgICAgICAgICAgIHByZWZl
cnJlZExvZ2ljYWxXaWR0aCArPSBjaGlsZC0+c3R5bGUoKS0+bWFyZ2luUmlnaHQoKS5jYWxjTWlu
VmFsdWUoZmxleGJveEF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CiAgICAgICAgIH0gZWxzZSB7CkBA
IC0yMjEsNyArMzM2LDcgQEAgYm9vbCBSZW5kZXJGbGV4aWJsZUJveDo6cnVuRnJlZVNwYWNlQWxs
b2NhdGlvbkFsZ29yaXRobUlubGluZURpcmVjdGlvbihMYXlvdXRVbmkKICAgICBGbGV4aWJsZUJv
eEl0ZXJhdG9yIGl0ZXJhdG9yKHRoaXMpOwogICAgIGNoaWxkU2l6ZXMuY2xlYXIoKTsKIAotICAg
IExheW91dFVuaXQgZmxleGJveEF2YWlsYWJsZUxvZ2ljYWxXaWR0aCA9IGF2YWlsYWJsZUxvZ2lj
YWxXaWR0aCgpOworICAgIExheW91dFVuaXQgZmxleGJveEF2YWlsYWJsZUxvZ2ljYWxXaWR0aCA9
IGZsb3dBd2FyZUF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpOwogICAgIGZvciAoUmVuZGVyQm94KiBj
aGlsZCA9IGl0ZXJhdG9yLmZpcnN0KCk7IGNoaWxkOyBjaGlsZCA9IGl0ZXJhdG9yLm5leHQoKSkg
ewogICAgICAgICBMYXlvdXRVbml0IGNoaWxkUHJlZmVycmVkU2l6ZTsKICAgICAgICAgaWYgKGlu
ZmxleGlibGVJdGVtcy5jb250YWlucyhjaGlsZCkpCkBAIC0yMzEsNyArMzQ2LDcgQEAgYm9vbCBS
ZW5kZXJGbGV4aWJsZUJveDo6cnVuRnJlZVNwYWNlQWxsb2NhdGlvbkFsZ29yaXRobUlubGluZURp
cmVjdGlvbihMYXlvdXRVbmkKICAgICAgICAgICAgIGlmIChhdmFpbGFibGVGcmVlU3BhY2UgPiAw
ICYmIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSA+IDApIHsKICAgICAgICAgICAgICAgICBjaGls
ZFByZWZlcnJlZFNpemUgKz0gbHJvdW5kZihhdmFpbGFibGVGcmVlU3BhY2UgKiBsb2dpY2FsUG9z
aXRpdmVGbGV4Rm9yQ2hpbGQoY2hpbGQpIC8gdG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5KTsKIAot
ICAgICAgICAgICAgICAgIExlbmd0aCBjaGlsZExvZ2ljYWxNYXhXaWR0aCA9IGlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlKCkgPyBjaGlsZC0+c3R5bGUoKS0+bWF4V2lkdGgoKSA6IGNoaWxkLT5zdHls
ZSgpLT5tYXhIZWlnaHQoKTsKKyAgICAgICAgICAgICAgICBMZW5ndGggY2hpbGRMb2dpY2FsTWF4
V2lkdGggPSBpc0hvcml6b250YWxGbG93KCkgPyBjaGlsZC0+c3R5bGUoKS0+bWF4V2lkdGgoKSA6
IGNoaWxkLT5zdHlsZSgpLT5tYXhIZWlnaHQoKTsKICAgICAgICAgICAgICAgICBpZiAoIWNoaWxk
TG9naWNhbE1heFdpZHRoLmlzVW5kZWZpbmVkKCkgJiYgY2hpbGRMb2dpY2FsTWF4V2lkdGguaXNT
cGVjaWZpZWQoKSAmJiBjaGlsZFByZWZlcnJlZFNpemUgPiBjaGlsZExvZ2ljYWxNYXhXaWR0aC5j
YWxjVmFsdWUoZmxleGJveEF2YWlsYWJsZUxvZ2ljYWxXaWR0aCkpIHsKICAgICAgICAgICAgICAg
ICAgICAgY2hpbGRQcmVmZXJyZWRTaXplID0gY2hpbGRMb2dpY2FsTWF4V2lkdGguY2FsY1ZhbHVl
KGZsZXhib3hBdmFpbGFibGVMb2dpY2FsV2lkdGgpOwogICAgICAgICAgICAgICAgICAgICBhdmFp
bGFibGVGcmVlU3BhY2UgLT0gY2hpbGRQcmVmZXJyZWRTaXplIC0gcHJlZmVycmVkTG9naWNhbENv
bnRlbnRXaWR0aEZvckZsZXhJdGVtKGNoaWxkKTsKQEAgLTI0Myw3ICszNTgsNyBAQCBib29sIFJl
bmRlckZsZXhpYmxlQm94OjpydW5GcmVlU3BhY2VBbGxvY2F0aW9uQWxnb3JpdGhtSW5saW5lRGly
ZWN0aW9uKExheW91dFVuaQogICAgICAgICAgICAgfSBlbHNlIGlmIChhdmFpbGFibGVGcmVlU3Bh
Y2UgPCAwICYmIHRvdGFsTmVnYXRpdmVGbGV4aWJpbGl0eSA+IDApIHsKICAgICAgICAgICAgICAg
ICBjaGlsZFByZWZlcnJlZFNpemUgKz0gbHJvdW5kZihhdmFpbGFibGVGcmVlU3BhY2UgKiBsb2dp
Y2FsTmVnYXRpdmVGbGV4Rm9yQ2hpbGQoY2hpbGQpIC8gdG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5
KTsKIAotICAgICAgICAgICAgICAgIExlbmd0aCBjaGlsZExvZ2ljYWxNaW5XaWR0aCA9IGlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBjaGlsZC0+c3R5bGUoKS0+bWluV2lkdGgoKSA6IGNoaWxk
LT5zdHlsZSgpLT5taW5IZWlnaHQoKTsKKyAgICAgICAgICAgICAgICBMZW5ndGggY2hpbGRMb2dp
Y2FsTWluV2lkdGggPSBpc0hvcml6b250YWxGbG93KCkgPyBjaGlsZC0+c3R5bGUoKS0+bWluV2lk
dGgoKSA6IGNoaWxkLT5zdHlsZSgpLT5taW5IZWlnaHQoKTsKICAgICAgICAgICAgICAgICBpZiAo
IWNoaWxkTG9naWNhbE1pbldpZHRoLmlzVW5kZWZpbmVkKCkgJiYgY2hpbGRMb2dpY2FsTWluV2lk
dGguaXNTcGVjaWZpZWQoKSAmJiBjaGlsZFByZWZlcnJlZFNpemUgPCBjaGlsZExvZ2ljYWxNaW5X
aWR0aC5jYWxjVmFsdWUoZmxleGJveEF2YWlsYWJsZUxvZ2ljYWxXaWR0aCkpIHsKICAgICAgICAg
ICAgICAgICAgICAgY2hpbGRQcmVmZXJyZWRTaXplID0gY2hpbGRMb2dpY2FsTWluV2lkdGguY2Fs
Y1ZhbHVlKGZsZXhib3hBdmFpbGFibGVMb2dpY2FsV2lkdGgpOwogICAgICAgICAgICAgICAgICAg
ICBhdmFpbGFibGVGcmVlU3BhY2UgKz0gcHJlZmVycmVkTG9naWNhbENvbnRlbnRXaWR0aEZvckZs
ZXhJdGVtKGNoaWxkKSAtIGNoaWxkUHJlZmVycmVkU2l6ZTsKQEAgLTI2NywxNiArMzgyLDE2IEBA
IHN0YXRpYyBib29sIGhhc1BhY2tpbmdTcGFjZShMYXlvdXRVbml0IGF2YWlsYWJsZUZyZWVTcGFj
ZSwgZmxvYXQgdG90YWxQb3NpdGl2ZUZsCiB2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpzZXRMb2dp
Y2FsT3ZlcnJpZGVTaXplKFJlbmRlckJveCogY2hpbGQsIExheW91dFVuaXQgY2hpbGRQcmVmZXJy
ZWRTaXplKQogewogICAgIC8vIEZJWE1FOiBSZW5hbWUgc2V0T3ZlcnJpZGVXaWR0aC9zZXRPdmVy
cmlkZUhlaWdodCB0byBzZXRPdmVycmlkZUxvZ2ljYWxXaWR0aC9zZXRPdmVycmlkZUxvZ2ljYWxI
ZWlnaHQuCi0gICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCi0gICAgICAgIGNoaWxk
LT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gY2hpbGQtPnNldE92ZXJyaWRlV2lkdGgoY2hp
bGRQcmVmZXJyZWRTaXplKSA6IGNoaWxkLT5zZXRPdmVycmlkZUhlaWdodChjaGlsZFByZWZlcnJl
ZFNpemUpOworICAgIGlmIChoYXNPcnRob2dvbmFsRmxvdyhjaGlsZCkpCisgICAgICAgIGNoaWxk
LT5zZXRPdmVycmlkZUhlaWdodChjaGlsZFByZWZlcnJlZFNpemUpOwogICAgIGVsc2UKLSAgICAg
ICAgY2hpbGQtPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBjaGlsZC0+c2V0T3ZlcnJpZGVI
ZWlnaHQoY2hpbGRQcmVmZXJyZWRTaXplKSA6IGNoaWxkLT5zZXRPdmVycmlkZVdpZHRoKGNoaWxk
UHJlZmVycmVkU2l6ZSk7CisgICAgICAgIGNoaWxkLT5zZXRPdmVycmlkZVdpZHRoKGNoaWxkUHJl
ZmVycmVkU2l6ZSk7CiB9CiAKIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91dEFuZFBsYWNl
Q2hpbGRyZW5JbmxpbmVEaXJlY3Rpb24oY29uc3QgV1RGOjpWZWN0b3I8TGF5b3V0VW5pdD4mIGNo
aWxkU2l6ZXMsIExheW91dFVuaXQgYXZhaWxhYmxlRnJlZVNwYWNlLCBmbG9hdCB0b3RhbFBvc2l0
aXZlRmxleGliaWxpdHkpCiB7CiAgICAgRmxleGlibGVCb3hJdGVyYXRvciBpdGVyYXRvcih0aGlz
KTsKLSAgICBMYXlvdXRVbml0IHN0YXJ0RWRnZSA9IGJvcmRlclN0YXJ0KCkgKyBwYWRkaW5nU3Rh
cnQoKTsKKyAgICBMYXlvdXRVbml0IHN0YXJ0RWRnZSA9IGZsb3dBd2FyZUJvcmRlclN0YXJ0KCkg
KyBmbG93QXdhcmVQYWRkaW5nU3RhcnQoKTsKIAogICAgIGlmIChoYXNQYWNraW5nU3BhY2UoYXZh
aWxhYmxlRnJlZVNwYWNlLCB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHkpKSB7CiAgICAgICAgIGlm
IChzdHlsZSgpLT5mbGV4UGFjaygpID09IFBhY2tFbmQpCkBAIC0yODUsOSArNDAwLDEwIEBAIHZv
aWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91dEFuZFBsYWNlQ2hpbGRyZW5JbmxpbmVEaXJlY3Rp
b24oY29uc3QgV1RGOjpWZWN0b3I8CiAgICAgICAgICAgICBzdGFydEVkZ2UgKz0gYXZhaWxhYmxl
RnJlZVNwYWNlIC8gMjsKICAgICB9CiAKLSAgICBMYXlvdXRVbml0IGxvZ2ljYWxUb3AgPSBib3Jk
ZXJCZWZvcmUoKSArIHBhZGRpbmdCZWZvcmUoKTsKLSAgICBMYXlvdXRVbml0IHRvdGFsQXZhaWxh
YmxlTG9naWNhbFdpZHRoID0gYXZhaWxhYmxlTG9naWNhbFdpZHRoKCk7Ci0gICAgc2V0TG9naWNh
bEhlaWdodCgwKTsKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxUb3AgPSBmbG93QXdhcmVCb3JkZXJC
ZWZvcmUoKSArIGZsb3dBd2FyZVBhZGRpbmdCZWZvcmUoKTsKKyAgICBMYXlvdXRVbml0IHRvdGFs
QXZhaWxhYmxlTG9naWNhbFdpZHRoID0gZmxvd0F3YXJlQXZhaWxhYmxlTG9naWNhbFdpZHRoKCk7
CisgICAgLy8gRklYTUU6IEkgdGhpbmsgd2Ugb25seSB3YW50IHRvIGRvIHRoaXMgZm9yIGhvcml6
b250YWwgZmxvd3MuCisgICAgc2V0Rmxvd0F3YXJlTG9naWNhbEhlaWdodCgwKTsKICAgICBzaXpl
X3QgaSA9IDA7CiAgICAgZm9yIChSZW5kZXJCb3gqIGNoaWxkID0gaXRlcmF0b3IuZmlyc3QoKTsg
Y2hpbGQ7IGNoaWxkID0gaXRlcmF0b3IubmV4dCgpLCArK2kpIHsKICAgICAgICAgLy8gRklYTUU6
IERvZXMgdGhpcyBuZWVkIHRvIHRha2UgdGhlIHNjcm9sbGJhciB3aWR0aCBpbnRvIGFjY291bnQ/
CkBAIC0yOTYsMjAgKzQxMiwyMSBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRBbmRQ
bGFjZUNoaWxkcmVuSW5saW5lRGlyZWN0aW9uKGNvbnN0IFdURjo6VmVjdG9yPAogICAgICAgICBj
aGlsZC0+c2V0Q2hpbGROZWVkc0xheW91dCh0cnVlKTsKICAgICAgICAgY2hpbGQtPmxheW91dElm
TmVlZGVkKCk7CiAKLSAgICAgICAgc2V0TG9naWNhbEhlaWdodChzdGQ6Om1heChsb2dpY2FsSGVp
Z2h0KCksIGJvcmRlckJlZm9yZSgpICsgcGFkZGluZ0JlZm9yZSgpICsgbWFyZ2luQmVmb3JlRm9y
Q2hpbGQoY2hpbGQpICsgbG9naWNhbEhlaWdodEZvckNoaWxkKGNoaWxkKSArIG1hcmdpbkFmdGVy
Rm9yQ2hpbGQoY2hpbGQpICsgcGFkZGluZ0FmdGVyKCkgKyBib3JkZXJBZnRlcigpICsgc2Nyb2xs
YmFyTG9naWNhbEhlaWdodCgpKSk7CisgICAgICAgIC8vIEZJWE1FOiBJIHRoaW5rIHdlIG9ubHkg
d2FudCB0byBkbyB0aGlzIGZvciBob3Jpem9udGFsIGZsb3dzLgorICAgICAgICBzZXRGbG93QXdh
cmVMb2dpY2FsSGVpZ2h0KHN0ZDo6bWF4KGZsb3dBd2FyZUxvZ2ljYWxIZWlnaHQoKSwgZmxvd0F3
YXJlQm9yZGVyQmVmb3JlKCkgKyBmbG93QXdhcmVQYWRkaW5nQmVmb3JlKCkgKyBmbG93QXdhcmVN
YXJnaW5CZWZvcmVGb3JDaGlsZChjaGlsZCkgKyBmbG93QXdhcmVMb2dpY2FsSGVpZ2h0Rm9yQ2hp
bGQoY2hpbGQpICsgZmxvd0F3YXJlTWFyZ2luQWZ0ZXJGb3JDaGlsZChjaGlsZCkgKyBmbG93QXdh
cmVQYWRkaW5nQWZ0ZXIoKSArIGZsb3dBd2FyZUJvcmRlckFmdGVyKCkgKyBzY3JvbGxiYXJMb2dp
Y2FsSGVpZ2h0KCkpKTsKIAogICAgICAgICBpZiAobWFyZ2luU3RhcnRTdHlsZUZvckNoaWxkKGNo
aWxkKS5pc0F1dG8oKSkKLSAgICAgICAgICAgIHNldE1hcmdpblN0YXJ0Rm9yQ2hpbGQoY2hpbGQs
IGF2YWlsYWJsZUZyZWVTcGFjZSA+IDAgPyBscm91bmRmKGF2YWlsYWJsZUZyZWVTcGFjZSAvIHRv
dGFsUG9zaXRpdmVGbGV4aWJpbGl0eSkgOiAwKTsKKyAgICAgICAgICAgIHNldEZsb3dBd2FyZU1h
cmdpblN0YXJ0Rm9yQ2hpbGQoY2hpbGQsIGF2YWlsYWJsZUZyZWVTcGFjZSA+IDAgPyBscm91bmRm
KGF2YWlsYWJsZUZyZWVTcGFjZSAvIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSkgOiAwKTsKICAg
ICAgICAgaWYgKG1hcmdpbkVuZFN0eWxlRm9yQ2hpbGQoY2hpbGQpLmlzQXV0bygpKQotICAgICAg
ICAgICAgc2V0TWFyZ2luRW5kRm9yQ2hpbGQoY2hpbGQsIGF2YWlsYWJsZUZyZWVTcGFjZSA+IDAg
PyBscm91bmRmKGF2YWlsYWJsZUZyZWVTcGFjZSAvIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSkg
OiAwKTsKKyAgICAgICAgICAgIHNldEZsb3dBd2FyZU1hcmdpbkVuZEZvckNoaWxkKGNoaWxkLCBh
dmFpbGFibGVGcmVlU3BhY2UgPiAwID8gbHJvdW5kZihhdmFpbGFibGVGcmVlU3BhY2UgLyB0b3Rh
bFBvc2l0aXZlRmxleGliaWxpdHkpIDogMCk7CiAKLSAgICAgICAgc3RhcnRFZGdlICs9IG1hcmdp
blN0YXJ0Rm9yQ2hpbGQoY2hpbGQpOworICAgICAgICBzdGFydEVkZ2UgKz0gZmxvd0F3YXJlTWFy
Z2luU3RhcnRGb3JDaGlsZChjaGlsZCk7CiAKLSAgICAgICAgTGF5b3V0VW5pdCBjaGlsZExvZ2lj
YWxXaWR0aCA9IGxvZ2ljYWxXaWR0aEZvckNoaWxkKGNoaWxkKTsKLSAgICAgICAgTGF5b3V0VW5p
dCBsb2dpY2FsTGVmdCA9IHN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IHN0YXJ0
RWRnZSA6IHRvdGFsQXZhaWxhYmxlTG9naWNhbFdpZHRoIC0gc3RhcnRFZGdlIC0gY2hpbGRMb2dp
Y2FsV2lkdGg7CisgICAgICAgIExheW91dFVuaXQgY2hpbGRMb2dpY2FsV2lkdGggPSBmbG93QXdh
cmVMb2dpY2FsV2lkdGhGb3JDaGlsZChjaGlsZCk7CisgICAgICAgIExheW91dFVuaXQgbG9naWNh
bExlZnQgPSBpc0xlZnRUb1JpZ2h0RmxvdygpID8gc3RhcnRFZGdlIDogdG90YWxBdmFpbGFibGVM
b2dpY2FsV2lkdGggLSBzdGFydEVkZ2UgLSBjaGlsZExvZ2ljYWxXaWR0aDsKICAgICAgICAgLy8g
RklYTUU6IERvIHJlcGFpbnREdXJpbmdMYXlvdXRJZk1vdmVkLgogICAgICAgICAvLyBGSVhNRTog
U3VwcG9ydGluZyBsYXlvdXQgZGVsdGFzLgotICAgICAgICBzZXRMb2dpY2FsTG9jYXRpb25Gb3JD
aGlsZChjaGlsZCwgSW50UG9pbnQobG9naWNhbExlZnQsIGxvZ2ljYWxUb3ApKTsKKyAgICAgICAg
c2V0Rmxvd0F3YXJlTG9naWNhbExvY2F0aW9uRm9yQ2hpbGQoY2hpbGQsIEludFBvaW50KGxvZ2lj
YWxMZWZ0LCBsb2dpY2FsVG9wKSk7CiAgICAgICAgIHN0YXJ0RWRnZSArPSBjaGlsZExvZ2ljYWxX
aWR0aCArIG1hcmdpbkVuZEZvckNoaWxkKGNoaWxkKTsKIAogICAgICAgICBpZiAoaGFzUGFja2lu
Z1NwYWNlKGF2YWlsYWJsZUZyZWVTcGFjZSwgdG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5KSAmJiBz
dHlsZSgpLT5mbGV4UGFjaygpID09IFBhY2tKdXN0aWZ5ICYmIGNoaWxkU2l6ZXMuc2l6ZSgpID4g
MSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJv
eC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmgKaW5kZXgg
MTNlMTIyMTMxNjczZTFhODg0YWE4NjRlODVlMzJhNTM3NDE4MjQxNy4uNmQ1ZDcyYWJkY2E3NTAz
YTdmNTVhZjgxOGM4MTUyMzA4MjBkYWE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZsZXhpYmxlQm94LmgKQEAgLTUyLDE2ICs1MiwzOCBAQCBwcml2YXRlOgogICAgIGNs
YXNzIEZsZXhpYmxlQm94SXRlcmF0b3I7CiAgICAgdHlwZWRlZiBXVEY6Okhhc2hNYXA8Y29uc3Qg
UmVuZGVyQm94KiwgTGF5b3V0VW5pdD4gSW5mbGV4aWJsZUZsZXhJdGVtU2l6ZTsKIAotICAgIExh
eW91dFVuaXQgbG9naWNhbEJvcmRlckFuZFBhZGRpbmdXaWR0aEZvckNoaWxkKFJlbmRlckJveCog
Y2hpbGQpOwotICAgIExheW91dFVuaXQgbG9naWNhbFNjcm9sbGJhckhlaWdodEZvckNoaWxkKFJl
bmRlckJveCogY2hpbGQpOwotICAgIExlbmd0aCBtYXJnaW5TdGFydFN0eWxlRm9yQ2hpbGQoUmVu
ZGVyQm94KiBjaGlsZCk7Ci0gICAgTGVuZ3RoIG1hcmdpbkVuZFN0eWxlRm9yQ2hpbGQoUmVuZGVy
Qm94KiBjaGlsZCk7Ci0gICAgTGF5b3V0VW5pdCBwcmVmZXJyZWRMb2dpY2FsQ29udGVudFdpZHRo
Rm9yRmxleEl0ZW0oUmVuZGVyQm94KiBjaGlsZCk7CisgICAgTGF5b3V0VW5pdCBoYXNPcnRob2dv
bmFsRmxvdyhSZW5kZXJCb3gqIGNoaWxkKSBjb25zdDsKKyAgICBMYXlvdXRVbml0IGlzSG9yaXpv
bnRhbEZsb3coKSBjb25zdDsKKyAgICBMYXlvdXRVbml0IGlzTGVmdFRvUmlnaHRGbG93KCkgY29u
c3Q7CisgICAgdm9pZCBzZXRGbG93QXdhcmVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQpOworICAg
IExheW91dFVuaXQgZmxvd0F3YXJlTG9naWNhbEhlaWdodEZvckNoaWxkKFJlbmRlckJveCogY2hp
bGQpOworICAgIExheW91dFVuaXQgZmxvd0F3YXJlTG9naWNhbFdpZHRoRm9yQ2hpbGQoUmVuZGVy
Qm94KiBjaGlsZCk7CisgICAgTGF5b3V0VW5pdCBmbG93QXdhcmVMb2dpY2FsSGVpZ2h0KCkgY29u
c3Q7CisgICAgTGF5b3V0VW5pdCBmbG93QXdhcmVDb250ZW50TG9naWNhbFdpZHRoKCkgY29uc3Q7
CisgICAgTGF5b3V0VW5pdCBmbG93QXdhcmVBdmFpbGFibGVMb2dpY2FsV2lkdGgoKSBjb25zdDsK
KyAgICBMYXlvdXRVbml0IGZsb3dBd2FyZUJvcmRlclN0YXJ0KCkgY29uc3Q7CisgICAgTGF5b3V0
VW5pdCBmbG93QXdhcmVCb3JkZXJCZWZvcmUoKSBjb25zdDsKKyAgICBMYXlvdXRVbml0IGZsb3dB
d2FyZUJvcmRlckFmdGVyKCkgY29uc3Q7CisgICAgTGF5b3V0VW5pdCBmbG93QXdhcmVQYWRkaW5n
U3RhcnQoKSBjb25zdDsKKyAgICBMYXlvdXRVbml0IGZsb3dBd2FyZVBhZGRpbmdCZWZvcmUoKSBj
b25zdDsKKyAgICBMYXlvdXRVbml0IGZsb3dBd2FyZVBhZGRpbmdBZnRlcigpIGNvbnN0OworICAg
IExheW91dFVuaXQgZmxvd0F3YXJlTWFyZ2luU3RhcnRGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxk
KSBjb25zdDsKKyAgICBMYXlvdXRVbml0IGZsb3dBd2FyZU1hcmdpbkJlZm9yZUZvckNoaWxkKFJl
bmRlckJveCogY2hpbGQpIGNvbnN0OworICAgIExheW91dFVuaXQgZmxvd0F3YXJlTWFyZ2luQWZ0
ZXJGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKSBjb25zdDsKKyAgICB2b2lkIHNldEZsb3dBd2Fy
ZU1hcmdpblN0YXJ0Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCwgTGF5b3V0VW5pdCk7CisgICAg
dm9pZCBzZXRGbG93QXdhcmVNYXJnaW5FbmRGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkLCBMYXlv
dXRVbml0KTsKKyAgICAvLyBGSVhNRTogU3VwcG9ydGluZyBsYXlvdXQgZGVsdGFzLgorICAgIHZv
aWQgc2V0Rmxvd0F3YXJlTG9naWNhbExvY2F0aW9uRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCwg
Y29uc3QgTGF5b3V0UG9pbnQmKTsKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxCb3JkZXJBbmRQYWRk
aW5nV2lkdGhGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKSBjb25zdDsKKyAgICBMYXlvdXRVbml0
IGxvZ2ljYWxTY3JvbGxiYXJIZWlnaHRGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKSBjb25zdDsK
KyAgICBMZW5ndGggbWFyZ2luU3RhcnRTdHlsZUZvckNoaWxkKFJlbmRlckJveCogY2hpbGQpIGNv
bnN0OworICAgIExlbmd0aCBtYXJnaW5FbmRTdHlsZUZvckNoaWxkKFJlbmRlckJveCogY2hpbGQp
IGNvbnN0OworICAgIExheW91dFVuaXQgcHJlZmVycmVkTG9naWNhbENvbnRlbnRXaWR0aEZvckZs
ZXhJdGVtKFJlbmRlckJveCogY2hpbGQpIGNvbnN0OwogCiAgICAgdm9pZCBsYXlvdXRJbmxpbmVE
aXJlY3Rpb24oYm9vbCByZWxheW91dENoaWxkcmVuKTsKIAotICAgIGZsb2F0IGxvZ2ljYWxQb3Np
dGl2ZUZsZXhGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKTsKLSAgICBmbG9hdCBsb2dpY2FsTmVn
YXRpdmVGbGV4Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCk7CisgICAgZmxvYXQgbG9naWNhbFBv
c2l0aXZlRmxleEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQpIGNvbnN0OworICAgIGZsb2F0IGxv
Z2ljYWxOZWdhdGl2ZUZsZXhGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKSBjb25zdDsKIAogICAg
IHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aChib29sIHJlbGF5b3V0Q2hpbGRyZW4s
IEZsZXhpYmxlQm94SXRlcmF0b3ImLCBMYXlvdXRVbml0JiwgZmxvYXQmIHRvdGFsUG9zaXRpdmVG
bGV4aWJpbGl0eSwgZmxvYXQmIHRvdGFsTmVnYXRpdmVGbGV4aWJpbGl0eSk7CiAgICAgYm9vbCBy
dW5GcmVlU3BhY2VBbGxvY2F0aW9uQWxnb3JpdGhtSW5saW5lRGlyZWN0aW9uKExheW91dFVuaXQm
IGF2YWlsYWJsZUZyZWVTcGFjZSwgZmxvYXQmIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSwgZmxv
YXQmIHRvdGFsTmVnYXRpdmVGbGV4aWJpbGl0eSwgSW5mbGV4aWJsZUZsZXhJdGVtU2l6ZSYsIFdU
Rjo6VmVjdG9yPExheW91dFVuaXQ+JiBjaGlsZFNpemVzKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108523</attachid>
            <date>2011-09-23 13:18:14 -0700</date>
            <delta_ts>2011-09-23 13:23:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68665-20110923131812.patch</filename>
            <type>text/plain</type>
            <size>24424</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU4NDgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5MDc3MTQwZTU5ODkyYzRk
YzkyOTM2ZGFjZDZiNzg3NWZiY2I1MGUxLi5iYjAzNzNjMWQ0YWQyNmE3MTE4YTc1MjNlNDFjZDU4
YzYxY2Y5YjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMTEtMDktMjIgIE9qYW4g
VmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KKworICAgICAgICByZWZhY3RvciBSZW5kZXJGbGV4
aWJsZUJveCB0byB1c2UgZmxleC1mbG93IGF3YXJlIG1ldGhvZHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NjY1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBqdXN0IGEgcmVmYWN0b3IuIEp1
c3QgbW92ZSB0aGUgYWxsIHRoZSBjb2RlIHRoYXQgbmVlZHMgdG8KKyAgICAgICAgYmUgZmxvdyBh
d2FyZSBpbnRvIGhlbHBlciBmdW5jdGlvbnMuIEFjdHVhbGx5IG1ha2luZyB0aGVtIGZsb3ctYXdh
cmUKKyAgICAgICAgY2FuIGJlIGRvbmUgaW4gYSBmb2xsb3d1cCBwYXRjaC4KKworICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmg6CisgICAgICAgIE1vdmVkIHNldExvZ2ljYWxMb2NhdGlvbkZvckNoaWxkIGludG8gUmVu
ZGVyRmxleGlibGVCb3ggc2luY2UgdGhhdCB3YXMgdGhlIG9ubHkgY2FsbGVyLgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJGbGV4aWJsZUJveDo6aGFzT3J0aG9nb25hbEZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRmxleGlibGVCb3g6OmlzSG9yaXpvbnRhbEZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRmxleGlibGVCb3g6OmlzTGVmdFRvUmlnaHRGbG93KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckZsZXhpYmxlQm94OjpzZXRGbG93QXdhcmVMb2dpY2FsSGVpZ2h0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpmbG93QXdhcmVMb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmZsb3dBd2FyZUxvZ2ljYWxX
aWR0aEZvckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpmbG93
QXdhcmVMb2dpY2FsSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94
OjpmbG93QXdhcmVDb250ZW50TG9naWNhbFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckZsZXhpYmxlQm94OjpmbG93QXdhcmVBdmFpbGFibGVMb2dpY2FsV2lkdGgpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmZsb3dBd2FyZUJvcmRlclN0YXJ0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpmbG93QXdhcmVCb3JkZXJCZWZvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmZsb3dBd2FyZUJvcmRlckFmdGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpmbG93QXdhcmVQYWRkaW5n
U3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmZsb3dBd2FyZVBh
ZGRpbmdCZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmZsb3dB
d2FyZVBhZGRpbmdBZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6
Zmxvd0F3YXJlTWFyZ2luU3RhcnRGb3JDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJG
bGV4aWJsZUJveDo6Zmxvd0F3YXJlTWFyZ2luQmVmb3JlRm9yQ2hpbGQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmZsb3dBd2FyZU1hcmdpbkFmdGVyRm9yQ2hpbGQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OnNldEZsb3dBd2FyZU1hcmdpblN0
YXJ0Rm9yQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OnNldEZs
b3dBd2FyZU1hcmdpbkVuZEZvckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhp
YmxlQm94OjpzZXRGbG93QXdhcmVMb2dpY2FsTG9jYXRpb25Gb3JDaGlsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6bG9naWNhbEJvcmRlckFuZFBhZGRpbmdXaWR0aEZv
ckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94Ojpsb2dpY2FsU2Ny
b2xsYmFySGVpZ2h0Rm9yQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVC
b3g6Om1hcmdpblN0YXJ0U3R5bGVGb3JDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJG
bGV4aWJsZUJveDo6bWFyZ2luRW5kU3R5bGVGb3JDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJGbGV4aWJsZUJveDo6cHJlZmVycmVkTG9naWNhbENvbnRlbnRXaWR0aEZvckZsZXhJdGVt
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRJbmxpbmVEaXJl
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmxvZ2ljYWxQb3Np
dGl2ZUZsZXhGb3JDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6
bG9naWNhbE5lZ2F0aXZlRmxleEZvckNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZs
ZXhpYmxlQm94Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRoKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckZsZXhpYmxlQm94OjpydW5GcmVlU3BhY2VBbGxvY2F0aW9uQWxnb3JpdGhtSW5s
aW5lRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpzZXRM
b2dpY2FsT3ZlcnJpZGVTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94
OjpsYXlvdXRBbmRQbGFjZUNoaWxkcmVuSW5saW5lRGlyZWN0aW9uKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaDoKKwogMjAxMS0wOS0yMyAgTWFyaW8gU2FuY2hleiBQ
cmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gUmVtb3ZlIGV4dHJh
IHNwYWNlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxhc3QgbGluZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IGE1MmQxOTNmNGU0MTA3ZTA5NzA3YjE5M2Uw
MGM2ZjQ1ODY4M2VjM2EuLmMzZjNkYWIxNWE4OTY4MWM3MTgwYmYzMGExZmRkNjVkNjA4Mzc5YjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMTg2MywxNCAr
MTg2Myw2IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmhhbmRsZUFmdGVyU2lkZU9mQmxvY2soTGF5b3V0
VW5pdCBiZWZvcmVTaWRlLCBMYXlvdXRVbml0IGFmdGVyCiAgICAgc2V0Q29sbGFwc2VkQm90dG9t
TWFyZ2luKG1hcmdpbkluZm8pOwogfQogCi12b2lkIFJlbmRlckJsb2NrOjpzZXRMb2dpY2FsTG9j
YXRpb25Gb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkLCBjb25zdCBMYXlvdXRQb2ludCYgbG9jYXRp
b24pCi17Ci0gICAgaWYgKHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCi0gICAg
ICAgIGNoaWxkLT5zZXRMb2NhdGlvbihsb2NhdGlvbik7Ci0gICAgZWxzZQotICAgICAgICBjaGls
ZC0+c2V0TG9jYXRpb24obG9jYXRpb24udHJhbnNwb3NlZFBvaW50KCkpOwotfQotCiB2b2lkIFJl
bmRlckJsb2NrOjpzZXRMb2dpY2FsTGVmdEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQsIExheW91
dFVuaXQgbG9naWNhbExlZnQsIEFwcGx5TGF5b3V0RGVsdGFNb2RlIGFwcGx5RGVsdGEpCiB7CiAg
ICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmgKaW5kZXggYzk3ZjYzODMwOWE1MDUxYWExNmFiYjgzNDIwYTU2NjQ2MDlm
MmYzNS4uMjYwZWRmMjY0ZWU1MGRmNDU4MTA4NjRmMjNlMGU0MWE0OGRkZTUyZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKQEAgLTIwOSw4ICsyMDksNiBAQCBwdWJsaWM6
CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkg
eyByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGNoaWxkLT5oZWlnaHQoKSA6IGNo
aWxkLT53aWR0aCgpOyB9CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsVG9wRm9yQ2hpbGQoUmVuZGVy
Qm94KiBjaGlsZCkgeyByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGNoaWxkLT55
KCkgOiBjaGlsZC0+eCgpOyB9CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdEZvckNoaWxkKFJl
bmRlckJveCogY2hpbGQpIHsgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBjaGls
ZC0+eCgpIDogY2hpbGQtPnkoKTsgfQotICAgIC8vIEZJWE1FOiBTdXBwb3J0aW5nIGxheW91dCBk
ZWx0YXMuCi0gICAgdm9pZCBzZXRMb2dpY2FsTG9jYXRpb25Gb3JDaGlsZChSZW5kZXJCb3gqIGNo
aWxkLCBjb25zdCBMYXlvdXRQb2ludCYpOwogICAgIHZvaWQgc2V0TG9naWNhbExlZnRGb3JDaGls
ZChSZW5kZXJCb3gqIGNoaWxkLCBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0LCBBcHBseUxheW91dERl
bHRhTW9kZSA9IERvTm90QXBwbHlMYXlvdXREZWx0YSk7CiAgICAgdm9pZCBzZXRMb2dpY2FsVG9w
Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBBcHBseUxh
eW91dERlbHRhTW9kZSA9IERvTm90QXBwbHlMYXlvdXREZWx0YSk7CiAgICAgTGF5b3V0VW5pdCBt
YXJnaW5CZWZvcmVGb3JDaGlsZChSZW5kZXJCb3hNb2RlbE9iamVjdCogY2hpbGQpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKaW5kZXgg
Yzk5NWEyM2E5YWQyN2YxYTQzNmRkYTE5NzgxMTA5ZDhjN2M0YmEzZi4uZjBkNzRjZTQxNzdlNWY1
YmNhZDQ5YmQ0MzhmOTI0YzI2OWQ3YzljMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmxleGlibGVCb3guY3BwCkBAIC0xODcsMzggKzE4NywxNTMgQEAgdm9pZCBSZW5k
ZXJGbGV4aWJsZUJveDo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBpbnQsIEJs
b2NrTGF5b3V0UGFzcykKICAgICBzZXROZWVkc0xheW91dChmYWxzZSk7CiB9CiAKLUxheW91dFVu
aXQgUmVuZGVyRmxleGlibGVCb3g6OmxvZ2ljYWxCb3JkZXJBbmRQYWRkaW5nV2lkdGhGb3JDaGls
ZChSZW5kZXJCb3gqIGNoaWxkKQorYm9vbCBSZW5kZXJGbGV4aWJsZUJveDo6aGFzT3J0aG9nb25h
bEZsb3coUmVuZGVyQm94KiBjaGlsZCkgY29uc3QKIHsKLSAgICByZXR1cm4gaXNIb3Jpem9udGFs
V3JpdGluZ01vZGUoKSA/IGNoaWxkLT5ib3JkZXJBbmRQYWRkaW5nV2lkdGgoKSA6IGNoaWxkLT5i
b3JkZXJBbmRQYWRkaW5nSGVpZ2h0KCk7CisgICAgLy8gRklYTUU6IElzIHRoZSBjaGlsZC0+aXNI
b3Jpem9udGFsV3JpdGluZ01vZGUoKSBjaGVjayBjb3JyZWN0IGlmIHRoZSBjaGlsZCBpcyBhIGZs
ZXhib3g/CisgICAgLy8gU2hvdWxkIGl0IGJlIHVzaW5nIGNoaWxkLT5pc0hvcml6b250YWxGbG93
IGluIHRoYXQgY2FzZT8KKyAgICAvLyBPciBkbyB3ZSBvbmx5IGNhcmUgYWJvdXQgdGhlIHBhcmVu
dCdzIHdyaXRpbmcgbW9kZT8KKyAgICByZXR1cm4gaXNIb3Jpem9udGFsRmxvdygpICE9IGNoaWxk
LT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpOwogfQogCi1MYXlvdXRVbml0IFJlbmRlckZsZXhp
YmxlQm94Ojpsb2dpY2FsU2Nyb2xsYmFySGVpZ2h0Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkK
K2Jvb2wgUmVuZGVyRmxleGlibGVCb3g6OmlzSG9yaXpvbnRhbEZsb3coKSBjb25zdAogewotICAg
IHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gY2hpbGQtPnZlcnRpY2FsU2Nyb2xs
YmFyV2lkdGgoKSA6IGNoaWxkLT5ob3Jpem9udGFsU2Nyb2xsYmFySGVpZ2h0KCk7CisgICAgLy8g
RklYTUU6IFRha2UgZmxleC1mbG93IHZhbHVlIGludG8gYWNjb3VudC4KKyAgICByZXR1cm4gaXNI
b3Jpem9udGFsV3JpdGluZ01vZGUoKTsKIH0KIAotTGVuZ3RoIFJlbmRlckZsZXhpYmxlQm94Ojpt
YXJnaW5TdGFydFN0eWxlRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkKK2Jvb2wgUmVuZGVyRmxl
eGlibGVCb3g6OmlzTGVmdFRvUmlnaHRGbG93KCkgY29uc3QKIHsKLSAgICBpZiAoaXNIb3Jpem9u
dGFsV3JpdGluZ01vZGUoKSkKLSAgICAgICAgcmV0dXJuIHN0eWxlKCktPmlzTGVmdFRvUmlnaHRE
aXJlY3Rpb24oKSA/IGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5MZWZ0KCkgOiBjaGlsZC0+c3R5bGUo
KS0+bWFyZ2luUmlnaHQoKTsKLSAgICByZXR1cm4gc3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVj
dGlvbigpID8gY2hpbGQtPnN0eWxlKCktPm1hcmdpblRvcCgpIDogY2hpbGQtPnN0eWxlKCktPm1h
cmdpbkJvdHRvbSgpOworICAgIC8vIEZJWE1FOiBUYWtlIGZsZXgtZmxvdyB2YWx1ZSBpbnRvIGFj
Y291bnQuCisgICAgcmV0dXJuIHN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKTsKIH0K
IAotTGVuZ3RoIFJlbmRlckZsZXhpYmxlQm94OjptYXJnaW5FbmRTdHlsZUZvckNoaWxkKFJlbmRl
ckJveCogY2hpbGQpCisvLyBGSVhNRTogTWFrZSBhbGwgdGhlc2UgZmxvdyBhd2FyZSBtZXRob2Rz
IGFjdHVhbGx5IGJlIGZsb3cgYXdhcmUuCisKK3ZvaWQgUmVuZGVyRmxleGlibGVCb3g6OnNldEZs
b3dBd2FyZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBzaXplKQoreworICAgIHNldExvZ2ljYWxI
ZWlnaHQoc2l6ZSk7Cit9CisKK0xheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OmZsb3dBd2Fy
ZUxvZ2ljYWxIZWlnaHRGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKQoreworICAgIHJldHVybiBs
b2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoY2hpbGQpOworfQorCitMYXlvdXRVbml0IFJlbmRlckZsZXhp
YmxlQm94OjpmbG93QXdhcmVMb2dpY2FsV2lkdGhGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKQor
eworICAgIHJldHVybiBsb2dpY2FsV2lkdGhGb3JDaGlsZChjaGlsZCk7Cit9CisKK0xheW91dFVu
aXQgUmVuZGVyRmxleGlibGVCb3g6OmZsb3dBd2FyZUxvZ2ljYWxIZWlnaHQoKSBjb25zdAorewor
ICAgIHJldHVybiBsb2dpY2FsSGVpZ2h0KCk7Cit9CisKK0xheW91dFVuaXQgUmVuZGVyRmxleGli
bGVCb3g6OmZsb3dBd2FyZUNvbnRlbnRMb2dpY2FsV2lkdGgoKSBjb25zdAoreworICAgIHJldHVy
biBjb250ZW50TG9naWNhbFdpZHRoKCk7Cit9CisKK0xheW91dFVuaXQgUmVuZGVyRmxleGlibGVC
b3g6OmZsb3dBd2FyZUF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpOworfQorCitMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxl
Qm94OjpmbG93QXdhcmVCb3JkZXJTdGFydCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGJvcmRlclN0
YXJ0KCk7Cit9CisKK0xheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OmZsb3dBd2FyZUJvcmRl
ckJlZm9yZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGJvcmRlckJlZm9yZSgpOworfQorCitMYXlv
dXRVbml0IFJlbmRlckZsZXhpYmxlQm94OjpmbG93QXdhcmVCb3JkZXJBZnRlcigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGJvcmRlckFmdGVyKCk7Cit9CisKK0xheW91dFVuaXQgUmVuZGVyRmxleGli
bGVCb3g6OmZsb3dBd2FyZVBhZGRpbmdTdGFydCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHBhZGRp
bmdTdGFydCgpOworfQorCitMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94OjpmbG93QXdhcmVQ
YWRkaW5nQmVmb3JlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcGFkZGluZ0JlZm9yZSgpOworfQor
CitMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94OjpmbG93QXdhcmVQYWRkaW5nQWZ0ZXIoKSBj
b25zdAoreworICAgIHJldHVybiBwYWRkaW5nQWZ0ZXIoKTsKK30KKworTGF5b3V0VW5pdCBSZW5k
ZXJGbGV4aWJsZUJveDo6Zmxvd0F3YXJlTWFyZ2luU3RhcnRGb3JDaGlsZChSZW5kZXJCb3gqIGNo
aWxkKSBjb25zdAoreworICAgIHJldHVybiBtYXJnaW5TdGFydEZvckNoaWxkKGNoaWxkKTsKK30K
KworTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6Zmxvd0F3YXJlTWFyZ2luQmVmb3JlRm9y
Q2hpbGQoUmVuZGVyQm94KiBjaGlsZCkgY29uc3QKK3sKKyAgICByZXR1cm4gbWFyZ2luQmVmb3Jl
Rm9yQ2hpbGQoY2hpbGQpOworfQorCitMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94OjpmbG93
QXdhcmVNYXJnaW5BZnRlckZvckNoaWxkKFJlbmRlckJveCogY2hpbGQpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1hcmdpbkFmdGVyRm9yQ2hpbGQoY2hpbGQpOworfQorCit2b2lkIFJlbmRlckZsZXhp
YmxlQm94OjpzZXRGbG93QXdhcmVNYXJnaW5TdGFydEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQs
IExheW91dFVuaXQgbWFyZ2luKQoreworICAgIHNldE1hcmdpblN0YXJ0Rm9yQ2hpbGQoY2hpbGQs
IG1hcmdpbik7Cit9CisKK3ZvaWQgUmVuZGVyRmxleGlibGVCb3g6OnNldEZsb3dBd2FyZU1hcmdp
bkVuZEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQsIExheW91dFVuaXQgbWFyZ2luKQoreworICAg
IHNldE1hcmdpbkVuZEZvckNoaWxkKGNoaWxkLCBtYXJnaW4pOworfQorCit2b2lkIFJlbmRlckZs
ZXhpYmxlQm94OjpzZXRGbG93QXdhcmVMb2dpY2FsTG9jYXRpb25Gb3JDaGlsZChSZW5kZXJCb3gq
IGNoaWxkLCBjb25zdCBMYXlvdXRQb2ludCYgbG9jYXRpb24pCit7CisgICAgaWYgKGlzSG9yaXpv
bnRhbEZsb3coKSkKKyAgICAgICAgY2hpbGQtPnNldExvY2F0aW9uKGxvY2F0aW9uKTsKKyAgICBl
bHNlCisgICAgICAgIGNoaWxkLT5zZXRMb2NhdGlvbihsb2NhdGlvbi50cmFuc3Bvc2VkUG9pbnQo
KSk7Cit9CisKK0xheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OmxvZ2ljYWxCb3JkZXJBbmRQ
YWRkaW5nV2lkdGhGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKSBjb25zdAoreworICAgIHJldHVy
biBpc0hvcml6b250YWxGbG93KCkgPyBjaGlsZC0+Ym9yZGVyQW5kUGFkZGluZ1dpZHRoKCkgOiBj
aGlsZC0+Ym9yZGVyQW5kUGFkZGluZ0hlaWdodCgpOworfQorCitMYXlvdXRVbml0IFJlbmRlckZs
ZXhpYmxlQm94Ojpsb2dpY2FsU2Nyb2xsYmFySGVpZ2h0Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGls
ZCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNIb3Jpem9udGFsRmxvdygpID8gY2hpbGQtPnZlcnRp
Y2FsU2Nyb2xsYmFyV2lkdGgoKSA6IGNoaWxkLT5ob3Jpem9udGFsU2Nyb2xsYmFySGVpZ2h0KCk7
Cit9CisKK0xlbmd0aCBSZW5kZXJGbGV4aWJsZUJveDo6bWFyZ2luU3RhcnRTdHlsZUZvckNoaWxk
KFJlbmRlckJveCogY2hpbGQpIGNvbnN0Cit7CisgICAgaWYgKGlzSG9yaXpvbnRhbEZsb3coKSkK
KyAgICAgICAgcmV0dXJuIGlzTGVmdFRvUmlnaHRGbG93KCkgPyBjaGlsZC0+c3R5bGUoKS0+bWFy
Z2luTGVmdCgpIDogY2hpbGQtPnN0eWxlKCktPm1hcmdpblJpZ2h0KCk7CisgICAgcmV0dXJuIGlz
TGVmdFRvUmlnaHRGbG93KCkgPyBjaGlsZC0+c3R5bGUoKS0+bWFyZ2luVG9wKCkgOiBjaGlsZC0+
c3R5bGUoKS0+bWFyZ2luQm90dG9tKCk7Cit9CisKK0xlbmd0aCBSZW5kZXJGbGV4aWJsZUJveDo6
bWFyZ2luRW5kU3R5bGVGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKSBjb25zdAogewotICAgIGlm
IChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQotICAgICAgICByZXR1cm4gc3R5bGUoKS0+aXNM
ZWZ0VG9SaWdodERpcmVjdGlvbigpID8gY2hpbGQtPnN0eWxlKCktPm1hcmdpblJpZ2h0KCkgOiBj
aGlsZC0+c3R5bGUoKS0+bWFyZ2luTGVmdCgpOwotICAgIHJldHVybiBzdHlsZSgpLT5pc0xlZnRU
b1JpZ2h0RGlyZWN0aW9uKCkgPyBjaGlsZC0+c3R5bGUoKS0+bWFyZ2luQm90dG9tKCkgOiBjaGls
ZC0+c3R5bGUoKS0+bWFyZ2luVG9wKCk7CisgICAgaWYgKGlzSG9yaXpvbnRhbEZsb3coKSkKKyAg
ICAgICAgcmV0dXJuIGlzTGVmdFRvUmlnaHRGbG93KCkgPyBjaGlsZC0+c3R5bGUoKS0+bWFyZ2lu
UmlnaHQoKSA6IGNoaWxkLT5zdHlsZSgpLT5tYXJnaW5MZWZ0KCk7CisgICAgcmV0dXJuIGlzTGVm
dFRvUmlnaHRGbG93KCkgPyBjaGlsZC0+c3R5bGUoKS0+bWFyZ2luQm90dG9tKCkgOiBjaGlsZC0+
c3R5bGUoKS0+bWFyZ2luVG9wKCk7CiB9CiAKLUxheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6
OnByZWZlcnJlZExvZ2ljYWxDb250ZW50V2lkdGhGb3JGbGV4SXRlbShSZW5kZXJCb3gqIGNoaWxk
KQorTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJveDo6cHJlZmVycmVkTG9naWNhbENvbnRlbnRX
aWR0aEZvckZsZXhJdGVtKFJlbmRlckJveCogY2hpbGQpIGNvbnN0CiB7Ci0gICAgTGVuZ3RoIHdp
ZHRoID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGNoaWxkLT5zdHlsZSgpLT53aWR0aCgp
IDogY2hpbGQtPnN0eWxlKCktPmhlaWdodCgpOworICAgIExlbmd0aCB3aWR0aCA9IGlzSG9yaXpv
bnRhbEZsb3coKSA/IGNoaWxkLT5zdHlsZSgpLT53aWR0aCgpIDogY2hpbGQtPnN0eWxlKCktPmhl
aWdodCgpOwogICAgIGlmICh3aWR0aC5pc0F1dG8oKSkgewotICAgICAgICBMYXlvdXRVbml0IGxv
Z2ljYWxXaWR0aCA9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPT0gY2hpbGQtPmlzSG9yaXpv
bnRhbFdyaXRpbmdNb2RlKCkgPyBjaGlsZC0+bWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKCkgOiBj
aGlsZC0+bG9naWNhbEhlaWdodCgpOworICAgICAgICBMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCA9
IGhhc09ydGhvZ29uYWxGbG93KGNoaWxkKSA/IGNoaWxkLT5sb2dpY2FsSGVpZ2h0KCkgOiBjaGls
ZC0+bWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKCk7CiAgICAgICAgIHJldHVybiBsb2dpY2FsV2lk
dGggLSBsb2dpY2FsQm9yZGVyQW5kUGFkZGluZ1dpZHRoRm9yQ2hpbGQoY2hpbGQpIC0gbG9naWNh
bFNjcm9sbGJhckhlaWdodEZvckNoaWxkKGNoaWxkKTsKICAgICB9Ci0gICAgcmV0dXJuIGlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBjaGlsZC0+Y29udGVudFdpZHRoKCkgOiBjaGlsZC0+Y29u
dGVudEhlaWdodCgpOworICAgIHJldHVybiBpc0hvcml6b250YWxGbG93KCkgPyBjaGlsZC0+Y29u
dGVudFdpZHRoKCkgOiBjaGlsZC0+Y29udGVudEhlaWdodCgpOwogfQogCiB2b2lkIFJlbmRlckZs
ZXhpYmxlQm94OjpsYXlvdXRJbmxpbmVEaXJlY3Rpb24oYm9vbCByZWxheW91dENoaWxkcmVuKQpA
QCAtMjI5LDcgKzM0NCw3IEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91dElubGluZURp
cmVjdGlvbihib29sIHJlbGF5b3V0Q2hpbGRyZW4pCiAgICAgVHJlZU9yZGVySXRlcmF0b3IgdHJl
ZUl0ZXJhdG9yKHRoaXMpOwogCiAgICAgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aChyZWxh
eW91dENoaWxkcmVuLCB0cmVlSXRlcmF0b3IsIHByZWZlcnJlZExvZ2ljYWxXaWR0aCwgdG90YWxQ
b3NpdGl2ZUZsZXhpYmlsaXR5LCB0b3RhbE5lZ2F0aXZlRmxleGliaWxpdHkpOwotICAgIExheW91
dFVuaXQgYXZhaWxhYmxlRnJlZVNwYWNlID0gY29udGVudExvZ2ljYWxXaWR0aCgpIC0gcHJlZmVy
cmVkTG9naWNhbFdpZHRoOworICAgIExheW91dFVuaXQgYXZhaWxhYmxlRnJlZVNwYWNlID0gZmxv
d0F3YXJlQ29udGVudExvZ2ljYWxXaWR0aCgpIC0gcHJlZmVycmVkTG9naWNhbFdpZHRoOwogCiAg
ICAgRmxleE9yZGVySXRlcmF0b3IgZmxleEl0ZXJhdG9yKHRoaXMsIHRyZWVJdGVyYXRvci5mbGV4
T3JkZXJWYWx1ZXMoKSk7CiAgICAgSW5mbGV4aWJsZUZsZXhJdGVtU2l6ZSBpbmZsZXhpYmxlSXRl
bXM7CkBAIC0yNDQsMTQgKzM1OSwxNCBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRJ
bmxpbmVEaXJlY3Rpb24oYm9vbCByZWxheW91dENoaWxkcmVuKQogICAgIC8vIEZJWE1FOiBIYW5k
bGUgZGlzdHJpYnV0aW9uIG9mIGNyb3NzLWF4aXMgc3BhY2UgKHRoaXJkIGRpc3RyaWJ1dGlvbiBy
b3VuZCkuCiB9CiAKLWZsb2F0IFJlbmRlckZsZXhpYmxlQm94Ojpsb2dpY2FsUG9zaXRpdmVGbGV4
Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkKK2Zsb2F0IFJlbmRlckZsZXhpYmxlQm94Ojpsb2dp
Y2FsUG9zaXRpdmVGbGV4Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGNoaWxkLT5zdHlsZSgpLT5mbGV4Ym94
V2lkdGhQb3NpdGl2ZUZsZXgoKSA6IGNoaWxkLT5zdHlsZSgpLT5mbGV4Ym94SGVpZ2h0UG9zaXRp
dmVGbGV4KCk7CisgICAgcmV0dXJuIGlzSG9yaXpvbnRhbEZsb3coKSA/IGNoaWxkLT5zdHlsZSgp
LT5mbGV4Ym94V2lkdGhQb3NpdGl2ZUZsZXgoKSA6IGNoaWxkLT5zdHlsZSgpLT5mbGV4Ym94SGVp
Z2h0UG9zaXRpdmVGbGV4KCk7CiB9CiAKLWZsb2F0IFJlbmRlckZsZXhpYmxlQm94Ojpsb2dpY2Fs
TmVnYXRpdmVGbGV4Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkKK2Zsb2F0IFJlbmRlckZsZXhp
YmxlQm94Ojpsb2dpY2FsTmVnYXRpdmVGbGV4Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkgY29u
c3QKIHsKLSAgICByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGNoaWxkLT5zdHls
ZSgpLT5mbGV4Ym94V2lkdGhOZWdhdGl2ZUZsZXgoKSA6IGNoaWxkLT5zdHlsZSgpLT5mbGV4Ym94
SGVpZ2h0TmVnYXRpdmVGbGV4KCk7CisgICAgcmV0dXJuIGlzSG9yaXpvbnRhbEZsb3coKSA/IGNo
aWxkLT5zdHlsZSgpLT5mbGV4Ym94V2lkdGhOZWdhdGl2ZUZsZXgoKSA6IGNoaWxkLT5zdHlsZSgp
LT5mbGV4Ym94SGVpZ2h0TmVnYXRpdmVGbGV4KCk7CiB9CiAKIHZvaWQgUmVuZGVyRmxleGlibGVC
b3g6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGgoYm9vbCByZWxheW91dENoaWxkcmVuLCBU
cmVlT3JkZXJJdGVyYXRvciYgaXRlcmF0b3IsIExheW91dFVuaXQmIHByZWZlcnJlZExvZ2ljYWxX
aWR0aCwgZmxvYXQmIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSwgZmxvYXQmIHRvdGFsTmVnYXRp
dmVGbGV4aWJpbGl0eSkKQEAgLTI1OSw3ICszNzQsNyBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94
Ojpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRoKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgVHJl
ZQogICAgIHByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IDA7CiAgICAgdG90YWxQb3NpdGl2ZUZsZXhp
YmlsaXR5ID0gdG90YWxOZWdhdGl2ZUZsZXhpYmlsaXR5ID0gMDsKIAotICAgIExheW91dFVuaXQg
ZmxleGJveEF2YWlsYWJsZUxvZ2ljYWxXaWR0aCA9IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpOwor
ICAgIExheW91dFVuaXQgZmxleGJveEF2YWlsYWJsZUxvZ2ljYWxXaWR0aCA9IGZsb3dBd2FyZUF2
YWlsYWJsZUxvZ2ljYWxXaWR0aCgpOwogICAgIGZvciAoUmVuZGVyQm94KiBjaGlsZCA9IGl0ZXJh
dG9yLmZpcnN0KCk7IGNoaWxkOyBjaGlsZCA9IGl0ZXJhdG9yLm5leHQoKSkgewogICAgICAgICAv
LyBXZSBhbHdheXMgaGF2ZSB0byBsYXkgb3V0IGZsZXhpYmxlIG9iamVjdHMgYWdhaW4sIHNpbmNl
IHRoZSBmbGV4IGRpc3RyaWJ1dGlvbgogICAgICAgICAvLyBtYXkgaGF2ZSBjaGFuZ2VkLCBhbmQg
d2UgbmVlZCB0byByZWFsbG9jYXRlIHNwYWNlLgpAQCAtMjY5LDcgKzM4NCw3IEBAIHZvaWQgUmVu
ZGVyRmxleGlibGVCb3g6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGgoYm9vbCByZWxheW91
dENoaWxkcmVuLCBUcmVlCiAgICAgICAgIGNoaWxkLT5sYXlvdXRJZk5lZWRlZCgpOwogCiAgICAg
ICAgIC8vIFdlIGNhbid0IGp1c3QgdXNlIG1hcmdpblN0YXJ0Rm9yQ2hpbGQsIGV0LiBhbC4gYmVj
YXVzZSAiYXV0byIgbmVlZHMgdG8gYmUgdHJlYXRlZCBhcyAwLgotICAgICAgICBpZiAoaXNIb3Jp
em9udGFsV3JpdGluZ01vZGUoKSkgeworICAgICAgICBpZiAoaXNIb3Jpem9udGFsRmxvdygpKSB7
CiAgICAgICAgICAgICBwcmVmZXJyZWRMb2dpY2FsV2lkdGggKz0gY2hpbGQtPnN0eWxlKCktPm1h
cmdpbkxlZnQoKS5jYWxjTWluVmFsdWUoZmxleGJveEF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CiAg
ICAgICAgICAgICBwcmVmZXJyZWRMb2dpY2FsV2lkdGggKz0gY2hpbGQtPnN0eWxlKCktPm1hcmdp
blJpZ2h0KCkuY2FsY01pblZhbHVlKGZsZXhib3hBdmFpbGFibGVMb2dpY2FsV2lkdGgpOwogICAg
ICAgICB9IGVsc2UgewpAQCAtMjk1LDcgKzQxMCw3IEBAIGJvb2wgUmVuZGVyRmxleGlibGVCb3g6
OnJ1bkZyZWVTcGFjZUFsbG9jYXRpb25BbGdvcml0aG1JbmxpbmVEaXJlY3Rpb24oRmxleE9yZGVy
CiB7CiAgICAgY2hpbGRTaXplcy5jbGVhcigpOwogCi0gICAgTGF5b3V0VW5pdCBmbGV4Ym94QXZh
aWxhYmxlTG9naWNhbFdpZHRoID0gYXZhaWxhYmxlTG9naWNhbFdpZHRoKCk7CisgICAgTGF5b3V0
VW5pdCBmbGV4Ym94QXZhaWxhYmxlTG9naWNhbFdpZHRoID0gZmxvd0F3YXJlQXZhaWxhYmxlTG9n
aWNhbFdpZHRoKCk7CiAgICAgZm9yIChSZW5kZXJCb3gqIGNoaWxkID0gaXRlcmF0b3IuZmlyc3Qo
KTsgY2hpbGQ7IGNoaWxkID0gaXRlcmF0b3IubmV4dCgpKSB7CiAgICAgICAgIExheW91dFVuaXQg
Y2hpbGRQcmVmZXJyZWRTaXplOwogICAgICAgICBpZiAoaW5mbGV4aWJsZUl0ZW1zLmNvbnRhaW5z
KGNoaWxkKSkKQEAgLTMwNSw3ICs0MjAsNyBAQCBib29sIFJlbmRlckZsZXhpYmxlQm94OjpydW5G
cmVlU3BhY2VBbGxvY2F0aW9uQWxnb3JpdGhtSW5saW5lRGlyZWN0aW9uKEZsZXhPcmRlcgogICAg
ICAgICAgICAgaWYgKGF2YWlsYWJsZUZyZWVTcGFjZSA+IDAgJiYgdG90YWxQb3NpdGl2ZUZsZXhp
YmlsaXR5ID4gMCkgewogICAgICAgICAgICAgICAgIGNoaWxkUHJlZmVycmVkU2l6ZSArPSBscm91
bmRmKGF2YWlsYWJsZUZyZWVTcGFjZSAqIGxvZ2ljYWxQb3NpdGl2ZUZsZXhGb3JDaGlsZChjaGls
ZCkgLyB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHkpOwogCi0gICAgICAgICAgICAgICAgTGVuZ3Ro
IGNoaWxkTG9naWNhbE1heFdpZHRoID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGNoaWxk
LT5zdHlsZSgpLT5tYXhXaWR0aCgpIDogY2hpbGQtPnN0eWxlKCktPm1heEhlaWdodCgpOworICAg
ICAgICAgICAgICAgIExlbmd0aCBjaGlsZExvZ2ljYWxNYXhXaWR0aCA9IGlzSG9yaXpvbnRhbEZs
b3coKSA/IGNoaWxkLT5zdHlsZSgpLT5tYXhXaWR0aCgpIDogY2hpbGQtPnN0eWxlKCktPm1heEhl
aWdodCgpOwogICAgICAgICAgICAgICAgIGlmICghY2hpbGRMb2dpY2FsTWF4V2lkdGguaXNVbmRl
ZmluZWQoKSAmJiBjaGlsZExvZ2ljYWxNYXhXaWR0aC5pc1NwZWNpZmllZCgpICYmIGNoaWxkUHJl
ZmVycmVkU2l6ZSA+IGNoaWxkTG9naWNhbE1heFdpZHRoLmNhbGNWYWx1ZShmbGV4Ym94QXZhaWxh
YmxlTG9naWNhbFdpZHRoKSkgewogICAgICAgICAgICAgICAgICAgICBjaGlsZFByZWZlcnJlZFNp
emUgPSBjaGlsZExvZ2ljYWxNYXhXaWR0aC5jYWxjVmFsdWUoZmxleGJveEF2YWlsYWJsZUxvZ2lj
YWxXaWR0aCk7CiAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZUZyZWVTcGFjZSAtPSBjaGls
ZFByZWZlcnJlZFNpemUgLSBwcmVmZXJyZWRMb2dpY2FsQ29udGVudFdpZHRoRm9yRmxleEl0ZW0o
Y2hpbGQpOwpAQCAtMzE3LDcgKzQzMiw3IEBAIGJvb2wgUmVuZGVyRmxleGlibGVCb3g6OnJ1bkZy
ZWVTcGFjZUFsbG9jYXRpb25BbGdvcml0aG1JbmxpbmVEaXJlY3Rpb24oRmxleE9yZGVyCiAgICAg
ICAgICAgICB9IGVsc2UgaWYgKGF2YWlsYWJsZUZyZWVTcGFjZSA8IDAgJiYgdG90YWxOZWdhdGl2
ZUZsZXhpYmlsaXR5ID4gMCkgewogICAgICAgICAgICAgICAgIGNoaWxkUHJlZmVycmVkU2l6ZSAr
PSBscm91bmRmKGF2YWlsYWJsZUZyZWVTcGFjZSAqIGxvZ2ljYWxOZWdhdGl2ZUZsZXhGb3JDaGls
ZChjaGlsZCkgLyB0b3RhbE5lZ2F0aXZlRmxleGliaWxpdHkpOwogCi0gICAgICAgICAgICAgICAg
TGVuZ3RoIGNoaWxkTG9naWNhbE1pbldpZHRoID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/
IGNoaWxkLT5zdHlsZSgpLT5taW5XaWR0aCgpIDogY2hpbGQtPnN0eWxlKCktPm1pbkhlaWdodCgp
OworICAgICAgICAgICAgICAgIExlbmd0aCBjaGlsZExvZ2ljYWxNaW5XaWR0aCA9IGlzSG9yaXpv
bnRhbEZsb3coKSA/IGNoaWxkLT5zdHlsZSgpLT5taW5XaWR0aCgpIDogY2hpbGQtPnN0eWxlKCkt
Pm1pbkhlaWdodCgpOwogICAgICAgICAgICAgICAgIGlmICghY2hpbGRMb2dpY2FsTWluV2lkdGgu
aXNVbmRlZmluZWQoKSAmJiBjaGlsZExvZ2ljYWxNaW5XaWR0aC5pc1NwZWNpZmllZCgpICYmIGNo
aWxkUHJlZmVycmVkU2l6ZSA8IGNoaWxkTG9naWNhbE1pbldpZHRoLmNhbGNWYWx1ZShmbGV4Ym94
QXZhaWxhYmxlTG9naWNhbFdpZHRoKSkgewogICAgICAgICAgICAgICAgICAgICBjaGlsZFByZWZl
cnJlZFNpemUgPSBjaGlsZExvZ2ljYWxNaW5XaWR0aC5jYWxjVmFsdWUoZmxleGJveEF2YWlsYWJs
ZUxvZ2ljYWxXaWR0aCk7CiAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZUZyZWVTcGFjZSAr
PSBwcmVmZXJyZWRMb2dpY2FsQ29udGVudFdpZHRoRm9yRmxleEl0ZW0oY2hpbGQpIC0gY2hpbGRQ
cmVmZXJyZWRTaXplOwpAQCAtMzQxLDE1ICs0NTYsMTUgQEAgc3RhdGljIGJvb2wgaGFzUGFja2lu
Z1NwYWNlKExheW91dFVuaXQgYXZhaWxhYmxlRnJlZVNwYWNlLCBmbG9hdCB0b3RhbFBvc2l0aXZl
RmwKIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OnNldExvZ2ljYWxPdmVycmlkZVNpemUoUmVuZGVy
Qm94KiBjaGlsZCwgTGF5b3V0VW5pdCBjaGlsZFByZWZlcnJlZFNpemUpCiB7CiAgICAgLy8gRklY
TUU6IFJlbmFtZSBzZXRPdmVycmlkZVdpZHRoL3NldE92ZXJyaWRlSGVpZ2h0IHRvIHNldE92ZXJy
aWRlTG9naWNhbFdpZHRoL3NldE92ZXJyaWRlTG9naWNhbEhlaWdodC4KLSAgICBpZiAoaXNIb3Jp
em9udGFsV3JpdGluZ01vZGUoKSkKLSAgICAgICAgY2hpbGQtPmlzSG9yaXpvbnRhbFdyaXRpbmdN
b2RlKCkgPyBjaGlsZC0+c2V0T3ZlcnJpZGVXaWR0aChjaGlsZFByZWZlcnJlZFNpemUpIDogY2hp
bGQtPnNldE92ZXJyaWRlSGVpZ2h0KGNoaWxkUHJlZmVycmVkU2l6ZSk7CisgICAgaWYgKGhhc09y
dGhvZ29uYWxGbG93KGNoaWxkKSkKKyAgICAgICAgY2hpbGQtPnNldE92ZXJyaWRlSGVpZ2h0KGNo
aWxkUHJlZmVycmVkU2l6ZSk7CiAgICAgZWxzZQotICAgICAgICBjaGlsZC0+aXNIb3Jpem9udGFs
V3JpdGluZ01vZGUoKSA/IGNoaWxkLT5zZXRPdmVycmlkZUhlaWdodChjaGlsZFByZWZlcnJlZFNp
emUpIDogY2hpbGQtPnNldE92ZXJyaWRlV2lkdGgoY2hpbGRQcmVmZXJyZWRTaXplKTsKKyAgICAg
ICAgY2hpbGQtPnNldE92ZXJyaWRlV2lkdGgoY2hpbGRQcmVmZXJyZWRTaXplKTsKIH0KIAogdm9p
ZCBSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0QW5kUGxhY2VDaGlsZHJlbklubGluZURpcmVjdGlv
bihGbGV4T3JkZXJJdGVyYXRvciYgaXRlcmF0b3IsIGNvbnN0IFdURjo6VmVjdG9yPExheW91dFVu
aXQ+JiBjaGlsZFNpemVzLCBMYXlvdXRVbml0IGF2YWlsYWJsZUZyZWVTcGFjZSwgZmxvYXQgdG90
YWxQb3NpdGl2ZUZsZXhpYmlsaXR5KQogewotICAgIExheW91dFVuaXQgc3RhcnRFZGdlID0gYm9y
ZGVyU3RhcnQoKSArIHBhZGRpbmdTdGFydCgpOworICAgIExheW91dFVuaXQgc3RhcnRFZGdlID0g
Zmxvd0F3YXJlQm9yZGVyU3RhcnQoKSArIGZsb3dBd2FyZVBhZGRpbmdTdGFydCgpOwogCiAgICAg
aWYgKGhhc1BhY2tpbmdTcGFjZShhdmFpbGFibGVGcmVlU3BhY2UsIHRvdGFsUG9zaXRpdmVGbGV4
aWJpbGl0eSkpIHsKICAgICAgICAgaWYgKHN0eWxlKCktPmZsZXhQYWNrKCkgPT0gUGFja0VuZCkK
QEAgLTM1OCw5ICs0NzMsOSBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRBbmRQbGFj
ZUNoaWxkcmVuSW5saW5lRGlyZWN0aW9uKEZsZXhPcmRlckl0ZXJhdG9yJgogICAgICAgICAgICAg
c3RhcnRFZGdlICs9IGF2YWlsYWJsZUZyZWVTcGFjZSAvIDI7CiAgICAgfQogCi0gICAgTGF5b3V0
VW5pdCBsb2dpY2FsVG9wID0gYm9yZGVyQmVmb3JlKCkgKyBwYWRkaW5nQmVmb3JlKCk7Ci0gICAg
TGF5b3V0VW5pdCB0b3RhbEF2YWlsYWJsZUxvZ2ljYWxXaWR0aCA9IGF2YWlsYWJsZUxvZ2ljYWxX
aWR0aCgpOwotICAgIHNldExvZ2ljYWxIZWlnaHQoMCk7CisgICAgTGF5b3V0VW5pdCBsb2dpY2Fs
VG9wID0gZmxvd0F3YXJlQm9yZGVyQmVmb3JlKCkgKyBmbG93QXdhcmVQYWRkaW5nQmVmb3JlKCk7
CisgICAgTGF5b3V0VW5pdCB0b3RhbEF2YWlsYWJsZUxvZ2ljYWxXaWR0aCA9IGZsb3dBd2FyZUF2
YWlsYWJsZUxvZ2ljYWxXaWR0aCgpOworICAgIHNldEZsb3dBd2FyZUxvZ2ljYWxIZWlnaHQoMCk7
CiAgICAgc2l6ZV90IGkgPSAwOwogICAgIGZvciAoUmVuZGVyQm94KiBjaGlsZCA9IGl0ZXJhdG9y
LmZpcnN0KCk7IGNoaWxkOyBjaGlsZCA9IGl0ZXJhdG9yLm5leHQoKSwgKytpKSB7CiAgICAgICAg
IC8vIEZJWE1FOiBEb2VzIHRoaXMgbmVlZCB0byB0YWtlIHRoZSBzY3JvbGxiYXIgd2lkdGggaW50
byBhY2NvdW50PwpAQCAtMzY5LDIwICs0ODQsMjAgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6
bGF5b3V0QW5kUGxhY2VDaGlsZHJlbklubGluZURpcmVjdGlvbihGbGV4T3JkZXJJdGVyYXRvciYK
ICAgICAgICAgY2hpbGQtPnNldENoaWxkTmVlZHNMYXlvdXQodHJ1ZSk7CiAgICAgICAgIGNoaWxk
LT5sYXlvdXRJZk5lZWRlZCgpOwogCi0gICAgICAgIHNldExvZ2ljYWxIZWlnaHQoc3RkOjptYXgo
bG9naWNhbEhlaWdodCgpLCBib3JkZXJCZWZvcmUoKSArIHBhZGRpbmdCZWZvcmUoKSArIG1hcmdp
bkJlZm9yZUZvckNoaWxkKGNoaWxkKSArIGxvZ2ljYWxIZWlnaHRGb3JDaGlsZChjaGlsZCkgKyBt
YXJnaW5BZnRlckZvckNoaWxkKGNoaWxkKSArIHBhZGRpbmdBZnRlcigpICsgYm9yZGVyQWZ0ZXIo
KSArIHNjcm9sbGJhckxvZ2ljYWxIZWlnaHQoKSkpOworICAgICAgICBzZXRGbG93QXdhcmVMb2dp
Y2FsSGVpZ2h0KHN0ZDo6bWF4KGZsb3dBd2FyZUxvZ2ljYWxIZWlnaHQoKSwgZmxvd0F3YXJlQm9y
ZGVyQmVmb3JlKCkgKyBmbG93QXdhcmVQYWRkaW5nQmVmb3JlKCkgKyBmbG93QXdhcmVNYXJnaW5C
ZWZvcmVGb3JDaGlsZChjaGlsZCkgKyBmbG93QXdhcmVMb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoY2hp
bGQpICsgZmxvd0F3YXJlTWFyZ2luQWZ0ZXJGb3JDaGlsZChjaGlsZCkgKyBmbG93QXdhcmVQYWRk
aW5nQWZ0ZXIoKSArIGZsb3dBd2FyZUJvcmRlckFmdGVyKCkgKyBzY3JvbGxiYXJMb2dpY2FsSGVp
Z2h0KCkpKTsKIAogICAgICAgICBpZiAobWFyZ2luU3RhcnRTdHlsZUZvckNoaWxkKGNoaWxkKS5p
c0F1dG8oKSkKLSAgICAgICAgICAgIHNldE1hcmdpblN0YXJ0Rm9yQ2hpbGQoY2hpbGQsIGF2YWls
YWJsZUZyZWVTcGFjZSA+IDAgPyBscm91bmRmKGF2YWlsYWJsZUZyZWVTcGFjZSAvIHRvdGFsUG9z
aXRpdmVGbGV4aWJpbGl0eSkgOiAwKTsKKyAgICAgICAgICAgIHNldEZsb3dBd2FyZU1hcmdpblN0
YXJ0Rm9yQ2hpbGQoY2hpbGQsIGF2YWlsYWJsZUZyZWVTcGFjZSA+IDAgPyBscm91bmRmKGF2YWls
YWJsZUZyZWVTcGFjZSAvIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSkgOiAwKTsKICAgICAgICAg
aWYgKG1hcmdpbkVuZFN0eWxlRm9yQ2hpbGQoY2hpbGQpLmlzQXV0bygpKQotICAgICAgICAgICAg
c2V0TWFyZ2luRW5kRm9yQ2hpbGQoY2hpbGQsIGF2YWlsYWJsZUZyZWVTcGFjZSA+IDAgPyBscm91
bmRmKGF2YWlsYWJsZUZyZWVTcGFjZSAvIHRvdGFsUG9zaXRpdmVGbGV4aWJpbGl0eSkgOiAwKTsK
KyAgICAgICAgICAgIHNldEZsb3dBd2FyZU1hcmdpbkVuZEZvckNoaWxkKGNoaWxkLCBhdmFpbGFi
bGVGcmVlU3BhY2UgPiAwID8gbHJvdW5kZihhdmFpbGFibGVGcmVlU3BhY2UgLyB0b3RhbFBvc2l0
aXZlRmxleGliaWxpdHkpIDogMCk7CiAKLSAgICAgICAgc3RhcnRFZGdlICs9IG1hcmdpblN0YXJ0
Rm9yQ2hpbGQoY2hpbGQpOworICAgICAgICBzdGFydEVkZ2UgKz0gZmxvd0F3YXJlTWFyZ2luU3Rh
cnRGb3JDaGlsZChjaGlsZCk7CiAKLSAgICAgICAgTGF5b3V0VW5pdCBjaGlsZExvZ2ljYWxXaWR0
aCA9IGxvZ2ljYWxXaWR0aEZvckNoaWxkKGNoaWxkKTsKLSAgICAgICAgTGF5b3V0VW5pdCBsb2dp
Y2FsTGVmdCA9IHN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IHN0YXJ0RWRnZSA6
IHRvdGFsQXZhaWxhYmxlTG9naWNhbFdpZHRoIC0gc3RhcnRFZGdlIC0gY2hpbGRMb2dpY2FsV2lk
dGg7CisgICAgICAgIExheW91dFVuaXQgY2hpbGRMb2dpY2FsV2lkdGggPSBmbG93QXdhcmVMb2dp
Y2FsV2lkdGhGb3JDaGlsZChjaGlsZCk7CisgICAgICAgIExheW91dFVuaXQgbG9naWNhbExlZnQg
PSBpc0xlZnRUb1JpZ2h0RmxvdygpID8gc3RhcnRFZGdlIDogdG90YWxBdmFpbGFibGVMb2dpY2Fs
V2lkdGggLSBzdGFydEVkZ2UgLSBjaGlsZExvZ2ljYWxXaWR0aDsKICAgICAgICAgLy8gRklYTUU6
IERvIHJlcGFpbnREdXJpbmdMYXlvdXRJZk1vdmVkLgogICAgICAgICAvLyBGSVhNRTogU3VwcG9y
dGluZyBsYXlvdXQgZGVsdGFzLgotICAgICAgICBzZXRMb2dpY2FsTG9jYXRpb25Gb3JDaGlsZChj
aGlsZCwgSW50UG9pbnQobG9naWNhbExlZnQsIGxvZ2ljYWxUb3ApKTsKKyAgICAgICAgc2V0Rmxv
d0F3YXJlTG9naWNhbExvY2F0aW9uRm9yQ2hpbGQoY2hpbGQsIEludFBvaW50KGxvZ2ljYWxMZWZ0
LCBsb2dpY2FsVG9wKSk7CiAgICAgICAgIHN0YXJ0RWRnZSArPSBjaGlsZExvZ2ljYWxXaWR0aCAr
IG1hcmdpbkVuZEZvckNoaWxkKGNoaWxkKTsKIAogICAgICAgICBpZiAoaGFzUGFja2luZ1NwYWNl
KGF2YWlsYWJsZUZyZWVTcGFjZSwgdG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5KSAmJiBzdHlsZSgp
LT5mbGV4UGFjaygpID09IFBhY2tKdXN0aWZ5ICYmIGNoaWxkU2l6ZXMuc2l6ZSgpID4gMSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmgKaW5kZXggOGI3ZTZi
NGUwM2QyM2M1OTRmOTMyYjU3Mzg4ZmY0ODFmZDdhZDMzMS4uOTZmZjNhOWY1ZTUyNzk4YjJmYmNl
NjgzOTBiYWMyZDRhMzFkYWY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZsZXhpYmxlQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZsZXhpYmxlQm94LmgKQEAgLTUzLDE2ICs1MywzOCBAQCBwcml2YXRlOgogICAgIGNsYXNzIEZs
ZXhPcmRlckl0ZXJhdG9yOwogICAgIHR5cGVkZWYgV1RGOjpIYXNoTWFwPGNvbnN0IFJlbmRlckJv
eCosIExheW91dFVuaXQ+IEluZmxleGlibGVGbGV4SXRlbVNpemU7CiAKLSAgICBMYXlvdXRVbml0
IGxvZ2ljYWxCb3JkZXJBbmRQYWRkaW5nV2lkdGhGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKTsK
LSAgICBMYXlvdXRVbml0IGxvZ2ljYWxTY3JvbGxiYXJIZWlnaHRGb3JDaGlsZChSZW5kZXJCb3gq
IGNoaWxkKTsKLSAgICBMZW5ndGggbWFyZ2luU3RhcnRTdHlsZUZvckNoaWxkKFJlbmRlckJveCog
Y2hpbGQpOwotICAgIExlbmd0aCBtYXJnaW5FbmRTdHlsZUZvckNoaWxkKFJlbmRlckJveCogY2hp
bGQpOwotICAgIExheW91dFVuaXQgcHJlZmVycmVkTG9naWNhbENvbnRlbnRXaWR0aEZvckZsZXhJ
dGVtKFJlbmRlckJveCogY2hpbGQpOworICAgIGJvb2wgaGFzT3J0aG9nb25hbEZsb3coUmVuZGVy
Qm94KiBjaGlsZCkgY29uc3Q7CisgICAgYm9vbCBpc0hvcml6b250YWxGbG93KCkgY29uc3Q7Cisg
ICAgYm9vbCBpc0xlZnRUb1JpZ2h0RmxvdygpIGNvbnN0OworICAgIHZvaWQgc2V0Rmxvd0F3YXJl
TG9naWNhbEhlaWdodChMYXlvdXRVbml0KTsKKyAgICBMYXlvdXRVbml0IGZsb3dBd2FyZUxvZ2lj
YWxIZWlnaHRGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKTsKKyAgICBMYXlvdXRVbml0IGZsb3dB
d2FyZUxvZ2ljYWxXaWR0aEZvckNoaWxkKFJlbmRlckJveCogY2hpbGQpOworICAgIExheW91dFVu
aXQgZmxvd0F3YXJlTG9naWNhbEhlaWdodCgpIGNvbnN0OworICAgIExheW91dFVuaXQgZmxvd0F3
YXJlQ29udGVudExvZ2ljYWxXaWR0aCgpIGNvbnN0OworICAgIExheW91dFVuaXQgZmxvd0F3YXJl
QXZhaWxhYmxlTG9naWNhbFdpZHRoKCkgY29uc3Q7CisgICAgTGF5b3V0VW5pdCBmbG93QXdhcmVC
b3JkZXJTdGFydCgpIGNvbnN0OworICAgIExheW91dFVuaXQgZmxvd0F3YXJlQm9yZGVyQmVmb3Jl
KCkgY29uc3Q7CisgICAgTGF5b3V0VW5pdCBmbG93QXdhcmVCb3JkZXJBZnRlcigpIGNvbnN0Owor
ICAgIExheW91dFVuaXQgZmxvd0F3YXJlUGFkZGluZ1N0YXJ0KCkgY29uc3Q7CisgICAgTGF5b3V0
VW5pdCBmbG93QXdhcmVQYWRkaW5nQmVmb3JlKCkgY29uc3Q7CisgICAgTGF5b3V0VW5pdCBmbG93
QXdhcmVQYWRkaW5nQWZ0ZXIoKSBjb25zdDsKKyAgICBMYXlvdXRVbml0IGZsb3dBd2FyZU1hcmdp
blN0YXJ0Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkgY29uc3Q7CisgICAgTGF5b3V0VW5pdCBm
bG93QXdhcmVNYXJnaW5CZWZvcmVGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKSBjb25zdDsKKyAg
ICBMYXlvdXRVbml0IGZsb3dBd2FyZU1hcmdpbkFmdGVyRm9yQ2hpbGQoUmVuZGVyQm94KiBjaGls
ZCkgY29uc3Q7CisgICAgdm9pZCBzZXRGbG93QXdhcmVNYXJnaW5TdGFydEZvckNoaWxkKFJlbmRl
ckJveCogY2hpbGQsIExheW91dFVuaXQpOworICAgIHZvaWQgc2V0Rmxvd0F3YXJlTWFyZ2luRW5k
Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCwgTGF5b3V0VW5pdCk7CisgICAgLy8gRklYTUU6IFN1
cHBvcnRpbmcgbGF5b3V0IGRlbHRhcy4KKyAgICB2b2lkIHNldEZsb3dBd2FyZUxvZ2ljYWxMb2Nh
dGlvbkZvckNoaWxkKFJlbmRlckJveCogY2hpbGQsIGNvbnN0IExheW91dFBvaW50Jik7CisgICAg
TGF5b3V0VW5pdCBsb2dpY2FsQm9yZGVyQW5kUGFkZGluZ1dpZHRoRm9yQ2hpbGQoUmVuZGVyQm94
KiBjaGlsZCkgY29uc3Q7CisgICAgTGF5b3V0VW5pdCBsb2dpY2FsU2Nyb2xsYmFySGVpZ2h0Rm9y
Q2hpbGQoUmVuZGVyQm94KiBjaGlsZCkgY29uc3Q7CisgICAgTGVuZ3RoIG1hcmdpblN0YXJ0U3R5
bGVGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKSBjb25zdDsKKyAgICBMZW5ndGggbWFyZ2luRW5k
U3R5bGVGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKSBjb25zdDsKKyAgICBMYXlvdXRVbml0IHBy
ZWZlcnJlZExvZ2ljYWxDb250ZW50V2lkdGhGb3JGbGV4SXRlbShSZW5kZXJCb3gqIGNoaWxkKSBj
b25zdDsKIAogICAgIHZvaWQgbGF5b3V0SW5saW5lRGlyZWN0aW9uKGJvb2wgcmVsYXlvdXRDaGls
ZHJlbik7CiAKLSAgICBmbG9hdCBsb2dpY2FsUG9zaXRpdmVGbGV4Rm9yQ2hpbGQoUmVuZGVyQm94
KiBjaGlsZCk7Ci0gICAgZmxvYXQgbG9naWNhbE5lZ2F0aXZlRmxleEZvckNoaWxkKFJlbmRlckJv
eCogY2hpbGQpOworICAgIGZsb2F0IGxvZ2ljYWxQb3NpdGl2ZUZsZXhGb3JDaGlsZChSZW5kZXJC
b3gqIGNoaWxkKSBjb25zdDsKKyAgICBmbG9hdCBsb2dpY2FsTmVnYXRpdmVGbGV4Rm9yQ2hpbGQo
UmVuZGVyQm94KiBjaGlsZCkgY29uc3Q7CiAKICAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dp
Y2FsV2lkdGgoYm9vbCByZWxheW91dENoaWxkcmVuLCBUcmVlT3JkZXJJdGVyYXRvciYsIExheW91
dFVuaXQmLCBmbG9hdCYgdG90YWxQb3NpdGl2ZUZsZXhpYmlsaXR5LCBmbG9hdCYgdG90YWxOZWdh
dGl2ZUZsZXhpYmlsaXR5KTsKICAgICBib29sIHJ1bkZyZWVTcGFjZUFsbG9jYXRpb25BbGdvcml0
aG1JbmxpbmVEaXJlY3Rpb24oRmxleE9yZGVySXRlcmF0b3ImLCBMYXlvdXRVbml0JiBhdmFpbGFi
bGVGcmVlU3BhY2UsIGZsb2F0JiB0b3RhbFBvc2l0aXZlRmxleGliaWxpdHksIGZsb2F0JiB0b3Rh
bE5lZ2F0aXZlRmxleGliaWxpdHksIEluZmxleGlibGVGbGV4SXRlbVNpemUmLCBXVEY6OlZlY3Rv
cjxMYXlvdXRVbml0PiYgY2hpbGRTaXplcyk7Cg==
</data>
<flag name="review"
          id="105505"
          type_id="1"
          status="+"
          setter="tony"
    />
          </attachment>
      

    </bug>

</bugzilla>