<?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>149129</bug_id>
          
          <creation_ts>2015-09-14 14:34:21 -0700</creation_ts>
          <short_desc>[ES6] Add more fine-grained APIs and additional hooks to control module loader from WebCore</short_desc>
          <delta_ts>2015-09-17 15:26:32 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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>
          
          <blocked>147340</blocked>
    
    <blocked>148897</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>1125736</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-14 14:34:21 -0700</bug_when>
    <thetext>[ES6] Add more fine-grained APIs and additional hooks to control module loader from WebCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125754</commentid>
    <comment_count>1</comment_count>
      <attachid>261135</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-14 15:11:41 -0700</bug_when>
    <thetext>Created attachment 261135
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126601</commentid>
    <comment_count>2</comment_count>
      <attachid>261366</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-16 21:57:56 -0700</bug_when>
    <thetext>Created attachment 261366
Patch

More clean up</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126804</commentid>
    <comment_count>3</comment_count>
      <attachid>261366</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-09-17 13:19:10 -0700</bug_when>
    <thetext>Comment on attachment 261366
Patch

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

r=me with comment

&gt; Source/JavaScriptCore/builtins/ModuleLoaderObject.js:541
&gt; +function prepareModuleGraph(moduleName, referrer)

I think we need a better name for this, maybe: &quot;loadAndExecuteModule&quot; or &quot;loadAndEvaluateModule&quot;?
Or something that indicates execution better than &quot;prepare&quot;. I don&apos;t think &quot;graph&quot; is needed in the name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126820</commentid>
    <comment_count>4</comment_count>
      <attachid>261366</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-17 13:44:47 -0700</bug_when>
    <thetext>Comment on attachment 261366
Patch

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

Thank you for your review!

&gt;&gt; Source/JavaScriptCore/builtins/ModuleLoaderObject.js:541
&gt;&gt; +function prepareModuleGraph(moduleName, referrer)
&gt; 
&gt; I think we need a better name for this, maybe: &quot;loadAndExecuteModule&quot; or &quot;loadAndEvaluateModule&quot;?
&gt; Or something that indicates execution better than &quot;prepare&quot;. I don&apos;t think &quot;graph&quot; is needed in the name.

After discussing with you on IRC, I&apos;ll rename APIs.
prepareModuleGraph =&gt; loadModule, loadModuleGraph =&gt; loadAndEvaluateModule, and linkAndEvaluateModuleGraph =&gt; linkAndEvaluateModule</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126893</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-09-17 15:26:32 -0700</bug_when>
    <thetext>Committed r189941: &lt;http://trac.webkit.org/changeset/189941&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261135</attachid>
            <date>2015-09-14 15:11:41 -0700</date>
            <delta_ts>2015-09-16 21:57:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149129-20150914151132.patch</filename>
            <type>text/plain</type>
            <size>29515</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5NzQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
MDUxZTVlMWM0YTMyNmU2NDMyODU4ZjA4NTU0OTk1ODFhODkzMzBlLi5jYmQ3OWNiMTVhYjJjZDgz
ZjI5Zjc1MzUwOWZjNzQwNWI0ZjkxYTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw1NiBAQAogMjAxNS0wOS0xNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBbRVM2XSBBZGQgbW9yZSBmaW5lLWdyYWluZWQgQVBJcyBhbmQgYWRk
aXRpb25hbCBob29rcyB0byBjb250cm9sIG1vZHVsZSBsb2FkZXIgZnJvbSBXZWJDb3JlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDkxMjkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBiZWhhdmlvciBj
aGFuZ2UuCisKKyAgICAgICAgTW9kdWxlIHRhZyBgPHNjcmlwdCB0eXBlPSJtb2R1bGU+YCB3aWxs
IGJlIGV4ZWN1dGVkIGFzeW5jaHJvbm91c2x5LgorICAgICAgICBCdXQgd2Ugd291bGQgbGlrZSB0
byBmZXRjaCB0aGUgcmVzb3VyY2VzIGJlZm9yZSB3aGVuIHRoZSBwb3N0VGFzay1lZCB0YXNrIGlz
IHBlcmZvcm1lZC4KKyAgICAgICAgU28gaW5zdGVhZCBvZiAxIEFQSSB0aGF0IGZldGNoLCBpbnN0
YW50aWF0ZSBhbmQgZXhlY3V0ZSB0aGUgbW9kdWxlIGdyYXBoLAorICAgICAgICB3ZSBuZWVkIDIg
ZmluZS1ncmFpbmVkIEFQSXMuCisKKyAgICAgICAgMS4gRmV0Y2ggYW5kIGluaXRpYWxpemUgYSBt
b2R1bGUgZ3JhcGgsIGJ1dCBub3QgZXhlY3V0ZSBpdCB5ZXQuCisgICAgICAgIDIuIExpbmsgYW5k
IGV4ZWN1dGUgYSBtb2R1bGUgZ3JhcGggc3BlY2lmaWVkIGJ5IHRoZSBrZXkgKHRoaXMgd2lsbCBi
ZSBpbnZva2VkIGFzeW5jaHJvbm91c2x5KS4KKworICAgICAgICBBbmQgdG8gaW5zdHJ1bWVudCB0
aGUgc2NyaXB0IGV4ZWN1dGlvbiAobGlrZSByZXBvcnRpbmcgdGhlIGV4ZWN1dGlvbiB0aW1lIG9m
IHRoZSBtb2R1bGUgdG8KKyAgICAgICAgdGhlIGluc3BlY3RvciksIHdlIG5lZWQgYSBob29rIHRv
IGluamVjdCBjb2RlIGFyb3VuZCBhbiBleGVjdXRpb24gb2YgYSBtb2R1bGUgYm9keS4KKworICAg
ICAgICAqIGJ1aWx0aW5zL01vZHVsZUxvYWRlck9iamVjdC5qczoKKyAgICAgICAgKG1vZHVsZUV2
YWx1YXRpb24pOgorICAgICAgICAobG9hZE1vZHVsZUdyYXBoKToKKyAgICAgICAgKHByZXBhcmVN
b2R1bGVHcmFwaCk6CisgICAgICAgIChsaW5rQW5kRXZhbHVhdGVNb2R1bGVHcmFwaCk6CisgICAg
ICAgIChsb2FkTW9kdWxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAo
ZnVuY3Rpb25Mb2FkTW9kdWxlKToKKyAgICAgICAgKHJ1bldpdGhTY3JpcHRzKToKKyAgICAgICAg
KiBydW50aW1lL0NvbXBsZXRpb24uY3BwOgorICAgICAgICAoSlNDOjppZGVudGlmaWVyVG9KU1Zh
bHVlKToKKyAgICAgICAgKEpTQzo6bG9hZE1vZHVsZUdyYXBoKToKKyAgICAgICAgKEpTQzo6cHJl
cGFyZU1vZHVsZUdyYXBoKToKKyAgICAgICAgKEpTQzo6bGlua0FuZEV2YWx1YXRlTW9kdWxlR3Jh
cGgpOgorICAgICAgICAoSlNDOjpldmFsdWF0ZU1vZHVsZSk6IERlbGV0ZWQuCisgICAgICAgICog
cnVudGltZS9Db21wbGV0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHA6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNNb2R1bGVSZWNvcmQuY3BwOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6ZXZh
bHVhdGUpOgorICAgICAgICAoSlNDOjpKU01vZHVsZVJlY29yZDo6ZXhlY3V0ZSk6IERlbGV0ZWQu
CisgICAgICAgICogcnVudGltZS9KU01vZHVsZVJlY29yZC5oOgorICAgICAgICAqIHJ1bnRpbWUv
TW9kdWxlTG9hZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6TW9kdWxlTG9hZGVyT2JqZWN0
Ojpsb2FkTW9kdWxlR3JhcGgpOgorICAgICAgICAoSlNDOjpNb2R1bGVMb2FkZXJPYmplY3Q6OnBy
ZXBhcmVNb2R1bGVHcmFwaCk6CisgICAgICAgIChKU0M6Ok1vZHVsZUxvYWRlck9iamVjdDo6bGlu
a0FuZEV2YWx1YXRlTW9kdWxlR3JhcGgpOgorICAgICAgICAoSlNDOjpNb2R1bGVMb2FkZXJPYmpl
Y3Q6OmV2YWx1YXRlKToKKyAgICAgICAgKEpTQzo6bW9kdWxlTG9hZGVyT2JqZWN0RXZhbHVhdGUp
OgorICAgICAgICAoSlNDOjpNb2R1bGVMb2FkZXJPYmplY3Q6OmxvYWRNb2R1bGUpOiBEZWxldGVk
LgorICAgICAgICAqIHJ1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0Lmg6CisKKzIwMTUtMDktMTQg
IFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKICAgICAgICAgW0VTNl0g
Q2FjaGUgdGhlIHJlc29sdXRpb24gcmVzdWx0IGluIEpTTW9kdWxlUmVjb3JkCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg4OTYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IGY4MjQzZDBjZjc2NTcwMTgyY2RiZDkyOTEzMmIzMTRkYmRiNWY5ODQuLjQ0MzQ1Y2UyNmJm
MGFmMTA0NmU4NTZkMWQxYTliNzZjNzQxY2FmNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBA
QAorMjAxNS0wOS0xNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwor
ICAgICAgICBbRVM2XSBBZGQgbW9yZSBmaW5lLWdyYWluZWQgQVBJcyBhbmQgYWRkaXRpb25hbCBo
b29rcyB0byBjb250cm9sIG1vZHVsZSBsb2FkZXIgZnJvbSBXZWJDb3JlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDkxMjkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBiZWhhdmlvciBjaGFuZ2UuCisK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcDoKKwogMjAxNS0wOS0xNCAgQnJh
ZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIGN1cnJlbnQg
Y29uY3JldGUgSURCIGltcGxlbWVudGF0aW9uIHRvICJMZWdhY3kiLgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01vZHVsZUxvYWRlck9iamVjdC5qcyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1bGVMb2FkZXJPYmplY3QuanMKaW5kZXggMTYw
NjJlNmQ3NGRhM2I3NmU4MWI1ODVmZWUxY2VmYzMwMGNjNTEzNS4uMmUwODZiMDRlNjA3ODA4YTA5
N2M3MDU3MTc4MTQwODdmMDBkNTAwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL01vZHVsZUxvYWRlck9iamVjdC5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvTW9kdWxlTG9hZGVyT2JqZWN0LmpzCkBAIC00ODMsMjIgKzQ4MywxMCBAQCBm
dW5jdGlvbiBtb2R1bGVFdmFsdWF0aW9uKG1vZHVsZVJlY29yZCkKICAgICAgICAgdmFyIHJlcXVp
cmVkTW9kdWxlUmVjb3JkID0gcGFpci52YWx1ZTsKICAgICAgICAgdGhpcy5tb2R1bGVFdmFsdWF0
aW9uKHJlcXVpcmVkTW9kdWxlUmVjb3JkKTsKICAgICB9Ci0gICAgdGhpcy5ldmFsdWF0ZShtb2R1
bGVSZWNvcmQpOworICAgIHRoaXMuZXZhbHVhdGUoZW50cnkua2V5LCBtb2R1bGVSZWNvcmQpOwog
fQogCi1mdW5jdGlvbiBsb2FkTW9kdWxlKG1vZHVsZU5hbWUsIHJlZmVycmVyKQotewotICAgICJ1
c2Ugc3RyaWN0IjsKLQotICAgIHZhciBsb2FkZXIgPSB0aGlzOwotICAgIC8vIExvYWRlci5yZXNv
bHZlIGhvb2sgcG9pbnQuCi0gICAgLy8gcmVzb2x2ZTogbW9kdWxlTmFtZSA9PiBQcm9taXNlKG1v
ZHVsZUtleSkKLSAgICAvLyBUYWtlIHRoZSBuYW1lIGFuZCByZXNvbHZlIGl0IHRvIHRoZSB1bmlx
dWUgaWRlbnRpZmllciBmb3IgdGhlIHJlc291cmNlIGxvY2F0aW9uLgotICAgIC8vIEZvciBleGFt
cGxlLCB0YWtlIHRoZSAianF1ZXJ5IiBhbmQgcmV0dXJuIHRoZSBVUkwgZm9yIHRoZSByZXNvdXJj
ZS4KLSAgICByZXR1cm4gdGhpcy5yZXNvbHZlKG1vZHVsZU5hbWUsIHJlZmVycmVyKS50aGVuKGZ1
bmN0aW9uIChrZXkpIHsKLSAgICAgICAgcmV0dXJuIGxvYWRlci5yZXF1ZXN0UmVhZHkoa2V5KTsK
LSAgICB9KTsKLX0KKy8vIEFQSXMgdG8gY29udHJvbCB0aGUgbW9kdWxlIGxvYWRlci4KIAogZnVu
Y3Rpb24gcHJvdmlkZShrZXksIHN0YWdlLCB2YWx1ZSkKIHsKQEAgLTUzNSwzICs1MjMsNDAgQEAg
ZnVuY3Rpb24gcHJvdmlkZShrZXksIHN0YWdlLCB2YWx1ZSkKIAogICAgIHRocm93IG5ldyBAVHlw
ZUVycm9yKCJSZXF1ZXN0ZWQgbW9kdWxlIGlzIGFscmVhZHkgcmVhZHkgdG8gYmUgZXhlY3V0ZWQu
Iik7CiB9CisKK2Z1bmN0aW9uIGxvYWRNb2R1bGVHcmFwaChtb2R1bGVOYW1lLCByZWZlcnJlcikK
K3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB2YXIgbG9hZGVyID0gdGhpczsKKyAgICAvLyBM
b2FkZXIucmVzb2x2ZSBob29rIHBvaW50LgorICAgIC8vIHJlc29sdmU6IG1vZHVsZU5hbWUgPT4g
UHJvbWlzZShtb2R1bGVLZXkpCisgICAgLy8gVGFrZSB0aGUgbmFtZSBhbmQgcmVzb2x2ZSBpdCB0
byB0aGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSByZXNvdXJjZSBsb2NhdGlvbi4KKyAgICAv
LyBGb3IgZXhhbXBsZSwgdGFrZSB0aGUgImpxdWVyeSIgYW5kIHJldHVybiB0aGUgVVJMIGZvciB0
aGUgcmVzb3VyY2UuCisgICAgcmV0dXJuIHRoaXMucmVzb2x2ZShtb2R1bGVOYW1lLCByZWZlcnJl
cikudGhlbihmdW5jdGlvbiAoa2V5KSB7CisgICAgICAgIHJldHVybiBsb2FkZXIucmVxdWVzdFJl
YWR5KGtleSk7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIHByZXBhcmVNb2R1bGVHcmFwaChtb2R1
bGVOYW1lLCByZWZlcnJlcikKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICB2YXIgbG9hZGVy
ID0gdGhpczsKKyAgICAvLyBMb2FkZXIucmVzb2x2ZSBob29rIHBvaW50LgorICAgIC8vIHJlc29s
dmU6IG1vZHVsZU5hbWUgPT4gUHJvbWlzZShtb2R1bGVLZXkpCisgICAgLy8gVGFrZSB0aGUgbmFt
ZSBhbmQgcmVzb2x2ZSBpdCB0byB0aGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSByZXNvdXJj
ZSBsb2NhdGlvbi4KKyAgICAvLyBGb3IgZXhhbXBsZSwgdGFrZSB0aGUgImpxdWVyeSIgYW5kIHJl
dHVybiB0aGUgVVJMIGZvciB0aGUgcmVzb3VyY2UuCisgICAgcmV0dXJuIHRoaXMucmVzb2x2ZSht
b2R1bGVOYW1lLCByZWZlcnJlcikudGhlbihmdW5jdGlvbiAoa2V5KSB7CisgICAgICAgIHJldHVy
biBsb2FkZXIucmVxdWVzdEluc3RhbnRpYXRlQWxsKGtleSk7CisgICAgfSkudGhlbihmdW5jdGlv
biAoZW50cnkpIHsKKyAgICAgICAgcmV0dXJuIGVudHJ5LmtleTsKKyAgICB9KTsKK30KKworZnVu
Y3Rpb24gbGlua0FuZEV2YWx1YXRlTW9kdWxlR3JhcGgoa2V5KQoreworICAgICJ1c2Ugc3RyaWN0
IjsKKworICAgIHJldHVybiB0aGlzLnJlcXVlc3RSZWFkeShrZXkpOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNj
LmNwcAppbmRleCA1Y2Q5Mjc4ODQyZjZkZDU1ZTRmODgyNGIxZGEwNTNiOGE3ZGNmMmFlLi44YmU5
ODQyYzcwNWI5YTNmNjBiZjZkYjFkNWM0N2I2MDhjY2VmNzhjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNw
cApAQCAtNzA5LDcgKzcwOSw3IEBAIGNsYXNzIEdsb2JhbE9iamVjdCA6IHB1YmxpYyBKU0dsb2Jh
bE9iamVjdCB7CiB9OwogCiBjb25zdCBDbGFzc0luZm8gR2xvYmFsT2JqZWN0OjpzX2luZm8gPSB7
ICJnbG9iYWwiLCAmSlNHbG9iYWxPYmplY3Q6OnNfaW5mbywgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShHbG9iYWxPYmplY3QpIH07Ci1jb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBH
bG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7ICZhbGxvd3NBY2Nlc3NG
cm9tLCAmc3VwcG9ydHNQcm9maWxpbmcsICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAmc2hvdWxk
SW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdFJ1bnRpbWVGbGFncywgMCwgJnNob3VsZEludGVy
cnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQsICZtb2R1bGVMb2FkZXJSZXNvbHZlLCAmbW9kdWxlTG9h
ZGVyRmV0Y2gsIG51bGxwdHIsIG51bGxwdHIgfTsKK2NvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRh
YmxlIEdsb2JhbE9iamVjdDo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsgJmFsbG93c0Fj
Y2Vzc0Zyb20sICZzdXBwb3J0c1Byb2ZpbGluZywgJnN1cHBvcnRzUmljaFNvdXJjZUluZm8sICZz
aG91bGRJbnRlcnJ1cHRTY3JpcHQsICZqYXZhU2NyaXB0UnVudGltZUZsYWdzLCAwLCAmc2hvdWxk
SW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCwgJm1vZHVsZUxvYWRlclJlc29sdmUsICZtb2R1
bGVMb2FkZXJGZXRjaCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9OwogCiAKIEdsb2JhbE9i
amVjdDo6R2xvYmFsT2JqZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkBAIC0xNDcz
LDcgKzE0NzMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTG9hZE1v
ZHVsZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKCFmZXRjaFNjcmlwdEZyb21Mb2NhbEZpbGVT
eXN0ZW0oZmlsZU5hbWUsIHNjcmlwdCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
ZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIkNvdWxkIG5vdCBvcGVuIGZpbGUuIikpKSk7CiAKLSAgICBKU0ludGVybmFsUHJvbWlz
ZSogcHJvbWlzZSA9IGV2YWx1YXRlTW9kdWxlKGV4ZWMsIGZpbGVOYW1lKTsKKyAgICBKU0ludGVy
bmFsUHJvbWlzZSogcHJvbWlzZSA9IGxvYWRNb2R1bGVHcmFwaChleGVjLCBmaWxlTmFtZSk7CiAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogCkBAIC0xNjQ2LDcgKzE2NDYsNyBAQCBzdGF0aWMgYm9vbCBy
dW5XaXRoU2NyaXB0cyhHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFNj
cmlwdD4mIHNjcgogICAgICAgICBpZiAoc2NyaXB0c1tpXS5pc0ZpbGUpIHsKICAgICAgICAgICAg
IGZpbGVOYW1lID0gc2NyaXB0c1tpXS5hcmd1bWVudDsKICAgICAgICAgICAgIGlmIChtb2R1bGUp
Ci0gICAgICAgICAgICAgICAgcHJvbWlzZSA9IGV2YWx1YXRlTW9kdWxlKGdsb2JhbE9iamVjdC0+
Z2xvYmFsRXhlYygpLCBmaWxlTmFtZSk7CisgICAgICAgICAgICAgICAgcHJvbWlzZSA9IGxvYWRN
b2R1bGVHcmFwaChnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZmlsZU5hbWUpOwogICAgICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgaWYgKCFmZXRjaFNjcmlwdEZyb21Mb2NhbEZp
bGVTeXN0ZW0oZmlsZU5hbWUsIHNjcmlwdEJ1ZmZlcikpCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsgLy8gZmFpbCBlYXJseSBzbyB3ZSBjYW4gY2F0Y2ggbWlzc2luZyBmaWxlcwpA
QCAtMTY2Miw3ICsxNjYyLDcgQEAgc3RhdGljIGJvb2wgcnVuV2l0aFNjcmlwdHMoR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxTY3JpcHQ+JiBzY3IKIAogICAgICAgICBp
ZiAobW9kdWxlKSB7CiAgICAgICAgICAgICBpZiAoIXByb21pc2UpCi0gICAgICAgICAgICAgICAg
cHJvbWlzZSA9IGV2YWx1YXRlTW9kdWxlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBqc2NT
b3VyY2Uoc2NyaXB0QnVmZmVyLCBmaWxlTmFtZSkpOworICAgICAgICAgICAgICAgIHByb21pc2Ug
PSBsb2FkTW9kdWxlR3JhcGgoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGpzY1NvdXJjZShz
Y3JpcHRCdWZmZXIsIGZpbGVOYW1lKSk7CiAgICAgICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2Jh
bEV4ZWMoKS0+Y2xlYXJFeGNlcHRpb24oKTsKICAgICAgICAgICAgIHByb21pc2UtPnRoZW4oZ2xv
YmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIG51bGxwdHIsIGVycm9ySGFuZGxlcik7CiAgICAgICAg
ICAgICBnbG9iYWxPYmplY3QtPnZtKCkuZHJhaW5NaWNyb3Rhc2tzKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCmluZGV4IGI1ZjYyM2FjZGE1MjMwNTEx
ODdkMGRiNTY4ODUyMTI2MmQ4NjI0OGMuLmJmY2Y2ZTI0ZGZkY2JlNjU4NWNiNzI2NzRhMDA1ZmQ5
ODk5MmEwYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBs
ZXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24u
Y3BwCkBAIC0xMTMsMjMgKzExMyw3NyBAQCBKU1ZhbHVlIGV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgTgogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBKU0ludGVybmFsUHJvbWlzZSogZXZhbHVhdGVNb2R1
bGUoY29uc3QgSlNMb2NrSG9sZGVyJiwgRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG1vZHVsZU5hbWUsIEpTVmFsdWUgcmVmZXJyZXIpCitzdGF0
aWMgaW5saW5lIEpTVmFsdWUgaWRlbnRpZmllclRvSlNWYWx1ZShWTSYgdm0sIGNvbnN0IElkZW50
aWZpZXImIGlkZW50aWZpZXIpCiB7Ci0gICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+bW9kdWxlTG9h
ZGVyKCktPmxvYWRNb2R1bGUoZXhlYywgbW9kdWxlTmFtZSwgcmVmZXJyZXIpOworICAgIGlmIChp
ZGVudGlmaWVyLmlzU3ltYm9sKCkpCisgICAgICAgIHJldHVybiBTeW1ib2w6OmNyZWF0ZSh2bSwg
c3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCY+KCppZGVudGlmaWVyLmltcGwoKSkpOworICAgIHJldHVy
biBqc1N0cmluZygmdm0sIGlkZW50aWZpZXIuaW1wbCgpKTsKIH0KIAotc3RhdGljIEpTSW50ZXJu
YWxQcm9taXNlKiBldmFsdWF0ZU1vZHVsZShjb25zdCBKU0xvY2tIb2xkZXImIGxvY2ssIEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSWRlbnRpZmll
ciYgbW9kdWxlTmFtZSkKK3N0YXRpYyBKU0ludGVybmFsUHJvbWlzZSogbG9hZE1vZHVsZUdyYXBo
KGNvbnN0IEpTTG9ja0hvbGRlciYsIEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBtb2R1bGVOYW1lLCBKU1ZhbHVlIHJlZmVycmVyKQogewotICAg
IEpTVmFsdWUgbW9kdWxlTmFtZVZhbHVlOwotICAgIGlmIChtb2R1bGVOYW1lLmlzU3ltYm9sKCkp
Ci0gICAgICAgIG1vZHVsZU5hbWVWYWx1ZSA9IFN5bWJvbDo6Y3JlYXRlKGV4ZWMtPnZtKCksIHN0
YXRpY19jYXN0PFN5bWJvbEltcGwmPigqbW9kdWxlTmFtZS5pbXBsKCkpKTsKLSAgICBlbHNlCi0g
ICAgICAgIG1vZHVsZU5hbWVWYWx1ZSA9IGpzU3RyaW5nKCZleGVjLT52bSgpLCBtb2R1bGVOYW1l
LmltcGwoKSk7CisgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+bW9kdWxlTG9hZGVyKCktPmxvYWRN
b2R1bGVHcmFwaChleGVjLCBtb2R1bGVOYW1lLCByZWZlcnJlcik7Cit9CisKK3N0YXRpYyBKU0lu
dGVybmFsUHJvbWlzZSogbG9hZE1vZHVsZUdyYXBoKGNvbnN0IEpTTG9ja0hvbGRlciYgbG9jaywg
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBJZGVu
dGlmaWVyJiBtb2R1bGVOYW1lKQoreworICAgIHJldHVybiBsb2FkTW9kdWxlR3JhcGgobG9jaywg
ZXhlYywgZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyVG9KU1ZhbHVlKGV4ZWMtPnZtKCksIG1vZHVs
ZU5hbWUpLCBqc1VuZGVmaW5lZCgpKTsKK30KKworSlNJbnRlcm5hbFByb21pc2UqIGxvYWRNb2R1
bGVHcmFwaChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKK3sKKyAg
ICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKKyAgICBSRUxFQVNFX0FTU0VSVChleGVjLT52bSgp
LmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxl
KCkpOworICAgIFJFTEVBU0VfQVNTRVJUKCFleGVjLT52bSgpLmlzQ29sbGVjdG9yQnVzeSgpKTsK
KworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT52bUVudHJ5R2xvYmFs
T2JqZWN0KCk7CisKKyAgICAvLyBHZW5lcmF0ZSB0aGUgdW5pcXVlIGtleSBmb3IgdGhlIHNvdXJj
ZS1wcm92aWRlZCBtb2R1bGUuCisgICAgUHJpdmF0ZU5hbWUgcHJpdmF0ZU5hbWUoUHJpdmF0ZU5h
bWU6OkRlc2NyaXB0aW9uLCAiRW50cnlQb2ludE1vZHVsZSIpOworICAgIFN5bWJvbCoga2V5ID0g
U3ltYm9sOjpjcmVhdGUoZXhlYy0+dm0oKSwgKnByaXZhdGVOYW1lLnVpZCgpKTsKKworICAgIC8v
IEluc2VydCB0aGUgZ2l2ZW4gc291cmNlIGNvZGUgdG8gdGhlIE1vZHVsZUxvYWRlciByZWdpc3Ry
eSBhcyB0aGUgZmV0Y2hlZCByZWdpc3RyeSBlbnRyeS4KKyAgICBnbG9iYWxPYmplY3QtPm1vZHVs
ZUxvYWRlcigpLT5wcm92aWRlKGV4ZWMsIGtleSwgTW9kdWxlTG9hZGVyT2JqZWN0OjpTdGF0dXM6
OkZldGNoLCBzb3VyY2UudG9TdHJpbmcoKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KSB7CisgICAgICAgIEpTVmFsdWUgZXhjZXB0aW9uID0gZXhlYy0+ZXhjZXB0aW9uKCktPnZhbHVl
KCk7CisgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CisgICAgICAgIEpTSW50ZXJuYWxQ
cm9taXNlRGVmZXJyZWQqIGRlZmVycmVkID0gSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3Jl
YXRlKGV4ZWMsIGdsb2JhbE9iamVjdCk7CisgICAgICAgIGRlZmVycmVkLT5yZWplY3QoZXhlYywg
ZXhjZXB0aW9uKTsKKyAgICAgICAgcmV0dXJuIGRlZmVycmVkLT5wcm9taXNlKCk7CisgICAgfQor
CisgICAgcmV0dXJuIGxvYWRNb2R1bGVHcmFwaChsb2NrLCBleGVjLCBnbG9iYWxPYmplY3QsIGtl
eSwganNVbmRlZmluZWQoKSk7Cit9CisKK0pTSW50ZXJuYWxQcm9taXNlKiBsb2FkTW9kdWxlR3Jh
cGgoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKQoreworICAg
IEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOworICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPnZtKCku
YXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUo
KSk7CisgICAgUkVMRUFTRV9BU1NFUlQoIWV4ZWMtPnZtKCkuaXNDb2xsZWN0b3JCdXN5KCkpOwor
CisgICAgcmV0dXJuIGxvYWRNb2R1bGVHcmFwaChsb2NrLCBleGVjLCBleGVjLT52bUVudHJ5R2xv
YmFsT2JqZWN0KCksIG1vZHVsZU5hbWUpOworfQorCitKU0ludGVybmFsUHJvbWlzZSogbG9hZE1v
ZHVsZUdyYXBoKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBtb2R1bGVOYW1lKQorewor
ICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOworICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPnZt
KCkuYXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFi
bGUoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoIWV4ZWMtPnZtKCkuaXNDb2xsZWN0b3JCdXN5KCkp
OworCisgICAgcmV0dXJuIGxvYWRNb2R1bGVHcmFwaChsb2NrLCBleGVjLCBleGVjLT52bUVudHJ5
R2xvYmFsT2JqZWN0KCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgbW9kdWxlTmFtZSkp
OworfQorCitzdGF0aWMgSlNJbnRlcm5hbFByb21pc2UqIHByZXBhcmVNb2R1bGVHcmFwaChjb25z
dCBKU0xvY2tIb2xkZXImLCBFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgbW9kdWxlTmFtZSwgSlNWYWx1ZSByZWZlcnJlcikKK3sKKyAgICByZXR1
cm4gZ2xvYmFsT2JqZWN0LT5tb2R1bGVMb2FkZXIoKS0+cHJlcGFyZU1vZHVsZUdyYXBoKGV4ZWMs
IG1vZHVsZU5hbWUsIHJlZmVycmVyKTsKK30KIAotICAgIHJldHVybiBldmFsdWF0ZU1vZHVsZShs
b2NrLCBleGVjLCBnbG9iYWxPYmplY3QsIG1vZHVsZU5hbWVWYWx1ZSwganNVbmRlZmluZWQoKSk7
CitzdGF0aWMgSlNJbnRlcm5hbFByb21pc2UqIHByZXBhcmVNb2R1bGVHcmFwaChjb25zdCBKU0xv
Y2tIb2xkZXImIGxvY2ssIEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSkKK3sKKyAgICByZXR1cm4gcHJlcGFy
ZU1vZHVsZUdyYXBoKGxvY2ssIGV4ZWMsIGdsb2JhbE9iamVjdCwgaWRlbnRpZmllclRvSlNWYWx1
ZShleGVjLT52bSgpLCBtb2R1bGVOYW1lKSwganNVbmRlZmluZWQoKSk7CiB9CiAKLUpTSW50ZXJu
YWxQcm9taXNlKiBldmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSkKK0pTSW50ZXJuYWxQcm9taXNlKiBwcmVwYXJlTW9kdWxlR3JhcGgoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCiB7CiAgICAgSlNMb2NrSG9sZGVy
IGxvY2soZXhlYyk7CiAgICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdU
YWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKQEAgLTE1MSwy
NSArMjA1LDI4IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBldmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKICAgICAgICAgcmV0dXJuIGRlZmVycmVk
LT5wcm9taXNlKCk7CiAgICAgfQogCi0gICAgcmV0dXJuIGV2YWx1YXRlTW9kdWxlKGxvY2ssIGV4
ZWMsIGdsb2JhbE9iamVjdCwga2V5LCBqc1VuZGVmaW5lZCgpKTsKKyAgICByZXR1cm4gcHJlcGFy
ZU1vZHVsZUdyYXBoKGxvY2ssIGV4ZWMsIGdsb2JhbE9iamVjdCwga2V5LCBqc1VuZGVmaW5lZCgp
KTsKIH0KIAotSlNJbnRlcm5hbFByb21pc2UqIGV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSkKK0pTSW50ZXJuYWxQcm9taXNlKiBwcmVw
YXJlTW9kdWxlR3JhcGgoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIG1vZHVsZU5hbWUp
CiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgUkVMRUFTRV9BU1NFUlQoZXhl
Yy0+dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJp
bmdUYWJsZSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVCghZXhlYy0+dm0oKS5pc0NvbGxlY3RvckJ1
c3koKSk7CiAKLSAgICByZXR1cm4gZXZhbHVhdGVNb2R1bGUobG9jaywgZXhlYywgZXhlYy0+dm1F
bnRyeUdsb2JhbE9iamVjdCgpLCBtb2R1bGVOYW1lKTsKKyAgICByZXR1cm4gcHJlcGFyZU1vZHVs
ZUdyYXBoKGxvY2ssIGV4ZWMsIGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhleGVjLCBtb2R1bGVOYW1lKSk7CiB9CiAKLUpTSW50ZXJuYWxQcm9taXNl
KiBldmFsdWF0ZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFt
ZSkKKworSlNJbnRlcm5hbFByb21pc2UqIGxpbmtBbmRFdmFsdWF0ZU1vZHVsZUdyYXBoKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5KQogewogICAgIEpTTG9ja0hv
bGRlciBsb2NrKGV4ZWMpOwogICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPnZtKCkuYXRvbWljU3Ry
aW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CiAgICAg
UkVMRUFTRV9BU1NFUlQoIWV4ZWMtPnZtKCkuaXNDb2xsZWN0b3JCdXN5KCkpOwogCi0gICAgcmV0
dXJuIGV2YWx1YXRlTW9kdWxlKGxvY2ssIGV4ZWMsIGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3Qo
KSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBtb2R1bGVOYW1lKSk7CisgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKTsKKwor
ICAgIHJldHVybiBnbG9iYWxPYmplY3QtPm1vZHVsZUxvYWRlcigpLT5saW5rQW5kRXZhbHVhdGVN
b2R1bGVHcmFwaChleGVjLCBpZGVudGlmaWVyVG9KU1ZhbHVlKGV4ZWMtPnZtKCksIG1vZHVsZUtl
eSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbXBsZXRpb24uaAppbmRleCBjYjA5MWZmMTY0YjIyOGRjMDJjMjIzZGQxZWQ4Y2Q2NDgy
OTE1YTY1Li4yMWZkOGRhMDA5ZDBhNGI3YTA4NjhlNzFkZWVhNGNhZTk1M2I1NDllIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCkBAIC00NSw5ICs0NSwxOCBA
QCBpbmxpbmUgSlNWYWx1ZSBldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZUNvZGUsIEpTVmFsdWUgdAogICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gdW51c2Vk
OwogICAgIHJldHVybiBldmFsdWF0ZShleGVjLCBzb3VyY2VDb2RlLCB0aGlzVmFsdWUsIHVudXNl
ZCk7CiB9Ci1KU19FWFBPUlRfUFJJVkFURSBKU0ludGVybmFsUHJvbWlzZSogZXZhbHVhdGVNb2R1
bGUoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYpOwotSlNfRVhQT1JUX1BSSVZBVEUgSlNJ
bnRlcm5hbFByb21pc2UqIGV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImIG1vZHVsZU5hbWUpOwotSlNfRVhQT1JUX1BSSVZBVEUgSlNJbnRlcm5hbFByb21pc2UqIGV2
YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSk7CisKKy8v
IExvYWQgdGhlIG1vZHVsZSBzb3VyY2UgYW5kIGV2YWx1YXRlIGl0LgorSlNfRVhQT1JUX1BSSVZB
VEUgSlNJbnRlcm5hbFByb21pc2UqIGxvYWRNb2R1bGVHcmFwaChFeGVjU3RhdGUqLCBjb25zdCBT
b3VyY2VDb2RlJik7CitKU19FWFBPUlRfUFJJVkFURSBKU0ludGVybmFsUHJvbWlzZSogbG9hZE1v
ZHVsZUdyYXBoKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpOworSlNf
RVhQT1JUX1BSSVZBVEUgSlNJbnRlcm5hbFByb21pc2UqIGxvYWRNb2R1bGVHcmFwaChFeGVjU3Rh
dGUqLCBjb25zdCBTdHJpbmcmIG1vZHVsZU5hbWUpOworCisvLyBGZXRjaCB0aGUgbW9kdWxlIHNv
dXJjZSwgYW5kIGluc3RhbnRpYXRlIHRoZSBtb2R1bGUgcmVjb3JkLgorSlNfRVhQT1JUX1BSSVZB
VEUgSlNJbnRlcm5hbFByb21pc2UqIHByZXBhcmVNb2R1bGVHcmFwaChFeGVjU3RhdGUqLCBjb25z
dCBTb3VyY2VDb2RlJik7CitKU19FWFBPUlRfUFJJVkFURSBKU0ludGVybmFsUHJvbWlzZSogcHJl
cGFyZU1vZHVsZUdyYXBoKEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSk7CisK
Ky8vIExpbmsgYW5kIGV2YWx1YXRlIHRoZSBhbHJlYWR5IGxpbmtlZCBtb2R1bGUuCitKU19FWFBP
UlRfUFJJVkFURSBKU0ludGVybmFsUHJvbWlzZSogbGlua0FuZEV2YWx1YXRlTW9kdWxlR3JhcGgo
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlS2V5KTsKIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcAppbmRleCAyOTkxMDY0OTgyODdkZjI4OTA2NTE4ZDNkYTI3MTIyZmI4YzdjMWNjLi5k
ZjI2MzI1ZmM1NTE1YmU1NmU5MDUzOTBiMTRmZmU1NmIyZDQyMGU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0xNjUsNyArMTY1
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBKU0dsb2JhbE9iamVjdDo6
c19pbmZvID0geyAiR2xvYmFsT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgJmdsb2JhbE9iamVjdFRh
YmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTR2xvYmFsT2JqZWN0KSB9OwogCi1jb25zdCBHbG9i
YWxPYmplY3RNZXRob2RUYWJsZSBKU0dsb2JhbE9iamVjdDo6c19nbG9iYWxPYmplY3RNZXRob2RU
YWJsZSA9IHsgJmFsbG93c0FjY2Vzc0Zyb20sICZzdXBwb3J0c1Byb2ZpbGluZywgJnN1cHBvcnRz
UmljaFNvdXJjZUluZm8sICZzaG91bGRJbnRlcnJ1cHRTY3JpcHQsICZqYXZhU2NyaXB0UnVudGlt
ZUZsYWdzLCBudWxscHRyLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCwgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9OworY29uc3QgR2xvYmFsT2JqZWN0TWV0
aG9kVGFibGUgSlNHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7ICZh
bGxvd3NBY2Nlc3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcsICZzdXBwb3J0c1JpY2hTb3VyY2VJ
bmZvLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdFJ1bnRpbWVGbGFncywgbnVs
bHB0ciwgJnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQsIG51bGxwdHIsIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIgfTsKIAogLyogU291cmNlIGZvciBKU0dsb2Jh
bE9iamVjdC5sdXQuaAogQGJlZ2luIGdsb2JhbE9iamVjdFRhYmxlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBkY2IzYTA4N2Y3OTliZjZi
ZDJjNGE2NjM2ODYwODQzMWYxYmI0ZGVkLi41NDYxY2ViNTI4NmRkNmQyZDJhMWFkMzRjOGI4MWY1
ZWMwNmE3YTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgKQEAgLTE3MCw2ICsxNzAsOSBAQCBzdHJ1Y3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFi
bGUgewogCiAgICAgdHlwZWRlZiBKU0ludGVybmFsUHJvbWlzZSogKCpNb2R1bGVMb2FkZXJJbnN0
YW50aWF0ZVB0cikoSlNHbG9iYWxPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlLCBKU1ZhbHVl
KTsKICAgICBNb2R1bGVMb2FkZXJJbnN0YW50aWF0ZVB0ciBtb2R1bGVMb2FkZXJJbnN0YW50aWF0
ZTsKKworICAgIHR5cGVkZWYgSlNWYWx1ZSAoKk1vZHVsZUxvYWRlckV2YWx1YXRlUHRyKShKU0ds
b2JhbE9iamVjdCosIEV4ZWNTdGF0ZSosIEpTVmFsdWUsIEpTVmFsdWUpOworICAgIE1vZHVsZUxv
YWRlckV2YWx1YXRlUHRyIG1vZHVsZUxvYWRlckV2YWx1YXRlOwogfTsKIAogY2xhc3MgSlNHbG9i
YWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKaW5kZXggODQzYzk0
ZTE4MDQ2ZDFmNDhmOTVkZTc2Y2M1MTkwZGEzMmQyODYyNS4uMWNjNDkzNzVkNGYyY2YyZWM3ZTJl
MDFiYmE3YmI4YTkxNDdmODRmZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTW9kdWxlUmVjb3JkLmNwcApAQCAtODQ0LDcgKzg0NCw3IEBAIHZvaWQgSlNNb2R1bGVS
ZWNvcmQ6Omluc3RhbnRpYXRlRGVjbGFyYXRpb25zKEV4ZWNTdGF0ZSogZXhlYywgTW9kdWxlUHJv
Z3JhbUV4ZWN1CiAgICAgbV9tb2R1bGVFbnZpcm9ubWVudC5zZXQodm0sIHRoaXMsIG1vZHVsZUVu
dmlyb25tZW50KTsKIH0KIAotSlNWYWx1ZSBKU01vZHVsZVJlY29yZDo6ZXhlY3V0ZShFeGVjU3Rh
dGUqIGV4ZWMpCitKU1ZhbHVlIEpTTW9kdWxlUmVjb3JkOjpldmFsdWF0ZShFeGVjU3RhdGUqIGV4
ZWMpCiB7CiAgICAgaWYgKCFtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlKQogICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTW9kdWxlUmVjb3JkLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01v
ZHVsZVJlY29yZC5oCmluZGV4IDMwZGU3ZjVjNWZlMTMzZThhYTU0YzBjOTIwNGU3NmEzZGIxMGEx
ODUuLmI4MmE5ZTFkNTdhYWE0ZTY4YTdmMjgwNTg3NTVlMDc3YjViMTAyNmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaApAQCAtMTIzLDcgKzEy
Myw3IEBAIGNsYXNzIEpTTW9kdWxlUmVjb3JkIDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0
IHsKICAgICB9CiAKICAgICB2b2lkIGxpbmsoRXhlY1N0YXRlKik7Ci0gICAgSlNWYWx1ZSBleGVj
dXRlKEV4ZWNTdGF0ZSopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgZXZhbHVhdGUo
RXhlY1N0YXRlKik7CiAKICAgICBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogbW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGUoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZVByb2dyYW1FeGVjdXRhYmxlLmdl
dCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVs
ZUxvYWRlck9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVM
b2FkZXJPYmplY3QuY3BwCmluZGV4IDZlNmY5ZjlhNmRhNjE4MTJlM2MyMWFkNDM2NmZkODdiN2Nk
MTQ3ZDguLjgzNTFjNGI1ZGY4Y2YyNzk1MzgxNDgwNWQzZTdkYjMyZDM2ZTk2ZTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNw
cApAQCAtODUsOCArODUsMTAgQEAgY29uc3QgQ2xhc3NJbmZvIE1vZHVsZUxvYWRlck9iamVjdDo6
c19pbmZvID0geyAiTW9kdWxlTG9hZGVyIiwgJkJhc2U6OnNfaW5mbywgJm0KICAgICBtb2R1bGVE
ZWNsYXJhdGlvbkluc3RhbnRpYXRpb24gbW9kdWxlTG9hZGVyT2JqZWN0TW9kdWxlRGVjbGFyYXRp
b25JbnN0YW50aWF0aW9uIERvbnRFbnVtfEZ1bmN0aW9uIDIKICAgICBtb2R1bGVFdmFsdWF0aW9u
ICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0TW9kdWxlRXZhbHVhdGlvbiAgICAgICAg
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKICAgICBldmFsdWF0ZSAgICAgICAgICAgICAgICAg
ICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0RXZhbHVhdGUgICAgICAgICAgICAgICAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uIDIKLSAgICBsb2FkTW9kdWxlICAgICAgICAgICAgICAgICAgICAgbW9k
dWxlTG9hZGVyT2JqZWN0TG9hZE1vZHVsZSAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDIKICAgICBwcm92aWRlICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVy
T2JqZWN0UHJvdmlkZSAgICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDMK
KyAgICBsb2FkTW9kdWxlR3JhcGggICAgICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0TG9h
ZE1vZHVsZUdyYXBoICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBwcmVw
YXJlTW9kdWxlR3JhcGggICAgICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UHJlcGFyZU1vZHVs
ZUdyYXBoICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgICBsaW5rQW5kRXZhbHVh
dGVNb2R1bGVHcmFwaCAgICAgbW9kdWxlTG9hZGVyT2JqZWN0TGlua0FuZEV2YWx1YXRlTW9kdWxl
R3JhcGggICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICAgICBwYXJzZU1vZHVsZSAgICAgICAgICAg
ICAgICAgICAgbW9kdWxlTG9hZGVyT2JqZWN0UGFyc2VNb2R1bGUgICAgICAgICAgICAgICAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uIDIKICAgICByZXF1ZXN0ZWRNb2R1bGVzICAgICAgICAgICAgICAg
bW9kdWxlTG9hZGVyT2JqZWN0UmVxdWVzdGVkTW9kdWxlcyAgICAgICAgICAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uIDEKICAgICByZXNvbHZlICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlTG9h
ZGVyT2JqZWN0UmVzb2x2ZSAgICAgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
IDEKQEAgLTE0Niw5ICsxNDgsOSBAQCBKU1ZhbHVlIE1vZHVsZUxvYWRlck9iamVjdDo6cHJvdmlk
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUga2V5LCBTdGF0dXMgc3RhdHVzLAogICAgIHJldHVy
biBjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXMsIGFyZ3VtZW50
cyk7CiB9CiAKLUpTSW50ZXJuYWxQcm9taXNlKiBNb2R1bGVMb2FkZXJPYmplY3Q6OmxvYWRNb2R1
bGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG1vZHVsZU5hbWUsIEpTVmFsdWUgcmVmZXJyZXIp
CitKU0ludGVybmFsUHJvbWlzZSogTW9kdWxlTG9hZGVyT2JqZWN0Ojpsb2FkTW9kdWxlR3JhcGgo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG1vZHVsZU5hbWUsIEpTVmFsdWUgcmVmZXJyZXIpCiB7
Ci0gICAgSlNPYmplY3QqIGZ1bmN0aW9uID0ganNDYXN0PEpTT2JqZWN0Kj4oZ2V0KGV4ZWMsIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5sb2FkTW9kdWxlUHVibGljTmFtZSgp
KSk7CisgICAgSlNPYmplY3QqIGZ1bmN0aW9uID0ganNDYXN0PEpTT2JqZWN0Kj4oZ2V0KGV4ZWMs
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5sb2FkTW9kdWxlR3JhcGhQdWJs
aWNOYW1lKCkpKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICBDYWxsVHlwZSBjYWxsVHlw
ZSA9IEpTQzo6Z2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBBU1NFUlQoY2Fs
bFR5cGUgIT0gQ2FsbFR5cGVOb25lKTsKQEAgLTE2MCw2ICsxNjIsMzMgQEAgSlNJbnRlcm5hbFBy
b21pc2UqIE1vZHVsZUxvYWRlck9iamVjdDo6bG9hZE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgbW9kdWwKICAgICByZXR1cm4ganNDYXN0PEpTSW50ZXJuYWxQcm9taXNlKj4oY2FsbChl
eGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzLCBhcmd1bWVudHMpKTsKIH0K
IAorSlNJbnRlcm5hbFByb21pc2UqIE1vZHVsZUxvYWRlck9iamVjdDo6cHJlcGFyZU1vZHVsZUdy
YXBoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBtb2R1bGVOYW1lLCBKU1ZhbHVlIHJlZmVycmVy
KQoreworICAgIEpTT2JqZWN0KiBmdW5jdGlvbiA9IGpzQ2FzdDxKU09iamVjdCo+KGdldChleGVj
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkucHJlcGFyZU1vZHVsZUdyYXBo
UHVibGljTmFtZSgpKSk7CisgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgQ2FsbFR5cGUgY2Fs
bFR5cGUgPSBKU0M6OmdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAgQVNTRVJU
KGNhbGxUeXBlICE9IENhbGxUeXBlTm9uZSk7CisKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBh
cmd1bWVudHM7CisgICAgYXJndW1lbnRzLmFwcGVuZChtb2R1bGVOYW1lKTsKKyAgICBhcmd1bWVu
dHMuYXBwZW5kKHJlZmVycmVyKTsKKworICAgIHJldHVybiBqc0Nhc3Q8SlNJbnRlcm5hbFByb21p
c2UqPihjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXMsIGFyZ3Vt
ZW50cykpOworfQorCitKU0ludGVybmFsUHJvbWlzZSogTW9kdWxlTG9hZGVyT2JqZWN0OjpsaW5r
QW5kRXZhbHVhdGVNb2R1bGVHcmFwaChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbW9kdWxlS2V5
KQoreworICAgIEpTT2JqZWN0KiBmdW5jdGlvbiA9IGpzQ2FzdDxKU09iamVjdCo+KGdldChleGVj
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkubGlua0FuZEV2YWx1YXRlTW9k
dWxlR3JhcGhQdWJsaWNOYW1lKCkpKTsKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBDYWxs
VHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKKyAg
ICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKTsKKworICAgIE1hcmtlZEFyZ3VtZW50
QnVmZmVyIGFyZ3VtZW50czsKKyAgICBhcmd1bWVudHMuYXBwZW5kKG1vZHVsZUtleSk7CisKKyAg
ICByZXR1cm4ganNDYXN0PEpTSW50ZXJuYWxQcm9taXNlKj4oY2FsbChleGVjLCBmdW5jdGlvbiwg
Y2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzLCBhcmd1bWVudHMpKTsKK30KKwogSlNJbnRlcm5hbFBy
b21pc2UqIE1vZHVsZUxvYWRlck9iamVjdDo6cmVzb2x2ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgbmFtZSwgSlNWYWx1ZSByZWZlcnJlcikKIHsKICAgICBpZiAoT3B0aW9uczo6ZHVtcE1vZHVs
ZUxvYWRpbmdTdGF0ZSgpKQpAQCAtMjE5LDYgKzI0OCwyMSBAQCBKU0ludGVybmFsUHJvbWlzZSog
TW9kdWxlTG9hZGVyT2JqZWN0OjppbnN0YW50aWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
a2V5LAogICAgIHJldHVybiBkZWZlcnJlZC0+cHJvbWlzZSgpOwogfQogCitKU1ZhbHVlIE1vZHVs
ZUxvYWRlck9iamVjdDo6ZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGtleSwgSlNW
YWx1ZSBtb2R1bGVSZWNvcmRWYWx1ZSkKK3sKKyAgICBpZiAoT3B0aW9uczo6ZHVtcE1vZHVsZUxv
YWRpbmdTdGF0ZSgpKQorICAgICAgICBkYXRhTG9nKCJMb2FkZXIgW2V2YWx1YXRlXSAiLCBwcmlu
dGFibGVNb2R1bGVLZXkoZXhlYywga2V5KSwgIlxuIik7CisKKyAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOworICAgIGlmIChnbG9i
YWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPm1vZHVsZUxvYWRlckV2YWx1YXRl
KQorICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgp
LT5tb2R1bGVMb2FkZXJFdmFsdWF0ZShnbG9iYWxPYmplY3QsIGV4ZWMsIGtleSwgbW9kdWxlUmVj
b3JkVmFsdWUpOworCisgICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCA9IGpzRHluYW1p
Y0Nhc3Q8SlNNb2R1bGVSZWNvcmQqPihtb2R1bGVSZWNvcmRWYWx1ZSk7CisgICAgaWYgKCFtb2R1
bGVSZWNvcmQpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIHJldHVybiBtb2R1
bGVSZWNvcmQtPmV2YWx1YXRlKGV4ZWMpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG1vZHVsZUxvYWRlck9iamVjdFBhcnNlTW9kdWxlKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOwpAQCAtMjgxLDE4ICszMjUsNiBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdE1vZHVsZURlY2xhcmF0aW9uSW5zdGFu
dGlhdGlvbihFeAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0RXZhbHVh
dGUoRXhlY1N0YXRlKiBleGVjKQotewotICAgIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQg
PSBqc0R5bmFtaWNDYXN0PEpTTW9kdWxlUmVjb3JkKj4oZXhlYy0+YXJndW1lbnQoMCkpOwotICAg
IGlmICghbW9kdWxlUmVjb3JkKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwotCi0gICAgaWYgKE9wdGlvbnM6OmR1bXBNb2R1bGVMb2FkaW5nU3RhdGUoKSkK
LSAgICAgICAgZGF0YUxvZygiTG9hZGVyIFtldmFsdWF0ZV0gIiwgbW9kdWxlUmVjb3JkLT5tb2R1
bGVLZXkoKSwgIlxuIik7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG1vZHVsZVJlY29y
ZC0+ZXhlY3V0ZShleGVjKSk7Ci19Ci0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSBIb29rIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RSZXNvbHZlKEV4ZWNTdGF0ZSog
ZXhlYykKQEAgLTM0Niw0ICszNzgsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBt
b2R1bGVMb2FkZXJPYmplY3RJbnN0YW50aWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShsb2FkZXItPmluc3RhbnRpYXRlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50
KDApLCBleGVjLT5hcmd1bWVudCgxKSkpOwogfQogCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tIEFk
ZGl0aW9uYWwgSG9vayBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0RXZhbHVhdGUoRXhl
Y1N0YXRlKiBleGVjKQoreworICAgIC8vIFRvIGluc3RydW1lbnQgYW5kIHJldHJpZXZlIHRoZSBl
cnJvcnMgcmFpc2VkIGZyb20gdGhlIG1vZHVsZSBleGVjdXRpb24sCisgICAgLy8gd2UgaW5zZXJ0
ZWQgdGhlIGhvb2sgcG9pbnQgaGVyZS4KKworICAgIE1vZHVsZUxvYWRlck9iamVjdCogbG9hZGVy
ID0ganNEeW5hbWljQ2FzdDxNb2R1bGVMb2FkZXJPYmplY3QqPihleGVjLT50aGlzVmFsdWUoKSk7
CisgICAgaWYgKCFsb2FkZXIpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShsb2FkZXItPmV2YWx1YXRlKGV4
ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBleGVjLT5hcmd1bWVudCgxKSkpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01v
ZHVsZUxvYWRlck9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxl
TG9hZGVyT2JqZWN0LmgKaW5kZXggMTJjZmU1NmVlYmI2YzQyN2MwZWY3OTAyMWY5OTdjNmIwZDM4
NGExZi4uMTk0OTc1MjRmYTZmNDk0ZTM5NGFkNTAwMDI3NGMwYTM0ODkxYmE1NCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmgKQEAg
LTY0LDcgKzY0LDkgQEAgY2xhc3MgTW9kdWxlTG9hZGVyT2JqZWN0IDogcHVibGljIEpTTm9uRmlu
YWxPYmplY3QgewogCiAgICAgLy8gQVBJcyB0byBjb250cm9sIHRoZSBtb2R1bGUgbG9hZGVyLgog
ICAgIEpTVmFsdWUgcHJvdmlkZShFeGVjU3RhdGUqLCBKU1ZhbHVlIGtleSwgU3RhdHVzLCBjb25z
dCBTdHJpbmcmKTsKLSAgICBKU0ludGVybmFsUHJvbWlzZSogbG9hZE1vZHVsZShFeGVjU3RhdGUq
LCBKU1ZhbHVlIG1vZHVsZU5hbWUsIEpTVmFsdWUgcmVmZXJyZXIpOworICAgIEpTSW50ZXJuYWxQ
cm9taXNlKiBsb2FkTW9kdWxlR3JhcGgoRXhlY1N0YXRlKiwgSlNWYWx1ZSBtb2R1bGVOYW1lLCBK
U1ZhbHVlIHJlZmVycmVyKTsKKyAgICBKU0ludGVybmFsUHJvbWlzZSogcHJlcGFyZU1vZHVsZUdy
YXBoKEV4ZWNTdGF0ZSosIEpTVmFsdWUgbW9kdWxlTmFtZSwgSlNWYWx1ZSByZWZlcnJlcik7Cisg
ICAgSlNJbnRlcm5hbFByb21pc2UqIGxpbmtBbmRFdmFsdWF0ZU1vZHVsZUdyYXBoKEV4ZWNTdGF0
ZSosIEpTVmFsdWUgbW9kdWxlS2V5KTsKIAogICAgIC8vIFBsYXRmb3JtIGRlcGVuZGVudCBob29r
ZWQgQVBJcy4KICAgICBKU0ludGVybmFsUHJvbWlzZSogcmVzb2x2ZShFeGVjU3RhdGUqLCBKU1Zh
bHVlIG5hbWUsIEpTVmFsdWUgcmVmZXJyZXIpOwpAQCAtNzIsNiArNzQsOSBAQCBjbGFzcyBNb2R1
bGVMb2FkZXJPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgSlNJbnRlcm5h
bFByb21pc2UqIHRyYW5zbGF0ZShFeGVjU3RhdGUqLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSBwYXls
b2FkKTsKICAgICBKU0ludGVybmFsUHJvbWlzZSogaW5zdGFudGlhdGUoRXhlY1N0YXRlKiwgSlNW
YWx1ZSBrZXksIEpTVmFsdWUgc291cmNlKTsKIAorICAgIC8vIEFkZGl0aW9uYWwgcGxhdGZvcm0g
ZGVwZW5kZW50IGhvb2tlZCBBUElzLgorICAgIEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0YXRlKiwg
SlNWYWx1ZSBrZXksIEpTVmFsdWUgbW9kdWxlUmVjb3JkKTsKKwogICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJv
cGVydHlTbG90Jik7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0Jhc2UuY3BwCmluZGV4IGQ0ZjAwMWQyOGZiZDNlOTg5M2YzMTliOGIzMDAy
ZDFjMDEyOWViODAuLjc5Yjc0MGJlNWUxYTI2MDBjNDFkNzMyMTI1MTVmOGZmMTEyYmU5NjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAt
NTYsNyArNTYsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRBbGxvd0FjY2Vzc0Zyb20oY29uc3QgSlNH
bG9iYWxPYmplY3QqIHRoaXNPYmplY3QsIEV4ZWNTdGF0ZSogZQogCiBjb25zdCBDbGFzc0luZm8g
SlNET01XaW5kb3dCYXNlOjpzX2luZm8gPSB7ICJXaW5kb3ciLCAmSlNET01HbG9iYWxPYmplY3Q6
OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0RPTVdpbmRvd0Jhc2UpIH07CiAKLWNv
bnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTRE9NV2luZG93QmFzZTo6c19nbG9iYWxPYmpl
Y3RNZXRob2RUYWJsZSA9IHsgJnNob3VsZEFsbG93QWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmls
aW5nLCAmc3VwcG9ydHNSaWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmph
dmFTY3JpcHRSdW50aW1lRmxhZ3MsICZxdWV1ZVRhc2tUb0V2ZW50TG9vcCwgJnNob3VsZEludGVy
cnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxw
dHIgfTsKK2NvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTRE9NV2luZG93QmFzZTo6c19n
bG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsgJnNob3VsZEFsbG93QWNjZXNzRnJvbSwgJnN1cHBv
cnRzUHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNj
cmlwdCwgJmphdmFTY3JpcHRSdW50aW1lRmxhZ3MsICZxdWV1ZVRhc2tUb0V2ZW50TG9vcCwgJnNo
b3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQsIG51bGxwdHIsIG51bGxwdHIsIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIgfTsKIAogSlNET01XaW5kb3dCYXNlOjpKU0RPTVdpbmRvd0Jh
c2UoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxET01XaW5kb3c+IHdp
bmRvdywgSlNET01XaW5kb3dTaGVsbCogc2hlbGwpCiAgICAgOiBKU0RPTUdsb2JhbE9iamVjdCh2
bSwgc3RydWN0dXJlLCAmc2hlbGwtPndvcmxkKCksICZzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxT
Y29wZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxT
Y29wZUJhc2UuY3BwCmluZGV4IDUwNDRiYzE3ODM1MTNiOWIxYTI2YmQzYmQxY2I1YzAwYjcwYTEw
ZDAuLmFjZDYxN2U4Njk4OTI5MDc1Mzc2ZTU4MzJhYjI4M2YyZDJmYTc5MDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5j
cHAKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBDbGFzc0lu
Zm8gSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnNfaW5mbyA9IHsgIldvcmtlckdsb2JhbFNjb3Bl
IiwgJkpTRE9NR2xvYmFsT2JqZWN0OjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNX
b3JrZXJHbG9iYWxTY29wZUJhc2UpIH07CiAKLWNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxl
IEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAm
YWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291cmNl
SW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRSdW50aW1lRmxhZ3MsICZx
dWV1ZVRhc2tUb0V2ZW50TG9vcCwgJnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQs
IG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIgfTsKK2NvbnN0IEdsb2JhbE9iamVj
dE1ldGhvZFRhYmxlIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpzX2dsb2JhbE9iamVjdE1ldGhv
ZFRhYmxlID0geyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAmc3VwcG9y
dHNSaWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRSdW50
aW1lRmxhZ3MsICZxdWV1ZVRhc2tUb0V2ZW50TG9vcCwgJnNob3VsZEludGVycnVwdFNjcmlwdEJl
Zm9yZVRpbWVvdXQsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIg
fTsKIAogSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OkpTV29ya2VyR2xvYmFsU2NvcGVCYXNlKEpT
Qzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBQYXNzUmVmUHRyPFdvcmtlckds
b2JhbFNjb3BlPiBpbXBsKQogICAgIDogSlNET01HbG9iYWxPYmplY3Qodm0sIHN0cnVjdHVyZSwg
Jm5vcm1hbFdvcmxkKHZtKSwgJnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261366</attachid>
            <date>2015-09-16 21:57:56 -0700</date>
            <delta_ts>2015-09-17 13:19:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149129-20150916215744.patch</filename>
            <type>text/plain</type>
            <size>30264</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5NzQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
MDUxZTVlMWM0YTMyNmU2NDMyODU4ZjA4NTU0OTk1ODFhODkzMzBlLi42YTIzNzM5NjY3ODNmNzFj
M2Q3NGVjM2E3NjdiZWY5Njc1M2VmMmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NiBAQAorMjAxNS0wOS0xNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRVM2XSBBZGQgbW9yZSBmaW5lLWdyYWluZWQgQVBJcyBhbmQgYWRk
aXRpb25hbCBob29rcyB0byBjb250cm9sIG1vZHVsZSBsb2FkZXIgZnJvbSBXZWJDb3JlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDkxMjkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBiZWhhdmlvciBj
aGFuZ2UuCisKKyAgICAgICAgTW9kdWxlIHRhZyBgPHNjcmlwdCB0eXBlPSJtb2R1bGU+YCB3aWxs
IGJlIGV4ZWN1dGVkIGFzeW5jaHJvbm91c2x5LgorICAgICAgICBCdXQgd2Ugd291bGQgbGlrZSB0
byBmZXRjaCB0aGUgcmVzb3VyY2VzIGJlZm9yZSB3aGVuIHRoZSBwb3N0VGFzay1lZCB0YXNrIGlz
IHBlcmZvcm1lZC4KKyAgICAgICAgU28gaW5zdGVhZCBvZiAxIEFQSSB0aGF0IGZldGNoLCBpbnN0
YW50aWF0ZSBhbmQgZXhlY3V0ZSB0aGUgbW9kdWxlIGdyYXBoLAorICAgICAgICB3ZSBuZWVkIDIg
ZmluZS1ncmFpbmVkIEFQSXMuCisKKyAgICAgICAgMS4gRmV0Y2ggYW5kIGluaXRpYWxpemUgYSBt
b2R1bGUgZ3JhcGgsIGJ1dCBub3QgZXhlY3V0ZSBpdCB5ZXQuCisgICAgICAgIDIuIExpbmsgYW5k
IGV4ZWN1dGUgYSBtb2R1bGUgZ3JhcGggc3BlY2lmaWVkIGJ5IHRoZSBrZXkgKHRoaXMgd2lsbCBi
ZSBpbnZva2VkIGFzeW5jaHJvbm91c2x5KS4KKworICAgICAgICBBbmQgdG8gaW5zdHJ1bWVudCB0
aGUgc2NyaXB0IGV4ZWN1dGlvbiAobGlrZSByZXBvcnRpbmcgdGhlIGV4ZWN1dGlvbiB0aW1lIG9m
IHRoZSBtb2R1bGUgdG8KKyAgICAgICAgdGhlIGluc3BlY3RvciksIHdlIG5lZWQgYSBob29rIHRv
IGluamVjdCBjb2RlIGFyb3VuZCBhbiBleGVjdXRpb24gb2YgYSBtb2R1bGUgYm9keS4KKworICAg
ICAgICAqIGJ1aWx0aW5zL01vZHVsZUxvYWRlck9iamVjdC5qczoKKyAgICAgICAgKG1vZHVsZUV2
YWx1YXRpb24pOgorICAgICAgICAobG9hZE1vZHVsZUdyYXBoKToKKyAgICAgICAgKHByZXBhcmVN
b2R1bGVHcmFwaCk6CisgICAgICAgIChsaW5rQW5kRXZhbHVhdGVNb2R1bGVHcmFwaCk6CisgICAg
ICAgIChsb2FkTW9kdWxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAo
ZnVuY3Rpb25Mb2FkTW9kdWxlKToKKyAgICAgICAgKHJ1bldpdGhTY3JpcHRzKToKKyAgICAgICAg
KiBydW50aW1lL0NvbXBsZXRpb24uY3BwOgorICAgICAgICAoSlNDOjppZGVudGlmaWVyVG9KU1Zh
bHVlKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlU3ltYm9sRm9yRW50cnlQb2ludE1vZHVsZSk6Cisg
ICAgICAgIChKU0M6OnJlamVjdFByb21pc2UpOgorICAgICAgICAoSlNDOjpsb2FkTW9kdWxlR3Jh
cGgpOgorICAgICAgICAoSlNDOjpwcmVwYXJlTW9kdWxlR3JhcGgpOgorICAgICAgICAoSlNDOjps
aW5rQW5kRXZhbHVhdGVNb2R1bGVHcmFwaCk6CisgICAgICAgIChKU0M6OmV2YWx1YXRlTW9kdWxl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0NvbXBsZXRpb24uaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHA6CisgICAgICAgIChK
U0M6OkpTTW9kdWxlUmVjb3JkOjpldmFsdWF0ZSk6CisgICAgICAgIChKU0M6OkpTTW9kdWxlUmVj
b3JkOjpleGVjdXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlUmVjb3Jk
Lmg6CisgICAgICAgICogcnVudGltZS9Nb2R1bGVMb2FkZXJPYmplY3QuY3BwOgorICAgICAgICAo
SlNDOjpNb2R1bGVMb2FkZXJPYmplY3Q6OmxvYWRNb2R1bGVHcmFwaCk6CisgICAgICAgIChKU0M6
Ok1vZHVsZUxvYWRlck9iamVjdDo6cHJlcGFyZU1vZHVsZUdyYXBoKToKKyAgICAgICAgKEpTQzo6
TW9kdWxlTG9hZGVyT2JqZWN0OjpsaW5rQW5kRXZhbHVhdGVNb2R1bGVHcmFwaCk6CisgICAgICAg
IChKU0M6Ok1vZHVsZUxvYWRlck9iamVjdDo6ZXZhbHVhdGUpOgorICAgICAgICAoSlNDOjptb2R1
bGVMb2FkZXJPYmplY3RFdmFsdWF0ZSk6CisgICAgICAgIChKU0M6Ok1vZHVsZUxvYWRlck9iamVj
dDo6bG9hZE1vZHVsZSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9Nb2R1bGVMb2FkZXJP
YmplY3QuaDoKKwogMjAxNS0wOS0xNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAogICAgICAgICBbRVM2XSBDYWNoZSB0aGUgcmVzb2x1dGlvbiByZXN1bHQgaW4gSlNN
b2R1bGVSZWNvcmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmODI0M2QwY2Y3NjU3MDE4MmNkYmQ5MjkxMzJiMzE0
ZGJkYjVmOTg0Li4yN2I0YWUyMjA5NDAzYWM1NDJiYjk4YzE4ZmNjY2VkNmZmYjBkNmYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTUtMDktMTYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTNl0gQWRkIG1vcmUgZmluZS1ncmFpbmVk
IEFQSXMgYW5kIGFkZGl0aW9uYWwgaG9va3MgdG8gY29udHJvbCBtb2R1bGUgbG9hZGVyIGZyb20g
V2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ5MTI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Tm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dC
YXNlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5j
cHA6CisKIDIwMTUtMDktMTQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlbmFtZSBjdXJyZW50IGNvbmNyZXRlIElEQiBpbXBsZW1lbnRhdGlvbiB0byAiTGVn
YWN5Ii4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1bGVM
b2FkZXJPYmplY3QuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvTW9kdWxlTG9h
ZGVyT2JqZWN0LmpzCmluZGV4IDE2MDYyZTZkNzRkYTNiNzZlODFiNTg1ZmVlMWNlZmMzMDBjYzUx
MzUuLjJlMDg2YjA0ZTYwNzgwOGEwOTdjNzA1NzE3ODE0MDg3ZjAwZDUwMGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Nb2R1bGVMb2FkZXJPYmplY3QuanMKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL01vZHVsZUxvYWRlck9iamVjdC5qcwpA
QCAtNDgzLDIyICs0ODMsMTAgQEAgZnVuY3Rpb24gbW9kdWxlRXZhbHVhdGlvbihtb2R1bGVSZWNv
cmQpCiAgICAgICAgIHZhciByZXF1aXJlZE1vZHVsZVJlY29yZCA9IHBhaXIudmFsdWU7CiAgICAg
ICAgIHRoaXMubW9kdWxlRXZhbHVhdGlvbihyZXF1aXJlZE1vZHVsZVJlY29yZCk7CiAgICAgfQot
ICAgIHRoaXMuZXZhbHVhdGUobW9kdWxlUmVjb3JkKTsKKyAgICB0aGlzLmV2YWx1YXRlKGVudHJ5
LmtleSwgbW9kdWxlUmVjb3JkKTsKIH0KIAotZnVuY3Rpb24gbG9hZE1vZHVsZShtb2R1bGVOYW1l
LCByZWZlcnJlcikKLXsKLSAgICAidXNlIHN0cmljdCI7Ci0KLSAgICB2YXIgbG9hZGVyID0gdGhp
czsKLSAgICAvLyBMb2FkZXIucmVzb2x2ZSBob29rIHBvaW50LgotICAgIC8vIHJlc29sdmU6IG1v
ZHVsZU5hbWUgPT4gUHJvbWlzZShtb2R1bGVLZXkpCi0gICAgLy8gVGFrZSB0aGUgbmFtZSBhbmQg
cmVzb2x2ZSBpdCB0byB0aGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSByZXNvdXJjZSBsb2Nh
dGlvbi4KLSAgICAvLyBGb3IgZXhhbXBsZSwgdGFrZSB0aGUgImpxdWVyeSIgYW5kIHJldHVybiB0
aGUgVVJMIGZvciB0aGUgcmVzb3VyY2UuCi0gICAgcmV0dXJuIHRoaXMucmVzb2x2ZShtb2R1bGVO
YW1lLCByZWZlcnJlcikudGhlbihmdW5jdGlvbiAoa2V5KSB7Ci0gICAgICAgIHJldHVybiBsb2Fk
ZXIucmVxdWVzdFJlYWR5KGtleSk7Ci0gICAgfSk7Ci19CisvLyBBUElzIHRvIGNvbnRyb2wgdGhl
IG1vZHVsZSBsb2FkZXIuCiAKIGZ1bmN0aW9uIHByb3ZpZGUoa2V5LCBzdGFnZSwgdmFsdWUpCiB7
CkBAIC01MzUsMyArNTIzLDQwIEBAIGZ1bmN0aW9uIHByb3ZpZGUoa2V5LCBzdGFnZSwgdmFsdWUp
CiAKICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiUmVxdWVzdGVkIG1vZHVsZSBpcyBhbHJlYWR5
IHJlYWR5IHRvIGJlIGV4ZWN1dGVkLiIpOwogfQorCitmdW5jdGlvbiBsb2FkTW9kdWxlR3JhcGgo
bW9kdWxlTmFtZSwgcmVmZXJyZXIpCit7CisgICAgInVzZSBzdHJpY3QiOworCisgICAgdmFyIGxv
YWRlciA9IHRoaXM7CisgICAgLy8gTG9hZGVyLnJlc29sdmUgaG9vayBwb2ludC4KKyAgICAvLyBy
ZXNvbHZlOiBtb2R1bGVOYW1lID0+IFByb21pc2UobW9kdWxlS2V5KQorICAgIC8vIFRha2UgdGhl
IG5hbWUgYW5kIHJlc29sdmUgaXQgdG8gdGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcmVz
b3VyY2UgbG9jYXRpb24uCisgICAgLy8gRm9yIGV4YW1wbGUsIHRha2UgdGhlICJqcXVlcnkiIGFu
ZCByZXR1cm4gdGhlIFVSTCBmb3IgdGhlIHJlc291cmNlLgorICAgIHJldHVybiB0aGlzLnJlc29s
dmUobW9kdWxlTmFtZSwgcmVmZXJyZXIpLnRoZW4oZnVuY3Rpb24gKGtleSkgeworICAgICAgICBy
ZXR1cm4gbG9hZGVyLnJlcXVlc3RSZWFkeShrZXkpOworICAgIH0pOworfQorCitmdW5jdGlvbiBw
cmVwYXJlTW9kdWxlR3JhcGgobW9kdWxlTmFtZSwgcmVmZXJyZXIpCit7CisgICAgInVzZSBzdHJp
Y3QiOworCisgICAgdmFyIGxvYWRlciA9IHRoaXM7CisgICAgLy8gTG9hZGVyLnJlc29sdmUgaG9v
ayBwb2ludC4KKyAgICAvLyByZXNvbHZlOiBtb2R1bGVOYW1lID0+IFByb21pc2UobW9kdWxlS2V5
KQorICAgIC8vIFRha2UgdGhlIG5hbWUgYW5kIHJlc29sdmUgaXQgdG8gdGhlIHVuaXF1ZSBpZGVu
dGlmaWVyIGZvciB0aGUgcmVzb3VyY2UgbG9jYXRpb24uCisgICAgLy8gRm9yIGV4YW1wbGUsIHRh
a2UgdGhlICJqcXVlcnkiIGFuZCByZXR1cm4gdGhlIFVSTCBmb3IgdGhlIHJlc291cmNlLgorICAg
IHJldHVybiB0aGlzLnJlc29sdmUobW9kdWxlTmFtZSwgcmVmZXJyZXIpLnRoZW4oZnVuY3Rpb24g
KGtleSkgeworICAgICAgICByZXR1cm4gbG9hZGVyLnJlcXVlc3RJbnN0YW50aWF0ZUFsbChrZXkp
OworICAgIH0pLnRoZW4oZnVuY3Rpb24gKGVudHJ5KSB7CisgICAgICAgIHJldHVybiBlbnRyeS5r
ZXk7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIGxpbmtBbmRFdmFsdWF0ZU1vZHVsZUdyYXBoKGtl
eSkKK3sKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICByZXR1cm4gdGhpcy5yZXF1ZXN0UmVhZHko
a2V5KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggNWNkOTI3ODg0MmY2ZGQ1NWU0Zjg4MjRi
MWRhMDUzYjhhN2RjZjJhZS4uOGJlOTg0MmM3MDViOWEzZjYwYmY2ZGIxZDVjNDdiNjA4Y2NlZjc4
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTcwOSw3ICs3MDksNyBAQCBjbGFzcyBHbG9iYWxP
YmplY3QgOiBwdWJsaWMgSlNHbG9iYWxPYmplY3QgewogfTsKIAogY29uc3QgQ2xhc3NJbmZvIEds
b2JhbE9iamVjdDo6c19pbmZvID0geyAiZ2xvYmFsIiwgJkpTR2xvYmFsT2JqZWN0OjpzX2luZm8s
IG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoR2xvYmFsT2JqZWN0KSB9OwotY29uc3QgR2xv
YmFsT2JqZWN0TWV0aG9kVGFibGUgR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRh
YmxlID0geyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAmc3VwcG9ydHNS
aWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRSdW50aW1l
RmxhZ3MsIDAsICZzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0LCAmbW9kdWxlTG9h
ZGVyUmVzb2x2ZSwgJm1vZHVsZUxvYWRlckZldGNoLCBudWxscHRyLCBudWxscHRyIH07Citjb25z
dCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0
aG9kVGFibGUgPSB7ICZhbGxvd3NBY2Nlc3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcsICZzdXBw
b3J0c1JpY2hTb3VyY2VJbmZvLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdFJ1
bnRpbWVGbGFncywgMCwgJnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQsICZtb2R1
bGVMb2FkZXJSZXNvbHZlLCAmbW9kdWxlTG9hZGVyRmV0Y2gsIG51bGxwdHIsIG51bGxwdHIsIG51
bGxwdHIgfTsKIAogCiBHbG9iYWxPYmplY3Q6Okdsb2JhbE9iamVjdChWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQpAQCAtMTQ3Myw3ICsxNDczLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvbkxvYWRNb2R1bGUoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmICghZmV0
Y2hTY3JpcHRGcm9tTG9jYWxGaWxlU3lzdGVtKGZpbGVOYW1lLCBzY3JpcHQpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3Jl
YXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDb3VsZCBub3Qgb3BlbiBmaWxlLiIpKSkpOwog
Ci0gICAgSlNJbnRlcm5hbFByb21pc2UqIHByb21pc2UgPSBldmFsdWF0ZU1vZHVsZShleGVjLCBm
aWxlTmFtZSk7CisgICAgSlNJbnRlcm5hbFByb21pc2UqIHByb21pc2UgPSBsb2FkTW9kdWxlR3Jh
cGgoZXhlYywgZmlsZU5hbWUpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIApAQCAtMTY0Niw3ICsx
NjQ2LDcgQEAgc3RhdGljIGJvb2wgcnVuV2l0aFNjcmlwdHMoR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IFZlY3RvcjxTY3JpcHQ+JiBzY3IKICAgICAgICAgaWYgKHNjcmlwdHNbaV0u
aXNGaWxlKSB7CiAgICAgICAgICAgICBmaWxlTmFtZSA9IHNjcmlwdHNbaV0uYXJndW1lbnQ7CiAg
ICAgICAgICAgICBpZiAobW9kdWxlKQotICAgICAgICAgICAgICAgIHByb21pc2UgPSBldmFsdWF0
ZU1vZHVsZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZmlsZU5hbWUpOworICAgICAgICAg
ICAgICAgIHByb21pc2UgPSBsb2FkTW9kdWxlR3JhcGgoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVj
KCksIGZpbGVOYW1lKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGlmICgh
ZmV0Y2hTY3JpcHRGcm9tTG9jYWxGaWxlU3lzdGVtKGZpbGVOYW1lLCBzY3JpcHRCdWZmZXIpKQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIGZhaWwgZWFybHkgc28gd2UgY2Fu
IGNhdGNoIG1pc3NpbmcgZmlsZXMKQEAgLTE2NjIsNyArMTY2Miw3IEBAIHN0YXRpYyBib29sIHJ1
bldpdGhTY3JpcHRzKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8U2Ny
aXB0PiYgc2NyCiAKICAgICAgICAgaWYgKG1vZHVsZSkgewogICAgICAgICAgICAgaWYgKCFwcm9t
aXNlKQotICAgICAgICAgICAgICAgIHByb21pc2UgPSBldmFsdWF0ZU1vZHVsZShnbG9iYWxPYmpl
Y3QtPmdsb2JhbEV4ZWMoKSwganNjU291cmNlKHNjcmlwdEJ1ZmZlciwgZmlsZU5hbWUpKTsKKyAg
ICAgICAgICAgICAgICBwcm9taXNlID0gbG9hZE1vZHVsZUdyYXBoKGdsb2JhbE9iamVjdC0+Z2xv
YmFsRXhlYygpLCBqc2NTb3VyY2Uoc2NyaXB0QnVmZmVyLCBmaWxlTmFtZSkpOwogICAgICAgICAg
ICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCktPmNsZWFyRXhjZXB0aW9uKCk7CiAgICAgICAg
ICAgICBwcm9taXNlLT50aGVuKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBudWxscHRyLCBl
cnJvckhhbmRsZXIpOwogICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT52bSgpLmRyYWluTWljcm90
YXNrcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxl
dGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcApp
bmRleCBiNWY2MjNhY2RhNTIzMDUxMTg3ZDBkYjU2ODg1MjEyNjJkODYyNDhjLi4wZjE0MjAyNmZk
NzY0ZmRmYzM3MzJmMWViZWNiMzJmZWIzNjMzOGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21wbGV0aW9uLmNwcApAQCAtMTEzLDYzICsxMTMsMTEyIEBAIEpTVmFsdWUg
ZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTVmFs
dWUgdGhpc1ZhbHVlLCBOCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIEpTSW50ZXJu
YWxQcm9taXNlKiBldmFsdWF0ZU1vZHVsZShjb25zdCBKU0xvY2tIb2xkZXImLCBFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgbW9kdWxlTmFtZSwg
SlNWYWx1ZSByZWZlcnJlcikKK3N0YXRpYyBKU1ZhbHVlIGlkZW50aWZpZXJUb0pTVmFsdWUoVk0m
IHZtLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogewotICAgIHJldHVybiBnbG9iYWxP
YmplY3QtPm1vZHVsZUxvYWRlcigpLT5sb2FkTW9kdWxlKGV4ZWMsIG1vZHVsZU5hbWUsIHJlZmVy
cmVyKTsKKyAgICBpZiAoaWRlbnRpZmllci5pc1N5bWJvbCgpKQorICAgICAgICByZXR1cm4gU3lt
Ym9sOjpjcmVhdGUodm0sIHN0YXRpY19jYXN0PFN5bWJvbEltcGwmPigqaWRlbnRpZmllci5pbXBs
KCkpKTsKKyAgICByZXR1cm4ganNTdHJpbmcoJnZtLCBpZGVudGlmaWVyLmltcGwoKSk7CiB9CiAK
LXN0YXRpYyBKU0ludGVybmFsUHJvbWlzZSogZXZhbHVhdGVNb2R1bGUoY29uc3QgSlNMb2NrSG9s
ZGVyJiBsb2NrLCBFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpCitzdGF0aWMgU3ltYm9sKiBjcmVhdGVTeW1i
b2xGb3JFbnRyeVBvaW50TW9kdWxlKFZNJiB2bSkKIHsKLSAgICBKU1ZhbHVlIG1vZHVsZU5hbWVW
YWx1ZTsKLSAgICBpZiAobW9kdWxlTmFtZS5pc1N5bWJvbCgpKQotICAgICAgICBtb2R1bGVOYW1l
VmFsdWUgPSBTeW1ib2w6OmNyZWF0ZShleGVjLT52bSgpLCBzdGF0aWNfY2FzdDxTeW1ib2xJbXBs
Jj4oKm1vZHVsZU5hbWUuaW1wbCgpKSk7Ci0gICAgZWxzZQotICAgICAgICBtb2R1bGVOYW1lVmFs
dWUgPSBqc1N0cmluZygmZXhlYy0+dm0oKSwgbW9kdWxlTmFtZS5pbXBsKCkpOworICAgIC8vIEdl
bmVyYXRlIHRoZSB1bmlxdWUga2V5IGZvciB0aGUgc291cmNlLXByb3ZpZGVkIG1vZHVsZS4KKyAg
ICBQcml2YXRlTmFtZSBwcml2YXRlTmFtZShQcml2YXRlTmFtZTo6RGVzY3JpcHRpb24sICJFbnRy
eVBvaW50TW9kdWxlIik7CisgICAgcmV0dXJuIFN5bWJvbDo6Y3JlYXRlKHZtLCAqcHJpdmF0ZU5h
bWUudWlkKCkpOworfQogCi0gICAgcmV0dXJuIGV2YWx1YXRlTW9kdWxlKGxvY2ssIGV4ZWMsIGds
b2JhbE9iamVjdCwgbW9kdWxlTmFtZVZhbHVlLCBqc1VuZGVmaW5lZCgpKTsKK3N0YXRpYyBKU0lu
dGVybmFsUHJvbWlzZSogcmVqZWN0UHJvbWlzZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgQVNTRVJUKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsK
KyAgICBKU1ZhbHVlIGV4Y2VwdGlvbiA9IGV4ZWMtPmV4Y2VwdGlvbigpLT52YWx1ZSgpOworICAg
IGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CisgICAgSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZCog
ZGVmZXJyZWQgPSBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoZXhlYywgZ2xvYmFs
T2JqZWN0KTsKKyAgICBkZWZlcnJlZC0+cmVqZWN0KGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgcmV0
dXJuIGRlZmVycmVkLT5wcm9taXNlKCk7CiB9CiAKLUpTSW50ZXJuYWxQcm9taXNlKiBldmFsdWF0
ZU1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKK3N0YXRp
YyBKU0ludGVybmFsUHJvbWlzZSogbG9hZE1vZHVsZUdyYXBoKGNvbnN0IEpTTG9ja0hvbGRlciYs
IEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBt
b2R1bGVOYW1lLCBKU1ZhbHVlIHJlZmVycmVyKQoreworICAgIHJldHVybiBnbG9iYWxPYmplY3Qt
Pm1vZHVsZUxvYWRlcigpLT5sb2FkTW9kdWxlR3JhcGgoZXhlYywgbW9kdWxlTmFtZSwgcmVmZXJy
ZXIpOworfQorCitzdGF0aWMgSlNJbnRlcm5hbFByb21pc2UqIGxvYWRNb2R1bGVHcmFwaChjb25z
dCBKU0xvY2tIb2xkZXImIGxvY2ssIEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSkKK3sKKyAgICByZXR1cm4g
bG9hZE1vZHVsZUdyYXBoKGxvY2ssIGV4ZWMsIGdsb2JhbE9iamVjdCwgaWRlbnRpZmllclRvSlNW
YWx1ZShleGVjLT52bSgpLCBtb2R1bGVOYW1lKSwganNVbmRlZmluZWQoKSk7Cit9CisKK0pTSW50
ZXJuYWxQcm9taXNlKiBsb2FkTW9kdWxlR3JhcGgoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJp
bmcmIG1vZHVsZU5hbWUpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CiAgICAgUkVM
RUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRocmVhZERh
dGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVCghZXhlYy0+dm0o
KS5pc0NvbGxlY3RvckJ1c3koKSk7CiAKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpOworICAgIHJldHVybiBsb2FkTW9kdWxlR3Jh
cGgobG9jaywgZXhlYywgZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKGV4ZWMsIG1vZHVsZU5hbWUpKTsKK30KIAotICAgIC8vIEdlbmVyYXRlIHRoZSB1
bmlxdWUga2V5IGZvciB0aGUgc291cmNlLXByb3ZpZGVkIG1vZHVsZS4KLSAgICBQcml2YXRlTmFt
ZSBwcml2YXRlTmFtZShQcml2YXRlTmFtZTo6RGVzY3JpcHRpb24sICJFbnRyeVBvaW50TW9kdWxl
Iik7Ci0gICAgU3ltYm9sKiBrZXkgPSBTeW1ib2w6OmNyZWF0ZShleGVjLT52bSgpLCAqcHJpdmF0
ZU5hbWUudWlkKCkpOworSlNJbnRlcm5hbFByb21pc2UqIGxvYWRNb2R1bGVHcmFwaChFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKK3sKKyAgICBKU0xvY2tIb2xkZXIg
bG9jayhleGVjKTsKKyAgICBSRUxFQVNFX0FTU0VSVChleGVjLT52bSgpLmF0b21pY1N0cmluZ1Rh
YmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAgIFJFTEVB
U0VfQVNTRVJUKCFleGVjLT52bSgpLmlzQ29sbGVjdG9yQnVzeSgpKTsKKworICAgIFN5bWJvbCog
a2V5ID0gY3JlYXRlU3ltYm9sRm9yRW50cnlQb2ludE1vZHVsZShleGVjLT52bSgpKTsKKworICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0
KCk7CiAKICAgICAvLyBJbnNlcnQgdGhlIGdpdmVuIHNvdXJjZSBjb2RlIHRvIHRoZSBNb2R1bGVM
b2FkZXIgcmVnaXN0cnkgYXMgdGhlIGZldGNoZWQgcmVnaXN0cnkgZW50cnkuCiAgICAgZ2xvYmFs
T2JqZWN0LT5tb2R1bGVMb2FkZXIoKS0+cHJvdmlkZShleGVjLCBrZXksIE1vZHVsZUxvYWRlck9i
amVjdDo6U3RhdHVzOjpGZXRjaCwgc291cmNlLnRvU3RyaW5nKCkpOwotICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkgewotICAgICAgICBKU1ZhbHVlIGV4Y2VwdGlvbiA9IGV4ZWMtPmV4Y2Vw
dGlvbigpLT52YWx1ZSgpOwotICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOwotICAgICAg
ICBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9IEpTSW50ZXJuYWxQcm9taXNl
RGVmZXJyZWQ6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QpOwotICAgICAgICBkZWZlcnJlZC0+
cmVqZWN0KGV4ZWMsIGV4Y2VwdGlvbik7Ci0gICAgICAgIHJldHVybiBkZWZlcnJlZC0+cHJvbWlz
ZSgpOwotICAgIH0KKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVy
biByZWplY3RQcm9taXNlKGV4ZWMsIGdsb2JhbE9iamVjdCk7CisKKyAgICByZXR1cm4gbG9hZE1v
ZHVsZUdyYXBoKGxvY2ssIGV4ZWMsIGdsb2JhbE9iamVjdCwga2V5LCBqc1VuZGVmaW5lZCgpKTsK
K30KKworc3RhdGljIEpTSW50ZXJuYWxQcm9taXNlKiBwcmVwYXJlTW9kdWxlR3JhcGgoY29uc3Qg
SlNMb2NrSG9sZGVyJiwgRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIG1vZHVsZU5hbWUsIEpTVmFsdWUgcmVmZXJyZXIpCit7CisgICAgcmV0dXJu
IGdsb2JhbE9iamVjdC0+bW9kdWxlTG9hZGVyKCktPnByZXBhcmVNb2R1bGVHcmFwaChleGVjLCBt
b2R1bGVOYW1lLCByZWZlcnJlcik7Cit9CisKK3N0YXRpYyBKU0ludGVybmFsUHJvbWlzZSogcHJl
cGFyZU1vZHVsZUdyYXBoKGNvbnN0IEpTTG9ja0hvbGRlciYgbG9jaywgRXhlY1N0YXRlKiBleGVj
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVO
YW1lKQoreworICAgIHJldHVybiBwcmVwYXJlTW9kdWxlR3JhcGgobG9jaywgZXhlYywgZ2xvYmFs
T2JqZWN0LCBpZGVudGlmaWVyVG9KU1ZhbHVlKGV4ZWMtPnZtKCksIG1vZHVsZU5hbWUpLCBqc1Vu
ZGVmaW5lZCgpKTsKK30KKworSlNJbnRlcm5hbFByb21pc2UqIHByZXBhcmVNb2R1bGVHcmFwaChF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSkKK3sKKyAgICBKU0xvY2tI
b2xkZXIgbG9jayhleGVjKTsKKyAgICBSRUxFQVNFX0FTU0VSVChleGVjLT52bSgpLmF0b21pY1N0
cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOworICAg
IFJFTEVBU0VfQVNTRVJUKCFleGVjLT52bSgpLmlzQ29sbGVjdG9yQnVzeSgpKTsKIAotICAgIHJl
dHVybiBldmFsdWF0ZU1vZHVsZShsb2NrLCBleGVjLCBnbG9iYWxPYmplY3QsIGtleSwganNVbmRl
ZmluZWQoKSk7CisgICAgcmV0dXJuIHByZXBhcmVNb2R1bGVHcmFwaChsb2NrLCBleGVjLCBleGVj
LT52bUVudHJ5R2xvYmFsT2JqZWN0KCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgbW9k
dWxlTmFtZSkpOwogfQogCi1KU0ludGVybmFsUHJvbWlzZSogZXZhbHVhdGVNb2R1bGUoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKQorSlNJbnRlcm5hbFByb21p
c2UqIHByZXBhcmVNb2R1bGVHcmFwaChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSkKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKICAgICBSRUxFQVNFX0FT
U0VSVChleGVjLT52bSgpLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0
b21pY1N0cmluZ1RhYmxlKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCFleGVjLT52bSgpLmlzQ29s
bGVjdG9yQnVzeSgpKTsKIAotICAgIHJldHVybiBldmFsdWF0ZU1vZHVsZShsb2NrLCBleGVjLCBl
eGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCksIG1vZHVsZU5hbWUpOworICAgIFN5bWJvbCoga2V5
ID0gY3JlYXRlU3ltYm9sRm9yRW50cnlQb2ludE1vZHVsZShleGVjLT52bSgpKTsKKworICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCk7
CisKKyAgICAvLyBJbnNlcnQgdGhlIGdpdmVuIHNvdXJjZSBjb2RlIHRvIHRoZSBNb2R1bGVMb2Fk
ZXIgcmVnaXN0cnkgYXMgdGhlIGZldGNoZWQgcmVnaXN0cnkgZW50cnkuCisgICAgZ2xvYmFsT2Jq
ZWN0LT5tb2R1bGVMb2FkZXIoKS0+cHJvdmlkZShleGVjLCBrZXksIE1vZHVsZUxvYWRlck9iamVj
dDo6U3RhdHVzOjpGZXRjaCwgc291cmNlLnRvU3RyaW5nKCkpOworICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIHJlamVjdFByb21pc2UoZXhlYywgZ2xvYmFsT2Jq
ZWN0KTsKKworICAgIHJldHVybiBwcmVwYXJlTW9kdWxlR3JhcGgobG9jaywgZXhlYywgZ2xvYmFs
T2JqZWN0LCBrZXksIGpzVW5kZWZpbmVkKCkpOwogfQogCi1KU0ludGVybmFsUHJvbWlzZSogZXZh
bHVhdGVNb2R1bGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIG1vZHVsZU5hbWUpCitK
U0ludGVybmFsUHJvbWlzZSogbGlua0FuZEV2YWx1YXRlTW9kdWxlR3JhcGgoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXkpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxv
Y2soZXhlYyk7CiAgICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+dm0oKS5hdG9taWNTdHJpbmdUYWJs
ZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKICAgICBSRUxFQVNF
X0FTU0VSVCghZXhlYy0+dm0oKS5pc0NvbGxlY3RvckJ1c3koKSk7CiAKLSAgICByZXR1cm4gZXZh
bHVhdGVNb2R1bGUobG9jaywgZXhlYywgZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIG1vZHVsZU5hbWUpKTsKKyAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpOworICAgIHJldHVy
biBnbG9iYWxPYmplY3QtPm1vZHVsZUxvYWRlcigpLT5saW5rQW5kRXZhbHVhdGVNb2R1bGVHcmFw
aChleGVjLCBpZGVudGlmaWVyVG9KU1ZhbHVlKGV4ZWMtPnZtKCksIG1vZHVsZUtleSkpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbXBsZXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBs
ZXRpb24uaAppbmRleCBjYjA5MWZmMTY0YjIyOGRjMDJjMjIzZGQxZWQ4Y2Q2NDgyOTE1YTY1Li5k
Y2NlMjQxMmJlMGJkYjUzNWNjZWNjNzJlOWFmMzdjNTRlNjUxNmEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCkBAIC00NSw5ICs0NSwxNyBAQCBpbmxpbmUg
SlNWYWx1ZSBldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZUNvZGUsIEpTVmFsdWUgdAogICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gdW51c2VkOwogICAgIHJl
dHVybiBldmFsdWF0ZShleGVjLCBzb3VyY2VDb2RlLCB0aGlzVmFsdWUsIHVudXNlZCk7CiB9Ci1K
U19FWFBPUlRfUFJJVkFURSBKU0ludGVybmFsUHJvbWlzZSogZXZhbHVhdGVNb2R1bGUoRXhlY1N0
YXRlKiwgY29uc3QgU291cmNlQ29kZSYpOwotSlNfRVhQT1JUX1BSSVZBVEUgSlNJbnRlcm5hbFBy
b21pc2UqIGV2YWx1YXRlTW9kdWxlKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIG1vZHVs
ZU5hbWUpOwotSlNfRVhQT1JUX1BSSVZBVEUgSlNJbnRlcm5hbFByb21pc2UqIGV2YWx1YXRlTW9k
dWxlKEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSk7CisKKy8vIExvYWQgdGhl
IG1vZHVsZSBzb3VyY2UgYW5kIGV2YWx1YXRlIGl0LgorSlNfRVhQT1JUX1BSSVZBVEUgSlNJbnRl
cm5hbFByb21pc2UqIGxvYWRNb2R1bGVHcmFwaChFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIG1v
ZHVsZU5hbWUpOworSlNfRVhQT1JUX1BSSVZBVEUgSlNJbnRlcm5hbFByb21pc2UqIGxvYWRNb2R1
bGVHcmFwaChFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CisKKy8vIEZldGNoIHRoZSBt
b2R1bGUgc291cmNlLCBhbmQgaW5zdGFudGlhdGUgdGhlIG1vZHVsZSByZWNvcmQuCitKU19FWFBP
UlRfUFJJVkFURSBKU0ludGVybmFsUHJvbWlzZSogcHJlcGFyZU1vZHVsZUdyYXBoKEV4ZWNTdGF0
ZSosIGNvbnN0IFN0cmluZyYgbW9kdWxlTmFtZSk7CitKU19FWFBPUlRfUFJJVkFURSBKU0ludGVy
bmFsUHJvbWlzZSogcHJlcGFyZU1vZHVsZUdyYXBoKEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNv
ZGUmKTsKKworLy8gTGluayBhbmQgZXZhbHVhdGUgdGhlIGFscmVhZHkgbGlua2VkIG1vZHVsZS4K
K0pTX0VYUE9SVF9QUklWQVRFIEpTSW50ZXJuYWxQcm9taXNlKiBsaW5rQW5kRXZhbHVhdGVNb2R1
bGVHcmFwaChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVLZXkpOwogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCmluZGV4IDI5OTEwNjQ5ODI4N2RmMjg5MDY1MThkM2RhMjcxMjJmYjhj
N2MxY2MuLmRmMjYzMjVmYzU1MTViZTU2ZTkwNTM5MGIxNGZmZTU2YjJkNDIwZTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTE2
NSw3ICsxNjUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIEpTR2xvYmFs
T2JqZWN0OjpzX2luZm8gPSB7ICJHbG9iYWxPYmplY3QiLCAmQmFzZTo6c19pbmZvLCAmZ2xvYmFs
T2JqZWN0VGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNHbG9iYWxPYmplY3QpIH07CiAKLWNv
bnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9iamVj
dE1ldGhvZFRhYmxlID0geyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRzUHJvZmlsaW5nLCAm
c3VwcG9ydHNSaWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3Jp
cHRSdW50aW1lRmxhZ3MsIG51bGxwdHIsICZzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1l
b3V0LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyIH07Citjb25zdCBHbG9iYWxP
YmplY3RNZXRob2RUYWJsZSBKU0dsb2JhbE9iamVjdDo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJs
ZSA9IHsgJmFsbG93c0FjY2Vzc0Zyb20sICZzdXBwb3J0c1Byb2ZpbGluZywgJnN1cHBvcnRzUmlj
aFNvdXJjZUluZm8sICZzaG91bGRJbnRlcnJ1cHRTY3JpcHQsICZqYXZhU2NyaXB0UnVudGltZUZs
YWdzLCBudWxscHRyLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCwgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9OwogCiAvKiBTb3VyY2UgZm9y
IEpTR2xvYmFsT2JqZWN0Lmx1dC5oCiBAYmVnaW4gZ2xvYmFsT2JqZWN0VGFibGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGRjYjNhMDg3
Zjc5OWJmNmJkMmM0YTY2MzY4NjA4NDMxZjFiYjRkZWQuLjU0NjFjZWI1Mjg2ZGQ2ZDJkMmExYWQz
NGM4YjgxZjVlYzA2YTdhNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaApAQCAtMTcwLDYgKzE3MCw5IEBAIHN0cnVjdCBHbG9iYWxPYmplY3RN
ZXRob2RUYWJsZSB7CiAKICAgICB0eXBlZGVmIEpTSW50ZXJuYWxQcm9taXNlKiAoKk1vZHVsZUxv
YWRlckluc3RhbnRpYXRlUHRyKShKU0dsb2JhbE9iamVjdCosIEV4ZWNTdGF0ZSosIEpTVmFsdWUs
IEpTVmFsdWUpOwogICAgIE1vZHVsZUxvYWRlckluc3RhbnRpYXRlUHRyIG1vZHVsZUxvYWRlcklu
c3RhbnRpYXRlOworCisgICAgdHlwZWRlZiBKU1ZhbHVlICgqTW9kdWxlTG9hZGVyRXZhbHVhdGVQ
dHIpKEpTR2xvYmFsT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSwgSlNWYWx1ZSk7CisgICAg
TW9kdWxlTG9hZGVyRXZhbHVhdGVQdHIgbW9kdWxlTG9hZGVyRXZhbHVhdGU7CiB9OwogCiBjbGFz
cyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlUmVjb3JkLmNwcAppbmRl
eCA4NDNjOTRlMTgwNDZkMWY0OGY5NWRlNzZjYzUxOTBkYTMyZDI4NjI1Li4xY2M0OTM3NWQ0ZjJj
ZjJlYzdlMmUwMWJiYTdiYjhhOTE0N2Y4NGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuY3BwCkBAIC04NDQsNyArODQ0LDcgQEAgdm9pZCBK
U01vZHVsZVJlY29yZDo6aW5zdGFudGlhdGVEZWNsYXJhdGlvbnMoRXhlY1N0YXRlKiBleGVjLCBN
b2R1bGVQcm9ncmFtRXhlY3UKICAgICBtX21vZHVsZUVudmlyb25tZW50LnNldCh2bSwgdGhpcywg
bW9kdWxlRW52aXJvbm1lbnQpOwogfQogCi1KU1ZhbHVlIEpTTW9kdWxlUmVjb3JkOjpleGVjdXRl
KEV4ZWNTdGF0ZSogZXhlYykKK0pTVmFsdWUgSlNNb2R1bGVSZWNvcmQ6OmV2YWx1YXRlKEV4ZWNT
dGF0ZSogZXhlYykKIHsKICAgICBpZiAoIW1fbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUpCiAgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTW9kdWxlUmVjb3JkLmgKaW5kZXggMzBkZTdmNWM1ZmUxMzNlOGFhNTRjMGM5MjA0ZTc2
YTNkYjEwYTE4NS4uYjgyYTllMWQ1N2FhYTRlNjhhN2YyODA1ODc1NWUwNzdiNWIxMDI2YiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVSZWNvcmQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZVJlY29yZC5oCkBAIC0x
MjMsNyArMTIzLDcgQEAgY2xhc3MgSlNNb2R1bGVSZWNvcmQgOiBwdWJsaWMgSlNEZXN0cnVjdGli
bGVPYmplY3QgewogICAgIH0KIAogICAgIHZvaWQgbGluayhFeGVjU3RhdGUqKTsKLSAgICBKU1Zh
bHVlIGV4ZWN1dGUoRXhlY1N0YXRlKik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBl
dmFsdWF0ZShFeGVjU3RhdGUqKTsKIAogICAgIE1vZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBtb2R1
bGVQcm9ncmFtRXhlY3V0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGUuZ2V0KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTW9kdWxlTG9hZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01vZHVsZUxvYWRlck9iamVjdC5jcHAKaW5kZXggNmU2ZjlmOWE2ZGE2MTgxMmUzYzIxYWQ0MzY2
ZmQ4N2I3Y2QxNDdkOC4uODM1MWM0YjVkZjhjZjI3OTUzODE0ODA1ZDNlN2RiMzJkMzZlOTZlMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJP
YmplY3QuY3BwCkBAIC04NSw4ICs4NSwxMCBAQCBjb25zdCBDbGFzc0luZm8gTW9kdWxlTG9hZGVy
T2JqZWN0OjpzX2luZm8gPSB7ICJNb2R1bGVMb2FkZXIiLCAmQmFzZTo6c19pbmZvLCAmbQogICAg
IG1vZHVsZURlY2xhcmF0aW9uSW5zdGFudGlhdGlvbiBtb2R1bGVMb2FkZXJPYmplY3RNb2R1bGVE
ZWNsYXJhdGlvbkluc3RhbnRpYXRpb24gRG9udEVudW18RnVuY3Rpb24gMgogICAgIG1vZHVsZUV2
YWx1YXRpb24gICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RNb2R1bGVFdmFsdWF0aW9u
ICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgogICAgIGV2YWx1YXRlICAgICAgICAg
ICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RFdmFsdWF0ZSAgICAgICAgICAgICAgICAg
ICAgICAgRG9udEVudW18RnVuY3Rpb24gMgotICAgIGxvYWRNb2R1bGUgICAgICAgICAgICAgICAg
ICAgICBtb2R1bGVMb2FkZXJPYmplY3RMb2FkTW9kdWxlICAgICAgICAgICAgICAgICAgICAgRG9u
dEVudW18RnVuY3Rpb24gMgogICAgIHByb3ZpZGUgICAgICAgICAgICAgICAgICAgICAgICBtb2R1
bGVMb2FkZXJPYmplY3RQcm92aWRlICAgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gMworICAgIGxvYWRNb2R1bGVHcmFwaCAgICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJP
YmplY3RMb2FkTW9kdWxlR3JhcGggICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgor
ICAgIHByZXBhcmVNb2R1bGVHcmFwaCAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RQcmVw
YXJlTW9kdWxlR3JhcGggICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgorICAgIGxpbmtB
bmRFdmFsdWF0ZU1vZHVsZUdyYXBoICAgICBtb2R1bGVMb2FkZXJPYmplY3RMaW5rQW5kRXZhbHVh
dGVNb2R1bGVHcmFwaCAgICAgRG9udEVudW18RnVuY3Rpb24gMQogICAgIHBhcnNlTW9kdWxlICAg
ICAgICAgICAgICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RQYXJzZU1vZHVsZSAgICAgICAgICAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgogICAgIHJlcXVlc3RlZE1vZHVsZXMgICAgICAg
ICAgICAgICBtb2R1bGVMb2FkZXJPYmplY3RSZXF1ZXN0ZWRNb2R1bGVzICAgICAgICAgICAgICAg
RG9udEVudW18RnVuY3Rpb24gMQogICAgIHJlc29sdmUgICAgICAgICAgICAgICAgICAgICAgICBt
b2R1bGVMb2FkZXJPYmplY3RSZXNvbHZlICAgICAgICAgICAgICAgICAgICAgICAgRG9udEVudW18
RnVuY3Rpb24gMQpAQCAtMTQ2LDkgKzE0OCw5IEBAIEpTVmFsdWUgTW9kdWxlTG9hZGVyT2JqZWN0
Ojpwcm92aWRlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBrZXksIFN0YXR1cyBzdGF0dXMsCiAg
ICAgcmV0dXJuIGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpcywg
YXJndW1lbnRzKTsKIH0KIAotSlNJbnRlcm5hbFByb21pc2UqIE1vZHVsZUxvYWRlck9iamVjdDo6
bG9hZE1vZHVsZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbW9kdWxlTmFtZSwgSlNWYWx1ZSBy
ZWZlcnJlcikKK0pTSW50ZXJuYWxQcm9taXNlKiBNb2R1bGVMb2FkZXJPYmplY3Q6OmxvYWRNb2R1
bGVHcmFwaChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgbW9kdWxlTmFtZSwgSlNWYWx1ZSByZWZl
cnJlcikKIHsKLSAgICBKU09iamVjdCogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNPYmplY3QqPihnZXQo
ZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmxvYWRNb2R1bGVQdWJs
aWNOYW1lKCkpKTsKKyAgICBKU09iamVjdCogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNPYmplY3QqPihn
ZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmxvYWRNb2R1bGVH
cmFwaFB1YmxpY05hbWUoKSkpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBl
IGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOwogICAgIEFT
U0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZU5vbmUpOwpAQCAtMTYwLDYgKzE2MiwzMyBAQCBKU0lu
dGVybmFsUHJvbWlzZSogTW9kdWxlTG9hZGVyT2JqZWN0Ojpsb2FkTW9kdWxlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBtb2R1bAogICAgIHJldHVybiBqc0Nhc3Q8SlNJbnRlcm5hbFByb21pc2Uq
PihjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXMsIGFyZ3VtZW50
cykpOwogfQogCitKU0ludGVybmFsUHJvbWlzZSogTW9kdWxlTG9hZGVyT2JqZWN0OjpwcmVwYXJl
TW9kdWxlR3JhcGgoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIG1vZHVsZU5hbWUsIEpTVmFsdWUg
cmVmZXJyZXIpCit7CisgICAgSlNPYmplY3QqIGZ1bmN0aW9uID0ganNDYXN0PEpTT2JqZWN0Kj4o
Z2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5wcmVwYXJlTW9k
dWxlR3JhcGhQdWJsaWNOYW1lKCkpKTsKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBDYWxs
VHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKKyAg
ICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKTsKKworICAgIE1hcmtlZEFyZ3VtZW50
QnVmZmVyIGFyZ3VtZW50czsKKyAgICBhcmd1bWVudHMuYXBwZW5kKG1vZHVsZU5hbWUpOworICAg
IGFyZ3VtZW50cy5hcHBlbmQocmVmZXJyZXIpOworCisgICAgcmV0dXJuIGpzQ2FzdDxKU0ludGVy
bmFsUHJvbWlzZSo+KGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhp
cywgYXJndW1lbnRzKSk7Cit9CisKK0pTSW50ZXJuYWxQcm9taXNlKiBNb2R1bGVMb2FkZXJPYmpl
Y3Q6OmxpbmtBbmRFdmFsdWF0ZU1vZHVsZUdyYXBoKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBt
b2R1bGVLZXkpCit7CisgICAgSlNPYmplY3QqIGZ1bmN0aW9uID0ganNDYXN0PEpTT2JqZWN0Kj4o
Z2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5saW5rQW5kRXZh
bHVhdGVNb2R1bGVHcmFwaFB1YmxpY05hbWUoKSkpOworICAgIENhbGxEYXRhIGNhbGxEYXRhOwor
ICAgIENhbGxUeXBlIGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERh
dGEpOworICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZU5vbmUpOworCisgICAgTWFya2Vk
QXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOworICAgIGFyZ3VtZW50cy5hcHBlbmQobW9kdWxlS2V5
KTsKKworICAgIHJldHVybiBqc0Nhc3Q8SlNJbnRlcm5hbFByb21pc2UqPihjYWxsKGV4ZWMsIGZ1
bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXMsIGFyZ3VtZW50cykpOworfQorCiBKU0lu
dGVybmFsUHJvbWlzZSogTW9kdWxlTG9hZGVyT2JqZWN0OjpyZXNvbHZlKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSBuYW1lLCBKU1ZhbHVlIHJlZmVycmVyKQogewogICAgIGlmIChPcHRpb25zOjpk
dW1wTW9kdWxlTG9hZGluZ1N0YXRlKCkpCkBAIC0yMTksNiArMjQ4LDIxIEBAIEpTSW50ZXJuYWxQ
cm9taXNlKiBNb2R1bGVMb2FkZXJPYmplY3Q6Omluc3RhbnRpYXRlKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBrZXksCiAgICAgcmV0dXJuIGRlZmVycmVkLT5wcm9taXNlKCk7CiB9CiAKK0pTVmFs
dWUgTW9kdWxlTG9hZGVyT2JqZWN0OjpldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
a2V5LCBKU1ZhbHVlIG1vZHVsZVJlY29yZFZhbHVlKQoreworICAgIGlmIChPcHRpb25zOjpkdW1w
TW9kdWxlTG9hZGluZ1N0YXRlKCkpCisgICAgICAgIGRhdGFMb2coIkxvYWRlciBbZXZhbHVhdGVd
ICIsIHByaW50YWJsZU1vZHVsZUtleShleGVjLCBrZXkpLCAiXG4iKTsKKworICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CisgICAg
aWYgKGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+bW9kdWxlTG9hZGVy
RXZhbHVhdGUpCisgICAgICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhv
ZFRhYmxlKCktPm1vZHVsZUxvYWRlckV2YWx1YXRlKGdsb2JhbE9iamVjdCwgZXhlYywga2V5LCBt
b2R1bGVSZWNvcmRWYWx1ZSk7CisKKyAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkID0g
anNEeW5hbWljQ2FzdDxKU01vZHVsZVJlY29yZCo+KG1vZHVsZVJlY29yZFZhbHVlKTsKKyAgICBp
ZiAoIW1vZHVsZVJlY29yZCkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgcmV0
dXJuIG1vZHVsZVJlY29yZC0+ZXZhbHVhdGUoZXhlYyk7Cit9CisKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0UGFyc2VNb2R1bGUoRXhlY1N0YXRlKiBleGVj
KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CkBAIC0yODEsMTggKzMyNSw2IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbW9kdWxlTG9hZGVyT2JqZWN0TW9kdWxlRGVjbGFyYXRp
b25JbnN0YW50aWF0aW9uKEV4CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmpl
Y3RFdmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVs
ZVJlY29yZCA9IGpzRHluYW1pY0Nhc3Q8SlNNb2R1bGVSZWNvcmQqPihleGVjLT5hcmd1bWVudCgw
KSk7Ci0gICAgaWYgKCFtb2R1bGVSZWNvcmQpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7Ci0KLSAgICBpZiAoT3B0aW9uczo6ZHVtcE1vZHVsZUxvYWRpbmdT
dGF0ZSgpKQotICAgICAgICBkYXRhTG9nKCJMb2FkZXIgW2V2YWx1YXRlXSAiLCBtb2R1bGVSZWNv
cmQtPm1vZHVsZUtleSgpLCAiXG4iKTsKLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobW9k
dWxlUmVjb3JkLT5leGVjdXRlKGV4ZWMpKTsKLX0KLQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tIEhvb2sgRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdFJlc29sdmUoRXhl
Y1N0YXRlKiBleGVjKQpAQCAtMzQ2LDQgKzM3OCwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG1vZHVsZUxvYWRlck9iamVjdEluc3RhbnRpYXRlKEV4ZWNTdGF0ZSogZXhlYykKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGxvYWRlci0+aW5zdGFudGlhdGUoZXhlYywgZXhlYy0+
YXJndW1lbnQoMCksIGV4ZWMtPmFyZ3VtZW50KDEpKSk7CiB9CiAKKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0gQWRkaXRpb25hbCBIb29rIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtb2R1bGVMb2FkZXJPYmplY3RFdmFs
dWF0ZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gVG8gaW5zdHJ1bWVudCBhbmQgcmV0cmll
dmUgdGhlIGVycm9ycyByYWlzZWQgZnJvbSB0aGUgbW9kdWxlIGV4ZWN1dGlvbiwKKyAgICAvLyB3
ZSBpbnNlcnRlZCB0aGUgaG9vayBwb2ludCBoZXJlLgorCisgICAgTW9kdWxlTG9hZGVyT2JqZWN0
KiBsb2FkZXIgPSBqc0R5bmFtaWNDYXN0PE1vZHVsZUxvYWRlck9iamVjdCo+KGV4ZWMtPnRoaXNW
YWx1ZSgpKTsKKyAgICBpZiAoIWxvYWRlcikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGxvYWRlci0+ZXZh
bHVhdGUoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIGV4ZWMtPmFyZ3VtZW50KDEpKSk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTW9kdWxlTG9hZGVyT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Nb2R1bGVMb2FkZXJPYmplY3QuaAppbmRleCAxMmNmZTU2ZWViYjZjNDI3YzBlZjc5MDIxZjk5
N2M2YjBkMzg0YTFmLi4xOTQ5NzUyNGZhNmY0OTRlMzk0YWQ1MDAwMjc0YzBhMzQ4OTFiYTU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Nb2R1bGVMb2FkZXJPYmpl
Y3QuaApAQCAtNjQsNyArNjQsOSBAQCBjbGFzcyBNb2R1bGVMb2FkZXJPYmplY3QgOiBwdWJsaWMg
SlNOb25GaW5hbE9iamVjdCB7CiAKICAgICAvLyBBUElzIHRvIGNvbnRyb2wgdGhlIG1vZHVsZSBs
b2FkZXIuCiAgICAgSlNWYWx1ZSBwcm92aWRlKEV4ZWNTdGF0ZSosIEpTVmFsdWUga2V5LCBTdGF0
dXMsIGNvbnN0IFN0cmluZyYpOwotICAgIEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkTW9kdWxlKEV4
ZWNTdGF0ZSosIEpTVmFsdWUgbW9kdWxlTmFtZSwgSlNWYWx1ZSByZWZlcnJlcik7CisgICAgSlNJ
bnRlcm5hbFByb21pc2UqIGxvYWRNb2R1bGVHcmFwaChFeGVjU3RhdGUqLCBKU1ZhbHVlIG1vZHVs
ZU5hbWUsIEpTVmFsdWUgcmVmZXJyZXIpOworICAgIEpTSW50ZXJuYWxQcm9taXNlKiBwcmVwYXJl
TW9kdWxlR3JhcGgoRXhlY1N0YXRlKiwgSlNWYWx1ZSBtb2R1bGVOYW1lLCBKU1ZhbHVlIHJlZmVy
cmVyKTsKKyAgICBKU0ludGVybmFsUHJvbWlzZSogbGlua0FuZEV2YWx1YXRlTW9kdWxlR3JhcGgo
RXhlY1N0YXRlKiwgSlNWYWx1ZSBtb2R1bGVLZXkpOwogCiAgICAgLy8gUGxhdGZvcm0gZGVwZW5k
ZW50IGhvb2tlZCBBUElzLgogICAgIEpTSW50ZXJuYWxQcm9taXNlKiByZXNvbHZlKEV4ZWNTdGF0
ZSosIEpTVmFsdWUgbmFtZSwgSlNWYWx1ZSByZWZlcnJlcik7CkBAIC03Miw2ICs3NCw5IEBAIGNs
YXNzIE1vZHVsZUxvYWRlck9iamVjdCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBK
U0ludGVybmFsUHJvbWlzZSogdHJhbnNsYXRlKEV4ZWNTdGF0ZSosIEpTVmFsdWUga2V5LCBKU1Zh
bHVlIHBheWxvYWQpOwogICAgIEpTSW50ZXJuYWxQcm9taXNlKiBpbnN0YW50aWF0ZShFeGVjU3Rh
dGUqLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSBzb3VyY2UpOwogCisgICAgLy8gQWRkaXRpb25hbCBw
bGF0Zm9ybSBkZXBlbmRlbnQgaG9va2VkIEFQSXMuCisgICAgSlNWYWx1ZSBldmFsdWF0ZShFeGVj
U3RhdGUqLCBKU1ZhbHVlIGtleSwgSlNWYWx1ZSBtb2R1bGVSZWNvcmQpOworCiAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmKTsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXggZDRmMDAxZDI4ZmJkM2U5ODkzZjMx
OWI4YjMwMDJkMWMwMTI5ZWI4MC4uNzliNzQwYmU1ZTFhMjYwMGM0MWQ3MzIxMjUxNWY4ZmYxMTJi
ZTk2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dC
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2Uu
Y3BwCkBAIC01Niw3ICs1Niw3IEBAIHN0YXRpYyBib29sIHNob3VsZEFsbG93QWNjZXNzRnJvbShj
b25zdCBKU0dsb2JhbE9iamVjdCogdGhpc09iamVjdCwgRXhlY1N0YXRlKiBlCiAKIGNvbnN0IENs
YXNzSW5mbyBKU0RPTVdpbmRvd0Jhc2U6OnNfaW5mbyA9IHsgIldpbmRvdyIsICZKU0RPTUdsb2Jh
bE9iamVjdDo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTRE9NV2luZG93QmFzZSkg
fTsKIAotY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNET01XaW5kb3dCYXNlOjpzX2ds
b2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmc2hvdWxkQWxsb3dBY2Nlc3NGcm9tLCAmc3VwcG9y
dHNQcm9maWxpbmcsICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAmc2hvdWxkSW50ZXJydXB0U2Ny
aXB0LCAmamF2YVNjcmlwdFJ1bnRpbWVGbGFncywgJnF1ZXVlVGFza1RvRXZlbnRMb29wLCAmc2hv
dWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0ciB9OworY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNET01XaW5kb3dC
YXNlOjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmc2hvdWxkQWxsb3dBY2Nlc3NGcm9t
LCAmc3VwcG9ydHNQcm9maWxpbmcsICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAmc2hvdWxkSW50
ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdFJ1bnRpbWVGbGFncywgJnF1ZXVlVGFza1RvRXZlbnRM
b29wLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCwgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9OwogCiBKU0RPTVdpbmRvd0Jhc2U6OkpTRE9N
V2luZG93QmFzZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQYXNzUmVmUHRyPERPTVdp
bmRvdz4gd2luZG93LCBKU0RPTVdpbmRvd1NoZWxsKiBzaGVsbCkKICAgICA6IEpTRE9NR2xvYmFs
T2JqZWN0KHZtLCBzdHJ1Y3R1cmUsICZzaGVsbC0+d29ybGQoKSwgJnNfZ2xvYmFsT2JqZWN0TWV0
aG9kVGFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtl
ckdsb2JhbFNjb3BlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtl
ckdsb2JhbFNjb3BlQmFzZS5jcHAKaW5kZXggNTA0NGJjMTc4MzUxM2I5YjFhMjZiZDNiZDFjYjVj
MDBiNzBhMTBkMC4uYWNkNjE3ZTg2OTg5MjkwNzUzNzZlNTgzMmFiMjgzZjJkMmZhNzkwMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2Nv
cGVCYXNlLmNwcApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0
IENsYXNzSW5mbyBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6c19pbmZvID0geyAiV29ya2VyR2xv
YmFsU2NvcGUiLCAmSlNET01HbG9iYWxPYmplY3Q6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU1dvcmtlckdsb2JhbFNjb3BlQmFzZSkgfTsKIAotY29uc3QgR2xvYmFsT2JqZWN0TWV0
aG9kVGFibGUgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFi
bGUgPSB7ICZhbGxvd3NBY2Nlc3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcsICZzdXBwb3J0c1Jp
Y2hTb3VyY2VJbmZvLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdFJ1bnRpbWVG
bGFncywgJnF1ZXVlVGFza1RvRXZlbnRMb29wLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3Jl
VGltZW91dCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9OworY29uc3QgR2xv
YmFsT2JqZWN0TWV0aG9kVGFibGUgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnNfZ2xvYmFsT2Jq
ZWN0TWV0aG9kVGFibGUgPSB7ICZhbGxvd3NBY2Nlc3NGcm9tLCAmc3VwcG9ydHNQcm9maWxpbmcs
ICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNj
cmlwdFJ1bnRpbWVGbGFncywgJnF1ZXVlVGFza1RvRXZlbnRMb29wLCAmc2hvdWxkSW50ZXJydXB0
U2NyaXB0QmVmb3JlVGltZW91dCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0ciB9OwogCiBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6SlNXb3JrZXJHbG9iYWxTY29w
ZUJhc2UoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8
V29ya2VyR2xvYmFsU2NvcGU+IGltcGwpCiAgICAgOiBKU0RPTUdsb2JhbE9iamVjdCh2bSwgc3Ry
dWN0dXJlLCAmbm9ybWFsV29ybGQodm0pLCAmc19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSkK
</data>
<flag name="review"
          id="286576"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>