<?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>180761</bug_id>
          
          <creation_ts>2017-12-13 11:26:12 -0800</creation_ts>
          <short_desc>REGRESSION (r225695): Repro crash on yahoo login page</short_desc>
          <delta_ts>2017-12-14 14:16:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1381216</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2017-12-13 11:26:12 -0800</bug_when>
    <thetext>The crashing RegExp is:
  /([-!#$%&amp;&apos;*+\/=?^`{|}~]|\w)(([-!#$%&amp;&apos;*+\/=?^`{|}~]|\w)|(\.([-!#$%&amp;&apos;*+\/=?^`{|}~]|\w)))*@\w(\w|([-.]\w))*\.\w{2,4}/.exec(”https://mail.yahoo.com/);

A reduced test case is:
  /(?:(?: |a)|\.a)* a*/.exec(&quot;/a.aaa”);

The issue is that we are trying to backtrack in a nested alternative after the containing saved parenthesis context has been released.  The backtracking of normal alternatives is done by jumping to an address stored on the stack.  At this point my guess is that we are doing extra backtracking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381219</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2017-12-13 11:26:40 -0800</bug_when>
    <thetext>&lt;rdar://problem/35986606&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381780</commentid>
    <comment_count>2</comment_count>
      <attachid>329393</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2017-12-14 13:41:56 -0800</bug_when>
    <thetext>Created attachment 329393
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381782</commentid>
    <comment_count>3</comment_count>
      <attachid>329393</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-12-14 13:44:53 -0800</bug_when>
    <thetext>Comment on attachment 329393
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381821</commentid>
    <comment_count>4</comment_count>
      <attachid>329393</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-14 14:16:42 -0800</bug_when>
    <thetext>Comment on attachment 329393
Patch

Clearing flags on attachment: 329393

Committed r225930: &lt;https://trac.webkit.org/changeset/225930&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1381822</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-14 14:16:43 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329393</attachid>
            <date>2017-12-14 13:41:56 -0800</date>
            <delta_ts>2017-12-14 14:16:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>180761.patch</filename>
            <type>text/plain</type>
            <size>82515</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMjU5MjMpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisyMDE3LTEyLTE0ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBw
bGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKHIyMjU2OTUpOiBSZXBybyBjcmFzaCBvbiB5
YWhvbyBsb2dpbiBwYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODA3NjEKKworICAgICAgICBSZXZpZXdlZCBieSBKRiBCYXN0aWVuLgorCisgICAg
ICAgIE5ldyByZWdyZXNzaW9uIHRlc3QuCisKKyAgICAgICAgKiBzdHJlc3MvcmVncmVzcy0xODA3
NjEuanM6IEFkZGVkLgorCiAyMDE3LTEyLTEzICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIEpTT2JqZWN0cyBzaG91bGQgaGF2ZSBhIG1hc2sgZm9yIGxv
YWRpbmcgaW5kZXhlZCBwcm9wZXJ0aWVzCkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9yZWdyZXNzLTE4
MDc2MS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9yZWdyZXNzLTE4MDc2MS5qcwko
bm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL3N0cmVzcy9yZWdyZXNzLTE4MDc2MS5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDYgQEAKKy8vQCBydW5EZWZhdWx0CisKKy8vIFJlZ3Jlc3Npb24g
dGVzdCBmb3IgYnVnIDE4MDc2MS4gIFRoaXMgdGVzdCBzaG91bGQgbm90IGNyYXNoLgorCitpZiAo
Lyg/Oig/OiB8YSl8XC5hKSogYSovLmV4ZWMoIi9hLmFhYSIpICE9PSBudWxsKQorICAgIHRocm93
ICJFeHBlY3RlZCAvKD86KD86IHxhKXxcLmEpKiBhKi8uZXhlYyhcIi9hLmFhYVwiKSB0byBub3Qg
bWF0Y2giOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjU5MTQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsNzggQEAKKzIwMTctMTItMTQgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+
CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjIyNTY5NSk6IFJlcHJvIGNyYXNoIG9uIHlhaG9vIGxv
Z2luIHBhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4MDc2MQorCisgICAgICAgIFJldmlld2VkIGJ5IEpGIEJhc3RpZW4uCisKKyAgICAgICAgUmVs
YW5kaW5nIHIyMjU2OTUgd2l0aCBhIGZpeC4KKworICAgICAgICBUaGUgZml4IGlzIHRoYXQgd2Ug
bmVlZCB0byBzYXZlIHRoZSByZXR1cm4gYWRkcmVzcyBmb3IgYSBwYXJlbnRoZXNlcyBpbgorICAg
ICAgICB0aGUgUGFyZW5Db250ZXh0IGJlY2F1c2UgaXQgaXMgYWN0dWFsbHkgdXNlZCBieSBhbnkg
aW1tZWRpYXRlbHkgY29udGFpbmVkCisgICAgICAgIGFsdGVybmF0aXZlcy4KKworICAgICAgICBB
bHNvIGRpZCBhIGxpdHRsZSByZWZhY3RvcmluZywgY2hhbmdpbmcgb2NjdXJhbmNlcyBvZiBQYXR0
ZXJuQ29udGV4dCB0bworICAgICAgICBQYXJlbkNvbnRleHQgc2luY2UgdGhhdCBpcyB0aGUgbmFt
ZSBvZiB0aGUgc3RydWN0dXJlLgorCisgICAgICAgICogcnVudGltZS9SZWdFeHAuY3BwOgorICAg
ICAgICAoSlNDOjpieXRlQ29kZUNvbXBpbGVQYXR0ZXJuKToKKyAgICAgICAgKEpTQzo6UmVnRXhw
OjpieXRlQ29kZUNvbXBpbGVJZk5lY2Vzc2FyeSk6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6Y29t
cGlsZSk6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6Y29tcGlsZU1hdGNoT25seSk6CisgICAgICAg
ICogcnVudGltZS9SZWdFeHAuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cElubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6UmVnRXhwOjptYXRjaElubGluZSk6CisgICAgICAgICogdGVzdFJlZ0V4
cC5jcHA6CisgICAgICAgIChwYXJzZVJlZ0V4cExpbmUpOgorICAgICAgICAocnVuRnJvbUZpbGVz
KToKKyAgICAgICAgKiB5YXJyL1lhcnIuaDoKKyAgICAgICAgKiB5YXJyL1lhcnJJbnRlcnByZXRl
ci5jcHA6CisgICAgICAgIChKU0M6OllhcnI6OkJ5dGVDb21waWxlcjo6Y29tcGlsZSk6CisgICAg
ICAgIChKU0M6OllhcnI6OkJ5dGVDb21waWxlcjo6ZHVtcERpc2p1bmN0aW9uKToKKyAgICAgICAg
KiB5YXJyL1lhcnJKSVQuY3BwOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyR2VuZXJhdG9yOjpQ
YXJlbkNvbnRleHRTaXplczo6UGFyZW5Db250ZXh0U2l6ZXMpOgorICAgICAgICAoSlNDOjpZYXJy
OjpZYXJyR2VuZXJhdG9yOjpQYXJlbkNvbnRleHRTaXplczo6bnVtU3VicGF0dGVybnMpOgorICAg
ICAgICAoSlNDOjpZYXJyOjpZYXJyR2VuZXJhdG9yOjpQYXJlbkNvbnRleHRTaXplczo6ZnJhbWVT
bG90cyk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6OlBhcmVuQ29udGV4dDo6
c2l6ZUZvcik6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6OlBhcmVuQ29udGV4
dDo6bmV4dE9mZnNldCk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6OlBhcmVu
Q29udGV4dDo6YmVnaW5PZmZzZXQpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyR2VuZXJhdG9y
OjpQYXJlbkNvbnRleHQ6Om1hdGNoQW1vdW50T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6WWFycjo6
WWFyckdlbmVyYXRvcjo6UGFyZW5Db250ZXh0OjpyZXR1cm5BZGRyZXNzT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6WWFycjo6WWFyckdlbmVyYXRvcjo6UGFyZW5Db250ZXh0OjpzdWJwYXR0ZXJuT2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckdlbmVyYXRvcjo6UGFyZW5Db250ZXh0Ojpz
YXZlZEZyYW1lT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckdlbmVyYXRvcjo6aW5p
dFBhcmVuQ29udGV4dEZyZWVMaXN0KToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckdlbmVyYXRv
cjo6YWxsb2NhdGVQYXJlbkNvbnRleHQpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyR2VuZXJh
dG9yOjpmcmVlUGFyZW5Db250ZXh0KToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckdlbmVyYXRv
cjo6c2F2ZVBhcmVuQ29udGV4dCk6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJHZW5lcmF0b3I6
OnJlc3RvcmVQYXJlbkNvbnRleHQpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyR2VuZXJhdG9y
Ojp0cnlSZWFkVW5pY29kZUNoYXJJbXBsKToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckdlbmVy
YXRvcjo6c3RvcmVUb0ZyYW1lKToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckdlbmVyYXRvcjo6
Z2VuZXJhdGVKSVRGYWlsUmV0dXJuKToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckdlbmVyYXRv
cjo6Y2xlYXJNYXRjaGVzKToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckdlbmVyYXRvcjo6Z2Vu
ZXJhdGUpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyR2VuZXJhdG9yOjpiYWNrdHJhY2spOgor
ICAgICAgICAoSlNDOjpZYXJyOjpZYXJyR2VuZXJhdG9yOjpvcENvbXBpbGVQYXJlbnRoZXNlc1N1
YnBhdHRlcm4pOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyR2VuZXJhdG9yOjpnZW5lcmF0ZUVu
dGVyKToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckdlbmVyYXRvcjo6Z2VuZXJhdGVSZXR1cm4p
OgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyR2VuZXJhdG9yOjpZYXJyR2VuZXJhdG9yKToKKyAg
ICAgICAgKEpTQzo6WWFycjo6WWFyckdlbmVyYXRvcjo6Y29tcGlsZSk6CisgICAgICAgICogeWFy
ci9ZYXJySklULmg6CisgICAgICAgIChKU0M6OllhcnI6OllhcnJDb2RlQmxvY2s6OmV4ZWN1dGUp
OgorICAgICAgICAqIHlhcnIvWWFyclBhdHRlcm4uY3BwOgorICAgICAgICAoSlNDOjpZYXJyOjpp
bmRlbnRGb3JOZXN0aW5nTGV2ZWwpOgorICAgICAgICAoSlNDOjpZYXJyOjpkdW1wVUNoYXIzMik6
CisgICAgICAgIChKU0M6OllhcnI6OmR1bXBDaGFyYWN0ZXJDbGFzcyk6CisgICAgICAgIChKU0M6
OllhcnI6OlBhdHRlcm5UZXJtOjpkdW1wKToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRl
cm46OmR1bXBQYXR0ZXJuKToKKyAgICAgICAgKiB5YXJyL1lhcnJQYXR0ZXJuLmg6CisgICAgICAg
IChKU0M6OllhcnI6OlBhdHRlcm5UZXJtOjpjb250YWluc0FueUNhcHR1cmVzKToKKyAgICAgICAg
KEpTQzo6WWFycjo6QmFja1RyYWNrSW5mb1BhcmVudGhlc2VzT25jZTo6cmV0dXJuQWRkcmVzc0lu
ZGV4KToKKyAgICAgICAgKEpTQzo6WWFycjo6QmFja1RyYWNrSW5mb1BhcmVudGhlc2VzOjpiZWdp
bkluZGV4KToKKyAgICAgICAgKEpTQzo6WWFycjo6QmFja1RyYWNrSW5mb1BhcmVudGhlc2VzOjpy
ZXR1cm5BZGRyZXNzSW5kZXgpOgorICAgICAgICAoSlNDOjpZYXJyOjpCYWNrVHJhY2tJbmZvUGFy
ZW50aGVzZXM6Om1hdGNoQW1vdW50SW5kZXgpOgorICAgICAgICAoSlNDOjpZYXJyOjpCYWNrVHJh
Y2tJbmZvUGFyZW50aGVzZXM6OnBhcmVuQ29udGV4dEhlYWRJbmRleCk6CisgICAgICAgIChKU0M6
OllhcnI6OkJhY2tUcmFja0luZm9BbHRlcm5hdGl2ZTo6b2Zmc2V0SW5kZXgpOiBEZWxldGVkLgor
CiAyMDE3LTEyLTEzICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAg
ICAgICAgIEpTT2JqZWN0cyBzaG91bGQgaGF2ZSBhIG1hc2sgZm9yIGxvYWRpbmcgaW5kZXhlZCBw
cm9wZXJ0aWVzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFJlZ0V4cC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdFeHAuY3BwCShyZXZpc2lv
biAyMjU5MTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFJlZ0V4cC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMxNSwxMCArMzE1LDEwIEBAIHN0YXRpYyBpbnQgc2NhblN0cmluZyhjaGFy
KiBidWZmZXIsIGludCAKICAgICByZXR1cm4gLTE7CiB9CiAKLXN0YXRpYyBSZWdFeHAqIHBhcnNl
UmVnRXhwTGluZShWTSYgdm0sIGNoYXIqIGxpbmUsIGludCBsaW5lTGVuZ3RoKQorc3RhdGljIFJl
Z0V4cCogcGFyc2VSZWdFeHBMaW5lKFZNJiB2bSwgY2hhciogbGluZSwgaW50IGxpbmVMZW5ndGgs
IGNvbnN0IGNoYXIqKiByZWdleHBFcnJvcikKIHsKICAgICBTdHJpbmdCdWlsZGVyIHBhdHRlcm47
Ci0gICAgCisKICAgICBpZiAobGluZVswXSAhPSAnLycpCiAgICAgICAgIHJldHVybiAwOwogCkBA
IC0zMzAsOSArMzMwLDExIEBAIHN0YXRpYyBSZWdFeHAqIHBhcnNlUmVnRXhwTGluZShWTSYgdm0s
IGMKICAgICArK2k7CiAKICAgICBSZWdFeHAqIHIgPSBSZWdFeHA6OmNyZWF0ZSh2bSwgcGF0dGVy
bi50b1N0cmluZygpLCByZWdFeHBGbGFncyhsaW5lICsgaSkpOwotICAgIGlmIChyLT5pc1ZhbGlk
KCkpCi0gICAgICAgIHJldHVybiByOwotICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghci0+
aXNWYWxpZCgpKSB7CisgICAgICAgICpyZWdleHBFcnJvciA9IHItPmVycm9yTWVzc2FnZSgpOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgcmV0dXJuIHI7CiB9CiAKIHN0YXRp
YyBSZWdFeHBUZXN0KiBwYXJzZVRlc3RMaW5lKGNoYXIqIGxpbmUsIGludCBsaW5lTGVuZ3RoKQpA
QCAtNDMxLDYgKzQzMyw3IEBAIHN0YXRpYyBib29sIHJ1bkZyb21GaWxlcyhHbG9iYWxPYmplY3Qq
IGcKICAgICAgICAgc2l6ZV90IGxpbmVMZW5ndGggPSAwOwogICAgICAgICBjaGFyKiBsaW5lUHRy
ID0gMDsKICAgICAgICAgdW5zaWduZWQgaW50IGxpbmVOdW1iZXIgPSAwOworICAgICAgICBjb25z
dCBjaGFyKiByZWdleHBFcnJvciA9IG51bGxwdHI7CiAKICAgICAgICAgd2hpbGUgKChsaW5lUHRy
ID0gZmdldHMoJmxpbmVCdWZmZXJbMF0sIE1heExpbmVMZW5ndGgsIHRlc3RDYXNlc0ZpbGUpKSkg
ewogICAgICAgICAgICAgbGluZUxlbmd0aCA9IHN0cmxlbihsaW5lUHRyKTsKQEAgLTQ0NCw3ICs0
NDcsMTEgQEAgc3RhdGljIGJvb2wgcnVuRnJvbUZpbGVzKEdsb2JhbE9iamVjdCogZwogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBpZiAobGluZVB0clswXSA9PSAnLycp
IHsKLSAgICAgICAgICAgICAgICByZWdleHAgPSBwYXJzZVJlZ0V4cExpbmUodm0sIGxpbmVQdHIs
IGxpbmVMZW5ndGgpOworICAgICAgICAgICAgICAgIHJlZ2V4cCA9IHBhcnNlUmVnRXhwTGluZSh2
bSwgbGluZVB0ciwgbGluZUxlbmd0aCwgJnJlZ2V4cEVycm9yKTsKKyAgICAgICAgICAgICAgICBp
ZiAoIXJlZ2V4cCkgeworICAgICAgICAgICAgICAgICAgICBmYWlsdXJlcysrOworICAgICAgICAg
ICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWx1cmUgb24gbGluZSAldS4gJyVzJyAlc1xu
IiwgbGluZU51bWJlciwgbGluZVB0ciwgcmVnZXhwRXJyb3IpOworICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0gZWxzZSBpZiAobGluZVB0clswXSA9PSAnICcpIHsKICAgICAgICAgICAg
ICAgICBSZWdFeHBUZXN0KiByZWdFeHBUZXN0ID0gcGFyc2VUZXN0TGluZShsaW5lUHRyLCBsaW5l
TGVuZ3RoKTsKICAgICAgICAgICAgICAgICAKQEAgLTQ2MSwxMCArNDY4LDEwIEBAIHN0YXRpYyBi
b29sIHJ1bkZyb21GaWxlcyhHbG9iYWxPYmplY3QqIGcKICAgICAgICAgICAgIH0gZWxzZSBpZiAo
bGluZVB0clswXSA9PSAnLScpIHsKICAgICAgICAgICAgICAgICB0ZXN0cysrOwogICAgICAgICAg
ICAgICAgIHJlZ2V4cCA9IDA7IC8vIFJlc2V0IHRoZSBsaXZlIHJlZ2V4cCB0byBhdm9pZCBjb25m
dXNpbmcgb3RoZXIgc3Vic2VxdWVudCB0ZXN0cwotICAgICAgICAgICAgICAgIGJvb2wgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gcGFyc2VSZWdFeHBMaW5lKHZtLCBsaW5lUHRyICsgMSwgbGluZUxlbmd0
aCAtIDEpOworICAgICAgICAgICAgICAgIGJvb2wgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gcGFyc2VS
ZWdFeHBMaW5lKHZtLCBsaW5lUHRyICsgMSwgbGluZUxlbmd0aCAtIDEsICZyZWdleHBFcnJvcik7
CiAgICAgICAgICAgICAgICAgaWYgKHN1Y2Nlc3NmdWxseVBhcnNlZCkgewogICAgICAgICAgICAg
ICAgICAgICBmYWlsdXJlcysrOwotICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwg
IkZhaWx1cmUgb24gbGluZSAldS4gJyVzJyBpcyBub3QgYSB2YWxpZCByZWdleHBcbiIsIGxpbmVO
dW1iZXIsIGxpbmVQdHIgKyAxKTsKKyAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIs
ICJGYWlsdXJlIG9uIGxpbmUgJXUuICclcycgJXNcbiIsIGxpbmVOdW1iZXIsIGxpbmVQdHIgKyAx
LCByZWdleHBFcnJvcik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAg
ICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAJKHJldmlz
aW9uIDIyNTkxNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI3MSw2ICsyNzEsMzAgQEAgUmVnRXhwKiBSZWdFeHA6OmNyZWF0
ZShWTSYgdm0sIGNvbnN0IFN0cgogICAgIHJldHVybiB2bS5yZWdFeHBDYWNoZSgpLT5sb29rdXBP
ckNyZWF0ZShwYXR0ZXJuU3RyaW5nLCBmbGFncyk7CiB9CiAKKworc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxZYXJyOjpCeXRlY29kZVBhdHRlcm4+IGJ5dGVDb2RlQ29tcGlsZVBhdHRlcm4oVk0qIHZt
LCBZYXJyOjpZYXJyUGF0dGVybiYgcGF0dGVybikKK3sKKyAgICByZXR1cm4gWWFycjo6Ynl0ZUNv
bXBpbGUocGF0dGVybiwgJnZtLT5tX3JlZ0V4cEFsbG9jYXRvciwgJnZtLT5tX3JlZ0V4cEFsbG9j
YXRvckxvY2spOworfQorCit2b2lkIFJlZ0V4cDo6Ynl0ZUNvZGVDb21waWxlSWZOZWNlc3Nhcnko
Vk0qIHZtKQoreworICAgIGlmIChtX3JlZ0V4cEJ5dGVjb2RlKQorICAgICAgICByZXR1cm47CisK
KyAgICBZYXJyOjpZYXJyUGF0dGVybiBwYXR0ZXJuKG1fcGF0dGVyblN0cmluZywgbV9mbGFncywg
Jm1fY29uc3RydWN0aW9uRXJyb3IsIHZtLT5zdGFja0xpbWl0KCkpOworICAgIGlmIChtX2NvbnN0
cnVjdGlvbkVycm9yKSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisj
aWYgQ09NUElMRVJfUVVJUksoQ09OU0lERVJTX1VOUkVBQ0hBQkxFX0NPREUpCisgICAgICAgIG1f
c3RhdGUgPSBQYXJzZUVycm9yOworICAgICAgICByZXR1cm47CisjZW5kaWYKKyAgICB9CisgICAg
QVNTRVJUKG1fbnVtU3VicGF0dGVybnMgPT0gcGF0dGVybi5tX251bVN1YnBhdHRlcm5zKTsKKwor
ICAgIG1fcmVnRXhwQnl0ZWNvZGUgPSBieXRlQ29kZUNvbXBpbGVQYXR0ZXJuKHZtLCBwYXR0ZXJu
KTsKK30KKwogdm9pZCBSZWdFeHA6OmNvbXBpbGUoVk0qIHZtLCBZYXJyOjpZYXJyQ2hhclNpemUg
Y2hhclNpemUpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwpAQCAt
MzAzLDggKzMyNywxMSBAQCB2b2lkIFJlZ0V4cDo6Y29tcGlsZShWTSogdm0sIFlhcnI6OllhcnJD
CiAgICAgVU5VU0VEX1BBUkFNKGNoYXJTaXplKTsKICNlbmRpZgogCisgICAgaWYgKE9wdGlvbnM6
OmR1bXBDb21waWxlZFJlZ0V4cFBhdHRlcm5zKCkpCisgICAgICAgIGRhdGFMb2coIkNhbid0IEpJ
VCB0aGlzIHJlZ3VsYXIgZXhwcmVzc2lvbjogXCIiLCBtX3BhdHRlcm5TdHJpbmcsICJcIlxuIik7
CisKICAgICBtX3N0YXRlID0gQnl0ZUNvZGU7Ci0gICAgbV9yZWdFeHBCeXRlY29kZSA9IFlhcnI6
OmJ5dGVDb21waWxlKHBhdHRlcm4sICZ2bS0+bV9yZWdFeHBBbGxvY2F0b3IsICZ2bS0+bV9yZWdF
eHBBbGxvY2F0b3JMb2NrKTsKKyAgICBtX3JlZ0V4cEJ5dGVjb2RlID0gYnl0ZUNvZGVDb21waWxl
UGF0dGVybih2bSwgcGF0dGVybik7CiB9CiAKIGludCBSZWdFeHA6Om1hdGNoKFZNJiB2bSwgY29u
c3QgU3RyaW5nJiBzLCB1bnNpZ25lZCBzdGFydE9mZnNldCwgVmVjdG9yPGludD4mIG92ZWN0b3Ip
CkBAIC0zNTYsOCArMzgzLDExIEBAIHZvaWQgUmVnRXhwOjpjb21waWxlTWF0Y2hPbmx5KFZNKiB2
bSwgWWEKICAgICBVTlVTRURfUEFSQU0oY2hhclNpemUpOwogI2VuZGlmCiAKKyAgICBpZiAoT3B0
aW9uczo6ZHVtcENvbXBpbGVkUmVnRXhwUGF0dGVybnMoKSkKKyAgICAgICAgZGF0YUxvZygiQ2Fu
J3QgSklUIHRoaXMgcmVndWxhciBleHByZXNzaW9uOiBcIiIsIG1fcGF0dGVyblN0cmluZywgIlwi
XG4iKTsKKwogICAgIG1fc3RhdGUgPSBCeXRlQ29kZTsKLSAgICBtX3JlZ0V4cEJ5dGVjb2RlID0g
WWFycjo6Ynl0ZUNvbXBpbGUocGF0dGVybiwgJnZtLT5tX3JlZ0V4cEFsbG9jYXRvciwgJnZtLT5t
X3JlZ0V4cEFsbG9jYXRvckxvY2spOworICAgIG1fcmVnRXhwQnl0ZWNvZGUgPSBieXRlQ29kZUNv
bXBpbGVQYXR0ZXJuKHZtLCBwYXR0ZXJuKTsKIH0KIAogTWF0Y2hSZXN1bHQgUmVnRXhwOjptYXRj
aChWTSYgdm0sIGNvbnN0IFN0cmluZyYgcywgdW5zaWduZWQgc3RhcnRPZmZzZXQpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAkocmV2aXNpb24gMjI1OTE0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE0MCw2ICsxNDAsOCBAQCBwcml2YXRlOgogCiAgICAgUmVnRXhwU3RhdGUgbV9zdGF0ZTsKIAor
ICAgIHZvaWQgYnl0ZUNvZGVDb21waWxlSWZOZWNlc3NhcnkoVk0qKTsKKwogICAgIHZvaWQgY29t
cGlsZShWTSosIFlhcnI6OllhcnJDaGFyU2l6ZSk7CiAgICAgdm9pZCBjb21waWxlSWZOZWNlc3Nh
cnkoVk0mLCBZYXJyOjpZYXJyQ2hhclNpemUpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwSW5saW5lcy5oCShyZXZpc2lvbiAyMjU5MTQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTExMCwxMSArMTEwLDI1IEBAIEFMV0FZU19JTkxJTkUgaW50IFJlZ0V4cDo6bWF0Y2hJbmxp
bmUoVk0KIAogICAgIGludCByZXN1bHQ7CiAjaWYgRU5BQkxFKFlBUlJfSklUKQorI2lmZGVmIEpJ
VF9BTExfUEFSRU5TX0VYUFJFU1NJT05TCisgICAgY2hhciBwYXR0ZXJuQ29udGV4dEJ1ZmZlcltw
YXR0ZXJuQ29udGV4dEJ1ZmZlclNpemVdOworI2RlZmluZSBFWFRSQV9KSVRfUEFSQU1TICAsIHBh
dHRlcm5Db250ZXh0QnVmZmVyLCBwYXR0ZXJuQ29udGV4dEJ1ZmZlclNpemUKKyNlbHNlCisjZGVm
aW5lIEVYVFJBX0pJVF9QQVJBTVMKKyNlbmRpZgorCiAgICAgaWYgKG1fc3RhdGUgPT0gSklUQ29k
ZSkgewogICAgICAgICBpZiAocy5pczhCaXQoKSkKLSAgICAgICAgICAgIHJlc3VsdCA9IG1fcmVn
RXhwSklUQ29kZS5leGVjdXRlKHMuY2hhcmFjdGVyczgoKSwgc3RhcnRPZmZzZXQsIHMubGVuZ3Ro
KCksIG9mZnNldFZlY3Rvcikuc3RhcnQ7CisgICAgICAgICAgICByZXN1bHQgPSBtX3JlZ0V4cEpJ
VENvZGUuZXhlY3V0ZShzLmNoYXJhY3RlcnM4KCksIHN0YXJ0T2Zmc2V0LCBzLmxlbmd0aCgpLCBv
ZmZzZXRWZWN0b3IgRVhUUkFfSklUX1BBUkFNUykuc3RhcnQ7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIHJlc3VsdCA9IG1fcmVnRXhwSklUQ29kZS5leGVjdXRlKHMuY2hhcmFjdGVyczE2KCks
IHN0YXJ0T2Zmc2V0LCBzLmxlbmd0aCgpLCBvZmZzZXRWZWN0b3IpLnN0YXJ0OworICAgICAgICAg
ICAgcmVzdWx0ID0gbV9yZWdFeHBKSVRDb2RlLmV4ZWN1dGUocy5jaGFyYWN0ZXJzMTYoKSwgc3Rh
cnRPZmZzZXQsIHMubGVuZ3RoKCksIG9mZnNldFZlY3RvciBFWFRSQV9KSVRfUEFSQU1TKS5zdGFy
dDsKKworICAgICAgICBpZiAocmVzdWx0ID09IFlhcnI6OkpTUmVnRXhwSklUQ29kZUZhaWx1cmUp
IHsKKyAgICAgICAgICAgIC8vIEpJVCdlZCBjb2RlIGNvdWxkbid0IGhhbmRsZSBleHByZXNzaW9u
LCBzbyBwdW50IGJhY2sgdG8gdGhlIGludGVycHJldGVyLgorICAgICAgICAgICAgYnl0ZUNvZGVD
b21waWxlSWZOZWNlc3NhcnkoJnZtKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IFlhcnI6OmludGVy
cHJldChtX3JlZ0V4cEJ5dGVjb2RlLmdldCgpLCBzLCBzdGFydE9mZnNldCwgcmVpbnRlcnByZXRf
Y2FzdDx1bnNpZ25lZCo+KG9mZnNldFZlY3RvcikpOworICAgICAgICB9CisKICNpZiBFTkFCTEUo
WUFSUl9KSVRfREVCVUcpCiAgICAgICAgIG1hdGNoQ29tcGFyZVdpdGhJbnRlcnByZXRlcihzLCBz
dGFydE9mZnNldCwgb2Zmc2V0VmVjdG9yLCByZXN1bHQpOwogI2VuZGlmCkBAIC0xOTksMTUgKzIx
MywzMCBAQCBBTFdBWVNfSU5MSU5FIE1hdGNoUmVzdWx0IFJlZ0V4cDo6bWF0Y2hJCiAgICAgY29t
cGlsZUlmTmVjZXNzYXJ5TWF0Y2hPbmx5KHZtLCBzLmlzOEJpdCgpID8gWWFycjo6Q2hhcjggOiBZ
YXJyOjpDaGFyMTYpOwogCiAjaWYgRU5BQkxFKFlBUlJfSklUKQorI2lmZGVmIEpJVF9BTExfUEFS
RU5TX0VYUFJFU1NJT05TCisgICAgY2hhciBwYXR0ZXJuQ29udGV4dEJ1ZmZlcltwYXR0ZXJuQ29u
dGV4dEJ1ZmZlclNpemVdOworI2RlZmluZSBFWFRSQV9KSVRfUEFSQU1TICAsIHBhdHRlcm5Db250
ZXh0QnVmZmVyLCBwYXR0ZXJuQ29udGV4dEJ1ZmZlclNpemUKKyNlbHNlCisjZGVmaW5lIEVYVFJB
X0pJVF9QQVJBTVMKKyNlbmRpZgorCisgICAgTWF0Y2hSZXN1bHQgcmVzdWx0OworCiAgICAgaWYg
KG1fc3RhdGUgPT0gSklUQ29kZSkgewotICAgICAgICBNYXRjaFJlc3VsdCByZXN1bHQgPSBzLmlz
OEJpdCgpID8KLSAgICAgICAgICAgIG1fcmVnRXhwSklUQ29kZS5leGVjdXRlKHMuY2hhcmFjdGVy
czgoKSwgc3RhcnRPZmZzZXQsIHMubGVuZ3RoKCkpIDoKLSAgICAgICAgICAgIG1fcmVnRXhwSklU
Q29kZS5leGVjdXRlKHMuY2hhcmFjdGVyczE2KCksIHN0YXJ0T2Zmc2V0LCBzLmxlbmd0aCgpKTsK
KyAgICAgICAgaWYgKHMuaXM4Qml0KCkpCisgICAgICAgICAgICByZXN1bHQgPSBtX3JlZ0V4cEpJ
VENvZGUuZXhlY3V0ZShzLmNoYXJhY3RlcnM4KCksIHN0YXJ0T2Zmc2V0LCBzLmxlbmd0aCgpIEVY
VFJBX0pJVF9QQVJBTVMpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXN1bHQgPSBtX3Jl
Z0V4cEpJVENvZGUuZXhlY3V0ZShzLmNoYXJhY3RlcnMxNigpLCBzdGFydE9mZnNldCwgcy5sZW5n
dGgoKSBFWFRSQV9KSVRfUEFSQU1TKTsKKwogI2lmIEVOQUJMRShSRUdFWFBfVFJBQ0lORykKICAg
ICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAgICBtX3J0TWF0Y2hPbmx5Rm91bmRDb3VudCsr
OwogI2VuZGlmCi0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIGlmIChyZXN1bHQuc3Rh
cnQgIT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihZYXJyOjpKU1JlZ0V4cEpJVENvZGVGYWlsdXJlKSkK
KyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisKKyAgICAgICAgLy8gSklUJ2VkIGNvZGUgY291
bGRuJ3QgaGFuZGxlIGV4cHJlc3Npb24sIHNvIHB1bnQgYmFjayB0byB0aGUgaW50ZXJwcmV0ZXIu
CisgICAgICAgIGJ5dGVDb2RlQ29tcGlsZUlmTmVjZXNzYXJ5KCZ2bSk7CiAgICAgfQogI2VuZGlm
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyLmgJKHJldmlzaW9uIDIyNTkxNCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnIuaAkod29ya2luZyBjb3B5KQpAQCAtMzYs
OSArMzYsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFlhcnIgewogI2RlZmluZSBZYXJy
U3RhY2tTcGFjZUZvckJhY2tUcmFja0luZm9CYWNrUmVmZXJlbmNlIDIKICNkZWZpbmUgWWFyclN0
YWNrU3BhY2VGb3JCYWNrVHJhY2tJbmZvQWx0ZXJuYXRpdmUgMSAvLyBPbmUgcGVyIGFsdGVybmF0
aXZlLgogI2RlZmluZSBZYXJyU3RhY2tTcGFjZUZvckJhY2tUcmFja0luZm9QYXJlbnRoZXRpY2Fs
QXNzZXJ0aW9uIDEKLSNkZWZpbmUgWWFyclN0YWNrU3BhY2VGb3JCYWNrVHJhY2tJbmZvUGFyZW50
aGVzZXNPbmNlIDEgLy8gT25seSBmb3IgIWZpeGVkIHF1YW50aWZpZXJzLgorI2RlZmluZSBZYXJy
U3RhY2tTcGFjZUZvckJhY2tUcmFja0luZm9QYXJlbnRoZXNlc09uY2UgMgogI2RlZmluZSBZYXJy
U3RhY2tTcGFjZUZvckJhY2tUcmFja0luZm9QYXJlbnRoZXNlc1Rlcm1pbmFsIDEKLSNkZWZpbmUg
WWFyclN0YWNrU3BhY2VGb3JCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXMgMgorI2RlZmluZSBZYXJy
U3RhY2tTcGFjZUZvckJhY2tUcmFja0luZm9QYXJlbnRoZXNlcyA0CiAjZGVmaW5lIFlhcnJTdGFj
a1NwYWNlRm9yRG90U3RhckVuY2xvc3VyZSAxCiAKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBxdWFu
dGlmeUluZmluaXRlID0gVUlOVF9NQVg7CkBAIC01Miw5ICs1MiwxMCBAQCBlbnVtIEpTUmVnRXhw
UmVzdWx0IHsKICAgICBKU1JlZ0V4cE1hdGNoID0gMSwKICAgICBKU1JlZ0V4cE5vTWF0Y2ggPSAw
LAogICAgIEpTUmVnRXhwRXJyb3JOb01hdGNoID0gLTEsCi0gICAgSlNSZWdFeHBFcnJvckhpdExp
bWl0ID0gLTIsCi0gICAgSlNSZWdFeHBFcnJvck5vTWVtb3J5ID0gLTMsCi0gICAgSlNSZWdFeHBF
cnJvckludGVybmFsID0gLTQKKyAgICBKU1JlZ0V4cEpJVENvZGVGYWlsdXJlID0gLTIsCisgICAg
SlNSZWdFeHBFcnJvckhpdExpbWl0ID0gLTMsCisgICAgSlNSZWdFeHBFcnJvck5vTWVtb3J5ID0g
LTQsCisgICAgSlNSZWdFeHBFcnJvckludGVybmFsID0gLTUsCiB9OwogCiBlbnVtIFlhcnJDaGFy
U2l6ZSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnBy
ZXRlci5jcHAJKHJldmlzaW9uIDIyNTkxNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJy
L1lhcnJJbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJZYXJySW50ZXJwcmV0ZXIuaCIKIAorI2luY2x1
ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlICJTdXBlclNhbXBsZXIuaCIKICNpbmNsdWRlICJZYXJy
LmgiCiAjaW5jbHVkZSAiWWFyckNhbm9uaWNhbGl6ZS5oIgpAQCAtMTY2OSw2ICsxNjcwLDExIEBA
IHB1YmxpYzoKICAgICAgICAgZW1pdERpc2p1bmN0aW9uKG1fcGF0dGVybi5tX2JvZHkpOwogICAg
ICAgICByZWdleEVuZCgpOwogCisjaWZuZGVmIE5ERUJVRworICAgICAgICBpZiAoT3B0aW9uczo6
ZHVtcENvbXBpbGVkUmVnRXhwUGF0dGVybnMoKSkKKyAgICAgICAgICAgIGR1bXBEaXNqdW5jdGlv
bihtX2JvZHlEaXNqdW5jdGlvbi5nZXQoKSk7CisjZW5kaWYKKwogICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxCeXRlY29kZVBhdHRlcm4+KFdURk1vdmUobV9ib2R5RGlzanVuY3Rpb24p
LCBtX2FsbFBhcmVudGhlc2VzSW5mbywgbV9wYXR0ZXJuLCBhbGxvY2F0b3IsIGxvY2spOwogICAg
IH0KIApAQCAtMTgyOSwxNiArMTgzNSw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJlZ2lu
VGVybTsKICAgICB9CiAKLSNpZm5kZWYgTkRFQlVHCi0gICAgdm9pZCBkdW1wRGlzanVuY3Rpb24o
Qnl0ZURpc2p1bmN0aW9uKiBkaXNqdW5jdGlvbikKLSAgICB7Ci0gICAgICAgIGRhdGFMb2dGKCJC
eXRlRGlzanVuY3Rpb24oJXApOlxuXHQiLCBkaXNqdW5jdGlvbik7Ci0gICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBkaXNqdW5jdGlvbi0+dGVybXMuc2l6ZSgpOyArK2kpCi0gICAgICAg
ICAgICBkYXRhTG9nRigieyAlZCB9ICIsIGRpc2p1bmN0aW9uLT50ZXJtc1tpXS50eXBlKTsKLSAg
ICAgICAgZGF0YUxvZ0YoIlxuIik7Ci0gICAgfQotI2VuZGlmCi0KICAgICB2b2lkIGNsb3NlQWx0
ZXJuYXRpdmUoaW50IGJlZ2luVGVybSkKICAgICB7CiAgICAgICAgIGludCBvcmlnQmVnaW5UZXJt
ID0gYmVnaW5UZXJtOwpAQCAtMjExMSw2ICsyMTA3LDI0NCBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICB9CisjaWZuZGVmIE5ERUJVRworICAgIHZvaWQgZHVtcERpc2p1
bmN0aW9uKEJ5dGVEaXNqdW5jdGlvbiogZGlzanVuY3Rpb24sIHVuc2lnbmVkIG5lc3RpbmcgPSAw
KQorICAgIHsKKyAgICAgICAgUHJpbnRTdHJlYW0mIG91dCA9IFdURjo6ZGF0YUZpbGUoKTsKKwor
ICAgICAgICB1bnNpZ25lZCB0ZXJtSW5kZXhOZXN0ID0gMDsKKworICAgICAgICBpZiAoIW5lc3Rp
bmcpIHsKKyAgICAgICAgICAgIG91dC5wcmludGYoIkJ5dGVEaXNqdW5jdGlvbiglcCk6XG4iLCBk
aXNqdW5jdGlvbik7CisgICAgICAgICAgICBuZXN0aW5nID0gMTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIHRlcm1JbmRleE5lc3QgPSBuZXN0aW5nIC0gMTsKKyAgICAgICAgICAgIG5l
c3RpbmcgPSAyOworICAgICAgICB9CisKKyAgICAgICAgYXV0byBvdXRwdXRUZXJtSW5kZXhBbmRO
ZXN0ID0gWyZdKHNpemVfdCBpbmRleCwgdW5zaWduZWQgdGVybU5lc3RpbmcpIHsKKyAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgbmVzdGluZ0RlcHRoID0gMDsgbmVzdGluZ0RlcHRoIDwgdGVybUlu
ZGV4TmVzdDsgbmVzdGluZ0RlcHRoKyspCisgICAgICAgICAgICAgICAgb3V0LnByaW50KCIgICIp
OworICAgICAgICAgICAgb3V0LnByaW50ZigiJTRsdSIsIGluZGV4KTsKKyAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgbmVzdGluZ0RlcHRoID0gMDsgbmVzdGluZ0RlcHRoIDwgdGVybU5lc3Rpbmc7
IG5lc3RpbmdEZXB0aCsrKQorICAgICAgICAgICAgICAgIG91dC5wcmludCgiICAiKTsKKyAgICAg
ICAgfTsKKworICAgICAgICBhdXRvIGR1bXBRdWFudGl0eSA9IFsmXShCeXRlVGVybSYgdGVybSkg
eworICAgICAgICAgICAgaWYgKHRlcm0uYXRvbS5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllckZp
eGVkQ291bnQgJiYgdGVybS5hdG9tLnF1YW50aXR5TWluQ291bnQgPT0gMSAmJiB0ZXJtLmF0b20u
cXVhbnRpdHlNYXhDb3VudCA9PSAxKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICAgICAgb3V0LnByaW50KCIgeyIsIHRlcm0uYXRvbS5xdWFudGl0eU1pbkNvdW50KTsKKyAgICAg
ICAgICAgIGlmICh0ZXJtLmF0b20ucXVhbnRpdHlNaW5Db3VudCAhPSB0ZXJtLmF0b20ucXVhbnRp
dHlNYXhDb3VudCkgeworICAgICAgICAgICAgICAgIGlmICh0ZXJtLmF0b20ucXVhbnRpdHlNYXhD
b3VudCA9PSBVSU5UX01BWCkKKyAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50KCIsaW5mIik7
CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiwi
LCB0ZXJtLmF0b20ucXVhbnRpdHlNYXhDb3VudCk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBvdXQucHJpbnQoIn0iKTsKKyAgICAgICAgICAgIGlmICh0ZXJtLmF0b20ucXVhbnRpdHlUeXBl
ID09IFF1YW50aWZpZXJHcmVlZHkpCisgICAgICAgICAgICAgICAgb3V0LnByaW50KCIgZ3JlZWR5
Iik7CisgICAgICAgICAgICBlbHNlIGlmICh0ZXJtLmF0b20ucXVhbnRpdHlUeXBlID09IFF1YW50
aWZpZXJOb25HcmVlZHkpCisgICAgICAgICAgICAgICAgb3V0LnByaW50KCIgbm9uLWdyZWVkeSIp
OworICAgICAgICB9OworCisgICAgICAgIGF1dG8gZHVtcENhcHR1cmVkID0gWyZdKEJ5dGVUZXJt
JiB0ZXJtKSB7CisgICAgICAgICAgICBpZiAodGVybS5jYXB0dXJlKCkpCisgICAgICAgICAgICAg
ICAgb3V0LnByaW50KCIgY2FwdHVyZWQgKCMiLCB0ZXJtLmF0b20uc3VicGF0dGVybklkLCAiKSIp
OworICAgICAgICB9OworCisgICAgICAgIGF1dG8gZHVtcEludmVydGVkID0gWyZdKEJ5dGVUZXJt
JiB0ZXJtKSB7CisgICAgICAgICAgICBpZiAodGVybS5pbnZlcnQoKSkKKyAgICAgICAgICAgICAg
ICBvdXQucHJpbnQoIiBpbnZlcnRlZCIpOworICAgICAgICB9OworCisgICAgICAgIGF1dG8gZHVt
cElucHV0UG9zaXRpb24gPSBbJl0oQnl0ZVRlcm0mIHRlcm0pIHsKKyAgICAgICAgICAgIG91dC5w
cmludGYoIiBpbnB1dFBvc2l0aW9uICV1IiwgdGVybS5pbnB1dFBvc2l0aW9uKTsKKyAgICAgICAg
fTsKKworICAgICAgICBhdXRvIGR1bXBDaGFyYWN0ZXIgPSBbJl0oQnl0ZVRlcm0mIHRlcm0pIHsK
KyAgICAgICAgICAgIG91dC5wcmludCgiICIpOworICAgICAgICAgICAgZHVtcFVDaGFyMzIob3V0
LCB0ZXJtLmF0b20ucGF0dGVybkNoYXJhY3Rlcik7CisgICAgICAgIH07CisKKyAgICAgICAgYXV0
byBkdW1wQ2hhckNsYXNzID0gWyZdKEJ5dGVUZXJtJiB0ZXJtKSB7CisgICAgICAgICAgICBvdXQu
cHJpbnQoIiAiKTsKKyAgICAgICAgICAgIGR1bXBDaGFyYWN0ZXJDbGFzcyhvdXQsICZtX3BhdHRl
cm4sIHRlcm0uYXRvbS5jaGFyYWN0ZXJDbGFzcyk7CisgICAgICAgIH07CisKKyAgICAgICAgZm9y
IChzaXplX3QgaWR4ID0gMDsgaWR4IDwgZGlzanVuY3Rpb24tPnRlcm1zLnNpemUoKTsgKytpZHgp
IHsKKyAgICAgICAgICAgIEJ5dGVUZXJtIHRlcm0gPSBkaXNqdW5jdGlvbi0+dGVybXNbaWR4XTsK
KworICAgICAgICAgICAgYm9vbCBvdXRwdXROZXdsaW5lID0gdHJ1ZTsKKworICAgICAgICAgICAg
c3dpdGNoICh0ZXJtLnR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVCb2R5
QWx0ZXJuYXRpdmVCZWdpbjoKKyAgICAgICAgICAgICAgICBvdXRwdXRUZXJtSW5kZXhBbmROZXN0
KGlkeCwgbmVzdGluZysrKTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnQoIkJvZHlBbHRlcm5h
dGl2ZUJlZ2luIik7CisgICAgICAgICAgICAgICAgaWYgKHRlcm0uYWx0ZXJuYXRpdmUub25jZVRo
cm91Z2gpCisgICAgICAgICAgICAgICAgICAgIG91dC5wcmludCgiIG9uY2VUaHJvdWdoIik7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlQm9k
eUFsdGVybmF0aXZlRGlzanVuY3Rpb246CisgICAgICAgICAgICAgICAgb3V0cHV0VGVybUluZGV4
QW5kTmVzdChpZHgsIG5lc3RpbmcgLSAxKTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnQoIkJv
ZHlBbHRlcm5hdGl2ZURpc2p1bmN0aW9uIik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlQm9keUFsdGVybmF0aXZlRW5kOgorICAgICAgICAg
ICAgICAgIG91dHB1dFRlcm1JbmRleEFuZE5lc3QoaWR4LCAtLW5lc3RpbmcpOworICAgICAgICAg
ICAgICAgIG91dC5wcmludCgiQm9keUFsdGVybmF0aXZlRW5kIik7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlQWx0ZXJuYXRpdmVCZWdpbjoK
KyAgICAgICAgICAgICAgICBvdXRwdXRUZXJtSW5kZXhBbmROZXN0KGlkeCwgbmVzdGluZysrKTsK
KyAgICAgICAgICAgICAgICBvdXQucHJpbnQoIkFsdGVybmF0aXZlQmVnaW4iKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVBbHRlcm5hdGl2
ZURpc2p1bmN0aW9uOgorICAgICAgICAgICAgICAgIG91dHB1dFRlcm1JbmRleEFuZE5lc3QoaWR4
LCBuZXN0aW5nIC0gMSk7CisgICAgICAgICAgICAgICAgb3V0LnByaW50KCJBbHRlcm5hdGl2ZURp
c2p1bmN0aW9uIik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEJ5
dGVUZXJtOjpUeXBlQWx0ZXJuYXRpdmVFbmQ6CisgICAgICAgICAgICAgICAgb3V0cHV0VGVybUlu
ZGV4QW5kTmVzdChpZHgsIC0tbmVzdGluZyk7CisgICAgICAgICAgICAgICAgb3V0LnByaW50KCJB
bHRlcm5hdGl2ZUVuZCIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBCeXRlVGVybTo6VHlwZVN1YnBhdHRlcm5CZWdpbjoKKyAgICAgICAgICAgICAgICBvdXRwdXRU
ZXJtSW5kZXhBbmROZXN0KGlkeCwgbmVzdGluZysrKTsKKyAgICAgICAgICAgICAgICBvdXQucHJp
bnQoIlN1YnBhdHRlcm5CZWdpbiIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBCeXRlVGVybTo6VHlwZVN1YnBhdHRlcm5FbmQ6CisgICAgICAgICAgICAgICAgb3V0
cHV0VGVybUluZGV4QW5kTmVzdChpZHgsIC0tbmVzdGluZyk7CisgICAgICAgICAgICAgICAgb3V0
LnByaW50KCJTdWJwYXR0ZXJuRW5kIik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlQXNzZXJ0aW9uQk9MOgorICAgICAgICAgICAgICAgIG91
dHB1dFRlcm1JbmRleEFuZE5lc3QoaWR4LCBuZXN0aW5nKTsKKyAgICAgICAgICAgICAgICBvdXQu
cHJpbnQoIkFzc2VydGlvbkJPTCIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBCeXRlVGVybTo6VHlwZUFzc2VydGlvbkVPTDoKKyAgICAgICAgICAgICAgICBvdXRw
dXRUZXJtSW5kZXhBbmROZXN0KGlkeCwgbmVzdGluZyk7CisgICAgICAgICAgICAgICAgb3V0LnBy
aW50KCJBc3NlcnRpb25FT0wiKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgQnl0ZVRlcm06OlR5cGVBc3NlcnRpb25Xb3JkQm91bmRhcnk6CisgICAgICAgICAgICAg
ICAgb3V0cHV0VGVybUluZGV4QW5kTmVzdChpZHgsIG5lc3RpbmcpOworICAgICAgICAgICAgICAg
IG91dC5wcmludCgiQXNzZXJ0aW9uV29yZEJvdW5kYXJ5Iik7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlUGF0dGVybkNoYXJhY3Rlck9uY2U6
CisgICAgICAgICAgICAgICAgb3V0cHV0VGVybUluZGV4QW5kTmVzdChpZHgsIG5lc3RpbmcpOwor
ICAgICAgICAgICAgICAgIG91dC5wcmludCgiUGF0dGVybkNoYXJhY3Rlck9uY2UiKTsKKyAgICAg
ICAgICAgICAgICBkdW1wSW52ZXJ0ZWQodGVybSk7CisgICAgICAgICAgICAgICAgZHVtcElucHV0
UG9zaXRpb24odGVybSk7CisgICAgICAgICAgICAgICAgZHVtcENoYXJhY3Rlcih0ZXJtKTsKKyAg
ICAgICAgICAgICAgICBkdW1wUXVhbnRpdHkodGVybSk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlUGF0dGVybkNoYXJhY3RlckZpeGVkOgor
ICAgICAgICAgICAgICAgIG91dHB1dFRlcm1JbmRleEFuZE5lc3QoaWR4LCBuZXN0aW5nKTsKKyAg
ICAgICAgICAgICAgICBvdXQucHJpbnQoIlBhdHRlcm5DaGFyYWN0ZXJGaXhlZCIpOworICAgICAg
ICAgICAgICAgIGR1bXBJbnZlcnRlZCh0ZXJtKTsKKyAgICAgICAgICAgICAgICBkdW1wSW5wdXRQ
b3NpdGlvbih0ZXJtKTsKKyAgICAgICAgICAgICAgICBkdW1wQ2hhcmFjdGVyKHRlcm0pOworICAg
ICAgICAgICAgICAgIG91dC5wcmludCgiIHsiLCB0ZXJtLmF0b20ucXVhbnRpdHlNaW5Db3VudCwg
In0iKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06
OlR5cGVQYXR0ZXJuQ2hhcmFjdGVyR3JlZWR5OgorICAgICAgICAgICAgICAgIG91dHB1dFRlcm1J
bmRleEFuZE5lc3QoaWR4LCBuZXN0aW5nKTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnQoIlBh
dHRlcm5DaGFyYWN0ZXJHcmVlZHkiKTsKKyAgICAgICAgICAgICAgICBkdW1wSW52ZXJ0ZWQodGVy
bSk7CisgICAgICAgICAgICAgICAgZHVtcElucHV0UG9zaXRpb24odGVybSk7CisgICAgICAgICAg
ICAgICAgZHVtcENoYXJhY3Rlcih0ZXJtKTsKKyAgICAgICAgICAgICAgICBkdW1wUXVhbnRpdHko
dGVybSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEJ5dGVUZXJt
OjpUeXBlUGF0dGVybkNoYXJhY3Rlck5vbkdyZWVkeToKKyAgICAgICAgICAgICAgICBvdXRwdXRU
ZXJtSW5kZXhBbmROZXN0KGlkeCwgbmVzdGluZyk7CisgICAgICAgICAgICAgICAgb3V0LnByaW50
KCJQYXR0ZXJuQ2hhcmFjdGVyTm9uR3JlZWR5Iik7CisgICAgICAgICAgICAgICAgZHVtcEludmVy
dGVkKHRlcm0pOworICAgICAgICAgICAgICAgIGR1bXBJbnB1dFBvc2l0aW9uKHRlcm0pOworICAg
ICAgICAgICAgICAgIGR1bXBDaGFyYWN0ZXIodGVybSk7CisgICAgICAgICAgICAgICAgZHVtcFF1
YW50aXR5KHRlcm0pOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBC
eXRlVGVybTo6VHlwZVBhdHRlcm5DYXNlZENoYXJhY3Rlck9uY2U6CisgICAgICAgICAgICAgICAg
b3V0cHV0VGVybUluZGV4QW5kTmVzdChpZHgsIG5lc3RpbmcpOworICAgICAgICAgICAgICAgIG91
dC5wcmludCgiUGF0dGVybkNhc2VkQ2hhcmFjdGVyT25jZSIpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhdHRlcm5DYXNlZENoYXJhY3Rl
ckZpeGVkOgorICAgICAgICAgICAgICAgIG91dHB1dFRlcm1JbmRleEFuZE5lc3QoaWR4LCBuZXN0
aW5nKTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnQoIlBhdHRlcm5DYXNlZENoYXJhY3RlckZp
eGVkIik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEJ5dGVUZXJt
OjpUeXBlUGF0dGVybkNhc2VkQ2hhcmFjdGVyR3JlZWR5OgorICAgICAgICAgICAgICAgIG91dHB1
dFRlcm1JbmRleEFuZE5lc3QoaWR4LCBuZXN0aW5nKTsKKyAgICAgICAgICAgICAgICBvdXQucHJp
bnQoIlBhdHRlcm5DYXNlZENoYXJhY3RlckdyZWVkeSIpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhdHRlcm5DYXNlZENoYXJhY3Rlck5v
bkdyZWVkeToKKyAgICAgICAgICAgICAgICBvdXRwdXRUZXJtSW5kZXhBbmROZXN0KGlkeCwgbmVz
dGluZyk7CisgICAgICAgICAgICAgICAgb3V0LnByaW50KCJQYXR0ZXJuQ2FzZWRDaGFyYWN0ZXJO
b25HcmVlZHkiKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQnl0
ZVRlcm06OlR5cGVDaGFyYWN0ZXJDbGFzczoKKyAgICAgICAgICAgICAgICBvdXRwdXRUZXJtSW5k
ZXhBbmROZXN0KGlkeCwgbmVzdGluZyk7CisgICAgICAgICAgICAgICAgb3V0LnByaW50KCJDaGFy
YWN0ZXJDbGFzcyIpOworICAgICAgICAgICAgICAgIGR1bXBJbnZlcnRlZCh0ZXJtKTsKKyAgICAg
ICAgICAgICAgICBkdW1wSW5wdXRQb3NpdGlvbih0ZXJtKTsKKyAgICAgICAgICAgICAgICBkdW1w
Q2hhckNsYXNzKHRlcm0pOworICAgICAgICAgICAgICAgIGR1bXBRdWFudGl0eSh0ZXJtKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVCYWNr
UmVmZXJlbmNlOgorICAgICAgICAgICAgICAgIG91dHB1dFRlcm1JbmRleEFuZE5lc3QoaWR4LCBu
ZXN0aW5nKTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnQoIkJhY2tSZWZlcmVuY2UgIyIsIHRl
cm0uYXRvbS5zdWJwYXR0ZXJuSWQpOworICAgICAgICAgICAgICAgIGR1bXBRdWFudGl0eSh0ZXJt
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5
cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm46CisgICAgICAgICAgICAgICAgb3V0cHV0VGVybUluZGV4
QW5kTmVzdChpZHgsIG5lc3RpbmcpOworICAgICAgICAgICAgICAgIG91dC5wcmludCgiUGFyZW50
aGVzZXNTdWJwYXR0ZXJuIik7CisgICAgICAgICAgICAgICAgZHVtcENhcHR1cmVkKHRlcm0pOwor
ICAgICAgICAgICAgICAgIGR1bXBJbnZlcnRlZCh0ZXJtKTsKKyAgICAgICAgICAgICAgICBkdW1w
SW5wdXRQb3NpdGlvbih0ZXJtKTsKKyAgICAgICAgICAgICAgICBkdW1wUXVhbnRpdHkodGVybSk7
CisgICAgICAgICAgICAgICAgb3V0LnByaW50KCJcbiIpOworICAgICAgICAgICAgICAgIG91dHB1
dE5ld2xpbmUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBkdW1wRGlzanVuY3Rpb24odGVybS5h
dG9tLnBhcmVudGhlc2VzRGlzanVuY3Rpb24sIG5lc3RpbmcpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhcmVudGhlc2VzU3VicGF0dGVy
bk9uY2VCZWdpbjoKKyAgICAgICAgICAgICAgICBvdXRwdXRUZXJtSW5kZXhBbmROZXN0KGlkeCwg
bmVzdGluZysrKTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnQoIlBhcmVudGhlc2VzU3VicGF0
dGVybk9uY2VCZWdpbiIpOworICAgICAgICAgICAgICAgIGR1bXBDYXB0dXJlZCh0ZXJtKTsKKyAg
ICAgICAgICAgICAgICBkdW1wSW52ZXJ0ZWQodGVybSk7CisgICAgICAgICAgICAgICAgZHVtcElu
cHV0UG9zaXRpb24odGVybSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIEJ5dGVUZXJtOjpUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuT25jZUVuZDoKKyAgICAgICAg
ICAgICAgICBvdXRwdXRUZXJtSW5kZXhBbmROZXN0KGlkeCwgLS1uZXN0aW5nKTsKKyAgICAgICAg
ICAgICAgICBvdXQucHJpbnQoIlBhcmVudGhlc2VzU3VicGF0dGVybk9uY2VFbmQiKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVQYXJlbnRo
ZXNlc1N1YnBhdHRlcm5UZXJtaW5hbEJlZ2luOgorICAgICAgICAgICAgICAgIG91dHB1dFRlcm1J
bmRleEFuZE5lc3QoaWR4LCBuZXN0aW5nKyspOworICAgICAgICAgICAgICAgIG91dC5wcmludCgi
UGFyZW50aGVzZXNTdWJwYXR0ZXJuVGVybWluYWxCZWdpbiIpOworICAgICAgICAgICAgICAgIGR1
bXBJbnZlcnRlZCh0ZXJtKTsKKyAgICAgICAgICAgICAgICBkdW1wSW5wdXRQb3NpdGlvbih0ZXJt
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5
cGVQYXJlbnRoZXNlc1N1YnBhdHRlcm5UZXJtaW5hbEVuZDoKKyAgICAgICAgICAgICAgICBvdXRw
dXRUZXJtSW5kZXhBbmROZXN0KGlkeCwgLS1uZXN0aW5nKTsKKyAgICAgICAgICAgICAgICBvdXQu
cHJpbnQoIlBhcmVudGhlc2VzU3VicGF0dGVyblRlcm1pbmFsRW5kIik7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEJ5dGVUZXJtOjpUeXBlUGFyZW50aGV0aWNhbEFz
c2VydGlvbkJlZ2luOgorICAgICAgICAgICAgICAgIG91dHB1dFRlcm1JbmRleEFuZE5lc3QoaWR4
LCBuZXN0aW5nKyspOworICAgICAgICAgICAgICAgIG91dC5wcmludCgiUGFyZW50aGV0aWNhbEFz
c2VydGlvbkJlZ2luIik7CisgICAgICAgICAgICAgICAgZHVtcEludmVydGVkKHRlcm0pOworICAg
ICAgICAgICAgICAgIGR1bXBJbnB1dFBvc2l0aW9uKHRlcm0pOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBCeXRlVGVybTo6VHlwZVBhcmVudGhldGljYWxBc3NlcnRp
b25FbmQ6CisgICAgICAgICAgICAgICAgb3V0cHV0VGVybUluZGV4QW5kTmVzdChpZHgsIC0tbmVz
dGluZyk7CisgICAgICAgICAgICAgICAgb3V0LnByaW50KCJQYXJlbnRoZXRpY2FsQXNzZXJ0aW9u
RW5kIik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEJ5dGVUZXJt
OjpUeXBlQ2hlY2tJbnB1dDoKKyAgICAgICAgICAgICAgICBvdXRwdXRUZXJtSW5kZXhBbmROZXN0
KGlkeCwgbmVzdGluZyk7CisgICAgICAgICAgICAgICAgb3V0LnByaW50KCJDaGVja0lucHV0ICIs
IHRlcm0uY2hlY2tJbnB1dENvdW50KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVVbmNoZWNrSW5wdXQ6CisgICAgICAgICAgICAgICAgb3V0
cHV0VGVybUluZGV4QW5kTmVzdChpZHgsIG5lc3RpbmcpOworICAgICAgICAgICAgICAgIG91dC5w
cmludCgiVW5jaGVja0lucHV0ICIsIHRlcm0uY2hlY2tJbnB1dENvdW50KTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQnl0ZVRlcm06OlR5cGVEb3RTdGFyRW5jbG9z
dXJlOgorICAgICAgICAgICAgICAgIG91dHB1dFRlcm1JbmRleEFuZE5lc3QoaWR4LCBuZXN0aW5n
KTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnQoIkRvdFN0YXJFbmNsb3N1cmUiKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChvdXRwdXRO
ZXdsaW5lKQorICAgICAgICAgICAgICAgIG91dC5wcmludCgiXG4iKTsKKyAgICAgICAgfQorICAg
IH0KKyNlbmRpZgogCiBwcml2YXRlOgogICAgIFlhcnJQYXR0ZXJuJiBtX3BhdHRlcm47CkBAIC0y
MTUyLDcgKzIzODYsNyBAQCBDT01QSUxFX0FTU0VSVChzaXplb2YoQmFja1RyYWNrSW5mb0JhY2tS
CiBDT01QSUxFX0FTU0VSVChzaXplb2YoQmFja1RyYWNrSW5mb0FsdGVybmF0aXZlKSA9PSAoWWFy
clN0YWNrU3BhY2VGb3JCYWNrVHJhY2tJbmZvQWx0ZXJuYXRpdmUgKiBzaXplb2YodWludHB0cl90
KSksIENoZWNrWWFyclN0YWNrU3BhY2VGb3JCYWNrVHJhY2tJbmZvQWx0ZXJuYXRpdmUpOwogQ09N
UElMRV9BU1NFUlQoc2l6ZW9mKEJhY2tUcmFja0luZm9QYXJlbnRoZXRpY2FsQXNzZXJ0aW9uKSA9
PSAoWWFyclN0YWNrU3BhY2VGb3JCYWNrVHJhY2tJbmZvUGFyZW50aGV0aWNhbEFzc2VydGlvbiAq
IHNpemVvZih1aW50cHRyX3QpKSwgQ2hlY2tZYXJyU3RhY2tTcGFjZUZvckJhY2tUcmFja0luZm9Q
YXJlbnRoZXRpY2FsQXNzZXJ0aW9uKTsKIENPTVBJTEVfQVNTRVJUKHNpemVvZihCYWNrVHJhY2tJ
bmZvUGFyZW50aGVzZXNPbmNlKSA9PSAoWWFyclN0YWNrU3BhY2VGb3JCYWNrVHJhY2tJbmZvUGFy
ZW50aGVzZXNPbmNlICogc2l6ZW9mKHVpbnRwdHJfdCkpLCBDaGVja1lhcnJTdGFja1NwYWNlRm9y
QmFja1RyYWNrSW5mb1BhcmVudGhlc2VzT25jZSk7Ci1DT01QSUxFX0FTU0VSVChzaXplb2YoSW50
ZXJwcmV0ZXI8VUNoYXI+OjpCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXMpID09IChZYXJyU3RhY2tT
cGFjZUZvckJhY2tUcmFja0luZm9QYXJlbnRoZXNlcyAqIHNpemVvZih1aW50cHRyX3QpKSwgQ2hl
Y2tZYXJyU3RhY2tTcGFjZUZvckJhY2tUcmFja0luZm9QYXJlbnRoZXNlcyk7CitDT01QSUxFX0FT
U0VSVChzaXplb2YoSW50ZXJwcmV0ZXI8VUNoYXI+OjpCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXMp
IDw9IChZYXJyU3RhY2tTcGFjZUZvckJhY2tUcmFja0luZm9QYXJlbnRoZXNlcyAqIHNpemVvZih1
aW50cHRyX3QpKSwgQ2hlY2tZYXJyU3RhY2tTcGFjZUZvckJhY2tUcmFja0luZm9QYXJlbnRoZXNl
cyk7CiAKIAogfSB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAko
cmV2aXNpb24gMjI1OTE0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDIwICs1OCwyNSBAQCBjbGFzcyBZYXJyR2VuZXJhdG9y
IDogcHJpdmF0ZSBNYWNyb0Fzc2VtCiAKICNkZWZpbmUgSEFWRV9JTklUSUFMX1NUQVJUX1JFRwog
I2VsaWYgQ1BVKEFSTTY0KQorICAgIC8vIEFyZ3VtZW50IHJlZ2lzdGVycwogICAgIHN0YXRpYyBj
b25zdCBSZWdpc3RlcklEIGlucHV0ID0gQVJNNjRSZWdpc3RlcnM6OngwOwogICAgIHN0YXRpYyBj
b25zdCBSZWdpc3RlcklEIGluZGV4ID0gQVJNNjRSZWdpc3RlcnM6OngxOwogICAgIHN0YXRpYyBj
b25zdCBSZWdpc3RlcklEIGxlbmd0aCA9IEFSTTY0UmVnaXN0ZXJzOjp4MjsKICAgICBzdGF0aWMg
Y29uc3QgUmVnaXN0ZXJJRCBvdXRwdXQgPSBBUk02NFJlZ2lzdGVyczo6eDM7CisgICAgc3RhdGlj
IGNvbnN0IFJlZ2lzdGVySUQgZnJlZWxpc3RSZWdpc3RlciA9IEFSTTY0UmVnaXN0ZXJzOjp4NDsK
KyAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBmcmVlbGlzdFNpemVSZWdpc3RlciA9IEFSTTY0
UmVnaXN0ZXJzOjp4NTsKIAotICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1QwID0gQVJN
NjRSZWdpc3RlcnM6Ong0OwotICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1QxID0gQVJN
NjRSZWdpc3RlcnM6Ong1OwotICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1VuaWNvZGVJ
bnB1dEFuZFRyYWlsID0gQVJNNjRSZWdpc3RlcnM6Ong2OwotICAgIHN0YXRpYyBjb25zdCBSZWdp
c3RlcklEIHJlZ1VuaWNvZGVUZW1wID0gQVJNNjRSZWdpc3RlcnM6Ong3OwotICAgIHN0YXRpYyBj
b25zdCBSZWdpc3RlcklEIGluaXRpYWxTdGFydCA9IEFSTTY0UmVnaXN0ZXJzOjp4ODsKLSAgICBz
dGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBzdXBwbGVtZW50YXJ5UGxhbmVzQmFzZSA9IEFSTTY0UmVn
aXN0ZXJzOjp4OTsKLSAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBzdXJyb2dhdGVUYWdNYXNr
ID0gQVJNNjRSZWdpc3RlcnM6OngxMDsKLSAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBsZWFk
aW5nU3Vycm9nYXRlVGFnID0gQVJNNjRSZWdpc3RlcnM6OngxMTsKLSAgICBzdGF0aWMgY29uc3Qg
UmVnaXN0ZXJJRCB0cmFpbGluZ1N1cnJvZ2F0ZVRhZyA9IEFSTTY0UmVnaXN0ZXJzOjp4MTI7Cisg
ICAgLy8gU2NyYXRjaCByZWdpc3RlcnMKKyAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdU
MCA9IEFSTTY0UmVnaXN0ZXJzOjp4NjsKKyAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdU
MSA9IEFSTTY0UmVnaXN0ZXJzOjp4NzsKKyAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdU
MiA9IEFSTTY0UmVnaXN0ZXJzOjp4ODsKKyAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZW1h
aW5pbmdNYXRjaENvdW50ID0gQVJNNjRSZWdpc3RlcnM6Ong5OworICAgIHN0YXRpYyBjb25zdCBS
ZWdpc3RlcklEIHJlZ1VuaWNvZGVJbnB1dEFuZFRyYWlsID0gQVJNNjRSZWdpc3RlcnM6OngxMDsK
KyAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBpbml0aWFsU3RhcnQgPSBBUk02NFJlZ2lzdGVy
czo6eDExOworICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHN1cHBsZW1lbnRhcnlQbGFuZXNC
YXNlID0gQVJNNjRSZWdpc3RlcnM6OngxMjsKKyAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBz
dXJyb2dhdGVUYWdNYXNrID0gQVJNNjRSZWdpc3RlcnM6OngxMzsKKyAgICBzdGF0aWMgY29uc3Qg
UmVnaXN0ZXJJRCBsZWFkaW5nU3Vycm9nYXRlVGFnID0gQVJNNjRSZWdpc3RlcnM6OngxNDsKKyAg
ICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCB0cmFpbGluZ1N1cnJvZ2F0ZVRhZyA9IEFSTTY0UmVn
aXN0ZXJzOjp4MTU7CiAKICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZXR1cm5SZWdpc3Rl
ciA9IEFSTTY0UmVnaXN0ZXJzOjp4MDsKICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZXR1
cm5SZWdpc3RlcjIgPSBBUk02NFJlZ2lzdGVyczo6eDE7CkBAIC0xMDUsMTAgKzExMCwxMyBAQCBj
bGFzcyBZYXJyR2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2VtCiAgICAgc3RhdGljIGNvbnN0
IFJlZ2lzdGVySUQgcmV0dXJuUmVnaXN0ZXIyID0gWDg2UmVnaXN0ZXJzOjplZHg7CiAjZWxpZiBD
UFUoWDg2XzY0KQogI2lmICFPUyhXSU5ET1dTKQorICAgIC8vIEFyZ3VtZW50IHJlZ2lzdGVycwog
ICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGlucHV0ID0gWDg2UmVnaXN0ZXJzOjplZGk7CiAg
ICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgaW5kZXggPSBYODZSZWdpc3RlcnM6OmVzaTsKICAg
ICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBsZW5ndGggPSBYODZSZWdpc3RlcnM6OmVkeDsKICAg
ICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBvdXRwdXQgPSBYODZSZWdpc3RlcnM6OmVjeDsKKyAg
ICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBmcmVlbGlzdFJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJz
OjpyODsKKyAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBmcmVlbGlzdFNpemVSZWdpc3RlciA9
IFg4NlJlZ2lzdGVyczo6cjk7IC8vIE9ubHkgdXNlZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24uCiAj
ZWxzZQogICAgIC8vIElmIHRoZSByZXR1cm4gdmFsdWUgZG9lc24ndCBmaXQgaW4gNjRiaXRzLCBp
dHMgZGVzdGluYXRpb24gaXMgcG9pbnRlZCBieSByY3ggYW5kIHRoZSBwYXJhbWV0ZXJzIGFyZSBz
aGlmdGVkLgogICAgIC8vIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS83
NTcyenR6NC5hc3B4CkBAIC0xMTksMzMgKzEyNywxODggQEAgY2xhc3MgWWFyckdlbmVyYXRvciA6
IHByaXZhdGUgTWFjcm9Bc3NlbQogICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIG91dHB1dCA9
IFg4NlJlZ2lzdGVyczo6cjEwOwogI2VuZGlmCiAKKyAgICAvLyBTY3JhdGNoIHJlZ2lzdGVycwog
ICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1QwID0gWDg2UmVnaXN0ZXJzOjplYXg7CiAj
aWYgIU9TKFdJTkRPV1MpCi0gICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmVnVDEgPSBYODZS
ZWdpc3RlcnM6OnI4OworICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1QxID0gWDg2UmVn
aXN0ZXJzOjpyOTsKKyAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdUMiA9IFg4NlJlZ2lz
dGVyczo6cjEwOwogI2Vsc2UKICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdUMSA9IFg4
NlJlZ2lzdGVyczo6ZWN4OworICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1QyID0gWDg2
UmVnaXN0ZXJzOjplZGk7CiAjZW5kaWYKIAogICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGlu
aXRpYWxTdGFydCA9IFg4NlJlZ2lzdGVyczo6ZWJ4OwogI2lmICFPUyhXSU5ET1dTKQotICAgIHN0
YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1VuaWNvZGVJbnB1dEFuZFRyYWlsID0gWDg2UmVnaXN0
ZXJzOjpyOTsKLSAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdVbmljb2RlVGVtcCA9IFg4
NlJlZ2lzdGVyczo6cjEwOworICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlbWFpbmluZ01h
dGNoQ291bnQgPSBYODZSZWdpc3RlcnM6OnIxMjsKICNlbHNlCi0gICAgc3RhdGljIGNvbnN0IFJl
Z2lzdGVySUQgcmVnVW5pY29kZUlucHV0QW5kVHJhaWwgPSBYODZSZWdpc3RlcnM6OmVzaTsKLSAg
ICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdVbmljb2RlVGVtcCA9IFg4NlJlZ2lzdGVyczo6
ZWRpOworICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlbWFpbmluZ01hdGNoQ291bnQgPSBY
ODZSZWdpc3RlcnM6OmVzaTsKICNlbmRpZgotICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHN1
cHBsZW1lbnRhcnlQbGFuZXNCYXNlID0gWDg2UmVnaXN0ZXJzOjpyMTI7Ci0gICAgc3RhdGljIGNv
bnN0IFJlZ2lzdGVySUQgc3Vycm9nYXRlVGFnTWFzayA9IFg4NlJlZ2lzdGVyczo6cjEzOworICAg
IHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1VuaWNvZGVJbnB1dEFuZFRyYWlsID0gWDg2UmVn
aXN0ZXJzOjpyMTM7CiAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgbGVhZGluZ1N1cnJvZ2F0
ZVRhZyA9IFg4NlJlZ2lzdGVyczo6cjE0OwogICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHRy
YWlsaW5nU3Vycm9nYXRlVGFnID0gWDg2UmVnaXN0ZXJzOjpyMTU7CiAKICAgICBzdGF0aWMgY29u
c3QgUmVnaXN0ZXJJRCByZXR1cm5SZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6ZWF4OwogICAgIHN0
YXRpYyBjb25zdCBSZWdpc3RlcklEIHJldHVyblJlZ2lzdGVyMiA9IFg4NlJlZ2lzdGVyczo6ZWR4
OwogCisgICAgY29uc3QgVHJ1c3RlZEltbTMyIHN1cHBsZW1lbnRhcnlQbGFuZXNCYXNlID0gVHJ1
c3RlZEltbTMyKDB4MTAwMDApOworICAgIGNvbnN0IFRydXN0ZWRJbW0zMiBzdXJyb2dhdGVUYWdN
YXNrID0gVHJ1c3RlZEltbTMyKDB4ZmZmZmZjMDApOwogI2RlZmluZSBIQVZFX0lOSVRJQUxfU1RB
UlRfUkVHCiAjZGVmaW5lIEpJVF9VTklDT0RFX0VYUFJFU1NJT05TCiAjZW5kaWYKIAorI2lmZGVm
IEpJVF9BTExfUEFSRU5TX0VYUFJFU1NJT05TCisgICAgc3RydWN0IFBhcmVuQ29udGV4dFNpemVz
IHsKKyAgICAgICAgc2l6ZV90IG1fbnVtU3VicGF0dGVybnM7CisgICAgICAgIHNpemVfdCBtX2Zy
YW1lU2xvdHM7CisKKyAgICAgICAgUGFyZW5Db250ZXh0U2l6ZXMoc2l6ZV90IG51bVN1YnBhdHRl
cm5zLCBzaXplX3QgZnJhbWVTbG90cykKKyAgICAgICAgICAgIDogbV9udW1TdWJwYXR0ZXJucyhu
dW1TdWJwYXR0ZXJucykKKyAgICAgICAgICAgICwgbV9mcmFtZVNsb3RzKGZyYW1lU2xvdHMpCisg
ICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIHNpemVfdCBudW1TdWJwYXR0ZXJucygpIHsg
cmV0dXJuIG1fbnVtU3VicGF0dGVybnM7IH0KKworICAgICAgICBzaXplX3QgZnJhbWVTbG90cygp
IHsgcmV0dXJuIG1fZnJhbWVTbG90czsgfQorICAgIH07CisKKyAgICBzdHJ1Y3QgUGFyZW5Db250
ZXh0IHsKKyAgICAgICAgc3RydWN0IFBhcmVuQ29udGV4dCogbmV4dDsKKyAgICAgICAgdWludDMy
X3QgYmVnaW47CisgICAgICAgIHVpbnQzMl90IG1hdGNoQW1vdW50OworICAgICAgICB1aW50cHRy
X3QgcmV0dXJuQWRkcmVzczsKKyAgICAgICAgc3RydWN0IFN1YnBhdHRlcm5zIHsKKyAgICAgICAg
ICAgIHVuc2lnbmVkIHN0YXJ0OworICAgICAgICAgICAgdW5zaWduZWQgZW5kOworICAgICAgICB9
IHN1YnBhdHRlcm5zWzBdOworICAgICAgICB1aW50cHRyX3QgZnJhbWVTbG90c1swXTsKKworICAg
ICAgICBzdGF0aWMgc2l6ZV90IHNpemVGb3IoUGFyZW5Db250ZXh0U2l6ZXMmIHBhcmVuQ29udGV4
dFNpemVzKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gc2l6ZW9mKFBhcmVuQ29udGV4
dCkgKyBzaXplb2YoU3VicGF0dGVybnMpICogcGFyZW5Db250ZXh0U2l6ZXMubnVtU3VicGF0dGVy
bnMoKSArIHNpemVvZih1aW50cHRyX3QpICogcGFyZW5Db250ZXh0U2l6ZXMuZnJhbWVTbG90cygp
OworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBuZXh0T2Zmc2V0KCkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG9mZnNldG9mKFBhcmVuQ29udGV4dCwgbmV4dCk7
CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgcHRyZGlmZl90IGJlZ2luT2Zmc2V0KCkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG9mZnNldG9mKFBhcmVuQ29udGV4dCwgYmVnaW4p
OworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBtYXRjaEFtb3VudE9mZnNl
dCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBvZmZzZXRvZihQYXJlbkNvbnRleHQs
IG1hdGNoQW1vdW50KTsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBwdHJkaWZmX3QgcmV0
dXJuQWRkcmVzc09mZnNldCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBvZmZzZXRv
ZihQYXJlbkNvbnRleHQsIHJldHVybkFkZHJlc3MpOworICAgICAgICB9CisKKyAgICAgICAgc3Rh
dGljIHB0cmRpZmZfdCBzdWJwYXR0ZXJuT2Zmc2V0KHNpemVfdCBzdWJwYXR0ZXJuKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gb2Zmc2V0b2YoUGFyZW5Db250ZXh0LCBzdWJwYXR0ZXJu
cykgKyAoc3VicGF0dGVybiAtIDEpICogc2l6ZW9mKFN1YnBhdHRlcm5zKTsKKyAgICAgICAgfQor
CisgICAgICAgIHN0YXRpYyBwdHJkaWZmX3Qgc2F2ZWRGcmFtZU9mZnNldChQYXJlbkNvbnRleHRT
aXplcyYgcGFyZW5Db250ZXh0U2l6ZXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBv
ZmZzZXRvZihQYXJlbkNvbnRleHQsIHN1YnBhdHRlcm5zKSArIChwYXJlbkNvbnRleHRTaXplcy5u
dW1TdWJwYXR0ZXJucygpKSAqIHNpemVvZihTdWJwYXR0ZXJucyk7CisgICAgICAgIH0KKyAgICB9
OworCisgICAgdm9pZCBpbml0UGFyZW5Db250ZXh0RnJlZUxpc3QoKQorICAgIHsKKyAgICAgICAg
UmVnaXN0ZXJJRCBwYXJlbkNvbnRleHRQb2ludGVyID0gcmVnVDA7CisgICAgICAgIFJlZ2lzdGVy
SUQgbmV4dFBhcmVuQ29udGV4dFBvaW50ZXIgPSByZWdUMjsKKworICAgICAgICBzaXplX3QgcGFy
ZW5Db250ZXh0U2l6ZSA9IFBhcmVuQ29udGV4dDo6c2l6ZUZvcihtX3BhcmVuQ29udGV4dFNpemVz
KTsKKworICAgICAgICBwYXJlbkNvbnRleHRTaXplID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9m
PHNpemVvZih1aW50cHRyX3QpPihwYXJlbkNvbnRleHRTaXplKTsKKworICAgICAgICAvLyBDaGVj
ayB0aGF0IHRoZSBwYXJlbiBjb250ZXh0IGlzIGEgcmVhc29uYWJsZSBzaXplLgorICAgICAgICBp
ZiAocGFyZW5Db250ZXh0U2l6ZSA+IElOVDE2X01BWCkKKyAgICAgICAgICAgIG1fYWJvcnRFeGVj
dXRpb24uYXBwZW5kKGp1bXAoKSk7CisKKyAgICAgICAgSnVtcCBlbXB0eUZyZWVMaXN0ID0gYnJh
bmNoVGVzdFB0cihaZXJvLCBmcmVlbGlzdFJlZ2lzdGVyKTsKKyAgICAgICAgbW92ZShmcmVlbGlz
dFJlZ2lzdGVyLCBwYXJlbkNvbnRleHRQb2ludGVyKTsKKyAgICAgICAgYWRkUHRyKFRydXN0ZWRJ
bW0zMihwYXJlbkNvbnRleHRTaXplKSwgZnJlZWxpc3RSZWdpc3RlciwgbmV4dFBhcmVuQ29udGV4
dFBvaW50ZXIpOworICAgICAgICBhZGRQdHIoZnJlZWxpc3RSZWdpc3RlciwgZnJlZWxpc3RTaXpl
UmVnaXN0ZXIpOworICAgICAgICBzdWJQdHIoVHJ1c3RlZEltbTMyKHBhcmVuQ29udGV4dFNpemUp
LCBmcmVlbGlzdFNpemVSZWdpc3Rlcik7CisKKyAgICAgICAgTGFiZWwgbG9vcFRvcCh0aGlzKTsK
KyAgICAgICAgSnVtcCBpbml0RG9uZSA9IGJyYW5jaFB0cihBYm92ZSwgbmV4dFBhcmVuQ29udGV4
dFBvaW50ZXIsIGZyZWVsaXN0U2l6ZVJlZ2lzdGVyKTsKKyAgICAgICAgc3RvcmVQdHIobmV4dFBh
cmVuQ29udGV4dFBvaW50ZXIsIEFkZHJlc3MocGFyZW5Db250ZXh0UG9pbnRlciwgUGFyZW5Db250
ZXh0OjpuZXh0T2Zmc2V0KCkpKTsKKyAgICAgICAgbW92ZShuZXh0UGFyZW5Db250ZXh0UG9pbnRl
ciwgcGFyZW5Db250ZXh0UG9pbnRlcik7CisgICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIocGFy
ZW5Db250ZXh0U2l6ZSksIHBhcmVuQ29udGV4dFBvaW50ZXIsIG5leHRQYXJlbkNvbnRleHRQb2lu
dGVyKTsKKyAgICAgICAganVtcChsb29wVG9wKTsKKworICAgICAgICBpbml0RG9uZS5saW5rKHRo
aXMpOworICAgICAgICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKDApLCBBZGRyZXNzKHBhcmVuQ29u
dGV4dFBvaW50ZXIsIFBhcmVuQ29udGV4dDo6bmV4dE9mZnNldCgpKSk7CisgICAgICAgIGVtcHR5
RnJlZUxpc3QubGluayh0aGlzKTsKKyAgICB9CisKKyAgICB2b2lkIGFsbG9jYXRlUGFyZW5Db250
ZXh0KFJlZ2lzdGVySUQgcmVzdWx0KQorICAgIHsKKyAgICAgICAgbV9hYm9ydEV4ZWN1dGlvbi5h
cHBlbmQoYnJhbmNoVGVzdFB0cihaZXJvLCBmcmVlbGlzdFJlZ2lzdGVyKSk7CisgICAgICAgIHN1
YjMyKFRydXN0ZWRJbW0zMigxKSwgcmVtYWluaW5nTWF0Y2hDb3VudCk7CisgICAgICAgIG1faGl0
TWF0Y2hMaW1pdC5hcHBlbmQoYnJhbmNoVGVzdFB0cihaZXJvLCByZW1haW5pbmdNYXRjaENvdW50
KSk7CisgICAgICAgIG1vdmUoZnJlZWxpc3RSZWdpc3RlciwgcmVzdWx0KTsKKyAgICAgICAgbG9h
ZFB0cihBZGRyZXNzKGZyZWVsaXN0UmVnaXN0ZXIsIFBhcmVuQ29udGV4dDo6bmV4dE9mZnNldCgp
KSwgZnJlZWxpc3RSZWdpc3Rlcik7CisgICAgfQorCisgICAgdm9pZCBmcmVlUGFyZW5Db250ZXh0
KFJlZ2lzdGVySUQgaGVhZFB0clJlZ2lzdGVyLCBSZWdpc3RlcklEIG5ld0hlYWRQdHJSZWdpc3Rl
cikKKyAgICB7CisgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhoZWFkUHRyUmVnaXN0ZXIsIFBhcmVu
Q29udGV4dDo6bmV4dE9mZnNldCgpKSwgbmV3SGVhZFB0clJlZ2lzdGVyKTsKKyAgICAgICAgc3Rv
cmVQdHIoZnJlZWxpc3RSZWdpc3RlciwgQWRkcmVzcyhoZWFkUHRyUmVnaXN0ZXIsIFBhcmVuQ29u
dGV4dDo6bmV4dE9mZnNldCgpKSk7CisgICAgICAgIG1vdmUoaGVhZFB0clJlZ2lzdGVyLCBmcmVl
bGlzdFJlZ2lzdGVyKTsKKyAgICB9CisKKyAgICB2b2lkIHNhdmVQYXJlbkNvbnRleHQoUmVnaXN0
ZXJJRCBwYXJlbkNvbnRleHRSZWcsIFJlZ2lzdGVySUQgdGVtcFJlZywgdW5zaWduZWQgZmlyc3RT
dWJwYXR0ZXJuLCB1bnNpZ25lZCBsYXN0U3VicGF0dGVybiwgdW5zaWduZWQgc3VicGF0dGVybkJh
c2VGcmFtZUxvY2F0aW9uKQorICAgIHsKKyAgICAgICAgc3RvcmUzMihpbmRleCwgQWRkcmVzcyhw
YXJlbkNvbnRleHRSZWcsIFBhcmVuQ29udGV4dDo6YmVnaW5PZmZzZXQoKSkpOworICAgICAgICBs
b2FkRnJvbUZyYW1lKHN1YnBhdHRlcm5CYXNlRnJhbWVMb2NhdGlvbiArIEJhY2tUcmFja0luZm9Q
YXJlbnRoZXNlczo6bWF0Y2hBbW91bnRJbmRleCgpLCB0ZW1wUmVnKTsKKyAgICAgICAgc3RvcmUz
Mih0ZW1wUmVnLCBBZGRyZXNzKHBhcmVuQ29udGV4dFJlZywgUGFyZW5Db250ZXh0OjptYXRjaEFt
b3VudE9mZnNldCgpKSk7CisgICAgICAgIGxvYWRGcm9tRnJhbWUoc3VicGF0dGVybkJhc2VGcmFt
ZUxvY2F0aW9uICsgQmFja1RyYWNrSW5mb1BhcmVudGhlc2VzOjpyZXR1cm5BZGRyZXNzSW5kZXgo
KSwgdGVtcFJlZyk7CisgICAgICAgIHN0b3JlUHRyKHRlbXBSZWcsIEFkZHJlc3MocGFyZW5Db250
ZXh0UmVnLCBQYXJlbkNvbnRleHQ6OnJldHVybkFkZHJlc3NPZmZzZXQoKSkpOworICAgICAgICBp
ZiAoY29tcGlsZU1vZGUgPT0gSW5jbHVkZVN1YnBhdHRlcm5zKSB7CisgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIHN1YnBhdHRlcm4gPSBmaXJzdFN1YnBhdHRlcm47IHN1YnBhdHRlcm4gPD0gbGFz
dFN1YnBhdHRlcm47IHN1YnBhdHRlcm4rKykgeworICAgICAgICAgICAgICAgIGxvYWRQdHIoQWRk
cmVzcyhvdXRwdXQsIChzdWJwYXR0ZXJuIDw8IDEpICogc2l6ZW9mKHVuc2lnbmVkKSksIHRlbXBS
ZWcpOworICAgICAgICAgICAgICAgIHN0b3JlUHRyKHRlbXBSZWcsIEFkZHJlc3MocGFyZW5Db250
ZXh0UmVnLCBQYXJlbkNvbnRleHQ6OnN1YnBhdHRlcm5PZmZzZXQoc3VicGF0dGVybikpKTsKKyAg
ICAgICAgICAgICAgICBjbGVhclN1YnBhdHRlcm5TdGFydChzdWJwYXR0ZXJuKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICBzdWJwYXR0ZXJuQmFzZUZyYW1lTG9jYXRpb24gKz0g
WWFyclN0YWNrU3BhY2VGb3JCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXM7CisgICAgICAgIGZvciAo
dW5zaWduZWQgZnJhbWVMb2NhdGlvbiA9IHN1YnBhdHRlcm5CYXNlRnJhbWVMb2NhdGlvbjsgZnJh
bWVMb2NhdGlvbiA8IG1fcGFyZW5Db250ZXh0U2l6ZXMuZnJhbWVTbG90cygpOyBmcmFtZUxvY2F0
aW9uKyspIHsKKyAgICAgICAgICAgIGxvYWRGcm9tRnJhbWUoZnJhbWVMb2NhdGlvbiwgdGVtcFJl
Zyk7CisgICAgICAgICAgICBzdG9yZVB0cih0ZW1wUmVnLCBBZGRyZXNzKHBhcmVuQ29udGV4dFJl
ZywgUGFyZW5Db250ZXh0OjpzYXZlZEZyYW1lT2Zmc2V0KG1fcGFyZW5Db250ZXh0U2l6ZXMpICsg
ZnJhbWVMb2NhdGlvbiAqIHNpemVvZih1aW50cHRyX3QpKSk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICB2b2lkIHJlc3RvcmVQYXJlbkNvbnRleHQoUmVnaXN0ZXJJRCBwYXJlbkNvbnRleHRSZWcs
IFJlZ2lzdGVySUQgdGVtcFJlZywgdW5zaWduZWQgZmlyc3RTdWJwYXR0ZXJuLCB1bnNpZ25lZCBs
YXN0U3VicGF0dGVybiwgdW5zaWduZWQgc3VicGF0dGVybkJhc2VGcmFtZUxvY2F0aW9uKQorICAg
IHsKKyAgICAgICAgbG9hZDMyKEFkZHJlc3MocGFyZW5Db250ZXh0UmVnLCBQYXJlbkNvbnRleHQ6
OmJlZ2luT2Zmc2V0KCkpLCBpbmRleCk7CisgICAgICAgIHN0b3JlVG9GcmFtZShpbmRleCwgc3Vi
cGF0dGVybkJhc2VGcmFtZUxvY2F0aW9uICsgQmFja1RyYWNrSW5mb1BhcmVudGhlc2VzOjpiZWdp
bkluZGV4KCkpOworICAgICAgICBsb2FkMzIoQWRkcmVzcyhwYXJlbkNvbnRleHRSZWcsIFBhcmVu
Q29udGV4dDo6bWF0Y2hBbW91bnRPZmZzZXQoKSksIHRlbXBSZWcpOworICAgICAgICBzdG9yZVRv
RnJhbWUodGVtcFJlZywgc3VicGF0dGVybkJhc2VGcmFtZUxvY2F0aW9uICsgQmFja1RyYWNrSW5m
b1BhcmVudGhlc2VzOjptYXRjaEFtb3VudEluZGV4KCkpOworICAgICAgICBsb2FkUHRyKEFkZHJl
c3MocGFyZW5Db250ZXh0UmVnLCBQYXJlbkNvbnRleHQ6OnJldHVybkFkZHJlc3NPZmZzZXQoKSks
IHRlbXBSZWcpOworICAgICAgICBzdG9yZVRvRnJhbWUodGVtcFJlZywgc3VicGF0dGVybkJhc2VG
cmFtZUxvY2F0aW9uICsgQmFja1RyYWNrSW5mb1BhcmVudGhlc2VzOjpyZXR1cm5BZGRyZXNzSW5k
ZXgoKSk7CisgICAgICAgIGlmIChjb21waWxlTW9kZSA9PSBJbmNsdWRlU3VicGF0dGVybnMpIHsK
KyAgICAgICAgICAgIGZvciAodW5zaWduZWQgc3VicGF0dGVybiA9IGZpcnN0U3VicGF0dGVybjsg
c3VicGF0dGVybiA8PSBsYXN0U3VicGF0dGVybjsgc3VicGF0dGVybisrKSB7CisgICAgICAgICAg
ICAgICAgbG9hZFB0cihBZGRyZXNzKHBhcmVuQ29udGV4dFJlZywgUGFyZW5Db250ZXh0OjpzdWJw
YXR0ZXJuT2Zmc2V0KHN1YnBhdHRlcm4pKSwgdGVtcFJlZyk7CisgICAgICAgICAgICAgICAgc3Rv
cmVQdHIodGVtcFJlZywgQWRkcmVzcyhvdXRwdXQsIChzdWJwYXR0ZXJuIDw8IDEpICogc2l6ZW9m
KHVuc2lnbmVkKSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHN1YnBhdHRl
cm5CYXNlRnJhbWVMb2NhdGlvbiArPSBZYXJyU3RhY2tTcGFjZUZvckJhY2tUcmFja0luZm9QYXJl
bnRoZXNlczsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBmcmFtZUxvY2F0aW9uID0gc3VicGF0dGVy
bkJhc2VGcmFtZUxvY2F0aW9uOyBmcmFtZUxvY2F0aW9uIDwgbV9wYXJlbkNvbnRleHRTaXplcy5m
cmFtZVNsb3RzKCk7IGZyYW1lTG9jYXRpb24rKykgeworICAgICAgICAgICAgbG9hZFB0cihBZGRy
ZXNzKHBhcmVuQ29udGV4dFJlZywgUGFyZW5Db250ZXh0OjpzYXZlZEZyYW1lT2Zmc2V0KG1fcGFy
ZW5Db250ZXh0U2l6ZXMpICsgZnJhbWVMb2NhdGlvbiAqIHNpemVvZih1aW50cHRyX3QpKSwgdGVt
cFJlZyk7CisgICAgICAgICAgICBzdG9yZVRvRnJhbWUodGVtcFJlZywgZnJhbWVMb2NhdGlvbik7
CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKwogICAgIHZvaWQgb3B0aW1pemVBbHRlcm5hdGl2
ZShQYXR0ZXJuQWx0ZXJuYXRpdmUqIGFsdGVybmF0aXZlKQogICAgIHsKICAgICAgICAgaWYgKCFh
bHRlcm5hdGl2ZS0+bV90ZXJtcy5zaXplKCkpCkBAIC0zNTQsMTQgKzUxNywxNCBAQCBjbGFzcyBZ
YXJyR2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2VtCiAKICAgICAgICAgSnVtcExpc3Qgbm90
VW5pY29kZTsKICAgICAgICAgbG9hZDE2VW5hbGlnbmVkKHJlZ1VuaWNvZGVJbnB1dEFuZFRyYWls
LCByZXN1bHRSZWcpOwotICAgICAgICBhbmQzMihzdXJyb2dhdGVUYWdNYXNrLCByZXN1bHRSZWcs
IHJlZ1VuaWNvZGVUZW1wKTsKLSAgICAgICAgbm90VW5pY29kZS5hcHBlbmQoYnJhbmNoMzIoTm90
RXF1YWwsIHJlZ1VuaWNvZGVUZW1wLCBsZWFkaW5nU3Vycm9nYXRlVGFnKSk7CisgICAgICAgIGFu
ZDMyKHN1cnJvZ2F0ZVRhZ01hc2ssIHJlc3VsdFJlZywgcmVnVDIpOworICAgICAgICBub3RVbmlj
b2RlLmFwcGVuZChicmFuY2gzMihOb3RFcXVhbCwgcmVnVDIsIGxlYWRpbmdTdXJyb2dhdGVUYWcp
KTsKICAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMigyKSwgcmVnVW5pY29kZUlucHV0QW5kVHJh
aWwpOwotICAgICAgICBnZXRFZmZlY3RpdmVBZGRyZXNzKEJhc2VJbmRleChpbnB1dCwgbGVuZ3Ro
LCBUaW1lc1R3byksIHJlZ1VuaWNvZGVUZW1wKTsKLSAgICAgICAgbm90VW5pY29kZS5hcHBlbmQo
YnJhbmNoUHRyKEFib3ZlT3JFcXVhbCwgcmVnVW5pY29kZUlucHV0QW5kVHJhaWwsIHJlZ1VuaWNv
ZGVUZW1wKSk7CisgICAgICAgIGdldEVmZmVjdGl2ZUFkZHJlc3MoQmFzZUluZGV4KGlucHV0LCBs
ZW5ndGgsIFRpbWVzVHdvKSwgcmVnVDIpOworICAgICAgICBub3RVbmljb2RlLmFwcGVuZChicmFu
Y2gzMihBYm92ZU9yRXF1YWwsIHJlZ1VuaWNvZGVJbnB1dEFuZFRyYWlsLCByZWdUMikpOwogICAg
ICAgICBsb2FkMTZVbmFsaWduZWQoQWRkcmVzcyhyZWdVbmljb2RlSW5wdXRBbmRUcmFpbCksIHJl
Z1VuaWNvZGVJbnB1dEFuZFRyYWlsKTsKLSAgICAgICAgYW5kMzIoc3Vycm9nYXRlVGFnTWFzaywg
cmVnVW5pY29kZUlucHV0QW5kVHJhaWwsIHJlZ1VuaWNvZGVUZW1wKTsKLSAgICAgICAgbm90VW5p
Y29kZS5hcHBlbmQoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1VuaWNvZGVUZW1wLCB0cmFpbGluZ1N1
cnJvZ2F0ZVRhZykpOworICAgICAgICBhbmQzMihzdXJyb2dhdGVUYWdNYXNrLCByZWdVbmljb2Rl
SW5wdXRBbmRUcmFpbCwgcmVnVDIpOworICAgICAgICBub3RVbmljb2RlLmFwcGVuZChicmFuY2gz
MihOb3RFcXVhbCwgcmVnVDIsIHRyYWlsaW5nU3Vycm9nYXRlVGFnKSk7CiAgICAgICAgIHN1YjMy
KGxlYWRpbmdTdXJyb2dhdGVUYWcsIHJlc3VsdFJlZyk7CiAgICAgICAgIHN1YjMyKHRyYWlsaW5n
U3Vycm9nYXRlVGFnLCByZWdVbmljb2RlSW5wdXRBbmRUcmFpbCk7CiAgICAgICAgIGxzaGlmdDMy
KFRydXN0ZWRJbW0zMigxMCksIHJlc3VsdFJlZyk7CkBAIC00MjIsNiArNTg1LDEzIEBAIGNsYXNz
IFlhcnJHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZW0KICAgICAgICAgcG9rZShpbW0sIGZy
YW1lTG9jYXRpb24pOwogICAgIH0KIAorI2lmIENQVShBUk02NCkgfHwgQ1BVKFg4Nl82NCkKKyAg
ICB2b2lkIHN0b3JlVG9GcmFtZShUcnVzdGVkSW1tUHRyIGltbSwgdW5zaWduZWQgZnJhbWVMb2Nh
dGlvbikKKyAgICB7CisgICAgICAgIHBva2UoaW1tLCBmcmFtZUxvY2F0aW9uKTsKKyAgICB9Cisj
ZW5kaWYKKwogICAgIERhdGFMYWJlbFB0ciBzdG9yZVRvRnJhbWVXaXRoUGF0Y2godW5zaWduZWQg
ZnJhbWVMb2NhdGlvbikKICAgICB7CiAgICAgICAgIHJldHVybiBzdG9yZVB0cldpdGhQYXRjaChU
cnVzdGVkSW1tUHRyKDApLCBBZGRyZXNzKHN0YWNrUG9pbnRlclJlZ2lzdGVyLCBmcmFtZUxvY2F0
aW9uICogc2l6ZW9mKHZvaWQqKSkpOwpAQCAtNDY3LDcgKzYzNywzMCBAQCBjbGFzcyBZYXJyR2Vu
ZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2VtCiAgICAgICAgIGdlbmVyYXRlUmV0dXJuKCk7CiAg
ICAgfQogCi0gICAgLy8gVXNlZCB0byByZWNvcmQgc3VicGF0dGVycywgc2hvdWxkIG9ubHkgYmUg
Y2FsbGVkIGlmIGNvbXBpbGVNb2RlIGlzIEluY2x1ZGVTdWJwYXR0ZXJucy4KKyAgICB2b2lkIGdl
bmVyYXRlSklURmFpbFJldHVybigpCisgICAgeworICAgICAgICBpZiAobV9hYm9ydEV4ZWN1dGlv
bi5lbXB0eSgpICYmIG1faGl0TWF0Y2hMaW1pdC5lbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIEp1bXBMaXN0IGZpbmlzaEV4aXRpbmc7CisgICAgICAgIGlmICghbV9hYm9y
dEV4ZWN1dGlvbi5lbXB0eSgpKSB7CisgICAgICAgICAgICBtX2Fib3J0RXhlY3V0aW9uLmxpbmso
dGhpcyk7CisgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoKHZvaWQqKXN0YXRpY19jYXN0
PHNpemVfdD4oLTIpKSwgcmV0dXJuUmVnaXN0ZXIpOworICAgICAgICAgICAgZmluaXNoRXhpdGlu
Zy5hcHBlbmQoanVtcCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghbV9oaXRNYXRjaExp
bWl0LmVtcHR5KCkpIHsKKyAgICAgICAgICAgIG1faGl0TWF0Y2hMaW1pdC5saW5rKHRoaXMpOwor
ICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKCh2b2lkKilzdGF0aWNfY2FzdDxzaXplX3Q+
KC0xKSksIHJldHVyblJlZ2lzdGVyKTsKKyAgICAgICAgfQorCisgICAgICAgIGZpbmlzaEV4aXRp
bmcubGluayh0aGlzKTsKKyAgICAgICAgcmVtb3ZlQ2FsbEZyYW1lKCk7CisgICAgICAgIG1vdmUo
VHJ1c3RlZEltbTMyKDApLCByZXR1cm5SZWdpc3RlcjIpOworICAgICAgICBnZW5lcmF0ZVJldHVy
bigpOworICAgIH0KKworICAgIC8vIFVzZWQgdG8gcmVjb3JkIHN1YnBhdHRlcm5zLCBzaG91bGQg
b25seSBiZSBjYWxsZWQgaWYgY29tcGlsZU1vZGUgaXMgSW5jbHVkZVN1YnBhdHRlcm5zLgogICAg
IHZvaWQgc2V0U3VicGF0dGVyblN0YXJ0KFJlZ2lzdGVySUQgcmVnLCB1bnNpZ25lZCBzdWJwYXR0
ZXJuKQogICAgIHsKICAgICAgICAgQVNTRVJUKHN1YnBhdHRlcm4pOwpAQCAtNDg3LDYgKzY4MCwx
MiBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2VtCiAgICAgICAgIHN0
b3JlMzIoVHJ1c3RlZEltbTMyKC0xKSwgQWRkcmVzcyhvdXRwdXQsIChzdWJwYXR0ZXJuIDw8IDEp
ICogc2l6ZW9mKGludCkpKTsKICAgICB9CiAKKyAgICB2b2lkIGNsZWFyTWF0Y2hlcyh1bnNpZ25l
ZCBzdWJwYXR0ZXJuLCB1bnNpZ25lZCBsYXN0U3VicGF0dGVybikKKyAgICB7CisgICAgICAgIGZv
ciAoOyBzdWJwYXR0ZXJuIDw9IGxhc3RTdWJwYXR0ZXJuOyBzdWJwYXR0ZXJuKyspCisgICAgICAg
ICAgICBjbGVhclN1YnBhdHRlcm5TdGFydChzdWJwYXR0ZXJuKTsKKyAgICB9CisKICAgICAvLyBX
ZSB1c2Ugb25lIG9mIHRocmVlIGRpZmZlcmVudCBzdHJhdGVnaWVzIHRvIHRyYWNrIHRoZSBzdGFy
dCBvZiB0aGUgY3VycmVudCBtYXRjaCwKICAgICAvLyB3aGlsZSBtYXRjaGluZy4KICAgICAvLyAx
KSBJZiB0aGUgcGF0dGVybiBoYXMgYSBmaXhlZCBzaXplLCBkbyBub3RoaW5nISAtIHdlIGNhbGN1
bGF0ZSB0aGUgdmFsdWUgbGF6aWx5CkBAIC01MjksNyArNzI4LDcgQEAgY2xhc3MgWWFyckdlbmVy
YXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlbQogICAgICAgICBPcE5lc3RlZEFsdGVybmF0aXZlTmV4
dCwKICAgICAgICAgT3BOZXN0ZWRBbHRlcm5hdGl2ZUVuZCwKICAgICAgICAgLy8gVXNlZCBmb3Ig
YWx0ZXJuYXRpdmVzIGluIHN1YnBhdHRlcm5zIHdoZXJlIHRoZXJlIGlzIG9ubHkgYSBzaW5nbGUK
LSAgICAgICAgLy8gYWx0ZXJuYXRpdmUgKGJhY2t0cmFja2luZ2lzIGVhc2llciBpbiB0aGVzZSBj
YXNlcyksIG9yIGZvciBhbHRlcm5hdGl2ZXMKKyAgICAgICAgLy8gYWx0ZXJuYXRpdmUgKGJhY2t0
cmFja2luZyBpcyBlYXNpZXIgaW4gdGhlc2UgY2FzZXMpLCBvciBmb3IgYWx0ZXJuYXRpdmVzCiAg
ICAgICAgIC8vIHdoaWNoIG5ldmVyIG5lZWQgdG8gYmUgYmFja3RyYWNrZWQgKHRob3NlIGluIHBh
cmVudGhldGljYWwgYXNzZXJ0aW9ucywKICAgICAgICAgLy8gdGVybWluYWwgc3VicGF0dGVybnMp
LgogICAgICAgICBPcFNpbXBsZU5lc3RlZEFsdGVybmF0aXZlQmVnaW4sCkBAIC01NDEsNiArNzQw
LDkgQEAgY2xhc3MgWWFyckdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlbQogICAgICAgICAv
LyBVc2VkIHRvIHdyYXAgJ1Rlcm1pbmFsJyBzdWJwYXR0ZXJuIG1hdGNoZXMgKGF0IHRoZSBlbmQg
b2YgdGhlIHJlZ2V4cCkuCiAgICAgICAgIE9wUGFyZW50aGVzZXNTdWJwYXR0ZXJuVGVybWluYWxC
ZWdpbiwKICAgICAgICAgT3BQYXJlbnRoZXNlc1N1YnBhdHRlcm5UZXJtaW5hbEVuZCwKKyAgICAg
ICAgLy8gVXNlZCB0byB3cmFwIGdlbmVyaWMgY2FwdHVyZWQgbWF0Y2hlcworICAgICAgICBPcFBh
cmVudGhlc2VzU3VicGF0dGVybkJlZ2luLAorICAgICAgICBPcFBhcmVudGhlc2VzU3VicGF0dGVy
bkVuZCwKICAgICAgICAgLy8gVXNlZCB0byB3cmFwIHBhcmVudGhldGljYWwgYXNzZXJ0aW9ucy4K
ICAgICAgICAgT3BQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW4sCiAgICAgICAgIE9wUGFyZW50
aGV0aWNhbEFzc2VydGlvbkVuZCwKQEAgLTE3NjgsMTAgKzE5NzAsNyBAQCBjbGFzcyBZYXJyR2Vu
ZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2VtCiAgICAgICAgICAgICAgICAgLy8gSW4gdGhlIG5v
bi1zaW1wbGUgY2FzZSwgc3RvcmUgYSAncmV0dXJuIGFkZHJlc3MnIHNvIHdlIGNhbiBiYWNrdHJh
Y2sgY29ycmVjdGx5LgogICAgICAgICAgICAgICAgIGlmIChvcC5tX29wID09IE9wTmVzdGVkQWx0
ZXJuYXRpdmVOZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHBhcmVudGhlc2Vz
RnJhbWVMb2NhdGlvbiA9IHRlcm0tPmZyYW1lTG9jYXRpb247Ci0gICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGFsdGVybmF0aXZlRnJhbWVMb2NhdGlvbiA9IHBhcmVudGhlc2VzRnJhbWVMb2Nh
dGlvbjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm0tPnF1YW50aXR5VHlwZSAhPSBRdWFu
dGlmaWVyRml4ZWRDb3VudCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGFsdGVybmF0aXZlRnJh
bWVMb2NhdGlvbiArPSBZYXJyU3RhY2tTcGFjZUZvckJhY2tUcmFja0luZm9QYXJlbnRoZXNlc09u
Y2U7Ci0gICAgICAgICAgICAgICAgICAgIG9wLm1fcmV0dXJuQWRkcmVzcyA9IHN0b3JlVG9GcmFt
ZVdpdGhQYXRjaChhbHRlcm5hdGl2ZUZyYW1lTG9jYXRpb24pOworICAgICAgICAgICAgICAgICAg
ICBvcC5tX3JldHVybkFkZHJlc3MgPSBzdG9yZVRvRnJhbWVXaXRoUGF0Y2gocGFyZW50aGVzZXNG
cmFtZUxvY2F0aW9uICsgQmFja1RyYWNrSW5mb1BhcmVudGhlc2VzOjpyZXR1cm5BZGRyZXNzSW5k
ZXgoKSk7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKHRlcm0tPnF1
YW50aXR5VHlwZSAhPSBRdWFudGlmaWVyRml4ZWRDb3VudCAmJiAhbV9vcHNbb3AubV9wcmV2aW91
c09wXS5tX2FsdGVybmF0aXZlLT5tX21pbmltdW1TaXplKSB7CkBAIC0xODE4LDEwICsyMDE3LDcg
QEAgY2xhc3MgWWFyckdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlbQogICAgICAgICAgICAg
ICAgIC8vIEluIHRoZSBub24tc2ltcGxlIGNhc2UsIHN0b3JlIGEgJ3JldHVybiBhZGRyZXNzJyBz
byB3ZSBjYW4gYmFja3RyYWNrIGNvcnJlY3RseS4KICAgICAgICAgICAgICAgICBpZiAob3AubV9v
cCA9PSBPcE5lc3RlZEFsdGVybmF0aXZlRW5kKSB7CiAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIHBhcmVudGhlc2VzRnJhbWVMb2NhdGlvbiA9IHRlcm0tPmZyYW1lTG9jYXRpb247Ci0gICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGFsdGVybmF0aXZlRnJhbWVMb2NhdGlvbiA9IHBhcmVu
dGhlc2VzRnJhbWVMb2NhdGlvbjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm0tPnF1YW50
aXR5VHlwZSAhPSBRdWFudGlmaWVyRml4ZWRDb3VudCkKLSAgICAgICAgICAgICAgICAgICAgICAg
IGFsdGVybmF0aXZlRnJhbWVMb2NhdGlvbiArPSBZYXJyU3RhY2tTcGFjZUZvckJhY2tUcmFja0lu
Zm9QYXJlbnRoZXNlc09uY2U7Ci0gICAgICAgICAgICAgICAgICAgIG9wLm1fcmV0dXJuQWRkcmVz
cyA9IHN0b3JlVG9GcmFtZVdpdGhQYXRjaChhbHRlcm5hdGl2ZUZyYW1lTG9jYXRpb24pOworICAg
ICAgICAgICAgICAgICAgICBvcC5tX3JldHVybkFkZHJlc3MgPSBzdG9yZVRvRnJhbWVXaXRoUGF0
Y2gocGFyZW50aGVzZXNGcmFtZUxvY2F0aW9uICsgQmFja1RyYWNrSW5mb1BhcmVudGhlc2VzOjpy
ZXR1cm5BZGRyZXNzSW5kZXgoKSk7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAg
ICAgaWYgKHRlcm0tPnF1YW50aXR5VHlwZSAhPSBRdWFudGlmaWVyRml4ZWRDb3VudCAmJiAhbV9v
cHNbb3AubV9wcmV2aW91c09wXS5tX2FsdGVybmF0aXZlLT5tX21pbmltdW1TaXplKSB7CkBAIC0x
OTYzLDcgKzIxNTksNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2Vt
CiAgICAgICAgICAgICAgICAgICAgIHBhc3RCcmVha3BvaW50LmxpbmsodGhpcyk7CiAgICAgICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgLy8gV2Uga25vdyB0aGF0IHRoZSBtYXRjaCBp
cyBub24temVybywgd2UgY2FuIGFjY2VwdCBpdCAgYW5kCisgICAgICAgICAgICAgICAgLy8gV2Ug
a25vdyB0aGF0IHRoZSBtYXRjaCBpcyBub24temVybywgd2UgY2FuIGFjY2VwdCBpdCBhbmQKICAg
ICAgICAgICAgICAgICAvLyBsb29wIGJhY2sgdXAgdG8gdGhlIGhlYWQgb2YgdGhlIHN1YnBhdHRl
cm4uCiAgICAgICAgICAgICAgICAganVtcChiZWdpbk9wLm1fcmVlbnRyeSk7CiAKQEAgLTE5NzMs
NiArMjE2OSwxMzEgQEAgY2xhc3MgWWFyckdlbmVyYXRvciA6IHByaXZhdGUgTWFjcm9Bc3NlbQog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCisgICAgICAgICAgICAvLyBP
cFBhcmVudGhlc2VzU3VicGF0dGVybkJlZ2luL0VuZAorICAgICAgICAgICAgLy8KKyAgICAgICAg
ICAgIC8vIFRoZXNlIG5vZGVzIHN1cHBvcnQgZ2VuZXJpYyBzdWJwYXR0ZXJucy4KKyAgICAgICAg
ICAgIGNhc2UgT3BQYXJlbnRoZXNlc1N1YnBhdHRlcm5CZWdpbjogeworI2lmZGVmIEpJVF9BTExf
UEFSRU5TX0VYUFJFU1NJT05TCisgICAgICAgICAgICAgICAgUGF0dGVyblRlcm0qIHRlcm0gPSBv
cC5tX3Rlcm07CisgICAgICAgICAgICAgICAgdW5zaWduZWQgcGFyZW50aGVzZXNGcmFtZUxvY2F0
aW9uID0gdGVybS0+ZnJhbWVMb2NhdGlvbjsKKworICAgICAgICAgICAgICAgIC8vIFVwb24gZW50
cnkgdG8gYSBHcmVlZHkgcXVhbnRpZmllZCBzZXQgb2YgcGFyZW50aGVzZSBzdG9yZSB0aGUgaW5k
ZXguCisgICAgICAgICAgICAgICAgLy8gV2UnbGwgdXNlIHRoaXMgZm9yIHR3byBwdXJwb3NlczoK
KyAgICAgICAgICAgICAgICAvLyAgLSBUbyBpbmRpY2F0ZSB3aGljaCBpdGVyYXRpb24gd2UgYXJl
IG9uIG9mIG1hdGhpbmcgdGhlIHJlbWFpbmRlciBvZgorICAgICAgICAgICAgICAgIC8vICAgIHRo
ZSBleHByZXNzaW9uIGFmdGVyIHRoZSBwYXJlbnRoZXNlcyAtIHRoZSBmaXJzdCwgaW5jbHVkaW5n
IHRoZQorICAgICAgICAgICAgICAgIC8vICAgIG1hdGNoIHdpdGhpbiB0aGUgcGFyZW50aGVzZXMs
IG9yIHRoZSBzZWNvbmQgaGF2aW5nIHNraXBwZWQgb3ZlciB0aGVtLgorICAgICAgICAgICAgICAg
IC8vICAtIFRvIGNoZWNrIGZvciBlbXB0eSBtYXRjaGVzLCB3aGljaCBtdXN0IGJlIHJlamVjdGVk
LgorICAgICAgICAgICAgICAgIC8vCisgICAgICAgICAgICAgICAgLy8gQXQgdGhlIGhlYWQgb2Yg
YSBOb25HcmVlZHkgc2V0IG9mIHBhcmVudGhlc2VzIHdlJ2xsIGltbWVkaWF0ZWx5IHNldCB0aGUK
KyAgICAgICAgICAgICAgICAvLyB2YWx1ZSBvbiB0aGUgc3RhY2sgdG8gLTEgKGluZGljYXRpbmcg
YSBtYXRjaCBza2lwcGluZyB0aGUgc3VicGF0dGVybiksCisgICAgICAgICAgICAgICAgLy8gYW5k
IHBsYW50IGEganVtcCB0byB0aGUgZW5kLiBXZSdsbCBhbHNvIHBsYW50IGEgbGFiZWwgdG8gYmFj
a3RyYWNrIHRvCisgICAgICAgICAgICAgICAgLy8gdG8gcmVlbnRlciB0aGUgc3VicGF0dGVybiBs
YXRlciwgd2l0aCBhIHN0b3JlIHRvIHNldCB1cCBpbmRleCBvbiB0aGUKKyAgICAgICAgICAgICAg
ICAvLyBzZWNvbmQgaXRlcmF0aW9uLgorICAgICAgICAgICAgICAgIC8vCisgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IGZvciBjYXB0dXJpbmcgcGFyZW5zLCBjb3VsZCB1c2UgdGhlIGluZGV4IGlu
IHRoZSBjYXB0dXJlIGFycmF5PworICAgICAgICAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0eVR5
cGUgPT0gUXVhbnRpZmllckdyZWVkeSB8fCB0ZXJtLT5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmll
ck5vbkdyZWVkeSkgeworICAgICAgICAgICAgICAgICAgICBzdG9yZVRvRnJhbWUoVHJ1c3RlZElt
bTMyKDApLCBwYXJlbnRoZXNlc0ZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvUGFyZW50aGVz
ZXM6Om1hdGNoQW1vdW50SW5kZXgoKSk7CisgICAgICAgICAgICAgICAgICAgIHN0b3JlVG9GcmFt
ZShUcnVzdGVkSW1tUHRyKDApLCBwYXJlbnRoZXNlc0ZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJ
bmZvUGFyZW50aGVzZXM6OnBhcmVuQ29udGV4dEhlYWRJbmRleCgpKTsKKworICAgICAgICAgICAg
ICAgICAgICBpZiAodGVybS0+cXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJOb25HcmVlZHkpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlVG9GcmFtZShUcnVzdGVkSW1tMzIoLTEpLCBw
YXJlbnRoZXNlc0ZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXM6OmJlZ2lu
SW5kZXgoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBvcC5tX2p1bXBzLmFwcGVuZChqdW1w
KCkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgICAgICBvcC5tX3JlZW50cnkgPSBsYWJlbCgpOworICAgICAgICAgICAgICAgICAg
ICBSZWdpc3RlcklEIGN1cnJQYXJlbkNvbnRleHRSZWcgPSByZWdUMDsKKyAgICAgICAgICAgICAg
ICAgICAgUmVnaXN0ZXJJRCBuZXdQYXJlbkNvbnRleHRSZWcgPSByZWdUMTsKKworICAgICAgICAg
ICAgICAgICAgICBsb2FkRnJvbUZyYW1lKHBhcmVudGhlc2VzRnJhbWVMb2NhdGlvbiArIEJhY2tU
cmFja0luZm9QYXJlbnRoZXNlczo6cGFyZW5Db250ZXh0SGVhZEluZGV4KCksIGN1cnJQYXJlbkNv
bnRleHRSZWcpOworICAgICAgICAgICAgICAgICAgICBhbGxvY2F0ZVBhcmVuQ29udGV4dChuZXdQ
YXJlbkNvbnRleHRSZWcpOworICAgICAgICAgICAgICAgICAgICBzdG9yZVB0cihjdXJyUGFyZW5D
b250ZXh0UmVnLCBuZXdQYXJlbkNvbnRleHRSZWcpOworICAgICAgICAgICAgICAgICAgICBzdG9y
ZVRvRnJhbWUobmV3UGFyZW5Db250ZXh0UmVnLCBwYXJlbnRoZXNlc0ZyYW1lTG9jYXRpb24gKyBC
YWNrVHJhY2tJbmZvUGFyZW50aGVzZXM6OnBhcmVuQ29udGV4dEhlYWRJbmRleCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgc2F2ZVBhcmVuQ29udGV4dChuZXdQYXJlbkNvbnRleHRSZWcsIHJlZ1Qy
LCB0ZXJtLT5wYXJlbnRoZXNlcy5zdWJwYXR0ZXJuSWQsIHRlcm0tPnBhcmVudGhlc2VzLmxhc3RT
dWJwYXR0ZXJuSWQsIHBhcmVudGhlc2VzRnJhbWVMb2NhdGlvbik7CisgICAgICAgICAgICAgICAg
ICAgIHN0b3JlVG9GcmFtZShpbmRleCwgcGFyZW50aGVzZXNGcmFtZUxvY2F0aW9uICsgQmFja1Ry
YWNrSW5mb1BhcmVudGhlc2VzOjpiZWdpbkluZGV4KCkpOworICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgIC8vIElmIHRoZSBwYXJlbnRoZXNlIGFyZSBjYXB0dXJpbmcsIHN0b3Jl
IHRoZSBzdGFydGluZyBpbmRleCB2YWx1ZSB0byB0aGUKKyAgICAgICAgICAgICAgICAvLyBjYXB0
dXJlcyBhcnJheSwgb2Zmc2V0dGluZyBhcyBuZWNlc3NhcnkuCisgICAgICAgICAgICAgICAgLy8K
KyAgICAgICAgICAgICAgICAvLyBGSVhNRTogY291bGQgYXZvaWQgb2Zmc2V0dGluZyB0aGlzIHZh
bHVlIGluIEpJVCBjb2RlLCBhcHBseQorICAgICAgICAgICAgICAgIC8vIG9mZnNldHMgb25seSBh
ZnRlcndhcmRzLCBhdCB0aGUgcG9pbnQgdGhlIHJlc3VsdHMgYXJyYXkgaXMKKyAgICAgICAgICAg
ICAgICAvLyBiZWluZyBhY2Nlc3NlZC4KKyAgICAgICAgICAgICAgICBpZiAodGVybS0+Y2FwdHVy
ZSgpICYmIGNvbXBpbGVNb2RlID09IEluY2x1ZGVTdWJwYXR0ZXJucykgeworICAgICAgICAgICAg
ICAgICAgICBjb25zdCBSZWdpc3RlcklEIGluZGV4VGVtcG9yYXJ5ID0gcmVnVDA7CisgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGlucHV0T2Zmc2V0ID0gKG1fY2hlY2tlZE9mZnNldCAtIHRl
cm0tPmlucHV0UG9zaXRpb24pLnVuc2FmZUdldCgpOworICAgICAgICAgICAgICAgICAgICBpZiAo
dGVybS0+cXVhbnRpdHlUeXBlID09IFF1YW50aWZpZXJGaXhlZENvdW50KQorICAgICAgICAgICAg
ICAgICAgICAgICAgaW5wdXRPZmZzZXQgKz0gdGVybS0+cGFyZW50aGVzZXMuZGlzanVuY3Rpb24t
Pm1fbWluaW11bVNpemU7CisgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dE9mZnNldCkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgbW92ZShpbmRleCwgaW5kZXhUZW1wb3JhcnkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgc3ViMzIoSW1tMzIoaW5wdXRPZmZzZXQpLCBpbmRleFRlbXBv
cmFyeSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdWJwYXR0ZXJuU3RhcnQoaW5kZXhU
ZW1wb3JhcnksIHRlcm0tPnBhcmVudGhlc2VzLnN1YnBhdHRlcm5JZCk7CisgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3VicGF0dGVyblN0YXJ0
KGluZGV4LCB0ZXJtLT5wYXJlbnRoZXNlcy5zdWJwYXR0ZXJuSWQpOworICAgICAgICAgICAgICAg
IH0KKyNlbHNlIC8vICFKSVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUworICAgICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgT3BQYXJlbnRoZXNlc1N1YnBh
dHRlcm5FbmQ6IHsKKyNpZmRlZiBKSVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUworICAgICAgICAg
ICAgICAgIFBhdHRlcm5UZXJtKiB0ZXJtID0gb3AubV90ZXJtOworICAgICAgICAgICAgICAgIHVu
c2lnbmVkIHBhcmVudGhlc2VzRnJhbWVMb2NhdGlvbiA9IHRlcm0tPmZyYW1lTG9jYXRpb247CisK
KyAgICAgICAgICAgICAgICAvLyBSdW50aW1lIEFTU0VSVCB0byBtYWtlIHN1cmUgdGhhdCB0aGUg
bmVzdGVkIGFsdGVybmF0aXZlIGhhbmRsZWQgdGhlCisgICAgICAgICAgICAgICAgLy8gIm5vIGlu
cHV0IGNvbnN1bWVkIiBjaGVjay4KKyAgICAgICAgICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxF
RCAmJiB0ZXJtLT5xdWFudGl0eVR5cGUgIT0gUXVhbnRpZmllckZpeGVkQ291bnQgJiYgIXRlcm0t
PnBhcmVudGhlc2VzLmRpc2p1bmN0aW9uLT5tX21pbmltdW1TaXplKSB7CisgICAgICAgICAgICAg
ICAgICAgIEp1bXAgcGFzdEJyZWFrcG9pbnQ7CisgICAgICAgICAgICAgICAgICAgIHBhc3RCcmVh
a3BvaW50ID0gYnJhbmNoMzIoTm90RXF1YWwsIGluZGV4LCBBZGRyZXNzKHN0YWNrUG9pbnRlclJl
Z2lzdGVyLCBwYXJlbnRoZXNlc0ZyYW1lTG9jYXRpb24gKiBzaXplb2Yodm9pZCopKSk7CisgICAg
ICAgICAgICAgICAgICAgIGFib3J0V2l0aFJlYXNvbihZQVJSTm9JbnB1dENvbnN1bWVkKTsKKyAg
ICAgICAgICAgICAgICAgICAgcGFzdEJyZWFrcG9pbnQubGluayh0aGlzKTsKKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICBjb25zdCBSZWdpc3RlcklEIGNvdW50VGVtcG9yYXJ5
ID0gcmVnVDE7CisKKyAgICAgICAgICAgICAgICBZYXJyT3AmIGJlZ2luT3AgPSBtX29wc1tvcC5t
X3ByZXZpb3VzT3BdOworICAgICAgICAgICAgICAgIGxvYWRGcm9tRnJhbWUocGFyZW50aGVzZXNG
cmFtZUxvY2F0aW9uICsgQmFja1RyYWNrSW5mb1BhcmVudGhlc2VzOjptYXRjaEFtb3VudEluZGV4
KCksIGNvdW50VGVtcG9yYXJ5KTsKKyAgICAgICAgICAgICAgICBhZGQzMihUcnVzdGVkSW1tMzIo
MSksIGNvdW50VGVtcG9yYXJ5KTsKKyAgICAgICAgICAgICAgICBzdG9yZVRvRnJhbWUoY291bnRU
ZW1wb3JhcnksIHBhcmVudGhlc2VzRnJhbWVMb2NhdGlvbiArIEJhY2tUcmFja0luZm9QYXJlbnRo
ZXNlczo6bWF0Y2hBbW91bnRJbmRleCgpKTsKKworICAgICAgICAgICAgICAgIC8vIElmIHRoZSBw
YXJlbnRoZXNlIGFyZSBjYXB0dXJpbmcsIHN0b3JlIHRoZSBlbmRpbmcgaW5kZXggdmFsdWUgdG8g
dGhlCisgICAgICAgICAgICAgICAgLy8gY2FwdHVyZXMgYXJyYXksIG9mZnNldHRpbmcgYXMgbmVj
ZXNzYXJ5LgorICAgICAgICAgICAgICAgIC8vCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IGNv
dWxkIGF2b2lkIG9mZnNldHRpbmcgdGhpcyB2YWx1ZSBpbiBKSVQgY29kZSwgYXBwbHkKKyAgICAg
ICAgICAgICAgICAvLyBvZmZzZXRzIG9ubHkgYWZ0ZXJ3YXJkcywgYXQgdGhlIHBvaW50IHRoZSBy
ZXN1bHRzIGFycmF5IGlzCisgICAgICAgICAgICAgICAgLy8gYmVpbmcgYWNjZXNzZWQuCisgICAg
ICAgICAgICAgICAgaWYgKHRlcm0tPmNhcHR1cmUoKSAmJiBjb21waWxlTW9kZSA9PSBJbmNsdWRl
U3VicGF0dGVybnMpIHsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVnaXN0ZXJJRCBpbmRl
eFRlbXBvcmFyeSA9IHJlZ1QwOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW5wdXRPZmZzZXQgPSAobV9jaGVja2VkT2Zmc2V0IC0gdGVybS0+aW5w
dXRQb3NpdGlvbikudW5zYWZlR2V0KCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dE9m
ZnNldCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbW92ZShpbmRleCwgaW5kZXhUZW1wb3Jh
cnkpOworICAgICAgICAgICAgICAgICAgICAgICAgc3ViMzIoSW1tMzIoaW5wdXRPZmZzZXQpLCBp
bmRleFRlbXBvcmFyeSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdWJwYXR0ZXJuRW5k
KGluZGV4VGVtcG9yYXJ5LCB0ZXJtLT5wYXJlbnRoZXNlcy5zdWJwYXR0ZXJuSWQpOworICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldFN1YnBhdHRl
cm5FbmQoaW5kZXgsIHRlcm0tPnBhcmVudGhlc2VzLnN1YnBhdHRlcm5JZCk7CisgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHBhcmVudGhlc2VzIGFyZSBxdWFu
dGlmaWVkIEdyZWVkeSB0aGVuIGFkZCBhIGxhYmVsIHRvIGp1bXAgYmFjaworICAgICAgICAgICAg
ICAgIC8vIHRvIGlmIGdldCBhIGZhaWxlZCBtYXRjaCBmcm9tIGFmdGVyIHRoZSBwYXJlbnRoZXNl
cy4gRm9yIE5vbkdyZWVkeQorICAgICAgICAgICAgICAgIC8vIHBhcmVudGhlc2VzLCBsaW5rIHRo
ZSBqdW1wIGZyb20gYmVmb3JlIHRoZSBzdWJwYXR0ZXJuIHRvIGhlcmUuCisgICAgICAgICAgICAg
ICAgaWYgKHRlcm0tPnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyR3JlZWR5KSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0eU1heENvdW50ICE9IHF1YW50aWZ5SW5maW5p
dGUpCisgICAgICAgICAgICAgICAgICAgICAgICBicmFuY2gzMihCZWxvdywgY291bnRUZW1wb3Jh
cnksIEltbTMyKHRlcm0tPnF1YW50aXR5TWF4Q291bnQudW5zYWZlR2V0KCkpKS5saW5rVG8oYmVn
aW5PcC5tX3JlZW50cnksIHRoaXMpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgICAgICBqdW1wKGJlZ2luT3AubV9yZWVudHJ5KTsKKyAgICAgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgICAgIG9wLm1fcmVlbnRyeSA9IGxhYmVsKCk7CisgICAg
ICAgICAgICAgICAgfSBlbHNlIGlmICh0ZXJtLT5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllck5v
bkdyZWVkeSkgeworICAgICAgICAgICAgICAgICAgICBZYXJyT3AmIGJlZ2luT3AgPSBtX29wc1tv
cC5tX3ByZXZpb3VzT3BdOworICAgICAgICAgICAgICAgICAgICBiZWdpbk9wLm1fanVtcHMubGlu
ayh0aGlzKTsKKyAgICAgICAgICAgICAgICB9CisjZWxzZSAvLyAhSklUX0FMTF9QQVJFTlNfRVhQ
UkVTU0lPTlMKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
I2VuZGlmCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKICAgICAgICAg
ICAgIC8vIE9wUGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luL0VuZAogICAgICAgICAgICAgY2Fz
ZSBPcFBhcmVudGhldGljYWxBc3NlcnRpb25CZWdpbjogewogICAgICAgICAgICAgICAgIFBhdHRl
cm5UZXJtKiB0ZXJtID0gb3AubV90ZXJtOwpAQCAtMjM5MSwxMCArMjcxMiw3IEBAIGNsYXNzIFlh
cnJHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZW0KIAogICAgICAgICAgICAgICAgICAgICAv
LyBQbGFudCBhIGp1bXAgdG8gdGhlIHJldHVybiBhZGRyZXNzLgogICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBwYXJlbnRoZXNlc0ZyYW1lTG9jYXRpb24gPSB0ZXJtLT5mcmFtZUxvY2F0aW9u
OwotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBhbHRlcm5hdGl2ZUZyYW1lTG9jYXRpb24g
PSBwYXJlbnRoZXNlc0ZyYW1lTG9jYXRpb247Ci0gICAgICAgICAgICAgICAgICAgIGlmICh0ZXJt
LT5xdWFudGl0eVR5cGUgIT0gUXVhbnRpZmllckZpeGVkQ291bnQpCi0gICAgICAgICAgICAgICAg
ICAgICAgICBhbHRlcm5hdGl2ZUZyYW1lTG9jYXRpb24gKz0gWWFyclN0YWNrU3BhY2VGb3JCYWNr
VHJhY2tJbmZvUGFyZW50aGVzZXNPbmNlOwotICAgICAgICAgICAgICAgICAgICBsb2FkRnJvbUZy
YW1lQW5kSnVtcChhbHRlcm5hdGl2ZUZyYW1lTG9jYXRpb24pOworICAgICAgICAgICAgICAgICAg
ICBsb2FkRnJvbUZyYW1lQW5kSnVtcChwYXJlbnRoZXNlc0ZyYW1lTG9jYXRpb24gKyBCYWNrVHJh
Y2tJbmZvUGFyZW50aGVzZXM6OnJldHVybkFkZHJlc3NJbmRleCgpKTsKIAogICAgICAgICAgICAg
ICAgICAgICAvLyBMaW5rIHRoZSBEYXRhTGFiZWxQdHIgYXNzb2NpYXRlZCB3aXRoIHRoZSBlbmQg
b2YgdGhlIGxhc3QKICAgICAgICAgICAgICAgICAgICAgLy8gYWx0ZXJuYXRpdmUgdG8gdGhpcyBw
b2ludC4KQEAgLTI0MjUsNyArMjc0Myw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgOiBwcml2YXRl
IE1hY3JvQXNzZW0KICAgICAgICAgICAgICAgICBQYXR0ZXJuVGVybSogdGVybSA9IG9wLm1fdGVy
bTsKICAgICAgICAgICAgICAgICBBU1NFUlQodGVybS0+cXVhbnRpdHlNYXhDb3VudCA9PSAxKTsK
IAotICAgICAgICAgICAgICAgIC8vIFdlIG9ubHkgbmVlZCB0byBiYWNrdHJhY2sgdG8gdGhpc3Bv
aW50IGlmIGNhcHR1cmluZyBvciBncmVlZHkuCisgICAgICAgICAgICAgICAgLy8gV2Ugb25seSBu
ZWVkIHRvIGJhY2t0cmFjayB0byB0aGlzIHBvaW50IGlmIGNhcHR1cmluZyBvciBncmVlZHkuCiAg
ICAgICAgICAgICAgICAgaWYgKCh0ZXJtLT5jYXB0dXJlKCkgJiYgY29tcGlsZU1vZGUgPT0gSW5j
bHVkZVN1YnBhdHRlcm5zKSB8fCB0ZXJtLT5xdWFudGl0eVR5cGUgPT0gUXVhbnRpZmllckdyZWVk
eSkgewogICAgICAgICAgICAgICAgICAgICBtX2JhY2t0cmFja2luZ1N0YXRlLmxpbmsodGhpcyk7
CiAKQEAgLTI0NTksNyArMjc3Nyw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgOiBwcml2YXRlIE1h
Y3JvQXNzZW0KICAgICAgICAgICAgICAgICAgICAgLy8gYXJlIGN1cnJlbnRseSBpbiBhIHN0YXRl
IHdoZXJlIHdlIGhhZCBza2lwcGVkIG92ZXIgdGhlIHN1YnBhdHRlcm4KICAgICAgICAgICAgICAg
ICAgICAgLy8gKGluIHdoaWNoIGNhc2UgdGhlIGZsYWcgdmFsdWUgb24gdGhlIHN0YWNrIHdpbGwg
YmUgLTEpLgogICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBwYXJlbnRoZXNlc0ZyYW1lTG9j
YXRpb24gPSB0ZXJtLT5mcmFtZUxvY2F0aW9uOwotICAgICAgICAgICAgICAgICAgICBKdW1wIGhh
ZFNraXBwZWQgPSBicmFuY2gzMihFcXVhbCwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3Rlciwg
cGFyZW50aGVzZXNGcmFtZUxvY2F0aW9uICogc2l6ZW9mKHZvaWQqKSksIFRydXN0ZWRJbW0zMigt
MSkpOworICAgICAgICAgICAgICAgICAgICBKdW1wIGhhZFNraXBwZWQgPSBicmFuY2gzMihFcXVh
bCwgQWRkcmVzcyhzdGFja1BvaW50ZXJSZWdpc3RlciwgKHBhcmVudGhlc2VzRnJhbWVMb2NhdGlv
biArIEJhY2tUcmFja0luZm9QYXJlbnRoZXNlc09uY2U6OmJlZ2luSW5kZXgoKSkgKiBzaXplb2Yo
dm9pZCopKSwgVHJ1c3RlZEltbTMyKC0xKSk7CiAKICAgICAgICAgICAgICAgICAgICAgaWYgKHRl
cm0tPnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyR3JlZWR5KSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBGb3IgR3JlZWR5IHBhcmVudGhlc2VzLCB3ZSBza2lwIGFmdGVyIGhhdmluZyBh
bHJlYWR5IHRyaWVkIGdvaW5nCkBAIC0yNTAzLDYgKzI4MjEsMTA4IEBAIGNsYXNzIFlhcnJHZW5l
cmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZW0KICAgICAgICAgICAgICAgICBtX2JhY2t0cmFja2lu
Z1N0YXRlLmFwcGVuZChvcC5tX2p1bXBzKTsKICAgICAgICAgICAgICAgICBicmVhazsKIAorICAg
ICAgICAgICAgLy8gT3BQYXJlbnRoZXNlc1N1YnBhdHRlcm5CZWdpbi9FbmQKKyAgICAgICAgICAg
IC8vCisgICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBiYWNrdHJhY2tpbmcgYmFjayBvdXQgb2Yg
YSBjYXB0dXJpbmcgc3VicGF0dGVybiB3ZSBuZWVkCisgICAgICAgICAgICAvLyB0byBjbGVhciB0
aGUgc3RhcnQgaW5kZXggaW4gdGhlIG1hdGNoZXMgb3V0cHV0IGFycmF5LCB0byByZWNvcmQgdGhh
dAorICAgICAgICAgICAgLy8gdGhpcyBzdWJwYXR0ZXJuIGhhcyBub3QgYmVlbiBjYXB0dXJlZC4K
KyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBXaGVuIGJhY2t0cmFja2luZyBiYWNrIG91
dCBvZiBhIEdyZWVkeSBxdWFudGlmaWVkIHN1YnBhdHRlcm4gd2UgbmVlZAorICAgICAgICAgICAg
Ly8gdG8gY2F0Y2ggdGhpcywgYW5kIHRyeSBydW5uaW5nIHRoZSByZW1haW5kZXIgb2YgdGhlIGFs
dGVybmF0aXZlIGFmdGVyCisgICAgICAgICAgICAvLyB0aGUgc3VicGF0dGVybiBhZ2Fpbiwgc2tp
cHBpbmcgdGhlIHBhcmVudGhlc2VzLgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIFVw
b24gYmFja3RyYWNraW5nIGJhY2sgaW50byBhIHF1YW50aWZpZWQgc2V0IG9mIHBhcmVudGhlc2Vz
IHdlIG5lZWQgdG8KKyAgICAgICAgICAgIC8vIGNoZWNrIHdoZXRoZXIgd2Ugd2VyZSBjdXJyZW50
bHkgc2tpcHBpbmcgdGhlIHN1YnBhdHRlcm4uIElmIG5vdCwgd2UKKyAgICAgICAgICAgIC8vIGNh
biBiYWNrdHJhY2sgaW50byB0aGVtLCBpZiB3ZSB3ZXJlIHdlIG5lZWQgdG8gZWl0aGVyIGJhY2t0
cmFjayBiYWNrCisgICAgICAgICAgICAvLyBvdXQgb2YgdGhlIHN0YXJ0IG9mIHRoZSBwYXJlbnRo
ZXNlcywgb3IganVtcCBiYWNrIHRvIHRoZSBmb3J3YXJkcworICAgICAgICAgICAgLy8gbWF0Y2hp
bmcgc3RhcnQsIGRlcGVuZGluZyBvZiB3aGV0aGVyIHRoZSBtYXRjaCBpcyBHcmVlZHkgb3IgTm9u
R3JlZWR5LgorICAgICAgICAgICAgY2FzZSBPcFBhcmVudGhlc2VzU3VicGF0dGVybkJlZ2luOiB7
CisjaWZkZWYgSklUX0FMTF9QQVJFTlNfRVhQUkVTU0lPTlMKKyAgICAgICAgICAgICAgICBQYXR0
ZXJuVGVybSogdGVybSA9IG9wLm1fdGVybTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBwYXJl
bnRoZXNlc0ZyYW1lTG9jYXRpb24gPSB0ZXJtLT5mcmFtZUxvY2F0aW9uOworCisgICAgICAgICAg
ICAgICAgaWYgKHRlcm0tPnF1YW50aXR5VHlwZSAhPSBRdWFudGlmaWVyRml4ZWRDb3VudCkgewor
ICAgICAgICAgICAgICAgICAgICBtX2JhY2t0cmFja2luZ1N0YXRlLmxpbmsodGhpcyk7CisKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKHRlcm0tPnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyR3Jl
ZWR5KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlcklEIGN1cnJQYXJlbkNvbnRl
eHRSZWcgPSByZWdUMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVySUQgbmV3UGFy
ZW5Db250ZXh0UmVnID0gcmVnVDE7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRGcm9t
RnJhbWUocGFyZW50aGVzZXNGcmFtZUxvY2F0aW9uICsgQmFja1RyYWNrSW5mb1BhcmVudGhlc2Vz
OjpwYXJlbkNvbnRleHRIZWFkSW5kZXgoKSwgY3VyclBhcmVuQ29udGV4dFJlZyk7CisKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3RvcmVQYXJlbkNvbnRleHQoY3VyclBhcmVuQ29udGV4dFJl
ZywgcmVnVDIsIHRlcm0tPnBhcmVudGhlc2VzLnN1YnBhdHRlcm5JZCwgdGVybS0+cGFyZW50aGVz
ZXMubGFzdFN1YnBhdHRlcm5JZCwgcGFyZW50aGVzZXNGcmFtZUxvY2F0aW9uKTsKKworICAgICAg
ICAgICAgICAgICAgICAgICAgZnJlZVBhcmVuQ29udGV4dChjdXJyUGFyZW5Db250ZXh0UmVnLCBu
ZXdQYXJlbkNvbnRleHRSZWcpOworICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVUb0ZyYW1l
KG5ld1BhcmVuQ29udGV4dFJlZywgcGFyZW50aGVzZXNGcmFtZUxvY2F0aW9uICsgQmFja1RyYWNr
SW5mb1BhcmVudGhlc2VzOjpwYXJlbkNvbnRleHRIZWFkSW5kZXgoKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBSZWdpc3RlcklEIGNvdW50VGVtcG9yYXJ5ID0gcmVnVDA7CisgICAg
ICAgICAgICAgICAgICAgICAgICBsb2FkRnJvbUZyYW1lKHBhcmVudGhlc2VzRnJhbWVMb2NhdGlv
biArIEJhY2tUcmFja0luZm9QYXJlbnRoZXNlczo6bWF0Y2hBbW91bnRJbmRleCgpLCBjb3VudFRl
bXBvcmFyeSk7CisgICAgICAgICAgICAgICAgICAgICAgICBKdW1wIHplcm9MZW5ndGhNYXRjaCA9
IGJyYW5jaFRlc3QzMihaZXJvLCBjb3VudFRlbXBvcmFyeSk7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHN1YjMyKFRydXN0ZWRJbW0zMigxKSwgY291bnRUZW1wb3JhcnkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgc3RvcmVUb0ZyYW1lKGNvdW50VGVtcG9yYXJ5LCBwYXJlbnRoZXNlc0Zy
YW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXM6Om1hdGNoQW1vdW50SW5kZXgo
KSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGp1bXAobV9vcHNbb3AubV9uZXh0T3BdLm1f
cmVlbnRyeSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHplcm9MZW5ndGhNYXRjaC5saW5r
KHRoaXMpOworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBDbGVhciB0aGUgZmxhZyBpbiB0
aGUgc3RhY2tmcmFtZSBpbmRpY2F0aW5nIHdlIGRpZG4ndCBydW4gdGhyb3VnaCB0aGUgc3VicGF0
dGVybi4KKyAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlVG9GcmFtZShUcnVzdGVkSW1tMzIo
LTEpLCBwYXJlbnRoZXNlc0ZyYW1lTG9jYXRpb24gKyBCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXM6
OmJlZ2luSW5kZXgoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGp1bXAobV9vcHNbb3Au
bV9uZXh0T3BdLm1fcmVlbnRyeSk7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgICAgICAvLyBJZiBHcmVlZHksIGp1bXAgdG8gdGhlIGVuZC4KKyAgICAgICAgICAgICAg
ICAgICAgaWYgKHRlcm0tPnF1YW50aXR5VHlwZSA9PSBRdWFudGlmaWVyR3JlZWR5KSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBBIGJhY2t0cmFjayBmcm9tIGFmdGVyIHRoZSBwYXJlbnRo
ZXNlcywgd2hlbiBza2lwcGluZyB0aGUgc3VicGF0dGVybiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHdpbGwganVtcCBiYWNrIHRvIGhlcmUuCisgICAgICAgICAgICAgICAgICAgICAgICBv
cC5tX2p1bXBzLmxpbmsodGhpcyk7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgICAgICBtX2JhY2t0cmFja2luZ1N0YXRlLmZhbGx0aHJvdWdoKCk7CisgICAgICAgICAg
ICAgICAgfQorI2Vsc2UgLy8gIUpJVF9BTExfUEFSRU5TX0VYUFJFU1NJT05TCisgICAgICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBPcFBhcmVudGhlc2Vz
U3VicGF0dGVybkVuZDogeworI2lmZGVmIEpJVF9BTExfUEFSRU5TX0VYUFJFU1NJT05TCisgICAg
ICAgICAgICAgICAgUGF0dGVyblRlcm0qIHRlcm0gPSBvcC5tX3Rlcm07CisKKyAgICAgICAgICAg
ICAgICBpZiAodGVybS0+cXVhbnRpdHlUeXBlICE9IFF1YW50aWZpZXJGaXhlZENvdW50KSB7Cisg
ICAgICAgICAgICAgICAgICAgIG1fYmFja3RyYWNraW5nU3RhdGUubGluayh0aGlzKTsKKworICAg
ICAgICAgICAgICAgICAgICAvLyBDaGVjayB3aGV0aGVyIHdlIHNob3VsZCBiYWNrdHJhY2sgYmFj
ayBpbnRvIHRoZSBwYXJlbnRoZXNlcywgb3IgaWYgd2UKKyAgICAgICAgICAgICAgICAgICAgLy8g
YXJlIGN1cnJlbnRseSBpbiBhIHN0YXRlIHdoZXJlIHdlIGhhZCBza2lwcGVkIG92ZXIgdGhlIHN1
YnBhdHRlcm4KKyAgICAgICAgICAgICAgICAgICAgLy8gKGluIHdoaWNoIGNhc2UgdGhlIGZsYWcg
dmFsdWUgb24gdGhlIHN0YWNrIHdpbGwgYmUgLTEpLgorICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBwYXJlbnRoZXNlc0ZyYW1lTG9jYXRpb24gPSB0ZXJtLT5mcmFtZUxvY2F0aW9uOworICAg
ICAgICAgICAgICAgICAgICBKdW1wIGhhZFNraXBwZWQgPSBicmFuY2gzMihFcXVhbCwgQWRkcmVz
cyhzdGFja1BvaW50ZXJSZWdpc3RlciwgKHBhcmVudGhlc2VzRnJhbWVMb2NhdGlvbiAgKyBCYWNr
VHJhY2tJbmZvUGFyZW50aGVzZXM6OmJlZ2luSW5kZXgoKSkgKiBzaXplb2Yodm9pZCopKSwgVHJ1
c3RlZEltbTMyKC0xKSk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm0tPnF1YW50aXR5
VHlwZSA9PSBRdWFudGlmaWVyR3JlZWR5KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBG
b3IgR3JlZWR5IHBhcmVudGhlc2VzLCB3ZSBza2lwIGFmdGVyIGhhdmluZyBhbHJlYWR5IHRyaWVk
IGdvaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aHJvdWdoIHRoZSBzdWJwYXR0ZXJu
LCBzbyBpZiB3ZSBnZXQgaGVyZSB3ZSdyZSBkb25lLgorICAgICAgICAgICAgICAgICAgICAgICAg
WWFyck9wJiBiZWdpbk9wID0gbV9vcHNbb3AubV9wcmV2aW91c09wXTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGJlZ2luT3AubV9qdW1wcy5hcHBlbmQoaGFkU2tpcHBlZCk7CisgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBGb3IgTm9uR3Jl
ZWR5IHBhcmVudGhlc2VzLCB3ZSB0cnkgc2tpcHBpbmcgdGhlIHN1YnBhdHRlcm4gZmlyc3QsCisg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBzbyBpZiB3ZSBnZXQgaGVyZSB3ZSBuZWVkIHRvIHRy
eSBydW5uaW5nIHRocm91Z2ggdGhlIHN1YnBhdHRlcm4KKyAgICAgICAgICAgICAgICAgICAgICAg
IC8vIG5leHQuIEp1bXAgYmFjayB0byB0aGUgc3RhcnQgb2YgdGhlIHBhcmVudGhlc2VzIGluIHRo
ZSBmb3J3YXJkcworICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWF0Y2hpbmcgcGF0aC4KKyAg
ICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCh0ZXJtLT5xdWFudGl0eVR5cGUgPT0gUXVhbnRp
Zmllck5vbkdyZWVkeSk7CisgICAgICAgICAgICAgICAgICAgICAgICBZYXJyT3AmIGJlZ2luT3Ag
PSBtX29wc1tvcC5tX3ByZXZpb3VzT3BdOworICAgICAgICAgICAgICAgICAgICAgICAgaGFkU2tp
cHBlZC5saW5rVG8oYmVnaW5PcC5tX3JlZW50cnksIHRoaXMpOworICAgICAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICAgICAgbV9iYWNrdHJhY2tpbmdTdGF0ZS5mYWxsdGhyb3Vn
aCgpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIG1fYmFja3RyYWNraW5n
U3RhdGUuYXBwZW5kKG9wLm1fanVtcHMpOworI2Vsc2UgLy8gIUpJVF9BTExfUEFSRU5TX0VYUFJF
U1NJT05TCisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNl
bmRpZgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCiAgICAgICAgICAg
ICAvLyBPcFBhcmVudGhldGljYWxBc3NlcnRpb25CZWdpbi9FbmQKICAgICAgICAgICAgIGNhc2Ug
T3BQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uQmVnaW46IHsKICAgICAgICAgICAgICAgICBQYXR0ZXJu
VGVybSogdGVybSA9IG9wLm1fdGVybTsKQEAgLTI1NjIsOSArMjk4Miw5IEBAIGNsYXNzIFlhcnJH
ZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZW0KICAgICAvLyBFbWl0cyBvcHMgZm9yIGEgc3Vi
cGF0dGVybiAoc2V0IG9mIHBhcmVudGhlc2VzKS4gVGhlc2UgY29uc2lzdAogICAgIC8vIG9mIGEg
c2V0IG9mIGFsdGVybmF0aXZlcyB3cmFwcGVkIGluIGFuIG91dGVyIHNldCBvZiBub2RlcyBmb3IK
ICAgICAvLyB0aGUgcGFyZW50aGVzZXMuCi0gICAgLy8gU3VwcG9ydGVkIHR5cGVzIG9mIHBhcmVu
dGhlc2VzIGFyZSAnT25jZScgKHF1YW50aXR5TWF4Q291bnQgPT0gMSkKLSAgICAvLyBhbmQgJ1Rl
cm1pbmFsJyAobm9uLWNhcHR1cmluZyBwYXJlbnRoZXNlcyBxdWFudGlmaWVkIGFzIGdyZWVkeQot
ICAgIC8vIGFuZCBpbmZpbml0ZSkuCisgICAgLy8gU3VwcG9ydGVkIHR5cGVzIG9mIHBhcmVudGhl
c2VzIGFyZSAnT25jZScgKHF1YW50aXR5TWF4Q291bnQgPT0gMSksCisgICAgLy8gJ1Rlcm1pbmFs
JyAobm9uLWNhcHR1cmluZyBwYXJlbnRoZXNlcyBxdWFudGlmaWVkIGFzIGdyZWVkeQorICAgIC8v
IGFuZCBpbmZpbml0ZSksIGFuZCAwIGJhc2VkIGdyZWVkeSBxdWFudGlmaWVkIHBhcmVudGhlc2Vz
LgogICAgIC8vIEFsdGVybmF0aXZlcyB3aWxsIHVzZSB0aGUgJ1NpbXBsZScgc2V0IG9mIG9wcyBp
ZiBlaXRoZXIgdGhlCiAgICAgLy8gc3VicGF0dGVybiBpcyB0ZXJtaW5hbCAoaW4gd2hpY2ggY2Fz
ZSB3ZSB3aWxsIG5ldmVyIG5lZWQgdG8KICAgICAvLyBiYWNrdHJhY2spLCBvciBpZiB0aGUgc3Vi
cGF0dGVybiBvbmx5IGNvbnRhaW5zIG9uZSBhbHRlcm5hdGl2ZS4KQEAgLTI1ODQsNiArMzAwNCw4
IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgOiBwcml2YXRlIE1hY3JvQXNzZW0KICAgICAgICAgLy8g
bmVlZCB0byByZXN0b3JlIHRoZSBjYXB0dXJlIGZyb20gdGhlIGZpcnN0IHN1YnBhdHRlcm4gdXBv
biBhCiAgICAgICAgIC8vIGZhaWx1cmUgaW4gdGhlIHNlY29uZC4KICAgICAgICAgaWYgKHRlcm0t
PnF1YW50aXR5TWluQ291bnQgJiYgdGVybS0+cXVhbnRpdHlNaW5Db3VudCAhPSB0ZXJtLT5xdWFu
dGl0eU1heENvdW50KSB7CisgICAgICAgICAgICBpZiAoT3B0aW9uczo6ZHVtcENvbXBpbGVkUmVn
RXhwUGF0dGVybnMoKSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nRigiQ2FuJ3QgSklUIGEgdmFy
aWFibGUgY291bnRlZCBwYXJlbnRoZXNpcyB3aXRoIGEgbm9uLXplcm8gbWluaW11bVxuIik7CiAg
ICAgICAgICAgICBtX3Nob3VsZEZhbGxCYWNrID0gdHJ1ZTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfSBpZiAodGVybS0+cXVhbnRpdHlNYXhDb3VudCA9PSAxICYmICF0ZXJtLT5wYXJl
bnRoZXNlcy5pc0NvcHkpIHsKQEAgLTI2MDIsOSArMzAyNCwzMSBAQCBjbGFzcyBZYXJyR2VuZXJh
dG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2VtCiAgICAgICAgICAgICBwYXJlbnRoZXNlc0JlZ2luT3BD
b2RlID0gT3BQYXJlbnRoZXNlc1N1YnBhdHRlcm5UZXJtaW5hbEJlZ2luOwogICAgICAgICAgICAg
cGFyZW50aGVzZXNFbmRPcENvZGUgPSBPcFBhcmVudGhlc2VzU3VicGF0dGVyblRlcm1pbmFsRW5k
OwogICAgICAgICB9IGVsc2UgeworI2lmZGVmIEpJVF9BTExfUEFSRU5TX0VYUFJFU1NJT05TCisg
ICAgICAgICAgICAvLyBXZSBvbmx5IGhhbmRsZSBnZW5lcmljIHBhcmVudGhlc2lzIHdpdGggZ3Jl
ZWR5IGNvdW50cy4KKyAgICAgICAgICAgIGlmICh0ZXJtLT5xdWFudGl0eVR5cGUgIT0gUXVhbnRp
ZmllckdyZWVkeSkgeworICAgICAgICAgICAgICAgIC8vIFRoaXMgc3VicGF0dGVybiBpcyBub3Qg
c3VwcG9ydGVkIGJ5IHRoZSBKSVQuCisgICAgICAgICAgICAgICAgbV9zaG91bGRGYWxsQmFjayA9
IHRydWU7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBtX2NvbnRhaW5zTmVzdGVkU3VicGF0dGVybnMgPSB0cnVlOworCisgICAgICAgICAgICAv
LyBTZWxlY3QgdGhlICdHZW5lcmljJyBub2Rlcy4KKyAgICAgICAgICAgIHBhcmVudGhlc2VzQmVn
aW5PcENvZGUgPSBPcFBhcmVudGhlc2VzU3VicGF0dGVybkJlZ2luOworICAgICAgICAgICAgcGFy
ZW50aGVzZXNFbmRPcENvZGUgPSBPcFBhcmVudGhlc2VzU3VicGF0dGVybkVuZDsKKworICAgICAg
ICAgICAgLy8gSWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBhbHRlcm5hdGl2ZSB3ZSBjYW5ub3Qg
dXNlIHRoZSAnc2ltcGxlJyBub2Rlcy4KKyAgICAgICAgICAgIGlmICh0ZXJtLT5wYXJlbnRoZXNl
cy5kaXNqdW5jdGlvbi0+bV9hbHRlcm5hdGl2ZXMuc2l6ZSgpICE9IDEpIHsKKyAgICAgICAgICAg
ICAgICBhbHRlcm5hdGl2ZUJlZ2luT3BDb2RlID0gT3BOZXN0ZWRBbHRlcm5hdGl2ZUJlZ2luOwor
ICAgICAgICAgICAgICAgIGFsdGVybmF0aXZlTmV4dE9wQ29kZSA9IE9wTmVzdGVkQWx0ZXJuYXRp
dmVOZXh0OworICAgICAgICAgICAgICAgIGFsdGVybmF0aXZlRW5kT3BDb2RlID0gT3BOZXN0ZWRB
bHRlcm5hdGl2ZUVuZDsKKyAgICAgICAgICAgIH0KKyNlbHNlCiAgICAgICAgICAgICAvLyBUaGlz
IHN1YnBhdHRlcm4gaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgSklULgogICAgICAgICAgICAgbV9z
aG91bGRGYWxsQmFjayA9IHRydWU7CiAgICAgICAgICAgICByZXR1cm47CisjZW5kaWYKICAgICAg
ICAgfQogCiAgICAgICAgIHNpemVfdCBwYXJlbkJlZ2luID0gbV9vcHMuc2l6ZSgpOwpAQCAtMjgz
MSwxOCArMzI3NSwyMSBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2Vt
CiAgICAgICAgIGlmIChtX3BhdHRlcm4ubV9zYXZlSW5pdGlhbFN0YXJ0VmFsdWUpCiAgICAgICAg
ICAgICBwdXNoKFg4NlJlZ2lzdGVyczo6ZWJ4KTsKIAotICAgICAgICBpZiAobV9kZWNvZGVTdXJy
b2dhdGVQYWlycykgeworI2lmZGVmIEpJVF9BTExfUEFSRU5TX0VYUFJFU1NJT05TCisgICAgICAg
IGlmIChtX2NvbnRhaW5zTmVzdGVkU3VicGF0dGVybnMpIHsKICNpZiBPUyhXSU5ET1dTKQogICAg
ICAgICAgICAgcHVzaChYODZSZWdpc3RlcnM6OmVkaSk7CiAgICAgICAgICAgICBwdXNoKFg4NlJl
Z2lzdGVyczo6ZXNpKTsKICNlbmRpZgogICAgICAgICAgICAgcHVzaChYODZSZWdpc3RlcnM6OnIx
Mik7CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIGlmIChtX2RlY29kZVN1cnJvZ2F0ZVBh
aXJzKSB7CiAgICAgICAgICAgICBwdXNoKFg4NlJlZ2lzdGVyczo6cjEzKTsKICAgICAgICAgICAg
IHB1c2goWDg2UmVnaXN0ZXJzOjpyMTQpOwogICAgICAgICAgICAgcHVzaChYODZSZWdpc3RlcnM6
OnIxNSk7CiAKLSAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKDB4MTAwMDApLCBzdXBwbGVt
ZW50YXJ5UGxhbmVzQmFzZSk7Ci0gICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMigweGZmZmZm
YzAwKSwgc3Vycm9nYXRlVGFnTWFzayk7CiAgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMigw
eGQ4MDApLCBsZWFkaW5nU3Vycm9nYXRlVGFnKTsKICAgICAgICAgICAgIG1vdmUoVHJ1c3RlZElt
bTMyKDB4ZGMwMCksIHRyYWlsaW5nU3Vycm9nYXRlVGFnKTsKICAgICAgICAgfQpAQCAtMjkxMiwx
MiArMzM1OSwxNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIDogcHJpdmF0ZSBNYWNyb0Fzc2VtCiAg
ICAgICAgICAgICBwb3AoWDg2UmVnaXN0ZXJzOjpyMTUpOwogICAgICAgICAgICAgcG9wKFg4NlJl
Z2lzdGVyczo6cjE0KTsKICAgICAgICAgICAgIHBvcChYODZSZWdpc3RlcnM6OnIxMyk7CisgICAg
ICAgIH0KKworI2lmZGVmIEpJVF9BTExfUEFSRU5TX0VYUFJFU1NJT05TCisgICAgICAgIGlmICht
X2NvbnRhaW5zTmVzdGVkU3VicGF0dGVybnMpIHsKICAgICAgICAgICAgIHBvcChYODZSZWdpc3Rl
cnM6OnIxMik7CiAjaWYgT1MoV0lORE9XUykKICAgICAgICAgICAgIHBvcChYODZSZWdpc3RlcnM6
OmVzaSk7CiAgICAgICAgICAgICBwb3AoWDg2UmVnaXN0ZXJzOjplZGkpOwogI2VuZGlmCiAgICAg
ICAgIH0KKyNlbmRpZgogCiAgICAgICAgIGlmIChtX3BhdHRlcm4ubV9zYXZlSW5pdGlhbFN0YXJ0
VmFsdWUpCiAgICAgICAgICAgICBwb3AoWDg2UmVnaXN0ZXJzOjplYngpOwpAQCAtMjk0OSw2ICsz
NDAxLDEwIEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2RlY29kZVN1cnJvZ2F0ZVBhaXJzKG1fY2hh
clNpemUgPT0gQ2hhcjE2ICYmIG1fcGF0dGVybi51bmljb2RlKCkpCiAgICAgICAgICwgbV91bmlj
b2RlSWdub3JlQ2FzZShtX3BhdHRlcm4udW5pY29kZSgpICYmIG1fcGF0dGVybi5pZ25vcmVDYXNl
KCkpCiAgICAgICAgICwgbV9jYW5vbmljYWxNb2RlKG1fcGF0dGVybi51bmljb2RlKCkgPyBDYW5v
bmljYWxNb2RlOjpVbmljb2RlIDogQ2Fub25pY2FsTW9kZTo6VUNTMikKKyNpZmRlZiBKSVRfQUxM
X1BBUkVOU19FWFBSRVNTSU9OUworICAgICAgICAsIG1fY29udGFpbnNOZXN0ZWRTdWJwYXR0ZXJu
cyhmYWxzZSkKKyAgICAgICAgLCBtX3BhcmVuQ29udGV4dFNpemVzKGNvbXBpbGVNb2RlID09IElu
Y2x1ZGVTdWJwYXR0ZXJucyA/IG1fcGF0dGVybi5tX251bVN1YnBhdHRlcm5zIDogMCwgbV9wYXR0
ZXJuLm1fYm9keS0+bV9jYWxsRnJhbWVTaXplKQorI2VuZGlmCiAgICAgewogICAgIH0KIApAQCAt
Mjk2MSwxMiArMzQxNywyNiBAQCBwdWJsaWM6CiAgICAgICAgIH0KICNlbmRpZgogCisgICAgICAg
IC8vIFdlIG5lZWQgdG8gY29tcGlsZSBiZWZvcmUgZ2VuZXJhdGluZyBjb2RlIHNpbmNlIHdlIHNl
dCBmbGFncyBiYXNlZCBvbiBjb21waWxhdGlvbiB0aGF0CisgICAgICAgIC8vIGFyZSB1c2VkIGR1
cmluZyBnZW5lcmF0aW9uLgorICAgICAgICBvcENvbXBpbGVCb2R5KG1fcGF0dGVybi5tX2JvZHkp
OworICAgICAgICAKKyAgICAgICAgaWYgKG1fc2hvdWxkRmFsbEJhY2spIHsKKyAgICAgICAgICAg
IGppdE9iamVjdC5zZXRGYWxsQmFjayh0cnVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICAKICAgICAgICAgZ2VuZXJhdGVFbnRlcigpOwogCiAgICAgICAgIEp1bXAg
aGFzSW5wdXQgPSBjaGVja0lucHV0KCk7CiAgICAgICAgIGdlbmVyYXRlRmFpbFJldHVybigpOwog
ICAgICAgICBoYXNJbnB1dC5saW5rKHRoaXMpOwogCisjaWZkZWYgSklUX0FMTF9QQVJFTlNfRVhQ
UkVTU0lPTlMKKyAgICAgICAgaWYgKG1fY29udGFpbnNOZXN0ZWRTdWJwYXR0ZXJucykKKyAgICAg
ICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKG1hdGNoTGltaXQpLCByZW1haW5pbmdNYXRjaENvdW50
KTsKKyNlbmRpZgorCiAgICAgICAgIGlmIChjb21waWxlTW9kZSA9PSBJbmNsdWRlU3VicGF0dGVy
bnMpIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3BhdHRlcm4ubV9u
dW1TdWJwYXR0ZXJucyArIDE7ICsraSkKICAgICAgICAgICAgICAgICBzdG9yZTMyKFRydXN0ZWRJ
bW0zMigtMSksIEFkZHJlc3Mob3V0cHV0LCAoaSA8PCAxKSAqIHNpemVvZihpbnQpKSk7CkBAIC0y
OTc3LDYgKzM0NDcsMTEgQEAgcHVibGljOgogCiAgICAgICAgIGluaXRDYWxsRnJhbWUoKTsKIAor
I2lmZGVmIEpJVF9BTExfUEFSRU5TX0VYUFJFU1NJT05TCisgICAgICAgIGlmIChtX2NvbnRhaW5z
TmVzdGVkU3VicGF0dGVybnMpCisgICAgICAgICAgICBpbml0UGFyZW5Db250ZXh0RnJlZUxpc3Qo
KTsKKyNlbmRpZgorICAgICAgICAKICAgICAgICAgaWYgKG1fcGF0dGVybi5tX3NhdmVJbml0aWFs
U3RhcnRWYWx1ZSkgewogI2lmZGVmIEhBVkVfSU5JVElBTF9TVEFSVF9SRUcKICAgICAgICAgICAg
IG1vdmUoaW5kZXgsIGluaXRpYWxTdGFydCk7CkBAIC0yOTg1LDE4ICszNDYwLDEzIEBAIHB1Ymxp
YzoKICNlbmRpZgogICAgICAgICB9CiAKLSAgICAgICAgb3BDb21waWxlQm9keShtX3BhdHRlcm4u
bV9ib2R5KTsKLQotICAgICAgICBpZiAobV9zaG91bGRGYWxsQmFjaykgewotICAgICAgICAgICAg
aml0T2JqZWN0LnNldEZhbGxCYWNrKHRydWUpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0KICAgICAgICAgZ2VuZXJhdGUoKTsKICAgICAgICAgYmFja3RyYWNrKCk7CiAKICAgICAg
ICAgZ2VuZXJhdGVUcnlSZWFkVW5pY29kZUNoYXJhY3RlckhlbHBlcigpOwogCisgICAgICAgIGdl
bmVyYXRlSklURmFpbFJldHVybigpOworCiAgICAgICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcigq
dGhpcywgUkVHRVhQX0NPREVfSUQsIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CiAgICAgICAgIGlm
IChsaW5rQnVmZmVyLmRpZEZhaWxUb0FsbG9jYXRlKCkpIHsKICAgICAgICAgICAgIGppdE9iamVj
dC5zZXRGYWxsQmFjayh0cnVlKTsKQEAgLTMwNDAsNiArMzUxMCwxMiBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9kZWNvZGVTdXJyb2dhdGVQYWlyczsKICAgICBib29sIG1fdW5pY29kZUlnbm9yZUNh
c2U7CiAgICAgQ2Fub25pY2FsTW9kZSBtX2Nhbm9uaWNhbE1vZGU7CisjaWZkZWYgSklUX0FMTF9Q
QVJFTlNfRVhQUkVTU0lPTlMKKyAgICBib29sIG1fY29udGFpbnNOZXN0ZWRTdWJwYXR0ZXJuczsK
KyAgICBQYXJlbkNvbnRleHRTaXplcyBtX3BhcmVuQ29udGV4dFNpemVzOworI2VuZGlmCisgICAg
SnVtcExpc3QgbV9hYm9ydEV4ZWN1dGlvbjsKKyAgICBKdW1wTGlzdCBtX2hpdE1hdGNoTGltaXQ7
CiAgICAgVmVjdG9yPENhbGw+IG1fdHJ5UmVhZFVuaWNvZGVDaGFyYWN0ZXJDYWxsczsKICAgICBM
YWJlbCBtX3RyeVJlYWRVbmljb2RlQ2hhcmFjdGVyRW50cnk7CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUveWFyci9ZYXJySklULmgJKHJldmlzaW9uIDIyNTkxNCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS95YXJyL1lhcnJKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsMTEgQEAK
ICNkZWZpbmUgWUFSUl9DQUxMCiAjZW5kaWYKIAorI2lmIENQVShBUk02NCkgfHwgKENQVShYODZf
NjQpICYmICFPUyhXSU5ET1dTKSkKKyNkZWZpbmUgSklUX0FMTF9QQVJFTlNfRVhQUkVTU0lPTlMK
K2NvbnN0ZXhwciBzaXplX3QgcGF0dGVybkNvbnRleHRCdWZmZXJTaXplID0gODE5MjsgLy8gU3Bh
Y2UgY2FsbGVyIGFsbG9jYXRlcyB0byBzYXZlIG5lc3RlZCBwYXJlbnRoZXNpcyBjb250ZXh0Cisj
ZW5kaWYKKwogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIFZNOwpAQCAtNDcsMTAgKzUyLDE3IEBA
IG5hbWVzcGFjZSBZYXJyIHsKIAogY2xhc3MgWWFyckNvZGVCbG9jayB7CiAjaWYgQ1BVKFg4Nl82
NCkgfHwgQ1BVKEFSTTY0KQorI2lmZGVmIEpJVF9BTExfUEFSRU5TX0VYUFJFU1NJT05TCisgICAg
dHlwZWRlZiBNYXRjaFJlc3VsdCAoKllhcnJKSVRDb2RlOCkoY29uc3QgTENoYXIqIGlucHV0LCB1
bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBpbnQqIG91dHB1dCwgdm9pZCogZnJlZVBh
cmVuQ29udGV4dCwgdW5zaWduZWQgcGFyZW5Db250ZXh0U2l6ZSkgWUFSUl9DQUxMOworICAgIHR5
cGVkZWYgTWF0Y2hSZXN1bHQgKCpZYXJySklUQ29kZTE2KShjb25zdCBVQ2hhciogaW5wdXQsIHVu
c2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGludCogb3V0cHV0LCB2b2lkKiBmcmVlUGFy
ZW5Db250ZXh0LCB1bnNpZ25lZCBwYXJlbkNvbnRleHRTaXplKSBZQVJSX0NBTEw7CisgICAgdHlw
ZWRlZiBNYXRjaFJlc3VsdCAoKllhcnJKSVRDb2RlTWF0Y2hPbmx5OCkoY29uc3QgTENoYXIqIGlu
cHV0LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCB2b2lkKiwgdm9pZCogZnJlZVBh
cmVuQ29udGV4dCwgdW5zaWduZWQgcGFyZW5Db250ZXh0U2l6ZSkgWUFSUl9DQUxMOworICAgIHR5
cGVkZWYgTWF0Y2hSZXN1bHQgKCpZYXJySklUQ29kZU1hdGNoT25seTE2KShjb25zdCBVQ2hhciog
aW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIHZvaWQqLCB2b2lkKiBmcmVl
UGFyZW5Db250ZXh0LCB1bnNpZ25lZCBwYXJlbkNvbnRleHRTaXplKSBZQVJSX0NBTEw7CisjZWxz
ZQogICAgIHR5cGVkZWYgTWF0Y2hSZXN1bHQgKCpZYXJySklUQ29kZTgpKGNvbnN0IExDaGFyKiBp
bnB1dCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgaW50KiBvdXRwdXQpIFlBUlJf
Q0FMTDsKICAgICB0eXBlZGVmIE1hdGNoUmVzdWx0ICgqWWFyckpJVENvZGUxNikoY29uc3QgVUNo
YXIqIGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBpbnQqIG91dHB1dCkg
WUFSUl9DQUxMOwogICAgIHR5cGVkZWYgTWF0Y2hSZXN1bHQgKCpZYXJySklUQ29kZU1hdGNoT25s
eTgpKGNvbnN0IExDaGFyKiBpbnB1dCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCkg
WUFSUl9DQUxMOwogICAgIHR5cGVkZWYgTWF0Y2hSZXN1bHQgKCpZYXJySklUQ29kZU1hdGNoT25s
eTE2KShjb25zdCBVQ2hhciogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgp
IFlBUlJfQ0FMTDsKKyNlbmRpZgogI2Vsc2UKICAgICB0eXBlZGVmIEVuY29kZWRNYXRjaFJlc3Vs
dCAoKllhcnJKSVRDb2RlOCkoY29uc3QgTENoYXIqIGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5z
aWduZWQgbGVuZ3RoLCBpbnQqIG91dHB1dCkgWUFSUl9DQUxMOwogICAgIHR5cGVkZWYgRW5jb2Rl
ZE1hdGNoUmVzdWx0ICgqWWFyckpJVENvZGUxNikoY29uc3QgVUNoYXIqIGlucHV0LCB1bnNpZ25l
ZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBpbnQqIG91dHB1dCkgWUFSUl9DQUxMOwpAQCAtODEs
NiArOTMsMzEgQEAgcHVibGljOgogICAgIHZvaWQgc2V0OEJpdENvZGVNYXRjaE9ubHkoTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIG1hdGNoT25seSkgeyBtX21hdGNoT25seTggPSBtYXRjaE9ubHk7IH0K
ICAgICB2b2lkIHNldDE2Qml0Q29kZU1hdGNoT25seShNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbWF0
Y2hPbmx5KSB7IG1fbWF0Y2hPbmx5MTYgPSBtYXRjaE9ubHk7IH0KIAorI2lmZGVmIEpJVF9BTExf
UEFSRU5TX0VYUFJFU1NJT05TCisgICAgTWF0Y2hSZXN1bHQgZXhlY3V0ZShjb25zdCBMQ2hhciog
aW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGludCogb3V0cHV0LCB2b2lk
KiBmcmVlUGFyZW5Db250ZXh0LCB1bnNpZ25lZCBwYXJlbkNvbnRleHRTaXplKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKGhhczhCaXRDb2RlKCkpOworICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQo
cmVpbnRlcnByZXRfY2FzdDxZYXJySklUQ29kZTg+KG1fcmVmOC5jb2RlKCkuZXhlY3V0YWJsZUFk
ZHJlc3MoKSkoaW5wdXQsIHN0YXJ0LCBsZW5ndGgsIG91dHB1dCwgZnJlZVBhcmVuQ29udGV4dCwg
cGFyZW5Db250ZXh0U2l6ZSkpOworICAgIH0KKworICAgIE1hdGNoUmVzdWx0IGV4ZWN1dGUoY29u
c3QgVUNoYXIqIGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBpbnQqIG91
dHB1dCwgdm9pZCogZnJlZVBhcmVuQ29udGV4dCwgdW5zaWduZWQgcGFyZW5Db250ZXh0U2l6ZSkK
KyAgICB7CisgICAgICAgIEFTU0VSVChoYXMxNkJpdENvZGUoKSk7CisgICAgICAgIHJldHVybiBN
YXRjaFJlc3VsdChyZWludGVycHJldF9jYXN0PFlhcnJKSVRDb2RlMTY+KG1fcmVmMTYuY29kZSgp
LmV4ZWN1dGFibGVBZGRyZXNzKCkpKGlucHV0LCBzdGFydCwgbGVuZ3RoLCBvdXRwdXQsIGZyZWVQ
YXJlbkNvbnRleHQsIHBhcmVuQ29udGV4dFNpemUpKTsKKyAgICB9CisKKyAgICBNYXRjaFJlc3Vs
dCBleGVjdXRlKGNvbnN0IExDaGFyKiBpbnB1dCwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxl
bmd0aCwgdm9pZCogZnJlZVBhcmVuQ29udGV4dCwgdW5zaWduZWQgcGFyZW5Db250ZXh0U2l6ZSkK
KyAgICB7CisgICAgICAgIEFTU0VSVChoYXM4Qml0Q29kZU1hdGNoT25seSgpKTsKKyAgICAgICAg
cmV0dXJuIE1hdGNoUmVzdWx0KHJlaW50ZXJwcmV0X2Nhc3Q8WWFyckpJVENvZGVNYXRjaE9ubHk4
PihtX21hdGNoT25seTguY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKGlucHV0LCBzdGFydCwg
bGVuZ3RoLCAwLCBmcmVlUGFyZW5Db250ZXh0LCBwYXJlbkNvbnRleHRTaXplKSk7CisgICAgfQor
CisgICAgTWF0Y2hSZXN1bHQgZXhlY3V0ZShjb25zdCBVQ2hhciogaW5wdXQsIHVuc2lnbmVkIHN0
YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIHZvaWQqIGZyZWVQYXJlbkNvbnRleHQsIHVuc2lnbmVkIHBh
cmVuQ29udGV4dFNpemUpCisgICAgeworICAgICAgICBBU1NFUlQoaGFzMTZCaXRDb2RlTWF0Y2hP
bmx5KCkpOworICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQocmVpbnRlcnByZXRfY2FzdDxZYXJy
SklUQ29kZU1hdGNoT25seTE2PihtX21hdGNoT25seTE2LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVz
cygpKShpbnB1dCwgc3RhcnQsIGxlbmd0aCwgMCwgZnJlZVBhcmVuQ29udGV4dCwgcGFyZW5Db250
ZXh0U2l6ZSkpOworICAgIH0KKyNlbHNlCiAgICAgTWF0Y2hSZXN1bHQgZXhlY3V0ZShjb25zdCBM
Q2hhciogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGludCogb3V0cHV0
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGhhczhCaXRDb2RlKCkpOwpAQCAtMTA0LDYgKzE0MSw3
IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKGhhczE2Qml0Q29kZU1hdGNoT25seSgpKTsKICAg
ICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0KHJlaW50ZXJwcmV0X2Nhc3Q8WWFyckpJVENvZGVNYXRj
aE9ubHkxNj4obV9tYXRjaE9ubHkxNi5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkoaW5wdXQs
IHN0YXJ0LCBsZW5ndGgpKTsKICAgICB9CisjZW5kaWYKIAogI2lmIEVOQUJMRShSRUdFWFBfVFJB
Q0lORykKICAgICB2b2lkICpnZXQ4Qml0TWF0Y2hPbmx5QWRkcigpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCShyZXZpc2lvbiAyMjU5MTQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTgyOCw4ICs4MjgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgLy8gTm90ZTogZm9y
IGZpeGVkIG9uY2UgcGFyZW50aGVzZXMgd2Ugd2lsbCBlbnN1cmUgYXQgbGVhc3QgdGhlIG1pbmlt
dW0gaXMgYXZhaWxhYmxlOyBvdGhlcnMgYXJlIG9uIHRoZWlyIG93bi4KICAgICAgICAgICAgICAg
ICB0ZXJtLmZyYW1lTG9jYXRpb24gPSBjdXJyZW50Q2FsbEZyYW1lU2l6ZTsKICAgICAgICAgICAg
ICAgICBpZiAodGVybS5xdWFudGl0eU1heENvdW50ID09IDEgJiYgIXRlcm0ucGFyZW50aGVzZXMu
aXNDb3B5KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtLnF1YW50aXR5VHlwZSAhPSBR
dWFudGlmaWVyRml4ZWRDb3VudCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDYWxs
RnJhbWVTaXplICs9IFlhcnJTdGFja1NwYWNlRm9yQmFja1RyYWNrSW5mb1BhcmVudGhlc2VzT25j
ZTsKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudENhbGxGcmFtZVNpemUgKz0gWWFyclN0YWNr
U3BhY2VGb3JCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXNPbmNlOwogICAgICAgICAgICAgICAgICAg
ICBlcnJvciA9IHNldHVwRGlzanVuY3Rpb25PZmZzZXRzKHRlcm0ucGFyZW50aGVzZXMuZGlzanVu
Y3Rpb24sIGN1cnJlbnRDYWxsRnJhbWVTaXplLCBjdXJyZW50SW5wdXRQb3NpdGlvbi51bnNhZmVH
ZXQoKSwgY3VycmVudENhbGxGcmFtZVNpemUpOwogICAgICAgICAgICAgICAgICAgICBpZiAoZXJy
b3IpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7CkBAIC04NDUsMTEgKzg0
NCwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIHRlcm0uaW5wdXRQb3NpdGlvbiA9
IGN1cnJlbnRJbnB1dFBvc2l0aW9uLnVuc2FmZUdldCgpOwogICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICAgICAgIHRlcm0uaW5wdXRQb3NpdGlvbiA9IGN1cnJlbnRJbnB1
dFBvc2l0aW9uLnVuc2FmZUdldCgpOwotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpZ25v
cmVkQ2FsbEZyYW1lU2l6ZTsKLSAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBzZXR1cERpc2p1
bmN0aW9uT2Zmc2V0cyh0ZXJtLnBhcmVudGhlc2VzLmRpc2p1bmN0aW9uLCAwLCBjdXJyZW50SW5w
dXRQb3NpdGlvbi51bnNhZmVHZXQoKSwgaWdub3JlZENhbGxGcmFtZVNpemUpOworICAgICAgICAg
ICAgICAgICAgICBjdXJyZW50Q2FsbEZyYW1lU2l6ZSArPSBZYXJyU3RhY2tTcGFjZUZvckJhY2tU
cmFja0luZm9QYXJlbnRoZXNlczsKKyAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBzZXR1cERp
c2p1bmN0aW9uT2Zmc2V0cyh0ZXJtLnBhcmVudGhlc2VzLmRpc2p1bmN0aW9uLCBjdXJyZW50Q2Fs
bEZyYW1lU2l6ZSwgY3VycmVudElucHV0UG9zaXRpb24udW5zYWZlR2V0KCksIGN1cnJlbnRDYWxs
RnJhbWVTaXplKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yKQogICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q2Fs
bEZyYW1lU2l6ZSArPSBZYXJyU3RhY2tTcGFjZUZvckJhY2tUcmFja0luZm9QYXJlbnRoZXNlczsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgLy8gRml4ZWQgY291bnQgb2YgMSBj
b3VsZCBiZSBhY2NlcHRlZCwgaWYgdGhleSBoYXZlIGEgZml4ZWQgc2l6ZSAqQU5EKiBpZiBhbGwg
YWx0ZXJuYXRpdmVzIGFyZSBvZiB0aGUgc2FtZSBsZW5ndGguCiAgICAgICAgICAgICAgICAgYWx0
ZXJuYXRpdmUtPm1faGFzRml4ZWRTaXplID0gZmFsc2U7CkBAIC0xMTg1LDE0ICsxMTgzLDE0IEBA
IFlhcnJQYXR0ZXJuOjpZYXJyUGF0dGVybihjb25zdCBTdHJpbmcmIHAKICAgICAqZXJyb3IgPSBj
b21waWxlKHBhdHRlcm4sIHN0YWNrTGltaXQpOwogfQogCi1zdGF0aWMgdm9pZCBpbmRlbnRGb3JO
ZXN0aW5nTGV2ZWwoUHJpbnRTdHJlYW0mIG91dCwgdW5zaWduZWQgbmVzdGluZ0RlcHRoKQordm9p
ZCBpbmRlbnRGb3JOZXN0aW5nTGV2ZWwoUHJpbnRTdHJlYW0mIG91dCwgdW5zaWduZWQgbmVzdGlu
Z0RlcHRoKQogewogICAgIG91dC5wcmludCgiICAgICIpOwogICAgIGZvciAoOyBuZXN0aW5nRGVw
dGg7IC0tbmVzdGluZ0RlcHRoKQogICAgICAgICBvdXQucHJpbnQoIiAgIik7CiB9CiAKLXN0YXRp
YyB2b2lkIGR1bXBVQ2hhcjMyKFByaW50U3RyZWFtJiBvdXQsIFVDaGFyMzIgYykKK3ZvaWQgZHVt
cFVDaGFyMzIoUHJpbnRTdHJlYW0mIG91dCwgVUNoYXIzMiBjKQogewogICAgIGlmIChjID49ICcg
JyYmIGMgPD0gMHhmZikKICAgICAgICAgb3V0LnByaW50ZigiJyVjJyIsIHN0YXRpY19jYXN0PGNo
YXI+KGMpKTsKQEAgLTEyMDAsNiArMTE5OCw3OSBAQCBzdGF0aWMgdm9pZCBkdW1wVUNoYXIzMihQ
cmludFN0cmVhbSYgb3V0CiAgICAgICAgIG91dC5wcmludGYoIjB4JTA0eCIsIGMpOwogfQogCit2
b2lkIGR1bXBDaGFyYWN0ZXJDbGFzcyhQcmludFN0cmVhbSYgb3V0LCBZYXJyUGF0dGVybiogcGF0
dGVybiwgQ2hhcmFjdGVyQ2xhc3MqIGNoYXJhY3RlckNsYXNzKQoreworICAgIGlmIChjaGFyYWN0
ZXJDbGFzcyA9PSBwYXR0ZXJuLT5hbnlDaGFyYWN0ZXJDbGFzcygpKQorICAgICAgICBvdXQucHJp
bnQoIjxhbnkgY2hhcmFjdGVyPiIpOworICAgIGVsc2UgaWYgKGNoYXJhY3RlckNsYXNzID09IHBh
dHRlcm4tPm5ld2xpbmVDaGFyYWN0ZXJDbGFzcygpKQorICAgICAgICBvdXQucHJpbnQoIjxuZXds
aW5lPiIpOworICAgIGVsc2UgaWYgKGNoYXJhY3RlckNsYXNzID09IHBhdHRlcm4tPmRpZ2l0c0No
YXJhY3RlckNsYXNzKCkpCisgICAgICAgIG91dC5wcmludCgiPGRpZ2l0cz4iKTsKKyAgICBlbHNl
IGlmIChjaGFyYWN0ZXJDbGFzcyA9PSBwYXR0ZXJuLT5zcGFjZXNDaGFyYWN0ZXJDbGFzcygpKQor
ICAgICAgICBvdXQucHJpbnQoIjx3aGl0ZXNwYWNlPiIpOworICAgIGVsc2UgaWYgKGNoYXJhY3Rl
ckNsYXNzID09IHBhdHRlcm4tPndvcmRjaGFyQ2hhcmFjdGVyQ2xhc3MoKSkKKyAgICAgICAgb3V0
LnByaW50KCI8d29yZD4iKTsKKyAgICBlbHNlIGlmIChjaGFyYWN0ZXJDbGFzcyA9PSBwYXR0ZXJu
LT53b3JkVW5pY29kZUlnbm9yZUNhc2VDaGFyQ2hhcmFjdGVyQ2xhc3MoKSkKKyAgICAgICAgb3V0
LnByaW50KCI8dW5pY29kZSBpZ25vcmUgY2FzZT4iKTsKKyAgICBlbHNlIGlmIChjaGFyYWN0ZXJD
bGFzcyA9PSBwYXR0ZXJuLT5ub25kaWdpdHNDaGFyYWN0ZXJDbGFzcygpKQorICAgICAgICBvdXQu
cHJpbnQoIjxub24tZGlnaXRzPiIpOworICAgIGVsc2UgaWYgKGNoYXJhY3RlckNsYXNzID09IHBh
dHRlcm4tPm5vbnNwYWNlc0NoYXJhY3RlckNsYXNzKCkpCisgICAgICAgIG91dC5wcmludCgiPG5v
bi13aGl0ZXNwYWNlPiIpOworICAgIGVsc2UgaWYgKGNoYXJhY3RlckNsYXNzID09IHBhdHRlcm4t
Pm5vbndvcmRjaGFyQ2hhcmFjdGVyQ2xhc3MoKSkKKyAgICAgICAgb3V0LnByaW50KCI8bm9uLXdv
cmQ+Iik7CisgICAgZWxzZSBpZiAoY2hhcmFjdGVyQ2xhc3MgPT0gcGF0dGVybi0+bm9ud29yZFVu
aWNvZGVJZ25vcmVDYXNlQ2hhckNoYXJhY3RlckNsYXNzKCkpCisgICAgICAgIG91dC5wcmludCgi
PHVuaWNvZGUgbm9uLWlnbm9yZSBjYXNlPiIpOworICAgIGVsc2UgeworICAgICAgICBib29sIG5l
ZWRNYXRjaGVzUmFuZ2VzU2VwZXJhdG9yID0gZmFsc2U7CisKKyAgICAgICAgYXV0byBkdW1wTWF0
Y2hlcyA9IFsmXSAoY29uc3QgY2hhciogcHJlZml4LCBWZWN0b3I8VUNoYXIzMj4gbWF0Y2hlcykg
eworICAgICAgICAgICAgc2l6ZV90IG1hdGNoZXNTaXplID0gbWF0Y2hlcy5zaXplKCk7CisgICAg
ICAgICAgICBpZiAobWF0Y2hlc1NpemUpIHsKKyAgICAgICAgICAgICAgICBpZiAobmVlZE1hdGNo
ZXNSYW5nZXNTZXBlcmF0b3IpCisgICAgICAgICAgICAgICAgICAgIG91dC5wcmludCgiLCIpOwor
ICAgICAgICAgICAgICAgIG5lZWRNYXRjaGVzUmFuZ2VzU2VwZXJhdG9yID0gdHJ1ZTsKKworICAg
ICAgICAgICAgICAgIG91dC5wcmludChwcmVmaXgsICI6KCIpOworICAgICAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF0Y2hlc1NpemU7ICsraSkgeworICAgICAgICAgICAgICAg
ICAgICBpZiAoaSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wcmludCgiLCIpOworICAg
ICAgICAgICAgICAgICAgICBkdW1wVUNoYXIzMihvdXQsIG1hdGNoZXNbaV0pOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBvdXQucHJpbnQoIikiKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfTsKKworICAgICAgICBhdXRvIGR1bXBSYW5nZXMgPSBbJl0gKGNvbnN0IGNoYXIq
IHByZWZpeCwgVmVjdG9yPENoYXJhY3RlclJhbmdlPiByYW5nZXMpIHsKKyAgICAgICAgICAgIHNp
emVfdCByYW5nZVNpemUgPSByYW5nZXMuc2l6ZSgpOworICAgICAgICAgICAgaWYgKHJhbmdlU2l6
ZSkgeworICAgICAgICAgICAgICAgIGlmIChuZWVkTWF0Y2hlc1Jhbmdlc1NlcGVyYXRvcikKKyAg
ICAgICAgICAgICAgICAgICAgb3V0LnByaW50KCIsIik7CisgICAgICAgICAgICAgICAgbmVlZE1h
dGNoZXNSYW5nZXNTZXBlcmF0b3IgPSB0cnVlOworCisgICAgICAgICAgICAgICAgb3V0LnByaW50
KHByZWZpeCwgIiByYW5nZXM6KCIpOworICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgcmFuZ2VTaXplOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGkpCisgICAg
ICAgICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiwiKTsKKyAgICAgICAgICAgICAgICAgICAg
Q2hhcmFjdGVyUmFuZ2UgcmFuZ2UgPSByYW5nZXNbaV07CisgICAgICAgICAgICAgICAgICAgIG91
dC5wcmludCgiKCIpOworICAgICAgICAgICAgICAgICAgICBkdW1wVUNoYXIzMihvdXQsIHJhbmdl
LmJlZ2luKTsKKyAgICAgICAgICAgICAgICAgICAgb3V0LnByaW50KCIuLiIpOworICAgICAgICAg
ICAgICAgICAgICBkdW1wVUNoYXIzMihvdXQsIHJhbmdlLmVuZCk7CisgICAgICAgICAgICAgICAg
ICAgIG91dC5wcmludCgiKSIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBv
dXQucHJpbnQoIikiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBvdXQu
cHJpbnQoIlsiKTsKKyAgICAgICAgZHVtcE1hdGNoZXMoIkFTQ0lJIiwgY2hhcmFjdGVyQ2xhc3Mt
Pm1fbWF0Y2hlcyk7CisgICAgICAgIGR1bXBSYW5nZXMoIkFTQ0lJIiwgY2hhcmFjdGVyQ2xhc3Mt
Pm1fcmFuZ2VzKTsKKyAgICAgICAgZHVtcE1hdGNoZXMoIlVuaWNvZGUiLCBjaGFyYWN0ZXJDbGFz
cy0+bV9tYXRjaGVzVW5pY29kZSk7CisgICAgICAgIGR1bXBSYW5nZXMoIlVuaWNvZGUiLCBjaGFy
YWN0ZXJDbGFzcy0+bV9yYW5nZXNVbmljb2RlKTsKKyAgICAgICAgb3V0LnByaW50KCJdIik7Cisg
ICAgfQorfQorCiB2b2lkIFBhdHRlcm5BbHRlcm5hdGl2ZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0
LCBZYXJyUGF0dGVybiogdGhpc1BhdHRlcm4sIHVuc2lnbmVkIG5lc3RpbmdEZXB0aCkKIHsKICAg
ICBvdXQucHJpbnQoIm1pbmltdW0gc2l6ZTogIiwgbV9taW5pbXVtU2l6ZSk7CkBAIC0xMjM5LDgg
KzEzMTAsMTAgQEAgdm9pZCBQYXR0ZXJuVGVybTo6ZHVtcChQcmludFN0cmVhbSYgb3V0LAogewog
ICAgIGluZGVudEZvck5lc3RpbmdMZXZlbChvdXQsIG5lc3RpbmdEZXB0aCk7CiAKLSAgICBpZiAo
aW52ZXJ0KCkgJiYgKHR5cGUgIT0gVHlwZVBhcmVudGhlc2VzU3VicGF0dGVybiAmJiB0eXBlICE9
IFR5cGVQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uKSkKLSAgICAgICAgb3V0LnByaW50KCJub3QgIik7
CisgICAgaWYgKHR5cGUgIT0gVHlwZVBhcmVudGhlc2VzU3VicGF0dGVybiAmJiB0eXBlICE9IFR5
cGVQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uKSB7CisgICAgICAgIGlmIChpbnZlcnQoKSkKKyAgICAg
ICAgICAgIG91dC5wcmludCgibm90ICIpOworICAgIH0KIAogICAgIHN3aXRjaCAodHlwZSkgewog
ICAgIGNhc2UgVHlwZUFzc2VydGlvbkJPTDoKQEAgLTEyNTQsNiArMTMyNyw3IEBAIHZvaWQgUGF0
dGVyblRlcm06OmR1bXAoUHJpbnRTdHJlYW0mIG91dCwKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBUeXBlUGF0dGVybkNoYXJhY3RlcjoKICAgICAgICAgb3V0LnByaW50ZigiY2hhcmFjdGVyICIp
OworICAgICAgICBvdXQucHJpbnRmKCJpbnB1dFBvc2l0aW9uICV1ICIsIGlucHV0UG9zaXRpb24p
OwogICAgICAgICBpZiAodGhpc1BhdHRlcm4tPmlnbm9yZUNhc2UoKSAmJiBpc0FTQ0lJQWxwaGEo
cGF0dGVybkNoYXJhY3RlcikpIHsKICAgICAgICAgICAgIGR1bXBVQ2hhcjMyKG91dCwgdG9BU0NJ
SVVwcGVyKHBhdHRlcm5DaGFyYWN0ZXIpKTsKICAgICAgICAgICAgIG91dC5wcmludCgiLyIpOwpA
QCAtMTM3NSwxNiArMTQ0OSwxNyBAQCB2b2lkIFBhdHRlcm5UZXJtOjpkdW1wKFByaW50U3RyZWFt
JiBvdXQsCiAgICAgICAgIGlmIChwYXJlbnRoZXNlcy5pc1Rlcm1pbmFsKQogICAgICAgICAgICAg
b3V0LnByaW50KCIsdGVybWluYWwiKTsKIAotICAgICAgICBpZiAocXVhbnRpdHlNYXhDb3VudCAh
PSAxIHx8IHBhcmVudGhlc2VzLmlzQ29weSB8fCBxdWFudGl0eVR5cGUgIT0gUXVhbnRpZmllckZp
eGVkQ291bnQpCi0gICAgICAgICAgICBvdXQucHJpbnRsbigiLGZyYW1lIGxvY2F0aW9uICIsIGZy
YW1lTG9jYXRpb24pOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBvdXQucHJpbnRsbigpOwor
ICAgICAgICBvdXQucHJpbnRsbigiLGZyYW1lIGxvY2F0aW9uICIsIGZyYW1lTG9jYXRpb24pOwog
CiAgICAgICAgIGlmIChwYXJlbnRoZXNlcy5kaXNqdW5jdGlvbi0+bV9hbHRlcm5hdGl2ZXMuc2l6
ZSgpID4gMSkgewogICAgICAgICAgICAgaW5kZW50Rm9yTmVzdGluZ0xldmVsKG91dCwgbmVzdGlu
Z0RlcHRoICsgMSk7CiAgICAgICAgICAgICB1bnNpZ25lZCBhbHRlcm5hdGl2ZUZyYW1lTG9jYXRp
b24gPSBmcmFtZUxvY2F0aW9uOwotICAgICAgICAgICAgaWYgKHF1YW50aXR5VHlwZSAhPSBRdWFu
dGlmaWVyRml4ZWRDb3VudCkKKyAgICAgICAgICAgIGlmIChxdWFudGl0eU1heENvdW50ID09IDEg
JiYgIXBhcmVudGhlc2VzLmlzQ29weSkKICAgICAgICAgICAgICAgICBhbHRlcm5hdGl2ZUZyYW1l
TG9jYXRpb24gKz0gWWFyclN0YWNrU3BhY2VGb3JCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXNPbmNl
OworICAgICAgICAgICAgZWxzZSBpZiAocGFyZW50aGVzZXMuaXNUZXJtaW5hbCkKKyAgICAgICAg
ICAgICAgICBhbHRlcm5hdGl2ZUZyYW1lTG9jYXRpb24gKz0gWWFyclN0YWNrU3BhY2VGb3JCYWNr
VHJhY2tJbmZvUGFyZW50aGVzZXNUZXJtaW5hbDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBhbHRlcm5hdGl2ZUZyYW1lTG9jYXRpb24gKz0gWWFyclN0YWNrU3BhY2VGb3JCYWNr
VHJhY2tJbmZvUGFyZW50aGVzZXM7CiAgICAgICAgICAgICBvdXQucHJpbnRsbigiYWx0ZXJuYXRp
dmUgbGlzdCxmcmFtZSBsb2NhdGlvbiAiLCBhbHRlcm5hdGl2ZUZyYW1lTG9jYXRpb24pOwogICAg
ICAgICB9CiAKQEAgLTE0NjEsNiArMTUzNiw4IEBAIHZvaWQgWWFyclBhdHRlcm46OmR1bXBQYXR0
ZXJuKFByaW50U3RyZWEKICAgICAgICAgb3V0LnByaW50KCIpIik7CiAgICAgfQogICAgIG91dC5w
cmludCgiOlxuIik7CisgICAgaWYgKG1fYm9keS0+bV9jYWxsRnJhbWVTaXplKQorICAgICAgICBv
dXQucHJpbnQoIiAgICBjYWxsZnJhbWUgc2l6ZTogIiwgbV9ib2R5LT5tX2NhbGxGcmFtZVNpemUs
ICJcbiIpOwogICAgIG1fYm9keS0+ZHVtcChvdXQsIHRoaXMpOwogfQogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgJKHJldmlzaW9uIDIyNTkxNCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgJKHdvcmtpbmcgY29weSkKQEAg
LTIyNyw3ICsyMjcsMTMgQEAgc3RydWN0IFBhdHRlcm5UZXJtIHsKICAgICB7CiAgICAgICAgIHJl
dHVybiBtX2NhcHR1cmU7CiAgICAgfQotICAgIAorCisgICAgYm9vbCBjb250YWluc0FueUNhcHR1
cmVzKCkKKyAgICB7CisgICAgICAgIEFTU0VSVCh0aGlzLT50eXBlID09IFR5cGVQYXJlbnRoZXNl
c1N1YnBhdHRlcm4pOworICAgICAgICByZXR1cm4gcGFyZW50aGVzZXMubGFzdFN1YnBhdHRlcm5J
ZCA+PSBwYXJlbnRoZXNlcy5zdWJwYXR0ZXJuSWQ7CisgICAgfQorCiAgICAgdm9pZCBxdWFudGlm
eSh1bnNpZ25lZCBjb3VudCwgUXVhbnRpZmllclR5cGUgdHlwZSkKICAgICB7CiAgICAgICAgIHF1
YW50aXR5TWluQ291bnQgPSAwOwpAQCAtNTQ5LDYgKzU1NSwxMCBAQCBwcml2YXRlOgogICAgIEhh
c2hNYXA8dW5zaWduZWQsIENoYXJhY3RlckNsYXNzKj4gdW5pY29kZVByb3BlcnRpZXNDYWNoZWQ7
CiB9OwogCisgICAgdm9pZCBpbmRlbnRGb3JOZXN0aW5nTGV2ZWwoUHJpbnRTdHJlYW0mLCB1bnNp
Z25lZCk7CisgICAgdm9pZCBkdW1wVUNoYXIzMihQcmludFN0cmVhbSYsIFVDaGFyMzIpOworICAg
IHZvaWQgZHVtcENoYXJhY3RlckNsYXNzKFByaW50U3RyZWFtJiwgWWFyclBhdHRlcm4qLCBDaGFy
YWN0ZXJDbGFzcyopOworCiAgICAgc3RydWN0IEJhY2tUcmFja0luZm9QYXR0ZXJuQ2hhcmFjdGVy
IHsKICAgICAgICAgdWludHB0cl90IGJlZ2luOyAvLyBPbmx5IG5lZWRlZCBmb3IgdW5pY29kZSBw
YXR0ZXJucwogICAgICAgICB1aW50cHRyX3QgbWF0Y2hBbW91bnQ7CkBAIC01NzQsOSArNTg0LDkg
QEAgcHJpdmF0ZToKICAgICB9OwogCiAgICAgc3RydWN0IEJhY2tUcmFja0luZm9BbHRlcm5hdGl2
ZSB7Ci0gICAgICAgIHVpbnRwdHJfdCBvZmZzZXQ7Ci0KLSAgICAgICAgc3RhdGljIHVuc2lnbmVk
IG9mZnNldEluZGV4KCkgeyByZXR1cm4gb2Zmc2V0b2YoQmFja1RyYWNrSW5mb0FsdGVybmF0aXZl
LCBvZmZzZXQpIC8gc2l6ZW9mKHVpbnRwdHJfdCk7IH0KKyAgICAgICAgdW5pb24geworICAgICAg
ICAgICAgdWludHB0cl90IG9mZnNldDsKKyAgICAgICAgfTsKICAgICB9OwogCiAgICAgc3RydWN0
IEJhY2tUcmFja0luZm9QYXJlbnRoZXRpY2FsQXNzZXJ0aW9uIHsKQEAgLTU4Nyw4ICs1OTcsMTAg
QEAgcHJpdmF0ZToKIAogICAgIHN0cnVjdCBCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXNPbmNlIHsK
ICAgICAgICAgdWludHB0cl90IGJlZ2luOworICAgICAgICB1aW50cHRyX3QgcmV0dXJuQWRkcmVz
czsKIAogICAgICAgICBzdGF0aWMgdW5zaWduZWQgYmVnaW5JbmRleCgpIHsgcmV0dXJuIG9mZnNl
dG9mKEJhY2tUcmFja0luZm9QYXJlbnRoZXNlc09uY2UsIGJlZ2luKSAvIHNpemVvZih1aW50cHRy
X3QpOyB9CisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCByZXR1cm5BZGRyZXNzSW5kZXgoKSB7IHJl
dHVybiBvZmZzZXRvZihCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXNPbmNlLCByZXR1cm5BZGRyZXNz
KSAvIHNpemVvZih1aW50cHRyX3QpOyB9CiAgICAgfTsKIAogICAgIHN0cnVjdCBCYWNrVHJhY2tJ
bmZvUGFyZW50aGVzZXNUZXJtaW5hbCB7CkBAIC01OTcsNCArNjA5LDE2IEBAIHByaXZhdGU6CiAg
ICAgICAgIHN0YXRpYyB1bnNpZ25lZCBiZWdpbkluZGV4KCkgeyByZXR1cm4gb2Zmc2V0b2YoQmFj
a1RyYWNrSW5mb1BhcmVudGhlc2VzVGVybWluYWwsIGJlZ2luKSAvIHNpemVvZih1aW50cHRyX3Qp
OyB9CiAgICAgfTsKIAorICAgIHN0cnVjdCBCYWNrVHJhY2tJbmZvUGFyZW50aGVzZXMgeworICAg
ICAgICB1aW50cHRyX3QgYmVnaW47CisgICAgICAgIHVpbnRwdHJfdCByZXR1cm5BZGRyZXNzOwor
ICAgICAgICB1aW50cHRyX3QgbWF0Y2hBbW91bnQ7CisgICAgICAgIHVpbnRwdHJfdCBwYXJlbkNv
bnRleHRIZWFkOworCisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBiZWdpbkluZGV4KCkgeyByZXR1
cm4gb2Zmc2V0b2YoQmFja1RyYWNrSW5mb1BhcmVudGhlc2VzLCBiZWdpbikgLyBzaXplb2YodWlu
dHB0cl90KTsgfQorICAgICAgICBzdGF0aWMgdW5zaWduZWQgcmV0dXJuQWRkcmVzc0luZGV4KCkg
eyByZXR1cm4gb2Zmc2V0b2YoQmFja1RyYWNrSW5mb1BhcmVudGhlc2VzLCByZXR1cm5BZGRyZXNz
KSAvIHNpemVvZih1aW50cHRyX3QpOyB9CisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBtYXRjaEFt
b3VudEluZGV4KCkgeyByZXR1cm4gb2Zmc2V0b2YoQmFja1RyYWNrSW5mb1BhcmVudGhlc2VzLCBt
YXRjaEFtb3VudCkgLyBzaXplb2YodWludHB0cl90KTsgfQorICAgICAgICBzdGF0aWMgdW5zaWdu
ZWQgcGFyZW5Db250ZXh0SGVhZEluZGV4KCkgeyByZXR1cm4gb2Zmc2V0b2YoQmFja1RyYWNrSW5m
b1BhcmVudGhlc2VzLCBwYXJlbkNvbnRleHRIZWFkKSAvIHNpemVvZih1aW50cHRyX3QpOyB9Cisg
ICAgfTsKKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OllhcnIK
</data>

          </attachment>
      

    </bug>

</bugzilla>