<?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>44874</bug_id>
          
          <creation_ts>2010-08-30 09:16:56 -0700</creation_ts>
          <short_desc>Handle MediaQueryExp memory management exclusively with smart pointers</short_desc>
          <delta_ts>2010-09-08 04:08:31 -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="Maciej Stachowiak">mjs</reporter>
          <assigned_to name="Maciej Stachowiak">mjs</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>271459</commentid>
    <comment_count>0</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-08-30 09:16:56 -0700</bug_when>
    <thetext>Handle MediaQueryExp memory management exclusively with smart pointers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271462</commentid>
    <comment_count>1</comment_count>
      <attachid>65922</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-08-30 09:22:40 -0700</bug_when>
    <thetext>Created attachment 65922
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271463</commentid>
    <comment_count>2</comment_count>
      <attachid>65922</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-30 09:26:39 -0700</bug_when>
    <thetext>Comment on attachment 65922
Patch

I think we can use Vector&lt;OwnPtr&gt; almost everywhere we do deleteAllValues.

&gt; +inline PassOwnPtr&lt;MediaQueryExp&gt; MediaQueryExp::create(const AtomicString&amp; mediaFeature, CSSParserValueList* values)
&gt; +{
&gt; +    return adoptPtr(new MediaQueryExp(mediaFeature, values));
&gt; +}

The pattern I&apos;ve been using on these is to put the create function into the .cpp file and marking the constructor inline. I think this results in the same amount of function call overhead, and more code sharing between call sites of the create function.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271464</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-30 09:28:39 -0700</bug_when>
    <thetext>Attachment 65922 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
JavaScriptCore/wtf/NonCopyingSort.h:27:  #ifndef header guard has wrong style, please use: NonCopyingSort_h  [build/header_guard] [5]
JavaScriptCore/wtf/NonCopyingSort.h:32:  Use &apos;using namespace std;&apos; instead of &apos;using std::swap;&apos;.  [build/using_std] [4]
Total errors found: 2 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271480</commentid>
    <comment_count>4</comment_count>
      <attachid>65922</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-08-30 10:10:08 -0700</bug_when>
    <thetext>Comment on attachment 65922
Patch

&gt; Index: WebCore/ChangeLog
&gt; ===================================================================
&gt; +        Gace MediaQueryExp a create function, made the constructor private, and followed

If you haven&apos;t landed yet. Typo: &quot;Gace&quot; =&gt; &quot;Gave&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>275739</commentid>
    <comment_count>5</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-09-08 04:08:31 -0700</bug_when>
    <thetext>Committed r66968: &lt;http://trac.webkit.org/changeset/66968&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65922</attachid>
            <date>2010-08-30 09:22:40 -0700</date>
            <delta_ts>2010-08-30 10:10:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44874-20100830092239.patch</filename>
            <type>text/plain</type>
            <size>23617</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY2MzkxKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTAtMDgtMzAgIE1hY2llaiBT
dGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBIYW5kbGUgTWVkaWFRdWVyeUV4cCBtZW1vcnkgbWFuYWdlbWVu
dCBleGNsdXNpdmVseSB3aXRoIHNtYXJ0IHBvaW50ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDg3NAorICAgICAgICAKKyAgICAgICAgSW1wbGVt
ZW50ZWQgYSBub24tY29weWluZyBzb3J0IGZ1bmN0aW9uIHRvIG1ha2UgaXQgcG9zc2libGUgdG8g
c29ydCBhIFZlY3RvcgorICAgICAgICBvZiBPd25QdHJzICh3aGljaCBjYW5ub3QgYmUgY29waWVk
KS4gVGhpcyBpcyByZXF1aXJlZCBmb3IgdGhlIGFib3ZlLgorCisgICAgICAgICogd3RmL05vbkNv
cHlpbmdTb3J0Lmg6IEFkZGVkLgorICAgICAgICAoV1RGOjpub25Db3B5aW5nU29ydCk6IEl0J3Mg
c2VjcmV0bHkgaGVhcHNvcnQuCisgICAgICAgIChXVEY6OmhlYXBTb3J0KTogaGVhcHNvcnQgaW1w
bGVtZW50YXRpb24uCisgICAgICAgIChXVEY6OnNpZnREb3duKTogSGVscGVyIGZ1bmN0aW9uIGZv
ciBoZWFwc29ydC4KKyAgICAgICAgKFdURjo6aGVhcGlmeSk6IGRpdHRvCisKKyAgICAgICAgQWRq
dXN0IGJ1aWxkIHN5c3RlbXMuCisgICAgICAgIAorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmd5cGk6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
dmNwcm9qL1dURi9XVEYudmNwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTAtMDgtMzAgIFpvbHRhbiBIZXJjemVnICA8emhlcmN6
ZWdAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6
IEphdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA2NjM5MSkKKysrIEphdmFTY3JpcHRDb3JlL0dO
VW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC00NjEsNiArNDYxLDcgQEAgamF2YXNjcmlw
dGNvcmVfc291cmNlcyArPSBcCiAJSmF2YVNjcmlwdENvcmUvd3RmL01ENS5jcHAgXAogCUphdmFT
Y3JpcHRDb3JlL3d0Zi9NRDUuaCBcCiAJSmF2YVNjcmlwdENvcmUvd3RmL01lc3NhZ2VRdWV1ZS5o
IFwKKwlKYXZhU2NyaXB0Q29yZS93dGYvTm9uQ29weWluZ1NvcnQuaCBcCiAJSmF2YVNjcmlwdENv
cmUvd3RmL05vbmNvcHlhYmxlLmggXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9Ob3RGb3VuZC5oIFwK
IAlKYXZhU2NyaXB0Q29yZS93dGYvT3duQXJyYXlQdHIuaCBcCkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLmd5cGkJKHJldmlzaW9uIDY2MzkxKQorKysgSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMzk0LDYgKzM5NCw3IEBACiAgICAgICAg
ICAgICAnd3RmL01hbGxvY1pvbmVTdXBwb3J0LmgnLAogICAgICAgICAgICAgJ3d0Zi9NYXRoRXh0
cmFzLmgnLAogICAgICAgICAgICAgJ3d0Zi9NZXNzYWdlUXVldWUuaCcsCisgICAgICAgICAgICAn
d3RmL05vbkNvcHlpbmdTb3J0LmgnLAogICAgICAgICAgICAgJ3d0Zi9Ob25jb3B5YWJsZS5oJywK
ICAgICAgICAgICAgICd3dGYvTm90Rm91bmQuaCcsCiAgICAgICAgICAgICAnd3RmL093bkFycmF5
UHRyLmgnLApJbmRleDogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9X
VEYudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvai9XVEYvV1RGLnZjcHJvagkocmV2aXNpb24gNjYzOTEpCisrKyBKYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTQw
NSw2ICs0MDUsMTAgQEAKIAkJCT4NCiAJCTwvRmlsZT4NCiAJCTxGaWxlDQorCQkJUmVsYXRpdmVQ
YXRoPSIuLlwuLlx3dGZcTm9uQ29weWluZ1NvcnQuaCINCisJCQk+DQorCQk8L0ZpbGU+DQorCQk8
RmlsZQ0KIAkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cd3RmXE5vbmNvcHlhYmxlLmgiDQogCQkJPg0K
IAkJPC9GaWxlPg0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNjYzOTEpCisrKyBKYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODgsNiArMTg4LDcgQEAKIAkJNjUwN0QyOUUwRTg3MUU1RTAwRDdEODk2
IC8qIEpTVHlwZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDY1MDdEMjk3MEU4NzFFNEEwMEQ3RDg5NiAvKiBKU1R5cGVJbmZvLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNjU1RUIyOUIxMENFMjU4
MTAwMUE5OTBFIC8qIE5vZGVzQ29kZWdlbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2NTVFQjI5QTEwQ0UyNTgxMDAxQTk5MEUgLyogTm9kZXNDb2Rl
Z2VuLmNwcCAqLzsgfTsKIAkJNjVERkM5MzMwOEVBMTczQTAwRjczMDBCIC8qIEhhc2hUYWJsZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NURGQzky
RDA4RUExNzNBMDBGNzMwMEIgLyogSGFzaFRhYmxlLmNwcCAqLzsgfTsKKwkJNjVFMUEzREYxMjJC
ODk0NTAwQjI2MDk3IC8qIE5vbkNvcHlpbmdTb3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUUxQTJGNDEyMkI4ODBEMDBCMjYwOTcgLyogTm9uQ29w
eWluZ1NvcnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk2NUZERTQ5QzBCREQxRDRBMDBFODAxMTEgLyogQXNzZXJ0aW9ucy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUUyMTdCODA4RTdFRUNDMDAy
M0U1RjYgLyogQXNzZXJ0aW9ucy5jcHAgKi87IHNldHRpbmdzID0ge0NPTVBJTEVSX0ZMQUdTID0g
Ii1Xbm8tbWlzc2luZy1mb3JtYXQtYXR0cmlidXRlIjsgfTsgfTsKIAkJN0U0RUU3MDkwRUJCNzk2
MzAwNTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3RTRFRTcwODBFQkI3OTYzMDA1OTM0QUEgLyogU3RydWN0dXJl
Q2hhaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk3RTRFRTcwRjBFQkI3QTVCMDA1OTM0QUEgLyogU3RydWN0dXJlQ2hhaW4uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U0RUU3MEUwRUJCN0E1QjAw
NTkzNEFBIC8qIFN0cnVjdHVyZUNoYWluLmNwcCAqLzsgfTsKQEAgLTc2Niw2ICs3NjcsNyBAQAog
CQk2NURGQzkyRDA4RUExNzNBMDBGNzMwMEIgLyogSGFzaFRhYmxlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhhc2hUYWJsZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsKIAkJNjVERkM5MkUwOEVB
MTczQTAwRjczMDBCIC8qIEhhc2hUYWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBIYXNoVGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgdGFiV2lkdGggPSA4OyB9OwogCQk2NURGQzkyRjA4RUExNzNBMDBGNzMwMEIgLyogSGFzaFRy
YWl0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBp
bmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBIYXNoVHJhaXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsK
KwkJNjVFMUEyRjQxMjJCODgwRDAwQjI2MDk3IC8qIE5vbkNvcHlpbmdTb3J0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vbkNvcHlpbmdTb3J0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTY1RTIxN0I3MDhFN0VFQ0MwMDIzRTVGNiAvKiBBc3NlcnRpb25zLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdp
ZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFzc2Vy
dGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OwogCQk2NUUy
MTdCODA4RTdFRUNDMDAyM0U1RjYgLyogQXNzZXJ0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBc3NlcnRpb25zLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OwogCQk2NUUyMTdCOTA4RTdFRUND
MDAyM0U1RjYgLyogRmFzdE1hbGxvYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGYXN0TWFsbG9jLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB9OwpAQCAtMTQ3Myw2ICsxNDc1LDcgQEAKIAkJCQk1MTFG
QzRDNzExN0VFMjNEMDA0MjUyNzIgLyogTUQ1LmNwcCAqLywKIAkJCQk1MTFGQzRDQTExN0VFMkE4
MDA0MjUyNzIgLyogTUQ1LmggKi8sCiAJCQkJRTFFRTc5OEIwRDZDQTUzRDAwRkVBM0JBIC8qIE1l
c3NhZ2VRdWV1ZS5oICovLAorCQkJCTY1RTFBMkY0MTIyQjg4MEQwMEIyNjA5NyAvKiBOb25Db3B5
aW5nU29ydC5oICovLAogCQkJCTkzMDNGNTY5MDk5MTE5MDAwMEFENzFCOCAvKiBOb25jb3B5YWJs
ZS5oICovLAogCQkJCUMwQTI3MjNGMEU1MDlGMUUwMEU5NkUxNSAvKiBOb3RGb3VuZC5oICovLAog
CQkJCTkzMDNGNUE0MDk5MTFBNTgwMEFENzFCOCAvKiBPd25BcnJheVB0ci5oICovLApAQCAtMjEx
NSw2ICsyMTE4LDcgQEAKIAkJCQlBNzZFRTY1OTBGQUU1OUQ1MDAzRjA2OUEgLyogTmF0aXZlRnVu
Y3Rpb25XcmFwcGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RUZGMDA2NDBFQzA1QTlBMDBBQTdD
OTMgLyogTm9kZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDNGMEUxNkY1Q0QwMEIz
NDQ2MCAvKiBOb2Rlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNjVFMUEzREYxMjJCODk0NTAwQjI2
MDk3IC8qIE5vbkNvcHlpbmdTb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ0MDBFMTZG
NUNEMDBCMzQ0NjAgLyogTm9uY29weWFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUMwQTI3MjYz
MEU1MEEwNjMwMEU5NkUxNSAvKiBOb3RGb3VuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0
NDEwRTE2RjVDRDAwQjM0NDYwIC8qIE51bWJlckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywK
QEAgLTIzMzgsNyArMjM0Miw2IEBACiAJCQlpc2EgPSBQQlhQcm9qZWN0OwogCQkJYnVpbGRDb25m
aWd1cmF0aW9uTGlzdCA9IDE0OUMyNzcxMDg5MDJBRkUwMDhBOUVGQyAvKiBCdWlsZCBjb25maWd1
cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIkphdmFTY3JpcHRDb3JlIiAqLzsKIAkJCWNvbXBh
dGliaWxpdHlWZXJzaW9uID0gIlhjb2RlIDIuNCI7Ci0JCQlkZXZlbG9wbWVudFJlZ2lvbiA9IEVu
Z2xpc2g7CiAJCQloYXNTY2FubmVkRm9yRW5jb2RpbmdzID0gMTsKIAkJCWtub3duUmVnaW9ucyA9
ICgKIAkJCQlFbmdsaXNoLApJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL05vbkNvcHlpbmdTb3J0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL05vbkNvcHlpbmdTb3J0LmgJKHJl
dmlzaW9uIDApCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvTm9uQ29weWluZ1NvcnQuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaWZuZGVmIFdURl9Ob25Db3B5
aW5nU29ydF9oCisjZGVmaW5lIFdURl9Ob25Db3B5aW5nU29ydF9oCisKK25hbWVzcGFjZSBXVEYg
eworCit1c2luZyBzdGQ6OnN3YXA7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFJhbmRvbUFjY2Vzc0l0
ZXJhdG9yLCB0eXBlbmFtZSBQcmVkaWNhdGU+CitpbmxpbmUgdm9pZCBzaWZ0RG93bihSYW5kb21B
Y2Nlc3NJdGVyYXRvciBhcnJheSwgcHRyZGlmZl90IHN0YXJ0LCBwdHJkaWZmX3QgZW5kLCBQcmVk
aWNhdGUgY29tcGFyZUxlc3MpIAoreworICAgIHB0cmRpZmZfdCByb290ID0gc3RhcnQ7CisKKyAg
ICB3aGlsZSAocm9vdCAqIDIgKyAxIDw9IGVuZCkgeworICAgICAgICBwdHJkaWZmX3QgY2hpbGQg
PSByb290ICogMiArIDE7CisgICAgICAgIGlmIChjaGlsZCA8IGVuZCAmJiBjb21wYXJlTGVzcyhh
cnJheVtjaGlsZF0sIGFycmF5W2NoaWxkICsgMV0pKQorICAgICAgICAgICAgY2hpbGQrKzsKKyAg
ICAgICAgCisgICAgICAgIGlmIChjb21wYXJlTGVzcyhhcnJheVtyb290XSwgYXJyYXlbY2hpbGRd
KSkgeworICAgICAgICAgICAgc3dhcChhcnJheVtyb290XSwgYXJyYXlbY2hpbGRdKTsKKyAgICAg
ICAgICAgIHJvb3QgPSBjaGlsZDsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZXR1cm47
CisgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBSYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlw
ZW5hbWUgUHJlZGljYXRlPgoraW5saW5lIHZvaWQgaGVhcGlmeShSYW5kb21BY2Nlc3NJdGVyYXRv
ciBhcnJheSwgcHRyZGlmZl90IGNvdW50LCBQcmVkaWNhdGUgY29tcGFyZUxlc3MpIAoreworICAg
IHB0cmRpZmZfdCBzdGFydCA9IChjb3VudCAtIDIpIC8gMjsKKyAgICAgCisgICAgd2hpbGUgKHN0
YXJ0ID49IDApIHsKKyAgICAgICAgc2lmdERvd24oYXJyYXksIHN0YXJ0LCBjb3VudCAtIDEsIGNv
bXBhcmVMZXNzKTsKKyAgICAgICAgc3RhcnQtLTsKKyAgICB9Cit9CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBQcmVkaWNhdGU+Cit2b2lkIGhlYXBT
b3J0KFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIHN0YXJ0LCBSYW5kb21BY2Nlc3NJdGVyYXRvciBlbmQs
IFByZWRpY2F0ZSBjb21wYXJlTGVzcykKK3sKKyAgICBwdHJkaWZmX3QgY291bnQgPSBlbmQgLSBz
dGFydDsKKyAgICBoZWFwaWZ5KHN0YXJ0LCBjb3VudCwgY29tcGFyZUxlc3MpOworCisgICAgcHRy
ZGlmZl90IGVuZEluZGV4ID0gY291bnQgLSAxOworICAgIHdoaWxlIChlbmRJbmRleCA+IDApIHsK
KyAgICAgICAgc3dhcChzdGFydFtlbmRJbmRleF0sIHN0YXJ0WzBdKTsKKyAgICAgICAgc2lmdERv
d24oc3RhcnQsIDAsIGVuZEluZGV4IC0gMSwgY29tcGFyZUxlc3MpOworICAgICAgICBlbmRJbmRl
eC0tOworICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUgUmFuZG9tQWNjZXNzSXRlcmF0b3Is
IHR5cGVuYW1lIFByZWRpY2F0ZT4KK2lubGluZSB2b2lkIG5vbkNvcHlpbmdTb3J0KFJhbmRvbUFj
Y2Vzc0l0ZXJhdG9yIHN0YXJ0LCBSYW5kb21BY2Nlc3NJdGVyYXRvciBlbmQsIFByZWRpY2F0ZSBj
b21wYXJlTGVzcykKK3sKKyAgICAvLyBoZWFwc29ydCBoYXBwZW5zIHRvIHVzZSBvbmx5IHN3YXBz
LCBub3QgY29waWVzLCBidXQgdGhlIGVzc2VudGlhbCB0aGluZyBhYm91dAorICAgIC8vIHRoaXMg
ZnVuY3Rpb24gaXMgdGhlIGZhY3QgdGhhdCBpdCBkb2VzIG5vdCBjb3B5LCBub3QgdGhlIHNwZWNp
ZmljIGFsZ29yaXRobQorICAgIGhlYXBTb3J0KHN0YXJ0LCBlbmQsIGNvbXBhcmVMZXNzKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6bm9uQ29weWluZ1NvcnQ7CisKKyNl
bmRpZiAvLyBXVEZfTm9uQ29weWluZ1NvcnRfaApJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY2MzkxKQorKysgV2ViQ29y
ZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNSBAQAorMjAxMC0wOC0zMCAg
TWFjaWVqIFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhhbmRsZSBNZWRpYVF1ZXJ5RXhwIG1lbW9yeSBt
YW5hZ2VtZW50IGV4Y2x1c2l2ZWx5IHdpdGggc21hcnQgcG9pbnRlcnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0ODc0CisKKyAgICAgICAgR2FjZSBN
ZWRpYVF1ZXJ5RXhwIGEgY3JlYXRlIGZ1bmN0aW9uLCBtYWRlIHRoZSBjb25zdHJ1Y3RvciBwcml2
YXRlLCBhbmQgZm9sbG93ZWQKKyAgICAgICAgdGhlIGltcGxpY2F0aW9ucy4gVGhlIG9uZSB0cmlj
a3kgYml0IHdhcyB1c2luZyBhIG5vbi1jb3B5aW5nIHNvcnQgdG8gc29ydAorICAgICAgICB0aGUg
VmVjdG9yPE93blB0cjxNZWRpYVF1ZXJ5RXhwPiA+IGluIHRoZSBNZWRpYVF1ZXJ5IGNvbnN0cnVj
dG9yLgorICAgICAgICAKKyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy93dGYvTm9uQ29weWlu
Z1NvcnQuaDogQWRkZWQuCisgICAgICAgICogY3NzL0NTU0dyYW1tYXIueToKKyAgICAgICAgKiBj
c3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6fkNTU1BhcnNl
cik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZUZsb2F0aW5nTWVkaWFRdWVy
eUV4cCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZUZsb2F0aW5nTWVkaWFR
dWVyeUV4cExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpzaW5rRmxvYXRpbmdN
ZWRpYVF1ZXJ5RXhwTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZUZs
b2F0aW5nTWVkaWFRdWVyeSk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5oOgorICAgICAgICAq
IGNzcy9NZWRpYUxpc3QuY3BwOgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmV4cHJlc3Npb25Db21wYXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UXVlcnk6Ok1lZGlhUXVlcnkpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeTo6fk1lZGlh
UXVlcnkpOgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5Lmg6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVF1ZXJ5OjpleHByZXNzaW9ucyk6CisgICAgICAgICogY3NzL01lZGlhUXVlcnlFdmFsdWF0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeUV2YWx1YXRvcjo6ZXZhbCk6Cisg
ICAgICAgICogY3NzL01lZGlhUXVlcnlFeHAuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVl
cnlFeHA6OmNyZWF0ZSk6CisKIDIwMTAtMDgtMzAgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNv
bkBpZ2FsaWEuY29tPgogCiAgICAgICAgIEJ1aWxkIGZpeC4gQWRkIHRoZSBuZXcgZmlsZWFwaSBk
aXJlY3RvcnkgdG8gdGhlIElETCB2cGF0aC4KSW5kZXg6IFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRl
cnMvd3RmL05vbkNvcHlpbmdTb3J0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy93dGYvTm9uQ29weWluZ1NvcnQuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvRm9y
d2FyZGluZ0hlYWRlcnMvd3RmL05vbkNvcHlpbmdTb3J0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9Ob25Db3B5aW5nU29ydF9oCisjZGVmaW5lIFdl
YkNvcmVfRldEX05vbkNvcHlpbmdTb3J0X2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Ob25D
b3B5aW5nU29ydC5oPgorI2VuZGlmCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CShyZXZpc2lvbiA2NjM5MSkKKysr
IFdlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQkod29ya2luZyBjb3B5KQpAQCAtNzksNyArNzksNyBA
QCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogICAgIE1lZGlhUXVlcnlFeHAqIG1lZGlhUXVl
cnlFeHA7CiAgICAgQ1NTUGFyc2VyVmFsdWUgdmFsdWU7CiAgICAgQ1NTUGFyc2VyVmFsdWVMaXN0
KiB2YWx1ZUxpc3Q7Ci0gICAgVmVjdG9yPE1lZGlhUXVlcnlFeHAqPiogbWVkaWFRdWVyeUV4cExp
c3Q7CisgICAgVmVjdG9yPE93blB0cjxNZWRpYVF1ZXJ5RXhwPiA+KiBtZWRpYVF1ZXJ5RXhwTGlz
dDsKICAgICBXZWJLaXRDU1NLZXlmcmFtZVJ1bGUqIGtleWZyYW1lUnVsZTsKICAgICBXZWJLaXRD
U1NLZXlmcmFtZXNSdWxlKiBrZXlmcmFtZXNSdWxlOwogICAgIGZsb2F0IHZhbDsKQEAgLTYxOCwx
MSArNjE4LDExIEBAIG1lZGlhX3F1ZXJ5X2V4cF9saXN0OgogICAgIG1lZGlhX3F1ZXJ5X2V4cCB7
CiAgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7
CiAgICAgICAgICQkID0gcC0+Y3JlYXRlRmxvYXRpbmdNZWRpYVF1ZXJ5RXhwTGlzdCgpOwotICAg
ICAgICAkJC0+YXBwZW5kKHAtPnNpbmtGbG9hdGluZ01lZGlhUXVlcnlFeHAoJDEpLmxlYWtQdHIo
KSk7CisgICAgICAgICQkLT5hcHBlbmQocC0+c2lua0Zsb2F0aW5nTWVkaWFRdWVyeUV4cCgkMSkp
OwogICAgIH0KICAgICB8IG1lZGlhX3F1ZXJ5X2V4cF9saXN0IG1heWJlX3NwYWNlIE1FRElBX0FO
RCBtYXliZV9zcGFjZSBtZWRpYV9xdWVyeV9leHAgewogICAgICAgICAkJCA9ICQxOwotICAgICAg
ICAkJC0+YXBwZW5kKHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlciktPnNpbmtGbG9hdGlu
Z01lZGlhUXVlcnlFeHAoJDUpLmxlYWtQdHIoKSk7CisgICAgICAgICQkLT5hcHBlbmQoc3RhdGlj
X2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKS0+c2lua0Zsb2F0aW5nTWVkaWFRdWVyeUV4cCgkNSkp
OwogICAgIH0KICAgICA7CiAKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAkocmV2aXNpb24gNjYzOTEpCisrKyBX
ZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsOCArMTcyLDYg
QEAgQ1NTUGFyc2VyOjp+Q1NTUGFyc2VyKCkKIAogICAgIGZhc3RGcmVlKG1fZGF0YSk7CiAKLSAg
ICBpZiAobV9mbG9hdGluZ01lZGlhUXVlcnlFeHBMaXN0KQotICAgICAgICBkZWxldGVBbGxWYWx1
ZXMoKm1fZmxvYXRpbmdNZWRpYVF1ZXJ5RXhwTGlzdCk7CiAgICAgZmFzdERlbGV0ZUFsbFZhbHVl
cyhtX2Zsb2F0aW5nU2VsZWN0b3JzKTsKICAgICBkZWxldGVBbGxWYWx1ZXMobV9mbG9hdGluZ1Zh
bHVlTGlzdHMpOwogICAgIGRlbGV0ZUFsbFZhbHVlcyhtX2Zsb2F0aW5nRnVuY3Rpb25zKTsKQEAg
LTUyNzMsNyArNTI3MSw3IEBAIENTU1BhcnNlclZhbHVlJiBDU1NQYXJzZXI6OnNpbmtGbG9hdGlu
Z1YKIAogTWVkaWFRdWVyeUV4cCogQ1NTUGFyc2VyOjpjcmVhdGVGbG9hdGluZ01lZGlhUXVlcnlF
eHAoY29uc3QgQXRvbWljU3RyaW5nJiBtZWRpYUZlYXR1cmUsIENTU1BhcnNlclZhbHVlTGlzdCog
dmFsdWVzKQogewotICAgIG1fZmxvYXRpbmdNZWRpYVF1ZXJ5RXhwID0gYWRvcHRQdHIobmV3IE1l
ZGlhUXVlcnlFeHAobWVkaWFGZWF0dXJlLCB2YWx1ZXMpKTsKKyAgICBtX2Zsb2F0aW5nTWVkaWFR
dWVyeUV4cCA9IE1lZGlhUXVlcnlFeHA6OmNyZWF0ZShtZWRpYUZlYXR1cmUsIHZhbHVlcyk7CiAg
ICAgcmV0dXJuIG1fZmxvYXRpbmdNZWRpYVF1ZXJ5RXhwLmdldCgpOwogfQogCkBAIC01MjgzLDI3
ICs1MjgxLDI1IEBAIFBhc3NPd25QdHI8TWVkaWFRdWVyeUV4cD4gQ1NTUGFyc2VyOjpzaW4KICAg
ICByZXR1cm4gbV9mbG9hdGluZ01lZGlhUXVlcnlFeHAucmVsZWFzZSgpOwogfQogCi1WZWN0b3I8
TWVkaWFRdWVyeUV4cCo+KiBDU1NQYXJzZXI6OmNyZWF0ZUZsb2F0aW5nTWVkaWFRdWVyeUV4cExp
c3QoKQorVmVjdG9yPE93blB0cjxNZWRpYVF1ZXJ5RXhwPiA+KiBDU1NQYXJzZXI6OmNyZWF0ZUZs
b2F0aW5nTWVkaWFRdWVyeUV4cExpc3QoKQogewotICAgIGlmIChtX2Zsb2F0aW5nTWVkaWFRdWVy
eUV4cExpc3QpCi0gICAgICAgIGRlbGV0ZUFsbFZhbHVlcygqbV9mbG9hdGluZ01lZGlhUXVlcnlF
eHBMaXN0KTsKLSAgICBtX2Zsb2F0aW5nTWVkaWFRdWVyeUV4cExpc3QgPSBhZG9wdFB0cihuZXcg
VmVjdG9yPE1lZGlhUXVlcnlFeHAqPik7CisgICAgbV9mbG9hdGluZ01lZGlhUXVlcnlFeHBMaXN0
ID0gYWRvcHRQdHIobmV3IFZlY3RvcjxPd25QdHI8TWVkaWFRdWVyeUV4cD4gPik7CiAgICAgcmV0
dXJuIG1fZmxvYXRpbmdNZWRpYVF1ZXJ5RXhwTGlzdC5nZXQoKTsKIH0KIAotUGFzc093blB0cjxW
ZWN0b3I8TWVkaWFRdWVyeUV4cCo+ID4gQ1NTUGFyc2VyOjpzaW5rRmxvYXRpbmdNZWRpYVF1ZXJ5
RXhwTGlzdChWZWN0b3I8TWVkaWFRdWVyeUV4cCo+KiBsaXN0KQorUGFzc093blB0cjxWZWN0b3I8
T3duUHRyPE1lZGlhUXVlcnlFeHA+ID4gPiBDU1NQYXJzZXI6OnNpbmtGbG9hdGluZ01lZGlhUXVl
cnlFeHBMaXN0KFZlY3RvcjxPd25QdHI8TWVkaWFRdWVyeUV4cD4gPiogbGlzdCkKIHsKICAgICBB
U1NFUlRfVU5VU0VEKGxpc3QsIGxpc3QgPT0gbV9mbG9hdGluZ01lZGlhUXVlcnlFeHBMaXN0KTsK
ICAgICByZXR1cm4gbV9mbG9hdGluZ01lZGlhUXVlcnlFeHBMaXN0LnJlbGVhc2UoKTsKIH0KIAot
TWVkaWFRdWVyeSogQ1NTUGFyc2VyOjpjcmVhdGVGbG9hdGluZ01lZGlhUXVlcnkoTWVkaWFRdWVy
eTo6UmVzdHJpY3RvciByZXN0cmljdG9yLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSwgUGFzc093
blB0cjxWZWN0b3I8TWVkaWFRdWVyeUV4cCo+ID4gZXhwcmVzc2lvbnMpCitNZWRpYVF1ZXJ5KiBD
U1NQYXJzZXI6OmNyZWF0ZUZsb2F0aW5nTWVkaWFRdWVyeShNZWRpYVF1ZXJ5OjpSZXN0cmljdG9y
IHJlc3RyaWN0b3IsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlLCBQYXNzT3duUHRyPFZlY3RvcjxP
d25QdHI8TWVkaWFRdWVyeUV4cD4gPiA+IGV4cHJlc3Npb25zKQogewogICAgIG1fZmxvYXRpbmdN
ZWRpYVF1ZXJ5ID0gYWRvcHRQdHIobmV3IE1lZGlhUXVlcnkocmVzdHJpY3RvciwgbWVkaWFUeXBl
LCBleHByZXNzaW9ucykpOwogICAgIHJldHVybiBtX2Zsb2F0aW5nTWVkaWFRdWVyeS5nZXQoKTsK
IH0KIAotTWVkaWFRdWVyeSogQ1NTUGFyc2VyOjpjcmVhdGVGbG9hdGluZ01lZGlhUXVlcnkoUGFz
c093blB0cjxWZWN0b3I8TWVkaWFRdWVyeUV4cCo+ID4gZXhwcmVzc2lvbnMpCitNZWRpYVF1ZXJ5
KiBDU1NQYXJzZXI6OmNyZWF0ZUZsb2F0aW5nTWVkaWFRdWVyeShQYXNzT3duUHRyPFZlY3RvcjxP
d25QdHI8TWVkaWFRdWVyeUV4cD4gPiA+IGV4cHJlc3Npb25zKQogewogICAgIHJldHVybiBjcmVh
dGVGbG9hdGluZ01lZGlhUXVlcnkoTWVkaWFRdWVyeTo6Tm9uZSwgImFsbCIsIGV4cHJlc3Npb25z
KTsKIH0KSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1BhcnNlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvY3NzL0NTU1BhcnNlci5oCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvY3NzL0NTU1Bh
cnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTUsMTAgKzE5NSwxMCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICAgICAgTWVkaWFRdWVyeUV4cCogY3JlYXRlRmxvYXRpbmdNZWRpYVF1ZXJ5
RXhwKGNvbnN0IEF0b21pY1N0cmluZyYsIENTU1BhcnNlclZhbHVlTGlzdCopOwogICAgICAgICBQ
YXNzT3duUHRyPE1lZGlhUXVlcnlFeHA+IHNpbmtGbG9hdGluZ01lZGlhUXVlcnlFeHAoTWVkaWFR
dWVyeUV4cCopOwotICAgICAgICBWZWN0b3I8TWVkaWFRdWVyeUV4cCo+KiBjcmVhdGVGbG9hdGlu
Z01lZGlhUXVlcnlFeHBMaXN0KCk7Ci0gICAgICAgIFBhc3NPd25QdHI8VmVjdG9yPE1lZGlhUXVl
cnlFeHAqPiA+IHNpbmtGbG9hdGluZ01lZGlhUXVlcnlFeHBMaXN0KFZlY3RvcjxNZWRpYVF1ZXJ5
RXhwKj4qKTsKLSAgICAgICAgTWVkaWFRdWVyeSogY3JlYXRlRmxvYXRpbmdNZWRpYVF1ZXJ5KE1l
ZGlhUXVlcnk6OlJlc3RyaWN0b3IsIGNvbnN0IFN0cmluZyYsIFBhc3NPd25QdHI8VmVjdG9yPE1l
ZGlhUXVlcnlFeHAqPiA+KTsKLSAgICAgICAgTWVkaWFRdWVyeSogY3JlYXRlRmxvYXRpbmdNZWRp
YVF1ZXJ5KFBhc3NPd25QdHI8VmVjdG9yPE1lZGlhUXVlcnlFeHAqPiA+KTsKKyAgICAgICAgVmVj
dG9yPE93blB0cjxNZWRpYVF1ZXJ5RXhwPiA+KiBjcmVhdGVGbG9hdGluZ01lZGlhUXVlcnlFeHBM
aXN0KCk7CisgICAgICAgIFBhc3NPd25QdHI8VmVjdG9yPE93blB0cjxNZWRpYVF1ZXJ5RXhwPiA+
ID4gc2lua0Zsb2F0aW5nTWVkaWFRdWVyeUV4cExpc3QoVmVjdG9yPE93blB0cjxNZWRpYVF1ZXJ5
RXhwPiA+Kik7CisgICAgICAgIE1lZGlhUXVlcnkqIGNyZWF0ZUZsb2F0aW5nTWVkaWFRdWVyeShN
ZWRpYVF1ZXJ5OjpSZXN0cmljdG9yLCBjb25zdCBTdHJpbmcmLCBQYXNzT3duUHRyPFZlY3RvcjxP
d25QdHI8TWVkaWFRdWVyeUV4cD4gPiA+KTsKKyAgICAgICAgTWVkaWFRdWVyeSogY3JlYXRlRmxv
YXRpbmdNZWRpYVF1ZXJ5KFBhc3NPd25QdHI8VmVjdG9yPE93blB0cjxNZWRpYVF1ZXJ5RXhwPiA+
ID4pOwogICAgICAgICBQYXNzT3duUHRyPE1lZGlhUXVlcnk+IHNpbmtGbG9hdGluZ01lZGlhUXVl
cnkoTWVkaWFRdWVyeSopOwogCiAgICAgICAgIHZvaWQgYWRkTmFtZXNwYWNlKGNvbnN0IEF0b21p
Y1N0cmluZyYgcHJlZml4LCBjb25zdCBBdG9taWNTdHJpbmcmIHVyaSk7CkBAIC0zMDMsNyArMzAz
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIE93blB0cjxNZWRpYVF1ZXJ5PiBt
X2Zsb2F0aW5nTWVkaWFRdWVyeTsKICAgICAgICAgT3duUHRyPE1lZGlhUXVlcnlFeHA+IG1fZmxv
YXRpbmdNZWRpYVF1ZXJ5RXhwOwotICAgICAgICBPd25QdHI8VmVjdG9yPE1lZGlhUXVlcnlFeHAq
PiA+IG1fZmxvYXRpbmdNZWRpYVF1ZXJ5RXhwTGlzdDsKKyAgICAgICAgT3duUHRyPFZlY3RvcjxP
d25QdHI8TWVkaWFRdWVyeUV4cD4gPiA+IG1fZmxvYXRpbmdNZWRpYVF1ZXJ5RXhwTGlzdDsKIAog
ICAgICAgICBWZWN0b3I8Q1NTU2VsZWN0b3IqPiBtX3JldXNhYmxlU2VsZWN0b3JWZWN0b3I7CiAK
SW5kZXg6IFdlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9j
c3MvTWVkaWFMaXN0LmNwcAkocmV2aXNpb24gNjYzOTEpCisrKyBXZWJDb3JlL2Nzcy9NZWRpYUxp
c3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiQ1NTU3R5
bGVTaGVldC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJNZWRpYVF1
ZXJ5LmgiCisjaW5jbHVkZSAiTWVkaWFRdWVyeUV4cC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKSW5kZXg6IFdlYkNvcmUvY3NzL01lZGlhUXVlcnkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvY3NzL01lZGlhUXVlcnkuY3BwCShyZXZpc2lvbiA2NjM5MSkKKysrIFdlYkNvcmUvY3NzL01l
ZGlhUXVlcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4ICszMSw3IEBACiAKICNpbmNsdWRl
ICJNZWRpYVF1ZXJ5RXhwLmgiCiAjaW5jbHVkZSAiU3RyaW5nQnVpbGRlci5oIgotCi0jaW5jbHVk
ZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPHd0Zi9Ob25Db3B5aW5nU29ydC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTcwLDIzICs2OSwyNCBAQCBTdHJpbmcgTWVkaWFRdWVyeTo6c2Vy
aWFsaXplKCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAKLXN0YXRp
YyBib29sIGV4cHJlc3Npb25Db21wYXJlKGNvbnN0IE1lZGlhUXVlcnlFeHAqIGEsIGNvbnN0IE1l
ZGlhUXVlcnlFeHAqIGIpCitzdGF0aWMgYm9vbCBleHByZXNzaW9uQ29tcGFyZShjb25zdCBPd25Q
dHI8TWVkaWFRdWVyeUV4cD4mIGEsIGNvbnN0IE93blB0cjxNZWRpYVF1ZXJ5RXhwPiYgYikgCiB7
CiAgICAgcmV0dXJuIGNvZGVQb2ludENvbXBhcmUoYS0+c2VyaWFsaXplKCksIGItPnNlcmlhbGl6
ZSgpKSA8IDA7CiB9CiAKLU1lZGlhUXVlcnk6Ok1lZGlhUXVlcnkoUmVzdHJpY3RvciByLCBjb25z
dCBTdHJpbmcmIG1lZGlhVHlwZSwgUGFzc093blB0cjxWZWN0b3I8TWVkaWFRdWVyeUV4cCo+ID4g
ZXhwcnMpCisKK01lZGlhUXVlcnk6Ok1lZGlhUXVlcnkoUmVzdHJpY3RvciByLCBjb25zdCBTdHJp
bmcmIG1lZGlhVHlwZSwgUGFzc093blB0cjxWZWN0b3I8T3duUHRyPE1lZGlhUXVlcnlFeHA+ID4g
PiBleHBycykKICAgICA6IG1fcmVzdHJpY3RvcihyKQogICAgICwgbV9tZWRpYVR5cGUobWVkaWFU
eXBlLmxvd2VyKCkpCiAgICAgLCBtX2V4cHJlc3Npb25zKGV4cHJzKQogICAgICwgbV9pZ25vcmVk
KGZhbHNlKQogewogICAgIGlmICghbV9leHByZXNzaW9ucykgewotICAgICAgICBtX2V4cHJlc3Np
b25zID0gbmV3IFZlY3RvcjxNZWRpYVF1ZXJ5RXhwKj47CisgICAgICAgIG1fZXhwcmVzc2lvbnMg
PSBhZG9wdFB0cihuZXcgVmVjdG9yPE93blB0cjxNZWRpYVF1ZXJ5RXhwPiA+KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIHN0ZDo6c29ydChtX2V4cHJlc3Npb25zLT5iZWdpbigpLCBt
X2V4cHJlc3Npb25zLT5lbmQoKSwgZXhwcmVzc2lvbkNvbXBhcmUpOworICAgIG5vbkNvcHlpbmdT
b3J0KG1fZXhwcmVzc2lvbnMtPmJlZ2luKCksIG1fZXhwcmVzc2lvbnMtPmVuZCgpLCBleHByZXNz
aW9uQ29tcGFyZSk7CiAKICAgICAvLyByZW1vdmUgYWxsIGR1cGxpY2F0ZWQgZXhwcmVzc2lvbnMK
ICAgICBTdHJpbmcga2V5OwpAQCAtOTUsMTkgKzk1LDE2IEBAIE1lZGlhUXVlcnk6Ok1lZGlhUXVl
cnkoUmVzdHJpY3RvciByLCBjb24KICAgICAgICAgLy8gaWYgbm90IGFsbCBvZiB0aGUgZXhwcmVz
c2lvbnMgaXMgdmFsaWQgdGhlIG1lZGlhIHF1ZXJ5IG11c3QgYmUgaWdub3JlZC4KICAgICAgICAg
aWYgKCFtX2lnbm9yZWQpCiAgICAgICAgICAgICBtX2lnbm9yZWQgPSAhbV9leHByZXNzaW9ucy0+
YXQoaSktPmlzVmFsaWQoKTsKLQotICAgICAgICBpZiAobV9leHByZXNzaW9ucy0+YXQoaSktPnNl
cmlhbGl6ZSgpID09IGtleSkgewotICAgICAgICAgICAgTWVkaWFRdWVyeUV4cCogaXRlbSA9IG1f
ZXhwcmVzc2lvbnMtPmF0KGkpOworIAorICAgICAgICBpZiAobV9leHByZXNzaW9ucy0+YXQoaSkt
PnNlcmlhbGl6ZSgpID09IGtleSkKICAgICAgICAgICAgIG1fZXhwcmVzc2lvbnMtPnJlbW92ZShp
KTsKLSAgICAgICAgICAgIGRlbGV0ZSBpdGVtOwotICAgICAgICB9IGVsc2UKKyAgICAgICAgZWxz
ZQogICAgICAgICAgICAga2V5ID0gbV9leHByZXNzaW9ucy0+YXQoaSktPnNlcmlhbGl6ZSgpOwog
ICAgIH0KIH0KIAogTWVkaWFRdWVyeTo6fk1lZGlhUXVlcnkoKQogewotICAgIGRlbGV0ZUFsbFZh
bHVlcygqbV9leHByZXNzaW9ucyk7CiB9CiAKIC8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nz
c29tLyNjb21wYXJlLW1lZGlhLXF1ZXJpZXMKSW5kZXg6IFdlYkNvcmUvY3NzL01lZGlhUXVlcnku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5LmgJKHJldmlzaW9uIDY2Mzkx
KQorKysgV2ViQ29yZS9jc3MvTWVkaWFRdWVyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MywxMSAr
NDMsMTEgQEAgcHVibGljOgogICAgICAgICBPbmx5LCBOb3QsIE5vbmUKICAgICB9OwogCi0gICAg
TWVkaWFRdWVyeShSZXN0cmljdG9yLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSwgUGFzc093blB0
cjxWZWN0b3I8TWVkaWFRdWVyeUV4cCo+ID4gZXhwcnMpOworICAgIE1lZGlhUXVlcnkoUmVzdHJp
Y3RvciwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUsIFBhc3NPd25QdHI8VmVjdG9yPE93blB0cjxN
ZWRpYVF1ZXJ5RXhwPiA+ID4gZXhwcnMpOwogICAgIH5NZWRpYVF1ZXJ5KCk7CiAKICAgICBSZXN0
cmljdG9yIHJlc3RyaWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3Jlc3RyaWN0b3I7IH0KLSAgICBj
b25zdCBWZWN0b3I8TWVkaWFRdWVyeUV4cCo+KiBleHByZXNzaW9ucygpIGNvbnN0IHsgcmV0dXJu
IG1fZXhwcmVzc2lvbnMuZ2V0KCk7IH0KKyAgICBjb25zdCBWZWN0b3I8T3duUHRyPE1lZGlhUXVl
cnlFeHA+ID4qIGV4cHJlc3Npb25zKCkgY29uc3QgeyByZXR1cm4gbV9leHByZXNzaW9ucy5nZXQo
KTsgfQogICAgIFN0cmluZyBtZWRpYVR5cGUoKSBjb25zdCB7IHJldHVybiBtX21lZGlhVHlwZTsg
fQogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNZWRpYVF1ZXJ5JiBvdGhlcikgY29uc3Q7CiAg
ICAgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogIHBy
aXZhdGU6CiAgICAgUmVzdHJpY3RvciBtX3Jlc3RyaWN0b3I7CiAgICAgU3RyaW5nIG1fbWVkaWFU
eXBlOwotICAgIE93blB0cjxWZWN0b3I8TWVkaWFRdWVyeUV4cCo+ID4gbV9leHByZXNzaW9uczsK
KyAgICBPd25QdHI8VmVjdG9yPE93blB0cjxNZWRpYVF1ZXJ5RXhwPiA+ID4gbV9leHByZXNzaW9u
czsKICAgICBib29sIG1faWdub3JlZDsKICAgICBTdHJpbmcgbV9zZXJpYWxpemF0aW9uQ2FjaGU7
CiAKSW5kZXg6IFdlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCShyZXZpc2lvbiA2NjM5MSkK
KysrIFdlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDgsMTQgKzE0OCwxNCBAQCBib29sIE1lZGlhUXVlcnlFdmFsdWF0b3I6OmV2YWwoY29uc3Qg
TWVkCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAobWVkaWFUeXBlTWF0Y2go
cXVlcnktPm1lZGlhVHlwZSgpKSkgewotICAgICAgICAgICAgY29uc3QgVmVjdG9yPE1lZGlhUXVl
cnlFeHAqPiogZXhwcyA9IHF1ZXJ5LT5leHByZXNzaW9ucygpOworICAgICAgICAgICAgY29uc3Qg
VmVjdG9yPE93blB0cjxNZWRpYVF1ZXJ5RXhwPiA+KiBleHBzID0gcXVlcnktPmV4cHJlc3Npb25z
KCk7CiAgICAgICAgICAgICAvLyBpdGVyYXRlIHRocm91Z2ggZXhwcmVzc2lvbnMsIHN0b3AgaWYg
YW55IG9mIHRoZW0gZXZhbCB0byBmYWxzZQogICAgICAgICAgICAgLy8gKEFORCBzZW1hbnRpY3Mp
CiAgICAgICAgICAgICBzaXplX3QgaiA9IDA7CiAgICAgICAgICAgICBmb3IgKDsgaiA8IGV4cHMt
PnNpemUoKTsgKytqKSB7Ci0gICAgICAgICAgICAgICAgYm9vbCBleHByUmVzdWx0ID0gZXZhbChl
eHBzLT5hdChqKSk7CisgICAgICAgICAgICAgICAgYm9vbCBleHByUmVzdWx0ID0gZXZhbChleHBz
LT5hdChqKS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgaWYgKHN0eWxlU2VsZWN0b3IgJiYgZXhw
cy0+YXQoaiktPmlzVmlld3BvcnREZXBlbmRlbnQoKSkKLSAgICAgICAgICAgICAgICAgICAgc3R5
bGVTZWxlY3Rvci0+YWRkVmlld3BvcnREZXBlbmRlbnRNZWRpYVF1ZXJ5UmVzdWx0KGV4cHMtPmF0
KGopLCBleHByUmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgc3R5bGVTZWxlY3Rvci0+YWRk
Vmlld3BvcnREZXBlbmRlbnRNZWRpYVF1ZXJ5UmVzdWx0KGV4cHMtPmF0KGopLmdldCgpLCBleHBy
UmVzdWx0KTsKICAgICAgICAgICAgICAgICBpZiAoIWV4cHJSZXN1bHQpCiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpJbmRleDogV2ViQ29yZS9jc3MvTWVkaWFRdWVy
eUV4cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL01lZGlhUXVlcnlFeHAuaAkocmV2aXNp
b24gNjYzOTEpCisrKyBXZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkNTU1ZhbHVlLmgiCiAjaW5jbHVkZSAiTWVk
aWFGZWF0dXJlTmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KIApAQCAt
MzksNyArNDAsNyBAQCBjbGFzcyBDU1NQYXJzZXJWYWx1ZUxpc3Q7CiAKIGNsYXNzIE1lZGlhUXVl
cnlFeHAgOiBwdWJsaWMgRmFzdEFsbG9jQmFzZSB7CiBwdWJsaWM6Ci0gICAgTWVkaWFRdWVyeUV4
cChjb25zdCBBdG9taWNTdHJpbmcmIG1lZGlhRmVhdHVyZSwgQ1NTUGFyc2VyVmFsdWVMaXN0KiB2
YWx1ZXMpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lZGlhUXVlcnlFeHA+IGNyZWF0ZShjb25z
dCBBdG9taWNTdHJpbmcmIG1lZGlhRmVhdHVyZSwgQ1NTUGFyc2VyVmFsdWVMaXN0KiB2YWx1ZXMp
OwogICAgIH5NZWRpYVF1ZXJ5RXhwKCk7CiAKICAgICBBdG9taWNTdHJpbmcgbWVkaWFGZWF0dXJl
KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUZlYXR1cmU7IH0KQEAgLTY5LDEyICs3MCwxOSBAQCBw
dWJsaWM6CiAgICAgU3RyaW5nIHNlcmlhbGl6ZSgpIGNvbnN0OwogCiBwcml2YXRlOgorICAgIE1l
ZGlhUXVlcnlFeHAoY29uc3QgQXRvbWljU3RyaW5nJiBtZWRpYUZlYXR1cmUsIENTU1BhcnNlclZh
bHVlTGlzdCogdmFsdWVzKTsKKwogICAgIEF0b21pY1N0cmluZyBtX21lZGlhRmVhdHVyZTsKICAg
ICBSZWZQdHI8Q1NTVmFsdWU+IG1fdmFsdWU7CiAgICAgYm9vbCBtX2lzVmFsaWQ7CiAgICAgU3Ry
aW5nIG1fc2VyaWFsaXphdGlvbkNhY2hlOwogfTsKIAoraW5saW5lIFBhc3NPd25QdHI8TWVkaWFR
dWVyeUV4cD4gTWVkaWFRdWVyeUV4cDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgbWVkaWFG
ZWF0dXJlLCBDU1NQYXJzZXJWYWx1ZUxpc3QqIHZhbHVlcykKK3sKKyAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IE1lZGlhUXVlcnlFeHAobWVkaWFGZWF0dXJlLCB2YWx1ZXMpKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UKIAogI2VuZGlmCg==
</data>
<flag name="review"
          id="54791"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>