<?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>58631</bug_id>
          
          <creation_ts>2011-04-14 21:54:05 -0700</creation_ts>
          <short_desc>Complicated hash table is complicated</short_desc>
          <delta_ts>2011-04-15 10:44:38 -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>Other</rep_platform>
          <op_sys>OS X 10.5</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="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>386365</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-04-14 21:54:05 -0700</bug_when>
    <thetext>Complicated hash table is complicated</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386371</commentid>
    <comment_count>1</comment_count>
      <attachid>89736</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-04-14 22:09:04 -0700</bug_when>
    <thetext>Created attachment 89736
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386738</commentid>
    <comment_count>2</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-04-15 10:44:38 -0700</bug_when>
    <thetext>Committed r83990: &lt;http://trac.webkit.org/changeset/83990&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89736</attachid>
            <date>2011-04-14 22:09:04 -0700</date>
            <delta_ts>2011-04-15 09:37:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58631-20110414220903.patch</filename>
            <type>text/plain</type>
            <size>25383</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzOTQyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzAgQEAKKzIwMTEtMDQtMTQgIEdlb2ZmcmV5
IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBDb21wbGljYXRlZCBoYXNoIHRhYmxlIGlzIGNvbXBsaWNhdGVk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODYzMQor
ICAgICAgICAKKyAgICAgICAgTm93IHRoYXQgd2UgdXNlIHRoZSBvcGFxdWUgcm9vdHMgc3lzdGVt
IHRvIHRyYWNrIG5vZGUgd3JhcHBlciBsaWZldGltZSwKKyAgICAgICAgd2UgY2FuIHJlbW92ZSBh
IGxvdCBvZiBjb21wbGljYXRlZCBoYXNoLXRhYmxlcnkgdGhhdCB1c2VkIHRvIGRvIHRoZSBzYW1l
LgorICAgICAgICAKKyAgICAgICAgTm93LCBub3JtYWwgd29ybGQgbm9kZSB3cmFwcGVycyBhcmUg
anVzdCBzZXQgYXMgZGlyZWN0IHByb3BlcnRpZXMgb2YKKyAgICAgICAgU2NyaXB0V3JhcHBhYmxl
LCB3aGlsZSBpc29sYXRlZCB3b3JsZCBub2RlIHdyYXBwZXJzIGFuZCBvdGhlciBET00gb2JqZWN0
CisgICAgICAgIHdyYXBwZXJzIGFyZSBzdG9yZWQgaW4gYSBzaGFyZWQsIHBlci13b3JsZCBoYXNo
IHRhYmxlLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46IFBheWluZyB0aGUgcGF0Y2ggdGl0
aGUuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkOjp+RE9NV3JhcHBlcldvcmxkKToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZDo6Y2xlYXJXcmFwcGVycyk6IE5vIG1vcmUgcGVyLWRv
Y3VtZW50IGhhc2ggdGFibGVzLgorCisgICAgICAgIChXZWJDb3JlOjpKU05vZGVIYW5kbGVPd25l
cjo6ZmluYWxpemUpOiBDaGFuZ2VkIHRvIGNhbGwgYSBoZWxwZXIgZnVuY3Rpb24sCisgICAgICAg
IHNvIHRoZSBjb2RlIHRvIGRlc3Ryb3kgYSB3cmFwcGVyIGNhbiBsaXZlIG5leHQgdG8gdGhlIGNv
ZGUgdG8gY3JlYXRlIG9uZS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3Js
ZC5oOiBObyBtb3JlIHBlci1kb2N1bWVudCBoYXNoIHRhYmxlcy4KKworICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRE9NQmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1bmNhY2hlRE9NT2Jq
ZWN0V3JhcHBlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmg6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVET01Ob2RlV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpn
ZXRET01Ob2RlV3JhcHBlcik6IE5vIG1vcmUgcGVyLWRvY3VtZW50IGhhc2ggdGFibGVzLgorICAg
ICAgICBBZGRlZCB1bmNhY2hlRE9NT2JqZWN0V3JhcHBlciB0byBiZSBzeW1tZXRyaWNhbCB3aXRo
IGNhY2hlRE9NT2JqZWN0V3JhcHBlci4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRG9jdW1l
bnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNOZXdseUNy
ZWF0ZWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVXcmFwcGVySW5saW5lKTogRGl0dG8uCisKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU05vZGVDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OmdldENhY2hlZERPTU5v
ZGVXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlRE9NTm9kZVdyYXBwZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6dW5jYWNoZURPTU5vZGVXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OnRvSlMpOiBJbXBsZW1lbnRlZCB0aGUgc2NoZW1lIGRlc2NyaWJlZCBhYm92ZS4KKworICAgICAg
ICAqIGJpbmRpbmdzL2pzL1NjcmlwdFdyYXBwYWJsZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0V3JhcHBhYmxlOjp3cmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFdyYXBwYWJs
ZTo6c2V0V3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRXcmFwcGFibGU6OmNsZWFy
V3JhcHBlcik6IFNjcmlwdFdyYXBwYWJsZSBuZWVkcyBhIGhhbmRsZQorICAgICAgICBvd25lciBu
b3csIHNpbmNlIHdlIGRvbid0IGhhdmUgYW4gZXh0cmEgaGFuZGxlIGxpdmluZyBpbiBhIGhhc2gg
dGFibGUKKyAgICAgICAgdG8gbWFpbnRhaW4gb3duZXJzaGlwIGZvciB1cy4KKworICAgICAgICAq
IGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6On5Eb2N1bWVudCk6CisgICAgICAgICogZG9t
L0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZTo6c2V0RG9jdW1lbnQpOiBObyBtb3JlIHBlci1kb2N1bWVudCBoYXNoIHRhYmxlcy4KKwor
ICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKTogUmVtb3ZlZCBjYWxsIHRvCisg
ICAgICAgIGhhc0NhY2hlZERPTU5vZGVXcmFwcGVyVW5jaGVja2VkIGJlY2F1c2UgdGhhdCB3YXMg
dGhlIG9sZCB3YXkgb2YgZG9pbmcKKyAgICAgICAgdGhpbmdzLCBhbmQgSSB3YXMgaW4gdGhlIG1v
b2QgZm9yIGdldHRpbmcgcmlkIG9mIHRoZSBvbGQgd2F5LiBJdCdzCisgICAgICAgIGRlYmF0YWJs
ZSB3aGV0aGVyIHRoZSBjaGVjayB3YXMgZXZlciBhIGdvb2QgaWRlYS4gRXZlbiB3aGVuIGEgPGNh
bnZhcz4KKyAgICAgICAgZG9lc24ndCBoYXZlIGEgZGlyZWN0IEpTIHdyYXBwZXIsIG90aGVyIEpT
IHJlZmVyZW5jZXMgY2FuIHN0aWxsIGtlZXAKKyAgICAgICAgdGhlIDxjYW52YXM+IGFsaXZlLiBT
bywgaXQncyBwcm9iYWJseSBiZXN0IGFsd2F5cyB0byByZXBvcnQgZXh0cmEgY29zdC4KKwogMjAx
MS0wNC0xNCAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJl
dmlzaW9uIDgzOTM3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTI5Nyw4ICsyOTcsOCBAQCBfX1pON1dlYkNvcmUxMlNoYXJlZEJ1ZmZlckQxRXYK
IF9fWk43V2ViQ29yZTEyU3BlbGxDaGVja2VyOGRpZENoZWNrRWlSS04zV1RGNlZlY3RvcklOU18x
OFRleHRDaGVja2luZ1Jlc3VsdEVMbTBFRUUKIF9fWk43V2ViQ29yZTEyVGV4dEVuY29kaW5nQzFF
UktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxMlRleHRJdGVyYXRvcjExcmFuZ2VMZW5ndGhF
UEtOU181UmFuZ2VFYgotX19aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3IyNnJhbmdlRnJvbUxvY2F0
aW9uQW5kTGVuZ3RoRVBOU183RWxlbWVudEVpaWIKIF9fWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9y
MjZsb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZUVQS05TXzVSYW5nZUVSbVM0XworX19aTjdXZWJD
b3JlMTJUZXh0SXRlcmF0b3IyNnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoRVBOU183RWxlbWVu
dEVpaWIKIF9fWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yN2FkdmFuY2VFdgogX19aTjdXZWJDb3Jl
MTJUZXh0SXRlcmF0b3I4c3VicmFuZ2VFUE5TXzVSYW5nZUVpaQogX19aTjdXZWJDb3JlMTJUZXh0
SXRlcmF0b3JDMUVQS05TXzVSYW5nZUVOU18yMFRleHRJdGVyYXRvckJlaGF2aW9yRQpAQCAtMzUw
LDYgKzM1MCw3IEBAIF9fWk43V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXJDMkVSS05TXzE1UmUKIF9f
Wk43V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXJEMkV2CiBfX1pON1dlYkNvcmUxNERvY3VtZW50V3Jp
dGVyMTFzZXRFbmNvZGluZ0VSS04zV1RGNlN0cmluZ0ViCiBfX1pON1dlYkNvcmUxNFJlc291cmNl
SGFuZGxlMTJyZWxlYXNlUHJveHlFdgorX19aTjdXZWJDb3JlMjVnZXRDYWNoZWRET01PYmplY3RX
cmFwcGVyRVBOM0pTQzlFeGVjU3RhdGVFUHYKIF9fWk43V2ViQ29yZTE0UmVzb3VyY2VIYW5kbGUy
MGZvcmNlQ29udGVudFNuaWZmaW5nRXYKIF9fWk43V2ViQ29yZTE0UmVzb3VyY2VMb2FkZXIxNGNh
bmNlbGxlZEVycm9yRXYKIF9fWk43V2ViQ29yZTE0UmVzb3VyY2VMb2FkZXIxOXNldFNob3VsZEJ1
ZmZlckRhdGFFYgpAQCAtODEyLDcgKzgxMyw2IEBAIF9fWk43V2ViQ29yZThEb2N1bWVudDEzc3Zn
RXh0ZW5zaW9uc0V2CiBfX1pON1dlYkNvcmU4RG9jdW1lbnQxNHNldEZvY3VzZWROb2RlRU4zV1RG
MTBQYXNzUmVmUHRySU5TXzROb2RlRUVFCiBfX1pON1dlYkNvcmU4RG9jdW1lbnQxNmlzUGFnZUJv
eFZpc2libGVFaQogX19aTjdXZWJDb3JlOERvY3VtZW50MTdnZXRGb2N1c2FibGVOb2Rlc0VSTjNX
VEY2VmVjdG9ySU5TMV82UmVmUHRySU5TXzROb2RlRUVFTG0wRUVFCi1fX1pON1dlYkNvcmU4RG9j
dW1lbnQxOGNyZWF0ZVdyYXBwZXJDYWNoZUVQTlNfMTVET01XcmFwcGVyV29ybGRFCiBfX1pON1dl
YkNvcmU4RG9jdW1lbnQxOWFjY2Vzc1NWR0V4dGVuc2lvbnNFdgogX19aTjdXZWJDb3JlOERvY3Vt
ZW50MjBzdHlsZVNlbGVjdG9yQ2hhbmdlZEVOU18yM1N0eWxlU2VsZWN0b3JVcGRhdGVGbGFnRQog
X19aTjdXZWJDb3JlOERvY3VtZW50MjJjcmVhdGVEb2N1bWVudEZyYWdtZW50RXYKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmNwcAkocmV2aXNp
b24gODM5MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEsMjYgKzE2MSwxMiBAQCBET01XcmFwcGVyV29ybGQ6
On5ET01XcmFwcGVyV29ybGQoKQogICAgIEpTR2xvYmFsRGF0YTo6Q2xpZW50RGF0YSogY2xpZW50
RGF0YSA9IG1fZ2xvYmFsRGF0YS0+Y2xpZW50RGF0YTsKICAgICBBU1NFUlQoY2xpZW50RGF0YSk7
CiAgICAgc3RhdGljX2Nhc3Q8V2ViQ29yZUpTQ2xpZW50RGF0YSo+KGNsaWVudERhdGEpLT5mb3Jn
ZXRXb3JsZCh0aGlzKTsKLQotICAgIC8vIFRoZXNlIGl0ZW1zIGFyZSBjcmVhdGVkIGxhemlseS4K
LSAgICB3aGlsZSAoIW1fZG9jdW1lbnRzV2l0aFdyYXBwZXJDYWNoZXMuaXNFbXB0eSgpKQotICAg
ICAgICAoKm1fZG9jdW1lbnRzV2l0aFdyYXBwZXJDYWNoZXMuYmVnaW4oKSktPmRlc3Ryb3lXcmFw
cGVyQ2FjaGUodGhpcyk7Ci0KLSAgICB3aGlsZSAoIW1fc2NyaXB0Q29udHJvbGxlcnNXaXRoV2lu
ZG93U2hlbGxzLmlzRW1wdHkoKSkKLSAgICAgICAgKCptX3NjcmlwdENvbnRyb2xsZXJzV2l0aFdp
bmRvd1NoZWxscy5iZWdpbigpKS0+ZGVzdHJveVdpbmRvd1NoZWxsKHRoaXMpOwogfQogCiB2b2lk
IERPTVdyYXBwZXJXb3JsZDo6Y2xlYXJXcmFwcGVycygpCiB7CiAgICAgbV93cmFwcGVycy5jbGVh
cigpOwogICAgIG1fc3RyaW5nQ2FjaGUuY2xlYXIoKTsKLQotICAgIC8vIFRoZXNlIGl0ZW1zIGFy
ZSBjcmVhdGVkIGxhemlseS4KLSAgICB3aGlsZSAoIW1fZG9jdW1lbnRzV2l0aFdyYXBwZXJDYWNo
ZXMuaXNFbXB0eSgpKQotICAgICAgICAoKm1fZG9jdW1lbnRzV2l0aFdyYXBwZXJDYWNoZXMuYmVn
aW4oKSktPmRlc3Ryb3lXcmFwcGVyQ2FjaGUodGhpcyk7Ci0KLSAgICB3aGlsZSAoIW1fc2NyaXB0
Q29udHJvbGxlcnNXaXRoV2luZG93U2hlbGxzLmlzRW1wdHkoKSkKLSAgICAgICAgKCptX3Njcmlw
dENvbnRyb2xsZXJzV2l0aFdpbmRvd1NoZWxscy5iZWdpbigpKS0+ZGVzdHJveVdpbmRvd1NoZWxs
KHRoaXMpOwogfQogCiBET01XcmFwcGVyV29ybGQqIG5vcm1hbFdvcmxkKEpTQzo6SlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhKQpAQCAtMjA2LDEwICsxOTIsNyBAQCBib29sIEpTTm9kZUhhbmRsZU93
bmVyOjppc1JlYWNoYWJsZUZyb21PCiB2b2lkIEpTTm9kZUhhbmRsZU93bmVyOjpmaW5hbGl6ZShK
U0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCopCiB7CiAgICAgSlNOb2RlKiBq
c05vZGUgPSBzdGF0aWNfY2FzdDxKU05vZGUqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOwotICAg
IE5vZGUqIG5vZGUgPSBqc05vZGUtPmltcGwoKTsKLSAgICBBU1NFUlQobm9kZS0+ZG9jdW1lbnQo
KSk7Ci0gICAgQVNTRVJUKG5vZGUtPmRvY3VtZW50KCktPmdldFdyYXBwZXJDYWNoZShtX3dvcmxk
KS0+ZmluZChub2RlKS0+c2Vjb25kID09IGpzTm9kZSk7Ci0gICAgbm9kZS0+ZG9jdW1lbnQoKS0+
Z2V0V3JhcHBlckNhY2hlKG1fd29ybGQpLT5yZW1vdmUobm9kZSk7CisgICAgdW5jYWNoZURPTU5v
ZGVXcmFwcGVyKG1fd29ybGQsIGpzTm9kZS0+aW1wbCgpLCBqc05vZGUpOwogfQogCiBib29sIERP
TU9iamVjdEhhbmRsZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRs
ZTxKU0M6OlVua25vd24+LCB2b2lkKiwgSlNDOjpNYXJrU3RhY2smKQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmgJKHJldmlzaW9uIDgzOTM3KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIyLDE0ICsyMiwxMyBAQAogI2lmbmRlZiBET01XcmFwcGVyV29ybGRfaAogI2Rl
ZmluZSBET01XcmFwcGVyV29ybGRfaAogCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJKU0RPTUdsb2JhbE9iamVjdC5oIgotI2luY2x1ZGUgIkpTRE9NV3JhcHBlci5oIgogI2luY2x1
ZGUgPHJ1bnRpbWUvV2Vha0dDTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBET01PYmplY3Q7CiBjbGFzcyBTY3JpcHRDb250cm9s
bGVyOwogCiB0eXBlZGVmIEhhc2hNYXA8dm9pZCosIEpTQzo6V2VhazxET01PYmplY3Q+ID4gRE9N
T2JqZWN0V3JhcHBlck1hcDsKQEAgLTc2LDkgKzc1LDYgQEAgcHVibGljOgogICAgIC8vIEZyZWUg
YXMgbXVjaCBtZW1vcnkgaGVsZCBvbnRvIGJ5IHRoaXMgd29ybGQgYXMgcG9zc2libGUuCiAgICAg
dm9pZCBjbGVhcldyYXBwZXJzKCk7CiAKLSAgICB2b2lkIGRpZENyZWF0ZVdyYXBwZXJDYWNoZShE
b2N1bWVudCogZG9jdW1lbnQpIHsgbV9kb2N1bWVudHNXaXRoV3JhcHBlckNhY2hlcy5hZGQoZG9j
dW1lbnQpOyB9Ci0gICAgdm9pZCBkaWREZXN0cm95V3JhcHBlckNhY2hlKERvY3VtZW50KiBkb2N1
bWVudCkgeyBtX2RvY3VtZW50c1dpdGhXcmFwcGVyQ2FjaGVzLnJlbW92ZShkb2N1bWVudCk7IH0K
LQogICAgIHZvaWQgZGlkQ3JlYXRlV2luZG93U2hlbGwoU2NyaXB0Q29udHJvbGxlciogc2NyaXB0
Q29udHJvbGxlcikgeyBtX3NjcmlwdENvbnRyb2xsZXJzV2l0aFdpbmRvd1NoZWxscy5hZGQoc2Ny
aXB0Q29udHJvbGxlcik7IH0KICAgICB2b2lkIGRpZERlc3Ryb3lXaW5kb3dTaGVsbChTY3JpcHRD
b250cm9sbGVyKiBzY3JpcHRDb250cm9sbGVyKSB7IG1fc2NyaXB0Q29udHJvbGxlcnNXaXRoV2lu
ZG93U2hlbGxzLnJlbW92ZShzY3JpcHRDb250cm9sbGVyKTsgfQogCkBAIC05Nyw3ICs5Myw2IEBA
IHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBKU0M6OkpTR2xvYmFsRGF0YSogbV9nbG9iYWxE
YXRhOwotICAgIEhhc2hTZXQ8RG9jdW1lbnQqPiBtX2RvY3VtZW50c1dpdGhXcmFwcGVyQ2FjaGVz
OwogICAgIEhhc2hTZXQ8U2NyaXB0Q29udHJvbGxlcio+IG1fc2NyaXB0Q29udHJvbGxlcnNXaXRo
V2luZG93U2hlbGxzOwogICAgIGJvb2wgbV9pc05vcm1hbDsKICAgICBKU05vZGVIYW5kbGVPd25l
ciBtX2pzTm9kZUhhbmRsZU93bmVyOwpAQCAtMTE0LDE5ICsxMDksNiBAQCBpbmxpbmUgRE9NV3Jh
cHBlcldvcmxkKiBjdXJyZW50V29ybGQoSlNDCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+d29ybGQoKTsKIH0K
IAotLy8gRnJvbSBEb2N1bWVudC5oCi0KLWlubGluZSBEb2N1bWVudDo6SlNXcmFwcGVyQ2FjaGUq
IERvY3VtZW50OjpnZXRXcmFwcGVyQ2FjaGUoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkKLXsKLSAg
ICBpZiAod29ybGQtPmlzTm9ybWFsKCkpIHsKLSAgICAgICAgaWYgKERvY3VtZW50OjpKU1dyYXBw
ZXJDYWNoZSogd3JhcHBlckNhY2hlID0gbV9ub3JtYWxXb3JsZFdyYXBwZXJDYWNoZSkKLSAgICAg
ICAgICAgIHJldHVybiB3cmFwcGVyQ2FjaGU7Ci0gICAgICAgIEFTU0VSVCghbV93cmFwcGVyQ2Fj
aGVNYXAuY29udGFpbnMod29ybGQpKTsKLSAgICB9IGVsc2UgaWYgKERvY3VtZW50OjpKU1dyYXBw
ZXJDYWNoZSogd3JhcHBlckNhY2hlID0gbV93cmFwcGVyQ2FjaGVNYXAuZ2V0KHdvcmxkKSkKLSAg
ICAgICAgcmV0dXJuIHdyYXBwZXJDYWNoZTsKLSAgICByZXR1cm4gY3JlYXRlV3JhcHBlckNhY2hl
KHdvcmxkKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRE9NV3Jh
cHBlcldvcmxkX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5k
aW5nLmNwcAkocmV2aXNpb24gODM5MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUJpbmRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NCw5ICs5NCw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotdHlwZWRlZiBEb2N1
bWVudDo6SlNXcmFwcGVyQ2FjaGUgSlNXcmFwcGVyQ2FjaGU7Ci10eXBlZGVmIERvY3VtZW50OjpK
U1dyYXBwZXJDYWNoZU1hcCBKU1dyYXBwZXJDYWNoZU1hcDsKLQogY2xhc3MgSlNHbG9iYWxEYXRh
V29ybGRJdGVyYXRvciB7CiBwdWJsaWM6CiAgICAgSlNHbG9iYWxEYXRhV29ybGRJdGVyYXRvcihK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCkBAIC0xNjcsMzEgKzE2NCwxMCBAQCB2b2lkIGNhY2hl
RE9NT2JqZWN0V3JhcHBlcihKU0M6OkV4ZWNTdGF0CiAgICAgd29ybGQtPm1fd3JhcHBlcnMuc2V0
KG9iamVjdEhhbmRsZSwgV2VhazxET01PYmplY3Q+KCp3b3JsZC0+Z2xvYmFsRGF0YSgpLCB3cmFw
cGVyLCB3b3JsZC0+ZG9tT2JqZWN0SGFuZGxlT3duZXIoKSkpOwogfQogCi1ib29sIGhhc0NhY2hl
ZERPTU5vZGVXcmFwcGVyVW5jaGVja2VkKERvY3VtZW50KiBkb2N1bWVudCwgTm9kZSogbm9kZSkK
K3ZvaWQgdW5jYWNoZURPTU9iamVjdFdyYXBwZXIoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgdm9p
ZCogb2JqZWN0SGFuZGxlLCBET01PYmplY3QqIHdyYXBwZXIpCiB7Ci0gICAgaWYgKCFkb2N1bWVu
dCkKLSAgICAgICAgcmV0dXJuIGhhc0NhY2hlZERPTU9iamVjdFdyYXBwZXJVbmNoZWNrZWQoSlNE
T01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLCBub2RlKTsKLQotICAgIEpTV3JhcHBlckNh
Y2hlTWFwJiB3cmFwcGVyQ2FjaGVNYXAgPSBkb2N1bWVudC0+d3JhcHBlckNhY2hlTWFwKCk7Ci0g
ICAgZm9yIChKU1dyYXBwZXJDYWNoZU1hcDo6aXRlcmF0b3IgaXRlciA9IHdyYXBwZXJDYWNoZU1h
cC5iZWdpbigpOyBpdGVyICE9IHdyYXBwZXJDYWNoZU1hcC5lbmQoKTsgKytpdGVyKSB7Ci0gICAg
ICAgIGlmIChpdGVyLT5zZWNvbmQtPmdldChub2RlKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgY2FjaGVET01Ob2RlV3JhcHBl
cihKU0M6OkV4ZWNTdGF0ZSogZXhlYywgRG9jdW1lbnQqIGRvY3VtZW50LCBOb2RlKiBub2RlLCBK
U05vZGUqIHdyYXBwZXIpCi17Ci0gICAgQVNTRVJUKHdyYXBwZXIpOwotICAgIGlmICghZG9jdW1l
bnQpCi0gICAgICAgIGNhY2hlRE9NT2JqZWN0V3JhcHBlcihleGVjLCBub2RlLCB3cmFwcGVyKTsK
LSAgICBlbHNlCi0gICAgICAgIGRvY3VtZW50LT5nZXRXcmFwcGVyQ2FjaGUoY3VycmVudFdvcmxk
KGV4ZWMpKS0+c2V0KG5vZGUsIFdlYWs8SlNOb2RlPihleGVjLT5nbG9iYWxEYXRhKCksIHdyYXBw
ZXIsIGN1cnJlbnRXb3JsZChleGVjKS0+anNOb2RlSGFuZGxlT3duZXIoKSkpOwotCi0gICAgaWYg
KGN1cnJlbnRXb3JsZChleGVjKS0+aXNOb3JtYWwoKSkgewotICAgICAgICBub2RlLT5zZXRXcmFw
cGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgd3JhcHBlcik7Ci0gICAgICAgIEFTU0VSVChub2RlLT53
cmFwcGVyKCkgPT0gKGRvY3VtZW50ID8gZG9jdW1lbnQtPmdldFdyYXBwZXJDYWNoZShjdXJyZW50
V29ybGQoZXhlYykpLT5nZXQobm9kZSkuZ2V0KCkgOiBkb21PYmplY3RXcmFwcGVyTWFwRm9yKGV4
ZWMpLmdldChub2RlKS5nZXQoKSkpOwotICAgIH0KKyAgICBBU1NFUlRfVU5VU0VEKHdyYXBwZXIs
IHdvcmxkLT5tX3dyYXBwZXJzLmdldChvYmplY3RIYW5kbGUpID09IHdyYXBwZXIpOworICAgIHdv
cmxkLT5tX3dyYXBwZXJzLnJlbW92ZShvYmplY3RIYW5kbGUpOwogfQogCiB2b2lkIG1hcmtBY3Rp
dmVPYmplY3RzRm9yQ29udGV4dChNYXJrU3RhY2smIG1hcmtTdGFjaywgSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KQpAQCAtMjE4LDQ0ICsxOTQsNiBAQCB2b2lkIG1hcmtBY3RpdmVPYmplY3RzRm9yQ29udGV4dChN
YXJrU3RhCiAgICAgfQogfQogCi10eXBlZGVmIHN0ZDo6cGFpcjxKU05vZGUqLCBET01XcmFwcGVy
V29ybGQqPiBXcmFwcGVyQW5kV29ybGQ7Ci10eXBlZGVmIFdURjo6VmVjdG9yPFdyYXBwZXJBbmRX
b3JsZCwgOD4gV3JhcHBlclNldDsKLQotc3RhdGljIGlubGluZSB2b2lkIHRha2VXcmFwcGVycyhO
b2RlKiBub2RlLCBEb2N1bWVudCogZG9jdW1lbnQsIFdyYXBwZXJTZXQmIHdyYXBwZXJTZXQpCi17
Ci0gICAgaWYgKGRvY3VtZW50KSB7Ci0gICAgICAgIEpTV3JhcHBlckNhY2hlTWFwJiB3cmFwcGVy
Q2FjaGVNYXAgPSBkb2N1bWVudC0+d3JhcHBlckNhY2hlTWFwKCk7Ci0gICAgICAgIGZvciAoSlNX
cmFwcGVyQ2FjaGVNYXA6Oml0ZXJhdG9yIGl0ZXIgPSB3cmFwcGVyQ2FjaGVNYXAuYmVnaW4oKTsg
aXRlciAhPSB3cmFwcGVyQ2FjaGVNYXAuZW5kKCk7ICsraXRlcikgewotICAgICAgICAgICAgSlNO
b2RlKiB3cmFwcGVyID0gaXRlci0+c2Vjb25kLT50YWtlKG5vZGUpLmdldCgpOwotICAgICAgICAg
ICAgaWYgKCF3cmFwcGVyKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAg
d3JhcHBlclNldC5hcHBlbmQoV3JhcHBlckFuZFdvcmxkKHdyYXBwZXIsIGl0ZXItPmZpcnN0KSk7
Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBmb3IgKEpTR2xvYmFsRGF0YVdvcmxk
SXRlcmF0b3Igd29ybGRJdGVyKEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKSk7IHdv
cmxkSXRlcjsgKyt3b3JsZEl0ZXIpIHsKLSAgICAgICAgICAgIERPTVdyYXBwZXJXb3JsZCogd29y
bGQgPSAqd29ybGRJdGVyOwotICAgICAgICAgICAgaWYgKEpTTm9kZSogd3JhcHBlciA9IHN0YXRp
Y19jYXN0PEpTTm9kZSo+KHdvcmxkLT5tX3dyYXBwZXJzLnRha2Uobm9kZSkuZ2V0KCkpKQotICAg
ICAgICAgICAgICAgIHdyYXBwZXJTZXQuYXBwZW5kKFdyYXBwZXJBbmRXb3JsZCh3cmFwcGVyLCB3
b3JsZCkpOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIHVwZGF0ZURPTU5vZGVEb2N1bWVu
dChOb2RlKiBub2RlLCBEb2N1bWVudCogb2xkRG9jdW1lbnQsIERvY3VtZW50KiBuZXdEb2N1bWVu
dCkKLXsKLSAgICBBU1NFUlQob2xkRG9jdW1lbnQgIT0gbmV3RG9jdW1lbnQpOwotCi0gICAgV3Jh
cHBlclNldCB3cmFwcGVyU2V0OwotICAgIHRha2VXcmFwcGVycyhub2RlLCBvbGREb2N1bWVudCwg
d3JhcHBlclNldCk7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgd3JhcHBlclNldC5z
aXplKCk7ICsraSkgewotICAgICAgICBKU05vZGUqIHdyYXBwZXIgPSB3cmFwcGVyU2V0W2ldLmZp
cnN0OwotICAgICAgICBpZiAobmV3RG9jdW1lbnQpCi0gICAgICAgICAgICBuZXdEb2N1bWVudC0+
Z2V0V3JhcHBlckNhY2hlKHdyYXBwZXJTZXRbaV0uc2Vjb25kKS0+c2V0KG5vZGUsIFdlYWs8SlNO
b2RlPigqd3JhcHBlclNldFtpXS5zZWNvbmQtPmdsb2JhbERhdGEoKSwgd3JhcHBlciwgd3JhcHBl
clNldFtpXS5zZWNvbmQtPmpzTm9kZUhhbmRsZU93bmVyKCkpKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgd3JhcHBlclNldFtpXS5zZWNvbmQtPm1fd3JhcHBlcnMuc2V0KG5vZGUsIFdlYWs8
RE9NT2JqZWN0Pigqd3JhcHBlclNldFtpXS5zZWNvbmQtPmdsb2JhbERhdGEoKSwgd3JhcHBlciwg
d3JhcHBlclNldFtpXS5zZWNvbmQtPmRvbU9iamVjdEhhbmRsZU93bmVyKCkpKTsKLSAgICB9Ci19
Ci0KIHZvaWQgbWFya0RPTU9iamVjdFdyYXBwZXIoTWFya1N0YWNrJiBtYXJrU3RhY2ssIEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgdm9pZCogb2JqZWN0KQogewogICAgIC8vIEZJWE1FOiBUaGlz
IGNvdWxkIGJlIGNoYW5nZWQgdG8gb25seSBtYXJrIHdyYXBwZXJzIHRoYXQgYXJlICJvYnNlcnZh
YmxlIgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgJKHJl
dmlzaW9uIDgzOTM4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5n
LmgJKHdvcmtpbmcgY29weSkKQEAgLTExNiwxNSArMTE2LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICBET01PYmplY3QqIGdldENhY2hlZERPTU9iamVjdFdyYXBwZXIoSlNDOjpFeGVjU3Rh
dGUqLCB2b2lkKiBvYmplY3RIYW5kbGUpOwogICAgIGJvb2wgaGFzQ2FjaGVkRE9NT2JqZWN0V3Jh
cHBlcihKU0M6OkpTR2xvYmFsRGF0YSosIHZvaWQqIG9iamVjdEhhbmRsZSk7CiAgICAgdm9pZCBj
YWNoZURPTU9iamVjdFdyYXBwZXIoSlNDOjpFeGVjU3RhdGUqLCB2b2lkKiBvYmplY3RIYW5kbGUs
IERPTU9iamVjdCogd3JhcHBlcik7CisgICAgdm9pZCB1bmNhY2hlRE9NT2JqZWN0V3JhcHBlcihE
T01XcmFwcGVyV29ybGQqLCB2b2lkKiBvYmplY3RIYW5kbGUsIERPTU9iamVjdCogd3JhcHBlcik7
CiAKLSAgICBKU05vZGUqIGdldENhY2hlZERPTU5vZGVXcmFwcGVyKEpTQzo6RXhlY1N0YXRlKiwg
RG9jdW1lbnQqLCBOb2RlKik7Ci0gICAgdm9pZCBjYWNoZURPTU5vZGVXcmFwcGVyKEpTQzo6RXhl
Y1N0YXRlKiwgRG9jdW1lbnQqLCBOb2RlKiwgSlNOb2RlKiB3cmFwcGVyKTsKLSAgICB2b2lkIHVw
ZGF0ZURPTU5vZGVEb2N1bWVudChOb2RlKiwgRG9jdW1lbnQqIG9sZERvY3VtZW50LCBEb2N1bWVu
dCogbmV3RG9jdW1lbnQpOwotCisgICAgSlNOb2RlKiBnZXRDYWNoZWRET01Ob2RlV3JhcHBlcihK
U0M6OkV4ZWNTdGF0ZSosIE5vZGUqKTsKKyAgICB2b2lkIGNhY2hlRE9NTm9kZVdyYXBwZXIoSlND
OjpFeGVjU3RhdGUqLCBOb2RlKiwgSlNOb2RlKiB3cmFwcGVyKTsKKyAgICB2b2lkIHVuY2FjaGVE
T01Ob2RlV3JhcHBlcihET01XcmFwcGVyV29ybGQqLCBOb2RlKiwgSlNOb2RlKiB3cmFwcGVyKTsK
KyAgICAKICAgICB2b2lkIG1hcmtBY3RpdmVPYmplY3RzRm9yQ29udGV4dChKU0M6Ok1hcmtTdGFj
ayYsIEpTQzo6SlNHbG9iYWxEYXRhJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogICAgIHZv
aWQgbWFya0RPTU9iamVjdFdyYXBwZXIoSlNDOjpNYXJrU3RhY2smLCBKU0M6OkpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgdm9pZCogb2JqZWN0KTsKICAgICBib29sIGhhc0NhY2hlZERPTU9iamVj
dFdyYXBwZXJVbmNoZWNrZWQoSlNDOjpKU0dsb2JhbERhdGEqLCB2b2lkKiBvYmplY3RIYW5kbGUp
OwotICAgIGJvb2wgaGFzQ2FjaGVkRE9NTm9kZVdyYXBwZXJVbmNoZWNrZWQoRG9jdW1lbnQqLCBO
b2RlKik7CiAKICAgICBKU0M6OlN0cnVjdHVyZSogZ2V0Q2FjaGVkRE9NU3RydWN0dXJlKEpTRE9N
R2xvYmFsT2JqZWN0KiwgY29uc3QgSlNDOjpDbGFzc0luZm8qKTsKICAgICBKU0M6OlN0cnVjdHVy
ZSogY2FjaGVET01TdHJ1Y3R1cmUoSlNET01HbG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSos
IGNvbnN0IEpTQzo6Q2xhc3NJbmZvKik7CkBAIC0xNzUsMTggKzE3NSwxOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgdGVtcGxhdGU8Y2xhc3MgV3JhcHBlckNsYXNzLCBjbGFzcyBET01DbGFz
cz4gaW5saW5lIEpTTm9kZSogY3JlYXRlRE9NTm9kZVdyYXBwZXIoSlNDOjpFeGVjU3RhdGUqIGV4
ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIERPTUNsYXNzKiBub2RlKQogICAg
IHsKICAgICAgICAgQVNTRVJUKG5vZGUpOwotICAgICAgICBBU1NFUlQoIWdldENhY2hlZERPTU5v
ZGVXcmFwcGVyKGV4ZWMsIG5vZGUtPmRvY3VtZW50KCksIG5vZGUpKTsKKyAgICAgICAgQVNTRVJU
KCFnZXRDYWNoZWRET01Ob2RlV3JhcHBlcihleGVjLCBub2RlKSk7CiAgICAgICAgIFdyYXBwZXJD
bGFzcyogd3JhcHBlciA9IG5ldyAoZXhlYykgV3JhcHBlckNsYXNzKGdldERPTVN0cnVjdHVyZTxX
cmFwcGVyQ2xhc3M+KGV4ZWMsIGdsb2JhbE9iamVjdCksIGdsb2JhbE9iamVjdCwgbm9kZSk7CiAg
ICAgICAgIC8vIEZJWE1FOiBUaGUgZW50aXJlIGZ1bmN0aW9uIGNhbiBiZSByZW1vdmVkLCBvbmNl
IHdlIGZpeCBjYWNoaW5nLgogICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGEgb25lLW9mZiBo
YWNrIHRvIG1ha2UgTm9kZXMgY2FjaGUgaW4gdGhlIHJpZ2h0IGdsb2JhbCBvYmplY3QuCi0gICAg
ICAgIGNhY2hlRE9NTm9kZVdyYXBwZXIoZXhlYywgbm9kZS0+ZG9jdW1lbnQoKSwgbm9kZSwgd3Jh
cHBlcik7CisgICAgICAgIGNhY2hlRE9NTm9kZVdyYXBwZXIoZXhlYywgbm9kZSwgd3JhcHBlcik7
CiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogICAgIH0KICAgICB0ZW1wbGF0ZTxjbGFzcyBXcmFw
cGVyQ2xhc3MsIGNsYXNzIERPTUNsYXNzPiBpbmxpbmUgSlNDOjpKU1ZhbHVlIGdldERPTU5vZGVX
cmFwcGVyKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBET01DbGFzcyogbm9kZSkKICAgICB7CiAgICAgICAgIGlmICghbm9kZSkKICAgICAgICAg
ICAgIHJldHVybiBKU0M6OmpzTnVsbCgpOwotICAgICAgICBpZiAoSlNDOjpKU0NlbGwqIHdyYXBw
ZXIgPSBnZXRDYWNoZWRET01Ob2RlV3JhcHBlcihleGVjLCBub2RlLT5kb2N1bWVudCgpLCBub2Rl
KSkKKyAgICAgICAgaWYgKEpTQzo6SlNDZWxsKiB3cmFwcGVyID0gZ2V0Q2FjaGVkRE9NTm9kZVdy
YXBwZXIoZXhlYywgbm9kZSkpCiAgICAgICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAgICAgICAg
cmV0dXJuIGNyZWF0ZURPTU5vZGVXcmFwcGVyPFdyYXBwZXJDbGFzcz4oZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBub2RlKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Rv
Y3VtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RvY3VtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gODM5MzgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAw
LDcgKzEwMCw3IEBAIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmEKICAg
ICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAKLSAgICBET01PYmpl
Y3QqIHdyYXBwZXIgPSBnZXRDYWNoZWRET01Ob2RlV3JhcHBlcihleGVjLCBkb2N1bWVudCwgZG9j
dW1lbnQpOworICAgIERPTU9iamVjdCogd3JhcHBlciA9IGdldENhY2hlZERPTU5vZGVXcmFwcGVy
KGV4ZWMsIGRvY3VtZW50KTsKICAgICBpZiAod3JhcHBlcikKICAgICAgICAgcmV0dXJuIHdyYXBw
ZXI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFbGVtZW50Q3Vz
dG9tLmNwcAkocmV2aXNpb24gODM5MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0VsZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3IEBAIEpTVmFs
dWUgdG9KU05ld2x5Q3JlYXRlZChFeGVjU3RhdGUqIGV4ZWMKICAgICBpZiAoIWVsZW1lbnQpCiAg
ICAgICAgIHJldHVybiBqc051bGwoKTsKIAotICAgIEFTU0VSVCghZ2V0Q2FjaGVkRE9NTm9kZVdy
YXBwZXIoZXhlYywgZWxlbWVudC0+ZG9jdW1lbnQoKSwgZWxlbWVudCkpOworICAgIEFTU0VSVCgh
Z2V0Q2FjaGVkRE9NTm9kZVdyYXBwZXIoZXhlYywgZWxlbWVudCkpOwogCiAgICAgSlNOb2RlKiB3
cmFwcGVyOyAgICAgICAgCiAgICAgaWYgKGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAkocmV2aXNpb24g
ODM5MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBKU05vZGU6Om1hcmtDaGlsZHJl
bihNYXJrU3RhY2smIG1hcgogc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBjcmVhdGVXcmFw
cGVySW5saW5lKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQobm9kZSk7Ci0gICAgQVNTRVJUKCFnZXRDYWNo
ZWRET01Ob2RlV3JhcHBlcihleGVjLCBub2RlLT5kb2N1bWVudCgpLCBub2RlKSk7CisgICAgQVNT
RVJUKCFnZXRDYWNoZWRET01Ob2RlV3JhcHBlcihleGVjLCBub2RlKSk7CiAgICAgCiAgICAgSlNO
b2RlKiB3cmFwcGVyOyAgICAKICAgICBzd2l0Y2ggKG5vZGUtPm5vZGVUeXBlKCkpIHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5oCShyZXZpc2lvbiA4Mzkz
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSwxNiArMzEsMzIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxp
bmUgSlNOb2RlKiBnZXRDYWNoZWRET01Ob2RlV3JhcHBlcihKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
RG9jdW1lbnQqIGRvY3VtZW50LCBOb2RlKiBub2RlKQoraW5saW5lIEpTTm9kZSogZ2V0Q2FjaGVk
RE9NTm9kZVdyYXBwZXIoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIE5vZGUqIG5vZGUpCiB7Ci0gICAg
aWYgKGN1cnJlbnRXb3JsZChleGVjKS0+aXNOb3JtYWwoKSkgewotICAgICAgICBBU1NFUlQobm9k
ZS0+d3JhcHBlcigpID09IChkb2N1bWVudCA/IGRvY3VtZW50LT5nZXRXcmFwcGVyQ2FjaGUoY3Vy
cmVudFdvcmxkKGV4ZWMpKS0+Z2V0KG5vZGUpLmdldCgpIDogZG9tT2JqZWN0V3JhcHBlck1hcEZv
cihleGVjKS5nZXQobm9kZSkuZ2V0KCkpKTsKKyAgICBpZiAoY3VycmVudFdvcmxkKGV4ZWMpLT5p
c05vcm1hbCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNOb2RlKj4obm9kZS0+d3Jh
cHBlcigpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNOb2RlKj4oZ2V0Q2FjaGVkRE9NT2Jq
ZWN0V3JhcHBlcihleGVjLCBub2RlKSk7Cit9CisKK2lubGluZSB2b2lkIGNhY2hlRE9NTm9kZVdy
YXBwZXIoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIE5vZGUqIG5vZGUsIEpTTm9kZSogd3JhcHBlcikK
K3sKKyAgICBBU1NFUlQod3JhcHBlcik7CisKKyAgICBET01XcmFwcGVyV29ybGQqIHdvcmxkID0g
Y3VycmVudFdvcmxkKGV4ZWMpOworICAgIGlmICh3b3JsZC0+aXNOb3JtYWwoKSkgeworICAgICAg
ICBub2RlLT5zZXRXcmFwcGVyKCp3b3JsZC0+Z2xvYmFsRGF0YSgpLCB3cmFwcGVyLCB3b3JsZC0+
anNOb2RlSGFuZGxlT3duZXIoKSk7CisgICAgICAgIHJldHVybjsKICAgICB9CisgICAgY2FjaGVE
T01PYmplY3RXcmFwcGVyKGV4ZWMsIG5vZGUsIHdyYXBwZXIpOworfQogCi0gICAgaWYgKGRvY3Vt
ZW50KQotICAgICAgICByZXR1cm4gZG9jdW1lbnQtPmdldFdyYXBwZXJDYWNoZShjdXJyZW50V29y
bGQoZXhlYykpLT5nZXQobm9kZSkuZ2V0KCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTTm9k
ZSo+KGRvbU9iamVjdFdyYXBwZXJNYXBGb3IoZXhlYykuZ2V0KG5vZGUpLmdldCgpKTsKK2lubGlu
ZSB2b2lkIHVuY2FjaGVET01Ob2RlV3JhcHBlcihET01XcmFwcGVyV29ybGQqIHdvcmxkLCBOb2Rl
KiBub2RlLCBKU05vZGUqIGpzTm9kZSkKK3sKKyAgICBpZiAod29ybGQtPmlzTm9ybWFsKCkpIHsK
KyAgICAgICAgbm9kZS0+Y2xlYXJXcmFwcGVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgdW5jYWNoZURPTU9iamVjdFdyYXBwZXIod29ybGQsIG5vZGUsIGpzTm9kZSk7CiB9CiAKIEpT
Qzo6SlNWYWx1ZSBjcmVhdGVXcmFwcGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmpl
Y3QqLCBOb2RlKik7CkBAIC01MCw3ICs2Niw3IEBAIGlubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhK
U0M6OkV4ZWNTdGF0ZSoKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiBKU0M6OmpzTnVs
bCgpOwogCi0gICAgSlNOb2RlKiB3cmFwcGVyID0gZ2V0Q2FjaGVkRE9NTm9kZVdyYXBwZXIoZXhl
Yywgbm9kZS0+ZG9jdW1lbnQoKSwgbm9kZSk7CisgICAgSlNOb2RlKiB3cmFwcGVyID0gZ2V0Q2Fj
aGVkRE9NTm9kZVdyYXBwZXIoZXhlYywgbm9kZSk7CiAgICAgaWYgKHdyYXBwZXIpCiAgICAgICAg
IHJldHVybiB3cmFwcGVyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRXcmFwcGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRXcmFwcGFibGUuaAkocmV2aXNpb24gODM5MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRXcmFwcGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTggKzM4LDE5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2NyaXB0V3JhcHBhYmxlIHsKIHB1Ymxp
YzoKLSAgICBTY3JpcHRXcmFwcGFibGUoKQorICAgIERPTU9iamVjdCogd3JhcHBlcigpIGNvbnN0
CiAgICAgeworICAgICAgICByZXR1cm4gbV93cmFwcGVyLmdldCgpOwogICAgIH0KIAotICAgIERP
TU9iamVjdCogd3JhcHBlcigpIGNvbnN0CisgICAgdm9pZCBzZXRXcmFwcGVyKEpTQzo6SlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBET01PYmplY3QqIHdyYXBwZXIsIEpTQzo6V2Vha0hhbmRsZU93
bmVyKiB3cmFwcGVyT3duZXIpCiAgICAgewotICAgICAgICByZXR1cm4gbV93cmFwcGVyLmdldCgp
OworICAgICAgICBtX3dyYXBwZXIuc2V0KGdsb2JhbERhdGEsIHdyYXBwZXIsIHdyYXBwZXJPd25l
cik7CiAgICAgfQogCi0gICAgdm9pZCBzZXRXcmFwcGVyKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBET01PYmplY3QqIHdyYXBwZXIpCisgICAgdm9pZCBjbGVhcldyYXBwZXIoKQogICAg
IHsKLSAgICAgICAgbV93cmFwcGVyLnNldChnbG9iYWxEYXRhLCB3cmFwcGVyLCAwKTsKKyAgICAg
ICAgbV93cmFwcGVyLmNsZWFyKCk7CiAgICAgfQogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCShyZXZpc2lvbiA4MzkzNykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxNCw5ICs0MTQsNiBAQCBEb2N1bWVudDo6RG9j
dW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLCiAgICAgLCBtX2lzSFRNTChpc0hUTUwpCiAgICAg
LCBtX3VzZXNWaWV3U291cmNlU3R5bGVzKGZhbHNlKQogICAgICwgbV9zYXdFbGVtZW50c0luS25v
d25OYW1lc3BhY2VzKGZhbHNlKQotI2lmIFVTRShKU0MpCi0gICAgLCBtX25vcm1hbFdvcmxkV3Jh
cHBlckNhY2hlKDApCi0jZW5kaWYKICAgICAsIG1fdXNpbmdHZW9sb2NhdGlvbihmYWxzZSkKICAg
ICAsIG1fZXZlbnRRdWV1ZShFdmVudFF1ZXVlOjpjcmVhdGUodGhpcykpCiAjaWYgRU5BQkxFKFdN
TCkKQEAgLTUyMiwxMCArNTE5LDYgQEAgRG9jdW1lbnQ6On5Eb2N1bWVudCgpCiAKICAgICByZW1v
dmVBbGxFdmVudExpc3RlbmVycygpOwogCi0jaWYgVVNFKEpTQykKLSAgICBkZXN0cm95QWxsV3Jh
cHBlckNhY2hlcygpOwotI2VuZGlmCi0KICAgICAvLyBDdXJyZW50bHkgd2UgYmVsaWV2ZSB0aGF0
IERvY3VtZW50IGNhbiBuZXZlciBvdXRsaXZlIHRoZSBwYXJzZXIuCiAgICAgLy8gQWx0aG91Z2gg
dGhlIERvY3VtZW50IG1heSBiZSByZXBsYWNlZCBzeW5jaHJvbm91c2x5LCBEb2N1bWVudFBhcnNl
cnMKICAgICAvLyBnZW5lcmFsbHkga2VlcCBhdCBsZWFzdCBvbmUgcmVmZXJlbmNlIHRvIGFuIEVs
ZW1lbnQgd2hpY2ggd291bGQgaW4gdHVybgpAQCAtNjMyLDM1ICs2MjUsNiBAQCBNZWRpYVF1ZXJ5
TWF0Y2hlciogRG9jdW1lbnQ6Om1lZGlhUXVlcnlNCiAgICAgcmV0dXJuIG1fbWVkaWFRdWVyeU1h
dGNoZXIuZ2V0KCk7CiB9CiAKLSNpZiBVU0UoSlNDKQotRG9jdW1lbnQ6OkpTV3JhcHBlckNhY2hl
KiBEb2N1bWVudDo6Y3JlYXRlV3JhcHBlckNhY2hlKERPTVdyYXBwZXJXb3JsZCogd29ybGQpCi17
Ci0gICAgSlNXcmFwcGVyQ2FjaGUqIHdyYXBwZXJDYWNoZSA9IG5ldyBKU1dyYXBwZXJDYWNoZTsK
LSAgICBtX3dyYXBwZXJDYWNoZU1hcC5zZXQod29ybGQsIHdyYXBwZXJDYWNoZSk7Ci0gICAgaWYg
KHdvcmxkLT5pc05vcm1hbCgpKSB7Ci0gICAgICAgIEFTU0VSVCghbV9ub3JtYWxXb3JsZFdyYXBw
ZXJDYWNoZSk7Ci0gICAgICAgIG1fbm9ybWFsV29ybGRXcmFwcGVyQ2FjaGUgPSB3cmFwcGVyQ2Fj
aGU7Ci0gICAgfQotICAgIHdvcmxkLT5kaWRDcmVhdGVXcmFwcGVyQ2FjaGUodGhpcyk7Ci0gICAg
cmV0dXJuIHdyYXBwZXJDYWNoZTsKLX0KLQotdm9pZCBEb2N1bWVudDo6ZGVzdHJveVdyYXBwZXJD
YWNoZShET01XcmFwcGVyV29ybGQqIHdvcmxkKQotewotICAgIERvY3VtZW50OjpKU1dyYXBwZXJD
YWNoZSogd3JhcHBlcnMgPSB3cmFwcGVyQ2FjaGVNYXAoKS50YWtlKHdvcmxkKTsKLSAgICBBU1NF
UlQod3JhcHBlcnMpOwotICAgIGRlbGV0ZSB3cmFwcGVyczsKLSAgICB3b3JsZC0+ZGlkRGVzdHJv
eVdyYXBwZXJDYWNoZSh0aGlzKTsKLX0KLQotdm9pZCBEb2N1bWVudDo6ZGVzdHJveUFsbFdyYXBw
ZXJDYWNoZXMoKQotewotICAgIEpTV3JhcHBlckNhY2hlTWFwJiB3cmFwcGVyQ2FjaGVNYXAgPSB0
aGlzLT53cmFwcGVyQ2FjaGVNYXAoKTsKLSAgICB3aGlsZSAoIXdyYXBwZXJDYWNoZU1hcC5pc0Vt
cHR5KCkpCi0gICAgICAgIGRlc3Ryb3lXcmFwcGVyQ2FjaGUod3JhcHBlckNhY2hlTWFwLmJlZ2lu
KCktPmZpcnN0KTsKLX0KLSNlbmRpZgotCiB2b2lkIERvY3VtZW50OjpzZXRDb21wYXRpYmlsaXR5
TW9kZShDb21wYXRpYmlsaXR5TW9kZSBtb2RlKQogewogICAgIGlmIChtX2NvbXBhdGliaWxpdHlN
b2RlTG9ja2VkIHx8IG1vZGUgPT0gbV9jb21wYXRpYmlsaXR5TW9kZSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCShyZXZpc2lvbiA4MzkzNykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxMCArNDQsNiBAQAogI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAotI2lmIFVTRShKU0MpCi0j
aW5jbHVkZSA8aGVhcC9XZWFrLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBBWE9iamVjdENhY2hlOwpAQCAtOTQ3LDE2ICs5NDMsNiBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHN1c3BlbmRTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyQ2FsbGJh
Y2tzKCk7CiAKLSNpZiBVU0UoSlNDKQotICAgIHR5cGVkZWYgSGFzaE1hcDxXZWJDb3JlOjpOb2Rl
KiwgSlNDOjpXZWFrPEpTTm9kZT4gPiBKU1dyYXBwZXJDYWNoZTsKLSAgICB0eXBlZGVmIEhhc2hN
YXA8RE9NV3JhcHBlcldvcmxkKiwgSlNXcmFwcGVyQ2FjaGUqPiBKU1dyYXBwZXJDYWNoZU1hcDsK
LSAgICBKU1dyYXBwZXJDYWNoZU1hcCYgd3JhcHBlckNhY2hlTWFwKCkgeyByZXR1cm4gbV93cmFw
cGVyQ2FjaGVNYXA7IH0KLSAgICBKU1dyYXBwZXJDYWNoZSogZ2V0V3JhcHBlckNhY2hlKERPTVdy
YXBwZXJXb3JsZCogd29ybGQpOwotICAgIEpTV3JhcHBlckNhY2hlKiBjcmVhdGVXcmFwcGVyQ2Fj
aGUoRE9NV3JhcHBlcldvcmxkKik7Ci0gICAgdm9pZCBkZXN0cm95V3JhcHBlckNhY2hlKERPTVdy
YXBwZXJXb3JsZCopOwotICAgIHZvaWQgZGVzdHJveUFsbFdyYXBwZXJDYWNoZXMoKTsKLSNlbmRp
ZgotCiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaGVkUGFyc2luZygpOwogCiAgICAgYm9vbCBpblBh
Z2VDYWNoZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5QYWdlQ2FjaGU7IH0KQEAgLTEzNjMsMTEgKzEz
NDksNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV91c2VzVmlld1NvdXJjZVN0eWxlczsKICAgICBi
b29sIG1fc2F3RWxlbWVudHNJbktub3duTmFtZXNwYWNlczsKIAotI2lmIFVTRShKU0MpCi0gICAg
SlNXcmFwcGVyQ2FjaGVNYXAgbV93cmFwcGVyQ2FjaGVNYXA7Ci0gICAgSlNXcmFwcGVyQ2FjaGUq
IG1fbm9ybWFsV29ybGRXcmFwcGVyQ2FjaGU7Ci0jZW5kaWYKLQogICAgIGJvb2wgbV91c2luZ0dl
b2xvY2F0aW9uOwogICAgIAogICAgIFJlZlB0cjxFdmVudFF1ZXVlPiBtX2V2ZW50UXVldWU7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCShyZXZpc2lvbiA4MzkzNykKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQ4LDEwICs0NDgsNiBAQCB2b2lkIE5vZGU6
OnNldERvY3VtZW50KERvY3VtZW50KiBkb2N1bWVuCiAgICAgd2lsbE1vdmVUb05ld093bmVyRG9j
dW1lbnQoKTsKICAgICBBU1NFUlQod2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnRXYXNDYWxsZWQp
OwogCi0jaWYgVVNFKEpTQykKLSAgICB1cGRhdGVET01Ob2RlRG9jdW1lbnQodGhpcywgbV9kb2N1
bWVudCwgZG9jdW1lbnQpOwotI2VuZGlmCi0KICAgICBpZiAoaGFzUmFyZURhdGEoKSAmJiByYXJl
RGF0YSgpLT5ub2RlTGlzdHMoKSkgewogICAgICAgICBpZiAobV9kb2N1bWVudCkKICAgICAgICAg
ICAgIG1fZG9jdW1lbnQtPnJlbW92ZU5vZGVMaXN0Q2FjaGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCShyZXZpc2lvbiA4MzkzNykKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MzgsMTAgKzQzOCw4IEBAIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUltYWdlQnVmZmUK
ICAgICBtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCktPnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHkoRGVmYXVsdEludGVycG9sYXRpb25RdWFsaXR5KTsKIAogI2lmIFVTRShKU0MpCi0gICAgaWYg
KGhhc0NhY2hlZERPTU5vZGVXcmFwcGVyVW5jaGVja2VkKGRvY3VtZW50KCksIGNvbnN0X2Nhc3Q8
SFRNTENhbnZhc0VsZW1lbnQqPih0aGlzKSkpIHsKLSAgICAgICAgSlNDOjpKU0xvY2sgbG9jayhK
U0M6OlNpbGVuY2VBc3NlcnRpb25zT25seSk7Ci0gICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+Z2xvYmFsRGF0YSgpLT5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5Q29zdChtX2ltYWdlQnVm
ZmVyLT5kYXRhU2l6ZSgpKTsKLSAgICB9CisgICAgSlNDOjpKU0xvY2sgbG9jayhKU0M6OlNpbGVu
Y2VBc3NlcnRpb25zT25seSk7CisgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5nbG9iYWxE
YXRhKCktPmhlYXAucmVwb3J0RXh0cmFNZW1vcnlDb3N0KG1faW1hZ2VCdWZmZXItPmRhdGFTaXpl
KCkpOwogI2VuZGlmCiB9CiAK
</data>
<flag name="review"
          id="82459"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>