<?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>148705</bug_id>
          
          <creation_ts>2015-09-01 23:29:37 -0700</creation_ts>
          <short_desc>[ES6] Implement ModuleNamespaceObject</short_desc>
          <delta_ts>2015-09-05 00:23:05 -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>JavaScriptCore</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>
          <dependson>148053</dependson>
          <blocked>147340</blocked>
    
    <blocked>148689</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1122786</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-01 23:29:37 -0700</bug_when>
    <thetext>Implement ModuleNamespaceObject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122887</commentid>
    <comment_count>1</comment_count>
      <attachid>260431</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-02 13:16:41 -0700</bug_when>
    <thetext>Created attachment 260431
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122889</commentid>
    <comment_count>2</comment_count>
      <attachid>260431</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-02 13:21:52 -0700</bug_when>
    <thetext>Comment on attachment 260431
Patch

This patch is based on the https://bugs.webkit.org/show_bug.cgi?id=148053</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122909</commentid>
    <comment_count>3</comment_count>
      <attachid>260437</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-02 14:17:11 -0700</bug_when>
    <thetext>Created attachment 260437
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123330</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-03 21:30:21 -0700</bug_when>
    <thetext>Let&apos;s rebase it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123334</commentid>
    <comment_count>5</comment_count>
      <attachid>260562</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-03 21:51:38 -0700</bug_when>
    <thetext>Created attachment 260562
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123343</commentid>
    <comment_count>6</comment_count>
      <attachid>260564</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-03 22:00:29 -0700</bug_when>
    <thetext>Created attachment 260564
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123344</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-03 22:00:53 -0700</bug_when>
    <thetext>Slightly clean up the comment. Now patch is ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123627</commentid>
    <comment_count>8</comment_count>
      <attachid>260564</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-09-04 14:19:41 -0700</bug_when>
    <thetext>Comment on attachment 260564
Patch

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

&gt; Source/JavaScriptCore/runtime/JSModuleNamespaceObject.cpp:64
&gt; +{
&gt; +    // http://www.ecma-international.org/ecma-262/6.0/#sec-module-namespace-exotic-objects
&gt; +    // Quoted from the spec:
&gt; +    //     A List containing the String values of the exported names exposed as own properties of this object.
&gt; +    //     The list is ordered as if an Array of those String values had been sorted using Array.prototype.sort using SortCompare as comparefn.
&gt; +    //
&gt; +    // Sort the exported names by the code point order.
&gt; +    Vector&lt;UniquedStringImpl*&gt; temporaryVector(exports.size(), nullptr);
&gt; +    std::transform(exports.begin(), exports.end(), temporaryVector.begin(), [](const RefPtr&lt;WTF::UniquedStringImpl&gt;&amp; ref) {
&gt; +        return ref.get();
&gt; +    });
&gt; +    std::sort(temporaryVector.begin(), temporaryVector.end(), [] (UniquedStringImpl* lhs, UniquedStringImpl* rhs) {
&gt; +        return codePointCompare(lhs, rhs) &lt; 0;
&gt; +    });
&gt; +    for (auto* identifier : temporaryVector)
&gt; +        m_exports.add(identifier);

This stuff should move into finishCreation. A JS object constructor should only do the bare minimum to default initialize fields in order to avoid crashing during GC. We do all meaningful work inside finishCreation in order to avoid problems that we might cause by triggering GC during a constructor. (I can see by reading this code that it doesn&apos;t cause GC, but it is preferable style to favor finishCreation so we don&apos;t have to do that reading.)

&gt; Source/JavaScriptCore/runtime/JSModuleNamespaceObject.cpp:114
&gt; +    // If the value is filled with TDZ value, throw the reference error.

the =&gt; a</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123649</commentid>
    <comment_count>9</comment_count>
      <attachid>260564</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-04 14:55:02 -0700</bug_when>
    <thetext>Comment on attachment 260564
Patch

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

Thank you for your review! I&apos;ll revise the patch based on your review and land it :D

&gt;&gt; Source/JavaScriptCore/runtime/JSModuleNamespaceObject.cpp:64
&gt;&gt; +        m_exports.add(identifier);
&gt; 
&gt; This stuff should move into finishCreation. A JS object constructor should only do the bare minimum to default initialize fields in order to avoid crashing during GC. We do all meaningful work inside finishCreation in order to avoid problems that we might cause by triggering GC during a constructor. (I can see by reading this code that it doesn&apos;t cause GC, but it is preferable style to favor finishCreation so we don&apos;t have to do that reading.)

Make sense. Moving the above code to the finishCreation.

&gt;&gt; Source/JavaScriptCore/runtime/JSModuleNamespaceObject.cpp:114
&gt;&gt; +    // If the value is filled with TDZ value, throw the reference error.
&gt; 
&gt; the =&gt; a

Thank you! Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1123903</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-05 00:23:05 -0700</bug_when>
    <thetext>Committed r189429: &lt;http://trac.webkit.org/changeset/189429&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260431</attachid>
            <date>2015-09-02 13:16:41 -0700</date>
            <delta_ts>2015-09-02 14:17:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148705-20150902131641.patch</filename>
            <type>text/plain</type>
            <size>32513</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
MWQ5NDkwODA0YzZhZjcxMzQxZGY5NzY1YTZhN2UwMThhOGViZWY3Li5jYWI2NDc1NTBkMjYxZTYw
M2QyNGZlZGRhZTUwMjZkODc5MTE4YTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw0OCBAQAogMjAxNS0wOS0wMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBbRVM2XSBJbXBsZW1lbnQgTW9kdWxlTmFtZXNwYWNlT2JqZWN0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg3MDUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQg
TW9kdWxlIG5hbWVzcGFjZSBvYmplY3QuCisgICAgICAgIFRoYXQgaXMgdXNlZCB3aGVuIGltcG9y
dGluZyB0aGUgbW9kdWxlIHdpdGggdGhlIGZvcm0gYGltcG9ydCAqIGFzIG5hbWVzcGFjZSBmcm9t
ICJtb2QiYC4KKyAgICAgICAgVGhlIG1vZHVsZSBuYW1lc3BhY2Ugb2JqZWN0IGlzIG5vbi1leHRl
bnNpYmxlIG9iamVjdCB0aGF0IGhhcyB0aGUgYmluZGluZ3MgdG8gdGhlIG9yaWdpbmFsIG1vZHVs
ZQorICAgICAgICBhcyB0aGUgcHJvcGVydHkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
LmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJl
KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcDogQWRkZWQu
CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpKU01vZHVsZU5hbWVzcGFj
ZU9iamVjdCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpkZXN0cm95
KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6Z2V0T3duUHJvcGVydHlT
bG90KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OnB1dCk6CisgICAg
ICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpwdXRCeUluZGV4KToKKyAgICAgICAg
KEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAg
KEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMpOgorICAg
ICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkpOgor
ICAgICAgICAoSlNDOjptb2R1bGVOYW1lc3BhY2VPYmplY3RTeW1ib2xJdGVyYXRvcik6CisgICAg
ICAgICogcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNNb2R1bGVSZWNvcmQuY3BwOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6dmlz
aXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OmdldEV4cG9ydGVkTmFtZXMpOgorICAgICAgICAo
SlNDOjpKU01vZHVsZVJlY29yZDo6Z2V0TW9kdWxlTmFtZXNwYWNlKToKKyAgICAgICAgKEpTQzo6
SlNNb2R1bGVSZWNvcmQ6Omluc3RhbnRpYXRlRGVjbGFyYXRpb25zKToKKyAgICAgICAgKiBydW50
aW1lL0pTTW9kdWxlUmVjb3JkLmg6CisKKzIwMTUtMDktMDIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKICAgICAgICAgW0VTNl0gSW5zdGFudGlhdGUgTW9kdWxlIEVu
dmlyb25tZW50IGJpbmRpbmdzIGFuZCBleGVjdXRlIG1vZHVsZQogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MDUzCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAppbmRleCBlZmE1NzBhMjEyNjIyNDYzOGU1NTU4NThjZGNlZmRiYWZlMDI5
MjVjLi42ZDE5YTJkZTE0Y2UyMzVkMGRjYTdjMmNlODQyZTY5MzZiMDJmOThmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01MzgsNiArNTM4LDcgQEAgc2V0KEphdmFTY3Jp
cHRDb3JlX1JVTlRJTUVfU09VUkNFUwogICAgIHJ1bnRpbWUvSlNNYXAuY3BwCiAgICAgcnVudGlt
ZS9KU01hcEl0ZXJhdG9yLmNwcAogICAgIHJ1bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAK
KyAgICBydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNN
b2R1bGVSZWNvcmQuY3BwCiAgICAgcnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcAogICAg
IHJ1bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qCmluZGV4IDhhMTI2ZTU1NDUzZDM4YzA0ZTljMmFjMmMyNDc4MjNiMTU0MDQyMzEuLjg5
ZTRkMTFmZDk5MjdhZDI0MTRiZmFmYTM1ZjRmNGMyZDdiODllZDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZj
eHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNzg3LDYgKzc4Nyw3IEBACiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTWFwLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcSlNNYXBJdGVyYXRvci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxydW50aW1lXEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwIiAvPgorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTW9kdWxlUmVjb3JkLmNwcCIgLz4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNOYXRpdmVTdGRGdW5jdGlvbi5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTm90QW5PYmplY3Qu
Y3BwIiAvPgpAQCAtMTY0Miw2ICsxNjQzLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSlNNYXAuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNNYXBJdGVyYXRvci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxK
U01vZHVsZUVudmlyb25tZW50LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50
aW1lXEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTTW9kdWxlUmVjb3JkLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTTmF0aXZlU3RkRnVuY3Rpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSlNOb3RBbk9iamVjdC5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4
cHJvai5maWx0ZXJzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IDY4ZTRjN2U0NGY5Yzg4MmUx
MzRjY2Y3ZTNhNTA2MGE2YzRjOGM3NTEuLmRkM2RkMTBiMDFjOWI4YTc1MTRiYjQxZTQwYTk4YmY1
MzFhZjRjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
LmZpbHRlcnMKQEAgLTcyOSw2ICs3MjksOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU01vZHVsZUVudmlyb25tZW50LmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8
L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU01vZHVsZVJlY29yZC5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0
ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0zNTExLDYgKzM1MTQsOSBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01vZHVsZUVudmlyb25tZW50LmgiPgogICAgICAgPEZp
bHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgiPgorICAgICAgPEZp
bHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEpTTW9kdWxlUmVjb3JkLmgiPgogICAgICAgPEZpbHRlcj5ydW50
aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IGJiMTYzMDJkMTAxZDQwN2U5ZDI2MDQ3ZDI3NTcwMTA3ZGY3ODcyOWUuLjAyZTI2MDg1
MDlkMTAxMWE5NmEyZDNmY2RjMWM1ZTc1MGEyYzY4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xNzAwLDYgKzE3MDAsOCBAQAogCQlFMTI0QThGODBFNTU1Nzc1MDAzMDkxRjEg
LyogT3BhcXVlSlNTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTEyNEE4RjYwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmNw
cCAqLzsgfTsKIAkJRTE4RTNBNTkwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOEUzQTU3MERGOTI3OEMwMEQ5
MEIzNCAvKiBWTS5jcHAgKi87IH07CiAJCUUzMDY3Nzk4MUI4QkM2RjUwMDNGODdGMCAvKiBNb2R1
bGVMb2FkZXJPYmplY3QuanMgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzMDY3Nzk3MUI4QkM2RjUwMDNGODdGMCAvKiBNb2R1bGVMb2FkZXJPYmplY3Qu
anMgKi87IH07CisJCUUzMThDQkMwMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFj
ZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzE4Q0JCRTFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3Bw
ICovOyB9OworCQlFMzE4Q0JDMTFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VP
YmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
MThDQkJGMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzMzYzN0E1MUI2
MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMzYzN0EzMUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZs
ZWN0T2JqZWN0LmNwcCAqLzsgfTsKIAkJRTMzNjM3QTYxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxl
Y3RPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzMzYzN0E0MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzQjNFMjYxQjdBQkQ3NTAw
NDhEQjJFIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0IzRTI1MUI3QUJENzUwMDQ4
REIyRSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0LmggKi87IH07CkBAIC0z
NTYxLDYgKzM1NjMsOCBAQAogCQlFMThFM0E1NjBERjkyNzhDMDBEOTBCMzQgLyogVk0uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBsaW5lRW5kaW5nID0gMDsgcGF0aCA9IFZNLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhj
b2RlLmxhbmcub2JqY3BwOyB9OwogCQlFMThFM0E1NzBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBsaW5lRW5kaW5nID0gMDsgcGF0aCA9IFZN
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVu
dGlmaWVyID0geGNvZGUubGFuZy5jcHA7IH07CiAJCUUzMDY3Nzk3MUI4QkM2RjUwMDNGODdGMCAv
KiBNb2R1bGVMb2FkZXJPYmplY3QuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7
IHBhdGggPSBNb2R1bGVMb2FkZXJPYmplY3QuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUUzMThDQkJFMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01vZHVsZU5hbWVzcGFj
ZU9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMThDQkJGMUI4QUVG
NTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzM2MzdBMzFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVj
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWZsZWN0T2JqZWN0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzNjM3QTQxQjYzMjIwMjAwRUUw
ODQwIC8qIFJlZmxlY3RPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVmbGVjdE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzNCM0UyNTFC
N0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25P
YmplY3QubHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NzgzLDYgKzQ3ODcs
OCBAQAogCQkJCUE3NERFRjkwMTgyRDk5MTQwMDUyMkMyMiAvKiBKU01hcEl0ZXJhdG9yLmggKi8s
CiAJCQkJRTNEMjM5QzYxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3Bw
ICovLAogCQkJCUUzRDIzOUM3MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50
LmggKi8sCisJCQkJRTMxOENCQkUxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0LmNwcCAqLywKKwkJCQlFMzE4Q0JCRjFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVO
YW1lc3BhY2VPYmplY3QuaCAqLywKIAkJCQlFMzlEQTRBNDFCN0U4QjdDMDA4NEYzM0EgLyogSlNN
b2R1bGVSZWNvcmQuY3BwICovLAogCQkJCUUzOURBNEE1MUI3RThCN0MwMDg0RjMzQSAvKiBKU01v
ZHVsZVJlY29yZC5oICovLAogCQkJCUUzM0U4RDFBMUI5MDEzQzMwMDM0NkI1MiAvKiBKU05hdGl2
ZVN0ZEZ1bmN0aW9uLmNwcCAqLywKQEAgLTYyNzksNiArNjI4NSw3IEBACiAJCQkJN0IwMjQ3NTcx
Qjg2ODJFNDAwNTQyNDQwIC8qIFdBU01GdW5jdGlvblBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZFQTBBMTAxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTExvd2VyREZHVG9MTFZNLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBN0Q4OUQwMjE3QTBCOTA0MDA3NzNBRDggLyogRlRMTG93ZXJlZE5vZGVW
YWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMxOENCQzExQjhBRUY1MTAwQTI5MjlEIC8qIEpT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4QTMxQzE3RDUx
RjIyMDBDQTJDNDAgLyogRlRMT1NSRW50cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkRE
MTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JFeGl0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIz
NUJERTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oIGluIEhl
YWRlcnMgKi8sCkBAIC03NDczLDYgKzc0ODAsNyBAQAogCQkJCTBGRDEyMDMzMUE4Qzg1QkQwMDBG
NTI4MCAvKiBGVExKU0NhbGxWYXJhcmdzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOUQzMzk2
MTdGRkM0RTYwMDczQzJCQyAvKiBERkdGbHVzaGVkQXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RTMzRjUwODQxQjg0MzdBMDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJRTMxOENCQzAxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOUQzNjk0MUFFOUNDMzMw
MDBENERGQiAvKiBERkdDbGVhblVwUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEODlD
RjcxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0ZsdXNoRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGM0JEMUI3MUI4OTZBMDcwMDU5OEFBNiAvKiBERkdJbnNlcnRpb25TZXQuY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKaW5kZXggNWE4YTczNTE3MTY1ZmNkMmE3NWY4Y2NkZDUzNDRjNDM2NzFiMTE4NS4u
NGY5MWY0YzVkNzM2YzVmNWM4NWVmYzIwODI3NWM5NzIyZWZmMDdkMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtODUsNiArODUs
NyBAQAogI2luY2x1ZGUgIkpTTWFwLmgiCiAjaW5jbHVkZSAiSlNNYXBJdGVyYXRvci5oIgogI2lu
Y2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKKyNpbmNsdWRlICJKU01vZHVsZU5hbWVzcGFj
ZU9iamVjdC5oIgogI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCiAjaW5jbHVkZSAiSlNOYXRp
dmVTdGRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTT05PYmplY3QuaCIKQEAgLTM1MCw2ICszNTEs
NyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBtX3JlZ0V4cE1hdGNo
ZXNBcnJheVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheVN0
cnVjdHVyZSh2bSwgKnRoaXMpKTsKIAogICAgIG1fbW9kdWxlUmVjb3JkU3RydWN0dXJlLnNldCh2
bSwgdGhpcywgSlNNb2R1bGVSZWNvcmQ6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmpl
Y3RQcm90b3R5cGUuZ2V0KCkpKTsKKyAgICBtX21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVy
ZS5zZXQodm0sIHRoaXMsIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIHRoaXMsIGpzTnVsbCgpKSk7CiAgICAgCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAg
IG1fd2FzbU1vZHVsZVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTV0FTTU1vZHVsZTo6Y3JlYXRl
U3RydWN0dXJlKHZtLCB0aGlzKSk7CkBAIC04MjIsNiArODI0LDcgQEAgdm9pZCBKU0dsb2JhbE9i
amVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQog
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cFN0cnVjdHVyZSk7CiAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJl
KTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVSZWNvcmRTdHJ1Y3R1
cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZU5hbWVzcGFjZU9i
amVjdFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY29uc29s
ZVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZG9sbGFyVk1T
dHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2ludGVybmFsRnVu
Y3Rpb25TdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmgKaW5kZXggZTMzNDAwZWFlMmQ5YmZkYTc3ZGIxYmE2NDRiMWJlOTZmNmNlODY0
My4uZDFjYWQ4NzA3M2U0NGVkMmQ2YjA4N2QzNTA0MTAwMjgwZmM4MjIyMyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0yNjYsNiArMjY2
LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9i
amVjdCB7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9pdGVyYXRvclJlc3VsdFN0cnVj
dHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0
cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX21vZHVsZVJlY29yZFN0cnVj
dHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX21vZHVsZU5hbWVzcGFjZU9iamVj
dFN0cnVjdHVyZTsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV93YXNtTW9kdWxlU3RydWN0dXJlOwogI2VuZGlmCkBAIC01MDUsNiArNTA2LDcg
QEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVj
dCB7CiAgICAgc3RhdGljIHB0cmRpZmZfdCBpdGVyYXRvclJlc3VsdFN0cnVjdHVyZU9mZnNldCgp
IHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0dsb2JhbE9iamVjdCwgbV9pdGVyYXRvclJlc3Vs
dFN0cnVjdHVyZSk7IH0KICAgICBTdHJ1Y3R1cmUqIHJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlLmdldCgpOyB9
CiAgICAgU3RydWN0dXJlKiBtb2R1bGVSZWNvcmRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBt
X21vZHVsZVJlY29yZFN0cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSogbW9kdWxlTmFt
ZXNwYWNlT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVOYW1lc3BhY2VP
YmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgU3Ry
dWN0dXJlKiB3YXNtTW9kdWxlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV93YXNtTW9kdWxl
U3RydWN0dXJlLmdldCgpOyB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
ZjY3NDI4ZDg5YTU4MTliZGEzNmU5MTQzMWRhNjI5ZDY0YzBlNmExCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Qu
Y3BwCkBAIC0wLDAgKzEsMTc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0LmgiCisKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIklkZW50aWZpZXJJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0Nl
bGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUg
IkpTTW9kdWxlUmVjb3JkLmgiCisjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgor
I2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGlu
ZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG1vZHVsZU5hbWVzcGFjZU9iamVjdFN5bWJvbEl0ZXJhdG9yKEV4ZWNTdGF0ZSopOwor
Citjb25zdCBDbGFzc0luZm8gSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OnNfaW5mbyA9IHsgIk1v
ZHVsZU5hbWVzcGFjZU9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QpIH07CisKKworSlNNb2R1bGVOYW1lc3Bh
Y2VPYmplY3Q6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIGNvbnN0IElkZW50aWZpZXJTZXQmIGV4cG9ydHMpCisgICAgOiBCYXNlKHZtLCBzdHJ1
Y3R1cmUpCisgICAgLCBtX2V4cG9ydHMoKQoreworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRl
cm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1v
YmplY3RzCisgICAgLy8gPiBBIExpc3QgY29udGFpbmluZyB0aGUgU3RyaW5nIHZhbHVlcyBvZiB0
aGUgZXhwb3J0ZWQgbmFtZXMgZXhwb3NlZCBhcyBvd24gcHJvcGVydGllcyBvZiB0aGlzIG9iamVj
dC4KKyAgICAvLyA+IFRoZSBsaXN0IGlzIG9yZGVyZWQgYXMgaWYgYW4gQXJyYXkgb2YgdGhvc2Ug
U3RyaW5nIHZhbHVlcyBoYWQgYmVlbiBzb3J0ZWQgdXNpbmcgQXJyYXkucHJvdG90eXBlLnNvcnQg
dXNpbmcgU29ydENvbXBhcmUgYXMgY29tcGFyZWZuLgorICAgIFZlY3RvcjxVbmlxdWVkU3RyaW5n
SW1wbCo+IHRlbXBvcmFyeVZlY3RvcihleHBvcnRzLnNpemUoKSwgbnVsbHB0cik7CisgICAgc3Rk
Ojp0cmFuc2Zvcm0oZXhwb3J0cy5iZWdpbigpLCBleHBvcnRzLmVuZCgpLCB0ZW1wb3JhcnlWZWN0
b3IuYmVnaW4oKSwgW10oY29uc3QgUmVmUHRyPFdURjo6VW5pcXVlZFN0cmluZ0ltcGw+JiByZWYp
IHsKKyAgICAgICAgcmV0dXJuIHJlZi5nZXQoKTsKKyAgICB9KTsKKyAgICBzdGQ6OnNvcnQodGVt
cG9yYXJ5VmVjdG9yLmJlZ2luKCksIHRlbXBvcmFyeVZlY3Rvci5lbmQoKSwgW10gKFVuaXF1ZWRT
dHJpbmdJbXBsKiBsaHMsIFVuaXF1ZWRTdHJpbmdJbXBsKiByaHMpIHsKKyAgICAgICAgcmV0dXJu
IGNvZGVQb2ludENvbXBhcmUobGhzLCByaHMpIDwgMDsKKyAgICB9KTsKKyAgICBmb3IgKGF1dG8q
IGlkZW50aWZpZXIgOiB0ZW1wb3JhcnlWZWN0b3IpCisgICAgICAgIG1fZXhwb3J0cy5hZGQoaWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNNb2R1bGVSZWNvcmQq
IG1vZHVsZVJlY29yZCkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNT
RVJUKGluaGVyaXRzKGluZm8oKSkpOworICAgIG1fbW9kdWxlUmVjb3JkLnNldCh2bSwgdGhpcywg
bW9kdWxlUmVjb3JkKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMt
Pml0ZXJhdG9yU3ltYm9sLCBtb2R1bGVOYW1lc3BhY2VPYmplY3RTeW1ib2xJdGVyYXRvciwgRG9u
dEVudW0sIDApOworCisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2Vj
bWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMtZ2V0cHJvdG90
eXBlb2YKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIv
Ni4wLyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90aWMtb2JqZWN0cy1zZXRwcm90b3R5cGVvZi12
CisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8j
c2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMtaXNleHRlbnNpYmxlCisgICAgLy8g
aHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVs
ZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMtcHJldmVudGV4dGVuc2lvbnMKKyAgICBwcmV2ZW50
RXh0ZW5zaW9ucyh2bSk7Cit9CisKK3ZvaWQgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmRlc3Ry
b3koSlNDZWxsKiBjZWxsKQoreworICAgIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Kj4oY2VsbCk7CisgICAgdGhpc09i
amVjdC0+SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6On5KU01vZHVsZU5hbWVzcGFjZU9iamVjdCgp
OworfQorCit2b2lkIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2Vs
bCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNNb2R1bGVOYW1lc3BhY2VP
YmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqPihjZWxs
KTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Cisg
ICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVSZWNvcmQpOworfQorCitib29sIEpTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQoreworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82
LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmplY3RzLWdldG93bnByb3BlcnR5LXAK
KworICAgIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0Kj4oY2VsbCk7CisKKyAgICAvLyBzdGVwIDEuCisgICAgLy8gSWYg
dGhlIHByb3BlcnR5IG5hbWUgaXMgYSBzeW1ib2wsIHdlIGRvbid0IGxvb2sgaW50byB0aGUgaW1w
b3J0ZWQgYmluZGluZ3MuCisgICAgLy8gSXQgbWF5IHJldHVybiB0aGUgZGVzY3JpcHRvciB3aXRo
IHdyaXRhYmxlOiB0cnVlLCBidXQgbmFtZXNwYWNlIG9iamVjdHMgZG9lcyBub3QgYWxsb3cgaXQg
aW4gW1tTZXRdXSAvIFtbRGVmaW5lT3duUHJvcGVydHldXSBzaWRlLgorICAgIGlmIChwcm9wZXJ0
eU5hbWUuaXNTeW1ib2woKSkKKyAgICAgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0
eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKKworICAgIGlmICgh
dGhpc09iamVjdC0+bV9leHBvcnRzLmNvbnRhaW5zKHByb3BlcnR5TmFtZS51aWQoKSkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQgPSB0
aGlzT2JqZWN0LT5tX21vZHVsZVJlY29yZC5nZXQoKTsKKworICAgIGNvbnN0IGF1dG8gcmVzb2x1
dGlvbiA9IG1vZHVsZVJlY29yZC0+cmVzb2x2ZUV4cG9ydChleGVjLCBJZGVudGlmaWVyOjpmcm9t
VWlkKGV4ZWMsIHByb3BlcnR5TmFtZS51aWQoKSkpOworICAgIEFTU0VSVChyZXNvbHV0aW9uLnR5
cGUgIT0gSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb246OlR5cGU6Ok5vdEZvdW5kICYmIHJlc29s
dXRpb24udHlwZSAhPSBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbjo6VHlwZTo6QW1iaWd1b3Vz
KTsKKyAgICBKU01vZHVsZVJlY29yZCogdGFyZ2V0TW9kdWxlID0gcmVzb2x1dGlvbi5tb2R1bGVS
ZWNvcmQ7CisgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogdGFyZ2V0RW52aXJvbm1lbnQgPSB0YXJn
ZXRNb2R1bGUtPm1vZHVsZUVudmlyb25tZW50KCk7CisgICAgUHJvcGVydHlTbG90IHRyYW1wb2xp
bmVTbG90KHRhcmdldEVudmlyb25tZW50KTsKKyAgICBpZiAoIXRhcmdldEVudmlyb25tZW50LT5t
ZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlTbG90KHRhcmdldEVudmlyb25t
ZW50LCBleGVjLCByZXNvbHV0aW9uLmxvY2FsTmFtZSwgdHJhbXBvbGluZVNsb3QpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IHRyYW1wb2xpbmVTbG90LmdldFZh
bHVlKGV4ZWMsIHByb3BlcnR5TmFtZSk7CisgICAgLy8gRklYTUU6IGdldE93blByb3BlcnR5U2xv
dCBjYW5ub3QgdGhyb3cgYW55IGVycm9ycy4KKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
IHsKKyAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21h
LTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmplY3RzLWdldG93bnByb3Bl
cnR5LXAKKyAgICAvLyBzZWN0aW9uIDkuNC42LjUsIHN0ZXAgNi4KKyAgICAvLyBUaGlzIHByb3Bl
cnR5IHdpbGwgYmUgc2VlbiBhcyB3cml0YWJsZTogdHJ1ZSwgZW51bWVyYWJsZTp0cnVlLCBjb25m
aWd1cmFibGU6IGZhbHNlLgorICAgIC8vIEJ1dCB0aGlzIGRvZXMgbm90IG1lYW4gdGhhdCB0aGlz
IHByb3BlcnR5IGlzIHdyaXRhYmxlIGJ5IHVzZXJzLgorICAgIC8vIGh0dHBzOi8vZXNkaXNjdXNz
Lm9yZy90b3BpYy9tYXJjaC0yNC1tZWV0aW5nLW5vdGVzCisgICAgc2xvdC5zZXRWYWx1ZSh0aGlz
T2JqZWN0LCBEb250RGVsZXRlLCB2YWx1ZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQg
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OnB1dChKU0NlbGwqLCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQoreworICAgIC8vIGh0
dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUt
bmFtZXNwYWNlLWV4b3RpYy1vYmplY3RzLXNldC1wLXYtcmVjZWl2ZXIKKyAgICBpZiAoc2xvdC5p
c1N0cmljdE1vZGUoKSkKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOworfQorCit2b2lkIEpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0OjpwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSogZXhlYywg
dW5zaWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCit7CisgICAgaWYgKHNob3VsZFRo
cm93KQorICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9k
ZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7Cit9CisKK2Jvb2wgSlNNb2R1bGVOYW1lc3Bh
Y2VPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkKK3sKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRp
b25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90aWMtb2JqZWN0
cy1kZWxldGUtcAorICAgIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Kj4oY2VsbCk7CisgICAgcmV0dXJuICF0aGlzT2Jq
ZWN0LT5tX2V4cG9ydHMuY29udGFpbnMocHJvcGVydHlOYW1lLnVpZCgpKTsKK30KKwordm9pZCBK
U01vZHVsZU5hbWVzcGFjZU9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51
bWVyYXRpb25Nb2RlIG1vZGUpCit7CisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9u
YWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMt
b3ducHJvcGVydHlrZXlzCisgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqPihjZWxsKTsKKyAgICBmb3IgKGNvbnN0
IGF1dG8mIG5hbWUgOiB0aGlzT2JqZWN0LT5tX2V4cG9ydHMpCisgICAgICAgIHByb3BlcnR5TmFt
ZXMuYWRkKG5hbWUuZ2V0KCkpOworICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlO
YW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKK30KKworYm9vbCBK
U01vZHVsZU5hbWVzcGFjZU9iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9v
bCBzaG91bGRUaHJvdykKK3sKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5v
cmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90aWMtb2JqZWN0cy1kZWZp
bmVvd25wcm9wZXJ0eS1wLWRlc2MKKyAgICBpZiAoc2hvdWxkVGhyb3cpCisgICAgICAgIHRocm93
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBkZWZpbmUgcHJvcGVy
dHkgb24gb2JqZWN0IHRoYXQgaXMgbm90IGV4dGVuc2libGUuIikpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVOYW1lc3BhY2VPYmpl
Y3RTeW1ib2xJdGVyYXRvcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgifHRoaXN8IHNob3VsZCBiZSBhbiBvYmplY3QiKSkpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKS0+cHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmUoKSwgYXNP
YmplY3QodGhpc1ZhbHVlKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjkxZTkzOTUyZjhiNzdjMDYxNzk2ODM0NWQ1MTU2ZDE1MzFjZmRkMTkKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5h
bWVzcGFjZU9iamVjdC5oCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0X2gK
KyNkZWZpbmUgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3RfaAorCisjaW5jbHVkZSAiSlNEZXN0cnVj
dGlibGVPYmplY3QuaCIKKyNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KKworbmFtZXNwYWNl
IEpTQyB7CisKK2NsYXNzIEpTTW9kdWxlUmVjb3JkOworCitjbGFzcyBKU01vZHVsZU5hbWVzcGFj
ZU9iamVjdCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CitwdWJsaWM6CisgICAgdHlw
ZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3du
UHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lczsKKworICAgIHN0YXRpYyBK
U01vZHVsZU5hbWVzcGFjZU9iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTTW9kdWxlUmVjb3Jk
KiBtb2R1bGVSZWNvcmQsIGNvbnN0IElkZW50aWZpZXJTZXQmIGV4cG9ydHMpCisgICAgeworICAg
ICAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q+KGV4ZWMtPnZtKCkuaGVhcCkpIEpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0KGV4ZWMtPnZtKCksIHN0cnVjdHVyZSwgZXhwb3J0cyk7CisgICAg
ICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+dm0oKSwgZ2xvYmFsT2JqZWN0LCBtb2R1
bGVSZWNvcmQpOworICAgICAgICByZXR1cm4gb2JqZWN0OworICAgIH0KKworICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZv
aWQgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2Rl
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlw
dG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1
cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5m
byhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcm90ZWN0
ZWQ6CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xv
YmFsT2JqZWN0KiwgSlNNb2R1bGVSZWNvcmQqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU01v
ZHVsZU5hbWVzcGFjZU9iamVjdChWTSYsIFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXJTZXQm
IGV4cG9ydHMpOworCitwcml2YXRlOgorICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7
CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwor
CisgICAgdHlwZWRlZiBXVEY6Okxpc3RIYXNoU2V0PFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4s
IElkZW50aWZpZXJSZXBIYXNoPiBPcmRlcmVkSWRlbnRpZmllclNldDsKKworICAgIE9yZGVyZWRJ
ZGVudGlmaWVyU2V0IG1fZXhwb3J0czsKKyAgICBXcml0ZUJhcnJpZXI8SlNNb2R1bGVSZWNvcmQ+
IG1fbW9kdWxlUmVjb3JkOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBK
U01vZHVsZU5hbWVzcGFjZU9iamVjdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU01vZHVsZVJlY29yZC5jcHAKaW5kZXggM2JhZjViYjg3NzEwNGE0ZjJlNTEyODc2ZDdk
ZWJkNDEwNTNlNjRjYy4uMzJkOWM3MDZkMGMyZDRlM2NiMGYwOTA1MDZmZmRjNmE0MGEwMTZiYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNw
cApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKICNpbmNsdWRl
ICJKU01hcC5oIgogI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKKyNpbmNsdWRlICJK
U01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5o
IgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKIApAQCAtNjIsNiArNjMsNyBAQCB2b2lk
IEpTTW9kdWxlUmVjb3JkOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCiAgICAgSlNNb2R1bGVSZWNvcmQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1
bGVSZWNvcmQqPihjZWxsKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZp
c2l0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZUVudmlyb25t
ZW50KTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVOYW1lc3BhY2VP
YmplY3QpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZVByb2dyYW1F
eGVjdXRhYmxlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9kZXBlbmRlbmNp
ZXNNYXApOwogfQpAQCAtNDIxLDYgKzQyMyw3NSBAQCBhdXRvIEpTTW9kdWxlUmVjb3JkOjpyZXNv
bHZlRXhwb3J0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZQog
ICAgIHJldHVybiByZXNvbHZlRXhwb3J0TG9vcChleGVjLCBSZXNvbHZlUXVlcnkodGhpcywgZXhw
b3J0TmFtZS5pbXBsKCkpKTsKIH0KIAorc3RhdGljIHZvaWQgZ2V0RXhwb3J0ZWROYW1lcyhFeGVj
U3RhdGUqIGV4ZWMsIEpTTW9kdWxlUmVjb3JkKiByb290LCBJZGVudGlmaWVyU2V0JiBleHBvcnRl
ZE5hbWVzKQoreworICAgIEhhc2hTZXQ8SlNNb2R1bGVSZWNvcmQqPiBleHBvcnRTdGFyU2V0Owor
ICAgIFZlY3RvcjxKU01vZHVsZVJlY29yZCosIDg+IHBlbmRpbmdNb2R1bGVzOworCisgICAgcGVu
ZGluZ01vZHVsZXMuYXBwZW5kKHJvb3QpOworCisgICAgd2hpbGUgKCFwZW5kaW5nTW9kdWxlcy5p
c0VtcHR5KCkpIHsKKyAgICAgICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCA9IHBlbmRp
bmdNb2R1bGVzLnRha2VMYXN0KCk7CisgICAgICAgIGlmIChleHBvcnRTdGFyU2V0LmNvbnRhaW5z
KG1vZHVsZVJlY29yZCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgZXhwb3J0U3Rh
clNldC5hZGQobW9kdWxlUmVjb3JkKTsKKworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIg
OiBtb2R1bGVSZWNvcmQtPmV4cG9ydEVudHJpZXMoKSkgeworICAgICAgICAgICAgY29uc3QgYXV0
byYgZXhwb3J0RW50cnkgPSBwYWlyLnZhbHVlOworICAgICAgICAgICAgc3dpdGNoIChleHBvcnRF
bnRyeS50eXBlKSB7CisgICAgICAgICAgICBjYXNlIEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRy
eTo6VHlwZTo6TG9jYWw6CisgICAgICAgICAgICBjYXNlIEpTTW9kdWxlUmVjb3JkOjpFeHBvcnRF
bnRyeTo6VHlwZTo6SW5kaXJlY3Q6CisgICAgICAgICAgICAgICAgaWYgKG1vZHVsZVJlY29yZCA9
PSByb290IHx8IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5kZWZhdWx0S2V5d29yZCAhPSBleHBvcnRF
bnRyeS5leHBvcnROYW1lKQorICAgICAgICAgICAgICAgICAgICBleHBvcnRlZE5hbWVzLmFkZChl
eHBvcnRFbnRyeS5leHBvcnROYW1lLmltcGwoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgICAgIGNhc2UgSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpUeXBlOjpOYW1l
c3BhY2U6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHN0YXJNb2R1bGVOYW1lIDogbW9kdWxlUmVjb3Jk
LT5zdGFyRXhwb3J0RW50cmllcygpKSB7CisgICAgICAgICAgICBKU01vZHVsZVJlY29yZCogcmVx
dWVzdGVkTW9kdWxlUmVjb3JkID0gbW9kdWxlUmVjb3JkLT5ob3N0UmVzb2x2ZUltcG9ydGVkTW9k
dWxlKGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgc3Rhck1vZHVsZU5hbWUuZ2V0KCkp
KTsKKyAgICAgICAgICAgIHBlbmRpbmdNb2R1bGVzLmFwcGVuZChyZXF1ZXN0ZWRNb2R1bGVSZWNv
cmQpOworICAgICAgICB9CisgICAgfQorfQorCitKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogSlNN
b2R1bGVSZWNvcmQ6OmdldE1vZHVsZU5hbWVzcGFjZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAg
Ly8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLWdl
dG1vZHVsZW5hbWVzcGFjZQorICAgIGlmIChtX21vZHVsZU5hbWVzcGFjZU9iamVjdCkKKyAgICAg
ICAgcmV0dXJuIG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0LmdldCgpOworCisgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICBJ
ZGVudGlmaWVyU2V0IGV4cG9ydGVkTmFtZXM7CisgICAgZ2V0RXhwb3J0ZWROYW1lcyhleGVjLCB0
aGlzLCBleHBvcnRlZE5hbWVzKTsKKworICAgIElkZW50aWZpZXJTZXQgdW5hbWJpZ3VvdXNOYW1l
czsKKyAgICBmb3IgKGF1dG8mIG5hbWUgOiBleHBvcnRlZE5hbWVzKSB7CisgICAgICAgIGNvbnN0
IGF1dG8gcmVzb2x1dGlvbiA9IHJlc29sdmVFeHBvcnQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVp
ZChleGVjLCBuYW1lLmdldCgpKSk7CisgICAgICAgIHN3aXRjaCAocmVzb2x1dGlvbi50eXBlKSB7
CisgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQ6CisgICAgICAgICAgICB0
aHJvd1N5bnRheEVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIkV4cG9ydGVkIGJpbmRpbmcgbmFtZSAn
IiwgU3RyaW5nKG5hbWUuZ2V0KCkpLCAiJyBpcyBub3QgZm91bmQuIikpOworICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpFcnJvcjoK
KyAgICAgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYywgbWFrZVN0cmluZygiRXhwb3J0ZWQg
YmluZGluZyBuYW1lICdkZWZhdWx0JyBjYW5ub3QgYmUgcmVzb2x2ZWQgYnkgc3RhciBleHBvcnQg
ZW50cmllcy4iKSk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBjYXNl
IFJlc29sdXRpb246OlR5cGU6OkFtYmlndW91czoKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6UmVzb2x2ZWQ6CisgICAgICAgICAgICB1bmFtYmln
dW91c05hbWVzLmFkZChuYW1lKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fQorCisgICAgbV9tb2R1bGVOYW1lc3BhY2VPYmplY3Quc2V0KGV4ZWMtPnZtKCksIHRoaXMsIEpT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBnbG9iYWxP
YmplY3QtPm1vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZSgpLCB0aGlzLCB1bmFtYmlndW91
c05hbWVzKSk7CisgICAgcmV0dXJuIG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0LmdldCgpOworfQor
CiB2b2lkIEpTTW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBNb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxl
OjpjcmVhdGUoZXhlYywgc291cmNlQ29kZSgpKTsKQEAgLTQ3OCw4ICs1NDksMTYgQEAgdm9pZCBK
U01vZHVsZVJlY29yZDo6aW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoRXhlY1N0YXRlKiBleGVjLCBN
b2R1bGVQcm9ncmFtRXhlY3UKICAgICAgICAgY29uc3QgYXV0byYgaW1wb3J0RW50cnkgPSBwYWly
LnZhbHVlOwogICAgICAgICBKU01vZHVsZVJlY29yZCogaW1wb3J0ZWRNb2R1bGUgPSBob3N0UmVz
b2x2ZUltcG9ydGVkTW9kdWxlKGV4ZWMsIGltcG9ydEVudHJ5Lm1vZHVsZVJlcXVlc3QpOwogICAg
ICAgICBpZiAoaW1wb3J0RW50cnkuaXNOYW1lc3BhY2Uodm0pKSB7Ci0gICAgICAgICAgICAvLyBG
SVhNRTogTW9kdWxlTmFtZXNwYWNlT2JqZWN0IHdpbGwgYmUgaW1wbGVtZW50ZWQuCi0gICAgICAg
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NzA1Cisg
ICAgICAgICAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogbmFtZXNwYWNlT2JqZWN0ID0gaW1w
b3J0ZWRNb2R1bGUtPmdldE1vZHVsZU5hbWVzcGFjZShleGVjKTsKKyAgICAgICAgICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAvLyBXZSBkb24ndCB1c2UgdGhlIHN5bWJvbFRhYmxlUHV0IGJlY2F1c2UgdGhlc2UgYmluZGlu
Z3MgYXJlIGltbXV0YWJsZS4KKyAgICAgICAgICAgIC8vIEZvciB0aGUgZmlyc3QgaW5pdGlhbGl6
YXRpb24sIHdlIGluaXRpYWxpemUgdGhlIGJpbmRpbmcgc2xvdCBkaXJlY3RseS4KKyAgICAgICAg
ICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLT5tX2xvY2spOworICAg
ICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlLT5pbmxpbmVHZXQo
bG9ja2VyLCBpbXBvcnRFbnRyeS5sb2NhbE5hbWUuaW1wbCgpKTsKKyAgICAgICAgICAgIFNjb3Bl
T2Zmc2V0IG9mZnNldCA9IGVudHJ5LnNjb3BlT2Zmc2V0KCk7CisgICAgICAgICAgICBBU1NFUlQo
bW9kdWxlRW52aXJvbm1lbnQtPmlzVmFsaWQob2Zmc2V0KSk7CisgICAgICAgICAgICBtb2R1bGVF
bnZpcm9ubWVudC0+dmFyaWFibGVBdChvZmZzZXQpLnNldCh2bSwgbW9kdWxlRW52aXJvbm1lbnQs
IG5hbWVzcGFjZU9iamVjdCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBjb25zdCBh
dXRvIHJlc29sdXRpb24gPSBpbXBvcnRlZE1vZHVsZS0+cmVzb2x2ZUV4cG9ydChleGVjLCBpbXBv
cnRFbnRyeS5pbXBvcnROYW1lKTsKICAgICAgICAgICAgIHN3aXRjaCAocmVzb2x1dGlvbi50eXBl
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJl
Y29yZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaApp
bmRleCAwODUyMWI0Y2NkM2IwNGFhZWUwM2IzYjQ0MWEyMWMxZjZkNDE5NjQ3Li43MGExOTBmODJj
Njc4ZDE4NjFmNTA2ZWQxZDgwZjIyNWJjYzkwZTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmgKQEAgLTE1Niw2ICsxNTYsOCBAQCBjbGFzcyBK
U01vZHVsZVJlY29yZCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAKICAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJik7CiAKKyAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogZ2V0
TW9kdWxlTmFtZXNwYWNlKEV4ZWNTdGF0ZSopOworCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGls
ZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlND
ZWxsKik7CiAKQEAgLTE5OSw2ICsyMDEsNyBAQCBjbGFzcyBKU01vZHVsZVJlY29yZCA6IHB1Ymxp
YyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAKICAgICBXcml0ZUJhcnJpZXI8TW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGU+IG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU7CiAgICAgV3JpdGVCYXJyaWVy
PEpTTW9kdWxlRW52aXJvbm1lbnQ+IG1fbW9kdWxlRW52aXJvbm1lbnQ7CisgICAgV3JpdGVCYXJy
aWVyPEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0PiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260437</attachid>
            <date>2015-09-02 14:17:11 -0700</date>
            <delta_ts>2015-09-03 21:51:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148705-20150902141711.patch</filename>
            <type>text/plain</type>
            <size>33431</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
MWQ5NDkwODA0YzZhZjcxMzQxZGY5NzY1YTZhN2UwMThhOGViZWY3Li4yMjIyN2UwZTI1Y2FkNTIw
MTIxYjEwYmMwNGI2YTQ5NjIyNDE0YzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw1MCBAQAogMjAxNS0wOS0wMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBbRVM2XSBJbXBsZW1lbnQgTW9kdWxlTmFtZXNwYWNlT2JqZWN0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg3MDUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQg
TW9kdWxlIG5hbWVzcGFjZSBvYmplY3QuCisgICAgICAgIFRoYXQgaXMgdXNlZCB3aGVuIGltcG9y
dGluZyB0aGUgbW9kdWxlIHdpdGggdGhlIGZvcm0gYGltcG9ydCAqIGFzIG5hbWVzcGFjZSBmcm9t
ICJtb2QiYC4KKyAgICAgICAgVGhlIG1vZHVsZSBuYW1lc3BhY2Ugb2JqZWN0IGlzIG5vbi1leHRl
bnNpYmxlIG9iamVjdCB0aGF0IGhhcyB0aGUgYmluZGluZ3MgdG8gdGhlIG9yaWdpbmFsIG1vZHVs
ZQorICAgICAgICBhcyB0aGUgcHJvcGVydHkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
LmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJl
KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcDogQWRkZWQu
CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpKU01vZHVsZU5hbWVzcGFj
ZU9iamVjdCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpkZXN0cm95
KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAoSlNDOjpjYWxsYmFja0dldHRlcik6CisgICAgICAgIChKU0M6OkpTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU01v
ZHVsZU5hbWVzcGFjZU9iamVjdDo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3Bh
Y2VPYmplY3Q6OnB1dEJ5SW5kZXgpOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFjZU9i
amVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFjZU9i
amVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6Om1vZHVsZU5hbWVz
cGFjZU9iamVjdFN5bWJvbEl0ZXJhdG9yKToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFjZU9i
amVjdDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmNy
ZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Ojpt
b2R1bGVSZWNvcmQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwOgorICAg
ICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6
OmdldEV4cG9ydGVkTmFtZXMpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6Z2V0TW9k
dWxlTmFtZXNwYWNlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6Omluc3RhbnRpYXRl
RGVjbGFyYXRpb25zKToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmg6CisKKzIw
MTUtMDktMDIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKICAgICAg
ICAgW0VTNl0gSW5zdGFudGlhdGUgTW9kdWxlIEVudmlyb25tZW50IGJpbmRpbmdzIGFuZCBleGVj
dXRlIG1vZHVsZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ4MDUzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBlZmE1NzBh
MjEyNjIyNDYzOGU1NTU4NThjZGNlZmRiYWZlMDI5MjVjLi42ZDE5YTJkZTE0Y2UyMzVkMGRjYTdj
MmNlODQyZTY5MzZiMDJmOThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBA
IC01MzgsNiArNTM4LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1JVTlRJTUVfU09VUkNFUwogICAg
IHJ1bnRpbWUvSlNNYXAuY3BwCiAgICAgcnVudGltZS9KU01hcEl0ZXJhdG9yLmNwcAogICAgIHJ1
bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAKKyAgICBydW50aW1lL0pTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCiAgICAgcnVudGlt
ZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcAogICAgIHJ1bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDhhMTI2ZTU1NDUzZDM4
YzA0ZTljMmFjMmMyNDc4MjNiMTU0MDQyMzEuLjg5ZTRkMTFmZDk5MjdhZDI0MTRiZmFmYTM1ZjRm
NGMyZDdiODllZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAt
Nzg3LDYgKzc4Nyw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTWFw
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNYXBJdGVyYXRv
ci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTW9kdWxlRW52
aXJvbm1lbnQuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01v
ZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTTW9kdWxlUmVjb3JkLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxydW50aW1lXEpTTm90QW5PYmplY3QuY3BwIiAvPgpAQCAtMTY0Miw2ICsxNjQzLDcg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNYXAuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNYXBJdGVyYXRvci5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01vZHVsZUVudmlyb25tZW50LmgiIC8+Cisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTW9kdWxlUmVjb3Jk
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTmF0aXZlU3RkRnVu
Y3Rpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNOb3RBbk9i
amVjdC5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5m
aWx0ZXJzCmluZGV4IDY4ZTRjN2U0NGY5Yzg4MmUxMzRjY2Y3ZTNhNTA2MGE2YzRjOGM3NTEuLmRk
M2RkMTBiMDFjOWI4YTc1MTRiYjQxZTQwYTk4YmY1MzFhZjRjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTcyOSw2ICs3MjksOSBA
QAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01vZHVsZUVudmlyb25tZW50
LmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxl
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01vZHVsZVJlY29yZC5jcHAi
PgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0z
NTExLDYgKzM1MTQsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01v
ZHVsZUVudmlyb25tZW50LmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAg
PC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAg
PC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTW9kdWxl
UmVjb3JkLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1
ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJiMTYzMDJkMTAxZDQwN2U5ZDI2
MDQ3ZDI3NTcwMTA3ZGY3ODcyOWUuLjAyZTI2MDg1MDlkMTAxMWE5NmEyZDNmY2RjMWM1ZTc1MGEy
YzY4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzAwLDYgKzE3MDAsOCBA
QAogCQlFMTI0QThGODBFNTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyNEE4RjYwRTU1NTc3
NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmNwcCAqLzsgfTsKIAkJRTE4RTNBNTkwREY5Mjc4
QzAwRDkwQjM0IC8qIFZNLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUxOEUzQTU3MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgKi87IH07CiAJCUUz
MDY3Nzk4MUI4QkM2RjUwMDNGODdGMCAvKiBNb2R1bGVMb2FkZXJPYmplY3QuanMgaW4gUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMDY3Nzk3MUI4QkM2RjUw
MDNGODdGMCAvKiBNb2R1bGVMb2FkZXJPYmplY3QuanMgKi87IH07CisJCUUzMThDQkMwMUI4QUVG
NTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzE4Q0JCRTFCOEFFRjUxMDBBMjkyOUQg
LyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwICovOyB9OworCQlFMzE4Q0JDMTFCOEFFRjUx
MDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMThDQkJGMUI4QUVGNTEwMEEyOTI5RCAvKiBK
U01vZHVsZU5hbWVzcGFjZU9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUUzMzYzN0E1MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2Jq
ZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
MzYzN0EzMUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmNwcCAqLzsgfTsKIAkJRTMz
NjM3QTYxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMzYzN0E0MUI2MzIyMDIwMEVFMDg0MCAv
KiBSZWZsZWN0T2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTMzQjNFMjYxQjdBQkQ3NTAwNDhEQjJFIC8qIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbk9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzM0IzRTI1MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25PYmplY3QubHV0LmggKi87IH07CkBAIC0zNTYxLDYgKzM1NjMsOCBAQAogCQlFMThFM0E1
NjBERjkyNzhDMDBEOTBCMzQgLyogVk0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBsaW5l
RW5kaW5nID0gMDsgcGF0aCA9IFZNLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3Vh
Z2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcub2JqY3BwOyB9OwogCQlFMThF
M0E1NzBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBsaW5lRW5kaW5nID0gMDsgcGF0aCA9IFZNLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5jcHA7IH07
CiAJCUUzMDY3Nzk3MUI4QkM2RjUwMDNGODdGMCAvKiBNb2R1bGVMb2FkZXJPYmplY3QuanMgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBNb2R1bGVMb2FkZXJPYmplY3Qu
anM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMThDQkJFMUI4QUVGNTEwMEEyOTI5
RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUzMThDQkJGMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVz
cGFjZU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZU5h
bWVzcGFjZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzM2MzdBMzFC
NjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZWZsZWN0T2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTMzNjM3QTQxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVmbGVjdE9iamVjdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzNCM0UyNTFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC00NzgzLDYgKzQ3ODcsOCBAQAogCQkJCUE3NERFRjkwMTgyRDk5MTQw
MDUyMkMyMiAvKiBKU01hcEl0ZXJhdG9yLmggKi8sCiAJCQkJRTNEMjM5QzYxQjgyOUMxQzAwQkJF
RjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwICovLAogCQkJCUUzRDIzOUM3MUI4MjlDMUMw
MEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggKi8sCisJCQkJRTMxOENCQkUxQjhBRUY1
MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCAqLywKKwkJCQlFMzE4Q0JC
RjFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCAqLywKIAkJCQlF
MzlEQTRBNDFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwICovLAogCQkJCUUz
OURBNEE1MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oICovLAogCQkJCUUzM0U4
RDFBMUI5MDEzQzMwMDM0NkI1MiAvKiBKU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcCAqLywKQEAgLTYy
NzksNiArNjI4NSw3IEBACiAJCQkJN0IwMjQ3NTcxQjg2ODJFNDAwNTQyNDQwIC8qIFdBU01GdW5j
dGlvblBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMTAxNzA1MTNEQjAwQkI3MjJD
IC8qIEZUTExvd2VyREZHVG9MTFZNLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q4OUQwMjE3QTBC
OTA0MDA3NzNBRDggLyogRlRMTG93ZXJlZE5vZGVWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RTMxOENCQzExQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkQ4QTMxQzE3RDUxRjIyMDBDQTJDNDAgLyogRlRMT1NSRW50cnku
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkREMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JF
eGl0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJERTE3MTc4RTFDMDA2OTBDN0YgLyogRlRM
T1NSRXhpdENvbXBpbGF0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8sCkBAIC03NDczLDYgKzc0ODAs
NyBAQAogCQkJCTBGRDEyMDMzMUE4Qzg1QkQwMDBGNTI4MCAvKiBGVExKU0NhbGxWYXJhcmdzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGOUQzMzk2MTdGRkM0RTYwMDczQzJCQyAvKiBERkdGbHVz
aGVkQXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTMzRjUwODQxQjg0MzdBMDAwNDEzODU2IC8q
IEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTMxOENC
QzAxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGOUQzNjk0MUFFOUNDMzMwMDBENERGQiAvKiBERkdDbGVhblVwUGhhc2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEODlDRjcxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Zs
dXNoRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0JEMUI3MUI4OTZBMDcwMDU5OEFB
NiAvKiBERkdJbnNlcnRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggNWE4YTczNTE3MTY1
ZmNkMmE3NWY4Y2NkZDUzNDRjNDM2NzFiMTE4NS4uNGY5MWY0YzVkNzM2YzVmNWM4NWVmYzIwODI3
NWM5NzIyZWZmMDdkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcApAQCAtODUsNiArODUsNyBAQAogI2luY2x1ZGUgIkpTTWFwLmgiCiAj
aW5jbHVkZSAiSlNNYXBJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQu
aCIKKyNpbmNsdWRlICJKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIgogI2luY2x1ZGUgIkpTTW9k
dWxlUmVjb3JkLmgiCiAjaW5jbHVkZSAiSlNOYXRpdmVTdGRGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkpTT05PYmplY3QuaCIKQEAgLTM1MCw2ICszNTEsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojpp
bml0KFZNJiB2bSkKICAgICBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZS5zZXQodm0sIHRo
aXMsIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSh2bSwgKnRoaXMpKTsKIAogICAg
IG1fbW9kdWxlUmVjb3JkU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNNb2R1bGVSZWNvcmQ6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKKyAgICBt
X21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGpzTnVsbCgpKSk7CiAgICAg
CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIG1fd2FzbU1vZHVsZVN0cnVjdHVyZS5zZXQo
dm0sIHRoaXMsIEpTV0FTTU1vZHVsZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzKSk7CkBAIC04
MjIsNiArODI0LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwq
IGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX3JlZ0V4cFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZSk7CiAgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY29uc29sZVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fZG9sbGFyVk1TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggZTMzNDAwZWFl
MmQ5YmZkYTc3ZGIxYmE2NDRiMWJlOTZmNmNlODY0My4uZDFjYWQ4NzA3M2U0NGVkMmQ2YjA4N2Qz
NTA0MTAwMjgwZmM4MjIyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCkBAIC0yNjYsNiArMjY2LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Qg
OiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9pdGVyYXRvclJlc3VsdFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8
U3RydWN0dXJlPiBtX21vZHVsZVJlY29yZFN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZTsKICNpZiBFTkFCTEUoV0VC
QVNTRU1CTFkpCiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV93YXNtTW9kdWxlU3RydWN0
dXJlOwogI2VuZGlmCkBAIC01MDUsNiArNTA2LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBw
dWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgc3RhdGljIHB0cmRpZmZfdCBp
dGVyYXRvclJlc3VsdFN0cnVjdHVyZU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihK
U0dsb2JhbE9iamVjdCwgbV9pdGVyYXRvclJlc3VsdFN0cnVjdHVyZSk7IH0KICAgICBTdHJ1Y3R1
cmUqIHJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhw
TWF0Y2hlc0FycmF5U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBtb2R1bGVSZWNv
cmRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZVJlY29yZFN0cnVjdHVyZS5nZXQo
KTsgfQorICAgIFN0cnVjdHVyZSogbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgU3RydWN0dXJlKiB3YXNtTW9kdWxlU3RydWN0dXJl
KCkgY29uc3QgeyByZXR1cm4gbV93YXNtTW9kdWxlU3RydWN0dXJlLmdldCgpOyB9CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzQ2MGQ4NDMwMTU0NTgzZTRkZmRhM2VhOTRi
NjhmZTE3MWYwNzY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwCkBAIC0wLDAgKzEsMTkxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgiCisKKyNpbmNsdWRlICJF
cnJvci5oIgorI2luY2x1ZGUgIklkZW50aWZpZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSlNW
YWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNN
b2R1bGVFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCisjaW5jbHVk
ZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgorI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5l
cy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZU5hbWVzcGFjZU9iamVj
dFN5bWJvbEl0ZXJhdG9yKEV4ZWNTdGF0ZSopOworCitjb25zdCBDbGFzc0luZm8gSlNNb2R1bGVO
YW1lc3BhY2VPYmplY3Q6OnNfaW5mbyA9IHsgIk1vZHVsZU5hbWVzcGFjZU9iamVjdCIsICZCYXNl
OjpzX2luZm8sIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNNb2R1bGVOYW1lc3BhY2VP
YmplY3QpIH07CisKKworSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OkpTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXJTZXQm
IGV4cG9ydHMpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgLCBtX2V4cG9ydHMoKQor
eworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAv
I3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmplY3RzCisgICAgLy8gPiBBIExpc3QgY29u
dGFpbmluZyB0aGUgU3RyaW5nIHZhbHVlcyBvZiB0aGUgZXhwb3J0ZWQgbmFtZXMgZXhwb3NlZCBh
cyBvd24gcHJvcGVydGllcyBvZiB0aGlzIG9iamVjdC4KKyAgICAvLyA+IFRoZSBsaXN0IGlzIG9y
ZGVyZWQgYXMgaWYgYW4gQXJyYXkgb2YgdGhvc2UgU3RyaW5nIHZhbHVlcyBoYWQgYmVlbiBzb3J0
ZWQgdXNpbmcgQXJyYXkucHJvdG90eXBlLnNvcnQgdXNpbmcgU29ydENvbXBhcmUgYXMgY29tcGFy
ZWZuLgorICAgIFZlY3RvcjxVbmlxdWVkU3RyaW5nSW1wbCo+IHRlbXBvcmFyeVZlY3RvcihleHBv
cnRzLnNpemUoKSwgbnVsbHB0cik7CisgICAgc3RkOjp0cmFuc2Zvcm0oZXhwb3J0cy5iZWdpbigp
LCBleHBvcnRzLmVuZCgpLCB0ZW1wb3JhcnlWZWN0b3IuYmVnaW4oKSwgW10oY29uc3QgUmVmUHRy
PFdURjo6VW5pcXVlZFN0cmluZ0ltcGw+JiByZWYpIHsKKyAgICAgICAgcmV0dXJuIHJlZi5nZXQo
KTsKKyAgICB9KTsKKyAgICBzdGQ6OnNvcnQodGVtcG9yYXJ5VmVjdG9yLmJlZ2luKCksIHRlbXBv
cmFyeVZlY3Rvci5lbmQoKSwgW10gKFVuaXF1ZWRTdHJpbmdJbXBsKiBsaHMsIFVuaXF1ZWRTdHJp
bmdJbXBsKiByaHMpIHsKKyAgICAgICAgcmV0dXJuIGNvZGVQb2ludENvbXBhcmUobGhzLCByaHMp
IDwgMDsKKyAgICB9KTsKKyAgICBmb3IgKGF1dG8qIGlkZW50aWZpZXIgOiB0ZW1wb3JhcnlWZWN0
b3IpCisgICAgICAgIG1fZXhwb3J0cy5hZGQoaWRlbnRpZmllcik7Cit9CisKK3ZvaWQgSlNNb2R1
bGVOYW1lc3BhY2VPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCkKK3sKKyAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworICAg
IG1fbW9kdWxlUmVjb3JkLnNldCh2bSwgdGhpcywgbW9kdWxlUmVjb3JkKTsKKyAgICBKU0NfTkFU
SVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBtb2R1bGVOYW1l
c3BhY2VPYmplY3RTeW1ib2xJdGVyYXRvciwgRG9udEVudW0sIDApOworCisgICAgLy8gaHR0cDov
L3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1l
c3BhY2UtZXhvdGljLW9iamVjdHMtZ2V0cHJvdG90eXBlb2YKKyAgICAvLyBodHRwOi8vd3d3LmVj
bWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1l
eG90aWMtb2JqZWN0cy1zZXRwcm90b3R5cGVvZi12CisgICAgLy8gaHR0cDovL3d3dy5lY21hLWlu
dGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGlj
LW9iamVjdHMtaXNleHRlbnNpYmxlCisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9u
YWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMt
cHJldmVudGV4dGVuc2lvbnMKKyAgICBwcmV2ZW50RXh0ZW5zaW9ucyh2bSk7Cit9CisKK3ZvaWQg
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIEpT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0Kj4oY2VsbCk7CisgICAgdGhpc09iamVjdC0+SlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3Q6On5KU01vZHVsZU5hbWVzcGFjZU9iamVjdCgpOworfQorCit2b2lkIEpTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCit7CisgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlz
T2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1
bGVSZWNvcmQpOworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgY2FsbGJhY2tHZXR0ZXIoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkKK3sKKyAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZU5hbWVzcGFjZU9iamVjdCo+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKKyAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkID0gdGhpc09i
amVjdC0+bW9kdWxlUmVjb3JkKCk7CisKKyAgICBjb25zdCBhdXRvIHJlc29sdXRpb24gPSBtb2R1
bGVSZWNvcmQtPnJlc29sdmVFeHBvcnQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCBw
cm9wZXJ0eU5hbWUudWlkKCkpKTsKKyAgICBBU1NFUlQocmVzb2x1dGlvbi50eXBlICE9IEpTTW9k
dWxlUmVjb3JkOjpSZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3VuZCAmJiByZXNvbHV0aW9uLnR5cGUg
IT0gSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb246OlR5cGU6OkFtYmlndW91cyk7CisKKyAgICBK
U01vZHVsZVJlY29yZCogdGFyZ2V0TW9kdWxlID0gcmVzb2x1dGlvbi5tb2R1bGVSZWNvcmQ7Cisg
ICAgSlNNb2R1bGVFbnZpcm9ubWVudCogdGFyZ2V0RW52aXJvbm1lbnQgPSB0YXJnZXRNb2R1bGUt
Pm1vZHVsZUVudmlyb25tZW50KCk7CisKKyAgICBQcm9wZXJ0eVNsb3QgdHJhbXBvbGluZVNsb3Qo
dGFyZ2V0RW52aXJvbm1lbnQpOworICAgIGlmICghdGFyZ2V0RW52aXJvbm1lbnQtPm1ldGhvZFRh
YmxlKGV4ZWMtPnZtKCkpLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGFyZ2V0RW52aXJvbm1lbnQsIGV4
ZWMsIHJlc29sdXRpb24ubG9jYWxOYW1lLCB0cmFtcG9saW5lU2xvdCkpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAgICBKU1ZhbHVlIHZhbHVlID0g
dHJhbXBvbGluZVNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKTsKKyAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CisKKyAgICAvLyBJZiB0aGUgdmFsdWUgaXMgZmlsbGVkIHdpdGggVERaIHZhbHVl
LCB0aHJvdyB0aGUgcmVmZXJlbmNlIGVycm9yLgorICAgIGlmICghdmFsdWUpCisgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVERaRXJyb3IoZXhlYykpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOworfQorCitib29sIEpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIC8v
IGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1
bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmplY3RzLWdldG93bnByb3BlcnR5LXAKKworICAgIEpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0Kj4oY2VsbCk7CisKKyAgICAvLyBzdGVwIDEuCisgICAgLy8gSWYgdGhlIHByb3BlcnR5
IG5hbWUgaXMgYSBzeW1ib2wsIHdlIGRvbid0IGxvb2sgaW50byB0aGUgaW1wb3J0ZWQgYmluZGlu
Z3MuCisgICAgLy8gSXQgbWF5IHJldHVybiB0aGUgZGVzY3JpcHRvciB3aXRoIHdyaXRhYmxlOiB0
cnVlLCBidXQgbmFtZXNwYWNlIG9iamVjdHMgZG9lcyBub3QgYWxsb3cgaXQgaW4gW1tTZXRdXSAv
IFtbRGVmaW5lT3duUHJvcGVydHldXSBzaWRlLgorICAgIGlmIChwcm9wZXJ0eU5hbWUuaXNTeW1i
b2woKSkKKyAgICAgICAgcmV0dXJuIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKKworICAgIGlmICghdGhpc09iamVjdC0+
bV9leHBvcnRzLmNvbnRhaW5zKHByb3BlcnR5TmFtZS51aWQoKSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIC8vIGh0dHBzOi8vZXNkaXNjdXNzLm9yZy90b3BpYy9tYXJjaC0yNC1tZWV0
aW5nLW5vdGVzCisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEt
MjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMtZ2V0b3ducHJvcGVy
dHktcAorICAgIC8vIHNlY3Rpb24gOS40LjYuNSwgc3RlcCA2LgorICAgIC8vIFRoaXMgcHJvcGVy
dHkgd2lsbCBiZSBzZWVuIGFzIHdyaXRhYmxlOiB0cnVlLCBlbnVtZXJhYmxlOnRydWUsIGNvbmZp
Z3VyYWJsZTogZmFsc2UuCisgICAgLy8gQnV0IHRoaXMgZG9lcyBub3QgbWVhbiB0aGF0IHRoaXMg
cHJvcGVydHkgaXMgd3JpdGFibGUgYnkgdXNlcnMuCisgICAgLy8KKyAgICAvLyBJbiBKU0MsIGdl
dE93blByb3BlcnR5U2xvdCBpcyBub3QgZGVzaWduZWQgdG8gdGhyb3cgYW55IGVycm9ycy4KKyAg
ICAvLyBCdXQgdGhlIGxvb2tpbmcgdXAgdGhlIHZhbHVlIGZyb20gdGhlIG1vZHVsZSBlbnZpcm9u
bWVudCBtYXkgdGhyb3cgZXJyb3IgaWYgdGhlIGxvYWRlZCB2YXJpYWJsZSBpcyBmaWxsZWQgd2l0
aCBURFogdmFsdWUuCisgICAgLy8gVG8gd29ya2Fyb3VuZCwgd2Ugbm93IHNldCB0aGUgY3VzdG9t
IGdldHRlciBmdW5jdGlvbi4gQW5kIHdoZW4gaXQgaXMgY2FsbGVkLCBpdCBsb29rcyB1cCB0aGUg
dmFyaWFibGUgYW5kIHRocm93cyBhbiBlcnJvcgorICAgIC8vIGlmIHRoZSB2YXJpYWJsZSBpcyBu
b3QgaW5pdGlhbGl6ZWQuCisgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwgRG9udERlbGV0
ZSwgY2FsbGJhY2tHZXR0ZXIpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEpTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0OjpwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICAvLyBodHRwOi8vd3d3
LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFj
ZS1leG90aWMtb2JqZWN0cy1zZXQtcC12LXJlY2VpdmVyCisgICAgaWYgKHNsb3QuaXNTdHJpY3RN
b2RlKCkpCisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChTdHJpY3RN
b2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKK30KKwordm9pZCBKU01vZHVsZU5hbWVz
cGFjZU9iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVk
LCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KQoreworICAgIGlmIChzaG91bGRUaHJvdykKKyAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVSZWFkb25s
eVByb3BlcnR5V3JpdGVFcnJvcikpOworfQorCitib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCit7CisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3Jn
L2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMtZGVsZXRl
LXAKKyAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01v
ZHVsZU5hbWVzcGFjZU9iamVjdCo+KGNlbGwpOworICAgIHJldHVybiAhdGhpc09iamVjdC0+bV9l
eHBvcnRzLmNvbnRhaW5zKHByb3BlcnR5TmFtZS51aWQoKSk7Cit9CisKK3ZvaWQgSlNNb2R1bGVO
YW1lc3BhY2VPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9u
TW9kZSBtb2RlKQoreworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9l
Y21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmplY3RzLW93bnByb3Bl
cnR5a2V5cworICAgIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0
PEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Kj4oY2VsbCk7CisgICAgZm9yIChjb25zdCBhdXRvJiBu
YW1lIDogdGhpc09iamVjdC0+bV9leHBvcnRzKQorICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChu
YW1lLmdldCgpKTsKKyAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXModGhp
c09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7Cit9CisKK2Jvb2wgSlNNb2R1bGVO
YW1lc3BhY2VPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hvdWxk
VGhyb3cpCit7CisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEt
MjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMtZGVmaW5lb3ducHJv
cGVydHktcC1kZXNjCisgICAgaWYgKHNob3VsZFRocm93KQorICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gZGVmaW5lIHByb3BlcnR5IG9uIG9i
amVjdCB0aGF0IGlzIG5vdCBleHRlbnNpYmxlLiIpKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3ltYm9s
SXRlcmF0b3IoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+dGhpc1ZhbHVlKCk7CisgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
Inx0aGlzfCBzaG91bGQgYmUgYW4gb2JqZWN0IikpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCktPnByb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlKCksIGFzT2JqZWN0KHRo
aXNWYWx1ZSkpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hMDcyNjUyZTdmNGEyNzFjMDc0YTkyZDQ4NGYwYTE3OWI2OGVkODJmCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VP
YmplY3QuaApAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdF9oCisjZGVmaW5l
IEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0X2gKKworI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LmgiCisjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CisKK25hbWVzcGFjZSBKU0Mgewor
CitjbGFzcyBKU01vZHVsZVJlY29yZDsKKworY2xhc3MgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Qg
OiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNE
ZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5
U2xvdCB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7CisKKyAgICBzdGF0aWMgSlNNb2R1bGVO
YW1lc3BhY2VPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU01vZHVsZVJlY29yZCogbW9kdWxl
UmVjb3JkLCBjb25zdCBJZGVudGlmaWVyU2V0JiBleHBvcnRzKQorICAgIHsKKyAgICAgICAgSlNN
b2R1bGVOYW1lc3BhY2VPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0PihleGVjLT52bSgpLmhlYXApKSBKU01vZHVsZU5hbWVz
cGFjZU9iamVjdChleGVjLT52bSgpLCBzdHJ1Y3R1cmUsIGV4cG9ydHMpOworICAgICAgICBvYmpl
Y3QtPmZpbmlzaENyZWF0aW9uKGV4ZWMtPnZtKCksIGdsb2JhbE9iamVjdCwgbW9kdWxlUmVjb3Jk
KTsKKyAgICAgICAgcmV0dXJuIG9iamVjdDsKKyAgICB9CisKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1
dFByb3BlcnR5U2xvdCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHB1dEJ5
SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVl
LCBib29sIHNob3VsZFRocm93KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJv
b2wgc2hvdWxkVGhyb3cpOworCisgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKKworICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIEpTTW9kdWxlUmVj
b3JkKiBtb2R1bGVSZWNvcmQoKSB7IHJldHVybiBtX21vZHVsZVJlY29yZC5nZXQoKTsgfQorCitw
cm90ZWN0ZWQ6CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgSlNNb2R1bGVSZWNvcmQqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBKU01vZHVsZU5hbWVzcGFjZU9iamVjdChWTSYsIFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZp
ZXJTZXQmIGV4cG9ydHMpOworCitwcml2YXRlOgorICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlND
ZWxsKik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRv
ciYpOworCisgICAgdHlwZWRlZiBXVEY6Okxpc3RIYXNoU2V0PFJlZlB0cjxVbmlxdWVkU3RyaW5n
SW1wbD4sIElkZW50aWZpZXJSZXBIYXNoPiBPcmRlcmVkSWRlbnRpZmllclNldDsKKworICAgIE9y
ZGVyZWRJZGVudGlmaWVyU2V0IG1fZXhwb3J0czsKKyAgICBXcml0ZUJhcnJpZXI8SlNNb2R1bGVS
ZWNvcmQ+IG1fbW9kdWxlUmVjb3JkOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRp
ZiAvLyBKU01vZHVsZU5hbWVzcGFjZU9iamVjdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKaW5kZXggM2JhZjViYjg3NzEwNGE0ZjJlNTEy
ODc2ZDdkZWJkNDEwNTNlNjRjYy4uMzJkOWM3MDZkMGMyZDRlM2NiMGYwOTA1MDZmZmRjNmE0MGEw
MTZiYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVS
ZWNvcmQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVj
b3JkLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKICNp
bmNsdWRlICJKU01hcC5oIgogI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKKyNpbmNs
dWRlICJKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5s
aW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKIApAQCAtNjIsNiArNjMsNyBA
QCB2b2lkIEpTTW9kdWxlUmVjb3JkOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCiAgICAgSlNNb2R1bGVSZWNvcmQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNNb2R1bGVSZWNvcmQqPihjZWxsKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmpl
Y3QsIHZpc2l0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZUVu
dmlyb25tZW50KTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVOYW1l
c3BhY2VPYmplY3QpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9kZXBl
bmRlbmNpZXNNYXApOwogfQpAQCAtNDIxLDYgKzQyMyw3NSBAQCBhdXRvIEpTTW9kdWxlUmVjb3Jk
OjpyZXNvbHZlRXhwb3J0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgZXhwb3J0
TmFtZQogICAgIHJldHVybiByZXNvbHZlRXhwb3J0TG9vcChleGVjLCBSZXNvbHZlUXVlcnkodGhp
cywgZXhwb3J0TmFtZS5pbXBsKCkpKTsKIH0KIAorc3RhdGljIHZvaWQgZ2V0RXhwb3J0ZWROYW1l
cyhFeGVjU3RhdGUqIGV4ZWMsIEpTTW9kdWxlUmVjb3JkKiByb290LCBJZGVudGlmaWVyU2V0JiBl
eHBvcnRlZE5hbWVzKQoreworICAgIEhhc2hTZXQ8SlNNb2R1bGVSZWNvcmQqPiBleHBvcnRTdGFy
U2V0OworICAgIFZlY3RvcjxKU01vZHVsZVJlY29yZCosIDg+IHBlbmRpbmdNb2R1bGVzOworCisg
ICAgcGVuZGluZ01vZHVsZXMuYXBwZW5kKHJvb3QpOworCisgICAgd2hpbGUgKCFwZW5kaW5nTW9k
dWxlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCA9
IHBlbmRpbmdNb2R1bGVzLnRha2VMYXN0KCk7CisgICAgICAgIGlmIChleHBvcnRTdGFyU2V0LmNv
bnRhaW5zKG1vZHVsZVJlY29yZCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgZXhw
b3J0U3RhclNldC5hZGQobW9kdWxlUmVjb3JkKTsKKworICAgICAgICBmb3IgKGNvbnN0IGF1dG8m
IHBhaXIgOiBtb2R1bGVSZWNvcmQtPmV4cG9ydEVudHJpZXMoKSkgeworICAgICAgICAgICAgY29u
c3QgYXV0byYgZXhwb3J0RW50cnkgPSBwYWlyLnZhbHVlOworICAgICAgICAgICAgc3dpdGNoIChl
eHBvcnRFbnRyeS50eXBlKSB7CisgICAgICAgICAgICBjYXNlIEpTTW9kdWxlUmVjb3JkOjpFeHBv
cnRFbnRyeTo6VHlwZTo6TG9jYWw6CisgICAgICAgICAgICBjYXNlIEpTTW9kdWxlUmVjb3JkOjpF
eHBvcnRFbnRyeTo6VHlwZTo6SW5kaXJlY3Q6CisgICAgICAgICAgICAgICAgaWYgKG1vZHVsZVJl
Y29yZCA9PSByb290IHx8IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5kZWZhdWx0S2V5d29yZCAhPSBl
eHBvcnRFbnRyeS5leHBvcnROYW1lKQorICAgICAgICAgICAgICAgICAgICBleHBvcnRlZE5hbWVz
LmFkZChleHBvcnRFbnRyeS5leHBvcnROYW1lLmltcGwoKSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgIGNhc2UgSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpUeXBl
OjpOYW1lc3BhY2U6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHN0YXJNb2R1bGVOYW1lIDogbW9kdWxl
UmVjb3JkLT5zdGFyRXhwb3J0RW50cmllcygpKSB7CisgICAgICAgICAgICBKU01vZHVsZVJlY29y
ZCogcmVxdWVzdGVkTW9kdWxlUmVjb3JkID0gbW9kdWxlUmVjb3JkLT5ob3N0UmVzb2x2ZUltcG9y
dGVkTW9kdWxlKGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgc3Rhck1vZHVsZU5hbWUu
Z2V0KCkpKTsKKyAgICAgICAgICAgIHBlbmRpbmdNb2R1bGVzLmFwcGVuZChyZXF1ZXN0ZWRNb2R1
bGVSZWNvcmQpOworICAgICAgICB9CisgICAgfQorfQorCitKU01vZHVsZU5hbWVzcGFjZU9iamVj
dCogSlNNb2R1bGVSZWNvcmQ6OmdldE1vZHVsZU5hbWVzcGFjZShFeGVjU3RhdGUqIGV4ZWMpCit7
CisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8j
c2VjLWdldG1vZHVsZW5hbWVzcGFjZQorICAgIGlmIChtX21vZHVsZU5hbWVzcGFjZU9iamVjdCkK
KyAgICAgICAgcmV0dXJuIG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0LmdldCgpOworCisgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsK
KyAgICBJZGVudGlmaWVyU2V0IGV4cG9ydGVkTmFtZXM7CisgICAgZ2V0RXhwb3J0ZWROYW1lcyhl
eGVjLCB0aGlzLCBleHBvcnRlZE5hbWVzKTsKKworICAgIElkZW50aWZpZXJTZXQgdW5hbWJpZ3Vv
dXNOYW1lczsKKyAgICBmb3IgKGF1dG8mIG5hbWUgOiBleHBvcnRlZE5hbWVzKSB7CisgICAgICAg
IGNvbnN0IGF1dG8gcmVzb2x1dGlvbiA9IHJlc29sdmVFeHBvcnQoZXhlYywgSWRlbnRpZmllcjo6
ZnJvbVVpZChleGVjLCBuYW1lLmdldCgpKSk7CisgICAgICAgIHN3aXRjaCAocmVzb2x1dGlvbi50
eXBlKSB7CisgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQ6CisgICAgICAg
ICAgICB0aHJvd1N5bnRheEVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIkV4cG9ydGVkIGJpbmRpbmcg
bmFtZSAnIiwgU3RyaW5nKG5hbWUuZ2V0KCkpLCAiJyBpcyBub3QgZm91bmQuIikpOworICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpF
cnJvcjoKKyAgICAgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYywgbWFrZVN0cmluZygiRXhw
b3J0ZWQgYmluZGluZyBuYW1lICdkZWZhdWx0JyBjYW5ub3QgYmUgcmVzb2x2ZWQgYnkgc3RhciBl
eHBvcnQgZW50cmllcy4iKSk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAg
ICBjYXNlIFJlc29sdXRpb246OlR5cGU6OkFtYmlndW91czoKKyAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6UmVzb2x2ZWQ6CisgICAgICAgICAgICB1
bmFtYmlndW91c05hbWVzLmFkZChuYW1lKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgfQorCisgICAgbV9tb2R1bGVOYW1lc3BhY2VPYmplY3Quc2V0KGV4ZWMtPnZtKCksIHRo
aXMsIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBn
bG9iYWxPYmplY3QtPm1vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZSgpLCB0aGlzLCB1bmFt
YmlndW91c05hbWVzKSk7CisgICAgcmV0dXJuIG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0LmdldCgp
OworfQorCiB2b2lkIEpTTW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAg
ICBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IE1vZHVsZVByb2dyYW1FeGVj
dXRhYmxlOjpjcmVhdGUoZXhlYywgc291cmNlQ29kZSgpKTsKQEAgLTQ3OCw4ICs1NDksMTYgQEAg
dm9pZCBKU01vZHVsZVJlY29yZDo6aW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoRXhlY1N0YXRlKiBl
eGVjLCBNb2R1bGVQcm9ncmFtRXhlY3UKICAgICAgICAgY29uc3QgYXV0byYgaW1wb3J0RW50cnkg
PSBwYWlyLnZhbHVlOwogICAgICAgICBKU01vZHVsZVJlY29yZCogaW1wb3J0ZWRNb2R1bGUgPSBo
b3N0UmVzb2x2ZUltcG9ydGVkTW9kdWxlKGV4ZWMsIGltcG9ydEVudHJ5Lm1vZHVsZVJlcXVlc3Qp
OwogICAgICAgICBpZiAoaW1wb3J0RW50cnkuaXNOYW1lc3BhY2Uodm0pKSB7Ci0gICAgICAgICAg
ICAvLyBGSVhNRTogTW9kdWxlTmFtZXNwYWNlT2JqZWN0IHdpbGwgYmUgaW1wbGVtZW50ZWQuCi0g
ICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4
NzA1CisgICAgICAgICAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogbmFtZXNwYWNlT2JqZWN0
ID0gaW1wb3J0ZWRNb2R1bGUtPmdldE1vZHVsZU5hbWVzcGFjZShleGVjKTsKKyAgICAgICAgICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICAvLyBXZSBkb24ndCB1c2UgdGhlIHN5bWJvbFRhYmxlUHV0IGJlY2F1c2UgdGhlc2Ug
YmluZGluZ3MgYXJlIGltbXV0YWJsZS4KKyAgICAgICAgICAgIC8vIEZvciB0aGUgZmlyc3QgaW5p
dGlhbGl6YXRpb24sIHdlIGluaXRpYWxpemUgdGhlIGJpbmRpbmcgc2xvdCBkaXJlY3RseS4KKyAg
ICAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLT5tX2xvY2sp
OworICAgICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlLT5pbmxp
bmVHZXQobG9ja2VyLCBpbXBvcnRFbnRyeS5sb2NhbE5hbWUuaW1wbCgpKTsKKyAgICAgICAgICAg
IFNjb3BlT2Zmc2V0IG9mZnNldCA9IGVudHJ5LnNjb3BlT2Zmc2V0KCk7CisgICAgICAgICAgICBB
U1NFUlQobW9kdWxlRW52aXJvbm1lbnQtPmlzVmFsaWQob2Zmc2V0KSk7CisgICAgICAgICAgICBt
b2R1bGVFbnZpcm9ubWVudC0+dmFyaWFibGVBdChvZmZzZXQpLnNldCh2bSwgbW9kdWxlRW52aXJv
bm1lbnQsIG5hbWVzcGFjZU9iamVjdCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBj
b25zdCBhdXRvIHJlc29sdXRpb24gPSBpbXBvcnRlZE1vZHVsZS0+cmVzb2x2ZUV4cG9ydChleGVj
LCBpbXBvcnRFbnRyeS5pbXBvcnROYW1lKTsKICAgICAgICAgICAgIHN3aXRjaCAocmVzb2x1dGlv
bi50eXBlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01v
ZHVsZVJlY29yZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNv
cmQuaAppbmRleCAwODUyMWI0Y2NkM2IwNGFhZWUwM2IzYjQ0MWEyMWMxZjZkNDE5NjQ3Li43MGEx
OTBmODJjNjc4ZDE4NjFmNTA2ZWQxZDgwZjIyNWJjYzkwZTVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmgKQEAgLTE1Niw2ICsxNTYsOCBAQCBj
bGFzcyBKU01vZHVsZVJlY29yZCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAKICAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CiAKKyAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVj
dCogZ2V0TW9kdWxlTmFtZXNwYWNlKEV4ZWNTdGF0ZSopOworCiAgICAgc3RhdGljIHZvaWQgdmlz
aXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ry
b3koSlNDZWxsKik7CiAKQEAgLTE5OSw2ICsyMDEsNyBAQCBjbGFzcyBKU01vZHVsZVJlY29yZCA6
IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CiAKICAgICBXcml0ZUJhcnJpZXI8TW9kdWxl
UHJvZ3JhbUV4ZWN1dGFibGU+IG1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU7CiAgICAgV3JpdGVC
YXJyaWVyPEpTTW9kdWxlRW52aXJvbm1lbnQ+IG1fbW9kdWxlRW52aXJvbm1lbnQ7CisgICAgV3Jp
dGVCYXJyaWVyPEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0PiBtX21vZHVsZU5hbWVzcGFjZU9iamVj
dDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260562</attachid>
            <date>2015-09-03 21:51:38 -0700</date>
            <delta_ts>2015-09-03 22:00:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148705-20150903215137.patch</filename>
            <type>text/plain</type>
            <size>34429</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MzM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NDBiZjg0MWRmNjBjN2I2YjU5YjA4MGMxNTJjODgyNDEwN2M1MWUxLi40MTkwY2I3YzAwN2JhZGU1
YTI2NmYwNTdkYTUyMmZmYzUwY2M0ODQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw1MCBAQAogMjAxNS0wOS0wMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBbRVM2XSBJbXBsZW1lbnQgTW9kdWxlTmFtZXNwYWNlT2JqZWN0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg3MDUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQg
TW9kdWxlIG5hbWVzcGFjZSBvYmplY3QuCisgICAgICAgIFRoYXQgaXMgdXNlZCB3aGVuIGltcG9y
dGluZyB0aGUgbW9kdWxlIHdpdGggdGhlIGZvcm0gYGltcG9ydCAqIGFzIG5hbWVzcGFjZSBmcm9t
ICJtb2QiYC4KKyAgICAgICAgVGhlIG1vZHVsZSBuYW1lc3BhY2Ugb2JqZWN0IGlzIG5vbi1leHRl
bnNpYmxlIG9iamVjdCB0aGF0IGhhcyB0aGUgYmluZGluZ3MgdG8gdGhlIG9yaWdpbmFsIG1vZHVs
ZQorICAgICAgICBhcyB0aGUgcHJvcGVydHkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
LmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJl
KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcDogQWRkZWQu
CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpKU01vZHVsZU5hbWVzcGFj
ZU9iamVjdCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpkZXN0cm95
KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAoSlNDOjpjYWxsYmFja0dldHRlcik6CisgICAgICAgIChKU0M6OkpTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU01v
ZHVsZU5hbWVzcGFjZU9iamVjdDo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3Bh
Y2VPYmplY3Q6OnB1dEJ5SW5kZXgpOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFjZU9i
amVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFjZU9i
amVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6Om1vZHVsZU5hbWVz
cGFjZU9iamVjdFN5bWJvbEl0ZXJhdG9yKToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFjZU9i
amVjdDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmNy
ZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Ojpt
b2R1bGVSZWNvcmQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwOgorICAg
ICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6
OmdldEV4cG9ydGVkTmFtZXMpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6Z2V0TW9k
dWxlTmFtZXNwYWNlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6Omluc3RhbnRpYXRl
RGVjbGFyYXRpb25zKToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmg6CisKKzIw
MTUtMDktMDMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKICAgICAg
ICAgW0VTNl0gSW5zdGFudGlhdGUgTW9kdWxlIEVudmlyb25tZW50IGJpbmRpbmdzIGFuZCBleGVj
dXRlIG1vZHVsZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ4MDUzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBjMThhMzE4
NTQwYmY0MDcxOGIzMDk3MmJhMmNmZGNmNjM2ZmU4MTk1Li4zNjgxNGI4OGVmMjg2OTZlZGM2Yzll
NzJmNGVjNjBkMTI0YjE3YjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBA
IC01NDAsNiArNTQwLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1JVTlRJTUVfU09VUkNFUwogICAg
IHJ1bnRpbWUvSlNNYXAuY3BwCiAgICAgcnVudGltZS9KU01hcEl0ZXJhdG9yLmNwcAogICAgIHJ1
bnRpbWUvSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAKKyAgICBydW50aW1lL0pTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCiAgICAgcnVudGlt
ZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcAogICAgIHJ1bnRpbWUvSlNOb3RBbk9iamVjdC5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDI1MzkwZmI0ZjNmMGFl
MGJkOWE1MmJmNzI4YjI2NTE4NGQ3NjgyZDQuLjljMjkyZDc2MmYxN2QyYWRhOWRhOWI0ZGQ2Y2Jk
NTkzZjZmZTg0NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAt
Nzg5LDYgKzc4OSw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTWFw
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNYXBJdGVyYXRv
ci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTW9kdWxlRW52
aXJvbm1lbnQuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01v
ZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTTW9kdWxlUmVjb3JkLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxydW50aW1lXEpTTm90QW5PYmplY3QuY3BwIiAvPgpAQCAtMTY0Niw2ICsxNjQ3LDcg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNYXAuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNYXBJdGVyYXRvci5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01vZHVsZUVudmlyb25tZW50LmgiIC8+Cisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTW9kdWxlUmVjb3Jk
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTmF0aXZlU3RkRnVu
Y3Rpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNOb3RBbk9i
amVjdC5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5m
aWx0ZXJzCmluZGV4IGNjMTNmMmM4MjVlODQ0OWM3ZTA0N2EwNTVmZmRhMjhlYzhhOTBhM2IuLmRj
OTYyYmRlZWYwNjAzM2JhYjM3MjNiYWJmMWZhNmM0YmFlODFjOGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTczMiw2ICs3MzIsOSBA
QAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01vZHVsZUVudmlyb25tZW50
LmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QuY3BwIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxl
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01vZHVsZVJlY29yZC5jcHAi
PgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0z
NTE3LDYgKzM1MjAsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01v
ZHVsZUVudmlyb25tZW50LmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAg
PC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAg
PC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTW9kdWxl
UmVjb3JkLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1
ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk4NjdlODY2NDEyZDZlOGQ0Zjhh
N2JmZjM4ZWE2MTM1YmE1NmZkYWQuLmE3YjE4OTQyZGI4ZWJiYTRiM2NhYzQwYTg2OTQ4ZTcxYWQ2
ZTU2MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzA1LDYgKzE3MDUsOCBA
QAogCQlFMTI0QThGODBFNTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyNEE4RjYwRTU1NTc3
NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmNwcCAqLzsgfTsKIAkJRTE4RTNBNTkwREY5Mjc4
QzAwRDkwQjM0IC8qIFZNLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUxOEUzQTU3MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgKi87IH07CiAJCUUz
MDY3Nzk4MUI4QkM2RjUwMDNGODdGMCAvKiBNb2R1bGVMb2FkZXJPYmplY3QuanMgaW4gUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMDY3Nzk3MUI4QkM2RjUw
MDNGODdGMCAvKiBNb2R1bGVMb2FkZXJPYmplY3QuanMgKi87IH07CisJCUUzMThDQkMwMUI4QUVG
NTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzE4Q0JCRTFCOEFFRjUxMDBBMjkyOUQg
LyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwICovOyB9OworCQlFMzE4Q0JDMTFCOEFFRjUx
MDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMThDQkJGMUI4QUVGNTEwMEEyOTI5RCAvKiBK
U01vZHVsZU5hbWVzcGFjZU9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUUzMzYzN0E1MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2Jq
ZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
MzYzN0EzMUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmNwcCAqLzsgfTsKIAkJRTMz
NjM3QTYxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMzYzN0E0MUI2MzIyMDIwMEVFMDg0MCAv
KiBSZWZsZWN0T2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTMzQjNFMjYxQjdBQkQ3NTAwNDhEQjJFIC8qIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbk9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzM0IzRTI1MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25PYmplY3QubHV0LmggKi87IH07CkBAIC0zNTcxLDYgKzM1NzMsOCBAQAogCQlFMThFM0E1
NjBERjkyNzhDMDBEOTBCMzQgLyogVk0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBsaW5l
RW5kaW5nID0gMDsgcGF0aCA9IFZNLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3Vh
Z2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcub2JqY3BwOyB9OwogCQlFMThF
M0E1NzBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBsaW5lRW5kaW5nID0gMDsgcGF0aCA9IFZNLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5jcHA7IH07
CiAJCUUzMDY3Nzk3MUI4QkM2RjUwMDNGODdGMCAvKiBNb2R1bGVMb2FkZXJPYmplY3QuanMgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBNb2R1bGVMb2FkZXJPYmplY3Qu
anM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzMThDQkJFMUI4QUVGNTEwMEEyOTI5
RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUzMThDQkJGMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVz
cGFjZU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZU5h
bWVzcGFjZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzM2MzdBMzFC
NjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZWZsZWN0T2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTMzNjM3QTQxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVmbGVjdE9iamVjdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzNCM0UyNTFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC00Nzk3LDYgKzQ4MDEsOCBAQAogCQkJCUE3NERFRjkwMTgyRDk5MTQw
MDUyMkMyMiAvKiBKU01hcEl0ZXJhdG9yLmggKi8sCiAJCQkJRTNEMjM5QzYxQjgyOUMxQzAwQkJF
RjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwICovLAogCQkJCUUzRDIzOUM3MUI4MjlDMUMw
MEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggKi8sCisJCQkJRTMxOENCQkUxQjhBRUY1
MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCAqLywKKwkJCQlFMzE4Q0JC
RjFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCAqLywKIAkJCQlF
MzlEQTRBNDFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwICovLAogCQkJCUUz
OURBNEE1MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oICovLAogCQkJCUUzM0U4
RDFBMUI5MDEzQzMwMDM0NkI1MiAvKiBKU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcCAqLywKQEAgLTYy
OTcsNiArNjMwMyw3IEBACiAJCQkJN0IwMjQ3NTcxQjg2ODJFNDAwNTQyNDQwIC8qIFdBU01GdW5j
dGlvblBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMTAxNzA1MTNEQjAwQkI3MjJD
IC8qIEZUTExvd2VyREZHVG9MTFZNLmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0Q4OUQwMjE3QTBC
OTA0MDA3NzNBRDggLyogRlRMTG93ZXJlZE5vZGVWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RTMxOENCQzExQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkQ4QTMxQzE3RDUxRjIyMDBDQTJDNDAgLyogRlRMT1NSRW50cnku
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkREMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExPU1JF
eGl0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJERTE3MTc4RTFDMDA2OTBDN0YgLyogRlRM
T1NSRXhpdENvbXBpbGF0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8sCkBAIC03NDkyLDYgKzc0OTks
NyBAQAogCQkJCTBGRDEyMDMzMUE4Qzg1QkQwMDBGNTI4MCAvKiBGVExKU0NhbGxWYXJhcmdzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGOUQzMzk2MTdGRkM0RTYwMDczQzJCQyAvKiBERkdGbHVz
aGVkQXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTMzRjUwODQxQjg0MzdBMDAwNDEzODU2IC8q
IEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTMxOENC
QzAxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGOUQzNjk0MUFFOUNDMzMwMDBENERGQiAvKiBERkdDbGVhblVwUGhhc2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdEODlDRjcxN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Zs
dXNoRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0JEMUI3MUI4OTZBMDcwMDU5OEFB
NiAvKiBERkdJbnNlcnRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMGU3N2NkMjg4OWNl
YjhiYmYxMDc2MGUyZWEzMjVhNWU5NDQ1YWRmNi4uMDNlODliOWQxZDU0YTA0ZTA2ZjA1Y2MxYmRj
ODMzNGMxNDRhZDE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcApAQCAtODUsNiArODUsNyBAQAogI2luY2x1ZGUgIkpTTWFwLmgiCiAj
aW5jbHVkZSAiSlNNYXBJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQu
aCIKKyNpbmNsdWRlICJKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIgogI2luY2x1ZGUgIkpTTW9k
dWxlUmVjb3JkLmgiCiAjaW5jbHVkZSAiSlNOYXRpdmVTdGRGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkpTT05PYmplY3QuaCIKQEAgLTM1MSw2ICszNTIsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojpp
bml0KFZNJiB2bSkKICAgICBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZS5zZXQodm0sIHRo
aXMsIGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSh2bSwgKnRoaXMpKTsKIAogICAg
IG1fbW9kdWxlUmVjb3JkU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNNb2R1bGVSZWNvcmQ6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKKyAgICBt
X21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGpzTnVsbCgpKSk7CiAgICAg
CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIG1fd2FzbU1vZHVsZVN0cnVjdHVyZS5zZXQo
dm0sIHRoaXMsIEpTV0FTTU1vZHVsZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzKSk7CkBAIC04
MjQsNiArODI2LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwq
IGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX3JlZ0V4cFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3Qt
Pm1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhp
c09iamVjdC0+bV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZSk7CiAgICAgdmlzaXRv
ci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY29uc29sZVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fZG9sbGFyVk1TdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tX2ludGVybmFsRnVuY3Rpb25TdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggZWM2NmMxYTll
YzNjOWM1M2UxOGUwNjcwYWVjY2I1ZGE5ZWFkMjIzOC4uZGNiM2EwODdmNzk5YmY2YmQyYzRhNjYz
Njg2MDg0MzFmMWJiNGRlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCkBAIC0yNjgsNiArMjY4LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Qg
OiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9pdGVyYXRvclJlc3VsdFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8
U3RydWN0dXJlPiBtX21vZHVsZVJlY29yZFN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZTsKICNpZiBFTkFCTEUoV0VC
QVNTRU1CTFkpCiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV93YXNtTW9kdWxlU3RydWN0
dXJlOwogI2VuZGlmCkBAIC01MDYsNiArNTA3LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBw
dWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgc3RhdGljIHB0cmRpZmZfdCBp
dGVyYXRvclJlc3VsdFN0cnVjdHVyZU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihK
U0dsb2JhbE9iamVjdCwgbV9pdGVyYXRvclJlc3VsdFN0cnVjdHVyZSk7IH0KICAgICBTdHJ1Y3R1
cmUqIHJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhw
TWF0Y2hlc0FycmF5U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBtb2R1bGVSZWNv
cmRTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZVJlY29yZFN0cnVjdHVyZS5nZXQo
KTsgfQorICAgIFN0cnVjdHVyZSogbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgU3RydWN0dXJlKiB3YXNtTW9kdWxlU3RydWN0dXJl
KCkgY29uc3QgeyByZXR1cm4gbV93YXNtTW9kdWxlU3RydWN0dXJlLmdldCgpOyB9CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMDFkMTY5ZmUwOGQ3YjliNjQxNDAxYWRjZTRm
MWE0MzY5MDNmMThjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwCkBAIC0wLDAgKzEsMTkwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgiCisKKyNpbmNsdWRlICJF
cnJvci5oIgorI2luY2x1ZGUgIklkZW50aWZpZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSlNW
YWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNN
b2R1bGVFbnZpcm9ubWVudC5oIgorI2luY2x1ZGUgIkpTTW9kdWxlUmVjb3JkLmgiCisjaW5jbHVk
ZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgorI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5l
cy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZU5hbWVzcGFjZU9iamVj
dFN5bWJvbEl0ZXJhdG9yKEV4ZWNTdGF0ZSopOworCitjb25zdCBDbGFzc0luZm8gSlNNb2R1bGVO
YW1lc3BhY2VPYmplY3Q6OnNfaW5mbyA9IHsgIk1vZHVsZU5hbWVzcGFjZU9iamVjdCIsICZCYXNl
OjpzX2luZm8sIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNNb2R1bGVOYW1lc3BhY2VP
YmplY3QpIH07CisKKworSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OkpTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXJTZXQm
IGV4cG9ydHMpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgLCBtX2V4cG9ydHMoKQor
eworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAv
I3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmplY3RzCisgICAgLy8gPiBBIExpc3QgY29u
dGFpbmluZyB0aGUgU3RyaW5nIHZhbHVlcyBvZiB0aGUgZXhwb3J0ZWQgbmFtZXMgZXhwb3NlZCBh
cyBvd24gcHJvcGVydGllcyBvZiB0aGlzIG9iamVjdC4KKyAgICAvLyA+IFRoZSBsaXN0IGlzIG9y
ZGVyZWQgYXMgaWYgYW4gQXJyYXkgb2YgdGhvc2UgU3RyaW5nIHZhbHVlcyBoYWQgYmVlbiBzb3J0
ZWQgdXNpbmcgQXJyYXkucHJvdG90eXBlLnNvcnQgdXNpbmcgU29ydENvbXBhcmUgYXMgY29tcGFy
ZWZuLgorICAgIFZlY3RvcjxVbmlxdWVkU3RyaW5nSW1wbCo+IHRlbXBvcmFyeVZlY3RvcihleHBv
cnRzLnNpemUoKSwgbnVsbHB0cik7CisgICAgc3RkOjp0cmFuc2Zvcm0oZXhwb3J0cy5iZWdpbigp
LCBleHBvcnRzLmVuZCgpLCB0ZW1wb3JhcnlWZWN0b3IuYmVnaW4oKSwgW10oY29uc3QgUmVmUHRy
PFdURjo6VW5pcXVlZFN0cmluZ0ltcGw+JiByZWYpIHsKKyAgICAgICAgcmV0dXJuIHJlZi5nZXQo
KTsKKyAgICB9KTsKKyAgICBzdGQ6OnNvcnQodGVtcG9yYXJ5VmVjdG9yLmJlZ2luKCksIHRlbXBv
cmFyeVZlY3Rvci5lbmQoKSwgW10gKFVuaXF1ZWRTdHJpbmdJbXBsKiBsaHMsIFVuaXF1ZWRTdHJp
bmdJbXBsKiByaHMpIHsKKyAgICAgICAgcmV0dXJuIGNvZGVQb2ludENvbXBhcmUobGhzLCByaHMp
IDwgMDsKKyAgICB9KTsKKyAgICBmb3IgKGF1dG8qIGlkZW50aWZpZXIgOiB0ZW1wb3JhcnlWZWN0
b3IpCisgICAgICAgIG1fZXhwb3J0cy5hZGQoaWRlbnRpZmllcik7Cit9CisKK3ZvaWQgSlNNb2R1
bGVOYW1lc3BhY2VPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCkKK3sKKyAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworICAg
IG1fbW9kdWxlUmVjb3JkLnNldCh2bSwgdGhpcywgbW9kdWxlUmVjb3JkKTsKKyAgICBKU0NfTkFU
SVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBtb2R1bGVOYW1l
c3BhY2VPYmplY3RTeW1ib2xJdGVyYXRvciwgRG9udEVudW0sIDApOworCisgICAgLy8gaHR0cDov
L3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1l
c3BhY2UtZXhvdGljLW9iamVjdHMtZ2V0cHJvdG90eXBlb2YKKyAgICAvLyBodHRwOi8vd3d3LmVj
bWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1l
eG90aWMtb2JqZWN0cy1zZXRwcm90b3R5cGVvZi12CisgICAgLy8gaHR0cDovL3d3dy5lY21hLWlu
dGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGlj
LW9iamVjdHMtaXNleHRlbnNpYmxlCisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9u
YWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMt
cHJldmVudGV4dGVuc2lvbnMKKyAgICBwcmV2ZW50RXh0ZW5zaW9ucyh2bSk7Cit9CisKK3ZvaWQg
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQoreworICAgIEpT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0Kj4oY2VsbCk7CisgICAgdGhpc09iamVjdC0+SlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3Q6On5KU01vZHVsZU5hbWVzcGFjZU9iamVjdCgpOworfQorCit2b2lkIEpTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCit7CisgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlz
T2JqZWN0LCB2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1
bGVSZWNvcmQpOworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgY2FsbGJhY2tHZXR0ZXIoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCosIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkKK3sKKyAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZU5hbWVzcGFjZU9iamVjdCo+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKKyAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkID0gdGhpc09i
amVjdC0+bW9kdWxlUmVjb3JkKCk7CisKKyAgICBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbiBy
ZXNvbHV0aW9uID0gbW9kdWxlUmVjb3JkLT5yZXNvbHZlRXhwb3J0KGV4ZWMsIElkZW50aWZpZXI6
OmZyb21VaWQoZXhlYywgcHJvcGVydHlOYW1lLnVpZCgpKSk7CisgICAgQVNTRVJUKHJlc29sdXRp
b24udHlwZSAhPSBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQgJiYg
cmVzb2x1dGlvbi50eXBlICE9IEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOjpUeXBlOjpBbWJp
Z3VvdXMpOworCisgICAgSlNNb2R1bGVSZWNvcmQqIHRhcmdldE1vZHVsZSA9IHJlc29sdXRpb24u
bW9kdWxlUmVjb3JkOworICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIHRhcmdldEVudmlyb25tZW50
ID0gdGFyZ2V0TW9kdWxlLT5tb2R1bGVFbnZpcm9ubWVudCgpOworCisgICAgUHJvcGVydHlTbG90
IHRyYW1wb2xpbmVTbG90KHRhcmdldEVudmlyb25tZW50KTsKKyAgICBpZiAoIXRhcmdldEVudmly
b25tZW50LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlTbG90KHRhcmdl
dEVudmlyb25tZW50LCBleGVjLCByZXNvbHV0aW9uLmxvY2FsTmFtZSwgdHJhbXBvbGluZVNsb3Qp
KQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAg
SlNWYWx1ZSB2YWx1ZSA9IHRyYW1wb2xpbmVTbG90LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFt
ZSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgLy8gSWYgdGhlIHZhbHVlIGlzIGZpbGxl
ZCB3aXRoIFREWiB2YWx1ZSwgdGhyb3cgdGhlIHJlZmVyZW5jZSBlcnJvci4KKyAgICBpZiAoIXZh
bHVlKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVREWkVycm9yKGV4
ZWMpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsKK30KKworYm9vbCBKU01v
ZHVsZU5hbWVzcGFjZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBjZWxsLCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYg
c2xvdCkKK3sKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0y
NjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90aWMtb2JqZWN0cy1nZXRvd25wcm9wZXJ0
eS1wCisKKyAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxK
U01vZHVsZU5hbWVzcGFjZU9iamVjdCo+KGNlbGwpOworCisgICAgLy8gc3RlcCAxLgorICAgIC8v
IElmIHRoZSBwcm9wZXJ0eSBuYW1lIGlzIGEgc3ltYm9sLCB3ZSBkb24ndCBsb29rIGludG8gdGhl
IGltcG9ydGVkIGJpbmRpbmdzLgorICAgIC8vIEl0IG1heSByZXR1cm4gdGhlIGRlc2NyaXB0b3Ig
d2l0aCB3cml0YWJsZTogdHJ1ZSwgYnV0IG5hbWVzcGFjZSBvYmplY3RzIGRvZXMgbm90IGFsbG93
IGl0IGluIFtbU2V0XV0gLyBbW0RlZmluZU93blByb3BlcnR5XV0gc2lkZS4KKyAgICBpZiAocHJv
cGVydHlOYW1lLmlzU3ltYm9sKCkpCisgICAgICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJv
cGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisKKyAgICBp
ZiAoIXRoaXNPYmplY3QtPm1fZXhwb3J0cy5jb250YWlucyhwcm9wZXJ0eU5hbWUudWlkKCkpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBodHRwczovL2VzZGlzY3Vzcy5vcmcvdG9w
aWMvbWFyY2gtMjQtbWVldGluZy1ub3RlcworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5h
dGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmpl
Y3RzLWdldG93bnByb3BlcnR5LXAKKyAgICAvLyBzZWN0aW9uIDkuNC42LjUsIHN0ZXAgNi4KKyAg
ICAvLyBUaGlzIHByb3BlcnR5IHdpbGwgYmUgc2VlbiBhcyB3cml0YWJsZTogdHJ1ZSwgZW51bWVy
YWJsZTp0cnVlLCBjb25maWd1cmFibGU6IGZhbHNlLgorICAgIC8vIEJ1dCB0aGlzIGRvZXMgbm90
IG1lYW4gdGhhdCB0aGlzIHByb3BlcnR5IGlzIHdyaXRhYmxlIGJ5IHVzZXJzLgorICAgIC8vCisg
ICAgLy8gSW4gSlNDLCBnZXRPd25Qcm9wZXJ0eVNsb3QgaXMgbm90IGRlc2lnbmVkIHRvIHRocm93
IGFueSBlcnJvcnMuIEJ1dCB0aGUgbG9va2luZyB1cCB0aGUgdmFsdWUgZnJvbSB0aGUgbW9kdWxl
CisgICAgLy8gZW52aXJvbm1lbnQgbWF5IHRocm93IGVycm9yIGlmIHRoZSBsb2FkZWQgdmFyaWFi
bGUgaXMgZmlsbGVkIHdpdGggVERaIHZhbHVlLiBUbyB3b3JrYXJvdW5kLCB3ZSBub3cgc2V0IHRo
ZSBjdXN0b20KKyAgICAvLyBnZXR0ZXIgZnVuY3Rpb24uIEFuZCB3aGVuIGl0IGlzIGNhbGxlZCwg
aXQgbG9va3MgdXAgdGhlIHZhcmlhYmxlIGFuZCB0aHJvd3MgYW4gZXJyb3IgaWYgdGhlIHZhcmlh
YmxlIGlzIG5vdCBpbml0aWFsaXplZC4KKyAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBE
b250RGVsZXRlLCBjYWxsYmFja0dldHRlcik7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQg
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OnB1dChKU0NlbGwqLCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQoreworICAgIC8vIGh0
dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUt
bmFtZXNwYWNlLWV4b3RpYy1vYmplY3RzLXNldC1wLXYtcmVjZWl2ZXIKKyAgICBpZiAoc2xvdC5p
c1N0cmljdE1vZGUoKSkKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOworfQorCit2b2lkIEpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0OjpwdXRCeUluZGV4KEpTQ2VsbCosIEV4ZWNTdGF0ZSogZXhlYywg
dW5zaWduZWQsIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCit7CisgICAgaWYgKHNob3VsZFRo
cm93KQorICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoU3RyaWN0TW9k
ZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7Cit9CisKK2Jvb2wgSlNNb2R1bGVOYW1lc3Bh
Y2VPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkKK3sKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRp
b25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90aWMtb2JqZWN0
cy1kZWxldGUtcAorICAgIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Kj4oY2VsbCk7CisgICAgcmV0dXJuICF0aGlzT2Jq
ZWN0LT5tX2V4cG9ydHMuY29udGFpbnMocHJvcGVydHlOYW1lLnVpZCgpKTsKK30KKwordm9pZCBK
U01vZHVsZU5hbWVzcGFjZU9iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogY2Vs
bCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51
bWVyYXRpb25Nb2RlIG1vZGUpCit7CisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9u
YWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMt
b3ducHJvcGVydHlrZXlzCisgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqPihjZWxsKTsKKyAgICBmb3IgKGNvbnN0
IGF1dG8mIG5hbWUgOiB0aGlzT2JqZWN0LT5tX2V4cG9ydHMpCisgICAgICAgIHByb3BlcnR5TmFt
ZXMuYWRkKG5hbWUuZ2V0KCkpOworICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlO
YW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKK30KKworYm9vbCBK
U01vZHVsZU5hbWVzcGFjZU9iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlwdG9yJiwgYm9v
bCBzaG91bGRUaHJvdykKK3sKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5v
cmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90aWMtb2JqZWN0cy1kZWZp
bmVvd25wcm9wZXJ0eS1wLWRlc2MKKyAgICBpZiAoc2hvdWxkVGhyb3cpCisgICAgICAgIHRocm93
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBkZWZpbmUgcHJvcGVy
dHkgb24gb2JqZWN0IHRoYXQgaXMgbm90IGV4dGVuc2libGUuIikpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVOYW1lc3BhY2VPYmpl
Y3RTeW1ib2xJdGVyYXRvcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT50aGlzVmFsdWUoKTsKKyAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgifHRoaXN8IHNob3VsZCBiZSBhbiBvYmplY3QiKSkpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKS0+cHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmUoKSwgYXNP
YmplY3QodGhpc1ZhbHVlKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmEwNzI2NTJlN2Y0YTI3MWMwNzRhOTJkNDg0ZjBhMTc5YjY4ZWQ4MmYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5h
bWVzcGFjZU9iamVjdC5oCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0X2gK
KyNkZWZpbmUgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3RfaAorCisjaW5jbHVkZSAiSlNEZXN0cnVj
dGlibGVPYmplY3QuaCIKKyNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KKworbmFtZXNwYWNl
IEpTQyB7CisKK2NsYXNzIEpTTW9kdWxlUmVjb3JkOworCitjbGFzcyBKU01vZHVsZU5hbWVzcGFj
ZU9iamVjdCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7CitwdWJsaWM6CisgICAgdHlw
ZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVzR2V0T3du
UHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lczsKKworICAgIHN0YXRpYyBK
U01vZHVsZU5hbWVzcGFjZU9iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTTW9kdWxlUmVjb3Jk
KiBtb2R1bGVSZWNvcmQsIGNvbnN0IElkZW50aWZpZXJTZXQmIGV4cG9ydHMpCisgICAgeworICAg
ICAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q+KGV4ZWMtPnZtKCkuaGVhcCkpIEpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0KGV4ZWMtPnZtKCksIHN0cnVjdHVyZSwgZXhwb3J0cyk7CisgICAg
ICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+dm0oKSwgZ2xvYmFsT2JqZWN0LCBtb2R1
bGVSZWNvcmQpOworICAgICAgICByZXR1cm4gb2JqZWN0OworICAgIH0KKworICAgIEpTX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIHZvaWQgcHV0KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNW
YWx1ZSwgUHV0UHJvcGVydHlTbG90Jik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZv
aWQgcHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRp
YyBib29sIGRlbGV0ZVByb3BlcnR5KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSk7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2Rl
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBkZWZpbmVPd25Qcm9wZXJ0eShK
U09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlEZXNjcmlw
dG9yJiwgYm9vbCBzaG91bGRUaHJvdyk7CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1
cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5m
byhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgSlNN
b2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCgpIHsgcmV0dXJuIG1fbW9kdWxlUmVjb3JkLmdldCgp
OyB9CisKK3Byb3RlY3RlZDoKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU01vZHVsZVJlY29yZCopOworICAgIEpTX0VYUE9S
VF9QUklWQVRFIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KFZNJiwgU3RydWN0dXJlKiwgY29uc3Qg
SWRlbnRpZmllclNldCYgZXhwb3J0cyk7CisKK3ByaXZhdGU6CisgICAgc3RhdGljIHZvaWQgZGVz
dHJveShKU0NlbGwqKTsKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNs
b3RWaXNpdG9yJik7CisKKyAgICB0eXBlZGVmIFdURjo6TGlzdEhhc2hTZXQ8UmVmUHRyPFVuaXF1
ZWRTdHJpbmdJbXBsPiwgSWRlbnRpZmllclJlcEhhc2g+IE9yZGVyZWRJZGVudGlmaWVyU2V0Owor
CisgICAgT3JkZXJlZElkZW50aWZpZXJTZXQgbV9leHBvcnRzOworICAgIFdyaXRlQmFycmllcjxK
U01vZHVsZVJlY29yZD4gbV9tb2R1bGVSZWNvcmQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MK
KworI2VuZGlmIC8vIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0X2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAppbmRleCAyY2VmYmU5NDAxY2Fk
NjQ3MmM3MWM0MmEwYzg3MDY1MThlZmQyNjRiLi42NWRhODJmOWNhMTdlMTJmMGQ4YWE4YzY4ZmUy
MmZjOGM5ZDBjNzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U01vZHVsZVJlY29yZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNN
b2R1bGVSZWNvcmQuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSlNDZWxsSW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTTWFwLmgiCiAjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5o
IgorI2luY2x1ZGUgIkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2xvdFZp
c2l0b3JJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgogCkBAIC02Miw2
ICs2Myw3IEBAIHZvaWQgSlNNb2R1bGVSZWNvcmQ6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxs
LCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICBKU01vZHVsZVJlY29yZCogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU01vZHVsZVJlY29yZCo+KGNlbGwpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4o
dGhpc09iamVjdCwgdmlzaXRvcik7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
bW9kdWxlRW52aXJvbm1lbnQpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21v
ZHVsZU5hbWVzcGFjZU9iamVjdCk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
bW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX2RlcGVuZGVuY2llc01hcCk7CiB9CkBAIC00MjEsNiArNDIzLDc1IEBAIGF1dG8gSlNNb2R1
bGVSZWNvcmQ6OnJlc29sdmVFeHBvcnQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBleHBvcnROYW1lCiAgICAgcmV0dXJuIHJlc29sdmVFeHBvcnRMb29wKGV4ZWMsIFJlc29sdmVR
dWVyeSh0aGlzLCBleHBvcnROYW1lLmltcGwoKSkpOwogfQogCitzdGF0aWMgdm9pZCBnZXRFeHBv
cnRlZE5hbWVzKEV4ZWNTdGF0ZSogZXhlYywgSlNNb2R1bGVSZWNvcmQqIHJvb3QsIElkZW50aWZp
ZXJTZXQmIGV4cG9ydGVkTmFtZXMpCit7CisgICAgSGFzaFNldDxKU01vZHVsZVJlY29yZCo+IGV4
cG9ydFN0YXJTZXQ7CisgICAgVmVjdG9yPEpTTW9kdWxlUmVjb3JkKiwgOD4gcGVuZGluZ01vZHVs
ZXM7CisKKyAgICBwZW5kaW5nTW9kdWxlcy5hcHBlbmQocm9vdCk7CisKKyAgICB3aGlsZSAoIXBl
bmRpbmdNb2R1bGVzLmlzRW1wdHkoKSkgeworICAgICAgICBKU01vZHVsZVJlY29yZCogbW9kdWxl
UmVjb3JkID0gcGVuZGluZ01vZHVsZXMudGFrZUxhc3QoKTsKKyAgICAgICAgaWYgKGV4cG9ydFN0
YXJTZXQuY29udGFpbnMobW9kdWxlUmVjb3JkKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICBleHBvcnRTdGFyU2V0LmFkZChtb2R1bGVSZWNvcmQpOworCisgICAgICAgIGZvciAoY29u
c3QgYXV0byYgcGFpciA6IG1vZHVsZVJlY29yZC0+ZXhwb3J0RW50cmllcygpKSB7CisgICAgICAg
ICAgICBjb25zdCBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnkmIGV4cG9ydEVudHJ5ID0gcGFp
ci52YWx1ZTsKKyAgICAgICAgICAgIHN3aXRjaCAoZXhwb3J0RW50cnkudHlwZSkgeworICAgICAg
ICAgICAgY2FzZSBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OlR5cGU6OkxvY2FsOgorICAg
ICAgICAgICAgY2FzZSBKU01vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OlR5cGU6OkluZGlyZWN0
OgorICAgICAgICAgICAgICAgIGlmIChtb2R1bGVSZWNvcmQgPT0gcm9vdCB8fCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuZGVmYXVsdEtleXdvcmQgIT0gZXhwb3J0RW50cnkuZXhwb3J0TmFtZSkKKyAg
ICAgICAgICAgICAgICAgICAgZXhwb3J0ZWROYW1lcy5hZGQoZXhwb3J0RW50cnkuZXhwb3J0TmFt
ZS5pbXBsKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIEpT
TW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6VHlwZTo6TmFtZXNwYWNlOgorICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZm9yIChjb25z
dCBhdXRvJiBzdGFyTW9kdWxlTmFtZSA6IG1vZHVsZVJlY29yZC0+c3RhckV4cG9ydEVudHJpZXMo
KSkgeworICAgICAgICAgICAgSlNNb2R1bGVSZWNvcmQqIHJlcXVlc3RlZE1vZHVsZVJlY29yZCA9
IG1vZHVsZVJlY29yZC0+aG9zdFJlc29sdmVJbXBvcnRlZE1vZHVsZShleGVjLCBJZGVudGlmaWVy
Ojpmcm9tVWlkKGV4ZWMsIHN0YXJNb2R1bGVOYW1lLmdldCgpKSk7CisgICAgICAgICAgICBwZW5k
aW5nTW9kdWxlcy5hcHBlbmQocmVxdWVzdGVkTW9kdWxlUmVjb3JkKTsKKyAgICAgICAgfQorICAg
IH0KK30KKworSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIEpTTW9kdWxlUmVjb3JkOjpnZXRNb2R1
bGVOYW1lc3BhY2UoRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1p
bnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1nZXRtb2R1bGVuYW1lc3BhY2UKKyAg
ICBpZiAobV9tb2R1bGVOYW1lc3BhY2VPYmplY3QpCisgICAgICAgIHJldHVybiBtX21vZHVsZU5h
bWVzcGFjZU9iamVjdC5nZXQoKTsKKworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CisgICAgSWRlbnRpZmllclNldCBleHBvcnRl
ZE5hbWVzOworICAgIGdldEV4cG9ydGVkTmFtZXMoZXhlYywgdGhpcywgZXhwb3J0ZWROYW1lcyk7
CisKKyAgICBJZGVudGlmaWVyU2V0IHVuYW1iaWd1b3VzTmFtZXM7CisgICAgZm9yIChhdXRvJiBu
YW1lIDogZXhwb3J0ZWROYW1lcykgeworICAgICAgICBjb25zdCBKU01vZHVsZVJlY29yZDo6UmVz
b2x1dGlvbiByZXNvbHV0aW9uID0gcmVzb2x2ZUV4cG9ydChleGVjLCBJZGVudGlmaWVyOjpmcm9t
VWlkKGV4ZWMsIG5hbWUuZ2V0KCkpKTsKKyAgICAgICAgc3dpdGNoIChyZXNvbHV0aW9uLnR5cGUp
IHsKKyAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpOb3RGb3VuZDoKKyAgICAgICAgICAg
IHRocm93U3ludGF4RXJyb3IoZXhlYywgbWFrZVN0cmluZygiRXhwb3J0ZWQgYmluZGluZyBuYW1l
ICciLCBTdHJpbmcobmFtZS5nZXQoKSksICInIGlzIG5vdCBmb3VuZC4iKSk7CisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBjYXNlIFJlc29sdXRpb246OlR5cGU6OkVycm9y
OgorICAgICAgICAgICAgdGhyb3dTeW50YXhFcnJvcihleGVjLCBtYWtlU3RyaW5nKCJFeHBvcnRl
ZCBiaW5kaW5nIG5hbWUgJ2RlZmF1bHQnIGNhbm5vdCBiZSByZXNvbHZlZCBieSBzdGFyIGV4cG9y
dCBlbnRyaWVzLiIpKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGNh
c2UgUmVzb2x1dGlvbjo6VHlwZTo6QW1iaWd1b3VzOgorICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpSZXNvbHZlZDoKKyAgICAgICAgICAgIHVuYW1i
aWd1b3VzTmFtZXMuYWRkKG5hbWUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBtX21vZHVsZU5hbWVzcGFjZU9iamVjdC5zZXQoZXhlYy0+dm0oKSwgdGhpcywg
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QsIGdsb2Jh
bE9iamVjdC0+bW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlKCksIHRoaXMsIHVuYW1iaWd1
b3VzTmFtZXMpKTsKKyAgICByZXR1cm4gbV9tb2R1bGVOYW1lc3BhY2VPYmplY3QuZ2V0KCk7Cit9
CisKIHZvaWQgSlNNb2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBleGVjKQogewogICAgIE1v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gTW9kdWxlUHJvZ3JhbUV4ZWN1dGFi
bGU6OmNyZWF0ZShleGVjLCBzb3VyY2VDb2RlKCkpOwpAQCAtNDc3LDggKzU0OCwxMCBAQCB2b2lk
IEpTTW9kdWxlUmVjb3JkOjppbnN0YW50aWF0ZURlY2xhcmF0aW9ucyhFeGVjU3RhdGUqIGV4ZWMs
IE1vZHVsZVByb2dyYW1FeGVjdQogICAgICAgICBjb25zdCBJbXBvcnRFbnRyeSYgaW1wb3J0RW50
cnkgPSBwYWlyLnZhbHVlOwogICAgICAgICBKU01vZHVsZVJlY29yZCogaW1wb3J0ZWRNb2R1bGUg
PSBob3N0UmVzb2x2ZUltcG9ydGVkTW9kdWxlKGV4ZWMsIGltcG9ydEVudHJ5Lm1vZHVsZVJlcXVl
c3QpOwogICAgICAgICBpZiAoaW1wb3J0RW50cnkuaXNOYW1lc3BhY2Uodm0pKSB7Ci0gICAgICAg
ICAgICAvLyBGSVhNRTogTW9kdWxlTmFtZXNwYWNlT2JqZWN0IHdpbGwgYmUgaW1wbGVtZW50ZWQu
Ci0gICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ4NzA1CisgICAgICAgICAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogbmFtZXNwYWNlT2Jq
ZWN0ID0gaW1wb3J0ZWRNb2R1bGUtPmdldE1vZHVsZU5hbWVzcGFjZShleGVjKTsKKyAgICAgICAg
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICBzeW1ib2xUYWJsZVB1dChtb2R1bGVFbnZpcm9ubWVudCwgZXhlYywgaW1wb3J0
RW50cnkubG9jYWxOYW1lLCBuYW1lc3BhY2VPYmplY3QsIC8qIHNob3VsZFRocm93UmVhZE9ubHlF
cnJvciAqLyBmYWxzZSwgLyogaWdub3JlUmVhZE9ubHlFcnJvcnMgKi8gdHJ1ZSk7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBSZXNvbHV0aW9uIHJlc29sdXRpb24gPSBpbXBvcnRlZE1v
ZHVsZS0+cmVzb2x2ZUV4cG9ydChleGVjLCBpbXBvcnRFbnRyeS5pbXBvcnROYW1lKTsKICAgICAg
ICAgICAgIHN3aXRjaCAocmVzb2x1dGlvbi50eXBlKSB7CkBAIC01MDksNyArNTgyLDcgQEAgdm9p
ZCBKU01vZHVsZVJlY29yZDo6aW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoRXhlY1N0YXRlKiBleGVj
LCBNb2R1bGVQcm9ncmFtRXhlY3UKICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5
bWJvbFRhYmxlLT5nZXQodmFyaWFibGUua2V5LmdldCgpKTsKICAgICAgICAgVmFyT2Zmc2V0IG9m
ZnNldCA9IGVudHJ5LnZhck9mZnNldCgpOwogICAgICAgICBpZiAoIW9mZnNldC5pc1N0YWNrKCkp
Ci0gICAgICAgICAgICBzeW1ib2xUYWJsZVB1dChtb2R1bGVFbnZpcm9ubWVudCwgZXhlYywgSWRl
bnRpZmllcjo6ZnJvbVVpZChleGVjLCB2YXJpYWJsZS5rZXkuZ2V0KCkpLCBqc1VuZGVmaW5lZCgp
LCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgICAgICBzeW1ib2xUYWJsZVB1dChtb2R1bGVFbnZpcm9u
bWVudCwgZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCB2YXJpYWJsZS5rZXkuZ2V0KCkp
LCBqc1VuZGVmaW5lZCgpLCAvKiBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IgKi8gZmFsc2UsIC8q
IGlnbm9yZVJlYWRPbmx5RXJyb3JzICovIHRydWUpOwogICAgIH0KIAogICAgIC8vIGh0dHA6Ly93
d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGVkZWNsYXJh
dGlvbmluc3RhbnRpYXRpb24KQEAgLTUyOSw3ICs2MDIsNyBAQCB2b2lkIEpTTW9kdWxlUmVjb3Jk
OjppbnN0YW50aWF0ZURlY2xhcmF0aW9ucyhFeGVjU3RhdGUqIGV4ZWMsIE1vZHVsZVByb2dyYW1F
eGVjdQogICAgICAgICAgICAgICAgICAgICB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS0+dHlw
ZVByb2ZpbGluZ0VuZE9mZnNldCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEpTRnVu
Y3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB1bmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZS0+bGluayh2bSwgbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUtPnNvdXJjZSgpKSwg
bW9kdWxlRW52aXJvbm1lbnQpOwotICAgICAgICAgICAgc3ltYm9sVGFibGVQdXQobW9kdWxlRW52
aXJvbm1lbnQsIGV4ZWMsIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLT5uYW1lKCksIGZ1bmN0
aW9uLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgICAgICBzeW1ib2xUYWJsZVB1dChtb2R1bGVFbnZp
cm9ubWVudCwgZXhlYywgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUtPm5hbWUoKSwgZnVuY3Rp
b24sIC8qIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciAqLyBmYWxzZSwgLyogaWdub3JlUmVhZE9u
bHlFcnJvcnMgKi8gdHJ1ZSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oCmluZGV4IDA4NTIxYjRjY2QzYjA0YWFl
ZTAzYjNiNDQxYTIxYzFmNmQ0MTk2NDcuLjcwYTE5MGY4MmM2NzhkMTg2MWY1MDZlZDFkODBmMjI1
YmNjOTBlNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9k
dWxlUmVjb3JkLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVS
ZWNvcmQuaApAQCAtMTU2LDYgKzE1Niw4IEBAIGNsYXNzIEpTTW9kdWxlUmVjb3JkIDogcHVibGlj
IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsK
IAorICAgIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBnZXRNb2R1bGVOYW1lc3BhY2UoRXhlY1N0
YXRlKik7CisKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNp
dG9yJik7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIApAQCAtMTk5LDYgKzIw
MSw3IEBAIGNsYXNzIEpTTW9kdWxlUmVjb3JkIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0
IHsKIAogICAgIFdyaXRlQmFycmllcjxNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZT4gbV9tb2R1bGVQ
cm9ncmFtRXhlY3V0YWJsZTsKICAgICBXcml0ZUJhcnJpZXI8SlNNb2R1bGVFbnZpcm9ubWVudD4g
bV9tb2R1bGVFbnZpcm9ubWVudDsKKyAgICBXcml0ZUJhcnJpZXI8SlNNb2R1bGVOYW1lc3BhY2VP
YmplY3Q+IG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlND
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260564</attachid>
            <date>2015-09-03 22:00:29 -0700</date>
            <delta_ts>2015-09-04 14:19:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148705-20150903220028.patch</filename>
            <type>text/plain</type>
            <size>34427</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
NjhiMzNjNDJkYWE4YTkzZWU3M2ExMWY2ODI5MzE1ZTA2NmM1ZjA3Li4wZWJmYzQyYTYwMzMzOTkx
OTFlYzdiZTFlNjY5ZDQwODM0MWE1YTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OCBAQAorMjAxNS0wOS0wMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgTW9kdWxlTmFtZXNwYWNlT2JqZWN0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg3MDUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQg
TW9kdWxlIG5hbWVzcGFjZSBvYmplY3QuCisgICAgICAgIFRoYXQgaXMgdXNlZCB3aGVuIGltcG9y
dGluZyB0aGUgbW9kdWxlIHdpdGggdGhlIGZvcm0gYGltcG9ydCAqIGFzIG5hbWVzcGFjZSBmcm9t
ICJtb2QiYC4KKyAgICAgICAgVGhlIG1vZHVsZSBuYW1lc3BhY2Ugb2JqZWN0IGlzIG5vbi1leHRl
bnNpYmxlIG9iamVjdCB0aGF0IGhhcyB0aGUgYmluZGluZ3MgdG8gdGhlIG9yaWdpbmFsIG1vZHVs
ZQorICAgICAgICBhcyB0aGUgcHJvcGVydHkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
LmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJl
KToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcDogQWRkZWQu
CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpKU01vZHVsZU5hbWVzcGFj
ZU9iamVjdCk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpkZXN0cm95
KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAoSlNDOjpjYWxsYmFja0dldHRlcik6CisgICAgICAgIChKU0M6OkpTTW9kdWxl
TmFtZXNwYWNlT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU01v
ZHVsZU5hbWVzcGFjZU9iamVjdDo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3Bh
Y2VPYmplY3Q6OnB1dEJ5SW5kZXgpOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFjZU9i
amVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFjZU9i
amVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6Om1vZHVsZU5hbWVz
cGFjZU9iamVjdFN5bWJvbEl0ZXJhdG9yKToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFjZU9i
amVjdDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmNy
ZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Ojpt
b2R1bGVSZWNvcmQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwOgorICAg
ICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6
OmdldEV4cG9ydGVkTmFtZXMpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6Z2V0TW9k
dWxlTmFtZXNwYWNlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVSZWNvcmQ6Omluc3RhbnRpYXRl
RGVjbGFyYXRpb25zKToKKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlUmVjb3JkLmg6CisKIDIw
MTUtMDktMDMgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxODkzMzguCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQKaW5kZXggNDdlMDgzMzY4OTMzZTY2MzNjMmZjYWM5MzVmYTQ1NjY3NTVmMmE3
Zi4uN2ZmM2MxOWUwYzgxOWMwODk4ZGI4MmFmMGEzZGM5N2ExMDQ5MzNjMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTM5LDYgKzUzOSw3IEBAIHNldChKYXZhU2NyaXB0
Q29yZV9SVU5USU1FX1NPVVJDRVMKICAgICBydW50aW1lL0pTTWFwLmNwcAogICAgIHJ1bnRpbWUv
SlNNYXBJdGVyYXRvci5jcHAKICAgICBydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwCisg
ICAgcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAKICAgICBydW50aW1lL0pTTW9k
dWxlUmVjb3JkLmNwcAogICAgIHJ1bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHAKICAgICBy
dW50aW1lL0pTTm90QW5PYmplY3QuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4
cHJvagppbmRleCA0YTgwMTBhNjc4MGRiYjE0M2M4MGFlOTViN2UzNzg0YzJlNDkxN2MzLi43YTc1
NDVjZjhjODJjM2QwZDVlOGEyOTk3ZWVjYWE1YjU2MDc3YjkyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2oKQEAgLTc4OCw2ICs3ODgsNyBAQAogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxKU01hcC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTTWFwSXRlcmF0b3IuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxKU01vZHVsZUVudmlyb25tZW50LmNwcCIgLz4KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwIiAvPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU01vZHVsZVJlY29yZC5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTmF0aXZlU3RkRnVuY3Rpb24uY3Bw
IiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU05vdEFuT2JqZWN0LmNw
cCIgLz4KQEAgLTE2NDQsNiArMTY0NSw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTTWFwLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpT
TWFwSXRlcmF0b3IuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNN
b2R1bGVFbnZpcm9ubWVudC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU01vZHVsZVJlY29yZC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU05hdGl2ZVN0ZEZ1bmN0aW9uLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxydW50aW1lXEpTTm90QW5PYmplY3QuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ouZmlsdGVycyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCBjYzEzZjJjODI1ZTg0NDljN2Uw
NDdhMDU1ZmZkYTI4ZWM4YTkwYTNiLi5kYzk2MmJkZWVmMDYwMzNiYWIzNzIzYmFiZjFmYTZjNGJh
ZTgxYzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5m
aWx0ZXJzCkBAIC03MzIsNiArNzMyLDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9G
aWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50
aW1lXEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8
L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcSlNNb2R1bGVSZWNvcmQuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVy
PgogICAgIDwvQ2xDb21waWxlPgpAQCAtMzUxNyw2ICszNTIwLDkgQEAKICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNNb2R1bGVFbnZpcm9ubWVudC5oIj4KICAgICAgIDxGaWx0
ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccnVudGltZVxKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIj4KKyAgICAgIDxGaWx0
ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccnVudGltZVxKU01vZHVsZVJlY29yZC5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBjZGU4M2UwY2Y5MzMxNzgwNjI5ZWZjNmUxM2QyN2VjNGU0OGNlYjVkLi4xYzVlYzFiYzlh
OWIxZTRlYjg1NjZiYzZhODliNTZiNWI0YjM4OWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTcwMyw2ICsxNzAzLDggQEAKIAkJRTEyNEE4RjgwRTU1NTc3NTAwMzA5MUYxIC8q
IE9wYXF1ZUpTU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUxMjRBOEY2MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5jcHAg
Ki87IH07CiAJCUUxOEUzQTU5MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMThFM0E1NzBERjkyNzhDMDBEOTBC
MzQgLyogVk0uY3BwICovOyB9OwogCQlFMzA2Nzc5ODFCOEJDNkY1MDAzRjg3RjAgLyogTW9kdWxl
TG9hZGVyT2JqZWN0LmpzIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzA2Nzc5NzFCOEJDNkY1MDAzRjg3RjAgLyogTW9kdWxlTG9hZGVyT2JqZWN0Lmpz
ICovOyB9OworCQlFMzE4Q0JDMDFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VP
YmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTMxOENCQkUxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCAq
LzsgfTsKKwkJRTMxOENCQzExQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzE4
Q0JCRjFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzM2MzdBNTFCNjMy
MjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzM2MzdBMzFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVj
dE9iamVjdC5jcHAgKi87IH07CiAJCUUzMzYzN0E2MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0
T2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzM2MzdBNDFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzM0IzRTI2MUI3QUJENzUwMDQ4
REIyRSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNCM0UyNTFCN0FCRDc1MDA0OERC
MkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oICovOyB9OwpAQCAtMzU2
Nyw2ICszNTY5LDggQEAKIAkJRTE4RTNBNTYwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbGluZUVuZGluZyA9IDA7IHBhdGggPSBWTS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29k
ZS5sYW5nLm9iamNwcDsgfTsKIAkJRTE4RTNBNTcwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbGluZUVuZGluZyA9IDA7IHBhdGggPSBWTS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRp
ZmllciA9IHhjb2RlLmxhbmcuY3BwOyB9OwogCQlFMzA2Nzc5NzFCOEJDNkY1MDAzRjg3RjAgLyog
TW9kdWxlTG9hZGVyT2JqZWN0LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBw
YXRoID0gTW9kdWxlTG9hZGVyT2JqZWN0LmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFMzE4Q0JCRTFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNb2R1bGVOYW1lc3BhY2VP
YmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzE4Q0JCRjFCOEFFRjUx
MDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTMzNjM3QTMxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3Qu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVmbGVjdE9iamVjdC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMzYzN0E0MUI2MzIyMDIwMEVFMDg0
MCAvKiBSZWZsZWN0T2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
ZmxlY3RPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzQjNFMjUxQjdB
QkQ3NTAwNDhEQjJFIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2Jq
ZWN0Lmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDc5Myw2ICs0Nzk3LDgg
QEAKIAkJCQlBNzRERUY5MDE4MkQ5OTE0MDA1MjJDMjIgLyogSlNNYXBJdGVyYXRvci5oICovLAog
CQkJCUUzRDIzOUM2MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCAq
LywKIAkJCQlFM0QyMzlDNzFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5o
ICovLAorCQkJCUUzMThDQkJFMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9i
amVjdC5jcHAgKi8sCisJCQkJRTMxOENCQkYxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0LmggKi8sCiAJCQkJRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9k
dWxlUmVjb3JkLmNwcCAqLywKIAkJCQlFMzlEQTRBNTFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1
bGVSZWNvcmQuaCAqLywKIAkJCQlFMzNFOEQxQTFCOTAxM0MzMDAzNDZCNTIgLyogSlNOYXRpdmVT
dGRGdW5jdGlvbi5jcHAgKi8sCkBAIC02MjkwLDYgKzYyOTYsNyBAQAogCQkJCTdCMDI0NzU3MUI4
NjgyRTQwMDU0MjQ0MCAvKiBXQVNNRnVuY3Rpb25QYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRUEwQTEwMTcwNTEzREIwMEJCNzIyQyAvKiBGVExMb3dlckRGR1RvTExWTS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTdEODlEMDIxN0EwQjkwNDAwNzczQUQ4IC8qIEZUTExvd2VyZWROb2RlVmFs
dWUuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMThDQkMxMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01v
ZHVsZU5hbWVzcGFjZU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEOEEzMUMxN0Q1MUYy
MjAwQ0EyQzQwIC8qIEZUTE9TUkVudHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJERDE3
MTc4RTFDMDA2OTBDN0YgLyogRlRMT1NSRXhpdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVC
REUxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTE9TUkV4aXRDb21waWxhdGlvbkluZm8uaCBpbiBIZWFk
ZXJzICovLApAQCAtNzQ4NSw2ICs3NDkyLDcgQEAKIAkJCQkwRkQxMjAzMzFBOEM4NUJEMDAwRjUy
ODAgLyogRlRMSlNDYWxsVmFyYXJncy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjlEMzM5NjE3
RkZDNEU2MDA3M0MyQkMgLyogREZHRmx1c2hlZEF0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUz
M0Y1MDg0MUI4NDM3QTAwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUUzMThDQkMwMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5h
bWVzcGFjZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjlEMzY5NDFBRTlDQzMzMDAw
RDRERkIgLyogREZHQ2xlYW5VcFBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RDg5Q0Y3
MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdGbHVzaEZvcm1hdC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjNCRDFCNzFCODk2QTA3MDA1OThBQTYgLyogREZHSW5zZXJ0aW9uU2V0LmNwcCBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCmluZGV4IDBlNzdjZDI4ODljZWI4YmJmMTA3NjBlMmVhMzI1YTVlOTQ0NWFkZjYuLjAz
ZTg5YjlkMWQ1NGEwNGUwNmYwNWNjMWJkYzgzMzRjMTQ0YWQxNmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTg1LDYgKzg1LDcg
QEAKICNpbmNsdWRlICJKU01hcC5oIgogI2luY2x1ZGUgIkpTTWFwSXRlcmF0b3IuaCIKICNpbmNs
dWRlICJKU01vZHVsZUVudmlyb25tZW50LmgiCisjaW5jbHVkZSAiSlNNb2R1bGVOYW1lc3BhY2VP
YmplY3QuaCIKICNpbmNsdWRlICJKU01vZHVsZVJlY29yZC5oIgogI2luY2x1ZGUgIkpTTmF0aXZl
U3RkRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU09OT2JqZWN0LmgiCkBAIC0zNTEsNiArMzUyLDcg
QEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV9yZWdFeHBNYXRjaGVz
QXJyYXlTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXlTdHJ1
Y3R1cmUodm0sICp0aGlzKSk7CiAKICAgICBtX21vZHVsZVJlY29yZFN0cnVjdHVyZS5zZXQodm0s
IHRoaXMsIEpTTW9kdWxlUmVjb3JkOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0
UHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUu
c2V0KHZtLCB0aGlzLCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZt
LCB0aGlzLCBqc051bGwoKSkpOwogICAgIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBt
X3dhc21Nb2R1bGVTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU1dBU01Nb2R1bGU6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgdGhpcykpOwpAQCAtODI0LDYgKzgyNiw3IEBAIHZvaWQgSlNHbG9iYWxPYmpl
Y3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWdFeHBTdHJ1Y3R1cmUpOwogICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZSk7
CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9kdWxlUmVjb3JkU3RydWN0dXJl
KTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1bGVOYW1lc3BhY2VPYmpl
Y3RTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2NvbnNvbGVT
dHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2RvbGxhclZNU3Ry
dWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9pbnRlcm5hbEZ1bmN0
aW9uU3RydWN0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCmluZGV4IGVjNjZjMWE5ZWMzYzljNTNlMThlMDY3MGFlY2NiNWRhOWVhZDIyMzgu
LmRjYjNhMDg3Zjc5OWJmNmJkMmM0YTY2MzY4NjA4NDMxZjFiYjRkZWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMjY4LDYgKzI2OCw3
IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmpl
Y3QgewogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1faXRlcmF0b3JSZXN1bHRTdHJ1Y3R1
cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1
Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9tb2R1bGVSZWNvcmRTdHJ1Y3R1
cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9tb2R1bGVOYW1lc3BhY2VPYmplY3RT
dHJ1Y3R1cmU7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIFdyaXRlQmFycmllcjxTdHJ1
Y3R1cmU+IG1fd2FzbU1vZHVsZVN0cnVjdHVyZTsKICNlbmRpZgpAQCAtNTA2LDYgKzUwNyw3IEBA
IGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3Qg
ewogICAgIHN0YXRpYyBwdHJkaWZmX3QgaXRlcmF0b3JSZXN1bHRTdHJ1Y3R1cmVPZmZzZXQoKSB7
IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNHbG9iYWxPYmplY3QsIG1faXRlcmF0b3JSZXN1bHRT
dHJ1Y3R1cmUpOyB9CiAgICAgU3RydWN0dXJlKiByZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZS5nZXQoKTsgfQog
ICAgIFN0cnVjdHVyZSogbW9kdWxlUmVjb3JkU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9t
b2R1bGVSZWNvcmRTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIG1vZHVsZU5hbWVz
cGFjZU9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0U3RydWN0dXJlLmdldCgpOyB9CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIFN0cnVj
dHVyZSogd2FzbU1vZHVsZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzbU1vZHVsZVN0
cnVjdHVyZS5nZXQoKTsgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWY0
NWQzYjZmNDQ0MThkNmM0Y2MwYTVhMzRiNjQ1OTAzMjU1ODYyNgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNw
cApAQCAtMCwwICsxLDE5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU01vZHVsZU5hbWVzcGFj
ZU9iamVjdC5oIgorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJZGVudGlmaWVySW5s
aW5lcy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxs
SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKKyNpbmNsdWRlICJK
U01vZHVsZVJlY29yZC5oIgorI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKKyNp
bmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVz
LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBtb2R1bGVOYW1lc3BhY2VPYmplY3RTeW1ib2xJdGVyYXRvcihFeGVjU3RhdGUqKTsKKwor
Y29uc3QgQ2xhc3NJbmZvIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpzX2luZm8gPSB7ICJNb2R1
bGVOYW1lc3BhY2VPYmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KSB9OworCisKK0pTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0OjpKU01vZHVsZU5hbWVzcGFjZU9iamVjdChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBjb25zdCBJZGVudGlmaWVyU2V0JiBleHBvcnRzKQorICAgIDogQmFzZSh2bSwgc3RydWN0
dXJlKQorICAgICwgbV9leHBvcnRzKCkKK3sKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJu
YXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90aWMtb2Jq
ZWN0cworICAgIC8vIFF1b3RlZCBmcm9tIHRoZSBzcGVjOgorICAgIC8vICAgICBBIExpc3QgY29u
dGFpbmluZyB0aGUgU3RyaW5nIHZhbHVlcyBvZiB0aGUgZXhwb3J0ZWQgbmFtZXMgZXhwb3NlZCBh
cyBvd24gcHJvcGVydGllcyBvZiB0aGlzIG9iamVjdC4KKyAgICAvLyAgICAgVGhlIGxpc3QgaXMg
b3JkZXJlZCBhcyBpZiBhbiBBcnJheSBvZiB0aG9zZSBTdHJpbmcgdmFsdWVzIGhhZCBiZWVuIHNv
cnRlZCB1c2luZyBBcnJheS5wcm90b3R5cGUuc29ydCB1c2luZyBTb3J0Q29tcGFyZSBhcyBjb21w
YXJlZm4uCisgICAgLy8KKyAgICAvLyBTb3J0IHRoZSBleHBvcnRlZCBuYW1lcyBieSB0aGUgY29k
ZSBwb2ludCBvcmRlci4KKyAgICBWZWN0b3I8VW5pcXVlZFN0cmluZ0ltcGwqPiB0ZW1wb3JhcnlW
ZWN0b3IoZXhwb3J0cy5zaXplKCksIG51bGxwdHIpOworICAgIHN0ZDo6dHJhbnNmb3JtKGV4cG9y
dHMuYmVnaW4oKSwgZXhwb3J0cy5lbmQoKSwgdGVtcG9yYXJ5VmVjdG9yLmJlZ2luKCksIFtdKGNv
bnN0IFJlZlB0cjxXVEY6OlVuaXF1ZWRTdHJpbmdJbXBsPiYgcmVmKSB7CisgICAgICAgIHJldHVy
biByZWYuZ2V0KCk7CisgICAgfSk7CisgICAgc3RkOjpzb3J0KHRlbXBvcmFyeVZlY3Rvci5iZWdp
bigpLCB0ZW1wb3JhcnlWZWN0b3IuZW5kKCksIFtdIChVbmlxdWVkU3RyaW5nSW1wbCogbGhzLCBV
bmlxdWVkU3RyaW5nSW1wbCogcmhzKSB7CisgICAgICAgIHJldHVybiBjb2RlUG9pbnRDb21wYXJl
KGxocywgcmhzKSA8IDA7CisgICAgfSk7CisgICAgZm9yIChhdXRvKiBpZGVudGlmaWVyIDogdGVt
cG9yYXJ5VmVjdG9yKQorICAgICAgICBtX2V4cG9ydHMuYWRkKGlkZW50aWZpZXIpOworfQorCit2
b2lkIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQpCit7
CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyhpbmZv
KCkpKTsKKyAgICBtX21vZHVsZVJlY29yZC5zZXQodm0sIHRoaXMsIG1vZHVsZVJlY29yZCk7Cisg
ICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwg
bW9kdWxlTmFtZXNwYWNlT2JqZWN0U3ltYm9sSXRlcmF0b3IsIERvbnRFbnVtLCAwKTsKKworICAg
IC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1t
b2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmplY3RzLWdldHByb3RvdHlwZW9mCisgICAgLy8gaHR0
cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1u
YW1lc3BhY2UtZXhvdGljLW9iamVjdHMtc2V0cHJvdG90eXBlb2YtdgorICAgIC8vIGh0dHA6Ly93
d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNw
YWNlLWV4b3RpYy1vYmplY3RzLWlzZXh0ZW5zaWJsZQorICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1p
bnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3Rp
Yy1vYmplY3RzLXByZXZlbnRleHRlbnNpb25zCisgICAgcHJldmVudEV4dGVuc2lvbnModm0pOwor
fQorCit2b2lkIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkK
K3sKKyAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxKU01v
ZHVsZU5hbWVzcGFjZU9iamVjdCo+KGNlbGwpOworICAgIHRoaXNPYmplY3QtPkpTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0Ojp+SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QoKTsKK30KKwordm9pZCBKU01v
ZHVsZU5hbWVzcGFjZU9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQoreworICAgIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIEJhc2U6OnZpc2l0Q2hp
bGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fbW9kdWxlUmVjb3JkKTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIGNhbGxiYWNr
R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCit7CisgICAgSlNNb2R1bGVOYW1lc3BhY2VP
YmplY3QqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29y
ZCA9IHRoaXNPYmplY3QtPm1vZHVsZVJlY29yZCgpOworCisgICAgSlNNb2R1bGVSZWNvcmQ6OlJl
c29sdXRpb24gcmVzb2x1dGlvbiA9IG1vZHVsZVJlY29yZC0+cmVzb2x2ZUV4cG9ydChleGVjLCBJ
ZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIHByb3BlcnR5TmFtZS51aWQoKSkpOworICAgIEFTU0VS
VChyZXNvbHV0aW9uLnR5cGUgIT0gSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb246OlR5cGU6Ok5v
dEZvdW5kICYmIHJlc29sdXRpb24udHlwZSAhPSBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbjo6
VHlwZTo6QW1iaWd1b3VzKTsKKworICAgIEpTTW9kdWxlUmVjb3JkKiB0YXJnZXRNb2R1bGUgPSBy
ZXNvbHV0aW9uLm1vZHVsZVJlY29yZDsKKyAgICBKU01vZHVsZUVudmlyb25tZW50KiB0YXJnZXRF
bnZpcm9ubWVudCA9IHRhcmdldE1vZHVsZS0+bW9kdWxlRW52aXJvbm1lbnQoKTsKKworICAgIFBy
b3BlcnR5U2xvdCB0cmFtcG9saW5lU2xvdCh0YXJnZXRFbnZpcm9ubWVudCk7CisgICAgaWYgKCF0
YXJnZXRFbnZpcm9ubWVudC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5
U2xvdCh0YXJnZXRFbnZpcm9ubWVudCwgZXhlYywgcmVzb2x1dGlvbi5sb2NhbE5hbWUsIHRyYW1w
b2xpbmVTbG90KSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKKworICAgIEpTVmFsdWUgdmFsdWUgPSB0cmFtcG9saW5lU2xvdC5nZXRWYWx1ZShleGVjLCBw
cm9wZXJ0eU5hbWUpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIC8vIElmIHRoZSB2YWx1
ZSBpcyBmaWxsZWQgd2l0aCBURFogdmFsdWUsIHRocm93IHRoZSByZWZlcmVuY2UgZXJyb3IuCisg
ICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVU
RFpFcnJvcihleGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7Cit9CisK
K2Jvb2wgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdChKU09iamVj
dCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwu
b3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMtZ2V0
b3ducHJvcGVydHktcAorCisgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqPihjZWxsKTsKKworICAgIC8vIHN0ZXAg
MS4KKyAgICAvLyBJZiB0aGUgcHJvcGVydHkgbmFtZSBpcyBhIHN5bWJvbCwgd2UgZG9uJ3QgbG9v
ayBpbnRvIHRoZSBpbXBvcnRlZCBiaW5kaW5ncy4KKyAgICAvLyBJdCBtYXkgcmV0dXJuIHRoZSBk
ZXNjcmlwdG9yIHdpdGggd3JpdGFibGU6IHRydWUsIGJ1dCBuYW1lc3BhY2Ugb2JqZWN0cyBkb2Vz
IG5vdCBhbGxvdyBpdCBpbiBbW1NldF1dIC8gW1tEZWZpbmVPd25Qcm9wZXJ0eV1dIHNpZGUuCisg
ICAgaWYgKHByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKQorICAgICAgICByZXR1cm4gSlNPYmplY3Q6
OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3Qp
OworCisgICAgaWYgKCF0aGlzT2JqZWN0LT5tX2V4cG9ydHMuY29udGFpbnMocHJvcGVydHlOYW1l
LnVpZCgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gaHR0cHM6Ly9lc2Rpc2N1
c3Mub3JnL3RvcGljL21hcmNoLTI0LW1lZXRpbmctbm90ZXMKKyAgICAvLyBodHRwOi8vd3d3LmVj
bWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1l
eG90aWMtb2JqZWN0cy1nZXRvd25wcm9wZXJ0eS1wCisgICAgLy8gc2VjdGlvbiA5LjQuNi41LCBz
dGVwIDYuCisgICAgLy8gVGhpcyBwcm9wZXJ0eSB3aWxsIGJlIHNlZW4gYXMgd3JpdGFibGU6IHRy
dWUsIGVudW1lcmFibGU6dHJ1ZSwgY29uZmlndXJhYmxlOiBmYWxzZS4KKyAgICAvLyBCdXQgdGhp
cyBkb2VzIG5vdCBtZWFuIHRoYXQgdGhpcyBwcm9wZXJ0eSBpcyB3cml0YWJsZSBieSB1c2Vycy4K
KyAgICAvLworICAgIC8vIEluIEpTQywgZ2V0T3duUHJvcGVydHlTbG90IGlzIG5vdCBkZXNpZ25l
ZCB0byB0aHJvdyBhbnkgZXJyb3JzLiBCdXQgbG9va2luZyB1cCB0aGUgdmFsdWUgZnJvbSB0aGUg
bW9kdWxlCisgICAgLy8gZW52aXJvbm1lbnQgbWF5IHRocm93IGVycm9yIGlmIHRoZSBsb2FkZWQg
dmFyaWFibGUgaXMgdGhlIFREWiB2YWx1ZS4gVG8gd29ya2Fyb3VuZCwgd2Ugc2V0IHRoZSBjdXN0
b20KKyAgICAvLyBnZXR0ZXIgZnVuY3Rpb24uIFdoZW4gaXQgaXMgY2FsbGVkLCBpdCBsb29rcyB1
cCB0aGUgdmFyaWFibGUgYW5kIHRocm93cyBhbiBlcnJvciBpZiB0aGUgdmFyaWFibGUgaXMgbm90
CisgICAgLy8gaW5pdGlhbGl6ZWQuCisgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwgRG9u
dERlbGV0ZSwgY2FsbGJhY2tHZXR0ZXIpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEpT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICAvLyBodHRw
Oi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlLW5h
bWVzcGFjZS1leG90aWMtb2JqZWN0cy1zZXQtcC12LXJlY2VpdmVyCisgICAgaWYgKHNsb3QuaXNT
dHJpY3RNb2RlKCkpCisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChT
dHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKK30KKwordm9pZCBKU01vZHVs
ZU5hbWVzcGFjZU9iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqLCBFeGVjU3RhdGUqIGV4ZWMsIHVu
c2lnbmVkLCBKU1ZhbHVlLCBib29sIHNob3VsZFRocm93KQoreworICAgIGlmIChzaG91bGRUaHJv
dykKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKFN0cmljdE1vZGVS
ZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOworfQorCitib29sIEpTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0OjpkZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSosIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCit7CisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9u
YWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMt
ZGVsZXRlLXAKKyAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU01vZHVsZU5hbWVzcGFjZU9iamVjdCo+KGNlbGwpOworICAgIHJldHVybiAhdGhpc09iamVj
dC0+bV9leHBvcnRzLmNvbnRhaW5zKHByb3BlcnR5TmFtZS51aWQoKSk7Cit9CisKK3ZvaWQgSlNN
b2R1bGVOYW1lc3BhY2VPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1l
cmF0aW9uTW9kZSBtb2RlKQoreworICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFs
Lm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmplY3RzLW93
bnByb3BlcnR5a2V5cworICAgIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Kj4oY2VsbCk7CisgICAgZm9yIChjb25zdCBh
dXRvJiBuYW1lIDogdGhpc09iamVjdC0+bV9leHBvcnRzKQorICAgICAgICBwcm9wZXJ0eU5hbWVz
LmFkZChuYW1lLmdldCgpKTsKKyAgICByZXR1cm4gSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFt
ZXModGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lcywgbW9kZSk7Cit9CisKK2Jvb2wgSlNN
b2R1bGVOYW1lc3BhY2VPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wg
c2hvdWxkVGhyb3cpCit7CisgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3Jn
L2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMtZGVmaW5l
b3ducHJvcGVydHktcC1kZXNjCisgICAgaWYgKHNob3VsZFRocm93KQorICAgICAgICB0aHJvd1R5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gZGVmaW5lIHByb3BlcnR5
IG9uIG9iamVjdCB0aGF0IGlzIG5vdCBleHRlbnNpYmxlLiIpKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTmFtZXNwYWNlT2JqZWN0
U3ltYm9sSXRlcmF0b3IoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoInx0aGlzfCBzaG91bGQgYmUgYW4gb2JqZWN0IikpKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZShleGVjLCBleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCktPnByb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlKCksIGFzT2Jq
ZWN0KHRoaXNWYWx1ZSkpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hMDcyNjUyZTdmNGEyNzFjMDc0YTkyZDQ4NGYwYTE3OWI2OGVkODJmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1l
c3BhY2VPYmplY3QuaApAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdF9oCisj
ZGVmaW5lIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0X2gKKworI2luY2x1ZGUgIkpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0LmgiCisjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBKU01vZHVsZVJlY29yZDsKKworY2xhc3MgSlNNb2R1bGVOYW1lc3BhY2VP
YmplY3QgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgeworcHVibGljOgorICAgIHR5cGVk
ZWYgSlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blBy
b3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7CisKKyAgICBzdGF0aWMgSlNN
b2R1bGVOYW1lc3BhY2VPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU01vZHVsZVJlY29yZCog
bW9kdWxlUmVjb3JkLCBjb25zdCBJZGVudGlmaWVyU2V0JiBleHBvcnRzKQorICAgIHsKKyAgICAg
ICAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0PihleGVjLT52bSgpLmhlYXApKSBKU01vZHVs
ZU5hbWVzcGFjZU9iamVjdChleGVjLT52bSgpLCBzdHJ1Y3R1cmUsIGV4cG9ydHMpOworICAgICAg
ICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKGV4ZWMtPnZtKCksIGdsb2JhbE9iamVjdCwgbW9kdWxl
UmVjb3JkKTsKKyAgICAgICAgcmV0dXJuIG9iamVjdDsKKyAgICB9CisKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyB2b2lkIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIEpTVmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lk
IHB1dEJ5SW5kZXgoSlNDZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBK
U1ZhbHVlLCBib29sIHNob3VsZFRocm93KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMg
Ym9vbCBkZWxldGVQcm9wZXJ0eShKU0NlbGwqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldE93blByb3BlcnR5TmFtZXMoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNP
YmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRv
ciYsIGJvb2wgc2hvdWxkVGhyb3cpOworCisgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKKworICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8o
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIEpTTW9k
dWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQoKSB7IHJldHVybiBtX21vZHVsZVJlY29yZC5nZXQoKTsg
fQorCitwcm90ZWN0ZWQ6CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNNb2R1bGVSZWNvcmQqKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBKU01vZHVsZU5hbWVzcGFjZU9iamVjdChWTSYsIFN0cnVjdHVyZSosIGNvbnN0IElk
ZW50aWZpZXJTZXQmIGV4cG9ydHMpOworCitwcml2YXRlOgorICAgIHN0YXRpYyB2b2lkIGRlc3Ry
b3koSlNDZWxsKik7CisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90
VmlzaXRvciYpOworCisgICAgdHlwZWRlZiBXVEY6Okxpc3RIYXNoU2V0PFJlZlB0cjxVbmlxdWVk
U3RyaW5nSW1wbD4sIElkZW50aWZpZXJSZXBIYXNoPiBPcmRlcmVkSWRlbnRpZmllclNldDsKKwor
ICAgIE9yZGVyZWRJZGVudGlmaWVyU2V0IG1fZXhwb3J0czsKKyAgICBXcml0ZUJhcnJpZXI8SlNN
b2R1bGVSZWNvcmQ+IG1fbW9kdWxlUmVjb3JkOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisK
KyNlbmRpZiAvLyBKU01vZHVsZU5hbWVzcGFjZU9iamVjdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKaW5kZXggMmNlZmJlOTQwMWNhZDY0
NzJjNzFjNDJhMGM4NzA2NTE4ZWZkMjY0Yi4uNjVkYTgyZjljYTE3ZTEyZjBkOGFhOGM2OGZlMjJm
YzhjOWQwYzc3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNN
b2R1bGVSZWNvcmQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9k
dWxlUmVjb3JkLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMu
aCIKICNpbmNsdWRlICJKU01hcC5oIgogI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIK
KyNpbmNsdWRlICJKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIgogI2luY2x1ZGUgIlNsb3RWaXNp
dG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKIApAQCAtNjIsNiAr
NjMsNyBAQCB2b2lkIEpTTW9kdWxlUmVjb3JkOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgSlNNb2R1bGVSZWNvcmQqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNNb2R1bGVSZWNvcmQqPihjZWxsKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRo
aXNPYmplY3QsIHZpc2l0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21v
ZHVsZUVudmlyb25tZW50KTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1
bGVOYW1lc3BhY2VPYmplY3QpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9kZXBlbmRlbmNpZXNNYXApOwogfQpAQCAtNDIxLDYgKzQyMyw3NSBAQCBhdXRvIEpTTW9kdWxl
UmVjb3JkOjpyZXNvbHZlRXhwb3J0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
ZXhwb3J0TmFtZQogICAgIHJldHVybiByZXNvbHZlRXhwb3J0TG9vcChleGVjLCBSZXNvbHZlUXVl
cnkodGhpcywgZXhwb3J0TmFtZS5pbXBsKCkpKTsKIH0KIAorc3RhdGljIHZvaWQgZ2V0RXhwb3J0
ZWROYW1lcyhFeGVjU3RhdGUqIGV4ZWMsIEpTTW9kdWxlUmVjb3JkKiByb290LCBJZGVudGlmaWVy
U2V0JiBleHBvcnRlZE5hbWVzKQoreworICAgIEhhc2hTZXQ8SlNNb2R1bGVSZWNvcmQqPiBleHBv
cnRTdGFyU2V0OworICAgIFZlY3RvcjxKU01vZHVsZVJlY29yZCosIDg+IHBlbmRpbmdNb2R1bGVz
OworCisgICAgcGVuZGluZ01vZHVsZXMuYXBwZW5kKHJvb3QpOworCisgICAgd2hpbGUgKCFwZW5k
aW5nTW9kdWxlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJl
Y29yZCA9IHBlbmRpbmdNb2R1bGVzLnRha2VMYXN0KCk7CisgICAgICAgIGlmIChleHBvcnRTdGFy
U2V0LmNvbnRhaW5zKG1vZHVsZVJlY29yZCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgZXhwb3J0U3RhclNldC5hZGQobW9kdWxlUmVjb3JkKTsKKworICAgICAgICBmb3IgKGNvbnN0
IGF1dG8mIHBhaXIgOiBtb2R1bGVSZWNvcmQtPmV4cG9ydEVudHJpZXMoKSkgeworICAgICAgICAg
ICAgY29uc3QgSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5JiBleHBvcnRFbnRyeSA9IHBhaXIu
dmFsdWU7CisgICAgICAgICAgICBzd2l0Y2ggKGV4cG9ydEVudHJ5LnR5cGUpIHsKKyAgICAgICAg
ICAgIGNhc2UgSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpUeXBlOjpMb2NhbDoKKyAgICAg
ICAgICAgIGNhc2UgSlNNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpUeXBlOjpJbmRpcmVjdDoK
KyAgICAgICAgICAgICAgICBpZiAobW9kdWxlUmVjb3JkID09IHJvb3QgfHwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmRlZmF1bHRLZXl3b3JkICE9IGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUpCisgICAg
ICAgICAgICAgICAgICAgIGV4cG9ydGVkTmFtZXMuYWRkKGV4cG9ydEVudHJ5LmV4cG9ydE5hbWUu
aW1wbCgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBKU01v
ZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OlR5cGU6Ok5hbWVzcGFjZToKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZvciAoY29uc3Qg
YXV0byYgc3Rhck1vZHVsZU5hbWUgOiBtb2R1bGVSZWNvcmQtPnN0YXJFeHBvcnRFbnRyaWVzKCkp
IHsKKyAgICAgICAgICAgIEpTTW9kdWxlUmVjb3JkKiByZXF1ZXN0ZWRNb2R1bGVSZWNvcmQgPSBt
b2R1bGVSZWNvcmQtPmhvc3RSZXNvbHZlSW1wb3J0ZWRNb2R1bGUoZXhlYywgSWRlbnRpZmllcjo6
ZnJvbVVpZChleGVjLCBzdGFyTW9kdWxlTmFtZS5nZXQoKSkpOworICAgICAgICAgICAgcGVuZGlu
Z01vZHVsZXMuYXBwZW5kKHJlcXVlc3RlZE1vZHVsZVJlY29yZCk7CisgICAgICAgIH0KKyAgICB9
Cit9CisKK0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0KiBKU01vZHVsZVJlY29yZDo6Z2V0TW9kdWxl
TmFtZXNwYWNlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50
ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtZ2V0bW9kdWxlbmFtZXNwYWNlCisgICAg
aWYgKG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0KQorICAgICAgICByZXR1cm4gbV9tb2R1bGVOYW1l
c3BhY2VPYmplY3QuZ2V0KCk7CisKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOworICAgIElkZW50aWZpZXJTZXQgZXhwb3J0ZWRO
YW1lczsKKyAgICBnZXRFeHBvcnRlZE5hbWVzKGV4ZWMsIHRoaXMsIGV4cG9ydGVkTmFtZXMpOwor
CisgICAgSWRlbnRpZmllclNldCB1bmFtYmlndW91c05hbWVzOworICAgIGZvciAoYXV0byYgbmFt
ZSA6IGV4cG9ydGVkTmFtZXMpIHsKKyAgICAgICAgY29uc3QgSlNNb2R1bGVSZWNvcmQ6OlJlc29s
dXRpb24gcmVzb2x1dGlvbiA9IHJlc29sdmVFeHBvcnQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVp
ZChleGVjLCBuYW1lLmdldCgpKSk7CisgICAgICAgIHN3aXRjaCAocmVzb2x1dGlvbi50eXBlKSB7
CisgICAgICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQ6CisgICAgICAgICAgICB0
aHJvd1N5bnRheEVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIkV4cG9ydGVkIGJpbmRpbmcgbmFtZSAn
IiwgU3RyaW5nKG5hbWUuZ2V0KCkpLCAiJyBpcyBub3QgZm91bmQuIikpOworICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgY2FzZSBSZXNvbHV0aW9uOjpUeXBlOjpFcnJvcjoK
KyAgICAgICAgICAgIHRocm93U3ludGF4RXJyb3IoZXhlYywgbWFrZVN0cmluZygiRXhwb3J0ZWQg
YmluZGluZyBuYW1lICdkZWZhdWx0JyBjYW5ub3QgYmUgcmVzb2x2ZWQgYnkgc3RhciBleHBvcnQg
ZW50cmllcy4iKSk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICBjYXNl
IFJlc29sdXRpb246OlR5cGU6OkFtYmlndW91czoKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIGNhc2UgUmVzb2x1dGlvbjo6VHlwZTo6UmVzb2x2ZWQ6CisgICAgICAgICAgICB1bmFtYmln
dW91c05hbWVzLmFkZChuYW1lKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fQorCisgICAgbV9tb2R1bGVOYW1lc3BhY2VPYmplY3Quc2V0KGV4ZWMtPnZtKCksIHRoaXMsIEpT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBnbG9iYWxP
YmplY3QtPm1vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZSgpLCB0aGlzLCB1bmFtYmlndW91
c05hbWVzKSk7CisgICAgcmV0dXJuIG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0LmdldCgpOworfQor
CiB2b2lkIEpTTW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBNb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IE1vZHVsZVByb2dyYW1FeGVjdXRhYmxl
OjpjcmVhdGUoZXhlYywgc291cmNlQ29kZSgpKTsKQEAgLTQ3Nyw4ICs1NDgsMTAgQEAgdm9pZCBK
U01vZHVsZVJlY29yZDo6aW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoRXhlY1N0YXRlKiBleGVjLCBN
b2R1bGVQcm9ncmFtRXhlY3UKICAgICAgICAgY29uc3QgSW1wb3J0RW50cnkmIGltcG9ydEVudHJ5
ID0gcGFpci52YWx1ZTsKICAgICAgICAgSlNNb2R1bGVSZWNvcmQqIGltcG9ydGVkTW9kdWxlID0g
aG9zdFJlc29sdmVJbXBvcnRlZE1vZHVsZShleGVjLCBpbXBvcnRFbnRyeS5tb2R1bGVSZXF1ZXN0
KTsKICAgICAgICAgaWYgKGltcG9ydEVudHJ5LmlzTmFtZXNwYWNlKHZtKSkgewotICAgICAgICAg
ICAgLy8gRklYTUU6IE1vZHVsZU5hbWVzcGFjZU9iamVjdCB3aWxsIGJlIGltcGxlbWVudGVkLgot
ICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
ODcwNQorICAgICAgICAgICAgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QqIG5hbWVzcGFjZU9iamVj
dCA9IGltcG9ydGVkTW9kdWxlLT5nZXRNb2R1bGVOYW1lc3BhY2UoZXhlYyk7CisgICAgICAgICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgc3ltYm9sVGFibGVQdXQobW9kdWxlRW52aXJvbm1lbnQsIGV4ZWMsIGltcG9ydEVu
dHJ5LmxvY2FsTmFtZSwgbmFtZXNwYWNlT2JqZWN0LCAvKiBzaG91bGRUaHJvd1JlYWRPbmx5RXJy
b3IgKi8gZmFsc2UsIC8qIGlnbm9yZVJlYWRPbmx5RXJyb3JzICovIHRydWUpOwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgUmVzb2x1dGlvbiByZXNvbHV0aW9uID0gaW1wb3J0ZWRNb2R1
bGUtPnJlc29sdmVFeHBvcnQoZXhlYywgaW1wb3J0RW50cnkuaW1wb3J0TmFtZSk7CiAgICAgICAg
ICAgICBzd2l0Y2ggKHJlc29sdXRpb24udHlwZSkgewpAQCAtNTA5LDcgKzU4Miw3IEBAIHZvaWQg
SlNNb2R1bGVSZWNvcmQ6Omluc3RhbnRpYXRlRGVjbGFyYXRpb25zKEV4ZWNTdGF0ZSogZXhlYywg
TW9kdWxlUHJvZ3JhbUV4ZWN1CiAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1i
b2xUYWJsZS0+Z2V0KHZhcmlhYmxlLmtleS5nZXQoKSk7CiAgICAgICAgIFZhck9mZnNldCBvZmZz
ZXQgPSBlbnRyeS52YXJPZmZzZXQoKTsKICAgICAgICAgaWYgKCFvZmZzZXQuaXNTdGFjaygpKQot
ICAgICAgICAgICAgc3ltYm9sVGFibGVQdXQobW9kdWxlRW52aXJvbm1lbnQsIGV4ZWMsIElkZW50
aWZpZXI6OmZyb21VaWQoZXhlYywgdmFyaWFibGUua2V5LmdldCgpKSwganNVbmRlZmluZWQoKSwg
ZmFsc2UsIHRydWUpOworICAgICAgICAgICAgc3ltYm9sVGFibGVQdXQobW9kdWxlRW52aXJvbm1l
bnQsIGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgdmFyaWFibGUua2V5LmdldCgpKSwg
anNVbmRlZmluZWQoKSwgLyogc2hvdWxkVGhyb3dSZWFkT25seUVycm9yICovIGZhbHNlLCAvKiBp
Z25vcmVSZWFkT25seUVycm9ycyAqLyB0cnVlKTsKICAgICB9CiAKICAgICAvLyBodHRwOi8vd3d3
LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbW9kdWxlZGVjbGFyYXRp
b25pbnN0YW50aWF0aW9uCkBAIC01MjksNyArNjAyLDcgQEAgdm9pZCBKU01vZHVsZVJlY29yZDo6
aW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoRXhlY1N0YXRlKiBleGVjLCBNb2R1bGVQcm9ncmFtRXhl
Y3UKICAgICAgICAgICAgICAgICAgICAgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUtPnR5cGVQ
cm9maWxpbmdFbmRPZmZzZXQoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBKU0Z1bmN0
aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUtPmxpbmsodm0sIG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlLT5zb3VyY2UoKSksIG1v
ZHVsZUVudmlyb25tZW50KTsKLSAgICAgICAgICAgIHN5bWJvbFRhYmxlUHV0KG1vZHVsZUVudmly
b25tZW50LCBleGVjLCB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS0+bmFtZSgpLCBmdW5jdGlv
biwgZmFsc2UsIHRydWUpOworICAgICAgICAgICAgc3ltYm9sVGFibGVQdXQobW9kdWxlRW52aXJv
bm1lbnQsIGV4ZWMsIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLT5uYW1lKCksIGZ1bmN0aW9u
LCAvKiBzaG91bGRUaHJvd1JlYWRPbmx5RXJyb3IgKi8gZmFsc2UsIC8qIGlnbm9yZVJlYWRPbmx5
RXJyb3JzICovIHRydWUpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaAppbmRleCAwODUyMWI0Y2NkM2IwNGFhZWUw
M2IzYjQ0MWEyMWMxZjZkNDE5NjQ3Li43MGExOTBmODJjNjc4ZDE4NjFmNTA2ZWQxZDgwZjIyNWJj
YzkwZTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVs
ZVJlY29yZC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVj
b3JkLmgKQEAgLTE1Niw2ICsxNTYsOCBAQCBjbGFzcyBKU01vZHVsZVJlY29yZCA6IHB1YmxpYyBK
U0Rlc3RydWN0aWJsZU9iamVjdCB7CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CiAK
KyAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogZ2V0TW9kdWxlTmFtZXNwYWNlKEV4ZWNTdGF0
ZSopOworCiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRv
ciYpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKQEAgLTE5OSw2ICsyMDEs
NyBAQCBjbGFzcyBKU01vZHVsZVJlY29yZCA6IHB1YmxpYyBKU0Rlc3RydWN0aWJsZU9iamVjdCB7
CiAKICAgICBXcml0ZUJhcnJpZXI8TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU+IG1fbW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGU7CiAgICAgV3JpdGVCYXJyaWVyPEpTTW9kdWxlRW52aXJvbm1lbnQ+IG1f
bW9kdWxlRW52aXJvbm1lbnQ7CisgICAgV3JpdGVCYXJyaWVyPEpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0PiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwo=
</data>
<flag name="review"
          id="285750"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>