<?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>174935</bug_id>
          
          <creation_ts>2017-07-28 03:07:27 -0700</creation_ts>
          <short_desc>[WTF] Introduce Private Symbols</short_desc>
          <delta_ts>2017-08-10 17:03:06 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>174971</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1332932</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-07-28 03:07:27 -0700</bug_when>
    <thetext>Upcoming proposal of class fields[1] requires private fields.
The easiest way to implement it is adding a property with specially marked symbols.
Currently, we have private symbols, which is used for internal use cases, and managed in the hash table.
But this proposal will encourage users to create such private symbols more and more.

So, I think introducing notion of Private and Internal into WTF SymbolImpl is simpler.
We do not need to look up value from private symbol hash table no longer. SymbolImpl knows that it is a private/internal/public symbol.

[1]: https://github.com/tc39/proposal-class-fields</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332933</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-07-28 03:08:25 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #0)
&gt; Upcoming proposal of class fields[1] requires private fields.
&gt; The easiest way to implement it is adding a property with specially marked
&gt; symbols.
&gt; Currently, we have private symbols, which is used for internal use cases,
&gt; and managed in the hash table.
&gt; But this proposal will encourage users to create such private symbols more
&gt; and more.
&gt; 
&gt; So, I think introducing notion of Private and Internal into WTF SymbolImpl
&gt; is simpler.
&gt; We do not need to look up value from private symbol hash table no longer.
&gt; SymbolImpl knows that it is a private/internal/public symbol.
&gt; 
&gt; [1]: https://github.com/tc39/proposal-class-fields

Note that class field proposal is now stage 3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332962</commentid>
    <comment_count>2</comment_count>
      <attachid>316640</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-07-28 08:41:22 -0700</bug_when>
    <thetext>Created attachment 316640
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332976</commentid>
    <comment_count>3</comment_count>
      <attachid>316645</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-07-28 09:43:29 -0700</bug_when>
    <thetext>Created attachment 316645
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1333361</commentid>
    <comment_count>4</comment_count>
      <attachid>316645</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-30 21:57:19 -0700</bug_when>
    <thetext>Comment on attachment 316645
Patch

Clearing flags on attachment: 316645

Committed r220053: &lt;http://trac.webkit.org/changeset/220053&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1333362</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-30 21:57:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1333363</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-07-30 21:58:50 -0700</bug_when>
    <thetext>&lt;rdar://problem/33618567&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337713</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-08-10 17:03:06 -0700</bug_when>
    <thetext>*** Bug 167574 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316640</attachid>
            <date>2017-07-28 08:41:22 -0700</date>
            <delta_ts>2017-07-28 09:43:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174935-20170729004121.patch</filename>
            <type>text/plain</type>
            <size>28764</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwMDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MGUxMzc2OGI5MjBlYTlkM2U5OTFjMDhhNjAyMWJkMmQ1Y2ZkY2NiLi5mNDZhNGIzNGMxNDFhMWEx
YmVjZDlmZWNjNmIyZjZhMjQ2N2YzMjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw0NCBAQAogMjAxNy0wNy0yOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBbV1RGXSBJbnRyb2R1Y2UgUHJpdmF0ZSBTeW1ib2xzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ5MzUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgU3ltYm9sSW1wbDo6
aXNQcml2YXRlKCkuCisKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluTmFtZXMuY3BwOgorICAg
ICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAoSlNDOjpCdWlsdGluTmFt
ZXM6OmlzUHJpdmF0ZU5hbWUpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2Rl
SW50cmluc2ljUmVnaXN0cnkuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5Ojpsb29rdXApOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3Bw
OgorICAgICAgICAoSlNDOjpDb21tb25JZGVudGlmaWVyczo6aXNQcml2YXRlTmFtZSk6IERlbGV0
ZWQuCisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1
bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHA6CisgICAgICAgIChKU0M6OmNyZWF0ZVVuZGVmaW5l
ZFZhcmlhYmxlRXJyb3IpOgorICAgICAgICAqIHJ1bnRpbWUvSWRlbnRpZmllci5oOgorICAgICAg
ICAoSlNDOjpJZGVudGlmaWVyOjppc1ByaXZhdGVOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0lk
ZW50aWZpZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmlkZW50aWZpZXJUb1NhZmVQdWJsaWNK
U1ZhbHVlKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JBc3NpZ24pOgorICAgICAgICAoSlNDOjpkZWZpbmVQ
cm9wZXJ0aWVzKToKKyAgICAgICAgKEpTQzo6c2V0SW50ZWdyaXR5TGV2ZWwpOgorICAgICAgICAo
SlNDOjp0ZXN0SW50ZWdyaXR5TGV2ZWwpOgorICAgICAgICAoSlNDOjpvd25Qcm9wZXJ0eUtleXMp
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlOYW1lLmg6CisgICAgICAgIChKU0M6OlByb3Bl
cnR5TmFtZTo6aXNQcml2YXRlTmFtZSk6CisgICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5j
cHA6CisgICAgICAgIChKU0M6OnBlcmZvcm1Qcm94eUdldCk6CisgICAgICAgIChKU0M6OlByb3h5
T2JqZWN0OjpwZXJmb3JtSW50ZXJuYWxNZXRob2RHZXRPd25Qcm9wZXJ0eSk6CisgICAgICAgIChK
U0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtSGFzUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpQcm94
eU9iamVjdDo6cGVyZm9ybVB1dCk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3Jt
RGVsZXRlKToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1EZWZpbmVPd25Qcm9w
ZXJ0eSk6CisKKzIwMTctMDctMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+CisKICAgICAgICAgQVNTRVJUSU9OIEZBSUxFRDogY2FuZGlkYXRlLT5vcCgpID09IFBoYW50
b21DcmVhdGVSZXN0IHx8IGNhbmRpZGF0ZS0+b3AoKSA9PSBQaGFudG9tRGlyZWN0QXJndW1lbnRz
IHx8IGNhbmRpZGF0ZS0+b3AoKSA9PSBQaGFudG9tQ2xvbmVkQXJndW1lbnRzIHx8IGNhbmRpZGF0
ZS0+b3AoKSA9PSBQaGFudG9tU3ByZWFkIHx8IGNhbmRpZGF0ZS0+b3AoKSA9PSBQaGFudG9tTmV3
QXJyYXlXaXRoU3ByZWFkCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzQ5MDAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZwppbmRleCA0NjVkMmRlZTUwMWVjNThhMTk5ZjUxZGVkZGUyMWM4OWI5
ZWYwOWEzLi4zNWU4ZDFmZDIxNzQzZDQ1OWVjYWYxNzlhNDY4Njc2MGVlMjdjNGFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM0IEBACisyMDE3LTA3LTI4ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgorCisgICAgICAgIFtXVEZdIEludHJvZHVjZSBQcml2YXRlIFN5bWJvbHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDkzNQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwY29taW5nIHByb3Bv
c2FsIG9mIGNsYXNzIGZpZWxkc1sxXSByZXF1aXJlcyBwcml2YXRlIGZpZWxkcy4KKyAgICAgICAg
VGhlIHNpbXBsZSB3YXkgdG8gaW1wbGVtZW50IGl0IGlzIGFkZGluZyBhIHByb3BlcnR5IHdpdGgg
YSBwcml2YXRlIHN5bWJvbC4KKyAgICAgICAgQ3VycmVudGx5LCB3ZSBoYXZlIHByaXZhdGUgc3lt
Ym9scyBmb3IgaW50ZXJuYWwgcHJvcGVydGllcy4gVGhleSBhcmUgdXN1YWwKKyAgICAgICAgU3lt
Ym9scyBtYW5hZ2VkIGJ5IHRoZSBoYXNoIHRhYmxlLiBTbyBiYXNpY2FsbHkgcHJpdmF0ZSBzeW1i
b2xzIGFyZSBzdGF0aWNhbGx5CisgICAgICAgIGNyZWF0ZWQgaW4gQnVpbHRpbk5hbWVzLiBIb3dl
dmVyIHRoaXMgbmV3IHByb3Bvc2FsIGVuY291cmFnZXMgdXNlcnMgdG8gY3JlYXRlCisgICAgICAg
IHN1Y2ggcHJpdmF0ZSBzeW1ib2xzIG1vcmUgYW5kIG1vcmUuCisKKyAgICAgICAgU28sIHRoaXMg
cGF0Y2ggaW50cm9kdWNlcyBub3Rpb24gb2YgIlByaXZhdGUiIGludG8gV1RGIFN5bWJvbEltcGwu
IFRoaXMgcGF0Y2gKKyAgICAgICAgYWRkcyBQcml2YXRlU3ltYm9sSW1wbC4gVGhpcyBpcyBTeW1i
b2xJbXBsIHdpdGggIlByaXZhdGUiIGZsYWcuIFdlIGRvIG5vdCBuZWVkCisgICAgICAgIHRvIGxv
b2sgdXAgdGhlIHN5bWJvbCBmcm9tIHRoZSBoYXNoIHRhYmxlIHRvIGNoZWNrIHdoZXRoZXIgdGhl
IGdpdmVuIHN5bWJvbAorICAgICAgICBpcyBhIHByaXZhdGUgb25lLgorCisgICAgICAgIFsxXTog
aHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtY2xhc3MtZmllbGRzCisKKyAgICAgICAg
KiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisgICAgICAgICogd3RmL3RleHQvU3ltYm9sSW1wbC5j
cHA6CisgICAgICAgIChXVEY6OlByaXZhdGVTeW1ib2xJbXBsOjpjcmVhdGUpOgorICAgICAgICAo
V1RGOjpQcml2YXRlU3ltYm9sSW1wbDo6Y3JlYXRlTnVsbFN5bWJvbCk6CisgICAgICAgICogd3Rm
L3RleHQvU3ltYm9sSW1wbC5oOgorICAgICAgICAoV1RGOjpTeW1ib2xJbXBsOjppc1ByaXZhdGUp
OgorICAgICAgICAoV1RGOjpTeW1ib2xJbXBsOjpTdGF0aWNTeW1ib2xJbXBsOjpTdGF0aWNTeW1i
b2xJbXBsKToKKyAgICAgICAgKFdURjo6U3ltYm9sSW1wbDo6U3ltYm9sSW1wbCk6CisgICAgICAg
IChXVEY6OlByaXZhdGVTeW1ib2xJbXBsOjpQcml2YXRlU3ltYm9sSW1wbCk6CisKIDIwMTctMDct
MjcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW1dU
Rl0gRHJvcCBUaHJlYWQgaW5pdGlhbGl6YXRpb24gd2FpdCBpbiBzb21lIHBsYXRmb3JtcyBieSBp
bnRyb2R1Y2luZyBTdGFja0JvdW5kczo6bmV3VGhyZWFkU3RhY2tCb3VuZHMoUGxhdGZvcm1UaHJl
YWRIYW5kbGUmKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1
aWx0aW5OYW1lcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5h
bWVzLmNwcAppbmRleCBlZmQyNWFjNDk0MzhlNGFkYjZlMmJhZWVkNzlkMWY0MjA3ZGEyNzdlLi40
ODJiZjAyZmUwY2E1NWM4MDEzZjhlZmU3NTczMTc3NjZkOWI0M2VjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmNwcApAQCAtMzgsMTIgKzM4LDEy
IEBAIG5hbWVzcGFjZSBTeW1ib2xzIHsKIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19F
QUNIX1dFTExfS05PV05fU1lNQk9MKElOSVRJQUxJWkVfQlVJTFRJTl9TVEFUSUNfU1lNQk9MUykK
ICN1bmRlZiBJTklUSUFMSVpFX0JVSUxUSU5fU1RBVElDX1NZTUJPTFMKIAotI2RlZmluZSBJTklU
SUFMSVpFX0JVSUxUSU5fUFJJVkFURV9OQU1FUyhuYW1lKSBTeW1ib2xJbXBsOjpTdGF0aWNTeW1i
b2xJbXBsIG5hbWUjI1ByaXZhdGVOYW1lIHsgIlByaXZhdGVTeW1ib2wuIiAjbmFtZSB9OworI2Rl
ZmluZSBJTklUSUFMSVpFX0JVSUxUSU5fUFJJVkFURV9OQU1FUyhuYW1lKSBTeW1ib2xJbXBsOjpT
dGF0aWNTeW1ib2xJbXBsIG5hbWUjI1ByaXZhdGVOYW1lIHsgIlByaXZhdGVTeW1ib2wuIiAjbmFt
ZSwgU3ltYm9sSW1wbDo6c19mbGFnSXNQcml2YXRlIH07CiBKU0NfRk9SRUFDSF9CVUlMVElOX0ZV
TkNUSU9OX05BTUUoSU5JVElBTElaRV9CVUlMVElOX1BSSVZBVEVfTkFNRVMpCiBKU0NfQ09NTU9O
X1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKElOSVRJQUxJWkVfQlVJTFRJ
Tl9QUklWQVRFX05BTUVTKQogI3VuZGVmIElOSVRJQUxJWkVfQlVJTFRJTl9QUklWQVRFX05BTUVT
CiAKLVN5bWJvbEltcGw6OlN0YXRpY1N5bWJvbEltcGwgZG9sbGFyVk1Qcml2YXRlTmFtZSB7ICJQ
cml2YXRlU3ltYm9sLiR2bSIgfTsKK1N5bWJvbEltcGw6OlN0YXRpY1N5bWJvbEltcGwgZG9sbGFy
Vk1Qcml2YXRlTmFtZSB7ICJQcml2YXRlU3ltYm9sLiR2bSIsIFN5bWJvbEltcGw6OnNfZmxhZ0lz
UHJpdmF0ZSB9OwogCiB9IC8vIG5hbWVzcGFjZSBTeW1ib2xzCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaAppbmRleCBm
ODU4NWQwOTdlMjIzYzdjYWE0MTkzYTk2ODUzZDc4NzVjOTQxNjVkLi5jNDViOTEzYjI2NjYyOTBh
ZTRlOGQ0YTllYTI3ODkxOTJlZTNkZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0J1aWx0aW5OYW1lcy5oCkBAIC0yMTcsOSArMjE3LDYgQEAgY2xhc3MgQnVpbHRpbk5h
bWVzIHsKICAgICAgICAgbV9wdWJsaWNUb1ByaXZhdGVNYXAuYWRkKG1fZG9sbGFyVk1OYW1lLmlt
cGwoKSwgJm1fZG9sbGFyVk1Qcml2YXRlTmFtZSk7CiAgICAgfQogCi0gICAgYm9vbCBpc1ByaXZh
dGVOYW1lKFN5bWJvbEltcGwmIHVpZCkgY29uc3Q7Ci0gICAgYm9vbCBpc1ByaXZhdGVOYW1lKFVu
aXF1ZWRTdHJpbmdJbXBsJiB1aWQpIGNvbnN0OwotICAgIGJvb2wgaXNQcml2YXRlTmFtZShjb25z
dCBJZGVudGlmaWVyJikgY29uc3Q7CiAgICAgY29uc3QgSWRlbnRpZmllciogbG9va1VwUHJpdmF0
ZU5hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwogICAgIGNvbnN0IElkZW50aWZpZXImIGxv
b2tVcFB1YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwogICAgIApAQCAtMjQzLDI1
ICsyNDAsNiBAQCBjbGFzcyBCdWlsdGluTmFtZXMgewogICAgIEJ1aWx0aW5OYW1lc01hcCBtX3By
aXZhdGVUb1B1YmxpY01hcDsKIH07CiAKLWlubGluZSBib29sIEJ1aWx0aW5OYW1lczo6aXNQcml2
YXRlTmFtZShTeW1ib2xJbXBsJiB1aWQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZVRv
UHVibGljTWFwLmNvbnRhaW5zKCZ1aWQpOwotfQotCi1pbmxpbmUgYm9vbCBCdWlsdGluTmFtZXM6
OmlzUHJpdmF0ZU5hbWUoVW5pcXVlZFN0cmluZ0ltcGwmIHVpZCkgY29uc3QKLXsKLSAgICBpZiAo
IXVpZC5pc1N5bWJvbCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIG1fcHJp
dmF0ZVRvUHVibGljTWFwLmNvbnRhaW5zKCZ1aWQpOwotfQotCi1pbmxpbmUgYm9vbCBCdWlsdGlu
TmFtZXM6OmlzUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0Ci17Ci0g
ICAgaWYgKGlkZW50LmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJu
IGlzUHJpdmF0ZU5hbWUoKmlkZW50LmltcGwoKSk7Ci19Ci0KIGlubGluZSBjb25zdCBJZGVudGlm
aWVyKiBCdWlsdGluTmFtZXM6Omxvb2tVcFByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlk
ZW50KSBjb25zdAogewogICAgIGF1dG8gaXRlciA9IG1fcHVibGljVG9Qcml2YXRlTWFwLmZpbmQo
aWRlbnQuaW1wbCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcAppbmRleCBmZjJhODc4ZjRlY2M1
ZTZlNjEyZjVjNDZhZWVhNmE5N2ZlNTMwYzdhLi4yZDk3NGJiOTQwNWIzY2M0ZjIwYzBmOGMzNTM5
YjY5MDkxYmU5M2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCkBAIC03Nyw3ICs3Nyw3IEBA
IEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkoVk0m
IHZtKQogCiBCeXRlY29kZUludHJpbnNpY05vZGU6OkVtaXR0ZXJUeXBlIEJ5dGVjb2RlSW50cmlu
c2ljUmVnaXN0cnk6Omxvb2t1cChjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKIHsKLSAg
ICBpZiAoIW1fdm0ucHJvcGVydHlOYW1lcy0+aXNQcml2YXRlTmFtZShpZGVudCkpCisgICAgaWYg
KCFpZGVudC5pc1ByaXZhdGVOYW1lKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGF1
dG8gaXRlcmF0b3IgPSBtX2J5dGVjb2RlSW50cmluc2ljTWFwLmZpbmQoaWRlbnQuaW1wbCgpKTsK
ICAgICBpZiAoaXRlcmF0b3IgPT0gbV9ieXRlY29kZUludHJpbnNpY01hcC5lbmQoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcApp
bmRleCA5MjY1MjhlMGZlZTk0MjE0NGJjYjg1NDhmNmExZGFkODhkODc0ZmE5Li4xOTczNzBkMTEw
YTc1ZGE2MGJkY2U0NDk5NWJmZTdjMjZhMTg5M2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCkBAIC01MSwyMSArNTEsNiBA
QCBDb21tb25JZGVudGlmaWVyczo6fkNvbW1vbklkZW50aWZpZXJzKCkKIHsKIH0KIAotYm9vbCBD
b21tb25JZGVudGlmaWVyczo6aXNQcml2YXRlTmFtZShTeW1ib2xJbXBsJiB1aWQpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1fYnVpbHRpbk5hbWVzLT5pc1ByaXZhdGVOYW1lKHVpZCk7Ci19Ci0KLWJv
b2wgQ29tbW9uSWRlbnRpZmllcnM6OmlzUHJpdmF0ZU5hbWUoVW5pcXVlZFN0cmluZ0ltcGwmIHVp
ZCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9idWlsdGluTmFtZXMtPmlzUHJpdmF0ZU5hbWUodWlk
KTsKLX0KLQotYm9vbCBDb21tb25JZGVudGlmaWVyczo6aXNQcml2YXRlTmFtZShjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9idWlsdGluTmFtZXMtPmlzUHJp
dmF0ZU5hbWUoaWRlbnQpOwotfQotCiBjb25zdCBJZGVudGlmaWVyKiBDb21tb25JZGVudGlmaWVy
czo6bG9va1VwUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fYnVpbHRpbk5hbWVzLT5sb29rVXBQcml2YXRlTmFtZShpZGVudCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRl
eCBiM2EyMGMzMDE0MWU1MTZlMzYxZDIwYjhlODY4ZDMyNmIyZmNiMTlmLi4yNzY1Yjg3MWNjOGI1
MjVmYTEzMzVhMWNhZjk2YjQzY2VhNTgzNTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTQzOCwxMCArNDM4LDYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNI
X1dFTExfS05PV05fU1lNQk9MKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9XRUxMX0tO
T1dOX1NZTUJPTF9HTE9CQUwpCiAjdW5kZWYgSlNDX0lERU5USUZJRVJfREVDTEFSRV9QUklWQVRF
X1dFTExfS05PV05fU1lNQk9MX0dMT0JBTAogCi0gICAgICAgIGJvb2wgaXNQcml2YXRlTmFtZShT
eW1ib2xJbXBsJiB1aWQpIGNvbnN0OwotICAgICAgICBib29sIGlzUHJpdmF0ZU5hbWUoVW5pcXVl
ZFN0cmluZ0ltcGwmIHVpZCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgaXNQcml2YXRlTmFtZShjb25z
dCBJZGVudGlmaWVyJikgY29uc3Q7Ci0KICAgICAgICAgY29uc3QgSWRlbnRpZmllciogbG9va1Vw
UHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwogICAgICAgICBJZGVudGlmaWVy
IGxvb2tVcFB1YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCmluZGV4IDI1
ZDFlNDA4MDA1NDcxOWIzYWY4NjgzYTMyMGQ3OTA2ZGYwYTg3YjYuLmU3NmQ1Y2JkOGFhNzQyNDBl
MmZhOTg3Yjc2YTY1ZjY0YzYzYWVhOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCkBAIC04Miw3ICs4Miw3IEBAIEpTT2JqZWN0
KiBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0CiAKIEpTT2JqZWN0KiBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9y
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiB7Ci0gICAgaWYgKGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5pc1ByaXZhdGVOYW1lKGlkZW50KSkgeworICAgIGlmIChpZGVu
dC5pc1ByaXZhdGVOYW1lKCkpIHsKICAgICAgICAgU3RyaW5nIG1lc3NhZ2UobWFrZVN0cmluZygi
Q2FuJ3QgZmluZCBwcml2YXRlIHZhcmlhYmxlOiBAIiwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxv
b2tVcFB1YmxpY05hbWUoaWRlbnQpLnN0cmluZygpKSk7CiAgICAgICAgIHJldHVybiBjcmVhdGVS
ZWZlcmVuY2VFcnJvcihleGVjLCBtZXNzYWdlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JZGVudGlmaWVyLmgKaW5kZXggMTU3MWFlMTdjYTNlM2EzNzY5NGFjYTQyM2Q0
MDZmMTU0YjhjNDQ4MC4uMWEzMDhhZTQyOTdjM2M0NmEzMTlmZDY4N2M0MWVkYjUxZWNiMGRkNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaApAQCAtMTM5LDYg
KzEzOSw3IEBAIGNsYXNzIElkZW50aWZpZXIgewogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHJpbmcuaXNOdWxsKCk7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJl
dHVybiBtX3N0cmluZy5pc0VtcHR5KCk7IH0KICAgICBib29sIGlzU3ltYm9sKCkgY29uc3QgeyBy
ZXR1cm4gIWlzTnVsbCgpICYmIGltcGwoKS0+aXNTeW1ib2woKTsgfQorICAgIGJvb2wgaXNQcml2
YXRlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIGlzU3ltYm9sKCkgJiYgc3RhdGljX2Nhc3Q8Y29uc3Qg
U3ltYm9sSW1wbCo+KGltcGwoKSktPmlzUHJpdmF0ZSgpOyB9CiAKICAgICBmcmllbmQgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBJZGVudGlmaWVyJik7CiAgICAgZnJp
ZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgSWRlbnRpZmllciYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJbmxpbmVz
LmgKaW5kZXggNDFkYmUxYmNlNDQ5ZTdjMDk5ZjI0OThjMjIzNDVlYTFkYzdmNmQ5NC4uOGQ5ZmZh
NjhkN2E4ODUzYmQ5MjU0ZThlNDg2NmRjNDQ3MTkxYjljNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oCkBAIC0xNDMsNyArMTQzLDcg
QEAgaW5saW5lIEpTVmFsdWUgaWRlbnRpZmllclRvSlNWYWx1ZShWTSYgdm0sIGNvbnN0IElkZW50
aWZpZXImIGlkZW50aWZpZXIpCiAKIGlubGluZSBKU1ZhbHVlIGlkZW50aWZpZXJUb1NhZmVQdWJs
aWNKU1ZhbHVlKFZNJiB2bSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgCiB7Ci0gICAg
aWYgKGlkZW50aWZpZXIuaXNTeW1ib2woKSAmJiAhdm0ucHJvcGVydHlOYW1lcy0+aXNQcml2YXRl
TmFtZShpZGVudGlmaWVyKSkKKyAgICBpZiAoaWRlbnRpZmllci5pc1N5bWJvbCgpICYmICFpZGVu
dGlmaWVyLmlzUHJpdmF0ZU5hbWUoKSkKICAgICAgICAgcmV0dXJuIFN5bWJvbDo6Y3JlYXRlKHZt
LCBzdGF0aWNfY2FzdDxTeW1ib2xJbXBsJj4oKmlkZW50aWZpZXIuaW1wbCgpKSk7CiAgICAgcmV0
dXJuIGpzU3RyaW5nKCZ2bSwgaWRlbnRpZmllci5pbXBsKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDY4Nzhl
MWJjNGY3MTFkZjkwNTJjZTE2ZjZlNzA1M2Y0OGFiMGViMzAuLjMzYjdmNDMxMjM3N2JjMTkzYjJm
OTkxMmNiN2U0NDhiMzEwMDNjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTM1Niw3ICszNTYsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yQXNzaWduKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICAgICAgaWYgKGZvdW5kU3ltYm9sKSB7CiAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGogPSAwOyBqIDwgbnVtUHJvcGVydGllczsgaisrKSB7CiAgICAgICAgICAgICAgICAgY29u
c3QgYXV0byYgcHJvcGVydHlOYW1lID0gcHJvcGVydGllc1tqXTsKLSAgICAgICAgICAgICAgICBp
ZiAocHJvcGVydHlOYW1lLmlzU3ltYm9sKCkgJiYgIXZtLnByb3BlcnR5TmFtZXMtPmlzUHJpdmF0
ZU5hbWUocHJvcGVydHlOYW1lKSkgeworICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUu
aXNTeW1ib2woKSAmJiAhcHJvcGVydHlOYW1lLmlzUHJpdmF0ZU5hbWUoKSkgewogICAgICAgICAg
ICAgICAgICAgICBhc3NpZ24ocHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAgICAgICAgICB9CkBAIC01NjUs
NyArNTY1LDcgQEAgc3RhdGljIEpTVmFsdWUgZGVmaW5lUHJvcGVydGllcyhFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiBvYmplY3QsIEpTT2JqZWN0KiBwcm8KICAgICB9CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspIHsKICAgICAgICAgSWRlbnRpZmllciBw
cm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eU5hbWVzW2ldOwotICAgICAgICBpZiAodm0ucHJvcGVydHlO
YW1lcy0+aXNQcml2YXRlTmFtZShwcm9wZXJ0eU5hbWUpKQorICAgICAgICBpZiAocHJvcGVydHlO
YW1lLmlzUHJpdmF0ZU5hbWUoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBvYmpl
Y3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9w
ZXJ0eU5hbWUsIGRlc2NyaXB0b3JzW2ldLCB0cnVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKQEAgLTYzMSw3ICs2MzEsNyBAQCBib29sIHNldEludGVncml0eUxl
dmVsKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQogICAgIFByb3Bl
cnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBwcm9wZXJ0aWVzLmVuZCgpOwogICAg
IGZvciAoUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBwcm9wZXJ0aWVz
LmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgSWRlbnRpZmllciBwcm9w
ZXJ0eU5hbWUgPSAqaXRlcjsKLSAgICAgICAgaWYgKHZtLnByb3BlcnR5TmFtZXMtPmlzUHJpdmF0
ZU5hbWUocHJvcGVydHlOYW1lKSkKKyAgICAgICAgaWYgKHByb3BlcnR5TmFtZS5pc1ByaXZhdGVO
YW1lKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBQcm9wZXJ0eURlc2NyaXB0
b3IgZGVzYzsKQEAgLTY4MCw3ICs2ODAsNyBAQCBib29sIHRlc3RJbnRlZ3JpdHlMZXZlbChFeGVj
U3RhdGUqIGV4ZWMsIFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKICAgICBQcm9wZXJ0eU5hbWVB
cnJheTo6Y29uc3RfaXRlcmF0b3IgZW5kID0ga2V5cy5lbmQoKTsKICAgICBmb3IgKFByb3BlcnR5
TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBpdGVyID0ga2V5cy5iZWdpbigpOyBpdGVyICE9IGVu
ZDsgKytpdGVyKSB7CiAgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gKml0ZXI7Ci0g
ICAgICAgIGlmICh2bS5wcm9wZXJ0eU5hbWVzLT5pc1ByaXZhdGVOYW1lKHByb3BlcnR5TmFtZSkp
CisgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUuaXNQcml2YXRlTmFtZSgpKQogICAgICAgICAgICAg
Y29udGludWU7CiAKICAgICAgICAgLy8gYS4gTGV0IGN1cnJlbnREZXNjIGJlID8gTy5bW0dldE93
blByb3BlcnR5XV0oaykKQEAgLTg2OCw3ICs4NjgsNyBAQCBKU0FycmF5KiBvd25Qcm9wZXJ0eUtl
eXMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0LCBQcm9wZXJ0eU5hbWVNb2RlIHBy
bwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7IGkrKykgewog
ICAgICAgICAgICAgY29uc3QgYXV0byYgaWRlbnRpZmllciA9IHByb3BlcnRpZXNbaV07CiAgICAg
ICAgICAgICBBU1NFUlQoaWRlbnRpZmllci5pc1N5bWJvbCgpKTsKLSAgICAgICAgICAgIGlmICgh
dm0ucHJvcGVydHlOYW1lcy0+aXNQcml2YXRlTmFtZShpZGVudGlmaWVyKSkgeworICAgICAgICAg
ICAgaWYgKCFpZGVudGlmaWVyLmlzUHJpdmF0ZU5hbWUoKSkgewogICAgICAgICAgICAgICAgIGlm
IChmaWx0ZXJQcm9wZXJ0eUlmTmVlZGVkKGlkZW50aWZpZXIpKQogICAgICAgICAgICAgICAgICAg
ICBrZXlzLT5wdXNoKGV4ZWMsIFN5bWJvbDo6Y3JlYXRlKHZtLCBzdGF0aWNfY2FzdDxTeW1ib2xJ
bXBsJj4oKmlkZW50aWZpZXIuaW1wbCgpKSkpOwogICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwpAQCAtODgyLDEwICs4ODIsOSBAQCBKU0FycmF5KiBv
d25Qcm9wZXJ0eUtleXMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0LCBQcm9wZXJ0
eU5hbWVNb2RlIHBybwogICAgICAgICBzaXplX3QgbnVtUHJvcGVydGllcyA9IHByb3BlcnRpZXMu
c2l6ZSgpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7IGkr
KykgewogICAgICAgICAgICAgY29uc3QgYXV0byYgaWRlbnRpZmllciA9IHByb3BlcnRpZXNbaV07
Ci0gICAgICAgICAgICBpZiAoaWRlbnRpZmllci5pc1N5bWJvbCgpKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKCF2bS5wcm9wZXJ0eU5hbWVzLT5pc1ByaXZhdGVOYW1lKGlkZW50aWZpZXIpKQotICAg
ICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN5bWJvbHMuYXBwZW5kKGlkZW50aWZpZXIpOwotICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChpZGVudGlmaWVyLmlzU3ltYm9sKCkg
JiYgIWlkZW50aWZpZXIuaXNQcml2YXRlTmFtZSgpKQorICAgICAgICAgICAgICAgIHByb3BlcnR5
U3ltYm9scy5hcHBlbmQoaWRlbnRpZmllcik7CisgICAgICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgICAgICBpZiAoZmlsdGVyUHJvcGVydHlJZk5lZWRlZChpZGVudGlmaWVyKSkKICAgICAgICAg
ICAgICAgICAgICAga2V5cy0+cHVzaChleGVjLCBqc093bmVkU3RyaW5nKGV4ZWMsIGlkZW50aWZp
ZXIuc3RyaW5nKCkpKTsKICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3BlcnR5TmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1l
LmgKaW5kZXggNDMyZWRmZTgzNzVkNjk4NzI0MmU2NTE4ZGQyZmE5NzVlOTVjMWMyMy4uYTQ3NDBj
ZWQzZDI0NzBmZjY1OThiY2MyMWI0ZDdlYTA3ZWMzZDBjNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lLmgKQEAgLTU3LDYgKzU3LDExIEBAIGNsYXNzIFBy
b3BlcnR5TmFtZSB7CiAgICAgICAgIHJldHVybiBtX2ltcGwgJiYgbV9pbXBsLT5pc1N5bWJvbCgp
OwogICAgIH0KIAorICAgIGJvb2wgaXNQcml2YXRlTmFtZSgpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gaXNTeW1ib2woKSAmJiBzdGF0aWNfY2FzdDxjb25zdCBTeW1ib2xJbXBsKj4obV9p
bXBsKS0+aXNQcml2YXRlKCk7CisgICAgfQorCiAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCgp
IGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9pbXBsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCmluZGV4IGUwODliZWI0OTQ0ZWNmN2Q5ZTM2
OThjZTg2MDAyODUxMTk4MmUyNzAuLjg0OTIxMzAzNGY4NjJiY2E1YTIzYTVjMTdmOTRkN2QwY2Y0
MTc0NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5j
cHAKQEAgLTEzNSw3ICsxMzUsNyBAQCBzdGF0aWMgSlNWYWx1ZSBwZXJmb3JtUHJveHlHZXQoRXhl
Y1N0YXRlKiBleGVjLCBQcm94eU9iamVjdCogcHJveHlPYmplY3QsIEpTVmFsdQogICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9OwogCi0gICAgaWYgKHZtLnByb3BlcnR5TmFtZXMt
PmlzUHJpdmF0ZU5hbWUoSWRlbnRpZmllcjo6ZnJvbVVpZCgmdm0sIHByb3BlcnR5TmFtZS51aWQo
KSkpKQorICAgIGlmIChwcm9wZXJ0eU5hbWUuaXNQcml2YXRlTmFtZSgpKQogICAgICAgICByZXR1
cm4gcGVyZm9ybURlZmF1bHRHZXQoKTsKIAogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gcHJv
eHlPYmplY3QtPmhhbmRsZXIoKTsKQEAgLTE5OSw3ICsxOTksNyBAQCBib29sIFByb3h5T2JqZWN0
OjpwZXJmb3JtSW50ZXJuYWxNZXRob2RHZXRPd25Qcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TgogICAgICAgICByZXR1cm4gdGFyZ2V0LT5tZXRob2RUYWJsZSh2bSktPmdldE93blBy
b3BlcnR5U2xvdCh0YXJnZXQsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfTsKIAot
ICAgIGlmICh2bS5wcm9wZXJ0eU5hbWVzLT5pc1ByaXZhdGVOYW1lKElkZW50aWZpZXI6OmZyb21V
aWQoJnZtLCBwcm9wZXJ0eU5hbWUudWlkKCkpKSkgeworICAgIGlmIChwcm9wZXJ0eU5hbWUuaXNQ
cml2YXRlTmFtZSgpKSB7CiAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICAgICAgcmV0dXJu
IHBlcmZvcm1EZWZhdWx0R2V0T3duUHJvcGVydHkoKTsKICAgICB9CkBAIC0zMDUsNyArMzA1LDcg
QEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybUhhc1Byb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwKICAgICAgICAgcmV0dXJuIHRhcmdldC0+bWV0aG9k
VGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGFyZ2V0LCBleGVjLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOwogICAgIH07CiAKLSAgICBpZiAodm0ucHJvcGVydHlOYW1lcy0+aXNQcml2YXRlTmFt
ZShJZGVudGlmaWVyOjpmcm9tVWlkKCZ2bSwgcHJvcGVydHlOYW1lLnVpZCgpKSkpIHsKKyAgICBp
ZiAocHJvcGVydHlOYW1lLmlzUHJpdmF0ZU5hbWUoKSkgewogICAgICAgICBzY29wZS5yZWxlYXNl
KCk7CiAgICAgICAgIHJldHVybiBwZXJmb3JtRGVmYXVsdEhhc1Byb3BlcnR5KCk7CiAgICAgfQpA
QCAtNDA3LDcgKzQwNyw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1QdXQoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHB1dFZhbHVlLCBKU1ZhbHVlIHRoaXNWYWx1CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAodm0ucHJvcGVydHlOYW1lcy0+aXNQcml2YXRlTmFt
ZShJZGVudGlmaWVyOjpmcm9tVWlkKCZ2bSwgcHJvcGVydHlOYW1lLnVpZCgpKSkpIHsKKyAgICBp
ZiAocHJvcGVydHlOYW1lLmlzUHJpdmF0ZU5hbWUoKSkgewogICAgICAgICBzY29wZS5yZWxlYXNl
KCk7CiAgICAgICAgIHJldHVybiBwZXJmb3JtRGVmYXVsdFB1dCgpOwogICAgIH0KQEAgLTYwNCw3
ICs2MDQsNyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtRGVsZXRlKEV4ZWNTdGF0ZSogZXhl
YywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgRGVmYQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCi0gICAgaWYgKHZtLnByb3BlcnR5TmFtZXMtPmlzUHJpdmF0ZU5hbWUoSWRlbnRp
Zmllcjo6ZnJvbVVpZCgmdm0sIHByb3BlcnR5TmFtZS51aWQoKSkpKSB7CisgICAgaWYgKHByb3Bl
cnR5TmFtZS5pc1ByaXZhdGVOYW1lKCkpIHsKICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwogICAg
ICAgICByZXR1cm4gcGVyZm9ybURlZmF1bHREZWxldGUoKTsKICAgICB9CkBAIC03OTUsNyArNzk1
LDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybURlZmluZU93blByb3BlcnR5KEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnQKICAgICAgICAgcmV0dXJuIHRhcmdldC0+bWV0
aG9kVGFibGUodm0pLT5kZWZpbmVPd25Qcm9wZXJ0eSh0YXJnZXQsIGV4ZWMsIHByb3BlcnR5TmFt
ZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpOwogICAgIH07CiAKLSAgICBpZiAodm0ucHJvcGVy
dHlOYW1lcy0+aXNQcml2YXRlTmFtZShJZGVudGlmaWVyOjpmcm9tVWlkKCZ2bSwgcHJvcGVydHlO
YW1lLnVpZCgpKSkpCisgICAgaWYgKHByb3BlcnR5TmFtZS5pc1ByaXZhdGVOYW1lKCkpCiAgICAg
ICAgIHJldHVybiBwZXJmb3JtRGVmYXVsdERlZmluZU93blByb3BlcnR5KCk7CiAKICAgICBKU1Zh
bHVlIGhhbmRsZXJWYWx1ZSA9IHRoaXMtPmhhbmRsZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBs
LmgKaW5kZXggYjAwMGMxZjAwNGQ4MWFlMTFiOGNiYTVhZGRlNWQzMjVkZjA3MjQxNi4uOTZlODVk
NWZmZTVjODI4ZTA1ZDAzZmM4MjBkNDBlNDM3YzIxM2JjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdJbXBsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJ
bXBsLmgKQEAgLTE5MCw2ICsxOTAsNyBAQCBjbGFzcyBTdHJpbmdJbXBsIDogcHJpdmF0ZSBTdHJp
bmdJbXBsU2hhcGUgewogICAgIGZyaWVuZCBjbGFzcyBKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKICAgICBmcmllbmQgY2xhc3MgQXRvbWljU3RyaW5nSW1wbDsKICAgICBmcmllbmQgY2xhc3Mg
U3ltYm9sSW1wbDsKKyAgICBmcmllbmQgY2xhc3MgUHJpdmF0ZVN5bWJvbEltcGw7CiAgICAgZnJp
ZW5kIGNsYXNzIFJlZ2lzdGVyZWRTeW1ib2xJbXBsOwogICAgIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sSW1wbC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N5bWJvbEltcGwuY3BwCmluZGV4IDYwNTUxMTYwNGIzN2JhZWIyZGJmZGVhZDRhYmRlYTAw
Mzg0YTc3YjIuLjI0Njc1ODllYWIyNjJjNTA5MTgxNjJhNWY2OGU5ZTcyYWJiMjg2ZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sSW1wbC5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9TeW1ib2xJbXBsLmNwcApAQCAtNTYsNiArNTYsMjAgQEAgUmVmPFN5bWJvbElt
cGw+IFN5bWJvbEltcGw6OmNyZWF0ZU51bGxTeW1ib2woKQogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFN5bWJvbEltcGwpOwogfQogCitSZWY8UHJpdmF0ZVN5bWJvbEltcGw+IFByaXZhdGVTeW1i
b2xJbXBsOjpjcmVhdGUoU3RyaW5nSW1wbCYgcmVwKQoreworICAgIGF1dG8qIG93bmVyUmVwID0g
KHJlcC5idWZmZXJPd25lcnNoaXAoKSA9PSBCdWZmZXJTdWJzdHJpbmcpID8gcmVwLnN1YnN0cmlu
Z0J1ZmZlcigpIDogJnJlcDsKKyAgICBBU1NFUlQob3duZXJSZXAtPmJ1ZmZlck93bmVyc2hpcCgp
ICE9IEJ1ZmZlclN1YnN0cmluZyk7CisgICAgaWYgKHJlcC5pczhCaXQoKSkKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgUHJpdmF0ZVN5bWJvbEltcGwocmVwLm1fZGF0YTgsIHJlcC5sZW5n
dGgoKSwgKm93bmVyUmVwKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUHJpdmF0ZVN5bWJv
bEltcGwocmVwLm1fZGF0YTE2LCByZXAubGVuZ3RoKCksICpvd25lclJlcCkpOworfQorCitSZWY8
UHJpdmF0ZVN5bWJvbEltcGw+IFByaXZhdGVTeW1ib2xJbXBsOjpjcmVhdGVOdWxsU3ltYm9sKCkK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQcml2YXRlU3ltYm9sSW1wbCk7Cit9CisKIFJl
ZjxSZWdpc3RlcmVkU3ltYm9sSW1wbD4gUmVnaXN0ZXJlZFN5bWJvbEltcGw6OmNyZWF0ZShTdHJp
bmdJbXBsJiByZXAsIFN5bWJvbFJlZ2lzdHJ5JiBzeW1ib2xSZWdpc3RyeSkKIHsKICAgICBhdXRv
KiBvd25lclJlcCA9IChyZXAuYnVmZmVyT3duZXJzaGlwKCkgPT0gQnVmZmVyU3Vic3RyaW5nKSA/
IHJlcC5zdWJzdHJpbmdCdWZmZXIoKSA6ICZyZXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N5bWJvbEltcGwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sSW1wbC5oCmlu
ZGV4IGI1YWQ0ZDM1MmUxNDU5ZmNlYTY3ZWU4NTk0ZDM0ZTg1MjEyNjJkMGQuLjhjNTAxNDU2OWQ5
NDFkODQxZDcyMzEzZWQyYzEzYzZlMmRmZDMzNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3ltYm9sSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sSW1wbC5o
CkBAIC0zNiwxMyArMzYsMTUgQEAgY2xhc3MgUmVnaXN0ZXJlZFN5bWJvbEltcGw7CiBjbGFzcyBT
eW1ib2xJbXBsIDogcHVibGljIFVuaXF1ZWRTdHJpbmdJbXBsIHsKIHB1YmxpYzoKICAgICB1c2lu
ZyBGbGFncyA9IHVuc2lnbmVkOwotICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgRmxhZ3Mgc19m
bGFnRGVmYXVsdCA9IDB1OwotICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgRmxhZ3Mgc19mbGFn
SXNOdWxsU3ltYm9sID0gMGIwMXU7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBGbGFncyBz
X2ZsYWdJc1JlZ2lzdGVyZWQgPSAwYjEwdTsKKyAgICBzdGF0aWMgY29uc3RleHByIEZsYWdzIHNf
ZmxhZ0RlZmF1bHQgPSAwdTsKKyAgICBzdGF0aWMgY29uc3RleHByIEZsYWdzIHNfZmxhZ0lzTnVs
bFN5bWJvbCA9IDBiMDAxdTsKKyAgICBzdGF0aWMgY29uc3RleHByIEZsYWdzIHNfZmxhZ0lzUmVn
aXN0ZXJlZCA9IDBiMDEwdTsKKyAgICBzdGF0aWMgY29uc3RleHByIEZsYWdzIHNfZmxhZ0lzUHJp
dmF0ZSA9IDBiMTAwdTsKIAogICAgIHVuc2lnbmVkIGhhc2hGb3JTeW1ib2woKSBjb25zdCB7IHJl
dHVybiBtX2hhc2hGb3JTeW1ib2w7IH0KICAgICBib29sIGlzTnVsbFN5bWJvbCgpIGNvbnN0IHsg
cmV0dXJuIG1fZmxhZ3MgJiBzX2ZsYWdJc051bGxTeW1ib2w7IH0KICAgICBib29sIGlzUmVnaXN0
ZXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBzX2ZsYWdJc1JlZ2lzdGVyZWQ7IH0KKyAg
ICBib29sIGlzUHJpdmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBzX2ZsYWdJc1ByaXZh
dGU7IH0KIAogICAgIFN5bWJvbFJlZ2lzdHJ5KiBzeW1ib2xSZWdpc3RyeSgpIGNvbnN0OwogCkBA
IC01NSwxOCArNTcsMjAgQEAgY2xhc3MgU3ltYm9sSW1wbCA6IHB1YmxpYyBVbmlxdWVkU3RyaW5n
SW1wbCB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN0YXRpY1N5bWJvbEltcGwpOwog
ICAgIHB1YmxpYzoKICAgICAgICAgdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+Ci0g
ICAgICAgIGNvbnN0ZXhwciBTdGF0aWNTeW1ib2xJbXBsKGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJz
KVtjaGFyYWN0ZXJDb3VudF0pCisgICAgICAgIGNvbnN0ZXhwciBTdGF0aWNTeW1ib2xJbXBsKGNv
bnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0sIEZsYWdzIGZsYWdzID0gc19m
bGFnRGVmYXVsdCkKICAgICAgICAgICAgIDogU3RyaW5nSW1wbFNoYXBlKHNfcmVmQ291bnRGbGFn
SXNTdGF0aWNTdHJpbmcsIGNoYXJhY3RlckNvdW50IC0gMSwgY2hhcmFjdGVycywKICAgICAgICAg
ICAgICAgICBzX2hhc2hGbGFnOEJpdEJ1ZmZlciB8IHNfaGFzaEZsYWdEaWRSZXBvcnRDb3N0IHwg
U3RyaW5nU3ltYm9sIHwgQnVmZmVySW50ZXJuYWwgfCAoU3RyaW5nSGFzaGVyOjpjb21wdXRlTGl0
ZXJhbEhhc2hBbmRNYXNrVG9wOEJpdHMoY2hhcmFjdGVycykgPDwgc19mbGFnQ291bnQpLCBDb25z
dHJ1Y3RXaXRoQ29uc3RFeHByKQogICAgICAgICAgICAgLCBtX2hhc2hGb3JTeW1ib2woU3RyaW5n
SGFzaGVyOjpjb21wdXRlTGl0ZXJhbEhhc2hBbmRNYXNrVG9wOEJpdHMoY2hhcmFjdGVycykgPDwg
c19mbGFnQ291bnQpCisgICAgICAgICAgICAsIG1fZmxhZ3MoZmxhZ3MpCiAgICAgICAgIHsKICAg
ICAgICAgfQogCiAgICAgICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PgotICAg
ICAgICBjb25zdGV4cHIgU3RhdGljU3ltYm9sSW1wbChjb25zdCBjaGFyMTZfdCAoJmNoYXJhY3Rl
cnMpW2NoYXJhY3RlckNvdW50XSkKKyAgICAgICAgY29uc3RleHByIFN0YXRpY1N5bWJvbEltcGwo
Y29uc3QgY2hhcjE2X3QgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0sIEZsYWdzIGZsYWdz
ID0gc19mbGFnRGVmYXVsdCkKICAgICAgICAgICAgIDogU3RyaW5nSW1wbFNoYXBlKHNfcmVmQ291
bnRGbGFnSXNTdGF0aWNTdHJpbmcsIGNoYXJhY3RlckNvdW50IC0gMSwgY2hhcmFjdGVycywKICAg
ICAgICAgICAgICAgICBzX2hhc2hGbGFnRGlkUmVwb3J0Q29zdCB8IFN0cmluZ1N5bWJvbCB8IEJ1
ZmZlckludGVybmFsIHwgKFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUxpdGVyYWxIYXNoQW5kTWFza1Rv
cDhCaXRzKGNoYXJhY3RlcnMpIDw8IHNfZmxhZ0NvdW50KSwgQ29uc3RydWN0V2l0aENvbnN0RXhw
cikKICAgICAgICAgICAgICwgbV9oYXNoRm9yU3ltYm9sKFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUxp
dGVyYWxIYXNoQW5kTWFza1RvcDhCaXRzKGNoYXJhY3RlcnMpIDw8IHNfZmxhZ0NvdW50KQorICAg
ICAgICAgICAgLCBtX2ZsYWdzKGZsYWdzKQogICAgICAgICB7CiAgICAgICAgIH0KIApAQCAtNzcs
NyArODEsNyBAQCBjbGFzcyBTeW1ib2xJbXBsIDogcHVibGljIFVuaXF1ZWRTdHJpbmdJbXBsIHsK
IAogICAgICAgICBTdHJpbmdJbXBsKiBtX293bmVyIHsgbnVsbHB0ciB9OyAvLyBXZSBkbyBub3Qg
bWFrZSBTdGF0aWNTeW1ib2xJbXBsIEJ1ZmZlclN1YnN0cmluZy4gVGh1cyB3ZSBjYW4gbWFrZSB0
aGlzIG51bGxwdHIuCiAgICAgICAgIHVuc2lnbmVkIG1faGFzaEZvclN5bWJvbDsKLSAgICAgICAg
RmxhZ3MgbV9mbGFncyB7IHNfZmxhZ0RlZmF1bHQgfTsKKyAgICAgICAgRmxhZ3MgbV9mbGFnczsK
ICAgICB9OwogCiBwcm90ZWN0ZWQ6CkBAIC0xMDMsMTEgKzEwNywxMSBAQCBjbGFzcyBTeW1ib2xJ
bXBsIDogcHVibGljIFVuaXF1ZWRTdHJpbmdJbXBsIHsKICAgICAgICAgQVNTRVJUKFN0cmluZ0lt
cGw6OnRhaWxPZmZzZXQ8U3RyaW5nSW1wbCo+KCkgPT0gT0JKRUNUX09GRlNFVE9GKFN5bWJvbElt
cGwsIG1fb3duZXIpKTsKICAgICB9CiAKLSAgICBTeW1ib2xJbXBsKCkKKyAgICBTeW1ib2xJbXBs
KEZsYWdzIGZsYWdzID0gc19mbGFnRGVmYXVsdCkKICAgICAgICAgOiBVbmlxdWVkU3RyaW5nSW1w
bChDcmVhdGVTeW1ib2wpCiAgICAgICAgICwgbV9vd25lcihTdHJpbmdJbXBsOjplbXB0eSgpKQog
ICAgICAgICAsIG1faGFzaEZvclN5bWJvbChuZXh0SGFzaEZvclN5bWJvbCgpKQotICAgICAgICAs
IG1fZmxhZ3Moc19mbGFnSXNOdWxsU3ltYm9sKQorICAgICAgICAsIG1fZmxhZ3MoZmxhZ3MgfCBz
X2ZsYWdJc051bGxTeW1ib2wpCiAgICAgewogICAgICAgICBBU1NFUlQoU3RyaW5nSW1wbDo6dGFp
bE9mZnNldDxTdHJpbmdJbXBsKj4oKSA9PSBPQkpFQ1RfT0ZGU0VUT0YoU3ltYm9sSW1wbCwgbV9v
d25lcikpOwogICAgIH0KQEAgLTEyMCw2ICsxMjQsMjggQEAgY2xhc3MgU3ltYm9sSW1wbCA6IHB1
YmxpYyBVbmlxdWVkU3RyaW5nSW1wbCB7CiB9Owogc3RhdGljX2Fzc2VydChzaXplb2YoU3ltYm9s
SW1wbCkgPT0gc2l6ZW9mKFN5bWJvbEltcGw6OlN0YXRpY1N5bWJvbEltcGwpLCAiIik7CiAKK2Ns
YXNzIFByaXZhdGVTeW1ib2xJbXBsIDogcHVibGljIFN5bWJvbEltcGwgeworcHVibGljOgorICAg
IFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFByaXZhdGVTeW1ib2xJbXBsPiBjcmVh
dGVOdWxsU3ltYm9sKCk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8UHJp
dmF0ZVN5bWJvbEltcGw+IGNyZWF0ZShTdHJpbmdJbXBsJiByZXApOworCitwcml2YXRlOgorICAg
IFByaXZhdGVTeW1ib2xJbXBsKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5n
dGgsIFJlZjxTdHJpbmdJbXBsPiYmIGJhc2UpCisgICAgICAgIDogU3ltYm9sSW1wbChjaGFyYWN0
ZXJzLCBsZW5ndGgsIFdURk1vdmUoYmFzZSksIHNfZmxhZ0lzUHJpdmF0ZSkKKyAgICB7CisgICAg
fQorCisgICAgUHJpdmF0ZVN5bWJvbEltcGwoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2ln
bmVkIGxlbmd0aCwgUmVmPFN0cmluZ0ltcGw+JiYgYmFzZSkKKyAgICAgICAgOiBTeW1ib2xJbXBs
KGNoYXJhY3RlcnMsIGxlbmd0aCwgV1RGTW92ZShiYXNlKSwgc19mbGFnSXNQcml2YXRlKQorICAg
IHsKKyAgICB9CisKKyAgICBQcml2YXRlU3ltYm9sSW1wbCgpCisgICAgICAgIDogU3ltYm9sSW1w
bChzX2ZsYWdJc1ByaXZhdGUpCisgICAgeworICAgIH0KK307CisKIGNsYXNzIFJlZ2lzdGVyZWRT
eW1ib2xJbXBsIDogcHVibGljIFN5bWJvbEltcGwgewogcHJpdmF0ZToKICAgICBmcmllbmQgY2xh
c3MgU3RyaW5nSW1wbDsKQEAgLTE5Myw0ICsyMTksNSBAQCBWYWx1ZUNoZWNrPGNvbnN0IFN5bWJv
bEltcGwqPiB7CiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpTeW1ib2xJbXBsOwor
dXNpbmcgV1RGOjpQcml2YXRlU3ltYm9sSW1wbDsKIHVzaW5nIFdURjo6UmVnaXN0ZXJlZFN5bWJv
bEltcGw7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggYzA2ZGEwNDQ0NmRlODI5ZmMwMWI4ZjY1YmFmMDM5MDI4OGZhZWQ1Mi4uNjlkMzU4OTc4ODZl
NmMzMWMzZjI4YzY4YjQzNTE3OTJjNjQzYzA4YyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE3LTA3LTI4ICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtXVEZdIEludHJv
ZHVjZSBQcml2YXRlIFN5bWJvbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NDkzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nSW1wbC5jcHA6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxNy0wNy0yOCAgQ2xhdWRpbyBTYWF2
ZWRyYSAgPGNzYWF2ZWRyYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdIEltcGxlbWVudCBF
dmVudFNlbmRlclByb3h5IGluIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvU3RyaW5nSW1wbC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9T
dHJpbmdJbXBsLmNwcAppbmRleCA4OTIzMWIxOTViNjIyOWVlOGEzMmU2OWI1MTUxN2Q3YTBkZjE0
ZjUwLi5jODQ4YWEwNjU5YzU3ZmQ4ODcwMjc0NTQ1NDE3OWIwZTJkY2FjMDJjIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdJbXBsLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdJbXBsLmNwcApAQCAtNTMwLDYgKzUzMCw3
IEBAIFRFU1QoV1RGLCBTdHJpbmdJbXBsQ3JlYXRlTnVsbFN5bWJvbCkKIHsKICAgICBhdXRvIHJl
ZmVyZW5jZSA9IFN5bWJvbEltcGw6OmNyZWF0ZU51bGxTeW1ib2woKTsKICAgICBBU1NFUlRfVFJV
RShyZWZlcmVuY2UtPmlzU3ltYm9sKCkpOworICAgIEFTU0VSVF9GQUxTRShyZWZlcmVuY2UtPmlz
UHJpdmF0ZSgpKTsKICAgICBBU1NFUlRfVFJVRShyZWZlcmVuY2UtPmlzTnVsbFN5bWJvbCgpKTsK
ICAgICBBU1NFUlRfRkFMU0UocmVmZXJlbmNlLT5pc0F0b21pYygpKTsKICAgICBBU1NFUlRfRVEo
MHUsIHJlZmVyZW5jZS0+bGVuZ3RoKCkpOwpAQCAtNTQxLDYgKzU0Miw3IEBAIFRFU1QoV1RGLCBT
dHJpbmdJbXBsQ3JlYXRlU3ltYm9sKQogICAgIGF1dG8gb3JpZ2luYWwgPSBzdHJpbmdGcm9tVVRG
OCgib3JpZ2luYWwiKTsKICAgICBhdXRvIHJlZmVyZW5jZSA9IFN5bWJvbEltcGw6OmNyZWF0ZShv
cmlnaW5hbCk7CiAgICAgQVNTRVJUX1RSVUUocmVmZXJlbmNlLT5pc1N5bWJvbCgpKTsKKyAgICBB
U1NFUlRfRkFMU0UocmVmZXJlbmNlLT5pc1ByaXZhdGUoKSk7CiAgICAgQVNTRVJUX0ZBTFNFKHJl
ZmVyZW5jZS0+aXNOdWxsU3ltYm9sKCkpOwogICAgIEFTU0VSVF9GQUxTRShyZWZlcmVuY2UtPmlz
QXRvbWljKCkpOwogICAgIEFTU0VSVF9GQUxTRShvcmlnaW5hbC0+aXNTeW1ib2woKSk7CkBAIC01
NTEsNiArNTUzLDMyIEBAIFRFU1QoV1RGLCBTdHJpbmdJbXBsQ3JlYXRlU3ltYm9sKQogICAgIGF1
dG8gZW1wdHkgPSBzdHJpbmdGcm9tVVRGOCgiIik7CiAgICAgYXV0byBlbXB0eVJlZmVyZW5jZSA9
IFN5bWJvbEltcGw6OmNyZWF0ZShlbXB0eSk7CiAgICAgQVNTRVJUX1RSVUUoZW1wdHlSZWZlcmVu
Y2UtPmlzU3ltYm9sKCkpOworICAgIEFTU0VSVF9GQUxTRShlbXB0eVJlZmVyZW5jZS0+aXNQcml2
YXRlKCkpOworICAgIEFTU0VSVF9GQUxTRShlbXB0eVJlZmVyZW5jZS0+aXNOdWxsU3ltYm9sKCkp
OworICAgIEFTU0VSVF9GQUxTRShlbXB0eVJlZmVyZW5jZS0+aXNBdG9taWMoKSk7CisgICAgQVNT
RVJUX0ZBTFNFKGVtcHR5LT5pc1N5bWJvbCgpKTsKKyAgICBBU1NFUlRfVFJVRShlbXB0eS0+aXNB
dG9taWMoKSk7CisgICAgQVNTRVJUX0VRKGVtcHR5LT5sZW5ndGgoKSwgZW1wdHlSZWZlcmVuY2Ut
Pmxlbmd0aCgpKTsKKyAgICBBU1NFUlRfVFJVRShlcXVhbChlbXB0eVJlZmVyZW5jZS5wdHIoKSwg
IiIpKTsKK30KKworVEVTVChXVEYsIFN0cmluZ0ltcGxDcmVhdGVQcml2YXRlU3ltYm9sKQorewor
ICAgIGF1dG8gb3JpZ2luYWwgPSBzdHJpbmdGcm9tVVRGOCgib3JpZ2luYWwiKTsKKyAgICBhdXRv
IHJlZmVyZW5jZSA9IFByaXZhdGVTeW1ib2xJbXBsOjpjcmVhdGUob3JpZ2luYWwpOworICAgIEFT
U0VSVF9UUlVFKHJlZmVyZW5jZS0+aXNTeW1ib2woKSk7CisgICAgQVNTRVJUX1RSVUUocmVmZXJl
bmNlLT5pc1ByaXZhdGUoKSk7CisgICAgQVNTRVJUX0ZBTFNFKHJlZmVyZW5jZS0+aXNOdWxsU3lt
Ym9sKCkpOworICAgIEFTU0VSVF9GQUxTRShyZWZlcmVuY2UtPmlzQXRvbWljKCkpOworICAgIEFT
U0VSVF9GQUxTRShvcmlnaW5hbC0+aXNTeW1ib2woKSk7CisgICAgQVNTRVJUX0ZBTFNFKG9yaWdp
bmFsLT5pc0F0b21pYygpKTsKKyAgICBBU1NFUlRfRVEob3JpZ2luYWwtPmxlbmd0aCgpLCByZWZl
cmVuY2UtPmxlbmd0aCgpKTsKKyAgICBBU1NFUlRfVFJVRShlcXVhbChyZWZlcmVuY2UucHRyKCks
ICJvcmlnaW5hbCIpKTsKKworICAgIGF1dG8gZW1wdHkgPSBzdHJpbmdGcm9tVVRGOCgiIik7Cisg
ICAgYXV0byBlbXB0eVJlZmVyZW5jZSA9IFByaXZhdGVTeW1ib2xJbXBsOjpjcmVhdGUoZW1wdHkp
OworICAgIEFTU0VSVF9UUlVFKGVtcHR5UmVmZXJlbmNlLT5pc1N5bWJvbCgpKTsKKyAgICBBU1NF
UlRfVFJVRShlbXB0eVJlZmVyZW5jZS0+aXNQcml2YXRlKCkpOwogICAgIEFTU0VSVF9GQUxTRShl
bXB0eVJlZmVyZW5jZS0+aXNOdWxsU3ltYm9sKCkpOwogICAgIEFTU0VSVF9GQUxTRShlbXB0eVJl
ZmVyZW5jZS0+aXNBdG9taWMoKSk7CiAgICAgQVNTRVJUX0ZBTFNFKGVtcHR5LT5pc1N5bWJvbCgp
KTsKQEAgLTU2NCw2ICs1OTIsNyBAQCBURVNUKFdURiwgU3RyaW5nSW1wbFN5bWJvbFRvQXRvbWlj
U3RyaW5nKQogICAgIGF1dG8gb3JpZ2luYWwgPSBzdHJpbmdGcm9tVVRGOCgib3JpZ2luYWwiKTsK
ICAgICBhdXRvIHJlZmVyZW5jZSA9IFN5bWJvbEltcGw6OmNyZWF0ZShvcmlnaW5hbCk7CiAgICAg
QVNTRVJUX1RSVUUocmVmZXJlbmNlLT5pc1N5bWJvbCgpKTsKKyAgICBBU1NFUlRfRkFMU0UocmVm
ZXJlbmNlLT5pc1ByaXZhdGUoKSk7CiAgICAgQVNTRVJUX0ZBTFNFKHJlZmVyZW5jZS0+aXNBdG9t
aWMoKSk7CiAKICAgICBhdXRvIHJlc3VsdCA9IEF0b21pY1N0cmluZ0ltcGw6Omxvb2tVcChyZWZl
cmVuY2UucHRyKCkpOwpAQCAtNTgzLDYgKzYxMiw3IEBAIFRFU1QoV1RGLCBTdHJpbmdJbXBsTnVs
bFN5bWJvbFRvQXRvbWljU3RyaW5nKQogewogICAgIGF1dG8gcmVmZXJlbmNlID0gU3ltYm9sSW1w
bDo6Y3JlYXRlTnVsbFN5bWJvbCgpOwogICAgIEFTU0VSVF9UUlVFKHJlZmVyZW5jZS0+aXNTeW1i
b2woKSk7CisgICAgQVNTRVJUX0ZBTFNFKHJlZmVyZW5jZS0+aXNQcml2YXRlKCkpOwogICAgIEFT
U0VSVF9GQUxTRShyZWZlcmVuY2UtPmlzQXRvbWljKCkpOwogCiAgICAgLy8gQmVjYXVzZSB0aGUg
c3Vic3RyaW5nIG9mIHRoZSByZWZlcmVuY2UgaXMgdGhlIGVtcHR5IHN0cmluZyB3aGljaCBpcyBh
bHJlYWR5IGludGVybmVkLgpAQCAtNjkwLDQgKzcyMCwyMSBAQCBURVNUKFdURiwgU3RhdGljU3Ry
aW5nSW1wbCkKICAgICBBU1NFUlRfRVEoc3RyMS5pbXBsKCksIHN0cjIuaW1wbCgpKTsKIH0KIAor
c3RhdGljIFN5bWJvbEltcGw6OlN0YXRpY1N5bWJvbEltcGwgc3RhdGljU3ltYm9sIHsiQ29jb2Ei
fTsKK3N0YXRpYyBTeW1ib2xJbXBsOjpTdGF0aWNTeW1ib2xJbXBsIHN0YXRpY1ByaXZhdGVTeW1i
b2wgeyJDb2NvYSIsIFN5bWJvbEltcGw6OnNfZmxhZ0lzUHJpdmF0ZSB9OworCitURVNUKFdURiwg
U3RhdGljU3ltYm9sSW1wbCkKK3sKKyAgICBhdXRvJiBzeW1ib2wgPSBzdGF0aWNfY2FzdDxTeW1i
b2xJbXBsJj4oc3RhdGljU3ltYm9sKTsKKyAgICBBU1NFUlRfVFJVRShzeW1ib2wuaXNTeW1ib2wo
KSk7CisgICAgQVNTRVJUX0ZBTFNFKHN5bWJvbC5pc1ByaXZhdGUoKSk7Cit9CisKK1RFU1QoV1RG
LCBTdGF0aWNQcml2YXRlU3ltYm9sSW1wbCkKK3sKKyAgICBhdXRvJiBzeW1ib2wgPSBzdGF0aWNf
Y2FzdDxTeW1ib2xJbXBsJj4oc3RhdGljUHJpdmF0ZVN5bWJvbCk7CisgICAgQVNTRVJUX1RSVUUo
c3ltYm9sLmlzU3ltYm9sKCkpOworICAgIEFTU0VSVF9UUlVFKHN5bWJvbC5pc1ByaXZhdGUoKSk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316645</attachid>
            <date>2017-07-28 09:43:29 -0700</date>
            <delta_ts>2017-07-30 21:57:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174935-20170729014328.patch</filename>
            <type>text/plain</type>
            <size>32388</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwMDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MGUxMzc2OGI5MjBlYTlkM2U5OTFjMDhhNjAyMWJkMmQ1Y2ZkY2NiLi5hNjcyMTVjYTZkYTAzMzU4
YjY0NWIxYzIzMDc0NDgwZWFkNTJlMGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw0NyBAQAogMjAxNy0wNy0yOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBbV1RGXSBJbnRyb2R1Y2UgUHJpdmF0ZSBTeW1ib2xzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ5MzUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgU3ltYm9sSW1wbDo6
aXNQcml2YXRlKCkuCisKKyAgICAgICAgKiBidWlsdGlucy9CdWlsdGluTmFtZXMuY3BwOgorICAg
ICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAgICAgICAoSlNDOjpCdWlsdGluTmFt
ZXM6OmlzUHJpdmF0ZU5hbWUpOiBEZWxldGVkLgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5V
dGlscy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3Bw
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5Ojpsb29rdXApOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwOgorICAgICAgICAoSlNDOjpDb21t
b25JZGVudGlmaWVyczo6aXNQcml2YXRlTmFtZSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVy
cy5jcHA6CisgICAgICAgIChKU0M6OmNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IpOgorICAg
ICAgICAqIHJ1bnRpbWUvSWRlbnRpZmllci5oOgorICAgICAgICAoSlNDOjpJZGVudGlmaWVyOjpp
c1ByaXZhdGVOYW1lKToKKyAgICAgICAgKiBydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmg6Cisg
ICAgICAgIChKU0M6OmlkZW50aWZpZXJUb1NhZmVQdWJsaWNKU1ZhbHVlKToKKyAgICAgICAgKiBy
dW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3Ry
dWN0b3JBc3NpZ24pOgorICAgICAgICAoSlNDOjpkZWZpbmVQcm9wZXJ0aWVzKToKKyAgICAgICAg
KEpTQzo6c2V0SW50ZWdyaXR5TGV2ZWwpOgorICAgICAgICAoSlNDOjp0ZXN0SW50ZWdyaXR5TGV2
ZWwpOgorICAgICAgICAoSlNDOjpvd25Qcm9wZXJ0eUtleXMpOgorICAgICAgICAqIHJ1bnRpbWUv
UHJpdmF0ZU5hbWUuaDoKKyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWU6OlByaXZhdGVOYW1lKToK
KyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5TmFtZS5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0
eU5hbWU6OmlzUHJpdmF0ZU5hbWUpOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlPYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjpwZXJmb3JtUHJveHlHZXQpOgorICAgICAgICAoSlNDOjpQcm94eU9i
amVjdDo6cGVyZm9ybUludGVybmFsTWV0aG9kR2V0T3duUHJvcGVydHkpOgorICAgICAgICAoSlND
OjpQcm94eU9iamVjdDo6cGVyZm9ybUhhc1Byb3BlcnR5KToKKyAgICAgICAgKEpTQzo6UHJveHlP
YmplY3Q6OnBlcmZvcm1QdXQpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybURl
bGV0ZSk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtRGVmaW5lT3duUHJvcGVy
dHkpOgorCisyMDE3LTA3LTI4ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgorCiAgICAgICAgIEFTU0VSVElPTiBGQUlMRUQ6IGNhbmRpZGF0ZS0+b3AoKSA9PSBQaGFudG9t
Q3JlYXRlUmVzdCB8fCBjYW5kaWRhdGUtPm9wKCkgPT0gUGhhbnRvbURpcmVjdEFyZ3VtZW50cyB8
fCBjYW5kaWRhdGUtPm9wKCkgPT0gUGhhbnRvbUNsb25lZEFyZ3VtZW50cyB8fCBjYW5kaWRhdGUt
Pm9wKCkgPT0gUGhhbnRvbVNwcmVhZCB8fCBjYW5kaWRhdGUtPm9wKCkgPT0gUGhhbnRvbU5ld0Fy
cmF5V2l0aFNwcmVhZAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc0OTAwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKaW5kZXggNDY1ZDJkZWU1MDFlYzU4YTE5OWY1MWRlZGRlMjFjODliOWVm
MDlhMy4uMzVlOGQxZmQyMTc0M2Q0NTllY2FmMTc5YTQ2ODY3NjBlZTI3YzRhYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNCBAQAorMjAxNy0wNy0yOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbV1RGXSBJbnRyb2R1Y2UgUHJpdmF0ZSBTeW1ib2xzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ5MzUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGNvbWluZyBwcm9wb3Nh
bCBvZiBjbGFzcyBmaWVsZHNbMV0gcmVxdWlyZXMgcHJpdmF0ZSBmaWVsZHMuCisgICAgICAgIFRo
ZSBzaW1wbGUgd2F5IHRvIGltcGxlbWVudCBpdCBpcyBhZGRpbmcgYSBwcm9wZXJ0eSB3aXRoIGEg
cHJpdmF0ZSBzeW1ib2wuCisgICAgICAgIEN1cnJlbnRseSwgd2UgaGF2ZSBwcml2YXRlIHN5bWJv
bHMgZm9yIGludGVybmFsIHByb3BlcnRpZXMuIFRoZXkgYXJlIHVzdWFsCisgICAgICAgIFN5bWJv
bHMgbWFuYWdlZCBieSB0aGUgaGFzaCB0YWJsZS4gU28gYmFzaWNhbGx5IHByaXZhdGUgc3ltYm9s
cyBhcmUgc3RhdGljYWxseQorICAgICAgICBjcmVhdGVkIGluIEJ1aWx0aW5OYW1lcy4gSG93ZXZl
ciB0aGlzIG5ldyBwcm9wb3NhbCBlbmNvdXJhZ2VzIHVzZXJzIHRvIGNyZWF0ZQorICAgICAgICBz
dWNoIHByaXZhdGUgc3ltYm9scyBtb3JlIGFuZCBtb3JlLgorCisgICAgICAgIFNvLCB0aGlzIHBh
dGNoIGludHJvZHVjZXMgbm90aW9uIG9mICJQcml2YXRlIiBpbnRvIFdURiBTeW1ib2xJbXBsLiBU
aGlzIHBhdGNoCisgICAgICAgIGFkZHMgUHJpdmF0ZVN5bWJvbEltcGwuIFRoaXMgaXMgU3ltYm9s
SW1wbCB3aXRoICJQcml2YXRlIiBmbGFnLiBXZSBkbyBub3QgbmVlZAorICAgICAgICB0byBsb29r
IHVwIHRoZSBzeW1ib2wgZnJvbSB0aGUgaGFzaCB0YWJsZSB0byBjaGVjayB3aGV0aGVyIHRoZSBn
aXZlbiBzeW1ib2wKKyAgICAgICAgaXMgYSBwcml2YXRlIG9uZS4KKworICAgICAgICBbMV06IGh0
dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWNsYXNzLWZpZWxkcworCisgICAgICAgICog
d3RmL3RleHQvU3RyaW5nSW1wbC5oOgorICAgICAgICAqIHd0Zi90ZXh0L1N5bWJvbEltcGwuY3Bw
OgorICAgICAgICAoV1RGOjpQcml2YXRlU3ltYm9sSW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKFdU
Rjo6UHJpdmF0ZVN5bWJvbEltcGw6OmNyZWF0ZU51bGxTeW1ib2wpOgorICAgICAgICAqIHd0Zi90
ZXh0L1N5bWJvbEltcGwuaDoKKyAgICAgICAgKFdURjo6U3ltYm9sSW1wbDo6aXNQcml2YXRlKToK
KyAgICAgICAgKFdURjo6U3ltYm9sSW1wbDo6U3RhdGljU3ltYm9sSW1wbDo6U3RhdGljU3ltYm9s
SW1wbCk6CisgICAgICAgIChXVEY6OlN5bWJvbEltcGw6OlN5bWJvbEltcGwpOgorICAgICAgICAo
V1RGOjpQcml2YXRlU3ltYm9sSW1wbDo6UHJpdmF0ZVN5bWJvbEltcGwpOgorCiAyMDE3LTA3LTI3
ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFtXVEZd
IERyb3AgVGhyZWFkIGluaXRpYWxpemF0aW9uIHdhaXQgaW4gc29tZSBwbGF0Zm9ybXMgYnkgaW50
cm9kdWNpbmcgU3RhY2tCb3VuZHM6Om5ld1RocmVhZFN0YWNrQm91bmRzKFBsYXRmb3JtVGhyZWFk
SGFuZGxlJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWls
dGluTmFtZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1l
cy5jcHAKaW5kZXggZWZkMjVhYzQ5NDM4ZTRhZGI2ZTJiYWVlZDc5ZDFmNDIwN2RhMjc3ZS4uNDgy
YmYwMmZlMGNhNTVjODAxM2Y4ZWZlNzU3MzE3NzY2ZDliNDNlYyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5jcHAKQEAgLTM4LDEyICszOCwxMiBA
QCBuYW1lc3BhY2UgU3ltYm9scyB7CiBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFD
SF9XRUxMX0tOT1dOX1NZTUJPTChJTklUSUFMSVpFX0JVSUxUSU5fU1RBVElDX1NZTUJPTFMpCiAj
dW5kZWYgSU5JVElBTElaRV9CVUlMVElOX1NUQVRJQ19TWU1CT0xTCiAKLSNkZWZpbmUgSU5JVElB
TElaRV9CVUlMVElOX1BSSVZBVEVfTkFNRVMobmFtZSkgU3ltYm9sSW1wbDo6U3RhdGljU3ltYm9s
SW1wbCBuYW1lIyNQcml2YXRlTmFtZSB7ICJQcml2YXRlU3ltYm9sLiIgI25hbWUgfTsKKyNkZWZp
bmUgSU5JVElBTElaRV9CVUlMVElOX1BSSVZBVEVfTkFNRVMobmFtZSkgU3ltYm9sSW1wbDo6U3Rh
dGljU3ltYm9sSW1wbCBuYW1lIyNQcml2YXRlTmFtZSB7ICJQcml2YXRlU3ltYm9sLiIgI25hbWUs
IFN5bWJvbEltcGw6OnNfZmxhZ0lzUHJpdmF0ZSB9OwogSlNDX0ZPUkVBQ0hfQlVJTFRJTl9GVU5D
VElPTl9OQU1FKElOSVRJQUxJWkVfQlVJTFRJTl9QUklWQVRFX05BTUVTKQogSlNDX0NPTU1PTl9Q
UklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVpFX0JVSUxUSU5f
UFJJVkFURV9OQU1FUykKICN1bmRlZiBJTklUSUFMSVpFX0JVSUxUSU5fUFJJVkFURV9OQU1FUwog
Ci1TeW1ib2xJbXBsOjpTdGF0aWNTeW1ib2xJbXBsIGRvbGxhclZNUHJpdmF0ZU5hbWUgeyAiUHJp
dmF0ZVN5bWJvbC4kdm0iIH07CitTeW1ib2xJbXBsOjpTdGF0aWNTeW1ib2xJbXBsIGRvbGxhclZN
UHJpdmF0ZU5hbWUgeyAiUHJpdmF0ZVN5bWJvbC4kdm0iLCBTeW1ib2xJbXBsOjpzX2ZsYWdJc1By
aXZhdGUgfTsKIAogfSAvLyBuYW1lc3BhY2UgU3ltYm9scwogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5kZXggZjg1
ODVkMDk3ZTIyM2M3Y2FhNDE5M2E5Njg1M2Q3ODc1Yzk0MTY1ZC4uY2VkMWJiOWM0ODJkOTllNzIx
NTE4NjFkNDE5MDU3MDhmZTJlY2E4NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9CdWlsdGluTmFtZXMuaApAQCAtMzIsNiArMzIsMTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKKyNkZWZpbmUgSU5JVElBTElaRV9CVUlMVElOX05BTUVTX0lOX0pTQyhuYW1lKSAsIG1fIyNu
YW1lKEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgI25hbWUpKSwgbV8jI25hbWUjI1By
aXZhdGVOYW1lKEpTQzo6SWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgJnN0YXRpY19jYXN0PFN5bWJv
bEltcGwmPihKU0M6OlN5bWJvbHM6Om5hbWUjI1ByaXZhdGVOYW1lKSkpCisjZGVmaW5lIElOSVRJ
QUxJWkVfQlVJTFRJTl9TWU1CT0xTKG5hbWUpICwgbV8jI25hbWUjI1N5bWJvbChKU0M6OklkZW50
aWZpZXI6OmZyb21VaWQodm0sICZzdGF0aWNfY2FzdDxTeW1ib2xJbXBsJj4oSlNDOjpTeW1ib2xz
OjpuYW1lIyNTeW1ib2wpKSksIG1fIyNuYW1lIyNTeW1ib2xQcml2YXRlSWRlbnRpZmllcihKU0M6
OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICNuYW1lICJTeW1ib2wiKSkKKyNkZWZpbmUgREVD
TEFSRV9CVUlMVElOX1NZTUJPTFMobmFtZSkgY29uc3QgSlNDOjpJZGVudGlmaWVyIG1fIyNuYW1l
IyNTeW1ib2w7IGNvbnN0IEpTQzo6SWRlbnRpZmllciBtXyMjbmFtZSMjU3ltYm9sUHJpdmF0ZUlk
ZW50aWZpZXI7CisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TWU1CT0xfQUNDRVNTT1IobmFtZSkg
XAorICAgIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgbmFtZSMjU3ltYm9sKCkgY29uc3QgeyByZXR1
cm4gbV8jI25hbWUjI1N5bWJvbDsgfQorCiAjZGVmaW5lIEpTQ19DT01NT05fUFJJVkFURV9JREVO
VElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUobWFjcm8pIFwKICAgICBKU0NfQ09NTU9OX0JZVEVD
T0RFX0lOVFJJTlNJQ19GVU5DVElPTlNfRUFDSF9OQU1FKG1hY3JvKSBcCiAgICAgSlNDX0NPTU1P
Tl9CWVRFQ09ERV9JTlRSSU5TSUNfQ09OU1RBTlRTX0VBQ0hfTkFNRShtYWNybykgXApAQCAtMjE3
LDkgKzIyMyw2IEBAIGNsYXNzIEJ1aWx0aW5OYW1lcyB7CiAgICAgICAgIG1fcHVibGljVG9Qcml2
YXRlTWFwLmFkZChtX2RvbGxhclZNTmFtZS5pbXBsKCksICZtX2RvbGxhclZNUHJpdmF0ZU5hbWUp
OwogICAgIH0KIAotICAgIGJvb2wgaXNQcml2YXRlTmFtZShTeW1ib2xJbXBsJiB1aWQpIGNvbnN0
OwotICAgIGJvb2wgaXNQcml2YXRlTmFtZShVbmlxdWVkU3RyaW5nSW1wbCYgdWlkKSBjb25zdDsK
LSAgICBib29sIGlzUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwogICAgIGNv
bnN0IElkZW50aWZpZXIqIGxvb2tVcFByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImKSBjb25z
dDsKICAgICBjb25zdCBJZGVudGlmaWVyJiBsb29rVXBQdWJsaWNOYW1lKGNvbnN0IElkZW50aWZp
ZXImKSBjb25zdDsKICAgICAKQEAgLTI0MywyNSArMjQ2LDYgQEAgY2xhc3MgQnVpbHRpbk5hbWVz
IHsKICAgICBCdWlsdGluTmFtZXNNYXAgbV9wcml2YXRlVG9QdWJsaWNNYXA7CiB9OwogCi1pbmxp
bmUgYm9vbCBCdWlsdGluTmFtZXM6OmlzUHJpdmF0ZU5hbWUoU3ltYm9sSW1wbCYgdWlkKSBjb25z
dAotewotICAgIHJldHVybiBtX3ByaXZhdGVUb1B1YmxpY01hcC5jb250YWlucygmdWlkKTsKLX0K
LQotaW5saW5lIGJvb2wgQnVpbHRpbk5hbWVzOjppc1ByaXZhdGVOYW1lKFVuaXF1ZWRTdHJpbmdJ
bXBsJiB1aWQpIGNvbnN0Ci17Ci0gICAgaWYgKCF1aWQuaXNTeW1ib2woKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIHJldHVybiBtX3ByaXZhdGVUb1B1YmxpY01hcC5jb250YWlucygmdWlk
KTsKLX0KLQotaW5saW5lIGJvb2wgQnVpbHRpbk5hbWVzOjppc1ByaXZhdGVOYW1lKGNvbnN0IElk
ZW50aWZpZXImIGlkZW50KSBjb25zdAotewotICAgIGlmIChpZGVudC5pc051bGwoKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBpc1ByaXZhdGVOYW1lKCppZGVudC5pbXBsKCkp
OwotfQotCiBpbmxpbmUgY29uc3QgSWRlbnRpZmllciogQnVpbHRpbk5hbWVzOjpsb29rVXBQcml2
YXRlTmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKIHsKICAgICBhdXRvIGl0ZXIg
PSBtX3B1YmxpY1RvUHJpdmF0ZU1hcC5maW5kKGlkZW50LmltcGwoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpblV0aWxzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpblV0aWxzLmgKaW5kZXggZWNmZTZlNTMwOTYxYmEy
ZGQzZjlmYmQ1ZGE2OTVjZTkyNTFiNTY5Yy4uYjIxY2U3ZTA2ODAyZDk2NGQ3NzFjZDkwNmIyY2Y0
NWFjOGE0MDcwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1
aWx0aW5VdGlscy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGlu
VXRpbHMuaApAQCAtMzAsMTggKzMwLDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi0jZGVmaW5l
IElOSVRJQUxJWkVfQlVJTFRJTl9OQU1FUyhuYW1lKSAsIG1fIyNuYW1lKEpTQzo6SWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgI25hbWUpKSwgbV8jI25hbWUjI1ByaXZhdGVOYW1lKEpTQzo6SWRl
bnRpZmllcjo6ZnJvbVVpZChKU0M6OlByaXZhdGVOYW1lKEpTQzo6UHJpdmF0ZU5hbWU6OkRlc2Ny
aXB0aW9uLCBBU0NJSUxpdGVyYWwoIlByaXZhdGVTeW1ib2wuIiAjbmFtZSkpKSkKLSNkZWZpbmUg
SU5JVElBTElaRV9CVUlMVElOX05BTUVTX0lOX0pTQyhuYW1lKSAsIG1fIyNuYW1lKEpTQzo6SWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgI25hbWUpKSwgbV8jI25hbWUjI1ByaXZhdGVOYW1lKEpT
Qzo6SWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgJnN0YXRpY19jYXN0PFN5bWJvbEltcGwmPihKU0M6
OlN5bWJvbHM6Om5hbWUjI1ByaXZhdGVOYW1lKSkpCisjZGVmaW5lIElOSVRJQUxJWkVfQlVJTFRJ
Tl9OQU1FUyhuYW1lKSAsIG1fIyNuYW1lKEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
I25hbWUpKSwgbV8jI25hbWUjI1ByaXZhdGVOYW1lKEpTQzo6SWRlbnRpZmllcjo6ZnJvbVVpZChK
U0M6OlByaXZhdGVOYW1lKEpTQzo6UHJpdmF0ZU5hbWU6OlByaXZhdGVTeW1ib2wsIEFTQ0lJTGl0
ZXJhbCgiUHJpdmF0ZVN5bWJvbC4iICNuYW1lKSkpKQogI2RlZmluZSBERUNMQVJFX0JVSUxUSU5f
TkFNRVMobmFtZSkgY29uc3QgSlNDOjpJZGVudGlmaWVyIG1fIyNuYW1lOyBjb25zdCBKU0M6Oklk
ZW50aWZpZXIgbV8jI25hbWUjI1ByaXZhdGVOYW1lOwogI2RlZmluZSBERUNMQVJFX0JVSUxUSU5f
SURFTlRJRklFUl9BQ0NFU1NPUihuYW1lKSBcCiAgICAgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBu
YW1lIyNQdWJsaWNOYW1lKCkgY29uc3QgeyByZXR1cm4gbV8jI25hbWU7IH0gXAogICAgIGNvbnN0
IEpTQzo6SWRlbnRpZmllciYgbmFtZSMjUHJpdmF0ZU5hbWUoKSBjb25zdCB7IHJldHVybiBtXyMj
bmFtZSMjUHJpdmF0ZU5hbWU7IH0KIAotI2RlZmluZSBJTklUSUFMSVpFX0JVSUxUSU5fU1lNQk9M
UyhuYW1lKSAsIG1fIyNuYW1lIyNTeW1ib2woSlNDOjpJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCAm
c3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCY+KEpTQzo6U3ltYm9sczo6bmFtZSMjU3ltYm9sKSkpLCBt
XyMjbmFtZSMjU3ltYm9sUHJpdmF0ZUlkZW50aWZpZXIoSlNDOjpJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAjbmFtZSAiU3ltYm9sIikpCi0jZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TWU1CT0xT
KG5hbWUpIGNvbnN0IEpTQzo6SWRlbnRpZmllciBtXyMjbmFtZSMjU3ltYm9sOyBjb25zdCBKU0M6
OklkZW50aWZpZXIgbV8jI25hbWUjI1N5bWJvbFByaXZhdGVJZGVudGlmaWVyOwotI2RlZmluZSBE
RUNMQVJFX0JVSUxUSU5fU1lNQk9MX0FDQ0VTU09SKG5hbWUpIFwKLSAgICBjb25zdCBKU0M6Oklk
ZW50aWZpZXImIG5hbWUjI1N5bWJvbCgpIGNvbnN0IHsgcmV0dXJuIG1fIyNuYW1lIyNTeW1ib2w7
IH0KLQogY2xhc3MgSWRlbnRpZmllcjsKIGNsYXNzIFNvdXJjZUNvZGU7CiBjbGFzcyBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcAppbmRleCBmZjJhODc4
ZjRlY2M1ZTZlNjEyZjVjNDZhZWVhNmE5N2ZlNTMwYzdhLi4yZDk3NGJiOTQwNWIzY2M0ZjIwYzBm
OGMzNTM5YjY5MDkxYmU5M2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCkBAIC03Nyw3ICs3
Nyw3IEBAIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnk6OkJ5dGVjb2RlSW50cmluc2ljUmVnaXN0
cnkoVk0mIHZtKQogCiBCeXRlY29kZUludHJpbnNpY05vZGU6OkVtaXR0ZXJUeXBlIEJ5dGVjb2Rl
SW50cmluc2ljUmVnaXN0cnk6Omxvb2t1cChjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QK
IHsKLSAgICBpZiAoIW1fdm0ucHJvcGVydHlOYW1lcy0+aXNQcml2YXRlTmFtZShpZGVudCkpCisg
ICAgaWYgKCFpZGVudC5pc1ByaXZhdGVOYW1lKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIGF1dG8gaXRlcmF0b3IgPSBtX2J5dGVjb2RlSW50cmluc2ljTWFwLmZpbmQoaWRlbnQuaW1w
bCgpKTsKICAgICBpZiAoaXRlcmF0b3IgPT0gbV9ieXRlY29kZUludHJpbnNpY01hcC5lbmQoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
LmNwcAppbmRleCA5MjY1MjhlMGZlZTk0MjE0NGJjYjg1NDhmNmExZGFkODhkODc0ZmE5Li4xOTcz
NzBkMTEwYTc1ZGE2MGJkY2U0NDk5NWJmZTdjMjZhMTg5M2EyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCkBAIC01MSwyMSAr
NTEsNiBAQCBDb21tb25JZGVudGlmaWVyczo6fkNvbW1vbklkZW50aWZpZXJzKCkKIHsKIH0KIAot
Ym9vbCBDb21tb25JZGVudGlmaWVyczo6aXNQcml2YXRlTmFtZShTeW1ib2xJbXBsJiB1aWQpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1fYnVpbHRpbk5hbWVzLT5pc1ByaXZhdGVOYW1lKHVpZCk7Ci19
Ci0KLWJvb2wgQ29tbW9uSWRlbnRpZmllcnM6OmlzUHJpdmF0ZU5hbWUoVW5pcXVlZFN0cmluZ0lt
cGwmIHVpZCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9idWlsdGluTmFtZXMtPmlzUHJpdmF0ZU5h
bWUodWlkKTsKLX0KLQotYm9vbCBDb21tb25JZGVudGlmaWVyczo6aXNQcml2YXRlTmFtZShjb25z
dCBJZGVudGlmaWVyJiBpZGVudCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9idWlsdGluTmFtZXMt
PmlzUHJpdmF0ZU5hbWUoaWRlbnQpOwotfQotCiBjb25zdCBJZGVudGlmaWVyKiBDb21tb25JZGVu
dGlmaWVyczo6bG9va1VwUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1fYnVpbHRpbk5hbWVzLT5sb29rVXBQcml2YXRlTmFtZShpZGVudCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlm
aWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aAppbmRleCBiM2EyMGMzMDE0MWU1MTZlMzYxZDIwYjhlODY4ZDMyNmIyZmNiMTlmLi4yNzY1Yjg3
MWNjOGI1MjVmYTEzMzVhMWNhZjk2YjQzY2VhNTgzNTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTQzOCwxMCArNDM4LDYg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVS
U19FQUNIX1dFTExfS05PV05fU1lNQk9MKEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJJVkFURV9X
RUxMX0tOT1dOX1NZTUJPTF9HTE9CQUwpCiAjdW5kZWYgSlNDX0lERU5USUZJRVJfREVDTEFSRV9Q
UklWQVRFX1dFTExfS05PV05fU1lNQk9MX0dMT0JBTAogCi0gICAgICAgIGJvb2wgaXNQcml2YXRl
TmFtZShTeW1ib2xJbXBsJiB1aWQpIGNvbnN0OwotICAgICAgICBib29sIGlzUHJpdmF0ZU5hbWUo
VW5pcXVlZFN0cmluZ0ltcGwmIHVpZCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgaXNQcml2YXRlTmFt
ZShjb25zdCBJZGVudGlmaWVyJikgY29uc3Q7Ci0KICAgICAgICAgY29uc3QgSWRlbnRpZmllciog
bG9va1VwUHJpdmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwogICAgICAgICBJZGVu
dGlmaWVyIGxvb2tVcFB1YmxpY05hbWUoY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCmlu
ZGV4IDI1ZDFlNDA4MDA1NDcxOWIzYWY4NjgzYTMyMGQ3OTA2ZGYwYTg3YjYuLmU3NmQ1Y2JkOGFh
NzQyNDBlMmZhOTg3Yjc2YTY1ZjY0YzYzYWVhOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCkBAIC04Miw3ICs4Miw3IEBAIEpT
T2JqZWN0KiBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0CiAKIEpTT2JqZWN0KiBjcmVhdGVVbmRlZmluZWRWYXJpYWJs
ZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiB7Ci0gICAg
aWYgKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5pc1ByaXZhdGVOYW1lKGlkZW50KSkgeworICAgIGlm
IChpZGVudC5pc1ByaXZhdGVOYW1lKCkpIHsKICAgICAgICAgU3RyaW5nIG1lc3NhZ2UobWFrZVN0
cmluZygiQ2FuJ3QgZmluZCBwcml2YXRlIHZhcmlhYmxlOiBAIiwgZXhlYy0+cHJvcGVydHlOYW1l
cygpLmxvb2tVcFB1YmxpY05hbWUoaWRlbnQpLnN0cmluZygpKSk7CiAgICAgICAgIHJldHVybiBj
cmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBtZXNzYWdlKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKaW5kZXggMTU3MWFlMTdjYTNlM2EzNzY5NGFj
YTQyM2Q0MDZmMTU0YjhjNDQ4MC4uMWEzMDhhZTQyOTdjM2M0NmEzMTlmZDY4N2M0MWVkYjUxZWNi
MGRkNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmll
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaApAQCAt
MTM5LDYgKzEzOSw3IEBAIGNsYXNzIElkZW50aWZpZXIgewogICAgIGJvb2wgaXNOdWxsKCkgY29u
c3QgeyByZXR1cm4gbV9zdHJpbmcuaXNOdWxsKCk7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25z
dCB7IHJldHVybiBtX3N0cmluZy5pc0VtcHR5KCk7IH0KICAgICBib29sIGlzU3ltYm9sKCkgY29u
c3QgeyByZXR1cm4gIWlzTnVsbCgpICYmIGltcGwoKS0+aXNTeW1ib2woKTsgfQorICAgIGJvb2wg
aXNQcml2YXRlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIGlzU3ltYm9sKCkgJiYgc3RhdGljX2Nhc3Q8
Y29uc3QgU3ltYm9sSW1wbCo+KGltcGwoKSktPmlzUHJpdmF0ZSgpOyB9CiAKICAgICBmcmllbmQg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBJZGVudGlmaWVyJik7CiAg
ICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgSWRlbnRp
ZmllciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRp
ZmllcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJ
bmxpbmVzLmgKaW5kZXggNDFkYmUxYmNlNDQ5ZTdjMDk5ZjI0OThjMjIzNDVlYTFkYzdmNmQ5NC4u
OGQ5ZmZhNjhkN2E4ODUzYmQ5MjU0ZThlNDg2NmRjNDQ3MTkxYjljNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oCkBAIC0xNDMsNyAr
MTQzLDcgQEAgaW5saW5lIEpTVmFsdWUgaWRlbnRpZmllclRvSlNWYWx1ZShWTSYgdm0sIGNvbnN0
IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiAKIGlubGluZSBKU1ZhbHVlIGlkZW50aWZpZXJUb1Nh
ZmVQdWJsaWNKU1ZhbHVlKFZNJiB2bSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgCiB7
Ci0gICAgaWYgKGlkZW50aWZpZXIuaXNTeW1ib2woKSAmJiAhdm0ucHJvcGVydHlOYW1lcy0+aXNQ
cml2YXRlTmFtZShpZGVudGlmaWVyKSkKKyAgICBpZiAoaWRlbnRpZmllci5pc1N5bWJvbCgpICYm
ICFpZGVudGlmaWVyLmlzUHJpdmF0ZU5hbWUoKSkKICAgICAgICAgcmV0dXJuIFN5bWJvbDo6Y3Jl
YXRlKHZtLCBzdGF0aWNfY2FzdDxTeW1ib2xJbXBsJj4oKmlkZW50aWZpZXIuaW1wbCgpKSk7CiAg
ICAgcmV0dXJuIGpzU3RyaW5nKCZ2bSwgaWRlbnRpZmllci5pbXBsKCkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4
IDY4NzhlMWJjNGY3MTFkZjkwNTJjZTE2ZjZlNzA1M2Y0OGFiMGViMzAuLjMzYjdmNDMxMjM3N2Jj
MTkzYjJmOTkxMmNiN2U0NDhiMzEwMDNjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTM1Niw3ICszNTYsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yQXNzaWduKEV4ZWNT
dGF0ZSogZXhlYykKICAgICAgICAgaWYgKGZvdW5kU3ltYm9sKSB7CiAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGogPSAwOyBqIDwgbnVtUHJvcGVydGllczsgaisrKSB7CiAgICAgICAgICAgICAg
ICAgY29uc3QgYXV0byYgcHJvcGVydHlOYW1lID0gcHJvcGVydGllc1tqXTsKLSAgICAgICAgICAg
ICAgICBpZiAocHJvcGVydHlOYW1lLmlzU3ltYm9sKCkgJiYgIXZtLnByb3BlcnR5TmFtZXMtPmlz
UHJpdmF0ZU5hbWUocHJvcGVydHlOYW1lKSkgeworICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0
eU5hbWUuaXNTeW1ib2woKSAmJiAhcHJvcGVydHlOYW1lLmlzUHJpdmF0ZU5hbWUoKSkgewogICAg
ICAgICAgICAgICAgICAgICBhc3NpZ24ocHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAgICAgICAgICB9CkBA
IC01NjUsNyArNTY1LDcgQEAgc3RhdGljIEpTVmFsdWUgZGVmaW5lUHJvcGVydGllcyhFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmplY3QsIEpTT2JqZWN0KiBwcm8KICAgICB9CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspIHsKICAgICAgICAgSWRlbnRp
ZmllciBwcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eU5hbWVzW2ldOwotICAgICAgICBpZiAodm0ucHJv
cGVydHlOYW1lcy0+aXNQcml2YXRlTmFtZShwcm9wZXJ0eU5hbWUpKQorICAgICAgICBpZiAocHJv
cGVydHlOYW1lLmlzUHJpdmF0ZU5hbWUoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVj
LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3JzW2ldLCB0cnVlKTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKQEAgLTYzMSw3ICs2MzEsNyBAQCBib29sIHNldEludGVn
cml0eUxldmVsKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQogICAg
IFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBwcm9wZXJ0aWVzLmVuZCgp
OwogICAgIGZvciAoUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBwcm9w
ZXJ0aWVzLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgSWRlbnRpZmll
ciBwcm9wZXJ0eU5hbWUgPSAqaXRlcjsKLSAgICAgICAgaWYgKHZtLnByb3BlcnR5TmFtZXMtPmlz
UHJpdmF0ZU5hbWUocHJvcGVydHlOYW1lKSkKKyAgICAgICAgaWYgKHByb3BlcnR5TmFtZS5pc1By
aXZhdGVOYW1lKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBQcm9wZXJ0eURl
c2NyaXB0b3IgZGVzYzsKQEAgLTY4MCw3ICs2ODAsNyBAQCBib29sIHRlc3RJbnRlZ3JpdHlMZXZl
bChFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKICAgICBQcm9wZXJ0
eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgZW5kID0ga2V5cy5lbmQoKTsKICAgICBmb3IgKFBy
b3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBpdGVyID0ga2V5cy5iZWdpbigpOyBpdGVy
ICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gKml0
ZXI7Ci0gICAgICAgIGlmICh2bS5wcm9wZXJ0eU5hbWVzLT5pc1ByaXZhdGVOYW1lKHByb3BlcnR5
TmFtZSkpCisgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUuaXNQcml2YXRlTmFtZSgpKQogICAgICAg
ICAgICAgY29udGludWU7CiAKICAgICAgICAgLy8gYS4gTGV0IGN1cnJlbnREZXNjIGJlID8gTy5b
W0dldE93blByb3BlcnR5XV0oaykKQEAgLTg2OCw3ICs4NjgsNyBAQCBKU0FycmF5KiBvd25Qcm9w
ZXJ0eUtleXMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0LCBQcm9wZXJ0eU5hbWVN
b2RlIHBybwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7IGkr
KykgewogICAgICAgICAgICAgY29uc3QgYXV0byYgaWRlbnRpZmllciA9IHByb3BlcnRpZXNbaV07
CiAgICAgICAgICAgICBBU1NFUlQoaWRlbnRpZmllci5pc1N5bWJvbCgpKTsKLSAgICAgICAgICAg
IGlmICghdm0ucHJvcGVydHlOYW1lcy0+aXNQcml2YXRlTmFtZShpZGVudGlmaWVyKSkgeworICAg
ICAgICAgICAgaWYgKCFpZGVudGlmaWVyLmlzUHJpdmF0ZU5hbWUoKSkgewogICAgICAgICAgICAg
ICAgIGlmIChmaWx0ZXJQcm9wZXJ0eUlmTmVlZGVkKGlkZW50aWZpZXIpKQogICAgICAgICAgICAg
ICAgICAgICBrZXlzLT5wdXNoKGV4ZWMsIFN5bWJvbDo6Y3JlYXRlKHZtLCBzdGF0aWNfY2FzdDxT
eW1ib2xJbXBsJj4oKmlkZW50aWZpZXIuaW1wbCgpKSkpOwogICAgICAgICAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwpAQCAtODgyLDEwICs4ODIsOSBAQCBKU0Fy
cmF5KiBvd25Qcm9wZXJ0eUtleXMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0LCBQ
cm9wZXJ0eU5hbWVNb2RlIHBybwogICAgICAgICBzaXplX3QgbnVtUHJvcGVydGllcyA9IHByb3Bl
cnRpZXMuc2l6ZSgpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVByb3BlcnRp
ZXM7IGkrKykgewogICAgICAgICAgICAgY29uc3QgYXV0byYgaWRlbnRpZmllciA9IHByb3BlcnRp
ZXNbaV07Ci0gICAgICAgICAgICBpZiAoaWRlbnRpZmllci5pc1N5bWJvbCgpKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKCF2bS5wcm9wZXJ0eU5hbWVzLT5pc1ByaXZhdGVOYW1lKGlkZW50aWZpZXIp
KQotICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN5bWJvbHMuYXBwZW5kKGlkZW50aWZpZXIp
OwotICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChpZGVudGlmaWVyLmlzU3lt
Ym9sKCkgJiYgIWlkZW50aWZpZXIuaXNQcml2YXRlTmFtZSgpKQorICAgICAgICAgICAgICAgIHBy
b3BlcnR5U3ltYm9scy5hcHBlbmQoaWRlbnRpZmllcik7CisgICAgICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgICAgICBpZiAoZmlsdGVyUHJvcGVydHlJZk5lZWRlZChpZGVudGlmaWVyKSkKICAg
ICAgICAgICAgICAgICAgICAga2V5cy0+cHVzaChleGVjLCBqc093bmVkU3RyaW5nKGV4ZWMsIGlk
ZW50aWZpZXIuc3RyaW5nKCkpKTsKICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ByaXZhdGVOYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRl
TmFtZS5oCmluZGV4IDk3NTJmMTMxY2IyOWVhZGE5MDNjMzQxMGRmNzAyMDhiZDQ0Zjg2YmUuLmY3
MDBiNWQ3YjNjMTJkZDEzOGRkMzY5MDM5MDhmMmVhMmMzZDViM2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVOYW1lLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZU5hbWUuaApAQCAtNDgsNiArNDgsMTIgQEAgY2xhc3Mg
UHJpdmF0ZU5hbWUgewogICAgIHsKICAgICB9CiAKKyAgICBlbnVtIFByaXZhdGVTeW1ib2xUYWcg
eyBQcml2YXRlU3ltYm9sIH07CisgICAgZXhwbGljaXQgUHJpdmF0ZU5hbWUoUHJpdmF0ZVN5bWJv
bFRhZywgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbikKKyAgICAgICAgOiBtX3VpZChQcml2YXRl
U3ltYm9sSW1wbDo6Y3JlYXRlKCpkZXNjcmlwdGlvbi5pbXBsKCkpKQorICAgIHsKKyAgICB9CisK
ICAgICBQcml2YXRlTmFtZShjb25zdCBQcml2YXRlTmFtZSYgcHJpdmF0ZU5hbWUpCiAgICAgICAg
IDogbV91aWQocHJpdmF0ZU5hbWUubV91aWQuY29weVJlZigpKQogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lLmgKaW5kZXggNDMyZWRmZTgzNzVkNjk4
NzI0MmU2NTE4ZGQyZmE5NzVlOTVjMWMyMy4uYTQ3NDBjZWQzZDI0NzBmZjY1OThiY2MyMWI0ZDdl
YTA3ZWMzZDBjNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
cGVydHlOYW1lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlO
YW1lLmgKQEAgLTU3LDYgKzU3LDExIEBAIGNsYXNzIFByb3BlcnR5TmFtZSB7CiAgICAgICAgIHJl
dHVybiBtX2ltcGwgJiYgbV9pbXBsLT5pc1N5bWJvbCgpOwogICAgIH0KIAorICAgIGJvb2wgaXNQ
cml2YXRlTmFtZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gaXNTeW1ib2woKSAmJiBz
dGF0aWNfY2FzdDxjb25zdCBTeW1ib2xJbXBsKj4obV9pbXBsKS0+aXNQcml2YXRlKCk7CisgICAg
fQorCiAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCgpIGNvbnN0CiAgICAgewogICAgICAgICBy
ZXR1cm4gbV9pbXBsOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJveHlPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmpl
Y3QuY3BwCmluZGV4IGUwODliZWI0OTQ0ZWNmN2Q5ZTM2OThjZTg2MDAyODUxMTk4MmUyNzAuLjg0
OTIxMzAzNGY4NjJiY2E1YTIzYTVjMTdmOTRkN2QwY2Y0MTc0NjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCBz
dGF0aWMgSlNWYWx1ZSBwZXJmb3JtUHJveHlHZXQoRXhlY1N0YXRlKiBleGVjLCBQcm94eU9iamVj
dCogcHJveHlPYmplY3QsIEpTVmFsdQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAg
ICB9OwogCi0gICAgaWYgKHZtLnByb3BlcnR5TmFtZXMtPmlzUHJpdmF0ZU5hbWUoSWRlbnRpZmll
cjo6ZnJvbVVpZCgmdm0sIHByb3BlcnR5TmFtZS51aWQoKSkpKQorICAgIGlmIChwcm9wZXJ0eU5h
bWUuaXNQcml2YXRlTmFtZSgpKQogICAgICAgICByZXR1cm4gcGVyZm9ybURlZmF1bHRHZXQoKTsK
IAogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gcHJveHlPYmplY3QtPmhhbmRsZXIoKTsKQEAg
LTE5OSw3ICsxOTksNyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSW50ZXJuYWxNZXRob2RH
ZXRPd25Qcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TgogICAgICAgICByZXR1cm4g
dGFyZ2V0LT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5U2xvdCh0YXJnZXQsIGV4ZWMs
IHByb3BlcnR5TmFtZSwgc2xvdCk7CiAgICAgfTsKIAotICAgIGlmICh2bS5wcm9wZXJ0eU5hbWVz
LT5pc1ByaXZhdGVOYW1lKElkZW50aWZpZXI6OmZyb21VaWQoJnZtLCBwcm9wZXJ0eU5hbWUudWlk
KCkpKSkgeworICAgIGlmIChwcm9wZXJ0eU5hbWUuaXNQcml2YXRlTmFtZSgpKSB7CiAgICAgICAg
IHNjb3BlLnJlbGVhc2UoKTsKICAgICAgICAgcmV0dXJuIHBlcmZvcm1EZWZhdWx0R2V0T3duUHJv
cGVydHkoKTsKICAgICB9CkBAIC0zMDUsNyArMzA1LDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVy
Zm9ybUhhc1Byb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwKICAgICAgICAgcmV0dXJuIHRhcmdldC0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0
eVNsb3QodGFyZ2V0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogICAgIH07CiAKLSAgICBp
ZiAodm0ucHJvcGVydHlOYW1lcy0+aXNQcml2YXRlTmFtZShJZGVudGlmaWVyOjpmcm9tVWlkKCZ2
bSwgcHJvcGVydHlOYW1lLnVpZCgpKSkpIHsKKyAgICBpZiAocHJvcGVydHlOYW1lLmlzUHJpdmF0
ZU5hbWUoKSkgewogICAgICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgICAgIHJldHVybiBwZXJm
b3JtRGVmYXVsdEhhc1Byb3BlcnR5KCk7CiAgICAgfQpAQCAtNDA3LDcgKzQwNyw3IEBAIGJvb2wg
UHJveHlPYmplY3Q6OnBlcmZvcm1QdXQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHB1dFZhbHVl
LCBKU1ZhbHVlIHRoaXNWYWx1CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBp
ZiAodm0ucHJvcGVydHlOYW1lcy0+aXNQcml2YXRlTmFtZShJZGVudGlmaWVyOjpmcm9tVWlkKCZ2
bSwgcHJvcGVydHlOYW1lLnVpZCgpKSkpIHsKKyAgICBpZiAocHJvcGVydHlOYW1lLmlzUHJpdmF0
ZU5hbWUoKSkgewogICAgICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgICAgIHJldHVybiBwZXJm
b3JtRGVmYXVsdFB1dCgpOwogICAgIH0KQEAgLTYwNCw3ICs2MDQsNyBAQCBib29sIFByb3h5T2Jq
ZWN0OjpwZXJmb3JtRGVsZXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSwgRGVmYQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKHZtLnBy
b3BlcnR5TmFtZXMtPmlzUHJpdmF0ZU5hbWUoSWRlbnRpZmllcjo6ZnJvbVVpZCgmdm0sIHByb3Bl
cnR5TmFtZS51aWQoKSkpKSB7CisgICAgaWYgKHByb3BlcnR5TmFtZS5pc1ByaXZhdGVOYW1lKCkp
IHsKICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgICAgICByZXR1cm4gcGVyZm9ybURlZmF1
bHREZWxldGUoKTsKICAgICB9CkBAIC03OTUsNyArNzk1LDcgQEAgYm9vbCBQcm94eU9iamVjdDo6
cGVyZm9ybURlZmluZU93blByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnQKICAgICAgICAgcmV0dXJuIHRhcmdldC0+bWV0aG9kVGFibGUodm0pLT5kZWZpbmVPd25Q
cm9wZXJ0eSh0YXJnZXQsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvciwgc2hvdWxkVGhy
b3cpOwogICAgIH07CiAKLSAgICBpZiAodm0ucHJvcGVydHlOYW1lcy0+aXNQcml2YXRlTmFtZShJ
ZGVudGlmaWVyOjpmcm9tVWlkKCZ2bSwgcHJvcGVydHlOYW1lLnVpZCgpKSkpCisgICAgaWYgKHBy
b3BlcnR5TmFtZS5pc1ByaXZhdGVOYW1lKCkpCiAgICAgICAgIHJldHVybiBwZXJmb3JtRGVmYXVs
dERlZmluZU93blByb3BlcnR5KCk7CiAKICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9IHRoaXMt
PmhhbmRsZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5o
IGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKaW5kZXggYjAwMGMxZjAwNGQ4MWFl
MTFiOGNiYTVhZGRlNWQzMjVkZjA3MjQxNi4uOTZlODVkNWZmZTVjODI4ZTA1ZDAzZmM4MjBkNDBl
NDM3YzIxM2JjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgK
KysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKQEAgLTE5MCw2ICsxOTAsNyBA
QCBjbGFzcyBTdHJpbmdJbXBsIDogcHJpdmF0ZSBTdHJpbmdJbXBsU2hhcGUgewogICAgIGZyaWVu
ZCBjbGFzcyBKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBmcmllbmQgY2xhc3MgQXRv
bWljU3RyaW5nSW1wbDsKICAgICBmcmllbmQgY2xhc3MgU3ltYm9sSW1wbDsKKyAgICBmcmllbmQg
Y2xhc3MgUHJpdmF0ZVN5bWJvbEltcGw7CiAgICAgZnJpZW5kIGNsYXNzIFJlZ2lzdGVyZWRTeW1i
b2xJbXBsOwogICAgIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3ltYm9sSW1wbC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbEltcGwuY3BwCmluZGV4
IDYwNTUxMTYwNGIzN2JhZWIyZGJmZGVhZDRhYmRlYTAwMzg0YTc3YjIuLjI0Njc1ODllYWIyNjJj
NTA5MTgxNjJhNWY2OGU5ZTcyYWJiMjg2ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3ltYm9sSW1wbC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmNw
cApAQCAtNTYsNiArNTYsMjAgQEAgUmVmPFN5bWJvbEltcGw+IFN5bWJvbEltcGw6OmNyZWF0ZU51
bGxTeW1ib2woKQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN5bWJvbEltcGwpOwogfQogCitS
ZWY8UHJpdmF0ZVN5bWJvbEltcGw+IFByaXZhdGVTeW1ib2xJbXBsOjpjcmVhdGUoU3RyaW5nSW1w
bCYgcmVwKQoreworICAgIGF1dG8qIG93bmVyUmVwID0gKHJlcC5idWZmZXJPd25lcnNoaXAoKSA9
PSBCdWZmZXJTdWJzdHJpbmcpID8gcmVwLnN1YnN0cmluZ0J1ZmZlcigpIDogJnJlcDsKKyAgICBB
U1NFUlQob3duZXJSZXAtPmJ1ZmZlck93bmVyc2hpcCgpICE9IEJ1ZmZlclN1YnN0cmluZyk7Cisg
ICAgaWYgKHJlcC5pczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUHJpdmF0
ZVN5bWJvbEltcGwocmVwLm1fZGF0YTgsIHJlcC5sZW5ndGgoKSwgKm93bmVyUmVwKSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgUHJpdmF0ZVN5bWJvbEltcGwocmVwLm1fZGF0YTE2LCByZXAu
bGVuZ3RoKCksICpvd25lclJlcCkpOworfQorCitSZWY8UHJpdmF0ZVN5bWJvbEltcGw+IFByaXZh
dGVTeW1ib2xJbXBsOjpjcmVhdGVOdWxsU3ltYm9sKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBQcml2YXRlU3ltYm9sSW1wbCk7Cit9CisKIFJlZjxSZWdpc3RlcmVkU3ltYm9sSW1wbD4g
UmVnaXN0ZXJlZFN5bWJvbEltcGw6OmNyZWF0ZShTdHJpbmdJbXBsJiByZXAsIFN5bWJvbFJlZ2lz
dHJ5JiBzeW1ib2xSZWdpc3RyeSkKIHsKICAgICBhdXRvKiBvd25lclJlcCA9IChyZXAuYnVmZmVy
T3duZXJzaGlwKCkgPT0gQnVmZmVyU3Vic3RyaW5nKSA/IHJlcC5zdWJzdHJpbmdCdWZmZXIoKSA6
ICZyZXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbEltcGwuaCBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sSW1wbC5oCmluZGV4IGI1YWQ0ZDM1MmUxNDU5ZmNlYTY3
ZWU4NTk0ZDM0ZTg1MjEyNjJkMGQuLjhjNTAxNDU2OWQ5NDFkODQxZDcyMzEzZWQyYzEzYzZlMmRm
ZDMzNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sSW1wbC5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sSW1wbC5oCkBAIC0zNiwxMyArMzYsMTUgQEAgY2xh
c3MgUmVnaXN0ZXJlZFN5bWJvbEltcGw7CiBjbGFzcyBTeW1ib2xJbXBsIDogcHVibGljIFVuaXF1
ZWRTdHJpbmdJbXBsIHsKIHB1YmxpYzoKICAgICB1c2luZyBGbGFncyA9IHVuc2lnbmVkOwotICAg
IHN0YXRpYyBjb25zdGV4cHIgY29uc3QgRmxhZ3Mgc19mbGFnRGVmYXVsdCA9IDB1OwotICAgIHN0
YXRpYyBjb25zdGV4cHIgY29uc3QgRmxhZ3Mgc19mbGFnSXNOdWxsU3ltYm9sID0gMGIwMXU7Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBGbGFncyBzX2ZsYWdJc1JlZ2lzdGVyZWQgPSAwYjEw
dTsKKyAgICBzdGF0aWMgY29uc3RleHByIEZsYWdzIHNfZmxhZ0RlZmF1bHQgPSAwdTsKKyAgICBz
dGF0aWMgY29uc3RleHByIEZsYWdzIHNfZmxhZ0lzTnVsbFN5bWJvbCA9IDBiMDAxdTsKKyAgICBz
dGF0aWMgY29uc3RleHByIEZsYWdzIHNfZmxhZ0lzUmVnaXN0ZXJlZCA9IDBiMDEwdTsKKyAgICBz
dGF0aWMgY29uc3RleHByIEZsYWdzIHNfZmxhZ0lzUHJpdmF0ZSA9IDBiMTAwdTsKIAogICAgIHVu
c2lnbmVkIGhhc2hGb3JTeW1ib2woKSBjb25zdCB7IHJldHVybiBtX2hhc2hGb3JTeW1ib2w7IH0K
ICAgICBib29sIGlzTnVsbFN5bWJvbCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBzX2ZsYWdJ
c051bGxTeW1ib2w7IH0KICAgICBib29sIGlzUmVnaXN0ZXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZmxhZ3MgJiBzX2ZsYWdJc1JlZ2lzdGVyZWQ7IH0KKyAgICBib29sIGlzUHJpdmF0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fZmxhZ3MgJiBzX2ZsYWdJc1ByaXZhdGU7IH0KIAogICAgIFN5bWJvbFJlZ2lz
dHJ5KiBzeW1ib2xSZWdpc3RyeSgpIGNvbnN0OwogCkBAIC01NSwxOCArNTcsMjAgQEAgY2xhc3Mg
U3ltYm9sSW1wbCA6IHB1YmxpYyBVbmlxdWVkU3RyaW5nSW1wbCB7CiAgICAgICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFN0YXRpY1N5bWJvbEltcGwpOwogICAgIHB1YmxpYzoKICAgICAgICAgdGVt
cGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+Ci0gICAgICAgIGNvbnN0ZXhwciBTdGF0aWNT
eW1ib2xJbXBsKGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0pCisgICAg
ICAgIGNvbnN0ZXhwciBTdGF0aWNTeW1ib2xJbXBsKGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtj
aGFyYWN0ZXJDb3VudF0sIEZsYWdzIGZsYWdzID0gc19mbGFnRGVmYXVsdCkKICAgICAgICAgICAg
IDogU3RyaW5nSW1wbFNoYXBlKHNfcmVmQ291bnRGbGFnSXNTdGF0aWNTdHJpbmcsIGNoYXJhY3Rl
ckNvdW50IC0gMSwgY2hhcmFjdGVycywKICAgICAgICAgICAgICAgICBzX2hhc2hGbGFnOEJpdEJ1
ZmZlciB8IHNfaGFzaEZsYWdEaWRSZXBvcnRDb3N0IHwgU3RyaW5nU3ltYm9sIHwgQnVmZmVySW50
ZXJuYWwgfCAoU3RyaW5nSGFzaGVyOjpjb21wdXRlTGl0ZXJhbEhhc2hBbmRNYXNrVG9wOEJpdHMo
Y2hhcmFjdGVycykgPDwgc19mbGFnQ291bnQpLCBDb25zdHJ1Y3RXaXRoQ29uc3RFeHByKQogICAg
ICAgICAgICAgLCBtX2hhc2hGb3JTeW1ib2woU3RyaW5nSGFzaGVyOjpjb21wdXRlTGl0ZXJhbEhh
c2hBbmRNYXNrVG9wOEJpdHMoY2hhcmFjdGVycykgPDwgc19mbGFnQ291bnQpCisgICAgICAgICAg
ICAsIG1fZmxhZ3MoZmxhZ3MpCiAgICAgICAgIHsKICAgICAgICAgfQogCiAgICAgICAgIHRlbXBs
YXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PgotICAgICAgICBjb25zdGV4cHIgU3RhdGljU3lt
Ym9sSW1wbChjb25zdCBjaGFyMTZfdCAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSkKKyAg
ICAgICAgY29uc3RleHByIFN0YXRpY1N5bWJvbEltcGwoY29uc3QgY2hhcjE2X3QgKCZjaGFyYWN0
ZXJzKVtjaGFyYWN0ZXJDb3VudF0sIEZsYWdzIGZsYWdzID0gc19mbGFnRGVmYXVsdCkKICAgICAg
ICAgICAgIDogU3RyaW5nSW1wbFNoYXBlKHNfcmVmQ291bnRGbGFnSXNTdGF0aWNTdHJpbmcsIGNo
YXJhY3RlckNvdW50IC0gMSwgY2hhcmFjdGVycywKICAgICAgICAgICAgICAgICBzX2hhc2hGbGFn
RGlkUmVwb3J0Q29zdCB8IFN0cmluZ1N5bWJvbCB8IEJ1ZmZlckludGVybmFsIHwgKFN0cmluZ0hh
c2hlcjo6Y29tcHV0ZUxpdGVyYWxIYXNoQW5kTWFza1RvcDhCaXRzKGNoYXJhY3RlcnMpIDw8IHNf
ZmxhZ0NvdW50KSwgQ29uc3RydWN0V2l0aENvbnN0RXhwcikKICAgICAgICAgICAgICwgbV9oYXNo
Rm9yU3ltYm9sKFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUxpdGVyYWxIYXNoQW5kTWFza1RvcDhCaXRz
KGNoYXJhY3RlcnMpIDw8IHNfZmxhZ0NvdW50KQorICAgICAgICAgICAgLCBtX2ZsYWdzKGZsYWdz
KQogICAgICAgICB7CiAgICAgICAgIH0KIApAQCAtNzcsNyArODEsNyBAQCBjbGFzcyBTeW1ib2xJ
bXBsIDogcHVibGljIFVuaXF1ZWRTdHJpbmdJbXBsIHsKIAogICAgICAgICBTdHJpbmdJbXBsKiBt
X293bmVyIHsgbnVsbHB0ciB9OyAvLyBXZSBkbyBub3QgbWFrZSBTdGF0aWNTeW1ib2xJbXBsIEJ1
ZmZlclN1YnN0cmluZy4gVGh1cyB3ZSBjYW4gbWFrZSB0aGlzIG51bGxwdHIuCiAgICAgICAgIHVu
c2lnbmVkIG1faGFzaEZvclN5bWJvbDsKLSAgICAgICAgRmxhZ3MgbV9mbGFncyB7IHNfZmxhZ0Rl
ZmF1bHQgfTsKKyAgICAgICAgRmxhZ3MgbV9mbGFnczsKICAgICB9OwogCiBwcm90ZWN0ZWQ6CkBA
IC0xMDMsMTEgKzEwNywxMSBAQCBjbGFzcyBTeW1ib2xJbXBsIDogcHVibGljIFVuaXF1ZWRTdHJp
bmdJbXBsIHsKICAgICAgICAgQVNTRVJUKFN0cmluZ0ltcGw6OnRhaWxPZmZzZXQ8U3RyaW5nSW1w
bCo+KCkgPT0gT0JKRUNUX09GRlNFVE9GKFN5bWJvbEltcGwsIG1fb3duZXIpKTsKICAgICB9CiAK
LSAgICBTeW1ib2xJbXBsKCkKKyAgICBTeW1ib2xJbXBsKEZsYWdzIGZsYWdzID0gc19mbGFnRGVm
YXVsdCkKICAgICAgICAgOiBVbmlxdWVkU3RyaW5nSW1wbChDcmVhdGVTeW1ib2wpCiAgICAgICAg
ICwgbV9vd25lcihTdHJpbmdJbXBsOjplbXB0eSgpKQogICAgICAgICAsIG1faGFzaEZvclN5bWJv
bChuZXh0SGFzaEZvclN5bWJvbCgpKQotICAgICAgICAsIG1fZmxhZ3Moc19mbGFnSXNOdWxsU3lt
Ym9sKQorICAgICAgICAsIG1fZmxhZ3MoZmxhZ3MgfCBzX2ZsYWdJc051bGxTeW1ib2wpCiAgICAg
ewogICAgICAgICBBU1NFUlQoU3RyaW5nSW1wbDo6dGFpbE9mZnNldDxTdHJpbmdJbXBsKj4oKSA9
PSBPQkpFQ1RfT0ZGU0VUT0YoU3ltYm9sSW1wbCwgbV9vd25lcikpOwogICAgIH0KQEAgLTEyMCw2
ICsxMjQsMjggQEAgY2xhc3MgU3ltYm9sSW1wbCA6IHB1YmxpYyBVbmlxdWVkU3RyaW5nSW1wbCB7
CiB9Owogc3RhdGljX2Fzc2VydChzaXplb2YoU3ltYm9sSW1wbCkgPT0gc2l6ZW9mKFN5bWJvbElt
cGw6OlN0YXRpY1N5bWJvbEltcGwpLCAiIik7CiAKK2NsYXNzIFByaXZhdGVTeW1ib2xJbXBsIDog
cHVibGljIFN5bWJvbEltcGwgeworcHVibGljOgorICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBz
dGF0aWMgUmVmPFByaXZhdGVTeW1ib2xJbXBsPiBjcmVhdGVOdWxsU3ltYm9sKCk7CisgICAgV1RG
X0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8UHJpdmF0ZVN5bWJvbEltcGw+IGNyZWF0ZShT
dHJpbmdJbXBsJiByZXApOworCitwcml2YXRlOgorICAgIFByaXZhdGVTeW1ib2xJbXBsKGNvbnN0
IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIFJlZjxTdHJpbmdJbXBsPiYmIGJh
c2UpCisgICAgICAgIDogU3ltYm9sSW1wbChjaGFyYWN0ZXJzLCBsZW5ndGgsIFdURk1vdmUoYmFz
ZSksIHNfZmxhZ0lzUHJpdmF0ZSkKKyAgICB7CisgICAgfQorCisgICAgUHJpdmF0ZVN5bWJvbElt
cGwoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgUmVmPFN0cmluZ0lt
cGw+JiYgYmFzZSkKKyAgICAgICAgOiBTeW1ib2xJbXBsKGNoYXJhY3RlcnMsIGxlbmd0aCwgV1RG
TW92ZShiYXNlKSwgc19mbGFnSXNQcml2YXRlKQorICAgIHsKKyAgICB9CisKKyAgICBQcml2YXRl
U3ltYm9sSW1wbCgpCisgICAgICAgIDogU3ltYm9sSW1wbChzX2ZsYWdJc1ByaXZhdGUpCisgICAg
eworICAgIH0KK307CisKIGNsYXNzIFJlZ2lzdGVyZWRTeW1ib2xJbXBsIDogcHVibGljIFN5bWJv
bEltcGwgewogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgU3RyaW5nSW1wbDsKQEAgLTE5Myw0
ICsyMTksNSBAQCBWYWx1ZUNoZWNrPGNvbnN0IFN5bWJvbEltcGwqPiB7CiB9IC8vIG5hbWVzcGFj
ZSBXVEYKIAogdXNpbmcgV1RGOjpTeW1ib2xJbXBsOwordXNpbmcgV1RGOjpQcml2YXRlU3ltYm9s
SW1wbDsKIHVzaW5nIFdURjo6UmVnaXN0ZXJlZFN5bWJvbEltcGw7CmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzA2ZGEwNDQ0NmRlODI5ZmMwMWI4
ZjY1YmFmMDM5MDI4OGZhZWQ1Mi4uNjlkMzU4OTc4ODZlNmMzMWMzZjI4YzY4YjQzNTE3OTJjNjQz
YzA4YyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDE3LTA3LTI4ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgorCisgICAgICAgIFtXVEZdIEludHJvZHVjZSBQcml2YXRlIFN5bWJvbHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDkzNQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvU3RyaW5nSW1wbC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKwogMjAxNy0wNy0yOCAgQ2xhdWRpbyBTYWF2ZWRyYSAgPGNzYWF2ZWRyYUBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtXUEVdIEltcGxlbWVudCBFdmVudFNlbmRlclByb3h5IGluIFdUUgpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nSW1wbC5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdJbXBsLmNwcAppbmRleCA4OTIz
MWIxOTViNjIyOWVlOGEzMmU2OWI1MTUxN2Q3YTBkZjE0ZjUwLi5jODQ4YWEwNjU5YzU3ZmQ4ODcw
Mjc0NTQ1NDE3OWIwZTJkY2FjMDJjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9TdHJpbmdJbXBsLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9TdHJpbmdJbXBsLmNwcApAQCAtNTMwLDYgKzUzMCw3IEBAIFRFU1QoV1RGLCBTdHJpbmdJbXBs
Q3JlYXRlTnVsbFN5bWJvbCkKIHsKICAgICBhdXRvIHJlZmVyZW5jZSA9IFN5bWJvbEltcGw6OmNy
ZWF0ZU51bGxTeW1ib2woKTsKICAgICBBU1NFUlRfVFJVRShyZWZlcmVuY2UtPmlzU3ltYm9sKCkp
OworICAgIEFTU0VSVF9GQUxTRShyZWZlcmVuY2UtPmlzUHJpdmF0ZSgpKTsKICAgICBBU1NFUlRf
VFJVRShyZWZlcmVuY2UtPmlzTnVsbFN5bWJvbCgpKTsKICAgICBBU1NFUlRfRkFMU0UocmVmZXJl
bmNlLT5pc0F0b21pYygpKTsKICAgICBBU1NFUlRfRVEoMHUsIHJlZmVyZW5jZS0+bGVuZ3RoKCkp
OwpAQCAtNTQxLDYgKzU0Miw3IEBAIFRFU1QoV1RGLCBTdHJpbmdJbXBsQ3JlYXRlU3ltYm9sKQog
ICAgIGF1dG8gb3JpZ2luYWwgPSBzdHJpbmdGcm9tVVRGOCgib3JpZ2luYWwiKTsKICAgICBhdXRv
IHJlZmVyZW5jZSA9IFN5bWJvbEltcGw6OmNyZWF0ZShvcmlnaW5hbCk7CiAgICAgQVNTRVJUX1RS
VUUocmVmZXJlbmNlLT5pc1N5bWJvbCgpKTsKKyAgICBBU1NFUlRfRkFMU0UocmVmZXJlbmNlLT5p
c1ByaXZhdGUoKSk7CiAgICAgQVNTRVJUX0ZBTFNFKHJlZmVyZW5jZS0+aXNOdWxsU3ltYm9sKCkp
OwogICAgIEFTU0VSVF9GQUxTRShyZWZlcmVuY2UtPmlzQXRvbWljKCkpOwogICAgIEFTU0VSVF9G
QUxTRShvcmlnaW5hbC0+aXNTeW1ib2woKSk7CkBAIC01NTEsNiArNTUzLDMyIEBAIFRFU1QoV1RG
LCBTdHJpbmdJbXBsQ3JlYXRlU3ltYm9sKQogICAgIGF1dG8gZW1wdHkgPSBzdHJpbmdGcm9tVVRG
OCgiIik7CiAgICAgYXV0byBlbXB0eVJlZmVyZW5jZSA9IFN5bWJvbEltcGw6OmNyZWF0ZShlbXB0
eSk7CiAgICAgQVNTRVJUX1RSVUUoZW1wdHlSZWZlcmVuY2UtPmlzU3ltYm9sKCkpOworICAgIEFT
U0VSVF9GQUxTRShlbXB0eVJlZmVyZW5jZS0+aXNQcml2YXRlKCkpOworICAgIEFTU0VSVF9GQUxT
RShlbXB0eVJlZmVyZW5jZS0+aXNOdWxsU3ltYm9sKCkpOworICAgIEFTU0VSVF9GQUxTRShlbXB0
eVJlZmVyZW5jZS0+aXNBdG9taWMoKSk7CisgICAgQVNTRVJUX0ZBTFNFKGVtcHR5LT5pc1N5bWJv
bCgpKTsKKyAgICBBU1NFUlRfVFJVRShlbXB0eS0+aXNBdG9taWMoKSk7CisgICAgQVNTRVJUX0VR
KGVtcHR5LT5sZW5ndGgoKSwgZW1wdHlSZWZlcmVuY2UtPmxlbmd0aCgpKTsKKyAgICBBU1NFUlRf
VFJVRShlcXVhbChlbXB0eVJlZmVyZW5jZS5wdHIoKSwgIiIpKTsKK30KKworVEVTVChXVEYsIFN0
cmluZ0ltcGxDcmVhdGVQcml2YXRlU3ltYm9sKQoreworICAgIGF1dG8gb3JpZ2luYWwgPSBzdHJp
bmdGcm9tVVRGOCgib3JpZ2luYWwiKTsKKyAgICBhdXRvIHJlZmVyZW5jZSA9IFByaXZhdGVTeW1i
b2xJbXBsOjpjcmVhdGUob3JpZ2luYWwpOworICAgIEFTU0VSVF9UUlVFKHJlZmVyZW5jZS0+aXNT
eW1ib2woKSk7CisgICAgQVNTRVJUX1RSVUUocmVmZXJlbmNlLT5pc1ByaXZhdGUoKSk7CisgICAg
QVNTRVJUX0ZBTFNFKHJlZmVyZW5jZS0+aXNOdWxsU3ltYm9sKCkpOworICAgIEFTU0VSVF9GQUxT
RShyZWZlcmVuY2UtPmlzQXRvbWljKCkpOworICAgIEFTU0VSVF9GQUxTRShvcmlnaW5hbC0+aXNT
eW1ib2woKSk7CisgICAgQVNTRVJUX0ZBTFNFKG9yaWdpbmFsLT5pc0F0b21pYygpKTsKKyAgICBB
U1NFUlRfRVEob3JpZ2luYWwtPmxlbmd0aCgpLCByZWZlcmVuY2UtPmxlbmd0aCgpKTsKKyAgICBB
U1NFUlRfVFJVRShlcXVhbChyZWZlcmVuY2UucHRyKCksICJvcmlnaW5hbCIpKTsKKworICAgIGF1
dG8gZW1wdHkgPSBzdHJpbmdGcm9tVVRGOCgiIik7CisgICAgYXV0byBlbXB0eVJlZmVyZW5jZSA9
IFByaXZhdGVTeW1ib2xJbXBsOjpjcmVhdGUoZW1wdHkpOworICAgIEFTU0VSVF9UUlVFKGVtcHR5
UmVmZXJlbmNlLT5pc1N5bWJvbCgpKTsKKyAgICBBU1NFUlRfVFJVRShlbXB0eVJlZmVyZW5jZS0+
aXNQcml2YXRlKCkpOwogICAgIEFTU0VSVF9GQUxTRShlbXB0eVJlZmVyZW5jZS0+aXNOdWxsU3lt
Ym9sKCkpOwogICAgIEFTU0VSVF9GQUxTRShlbXB0eVJlZmVyZW5jZS0+aXNBdG9taWMoKSk7CiAg
ICAgQVNTRVJUX0ZBTFNFKGVtcHR5LT5pc1N5bWJvbCgpKTsKQEAgLTU2NCw2ICs1OTIsNyBAQCBU
RVNUKFdURiwgU3RyaW5nSW1wbFN5bWJvbFRvQXRvbWljU3RyaW5nKQogICAgIGF1dG8gb3JpZ2lu
YWwgPSBzdHJpbmdGcm9tVVRGOCgib3JpZ2luYWwiKTsKICAgICBhdXRvIHJlZmVyZW5jZSA9IFN5
bWJvbEltcGw6OmNyZWF0ZShvcmlnaW5hbCk7CiAgICAgQVNTRVJUX1RSVUUocmVmZXJlbmNlLT5p
c1N5bWJvbCgpKTsKKyAgICBBU1NFUlRfRkFMU0UocmVmZXJlbmNlLT5pc1ByaXZhdGUoKSk7CiAg
ICAgQVNTRVJUX0ZBTFNFKHJlZmVyZW5jZS0+aXNBdG9taWMoKSk7CiAKICAgICBhdXRvIHJlc3Vs
dCA9IEF0b21pY1N0cmluZ0ltcGw6Omxvb2tVcChyZWZlcmVuY2UucHRyKCkpOwpAQCAtNTgzLDYg
KzYxMiw3IEBAIFRFU1QoV1RGLCBTdHJpbmdJbXBsTnVsbFN5bWJvbFRvQXRvbWljU3RyaW5nKQog
ewogICAgIGF1dG8gcmVmZXJlbmNlID0gU3ltYm9sSW1wbDo6Y3JlYXRlTnVsbFN5bWJvbCgpOwog
ICAgIEFTU0VSVF9UUlVFKHJlZmVyZW5jZS0+aXNTeW1ib2woKSk7CisgICAgQVNTRVJUX0ZBTFNF
KHJlZmVyZW5jZS0+aXNQcml2YXRlKCkpOwogICAgIEFTU0VSVF9GQUxTRShyZWZlcmVuY2UtPmlz
QXRvbWljKCkpOwogCiAgICAgLy8gQmVjYXVzZSB0aGUgc3Vic3RyaW5nIG9mIHRoZSByZWZlcmVu
Y2UgaXMgdGhlIGVtcHR5IHN0cmluZyB3aGljaCBpcyBhbHJlYWR5IGludGVybmVkLgpAQCAtNjkw
LDQgKzcyMCwyMSBAQCBURVNUKFdURiwgU3RhdGljU3RyaW5nSW1wbCkKICAgICBBU1NFUlRfRVEo
c3RyMS5pbXBsKCksIHN0cjIuaW1wbCgpKTsKIH0KIAorc3RhdGljIFN5bWJvbEltcGw6OlN0YXRp
Y1N5bWJvbEltcGwgc3RhdGljU3ltYm9sIHsiQ29jb2EifTsKK3N0YXRpYyBTeW1ib2xJbXBsOjpT
dGF0aWNTeW1ib2xJbXBsIHN0YXRpY1ByaXZhdGVTeW1ib2wgeyJDb2NvYSIsIFN5bWJvbEltcGw6
OnNfZmxhZ0lzUHJpdmF0ZSB9OworCitURVNUKFdURiwgU3RhdGljU3ltYm9sSW1wbCkKK3sKKyAg
ICBhdXRvJiBzeW1ib2wgPSBzdGF0aWNfY2FzdDxTeW1ib2xJbXBsJj4oc3RhdGljU3ltYm9sKTsK
KyAgICBBU1NFUlRfVFJVRShzeW1ib2wuaXNTeW1ib2woKSk7CisgICAgQVNTRVJUX0ZBTFNFKHN5
bWJvbC5pc1ByaXZhdGUoKSk7Cit9CisKK1RFU1QoV1RGLCBTdGF0aWNQcml2YXRlU3ltYm9sSW1w
bCkKK3sKKyAgICBhdXRvJiBzeW1ib2wgPSBzdGF0aWNfY2FzdDxTeW1ib2xJbXBsJj4oc3RhdGlj
UHJpdmF0ZVN5bWJvbCk7CisgICAgQVNTRVJUX1RSVUUoc3ltYm9sLmlzU3ltYm9sKCkpOworICAg
IEFTU0VSVF9UUlVFKHN5bWJvbC5pc1ByaXZhdGUoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkK
</data>

          </attachment>
      

    </bug>

</bugzilla>