<?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>165718</bug_id>
          
          <creation_ts>2016-12-09 22:08:45 -0800</creation_ts>
          <short_desc>Wasm should support call_indirect</short_desc>
          <delta_ts>2016-12-09 23:59:49 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1258595</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-12-09 22:08:45 -0800</bug_when>
    <thetext>Wasm should support call_indirect</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258598</commentid>
    <comment_count>1</comment_count>
      <attachid>296778</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-12-09 22:21:53 -0800</bug_when>
    <thetext>Created attachment 296778
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258599</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-09 22:24:28 -0800</bug_when>
    <thetext>This patch modifies one of the wasm.json files. Please ensure that any changes in one have been mirrored to the other. You can find the wasm.json files at &quot;Source/JavaScriptCore/wasm/wasm.json&quot; and &quot;JSTests/wasm/wasm.json&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258600</commentid>
    <comment_count>3</comment_count>
      <attachid>296779</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-12-09 22:26:31 -0800</bug_when>
    <thetext>Created attachment 296779
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258602</commentid>
    <comment_count>4</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-12-09 22:28:36 -0800</bug_when>
    <thetext>rdar://problem/29599153</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258606</commentid>
    <comment_count>5</comment_count>
      <attachid>296783</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-12-09 22:38:39 -0800</bug_when>
    <thetext>Created attachment 296783
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258611</commentid>
    <comment_count>6</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-12-09 23:13:25 -0800</bug_when>
    <thetext>Committed r209652: &lt;http://trac.webkit.org/changeset/209652&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258619</commentid>
    <comment_count>7</comment_count>
      <attachid>296783</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-12-09 23:59:49 -0800</bug_when>
    <thetext>Comment on attachment 296783
Patch for landing

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

&gt; Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:675
&gt; +                jit.call(params[0].gpr());

Why is this correct? params[0] is sometimes the return value of the patchpoint.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296778</attachid>
            <date>2016-12-09 22:21:53 -0800</date>
            <delta_ts>2016-12-09 22:26:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165718-20161209222109.patch</filename>
            <type>text/plain</type>
            <size>42772</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA5NjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MThkZDU4NjdlMDliNzFkYjE3ZDM2ZTg0NDJhNGE3OGQ2NjAxNzU1Li4yMzkxNDczMDQxNjFlZGI4
MjkyMGFhNTE3YTQ4N2M5OTMyMGY1ZGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NSBAQAorMjAxNi0xMi0wOSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBXYXNtIHNob3VsZCBzdXBwb3J0IGNhbGxfaW5kaXJlY3QKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTcxOAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRk
cyBzdXBwb3J0IGZvciBjYWxsX2luZGlyZWN0LiBUaGUgYmFzaWMgZnJhbWV3b3JrIGZvcgorICAg
ICAgICBhbiBpbmRpcmVjdCBjYWxsIGlzIHRoYXQgdGhlIG1vZHVsZSBob2xkcyBhIGJ1ZmZlciBj
b250YWluaW5nIGEKKyAgICAgICAgc3R1YiBmb3IgZWFjaCBmdW5jdGlvbiBpbiB0aGUgaW5kZXgg
c3BhY2UuIFdoZW5ldmVyIGEgZnVuY3Rpb24KKyAgICAgICAgbmVlZHMgdG8gZG8gYW4gaW5kaXJl
Y3QgY2FsbCBpdCBnZXRzIGEgaW5kZXggaW50byB0aGF0IHRhYmxlLiBJbgorICAgICAgICBvcmRl
ciB0byBlbnN1cmUgY2FsbF9pbmRpcmVjdCBpcyBjYWxsaW5nIGEgdmFsaWQgZnVuY3Rpb24gdGhl
CisgICAgICAgIGZ1bmN0aW9uSW5kZXhTcGFjZSBhbHNvIG5lZWRzIGEgcG9pbnRlciB0byBhIGNh
bm9uaWNhbGl6ZWQKKyAgICAgICAgc2lnbmF0dXJlLiBXaGVuIG1ha2luZyBhbiBpbmRpcmVjdCBj
YWxsLCB3ZSBmaXJzdCBjaGVjayB0aGUgaW5kZXgKKyAgICAgICAgaXMgaW4gcmFuZ2UsIHRoZW4g
Y2hlY2sgdGhlIHNpZ25hdHVyZSBtYXRjaGVzIHRoZSB2YWx1ZSB3ZSB3ZXJlIGdpdmVuLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBkaWZmZXJlbnRpYXRlcyBiZXR3ZWVuIEZ1bmN0aW9uSW5k
ZXhTcGFjZXMgYW5kCisgICAgICAgIEltbXV0YWJsZUZ1bmN0aW9uSW5kZXhTcGFjZXMuIFNpbmNl
IHdlIGRvbid0IGtub3cgdGhlIHNpemUgb2YgdGhlCisgICAgICAgIEZ1bmN0aW9uSW5kZXhTcGFj
ZSB3aGVuIHdlIHN0YXJ0IHBhcnNpbmcgd2UgbmVlZCB0byBiZSBhYmxlIHRvCisgICAgICAgIHJl
c2l6ZSB0aGUgSW5kZXhTcGFjZS4gSG93ZXZlciwgb25jZSB3ZSBoYXZlIGZpbmlzaGVkIHBhcnNp
bmcgYWxsCisgICAgICAgIHRoZSBzZWN0aW9ucyB3ZSB3YW50IHRvIHByZXZlbnQgYW4gcmVsb2Nh
dGlvbiBvZiB0aGUgZnVuY3Rpb24KKyAgICAgICAgaW5kZXggc3BhY2UgcG9pbnRlci4KKworICAg
ICAgICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpC
M0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdl
bmVyYXRvcjo6YWRkQ2FsbCk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFk
ZENhbGxJbmRpcmVjdCk6CisgICAgICAgIChKU0M6Oldhc206OmNyZWF0ZUpTVG9XYXNtV3JhcHBl
cik6CisgICAgICAgIChKU0M6Oldhc206OnBhcnNlQW5kQ29tcGlsZSk6CisgICAgICAgICogd2Fz
bS9XYXNtQjNJUkdlbmVyYXRvci5oOgorICAgICAgICAqIHdhc20vV2FzbUNhbGxpbmdDb252ZW50
aW9uLmg6CisgICAgICAgIChKU0M6Oldhc206OkNhbGxpbmdDb252ZW50aW9uOjpzZXR1cENhbGwp
OgorICAgICAgICAqIHdhc20vV2FzbUZvcm1hdC5oOgorICAgICAgICAqIHdhc20vV2FzbUZ1bmN0
aW9uUGFyc2VyLmg6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2VyOjpzZXRFcnJv
ck1lc3NhZ2UpOgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6
RnVuY3Rpb25QYXJzZXIpOgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvblBhcnNlcjxDb250
ZXh0Pjo6cGFyc2VFeHByZXNzaW9uKToKKyAgICAgICAgKiB3YXNtL1dhc21QbGFuLmNwcDoKKyAg
ICAgICAgKEpTQzo6V2FzbTo6UGxhbjo6cnVuKToKKyAgICAgICAgKiB3YXNtL1dhc21QbGFuLmg6
CisgICAgICAgIChKU0M6Oldhc206OlBsYW46OnRha2VGdW5jdGlvbkluZGV4U3BhY2UpOgorICAg
ICAgICAqIHdhc20vV2FzbVZhbGlkYXRlLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6VmFsaWRh
dGU6OmFkZENhbGxJbmRpcmVjdCk6CisgICAgICAgIChKU0M6Oldhc206OnZhbGlkYXRlRnVuY3Rp
b24pOgorICAgICAgICAqIHdhc20vV2FzbVZhbGlkYXRlLmg6CisgICAgICAgICogd2FzbS9qcy9K
U1dlYkFzc2VtYmx5TW9kdWxlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseU1vZHVs
ZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseU1vZHVsZTo6SlNXZWJBc3Nl
bWJseU1vZHVsZSk6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmg6Cisg
ICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlNb2R1bGU6OnNpZ25hdHVyZUZvckZ1bmN0aW9uSW5k
ZXhTcGFjZSk6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlNb2R1bGU6Om9mZnNldE9mRnVu
Y3Rpb25JbmRleFNwYWNlKToKKwogMjAxNi0xMi0wOSAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBh
cHBsZS5jb20+CiAKICAgICAgICAgV2ViQXNzZW1ibHkgSlMgQVBJOiBpbXBsZW1lbnQgc3RhcnQg
ZnVuY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lS
R2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJh
dG9yLmNwcAppbmRleCA4MjBlNTg4MTI2YTY3NjYyNTU0NzFmYzk2MDEzY2JhN2FiZTU5NGUyLi43
MDg1NjViZWM4ZWJjNWFjOWI5ODEyYTFiMzU3MGFjN2Q3NDNiMjcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCkBAIC00MCw2ICs0MCw4
IEBACiAjaW5jbHVkZSAiQjNWYXJpYWJsZVZhbHVlLmgiCiAjaW5jbHVkZSAiQjNXYXNtQWRkcmVz
c1ZhbHVlLmgiCiAjaW5jbHVkZSAiQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oIgorI2luY2x1ZGUg
IkpTV2ViQXNzZW1ibHlJbnN0YW5jZS5oIgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNb2R1bGUu
aCIKICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKICNpbmNsdWRlICJXYXNtQ2FsbGluZ0Nv
bnZlbnRpb24uaCIKICNpbmNsdWRlICJXYXNtRnVuY3Rpb25QYXJzZXIuaCIKQEAgLTEzMCw3ICsx
MzIsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3RleHByIEV4cHJlc3Npb25UeXBlIGVt
cHR5RXhwcmVzc2lvbiA9IG51bGxwdHI7CiAKLSAgICBCM0lSR2VuZXJhdG9yKE1lbW9yeUluZm9y
bWF0aW9uJiwgUHJvY2VkdXJlJiwgV2FzbUludGVybmFsRnVuY3Rpb24qLCBWZWN0b3I8VW5saW5r
ZWRXYXNtVG9XYXNtQ2FsbD4mKTsKKyAgICBCM0lSR2VuZXJhdG9yKGNvbnN0IE1lbW9yeUluZm9y
bWF0aW9uJiwgUHJvY2VkdXJlJiwgV2FzbUludGVybmFsRnVuY3Rpb24qLCBWZWN0b3I8VW5saW5r
ZWRXYXNtVG9XYXNtQ2FsbD4mLCBjb25zdCBJbW11dGFibGVGdW5jdGlvbkluZGV4U3BhY2UmKTsK
IAogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIGFkZEFyZ3VtZW50cyhjb25zdCBWZWN0b3I8
VHlwZT4mKTsKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRMb2NhbChUeXBlLCB1aW50
MzJfdCk7CkBAIC0xNjQsNyArMTY2LDkgQEAgcHVibGljOgogICAgIGJvb2wgV0FSTl9VTlVTRURf
UkVUVVJOIGVuZEJsb2NrKENvbnRyb2xFbnRyeSYsIEV4cHJlc3Npb25MaXN0JiBleHByZXNzaW9u
U3RhY2spOwogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIGFkZEVuZFRvVW5yZWFjaGFibGUo
Q29udHJvbEVudHJ5Jik7CiAKLSAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsKHVu
c2lnbmVkIGNhbGxlZUluZGV4LCBjb25zdCBTaWduYXR1cmUqLCBWZWN0b3I8RXhwcmVzc2lvblR5
cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAgICAvLyBDYWxscworICAgIGJv
b2wgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGwodWludDMyX3QgY2FsbGVlSW5kZXgsIGNvbnN0
IFNpZ25hdHVyZSosIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIEV4cHJlc3Npb25UeXBl
JiByZXN1bHQpOworICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGxJbmRpcmVjdChj
b25zdCBTaWduYXR1cmUqLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNzaW9u
VHlwZSYgcmVzdWx0KTsKIAogICAgIHZvaWQgZHVtcChjb25zdCBWZWN0b3I8Q29udHJvbEVudHJ5
PiYgY29udHJvbFN0YWNrLCBjb25zdCBFeHByZXNzaW9uTGlzdCYgZXhwcmVzc2lvblN0YWNrKTsK
IApAQCAtMTc5LDYgKzE4Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1bmlmeVZhbHVlc1dpdGhC
bG9jayhjb25zdCBFeHByZXNzaW9uTGlzdCYgcmVzdWx0U3RhY2ssIFJlc3VsdExpc3QmIHN0YWNr
KTsKICAgICBWYWx1ZSogemVyb0ZvclR5cGUoVHlwZSk7CiAKKyAgICBjb25zdCBJbW11dGFibGVG
dW5jdGlvbkluZGV4U3BhY2UmIG1fZnVuY3Rpb25JbmRleFNwYWNlOwogICAgIFByb2NlZHVyZSYg
bV9wcm9jOwogICAgIEJhc2ljQmxvY2sqIG1fY3VycmVudEJsb2NrOwogICAgIFZlY3RvcjxWYXJp
YWJsZSo+IG1fbG9jYWxzOwpAQCAtMTg2LDEwICsxOTEsMTIgQEAgcHJpdmF0ZToKICAgICBHUFJS
ZWcgbV9tZW1vcnlCYXNlR1BSOwogICAgIEdQUlJlZyBtX21lbW9yeVNpemVHUFI7CiAgICAgVmFs
dWUqIG1femVyb1ZhbHVlc1tudW1UeXBlc107CisgICAgVmFsdWUqIG1fZnVuY3Rpb25JbmRleFNw
YWNlVmFsdWU7CiB9OwogCi1CM0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9yKE1lbW9yeUluZm9y
bWF0aW9uJiBtZW1vcnksIFByb2NlZHVyZSYgcHJvY2VkdXJlLCBXYXNtSW50ZXJuYWxGdW5jdGlv
biogY29tcGlsYXRpb24sIFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYgdW5saW5rZWRX
YXNtVG9XYXNtQ2FsbHMpCi0gICAgOiBtX3Byb2MocHJvY2VkdXJlKQorQjNJUkdlbmVyYXRvcjo6
QjNJUkdlbmVyYXRvcihjb25zdCBNZW1vcnlJbmZvcm1hdGlvbiYgbWVtb3J5LCBQcm9jZWR1cmUm
IHByb2NlZHVyZSwgV2FzbUludGVybmFsRnVuY3Rpb24qIGNvbXBpbGF0aW9uLCBWZWN0b3I8VW5s
aW5rZWRXYXNtVG9XYXNtQ2FsbD4mIHVubGlua2VkV2FzbVRvV2FzbUNhbGxzLCBjb25zdCBJbW11
dGFibGVGdW5jdGlvbkluZGV4U3BhY2UmIGZ1bmN0aW9uSW5kZXhTcGFjZSkKKyAgICA6IG1fZnVu
Y3Rpb25JbmRleFNwYWNlKGZ1bmN0aW9uSW5kZXhTcGFjZSkKKyAgICAsIG1fcHJvYyhwcm9jZWR1
cmUpCiAgICAgLCBtX3VubGlua2VkV2FzbVRvV2FzbUNhbGxzKHVubGlua2VkV2FzbVRvV2FzbUNh
bGxzKQogewogICAgIG1fY3VycmVudEJsb2NrID0gbV9wcm9jLmFkZEJsb2NrKCk7CkBAIC0yMjQs
NiArMjMxLDggQEAgQjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcihNZW1vcnlJbmZvcm1hdGlv
biYgbWVtb3J5LCBQcm9jZWR1cmUmIHByb2NlZHVyZSwgV2EKICAgICB9CiAKICAgICB3YXNtQ2Fs
bGluZ0NvbnZlbnRpb24oKS5zZXR1cEZyYW1lSW5Qcm9sb2d1ZShjb21waWxhdGlvbiwgbV9wcm9j
LCBPcmlnaW4oKSwgbV9jdXJyZW50QmxvY2spOworCisgICAgbV9mdW5jdGlvbkluZGV4U3BhY2VW
YWx1ZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4obV9wcm9jLCBP
cmlnaW4oKSwgZnVuY3Rpb25JbmRleFNwYWNlLmJ1ZmZlci5nZXQoKSk7CiB9CiAKIFZhbHVlKiBC
M0lSR2VuZXJhdG9yOjp6ZXJvRm9yVHlwZShUeXBlIHR5cGUpCkBAIC01OTIsNyArNjAxLDcgQEAg
Ym9vbCBCM0lSR2VuZXJhdG9yOjphZGRFbmRUb1VucmVhY2hhYmxlKENvbnRyb2xFbnRyeSYgZW50
cnkpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbCh1
bnNpZ25lZCBmdW5jdGlvbkluZGV4LCBjb25zdCBTaWduYXR1cmUqIHNpZ25hdHVyZSwgVmVjdG9y
PEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKK2Jvb2wgQjNJ
UkdlbmVyYXRvcjo6YWRkQ2FsbCh1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBjb25zdCBTaWduYXR1
cmUqIHNpZ25hdHVyZSwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVzc2lvblR5
cGUmIHJlc3VsdCkKIHsKICAgICBBU1NFUlQoc2lnbmF0dXJlLT5hcmd1bWVudHMuc2l6ZSgpID09
IGFyZ3Muc2l6ZSgpKTsKIApAQCAtNjE4LDYgKzYyNyw1OCBAQCBib29sIEIzSVJHZW5lcmF0b3I6
OmFkZENhbGwodW5zaWduZWQgZnVuY3Rpb25JbmRleCwgY29uc3QgU2lnbmF0dXJlKiBzaWduYXR1
cmUsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbElu
ZGlyZWN0KGNvbnN0IFNpZ25hdHVyZSogc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+
JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KQoreworICAgIEV4cHJlc3Npb25UeXBlIGNh
bGxlZUluZGV4ID0gYXJncy50YWtlTGFzdCgpOworICAgIHNpemVfdCBhcmd1bWVudENvdW50ID0g
c2lnbmF0dXJlLT5hcmd1bWVudHMuc2l6ZSgpOworICAgIEFTU0VSVChhcmd1bWVudENvdW50ID09
IGFyZ3Muc2l6ZSgpKTsKKworICAgIC8vIENoZWNrIHRoZSBpbmRleCB3ZSBhcmUgbG9va2luZyBm
b3IgaXMgdmFsaWQuCisgICAgeworICAgICAgICBFeHByZXNzaW9uVHlwZSBtYXhWYWxpZEluZGV4
ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZEludENvbnN0YW50KG1fcHJvYywgT3JpZ2luKCksIElu
dDMyLCBtX2Z1bmN0aW9uSW5kZXhTcGFjZS5zaXplKTsKKyAgICAgICAgQ2hlY2tWYWx1ZSogY2hl
Y2sgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KG1fcHJvYywgQ2hlY2ss
IE9yaWdpbigpLAorICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4o
bV9wcm9jLCBFcXVhbCwgT3JpZ2luKCksIG1femVyb1ZhbHVlc1tsaW5lYXJpemVUeXBlKEkzMild
LAorICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJv
YywgTGVzc1RoYW4sIE9yaWdpbigpLCBjYWxsZWVJbmRleCwgbWF4VmFsaWRJbmRleCkpKTsKKwor
ICAgICAgICBjaGVjay0+c2V0R2VuZXJhdG9yKFtdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3Qg
QjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICAgICAgICAgIGppdC5icmVha3Bv
aW50KCk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIC8vIENvbXB1dGUgdGhlIG9mZnNldCBp
biB0aGUgZnVuY3Rpb24gaW5kZXggc3BhY2Ugd2UgYXJlIGxvb2tpbmcgZm9yLgorICAgIEV4cHJl
c3Npb25UeXBlIG9mZnNldCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJv
YywgTXVsLCBPcmlnaW4oKSwKKyAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1
ZT4obV9wcm9jLCBaRXh0MzIsIE9yaWdpbigpLCBjYWxsZWVJbmRleCksCisgICAgICAgIG1fY3Vy
cmVudEJsb2NrLT5hcHBlbmRJbnRDb25zdGFudChtX3Byb2MsIE9yaWdpbigpLCBwb2ludGVyVHlw
ZSgpLCBzaXplb2YoQ2FsbGFibGVGdW5jdGlvbikpKTsKKyAgICBFeHByZXNzaW9uVHlwZSBjYWxs
YWJsZUZ1bmN0aW9uID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBB
ZGQsIE9yaWdpbigpLCBtX2Z1bmN0aW9uSW5kZXhTcGFjZVZhbHVlLCBvZmZzZXQpOworCisgICAg
Ly8gQ2hlY2sgdGhlIHNpZ25hdHVyZSBtYXRjaGVzIHRoZSB2YWx1ZSB3ZSBleHBlY3QuCisgICAg
eworICAgICAgICBFeHByZXNzaW9uVHlwZSBjYWxsZWVTaWduYXR1cmUgPSBtX2N1cnJlbnRCbG9j
ay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIE9y
aWdpbigpLCBjYWxsYWJsZUZ1bmN0aW9uLCBPQkpFQ1RfT0ZGU0VUT0YoQ2FsbGFibGVGdW5jdGlv
biwgc2lnbmF0dXJlKSk7CisgICAgICAgIEV4cHJlc3Npb25UeXBlIGV4cGVjdGVkU2lnbmF0dXJl
ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihtX3Byb2MsIE9yaWdp
bigpLCBzaWduYXR1cmUpOworICAgICAgICBDaGVja1ZhbHVlKiBjaGVjayA9IG1fY3VycmVudEJs
b2NrLT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4obV9wcm9jLCBDaGVjaywgT3JpZ2luKCksCisgICAg
ICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIE5vdEVxdWFs
LCBPcmlnaW4oKSwgY2FsbGVlU2lnbmF0dXJlLCBleHBlY3RlZFNpZ25hdHVyZSkpOworCisgICAg
ICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoW10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6
U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgICAgICAgICAgaml0LmJyZWFrcG9pbnQo
KTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgRXhwcmVzc2lvblR5cGUgY2FsbGVlQ29kZSA9
IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgcG9p
bnRlclR5cGUoKSwgT3JpZ2luKCksIGNhbGxhYmxlRnVuY3Rpb24sIE9CSkVDVF9PRkZTRVRPRihD
YWxsYWJsZUZ1bmN0aW9uLCBjb2RlKSk7CisKKyAgICByZXN1bHQgPSB3YXNtQ2FsbGluZ0NvbnZl
bnRpb24oKS5zZXR1cENhbGwobV9wcm9jLCBtX2N1cnJlbnRCbG9jaywgT3JpZ2luKCksIGFyZ3Ms
IHRvQjNUeXBlKHNpZ25hdHVyZS0+cmV0dXJuVHlwZSksCisgICAgICAgIFsmXSAoUGF0Y2hwb2lu
dFZhbHVlKiBwYXRjaHBvaW50KSB7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzLndy
aXRlc1Bpbm5lZCA9IHRydWU7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzLnJlYWRz
UGlubmVkID0gdHJ1ZTsKKworICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKGNhbGxlZUNv
ZGUsIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpOworCisgICAgICAgICAgICBwYXRjaHBvaW50LT5z
ZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2Vu
ZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgaml0LmNhbGwocGFyYW1z
WzBdLmdwcigpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwogdm9pZCBCM0lSR2VuZXJhdG9yOjp1bmlmeShWYXJpYWJsZSogdmFyaWFibGUsIEV4
cHJlc3Npb25UeXBlIHNvdXJjZSkKIHsKICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZh
cmlhYmxlVmFsdWU+KG1fcHJvYywgU2V0LCBPcmlnaW4oKSwgdmFyaWFibGUsIHNvdXJjZSk7CkBA
IC02NTcsNyArNzE4LDcgQEAgdm9pZCBCM0lSR2VuZXJhdG9yOjpkdW1wKGNvbnN0IFZlY3RvcjxD
b250cm9sRW50cnk+JiBjb250cm9sU3RhY2ssIGNvbnN0IEV4cHJlc3MKICAgICBkYXRhTG9nTG4o
IlxuIik7CiB9CiAKLXN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q29tcGlsYXRpb24+IGNyZWF0ZUpT
VG9XYXNtV3JhcHBlcihWTSYgdm0sIGNvbnN0IFNpZ25hdHVyZSogc2lnbmF0dXJlLCBNYWNyb0Fz
c2VtYmxlckNvZGVQdHIgbWFpbkZ1bmN0aW9uLCBNZW1vcnlJbmZvcm1hdGlvbiYgbWVtb3J5KQor
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDb21waWxhdGlvbj4gY3JlYXRlSlNUb1dhc21XcmFwcGVy
KFZNJiB2bSwgY29uc3QgU2lnbmF0dXJlKiBzaWduYXR1cmUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0
ciBtYWluRnVuY3Rpb24sIGNvbnN0IE1lbW9yeUluZm9ybWF0aW9uJiBtZW1vcnkpCiB7CiAgICAg
UHJvY2VkdXJlIHByb2M7CiAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBwcm9jLmFkZEJsb2NrKCk7
CkBAIC03MzcsMTMgKzc5OCwxMyBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENvbXBpbGF0aW9u
PiBjcmVhdGVKU1RvV2FzbVdyYXBwZXIoVk0mIHZtLCBjb25zdCBTaWduYXR1cgogICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPENvbXBpbGF0aW9uPih2bSwgcHJvYyk7CiB9CiAKLXN0ZDo6dW5p
cXVlX3B0cjxXYXNtSW50ZXJuYWxGdW5jdGlvbj4gcGFyc2VBbmRDb21waWxlKFZNJiB2bSwgY29u
c3QgdWludDhfdCogZnVuY3Rpb25TdGFydCwgc2l6ZV90IGZ1bmN0aW9uTGVuZ3RoLCBNZW1vcnlJ
bmZvcm1hdGlvbiYgbWVtb3J5LCBjb25zdCBTaWduYXR1cmUqIHNpZ25hdHVyZSwgVmVjdG9yPFVu
bGlua2VkV2FzbVRvV2FzbUNhbGw+JiB1bmxpbmtlZFdhc21Ub1dhc21DYWxscywgY29uc3QgRnVu
Y3Rpb25JbmRleFNwYWNlJiBmdW5jdGlvbkluZGV4U3BhY2UsIHVuc2lnbmVkIG9wdExldmVsKQor
c3RkOjp1bmlxdWVfcHRyPFdhc21JbnRlcm5hbEZ1bmN0aW9uPiBwYXJzZUFuZENvbXBpbGUoVk0m
IHZtLCBjb25zdCB1aW50OF90KiBmdW5jdGlvblN0YXJ0LCBzaXplX3QgZnVuY3Rpb25MZW5ndGgs
IGNvbnN0IFNpZ25hdHVyZSogc2lnbmF0dXJlLCBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2Fs
bD4mIHVubGlua2VkV2FzbVRvV2FzbUNhbGxzLCBjb25zdCBJbW11dGFibGVGdW5jdGlvbkluZGV4
U3BhY2UmIGZ1bmN0aW9uSW5kZXhTcGFjZSwgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8s
IHVuc2lnbmVkIG9wdExldmVsKQogewogICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1
ZTxXYXNtSW50ZXJuYWxGdW5jdGlvbj4oKTsKIAogICAgIFByb2NlZHVyZSBwcm9jZWR1cmU7Ci0g
ICAgQjNJUkdlbmVyYXRvciBjb250ZXh0KG1lbW9yeSwgcHJvY2VkdXJlLCByZXN1bHQuZ2V0KCks
IHVubGlua2VkV2FzbVRvV2FzbUNhbGxzKTsKLSAgICBGdW5jdGlvblBhcnNlcjxCM0lSR2VuZXJh
dG9yPiBwYXJzZXIoY29udGV4dCwgZnVuY3Rpb25TdGFydCwgZnVuY3Rpb25MZW5ndGgsIHNpZ25h
dHVyZSwgZnVuY3Rpb25JbmRleFNwYWNlKTsKKyAgICBCM0lSR2VuZXJhdG9yIGNvbnRleHQoaW5m
by5tZW1vcnksIHByb2NlZHVyZSwgcmVzdWx0LmdldCgpLCB1bmxpbmtlZFdhc21Ub1dhc21DYWxs
cywgZnVuY3Rpb25JbmRleFNwYWNlKTsKKyAgICBGdW5jdGlvblBhcnNlcjxCM0lSR2VuZXJhdG9y
PiBwYXJzZXIoY29udGV4dCwgZnVuY3Rpb25TdGFydCwgZnVuY3Rpb25MZW5ndGgsIHNpZ25hdHVy
ZSwgZnVuY3Rpb25JbmRleFNwYWNlLCBpbmZvKTsKICAgICBpZiAoIXBhcnNlci5wYXJzZSgpKQog
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCkBAIC03NTcsNyArODE4LDcg
QEAgc3RkOjp1bmlxdWVfcHRyPFdhc21JbnRlcm5hbEZ1bmN0aW9uPiBwYXJzZUFuZENvbXBpbGUo
Vk0mIHZtLCBjb25zdCB1aW50OF90KiBmdW4KICAgICAgICAgZGF0YUxvZygiUG9zdCBTU0E6ICIs
IHByb2NlZHVyZSk7CiAKICAgICByZXN1bHQtPmNvZGUgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbXBp
bGF0aW9uPih2bSwgcHJvY2VkdXJlLCBvcHRMZXZlbCk7Ci0gICAgcmVzdWx0LT5qc1RvV2FzbUVu
dHJ5UG9pbnQgPSBjcmVhdGVKU1RvV2FzbVdyYXBwZXIodm0sIHNpZ25hdHVyZSwgcmVzdWx0LT5j
b2RlLT5jb2RlKCksIG1lbW9yeSk7CisgICAgcmVzdWx0LT5qc1RvV2FzbUVudHJ5UG9pbnQgPSBj
cmVhdGVKU1RvV2FzbVdyYXBwZXIodm0sIHNpZ25hdHVyZSwgcmVzdWx0LT5jb2RlLT5jb2RlKCks
IGluZm8ubWVtb3J5KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuaAppbmRleCAwNDIwMDdlYmI5M2Q5MzM2
MDQ5MGFhMDVjN2Q1NDNlOWI2YTY0NjU3Li5iYTEwYWEzNWY2NTk1ZjhiMDM4ZTg5ODRkNzIyMDg4
MDBmMzIzZGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJ
UkdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2Vu
ZXJhdG9yLmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNt
IHsKIAogY2xhc3MgTWVtb3J5SW5mb3JtYXRpb247CiAKLXN0ZDo6dW5pcXVlX3B0cjxXYXNtSW50
ZXJuYWxGdW5jdGlvbj4gcGFyc2VBbmRDb21waWxlKFZNJiwgY29uc3QgdWludDhfdCosIHNpemVf
dCwgTWVtb3J5SW5mb3JtYXRpb24mLCBjb25zdCBTaWduYXR1cmUqLCBWZWN0b3I8VW5saW5rZWRX
YXNtVG9XYXNtQ2FsbD4mLCBjb25zdCBGdW5jdGlvbkluZGV4U3BhY2UmLCB1bnNpZ25lZCBvcHRM
ZXZlbCA9IDEpOworc3RkOjp1bmlxdWVfcHRyPFdhc21JbnRlcm5hbEZ1bmN0aW9uPiBwYXJzZUFu
ZENvbXBpbGUoVk0mLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90LCBjb25zdCBTaWduYXR1cmUqLCBW
ZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mLCBjb25zdCBJbW11dGFibGVGdW5jdGlvbklu
ZGV4U3BhY2UmLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYsIHVuc2lnbmVkIG9wdExldmVsID0g
MSk7CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXYXNtCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsaW5nQ29udmVudGlvbi5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUNhbGxpbmdDb252ZW50aW9uLmgKaW5kZXggZDdlYmQ4MGNjZGFi
NWI3N2NhOWZkMjliMDRmZDU4NDliZTc1Nzk3My4uNGMwNmU1YTNhZWU4ZDJhNzViZWJhZTdkY2Yz
ZjVkNGYxNWJjMDUwNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUNhbGxpbmdDb252ZW50aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUNhbGxpbmdDb252ZW50aW9uLmgKQEAgLTE2Myw4ICsxNjMsOCBAQCBwdWJsaWM6CiAgICAgICAg
IEIzOjpQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBibG9jay0+YXBwZW5kTmV3PEIzOjpQ
YXRjaHBvaW50VmFsdWU+KHByb2MsIHJldHVyblR5cGUsIG9yaWdpbik7CiAgICAgICAgIHBhdGNo
cG9pbnQtPmNsb2JiZXJFYXJseShSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkp
OwogICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0ZShSZWdpc3RlclNldDo6dm9sYXRpbGVS
ZWdpc3RlcnNGb3JKU0NhbGwoKSk7Ci0gICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFZlY3Rvcihj
b25zdHJhaW5lZEFyZ3VtZW50cyk7CiAgICAgICAgIHBhdGNocG9pbnRGdW5jdG9yKHBhdGNocG9p
bnQpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRWZWN0b3IoY29uc3RyYWluZWRBcmd1bWVu
dHMpOwogCiAgICAgICAgIHN3aXRjaCAocmV0dXJuVHlwZSkgewogICAgICAgICBjYXNlIEIzOjpW
b2lkOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oCmluZGV4IGYwNDM1MTk4
MzI3NjkyMzFkNmQxODAyNTJhYjI1N2JkMGFiZjY3MGIuLjY2MDY0MDdjNWFiOTlmM2E4YjdkZGQ1
YmJjMzk5MWI2ZDM2OTJiMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21Gb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0
LmgKQEAgLTE1NSw2ICsxNTUsMTIgQEAgc3RydWN0IENhbGxhYmxlRnVuY3Rpb24gewogfTsKIHR5
cGVkZWYgVmVjdG9yPENhbGxhYmxlRnVuY3Rpb24+IEZ1bmN0aW9uSW5kZXhTcGFjZTsKIAorCitz
dHJ1Y3QgSW1tdXRhYmxlRnVuY3Rpb25JbmRleFNwYWNlIHsKKyAgICBNYWxsb2NQdHI8Q2FsbGFi
bGVGdW5jdGlvbj4gYnVmZmVyOworICAgIHNpemVfdCBzaXplOworfTsKKwogfSB9IC8vIG5hbWVz
cGFjZSBKU0M6Oldhc20KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKaW5kZXggZWMxOTMy
NTRhNjY4MzQyZmQ2MDQ0YTVkMmQyYTIyMTc3ZDZhYjU1Zi4uMjA3MDE4YmY4ODA1YzUwYjM2MGE3
ODlkYzUxZDAwYWU3YTdkZjMzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUZ1bmN0aW9uUGFyc2VyLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIHR5cGVk
ZWYgdHlwZW5hbWUgQ29udGV4dDo6Q29udHJvbFR5cGUgQ29udHJvbFR5cGU7CiAgICAgdHlwZWRl
ZiB0eXBlbmFtZSBDb250ZXh0OjpFeHByZXNzaW9uTGlzdCBFeHByZXNzaW9uTGlzdDsKIAotICAg
IEZ1bmN0aW9uUGFyc2VyKENvbnRleHQmLCBjb25zdCB1aW50OF90KiBmdW5jdGlvblN0YXJ0LCBz
aXplX3QgZnVuY3Rpb25MZW5ndGgsIGNvbnN0IFNpZ25hdHVyZSosIGNvbnN0IEZ1bmN0aW9uSW5k
ZXhTcGFjZSYpOworICAgIEZ1bmN0aW9uUGFyc2VyKENvbnRleHQmLCBjb25zdCB1aW50OF90KiBm
dW5jdGlvblN0YXJ0LCBzaXplX3QgZnVuY3Rpb25MZW5ndGgsIGNvbnN0IFNpZ25hdHVyZSosIGNv
bnN0IEltbXV0YWJsZUZ1bmN0aW9uSW5kZXhTcGFjZSYsIGNvbnN0IE1vZHVsZUluZm9ybWF0aW9u
Jik7CiAKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZSgpOwogCkBAIC03MSwyMiAr
NzEsMjggQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTxPcFR5cGU+CiAgICAgYm9vbCBXQVJOX1VO
VVNFRF9SRVRVUk4gYmluYXJ5Q2FzZSgpOwogCi0gICAgdm9pZCBzZXRFcnJvck1lc3NhZ2UoU3Ry
aW5nJiYgbWVzc2FnZSkgeyBtX2NvbnRleHQuc2V0RXJyb3JNZXNzYWdlKFdURk1vdmUobWVzc2Fn
ZSkpOyB9CisgICAgYm9vbCBzZXRFcnJvck1lc3NhZ2UoU3RyaW5nJiYgbWVzc2FnZSkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC5zZXRFcnJvck1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAKICAgICBDb250ZXh0JiBtX2NvbnRleHQ7CiAg
ICAgRXhwcmVzc2lvbkxpc3QgbV9leHByZXNzaW9uU3RhY2s7CiAgICAgVmVjdG9yPENvbnRyb2xF
bnRyeT4gbV9jb250cm9sU3RhY2s7CiAgICAgY29uc3QgU2lnbmF0dXJlKiBtX3NpZ25hdHVyZTsK
LSAgICBjb25zdCBGdW5jdGlvbkluZGV4U3BhY2UmIG1fZnVuY3Rpb25JbmRleFNwYWNlOworICAg
IGNvbnN0IEltbXV0YWJsZUZ1bmN0aW9uSW5kZXhTcGFjZSYgbV9mdW5jdGlvbkluZGV4U3BhY2U7
CisgICAgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIG1faW5mbzsKICAgICB1bnNpZ25lZCBtX3Vu
cmVhY2hhYmxlQmxvY2tzIHsgMCB9OwogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29udGV4dD4K
LUZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpGdW5jdGlvblBhcnNlcihDb250ZXh0JiBjb250ZXh0
LCBjb25zdCB1aW50OF90KiBmdW5jdGlvblN0YXJ0LCBzaXplX3QgZnVuY3Rpb25MZW5ndGgsIGNv
bnN0IFNpZ25hdHVyZSogc2lnbmF0dXJlLCBjb25zdCBGdW5jdGlvbkluZGV4U3BhY2UmIGZ1bmN0
aW9uSW5kZXhTcGFjZSkKK0Z1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpGdW5jdGlvblBhcnNlcihD
b250ZXh0JiBjb250ZXh0LCBjb25zdCB1aW50OF90KiBmdW5jdGlvblN0YXJ0LCBzaXplX3QgZnVu
Y3Rpb25MZW5ndGgsIGNvbnN0IFNpZ25hdHVyZSogc2lnbmF0dXJlLCBjb25zdCBJbW11dGFibGVG
dW5jdGlvbkluZGV4U3BhY2UmIGZ1bmN0aW9uSW5kZXhTcGFjZSwgY29uc3QgTW9kdWxlSW5mb3Jt
YXRpb24mIGluZm8pCiAgICAgOiBQYXJzZXIoZnVuY3Rpb25TdGFydCwgZnVuY3Rpb25MZW5ndGgp
CiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fc2lnbmF0dXJlKHNpZ25hdHVyZSkK
ICAgICAsIG1fZnVuY3Rpb25JbmRleFNwYWNlKGZ1bmN0aW9uSW5kZXhTcGFjZSkKKyAgICAsIG1f
aW5mbyhpbmZvKQogewogICAgIGlmICh2ZXJib3NlKQogICAgICAgICBkYXRhTG9nTG4oIlBhcnNp
bmcgZnVuY3Rpb24gc3RhcnRpbmcgYXQ6ICIsICh1aW50cHRyX3QpZnVuY3Rpb25TdGFydCwgIiBv
ZiBsZW5ndGg6ICIsIGZ1bmN0aW9uTGVuZ3RoKTsKQEAgLTM1MCwxMCArMzU2LDEwIEBAIGJvb2wg
RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhwcmVzc2lvbihPcFR5cGUgb3ApCiAgICAg
ICAgIGlmICghcGFyc2VWYXJVSW50MzIoZnVuY3Rpb25JbmRleCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKGZ1bmN0aW9uSW5kZXggPj0gbV9mdW5jdGlvbkluZGV4
U3BhY2Uuc2l6ZSgpKQorICAgICAgICBpZiAoZnVuY3Rpb25JbmRleCA+PSBtX2Z1bmN0aW9uSW5k
ZXhTcGFjZS5zaXplKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGNvbnN0
IFNpZ25hdHVyZSogY2FsbGVlU2lnbmF0dXJlID0gbV9mdW5jdGlvbkluZGV4U3BhY2VbZnVuY3Rp
b25JbmRleF0uc2lnbmF0dXJlOworICAgICAgICBjb25zdCBTaWduYXR1cmUqIGNhbGxlZVNpZ25h
dHVyZSA9IG1fZnVuY3Rpb25JbmRleFNwYWNlLmJ1ZmZlci5nZXQoKVtmdW5jdGlvbkluZGV4XS5z
aWduYXR1cmU7CiAKICAgICAgICAgaWYgKGNhbGxlZVNpZ25hdHVyZS0+YXJndW1lbnRzLnNpemUo
KSA+IG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTM3NSw2ICszODEsNDIgQEAgYm9vbCBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VF
eHByZXNzaW9uKE9wVHlwZSBvcCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisgICAg
Y2FzZSBPcFR5cGU6OkNhbGxJbmRpcmVjdDogeworICAgICAgICB1aW50MzJfdCBzaWduYXR1cmVJ
bmRleDsKKyAgICAgICAgaWYgKCFwYXJzZVZhclVJbnQzMihzaWduYXR1cmVJbmRleCkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdWludDhfdCByZXNlcnZlZDsKKyAgICAg
ICAgaWYgKCFwYXJzZVZhclVJbnQxKHJlc2VydmVkKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICBpZiAobV9pbmZvLnNpZ25hdHVyZXMuc2l6ZSgpIDw9IHNpZ25hdHVyZUlu
ZGV4KQorICAgICAgICAgICAgcmV0dXJuIHNldEVycm9yTWVzc2FnZSgiVHJpZWQgdG8gdXNlIGEg
c2lnbmF0dXJlIG91dHNpZGUgdGhlIHJhbmdlIG9mIHZhbGlkIHNpZ25hdHVyZXMiKTsKKworICAg
ICAgICBjb25zdCBTaWduYXR1cmUqIGNhbGxlZVNpZ25hdHVyZSA9ICZtX2luZm8uc2lnbmF0dXJl
c1tzaWduYXR1cmVJbmRleF07CisgICAgICAgIHNpemVfdCBhcmd1bWVudENvdW50ID0gY2FsbGVl
U2lnbmF0dXJlLT5hcmd1bWVudHMuc2l6ZSgpICsgMTsgLy8gQWRkIHRoZSBjYWxsZWUncyBpbmRl
eC4KKyAgICAgICAgaWYgKGFyZ3VtZW50Q291bnQgPiBtX2V4cHJlc3Npb25TdGFjay5zaXplKCkp
CisgICAgICAgICAgICByZXR1cm4gc2V0RXJyb3JNZXNzYWdlKCJOb3QgZW5vdWdoIHZhbHVlcyBv
biB0aGUgc3RhY2sgZm9yIGNhbGxfaW5kaXJlY3QiKTsKKworICAgICAgICBWZWN0b3I8RXhwcmVz
c2lvblR5cGU+IGFyZ3M7CisgICAgICAgIGlmICghYXJncy50cnlSZXNlcnZlQ2FwYWNpdHkoYXJn
dW1lbnRDb3VudCkpCisgICAgICAgICAgICByZXR1cm4gc2V0RXJyb3JNZXNzYWdlKCJPdXQgb2Yg
bWVtb3J5Iik7CisKKyAgICAgICAgc2l6ZV90IGZpcnN0QXJndW1lbnRJbmRleCA9IG1fZXhwcmVz
c2lvblN0YWNrLnNpemUoKSAtIGFyZ3VtZW50Q291bnQ7CisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IGZpcnN0QXJndW1lbnRJbmRleDsgaSA8IG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKTsgKytp
KQorICAgICAgICAgICAgYXJncy51bmNoZWNrZWRBcHBlbmQobV9leHByZXNzaW9uU3RhY2tbaV0p
OworICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5zaHJpbmsoZmlyc3RBcmd1bWVudEluZGV4KTsK
KworICAgICAgICBFeHByZXNzaW9uVHlwZSByZXN1bHQgPSBDb250ZXh0OjplbXB0eUV4cHJlc3Np
b247CisgICAgICAgIGlmICghbV9jb250ZXh0LmFkZENhbGxJbmRpcmVjdChjYWxsZWVTaWduYXR1
cmUsIGFyZ3MsIHJlc3VsdCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAg
aWYgKHJlc3VsdCAhPSBDb250ZXh0OjplbXB0eUV4cHJlc3Npb24pCisgICAgICAgICAgICBtX2V4
cHJlc3Npb25TdGFjay5hcHBlbmQocmVzdWx0KTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKICAgICBjYXNlIE9wVHlwZTo6QmxvY2s6IHsKICAgICAgICAgVHlwZSBpbmxpbmVTaWdu
YXR1cmU7CiAgICAgICAgIGlmICghcGFyc2VSZXN1bHRUeXBlKGlubGluZVNpZ25hdHVyZSkpCkBA
IC01MTcsOCArNTU5LDcgQEAgYm9vbCBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VFeHBy
ZXNzaW9uKE9wVHlwZSBvcCkKICAgICBjYXNlIE9wVHlwZTo6R3Jvd01lbW9yeToKICAgICBjYXNl
IE9wVHlwZTo6Q3VycmVudE1lbW9yeToKICAgICBjYXNlIE9wVHlwZTo6R2V0R2xvYmFsOgotICAg
IGNhc2UgT3BUeXBlOjpTZXRHbG9iYWw6Ci0gICAgY2FzZSBPcFR5cGU6OkNhbGxJbmRpcmVjdDog
eworICAgIGNhc2UgT3BUeXBlOjpTZXRHbG9iYWw6IHsKICAgICAgICAgLy8gRklYTUU6IE5vdCB5
ZXQgaW1wbGVtZW50ZWQuCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtUGxhbi5jcHAKaW5kZXggZDg5YTFiMzNjMjhmYmUxNzFjMzc2Mzgx
ODljZjk1NTBkMWUwNDlmMC4uZDZjNjA4MzZhYjZlYzc3ZTI2NzE3ZmY3MjY2MTRkZDFlOWI4NzFk
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBsYW4uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmNwcApAQCAtNzIsNyArNzIs
OCBAQCB2b2lkIFBsYW46OnJ1bigpCiAgICAgICAgIH0KICAgICAgICAgbV9tb2R1bGVJbmZvcm1h
dGlvbiA9IFdURk1vdmUobW9kdWxlUGFyc2VyLm1vZHVsZUluZm9ybWF0aW9uKCkpOwogICAgICAg
ICBtX2Z1bmN0aW9uTG9jYXRpb25JbkJpbmFyeSA9IFdURk1vdmUobW9kdWxlUGFyc2VyLmZ1bmN0
aW9uTG9jYXRpb25JbkJpbmFyeSgpKTsKLSAgICAgICAgbV9mdW5jdGlvbkluZGV4U3BhY2UgPSBX
VEZNb3ZlKG1vZHVsZVBhcnNlci5mdW5jdGlvbkluZGV4U3BhY2UoKSk7CisgICAgICAgIG1fZnVu
Y3Rpb25JbmRleFNwYWNlLnNpemUgPSBtb2R1bGVQYXJzZXIuZnVuY3Rpb25JbmRleFNwYWNlKCku
c2l6ZSgpOworICAgICAgICBtX2Z1bmN0aW9uSW5kZXhTcGFjZS5idWZmZXIgPSBtb2R1bGVQYXJz
ZXIuZnVuY3Rpb25JbmRleFNwYWNlKCkucmVsZWFzZUJ1ZmZlcigpOwogICAgIH0KICAgICBpZiAo
dmVyYm9zZSkKICAgICAgICAgZGF0YUxvZ0xuKCJQYXJzZWQgbW9kdWxlLiIpOwpAQCAtMTAzLDcg
KzEwNCw3IEBAIHZvaWQgUGxhbjo6cnVuKCkKICAgICAgICAgICAgIGRhdGFMb2dMbigiUHJvY2Vz
c2luZyBpbXBvcnQgZnVuY3Rpb24gbnVtYmVyICIsIGltcG9ydEZ1bmN0aW9uSW5kZXgsICI6ICIs
IGltcG9ydC0+bW9kdWxlLCAiOiAiLCBpbXBvcnQtPmZpZWxkKTsKICAgICAgICAgU2lnbmF0dXJl
KiBzaWduYXR1cmUgPSBtX21vZHVsZUluZm9ybWF0aW9uLT5pbXBvcnRGdW5jdGlvbnMuYXQoaW1w
b3J0LT5raW5kSW5kZXgpOwogICAgICAgICBtX3dhc21Ub0pTU3R1YnMudW5jaGVja2VkQXBwZW5k
KGltcG9ydFN0dWJHZW5lcmF0b3IobV92bSwgbV9jYWxsTGlua0luZm9zLCBzaWduYXR1cmUsIGlt
cG9ydEZ1bmN0aW9uSW5kZXgpKTsKLSAgICAgICAgbV9mdW5jdGlvbkluZGV4U3BhY2VbaW1wb3J0
RnVuY3Rpb25JbmRleF0uY29kZSA9IG1fd2FzbVRvSlNTdHVic1tpbXBvcnRGdW5jdGlvbkluZGV4
XS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICAgICAgbV9mdW5jdGlvbkluZGV4U3Bh
Y2UuYnVmZmVyLmdldCgpW2ltcG9ydEZ1bmN0aW9uSW5kZXhdLmNvZGUgPSBtX3dhc21Ub0pTU3R1
YnNbaW1wb3J0RnVuY3Rpb25JbmRleF0uY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CiAgICAg
fQogCiAgICAgZm9yICh1bnNpZ25lZCBmdW5jdGlvbkluZGV4ID0gMDsgZnVuY3Rpb25JbmRleCA8
IG1fZnVuY3Rpb25Mb2NhdGlvbkluQmluYXJ5LnNpemUoKTsgKytmdW5jdGlvbkluZGV4KSB7CkBA
IC0xMTQsOSArMTE1LDkgQEAgdm9pZCBQbGFuOjpydW4oKQogICAgICAgICBBU1NFUlQoZnVuY3Rp
b25MZW5ndGggPD0gbV9zb3VyY2VMZW5ndGgpOwogICAgICAgICBTaWduYXR1cmUqIHNpZ25hdHVy
ZSA9IG1fbW9kdWxlSW5mb3JtYXRpb24tPmludGVybmFsRnVuY3Rpb25TaWduYXR1cmVzW2Z1bmN0
aW9uSW5kZXhdOwogICAgICAgICB1bnNpZ25lZCBmdW5jdGlvbkluZGV4U3BhY2UgPSBtX3dhc21U
b0pTU3R1YnMuc2l6ZSgpICsgZnVuY3Rpb25JbmRleDsKLSAgICAgICAgQVNTRVJUKG1fZnVuY3Rp
b25JbmRleFNwYWNlW2Z1bmN0aW9uSW5kZXhTcGFjZV0uc2lnbmF0dXJlID09IHNpZ25hdHVyZSk7
CisgICAgICAgIEFTU0VSVChtX2Z1bmN0aW9uSW5kZXhTcGFjZS5idWZmZXIuZ2V0KClbZnVuY3Rp
b25JbmRleFNwYWNlXS5zaWduYXR1cmUgPT0gc2lnbmF0dXJlKTsKIAotICAgICAgICBTdHJpbmcg
ZXJyb3IgPSB2YWxpZGF0ZUZ1bmN0aW9uKGZ1bmN0aW9uU3RhcnQsIGZ1bmN0aW9uTGVuZ3RoLCBz
aWduYXR1cmUsIG1fZnVuY3Rpb25JbmRleFNwYWNlLCBtX21vZHVsZUluZm9ybWF0aW9uLT5tZW1v
cnkpOworICAgICAgICBTdHJpbmcgZXJyb3IgPSB2YWxpZGF0ZUZ1bmN0aW9uKGZ1bmN0aW9uU3Rh
cnQsIGZ1bmN0aW9uTGVuZ3RoLCBzaWduYXR1cmUsIG1fZnVuY3Rpb25JbmRleFNwYWNlLCAqbV9t
b2R1bGVJbmZvcm1hdGlvbik7CiAgICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsKICAgICAg
ICAgICAgIGlmICh2ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGZ1bmN0aW9uTGVuZ3RoOyArK2kpCkBAIC0xMjgsMTQgKzEyOSwxNCBAQCB2b2lkIFBs
YW46OnJ1bigpCiAgICAgICAgIH0KIAogICAgICAgICB1bmxpbmtlZFdhc21Ub1dhc21DYWxscy51
bmNoZWNrZWRBcHBlbmQoVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+KCkpOwotICAgICAg
ICBtX3dhc21JbnRlcm5hbEZ1bmN0aW9ucy51bmNoZWNrZWRBcHBlbmQocGFyc2VBbmRDb21waWxl
KCptX3ZtLCBmdW5jdGlvblN0YXJ0LCBmdW5jdGlvbkxlbmd0aCwgbV9tb2R1bGVJbmZvcm1hdGlv
bi0+bWVtb3J5LCBzaWduYXR1cmUsIHVubGlua2VkV2FzbVRvV2FzbUNhbGxzLmF0KGZ1bmN0aW9u
SW5kZXgpLCBtX2Z1bmN0aW9uSW5kZXhTcGFjZSkpOwotICAgICAgICBtX2Z1bmN0aW9uSW5kZXhT
cGFjZVtmdW5jdGlvbkluZGV4U3BhY2VdLmNvZGUgPSBtX3dhc21JbnRlcm5hbEZ1bmN0aW9uc1tm
dW5jdGlvbkluZGV4XS0+Y29kZS0+Y29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgICAg
IG1fd2FzbUludGVybmFsRnVuY3Rpb25zLnVuY2hlY2tlZEFwcGVuZChwYXJzZUFuZENvbXBpbGUo
Km1fdm0sIGZ1bmN0aW9uU3RhcnQsIGZ1bmN0aW9uTGVuZ3RoLCBzaWduYXR1cmUsIHVubGlua2Vk
V2FzbVRvV2FzbUNhbGxzLmF0KGZ1bmN0aW9uSW5kZXgpLCBtX2Z1bmN0aW9uSW5kZXhTcGFjZSwg
Km1fbW9kdWxlSW5mb3JtYXRpb24pKTsKKyAgICAgICAgbV9mdW5jdGlvbkluZGV4U3BhY2UuYnVm
ZmVyLmdldCgpW2Z1bmN0aW9uSW5kZXhTcGFjZV0uY29kZSA9IG1fd2FzbUludGVybmFsRnVuY3Rp
b25zW2Z1bmN0aW9uSW5kZXhdLT5jb2RlLT5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKICAg
ICB9CiAKICAgICAvLyBQYXRjaCB0aGUgY2FsbCBzaXRlcyBmb3IgZWFjaCBXZWJBc3NlbWJseSBm
dW5jdGlvbi4KICAgICBmb3IgKGF1dG8mIHVubGlua2VkIDogdW5saW5rZWRXYXNtVG9XYXNtQ2Fs
bHMpIHsKICAgICAgICAgZm9yIChhdXRvJiBjYWxsIDogdW5saW5rZWQpCi0gICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoY2FsbC5jYWxsTG9jYXRpb24sIENvZGVMb2NhdGlv
bkxhYmVsKG1fZnVuY3Rpb25JbmRleFNwYWNlW2NhbGwuZnVuY3Rpb25JbmRleF0uY29kZSkpOwor
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKGNhbGwuY2FsbExvY2F0aW9u
LCBDb2RlTG9jYXRpb25MYWJlbChtX2Z1bmN0aW9uSW5kZXhTcGFjZS5idWZmZXIuZ2V0KClbY2Fs
bC5mdW5jdGlvbkluZGV4XS5jb2RlKSk7CiAgICAgfQogCiAgICAgbV9mYWlsZWQgPSBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5oCmluZGV4IDliMGMxYjJjYjlhNGY5YWIy
M2FhYjA5ZWVlNjI3OWJmMmZmZDk3MDIuLjNjZGJiNjUxYzdhM2UwMmE0NjQ2NGIwOTI4MDNiZGE2
NjQ4NmNkNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFu
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBsYW4uaApAQCAtOTUsNyAr
OTUsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBXVEZNb3ZlKG1fd2FzbVRvSlNTdHVicyk7
CiAgICAgfQogCi0gICAgRnVuY3Rpb25JbmRleFNwYWNlJiYgdGFrZUZ1bmN0aW9uSW5kZXhTcGFj
ZSgpCisgICAgSW1tdXRhYmxlRnVuY3Rpb25JbmRleFNwYWNlJiYgdGFrZUZ1bmN0aW9uSW5kZXhT
cGFjZSgpCiAgICAgewogICAgICAgICBSRUxFQVNFX0FTU0VSVCghZmFpbGVkKCkpOwogICAgICAg
ICByZXR1cm4gV1RGTW92ZShtX2Z1bmN0aW9uSW5kZXhTcGFjZSk7CkBAIC0xMDcsNyArMTA3LDcg
QEAgcHJpdmF0ZToKICAgICBCYWc8Q2FsbExpbmtJbmZvPiBtX2NhbGxMaW5rSW5mb3M7CiAgICAg
VmVjdG9yPFdhc21Ub0pTU3R1Yj4gbV93YXNtVG9KU1N0dWJzOwogICAgIFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8V2FzbUludGVybmFsRnVuY3Rpb24+PiBtX3dhc21JbnRlcm5hbEZ1bmN0aW9uczsK
LSAgICBGdW5jdGlvbkluZGV4U3BhY2UgbV9mdW5jdGlvbkluZGV4U3BhY2U7CisgICAgSW1tdXRh
YmxlRnVuY3Rpb25JbmRleFNwYWNlIG1fZnVuY3Rpb25JbmRleFNwYWNlOwogCiAgICAgVk0qIG1f
dm07CiAgICAgY29uc3QgdWludDhfdCogbV9zb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsaWRhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVZhbGlkYXRlLmNwcAppbmRleCBhMDI0ODg1ODIwZGQzNzM1ZWMzNTVlODUwYjNm
NDFhOWRmNDhjOGI2Li4yMmY5NWJiYTAyMjYzNWRjNGYzMmU4NGRiZGRkNDUyYzZkNDYzYmRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsaWRhdGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21WYWxpZGF0ZS5jcHAKQEAgLTExMCw4
ICsxMTAsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gZW5kQmxvY2so
Q29udHJvbEVudHJ5JiwgRXhwcmVzc2lvbkxpc3QmIGV4cHJlc3Npb25TdGFjayk7CiAgICAgYm9v
bCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkRW5kVG9VbnJlYWNoYWJsZShDb250cm9sRW50cnkmKTsK
IAotCisgICAgLy8gQ2FsbHMKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsKHVu
c2lnbmVkIGNhbGxlZUluZGV4LCBjb25zdCBTaWduYXR1cmUqLCBjb25zdCBWZWN0b3I8RXhwcmVz
c2lvblR5cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAgICBib29sIFdBUk5f
VU5VU0VEX1JFVFVSTiBhZGRDYWxsSW5kaXJlY3QoY29uc3QgU2lnbmF0dXJlKiwgY29uc3QgVmVj
dG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAKICAg
ICB2b2lkIGR1bXAoY29uc3QgVmVjdG9yPENvbnRyb2xFbnRyeT4mIGNvbnRyb2xTdGFjaywgY29u
c3QgRXhwcmVzc2lvbkxpc3QmIGV4cHJlc3Npb25TdGFjayk7CiAKQEAgLTM0Nyw2ICszNDgsMzUg
QEAgYm9vbCBWYWxpZGF0ZTo6YWRkQ2FsbCh1bnNpZ25lZCwgY29uc3QgU2lnbmF0dXJlKiBzaWdu
YXR1cmUsIGNvbnN0IFZlY3RvcjxFeHByZXMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBW
YWxpZGF0ZTo6YWRkQ2FsbEluZGlyZWN0KGNvbnN0IFNpZ25hdHVyZSogc2lnbmF0dXJlLCBjb25z
dCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KQor
eworICAgIGNvbnN0IGF1dG8gYXJndW1lbnRDb3VudCA9IHNpZ25hdHVyZS0+YXJndW1lbnRzLnNp
emUoKTsKKyAgICBpZiAoYXJndW1lbnRDb3VudCAhPSBhcmdzLnNpemUoKSAtIDEpIHsKKyAgICAg
ICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgICAgICBidWlsZGVyLmFwcGVuZCgiQXJpdHkg
bWlzbWF0Y2ggaW4gY2FsbF9pbmRpcmVjdCwgZXhwZWN0ZWQ6ICIpOworICAgICAgICBidWlsZGVy
LmFwcGVuZE51bWJlcihzaWduYXR1cmUtPmFyZ3VtZW50cy5zaXplKCkpOworICAgICAgICBidWls
ZGVyLmFwcGVuZCgiIGJ1dCBnb3Q6ICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihh
cmdzLnNpemUoKSk7CisgICAgICAgIG1fZXJyb3JNZXNzYWdlID0gYnVpbGRlci50b1N0cmluZygp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGFyZ3VtZW50Q291bnQ7ICsraSkgeworICAgICAgICBpZiAoYXJnc1tpXSAhPSBzaWdu
YXR1cmUtPmFyZ3VtZW50c1tpXSkgeworICAgICAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBtYWtl
U3RyaW5nKCJFeHBlY3RlZCBhcmd1bWVudCB0eXBlOiAiLCB0b1N0cmluZyhzaWduYXR1cmUtPmFy
Z3VtZW50c1tpXSksICIgZG9lcyBub3QgbWF0Y2ggcGFzc2VkIGFyZ3VtZW50IHR5cGU6ICIsIHRv
U3RyaW5nKGFyZ3NbaV0pKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGlmIChhcmdzLmxhc3QoKSAhPSBJMzIpIHsKKyAgICAgICAgbV9lcnJvck1l
c3NhZ2UgPSBtYWtlU3RyaW5nKCJFeHBlY3RlZCBjYWxsX2luZGlyZWN0IHRhcmdldCBpbmRleCB0
byBoYXZlIHR5cGU6IGkzMiBidXQgZ290IHR5cGU6ICIsIHRvU3RyaW5nKGFyZ3MubGFzdCgpKSk7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgcmVzdWx0ID0gc2lnbmF0
dXJlLT5yZXR1cm5UeXBlOworICAgIHJldHVybiB0cnVlOworfQorCiBib29sIFZhbGlkYXRlOjp1
bmlmeShjb25zdCBFeHByZXNzaW9uTGlzdCYgdmFsdWVzLCBjb25zdCBDb250cm9sVHlwZSYgYmxv
Y2spCiB7CiAgICAgQVNTRVJUKHZhbHVlcy5zaXplKCkgPD0gMSk7CkBAIC0zNzEsMTAgKzQwMSwx
MSBAQCB2b2lkIFZhbGlkYXRlOjpkdW1wKGNvbnN0IFZlY3RvcjxDb250cm9sRW50cnk+JiwgY29u
c3QgRXhwcmVzc2lvbkxpc3QmKQogICAgIC8vIFRoaW5rIG9mIHRoaXMgYXMgcGVuYW5jZSBmb3Ig
dGhlIHNpbiBvZiBiYWQgZXJyb3IgbWVzc2FnZXMuCiB9CiAKLVN0cmluZyB2YWxpZGF0ZUZ1bmN0
aW9uKGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgc2l6ZV90IGxlbmd0aCwgY29uc3QgU2lnbmF0dXJl
KiBzaWduYXR1cmUsIGNvbnN0IEZ1bmN0aW9uSW5kZXhTcGFjZSYgZnVuY3Rpb25JbmRleFNwYWNl
LCBjb25zdCBNZW1vcnlJbmZvcm1hdGlvbiYgbWVtb3J5KQorU3RyaW5nIHZhbGlkYXRlRnVuY3Rp
b24oY29uc3QgdWludDhfdCogc291cmNlLCBzaXplX3QgbGVuZ3RoLCBjb25zdCBTaWduYXR1cmUq
IHNpZ25hdHVyZSwgY29uc3QgSW1tdXRhYmxlRnVuY3Rpb25JbmRleFNwYWNlJiBmdW5jdGlvbklu
ZGV4U3BhY2UsIGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvKQogewotICAgIFZhbGlkYXRl
IGNvbnRleHQoc2lnbmF0dXJlLT5yZXR1cm5UeXBlLCBtZW1vcnkpOwotICAgIEZ1bmN0aW9uUGFy
c2VyPFZhbGlkYXRlPiB2YWxpZGF0b3IoY29udGV4dCwgc291cmNlLCBsZW5ndGgsIHNpZ25hdHVy
ZSwgZnVuY3Rpb25JbmRleFNwYWNlKTsKKyAgICBWYWxpZGF0ZSBjb250ZXh0KHNpZ25hdHVyZS0+
cmV0dXJuVHlwZSwgaW5mby5tZW1vcnkpOworICAgIEZ1bmN0aW9uUGFyc2VyPFZhbGlkYXRlPiB2
YWxpZGF0b3IoY29udGV4dCwgc291cmNlLCBsZW5ndGgsIHNpZ25hdHVyZSwgZnVuY3Rpb25JbmRl
eFNwYWNlLCBpbmZvKTsKKwogICAgIGlmICghdmFsaWRhdG9yLnBhcnNlKCkpIHsKICAgICAgICAg
Ly8gRklYTUU6IGFkZCBiZXR0ZXIgbG9jYXRpb24gaW5mb3JtYXRpb24gaGVyZS4gc2VlOiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0Mjg4CiAgICAgICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgbmV2ZXIgbm90IGhhdmUgYW4gZXJyb3IgbWVzc2FnZSBpZiB3ZSByZXR1
cm4gZmFsc2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFs
aWRhdGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21WYWxpZGF0ZS5oCmluZGV4
IDQ1NGY5ZjVmMDIzZWMwMmY1ZGI2OTFlMWJkYWM4MDdiMmRmYWJhZjEuLjg2MWZkNzI5ODY2NmVm
ZjE2YmQ4YzdjNWQyNzVlNmFlZjIwYjRlOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21WYWxpZGF0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21WYWxpZGF0ZS5oCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgV2FzbSB7CiAKLVN0cmluZyB2YWxpZGF0ZUZ1bmN0aW9uKGNvbnN0IHVpbnQ4X3QqLCBz
aXplX3QsIGNvbnN0IFNpZ25hdHVyZSosIGNvbnN0IEZ1bmN0aW9uSW5kZXhTcGFjZSYsIGNvbnN0
IE1lbW9yeUluZm9ybWF0aW9uJik7CitTdHJpbmcgdmFsaWRhdGVGdW5jdGlvbihjb25zdCB1aW50
OF90Kiwgc2l6ZV90LCBjb25zdCBTaWduYXR1cmUqLCBjb25zdCBJbW11dGFibGVGdW5jdGlvbklu
ZGV4U3BhY2UmLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYpOwogCiB9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6V2FzbQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9K
U1dlYkFzc2VtYmx5TW9kdWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pT
V2ViQXNzZW1ibHlNb2R1bGUuY3BwCmluZGV4IGRlNzczYjhmMDVmNzU4NjM1MjRkYzlmZDYzYmM1
NjI5ZWJjYzIzZmMuLjgzYTM5NzM0OGIxMTA3MzZhNjgwYTAyZThhOWJlZWVlODk1NDY3YmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1
bGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlN
b2R1bGUuY3BwCkBAIC0zOCw5ICszOCw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFz
c0luZm8gSlNXZWJBc3NlbWJseU1vZHVsZTo6c19pbmZvID0geyAiV2ViQXNzZW1ibHkuTW9kdWxl
IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1dlYkFzc2Vt
Ymx5TW9kdWxlKSB9OwogCi1KU1dlYkFzc2VtYmx5TW9kdWxlKiBKU1dlYkFzc2VtYmx5TW9kdWxl
OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc3RkOjp1bmlxdWVfcHRyPFdh
c206Ok1vZHVsZUluZm9ybWF0aW9uPiYmIG1vZHVsZUluZm9ybWF0aW9uLCBCYWc8Q2FsbExpbmtJ
bmZvPiYmIGNhbGxMaW5rSW5mb3MsIFZlY3RvcjxXYXNtOjpXYXNtVG9KU1N0dWI+JiYgd2FzbVRv
SlNTdHVicywgV2FzbTo6RnVuY3Rpb25JbmRleFNwYWNlJiYgZnVuY3Rpb25JbmRleFNwYWNlLCBT
eW1ib2xUYWJsZSogZXhwb3J0U3ltYm9sVGFibGUsIHVuc2lnbmVkIGNhbGxlZUNvdW50KQorSlNX
ZWJBc3NlbWJseU1vZHVsZSogSlNXZWJBc3NlbWJseU1vZHVsZTo6Y3JlYXRlKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIHN0ZDo6dW5pcXVlX3B0cjxXYXNtOjpNb2R1bGVJbmZvcm1hdGlv
bj4mJiBtb2R1bGVJbmZvcm1hdGlvbiwgQmFnPENhbGxMaW5rSW5mbz4mJiBjYWxsTGlua0luZm9z
LCBWZWN0b3I8V2FzbTo6V2FzbVRvSlNTdHViPiYmIHdhc21Ub0pTU3R1YnMsIFdhc206OkltbXV0
YWJsZUZ1bmN0aW9uSW5kZXhTcGFjZSYmIGZ1bmN0aW9uSW5kZXhTcGFjZSwgU3ltYm9sVGFibGUq
IGV4cG9ydFN5bWJvbFRhYmxlLCB1bnNpZ25lZCBjYWxsZWVDb3VudCkKIHsKLSAgICBhdXRvKiBp
bnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2ViQXNzZW1ibHlNb2R1bGU+
KHZtLmhlYXAsIGFsbG9jYXRpb25TaXplKGNhbGxlZUNvdW50KSkpIEpTV2ViQXNzZW1ibHlNb2R1
bGUodm0sIHN0cnVjdHVyZSwgc3RkOjpmb3J3YXJkPHN0ZDo6dW5pcXVlX3B0cjxXYXNtOjpNb2R1
bGVJbmZvcm1hdGlvbj4+KG1vZHVsZUluZm9ybWF0aW9uKSwgc3RkOjpmb3J3YXJkPEJhZzxDYWxs
TGlua0luZm8+PihjYWxsTGlua0luZm9zKSwgc3RkOjpmb3J3YXJkPFZlY3RvcjxXYXNtOjpXYXNt
VG9KU1N0dWI+Pih3YXNtVG9KU1N0dWJzKSwgc3RkOjpmb3J3YXJkPFdhc206OkZ1bmN0aW9uSW5k
ZXhTcGFjZT4oZnVuY3Rpb25JbmRleFNwYWNlKSwgY2FsbGVlQ291bnQpOworICAgIGF1dG8qIGlu
c3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNXZWJBc3NlbWJseU1vZHVsZT4o
dm0uaGVhcCwgYWxsb2NhdGlvblNpemUoY2FsbGVlQ291bnQpKSkgSlNXZWJBc3NlbWJseU1vZHVs
ZSh2bSwgc3RydWN0dXJlLCBzdGQ6OmZvcndhcmQ8c3RkOjp1bmlxdWVfcHRyPFdhc206Ok1vZHVs
ZUluZm9ybWF0aW9uPj4obW9kdWxlSW5mb3JtYXRpb24pLCBzdGQ6OmZvcndhcmQ8QmFnPENhbGxM
aW5rSW5mbz4+KGNhbGxMaW5rSW5mb3MpLCBzdGQ6OmZvcndhcmQ8VmVjdG9yPFdhc206Oldhc21U
b0pTU3R1Yj4+KHdhc21Ub0pTU3R1YnMpLCBzdGQ6OmZvcndhcmQ8V2FzbTo6SW1tdXRhYmxlRnVu
Y3Rpb25JbmRleFNwYWNlPihmdW5jdGlvbkluZGV4U3BhY2UpLCBjYWxsZWVDb3VudCk7CiAgICAg
aW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtLCBleHBvcnRTeW1ib2xUYWJsZSk7CiAgICAgcmV0
dXJuIGluc3RhbmNlOwogfQpAQCAtNTAsNyArNTAsNyBAQCBTdHJ1Y3R1cmUqIEpTV2ViQXNzZW1i
bHlNb2R1bGU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YgogICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAot
SlNXZWJBc3NlbWJseU1vZHVsZTo6SlNXZWJBc3NlbWJseU1vZHVsZShWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBzdGQ6OnVuaXF1ZV9wdHI8V2FzbTo6TW9kdWxlSW5mb3JtYXRpb24+JiYg
bW9kdWxlSW5mb3JtYXRpb24sIEJhZzxDYWxsTGlua0luZm8+JiYgY2FsbExpbmtJbmZvcywgVmVj
dG9yPFdhc206Oldhc21Ub0pTU3R1Yj4mJiB3YXNtVG9KU1N0dWJzLCBXYXNtOjpGdW5jdGlvbklu
ZGV4U3BhY2UmJiBmdW5jdGlvbkluZGV4U3BhY2UsIHVuc2lnbmVkIGNhbGxlZUNvdW50KQorSlNX
ZWJBc3NlbWJseU1vZHVsZTo6SlNXZWJBc3NlbWJseU1vZHVsZShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBzdGQ6OnVuaXF1ZV9wdHI8V2FzbTo6TW9kdWxlSW5mb3JtYXRpb24+JiYgbW9k
dWxlSW5mb3JtYXRpb24sIEJhZzxDYWxsTGlua0luZm8+JiYgY2FsbExpbmtJbmZvcywgVmVjdG9y
PFdhc206Oldhc21Ub0pTU3R1Yj4mJiB3YXNtVG9KU1N0dWJzLCBXYXNtOjpJbW11dGFibGVGdW5j
dGlvbkluZGV4U3BhY2UmJiBmdW5jdGlvbkluZGV4U3BhY2UsIHVuc2lnbmVkIGNhbGxlZUNvdW50
KQogICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQogICAgICwgbV9tb2R1bGVJbmZvcm1hdGlvbihX
VEZNb3ZlKG1vZHVsZUluZm9ybWF0aW9uKSkKICAgICAsIG1fY2FsbExpbmtJbmZvcyhXVEZNb3Zl
KGNhbGxMaW5rSW5mb3MpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvSlNXZWJBc3NlbWJseU1vZHVsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
SlNXZWJBc3NlbWJseU1vZHVsZS5oCmluZGV4IDA1ZDJjZjAxMGVjOGNkZDcyOTE4YmNhMjE3OWRi
ZmFjYWM5MGU1NWIuLjdiZTYwN2ExZGI0NjJmYWU4MDlkOTIxZTRhMTVkZWNiZWU1YzM3MTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1
bGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9k
dWxlLmgKQEAgLTQyLDE0ICs0MiwxNCBAQCBjbGFzcyBKU1dlYkFzc2VtYmx5TW9kdWxlIDogcHVi
bGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTRGVzdHJ1
Y3RpYmxlT2JqZWN0IEJhc2U7CiAKLSAgICBzdGF0aWMgSlNXZWJBc3NlbWJseU1vZHVsZSogY3Jl
YXRlKFZNJiwgU3RydWN0dXJlKiwgc3RkOjp1bmlxdWVfcHRyPFdhc206Ok1vZHVsZUluZm9ybWF0
aW9uPiYmLCBCYWc8Q2FsbExpbmtJbmZvPiYmLCBWZWN0b3I8V2FzbTo6V2FzbVRvSlNTdHViPiYm
LCBXYXNtOjpGdW5jdGlvbkluZGV4U3BhY2UmJiwgU3ltYm9sVGFibGUqLCB1bnNpZ25lZCk7Cisg
ICAgc3RhdGljIEpTV2ViQXNzZW1ibHlNb2R1bGUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIHN0
ZDo6dW5pcXVlX3B0cjxXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbj4mJiwgQmFnPENhbGxMaW5rSW5m
bz4mJiwgVmVjdG9yPFdhc206Oldhc21Ub0pTU3R1Yj4mJiwgV2FzbTo6SW1tdXRhYmxlRnVuY3Rp
b25JbmRleFNwYWNlJiYsIFN5bWJvbFRhYmxlKiwgdW5zaWduZWQpOwogICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAK
ICAgICBERUNMQVJFX0lORk87CiAKICAgICBjb25zdCBXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbiYg
bW9kdWxlSW5mb3JtYXRpb24oKSBjb25zdCB7IHJldHVybiAqbV9tb2R1bGVJbmZvcm1hdGlvbi5n
ZXQoKTsgfQogICAgIFN5bWJvbFRhYmxlKiBleHBvcnRTeW1ib2xUYWJsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZXhwb3J0U3ltYm9sVGFibGUuZ2V0KCk7IH0KLSAgICBXYXNtOjpTaWduYXR1cmUqIHNp
Z25hdHVyZUZvckZ1bmN0aW9uSW5kZXhTcGFjZSh1bnNpZ25lZCBmdW5jdGlvbkluZGV4U3BhY2Up
IGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25JbmRleFNwYWNlLmF0KGZ1bmN0aW9uSW5kZXhTcGFj
ZSkuc2lnbmF0dXJlOyB9CisgICAgV2FzbTo6U2lnbmF0dXJlKiBzaWduYXR1cmVGb3JGdW5jdGlv
bkluZGV4U3BhY2UodW5zaWduZWQgZnVuY3Rpb25JbmRleFNwYWNlKSBjb25zdCB7IEFTU0VSVChm
dW5jdGlvbkluZGV4U3BhY2UgPCBtX2Z1bmN0aW9uSW5kZXhTcGFjZS5zaXplKTsgcmV0dXJuIG1f
ZnVuY3Rpb25JbmRleFNwYWNlLmJ1ZmZlci5nZXQoKVtmdW5jdGlvbkluZGV4U3BhY2VdLnNpZ25h
dHVyZTsgfQogICAgIHVuc2lnbmVkIGltcG9ydENvdW50KCkgY29uc3QgeyByZXR1cm4gbV93YXNt
VG9KU1N0dWJzLnNpemUoKTsgfQogCiAgICAgSlNXZWJBc3NlbWJseUNhbGxlZSogY2FsbGVlRnJv
bUZ1bmN0aW9uSW5kZXhTcGFjZSh1bnNpZ25lZCBmdW5jdGlvbkluZGV4U3BhY2UpCkBAIC02NSw4
ICs2NSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8V3JpdGVCYXJy
aWVyPEpTV2ViQXNzZW1ibHlDYWxsZWU+Kj4oYml0d2lzZV9jYXN0PGNoYXIqPih0aGlzKSArIG9m
ZnNldE9mQ2FsbGVlcygpKTsKICAgICB9CiAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9m
RnVuY3Rpb25JbmRleFNwYWNlKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTV2ViQXNzZW1i
bHlNb2R1bGUsIG1fZnVuY3Rpb25JbmRleFNwYWNlKTsgfQorCiBwcm90ZWN0ZWQ6Ci0gICAgSlNX
ZWJBc3NlbWJseU1vZHVsZShWTSYsIFN0cnVjdHVyZSosIHN0ZDo6dW5pcXVlX3B0cjxXYXNtOjpN
b2R1bGVJbmZvcm1hdGlvbj4mJiwgQmFnPENhbGxMaW5rSW5mbz4mJiwgVmVjdG9yPFdhc206Oldh
c21Ub0pTU3R1Yj4mJiwgV2FzbTo6RnVuY3Rpb25JbmRleFNwYWNlJiYsIHVuc2lnbmVkIGNhbGxl
ZUNvdW50KTsKKyAgICBKU1dlYkFzc2VtYmx5TW9kdWxlKFZNJiwgU3RydWN0dXJlKiwgc3RkOjp1
bmlxdWVfcHRyPFdhc206Ok1vZHVsZUluZm9ybWF0aW9uPiYmLCBCYWc8Q2FsbExpbmtJbmZvPiYm
LCBWZWN0b3I8V2FzbTo6V2FzbVRvSlNTdHViPiYmLCBXYXNtOjpJbW11dGFibGVGdW5jdGlvbklu
ZGV4U3BhY2UmJiwgdW5zaWduZWQgY2FsbGVlQ291bnQpOwogICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mLCBTeW1ib2xUYWJsZSopOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7
CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwpA
QCAtODYsNyArODgsNyBAQCBwcml2YXRlOgogICAgIEJhZzxDYWxsTGlua0luZm8+IG1fY2FsbExp
bmtJbmZvczsKICAgICBXcml0ZUJhcnJpZXI8U3ltYm9sVGFibGU+IG1fZXhwb3J0U3ltYm9sVGFi
bGU7CiAgICAgVmVjdG9yPFdhc206Oldhc21Ub0pTU3R1Yj4gbV93YXNtVG9KU1N0dWJzOwotICAg
IFdhc206OkZ1bmN0aW9uSW5kZXhTcGFjZSBtX2Z1bmN0aW9uSW5kZXhTcGFjZTsKKyAgICBjb25z
dCBXYXNtOjpJbW11dGFibGVGdW5jdGlvbkluZGV4U3BhY2UgbV9mdW5jdGlvbkluZGV4U3BhY2U7
CiAgICAgdW5zaWduZWQgbV9jYWxsZWVDb3VudDsKIH07CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
Q2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDI2NmQzZWFmMWQ1YWE1NDBkNjI2
ZDhmYWNhMjMzNWY3YTMzOWUzOC4uYzNjNWMwNTJjZGUxMTg4NTFhZDg5NWQ2YzU4OGQxYjIzNDgy
MDVlZCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMCBAQAorMjAxNi0xMi0wOSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWls
bGVyQGFwcGxlLmNvbT4KKworICAgICAgICBXYXNtIHNob3VsZCBzdXBwb3J0IGNhbGxfaW5kaXJl
Y3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTcx
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2Fz
bS9CdWlsZGVyLmpzOgorICAgICAgICAqIHdhc20vZnVuY3Rpb24tdGVzdHMvY2FsbC1pbmRpcmVj
dC1wYXJhbXMuanM6IEFkZGVkLgorICAgICAgICAqIHdhc20vZnVuY3Rpb24tdGVzdHMvY2FsbC1p
bmRpcmVjdC5qczogQWRkZWQuCisgICAgICAgICogd2FzbS9qcy1hcGkvY2FsbC1pbmRpcmVjdC5q
czogQWRkZWQuCisgICAgICAgIChjb25zdC53YXNtTW9kdWxlV2hpY2hJbXBvcnRKUyk6CisgICAg
ICAgIChNb25vbW9ycGhpY0ltcG9ydCk6CisgICAgICAgIChQb2x5cGhpYzJJbXBvcnQpOgorICAg
ICAgICAoVmlydHVhbEltcG9ydCk6CisgICAgICAgICogd2FzbS93YXNtLmpzb246CisKIDIwMTYt
MTItMDkgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYkFz
c2VtYmx5IEpTIEFQSTogaW1wbGVtZW50IHN0YXJ0IGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3dhc20vQnVpbGRlci5qcyBiL0pTVGVzdHMvd2FzbS9CdWlsZGVyLmpzCmluZGV4IGExZjgw
YjcwZmFhMzg5ZmUwMmUwODczMmNlODZhOGJlOGJiNThlOTkuLjI1OTEyMTY2YzgzYjJkMTM1M2Mx
MWI0MTNiYjNiNmNlOTc0NjkxMzAgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9CdWlsZGVyLmpz
CisrKyBiL0pTVGVzdHMvd2FzbS9CdWlsZGVyLmpzCkBAIC0yMzYsNiArMjM2LDcgQEAgY29uc3Qg
X2NoZWNrSW1tcyA9IChvcCwgaW1tcywgZXhwZWN0ZWRJbW1zLCByZXQpID0+IHsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlICJ0YXJnZXRfY291bnQiOiBicmVhazsgLy8gaW1wcm92
ZSBjaGVja2luZyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIx
CiAgICAgICAgIGNhc2UgInRhcmdldF90YWJsZSI6IGJyZWFrOyAvLyBpbXByb3ZlIGNoZWNraW5n
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0MjEKKyAgICAgICAg
Y2FzZSAicmVzZXJ2ZWQiOiBicmVhazsgLy8gaW1wcm92ZSBjaGVja2luZyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCiAgICAgICAgIGRlZmF1bHQ6IHRocm93
IG5ldyBFcnJvcihgSW1wbGVtZW50YXRpb24gcHJvYmxlbTogdW5oYW5kbGVkIGltbWVkaWF0ZSAi
JHtleHBlY3QubmFtZX0iIG9uICIke29wfSJgKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdp
dCBhL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy9jYWxsLWluZGlyZWN0LXBhcmFtcy5qcyBi
L0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy9jYWxsLWluZGlyZWN0LXBhcmFtcy5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40MTQ4MjExYThmMjlkMTFjYjBhNjI1MGEyMGIyZGFiODhlMDE4NzkzCi0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL2NhbGwtaW5kaXJlY3QtcGFy
YW1zLmpzCkBAIC0wLDAgKzEsMjggQEAKK2ltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIu
anMnCisKK2NvbnN0IGIgPSBuZXcgQnVpbGRlcigpOworYi5UeXBlKCkuRW5kKCkKKyAgICAuRnVu
Y3Rpb24oKS5FbmQoKQorICAgIC5Db2RlKCkKKworICAgIC5GdW5jdGlvbih7IHBhcmFtczogWyJp
MzIiXSwgcmV0OiAiaTMyIiB9KQorICAgIC5JMzJDb25zdCgxKQorICAgIC5FbmQoKQorCisgICAg
LkZ1bmN0aW9uKHsgcGFyYW1zOiBbImkzMiJdLCByZXQ6ICJpMzIiIH0pCisgICAgLkdldExvY2Fs
KDApCisgICAgLkVuZCgpCisKKyAgICAuRnVuY3Rpb24oeyBwYXJhbXM6IFsiaTMyIiwgImkzMiJd
LCByZXQ6ICJpMzIiIH0pCisgICAgLkdldExvY2FsKDEpCisgICAgLkdldExvY2FsKDApCisgICAg
LkNhbGxJbmRpcmVjdCgwLCAwKQorICAgIC5FbmQoKQorCisKK2NvbnN0IGJpbiA9IGIuV2ViQXNz
ZW1ibHkoKQorYmluLnRyaW0oKTsKK3Rlc3RXYXNtTW9kdWxlRnVuY3Rpb25zKGJpbi5nZXQoKSwg
MywgW10sIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgW1t7IHR5cGU6ICJpMzIiLCB2YWx1
ZTogMSB9LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDAgfSwgeyB0eXBlOiAiaTMyIiwgdmFsdWU6
IDQgfV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTog
NCB9LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDEgfSwgeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDQg
fV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgXSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dh
c20vZnVuY3Rpb24tdGVzdHMvY2FsbC1pbmRpcmVjdC5qcyBiL0pTVGVzdHMvd2FzbS9mdW5jdGlv
bi10ZXN0cy9jYWxsLWluZGlyZWN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0YjVmYmU4MTg0YzdjYmE5Mjk1
OGUwNDQyYmIzYTRkZTdjOTZkODkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3dhc20vZnVu
Y3Rpb24tdGVzdHMvY2FsbC1pbmRpcmVjdC5qcwpAQCAtMCwwICsxLDI3IEBACitpbXBvcnQgQnVp
bGRlciBmcm9tICcuLi9CdWlsZGVyLmpzJworCitjb25zdCBiID0gbmV3IEJ1aWxkZXIoKTsKK2Iu
VHlwZSgpLkVuZCgpCisgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAuQ29kZSgpCisKKyAgICAu
RnVuY3Rpb24oeyBwYXJhbXM6IFtdLCByZXQ6ICJpMzIiIH0pCisgICAgLkkzMkNvbnN0KDEpCisg
ICAgLkVuZCgpCisKKyAgICAuRnVuY3Rpb24oeyBwYXJhbXM6IFtdLCByZXQ6ICJpMzIiIH0pCisg
ICAgLkkzMkNvbnN0KDIpCisgICAgLkVuZCgpCisKKyAgICAuRnVuY3Rpb24oeyBwYXJhbXM6IFsi
aTMyIl0sIHJldDogImkzMiIgfSkKKyAgICAuR2V0TG9jYWwoMCkKKyAgICAuQ2FsbEluZGlyZWN0
KDAsIDApCisgICAgLkVuZCgpCisKKworY29uc3QgYmluID0gYi5XZWJBc3NlbWJseSgpCitiaW4u
dHJpbSgpOwordGVzdFdhc21Nb2R1bGVGdW5jdGlvbnMoYmluLmdldCgpLCAzLCBbXSwgW10sCisg
ICAgICAgICAgICAgICAgICAgICAgICBbW3sgdHlwZTogImkzMiIsIHZhbHVlOiAxIH0sIFt7IHR5
cGU6ICJpMzIiLCB2YWx1ZTogMCB9XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgW3sgdHlw
ZTogImkzMiIsIHZhbHVlOiAxIH0sIFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMCB9XV0sCisgICAg
ICAgICAgICAgICAgICAgICAgICBdKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9qcy1hcGkv
Y2FsbC1pbmRpcmVjdC5qcyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvY2FsbC1pbmRpcmVjdC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iODI3ZWY5NWJkZjkzZDM4ZmQyMjA1YjA0MWE3ZmE4NmY3OTY3MTU1Ci0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL2pzLWFwaS9jYWxsLWluZGlyZWN0LmpzCkBAIC0w
LDAgKzEsODcgQEAKK2ltcG9ydCAqIGFzIGFzc2VydCBmcm9tICcuLi9hc3NlcnQuanMnOworaW1w
b3J0IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRlci5qcyc7CisKK2NvbnN0IHdhc21Nb2R1bGVXaGlj
aEltcG9ydEpTID0gKCkgPT4geworICAgIGNvbnN0IGJ1aWxkZXIgPSAobmV3IEJ1aWxkZXIoKSkK
KyAgICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgICAuSW1wb3J0KCkKKyAgICAgICAgICAgIC5G
dW5jdGlvbigiaW1wIiwgImZ1bmMiLCB7IHBhcmFtczogWyJpMzIiXSB9KQorICAgICAgICAuRW5k
KCkKKyAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgLkV4cG9ydCgpCisgICAgICAg
ICAgICAuRnVuY3Rpb24oImNoYW5nZUNvdW50ZXIiKQorICAgICAgICAuRW5kKCkKKyAgICAgICAg
LkNvZGUoKQorICAgICAgICAgICAgLkZ1bmN0aW9uKCJjaGFuZ2VDb3VudGVyIiwgeyBwYXJhbXM6
IFsiaTMyIiwgImkzMiJdIH0pCisgICAgICAgICAgICAgICAgLkkzMkNvbnN0KDQyKQorICAgICAg
ICAgICAgICAgIC5HZXRMb2NhbCgwKQorICAgICAgICAgICAgICAgIC5JMzJBZGQoKQorICAgICAg
ICAgICAgICAgIC5HZXRMb2NhbCgxKQorICAgICAgICAgICAgICAgIC5DYWxsSW5kaXJlY3QoMCwg
MCkgLy8gQ2FsbHMgZnVuYyhwYXJhbVswXSArIDQyKS4KKyAgICAgICAgICAgIC5FbmQoKQorICAg
ICAgICAuRW5kKCk7CisgICAgY29uc3QgYmluID0gYnVpbGRlci5XZWJBc3NlbWJseSgpLmdldCgp
OworICAgIGNvbnN0IG1vZHVsZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluKTsKKyAgICBy
ZXR1cm4gbW9kdWxlOworfTsKKworCisoZnVuY3Rpb24gTW9ub21vcnBoaWNJbXBvcnQoKSB7Cisg
ICAgbGV0IGNvdW50ZXIgPSAwOworICAgIGNvbnN0IGNvdW50ZXJTZXR0ZXIgPSB2ID0+IGNvdW50
ZXIgPSB2OworICAgIGNvbnN0IG1vZHVsZSA9IHdhc21Nb2R1bGVXaGljaEltcG9ydEpTKCk7Cisg
ICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7IGlt
cDogeyBmdW5jOiBjb3VudGVyU2V0dGVyIH0gfSk7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0
MDk2OyArK2kpIHsKKyAgICAgICAgLy8gSW52b2tlIHRoaXMgYSBidW5jaCBvZiB0aW1lcyB0byBt
YWtlIHN1cmUgdGhlIElDIGluIHRoZSB3YXNtIC0+IEpTIHN0dWIgd29ya3MgY29ycmVjdGx5Lgor
ICAgICAgICBpbnN0YW5jZS5leHBvcnRzLmNoYW5nZUNvdW50ZXIoaSwgMCk7CisgICAgICAgIGFz
c2VydC5lcShjb3VudGVyLCBpICsgNDIpOworICAgIH0KK30pKCk7CisKKyhmdW5jdGlvbiBQb2x5
cGhpYzJJbXBvcnQoKSB7CisgICAgbGV0IGNvdW50ZXJBID0gMDsKKyAgICBsZXQgY291bnRlckIg
PSB1bmRlZmluZWQ7CisgICAgY29uc3QgY291bnRlckFTZXR0ZXIgPSB2ID0+IGNvdW50ZXJBID0g
djsKKyAgICBjb25zdCBjb3VudGVyQlNldHRlciA9IHYgPT4gY291bnRlckIgPSB7IHZhbHVlQjog
diB9OworICAgIGNvbnN0IG1vZHVsZSA9IHdhc21Nb2R1bGVXaGljaEltcG9ydEpTKCk7CisgICAg
Y29uc3QgaW5zdGFuY2VBID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBpbXA6
IHsgZnVuYzogY291bnRlckFTZXR0ZXIgfSB9KTsKKyAgICBjb25zdCBpbnN0YW5jZUIgPSBuZXcg
V2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7IGltcDogeyBmdW5jOiBjb3VudGVyQlNldHRl
ciB9IH0pOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMjA0ODsgKytpKSB7CisgICAgICAgIGlu
c3RhbmNlQS5leHBvcnRzLmNoYW5nZUNvdW50ZXIoaSwgMCk7CisgICAgICAgIGFzc2VydC5pc0Eo
Y291bnRlckEsICJudW1iZXIiKTsKKyAgICAgICAgYXNzZXJ0LmVxKGNvdW50ZXJBLCBpICsgNDIp
OworICAgICAgICBpbnN0YW5jZUIuZXhwb3J0cy5jaGFuZ2VDb3VudGVyKGksIDApOworICAgICAg
ICBhc3NlcnQuaXNBKGNvdW50ZXJCLCAib2JqZWN0Iik7CisgICAgICAgIGFzc2VydC5lcShjb3Vu
dGVyQi52YWx1ZUIsIGkgKyA0Mik7CisgICAgfQorfSkoKTsKKworKGZ1bmN0aW9uIFZpcnR1YWxJ
bXBvcnQoKSB7CisgICAgY29uc3QgbnVtID0gMTA7IC8vIEl0J3MgZGVmaW5pdGVseSBnb2luZyB2
aXJ0dWFsIGF0IDEwIQorICAgIGxldCBjb3VudGVycyA9IFswLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwXTsKKyAgICBjb25zdCBjb3VudGVyU2V0dGVycyA9IFsKKyAgICAgICAgdiA9PiBjb3Vu
dGVyc1swXSA9IHYsCisgICAgICAgIHYgPT4gY291bnRlcnNbMV0gPSB2ICsgMSwKKyAgICAgICAg
diA9PiBjb3VudGVyc1syXSA9IHYgKyAyLAorICAgICAgICB2ID0+IGNvdW50ZXJzWzNdID0gdiAr
IDMsCisgICAgICAgIHYgPT4gY291bnRlcnNbNF0gPSB2ICsgNCwKKyAgICAgICAgdiA9PiBjb3Vu
dGVyc1s1XSA9IHYgKyA1LAorICAgICAgICB2ID0+IGNvdW50ZXJzWzZdID0gdiArIDYsCisgICAg
ICAgIHYgPT4gY291bnRlcnNbN10gPSB2ICsgNywKKyAgICAgICAgdiA9PiBjb3VudGVyc1s4XSA9
IHYgKyA4LAorICAgICAgICB2ID0+IGNvdW50ZXJzWzldID0gdiArIDksCisgICAgXTsKKyAgICBh
c3NlcnQuZXEoY291bnRlcnMubGVuZ3RoLCBudW0pOworICAgIGFzc2VydC5lcShjb3VudGVyU2V0
dGVycy5sZW5ndGgsIG51bSk7CisgICAgY29uc3QgbW9kdWxlID0gd2FzbU1vZHVsZVdoaWNoSW1w
b3J0SlMoKTsKKyAgICBsZXQgaW5zdGFuY2VzID0gW107CisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCBudW07ICsraSkKKyAgICAgICAgaW5zdGFuY2VzW2ldID0gbmV3IFdlYkFzc2VtYmx5Lkluc3Rh
bmNlKG1vZHVsZSwgeyBpbXA6IHsgZnVuYzogY291bnRlclNldHRlcnNbaV0gfSB9KTsKKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDIwNDg7ICsraSkgeworICAgICAgICBmb3IgKGxldCBqID0gMDsg
aiA8IG51bTsgKytqKSB7CisgICAgICAgICAgICBpbnN0YW5jZXNbal0uZXhwb3J0cy5jaGFuZ2VD
b3VudGVyKGksIDApOworICAgICAgICAgICAgYXNzZXJ0LmlzQShjb3VudGVyc1tqXSwgIm51bWJl
ciIpOworICAgICAgICAgICAgYXNzZXJ0LmVxKGNvdW50ZXJzW2pdLCBpICsgNDIgKyBqKTsKKyAg
ICAgICAgfQorICAgIH0KK30pKCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vd2FzbS5qc29u
IGIvSlNUZXN0cy93YXNtL3dhc20uanNvbgppbmRleCA0YjhmYjE5YTg3NTZhNjEyYzhjZWVjNzk2
NDYzNmMzNGU3MTBiMmY3Li5lYzBlZmM1ZDU3ZjM4NzZlZmE2YzNkODcxYTI4MzA2YmU3MDBhMGU0
IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vd2FzbS5qc29uCisrKyBiL0pTVGVzdHMvd2FzbS93
YXNtLmpzb24KQEAgLTY0LDcgKzY0LDcgQEAKICAgICAgICAgImdldF9nbG9iYWwiOiAgICAgICAg
ICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDM1LCAicmV0dXJuIjogWyJn
bG9iYWwiXSwgICAicGFyYW1ldGVyIjogW10sICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRp
YXRlIjogW3sibmFtZSI6ICJnbG9iYWxfaW5kZXgiLCAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAi
cmVhZCBhIGdsb2JhbCB2YXJpYWJsZSIgfSwKICAgICAgICAgInNldF9nbG9iYWwiOiAgICAgICAg
ICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZhbHVlIjogIDM2LCAicmV0dXJuIjogWyIi
XSwgICAgICAgICAicGFyYW1ldGVyIjogWyJnbG9iYWwiXSwgICAgICAgICAgICAgICAiaW1tZWRp
YXRlIjogW3sibmFtZSI6ICJnbG9iYWxfaW5kZXgiLCAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAi
d3JpdGUgYSBnbG9iYWwgdmFyaWFibGUiIH0sCiAgICAgICAgICJjYWxsIjogICAgICAgICAgICAg
ICAgeyAiY2F0ZWdvcnkiOiAiY2FsbCIsICAgICAgICJ2YWx1ZSI6ICAxNiwgInJldHVybiI6IFsi
Y2FsbCJdLCAgICAgInBhcmFtZXRlciI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgImltbWVk
aWF0ZSI6IFt7Im5hbWUiOiAiZnVuY3Rpb25faW5kZXgiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0s
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
ImNhbGwgYSBmdW5jdGlvbiBieSBpdHMgaW5kZXgiIH0sCi0gICAgICAgICJjYWxsX2luZGlyZWN0
IjogICAgICAgeyAiY2F0ZWdvcnkiOiAiY2FsbCIsICAgICAgICJ2YWx1ZSI6ICAxNywgInJldHVy
biI6IFsiY2FsbCJdLCAgICAgInBhcmFtZXRlciI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAg
ImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAidHlwZV9pbmRleCIsICAgICAidHlwZSI6ICJ2YXJ1aW50
MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0
aW9uIjogImNhbGwgYSBmdW5jdGlvbiBpbmRpcmVjdCB3aXRoIGFuIGV4cGVjdGVkIHNpZ25hdHVy
ZSIgfSwKKyAgICAgICAgImNhbGxfaW5kaXJlY3QiOiAgICAgICB7ICJjYXRlZ29yeSI6ICJjYWxs
IiwgICAgICAgInZhbHVlIjogIDE3LCAicmV0dXJuIjogWyJjYWxsIl0sICAgICAicGFyYW1ldGVy
IjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJ0eXBl
X2luZGV4IiwgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAicmVzZXJ2ZWQiLCAg
ICAgInR5cGUiOiAidmFydWludDEifV0sICJkZXNjcmlwdGlvbiI6ICJjYWxsIGEgZnVuY3Rpb24g
aW5kaXJlY3Qgd2l0aCBhbiBleHBlY3RlZCBzaWduYXR1cmUiIH0sCiAgICAgICAgICJpMzIubG9h
ZDhfcyI6ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAibWVtb3J5IiwgICAgICJ2YWx1ZSI6ICA0NCwg
InJldHVybiI6IFsiaTMyIl0sICAgICAgInBhcmFtZXRlciI6IFsiYWRkciJdLCAgICAgICAgICAg
ICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2
YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRl
c2NyaXB0aW9uIjogImxvYWQgZnJvbSBtZW1vcnkiIH0sCiAgICAgICAgICJpMzIubG9hZDhfdSI6
ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAibWVtb3J5IiwgICAgICJ2YWx1ZSI6ICA0NSwgInJldHVy
biI6IFsiaTMyIl0sICAgICAgInBhcmFtZXRlciI6IFsiYWRkciJdLCAgICAgICAgICAgICAgICAg
ImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50
MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0
aW9uIjogImxvYWQgZnJvbSBtZW1vcnkiIH0sCiAgICAgICAgICJpMzIubG9hZDE2X3MiOiAgICAg
ICAgeyAiY2F0ZWdvcnkiOiAibWVtb3J5IiwgICAgICJ2YWx1ZSI6ICA0NiwgInJldHVybiI6IFsi
aTMyIl0sICAgICAgInBhcmFtZXRlciI6IFsiYWRkciJdLCAgICAgICAgICAgICAgICAgImltbWVk
aWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwg
eyJuYW1lIjogIm9mZnNldCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9uIjog
ImxvYWQgZnJvbSBtZW1vcnkiIH0sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296779</attachid>
            <date>2016-12-09 22:26:31 -0800</date>
            <delta_ts>2016-12-09 22:38:36 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-165718-20161209222547.patch</filename>
            <type>text/plain</type>
            <size>45387</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA5NjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MThkZDU4NjdlMDliNzFkYjE3ZDM2ZTg0NDJhNGE3OGQ2NjAxNzU1Li5kNmJhMWFhMmFlOThmOWE1
NmY0MmQxZWRlZDEwNWE4MmM2NjBhY2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NSBAQAorMjAxNi0xMi0wOSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBXYXNtIHNob3VsZCBzdXBwb3J0IGNhbGxfaW5kaXJlY3QKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTcxOAorCisgICAg
ICAgIFJldmlld2VkIGJ5IEZpbGlwIFBpemxvLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBz
dXBwb3J0IGZvciBjYWxsX2luZGlyZWN0LiBUaGUgYmFzaWMgZnJhbWV3b3JrIGZvcgorICAgICAg
ICBhbiBpbmRpcmVjdCBjYWxsIGlzIHRoYXQgdGhlIG1vZHVsZSBob2xkcyBhIGJ1ZmZlciBjb250
YWluaW5nIGEKKyAgICAgICAgc3R1YiBmb3IgZWFjaCBmdW5jdGlvbiBpbiB0aGUgaW5kZXggc3Bh
Y2UuIFdoZW5ldmVyIGEgZnVuY3Rpb24KKyAgICAgICAgbmVlZHMgdG8gZG8gYW4gaW5kaXJlY3Qg
Y2FsbCBpdCBnZXRzIGEgaW5kZXggaW50byB0aGF0IHRhYmxlLiBJbgorICAgICAgICBvcmRlciB0
byBlbnN1cmUgY2FsbF9pbmRpcmVjdCBpcyBjYWxsaW5nIGEgdmFsaWQgZnVuY3Rpb24gdGhlCisg
ICAgICAgIGZ1bmN0aW9uSW5kZXhTcGFjZSBhbHNvIG5lZWRzIGEgcG9pbnRlciB0byBhIGNhbm9u
aWNhbGl6ZWQKKyAgICAgICAgc2lnbmF0dXJlLiBXaGVuIG1ha2luZyBhbiBpbmRpcmVjdCBjYWxs
LCB3ZSBmaXJzdCBjaGVjayB0aGUgaW5kZXgKKyAgICAgICAgaXMgaW4gcmFuZ2UsIHRoZW4gY2hl
Y2sgdGhlIHNpZ25hdHVyZSBtYXRjaGVzIHRoZSB2YWx1ZSB3ZSB3ZXJlIGdpdmVuLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggYWxzbyBkaWZmZXJlbnRpYXRlcyBiZXR3ZWVuIEZ1bmN0aW9uSW5kZXhT
cGFjZXMgYW5kCisgICAgICAgIEltbXV0YWJsZUZ1bmN0aW9uSW5kZXhTcGFjZXMuIFNpbmNlIHdl
IGRvbid0IGtub3cgdGhlIHNpemUgb2YgdGhlCisgICAgICAgIEZ1bmN0aW9uSW5kZXhTcGFjZSB3
aGVuIHdlIHN0YXJ0IHBhcnNpbmcgd2UgbmVlZCB0byBiZSBhYmxlIHRvCisgICAgICAgIHJlc2l6
ZSB0aGUgSW5kZXhTcGFjZS4gSG93ZXZlciwgb25jZSB3ZSBoYXZlIGZpbmlzaGVkIHBhcnNpbmcg
YWxsCisgICAgICAgIHRoZSBzZWN0aW9ucyB3ZSB3YW50IHRvIHByZXZlbnQgYW4gcmVsb2NhdGlv
biBvZiB0aGUgZnVuY3Rpb24KKyAgICAgICAgaW5kZXggc3BhY2UgcG9pbnRlci4KKworICAgICAg
ICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lS
R2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVy
YXRvcjo6YWRkQ2FsbCk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZENh
bGxJbmRpcmVjdCk6CisgICAgICAgIChKU0M6Oldhc206OmNyZWF0ZUpTVG9XYXNtV3JhcHBlcik6
CisgICAgICAgIChKU0M6Oldhc206OnBhcnNlQW5kQ29tcGlsZSk6CisgICAgICAgICogd2FzbS9X
YXNtQjNJUkdlbmVyYXRvci5oOgorICAgICAgICAqIHdhc20vV2FzbUNhbGxpbmdDb252ZW50aW9u
Lmg6CisgICAgICAgIChKU0M6Oldhc206OkNhbGxpbmdDb252ZW50aW9uOjpzZXR1cENhbGwpOgor
ICAgICAgICAqIHdhc20vV2FzbUZvcm1hdC5oOgorICAgICAgICAqIHdhc20vV2FzbUZ1bmN0aW9u
UGFyc2VyLmg6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2VyOjpzZXRFcnJvck1l
c3NhZ2UpOgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6RnVu
Y3Rpb25QYXJzZXIpOgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvblBhcnNlcjxDb250ZXh0
Pjo6cGFyc2VFeHByZXNzaW9uKToKKyAgICAgICAgKiB3YXNtL1dhc21QbGFuLmNwcDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6UGxhbjo6cnVuKToKKyAgICAgICAgKiB3YXNtL1dhc21QbGFuLmg6Cisg
ICAgICAgIChKU0M6Oldhc206OlBsYW46OnRha2VGdW5jdGlvbkluZGV4U3BhY2UpOgorICAgICAg
ICAqIHdhc20vV2FzbVZhbGlkYXRlLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6VmFsaWRhdGU6
OmFkZENhbGxJbmRpcmVjdCk6CisgICAgICAgIChKU0M6Oldhc206OnZhbGlkYXRlRnVuY3Rpb24p
OgorICAgICAgICAqIHdhc20vV2FzbVZhbGlkYXRlLmg6CisgICAgICAgICogd2FzbS9qcy9KU1dl
YkFzc2VtYmx5TW9kdWxlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseU1vZHVsZTo6
Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseU1vZHVsZTo6SlNXZWJBc3NlbWJs
eU1vZHVsZSk6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmg6CisgICAg
ICAgIChKU0M6OkpTV2ViQXNzZW1ibHlNb2R1bGU6OnNpZ25hdHVyZUZvckZ1bmN0aW9uSW5kZXhT
cGFjZSk6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlNb2R1bGU6Om9mZnNldE9mRnVuY3Rp
b25JbmRleFNwYWNlKToKKwogMjAxNi0xMi0wOSAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgV2ViQXNzZW1ibHkgSlMgQVBJOiBpbXBsZW1lbnQgc3RhcnQgZnVu
Y3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2Vu
ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9y
LmNwcAppbmRleCA4MjBlNTg4MTI2YTY3NjYyNTU0NzFmYzk2MDEzY2JhN2FiZTU5NGUyLi43MDg1
NjViZWM4ZWJjNWFjOWI5ODEyYTFiMzU3MGFjN2Q3NDNiMjcwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCkBAIC00MCw2ICs0MCw4IEBA
CiAjaW5jbHVkZSAiQjNWYXJpYWJsZVZhbHVlLmgiCiAjaW5jbHVkZSAiQjNXYXNtQWRkcmVzc1Zh
bHVlLmgiCiAjaW5jbHVkZSAiQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oIgorI2luY2x1ZGUgIkpT
V2ViQXNzZW1ibHlJbnN0YW5jZS5oIgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNb2R1bGUuaCIK
ICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKICNpbmNsdWRlICJXYXNtQ2FsbGluZ0NvbnZl
bnRpb24uaCIKICNpbmNsdWRlICJXYXNtRnVuY3Rpb25QYXJzZXIuaCIKQEAgLTEzMCw3ICsxMzIs
NyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3RleHByIEV4cHJlc3Npb25UeXBlIGVtcHR5
RXhwcmVzc2lvbiA9IG51bGxwdHI7CiAKLSAgICBCM0lSR2VuZXJhdG9yKE1lbW9yeUluZm9ybWF0
aW9uJiwgUHJvY2VkdXJlJiwgV2FzbUludGVybmFsRnVuY3Rpb24qLCBWZWN0b3I8VW5saW5rZWRX
YXNtVG9XYXNtQ2FsbD4mKTsKKyAgICBCM0lSR2VuZXJhdG9yKGNvbnN0IE1lbW9yeUluZm9ybWF0
aW9uJiwgUHJvY2VkdXJlJiwgV2FzbUludGVybmFsRnVuY3Rpb24qLCBWZWN0b3I8VW5saW5rZWRX
YXNtVG9XYXNtQ2FsbD4mLCBjb25zdCBJbW11dGFibGVGdW5jdGlvbkluZGV4U3BhY2UmKTsKIAog
ICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIGFkZEFyZ3VtZW50cyhjb25zdCBWZWN0b3I8VHlw
ZT4mKTsKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRMb2NhbChUeXBlLCB1aW50MzJf
dCk7CkBAIC0xNjQsNyArMTY2LDkgQEAgcHVibGljOgogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVU
VVJOIGVuZEJsb2NrKENvbnRyb2xFbnRyeSYsIEV4cHJlc3Npb25MaXN0JiBleHByZXNzaW9uU3Rh
Y2spOwogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIGFkZEVuZFRvVW5yZWFjaGFibGUoQ29u
dHJvbEVudHJ5Jik7CiAKLSAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsKHVuc2ln
bmVkIGNhbGxlZUluZGV4LCBjb25zdCBTaWduYXR1cmUqLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+
JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAgICAvLyBDYWxscworICAgIGJvb2wg
V0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGwodWludDMyX3QgY2FsbGVlSW5kZXgsIGNvbnN0IFNp
Z25hdHVyZSosIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIEV4cHJlc3Npb25UeXBlJiBy
ZXN1bHQpOworICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGxJbmRpcmVjdChjb25z
dCBTaWduYXR1cmUqLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlw
ZSYgcmVzdWx0KTsKIAogICAgIHZvaWQgZHVtcChjb25zdCBWZWN0b3I8Q29udHJvbEVudHJ5PiYg
Y29udHJvbFN0YWNrLCBjb25zdCBFeHByZXNzaW9uTGlzdCYgZXhwcmVzc2lvblN0YWNrKTsKIApA
QCAtMTc5LDYgKzE4Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1bmlmeVZhbHVlc1dpdGhCbG9j
ayhjb25zdCBFeHByZXNzaW9uTGlzdCYgcmVzdWx0U3RhY2ssIFJlc3VsdExpc3QmIHN0YWNrKTsK
ICAgICBWYWx1ZSogemVyb0ZvclR5cGUoVHlwZSk7CiAKKyAgICBjb25zdCBJbW11dGFibGVGdW5j
dGlvbkluZGV4U3BhY2UmIG1fZnVuY3Rpb25JbmRleFNwYWNlOwogICAgIFByb2NlZHVyZSYgbV9w
cm9jOwogICAgIEJhc2ljQmxvY2sqIG1fY3VycmVudEJsb2NrOwogICAgIFZlY3RvcjxWYXJpYWJs
ZSo+IG1fbG9jYWxzOwpAQCAtMTg2LDEwICsxOTEsMTIgQEAgcHJpdmF0ZToKICAgICBHUFJSZWcg
bV9tZW1vcnlCYXNlR1BSOwogICAgIEdQUlJlZyBtX21lbW9yeVNpemVHUFI7CiAgICAgVmFsdWUq
IG1femVyb1ZhbHVlc1tudW1UeXBlc107CisgICAgVmFsdWUqIG1fZnVuY3Rpb25JbmRleFNwYWNl
VmFsdWU7CiB9OwogCi1CM0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9yKE1lbW9yeUluZm9ybWF0
aW9uJiBtZW1vcnksIFByb2NlZHVyZSYgcHJvY2VkdXJlLCBXYXNtSW50ZXJuYWxGdW5jdGlvbiog
Y29tcGlsYXRpb24sIFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYgdW5saW5rZWRXYXNt
VG9XYXNtQ2FsbHMpCi0gICAgOiBtX3Byb2MocHJvY2VkdXJlKQorQjNJUkdlbmVyYXRvcjo6QjNJ
UkdlbmVyYXRvcihjb25zdCBNZW1vcnlJbmZvcm1hdGlvbiYgbWVtb3J5LCBQcm9jZWR1cmUmIHBy
b2NlZHVyZSwgV2FzbUludGVybmFsRnVuY3Rpb24qIGNvbXBpbGF0aW9uLCBWZWN0b3I8VW5saW5r
ZWRXYXNtVG9XYXNtQ2FsbD4mIHVubGlua2VkV2FzbVRvV2FzbUNhbGxzLCBjb25zdCBJbW11dGFi
bGVGdW5jdGlvbkluZGV4U3BhY2UmIGZ1bmN0aW9uSW5kZXhTcGFjZSkKKyAgICA6IG1fZnVuY3Rp
b25JbmRleFNwYWNlKGZ1bmN0aW9uSW5kZXhTcGFjZSkKKyAgICAsIG1fcHJvYyhwcm9jZWR1cmUp
CiAgICAgLCBtX3VubGlua2VkV2FzbVRvV2FzbUNhbGxzKHVubGlua2VkV2FzbVRvV2FzbUNhbGxz
KQogewogICAgIG1fY3VycmVudEJsb2NrID0gbV9wcm9jLmFkZEJsb2NrKCk7CkBAIC0yMjQsNiAr
MjMxLDggQEAgQjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcihNZW1vcnlJbmZvcm1hdGlvbiYg
bWVtb3J5LCBQcm9jZWR1cmUmIHByb2NlZHVyZSwgV2EKICAgICB9CiAKICAgICB3YXNtQ2FsbGlu
Z0NvbnZlbnRpb24oKS5zZXR1cEZyYW1lSW5Qcm9sb2d1ZShjb21waWxhdGlvbiwgbV9wcm9jLCBP
cmlnaW4oKSwgbV9jdXJyZW50QmxvY2spOworCisgICAgbV9mdW5jdGlvbkluZGV4U3BhY2VWYWx1
ZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4obV9wcm9jLCBPcmln
aW4oKSwgZnVuY3Rpb25JbmRleFNwYWNlLmJ1ZmZlci5nZXQoKSk7CiB9CiAKIFZhbHVlKiBCM0lS
R2VuZXJhdG9yOjp6ZXJvRm9yVHlwZShUeXBlIHR5cGUpCkBAIC01OTIsNyArNjAxLDcgQEAgYm9v
bCBCM0lSR2VuZXJhdG9yOjphZGRFbmRUb1VucmVhY2hhYmxlKENvbnRyb2xFbnRyeSYgZW50cnkp
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbCh1bnNp
Z25lZCBmdW5jdGlvbkluZGV4LCBjb25zdCBTaWduYXR1cmUqIHNpZ25hdHVyZSwgVmVjdG9yPEV4
cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKK2Jvb2wgQjNJUkdl
bmVyYXRvcjo6YWRkQ2FsbCh1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBjb25zdCBTaWduYXR1cmUq
IHNpZ25hdHVyZSwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVzc2lvblR5cGUm
IHJlc3VsdCkKIHsKICAgICBBU1NFUlQoc2lnbmF0dXJlLT5hcmd1bWVudHMuc2l6ZSgpID09IGFy
Z3Muc2l6ZSgpKTsKIApAQCAtNjE4LDYgKzYyNyw1OCBAQCBib29sIEIzSVJHZW5lcmF0b3I6OmFk
ZENhbGwodW5zaWduZWQgZnVuY3Rpb25JbmRleCwgY29uc3QgU2lnbmF0dXJlKiBzaWduYXR1cmUs
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGly
ZWN0KGNvbnN0IFNpZ25hdHVyZSogc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBh
cmdzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KQoreworICAgIEV4cHJlc3Npb25UeXBlIGNhbGxl
ZUluZGV4ID0gYXJncy50YWtlTGFzdCgpOworICAgIHNpemVfdCBhcmd1bWVudENvdW50ID0gc2ln
bmF0dXJlLT5hcmd1bWVudHMuc2l6ZSgpOworICAgIEFTU0VSVChhcmd1bWVudENvdW50ID09IGFy
Z3Muc2l6ZSgpKTsKKworICAgIC8vIENoZWNrIHRoZSBpbmRleCB3ZSBhcmUgbG9va2luZyBmb3Ig
aXMgdmFsaWQuCisgICAgeworICAgICAgICBFeHByZXNzaW9uVHlwZSBtYXhWYWxpZEluZGV4ID0g
bV9jdXJyZW50QmxvY2stPmFwcGVuZEludENvbnN0YW50KG1fcHJvYywgT3JpZ2luKCksIEludDMy
LCBtX2Z1bmN0aW9uSW5kZXhTcGFjZS5zaXplKTsKKyAgICAgICAgQ2hlY2tWYWx1ZSogY2hlY2sg
PSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KG1fcHJvYywgQ2hlY2ssIE9y
aWdpbigpLAorICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9w
cm9jLCBFcXVhbCwgT3JpZ2luKCksIG1femVyb1ZhbHVlc1tsaW5lYXJpemVUeXBlKEkzMildLAor
ICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywg
TGVzc1RoYW4sIE9yaWdpbigpLCBjYWxsZWVJbmRleCwgbWF4VmFsaWRJbmRleCkpKTsKKworICAg
ICAgICBjaGVjay0+c2V0R2VuZXJhdG9yKFtdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6
OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICAgICAgICAgIGppdC5icmVha3BvaW50
KCk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIC8vIENvbXB1dGUgdGhlIG9mZnNldCBpbiB0
aGUgZnVuY3Rpb24gaW5kZXggc3BhY2Ugd2UgYXJlIGxvb2tpbmcgZm9yLgorICAgIEV4cHJlc3Np
b25UeXBlIG9mZnNldCA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJvYywg
TXVsLCBPcmlnaW4oKSwKKyAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4o
bV9wcm9jLCBaRXh0MzIsIE9yaWdpbigpLCBjYWxsZWVJbmRleCksCisgICAgICAgIG1fY3VycmVu
dEJsb2NrLT5hcHBlbmRJbnRDb25zdGFudChtX3Byb2MsIE9yaWdpbigpLCBwb2ludGVyVHlwZSgp
LCBzaXplb2YoQ2FsbGFibGVGdW5jdGlvbikpKTsKKyAgICBFeHByZXNzaW9uVHlwZSBjYWxsYWJs
ZUZ1bmN0aW9uID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBBZGQs
IE9yaWdpbigpLCBtX2Z1bmN0aW9uSW5kZXhTcGFjZVZhbHVlLCBvZmZzZXQpOworCisgICAgLy8g
Q2hlY2sgdGhlIHNpZ25hdHVyZSBtYXRjaGVzIHRoZSB2YWx1ZSB3ZSBleHBlY3QuCisgICAgewor
ICAgICAgICBFeHByZXNzaW9uVHlwZSBjYWxsZWVTaWduYXR1cmUgPSBtX2N1cnJlbnRCbG9jay0+
YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIE9yaWdp
bigpLCBjYWxsYWJsZUZ1bmN0aW9uLCBPQkpFQ1RfT0ZGU0VUT0YoQ2FsbGFibGVGdW5jdGlvbiwg
c2lnbmF0dXJlKSk7CisgICAgICAgIEV4cHJlc3Npb25UeXBlIGV4cGVjdGVkU2lnbmF0dXJlID0g
bV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihtX3Byb2MsIE9yaWdpbigp
LCBzaWduYXR1cmUpOworICAgICAgICBDaGVja1ZhbHVlKiBjaGVjayA9IG1fY3VycmVudEJsb2Nr
LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4obV9wcm9jLCBDaGVjaywgT3JpZ2luKCksCisgICAgICAg
ICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIE5vdEVxdWFsLCBP
cmlnaW4oKSwgY2FsbGVlU2lnbmF0dXJlLCBleHBlY3RlZFNpZ25hdHVyZSkpOworCisgICAgICAg
IGNoZWNrLT5zZXRHZW5lcmF0b3IoW10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgICAgICAgICAgaml0LmJyZWFrcG9pbnQoKTsK
KyAgICAgICAgfSk7CisgICAgfQorCisgICAgRXhwcmVzc2lvblR5cGUgY2FsbGVlQ29kZSA9IG1f
Y3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgcG9pbnRl
clR5cGUoKSwgT3JpZ2luKCksIGNhbGxhYmxlRnVuY3Rpb24sIE9CSkVDVF9PRkZTRVRPRihDYWxs
YWJsZUZ1bmN0aW9uLCBjb2RlKSk7CisKKyAgICByZXN1bHQgPSB3YXNtQ2FsbGluZ0NvbnZlbnRp
b24oKS5zZXR1cENhbGwobV9wcm9jLCBtX2N1cnJlbnRCbG9jaywgT3JpZ2luKCksIGFyZ3MsIHRv
QjNUeXBlKHNpZ25hdHVyZS0+cmV0dXJuVHlwZSksCisgICAgICAgIFsmXSAoUGF0Y2hwb2ludFZh
bHVlKiBwYXRjaHBvaW50KSB7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzLndyaXRl
c1Bpbm5lZCA9IHRydWU7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzLnJlYWRzUGlu
bmVkID0gdHJ1ZTsKKworICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKGNhbGxlZUNvZGUs
IFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpOworCisgICAgICAgICAgICBwYXRjaHBvaW50LT5zZXRH
ZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJh
dGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgaml0LmNhbGwocGFyYW1zWzBd
LmdwcigpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwogdm9pZCBCM0lSR2VuZXJhdG9yOjp1bmlmeShWYXJpYWJsZSogdmFyaWFibGUsIEV4cHJl
c3Npb25UeXBlIHNvdXJjZSkKIHsKICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhcmlh
YmxlVmFsdWU+KG1fcHJvYywgU2V0LCBPcmlnaW4oKSwgdmFyaWFibGUsIHNvdXJjZSk7CkBAIC02
NTcsNyArNzE4LDcgQEAgdm9pZCBCM0lSR2VuZXJhdG9yOjpkdW1wKGNvbnN0IFZlY3RvcjxDb250
cm9sRW50cnk+JiBjb250cm9sU3RhY2ssIGNvbnN0IEV4cHJlc3MKICAgICBkYXRhTG9nTG4oIlxu
Iik7CiB9CiAKLXN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q29tcGlsYXRpb24+IGNyZWF0ZUpTVG9X
YXNtV3JhcHBlcihWTSYgdm0sIGNvbnN0IFNpZ25hdHVyZSogc2lnbmF0dXJlLCBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIgbWFpbkZ1bmN0aW9uLCBNZW1vcnlJbmZvcm1hdGlvbiYgbWVtb3J5KQorc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxDb21waWxhdGlvbj4gY3JlYXRlSlNUb1dhc21XcmFwcGVyKFZN
JiB2bSwgY29uc3QgU2lnbmF0dXJlKiBzaWduYXR1cmUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBt
YWluRnVuY3Rpb24sIGNvbnN0IE1lbW9yeUluZm9ybWF0aW9uJiBtZW1vcnkpCiB7CiAgICAgUHJv
Y2VkdXJlIHByb2M7CiAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBwcm9jLmFkZEJsb2NrKCk7CkBA
IC03MzcsMTMgKzc5OCwxMyBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENvbXBpbGF0aW9uPiBj
cmVhdGVKU1RvV2FzbVdyYXBwZXIoVk0mIHZtLCBjb25zdCBTaWduYXR1cgogICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPENvbXBpbGF0aW9uPih2bSwgcHJvYyk7CiB9CiAKLXN0ZDo6dW5pcXVl
X3B0cjxXYXNtSW50ZXJuYWxGdW5jdGlvbj4gcGFyc2VBbmRDb21waWxlKFZNJiB2bSwgY29uc3Qg
dWludDhfdCogZnVuY3Rpb25TdGFydCwgc2l6ZV90IGZ1bmN0aW9uTGVuZ3RoLCBNZW1vcnlJbmZv
cm1hdGlvbiYgbWVtb3J5LCBjb25zdCBTaWduYXR1cmUqIHNpZ25hdHVyZSwgVmVjdG9yPFVubGlu
a2VkV2FzbVRvV2FzbUNhbGw+JiB1bmxpbmtlZFdhc21Ub1dhc21DYWxscywgY29uc3QgRnVuY3Rp
b25JbmRleFNwYWNlJiBmdW5jdGlvbkluZGV4U3BhY2UsIHVuc2lnbmVkIG9wdExldmVsKQorc3Rk
Ojp1bmlxdWVfcHRyPFdhc21JbnRlcm5hbEZ1bmN0aW9uPiBwYXJzZUFuZENvbXBpbGUoVk0mIHZt
LCBjb25zdCB1aW50OF90KiBmdW5jdGlvblN0YXJ0LCBzaXplX3QgZnVuY3Rpb25MZW5ndGgsIGNv
bnN0IFNpZ25hdHVyZSogc2lnbmF0dXJlLCBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4m
IHVubGlua2VkV2FzbVRvV2FzbUNhbGxzLCBjb25zdCBJbW11dGFibGVGdW5jdGlvbkluZGV4U3Bh
Y2UmIGZ1bmN0aW9uSW5kZXhTcGFjZSwgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIHVu
c2lnbmVkIG9wdExldmVsKQogewogICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxX
YXNtSW50ZXJuYWxGdW5jdGlvbj4oKTsKIAogICAgIFByb2NlZHVyZSBwcm9jZWR1cmU7Ci0gICAg
QjNJUkdlbmVyYXRvciBjb250ZXh0KG1lbW9yeSwgcHJvY2VkdXJlLCByZXN1bHQuZ2V0KCksIHVu
bGlua2VkV2FzbVRvV2FzbUNhbGxzKTsKLSAgICBGdW5jdGlvblBhcnNlcjxCM0lSR2VuZXJhdG9y
PiBwYXJzZXIoY29udGV4dCwgZnVuY3Rpb25TdGFydCwgZnVuY3Rpb25MZW5ndGgsIHNpZ25hdHVy
ZSwgZnVuY3Rpb25JbmRleFNwYWNlKTsKKyAgICBCM0lSR2VuZXJhdG9yIGNvbnRleHQoaW5mby5t
ZW1vcnksIHByb2NlZHVyZSwgcmVzdWx0LmdldCgpLCB1bmxpbmtlZFdhc21Ub1dhc21DYWxscywg
ZnVuY3Rpb25JbmRleFNwYWNlKTsKKyAgICBGdW5jdGlvblBhcnNlcjxCM0lSR2VuZXJhdG9yPiBw
YXJzZXIoY29udGV4dCwgZnVuY3Rpb25TdGFydCwgZnVuY3Rpb25MZW5ndGgsIHNpZ25hdHVyZSwg
ZnVuY3Rpb25JbmRleFNwYWNlLCBpbmZvKTsKICAgICBpZiAoIXBhcnNlci5wYXJzZSgpKQogICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCkBAIC03NTcsNyArODE4LDcgQEAg
c3RkOjp1bmlxdWVfcHRyPFdhc21JbnRlcm5hbEZ1bmN0aW9uPiBwYXJzZUFuZENvbXBpbGUoVk0m
IHZtLCBjb25zdCB1aW50OF90KiBmdW4KICAgICAgICAgZGF0YUxvZygiUG9zdCBTU0E6ICIsIHBy
b2NlZHVyZSk7CiAKICAgICByZXN1bHQtPmNvZGUgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbXBpbGF0
aW9uPih2bSwgcHJvY2VkdXJlLCBvcHRMZXZlbCk7Ci0gICAgcmVzdWx0LT5qc1RvV2FzbUVudHJ5
UG9pbnQgPSBjcmVhdGVKU1RvV2FzbVdyYXBwZXIodm0sIHNpZ25hdHVyZSwgcmVzdWx0LT5jb2Rl
LT5jb2RlKCksIG1lbW9yeSk7CisgICAgcmVzdWx0LT5qc1RvV2FzbUVudHJ5UG9pbnQgPSBjcmVh
dGVKU1RvV2FzbVdyYXBwZXIodm0sIHNpZ25hdHVyZSwgcmVzdWx0LT5jb2RlLT5jb2RlKCksIGlu
Zm8ubWVtb3J5KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuaAppbmRleCAwNDIwMDdlYmI5M2Q5MzM2MDQ5
MGFhMDVjN2Q1NDNlOWI2YTY0NjU3Li5iYTEwYWEzNWY2NTk1ZjhiMDM4ZTg5ODRkNzIyMDg4MDBm
MzIzZGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdl
bmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJh
dG9yLmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsK
IAogY2xhc3MgTWVtb3J5SW5mb3JtYXRpb247CiAKLXN0ZDo6dW5pcXVlX3B0cjxXYXNtSW50ZXJu
YWxGdW5jdGlvbj4gcGFyc2VBbmRDb21waWxlKFZNJiwgY29uc3QgdWludDhfdCosIHNpemVfdCwg
TWVtb3J5SW5mb3JtYXRpb24mLCBjb25zdCBTaWduYXR1cmUqLCBWZWN0b3I8VW5saW5rZWRXYXNt
VG9XYXNtQ2FsbD4mLCBjb25zdCBGdW5jdGlvbkluZGV4U3BhY2UmLCB1bnNpZ25lZCBvcHRMZXZl
bCA9IDEpOworc3RkOjp1bmlxdWVfcHRyPFdhc21JbnRlcm5hbEZ1bmN0aW9uPiBwYXJzZUFuZENv
bXBpbGUoVk0mLCBjb25zdCB1aW50OF90Kiwgc2l6ZV90LCBjb25zdCBTaWduYXR1cmUqLCBWZWN0
b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mLCBjb25zdCBJbW11dGFibGVGdW5jdGlvbkluZGV4
U3BhY2UmLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYsIHVuc2lnbmVkIG9wdExldmVsID0gMSk7
CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXYXNtCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21DYWxsaW5nQ29udmVudGlvbi5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUNhbGxpbmdDb252ZW50aW9uLmgKaW5kZXggZDdlYmQ4MGNjZGFiNWI3
N2NhOWZkMjliMDRmZDU4NDliZTc1Nzk3My4uNGMwNmU1YTNhZWU4ZDJhNzViZWJhZTdkY2YzZjVk
NGYxNWJjMDUwNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNh
bGxpbmdDb252ZW50aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNh
bGxpbmdDb252ZW50aW9uLmgKQEAgLTE2Myw4ICsxNjMsOCBAQCBwdWJsaWM6CiAgICAgICAgIEIz
OjpQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBibG9jay0+YXBwZW5kTmV3PEIzOjpQYXRj
aHBvaW50VmFsdWU+KHByb2MsIHJldHVyblR5cGUsIG9yaWdpbik7CiAgICAgICAgIHBhdGNocG9p
bnQtPmNsb2JiZXJFYXJseShSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwog
ICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0ZShSZWdpc3RlclNldDo6dm9sYXRpbGVSZWdp
c3RlcnNGb3JKU0NhbGwoKSk7Ci0gICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFZlY3Rvcihjb25z
dHJhaW5lZEFyZ3VtZW50cyk7CiAgICAgICAgIHBhdGNocG9pbnRGdW5jdG9yKHBhdGNocG9pbnQp
OworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRWZWN0b3IoY29uc3RyYWluZWRBcmd1bWVudHMp
OwogCiAgICAgICAgIHN3aXRjaCAocmV0dXJuVHlwZSkgewogICAgICAgICBjYXNlIEIzOjpWb2lk
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oCmluZGV4IGYwNDM1MTk4MzI3
NjkyMzFkNmQxODAyNTJhYjI1N2JkMGFiZjY3MGIuLjY2MDY0MDdjNWFiOTlmM2E4YjdkZGQ1YmJj
Mzk5MWI2ZDM2OTJiMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21Gb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmgK
QEAgLTE1NSw2ICsxNTUsMTIgQEAgc3RydWN0IENhbGxhYmxlRnVuY3Rpb24gewogfTsKIHR5cGVk
ZWYgVmVjdG9yPENhbGxhYmxlRnVuY3Rpb24+IEZ1bmN0aW9uSW5kZXhTcGFjZTsKIAorCitzdHJ1
Y3QgSW1tdXRhYmxlRnVuY3Rpb25JbmRleFNwYWNlIHsKKyAgICBNYWxsb2NQdHI8Q2FsbGFibGVG
dW5jdGlvbj4gYnVmZmVyOworICAgIHNpemVfdCBzaXplOworfTsKKwogfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6Oldhc20KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKaW5kZXggZWMxOTMyNTRh
NjY4MzQyZmQ2MDQ0YTVkMmQyYTIyMTc3ZDZhYjU1Zi4uMjA3MDE4YmY4ODA1YzUwYjM2MGE3ODlk
YzUxZDAwYWU3YTdkZjMzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUZ1bmN0aW9uUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUZ1bmN0aW9uUGFyc2VyLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYg
dHlwZW5hbWUgQ29udGV4dDo6Q29udHJvbFR5cGUgQ29udHJvbFR5cGU7CiAgICAgdHlwZWRlZiB0
eXBlbmFtZSBDb250ZXh0OjpFeHByZXNzaW9uTGlzdCBFeHByZXNzaW9uTGlzdDsKIAotICAgIEZ1
bmN0aW9uUGFyc2VyKENvbnRleHQmLCBjb25zdCB1aW50OF90KiBmdW5jdGlvblN0YXJ0LCBzaXpl
X3QgZnVuY3Rpb25MZW5ndGgsIGNvbnN0IFNpZ25hdHVyZSosIGNvbnN0IEZ1bmN0aW9uSW5kZXhT
cGFjZSYpOworICAgIEZ1bmN0aW9uUGFyc2VyKENvbnRleHQmLCBjb25zdCB1aW50OF90KiBmdW5j
dGlvblN0YXJ0LCBzaXplX3QgZnVuY3Rpb25MZW5ndGgsIGNvbnN0IFNpZ25hdHVyZSosIGNvbnN0
IEltbXV0YWJsZUZ1bmN0aW9uSW5kZXhTcGFjZSYsIGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJik7
CiAKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZSgpOwogCkBAIC03MSwyMiArNzEs
MjggQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTxPcFR5cGU+CiAgICAgYm9vbCBXQVJOX1VOVVNF
RF9SRVRVUk4gYmluYXJ5Q2FzZSgpOwogCi0gICAgdm9pZCBzZXRFcnJvck1lc3NhZ2UoU3RyaW5n
JiYgbWVzc2FnZSkgeyBtX2NvbnRleHQuc2V0RXJyb3JNZXNzYWdlKFdURk1vdmUobWVzc2FnZSkp
OyB9CisgICAgYm9vbCBzZXRFcnJvck1lc3NhZ2UoU3RyaW5nJiYgbWVzc2FnZSkKKyAgICB7Cisg
ICAgICAgIG1fY29udGV4dC5zZXRFcnJvck1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAKICAgICBDb250ZXh0JiBtX2NvbnRleHQ7CiAgICAg
RXhwcmVzc2lvbkxpc3QgbV9leHByZXNzaW9uU3RhY2s7CiAgICAgVmVjdG9yPENvbnRyb2xFbnRy
eT4gbV9jb250cm9sU3RhY2s7CiAgICAgY29uc3QgU2lnbmF0dXJlKiBtX3NpZ25hdHVyZTsKLSAg
ICBjb25zdCBGdW5jdGlvbkluZGV4U3BhY2UmIG1fZnVuY3Rpb25JbmRleFNwYWNlOworICAgIGNv
bnN0IEltbXV0YWJsZUZ1bmN0aW9uSW5kZXhTcGFjZSYgbV9mdW5jdGlvbkluZGV4U3BhY2U7Cisg
ICAgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIG1faW5mbzsKICAgICB1bnNpZ25lZCBtX3VucmVh
Y2hhYmxlQmxvY2tzIHsgMCB9OwogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29udGV4dD4KLUZ1
bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpGdW5jdGlvblBhcnNlcihDb250ZXh0JiBjb250ZXh0LCBj
b25zdCB1aW50OF90KiBmdW5jdGlvblN0YXJ0LCBzaXplX3QgZnVuY3Rpb25MZW5ndGgsIGNvbnN0
IFNpZ25hdHVyZSogc2lnbmF0dXJlLCBjb25zdCBGdW5jdGlvbkluZGV4U3BhY2UmIGZ1bmN0aW9u
SW5kZXhTcGFjZSkKK0Z1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpGdW5jdGlvblBhcnNlcihDb250
ZXh0JiBjb250ZXh0LCBjb25zdCB1aW50OF90KiBmdW5jdGlvblN0YXJ0LCBzaXplX3QgZnVuY3Rp
b25MZW5ndGgsIGNvbnN0IFNpZ25hdHVyZSogc2lnbmF0dXJlLCBjb25zdCBJbW11dGFibGVGdW5j
dGlvbkluZGV4U3BhY2UmIGZ1bmN0aW9uSW5kZXhTcGFjZSwgY29uc3QgTW9kdWxlSW5mb3JtYXRp
b24mIGluZm8pCiAgICAgOiBQYXJzZXIoZnVuY3Rpb25TdGFydCwgZnVuY3Rpb25MZW5ndGgpCiAg
ICAgLCBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fc2lnbmF0dXJlKHNpZ25hdHVyZSkKICAg
ICAsIG1fZnVuY3Rpb25JbmRleFNwYWNlKGZ1bmN0aW9uSW5kZXhTcGFjZSkKKyAgICAsIG1faW5m
byhpbmZvKQogewogICAgIGlmICh2ZXJib3NlKQogICAgICAgICBkYXRhTG9nTG4oIlBhcnNpbmcg
ZnVuY3Rpb24gc3RhcnRpbmcgYXQ6ICIsICh1aW50cHRyX3QpZnVuY3Rpb25TdGFydCwgIiBvZiBs
ZW5ndGg6ICIsIGZ1bmN0aW9uTGVuZ3RoKTsKQEAgLTM1MCwxMCArMzU2LDEwIEBAIGJvb2wgRnVu
Y3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhwcmVzc2lvbihPcFR5cGUgb3ApCiAgICAgICAg
IGlmICghcGFyc2VWYXJVSW50MzIoZnVuY3Rpb25JbmRleCkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICAgICAgaWYgKGZ1bmN0aW9uSW5kZXggPj0gbV9mdW5jdGlvbkluZGV4U3Bh
Y2Uuc2l6ZSgpKQorICAgICAgICBpZiAoZnVuY3Rpb25JbmRleCA+PSBtX2Z1bmN0aW9uSW5kZXhT
cGFjZS5zaXplKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGNvbnN0IFNp
Z25hdHVyZSogY2FsbGVlU2lnbmF0dXJlID0gbV9mdW5jdGlvbkluZGV4U3BhY2VbZnVuY3Rpb25J
bmRleF0uc2lnbmF0dXJlOworICAgICAgICBjb25zdCBTaWduYXR1cmUqIGNhbGxlZVNpZ25hdHVy
ZSA9IG1fZnVuY3Rpb25JbmRleFNwYWNlLmJ1ZmZlci5nZXQoKVtmdW5jdGlvbkluZGV4XS5zaWdu
YXR1cmU7CiAKICAgICAgICAgaWYgKGNhbGxlZVNpZ25hdHVyZS0+YXJndW1lbnRzLnNpemUoKSA+
IG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTM3NSw2ICszODEsNDIgQEAgYm9vbCBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VFeHBy
ZXNzaW9uKE9wVHlwZSBvcCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisgICAgY2Fz
ZSBPcFR5cGU6OkNhbGxJbmRpcmVjdDogeworICAgICAgICB1aW50MzJfdCBzaWduYXR1cmVJbmRl
eDsKKyAgICAgICAgaWYgKCFwYXJzZVZhclVJbnQzMihzaWduYXR1cmVJbmRleCkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdWludDhfdCByZXNlcnZlZDsKKyAgICAgICAg
aWYgKCFwYXJzZVZhclVJbnQxKHJlc2VydmVkKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgICAgICBpZiAobV9pbmZvLnNpZ25hdHVyZXMuc2l6ZSgpIDw9IHNpZ25hdHVyZUluZGV4
KQorICAgICAgICAgICAgcmV0dXJuIHNldEVycm9yTWVzc2FnZSgiVHJpZWQgdG8gdXNlIGEgc2ln
bmF0dXJlIG91dHNpZGUgdGhlIHJhbmdlIG9mIHZhbGlkIHNpZ25hdHVyZXMiKTsKKworICAgICAg
ICBjb25zdCBTaWduYXR1cmUqIGNhbGxlZVNpZ25hdHVyZSA9ICZtX2luZm8uc2lnbmF0dXJlc1tz
aWduYXR1cmVJbmRleF07CisgICAgICAgIHNpemVfdCBhcmd1bWVudENvdW50ID0gY2FsbGVlU2ln
bmF0dXJlLT5hcmd1bWVudHMuc2l6ZSgpICsgMTsgLy8gQWRkIHRoZSBjYWxsZWUncyBpbmRleC4K
KyAgICAgICAgaWYgKGFyZ3VtZW50Q291bnQgPiBtX2V4cHJlc3Npb25TdGFjay5zaXplKCkpCisg
ICAgICAgICAgICByZXR1cm4gc2V0RXJyb3JNZXNzYWdlKCJOb3QgZW5vdWdoIHZhbHVlcyBvbiB0
aGUgc3RhY2sgZm9yIGNhbGxfaW5kaXJlY3QiKTsKKworICAgICAgICBWZWN0b3I8RXhwcmVzc2lv
blR5cGU+IGFyZ3M7CisgICAgICAgIGlmICghYXJncy50cnlSZXNlcnZlQ2FwYWNpdHkoYXJndW1l
bnRDb3VudCkpCisgICAgICAgICAgICByZXR1cm4gc2V0RXJyb3JNZXNzYWdlKCJPdXQgb2YgbWVt
b3J5Iik7CisKKyAgICAgICAgc2l6ZV90IGZpcnN0QXJndW1lbnRJbmRleCA9IG1fZXhwcmVzc2lv
blN0YWNrLnNpemUoKSAtIGFyZ3VtZW50Q291bnQ7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IGZpcnN0QXJndW1lbnRJbmRleDsgaSA8IG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKTsgKytpKQor
ICAgICAgICAgICAgYXJncy51bmNoZWNrZWRBcHBlbmQobV9leHByZXNzaW9uU3RhY2tbaV0pOwor
ICAgICAgICBtX2V4cHJlc3Npb25TdGFjay5zaHJpbmsoZmlyc3RBcmd1bWVudEluZGV4KTsKKwor
ICAgICAgICBFeHByZXNzaW9uVHlwZSByZXN1bHQgPSBDb250ZXh0OjplbXB0eUV4cHJlc3Npb247
CisgICAgICAgIGlmICghbV9jb250ZXh0LmFkZENhbGxJbmRpcmVjdChjYWxsZWVTaWduYXR1cmUs
IGFyZ3MsIHJlc3VsdCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaWYg
KHJlc3VsdCAhPSBDb250ZXh0OjplbXB0eUV4cHJlc3Npb24pCisgICAgICAgICAgICBtX2V4cHJl
c3Npb25TdGFjay5hcHBlbmQocmVzdWx0KTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKICAgICBjYXNlIE9wVHlwZTo6QmxvY2s6IHsKICAgICAgICAgVHlwZSBpbmxpbmVTaWduYXR1
cmU7CiAgICAgICAgIGlmICghcGFyc2VSZXN1bHRUeXBlKGlubGluZVNpZ25hdHVyZSkpCkBAIC01
MTcsOCArNTU5LDcgQEAgYm9vbCBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VFeHByZXNz
aW9uKE9wVHlwZSBvcCkKICAgICBjYXNlIE9wVHlwZTo6R3Jvd01lbW9yeToKICAgICBjYXNlIE9w
VHlwZTo6Q3VycmVudE1lbW9yeToKICAgICBjYXNlIE9wVHlwZTo6R2V0R2xvYmFsOgotICAgIGNh
c2UgT3BUeXBlOjpTZXRHbG9iYWw6Ci0gICAgY2FzZSBPcFR5cGU6OkNhbGxJbmRpcmVjdDogewor
ICAgIGNhc2UgT3BUeXBlOjpTZXRHbG9iYWw6IHsKICAgICAgICAgLy8gRklYTUU6IE5vdCB5ZXQg
aW1wbGVtZW50ZWQuCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtUGxhbi5jcHAKaW5kZXggZDg5YTFiMzNjMjhmYmUxNzFjMzc2MzgxODlj
Zjk1NTBkMWUwNDlmMC4uZDZjNjA4MzZhYjZlYzc3ZTI2NzE3ZmY3MjY2MTRkZDFlOWI4NzFkNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBsYW4uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmNwcApAQCAtNzIsNyArNzIsOCBA
QCB2b2lkIFBsYW46OnJ1bigpCiAgICAgICAgIH0KICAgICAgICAgbV9tb2R1bGVJbmZvcm1hdGlv
biA9IFdURk1vdmUobW9kdWxlUGFyc2VyLm1vZHVsZUluZm9ybWF0aW9uKCkpOwogICAgICAgICBt
X2Z1bmN0aW9uTG9jYXRpb25JbkJpbmFyeSA9IFdURk1vdmUobW9kdWxlUGFyc2VyLmZ1bmN0aW9u
TG9jYXRpb25JbkJpbmFyeSgpKTsKLSAgICAgICAgbV9mdW5jdGlvbkluZGV4U3BhY2UgPSBXVEZN
b3ZlKG1vZHVsZVBhcnNlci5mdW5jdGlvbkluZGV4U3BhY2UoKSk7CisgICAgICAgIG1fZnVuY3Rp
b25JbmRleFNwYWNlLnNpemUgPSBtb2R1bGVQYXJzZXIuZnVuY3Rpb25JbmRleFNwYWNlKCkuc2l6
ZSgpOworICAgICAgICBtX2Z1bmN0aW9uSW5kZXhTcGFjZS5idWZmZXIgPSBtb2R1bGVQYXJzZXIu
ZnVuY3Rpb25JbmRleFNwYWNlKCkucmVsZWFzZUJ1ZmZlcigpOwogICAgIH0KICAgICBpZiAodmVy
Ym9zZSkKICAgICAgICAgZGF0YUxvZ0xuKCJQYXJzZWQgbW9kdWxlLiIpOwpAQCAtMTAzLDcgKzEw
NCw3IEBAIHZvaWQgUGxhbjo6cnVuKCkKICAgICAgICAgICAgIGRhdGFMb2dMbigiUHJvY2Vzc2lu
ZyBpbXBvcnQgZnVuY3Rpb24gbnVtYmVyICIsIGltcG9ydEZ1bmN0aW9uSW5kZXgsICI6ICIsIGlt
cG9ydC0+bW9kdWxlLCAiOiAiLCBpbXBvcnQtPmZpZWxkKTsKICAgICAgICAgU2lnbmF0dXJlKiBz
aWduYXR1cmUgPSBtX21vZHVsZUluZm9ybWF0aW9uLT5pbXBvcnRGdW5jdGlvbnMuYXQoaW1wb3J0
LT5raW5kSW5kZXgpOwogICAgICAgICBtX3dhc21Ub0pTU3R1YnMudW5jaGVja2VkQXBwZW5kKGlt
cG9ydFN0dWJHZW5lcmF0b3IobV92bSwgbV9jYWxsTGlua0luZm9zLCBzaWduYXR1cmUsIGltcG9y
dEZ1bmN0aW9uSW5kZXgpKTsKLSAgICAgICAgbV9mdW5jdGlvbkluZGV4U3BhY2VbaW1wb3J0RnVu
Y3Rpb25JbmRleF0uY29kZSA9IG1fd2FzbVRvSlNTdHVic1tpbXBvcnRGdW5jdGlvbkluZGV4XS5j
b2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICAgICAgbV9mdW5jdGlvbkluZGV4U3BhY2Uu
YnVmZmVyLmdldCgpW2ltcG9ydEZ1bmN0aW9uSW5kZXhdLmNvZGUgPSBtX3dhc21Ub0pTU3R1YnNb
aW1wb3J0RnVuY3Rpb25JbmRleF0uY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CiAgICAgfQog
CiAgICAgZm9yICh1bnNpZ25lZCBmdW5jdGlvbkluZGV4ID0gMDsgZnVuY3Rpb25JbmRleCA8IG1f
ZnVuY3Rpb25Mb2NhdGlvbkluQmluYXJ5LnNpemUoKTsgKytmdW5jdGlvbkluZGV4KSB7CkBAIC0x
MTQsOSArMTE1LDkgQEAgdm9pZCBQbGFuOjpydW4oKQogICAgICAgICBBU1NFUlQoZnVuY3Rpb25M
ZW5ndGggPD0gbV9zb3VyY2VMZW5ndGgpOwogICAgICAgICBTaWduYXR1cmUqIHNpZ25hdHVyZSA9
IG1fbW9kdWxlSW5mb3JtYXRpb24tPmludGVybmFsRnVuY3Rpb25TaWduYXR1cmVzW2Z1bmN0aW9u
SW5kZXhdOwogICAgICAgICB1bnNpZ25lZCBmdW5jdGlvbkluZGV4U3BhY2UgPSBtX3dhc21Ub0pT
U3R1YnMuc2l6ZSgpICsgZnVuY3Rpb25JbmRleDsKLSAgICAgICAgQVNTRVJUKG1fZnVuY3Rpb25J
bmRleFNwYWNlW2Z1bmN0aW9uSW5kZXhTcGFjZV0uc2lnbmF0dXJlID09IHNpZ25hdHVyZSk7Cisg
ICAgICAgIEFTU0VSVChtX2Z1bmN0aW9uSW5kZXhTcGFjZS5idWZmZXIuZ2V0KClbZnVuY3Rpb25J
bmRleFNwYWNlXS5zaWduYXR1cmUgPT0gc2lnbmF0dXJlKTsKIAotICAgICAgICBTdHJpbmcgZXJy
b3IgPSB2YWxpZGF0ZUZ1bmN0aW9uKGZ1bmN0aW9uU3RhcnQsIGZ1bmN0aW9uTGVuZ3RoLCBzaWdu
YXR1cmUsIG1fZnVuY3Rpb25JbmRleFNwYWNlLCBtX21vZHVsZUluZm9ybWF0aW9uLT5tZW1vcnkp
OworICAgICAgICBTdHJpbmcgZXJyb3IgPSB2YWxpZGF0ZUZ1bmN0aW9uKGZ1bmN0aW9uU3RhcnQs
IGZ1bmN0aW9uTGVuZ3RoLCBzaWduYXR1cmUsIG1fZnVuY3Rpb25JbmRleFNwYWNlLCAqbV9tb2R1
bGVJbmZvcm1hdGlvbik7CiAgICAgICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsKICAgICAgICAg
ICAgIGlmICh2ZXJib3NlKSB7CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGZ1bmN0aW9uTGVuZ3RoOyArK2kpCkBAIC0xMjgsMTQgKzEyOSwxNCBAQCB2b2lkIFBsYW46
OnJ1bigpCiAgICAgICAgIH0KIAogICAgICAgICB1bmxpbmtlZFdhc21Ub1dhc21DYWxscy51bmNo
ZWNrZWRBcHBlbmQoVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+KCkpOwotICAgICAgICBt
X3dhc21JbnRlcm5hbEZ1bmN0aW9ucy51bmNoZWNrZWRBcHBlbmQocGFyc2VBbmRDb21waWxlKCpt
X3ZtLCBmdW5jdGlvblN0YXJ0LCBmdW5jdGlvbkxlbmd0aCwgbV9tb2R1bGVJbmZvcm1hdGlvbi0+
bWVtb3J5LCBzaWduYXR1cmUsIHVubGlua2VkV2FzbVRvV2FzbUNhbGxzLmF0KGZ1bmN0aW9uSW5k
ZXgpLCBtX2Z1bmN0aW9uSW5kZXhTcGFjZSkpOwotICAgICAgICBtX2Z1bmN0aW9uSW5kZXhTcGFj
ZVtmdW5jdGlvbkluZGV4U3BhY2VdLmNvZGUgPSBtX3dhc21JbnRlcm5hbEZ1bmN0aW9uc1tmdW5j
dGlvbkluZGV4XS0+Y29kZS0+Y29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgICAgIG1f
d2FzbUludGVybmFsRnVuY3Rpb25zLnVuY2hlY2tlZEFwcGVuZChwYXJzZUFuZENvbXBpbGUoKm1f
dm0sIGZ1bmN0aW9uU3RhcnQsIGZ1bmN0aW9uTGVuZ3RoLCBzaWduYXR1cmUsIHVubGlua2VkV2Fz
bVRvV2FzbUNhbGxzLmF0KGZ1bmN0aW9uSW5kZXgpLCBtX2Z1bmN0aW9uSW5kZXhTcGFjZSwgKm1f
bW9kdWxlSW5mb3JtYXRpb24pKTsKKyAgICAgICAgbV9mdW5jdGlvbkluZGV4U3BhY2UuYnVmZmVy
LmdldCgpW2Z1bmN0aW9uSW5kZXhTcGFjZV0uY29kZSA9IG1fd2FzbUludGVybmFsRnVuY3Rpb25z
W2Z1bmN0aW9uSW5kZXhdLT5jb2RlLT5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKICAgICB9
CiAKICAgICAvLyBQYXRjaCB0aGUgY2FsbCBzaXRlcyBmb3IgZWFjaCBXZWJBc3NlbWJseSBmdW5j
dGlvbi4KICAgICBmb3IgKGF1dG8mIHVubGlua2VkIDogdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMp
IHsKICAgICAgICAgZm9yIChhdXRvJiBjYWxsIDogdW5saW5rZWQpCi0gICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoY2FsbC5jYWxsTG9jYXRpb24sIENvZGVMb2NhdGlvbkxh
YmVsKG1fZnVuY3Rpb25JbmRleFNwYWNlW2NhbGwuZnVuY3Rpb25JbmRleF0uY29kZSkpOworICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKGNhbGwuY2FsbExvY2F0aW9uLCBD
b2RlTG9jYXRpb25MYWJlbChtX2Z1bmN0aW9uSW5kZXhTcGFjZS5idWZmZXIuZ2V0KClbY2FsbC5m
dW5jdGlvbkluZGV4XS5jb2RlKSk7CiAgICAgfQogCiAgICAgbV9mYWlsZWQgPSBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5oCmluZGV4IDliMGMxYjJjYjlhNGY5YWIyM2Fh
YjA5ZWVlNjI3OWJmMmZmZDk3MDIuLjNjZGJiNjUxYzdhM2UwMmE0NjQ2NGIwOTI4MDNiZGE2NjQ4
NmNkNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBsYW4uaApAQCAtOTUsNyArOTUs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBXVEZNb3ZlKG1fd2FzbVRvSlNTdHVicyk7CiAg
ICAgfQogCi0gICAgRnVuY3Rpb25JbmRleFNwYWNlJiYgdGFrZUZ1bmN0aW9uSW5kZXhTcGFjZSgp
CisgICAgSW1tdXRhYmxlRnVuY3Rpb25JbmRleFNwYWNlJiYgdGFrZUZ1bmN0aW9uSW5kZXhTcGFj
ZSgpCiAgICAgewogICAgICAgICBSRUxFQVNFX0FTU0VSVCghZmFpbGVkKCkpOwogICAgICAgICBy
ZXR1cm4gV1RGTW92ZShtX2Z1bmN0aW9uSW5kZXhTcGFjZSk7CkBAIC0xMDcsNyArMTA3LDcgQEAg
cHJpdmF0ZToKICAgICBCYWc8Q2FsbExpbmtJbmZvPiBtX2NhbGxMaW5rSW5mb3M7CiAgICAgVmVj
dG9yPFdhc21Ub0pTU3R1Yj4gbV93YXNtVG9KU1N0dWJzOwogICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8V2FzbUludGVybmFsRnVuY3Rpb24+PiBtX3dhc21JbnRlcm5hbEZ1bmN0aW9uczsKLSAg
ICBGdW5jdGlvbkluZGV4U3BhY2UgbV9mdW5jdGlvbkluZGV4U3BhY2U7CisgICAgSW1tdXRhYmxl
RnVuY3Rpb25JbmRleFNwYWNlIG1fZnVuY3Rpb25JbmRleFNwYWNlOwogCiAgICAgVk0qIG1fdm07
CiAgICAgY29uc3QgdWludDhfdCogbV9zb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtVmFsaWRhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVZhbGlkYXRlLmNwcAppbmRleCBhMDI0ODg1ODIwZGQzNzM1ZWMzNTVlODUwYjNmNDFh
OWRmNDhjOGI2Li4yMmY5NWJiYTAyMjYzNWRjNGYzMmU4NGRiZGRkNDUyYzZkNDYzYmRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsaWRhdGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21WYWxpZGF0ZS5jcHAKQEAgLTExMCw4ICsx
MTAsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBXQVJOX1VOVVNFRF9SRVRVUk4gZW5kQmxvY2soQ29u
dHJvbEVudHJ5JiwgRXhwcmVzc2lvbkxpc3QmIGV4cHJlc3Npb25TdGFjayk7CiAgICAgYm9vbCBX
QVJOX1VOVVNFRF9SRVRVUk4gYWRkRW5kVG9VbnJlYWNoYWJsZShDb250cm9sRW50cnkmKTsKIAot
CisgICAgLy8gQ2FsbHMKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsKHVuc2ln
bmVkIGNhbGxlZUluZGV4LCBjb25zdCBTaWduYXR1cmUqLCBjb25zdCBWZWN0b3I8RXhwcmVzc2lv
blR5cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAgICBib29sIFdBUk5fVU5V
U0VEX1JFVFVSTiBhZGRDYWxsSW5kaXJlY3QoY29uc3QgU2lnbmF0dXJlKiwgY29uc3QgVmVjdG9y
PEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7CiAKICAgICB2
b2lkIGR1bXAoY29uc3QgVmVjdG9yPENvbnRyb2xFbnRyeT4mIGNvbnRyb2xTdGFjaywgY29uc3Qg
RXhwcmVzc2lvbkxpc3QmIGV4cHJlc3Npb25TdGFjayk7CiAKQEAgLTM0Nyw2ICszNDgsMzUgQEAg
Ym9vbCBWYWxpZGF0ZTo6YWRkQ2FsbCh1bnNpZ25lZCwgY29uc3QgU2lnbmF0dXJlKiBzaWduYXR1
cmUsIGNvbnN0IFZlY3RvcjxFeHByZXMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBWYWxp
ZGF0ZTo6YWRkQ2FsbEluZGlyZWN0KGNvbnN0IFNpZ25hdHVyZSogc2lnbmF0dXJlLCBjb25zdCBW
ZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KQorewor
ICAgIGNvbnN0IGF1dG8gYXJndW1lbnRDb3VudCA9IHNpZ25hdHVyZS0+YXJndW1lbnRzLnNpemUo
KTsKKyAgICBpZiAoYXJndW1lbnRDb3VudCAhPSBhcmdzLnNpemUoKSAtIDEpIHsKKyAgICAgICAg
U3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgICAgICBidWlsZGVyLmFwcGVuZCgiQXJpdHkgbWlz
bWF0Y2ggaW4gY2FsbF9pbmRpcmVjdCwgZXhwZWN0ZWQ6ICIpOworICAgICAgICBidWlsZGVyLmFw
cGVuZE51bWJlcihzaWduYXR1cmUtPmFyZ3VtZW50cy5zaXplKCkpOworICAgICAgICBidWlsZGVy
LmFwcGVuZCgiIGJ1dCBnb3Q6ICIpOworICAgICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihhcmdz
LnNpemUoKSk7CisgICAgICAgIG1fZXJyb3JNZXNzYWdlID0gYnVpbGRlci50b1N0cmluZygpOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGFyZ3VtZW50Q291bnQ7ICsraSkgeworICAgICAgICBpZiAoYXJnc1tpXSAhPSBzaWduYXR1
cmUtPmFyZ3VtZW50c1tpXSkgeworICAgICAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBtYWtlU3Ry
aW5nKCJFeHBlY3RlZCBhcmd1bWVudCB0eXBlOiAiLCB0b1N0cmluZyhzaWduYXR1cmUtPmFyZ3Vt
ZW50c1tpXSksICIgZG9lcyBub3QgbWF0Y2ggcGFzc2VkIGFyZ3VtZW50IHR5cGU6ICIsIHRvU3Ry
aW5nKGFyZ3NbaV0pKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGlmIChhcmdzLmxhc3QoKSAhPSBJMzIpIHsKKyAgICAgICAgbV9lcnJvck1lc3Nh
Z2UgPSBtYWtlU3RyaW5nKCJFeHBlY3RlZCBjYWxsX2luZGlyZWN0IHRhcmdldCBpbmRleCB0byBo
YXZlIHR5cGU6IGkzMiBidXQgZ290IHR5cGU6ICIsIHRvU3RyaW5nKGFyZ3MubGFzdCgpKSk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgcmVzdWx0ID0gc2lnbmF0dXJl
LT5yZXR1cm5UeXBlOworICAgIHJldHVybiB0cnVlOworfQorCiBib29sIFZhbGlkYXRlOjp1bmlm
eShjb25zdCBFeHByZXNzaW9uTGlzdCYgdmFsdWVzLCBjb25zdCBDb250cm9sVHlwZSYgYmxvY2sp
CiB7CiAgICAgQVNTRVJUKHZhbHVlcy5zaXplKCkgPD0gMSk7CkBAIC0zNzEsMTAgKzQwMSwxMSBA
QCB2b2lkIFZhbGlkYXRlOjpkdW1wKGNvbnN0IFZlY3RvcjxDb250cm9sRW50cnk+JiwgY29uc3Qg
RXhwcmVzc2lvbkxpc3QmKQogICAgIC8vIFRoaW5rIG9mIHRoaXMgYXMgcGVuYW5jZSBmb3IgdGhl
IHNpbiBvZiBiYWQgZXJyb3IgbWVzc2FnZXMuCiB9CiAKLVN0cmluZyB2YWxpZGF0ZUZ1bmN0aW9u
KGNvbnN0IHVpbnQ4X3QqIHNvdXJjZSwgc2l6ZV90IGxlbmd0aCwgY29uc3QgU2lnbmF0dXJlKiBz
aWduYXR1cmUsIGNvbnN0IEZ1bmN0aW9uSW5kZXhTcGFjZSYgZnVuY3Rpb25JbmRleFNwYWNlLCBj
b25zdCBNZW1vcnlJbmZvcm1hdGlvbiYgbWVtb3J5KQorU3RyaW5nIHZhbGlkYXRlRnVuY3Rpb24o
Y29uc3QgdWludDhfdCogc291cmNlLCBzaXplX3QgbGVuZ3RoLCBjb25zdCBTaWduYXR1cmUqIHNp
Z25hdHVyZSwgY29uc3QgSW1tdXRhYmxlRnVuY3Rpb25JbmRleFNwYWNlJiBmdW5jdGlvbkluZGV4
U3BhY2UsIGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvKQogewotICAgIFZhbGlkYXRlIGNv
bnRleHQoc2lnbmF0dXJlLT5yZXR1cm5UeXBlLCBtZW1vcnkpOwotICAgIEZ1bmN0aW9uUGFyc2Vy
PFZhbGlkYXRlPiB2YWxpZGF0b3IoY29udGV4dCwgc291cmNlLCBsZW5ndGgsIHNpZ25hdHVyZSwg
ZnVuY3Rpb25JbmRleFNwYWNlKTsKKyAgICBWYWxpZGF0ZSBjb250ZXh0KHNpZ25hdHVyZS0+cmV0
dXJuVHlwZSwgaW5mby5tZW1vcnkpOworICAgIEZ1bmN0aW9uUGFyc2VyPFZhbGlkYXRlPiB2YWxp
ZGF0b3IoY29udGV4dCwgc291cmNlLCBsZW5ndGgsIHNpZ25hdHVyZSwgZnVuY3Rpb25JbmRleFNw
YWNlLCBpbmZvKTsKKwogICAgIGlmICghdmFsaWRhdG9yLnBhcnNlKCkpIHsKICAgICAgICAgLy8g
RklYTUU6IGFkZCBiZXR0ZXIgbG9jYXRpb24gaW5mb3JtYXRpb24gaGVyZS4gc2VlOiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0Mjg4CiAgICAgICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgbmV2ZXIgbm90IGhhdmUgYW4gZXJyb3IgbWVzc2FnZSBpZiB3ZSByZXR1cm4g
ZmFsc2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsaWRh
dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21WYWxpZGF0ZS5oCmluZGV4IDQ1
NGY5ZjVmMDIzZWMwMmY1ZGI2OTFlMWJkYWM4MDdiMmRmYWJhZjEuLjg2MWZkNzI5ODY2NmVmZjE2
YmQ4YzdjNWQyNzVlNmFlZjIwYjRlOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21WYWxpZGF0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21WYWxpZGF0ZS5oCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgV2FzbSB7CiAKLVN0cmluZyB2YWxpZGF0ZUZ1bmN0aW9uKGNvbnN0IHVpbnQ4X3QqLCBzaXpl
X3QsIGNvbnN0IFNpZ25hdHVyZSosIGNvbnN0IEZ1bmN0aW9uSW5kZXhTcGFjZSYsIGNvbnN0IE1l
bW9yeUluZm9ybWF0aW9uJik7CitTdHJpbmcgdmFsaWRhdGVGdW5jdGlvbihjb25zdCB1aW50OF90
Kiwgc2l6ZV90LCBjb25zdCBTaWduYXR1cmUqLCBjb25zdCBJbW11dGFibGVGdW5jdGlvbkluZGV4
U3BhY2UmLCBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYpOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6V2FzbQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dl
YkFzc2VtYmx5TW9kdWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlNb2R1bGUuY3BwCmluZGV4IGRlNzczYjhmMDVmNzU4NjM1MjRkYzlmZDYzYmM1NjI5
ZWJjYzIzZmMuLjgzYTM5NzM0OGIxMTA3MzZhNjgwYTAyZThhOWJlZWVlODk1NDY3YmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1
bGUuY3BwCkBAIC0zOCw5ICszOCw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0lu
Zm8gSlNXZWJBc3NlbWJseU1vZHVsZTo6c19pbmZvID0geyAiV2ViQXNzZW1ibHkuTW9kdWxlIiwg
JkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1dlYkFzc2VtYmx5
TW9kdWxlKSB9OwogCi1KU1dlYkFzc2VtYmx5TW9kdWxlKiBKU1dlYkFzc2VtYmx5TW9kdWxlOjpj
cmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc3RkOjp1bmlxdWVfcHRyPFdhc206
Ok1vZHVsZUluZm9ybWF0aW9uPiYmIG1vZHVsZUluZm9ybWF0aW9uLCBCYWc8Q2FsbExpbmtJbmZv
PiYmIGNhbGxMaW5rSW5mb3MsIFZlY3RvcjxXYXNtOjpXYXNtVG9KU1N0dWI+JiYgd2FzbVRvSlNT
dHVicywgV2FzbTo6RnVuY3Rpb25JbmRleFNwYWNlJiYgZnVuY3Rpb25JbmRleFNwYWNlLCBTeW1i
b2xUYWJsZSogZXhwb3J0U3ltYm9sVGFibGUsIHVuc2lnbmVkIGNhbGxlZUNvdW50KQorSlNXZWJB
c3NlbWJseU1vZHVsZSogSlNXZWJBc3NlbWJseU1vZHVsZTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIHN0ZDo6dW5pcXVlX3B0cjxXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbj4m
JiBtb2R1bGVJbmZvcm1hdGlvbiwgQmFnPENhbGxMaW5rSW5mbz4mJiBjYWxsTGlua0luZm9zLCBW
ZWN0b3I8V2FzbTo6V2FzbVRvSlNTdHViPiYmIHdhc21Ub0pTU3R1YnMsIFdhc206OkltbXV0YWJs
ZUZ1bmN0aW9uSW5kZXhTcGFjZSYmIGZ1bmN0aW9uSW5kZXhTcGFjZSwgU3ltYm9sVGFibGUqIGV4
cG9ydFN5bWJvbFRhYmxlLCB1bnNpZ25lZCBjYWxsZWVDb3VudCkKIHsKLSAgICBhdXRvKiBpbnN0
YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTV2ViQXNzZW1ibHlNb2R1bGU+KHZt
LmhlYXAsIGFsbG9jYXRpb25TaXplKGNhbGxlZUNvdW50KSkpIEpTV2ViQXNzZW1ibHlNb2R1bGUo
dm0sIHN0cnVjdHVyZSwgc3RkOjpmb3J3YXJkPHN0ZDo6dW5pcXVlX3B0cjxXYXNtOjpNb2R1bGVJ
bmZvcm1hdGlvbj4+KG1vZHVsZUluZm9ybWF0aW9uKSwgc3RkOjpmb3J3YXJkPEJhZzxDYWxsTGlu
a0luZm8+PihjYWxsTGlua0luZm9zKSwgc3RkOjpmb3J3YXJkPFZlY3RvcjxXYXNtOjpXYXNtVG9K
U1N0dWI+Pih3YXNtVG9KU1N0dWJzKSwgc3RkOjpmb3J3YXJkPFdhc206OkZ1bmN0aW9uSW5kZXhT
cGFjZT4oZnVuY3Rpb25JbmRleFNwYWNlKSwgY2FsbGVlQ291bnQpOworICAgIGF1dG8qIGluc3Rh
bmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNXZWJBc3NlbWJseU1vZHVsZT4odm0u
aGVhcCwgYWxsb2NhdGlvblNpemUoY2FsbGVlQ291bnQpKSkgSlNXZWJBc3NlbWJseU1vZHVsZSh2
bSwgc3RydWN0dXJlLCBzdGQ6OmZvcndhcmQ8c3RkOjp1bmlxdWVfcHRyPFdhc206Ok1vZHVsZUlu
Zm9ybWF0aW9uPj4obW9kdWxlSW5mb3JtYXRpb24pLCBzdGQ6OmZvcndhcmQ8QmFnPENhbGxMaW5r
SW5mbz4+KGNhbGxMaW5rSW5mb3MpLCBzdGQ6OmZvcndhcmQ8VmVjdG9yPFdhc206Oldhc21Ub0pT
U3R1Yj4+KHdhc21Ub0pTU3R1YnMpLCBzdGQ6OmZvcndhcmQ8V2FzbTo6SW1tdXRhYmxlRnVuY3Rp
b25JbmRleFNwYWNlPihmdW5jdGlvbkluZGV4U3BhY2UpLCBjYWxsZWVDb3VudCk7CiAgICAgaW5z
dGFuY2UtPmZpbmlzaENyZWF0aW9uKHZtLCBleHBvcnRTeW1ib2xUYWJsZSk7CiAgICAgcmV0dXJu
IGluc3RhbmNlOwogfQpAQCAtNTAsNyArNTAsNyBAQCBTdHJ1Y3R1cmUqIEpTV2ViQXNzZW1ibHlN
b2R1bGU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgog
ICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUs
IFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAotSlNX
ZWJBc3NlbWJseU1vZHVsZTo6SlNXZWJBc3NlbWJseU1vZHVsZShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBzdGQ6OnVuaXF1ZV9wdHI8V2FzbTo6TW9kdWxlSW5mb3JtYXRpb24+JiYgbW9k
dWxlSW5mb3JtYXRpb24sIEJhZzxDYWxsTGlua0luZm8+JiYgY2FsbExpbmtJbmZvcywgVmVjdG9y
PFdhc206Oldhc21Ub0pTU3R1Yj4mJiB3YXNtVG9KU1N0dWJzLCBXYXNtOjpGdW5jdGlvbkluZGV4
U3BhY2UmJiBmdW5jdGlvbkluZGV4U3BhY2UsIHVuc2lnbmVkIGNhbGxlZUNvdW50KQorSlNXZWJB
c3NlbWJseU1vZHVsZTo6SlNXZWJBc3NlbWJseU1vZHVsZShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBzdGQ6OnVuaXF1ZV9wdHI8V2FzbTo6TW9kdWxlSW5mb3JtYXRpb24+JiYgbW9kdWxl
SW5mb3JtYXRpb24sIEJhZzxDYWxsTGlua0luZm8+JiYgY2FsbExpbmtJbmZvcywgVmVjdG9yPFdh
c206Oldhc21Ub0pTU3R1Yj4mJiB3YXNtVG9KU1N0dWJzLCBXYXNtOjpJbW11dGFibGVGdW5jdGlv
bkluZGV4U3BhY2UmJiBmdW5jdGlvbkluZGV4U3BhY2UsIHVuc2lnbmVkIGNhbGxlZUNvdW50KQog
ICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQogICAgICwgbV9tb2R1bGVJbmZvcm1hdGlvbihXVEZN
b3ZlKG1vZHVsZUluZm9ybWF0aW9uKSkKICAgICAsIG1fY2FsbExpbmtJbmZvcyhXVEZNb3ZlKGNh
bGxMaW5rSW5mb3MpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
SlNXZWJBc3NlbWJseU1vZHVsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNX
ZWJBc3NlbWJseU1vZHVsZS5oCmluZGV4IDA1ZDJjZjAxMGVjOGNkZDcyOTE4YmNhMjE3OWRiZmFj
YWM5MGU1NWIuLjdiZTYwN2ExZGI0NjJmYWU4MDlkOTIxZTRhMTVkZWNiZWU1YzM3MTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxl
LmgKQEAgLTQyLDE0ICs0MiwxNCBAQCBjbGFzcyBKU1dlYkFzc2VtYmx5TW9kdWxlIDogcHVibGlj
IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTRGVzdHJ1Y3Rp
YmxlT2JqZWN0IEJhc2U7CiAKLSAgICBzdGF0aWMgSlNXZWJBc3NlbWJseU1vZHVsZSogY3JlYXRl
KFZNJiwgU3RydWN0dXJlKiwgc3RkOjp1bmlxdWVfcHRyPFdhc206Ok1vZHVsZUluZm9ybWF0aW9u
PiYmLCBCYWc8Q2FsbExpbmtJbmZvPiYmLCBWZWN0b3I8V2FzbTo6V2FzbVRvSlNTdHViPiYmLCBX
YXNtOjpGdW5jdGlvbkluZGV4U3BhY2UmJiwgU3ltYm9sVGFibGUqLCB1bnNpZ25lZCk7CisgICAg
c3RhdGljIEpTV2ViQXNzZW1ibHlNb2R1bGUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIHN0ZDo6
dW5pcXVlX3B0cjxXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbj4mJiwgQmFnPENhbGxMaW5rSW5mbz4m
JiwgVmVjdG9yPFdhc206Oldhc21Ub0pTU3R1Yj4mJiwgV2FzbTo6SW1tdXRhYmxlRnVuY3Rpb25J
bmRleFNwYWNlJiYsIFN5bWJvbFRhYmxlKiwgdW5zaWduZWQpOwogICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKICAg
ICBERUNMQVJFX0lORk87CiAKICAgICBjb25zdCBXYXNtOjpNb2R1bGVJbmZvcm1hdGlvbiYgbW9k
dWxlSW5mb3JtYXRpb24oKSBjb25zdCB7IHJldHVybiAqbV9tb2R1bGVJbmZvcm1hdGlvbi5nZXQo
KTsgfQogICAgIFN5bWJvbFRhYmxlKiBleHBvcnRTeW1ib2xUYWJsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZXhwb3J0U3ltYm9sVGFibGUuZ2V0KCk7IH0KLSAgICBXYXNtOjpTaWduYXR1cmUqIHNpZ25h
dHVyZUZvckZ1bmN0aW9uSW5kZXhTcGFjZSh1bnNpZ25lZCBmdW5jdGlvbkluZGV4U3BhY2UpIGNv
bnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25JbmRleFNwYWNlLmF0KGZ1bmN0aW9uSW5kZXhTcGFjZSku
c2lnbmF0dXJlOyB9CisgICAgV2FzbTo6U2lnbmF0dXJlKiBzaWduYXR1cmVGb3JGdW5jdGlvbklu
ZGV4U3BhY2UodW5zaWduZWQgZnVuY3Rpb25JbmRleFNwYWNlKSBjb25zdCB7IEFTU0VSVChmdW5j
dGlvbkluZGV4U3BhY2UgPCBtX2Z1bmN0aW9uSW5kZXhTcGFjZS5zaXplKTsgcmV0dXJuIG1fZnVu
Y3Rpb25JbmRleFNwYWNlLmJ1ZmZlci5nZXQoKVtmdW5jdGlvbkluZGV4U3BhY2VdLnNpZ25hdHVy
ZTsgfQogICAgIHVuc2lnbmVkIGltcG9ydENvdW50KCkgY29uc3QgeyByZXR1cm4gbV93YXNtVG9K
U1N0dWJzLnNpemUoKTsgfQogCiAgICAgSlNXZWJBc3NlbWJseUNhbGxlZSogY2FsbGVlRnJvbUZ1
bmN0aW9uSW5kZXhTcGFjZSh1bnNpZ25lZCBmdW5jdGlvbkluZGV4U3BhY2UpCkBAIC02NSw4ICs2
NSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8V3JpdGVCYXJyaWVy
PEpTV2ViQXNzZW1ibHlDYWxsZWU+Kj4oYml0d2lzZV9jYXN0PGNoYXIqPih0aGlzKSArIG9mZnNl
dE9mQ2FsbGVlcygpKTsKICAgICB9CiAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mRnVu
Y3Rpb25JbmRleFNwYWNlKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTV2ViQXNzZW1ibHlN
b2R1bGUsIG1fZnVuY3Rpb25JbmRleFNwYWNlKTsgfQorCiBwcm90ZWN0ZWQ6Ci0gICAgSlNXZWJB
c3NlbWJseU1vZHVsZShWTSYsIFN0cnVjdHVyZSosIHN0ZDo6dW5pcXVlX3B0cjxXYXNtOjpNb2R1
bGVJbmZvcm1hdGlvbj4mJiwgQmFnPENhbGxMaW5rSW5mbz4mJiwgVmVjdG9yPFdhc206Oldhc21U
b0pTU3R1Yj4mJiwgV2FzbTo6RnVuY3Rpb25JbmRleFNwYWNlJiYsIHVuc2lnbmVkIGNhbGxlZUNv
dW50KTsKKyAgICBKU1dlYkFzc2VtYmx5TW9kdWxlKFZNJiwgU3RydWN0dXJlKiwgc3RkOjp1bmlx
dWVfcHRyPFdhc206Ok1vZHVsZUluZm9ybWF0aW9uPiYmLCBCYWc8Q2FsbExpbmtJbmZvPiYmLCBW
ZWN0b3I8V2FzbTo6V2FzbVRvSlNTdHViPiYmLCBXYXNtOjpJbW11dGFibGVGdW5jdGlvbkluZGV4
U3BhY2UmJiwgdW5zaWduZWQgY2FsbGVlQ291bnQpOwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
Vk0mLCBTeW1ib2xUYWJsZSopOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAg
ICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwpAQCAt
ODYsNyArODgsNyBAQCBwcml2YXRlOgogICAgIEJhZzxDYWxsTGlua0luZm8+IG1fY2FsbExpbmtJ
bmZvczsKICAgICBXcml0ZUJhcnJpZXI8U3ltYm9sVGFibGU+IG1fZXhwb3J0U3ltYm9sVGFibGU7
CiAgICAgVmVjdG9yPFdhc206Oldhc21Ub0pTU3R1Yj4gbV93YXNtVG9KU1N0dWJzOwotICAgIFdh
c206OkZ1bmN0aW9uSW5kZXhTcGFjZSBtX2Z1bmN0aW9uSW5kZXhTcGFjZTsKKyAgICBjb25zdCBX
YXNtOjpJbW11dGFibGVGdW5jdGlvbkluZGV4U3BhY2UgbV9mdW5jdGlvbkluZGV4U3BhY2U7CiAg
ICAgdW5zaWduZWQgbV9jYWxsZWVDb3VudDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL3dhc20uanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dh
c20uanNvbgppbmRleCA0YjhmYjE5YTg3NTZhNjEyYzhjZWVjNzk2NDYzNmMzNGU3MTBiMmY3Li5l
YzBlZmM1ZDU3ZjM4NzZlZmE2YzNkODcxYTI4MzA2YmU3MDBhMGU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS93YXNtLmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vd2FzbS5qc29uCkBAIC02NCw3ICs2NCw3IEBACiAgICAgICAgICJnZXRfZ2xvYmFs
IjogICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6ICAzNSwgInJl
dHVybiI6IFsiZ2xvYmFsIl0sICAgInBhcmFtZXRlciI6IFtdLCAgICAgICAgICAgICAgICAgICAg
ICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZ2xvYmFsX2luZGV4IiwgICAidHlwZSI6ICJ2YXJ1
aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogInJlYWQgYSBnbG9iYWwgdmFyaWFibGUiIH0sCiAgICAgICAgICJzZXRfZ2xvYmFs
IjogICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6ICAzNiwgInJl
dHVybiI6IFsiIl0sICAgICAgICAgInBhcmFtZXRlciI6IFsiZ2xvYmFsIl0sICAgICAgICAgICAg
ICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZ2xvYmFsX2luZGV4IiwgICAidHlwZSI6ICJ2YXJ1
aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogIndyaXRlIGEgZ2xvYmFsIHZhcmlhYmxlIiB9LAogICAgICAgICAiY2FsbCI6ICAg
ICAgICAgICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFsdWUiOiAgMTYsICJy
ZXR1cm4iOiBbImNhbGwiXSwgICAgICJwYXJhbWV0ZXIiOiBbImNhbGwiXSwgICAgICAgICAgICAg
ICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZ1bmN0aW9uX2luZGV4IiwgInR5cGUiOiAidmFy
dWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJjYWxsIGEgZnVuY3Rpb24gYnkgaXRzIGluZGV4IiB9LAotICAgICAgICAiY2Fs
bF9pbmRpcmVjdCI6ICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFsdWUiOiAg
MTcsICJyZXR1cm4iOiBbImNhbGwiXSwgICAgICJwYXJhbWV0ZXIiOiBbImNhbGwiXSwgICAgICAg
ICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInR5cGVfaW5kZXgiLCAgICAgInR5cGUi
OiAidmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJkZXNjcmlwdGlvbiI6ICJjYWxsIGEgZnVuY3Rpb24gaW5kaXJlY3Qgd2l0aCBhbiBleHBlY3Rl
ZCBzaWduYXR1cmUiIH0sCisgICAgICAgICJjYWxsX2luZGlyZWN0IjogICAgICAgeyAiY2F0ZWdv
cnkiOiAiY2FsbCIsICAgICAgICJ2YWx1ZSI6ICAxNywgInJldHVybiI6IFsiY2FsbCJdLCAgICAg
InBhcmFtZXRlciI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5h
bWUiOiAidHlwZV9pbmRleCIsICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogInJl
c2VydmVkIiwgICAgICJ0eXBlIjogInZhcnVpbnQxIn1dLCAiZGVzY3JpcHRpb24iOiAiY2FsbCBh
IGZ1bmN0aW9uIGluZGlyZWN0IHdpdGggYW4gZXhwZWN0ZWQgc2lnbmF0dXJlIiB9LAogICAgICAg
ICAiaTMyLmxvYWQ4X3MiOiAgICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFs
dWUiOiAgNDQsICJyZXR1cm4iOiBbImkzMiJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwg
ICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAg
InR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50
MzIifV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAogICAgICAgICAiaTMy
LmxvYWQ4X3UiOiAgICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAg
NDUsICJyZXR1cm4iOiBbImkzMiJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAg
ICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUi
OiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0s
ICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAogICAgICAgICAiaTMyLmxvYWQx
Nl9zIjogICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNDYsICJy
ZXR1cm4iOiBbImkzMiJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAg
ICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFy
dWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNj
cmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFu
Z2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA0MjY2ZDNlYWYxZDVhYTU0MGQ2MjZkOGZh
Y2EyMzM1ZjdhMzM5ZTM4Li4xYWRhNzZhMjhmZmU4MDYxNzVkZWJmYzc3YmQ1ZmM1MjQ4NjAyZWJk
IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIwIEBACisyMDE2LTEyLTA5ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJA
YXBwbGUuY29tPgorCisgICAgICAgIFdhc20gc2hvdWxkIHN1cHBvcnQgY2FsbF9pbmRpcmVjdAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1NzE4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRmlsaXAgUGl6bG8uCisKKyAgICAgICAgKiB3YXNtL0J1aWxk
ZXIuanM6CisgICAgICAgICogd2FzbS9mdW5jdGlvbi10ZXN0cy9jYWxsLWluZGlyZWN0LXBhcmFt
cy5qczogQWRkZWQuCisgICAgICAgICogd2FzbS9mdW5jdGlvbi10ZXN0cy9jYWxsLWluZGlyZWN0
LmpzOiBBZGRlZC4KKyAgICAgICAgKiB3YXNtL2pzLWFwaS9jYWxsLWluZGlyZWN0LmpzOiBBZGRl
ZC4KKyAgICAgICAgKGNvbnN0Lndhc21Nb2R1bGVXaGljaEltcG9ydEpTKToKKyAgICAgICAgKE1v
bm9tb3JwaGljSW1wb3J0KToKKyAgICAgICAgKFBvbHlwaGljMkltcG9ydCk6CisgICAgICAgIChW
aXJ0dWFsSW1wb3J0KToKKyAgICAgICAgKiB3YXNtL3dhc20uanNvbjoKKwogMjAxNi0xMi0wOSAg
SkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViQXNzZW1ibHkg
SlMgQVBJOiBpbXBsZW1lbnQgc3RhcnQgZnVuY3Rpb24KZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2Fz
bS9CdWlsZGVyLmpzIGIvSlNUZXN0cy93YXNtL0J1aWxkZXIuanMKaW5kZXggYTFmODBiNzBmYWEz
ODlmZTAyZTA4NzMyY2U4NmE4YmU4YmI1OGU5OS4uMjU5MTIxNjZjODNiMmQxMzUzYzExYjQxM2Ji
M2I2Y2U5NzQ2OTEzMCAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL0J1aWxkZXIuanMKKysrIGIv
SlNUZXN0cy93YXNtL0J1aWxkZXIuanMKQEAgLTIzNiw2ICsyMzYsNyBAQCBjb25zdCBfY2hlY2tJ
bW1zID0gKG9wLCBpbW1zLCBleHBlY3RlZEltbXMsIHJldCkgPT4gewogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgInRhcmdldF9jb3VudCI6IGJyZWFrOyAvLyBpbXByb3ZlIGNoZWNr
aW5nIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0MjEKICAgICAg
ICAgY2FzZSAidGFyZ2V0X3RhYmxlIjogYnJlYWs7IC8vIGltcHJvdmUgY2hlY2tpbmcgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQorICAgICAgICBjYXNlICJy
ZXNlcnZlZCI6IGJyZWFrOyAvLyBpbXByb3ZlIGNoZWNraW5nIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0MjEKICAgICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVy
cm9yKGBJbXBsZW1lbnRhdGlvbiBwcm9ibGVtOiB1bmhhbmRsZWQgaW1tZWRpYXRlICIke2V4cGVj
dC5uYW1lfSIgb24gIiR7b3B9ImApOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL2NhbGwtaW5kaXJlY3QtcGFyYW1zLmpzIGIvSlNUZXN0
cy93YXNtL2Z1bmN0aW9uLXRlc3RzL2NhbGwtaW5kaXJlY3QtcGFyYW1zLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQxNDgyMTFhOGYyOWQxMWNiMGE2MjUwYTIwYjJkYWI4OGUwMTg3OTMKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvY2FsbC1pbmRpcmVjdC1wYXJhbXMuanMK
QEAgLTAsMCArMSwyOCBAQAoraW1wb3J0IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRlci5qcycKKwor
Y29uc3QgYiA9IG5ldyBCdWlsZGVyKCk7CitiLlR5cGUoKS5FbmQoKQorICAgIC5GdW5jdGlvbigp
LkVuZCgpCisgICAgLkNvZGUoKQorCisgICAgLkZ1bmN0aW9uKHsgcGFyYW1zOiBbImkzMiJdLCBy
ZXQ6ICJpMzIiIH0pCisgICAgLkkzMkNvbnN0KDEpCisgICAgLkVuZCgpCisKKyAgICAuRnVuY3Rp
b24oeyBwYXJhbXM6IFsiaTMyIl0sIHJldDogImkzMiIgfSkKKyAgICAuR2V0TG9jYWwoMCkKKyAg
ICAuRW5kKCkKKworICAgIC5GdW5jdGlvbih7IHBhcmFtczogWyJpMzIiLCAiaTMyIl0sIHJldDog
ImkzMiIgfSkKKyAgICAuR2V0TG9jYWwoMSkKKyAgICAuR2V0TG9jYWwoMCkKKyAgICAuQ2FsbElu
ZGlyZWN0KDAsIDApCisgICAgLkVuZCgpCisKKworY29uc3QgYmluID0gYi5XZWJBc3NlbWJseSgp
CitiaW4udHJpbSgpOwordGVzdFdhc21Nb2R1bGVGdW5jdGlvbnMoYmluLmdldCgpLCAzLCBbXSwg
W10sCisgICAgICAgICAgICAgICAgICAgICAgICBbW3sgdHlwZTogImkzMiIsIHZhbHVlOiAxIH0s
IFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMCB9LCB7IHR5cGU6ICJpMzIiLCB2YWx1ZTogNCB9XV0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgW3sgdHlwZTogImkzMiIsIHZhbHVlOiA0IH0sIFt7
IHR5cGU6ICJpMzIiLCB2YWx1ZTogMSB9LCB7IHR5cGU6ICJpMzIiLCB2YWx1ZTogNCB9XV0sCisg
ICAgICAgICAgICAgICAgICAgICAgICBdKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9mdW5j
dGlvbi10ZXN0cy9jYWxsLWluZGlyZWN0LmpzIGIvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3Rz
L2NhbGwtaW5kaXJlY3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTRiNWZiZTgxODRjN2NiYTkyOTU4ZTA0NDJi
YjNhNGRlN2M5NmQ4OQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10
ZXN0cy9jYWxsLWluZGlyZWN0LmpzCkBAIC0wLDAgKzEsMjcgQEAKK2ltcG9ydCBCdWlsZGVyIGZy
b20gJy4uL0J1aWxkZXIuanMnCisKK2NvbnN0IGIgPSBuZXcgQnVpbGRlcigpOworYi5UeXBlKCku
RW5kKCkKKyAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgIC5Db2RlKCkKKworICAgIC5GdW5jdGlv
bih7IHBhcmFtczogW10sIHJldDogImkzMiIgfSkKKyAgICAuSTMyQ29uc3QoMSkKKyAgICAuRW5k
KCkKKworICAgIC5GdW5jdGlvbih7IHBhcmFtczogW10sIHJldDogImkzMiIgfSkKKyAgICAuSTMy
Q29uc3QoMikKKyAgICAuRW5kKCkKKworICAgIC5GdW5jdGlvbih7IHBhcmFtczogWyJpMzIiXSwg
cmV0OiAiaTMyIiB9KQorICAgIC5HZXRMb2NhbCgwKQorICAgIC5DYWxsSW5kaXJlY3QoMCwgMCkK
KyAgICAuRW5kKCkKKworCitjb25zdCBiaW4gPSBiLldlYkFzc2VtYmx5KCkKK2Jpbi50cmltKCk7
Cit0ZXN0V2FzbU1vZHVsZUZ1bmN0aW9ucyhiaW4uZ2V0KCksIDMsIFtdLCBbXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFtbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDEgfSwgW3sgdHlwZTogImkz
MiIsIHZhbHVlOiAwIH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbeyB0eXBlOiAiaTMy
IiwgdmFsdWU6IDEgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAwIH1dXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIF0pOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2pzLWFwaS9jYWxsLWlu
ZGlyZWN0LmpzIGIvSlNUZXN0cy93YXNtL2pzLWFwaS9jYWxsLWluZGlyZWN0LmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmI4MjdlZjk1YmRmOTNkMzhmZDIyMDViMDQxYTdmYTg2Zjc5NjcxNTUKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3dhc20vanMtYXBpL2NhbGwtaW5kaXJlY3QuanMKQEAgLTAsMCArMSw4
NyBAQAoraW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5qcyc7CitpbXBvcnQgQnVp
bGRlciBmcm9tICcuLi9CdWlsZGVyLmpzJzsKKworY29uc3Qgd2FzbU1vZHVsZVdoaWNoSW1wb3J0
SlMgPSAoKSA9PiB7CisgICAgY29uc3QgYnVpbGRlciA9IChuZXcgQnVpbGRlcigpKQorICAgICAg
ICAuVHlwZSgpLkVuZCgpCisgICAgICAgIC5JbXBvcnQoKQorICAgICAgICAgICAgLkZ1bmN0aW9u
KCJpbXAiLCAiZnVuYyIsIHsgcGFyYW1zOiBbImkzMiJdIH0pCisgICAgICAgIC5FbmQoKQorICAg
ICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgICAuRXhwb3J0KCkKKyAgICAgICAgICAgIC5G
dW5jdGlvbigiY2hhbmdlQ291bnRlciIpCisgICAgICAgIC5FbmQoKQorICAgICAgICAuQ29kZSgp
CisgICAgICAgICAgICAuRnVuY3Rpb24oImNoYW5nZUNvdW50ZXIiLCB7IHBhcmFtczogWyJpMzIi
LCAiaTMyIl0gfSkKKyAgICAgICAgICAgICAgICAuSTMyQ29uc3QoNDIpCisgICAgICAgICAgICAg
ICAgLkdldExvY2FsKDApCisgICAgICAgICAgICAgICAgLkkzMkFkZCgpCisgICAgICAgICAgICAg
ICAgLkdldExvY2FsKDEpCisgICAgICAgICAgICAgICAgLkNhbGxJbmRpcmVjdCgwLCAwKSAvLyBD
YWxscyBmdW5jKHBhcmFtWzBdICsgNDIpLgorICAgICAgICAgICAgLkVuZCgpCisgICAgICAgIC5F
bmQoKTsKKyAgICBjb25zdCBiaW4gPSBidWlsZGVyLldlYkFzc2VtYmx5KCkuZ2V0KCk7CisgICAg
Y29uc3QgbW9kdWxlID0gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4pOworICAgIHJldHVybiBt
b2R1bGU7Cit9OworCisKKyhmdW5jdGlvbiBNb25vbW9ycGhpY0ltcG9ydCgpIHsKKyAgICBsZXQg
Y291bnRlciA9IDA7CisgICAgY29uc3QgY291bnRlclNldHRlciA9IHYgPT4gY291bnRlciA9IHY7
CisgICAgY29uc3QgbW9kdWxlID0gd2FzbU1vZHVsZVdoaWNoSW1wb3J0SlMoKTsKKyAgICBjb25z
dCBpbnN0YW5jZSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHsgaW1wOiB7IGZ1
bmM6IGNvdW50ZXJTZXR0ZXIgfSB9KTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQwOTY7ICsr
aSkgeworICAgICAgICAvLyBJbnZva2UgdGhpcyBhIGJ1bmNoIG9mIHRpbWVzIHRvIG1ha2Ugc3Vy
ZSB0aGUgSUMgaW4gdGhlIHdhc20gLT4gSlMgc3R1YiB3b3JrcyBjb3JyZWN0bHkuCisgICAgICAg
IGluc3RhbmNlLmV4cG9ydHMuY2hhbmdlQ291bnRlcihpLCAwKTsKKyAgICAgICAgYXNzZXJ0LmVx
KGNvdW50ZXIsIGkgKyA0Mik7CisgICAgfQorfSkoKTsKKworKGZ1bmN0aW9uIFBvbHlwaGljMklt
cG9ydCgpIHsKKyAgICBsZXQgY291bnRlckEgPSAwOworICAgIGxldCBjb3VudGVyQiA9IHVuZGVm
aW5lZDsKKyAgICBjb25zdCBjb3VudGVyQVNldHRlciA9IHYgPT4gY291bnRlckEgPSB2OworICAg
IGNvbnN0IGNvdW50ZXJCU2V0dGVyID0gdiA9PiBjb3VudGVyQiA9IHsgdmFsdWVCOiB2IH07Cisg
ICAgY29uc3QgbW9kdWxlID0gd2FzbU1vZHVsZVdoaWNoSW1wb3J0SlMoKTsKKyAgICBjb25zdCBp
bnN0YW5jZUEgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7IGltcDogeyBmdW5j
OiBjb3VudGVyQVNldHRlciB9IH0pOworICAgIGNvbnN0IGluc3RhbmNlQiA9IG5ldyBXZWJBc3Nl
bWJseS5JbnN0YW5jZShtb2R1bGUsIHsgaW1wOiB7IGZ1bmM6IGNvdW50ZXJCU2V0dGVyIH0gfSk7
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAyMDQ4OyArK2kpIHsKKyAgICAgICAgaW5zdGFuY2VB
LmV4cG9ydHMuY2hhbmdlQ291bnRlcihpLCAwKTsKKyAgICAgICAgYXNzZXJ0LmlzQShjb3VudGVy
QSwgIm51bWJlciIpOworICAgICAgICBhc3NlcnQuZXEoY291bnRlckEsIGkgKyA0Mik7CisgICAg
ICAgIGluc3RhbmNlQi5leHBvcnRzLmNoYW5nZUNvdW50ZXIoaSwgMCk7CisgICAgICAgIGFzc2Vy
dC5pc0EoY291bnRlckIsICJvYmplY3QiKTsKKyAgICAgICAgYXNzZXJ0LmVxKGNvdW50ZXJCLnZh
bHVlQiwgaSArIDQyKTsKKyAgICB9Cit9KSgpOworCisoZnVuY3Rpb24gVmlydHVhbEltcG9ydCgp
IHsKKyAgICBjb25zdCBudW0gPSAxMDsgLy8gSXQncyBkZWZpbml0ZWx5IGdvaW5nIHZpcnR1YWwg
YXQgMTAhCisgICAgbGV0IGNvdW50ZXJzID0gWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBd
OworICAgIGNvbnN0IGNvdW50ZXJTZXR0ZXJzID0gWworICAgICAgICB2ID0+IGNvdW50ZXJzWzBd
ID0gdiwKKyAgICAgICAgdiA9PiBjb3VudGVyc1sxXSA9IHYgKyAxLAorICAgICAgICB2ID0+IGNv
dW50ZXJzWzJdID0gdiArIDIsCisgICAgICAgIHYgPT4gY291bnRlcnNbM10gPSB2ICsgMywKKyAg
ICAgICAgdiA9PiBjb3VudGVyc1s0XSA9IHYgKyA0LAorICAgICAgICB2ID0+IGNvdW50ZXJzWzVd
ID0gdiArIDUsCisgICAgICAgIHYgPT4gY291bnRlcnNbNl0gPSB2ICsgNiwKKyAgICAgICAgdiA9
PiBjb3VudGVyc1s3XSA9IHYgKyA3LAorICAgICAgICB2ID0+IGNvdW50ZXJzWzhdID0gdiArIDgs
CisgICAgICAgIHYgPT4gY291bnRlcnNbOV0gPSB2ICsgOSwKKyAgICBdOworICAgIGFzc2VydC5l
cShjb3VudGVycy5sZW5ndGgsIG51bSk7CisgICAgYXNzZXJ0LmVxKGNvdW50ZXJTZXR0ZXJzLmxl
bmd0aCwgbnVtKTsKKyAgICBjb25zdCBtb2R1bGUgPSB3YXNtTW9kdWxlV2hpY2hJbXBvcnRKUygp
OworICAgIGxldCBpbnN0YW5jZXMgPSBbXTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bTsg
KytpKQorICAgICAgICBpbnN0YW5jZXNbaV0gPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9k
dWxlLCB7IGltcDogeyBmdW5jOiBjb3VudGVyU2V0dGVyc1tpXSB9IH0pOworICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgMjA0ODsgKytpKSB7CisgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbnVt
OyArK2opIHsKKyAgICAgICAgICAgIGluc3RhbmNlc1tqXS5leHBvcnRzLmNoYW5nZUNvdW50ZXIo
aSwgMCk7CisgICAgICAgICAgICBhc3NlcnQuaXNBKGNvdW50ZXJzW2pdLCAibnVtYmVyIik7Cisg
ICAgICAgICAgICBhc3NlcnQuZXEoY291bnRlcnNbal0sIGkgKyA0MiArIGopOworICAgICAgICB9
CisgICAgfQorfSkoKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS93YXNtLmpzb24gYi9KU1Rl
c3RzL3dhc20vd2FzbS5qc29uCmluZGV4IDRiOGZiMTlhODc1NmE2MTJjOGNlZWM3OTY0NjM2YzM0
ZTcxMGIyZjcuLmVjMGVmYzVkNTdmMzg3NmVmYTZjM2Q4NzFhMjgzMDZiZTcwMGEwZTQgMTAwNjQ0
Ci0tLSBhL0pTVGVzdHMvd2FzbS93YXNtLmpzb24KKysrIGIvSlNUZXN0cy93YXNtL3dhc20uanNv
bgpAQCAtNjQsNyArNjQsNyBAQAogICAgICAgICAiZ2V0X2dsb2JhbCI6ICAgICAgICAgIHsgImNh
dGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgMzUsICJyZXR1cm4iOiBbImdsb2JhbCJd
LCAgICJwYXJhbWV0ZXIiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBb
eyJuYW1lIjogImdsb2JhbF9pbmRleCIsICAgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJyZWFkIGEg
Z2xvYmFsIHZhcmlhYmxlIiB9LAogICAgICAgICAic2V0X2dsb2JhbCI6ICAgICAgICAgIHsgImNh
dGVnb3J5IjogInNwZWNpYWwiLCAgICAidmFsdWUiOiAgMzYsICJyZXR1cm4iOiBbIiJdLCAgICAg
ICAgICJwYXJhbWV0ZXIiOiBbImdsb2JhbCJdLCAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBb
eyJuYW1lIjogImdsb2JhbF9pbmRleCIsICAgInR5cGUiOiAidmFydWludDMyIn1dLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJ3cml0ZSBh
IGdsb2JhbCB2YXJpYWJsZSIgfSwKICAgICAgICAgImNhbGwiOiAgICAgICAgICAgICAgICB7ICJj
YXRlZ29yeSI6ICJjYWxsIiwgICAgICAgInZhbHVlIjogIDE2LCAicmV0dXJuIjogWyJjYWxsIl0s
ICAgICAicGFyYW1ldGVyIjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjog
W3sibmFtZSI6ICJmdW5jdGlvbl9pbmRleCIsICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiY2FsbCBh
IGZ1bmN0aW9uIGJ5IGl0cyBpbmRleCIgfSwKLSAgICAgICAgImNhbGxfaW5kaXJlY3QiOiAgICAg
ICB7ICJjYXRlZ29yeSI6ICJjYWxsIiwgICAgICAgInZhbHVlIjogIDE3LCAicmV0dXJuIjogWyJj
YWxsIl0sICAgICAicGFyYW1ldGVyIjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAiaW1tZWRp
YXRlIjogW3sibmFtZSI6ICJ0eXBlX2luZGV4IiwgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAi
Y2FsbCBhIGZ1bmN0aW9uIGluZGlyZWN0IHdpdGggYW4gZXhwZWN0ZWQgc2lnbmF0dXJlIiB9LAor
ICAgICAgICAiY2FsbF9pbmRpcmVjdCI6ICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAg
ICAidmFsdWUiOiAgMTcsICJyZXR1cm4iOiBbImNhbGwiXSwgICAgICJwYXJhbWV0ZXIiOiBbImNh
bGwiXSwgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInR5cGVfaW5kZXgi
LCAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJyZXNlcnZlZCIsICAgICAidHlw
ZSI6ICJ2YXJ1aW50MSJ9XSwgImRlc2NyaXB0aW9uIjogImNhbGwgYSBmdW5jdGlvbiBpbmRpcmVj
dCB3aXRoIGFuIGV4cGVjdGVkIHNpZ25hdHVyZSIgfSwKICAgICAgICAgImkzMi5sb2FkOF9zIjog
ICAgICAgICB7ICJjYXRlZ29yeSI6ICJtZW1vcnkiLCAgICAgInZhbHVlIjogIDQ0LCAicmV0dXJu
IjogWyJpMzIiXSwgICAgICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAgICAgICAgICAgICAi
aW1tZWRpYXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQz
MiJ9LCB7Im5hbWUiOiAib2Zmc2V0IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRp
b24iOiAibG9hZCBmcm9tIG1lbW9yeSIgfSwKICAgICAgICAgImkzMi5sb2FkOF91IjogICAgICAg
ICB7ICJjYXRlZ29yeSI6ICJtZW1vcnkiLCAgICAgInZhbHVlIjogIDQ1LCAicmV0dXJuIjogWyJp
MzIiXSwgICAgICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAgICAgICAgICAgICAiaW1tZWRp
YXRlIjogW3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7
Im5hbWUiOiAib2Zmc2V0IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAi
bG9hZCBmcm9tIG1lbW9yeSIgfSwKICAgICAgICAgImkzMi5sb2FkMTZfcyI6ICAgICAgICB7ICJj
YXRlZ29yeSI6ICJtZW1vcnkiLCAgICAgInZhbHVlIjogIDQ2LCAicmV0dXJuIjogWyJpMzIiXSwg
ICAgICAicGFyYW1ldGVyIjogWyJhZGRyIl0sICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjog
W3sibmFtZSI6ICJmbGFncyIsICAgICAgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUi
OiAib2Zmc2V0IiwgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAibG9hZCBm
cm9tIG1lbW9yeSIgfSwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296783</attachid>
            <date>2016-12-09 22:38:39 -0800</date>
            <delta_ts>2016-12-09 22:38:39 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-165718-20161209223756.patch</filename>
            <type>text/plain</type>
            <size>45344</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA5NjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MThkZDU4NjdlMDliNzFkYjE3ZDM2ZTg0NDJhNGE3OGQ2NjAxNzU1Li5kNmJhMWFhMmFlOThmOWE1
NmY0MmQxZWRlZDEwNWE4MmM2NjBhY2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NSBAQAorMjAxNi0xMi0wOSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBXYXNtIHNob3VsZCBzdXBwb3J0IGNhbGxfaW5kaXJlY3QKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTcxOAorCisgICAg
ICAgIFJldmlld2VkIGJ5IEZpbGlwIFBpemxvLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBz
dXBwb3J0IGZvciBjYWxsX2luZGlyZWN0LiBUaGUgYmFzaWMgZnJhbWV3b3JrIGZvcgorICAgICAg
ICBhbiBpbmRpcmVjdCBjYWxsIGlzIHRoYXQgdGhlIG1vZHVsZSBob2xkcyBhIGJ1ZmZlciBjb250
YWluaW5nIGEKKyAgICAgICAgc3R1YiBmb3IgZWFjaCBmdW5jdGlvbiBpbiB0aGUgaW5kZXggc3Bh
Y2UuIFdoZW5ldmVyIGEgZnVuY3Rpb24KKyAgICAgICAgbmVlZHMgdG8gZG8gYW4gaW5kaXJlY3Qg
Y2FsbCBpdCBnZXRzIGEgaW5kZXggaW50byB0aGF0IHRhYmxlLiBJbgorICAgICAgICBvcmRlciB0
byBlbnN1cmUgY2FsbF9pbmRpcmVjdCBpcyBjYWxsaW5nIGEgdmFsaWQgZnVuY3Rpb24gdGhlCisg
ICAgICAgIGZ1bmN0aW9uSW5kZXhTcGFjZSBhbHNvIG5lZWRzIGEgcG9pbnRlciB0byBhIGNhbm9u
aWNhbGl6ZWQKKyAgICAgICAgc2lnbmF0dXJlLiBXaGVuIG1ha2luZyBhbiBpbmRpcmVjdCBjYWxs
LCB3ZSBmaXJzdCBjaGVjayB0aGUgaW5kZXgKKyAgICAgICAgaXMgaW4gcmFuZ2UsIHRoZW4gY2hl
Y2sgdGhlIHNpZ25hdHVyZSBtYXRjaGVzIHRoZSB2YWx1ZSB3ZSB3ZXJlIGdpdmVuLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggYWxzbyBkaWZmZXJlbnRpYXRlcyBiZXR3ZWVuIEZ1bmN0aW9uSW5kZXhT
cGFjZXMgYW5kCisgICAgICAgIEltbXV0YWJsZUZ1bmN0aW9uSW5kZXhTcGFjZXMuIFNpbmNlIHdl
IGRvbid0IGtub3cgdGhlIHNpemUgb2YgdGhlCisgICAgICAgIEZ1bmN0aW9uSW5kZXhTcGFjZSB3
aGVuIHdlIHN0YXJ0IHBhcnNpbmcgd2UgbmVlZCB0byBiZSBhYmxlIHRvCisgICAgICAgIHJlc2l6
ZSB0aGUgSW5kZXhTcGFjZS4gSG93ZXZlciwgb25jZSB3ZSBoYXZlIGZpbmlzaGVkIHBhcnNpbmcg
YWxsCisgICAgICAgIHRoZSBzZWN0aW9ucyB3ZSB3YW50IHRvIHByZXZlbnQgYW4gcmVsb2NhdGlv
biBvZiB0aGUgZnVuY3Rpb24KKyAgICAgICAgaW5kZXggc3BhY2UgcG9pbnRlci4KKworICAgICAg
ICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lS
R2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVy
YXRvcjo6YWRkQ2FsbCk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZENh
bGxJbmRpcmVjdCk6CisgICAgICAgIChKU0M6Oldhc206OmNyZWF0ZUpTVG9XYXNtV3JhcHBlcik6
CisgICAgICAgIChKU0M6Oldhc206OnBhcnNlQW5kQ29tcGlsZSk6CisgICAgICAgICogd2FzbS9X
YXNtQjNJUkdlbmVyYXRvci5oOgorICAgICAgICAqIHdhc20vV2FzbUNhbGxpbmdDb252ZW50aW9u
Lmg6CisgICAgICAgIChKU0M6Oldhc206OkNhbGxpbmdDb252ZW50aW9uOjpzZXR1cENhbGwpOgor
ICAgICAgICAqIHdhc20vV2FzbUZvcm1hdC5oOgorICAgICAgICAqIHdhc20vV2FzbUZ1bmN0aW9u
UGFyc2VyLmg6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2VyOjpzZXRFcnJvck1l
c3NhZ2UpOgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6RnVu
Y3Rpb25QYXJzZXIpOgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvblBhcnNlcjxDb250ZXh0
Pjo6cGFyc2VFeHByZXNzaW9uKToKKyAgICAgICAgKiB3YXNtL1dhc21QbGFuLmNwcDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6UGxhbjo6cnVuKToKKyAgICAgICAgKiB3YXNtL1dhc21QbGFuLmg6Cisg
ICAgICAgIChKU0M6Oldhc206OlBsYW46OnRha2VGdW5jdGlvbkluZGV4U3BhY2UpOgorICAgICAg
ICAqIHdhc20vV2FzbVZhbGlkYXRlLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6VmFsaWRhdGU6
OmFkZENhbGxJbmRpcmVjdCk6CisgICAgICAgIChKU0M6Oldhc206OnZhbGlkYXRlRnVuY3Rpb24p
OgorICAgICAgICAqIHdhc20vV2FzbVZhbGlkYXRlLmg6CisgICAgICAgICogd2FzbS9qcy9KU1dl
YkFzc2VtYmx5TW9kdWxlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseU1vZHVsZTo6
Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJseU1vZHVsZTo6SlNXZWJBc3NlbWJs
eU1vZHVsZSk6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmg6CisgICAg
ICAgIChKU0M6OkpTV2ViQXNzZW1ibHlNb2R1bGU6OnNpZ25hdHVyZUZvckZ1bmN0aW9uSW5kZXhT
cGFjZSk6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHlNb2R1bGU6Om9mZnNldE9mRnVuY3Rp
b25JbmRleFNwYWNlKToKKwogMjAxNi0xMi0wOSAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgV2ViQXNzZW1ibHkgSlMgQVBJOiBpbXBsZW1lbnQgc3RhcnQgZnVu
Y3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2Vu
ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9y
LmNwcAppbmRleCA4MjBlNTg4MTI2YTY3NjYyNTU0NzFmYzk2MDEzY2JhN2FiZTU5NGUyLi4xY2Zl
MjU0MTM2NmFmZDgzYzMxYTUyOGQ2NTRhOTRlNTdmNDJjNjFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCkBAIC00MCw2ICs0MCw4IEBA
CiAjaW5jbHVkZSAiQjNWYXJpYWJsZVZhbHVlLmgiCiAjaW5jbHVkZSAiQjNXYXNtQWRkcmVzc1Zh
bHVlLmgiCiAjaW5jbHVkZSAiQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oIgorI2luY2x1ZGUgIkpT
V2ViQXNzZW1ibHlJbnN0YW5jZS5oIgorI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNb2R1bGUuaCIK
ICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKICNpbmNsdWRlICJXYXNtQ2FsbGluZ0NvbnZl
bnRpb24uaCIKICNpbmNsdWRlICJXYXNtRnVuY3Rpb25QYXJzZXIuaCIKQEAgLTEzMCw3ICsxMzIs
NyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3RleHByIEV4cHJlc3Npb25UeXBlIGVtcHR5
RXhwcmVzc2lvbiA9IG51bGxwdHI7CiAKLSAgICBCM0lSR2VuZXJhdG9yKE1lbW9yeUluZm9ybWF0
aW9uJiwgUHJvY2VkdXJlJiwgV2FzbUludGVybmFsRnVuY3Rpb24qLCBWZWN0b3I8VW5saW5rZWRX
YXNtVG9XYXNtQ2FsbD4mKTsKKyAgICBCM0lSR2VuZXJhdG9yKGNvbnN0IE1lbW9yeUluZm9ybWF0
aW9uJiwgUHJvY2VkdXJlJiwgV2FzbUludGVybmFsRnVuY3Rpb24qLCBWZWN0b3I8VW5saW5rZWRX
YXNtVG9XYXNtQ2FsbD4mLCBjb25zdCBJbW11dGFibGVGdW5jdGlvbkluZGV4U3BhY2UmKTsKIAog
ICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIGFkZEFyZ3VtZW50cyhjb25zdCBWZWN0b3I8VHlw
ZT4mKTsKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRMb2NhbChUeXBlLCB1aW50MzJf
dCk7CkBAIC0xNjQsNyArMTY2LDkgQEAgcHVibGljOgogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVU
VVJOIGVuZEJsb2NrKENvbnRyb2xFbnRyeSYsIEV4cHJlc3Npb25MaXN0JiBleHByZXNzaW9uU3Rh
Y2spOwogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIGFkZEVuZFRvVW5yZWFjaGFibGUoQ29u
dHJvbEVudHJ5Jik7CiAKLSAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsKHVuc2ln
bmVkIGNhbGxlZUluZGV4LCBjb25zdCBTaWduYXR1cmUqLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+
JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKKyAgICAvLyBDYWxscworICAgIGJvb2wg
V0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGwodWludDMyX3QgY2FsbGVlSW5kZXgsIGNvbnN0IFNp
Z25hdHVyZSosIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIEV4cHJlc3Npb25UeXBlJiBy
ZXN1bHQpOworICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGxJbmRpcmVjdChjb25z
dCBTaWduYXR1cmUqLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlw
ZSYgcmVzdWx0KTsKIAogICAgIHZvaWQgZHVtcChjb25zdCBWZWN0b3I8Q29udHJvbEVudHJ5PiYg
Y29udHJvbFN0YWNrLCBjb25zdCBFeHByZXNzaW9uTGlzdCYgZXhwcmVzc2lvblN0YWNrKTsKIApA
QCAtMTc5LDYgKzE4Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1bmlmeVZhbHVlc1dpdGhCbG9j
ayhjb25zdCBFeHByZXNzaW9uTGlzdCYgcmVzdWx0U3RhY2ssIFJlc3VsdExpc3QmIHN0YWNrKTsK
ICAgICBWYWx1ZSogemVyb0ZvclR5cGUoVHlwZSk7CiAKKyAgICBjb25zdCBJbW11dGFibGVGdW5j
dGlvbkluZGV4U3BhY2UmIG1fZnVuY3Rpb25JbmRleFNwYWNlOwogICAgIFByb2NlZHVyZSYgbV9w
cm9jOwogICAgIEJhc2ljQmxvY2sqIG1fY3VycmVudEJsb2NrOwogICAgIFZlY3RvcjxWYXJpYWJs
ZSo+IG1fbG9jYWxzOwpAQCAtMTg2LDEwICsxOTEsMTIgQEAgcHJpdmF0ZToKICAgICBHUFJSZWcg
bV9tZW1vcnlCYXNlR1BSOwogICAgIEdQUlJlZyBtX21lbW9yeVNpemVHUFI7CiAgICAgVmFsdWUq
IG1femVyb1ZhbHVlc1tudW1UeXBlc107CisgICAgVmFsdWUqIG1fZnVuY3Rpb25JbmRleFNwYWNl
VmFsdWU7CiB9OwogCi1CM0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9yKE1lbW9yeUluZm9ybWF0
aW9uJiBtZW1vcnksIFByb2NlZHVyZSYgcHJvY2VkdXJlLCBXYXNtSW50ZXJuYWxGdW5jdGlvbiog
Y29tcGlsYXRpb24sIFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYgdW5saW5rZWRXYXNt
VG9XYXNtQ2FsbHMpCi0gICAgOiBtX3Byb2MocHJvY2VkdXJlKQorQjNJUkdlbmVyYXRvcjo6QjNJ
UkdlbmVyYXRvcihjb25zdCBNZW1vcnlJbmZvcm1hdGlvbiYgbWVtb3J5LCBQcm9jZWR1cmUmIHBy
b2NlZHVyZSwgV2FzbUludGVybmFsRnVuY3Rpb24qIGNvbXBpbGF0aW9uLCBWZWN0b3I8VW5saW5r
ZWRXYXNtVG9XYXNtQ2FsbD4mIHVubGlua2VkV2FzbVRvV2FzbUNhbGxzLCBjb25zdCBJbW11dGFi
bGVGdW5jdGlvbkluZGV4U3BhY2UmIGZ1bmN0aW9uSW5kZXhTcGFjZSkKKyAgICA6IG1fZnVuY3Rp
b25JbmRleFNwYWNlKGZ1bmN0aW9uSW5kZXhTcGFjZSkKKyAgICAsIG1fcHJvYyhwcm9jZWR1cmUp
CiAgICAgLCBtX3VubGlua2VkV2FzbVRvV2FzbUNhbGxzKHVubGlua2VkV2FzbVRvV2FzbUNhbGxz
KQogewogICAgIG1fY3VycmVudEJsb2NrID0gbV9wcm9jLmFkZEJsb2NrKCk7CkBAIC0yMjQsNiAr
MjMxLDggQEAgQjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcihNZW1vcnlJbmZvcm1hdGlvbiYg
bWVtb3J5LCBQcm9jZWR1cmUmIHByb2NlZHVyZSwgV2EKICAgICB9CiAKICAgICB3YXNtQ2FsbGlu
Z0NvbnZlbnRpb24oKS5zZXR1cEZyYW1lSW5Qcm9sb2d1ZShjb21waWxhdGlvbiwgbV9wcm9jLCBP
cmlnaW4oKSwgbV9jdXJyZW50QmxvY2spOworCisgICAgbV9mdW5jdGlvbkluZGV4U3BhY2VWYWx1
ZSA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4obV9wcm9jLCBPcmln
aW4oKSwgZnVuY3Rpb25JbmRleFNwYWNlLmJ1ZmZlci5nZXQoKSk7CiB9CiAKIFZhbHVlKiBCM0lS
R2VuZXJhdG9yOjp6ZXJvRm9yVHlwZShUeXBlIHR5cGUpCkBAIC01OTIsNyArNjAxLDcgQEAgYm9v
bCBCM0lSR2VuZXJhdG9yOjphZGRFbmRUb1VucmVhY2hhYmxlKENvbnRyb2xFbnRyeSYgZW50cnkp
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbCh1bnNp
Z25lZCBmdW5jdGlvbkluZGV4LCBjb25zdCBTaWduYXR1cmUqIHNpZ25hdHVyZSwgVmVjdG9yPEV4
cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCkKK2Jvb2wgQjNJUkdl
bmVyYXRvcjo6YWRkQ2FsbCh1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBjb25zdCBTaWduYXR1cmUq
IHNpZ25hdHVyZSwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgRXhwcmVzc2lvblR5cGUm
IHJlc3VsdCkKIHsKICAgICBBU1NFUlQoc2lnbmF0dXJlLT5hcmd1bWVudHMuc2l6ZSgpID09IGFy
Z3Muc2l6ZSgpKTsKIApAQCAtNjE4LDYgKzYyNyw1NyBAQCBib29sIEIzSVJHZW5lcmF0b3I6OmFk
ZENhbGwodW5zaWduZWQgZnVuY3Rpb25JbmRleCwgY29uc3QgU2lnbmF0dXJlKiBzaWduYXR1cmUs
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGly
ZWN0KGNvbnN0IFNpZ25hdHVyZSogc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBh
cmdzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KQoreworICAgIEV4cHJlc3Npb25UeXBlIGNhbGxl
ZUluZGV4ID0gYXJncy50YWtlTGFzdCgpOworICAgIEFTU0VSVChzaWduYXR1cmUtPmFyZ3VtZW50
cy5zaXplKCkgPT0gYXJncy5zaXplKCkpOworCisgICAgLy8gQ2hlY2sgdGhlIGluZGV4IHdlIGFy
ZSBsb29raW5nIGZvciBpcyB2YWxpZC4KKyAgICB7CisgICAgICAgIEV4cHJlc3Npb25UeXBlIG1h
eFZhbGlkSW5kZXggPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kSW50Q29uc3RhbnQobV9wcm9jLCBP
cmlnaW4oKSwgSW50MzIsIG1fZnVuY3Rpb25JbmRleFNwYWNlLnNpemUpOworICAgICAgICBDaGVj
a1ZhbHVlKiBjaGVjayA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4obV9w
cm9jLCBDaGVjaywgT3JpZ2luKCksCisgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5k
TmV3PFZhbHVlPihtX3Byb2MsIEVxdWFsLCBPcmlnaW4oKSwgbV96ZXJvVmFsdWVzW2xpbmVhcml6
ZVR5cGUoSTMyKV0sCisgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxW
YWx1ZT4obV9wcm9jLCBMZXNzVGhhbiwgT3JpZ2luKCksIGNhbGxlZUluZGV4LCBtYXhWYWxpZElu
ZGV4KSkpOworCisgICAgICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoW10gKENDYWxsSGVscGVycyYg
aml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgICAgICAgICAg
aml0LmJyZWFrcG9pbnQoKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgLy8gQ29tcHV0ZSB0
aGUgb2Zmc2V0IGluIHRoZSBmdW5jdGlvbiBpbmRleCBzcGFjZSB3ZSBhcmUgbG9va2luZyBmb3Iu
CisgICAgRXhwcmVzc2lvblR5cGUgb2Zmc2V0ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxW
YWx1ZT4obV9wcm9jLCBNdWwsIE9yaWdpbigpLAorICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBw
ZW5kTmV3PFZhbHVlPihtX3Byb2MsIFpFeHQzMiwgT3JpZ2luKCksIGNhbGxlZUluZGV4KSwKKyAg
ICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZEludENvbnN0YW50KG1fcHJvYywgT3JpZ2luKCks
IHBvaW50ZXJUeXBlKCksIHNpemVvZihDYWxsYWJsZUZ1bmN0aW9uKSkpOworICAgIEV4cHJlc3Np
b25UeXBlIGNhbGxhYmxlRnVuY3Rpb24gPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVl
PihtX3Byb2MsIEFkZCwgT3JpZ2luKCksIG1fZnVuY3Rpb25JbmRleFNwYWNlVmFsdWUsIG9mZnNl
dCk7CisKKyAgICAvLyBDaGVjayB0aGUgc2lnbmF0dXJlIG1hdGNoZXMgdGhlIHZhbHVlIHdlIGV4
cGVjdC4KKyAgICB7CisgICAgICAgIEV4cHJlc3Npb25UeXBlIGNhbGxlZVNpZ25hdHVyZSA9IG1f
Y3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KG1fcHJvYywgTG9hZCwgcG9pbnRl
clR5cGUoKSwgT3JpZ2luKCksIGNhbGxhYmxlRnVuY3Rpb24sIE9CSkVDVF9PRkZTRVRPRihDYWxs
YWJsZUZ1bmN0aW9uLCBzaWduYXR1cmUpKTsKKyAgICAgICAgRXhwcmVzc2lvblR5cGUgZXhwZWN0
ZWRTaWduYXR1cmUgPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KG1f
cHJvYywgT3JpZ2luKCksIHNpZ25hdHVyZSk7CisgICAgICAgIENoZWNrVmFsdWUqIGNoZWNrID0g
bV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihtX3Byb2MsIENoZWNrLCBPcmln
aW4oKSwKKyAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8VmFsdWU+KG1fcHJv
YywgTm90RXF1YWwsIE9yaWdpbigpLCBjYWxsZWVTaWduYXR1cmUsIGV4cGVjdGVkU2lnbmF0dXJl
KSk7CisKKyAgICAgICAgY2hlY2stPnNldEdlbmVyYXRvcihbXSAoQ0NhbGxIZWxwZXJzJiBqaXQs
IGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAgICAgICAgICBqaXQu
YnJlYWtwb2ludCgpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBFeHByZXNzaW9uVHlwZSBj
YWxsZWVDb2RlID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9j
LCBMb2FkLCBwb2ludGVyVHlwZSgpLCBPcmlnaW4oKSwgY2FsbGFibGVGdW5jdGlvbiwgT0JKRUNU
X09GRlNFVE9GKENhbGxhYmxlRnVuY3Rpb24sIGNvZGUpKTsKKworICAgIHJlc3VsdCA9IHdhc21D
YWxsaW5nQ29udmVudGlvbigpLnNldHVwQ2FsbChtX3Byb2MsIG1fY3VycmVudEJsb2NrLCBPcmln
aW4oKSwgYXJncywgdG9CM1R5cGUoc2lnbmF0dXJlLT5yZXR1cm5UeXBlKSwKKyAgICAgICAgWyZd
IChQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQpIHsKKyAgICAgICAgICAgIHBhdGNocG9pbnQt
PmVmZmVjdHMud3JpdGVzUGlubmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmVm
ZmVjdHMucmVhZHNQaW5uZWQgPSB0cnVlOworCisgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBl
bmQoY2FsbGVlQ29kZSwgVmFsdWVSZXA6OlNvbWVSZWdpc3Rlcik7CisKKyAgICAgICAgICAgIHBh
dGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6
U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgICAgICBqaXQu
Y2FsbChwYXJhbXNbMF0uZ3ByKCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAg
IHJldHVybiB0cnVlOworfQorCiB2b2lkIEIzSVJHZW5lcmF0b3I6OnVuaWZ5KFZhcmlhYmxlKiB2
YXJpYWJsZSwgRXhwcmVzc2lvblR5cGUgc291cmNlKQogewogICAgIG1fY3VycmVudEJsb2NrLT5h
cHBlbmROZXc8VmFyaWFibGVWYWx1ZT4obV9wcm9jLCBTZXQsIE9yaWdpbigpLCB2YXJpYWJsZSwg
c291cmNlKTsKQEAgLTY1Nyw3ICs3MTcsNyBAQCB2b2lkIEIzSVJHZW5lcmF0b3I6OmR1bXAoY29u
c3QgVmVjdG9yPENvbnRyb2xFbnRyeT4mIGNvbnRyb2xTdGFjaywgY29uc3QgRXhwcmVzcwogICAg
IGRhdGFMb2dMbigiXG4iKTsKIH0KIAotc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDb21waWxhdGlv
bj4gY3JlYXRlSlNUb1dhc21XcmFwcGVyKFZNJiB2bSwgY29uc3QgU2lnbmF0dXJlKiBzaWduYXR1
cmUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBtYWluRnVuY3Rpb24sIE1lbW9yeUluZm9ybWF0aW9u
JiBtZW1vcnkpCitzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENvbXBpbGF0aW9uPiBjcmVhdGVKU1Rv
V2FzbVdyYXBwZXIoVk0mIHZtLCBjb25zdCBTaWduYXR1cmUqIHNpZ25hdHVyZSwgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyIG1haW5GdW5jdGlvbiwgY29uc3QgTWVtb3J5SW5mb3JtYXRpb24mIG1lbW9y
eSkKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsKICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IHByb2Mu
YWRkQmxvY2soKTsKQEAgLTczNywxMyArNzk3LDEzIEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
Q29tcGlsYXRpb24+IGNyZWF0ZUpTVG9XYXNtV3JhcHBlcihWTSYgdm0sIGNvbnN0IFNpZ25hdHVy
CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29tcGlsYXRpb24+KHZtLCBwcm9jKTsKIH0K
IAotc3RkOjp1bmlxdWVfcHRyPFdhc21JbnRlcm5hbEZ1bmN0aW9uPiBwYXJzZUFuZENvbXBpbGUo
Vk0mIHZtLCBjb25zdCB1aW50OF90KiBmdW5jdGlvblN0YXJ0LCBzaXplX3QgZnVuY3Rpb25MZW5n
dGgsIE1lbW9yeUluZm9ybWF0aW9uJiBtZW1vcnksIGNvbnN0IFNpZ25hdHVyZSogc2lnbmF0dXJl
LCBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4mIHVubGlua2VkV2FzbVRvV2FzbUNhbGxz
LCBjb25zdCBGdW5jdGlvbkluZGV4U3BhY2UmIGZ1bmN0aW9uSW5kZXhTcGFjZSwgdW5zaWduZWQg
b3B0TGV2ZWwpCitzdGQ6OnVuaXF1ZV9wdHI8V2FzbUludGVybmFsRnVuY3Rpb24+IHBhcnNlQW5k
Q29tcGlsZShWTSYgdm0sIGNvbnN0IHVpbnQ4X3QqIGZ1bmN0aW9uU3RhcnQsIHNpemVfdCBmdW5j
dGlvbkxlbmd0aCwgY29uc3QgU2lnbmF0dXJlKiBzaWduYXR1cmUsIFZlY3RvcjxVbmxpbmtlZFdh
c21Ub1dhc21DYWxsPiYgdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMsIGNvbnN0IEltbXV0YWJsZUZ1
bmN0aW9uSW5kZXhTcGFjZSYgZnVuY3Rpb25JbmRleFNwYWNlLCBjb25zdCBNb2R1bGVJbmZvcm1h
dGlvbiYgaW5mbywgdW5zaWduZWQgb3B0TGV2ZWwpCiB7CiAgICAgYXV0byByZXN1bHQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdhc21JbnRlcm5hbEZ1bmN0aW9uPigpOwogCiAgICAgUHJvY2VkdXJlIHBy
b2NlZHVyZTsKLSAgICBCM0lSR2VuZXJhdG9yIGNvbnRleHQobWVtb3J5LCBwcm9jZWR1cmUsIHJl
c3VsdC5nZXQoKSwgdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMpOwotICAgIEZ1bmN0aW9uUGFyc2Vy
PEIzSVJHZW5lcmF0b3I+IHBhcnNlcihjb250ZXh0LCBmdW5jdGlvblN0YXJ0LCBmdW5jdGlvbkxl
bmd0aCwgc2lnbmF0dXJlLCBmdW5jdGlvbkluZGV4U3BhY2UpOworICAgIEIzSVJHZW5lcmF0b3Ig
Y29udGV4dChpbmZvLm1lbW9yeSwgcHJvY2VkdXJlLCByZXN1bHQuZ2V0KCksIHVubGlua2VkV2Fz
bVRvV2FzbUNhbGxzLCBmdW5jdGlvbkluZGV4U3BhY2UpOworICAgIEZ1bmN0aW9uUGFyc2VyPEIz
SVJHZW5lcmF0b3I+IHBhcnNlcihjb250ZXh0LCBmdW5jdGlvblN0YXJ0LCBmdW5jdGlvbkxlbmd0
aCwgc2lnbmF0dXJlLCBmdW5jdGlvbkluZGV4U3BhY2UsIGluZm8pOwogICAgIGlmICghcGFyc2Vy
LnBhcnNlKCkpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKQEAgLTc1
Nyw3ICs4MTcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2FzbUludGVybmFsRnVuY3Rpb24+IHBhcnNl
QW5kQ29tcGlsZShWTSYgdm0sIGNvbnN0IHVpbnQ4X3QqIGZ1bgogICAgICAgICBkYXRhTG9nKCJQ
b3N0IFNTQTogIiwgcHJvY2VkdXJlKTsKIAogICAgIHJlc3VsdC0+Y29kZSA9IHN0ZDo6bWFrZV91
bmlxdWU8Q29tcGlsYXRpb24+KHZtLCBwcm9jZWR1cmUsIG9wdExldmVsKTsKLSAgICByZXN1bHQt
PmpzVG9XYXNtRW50cnlQb2ludCA9IGNyZWF0ZUpTVG9XYXNtV3JhcHBlcih2bSwgc2lnbmF0dXJl
LCByZXN1bHQtPmNvZGUtPmNvZGUoKSwgbWVtb3J5KTsKKyAgICByZXN1bHQtPmpzVG9XYXNtRW50
cnlQb2ludCA9IGNyZWF0ZUpTVG9XYXNtV3JhcHBlcih2bSwgc2lnbmF0dXJlLCByZXN1bHQtPmNv
ZGUtPmNvZGUoKSwgaW5mby5tZW1vcnkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5oCmluZGV4IDA0MjAw
N2ViYjkzZDkzMzYwNDkwYWEwNWM3ZDU0M2U5YjZhNjQ2NTcuLmJhMTBhYTM1ZjY1OTVmOGIwMzhl
ODk4NGQ3MjIwODgwMGYzMjNkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21CM0lSR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUIzSVJHZW5lcmF0b3IuaApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIFdhc20gewogCiBjbGFzcyBNZW1vcnlJbmZvcm1hdGlvbjsKIAotc3RkOjp1bmlxdWVf
cHRyPFdhc21JbnRlcm5hbEZ1bmN0aW9uPiBwYXJzZUFuZENvbXBpbGUoVk0mLCBjb25zdCB1aW50
OF90Kiwgc2l6ZV90LCBNZW1vcnlJbmZvcm1hdGlvbiYsIGNvbnN0IFNpZ25hdHVyZSosIFZlY3Rv
cjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYsIGNvbnN0IEZ1bmN0aW9uSW5kZXhTcGFjZSYsIHVu
c2lnbmVkIG9wdExldmVsID0gMSk7CitzdGQ6OnVuaXF1ZV9wdHI8V2FzbUludGVybmFsRnVuY3Rp
b24+IHBhcnNlQW5kQ29tcGlsZShWTSYsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QsIGNvbnN0IFNp
Z25hdHVyZSosIFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYsIGNvbnN0IEltbXV0YWJs
ZUZ1bmN0aW9uSW5kZXhTcGFjZSYsIGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiwgdW5zaWduZWQg
b3B0TGV2ZWwgPSAxKTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxpbmdDb252ZW50aW9uLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uaAppbmRleCBk
N2ViZDgwY2NkYWI1Yjc3Y2E5ZmQyOWIwNGZkNTg0OWJlNzU3OTczLi40YzA2ZTVhM2FlZThkMmE3
NWJlYmFlN2RjZjNmNWQ0ZjE1YmMwNTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uaApAQCAtMTYzLDggKzE2Myw4IEBAIHB1Ymxp
YzoKICAgICAgICAgQjM6OlBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IGJsb2NrLT5hcHBl
bmROZXc8QjM6OlBhdGNocG9pbnRWYWx1ZT4ocHJvYywgcmV0dXJuVHlwZSwgb3JpZ2luKTsKICAg
ICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckVhcmx5KFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hS
ZWdpc3RlcnMoKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXJMYXRlKFJlZ2lzdGVyU2V0
Ojp2b2xhdGlsZVJlZ2lzdGVyc0ZvckpTQ2FsbCgpKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+YXBw
ZW5kVmVjdG9yKGNvbnN0cmFpbmVkQXJndW1lbnRzKTsKICAgICAgICAgcGF0Y2hwb2ludEZ1bmN0
b3IocGF0Y2hwb2ludCk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFZlY3Rvcihjb25zdHJh
aW5lZEFyZ3VtZW50cyk7CiAKICAgICAgICAgc3dpdGNoIChyZXR1cm5UeXBlKSB7CiAgICAgICAg
IGNhc2UgQjM6OlZvaWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKaW5k
ZXggZjA0MzUxOTgzMjc2OTIzMWQ2ZDE4MDI1MmFiMjU3YmQwYWJmNjcwYi4uNjYwNjQwN2M1YWI5
OWYzYThiN2RkZDViYmMzOTkxYjZkMzY5MmIxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21Gb3JtYXQuaApAQCAtMTU1LDYgKzE1NSwxMiBAQCBzdHJ1Y3QgQ2FsbGFibGVGdW5jdGlv
biB7CiB9OwogdHlwZWRlZiBWZWN0b3I8Q2FsbGFibGVGdW5jdGlvbj4gRnVuY3Rpb25JbmRleFNw
YWNlOwogCisKK3N0cnVjdCBJbW11dGFibGVGdW5jdGlvbkluZGV4U3BhY2UgeworICAgIE1hbGxv
Y1B0cjxDYWxsYWJsZUZ1bmN0aW9uPiBidWZmZXI7CisgICAgc2l6ZV90IHNpemU7Cit9OworCiB9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6V2FzbQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZ
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFy
c2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaApp
bmRleCBlYzE5MzI1NGE2NjgzNDJmZDYwNDRhNWQyZDJhMjIxNzdkNmFiNTVmLi4yMDcwMThiZjg4
MDVjNTBiMzYwYTc4OWRjNTFkMDBhZTdhN2RmMzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6
CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBDb250ZXh0OjpDb250cm9sVHlwZSBDb250cm9sVHlwZTsK
ICAgICB0eXBlZGVmIHR5cGVuYW1lIENvbnRleHQ6OkV4cHJlc3Npb25MaXN0IEV4cHJlc3Npb25M
aXN0OwogCi0gICAgRnVuY3Rpb25QYXJzZXIoQ29udGV4dCYsIGNvbnN0IHVpbnQ4X3QqIGZ1bmN0
aW9uU3RhcnQsIHNpemVfdCBmdW5jdGlvbkxlbmd0aCwgY29uc3QgU2lnbmF0dXJlKiwgY29uc3Qg
RnVuY3Rpb25JbmRleFNwYWNlJik7CisgICAgRnVuY3Rpb25QYXJzZXIoQ29udGV4dCYsIGNvbnN0
IHVpbnQ4X3QqIGZ1bmN0aW9uU3RhcnQsIHNpemVfdCBmdW5jdGlvbkxlbmd0aCwgY29uc3QgU2ln
bmF0dXJlKiwgY29uc3QgSW1tdXRhYmxlRnVuY3Rpb25JbmRleFNwYWNlJiwgY29uc3QgTW9kdWxl
SW5mb3JtYXRpb24mKTsKIAogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlKCk7CiAK
QEAgLTcxLDIyICs3MSwyOCBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPE9wVHlwZT4KICAgICBi
b29sIFdBUk5fVU5VU0VEX1JFVFVSTiBiaW5hcnlDYXNlKCk7CiAKLSAgICB2b2lkIHNldEVycm9y
TWVzc2FnZShTdHJpbmcmJiBtZXNzYWdlKSB7IG1fY29udGV4dC5zZXRFcnJvck1lc3NhZ2UoV1RG
TW92ZShtZXNzYWdlKSk7IH0KKyAgICBib29sIHNldEVycm9yTWVzc2FnZShTdHJpbmcmJiBtZXNz
YWdlKQorICAgIHsKKyAgICAgICAgbV9jb250ZXh0LnNldEVycm9yTWVzc2FnZShXVEZNb3ZlKG1l
c3NhZ2UpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAogICAgIENvbnRleHQmIG1f
Y29udGV4dDsKICAgICBFeHByZXNzaW9uTGlzdCBtX2V4cHJlc3Npb25TdGFjazsKICAgICBWZWN0
b3I8Q29udHJvbEVudHJ5PiBtX2NvbnRyb2xTdGFjazsKICAgICBjb25zdCBTaWduYXR1cmUqIG1f
c2lnbmF0dXJlOwotICAgIGNvbnN0IEZ1bmN0aW9uSW5kZXhTcGFjZSYgbV9mdW5jdGlvbkluZGV4
U3BhY2U7CisgICAgY29uc3QgSW1tdXRhYmxlRnVuY3Rpb25JbmRleFNwYWNlJiBtX2Z1bmN0aW9u
SW5kZXhTcGFjZTsKKyAgICBjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgbV9pbmZvOwogICAgIHVu
c2lnbmVkIG1fdW5yZWFjaGFibGVCbG9ja3MgeyAwIH07CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDb250ZXh0PgotRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OkZ1bmN0aW9uUGFyc2VyKENvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IHVpbnQ4X3QqIGZ1bmN0aW9uU3RhcnQsIHNpemVfdCBmdW5jdGlv
bkxlbmd0aCwgY29uc3QgU2lnbmF0dXJlKiBzaWduYXR1cmUsIGNvbnN0IEZ1bmN0aW9uSW5kZXhT
cGFjZSYgZnVuY3Rpb25JbmRleFNwYWNlKQorRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OkZ1bmN0
aW9uUGFyc2VyKENvbnRleHQmIGNvbnRleHQsIGNvbnN0IHVpbnQ4X3QqIGZ1bmN0aW9uU3RhcnQs
IHNpemVfdCBmdW5jdGlvbkxlbmd0aCwgY29uc3QgU2lnbmF0dXJlKiBzaWduYXR1cmUsIGNvbnN0
IEltbXV0YWJsZUZ1bmN0aW9uSW5kZXhTcGFjZSYgZnVuY3Rpb25JbmRleFNwYWNlLCBjb25zdCBN
b2R1bGVJbmZvcm1hdGlvbiYgaW5mbykKICAgICA6IFBhcnNlcihmdW5jdGlvblN0YXJ0LCBmdW5j
dGlvbkxlbmd0aCkKICAgICAsIG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9zaWduYXR1cmUo
c2lnbmF0dXJlKQogICAgICwgbV9mdW5jdGlvbkluZGV4U3BhY2UoZnVuY3Rpb25JbmRleFNwYWNl
KQorICAgICwgbV9pbmZvKGluZm8pCiB7CiAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgIGRhdGFM
b2dMbigiUGFyc2luZyBmdW5jdGlvbiBzdGFydGluZyBhdDogIiwgKHVpbnRwdHJfdClmdW5jdGlv
blN0YXJ0LCAiIG9mIGxlbmd0aDogIiwgZnVuY3Rpb25MZW5ndGgpOwpAQCAtMzUwLDEwICszNTYs
MTAgQEAgYm9vbCBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VFeHByZXNzaW9uKE9wVHlw
ZSBvcCkKICAgICAgICAgaWYgKCFwYXJzZVZhclVJbnQzMihmdW5jdGlvbkluZGV4KSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBpZiAoZnVuY3Rpb25JbmRleCA+PSBtX2Z1
bmN0aW9uSW5kZXhTcGFjZS5zaXplKCkpCisgICAgICAgIGlmIChmdW5jdGlvbkluZGV4ID49IG1f
ZnVuY3Rpb25JbmRleFNwYWNlLnNpemUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICAgICAgY29uc3QgU2lnbmF0dXJlKiBjYWxsZWVTaWduYXR1cmUgPSBtX2Z1bmN0aW9uSW5kZXhT
cGFjZVtmdW5jdGlvbkluZGV4XS5zaWduYXR1cmU7CisgICAgICAgIGNvbnN0IFNpZ25hdHVyZSog
Y2FsbGVlU2lnbmF0dXJlID0gbV9mdW5jdGlvbkluZGV4U3BhY2UuYnVmZmVyLmdldCgpW2Z1bmN0
aW9uSW5kZXhdLnNpZ25hdHVyZTsKIAogICAgICAgICBpZiAoY2FsbGVlU2lnbmF0dXJlLT5hcmd1
bWVudHMuc2l6ZSgpID4gbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMzc1LDYgKzM4MSw0MiBAQCBib29sIEZ1bmN0aW9uUGFyc2VyPENvbnRl
eHQ+OjpwYXJzZUV4cHJlc3Npb24oT3BUeXBlIG9wKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAKKyAgICBjYXNlIE9wVHlwZTo6Q2FsbEluZGlyZWN0OiB7CisgICAgICAgIHVpbnQzMl90
IHNpZ25hdHVyZUluZGV4OworICAgICAgICBpZiAoIXBhcnNlVmFyVUludDMyKHNpZ25hdHVyZUlu
ZGV4KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICB1aW50OF90IHJlc2Vy
dmVkOworICAgICAgICBpZiAoIXBhcnNlVmFyVUludDEocmVzZXJ2ZWQpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgICAgIGlmIChtX2luZm8uc2lnbmF0dXJlcy5zaXplKCkgPD0g
c2lnbmF0dXJlSW5kZXgpCisgICAgICAgICAgICByZXR1cm4gc2V0RXJyb3JNZXNzYWdlKCJUcmll
ZCB0byB1c2UgYSBzaWduYXR1cmUgb3V0c2lkZSB0aGUgcmFuZ2Ugb2YgdmFsaWQgc2lnbmF0dXJl
cyIpOworCisgICAgICAgIGNvbnN0IFNpZ25hdHVyZSogY2FsbGVlU2lnbmF0dXJlID0gJm1faW5m
by5zaWduYXR1cmVzW3NpZ25hdHVyZUluZGV4XTsKKyAgICAgICAgc2l6ZV90IGFyZ3VtZW50Q291
bnQgPSBjYWxsZWVTaWduYXR1cmUtPmFyZ3VtZW50cy5zaXplKCkgKyAxOyAvLyBBZGQgdGhlIGNh
bGxlZSdzIGluZGV4LgorICAgICAgICBpZiAoYXJndW1lbnRDb3VudCA+IG1fZXhwcmVzc2lvblN0
YWNrLnNpemUoKSkKKyAgICAgICAgICAgIHJldHVybiBzZXRFcnJvck1lc3NhZ2UoIk5vdCBlbm91
Z2ggdmFsdWVzIG9uIHRoZSBzdGFjayBmb3IgY2FsbF9pbmRpcmVjdCIpOworCisgICAgICAgIFZl
Y3RvcjxFeHByZXNzaW9uVHlwZT4gYXJnczsKKyAgICAgICAgaWYgKCFhcmdzLnRyeVJlc2VydmVD
YXBhY2l0eShhcmd1bWVudENvdW50KSkKKyAgICAgICAgICAgIHJldHVybiBzZXRFcnJvck1lc3Nh
Z2UoIk91dCBvZiBtZW1vcnkiKTsKKworICAgICAgICBzaXplX3QgZmlyc3RBcmd1bWVudEluZGV4
ID0gbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpIC0gYXJndW1lbnRDb3VudDsKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gZmlyc3RBcmd1bWVudEluZGV4OyBpIDwgbV9leHByZXNzaW9uU3RhY2su
c2l6ZSgpOyArK2kpCisgICAgICAgICAgICBhcmdzLnVuY2hlY2tlZEFwcGVuZChtX2V4cHJlc3Np
b25TdGFja1tpXSk7CisgICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLnNocmluayhmaXJzdEFyZ3Vt
ZW50SW5kZXgpOworCisgICAgICAgIEV4cHJlc3Npb25UeXBlIHJlc3VsdCA9IENvbnRleHQ6OmVt
cHR5RXhwcmVzc2lvbjsKKyAgICAgICAgaWYgKCFtX2NvbnRleHQuYWRkQ2FsbEluZGlyZWN0KGNh
bGxlZVNpZ25hdHVyZSwgYXJncywgcmVzdWx0KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgICAgICBpZiAocmVzdWx0ICE9IENvbnRleHQ6OmVtcHR5RXhwcmVzc2lvbikKKyAgICAg
ICAgICAgIG1fZXhwcmVzc2lvblN0YWNrLmFwcGVuZChyZXN1bHQpOworCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKwogICAgIGNhc2UgT3BUeXBlOjpCbG9jazogewogICAgICAgICBUeXBl
IGlubGluZVNpZ25hdHVyZTsKICAgICAgICAgaWYgKCFwYXJzZVJlc3VsdFR5cGUoaW5saW5lU2ln
bmF0dXJlKSkKQEAgLTUxNyw4ICs1NTksNyBAQCBib29sIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+
OjpwYXJzZUV4cHJlc3Npb24oT3BUeXBlIG9wKQogICAgIGNhc2UgT3BUeXBlOjpHcm93TWVtb3J5
OgogICAgIGNhc2UgT3BUeXBlOjpDdXJyZW50TWVtb3J5OgogICAgIGNhc2UgT3BUeXBlOjpHZXRH
bG9iYWw6Ci0gICAgY2FzZSBPcFR5cGU6OlNldEdsb2JhbDoKLSAgICBjYXNlIE9wVHlwZTo6Q2Fs
bEluZGlyZWN0OiB7CisgICAgY2FzZSBPcFR5cGU6OlNldEdsb2JhbDogewogICAgICAgICAvLyBG
SVhNRTogTm90IHlldCBpbXBsZW1lbnRlZC4KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmNwcAppbmRleCBkODlhMWIzM2MyOGZi
ZTE3MWMzNzYzODE4OWNmOTU1MGQxZTA0OWYwLi5kNmM2MDgzNmFiNmVjNzdlMjY3MTdmZjcyNjYx
NGRkMWU5Yjg3MWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
UGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBsYW4uY3BwCkBA
IC03Miw3ICs3Miw4IEBAIHZvaWQgUGxhbjo6cnVuKCkKICAgICAgICAgfQogICAgICAgICBtX21v
ZHVsZUluZm9ybWF0aW9uID0gV1RGTW92ZShtb2R1bGVQYXJzZXIubW9kdWxlSW5mb3JtYXRpb24o
KSk7CiAgICAgICAgIG1fZnVuY3Rpb25Mb2NhdGlvbkluQmluYXJ5ID0gV1RGTW92ZShtb2R1bGVQ
YXJzZXIuZnVuY3Rpb25Mb2NhdGlvbkluQmluYXJ5KCkpOwotICAgICAgICBtX2Z1bmN0aW9uSW5k
ZXhTcGFjZSA9IFdURk1vdmUobW9kdWxlUGFyc2VyLmZ1bmN0aW9uSW5kZXhTcGFjZSgpKTsKKyAg
ICAgICAgbV9mdW5jdGlvbkluZGV4U3BhY2Uuc2l6ZSA9IG1vZHVsZVBhcnNlci5mdW5jdGlvbklu
ZGV4U3BhY2UoKS5zaXplKCk7CisgICAgICAgIG1fZnVuY3Rpb25JbmRleFNwYWNlLmJ1ZmZlciA9
IG1vZHVsZVBhcnNlci5mdW5jdGlvbkluZGV4U3BhY2UoKS5yZWxlYXNlQnVmZmVyKCk7CiAgICAg
fQogICAgIGlmICh2ZXJib3NlKQogICAgICAgICBkYXRhTG9nTG4oIlBhcnNlZCBtb2R1bGUuIik7
CkBAIC0xMDMsNyArMTA0LDcgQEAgdm9pZCBQbGFuOjpydW4oKQogICAgICAgICAgICAgZGF0YUxv
Z0xuKCJQcm9jZXNzaW5nIGltcG9ydCBmdW5jdGlvbiBudW1iZXIgIiwgaW1wb3J0RnVuY3Rpb25J
bmRleCwgIjogIiwgaW1wb3J0LT5tb2R1bGUsICI6ICIsIGltcG9ydC0+ZmllbGQpOwogICAgICAg
ICBTaWduYXR1cmUqIHNpZ25hdHVyZSA9IG1fbW9kdWxlSW5mb3JtYXRpb24tPmltcG9ydEZ1bmN0
aW9ucy5hdChpbXBvcnQtPmtpbmRJbmRleCk7CiAgICAgICAgIG1fd2FzbVRvSlNTdHVicy51bmNo
ZWNrZWRBcHBlbmQoaW1wb3J0U3R1YkdlbmVyYXRvcihtX3ZtLCBtX2NhbGxMaW5rSW5mb3MsIHNp
Z25hdHVyZSwgaW1wb3J0RnVuY3Rpb25JbmRleCkpOwotICAgICAgICBtX2Z1bmN0aW9uSW5kZXhT
cGFjZVtpbXBvcnRGdW5jdGlvbkluZGV4XS5jb2RlID0gbV93YXNtVG9KU1N0dWJzW2ltcG9ydEZ1
bmN0aW9uSW5kZXhdLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOworICAgICAgICBtX2Z1bmN0
aW9uSW5kZXhTcGFjZS5idWZmZXIuZ2V0KClbaW1wb3J0RnVuY3Rpb25JbmRleF0uY29kZSA9IG1f
d2FzbVRvSlNTdHVic1tpbXBvcnRGdW5jdGlvbkluZGV4XS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJl
c3MoKTsKICAgICB9CiAKICAgICBmb3IgKHVuc2lnbmVkIGZ1bmN0aW9uSW5kZXggPSAwOyBmdW5j
dGlvbkluZGV4IDwgbV9mdW5jdGlvbkxvY2F0aW9uSW5CaW5hcnkuc2l6ZSgpOyArK2Z1bmN0aW9u
SW5kZXgpIHsKQEAgLTExNCw5ICsxMTUsOSBAQCB2b2lkIFBsYW46OnJ1bigpCiAgICAgICAgIEFT
U0VSVChmdW5jdGlvbkxlbmd0aCA8PSBtX3NvdXJjZUxlbmd0aCk7CiAgICAgICAgIFNpZ25hdHVy
ZSogc2lnbmF0dXJlID0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblNpZ25h
dHVyZXNbZnVuY3Rpb25JbmRleF07CiAgICAgICAgIHVuc2lnbmVkIGZ1bmN0aW9uSW5kZXhTcGFj
ZSA9IG1fd2FzbVRvSlNTdHVicy5zaXplKCkgKyBmdW5jdGlvbkluZGV4OwotICAgICAgICBBU1NF
UlQobV9mdW5jdGlvbkluZGV4U3BhY2VbZnVuY3Rpb25JbmRleFNwYWNlXS5zaWduYXR1cmUgPT0g
c2lnbmF0dXJlKTsKKyAgICAgICAgQVNTRVJUKG1fZnVuY3Rpb25JbmRleFNwYWNlLmJ1ZmZlci5n
ZXQoKVtmdW5jdGlvbkluZGV4U3BhY2VdLnNpZ25hdHVyZSA9PSBzaWduYXR1cmUpOwogCi0gICAg
ICAgIFN0cmluZyBlcnJvciA9IHZhbGlkYXRlRnVuY3Rpb24oZnVuY3Rpb25TdGFydCwgZnVuY3Rp
b25MZW5ndGgsIHNpZ25hdHVyZSwgbV9mdW5jdGlvbkluZGV4U3BhY2UsIG1fbW9kdWxlSW5mb3Jt
YXRpb24tPm1lbW9yeSk7CisgICAgICAgIFN0cmluZyBlcnJvciA9IHZhbGlkYXRlRnVuY3Rpb24o
ZnVuY3Rpb25TdGFydCwgZnVuY3Rpb25MZW5ndGgsIHNpZ25hdHVyZSwgbV9mdW5jdGlvbkluZGV4
U3BhY2UsICptX21vZHVsZUluZm9ybWF0aW9uKTsKICAgICAgICAgaWYgKCFlcnJvci5pc051bGwo
KSkgewogICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsKICAgICAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgZnVuY3Rpb25MZW5ndGg7ICsraSkKQEAgLTEyOCwxNCArMTI5LDE0
IEBAIHZvaWQgUGxhbjo6cnVuKCkKICAgICAgICAgfQogCiAgICAgICAgIHVubGlua2VkV2FzbVRv
V2FzbUNhbGxzLnVuY2hlY2tlZEFwcGVuZChWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4o
KSk7Ci0gICAgICAgIG1fd2FzbUludGVybmFsRnVuY3Rpb25zLnVuY2hlY2tlZEFwcGVuZChwYXJz
ZUFuZENvbXBpbGUoKm1fdm0sIGZ1bmN0aW9uU3RhcnQsIGZ1bmN0aW9uTGVuZ3RoLCBtX21vZHVs
ZUluZm9ybWF0aW9uLT5tZW1vcnksIHNpZ25hdHVyZSwgdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMu
YXQoZnVuY3Rpb25JbmRleCksIG1fZnVuY3Rpb25JbmRleFNwYWNlKSk7Ci0gICAgICAgIG1fZnVu
Y3Rpb25JbmRleFNwYWNlW2Z1bmN0aW9uSW5kZXhTcGFjZV0uY29kZSA9IG1fd2FzbUludGVybmFs
RnVuY3Rpb25zW2Z1bmN0aW9uSW5kZXhdLT5jb2RlLT5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3Mo
KTsKKyAgICAgICAgbV93YXNtSW50ZXJuYWxGdW5jdGlvbnMudW5jaGVja2VkQXBwZW5kKHBhcnNl
QW5kQ29tcGlsZSgqbV92bSwgZnVuY3Rpb25TdGFydCwgZnVuY3Rpb25MZW5ndGgsIHNpZ25hdHVy
ZSwgdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMuYXQoZnVuY3Rpb25JbmRleCksIG1fZnVuY3Rpb25J
bmRleFNwYWNlLCAqbV9tb2R1bGVJbmZvcm1hdGlvbikpOworICAgICAgICBtX2Z1bmN0aW9uSW5k
ZXhTcGFjZS5idWZmZXIuZ2V0KClbZnVuY3Rpb25JbmRleFNwYWNlXS5jb2RlID0gbV93YXNtSW50
ZXJuYWxGdW5jdGlvbnNbZnVuY3Rpb25JbmRleF0tPmNvZGUtPmNvZGUoKS5leGVjdXRhYmxlQWRk
cmVzcygpOwogICAgIH0KIAogICAgIC8vIFBhdGNoIHRoZSBjYWxsIHNpdGVzIGZvciBlYWNoIFdl
YkFzc2VtYmx5IGZ1bmN0aW9uLgogICAgIGZvciAoYXV0byYgdW5saW5rZWQgOiB1bmxpbmtlZFdh
c21Ub1dhc21DYWxscykgewogICAgICAgICBmb3IgKGF1dG8mIGNhbGwgOiB1bmxpbmtlZCkKLSAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChjYWxsLmNhbGxMb2NhdGlvbiwg
Q29kZUxvY2F0aW9uTGFiZWwobV9mdW5jdGlvbkluZGV4U3BhY2VbY2FsbC5mdW5jdGlvbkluZGV4
XS5jb2RlKSk7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoY2FsbC5j
YWxsTG9jYXRpb24sIENvZGVMb2NhdGlvbkxhYmVsKG1fZnVuY3Rpb25JbmRleFNwYWNlLmJ1ZmZl
ci5nZXQoKVtjYWxsLmZ1bmN0aW9uSW5kZXhdLmNvZGUpKTsKICAgICB9CiAKICAgICBtX2ZhaWxl
ZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBs
YW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QbGFuLmgKaW5kZXggOWIwYzFi
MmNiOWE0ZjlhYjIzYWFiMDllZWU2Mjc5YmYyZmZkOTcwMi4uM2NkYmI2NTFjN2EzZTAyYTQ2NDY0
YjA5MjgwM2JkYTY2NDg2Y2Q2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbVBsYW4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGxhbi5o
CkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFdURk1vdmUobV93YXNt
VG9KU1N0dWJzKTsKICAgICB9CiAKLSAgICBGdW5jdGlvbkluZGV4U3BhY2UmJiB0YWtlRnVuY3Rp
b25JbmRleFNwYWNlKCkKKyAgICBJbW11dGFibGVGdW5jdGlvbkluZGV4U3BhY2UmJiB0YWtlRnVu
Y3Rpb25JbmRleFNwYWNlKCkKICAgICB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFmYWlsZWQo
KSk7CiAgICAgICAgIHJldHVybiBXVEZNb3ZlKG1fZnVuY3Rpb25JbmRleFNwYWNlKTsKQEAgLTEw
Nyw3ICsxMDcsNyBAQCBwcml2YXRlOgogICAgIEJhZzxDYWxsTGlua0luZm8+IG1fY2FsbExpbmtJ
bmZvczsKICAgICBWZWN0b3I8V2FzbVRvSlNTdHViPiBtX3dhc21Ub0pTU3R1YnM7CiAgICAgVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxXYXNtSW50ZXJuYWxGdW5jdGlvbj4+IG1fd2FzbUludGVybmFs
RnVuY3Rpb25zOwotICAgIEZ1bmN0aW9uSW5kZXhTcGFjZSBtX2Z1bmN0aW9uSW5kZXhTcGFjZTsK
KyAgICBJbW11dGFibGVGdW5jdGlvbkluZGV4U3BhY2UgbV9mdW5jdGlvbkluZGV4U3BhY2U7CiAK
ICAgICBWTSogbV92bTsKICAgICBjb25zdCB1aW50OF90KiBtX3NvdXJjZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21WYWxpZGF0ZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtVmFsaWRhdGUuY3BwCmluZGV4IGEwMjQ4ODU4MjBkZDM3MzVl
YzM1NWU4NTBiM2Y0MWE5ZGY0OGM4YjYuLjIyZjk1YmJhMDIyNjM1ZGM0ZjMyZTg0ZGJkZGQ0NTJj
NmQ0NjNiZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21WYWxp
ZGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZhbGlkYXRlLmNw
cApAQCAtMTEwLDggKzExMCw5IEBAIHB1YmxpYzoKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVS
TiBlbmRCbG9jayhDb250cm9sRW50cnkmLCBFeHByZXNzaW9uTGlzdCYgZXhwcmVzc2lvblN0YWNr
KTsKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRFbmRUb1VucmVhY2hhYmxlKENvbnRy
b2xFbnRyeSYpOwogCi0KKyAgICAvLyBDYWxscwogICAgIGJvb2wgV0FSTl9VTlVTRURfUkVUVVJO
IGFkZENhbGwodW5zaWduZWQgY2FsbGVlSW5kZXgsIGNvbnN0IFNpZ25hdHVyZSosIGNvbnN0IFZl
Y3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOworICAg
IGJvb2wgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGxJbmRpcmVjdChjb25zdCBTaWduYXR1cmUq
LCBjb25zdCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBFeHByZXNzaW9uVHlwZSYgcmVz
dWx0KTsKIAogICAgIHZvaWQgZHVtcChjb25zdCBWZWN0b3I8Q29udHJvbEVudHJ5PiYgY29udHJv
bFN0YWNrLCBjb25zdCBFeHByZXNzaW9uTGlzdCYgZXhwcmVzc2lvblN0YWNrKTsKIApAQCAtMzQ3
LDYgKzM0OCwzNSBAQCBib29sIFZhbGlkYXRlOjphZGRDYWxsKHVuc2lnbmVkLCBjb25zdCBTaWdu
YXR1cmUqIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPEV4cHJlcwogICAgIHJldHVybiB0cnVlOwog
fQogCitib29sIFZhbGlkYXRlOjphZGRDYWxsSW5kaXJlY3QoY29uc3QgU2lnbmF0dXJlKiBzaWdu
YXR1cmUsIGNvbnN0IFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIEV4cHJlc3Npb25UeXBl
JiByZXN1bHQpCit7CisgICAgY29uc3QgYXV0byBhcmd1bWVudENvdW50ID0gc2lnbmF0dXJlLT5h
cmd1bWVudHMuc2l6ZSgpOworICAgIGlmIChhcmd1bWVudENvdW50ICE9IGFyZ3Muc2l6ZSgpIC0g
MSkgeworICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCJBcml0eSBtaXNtYXRjaCBpbiBjYWxsX2luZGlyZWN0LCBleHBlY3RlZDogIik7CisgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKHNpZ25hdHVyZS0+YXJndW1lbnRzLnNpemUoKSk7Cisg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIgYnV0IGdvdDogIik7CisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTnVtYmVyKGFyZ3Muc2l6ZSgpKTsKKyAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBidWlsZGVy
LnRvU3RyaW5nKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgYXJndW1lbnRDb3VudDsgKytpKSB7CisgICAgICAgIGlmIChhcmdz
W2ldICE9IHNpZ25hdHVyZS0+YXJndW1lbnRzW2ldKSB7CisgICAgICAgICAgICBtX2Vycm9yTWVz
c2FnZSA9IG1ha2VTdHJpbmcoIkV4cGVjdGVkIGFyZ3VtZW50IHR5cGU6ICIsIHRvU3RyaW5nKHNp
Z25hdHVyZS0+YXJndW1lbnRzW2ldKSwgIiBkb2VzIG5vdCBtYXRjaCBwYXNzZWQgYXJndW1lbnQg
dHlwZTogIiwgdG9TdHJpbmcoYXJnc1tpXSkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGFyZ3MubGFzdCgpICE9IEkzMikgeworICAgICAg
ICBtX2Vycm9yTWVzc2FnZSA9IG1ha2VTdHJpbmcoIkV4cGVjdGVkIGNhbGxfaW5kaXJlY3QgdGFy
Z2V0IGluZGV4IHRvIGhhdmUgdHlwZTogaTMyIGJ1dCBnb3QgdHlwZTogIiwgdG9TdHJpbmcoYXJn
cy5sYXN0KCkpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICByZXN1
bHQgPSBzaWduYXR1cmUtPnJldHVyblR5cGU7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wg
VmFsaWRhdGU6OnVuaWZ5KGNvbnN0IEV4cHJlc3Npb25MaXN0JiB2YWx1ZXMsIGNvbnN0IENvbnRy
b2xUeXBlJiBibG9jaykKIHsKICAgICBBU1NFUlQodmFsdWVzLnNpemUoKSA8PSAxKTsKQEAgLTM3
MSwxMCArNDAxLDExIEBAIHZvaWQgVmFsaWRhdGU6OmR1bXAoY29uc3QgVmVjdG9yPENvbnRyb2xF
bnRyeT4mLCBjb25zdCBFeHByZXNzaW9uTGlzdCYpCiAgICAgLy8gVGhpbmsgb2YgdGhpcyBhcyBw
ZW5hbmNlIGZvciB0aGUgc2luIG9mIGJhZCBlcnJvciBtZXNzYWdlcy4KIH0KIAotU3RyaW5nIHZh
bGlkYXRlRnVuY3Rpb24oY29uc3QgdWludDhfdCogc291cmNlLCBzaXplX3QgbGVuZ3RoLCBjb25z
dCBTaWduYXR1cmUqIHNpZ25hdHVyZSwgY29uc3QgRnVuY3Rpb25JbmRleFNwYWNlJiBmdW5jdGlv
bkluZGV4U3BhY2UsIGNvbnN0IE1lbW9yeUluZm9ybWF0aW9uJiBtZW1vcnkpCitTdHJpbmcgdmFs
aWRhdGVGdW5jdGlvbihjb25zdCB1aW50OF90KiBzb3VyY2UsIHNpemVfdCBsZW5ndGgsIGNvbnN0
IFNpZ25hdHVyZSogc2lnbmF0dXJlLCBjb25zdCBJbW11dGFibGVGdW5jdGlvbkluZGV4U3BhY2Um
IGZ1bmN0aW9uSW5kZXhTcGFjZSwgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8pCiB7Ci0g
ICAgVmFsaWRhdGUgY29udGV4dChzaWduYXR1cmUtPnJldHVyblR5cGUsIG1lbW9yeSk7Ci0gICAg
RnVuY3Rpb25QYXJzZXI8VmFsaWRhdGU+IHZhbGlkYXRvcihjb250ZXh0LCBzb3VyY2UsIGxlbmd0
aCwgc2lnbmF0dXJlLCBmdW5jdGlvbkluZGV4U3BhY2UpOworICAgIFZhbGlkYXRlIGNvbnRleHQo
c2lnbmF0dXJlLT5yZXR1cm5UeXBlLCBpbmZvLm1lbW9yeSk7CisgICAgRnVuY3Rpb25QYXJzZXI8
VmFsaWRhdGU+IHZhbGlkYXRvcihjb250ZXh0LCBzb3VyY2UsIGxlbmd0aCwgc2lnbmF0dXJlLCBm
dW5jdGlvbkluZGV4U3BhY2UsIGluZm8pOworCiAgICAgaWYgKCF2YWxpZGF0b3IucGFyc2UoKSkg
ewogICAgICAgICAvLyBGSVhNRTogYWRkIGJldHRlciBsb2NhdGlvbiBpbmZvcm1hdGlvbiBoZXJl
LiBzZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQyODgKICAg
ICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBuZXZlciBub3QgaGF2ZSBhbiBlcnJvciBtZXNzYWdl
IGlmIHdlIHJldHVybiBmYWxzZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21WYWxpZGF0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZhbGlk
YXRlLmgKaW5kZXggNDU0ZjlmNWYwMjNlYzAyZjVkYjY5MWUxYmRhYzgwN2IyZGZhYmFmMS4uODYx
ZmQ3Mjk4NjY2ZWZmMTZiZDhjN2M1ZDI3NWU2YWVmMjBiNGU5NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVZhbGlkYXRlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbVZhbGlkYXRlLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIAotU3RyaW5nIHZhbGlkYXRlRnVuY3Rpb24oY29uc3Qg
dWludDhfdCosIHNpemVfdCwgY29uc3QgU2lnbmF0dXJlKiwgY29uc3QgRnVuY3Rpb25JbmRleFNw
YWNlJiwgY29uc3QgTWVtb3J5SW5mb3JtYXRpb24mKTsKK1N0cmluZyB2YWxpZGF0ZUZ1bmN0aW9u
KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QsIGNvbnN0IFNpZ25hdHVyZSosIGNvbnN0IEltbXV0YWJs
ZUZ1bmN0aW9uSW5kZXhTcGFjZSYsIGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJik7CiAKIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpXYXNtCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNb2R1bGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvSlNXZWJBc3NlbWJseU1vZHVsZS5jcHAKaW5kZXggZGU3NzNiOGYwNWY3NTg2MzUy
NGRjOWZkNjNiYzU2MjllYmNjMjNmYy4uODNhMzk3MzQ4YjExMDczNmE2ODBhMDJlOGE5YmVlZWU4
OTU0NjdiZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJB
c3NlbWJseU1vZHVsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNX
ZWJBc3NlbWJseU1vZHVsZS5jcHAKQEAgLTM4LDkgKzM4LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
IGNvbnN0IENsYXNzSW5mbyBKU1dlYkFzc2VtYmx5TW9kdWxlOjpzX2luZm8gPSB7ICJXZWJBc3Nl
bWJseS5Nb2R1bGUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KEpTV2ViQXNzZW1ibHlNb2R1bGUpIH07CiAKLUpTV2ViQXNzZW1ibHlNb2R1bGUqIEpTV2ViQXNz
ZW1ibHlNb2R1bGU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzdGQ6OnVu
aXF1ZV9wdHI8V2FzbTo6TW9kdWxlSW5mb3JtYXRpb24+JiYgbW9kdWxlSW5mb3JtYXRpb24sIEJh
ZzxDYWxsTGlua0luZm8+JiYgY2FsbExpbmtJbmZvcywgVmVjdG9yPFdhc206Oldhc21Ub0pTU3R1
Yj4mJiB3YXNtVG9KU1N0dWJzLCBXYXNtOjpGdW5jdGlvbkluZGV4U3BhY2UmJiBmdW5jdGlvbklu
ZGV4U3BhY2UsIFN5bWJvbFRhYmxlKiBleHBvcnRTeW1ib2xUYWJsZSwgdW5zaWduZWQgY2FsbGVl
Q291bnQpCitKU1dlYkFzc2VtYmx5TW9kdWxlKiBKU1dlYkFzc2VtYmx5TW9kdWxlOjpjcmVhdGUo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc3RkOjp1bmlxdWVfcHRyPFdhc206Ok1vZHVs
ZUluZm9ybWF0aW9uPiYmIG1vZHVsZUluZm9ybWF0aW9uLCBCYWc8Q2FsbExpbmtJbmZvPiYmIGNh
bGxMaW5rSW5mb3MsIFZlY3RvcjxXYXNtOjpXYXNtVG9KU1N0dWI+JiYgd2FzbVRvSlNTdHVicywg
V2FzbTo6SW1tdXRhYmxlRnVuY3Rpb25JbmRleFNwYWNlJiYgZnVuY3Rpb25JbmRleFNwYWNlLCBT
eW1ib2xUYWJsZSogZXhwb3J0U3ltYm9sVGFibGUsIHVuc2lnbmVkIGNhbGxlZUNvdW50KQogewot
ICAgIGF1dG8qIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNXZWJBc3Nl
bWJseU1vZHVsZT4odm0uaGVhcCwgYWxsb2NhdGlvblNpemUoY2FsbGVlQ291bnQpKSkgSlNXZWJB
c3NlbWJseU1vZHVsZSh2bSwgc3RydWN0dXJlLCBzdGQ6OmZvcndhcmQ8c3RkOjp1bmlxdWVfcHRy
PFdhc206Ok1vZHVsZUluZm9ybWF0aW9uPj4obW9kdWxlSW5mb3JtYXRpb24pLCBzdGQ6OmZvcndh
cmQ8QmFnPENhbGxMaW5rSW5mbz4+KGNhbGxMaW5rSW5mb3MpLCBzdGQ6OmZvcndhcmQ8VmVjdG9y
PFdhc206Oldhc21Ub0pTU3R1Yj4+KHdhc21Ub0pTU3R1YnMpLCBzdGQ6OmZvcndhcmQ8V2FzbTo6
RnVuY3Rpb25JbmRleFNwYWNlPihmdW5jdGlvbkluZGV4U3BhY2UpLCBjYWxsZWVDb3VudCk7Cisg
ICAgYXV0byogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1dlYkFzc2Vt
Ymx5TW9kdWxlPih2bS5oZWFwLCBhbGxvY2F0aW9uU2l6ZShjYWxsZWVDb3VudCkpKSBKU1dlYkFz
c2VtYmx5TW9kdWxlKHZtLCBzdHJ1Y3R1cmUsIHN0ZDo6Zm9yd2FyZDxzdGQ6OnVuaXF1ZV9wdHI8
V2FzbTo6TW9kdWxlSW5mb3JtYXRpb24+Pihtb2R1bGVJbmZvcm1hdGlvbiksIHN0ZDo6Zm9yd2Fy
ZDxCYWc8Q2FsbExpbmtJbmZvPj4oY2FsbExpbmtJbmZvcyksIHN0ZDo6Zm9yd2FyZDxWZWN0b3I8
V2FzbTo6V2FzbVRvSlNTdHViPj4od2FzbVRvSlNTdHVicyksIHN0ZDo6Zm9yd2FyZDxXYXNtOjpJ
bW11dGFibGVGdW5jdGlvbkluZGV4U3BhY2U+KGZ1bmN0aW9uSW5kZXhTcGFjZSksIGNhbGxlZUNv
dW50KTsKICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0sIGV4cG9ydFN5bWJvbFRhYmxl
KTsKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CkBAIC01MCw3ICs1MCw3IEBAIFN0cnVjdHVyZSog
SlNXZWJBc3NlbWJseU1vZHVsZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iCiAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZv
KCkpOwogfQogCi1KU1dlYkFzc2VtYmx5TW9kdWxlOjpKU1dlYkFzc2VtYmx5TW9kdWxlKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHN0ZDo6dW5pcXVlX3B0cjxXYXNtOjpNb2R1bGVJbmZv
cm1hdGlvbj4mJiBtb2R1bGVJbmZvcm1hdGlvbiwgQmFnPENhbGxMaW5rSW5mbz4mJiBjYWxsTGlu
a0luZm9zLCBWZWN0b3I8V2FzbTo6V2FzbVRvSlNTdHViPiYmIHdhc21Ub0pTU3R1YnMsIFdhc206
OkZ1bmN0aW9uSW5kZXhTcGFjZSYmIGZ1bmN0aW9uSW5kZXhTcGFjZSwgdW5zaWduZWQgY2FsbGVl
Q291bnQpCitKU1dlYkFzc2VtYmx5TW9kdWxlOjpKU1dlYkFzc2VtYmx5TW9kdWxlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHN0ZDo6dW5pcXVlX3B0cjxXYXNtOjpNb2R1bGVJbmZvcm1h
dGlvbj4mJiBtb2R1bGVJbmZvcm1hdGlvbiwgQmFnPENhbGxMaW5rSW5mbz4mJiBjYWxsTGlua0lu
Zm9zLCBWZWN0b3I8V2FzbTo6V2FzbVRvSlNTdHViPiYmIHdhc21Ub0pTU3R1YnMsIFdhc206Oklt
bXV0YWJsZUZ1bmN0aW9uSW5kZXhTcGFjZSYmIGZ1bmN0aW9uSW5kZXhTcGFjZSwgdW5zaWduZWQg
Y2FsbGVlQ291bnQpCiAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX21vZHVsZUlu
Zm9ybWF0aW9uKFdURk1vdmUobW9kdWxlSW5mb3JtYXRpb24pKQogICAgICwgbV9jYWxsTGlua0lu
Zm9zKFdURk1vdmUoY2FsbExpbmtJbmZvcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TW9kdWxlLmgKaW5kZXggMDVkMmNmMDEwZWM4Y2RkNzI5
MThiY2EyMTc5ZGJmYWNhYzkwZTU1Yi4uN2JlNjA3YTFkYjQ2MmZhZTgwOWQ5MjFlNGExNWRlY2Jl
ZTVjMzcxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJB
c3NlbWJseU1vZHVsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2Vi
QXNzZW1ibHlNb2R1bGUuaApAQCAtNDIsMTQgKzQyLDE0IEBAIGNsYXNzIEpTV2ViQXNzZW1ibHlN
b2R1bGUgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogcHVibGljOgogICAgIHR5cGVk
ZWYgSlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKIAotICAgIHN0YXRpYyBKU1dlYkFzc2VtYmx5
TW9kdWxlKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBzdGQ6OnVuaXF1ZV9wdHI8V2FzbTo6TW9k
dWxlSW5mb3JtYXRpb24+JiYsIEJhZzxDYWxsTGlua0luZm8+JiYsIFZlY3RvcjxXYXNtOjpXYXNt
VG9KU1N0dWI+JiYsIFdhc206OkZ1bmN0aW9uSW5kZXhTcGFjZSYmLCBTeW1ib2xUYWJsZSosIHVu
c2lnbmVkKTsKKyAgICBzdGF0aWMgSlNXZWJBc3NlbWJseU1vZHVsZSogY3JlYXRlKFZNJiwgU3Ry
dWN0dXJlKiwgc3RkOjp1bmlxdWVfcHRyPFdhc206Ok1vZHVsZUluZm9ybWF0aW9uPiYmLCBCYWc8
Q2FsbExpbmtJbmZvPiYmLCBWZWN0b3I8V2FzbTo6V2FzbVRvSlNTdHViPiYmLCBXYXNtOjpJbW11
dGFibGVGdW5jdGlvbkluZGV4U3BhY2UmJiwgU3ltYm9sVGFibGUqLCB1bnNpZ25lZCk7CiAgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlKTsKIAogICAgIERFQ0xBUkVfSU5GTzsKIAogICAgIGNvbnN0IFdhc206Ok1vZHVsZUlu
Zm9ybWF0aW9uJiBtb2R1bGVJbmZvcm1hdGlvbigpIGNvbnN0IHsgcmV0dXJuICptX21vZHVsZUlu
Zm9ybWF0aW9uLmdldCgpOyB9CiAgICAgU3ltYm9sVGFibGUqIGV4cG9ydFN5bWJvbFRhYmxlKCkg
Y29uc3QgeyByZXR1cm4gbV9leHBvcnRTeW1ib2xUYWJsZS5nZXQoKTsgfQotICAgIFdhc206OlNp
Z25hdHVyZSogc2lnbmF0dXJlRm9yRnVuY3Rpb25JbmRleFNwYWNlKHVuc2lnbmVkIGZ1bmN0aW9u
SW5kZXhTcGFjZSkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvbkluZGV4U3BhY2UuYXQoZnVuY3Rp
b25JbmRleFNwYWNlKS5zaWduYXR1cmU7IH0KKyAgICBXYXNtOjpTaWduYXR1cmUqIHNpZ25hdHVy
ZUZvckZ1bmN0aW9uSW5kZXhTcGFjZSh1bnNpZ25lZCBmdW5jdGlvbkluZGV4U3BhY2UpIGNvbnN0
IHsgQVNTRVJUKGZ1bmN0aW9uSW5kZXhTcGFjZSA8IG1fZnVuY3Rpb25JbmRleFNwYWNlLnNpemUp
OyByZXR1cm4gbV9mdW5jdGlvbkluZGV4U3BhY2UuYnVmZmVyLmdldCgpW2Z1bmN0aW9uSW5kZXhT
cGFjZV0uc2lnbmF0dXJlOyB9CiAgICAgdW5zaWduZWQgaW1wb3J0Q291bnQoKSBjb25zdCB7IHJl
dHVybiBtX3dhc21Ub0pTU3R1YnMuc2l6ZSgpOyB9CiAKICAgICBKU1dlYkFzc2VtYmx5Q2FsbGVl
KiBjYWxsZWVGcm9tRnVuY3Rpb25JbmRleFNwYWNlKHVuc2lnbmVkIGZ1bmN0aW9uSW5kZXhTcGFj
ZSkKQEAgLTY1LDggKzY1LDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2Fz
dDxXcml0ZUJhcnJpZXI8SlNXZWJBc3NlbWJseUNhbGxlZT4qPihiaXR3aXNlX2Nhc3Q8Y2hhcio+
KHRoaXMpICsgb2Zmc2V0T2ZDYWxsZWVzKCkpOwogICAgIH0KIAorICAgIHN0YXRpYyBwdHJkaWZm
X3Qgb2Zmc2V0T2ZGdW5jdGlvbkluZGV4U3BhY2UoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0Yo
SlNXZWJBc3NlbWJseU1vZHVsZSwgbV9mdW5jdGlvbkluZGV4U3BhY2UpOyB9CisKIHByb3RlY3Rl
ZDoKLSAgICBKU1dlYkFzc2VtYmx5TW9kdWxlKFZNJiwgU3RydWN0dXJlKiwgc3RkOjp1bmlxdWVf
cHRyPFdhc206Ok1vZHVsZUluZm9ybWF0aW9uPiYmLCBCYWc8Q2FsbExpbmtJbmZvPiYmLCBWZWN0
b3I8V2FzbTo6V2FzbVRvSlNTdHViPiYmLCBXYXNtOjpGdW5jdGlvbkluZGV4U3BhY2UmJiwgdW5z
aWduZWQgY2FsbGVlQ291bnQpOworICAgIEpTV2ViQXNzZW1ibHlNb2R1bGUoVk0mLCBTdHJ1Y3R1
cmUqLCBzdGQ6OnVuaXF1ZV9wdHI8V2FzbTo6TW9kdWxlSW5mb3JtYXRpb24+JiYsIEJhZzxDYWxs
TGlua0luZm8+JiYsIFZlY3RvcjxXYXNtOjpXYXNtVG9KU1N0dWI+JiYsIFdhc206OkltbXV0YWJs
ZUZ1bmN0aW9uSW5kZXhTcGFjZSYmLCB1bnNpZ25lZCBjYWxsZWVDb3VudCk7CiAgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihWTSYsIFN5bWJvbFRhYmxlKik7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJv
eShKU0NlbGwqKTsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RW
aXNpdG9yJik7CkBAIC04Niw3ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgQmFnPENhbGxMaW5rSW5m
bz4gbV9jYWxsTGlua0luZm9zOwogICAgIFdyaXRlQmFycmllcjxTeW1ib2xUYWJsZT4gbV9leHBv
cnRTeW1ib2xUYWJsZTsKICAgICBWZWN0b3I8V2FzbTo6V2FzbVRvSlNTdHViPiBtX3dhc21Ub0pT
U3R1YnM7Ci0gICAgV2FzbTo6RnVuY3Rpb25JbmRleFNwYWNlIG1fZnVuY3Rpb25JbmRleFNwYWNl
OworICAgIGNvbnN0IFdhc206OkltbXV0YWJsZUZ1bmN0aW9uSW5kZXhTcGFjZSBtX2Z1bmN0aW9u
SW5kZXhTcGFjZTsKICAgICB1bnNpZ25lZCBtX2NhbGxlZUNvdW50OwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vd2FzbS5qc29uIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vd2FzbS5qc29uCmluZGV4IDRiOGZiMTlhODc1NmE2MTJjOGNlZWM3OTY0NjM2
YzM0ZTcxMGIyZjcuLmVjMGVmYzVkNTdmMzg3NmVmYTZjM2Q4NzFhMjgzMDZiZTcwMGEwZTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dhc20uanNvbgorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS93YXNtLmpzb24KQEAgLTY0LDcgKzY0LDcgQEAKICAgICAg
ICAgImdldF9nbG9iYWwiOiAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZh
bHVlIjogIDM1LCAicmV0dXJuIjogWyJnbG9iYWwiXSwgICAicGFyYW1ldGVyIjogW10sICAgICAg
ICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJnbG9iYWxfaW5kZXgiLCAg
ICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiZGVzY3JpcHRpb24iOiAicmVhZCBhIGdsb2JhbCB2YXJpYWJsZSIgfSwKICAgICAg
ICAgInNldF9nbG9iYWwiOiAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJzcGVjaWFsIiwgICAgInZh
bHVlIjogIDM2LCAicmV0dXJuIjogWyIiXSwgICAgICAgICAicGFyYW1ldGVyIjogWyJnbG9iYWwi
XSwgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJnbG9iYWxfaW5kZXgiLCAg
ICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiZGVzY3JpcHRpb24iOiAid3JpdGUgYSBnbG9iYWwgdmFyaWFibGUiIH0sCiAgICAg
ICAgICJjYWxsIjogICAgICAgICAgICAgICAgeyAiY2F0ZWdvcnkiOiAiY2FsbCIsICAgICAgICJ2
YWx1ZSI6ICAxNiwgInJldHVybiI6IFsiY2FsbCJdLCAgICAgInBhcmFtZXRlciI6IFsiY2FsbCJd
LCAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZnVuY3Rpb25faW5kZXgi
LCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImRlc2NyaXB0aW9uIjogImNhbGwgYSBmdW5jdGlvbiBieSBpdHMgaW5kZXgiIH0s
Ci0gICAgICAgICJjYWxsX2luZGlyZWN0IjogICAgICAgeyAiY2F0ZWdvcnkiOiAiY2FsbCIsICAg
ICAgICJ2YWx1ZSI6ICAxNywgInJldHVybiI6IFsiY2FsbCJdLCAgICAgInBhcmFtZXRlciI6IFsi
Y2FsbCJdLCAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAidHlwZV9pbmRl
eCIsICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogImNhbGwgYSBmdW5jdGlvbiBpbmRpcmVjdCB3
aXRoIGFuIGV4cGVjdGVkIHNpZ25hdHVyZSIgfSwKKyAgICAgICAgImNhbGxfaW5kaXJlY3QiOiAg
ICAgICB7ICJjYXRlZ29yeSI6ICJjYWxsIiwgICAgICAgInZhbHVlIjogIDE3LCAicmV0dXJuIjog
WyJjYWxsIl0sICAgICAicGFyYW1ldGVyIjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAiaW1t
ZWRpYXRlIjogW3sibmFtZSI6ICJ0eXBlX2luZGV4IiwgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9
LCB7Im5hbWUiOiAicmVzZXJ2ZWQiLCAgICAgInR5cGUiOiAidmFydWludDEifV0sICJkZXNjcmlw
dGlvbiI6ICJjYWxsIGEgZnVuY3Rpb24gaW5kaXJlY3Qgd2l0aCBhbiBleHBlY3RlZCBzaWduYXR1
cmUiIH0sCiAgICAgICAgICJpMzIubG9hZDhfcyI6ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAibWVt
b3J5IiwgICAgICJ2YWx1ZSI6ICA0NCwgInJldHVybiI6IFsiaTMyIl0sICAgICAgInBhcmFtZXRl
ciI6IFsiYWRkciJdLCAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxh
Z3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICJ0
eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9uIjogImxvYWQgZnJvbSBtZW1vcnkiIH0s
CiAgICAgICAgICJpMzIubG9hZDhfdSI6ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAibWVtb3J5Iiwg
ICAgICJ2YWx1ZSI6ICA0NSwgInJldHVybiI6IFsiaTMyIl0sICAgICAgInBhcmFtZXRlciI6IFsi
YWRkciJdLCAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAg
ICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICJ0eXBlIjog
InZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9uIjogImxvYWQgZnJvbSBtZW1vcnkiIH0sCiAgICAg
ICAgICJpMzIubG9hZDE2X3MiOiAgICAgICAgeyAiY2F0ZWdvcnkiOiAibWVtb3J5IiwgICAgICJ2
YWx1ZSI6ICA0NiwgInJldHVybiI6IFsiaTMyIl0sICAgICAgInBhcmFtZXRlciI6IFsiYWRkciJd
LCAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAg
ICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICJ0eXBlIjogInZhcnVp
bnQzMiJ9XSwgImRlc2NyaXB0aW9uIjogImxvYWQgZnJvbSBtZW1vcnkiIH0sCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQyNjZkM2VhZjFk
NWFhNTQwZDYyNmQ4ZmFjYTIzMzVmN2EzMzllMzguLjFhZGE3NmEyOGZmZTgwNjE3NWRlYmZjNzdi
ZDVmYzUyNDg2MDJlYmQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTYtMTItMDkgIEtlaXRoIE1pbGxlciAg
PGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAgICAgV2FzbSBzaG91bGQgc3VwcG9ydCBj
YWxsX2luZGlyZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjU3MTgKKworICAgICAgICBSZXZpZXdlZCBieSBGaWxpcCBQaXpsby4KKworICAgICAg
ICAqIHdhc20vQnVpbGRlci5qczoKKyAgICAgICAgKiB3YXNtL2Z1bmN0aW9uLXRlc3RzL2NhbGwt
aW5kaXJlY3QtcGFyYW1zLmpzOiBBZGRlZC4KKyAgICAgICAgKiB3YXNtL2Z1bmN0aW9uLXRlc3Rz
L2NhbGwtaW5kaXJlY3QuanM6IEFkZGVkLgorICAgICAgICAqIHdhc20vanMtYXBpL2NhbGwtaW5k
aXJlY3QuanM6IEFkZGVkLgorICAgICAgICAoY29uc3Qud2FzbU1vZHVsZVdoaWNoSW1wb3J0SlMp
OgorICAgICAgICAoTW9ub21vcnBoaWNJbXBvcnQpOgorICAgICAgICAoUG9seXBoaWMySW1wb3J0
KToKKyAgICAgICAgKFZpcnR1YWxJbXBvcnQpOgorICAgICAgICAqIHdhc20vd2FzbS5qc29uOgor
CiAyMDE2LTEyLTA5ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBXZWJBc3NlbWJseSBKUyBBUEk6IGltcGxlbWVudCBzdGFydCBmdW5jdGlvbgpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy93YXNtL0J1aWxkZXIuanMgYi9KU1Rlc3RzL3dhc20vQnVpbGRlci5qcwppbmRl
eCBhMWY4MGI3MGZhYTM4OWZlMDJlMDg3MzJjZTg2YThiZThiYjU4ZTk5Li4yNTkxMjE2NmM4M2Iy
ZDEzNTNjMTFiNDEzYmIzYjZjZTk3NDY5MTMwIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vQnVp
bGRlci5qcworKysgYi9KU1Rlc3RzL3dhc20vQnVpbGRlci5qcwpAQCAtMjM2LDYgKzIzNiw3IEBA
IGNvbnN0IF9jaGVja0ltbXMgPSAob3AsIGltbXMsIGV4cGVjdGVkSW1tcywgcmV0KSA9PiB7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAidGFyZ2V0X2NvdW50IjogYnJlYWs7IC8v
IGltcHJvdmUgY2hlY2tpbmcgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2MzQyMQogICAgICAgICBjYXNlICJ0YXJnZXRfdGFibGUiOiBicmVhazsgLy8gaW1wcm92ZSBj
aGVja2luZyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDIxCisg
ICAgICAgIGNhc2UgInJlc2VydmVkIjogYnJlYWs7IC8vIGltcHJvdmUgY2hlY2tpbmcgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzQyMQogICAgICAgICBkZWZhdWx0
OiB0aHJvdyBuZXcgRXJyb3IoYEltcGxlbWVudGF0aW9uIHByb2JsZW06IHVuaGFuZGxlZCBpbW1l
ZGlhdGUgIiR7ZXhwZWN0Lm5hbWV9IiBvbiAiJHtvcH0iYCk7CiAgICAgICAgIH0KICAgICB9CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvY2FsbC1pbmRpcmVjdC1wYXJh
bXMuanMgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvY2FsbC1pbmRpcmVjdC1wYXJhbXMu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDE0ODIxMWE4ZjI5ZDExY2IwYTYyNTBhMjBiMmRhYjg4ZTAxODc5Mwot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9mdW5jdGlvbi10ZXN0cy9jYWxsLWluZGly
ZWN0LXBhcmFtcy5qcwpAQCAtMCwwICsxLDI4IEBACitpbXBvcnQgQnVpbGRlciBmcm9tICcuLi9C
dWlsZGVyLmpzJworCitjb25zdCBiID0gbmV3IEJ1aWxkZXIoKTsKK2IuVHlwZSgpLkVuZCgpCisg
ICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAuQ29kZSgpCisKKyAgICAuRnVuY3Rpb24oeyBwYXJh
bXM6IFsiaTMyIl0sIHJldDogImkzMiIgfSkKKyAgICAuSTMyQ29uc3QoMSkKKyAgICAuRW5kKCkK
KworICAgIC5GdW5jdGlvbih7IHBhcmFtczogWyJpMzIiXSwgcmV0OiAiaTMyIiB9KQorICAgIC5H
ZXRMb2NhbCgwKQorICAgIC5FbmQoKQorCisgICAgLkZ1bmN0aW9uKHsgcGFyYW1zOiBbImkzMiIs
ICJpMzIiXSwgcmV0OiAiaTMyIiB9KQorICAgIC5HZXRMb2NhbCgxKQorICAgIC5HZXRMb2NhbCgw
KQorICAgIC5DYWxsSW5kaXJlY3QoMCwgMCkKKyAgICAuRW5kKCkKKworCitjb25zdCBiaW4gPSBi
LldlYkFzc2VtYmx5KCkKK2Jpbi50cmltKCk7Cit0ZXN0V2FzbU1vZHVsZUZ1bmN0aW9ucyhiaW4u
Z2V0KCksIDMsIFtdLCBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFtbeyB0eXBlOiAiaTMy
IiwgdmFsdWU6IDEgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAwIH0sIHsgdHlwZTogImkzMiIs
IHZhbHVlOiA0IH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbeyB0eXBlOiAiaTMyIiwg
dmFsdWU6IDQgfSwgW3sgdHlwZTogImkzMiIsIHZhbHVlOiAxIH0sIHsgdHlwZTogImkzMiIsIHZh
bHVlOiA0IH1dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIF0pOwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL2NhbGwtaW5kaXJlY3QuanMgYi9KU1Rlc3RzL3dhc20v
ZnVuY3Rpb24tdGVzdHMvY2FsbC1pbmRpcmVjdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNGI1ZmJlODE4NGM3
Y2JhOTI5NThlMDQ0MmJiM2E0ZGU3Yzk2ZDg5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93
YXNtL2Z1bmN0aW9uLXRlc3RzL2NhbGwtaW5kaXJlY3QuanMKQEAgLTAsMCArMSwyNyBAQAoraW1w
b3J0IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRlci5qcycKKworY29uc3QgYiA9IG5ldyBCdWlsZGVy
KCk7CitiLlR5cGUoKS5FbmQoKQorICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgLkNvZGUoKQor
CisgICAgLkZ1bmN0aW9uKHsgcGFyYW1zOiBbXSwgcmV0OiAiaTMyIiB9KQorICAgIC5JMzJDb25z
dCgxKQorICAgIC5FbmQoKQorCisgICAgLkZ1bmN0aW9uKHsgcGFyYW1zOiBbXSwgcmV0OiAiaTMy
IiB9KQorICAgIC5JMzJDb25zdCgyKQorICAgIC5FbmQoKQorCisgICAgLkZ1bmN0aW9uKHsgcGFy
YW1zOiBbImkzMiJdLCByZXQ6ICJpMzIiIH0pCisgICAgLkdldExvY2FsKDApCisgICAgLkNhbGxJ
bmRpcmVjdCgwLCAwKQorICAgIC5FbmQoKQorCisKK2NvbnN0IGJpbiA9IGIuV2ViQXNzZW1ibHko
KQorYmluLnRyaW0oKTsKK3Rlc3RXYXNtTW9kdWxlRnVuY3Rpb25zKGJpbi5nZXQoKSwgMywgW10s
IFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgW1t7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMSB9
LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDAgfV1dLAorICAgICAgICAgICAgICAgICAgICAgICAg
IFt7IHR5cGU6ICJpMzIiLCB2YWx1ZTogMSB9LCBbeyB0eXBlOiAiaTMyIiwgdmFsdWU6IDAgfV1d
LAorICAgICAgICAgICAgICAgICAgICAgICAgXSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20v
anMtYXBpL2NhbGwtaW5kaXJlY3QuanMgYi9KU1Rlc3RzL3dhc20vanMtYXBpL2NhbGwtaW5kaXJl
Y3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjgyN2VmOTViZGY5M2QzOGZkMjIwNWIwNDFhN2ZhODZmNzk2NzE1
NQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvY2FsbC1pbmRpcmVjdC5q
cwpAQCAtMCwwICsxLDg3IEBACitpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0Lmpz
JzsKK2ltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnOworCitjb25zdCB3YXNtTW9k
dWxlV2hpY2hJbXBvcnRKUyA9ICgpID0+IHsKKyAgICBjb25zdCBidWlsZGVyID0gKG5ldyBCdWls
ZGVyKCkpCisgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgLkltcG9ydCgpCisgICAgICAg
ICAgICAuRnVuY3Rpb24oImltcCIsICJmdW5jIiwgeyBwYXJhbXM6IFsiaTMyIl0gfSkKKyAgICAg
ICAgLkVuZCgpCisgICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAgIC5FeHBvcnQoKQor
ICAgICAgICAgICAgLkZ1bmN0aW9uKCJjaGFuZ2VDb3VudGVyIikKKyAgICAgICAgLkVuZCgpCisg
ICAgICAgIC5Db2RlKCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigiY2hhbmdlQ291bnRlciIsIHsg
cGFyYW1zOiBbImkzMiIsICJpMzIiXSB9KQorICAgICAgICAgICAgICAgIC5JMzJDb25zdCg0MikK
KyAgICAgICAgICAgICAgICAuR2V0TG9jYWwoMCkKKyAgICAgICAgICAgICAgICAuSTMyQWRkKCkK
KyAgICAgICAgICAgICAgICAuR2V0TG9jYWwoMSkKKyAgICAgICAgICAgICAgICAuQ2FsbEluZGly
ZWN0KDAsIDApIC8vIENhbGxzIGZ1bmMocGFyYW1bMF0gKyA0MikuCisgICAgICAgICAgICAuRW5k
KCkKKyAgICAgICAgLkVuZCgpOworICAgIGNvbnN0IGJpbiA9IGJ1aWxkZXIuV2ViQXNzZW1ibHko
KS5nZXQoKTsKKyAgICBjb25zdCBtb2R1bGUgPSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJpbik7
CisgICAgcmV0dXJuIG1vZHVsZTsKK307CisKKworKGZ1bmN0aW9uIE1vbm9tb3JwaGljSW1wb3J0
KCkgeworICAgIGxldCBjb3VudGVyID0gMDsKKyAgICBjb25zdCBjb3VudGVyU2V0dGVyID0gdiA9
PiBjb3VudGVyID0gdjsKKyAgICBjb25zdCBtb2R1bGUgPSB3YXNtTW9kdWxlV2hpY2hJbXBvcnRK
UygpOworICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVs
ZSwgeyBpbXA6IHsgZnVuYzogY291bnRlclNldHRlciB9IH0pOworICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgNDA5NjsgKytpKSB7CisgICAgICAgIC8vIEludm9rZSB0aGlzIGEgYnVuY2ggb2YgdGlt
ZXMgdG8gbWFrZSBzdXJlIHRoZSBJQyBpbiB0aGUgd2FzbSAtPiBKUyBzdHViIHdvcmtzIGNvcnJl
Y3RseS4KKyAgICAgICAgaW5zdGFuY2UuZXhwb3J0cy5jaGFuZ2VDb3VudGVyKGksIDApOworICAg
ICAgICBhc3NlcnQuZXEoY291bnRlciwgaSArIDQyKTsKKyAgICB9Cit9KSgpOworCisoZnVuY3Rp
b24gUG9seXBoaWMySW1wb3J0KCkgeworICAgIGxldCBjb3VudGVyQSA9IDA7CisgICAgbGV0IGNv
dW50ZXJCID0gdW5kZWZpbmVkOworICAgIGNvbnN0IGNvdW50ZXJBU2V0dGVyID0gdiA9PiBjb3Vu
dGVyQSA9IHY7CisgICAgY29uc3QgY291bnRlckJTZXR0ZXIgPSB2ID0+IGNvdW50ZXJCID0geyB2
YWx1ZUI6IHYgfTsKKyAgICBjb25zdCBtb2R1bGUgPSB3YXNtTW9kdWxlV2hpY2hJbXBvcnRKUygp
OworICAgIGNvbnN0IGluc3RhbmNlQSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUs
IHsgaW1wOiB7IGZ1bmM6IGNvdW50ZXJBU2V0dGVyIH0gfSk7CisgICAgY29uc3QgaW5zdGFuY2VC
ID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBpbXA6IHsgZnVuYzogY291bnRl
ckJTZXR0ZXIgfSB9KTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDIwNDg7ICsraSkgeworICAg
ICAgICBpbnN0YW5jZUEuZXhwb3J0cy5jaGFuZ2VDb3VudGVyKGksIDApOworICAgICAgICBhc3Nl
cnQuaXNBKGNvdW50ZXJBLCAibnVtYmVyIik7CisgICAgICAgIGFzc2VydC5lcShjb3VudGVyQSwg
aSArIDQyKTsKKyAgICAgICAgaW5zdGFuY2VCLmV4cG9ydHMuY2hhbmdlQ291bnRlcihpLCAwKTsK
KyAgICAgICAgYXNzZXJ0LmlzQShjb3VudGVyQiwgIm9iamVjdCIpOworICAgICAgICBhc3NlcnQu
ZXEoY291bnRlckIudmFsdWVCLCBpICsgNDIpOworICAgIH0KK30pKCk7CisKKyhmdW5jdGlvbiBW
aXJ0dWFsSW1wb3J0KCkgeworICAgIGNvbnN0IG51bSA9IDEwOyAvLyBJdCdzIGRlZmluaXRlbHkg
Z29pbmcgdmlydHVhbCBhdCAxMCEKKyAgICBsZXQgY291bnRlcnMgPSBbMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMF07CisgICAgY29uc3QgY291bnRlclNldHRlcnMgPSBbCisgICAgICAgIHYg
PT4gY291bnRlcnNbMF0gPSB2LAorICAgICAgICB2ID0+IGNvdW50ZXJzWzFdID0gdiArIDEsCisg
ICAgICAgIHYgPT4gY291bnRlcnNbMl0gPSB2ICsgMiwKKyAgICAgICAgdiA9PiBjb3VudGVyc1sz
XSA9IHYgKyAzLAorICAgICAgICB2ID0+IGNvdW50ZXJzWzRdID0gdiArIDQsCisgICAgICAgIHYg
PT4gY291bnRlcnNbNV0gPSB2ICsgNSwKKyAgICAgICAgdiA9PiBjb3VudGVyc1s2XSA9IHYgKyA2
LAorICAgICAgICB2ID0+IGNvdW50ZXJzWzddID0gdiArIDcsCisgICAgICAgIHYgPT4gY291bnRl
cnNbOF0gPSB2ICsgOCwKKyAgICAgICAgdiA9PiBjb3VudGVyc1s5XSA9IHYgKyA5LAorICAgIF07
CisgICAgYXNzZXJ0LmVxKGNvdW50ZXJzLmxlbmd0aCwgbnVtKTsKKyAgICBhc3NlcnQuZXEoY291
bnRlclNldHRlcnMubGVuZ3RoLCBudW0pOworICAgIGNvbnN0IG1vZHVsZSA9IHdhc21Nb2R1bGVX
aGljaEltcG9ydEpTKCk7CisgICAgbGV0IGluc3RhbmNlcyA9IFtdOworICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgbnVtOyArK2kpCisgICAgICAgIGluc3RhbmNlc1tpXSA9IG5ldyBXZWJBc3NlbWJs
eS5JbnN0YW5jZShtb2R1bGUsIHsgaW1wOiB7IGZ1bmM6IGNvdW50ZXJTZXR0ZXJzW2ldIH0gfSk7
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAyMDQ4OyArK2kpIHsKKyAgICAgICAgZm9yIChsZXQg
aiA9IDA7IGogPCBudW07ICsraikgeworICAgICAgICAgICAgaW5zdGFuY2VzW2pdLmV4cG9ydHMu
Y2hhbmdlQ291bnRlcihpLCAwKTsKKyAgICAgICAgICAgIGFzc2VydC5pc0EoY291bnRlcnNbal0s
ICJudW1iZXIiKTsKKyAgICAgICAgICAgIGFzc2VydC5lcShjb3VudGVyc1tqXSwgaSArIDQyICsg
aik7CisgICAgICAgIH0KKyAgICB9Cit9KSgpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3dh
c20uanNvbiBiL0pTVGVzdHMvd2FzbS93YXNtLmpzb24KaW5kZXggNGI4ZmIxOWE4NzU2YTYxMmM4
Y2VlYzc5NjQ2MzZjMzRlNzEwYjJmNy4uZWMwZWZjNWQ1N2YzODc2ZWZhNmMzZDg3MWEyODMwNmJl
NzAwYTBlNCAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL3dhc20uanNvbgorKysgYi9KU1Rlc3Rz
L3dhc20vd2FzbS5qc29uCkBAIC02NCw3ICs2NCw3IEBACiAgICAgICAgICJnZXRfZ2xvYmFsIjog
ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6ICAzNSwgInJldHVy
biI6IFsiZ2xvYmFsIl0sICAgInBhcmFtZXRlciI6IFtdLCAgICAgICAgICAgICAgICAgICAgICAg
ImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZ2xvYmFsX2luZGV4IiwgICAidHlwZSI6ICJ2YXJ1aW50
MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0
aW9uIjogInJlYWQgYSBnbG9iYWwgdmFyaWFibGUiIH0sCiAgICAgICAgICJzZXRfZ2xvYmFsIjog
ICAgICAgICAgeyAiY2F0ZWdvcnkiOiAic3BlY2lhbCIsICAgICJ2YWx1ZSI6ICAzNiwgInJldHVy
biI6IFsiIl0sICAgICAgICAgInBhcmFtZXRlciI6IFsiZ2xvYmFsIl0sICAgICAgICAgICAgICAg
ImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZ2xvYmFsX2luZGV4IiwgICAidHlwZSI6ICJ2YXJ1aW50
MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0
aW9uIjogIndyaXRlIGEgZ2xvYmFsIHZhcmlhYmxlIiB9LAogICAgICAgICAiY2FsbCI6ICAgICAg
ICAgICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFsdWUiOiAgMTYsICJyZXR1
cm4iOiBbImNhbGwiXSwgICAgICJwYXJhbWV0ZXIiOiBbImNhbGwiXSwgICAgICAgICAgICAgICAg
ICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZ1bmN0aW9uX2luZGV4IiwgInR5cGUiOiAidmFydWlu
dDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlw
dGlvbiI6ICJjYWxsIGEgZnVuY3Rpb24gYnkgaXRzIGluZGV4IiB9LAotICAgICAgICAiY2FsbF9p
bmRpcmVjdCI6ICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFsdWUiOiAgMTcs
ICJyZXR1cm4iOiBbImNhbGwiXSwgICAgICJwYXJhbWV0ZXIiOiBbImNhbGwiXSwgICAgICAgICAg
ICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInR5cGVfaW5kZXgiLCAgICAgInR5cGUiOiAi
dmFydWludDMyIn1dLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJk
ZXNjcmlwdGlvbiI6ICJjYWxsIGEgZnVuY3Rpb24gaW5kaXJlY3Qgd2l0aCBhbiBleHBlY3RlZCBz
aWduYXR1cmUiIH0sCisgICAgICAgICJjYWxsX2luZGlyZWN0IjogICAgICAgeyAiY2F0ZWdvcnki
OiAiY2FsbCIsICAgICAgICJ2YWx1ZSI6ICAxNywgInJldHVybiI6IFsiY2FsbCJdLCAgICAgInBh
cmFtZXRlciI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUi
OiAidHlwZV9pbmRleCIsICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogInJlc2Vy
dmVkIiwgICAgICJ0eXBlIjogInZhcnVpbnQxIn1dLCAiZGVzY3JpcHRpb24iOiAiY2FsbCBhIGZ1
bmN0aW9uIGluZGlyZWN0IHdpdGggYW4gZXhwZWN0ZWQgc2lnbmF0dXJlIiB9LAogICAgICAgICAi
aTMyLmxvYWQ4X3MiOiAgICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUi
OiAgNDQsICJyZXR1cm4iOiBbImkzMiJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAg
ICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5
cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIi
fV0sICJkZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAogICAgICAgICAiaTMyLmxv
YWQ4X3UiOiAgICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNDUs
ICJyZXR1cm4iOiBbImkzMiJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAg
ICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAi
dmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJk
ZXNjcmlwdGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAogICAgICAgICAiaTMyLmxvYWQxNl9z
IjogICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNDYsICJyZXR1
cm4iOiBbImkzMiJdLCAgICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAgICAgICAg
ICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWlu
dDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICJkZXNjcmlw
dGlvbiI6ICJsb2FkIGZyb20gbWVtb3J5IiB9LAo=
</data>
<flag name="commit-queue"
          id="319180"
          type_id="3"
          status="+"
          setter="keith_miller"
    />
          </attachment>
      

    </bug>

</bugzilla>