<?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>194733</bug_id>
          
          <creation_ts>2019-02-15 17:46:43 -0800</creation_ts>
          <short_desc>[JSC] Shrink UnlinkedFunctionExecutable</short_desc>
          <delta_ts>2019-02-16 00:59:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=174212</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>guijemont</cc>
    
    <cc>guijemont+jsc-armv7-ews</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1506907</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-15 17:46:43 -0800</bug_when>
    <thetext>Shrink UnlinkedFunctionExecutable more to put more instances in one MarkedBlock. Right now, 2 MarkedBlocks are allocated just after initialization of JSGlobalObject, and the second one only uses 8%.
If we can shrink UnlinkedFunctionExecutable, we can make it only one MarkedBlock.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506916</commentid>
    <comment_count>1</comment_count>
      <attachid>362197</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-15 18:07:26 -0800</bug_when>
    <thetext>Created attachment 362197
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506920</commentid>
    <comment_count>2</comment_count>
      <attachid>362197</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-15 19:00:55 -0800</bug_when>
    <thetext>Comment on attachment 362197
Patch

Need to check the test. But it is strange because the test thinks source URL directive should be used even for function constructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506939</commentid>
    <comment_count>3</comment_count>
      <attachid>362202</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-15 20:27:23 -0800</bug_when>
    <thetext>Created attachment 362202
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506985</commentid>
    <comment_count>4</comment_count>
      <attachid>362202</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-02-16 00:21:15 -0800</bug_when>
    <thetext>Comment on attachment 362202
Patch

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

r=me

&gt; Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp:45
&gt; +static_assert(sizeof(UnlinkedFunctionExecutable) &lt;= 128, &quot;UnlinkedFunctionExecutable should fit in a 128-byte cell to keep allocated block only one just after initializing JSGlobalObject.&quot;);

I would rephrase the message as &quot;UnlinkedFunctionExecutable should fit in a 128-byte cell to keep allocated blocks count to only one after initializing JSGlobalObject.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506987</commentid>
    <comment_count>5</comment_count>
      <attachid>362202</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-16 00:52:23 -0800</bug_when>
    <thetext>Comment on attachment 362202
Patch

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

Thank you!

&gt;&gt; Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp:45
&gt;&gt; +static_assert(sizeof(UnlinkedFunctionExecutable) &lt;= 128, &quot;UnlinkedFunctionExecutable should fit in a 128-byte cell to keep allocated block only one just after initializing JSGlobalObject.&quot;);
&gt; 
&gt; I would rephrase the message as &quot;UnlinkedFunctionExecutable should fit in a 128-byte cell to keep allocated blocks count to only one after initializing JSGlobalObject.&quot;

Sounds nice! Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506988</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-16 00:58:42 -0800</bug_when>
    <thetext>Committed r241645: &lt;https://trac.webkit.org/changeset/241645&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1506989</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-02-16 00:59:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/48136411&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362197</attachid>
            <date>2019-02-15 18:07:26 -0800</date>
            <delta_ts>2019-02-15 20:27:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194733-20190215180725.patch</filename>
            <type>text/plain</type>
            <size>27773</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxNjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MDQ5ZjBjMzc2YmY0NmQ4MGM0OGFhY2E0NzYwNDk5YWMwYWFmZGU4Li40Zjc2ZDkzMGMzNjJhNDFi
NmE1MjgyOTliODY5NTRlOGI0ZTc0ZTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NyBAQAorMjAxOS0wMi0xNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFNocmluayBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NzMzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUgaGFzIHNvdXJjZVVSTERpcmVjdGl2ZSBhbmQgc291cmNlTWFwcGluZ1VS
TERpcmVjdGl2ZS4gVGhlc2UKKyAgICAgICAgZGlyZWN0aXZlcyBjYW4gYmUgZm91bmQgaW4gdGhl
IGNvbW1lbnQgb2Ygbm9uLWZ1bmN0aW9uJ3Mgc291cmNlIGNvZGUgKFByb2dyYW0gZXRjLiksCisg
ICAgICAgIGFuZCB0cmlja3kgdGhpbmcgaXMgdGhhdCBTb3VyY2VQcm92aWRlcidzIGRpcmVjdGl2
ZXMgYXJlIHVwZGF0ZWQgYnkgUGFyc2VyLiBUaGUgcmVhc29uCisgICAgICAgIHdoeSB3ZSBoYXZl
IHRoZXNlIGZpZWxkcyBpbiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBpcyB0aGF0IHdlIG5l
ZWQgdG8gdXBkYXRlCisgICAgICAgIHRoZSBTb3VyY2VQcm92aWRlcidzIGRpcmVjdGl2ZXMgZXZl
biBpZiB3ZSBza2lwIHBhcnNpbmcgYnkgdXNpbmcgQ29kZUNhY2hlLiBUaGVzZSBmaWVsZHMKKyAg
ICAgICAgYXJlIGVmZmVjdGl2ZSBvbmx5IGlmICgxKSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSBpcyBmb3Igbm9uLWZ1bmN0aW9uIHRoaW5ncywgYW5kICgyKSBpdAorICAgICAgICBoYXMgc291
cmNlVVJMRGlyZWN0aXZlIG9yIHNvdXJjZU1hcHBpbmdVUkxEaXJlY3RpdmUuIFRoaXMgaXMgcmFy
ZSBlbm91Z2ggdG8gcHVyZ2UgdGhlbSB0byBhCisgICAgICAgIHNlcGFyYXRlZCBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6UmFyZURhdGEgdG8gbWFrZSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSBzbWFsbC4KKyAgICAgICAgc2l6ZW9mKFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKSBp
cyB2ZXJ5IGltcG9ydGFudCBzaW5jZSBpdCBpcyBzdXBlciBmcmVxdWVudGx5IGFsbG9jYXRlZAor
ICAgICAgICBjZWxsLiBGdXJ0aGVybW9yZSwgdGhlIGN1cnJlbnQgSlNDIGFsbG9jYXRlcyB0d28g
TWFya2VkQmxvY2tzIGZvciBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZQorICAgICAgICBpbiBK
U0dsb2JhbE9iamVjdCBpbml0aWFsaXphdGlvbiwgYnV0IHRoZSB1c2FnZSBvZiB0aGUgc2Vjb25k
IE1hcmtlZEJsb2NrIGlzIHF1aXRlIGxvdyAoOCUpLgorICAgICAgICBJZiB3ZSBjYW4gcmVkdWNl
IHRoZSBzaXplIG9mIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLCB3ZSBjYW4gbWFrZSB0aGVt
IG9uZSBNYXJrZWRCbG9jay4KKyAgICAgICAgU2luY2UgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUgaXMgYWxsb2NhdGVkIGZyb20gSXNvU3Vic3BhY2UsIHdlIGRvIG5vdCBuZWVkIHRvIGZpdCBp
dCB0bworICAgICAgICBvbmUgb2Ygc2l6ZSBjbGFzcy4KKworICAgICAgICBUaGlzIHBhdGNoIGFk
ZHMgUmFyZURhdGEgdG8gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgYW5kIG1vdmUgc29tZSBy
YXJlIGRhdGFzIGludG8gUmFyZURhdGEuCisgICAgICAgIEFuZCBraWxsIG9uZSBNYXJrZWRCbG9j
ayBhbGxvY2F0aW9uIGluIEpTQyBpbml0aWFsaXphdGlvbiBwaGFzZS4KKworICAgICAgICAqIGJ5
dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6VW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAg
ICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmVuc3VyZVJhcmVEYXRhU2xv
dyk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaDoKKyAg
ICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckxvY2F0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6RGVi
dWdnZXJMb2NhdGlvbjo6RGVidWdnZXJMb2NhdGlvbik6CisgICAgICAgICogaW5zcGVjdG9yL1Nj
cmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6U2NyaXB0RGVidWdTZXJ2
ZXI6OmRpc3BhdGNoRGlkUGFyc2VTb3VyY2UpOgorICAgICAgICAqIHBhcnNlci9MZXhlci5oOgor
ICAgICAgICAoSlNDOjpMZXhlcjo6c291cmNlVVJMRGlyZWN0aXZlIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6TGV4ZXI6OnNvdXJjZU1hcHBpbmdVUkxEaXJlY3RpdmUgY29uc3QpOgorICAgICAgICAo
SlNDOjpMZXhlcjo6c291cmNlVVJMIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TGV4
ZXI6OnNvdXJjZU1hcHBpbmdVUkwgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9Q
YXJzZXIuaDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlKToKKyAgICAg
ICAgKiBwYXJzZXIvU291cmNlUHJvdmlkZXIuaDoKKyAgICAgICAgKEpTQzo6U291cmNlUHJvdmlk
ZXI6OnNvdXJjZVVSTERpcmVjdGl2ZSBjb25zdCk6CisgICAgICAgIChKU0M6OlNvdXJjZVByb3Zp
ZGVyOjpzb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U291
cmNlUHJvdmlkZXI6OnNldFNvdXJjZVVSTERpcmVjdGl2ZSk6CisgICAgICAgIChKU0M6OlNvdXJj
ZVByb3ZpZGVyOjpzZXRTb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlKToKKyAgICAgICAgKEpTQzo6
U291cmNlUHJvdmlkZXI6OnNvdXJjZVVSTCBjb25zdCk6IERlbGV0ZWQuIFdlIHJlbmFtZSBpdCBm
cm9tIHNvdXJjZVVSTCB0byBzb3VyY2VVUkxEaXJlY3RpdmUgc2luY2UgaXQgaXMgdGhlIGNvcnJl
Y3QgbmFtZS4KKyAgICAgICAgKEpTQzo6U291cmNlUHJvdmlkZXI6OnNvdXJjZU1hcHBpbmdVUkwg
Y29uc3QpOiBEZWxldGVkLiBXZSByZW5hbWUgaXQgZnJvbSBzb3VyY2VNYXBwaW5nVVJMIHRvIHNv
dXJjZU1hcHBpbmdVUkxEaXJlY3RpdmUgc2luY2UgaXQgaXMgdGhlIGNvcnJlY3QgbmFtZS4KKyAg
ICAgICAgKiBydW50aW1lL0NhY2hlZFR5cGVzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FjaGVkU291
cmNlUHJvdmlkZXJTaGFwZTo6ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6Q2FjaGVkRnVuY3Rpb25F
eGVjdXRhYmxlUmFyZURhdGE6OmVuY29kZSk6CisgICAgICAgIChKU0M6OkNhY2hlZEZ1bmN0aW9u
RXhlY3V0YWJsZVJhcmVEYXRhOjpkZWNvZGUgY29uc3QpOiBDYWNoZWRGdW5jdGlvbkV4ZWN1dGFi
bGUgZGlkIG5vdCBoYXZlIHNvdXJjZU1hcHBpbmdVUkwgdG8gc291cmNlTWFwcGluZ1VSTERpcmVj
dGl2ZS4gU28gdGhpcyBwYXRjaCBrZWVwcyB0aGUgc2FtZSBsb2dpYy4KKyAgICAgICAgKEpTQzo6
Q2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxlOjpyYXJlRGF0YSBjb25zdCk6CisgICAgICAgIChKU0M6
OkNhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6Q2FjaGVk
RnVuY3Rpb25FeGVjdXRhYmxlOjpkZWNvZGUgY29uc3QpOgorICAgICAgICAoSlNDOjpVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAg
ICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpnZXRV
bmxpbmtlZEdsb2JhbENvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0VW5s
aW5rZWRHbG9iYWxGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ29kZUNh
Y2hlLmg6CisgICAgICAgIChKU0M6OmdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBsKToKKyAg
ICAgICAgKiBydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUv
U2FtcGxpbmdQcm9maWxlci5jcHA6CisgICAgICAgIChKU0M6OlNhbXBsaW5nUHJvZmlsZXI6OlN0
YWNrRnJhbWU6OnVybCk6CisKIDIwMTktMDItMTUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFw
cGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBNYWtlIGJ1aWx0aW4gb2JqZWN0cyBtb3JlIGxhemls
eSBpbml0aWFsaXplZCB1bmRlciBub24tSklUIG1vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3Bw
CmluZGV4IGNlNzFjNmY2ZWRkNmRmNjBkZjI5MzRjYjg2ZDZlMWM4YWZjNDQyYjYuLmNhZGE0Nzc4
ODhiNzgyZmFiZjhjNzkzYTJiZmVjYmNkNDMxNzcyYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
LmNwcApAQCAtNDIsNyArNDIsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGljX2Fzc2Vy
dChzaXplb2YoVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpIDw9IDE2MCwgIlVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlIHNob3VsZCBmaXQgaW4gYSAxNjAtYnl0ZSBjZWxsLiBJZiB5b3UgaW5j
cmVhc2UgdGhlIHNpemUgb2YgdGhpcyBjbGFzcywgY29uc2lkZXIgbWFraW5nIGEgc2l6ZSBjbGFz
cyB0aGF0IHBlcmZlY3RseSBmaXRzIGl0LiIpOworc3RhdGljX2Fzc2VydChzaXplb2YoVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUpIDw9IDEyOCwgIlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
IHNob3VsZCBmaXQgaW4gYSAxMjgtYnl0ZSBjZWxsIHRvIGtlZXAgYWxsb2NhdGVkIGJsb2NrIG9u
bHkgb25lIGp1c3QgYWZ0ZXIgaW5pdGlhbGl6aW5nIEpTR2xvYmFsT2JqZWN0LiIpOwogCiBjb25z
dCBDbGFzc0luZm8gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnNfaW5mbyA9IHsgIlVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlIiwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSkgfTsKIApAQCAtMTA2LDcg
KzEwNiw2IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0CiAgICAgLCBtX25hbWUobm9kZS0+aWRl
bnQoKSkKICAgICAsIG1fZWNtYU5hbWUobm9kZS0+ZWNtYU5hbWUoKSkKICAgICAsIG1faW5mZXJy
ZWROYW1lKG5vZGUtPmluZmVycmVkTmFtZSgpKQotICAgICwgbV9jbGFzc1NvdXJjZShub2RlLT5j
bGFzc1NvdXJjZSgpKQogICAgICwgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcyhXVEZNb3ZlKHBh
cmVudFNjb3BlVERaVmFyaWFibGVzKSkKIHsKICAgICAvLyBNYWtlIHN1cmUgdGhlc2UgYml0Zmll
bGRzIGFyZSBhZGVxdWF0ZWx5IHdpZGUuCkBAIC0xMTcsNiArMTE2LDggQEAgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3QKICAgICBBU1NFUlQobV9zdXBlckJpbmRpbmcgPT0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KG5vZGUtPnN1cGVyQmluZGluZygpKSk7CiAgICAgQVNTRVJUKG1fZGVyaXZlZENvbnRl
eHRUeXBlID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXJpdmVkQ29udGV4dFR5cGUpKTsKICAg
ICBBU1NFUlQoIShtX2lzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yICYmIGNvbnN0cnVj
dG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSkpOworICAgIGlmICghbm9kZS0+Y2xh
c3NTb3VyY2UoKS5pc051bGwoKSkKKyAgICAgICAgc2V0Q2xhc3NTb3VyY2Uobm9kZS0+Y2xhc3NT
b3VyY2UoKSk7CiB9CiAKIHZvaWQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmRlc3Ryb3ko
SlNDZWxsKiBjZWxsKQpAQCAtMjQzLDYgKzI0NCwxMyBAQCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dW5saW5rZWRDb2RlQmxvY2tGb3IoCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlJhcmVE
YXRhJiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93KCkKK3sK
KyAgICBBU1NFUlQoIW1fcmFyZURhdGEpOworICAgIG1fcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5p
cXVlPFJhcmVEYXRhPigpOworICAgIHJldHVybiAqbV9yYXJlRGF0YTsKK30KKwogdm9pZCBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6c2V0SW52YWxpZFR5cGVQcm9maWxpbmdPZmZzZXRzKCkK
IHsKICAgICBtX3R5cGVQcm9maWxpbmdTdGFydE9mZnNldCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8
dW5zaWduZWQ+OjptYXgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKaW5kZXggNzczODE1MmVkODQ0
ZGU0MTM5N2JmZGFjN2JiN2EwMGQ0ODJiZThjMS4uZGVmZDJmMDhiODcxODFlNmI3ZjRmZjYwMTU2
OTA3ZmRiNmViMzk3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgKQEAgLTU2LDcgKzU2LDcgQEAg
Y2xhc3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsK
IHB1YmxpYzoKICAgICBmcmllbmQgY2xhc3MgQ29kZUNhY2hlOwogICAgIGZyaWVuZCBjbGFzcyBW
TTsKLSAgICBmcmllbmQgQ2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxlOworICAgIGZyaWVuZCBjbGFz
cyBDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGU7CiAKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwog
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzIHwgU3RydWN0dXJlSXNJbW1vcnRhbDsKQEAgLTgyLDggKzgyLDE2IEBAIGNsYXNzIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdW5z
aWduZWQgcGFyYW1ldGVyQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlckNvdW50OyB9
OyAvLyBFeGNsdWRpbmcgJ3RoaXMnIQogICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxTb3VyY2VQYXJzZU1vZGU+KG1fc291cmNlUGFyc2VN
b2RlKTsgfTsKIAotICAgIGNvbnN0IFNvdXJjZUNvZGUmIGNsYXNzU291cmNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9jbGFzc1NvdXJjZTsgfTsKLSAgICB2b2lkIHNldENsYXNzU291cmNlKGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSkgeyBtX2NsYXNzU291cmNlID0gc291cmNlOyB9OworICAgIFNvdXJj
ZUNvZGUgY2xhc3NTb3VyY2UoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1fcmFyZURhdGEp
CisgICAgICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9jbGFzc1NvdXJjZTsKKyAgICAgICAg
cmV0dXJuIFNvdXJjZUNvZGUoKTsKKyAgICB9CisgICAgdm9pZCBzZXRDbGFzc1NvdXJjZShjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UpCisgICAgeworICAgICAgICBlbnN1cmVSYXJlRGF0YSgpLm1f
Y2xhc3NTb3VyY2UgPSBzb3VyY2U7CisgICAgfQogCiAgICAgYm9vbCBpc0luU3RyaWN0Q29udGV4
dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJblN0cmljdENvbnRleHQ7IH0KICAgICBGdW5jdGlvbk1v
ZGUgZnVuY3Rpb25Nb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RnVuY3Rpb25Nb2Rl
PihtX2Z1bmN0aW9uTW9kZSk7IH0KQEAgLTE0MCwxNiArMTQ4LDQ2IEBAIGNsYXNzIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgQ29uc3RydWN0
QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29u
c3RydWN0QWJpbGl0eT4obV9jb25zdHJ1Y3RBYmlsaXR5KTsgfQogICAgIEpTUGFyc2VyU2NyaXB0
TW9kZSBzY3JpcHRNb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SlNQYXJzZXJTY3Jp
cHRNb2RlPihtX3NjcmlwdE1vZGUpOyB9CiAgICAgYm9vbCBpc0NsYXNzQ29uc3RydWN0b3JGdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIGNvbnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2lu
ZDo6Tm9uZTsgfQorICAgIGJvb2wgaXNDbGFzcygpIGNvbnN0CisgICAgeworICAgICAgICBpZiAo
IW1fcmFyZURhdGEpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiAh
bV9yYXJlRGF0YS0+bV9jbGFzc1NvdXJjZS5pc051bGwoKTsKKyAgICB9CiAgICAgVmFyaWFibGVF
bnZpcm9ubWVudCBwYXJlbnRTY29wZVREWlZhcmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fcGFy
ZW50U2NvcGVURFpWYXJpYWJsZXMuZW52aXJvbm1lbnQoKS50b1ZhcmlhYmxlRW52aXJvbm1lbnQo
KTsgfQogICAgIAogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gaXNB
cnJvd0Z1bmN0aW9uUGFyc2VNb2RlKHBhcnNlTW9kZSgpKTsgfQogCiAgICAgSlNDOjpEZXJpdmVk
Q29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlKCkgY29uc3Qge3JldHVybiBzdGF0aWNfY2Fz
dDxKU0M6OkRlcml2ZWRDb250ZXh0VHlwZT4obV9kZXJpdmVkQ29udGV4dFR5cGUpOyB9CiAKLSAg
ICBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTERpcmVjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291
cmNlVVJMRGlyZWN0aXZlOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBzb3VyY2VNYXBwaW5nVVJMRGly
ZWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlOyB9Ci0g
ICAgdm9pZCBzZXRTb3VyY2VVUkxEaXJlY3RpdmUoY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpIHsg
bV9zb3VyY2VVUkxEaXJlY3RpdmUgPSBzb3VyY2VVUkw7IH0KLSAgICB2b2lkIHNldFNvdXJjZU1h
cHBpbmdVUkxEaXJlY3RpdmUoY29uc3QgU3RyaW5nJiBzb3VyY2VNYXBwaW5nVVJMKSB7IG1fc291
cmNlTWFwcGluZ1VSTERpcmVjdGl2ZSA9IHNvdXJjZU1hcHBpbmdVUkw7IH0KKyAgICBTdHJpbmcg
c291cmNlVVJMRGlyZWN0aXZlKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX3JhcmVEYXRh
KQorICAgICAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fc291cmNlVVJMRGlyZWN0aXZlOwor
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgfQorICAgIFN0cmluZyBzb3VyY2VNYXBwaW5n
VVJMRGlyZWN0aXZlKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChtX3JhcmVEYXRhKQorICAg
ICAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fc291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZTsK
KyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIH0KKyAgICB2b2lkIHNldFNvdXJjZVVSTERp
cmVjdGl2ZShjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKKyAgICB7CisgICAgICAgIGVuc3VyZVJh
cmVEYXRhKCkubV9zb3VyY2VVUkxEaXJlY3RpdmUgPSBzb3VyY2VVUkw7CisgICAgfQorICAgIHZv
aWQgc2V0U291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZShjb25zdCBTdHJpbmcmIHNvdXJjZU1hcHBp
bmdVUkwpCisgICAgeworICAgICAgICBlbnN1cmVSYXJlRGF0YSgpLm1fc291cmNlTWFwcGluZ1VS
TERpcmVjdGl2ZSA9IHNvdXJjZU1hcHBpbmdVUkw7CisgICAgfQorCisgICAgc3RydWN0IFJhcmVE
YXRhIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOworCisgICAgICAg
IFNvdXJjZUNvZGUgbV9jbGFzc1NvdXJjZTsKKyAgICAgICAgU3RyaW5nIG1fc291cmNlVVJMRGly
ZWN0aXZlOworICAgICAgICBTdHJpbmcgbV9zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlOworICAg
IH07CiAKIHByaXZhdGU6CiAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qLCBTdHJ1
Y3R1cmUqLCBjb25zdCBTb3VyY2VDb2RlJiwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBVbmxpbmtl
ZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlLCBDb21w
YWN0VmFyaWFibGVNYXA6OkhhbmRsZSwgIEpTQzo6RGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlz
QnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKTsKQEAgLTE4NSwxMiArMjIzLDE3IEBAIGNs
YXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAg
ICAgSWRlbnRpZmllciBtX25hbWU7CiAgICAgSWRlbnRpZmllciBtX2VjbWFOYW1lOwogICAgIElk
ZW50aWZpZXIgbV9pbmZlcnJlZE5hbWU7Ci0gICAgU291cmNlQ29kZSBtX2NsYXNzU291cmNlOwog
Ci0gICAgU3RyaW5nIG1fc291cmNlVVJMRGlyZWN0aXZlOwotICAgIFN0cmluZyBtX3NvdXJjZU1h
cHBpbmdVUkxEaXJlY3RpdmU7CisgICAgUmFyZURhdGEmIGVuc3VyZVJhcmVEYXRhKCkKKyAgICB7
CisgICAgICAgIGlmIChMSUtFTFkobV9yYXJlRGF0YSkpCisgICAgICAgICAgICByZXR1cm4gKm1f
cmFyZURhdGE7CisgICAgICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YVNsb3coKTsKKyAgICB9Cisg
ICAgUmFyZURhdGEmIGVuc3VyZVJhcmVEYXRhU2xvdygpOwogCiAgICAgQ29tcGFjdFZhcmlhYmxl
TWFwOjpIYW5kbGUgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlczsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8UmFyZURhdGE+IG1fcmFyZURhdGE7CiAKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgdm9pZCB2
aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJMb2NhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJMb2NhdGlvbi5jcHAKaW5kZXggYjEzOTcyMGI0
MTMzZjUzYjMzMThhZTNlM2FkZGRiMzRmMjVlNTMwOC4uYzY4OWI5M2E2YjhlOWVhZDRmMDQ1M2Q2
ZmE2Y2FjZWZiMDFmNTNiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyTG9jYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1
Z2dlci9EZWJ1Z2dlckxvY2F0aW9uLmNwcApAQCAtNDAsNyArNDAsNyBAQCBEZWJ1Z2dlckxvY2F0
aW9uOjpEZWJ1Z2dlckxvY2F0aW9uKFNjcmlwdEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUpCiAgICAg
Y29sdW1uID0gZXhlY3V0YWJsZS0+c3RhcnRDb2x1bW4oKTsKICAgICB1cmwgPSBleGVjdXRhYmxl
LT5zb3VyY2VVUkwoKTsKICAgICBpZiAodXJsLmlzRW1wdHkoKSkKLSAgICAgICAgdXJsID0gZXhl
Y3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKS0+c291cmNlVVJMKCk7CisgICAgICAgIHVybCA9
IGV4ZWN1dGFibGUtPnNvdXJjZSgpLnByb3ZpZGVyKCktPnNvdXJjZVVSTERpcmVjdGl2ZSgpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggMzVlZjI1YjI3ODU4ZDIwMWUy
YWU2MDAxNjJlNTEyMmQxNGY3MGM5NS4uZTBhMDY1Y2Q2MWU3ZmRjYzJmYTNjMzRmZDkwOTFhODNh
NTZiOGVmZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3Jp
cHREZWJ1Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9T
Y3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAgLTE5NSw4ICsxOTUsOCBAQCB2b2lkIFNjcmlwdERlYnVn
U2VydmVyOjpkaXNwYXRjaERpZFBhcnNlU291cmNlKGNvbnN0IExpc3RlbmVyU2V0JiBsaXN0ZW5l
cnMsIFNvdQogICAgIHNjcmlwdC5zdGFydExpbmUgPSBzb3VyY2VQcm92aWRlci0+c3RhcnRQb3Np
dGlvbigpLm1fbGluZS56ZXJvQmFzZWRJbnQoKTsKICAgICBzY3JpcHQuc3RhcnRDb2x1bW4gPSBz
b3VyY2VQcm92aWRlci0+c3RhcnRQb3NpdGlvbigpLm1fY29sdW1uLnplcm9CYXNlZEludCgpOwog
ICAgIHNjcmlwdC5pc0NvbnRlbnRTY3JpcHQgPSBpc0NvbnRlbnRTY3JpcHQ7Ci0gICAgc2NyaXB0
LnNvdXJjZVVSTCA9IHNvdXJjZVByb3ZpZGVyLT5zb3VyY2VVUkwoKTsKLSAgICBzY3JpcHQuc291
cmNlTWFwcGluZ1VSTCA9IHNvdXJjZVByb3ZpZGVyLT5zb3VyY2VNYXBwaW5nVVJMKCk7CisgICAg
c2NyaXB0LnNvdXJjZVVSTCA9IHNvdXJjZVByb3ZpZGVyLT5zb3VyY2VVUkxEaXJlY3RpdmUoKTsK
KyAgICBzY3JpcHQuc291cmNlTWFwcGluZ1VSTCA9IHNvdXJjZVByb3ZpZGVyLT5zb3VyY2VNYXBw
aW5nVVJMRGlyZWN0aXZlKCk7CiAKICAgICBpbnQgc291cmNlTGVuZ3RoID0gc2NyaXB0LnNvdXJj
ZS5sZW5ndGgoKTsKICAgICBpbnQgbGluZUNvdW50ID0gMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTGV4ZXIuaAppbmRleCA4MDE4OWQwMjI4M2E0OWVlNzZlYWI4MTdkY2UzOWFhYzFiNjg2ZTZi
Li43MDBkMWE3NTZjYzM2ZGM1ZDVlZDkwNTA4YjE5MDhhNGYxNjVhOTAwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9MZXhlci5oCkBAIC04Nyw4ICs4Nyw4IEBAIGNsYXNzIExleGVyIHsKICAg
ICB2b2lkIHNldFNhd0Vycm9yKGJvb2wgc2F3RXJyb3IpIHsgbV9lcnJvciA9IHNhd0Vycm9yOyB9
CiAgICAgU3RyaW5nIGdldEVycm9yTWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGV4RXJyb3JN
ZXNzYWdlOyB9CiAgICAgdm9pZCBzZXRFcnJvck1lc3NhZ2UoY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UpIHsgbV9sZXhFcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2U7IH0KLSAgICBTdHJpbmcg
c291cmNlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VVUkxEaXJlY3RpdmU7IH0KLSAgICBT
dHJpbmcgc291cmNlTWFwcGluZ1VSTCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlTWFwcGluZ1VS
TERpcmVjdGl2ZTsgfQorICAgIFN0cmluZyBzb3VyY2VVUkxEaXJlY3RpdmUoKSBjb25zdCB7IHJl
dHVybiBtX3NvdXJjZVVSTERpcmVjdGl2ZTsgfQorICAgIFN0cmluZyBzb3VyY2VNYXBwaW5nVVJM
RGlyZWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlOyB9
CiAgICAgdm9pZCBjbGVhcigpOwogICAgIHZvaWQgc2V0T2Zmc2V0KGludCBvZmZzZXQsIGludCBs
aW5lU3RhcnRPZmZzZXQpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgK
aW5kZXggMWMxYThkOTdiMDNkZDM0ZDc5M2U2ZWM3YjhjMzNkYmVkYmJjZDdlMS4uZDFmOTQzNDdl
N2ZiN2QwY2M1Njc3ZWZkNDU4MmU3ZTExNDE0NWJhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5oCkBAIC0xOTM4LDggKzE5MzgsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2Vk
Tm9kZT4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlKFBhcnNlckVycm9yJiBlcnJvciwgY29uc3Qg
SQogICAgICAgICByZXN1bHQtPnNldEVuZE9mZnNldChtX2xleGVyLT5jdXJyZW50T2Zmc2V0KCkp
OwogCiAgICAgICAgIGlmICghaXNGdW5jdGlvblBhcnNlTW9kZShwYXJzZU1vZGUpKSB7Ci0gICAg
ICAgICAgICBtX3NvdXJjZS0+cHJvdmlkZXIoKS0+c2V0U291cmNlVVJMRGlyZWN0aXZlKG1fbGV4
ZXItPnNvdXJjZVVSTCgpKTsKLSAgICAgICAgICAgIG1fc291cmNlLT5wcm92aWRlcigpLT5zZXRT
b3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlKG1fbGV4ZXItPnNvdXJjZU1hcHBpbmdVUkwoKSk7Cisg
ICAgICAgICAgICBtX3NvdXJjZS0+cHJvdmlkZXIoKS0+c2V0U291cmNlVVJMRGlyZWN0aXZlKG1f
bGV4ZXItPnNvdXJjZVVSTERpcmVjdGl2ZSgpKTsKKyAgICAgICAgICAgIG1fc291cmNlLT5wcm92
aWRlcigpLT5zZXRTb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlKG1fbGV4ZXItPnNvdXJjZU1hcHBp
bmdVUkxEaXJlY3RpdmUoKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICAvLyBX
ZSBjYW4gbmV2ZXIgc2VlIGEgc3ludGF4IGVycm9yIHdoZW4gcmVwYXJzaW5nIGEgZnVuY3Rpb24s
IHNpbmNlIHdlIHNob3VsZCBoYXZlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1NvdXJjZVByb3ZpZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Nv
dXJjZVByb3ZpZGVyLmgKaW5kZXggYjNjOWM0NjU3NjRmZmZjYjk3MDVjZTg2ZmI5Y2E4MDRjMjE0
ODY0NS4uYmZmNTIxY2ZjMGUyMmIzMWI0ZWMwZDFhZGQ2MjBhYmJmNjkwZmRlOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXIuaApAQCAtMTI1LDggKzEy
NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGNvbnN0IFNvdXJjZU9yaWdpbiYgc291
cmNlT3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VPcmlnaW47IH0KICAgICAgICAgY29u
c3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQotICAgICAgICBjb25zdCBTdHJp
bmcmIHNvdXJjZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlVVJMRGlyZWN0aXZlOyB9Ci0g
ICAgICAgIGNvbnN0IFN0cmluZyYgc291cmNlTWFwcGluZ1VSTCgpIGNvbnN0IHsgcmV0dXJuIG1f
c291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZTsgfQorICAgICAgICBjb25zdCBTdHJpbmcmIHNvdXJj
ZVVSTERpcmVjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlVVJMRGlyZWN0aXZlOyB9Cisg
ICAgICAgIGNvbnN0IFN0cmluZyYgc291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZTsgfQogCiAgICAgICAgIFRleHRQb3Np
dGlvbiBzdGFydFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydFBvc2l0aW9uOyB9CiAg
ICAgICAgIFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZSBzb3VyY2VUeXBlKCkgY29uc3QgeyByZXR1
cm4gbV9zb3VyY2VUeXBlOyB9CkBAIC0xMzgsOCArMTM4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICByZXR1cm4gbV9pZDsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgc2V0U291
cmNlVVJMRGlyZWN0aXZlKGNvbnN0IFN0cmluZyYgc291cmNlVVJMKSB7IG1fc291cmNlVVJMRGly
ZWN0aXZlID0gc291cmNlVVJMOyB9Ci0gICAgICAgIHZvaWQgc2V0U291cmNlTWFwcGluZ1VSTERp
cmVjdGl2ZShjb25zdCBTdHJpbmcmIHNvdXJjZU1hcHBpbmdVUkwpIHsgbV9zb3VyY2VNYXBwaW5n
VVJMRGlyZWN0aXZlID0gc291cmNlTWFwcGluZ1VSTDsgfQorICAgICAgICB2b2lkIHNldFNvdXJj
ZVVSTERpcmVjdGl2ZShjb25zdCBTdHJpbmcmIHNvdXJjZVVSTERpcmVjdGl2ZSkgeyBtX3NvdXJj
ZVVSTERpcmVjdGl2ZSA9IHNvdXJjZVVSTERpcmVjdGl2ZTsgfQorICAgICAgICB2b2lkIHNldFNv
dXJjZU1hcHBpbmdVUkxEaXJlY3RpdmUoY29uc3QgU3RyaW5nJiBzb3VyY2VNYXBwaW5nVVJMRGly
ZWN0aXZlKSB7IG1fc291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZSA9IHNvdXJjZU1hcHBpbmdVUkxE
aXJlY3RpdmU7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQgZ2V0SUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nh
Y2hlZFR5cGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVz
LmNwcAppbmRleCA2MTBhODNiZjA0OTkzMTlhYjY2Y2VjZWY4MWIwYzZkMjY0ZmNiMGYzLi44YTFk
ZGUzMTMwZWI1NTI4NDNlOGMxOWJmYTBhMWI3MTE5ZGE3MDIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCkBAIC0xMjY2LDggKzEyNjYsOCBAQCBj
bGFzcyBDYWNoZWRTb3VyY2VQcm92aWRlclNoYXBlIDogcHVibGljIENhY2hlZE9iamVjdDxTb3Vy
Y2U+IHsKICAgICB7CiAgICAgICAgIG1fc291cmNlT3JpZ2luLmVuY29kZShlbmNvZGVyLCBzb3Vy
Y2VQcm92aWRlci5zb3VyY2VPcmlnaW4oKSk7CiAgICAgICAgIG1fdXJsLmVuY29kZShlbmNvZGVy
LCBzb3VyY2VQcm92aWRlci51cmwoKSk7Ci0gICAgICAgIG1fc291cmNlVVJMRGlyZWN0aXZlLmVu
Y29kZShlbmNvZGVyLCBzb3VyY2VQcm92aWRlci5zb3VyY2VVUkwoKSk7Ci0gICAgICAgIG1fc291
cmNlTWFwcGluZ1VSTERpcmVjdGl2ZS5lbmNvZGUoZW5jb2Rlciwgc291cmNlUHJvdmlkZXIuc291
cmNlTWFwcGluZ1VSTCgpKTsKKyAgICAgICAgbV9zb3VyY2VVUkxEaXJlY3RpdmUuZW5jb2RlKGVu
Y29kZXIsIHNvdXJjZVByb3ZpZGVyLnNvdXJjZVVSTERpcmVjdGl2ZSgpKTsKKyAgICAgICAgbV9z
b3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlLmVuY29kZShlbmNvZGVyLCBzb3VyY2VQcm92aWRlci5z
b3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlKCkpOwogICAgICAgICBtX3N0YXJ0UG9zaXRpb24uZW5j
b2RlKGVuY29kZXIsIHNvdXJjZVByb3ZpZGVyLnN0YXJ0UG9zaXRpb24oKSk7CiAgICAgfQogCkBA
IC0xNDI5LDYgKzE0MjksMjQgQEAgY2xhc3MgQ2FjaGVkU291cmNlQ29kZSA6IHB1YmxpYyBDYWNo
ZWRVbmxpbmtlZFNvdXJjZUNvZGVTaGFwZTxTb3VyY2VDb2RlPiB7CiAgICAgaW50IG1fc3RhcnRD
b2x1bW47CiB9OwogCitjbGFzcyBDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGVSYXJlRGF0YSA6IHB1
YmxpYyBDYWNoZWRPYmplY3Q8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlJhcmVEYXRhPiB7
CitwdWJsaWM6CisgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlJhcmVEYXRhJiByYXJlRGF0YSkKKyAgICB7CisgICAgICAg
IG1fY2xhc3NTb3VyY2UuZW5jb2RlKGVuY29kZXIsIHJhcmVEYXRhLm1fY2xhc3NTb3VyY2UpOwor
ICAgIH0KKworICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpSYXJlRGF0YSogZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpIGNvbnN0CisgICAgeworICAgICAgICBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6UmFyZURhdGEqIHJhcmVEYXRhID0gbmV3IFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlOjpSYXJlRGF0YSB7IH07CisgICAgICAgIG1fY2xhc3NTb3VyY2UuZGVjb2RlKGRlY29k
ZXIsIHJhcmVEYXRhLT5tX2NsYXNzU291cmNlKTsKKyAgICAgICAgcmV0dXJuIHJhcmVEYXRhOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBDYWNoZWRTb3VyY2VDb2RlIG1fY2xhc3NTb3VyY2U7Cit9
OworCiBjbGFzcyBDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGUgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0
PFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPiB7CiBwdWJsaWM6CiAgICAgdm9pZCBlbmNvZGUo
RW5jb2RlciYsIGNvbnN0IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlJik7CkBAIC0xNDY0LDYg
KzE0ODIsOCBAQCBjbGFzcyBDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGUgOiBwdWJsaWMgQ2FjaGVk
T2JqZWN0PFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPgogICAgIElkZW50aWZpZXIgZWNtYU5h
bWUoRGVjb2RlciYgZGVjb2RlcikgY29uc3QgeyByZXR1cm4gbV9lY21hTmFtZS5kZWNvZGUoZGVj
b2Rlcik7IH0KICAgICBJZGVudGlmaWVyIGluZmVycmVkTmFtZShEZWNvZGVyJiBkZWNvZGVyKSBj
b25zdCB7IHJldHVybiBtX2luZmVycmVkTmFtZS5kZWNvZGUoZGVjb2Rlcik7IH0KIAorICAgIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpSYXJlRGF0YSogcmFyZURhdGEoRGVjb2RlciYgZGVj
b2RlcikgY29uc3QgeyByZXR1cm4gbV9yYXJlRGF0YS5kZWNvZGVBc1B0cihkZWNvZGVyKTsgfQor
CiBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fZmlyc3RMaW5lT2Zmc2V0OwogICAgIHVuc2lnbmVk
IG1fbGluZUNvdW50OwpAQCAtMTQ4OSw3ICsxNTA5LDcgQEAgY2xhc3MgQ2FjaGVkRnVuY3Rpb25F
eGVjdXRhYmxlIDogcHVibGljIENhY2hlZE9iamVjdDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZT4KICAgICB1bnNpZ25lZCBtX3N1cGVyQmluZGluZyA6IDE7CiAgICAgdW5zaWduZWQgbV9kZXJp
dmVkQ29udGV4dFR5cGU6IDI7CiAKLSAgICBDYWNoZWRTb3VyY2VDb2RlIG1fY2xhc3NTb3VyY2U7
CisgICAgQ2FjaGVkT3B0aW9uYWw8Q2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxlUmFyZURhdGE+IG1f
cmFyZURhdGE7CiAKICAgICBDYWNoZWRJZGVudGlmaWVyIG1fbmFtZTsKICAgICBDYWNoZWRJZGVu
dGlmaWVyIG1fZWNtYU5hbWU7CkBAIC0xODI0LDcgKzE4NDQsNyBAQCBBTFdBWVNfSU5MSU5FIHZv
aWQgQ2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgVW5saQogICAgIG1fc3VwZXJCaW5kaW5nID0gZXhlY3V0YWJsZS5tX3N1cGVyQmluZGluZzsK
ICAgICBtX2Rlcml2ZWRDb250ZXh0VHlwZSA9IGV4ZWN1dGFibGUubV9kZXJpdmVkQ29udGV4dFR5
cGU7CiAKLSAgICBtX2NsYXNzU291cmNlLmVuY29kZShlbmNvZGVyLCBleGVjdXRhYmxlLm1fY2xh
c3NTb3VyY2UpOworICAgIG1fcmFyZURhdGEuZW5jb2RlKGVuY29kZXIsIGV4ZWN1dGFibGUubV9y
YXJlRGF0YSk7CiAKICAgICBtX25hbWUuZW5jb2RlKGVuY29kZXIsIGV4ZWN1dGFibGUubmFtZSgp
KTsKICAgICBtX2VjbWFOYW1lLmVuY29kZShlbmNvZGVyLCBleGVjdXRhYmxlLmVjbWFOYW1lKCkp
OwpAQCAtMTg0NCw3ICsxODY0LDYgQEAgQUxXQVlTX0lOTElORSBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSogQ2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxlOjpkZWNvZGUoRGVjb2QKICAgICBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPihkZWNvZGVyLnZtKCkuaGVhcCkpIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKGRlY29kZXIsIGVudiwgKnRoaXMpOwogICAgIGV4ZWN1
dGFibGUtPmZpbmlzaENyZWF0aW9uKGRlY29kZXIudm0oKSk7CiAKLSAgICBtX2NsYXNzU291cmNl
LmRlY29kZShkZWNvZGVyLCBleGVjdXRhYmxlLT5tX2NsYXNzU291cmNlKTsKICAgICBtX3VubGlu
a2VkQ29kZUJsb2NrRm9yQ2FsbC5kZWNvZGUoZGVjb2RlciwgZXhlY3V0YWJsZS0+bV91bmxpbmtl
ZENvZGVCbG9ja0ZvckNhbGwsIGV4ZWN1dGFibGUpOwogICAgIG1fdW5saW5rZWRDb2RlQmxvY2tG
b3JDb25zdHJ1Y3QuZGVjb2RlKGRlY29kZXIsIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRDb2RlQmxv
Y2tGb3JDb25zdHJ1Y3QsIGV4ZWN1dGFibGUpOwogCkBAIC0xODgyLDYgKzE5MDEsOCBAQCBBTFdB
WVNfSU5MSU5FIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZShEZWNvZGVyJiBkZQogICAgICwgbV9pbmZlcnJlZE5hbWUoY2FjaGVkRXhlY3V0YWJs
ZS5pbmZlcnJlZE5hbWUoZGVjb2RlcikpCiAKICAgICAsIG1fcGFyZW50U2NvcGVURFpWYXJpYWJs
ZXMoZGVjb2Rlci52bSgpLm1fY29tcGFjdFZhcmlhYmxlTWFwLT5nZXQocGFyZW50U2NvcGVURFpW
YXJpYWJsZXMpKQorCisgICAgLCBtX3JhcmVEYXRhKGNhY2hlZEV4ZWN1dGFibGUucmFyZURhdGEo
ZGVjb2RlcikpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2Fj
aGUuY3BwCmluZGV4IGYxZWE3NzdhNWZlNGZiNWJkYTIxZDc2N2ZlYzg5ZDYzOTNlMjczZWIuLjg3
YTNhODE1NjM4YzJjMTVlMTIzYjAwODFjMjZhNWE5ZDA3Y2FlY2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcApAQCAtNzAsOCArNzAsMTIgQEAgVW5saW5r
ZWRDb2RlQmxvY2tUeXBlKiBDb2RlQ2FjaGU6OmdldFVubGlua2VkR2xvYmFsQ29kZUJsb2NrKFZN
JiB2bSwgRXhlY3V0YWJsZVQKICAgICAgICAgYm9vbCBlbmRDb2x1bW5Jc09uU3RhcnRMaW5lID0g
IWxpbmVDb3VudDsKICAgICAgICAgdW5zaWduZWQgZW5kQ29sdW1uID0gdW5saW5rZWRDb2RlQmxv
Y2stPmVuZENvbHVtbigpICsgKGVuZENvbHVtbklzT25TdGFydExpbmUgPyBzdGFydENvbHVtbiA6
IDEpOwogICAgICAgICBleGVjdXRhYmxlLT5yZWNvcmRQYXJzZSh1bmxpbmtlZENvZGVCbG9jay0+
Y29kZUZlYXR1cmVzKCksIHVubGlua2VkQ29kZUJsb2NrLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygp
LCBzb3VyY2UuZmlyc3RMaW5lKCkub25lQmFzZWRJbnQoKSArIGxpbmVDb3VudCwgZW5kQ29sdW1u
KTsKLSAgICAgICAgc291cmNlLnByb3ZpZGVyKCktPnNldFNvdXJjZVVSTERpcmVjdGl2ZSh1bmxp
bmtlZENvZGVCbG9jay0+c291cmNlVVJMRGlyZWN0aXZlKCkpOwotICAgICAgICBzb3VyY2UucHJv
dmlkZXIoKS0+c2V0U291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZSh1bmxpbmtlZENvZGVCbG9jay0+
c291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZSgpKTsKKyAgICAgICAgaWYgKCFpc0Z1bmN0aW9uUGFy
c2VNb2RlKHVubGlua2VkQ29kZUJsb2NrLT5wYXJzZU1vZGUoKSkpIHsKKyAgICAgICAgICAgIGlm
ICghdW5saW5rZWRDb2RlQmxvY2stPnNvdXJjZVVSTERpcmVjdGl2ZSgpLmlzTnVsbCgpKQorICAg
ICAgICAgICAgICAgIHNvdXJjZS5wcm92aWRlcigpLT5zZXRTb3VyY2VVUkxEaXJlY3RpdmUodW5s
aW5rZWRDb2RlQmxvY2stPnNvdXJjZVVSTERpcmVjdGl2ZSgpKTsKKyAgICAgICAgICAgIGlmICgh
dW5saW5rZWRDb2RlQmxvY2stPnNvdXJjZU1hcHBpbmdVUkxEaXJlY3RpdmUoKS5pc051bGwoKSkK
KyAgICAgICAgICAgICAgICBzb3VyY2UucHJvdmlkZXIoKS0+c2V0U291cmNlTWFwcGluZ1VSTERp
cmVjdGl2ZSh1bmxpbmtlZENvZGVCbG9jay0+c291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZSgpKTsK
KyAgICAgICAgfQogICAgICAgICByZXR1cm4gdW5saW5rZWRDb2RlQmxvY2s7CiAgICAgfQogCkBA
IC0xMTUsOCArMTE5LDEyIEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBDb2RlQ2FjaGU6
OmdldFVubGlua2VkR2xvYmFsRnVuY3Rpb25FeGVjdXRhYmxlKFZNJiB2CiAgICAgICAgIGZ1bmN0
aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24pOwogICAgIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbV9zb3VyY2VDb2RlLmZpbmRDYWNoZUFuZFVwZGF0
ZUFnZTxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0sIGtleSk7CiAgICAgaWYgKGV4ZWN1
dGFibGUgJiYgT3B0aW9uczo6dXNlQ29kZUNhY2hlKCkpIHsKLSAgICAgICAgc291cmNlLnByb3Zp
ZGVyKCktPnNldFNvdXJjZVVSTERpcmVjdGl2ZShleGVjdXRhYmxlLT5zb3VyY2VVUkxEaXJlY3Rp
dmUoKSk7Ci0gICAgICAgIHNvdXJjZS5wcm92aWRlcigpLT5zZXRTb3VyY2VNYXBwaW5nVVJMRGly
ZWN0aXZlKGV4ZWN1dGFibGUtPnNvdXJjZU1hcHBpbmdVUkxEaXJlY3RpdmUoKSk7CisgICAgICAg
IGlmICghaXNGdW5jdGlvblBhcnNlTW9kZShleGVjdXRhYmxlLT5wYXJzZU1vZGUoKSkpIHsKKyAg
ICAgICAgICAgIGlmICghZXhlY3V0YWJsZS0+c291cmNlVVJMRGlyZWN0aXZlKCkuaXNOdWxsKCkp
CisgICAgICAgICAgICAgICAgc291cmNlLnByb3ZpZGVyKCktPnNldFNvdXJjZVVSTERpcmVjdGl2
ZShleGVjdXRhYmxlLT5zb3VyY2VVUkxEaXJlY3RpdmUoKSk7CisgICAgICAgICAgICBpZiAoIWV4
ZWN1dGFibGUtPnNvdXJjZU1hcHBpbmdVUkxEaXJlY3RpdmUoKS5pc051bGwoKSkKKyAgICAgICAg
ICAgICAgICBzb3VyY2UucHJvdmlkZXIoKS0+c2V0U291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZShl
eGVjdXRhYmxlLT5zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlKCkpOworICAgICAgICB9CiAgICAg
ICAgIHJldHVybiBleGVjdXRhYmxlOwogICAgIH0KIApAQCAtMTQ5LDggKzE1NywxMiBAQCBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQ29kZUNhY2hlOjpnZXRVbmxpbmtlZEdsb2JhbEZ1bmN0
aW9uRXhlY3V0YWJsZShWTSYgdgogICAgIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0
eSA9IGNvbnN0cnVjdEFiaWxpdHlGb3JQYXJzZU1vZGUobWV0YWRhdGEtPnBhcnNlTW9kZSgpKTsK
ICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgbWV0YWRhdGEsIFVu
bGlua2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9k
ZTo6Q2xhc3NpYywgdm0ubV9jb21wYWN0VmFyaWFibGVNYXAtPmdldChlbXB0eVREWlZhcmlhYmxl
cyksIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSk7CiAKLSAgICBmdW5jdGlvbkV4ZWN1dGFibGUt
PnNldFNvdXJjZVVSTERpcmVjdGl2ZShzb3VyY2UucHJvdmlkZXIoKS0+c291cmNlVVJMKCkpOwot
ICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+c2V0U291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZShzb3Vy
Y2UucHJvdmlkZXIoKS0+c291cmNlTWFwcGluZ1VSTCgpKTsKKyAgICBpZiAoIWlzRnVuY3Rpb25Q
YXJzZU1vZGUobWV0YWRhdGEtPnBhcnNlTW9kZSgpKSkgeworICAgICAgICBpZiAoIXNvdXJjZS5w
cm92aWRlcigpLT5zb3VyY2VVUkxEaXJlY3RpdmUoKS5pc051bGwoKSkKKyAgICAgICAgICAgIGZ1
bmN0aW9uRXhlY3V0YWJsZS0+c2V0U291cmNlVVJMRGlyZWN0aXZlKHNvdXJjZS5wcm92aWRlcigp
LT5zb3VyY2VVUkxEaXJlY3RpdmUoKSk7CisgICAgICAgIGlmICghc291cmNlLnByb3ZpZGVyKCkt
PnNvdXJjZU1hcHBpbmdVUkxEaXJlY3RpdmUoKS5pc051bGwoKSkKKyAgICAgICAgICAgIGZ1bmN0
aW9uRXhlY3V0YWJsZS0+c2V0U291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZShzb3VyY2UucHJvdmlk
ZXIoKS0+c291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZSgpKTsKKyAgICB9CiAKICAgICBpZiAoT3B0
aW9uczo6dXNlQ29kZUNhY2hlKCkpCiAgICAgICAgIG1fc291cmNlQ29kZS5hZGRDYWNoZShrZXks
IFNvdXJjZUNvZGVWYWx1ZSh2bSwgZnVuY3Rpb25FeGVjdXRhYmxlLCBtX3NvdXJjZUNvZGUuYWdl
KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNo
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmgKaW5kZXggNDU5
MzhlNmY2Mjg4N2MyYjJhYTk2MWZiZGMyMDI1MTZjN2Y4ZGMxMC4uNjgzZDVkMjk4NGNjMGRhZTY4
YWY4ZTgwN2ExZDZkNWEwZTQ5OWUzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29kZUNhY2hlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29kZUNhY2hlLmgKQEAgLTI5Nyw4ICsyOTcsMTIgQEAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBn
ZW5lcmF0ZVVubGlua2VkQ29kZUJsb2NrSW1wbChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHMK
IAogICAgIFVubGlua2VkQ29kZUJsb2NrVHlwZSogdW5saW5rZWRDb2RlQmxvY2sgPSBVbmxpbmtl
ZENvZGVCbG9ja1R5cGU6OmNyZWF0ZSgmdm0sIGV4ZWN1dGFibGVJbmZvLCBkZWJ1Z2dlck1vZGUp
OwogICAgIHVubGlua2VkQ29kZUJsb2NrLT5yZWNvcmRQYXJzZShyb290Tm9kZS0+ZmVhdHVyZXMo
KSwgcm9vdE5vZGUtPmhhc0NhcHR1cmVkVmFyaWFibGVzKCksIGxpbmVDb3VudCwgdW5saW5rZWRF
bmRDb2x1bW4pOwotICAgIHVubGlua2VkQ29kZUJsb2NrLT5zZXRTb3VyY2VVUkxEaXJlY3RpdmUo
c291cmNlLnByb3ZpZGVyKCktPnNvdXJjZVVSTCgpKTsKLSAgICB1bmxpbmtlZENvZGVCbG9jay0+
c2V0U291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZShzb3VyY2UucHJvdmlkZXIoKS0+c291cmNlTWFw
cGluZ1VSTCgpKTsKKyAgICBpZiAoIWlzRnVuY3Rpb25QYXJzZU1vZGUodW5saW5rZWRDb2RlQmxv
Y2stPnBhcnNlTW9kZSgpKSkgeworICAgICAgICBpZiAoIXNvdXJjZS5wcm92aWRlcigpLT5zb3Vy
Y2VVUkxEaXJlY3RpdmUoKS5pc051bGwoKSkKKyAgICAgICAgICAgIHVubGlua2VkQ29kZUJsb2Nr
LT5zZXRTb3VyY2VVUkxEaXJlY3RpdmUoc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZVVSTERpcmVj
dGl2ZSgpKTsKKyAgICAgICAgaWYgKCFzb3VyY2UucHJvdmlkZXIoKS0+c291cmNlTWFwcGluZ1VS
TERpcmVjdGl2ZSgpLmlzTnVsbCgpKQorICAgICAgICAgICAgdW5saW5rZWRDb2RlQmxvY2stPnNl
dFNvdXJjZU1hcHBpbmdVUkxEaXJlY3RpdmUoc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZU1hcHBp
bmdVUkxEaXJlY3RpdmUoKSk7CisgICAgfQogCiAgICAgZXJyb3IgPSBCeXRlY29kZUdlbmVyYXRv
cjo6Z2VuZXJhdGUodm0sIHJvb3ROb2RlLmdldCgpLCBzb3VyY2UsIHVubGlua2VkQ29kZUJsb2Nr
LCBkZWJ1Z2dlck1vZGUsIHZhcmlhYmxlc1VuZGVyVERaKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCAwZTE4ODI5ODNk
M2ZlMjU5ZjliODFjYzJmMThmNDU3ZjA5OGI2ZDUzLi4zY2QxNTg4YmVhYjk4OTBhZjg4ODg1NDMz
NjhhOTA1N2MzZTNiYWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtMTMyLDcgKzEzMiw3IEBAIGNsYXNzIEZ1bmN0aW9u
RXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICBGdW5jdGlv
bk1vZGUgZnVuY3Rpb25Nb2RlKCkgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmZ1bmN0
aW9uTW9kZSgpOyB9CiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0J1aWx0aW5GdW5jdGlvbigpOyB9CiAgICAgQ29uc3Ry
dWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5KCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4
ZWN1dGFibGUtPmNvbnN0cnVjdEFiaWxpdHkoKTsgfQotICAgIGJvb2wgaXNDbGFzcygpIGNvbnN0
IHsgcmV0dXJuICFjbGFzc1NvdXJjZSgpLmlzTnVsbCgpOyB9CisgICAgYm9vbCBpc0NsYXNzKCkg
Y29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmlzQ2xhc3MoKTsgfQogICAgIGJv
b2wgaXNBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gcGFyc2VNb2RlKCkgPT0gU291cmNl
UGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZTsgfQogICAgIGJvb2wgaXNHZXR0ZXIoKSBjb25z
dCB7IHJldHVybiBwYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGU7IH0K
ICAgICBib29sIGlzU2V0dGVyKCkgY29uc3QgeyByZXR1cm4gcGFyc2VNb2RlKCkgPT0gU291cmNl
UGFyc2VNb2RlOjpTZXR0ZXJNb2RlOyB9CkBAIC0xNjUsNyArMTY1LDcgQEAgY2xhc3MgRnVuY3Rp
b25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAgIHVuc2ln
bmVkIHBhcmFtZXRlckNvdW50KCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUt
PnBhcmFtZXRlckNvdW50KCk7IH0gLy8gRXhjbHVkaW5nICd0aGlzJyEKICAgICBTb3VyY2VQYXJz
ZU1vZGUgcGFyc2VNb2RlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPnBh
cnNlTW9kZSgpOyB9CiAgICAgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUoKSBjb25zdCB7
IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+c2NyaXB0TW9kZSgpOyB9Ci0gICAgY29uc3Qg
U291cmNlQ29kZSYgY2xhc3NTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0
YWJsZS0+Y2xhc3NTb3VyY2UoKTsgfQorICAgIFNvdXJjZUNvZGUgY2xhc3NTb3VyY2UoKSBjb25z
dCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+Y2xhc3NTb3VyY2UoKTsgfQogCiAgICAg
c3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCmluZGV4IDQ1ODhkZjUxYTQ1NDdmMzQ1OTQ1
NzBhNGRkZDlhMzYzZTQ5YjZlNWQuLjM3MmUwNTlhYmE0M2Y5YjkxNTQwNzBjZTZmYWY4ZjA3ZTEy
OTY4NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5n
UHJvZmlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5n
UHJvZmlsZXIuY3BwCkBAIC04NjMsNyArODYzLDcgQEAgU3RyaW5nIFNhbXBsaW5nUHJvZmlsZXI6
OlN0YWNrRnJhbWU6OnVybCgpCiAKICAgICBTdHJpbmcgdXJsID0gc3RhdGljX2Nhc3Q8U2NyaXB0
RXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpLT5zb3VyY2VVUkwoKTsKICAgICBpZiAodXJsLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNjcmlwdEV4ZWN1dGFibGUqPihleGVj
dXRhYmxlKS0+c291cmNlKCkucHJvdmlkZXIoKS0+c291cmNlVVJMKCk7IC8vIEZhbGwgYmFjayB0
byBzb3VyY2VVUkwgZGlyZWN0aXZlLgorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U2NyaXB0
RXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpLT5zb3VyY2UoKS5wcm92aWRlcigpLT5zb3VyY2VVUkxE
aXJlY3RpdmUoKTsgLy8gRmFsbCBiYWNrIHRvIHNvdXJjZVVSTCBkaXJlY3RpdmUuCiAgICAgcmV0
dXJuIHVybDsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362202</attachid>
            <date>2019-02-15 20:27:23 -0800</date>
            <delta_ts>2019-02-16 00:21:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194733-20190215202722.patch</filename>
            <type>text/plain</type>
            <size>27531</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQxNjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MDQ5ZjBjMzc2YmY0NmQ4MGM0OGFhY2E0NzYwNDk5YWMwYWFmZGU4Li5kYzAxM2E3OWJiYmNlMTBi
MTA4MTg4OGM1ZWQzZTIxZDM2MzI3YmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MSBAQAorMjAxOS0wMi0xNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFNocmluayBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NzMzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUgaGFzIHNvdXJjZVVSTERpcmVjdGl2ZSBhbmQgc291cmNlTWFwcGluZ1VS
TERpcmVjdGl2ZS4gVGhlc2UKKyAgICAgICAgZGlyZWN0aXZlcyBjYW4gYmUgZm91bmQgaW4gdGhl
IGNvbW1lbnQgb2Ygbm9uIHR5cGljYWwgZnVuY3Rpb24ncyBzb3VyY2UgY29kZSAoUHJvZ3JhbSwK
KyAgICAgICAgRXZhbCBjb2RlLCBhbmQgR2xvYmFsIGZ1bmN0aW9uIGZyb20gZnVuY3Rpb24gY29u
c3RydWN0b3IgZXRjLiksIGFuZCB0cmlja3kgdGhpbmcgaXMgdGhhdAorICAgICAgICBTb3VyY2VQ
cm92aWRlcidzIGRpcmVjdGl2ZXMgYXJlIHVwZGF0ZWQgYnkgUGFyc2VyLiBUaGUgcmVhc29uIHdo
eSB3ZSBoYXZlIHRoZXNlIGZpZWxkcyBpbgorICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSBpcyB0aGF0IHdlIG5lZWQgdG8gdXBkYXRlIHRoZSBTb3VyY2VQcm92aWRlcidzIGRpcmVj
dGl2ZXMgZXZlbgorICAgICAgICBpZiB3ZSBza2lwIHBhcnNpbmcgYnkgdXNpbmcgQ29kZUNhY2hl
LiBUaGVzZSBmaWVsZHMgYXJlIGVmZmVjdGl2ZSBvbmx5IGlmICgxKQorICAgICAgICBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSBpcyBmb3Igbm9uIHR5cGljYWwgZnVuY3Rpb24gdGhpbmdzLCBh
bmQgKDIpIGl0IGhhcyBzb3VyY2VVUkxEaXJlY3RpdmUKKyAgICAgICAgb3Igc291cmNlTWFwcGlu
Z1VSTERpcmVjdGl2ZS4gVGhpcyBpcyByYXJlIGVub3VnaCB0byBwdXJnZSB0aGVtIHRvIGEgc2Vw
YXJhdGVkCisgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpSYXJlRGF0YSB0byBt
YWtlIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIHNtYWxsLgorICAgICAgICBzaXplb2YoVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpIGlzIHZlcnkgaW1wb3J0YW50IHNpbmNlIGl0IGlzIHN1
cGVyIGZyZXF1ZW50bHkgYWxsb2NhdGVkCisgICAgICAgIGNlbGwuIEZ1cnRoZXJtb3JlLCB0aGUg
Y3VycmVudCBKU0MgYWxsb2NhdGVzIHR3byBNYXJrZWRCbG9ja3MgZm9yIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlCisgICAgICAgIGluIEpTR2xvYmFsT2JqZWN0IGluaXRpYWxpemF0aW9uLCBi
dXQgdGhlIHVzYWdlIG9mIHRoZSBzZWNvbmQgTWFya2VkQmxvY2sgaXMgcXVpdGUgbG93ICg4JSku
CisgICAgICAgIElmIHdlIGNhbiByZWR1Y2UgdGhlIHNpemUgb2YgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUsIHdlIGNhbiBtYWtlIHRoZW0gb25lIE1hcmtlZEJsb2NrLgorICAgICAgICBTaW5j
ZSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBpcyBhbGxvY2F0ZWQgZnJvbSBJc29TdWJzcGFj
ZSwgd2UgZG8gbm90IG5lZWQgdG8gZml0IGl0IHRvCisgICAgICAgIG9uZSBvZiBzaXplIGNsYXNz
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBSYXJlRGF0YSB0byBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSBhbmQgbW92ZSBzb21lIHJhcmUgZGF0YXMgaW50byBSYXJlRGF0YS4KKyAgICAg
ICAgQW5kIGtpbGwgb25lIE1hcmtlZEJsb2NrIGFsbG9jYXRpb24gaW4gSlNDIGluaXRpYWxpemF0
aW9uIHBoYXNlLgorCisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUuY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6ZW5zdXJlUmFyZURhdGFTbG93KToKKyAgICAgICAgKiBieXRlY29kZS9Vbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZS5oOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyTG9jYXRp
b24uY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlckxvY2F0aW9uOjpEZWJ1Z2dlckxvY2F0aW9u
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAo
SW5zcGVjdG9yOjpTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hEaWRQYXJzZVNvdXJjZSk6Cisg
ICAgICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgIChKU0M6OkxleGVyOjpzb3VyY2VVUkxE
aXJlY3RpdmUgY29uc3QpOgorICAgICAgICAoSlNDOjpMZXhlcjo6c291cmNlTWFwcGluZ1VSTERp
cmVjdGl2ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkxleGVyOjpzb3VyY2VVUkwgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpMZXhlcjo6c291cmNlTWFwcGluZ1VSTCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2UpOgorICAgICAgICAqIHBhcnNlci9Tb3VyY2VQcm92aWRlci5oOgor
ICAgICAgICAoSlNDOjpTb3VyY2VQcm92aWRlcjo6c291cmNlVVJMRGlyZWN0aXZlIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6U291cmNlUHJvdmlkZXI6OnNvdXJjZU1hcHBpbmdVUkxEaXJlY3RpdmUg
Y29uc3QpOgorICAgICAgICAoSlNDOjpTb3VyY2VQcm92aWRlcjo6c2V0U291cmNlVVJMRGlyZWN0
aXZlKToKKyAgICAgICAgKEpTQzo6U291cmNlUHJvdmlkZXI6OnNldFNvdXJjZU1hcHBpbmdVUkxE
aXJlY3RpdmUpOgorICAgICAgICAoSlNDOjpTb3VyY2VQcm92aWRlcjo6c291cmNlVVJMIGNvbnN0
KTogRGVsZXRlZC4gV2UgcmVuYW1lIGl0IGZyb20gc291cmNlVVJMIHRvIHNvdXJjZVVSTERpcmVj
dGl2ZQorICAgICAgICBzaW5jZSBpdCBpcyB0aGUgY29ycmVjdCBuYW1lLgorICAgICAgICAoSlND
OjpTb3VyY2VQcm92aWRlcjo6c291cmNlTWFwcGluZ1VSTCBjb25zdCk6IERlbGV0ZWQuIFdlIHJl
bmFtZSBpdCBmcm9tIHNvdXJjZU1hcHBpbmdVUkwgdG8KKyAgICAgICAgc291cmNlTWFwcGluZ1VS
TERpcmVjdGl2ZSBzaW5jZSBpdCBpcyB0aGUgY29ycmVjdCBuYW1lLgorICAgICAgICAqIHJ1bnRp
bWUvQ2FjaGVkVHlwZXMuY3BwOgorICAgICAgICAoSlNDOjpDYWNoZWRTb3VyY2VQcm92aWRlclNo
YXBlOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGVSYXJl
RGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6Q2FjaGVkRnVuY3Rpb25FeGVjdXRhYmxlUmFy
ZURhdGE6OmRlY29kZSBjb25zdCk6IENhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZSBkaWQgbm90IGhh
dmUKKyAgICAgICAgc291cmNlTWFwcGluZ1VSTCB0byBzb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZl
LiBTbyB0aGlzIHBhdGNoIGtlZXBzIHRoZSBzYW1lIGxvZ2ljLgorICAgICAgICAoSlNDOjpDYWNo
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnJhcmVEYXRhIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2Fj
aGVkRnVuY3Rpb25FeGVjdXRhYmxlOjplbmNvZGUpOgorICAgICAgICAoSlNDOjpDYWNoZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmRlY29kZSBjb25zdCk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgICog
cnVudGltZS9Db2RlQ2FjaGUuY3BwOgorICAgICAgICAoSlNDOjpDb2RlQ2FjaGU6OmdldFVubGlu
a2VkR2xvYmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpnZXRVbmxpbmtl
ZEdsb2JhbEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgICogcnVudGltZS9Db2RlQ2FjaGUu
aDoKKyAgICAgICAgKEpTQzo6Z2VuZXJhdGVVbmxpbmtlZENvZGVCbG9ja0ltcGwpOgorICAgICAg
ICAqIHJ1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9TYW1w
bGluZ1Byb2ZpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6U2FtcGxpbmdQcm9maWxlcjo6U3RhY2tG
cmFtZTo6dXJsKToKKwogMjAxOS0wMi0xNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtKU0NdIE1ha2UgYnVpbHRpbiBvYmplY3RzIG1vcmUgbGF6aWx5IGlu
aXRpYWxpemVkIHVuZGVyIG5vbi1KSVQgbW9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5k
ZXggY2U3MWM2ZjZlZGQ2ZGY2MGRmMjkzNGNiODZkNmUxYzhhZmM0NDJiNi4uY2FkYTQ3Nzg4OGI3
ODJmYWJmOGM3OTNhMmJmZWNiY2Q0MzE3NzJiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3Bw
CkBAIC00Miw3ICs0Miw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1zdGF0aWNfYXNzZXJ0KHNp
emVvZihVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSkgPD0gMTYwLCAiVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUgc2hvdWxkIGZpdCBpbiBhIDE2MC1ieXRlIGNlbGwuIElmIHlvdSBpbmNyZWFz
ZSB0aGUgc2l6ZSBvZiB0aGlzIGNsYXNzLCBjb25zaWRlciBtYWtpbmcgYSBzaXplIGNsYXNzIHRo
YXQgcGVyZmVjdGx5IGZpdHMgaXQuIik7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSkgPD0gMTI4LCAiVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgc2hv
dWxkIGZpdCBpbiBhIDEyOC1ieXRlIGNlbGwgdG8ga2VlcCBhbGxvY2F0ZWQgYmxvY2sgb25seSBv
bmUganVzdCBhZnRlciBpbml0aWFsaXppbmcgSlNHbG9iYWxPYmplY3QuIik7CiAKIGNvbnN0IENs
YXNzSW5mbyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6c19pbmZvID0geyAiVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUiLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKSB9OwogCkBAIC0xMDYsNyArMTA2
LDYgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3QKICAgICAsIG1fbmFtZShub2RlLT5pZGVudCgp
KQogICAgICwgbV9lY21hTmFtZShub2RlLT5lY21hTmFtZSgpKQogICAgICwgbV9pbmZlcnJlZE5h
bWUobm9kZS0+aW5mZXJyZWROYW1lKCkpCi0gICAgLCBtX2NsYXNzU291cmNlKG5vZGUtPmNsYXNz
U291cmNlKCkpCiAgICAgLCBtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzKFdURk1vdmUocGFyZW50
U2NvcGVURFpWYXJpYWJsZXMpKQogewogICAgIC8vIE1ha2Ugc3VyZSB0aGVzZSBiaXRmaWVsZHMg
YXJlIGFkZXF1YXRlbHkgd2lkZS4KQEAgLTExNyw2ICsxMTYsOCBAQCBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdAogICAgIEFTU0VSVChtX3N1cGVyQmluZGluZyA9PSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4obm9kZS0+c3VwZXJCaW5kaW5nKCkpKTsKICAgICBBU1NFUlQobV9kZXJpdmVkQ29udGV4dFR5
cGUgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlcml2ZWRDb250ZXh0VHlwZSkpOwogICAgIEFT
U0VSVCghKG1faXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IgJiYgY29uc3RydWN0b3JL
aW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpOb25lKSk7CisgICAgaWYgKCFub2RlLT5jbGFzc1Nv
dXJjZSgpLmlzTnVsbCgpKQorICAgICAgICBzZXRDbGFzc1NvdXJjZShub2RlLT5jbGFzc1NvdXJj
ZSgpKTsKIH0KIAogdm9pZCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZGVzdHJveShKU0Nl
bGwqIGNlbGwpCkBAIC0yNDMsNiArMjQ0LDEzIEBAIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sq
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjp1bmxpbmtlZENvZGVCbG9ja0ZvcigKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCitVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6UmFyZURhdGEm
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjplbnN1cmVSYXJlRGF0YVNsb3coKQoreworICAg
IEFTU0VSVCghbV9yYXJlRGF0YSk7CisgICAgbV9yYXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8
UmFyZURhdGE+KCk7CisgICAgcmV0dXJuICptX3JhcmVEYXRhOworfQorCiB2b2lkIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpzZXRJbnZhbGlkVHlwZVByb2ZpbGluZ09mZnNldHMoKQogewog
ICAgIG1fdHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNp
Z25lZD46Om1heCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCA3NzM4MTUyZWQ4NDRkZTQx
Mzk3YmZkYWM3YmI3YTAwZDQ4MmJlOGMxLi5kZWZkMmYwOGI4NzE4MWU2YjdmNGZmNjAxNTY5MDdm
ZGI2ZWIzOTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtNTYsNyArNTYsNyBAQCBjbGFz
cyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogcHVi
bGljOgogICAgIGZyaWVuZCBjbGFzcyBDb2RlQ2FjaGU7CiAgICAgZnJpZW5kIGNsYXNzIFZNOwot
ICAgIGZyaWVuZCBDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGU7CisgICAgZnJpZW5kIGNsYXNzIENh
Y2hlZEZ1bmN0aW9uRXhlY3V0YWJsZTsKIAogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CiAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxh
Z3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwpAQCAtODIsOCArODIsMTYgQEAgY2xhc3MgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB1bnNpZ25l
ZCBwYXJhbWV0ZXJDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVyQ291bnQ7IH07IC8v
IEV4Y2x1ZGluZyAndGhpcychCiAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PFNvdXJjZVBhcnNlTW9kZT4obV9zb3VyY2VQYXJzZU1vZGUp
OyB9OwogCi0gICAgY29uc3QgU291cmNlQ29kZSYgY2xhc3NTb3VyY2UoKSBjb25zdCB7IHJldHVy
biBtX2NsYXNzU291cmNlOyB9OwotICAgIHZvaWQgc2V0Q2xhc3NTb3VyY2UoY29uc3QgU291cmNl
Q29kZSYgc291cmNlKSB7IG1fY2xhc3NTb3VyY2UgPSBzb3VyY2U7IH07CisgICAgU291cmNlQ29k
ZSBjbGFzc1NvdXJjZSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9yYXJlRGF0YSkKKyAg
ICAgICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX2NsYXNzU291cmNlOworICAgICAgICByZXR1
cm4gU291cmNlQ29kZSgpOworICAgIH0KKyAgICB2b2lkIHNldENsYXNzU291cmNlKGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSkKKyAgICB7CisgICAgICAgIGVuc3VyZVJhcmVEYXRhKCkubV9jbGFz
c1NvdXJjZSA9IHNvdXJjZTsKKyAgICB9CiAKICAgICBib29sIGlzSW5TdHJpY3RDb250ZXh0KCkg
Y29uc3QgeyByZXR1cm4gbV9pc0luU3RyaWN0Q29udGV4dDsgfQogICAgIEZ1bmN0aW9uTW9kZSBm
dW5jdGlvbk1vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxGdW5jdGlvbk1vZGU+KG1f
ZnVuY3Rpb25Nb2RlKTsgfQpAQCAtMTQwLDE2ICsxNDgsNDYgQEAgY2xhc3MgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBDb25zdHJ1Y3RBYmls
aXR5IGNvbnN0cnVjdEFiaWxpdHkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1
Y3RBYmlsaXR5PihtX2NvbnN0cnVjdEFiaWxpdHkpOyB9CiAgICAgSlNQYXJzZXJTY3JpcHRNb2Rl
IHNjcmlwdE1vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxKU1BhcnNlclNjcmlwdE1v
ZGU+KG1fc2NyaXB0TW9kZSk7IH0KICAgICBib29sIGlzQ2xhc3NDb25zdHJ1Y3RvckZ1bmN0aW9u
KCkgY29uc3QgeyByZXR1cm4gY29uc3RydWN0b3JLaW5kKCkgIT0gQ29uc3RydWN0b3JLaW5kOjpO
b25lOyB9CisgICAgYm9vbCBpc0NsYXNzKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghbV9y
YXJlRGF0YSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuICFtX3Jh
cmVEYXRhLT5tX2NsYXNzU291cmNlLmlzTnVsbCgpOworICAgIH0KICAgICBWYXJpYWJsZUVudmly
b25tZW50IHBhcmVudFNjb3BlVERaVmFyaWFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnRT
Y29wZVREWlZhcmlhYmxlcy5lbnZpcm9ubWVudCgpLnRvVmFyaWFibGVFbnZpcm9ubWVudCgpOyB9
CiAgICAgCiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBpc0Fycm93
RnVuY3Rpb25QYXJzZU1vZGUocGFyc2VNb2RlKCkpOyB9CiAKICAgICBKU0M6OkRlcml2ZWRDb250
ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUoKSBjb25zdCB7cmV0dXJuIHN0YXRpY19jYXN0PEpT
Qzo6RGVyaXZlZENvbnRleHRUeXBlPihtX2Rlcml2ZWRDb250ZXh0VHlwZSk7IH0KIAotICAgIGNv
bnN0IFN0cmluZyYgc291cmNlVVJMRGlyZWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VV
UkxEaXJlY3RpdmU7IH0KLSAgICBjb25zdCBTdHJpbmcmIHNvdXJjZU1hcHBpbmdVUkxEaXJlY3Rp
dmUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZU1hcHBpbmdVUkxEaXJlY3RpdmU7IH0KLSAgICB2
b2lkIHNldFNvdXJjZVVSTERpcmVjdGl2ZShjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkgeyBtX3Nv
dXJjZVVSTERpcmVjdGl2ZSA9IHNvdXJjZVVSTDsgfQotICAgIHZvaWQgc2V0U291cmNlTWFwcGlu
Z1VSTERpcmVjdGl2ZShjb25zdCBTdHJpbmcmIHNvdXJjZU1hcHBpbmdVUkwpIHsgbV9zb3VyY2VN
YXBwaW5nVVJMRGlyZWN0aXZlID0gc291cmNlTWFwcGluZ1VSTDsgfQorICAgIFN0cmluZyBzb3Vy
Y2VVUkxEaXJlY3RpdmUoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1fcmFyZURhdGEpCisg
ICAgICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9zb3VyY2VVUkxEaXJlY3RpdmU7CisgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICB9CisgICAgU3RyaW5nIHNvdXJjZU1hcHBpbmdVUkxE
aXJlY3RpdmUoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1fcmFyZURhdGEpCisgICAgICAg
ICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlOworICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgfQorICAgIHZvaWQgc2V0U291cmNlVVJMRGlyZWN0
aXZlKGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQorICAgIHsKKyAgICAgICAgZW5zdXJlUmFyZURh
dGEoKS5tX3NvdXJjZVVSTERpcmVjdGl2ZSA9IHNvdXJjZVVSTDsKKyAgICB9CisgICAgdm9pZCBz
ZXRTb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlKGNvbnN0IFN0cmluZyYgc291cmNlTWFwcGluZ1VS
TCkKKyAgICB7CisgICAgICAgIGVuc3VyZVJhcmVEYXRhKCkubV9zb3VyY2VNYXBwaW5nVVJMRGly
ZWN0aXZlID0gc291cmNlTWFwcGluZ1VSTDsKKyAgICB9CisKKyAgICBzdHJ1Y3QgUmFyZURhdGEg
eworICAgICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisKKyAgICAgICAgU291
cmNlQ29kZSBtX2NsYXNzU291cmNlOworICAgICAgICBTdHJpbmcgbV9zb3VyY2VVUkxEaXJlY3Rp
dmU7CisgICAgICAgIFN0cmluZyBtX3NvdXJjZU1hcHBpbmdVUkxEaXJlY3RpdmU7CisgICAgfTsK
IAogcHJpdmF0ZToKICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSosIFN0cnVjdHVy
ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIFVubGlua2VkRnVu
Y3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGUsIENvbXBhY3RW
YXJpYWJsZU1hcDo6SGFuZGxlLCAgSlNDOjpEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNCdWls
dGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IpOwpAQCAtMTg1LDEyICsyMjMsMTcgQEAgY2xhc3Mg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBJ
ZGVudGlmaWVyIG1fbmFtZTsKICAgICBJZGVudGlmaWVyIG1fZWNtYU5hbWU7CiAgICAgSWRlbnRp
ZmllciBtX2luZmVycmVkTmFtZTsKLSAgICBTb3VyY2VDb2RlIG1fY2xhc3NTb3VyY2U7CiAKLSAg
ICBTdHJpbmcgbV9zb3VyY2VVUkxEaXJlY3RpdmU7Ci0gICAgU3RyaW5nIG1fc291cmNlTWFwcGlu
Z1VSTERpcmVjdGl2ZTsKKyAgICBSYXJlRGF0YSYgZW5zdXJlUmFyZURhdGEoKQorICAgIHsKKyAg
ICAgICAgaWYgKExJS0VMWShtX3JhcmVEYXRhKSkKKyAgICAgICAgICAgIHJldHVybiAqbV9yYXJl
RGF0YTsKKyAgICAgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhU2xvdygpOworICAgIH0KKyAgICBS
YXJlRGF0YSYgZW5zdXJlUmFyZURhdGFTbG93KCk7CiAKICAgICBDb21wYWN0VmFyaWFibGVNYXA6
OkhhbmRsZSBtX3BhcmVudFNjb3BlVERaVmFyaWFibGVzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxS
YXJlRGF0YT4gbV9yYXJlRGF0YTsKIAogcHJvdGVjdGVkOgogICAgIHN0YXRpYyB2b2lkIHZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckxvY2F0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckxvY2F0aW9uLmNwcAppbmRleCBiMTM5NzIwYjQxMzNm
NTNiMzMxOGFlM2UzYWRkZGIzNGYyNWU1MzA4Li5jNjg5YjkzYTZiOGU5ZWFkNGYwNDUzZDZmYTZj
YWNlZmIwMWY1M2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXJMb2NhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2Vy
L0RlYnVnZ2VyTG9jYXRpb24uY3BwCkBAIC00MCw3ICs0MCw3IEBAIERlYnVnZ2VyTG9jYXRpb246
OkRlYnVnZ2VyTG9jYXRpb24oU2NyaXB0RXhlY3V0YWJsZSogZXhlY3V0YWJsZSkKICAgICBjb2x1
bW4gPSBleGVjdXRhYmxlLT5zdGFydENvbHVtbigpOwogICAgIHVybCA9IGV4ZWN1dGFibGUtPnNv
dXJjZVVSTCgpOwogICAgIGlmICh1cmwuaXNFbXB0eSgpKQotICAgICAgICB1cmwgPSBleGVjdXRh
YmxlLT5zb3VyY2UoKS5wcm92aWRlcigpLT5zb3VyY2VVUkwoKTsKKyAgICAgICAgdXJsID0gZXhl
Y3V0YWJsZS0+c291cmNlKCkucHJvdmlkZXIoKS0+c291cmNlVVJMRGlyZWN0aXZlKCk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCAzNWVmMjViMjc4NThkMjAxZTJhZTYw
MDE2MmU1MTIyZDE0ZjcwYzk1Li5lMGEwNjVjZDYxZTdmZGNjMmZhM2MzNGZkOTA5MWE4M2E1NmI4
ZWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERl
YnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1Njcmlw
dERlYnVnU2VydmVyLmNwcApAQCAtMTk1LDggKzE5NSw4IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2
ZXI6OmRpc3BhdGNoRGlkUGFyc2VTb3VyY2UoY29uc3QgTGlzdGVuZXJTZXQmIGxpc3RlbmVycywg
U291CiAgICAgc2NyaXB0LnN0YXJ0TGluZSA9IHNvdXJjZVByb3ZpZGVyLT5zdGFydFBvc2l0aW9u
KCkubV9saW5lLnplcm9CYXNlZEludCgpOwogICAgIHNjcmlwdC5zdGFydENvbHVtbiA9IHNvdXJj
ZVByb3ZpZGVyLT5zdGFydFBvc2l0aW9uKCkubV9jb2x1bW4uemVyb0Jhc2VkSW50KCk7CiAgICAg
c2NyaXB0LmlzQ29udGVudFNjcmlwdCA9IGlzQ29udGVudFNjcmlwdDsKLSAgICBzY3JpcHQuc291
cmNlVVJMID0gc291cmNlUHJvdmlkZXItPnNvdXJjZVVSTCgpOwotICAgIHNjcmlwdC5zb3VyY2VN
YXBwaW5nVVJMID0gc291cmNlUHJvdmlkZXItPnNvdXJjZU1hcHBpbmdVUkwoKTsKKyAgICBzY3Jp
cHQuc291cmNlVVJMID0gc291cmNlUHJvdmlkZXItPnNvdXJjZVVSTERpcmVjdGl2ZSgpOworICAg
IHNjcmlwdC5zb3VyY2VNYXBwaW5nVVJMID0gc291cmNlUHJvdmlkZXItPnNvdXJjZU1hcHBpbmdV
UkxEaXJlY3RpdmUoKTsKIAogICAgIGludCBzb3VyY2VMZW5ndGggPSBzY3JpcHQuc291cmNlLmxl
bmd0aCgpOwogICAgIGludCBsaW5lQ291bnQgPSAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9MZXhlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9M
ZXhlci5oCmluZGV4IDgwMTg5ZDAyMjgzYTQ5ZWU3NmVhYjgxN2RjZTM5YWFjMWI2ODZlNmIuLjcw
MGQxYTc1NmNjMzZkYzVkNWVkOTA1MDhiMTkwOGE0ZjE2NWE5MDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0xleGVyLmgKQEAgLTg3LDggKzg3LDggQEAgY2xhc3MgTGV4ZXIgewogICAgIHZv
aWQgc2V0U2F3RXJyb3IoYm9vbCBzYXdFcnJvcikgeyBtX2Vycm9yID0gc2F3RXJyb3I7IH0KICAg
ICBTdHJpbmcgZ2V0RXJyb3JNZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9sZXhFcnJvck1lc3Nh
Z2U7IH0KICAgICB2b2lkIHNldEVycm9yTWVzc2FnZShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSkgeyBtX2xleEVycm9yTWVzc2FnZSA9IGVycm9yTWVzc2FnZTsgfQotICAgIFN0cmluZyBzb3Vy
Y2VVUkwoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVVSTERpcmVjdGl2ZTsgfQotICAgIFN0cmlu
ZyBzb3VyY2VNYXBwaW5nVVJMKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VNYXBwaW5nVVJMRGly
ZWN0aXZlOyB9CisgICAgU3RyaW5nIHNvdXJjZVVSTERpcmVjdGl2ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc291cmNlVVJMRGlyZWN0aXZlOyB9CisgICAgU3RyaW5nIHNvdXJjZU1hcHBpbmdVUkxEaXJl
Y3RpdmUoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZU1hcHBpbmdVUkxEaXJlY3RpdmU7IH0KICAg
ICB2b2lkIGNsZWFyKCk7CiAgICAgdm9pZCBzZXRPZmZzZXQoaW50IG9mZnNldCwgaW50IGxpbmVT
dGFydE9mZnNldCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRl
eCAxYzFhOGQ5N2IwM2RkMzRkNzkzZTZlYzdiOGMzM2RiZWRiYmNkN2UxLi5kMWY5NDM0N2U3ZmI3
ZDBjYzU2NzdlZmQ0NTgyZTdlMTE0MTQ1YmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmgKQEAgLTE5MzgsOCArMTkzOCw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2Rl
PiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UoUGFyc2VyRXJyb3ImIGVycm9yLCBjb25zdCBJCiAg
ICAgICAgIHJlc3VsdC0+c2V0RW5kT2Zmc2V0KG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQoKSk7CiAK
ICAgICAgICAgaWYgKCFpc0Z1bmN0aW9uUGFyc2VNb2RlKHBhcnNlTW9kZSkpIHsKLSAgICAgICAg
ICAgIG1fc291cmNlLT5wcm92aWRlcigpLT5zZXRTb3VyY2VVUkxEaXJlY3RpdmUobV9sZXhlci0+
c291cmNlVVJMKCkpOwotICAgICAgICAgICAgbV9zb3VyY2UtPnByb3ZpZGVyKCktPnNldFNvdXJj
ZU1hcHBpbmdVUkxEaXJlY3RpdmUobV9sZXhlci0+c291cmNlTWFwcGluZ1VSTCgpKTsKKyAgICAg
ICAgICAgIG1fc291cmNlLT5wcm92aWRlcigpLT5zZXRTb3VyY2VVUkxEaXJlY3RpdmUobV9sZXhl
ci0+c291cmNlVVJMRGlyZWN0aXZlKCkpOworICAgICAgICAgICAgbV9zb3VyY2UtPnByb3ZpZGVy
KCktPnNldFNvdXJjZU1hcHBpbmdVUkxEaXJlY3RpdmUobV9sZXhlci0+c291cmNlTWFwcGluZ1VS
TERpcmVjdGl2ZSgpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFdlIGNh
biBuZXZlciBzZWUgYSBzeW50YXggZXJyb3Igd2hlbiByZXBhcnNpbmcgYSBmdW5jdGlvbiwgc2lu
Y2Ugd2Ugc2hvdWxkIGhhdmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvU291cmNlUHJvdmlkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNl
UHJvdmlkZXIuaAppbmRleCBiM2M5YzQ2NTc2NGZmZmNiOTcwNWNlODZmYjljYTgwNGMyMTQ4NjQ1
Li5iZmY1MjFjZmMwZTIyYjMxYjRlYzBkMWFkZDYyMGFiYmY2OTBmZGU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oCkBAIC0xMjUsOCArMTI1LDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgY29uc3QgU291cmNlT3JpZ2luJiBzb3VyY2VP
cmlnaW4oKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZU9yaWdpbjsgfQogICAgICAgICBjb25zdCBV
UkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9Ci0gICAgICAgIGNvbnN0IFN0cmluZyYg
c291cmNlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VVUkxEaXJlY3RpdmU7IH0KLSAgICAg
ICAgY29uc3QgU3RyaW5nJiBzb3VyY2VNYXBwaW5nVVJMKCkgY29uc3QgeyByZXR1cm4gbV9zb3Vy
Y2VNYXBwaW5nVVJMRGlyZWN0aXZlOyB9CisgICAgICAgIGNvbnN0IFN0cmluZyYgc291cmNlVVJM
RGlyZWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VVUkxEaXJlY3RpdmU7IH0KKyAgICAg
ICAgY29uc3QgU3RyaW5nJiBzb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlKCkgY29uc3QgeyByZXR1
cm4gbV9zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlOyB9CiAKICAgICAgICAgVGV4dFBvc2l0aW9u
IHN0YXJ0UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0UG9zaXRpb247IH0KICAgICAg
ICAgU291cmNlUHJvdmlkZXJTb3VyY2VUeXBlIHNvdXJjZVR5cGUoKSBjb25zdCB7IHJldHVybiBt
X3NvdXJjZVR5cGU7IH0KQEAgLTEzOCw4ICsxMzgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgICAgIHJldHVybiBtX2lkOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBzZXRTb3VyY2VV
UkxEaXJlY3RpdmUoY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpIHsgbV9zb3VyY2VVUkxEaXJlY3Rp
dmUgPSBzb3VyY2VVUkw7IH0KLSAgICAgICAgdm9pZCBzZXRTb3VyY2VNYXBwaW5nVVJMRGlyZWN0
aXZlKGNvbnN0IFN0cmluZyYgc291cmNlTWFwcGluZ1VSTCkgeyBtX3NvdXJjZU1hcHBpbmdVUkxE
aXJlY3RpdmUgPSBzb3VyY2VNYXBwaW5nVVJMOyB9CisgICAgICAgIHZvaWQgc2V0U291cmNlVVJM
RGlyZWN0aXZlKGNvbnN0IFN0cmluZyYgc291cmNlVVJMRGlyZWN0aXZlKSB7IG1fc291cmNlVVJM
RGlyZWN0aXZlID0gc291cmNlVVJMRGlyZWN0aXZlOyB9CisgICAgICAgIHZvaWQgc2V0U291cmNl
TWFwcGluZ1VSTERpcmVjdGl2ZShjb25zdCBTdHJpbmcmIHNvdXJjZU1hcHBpbmdVUkxEaXJlY3Rp
dmUpIHsgbV9zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlID0gc291cmNlTWFwcGluZ1VSTERpcmVj
dGl2ZTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBn
ZXRJRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVk
VHlwZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3Bw
CmluZGV4IDYxMGE4M2JmMDQ5OTMxOWFiNjZjZWNlZjgxYjBjNmQyNjRmY2IwZjMuLjhhMWRkZTMx
MzBlYjU1Mjg0M2U4YzE5YmZhMGExYjcxMTlkYTcwMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKQEAgLTEyNjYsOCArMTI2Niw4IEBAIGNsYXNz
IENhY2hlZFNvdXJjZVByb3ZpZGVyU2hhcGUgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFNvdXJjZT4g
ewogICAgIHsKICAgICAgICAgbV9zb3VyY2VPcmlnaW4uZW5jb2RlKGVuY29kZXIsIHNvdXJjZVBy
b3ZpZGVyLnNvdXJjZU9yaWdpbigpKTsKICAgICAgICAgbV91cmwuZW5jb2RlKGVuY29kZXIsIHNv
dXJjZVByb3ZpZGVyLnVybCgpKTsKLSAgICAgICAgbV9zb3VyY2VVUkxEaXJlY3RpdmUuZW5jb2Rl
KGVuY29kZXIsIHNvdXJjZVByb3ZpZGVyLnNvdXJjZVVSTCgpKTsKLSAgICAgICAgbV9zb3VyY2VN
YXBwaW5nVVJMRGlyZWN0aXZlLmVuY29kZShlbmNvZGVyLCBzb3VyY2VQcm92aWRlci5zb3VyY2VN
YXBwaW5nVVJMKCkpOworICAgICAgICBtX3NvdXJjZVVSTERpcmVjdGl2ZS5lbmNvZGUoZW5jb2Rl
ciwgc291cmNlUHJvdmlkZXIuc291cmNlVVJMRGlyZWN0aXZlKCkpOworICAgICAgICBtX3NvdXJj
ZU1hcHBpbmdVUkxEaXJlY3RpdmUuZW5jb2RlKGVuY29kZXIsIHNvdXJjZVByb3ZpZGVyLnNvdXJj
ZU1hcHBpbmdVUkxEaXJlY3RpdmUoKSk7CiAgICAgICAgIG1fc3RhcnRQb3NpdGlvbi5lbmNvZGUo
ZW5jb2Rlciwgc291cmNlUHJvdmlkZXIuc3RhcnRQb3NpdGlvbigpKTsKICAgICB9CiAKQEAgLTE0
MjksNiArMTQyOSwyNCBAQCBjbGFzcyBDYWNoZWRTb3VyY2VDb2RlIDogcHVibGljIENhY2hlZFVu
bGlua2VkU291cmNlQ29kZVNoYXBlPFNvdXJjZUNvZGU+IHsKICAgICBpbnQgbV9zdGFydENvbHVt
bjsKIH07CiAKK2NsYXNzIENhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZVJhcmVEYXRhIDogcHVibGlj
IENhY2hlZE9iamVjdDxVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6UmFyZURhdGE+IHsKK3B1
YmxpYzoKKyAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6UmFyZURhdGEmIHJhcmVEYXRhKQorICAgIHsKKyAgICAgICAgbV9j
bGFzc1NvdXJjZS5lbmNvZGUoZW5jb2RlciwgcmFyZURhdGEubV9jbGFzc1NvdXJjZSk7CisgICAg
fQorCisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlJhcmVEYXRhKiBkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlOjpSYXJlRGF0YSogcmFyZURhdGEgPSBuZXcgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGU6OlJhcmVEYXRhIHsgfTsKKyAgICAgICAgbV9jbGFzc1NvdXJjZS5kZWNvZGUoZGVjb2Rlciwg
cmFyZURhdGEtPm1fY2xhc3NTb3VyY2UpOworICAgICAgICByZXR1cm4gcmFyZURhdGE7CisgICAg
fQorCitwcml2YXRlOgorICAgIENhY2hlZFNvdXJjZUNvZGUgbV9jbGFzc1NvdXJjZTsKK307CisK
IGNsYXNzIENhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZSA6IHB1YmxpYyBDYWNoZWRPYmplY3Q8VW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+IHsKIHB1YmxpYzoKICAgICB2b2lkIGVuY29kZShFbmNv
ZGVyJiwgY29uc3QgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUmKTsKQEAgLTE0NjQsNiArMTQ4
Miw4IEBAIGNsYXNzIENhY2hlZEZ1bmN0aW9uRXhlY3V0YWJsZSA6IHB1YmxpYyBDYWNoZWRPYmpl
Y3Q8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+CiAgICAgSWRlbnRpZmllciBlY21hTmFtZShE
ZWNvZGVyJiBkZWNvZGVyKSBjb25zdCB7IHJldHVybiBtX2VjbWFOYW1lLmRlY29kZShkZWNvZGVy
KTsgfQogICAgIElkZW50aWZpZXIgaW5mZXJyZWROYW1lKERlY29kZXImIGRlY29kZXIpIGNvbnN0
IHsgcmV0dXJuIG1faW5mZXJyZWROYW1lLmRlY29kZShkZWNvZGVyKTsgfQogCisgICAgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlJhcmVEYXRhKiByYXJlRGF0YShEZWNvZGVyJiBkZWNvZGVy
KSBjb25zdCB7IHJldHVybiBtX3JhcmVEYXRhLmRlY29kZUFzUHRyKGRlY29kZXIpOyB9CisKIHBy
aXZhdGU6CiAgICAgdW5zaWduZWQgbV9maXJzdExpbmVPZmZzZXQ7CiAgICAgdW5zaWduZWQgbV9s
aW5lQ291bnQ7CkBAIC0xNDg5LDcgKzE1MDksNyBAQCBjbGFzcyBDYWNoZWRGdW5jdGlvbkV4ZWN1
dGFibGUgOiBwdWJsaWMgQ2FjaGVkT2JqZWN0PFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPgog
ICAgIHVuc2lnbmVkIG1fc3VwZXJCaW5kaW5nIDogMTsKICAgICB1bnNpZ25lZCBtX2Rlcml2ZWRD
b250ZXh0VHlwZTogMjsKIAotICAgIENhY2hlZFNvdXJjZUNvZGUgbV9jbGFzc1NvdXJjZTsKKyAg
ICBDYWNoZWRPcHRpb25hbDxDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGVSYXJlRGF0YT4gbV9yYXJl
RGF0YTsKIAogICAgIENhY2hlZElkZW50aWZpZXIgbV9uYW1lOwogICAgIENhY2hlZElkZW50aWZp
ZXIgbV9lY21hTmFtZTsKQEAgLTE4MjQsNyArMTg0NCw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBD
YWNoZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBV
bmxpCiAgICAgbV9zdXBlckJpbmRpbmcgPSBleGVjdXRhYmxlLm1fc3VwZXJCaW5kaW5nOwogICAg
IG1fZGVyaXZlZENvbnRleHRUeXBlID0gZXhlY3V0YWJsZS5tX2Rlcml2ZWRDb250ZXh0VHlwZTsK
IAotICAgIG1fY2xhc3NTb3VyY2UuZW5jb2RlKGVuY29kZXIsIGV4ZWN1dGFibGUubV9jbGFzc1Nv
dXJjZSk7CisgICAgbV9yYXJlRGF0YS5lbmNvZGUoZW5jb2RlciwgZXhlY3V0YWJsZS5tX3JhcmVE
YXRhKTsKIAogICAgIG1fbmFtZS5lbmNvZGUoZW5jb2RlciwgZXhlY3V0YWJsZS5uYW1lKCkpOwog
ICAgIG1fZWNtYU5hbWUuZW5jb2RlKGVuY29kZXIsIGV4ZWN1dGFibGUuZWNtYU5hbWUoKSk7CkBA
IC0xODQ0LDcgKzE4NjQsNiBAQCBBTFdBWVNfSU5MSU5FIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBDYWNoZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmRlY29kZShEZWNvZAogICAgIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KGRlY29kZXIudm0oKS5oZWFwKSkgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUoZGVjb2RlciwgZW52LCAqdGhpcyk7CiAgICAgZXhlY3V0YWJs
ZS0+ZmluaXNoQ3JlYXRpb24oZGVjb2Rlci52bSgpKTsKIAotICAgIG1fY2xhc3NTb3VyY2UuZGVj
b2RlKGRlY29kZXIsIGV4ZWN1dGFibGUtPm1fY2xhc3NTb3VyY2UpOwogICAgIG1fdW5saW5rZWRD
b2RlQmxvY2tGb3JDYWxsLmRlY29kZShkZWNvZGVyLCBleGVjdXRhYmxlLT5tX3VubGlua2VkQ29k
ZUJsb2NrRm9yQ2FsbCwgZXhlY3V0YWJsZSk7CiAgICAgbV91bmxpbmtlZENvZGVCbG9ja0ZvckNv
bnN0cnVjdC5kZWNvZGUoZGVjb2RlciwgZXhlY3V0YWJsZS0+bV91bmxpbmtlZENvZGVCbG9ja0Zv
ckNvbnN0cnVjdCwgZXhlY3V0YWJsZSk7CiAKQEAgLTE4ODIsNiArMTkwMSw4IEBAIEFMV0FZU19J
TkxJTkUgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKERlY29kZXImIGRlCiAgICAgLCBtX2luZmVycmVkTmFtZShjYWNoZWRFeGVjdXRhYmxlLmlu
ZmVycmVkTmFtZShkZWNvZGVyKSkKIAogICAgICwgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcyhk
ZWNvZGVyLnZtKCkubV9jb21wYWN0VmFyaWFibGVNYXAtPmdldChwYXJlbnRTY29wZVREWlZhcmlh
YmxlcykpCisKKyAgICAsIG1fcmFyZURhdGEoY2FjaGVkRXhlY3V0YWJsZS5yYXJlRGF0YShkZWNv
ZGVyKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29kZUNhY2hlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5j
cHAKaW5kZXggZjFlYTc3N2E1ZmU0ZmI1YmRhMjFkNzY3ZmVjODlkNjM5M2UyNzNlYi4uNmZjMDJm
ODY0NmY4ODk3OTgwMzM4YTU0MzEzZmJlMDJiODYxNmYyZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCkBAIC03MCw4ICs3MCwxMCBAQCBVbmxpbmtlZENv
ZGVCbG9ja1R5cGUqIENvZGVDYWNoZTo6Z2V0VW5saW5rZWRHbG9iYWxDb2RlQmxvY2soVk0mIHZt
LCBFeGVjdXRhYmxlVAogICAgICAgICBib29sIGVuZENvbHVtbklzT25TdGFydExpbmUgPSAhbGlu
ZUNvdW50OwogICAgICAgICB1bnNpZ25lZCBlbmRDb2x1bW4gPSB1bmxpbmtlZENvZGVCbG9jay0+
ZW5kQ29sdW1uKCkgKyAoZW5kQ29sdW1uSXNPblN0YXJ0TGluZSA/IHN0YXJ0Q29sdW1uIDogMSk7
CiAgICAgICAgIGV4ZWN1dGFibGUtPnJlY29yZFBhcnNlKHVubGlua2VkQ29kZUJsb2NrLT5jb2Rl
RmVhdHVyZXMoKSwgdW5saW5rZWRDb2RlQmxvY2stPmhhc0NhcHR1cmVkVmFyaWFibGVzKCksIHNv
dXJjZS5maXJzdExpbmUoKS5vbmVCYXNlZEludCgpICsgbGluZUNvdW50LCBlbmRDb2x1bW4pOwot
ICAgICAgICBzb3VyY2UucHJvdmlkZXIoKS0+c2V0U291cmNlVVJMRGlyZWN0aXZlKHVubGlua2Vk
Q29kZUJsb2NrLT5zb3VyY2VVUkxEaXJlY3RpdmUoKSk7Ci0gICAgICAgIHNvdXJjZS5wcm92aWRl
cigpLT5zZXRTb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlKHVubGlua2VkQ29kZUJsb2NrLT5zb3Vy
Y2VNYXBwaW5nVVJMRGlyZWN0aXZlKCkpOworICAgICAgICBpZiAoIXVubGlua2VkQ29kZUJsb2Nr
LT5zb3VyY2VVUkxEaXJlY3RpdmUoKS5pc051bGwoKSkKKyAgICAgICAgICAgIHNvdXJjZS5wcm92
aWRlcigpLT5zZXRTb3VyY2VVUkxEaXJlY3RpdmUodW5saW5rZWRDb2RlQmxvY2stPnNvdXJjZVVS
TERpcmVjdGl2ZSgpKTsKKyAgICAgICAgaWYgKCF1bmxpbmtlZENvZGVCbG9jay0+c291cmNlTWFw
cGluZ1VSTERpcmVjdGl2ZSgpLmlzTnVsbCgpKQorICAgICAgICAgICAgc291cmNlLnByb3ZpZGVy
KCktPnNldFNvdXJjZU1hcHBpbmdVUkxEaXJlY3RpdmUodW5saW5rZWRDb2RlQmxvY2stPnNvdXJj
ZU1hcHBpbmdVUkxEaXJlY3RpdmUoKSk7CiAgICAgICAgIHJldHVybiB1bmxpbmtlZENvZGVCbG9j
azsKICAgICB9CiAKQEAgLTExNSw4ICsxMTcsMTAgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUqIENvZGVDYWNoZTo6Z2V0VW5saW5rZWRHbG9iYWxGdW5jdGlvbkV4ZWN1dGFibGUoVk0mIHYK
ICAgICAgICAgZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbik7CiAgICAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBtX3NvdXJjZUNvZGUuZmlu
ZENhY2hlQW5kVXBkYXRlQWdlPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPih2bSwga2V5KTsK
ICAgICBpZiAoZXhlY3V0YWJsZSAmJiBPcHRpb25zOjp1c2VDb2RlQ2FjaGUoKSkgewotICAgICAg
ICBzb3VyY2UucHJvdmlkZXIoKS0+c2V0U291cmNlVVJMRGlyZWN0aXZlKGV4ZWN1dGFibGUtPnNv
dXJjZVVSTERpcmVjdGl2ZSgpKTsKLSAgICAgICAgc291cmNlLnByb3ZpZGVyKCktPnNldFNvdXJj
ZU1hcHBpbmdVUkxEaXJlY3RpdmUoZXhlY3V0YWJsZS0+c291cmNlTWFwcGluZ1VSTERpcmVjdGl2
ZSgpKTsKKyAgICAgICAgaWYgKCFleGVjdXRhYmxlLT5zb3VyY2VVUkxEaXJlY3RpdmUoKS5pc051
bGwoKSkKKyAgICAgICAgICAgIHNvdXJjZS5wcm92aWRlcigpLT5zZXRTb3VyY2VVUkxEaXJlY3Rp
dmUoZXhlY3V0YWJsZS0+c291cmNlVVJMRGlyZWN0aXZlKCkpOworICAgICAgICBpZiAoIWV4ZWN1
dGFibGUtPnNvdXJjZU1hcHBpbmdVUkxEaXJlY3RpdmUoKS5pc051bGwoKSkKKyAgICAgICAgICAg
IHNvdXJjZS5wcm92aWRlcigpLT5zZXRTb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlKGV4ZWN1dGFi
bGUtPnNvdXJjZU1hcHBpbmdVUkxEaXJlY3RpdmUoKSk7CiAgICAgICAgIHJldHVybiBleGVjdXRh
YmxlOwogICAgIH0KIApAQCAtMTQ5LDggKzE1MywxMCBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSogQ29kZUNhY2hlOjpnZXRVbmxpbmtlZEdsb2JhbEZ1bmN0aW9uRXhlY3V0YWJsZShWTSYg
dgogICAgIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSA9IGNvbnN0cnVjdEFiaWxp
dHlGb3JQYXJzZU1vZGUobWV0YWRhdGEtPnBhcnNlTW9kZSgpKTsKICAgICBVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgbWV0YWRhdGEsIFVubGlua2VkTm9ybWFsRnVuY3Rp
b24sIGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgdm0ubV9j
b21wYWN0VmFyaWFibGVNYXAtPmdldChlbXB0eVREWlZhcmlhYmxlcyksIERlcml2ZWRDb250ZXh0
VHlwZTo6Tm9uZSk7CiAKLSAgICBmdW5jdGlvbkV4ZWN1dGFibGUtPnNldFNvdXJjZVVSTERpcmVj
dGl2ZShzb3VyY2UucHJvdmlkZXIoKS0+c291cmNlVVJMKCkpOwotICAgIGZ1bmN0aW9uRXhlY3V0
YWJsZS0+c2V0U291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZShzb3VyY2UucHJvdmlkZXIoKS0+c291
cmNlTWFwcGluZ1VSTCgpKTsKKyAgICBpZiAoIXNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2VVUkxE
aXJlY3RpdmUoKS5pc051bGwoKSkKKyAgICAgICAgZnVuY3Rpb25FeGVjdXRhYmxlLT5zZXRTb3Vy
Y2VVUkxEaXJlY3RpdmUoc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZVVSTERpcmVjdGl2ZSgpKTsK
KyAgICBpZiAoIXNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlKCku
aXNOdWxsKCkpCisgICAgICAgIGZ1bmN0aW9uRXhlY3V0YWJsZS0+c2V0U291cmNlTWFwcGluZ1VS
TERpcmVjdGl2ZShzb3VyY2UucHJvdmlkZXIoKS0+c291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZSgp
KTsKIAogICAgIGlmIChPcHRpb25zOjp1c2VDb2RlQ2FjaGUoKSkKICAgICAgICAgbV9zb3VyY2VD
b2RlLmFkZENhY2hlKGtleSwgU291cmNlQ29kZVZhbHVlKHZtLCBmdW5jdGlvbkV4ZWN1dGFibGUs
IG1fc291cmNlQ29kZS5hZ2UoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29kZUNhY2hlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2Rl
Q2FjaGUuaAppbmRleCA0NTkzOGU2ZjYyODg3YzJiMmFhOTYxZmJkYzIwMjUxNmM3ZjhkYzEwLi4y
YmVmYzYzYWUyYjMyY2FjZDk3MzExNGQ5YzFmYzQ3MTk5OTMyYWJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaApAQCAtMjk3LDggKzI5NywxMCBAQCBVbmxpbmtl
ZENvZGVCbG9ja1R5cGUqIGdlbmVyYXRlVW5saW5rZWRDb2RlQmxvY2tJbXBsKFZNJiB2bSwgY29u
c3QgU291cmNlQ29kZSYgcwogCiAgICAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiB1bmxpbmtlZENv
ZGVCbG9jayA9IFVubGlua2VkQ29kZUJsb2NrVHlwZTo6Y3JlYXRlKCZ2bSwgZXhlY3V0YWJsZUlu
Zm8sIGRlYnVnZ2VyTW9kZSk7CiAgICAgdW5saW5rZWRDb2RlQmxvY2stPnJlY29yZFBhcnNlKHJv
b3ROb2RlLT5mZWF0dXJlcygpLCByb290Tm9kZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSwgbGlu
ZUNvdW50LCB1bmxpbmtlZEVuZENvbHVtbik7Ci0gICAgdW5saW5rZWRDb2RlQmxvY2stPnNldFNv
dXJjZVVSTERpcmVjdGl2ZShzb3VyY2UucHJvdmlkZXIoKS0+c291cmNlVVJMKCkpOwotICAgIHVu
bGlua2VkQ29kZUJsb2NrLT5zZXRTb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlKHNvdXJjZS5wcm92
aWRlcigpLT5zb3VyY2VNYXBwaW5nVVJMKCkpOworICAgIGlmICghc291cmNlLnByb3ZpZGVyKCkt
PnNvdXJjZVVSTERpcmVjdGl2ZSgpLmlzTnVsbCgpKQorICAgICAgICB1bmxpbmtlZENvZGVCbG9j
ay0+c2V0U291cmNlVVJMRGlyZWN0aXZlKHNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2VVUkxEaXJl
Y3RpdmUoKSk7CisgICAgaWYgKCFzb3VyY2UucHJvdmlkZXIoKS0+c291cmNlTWFwcGluZ1VSTERp
cmVjdGl2ZSgpLmlzTnVsbCgpKQorICAgICAgICB1bmxpbmtlZENvZGVCbG9jay0+c2V0U291cmNl
TWFwcGluZ1VSTERpcmVjdGl2ZShzb3VyY2UucHJvdmlkZXIoKS0+c291cmNlTWFwcGluZ1VSTERp
cmVjdGl2ZSgpKTsKIAogICAgIGVycm9yID0gQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKHZt
LCByb290Tm9kZS5nZXQoKSwgc291cmNlLCB1bmxpbmtlZENvZGVCbG9jaywgZGVidWdnZXJNb2Rl
LCB2YXJpYWJsZXNVbmRlclREWik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmgKaW5kZXggMGUxODgyOTgzZDNmZTI1OWY5YjgxY2My
ZjE4ZjQ1N2YwOThiNmQ1My4uM2NkMTU4OGJlYWI5ODkwYWY4ODg4NTQzMzY4YTkwNTdjM2UzYmFk
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVj
dXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVj
dXRhYmxlLmgKQEAgLTEzMiw3ICsxMzIsNyBAQCBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUgZmlu
YWwgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgRnVuY3Rpb25Nb2RlIGZ1bmN0aW9u
TW9kZSgpIHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5mdW5jdGlvbk1vZGUoKTsgfQog
ICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhl
Y3V0YWJsZS0+aXNCdWlsdGluRnVuY3Rpb24oKTsgfQogICAgIENvbnN0cnVjdEFiaWxpdHkgY29u
c3RydWN0QWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5jb25z
dHJ1Y3RBYmlsaXR5KCk7IH0KLSAgICBib29sIGlzQ2xhc3MoKSBjb25zdCB7IHJldHVybiAhY2xh
c3NTb3VyY2UoKS5pc051bGwoKTsgfQorICAgIGJvb2wgaXNDbGFzcygpIGNvbnN0IHsgcmV0dXJu
IG1fdW5saW5rZWRFeGVjdXRhYmxlLT5pc0NsYXNzKCk7IH0KICAgICBib29sIGlzQXJyb3dGdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIHBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXJy
b3dGdW5jdGlvbk1vZGU7IH0KICAgICBib29sIGlzR2V0dGVyKCkgY29uc3QgeyByZXR1cm4gcGFy
c2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlOyB9CiAgICAgYm9vbCBpc1Nl
dHRlcigpIGNvbnN0IHsgcmV0dXJuIHBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6U2V0
dGVyTW9kZTsgfQpAQCAtMTY1LDcgKzE2NSw3IEBAIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZSBm
aW5hbCA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICB1bnNpZ25lZCBwYXJhbWV0ZXJD
b3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5wYXJhbWV0ZXJDb3Vu
dCgpOyB9IC8vIEV4Y2x1ZGluZyAndGhpcychCiAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRFeGVjdXRhYmxlLT5wYXJzZU1vZGUoKTsgfQog
ICAgIEpTUGFyc2VyU2NyaXB0TW9kZSBzY3JpcHRNb2RlKCkgY29uc3QgeyByZXR1cm4gbV91bmxp
bmtlZEV4ZWN1dGFibGUtPnNjcmlwdE1vZGUoKTsgfQotICAgIGNvbnN0IFNvdXJjZUNvZGUmIGNs
YXNzU291cmNlKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZEV4ZWN1dGFibGUtPmNsYXNzU291
cmNlKCk7IH0KKyAgICBTb3VyY2VDb2RlIGNsYXNzU291cmNlKCkgY29uc3QgeyByZXR1cm4gbV91
bmxpbmtlZEV4ZWN1dGFibGUtPmNsYXNzU291cmNlKCk7IH0KIAogICAgIHN0YXRpYyB2b2lkIHZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKICAgICBzdGF0aWMgU3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHByb3RvKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2FtcGxpbmdQcm9maWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1w
bGluZ1Byb2ZpbGVyLmNwcAppbmRleCA0NTg4ZGY1MWE0NTQ3ZjM0NTk0NTcwYTRkZGQ5YTM2M2U0
OWI2ZTVkLi4zNzJlMDU5YWJhNDNmOWI5MTU0MDcwY2U2ZmFmOGYwN2UxMjk2ODUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcApA
QCAtODYzLDcgKzg2Myw3IEBAIFN0cmluZyBTYW1wbGluZ1Byb2ZpbGVyOjpTdGFja0ZyYW1lOjp1
cmwoKQogCiAgICAgU3RyaW5nIHVybCA9IHN0YXRpY19jYXN0PFNjcmlwdEV4ZWN1dGFibGUqPihl
eGVjdXRhYmxlKS0+c291cmNlVVJMKCk7CiAgICAgaWYgKHVybC5pc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxTY3JpcHRFeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSktPnNvdXJj
ZSgpLnByb3ZpZGVyKCktPnNvdXJjZVVSTCgpOyAvLyBGYWxsIGJhY2sgdG8gc291cmNlVVJMIGRp
cmVjdGl2ZS4KKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNjcmlwdEV4ZWN1dGFibGUqPihl
eGVjdXRhYmxlKS0+c291cmNlKCkucHJvdmlkZXIoKS0+c291cmNlVVJMRGlyZWN0aXZlKCk7IC8v
IEZhbGwgYmFjayB0byBzb3VyY2VVUkwgZGlyZWN0aXZlLgogICAgIHJldHVybiB1cmw7CiB9CiAK
</data>
<flag name="review"
          id="378854"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>