<?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>165678</bug_id>
          
          <creation_ts>2016-12-09 13:36:01 -0800</creation_ts>
          <short_desc>TextPosition and OrdinalNumber should be more like idiomatic numbers</short_desc>
          <delta_ts>2016-12-09 14:04:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></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>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1258283</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-12-09 13:36:01 -0800</bug_when>
    <thetext>TextPosition and OrdinalNumber should be more like idiomatic numbers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258293</commentid>
    <comment_count>1</comment_count>
      <attachid>296689</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-12-09 13:41:38 -0800</bug_when>
    <thetext>Created attachment 296689
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258302</commentid>
    <comment_count>2</comment_count>
      <attachid>296689</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-12-09 13:55:05 -0800</bug_when>
    <thetext>Comment on attachment 296689
Patch

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

&gt; Source/WebCore/xml/XMLErrors.cpp:63
&gt; +    if (type == fatal || (m_errorCount &lt; maxErrors &amp;&amp; !(m_lastErrorPosition || (m_lastErrorPosition-&gt;m_line != position.m_line &amp;&amp; m_lastErrorPosition-&gt;m_column != position.m_column)))) {

Shouldn&apos;t this be (!m_lastErrorPosition || (m_lastErrorPosition-&gt;... ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258303</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-12-09 13:56:10 -0800</bug_when>
    <thetext>&gt; &gt; Source/WebCore/xml/XMLErrors.cpp:63
&gt; &gt; +    if (type == fatal || (m_errorCount &lt; maxErrors &amp;&amp; !(m_lastErrorPosition || (m_lastErrorPosition-&gt;m_line != position.m_line &amp;&amp; m_lastErrorPosition-&gt;m_column != position.m_column)))) {
&gt; 
&gt; Shouldn&apos;t this be (!m_lastErrorPosition || (m_lastErrorPosition-&gt;... ?

Oops! Yup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258307</commentid>
    <comment_count>4</comment_count>
      <attachid>296693</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-12-09 13:57:17 -0800</bug_when>
    <thetext>Created attachment 296693
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258318</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-12-09 14:04:43 -0800</bug_when>
    <thetext>Committed r209627: &lt;http://trac.webkit.org/changeset/209627&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296689</attachid>
            <date>2016-12-09 13:41:38 -0800</date>
            <delta_ts>2016-12-09 13:57:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165678-20161209134056.patch</filename>
            <type>text/plain</type>
            <size>23350</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA5NjI0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBA
CisyMDE2LTEyLTA5ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgVGV4dFBvc2l0aW9uIGFuZCBPcmRpbmFsTnVtYmVyIHNob3VsZCBiZSBtb3JlIGxpa2UgaWRp
b21hdGljIG51bWJlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2NTY3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkb3B0IGRlZmF1bHQgY29uc3RydWN0b3IuCisKKyAgICAgICAgKiBBUEkvSlNCYXNl
LmNwcDoKKyAgICAgICAgKEpTRXZhbHVhdGVTY3JpcHQpOgorICAgICAgICAoSlNDaGVja1Njcmlw
dFN5bnRheCk6CisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNwcDoKKyAgICAgICAgKEpTT2Jq
ZWN0TWFrZUZ1bmN0aW9uKToKKyAgICAgICAgKiBBUEkvSlNTY3JpcHRSZWYuY3BwOgorICAgICAg
ICAoT3BhcXVlSlNTY3JpcHQ6Ok9wYXF1ZUpTU2NyaXB0KToKKyAgICAgICAgKiBqc2MuY3BwOgor
ICAgICAgICAoZnVuY3Rpb25DaGVja01vZHVsZVN5bnRheCk6CisgICAgICAgICogcGFyc2VyL1Nv
dXJjZUNvZGUuaDoKKyAgICAgICAgKEpTQzo6bWFrZVNvdXJjZSk6CisgICAgICAgICogcGFyc2Vy
L1NvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgIChKU0M6OlN0cmluZ1NvdXJjZVByb3ZpZGVyOjpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVNvdXJjZVByb3ZpZGVyOjpXZWJBc3Nl
bWJseVNvdXJjZVByb3ZpZGVyKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RGdW5jdGlvbik6CisgICAgICAgICogcnVu
dGltZS9Nb2R1bGVMb2FkZXJQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjptb2R1bGVMb2Fk
ZXJQcm90b3R5cGVQYXJzZU1vZHVsZSk6CisKIDIwMTYtMTItMDkgIEZpbGlwIFBpemxvICA8ZnBp
emxvQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBkaXNhYmxlIGNvbmN1cnJlbnQg
R0MgZm9yIHJlYWwuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gMjA5NTAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0Mjks
NyArMjQyOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DaGUKICAg
ICBzdG9wV2F0Y2guc3RhcnQoKTsKIAogICAgIFBhcnNlckVycm9yIGVycm9yOwotICAgIGJvb2wg
dmFsaWRTeW50YXggPSBjaGVja01vZHVsZVN5bnRheChleGVjLCBtYWtlU291cmNlKHNvdXJjZSwg
U3RyaW5nKCksIFRleHRQb3NpdGlvbjo6bWluaW11bVBvc2l0aW9uKCksIFNvdXJjZVByb3ZpZGVy
U291cmNlVHlwZTo6TW9kdWxlKSwgZXJyb3IpOworICAgIGJvb2wgdmFsaWRTeW50YXggPSBjaGVj
a01vZHVsZVN5bnRheChleGVjLCBtYWtlU291cmNlKHNvdXJjZSwgU3RyaW5nKCksIFRleHRQb3Np
dGlvbigpLCBTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6Ok1vZHVsZSksIGVycm9yKTsKICAgICBz
dG9wV2F0Y2guc3RvcCgpOwogCiAgICAgaWYgKCF2YWxpZFN5bnRheCkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQmFzZS5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBA
QCBKU1ZhbHVlUmVmIEpTRXZhbHVhdGVTY3JpcHQoSlNDb250ZXh0UmVmCiAKICAgICAvLyBldmFs
dWF0ZSBzZXRzICJ0aGlzIiB0byB0aGUgZ2xvYmFsIG9iamVjdCBpZiBpdCBpcyBOVUxMCiAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3Qo
KTsKLSAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1ha2VTb3VyY2Uoc2NyaXB0LT5zdHJpbmcoKSwg
c291cmNlVVJMID8gc291cmNlVVJMLT5zdHJpbmcoKSA6IFN0cmluZygpLCBUZXh0UG9zaXRpb24o
T3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KHN0YXJ0aW5nTGluZU51bWJlciksIE9yZGlu
YWxOdW1iZXI6OmZpcnN0KCkpKTsKKyAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1ha2VTb3VyY2Uo
c2NyaXB0LT5zdHJpbmcoKSwgc291cmNlVVJMID8gc291cmNlVVJMLT5zdHJpbmcoKSA6IFN0cmlu
ZygpLCBUZXh0UG9zaXRpb24oT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KHN0YXJ0aW5n
TGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogCiAgICAgTmFrZWRQdHI8RXhjZXB0aW9u
PiBldmFsdWF0aW9uRXhjZXB0aW9uOwogICAgIEpTVmFsdWUgcmV0dXJuVmFsdWUgPSBwcm9maWxl
ZEV2YWx1YXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBQcm9maWxpbmdSZWFzb246OkFQ
SSwgc291cmNlLCBqc1RoaXNPYmplY3QsIGV2YWx1YXRpb25FeGNlcHRpb24pOwpAQCAtOTksNyAr
OTksNyBAQCBib29sIEpTQ2hlY2tTY3JpcHRTeW50YXgoSlNDb250ZXh0UmVmIGN0CiAKICAgICBz
dGFydGluZ0xpbmVOdW1iZXIgPSBzdGQ6Om1heCgxLCBzdGFydGluZ0xpbmVOdW1iZXIpOwogCi0g
ICAgU291cmNlQ29kZSBzb3VyY2UgPSBtYWtlU291cmNlKHNjcmlwdC0+c3RyaW5nKCksIHNvdXJj
ZVVSTCA/IHNvdXJjZVVSTC0+c3RyaW5nKCkgOiBTdHJpbmcoKSwgVGV4dFBvc2l0aW9uKE9yZGlu
YWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChzdGFydGluZ0xpbmVOdW1iZXIpLCBPcmRpbmFsTnVt
YmVyOjpmaXJzdCgpKSk7CisgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtYWtlU291cmNlKHNjcmlw
dC0+c3RyaW5nKCksIHNvdXJjZVVSTCA/IHNvdXJjZVVSTC0+c3RyaW5nKCkgOiBTdHJpbmcoKSwg
VGV4dFBvc2l0aW9uKE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChzdGFydGluZ0xpbmVO
dW1iZXIpLCBPcmRpbmFsTnVtYmVyKCkpKTsKICAgICAKICAgICBKU1ZhbHVlIHN5bnRheEV4Y2Vw
dGlvbjsKICAgICBib29sIGlzVmFsaWRTeW50YXggPSBjaGVja1N5bnRheChleGVjLT52bUVudHJ5
R2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgc291cmNlLCAmc3ludGF4RXhjZXB0aW9uKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCShyZXZpc2lv
biAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTQ2LDcgKzE0Niw3IEBAIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFr
ZUZ1bmN0aW9uKEpTQ29udGUKICAgICAgICAgYXJncy5hcHBlbmQoanNTdHJpbmcoZXhlYywgcGFy
YW1ldGVyTmFtZXNbaV0tPnN0cmluZygpKSk7CiAgICAgYXJncy5hcHBlbmQoanNTdHJpbmcoZXhl
YywgYm9keS0+c3RyaW5nKCkpKTsKIAotICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RG
dW5jdGlvbihleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGFyZ3MsIG5hbWVJRCwg
c291cmNlVVJMID8gc291cmNlVVJMLT5zdHJpbmcoKSA6IFN0cmluZygpLCBUZXh0UG9zaXRpb24o
T3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KHN0YXJ0aW5nTGluZU51bWJlciksIE9yZGlu
YWxOdW1iZXI6OmZpcnN0KCkpKTsKKyAgICBKU09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RnVu
Y3Rpb24oZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBhcmdzLCBuYW1lSUQsIHNv
dXJjZVVSTCA/IHNvdXJjZVVSTC0+c3RyaW5nKCkgOiBTdHJpbmcoKSwgVGV4dFBvc2l0aW9uKE9y
ZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChzdGFydGluZ0xpbmVOdW1iZXIpLCBPcmRpbmFs
TnVtYmVyKCkpKTsKICAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoZXhlYywgZXhjZXB0
aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQogICAgICAgICByZXN1bHQgPSAwOwog
ICAgIHJldHVybiB0b1JlZihyZXN1bHQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1NjcmlwdFJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1NjcmlwdFJlZi5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNTY3JpcHRSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBA
IHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBPcGFxdWVKU1NjcmlwdChWTSogdm0sIGNvbnN0IFN0
cmluZyYgdXJsLCBpbnQgc3RhcnRpbmdMaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZSkK
LSAgICAgICAgOiBTb3VyY2VQcm92aWRlcih1cmwsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVy
Ojpmcm9tT25lQmFzZWRJbnQoc3RhcnRpbmdMaW5lTnVtYmVyKSwgT3JkaW5hbE51bWJlcjo6Zmly
c3QoKSksIFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSkKKyAgICAgICAgOiBTb3Vy
Y2VQcm92aWRlcih1cmwsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJ
bnQoc3RhcnRpbmdMaW5lTnVtYmVyKSwgT3JkaW5hbE51bWJlcigpKSwgU291cmNlUHJvdmlkZXJT
b3VyY2VUeXBlOjpQcm9ncmFtKQogICAgICAgICAsIG1fdm0odm0pCiAgICAgICAgICwgbV9zb3Vy
Y2Uoc291cmNlLmlzTnVsbCgpID8gKlN0cmluZ0ltcGw6OmVtcHR5KCkgOiAqc291cmNlLmltcGwo
KSkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGUu
aAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3Vy
Y2VDb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcgKzgxLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIGludCBtX3N0YXJ0Q29sdW1uOwogICAgIH07CiAKLSAgICBpbmxpbmUgU291cmNl
Q29kZSBtYWtlU291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIHVybCA9
IFN0cmluZygpLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24gPSBUZXh0UG9zaXRp
b246Om1pbmltdW1Qb3NpdGlvbigpLCBTb3VyY2VQcm92aWRlclNvdXJjZVR5cGUgc291cmNlVHlw
ZSA9IFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSkKKyAgICBpbmxpbmUgU291cmNl
Q29kZSBtYWtlU291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIHVybCA9
IFN0cmluZygpLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24gPSBUZXh0UG9zaXRp
b24oKSwgU291cmNlUHJvdmlkZXJTb3VyY2VUeXBlIHNvdXJjZVR5cGUgPSBTb3VyY2VQcm92aWRl
clNvdXJjZVR5cGU6OlByb2dyYW0pCiAgICAgewogICAgICAgICByZXR1cm4gU291cmNlQ29kZShT
dHJpbmdTb3VyY2VQcm92aWRlcjo6Y3JlYXRlKHNvdXJjZSwgdXJsLCBzdGFydFBvc2l0aW9uLCBz
b3VyY2VUeXBlKSwgc3RhcnRQb3NpdGlvbi5tX2xpbmUub25lQmFzZWRJbnQoKSwgc3RhcnRQb3Np
dGlvbi5tX2NvbHVtbi5vbmVCYXNlZEludCgpKTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oCShyZXZpc2lvbiAyMDk1MDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTg5LDcgKzg5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBTdHJp
bmdTb3VyY2VQcm92aWRlciA6IHB1YmxpYyBTb3VyY2VQcm92aWRlciB7CiAgICAgcHVibGljOgot
ICAgICAgICBzdGF0aWMgUmVmPFN0cmluZ1NvdXJjZVByb3ZpZGVyPiBjcmVhdGUoY29uc3QgU3Ry
aW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0
UG9zaXRpb24gPSBUZXh0UG9zaXRpb246Om1pbmltdW1Qb3NpdGlvbigpLCBTb3VyY2VQcm92aWRl
clNvdXJjZVR5cGUgc291cmNlVHlwZSA9IFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3Jh
bSkKKyAgICAgICAgc3RhdGljIFJlZjxTdHJpbmdTb3VyY2VQcm92aWRlcj4gY3JlYXRlKGNvbnN0
IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgVGV4dFBvc2l0aW9uJiBz
dGFydFBvc2l0aW9uID0gVGV4dFBvc2l0aW9uKCksIFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZSBz
b3VyY2VUeXBlID0gU291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQcm9ncmFtKQogICAgICAgICB7
CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHJpbmdTb3VyY2VQcm92aWRlcihz
b3VyY2UsIHVybCwgc3RhcnRQb3NpdGlvbiwgc291cmNlVHlwZSkpOwogICAgICAgICB9CkBAIC0x
MzksNyArMTM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcml2YXRlOgogICAgICAgICBX
ZWJBc3NlbWJseVNvdXJjZVByb3ZpZGVyKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSwgY29u
c3QgU3RyaW5nJiB1cmwpCi0gICAgICAgICAgICA6IFNvdXJjZVByb3ZpZGVyKHVybCwgVGV4dFBv
c2l0aW9uOjptaW5pbXVtUG9zaXRpb24oKSwgU291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpXZWJB
c3NlbWJseSkKKyAgICAgICAgICAgIDogU291cmNlUHJvdmlkZXIodXJsLCBUZXh0UG9zaXRpb24o
KSwgU291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpXZWJBc3NlbWJseSkKICAgICAgICAgICAgICwg
bV9zb3VyY2UoIltXZWJBc3NlbWJseSBzb3VyY2VdIikKICAgICAgICAgICAgICwgbV9kYXRhKGRh
dGEpCiAgICAgICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTcwLDcgKzE3MCw3IEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvblNr
aXBwaW5nRXZhbEUKIC8vIEVDTUEgMTUuMy4yIFRoZSBGdW5jdGlvbiBDb25zdHJ1Y3RvcgogSlNP
YmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncywgRnVuY3Rpb25Db25zdHJ1Y3Rpb25N
b2RlIGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSwgSlNWYWx1ZSBuZXdUYXJnZXQpCiB7Ci0gICAg
cmV0dXJuIGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgYXJncywgZXhlYy0+
cHJvcGVydHlOYW1lcygpLmFub255bW91cywgU3RyaW5nKCksIFRleHRQb3NpdGlvbjo6bWluaW11
bVBvc2l0aW9uKCksIGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSwgbmV3VGFyZ2V0KTsKKyAgICBy
ZXR1cm4gY29uc3RydWN0RnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBhcmdzLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuYW5vbnltb3VzLCBTdHJpbmcoKSwgVGV4dFBvc2l0aW9uKCksIGZ1bmN0
aW9uQ29uc3RydWN0aW9uTW9kZSwgbmV3VGFyZ2V0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlND
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJQcm90b3R5
cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVs
ZUxvYWRlclByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExMyw3ICsxMTMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxv
YWRlCiAgICAgU3RyaW5nIHNvdXJjZSA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKIAotICAgIFNvdXJjZUNvZGUgc291cmNlQ29kZSA9IG1ha2VTb3VyY2Uoc291cmNl
LCBtb2R1bGVLZXkuaW1wbCgpLCBUZXh0UG9zaXRpb246Om1pbmltdW1Qb3NpdGlvbigpLCBTb3Vy
Y2VQcm92aWRlclNvdXJjZVR5cGU6Ok1vZHVsZSk7CisgICAgU291cmNlQ29kZSBzb3VyY2VDb2Rl
ID0gbWFrZVNvdXJjZShzb3VyY2UsIG1vZHVsZUtleS5pbXBsKCksIFRleHRQb3NpdGlvbigpLCBT
b3VyY2VQcm92aWRlclNvdXJjZVR5cGU6Ok1vZHVsZSk7CiAKICAgICBDb2RlUHJvZmlsaW5nIHBy
b2ZpbGUoc291cmNlQ29kZSk7CiAKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDk2MTgpCisrKyBTb3VyY2Uv
V1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE2LTEyLTA5
ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgVGV4dFBvc2l0
aW9uIGFuZCBPcmRpbmFsTnVtYmVyIHNob3VsZCBiZSBtb3JlIGxpa2UgaWRpb21hdGljIG51bWJl
cnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTY3
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3Rm
L3RleHQvVGV4dFBvc2l0aW9uLmg6CisgICAgICAgIChXVEY6OlRleHRQb3NpdGlvbjo6bWluaW11
bVBvc2l0aW9uKTogRGVsZXRlZC4gSnVzdCB1c2UgdGhlIGRlZmF1bHQKKyAgICAgICAgY29uc3Ry
dWN0b3IuIE90aGVyIG51bWJlcnMgdXNlIHRoZWlyIGRlZmF1bHQgY29uc3RydWN0b3JzIHRvIG1l
YW4gemVyby4KKworICAgICAgICBBbnkgdGltZSB5b3UgbmVlZCBhIGNvbW1lbnQgdGhhdCBzYXlz
ICJ1c2VkIGFzIGEgZGVmYXVsdCB2YWx1ZSIsIHRoYXQncworICAgICAgICBhIHByZXR0eSBnb29k
IGluZGljYXRvciB0aGF0IGl0IHNob3VsZCBiZSB0aGUgZGVmYXVsdCBjb25zdHJ1Y3Rvci4KKwog
MjAxNi0xMi0wOSAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAg
IE1vdmVkIE9yZGluYWxOdW1iZXIgaW50byBpdHMgb3duIGZpbGUKSW5kZXg6IFNvdXJjZS9XVEYv
d3RmL3RleHQvVGV4dFBvc2l0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvdGV4
dC9UZXh0UG9zaXRpb24uaAkocmV2aXNpb24gMjA5NjE4KQorKysgU291cmNlL1dURi93dGYvdGV4
dC9UZXh0UG9zaXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTMgKzM3LDExIEBAIHB1Ymxp
YzoKICAgICAgICAgLCBtX2NvbHVtbihjb2x1bW4pCiAgICAgewogICAgIH0KKwogICAgIFRleHRQ
b3NpdGlvbigpIHsgfQogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUZXh0UG9zaXRpb24mIG90
aGVyKSB7IHJldHVybiBtX2xpbmUgPT0gb3RoZXIubV9saW5lICYmIG1fY29sdW1uID09IG90aGVy
Lm1fY29sdW1uOyB9CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRleHRQb3NpdGlvbiYgb3Ro
ZXIpIHsgcmV0dXJuICEoKCp0aGlzKSA9PSBvdGhlcik7IH0KIAotICAgIC8vIEEgJ21pbmltdW0n
IHZhbHVlIG9mIHBvc2l0aW9uLCB1c2VkIGFzIGEgZGVmYXVsdCB2YWx1ZS4KLSAgICBzdGF0aWMg
VGV4dFBvc2l0aW9uIG1pbmltdW1Qb3NpdGlvbigpIHsgcmV0dXJuIFRleHRQb3NpdGlvbihPcmRp
bmFsTnVtYmVyOjpmaXJzdCgpLCBPcmRpbmFsTnVtYmVyOjpmaXJzdCgpKTsgfQotCiAgICAgLy8g
QSB2YWx1ZSB3aXRoIGxpbmUgdmFsdWUgbGVzcyB0aGFuIGEgbWluaW11bTsgdXNlZCBhcyBhbiBp
bXBvc3NpYmxlIHBvc2l0aW9uLgogICAgIHN0YXRpYyBUZXh0UG9zaXRpb24gYmVsb3dSYW5nZVBv
c2l0aW9uKCkgeyByZXR1cm4gVGV4dFBvc2l0aW9uKE9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0
KCksIE9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCkpOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDM4IEBACisyMDE2LTEyLTA5ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBh
cHBsZS5jb20+CisKKyAgICAgICAgVGV4dFBvc2l0aW9uIGFuZCBPcmRpbmFsTnVtYmVyIHNob3Vs
ZCBiZSBtb3JlIGxpa2UgaWRpb21hdGljIG51bWJlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTY3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0U291cmNl
UHJvdmlkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVy
OjpDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNF
dmVudExpc3RlbmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6OnNvdXJj
ZVBvc2l0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTGF6eUV2ZW50TGlzdGVuZXI6OkpTTGF6eUV2ZW50TGlz
dGVuZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXZlbnRIYW5kbGVyUG9zaXRpb24pOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdFNvdXJjZUNvZGU6OlNjcmlwdFNvdXJjZUNvZGUpOgorICAgICAgICAqIGNzcy9D
U1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6OmNyZWF0
ZSk6CisgICAgICAgICogZG9tL1NjcmlwdEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL3BhcnNl
ci9IVE1MVHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dW5pbml0aWFsaXplZFBv
c2l0aW9uVmFsdWUxKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9iamVjdEZv
clN0eWxlU2hlZXRJbmZvKTogQWRvcHQKKyAgICAgICAgZGVmYXVsdCBjb25zdHJ1dG9yLgorCisg
ICAgICAgICogeG1sL1hNTEVycm9ycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxFcnJvcnM6
OlhNTEVycm9ycyk6CisgICAgICAgIChXZWJDb3JlOjpYTUxFcnJvcnM6OmhhbmRsZUVycm9yKToK
KyAgICAgICAgKiB4bWwvWE1MRXJyb3JzLmg6IFVzZSBzdGQ6Om9wdGlvbmFsIGluc3RlYWQgb2Yg
YmVsb3dSYW5nZVBvc2l0aW9uKCkKKyAgICAgICAgYmVjYXVzZSBpbi1iYW5kIHNpZ25hbGluZyBp
cyBoYXJkZXIgdG8gcmVhc29uIGFib3V0LgorCisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1
bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJz
ZXI6OnRleHRQb3NpdGlvbik6IEFkb3B0IGRlZmF1bHQgY29uc3RydWN0b3IuCisKIDIwMTYtMTIt
MDcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0pT
Q10gRHJvcCB0cmFuc2xhdGUgcGhhc2UgaW4gbW9kdWxlIGxvYWRlcgpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRl
ci5oCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNo
ZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBA
IHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlcihDYWNo
ZWRTY3JpcHQqIGNhY2hlZFNjcmlwdCwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGUgc291
cmNlVHlwZSkKLSAgICAgICAgOiBTb3VyY2VQcm92aWRlcihjYWNoZWRTY3JpcHQtPnJlc3BvbnNl
KCkudXJsKCksIFRleHRQb3NpdGlvbjo6bWluaW11bVBvc2l0aW9uKCksIHNvdXJjZVR5cGUpCisg
ICAgICAgIDogU291cmNlUHJvdmlkZXIoY2FjaGVkU2NyaXB0LT5yZXNwb25zZSgpLnVybCgpLCBU
ZXh0UG9zaXRpb24oKSwgc291cmNlVHlwZSkKICAgICAgICAgLCBtX2NhY2hlZFNjcmlwdChjYWNo
ZWRTY3JpcHQpCiAgICAgewogICAgICAgICBtX2NhY2hlZFNjcmlwdC0+YWRkQ2xpZW50KCp0aGlz
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5o
CShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50
TGlzdGVuZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRXcmFwcGVyKEpTQzo6Vk0mLCBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyKSBjb25zdCB7
IG1fd3JhcHBlciA9IEpTQzo6V2VhazxKU0M6OkpTT2JqZWN0Pih3cmFwcGVyKTsgfQogCiAgICAg
dmlydHVhbCBTdHJpbmcgc291cmNlVVJMKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAg
ICB2aXJ0dWFsIFRleHRQb3NpdGlvbiBzb3VyY2VQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIFRl
eHRQb3NpdGlvbjo6bWluaW11bVBvc2l0aW9uKCk7IH0KKyAgICB2aXJ0dWFsIFRleHRQb3NpdGlv
biBzb3VyY2VQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIFRleHRQb3NpdGlvbigpOyB9CiAKIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBKU0M6OkpTT2JqZWN0KiBpbml0aWFsaXplSlNGdW5jdGlvbihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KikgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcAkocmV2aXNpb24gMjA5NTAw
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgSlNMYXp5RXZlbnRMaXN0ZW5lcjo6SlNM
YXp5RXZlbnRMaXN0ZW5lcgogICAgIC8vIEEgSlNMYXp5RXZlbnRMaXN0ZW5lciBjYW4gYmUgY3Jl
YXRlZCB3aXRoIGEgbGluZSBudW1iZXIgb2YgemVybyB3aGVuIGl0IGlzIGNyZWF0ZWQgd2l0aAog
ICAgIC8vIGEgc2V0QXR0cmlidXRlIGNhbGwgZnJvbSBKYXZhU2NyaXB0LCBzbyBtYWtlIHRoZSBs
aW5lIG51bWJlciAxIGluIHRoYXQgY2FzZS4KICAgICBpZiAobV9zb3VyY2VQb3NpdGlvbiA9PSBU
ZXh0UG9zaXRpb246OmJlbG93UmFuZ2VQb3NpdGlvbigpKQotICAgICAgICBtX3NvdXJjZVBvc2l0
aW9uID0gVGV4dFBvc2l0aW9uOjptaW5pbXVtUG9zaXRpb24oKTsKKyAgICAgICAgbV9zb3VyY2VQ
b3NpdGlvbiA9IFRleHRQb3NpdGlvbigpOwogCiAgICAgQVNTRVJUKG1fZXZlbnRQYXJhbWV0ZXJO
YW1lID09ICJldnQiIHx8IG1fZXZlbnRQYXJhbWV0ZXJOYW1lID09ICJldmVudCIpOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAko
cmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29u
dHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyMCw3ICs0MjAsNyBAQCBUZXh0UG9zaXRp
b24gU2NyaXB0Q29udHJvbGxlcjo6ZXZlbnRIYW5kCiAgICAgU2NyaXB0YWJsZURvY3VtZW50UGFy
c2VyKiBwYXJzZXIgPSBtX2ZyYW1lLmRvY3VtZW50KCktPnNjcmlwdGFibGVEb2N1bWVudFBhcnNl
cigpOwogICAgIGlmIChwYXJzZXIpCiAgICAgICAgIHJldHVybiBwYXJzZXItPnRleHRQb3NpdGlv
bigpOwotICAgIHJldHVybiBUZXh0UG9zaXRpb246Om1pbmltdW1Qb3NpdGlvbigpOworICAgIHJl
dHVybiBUZXh0UG9zaXRpb24oKTsKIH0KIAogdm9pZCBTY3JpcHRDb250cm9sbGVyOjplbmFibGVF
dmFsKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTb3VyY2VD
b2RlLmgJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdFNvdXJjZUNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNjcmlwdFNvdXJjZUNvZGUgewogcHVibGljOgotICAgIFNj
cmlwdFNvdXJjZUNvZGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFVSTCYgdXJsID0gVVJM
KCksIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiA9IFRleHRQb3NpdGlvbjo6bWlu
aW11bVBvc2l0aW9uKCksIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlIHNvdXJjZVR5cGUg
PSBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSkKKyAgICBTY3JpcHRTb3Vy
Y2VDb2RlKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBVUkwmIHVybCA9IFVSTCgpLCBjb25z
dCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24gPSBUZXh0UG9zaXRpb24oKSwgSlNDOjpTb3Vy
Y2VQcm92aWRlclNvdXJjZVR5cGUgc291cmNlVHlwZSA9IEpTQzo6U291cmNlUHJvdmlkZXJTb3Vy
Y2VUeXBlOjpQcm9ncmFtKQogICAgICAgICA6IG1fcHJvdmlkZXIoSlNDOjpTdHJpbmdTb3VyY2VQ
cm92aWRlcjo6Y3JlYXRlKHNvdXJjZSwgdXJsLmlzTnVsbCgpID8gU3RyaW5nKCkgOiB1cmwuc3Ry
aW5nKCksIHN0YXJ0UG9zaXRpb24sIHNvdXJjZVR5cGUpKQogICAgICAgICAsIG1fY29kZShtX3By
b3ZpZGVyLCBzdGFydFBvc2l0aW9uLm1fbGluZS5vbmVCYXNlZEludCgpLCBzdGFydFBvc2l0aW9u
Lm1fY29sdW1uLm9uZUJhc2VkSW50KCkpCiAgICAgICAgICwgbV91cmwodXJsKQpJbmRleDogU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNl
L1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4
NSw3IEBAIFJlZjxDU1NTdHlsZVNoZWV0PiBDU1NTdHlsZVNoZWV0OjpjcmVhdGUKIAogUmVmPENT
U1N0eWxlU2hlZXQ+IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShSZWY8U3R5bGVTaGVldENvbnRlbnRz
PiYmIHNoZWV0LCBOb2RlJiBvd25lck5vZGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Ym9vbD4mIGlz
Q2xlYW5PcmlnaW4pCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTU3R5bGVTaGVldChX
VEZNb3ZlKHNoZWV0KSwgb3duZXJOb2RlLCBUZXh0UG9zaXRpb246Om1pbmltdW1Qb3NpdGlvbigp
LCBmYWxzZSwgaXNDbGVhbk9yaWdpbikpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU1N0
eWxlU2hlZXQoV1RGTW92ZShzaGVldCksIG93bmVyTm9kZSwgVGV4dFBvc2l0aW9uKCksIGZhbHNl
LCBpc0NsZWFuT3JpZ2luKSk7CiB9CiAKIFJlZjxDU1NTdHlsZVNoZWV0PiBDU1NTdHlsZVNoZWV0
OjpjcmVhdGVJbmxpbmUoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiBzaGVldCwgRWxlbWVudCYg
b3duZXIsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEVsZW1lbnQuaAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBwdWJs
aWM6CiAgICAgY29uc3QgRWxlbWVudCYgZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVu
dDsgfQogCiAgICAgZW51bSBMZWdhY3lUeXBlU3VwcG9ydCB7IERpc2FsbG93TGVnYWN5VHlwZUlu
VHlwZUF0dHJpYnV0ZSwgQWxsb3dMZWdhY3lUeXBlSW5UeXBlQXR0cmlidXRlIH07Ci0gICAgYm9v
bCBwcmVwYXJlU2NyaXB0KGNvbnN0IFRleHRQb3NpdGlvbiYgc2NyaXB0U3RhcnRQb3NpdGlvbiA9
IFRleHRQb3NpdGlvbjo6bWluaW11bVBvc2l0aW9uKCksIExlZ2FjeVR5cGVTdXBwb3J0ID0gRGlz
YWxsb3dMZWdhY3lUeXBlSW5UeXBlQXR0cmlidXRlKTsKKyAgICBib29sIHByZXBhcmVTY3JpcHQo
Y29uc3QgVGV4dFBvc2l0aW9uJiBzY3JpcHRTdGFydFBvc2l0aW9uID0gVGV4dFBvc2l0aW9uKCks
IExlZ2FjeVR5cGVTdXBwb3J0ID0gRGlzYWxsb3dMZWdhY3lUeXBlSW5UeXBlQXR0cmlidXRlKTsK
IAogICAgIFN0cmluZyBzY3JpcHRDaGFyc2V0KCkgY29uc3QgeyByZXR1cm4gbV9jaGFyYWN0ZXJF
bmNvZGluZzsgfQogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzY3JpcHRDb250ZW50KCkgY29u
c3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRl
ci5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxUcmVlQnVpbGRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgaW5saW5l
IGJvb2wgaXNIVE1MU3BhY2VPclJlcGxhY2VtZW50Q2hhcgogCiBzdGF0aWMgaW5saW5lIFRleHRQ
b3NpdGlvbiB1bmluaXRpYWxpemVkUG9zaXRpb25WYWx1ZTEoKQogewotICAgIHJldHVybiBUZXh0
UG9zaXRpb24oT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KC0xKSwgT3JkaW5hbE51bWJl
cjo6Zmlyc3QoKSk7CisgICAgcmV0dXJuIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9t
T25lQmFzZWRJbnQoLTEpLCBPcmRpbmFsTnVtYmVyKCkpOwogfQogCiBzdGF0aWMgaW5saW5lIGJv
b2wgaXNBbGxXaGl0ZXNwYWNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQpJbmRleDogU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAkocmV2aXNpb24g
MjA5NTAwKQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMyLDcgKzEwMzIsNyBAQCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsCiAgICAgICAgIC5zZXRTb3VyY2VVUkwoZmluYWxVUkwo
KSkKICAgICAgICAgLnNldFRpdGxlKHN0eWxlU2hlZXQtPnRpdGxlKCkpCiAgICAgICAgIC5zZXRG
cmFtZUlkKG1fcGFnZUFnZW50LT5mcmFtZUlkKGZyYW1lKSkKLSAgICAgICAgLnNldElzSW5saW5l
KHN0eWxlU2hlZXQtPmlzSW5saW5lKCkgJiYgc3R5bGVTaGVldC0+c3RhcnRQb3NpdGlvbigpICE9
IFRleHRQb3NpdGlvbjo6bWluaW11bVBvc2l0aW9uKCkpCisgICAgICAgIC5zZXRJc0lubGluZShz
dHlsZVNoZWV0LT5pc0lubGluZSgpICYmIHN0eWxlU2hlZXQtPnN0YXJ0UG9zaXRpb24oKSAhPSBU
ZXh0UG9zaXRpb24oKSkKICAgICAgICAgLnNldFN0YXJ0TGluZShzdHlsZVNoZWV0LT5zdGFydFBv
c2l0aW9uKCkubV9saW5lLnplcm9CYXNlZEludCgpKQogICAgICAgICAuc2V0U3RhcnRDb2x1bW4o
c3R5bGVTaGVldC0+c3RhcnRQb3NpdGlvbigpLm1fY29sdW1uLnplcm9CYXNlZEludCgpKQogICAg
ICAgICAucmVsZWFzZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5jcHAJKHJldmlzaW9u
IDIwOTUwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01MCw3ICs1MCw2IEBAIGNvbnN0IGludCBtYXhFcnJvcnMgPSAyNTsKIAogWE1MRXJy
b3JzOjpYTUxFcnJvcnMoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIDogbV9kb2N1bWVudChkb2N1
bWVudCkKLSAgICAsIG1fbGFzdEVycm9yUG9zaXRpb24oVGV4dFBvc2l0aW9uOjpiZWxvd1Jhbmdl
UG9zaXRpb24oKSkKIHsKIH0KIApAQCAtNjEsNyArNjAsNyBAQCB2b2lkIFhNTEVycm9yczo6aGFu
ZGxlRXJyb3IoRXJyb3JUeXBlIHR5CiAKIHZvaWQgWE1MRXJyb3JzOjpoYW5kbGVFcnJvcihFcnJv
clR5cGUgdHlwZSwgY29uc3QgY2hhciogbWVzc2FnZSwgVGV4dFBvc2l0aW9uIHBvc2l0aW9uKQog
ewotICAgIGlmICh0eXBlID09IGZhdGFsIHx8IChtX2Vycm9yQ291bnQgPCBtYXhFcnJvcnMgJiYg
bV9sYXN0RXJyb3JQb3NpdGlvbi5tX2xpbmUgIT0gcG9zaXRpb24ubV9saW5lICYmIG1fbGFzdEVy
cm9yUG9zaXRpb24ubV9jb2x1bW4gIT0gcG9zaXRpb24ubV9jb2x1bW4pKSB7CisgICAgaWYgKHR5
cGUgPT0gZmF0YWwgfHwgKG1fZXJyb3JDb3VudCA8IG1heEVycm9ycyAmJiAhKG1fbGFzdEVycm9y
UG9zaXRpb24gfHwgKG1fbGFzdEVycm9yUG9zaXRpb24tPm1fbGluZSAhPSBwb3NpdGlvbi5tX2xp
bmUgJiYgbV9sYXN0RXJyb3JQb3NpdGlvbi0+bV9jb2x1bW4gIT0gcG9zaXRpb24ubV9jb2x1bW4p
KSkpIHsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNhc2Ugd2FybmluZzoKICAg
ICAgICAgICAgIGFwcGVuZEVycm9yTWVzc2FnZSgid2FybmluZyIsIHBvc2l0aW9uLCBtZXNzYWdl
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmgJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBA
QCBwcml2YXRlOgogCiAgICAgRG9jdW1lbnQmIG1fZG9jdW1lbnQ7CiAgICAgaW50IG1fZXJyb3JD
b3VudCB7IDAgfTsKLSAgICBUZXh0UG9zaXRpb24gbV9sYXN0RXJyb3JQb3NpdGlvbjsKKyAgICBz
dGQ6Om9wdGlvbmFsPFRleHRQb3NpdGlvbj4gbV9sYXN0RXJyb3JQb3NpdGlvbjsKICAgICBTdHJp
bmdCdWlsZGVyIG1fZXJyb3JNZXNzYWdlczsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3ht
bC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAJKHJldmlz
aW9uIDIwOTUwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXJMaWJ4bWwyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM4MSw3ICsxMzgxLDcgQEAgVGV4dFBv
c2l0aW9uIFhNTERvY3VtZW50UGFyc2VyOjp0ZXh0UG9zaQogewogICAgIHhtbFBhcnNlckN0eHRQ
dHIgY29udGV4dCA9IHRoaXMtPmNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAg
IHJldHVybiBUZXh0UG9zaXRpb246Om1pbmltdW1Qb3NpdGlvbigpOworICAgICAgICByZXR1cm4g
VGV4dFBvc2l0aW9uKCk7CiAgICAgcmV0dXJuIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpm
cm9tT25lQmFzZWRJbnQoY29udGV4dC0+aW5wdXQtPmxpbmUpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KGNvbnRleHQtPmlucHV0LT5jb2wp
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9X
ZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE2
LTEyLTA5ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgVGV4
dFBvc2l0aW9uIGFuZCBPcmRpbmFsTnVtYmVyIHNob3VsZCBiZSBtb3JlIGxpa2UgaWRpb21hdGlj
IG51bWJlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2NTY3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkb3B0IGRlZmF1bHQgY29uc3RydWN0b3IuCisKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblBh
Y2thZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFrZVNvdXJjZSk6CisKIDIwMTYtMTEtMjYg
IFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW1dURl0g
SW1wb3J0IHN0ZDo6b3B0aW9uYWwgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGFzIFdURjo6T3B0
aW9uYWwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlLmNw
cAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5Q
YWNrYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkyLDcgKzE5Miw3IEBAIHN0YXRpYyB2b2lk
IGdldExpc3RGcm9tVmFyaWFudEFyZ3MoSlNDOjoKICAgICAgICAgYUxpc3QuYXBwZW5kKEpTQzo6
QmluZGluZ3M6OmNvbnZlcnROUFZhcmlhbnRUb1ZhbHVlKGV4ZWMsICZhcmdzW2ldLCByb290T2Jq
ZWN0KSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpTb3VyY2VDb2RlIG1ha2VTb3VyY2UoY29u
c3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgdXJsID0gU3RyaW5nKCksIGNvbnN0IFRl
eHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiA9IFRleHRQb3NpdGlvbjo6bWluaW11bVBvc2l0aW9u
KCkpCitzdGF0aWMgaW5saW5lIEpTQzo6U291cmNlQ29kZSBtYWtlU291cmNlKGNvbnN0IFN0cmlu
ZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIHVybCA9IFN0cmluZygpLCBjb25zdCBUZXh0UG9zaXRp
b24mIHN0YXJ0UG9zaXRpb24gPSBUZXh0UG9zaXRpb24oKSkKIHsKICAgICByZXR1cm4gSlNDOjpT
b3VyY2VDb2RlKEpTQzo6U3RyaW5nU291cmNlUHJvdmlkZXI6OmNyZWF0ZShzb3VyY2UsIHVybCwg
c3RhcnRQb3NpdGlvbiksIHN0YXJ0UG9zaXRpb24ubV9saW5lLm9uZUJhc2VkSW50KCksIHN0YXJ0
UG9zaXRpb24ubV9jb2x1bW4ub25lQmFzZWRJbnQoKSk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296693</attachid>
            <date>2016-12-09 13:57:17 -0800</date>
            <delta_ts>2016-12-09 13:57:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165678-20161209135635.patch</filename>
            <type>text/plain</type>
            <size>24280</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA5NjI0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBA
CisyMDE2LTEyLTA5ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgVGV4dFBvc2l0aW9uIGFuZCBPcmRpbmFsTnVtYmVyIHNob3VsZCBiZSBtb3JlIGxpa2UgaWRp
b21hdGljIG51bWJlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2NTY3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkb3B0IGRlZmF1bHQgY29uc3RydWN0b3IuCisKKyAgICAgICAgKiBBUEkvSlNCYXNl
LmNwcDoKKyAgICAgICAgKEpTRXZhbHVhdGVTY3JpcHQpOgorICAgICAgICAoSlNDaGVja1Njcmlw
dFN5bnRheCk6CisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNwcDoKKyAgICAgICAgKEpTT2Jq
ZWN0TWFrZUZ1bmN0aW9uKToKKyAgICAgICAgKiBBUEkvSlNTY3JpcHRSZWYuY3BwOgorICAgICAg
ICAoT3BhcXVlSlNTY3JpcHQ6Ok9wYXF1ZUpTU2NyaXB0KToKKyAgICAgICAgKiBqc2MuY3BwOgor
ICAgICAgICAoZnVuY3Rpb25DaGVja01vZHVsZVN5bnRheCk6CisgICAgICAgICogcGFyc2VyL1Nv
dXJjZUNvZGUuaDoKKyAgICAgICAgKEpTQzo6bWFrZVNvdXJjZSk6CisgICAgICAgICogcGFyc2Vy
L1NvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgIChKU0M6OlN0cmluZ1NvdXJjZVByb3ZpZGVyOjpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseVNvdXJjZVByb3ZpZGVyOjpXZWJBc3Nl
bWJseVNvdXJjZVByb3ZpZGVyKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RGdW5jdGlvbik6CisgICAgICAgICogcnVu
dGltZS9Nb2R1bGVMb2FkZXJQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjptb2R1bGVMb2Fk
ZXJQcm90b3R5cGVQYXJzZU1vZHVsZSk6CisKIDIwMTYtMTItMDkgIEZpbGlwIFBpemxvICA8ZnBp
emxvQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBkaXNhYmxlIGNvbmN1cnJlbnQg
R0MgZm9yIHJlYWwuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gMjA5NTAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0Mjks
NyArMjQyOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DaGUKICAg
ICBzdG9wV2F0Y2guc3RhcnQoKTsKIAogICAgIFBhcnNlckVycm9yIGVycm9yOwotICAgIGJvb2wg
dmFsaWRTeW50YXggPSBjaGVja01vZHVsZVN5bnRheChleGVjLCBtYWtlU291cmNlKHNvdXJjZSwg
U3RyaW5nKCksIFRleHRQb3NpdGlvbjo6bWluaW11bVBvc2l0aW9uKCksIFNvdXJjZVByb3ZpZGVy
U291cmNlVHlwZTo6TW9kdWxlKSwgZXJyb3IpOworICAgIGJvb2wgdmFsaWRTeW50YXggPSBjaGVj
a01vZHVsZVN5bnRheChleGVjLCBtYWtlU291cmNlKHNvdXJjZSwgU3RyaW5nKCksIFRleHRQb3Np
dGlvbigpLCBTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6Ok1vZHVsZSksIGVycm9yKTsKICAgICBz
dG9wV2F0Y2guc3RvcCgpOwogCiAgICAgaWYgKCF2YWxpZFN5bnRheCkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQmFzZS5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBA
QCBKU1ZhbHVlUmVmIEpTRXZhbHVhdGVTY3JpcHQoSlNDb250ZXh0UmVmCiAKICAgICAvLyBldmFs
dWF0ZSBzZXRzICJ0aGlzIiB0byB0aGUgZ2xvYmFsIG9iamVjdCBpZiBpdCBpcyBOVUxMCiAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3Qo
KTsKLSAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1ha2VTb3VyY2Uoc2NyaXB0LT5zdHJpbmcoKSwg
c291cmNlVVJMID8gc291cmNlVVJMLT5zdHJpbmcoKSA6IFN0cmluZygpLCBUZXh0UG9zaXRpb24o
T3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KHN0YXJ0aW5nTGluZU51bWJlciksIE9yZGlu
YWxOdW1iZXI6OmZpcnN0KCkpKTsKKyAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1ha2VTb3VyY2Uo
c2NyaXB0LT5zdHJpbmcoKSwgc291cmNlVVJMID8gc291cmNlVVJMLT5zdHJpbmcoKSA6IFN0cmlu
ZygpLCBUZXh0UG9zaXRpb24oT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KHN0YXJ0aW5n
TGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogCiAgICAgTmFrZWRQdHI8RXhjZXB0aW9u
PiBldmFsdWF0aW9uRXhjZXB0aW9uOwogICAgIEpTVmFsdWUgcmV0dXJuVmFsdWUgPSBwcm9maWxl
ZEV2YWx1YXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBQcm9maWxpbmdSZWFzb246OkFQ
SSwgc291cmNlLCBqc1RoaXNPYmplY3QsIGV2YWx1YXRpb25FeGNlcHRpb24pOwpAQCAtOTksNyAr
OTksNyBAQCBib29sIEpTQ2hlY2tTY3JpcHRTeW50YXgoSlNDb250ZXh0UmVmIGN0CiAKICAgICBz
dGFydGluZ0xpbmVOdW1iZXIgPSBzdGQ6Om1heCgxLCBzdGFydGluZ0xpbmVOdW1iZXIpOwogCi0g
ICAgU291cmNlQ29kZSBzb3VyY2UgPSBtYWtlU291cmNlKHNjcmlwdC0+c3RyaW5nKCksIHNvdXJj
ZVVSTCA/IHNvdXJjZVVSTC0+c3RyaW5nKCkgOiBTdHJpbmcoKSwgVGV4dFBvc2l0aW9uKE9yZGlu
YWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChzdGFydGluZ0xpbmVOdW1iZXIpLCBPcmRpbmFsTnVt
YmVyOjpmaXJzdCgpKSk7CisgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtYWtlU291cmNlKHNjcmlw
dC0+c3RyaW5nKCksIHNvdXJjZVVSTCA/IHNvdXJjZVVSTC0+c3RyaW5nKCkgOiBTdHJpbmcoKSwg
VGV4dFBvc2l0aW9uKE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChzdGFydGluZ0xpbmVO
dW1iZXIpLCBPcmRpbmFsTnVtYmVyKCkpKTsKICAgICAKICAgICBKU1ZhbHVlIHN5bnRheEV4Y2Vw
dGlvbjsKICAgICBib29sIGlzVmFsaWRTeW50YXggPSBjaGVja1N5bnRheChleGVjLT52bUVudHJ5
R2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgc291cmNlLCAmc3ludGF4RXhjZXB0aW9uKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCShyZXZpc2lv
biAyMDk1MDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTQ2LDcgKzE0Niw3IEBAIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFr
ZUZ1bmN0aW9uKEpTQ29udGUKICAgICAgICAgYXJncy5hcHBlbmQoanNTdHJpbmcoZXhlYywgcGFy
YW1ldGVyTmFtZXNbaV0tPnN0cmluZygpKSk7CiAgICAgYXJncy5hcHBlbmQoanNTdHJpbmcoZXhl
YywgYm9keS0+c3RyaW5nKCkpKTsKIAotICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RG
dW5jdGlvbihleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGFyZ3MsIG5hbWVJRCwg
c291cmNlVVJMID8gc291cmNlVVJMLT5zdHJpbmcoKSA6IFN0cmluZygpLCBUZXh0UG9zaXRpb24o
T3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KHN0YXJ0aW5nTGluZU51bWJlciksIE9yZGlu
YWxOdW1iZXI6OmZpcnN0KCkpKTsKKyAgICBKU09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RnVu
Y3Rpb24oZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBhcmdzLCBuYW1lSUQsIHNv
dXJjZVVSTCA/IHNvdXJjZVVSTC0+c3RyaW5nKCkgOiBTdHJpbmcoKSwgVGV4dFBvc2l0aW9uKE9y
ZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChzdGFydGluZ0xpbmVOdW1iZXIpLCBPcmRpbmFs
TnVtYmVyKCkpKTsKICAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoZXhlYywgZXhjZXB0
aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQogICAgICAgICByZXN1bHQgPSAwOwog
ICAgIHJldHVybiB0b1JlZihyZXN1bHQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1NjcmlwdFJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU1NjcmlwdFJlZi5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNTY3JpcHRSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBA
IHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBPcGFxdWVKU1NjcmlwdChWTSogdm0sIGNvbnN0IFN0
cmluZyYgdXJsLCBpbnQgc3RhcnRpbmdMaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZSkK
LSAgICAgICAgOiBTb3VyY2VQcm92aWRlcih1cmwsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVy
Ojpmcm9tT25lQmFzZWRJbnQoc3RhcnRpbmdMaW5lTnVtYmVyKSwgT3JkaW5hbE51bWJlcjo6Zmly
c3QoKSksIFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSkKKyAgICAgICAgOiBTb3Vy
Y2VQcm92aWRlcih1cmwsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJ
bnQoc3RhcnRpbmdMaW5lTnVtYmVyKSwgT3JkaW5hbE51bWJlcigpKSwgU291cmNlUHJvdmlkZXJT
b3VyY2VUeXBlOjpQcm9ncmFtKQogICAgICAgICAsIG1fdm0odm0pCiAgICAgICAgICwgbV9zb3Vy
Y2Uoc291cmNlLmlzTnVsbCgpID8gKlN0cmluZ0ltcGw6OmVtcHR5KCkgOiAqc291cmNlLmltcGwo
KSkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGUu
aAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3Vy
Y2VDb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcgKzgxLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIGludCBtX3N0YXJ0Q29sdW1uOwogICAgIH07CiAKLSAgICBpbmxpbmUgU291cmNl
Q29kZSBtYWtlU291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIHVybCA9
IFN0cmluZygpLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24gPSBUZXh0UG9zaXRp
b246Om1pbmltdW1Qb3NpdGlvbigpLCBTb3VyY2VQcm92aWRlclNvdXJjZVR5cGUgc291cmNlVHlw
ZSA9IFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3JhbSkKKyAgICBpbmxpbmUgU291cmNl
Q29kZSBtYWtlU291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIHVybCA9
IFN0cmluZygpLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24gPSBUZXh0UG9zaXRp
b24oKSwgU291cmNlUHJvdmlkZXJTb3VyY2VUeXBlIHNvdXJjZVR5cGUgPSBTb3VyY2VQcm92aWRl
clNvdXJjZVR5cGU6OlByb2dyYW0pCiAgICAgewogICAgICAgICByZXR1cm4gU291cmNlQ29kZShT
dHJpbmdTb3VyY2VQcm92aWRlcjo6Y3JlYXRlKHNvdXJjZSwgdXJsLCBzdGFydFBvc2l0aW9uLCBz
b3VyY2VUeXBlKSwgc3RhcnRQb3NpdGlvbi5tX2xpbmUub25lQmFzZWRJbnQoKSwgc3RhcnRQb3Np
dGlvbi5tX2NvbHVtbi5vbmVCYXNlZEludCgpKTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oCShyZXZpc2lvbiAyMDk1MDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTg5LDcgKzg5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBTdHJp
bmdTb3VyY2VQcm92aWRlciA6IHB1YmxpYyBTb3VyY2VQcm92aWRlciB7CiAgICAgcHVibGljOgot
ICAgICAgICBzdGF0aWMgUmVmPFN0cmluZ1NvdXJjZVByb3ZpZGVyPiBjcmVhdGUoY29uc3QgU3Ry
aW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0
UG9zaXRpb24gPSBUZXh0UG9zaXRpb246Om1pbmltdW1Qb3NpdGlvbigpLCBTb3VyY2VQcm92aWRl
clNvdXJjZVR5cGUgc291cmNlVHlwZSA9IFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3Jh
bSkKKyAgICAgICAgc3RhdGljIFJlZjxTdHJpbmdTb3VyY2VQcm92aWRlcj4gY3JlYXRlKGNvbnN0
IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgVGV4dFBvc2l0aW9uJiBz
dGFydFBvc2l0aW9uID0gVGV4dFBvc2l0aW9uKCksIFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZSBz
b3VyY2VUeXBlID0gU291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQcm9ncmFtKQogICAgICAgICB7
CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHJpbmdTb3VyY2VQcm92aWRlcihz
b3VyY2UsIHVybCwgc3RhcnRQb3NpdGlvbiwgc291cmNlVHlwZSkpOwogICAgICAgICB9CkBAIC0x
MzksNyArMTM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcml2YXRlOgogICAgICAgICBX
ZWJBc3NlbWJseVNvdXJjZVByb3ZpZGVyKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSwgY29u
c3QgU3RyaW5nJiB1cmwpCi0gICAgICAgICAgICA6IFNvdXJjZVByb3ZpZGVyKHVybCwgVGV4dFBv
c2l0aW9uOjptaW5pbXVtUG9zaXRpb24oKSwgU291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpXZWJB
c3NlbWJseSkKKyAgICAgICAgICAgIDogU291cmNlUHJvdmlkZXIodXJsLCBUZXh0UG9zaXRpb24o
KSwgU291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpXZWJBc3NlbWJseSkKICAgICAgICAgICAgICwg
bV9zb3VyY2UoIltXZWJBc3NlbWJseSBzb3VyY2VdIikKICAgICAgICAgICAgICwgbV9kYXRhKGRh
dGEpCiAgICAgICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTcwLDcgKzE3MCw3IEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvblNr
aXBwaW5nRXZhbEUKIC8vIEVDTUEgMTUuMy4yIFRoZSBGdW5jdGlvbiBDb25zdHJ1Y3RvcgogSlNP
YmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncywgRnVuY3Rpb25Db25zdHJ1Y3Rpb25N
b2RlIGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSwgSlNWYWx1ZSBuZXdUYXJnZXQpCiB7Ci0gICAg
cmV0dXJuIGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgYXJncywgZXhlYy0+
cHJvcGVydHlOYW1lcygpLmFub255bW91cywgU3RyaW5nKCksIFRleHRQb3NpdGlvbjo6bWluaW11
bVBvc2l0aW9uKCksIGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSwgbmV3VGFyZ2V0KTsKKyAgICBy
ZXR1cm4gY29uc3RydWN0RnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBhcmdzLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuYW5vbnltb3VzLCBTdHJpbmcoKSwgVGV4dFBvc2l0aW9uKCksIGZ1bmN0
aW9uQ29uc3RydWN0aW9uTW9kZSwgbmV3VGFyZ2V0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlND
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJQcm90b3R5
cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVs
ZUxvYWRlclByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExMyw3ICsxMTMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxv
YWRlCiAgICAgU3RyaW5nIHNvdXJjZSA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKIAotICAgIFNvdXJjZUNvZGUgc291cmNlQ29kZSA9IG1ha2VTb3VyY2Uoc291cmNl
LCBtb2R1bGVLZXkuaW1wbCgpLCBUZXh0UG9zaXRpb246Om1pbmltdW1Qb3NpdGlvbigpLCBTb3Vy
Y2VQcm92aWRlclNvdXJjZVR5cGU6Ok1vZHVsZSk7CisgICAgU291cmNlQ29kZSBzb3VyY2VDb2Rl
ID0gbWFrZVNvdXJjZShzb3VyY2UsIG1vZHVsZUtleS5pbXBsKCksIFRleHRQb3NpdGlvbigpLCBT
b3VyY2VQcm92aWRlclNvdXJjZVR5cGU6Ok1vZHVsZSk7CiAKICAgICBDb2RlUHJvZmlsaW5nIHBy
b2ZpbGUoc291cmNlQ29kZSk7CiAKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDk2MTgpCisrKyBTb3VyY2Uv
V1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE2LTEyLTA5
ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgVGV4dFBvc2l0
aW9uIGFuZCBPcmRpbmFsTnVtYmVyIHNob3VsZCBiZSBtb3JlIGxpa2UgaWRpb21hdGljIG51bWJl
cnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTY3
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3Rm
L3RleHQvVGV4dFBvc2l0aW9uLmg6CisgICAgICAgIChXVEY6OlRleHRQb3NpdGlvbjo6bWluaW11
bVBvc2l0aW9uKTogRGVsZXRlZC4gSnVzdCB1c2UgdGhlIGRlZmF1bHQKKyAgICAgICAgY29uc3Ry
dWN0b3IuIE90aGVyIG51bWJlcnMgdXNlIHRoZWlyIGRlZmF1bHQgY29uc3RydWN0b3JzIHRvIG1l
YW4gemVyby4KKworICAgICAgICBBbnkgdGltZSB5b3UgbmVlZCBhIGNvbW1lbnQgdGhhdCBzYXlz
ICJ1c2VkIGFzIGEgZGVmYXVsdCB2YWx1ZSIsIHRoYXQncworICAgICAgICBhIHByZXR0eSBnb29k
IGluZGljYXRvciB0aGF0IGl0IHNob3VsZCBiZSB0aGUgZGVmYXVsdCBjb25zdHJ1Y3Rvci4KKwog
MjAxNi0xMi0wOSAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAg
IE1vdmVkIE9yZGluYWxOdW1iZXIgaW50byBpdHMgb3duIGZpbGUKSW5kZXg6IFNvdXJjZS9XVEYv
d3RmL3RleHQvT3JkaW5hbE51bWJlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL3Rl
eHQvT3JkaW5hbE51bWJlci5oCShyZXZpc2lvbiAyMDk2MTgpCisrKyBTb3VyY2UvV1RGL3d0Zi90
ZXh0L09yZGluYWxOdW1iZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQCBjbGFz
cyBPcmRpbmFsTnVtYmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgT3JkaW5hbE51bWJlciBmcm9t
WmVyb0Jhc2VkSW50KGludCB6ZXJvQmFzZWRJbnQpIHsgcmV0dXJuIE9yZGluYWxOdW1iZXIoemVy
b0Jhc2VkSW50KTsgfQogICAgIHN0YXRpYyBPcmRpbmFsTnVtYmVyIGZyb21PbmVCYXNlZEludChp
bnQgb25lQmFzZWRJbnQpIHsgcmV0dXJuIE9yZGluYWxOdW1iZXIob25lQmFzZWRJbnQgLSAxKTsg
fQorCiAgICAgT3JkaW5hbE51bWJlcigpIDogbV96ZXJvQmFzZWRWYWx1ZSgwKSB7IH0KIAogICAg
IGludCB6ZXJvQmFzZWRJbnQoKSBjb25zdCB7IHJldHVybiBtX3plcm9CYXNlZFZhbHVlOyB9CkBA
IC00MSw3ICs0Miw2IEBAIHB1YmxpYzoKICAgICBib29sIG9wZXJhdG9yPT0oT3JkaW5hbE51bWJl
ciBvdGhlcikgeyByZXR1cm4gbV96ZXJvQmFzZWRWYWx1ZSA9PSBvdGhlci5tX3plcm9CYXNlZFZh
bHVlOyB9CiAgICAgYm9vbCBvcGVyYXRvciE9KE9yZGluYWxOdW1iZXIgb3RoZXIpIHsgcmV0dXJu
ICEoKCp0aGlzKSA9PSBvdGhlcik7IH0KIAotICAgIHN0YXRpYyBPcmRpbmFsTnVtYmVyIGZpcnN0
KCkgeyByZXR1cm4gT3JkaW5hbE51bWJlcigwKTsgfQogICAgIHN0YXRpYyBPcmRpbmFsTnVtYmVy
IGJlZm9yZUZpcnN0KCkgeyByZXR1cm4gT3JkaW5hbE51bWJlcigtMSk7IH0KIAogcHJpdmF0ZToK
SW5kZXg6IFNvdXJjZS9XVEYvd3RmL3RleHQvVGV4dFBvc2l0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvdGV4dC9UZXh0UG9zaXRpb24uaAkocmV2aXNpb24gMjA5NjE4KQorKysg
U291cmNlL1dURi93dGYvdGV4dC9UZXh0UG9zaXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzcs
MTMgKzM3LDExIEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2NvbHVtbihjb2x1bW4pCiAgICAgewog
ICAgIH0KKwogICAgIFRleHRQb3NpdGlvbigpIHsgfQogICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBUZXh0UG9zaXRpb24mIG90aGVyKSB7IHJldHVybiBtX2xpbmUgPT0gb3RoZXIubV9saW5lICYm
IG1fY29sdW1uID09IG90aGVyLm1fY29sdW1uOyB9CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IFRleHRQb3NpdGlvbiYgb3RoZXIpIHsgcmV0dXJuICEoKCp0aGlzKSA9PSBvdGhlcik7IH0KIAot
ICAgIC8vIEEgJ21pbmltdW0nIHZhbHVlIG9mIHBvc2l0aW9uLCB1c2VkIGFzIGEgZGVmYXVsdCB2
YWx1ZS4KLSAgICBzdGF0aWMgVGV4dFBvc2l0aW9uIG1pbmltdW1Qb3NpdGlvbigpIHsgcmV0dXJu
IFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmaXJzdCgpLCBPcmRpbmFsTnVtYmVyOjpmaXJz
dCgpKTsgfQotCiAgICAgLy8gQSB2YWx1ZSB3aXRoIGxpbmUgdmFsdWUgbGVzcyB0aGFuIGEgbWlu
aW11bTsgdXNlZCBhcyBhbiBpbXBvc3NpYmxlIHBvc2l0aW9uLgogICAgIHN0YXRpYyBUZXh0UG9z
aXRpb24gYmVsb3dSYW5nZVBvc2l0aW9uKCkgeyByZXR1cm4gVGV4dFBvc2l0aW9uKE9yZGluYWxO
dW1iZXI6OmJlZm9yZUZpcnN0KCksIE9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCkpOyB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDE2LTEyLTA5ICBHZW9mZnJl
eSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgVGV4dFBvc2l0aW9uIGFuZCBP
cmRpbmFsTnVtYmVyIHNob3VsZCBiZSBtb3JlIGxpa2UgaWRpb21hdGljIG51bWJlcnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTY3OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYmluZGluZ3MvanMv
Q2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNj
cmlwdFNvdXJjZVByb3ZpZGVyOjpDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlcik6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpKU0V2
ZW50TGlzdGVuZXI6OnNvdXJjZVBvc2l0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0xh
enlFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTGF6eUV2ZW50TGlzdGVu
ZXI6OkpTTGF6eUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXZlbnRI
YW5kbGVyUG9zaXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFNvdXJjZUNvZGU6OlNjcmlwdFNvdXJjZUNvZGUp
OgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1N0eWxlU2hlZXQ6OmNyZWF0ZSk6CisgICAgICAgICogZG9tL1NjcmlwdEVsZW1lbnQuaDoKKyAg
ICAgICAgKiBodG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6dW5pbml0aWFsaXplZFBvc2l0aW9uVmFsdWUxKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNo
ZWV0OjpidWlsZE9iamVjdEZvclN0eWxlU2hlZXRJbmZvKTogQWRvcHQKKyAgICAgICAgZGVmYXVs
dCBjb25zdHJ1dG9yLgorCisgICAgICAgICogeG1sL1hNTEVycm9ycy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpYTUxFcnJvcnM6OlhNTEVycm9ycyk6CisgICAgICAgIChXZWJDb3JlOjpYTUxFcnJv
cnM6OmhhbmRsZUVycm9yKToKKyAgICAgICAgKiB4bWwvWE1MRXJyb3JzLmg6IFVzZSBzdGQ6Om9w
dGlvbmFsIGluc3RlYWQgb2YgYmVsb3dSYW5nZVBvc2l0aW9uKCkKKyAgICAgICAgYmVjYXVzZSBp
bi1iYW5kIHNpZ25hbGluZyBpcyBoYXJkZXIgdG8gcmVhc29uIGFib3V0LgorCisgICAgICAgICog
eG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6WE1MRG9jdW1lbnRQYXJzZXI6OnRleHRQb3NpdGlvbik6IEFkb3B0IGRlZmF1bHQgY29uc3Ry
dWN0b3IuCisKIDIwMTYtMTItMDcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+CiAKICAgICAgICAgW0pTQ10gRHJvcCB0cmFuc2xhdGUgcGhhc2UgaW4gbW9kdWxlIGxvYWRl
cgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0U291cmNlUHJv
dmlkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRT
Y3JpcHRTb3VyY2VQcm92aWRlci5oCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBDYWNoZWRTY3JpcHRT
b3VyY2VQcm92aWRlcihDYWNoZWRTY3JpcHQqIGNhY2hlZFNjcmlwdCwgSlNDOjpTb3VyY2VQcm92
aWRlclNvdXJjZVR5cGUgc291cmNlVHlwZSkKLSAgICAgICAgOiBTb3VyY2VQcm92aWRlcihjYWNo
ZWRTY3JpcHQtPnJlc3BvbnNlKCkudXJsKCksIFRleHRQb3NpdGlvbjo6bWluaW11bVBvc2l0aW9u
KCksIHNvdXJjZVR5cGUpCisgICAgICAgIDogU291cmNlUHJvdmlkZXIoY2FjaGVkU2NyaXB0LT5y
ZXNwb25zZSgpLnVybCgpLCBUZXh0UG9zaXRpb24oKSwgc291cmNlVHlwZSkKICAgICAgICAgLCBt
X2NhY2hlZFNjcmlwdChjYWNoZWRTY3JpcHQpCiAgICAgewogICAgICAgICBtX2NhY2hlZFNjcmlw
dC0+YWRkQ2xpZW50KCp0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXZlbnRMaXN0ZW5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRXZlbnRMaXN0ZW5lci5oCShyZXZpc2lvbiAyMDk1MDApCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRXcmFwcGVyKEpTQzo6Vk0mLCBKU0M6OkpTT2JqZWN0
KiB3cmFwcGVyKSBjb25zdCB7IG1fd3JhcHBlciA9IEpTQzo6V2VhazxKU0M6OkpTT2JqZWN0Pih3
cmFwcGVyKTsgfQogCiAgICAgdmlydHVhbCBTdHJpbmcgc291cmNlVVJMKCkgY29uc3QgeyByZXR1
cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFsIFRleHRQb3NpdGlvbiBzb3VyY2VQb3NpdGlvbigp
IGNvbnN0IHsgcmV0dXJuIFRleHRQb3NpdGlvbjo6bWluaW11bVBvc2l0aW9uKCk7IH0KKyAgICB2
aXJ0dWFsIFRleHRQb3NpdGlvbiBzb3VyY2VQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIFRleHRQ
b3NpdGlvbigpOyB9CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBKU0M6OkpTT2JqZWN0KiBpbml0
aWFsaXplSlNGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgY29uc3Q7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNw
cAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5
RXZlbnRMaXN0ZW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgSlNMYXp5
RXZlbnRMaXN0ZW5lcjo6SlNMYXp5RXZlbnRMaXN0ZW5lcgogICAgIC8vIEEgSlNMYXp5RXZlbnRM
aXN0ZW5lciBjYW4gYmUgY3JlYXRlZCB3aXRoIGEgbGluZSBudW1iZXIgb2YgemVybyB3aGVuIGl0
IGlzIGNyZWF0ZWQgd2l0aAogICAgIC8vIGEgc2V0QXR0cmlidXRlIGNhbGwgZnJvbSBKYXZhU2Ny
aXB0LCBzbyBtYWtlIHRoZSBsaW5lIG51bWJlciAxIGluIHRoYXQgY2FzZS4KICAgICBpZiAobV9z
b3VyY2VQb3NpdGlvbiA9PSBUZXh0UG9zaXRpb246OmJlbG93UmFuZ2VQb3NpdGlvbigpKQotICAg
ICAgICBtX3NvdXJjZVBvc2l0aW9uID0gVGV4dFBvc2l0aW9uOjptaW5pbXVtUG9zaXRpb24oKTsK
KyAgICAgICAgbV9zb3VyY2VQb3NpdGlvbiA9IFRleHRQb3NpdGlvbigpOwogCiAgICAgQVNTRVJU
KG1fZXZlbnRQYXJhbWV0ZXJOYW1lID09ICJldnQiIHx8IG1fZXZlbnRQYXJhbWV0ZXJOYW1lID09
ICJldmVudCIpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyMCw3ICs0
MjAsNyBAQCBUZXh0UG9zaXRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXZlbnRIYW5kCiAgICAgU2Ny
aXB0YWJsZURvY3VtZW50UGFyc2VyKiBwYXJzZXIgPSBtX2ZyYW1lLmRvY3VtZW50KCktPnNjcmlw
dGFibGVEb2N1bWVudFBhcnNlcigpOwogICAgIGlmIChwYXJzZXIpCiAgICAgICAgIHJldHVybiBw
YXJzZXItPnRleHRQb3NpdGlvbigpOwotICAgIHJldHVybiBUZXh0UG9zaXRpb246Om1pbmltdW1Q
b3NpdGlvbigpOworICAgIHJldHVybiBUZXh0UG9zaXRpb24oKTsKIH0KIAogdm9pZCBTY3JpcHRD
b250cm9sbGVyOjplbmFibGVFdmFsKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdFNvdXJjZUNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRTb3VyY2VDb2RlLmgJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdFNvdXJjZUNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDIs
NyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNjcmlwdFNvdXJjZUNvZGUg
ewogcHVibGljOgotICAgIFNjcmlwdFNvdXJjZUNvZGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNv
bnN0IFVSTCYgdXJsID0gVVJMKCksIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiA9
IFRleHRQb3NpdGlvbjo6bWluaW11bVBvc2l0aW9uKCksIEpTQzo6U291cmNlUHJvdmlkZXJTb3Vy
Y2VUeXBlIHNvdXJjZVR5cGUgPSBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6UHJvZ3Jh
bSkKKyAgICBTY3JpcHRTb3VyY2VDb2RlKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBVUkwm
IHVybCA9IFVSTCgpLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24gPSBUZXh0UG9z
aXRpb24oKSwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGUgc291cmNlVHlwZSA9IEpTQzo6
U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpQcm9ncmFtKQogICAgICAgICA6IG1fcHJvdmlkZXIo
SlNDOjpTdHJpbmdTb3VyY2VQcm92aWRlcjo6Y3JlYXRlKHNvdXJjZSwgdXJsLmlzTnVsbCgpID8g
U3RyaW5nKCkgOiB1cmwuc3RyaW5nKCksIHN0YXJ0UG9zaXRpb24sIHNvdXJjZVR5cGUpKQogICAg
ICAgICAsIG1fY29kZShtX3Byb3ZpZGVyLCBzdGFydFBvc2l0aW9uLm1fbGluZS5vbmVCYXNlZElu
dCgpLCBzdGFydFBvc2l0aW9uLm1fY29sdW1uLm9uZUJhc2VkSW50KCkpCiAgICAgICAgICwgbV91
cmwodXJsKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAkocmV2aXNpb24g
MjA5NTAwKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIFJlZjxDU1NTdHlsZVNoZWV0PiBDU1NTdHlsZVNoZWV0
OjpjcmVhdGUKIAogUmVmPENTU1N0eWxlU2hlZXQ+IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShSZWY8
U3R5bGVTaGVldENvbnRlbnRzPiYmIHNoZWV0LCBOb2RlJiBvd25lck5vZGUsIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8Ym9vbD4mIGlzQ2xlYW5PcmlnaW4pCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQ1NTU3R5bGVTaGVldChXVEZNb3ZlKHNoZWV0KSwgb3duZXJOb2RlLCBUZXh0UG9zaXRpb246
Om1pbmltdW1Qb3NpdGlvbigpLCBmYWxzZSwgaXNDbGVhbk9yaWdpbikpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IENTU1N0eWxlU2hlZXQoV1RGTW92ZShzaGVldCksIG93bmVyTm9kZSwgVGV4
dFBvc2l0aW9uKCksIGZhbHNlLCBpc0NsZWFuT3JpZ2luKSk7CiB9CiAKIFJlZjxDU1NTdHlsZVNo
ZWV0PiBDU1NTdHlsZVNoZWV0OjpjcmVhdGVJbmxpbmUoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4m
JiBzaGVldCwgRWxlbWVudCYgb3duZXIsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlv
bikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaAkocmV2aXNpb24gMjA5NTAwKQor
KysgU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgRWxlbWVudCYgZWxlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fZWxlbWVudDsgfQogCiAgICAgZW51bSBMZWdhY3lUeXBlU3VwcG9ydCB7IERp
c2FsbG93TGVnYWN5VHlwZUluVHlwZUF0dHJpYnV0ZSwgQWxsb3dMZWdhY3lUeXBlSW5UeXBlQXR0
cmlidXRlIH07Ci0gICAgYm9vbCBwcmVwYXJlU2NyaXB0KGNvbnN0IFRleHRQb3NpdGlvbiYgc2Ny
aXB0U3RhcnRQb3NpdGlvbiA9IFRleHRQb3NpdGlvbjo6bWluaW11bVBvc2l0aW9uKCksIExlZ2Fj
eVR5cGVTdXBwb3J0ID0gRGlzYWxsb3dMZWdhY3lUeXBlSW5UeXBlQXR0cmlidXRlKTsKKyAgICBi
b29sIHByZXBhcmVTY3JpcHQoY29uc3QgVGV4dFBvc2l0aW9uJiBzY3JpcHRTdGFydFBvc2l0aW9u
ID0gVGV4dFBvc2l0aW9uKCksIExlZ2FjeVR5cGVTdXBwb3J0ID0gRGlzYWxsb3dMZWdhY3lUeXBl
SW5UeXBlQXR0cmlidXRlKTsKIAogICAgIFN0cmluZyBzY3JpcHRDaGFyc2V0KCkgY29uc3QgeyBy
ZXR1cm4gbV9jaGFyYWN0ZXJFbmNvZGluZzsgfQogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBz
Y3JpcHRDb250ZW50KCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MVHJlZUJ1aWxkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxUcmVlQnVpbGRlci5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcz
LDcgKzczLDcgQEAgaW5saW5lIGJvb2wgaXNIVE1MU3BhY2VPclJlcGxhY2VtZW50Q2hhcgogCiBz
dGF0aWMgaW5saW5lIFRleHRQb3NpdGlvbiB1bmluaXRpYWxpemVkUG9zaXRpb25WYWx1ZTEoKQog
ewotICAgIHJldHVybiBUZXh0UG9zaXRpb24oT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50
KC0xKSwgT3JkaW5hbE51bWJlcjo6Zmlyc3QoKSk7CisgICAgcmV0dXJuIFRleHRQb3NpdGlvbihP
cmRpbmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJbnQoLTEpLCBPcmRpbmFsTnVtYmVyKCkpOwogfQog
CiBzdGF0aWMgaW5saW5lIGJvb2wgaXNBbGxXaGl0ZXNwYWNlKGNvbnN0IFN0cmluZyYgc3RyaW5n
KQpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNo
ZWV0LmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclN0eWxlU2hlZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMyLDcgKzEwMzIsNyBA
QCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsCiAgICAgICAgIC5zZXRT
b3VyY2VVUkwoZmluYWxVUkwoKSkKICAgICAgICAgLnNldFRpdGxlKHN0eWxlU2hlZXQtPnRpdGxl
KCkpCiAgICAgICAgIC5zZXRGcmFtZUlkKG1fcGFnZUFnZW50LT5mcmFtZUlkKGZyYW1lKSkKLSAg
ICAgICAgLnNldElzSW5saW5lKHN0eWxlU2hlZXQtPmlzSW5saW5lKCkgJiYgc3R5bGVTaGVldC0+
c3RhcnRQb3NpdGlvbigpICE9IFRleHRQb3NpdGlvbjo6bWluaW11bVBvc2l0aW9uKCkpCisgICAg
ICAgIC5zZXRJc0lubGluZShzdHlsZVNoZWV0LT5pc0lubGluZSgpICYmIHN0eWxlU2hlZXQtPnN0
YXJ0UG9zaXRpb24oKSAhPSBUZXh0UG9zaXRpb24oKSkKICAgICAgICAgLnNldFN0YXJ0TGluZShz
dHlsZVNoZWV0LT5zdGFydFBvc2l0aW9uKCkubV9saW5lLnplcm9CYXNlZEludCgpKQogICAgICAg
ICAuc2V0U3RhcnRDb2x1bW4oc3R5bGVTaGVldC0+c3RhcnRQb3NpdGlvbigpLm1fY29sdW1uLnpl
cm9CYXNlZEludCgpKQogICAgICAgICAucmVsZWFzZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
eG1sL1hNTEVycm9ycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUveG1sL1hNTEVy
cm9ycy5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJv
cnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw2IEBAIGNvbnN0IGludCBtYXhFcnJv
cnMgPSAyNTsKIAogWE1MRXJyb3JzOjpYTUxFcnJvcnMoRG9jdW1lbnQmIGRvY3VtZW50KQogICAg
IDogbV9kb2N1bWVudChkb2N1bWVudCkKLSAgICAsIG1fbGFzdEVycm9yUG9zaXRpb24oVGV4dFBv
c2l0aW9uOjpiZWxvd1JhbmdlUG9zaXRpb24oKSkKIHsKIH0KIApAQCAtNjEsNyArNjAsNyBAQCB2
b2lkIFhNTEVycm9yczo6aGFuZGxlRXJyb3IoRXJyb3JUeXBlIHR5CiAKIHZvaWQgWE1MRXJyb3Jz
OjpoYW5kbGVFcnJvcihFcnJvclR5cGUgdHlwZSwgY29uc3QgY2hhciogbWVzc2FnZSwgVGV4dFBv
c2l0aW9uIHBvc2l0aW9uKQogewotICAgIGlmICh0eXBlID09IGZhdGFsIHx8IChtX2Vycm9yQ291
bnQgPCBtYXhFcnJvcnMgJiYgbV9sYXN0RXJyb3JQb3NpdGlvbi5tX2xpbmUgIT0gcG9zaXRpb24u
bV9saW5lICYmIG1fbGFzdEVycm9yUG9zaXRpb24ubV9jb2x1bW4gIT0gcG9zaXRpb24ubV9jb2x1
bW4pKSB7CisgICAgaWYgKHR5cGUgPT0gZmF0YWwgfHwgKG1fZXJyb3JDb3VudCA8IG1heEVycm9y
cyAmJiAoIW1fbGFzdEVycm9yUG9zaXRpb24gfHwgKG1fbGFzdEVycm9yUG9zaXRpb24tPm1fbGlu
ZSAhPSBwb3NpdGlvbi5tX2xpbmUgJiYgbV9sYXN0RXJyb3JQb3NpdGlvbi0+bV9jb2x1bW4gIT0g
cG9zaXRpb24ubV9jb2x1bW4pKSkpIHsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAg
IGNhc2Ugd2FybmluZzoKICAgICAgICAgICAgIGFwcGVuZEVycm9yTWVzc2FnZSgid2FybmluZyIs
IHBvc2l0aW9uLCBtZXNzYWdlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwvWE1MRXJyb3JzLmgJKHJldmlzaW9u
IDIwOTUwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuaAkod29ya2luZyBjb3B5
KQpAQCAtNTEsNyArNTEsNyBAQCBwcml2YXRlOgogCiAgICAgRG9jdW1lbnQmIG1fZG9jdW1lbnQ7
CiAgICAgaW50IG1fZXJyb3JDb3VudCB7IDAgfTsKLSAgICBUZXh0UG9zaXRpb24gbV9sYXN0RXJy
b3JQb3NpdGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFRleHRQb3NpdGlvbj4gbV9sYXN0RXJyb3JQ
b3NpdGlvbjsKICAgICBTdHJpbmdCdWlsZGVyIG1fZXJyb3JNZXNzYWdlczsKIH07CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2Vy
TGlieG1sMi5jcHAJKHJldmlzaW9uIDIwOTUwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9wYXJz
ZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM4MSw3
ICsxMzgxLDcgQEAgVGV4dFBvc2l0aW9uIFhNTERvY3VtZW50UGFyc2VyOjp0ZXh0UG9zaQogewog
ICAgIHhtbFBhcnNlckN0eHRQdHIgY29udGV4dCA9IHRoaXMtPmNvbnRleHQoKTsKICAgICBpZiAo
IWNvbnRleHQpCi0gICAgICAgIHJldHVybiBUZXh0UG9zaXRpb246Om1pbmltdW1Qb3NpdGlvbigp
OworICAgICAgICByZXR1cm4gVGV4dFBvc2l0aW9uKCk7CiAgICAgcmV0dXJuIFRleHRQb3NpdGlv
bihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJbnQoY29udGV4dC0+aW5wdXQtPmxpbmUpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KGNv
bnRleHQtPmlucHV0LT5jb2wpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIw
OTUwMCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE1IEBACisyMDE2LTEyLTA5ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5j
b20+CisKKyAgICAgICAgVGV4dFBvc2l0aW9uIGFuZCBPcmRpbmFsTnVtYmVyIHNob3VsZCBiZSBt
b3JlIGxpa2UgaWRpb21hdGljIG51bWJlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2NTY3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkb3B0IGRlZmF1bHQgY29uc3RydWN0b3IuCisKKyAgICAgICAg
KiBQbHVnaW5zL1BsdWdpblBhY2thZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFrZVNvdXJj
ZSk6CisKIDIwMTYtMTEtMjYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
CiAKICAgICAgICAgW1dURl0gSW1wb3J0IHN0ZDo6b3B0aW9uYWwgcmVmZXJlbmNlIGltcGxlbWVu
dGF0aW9uIGFzIFdURjo6T3B0aW9uYWwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMv
UGx1Z2luUGFja2FnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vUGx1Z2lu
cy9QbHVnaW5QYWNrYWdlLmNwcAkocmV2aXNpb24gMjA5NTAwKQorKysgU291cmNlL1dlYktpdC93
aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkyLDcgKzE5
Miw3IEBAIHN0YXRpYyB2b2lkIGdldExpc3RGcm9tVmFyaWFudEFyZ3MoSlNDOjoKICAgICAgICAg
YUxpc3QuYXBwZW5kKEpTQzo6QmluZGluZ3M6OmNvbnZlcnROUFZhcmlhbnRUb1ZhbHVlKGV4ZWMs
ICZhcmdzW2ldLCByb290T2JqZWN0KSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpTb3VyY2VD
b2RlIG1ha2VTb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgdXJsID0g
U3RyaW5nKCksIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiA9IFRleHRQb3NpdGlv
bjo6bWluaW11bVBvc2l0aW9uKCkpCitzdGF0aWMgaW5saW5lIEpTQzo6U291cmNlQ29kZSBtYWtl
U291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIHVybCA9IFN0cmluZygp
LCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24gPSBUZXh0UG9zaXRpb24oKSkKIHsK
ICAgICByZXR1cm4gSlNDOjpTb3VyY2VDb2RlKEpTQzo6U3RyaW5nU291cmNlUHJvdmlkZXI6OmNy
ZWF0ZShzb3VyY2UsIHVybCwgc3RhcnRQb3NpdGlvbiksIHN0YXJ0UG9zaXRpb24ubV9saW5lLm9u
ZUJhc2VkSW50KCksIHN0YXJ0UG9zaXRpb24ubV9jb2x1bW4ub25lQmFzZWRJbnQoKSk7CiB9Cg==
</data>
<flag name="review"
          id="319106"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>