<?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>131135</bug_id>
          
          <creation_ts>2014-04-02 15:58:38 -0700</creation_ts>
          <short_desc>Introduce LockHistory and LockBackForwardList enums to use in place of bools</short_desc>
          <delta_ts>2014-04-02 17:51:37 -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>History</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Rowe (bdash)">mrowe</reporter>
          <assigned_to name="Mark Rowe (bdash)">mrowe</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>996885</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2014-04-02 15:58:38 -0700</bug_when>
    <thetext>The lockHistory and lockBackForwardList arguments are often passed using literals at the call site. Using multiple consecutive boolean arguments makes it hard to keep track of which is which.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996890</commentid>
    <comment_count>1</comment_count>
      <attachid>228437</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2014-04-02 16:11:09 -0700</bug_when>
    <thetext>Created attachment 228437
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996892</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-02 16:13:01 -0700</bug_when>
    <thetext>Attachment 228437 did not pass style-queue:


ERROR: Source/WebCore/loader/FormSubmission.h:92:  The parameter name &quot;event&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/loader/FrameLoader.h:110:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 2 in 24 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>996905</commentid>
    <comment_count>3</comment_count>
      <attachid>228444</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2014-04-02 16:27:53 -0700</bug_when>
    <thetext>Created attachment 228444
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996906</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-02 16:29:31 -0700</bug_when>
    <thetext>Attachment 228444 did not pass style-queue:


ERROR: Source/WebCore/loader/FormSubmission.h:92:  The parameter name &quot;event&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/loader/FrameLoader.h:110:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 2 in 25 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>996933</commentid>
    <comment_count>5</comment_count>
      <attachid>228444</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-04-02 17:17:15 -0700</bug_when>
    <thetext>Comment on attachment 228444
Patch

OK, r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996942</commentid>
    <comment_count>6</comment_count>
      <attachid>228444</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-02 17:51:34 -0700</bug_when>
    <thetext>Comment on attachment 228444
Patch

Clearing flags on attachment: 228444

Committed r166684: &lt;http://trac.webkit.org/changeset/166684&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996943</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-02 17:51:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228437</attachid>
            <date>2014-04-02 16:11:09 -0700</date>
            <delta_ts>2014-04-02 16:27:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-131135-20140402161048.patch</filename>
            <type>text/plain</type>
            <size>51682</size>
            <attacher name="Mark Rowe (bdash)">mrowe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2NjI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzdiMjkzNTJjYzA4NWJh
NWUxZDc0YWNkZmRmZGI2YzQ2YjNiZWRjMS4uYWZmNjE1Y2EzM2Q4OTM3MTU5MDBlNTBmYWUyNDFi
YzBmZWNmM2Q4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDE0LTA0LTAyICBNYXJr
IFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CisKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9i
LzEzMTEzNT4gSW50cm9kdWNlIExvY2tIaXN0b3J5IGFuZCBMb2NrQmFja0ZvcndhcmRMaXN0IGVu
dW1zIHRvIHVzZSBpbiBwbGFjZSBvZiBib29scy4KKworICAgICAgICBUaGVzZSBhcmd1bWVudHMg
YXJlIG9mdGVuIHBhc3NlZCB1c2luZyBsaXRlcmFscyBhdCB0aGUgY2FsbCBzaXRlLCB3aGVyZSB0
aGUgdXNlIG9mIGJvb2xzIHNldmVyZWx5IGhpbmRlcnMKKyAgICAgICAgdGhlIHJlYWRhYmlsaXR5
IG9mIHRoZSBjb2RlLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6aGFuZGxlQ2xpY2sp
OgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxGb3JtRWxlbWVudDo6c3VibWl0KToKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZUVsZW1l
bnRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjpvcGVu
VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjpzZXRMb2NhdGlv
bik6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6Om9wZW5Jbk5ld1RhYik6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JQYWdlQWdlbnQ6Om5hdmlnYXRlKToKKyAgICAgICAgKiBsb2FkZXIvRm9ybVN1Ym1p
c3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybVN1Ym1pc3Npb246OkZvcm1TdWJtaXNz
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1TdWJtaXNzaW9uOjpjcmVhdGUpOgorICAgICAg
ICAqIGxvYWRlci9Gb3JtU3VibWlzc2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybVN1Ym1p
c3Npb246OmxvY2tIaXN0b3J5KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNoYW5nZUxvY2F0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjp1cmxTZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6bG9hZFVSTEludG9DaGlsZEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpsb2FkRnJhbWVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpsb2FkVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkV2l0aE5h
dmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNsaWVudFJl
ZGlyZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVz
dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOZXdX
aW5kb3dQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWREaWZmZXJl
bnREb2N1bWVudEl0ZW0pOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAg
ICAqIGxvYWRlci9GcmFtZUxvYWRlclR5cGVzLmg6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRp
b25TY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkTmF2aWdhdGlvbjo6
U2NoZWR1bGVkTmF2aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWROYXZpZ2F0
aW9uOjpsb2NrSGlzdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWROYXZpZ2F0aW9u
Ojpsb2NrQmFja0ZvcndhcmRMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZFVSTE5h
dmlnYXRpb246OlNjaGVkdWxlZFVSTE5hdmlnYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2No
ZWR1bGVkUmVkaXJlY3Q6OlNjaGVkdWxlZFJlZGlyZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNj
aGVkdWxlZExvY2F0aW9uQ2hhbmdlOjpTY2hlZHVsZWRMb2NhdGlvbkNoYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjpTY2hlZHVsZWRSZWZyZXNoOjpTY2hlZHVsZWRSZWZyZXNoKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjaGVkdWxlZEhpc3RvcnlOYXZpZ2F0aW9uOjpTY2hlZHVsZWRIaXN0b3J5TmF2
aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRGb3JtU3VibWlzc2lvbjo6U2No
ZWR1bGVkRm9ybVN1Ym1pc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvblNjaGVk
dWxlcjo6c2NoZWR1bGVSZWRpcmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uU2No
ZWR1bGVyOjptdXN0TG9ja0JhY2tGb3J3YXJkTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpOYXZp
Z2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlRm9ybVN1Ym1pc3Npb24pOgorICAgICAg
ICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmg6CisgICAgICAgICogbG9hZGVyL1N1YmZy
YW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YmZyYW1lTG9hZGVyOjpyZXF1ZXN0
RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6U3ViZnJhbWVMb2FkZXI6OnJlcXVlc3RPYmplY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U3ViZnJhbWVMb2FkZXI6OmxvYWRPclJlZGlyZWN0U3ViZnJh
bWUpOgorICAgICAgICAqIGxvYWRlci9TdWJmcmFtZUxvYWRlci5oOgorICAgICAgICAqIHBhZ2Uv
Q29udGV4dE1lbnVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZW5OZXdXaW5k
b3cpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVu
dUl0ZW1TZWxlY3RlZCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RE9NV2luZG93OjpzZXRMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpET01X
aW5kb3c6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6Om9wZW4p
OgorICAgICAgICAqIHN2Zy9TVkdBRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisKIDIwMTQtMDQtMDEgIEpvbiBIb25leWN1
dHQgIDxqaG9uZXljdXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBDcmFzaCBpbiBXZWJDb3JlOjpS
ZW5kZXJMYXllcjo6RmlsdGVySW5mbzo6dXBkYXRlUmVmZXJlbmNlRmlsdGVyQ2xpZW50cwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCmluZGV4IDYyODQ3MGI4ZDIyMWEwNzA0NDFkNjk1NDg5OThiMDE2ZjYyOGNlYWQu
LjA2YzVhZjA3ZDkxYTBjMzM2YWFhNGYzYjZlZDA0Zjg1YTRkYzMxMWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNC0wNC0wMiAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUu
Y29tPgorCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMzExMzU+IEludHJvZHVjZSBM
b2NrSGlzdG9yeSBhbmQgTG9ja0JhY2tGb3J3YXJkTGlzdCBlbnVtcyB0byB1c2UgaW4gcGxhY2Ug
b2YgYm9vbHMuCisKKyAgICAgICAgVGhlc2UgYXJndW1lbnRzIGFyZSBvZnRlbiBwYXNzZWQgdXNp
bmcgbGl0ZXJhbHMgYXQgdGhlIGNhbGwgc2l0ZSwgd2hlcmUgdGhlIHVzZSBvZiBib29scyBzZXZl
cmVseSBoaW5kZXJzCisgICAgICAgIHRoZSByZWFkYWJpbGl0eSBvZiB0aGUgY29kZS4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2Vi
UERGVmlldy5tbToKKyAgICAgICAgKC1bV2ViUERGVmlldyBQREZWaWV3V2lsbENsaWNrT25MaW5r
OndpdGhVUkw6XSk6CisKIDIwMTQtMDQtMDEgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFw
cGxlLmNvbT4KIAogICAgICAgICBNaWdyYXRlIG1vcmUgaGVhZGVycwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDBh
MTZmZmJlMjQ4ZDUwMzgyMGVjZGE1YWQ5N2QzYjU2YmI4NGQ3OGIuLjJlYTJkMjQxMTc3OGYyNjVl
ZDIwMGZkY2EyYTYzZjBlODU5NDdiNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAx
NC0wNC0wMiAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgorCisgICAgICAgIDxodHRwczov
L3dlYmtpdC5vcmcvYi8xMzExMzU+IEludHJvZHVjZSBMb2NrSGlzdG9yeSBhbmQgTG9ja0JhY2tG
b3J3YXJkTGlzdCBlbnVtcyB0byB1c2UgaW4gcGxhY2Ugb2YgYm9vbHMuCisKKyAgICAgICAgVGhl
c2UgYXJndW1lbnRzIGFyZSBvZnRlbiBwYXNzZWQgdXNpbmcgbGl0ZXJhbHMgYXQgdGhlIGNhbGwg
c2l0ZSwgd2hlcmUgdGhlIHVzZSBvZiBib29scyBzZXZlcmVseSBoaW5kZXJzCisgICAgICAgIHRo
ZSByZWFkYWJpbGl0eSBvZiB0aGUgY29kZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1t
OgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmNsaWNrZWRMaW5rKToKKwogMjAxNC0wNC0w
MSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFN0dWIg
b3V0IG1vcmUgV0tOYXZpZ2F0aW9uIHByb3BlcnRpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXgg
MDFiZWYwMjYwNjMwZTc2YWQ4ZjA0MWU0MGM0ZGJhZWU3MGJlZGRlOC4uMjIwZDUzZTM4ODI0ZDYx
YmIzM2FkYjBkODA3MWQzOTAxZmNjMWFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTEzMCwx
MSArMTMwLDExIEBAIF9fWk43V2ViQ29yZTExRmlsZUNob29zZXIxMWNob29zZUZpbGVzRVJLTjNX
VEY2VmVjdG9ySU5TMV82U3RyaW5nRUxtMEVOUzFfMTVDcmFzCiBfX1pON1dlYkNvcmUxMUZpbGVD
aG9vc2VyRDFFdgogX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjExbG9hZEFyY2hpdmVFTjNXVEYx
MFBhc3NSZWZQdHJJTlNfN0FyY2hpdmVFRUUKIF9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxMXNo
b3VsZENsb3NlRXYKLV9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxMXVybFNlbGVjdGVkRVJLTlNf
M1VSTEVSS04zV1RGNlN0cmluZ0VOUzRfMTBQYXNzUmVmUHRySU5TXzVFdmVudEVFRWJiTlNfMThT
aG91bGRTZW5kUmVmZXJyZXJFCitfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMTF1cmxTZWxlY3Rl
ZEVSS05TXzNVUkxFUktOM1dURjZTdHJpbmdFTlM0XzEwUGFzc1JlZlB0cklOU181RXZlbnRFRUVO
U18xMUxvY2tIaXN0b3J5RU5TXzE5TG9ja0JhY2tGb3J3YXJkTGlzdEVOU18xOFNob3VsZFNlbmRS
ZWZlcnJlckUKIF9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxNGRldGFjaENoaWxkcmVuRXYKIF9f
Wk43V2ViQ29yZTExRnJhbWVMb2FkZXIxNHN0b3BBbGxMb2FkZXJzRU5TXzI2Q2xlYXJQcm92aXNp
b25hbEl0ZW1Qb2xpY3lFCiBfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMTZkZXRhY2hGcm9tUGFy
ZW50RXYKLV9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxNmxvYWRGcmFtZVJlcXVlc3RFUktOU18x
NkZyYW1lTG9hZFJlcXVlc3RFYmJOM1dURjEwUGFzc1JlZlB0cklOU181RXZlbnRFRUVOUzVfSU5T
XzlGb3JtU3RhdGVFRUVOU18xOFNob3VsZFNlbmRSZWZlcnJlckUKK19fWk43V2ViQ29yZTExRnJh
bWVMb2FkZXIxNmxvYWRGcmFtZVJlcXVlc3RFUktOU18xNkZyYW1lTG9hZFJlcXVlc3RFTlNfMTFM
b2NrSGlzdG9yeUVOU18xOUxvY2tCYWNrRm9yd2FyZExpc3RFTjNXVEYxMFBhc3NSZWZQdHJJTlNf
NUV2ZW50RUVFTlM3X0lOU185Rm9ybVN0YXRlRUVFTlNfMThTaG91bGRTZW5kUmVmZXJyZXJFCiBf
X1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMTdzdG9wRm9yVXNlckNhbmNlbEViCiBfX1pON1dlYkNv
cmUxMUZyYW1lTG9hZGVyMjFsb2FkVVJMSW50b0NoaWxkRnJhbWVFUktOU18zVVJMRVJLTjNXVEY2
U3RyaW5nRVBOU181RnJhbWVFCiBfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMjJmaW5kRnJhbWVG
b3JOYXZpZ2F0aW9uRVJLTjNXVEYxMkF0b21pY1N0cmluZ0VQTlNfOERvY3VtZW50RQpAQCAtMTE5
Niw2ICsxMTk2LDcgQEAgX19aTjdXZWJDb3JlN0ludFJlY3Q5aW50ZXJzZWN0RVJLUzBfCiBfX1pO
N1dlYkNvcmU3SW50UmVjdEMxRVJLTlNfMTBMYXlvdXRSZWN0RQogX19aTjdXZWJDb3JlN0ludFJl
Y3RDMUVSS05TXzlGbG9hdFJlY3RFCiBfX1pON1dlYkNvcmU3SW50U2l6ZUMxRVJLNkNHU2l6ZQor
X19aTjdXZWJDb3JlN0ludFNpemVDMUVSS05TXzlGbG9hdFNpemVFCiBfX1pON1dlYkNvcmU3VGV4
dFJ1bjE5YWxsb3dzUm91bmRpbmdIYWNrc0V2CiBfX1pON1dlYkNvcmU3VGV4dFJ1bjIxc19hbGxv
d3NSb3VuZGluZ0hhY2tzRQogX19aTjdXZWJDb3JlN1RleHRSdW4yMnNldEFsbG93c1JvdW5kaW5n
SGFja3NFYgpAQCAtMTMwNSwxMCArMTMwNiw4IEBAIF9fWk43V2ViQ29yZTlGbG9hdFJlY3Q1dW5p
dGVFUktTMF8KIF9fWk43V2ViQ29yZTlGbG9hdFJlY3Q5aW50ZXJzZWN0RVJLUzBfCiBfX1pON1dl
YkNvcmU5RmxvYXRSZWN0QzFFUks2Q0dSZWN0CiBfX1pON1dlYkNvcmU5RmxvYXRSZWN0QzFFUktO
U183SW50UmVjdEUKLV9fWk5LN1dlYkNvcmU5RmxvYXRSZWN0OGNvbnRhaW5zRVJLTlNfMTBGbG9h
dFBvaW50RU5TMF8xMkNvbnRhaW5zTW9kZUUKIF9fWk43V2ViQ29yZTlGbG9hdFNpemVDMUVSSzZD
R1NpemUKIF9fWk43V2ViQ29yZTlGbG9hdFNpemVDMUVSS05TXzdJbnRTaXplRQotX19aTjdXZWJD
b3JlN0ludFNpemVDMUVSS05TXzlGbG9hdFNpemVFCiBfX1pON1dlYkNvcmU5Rm9udENhY2hlMTBp
bnZhbGlkYXRlRXYKIF9fWk43V2ViQ29yZTlGb250Q2FjaGUxM2ZvbnREYXRhQ291bnRFdgogX19a
TjdXZWJDb3JlOUZvbnRDYWNoZTIxaW5hY3RpdmVGb250RGF0YUNvdW50RXYKQEAgLTE5MDcsNiAr
MTkwNiw3IEBAIF9fWk5LN1dlYkNvcmU4U2V0dGluZ3MyMHBpY3RvZ3JhcGhGb250RmFtaWx5RTEx
VVNjcmlwdENvZGUKIF9fWk5LN1dlYkNvcmU5RE9NV2luZG93MjdwZW5kaW5nVW5sb2FkRXZlbnRM
aXN0ZW5lcnNFdgogX19aTks3V2ViQ29yZTlGbG9hdFF1YWQxMWJvdW5kaW5nQm94RXYKIF9fWk5L
N1dlYkNvcmU5RmxvYXRSZWN0MTBpbnRlcnNlY3RzRVJLUzBfCitfX1pOSzdXZWJDb3JlOUZsb2F0
UmVjdDhjb250YWluc0VSS05TXzEwRmxvYXRQb2ludEVOUzBfMTJDb250YWluc01vZGVFCiBfX1pO
SzdXZWJDb3JlOUZsb2F0UmVjdDhjb250YWluc0VSS1MwXwogX19aTks3V2ViQ29yZTlGbG9hdFJl
Y3RjdjZDR1JlY3RFdgogX19aTks3V2ViQ29yZTlGbG9hdFNpemUxNGRpYWdvbmFsTGVuZ3RoRXYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKaW5kZXggN2NhNzM3YTAz
ZGI4MGFiMWFlNzFkNWYxZTAwOTc5N2NhODBlYjg0Zi4uODcxMWI4MGNkOWIxYzBhOGM2N2I0Y2Y0
NzUyOThlMGJjYjk2YTY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5j
aG9yRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVu
dC5jcHAKQEAgLTU0Nyw3ICs1NDcsNyBAQCB2b2lkIEhUTUxBbmNob3JFbGVtZW50OjpoYW5kbGVD
bGljayhFdmVudCogZXZlbnQpCiAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5zdGFy
dERvd25sb2FkKHJlcXVlc3QsIGZhc3RHZXRBdHRyaWJ1dGUoZG93bmxvYWRBdHRyKSk7CiAgICAg
fSBlbHNlCiAjZW5kaWYKLSAgICAgICAgZnJhbWUtPmxvYWRlcigpLnVybFNlbGVjdGVkKGt1cmws
IHRhcmdldCgpLCBldmVudCwgZmFsc2UsIGZhbHNlLCBoYXNSZWwoUmVsYXRpb25Ob1JlZmVycmVy
KSA/IE5ldmVyU2VuZFJlZmVycmVyIDogTWF5YmVTZW5kUmVmZXJyZXIpOworICAgICAgICBmcmFt
ZS0+bG9hZGVyKCkudXJsU2VsZWN0ZWQoa3VybCwgdGFyZ2V0KCksIGV2ZW50LCBMb2NrSGlzdG9y
eTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBoYXNSZWwoUmVsYXRpb25Ob1JlZmVycmVy
KSA/IE5ldmVyU2VuZFJlZmVycmVyIDogTWF5YmVTZW5kUmVmZXJyZXIpOwogCiAgICAgc2VuZFBp
bmdzKGt1cmwpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4
IDNkYzc2YjViYWZhOTBjOGNhMmEyZTc0ZWY5NGMzMzRjNzAyNGVmNzcuLjYxYWI2YzM0YTJmNjg0
MDVjMTFjMmQyNzg0OGI0M2ExM2Q3ZTJmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
RWxlbWVudC5jcHAKQEAgLTM0Nyw3ICszNDcsNyBAQCB2b2lkIEhUTUxGb3JtRWxlbWVudDo6c3Vi
bWl0KEV2ZW50KiBldmVudCwgYm9vbCBhY3RpdmF0ZVN1Ym1pdEJ1dHRvbiwgYm9vbCBwcm9jZQog
ICAgIGlmIChuZWVkQnV0dG9uQWN0aXZhdGlvbiAmJiBmaXJzdFN1Y2Nlc3NmdWxTdWJtaXRCdXR0
b24pCiAgICAgICAgIGZpcnN0U3VjY2Vzc2Z1bFN1Ym1pdEJ1dHRvbi0+c2V0QWN0aXZhdGVkU3Vi
bWl0KHRydWUpOwogCi0gICAgYm9vbCBsb2NrSGlzdG9yeSA9ICFwcm9jZXNzaW5nVXNlckdlc3R1
cmU7CisgICAgTG9ja0hpc3RvcnkgbG9ja0hpc3RvcnkgPSBwcm9jZXNzaW5nVXNlckdlc3R1cmUg
PyBMb2NrSGlzdG9yeTo6Tm8gOiBMb2NrSGlzdG9yeTo6WWVzOwogICAgIGZyYW1lLT5sb2FkZXIo
KS5zdWJtaXRGb3JtKEZvcm1TdWJtaXNzaW9uOjpjcmVhdGUodGhpcywgbV9hdHRyaWJ1dGVzLCBl
dmVudCwgbG9ja0hpc3RvcnksIGZvcm1TdWJtaXNzaW9uVHJpZ2dlcikpOwogCiAgICAgaWYgKG5l
ZWRCdXR0b25BY3RpdmF0aW9uICYmIGZpcnN0U3VjY2Vzc2Z1bFN1Ym1pdEJ1dHRvbikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAKaW5kZXggNDM4ZjA1Zjdm
ZDdhODRjMmQwNTE5MmMzMjQ0NjhhMzdiOGY5YmUxYS4uNWIxNTFkMjM2OWFmYjc4NDc1YmRlOTQy
ZDdlOTRmZTY3YzI3NmY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJh
bWVFbGVtZW50QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVt
ZW50QmFzZS5jcHAKQEAgLTczLDcgKzczLDcgQEAgYm9vbCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6
aXNVUkxBbGxvd2VkKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBIVE1MRnJh
bWVFbGVtZW50QmFzZTo6b3BlblVSTChib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9y
d2FyZExpc3QpCit2b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpvcGVuVVJMKExvY2tIaXN0b3J5
IGxvY2tIaXN0b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9yd2FyZExpc3QpCiB7
CiAgICAgaWYgKCFpc1VSTEFsbG93ZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTgxLDcgKzE4
MSw3IEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnNldExvY2F0aW9uKGNvbnN0IFN0cmlu
ZyYgc3RyKQogICAgIG1fVVJMID0gQXRvbWljU3RyaW5nKHN0cik7CiAKICAgICBpZiAoaW5Eb2N1
bWVudCgpKQotICAgICAgICBvcGVuVVJMKGZhbHNlLCBmYWxzZSk7CisgICAgICAgIG9wZW5VUkwo
TG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObyk7CiB9CiAKIGJvb2wgSFRN
TEZyYW1lRWxlbWVudEJhc2U6OnN1cHBvcnRzRm9jdXMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oCmluZGV4IGM3YzBhNjQ4MzE2OTc5MTc3ZjlkMGJh
ZDRkZWRmNmFkY2ZjMjZhOTcuLjVkZjc0OWMzYmU1YzE2ZTZjYTIzYjEwZTFjNmNkNjIzMDBjZTNm
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmgKQEAgLTI0
LDYgKzI0LDcgQEAKICNpZm5kZWYgSFRNTEZyYW1lRWxlbWVudEJhc2VfaAogI2RlZmluZSBIVE1M
RnJhbWVFbGVtZW50QmFzZV9oCiAKKyNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5j
bHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIK
IApAQCAtNjQsNyArNjUsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc0ZyYW1lRWxl
bWVudEJhc2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2b2lkIHNl
dE5hbWVBbmRPcGVuVVJMKCk7Ci0gICAgdm9pZCBvcGVuVVJMKGJvb2wgbG9ja0hpc3RvcnkgPSB0
cnVlLCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QgPSB0cnVlKTsKKyAgICB2b2lkIG9wZW5VUkwo
TG9ja0hpc3RvcnkgPSBMb2NrSGlzdG9yeTo6WWVzLCBMb2NrQmFja0ZvcndhcmRMaXN0ID0gTG9j
a0JhY2tGb3J3YXJkTGlzdDo6WWVzKTsKIAogICAgIEF0b21pY1N0cmluZyBtX1VSTDsKICAgICBB
dG9taWNTdHJpbmcgbV9mcmFtZU5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKaW5kZXggYmYxNzkxODQ4
YmIxYmM0ODhhNjE3MzM1NTNjZGNiOTU2YTJkMTMyOC4uNDhhMjYxNzdjZjExY2QxYmJiMmM4ZTAw
YTQ3NmU4ZjMzOTA4MzQyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcApAQCAtMjI0LDcgKzIyNCw3IEBA
IHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6b3BlbkluTmV3VGFiKGNvbnN0IFN0
cmluZyYgdXJsKQogICAgIGZyYW1lLT5wYWdlKCktPnNldE9wZW5lZEJ5RE9NKCk7CiAKICAgICAv
LyBGSVhNRTogV2h5IGRvZXMgb25lIHVzZSBtYWluRnJhbWUgYW5kIHRoZSBvdGhlciBmcmFtZT8K
LSAgICBmcmFtZS0+bG9hZGVyKCkuY2hhbmdlTG9jYXRpb24obWFpbkZyYW1lLmRvY3VtZW50KCkt
PnNlY3VyaXR5T3JpZ2luKCksIGZyYW1lLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTCh1cmwpLCAi
IiwgZmFsc2UsIGZhbHNlKTsKKyAgICBmcmFtZS0+bG9hZGVyKCkuY2hhbmdlTG9jYXRpb24obWFp
bkZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIGZyYW1lLT5kb2N1bWVudCgpLT5j
b21wbGV0ZVVSTCh1cmwpLCAiIiwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0
OjpObyk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6bW92ZVdpbmRv
d0J5KGZsb2F0IHgsIGZsb2F0IHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IGVhOGEzZjMyN2MyMTI4Njk2ZTU2OTBlZTk3MjMwMzg0
YTU1MmM0MWIuLjQ1YmYwZWVlODQ2Zjc3MDllZDQyZTI3NGZkMTE3Zjk2NDgyNDE4ZGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC00
MjksNyArNDI5LDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6Om5hdmlnYXRlKEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgaW5k
aWNhdG9yKERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwogICAgIEZyYW1lJiBmcmFt
ZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7Ci0gICAgZnJhbWUubG9hZGVyKCkuY2hhbmdlTG9jYXRp
b24oZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgZnJhbWUuZG9jdW1lbnQoKS0+
Y29tcGxldGVVUkwodXJsKSwgIiIsIGZhbHNlLCBmYWxzZSk7CisgICAgZnJhbWUubG9hZGVyKCku
Y2hhbmdlTG9jYXRpb24oZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgZnJhbWUu
ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsKSwgIiIsIExvY2tIaXN0b3J5OjpObywgTG9ja0Jh
Y2tGb3J3YXJkTGlzdDo6Tm8pOwogfQogCiBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpQYWdlOjpDb29raWU+IGJ1aWxkT2JqZWN0Rm9yQ29va2llKGNvbnN0IENvb2tp
ZSYgY29va2llKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNz
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKaW5kZXgg
OTU0ZGRkNDk2ZDBiYWYyZWZjMWQ2OTRhNjRlY2RkYWQyM2Q2ZDRhNi4uOTMxODgzNmY4NjUxMzg0
YzFjYzVhYmQ0MGM4NWJjMTg3M2VkNzAxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1
Ym1pc3Npb24uY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBGb3JtU3VibWlzc2lvbjo6QXR0
cmlidXRlczo6Y29weUZyb20oY29uc3QgQXR0cmlidXRlcyYgb3RoZXIpCiAgICAgbV9hY2NlcHRD
aGFyc2V0ID0gb3RoZXIubV9hY2NlcHRDaGFyc2V0OwogfQogCi1pbmxpbmUgRm9ybVN1Ym1pc3Np
b246OkZvcm1TdWJtaXNzaW9uKE1ldGhvZCBtZXRob2QsIGNvbnN0IFVSTCYgYWN0aW9uLCBjb25z
dCBTdHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUGFzc1JlZlB0cjxG
b3JtU3RhdGU+IHN0YXRlLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBkYXRhLCBjb25zdCBTdHJpbmcm
IGJvdW5kYXJ5LCBib29sIGxvY2tIaXN0b3J5LCBQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKK2lu
bGluZSBGb3JtU3VibWlzc2lvbjo6Rm9ybVN1Ym1pc3Npb24oTWV0aG9kIG1ldGhvZCwgY29uc3Qg
VVJMJiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gc3RhdGUsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGRh
dGEsIGNvbnN0IFN0cmluZyYgYm91bmRhcnksIExvY2tIaXN0b3J5IGxvY2tIaXN0b3J5LCBQYXNz
UmVmUHRyPEV2ZW50PiBldmVudCkKICAgICA6IG1fbWV0aG9kKG1ldGhvZCkKICAgICAsIG1fYWN0
aW9uKGFjdGlvbikKICAgICAsIG1fdGFyZ2V0KHRhcmdldCkKQEAgLTEzNyw3ICsxMzcsNyBAQCBp
bmxpbmUgRm9ybVN1Ym1pc3Npb246OkZvcm1TdWJtaXNzaW9uKE1ldGhvZCBtZXRob2QsIGNvbnN0
IFVSTCYgYWN0aW9uLCBjb25zdCBTdAogewogfQogCi1QYXNzUmVmUHRyPEZvcm1TdWJtaXNzaW9u
PiBGb3JtU3VibWlzc2lvbjo6Y3JlYXRlKEhUTUxGb3JtRWxlbWVudCogZm9ybSwgY29uc3QgQXR0
cmlidXRlcyYgYXR0cmlidXRlcywgUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQsIGJvb2wgbG9ja0hp
c3RvcnksIEZvcm1TdWJtaXNzaW9uVHJpZ2dlciB0cmlnZ2VyKQorUGFzc1JlZlB0cjxGb3JtU3Vi
bWlzc2lvbj4gRm9ybVN1Ym1pc3Npb246OmNyZWF0ZShIVE1MRm9ybUVsZW1lbnQqIGZvcm0sIGNv
bnN0IEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50LCBMb2Nr
SGlzdG9yeSBsb2NrSGlzdG9yeSwgRm9ybVN1Ym1pc3Npb25UcmlnZ2VyIHRyaWdnZXIpCiB7CiAg
ICAgQVNTRVJUKGZvcm0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9y
bVN1Ym1pc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5oCmlu
ZGV4IGMyZjgzZDUzZjg5MTUwZWY5MWFmMDllZjNjZDlkNjMxOTQ5YWZkNzkuLjgzMTVmMDIzNDNi
YTA3MTZmYTUwNjlmYTc4NmY4ODk2N2UyMmJmOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Gb3JtU3VibWlzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3Jt
U3VibWlzc2lvbi5oCkBAIC0zMiw2ICszMiw3IEBACiAjZGVmaW5lIEZvcm1TdWJtaXNzaW9uX2gK
IAogI2luY2x1ZGUgIkZvcm1TdGF0ZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIK
ICNpbmNsdWRlICJVUkwuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODgsNyArODksNyBA
QCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyBtX2FjY2VwdENoYXJzZXQ7CiAgICAgfTsKIAotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEZvcm1TdWJtaXNzaW9uPiBjcmVhdGUoSFRNTEZvcm1FbGVtZW50
KiwgY29uc3QgQXR0cmlidXRlcyYsIFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50LCBib29sIGxvY2tI
aXN0b3J5LCBGb3JtU3VibWlzc2lvblRyaWdnZXIpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZv
cm1TdWJtaXNzaW9uPiBjcmVhdGUoSFRNTEZvcm1FbGVtZW50KiwgY29uc3QgQXR0cmlidXRlcyYs
IFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50LCBMb2NrSGlzdG9yeSwgRm9ybVN1Ym1pc3Npb25Ucmln
Z2VyKTsKIAogICAgIHZvaWQgcG9wdWxhdGVGcmFtZUxvYWRSZXF1ZXN0KEZyYW1lTG9hZFJlcXVl
c3QmKTsKICAgICAKQEAgLTEwMiw3ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgRm9ybVN0YXRlKiBz
dGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybVN0YXRlLmdldCgpOyB9CiAgICAgRm9ybURhdGEq
IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1EYXRhLmdldCgpOyB9CiAgICAgY29uc3QgU3Ry
aW5nIGJvdW5kYXJ5KCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZGFyeTsgfQotICAgIGJvb2wgbG9j
a0hpc3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2xvY2tIaXN0b3J5OyB9CisgICAgTG9ja0hpc3Rv
cnkgbG9ja0hpc3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2xvY2tIaXN0b3J5OyB9CiAgICAgRXZl
bnQqIGV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9ldmVudC5nZXQoKTsgfQogCiAgICAgY29uc3Qg
U3RyaW5nJiByZWZlcnJlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJyZXI7IH0KQEAgLTExMSw3
ICsxMTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmln
aW4pIHsgbV9vcmlnaW4gPSBvcmlnaW47IH0KIAogcHJpdmF0ZToKLSAgICBGb3JtU3VibWlzc2lv
bihNZXRob2QsIGNvbnN0IFVSTCYgYWN0aW9uLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBQYXNzUmVmUHRyPEZv
cm1EYXRhPiwgY29uc3QgU3RyaW5nJiBib3VuZGFyeSwgYm9vbCBsb2NrSGlzdG9yeSwgUGFzc1Jl
ZlB0cjxFdmVudD4pOworICAgIEZvcm1TdWJtaXNzaW9uKE1ldGhvZCwgY29uc3QgVVJMJiBhY3Rp
b24sIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBQYXNz
UmVmUHRyPEZvcm1TdGF0ZT4sIFBhc3NSZWZQdHI8Rm9ybURhdGE+LCBjb25zdCBTdHJpbmcmIGJv
dW5kYXJ5LCBMb2NrSGlzdG9yeSwgUGFzc1JlZlB0cjxFdmVudD4pOwogCiAgICAgLy8gRklYTUU6
IEhvbGQgYW4gaW5zdGFuY2Ugb2YgQXR0cmlidXRlcyBpbnN0ZWFkIG9mIGluZGl2aWR1YWwgbWVt
YmVycy4KICAgICBNZXRob2QgbV9tZXRob2Q7CkBAIC0xMjEsNyArMTIyLDcgQEAgcHJpdmF0ZToK
ICAgICBSZWZQdHI8Rm9ybVN0YXRlPiBtX2Zvcm1TdGF0ZTsKICAgICBSZWZQdHI8Rm9ybURhdGE+
IG1fZm9ybURhdGE7CiAgICAgU3RyaW5nIG1fYm91bmRhcnk7Ci0gICAgYm9vbCBtX2xvY2tIaXN0
b3J5OworICAgIExvY2tIaXN0b3J5IG1fbG9ja0hpc3Rvcnk7CiAgICAgUmVmUHRyPEV2ZW50PiBt
X2V2ZW50OwogICAgIFN0cmluZyBtX3JlZmVycmVyOwogICAgIFN0cmluZyBtX29yaWdpbjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGUyYjE2YzJmMWJiNTAyMWM5N2Ux
YmY0OTYzN2QwMDJiNDQ3NGI2NzguLmFjZWY3MzBiNzQwZjUwMzBlNTE4NDE1ZWI2YjRlZTA1Mjc5
ZmIxN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMzE3LDEzICsz
MTcsMTMgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0RGVmZXJzTG9hZGluZyhib29sIGRlZmVycykK
ICAgICB9CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OmNoYW5nZUxvY2F0aW9uKFNlY3VyaXR5T3Jp
Z2luKiBzZWN1cml0eU9yaWdpbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJy
ZXIsIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCwgYm9vbCByZWZy
ZXNoKQordm9pZCBGcmFtZUxvYWRlcjo6Y2hhbmdlTG9jYXRpb24oU2VjdXJpdHlPcmlnaW4qIHNl
Y3VyaXR5T3JpZ2luLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgTG9j
a0hpc3RvcnkgbG9ja0hpc3RvcnksIExvY2tCYWNrRm9yd2FyZExpc3QgbG9ja0JhY2tGb3J3YXJk
TGlzdCwgYm9vbCByZWZyZXNoKQogewogICAgIHVybFNlbGVjdGVkKEZyYW1lTG9hZFJlcXVlc3Qo
c2VjdXJpdHlPcmlnaW4sIFJlc291cmNlUmVxdWVzdCh1cmwsIHJlZmVycmVyLCByZWZyZXNoID8g
UmVsb2FkSWdub3JpbmdDYWNoZURhdGEgOiBVc2VQcm90b2NvbENhY2hlUG9saWN5KSwgIl9zZWxm
IiksCiAgICAgICAgIDAsIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBNYXliZVNl
bmRSZWZlcnJlciwgUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMKTsKIH0KIAotdm9pZCBG
cmFtZUxvYWRlcjo6dXJsU2VsZWN0ZWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGFz
c2VkVGFyZ2V0LCBQYXNzUmVmUHRyPEV2ZW50PiB0cmlnZ2VyaW5nRXZlbnQsIGJvb2wgbG9ja0hp
c3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCwgU2hvdWxkU2VuZFJlZmVycmVyIHNob3Vs
ZFNlbmRSZWZlcnJlcikKK3ZvaWQgRnJhbWVMb2FkZXI6OnVybFNlbGVjdGVkKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHBhc3NlZFRhcmdldCwgUGFzc1JlZlB0cjxFdmVudD4gdHJpZ2dl
cmluZ0V2ZW50LCBMb2NrSGlzdG9yeSBsb2NrSGlzdG9yeSwgTG9ja0JhY2tGb3J3YXJkTGlzdCBs
b2NrQmFja0ZvcndhcmRMaXN0LCBTaG91bGRTZW5kUmVmZXJyZXIgc2hvdWxkU2VuZFJlZmVycmVy
KQogewogICAgIHVybFNlbGVjdGVkKEZyYW1lTG9hZFJlcXVlc3QobV9mcmFtZS5kb2N1bWVudCgp
LT5zZWN1cml0eU9yaWdpbigpLCBSZXNvdXJjZVJlcXVlc3QodXJsKSwgcGFzc2VkVGFyZ2V0KSwK
ICAgICAgICAgdHJpZ2dlcmluZ0V2ZW50LCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlz
dCwgc2hvdWxkU2VuZFJlZmVycmVyLCBEb05vdFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVS
TCk7CkBAIC0zMzEsNyArMzMxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6dXJsU2VsZWN0ZWQoY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGFzc2VkVGFyZ2V0LCBQYXNzUmUKIAogLy8gVGhl
IHNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCBwYXJhbWV0ZXIgd2lsbCBnbyBh
d2F5IHdoZW4gdGhlIEZJWE1FIHRvIGVsaW1pbmF0ZSB0aGUKIC8vIGNvcnJlc3BvbmRpbmcgcGFy
YW1ldGVyIGZyb20gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTCgpIGlz
IGFkZHJlc3NlZC4KLXZvaWQgRnJhbWVMb2FkZXI6OnVybFNlbGVjdGVkKGNvbnN0IEZyYW1lTG9h
ZFJlcXVlc3QmIHBhc3NlZFJlcXVlc3QsIFBhc3NSZWZQdHI8RXZlbnQ+IHRyaWdnZXJpbmdFdmVu
dCwgYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCBsb2NrQmFja0ZvcndhcmRMaXN0LCBTaG91bGRTZW5k
UmVmZXJyZXIgc2hvdWxkU2VuZFJlZmVycmVyLCBTaG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFT
Y3JpcHRVUkwgc2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMKQordm9pZCBGcmFt
ZUxvYWRlcjo6dXJsU2VsZWN0ZWQoY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcGFzc2VkUmVxdWVz
dCwgUGFzc1JlZlB0cjxFdmVudD4gdHJpZ2dlcmluZ0V2ZW50LCBMb2NrSGlzdG9yeSBsb2NrSGlz
dG9yeSwgTG9ja0JhY2tGb3J3YXJkTGlzdCBsb2NrQmFja0ZvcndhcmRMaXN0LCBTaG91bGRTZW5k
UmVmZXJyZXIgc2hvdWxkU2VuZFJlZmVycmVyLCBTaG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFT
Y3JpcHRVUkwgc2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMKQogewogICAgIEFT
U0VSVCghbV9zdXBwcmVzc09wZW5lckluTmV3RnJhbWUpOwogCkBAIC05MTQsNyArOTE0LDcgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTEludG9DaGlsZEZyYW1lKGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHJlZmVyZXIsIEYKICAgICAgICAgfQogICAgIH0KIAotICAgIGNoaWxkRnJh
bWUtPmxvYWRlcigpLmxvYWRVUkwodXJsLCByZWZlcmVyLCAiX3NlbGYiLCBmYWxzZSwgRnJhbWVM
b2FkVHlwZVJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdCwgMCwgMCk7CisgICAgY2hp
bGRGcmFtZS0+bG9hZGVyKCkubG9hZFVSTCh1cmwsIHJlZmVyZXIsICJfc2VsZiIsIExvY2tIaXN0
b3J5OjpObywgRnJhbWVMb2FkVHlwZVJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdCwg
MCwgMCk7CiB9CiAKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKQEAg
LTExOTIsNyArMTE5Miw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnNldHVwRm9yUmVwbGFjZSgpCiAg
ICAgZGV0YWNoQ2hpbGRyZW4oKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEZyYW1lUmVx
dWVzdChjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGxvY2tIaXN0b3J5LCBi
b29sIGxvY2tCYWNrRm9yd2FyZExpc3QsCit2b2lkIEZyYW1lTG9hZGVyOjpsb2FkRnJhbWVSZXF1
ZXN0KGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVlc3QsIExvY2tIaXN0b3J5IGxvY2tIaXN0
b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9yd2FyZExpc3QsCiAgICAgUGFzc1Jl
ZlB0cjxFdmVudD4gZXZlbnQsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUsIFNob3Vs
ZFNlbmRSZWZlcnJlciBzaG91bGRTZW5kUmVmZXJyZXIpCiB7ICAgIAogICAgIC8vIFByb3RlY3Qg
ZnJhbWUgZnJvbSBnZXR0aW5nIGJsb3duIGF3YXkgaW5zaWRlIGRpc3BhdGNoQmVmb3JlTG9hZEV2
ZW50IGluIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIuCkBAIC0xMjE3LDcgKzEyMTcsNyBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpsb2FkRnJhbWVSZXF1ZXN0KGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHJl
cXVlc3QsIGJvb2wgbG9ja0hpcwogICAgIEZyYW1lTG9hZFR5cGUgbG9hZFR5cGU7CiAgICAgaWYg
KHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuY2FjaGVQb2xpY3koKSA9PSBSZWxvYWRJZ25vcmlu
Z0NhY2hlRGF0YSkKICAgICAgICAgbG9hZFR5cGUgPSBGcmFtZUxvYWRUeXBlUmVsb2FkOwotICAg
IGVsc2UgaWYgKGxvY2tCYWNrRm9yd2FyZExpc3QpCisgICAgZWxzZSBpZiAobG9ja0JhY2tGb3J3
YXJkTGlzdCA9PSBMb2NrQmFja0ZvcndhcmRMaXN0OjpZZXMpCiAgICAgICAgIGxvYWRUeXBlID0g
RnJhbWVMb2FkVHlwZVJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdDsKICAgICBlbHNl
CiAgICAgICAgIGxvYWRUeXBlID0gRnJhbWVMb2FkVHlwZVN0YW5kYXJkOwpAQCAtMTIzOSw3ICsx
MjM5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEZyYW1lUmVxdWVzdChjb25zdCBGcmFtZUxv
YWRSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGxvY2tIaXMKICAgICB9CiB9CiAKLXZvaWQgRnJhbWVM
b2FkZXI6OmxvYWRVUkwoY29uc3QgVVJMJiBuZXdVUkwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIs
IGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBib29sIGxvY2tIaXN0b3J5LCBGcmFtZUxvYWRUeXBl
IG5ld0xvYWRUeXBlLAordm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTChjb25zdCBVUkwmIG5ld1VS
TCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIExvY2tI
aXN0b3J5IGxvY2tIaXN0b3J5LCBGcmFtZUxvYWRUeXBlIG5ld0xvYWRUeXBlLAogICAgIFBhc3NS
ZWZQdHI8RXZlbnQ+IGV2ZW50LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gcHJwRm9ybVN0YXRlKQog
ewogICAgIGlmIChtX2luU3RvcEFsbExvYWRlcnMpCkBAIC0xMzYyLDEwICsxMzYyLDEwIEBAIHZv
aWQgRnJhbWVMb2FkZXI6OmxvYWQoY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcGFzc2VkUmVxdWVz
dCkKICAgICBsb2FkKGxvYWRlci5nZXQoKSk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OmxvYWRX
aXRoTmF2aWdhdGlvbkFjdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgYm9vbCBsb2NrSGlzdG9yeSwgRnJhbWVMb2FkVHlw
ZSB0eXBlLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlKQordm9pZCBGcmFtZUxvYWRl
cjo6bG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBMb2NrSGlzdG9yeSBsb2NrSGlzdG9y
eSwgRnJhbWVMb2FkVHlwZSB0eXBlLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlKQog
ewogICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4gbG9hZGVyID0gbV9jbGllbnQuY3JlYXRlRG9j
dW1lbnRMb2FkZXIocmVxdWVzdCwgZGVmYXVsdFN1YnN0aXR1dGVEYXRhRm9yVVJMKHJlcXVlc3Qu
dXJsKCkpKTsKLSAgICBpZiAobG9ja0hpc3RvcnkgJiYgbV9kb2N1bWVudExvYWRlcikKKyAgICBp
ZiAobG9ja0hpc3RvcnkgPT0gTG9ja0hpc3Rvcnk6OlllcyAmJiBtX2RvY3VtZW50TG9hZGVyKQog
ICAgICAgICBsb2FkZXItPnNldENsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeShtX2RvY3Vt
ZW50TG9hZGVyLT5kaWRDcmVhdGVHbG9iYWxIaXN0b3J5RW50cnkoKSA/IG1fZG9jdW1lbnRMb2Fk
ZXItPnVybEZvckhpc3RvcnkoKS5zdHJpbmcoKSA6IG1fZG9jdW1lbnRMb2FkZXItPmNsaWVudFJl
ZGlyZWN0U291cmNlRm9ySGlzdG9yeSgpKTsKIAogICAgIGxvYWRlci0+c2V0VHJpZ2dlcmluZ0Fj
dGlvbihhY3Rpb24pOwpAQCAtMTk5Niw3ICsxOTk2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2xp
ZW50UmVkaXJlY3RDYW5jZWxsZWRPckZpbmlzaGVkKGJvb2wgY2FuY2VsV2l0aExvYWRJblByb2dy
ZXMKICAgICBtX3NlbnRSZWRpcmVjdE5vdGlmaWNhdGlvbiA9IGZhbHNlOwogfQogCi12b2lkIEZy
YW1lTG9hZGVyOjpjbGllbnRSZWRpcmVjdGVkKGNvbnN0IFVSTCYgdXJsLCBkb3VibGUgc2Vjb25k
cywgZG91YmxlIGZpcmVEYXRlLCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QpCit2b2lkIEZyYW1l
TG9hZGVyOjpjbGllbnRSZWRpcmVjdGVkKGNvbnN0IFVSTCYgdXJsLCBkb3VibGUgc2Vjb25kcywg
ZG91YmxlIGZpcmVEYXRlLCBMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9yd2FyZExpc3Qp
CiB7CiAgICAgbV9jbGllbnQuZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KHVybCwg
c2Vjb25kcywgZmlyZURhdGUpOwogICAgIApAQCAtMjAwOCw3ICsyMDA4LDcgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6Y2xpZW50UmVkaXJlY3RlZChjb25zdCBVUkwmIHVybCwgZG91YmxlIHNlY29uZHMs
IGRvdWJsZSBmaXJlRGEKICAgICAvLyBsb2FkIGFzIHBhcnQgb2YgdGhlIG9yaWdpbmFsIG5hdmln
YXRpb24uIElmIHdlIGRvbid0IGhhdmUgYSBkb2N1bWVudCBsb2FkZXIsIHdlIGhhdmUKICAgICAv
LyBubyAib3JpZ2luYWwiIGxvYWQgb24gd2hpY2ggdG8gYmFzZSBhIHJlZGlyZWN0LCBzbyB3ZSB0
cmVhdCB0aGUgcmVkaXJlY3QgYXMgYSBub3JtYWwgbG9hZC4KICAgICAvLyBMb2FkcyB0cmlnZ2Vy
ZWQgYnkgSmF2YVNjcmlwdCBmb3JtIHN1Ym1pc3Npb25zIG5ldmVyIGNvdW50IGFzIHF1aWNrIHJl
ZGlyZWN0cy4KLSAgICBtX3F1aWNrUmVkaXJlY3RDb21pbmcgPSAobG9ja0JhY2tGb3J3YXJkTGlz
dCB8fCBoaXN0b3J5KCkuY3VycmVudEl0ZW1TaG91bGRCZVJlcGxhY2VkKCkpICYmIG1fZG9jdW1l
bnRMb2FkZXIgJiYgIW1faXNFeGVjdXRpbmdKYXZhU2NyaXB0Rm9ybUFjdGlvbjsKKyAgICBtX3F1
aWNrUmVkaXJlY3RDb21pbmcgPSAobG9ja0JhY2tGb3J3YXJkTGlzdCA9PSBMb2NrQmFja0Zvcndh
cmRMaXN0OjpZZXMgfHwgaGlzdG9yeSgpLmN1cnJlbnRJdGVtU2hvdWxkQmVSZXBsYWNlZCgpKSAm
JiBtX2RvY3VtZW50TG9hZGVyICYmICFtX2lzRXhlY3V0aW5nSmF2YVNjcmlwdEZvcm1BY3Rpb247
CiB9CiAKIGJvb2wgRnJhbWVMb2FkZXI6OnNob3VsZFJlbG9hZChjb25zdCBVUkwmIGN1cnJlbnRV
UkwsIGNvbnN0IFVSTCYgZGVzdGluYXRpb25VUkwpCkBAIC0yNjA3LDcgKzI2MDcsNyBAQCB2b2lk
IEZyYW1lTG9hZGVyOjphZGRIVFRQT3JpZ2luSWZOZWVkZWQoUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBTdHJpbmcmCiAgICAgcmVxdWVzdC5zZXRIVFRQT3JpZ2luKG9yaWdpbik7CiB9
CiAKLXZvaWQgRnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIGluUmVxdWVzdCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgY29uc3QgU3RyaW5nJiBmcmFt
ZU5hbWUsIGJvb2wgbG9ja0hpc3RvcnksIEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUsIFBhc3NSZWZQ
dHI8RXZlbnQ+IGV2ZW50LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gcHJwRm9ybVN0YXRlKQordm9p
ZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgaW5S
ZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwg
TG9ja0hpc3RvcnkgbG9ja0hpc3RvcnksIEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUsIFBhc3NSZWZQ
dHI8RXZlbnQ+IGV2ZW50LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gcHJwRm9ybVN0YXRlKQogewog
ICAgIFJlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSA9IHBycEZvcm1TdGF0ZTsKIApAQCAtMjk3
NCw3ICsyOTc0LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOZXdXaW5k
b3dQb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXMKICAgICAgICAgbWFpbkZyYW1l
LT5sb2FkZXIoKS5zZXRPcGVuZXIoJmZyYW1lLmdldCgpKTsKICAgICAgICAgbWFpbkZyYW1lLT5k
b2N1bWVudCgpLT5zZXRSZWZlcnJlclBvbGljeShmcmFtZS0+ZG9jdW1lbnQoKS0+cmVmZXJyZXJQ
b2xpY3koKSk7CiAgICAgfQotICAgIG1haW5GcmFtZS0+bG9hZGVyKCkubG9hZFdpdGhOYXZpZ2F0
aW9uQWN0aW9uKHJlcXVlc3QsIE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdCksIGZhbHNlLCBGcmFt
ZUxvYWRUeXBlU3RhbmRhcmQsIGZvcm1TdGF0ZSk7CisgICAgbWFpbkZyYW1lLT5sb2FkZXIoKS5s
b2FkV2l0aE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdCwgTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0
KSwgTG9ja0hpc3Rvcnk6Ok5vLCBGcmFtZUxvYWRUeXBlU3RhbmRhcmQsIGZvcm1TdGF0ZSk7CiB9
CiAKIHZvaWQgRnJhbWVMb2FkZXI6OnJlcXVlc3RGcm9tRGVsZWdhdGUoUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCB1bnNpZ25lZCBsb25nJiBpZGVudGlmaWVyLCBSZXNvdXJjZUVycm9yJiBlcnJv
cikKQEAgLTMyMjgsNyArMzIyOCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWREaWZmZXJlbnRE
b2N1bWVudEl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0sIEZyYW1lTG9hZFR5cGUgbG9hCiAgICAgICAg
IGFjdGlvbiA9IE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdEZvck9yaWdpbmFsVVJMLCBsb2FkVHlw
ZSwgZmFsc2UpOwogICAgIH0KIAotICAgIGxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0
LCBhY3Rpb24sIGZhbHNlLCBsb2FkVHlwZSwgMCk7CisgICAgbG9hZFdpdGhOYXZpZ2F0aW9uQWN0
aW9uKHJlcXVlc3QsIGFjdGlvbiwgTG9ja0hpc3Rvcnk6Ok5vLCBsb2FkVHlwZSwgMCk7CiB9CiAK
IC8vIExvYWRzIGNvbnRlbnQgaW50byB0aGlzIGZyYW1lLCBhcyBzcGVjaWZpZWQgYnkgaGlzdG9y
eSBpdGVtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IDgyMzliODJlZTUyOGY3
N2VhZDc1Mjc3NTU1NDVjM2E3Y2E3YTZlNWIuLjlmOTA3NzVhOTFhNzljMTI3OTc3NGJkOGUzMjJj
NjJlYzBmMDYzOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC0xMDcsNyAr
MTA3LDcgQEAgcHVibGljOgogCiAgICAgLy8gRklYTUU6IFRoZXNlIGFyZSBhbGwgZnVuY3Rpb25z
IHdoaWNoIHN0YXJ0IGxvYWRzLiBXZSBoYXZlIHRvbyBtYW55LgogICAgIHZvaWQgbG9hZFVSTElu
dG9DaGlsZEZyYW1lKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJlciwgRnJhbWUqKTsK
LSAgICB2b2lkIGxvYWRGcmFtZVJlcXVlc3QoY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIGJvb2wg
bG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCwgIC8vIENhbGxlZCBieSBzdWJt
aXRGb3JtLCBjYWxscyBsb2FkUG9zdFJlcXVlc3QgYW5kIGxvYWRVUkwuCisgICAgdm9pZCBsb2Fk
RnJhbWVSZXF1ZXN0KGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBMb2NrSGlzdG9yeSwgTG9ja0Jh
Y2tGb3J3YXJkTGlzdCwgIC8vIENhbGxlZCBieSBzdWJtaXRGb3JtLCBjYWxscyBsb2FkUG9zdFJl
cXVlc3QgYW5kIGxvYWRVUkwuCiAgICAgICAgIFBhc3NSZWZQdHI8RXZlbnQ+LCBQYXNzUmVmUHRy
PEZvcm1TdGF0ZT4sIFNob3VsZFNlbmRSZWZlcnJlcik7CiAKICAgICB2b2lkIGxvYWQoY29uc3Qg
RnJhbWVMb2FkUmVxdWVzdCYpOwpAQCAtMTE3LDggKzExNyw5IEBAIHB1YmxpYzoKICNlbmRpZgog
ICAgIHVuc2lnbmVkIGxvbmcgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBTdG9yZWRDcmVkZW50aWFscywgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgUmVz
b3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBWZWN0b3I8Y2hhcj4mIGRhdGEpOwogCi0g
ICAgdm9pZCBjaGFuZ2VMb2NhdGlvbihTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYsIGNvbnN0
IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgbG9ja0hpc3RvcnkgPSB0cnVlLCBib29sIGxvY2tCYWNr
Rm9yd2FyZExpc3QgPSB0cnVlLCBib29sIHJlZnJlc2ggPSBmYWxzZSk7Ci0gICAgdm9pZCB1cmxT
ZWxlY3RlZChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgUGFzc1JlZlB0cjxFdmVu
dD4sIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCwgU2hvdWxkU2Vu
ZFJlZmVycmVyKTsKKyAgICB2b2lkIGNoYW5nZUxvY2F0aW9uKFNlY3VyaXR5T3JpZ2luKiwgY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgTG9ja0hpc3RvcnkgPSBMb2NrSGlzdG9y
eTo6WWVzLAorICAgICAgICBMb2NrQmFja0ZvcndhcmRMaXN0ID0gTG9ja0JhY2tGb3J3YXJkTGlz
dDo6WWVzLCBib29sIHJlZnJlc2ggPSBmYWxzZSk7CisgICAgdm9pZCB1cmxTZWxlY3RlZChjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgUGFzc1JlZlB0cjxFdmVudD4sIExvY2tIaXN0
b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0LCBTaG91bGRTZW5kUmVmZXJyZXIpOwogICAgIHZvaWQg
c3VibWl0Rm9ybShQYXNzUmVmUHRyPEZvcm1TdWJtaXNzaW9uPik7CiAKICAgICB2b2lkIHJlbG9h
ZChib29sIGVuZFRvRW5kUmVsb2FkID0gZmFsc2UpOwpAQCAtMjU1LDcgKzI1Niw3IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgY29tcGxldGVkKCk7CiAgICAgYm9vbCBhbGxBbmNlc3RvcnNBcmVDb21w
bGV0ZSgpIGNvbnN0OyAvLyBpbmNsdWRpbmcgdGhpcwotICAgIHZvaWQgY2xpZW50UmVkaXJlY3Rl
ZChjb25zdCBVUkwmLCBkb3VibGUgZGVsYXksIGRvdWJsZSBmaXJlRGF0ZSwgYm9vbCBsb2NrQmFj
a0ZvcndhcmRMaXN0KTsKKyAgICB2b2lkIGNsaWVudFJlZGlyZWN0ZWQoY29uc3QgVVJMJiwgZG91
YmxlIGRlbGF5LCBkb3VibGUgZmlyZURhdGUsIExvY2tCYWNrRm9yd2FyZExpc3QpOwogICAgIHZv
aWQgY2xpZW50UmVkaXJlY3RDYW5jZWxsZWRPckZpbmlzaGVkKGJvb2wgY2FuY2VsV2l0aExvYWRJ
blByb2dyZXNzKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIGlzIHB1YmxpYyBiZWNhdXNlIHRoaXMg
YXN5bmNocm9ub3VzIGNhbGxiYWNrIGZyb20gdGhlIEZyYW1lTG9hZGVyQ2xpZW50CkBAIC0zNDEs
MTggKzM0MiwxOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQo
KTsKIAotICAgIHZvaWQgdXJsU2VsZWN0ZWQoY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIFBhc3NS
ZWZQdHI8RXZlbnQ+LCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3Qs
IFNob3VsZFNlbmRSZWZlcnJlciwgU2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJM
KTsKKyAgICB2b2lkIHVybFNlbGVjdGVkKGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBQYXNzUmVm
UHRyPEV2ZW50PiwgTG9ja0hpc3RvcnksIExvY2tCYWNrRm9yd2FyZExpc3QsIFNob3VsZFNlbmRS
ZWZlcnJlciwgU2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMKTsKIAogICAgIHZv
aWQgbG9hZFdpdGhEb2N1bWVudExvYWRlcihEb2N1bWVudExvYWRlciosIEZyYW1lTG9hZFR5cGUs
IFBhc3NSZWZQdHI8Rm9ybVN0YXRlPik7IC8vIENhbGxzIGNvbnRpbnVlTG9hZEFmdGVyTmF2aWdh
dGlvblBvbGljeQogICAgIHZvaWQgbG9hZChEb2N1bWVudExvYWRlciopOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENhbGxzIGxvYWRX
aXRoRG9jdW1lbnRMb2FkZXIgICAKIAogICAgIHZvaWQgbG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9u
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCAgICAgIC8v
IENhbGxzIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIKLSAgICAgICAgYm9vbCBsb2NrSGlzdG9yeSwg
RnJhbWVMb2FkVHlwZSwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+KTsKKyAgICAgICAgTG9ja0hpc3Rv
cnksIEZyYW1lTG9hZFR5cGUsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPik7CiAKICAgICB2b2lkIGxv
YWRQb3N0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHJlZmVy
cmVyLCAgICAgICAgICAgICAgICAvLyBDYWxsZWQgYnkgbG9hZEZyYW1lUmVxdWVzdCwgY2FsbHMg
bG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uCi0gICAgICAgIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1l
LCBib29sIGxvY2tIaXN0b3J5LCBGcmFtZUxvYWRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50PiwgUGFz
c1JlZlB0cjxGb3JtU3RhdGU+KTsKKyAgICAgICAgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIExv
Y2tIaXN0b3J5LCBGcmFtZUxvYWRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50PiwgUGFzc1JlZlB0cjxG
b3JtU3RhdGU+KTsKICAgICB2b2lkIGxvYWRVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlciwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsICAgICAgICAgIC8vIENhbGxlZCBieSBs
b2FkRnJhbWVSZXF1ZXN0LCBjYWxscyBsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24gb3IgZGlzcGF0
Y2hlcyB0byBuYXZpZ2F0aW9uIHBvbGljeSBkZWxlZ2F0ZQotICAgICAgICBib29sIGxvY2tIaXN0
b3J5LCBGcmFtZUxvYWRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50PiwgUGFzc1JlZlB0cjxGb3JtU3Rh
dGU+KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAKKyAgICAgICAgTG9ja0hpc3RvcnksIEZyYW1lTG9hZFR5cGUsIFBhc3NSZWZQdHI8RXZl
bnQ+LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pOwogCiAgICAgYm9vbCBzaG91bGRSZWxvYWQoY29u
c3QgVVJMJiBjdXJyZW50VVJMLCBjb25zdCBVUkwmIGRlc3RpbmF0aW9uVVJMKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgKaW5kZXggN2E4ZDFmMDFhOWYwNWQ4YTRi
NzBiNWE0ZGM4MTU5YzQ1MmY3MjBkZi4uMjkxNzNlNTdmYmI0YmYzMzA1ZWFiYzljNDJkNjcxMTBj
ZWFhMzBhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlw
ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oCkBAIC0x
MTIsNiArMTEyLDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgV2ViR0xQZW5kaW5n
Q3JlYXRpb24KICAgICB9OwogCisgICAgZW51bSBjbGFzcyBMb2NrSGlzdG9yeSB7CisgICAgICAg
IFllcywKKyAgICAgICAgTm8KKyAgICB9OworCisgICAgZW51bSBjbGFzcyBMb2NrQmFja0Zvcndh
cmRMaXN0IHsKKyAgICAgICAgWWVzLAorICAgICAgICBObworICAgIH07CiB9CiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCmluZGV4IDVj
YzY3ZDI4ZTBhNDBlODkzODY5ZGVhNTc2ZGY1YmNlZjg5NzljNDYuLmZmNTk1MDA4Mjc4Y2YzZTY2
MGUyOWM0MjljZWZjMzZmMTIzODQzMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2
aWdhdGlvblNjaGVkdWxlci5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgdW5zaWduZWQgTmF2aWdhdGlv
bkRpc2FibGVyRm9yQmVmb3JlVW5sb2FkOjpzX25hdmlnYXRpb25EaXNhYmxlQ291bnQgPSAwOwog
Y2xhc3MgU2NoZWR1bGVkTmF2aWdhdGlvbiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2No
ZWR1bGVkTmF2aWdhdGlvbik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IFNjaGVkdWxlZE5hdmlnYXRpb24oZG91YmxlIGRlbGF5LCBib29sIGxvY2tIaXN0b3J5LCBib29s
IGxvY2tCYWNrRm9yd2FyZExpc3QsIGJvb2wgd2FzRHVyaW5nTG9hZCwgYm9vbCBpc0xvY2F0aW9u
Q2hhbmdlKQorICAgIFNjaGVkdWxlZE5hdmlnYXRpb24oZG91YmxlIGRlbGF5LCBMb2NrSGlzdG9y
eSBsb2NrSGlzdG9yeSwgTG9ja0JhY2tGb3J3YXJkTGlzdCBsb2NrQmFja0ZvcndhcmRMaXN0LCBi
b29sIHdhc0R1cmluZ0xvYWQsIGJvb2wgaXNMb2NhdGlvbkNoYW5nZSkKICAgICAgICAgOiBtX2Rl
bGF5KGRlbGF5KQogICAgICAgICAsIG1fbG9ja0hpc3RvcnkobG9ja0hpc3RvcnkpCiAgICAgICAg
ICwgbV9sb2NrQmFja0ZvcndhcmRMaXN0KGxvY2tCYWNrRm9yd2FyZExpc3QpCkBAIC03Nyw4ICs3
Nyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RvcFRpbWVyKEZyYW1lJiwgYm9v
bCAvKiBuZXdMb2FkSW5Qcm9ncmVzcyAqLykgeyB9CiAKICAgICBkb3VibGUgZGVsYXkoKSBjb25z
dCB7IHJldHVybiBtX2RlbGF5OyB9Ci0gICAgYm9vbCBsb2NrSGlzdG9yeSgpIGNvbnN0IHsgcmV0
dXJuIG1fbG9ja0hpc3Rvcnk7IH0KLSAgICBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QoKSBjb25z
dCB7IHJldHVybiBtX2xvY2tCYWNrRm9yd2FyZExpc3Q7IH0KKyAgICBMb2NrSGlzdG9yeSBsb2Nr
SGlzdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9ja0hpc3Rvcnk7IH0KKyAgICBMb2NrQmFja0Zv
cndhcmRMaXN0IGxvY2tCYWNrRm9yd2FyZExpc3QoKSBjb25zdCB7IHJldHVybiBtX2xvY2tCYWNr
Rm9yd2FyZExpc3Q7IH0KICAgICBib29sIHdhc0R1cmluZ0xvYWQoKSBjb25zdCB7IHJldHVybiBt
X3dhc0R1cmluZ0xvYWQ7IH0KICAgICBib29sIGlzTG9jYXRpb25DaGFuZ2UoKSBjb25zdCB7IHJl
dHVybiBtX2lzTG9jYXRpb25DaGFuZ2U7IH0KICAgICBib29sIHdhc1VzZXJHZXN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV93YXNVc2VyR2VzdHVyZTsgfQpAQCAtODgsOCArODgsOCBAQCBwcm90ZWN0
ZWQ6CiAKIHByaXZhdGU6CiAgICAgZG91YmxlIG1fZGVsYXk7Ci0gICAgYm9vbCBtX2xvY2tIaXN0
b3J5OwotICAgIGJvb2wgbV9sb2NrQmFja0ZvcndhcmRMaXN0OworICAgIExvY2tIaXN0b3J5IG1f
bG9ja0hpc3Rvcnk7CisgICAgTG9ja0JhY2tGb3J3YXJkTGlzdCBtX2xvY2tCYWNrRm9yd2FyZExp
c3Q7CiAgICAgYm9vbCBtX3dhc0R1cmluZ0xvYWQ7CiAgICAgYm9vbCBtX2lzTG9jYXRpb25DaGFu
Z2U7CiAgICAgYm9vbCBtX3dhc1VzZXJHZXN0dXJlOwpAQCAtOTcsNyArOTcsNyBAQCBwcml2YXRl
OgogCiBjbGFzcyBTY2hlZHVsZWRVUkxOYXZpZ2F0aW9uIDogcHVibGljIFNjaGVkdWxlZE5hdmln
YXRpb24gewogcHJvdGVjdGVkOgotICAgIFNjaGVkdWxlZFVSTE5hdmlnYXRpb24oZG91YmxlIGRl
bGF5LCBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9y
d2FyZExpc3QsIGJvb2wgZHVyaW5nTG9hZCwgYm9vbCBpc0xvY2F0aW9uQ2hhbmdlKQorICAgIFNj
aGVkdWxlZFVSTE5hdmlnYXRpb24oZG91YmxlIGRlbGF5LCBTZWN1cml0eU9yaWdpbiogc2VjdXJp
dHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBMb2Nr
SGlzdG9yeSBsb2NrSGlzdG9yeSwgTG9ja0JhY2tGb3J3YXJkTGlzdCBsb2NrQmFja0ZvcndhcmRM
aXN0LCBib29sIGR1cmluZ0xvYWQsIGJvb2wgaXNMb2NhdGlvbkNoYW5nZSkKICAgICAgICAgOiBT
Y2hlZHVsZWROYXZpZ2F0aW9uKGRlbGF5LCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlz
dCwgZHVyaW5nTG9hZCwgaXNMb2NhdGlvbkNoYW5nZSkKICAgICAgICAgLCBtX3NlY3VyaXR5T3Jp
Z2luKHNlY3VyaXR5T3JpZ2luKQogICAgICAgICAsIG1fdXJsKHVybCkKQEAgLTE0OSw3ICsxNDks
NyBAQCBwcml2YXRlOgogCiBjbGFzcyBTY2hlZHVsZWRSZWRpcmVjdCA6IHB1YmxpYyBTY2hlZHVs
ZWRVUkxOYXZpZ2F0aW9uIHsKIHB1YmxpYzoKLSAgICBTY2hlZHVsZWRSZWRpcmVjdChkb3VibGUg
ZGVsYXksIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiB1cmws
IGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCkKKyAgICBTY2hlZHVs
ZWRSZWRpcmVjdChkb3VibGUgZGVsYXksIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwg
Y29uc3QgU3RyaW5nJiB1cmwsIExvY2tIaXN0b3J5IGxvY2tIaXN0b3J5LCBMb2NrQmFja0Zvcndh
cmRMaXN0IGxvY2tCYWNrRm9yd2FyZExpc3QpCiAgICAgICAgIDogU2NoZWR1bGVkVVJMTmF2aWdh
dGlvbihkZWxheSwgc2VjdXJpdHlPcmlnaW4sIHVybCwgU3RyaW5nKCksIGxvY2tIaXN0b3J5LCBs
b2NrQmFja0ZvcndhcmRMaXN0LCBmYWxzZSwgZmFsc2UpCiAgICAgewogICAgICAgICBjbGVhclVz
ZXJHZXN0dXJlKCk7CkBAIC0xNzAsMTQgKzE3MCwxNCBAQCBwdWJsaWM6CiAKIGNsYXNzIFNjaGVk
dWxlZExvY2F0aW9uQ2hhbmdlIDogcHVibGljIFNjaGVkdWxlZFVSTE5hdmlnYXRpb24gewogcHVi
bGljOgotICAgIFNjaGVkdWxlZExvY2F0aW9uQ2hhbmdlKFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0
eU9yaWdpbiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wg
bG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCwgYm9vbCBkdXJpbmdMb2FkKQor
ICAgIFNjaGVkdWxlZExvY2F0aW9uQ2hhbmdlKFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdp
biwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIExvY2tIaXN0b3J5
IGxvY2tIaXN0b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9yd2FyZExpc3QsIGJv
b2wgZHVyaW5nTG9hZCkKICAgICAgICAgOiBTY2hlZHVsZWRVUkxOYXZpZ2F0aW9uKDAuMCwgc2Vj
dXJpdHlPcmlnaW4sIHVybCwgcmVmZXJyZXIsIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRM
aXN0LCBkdXJpbmdMb2FkLCB0cnVlKSB7IH0KIH07CiAKIGNsYXNzIFNjaGVkdWxlZFJlZnJlc2gg
OiBwdWJsaWMgU2NoZWR1bGVkVVJMTmF2aWdhdGlvbiB7CiBwdWJsaWM6CiAgICAgU2NoZWR1bGVk
UmVmcmVzaChTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQotICAgICAgICA6IFNjaGVkdWxlZFVSTE5hdmlnYXRp
b24oMC4wLCBzZWN1cml0eU9yaWdpbiwgdXJsLCByZWZlcnJlciwgdHJ1ZSwgdHJ1ZSwgZmFsc2Us
IHRydWUpCisgICAgICAgIDogU2NoZWR1bGVkVVJMTmF2aWdhdGlvbigwLjAsIHNlY3VyaXR5T3Jp
Z2luLCB1cmwsIHJlZmVycmVyLCBMb2NrSGlzdG9yeTo6WWVzLCBMb2NrQmFja0ZvcndhcmRMaXN0
OjpZZXMsIGZhbHNlLCB0cnVlKQogICAgIHsKICAgICB9CiAKQEAgLTE5MSw3ICsxOTEsNyBAQCBw
dWJsaWM6CiBjbGFzcyBTY2hlZHVsZWRIaXN0b3J5TmF2aWdhdGlvbiA6IHB1YmxpYyBTY2hlZHVs
ZWROYXZpZ2F0aW9uIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBTY2hlZHVsZWRIaXN0b3J5TmF2
aWdhdGlvbihpbnQgaGlzdG9yeVN0ZXBzKQotICAgICAgICA6IFNjaGVkdWxlZE5hdmlnYXRpb24o
MCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKKyAgICAgICAgOiBTY2hlZHVsZWROYXZpZ2F0
aW9uKDAsIExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIGZhbHNlLCB0
cnVlKQogICAgICAgICAsIG1faGlzdG9yeVN0ZXBzKGhpc3RvcnlTdGVwcykKICAgICB7CiAgICAg
fQpAQCAtMjE4LDcgKzIxOCw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIFNjaGVkdWxlZEZvcm1TdWJt
aXNzaW9uIDogcHVibGljIFNjaGVkdWxlZE5hdmlnYXRpb24gewogcHVibGljOgotICAgIFNjaGVk
dWxlZEZvcm1TdWJtaXNzaW9uKFBhc3NSZWZQdHI8Rm9ybVN1Ym1pc3Npb24+IHN1Ym1pc3Npb24s
IGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCwgYm9vbCBkdXJpbmdMb2FkKQorICAgIFNjaGVkdWxl
ZEZvcm1TdWJtaXNzaW9uKFBhc3NSZWZQdHI8Rm9ybVN1Ym1pc3Npb24+IHN1Ym1pc3Npb24sIExv
Y2tCYWNrRm9yd2FyZExpc3QgbG9ja0JhY2tGb3J3YXJkTGlzdCwgYm9vbCBkdXJpbmdMb2FkKQog
ICAgICAgICA6IFNjaGVkdWxlZE5hdmlnYXRpb24oMCwgc3VibWlzc2lvbi0+bG9ja0hpc3Rvcnko
KSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgZHVyaW5nTG9hZCwgdHJ1ZSkKICAgICAgICAgLCBtX3N1
Ym1pc3Npb24oc3VibWlzc2lvbikKICAgICAgICAgLCBtX2hhdmVUb2xkQ2xpZW50KGZhbHNlKQpA
QCAtMzE5LDE2ICszMTksMTggQEAgdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZVJl
ZGlyZWN0KGRvdWJsZSBkZWxheSwgY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgICAgIHJldHVybjsK
IAogICAgIC8vIFdlIHdhbnQgYSBuZXcgYmFjay9mb3J3YXJkIGxpc3QgaXRlbSBpZiB0aGUgcmVm
cmVzaCB0aW1lb3V0IGlzID4gMSBzZWNvbmQuCi0gICAgaWYgKCFtX3JlZGlyZWN0IHx8IGRlbGF5
IDw9IG1fcmVkaXJlY3QtPmRlbGF5KCkpCi0gICAgICAgIHNjaGVkdWxlKHN0ZDo6bWFrZV91bmlx
dWU8U2NoZWR1bGVkUmVkaXJlY3Q+KGRlbGF5LCBtX2ZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5
T3JpZ2luKCksIHVybCwgdHJ1ZSwgZGVsYXkgPD0gMSkpOworICAgIGlmICghbV9yZWRpcmVjdCB8
fCBkZWxheSA8PSBtX3JlZGlyZWN0LT5kZWxheSgpKSB7CisgICAgICAgIExvY2tCYWNrRm9yd2Fy
ZExpc3QgbG9ja0JhY2tGb3J3YXJkTGlzdCA9IGRlbGF5IDw9IDEgPyBMb2NrQmFja0ZvcndhcmRM
aXN0OjpZZXMgOiBMb2NrQmFja0ZvcndhcmRMaXN0OjpObzsKKyAgICAgICAgc2NoZWR1bGUoc3Rk
OjptYWtlX3VuaXF1ZTxTY2hlZHVsZWRSZWRpcmVjdD4oZGVsYXksIG1fZnJhbWUuZG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKSwgdXJsLCBMb2NrSGlzdG9yeTo6WWVzLCBsb2NrQmFja0Zvcndh
cmRMaXN0KSk7CisgICAgfQogfQogCi1ib29sIE5hdmlnYXRpb25TY2hlZHVsZXI6Om11c3RMb2Nr
QmFja0ZvcndhcmRMaXN0KEZyYW1lJiB0YXJnZXRGcmFtZSkKK0xvY2tCYWNrRm9yd2FyZExpc3Qg
TmF2aWdhdGlvblNjaGVkdWxlcjo6bXVzdExvY2tCYWNrRm9yd2FyZExpc3QoRnJhbWUmIHRhcmdl
dEZyYW1lKQogewogICAgIC8vIE5vbi11c2VyIG5hdmlnYXRpb24gYmVmb3JlIHRoZSBwYWdlIGhh
cyBmaW5pc2hlZCBmaXJpbmcgb25sb2FkIHNob3VsZCBub3QgY3JlYXRlIGEgbmV3IGJhY2svZm9y
d2FyZCBpdGVtLgogICAgIC8vIFNlZSBodHRwczovL3dlYmtpdC5vcmcvYi80Mjg2MSBmb3IgdGhl
IG9yaWdpbmFsIG1vdGl2YXRpb24gZm9yIHRoaXMuICAgIAogICAgIGlmICghU2NyaXB0Q29udHJv
bGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkgJiYgdGFyZ2V0RnJhbWUubG9hZGVyKCkuZG9j
dW1lbnRMb2FkZXIoKSAmJiAhdGFyZ2V0RnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+
d2FzT25sb2FkSGFuZGxlZCgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJu
IExvY2tCYWNrRm9yd2FyZExpc3Q6OlllczsKICAgICAKICAgICAvLyBOYXZpZ2F0aW9uIG9mIGEg
c3ViZnJhbWUgZHVyaW5nIGxvYWRpbmcgb2YgYW4gYW5jZXN0b3IgZnJhbWUgZG9lcyBub3QgY3Jl
YXRlIGEgbmV3IGJhY2svZm9yd2FyZCBpdGVtLgogICAgIC8vIFRoZSBkZWZpbml0aW9uIG9mICJk
dXJpbmcgbG9hZCIgaXMgYW55IHRpbWUgYmVmb3JlIGFsbCBoYW5kbGVycyBmb3IgdGhlIGxvYWQg
ZXZlbnQgaGF2ZSBiZWVuIHJ1bi4KQEAgLTMzNiwxOSArMzM4LDIwIEBAIGJvb2wgTmF2aWdhdGlv
blNjaGVkdWxlcjo6bXVzdExvY2tCYWNrRm9yd2FyZExpc3QoRnJhbWUmIHRhcmdldEZyYW1lKQog
ICAgIGZvciAoRnJhbWUqIGFuY2VzdG9yID0gdGFyZ2V0RnJhbWUudHJlZSgpLnBhcmVudCgpOyBh
bmNlc3RvcjsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+dHJlZSgpLnBhcmVudCgpKSB7CiAgICAgICAg
IERvY3VtZW50KiBkb2N1bWVudCA9IGFuY2VzdG9yLT5kb2N1bWVudCgpOwogICAgICAgICBpZiAo
IWFuY2VzdG9yLT5sb2FkZXIoKS5pc0NvbXBsZXRlKCkgfHwgKGRvY3VtZW50ICYmIGRvY3VtZW50
LT5wcm9jZXNzaW5nTG9hZEV2ZW50KCkpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICByZXR1cm4gTG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzOwogICAgIH0KLSAgICByZXR1
cm4gZmFsc2U7CisgICAgcmV0dXJuIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vOwogfQogCi12b2lk
IE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoU2VjdXJpdHlPcmln
aW4qIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiByZWZl
cnJlciwgYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCBsb2NrQmFja0ZvcndhcmRMaXN0KQordm9pZCBO
YXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKFNlY3VyaXR5T3JpZ2lu
KiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJy
ZXIsIExvY2tIaXN0b3J5IGxvY2tIaXN0b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tCYWNr
Rm9yd2FyZExpc3QpCiB7CiAgICAgaWYgKCFzaG91bGRTY2hlZHVsZU5hdmlnYXRpb24odXJsKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIGlmICh1cmwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBsb2NrQmFja0ZvcndhcmRMaXN0ID0gbG9ja0JhY2tGb3J3YXJkTGlzdCB8fCBtdXN0
TG9ja0JhY2tGb3J3YXJkTGlzdChtX2ZyYW1lKTsKKyAgICBpZiAobG9ja0JhY2tGb3J3YXJkTGlz
dCA9PSBMb2NrQmFja0ZvcndhcmRMaXN0OjpObykKKyAgICAgICAgbG9ja0JhY2tGb3J3YXJkTGlz
dCA9IG11c3RMb2NrQmFja0ZvcndhcmRMaXN0KG1fZnJhbWUpOwogCiAgICAgRnJhbWVMb2FkZXIm
IGxvYWRlciA9IG1fZnJhbWUubG9hZGVyKCk7CiAKQEAgLTM4MSwxMCArMzg0LDEyIEBAIHZvaWQg
TmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVGb3JtU3VibWlzc2lvbihQYXNzUmVmUHRyPEZv
cm1TdWJtaXNzaW9uPiBzdWJtCiAgICAgLy8gSWYgdGhpcyBpcyBhIGNoaWxkIGZyYW1lIGFuZCB0
aGUgZm9ybSBzdWJtaXNzaW9uIHdhcyB0cmlnZ2VyZWQgYnkgYSBzY3JpcHQsIGxvY2sgdGhlIGJh
Y2svZm9yd2FyZCBsaXN0CiAgICAgLy8gdG8gbWF0Y2ggSUUgYW5kIE9wZXJhLgogICAgIC8vIFNl
ZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzIzODMgZm9yIHRoZSBv
cmlnaW5hbCBtb3RpdmF0aW9uIGZvciB0aGlzLgotICAgIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlz
dCA9IG11c3RMb2NrQmFja0ZvcndhcmRMaXN0KG1fZnJhbWUpCi0gICAgICAgIHx8IChzdWJtaXNz
aW9uLT5zdGF0ZSgpLT5mb3JtU3VibWlzc2lvblRyaWdnZXIoKSA9PSBTdWJtaXR0ZWRCeUphdmFT
Y3JpcHQKLSAgICAgICAgICAgICYmIG1fZnJhbWUudHJlZSgpLnBhcmVudCgpICYmICFTY3JpcHRD
b250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSk7Ci0KKyAgICBMb2NrQmFja0Zvcndh
cmRMaXN0IGxvY2tCYWNrRm9yd2FyZExpc3QgPSBtdXN0TG9ja0JhY2tGb3J3YXJkTGlzdChtX2Zy
YW1lKTsKKyAgICBpZiAobG9ja0JhY2tGb3J3YXJkTGlzdCA9PSBMb2NrQmFja0ZvcndhcmRMaXN0
OjpObworICAgICAgICAmJiAoc3VibWlzc2lvbi0+c3RhdGUoKS0+Zm9ybVN1Ym1pc3Npb25Ucmln
Z2VyKCkgPT0gU3VibWl0dGVkQnlKYXZhU2NyaXB0ICYmIG1fZnJhbWUudHJlZSgpLnBhcmVudCgp
ICYmICFTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkpIHsKKyAgICAg
ICAgbG9ja0JhY2tGb3J3YXJkTGlzdCA9IExvY2tCYWNrRm9yd2FyZExpc3Q6OlllczsKKyAgICB9
CisgICAgCiAgICAgc2NoZWR1bGUoc3RkOjptYWtlX3VuaXF1ZTxTY2hlZHVsZWRGb3JtU3VibWlz
c2lvbj4oc3VibWlzc2lvbiwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgZHVyaW5nTG9hZCkpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuaAppbmRleCAzZTdh
NmQzZmFkZWVlMTBhNGEyZjJjYWQyNDIyOTZjOWFmMjc2MGE0Li42Y2NkYmNhMDFkMDJjZTAwYmZh
NTU2NDZjMTIwYTJhM2Y2ZmQ5ODQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TmF2aWdhdGlvblNjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0
aW9uU2NoZWR1bGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpZm5kZWYgTmF2aWdhdGlvblNjaGVk
dWxlcl9oCiAjZGVmaW5lIE5hdmlnYXRpb25TY2hlZHVsZXJfaAogCisjaW5jbHVkZSAiRnJhbWVM
b2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTczLDcgKzc0LDggQEAgcHVibGlj
OgogICAgIGJvb2wgbG9jYXRpb25DaGFuZ2VQZW5kaW5nKCk7CiAKICAgICB2b2lkIHNjaGVkdWxl
UmVkaXJlY3QoZG91YmxlIGRlbGF5LCBjb25zdCBTdHJpbmcmIHVybCk7Ci0gICAgdm9pZCBzY2hl
ZHVsZUxvY2F0aW9uQ2hhbmdlKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgbG9ja0hpc3RvcnkgPSB0cnVlLCBib29sIGxvY2tC
YWNrRm9yd2FyZExpc3QgPSB0cnVlKTsKKyAgICB2b2lkIHNjaGVkdWxlTG9jYXRpb25DaGFuZ2Uo
U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJl
ciwgTG9ja0hpc3RvcnkgPSBMb2NrSGlzdG9yeTo6WWVzLAorICAgICAgICBMb2NrQmFja0Zvcndh
cmRMaXN0ID0gTG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzKTsKICAgICB2b2lkIHNjaGVkdWxlRm9y
bVN1Ym1pc3Npb24oUGFzc1JlZlB0cjxGb3JtU3VibWlzc2lvbj4pOwogICAgIHZvaWQgc2NoZWR1
bGVSZWZyZXNoKCk7CiAgICAgdm9pZCBzY2hlZHVsZUhpc3RvcnlOYXZpZ2F0aW9uKGludCBzdGVw
cyk7CkBAIC05MCw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0aW1lckZpcmVkKFRpbWVy
PE5hdmlnYXRpb25TY2hlZHVsZXI+Jik7CiAgICAgdm9pZCBzY2hlZHVsZShzdGQ6OnVuaXF1ZV9w
dHI8U2NoZWR1bGVkTmF2aWdhdGlvbj4pOwogCi0gICAgc3RhdGljIGJvb2wgbXVzdExvY2tCYWNr
Rm9yd2FyZExpc3QoRnJhbWUmIHRhcmdldEZyYW1lKTsKKyAgICBzdGF0aWMgTG9ja0JhY2tGb3J3
YXJkTGlzdCBtdXN0TG9ja0JhY2tGb3J3YXJkTGlzdChGcmFtZSYgdGFyZ2V0RnJhbWUpOwogCiAg
ICAgRnJhbWUmIG1fZnJhbWU7CiAgICAgVGltZXI8TmF2aWdhdGlvblNjaGVkdWxlcj4gbV90aW1l
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwCmluZGV4IDdmYjZiMTA4
YTEzNTg4NGEzOGU0OTkwMGZlYTBiMGZlZjJhNTk5NTkuLjQ1NTdmYWNiYjRjNzRmMWYyNTU4MjVi
NGRlNTliMTRkYWZkMzZmOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJm
cmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVy
LmNwcApAQCAtNzYsNyArNzYsNyBAQCB2b2lkIFN1YmZyYW1lTG9hZGVyOjpjbGVhcigpCiAgICAg
bV9jb250YWluc1BsdWdpbnMgPSBmYWxzZTsKIH0KIAotYm9vbCBTdWJmcmFtZUxvYWRlcjo6cmVx
dWVzdEZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCYgb3duZXJFbGVtZW50LCBjb25zdCBTdHJp
bmcmIHVybFN0cmluZywgY29uc3QgQXRvbWljU3RyaW5nJiBmcmFtZU5hbWUsIGJvb2wgbG9ja0hp
c3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCkKK2Jvb2wgU3ViZnJhbWVMb2FkZXI6OnJl
cXVlc3RGcmFtZShIVE1MRnJhbWVPd25lckVsZW1lbnQmIG93bmVyRWxlbWVudCwgY29uc3QgU3Ry
aW5nJiB1cmxTdHJpbmcsIGNvbnN0IEF0b21pY1N0cmluZyYgZnJhbWVOYW1lLCBMb2NrSGlzdG9y
eSBsb2NrSGlzdG9yeSwgTG9ja0JhY2tGb3J3YXJkTGlzdCBsb2NrQmFja0ZvcndhcmRMaXN0KQog
ewogICAgIC8vIFN1cHBvcnQgZm9yIDxmcmFtZSBzcmM9ImphdmFzY3JpcHQ6c3RyaW5nIj4KICAg
ICBVUkwgc2NyaXB0VVJMOwpAQCAtMjMwLDcgKzIzMCw3IEBAIGJvb2wgU3ViZnJhbWVMb2FkZXI6
OnJlcXVlc3RPYmplY3QoSFRNTFBsdWdJbkltYWdlRWxlbWVudCYgb3duZXJFbGVtZW50LCBjb25z
dCBTCiAgICAgLy8gSWYgdGhlIHBsdWctaW4gZWxlbWVudCBhbHJlYWR5IGNvbnRhaW5zIGEgc3Vi
ZnJhbWUsIGxvYWRPclJlZGlyZWN0U3ViZnJhbWUgd2lsbCByZS11c2UgaXQuIE90aGVyd2lzZSwK
ICAgICAvLyBpdCB3aWxsIGNyZWF0ZSBhIG5ldyBmcmFtZSBhbmQgc2V0IGl0IGFzIHRoZSBSZW5k
ZXJXaWRnZXQncyBXaWRnZXQsIGNhdXNpbmcgd2hhdCB3YXMgcHJldmlvdXNseSAKICAgICAvLyBp
biB0aGUgd2lkZ2V0IHRvIGJlIHRvcm4gZG93bi4KLSAgICByZXR1cm4gbG9hZE9yUmVkaXJlY3RT
dWJmcmFtZShvd25lckVsZW1lbnQsIGNvbXBsZXRlZFVSTCwgZnJhbWVOYW1lLCB0cnVlLCB0cnVl
KTsKKyAgICByZXR1cm4gbG9hZE9yUmVkaXJlY3RTdWJmcmFtZShvd25lckVsZW1lbnQsIGNvbXBs
ZXRlZFVSTCwgZnJhbWVOYW1lLCBMb2NrSGlzdG9yeTo6WWVzLCBMb2NrQmFja0ZvcndhcmRMaXN0
OjpZZXMpOwogfQogCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCkBAIC0zMjAs
NyArMzIwLDcgQEAgUGFzc1JlZlB0cjxXaWRnZXQ+IFN1YmZyYW1lTG9hZGVyOjpjcmVhdGVKYXZh
QXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmIHNpemUsIEgKICAgICByZXR1cm4gd2lkZ2V0Owog
fQogCi1GcmFtZSogU3ViZnJhbWVMb2FkZXI6OmxvYWRPclJlZGlyZWN0U3ViZnJhbWUoSFRNTEZy
YW1lT3duZXJFbGVtZW50JiBvd25lckVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBBdG9t
aWNTdHJpbmcmIGZyYW1lTmFtZSwgYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCBsb2NrQmFja0Zvcndh
cmRMaXN0KQorRnJhbWUqIFN1YmZyYW1lTG9hZGVyOjpsb2FkT3JSZWRpcmVjdFN1YmZyYW1lKEhU
TUxGcmFtZU93bmVyRWxlbWVudCYgb3duZXJFbGVtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3Qg
QXRvbWljU3RyaW5nJiBmcmFtZU5hbWUsIExvY2tIaXN0b3J5IGxvY2tIaXN0b3J5LCBMb2NrQmFj
a0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9yd2FyZExpc3QpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0g
b3duZXJFbGVtZW50LmNvbnRlbnRGcmFtZSgpOwogICAgIGlmIChmcmFtZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YmZyYW1lTG9hZGVyLmgKaW5kZXggZDFkYzhiYjQ0ZWI3NWFmMmZiNDkzN2NmZjlj
NGQ3NzU2MzgyNjQ0Yy4uNGJmYzM3OGQ1NzU2NTY1YmZlNDlhMTllNmJjYjRmMzJlZTg0MWMxYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmgKQEAgLTU5LDcgKzU5LDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBjbGVhcigpOwogCi0gICAgYm9vbCByZXF1ZXN0RnJhbWUoSFRN
TEZyYW1lT3duZXJFbGVtZW50JiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgZnJhbWVOYW1lLCBib29sIGxvY2tIaXN0b3J5ID0gdHJ1ZSwgYm9vbCBsb2NrQmFja0Zvcndh
cmRMaXN0ID0gdHJ1ZSk7CisgICAgYm9vbCByZXF1ZXN0RnJhbWUoSFRNTEZyYW1lT3duZXJFbGVt
ZW50JiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IEF0b21pY1N0cmluZyYgZnJhbWVOYW1lLCBM
b2NrSGlzdG9yeSA9IExvY2tIaXN0b3J5OjpZZXMsIExvY2tCYWNrRm9yd2FyZExpc3QgPSBMb2Nr
QmFja0ZvcndhcmRMaXN0OjpZZXMpOwogICAgIGJvb2wgcmVxdWVzdE9iamVjdChIVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50JiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IEF0b21pY1N0cmluZyYgZnJh
bWVOYW1lLAogICAgICAgICBjb25zdCBTdHJpbmcmIHNlcnZpY2VUeXBlLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKTsK
IApAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgYm9vbCByZXF1ZXN0
UGx1Z2luKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
IHNlcnZpY2VUeXBlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBib29sIHVzZUZhbGxiYWNrKTsKLSAgICBGcmFtZSog
bG9hZE9yUmVkaXJlY3RTdWJmcmFtZShIVE1MRnJhbWVPd25lckVsZW1lbnQmLCBjb25zdCBVUkwm
LCBjb25zdCBBdG9taWNTdHJpbmcmIGZyYW1lTmFtZSwgYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCBs
b2NrQmFja0ZvcndhcmRMaXN0KTsKKyAgICBGcmFtZSogbG9hZE9yUmVkaXJlY3RTdWJmcmFtZShI
VE1MRnJhbWVPd25lckVsZW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBBdG9taWNTdHJpbmcmIGZy
YW1lTmFtZSwgTG9ja0hpc3RvcnksIExvY2tCYWNrRm9yd2FyZExpc3QpOwogICAgIEZyYW1lKiBs
b2FkU3ViZnJhbWUoSFRNTEZyYW1lT3duZXJFbGVtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKTsKICAgICBib29sIGxvYWRQbHVnaW4o
SFRNTFBsdWdJbkltYWdlRWxlbWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGFyYW1WYWx1ZXMsIGJvb2wgdXNlRmFsbGJhY2spOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKaW5kZXggYTUyOWJkM2NiM2U2ODkwMjA3NWM2
OTFkNTZiMmRjYjAyM2ZhYzU2OS4uMTdhZTQ1Njk3YzJkNjM1YzgyNzY0YWFjZmY1MjdkYjdkNzVh
OGQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNw
cApAQCAtMjA2LDcgKzIwNiw3IEBAIHN0YXRpYyB2b2lkIG9wZW5OZXdXaW5kb3coY29uc3QgVVJM
JiB1cmxUb0xvYWQsIEZyYW1lKiBmcmFtZSkKICAgICBpZiAoIW5ld1BhZ2UpCiAgICAgICAgIHJl
dHVybjsKICAgICBuZXdQYWdlLT5jaHJvbWUoKS5zaG93KCk7Ci0gICAgbmV3UGFnZS0+bWFpbkZy
YW1lKCkubG9hZGVyKCkubG9hZEZyYW1lUmVxdWVzdChyZXF1ZXN0LCBmYWxzZSwgZmFsc2UsIDAs
IDAsIE1heWJlU2VuZFJlZmVycmVyKTsKKyAgICBuZXdQYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIo
KS5sb2FkRnJhbWVSZXF1ZXN0KHJlcXVlc3QsIExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3
YXJkTGlzdDo6Tm8sIDAsIDAsIE1heWJlU2VuZFJlZmVycmVyKTsKIH0KIAogI2lmIFBMQVRGT1JN
KEdUSykKQEAgLTQwNSwxMiArNDA1LDEyIEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpj
b250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qIGl0ZW0pCiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnT3Blbkxpbms6CiAgICAgICAgIGlmIChG
cmFtZSogdGFyZ2V0RnJhbWUgPSBtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLnRhcmdldEZyYW1l
KCkpCi0gICAgICAgICAgICB0YXJnZXRGcmFtZS0+bG9hZGVyKCkubG9hZEZyYW1lUmVxdWVzdChG
cmFtZUxvYWRSZXF1ZXN0KGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBSZXNv
dXJjZVJlcXVlc3QobV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5hYnNvbHV0ZUxpbmtVUkwoKSwg
ZnJhbWUtPmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSkpLCBmYWxzZSwgZmFsc2UsIDAsIDAs
IE1heWJlU2VuZFJlZmVycmVyKTsKKyAgICAgICAgICAgIHRhcmdldEZyYW1lLT5sb2FkZXIoKS5s
b2FkRnJhbWVSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QoZnJhbWUtPmRvY3VtZW50KCktPnNlY3Vy
aXR5T3JpZ2luKCksIFJlc291cmNlUmVxdWVzdChtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLmFi
c29sdXRlTGlua1VSTCgpLCBmcmFtZS0+bG9hZGVyKCkub3V0Z29pbmdSZWZlcnJlcigpKSksIExv
Y2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIDAsIDAsIE1heWJlU2VuZFJl
ZmVycmVyKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgb3Blbk5ld1dpbmRvdyhtX2NvbnRl
eHQuaGl0VGVzdFJlc3VsdCgpLmFic29sdXRlTGlua1VSTCgpLCBmcmFtZSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnT3BlbkxpbmtJblRoaXNXaW5kb3c6Ci0g
ICAgICAgIGZyYW1lLT5sb2FkZXIoKS5sb2FkRnJhbWVSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3Qo
ZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIFJlc291cmNlUmVxdWVzdChtX2Nv
bnRleHQuaGl0VGVzdFJlc3VsdCgpLmFic29sdXRlTGlua1VSTCgpLCBmcmFtZS0+bG9hZGVyKCku
b3V0Z29pbmdSZWZlcnJlcigpKSksIGZhbHNlLCBmYWxzZSwgMCwgMCwgTWF5YmVTZW5kUmVmZXJy
ZXIpOworICAgICAgICBmcmFtZS0+bG9hZGVyKCkubG9hZEZyYW1lUmVxdWVzdChGcmFtZUxvYWRS
ZXF1ZXN0KGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBSZXNvdXJjZVJlcXVl
c3QobV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5hYnNvbHV0ZUxpbmtVUkwoKSwgZnJhbWUtPmxv
YWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSkpLCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9y
d2FyZExpc3Q6Ok5vLCAwLCAwLCBNYXliZVNlbmRSZWZlcnJlcik7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQm9sZDoKICAgICAgICAgZnJhbWUtPmVkaXRvcigp
LmNvbW1hbmQoIlRvZ2dsZUJvbGQiKS5leGVjdXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5j
cHAKaW5kZXggYTRlYzdjZDA2ZjhlZDY4MTc5N2JmNTlmZTAyZWJlZmIzZjRjZTYzMC4uNmUzMDFk
Mjc4MDRhZGQwMGQ1NzIzMmI3MjE3NDE3M2YxZDk4MmI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmNwcApAQCAtMTkyNywxMSArMTkyNywxMiBAQCB2b2lkIERPTVdpbmRvdzo6c2V0TG9jYXRp
b24oY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBETwog
ICAgICAgICByZXR1cm47CiAKICAgICAvLyBXZSB3YW50IGEgbmV3IGhpc3RvcnkgaXRlbSBpZiB3
ZSBhcmUgcHJvY2Vzc2luZyBhIHVzZXIgZ2VzdHVyZS4KKyAgICBMb2NrSGlzdG9yeSBsb2NrSGlz
dG9yeSA9IChsb2NraW5nICE9IExvY2tIaXN0b3J5QmFzZWRPbkdlc3R1cmVTdGF0ZSB8fCAhU2Ny
aXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpID8gTG9ja0hpc3Rvcnk6Olll
cyA6IExvY2tIaXN0b3J5OjpObzsKKyAgICBMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9y
d2FyZExpc3QgPSAobG9ja2luZyAhPSBMb2NrSGlzdG9yeUJhc2VkT25HZXN0dXJlU3RhdGUpID8g
TG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzIDogTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm87CiAgICAg
bV9mcmFtZS0+bmF2aWdhdGlvblNjaGVkdWxlcigpLnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoYWN0
aXZlRG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCksCiAgICAgICAgIC8vIEZJWE1FOiBXaGF0IGlm
IGFjdGl2ZURvY3VtZW50KCktPmZyYW1lKCkgaXMgMD8KICAgICAgICAgY29tcGxldGVkVVJMLCBh
Y3RpdmVEb2N1bWVudC0+ZnJhbWUoKS0+bG9hZGVyKCkub3V0Z29pbmdSZWZlcnJlcigpLAotICAg
ICAgICBsb2NraW5nICE9IExvY2tIaXN0b3J5QmFzZWRPbkdlc3R1cmVTdGF0ZSB8fCAhU2NyaXB0
Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCksCi0gICAgICAgIGxvY2tpbmcgIT0g
TG9ja0hpc3RvcnlCYXNlZE9uR2VzdHVyZVN0YXRlKTsKKyAgICAgICAgbG9ja0hpc3RvcnksIGxv
Y2tCYWNrRm9yd2FyZExpc3QpOwogfQogCiB2b2lkIERPTVdpbmRvdzo6cHJpbnRFcnJvck1lc3Nh
Z2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpAQCAtMjA0MywxMCArMjA0NCwxMCBAQCBQYXNzUmVm
UHRyPEZyYW1lPiBET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyhjb25zdCBTdHJpbmcmIHVybFN0cmlu
ZywgY29uc3QgQXRvbWljUwogICAgICAgICBwcmVwYXJlRGlhbG9nRnVuY3Rpb24oKm5ld0ZyYW1l
LT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSk7CiAKICAgICBpZiAoY3JlYXRlZCkKLSAgICAgICAg
bmV3RnJhbWUtPmxvYWRlcigpLmNoYW5nZUxvY2F0aW9uKGFjdGl2ZVdpbmRvdy5kb2N1bWVudCgp
LT5zZWN1cml0eU9yaWdpbigpLCBjb21wbGV0ZWRVUkwsIHJlZmVycmVyLCBmYWxzZSwgZmFsc2Up
OworICAgICAgICBuZXdGcmFtZS0+bG9hZGVyKCkuY2hhbmdlTG9jYXRpb24oYWN0aXZlV2luZG93
LmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIGNvbXBsZXRlZFVSTCwgcmVmZXJyZXIsIExv
Y2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8pOwogICAgIGVsc2UgaWYgKCF1
cmxTdHJpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGJvb2wgbG9ja0hpc3RvcnkgPSAhU2NyaXB0
Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCk7Ci0gICAgICAgIG5ld0ZyYW1lLT5u
YXZpZ2F0aW9uU2NoZWR1bGVyKCkuc2NoZWR1bGVMb2NhdGlvbkNoYW5nZShhY3RpdmVXaW5kb3cu
ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgY29tcGxldGVkVVJMLnN0cmluZygpLCByZWZl
cnJlciwgbG9ja0hpc3RvcnksIGZhbHNlKTsKKyAgICAgICAgTG9ja0hpc3RvcnkgbG9ja0hpc3Rv
cnkgPSBTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSA/IExvY2tIaXN0
b3J5OjpObyA6IExvY2tIaXN0b3J5OjpZZXM7CisgICAgICAgIG5ld0ZyYW1lLT5uYXZpZ2F0aW9u
U2NoZWR1bGVyKCkuc2NoZWR1bGVMb2NhdGlvbkNoYW5nZShhY3RpdmVXaW5kb3cuZG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKSwgY29tcGxldGVkVVJMLnN0cmluZygpLCByZWZlcnJlciwgbG9j
a0hpc3RvcnksIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vKTsKICAgICB9CiAKICAgICAvLyBOYXZp
Z2F0aW5nIHRoZSBuZXcgZnJhbWUgY291bGQgcmVzdWx0IGluIGl0IGJlaW5nIGRldGFjaGVkIGZy
b20gaXRzIHBhZ2UgYnkgYSBuYXZpZ2F0aW9uIHBvbGljeSBkZWxlZ2F0ZS4KQEAgLTIxMDAsMTMg
KzIxMDEsOSBAQCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gRE9NV2luZG93OjpvcGVuKGNvbnN0IFN0
cmluZyYgdXJsU3RyaW5nLCBjb25zdCBBdG9taWNTdHJpbgogCiAgICAgICAgIC8vIEZvciB3aGF0
ZXZlciByZWFzb24sIEZpcmVmb3ggdXNlcyB0aGUgZmlyc3Qgd2luZG93IHJhdGhlciB0aGFuIHRo
ZSBhY3RpdmUgd2luZG93IHRvCiAgICAgICAgIC8vIGRldGVybWluZSB0aGUgb3V0Z29pbmcgcmVm
ZXJyZXIuIFdlIHJlcGxpY2F0ZSB0aGF0IGJlaGF2aW9yIGhlcmUuCi0gICAgICAgIGJvb2wgbG9j
a0hpc3RvcnkgPSAhU2NyaXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCk7Ci0g
ICAgICAgIHRhcmdldEZyYW1lLT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkuc2NoZWR1bGVMb2NhdGlv
bkNoYW5nZSgKLSAgICAgICAgICAgIGFjdGl2ZURvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLAot
ICAgICAgICAgICAgY29tcGxldGVkVVJMLAotICAgICAgICAgICAgZmlyc3RGcmFtZS0+bG9hZGVy
KCkub3V0Z29pbmdSZWZlcnJlcigpLAotICAgICAgICAgICAgbG9ja0hpc3RvcnksCi0gICAgICAg
ICAgICBmYWxzZSk7CisgICAgICAgIExvY2tIaXN0b3J5IGxvY2tIaXN0b3J5ID0gU2NyaXB0Q29u
dHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkgPyBMb2NrSGlzdG9yeTo6Tm8gOiBMb2Nr
SGlzdG9yeTo6WWVzOworICAgICAgICB0YXJnZXRGcmFtZS0+bmF2aWdhdGlvblNjaGVkdWxlcigp
LnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoYWN0aXZlRG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCks
IGNvbXBsZXRlZFVSTCwgZmlyc3RGcmFtZS0+bG9hZGVyKCkub3V0Z29pbmdSZWZlcnJlcigpLAor
ICAgICAgICAgICAgbG9ja0hpc3RvcnksIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vKTsKICAgICAg
ICAgcmV0dXJuIHRhcmdldEZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCmluZGV4IGYxZWI3ODhjN2YxYzQ4YWI1YTkzZWM1
OTk4NmIwMDUwM2MxZWI0Y2IuLmFlNzA3NGVlZTBkMmY2ZmVmNzg2NWY4ZTI0M2Y5OWJmNWNmMDBh
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIHZv
aWQgU1ZHQUVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgICAg
ICAgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgICAgICAgICAgaWYg
KCFmcmFtZSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBmcmFtZS0+bG9h
ZGVyKCkudXJsU2VsZWN0ZWQoZG9jdW1lbnQoKS5jb21wbGV0ZVVSTCh1cmwpLCB0YXJnZXQsIGV2
ZW50LCBmYWxzZSwgZmFsc2UsIE1heWJlU2VuZFJlZmVycmVyKTsKKyAgICAgICAgICAgIGZyYW1l
LT5sb2FkZXIoKS51cmxTZWxlY3RlZChkb2N1bWVudCgpLmNvbXBsZXRlVVJMKHVybCksIHRhcmdl
dCwgZXZlbnQsIExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIE1heWJl
U2VuZFJlZmVycmVyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbQppbmRleCAxMGE4NjNmNTMwOTE4M2Yy
MGVlOTc5MTc0YTRjYWU2NDk0NTA2MzVjLi5iMTA3NGYzODkxMGUxM2EzN2IzNjVjMzY4ZTM4MTA1
OWFhYjdhNGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlBERlZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tCkBAIC0x
MDU2LDcgKzEwNTYsNyBAQCBzdGF0aWMgQk9PTCBpc0ZyYW1lSW5SYW5nZShXZWJGcmFtZSAqZnJh
bWUsIERPTVJhbmdlICpyYW5nZSkKIAogICAgIC8vIENhbGwgdG8gdGhlIGZyYW1lIGxvYWRlciBi
ZWNhdXNlIHRoaXMgaXMgd2hlcmUgb3VyIHNlY3VyaXR5IGNoZWNrcyBhcmUgbWFkZS4KICAgICBG
cmFtZSogZnJhbWUgPSBjb3JlKFtkYXRhU291cmNlIHdlYkZyYW1lXSk7Ci0gICAgZnJhbWUtPmxv
YWRlcigpLmxvYWRGcmFtZVJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdChmcmFtZS0+ZG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKSwgUmVzb3VyY2VSZXF1ZXN0KFVSTCkpLCBmYWxzZSwgZmFsc2Us
IGV2ZW50LmdldCgpLCAwLCBNYXliZVNlbmRSZWZlcnJlcik7CisgICAgZnJhbWUtPmxvYWRlcigp
LmxvYWRGcmFtZVJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdChmcmFtZS0+ZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKSwgUmVzb3VyY2VSZXF1ZXN0KFVSTCkpLCBMb2NrSGlzdG9yeTo6Tm8sIExv
Y2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBldmVudC5nZXQoKSwgMCwgTWF5YmVTZW5kUmVmZXJyZXIp
OwogfQogCiAtICh2b2lkKVBERlZpZXdPcGVuUERGSW5OYXRpdmVBcHBsaWNhdGlvbjooUERGVmll
dyAqKXNlbmRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5tbQppbmRleCBlMGQ4MDNjOTg3N2M2MWYzZjMxZDMyM2Q5Y2NiZDJjOWFiYmYy
ODVhLi5kMDFlMDVmMDE4ODhkNmRjMWVhMWNmYWRiMTFlY2Q3MGNmYWE3MDA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAt
MTU1OCw3ICsxNTU4LDcgQEAgdm9pZCBQREZQbHVnaW46OmNsaWNrZWRMaW5rKE5TVVJMICp1cmwp
CiAgICAgaWYgKG1fbGFzdE1vdXNlRXZlbnQudHlwZSgpICE9IFdlYkV2ZW50OjpOb1R5cGUpCiAg
ICAgICAgIGNvcmVFdmVudCA9IE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xpY2tF
dmVudCwgZnJhbWUtPmRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCksIHBsYXRmb3JtKG1fbGFzdE1v
dXNlRXZlbnQpLCAwLCAwKTsKIAotICAgIGZyYW1lLT5sb2FkZXIoKS51cmxTZWxlY3RlZCh1cmws
IGVtcHR5U3RyaW5nKCksIGNvcmVFdmVudC5nZXQoKSwgZmFsc2UsIGZhbHNlLCBNYXliZVNlbmRS
ZWZlcnJlcik7CisgICAgZnJhbWUtPmxvYWRlcigpLnVybFNlbGVjdGVkKHVybCwgZW1wdHlTdHJp
bmcoKSwgY29yZUV2ZW50LmdldCgpLCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExp
c3Q6Ok5vLCBNYXliZVNlbmRSZWZlcnJlcik7CiB9CiAKIHZvaWQgUERGUGx1Z2luOjpzZXRBY3Rp
dmVBbm5vdGF0aW9uKFBERkFubm90YXRpb24gKmFubm90YXRpb24pCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228444</attachid>
            <date>2014-04-02 16:27:53 -0700</date>
            <delta_ts>2014-04-02 17:51:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-131135-20140402162733.patch</filename>
            <type>text/plain</type>
            <size>52556</size>
            <attacher name="Mark Rowe (bdash)">mrowe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2NjI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzdiMjkzNTJjYzA4NWJh
NWUxZDc0YWNkZmRmZGI2YzQ2YjNiZWRjMS4uYWZmNjE1Y2EzM2Q4OTM3MTU5MDBlNTBmYWUyNDFi
YzBmZWNmM2Q4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDE0LTA0LTAyICBNYXJr
IFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CisKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9i
LzEzMTEzNT4gSW50cm9kdWNlIExvY2tIaXN0b3J5IGFuZCBMb2NrQmFja0ZvcndhcmRMaXN0IGVu
dW1zIHRvIHVzZSBpbiBwbGFjZSBvZiBib29scy4KKworICAgICAgICBUaGVzZSBhcmd1bWVudHMg
YXJlIG9mdGVuIHBhc3NlZCB1c2luZyBsaXRlcmFscyBhdCB0aGUgY2FsbCBzaXRlLCB3aGVyZSB0
aGUgdXNlIG9mIGJvb2xzIHNldmVyZWx5IGhpbmRlcnMKKyAgICAgICAgdGhlIHJlYWRhYmlsaXR5
IG9mIHRoZSBjb2RlLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6aGFuZGxlQ2xpY2sp
OgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxGb3JtRWxlbWVudDo6c3VibWl0KToKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZUVsZW1l
bnRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjpvcGVu
VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjpzZXRMb2NhdGlv
bik6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6Om9wZW5Jbk5ld1RhYik6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JQYWdlQWdlbnQ6Om5hdmlnYXRlKToKKyAgICAgICAgKiBsb2FkZXIvRm9ybVN1Ym1p
c3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybVN1Ym1pc3Npb246OkZvcm1TdWJtaXNz
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1TdWJtaXNzaW9uOjpjcmVhdGUpOgorICAgICAg
ICAqIGxvYWRlci9Gb3JtU3VibWlzc2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybVN1Ym1p
c3Npb246OmxvY2tIaXN0b3J5KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNoYW5nZUxvY2F0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjp1cmxTZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6bG9hZFVSTEludG9DaGlsZEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpsb2FkRnJhbWVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpsb2FkVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkV2l0aE5h
dmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNsaWVudFJl
ZGlyZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVz
dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOZXdX
aW5kb3dQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWREaWZmZXJl
bnREb2N1bWVudEl0ZW0pOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAg
ICAqIGxvYWRlci9GcmFtZUxvYWRlclR5cGVzLmg6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRp
b25TY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkTmF2aWdhdGlvbjo6
U2NoZWR1bGVkTmF2aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWROYXZpZ2F0
aW9uOjpsb2NrSGlzdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWROYXZpZ2F0aW9u
Ojpsb2NrQmFja0ZvcndhcmRMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZFVSTE5h
dmlnYXRpb246OlNjaGVkdWxlZFVSTE5hdmlnYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2No
ZWR1bGVkUmVkaXJlY3Q6OlNjaGVkdWxlZFJlZGlyZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNj
aGVkdWxlZExvY2F0aW9uQ2hhbmdlOjpTY2hlZHVsZWRMb2NhdGlvbkNoYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjpTY2hlZHVsZWRSZWZyZXNoOjpTY2hlZHVsZWRSZWZyZXNoKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjaGVkdWxlZEhpc3RvcnlOYXZpZ2F0aW9uOjpTY2hlZHVsZWRIaXN0b3J5TmF2
aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRGb3JtU3VibWlzc2lvbjo6U2No
ZWR1bGVkRm9ybVN1Ym1pc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvblNjaGVk
dWxlcjo6c2NoZWR1bGVSZWRpcmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uU2No
ZWR1bGVyOjptdXN0TG9ja0JhY2tGb3J3YXJkTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpOYXZp
Z2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlRm9ybVN1Ym1pc3Npb24pOgorICAgICAg
ICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmg6CisgICAgICAgICogbG9hZGVyL1N1YmZy
YW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YmZyYW1lTG9hZGVyOjpyZXF1ZXN0
RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6U3ViZnJhbWVMb2FkZXI6OnJlcXVlc3RPYmplY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U3ViZnJhbWVMb2FkZXI6OmxvYWRPclJlZGlyZWN0U3ViZnJh
bWUpOgorICAgICAgICAqIGxvYWRlci9TdWJmcmFtZUxvYWRlci5oOgorICAgICAgICAqIHBhZ2Uv
Q29udGV4dE1lbnVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZW5OZXdXaW5k
b3cpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVu
dUl0ZW1TZWxlY3RlZCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RE9NV2luZG93OjpzZXRMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpET01X
aW5kb3c6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6Om9wZW4p
OgorICAgICAgICAqIHN2Zy9TVkdBRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisKIDIwMTQtMDQtMDEgIEpvbiBIb25leWN1
dHQgIDxqaG9uZXljdXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBDcmFzaCBpbiBXZWJDb3JlOjpS
ZW5kZXJMYXllcjo6RmlsdGVySW5mbzo6dXBkYXRlUmVmZXJlbmNlRmlsdGVyQ2xpZW50cwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCmluZGV4IDYyODQ3MGI4ZDIyMWEwNzA0NDFkNjk1NDg5OThiMDE2ZjYyOGNlYWQu
LjA2YzVhZjA3ZDkxYTBjMzM2YWFhNGYzYjZlZDA0Zjg1YTRkYzMxMWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNC0wNC0wMiAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUu
Y29tPgorCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMzExMzU+IEludHJvZHVjZSBM
b2NrSGlzdG9yeSBhbmQgTG9ja0JhY2tGb3J3YXJkTGlzdCBlbnVtcyB0byB1c2UgaW4gcGxhY2Ug
b2YgYm9vbHMuCisKKyAgICAgICAgVGhlc2UgYXJndW1lbnRzIGFyZSBvZnRlbiBwYXNzZWQgdXNp
bmcgbGl0ZXJhbHMgYXQgdGhlIGNhbGwgc2l0ZSwgd2hlcmUgdGhlIHVzZSBvZiBib29scyBzZXZl
cmVseSBoaW5kZXJzCisgICAgICAgIHRoZSByZWFkYWJpbGl0eSBvZiB0aGUgY29kZS4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2Vi
UERGVmlldy5tbToKKyAgICAgICAgKC1bV2ViUERGVmlldyBQREZWaWV3V2lsbENsaWNrT25MaW5r
OndpdGhVUkw6XSk6CisKIDIwMTQtMDQtMDEgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFw
cGxlLmNvbT4KIAogICAgICAgICBNaWdyYXRlIG1vcmUgaGVhZGVycwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDBh
MTZmZmJlMjQ4ZDUwMzgyMGVjZGE1YWQ5N2QzYjU2YmI4NGQ3OGIuLjJlYTJkMjQxMTc3OGYyNjVl
ZDIwMGZkY2EyYTYzZjBlODU5NDdiNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAx
NC0wNC0wMiAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgorCisgICAgICAgIDxodHRwczov
L3dlYmtpdC5vcmcvYi8xMzExMzU+IEludHJvZHVjZSBMb2NrSGlzdG9yeSBhbmQgTG9ja0JhY2tG
b3J3YXJkTGlzdCBlbnVtcyB0byB1c2UgaW4gcGxhY2Ugb2YgYm9vbHMuCisKKyAgICAgICAgVGhl
c2UgYXJndW1lbnRzIGFyZSBvZnRlbiBwYXNzZWQgdXNpbmcgbGl0ZXJhbHMgYXQgdGhlIGNhbGwg
c2l0ZSwgd2hlcmUgdGhlIHVzZSBvZiBib29scyBzZXZlcmVseSBoaW5kZXJzCisgICAgICAgIHRo
ZSByZWFkYWJpbGl0eSBvZiB0aGUgY29kZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1t
OgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmNsaWNrZWRMaW5rKToKKwogMjAxNC0wNC0w
MSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFN0dWIg
b3V0IG1vcmUgV0tOYXZpZ2F0aW9uIHByb3BlcnRpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXgg
MDFiZWYwMjYwNjMwZTc2YWQ4ZjA0MWU0MGM0ZGJhZWU3MGJlZGRlOC4uMjIwZDUzZTM4ODI0ZDYx
YmIzM2FkYjBkODA3MWQzOTAxZmNjMWFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTEzMCwx
MSArMTMwLDExIEBAIF9fWk43V2ViQ29yZTExRmlsZUNob29zZXIxMWNob29zZUZpbGVzRVJLTjNX
VEY2VmVjdG9ySU5TMV82U3RyaW5nRUxtMEVOUzFfMTVDcmFzCiBfX1pON1dlYkNvcmUxMUZpbGVD
aG9vc2VyRDFFdgogX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjExbG9hZEFyY2hpdmVFTjNXVEYx
MFBhc3NSZWZQdHJJTlNfN0FyY2hpdmVFRUUKIF9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxMXNo
b3VsZENsb3NlRXYKLV9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxMXVybFNlbGVjdGVkRVJLTlNf
M1VSTEVSS04zV1RGNlN0cmluZ0VOUzRfMTBQYXNzUmVmUHRySU5TXzVFdmVudEVFRWJiTlNfMThT
aG91bGRTZW5kUmVmZXJyZXJFCitfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMTF1cmxTZWxlY3Rl
ZEVSS05TXzNVUkxFUktOM1dURjZTdHJpbmdFTlM0XzEwUGFzc1JlZlB0cklOU181RXZlbnRFRUVO
U18xMUxvY2tIaXN0b3J5RU5TXzE5TG9ja0JhY2tGb3J3YXJkTGlzdEVOU18xOFNob3VsZFNlbmRS
ZWZlcnJlckUKIF9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxNGRldGFjaENoaWxkcmVuRXYKIF9f
Wk43V2ViQ29yZTExRnJhbWVMb2FkZXIxNHN0b3BBbGxMb2FkZXJzRU5TXzI2Q2xlYXJQcm92aXNp
b25hbEl0ZW1Qb2xpY3lFCiBfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMTZkZXRhY2hGcm9tUGFy
ZW50RXYKLV9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxNmxvYWRGcmFtZVJlcXVlc3RFUktOU18x
NkZyYW1lTG9hZFJlcXVlc3RFYmJOM1dURjEwUGFzc1JlZlB0cklOU181RXZlbnRFRUVOUzVfSU5T
XzlGb3JtU3RhdGVFRUVOU18xOFNob3VsZFNlbmRSZWZlcnJlckUKK19fWk43V2ViQ29yZTExRnJh
bWVMb2FkZXIxNmxvYWRGcmFtZVJlcXVlc3RFUktOU18xNkZyYW1lTG9hZFJlcXVlc3RFTlNfMTFM
b2NrSGlzdG9yeUVOU18xOUxvY2tCYWNrRm9yd2FyZExpc3RFTjNXVEYxMFBhc3NSZWZQdHJJTlNf
NUV2ZW50RUVFTlM3X0lOU185Rm9ybVN0YXRlRUVFTlNfMThTaG91bGRTZW5kUmVmZXJyZXJFCiBf
X1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMTdzdG9wRm9yVXNlckNhbmNlbEViCiBfX1pON1dlYkNv
cmUxMUZyYW1lTG9hZGVyMjFsb2FkVVJMSW50b0NoaWxkRnJhbWVFUktOU18zVVJMRVJLTjNXVEY2
U3RyaW5nRVBOU181RnJhbWVFCiBfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMjJmaW5kRnJhbWVG
b3JOYXZpZ2F0aW9uRVJLTjNXVEYxMkF0b21pY1N0cmluZ0VQTlNfOERvY3VtZW50RQpAQCAtMTE5
Niw2ICsxMTk2LDcgQEAgX19aTjdXZWJDb3JlN0ludFJlY3Q5aW50ZXJzZWN0RVJLUzBfCiBfX1pO
N1dlYkNvcmU3SW50UmVjdEMxRVJLTlNfMTBMYXlvdXRSZWN0RQogX19aTjdXZWJDb3JlN0ludFJl
Y3RDMUVSS05TXzlGbG9hdFJlY3RFCiBfX1pON1dlYkNvcmU3SW50U2l6ZUMxRVJLNkNHU2l6ZQor
X19aTjdXZWJDb3JlN0ludFNpemVDMUVSS05TXzlGbG9hdFNpemVFCiBfX1pON1dlYkNvcmU3VGV4
dFJ1bjE5YWxsb3dzUm91bmRpbmdIYWNrc0V2CiBfX1pON1dlYkNvcmU3VGV4dFJ1bjIxc19hbGxv
d3NSb3VuZGluZ0hhY2tzRQogX19aTjdXZWJDb3JlN1RleHRSdW4yMnNldEFsbG93c1JvdW5kaW5n
SGFja3NFYgpAQCAtMTMwNSwxMCArMTMwNiw4IEBAIF9fWk43V2ViQ29yZTlGbG9hdFJlY3Q1dW5p
dGVFUktTMF8KIF9fWk43V2ViQ29yZTlGbG9hdFJlY3Q5aW50ZXJzZWN0RVJLUzBfCiBfX1pON1dl
YkNvcmU5RmxvYXRSZWN0QzFFUks2Q0dSZWN0CiBfX1pON1dlYkNvcmU5RmxvYXRSZWN0QzFFUktO
U183SW50UmVjdEUKLV9fWk5LN1dlYkNvcmU5RmxvYXRSZWN0OGNvbnRhaW5zRVJLTlNfMTBGbG9h
dFBvaW50RU5TMF8xMkNvbnRhaW5zTW9kZUUKIF9fWk43V2ViQ29yZTlGbG9hdFNpemVDMUVSSzZD
R1NpemUKIF9fWk43V2ViQ29yZTlGbG9hdFNpemVDMUVSS05TXzdJbnRTaXplRQotX19aTjdXZWJD
b3JlN0ludFNpemVDMUVSS05TXzlGbG9hdFNpemVFCiBfX1pON1dlYkNvcmU5Rm9udENhY2hlMTBp
bnZhbGlkYXRlRXYKIF9fWk43V2ViQ29yZTlGb250Q2FjaGUxM2ZvbnREYXRhQ291bnRFdgogX19a
TjdXZWJDb3JlOUZvbnRDYWNoZTIxaW5hY3RpdmVGb250RGF0YUNvdW50RXYKQEAgLTE5MDcsNiAr
MTkwNiw3IEBAIF9fWk5LN1dlYkNvcmU4U2V0dGluZ3MyMHBpY3RvZ3JhcGhGb250RmFtaWx5RTEx
VVNjcmlwdENvZGUKIF9fWk5LN1dlYkNvcmU5RE9NV2luZG93MjdwZW5kaW5nVW5sb2FkRXZlbnRM
aXN0ZW5lcnNFdgogX19aTks3V2ViQ29yZTlGbG9hdFF1YWQxMWJvdW5kaW5nQm94RXYKIF9fWk5L
N1dlYkNvcmU5RmxvYXRSZWN0MTBpbnRlcnNlY3RzRVJLUzBfCitfX1pOSzdXZWJDb3JlOUZsb2F0
UmVjdDhjb250YWluc0VSS05TXzEwRmxvYXRQb2ludEVOUzBfMTJDb250YWluc01vZGVFCiBfX1pO
SzdXZWJDb3JlOUZsb2F0UmVjdDhjb250YWluc0VSS1MwXwogX19aTks3V2ViQ29yZTlGbG9hdFJl
Y3RjdjZDR1JlY3RFdgogX19aTks3V2ViQ29yZTlGbG9hdFNpemUxNGRpYWdvbmFsTGVuZ3RoRXYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKaW5kZXggN2NhNzM3YTAz
ZGI4MGFiMWFlNzFkNWYxZTAwOTc5N2NhODBlYjg0Zi4uODcxMWI4MGNkOWIxYzBhOGM2N2I0Y2Y0
NzUyOThlMGJjYjk2YTY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5j
aG9yRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVu
dC5jcHAKQEAgLTU0Nyw3ICs1NDcsNyBAQCB2b2lkIEhUTUxBbmNob3JFbGVtZW50OjpoYW5kbGVD
bGljayhFdmVudCogZXZlbnQpCiAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5zdGFy
dERvd25sb2FkKHJlcXVlc3QsIGZhc3RHZXRBdHRyaWJ1dGUoZG93bmxvYWRBdHRyKSk7CiAgICAg
fSBlbHNlCiAjZW5kaWYKLSAgICAgICAgZnJhbWUtPmxvYWRlcigpLnVybFNlbGVjdGVkKGt1cmws
IHRhcmdldCgpLCBldmVudCwgZmFsc2UsIGZhbHNlLCBoYXNSZWwoUmVsYXRpb25Ob1JlZmVycmVy
KSA/IE5ldmVyU2VuZFJlZmVycmVyIDogTWF5YmVTZW5kUmVmZXJyZXIpOworICAgICAgICBmcmFt
ZS0+bG9hZGVyKCkudXJsU2VsZWN0ZWQoa3VybCwgdGFyZ2V0KCksIGV2ZW50LCBMb2NrSGlzdG9y
eTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBoYXNSZWwoUmVsYXRpb25Ob1JlZmVycmVy
KSA/IE5ldmVyU2VuZFJlZmVycmVyIDogTWF5YmVTZW5kUmVmZXJyZXIpOwogCiAgICAgc2VuZFBp
bmdzKGt1cmwpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4
IDNkYzc2YjViYWZhOTBjOGNhMmEyZTc0ZWY5NGMzMzRjNzAyNGVmNzcuLjYxYWI2YzM0YTJmNjg0
MDVjMTFjMmQyNzg0OGI0M2ExM2Q3ZTJmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
RWxlbWVudC5jcHAKQEAgLTM0Nyw3ICszNDcsNyBAQCB2b2lkIEhUTUxGb3JtRWxlbWVudDo6c3Vi
bWl0KEV2ZW50KiBldmVudCwgYm9vbCBhY3RpdmF0ZVN1Ym1pdEJ1dHRvbiwgYm9vbCBwcm9jZQog
ICAgIGlmIChuZWVkQnV0dG9uQWN0aXZhdGlvbiAmJiBmaXJzdFN1Y2Nlc3NmdWxTdWJtaXRCdXR0
b24pCiAgICAgICAgIGZpcnN0U3VjY2Vzc2Z1bFN1Ym1pdEJ1dHRvbi0+c2V0QWN0aXZhdGVkU3Vi
bWl0KHRydWUpOwogCi0gICAgYm9vbCBsb2NrSGlzdG9yeSA9ICFwcm9jZXNzaW5nVXNlckdlc3R1
cmU7CisgICAgTG9ja0hpc3RvcnkgbG9ja0hpc3RvcnkgPSBwcm9jZXNzaW5nVXNlckdlc3R1cmUg
PyBMb2NrSGlzdG9yeTo6Tm8gOiBMb2NrSGlzdG9yeTo6WWVzOwogICAgIGZyYW1lLT5sb2FkZXIo
KS5zdWJtaXRGb3JtKEZvcm1TdWJtaXNzaW9uOjpjcmVhdGUodGhpcywgbV9hdHRyaWJ1dGVzLCBl
dmVudCwgbG9ja0hpc3RvcnksIGZvcm1TdWJtaXNzaW9uVHJpZ2dlcikpOwogCiAgICAgaWYgKG5l
ZWRCdXR0b25BY3RpdmF0aW9uICYmIGZpcnN0U3VjY2Vzc2Z1bFN1Ym1pdEJ1dHRvbikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAKaW5kZXggNDM4ZjA1Zjdm
ZDdhODRjMmQwNTE5MmMzMjQ0NjhhMzdiOGY5YmUxYS4uNWIxNTFkMjM2OWFmYjc4NDc1YmRlOTQy
ZDdlOTRmZTY3YzI3NmY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJh
bWVFbGVtZW50QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVt
ZW50QmFzZS5jcHAKQEAgLTczLDcgKzczLDcgQEAgYm9vbCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6
aXNVUkxBbGxvd2VkKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBIVE1MRnJh
bWVFbGVtZW50QmFzZTo6b3BlblVSTChib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9y
d2FyZExpc3QpCit2b2lkIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpvcGVuVVJMKExvY2tIaXN0b3J5
IGxvY2tIaXN0b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9yd2FyZExpc3QpCiB7
CiAgICAgaWYgKCFpc1VSTEFsbG93ZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTgxLDcgKzE4
MSw3IEBAIHZvaWQgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnNldExvY2F0aW9uKGNvbnN0IFN0cmlu
ZyYgc3RyKQogICAgIG1fVVJMID0gQXRvbWljU3RyaW5nKHN0cik7CiAKICAgICBpZiAoaW5Eb2N1
bWVudCgpKQotICAgICAgICBvcGVuVVJMKGZhbHNlLCBmYWxzZSk7CisgICAgICAgIG9wZW5VUkwo
TG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObyk7CiB9CiAKIGJvb2wgSFRN
TEZyYW1lRWxlbWVudEJhc2U6OnN1cHBvcnRzRm9jdXMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oCmluZGV4IGM3YzBhNjQ4MzE2OTc5MTc3ZjlkMGJh
ZDRkZWRmNmFkY2ZjMjZhOTcuLjVkZjc0OWMzYmU1YzE2ZTZjYTIzYjEwZTFjNmNkNjIzMDBjZTNm
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmgKQEAgLTI0
LDYgKzI0LDcgQEAKICNpZm5kZWYgSFRNTEZyYW1lRWxlbWVudEJhc2VfaAogI2RlZmluZSBIVE1M
RnJhbWVFbGVtZW50QmFzZV9oCiAKKyNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5j
bHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIK
IApAQCAtNjQsNyArNjUsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc0ZyYW1lRWxl
bWVudEJhc2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2b2lkIHNl
dE5hbWVBbmRPcGVuVVJMKCk7Ci0gICAgdm9pZCBvcGVuVVJMKGJvb2wgbG9ja0hpc3RvcnkgPSB0
cnVlLCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QgPSB0cnVlKTsKKyAgICB2b2lkIG9wZW5VUkwo
TG9ja0hpc3RvcnkgPSBMb2NrSGlzdG9yeTo6WWVzLCBMb2NrQmFja0ZvcndhcmRMaXN0ID0gTG9j
a0JhY2tGb3J3YXJkTGlzdDo6WWVzKTsKIAogICAgIEF0b21pY1N0cmluZyBtX1VSTDsKICAgICBB
dG9taWNTdHJpbmcgbV9mcmFtZU5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKaW5kZXggYmYxNzkxODQ4
YmIxYmM0ODhhNjE3MzM1NTNjZGNiOTU2YTJkMTMyOC4uNDhhMjYxNzdjZjExY2QxYmJiMmM4ZTAw
YTQ3NmU4ZjMzOTA4MzQyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcApAQCAtMjI0LDcgKzIyNCw3IEBA
IHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6b3BlbkluTmV3VGFiKGNvbnN0IFN0
cmluZyYgdXJsKQogICAgIGZyYW1lLT5wYWdlKCktPnNldE9wZW5lZEJ5RE9NKCk7CiAKICAgICAv
LyBGSVhNRTogV2h5IGRvZXMgb25lIHVzZSBtYWluRnJhbWUgYW5kIHRoZSBvdGhlciBmcmFtZT8K
LSAgICBmcmFtZS0+bG9hZGVyKCkuY2hhbmdlTG9jYXRpb24obWFpbkZyYW1lLmRvY3VtZW50KCkt
PnNlY3VyaXR5T3JpZ2luKCksIGZyYW1lLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTCh1cmwpLCAi
IiwgZmFsc2UsIGZhbHNlKTsKKyAgICBmcmFtZS0+bG9hZGVyKCkuY2hhbmdlTG9jYXRpb24obWFp
bkZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIGZyYW1lLT5kb2N1bWVudCgpLT5j
b21wbGV0ZVVSTCh1cmwpLCAiIiwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0
OjpObyk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6bW92ZVdpbmRv
d0J5KGZsb2F0IHgsIGZsb2F0IHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IGVhOGEzZjMyN2MyMTI4Njk2ZTU2OTBlZTk3MjMwMzg0
YTU1MmM0MWIuLjQ1YmYwZWVlODQ2Zjc3MDllZDQyZTI3NGZkMTE3Zjk2NDgyNDE4ZGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC00
MjksNyArNDI5LDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6Om5hdmlnYXRlKEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgaW5k
aWNhdG9yKERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwogICAgIEZyYW1lJiBmcmFt
ZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7Ci0gICAgZnJhbWUubG9hZGVyKCkuY2hhbmdlTG9jYXRp
b24oZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgZnJhbWUuZG9jdW1lbnQoKS0+
Y29tcGxldGVVUkwodXJsKSwgIiIsIGZhbHNlLCBmYWxzZSk7CisgICAgZnJhbWUubG9hZGVyKCku
Y2hhbmdlTG9jYXRpb24oZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgZnJhbWUu
ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsKSwgIiIsIExvY2tIaXN0b3J5OjpObywgTG9ja0Jh
Y2tGb3J3YXJkTGlzdDo6Tm8pOwogfQogCiBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpQYWdlOjpDb29raWU+IGJ1aWxkT2JqZWN0Rm9yQ29va2llKGNvbnN0IENvb2tp
ZSYgY29va2llKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNz
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKaW5kZXgg
OTU0ZGRkNDk2ZDBiYWYyZWZjMWQ2OTRhNjRlY2RkYWQyM2Q2ZDRhNi4uOTMxODgzNmY4NjUxMzg0
YzFjYzVhYmQ0MGM4NWJjMTg3M2VkNzAxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1
Ym1pc3Npb24uY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBGb3JtU3VibWlzc2lvbjo6QXR0
cmlidXRlczo6Y29weUZyb20oY29uc3QgQXR0cmlidXRlcyYgb3RoZXIpCiAgICAgbV9hY2NlcHRD
aGFyc2V0ID0gb3RoZXIubV9hY2NlcHRDaGFyc2V0OwogfQogCi1pbmxpbmUgRm9ybVN1Ym1pc3Np
b246OkZvcm1TdWJtaXNzaW9uKE1ldGhvZCBtZXRob2QsIGNvbnN0IFVSTCYgYWN0aW9uLCBjb25z
dCBTdHJpbmcmIHRhcmdldCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUGFzc1JlZlB0cjxG
b3JtU3RhdGU+IHN0YXRlLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBkYXRhLCBjb25zdCBTdHJpbmcm
IGJvdW5kYXJ5LCBib29sIGxvY2tIaXN0b3J5LCBQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKK2lu
bGluZSBGb3JtU3VibWlzc2lvbjo6Rm9ybVN1Ym1pc3Npb24oTWV0aG9kIG1ldGhvZCwgY29uc3Qg
VVJMJiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gc3RhdGUsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGRh
dGEsIGNvbnN0IFN0cmluZyYgYm91bmRhcnksIExvY2tIaXN0b3J5IGxvY2tIaXN0b3J5LCBQYXNz
UmVmUHRyPEV2ZW50PiBldmVudCkKICAgICA6IG1fbWV0aG9kKG1ldGhvZCkKICAgICAsIG1fYWN0
aW9uKGFjdGlvbikKICAgICAsIG1fdGFyZ2V0KHRhcmdldCkKQEAgLTEzNyw3ICsxMzcsNyBAQCBp
bmxpbmUgRm9ybVN1Ym1pc3Npb246OkZvcm1TdWJtaXNzaW9uKE1ldGhvZCBtZXRob2QsIGNvbnN0
IFVSTCYgYWN0aW9uLCBjb25zdCBTdAogewogfQogCi1QYXNzUmVmUHRyPEZvcm1TdWJtaXNzaW9u
PiBGb3JtU3VibWlzc2lvbjo6Y3JlYXRlKEhUTUxGb3JtRWxlbWVudCogZm9ybSwgY29uc3QgQXR0
cmlidXRlcyYgYXR0cmlidXRlcywgUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQsIGJvb2wgbG9ja0hp
c3RvcnksIEZvcm1TdWJtaXNzaW9uVHJpZ2dlciB0cmlnZ2VyKQorUGFzc1JlZlB0cjxGb3JtU3Vi
bWlzc2lvbj4gRm9ybVN1Ym1pc3Npb246OmNyZWF0ZShIVE1MRm9ybUVsZW1lbnQqIGZvcm0sIGNv
bnN0IEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50LCBMb2Nr
SGlzdG9yeSBsb2NrSGlzdG9yeSwgRm9ybVN1Ym1pc3Npb25UcmlnZ2VyIHRyaWdnZXIpCiB7CiAg
ICAgQVNTRVJUKGZvcm0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9y
bVN1Ym1pc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5oCmlu
ZGV4IGMyZjgzZDUzZjg5MTUwZWY5MWFmMDllZjNjZDlkNjMxOTQ5YWZkNzkuLjgzMTVmMDIzNDNi
YTA3MTZmYTUwNjlmYTc4NmY4ODk2N2UyMmJmOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Gb3JtU3VibWlzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3Jt
U3VibWlzc2lvbi5oCkBAIC0zMiw2ICszMiw3IEBACiAjZGVmaW5lIEZvcm1TdWJtaXNzaW9uX2gK
IAogI2luY2x1ZGUgIkZvcm1TdGF0ZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIK
ICNpbmNsdWRlICJVUkwuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODgsNyArODksNyBA
QCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyBtX2FjY2VwdENoYXJzZXQ7CiAgICAgfTsKIAotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEZvcm1TdWJtaXNzaW9uPiBjcmVhdGUoSFRNTEZvcm1FbGVtZW50
KiwgY29uc3QgQXR0cmlidXRlcyYsIFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50LCBib29sIGxvY2tI
aXN0b3J5LCBGb3JtU3VibWlzc2lvblRyaWdnZXIpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZv
cm1TdWJtaXNzaW9uPiBjcmVhdGUoSFRNTEZvcm1FbGVtZW50KiwgY29uc3QgQXR0cmlidXRlcyYs
IFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50LCBMb2NrSGlzdG9yeSwgRm9ybVN1Ym1pc3Npb25Ucmln
Z2VyKTsKIAogICAgIHZvaWQgcG9wdWxhdGVGcmFtZUxvYWRSZXF1ZXN0KEZyYW1lTG9hZFJlcXVl
c3QmKTsKICAgICAKQEAgLTEwMiw3ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgRm9ybVN0YXRlKiBz
dGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybVN0YXRlLmdldCgpOyB9CiAgICAgRm9ybURhdGEq
IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1EYXRhLmdldCgpOyB9CiAgICAgY29uc3QgU3Ry
aW5nIGJvdW5kYXJ5KCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZGFyeTsgfQotICAgIGJvb2wgbG9j
a0hpc3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2xvY2tIaXN0b3J5OyB9CisgICAgTG9ja0hpc3Rv
cnkgbG9ja0hpc3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2xvY2tIaXN0b3J5OyB9CiAgICAgRXZl
bnQqIGV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9ldmVudC5nZXQoKTsgfQogCiAgICAgY29uc3Qg
U3RyaW5nJiByZWZlcnJlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJyZXI7IH0KQEAgLTExMSw3
ICsxMTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmln
aW4pIHsgbV9vcmlnaW4gPSBvcmlnaW47IH0KIAogcHJpdmF0ZToKLSAgICBGb3JtU3VibWlzc2lv
bihNZXRob2QsIGNvbnN0IFVSTCYgYWN0aW9uLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBQYXNzUmVmUHRyPEZv
cm1EYXRhPiwgY29uc3QgU3RyaW5nJiBib3VuZGFyeSwgYm9vbCBsb2NrSGlzdG9yeSwgUGFzc1Jl
ZlB0cjxFdmVudD4pOworICAgIEZvcm1TdWJtaXNzaW9uKE1ldGhvZCwgY29uc3QgVVJMJiBhY3Rp
b24sIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBQYXNz
UmVmUHRyPEZvcm1TdGF0ZT4sIFBhc3NSZWZQdHI8Rm9ybURhdGE+LCBjb25zdCBTdHJpbmcmIGJv
dW5kYXJ5LCBMb2NrSGlzdG9yeSwgUGFzc1JlZlB0cjxFdmVudD4pOwogCiAgICAgLy8gRklYTUU6
IEhvbGQgYW4gaW5zdGFuY2Ugb2YgQXR0cmlidXRlcyBpbnN0ZWFkIG9mIGluZGl2aWR1YWwgbWVt
YmVycy4KICAgICBNZXRob2QgbV9tZXRob2Q7CkBAIC0xMjEsNyArMTIyLDcgQEAgcHJpdmF0ZToK
ICAgICBSZWZQdHI8Rm9ybVN0YXRlPiBtX2Zvcm1TdGF0ZTsKICAgICBSZWZQdHI8Rm9ybURhdGE+
IG1fZm9ybURhdGE7CiAgICAgU3RyaW5nIG1fYm91bmRhcnk7Ci0gICAgYm9vbCBtX2xvY2tIaXN0
b3J5OworICAgIExvY2tIaXN0b3J5IG1fbG9ja0hpc3Rvcnk7CiAgICAgUmVmUHRyPEV2ZW50PiBt
X2V2ZW50OwogICAgIFN0cmluZyBtX3JlZmVycmVyOwogICAgIFN0cmluZyBtX29yaWdpbjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGUyYjE2YzJmMWJiNTAyMWM5N2Ux
YmY0OTYzN2QwMDJiNDQ3NGI2NzguLmFjZWY3MzBiNzQwZjUwMzBlNTE4NDE1ZWI2YjRlZTA1Mjc5
ZmIxN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMzE3LDEzICsz
MTcsMTMgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0RGVmZXJzTG9hZGluZyhib29sIGRlZmVycykK
ICAgICB9CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OmNoYW5nZUxvY2F0aW9uKFNlY3VyaXR5T3Jp
Z2luKiBzZWN1cml0eU9yaWdpbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJy
ZXIsIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCwgYm9vbCByZWZy
ZXNoKQordm9pZCBGcmFtZUxvYWRlcjo6Y2hhbmdlTG9jYXRpb24oU2VjdXJpdHlPcmlnaW4qIHNl
Y3VyaXR5T3JpZ2luLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgTG9j
a0hpc3RvcnkgbG9ja0hpc3RvcnksIExvY2tCYWNrRm9yd2FyZExpc3QgbG9ja0JhY2tGb3J3YXJk
TGlzdCwgYm9vbCByZWZyZXNoKQogewogICAgIHVybFNlbGVjdGVkKEZyYW1lTG9hZFJlcXVlc3Qo
c2VjdXJpdHlPcmlnaW4sIFJlc291cmNlUmVxdWVzdCh1cmwsIHJlZmVycmVyLCByZWZyZXNoID8g
UmVsb2FkSWdub3JpbmdDYWNoZURhdGEgOiBVc2VQcm90b2NvbENhY2hlUG9saWN5KSwgIl9zZWxm
IiksCiAgICAgICAgIDAsIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBNYXliZVNl
bmRSZWZlcnJlciwgUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMKTsKIH0KIAotdm9pZCBG
cmFtZUxvYWRlcjo6dXJsU2VsZWN0ZWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGFz
c2VkVGFyZ2V0LCBQYXNzUmVmUHRyPEV2ZW50PiB0cmlnZ2VyaW5nRXZlbnQsIGJvb2wgbG9ja0hp
c3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCwgU2hvdWxkU2VuZFJlZmVycmVyIHNob3Vs
ZFNlbmRSZWZlcnJlcikKK3ZvaWQgRnJhbWVMb2FkZXI6OnVybFNlbGVjdGVkKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHBhc3NlZFRhcmdldCwgUGFzc1JlZlB0cjxFdmVudD4gdHJpZ2dl
cmluZ0V2ZW50LCBMb2NrSGlzdG9yeSBsb2NrSGlzdG9yeSwgTG9ja0JhY2tGb3J3YXJkTGlzdCBs
b2NrQmFja0ZvcndhcmRMaXN0LCBTaG91bGRTZW5kUmVmZXJyZXIgc2hvdWxkU2VuZFJlZmVycmVy
KQogewogICAgIHVybFNlbGVjdGVkKEZyYW1lTG9hZFJlcXVlc3QobV9mcmFtZS5kb2N1bWVudCgp
LT5zZWN1cml0eU9yaWdpbigpLCBSZXNvdXJjZVJlcXVlc3QodXJsKSwgcGFzc2VkVGFyZ2V0KSwK
ICAgICAgICAgdHJpZ2dlcmluZ0V2ZW50LCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlz
dCwgc2hvdWxkU2VuZFJlZmVycmVyLCBEb05vdFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVS
TCk7CkBAIC0zMzEsNyArMzMxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6dXJsU2VsZWN0ZWQoY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGFzc2VkVGFyZ2V0LCBQYXNzUmUKIAogLy8gVGhl
IHNob3VsZFJlcGxhY2VEb2N1bWVudElmSmF2YVNjcmlwdFVSTCBwYXJhbWV0ZXIgd2lsbCBnbyBh
d2F5IHdoZW4gdGhlIEZJWE1FIHRvIGVsaW1pbmF0ZSB0aGUKIC8vIGNvcnJlc3BvbmRpbmcgcGFy
YW1ldGVyIGZyb20gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTCgpIGlz
IGFkZHJlc3NlZC4KLXZvaWQgRnJhbWVMb2FkZXI6OnVybFNlbGVjdGVkKGNvbnN0IEZyYW1lTG9h
ZFJlcXVlc3QmIHBhc3NlZFJlcXVlc3QsIFBhc3NSZWZQdHI8RXZlbnQ+IHRyaWdnZXJpbmdFdmVu
dCwgYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCBsb2NrQmFja0ZvcndhcmRMaXN0LCBTaG91bGRTZW5k
UmVmZXJyZXIgc2hvdWxkU2VuZFJlZmVycmVyLCBTaG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFT
Y3JpcHRVUkwgc2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMKQordm9pZCBGcmFt
ZUxvYWRlcjo6dXJsU2VsZWN0ZWQoY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcGFzc2VkUmVxdWVz
dCwgUGFzc1JlZlB0cjxFdmVudD4gdHJpZ2dlcmluZ0V2ZW50LCBMb2NrSGlzdG9yeSBsb2NrSGlz
dG9yeSwgTG9ja0JhY2tGb3J3YXJkTGlzdCBsb2NrQmFja0ZvcndhcmRMaXN0LCBTaG91bGRTZW5k
UmVmZXJyZXIgc2hvdWxkU2VuZFJlZmVycmVyLCBTaG91bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFT
Y3JpcHRVUkwgc2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMKQogewogICAgIEFT
U0VSVCghbV9zdXBwcmVzc09wZW5lckluTmV3RnJhbWUpOwogCkBAIC05MTQsNyArOTE0LDcgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTEludG9DaGlsZEZyYW1lKGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHJlZmVyZXIsIEYKICAgICAgICAgfQogICAgIH0KIAotICAgIGNoaWxkRnJh
bWUtPmxvYWRlcigpLmxvYWRVUkwodXJsLCByZWZlcmVyLCAiX3NlbGYiLCBmYWxzZSwgRnJhbWVM
b2FkVHlwZVJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdCwgMCwgMCk7CisgICAgY2hp
bGRGcmFtZS0+bG9hZGVyKCkubG9hZFVSTCh1cmwsIHJlZmVyZXIsICJfc2VsZiIsIExvY2tIaXN0
b3J5OjpObywgRnJhbWVMb2FkVHlwZVJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdCwg
MCwgMCk7CiB9CiAKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKQEAg
LTExOTIsNyArMTE5Miw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnNldHVwRm9yUmVwbGFjZSgpCiAg
ICAgZGV0YWNoQ2hpbGRyZW4oKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEZyYW1lUmVx
dWVzdChjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGxvY2tIaXN0b3J5LCBi
b29sIGxvY2tCYWNrRm9yd2FyZExpc3QsCit2b2lkIEZyYW1lTG9hZGVyOjpsb2FkRnJhbWVSZXF1
ZXN0KGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVlc3QsIExvY2tIaXN0b3J5IGxvY2tIaXN0
b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9yd2FyZExpc3QsCiAgICAgUGFzc1Jl
ZlB0cjxFdmVudD4gZXZlbnQsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUsIFNob3Vs
ZFNlbmRSZWZlcnJlciBzaG91bGRTZW5kUmVmZXJyZXIpCiB7ICAgIAogICAgIC8vIFByb3RlY3Qg
ZnJhbWUgZnJvbSBnZXR0aW5nIGJsb3duIGF3YXkgaW5zaWRlIGRpc3BhdGNoQmVmb3JlTG9hZEV2
ZW50IGluIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIuCkBAIC0xMjE3LDcgKzEyMTcsNyBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpsb2FkRnJhbWVSZXF1ZXN0KGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHJl
cXVlc3QsIGJvb2wgbG9ja0hpcwogICAgIEZyYW1lTG9hZFR5cGUgbG9hZFR5cGU7CiAgICAgaWYg
KHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuY2FjaGVQb2xpY3koKSA9PSBSZWxvYWRJZ25vcmlu
Z0NhY2hlRGF0YSkKICAgICAgICAgbG9hZFR5cGUgPSBGcmFtZUxvYWRUeXBlUmVsb2FkOwotICAg
IGVsc2UgaWYgKGxvY2tCYWNrRm9yd2FyZExpc3QpCisgICAgZWxzZSBpZiAobG9ja0JhY2tGb3J3
YXJkTGlzdCA9PSBMb2NrQmFja0ZvcndhcmRMaXN0OjpZZXMpCiAgICAgICAgIGxvYWRUeXBlID0g
RnJhbWVMb2FkVHlwZVJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdDsKICAgICBlbHNl
CiAgICAgICAgIGxvYWRUeXBlID0gRnJhbWVMb2FkVHlwZVN0YW5kYXJkOwpAQCAtMTIzOSw3ICsx
MjM5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEZyYW1lUmVxdWVzdChjb25zdCBGcmFtZUxv
YWRSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGxvY2tIaXMKICAgICB9CiB9CiAKLXZvaWQgRnJhbWVM
b2FkZXI6OmxvYWRVUkwoY29uc3QgVVJMJiBuZXdVUkwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIs
IGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBib29sIGxvY2tIaXN0b3J5LCBGcmFtZUxvYWRUeXBl
IG5ld0xvYWRUeXBlLAordm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTChjb25zdCBVUkwmIG5ld1VS
TCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIExvY2tI
aXN0b3J5IGxvY2tIaXN0b3J5LCBGcmFtZUxvYWRUeXBlIG5ld0xvYWRUeXBlLAogICAgIFBhc3NS
ZWZQdHI8RXZlbnQ+IGV2ZW50LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gcHJwRm9ybVN0YXRlKQog
ewogICAgIGlmIChtX2luU3RvcEFsbExvYWRlcnMpCkBAIC0xMzYyLDEwICsxMzYyLDEwIEBAIHZv
aWQgRnJhbWVMb2FkZXI6OmxvYWQoY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcGFzc2VkUmVxdWVz
dCkKICAgICBsb2FkKGxvYWRlci5nZXQoKSk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OmxvYWRX
aXRoTmF2aWdhdGlvbkFjdGlvbihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgYm9vbCBsb2NrSGlzdG9yeSwgRnJhbWVMb2FkVHlw
ZSB0eXBlLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlKQordm9pZCBGcmFtZUxvYWRl
cjo6bG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBMb2NrSGlzdG9yeSBsb2NrSGlzdG9y
eSwgRnJhbWVMb2FkVHlwZSB0eXBlLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlKQog
ewogICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4gbG9hZGVyID0gbV9jbGllbnQuY3JlYXRlRG9j
dW1lbnRMb2FkZXIocmVxdWVzdCwgZGVmYXVsdFN1YnN0aXR1dGVEYXRhRm9yVVJMKHJlcXVlc3Qu
dXJsKCkpKTsKLSAgICBpZiAobG9ja0hpc3RvcnkgJiYgbV9kb2N1bWVudExvYWRlcikKKyAgICBp
ZiAobG9ja0hpc3RvcnkgPT0gTG9ja0hpc3Rvcnk6OlllcyAmJiBtX2RvY3VtZW50TG9hZGVyKQog
ICAgICAgICBsb2FkZXItPnNldENsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeShtX2RvY3Vt
ZW50TG9hZGVyLT5kaWRDcmVhdGVHbG9iYWxIaXN0b3J5RW50cnkoKSA/IG1fZG9jdW1lbnRMb2Fk
ZXItPnVybEZvckhpc3RvcnkoKS5zdHJpbmcoKSA6IG1fZG9jdW1lbnRMb2FkZXItPmNsaWVudFJl
ZGlyZWN0U291cmNlRm9ySGlzdG9yeSgpKTsKIAogICAgIGxvYWRlci0+c2V0VHJpZ2dlcmluZ0Fj
dGlvbihhY3Rpb24pOwpAQCAtMTk5Niw3ICsxOTk2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2xp
ZW50UmVkaXJlY3RDYW5jZWxsZWRPckZpbmlzaGVkKGJvb2wgY2FuY2VsV2l0aExvYWRJblByb2dy
ZXMKICAgICBtX3NlbnRSZWRpcmVjdE5vdGlmaWNhdGlvbiA9IGZhbHNlOwogfQogCi12b2lkIEZy
YW1lTG9hZGVyOjpjbGllbnRSZWRpcmVjdGVkKGNvbnN0IFVSTCYgdXJsLCBkb3VibGUgc2Vjb25k
cywgZG91YmxlIGZpcmVEYXRlLCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QpCit2b2lkIEZyYW1l
TG9hZGVyOjpjbGllbnRSZWRpcmVjdGVkKGNvbnN0IFVSTCYgdXJsLCBkb3VibGUgc2Vjb25kcywg
ZG91YmxlIGZpcmVEYXRlLCBMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9yd2FyZExpc3Qp
CiB7CiAgICAgbV9jbGllbnQuZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KHVybCwg
c2Vjb25kcywgZmlyZURhdGUpOwogICAgIApAQCAtMjAwOCw3ICsyMDA4LDcgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6Y2xpZW50UmVkaXJlY3RlZChjb25zdCBVUkwmIHVybCwgZG91YmxlIHNlY29uZHMs
IGRvdWJsZSBmaXJlRGEKICAgICAvLyBsb2FkIGFzIHBhcnQgb2YgdGhlIG9yaWdpbmFsIG5hdmln
YXRpb24uIElmIHdlIGRvbid0IGhhdmUgYSBkb2N1bWVudCBsb2FkZXIsIHdlIGhhdmUKICAgICAv
LyBubyAib3JpZ2luYWwiIGxvYWQgb24gd2hpY2ggdG8gYmFzZSBhIHJlZGlyZWN0LCBzbyB3ZSB0
cmVhdCB0aGUgcmVkaXJlY3QgYXMgYSBub3JtYWwgbG9hZC4KICAgICAvLyBMb2FkcyB0cmlnZ2Vy
ZWQgYnkgSmF2YVNjcmlwdCBmb3JtIHN1Ym1pc3Npb25zIG5ldmVyIGNvdW50IGFzIHF1aWNrIHJl
ZGlyZWN0cy4KLSAgICBtX3F1aWNrUmVkaXJlY3RDb21pbmcgPSAobG9ja0JhY2tGb3J3YXJkTGlz
dCB8fCBoaXN0b3J5KCkuY3VycmVudEl0ZW1TaG91bGRCZVJlcGxhY2VkKCkpICYmIG1fZG9jdW1l
bnRMb2FkZXIgJiYgIW1faXNFeGVjdXRpbmdKYXZhU2NyaXB0Rm9ybUFjdGlvbjsKKyAgICBtX3F1
aWNrUmVkaXJlY3RDb21pbmcgPSAobG9ja0JhY2tGb3J3YXJkTGlzdCA9PSBMb2NrQmFja0Zvcndh
cmRMaXN0OjpZZXMgfHwgaGlzdG9yeSgpLmN1cnJlbnRJdGVtU2hvdWxkQmVSZXBsYWNlZCgpKSAm
JiBtX2RvY3VtZW50TG9hZGVyICYmICFtX2lzRXhlY3V0aW5nSmF2YVNjcmlwdEZvcm1BY3Rpb247
CiB9CiAKIGJvb2wgRnJhbWVMb2FkZXI6OnNob3VsZFJlbG9hZChjb25zdCBVUkwmIGN1cnJlbnRV
UkwsIGNvbnN0IFVSTCYgZGVzdGluYXRpb25VUkwpCkBAIC0yNjA3LDcgKzI2MDcsNyBAQCB2b2lk
IEZyYW1lTG9hZGVyOjphZGRIVFRQT3JpZ2luSWZOZWVkZWQoUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBTdHJpbmcmCiAgICAgcmVxdWVzdC5zZXRIVFRQT3JpZ2luKG9yaWdpbik7CiB9
CiAKLXZvaWQgRnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIGluUmVxdWVzdCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgY29uc3QgU3RyaW5nJiBmcmFt
ZU5hbWUsIGJvb2wgbG9ja0hpc3RvcnksIEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUsIFBhc3NSZWZQ
dHI8RXZlbnQ+IGV2ZW50LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gcHJwRm9ybVN0YXRlKQordm9p
ZCBGcmFtZUxvYWRlcjo6bG9hZFBvc3RSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgaW5S
ZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwg
TG9ja0hpc3RvcnkgbG9ja0hpc3RvcnksIEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUsIFBhc3NSZWZQ
dHI8RXZlbnQ+IGV2ZW50LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gcHJwRm9ybVN0YXRlKQogewog
ICAgIFJlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSA9IHBycEZvcm1TdGF0ZTsKIApAQCAtMjk3
NCw3ICsyOTc0LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOZXdXaW5k
b3dQb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXMKICAgICAgICAgbWFpbkZyYW1l
LT5sb2FkZXIoKS5zZXRPcGVuZXIoJmZyYW1lLmdldCgpKTsKICAgICAgICAgbWFpbkZyYW1lLT5k
b2N1bWVudCgpLT5zZXRSZWZlcnJlclBvbGljeShmcmFtZS0+ZG9jdW1lbnQoKS0+cmVmZXJyZXJQ
b2xpY3koKSk7CiAgICAgfQotICAgIG1haW5GcmFtZS0+bG9hZGVyKCkubG9hZFdpdGhOYXZpZ2F0
aW9uQWN0aW9uKHJlcXVlc3QsIE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdCksIGZhbHNlLCBGcmFt
ZUxvYWRUeXBlU3RhbmRhcmQsIGZvcm1TdGF0ZSk7CisgICAgbWFpbkZyYW1lLT5sb2FkZXIoKS5s
b2FkV2l0aE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdCwgTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0
KSwgTG9ja0hpc3Rvcnk6Ok5vLCBGcmFtZUxvYWRUeXBlU3RhbmRhcmQsIGZvcm1TdGF0ZSk7CiB9
CiAKIHZvaWQgRnJhbWVMb2FkZXI6OnJlcXVlc3RGcm9tRGVsZWdhdGUoUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCB1bnNpZ25lZCBsb25nJiBpZGVudGlmaWVyLCBSZXNvdXJjZUVycm9yJiBlcnJv
cikKQEAgLTMyMjgsNyArMzIyOCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWREaWZmZXJlbnRE
b2N1bWVudEl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0sIEZyYW1lTG9hZFR5cGUgbG9hCiAgICAgICAg
IGFjdGlvbiA9IE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdEZvck9yaWdpbmFsVVJMLCBsb2FkVHlw
ZSwgZmFsc2UpOwogICAgIH0KIAotICAgIGxvYWRXaXRoTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0
LCBhY3Rpb24sIGZhbHNlLCBsb2FkVHlwZSwgMCk7CisgICAgbG9hZFdpdGhOYXZpZ2F0aW9uQWN0
aW9uKHJlcXVlc3QsIGFjdGlvbiwgTG9ja0hpc3Rvcnk6Ok5vLCBsb2FkVHlwZSwgMCk7CiB9CiAK
IC8vIExvYWRzIGNvbnRlbnQgaW50byB0aGlzIGZyYW1lLCBhcyBzcGVjaWZpZWQgYnkgaGlzdG9y
eSBpdGVtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IDgyMzliODJlZTUyOGY3
N2VhZDc1Mjc3NTU1NDVjM2E3Y2E3YTZlNWIuLjlmOTA3NzVhOTFhNzljMTI3OTc3NGJkOGUzMjJj
NjJlYzBmMDYzOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC0xMDcsNyAr
MTA3LDcgQEAgcHVibGljOgogCiAgICAgLy8gRklYTUU6IFRoZXNlIGFyZSBhbGwgZnVuY3Rpb25z
IHdoaWNoIHN0YXJ0IGxvYWRzLiBXZSBoYXZlIHRvbyBtYW55LgogICAgIHZvaWQgbG9hZFVSTElu
dG9DaGlsZEZyYW1lKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJlciwgRnJhbWUqKTsK
LSAgICB2b2lkIGxvYWRGcmFtZVJlcXVlc3QoY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIGJvb2wg
bG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCwgIC8vIENhbGxlZCBieSBzdWJt
aXRGb3JtLCBjYWxscyBsb2FkUG9zdFJlcXVlc3QgYW5kIGxvYWRVUkwuCisgICAgdm9pZCBsb2Fk
RnJhbWVSZXF1ZXN0KGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBMb2NrSGlzdG9yeSwgTG9ja0Jh
Y2tGb3J3YXJkTGlzdCwgIC8vIENhbGxlZCBieSBzdWJtaXRGb3JtLCBjYWxscyBsb2FkUG9zdFJl
cXVlc3QgYW5kIGxvYWRVUkwuCiAgICAgICAgIFBhc3NSZWZQdHI8RXZlbnQ+LCBQYXNzUmVmUHRy
PEZvcm1TdGF0ZT4sIFNob3VsZFNlbmRSZWZlcnJlcik7CiAKICAgICB2b2lkIGxvYWQoY29uc3Qg
RnJhbWVMb2FkUmVxdWVzdCYpOwpAQCAtMTE3LDggKzExNyw5IEBAIHB1YmxpYzoKICNlbmRpZgog
ICAgIHVuc2lnbmVkIGxvbmcgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBTdG9yZWRDcmVkZW50aWFscywgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgUmVz
b3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBWZWN0b3I8Y2hhcj4mIGRhdGEpOwogCi0g
ICAgdm9pZCBjaGFuZ2VMb2NhdGlvbihTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYsIGNvbnN0
IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgbG9ja0hpc3RvcnkgPSB0cnVlLCBib29sIGxvY2tCYWNr
Rm9yd2FyZExpc3QgPSB0cnVlLCBib29sIHJlZnJlc2ggPSBmYWxzZSk7Ci0gICAgdm9pZCB1cmxT
ZWxlY3RlZChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgUGFzc1JlZlB0cjxFdmVu
dD4sIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCwgU2hvdWxkU2Vu
ZFJlZmVycmVyKTsKKyAgICB2b2lkIGNoYW5nZUxvY2F0aW9uKFNlY3VyaXR5T3JpZ2luKiwgY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgTG9ja0hpc3RvcnkgPSBMb2NrSGlzdG9y
eTo6WWVzLAorICAgICAgICBMb2NrQmFja0ZvcndhcmRMaXN0ID0gTG9ja0JhY2tGb3J3YXJkTGlz
dDo6WWVzLCBib29sIHJlZnJlc2ggPSBmYWxzZSk7CisgICAgdm9pZCB1cmxTZWxlY3RlZChjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgUGFzc1JlZlB0cjxFdmVudD4sIExvY2tIaXN0
b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0LCBTaG91bGRTZW5kUmVmZXJyZXIpOwogICAgIHZvaWQg
c3VibWl0Rm9ybShQYXNzUmVmUHRyPEZvcm1TdWJtaXNzaW9uPik7CiAKICAgICB2b2lkIHJlbG9h
ZChib29sIGVuZFRvRW5kUmVsb2FkID0gZmFsc2UpOwpAQCAtMjU1LDcgKzI1Niw3IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgY29tcGxldGVkKCk7CiAgICAgYm9vbCBhbGxBbmNlc3RvcnNBcmVDb21w
bGV0ZSgpIGNvbnN0OyAvLyBpbmNsdWRpbmcgdGhpcwotICAgIHZvaWQgY2xpZW50UmVkaXJlY3Rl
ZChjb25zdCBVUkwmLCBkb3VibGUgZGVsYXksIGRvdWJsZSBmaXJlRGF0ZSwgYm9vbCBsb2NrQmFj
a0ZvcndhcmRMaXN0KTsKKyAgICB2b2lkIGNsaWVudFJlZGlyZWN0ZWQoY29uc3QgVVJMJiwgZG91
YmxlIGRlbGF5LCBkb3VibGUgZmlyZURhdGUsIExvY2tCYWNrRm9yd2FyZExpc3QpOwogICAgIHZv
aWQgY2xpZW50UmVkaXJlY3RDYW5jZWxsZWRPckZpbmlzaGVkKGJvb2wgY2FuY2VsV2l0aExvYWRJ
blByb2dyZXNzKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIGlzIHB1YmxpYyBiZWNhdXNlIHRoaXMg
YXN5bmNocm9ub3VzIGNhbGxiYWNrIGZyb20gdGhlIEZyYW1lTG9hZGVyQ2xpZW50CkBAIC0zNDEs
MTggKzM0MiwxOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQo
KTsKIAotICAgIHZvaWQgdXJsU2VsZWN0ZWQoY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIFBhc3NS
ZWZQdHI8RXZlbnQ+LCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExpc3Qs
IFNob3VsZFNlbmRSZWZlcnJlciwgU2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJM
KTsKKyAgICB2b2lkIHVybFNlbGVjdGVkKGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBQYXNzUmVm
UHRyPEV2ZW50PiwgTG9ja0hpc3RvcnksIExvY2tCYWNrRm9yd2FyZExpc3QsIFNob3VsZFNlbmRS
ZWZlcnJlciwgU2hvdWxkUmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMKTsKIAogICAgIHZv
aWQgbG9hZFdpdGhEb2N1bWVudExvYWRlcihEb2N1bWVudExvYWRlciosIEZyYW1lTG9hZFR5cGUs
IFBhc3NSZWZQdHI8Rm9ybVN0YXRlPik7IC8vIENhbGxzIGNvbnRpbnVlTG9hZEFmdGVyTmF2aWdh
dGlvblBvbGljeQogICAgIHZvaWQgbG9hZChEb2N1bWVudExvYWRlciopOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENhbGxzIGxvYWRX
aXRoRG9jdW1lbnRMb2FkZXIgICAKIAogICAgIHZvaWQgbG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9u
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCAgICAgIC8v
IENhbGxzIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIKLSAgICAgICAgYm9vbCBsb2NrSGlzdG9yeSwg
RnJhbWVMb2FkVHlwZSwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+KTsKKyAgICAgICAgTG9ja0hpc3Rv
cnksIEZyYW1lTG9hZFR5cGUsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPik7CiAKICAgICB2b2lkIGxv
YWRQb3N0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHJlZmVy
cmVyLCAgICAgICAgICAgICAgICAvLyBDYWxsZWQgYnkgbG9hZEZyYW1lUmVxdWVzdCwgY2FsbHMg
bG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uCi0gICAgICAgIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1l
LCBib29sIGxvY2tIaXN0b3J5LCBGcmFtZUxvYWRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50PiwgUGFz
c1JlZlB0cjxGb3JtU3RhdGU+KTsKKyAgICAgICAgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIExv
Y2tIaXN0b3J5LCBGcmFtZUxvYWRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50PiwgUGFzc1JlZlB0cjxG
b3JtU3RhdGU+KTsKICAgICB2b2lkIGxvYWRVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlciwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsICAgICAgICAgIC8vIENhbGxlZCBieSBs
b2FkRnJhbWVSZXF1ZXN0LCBjYWxscyBsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24gb3IgZGlzcGF0
Y2hlcyB0byBuYXZpZ2F0aW9uIHBvbGljeSBkZWxlZ2F0ZQotICAgICAgICBib29sIGxvY2tIaXN0
b3J5LCBGcmFtZUxvYWRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50PiwgUGFzc1JlZlB0cjxGb3JtU3Rh
dGU+KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAKKyAgICAgICAgTG9ja0hpc3RvcnksIEZyYW1lTG9hZFR5cGUsIFBhc3NSZWZQdHI8RXZl
bnQ+LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pOwogCiAgICAgYm9vbCBzaG91bGRSZWxvYWQoY29u
c3QgVVJMJiBjdXJyZW50VVJMLCBjb25zdCBVUkwmIGRlc3RpbmF0aW9uVVJMKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlwZXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlclR5cGVzLmgKaW5kZXggN2E4ZDFmMDFhOWYwNWQ4YTRi
NzBiNWE0ZGM4MTU5YzQ1MmY3MjBkZi4uMjkxNzNlNTdmYmI0YmYzMzA1ZWFiYzljNDJkNjcxMTBj
ZWFhMzBhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyVHlw
ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJUeXBlcy5oCkBAIC0x
MTIsNiArMTEyLDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgV2ViR0xQZW5kaW5n
Q3JlYXRpb24KICAgICB9OwogCisgICAgZW51bSBjbGFzcyBMb2NrSGlzdG9yeSB7CisgICAgICAg
IFllcywKKyAgICAgICAgTm8KKyAgICB9OworCisgICAgZW51bSBjbGFzcyBMb2NrQmFja0Zvcndh
cmRMaXN0IHsKKyAgICAgICAgWWVzLAorICAgICAgICBObworICAgIH07CiB9CiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCmluZGV4IDVj
YzY3ZDI4ZTBhNDBlODkzODY5ZGVhNTc2ZGY1YmNlZjg5NzljNDYuLmZmNTk1MDA4Mjc4Y2YzZTY2
MGUyOWM0MjljZWZjMzZmMTIzODQzMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2
aWdhdGlvblNjaGVkdWxlci5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgdW5zaWduZWQgTmF2aWdhdGlv
bkRpc2FibGVyRm9yQmVmb3JlVW5sb2FkOjpzX25hdmlnYXRpb25EaXNhYmxlQ291bnQgPSAwOwog
Y2xhc3MgU2NoZWR1bGVkTmF2aWdhdGlvbiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2No
ZWR1bGVkTmF2aWdhdGlvbik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IFNjaGVkdWxlZE5hdmlnYXRpb24oZG91YmxlIGRlbGF5LCBib29sIGxvY2tIaXN0b3J5LCBib29s
IGxvY2tCYWNrRm9yd2FyZExpc3QsIGJvb2wgd2FzRHVyaW5nTG9hZCwgYm9vbCBpc0xvY2F0aW9u
Q2hhbmdlKQorICAgIFNjaGVkdWxlZE5hdmlnYXRpb24oZG91YmxlIGRlbGF5LCBMb2NrSGlzdG9y
eSBsb2NrSGlzdG9yeSwgTG9ja0JhY2tGb3J3YXJkTGlzdCBsb2NrQmFja0ZvcndhcmRMaXN0LCBi
b29sIHdhc0R1cmluZ0xvYWQsIGJvb2wgaXNMb2NhdGlvbkNoYW5nZSkKICAgICAgICAgOiBtX2Rl
bGF5KGRlbGF5KQogICAgICAgICAsIG1fbG9ja0hpc3RvcnkobG9ja0hpc3RvcnkpCiAgICAgICAg
ICwgbV9sb2NrQmFja0ZvcndhcmRMaXN0KGxvY2tCYWNrRm9yd2FyZExpc3QpCkBAIC03Nyw4ICs3
Nyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RvcFRpbWVyKEZyYW1lJiwgYm9v
bCAvKiBuZXdMb2FkSW5Qcm9ncmVzcyAqLykgeyB9CiAKICAgICBkb3VibGUgZGVsYXkoKSBjb25z
dCB7IHJldHVybiBtX2RlbGF5OyB9Ci0gICAgYm9vbCBsb2NrSGlzdG9yeSgpIGNvbnN0IHsgcmV0
dXJuIG1fbG9ja0hpc3Rvcnk7IH0KLSAgICBib29sIGxvY2tCYWNrRm9yd2FyZExpc3QoKSBjb25z
dCB7IHJldHVybiBtX2xvY2tCYWNrRm9yd2FyZExpc3Q7IH0KKyAgICBMb2NrSGlzdG9yeSBsb2Nr
SGlzdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9ja0hpc3Rvcnk7IH0KKyAgICBMb2NrQmFja0Zv
cndhcmRMaXN0IGxvY2tCYWNrRm9yd2FyZExpc3QoKSBjb25zdCB7IHJldHVybiBtX2xvY2tCYWNr
Rm9yd2FyZExpc3Q7IH0KICAgICBib29sIHdhc0R1cmluZ0xvYWQoKSBjb25zdCB7IHJldHVybiBt
X3dhc0R1cmluZ0xvYWQ7IH0KICAgICBib29sIGlzTG9jYXRpb25DaGFuZ2UoKSBjb25zdCB7IHJl
dHVybiBtX2lzTG9jYXRpb25DaGFuZ2U7IH0KICAgICBib29sIHdhc1VzZXJHZXN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV93YXNVc2VyR2VzdHVyZTsgfQpAQCAtODgsOCArODgsOCBAQCBwcm90ZWN0
ZWQ6CiAKIHByaXZhdGU6CiAgICAgZG91YmxlIG1fZGVsYXk7Ci0gICAgYm9vbCBtX2xvY2tIaXN0
b3J5OwotICAgIGJvb2wgbV9sb2NrQmFja0ZvcndhcmRMaXN0OworICAgIExvY2tIaXN0b3J5IG1f
bG9ja0hpc3Rvcnk7CisgICAgTG9ja0JhY2tGb3J3YXJkTGlzdCBtX2xvY2tCYWNrRm9yd2FyZExp
c3Q7CiAgICAgYm9vbCBtX3dhc0R1cmluZ0xvYWQ7CiAgICAgYm9vbCBtX2lzTG9jYXRpb25DaGFu
Z2U7CiAgICAgYm9vbCBtX3dhc1VzZXJHZXN0dXJlOwpAQCAtOTcsNyArOTcsNyBAQCBwcml2YXRl
OgogCiBjbGFzcyBTY2hlZHVsZWRVUkxOYXZpZ2F0aW9uIDogcHVibGljIFNjaGVkdWxlZE5hdmln
YXRpb24gewogcHJvdGVjdGVkOgotICAgIFNjaGVkdWxlZFVSTE5hdmlnYXRpb24oZG91YmxlIGRl
bGF5LCBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9y
d2FyZExpc3QsIGJvb2wgZHVyaW5nTG9hZCwgYm9vbCBpc0xvY2F0aW9uQ2hhbmdlKQorICAgIFNj
aGVkdWxlZFVSTE5hdmlnYXRpb24oZG91YmxlIGRlbGF5LCBTZWN1cml0eU9yaWdpbiogc2VjdXJp
dHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBMb2Nr
SGlzdG9yeSBsb2NrSGlzdG9yeSwgTG9ja0JhY2tGb3J3YXJkTGlzdCBsb2NrQmFja0ZvcndhcmRM
aXN0LCBib29sIGR1cmluZ0xvYWQsIGJvb2wgaXNMb2NhdGlvbkNoYW5nZSkKICAgICAgICAgOiBT
Y2hlZHVsZWROYXZpZ2F0aW9uKGRlbGF5LCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlz
dCwgZHVyaW5nTG9hZCwgaXNMb2NhdGlvbkNoYW5nZSkKICAgICAgICAgLCBtX3NlY3VyaXR5T3Jp
Z2luKHNlY3VyaXR5T3JpZ2luKQogICAgICAgICAsIG1fdXJsKHVybCkKQEAgLTE0OSw3ICsxNDks
NyBAQCBwcml2YXRlOgogCiBjbGFzcyBTY2hlZHVsZWRSZWRpcmVjdCA6IHB1YmxpYyBTY2hlZHVs
ZWRVUkxOYXZpZ2F0aW9uIHsKIHB1YmxpYzoKLSAgICBTY2hlZHVsZWRSZWRpcmVjdChkb3VibGUg
ZGVsYXksIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiB1cmws
IGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCkKKyAgICBTY2hlZHVs
ZWRSZWRpcmVjdChkb3VibGUgZGVsYXksIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwg
Y29uc3QgU3RyaW5nJiB1cmwsIExvY2tIaXN0b3J5IGxvY2tIaXN0b3J5LCBMb2NrQmFja0Zvcndh
cmRMaXN0IGxvY2tCYWNrRm9yd2FyZExpc3QpCiAgICAgICAgIDogU2NoZWR1bGVkVVJMTmF2aWdh
dGlvbihkZWxheSwgc2VjdXJpdHlPcmlnaW4sIHVybCwgU3RyaW5nKCksIGxvY2tIaXN0b3J5LCBs
b2NrQmFja0ZvcndhcmRMaXN0LCBmYWxzZSwgZmFsc2UpCiAgICAgewogICAgICAgICBjbGVhclVz
ZXJHZXN0dXJlKCk7CkBAIC0xNzAsMTQgKzE3MCwxNCBAQCBwdWJsaWM6CiAKIGNsYXNzIFNjaGVk
dWxlZExvY2F0aW9uQ2hhbmdlIDogcHVibGljIFNjaGVkdWxlZFVSTE5hdmlnYXRpb24gewogcHVi
bGljOgotICAgIFNjaGVkdWxlZExvY2F0aW9uQ2hhbmdlKFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0
eU9yaWdpbiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wg
bG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCwgYm9vbCBkdXJpbmdMb2FkKQor
ICAgIFNjaGVkdWxlZExvY2F0aW9uQ2hhbmdlKFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdp
biwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIExvY2tIaXN0b3J5
IGxvY2tIaXN0b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9yd2FyZExpc3QsIGJv
b2wgZHVyaW5nTG9hZCkKICAgICAgICAgOiBTY2hlZHVsZWRVUkxOYXZpZ2F0aW9uKDAuMCwgc2Vj
dXJpdHlPcmlnaW4sIHVybCwgcmVmZXJyZXIsIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRM
aXN0LCBkdXJpbmdMb2FkLCB0cnVlKSB7IH0KIH07CiAKIGNsYXNzIFNjaGVkdWxlZFJlZnJlc2gg
OiBwdWJsaWMgU2NoZWR1bGVkVVJMTmF2aWdhdGlvbiB7CiBwdWJsaWM6CiAgICAgU2NoZWR1bGVk
UmVmcmVzaChTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQotICAgICAgICA6IFNjaGVkdWxlZFVSTE5hdmlnYXRp
b24oMC4wLCBzZWN1cml0eU9yaWdpbiwgdXJsLCByZWZlcnJlciwgdHJ1ZSwgdHJ1ZSwgZmFsc2Us
IHRydWUpCisgICAgICAgIDogU2NoZWR1bGVkVVJMTmF2aWdhdGlvbigwLjAsIHNlY3VyaXR5T3Jp
Z2luLCB1cmwsIHJlZmVycmVyLCBMb2NrSGlzdG9yeTo6WWVzLCBMb2NrQmFja0ZvcndhcmRMaXN0
OjpZZXMsIGZhbHNlLCB0cnVlKQogICAgIHsKICAgICB9CiAKQEAgLTE5MSw3ICsxOTEsNyBAQCBw
dWJsaWM6CiBjbGFzcyBTY2hlZHVsZWRIaXN0b3J5TmF2aWdhdGlvbiA6IHB1YmxpYyBTY2hlZHVs
ZWROYXZpZ2F0aW9uIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBTY2hlZHVsZWRIaXN0b3J5TmF2
aWdhdGlvbihpbnQgaGlzdG9yeVN0ZXBzKQotICAgICAgICA6IFNjaGVkdWxlZE5hdmlnYXRpb24o
MCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSkKKyAgICAgICAgOiBTY2hlZHVsZWROYXZpZ2F0
aW9uKDAsIExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIGZhbHNlLCB0
cnVlKQogICAgICAgICAsIG1faGlzdG9yeVN0ZXBzKGhpc3RvcnlTdGVwcykKICAgICB7CiAgICAg
fQpAQCAtMjE4LDcgKzIxOCw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIFNjaGVkdWxlZEZvcm1TdWJt
aXNzaW9uIDogcHVibGljIFNjaGVkdWxlZE5hdmlnYXRpb24gewogcHVibGljOgotICAgIFNjaGVk
dWxlZEZvcm1TdWJtaXNzaW9uKFBhc3NSZWZQdHI8Rm9ybVN1Ym1pc3Npb24+IHN1Ym1pc3Npb24s
IGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCwgYm9vbCBkdXJpbmdMb2FkKQorICAgIFNjaGVkdWxl
ZEZvcm1TdWJtaXNzaW9uKFBhc3NSZWZQdHI8Rm9ybVN1Ym1pc3Npb24+IHN1Ym1pc3Npb24sIExv
Y2tCYWNrRm9yd2FyZExpc3QgbG9ja0JhY2tGb3J3YXJkTGlzdCwgYm9vbCBkdXJpbmdMb2FkKQog
ICAgICAgICA6IFNjaGVkdWxlZE5hdmlnYXRpb24oMCwgc3VibWlzc2lvbi0+bG9ja0hpc3Rvcnko
KSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgZHVyaW5nTG9hZCwgdHJ1ZSkKICAgICAgICAgLCBtX3N1
Ym1pc3Npb24oc3VibWlzc2lvbikKICAgICAgICAgLCBtX2hhdmVUb2xkQ2xpZW50KGZhbHNlKQpA
QCAtMzE5LDE2ICszMTksMTggQEAgdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZVJl
ZGlyZWN0KGRvdWJsZSBkZWxheSwgY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgICAgIHJldHVybjsK
IAogICAgIC8vIFdlIHdhbnQgYSBuZXcgYmFjay9mb3J3YXJkIGxpc3QgaXRlbSBpZiB0aGUgcmVm
cmVzaCB0aW1lb3V0IGlzID4gMSBzZWNvbmQuCi0gICAgaWYgKCFtX3JlZGlyZWN0IHx8IGRlbGF5
IDw9IG1fcmVkaXJlY3QtPmRlbGF5KCkpCi0gICAgICAgIHNjaGVkdWxlKHN0ZDo6bWFrZV91bmlx
dWU8U2NoZWR1bGVkUmVkaXJlY3Q+KGRlbGF5LCBtX2ZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5
T3JpZ2luKCksIHVybCwgdHJ1ZSwgZGVsYXkgPD0gMSkpOworICAgIGlmICghbV9yZWRpcmVjdCB8
fCBkZWxheSA8PSBtX3JlZGlyZWN0LT5kZWxheSgpKSB7CisgICAgICAgIExvY2tCYWNrRm9yd2Fy
ZExpc3QgbG9ja0JhY2tGb3J3YXJkTGlzdCA9IGRlbGF5IDw9IDEgPyBMb2NrQmFja0ZvcndhcmRM
aXN0OjpZZXMgOiBMb2NrQmFja0ZvcndhcmRMaXN0OjpObzsKKyAgICAgICAgc2NoZWR1bGUoc3Rk
OjptYWtlX3VuaXF1ZTxTY2hlZHVsZWRSZWRpcmVjdD4oZGVsYXksIG1fZnJhbWUuZG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKSwgdXJsLCBMb2NrSGlzdG9yeTo6WWVzLCBsb2NrQmFja0Zvcndh
cmRMaXN0KSk7CisgICAgfQogfQogCi1ib29sIE5hdmlnYXRpb25TY2hlZHVsZXI6Om11c3RMb2Nr
QmFja0ZvcndhcmRMaXN0KEZyYW1lJiB0YXJnZXRGcmFtZSkKK0xvY2tCYWNrRm9yd2FyZExpc3Qg
TmF2aWdhdGlvblNjaGVkdWxlcjo6bXVzdExvY2tCYWNrRm9yd2FyZExpc3QoRnJhbWUmIHRhcmdl
dEZyYW1lKQogewogICAgIC8vIE5vbi11c2VyIG5hdmlnYXRpb24gYmVmb3JlIHRoZSBwYWdlIGhh
cyBmaW5pc2hlZCBmaXJpbmcgb25sb2FkIHNob3VsZCBub3QgY3JlYXRlIGEgbmV3IGJhY2svZm9y
d2FyZCBpdGVtLgogICAgIC8vIFNlZSBodHRwczovL3dlYmtpdC5vcmcvYi80Mjg2MSBmb3IgdGhl
IG9yaWdpbmFsIG1vdGl2YXRpb24gZm9yIHRoaXMuICAgIAogICAgIGlmICghU2NyaXB0Q29udHJv
bGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkgJiYgdGFyZ2V0RnJhbWUubG9hZGVyKCkuZG9j
dW1lbnRMb2FkZXIoKSAmJiAhdGFyZ2V0RnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+
d2FzT25sb2FkSGFuZGxlZCgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJu
IExvY2tCYWNrRm9yd2FyZExpc3Q6OlllczsKICAgICAKICAgICAvLyBOYXZpZ2F0aW9uIG9mIGEg
c3ViZnJhbWUgZHVyaW5nIGxvYWRpbmcgb2YgYW4gYW5jZXN0b3IgZnJhbWUgZG9lcyBub3QgY3Jl
YXRlIGEgbmV3IGJhY2svZm9yd2FyZCBpdGVtLgogICAgIC8vIFRoZSBkZWZpbml0aW9uIG9mICJk
dXJpbmcgbG9hZCIgaXMgYW55IHRpbWUgYmVmb3JlIGFsbCBoYW5kbGVycyBmb3IgdGhlIGxvYWQg
ZXZlbnQgaGF2ZSBiZWVuIHJ1bi4KQEAgLTMzNiwxOSArMzM4LDIwIEBAIGJvb2wgTmF2aWdhdGlv
blNjaGVkdWxlcjo6bXVzdExvY2tCYWNrRm9yd2FyZExpc3QoRnJhbWUmIHRhcmdldEZyYW1lKQog
ICAgIGZvciAoRnJhbWUqIGFuY2VzdG9yID0gdGFyZ2V0RnJhbWUudHJlZSgpLnBhcmVudCgpOyBh
bmNlc3RvcjsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+dHJlZSgpLnBhcmVudCgpKSB7CiAgICAgICAg
IERvY3VtZW50KiBkb2N1bWVudCA9IGFuY2VzdG9yLT5kb2N1bWVudCgpOwogICAgICAgICBpZiAo
IWFuY2VzdG9yLT5sb2FkZXIoKS5pc0NvbXBsZXRlKCkgfHwgKGRvY3VtZW50ICYmIGRvY3VtZW50
LT5wcm9jZXNzaW5nTG9hZEV2ZW50KCkpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICByZXR1cm4gTG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzOwogICAgIH0KLSAgICByZXR1
cm4gZmFsc2U7CisgICAgcmV0dXJuIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vOwogfQogCi12b2lk
IE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoU2VjdXJpdHlPcmln
aW4qIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiByZWZl
cnJlciwgYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCBsb2NrQmFja0ZvcndhcmRMaXN0KQordm9pZCBO
YXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKFNlY3VyaXR5T3JpZ2lu
KiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJy
ZXIsIExvY2tIaXN0b3J5IGxvY2tIaXN0b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tCYWNr
Rm9yd2FyZExpc3QpCiB7CiAgICAgaWYgKCFzaG91bGRTY2hlZHVsZU5hdmlnYXRpb24odXJsKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIGlmICh1cmwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBsb2NrQmFja0ZvcndhcmRMaXN0ID0gbG9ja0JhY2tGb3J3YXJkTGlzdCB8fCBtdXN0
TG9ja0JhY2tGb3J3YXJkTGlzdChtX2ZyYW1lKTsKKyAgICBpZiAobG9ja0JhY2tGb3J3YXJkTGlz
dCA9PSBMb2NrQmFja0ZvcndhcmRMaXN0OjpObykKKyAgICAgICAgbG9ja0JhY2tGb3J3YXJkTGlz
dCA9IG11c3RMb2NrQmFja0ZvcndhcmRMaXN0KG1fZnJhbWUpOwogCiAgICAgRnJhbWVMb2FkZXIm
IGxvYWRlciA9IG1fZnJhbWUubG9hZGVyKCk7CiAKQEAgLTM4MSwxMCArMzg0LDEyIEBAIHZvaWQg
TmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVGb3JtU3VibWlzc2lvbihQYXNzUmVmUHRyPEZv
cm1TdWJtaXNzaW9uPiBzdWJtCiAgICAgLy8gSWYgdGhpcyBpcyBhIGNoaWxkIGZyYW1lIGFuZCB0
aGUgZm9ybSBzdWJtaXNzaW9uIHdhcyB0cmlnZ2VyZWQgYnkgYSBzY3JpcHQsIGxvY2sgdGhlIGJh
Y2svZm9yd2FyZCBsaXN0CiAgICAgLy8gdG8gbWF0Y2ggSUUgYW5kIE9wZXJhLgogICAgIC8vIFNl
ZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzIzODMgZm9yIHRoZSBv
cmlnaW5hbCBtb3RpdmF0aW9uIGZvciB0aGlzLgotICAgIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlz
dCA9IG11c3RMb2NrQmFja0ZvcndhcmRMaXN0KG1fZnJhbWUpCi0gICAgICAgIHx8IChzdWJtaXNz
aW9uLT5zdGF0ZSgpLT5mb3JtU3VibWlzc2lvblRyaWdnZXIoKSA9PSBTdWJtaXR0ZWRCeUphdmFT
Y3JpcHQKLSAgICAgICAgICAgICYmIG1fZnJhbWUudHJlZSgpLnBhcmVudCgpICYmICFTY3JpcHRD
b250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSk7Ci0KKyAgICBMb2NrQmFja0Zvcndh
cmRMaXN0IGxvY2tCYWNrRm9yd2FyZExpc3QgPSBtdXN0TG9ja0JhY2tGb3J3YXJkTGlzdChtX2Zy
YW1lKTsKKyAgICBpZiAobG9ja0JhY2tGb3J3YXJkTGlzdCA9PSBMb2NrQmFja0ZvcndhcmRMaXN0
OjpObworICAgICAgICAmJiAoc3VibWlzc2lvbi0+c3RhdGUoKS0+Zm9ybVN1Ym1pc3Npb25Ucmln
Z2VyKCkgPT0gU3VibWl0dGVkQnlKYXZhU2NyaXB0ICYmIG1fZnJhbWUudHJlZSgpLnBhcmVudCgp
ICYmICFTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkpIHsKKyAgICAg
ICAgbG9ja0JhY2tGb3J3YXJkTGlzdCA9IExvY2tCYWNrRm9yd2FyZExpc3Q6OlllczsKKyAgICB9
CisgICAgCiAgICAgc2NoZWR1bGUoc3RkOjptYWtlX3VuaXF1ZTxTY2hlZHVsZWRGb3JtU3VibWlz
c2lvbj4oc3VibWlzc2lvbiwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgZHVyaW5nTG9hZCkpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuaAppbmRleCAzZTdh
NmQzZmFkZWVlMTBhNGEyZjJjYWQyNDIyOTZjOWFmMjc2MGE0Li42Y2NkYmNhMDFkMDJjZTAwYmZh
NTU2NDZjMTIwYTJhM2Y2ZmQ5ODQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TmF2aWdhdGlvblNjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0
aW9uU2NoZWR1bGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpZm5kZWYgTmF2aWdhdGlvblNjaGVk
dWxlcl9oCiAjZGVmaW5lIE5hdmlnYXRpb25TY2hlZHVsZXJfaAogCisjaW5jbHVkZSAiRnJhbWVM
b2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTczLDcgKzc0LDggQEAgcHVibGlj
OgogICAgIGJvb2wgbG9jYXRpb25DaGFuZ2VQZW5kaW5nKCk7CiAKICAgICB2b2lkIHNjaGVkdWxl
UmVkaXJlY3QoZG91YmxlIGRlbGF5LCBjb25zdCBTdHJpbmcmIHVybCk7Ci0gICAgdm9pZCBzY2hl
ZHVsZUxvY2F0aW9uQ2hhbmdlKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgbG9ja0hpc3RvcnkgPSB0cnVlLCBib29sIGxvY2tC
YWNrRm9yd2FyZExpc3QgPSB0cnVlKTsKKyAgICB2b2lkIHNjaGVkdWxlTG9jYXRpb25DaGFuZ2Uo
U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJl
ciwgTG9ja0hpc3RvcnkgPSBMb2NrSGlzdG9yeTo6WWVzLAorICAgICAgICBMb2NrQmFja0Zvcndh
cmRMaXN0ID0gTG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzKTsKICAgICB2b2lkIHNjaGVkdWxlRm9y
bVN1Ym1pc3Npb24oUGFzc1JlZlB0cjxGb3JtU3VibWlzc2lvbj4pOwogICAgIHZvaWQgc2NoZWR1
bGVSZWZyZXNoKCk7CiAgICAgdm9pZCBzY2hlZHVsZUhpc3RvcnlOYXZpZ2F0aW9uKGludCBzdGVw
cyk7CkBAIC05MCw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0aW1lckZpcmVkKFRpbWVy
PE5hdmlnYXRpb25TY2hlZHVsZXI+Jik7CiAgICAgdm9pZCBzY2hlZHVsZShzdGQ6OnVuaXF1ZV9w
dHI8U2NoZWR1bGVkTmF2aWdhdGlvbj4pOwogCi0gICAgc3RhdGljIGJvb2wgbXVzdExvY2tCYWNr
Rm9yd2FyZExpc3QoRnJhbWUmIHRhcmdldEZyYW1lKTsKKyAgICBzdGF0aWMgTG9ja0JhY2tGb3J3
YXJkTGlzdCBtdXN0TG9ja0JhY2tGb3J3YXJkTGlzdChGcmFtZSYgdGFyZ2V0RnJhbWUpOwogCiAg
ICAgRnJhbWUmIG1fZnJhbWU7CiAgICAgVGltZXI8TmF2aWdhdGlvblNjaGVkdWxlcj4gbV90aW1l
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwCmluZGV4IDdmYjZiMTA4
YTEzNTg4NGEzOGU0OTkwMGZlYTBiMGZlZjJhNTk5NTkuLjQ1NTdmYWNiYjRjNzRmMWYyNTU4MjVi
NGRlNTliMTRkYWZkMzZmOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJm
cmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVy
LmNwcApAQCAtNzYsNyArNzYsNyBAQCB2b2lkIFN1YmZyYW1lTG9hZGVyOjpjbGVhcigpCiAgICAg
bV9jb250YWluc1BsdWdpbnMgPSBmYWxzZTsKIH0KIAotYm9vbCBTdWJmcmFtZUxvYWRlcjo6cmVx
dWVzdEZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCYgb3duZXJFbGVtZW50LCBjb25zdCBTdHJp
bmcmIHVybFN0cmluZywgY29uc3QgQXRvbWljU3RyaW5nJiBmcmFtZU5hbWUsIGJvb2wgbG9ja0hp
c3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCkKK2Jvb2wgU3ViZnJhbWVMb2FkZXI6OnJl
cXVlc3RGcmFtZShIVE1MRnJhbWVPd25lckVsZW1lbnQmIG93bmVyRWxlbWVudCwgY29uc3QgU3Ry
aW5nJiB1cmxTdHJpbmcsIGNvbnN0IEF0b21pY1N0cmluZyYgZnJhbWVOYW1lLCBMb2NrSGlzdG9y
eSBsb2NrSGlzdG9yeSwgTG9ja0JhY2tGb3J3YXJkTGlzdCBsb2NrQmFja0ZvcndhcmRMaXN0KQog
ewogICAgIC8vIFN1cHBvcnQgZm9yIDxmcmFtZSBzcmM9ImphdmFzY3JpcHQ6c3RyaW5nIj4KICAg
ICBVUkwgc2NyaXB0VVJMOwpAQCAtMjMwLDcgKzIzMCw3IEBAIGJvb2wgU3ViZnJhbWVMb2FkZXI6
OnJlcXVlc3RPYmplY3QoSFRNTFBsdWdJbkltYWdlRWxlbWVudCYgb3duZXJFbGVtZW50LCBjb25z
dCBTCiAgICAgLy8gSWYgdGhlIHBsdWctaW4gZWxlbWVudCBhbHJlYWR5IGNvbnRhaW5zIGEgc3Vi
ZnJhbWUsIGxvYWRPclJlZGlyZWN0U3ViZnJhbWUgd2lsbCByZS11c2UgaXQuIE90aGVyd2lzZSwK
ICAgICAvLyBpdCB3aWxsIGNyZWF0ZSBhIG5ldyBmcmFtZSBhbmQgc2V0IGl0IGFzIHRoZSBSZW5k
ZXJXaWRnZXQncyBXaWRnZXQsIGNhdXNpbmcgd2hhdCB3YXMgcHJldmlvdXNseSAKICAgICAvLyBp
biB0aGUgd2lkZ2V0IHRvIGJlIHRvcm4gZG93bi4KLSAgICByZXR1cm4gbG9hZE9yUmVkaXJlY3RT
dWJmcmFtZShvd25lckVsZW1lbnQsIGNvbXBsZXRlZFVSTCwgZnJhbWVOYW1lLCB0cnVlLCB0cnVl
KTsKKyAgICByZXR1cm4gbG9hZE9yUmVkaXJlY3RTdWJmcmFtZShvd25lckVsZW1lbnQsIGNvbXBs
ZXRlZFVSTCwgZnJhbWVOYW1lLCBMb2NrSGlzdG9yeTo6WWVzLCBMb2NrQmFja0ZvcndhcmRMaXN0
OjpZZXMpOwogfQogCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCkBAIC0zMjAs
NyArMzIwLDcgQEAgUGFzc1JlZlB0cjxXaWRnZXQ+IFN1YmZyYW1lTG9hZGVyOjpjcmVhdGVKYXZh
QXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUmIHNpemUsIEgKICAgICByZXR1cm4gd2lkZ2V0Owog
fQogCi1GcmFtZSogU3ViZnJhbWVMb2FkZXI6OmxvYWRPclJlZGlyZWN0U3ViZnJhbWUoSFRNTEZy
YW1lT3duZXJFbGVtZW50JiBvd25lckVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBBdG9t
aWNTdHJpbmcmIGZyYW1lTmFtZSwgYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCBsb2NrQmFja0Zvcndh
cmRMaXN0KQorRnJhbWUqIFN1YmZyYW1lTG9hZGVyOjpsb2FkT3JSZWRpcmVjdFN1YmZyYW1lKEhU
TUxGcmFtZU93bmVyRWxlbWVudCYgb3duZXJFbGVtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3Qg
QXRvbWljU3RyaW5nJiBmcmFtZU5hbWUsIExvY2tIaXN0b3J5IGxvY2tIaXN0b3J5LCBMb2NrQmFj
a0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9yd2FyZExpc3QpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0g
b3duZXJFbGVtZW50LmNvbnRlbnRGcmFtZSgpOwogICAgIGlmIChmcmFtZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YmZyYW1lTG9hZGVyLmgKaW5kZXggZDFkYzhiYjQ0ZWI3NWFmMmZiNDkzN2NmZjlj
NGQ3NzU2MzgyNjQ0Yy4uNGJmYzM3OGQ1NzU2NTY1YmZlNDlhMTllNmJjYjRmMzJlZTg0MWMxYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmgKQEAgLTU5LDcgKzU5LDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBjbGVhcigpOwogCi0gICAgYm9vbCByZXF1ZXN0RnJhbWUoSFRN
TEZyYW1lT3duZXJFbGVtZW50JiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgZnJhbWVOYW1lLCBib29sIGxvY2tIaXN0b3J5ID0gdHJ1ZSwgYm9vbCBsb2NrQmFja0Zvcndh
cmRMaXN0ID0gdHJ1ZSk7CisgICAgYm9vbCByZXF1ZXN0RnJhbWUoSFRNTEZyYW1lT3duZXJFbGVt
ZW50JiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IEF0b21pY1N0cmluZyYgZnJhbWVOYW1lLCBM
b2NrSGlzdG9yeSA9IExvY2tIaXN0b3J5OjpZZXMsIExvY2tCYWNrRm9yd2FyZExpc3QgPSBMb2Nr
QmFja0ZvcndhcmRMaXN0OjpZZXMpOwogICAgIGJvb2wgcmVxdWVzdE9iamVjdChIVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50JiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IEF0b21pY1N0cmluZyYgZnJh
bWVOYW1lLAogICAgICAgICBjb25zdCBTdHJpbmcmIHNlcnZpY2VUeXBlLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKTsK
IApAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgYm9vbCByZXF1ZXN0
UGx1Z2luKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
IHNlcnZpY2VUeXBlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBib29sIHVzZUZhbGxiYWNrKTsKLSAgICBGcmFtZSog
bG9hZE9yUmVkaXJlY3RTdWJmcmFtZShIVE1MRnJhbWVPd25lckVsZW1lbnQmLCBjb25zdCBVUkwm
LCBjb25zdCBBdG9taWNTdHJpbmcmIGZyYW1lTmFtZSwgYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCBs
b2NrQmFja0ZvcndhcmRMaXN0KTsKKyAgICBGcmFtZSogbG9hZE9yUmVkaXJlY3RTdWJmcmFtZShI
VE1MRnJhbWVPd25lckVsZW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBBdG9taWNTdHJpbmcmIGZy
YW1lTmFtZSwgTG9ja0hpc3RvcnksIExvY2tCYWNrRm9yd2FyZExpc3QpOwogICAgIEZyYW1lKiBs
b2FkU3ViZnJhbWUoSFRNTEZyYW1lT3duZXJFbGVtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKTsKICAgICBib29sIGxvYWRQbHVnaW4o
SFRNTFBsdWdJbkltYWdlRWxlbWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGFyYW1WYWx1ZXMsIGJvb2wgdXNlRmFsbGJhY2spOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKaW5kZXggYTUyOWJkM2NiM2U2ODkwMjA3NWM2
OTFkNTZiMmRjYjAyM2ZhYzU2OS4uMTdhZTQ1Njk3YzJkNjM1YzgyNzY0YWFjZmY1MjdkYjdkNzVh
OGQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNw
cApAQCAtMjA2LDcgKzIwNiw3IEBAIHN0YXRpYyB2b2lkIG9wZW5OZXdXaW5kb3coY29uc3QgVVJM
JiB1cmxUb0xvYWQsIEZyYW1lKiBmcmFtZSkKICAgICBpZiAoIW5ld1BhZ2UpCiAgICAgICAgIHJl
dHVybjsKICAgICBuZXdQYWdlLT5jaHJvbWUoKS5zaG93KCk7Ci0gICAgbmV3UGFnZS0+bWFpbkZy
YW1lKCkubG9hZGVyKCkubG9hZEZyYW1lUmVxdWVzdChyZXF1ZXN0LCBmYWxzZSwgZmFsc2UsIDAs
IDAsIE1heWJlU2VuZFJlZmVycmVyKTsKKyAgICBuZXdQYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIo
KS5sb2FkRnJhbWVSZXF1ZXN0KHJlcXVlc3QsIExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3
YXJkTGlzdDo6Tm8sIDAsIDAsIE1heWJlU2VuZFJlZmVycmVyKTsKIH0KIAogI2lmIFBMQVRGT1JN
KEdUSykKQEAgLTQwNSwxMiArNDA1LDEyIEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpj
b250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qIGl0ZW0pCiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnT3Blbkxpbms6CiAgICAgICAgIGlmIChG
cmFtZSogdGFyZ2V0RnJhbWUgPSBtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLnRhcmdldEZyYW1l
KCkpCi0gICAgICAgICAgICB0YXJnZXRGcmFtZS0+bG9hZGVyKCkubG9hZEZyYW1lUmVxdWVzdChG
cmFtZUxvYWRSZXF1ZXN0KGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBSZXNv
dXJjZVJlcXVlc3QobV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5hYnNvbHV0ZUxpbmtVUkwoKSwg
ZnJhbWUtPmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSkpLCBmYWxzZSwgZmFsc2UsIDAsIDAs
IE1heWJlU2VuZFJlZmVycmVyKTsKKyAgICAgICAgICAgIHRhcmdldEZyYW1lLT5sb2FkZXIoKS5s
b2FkRnJhbWVSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QoZnJhbWUtPmRvY3VtZW50KCktPnNlY3Vy
aXR5T3JpZ2luKCksIFJlc291cmNlUmVxdWVzdChtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLmFi
c29sdXRlTGlua1VSTCgpLCBmcmFtZS0+bG9hZGVyKCkub3V0Z29pbmdSZWZlcnJlcigpKSksIExv
Y2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIDAsIDAsIE1heWJlU2VuZFJl
ZmVycmVyKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgb3Blbk5ld1dpbmRvdyhtX2NvbnRl
eHQuaGl0VGVzdFJlc3VsdCgpLmFic29sdXRlTGlua1VSTCgpLCBmcmFtZSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnT3BlbkxpbmtJblRoaXNXaW5kb3c6Ci0g
ICAgICAgIGZyYW1lLT5sb2FkZXIoKS5sb2FkRnJhbWVSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3Qo
ZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIFJlc291cmNlUmVxdWVzdChtX2Nv
bnRleHQuaGl0VGVzdFJlc3VsdCgpLmFic29sdXRlTGlua1VSTCgpLCBmcmFtZS0+bG9hZGVyKCku
b3V0Z29pbmdSZWZlcnJlcigpKSksIGZhbHNlLCBmYWxzZSwgMCwgMCwgTWF5YmVTZW5kUmVmZXJy
ZXIpOworICAgICAgICBmcmFtZS0+bG9hZGVyKCkubG9hZEZyYW1lUmVxdWVzdChGcmFtZUxvYWRS
ZXF1ZXN0KGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBSZXNvdXJjZVJlcXVl
c3QobV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5hYnNvbHV0ZUxpbmtVUkwoKSwgZnJhbWUtPmxv
YWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSkpLCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9y
d2FyZExpc3Q6Ok5vLCAwLCAwLCBNYXliZVNlbmRSZWZlcnJlcik7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQm9sZDoKICAgICAgICAgZnJhbWUtPmVkaXRvcigp
LmNvbW1hbmQoIlRvZ2dsZUJvbGQiKS5leGVjdXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5j
cHAKaW5kZXggYTRlYzdjZDA2ZjhlZDY4MTc5N2JmNTlmZTAyZWJlZmIzZjRjZTYzMC4uNmUzMDFk
Mjc4MDRhZGQwMGQ1NzIzMmI3MjE3NDE3M2YxZDk4MmI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmNwcApAQCAtMTkyNywxMSArMTkyNywxMiBAQCB2b2lkIERPTVdpbmRvdzo6c2V0TG9jYXRp
b24oY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBETwog
ICAgICAgICByZXR1cm47CiAKICAgICAvLyBXZSB3YW50IGEgbmV3IGhpc3RvcnkgaXRlbSBpZiB3
ZSBhcmUgcHJvY2Vzc2luZyBhIHVzZXIgZ2VzdHVyZS4KKyAgICBMb2NrSGlzdG9yeSBsb2NrSGlz
dG9yeSA9IChsb2NraW5nICE9IExvY2tIaXN0b3J5QmFzZWRPbkdlc3R1cmVTdGF0ZSB8fCAhU2Ny
aXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpID8gTG9ja0hpc3Rvcnk6Olll
cyA6IExvY2tIaXN0b3J5OjpObzsKKyAgICBMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9y
d2FyZExpc3QgPSAobG9ja2luZyAhPSBMb2NrSGlzdG9yeUJhc2VkT25HZXN0dXJlU3RhdGUpID8g
TG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzIDogTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm87CiAgICAg
bV9mcmFtZS0+bmF2aWdhdGlvblNjaGVkdWxlcigpLnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoYWN0
aXZlRG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCksCiAgICAgICAgIC8vIEZJWE1FOiBXaGF0IGlm
IGFjdGl2ZURvY3VtZW50KCktPmZyYW1lKCkgaXMgMD8KICAgICAgICAgY29tcGxldGVkVVJMLCBh
Y3RpdmVEb2N1bWVudC0+ZnJhbWUoKS0+bG9hZGVyKCkub3V0Z29pbmdSZWZlcnJlcigpLAotICAg
ICAgICBsb2NraW5nICE9IExvY2tIaXN0b3J5QmFzZWRPbkdlc3R1cmVTdGF0ZSB8fCAhU2NyaXB0
Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCksCi0gICAgICAgIGxvY2tpbmcgIT0g
TG9ja0hpc3RvcnlCYXNlZE9uR2VzdHVyZVN0YXRlKTsKKyAgICAgICAgbG9ja0hpc3RvcnksIGxv
Y2tCYWNrRm9yd2FyZExpc3QpOwogfQogCiB2b2lkIERPTVdpbmRvdzo6cHJpbnRFcnJvck1lc3Nh
Z2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpAQCAtMjA0MywxMCArMjA0NCwxMCBAQCBQYXNzUmVm
UHRyPEZyYW1lPiBET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyhjb25zdCBTdHJpbmcmIHVybFN0cmlu
ZywgY29uc3QgQXRvbWljUwogICAgICAgICBwcmVwYXJlRGlhbG9nRnVuY3Rpb24oKm5ld0ZyYW1l
LT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSk7CiAKICAgICBpZiAoY3JlYXRlZCkKLSAgICAgICAg
bmV3RnJhbWUtPmxvYWRlcigpLmNoYW5nZUxvY2F0aW9uKGFjdGl2ZVdpbmRvdy5kb2N1bWVudCgp
LT5zZWN1cml0eU9yaWdpbigpLCBjb21wbGV0ZWRVUkwsIHJlZmVycmVyLCBmYWxzZSwgZmFsc2Up
OworICAgICAgICBuZXdGcmFtZS0+bG9hZGVyKCkuY2hhbmdlTG9jYXRpb24oYWN0aXZlV2luZG93
LmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIGNvbXBsZXRlZFVSTCwgcmVmZXJyZXIsIExv
Y2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8pOwogICAgIGVsc2UgaWYgKCF1
cmxTdHJpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGJvb2wgbG9ja0hpc3RvcnkgPSAhU2NyaXB0
Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCk7Ci0gICAgICAgIG5ld0ZyYW1lLT5u
YXZpZ2F0aW9uU2NoZWR1bGVyKCkuc2NoZWR1bGVMb2NhdGlvbkNoYW5nZShhY3RpdmVXaW5kb3cu
ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgY29tcGxldGVkVVJMLnN0cmluZygpLCByZWZl
cnJlciwgbG9ja0hpc3RvcnksIGZhbHNlKTsKKyAgICAgICAgTG9ja0hpc3RvcnkgbG9ja0hpc3Rv
cnkgPSBTY3JpcHRDb250cm9sbGVyOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSA/IExvY2tIaXN0
b3J5OjpObyA6IExvY2tIaXN0b3J5OjpZZXM7CisgICAgICAgIG5ld0ZyYW1lLT5uYXZpZ2F0aW9u
U2NoZWR1bGVyKCkuc2NoZWR1bGVMb2NhdGlvbkNoYW5nZShhY3RpdmVXaW5kb3cuZG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKSwgY29tcGxldGVkVVJMLnN0cmluZygpLCByZWZlcnJlciwgbG9j
a0hpc3RvcnksIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vKTsKICAgICB9CiAKICAgICAvLyBOYXZp
Z2F0aW5nIHRoZSBuZXcgZnJhbWUgY291bGQgcmVzdWx0IGluIGl0IGJlaW5nIGRldGFjaGVkIGZy
b20gaXRzIHBhZ2UgYnkgYSBuYXZpZ2F0aW9uIHBvbGljeSBkZWxlZ2F0ZS4KQEAgLTIxMDAsMTMg
KzIxMDEsOSBAQCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gRE9NV2luZG93OjpvcGVuKGNvbnN0IFN0
cmluZyYgdXJsU3RyaW5nLCBjb25zdCBBdG9taWNTdHJpbgogCiAgICAgICAgIC8vIEZvciB3aGF0
ZXZlciByZWFzb24sIEZpcmVmb3ggdXNlcyB0aGUgZmlyc3Qgd2luZG93IHJhdGhlciB0aGFuIHRo
ZSBhY3RpdmUgd2luZG93IHRvCiAgICAgICAgIC8vIGRldGVybWluZSB0aGUgb3V0Z29pbmcgcmVm
ZXJyZXIuIFdlIHJlcGxpY2F0ZSB0aGF0IGJlaGF2aW9yIGhlcmUuCi0gICAgICAgIGJvb2wgbG9j
a0hpc3RvcnkgPSAhU2NyaXB0Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCk7Ci0g
ICAgICAgIHRhcmdldEZyYW1lLT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkuc2NoZWR1bGVMb2NhdGlv
bkNoYW5nZSgKLSAgICAgICAgICAgIGFjdGl2ZURvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLAot
ICAgICAgICAgICAgY29tcGxldGVkVVJMLAotICAgICAgICAgICAgZmlyc3RGcmFtZS0+bG9hZGVy
KCkub3V0Z29pbmdSZWZlcnJlcigpLAotICAgICAgICAgICAgbG9ja0hpc3RvcnksCi0gICAgICAg
ICAgICBmYWxzZSk7CisgICAgICAgIExvY2tIaXN0b3J5IGxvY2tIaXN0b3J5ID0gU2NyaXB0Q29u
dHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkgPyBMb2NrSGlzdG9yeTo6Tm8gOiBMb2Nr
SGlzdG9yeTo6WWVzOworICAgICAgICB0YXJnZXRGcmFtZS0+bmF2aWdhdGlvblNjaGVkdWxlcigp
LnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoYWN0aXZlRG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCks
IGNvbXBsZXRlZFVSTCwgZmlyc3RGcmFtZS0+bG9hZGVyKCkub3V0Z29pbmdSZWZlcnJlcigpLAor
ICAgICAgICAgICAgbG9ja0hpc3RvcnksIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vKTsKICAgICAg
ICAgcmV0dXJuIHRhcmdldEZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCmluZGV4IGYxZWI3ODhjN2YxYzQ4YWI1YTkzZWM1
OTk4NmIwMDUwM2MxZWI0Y2IuLmFlNzA3NGVlZTBkMmY2ZmVmNzg2NWY4ZTI0M2Y5OWJmNWNmMDBh
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIHZv
aWQgU1ZHQUVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgICAg
ICAgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgICAgICAgICAgaWYg
KCFmcmFtZSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBmcmFtZS0+bG9h
ZGVyKCkudXJsU2VsZWN0ZWQoZG9jdW1lbnQoKS5jb21wbGV0ZVVSTCh1cmwpLCB0YXJnZXQsIGV2
ZW50LCBmYWxzZSwgZmFsc2UsIE1heWJlU2VuZFJlZmVycmVyKTsKKyAgICAgICAgICAgIGZyYW1l
LT5sb2FkZXIoKS51cmxTZWxlY3RlZChkb2N1bWVudCgpLmNvbXBsZXRlVVJMKHVybCksIHRhcmdl
dCwgZXZlbnQsIExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIE1heWJl
U2VuZFJlZmVycmVyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbQppbmRleCAxMGE4NjNmNTMwOTE4M2Yy
MGVlOTc5MTc0YTRjYWU2NDk0NTA2MzVjLi5iMTA3NGYzODkxMGUxM2EzN2IzNjVjMzY4ZTM4MTA1
OWFhYjdhNGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlBERlZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tCkBAIC0x
MDU2LDcgKzEwNTYsNyBAQCBzdGF0aWMgQk9PTCBpc0ZyYW1lSW5SYW5nZShXZWJGcmFtZSAqZnJh
bWUsIERPTVJhbmdlICpyYW5nZSkKIAogICAgIC8vIENhbGwgdG8gdGhlIGZyYW1lIGxvYWRlciBi
ZWNhdXNlIHRoaXMgaXMgd2hlcmUgb3VyIHNlY3VyaXR5IGNoZWNrcyBhcmUgbWFkZS4KICAgICBG
cmFtZSogZnJhbWUgPSBjb3JlKFtkYXRhU291cmNlIHdlYkZyYW1lXSk7Ci0gICAgZnJhbWUtPmxv
YWRlcigpLmxvYWRGcmFtZVJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdChmcmFtZS0+ZG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKSwgUmVzb3VyY2VSZXF1ZXN0KFVSTCkpLCBmYWxzZSwgZmFsc2Us
IGV2ZW50LmdldCgpLCAwLCBNYXliZVNlbmRSZWZlcnJlcik7CisgICAgZnJhbWUtPmxvYWRlcigp
LmxvYWRGcmFtZVJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdChmcmFtZS0+ZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKSwgUmVzb3VyY2VSZXF1ZXN0KFVSTCkpLCBMb2NrSGlzdG9yeTo6Tm8sIExv
Y2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBldmVudC5nZXQoKSwgMCwgTWF5YmVTZW5kUmVmZXJyZXIp
OwogfQogCiAtICh2b2lkKVBERlZpZXdPcGVuUERGSW5OYXRpdmVBcHBsaWNhdGlvbjooUERGVmll
dyAqKXNlbmRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5tbQppbmRleCBlMGQ4MDNjOTg3N2M2MWYzZjMxZDMyM2Q5Y2NiZDJjOWFiYmYy
ODVhLi5kMDFlMDVmMDE4ODhkNmRjMWVhMWNmYWRiMTFlY2Q3MGNmYWE3MDA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAt
MTU1OCw3ICsxNTU4LDcgQEAgdm9pZCBQREZQbHVnaW46OmNsaWNrZWRMaW5rKE5TVVJMICp1cmwp
CiAgICAgaWYgKG1fbGFzdE1vdXNlRXZlbnQudHlwZSgpICE9IFdlYkV2ZW50OjpOb1R5cGUpCiAg
ICAgICAgIGNvcmVFdmVudCA9IE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xpY2tF
dmVudCwgZnJhbWUtPmRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCksIHBsYXRmb3JtKG1fbGFzdE1v
dXNlRXZlbnQpLCAwLCAwKTsKIAotICAgIGZyYW1lLT5sb2FkZXIoKS51cmxTZWxlY3RlZCh1cmws
IGVtcHR5U3RyaW5nKCksIGNvcmVFdmVudC5nZXQoKSwgZmFsc2UsIGZhbHNlLCBNYXliZVNlbmRS
ZWZlcnJlcik7CisgICAgZnJhbWUtPmxvYWRlcigpLnVybFNlbGVjdGVkKHVybCwgZW1wdHlTdHJp
bmcoKSwgY29yZUV2ZW50LmdldCgpLCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExp
c3Q6Ok5vLCBNYXliZVNlbmRSZWZlcnJlcik7CiB9CiAKIHZvaWQgUERGUGx1Z2luOjpzZXRBY3Rp
dmVBbm5vdGF0aW9uKFBERkFubm90YXRpb24gKmFubm90YXRpb24pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4
dE1lbnVDbGllbnQuY3BwCmluZGV4IGNlYzMxN2Y1Y2I0NzY2NTZmNmU2NjNkNjMyODM0NTg1OGY3
YTUxZjQuLjNmMTRmMTg5MGZkMjBjNTc1MDIwNjYyNGM2OTMxMzdmZGNmOTcxMTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1l
bnVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ29udGV4dE1lbnVDbGllbnQuY3BwCkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgV2ViQ29u
dGV4dE1lbnVDbGllbnQ6OnNlYXJjaFdpdGhHb29nbGUoY29uc3QgRnJhbWUqIGZyYW1lKQogCiAg
ICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKSB7CiAgICAgICAgIFVzZXJHZXN0dXJl
SW5kaWNhdG9yIGluZGljYXRvcihEZWZpbml0ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKLSAg
ICAgICAgcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkudXJsU2VsZWN0ZWQoVVJMKFBhcnNlZFVS
TFN0cmluZywgdXJsKSwgU3RyaW5nKCksIDAsIGZhbHNlLCBmYWxzZSwgTWF5YmVTZW5kUmVmZXJy
ZXIpOworICAgICAgICBwYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS51cmxTZWxlY3RlZChVUkwo
UGFyc2VkVVJMU3RyaW5nLCB1cmwpLCBTdHJpbmcoKSwgMCwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2Nr
QmFja0ZvcndhcmRMaXN0OjpObywgTWF5YmVTZW5kUmVmZXJyZXIpOwogICAgIH0KIH0KICNlbmRp
Zgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>