<?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>175990</bug_id>
          
          <creation_ts>2017-08-25 12:03:44 -0700</creation_ts>
          <short_desc>Demarcate code added due to lack of NSDMI for aggregates</short_desc>
          <delta_ts>2017-08-25 16:43:00 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Local Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>aestes</cc>
    
    <cc>buildbot</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>pvollan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1342471</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-08-25 12:03:44 -0700</bug_when>
    <thetext>I propose that we demarcate constructors added to structs with non-static data member initializer (NSDMI) only to appease Visual Studio 2015 so as to make it easier to remove such code from the codebase once we transition to Visual Studio 2017. Visual Studio 2017 (*) and the version of clang and gcc we use on the EWS bots/Buildbots implement support for C++14 NSDMI for aggregates, &lt;http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3605.html&gt;.

For example, we have to implement JSC::Wasm::CallableFunction as follows because of the lack of NSDMI for aggregates in Visual Studio 2015:

[[
struct CallableFunction {
    CallableFunction() = default;

    CallableFunction(SignatureIndex signatureIndex, WasmEntrypointLoadLocation code = nullptr)
        : signatureIndex(signatureIndex)
        , code(code)
    {
    }

    static ptrdiff_t offsetOfWasmEntrypointLoadLocation() { return OBJECT_OFFSETOF(CallableFunction, code); }

    // FIXME pack the SignatureIndex and the code pointer into one 64-bit value. https://bugs.webkit.org/show_bug.cgi?id=165511
    SignatureIndex signatureIndex { Signature::invalidIndex };
    WasmEntrypointLoadLocation code { nullptr };
};
]]
&lt;http://trac.webkit.org/browser/trunk/Source/JavaScriptCore/wasm/WasmFormat.h?rev=221190#L290&gt;

But in Visual Studio 2017 and all other compilers that support NSDMI for aggregates, including clang, this code can be simplified to:

struct CallableFunction {
    static ptrdiff_t offsetOfWasmEntrypointLoadLocation() { return OBJECT_OFFSETOF(CallableFunction, code); }

    // FIXME pack the SignatureIndex and the code pointer into one 64-bit value. https://bugs.webkit.org/show_bug.cgi?id=165511
    SignatureIndex signatureIndex { Signature::invalidIndex };
    WasmEntrypointLoadLocation code { nullptr };
};

This pattern of adding constructors to appease Visual Studio 2015 occurs in other places in the codebase. We should demarcate them to make it easier to clean up such code.

(*) &lt;https://docs.microsoft.com/en-us/cpp/cpp-conformance-improvements-2017&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342477</commentid>
    <comment_count>1</comment_count>
      <attachid>319092</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-08-25 12:15:38 -0700</bug_when>
    <thetext>Created attachment 319092
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342478</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-25 12:16:46 -0700</bug_when>
    <thetext>Attachment 319092 did not pass style-queue:


ERROR: Source/JavaScriptCore/wasm/js/WebAssemblyFunction.cpp:194:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342479</commentid>
    <comment_count>3</comment_count>
      <attachid>319093</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-08-25 12:17:43 -0700</bug_when>
    <thetext>Created attachment 319093
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342482</commentid>
    <comment_count>4</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-25 12:19:48 -0700</bug_when>
    <thetext>Attachment 319093 did not pass style-queue:


ERROR: Source/JavaScriptCore/wasm/js/WebAssemblyFunction.cpp:194:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342576</commentid>
    <comment_count>5</comment_count>
      <attachid>319093</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-08-25 16:42:06 -0700</bug_when>
    <thetext>Comment on attachment 319093
Patch

Clearing flags on attachment: 319093

Committed r221213: &lt;http://trac.webkit.org/changeset/221213&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342577</commentid>
    <comment_count>6</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-08-25 16:42:07 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342578</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-25 16:43:00 -0700</bug_when>
    <thetext>&lt;rdar://problem/34092309&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319092</attachid>
            <date>2017-08-25 12:15:38 -0700</date>
            <delta_ts>2017-08-25 12:17:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175990-20170825121537.patch</filename>
            <type>text/plain</type>
            <size>20666</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
ODQ2MzdjZGNjMTM5MWFjN2NhYTQzNWZjNTI5YzU2YTcyYTYyNDY3Li4zNGIxOGVjYjQwNDRkNGIx
M2JiZTcyZWJlMWU5ZjIxYzRkNzkzMWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAxNy0wOC0yNSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+
CisKKyAgICAgICAgRGVtYXJjYXRlIGNvZGUgYWRkZWQgZHVlIHRvIGxhY2sgb2YgTlNETUkgZm9y
IGFnZ3JlZ2F0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3NTk5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogZG9taml0L0RPTUpJVEVmZmVjdC5oOgorICAgICAgICAoSlNDOjpET01KSVQ6OkVmZmVj
dDo6RWZmZWN0KToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvcldyaXRlKToKKyAg
ICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvclJlYWQpOgorICAgICAgICAoSlNDOjpET01K
SVQ6OkVmZmVjdDo6Zm9yUmVhZFdyaXRlKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6
OmZvclB1cmUpOgorICAgICAgICAoSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKToKKyAgICAg
ICAgKiBydW50aW1lL0hhc093blByb3BlcnR5Q2FjaGUuaDoKKyAgICAgICAgKEpTQzo6SGFzT3du
UHJvcGVydHlDYWNoZTo6RW50cnk6OkVudHJ5KToKKyAgICAgICAgKEpTQzo6SGFzT3duUHJvcGVy
dHlDYWNoZTo6RW50cnk6Om9wZXJhdG9yPSk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9XYXNt
Rm9ybWF0Lmg6CisgICAgICAgIChKU0M6Oldhc206OkNhbGxhYmxlRnVuY3Rpb246OkNhbGxhYmxl
RnVuY3Rpb24pOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHA6Cisg
ICAgICAgIChKU0M6OldlYkFzc2VtYmx5RnVuY3Rpb246OldlYkFzc2VtYmx5RnVuY3Rpb24pOgor
ICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uY3BwOgorICAgICAg
ICAoSlNDOjpXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbjo6Y3JlYXRlKToKKwogMjAxNy0wOC0y
NCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyMTExOSwgcjIyMTEyNCwgYW5kIHIyMjExNDMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4
IDQ0ZGJhNDdhMjM0MTBkMjJmMTYyMGM1YjczMjNlYjllMDhkMTE0N2EuLjgzNTQ3OGIzMDIyMGYx
MmU3MGI1ZjViN2Q0ZDQ3MzdlZGNiY2ZkMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMDgt
MjUgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIERlbWFyY2F0
ZSBjb2RlIGFkZGVkIGR1ZSB0byBsYWNrIG9mIE5TRE1JIGZvciBhZ2dyZWdhdGVzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU5OTAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9Db21waWxlci5o
OgorCiAyMDE3LTA4LTI0ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjIxMTE5LCByMjIxMTI0LCBhbmQg
cjIyMTE0My4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyN2FjMzc4ODNlM2I2ZGU1YWViNjI0NGE3YWZiODBlNmYw
OTA2MTM1Li40YTk2YmQxNWUxMzg4Njk2ZGM4OWZjYWY0ZTg0MmM3NmM3ODEyMThlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTctMDgtMjUgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIERlbWFyY2F0ZSBjb2RlIGFkZGVkIGR1ZSB0byBsYWNrIG9m
IE5TRE1JIGZvciBhZ2dyZWdhdGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzU5OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmg6CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vSWNlQ2FuZGlkYXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpJY2VD
YW5kaWRhdGU6OkljZUNhbmRpZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9TdHJpbmdX
aXRoRGlyZWN0aW9uLmg6IFJlcGxhY2UgY29uc3QgU3RyaW5nJiBhbmQgU3RyaW5nJiYgY29uc3Ry
dWN0b3IKKyAgICAgICAgb3ZlcmxvYWRzIHdpdGggYSBzaW5nbGUgdXNlci1kZWZpbmVkIGNvbnN0
cnVjdG9yIHRoYXQgdGFrZXMgYSBTdHJpbmcgYnkgdmFsdWUgdG8gaGFuZGxlCisgICAgICAgIGJv
dGggY2FzZXMuCisgICAgICAgIChXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uOjpTdHJpbmdX
aXRoRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnRydW5jYXRlRnJvbUVuZCk6CisgICAg
ICAgICogc3R5bGUvU3R5bGVVcGRhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpFbGVt
ZW50VXBkYXRlOjpFbGVtZW50VXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUZXh0
VXBkYXRlOjpUZXh0VXBkYXRlKToKKwogMjAxNy0wOC0yNSAgQnJhZHkgRWlkc29uICA8YmVpZHNv
bkBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyMTE4MS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZyBiL1NvdXJjZS9ibWFsbG9jL0No
YW5nZUxvZwppbmRleCA2N2U1MTE3ODlkOTg4NjlkNzEyMTFjOWRkYjdkNzEzNmVhMjkzMjBlLi43
NTJlMjk2NGIwNDZhMDBhNTliNzUwYzQ2YjZjZmIwOGU1MDJiODE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvYm1hbGxvYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMTctMDgtMjUgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29t
PgorCisgICAgICAgIERlbWFyY2F0ZSBjb2RlIGFkZGVkIGR1ZSB0byBsYWNrIG9mIE5TRE1JIGZv
ciBhZ2dyZWdhdGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzU5OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGJtYWxsb2MvQlBsYXRmb3JtLmg6CisgICAgICAgICogYm1hbGxvYy9MaXN0Lmg6IEJl
IGV4cGxpY2l0IHdoZW4gaW5pdGlhbGl6aW5nIG1fbm9kZSB0byBpbXByb3ZlIHJlYWRhYmlsaXR5
LgorICAgICAgICAoYm1hbGxvYzo6TGlzdE5vZGU6Okxpc3ROb2RlKToKKwogMjAxNy0wOC0yMyAg
RmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFJlZHVjZSBHaWdhY2Fn
ZSBzaXplcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRF
ZmZlY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklURWZmZWN0LmgKaW5k
ZXggNDAyYTQ1OWUxYWQ3MTdlYjkxNDhjMTI4NzJmOGIwOTVkYTk5ZTNkOC4uMmFjNzY0ZmYyYzcx
NjVkMjI1N2RiNDUxNTFiZTc0MzAyODUyNDU0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RvbWppdC9ET01KSVRFZmZlY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZG9taml0L0RPTUpJVEVmZmVjdC5oCkBAIC0yOSw2MCArMjksNjAgQEAKIAogbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBET01KSVQgewogCi1jbGFzcyBFZmZlY3QgewotcHVibGljOgotICAgIEhl
YXBSYW5nZSByZWFkcyB7IEhlYXBSYW5nZTo6dG9wKCkgfTsKLSAgICBIZWFwUmFuZ2Ugd3JpdGVz
IHsgSGVhcFJhbmdlOjp0b3AoKSB9OwotICAgIEhlYXBSYW5nZSBkZWYgeyBIZWFwUmFuZ2U6OnRv
cCgpIH07Ci0KK3N0cnVjdCBFZmZlY3QgeworI2lmICFDT01QSUxFUl9TVVBQT1JUUyhOU0RNSV9G
T1JfQUdHUkVHQVRFUykKICAgICBjb25zdGV4cHIgRWZmZWN0KCkgPSBkZWZhdWx0OwogICAgIGNv
bnN0ZXhwciBFZmZlY3QoSGVhcFJhbmdlIHJlYWRzLCBIZWFwUmFuZ2Ugd3JpdGVzKQotICAgICAg
ICA6IHJlYWRzKHJlYWRzKQotICAgICAgICAsIHdyaXRlcyh3cml0ZXMpCisgICAgICAgIDogcmVh
ZHMgeyByZWFkcyB9CisgICAgICAgICwgd3JpdGVzIHsgd3JpdGVzIH0KICAgICB7CiAgICAgfQot
CiAgICAgY29uc3RleHByIEVmZmVjdChIZWFwUmFuZ2UgcmVhZHMsIEhlYXBSYW5nZSB3cml0ZXMs
IEhlYXBSYW5nZSBkZWYpCi0gICAgICAgIDogcmVhZHMocmVhZHMpCi0gICAgICAgICwgd3JpdGVz
KHdyaXRlcykKLSAgICAgICAgLCBkZWYoZGVmKQorICAgICAgICA6IHJlYWRzIHsgcmVhZHMgfQor
ICAgICAgICAsIHdyaXRlcyB7IHdyaXRlcyB9CisgICAgICAgICwgZGVmIHsgZGVmIH0KICAgICB7
CiAgICAgfQorI2VuZGlmCiAKICAgICBjb25zdGV4cHIgc3RhdGljIEVmZmVjdCBmb3JXcml0ZShI
ZWFwUmFuZ2Ugd3JpdGVSYW5nZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBFZmZlY3QoSGVhcFJh
bmdlOjpub25lKCksIHdyaXRlUmFuZ2UpOworICAgICAgICByZXR1cm4geyBIZWFwUmFuZ2U6Om5v
bmUoKSwgd3JpdGVSYW5nZSB9OwogICAgIH0KIAogICAgIGNvbnN0ZXhwciBzdGF0aWMgRWZmZWN0
IGZvclJlYWQoSGVhcFJhbmdlIHJlYWRSYW5nZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBFZmZl
Y3QocmVhZFJhbmdlLCBIZWFwUmFuZ2U6Om5vbmUoKSk7CisgICAgICAgIHJldHVybiB7IHJlYWRS
YW5nZSwgSGVhcFJhbmdlOjpub25lKCkgfTsKICAgICB9CiAKICAgICBjb25zdGV4cHIgc3RhdGlj
IEVmZmVjdCBmb3JSZWFkV3JpdGUoSGVhcFJhbmdlIHJlYWRSYW5nZSwgSGVhcFJhbmdlIHdyaXRl
UmFuZ2UpCiAgICAgewotICAgICAgICByZXR1cm4gRWZmZWN0KHJlYWRSYW5nZSwgd3JpdGVSYW5n
ZSk7CisgICAgICAgIHJldHVybiB7IHJlYWRSYW5nZSwgd3JpdGVSYW5nZSB9OwogICAgIH0KIAog
ICAgIGNvbnN0ZXhwciBzdGF0aWMgRWZmZWN0IGZvclB1cmUoKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIEVmZmVjdChIZWFwUmFuZ2U6Om5vbmUoKSwgSGVhcFJhbmdlOjpub25lKCksIEhlYXBSYW5n
ZTo6bm9uZSgpKTsKKyAgICAgICAgcmV0dXJuIHsgSGVhcFJhbmdlOjpub25lKCksIEhlYXBSYW5n
ZTo6bm9uZSgpLCBIZWFwUmFuZ2U6Om5vbmUoKSB9OwogICAgIH0KIAogICAgIGNvbnN0ZXhwciBz
dGF0aWMgRWZmZWN0IGZvckRlZihIZWFwUmFuZ2UgZGVmKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IEVmZmVjdChkZWYsIEhlYXBSYW5nZTo6bm9uZSgpLCBkZWYpOworICAgICAgICByZXR1cm4geyBk
ZWYsIEhlYXBSYW5nZTo6bm9uZSgpLCBkZWYgfTsKICAgICB9CiAKICAgICBjb25zdGV4cHIgc3Rh
dGljIEVmZmVjdCBmb3JEZWYoSGVhcFJhbmdlIGRlZiwgSGVhcFJhbmdlIHJlYWRSYW5nZSwgSGVh
cFJhbmdlIHdyaXRlUmFuZ2UpCiAgICAgewotICAgICAgICByZXR1cm4gRWZmZWN0KHJlYWRSYW5n
ZSwgd3JpdGVSYW5nZSwgZGVmKTsKKyAgICAgICAgcmV0dXJuIHsgcmVhZFJhbmdlLCB3cml0ZVJh
bmdlLCBkZWYgfTsKICAgICB9CiAKICAgICBjb25zdGV4cHIgYm9vbCBtdXN0R2VuZXJhdGUoKSBj
b25zdAogICAgIHsKICAgICAgICAgcmV0dXJuICEhd3JpdGVzOwogICAgIH0KKworICAgIEhlYXBS
YW5nZSByZWFkcyB7IEhlYXBSYW5nZTo6dG9wKCkgfTsKKyAgICBIZWFwUmFuZ2Ugd3JpdGVzIHsg
SGVhcFJhbmdlOjp0b3AoKSB9OworICAgIEhlYXBSYW5nZSBkZWYgeyBIZWFwUmFuZ2U6OnRvcCgp
IH07CiB9OwogCiB9IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0hhc093blByb3BlcnR5Q2FjaGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hh
c093blByb3BlcnR5Q2FjaGUuaAppbmRleCAzZjBhYWEwODY4ZTk0YjY4OTdlNDRhZWI3MTllMjNk
ODg2YjhlOTIxLi43NjI3NTE2YmMzNTZjZDAzZmJlNjAxOWRlMjg1Y2NmZGM5NTBkZDI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNPd25Qcm9wZXJ0eUNhY2hl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzT3duUHJvcGVydHlDYWNo
ZS5oCkBAIC00MiwyMyArNDIsMTkgQEAgcHVibGljOgogICAgICAgICBzdGF0aWMgcHRyZGlmZl90
IG9mZnNldE9mSW1wbCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihFbnRyeSwgaW1wbCk7IH0K
ICAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlJlc3VsdCgpIHsgcmV0dXJuIE9CSkVD
VF9PRkZTRVRPRihFbnRyeSwgcmVzdWx0KTsgfQogCisjaWYgIUNPTVBJTEVSX1NVUFBPUlRTKE5T
RE1JX0ZPUl9BR0dSRUdBVEVTKQogICAgICAgICBFbnRyeSgpID0gZGVmYXVsdDsKLQogICAgICAg
ICBFbnRyeShSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiYgaW1wbCwgU3RydWN0dXJlSUQgc3Ry
dWN0dXJlSUQsIGJvb2wgcmVzdWx0KQotICAgICAgICAgICAgOiBpbXBsKFdURk1vdmUoaW1wbCkp
Ci0gICAgICAgICAgICAsIHN0cnVjdHVyZUlEKHN0cnVjdHVyZUlEKQotICAgICAgICAgICAgLCBy
ZXN1bHQocmVzdWx0KQotICAgICAgICB7IH0KLQotICAgICAgICBFbnRyeSYgb3BlcmF0b3I9KEVu
dHJ5JiYgb3RoZXIpCisgICAgICAgICAgICA6IGltcGwgeyBXVEZNb3ZlKGltcGwpIH0KKyAgICAg
ICAgICAgICwgc3RydWN0dXJlSUQgeyBzdHJ1Y3R1cmVJRCB9CisgICAgICAgICAgICAsIHJlc3Vs
dCB7IHJlc3VsdCB9CiAgICAgICAgIHsKLSAgICAgICAgICAgIGltcGwgPSBXVEZNb3ZlKG90aGVy
LmltcGwpOwotICAgICAgICAgICAgc3RydWN0dXJlSUQgPSBvdGhlci5zdHJ1Y3R1cmVJRDsKLSAg
ICAgICAgICAgIHJlc3VsdCA9IG90aGVyLnJlc3VsdDsKLSAgICAgICAgICAgIHJldHVybiAqdGhp
czsKICAgICAgICAgfQogCi0gICAgICAgIFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4gaW1wbCB7
IH07CisgICAgICAgIEVudHJ5JiBvcGVyYXRvcj0oRW50cnkmJiBvdGhlcikgPSBkZWZhdWx0Owor
I2VuZGlmCisKKyAgICAgICAgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiBpbXBsOwogICAgICAg
ICBTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCB7IDAgfTsKICAgICAgICAgYm9vbCByZXN1bHQgeyBm
YWxzZSB9OwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKaW5k
ZXggY2M2NTk3MTFiZjUzZWFkMjk4YzVmNjRkYWM0MzFiNjRjZDJlYjk4OS4uNGYwOGQ5YmMzMTU3
ZTMwOGU4YThiNmE5OGJlN2UwNTMwMWE4NTY5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21Gb3JtYXQuaApAQCAtMjg0LDI0ICsyODQsMjYgQEAgc3RydWN0IFdhc21FeGl0U3R1YnMg
ewogCiB0eXBlZGVmIHZvaWQqKiBXYXNtRW50cnlwb2ludExvYWRMb2NhdGlvbjsKIAotLy8gV2Vi
QXNzZW1ibHkgZGlyZWN0IGNhbGxzIGFuZCBjYWxsX2luZGlyZWN0IHVzZSBpbmRpY2VzIGludG8g
ImZ1bmN0aW9uIGluZGV4IHNwYWNlIi4gVGhpcyBzcGFjZSBzdGFydHMgd2l0aCBhbGwgaW1wb3J0
cywgYW5kIHRoZW4gYWxsIGludGVybmFsIGZ1bmN0aW9ucy4KLS8vIENhbGxhYmxlRnVuY3Rpb24g
YW5kIEZ1bmN0aW9uSW5kZXhTcGFjZSBhcmUgb25seSBtZWFudCBhcyBmYXN0IGxvb2t1cCB0YWJs
ZXMgZm9yIHRoZXNlIG9wY29kZXMsIGFuZCBkbyBub3Qgb3duIGNvZGUuCisvLyBXZWJBc3NlbWJs
eSBkaXJlY3QgY2FsbHMgYW5kIGNhbGxfaW5kaXJlY3QgdXNlIGluZGljZXMgaW50byAiZnVuY3Rp
b24gaW5kZXggc3BhY2UiLiBUaGlzIHNwYWNlIHN0YXJ0cworLy8gd2l0aCBhbGwgaW1wb3J0cywg
YW5kIHRoZW4gYWxsIGludGVybmFsIGZ1bmN0aW9ucy4gQ2FsbGFibGVGdW5jdGlvbiBhbmQgRnVu
Y3Rpb25JbmRleFNwYWNlIGFyZSBvbmx5CisvLyBtZWFudCBhcyBmYXN0IGxvb2t1cCB0YWJsZXMg
Zm9yIHRoZXNlIG9wY29kZXMgYW5kIGRvIG5vdCBvd24gY29kZS4KIHN0cnVjdCBDYWxsYWJsZUZ1
bmN0aW9uIHsKKyNpZiAhQ09NUElMRVJfU1VQUE9SVFMoTlNETUlfRk9SX0FHR1JFR0FURVMpCiAg
ICAgQ2FsbGFibGVGdW5jdGlvbigpID0gZGVmYXVsdDsKLQogICAgIENhbGxhYmxlRnVuY3Rpb24o
U2lnbmF0dXJlSW5kZXggc2lnbmF0dXJlSW5kZXgsIFdhc21FbnRyeXBvaW50TG9hZExvY2F0aW9u
IGNvZGUgPSBudWxscHRyKQotICAgICAgICA6IHNpZ25hdHVyZUluZGV4KHNpZ25hdHVyZUluZGV4
KQotICAgICAgICAsIGNvZGUoY29kZSkKKyAgICAgICAgOiBzaWduYXR1cmVJbmRleCB7IHNpZ25h
dHVyZUluZGV4IH0KKyAgICAgICAgLCBjb2RlIHsgY29kZSB9CiAgICAgewogICAgIH0KKyNlbmRp
ZgogCiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZldhc21FbnRyeXBvaW50TG9hZExvY2F0
aW9uKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKENhbGxhYmxlRnVuY3Rpb24sIGNvZGUpOyB9
CiAKLSAgICAvLyBGSVhNRSBwYWNrIHRoZSBTaWduYXR1cmVJbmRleCBhbmQgdGhlIGNvZGUgcG9p
bnRlciBpbnRvIG9uZSA2NC1iaXQgdmFsdWUuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjU1MTEKKyAgICAvLyBGSVhNRTogUGFjayBzaWduYXR1cmUgaW5kZXggYW5k
IGNvZGUgcG9pbnRlciBpbnRvIG9uZSA2NC1iaXQgdmFsdWUuIFNlZSA8aHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTUxMT4uCiAgICAgU2lnbmF0dXJlSW5kZXggc2ln
bmF0dXJlSW5kZXggeyBTaWduYXR1cmU6OmludmFsaWRJbmRleCB9OwogICAgIFdhc21FbnRyeXBv
aW50TG9hZExvY2F0aW9uIGNvZGUgeyBudWxscHRyIH07CiB9OwotdHlwZWRlZiBWZWN0b3I8Q2Fs
bGFibGVGdW5jdGlvbj4gRnVuY3Rpb25JbmRleFNwYWNlOwordXNpbmcgRnVuY3Rpb25JbmRleFNw
YWNlID0gVmVjdG9yPENhbGxhYmxlRnVuY3Rpb24+OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
V2FzbQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3Nl
bWJseUZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5RnVuY3Rpb24uY3BwCmluZGV4IDg2MDViMGFkZDg0ZWNjOTRjOGJhNDA5YmI0NzQxNDk4MjFm
MjJmMjAuLjBkMjc3NjViZjJlMzE3NTI5NTBlZGY0ZGQ2NDhkZjBlYWU0NTg3OTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24u
Y3BwCkBAIC0xOTAsOSArMTkwLDkgQEAgU3RydWN0dXJlKiBXZWJBc3NlbWJseUZ1bmN0aW9uOjpj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKIH0KIAogV2Vi
QXNzZW1ibHlGdW5jdGlvbjo6V2ViQXNzZW1ibHlGdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBXYXNtOjpDYWxsZWUmIGpz
RW50cnlwb2ludCwgV2FzbTo6V2FzbUVudHJ5cG9pbnRMb2FkTG9jYXRpb24gd2FzbUVudHJ5cG9p
bnQsIFdhc206OlNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4KQotICAgIDogQmFzZSh2bSwg
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCi0gICAgLCBtX2pzRW50cnlwb2ludChqc0VudHJ5cG9p
bnQuZW50cnlwb2ludCgpKQotICAgICwgbV93YXNtRnVuY3Rpb24oV2FzbTo6Q2FsbGFibGVGdW5j
dGlvbihzaWduYXR1cmVJbmRleCwgd2FzbUVudHJ5cG9pbnQpKQorICAgIDogQmFzZSB7IHZtLCBn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSB9CisgICAgLCBtX2pzRW50cnlwb2ludCB7IGpzRW50cnlw
b2ludC5lbnRyeXBvaW50KCkgfQorICAgICwgbV93YXNtRnVuY3Rpb24geyBzaWduYXR1cmVJbmRl
eCwgd2FzbUVudHJ5cG9pbnQgfQogeyB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rp
b24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlXcmFwcGVy
RnVuY3Rpb24uY3BwCmluZGV4IDRhODQyMzIzNDkzMTliN2E5YTlhNzc2MDlkYjY3NDRkNGFlMWNl
NzEuLjAyMWM2MTgyMWFkMDczZmZkN2UxY2NlNTFmMDg4MGVlNDEwOGIwMmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVdyYXBw
ZXJGdW5jdGlvbi5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgV2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rp
b24qIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE8K
ICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFmdW5jdGlvbi0+aW5oZXJpdHModm0sIFdlYkFzc2Vt
Ymx5V3JhcHBlckZ1bmN0aW9uOjppbmZvKCkpLCAiV2Ugc2hvdWxkIG5ldmVyIGRvdWJsZSB3cmFw
IGEgd3JhcHBlciBmdW5jdGlvbi4iKTsKICAgICBTdHJpbmcgbmFtZSA9ICIiOwogICAgIE5hdGl2
ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSB2bS5nZXRIb3N0RnVuY3Rpb24oY2FsbFdlYkFzc2Vt
Ymx5V3JhcHBlckZ1bmN0aW9uLCBOb0ludHJpbnNpYywgY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3Ry
dWN0b3IsIG51bGxwdHIsIG5hbWUpOwotICAgIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKiBy
ZXN1bHQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxXZWJBc3NlbWJseVdyYXBwZXJGdW5j
dGlvbj4odm0uaGVhcCkpIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uKHZtLCBnbG9iYWxPYmpl
Y3QsIGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb25TdHJ1Y3R1cmUoKSwg
V2FzbTo6Q2FsbGFibGVGdW5jdGlvbihzaWduYXR1cmVJbmRleCwgaW5zdGFuY2UtPmNvZGVCbG9j
aygpLT53YXNtVG9Kc0NhbGxTdHViRm9ySW1wb3J0KGltcG9ydEluZGV4KSkpOworICAgIFdlYkFz
c2VtYmx5V3JhcHBlckZ1bmN0aW9uKiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbj4odm0uaGVhcCkpIFdlYkFzc2VtYmx5V3JhcHBl
ckZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlXcmFw
cGVyRnVuY3Rpb25TdHJ1Y3R1cmUoKSwgeyBzaWduYXR1cmVJbmRleCwgaW5zdGFuY2UtPmNvZGVC
bG9jaygpLT53YXNtVG9Kc0NhbGxTdHViRm9ySW1wb3J0KGltcG9ydEluZGV4KSB9KTsKICAgICBj
b25zdCBXYXNtOjpTaWduYXR1cmUmIHNpZ25hdHVyZSA9IFdhc206OlNpZ25hdHVyZUluZm9ybWF0
aW9uOjpnZXQoc2lnbmF0dXJlSW5kZXgpOwogICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0s
IGV4ZWN1dGFibGUsIHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCksIG5hbWUsIGZ1bmN0aW9uLCBp
bnN0YW5jZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L0NvbXBpbGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9Db21waWxlci5oCmluZGV4IDNkMzViZmU1YTgy
YzU4YzJhY2IwODEyODFkNzMzMmE2OGM1YWU4M2YuLjQwNjZlYjhiNTMwM2JlNmJjYzdkMzY1ZjFl
MDcyZDI0MDVmYzZjNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NvbXBpbGVyLmgKKysr
IGIvU291cmNlL1dURi93dGYvQ29tcGlsZXIuaApAQCAtMTUwLDYgKzE1MCwxMiBAQAogI2RlZmlu
ZSBXVEZfQ09NUElMRVJfU1VQUE9SVFNfRUFCSSAxCiAjZW5kaWYKIAorLyogTm9uLXN0YXRpYyBk
YXRhIG1lbWJlciBpbml0aWFsaXplciAoTlNETUkpIGZvciBhZ2dyZWdhdGVzICovCisKKyNpZiBk
ZWZpbmVkKF9fY3BwX2FnZ3JlZ2F0ZV9uc2RtaSkgJiYgX19jcHBfYWdncmVnYXRlX25zZG1pID49
IDIwMTMwNAorI2RlZmluZSBXVEZfQ09NUElMRVJfU1VQUE9SVFNfTlNETUlfRk9SX0FHR1JFR0FU
RVMgMQorI2VuZGlmCisKIC8qIFJFTEFYRURfQ09OU1RFWFBSICovCiAKICNpZiBkZWZpbmVkKF9f
Y3BwX2NvbnN0ZXhwcikgJiYgX19jcHBfY29uc3RleHByID49IDIwMTMwNApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmgKaW5kZXggMDliYTJmZjdmNjI2ZWFhNzRjZmRiNjA3
YzI0Y2IxN2E3YzU0ZDY0MC4uNWMxYjhlYjBhODBlM2E1ZjU1OTYyYWM2ODhiMzlhMzYyYzNlNGU2
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5oCkBAIC03MCwxMiAr
NzAsMTMgQEAgcHJpdmF0ZToKICAgICBzdHJ1Y3QgSW52YWxpZCB7IH07CiAKICAgICBzdHJ1Y3Qg
Q01ZS0FDb2xvciB7CisjaWYgIUNPTVBJTEVSX1NVUFBPUlRTKE5TRE1JX0ZPUl9BR0dSRUdBVEVT
KQogICAgICAgICBDTVlLQUNvbG9yKCkgPSBkZWZhdWx0OwotCiAgICAgICAgIENNWUtBQ29sb3Io
Q29sb3IgY29sb3IsIGZsb2F0IGN5YW4sIGZsb2F0IG1hZ2VudGEsIGZsb2F0IHllbGxvdywgZmxv
YXQgYmxhY2ssIGZsb2F0IGFscGhhKQogICAgICAgICAgICAgOiBjb2xvcihjb2xvciksIGMoY3lh
biksIG0obWFnZW50YSksIHkoeWVsbG93KSwgayhibGFjayksIGEoYWxwaGEpCiAgICAgICAgIHsK
ICAgICAgICAgfQorI2VuZGlmCiAKICAgICAgICAgQ29sb3IgY29sb3I7CiAgICAgICAgIGZsb2F0
IGMgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9JY2VDYW5kaWRhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0lj
ZUNhbmRpZGF0ZS5oCmluZGV4IDJiMjhjMzc1YjJlMDJhOWM1NTQzNjE0NTRiZmJlYmE3OTU4YmJk
MjIuLmUzMDJhMWQxZGRkNDk3MTRmOTg3N2ZlYzNmMmEyMzkwZTBjNDU3YzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0ljZUNhbmRpZGF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0ljZUNhbmRpZGF0ZS5oCkBAIC0z
Nyw2ICszNywyMyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgSWNlQ2FuZGlkYXRl
IHsKKyNpZiAhQ09NUElMRVJfU1VQUE9SVFMoTlNETUlfRk9SX0FHR1JFR0FURVMpCisgICAgSWNl
Q2FuZGlkYXRlKCkgPSBkZWZhdWx0OworICAgIEljZUNhbmRpZGF0ZShTdHJpbmcmJiB0eXBlLCBT
dHJpbmcmJiBmb3VuZGF0aW9uLCB1bnNpZ25lZCBjb21wb25lbnRJZCwgU3RyaW5nJiYgdHJhbnNw
b3J0LCB1bnNpZ25lZCBsb25nIHByaW9yaXR5LCBTdHJpbmcmJiBhZGRyZXNzLCB1bnNpZ25lZCBw
b3J0LCBTdHJpbmcmJiB0Y3BUeXBlLCBTdHJpbmcmJiByZWxhdGVkQWRkcmVzcywgdW5zaWduZWQg
cmVsYXRlZFBvcnQpCisgICAgICAgIDogdHlwZSB7IFdURk1vdmUodHlwZSkgfQorICAgICAgICAs
IGZvdW5kYXRpb24geyBXVEZNb3ZlKGZvdW5kYXRpb24pIH0KKyAgICAgICAgLCBjb21wb25lbnRJ
ZCB7IGNvbXBvbmVudElkIH0KKyAgICAgICAgLCB0cmFuc3BvcnQgeyBXVEZNb3ZlKHRyYW5zcG9y
dCkgfQorICAgICAgICAsIHByaW9yaXR5IHsgcHJpb3JpdHkgfQorICAgICAgICAsIGFkZHJlc3Mg
eyBXVEZNb3ZlKGFkZHJlc3MpIH0KKyAgICAgICAgLCBwb3J0IHsgcG9ydCB9CisgICAgICAgICwg
dGNwVHlwZSB7IFdURk1vdmUodGNwVHlwZSkgfQorICAgICAgICAsIHJlbGF0ZWRBZGRyZXNzIHsg
V1RGTW92ZShyZWxhdGVkQWRkcmVzcykgfQorICAgICAgICAsIHJlbGF0ZWRQb3J0IHsgcmVsYXRl
ZFBvcnQgfQorICAgIHsKKyAgICB9CisjZW5kaWYKKwogICAgIFN0cmluZyB0eXBlOwogICAgIFN0
cmluZyBmb3VuZGF0aW9uOwogICAgIHVuc2lnbmVkIGNvbXBvbmVudElkIHsgMCB9OwpAQCAtNDcs
MjAgKzY0LDYgQEAgc3RydWN0IEljZUNhbmRpZGF0ZSB7CiAgICAgU3RyaW5nIHRjcFR5cGU7CiAg
ICAgU3RyaW5nIHJlbGF0ZWRBZGRyZXNzOwogICAgIHVuc2lnbmVkIHJlbGF0ZWRQb3J0IHsgMCB9
OwotCi0gICAgSWNlQ2FuZGlkYXRlKCkgPSBkZWZhdWx0OwotICAgIEljZUNhbmRpZGF0ZShTdHJp
bmcmJiB0eXBlLCBTdHJpbmcmJiBmb3VuZGF0aW9uLCB1bnNpZ25lZCBjb21wb25lbnRJZCwgU3Ry
aW5nJiYgdHJhbnNwb3J0LCB1bnNpZ25lZCBsb25nIHByaW9yaXR5LCBTdHJpbmcmJiBhZGRyZXNz
LCB1bnNpZ25lZCBwb3J0LCBTdHJpbmcmJiB0Y3BUeXBlLCBTdHJpbmcmJiByZWxhdGVkQWRkcmVz
cywgdW5zaWduZWQgcmVsYXRlZFBvcnQpCi0gICAgICAgIDogdHlwZShXVEZNb3ZlKHR5cGUpKQot
ICAgICAgICAsIGZvdW5kYXRpb24oV1RGTW92ZShmb3VuZGF0aW9uKSkKLSAgICAgICAgLCBjb21w
b25lbnRJZChjb21wb25lbnRJZCkKLSAgICAgICAgLCB0cmFuc3BvcnQoV1RGTW92ZSh0cmFuc3Bv
cnQpKQotICAgICAgICAsIHByaW9yaXR5KHByaW9yaXR5KQotICAgICAgICAsIGFkZHJlc3MoV1RG
TW92ZShhZGRyZXNzKSkKLSAgICAgICAgLCBwb3J0KHBvcnQpCi0gICAgICAgICwgdGNwVHlwZShX
VEZNb3ZlKHRjcFR5cGUpKQotICAgICAgICAsIHJlbGF0ZWRBZGRyZXNzKFdURk1vdmUocmVsYXRl
ZEFkZHJlc3MpKQotICAgICAgICAsIHJlbGF0ZWRQb3J0KHJlbGF0ZWRQb3J0KQotICAgIHsgfQog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9TdHJpbmdXaXRoRGlyZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1N0cmluZ1dpdGhEaXJlY3Rpb24uaAppbmRleCA2ZGM4N2Q3NjU0ZTM5Nzc3ZDQ5
NGUwZDRlM2E0YzQxZmMyMDhlZTJmLi40NzI3YTlmN2E3ZWRlMjhjY2NhODRiZTJiNDE5YzkyZDY1
MzIyODhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZ1dp
dGhEaXJlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZ1dp
dGhEaXJlY3Rpb24uaApAQCAtNDYsOSArNDYsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8g
dG8gdGhlIHN0cmluZy4KIAogc3RydWN0IFN0cmluZ1dpdGhEaXJlY3Rpb24geworI2lmICFDT01Q
SUxFUl9TVVBQT1JUUyhOU0RNSV9GT1JfQUdHUkVHQVRFUykKICAgICBTdHJpbmdXaXRoRGlyZWN0
aW9uKCkgPSBkZWZhdWx0OwotICAgIFN0cmluZ1dpdGhEaXJlY3Rpb24oY29uc3QgU3RyaW5nJiBz
dHJpbmcsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKSA6IHN0cmluZyB7IHN0cmluZyB9LCBkaXJl
Y3Rpb24geyBkaXJlY3Rpb24gfSB7IH0KLSAgICBTdHJpbmdXaXRoRGlyZWN0aW9uKFN0cmluZyYm
IHN0cmluZywgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pIDogc3RyaW5nIHsgV1RGTW92ZShzdHJp
bmcpIH0sIGRpcmVjdGlvbiB7IGRpcmVjdGlvbiB9IHsgfQorICAgIFN0cmluZ1dpdGhEaXJlY3Rp
b24oU3RyaW5nIHN0cmluZywgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCisgICAgICAgIDogc3Ry
aW5nIHsgV1RGTW92ZShzdHJpbmcpIH0KKyAgICAgICAgLCBkaXJlY3Rpb24geyBkaXJlY3Rpb24g
fQorICAgIHsKKyAgICB9CisjZW5kaWYKICAgICBTdHJpbmcgc3RyaW5nOwogICAgIFRleHREaXJl
Y3Rpb24gZGlyZWN0aW9uIHsgTFRSIH07CiB9OwpAQCAtNjYsOCArNzEsOCBAQCBpbmxpbmUgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIGEsIGNvbnN0IFN0cmluZ1dp
dGhEaXJlY3Rpb24mCiBpbmxpbmUgU3RyaW5nV2l0aERpcmVjdGlvbiB0cnVuY2F0ZUZyb21FbmQo
Y29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgc3RyaW5nLCB1bnNpZ25lZCBtYXhMZW5ndGgpCiB7
CiAgICAgaWYgKHN0cmluZy5kaXJlY3Rpb24gPT0gTFRSKQotICAgICAgICByZXR1cm4gU3RyaW5n
V2l0aERpcmVjdGlvbihzdHJpbmcuc3RyaW5nLmxlZnQobWF4TGVuZ3RoKSwgTFRSKTsKLSAgICBy
ZXR1cm4gU3RyaW5nV2l0aERpcmVjdGlvbihzdHJpbmcuc3RyaW5nLnJpZ2h0KG1heExlbmd0aCks
IFJUTCk7CisgICAgICAgIHJldHVybiB7IHN0cmluZy5zdHJpbmcubGVmdChtYXhMZW5ndGgpLCBM
VFIgfTsKKyAgICByZXR1cm4geyBzdHJpbmcuc3RyaW5nLnJpZ2h0KG1heExlbmd0aCksIFJUTCB9
OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVVwZGF0ZS5o
IGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVVcGRhdGUuaAppbmRleCA3MDgxNTVkMWMyYWQ2
YTMwMjdhNzYzOGFkNmQyMDBkMjljZmM5Yzc0Li5iYmZhMjQyMTVkYzI1MDZkNjJiNDRiZGZmZmJm
NDMyNzc2NjFkM2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVVwZGF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVXBkYXRlLmgKQEAgLTQzLDIzICs0
MywyOSBAQCBjbGFzcyBUZXh0OwogbmFtZXNwYWNlIFN0eWxlIHsKIAogc3RydWN0IEVsZW1lbnRV
cGRhdGUgeworI2lmICFDT01QSUxFUl9TVVBQT1JUUyhOU0RNSV9GT1JfQUdHUkVHQVRFUykKICAg
ICBFbGVtZW50VXBkYXRlKCkgPSBkZWZhdWx0OwogICAgIEVsZW1lbnRVcGRhdGUoc3RkOjp1bmlx
dWVfcHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgQ2hhbmdlIGNoYW5nZSwgYm9vbCByZWNvbXBvc2l0
ZUxheWVyKQotICAgICAgICA6IHN0eWxlKFdURk1vdmUoc3R5bGUpKQotICAgICAgICAsIGNoYW5n
ZShjaGFuZ2UpCi0gICAgICAgICwgcmVjb21wb3NpdGVMYXllcihyZWNvbXBvc2l0ZUxheWVyKQot
ICAgIHsgfQorICAgICAgICA6IHN0eWxlIHsgV1RGTW92ZShzdHlsZSkgfQorICAgICAgICAsIGNo
YW5nZSB7IGNoYW5nZSB9CisgICAgICAgICwgcmVjb21wb3NpdGVMYXllciB7IHJlY29tcG9zaXRl
TGF5ZXIgfQorICAgIHsKKyAgICB9CisjZW5kaWYKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVy
U3R5bGU+IHN0eWxlOwogICAgIENoYW5nZSBjaGFuZ2UgeyBOb0NoYW5nZSB9OwogICAgIGJvb2wg
cmVjb21wb3NpdGVMYXllciB7IGZhbHNlIH07CiB9OwogCiBzdHJ1Y3QgVGV4dFVwZGF0ZSB7Cisj
aWYgIUNPTVBJTEVSX1NVUFBPUlRTKE5TRE1JX0ZPUl9BR0dSRUdBVEVTKQogICAgIFRleHRVcGRh
dGUoKSA9IGRlZmF1bHQ7CiAgICAgVGV4dFVwZGF0ZSh1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVk
IGxlbmd0aCkKLSAgICAgICAgOiBvZmZzZXQob2Zmc2V0KQotICAgICAgICAsIGxlbmd0aChsZW5n
dGgpCi0gICAgeyB9CisgICAgICAgIDogb2Zmc2V0IHsgb2Zmc2V0IH0KKyAgICAgICAgLCBsZW5n
dGggeyBsZW5ndGggfQorICAgIHsKKyAgICB9CisjZW5kaWYKIAogICAgIHVuc2lnbmVkIG9mZnNl
dCB7IDAgfTsKICAgICB1bnNpZ25lZCBsZW5ndGggeyBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2ln
bmVkPjo6bWF4KCkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQlBsYXRm
b3JtLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0JQbGF0Zm9ybS5oCmluZGV4IDVmYTllZjQ5
YjhiNjU5OTYwNTIyZGU3NWYzMDBhNzY5ZjIyMzRlMGMuLmU0NGJjYjM5MzE5YWM5NzIxY2UxYWU5
YjFiYTFmMzgxMDE2YTE3YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQlBs
YXRmb3JtLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9CUGxhdGZvcm0uaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02Miw2ICs2
MiwxNiBAQAogLyogQlVTRSgpIC0gdXNlIGEgcGFydGljdWxhciB0aGlyZC1wYXJ0eSBsaWJyYXJ5
IG9yIG9wdGlvbmFsIE9TIHNlcnZpY2UgKi8KICNkZWZpbmUgQlVTRShGRUFUVVJFKSAoZGVmaW5l
ZCBCVVNFXyMjRkVBVFVSRSAmJiBCVVNFXyMjRkVBVFVSRSkKIAorLyogPT09PSBDb21waWxlciBh
ZGFwdGF0aW9uIG1hY3JvczogdGhlc2UgZGVzY3JpYmUgdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUg
Y29tcGlsZXIuID09PT0gKi8KKworLyogQkNPTVBJTEVSX1NVUFBPUlRTKCkgLSBjaGVjayBmb3Ig
YSBjb21waWxlciBmZWF0dXJlICovCisjZGVmaW5lIEJDT01QSUxFUl9TVVBQT1JUUyhGRUFUVVJF
KSAoZGVmaW5lZCBCQ09NUElMRVJfU1VQUE9SVFNfIyNGRUFUVVJFICYmIEJDT01QSUxFUl9TVVBQ
T1JUU18jI0ZFQVRVUkUpCisKKy8qIEJDT01QSUxFUl9TVVBQT1JUUyhOU0RNSV9GT1JfQUdHUkVH
QVRFUykgLSBjb21waWxlciBzdXBwb3J0cyBub24tc3RhdGljIGRhdGEgbWVtYmVyIGluaXRpYWxp
emVycyBmb3IgYWdncmVnYXRlcyAqLworI2lmIGRlZmluZWQoX19jcHBfYWdncmVnYXRlX25zZG1p
KSAmJiBfX2NwcF9hZ2dyZWdhdGVfbnNkbWkgPj0gMjAxMzA0CisjZGVmaW5lIEJDT01QSUxFUl9T
VVBQT1JUU19OU0RNSV9GT1JfQUdHUkVHQVRFUyAxCisjZW5kaWYKKwogLyogPT09PSBQbGF0Zm9y
bSBhZGFwdGF0aW9uIG1hY3JvczogdGhlc2UgZGVzY3JpYmUgcHJvcGVydGllcyBvZiB0aGUgdGFy
Z2V0IGVudmlyb25tZW50LiA9PT09ICovCiAKIC8qIEJDUFUoKSAtIHRoZSB0YXJnZXQgQ1BVIGFy
Y2hpdGVjdHVyZSAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9MaXN0Lmgg
Yi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0xpc3QuaAppbmRleCA4ZGU3ZTQ3ZDMyOTAyNmUyOTli
YmViMzcwZDAyMWMzODJmMzQ3YWFkLi40ODE3M2M4MjIxMGFiMGEzNDZmN2RiOTc4MmQ2MDYzYzhj
NzE0MTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0xpc3QuaAorKysgYi9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0xpc3QuaApAQCAtMzAsMTIgKzMwLDE0IEBAIG5hbWVzcGFj
ZSBibWFsbG9jIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0cnVjdCBMaXN0Tm9kZSB7Cisj
aWYgIUJDT01QSUxFUl9TVVBQT1JUUyhOU0RNSV9GT1JfQUdHUkVHQVRFUykKICAgICBMaXN0Tm9k
ZSgpID0gZGVmYXVsdDsKICAgICBMaXN0Tm9kZShMaXN0Tm9kZTxUPiogcHJldiwgTGlzdE5vZGU8
VD4qIG5leHQpCi0gICAgICAgIDogcHJldihwcmV2KQotICAgICAgICAsIG5leHQobmV4dCkKKyAg
ICAgICAgOiBwcmV2IHsgcHJldiB9CisgICAgICAgICwgbmV4dCB7IG5leHQgfQogICAgIHsKICAg
ICB9CisjZW5kaWYKIAogICAgIExpc3ROb2RlPFQ+KiBwcmV2IHsgbnVsbHB0ciB9OwogICAgIExp
c3ROb2RlPFQ+KiBuZXh0IHsgbnVsbHB0ciB9OwpAQCAtNDYsMTEgKzQ4LDEzIEBAIGNsYXNzIExp
c3QgewogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPFQ+
Ojp2YWx1ZSwgIkxpc3QgbXVzdCBoYXZlIGEgdHJpdmlhbCBkZXN0cnVjdG9yLiIpOwogCiAgICAg
c3RydWN0IGl0ZXJhdG9yIHsKKyNpZiAhQkNPTVBJTEVSX1NVUFBPUlRTKE5TRE1JX0ZPUl9BR0dS
RUdBVEVTKQogICAgICAgICBpdGVyYXRvcigpID0gZGVmYXVsdDsKICAgICAgICAgaXRlcmF0b3Io
TGlzdE5vZGU8VD4qIG5vZGUpCiAgICAgICAgICAgICA6IG1fbm9kZShub2RlKQogICAgICAgICB7
CiAgICAgICAgIH0KKyNlbmRpZgogCiAgICAgICAgIFQqIG9wZXJhdG9yKigpIHsgcmV0dXJuIHN0
YXRpY19jYXN0PFQqPihtX25vZGUpOyB9CiAgICAgICAgIFQqIG9wZXJhdG9yLT4oKSB7IHJldHVy
biBzdGF0aWNfY2FzdDxUKj4obV9ub2RlKTsgfQpAQCAtNjMsNyArNjcsNyBAQCBjbGFzcyBMaXN0
IHsKICAgICAgICAgICAgIHJldHVybiAqdGhpczsKICAgICAgICAgfQogICAgICAgICAKLSAgICAg
ICAgTGlzdE5vZGU8VD4qIG1fbm9kZSB7IH07CisgICAgICAgIExpc3ROb2RlPFQ+KiBtX25vZGUg
eyBudWxscHRyIH07CiAgICAgfTsKIAogcHVibGljOgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319093</attachid>
            <date>2017-08-25 12:17:43 -0700</date>
            <delta_ts>2017-08-25 16:42:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175990-20170825121742.patch</filename>
            <type>text/plain</type>
            <size>20841</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
ODQ2MzdjZGNjMTM5MWFjN2NhYTQzNWZjNTI5YzU2YTcyYTYyNDY3Li5hMzExMzhhNGE2MTZiYTVi
ZWMzYzNkZDQ4YjYwZGQ2NzZmYjljMmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAxNy0wOC0yNSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+
CisKKyAgICAgICAgRGVtYXJjYXRlIGNvZGUgYWRkZWQgZHVlIHRvIGxhY2sgb2YgTlNETUkgZm9y
IGFnZ3JlZ2F0ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3NTk5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogZG9taml0L0RPTUpJVEVmZmVjdC5oOgorICAgICAgICAoSlNDOjpET01KSVQ6OkVmZmVj
dDo6RWZmZWN0KToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvcldyaXRlKToKKyAg
ICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvclJlYWQpOgorICAgICAgICAoSlNDOjpET01K
SVQ6OkVmZmVjdDo6Zm9yUmVhZFdyaXRlKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpFZmZlY3Q6
OmZvclB1cmUpOgorICAgICAgICAoSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9yRGVmKToKKyAgICAg
ICAgKiBydW50aW1lL0hhc093blByb3BlcnR5Q2FjaGUuaDoKKyAgICAgICAgKEpTQzo6SGFzT3du
UHJvcGVydHlDYWNoZTo6RW50cnk6OkVudHJ5KToKKyAgICAgICAgKEpTQzo6SGFzT3duUHJvcGVy
dHlDYWNoZTo6RW50cnk6Om9wZXJhdG9yPSk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9XYXNt
Rm9ybWF0Lmg6IE1vZGVybml6ZSBzb21lIG9mIHRoZSBjb2RlIHdoaWxlIEkgYW0gaGVyZS4gQWxz
bworICAgICAgICBtYWtlIHNvbWUgY29tbWVudHMgcmVhZCB3ZWxsLgorICAgICAgICAoSlNDOjpX
YXNtOjpDYWxsYWJsZUZ1bmN0aW9uOjpDYWxsYWJsZUZ1bmN0aW9uKToKKyAgICAgICAgKiB3YXNt
L2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseUZ1
bmN0aW9uOjpXZWJBc3NlbWJseUZ1bmN0aW9uKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2Vt
Ymx5V3JhcHBlckZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlXcmFwcGVy
RnVuY3Rpb246OmNyZWF0ZSk6CisKIDIwMTctMDgtMjQgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1x
dWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMjEx
MTksIHIyMjExMjQsIGFuZCByMjIxMTQzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA0NGRiYTQ3YTIzNDEwZDIyZjE2MjBjNWI3
MzIzZWI5ZTA4ZDExNDdhLi44MzU0NzhiMzAyMjBmMTJlNzBiNWY1YjdkNGQ0NzM3ZWRjYmNmZDIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE3LTA4LTI1ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVz
QGFwcGxlLmNvbT4KKworICAgICAgICBEZW1hcmNhdGUgY29kZSBhZGRlZCBkdWUgdG8gbGFjayBv
ZiBOU0RNSSBmb3IgYWdncmVnYXRlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc1OTkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiB3dGYvQ29tcGlsZXIuaDoKKwogMjAxNy0wOC0yNCAgQ29tbWl0IFF1
ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjIyMTExOSwgcjIyMTEyNCwgYW5kIHIyMjExNDMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjdh
YzM3ODgzZTNiNmRlNWFlYjYyNDRhN2FmYjgwZTZmMDkwNjEzNS4uNGE5NmJkMTVlMTM4ODY5NmRj
ODlmY2FmNGU4NDJjNzZjNzgxMjE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE3
LTA4LTI1ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBEZW1h
cmNhdGUgY29kZSBhZGRlZCBkdWUgdG8gbGFjayBvZiBOU0RNSSBmb3IgYWdncmVnYXRlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1OTkwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9DYW52YXNTdHlsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL0ljZUNhbmRp
ZGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6SWNlQ2FuZGlkYXRlOjpJY2VDYW5kaWRhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL3RleHQvU3RyaW5nV2l0aERpcmVjdGlvbi5oOiBSZXBsYWNlIGNv
bnN0IFN0cmluZyYgYW5kIFN0cmluZyYmIGNvbnN0cnVjdG9yCisgICAgICAgIG92ZXJsb2FkcyB3
aXRoIGEgc2luZ2xlIHVzZXItZGVmaW5lZCBjb25zdHJ1Y3RvciB0aGF0IHRha2VzIGEgU3RyaW5n
IGJ5IHZhbHVlIHRvIGhhbmRsZQorICAgICAgICBib3RoIGNhc2VzLgorICAgICAgICAoV2ViQ29y
ZTo6U3RyaW5nV2l0aERpcmVjdGlvbjo6U3RyaW5nV2l0aERpcmVjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjp0cnVuY2F0ZUZyb21FbmQpOgorICAgICAgICAqIHN0eWxlL1N0eWxlVXBkYXRlLmg6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6RWxlbWVudFVwZGF0ZTo6RWxlbWVudFVwZGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VGV4dFVwZGF0ZTo6VGV4dFVwZGF0ZSk6CisKIDIw
MTctMDgtMjUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMjExODEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxv
Yy9DaGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggNjdlNTExNzg5ZDk4
ODY5ZDcxMjExYzlkZGI3ZDcxMzZlYTI5MzIwZS4uNzUyZTI5NjRiMDQ2YTAwYTU5Yjc1MGM0NmI2
Y2ZiMDhlNTAyYjgxNCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE3LTA4LTI1ICBE
YW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBEZW1hcmNhdGUgY29k
ZSBhZGRlZCBkdWUgdG8gbGFjayBvZiBOU0RNSSBmb3IgYWdncmVnYXRlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1OTkwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBibWFsbG9jL0JQbGF0Zm9ybS5o
OgorICAgICAgICAqIGJtYWxsb2MvTGlzdC5oOiBCZSBleHBsaWNpdCB3aGVuIGluaXRpYWxpemlu
ZyBtX25vZGUgdG8gaW1wcm92ZSByZWFkYWJpbGl0eS4KKyAgICAgICAgKGJtYWxsb2M6Okxpc3RO
b2RlOjpMaXN0Tm9kZSk6CisKIDIwMTctMDgtMjMgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZWR1Y2UgR2lnYWNhZ2Ugc2l6ZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklURWZmZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZG9taml0L0RPTUpJVEVmZmVjdC5oCmluZGV4IDQwMmE0NTllMWFkNzE3ZWI5MTQ4YzEy
ODcyZjhiMDk1ZGE5OWUzZDguLjJhYzc2NGZmMmM3MTY1ZDIyNTdkYjQ1MTUxYmU3NDMwMjg1MjQ1
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklURWZmZWN0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRFZmZlY3QuaApAQCAt
MjksNjAgKzI5LDYwIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRE9NSklUIHsKIAot
Y2xhc3MgRWZmZWN0IHsKLXB1YmxpYzoKLSAgICBIZWFwUmFuZ2UgcmVhZHMgeyBIZWFwUmFuZ2U6
OnRvcCgpIH07Ci0gICAgSGVhcFJhbmdlIHdyaXRlcyB7IEhlYXBSYW5nZTo6dG9wKCkgfTsKLSAg
ICBIZWFwUmFuZ2UgZGVmIHsgSGVhcFJhbmdlOjp0b3AoKSB9OwotCitzdHJ1Y3QgRWZmZWN0IHsK
KyNpZiAhQ09NUElMRVJfU1VQUE9SVFMoTlNETUlfRk9SX0FHR1JFR0FURVMpCiAgICAgY29uc3Rl
eHByIEVmZmVjdCgpID0gZGVmYXVsdDsKICAgICBjb25zdGV4cHIgRWZmZWN0KEhlYXBSYW5nZSBy
ZWFkcywgSGVhcFJhbmdlIHdyaXRlcykKLSAgICAgICAgOiByZWFkcyhyZWFkcykKLSAgICAgICAg
LCB3cml0ZXMod3JpdGVzKQorICAgICAgICA6IHJlYWRzIHsgcmVhZHMgfQorICAgICAgICAsIHdy
aXRlcyB7IHdyaXRlcyB9CiAgICAgewogICAgIH0KLQogICAgIGNvbnN0ZXhwciBFZmZlY3QoSGVh
cFJhbmdlIHJlYWRzLCBIZWFwUmFuZ2Ugd3JpdGVzLCBIZWFwUmFuZ2UgZGVmKQotICAgICAgICA6
IHJlYWRzKHJlYWRzKQotICAgICAgICAsIHdyaXRlcyh3cml0ZXMpCi0gICAgICAgICwgZGVmKGRl
ZikKKyAgICAgICAgOiByZWFkcyB7IHJlYWRzIH0KKyAgICAgICAgLCB3cml0ZXMgeyB3cml0ZXMg
fQorICAgICAgICAsIGRlZiB7IGRlZiB9CiAgICAgewogICAgIH0KKyNlbmRpZgogCiAgICAgY29u
c3RleHByIHN0YXRpYyBFZmZlY3QgZm9yV3JpdGUoSGVhcFJhbmdlIHdyaXRlUmFuZ2UpCiAgICAg
ewotICAgICAgICByZXR1cm4gRWZmZWN0KEhlYXBSYW5nZTo6bm9uZSgpLCB3cml0ZVJhbmdlKTsK
KyAgICAgICAgcmV0dXJuIHsgSGVhcFJhbmdlOjpub25lKCksIHdyaXRlUmFuZ2UgfTsKICAgICB9
CiAKICAgICBjb25zdGV4cHIgc3RhdGljIEVmZmVjdCBmb3JSZWFkKEhlYXBSYW5nZSByZWFkUmFu
Z2UpCiAgICAgewotICAgICAgICByZXR1cm4gRWZmZWN0KHJlYWRSYW5nZSwgSGVhcFJhbmdlOjpu
b25lKCkpOworICAgICAgICByZXR1cm4geyByZWFkUmFuZ2UsIEhlYXBSYW5nZTo6bm9uZSgpIH07
CiAgICAgfQogCiAgICAgY29uc3RleHByIHN0YXRpYyBFZmZlY3QgZm9yUmVhZFdyaXRlKEhlYXBS
YW5nZSByZWFkUmFuZ2UsIEhlYXBSYW5nZSB3cml0ZVJhbmdlKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIEVmZmVjdChyZWFkUmFuZ2UsIHdyaXRlUmFuZ2UpOworICAgICAgICByZXR1cm4geyByZWFk
UmFuZ2UsIHdyaXRlUmFuZ2UgfTsKICAgICB9CiAKICAgICBjb25zdGV4cHIgc3RhdGljIEVmZmVj
dCBmb3JQdXJlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBFZmZlY3QoSGVhcFJhbmdlOjpub25l
KCksIEhlYXBSYW5nZTo6bm9uZSgpLCBIZWFwUmFuZ2U6Om5vbmUoKSk7CisgICAgICAgIHJldHVy
biB7IEhlYXBSYW5nZTo6bm9uZSgpLCBIZWFwUmFuZ2U6Om5vbmUoKSwgSGVhcFJhbmdlOjpub25l
KCkgfTsKICAgICB9CiAKICAgICBjb25zdGV4cHIgc3RhdGljIEVmZmVjdCBmb3JEZWYoSGVhcFJh
bmdlIGRlZikKICAgICB7Ci0gICAgICAgIHJldHVybiBFZmZlY3QoZGVmLCBIZWFwUmFuZ2U6Om5v
bmUoKSwgZGVmKTsKKyAgICAgICAgcmV0dXJuIHsgZGVmLCBIZWFwUmFuZ2U6Om5vbmUoKSwgZGVm
IH07CiAgICAgfQogCiAgICAgY29uc3RleHByIHN0YXRpYyBFZmZlY3QgZm9yRGVmKEhlYXBSYW5n
ZSBkZWYsIEhlYXBSYW5nZSByZWFkUmFuZ2UsIEhlYXBSYW5nZSB3cml0ZVJhbmdlKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIEVmZmVjdChyZWFkUmFuZ2UsIHdyaXRlUmFuZ2UsIGRlZik7CisgICAg
ICAgIHJldHVybiB7IHJlYWRSYW5nZSwgd3JpdGVSYW5nZSwgZGVmIH07CiAgICAgfQogCiAgICAg
Y29uc3RleHByIGJvb2wgbXVzdEdlbmVyYXRlKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVy
biAhIXdyaXRlczsKICAgICB9CisKKyAgICBIZWFwUmFuZ2UgcmVhZHMgeyBIZWFwUmFuZ2U6OnRv
cCgpIH07CisgICAgSGVhcFJhbmdlIHdyaXRlcyB7IEhlYXBSYW5nZTo6dG9wKCkgfTsKKyAgICBI
ZWFwUmFuZ2UgZGVmIHsgSGVhcFJhbmdlOjp0b3AoKSB9OwogfTsKIAogfSB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNPd25Qcm9wZXJ0eUNhY2hlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNPd25Qcm9wZXJ0eUNhY2hlLmgKaW5kZXgg
M2YwYWFhMDg2OGU5NGI2ODk3ZTQ0YWViNzE5ZTIzZDg4NmI4ZTkyMS4uNzYyNzUxNmJjMzU2Y2Qw
M2ZiZTYwMTlkZTI4NWNjZmRjOTUwZGQyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSGFzT3duUHJvcGVydHlDYWNoZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0hhc093blByb3BlcnR5Q2FjaGUuaApAQCAtNDIsMjMgKzQyLDE5IEBAIHB1
YmxpYzoKICAgICAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkltcGwoKSB7IHJldHVybiBP
QkpFQ1RfT0ZGU0VUT0YoRW50cnksIGltcGwpOyB9CiAgICAgICAgIHN0YXRpYyBwdHJkaWZmX3Qg
b2Zmc2V0T2ZSZXN1bHQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRW50cnksIHJlc3VsdCk7
IH0KIAorI2lmICFDT01QSUxFUl9TVVBQT1JUUyhOU0RNSV9GT1JfQUdHUkVHQVRFUykKICAgICAg
ICAgRW50cnkoKSA9IGRlZmF1bHQ7Ci0KICAgICAgICAgRW50cnkoUmVmUHRyPFVuaXF1ZWRTdHJp
bmdJbXBsPiYmIGltcGwsIFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlELCBib29sIHJlc3VsdCkKLSAg
ICAgICAgICAgIDogaW1wbChXVEZNb3ZlKGltcGwpKQotICAgICAgICAgICAgLCBzdHJ1Y3R1cmVJ
RChzdHJ1Y3R1cmVJRCkKLSAgICAgICAgICAgICwgcmVzdWx0KHJlc3VsdCkKLSAgICAgICAgeyB9
Ci0KLSAgICAgICAgRW50cnkmIG9wZXJhdG9yPShFbnRyeSYmIG90aGVyKQorICAgICAgICAgICAg
OiBpbXBsIHsgV1RGTW92ZShpbXBsKSB9CisgICAgICAgICAgICAsIHN0cnVjdHVyZUlEIHsgc3Ry
dWN0dXJlSUQgfQorICAgICAgICAgICAgLCByZXN1bHQgeyByZXN1bHQgfQogICAgICAgICB7Ci0g
ICAgICAgICAgICBpbXBsID0gV1RGTW92ZShvdGhlci5pbXBsKTsKLSAgICAgICAgICAgIHN0cnVj
dHVyZUlEID0gb3RoZXIuc3RydWN0dXJlSUQ7Ci0gICAgICAgICAgICByZXN1bHQgPSBvdGhlci5y
ZXN1bHQ7Ci0gICAgICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgICAgIH0KIAotICAgICAgICBS
ZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+IGltcGwgeyB9OworICAgICAgICBFbnRyeSYgb3BlcmF0
b3I9KEVudHJ5JiYgb3RoZXIpID0gZGVmYXVsdDsKKyNlbmRpZgorCisgICAgICAgIFJlZlB0cjxV
bmlxdWVkU3RyaW5nSW1wbD4gaW1wbDsKICAgICAgICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQg
eyAwIH07CiAgICAgICAgIGJvb2wgcmVzdWx0IHsgZmFsc2UgfTsKICAgICB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oCmluZGV4IGNjNjU5NzExYmY1M2VhZDI5OGM1ZjY0
ZGFjNDMxYjY0Y2QyZWI5ODkuLmIyMjIyMTdjMGVmOTgxZmMwZGFkZTFiZDdiOGI1ZTQyZTg0ZTY0
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKQEAgLTI4MiwyNiAr
MjgyLDI4IEBAIHN0cnVjdCBXYXNtRXhpdFN0dWJzIHsKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgd2FzbVRvV2FzbTsKIH07CiAKLXR5cGVkZWYgdm9pZCoqIFdhc21FbnRyeXBvaW50TG9hZExv
Y2F0aW9uOwordXNpbmcgV2FzbUVudHJ5cG9pbnRMb2FkTG9jYXRpb24gPSB2b2lkKio7CiAKLS8v
IFdlYkFzc2VtYmx5IGRpcmVjdCBjYWxscyBhbmQgY2FsbF9pbmRpcmVjdCB1c2UgaW5kaWNlcyBp
bnRvICJmdW5jdGlvbiBpbmRleCBzcGFjZSIuIFRoaXMgc3BhY2Ugc3RhcnRzIHdpdGggYWxsIGlt
cG9ydHMsIGFuZCB0aGVuIGFsbCBpbnRlcm5hbCBmdW5jdGlvbnMuCi0vLyBDYWxsYWJsZUZ1bmN0
aW9uIGFuZCBGdW5jdGlvbkluZGV4U3BhY2UgYXJlIG9ubHkgbWVhbnQgYXMgZmFzdCBsb29rdXAg
dGFibGVzIGZvciB0aGVzZSBvcGNvZGVzLCBhbmQgZG8gbm90IG93biBjb2RlLgorLy8gV2ViQXNz
ZW1ibHkgZGlyZWN0IGNhbGxzIGFuZCBjYWxsX2luZGlyZWN0IHVzZSBpbmRpY2VzIGludG8gImZ1
bmN0aW9uIGluZGV4IHNwYWNlIi4gVGhpcyBzcGFjZSBzdGFydHMKKy8vIHdpdGggYWxsIGltcG9y
dHMsIGFuZCB0aGVuIGFsbCBpbnRlcm5hbCBmdW5jdGlvbnMuIENhbGxhYmxlRnVuY3Rpb24gYW5k
IEZ1bmN0aW9uSW5kZXhTcGFjZSBhcmUgb25seQorLy8gbWVhbnQgYXMgZmFzdCBsb29rdXAgdGFi
bGVzIGZvciB0aGVzZSBvcGNvZGVzIGFuZCBkbyBub3Qgb3duIGNvZGUuCiBzdHJ1Y3QgQ2FsbGFi
bGVGdW5jdGlvbiB7CisjaWYgIUNPTVBJTEVSX1NVUFBPUlRTKE5TRE1JX0ZPUl9BR0dSRUdBVEVT
KQogICAgIENhbGxhYmxlRnVuY3Rpb24oKSA9IGRlZmF1bHQ7Ci0KICAgICBDYWxsYWJsZUZ1bmN0
aW9uKFNpZ25hdHVyZUluZGV4IHNpZ25hdHVyZUluZGV4LCBXYXNtRW50cnlwb2ludExvYWRMb2Nh
dGlvbiBjb2RlID0gbnVsbHB0cikKLSAgICAgICAgOiBzaWduYXR1cmVJbmRleChzaWduYXR1cmVJ
bmRleCkKLSAgICAgICAgLCBjb2RlKGNvZGUpCisgICAgICAgIDogc2lnbmF0dXJlSW5kZXggeyBz
aWduYXR1cmVJbmRleCB9CisgICAgICAgICwgY29kZSB7IGNvZGUgfQogICAgIHsKICAgICB9Cisj
ZW5kaWYKIAogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZXYXNtRW50cnlwb2ludExvYWRM
b2NhdGlvbigpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihDYWxsYWJsZUZ1bmN0aW9uLCBjb2Rl
KTsgfQogCi0gICAgLy8gRklYTUUgcGFjayB0aGUgU2lnbmF0dXJlSW5kZXggYW5kIHRoZSBjb2Rl
IHBvaW50ZXIgaW50byBvbmUgNjQtYml0IHZhbHVlLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTY1NTExCisgICAgLy8gRklYTUU6IFBhY2sgc2lnbmF0dXJlIGluZGV4
IGFuZCBjb2RlIHBvaW50ZXIgaW50byBvbmUgNjQtYml0IHZhbHVlLiBTZWUgPGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU1MTE+LgogICAgIFNpZ25hdHVyZUluZGV4
IHNpZ25hdHVyZUluZGV4IHsgU2lnbmF0dXJlOjppbnZhbGlkSW5kZXggfTsKICAgICBXYXNtRW50
cnlwb2ludExvYWRMb2NhdGlvbiBjb2RlIHsgbnVsbHB0ciB9OwogfTsKLXR5cGVkZWYgVmVjdG9y
PENhbGxhYmxlRnVuY3Rpb24+IEZ1bmN0aW9uSW5kZXhTcGFjZTsKK3VzaW5nIEZ1bmN0aW9uSW5k
ZXhTcGFjZSA9IFZlY3RvcjxDYWxsYWJsZUZ1bmN0aW9uPjsKIAogfSB9IC8vIG5hbWVzcGFjZSBK
U0M6Oldhc20KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseUZ1bmN0aW9uLmNwcAppbmRleCA4NjA1YjBhZGQ4NGVjYzk0YzhiYTQwOWJiNDc0MTQ5
ODIxZjIyZjIwLi4wZDI3NzY1YmYyZTMxNzUyOTUwZWRmNGRkNjQ4ZGYwZWFlNDU4Nzk4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0
aW9uLmNwcApAQCAtMTkwLDkgKzE5MCw5IEBAIFN0cnVjdHVyZSogV2ViQXNzZW1ibHlGdW5jdGlv
bjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiB9CiAK
IFdlYkFzc2VtYmx5RnVuY3Rpb246OldlYkFzc2VtYmx5RnVuY3Rpb24oVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgV2FzbTo6Q2FsbGVl
JiBqc0VudHJ5cG9pbnQsIFdhc206Oldhc21FbnRyeXBvaW50TG9hZExvY2F0aW9uIHdhc21FbnRy
eXBvaW50LCBXYXNtOjpTaWduYXR1cmVJbmRleCBzaWduYXR1cmVJbmRleCkKLSAgICA6IEJhc2Uo
dm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQotICAgICwgbV9qc0VudHJ5cG9pbnQoanNFbnRy
eXBvaW50LmVudHJ5cG9pbnQoKSkKLSAgICAsIG1fd2FzbUZ1bmN0aW9uKFdhc206OkNhbGxhYmxl
RnVuY3Rpb24oc2lnbmF0dXJlSW5kZXgsIHdhc21FbnRyeXBvaW50KSkKKyAgICA6IEJhc2UgeyB2
bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUgfQorICAgICwgbV9qc0VudHJ5cG9pbnQgeyBqc0Vu
dHJ5cG9pbnQuZW50cnlwb2ludCgpIH0KKyAgICAsIG1fd2FzbUZ1bmN0aW9uIHsgc2lnbmF0dXJl
SW5kZXgsIHdhc21FbnRyeXBvaW50IH0KIHsgfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5V3JhcHBlckZ1
bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5V3Jh
cHBlckZ1bmN0aW9uLmNwcAppbmRleCA0YTg0MjMyMzQ5MzE5YjdhOWE5YTc3NjA5ZGI2NzQ0ZDRh
ZTFjZTcxLi4wMjFjNjE4MjFhZDA3M2ZmZDdlMWNjZTUxZjA4ODBlZTQxMDhiMDJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseVdyYXBwZXJGdW5j
dGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlX
cmFwcGVyRnVuY3Rpb24uY3BwCkBAIC02Myw3ICs2Myw3IEBAIFdlYkFzc2VtYmx5V3JhcHBlckZ1
bmN0aW9uKiBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9i
YWxPCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghZnVuY3Rpb24tPmluaGVyaXRzKHZtLCBXZWJB
c3NlbWJseVdyYXBwZXJGdW5jdGlvbjo6aW5mbygpKSwgIldlIHNob3VsZCBuZXZlciBkb3VibGUg
d3JhcCBhIHdyYXBwZXIgZnVuY3Rpb24uIik7CiAgICAgU3RyaW5nIG5hbWUgPSAiIjsKICAgICBO
YXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gdm0uZ2V0SG9zdEZ1bmN0aW9uKGNhbGxXZWJB
c3NlbWJseVdyYXBwZXJGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIGNhbGxIb3N0RnVuY3Rpb25Bc0Nv
bnN0cnVjdG9yLCBudWxscHRyLCBuYW1lKTsKLSAgICBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlv
biogcmVzdWx0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8V2ViQXNzZW1ibHlXcmFwcGVy
RnVuY3Rpb24+KHZtLmhlYXApKSBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbih2bSwgZ2xvYmFs
T2JqZWN0LCBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uU3RydWN0dXJl
KCksIFdhc206OkNhbGxhYmxlRnVuY3Rpb24oc2lnbmF0dXJlSW5kZXgsIGluc3RhbmNlLT5jb2Rl
QmxvY2soKS0+d2FzbVRvSnNDYWxsU3R1YkZvckltcG9ydChpbXBvcnRJbmRleCkpKTsKKyAgICBX
ZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbiogcmVzdWx0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8V2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24+KHZtLmhlYXApKSBXZWJBc3NlbWJseVdy
YXBwZXJGdW5jdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5
V3JhcHBlckZ1bmN0aW9uU3RydWN0dXJlKCksIHsgc2lnbmF0dXJlSW5kZXgsIGluc3RhbmNlLT5j
b2RlQmxvY2soKS0+d2FzbVRvSnNDYWxsU3R1YkZvckltcG9ydChpbXBvcnRJbmRleCkgfSk7CiAg
ICAgY29uc3QgV2FzbTo6U2lnbmF0dXJlJiBzaWduYXR1cmUgPSBXYXNtOjpTaWduYXR1cmVJbmZv
cm1hdGlvbjo6Z2V0KHNpZ25hdHVyZUluZGV4KTsKICAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9u
KHZtLCBleGVjdXRhYmxlLCBzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpLCBuYW1lLCBmdW5jdGlv
biwgaW5zdGFuY2UpOwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9Db21waWxlci5oIGIvU291cmNlL1dURi93dGYvQ29tcGlsZXIuaAppbmRleCAzZDM1YmZl
NWE4MmM1OGMyYWNiMDgxMjgxZDczMzJhNjhjNWFlODNmLi40MDY2ZWI4YjUzMDNiZTZiY2M3ZDM2
NWYxZTA3MmQyNDA1ZmM2YzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Db21waWxlci5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NvbXBpbGVyLmgKQEAgLTE1MCw2ICsxNTAsMTIgQEAKICNk
ZWZpbmUgV1RGX0NPTVBJTEVSX1NVUFBPUlRTX0VBQkkgMQogI2VuZGlmCiAKKy8qIE5vbi1zdGF0
aWMgZGF0YSBtZW1iZXIgaW5pdGlhbGl6ZXIgKE5TRE1JKSBmb3IgYWdncmVnYXRlcyAqLworCisj
aWYgZGVmaW5lZChfX2NwcF9hZ2dyZWdhdGVfbnNkbWkpICYmIF9fY3BwX2FnZ3JlZ2F0ZV9uc2Rt
aSA+PSAyMDEzMDQKKyNkZWZpbmUgV1RGX0NPTVBJTEVSX1NVUFBPUlRTX05TRE1JX0ZPUl9BR0dS
RUdBVEVTIDEKKyNlbmRpZgorCiAvKiBSRUxBWEVEX0NPTlNURVhQUiAqLwogCiAjaWYgZGVmaW5l
ZChfX2NwcF9jb25zdGV4cHIpICYmIF9fY3BwX2NvbnN0ZXhwciA+PSAyMDEzMDQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5oCmluZGV4IDA5YmEyZmY3ZjYyNmVhYTc0Y2Zk
YjYwN2MyNGNiMTdhN2M1NGQ2NDAuLjVjMWI4ZWIwYTgwZTNhNWY1NTk2MmFjNjg4YjM5YTM2MmMz
ZTRlNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuaApAQCAtNzAs
MTIgKzcwLDEzIEBAIHByaXZhdGU6CiAgICAgc3RydWN0IEludmFsaWQgeyB9OwogCiAgICAgc3Ry
dWN0IENNWUtBQ29sb3IgeworI2lmICFDT01QSUxFUl9TVVBQT1JUUyhOU0RNSV9GT1JfQUdHUkVH
QVRFUykKICAgICAgICAgQ01ZS0FDb2xvcigpID0gZGVmYXVsdDsKLQogICAgICAgICBDTVlLQUNv
bG9yKENvbG9yIGNvbG9yLCBmbG9hdCBjeWFuLCBmbG9hdCBtYWdlbnRhLCBmbG9hdCB5ZWxsb3cs
IGZsb2F0IGJsYWNrLCBmbG9hdCBhbHBoYSkKICAgICAgICAgICAgIDogY29sb3IoY29sb3IpLCBj
KGN5YW4pLCBtKG1hZ2VudGEpLCB5KHllbGxvdyksIGsoYmxhY2spLCBhKGFscGhhKQogICAgICAg
ICB7CiAgICAgICAgIH0KKyNlbmRpZgogCiAgICAgICAgIENvbG9yIGNvbG9yOwogICAgICAgICBm
bG9hdCBjIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vSWNlQ2FuZGlkYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9JY2VDYW5kaWRhdGUuaAppbmRleCAyYjI4YzM3NWIyZTAyYTljNTU0MzYxNDU0YmZiZWJhNzk1
OGJiZDIyLi5lMzAyYTFkMWRkZDQ5NzE0Zjk4NzdmZWMzZjJhMjM5MGUwYzQ1N2M5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9JY2VDYW5kaWRhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9JY2VDYW5kaWRhdGUuaApA
QCAtMzcsNiArMzcsMjMgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEljZUNhbmRp
ZGF0ZSB7CisjaWYgIUNPTVBJTEVSX1NVUFBPUlRTKE5TRE1JX0ZPUl9BR0dSRUdBVEVTKQorICAg
IEljZUNhbmRpZGF0ZSgpID0gZGVmYXVsdDsKKyAgICBJY2VDYW5kaWRhdGUoU3RyaW5nJiYgdHlw
ZSwgU3RyaW5nJiYgZm91bmRhdGlvbiwgdW5zaWduZWQgY29tcG9uZW50SWQsIFN0cmluZyYmIHRy
YW5zcG9ydCwgdW5zaWduZWQgbG9uZyBwcmlvcml0eSwgU3RyaW5nJiYgYWRkcmVzcywgdW5zaWdu
ZWQgcG9ydCwgU3RyaW5nJiYgdGNwVHlwZSwgU3RyaW5nJiYgcmVsYXRlZEFkZHJlc3MsIHVuc2ln
bmVkIHJlbGF0ZWRQb3J0KQorICAgICAgICA6IHR5cGUgeyBXVEZNb3ZlKHR5cGUpIH0KKyAgICAg
ICAgLCBmb3VuZGF0aW9uIHsgV1RGTW92ZShmb3VuZGF0aW9uKSB9CisgICAgICAgICwgY29tcG9u
ZW50SWQgeyBjb21wb25lbnRJZCB9CisgICAgICAgICwgdHJhbnNwb3J0IHsgV1RGTW92ZSh0cmFu
c3BvcnQpIH0KKyAgICAgICAgLCBwcmlvcml0eSB7IHByaW9yaXR5IH0KKyAgICAgICAgLCBhZGRy
ZXNzIHsgV1RGTW92ZShhZGRyZXNzKSB9CisgICAgICAgICwgcG9ydCB7IHBvcnQgfQorICAgICAg
ICAsIHRjcFR5cGUgeyBXVEZNb3ZlKHRjcFR5cGUpIH0KKyAgICAgICAgLCByZWxhdGVkQWRkcmVz
cyB7IFdURk1vdmUocmVsYXRlZEFkZHJlc3MpIH0KKyAgICAgICAgLCByZWxhdGVkUG9ydCB7IHJl
bGF0ZWRQb3J0IH0KKyAgICB7CisgICAgfQorI2VuZGlmCisKICAgICBTdHJpbmcgdHlwZTsKICAg
ICBTdHJpbmcgZm91bmRhdGlvbjsKICAgICB1bnNpZ25lZCBjb21wb25lbnRJZCB7IDAgfTsKQEAg
LTQ3LDIwICs2NCw2IEBAIHN0cnVjdCBJY2VDYW5kaWRhdGUgewogICAgIFN0cmluZyB0Y3BUeXBl
OwogICAgIFN0cmluZyByZWxhdGVkQWRkcmVzczsKICAgICB1bnNpZ25lZCByZWxhdGVkUG9ydCB7
IDAgfTsKLQotICAgIEljZUNhbmRpZGF0ZSgpID0gZGVmYXVsdDsKLSAgICBJY2VDYW5kaWRhdGUo
U3RyaW5nJiYgdHlwZSwgU3RyaW5nJiYgZm91bmRhdGlvbiwgdW5zaWduZWQgY29tcG9uZW50SWQs
IFN0cmluZyYmIHRyYW5zcG9ydCwgdW5zaWduZWQgbG9uZyBwcmlvcml0eSwgU3RyaW5nJiYgYWRk
cmVzcywgdW5zaWduZWQgcG9ydCwgU3RyaW5nJiYgdGNwVHlwZSwgU3RyaW5nJiYgcmVsYXRlZEFk
ZHJlc3MsIHVuc2lnbmVkIHJlbGF0ZWRQb3J0KQotICAgICAgICA6IHR5cGUoV1RGTW92ZSh0eXBl
KSkKLSAgICAgICAgLCBmb3VuZGF0aW9uKFdURk1vdmUoZm91bmRhdGlvbikpCi0gICAgICAgICwg
Y29tcG9uZW50SWQoY29tcG9uZW50SWQpCi0gICAgICAgICwgdHJhbnNwb3J0KFdURk1vdmUodHJh
bnNwb3J0KSkKLSAgICAgICAgLCBwcmlvcml0eShwcmlvcml0eSkKLSAgICAgICAgLCBhZGRyZXNz
KFdURk1vdmUoYWRkcmVzcykpCi0gICAgICAgICwgcG9ydChwb3J0KQotICAgICAgICAsIHRjcFR5
cGUoV1RGTW92ZSh0Y3BUeXBlKSkKLSAgICAgICAgLCByZWxhdGVkQWRkcmVzcyhXVEZNb3ZlKHJl
bGF0ZWRBZGRyZXNzKSkKLSAgICAgICAgLCByZWxhdGVkUG9ydChyZWxhdGVkUG9ydCkKLSAgICB7
IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvU3RyaW5nV2l0aERpcmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9TdHJpbmdXaXRoRGlyZWN0aW9uLmgKaW5kZXggNmRjODdkNzY1NGUzOTc3
N2Q0OTRlMGQ0ZTNhNGM0MWZjMjA4ZWUyZi4uNDcyN2E5ZjdhN2VkZTI4Y2NjYTg0YmUyYjQxOWM5
MmQ2NTMyMjg4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9TdHJp
bmdXaXRoRGlyZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9TdHJp
bmdXaXRoRGlyZWN0aW9uLmgKQEAgLTQ2LDkgKzQ2LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IC8vIHRvIHRoZSBzdHJpbmcuCiAKIHN0cnVjdCBTdHJpbmdXaXRoRGlyZWN0aW9uIHsKKyNpZiAh
Q09NUElMRVJfU1VQUE9SVFMoTlNETUlfRk9SX0FHR1JFR0FURVMpCiAgICAgU3RyaW5nV2l0aERp
cmVjdGlvbigpID0gZGVmYXVsdDsKLSAgICBTdHJpbmdXaXRoRGlyZWN0aW9uKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikgOiBzdHJpbmcgeyBzdHJpbmcgfSwg
ZGlyZWN0aW9uIHsgZGlyZWN0aW9uIH0geyB9Ci0gICAgU3RyaW5nV2l0aERpcmVjdGlvbihTdHJp
bmcmJiBzdHJpbmcsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKSA6IHN0cmluZyB7IFdURk1vdmUo
c3RyaW5nKSB9LCBkaXJlY3Rpb24geyBkaXJlY3Rpb24gfSB7IH0KKyAgICBTdHJpbmdXaXRoRGly
ZWN0aW9uKFN0cmluZyBzdHJpbmcsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKQorICAgICAgICA6
IHN0cmluZyB7IFdURk1vdmUoc3RyaW5nKSB9CisgICAgICAgICwgZGlyZWN0aW9uIHsgZGlyZWN0
aW9uIH0KKyAgICB7CisgICAgfQorI2VuZGlmCiAgICAgU3RyaW5nIHN0cmluZzsKICAgICBUZXh0
RGlyZWN0aW9uIGRpcmVjdGlvbiB7IExUUiB9OwogfTsKQEAgLTY2LDggKzcxLDggQEAgaW5saW5l
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiBhLCBjb25zdCBTdHJp
bmdXaXRoRGlyZWN0aW9uJgogaW5saW5lIFN0cmluZ1dpdGhEaXJlY3Rpb24gdHJ1bmNhdGVGcm9t
RW5kKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHN0cmluZywgdW5zaWduZWQgbWF4TGVuZ3Ro
KQogewogICAgIGlmIChzdHJpbmcuZGlyZWN0aW9uID09IExUUikKLSAgICAgICAgcmV0dXJuIFN0
cmluZ1dpdGhEaXJlY3Rpb24oc3RyaW5nLnN0cmluZy5sZWZ0KG1heExlbmd0aCksIExUUik7Ci0g
ICAgcmV0dXJuIFN0cmluZ1dpdGhEaXJlY3Rpb24oc3RyaW5nLnN0cmluZy5yaWdodChtYXhMZW5n
dGgpLCBSVEwpOworICAgICAgICByZXR1cm4geyBzdHJpbmcuc3RyaW5nLmxlZnQobWF4TGVuZ3Ro
KSwgTFRSIH07CisgICAgcmV0dXJuIHsgc3RyaW5nLnN0cmluZy5yaWdodChtYXhMZW5ndGgpLCBS
VEwgfTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVVcGRh
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVXBkYXRlLmgKaW5kZXggNzA4MTU1ZDFj
MmFkNmEzMDI3YTc2MzhhZDZkMjAwZDI5Y2ZjOWM3NC4uYmJmYTI0MjE1ZGMyNTA2ZDYyYjQ0YmRm
ZmZiZjQzMjc3NjYxZDNhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVV
cGRhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVVwZGF0ZS5oCkBAIC00Mywy
MyArNDMsMjkgQEAgY2xhc3MgVGV4dDsKIG5hbWVzcGFjZSBTdHlsZSB7CiAKIHN0cnVjdCBFbGVt
ZW50VXBkYXRlIHsKKyNpZiAhQ09NUElMRVJfU1VQUE9SVFMoTlNETUlfRk9SX0FHR1JFR0FURVMp
CiAgICAgRWxlbWVudFVwZGF0ZSgpID0gZGVmYXVsdDsKICAgICBFbGVtZW50VXBkYXRlKHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gc3R5bGUsIENoYW5nZSBjaGFuZ2UsIGJvb2wgcmVjb21w
b3NpdGVMYXllcikKLSAgICAgICAgOiBzdHlsZShXVEZNb3ZlKHN0eWxlKSkKLSAgICAgICAgLCBj
aGFuZ2UoY2hhbmdlKQotICAgICAgICAsIHJlY29tcG9zaXRlTGF5ZXIocmVjb21wb3NpdGVMYXll
cikKLSAgICB7IH0KKyAgICAgICAgOiBzdHlsZSB7IFdURk1vdmUoc3R5bGUpIH0KKyAgICAgICAg
LCBjaGFuZ2UgeyBjaGFuZ2UgfQorICAgICAgICAsIHJlY29tcG9zaXRlTGF5ZXIgeyByZWNvbXBv
c2l0ZUxheWVyIH0KKyAgICB7CisgICAgfQorI2VuZGlmCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiBzdHlsZTsKICAgICBDaGFuZ2UgY2hhbmdlIHsgTm9DaGFuZ2UgfTsKICAgICBi
b29sIHJlY29tcG9zaXRlTGF5ZXIgeyBmYWxzZSB9OwogfTsKIAogc3RydWN0IFRleHRVcGRhdGUg
eworI2lmICFDT01QSUxFUl9TVVBQT1JUUyhOU0RNSV9GT1JfQUdHUkVHQVRFUykKICAgICBUZXh0
VXBkYXRlKCkgPSBkZWZhdWx0OwogICAgIFRleHRVcGRhdGUodW5zaWduZWQgb2Zmc2V0LCB1bnNp
Z25lZCBsZW5ndGgpCi0gICAgICAgIDogb2Zmc2V0KG9mZnNldCkKLSAgICAgICAgLCBsZW5ndGgo
bGVuZ3RoKQotICAgIHsgfQorICAgICAgICA6IG9mZnNldCB7IG9mZnNldCB9CisgICAgICAgICwg
bGVuZ3RoIHsgbGVuZ3RoIH0KKyAgICB7CisgICAgfQorI2VuZGlmCiAKICAgICB1bnNpZ25lZCBv
ZmZzZXQgeyAwIH07CiAgICAgdW5zaWduZWQgbGVuZ3RoIHsgc3RkOjpudW1lcmljX2xpbWl0czx1
bnNpZ25lZD46Om1heCgpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0JQ
bGF0Zm9ybS5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9CUGxhdGZvcm0uaAppbmRleCA1ZmE5
ZWY0OWI4YjY1OTk2MDUyMmRlNzVmMzAwYTc2OWYyMjM0ZTBjLi5lNDRiY2IzOTMxOWFjOTcyMWNl
MWFlOWIxYmExZjM4MTAxNmExN2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0JQbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQlBsYXRmb3JtLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjIs
NiArNjIsMTYgQEAKIC8qIEJVU0UoKSAtIHVzZSBhIHBhcnRpY3VsYXIgdGhpcmQtcGFydHkgbGli
cmFyeSBvciBvcHRpb25hbCBPUyBzZXJ2aWNlICovCiAjZGVmaW5lIEJVU0UoRkVBVFVSRSkgKGRl
ZmluZWQgQlVTRV8jI0ZFQVRVUkUgJiYgQlVTRV8jI0ZFQVRVUkUpCiAKKy8qID09PT0gQ29tcGls
ZXIgYWRhcHRhdGlvbiBtYWNyb3M6IHRoZXNlIGRlc2NyaWJlIHRoZSBjYXBhYmlsaXRpZXMgb2Yg
dGhlIGNvbXBpbGVyLiA9PT09ICovCisKKy8qIEJDT01QSUxFUl9TVVBQT1JUUygpIC0gY2hlY2sg
Zm9yIGEgY29tcGlsZXIgZmVhdHVyZSAqLworI2RlZmluZSBCQ09NUElMRVJfU1VQUE9SVFMoRkVB
VFVSRSkgKGRlZmluZWQgQkNPTVBJTEVSX1NVUFBPUlRTXyMjRkVBVFVSRSAmJiBCQ09NUElMRVJf
U1VQUE9SVFNfIyNGRUFUVVJFKQorCisvKiBCQ09NUElMRVJfU1VQUE9SVFMoTlNETUlfRk9SX0FH
R1JFR0FURVMpIC0gY29tcGlsZXIgc3VwcG9ydHMgbm9uLXN0YXRpYyBkYXRhIG1lbWJlciBpbml0
aWFsaXplcnMgZm9yIGFnZ3JlZ2F0ZXMgKi8KKyNpZiBkZWZpbmVkKF9fY3BwX2FnZ3JlZ2F0ZV9u
c2RtaSkgJiYgX19jcHBfYWdncmVnYXRlX25zZG1pID49IDIwMTMwNAorI2RlZmluZSBCQ09NUElM
RVJfU1VQUE9SVFNfTlNETUlfRk9SX0FHR1JFR0FURVMgMQorI2VuZGlmCisKIC8qID09PT0gUGxh
dGZvcm0gYWRhcHRhdGlvbiBtYWNyb3M6IHRoZXNlIGRlc2NyaWJlIHByb3BlcnRpZXMgb2YgdGhl
IHRhcmdldCBlbnZpcm9ubWVudC4gPT09PSAqLwogCiAvKiBCQ1BVKCkgLSB0aGUgdGFyZ2V0IENQ
VSBhcmNoaXRlY3R1cmUgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvTGlz
dC5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9MaXN0LmgKaW5kZXggOGRlN2U0N2QzMjkwMjZl
Mjk5YmJlYjM3MGQwMjFjMzgyZjM0N2FhZC4uNDgxNzNjODIyMTBhYjBhMzQ2ZjdkYjk3ODJkNjA2
M2M4YzcxNDE3NiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9MaXN0LmgKKysr
IGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9MaXN0LmgKQEAgLTMwLDEyICszMCwxNCBAQCBuYW1l
c3BhY2UgYm1hbGxvYyB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgTGlzdE5vZGUg
eworI2lmICFCQ09NUElMRVJfU1VQUE9SVFMoTlNETUlfRk9SX0FHR1JFR0FURVMpCiAgICAgTGlz
dE5vZGUoKSA9IGRlZmF1bHQ7CiAgICAgTGlzdE5vZGUoTGlzdE5vZGU8VD4qIHByZXYsIExpc3RO
b2RlPFQ+KiBuZXh0KQotICAgICAgICA6IHByZXYocHJldikKLSAgICAgICAgLCBuZXh0KG5leHQp
CisgICAgICAgIDogcHJldiB7IHByZXYgfQorICAgICAgICAsIG5leHQgeyBuZXh0IH0KICAgICB7
CiAgICAgfQorI2VuZGlmCiAKICAgICBMaXN0Tm9kZTxUPiogcHJldiB7IG51bGxwdHIgfTsKICAg
ICBMaXN0Tm9kZTxUPiogbmV4dCB7IG51bGxwdHIgfTsKQEAgLTQ2LDExICs0OCwxMyBAQCBjbGFz
cyBMaXN0IHsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJs
ZTxUPjo6dmFsdWUsICJMaXN0IG11c3QgaGF2ZSBhIHRyaXZpYWwgZGVzdHJ1Y3Rvci4iKTsKIAog
ICAgIHN0cnVjdCBpdGVyYXRvciB7CisjaWYgIUJDT01QSUxFUl9TVVBQT1JUUyhOU0RNSV9GT1Jf
QUdHUkVHQVRFUykKICAgICAgICAgaXRlcmF0b3IoKSA9IGRlZmF1bHQ7CiAgICAgICAgIGl0ZXJh
dG9yKExpc3ROb2RlPFQ+KiBub2RlKQogICAgICAgICAgICAgOiBtX25vZGUobm9kZSkKICAgICAg
ICAgewogICAgICAgICB9CisjZW5kaWYKIAogICAgICAgICBUKiBvcGVyYXRvciooKSB7IHJldHVy
biBzdGF0aWNfY2FzdDxUKj4obV9ub2RlKTsgfQogICAgICAgICBUKiBvcGVyYXRvci0+KCkgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8VCo+KG1fbm9kZSk7IH0KQEAgLTYzLDcgKzY3LDcgQEAgY2xhc3Mg
TGlzdCB7CiAgICAgICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgICAgIH0KICAgICAgICAgCi0g
ICAgICAgIExpc3ROb2RlPFQ+KiBtX25vZGUgeyB9OworICAgICAgICBMaXN0Tm9kZTxUPiogbV9u
b2RlIHsgbnVsbHB0ciB9OwogICAgIH07CiAKIHB1YmxpYzoK
</data>

          </attachment>
      

    </bug>

</bugzilla>