<?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>158038</bug_id>
          
          <creation_ts>2016-05-24 12:41:08 -0700</creation_ts>
          <short_desc>Modern IDB: (Workers) Eliminate race in getting the ScriptExecutionContext and using it</short_desc>
          <delta_ts>2016-05-24 14:57:03 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=158004</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>149117</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jsbell</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1195972</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-24 12:41:08 -0700</bug_when>
    <thetext>Modern IDB: (Workers) Eliminate race in getting the ScriptExecutionContext and using it

This is spun off from https://bugs.webkit.org/show_bug.cgi?id=158004, and a full description of the issue can be found there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1195977</commentid>
    <comment_count>1</comment_count>
      <attachid>279692</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-24 12:52:01 -0700</bug_when>
    <thetext>Created attachment 279692
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1195998</commentid>
    <comment_count>2</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-24 13:29:56 -0700</bug_when>
    <thetext>Definitely seems to have caused some classes of issues in mac WK2.

Trying to report locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1196008</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-24 13:48:08 -0700</bug_when>
    <thetext>They cleared up on the second try, which is unfortunately, because I wanted the crash logs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1196011</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-24 13:55:00 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; They cleared up on the second try, which is unfortunately, because I wanted
&gt; the crash logs.

Yah... the crash logs were entirely unrelated. Just a really weird bad test run...! o_O</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1196040</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-24 14:57:03 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/201356</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279692</attachid>
            <date>2016-05-24 12:52:01 -0700</date>
            <delta_ts>2016-05-24 13:10:07 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>45217</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0NzAwYjhjLi44MjM4Y2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEy
IEBACisyMDE2LTA1LTI0ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAg
ICAgICBNb2Rlcm4gSURCOiAoV29ya2VycykgRWxpbWluYXRlIHJhY2UgaW4gZ2V0dGluZyB0aGUg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCBhbmQgdXNpbmcgaXQuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgwMzgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKFJlc29sdmVzIHBvdGVu
dGlhbCBmbGFrZXMgaW4gZXhpc3RpbmcgdGVzdHMpLgorICAgICAgICAKKyAgICAgICAgV2hlbiB0
aGUgbWFpbiB0aHJlYWQgaXMgdHJ5aW5nIHRvIHBvc3QgYSB0YXNrIHRvIGEgd29ya2VyIHRocmVh
ZCdzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHRoZXJlIGlzIGEgcmFjZQorICAgICAgICBiZXR3
ZWVuIGNoZWNraW5nIHRoYXQgdGhlIGNvbnRleHQgc3RpbGwgZXhpc3RzIGFuZCBhY3R1YWxseSB1
c2luZyBpdC4KKyAgICAgICAgCisgICAgICAgIFRoZSBzb2x1dGlvbiBpcyB0byBhZGQgYSBuZXcg
Y2xhc3MgLSBJREJBY3RpdmVET01PYmplY3QgLSB3aGljaCBkb2VzIGEgZmV3IHRoaW5ncyB0aGlu
Z3M6CisgICAgICAgIDEgLSBSZW1lbWJlcnMgaXRzIG9yaWdpbiB0aHJlYWQuCisgICAgICAgIDIg
LSBHdWFyZHMgY2xlYXJpbmcgaXRzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgd2l0aCBhIExvY2su
CisgICAgICAgIDMgLSBBZGRzIGEgdGVtcGxhdGVkICJwZXJmb3JtQ2FsbGJhY2tPbk9yaWdpblRo
cmVhZCIgdGhhdCB1c2VzIHRoZSBzYW1lIExvY2sgdG8gbWFrZSBzdXJlIHBvc3RpbmcgdGhlIHRh
c2sgdG8KKyAgICAgICAgICAgIHRoZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0J3MgUnVuTG9vcCBp
cyBzYWZlLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQWN0aXZlRE9NT2JqZWN0
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJREJBY3RpdmVET01PYmplY3Q6Om9yaWdpblRocmVhZElE
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkFjdGl2ZURPTU9iamVjdDo6cGVyZm9ybUNhbGxiYWNr
T25PcmlnaW5UaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCQWN0aXZlRE9NT2JqZWN0OjpJ
REJBY3RpdmVET01PYmplY3QpOgorICAgICAgICAKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6SURCRGF0
YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6On5JREJEYXRhYmFzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6aGFzUGVuZGluZ0FjdGl2aXR5KToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRh
dGFiYXNlOjp2ZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpvYmplY3RT
dG9yZU5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RT
dG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkRhdGFiYXNlOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRh
YmFzZTo6ZGlkQ2xvc2VGcm9tU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNl
OjptYXliZUNsb3NlSW5TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OmFj
dGl2ZURPTU9iamVjdE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OmNhblN1
c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2U6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OnN0YXJ0VmVyc2lvbkNo
YW5nZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpkaWRTdGFy
dFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjp3aWxsQ29tbWl0
VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OmRpZENvbW1pdFRy
YW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjp3aWxsQWJvcnRUcmFu
c2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6ZGlkQWJvcnRUcmFuc2Fj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6ZGlkQ29tbWl0T3JBYm9ydFRy
YW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpmaXJlVmVyc2lvbkNo
YW5nZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpkaXNwYXRjaEV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpkaWRDcmVhdGVJbmRleEluZm8pOgor
ICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OmRpZERlbGV0ZUluZGV4SW5mbyk6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQkRhdGFiYXNlOjpvcmlnaW5UaHJlYWRJRCk6IERlbGV0ZWQuCisgICAgICAgIAorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCUmVxdWVzdDo6SURCUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0Ojp+
SURCUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjplcnJvckNvZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6ZXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6
SURCUmVxdWVzdDo6c2V0U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OnNl
dFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0
Ojp0cmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpyZWFkeVN0YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OnNvdXJjZU9iamVjdFN0b3JlSWRlbnRp
Zmllcik6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0Ojpzb3VyY2VJbmRleElkZW50aWZp
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6cmVxdWVzdGVkSW5kZXhSZWNvcmRU
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OmV2ZW50VGFyZ2V0SW50ZXJmYWNl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6OmFjdGl2ZURPTU9iamVjdE5hbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVu
c2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpoYXNQZW5kaW5nQWN0aXZpdHkp
OgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6c3RvcCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJSZXF1ZXN0OjplbnF1ZXVlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVz
dDo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0Ojp1bmNhdWdo
dEV4Y2VwdGlvbkluRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlcXVlc3Q6
OnNldFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpzZXRSZXN1bHRUb1N0
cnVjdHVyZWRDbG9uZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpjbGVhclJlc3Vs
dCk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpzZXRSZXN1bHRUb1VuZGVmaW5lZCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpyZXN1bHRDdXJzb3IpOgorICAgICAgICAo
V2ViQ29yZTo6SURCUmVxdWVzdDo6d2lsbEl0ZXJhdGVDdXJzb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCUmVxdWVzdDo6ZGlkT3Blbk9ySXRlcmF0ZUN1cnNvcik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJSZXF1ZXN0OjpyZXF1ZXN0Q29tcGxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJl
cXVlc3Q6Om9uRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6b25TdWNjZXNz
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpJREJSZXF1ZXN0OjpvcmlnaW5UaHJlYWRJRCk6IERlbGV0ZWQuCisgICAgICAgIAor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpJREJUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpJREJUcmFuc2FjdGlvbjo6b3JpZ2luVGhyZWFkSUQpOiBEZWxldGVkLgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmg6CisgICAgICAgIAorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHk6OmNvbXBsZXRlT3BlbkRC
UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94
eTo6Y29tcGxldGVPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJD
b25uZWN0aW9uUHJveHk6OmZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHk6Om5vdGlmeU9wZW5EQlJlcXVlc3RCbG9j
a2VkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5Ojpk
aWRTdGFydFRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29u
bmVjdGlvblByb3h5OjpkaWRDb21taXRUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eTo6ZGlkQWJvcnRUcmFuc2FjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eTo6ZGlkQ2xvc2VGcm9t
U2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6cGVyZm9ybUNhbGxiYWNrT25D
b3JyZWN0VGhyZWFkKTogRGVsZXRlZC4KKyAgICAgICAgCisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQkNsaWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb246OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
OiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlv
bk9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9w
ZXJhdGlvbjo6cGVyZm9ybUNvbXBsZXRlT25PcmlnaW5UaHJlYWQpOgorICAgICAgICAKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTYtMDUtMjQgIFl1
c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgdXBkYXRpbmcgYmluZGluZyB0ZXN0IHJlc3VsdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFjdGl2ZURPTU9iamVjdC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQWN0aXZlRE9NT2JqZWN0LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNGVkOGIyZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkFjdGl2ZURPTU9iamVjdC5oCkBAIC0wLDAgKzEs
ODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFjdGl2ZURPTU9i
amVjdC5oIgorI2luY2x1ZGUgIkNyb3NzVGhyZWFkQ29waWVyLmgiCisjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVk
ZSA8d3RmL1RocmVhZGluZy5oPgorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSURCQWN0aXZlRE9NT2JqZWN0IDogcHVibGljIEFj
dGl2ZURPTU9iamVjdCB7CitwdWJsaWM6CisgICAgVGhyZWFkSWRlbnRpZmllciBvcmlnaW5UaHJl
YWRJRCgpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luVGhyZWFkSUQ7IH0KKworICAgIHZvaWQgY29u
dGV4dERlc3Ryb3llZCgpIGZpbmFsIHsKKyAgICAgICAgTG9ja2VyPExvY2s+IGxvY2sobV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0TG9jayk7CisgICAgICAgIEFjdGl2ZURPTU9iamVjdDo6Y29udGV4
dERlc3Ryb3llZCgpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
Li4uIFBhcmFtZXRlcnMsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAgICB2b2lkIHBlcmZvcm1D
YWxsYmFja09uT3JpZ2luVGhyZWFkKFQmIG9iamVjdCwgdm9pZCAoVDo6Km1ldGhvZCkoUGFyYW1l
dGVycy4uLiksIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKKyAgICB7CisgICAgICAgIEFTU0VS
VChvcmlnaW5UaHJlYWRJRCgpID09IG9iamVjdC5vcmlnaW5UaHJlYWRJRCgpKTsKKworICAgICAg
ICBpZiAob2JqZWN0Lm9yaWdpblRocmVhZElEKCkgPT0gY3VycmVudFRocmVhZCgpKSB7CisgICAg
ICAgICAgICAob2JqZWN0LiptZXRob2QpKGFyZ3VtZW50cy4uLik7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBMb2NrZXI8TG9jaz4gbG9jayhtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHRMb2NrKTsKKworICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgICAgICBpZiAoIWNvbnRleHQpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY29udGV4dC0+cG9zdENyb3NzVGhyZWFkVGFz
ayhvYmplY3QsIG1ldGhvZCwgYXJndW1lbnRzLi4uKTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAg
ICBJREJBY3RpdmVET01PYmplY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAg
ICAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCkKKyAgICB7CisgICAgICAgIEFTU0VSVChj
b250ZXh0KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgVGhyZWFkSWRlbnRpZmllciBtX29yaWdp
blRocmVhZElEIHsgY3VycmVudFRocmVhZCgpIH07CisgICAgTG9jayBtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHRMb2NrOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKaW5kZXggMDI4YWYyOS4uNTI4ZDQ1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcApAQCAtNDks
NyArNDksNyBAQCBSZWY8SURCRGF0YWJhc2U+IElEQkRhdGFiYXNlOjpjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgSURCQ2xpZW50OgogfQogCiBJREJEYXRhYmFzZTo6SURC
RGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSURCQ2xpZW50OjpJREJD
b25uZWN0aW9uUHJveHkmIGNvbm5lY3Rpb25Qcm94eSwgY29uc3QgSURCUmVzdWx0RGF0YSYgcmVz
dWx0RGF0YSkKLSAgICA6IFdlYkNvcmU6OkFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKKyAgICA6
IElEQkFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKICAgICAsIG1fY29ubmVjdGlvblByb3h5KGNv
bm5lY3Rpb25Qcm94eSkKICAgICAsIG1faW5mbyhyZXN1bHREYXRhLmRhdGFiYXNlSW5mbygpKQog
ICAgICwgbV9kYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKHJlc3VsdERhdGEuZGF0YWJhc2VD
b25uZWN0aW9uSWRlbnRpZmllcigpKQpAQCAtNjEsMzEgKzYxLDMxIEBAIElEQkRhdGFiYXNlOjpJ
REJEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBJREJDbGllbnQ6OklE
QkNvbm5lY3RpCiAKIElEQkRhdGFiYXNlOjp+SURCRGF0YWJhc2UoKQogewotICAgIEFTU0VSVChj
dXJyZW50VGhyZWFkKCkgPT0gbV9vcmlnaW5UaHJlYWRJRCk7CisgICAgQVNTRVJUKGN1cnJlbnRU
aHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKICAgICBtX2Nvbm5lY3Rpb25Qcm94eS0+dW5y
ZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlvbigqdGhpcyk7CiB9CiAKIGJvb2wgSURCRGF0YWJhc2U6
Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBtX29yaWdpblRocmVhZElEKTsKKyAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9y
aWdpblRocmVhZElEKCkpOwogICAgIHJldHVybiAhbV9jbG9zZWRJblNlcnZlcjsKIH0KIAogY29u
c3QgU3RyaW5nIElEQkRhdGFiYXNlOjpuYW1lKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IG1fb3JpZ2luVGhyZWFkSUQpOworICAgIEFTU0VSVChjdXJyZW50VGhyZWFk
KCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CiAgICAgcmV0dXJuIG1faW5mby5uYW1lKCk7CiB9CiAK
IHVpbnQ2NF90IElEQkRhdGFiYXNlOjp2ZXJzaW9uKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3Vy
cmVudFRocmVhZCgpID09IG1fb3JpZ2luVGhyZWFkSUQpOworICAgIEFTU0VSVChjdXJyZW50VGhy
ZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CiAgICAgcmV0dXJuIG1faW5mby52ZXJzaW9uKCk7
CiB9CiAKIFJlZlB0cjxET01TdHJpbmdMaXN0PiBJREJEYXRhYmFzZTo6b2JqZWN0U3RvcmVOYW1l
cygpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX29yaWdpblRocmVh
ZElEKTsKKyAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOwog
CiAgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMgPSBET01TdHJpbmdM
aXN0OjpjcmVhdGUoKTsKICAgICBmb3IgKGF1dG8mIG5hbWUgOiBtX2luZm8ub2JqZWN0U3RvcmVO
YW1lcygpKQpAQCAtMTA0LDcgKzEwNCw3IEBAIFJlZlB0cjxXZWJDb3JlOjpJREJPYmplY3RTdG9y
ZT4gSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtCiB7CiAg
ICAgTE9HKEluZGV4ZWREQiwgIklEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZSAtICglcyAl
cykiLCBtX2luZm8ubmFtZSgpLnV0ZjgoKS5kYXRhKCksIG5hbWUudXRmOCgpLmRhdGEoKSk7CiAK
LSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fb3JpZ2luVGhyZWFkSUQpOworICAgIEFT
U0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CiAgICAgQVNTRVJUKCFt
X3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiB8fCBtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi0+
aXNWZXJzaW9uQ2hhbmdlKCkpOwogCiAgICAgaWYgKCFtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlv
bikgewpAQCAtMTUwLDcgKzE1MCw3IEBAIFJlZlB0cjxXZWJDb3JlOjpJREJUcmFuc2FjdGlvbj4g
SURCRGF0YWJhc2U6OnRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqCiB7CiAgICAg
TE9HKEluZGV4ZWREQiwgIklEQkRhdGFiYXNlOjp0cmFuc2FjdGlvbiIpOwogCi0gICAgQVNTRVJU
KGN1cnJlbnRUaHJlYWQoKSA9PSBtX29yaWdpblRocmVhZElEKTsKKyAgICBBU1NFUlQoY3VycmVu
dFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOwogCiAgICAgaWYgKG1fY2xvc2VQZW5kaW5n
KSB7CiAgICAgICAgIGVjLmNvZGUgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0YXRl
RXJyb3I7CkBAIC0yMDEsNyArMjAxLDcgQEAgUmVmUHRyPFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
PiBJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCoKIAogUmVm
UHRyPFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uPiBJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb24oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZSwg
Y29uc3QgU3RyaW5nJiBtb2RlLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQogewotICAg
IEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9vcmlnaW5UaHJlYWRJRCk7CisgICAgQVNTRVJU
KGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKIAogICAgIFZlY3RvcjxTdHJp
bmc+IG9iamVjdFN0b3JlcygxKTsKICAgICBvYmplY3RTdG9yZXNbMF0gPSBvYmplY3RTdG9yZTsK
QEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lkIElEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZShj
b25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgRXhjZXB0aW9uQ29kZQogewogICAgIExPRyhJ
bmRleGVkREIsICJJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUiKTsKIAotICAgIEFTU0VS
VChjdXJyZW50VGhyZWFkKCkgPT0gbV9vcmlnaW5UaHJlYWRJRCk7CisgICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKIAogICAgIGlmICghbV92ZXJzaW9uQ2hh
bmdlVHJhbnNhY3Rpb24pIHsKICAgICAgICAgZWMuY29kZSA9IElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpJbnZhbGlkU3RhdGVFcnJvcjsKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIElEQkRhdGFiYXNl
OjpjbG9zZSgpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkRhdGFiYXNlOjpjbG9zZSAtICUi
IFBSSXU2NCwgbV9kYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsKIAotICAgIEFTU0VSVChj
dXJyZW50VGhyZWFkKCkgPT0gbV9vcmlnaW5UaHJlYWRJRCk7CisgICAgQVNTRVJUKGN1cnJlbnRU
aHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKIAogICAgIG1fY2xvc2VQZW5kaW5nID0gdHJ1
ZTsKICAgICBtYXliZUNsb3NlSW5TZXJ2ZXIoKTsKQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIElE
QkRhdGFiYXNlOjpkaWRDbG9zZUZyb21TZXJ2ZXIoY29uc3QgSURCRXJyb3ImIGVycm9yKQogewog
ICAgIExPRyhJbmRleGVkREIsICJJREJEYXRhYmFzZTo6ZGlkQ2xvc2VGcm9tU2VydmVyIC0gJSIg
UFJJdTY0LCBtX2RhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOwogCi0gICAgQVNTRVJUKGN1
cnJlbnRUaHJlYWQoKSA9PSBtX29yaWdpblRocmVhZElEKTsKKyAgICBBU1NFUlQoY3VycmVudFRo
cmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOwogCiAgICAgbV9jbG9zZVBlbmRpbmcgPSB0cnVl
OwogICAgIG1fY2xvc2VkSW5TZXJ2ZXIgPSB0cnVlOwpAQCAtMjY4LDcgKzI2OCw3IEBAIHZvaWQg
SURCRGF0YWJhc2U6Om1heWJlQ2xvc2VJblNlcnZlcigpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwg
IklEQkRhdGFiYXNlOjptYXliZUNsb3NlSW5TZXJ2ZXIgLSAlIiBQUkl1NjQsIG1fZGF0YWJhc2VD
b25uZWN0aW9uSWRlbnRpZmllcik7CiAKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1f
b3JpZ2luVGhyZWFkSUQpOworICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhy
ZWFkSUQoKSk7CiAKICAgICBpZiAobV9jbG9zZWRJblNlcnZlcikKICAgICAgICAgcmV0dXJuOwpA
QCAtMjg1LDEzICsyODUsMTMgQEAgdm9pZCBJREJEYXRhYmFzZTo6bWF5YmVDbG9zZUluU2VydmVy
KCkKIAogY29uc3QgY2hhciogSURCRGF0YWJhc2U6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25z
dAogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9vcmlnaW5UaHJlYWRJRCk7Cisg
ICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKICAgICByZXR1
cm4gIklEQkRhdGFiYXNlIjsKIH0KIAogYm9vbCBJREJEYXRhYmFzZTo6Y2FuU3VzcGVuZEZvckRv
Y3VtZW50U3VzcGVuc2lvbigpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9
PSBtX29yaWdpblRocmVhZElEKTsKKyAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdp
blRocmVhZElEKCkpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgdmFsdWUgd2lsbCBzb21ldGltZXMg
YmUgZmFsc2Ugd2hlbiBkYXRhYmFzZSBvcGVyYXRpb25zIGFyZSBhY3R1YWxseSBpbiBwcm9ncmVz
cy4KICAgICAvLyBTdWNoIGRhdGFiYXNlIG9wZXJhdGlvbnMgZG8gbm90IHlldCBleGlzdC4KQEAg
LTMwMiw3ICszMDIsNyBAQCB2b2lkIElEQkRhdGFiYXNlOjpzdG9wKCkKIHsKICAgICBMT0coSW5k
ZXhlZERCLCAiSURCRGF0YWJhc2U6OnN0b3AgLSAlIiBQUkl1NjQsIG1fZGF0YWJhc2VDb25uZWN0
aW9uSWRlbnRpZmllcik7CiAKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fb3JpZ2lu
VGhyZWFkSUQpOworICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQo
KSk7CiAKICAgICByZW1vdmVBbGxFdmVudExpc3RlbmVycygpOwogCkBAIC0zMjUsNyArMzI1LDcg
QEAgUmVmPElEQlRyYW5zYWN0aW9uPiBJREJEYXRhYmFzZTo6c3RhcnRWZXJzaW9uQ2hhbmdlVHJh
bnNhY3Rpb24oY29uc3QgSURCVHJhbnNhY3QKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCRGF0
YWJhc2U6OnN0YXJ0VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uICVzIiwgaW5mby5pZGVudGlmaWVy
KCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgQVNTRVJUKGN1cnJlbnRU
aHJlYWQoKSA9PSBtX29yaWdpblRocmVhZElEKTsKKyAgICBBU1NFUlQoY3VycmVudFRocmVhZCgp
ID09IG9yaWdpblRocmVhZElEKCkpOwogICAgIEFTU0VSVCghbV92ZXJzaW9uQ2hhbmdlVHJhbnNh
Y3Rpb24pOwogICAgIEFTU0VSVChpbmZvLm1vZGUoKSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9u
TW9kZTo6VmVyc2lvbkNoYW5nZSk7CiAgICAgQVNTRVJUKCFtX2Nsb3NlUGVuZGluZyk7CkBAIC0z
NDMsNyArMzQzLDcgQEAgdm9pZCBJREJEYXRhYmFzZTo6ZGlkU3RhcnRUcmFuc2FjdGlvbihJREJU
cmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkRhdGFi
YXNlOjpkaWRTdGFydFRyYW5zYWN0aW9uICVzIiwgdHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZp
ZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgQVNTRVJUKCFtX3ZlcnNp
b25DaGFuZ2VUcmFuc2FjdGlvbik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX29y
aWdpblRocmVhZElEKTsKKyAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVh
ZElEKCkpOwogCiAgICAgLy8gSXQgaXMgcG9zc2libGUgZm9yIHRoZSBjbGllbnQgdG8gaGF2ZSBh
Ym9ydGVkIGEgdHJhbnNhY3Rpb24gYmVmb3JlIHRoZSBzZXJ2ZXIgcmVwbGllcyBiYWNrIHRoYXQg
aXQgaGFzIHN0YXJ0ZWQuCiAgICAgaWYgKG1fYWJvcnRpbmdUcmFuc2FjdGlvbnMuY29udGFpbnMo
dHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSkpCkBAIC0zNTYsNyArMzU2LDcgQEAgdm9p
ZCBJREJEYXRhYmFzZTo6d2lsbENvbW1pdFRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uJiB0cmFu
c2FjdGlvbikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCRGF0YWJhc2U6OndpbGxDb21taXRU
cmFuc2FjdGlvbiAlcyIsIHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCkubG9nZ2luZ1N0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBt
X29yaWdpblRocmVhZElEKTsKKyAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRo
cmVhZElEKCkpOwogCiAgICAgYXV0byByZWZUcmFuc2FjdGlvbiA9IG1fYWN0aXZlVHJhbnNhY3Rp
b25zLnRha2UodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSk7CiAgICAgQVNTRVJUKHJl
ZlRyYW5zYWN0aW9uKTsKQEAgLTM2Nyw3ICszNjcsNyBAQCB2b2lkIElEQkRhdGFiYXNlOjpkaWRD
b21taXRUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCiB7CiAgICAgTE9H
KEluZGV4ZWREQiwgIklEQkRhdGFiYXNlOjpkaWRDb21taXRUcmFuc2FjdGlvbiAlcyIsIHRyYW5z
YWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwogCi0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX29yaWdpblRocmVhZElEKTsKKyAg
ICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOwogCiAgICAgaWYg
KG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uID09ICZ0cmFuc2FjdGlvbikKICAgICAgICAgbV9p
bmZvLnNldFZlcnNpb24odHJhbnNhY3Rpb24uaW5mbygpLm5ld1ZlcnNpb24oKSk7CkBAIC0zNzks
NyArMzc5LDcgQEAgdm9pZCBJREJEYXRhYmFzZTo6d2lsbEFib3J0VHJhbnNhY3Rpb24oSURCVHJh
bnNhY3Rpb24mIHRyYW5zYWN0aW9uKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJEYXRhYmFz
ZTo6d2lsbEFib3J0VHJhbnNhY3Rpb24gJXMiLCB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmll
cigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgIEFTU0VSVChjdXJyZW50
VGhyZWFkKCkgPT0gbV9vcmlnaW5UaHJlYWRJRCk7CisgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKIAogICAgIGF1dG8gcmVmVHJhbnNhY3Rpb24gPSBtX2Fj
dGl2ZVRyYW5zYWN0aW9ucy50YWtlKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCkpOwog
ICAgIGlmICghcmVmVHJhbnNhY3Rpb24pCkBAIC0zOTksNyArMzk5LDcgQEAgdm9pZCBJREJEYXRh
YmFzZTo6ZGlkQWJvcnRUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCiB7
CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkRhdGFiYXNlOjpkaWRBYm9ydFRyYW5zYWN0aW9uICVz
IiwgdHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CiAKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fb3JpZ2luVGhyZWFk
SUQpOworICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CiAK
ICAgICBpZiAodHJhbnNhY3Rpb24uaXNWZXJzaW9uQ2hhbmdlKCkpIHsKICAgICAgICAgQVNTRVJU
KHRyYW5zYWN0aW9uLm9yaWdpbmFsRGF0YWJhc2VJbmZvKCkpOwpAQCAtNDE1LDcgKzQxNSw3IEBA
IHZvaWQgSURCRGF0YWJhc2U6OmRpZENvbW1pdE9yQWJvcnRUcmFuc2FjdGlvbihJREJUcmFuc2Fj
dGlvbiYgdHJhbnNhY3Rpb24pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkRhdGFiYXNlOjpk
aWRDb21taXRPckFib3J0VHJhbnNhY3Rpb24gJXMiLCB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRp
ZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgIEFTU0VSVChjdXJy
ZW50VGhyZWFkKCkgPT0gbV9vcmlnaW5UaHJlYWRJRCk7CisgICAgQVNTRVJUKGN1cnJlbnRUaHJl
YWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKIAogICAgIGlmIChtX3ZlcnNpb25DaGFuZ2VUcmFu
c2FjdGlvbiA9PSAmdHJhbnNhY3Rpb24pCiAgICAgICAgIG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0
aW9uID0gbnVsbHB0cjsKQEAgLTQ0NSw3ICs0NDUsNyBAQCB2b2lkIElEQkRhdGFiYXNlOjpmaXJl
VmVyc2lvbkNoYW5nZUV2ZW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElk
ZQogICAgIHVpbnQ2NF90IGN1cnJlbnRWZXJzaW9uID0gbV9pbmZvLnZlcnNpb24oKTsKICAgICBM
T0coSW5kZXhlZERCLCAiSURCRGF0YWJhc2U6OmZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQgLSBjdXJy
ZW50IHZlcnNpb24gJSIgUFJJdTY0ICIsIHJlcXVlc3RlZCB2ZXJzaW9uICUiIFBSSXU2NCAiLCBj
b25uZWN0aW9uICUiIFBSSXU2NCwgY3VycmVudFZlcnNpb24sIHJlcXVlc3RlZFZlcnNpb24sIG1f
ZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcik7CiAKLSAgICBBU1NFUlQoY3VycmVudFRocmVh
ZCgpID09IG1fb3JpZ2luVGhyZWFkSUQpOworICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0g
b3JpZ2luVGhyZWFkSUQoKSk7CiAKICAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSB8
fCBtX2Nsb3NlUGVuZGluZykgewogICAgICAgICBjb25uZWN0aW9uUHJveHkoKS5kaWRGaXJlVmVy
c2lvbkNoYW5nZUV2ZW50KG1fZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgcmVxdWVzdElk
ZW50aWZpZXIpOwpAQCAtNDYwLDcgKzQ2MCw3IEBAIHZvaWQgSURCRGF0YWJhc2U6OmZpcmVWZXJz
aW9uQ2hhbmdlRXZlbnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlCiBi
b29sIElEQkRhdGFiYXNlOjpkaXNwYXRjaEV2ZW50KEV2ZW50JiBldmVudCkKIHsKICAgICBMT0co
SW5kZXhlZERCLCAiSURCRGF0YWJhc2U6OmRpc3BhdGNoRXZlbnQgKCUiIFBSSXU2NCAiKSIsIG1f
ZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcik7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBtX29yaWdpblRocmVhZElEKTsKKyAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9y
aWdpblRocmVhZElEKCkpOwogCiAgICAgYm9vbCByZXN1bHQgPSBFdmVudFRhcmdldFdpdGhJbmxp
bmVEYXRhOjpkaXNwYXRjaEV2ZW50KGV2ZW50KTsKIApAQCAtNDcyLDcgKzQ3Miw3IEBAIGJvb2wg
SURCRGF0YWJhc2U6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQogCiB2b2lkIElEQkRhdGFi
YXNlOjpkaWRDcmVhdGVJbmRleEluZm8oY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvKQogewotICAg
IEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9vcmlnaW5UaHJlYWRJRCk7CisgICAgQVNTRVJU
KGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKIAogICAgIGF1dG8qIG9iamVj
dFN0b3JlID0gbV9pbmZvLmluZm9Gb3JFeGlzdGluZ09iamVjdFN0b3JlKGluZm8ub2JqZWN0U3Rv
cmVJZGVudGlmaWVyKCkpOwogICAgIEFTU0VSVChvYmplY3RTdG9yZSk7CkBAIC00ODEsNyArNDgx
LDcgQEAgdm9pZCBJREJEYXRhYmFzZTo6ZGlkQ3JlYXRlSW5kZXhJbmZvKGNvbnN0IElEQkluZGV4
SW5mbyYgaW5mbykKIAogdm9pZCBJREJEYXRhYmFzZTo6ZGlkRGVsZXRlSW5kZXhJbmZvKGNvbnN0
IElEQkluZGV4SW5mbyYgaW5mbykKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1f
b3JpZ2luVGhyZWFkSUQpOworICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhy
ZWFkSUQoKSk7CiAKICAgICBhdXRvKiBvYmplY3RTdG9yZSA9IG1faW5mby5pbmZvRm9yRXhpc3Rp
bmdPYmplY3RTdG9yZShpbmZvLm9iamVjdFN0b3JlSWRlbnRpZmllcigpKTsKICAgICBBU1NFUlQo
b2JqZWN0U3RvcmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlLmgKaW5kZXggMzYyOTM1My4uYTY3MWJjMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1
ZGUgIkRpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJJREJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRl
ICJJREJDb25uZWN0aW9uUHJveHkuaCIKICNpbmNsdWRlICJJREJDb25uZWN0aW9uVG9TZXJ2ZXIu
aCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUluZm8uaCIKQEAgLTQzLDcgKzQ0LDcgQEAgY2xhc3Mg
SURCUmVzdWx0RGF0YTsKIGNsYXNzIElEQlRyYW5zYWN0aW9uOwogY2xhc3MgSURCVHJhbnNhY3Rp
b25JbmZvOwogCi1jbGFzcyBJREJEYXRhYmFzZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxJREJEYXRhYmFzZT4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMg
QWN0aXZlRE9NT2JqZWN0IHsKK2NsYXNzIElEQkRhdGFiYXNlIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPElEQkRhdGFiYXNlPiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEs
IHB1YmxpYyBJREJBY3RpdmVET01PYmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SURC
RGF0YWJhc2U+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSURCQ2xpZW50OjpJREJD
b25uZWN0aW9uUHJveHkmLCBjb25zdCBJREJSZXN1bHREYXRhJik7CiAKQEAgLTk5LDggKzEwMCw2
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7
CiAKLSAgICBUaHJlYWRJZGVudGlmaWVyIG9yaWdpblRocmVhZElEKCkgY29uc3QgeyByZXR1cm4g
bV9vcmlnaW5UaHJlYWRJRDsgfQotCiBwcml2YXRlOgogICAgIElEQkRhdGFiYXNlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSYsIGNvbnN0IElE
QlJlc3VsdERhdGEmKTsKIApAQCAtMTE5LDggKzExOCw2IEBAIHByaXZhdGU6CiAgICAgSGFzaE1h
cDxJREJSZXNvdXJjZUlkZW50aWZpZXIsIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4+IG1fYWN0aXZl
VHJhbnNhY3Rpb25zOwogICAgIEhhc2hNYXA8SURCUmVzb3VyY2VJZGVudGlmaWVyLCBSZWZQdHI8
SURCVHJhbnNhY3Rpb24+PiBtX2NvbW1pdHRpbmdUcmFuc2FjdGlvbnM7CiAgICAgSGFzaE1hcDxJ
REJSZXNvdXJjZUlkZW50aWZpZXIsIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4+IG1fYWJvcnRpbmdU
cmFuc2FjdGlvbnM7Ci0KLSAgICBUaHJlYWRJZGVudGlmaWVyIG1fb3JpZ2luVGhyZWFkSUQgeyBj
dXJyZW50VGhyZWFkKCkgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKaW5kZXggY2E1NDZm
Ny4uOWYwYzAxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
UmVxdWVzdC5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlJlcXVlc3Q6
OmNyZWF0ZUdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBJREJJbmRleCYKIH0K
IAogSURCUmVxdWVzdDo6SURCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSYgY29ubmVjdGlvblByb3h5KQotICAgIDog
QWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQorICAgIDogSURCQWN0aXZlRE9NT2JqZWN0KCZjb250
ZXh0KQogICAgICwgbV9yZXNvdXJjZUlkZW50aWZpZXIoY29ubmVjdGlvblByb3h5LnNlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyKCkpCiAgICAgLCBtX2Nvbm5lY3Rpb25Qcm94eShjb25uZWN0aW9u
UHJveHkpCiB7CkBAIC03OCw3ICs3OCw3IEBAIElEQlJlcXVlc3Q6OklEQlJlcXVlc3QoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uCiB9CiAK
IElEQlJlcXVlc3Q6OklEQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwg
SURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24p
Ci0gICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCisgICAgOiBJREJBY3RpdmVET01PYmpl
Y3QoJmNvbnRleHQpCiAgICAgLCBtX3RyYW5zYWN0aW9uKCZ0cmFuc2FjdGlvbikKICAgICAsIG1f
cmVzb3VyY2VJZGVudGlmaWVyKHRyYW5zYWN0aW9uLmNvbm5lY3Rpb25Qcm94eSgpKQogICAgICwg
bV9vYmplY3RTdG9yZVNvdXJjZSgmb2JqZWN0U3RvcmUpCkBAIC04OCw3ICs4OCw3IEBAIElEQlJl
cXVlc3Q6OklEQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSURCT2Jq
ZWN0U3RvcmUmIG9iamVjdFN0CiB9CiAKIElEQlJlcXVlc3Q6OklEQlJlcXVlc3QoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgSURCQ3Vyc29yJiBjdXJzb3IsIElEQlRyYW5zYWN0aW9u
JiB0cmFuc2FjdGlvbikKLSAgICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKKyAgICA6IElE
QkFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKICAgICAsIG1fdHJhbnNhY3Rpb24oJnRyYW5zYWN0
aW9uKQogICAgICwgbV9yZXNvdXJjZUlkZW50aWZpZXIodHJhbnNhY3Rpb24uY29ubmVjdGlvblBy
b3h5KCkpCiAgICAgLCBtX29iamVjdFN0b3JlU291cmNlKGN1cnNvci5vYmplY3RTdG9yZSgpKQpA
QCAtMTAyLDcgKzEwMiw3IEBAIElEQlJlcXVlc3Q6OklEQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgSURCQ3Vyc29yJiBjdXJzb3IsIElEQlRyCiB9CiAKIElEQlJlcXVl
c3Q6OklEQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSURCSW5kZXgm
IGluZGV4LCBJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCi0gICAgOiBBY3RpdmVET01PYmpl
Y3QoJmNvbnRleHQpCisgICAgOiBJREJBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCiAgICAgLCBt
X3RyYW5zYWN0aW9uKCZ0cmFuc2FjdGlvbikKICAgICAsIG1fcmVzb3VyY2VJZGVudGlmaWVyKHRy
YW5zYWN0aW9uLmNvbm5lY3Rpb25Qcm94eSgpKQogICAgICwgbV9pbmRleFNvdXJjZSgmaW5kZXgp
CkBAIC0xMTksNyArMTE5LDcgQEAgSURCUmVxdWVzdDo6SURCUmVxdWVzdChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBJREJJbmRleCYgaW5kZXgsIEluZGV4ZWQKIAogSURCUmVxdWVz
dDo6fklEQlJlcXVlc3QoKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9vcmln
aW5UaHJlYWRJRCk7CisgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJ
RCgpKTsKIAogICAgIGlmIChtX2N1cnNvclJlc3VsdCkKICAgICAgICAgbV9jdXJzb3JSZXN1bHQt
PmNsZWFyUmVxdWVzdCgpOwpAQCAtMTI3LDE0ICsxMjcsMTQgQEAgSURCUmVxdWVzdDo6fklEQlJl
cXVlc3QoKQogCiB1bnNpZ25lZCBzaG9ydCBJREJSZXF1ZXN0OjplcnJvckNvZGUoRXhjZXB0aW9u
Q29kZSYpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX29yaWdpblRo
cmVhZElEKTsKKyAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkp
OwogCiAgICAgcmV0dXJuIDA7CiB9CiAKIFJlZlB0cjxET01FcnJvcj4gSURCUmVxdWVzdDo6ZXJy
b3IoRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykgY29uc3QKIHsKLSAgICBBU1NFUlQoY3Vy
cmVudFRocmVhZCgpID09IG1fb3JpZ2luVGhyZWFkSUQpOworICAgIEFTU0VSVChjdXJyZW50VGhy
ZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CiAKICAgICBpZiAobV9pc0RvbmUpCiAgICAgICAg
IHJldHVybiBtX2RvbUVycm9yOwpAQCAtMTQ2LDcgKzE0Niw3IEBAIFJlZlB0cjxET01FcnJvcj4g
SURCUmVxdWVzdDo6ZXJyb3IoRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykgY29uc3QKIAog
dm9pZCBJREJSZXF1ZXN0OjpzZXRTb3VyY2UoSURCQ3Vyc29yJiBjdXJzb3IpCiB7Ci0gICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX29yaWdpblRocmVhZElEKTsKKyAgICBBU1NFUlQoY3Vy
cmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOwogICAgIEFTU0VSVCghbV9jdXJzb3JS
ZXF1ZXN0Tm90aWZpZXIpOwogCiAgICAgbV9vYmplY3RTdG9yZVNvdXJjZSA9IG51bGxwdHI7CkBA
IC0xNjAsNyArMTYwLDcgQEAgdm9pZCBJREJSZXF1ZXN0OjpzZXRTb3VyY2UoSURCQ3Vyc29yJiBj
dXJzb3IpCiAKIHZvaWQgSURCUmVxdWVzdDo6c2V0VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKElE
QlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgp
ID09IG1fb3JpZ2luVGhyZWFkSUQpOworICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3Jp
Z2luVGhyZWFkSUQoKSk7CiAgICAgQVNTRVJUKCFtX3RyYW5zYWN0aW9uKTsKICAgICBBU1NFUlQo
dHJhbnNhY3Rpb24uaXNWZXJzaW9uQ2hhbmdlKCkpOwogICAgIEFTU0VSVCghdHJhbnNhY3Rpb24u
aXNGaW5pc2hlZE9yRmluaXNoaW5nKCkpOwpAQCAtMTcwLDEzICsxNzAsMTMgQEAgdm9pZCBJREJS
ZXF1ZXN0OjpzZXRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb24mIHRyYW5z
YWN0aW9uKQogCiBSZWZQdHI8V2ViQ29yZTo6SURCVHJhbnNhY3Rpb24+IElEQlJlcXVlc3Q6OnRy
YW5zYWN0aW9uKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fb3Jp
Z2luVGhyZWFkSUQpOworICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFk
SUQoKSk7CiAgICAgcmV0dXJuIG1fc2hvdWxkRXhwb3NlVHJhbnNhY3Rpb25Ub0RPTSA/IG1fdHJh
bnNhY3Rpb24gOiBudWxscHRyOwogfQogCiBjb25zdCBTdHJpbmcmIElEQlJlcXVlc3Q6OnJlYWR5
U3RhdGUoKSBjb25zdAogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9vcmlnaW5U
aHJlYWRJRCk7CisgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgp
KTsKIAogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHBlbmRpbmdTdHJpbmcoQVND
SUlMaXRlcmFsKCJwZW5kaW5nIikpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+
IGRvbmVTdHJpbmcoQVNDSUlMaXRlcmFsKCJkb25lIikpOwpAQCAtMTg1LDcgKzE4NSw3IEBAIGNv
bnN0IFN0cmluZyYgSURCUmVxdWVzdDo6cmVhZHlTdGF0ZSgpIGNvbnN0CiAKIHVpbnQ2NF90IElE
QlJlcXVlc3Q6OnNvdXJjZU9iamVjdFN0b3JlSWRlbnRpZmllcigpIGNvbnN0CiB7Ci0gICAgQVNT
RVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX29yaWdpblRocmVhZElEKTsKKyAgICBBU1NFUlQoY3Vy
cmVudFRocmVhZCgpID09IG9yaWdpblRocmVhZElEKCkpOwogCiAgICAgaWYgKG1fb2JqZWN0U3Rv
cmVTb3VyY2UpCiAgICAgICAgIHJldHVybiBtX29iamVjdFN0b3JlU291cmNlLT5pbmZvKCkuaWRl
bnRpZmllcigpOwpAQCAtMTk2LDcgKzE5Niw3IEBAIHVpbnQ2NF90IElEQlJlcXVlc3Q6OnNvdXJj
ZU9iamVjdFN0b3JlSWRlbnRpZmllcigpIGNvbnN0CiAKIHVpbnQ2NF90IElEQlJlcXVlc3Q6OnNv
dXJjZUluZGV4SWRlbnRpZmllcigpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBtX29yaWdpblRocmVhZElEKTsKKyAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9y
aWdpblRocmVhZElEKCkpOwogCiAgICAgaWYgKCFtX2luZGV4U291cmNlKQogICAgICAgICByZXR1
cm4gMDsKQEAgLTIwNSw3ICsyMDUsNyBAQCB1aW50NjRfdCBJREJSZXF1ZXN0Ojpzb3VyY2VJbmRl
eElkZW50aWZpZXIoKSBjb25zdAogCiBJbmRleGVkREI6OkluZGV4UmVjb3JkVHlwZSBJREJSZXF1
ZXN0OjpyZXF1ZXN0ZWRJbmRleFJlY29yZFR5cGUoKSBjb25zdAogewotICAgIEFTU0VSVChjdXJy
ZW50VGhyZWFkKCkgPT0gbV9vcmlnaW5UaHJlYWRJRCk7CisgICAgQVNTRVJUKGN1cnJlbnRUaHJl
YWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKICAgICBBU1NFUlQobV9pbmRleFNvdXJjZSk7CiAK
ICAgICByZXR1cm4gbV9yZXF1ZXN0ZWRJbmRleFJlY29yZFR5cGU7CkBAIC0yMTMsMzMgKzIxMywz
MyBAQCBJbmRleGVkREI6OkluZGV4UmVjb3JkVHlwZSBJREJSZXF1ZXN0OjpyZXF1ZXN0ZWRJbmRl
eFJlY29yZFR5cGUoKSBjb25zdAogCiBFdmVudFRhcmdldEludGVyZmFjZSBJREJSZXF1ZXN0Ojpl
dmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBtX29yaWdpblRocmVhZElEKTsKKyAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9y
aWdpblRocmVhZElEKCkpOwogCiAgICAgcmV0dXJuIElEQlJlcXVlc3RFdmVudFRhcmdldEludGVy
ZmFjZVR5cGU7CiB9CiAKIGNvbnN0IGNoYXIqIElEQlJlcXVlc3Q6OmFjdGl2ZURPTU9iamVjdE5h
bWUoKSBjb25zdAogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9vcmlnaW5UaHJl
YWRJRCk7CisgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsK
IAogICAgIHJldHVybiAiSURCUmVxdWVzdCI7CiB9CiAKIGJvb2wgSURCUmVxdWVzdDo6Y2FuU3Vz
cGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRU
aHJlYWQoKSA9PSBtX29yaWdpblRocmVhZElEKTsKKyAgICBBU1NFUlQoY3VycmVudFRocmVhZCgp
ID09IG9yaWdpblRocmVhZElEKCkpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBJREJS
ZXF1ZXN0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogewotICAgIEFTU0VSVChjdXJyZW50
VGhyZWFkKCkgPT0gbV9vcmlnaW5UaHJlYWRJRCk7CisgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQo
KSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKICAgICByZXR1cm4gbV9oYXNQZW5kaW5nQWN0aXZpdHk7
CiB9CiAKIHZvaWQgSURCUmVxdWVzdDo6c3RvcCgpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJl
YWQoKSA9PSBtX29yaWdpblRocmVhZElEKTsKKyAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09
IG9yaWdpblRocmVhZElEKCkpOwogICAgIEFTU0VSVCghbV9jb250ZXh0U3RvcHBlZCk7CiAKICAg
ICBjYW5jZWxGb3JTdG9wKCk7CkBAIC0yNTYsNyArMjU2LDcgQEAgdm9pZCBJREJSZXF1ZXN0Ojpj
YW5jZWxGb3JTdG9wKCkKIAogdm9pZCBJREJSZXF1ZXN0OjplbnF1ZXVlRXZlbnQoUmVmPEV2ZW50
PiYmIGV2ZW50KQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9vcmlnaW5UaHJl
YWRJRCk7CisgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsK
ICAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSB8fCBtX2NvbnRleHRTdG9wcGVkKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTI2OCw3ICsyNjgsNyBAQCBib29sIElEQlJlcXVlc3Q6OmRp
c3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQogewogICAgIExPRyhJbmRleGVkREIsICJJREJSZXF1
ZXN0OjpkaXNwYXRjaEV2ZW50IC0gJXMgKCVwKSIsIGV2ZW50LnR5cGUoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpLCB0aGlzKTsKIAotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9vcmln
aW5UaHJlYWRJRCk7CisgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJ
RCgpKTsKICAgICBBU1NFUlQobV9oYXNQZW5kaW5nQWN0aXZpdHkpOwogICAgIEFTU0VSVCghbV9j
b250ZXh0U3RvcHBlZCk7CiAKQEAgLTMxNiw3ICszMTYsNyBAQCB2b2lkIElEQlJlcXVlc3Q6OnVu
Y2F1Z2h0RXhjZXB0aW9uSW5FdmVudEhhbmRsZXIoKQogewogICAgIExPRyhJbmRleGVkREIsICJJ
REJSZXF1ZXN0Ojp1bmNhdWdodEV4Y2VwdGlvbkluRXZlbnRIYW5kbGVyIik7CiAKLSAgICBBU1NF
UlQoY3VycmVudFRocmVhZCgpID09IG1fb3JpZ2luVGhyZWFkSUQpOworICAgIEFTU0VSVChjdXJy
ZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CiAKICAgICBpZiAobV90cmFuc2FjdGlv
biAmJiBtX2lkYkVycm9yLmNvZGUoKSAhPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6QWJvcnRFcnJv
cikKICAgICAgICAgbV90cmFuc2FjdGlvbi0+YWJvcnREdWVUb0ZhaWxlZFJlcXVlc3QoRE9NRXJy
b3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Z2V0RXJyb3JOYW1lKElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpBYm9ydEVycm9yKSwgQVNDSUlMaXRlcmFsKCJJREJUcmFuc2FjdGlvbiB3aWxs
IGFib3J0IGR1ZSB0byB1bmNhdWdodCBleGNlcHRpb24gaW4gYW4gZXZlbnQgaGFuZGxlciIpKSk7
CkBAIC0zMjQsNyArMzI0LDcgQEAgdm9pZCBJREJSZXF1ZXN0Ojp1bmNhdWdodEV4Y2VwdGlvbklu
RXZlbnRIYW5kbGVyKCkKIAogdm9pZCBJREJSZXF1ZXN0OjpzZXRSZXN1bHQoY29uc3QgSURCS2V5
RGF0YSYga2V5RGF0YSkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fb3JpZ2lu
VGhyZWFkSUQpOworICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQo
KSk7CiAKICAgICBhdXRvKiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAg
IGlmICghY29udGV4dCkKQEAgLTMzNiw3ICszMzYsNyBAQCB2b2lkIElEQlJlcXVlc3Q6OnNldFJl
c3VsdChjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRhKQogCiB2b2lkIElEQlJlcXVlc3Q6OnNldFJl
c3VsdCh1aW50NjRfdCBudW1iZXIpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBt
X29yaWdpblRocmVhZElEKTsKKyAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRo
cmVhZElEKCkpOwogCiAgICAgYXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKICAgICBpZiAoIWNvbnRleHQpCkBAIC0zNDgsNyArMzQ4LDcgQEAgdm9pZCBJREJSZXF1ZXN0
OjpzZXRSZXN1bHQodWludDY0X3QgbnVtYmVyKQogCiB2b2lkIElEQlJlcXVlc3Q6OnNldFJlc3Vs
dFRvU3RydWN0dXJlZENsb25lKGNvbnN0IElEQlZhbHVlJiB2YWx1ZSkKIHsKLSAgICBBU1NFUlQo
Y3VycmVudFRocmVhZCgpID09IG1fb3JpZ2luVGhyZWFkSUQpOworICAgIEFTU0VSVChjdXJyZW50
VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CiAKICAgICBMT0coSW5kZXhlZERCLCAiSURC
UmVxdWVzdDo6c2V0UmVzdWx0VG9TdHJ1Y3R1cmVkQ2xvbmUiKTsKIApAQCAtMzYyLDcgKzM2Miw3
IEBAIHZvaWQgSURCUmVxdWVzdDo6c2V0UmVzdWx0VG9TdHJ1Y3R1cmVkQ2xvbmUoY29uc3QgSURC
VmFsdWUmIHZhbHVlKQogCiB2b2lkIElEQlJlcXVlc3Q6OmNsZWFyUmVzdWx0KCkKIHsKLSAgICBB
U1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fb3JpZ2luVGhyZWFkSUQpOworICAgIEFTU0VSVChj
dXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CiAKICAgICBtX3NjcmlwdFJlc3Vs
dCA9IHsgfTsKICAgICBtX2N1cnNvclJlc3VsdCA9IG51bGxwdHI7CkBAIC0zNzEsNyArMzcxLDcg
QEAgdm9pZCBJREJSZXF1ZXN0OjpjbGVhclJlc3VsdCgpCiAKIHZvaWQgSURCUmVxdWVzdDo6c2V0
UmVzdWx0VG9VbmRlZmluZWQoKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9v
cmlnaW5UaHJlYWRJRCk7CisgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJl
YWRJRCgpKTsKIAogICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
CiAgICAgaWYgKCFjb250ZXh0KQpAQCAtMzgzLDE0ICszODMsMTQgQEAgdm9pZCBJREJSZXF1ZXN0
OjpzZXRSZXN1bHRUb1VuZGVmaW5lZCgpCiAKIElEQkN1cnNvciogSURCUmVxdWVzdDo6cmVzdWx0
Q3Vyc29yKCkKIHsKLSAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fb3JpZ2luVGhyZWFk
SUQpOworICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gb3JpZ2luVGhyZWFkSUQoKSk7CiAK
ICAgICByZXR1cm4gbV9jdXJzb3JSZXN1bHQuZ2V0KCk7CiB9CiAKIHZvaWQgSURCUmVxdWVzdDo6
d2lsbEl0ZXJhdGVDdXJzb3IoSURCQ3Vyc29yJiBjdXJzb3IpCiB7Ci0gICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBtX29yaWdpblRocmVhZElEKTsKKyAgICBBU1NFUlQoY3VycmVudFRocmVh
ZCgpID09IG9yaWdpblRocmVhZElEKCkpOwogICAgIEFTU0VSVChtX2lzRG9uZSk7CiAgICAgQVNT
RVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb24p
OwpAQCAtNDEyLDcgKzQxMiw3IEBAIHZvaWQgSURCUmVxdWVzdDo6d2lsbEl0ZXJhdGVDdXJzb3Io
SURCQ3Vyc29yJiBjdXJzb3IpCiAKIHZvaWQgSURCUmVxdWVzdDo6ZGlkT3Blbk9ySXRlcmF0ZUN1
cnNvcihjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewotICAgIEFTU0VSVChjdXJy
ZW50VGhyZWFkKCkgPT0gbV9vcmlnaW5UaHJlYWRJRCk7CisgICAgQVNTRVJUKGN1cnJlbnRUaHJl
YWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKICAgICBBU1NFUlQobV9wZW5kaW5nQ3Vyc29yKTsK
IAogICAgIGNsZWFyUmVzdWx0KCk7CkBAIC00MzEsNyArNDMxLDcgQEAgdm9pZCBJREJSZXF1ZXN0
OjpkaWRPcGVuT3JJdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEp
CiAKIHZvaWQgSURCUmVxdWVzdDo6cmVxdWVzdENvbXBsZXRlZChjb25zdCBJREJSZXN1bHREYXRh
JiByZXN1bHREYXRhKQogewotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9vcmlnaW5U
aHJlYWRJRCk7CisgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgp
KTsKIAogICAgIG1faXNEb25lID0gdHJ1ZTsKIApAQCAtNDQ2LDcgKzQ0Niw3IEBAIHZvaWQgSURC
UmVxdWVzdDo6b25FcnJvcigpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlJlcXVlc3Q6Om9u
RXJyb3IiKTsKIAotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9vcmlnaW5UaHJlYWRJ
RCk7CisgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKICAg
ICBBU1NFUlQoIW1faWRiRXJyb3IuaXNOdWxsKCkpOwogCiAgICAgbV9kb21FcnJvciA9IERPTUVy
cm9yOjpjcmVhdGUobV9pZGJFcnJvci5uYW1lKCksIG1faWRiRXJyb3IubWVzc2FnZSgpKTsKQEAg
LTQ1NiwxNCArNDU2LDE0IEBAIHZvaWQgSURCUmVxdWVzdDo6b25FcnJvcigpCiB2b2lkIElEQlJl
cXVlc3Q6Om9uU3VjY2VzcygpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlJlcXVlc3Q6Om9u
U3VjY2VzcyIpOwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9vcmlnaW5UaHJlYWRJ
RCk7CisgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBvcmlnaW5UaHJlYWRJRCgpKTsKIAog
ICAgIGVucXVldWVFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zdWNjZXNzRXZlbnQs
IGZhbHNlLCBmYWxzZSkpOwogfQogCiB2b2lkIElEQlJlcXVlc3Q6OnNldFJlc3VsdChSZWY8SURC
RGF0YWJhc2U+JiYgZGF0YWJhc2UpCiB7Ci0gICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBt
X29yaWdpblRocmVhZElEKTsKKyAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG9yaWdpblRo
cmVhZElEKCkpOwogCiAgICAgY2xlYXJSZXN1bHQoKTsKICAgICBtX2RhdGFiYXNlUmVzdWx0ID0g
V1RGTW92ZShkYXRhYmFzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJSZXF1ZXN0LmgKaW5kZXggYzkzZTJmMC4uNTIwNDY0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaApAQCAtMjcsOCArMjcsOCBAQAogCiAjaWYg
RU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKLSNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIK
ICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIklEQkFjdGl2ZURPTU9iamVjdC5o
IgogI2luY2x1ZGUgIklEQkVycm9yLmgiCiAjaW5jbHVkZSAiSURCUmVzb3VyY2VJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiSW5kZXhlZERCLmgiCkBAIC01Miw3ICs1Miw3IEBAIGNsYXNzIElEQkNv
bm5lY3Rpb25Qcm94eTsKIGNsYXNzIElEQkNvbm5lY3Rpb25Ub1NlcnZlcjsKIH0KIAotY2xhc3Mg
SURCUmVxdWVzdCA6IHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwcml2YXRlIEFj
dGl2ZURPTU9iamVjdCwgcHVibGljIFJlZkNvdW50ZWQ8SURCUmVxdWVzdD4geworY2xhc3MgSURC
UmVxdWVzdCA6IHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgSURCQWN0
aXZlRE9NT2JqZWN0LCBwdWJsaWMgUmVmQ291bnRlZDxJREJSZXF1ZXN0PiB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlZjxJREJSZXF1ZXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IElEQk9iamVjdFN0b3JlJiwgSURCVHJhbnNhY3Rpb24mKTsKICAgICBzdGF0aWMgUmVmPElEQlJl
cXVlc3Q+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSURCQ3Vyc29yJiwgSURCVHJh
bnNhY3Rpb24mKTsKQEAgLTEwNCw4ICsxMDQsNiBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc1Bl
bmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOwogCi0gICAgVGhyZWFkSWRlbnRpZmllciBvcmln
aW5UaHJlYWRJRCgpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luVGhyZWFkSUQ7IH0KLQogcHJvdGVj
dGVkOgogICAgIElEQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIElEQkNsaWVudDo6
SURCQ29ubmVjdGlvblByb3h5Jik7CiAKQEAgLTE3Myw4ICsxNzEsNiBAQCBwcml2YXRlOgogICAg
IHN0ZDo6dW5pcXVlX3B0cjxTY29wZUd1YXJkPiBtX2N1cnNvclJlcXVlc3ROb3RpZmllcjsKIAog
ICAgIFJlZjxJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eT4gbV9jb25uZWN0aW9uUHJveHk7
Ci0KLSAgICBUaHJlYWRJZGVudGlmaWVyIG1fb3JpZ2luVGhyZWFkSUQgeyBjdXJyZW50VGhyZWFk
KCkgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCAyOTJmY2YxLi5k
OGM1ZDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb24uY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgUmVmPElEQlRyYW5zYWN0aW9uPiBJ
REJUcmFuc2FjdGlvbjo6Y3JlYXRlKElEQkRhdGFiYXNlJiBkYXRhYmFzZSwgY29uc3QgSURCVHJh
bnMKIH0KIAogSURCVHJhbnNhY3Rpb246OklEQlRyYW5zYWN0aW9uKElEQkRhdGFiYXNlJiBkYXRh
YmFzZSwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvLCBJREJPcGVuREJSZXF1ZXN0KiBy
ZXF1ZXN0KQotICAgIDogV2ViQ29yZTo6QWN0aXZlRE9NT2JqZWN0KGRhdGFiYXNlLnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSkKKyAgICA6IElEQkFjdGl2ZURPTU9iamVjdChkYXRhYmFzZS5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkpCiAgICAgLCBtX2RhdGFiYXNlKGRhdGFiYXNlKQogICAgICwg
bV9pbmZvKGluZm8pCiAgICAgLCBtX29wZXJhdGlvblRpbWVyKCp0aGlzLCAmSURCVHJhbnNhY3Rp
b246Om9wZXJhdGlvblRpbWVyRmlyZWQpCkBAIC0xMDkxLDExICsxMDkxLDYgQEAgdm9pZCBJREJU
cmFuc2FjdGlvbjo6ZGVhY3RpdmF0ZSgpCiAgICAgc2NoZWR1bGVPcGVyYXRpb25UaW1lcigpOwog
fQogCi1UaHJlYWRJZGVudGlmaWVyIElEQlRyYW5zYWN0aW9uOjpvcmlnaW5UaHJlYWRJRCgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCk7Ci19Ci0KIHZv
aWQgSURCVHJhbnNhY3Rpb246OmNvbm5lY3Rpb25DbG9zZWRGcm9tU2VydmVyKGNvbnN0IElEQkVy
cm9yJiBlcnJvcikKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmNvbm5l
Y3Rpb25DbG9zZWRGcm9tU2VydmVyIC0gJXMiLCBlcnJvci5tZXNzYWdlKCkudXRmOCgpLmRhdGEo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b24uaAppbmRleCAxOTFjY2Y3Li41YTA5MmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKQEAgLTI3LDggKzI3LDggQEAKIAogI2lm
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCi0jaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJJREJBY3RpdmVET01PYmplY3Qu
aCIKICNpbmNsdWRlICJJREJFcnJvci5oIgogI2luY2x1ZGUgIklEQk9wZW5EQlJlcXVlc3QuaCIK
ICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkluZm8uaCIKQEAgLTU5LDcgKzU5LDcgQEAgY2xhc3Mg
SURCQ29ubmVjdGlvblByb3h5OwogY2xhc3MgVHJhbnNhY3Rpb25PcGVyYXRpb247CiB9CiAKLWNs
YXNzIElEQlRyYW5zYWN0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPElEQlRyYW5z
YWN0aW9uPiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHByaXZhdGUgQWN0aXZl
RE9NT2JqZWN0IHsKK2NsYXNzIElEQlRyYW5zYWN0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPElEQlRyYW5zYWN0aW9uPiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEs
IHB1YmxpYyBJREJBY3RpdmVET01PYmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBB
dG9taWNTdHJpbmcmIG1vZGVSZWFkT25seSgpOwogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJp
bmcmIG1vZGVSZWFkV3JpdGUoKTsKQEAgLTE0Myw4ICsxNDMsNiBAQCBwdWJsaWM6CiAKICAgICBJ
REJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSYgY29ubmVjdGlvblByb3h5KCk7CiAKLSAgICBU
aHJlYWRJZGVudGlmaWVyIG9yaWdpblRocmVhZElEKCkgY29uc3Q7Ci0KICAgICB2b2lkIGNvbm5l
Y3Rpb25DbG9zZWRGcm9tU2VydmVyKGNvbnN0IElEQkVycm9yJik7CiAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVj
dGlvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9J
REJDb25uZWN0aW9uUHJveHkuY3BwCmluZGV4IGExYjQ3ZDguLjU3ODdmNWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJD
b25uZWN0aW9uUHJveHkuY3BwCkBAIC00MSwyMyArNDEsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogbmFtZXNwYWNlIElEQkNsaWVudCB7CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
Li4uIFBhcmFtZXRlcnMsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KLXZvaWQgcGVyZm9ybUNhbGxi
YWNrT25Db3JyZWN0VGhyZWFkKFQmIG9iamVjdCwgdm9pZCAoVDo6Km1ldGhvZCkoUGFyYW1ldGVy
cy4uLiksIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwotCi0gICAgaWYgKG9iamVjdC5vcmlnaW5UaHJlYWRJRCgpID09IGN1cnJlbnRUaHJl
YWQoKSkgewotICAgICAgICAob2JqZWN0LiptZXRob2QpKGFyZ3VtZW50cy4uLik7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0g
b2JqZWN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBpZiAoIWNvbnRleHQpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGNvbnRleHQtPnBvc3RDcm9zc1RocmVhZFRhc2sob2JqZWN0LCBt
ZXRob2QsIGFyZ3VtZW50cy4uLik7Ci19Ci0KIElEQkNvbm5lY3Rpb25Qcm94eTo6SURCQ29ubmVj
dGlvblByb3h5KElEQkNvbm5lY3Rpb25Ub1NlcnZlciYgY29ubmVjdGlvbikKICAgICA6IG1fY29u
bmVjdGlvblRvU2VydmVyKGNvbm5lY3Rpb24pCiAgICAgLCBtX3NlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyKGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKQpAQCAtMTQyLDcgKzEyNSw3IEBAIHZvaWQg
SURCQ29ubmVjdGlvblByb3h5Ojpjb21wbGV0ZU9wZW5EQlJlcXVlc3QoY29uc3QgSURCUmVzdWx0
RGF0YSYgcmVzdWx0RGF0YSkKIAogICAgIEFTU0VSVChyZXF1ZXN0KTsKIAotICAgIHBlcmZvcm1D
YWxsYmFja09uQ29ycmVjdFRocmVhZCgqcmVxdWVzdCwgJklEQk9wZW5EQlJlcXVlc3Q6OnJlcXVl
c3RDb21wbGV0ZWQsIHJlc3VsdERhdGEpOworICAgIHJlcXVlc3QtPnBlcmZvcm1DYWxsYmFja09u
T3JpZ2luVGhyZWFkKCpyZXF1ZXN0LCAmSURCT3BlbkRCUmVxdWVzdDo6cmVxdWVzdENvbXBsZXRl
ZCwgcmVzdWx0RGF0YSk7CiB9CiAKIHZvaWQgSURCQ29ubmVjdGlvblByb3h5OjpjcmVhdGVPYmpl
Y3RTdG9yZShUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBjb25zdCBJREJPYmplY3RT
dG9yZUluZm8mIGluZm8pCkBAIC0yNTIsNyArMjM1LDcgQEAgdm9pZCBJREJDb25uZWN0aW9uUHJv
eHk6OmNvbXBsZXRlT3BlcmF0aW9uKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiAg
ICAgaWYgKCFvcGVyYXRpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIHBlcmZvcm1DYWxsYmFj
a09uQ29ycmVjdFRocmVhZCgqb3BlcmF0aW9uLCAmVHJhbnNhY3Rpb25PcGVyYXRpb246OmNvbXBs
ZXRlZCwgcmVzdWx0RGF0YSk7CisgICAgb3BlcmF0aW9uLT5wZXJmb3JtQ29tcGxldGVPbk9yaWdp
blRocmVhZChyZXN1bHREYXRhKTsKIH0KIAogdm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmFib3J0
T3BlbkFuZFVwZ3JhZGVOZWVkZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmll
ciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCkBA
IC0yNzEsNyArMjU0LDcgQEAgdm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmZpcmVWZXJzaW9uQ2hh
bmdlRXZlbnQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnQKICAgICBpZiAoIWRhdGFi
YXNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBwZXJmb3JtQ2FsbGJhY2tPbkNvcnJlY3RUaHJl
YWQoKmRhdGFiYXNlLCAmSURCRGF0YWJhc2U6OmZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQsIHJlcXVl
c3RJZGVudGlmaWVyLCByZXF1ZXN0ZWRWZXJzaW9uKTsKKyAgICBkYXRhYmFzZS0+cGVyZm9ybUNh
bGxiYWNrT25PcmlnaW5UaHJlYWQoKmRhdGFiYXNlLCAmSURCRGF0YWJhc2U6OmZpcmVWZXJzaW9u
Q2hhbmdlRXZlbnQsIHJlcXVlc3RJZGVudGlmaWVyLCByZXF1ZXN0ZWRWZXJzaW9uKTsKIH0KIAog
dm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0
X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiByZXF1ZXN0SWRlbnRpZmllcikKQEAgLTI5MSw3ICsyNzQsNyBAQCB2b2lkIElEQkNvbm5l
Y3Rpb25Qcm94eTo6bm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQoY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJgogCiAgICAgQVNTRVJUKHJlcXVlc3QpOwogCi0gICAgcGVyZm9ybUNhbGxiYWNr
T25Db3JyZWN0VGhyZWFkKCpyZXF1ZXN0LCAmSURCT3BlbkRCUmVxdWVzdDo6cmVxdWVzdEJsb2Nr
ZWQsIG9sZFZlcnNpb24sIG5ld1ZlcnNpb24pOworICAgIHJlcXVlc3QtPnBlcmZvcm1DYWxsYmFj
a09uT3JpZ2luVGhyZWFkKCpyZXF1ZXN0LCAmSURCT3BlbkRCUmVxdWVzdDo6cmVxdWVzdEJsb2Nr
ZWQsIG9sZFZlcnNpb24sIG5ld1ZlcnNpb24pOwogfQogCiB2b2lkIElEQkNvbm5lY3Rpb25Qcm94
eTo6b3BlbkRCUmVxdWVzdENhbmNlbGxlZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERh
dGEpCkBAIC0zMjAsNyArMzAzLDcgQEAgdm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmRpZFN0YXJ0
VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2EKIAogICAgIEFT
U0VSVCh0cmFuc2FjdGlvbik7CiAKLSAgICBwZXJmb3JtQ2FsbGJhY2tPbkNvcnJlY3RUaHJlYWQo
KnRyYW5zYWN0aW9uLCAmSURCVHJhbnNhY3Rpb246OmRpZFN0YXJ0LCBlcnJvcik7CisgICAgdHJh
bnNhY3Rpb24tPnBlcmZvcm1DYWxsYmFja09uT3JpZ2luVGhyZWFkKCp0cmFuc2FjdGlvbiwgJklE
QlRyYW5zYWN0aW9uOjpkaWRTdGFydCwgZXJyb3IpOwogfQogCiB2b2lkIElEQkNvbm5lY3Rpb25Q
cm94eTo6Y29tbWl0VHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQpAQCAt
MzQ0LDcgKzMyNyw3IEBAIHZvaWQgSURCQ29ubmVjdGlvblByb3h5OjpkaWRDb21taXRUcmFuc2Fj
dGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zCiAKICAgICBBU1NFUlQodHJh
bnNhY3Rpb24pOwogCi0gICAgcGVyZm9ybUNhbGxiYWNrT25Db3JyZWN0VGhyZWFkKCp0cmFuc2Fj
dGlvbiwgJklEQlRyYW5zYWN0aW9uOjpkaWRDb21taXQsIGVycm9yKTsKKyAgICB0cmFuc2FjdGlv
bi0+cGVyZm9ybUNhbGxiYWNrT25PcmlnaW5UaHJlYWQoKnRyYW5zYWN0aW9uLCAmSURCVHJhbnNh
Y3Rpb246OmRpZENvbW1pdCwgZXJyb3IpOwogfQogCiB2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6
YWJvcnRUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCkBAIC0zNjgsNyAr
MzUxLDcgQEAgdm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmRpZEFib3J0VHJhbnNhY3Rpb24oY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2EKIAogICAgIEFTU0VSVCh0cmFuc2FjdGlv
bik7CiAKLSAgICBwZXJmb3JtQ2FsbGJhY2tPbkNvcnJlY3RUaHJlYWQoKnRyYW5zYWN0aW9uLCAm
SURCVHJhbnNhY3Rpb246OmRpZEFib3J0LCBlcnJvcik7CisgICAgdHJhbnNhY3Rpb24tPnBlcmZv
cm1DYWxsYmFja09uT3JpZ2luVGhyZWFkKCp0cmFuc2FjdGlvbiwgJklEQlRyYW5zYWN0aW9uOjpk
aWRBYm9ydCwgZXJyb3IpOwogfQogCiBib29sIElEQkNvbm5lY3Rpb25Qcm94eTo6aGFzUmVjb3Jk
T2ZUcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pIGNvbnN0CkBA
IC00MDQsNyArMzg3LDcgQEAgdm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmRpZENsb3NlRnJvbVNl
cnZlcih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWUKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIHBlcmZvcm1DYWxsYmFja09uQ29ycmVjdFRocmVhZCgqZGF0YWJhc2Us
ICZJREJEYXRhYmFzZTo6ZGlkQ2xvc2VGcm9tU2VydmVyLCBlcnJvcik7CisgICAgZGF0YWJhc2Ut
PnBlcmZvcm1DYWxsYmFja09uT3JpZ2luVGhyZWFkKCpkYXRhYmFzZSwgJklEQkRhdGFiYXNlOjpk
aWRDbG9zZUZyb21TZXJ2ZXIsIGVycm9yKTsKIH0KIAogdm9pZCBJREJDb25uZWN0aW9uUHJveHk6
OmNvbmZpcm1EaWRDbG9zZUZyb21TZXJ2ZXIoSURCRGF0YWJhc2UmIGRhdGFiYXNlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9u
T3BlcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9U
cmFuc2FjdGlvbk9wZXJhdGlvbi5jcHAKaW5kZXggY2Y4YzMwMS4uYTZlYWQ3MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3Bl
cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
VHJhbnNhY3Rpb25PcGVyYXRpb24uY3BwCkBAIC00NCwxMSArNDQsNiBAQCBUcmFuc2FjdGlvbk9w
ZXJhdGlvbjo6VHJhbnNhY3Rpb25PcGVyYXRpb24oSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9u
LCBJREJSZXF1ZQogICAgICAgICBtX2N1cnNvcklkZW50aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PElEQlJlc291cmNlSWRlbnRpZmllcj4oY3Vyc29yLT5pbmZvKCkuaWRlbnRpZmllcigpKTsKIH0K
IAotU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogVHJhbnNhY3Rpb25PcGVyYXRpb246OnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBjb25zdAotewotICAgIHJldHVybiBtX3RyYW5zYWN0aW9uLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIElEQkNsaWVudAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCmluZGV4IDY2
YmUyYTYuLmM3YTE5ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCkBAIC0zMSw3ICsz
MSw5IEBACiAjaW5jbHVkZSAiSURCUmVxdWVzdC5oIgogI2luY2x1ZGUgIklEQlJlcXVlc3REYXRh
LmgiCiAjaW5jbHVkZSAiSURCUmVzb3VyY2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiSURCUmVz
dWx0RGF0YS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uLmgiCisjaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTYwLDYgKzYyLDE2IEBAIHB1YmxpYzoKICAgICAgICAgbV9wZXJmb3JtRnVuY3Rp
b24gPSB7IH07CiAgICAgfQogCisgICAgdm9pZCBwZXJmb3JtQ29tcGxldGVPbk9yaWdpblRocmVh
ZChjb25zdCBJREJSZXN1bHREYXRhJiBkYXRhKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKworICAgICAgICBpZiAobV9vcmlnaW5UaHJlYWRJRCA9PSBjdXJyZW50VGhy
ZWFkKCkpCisgICAgICAgICAgICBjb21wbGV0ZWQoZGF0YSk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIG1fdHJhbnNhY3Rpb24tPnBlcmZvcm1DYWxsYmFja09uT3JpZ2luVGhyZWFkKCp0aGlz
LCAmVHJhbnNhY3Rpb25PcGVyYXRpb246OmNvbXBsZXRlZCwgZGF0YSk7CisgICAgfQorCiAgICAg
dm9pZCBjb21wbGV0ZWQoY29uc3QgSURCUmVzdWx0RGF0YSYgZGF0YSkKICAgICB7CiAgICAgICAg
IEFTU0VSVChtX29yaWdpblRocmVhZElEID09IGN1cnJlbnRUaHJlYWQoKSk7CkBAIC03Nyw4ICs4
OSw2IEBAIHB1YmxpYzoKIAogICAgIFRocmVhZElkZW50aWZpZXIgb3JpZ2luVGhyZWFkSUQoKSBj
b25zdCB7IHJldHVybiBtX29yaWdpblRocmVhZElEOyB9CiAKLSAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7Ci0KIHByb3RlY3RlZDoKICAg
ICBUcmFuc2FjdGlvbk9wZXJhdGlvbihJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCiAgICAg
ICAgIDogbV90cmFuc2FjdGlvbih0cmFuc2FjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlNzU5NmJmLi4wMTlkNDBiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0yMDcxLDYgKzIwNzEsNyBAQAogCQk1MTcxMzkwNjFCRjY0REVDMDAwRDVGMDEgLyogTWVt
b3J5T2JqZWN0U3RvcmVDdXJzb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxNzEzOTA0MUJGNjRERTMwMDBENUYwMSAvKiBNZW1vcnlPYmplY3RTdG9y
ZUN1cnNvci5oICovOyB9OwogCQk1MTcxMzkwNzFCRjY0REVGMDAwRDVGMDEgLyogTWVtb3J5Q3Vy
c29yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
NzEzOTAxMUJGNjRERTMwMDBENUYwMSAvKiBNZW1vcnlDdXJzb3IuY3BwICovOyB9OwogCQk1MTcx
MzkwODFCRjY0REVGMDAwRDVGMDEgLyogTWVtb3J5Q3Vyc29yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcxMzkwMjFCRjY0REUzMDAwRDVGMDEgLyog
TWVtb3J5Q3Vyc29yLmggKi87IH07CisJCTUxNzE0RUE4MUNGNEU0QjEwMDQ3MjNDNCAvKiBJREJB
Y3RpdmVET01PYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxNzE0RUE3MUNGNERFODcwMDQ3MjNDNCAvKiBJREJBY3RpdmVET01PYmplY3QuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTc0MUQw
RjBCMDcyNTlBMDBFRDQ0MkMgLyogQmFja0ZvcndhcmRDbGllbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzQxRDBCMEIwNzI1OUEwMEVENDQyQyAv
KiBCYWNrRm9yd2FyZENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTUxNzQxRDExMEIwNzI1OUEwMEVENDQyQyAvKiBIaXN0b3J5SXRlbS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3NDFEMEQw
QjA3MjU5QTAwRUQ0NDJDIC8qIEhpc3RvcnlJdGVtLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE3NDFEMTIwQjA3MjU5QTAwRUQ0NDJDIC8qIEhp
c3RvcnlJdGVtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxNzQxRDBFMEIwNzI1OUEwMEVENDQyQyAvKiBIaXN0b3J5SXRlbS5jcHAgKi87IH07CkBA
IC05NjYyLDYgKzk2NjMsNyBAQAogCQk1MTcxMzkwMjFCRjY0REUzMDAwRDVGMDEgLyogTWVtb3J5
Q3Vyc29yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeUN1cnNvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTcxMzkwMzFCRjY0REUzMDAwRDVGMDEg
LyogTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MTcxMzkwNDFCRjY0REUzMDAwRDVGMDEgLyogTWVtb3J5T2JqZWN0U3Rv
cmVDdXJzb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVtb3J5T2JqZWN0
U3RvcmVDdXJzb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE3MTRFQTcxQ0Y0
REU4NzAwNDcyM0M0IC8qIElEQkFjdGl2ZURPTU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJREJBY3RpdmVET01PYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTE3NDFEMEIwQjA3MjU5QTAwRUQ0NDJDIC8qIEJhY2tGb3J3YXJkQ2xpZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhY2tGb3J3YXJkQ2xpZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNzQxRDBEMEIwNzI1OUEwMEVENDQyQyAvKiBI
aXN0b3J5SXRlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGlzdG9yeUl0
ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3NDFEMEUwQjA3MjU5QTAwRUQ0
NDJDIC8qIEhpc3RvcnlJdGVtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBIaXN0b3J5SXRlbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTU2
Niw2ICsxOTU2OCw3IEBACiAJCQkJNTFENzE5NkMxODExMDZERjAwMTZEQzUxIC8qIERPTVdpbmRv
d0luZGV4ZWREYXRhYmFzZS5jcHAgKi8sCiAJCQkJNTFENzE5NkQxODExMDZERjAwMTZEQzUxIC8q
IERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5oICovLAogCQkJCTUxRDcxOTZFMTgxMTA2REYwMDE2
REM1MSAvKiBET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuaWRsICovLAorCQkJCTUxNzE0RUE3MUNG
NERFODcwMDQ3MjNDNCAvKiBJREJBY3RpdmVET01PYmplY3QuaCAqLywKIAkJCQk1MTY0NUI1NDFC
OUY4OEU4MDBGNzg5Q0UgLyogSURCQ3Vyc29yLmNwcCAqLywKIAkJCQk1MTY0NUI0MTFCOUY4ODlC
MDBGNzg5Q0UgLyogSURCQ3Vyc29yLmggKi8sCiAJCQkJNTFENzE5NzcxODExMDZERjAwMTZEQzUx
IC8qIElEQkN1cnNvci5pZGwgKi8sCkBAIC0yNTA1OCw2ICsyNTA2MSw3IEBACiAJCQkJMzFEQ0Qy
OUQxQUI0RkJERTAwNzJFODE3IC8qIEFuaW1hdGlvblRyaWdnZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGNTgwRkFGMTQ5ODAwRDQwMEZCNUJEOCAvKiBBbmltYXRpb25VdGlsaXRpZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzMzA5REQ3MDk5RTY0OTIwMDU2RTU4MSAvKiBBcHBlbmROb2RlQ29t
bWFuZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE3MTRFQTgxQ0Y0RTRCMTAwNDcyM0M0IC8qIElE
QkFjdGl2ZURPTU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE4RjZCQkQwREI1NUNEQzAw
MURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBOEY2QkJG
MERCNTVDREMwMDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hlR3JvdXAuaCBpbiBIZWFkZXJzICov
LAogCQkJCTI0RjU0RUFEMTAxRkU5MTQwMDBBRTc0MSAvKiBBcHBsaWNhdGlvbkNhY2hlSG9zdC5o
IGluIEhlYWRlcnMgKi8sCg==
</data>
<flag name="review"
          id="303738"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>